[maven-release-plugin]  copy for tag odftoolkit-0.6.1-incubating-RC1

git-svn-id: https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1@1566362 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/trunk/.gitignore b/trunk/.gitignore
new file mode 100644
index 0000000..a6d056f
--- /dev/null
+++ b/trunk/.gitignore
@@ -0,0 +1,7 @@
+*.class

+.DS_Store

+bin/

+target/

+*~

+.*sw?

+\#*
\ No newline at end of file
diff --git a/trunk/CHANGES.txt b/trunk/CHANGES.txt
new file mode 100644
index 0000000..991a087
--- /dev/null
+++ b/trunk/CHANGES.txt
@@ -0,0 +1,369 @@
+Apache ODF Toolkit Change Log

+=============================

+

+======= Release 0.6.1 =======

+

+The most notable changes in ODF Toolkit 0.6.1 incubating over previous release:

+* Make release 0.6 available in Maven repositories

+

+Release wiki page: https://cwiki.apache.org/confluence/display/ODFTOOLKIT/0.6.1-incubating

+

+Versions of major components

+----------------------------

+

+* Xerces 2.9.1 (http://xerces.apache.org/mirrors.cgi)

+* Apache Jena 2.9.4 (http://jena.apache.org/download/index.html)

+* Apache Commons Validator 1.4.0 (http://commons.apache.org/proper/commons-validator//download_validator.cgi)

+

+For a full dependecy list run mvn dependency:tree from the top level in the source module or see the release wiki page.

+

+Upgrading from 0.6-incubating

+-----------------------------

+

+The behaviour of CellSelection#replaceWith(String) has changed. If you are relying on the old behaviour use CellSelection#advancedReplaceWith(String) instead (see ODFTOOLKIT-362).

+

+Detailed Change List

+--------------------

+

+New Features

+------------

+

+* ODFTOOLKIT-358 Add method to set date time value on Cell (Florian Hopf)

+

+Optimizations

+-------------

+

+Bug Fixes

+---------

+

+* ODFTOOLKIT-355 NullPointerException when removing rows from a new Spreadsheet table (Florian Hopf)

+* ODFTOOLKIT-362 TextSelection.replaceWith() ends in an infinite loop (Florian Hopf)

+* ODFTOOLKIT-363 Table#appendRow() method creates a row without any cell (Florian Hopf)

+* ODFTOOLKIT-379 NullPointerException in Paragraph.getTextContent() (Florian Hopf, Patch by Marc Schreiber)

+

+Other

+-----

+

+* ODFTOOLKIT-365 Improve Release Process to easily publish releases with maven (Florian Hopf)

+

+The following people have contributed to ODF Toolkit 0.6.1 incubating by submitting or commenting on the issues resolved in this release, 

+or contributed via reported bugs/comments on the mailing list:

+

+Nick Burch (mentor)

+Yegor Kozlov (mentor)

+Dali Liu (committer)

+Devin Han (committer)

+Donald Harbison (committer)

+Florian Hopf (committer)

+Oliver Rau (committer)

+Rob Weir (committer)

+Svante Schubert (committer)

+Alain Fagot Béarez 

+Alexandr Klimov

+Andy Jefferson

+Anders Sjostrom

+Ashok Hariharan

+Charitha Madusanka

+Dani Prieto 

+Dave Fisher

+Dennis E. Hamilton 

+Gavin McDonald

+Graham Weatherup

+Ian Cunningham

+Jeremias Maerki

+Johnny Haugen Sorgard

+Jörg Büsse

+Kejia Ye

+Lars Moller 

+Pavel Jisl

+Philip Helger

+Peter Junge

+Marc Schreiber

+Mathias Silbermann 

+Michael Stahl

+Michan JaskurzyƄski

+Nick de Graeve

+Noah Tilton

+Romain Benefice

+Steele, Raymond

+Stefan Renz

+Steffen Börsig

+Sherzod Muratov

+Svante Schubert

+Tao Lin

+Torsten Krah 

+Vicente Villegas Larios

+

+======= Release 0.6 incubating =======

+

+The most notable changes in ODF Toolkit 0.6 incubating over previous release:

+* Added document encryption support

+* Added metadata support

+* Support for OpenDocument-v1.2

+* Additional APIs for Simple API

+

+Release wiki page: https://cwiki.apache.org/confluence/display/ODFTOOLKIT/0.6-incubating

+

+Versions of major components

+----------------------------

+

+* Xerces 2.9.1 (http://xerces.apache.org/mirrors.cgi)

+* Apache Jena 2.9.4 (http://jena.apache.org/download/index.html)

+* Apache Clerezza 0.1-incubating (http://incubator.apache.org/clerezza/downloads/)

+* Apache Commons Validator 1.4.0 (http://commons.apache.org/proper/commons-validator//download_validator.cgi)

+

+For a full dependecy list run mvn dependency:tree from the top level in the source module or see the release wiki page.

+

+Upgrading from 0.5-incubating

+-----------------------------

+

+There are no known API changes.

+

+Detailed Change List

+--------------------

+

+New Features

+------------

+

+* ODFTOOLKIT-319 Document encryption support (Devin Han, Rob Weir, DaLi Liu)

+* ODFTOOLKIT-50 Add ODF 1.2 RDF metadata support (Tao Lin, Svante Schubert, DaLi Liu)

+* ODFTOOLKIT-346 New API to create protected section in TextDocument to protect contents (DaLi Liu, Patch by Kejia Ye)

+* ODFTOOLKIT-340 New API to insert form controls into document (DaLi Liu, Patch by Kejia Ye)

+* ODFTOOLKIT-339 new methods in TextDocument to suport insert a document into an open document (DaLi Liu)

+* ODFTOOLKIT-330 Improve the method TextSelection.replaceWith(String). new param types support (DaLi Liu)

+* ODFTOOLKIT-334 New API to support table autoformat (DaLi Liu, Patch by Kejia Ye)

+* ODFTOOLKIT-336 New APIs to set page style when inserting page break in TextDocument (DaLi Liu, Patch by Kejia Ye)

+* ODFTOOLKIT-329 New Simple API to generate a table of content in text document (Rob Weir, Patch by DaLi Liu)

+* ODFTOOLKIT-305 Update ODF 1.2 schema to OpenDocument-v1.2 final version (Devin Han)

+* ODFTOOLKIT-307 Update ODF Validator to support ODF 1.2 final version (Devin Han)

+* ODFTOOLKIT-306 Update Taglets to support ODF 1.2 final version. (Devin Han)

+* ODFTOOLKIT-199 Supply signature and manifest features to code generator plugin (Devin Han)

+

+Optimizations

+-------------

+

+Bug Fixes

+---------

+

+* ODFTOOLKIT-324 Simple ODF is throwing an exception on alien elements (Florian Hopf)

+* ODFTOOLKIT-325 Spreadsheet : Call to cell.getTimeValue on cell marked as valueType TIME but no value set gives NPE (Florian Hopf)

+* ODFTOOLKIT-338 The Value of VariableField always is "" when try to get a VariableField instance by TextDocument.getVariableFieldByName(String) (DaLi Liu)

+* ODFTOOLKIT-326 NPE when setting default background in TextCellProperties (Rob Weir, Patch by Florian Hopf)

+* ODFTOOLKIT-341 newImage() generates java.lang.NullPointerException when using an svg image (Rob Weir, Patch by Anders Sjöström)

+* ODFTOOLKIT-327 java.lang.NullPointerException at org.odftoolkit.odfdom.pkg.OdfPackage.logValidationError(OdfPackage.java:2028) (Rob Weir, Patch by Florian Hopf)

+* ODFTOOLKIT-331 AbstractListContainer.getListIterator() doesn't include all lists (Rob Weir, Patch by Nick de Graeve)

+* ODFTOOLKIT-302 getNamespaceURI() implementation in ODFDOM is not aware of duplicate namespace prefixes (Svante Schubert, Patch by Ashok Hariharan)

+* ODFTOOLKIT-311 TextExtractor uses wrong new line character (Oliver Rau)

+

+Other

+-----

+

+* ODFTOOLKIT-342 MetaDocumentStatisticTest sometimes fails (Florian Hopf)

+* ODFTOOLKIT-318 Build of validator with Maven 3.0.4 (Svante Schubert)

+* Correct the link for Simple API Cookbook (Rob Weir, patch by noahktilton)

+* ODFTOOLKIT-190 Improvement of XPath Tests (Svante Schubert)

+* ODFTOOLKIT-299 Build with JDK 7 as well as Earlier versions (Svante Schubert, Patch by Dennis E. Hamilton)

+* ODFTOOLKIT-312 Better exception handling for OdfPackage (Svante Schubert, Patch by Jeremias Maerki)

+

+

+The following people have contributed to ODF Toolkit 0.6 incubating by submitting or commenting on the issues resolved in this release, 

+or contributed via reported bugs/comments on the mailing list:

+

+Nick Burch (mentor)

+Yegor Kozlov (mentor)

+Dali Liu (committer)

+Devin Han (committer)

+Donald Harbison (committer)

+Florian Hopf (committer)

+Oliver Rau (committer)

+Rob Weir (committer)

+Svante Schubert (committer)

+Andy Jefferson

+Anders Sjostrom

+Ashok Hariharan

+Charitha Madusanka

+Dani Prieto 

+Dave Fisher

+Dennis E. Hamilton 

+Gavin McDonald

+Graham Weatherup

+Ian Cunningham

+Jeremias Maerki

+Johnny Haugen Sorgard

+Kejia Ye

+Lars Moller 

+Pavel Jisl

+Philip Helger

+Peter Junge

+Marc Schreiber

+Mathias Silbermann 

+Michael Stahl

+Michan JaskurzyƄski

+Nick de Graeve

+Noah Tilton

+Romain Benefice

+Steele, Raymond

+Stefan Renz

+Sherzod Muratov

+Svante Schubert

+Tao Lin

+Torsten Krah 

+Vicente Villegas Larios

+

+======= Release 0.5 incubating =======

+

+The most notable changes in ODF Toolkit 0.5 incubating over previous releases in ODF Toolkit Union are:

+ * All of the sub-projects release with an all in one package.

+ * Mark ODFDOM DOC API's as "deprecated", will be replaced by Simple API in future.

+ * Some bugs fixed.

+

+New Features

+------------

+

+* ODFTOOLKIT-287 PraragraphProperties should contain methods for margins and text indention.[Developer:Oliver Rau,Devin;Reviewer:Devin]

+

+Optimizations

+-------------

+

+* ODFTOOLKIT-289 Clean up unnecessary log messages.[Developer:Devin]

+

+Bug Fixes

+---------

+

+* ODFTOOLKIT-104 Create new spreadsheet, save it, load it, add a sheet, save it, then load it causes failure. (Devin Han)

+* ODFTOOLKIT-133 NullPointerException sometimes happened when parsing a centain kind of XML under IBM JDK. (Devin Han, Patch by kelvin)

+* ODFTOOLKIT-288 No null check for lastNode in setTextContent of Span class.[Developer:Oliver Rau,Devin;Reviewer:Devin]

+* ODFTOOLKIT-295 Exit condition of Length.parseUnit in ODFDOM is wrong.[Developer:Oliver Rau;Reviewer:Devin]

+

+Other

+-----

+

+* ODFTOOLKIT-290 Consolidate build of ODFToolkit sub-projects.[Developer:Yegor Kozlov,Devin;Reviewer:Devin]

+* ODFTOOLKIT-291 Adapt Simple API to the newest ODFDOM trunk.[Developer:Devin]

+* ODFTOOLKIT-292 Mark ODFDOM DOC API's as "deprecated".[Developer:Devin]

+* ODFTOOLKIT-293 Submit Apache Licence info automatically added code to SVN.[Developer:Devin]

+* ODFTOOLKIT-297 Test: testGetLanguage(org.odftoolkit.simple.meta.OfficeMetaTest) failed when the platform language is not 'Chinese'. [Developer:Devin]

+* ODFTOOLKIT-298 XLST-Runner and Validator aren't compatible with Java 5. [Developer:Robert Weir,Devin]

+ 

+

+ODF Toolkit relies on the current set of major dependencies (generated using mvn dependency:tree from the top-level odf toolkit src dir):

+

+org.apache.odftoolkit:taglets:jar:0.8.8-incubating

+org.apache.odftoolkit:schema2template:jar:0.8.8-incubating

++- org.apache.velocity:velocity:jar:1.6.4:compile

+|  +- commons-collections:commons-collections:jar:3.2.1:compile

+|  +- commons-lang:commons-lang:jar:2.4:compile

+|  \- oro:oro:jar:2.0.8:compile

++- net.java.dev.msv:msv-core:jar:2009.1:compile

+|  +- com.sun.msv.datatype.xsd:xsdlib:jar:2009.1:compile

+|  +- net.java.dev.msv:msv-testharness:jar:2009.1:compile

+|  |  \- org.apache.ant:ant:jar:1.7.1:compile

+|  |     \- org.apache.ant:ant-launcher:jar:1.7.1:compile

+|  +- xml-resolver:xml-resolver:jar:1.2:compile

+|  +- xerces:xercesImpl:jar:2.9.1:compile

+|  |  \- xml-apis:xml-apis:jar:1.3.04:compile

+|  +- isorelax:isorelax:jar:20030108:compile

+|  \- relaxngDatatype:relaxngDatatype:jar:20020414:compile

+\- junit:junit:jar:4.5:test

+org.apache.odftoolkit:schema2template-maven-plugin:maven-plugin:0.8.8-incubating

++- org.apache.odftoolkit:schema2template:jar:0.8.8-incubating:compile

+|  +- org.apache.velocity:velocity:jar:1.6.4:compile

+|  |  +- commons-collections:commons-collections:jar:3.2.1:compile

+|  |  +- commons-lang:commons-lang:jar:2.4:compile

+|  |  \- oro:oro:jar:2.0.8:compile

+|  \- net.java.dev.msv:msv-core:jar:2009.1:compile

+|     +- com.sun.msv.datatype.xsd:xsdlib:jar:2009.1:compile

+|     +- net.java.dev.msv:msv-testharness:jar:2009.1:compile

+|     |  \- org.apache.ant:ant:jar:1.7.1:compile

+|     |     \- org.apache.ant:ant-launcher:jar:1.7.1:compile

+|     +- xml-resolver:xml-resolver:jar:1.2:compile

+|     +- xerces:xercesImpl:jar:2.9.1:compile

+|     |  \- xml-apis:xml-apis:jar:1.3.04:compile

+|     +- isorelax:isorelax:jar:20030108:compile

+|     \- relaxngDatatype:relaxngDatatype:jar:20020414:compile

++- junit:junit:jar:4.5:test

++- org.apache.maven:maven-plugin-api:jar:2.0.7:provided

++- org.apache.maven:maven-project:jar:2.0.7:provided

+|  +- org.apache.maven:maven-settings:jar:2.0.7:provided

+|  +- org.apache.maven:maven-profile:jar:2.0.7:provided

+|  +- org.apache.maven:maven-model:jar:2.0.7:provided

+|  +- org.apache.maven:maven-artifact-manager:jar:2.0.7:provided

+|  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.7:provided

+|  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:provided

+|  +- org.apache.maven:maven-plugin-registry:jar:2.0.7:provided

+|  +- org.codehaus.plexus:plexus-utils:jar:1.4.1:provided

+|  \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:provided

+|     \- classworlds:classworlds:jar:1.1-alpha-2:provided

+\- org.apache.maven:maven-artifact:jar:2.0.7:provided

+org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating

++- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile

++- xerces:xercesImpl:jar:2.9.1:compile

+|  \- xml-apis:xml-apis:jar:1.3.04:compile

+\- junit:junit:jar:4.8.1:test

+org.apache.odftoolkit:xslt-runner:jar:1.2.1-incubating

+\- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile

+   +- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile

+   \- xerces:xercesImpl:jar:2.9.1:compile

+      \- xml-apis:xml-apis:jar:1.3.04:compile

+org.apache.odftoolkit:xslt-runner-task:jar:1.2.1-incubating

++- org.apache.odftoolkit:xslt-runner:jar:1.2.1-incubating:compile

+|  \- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile

+|     +- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile

+|     \- xerces:xercesImpl:jar:2.9.1:compile

+|        \- xml-apis:xml-apis:jar:1.3.04:compile

+\- org.apache.ant:ant:jar:1.8.2:compile

+   \- org.apache.ant:ant-launcher:jar:1.8.2:compile

+org.apache.odftoolkit:odfvalidator:war:1.1.5-incubating

++- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile

+|  \- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile

++- commons-fileupload:commons-fileupload:jar:1.2.2:compile

++- net.java.dev.msv:msv-core:jar:2011.1:compile

+|  +- com.sun.msv.datatype.xsd:xsdlib:jar:2010.1:compile

+|  +- isorelax:isorelax:jar:20030108:compile

+|  \- relaxngDatatype:relaxngDatatype:jar:20020414:compile

++- org.iso_relax.verifier.jaxp.validation:isorelax-jaxp-bridge:jar:1.0:compile

++- xerces:xercesImpl:jar:2.9.1:compile

+|  \- xml-apis:xml-apis:jar:1.3.04:compile

+\- junit:junit:jar:4.8.1:test

+org.apache.odftoolkit:simple-odf:jar:0.7-incubating

++- org.apache.odftoolkit:odfdom-java:jar:0.8.8-incubating:compile

+|  \- org.apache.odftoolkit:taglets:jar:0.8.8-incubating:compile

++- xerces:xercesImpl:jar:2.9.1:compile

+|  \- xml-apis:xml-apis:jar:1.3.04:compile

+\- junit:junit:jar:4.8.1:test

+org.apache.odftoolkit:odftoolkit:pom:0.5-incubating

+

+The following people have contributed to ODF Toolkit 0.5 incubating by submitting or commenting on the issues resolved in this release, 

+or contributed via reported bugs/comments on the mailing list:

+

+Sam Ruby (mentor)

+Nick Burch (mentor)

+Yegor Kozlov (mentor)

+Rob Weir (committer)

+Devin Han (committer)

+Svante Schubert (committer)

+Daisy Guo (committer)

+Donald Harbison (committer)

+Andy Brown (committer)

+Dave Fisher (committer)

+Juergen Schmidt (committer)

+Oliver Rau (committer)

+Dennis E. Hamilton

+Jeremias Maerki

+Wilson Barbosa

+Ansgar Konermann

+Grzegorz Kaczor

+Watte Babbu

+Ashok Hariharan

+Henrique Lobo Weissmann

+Ian Lynch

+Michael McCandless

+Michael Stahl

+Patrick Durusau

+Pedro F. Giffuni

+Drew Jensen

+Kevin Skelton

+Neelima

+Ram Kane

+

+See http://s.apache.org/odfC for more details on these contributions.

diff --git a/trunk/DISCLAIMER.txt b/trunk/DISCLAIMER.txt
new file mode 100644
index 0000000..a2a9f75
--- /dev/null
+++ b/trunk/DISCLAIMER.txt
@@ -0,0 +1 @@
+Apache ODF Toolkit is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
diff --git a/trunk/HEADER.txt b/trunk/HEADER.txt
new file mode 100644
index 0000000..fe09460
--- /dev/null
+++ b/trunk/HEADER.txt
@@ -0,0 +1,16 @@
+/*

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */
\ No newline at end of file
diff --git a/trunk/KEYS b/trunk/KEYS
new file mode 100644
index 0000000..d503ed9
--- /dev/null
+++ b/trunk/KEYS
@@ -0,0 +1,253 @@
+This file contains the PGP keys of various developers.

+Please don't use them for email unless you have to. Their main purpose is code signing.

+

+Users:

+    pgp < KEYS

+    gpg --import KEYS

+

+Developers: 

+    pgp -kxa <your name>   # and append to KEYS (this file)

+    (pgpk -ll <your name> && pgpk -xa <your name>) >> KEYS

+    (gpg --list-sigs <your name> && gpg --armor --export <your name>) >> KEYS

+

+----

+

+pub   2048R/56185A70 2011-10-26

+uid                  Devin Han (Devin Han works at Apache ODF Toolkit) <devinhan@apache.org>

+sub   2048R/6D6BE53E 2011-10-26

+

+-----BEGIN PGP PUBLIC KEY BLOCK-----

+Version: GnuPG v1.4.11 (MingW32)

+

+mQENBE6ndOQBCAClgcmg2rAtuWjfMZ2lItoljoV6fM7jx8Svv5I19lQwjrUMXXzK

+yD/Wlo7GKwBa2e6THzekguvIUDnDJZ+VuxuNbShZg1qiihO2eTpiqkh7wOF069Yn

+ZNjmIZG7s2jpGiKpFEX+7q+cQHuyvbv6eu/CTUsqbBEDFpOkqDL9hvJO9Z9m+MXN

+X2kSwx9vXVuJgWEIi7afAbPXYJoxo5yw7jgfX0sq3iGYhfe7otX4YvSvLnETH26B

+tIBDqossKx6b0LTg7032yFo0mN6QvhIBl7+ie7lMVDNjVZAgpXKCY/wj7wqcvcS7

+M6ML9VIQqfsGbz1b6zzWKjFR08EydwXMptghABEBAAG0R0RldmluIEhhbiAoRGV2

+aW4gSGFuIHdvcmtzIGF0IEFwYWNoZSBPREYgVG9vbGtpdCkgPGRldmluaGFuQGFw

+YWNoZS5vcmc+iQE4BBMBAgAiBQJOp3TkAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe

+AQIXgAAKCRBRtKVqVhhacM0VB/4lz5kwETfR53Ov6xrvnbtd8hoLYRR2VhpyoVIl

+eZS3ltZjYlC/HjBEPX6ly7sAr/5WZKveOJchQlE10gmzZh6gmM4JOt9Uay5ftQ/O

+3sAD6jWYa6X0teTbkj5kVVj3Qxhsj5bu0AUlUuMI2DMokfM2FVqz8WtX8w7/k7VY

+gKb1rzKBnFQXmJx3URM8QfvtNqwnnyLF6E2ZhmSQyng4N5gcYG3zBZNwpBUsQN02

+1QKNqTLkZ7E8f0XPJQu/6XFwxOahhGB5maWoPatSLUHGVsjRopakuzVDgxn/wNjM

+uzUxRhZ0zWWz5a0kBqHLYpaSYL6ZELg36hWkyD2oJyM8Cv8NuQENBE6ndOQBCADj

+KYBQLHIGt7ujGbkTwS0V7VMaLp4t6flsXhzbpWoEZYqBWNner3tU/zgfu+xh6hmB

+YQeItg1ON/0EF3ERw9CUoSMXIWXRfCXUFRLt6tEMYgoRtjH+Fkvndp8aQMS47Olk

+3eUhSOaa5ccetowTepqIRY0iVFI024Rrufd3RnEFuZdC1f5vynfo+2aLEk2e/BC4

+DT/d+LCgOTBqpktUEX9KZ3ptJ0nu+7w4yPgUDkaRQ6NKKfCdiJfqoGdrf6ZY3bF1

+OmJbP9cPz5r8V1QoT9Hj4ETRHgnJk0O++O40saXZBDE6Uui8AwWi04NI5Y5jPOcT

+BNF42wCMj77KIXH3E4dNABEBAAGJAR8EGAECAAkFAk6ndOQCGwwACgkQUbSlalYY

+WnCDfwgAnt8kM6d1u5gupGM9AhDAKz17DIqD2cqYnsYNB3yFtFcGBp68cSII98DS

+ahvKB7J+AHd4XLSqVQkj8aOaaufNmje4xvQy4WuvhzqnFOxXhqnDQ3fwZhfurZ89

+ux7/x8ndj6BZ6H85WrG3NAsf9Rvz1CLc6yDith53A5AAkd/dE1fZ7XBiFQ0IX5Fu

+UHbGzYOAIkd99Bo1KravSWb6NgLhxS0ebS9l0An8fcaIGTAU2g9WNB9p5Vot4We7

+nRlEHcTeF2eu5nAD2yqVrhCvSnT6qS5xgdavuBn26uv2lWwq+EZfEZvAkQ5vSTTS

+nOLKnHz0oVxS7VOAlBr7hq/U5YqV0Q==

+=Xu22

+-----END PGP PUBLIC KEY BLOCK-----

+-----

+pub   4096R/61C60298 2013-01-09

+uid                  Dali Liu (Dali Liu works at Apache ODF Toolkit) <liudali@apache.org>

+sub   4096R/1F3D394B 2013-01-09

+

+-----BEGIN PGP PUBLIC KEY BLOCK-----

+Version: GnuPG v1.4.11 (GNU/Linux)

+

+mQINBFDtNfYBEADVmk3sMMY+staeLxhhxQWTeuIbI4X1r7zAvAz1+3L+5VqAoJoB

+gRFQZSBeB+tTR8kXi5DfQDRgZ8FLgnXUJTV+0pzrOY6USi9NW/joIqDE6jjAfU9J

+rAWq0AzAs38H+Klc6PrzJyfHuuQk8yqiryV1xN1smWB4z/ghWmdkUf6liZFmr6tO

+S1HO+9nJxkkfTSxmXbpoVe4gWkEsBs5vsWIoX2q3oNaI1pHRDCpWBn2YRgLVx5wW

+TyTyRWgEY3bADya8xJKWlh0GS7N9uB2RbH8Vax8z2KdNM9EuDaoNO4FboT4fRkxM

+dbSDaOfXanvlahDUBMeQFZ0F6U7AMiB1GpLTr3FbniETc5aWakLj3iV31q8inlZM

+QwUNEiAl0xfq1jP9BtO6GGbLEHAq4wCcYgSvSxQoXTqAoXLzrP5kDnDD4AFZWmvr

+iltTAy1Mlnr8QPnie+Mb3A3VNv+6AWhKIZs23xm28m7h+sKsAFSiUp12n9+wZwZZ

+V/WOSOi78klbIoyVxW9/RJ9e82hC7fNDZ55EaaCWu9Yg65iCG8I8noJJ5p1HBYmN

+oRprS/8EaJr4EaHhoI0ezf6oy0IURJp8PyUcqBHm3ocNHAgQ7lF8fDAiEYWsxoo5

+R4Yi9Nll2MB7h9DipewbQiO7bMOdxz+jp6m73fN/rpNlFmj7MgqOK5E9pQARAQAB

+tEREYWxpIExpdSAoRGFsaSBMaXUgd29ya3MgYXQgQXBhY2hlIE9ERiBUb29sa2l0

+KSA8bGl1ZGFsaUBhcGFjaGUub3JnPokCOAQTAQIAIgUCUO019gIbAwYLCQgHAwIG

+FQgCCQoLBBYCAwECHgECF4AACgkQNCUlNmHGApg95hAAo50rG3EtZkeRWNqsgejB

+/nIamYYFmN9XL91bhRHo0cdF2Bn68v8RvzrnWd6fXkhGKFqc0/LO1Hajvrn5AN4f

+tN9ZidcpIdKHDwVrmFhuH6FcOiZaEe/J/vZMCsVVG+t5zO9wnTFJ5eDibJabIt1f

+2YjuEHErEilhsFZq5Ag6pUz/JXo58sunVrvenb8+MQ+GgsXfTAkOyG/2y00d5+CX

+ct4IbL6ZGUJ8zFKEiPu3gtIWkW/KhngZBjCM5DsFG1Mgzj5KGNADltdY4gD2/uw8

+6YnCR93s25berUp0cSTiVzjF9deIv+OhQtUZY5je1PnsFAN2BfMmqTh3/AMZALCy

+eRLSrgRiJOXUhuKh/P4vSZr5oBMU/CFtJBLQzPY5qhmju4YkzjQuICNTAaQdNkFx

+bb91JcBg6NpPeXA5pkQ3Z+2ihuXW+9mpSAFpmyz7ScDthsiZ+wJjhl6B8/lOy5cx

+RLKjZm0QmZIMVOB/Pkw5Pb0q/lqKSYS2HIh2cj+cX6Jaxp+DwIzR2qM4JHfgMkGN

+1Kfdqgl+4HHX1M1lsAtAap5mkgtzTmK/bNKLvtzRYUfeMCTkmc1Pq7rck/cTgQQI

+NIS1S85S5Xzqtfi2Cm/1588t8ATcUCBZNlEFSlmUpzAMcfd5LAPbF3aFbEjvV/3b

+yf3Yr6Ak8s3k5MUoibJ9OvG5Ag0EUO019gEQALiavM4wBoSq7TpaPkfqdFhSYBl5

+tlkhcFNNQQJgCny0aHvrLKUbTc8j+MqRBvphMH1ZrQebG8AXK1RUeXohvrKMWTb2

+9jgz/w7X8uIW3oXkBjADdhN/r+hC6OlhlQxaSp4er7v3mG7tevDvqxIIk20oa5CR

+EQTjWz+0YA+ygffdqfK6YbOrBUWEs9O8kArdJtnBKoXPOvdH6Q1vkgODyxc8DGDw

+v2izn7qtwXk8+dV606H6rs3N0ucCfLxQjYzC95wokttb6xspDEW3s+uezdQ5A3fF

+yh4KzP0afJwMw2j74UMPyKtyrta/3JyCCEZyqtcsB6ui+9ycs2GanTmwJ+R/kzj9

+q0T4xF1DiUY8IJcZERRl9BwWD6tV/0uB3v66yeOOz/tJwL1V1FJJ3ChxZJJ3nK6c

+hE5YNdZGloXIqkes/sEjnex2jQ1h80CFXk5+ExIotp4Cxb8XGGPKavII5AGLUMaE

+jfCLf358hMqYjG0oCJrnx54TYaGGIS14VE39tR4h8V/qb3Lhd7VV/NaE4xg+wQKS

+hNpzyPqRwrpF9RHErIaxeK1Sw0cnuVo3uWzVTy/dm3pmGqJ3hXYEVf5KpOrtzUdb

+v87LiFCI3ja8PCnhweogJ5rwwAnnA+yK7OZiXw/SqAYr5E4xIk5OMkvUMcMJkZ6h

+PNUqotZgXjivvEHVABEBAAGJAh8EGAECAAkFAlDtNfYCGwwACgkQNCUlNmHGAphs

+FBAAlUsUHFhQDJM13RlO2rTVaHrHRuPABnTtRVpf1WnUZqI0eeVefAnE2NdEcaew

+A8DFaaz4Sc2tx+hybQnR7gFokxFB3/p/46WCiXYw85tTuIwTliAkyHxNVdk466F8

+teWORhRd8d4OZpNpxugv/aU4zXy3i3GbyrXsyYOAlnC9tsD/NwED+7nYhOtW+yvZ

+DzzTltLxegEg3ryUbj5KUvTCJF2t52LVeQbVeAZzfKPBwNyzVHeKkP/D+f/UkBFn

+S77U/uw30TfW6t5SenbJ/D4ZABMeBbrtzACoiTNCb+T1u+wf3k2C1UzdWNoJrb96

+ke7svAqgZxD/pIe12l8jC61Gox2tp79h7Jf0h7iMkxu7/x2ZNEDISVCvQsciiPcZ

+v3xG236FGuBH+D6FzpJhchohgBBws4LC/2tCNkIwJLcSW0FEKwQQymlgBaUhIDHV

+CmPW0PABZ5jQ11kuGhWjBfP61NweH2PR3c5MTH5zQGf5bycOLaOwu/AkprPVNEKy

+5nfwW9u7cIM2kOvY/gdN0km3i2DMMJlWmak1jcrsvMzU9f8by4mgjyheXZuXnvkv

+bOeWU0IkpxeK6LzZhpCzXhCFLaYp5C/GkY5vL8syNzj47c3y71Yi0gqT4OXXjR6D

+8+8qgyWiZ+49h1fnCHmprZqpi8FlhfWeXk14ir/N9Bzpxus=

+=BBUL

+-----END PGP PUBLIC KEY BLOCK-----

+pub   4096R/7CE61658 2013-04-26

+uid                  Florian Hopf (CODE SIGNING KEY) <fhopf@apache.org>

+sig 3        7CE61658 2013-04-26  Florian Hopf (CODE SIGNING KEY) <fhopf@apache.org>

+sub   4096R/A4E33889 2013-04-26

+sig          7CE61658 2013-04-26  Florian Hopf (CODE SIGNING KEY) <fhopf@apache.org>

+

+-----BEGIN PGP PUBLIC KEY BLOCK-----

+Version: GnuPG v1.4.11 (GNU/Linux)

+

+mQINBFF6WXUBEAC4YxtxxpyffTO0QBEhArLjgx4/45CvJY9xRXJVm4KIe5L9G0B6

+T4faQQdHU/VMinwHp+bMJx76btCoDmRIN8u8FaYWG9SAtMCEMvex1KSz0bW0S2Rw

+udL30lsl7oZvBABy1P+cLqxu4W15FvPdWHzCOvuMiu2q+areUja7zxj41k5OUvIg

+EGuu8HNAzA/oE2inYFDWoq+tigtI67HgzqYwdTHj0UuKjQRk2oQvjsOXhi+pE2Hu

+76+EKcqR1++TOmzhlXeZpe6uuK6L7FFLuceANYOOQS5DXDZ1DYe2GkP0NYMtgnG0

+aTSPLQ6tgxGsv8PNgb4ZJZ2SC3qROXMmb9Wmu0UjF+O6/pp37BqiC4f1Q7PZLqYT

+FU0VDr8kJwtqEIYYVXoG+4bRESrjcNVFZrz9Ov7AqrO20QOH3PW4/IisUVQBY0+4

+DqBJUGkTXtc4V1c1da1dtqcbLwM31fnoaypccAOvpohjgYtCXWf0Ezhq7cFpzLpU

+zjQskofivX8+cltZzMox69YDi0wrOVYonGpesZOHwzTKSuKgXc+PAlUQVjiHej4x

+rJgdy34cuQUkwOqpCqTmocDc+slIdj3526k2TNOH5IfDTsQT6yjGFkHugT3IvcmD

+/KnPVZeGUOf/QeDeJO51ZW5FpBNfWIeziSBInTUdGc3uIFVAbmI1LrF05QARAQAB

+tDJGbG9yaWFuIEhvcGYgKENPREUgU0lHTklORyBLRVkpIDxmaG9wZkBhcGFjaGUu

+b3JnPokCNwQTAQoAIQUCUXpZdQIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAK

+CRAKqg7ZfOYWWNo5EACFo4Fjesj6QVenJp9VYXreWy2D1DqQx/GIHUvPS6cuhwkk

+WkloH4BoMbHobs93NLhGyJljuS5AN8QbZx7nBts8WONERDAgl0vog+q3bjAq3nN9

+dz3cPqaAmTYBxjfeMyaQU/czAtVAv4FsF0G1goXVZIZ1b1Fr1nieoK1MMo7BCfeX

+0ajml3D0QKjhqfjeb/smnCUOlFw5RwnLoUOUbHsp0RiBFGcubO4fJ4j57UO7GsYP

+RJaL3ZrczXhaw6clmQQzyVA+9dsurzTHO3sbGp9grKL+W/0HL7aKUMpAyWBnX5dX

+MIttZnUJvWRIVjPm6OYeBcNFrcms3c1zBzoYwdLJa5DMMPsz9pvo4qlKfUZUUG8W

+/PkX+GWw0E1YSHnwkYH7IZBhWJ3wFPOWPoBjFDFYAUuCnPPtLbUSqMi/A6twlZsM

+LbFis+clbs6u9Akm3n64Cmbq9vkm0xxf2uhgmQtOgF0YLEtYqyVtD1B90YlZgTTs

+7mmLrqw5LuvSUL3Op5CIGiiSFhllA/FbPZPBB88h5qIfPMg2UncSqxcIuZUHEkNB

+35b7u9i2iKQDgL3ex+qEK9mZ7gtJaV8pqJXPocOXG7i9UsIkpK/5qVwCNzuE+RrX

+4XkQBA5tWzPqCKGb0N+thQ2Y2qPXC1lUIfhRlsxsF53wiCrXTP9T1t9hW1nevLkC

+DQRRell1ARAAwAQF9jmnjK4mNv/4qYb/DgjhnuXrRAHQmp541LfBD9AjC5TsAYLN

+K941wchYhXGxK9VUFGfhpr4BpAEMqoaFUcBmUAda4vayP/2/eufQXt69da4/RWg9

+YwG0yXFg2HOQYUYeGq3MzS3aQGu5aFLlpJjJlD12joz8YWLky1SGSK0BgKoNSkAP

+2PzTJjFsuhyPE/MJrmgb7Ra9cvmPOXGoL8aUQENn3d+lSaBBcr4hR+zAOIfpEnXI

+W4vS5ajXzbUNcv9UKJXjRnoTk7nUDwy0dkYlb1kKD7VX6GZTKkhSLrQe9Ircwg4C

+YqzT446Qv8oLsL/GGZ4N20O8iA7HMXnVGgl4QLou3JY+zROXJ9Mymz6SR6RVDt0S

+4/cOZ55NdixD0BMcKQvV0wlob1yOQYC0gUmbwTBX4Vm0kTdgvOPYWQRex30mO7Uc

+dXusV0fqx86q/k5MXVCIZOvHZFbn6Fy+yNrKhWz+iv4rxqX7C7TTD0sKchNWwlqF

+R3/OTLUxpKHwskyfHBXUXaeINCtYV1p4oWcPsCXpEcQH7sHggAM3CBWgXl2pNPST

+SAxhnEK3wqX9K3kVdWVNn2qag94ybXR6n0b7OI2LN86dk4iHaIv3/PUYE01f2+1q

+aIY2pi8iBCoYSceFcMJKpS1fdWm1nzqlR/BccSXwOF/J/j6ZlrwAwhsAEQEAAYkC

+HwQYAQoACQUCUXpZdQIbDAAKCRAKqg7ZfOYWWAJMEACguc9wyDbznGxPd1HJr8c/

+k96BwJ3VKJmJZN+9rFzzKwqiuwQyM8nrITt2AwMHJGoFi+fkog9tdvboKSQBHMzG

++QF8JEt+T2upO+sZnq+tmpchSpYwCv0rpP+mQMAn6H6gLvqcrOcniCP2xauJ4Aoi

+DCaCTwUOFCH4U247M18BNISft5DdWBF1KLAdOc4tFxM8a45SRuTqqAubMy3Dt+Cn

+TXdnLbFgDe67weDCccPtnMf51UYXo7PvmOjgFY8jozMHG+I7JS79PBhvoefrHL8p

+16lBfzBMmtf0mNqAVVXqvc+zx2dt8/ooPfrf26EBJSyJ+A0KZqV8t8C6sW+Q2Yt/

+IgBstMne4ABICA2V4g96NPJBjjeXscl0jZ5eZ0qoFpPKvIZbPAS2z7yARo7F4pez

+BBBqOnalo6jyNr88KuQgt2UnS5Z3qEXiXBukvwXcRlFMMEhKzR5WZSP2pneRV8QT

+bh5VBQrmrXB+CTzhYOld5R3FYoFjCYg+yrvGFOm/tdCngu7Zqk59NqmagAolFpfo

+Tpb7bw5jMBlJnSG+i/UaZ6kjLTWz0/tnA9z+rt7zojmyzsT16nIRiCwfQDqRX807

+vayaLE3EtC7N9has+/M9UJnSvWNbBdhNuRkV9rLKLfhhS1iile4eD0BxSgZAK6/v

+u/y8F4jLrKlUHxYMAY1o3g==

+=0jFr

+-----END PGP PUBLIC KEY BLOCK-----

+pub   4096R/47CCBCC7 2011-10-21

+uid                  Robert Cameron Weir (CODE SIGNING KEY) <robweir@apache.org>

+sig 3        47CCBCC7 2011-10-22  Robert Cameron Weir (CODE SIGNING KEY) <robweir@apache.org>

+uid                  Robert Cameron Weir (PERSONAL) <rob@robweir.com>

+sig 3        47CCBCC7 2011-10-22  Robert Cameron Weir (CODE SIGNING KEY) <robweir@apache.org>

+uid                  Robert Cameron Weir (IBM) <robert_weir@us.ibm.com>

+sig 3        47CCBCC7 2011-10-22  Robert Cameron Weir (CODE SIGNING KEY) <robweir@apache.org>

+sub   4096R/58EA4420 2011-10-21

+sig          47CCBCC7 2011-10-21  Robert Cameron Weir (CODE SIGNING KEY) <robweir@apache.org>

+

+-----BEGIN PGP PUBLIC KEY BLOCK-----

+Version: GnuPG v1.4.11 (GNU/Linux)

+

+mQINBE6hXCsBEACzijPo2pI+pL1jfFAPSm/kSlKVvdvayTdH481pIaPqFuEoJu5V

+s4ELI2Im3LOpaTPDvtVAdEmRQsFCbo7rff/oQgFvjrHnh4TrrUBDESOqg14pBcix

+kXq5l5hMZXCNvX7e6Wg41p7dSia7LqA4qgXiVBVa8pU5XMCNDBJa4dKyD+E+K0q/

+U+0EjCNw1TWGhrsH1px9uAO4jxhyHB02oO50y/mxxrpFfONNpK0r1NN5XN4ji2k/

+39AMZQ/PNk1jTRtUMuiC2N5bYiLHa3lQswGXE2ALf97h7cQ4ORhxzSYQi1XD1eak

+f78OOFalMy/MHblJNLJG/skLzS9sQoPt0f64kIV8/YCYr6HxnLqUDH9LQrkVvLW+

+CCp47na9yZhx89BigfsYIMJ6XmPIXhpN5lCtN/SfJy76ehsMFJFe4Fqt+3YhJF6L

+rkx6Jlu8nBzYGG/gO4AdH0U9V8Iq2SbgUBDT/vA8MjflLUxGxceFSVScP9RskK9G

+bQljZ/TNizwrUxhDZGVleQp6Bmm100vkYPhiieCFaX8XWnAJ3xa/ViP5hZ62QUNQ

+Ih4cQBhnnYOa5LpOnv0IG/SGXqOFk2Z9YxkmMyr6LW4CxxEbZIprzhLeL0OoVHx9

+UASgQdaywZ1yX74/GUqkCZvUrAqXJzWVutHLg24GjXvGX0h2xwpWWG5oZQARAQAB

+tDtSb2JlcnQgQ2FtZXJvbiBXZWlyIChDT0RFIFNJR05JTkcgS0VZKSA8cm9id2Vp

+ckBhcGFjaGUub3JnPokCOgQTAQoAJAIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIX

+gAUCTqM+NQIZAQAKCRBhQKGHR8y8x3l0D/oDafFqFD1V1yw3Yy1wcKhUDEmaDb4j

+Jig0EPiL8FBl517zgcw30Gf8u6alThgB4pHfQYbhGE+c7yQxOZ6dS0sPMQGwyj6x

+HnsKF+NmRLjyWSXdGvYj0lLMcmFb9RFG7Lyc1uEIlKRiqo6aXMpECR6pFzZ/s4vj

+qypTqH52et4stwbszMB+0oV8s9wDC+ln6MRf8JrP2ZsqL5DBdTHOaF5fkr1XgE2s

+gBJtltuNounNH1zaEkmAOD4ZrWYEXgoB93fFK3Eio4XWCFmSAlimkjvHS/95Fwok

+yTAGqtNpioTOm8SCsx9Piim3QzB/V8ojYw4PDcl+oHffBmurd9KFSzDc9/+SPOmI

+f6y8CT8t5tsE4yHq6fALa8lFMMCF9iku78+iyjlMfmQee2M/iSqJUfxhUJ2rgBzj

+xwfdGKgU1gJDa1ZuXQSdjYATx5obR9KLvnOrQR4NVWRwiMnjmnwp5gqVEVIiKYFL

+P32+dYlvRpZuoEe6+SOnc3AGHCGRMny6xPkcMO/qQe2EUpTegQaMCfv4vErrawCn

+EEmUsXijeJRJAvigXzzVfQvNfjihaiYCpii9yPLlB4o7gG3hDiY+nmjlYWON/zJo

++S21736hKrChehkA92bevmCCNxCSsBbLQZEClyp4qWM0Hj1ytViYkwPUwMB6klzC

+OVaDS/12r4yLXLQwUm9iZXJ0IENhbWVyb24gV2VpciAoUEVSU09OQUwpIDxyb2JA

+cm9id2Vpci5jb20+iQI3BBMBCgAhBQJOoz52AhsDBQsJCAcDBRUKCQgLBRYCAwEA

+Ah4BAheAAAoJEGFAoYdHzLzH69IP/13bLQ5kwG+Cilu54GbCSHHA+b4VbDOMomRt

+rIhBFBfRfHH8zfUnofxV0uBoqqA7Jn6oxHOwuVCAgxKBuaNd+IlmOGKSNGEuiw1b

+eYQjF9qhoLQNwV63h+pmj20pt07VFGK1Dh/cP5c6xK0CDE4Gxsq9wM0/hFjEfn5v

+7W7pE9eO6ou9eV6Vx1vmyZQ1GHTEQjvBCUxuQKmTgAdyAgkrBbqmVS5/wDqBdk+t

+x+QTLFl15dWoLZ8FmtyJnHRAaVG59jLYPkIHKAI5nFsHnn+1W5DGk6Ip48P3Homb

+zhfxMS25R06Iyxc6x6HUTD007b64/5ZdLmVAMRd5L78/7w1rXr6/pcKArGtR+pWa

+8/+nwWj4qP+Fe8A1xZ9x5NwUWB9bgmyZ49eDetqPChtyXfhpV/0sOQXOAndMD74q

+PpBIE6J4gafwmjannzn02xlI1U1VKMN3lbwcMGokDwMrt2tC4y7rWgmOt0ifBfaw

+3fFRrd0fEAV62NHfZCQlq+4WCjwpaW97bj4EGGiZQxp17j5YtPpEVfsRmxsls6mT

+ten/j1q2m4aJevGyjt+N2ncoDumbOnNmU/fBCqYGQGfnr9laagPHaepmzPLYKfda

+NhXNGozNMYG8HE9LOOcpmIxWDKbSFxtsYVxRihIFHe0l2FSu7EpGNGd7fQykXZs5

+R8jI5CCWtDJSb2JlcnQgQ2FtZXJvbiBXZWlyIChJQk0pIDxyb2JlcnRfd2VpckB1

+cy5pYm0uY29tPokCNwQTAQoAIQUCTqM+igIbAwULCQgHAwUVCgkICwUWAgMBAAIe

+AQIXgAAKCRBhQKGHR8y8xwVQEACV7ugw0AQim6hn16bS2OouEpCw06vRZL6Ze/tb

+mdWEOoiB/jXDbZVgbpHDDZ1bJPvVko0ygrNndGwHOQuE2RqTy8URRhLNG5+Vtvw5

+yIZaD+tiHzsW100KaeTt0ugsC1UbOH2UFbc9ChuVJVn6usHHbcLwq2Vx93hiZYk0

+d5/QQfy+rCiKNtJNZPGFjcpMy5ai1oSiM0D3UEcuWijSv6/4gJT/KqkN1JPGWats

+xljfgcEqQNMdkOXUPXFiUEN2Ezot2njnztK8ijhaOBN3OU7h/5/lADX2OfDUA5gb

+w7FLLeVldkyTG3TcVbnlyZ3FOCskHjR2Y8ExwSDw8BZU4jZo3uRu56ruDVo50pQI

+MBVqVOJpBoX+XR9apBxWuy9mQqpivj8rvnarYiAGmewalazBpvVFxTTtPTJ9b4qe

+UH4tqwq3zwCDv9/qlGh7XAnpaLrfy+L2vR+GRPOXFYRAsUhUbaqk1iDqVW8a13lR

+KTBbzjY1tF6kmfd0KampEMSYiQvzKUQp0Aeac6sesvY9y1ojlAXil0PpB15KFaTh

+UXHeP/Q5UdFSPmJZaIakGcxmlHgGJvD70sxp6A8pliZTcCtAtATaVS59vZF4/wdD

+NRZXflwreifJ4vCb/6hv96ToxwRk//ncqQ5muAweIkwoIJW/G8C376I+12Bhw1Fx

+y2Dl47kCDQROoVwrARAAr1TaQZHbHu4ecuvjnZGXBrHgfxUdUZVyF4s2q5jPFHJQ

+jH1F9OHEf7a2Mpk5LYG26EBSD/3iEMk0fzJOudMgHlibo5rnwByymDX0ra1qrKsP

+NGy8STvG8385qYQHSFuUr/SHHjEFcGMVpwMp1An5gRqmk1mH4PtSRRpWV9xAiAXd

+/Y3sw9r9ZG5JLnaPpgXyFiPriV1gWfH4hJZojD5o7DY8Qo6KedhlLf/SYLQqxNjb

+BC/vLm8ppcr3MteEkNwITUmjgGQfAX6UsaTarKzwexeR40Dz0Lm66acFOG5H+QkA

+tABKZMGqCbjZlzfMu+RpMKDxkjNmvs6jbiKXOrC26WipCL3GOaTPm7BDpOulsQG8

+XbM2/JPs5rWJFk/H76W9eMlArgrhRufpafL0S9walwO2NfM1UqKG0U/nbrc2CvSY

+0GowSWV1hLbOJAv4Spz1EmMa7tLe+wXbpKpVqeBoCO7jI9FoijYUx2vhFYlsZdir

+eu3Cg1QRn2xgh6ir10PczYLuD+AD8CUmngovKtJhN5ZSZR/7iaITLKa95jSGguHx

+mTCiV4vdx29xBzGi4Zwb8kBLmL+RRwek2x0ta2jmaih3nJA6KxGoC+n7DkSBeXhW

+8M/Tpt3IxRkhq/wVp644L77ycCMCTpxfnaf48fZEFe3gI13wevcwGPB/qtDaOM0A

+EQEAAYkCHwQYAQoACQUCTqFcKwIbDAAKCRBhQKGHR8y8x7NHD/0cXor4ihPJrakE

+yjVng6Tyy/mpE6+67mhgmFtrIhLZlKm9Cc96Q8Nlu9p7YoguG3M4fqRb0sj26Lkq

+ku3ejFTrHqB8bhwAk52pCTvM027N1w5eQJ2/vdV/K/gOMY5aEW79X1YxldBK508S

+BArizRU6qDEXO/H7kL4siPMJ6Pumaj7SXgLKfIerx+mIHaHa4VA+fgJKmNo2BeII

+BuIOMIZJcS9xVCCowAa7rjL7h6OGupneexyyYhCQN4RFgksrtRsdiqg0crM9/+Pw

+GuEaTRNAOaGZqTWdK/et3W76t4EbZBOJgcvh8Z3QbYEOxGuGIW7eAC/I6PggK181

++NBqZB10coWN9zM6luuftSq4VstPo1P0S+lXyYCHfPY6EgAR/37O0L9bwOkPi6MU

+Natemg681IjnvquYw5LnwML8NHtxaFKAif3uM2qZhEcIyhMDLSaghVG7oFHwwfh+

+ahc/0Nj80KJ/+S+f5fiWDtaAh3zuVuobI3k0k7cZ59Acaiv/PGBTrVEYsBKjAZTU

+IYOz1UKe2FPfM/rdsutK7saZZVBogWNiWaT15Qqoc+h2ekYu2wKBWzUYF/xu0wRw

+dmkJVoTHF0OJg9a1x61Lfv18vaFvPlnLW0dR7yquKfPYC8vO/0o/WofcYaUaTCyP

+V3mlggls+6agPtRXV7B3uhWANwEyHg==

+=LQOy

+-----END PGP PUBLIC KEY BLOCK-----

+

diff --git a/trunk/LICENSE b/trunk/LICENSE
new file mode 100644
index 0000000..938550b
--- /dev/null
+++ b/trunk/LICENSE
@@ -0,0 +1,366 @@
+                                

+                                Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   Licensed under the Apache License, Version 2.0 (the "License");

+   you may not use this file except in compliance with the License.

+   You may obtain a copy of the License at

+

+       http://www.apache.org/licenses/LICENSE-2.0

+

+   Unless required by applicable law or agreed to in writing, software

+   distributed under the License is distributed on an "AS IS" BASIS,

+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+   See the License for the specific language governing permissions and

+   limitations under the License.

+

+

+

+

+====================================================================================================

+

+APACHE ODF TOOLKIT DEPENDENCIES: 

+

+The Apache ODF Toolkit ODF Validator component includes several third party jars or schemas with 

+separate copyright notices and license terms. Your use of the source code or bin of ODF Validator 

+is subject to the terms and conditions of the following licenses. 

+

+I. Open Document Format(ODF) schemas

+

+        Open Document Format for Office Applications (OpenDocument) Version 1.2

+        Committee Specification Public Review Draft (CSPRD) 03, 19 January 2011

+    Relax-NG Schema

+

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

+    

+    

+    

+II. MathML Schemas

+

+    W3C Software Notice and License

+

+    This work (and included software, documentation such as READMEs, or other 

+    related items) is being provided by the copyright holders under the following license.

+    License

+

+    By obtaining, using and/or copying this work, you (the licensee) agree that 

+    you have read, understood, and will comply with the following terms and conditions.

+

+    Permission to copy, modify, and distribute this software and its documentation, 

+    with or without modification, for any purpose and without fee or royalty is hereby 

+    granted, provided that you include the following on ALL copies of the software and 

+    documentation or portions thereof, including modifications:

+

+        The full text of this NOTICE in a location viewable to users of the redistributed 

+        or derivative work.

+        Any pre-existing intellectual property disclaimers, notices, or terms and conditions. 

+        If none exist, the W3C Software Short Notice should be included (hypertext is 

+        preferred, text is permitted) within the body of any redistributed or derivative code.

+        Notice of any changes or modifications to the files, including the date changes were 

+        made. (We recommend you provide URIs to the location from which the code is derived.)

+

+    Disclaimers

+

+    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO 

+    REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, 

+    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF 

+    THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, 

+    TRADEMARKS OR OTHER RIGHTS.

+

+    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL 

+    DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

+

+    The name and trademarks of copyright holders may NOT be used in advertising or publicity 

+    pertaining to the software without specific, written prior permission. Title to copyright 

+    in this software and any associated documentation will at all times remain with copyright 

+    holders.

+    Notes

+

+    This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

+

+    This formulation of W3C's notice and license became active on December 31 2002. This version 

+    removes the copyright ownership notice such that this license can be used with materials other 

+    than those owned by the W3C, reflects that ERCIM is now a host of the W3C, includes references 

+    to this specific dated version of the license, and removes the ambiguous grant of "use". 

+    Otherwise, this version is the same as the previous version and is written so as to preserve 

+    the Free Software Foundation's assessment of GPL compatibility and OSI's certification under 

+    the Open Source Definition.

+    

+    

+

+III. Oracle Multi-Schema XML Validator (MSV)   

+     (msv-core-2011.1.jar, xsdlib-2010.1.jar, relaxngDatatype-20020414.jar, xml-apis-1.3.04.jar)

+

+    BSD license

+    

+    Copyright (c) 2001-2009 Sun Microsystems, Inc. All Rights Reserved.

+

+    Redistribution and  use in  source and binary  forms, with  or without

+    modification, are permitted provided that the following conditions are

+    met:

+

+    - Redistributions  of  source code  must  retain  the above  copyright

+      notice, this list of conditions and the following disclaimer.

+

+    - Redistribution  in binary  form must  reproduct the  above copyright

+      notice, this list of conditions  and the following disclaimer in the

+      documentation and/or other materials provided with the distribution.

+

+    Neither  the  name   of  Sun  Microsystems,  Inc.  or   the  names  of

+    contributors may be  used to endorse or promote  products derived from

+    this software without specific prior written permission.

+

+    This software is provided "AS IS," without a warranty of any kind. ALL

+    EXPRESS  OR   IMPLIED  CONDITIONS,  REPRESENTATIONS   AND  WARRANTIES,

+    INCLUDING  ANY  IMPLIED WARRANTY  OF  MERCHANTABILITY,  FITNESS FOR  A

+    PARTICULAR PURPOSE  OR NON-INFRINGEMENT, ARE HEREBY  EXCLUDED. SUN AND

+    ITS  LICENSORS SHALL  NOT BE  LIABLE  FOR ANY  DAMAGES OR  LIABILITIES

+    SUFFERED BY LICENSEE  AS A RESULT OF OR  RELATING TO USE, MODIFICATION

+    OR DISTRIBUTION OF  THE SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL

+    SUN OR ITS  LICENSORS BE LIABLE FOR ANY LOST  REVENUE, PROFIT OR DATA,

+    OR  FOR  DIRECT,   INDIRECT,  SPECIAL,  CONSEQUENTIAL,  INCIDENTAL  OR

+    PUNITIVE  DAMAGES, HOWEVER  CAUSED  AND REGARDLESS  OF  THE THEORY  OF

+    LIABILITY, ARISING  OUT OF  THE USE OF  OR INABILITY TO  USE SOFTWARE,

+    EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+      

+      

+      

+IV. ISO RELAX JARV API to JAXP 1.3 validation API bridge  

+    (isorelax-jaxp-bridge-1.0.jar, isorelax-20030108.jar))

+

+    The MIT License (MIT)

+

+    Copyright (c) 2006 Kohsuke Kawaguchi

+

+    Permission is hereby granted, free of charge, to any person obtaining a 

+    copy of this software and associated documentation files (the "Software"), 

+    to deal in the Software without restriction, including without limitation 

+    the rights to use, copy, modify, merge, publish, distribute, sublicense, 

+    and/or sell copies of the Software, and to permit persons to whom the 

+    Software is furnished to do so, subject to the following conditions:

+

+    The above copyright notice and this permission notice shall be included 

+    in all copies or substantial portions of the Software.

+

+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 

+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 

+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 

+    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 

+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 

+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 

+    DEALINGS IN THE SOFTWARE. 

+====================================================================================================

+

+

diff --git a/trunk/NOTICE b/trunk/NOTICE
new file mode 100644
index 0000000..7f161f6
--- /dev/null
+++ b/trunk/NOTICE
@@ -0,0 +1,28 @@
+Apache ODF Toolkit
+
+Copyright 2011-2014 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions copyright IBM, 2009-2011. All rights reserved.
+Portions copyright Oracle, 2008-2011. All rights reserved.
+
+This product contains Open Document Format(ODF) Schema documents. 
+Copyright (c) OASIS Open 2002-2011. All Rights Reserved.
+
+This product contains MathML XML Schema documents. Copyright (c) 1998-2003
+World Wide Web Consortium (Massachusetts Institute of Technology, European
+Research Consortium for Informatics and Mathematics, Keio University)
+
+This product contains Oracle Multi-Schema XML Validator (MSV).
+under BSD license. Copyright (c) 2001-2009 Sun Microsystems, Inc. All Rights Reserved.
+
+This product contains ISO RELAX JARV API to JAXP 1.3 validation API bridge
+(http://java.net/projects/isorelax-jaxp-bridge). under MIT License (MIT)
+Copyright (c) 2006 Kohsuke Kawaguchi
+
+
+
+
+    
diff --git a/trunk/README.txt b/trunk/README.txt
new file mode 100644
index 0000000..9581bef
--- /dev/null
+++ b/trunk/README.txt
@@ -0,0 +1,143 @@
+====================================================================================

+

+                            Apache ODF Toolkit  

+            <http://incubator.apache.org/odftoolkit/index.html>

+        

+====================================================================================

+

+The Apache ODF Toolkit (incubating) is a set of Java modules that allow programmatic 

+creation, scanning and manipulation of Open Document Format (ISO/IEC 26300 == ODF) 

+documents. Unlike other approaches which rely on runtime manipulation of heavy-weight 

+editors via an automation interface, the ODF Toolkit is lightweight and ideal for 

+server use.

+It's an incubator project of the Apache Software Foundation <http://www.apache.org/>.

+

+The ODF Toolkit consists of four subcomponents:

+

+1. ODFDOM (odfdom-java-*.jar) 

+    This is an Open Document Format (ODF) framework. Its purpose is to provide 

+    an easy, common way to create, access and manipulate ODF files, without 

+    requiring detailed knowledge of the ODF specification. It is designed to 

+    provide the ODF developer community with an easy, lightweight programming API 

+    portable to any object-oriented language.

+    

+2. Simple API (simple-odf-*.jar)

+    The Simple Java API for ODF is an easy-to-use, high-level Java API 

+    for creating, modifying and extracting data from ODF 1.2 documents.

+    It is written in pure Java and does not require that you install any

+    document editor on your system. The Simple Java API for ODF is a high

+    level abstraction of the lower-level ODFDOM API

+

+3. ODF Validator (odfvalidator-*.war)

+    This is a tool that validates Open Document Format (ODF) files and checks them

+    for conformance according to the ODF Standard. ODF Validator is available as an 

+    online service and as a command line tool. This page primarily describes the 

+    command line tool. Please visit web page:

+       http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html

+    for details regarding the online tool.

+

+4. ODF XSLT Runner(xslt-runner-*.jar, xslt-runner-task-*.jar)

+    ODF XSLT Runner is a small Java application that allows you to apply XSLT 

+    stylesheets to XML streams included in ODF packages without extracting them 

+    from the package. It can be used from the command line. A driver to use it 

+    within an Ant build file, ODF XSLT Runner Task, is also available.

+

+

+Getting Started

+===============

+

+The ODF Toolkit is based on Java 5 and uses the Maven 2 <http://maven.apache.org/>

+build system. To build ODF Toolkit, use the following command in this directory:

+

+    mvn clean install

+

+The simplest way to use these modules are just put the jars files in your classpath

+directly. If you are not using maven you can see the versions of the major components for

+your release in CHANGES.txt.

+

+Documentation

+=============

+

+The Home Page for the ODF Toolkit:

+    http://incubator.apache.org/odftoolkit/index.html

+    

+ODFDOM Getting Start Guide:    

+    http://incubator.apache.org/odftoolkit/odfdom/index.html   

+     

+Simple API Getting Start Guide:    

+    http://incubator.apache.org/odftoolkit/simple/gettingstartguide.html    

+       

+Simple API Cookbook:

+    http://incubator.apache.org/odftoolkit/simple/document/cookbook/index.html

+    

+Simple API Demos:

+    http://incubator.apache.org/odftoolkit/simple/demo/index.html

+    

+Simple API Online JavaDoc:

+    http://incubator.apache.org/odftoolkit/simple/document/javadoc/index.html

+    

+ODF Validator Getting Start Guide:   

+    http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html

+    

+ODF XSLT Runner Getting Start Guide:   

+    http://incubator.apache.org/odftoolkit/xsltrunner/ODFXSLTRunner.html     

+    

+    

+License (see also LICENSE.txt)

+==============================

+

+Collective work: Copyright 2011-2014 The Apache Software Foundation.

+

+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 regarding copyright ownership.

+The ASF licenses this file to You under the Apache License, Version 2.0

+(the "License"); you may not use this file except in compliance with

+the License.  You may obtain a copy of the License at

+

+     http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing, software

+distributed under the License is distributed on an "AS IS" BASIS,

+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+See the License for the specific language governing permissions and

+limitations under the License.

+

+Apache ODF Toolkit includes a number of subcomponents with separate copyright

+notices and license terms. Your use of these subcomponents is subject to

+the terms and conditions of the licenses listed in the LICENSE.txt file.

+    

+    

+Mailing Lists

+=============

+

+Discussion about ODF Toolkit takes place on the following mailing lists:

+

+Development Mailing List

+    Subscribe: odf-dev-subscribe@incubator.apache.org

+    Post (after subscription): odf-dev@incubator.apache.org

+    Unsubscribe: odf-dev-unsubscribe@incubator.apache.org

+    Archives

+    (1) Markmail - http://markmail.org/search/+list:org.apache.incubator.odf-dev/

+    (2) Apache - http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/

+

+Users Mailing List

+    Subscribe: odf-users-subscribe@incubator.apache.org

+    Post (after subscription): odf-users@incubator.apache.org

+    Unsubscribe: odf-users-unsubscribe@incubator.apache.org

+    Archives: http://mail-archives.apache.org/mod_mbox/incubator-odf-users/

+

+Notification on all code changes are sent to the following mailing list:

+

+    odf-commits@incubator.apache.org

+

+The mailing lists are open to anyone and publicly archived.

+

+

+Issue Tracker

+=============

+

+If you encounter errors in ODF Toolkit or want to suggest an improvement or

+a new feature, please visit the ODF Toolkit issue tracker at

+https://issues.apache.org/jira/browse/ODFTOOLKIT. There you can also find the

+latest information on known issues and recent bug fixes and enhancements.    

diff --git a/trunk/assemble/bin.xml b/trunk/assemble/bin.xml
new file mode 100644
index 0000000..d425ea6
--- /dev/null
+++ b/trunk/assemble/bin.xml
@@ -0,0 +1,31 @@
+<!--

+ 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 regarding copyright ownership.

+ The ASF licenses this file to You under the Apache License, Version 2.0

+ (the "License"); you may not use this file except in compliance with

+ the License.  You may obtain a copy of the License at

+

+      http://www.apache.org/licenses/LICENSE-2.0

+

+ Unless required by applicable law or agreed to in writing, software

+ distributed under the License is distributed on an "AS IS" BASIS,

+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ See the License for the specific language governing permissions and

+ limitations under the License.

+-->

+

+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

+  <id>bin</id>

+  <formats>

+    <format>zip</format>

+  </formats>

+  <fileSets>

+    <fileSet>

+      <directory>${project.basedir}/target/${project.version}-bin/</directory>

+      <outputDirectory>/</outputDirectory>

+    </fileSet>

+  </fileSets>

+</assembly>
\ No newline at end of file
diff --git a/trunk/assemble/doc.xml b/trunk/assemble/doc.xml
new file mode 100644
index 0000000..515ac01
--- /dev/null
+++ b/trunk/assemble/doc.xml
@@ -0,0 +1,32 @@
+<!--

+ 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 regarding copyright ownership.

+ The ASF licenses this file to You under the Apache License, Version 2.0

+ (the "License"); you may not use this file except in compliance with

+ the License.  You may obtain a copy of the License at

+

+      http://www.apache.org/licenses/LICENSE-2.0

+

+ Unless required by applicable law or agreed to in writing, software

+ distributed under the License is distributed on an "AS IS" BASIS,

+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ See the License for the specific language governing permissions and

+ limitations under the License.

+-->

+

+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

+  <id>doc</id>

+  <formats>

+    <format>zip</format>

+  </formats>

+  <fileSets>

+    <fileSet>

+      <directory>${project.basedir}/target/${project.version}-docs</directory>

+      <outputDirectory>/</outputDirectory>

+      <useDefaultExcludes>true</useDefaultExcludes>

+    </fileSet>

+  </fileSets>

+</assembly>
\ No newline at end of file
diff --git a/trunk/assemble/src.xml b/trunk/assemble/src.xml
new file mode 100644
index 0000000..d561eba
--- /dev/null
+++ b/trunk/assemble/src.xml
@@ -0,0 +1,36 @@
+<!--

+ 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 regarding copyright ownership.

+ The ASF licenses this file to You under the Apache License, Version 2.0

+ (the "License"); you may not use this file except in compliance with

+ the License.  You may obtain a copy of the License at

+

+      http://www.apache.org/licenses/LICENSE-2.0

+

+ Unless required by applicable law or agreed to in writing, software

+ distributed under the License is distributed on an "AS IS" BASIS,

+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ See the License for the specific language governing permissions and

+ limitations under the License.

+-->

+

+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

+  <id>src</id>

+  <formats>

+    <format>zip</format>

+  </formats>

+  <fileSets>

+    <fileSet>

+      <directory>${project.basedir}</directory>

+      <outputDirectory>/</outputDirectory>

+      <excludes>

+        <exclude>**/target/**</exclude>

+        <exclude>**/.*/**</exclude>

+        <exclude>legal/**</exclude>

+      </excludes>

+    </fileSet>

+  </fileSets>

+</assembly>
\ No newline at end of file
diff --git a/trunk/generator/LICENSE.txt b/trunk/generator/LICENSE.txt
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/trunk/generator/LICENSE.txt
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/trunk/generator/README.txt b/trunk/generator/README.txt
new file mode 100644
index 0000000..bb47da1
--- /dev/null
+++ b/trunk/generator/README.txt
@@ -0,0 +1,57 @@
+*************************************************************
+* Schema2template Java Library                              *
+*                                                           *
+*************************************************************
+
+
+About Schema2template
+----------------------
+
+The schema2template library reads arbitrary XML schemata and 
+provides functionality to map their XML model to arbitrary user 
+templates.
+
+The library is build upon two powerful open source tools:
+
+1) Oracle's Multi Schema Validator (MSV)
+Used to read arbitrary XML schema and map them to an internal RelaxNG 
+model.
+
+2) Apache's Velocity Template Engine
+Used as template framework, e.g. to provide scripting within templates.
+
+Within schema2template three common use cases covers with default templates 
+as examples. 
+For a given XML schema (e.g. RelaxNG, DTD, W3C schema) the following can be 
+created:
+
+a) a XML node reference for the given format as HTML file
+
+b) Java sources for a typed DOM tree of the format
+
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
+
+Installation
+-------------
+
+Just put the file odfdom.jar in your classpath. You will
+need Apache Velocity Engine and Sun's Multi Schema Validator (MSV) as well. Get it from
+   http://velocity.apache.org/
+   http://java.net/downloads/msv/releases/
+
+
+Documentation
+--------------
+
+Javadoc can be downloaded from the project's download area:
+   http://
+
+For online documentation please start by reading the project's
+Wiki page
+   http://
diff --git a/trunk/generator/pom.xml b/trunk/generator/pom.xml
new file mode 100644
index 0000000..05d3d25
--- /dev/null
+++ b/trunk/generator/pom.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.odftoolkit</groupId>
+    <artifactId>odftoolkit</artifactId>
+    <version>0.6.1-incubating</version>
+  </parent>
+
+    <!-- The Basics -->
+    <artifactId>schema2template-pom</artifactId>
+    <version>0.8.10-incubating</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <!-- Build Settings -->
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>2.0.2</version>
+                    <configuration>
+                        <source>1.5</source>
+                        <target>1.5</target>
+                        <meminitial>512m</meminitial>
+                        <maxmem>1024m</maxmem>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>2.0-beta-9</version>
+                    <configuration>
+                        <!-- Workaround for http://jira.codehaus.org/browse/MGPG-9 -->
+                        <mavenExecutorId>forked-path</mavenExecutorId>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1.2</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.7</version>
+                <configuration>
+                    <doctitle>Schema2template</doctitle>
+                    <minmemory>512m</minmemory>
+                    <maxmemory>1024m</maxmemory>
+                    <splitindex>true</splitindex>
+                    <windowtitle>Schema2template v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
+                    <links>
+                        <link>http://download.oracle.com/javase/6/docs/api/</link>
+                    </links>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <attach>true</attach>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+  <!-- Multimodule build -->
+    <modules>
+        <module>schema2template</module>
+        <module>schema2template-maven-plugin</module>
+    </modules>
+    
+    <!-- More Project Information -->
+    <name>XML Schema to Template Mapping Tool: Parent POM</name>
+    <description>Parent project for XML Schema to Template Mapping Tool</description>
+    <url>http://incubator.apache.org/odftoolkit/odfdom/index.html</url>
+    <inceptionYear>2010</inceptionYear>
+    <licenses>
+        <license>
+            <name>Apache 2</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/generator</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/generator</developerConnection>
+        <url>http://svn.apache.org/viewvc/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/generator</url>
+    </scm>
+
+    <profiles>
+    <!-- Profile for deploying to the Sonatype repository, which
+         requires GPG signatures
+         see
+         https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
+         https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
+         https://issues.sonatype.org/browse/OSSRH-960
+         -->
+        <profile>
+            <id>release</id>
+            <activation>
+                <property>
+                    <name>performRelease</name>
+                    <value>true</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>                    
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <version>1.1</version>
+                        <executions>
+                            <execution>
+                                <id>sign-artifacts</id>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>sign</goal>
+                                </goals>            
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <!-- <distributionManagement>
+                <site>
+                    <id>odfdom</id>
+                    <name>ODFDOM Java Toolkit Project</name>
+                    <url>dav:https://odftoolkit.org/website/odfdom/${project.version}/codegeneration/schema2template-pom</url>
+                </site>
+            </distributionManagement> -->        
+        </profile>
+    </profiles>
+</project>
diff --git a/trunk/generator/schema2template-maven-plugin/README.txt b/trunk/generator/schema2template-maven-plugin/README.txt
new file mode 100644
index 0000000..c78d7c4
--- /dev/null
+++ b/trunk/generator/schema2template-maven-plugin/README.txt
@@ -0,0 +1 @@
+This is the Maven plugin used by ODFDOM
diff --git a/trunk/generator/schema2template-maven-plugin/pom.xml b/trunk/generator/schema2template-maven-plugin/pom.xml
new file mode 100644
index 0000000..50713ed
--- /dev/null
+++ b/trunk/generator/schema2template-maven-plugin/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.odftoolkit</groupId>
+    <artifactId>schema2template-pom</artifactId>
+    <version>0.8.10-incubating</version>
+  </parent>
+  
+    <!-- The Basics -->
+    <artifactId>schema2template-maven-plugin</artifactId>
+    <version>0.8.10-incubating</version>
+    <packaging>maven-plugin</packaging>
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>schema2template</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+            <scope>provided</scope>
+            <version>2.0.7</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-project</artifactId>
+            <scope>provided</scope>
+            <version>2.0.7</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <scope>provided</scope>
+            <version>2.0.7</version>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <!-- Build Settings -->
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-plugin-plugin</artifactId>
+                <version>2.6</version>
+                <configuration>
+                    <goalPrefix>schema2template</goalPrefix>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <!-- <distributionManagement>
+        <site>
+            <id>odfdom</id>
+            <name>ODFDOM Java Toolkit Project</name>
+            <url>dav:https://odftoolkit.org/website/odfdom/${project.version}/codegeneration/schema2template-maven-plugin</url>
+        </site>
+    </distributionManagement> -->
+
+    <!-- More Project Information -->
+    <name>XML Schema to Template Mapping Tool: Maven2 Plugin</name>
+    <description>Maven Plugin for XML Schema to Template Mapping Tool</description>
+    <url>http://incubator.apache.org/odftoolkit/</url>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+</project>
diff --git a/trunk/generator/schema2template-maven-plugin/src/main/java/org/odftoolkit/odfdom/schema2template_maven_plugin/CodegenMojo.java b/trunk/generator/schema2template-maven-plugin/src/main/java/org/odftoolkit/odfdom/schema2template_maven_plugin/CodegenMojo.java
new file mode 100644
index 0000000..4228a7e
--- /dev/null
+++ b/trunk/generator/schema2template-maven-plugin/src/main/java/org/odftoolkit/odfdom/schema2template_maven_plugin/CodegenMojo.java
@@ -0,0 +1,155 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ * 
+ * Copyright 2009 Benson I. Margulies. All rights reserved.
+ * Copyright 2009, 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.schema2template_maven_plugin;
+
+import java.io.File;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import schema2template.example.odf.OdfHelper;
+
+/**
+ * Generate Java code for ODFDOM.
+ * @goal codegen
+ * @phase generate-sources
+ * @description ODFDOM Code Generator
+ * @requiresDependencyResolution compile
+ */
+public class CodegenMojo extends AbstractMojo {
+
+	/**
+	 * @parameter
+	 * @required
+	 */
+	File domResourceRoot;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	String odf12SchemaFile;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	String odf11SchemaFile;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	File pkgResourceRoot;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	String signatureSchemaFile;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	String manifestSchemaFile;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	File targetRoot;
+	
+	/**
+	 * @parameter
+	 * @required
+	 */
+	String configFile;
+	
+	/**
+	 * @parameter expression="${project}"
+	 * @required
+	 */
+	MavenProject project;
+
+	/* (non-Javadoc)
+	 * @see org.apache.maven.plugin.Mojo#execute()
+	 * @goal codegen
+	 */
+	public void execute() throws MojoExecutionException, MojoFailureException {
+		try {
+			getLog().info("Schema2template code generation.");
+			if (configFile == null) {
+				getLog().error("Please set configure file patch.");
+				throw new MojoFailureException("Please set configure file patch.");
+			}
+			if (odf12SchemaFile == null) {
+				getLog().error("Please set odf1.2 schema file patch.");
+				throw new MojoFailureException("Please set schema file patch.");
+			}
+			if (odf11SchemaFile == null) {
+				getLog().error("Please set odf1.1 schema file patch.");
+				throw new MojoFailureException("Please set schema file patch.");
+			}
+			if (signatureSchemaFile == null) {
+				getLog().error("Please set odf1.2 document signature schema file patch.");
+				throw new MojoFailureException("Please set schema file patch.");
+			}
+			if (manifestSchemaFile == null) {
+				getLog().error("Please set odf1.2 manifest schema file patch.");
+				throw new MojoFailureException("Please set schema file patch.");
+			}
+			String targetRootPath = targetRoot.getAbsolutePath();
+			if (targetRootPath == null) {
+				getLog().error("Please set generation code root patch.");
+				throw new MojoFailureException("Please set generation code root patch.");
+			}
+			String domResourceRootPath = domResourceRoot.getAbsolutePath();
+			if (domResourceRootPath == null) {
+				getLog().error("Please set dom templates root patch.");
+				throw new MojoFailureException("Please set templates root patch.");
+			}
+			String pkgResourceRootPath = pkgResourceRoot.getAbsolutePath();
+			if (pkgResourceRootPath == null) {
+				getLog().error("Please set pkg templates root patch.");
+				throw new MojoFailureException("Please set templates root patch.");
+			}
+			getLog().debug("Generation Code Files Root Directory " + targetRootPath);
+			getLog().debug("Config File " + configFile);
+			getLog().debug("Dom Template Files Directory " + domResourceRootPath);
+			getLog().debug("ODF1.2 Schema File " + odf12SchemaFile);
+			getLog().debug("ODF1.1 Schema File " + odf11SchemaFile);
+			getLog().debug("Pkg Template Files Directory " + pkgResourceRootPath);
+			getLog().debug("ODF1.2 Signature Schema File " + signatureSchemaFile);
+			getLog().debug("ODF1.2 Manifest Schema File " + manifestSchemaFile);
+			OdfHelper codeGen = new OdfHelper(domResourceRootPath, odf12SchemaFile, odf11SchemaFile, pkgResourceRootPath, signatureSchemaFile, manifestSchemaFile, targetRootPath, configFile);
+			codeGen.start();
+		} catch (Exception ex) {
+			getLog().error("Failed to parse template.");
+			getLog().error(ex);
+			String msg = "Failed to execute ODF schema2template example";
+			throw new MojoFailureException(ex, msg, msg);
+		}
+
+	}
+}
diff --git a/trunk/generator/schema2template/README.txt b/trunk/generator/schema2template/README.txt
new file mode 100644
index 0000000..a132e55
--- /dev/null
+++ b/trunk/generator/schema2template/README.txt
@@ -0,0 +1 @@
+This project is used by ODFDOM to generated dom layer elements and attributes .
diff --git a/trunk/generator/schema2template/pom.xml b/trunk/generator/schema2template/pom.xml
new file mode 100644
index 0000000..dca36dc
--- /dev/null
+++ b/trunk/generator/schema2template/pom.xml
@@ -0,0 +1,266 @@
+<?xml version="1.0"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.odftoolkit</groupId>
+    <artifactId>schema2template-pom</artifactId>
+    <version>0.8.10-incubating</version>
+  </parent>
+  
+	<!-- The Basics -->
+	<artifactId>schema2template</artifactId>
+	<version>0.8.10-incubating</version>
+	<packaging>jar</packaging>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>net.java.dev.msv</groupId>
+			<artifactId>msv-core</artifactId>
+            <version>2009.1</version>
+		</dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+        </dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	
+	<!-- Build Settings -->
+	<build>
+		<extensions>
+			<extension>
+				<groupId>org.apache.maven.wagon</groupId>
+				<artifactId>wagon-webdav-jackrabbit</artifactId>
+				<version>1.0-beta-7</version>
+			</extension>
+		</extensions>
+		<plugins>
+			<plugin>
+				<artifactId>maven-jar-plugin</artifactId>
+				<version>2.3.1</version>
+				<configuration>
+					<archive>
+						<index>true</index>
+						<manifest>
+							<mainClass>schema2template.example.odf.OdfHelper</mainClass>
+						</manifest>
+						<manifestEntries>
+							<version>${project.version}</version>
+						</manifestEntries>
+						<manifestSections>
+							<manifestSection>
+								<name>schema2template</name>
+								<manifestEntries>
+									<Application-Name>schema2template</Application-Name>
+									<Application-Version>${project.version}</Application-Version>
+									<Application-Website>http://incubator.apache.org/odftoolkit/</Application-Website>
+									<Built-By>${user.name}</Built-By>
+									<Built-Date>${build.timestamp}</Built-Date>
+								</manifestEntries>
+							</manifestSection>
+						</manifestSections>
+					</archive>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<!-- Explizit version required for fix on systemPropertyVariables -->
+				<version>2.6</version>
+				<configuration>
+					<systemPropertyVariables>
+						<odfdom.version>${project.version}</odfdom.version>
+						<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
+					</systemPropertyVariables>
+					<excludes>
+						<exclude>**/integrationtest/**</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.0.2</version>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+					<showDeprecation>true</showDeprecation>
+				</configuration>
+			</plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>src/test/resources/examples/odf/*.ref</exclude>
+						<exclude>src/main/resources/examples/odf/odfdom-python/OdfTextDocument.odt</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+      			<groupId>org.codehaus.mojo</groupId>
+      			<artifactId>wagon-maven-plugin</artifactId>
+      			<version>1.0-beta-3</version>
+      			<executions>
+        			<execution>
+          				<id>download-odf-schema-v1.2</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+            				<fromFile>os/OpenDocument-v1.2-os-schema.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+        			<execution>
+          				<id>download-odf-manifest-schema-v1.2</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+            				<fromFile>os/OpenDocument-v1.2-os-manifest-schema.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+        			<execution>
+          				<id>download-odf-dsig-schema-v1.2</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+            				<fromFile>os/OpenDocument-v1.2-os-dsig-schema.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+        			<execution>
+          				<id>download-odf-schema-v1.1</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://docs.oasis-open.org/office/v1.1</url>
+            				<fromFile>OS/OpenDocument-schema-v1.1.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+        			<execution>
+          				<id>download-odf-strict-schema-v1.1</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://docs.oasis-open.org/office/v1.1</url>
+            				<fromFile>OS/OpenDocument-strict-schema-v1.1.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+        			<execution>
+          				<id>download-odf-schema-v1.0</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://www.oasis-open.org/committees/download.php/12571</url>
+            				<fromFile>OpenDocument-schema-v1.0-os.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+        			<execution>
+          				<id>download-odf-strict-schema-v1.0</id>
+          				<phase>process-resources</phase>
+          				<goals>
+            				<goal>download-single</goal>
+          				</goals>
+          				<configuration>
+            				<url>dav:http://www.oasis-open.org/committees/download.php/12569</url>
+            				<fromFile>OpenDocument-strict-schema-v1.0-os.rng</fromFile>
+            				<toDir>${project.build.directory}/odf-schemas</toDir>
+          				</configuration>
+        			</execution>
+      			</executions>
+    		</plugin>
+		</plugins>
+	</build>
+	<!-- <distributionManagement>
+		<site>
+			<id>odfdom</id>
+			<name>ODFDOM Java Toolkit Project</name>
+			<url>dav:https://odftoolkit.org/website/odfdom/${project.version}/codegeneration/schema2template</url>
+		</site>
+	</distributionManagement> -->
+	<reporting>
+		<plugins>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.7</version>
+				<configuration>
+					<doctitle>Schema2template</doctitle>
+					<minmemory>512m</minmemory>
+					<maxmemory>1024m</maxmemory>
+					<links>
+						<link>http://download.oracle.com/javase/6/docs/api/</link>
+					</links>
+					<splitindex>true</splitindex>
+					<windowtitle>Schema2template v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
+				</configuration>
+			</plugin>
+
+			<!-- Code Coverage Testing generated by Cobertura -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>cobertura-maven-plugin</artifactId>
+				<version>2.4</version>
+				<configuration>
+					<instrumentation>
+						<excludes>
+							<exclude>org/odftoolkit/**/*Test.class</exclude>
+						</excludes>
+					</instrumentation>
+				</configuration>
+			</plugin>
+		</plugins>
+	</reporting>
+
+	<!-- More Project Information -->
+	<name>XML Schema to Template Mapping Tool: Library</name>
+	<description>XML Schema to Template Mapping Tool: Library</description>
+	<organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+</project>
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/OutputFileListEntry.java b/trunk/generator/schema2template/src/main/java/schema2template/OutputFileListEntry.java
new file mode 100644
index 0000000..b769b1b
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/OutputFileListEntry.java
@@ -0,0 +1,107 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Belongs to FileListHandler. Represents one single entry in ouput filelist.
+ *
+ * @author Hans-Peter Schaal
+ */
+public class OutputFileListEntry {
+
+    /**
+     * Type of filelist entry (file or path)
+     */
+    public enum EntryType {
+        FILE, PATH;
+    }
+
+    private EntryType mType;
+    private Map<String, String> mAttributes;
+    private int mLinenumber;
+
+    /**
+     * @param type Use FilelistEntry.EntryType.[FILE|PATH]
+     */
+    public OutputFileListEntry(EntryType type) {
+        this(type, -1);
+    }
+
+    /**
+     * @param type Use FilelistEntry.EntryType.[FILE|PATH]
+     * @param lineNumber number in filelist.xml for logging / error output.
+     */
+    public OutputFileListEntry(EntryType type, int lineNumber) {
+        mType = type;
+        mAttributes = new HashMap<String, String>();
+        mLinenumber = lineNumber;
+    }
+
+    /**
+     * @return the entry type
+     */
+    public EntryType getType() {
+        return mType;
+    }
+
+    /**
+     * @return line number in filelist.xml for logging / error output.
+     */
+    public int getLineNumber() {
+        return mLinenumber;
+    }
+
+    /**
+     * @param key Attribute Key
+     * @return Attribute Value
+     */
+    public String getAttribute(String key) {
+        return mAttributes.get(key);
+    }
+
+    /**
+     * @return Attributes as map
+     */
+    public Map<String, String> getAttributes() {
+        return mAttributes;
+    }
+
+    /**
+     * @param key Attribute Key
+     * @param value Attribute Value. If null, delete the key.
+     */
+    public void setAttribute(String key, String value) {
+        if (key == null) {
+            return;
+        }
+        if (value == null) {
+            mAttributes.remove(key);
+        }
+        else {
+            mAttributes.put(key, value);
+        }
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/OutputFileListHandler.java b/trunk/generator/schema2template/src/main/java/schema2template/OutputFileListHandler.java
new file mode 100644
index 0000000..a20baae
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/OutputFileListHandler.java
@@ -0,0 +1,112 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * If a template should be used multiple times (e.g. for every element of the schema),
+ * For every file we create a line will be created.
+ * This class parses this list of the output files to be created.</code>
+ *
+ */
+public class OutputFileListHandler extends DefaultHandler {
+
+    List<OutputFileListEntry> mFilelist;
+    boolean mOpenFlTag = false;
+    boolean mOpenFileTag = false;
+    boolean mOpenPathTag = false;
+    Locator mLocator;
+
+    OutputFileListHandler(List<OutputFileListEntry> fl) {
+        mFilelist = fl;
+    }
+
+	/** With the DocumentLocator line numbers will be received during errors */
+    @Override
+    public void setDocumentLocator(Locator locator) {
+        mLocator = locator;
+    }
+
+    @Override
+    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+        if (qName.equals("filelist") && !mOpenFlTag) {
+            mOpenFlTag = true;
+            return;
+        }
+        if (qName.equals("file") && mOpenFlTag && !mOpenFileTag && !mOpenPathTag) {
+            mOpenFileTag = true;
+            OutputFileListEntry entry = new OutputFileListEntry(OutputFileListEntry.EntryType.FILE, mLocator.getLineNumber());
+            String mandatoryPath = attributes.getValue("path");
+            if (mandatoryPath == null) throw new SAXException("Mandatory attribute path is missing for file element in line " + mLocator.getLineNumber() + ".");
+            entry.setAttribute("path", mandatoryPath);
+            entry.setAttribute("context", attributes.getValue("context"));
+            entry.setAttribute("param", attributes.getValue("param"));
+            entry.setAttribute("template", attributes.getValue("template"));
+            mFilelist.add(entry);
+            return;
+        }
+        if (qName.equals("path") && mOpenFlTag && !mOpenFileTag && !mOpenPathTag) {
+            mOpenPathTag = true;
+            OutputFileListEntry entry = new OutputFileListEntry(OutputFileListEntry.EntryType.PATH, mLocator.getLineNumber());
+            String mandatoryPath = attributes.getValue("path");
+            if (mandatoryPath == null) throw new SAXException("Mandatory attribute path is missing for path element in line " + mLocator.getLineNumber() + ".");
+            entry.setAttribute("path", mandatoryPath);
+            entry.setAttribute("path", mandatoryPath);
+            mFilelist.add(entry);
+            return;
+        }
+        throw new SAXException("Malformed filelist");
+    }
+
+    @Override
+    public void endElement(String uri, String localName, String qName) throws SAXException {
+        if (qName.equals("filelist") && mOpenFlTag && !mOpenFileTag && !mOpenPathTag) {
+            mOpenFlTag = false;
+            return;
+        }
+        if (qName.equals("file") && mOpenFlTag && mOpenFileTag && !mOpenPathTag) {
+            mOpenFileTag = false;
+            return;
+        }
+        if (qName.equals("path") && mOpenFlTag && mOpenPathTag && !mOpenFileTag) {
+            mOpenPathTag = false;
+            return;
+        }
+        throw new SAXException("Malformed filelist");
+    }
+
+    public static List<OutputFileListEntry> readFileListFile(File flf) throws Exception {
+        SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
+        List<OutputFileListEntry> retval = new ArrayList<OutputFileListEntry>();
+        parser.parse(flf, new OutputFileListHandler(retval));
+        return retval;
+    }
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfConfigFileHandler.java b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfConfigFileHandler.java
new file mode 100644
index 0000000..a337e1f
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfConfigFileHandler.java
@@ -0,0 +1,222 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Often Process the custom configuration data .xml
+ * Liest nur die config.xml
+ * Soll man die Konfiguration in einer behalten, oder aufsplitten!
+ * Java speczifische + anderes aufteilen
+ * Handler für existierende config.xml
+ */
+class OdfConfigFileHandler extends DefaultHandler {
+
+    private boolean inConfig = false;
+    private boolean inElements = false;
+    private boolean inElement = false;
+    private boolean inDatatypes = false;
+    private boolean inData = false;
+    private boolean inAttributes = false;
+    private boolean inAttribute = false;
+    private Locator mLocator;
+    private Map<String, String> mElementBaseNames;
+    private Map<String, List<String>> mElementStyleFamilies;
+    private Set<String> mProcessedElements;
+    private Map<String, String[]> mDatatypeValueConversion; // Datatype -> {value-type, conversion-classname}
+    private Map<String, OdfModel.AttributeDefaults> mAttributeDefaultMap;     // Attributename -> {elementname or null, defaultvalue}
+    private Set<String> mProcessedDatatypes;
+
+    public OdfConfigFileHandler(Map<String, String> elementBaseNames, Map<String, OdfModel.AttributeDefaults> attributeDefaultMap,
+            Map<String, List<String>> elementStyleFamilies, Map<String, String[]> datatypeValueConversion) {
+        mElementBaseNames = elementBaseNames;
+        mAttributeDefaultMap = attributeDefaultMap;
+        mDatatypeValueConversion = datatypeValueConversion;
+        mElementStyleFamilies = elementStyleFamilies;
+        mProcessedElements = new HashSet<String>();
+        mProcessedDatatypes = new HashSet<String>();
+    }
+
+    private void createElementConfig(Attributes attrs) throws SAXException {
+        String name = attrs.getValue("name");
+        if (name == null) {
+            throw new SAXException("Invalid element line " + mLocator.getLineNumber());
+        }
+        if (mProcessedElements.contains(name)) {
+            throw new SAXException("Multiple definition of element in line " + mLocator.getLineNumber());
+        }
+        mProcessedElements.add(name);
+        String base = attrs.getValue("base");
+        if (base != null && base.length() > 0) {
+            mElementBaseNames.put(name, base);
+        }
+        String commaSeparatedStyleFamilies = attrs.getValue("family");
+        if (commaSeparatedStyleFamilies != null) {
+            StringTokenizer tok = new StringTokenizer(commaSeparatedStyleFamilies, ",");
+            List<String> families = new ArrayList<String>();
+            while (tok.hasMoreElements()) {
+                String family = tok.nextToken();
+                if (family.length() > 0) {
+                    families.add(family);
+                }
+            }
+            if (families.size() > 0) {
+                mElementStyleFamilies.put(name, families);
+            }
+        }
+    }
+
+    private void createDatatypeConfig(Attributes attrs) throws SAXException {
+        String name = attrs.getValue("name");
+        if (name == null) {
+            throw new SAXException("Invalid datatype line " + mLocator.getLineNumber());
+        }
+        if (mProcessedDatatypes.contains(name)) {
+            throw new SAXException("Multiple definition of datatype in line " + mLocator.getLineNumber());
+        }
+        mProcessedDatatypes.add(name);
+        String[] tuple = new String[2];
+        tuple[0] = attrs.getValue("value-type");
+        tuple[1] = attrs.getValue("conversion-type");
+        mDatatypeValueConversion.put(name, tuple);
+    }
+
+    private void createAttributeConfig(Attributes attrs) throws SAXException {
+        String name = attrs.getValue("name");
+        if (name == null) {
+            throw new SAXException("Invalid attribute line " + mLocator.getLineNumber());
+        }
+
+        String elementname = attrs.getValue("element");
+        String defaultvalue = attrs.getValue("defaultValue");
+        OdfModel.AttributeDefaults defaults = mAttributeDefaultMap.get(name);
+        if (defaults == null) {
+            defaults = new OdfModel.AttributeDefaults();
+            mAttributeDefaultMap.put(name, defaults);
+        }
+        defaults.addDefault(elementname, defaultvalue);
+    }
+
+    @Override
+    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+        if (qName.equals("config") && !inConfig) {
+            inConfig = true;
+            return;
+        }
+        if (qName.equals("elements") && inConfig && !inElements) {
+            inElements = true;
+            return;
+        }
+        if (qName.equals("element") && inElements && !inElement) {
+            inElement = true;
+            createElementConfig(attributes);
+            return;
+        }
+        if (qName.equals("attributes") && inConfig && !inAttributes) {
+            inAttributes = true;
+            return;
+        }
+        if (qName.equals("attribute") && inAttributes && !inAttribute) {
+            inAttribute = true;
+            createAttributeConfig(attributes);
+            return;
+        }
+        if (qName.equals("data-types") && inConfig && !inDatatypes) {
+            inDatatypes = true;
+            return;
+        }
+        if (qName.equals("data") && inDatatypes && !inData) {
+            inData = true;
+            createDatatypeConfig(attributes);
+            return;
+        }
+
+        throw new SAXException("Malformed config.xml in line " + mLocator.getLineNumber());
+    }
+
+    @Override
+    public void endElement(String uri, String localName, String qName) throws SAXException {
+        if (qName.equals("config") && inConfig) {
+            inConfig = false;
+            return;
+        }
+        if (qName.equals("elements") && inElements) {
+            inElements = false;
+            return;
+        }
+        if (qName.equals("element") && inElement) {
+            inElement = false;
+            return;
+        }
+        if (qName.equals("attributes") && inAttributes) {
+            inAttributes = false;
+            return;
+        }
+        if (qName.equals("attribute") && inAttribute) {
+            inAttribute = false;
+            return;
+        }
+        if (qName.equals("data-types") && inDatatypes) {
+            inDatatypes = false;
+            return;
+        }
+        if (qName.equals("data") && inData) {
+            inData = false;
+            return;
+        }
+
+        throw new SAXException("Malformed config.xml in line " + mLocator.getLineNumber());
+    }
+
+    @Override
+    public void setDocumentLocator(Locator locator) {
+        mLocator = locator;
+    }
+
+    /**
+     * Read config.xml. Input Convention: Input empty Maps, Maps will be filled.
+     *
+     * @param cf Config file
+     */
+    public static void readConfigFile(File cf, Map<String, String> elementBaseNames, 
+            Map<String, OdfModel.AttributeDefaults> attributeDefaults, Map<String, List<String>> elementStyleFamilies,
+            Map<String, String[]> datatypeValueConversion) throws Exception {
+
+        SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
+        parser.parse(cf, new OdfConfigFileHandler(elementBaseNames, attributeDefaults, elementStyleFamilies, datatypeValueConversion));
+
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java
new file mode 100644
index 0000000..ea0accd
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfHelper.java
@@ -0,0 +1,361 @@
+/**
+ * **********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.util.List;
+import java.util.Properties;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.parsers.SAXParserFactory;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+
+import schema2template.OutputFileListEntry;
+import schema2template.OutputFileListHandler;
+import schema2template.model.XMLModel;
+
+import com.sun.msv.grammar.Expression;
+import com.sun.msv.reader.trex.ng.RELAXNGReader;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Three ODF examples in one:
+ *  1) Create an ODF Reference in HTMLl
+ *  2) Create Source Code
+ *  3) Create simple ODF Python source
+ *
+ */
+public class OdfHelper {
+
+	private static final Logger LOG = Logger.getLogger(OdfHelper.class.getName());
+	public static final Boolean DEBUG = Boolean.FALSE;
+	/** Expresses the amount of elements in ODF 1.1. There are some issues in the schema that have to be fixed before the full number can be returned by MSV:
+	Reference table-table-template is never used, therefore several elements are not taking into account::
+	"table:body"
+	"table:even-columns"
+	"table:even-rows"
+	"table:first-column"
+	"table:first-row"
+	"table:last-column"
+	"table:last-row"
+	"table:odd-columns"
+	"table:odd-rows"
+	"table:table-template"
+	NOTE: Ignoring the '*' there can be 525 elements parsed, but with fixed schema it should be 535. */
+	public static final int ODF11_ELEMENT_NUMBER = 525; //ToDo: 535 - by search/Replace using RNGSchema and tools, prior exchange <name> to element or attribute declaration
+	public static final int ODF12_ELEMENT_NUMBER = 598;
+	/** Expresses the amount of attributes in ODF 1.1. There are some issues in the schema that have to be fixed before the full number can be returned by MSV:
+	Following references are never used, therefore its attribute is not taking into account::
+	draw-glue-points-attlist	with "draw:escape-direction"
+	office-process-content		with "office:process-content" (DEPRECATED in ODF1.2 only on foreign elements)
+
+	Following attributes are member of the not referenced element "table:table-template":
+	"text:first-row-end-column"
+	"text:first-row-start-column"
+	"text:last-row-end-column"
+	"text:last-row-start-column"
+	"text:paragraph-style-name"
+
+	NOTE: Ignoring the '*' there can be 1162 elements parsed, but with fixed schema it should be 1169. */
+	public static final int ODF11_ATTRIBUTE_NUMBER = 1162; //ToDo: 1169 - by search/Replace using RNGSchema and tools, prior exchange <name> to element or attribute declaration
+	public static final int ODF12_ATTRIBUTE_NUMBER = 1300; //in RNG 1301 as there is one deprecated attribute on foreign elements not referenced (ie. @office:process-content)
+	private static String odfDomResourceDir;
+	private static String odfPkgResourceDir;
+	private static String odfPythonResourceDir;
+	private static String odfReferenceResourceDir;
+	private static String outputRoot;
+	public static final String INPUT_ROOT = "target" + File.separator + "odf-schemas";
+	public static final String TEST_REFERENCE_DIR = "target" + File.separator + "test-classes" + File.separator
+			+ "examples" + File.separator + "odf";
+	public static final String TEST_INPUT_ROOT = "target" + File.separator + "classes" + File.separator
+			+ "examples" + File.separator + "odf";
+	public static final String ODF10_RNG_FILE_NAME = "OpenDocument-strict-schema-v1.0-os.rng";
+	public static final String ODF11_RNG_FILE_NAME = "OpenDocument-strict-schema-v1.1.rng";
+	public static final String ODF12_RNG_FILE_NAME = "OpenDocument-v1.2-os-schema.rng";
+	public static final String ODF12_SIGNATURE_RNG_FILE_NAME = "OpenDocument-v1.2-os-dsig-schema.rng";
+	public static final String ODF12_MANIFEST_RNG_FILE_NAME = "OpenDocument-v1.2-os-manifest-schema.rng";
+	static String odf12RngFile;
+	static String odf12SignatureRngFile;
+	static String odf12ManifestRngFile;
+	static String odf11RngFile;
+	static String odf10RngFile;
+	private static String mConfigFile;
+	private static final String REFERENCE_OUTPUT_FILES_TEMPLATE = "dom-output-files.vm";
+	private static final String REFERENCE_OUTPUT_FILES = "target" + File.separator + "reference-output-files.xml";
+	private static final String PYTHON_OUTPUT_FILES_TEMPLATE = "dom-output-files.vm";
+	private static final String PYTHON_OUTPUT_FILES = "target" + File.separator + "python-output-files.xml";
+	private static final String DOM_OUTPUT_FILES_TEMPLATE = "dom-output-files.vm";
+	private static final String DOM_OUTPUT_FILES = "target" + File.separator + "dom-output-files.xml";
+	private static final String PKG_OUTPUT_FILES_TEMPLATE = "pkg-output-files.vm";
+	private static final String PKG_OUTPUT_FILES = "target" + File.separator + "pkg-output-files.xml";
+	private static XMLModel mOdf12SignatureSchemaModel;
+	private static XMLModel mOdf12ManifestSchemaModel;
+	private static XMLModel mOdf12SchemaModel;
+	private static XMLModel mOdf11SchemaModel;
+	private static OdfModel mOdfModel;
+	private static SourceCodeModel mJavaModel;
+	private static Expression mOdf12SignatureRoot;
+	private static Expression mOdf12ManifestRoot;
+	private static Expression mOdf12Root;
+	private static Expression mOdf11Root;
+
+	public OdfHelper(String domResourceRoot, String odf12SchemaFile, String odf11SchemaFile, String pkgResourceRoot, String odf12SignatureSchemaFile, String odf12ManifestSchemaFile, String targetRoot, String configFile) {
+		odfDomResourceDir = domResourceRoot;
+		odf12RngFile = odf12SchemaFile;
+		odf11RngFile = odf11SchemaFile;
+		odfPkgResourceDir = pkgResourceRoot;
+		odf12SignatureRngFile = odf12SignatureSchemaFile;
+		odf12ManifestRngFile = odf12ManifestSchemaFile;
+		outputRoot = targetRoot;
+		mConfigFile = configFile;
+	}
+
+	static {
+		odfDomResourceDir = TEST_INPUT_ROOT + File.separator + "odfdom-java" + File.separator + "dom";
+		odfPkgResourceDir = TEST_INPUT_ROOT + File.separator + "odfdom-java" + File.separator + "pkg";
+		odfPythonResourceDir = TEST_INPUT_ROOT + File.separator + "odfdom-python";
+		odfReferenceResourceDir = TEST_INPUT_ROOT + File.separator + "odf-reference";
+		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;
+		odf10RngFile = INPUT_ROOT + File.separator + ODF10_RNG_FILE_NAME;
+		outputRoot = "target";
+		mConfigFile = TEST_INPUT_ROOT + File.separator + "config.xml";
+	}
+
+	public void start() throws Exception {
+		LOG.info("Starting code generation:");
+		initialize();
+
+		// ODF 1.2 Code Generation
+		fillTemplates(odfDomResourceDir, mOdf12Root, DOM_OUTPUT_FILES_TEMPLATE, DOM_OUTPUT_FILES);
+		fillTemplates(odfPkgResourceDir, mOdf12SignatureRoot, PKG_OUTPUT_FILES_TEMPLATE, PKG_OUTPUT_FILES);
+		fillTemplates(odfPkgResourceDir, mOdf12ManifestRoot, PKG_OUTPUT_FILES_TEMPLATE, PKG_OUTPUT_FILES);
+	}
+
+	public static void main(String[] args) throws Exception {
+		LOG.info("Starting code generation:");
+		initialize();
+
+		// ODF 1.2 HTML Reference (yet without BNF nor images)
+		fillTemplates(odfReferenceResourceDir, mOdf12Root, REFERENCE_OUTPUT_FILES_TEMPLATE, REFERENCE_OUTPUT_FILES);
+		// ODF 1.2 Python (The generated Python source is from a former colleague and might not work any longer..)
+		fillTemplates(odfPythonResourceDir, mOdf12Root, PYTHON_OUTPUT_FILES_TEMPLATE, PYTHON_OUTPUT_FILES);
+
+		// ODF 1.2 Code Generation
+		fillTemplates(odfDomResourceDir, mOdf12Root, DOM_OUTPUT_FILES_TEMPLATE, DOM_OUTPUT_FILES);
+		fillTemplates(odfPkgResourceDir, mOdf12ManifestRoot, PKG_OUTPUT_FILES_TEMPLATE, PKG_OUTPUT_FILES);
+		fillTemplates(odfPkgResourceDir, mOdf12SignatureRoot, PKG_OUTPUT_FILES_TEMPLATE, PKG_OUTPUT_FILES);
+	}
+
+	private static void initialize() throws Exception {
+		LOG.info("Starting initilization..");
+		// calling MSV to parse the ODF 1.2 DSIG RelaxNG, returning a tree
+		mOdf12SignatureRoot = loadSchema(new File(odf12SignatureRngFile));
+		// calling MSV to parse the ODF 1.2 Manifest RelaxNG, returning a tree
+		mOdf12ManifestRoot = loadSchema(new File(odf12ManifestRngFile));
+		// calling MSV to parse the ODF 1.2 RelaxNG, returning a tree
+		mOdf12Root = loadSchema(new File(odf12RngFile));
+		// calling MSV to parse the ODF 1.1 RelaxNG, returning a tree
+		mOdf11Root = loadSchema(new File(odf11RngFile));
+
+		// Read config.xml 2DO WHAT IS ODFDOM GENERATOR CONFIG FILE
+		// Manual added Java specific info - Base class for inheritance
+		Map<String, String> elementToBaseNameMap = new HashMap<String, String>();
+		// Manual added ODF specific info - style family mapping
+		Map<String, List<String>> elementStyleFamiliesMap = new HashMap<String, List<String>>();
+		// 2DO - still existent? -- Manual added Java specific info - mapping ODF datatype to Java datatype  -> {odfValueType, javaConversionClassName}
+		Map<String, String[]> datatypeValueAndConversionMap = new HashMap<String, String[]>();
+		Map<String, OdfModel.AttributeDefaults> attributeDefaultMap = new HashMap<String, OdfModel.AttributeDefaults>();
+		OdfConfigFileHandler.readConfigFile(new File(mConfigFile), elementToBaseNameMap, attributeDefaultMap, elementStyleFamiliesMap, datatypeValueAndConversionMap);
+
+		mOdf12SignatureSchemaModel = new XMLModel(mOdf12SignatureRoot);
+		mOdf12ManifestSchemaModel = new XMLModel(mOdf12ManifestRoot);
+		mOdf12SchemaModel = new XMLModel(mOdf12Root);
+		mOdf11SchemaModel = new XMLModel(mOdf11Root);
+		mOdfModel = new OdfModel(elementStyleFamiliesMap, attributeDefaultMap);
+		// Needed for the base classes - common attributes are being moved into the base classes
+		mJavaModel = new SourceCodeModel(mOdf12SchemaModel, mOdf12SignatureSchemaModel, mOdf12ManifestSchemaModel, mOdfModel, elementToBaseNameMap, datatypeValueAndConversionMap);
+		LOG.info("Finished initilization..");
+	}
+
+	private static void fillTemplates(String sourceDir, Expression root, String outputRuleTemplate, String outputRuleFile) throws Exception {
+		// intialising template engine (ie. Velocity)
+		Properties props = new Properties();
+		props.setProperty("file.resource.loader.path", sourceDir);
+		VelocityEngine ve = new VelocityEngine(props);
+		ve.init();
+
+		// Create output-files.xml
+		createOutputFileList(ve, outputRuleTemplate, outputRuleFile);
+		LOG.info("output-files.xml created done.");
+
+		// Process output-files.xml, create output files
+		LOG.fine("Processing output files... ");
+		processFileList(ve, root, outputRuleFile);
+		LOG.fine("DONE.\n");
+	}
+
+	/**
+	 * Load and parse the ODF 1.0 Schema.
+	 *
+	 * @return MSV Expression Tree of ODF 1.0 RelaxNG schema (more specific: The
+	 * tree's MSV root expression)
+	 * @throws Exception
+	 */
+	public static Expression loadSchemaODF10() throws Exception {
+		return loadSchema(new File(odf10RngFile));
+	}
+
+	/**
+	 * Load and parse the ODF 1.1 Schema.
+	 *
+	 * @return MSV Expression Tree of ODF 1.1 RelaxNG schema (more specific: The
+	 * tree's MSV root expression)
+	 * @throws Exception
+	 */
+	public static Expression loadSchemaODF11() throws Exception {
+		return loadSchema(new File(odf11RngFile));
+	}
+
+	/**
+	 * Load and parse the ODF 1.2 Schema.
+	 *
+	 * @return MSV Expression Tree of ODF 1.2 RelaxNG schema (more specific: The
+	 * tree's MSV root expression)
+	 * @throws Exception
+	 */
+	public static Expression loadSchemaODF12() throws Exception {
+		return loadSchema(new File(odf12RngFile));
+	}
+
+	/**
+	 * Load and parse a Schema from File.
+	 *
+	 * @param rngFile
+	 * @return MSV Expression Tree (more specific: The tree's MSV root
+	 * expression)
+	 * @throws Exception
+	 */
+	public static Expression loadSchema(File rngFile) throws Exception {
+		SAXParserFactory factory = SAXParserFactory.newInstance();
+		factory.setNamespaceAware(true);
+		// Parsing the Schema with MSV
+		String absolutePath = rngFile.getAbsolutePath();
+		com.sun.msv.reader.util.IgnoreController ignoreController = new com.sun.msv.reader.util.IgnoreController();
+		Expression root = RELAXNGReader.parse(absolutePath, factory, ignoreController).getTopLevel();
+
+
+		if (root == null) {
+			throw new Exception("Schema could not be parsed.");
+		}
+		return root;
+	}
+
+	private static VelocityContext getContext(String contextStr, String param) {
+		VelocityContext context = new VelocityContext();
+		context.put("signaturemodel", mOdf12SignatureSchemaModel);
+		context.put("manifestmodel", mOdf12ManifestSchemaModel);
+		context.put("model", mOdf12SchemaModel);
+		context.put("oldmodel", mOdf11SchemaModel);
+		context.put("odfmodel", mOdfModel);
+		context.put("javamodel", mJavaModel);
+		context.put("context", contextStr);
+		context.put("param", param);
+		return context;
+	}
+
+	private static void createOutputFileList(VelocityEngine ve, String template, String output) throws Exception {
+		VelocityContext context = getContext(null, null);
+		File parentPatch = new File(output).getParentFile();
+		if (!parentPatch.exists()) {
+			parentPatch.mkdirs();
+		}
+		FileWriter listout = new FileWriter(new File(output));
+		String encoding = "utf-8";
+		ve.mergeTemplate(template, encoding, context, listout);
+		listout.close();
+	}
+
+	private static String generateFilename(String rawName) {
+		String retFilePath = null;
+		StringTokenizer toktok = new StringTokenizer(rawName.replaceAll(":", "_"), "/");
+		if (toktok.hasMoreTokens()) {
+			File retfile = null;
+			retfile = new File(toktok.nextToken());
+			while (toktok.hasMoreTokens()) {
+				retfile = new File(retfile, toktok.nextToken());
+			}
+			retFilePath = retfile.getPath();
+		}
+		return retFilePath;
+	}
+
+	private static void ensureParentFolders(File newFile) {
+		File parent = newFile.getParentFile();
+		if (parent != null && !parent.exists()) {
+			try {
+				parent.mkdirs();
+			} catch (Exception e) {
+				LOG.log(Level.WARNING, "Could not create parent directory {0}", parent.getAbsolutePath());
+			}
+		}
+	}
+
+	public static void processFileList(VelocityEngine ve, Expression root, String outputRuleFile) throws Exception {
+		File outputFiles = new File(outputRuleFile);
+		List<OutputFileListEntry> fl = OutputFileListHandler.readFileListFile(outputFiles);
+
+		for (OutputFileListEntry f : fl) {
+			switch (f.getType()) {
+				case PATH:
+					break;
+				case FILE:
+					LOG.log(Level.INFO, "Processing line{0}: Generating file {1}\n", new Object[]{f.getLineNumber(), generateFilename(f.getAttribute("path"))});
+					String odfContextStr = f.getAttribute("context");
+					String param = f.getAttribute("param");
+					VelocityContext context = getContext(odfContextStr, param);
+					if (context == null) {
+						throw new RuntimeException("Error in output-files.xml, line " + f.getLineNumber() + ": no or invalid odf-scope");
+					}
+
+					File out = new File(outputRoot + File.separator + generateFilename(f.getAttribute("path"))).getCanonicalFile();
+					ensureParentFolders(out);
+					FileWriter fileout = new FileWriter(out);
+					String encoding = "utf-8";
+
+					ve.mergeTemplate(f.getAttribute("template"), encoding, context, fileout);
+					fileout.close();
+					break;
+			}
+		}
+	}
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfModel.java b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfModel.java
new file mode 100644
index 0000000..6020083
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/OdfModel.java
@@ -0,0 +1,160 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import schema2template.model.QNamed;
+import schema2template.model.QNameValue;
+
+/**
+ * Model for ODF specific enhancements.
+ * For example, these might be style families used for ODF elements or attribute default values.
+ */
+public class OdfModel {
+
+    /**
+     * This inner class is not meant for use in templates.
+     */
+    static class AttributeDefaults {
+        private Map<String, String> elementDefault = new HashMap<String, String>();
+
+        public void addDefault(String defaultvalue) {
+            addDefault(null, defaultvalue);
+        }
+
+        public void addDefault(String elementname, String defaultvalue) {
+            elementDefault.put(elementname, defaultvalue);
+        }
+
+        public String getDefault() {
+            return getDefault(null);
+        }
+
+        public String getDefault(String elementname) {
+            String retval = elementDefault.get(elementname);
+            // Fallback: Look for global default
+            if (retval == null && elementname != null) {
+                retval = elementDefault.get(null);
+            }
+            return retval;
+        }
+        
+        public Set<String> getDefaults() {
+        	Set<String> defaults=new HashSet<String>();
+        	for(String elementname : elementDefault.keySet()){
+        		String retval = elementDefault.get(elementname);
+        		if(retval!=null){
+        			defaults.add(retval);
+        		}
+        	}
+            return defaults;
+        }
+    }
+
+    Map<String, List<String>> mNameToFamiliesMap;
+    Map<String, AttributeDefaults> mNameToDefaultsMap;
+
+    public OdfModel(Map<String, List<String>> nameToFamiliesMap, Map<String, AttributeDefaults> attributeDefaults) {
+        mNameToFamiliesMap = nameToFamiliesMap;
+        mNameToDefaultsMap = attributeDefaults;
+    }
+
+    /**
+     * Determine whether an ELEMENT is stylable (a.k.a. has at least one
+     * defined style family). Note: All Definitions sharing the same name share
+     * the same style families.
+     *
+     * @param element Element
+     * @return whether there are style families defined for this Definition
+     */
+    public boolean isStylable(QNamed element) {
+        return mNameToFamiliesMap.containsKey(element.getQName());
+    }
+
+    /**
+     * Get defined style families for this ELEMENT Definition. Note: All Definitions sharing
+     * the same name share the same style families.
+     * 
+     * @param element Element
+     * @return list of style family names
+     */
+    public List<QNamed> getStyleFamilies(QNamed element) {
+        List<QNamed> retval = new ArrayList<QNamed>();
+        for (String family : mNameToFamiliesMap.get(element.getQName())) {
+            retval.add(new QNameValue(family)); 
+        }
+        return retval;
+    }
+
+    /**
+     * Get all defined style family names
+     *
+     * @return SortedSet of Style Family Names
+     */
+    public SortedSet<QNamed> getStyleFamilies() {
+        Iterator<List<String>> iter = mNameToFamiliesMap.values().iterator();
+        List<QNamed> families = new ArrayList<QNamed>();
+        while (iter.hasNext()) {
+            for (String family : iter.next()) {
+                families.add(new QNameValue(family));
+            }
+        }
+        return new TreeSet<QNamed>(families);
+    }
+
+    /**
+     * Get default value of ODF attribute, depending on the ODF element which contains this attribute.
+     *
+     * @param attribute Attribute
+     * @param parentelement Parent element
+     * @return Default value for attribute of parent
+     */
+    public String getDefaultAttributeValue(QNamed attribute, QNamed parentelement) {
+        AttributeDefaults defaults = mNameToDefaultsMap.get(attribute.getQName());
+        if (defaults == null) {
+            return null;
+        }
+        return defaults.getDefault(parentelement.getQName());
+    }
+    
+    /**
+     * Get default values of ODF attribute.
+     *
+     * @param attribute Attribute
+     * @return Default values for attribute
+     */
+    public Set<String> getDefaultAttributeValues(QNamed attribute) {
+        AttributeDefaults defaults = mNameToDefaultsMap.get(attribute.getQName());
+        if (defaults == null) {
+            return null;
+        }
+        return defaults.getDefaults();
+    }
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/example/odf/PathPrinter.java b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/PathPrinter.java
new file mode 100644
index 0000000..f12c109
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/PathPrinter.java
@@ -0,0 +1,199 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import com.sun.msv.grammar.Expression;
+import com.sun.msv.grammar.NameClassAndExpression;
+import com.sun.msv.reader.trex.ng.RELAXNGReader;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import javax.xml.parsers.SAXParserFactory;
+import schema2template.model.PuzzlePiece;
+import schema2template.model.PuzzlePieceSet;
+import schema2template.model.MSVExpressionInformation;
+import schema2template.model.MSVExpressionType;
+import schema2template.model.MSVExpressionVisitorType;
+import schema2template.model.MSVNameClassVisitorList;
+
+/**
+ * ODF example class to print the MSV expressions in between a PuzzlePiece parent element
+ * and a direct PuzzlePiece child element.
+ *
+ * <p>Example of a direct child: table:table -&gt; table:table-row<br />
+ * Example of a non-direct child: table:table -&gt; table:table-cell</p>
+ *
+ * <p>Directly change the string constants EXAMPLE_PARENT and EXAMPLE_CHILD in
+ * the source code to set parent and child element.</p>
+ */
+public class PathPrinter {
+
+    // CHANGE THIS...
+    public final static String EXAMPLE_PARENT = "table:table";
+    public final static String EXAMPLE_CHILD = "table:table-row";
+    PuzzlePiece mParent;
+    MSVExpressionInformation mInfo;
+    public final static String ODF_RESOURCE_DIR = "target" + File.separator + "classes"
+	+ File.separator + "examples" + File.separator + "odf";
+
+    PathPrinter(PuzzlePiece parent) {
+        mParent = parent;
+        mInfo = new MSVExpressionInformation(parent.getExpression());
+    }
+
+    /**
+     * Map Name to PuzzlePiece(s).
+     */
+    static Map<String, SortedSet<PuzzlePiece>> createDefinitionMap(Set<PuzzlePiece> definitions) {
+        Map<String, SortedSet<PuzzlePiece>> retval = new HashMap<String, SortedSet<PuzzlePiece>>();
+        Iterator<PuzzlePiece> iter = definitions.iterator();
+        while (iter.hasNext()) {
+            PuzzlePiece def = iter.next();
+            SortedSet<PuzzlePiece> multiples = retval.get(def.getQName());
+            if (multiples == null) {
+                multiples = new TreeSet<PuzzlePiece>();
+                retval.put(def.getQName(), multiples);
+            }
+            multiples.add(def);
+        }
+        return retval;
+    }
+
+    List<String> printPathsToChild(PuzzlePiece child) {
+        MSVExpressionVisitorType typeVisitor = new MSVExpressionVisitorType();
+        List<List<Expression>> paths = null;
+        if (child != null) {
+            paths = mInfo.getPathsContaining(child.getExpression());
+        } else {
+            paths = mInfo.getPathsContaining(mParent.getExpression());
+        }
+        if (paths == null) {
+            return null;
+        }
+        MSVNameClassVisitorList nameVisitor = new MSVNameClassVisitorList();
+
+        List<String> retval = new ArrayList<String>(paths.size());
+        for (List<Expression> path : paths) {
+            boolean first = true;
+            String wayString = "";
+            for (Expression step : path) {
+                MSVExpressionType type = (MSVExpressionType) step.visit(typeVisitor);
+                if (type == MSVExpressionType.REF) {
+                    continue;
+                }
+                String name = type.toString();
+                String qname = "";
+				// NameClassAndExpression is an MSV class for abstract named expressions (ie. attributes and elements)
+                if (step instanceof NameClassAndExpression) {
+                    List<String> names = (List<String>) ((NameClassAndExpression) step).getNameClass().visit(nameVisitor);
+                    if (names != null) {
+                        boolean firstQ = true;
+                        for (String singleQ : names) {
+                            if (firstQ) {
+                                firstQ = false;
+                                qname = singleQ;
+                            } else {
+                                qname += "," + singleQ;
+                            }
+                        }
+                    }
+                }
+                if (first) {
+                    first = false;
+                    wayString = name + " " + qname;
+                } else {
+                    if (step instanceof NameClassAndExpression) {
+                        name = name + " " + qname;
+                    }
+                    wayString = wayString.concat(" -> " + name);
+                }
+            }
+            retval.add(wayString);
+        }
+        return retval;
+    }
+
+    private static Expression parseOdfSchema(File rngFile) throws Exception {
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+        factory.setNamespaceAware(true);
+
+        Expression root = RELAXNGReader.parse(
+                rngFile.getAbsolutePath(),
+                factory,
+                new com.sun.msv.reader.util.IgnoreController()).getTopLevel();
+
+        if (root == null) {
+            throw new Exception("Schema could not be parsed.");
+        }
+        return root;
+    }
+
+    public static void main(String[] args) throws Exception {
+        Expression root = parseOdfSchema(new File(ODF_RESOURCE_DIR + File.separator + OdfHelper.ODF12_RNG_FILE_NAME));
+        PuzzlePieceSet elements = new PuzzlePieceSet();
+        PuzzlePieceSet attributes = new PuzzlePieceSet();
+        PuzzlePiece.extractPuzzlePieces(root, elements, attributes);
+        Map<String, SortedSet<PuzzlePiece>> nameToDefinition = createDefinitionMap(new TreeSet<PuzzlePiece>(elements));
+
+        System.out.println("Print all paths from parent element (e.g. \"text:p\") to direct child element (e.g. \"text:span\")");
+
+        SortedSet<PuzzlePiece> pieces = nameToDefinition.get(EXAMPLE_PARENT);
+
+        if (pieces == null) {
+            System.out.println("No parent element found by the given name: " + EXAMPLE_PARENT);
+        }
+
+        PuzzlePiece parent = pieces.first();
+
+        pieces = nameToDefinition.get(EXAMPLE_CHILD);
+
+        if (pieces == null) {
+            System.out.println("No child element found by the given name: " + EXAMPLE_CHILD);
+        }
+
+        PuzzlePiece child = pieces.first();
+
+        if (pieces.size() > 1) {
+            System.out.println("There were more than one element by this name. Dropped all instances but one.");
+        }
+
+        System.out.println();
+        System.out.println("PATHS from " + parent.getQName() + " to " + child.getQName() + ": ");
+        System.out.println("---------------------------------------------------------");
+
+        List<String> paths = new PathPrinter(parent).printPathsToChild(child);
+
+        if (paths == null) {
+            System.out.println("No Path found.");
+        } else {
+            for (String s : paths) {
+                System.out.println(s);
+            }
+        }
+    }
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/example/odf/SourceCodeBaseClass.java b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/SourceCodeBaseClass.java
new file mode 100644
index 0000000..da31323
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/SourceCodeBaseClass.java
@@ -0,0 +1,122 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+import schema2template.model.PuzzlePiece;
+import schema2template.model.PuzzlePieceSet;
+import schema2template.model.QNamed;
+import schema2template.model.XMLModel;
+
+/**
+ * Encapsulates the name of the java base class
+ *
+ * <p>Convention: Unique key is the name of the baseclass. So name is used for compareTo(o), equals(o) and hashCode().</p>
+ */
+public class SourceCodeBaseClass implements Comparable<SourceCodeBaseClass>, QNamed {
+
+    private SortedSet<PuzzlePiece> mSubelements;
+    private String mBasename;
+    private OdfModel mOdfmodel;
+
+    protected SourceCodeBaseClass(OdfModel odfmodel, String basename, SortedSet<PuzzlePiece> subelements) {
+        mSubelements = subelements;
+        mBasename = basename;
+        mOdfmodel = odfmodel;
+    }
+
+    public int compareTo(SourceCodeBaseClass o) {
+        return mBasename.compareTo(o.mBasename);
+    }
+
+    public boolean equals(Object o) {
+        return (o instanceof SourceCodeBaseClass && ((SourceCodeBaseClass) o).mBasename.equals(mBasename));
+    }
+
+    public int hashCode() {
+        return mBasename.hashCode();
+    }
+
+    public String getLocalName() {
+        return XMLModel.extractLocalname(mBasename);
+    }
+
+    public String getQName() {
+        return mBasename;
+    }
+
+    public String getNamespace() {
+        return XMLModel.extractNamespace(mBasename);
+    }
+
+    public String toString() {
+        return getQName();
+    }
+
+    /**
+     * Returns the element Definitions which are subclassing this JavaBaseClass
+     *
+     * @return subclasses
+     */
+    public PuzzlePieceSet getElements() {
+        return new PuzzlePieceSet(mSubelements);
+    }
+
+    /**
+     * Returns the attribute Definitions which are shared by all subclasses of this JavaBaseClass
+     *
+     * @return attributes
+     */
+    public PuzzlePieceSet getBaseAttributes() {
+        SortedSet<PuzzlePiece> attributes = new TreeSet<PuzzlePiece>(mSubelements.last().getAttributes());
+        for (PuzzlePiece subelement : mSubelements.headSet(mSubelements.last())) {
+            attributes.retainAll(subelement.getAttributes());
+        }
+        return new PuzzlePieceSet(attributes);
+    }
+
+    /**
+     * Determines whether all subclasses of this JavaBaseClass are stylable or not stylable.
+     *
+     * @return whether all subclasses are stylable (true) or none (false).
+     * @throws RuntimeException if some subclasses are stylable and some are not
+     */
+    public boolean isStylable() {
+        boolean notStylable = false;
+        boolean stylable = false;
+        for (PuzzlePiece def : getElements()) {
+            if (mOdfmodel.isStylable(def)) {
+                stylable = true;
+            } else {
+                notStylable = true;
+            }
+        }
+        if (stylable && !notStylable) {
+            return true;
+        }
+        if (notStylable && !stylable) {
+            return false;
+        }
+        throw new RuntimeException("Base Class " + getQName() + " used for stylable AND not stylable elements. This is not possible.");
+    }
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/example/odf/SourceCodeModel.java b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/SourceCodeModel.java
new file mode 100644
index 0000000..d5461a3
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/example/odf/SourceCodeModel.java
@@ -0,0 +1,226 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import schema2template.model.PuzzleComponent;
+import schema2template.model.PuzzlePiece;
+import schema2template.model.QNamed;
+import schema2template.model.QNamedPuzzleComponent;
+import schema2template.model.XMLModel;
+
+/**
+ * Model for Java specific enhancements like common base classes for elements and Java valuetypes for
+ * valuetypes used in schema.
+ */
+public class SourceCodeModel {
+    
+	 Map<String, SourceCodeBaseClass> mElementBaseMap;
+	    SortedSet<SourceCodeBaseClass> mBaseclasses;
+	    Map<String, SourceCodeBaseClass> mBasenameToBaseclass;
+	    Map<String, String[]> mDatatypeValueAndConversionMap;  // datatype -> {value-type, conversion-classname}
+
+	    /**
+	     * Construct SourceCodeModel. Not meant for template usage.
+	     *
+	     * @param model the XMLModel
+	     * @param signatureModel the signature XMLModel
+	     * @param manifestModel the manifest XMLModel
+	     * @param odfmodel the OdfModel
+	     * @param elementnameBasenameMap the mapping from element names to source code base class names
+	     * @param datatypeValueAndConversionMap the mapping from schema datatype to {source code types, name of conversion class}
+	     */
+	    public SourceCodeModel(XMLModel model, XMLModel signatureModel, XMLModel manifestModel, OdfModel odfmodel, Map<String, String> elementnameBasenameMap, Map<String, String[]> datatypeValueAndConversionMap) {
+	        mDatatypeValueAndConversionMap = datatypeValueAndConversionMap;
+
+	        // Intermediate Step -> get all basenames
+	        SortedSet<String> basenames = new TreeSet<String>(elementnameBasenameMap.values());
+
+	        // Intermediate Step -> get all subelement Definitions for each basename
+	        Map<String, SortedSet<PuzzlePiece>> basenameElementsMap = new HashMap<String, SortedSet<PuzzlePiece>>(basenames.size());
+	        for (String elementname : elementnameBasenameMap.keySet()) {
+	            String basename = elementnameBasenameMap.get(elementname);
+	            SortedSet<PuzzlePiece> elements = basenameElementsMap.get(basename);
+	            if (elements == null) {
+	                elements = new TreeSet<PuzzlePiece>();
+	                basenameElementsMap.put(basename, elements);
+	            }
+	            QNamedPuzzleComponent subelement = model.getElement(elementname);
+	            if (subelement != null) {
+	                if (subelement instanceof Collection) {
+	                    elements.addAll((Collection) subelement);
+	                }
+	                else {
+	                    elements.add((PuzzlePiece) subelement);
+	                }
+	            }
+	            else {
+	                System.err.println("Warning: Baseclass definition for unknown element " + elementname);
+	            }
+	        }
+
+	        // Generate all baseclasses (additional intermediate step: register them)
+	        mBasenameToBaseclass = new HashMap<String, SourceCodeBaseClass>(basenames.size());
+	        mBaseclasses = new TreeSet<SourceCodeBaseClass>();
+	        for (String basename : basenames) {
+	            SourceCodeBaseClass javabaseclass = new SourceCodeBaseClass(odfmodel, basename, basenameElementsMap.get(basename));
+	            mBaseclasses.add(javabaseclass);
+	            mBasenameToBaseclass.put(basename, javabaseclass);
+	        }
+
+	        // Generate a map from element tag name to baseclasses
+	        mElementBaseMap = new HashMap<String, SourceCodeBaseClass>(elementnameBasenameMap.size());
+	        for (String elementname : elementnameBasenameMap.keySet()) {
+	            String basename = elementnameBasenameMap.get(elementname);
+	            SourceCodeBaseClass baseclass = mBasenameToBaseclass.get(basename);
+	            mElementBaseMap.put(elementname, baseclass);
+	        }
+	    }
+
+	    /**
+	     * Use in templates: Get baseclass of one element
+	     *
+	     * @param subelement element
+	     * @return baseclass
+	     */
+	    public SourceCodeBaseClass getBaseclassOf(QNamed subelement) {
+	        return mElementBaseMap.get(subelement.getQName());
+	    }
+
+	    /**
+	     * Use in templates: Get all baseclasses
+	     * @return all baseclasses
+	     */
+	    public SortedSet<SourceCodeBaseClass> getBaseclasses() {
+	        return mBaseclasses;
+	    }
+
+	    /**
+	     * Use in templates: Get baseclass by name
+	     * @param basename name of baseclass
+	     * @return baseclass object
+	     */
+	    public SourceCodeBaseClass getBaseclass(String basename) {
+	        return mBasenameToBaseclass.get(basename);
+	    }
+
+	    /**
+	     * Use in templates: Get baseclass by name
+	     *
+	     * @param base name of baseclass
+	     * @return baseclass object
+	     */
+	    public SourceCodeBaseClass getBaseclass(QNamed base) {
+	        return getBaseclass(base.getQName());
+	    }
+
+	    /**
+	     * Use in templates: Get Source code value type for datatype used in schema
+	     *
+	     * @param datatype
+	     * @return source code value type
+	     */
+	    public String getValuetype(QNamed datatype) {
+	        String datatypename = datatype.getQName();
+	        String[] tuple = mDatatypeValueAndConversionMap.get(datatypename);
+	        if (tuple == null) {
+	            return "";
+	        }
+	        String retval = tuple[0];
+	        return (retval == null) ? "" : retval;
+	    }
+
+	    /**
+	     * Use in templates: Get source code value types for datatypes used in schema
+	     *
+	     * @param datatypes Schema datatypes
+	     * @return the corresponding source code datatypes
+	     */
+	    public SortedSet<String> getValuetypes(PuzzleComponent datatypes) {
+	        SortedSet<String> retval = new TreeSet<String>();
+	        for (PuzzlePiece datatype : datatypes.getCollection()) {
+	            String datatypename = datatype.getQName();
+	            String[] tuple = mDatatypeValueAndConversionMap.get(datatypename);
+	            if (tuple != null) {
+	                String valuetype = tuple[0];
+	                if (valuetype != null) {
+	                    retval.add(valuetype);
+	                }
+	            }
+	        }
+	        return retval;
+	    }
+
+	    /**
+	     * Use in templates: Translate Java object to simple Java datatype
+	     *
+	     * @param objectType like "Boolean"
+	     * @return simpleType like "boolean"
+	     */
+	    public String getPrimitiveType(String objectType) {
+	        if (objectType.equals("Boolean")) {
+	            return "boolean";
+	        }
+	        if (objectType.equals("Integer")) {
+	            return "int";
+	        }
+	        if (objectType.equals("Double")) {
+	            return "double";
+	        }
+	        return null;
+	    }
+
+	    /**
+	     * Use in templates: Get Java conversion class for datatype used in schema.
+	     *
+	     * @param datatype Source code datatype
+	     * @return name of source code conversion class for this datatype
+	     */
+	    public String getConversiontype(QNamed datatype) {
+	        String datatypename = datatype.getQName();
+	        String[] tuple = mDatatypeValueAndConversionMap.get(datatypename);
+	        if (tuple == null) {
+	            return "";
+	        }
+	        String retval = tuple[1];
+	        return (retval == null) ? "" : retval;
+	    }
+	    
+	    /**
+	     * Use in templates: Get Java conversion class for datatype used in schema.
+	     *
+	     * @param datatypename Source code datatypename
+	     * @return name of source code conversion class for this datatype
+	     */
+	    public String getConversiontype(String datatypename) {
+	        String[] tuple = mDatatypeValueAndConversionMap.get(datatypename);
+	        if (tuple == null) {
+	            return "";
+	        }
+	        String retval = tuple[1];
+	        return (retval == null) ? "" : retval;
+	    }
+}
\ No newline at end of file
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionInformation.java b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionInformation.java
new file mode 100644
index 0000000..6959b8c
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionInformation.java
@@ -0,0 +1,382 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import com.sun.msv.grammar.AttributeExp;
+import com.sun.msv.grammar.ChoiceExp;
+import com.sun.msv.grammar.ElementExp;
+import com.sun.msv.grammar.Expression;
+import com.sun.msv.grammar.NameClassAndExpression;
+import com.sun.msv.grammar.OneOrMoreExp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Gather information from one MSV expression like:
+ * <ul>
+ * <li>which attributes are mandatory<li>
+ * <li>which child elements are singletons</li>
+ * <li>can it have text content</li>
+ * </ul>
+ */
+public class MSVExpressionInformation {
+/*
+ * For each Named Expression (i.e. of Type Element or Attribute) we build a path
+ *    thisNamedExpression -> Expression subEx -> Expression subsubEx -> ... -> childNamedExpression
+ * All Expressions (thisNamedExpression, childNamedExpression and all in between) can be members of
+ * multiple paths. Therefore we create a Map Expression->List<path>.
+ *
+ * If we query this Map for thisNamedExpression, we get all paths. If we query this Map for
+ * childNamedExpression, we get all paths from this to the child. To display groups containing
+ * one child, we have to query the group Expression to get all other elements of this group.
+ */
+
+    private static final MSVExpressionVisitorChildren childVisitor = new MSVExpressionVisitorChildren();
+    private static final MSVExpressionVisitorType typeVisitor = new MSVExpressionVisitorType();
+    private Map<Expression, List<List<Expression>>> mContainedInPaths;
+    private Expression mExpression;
+    private boolean mCanHaveText = false;
+    // map child to its isSingleton property
+    private Set<Expression> mSingletonChildren = new HashSet<Expression>();
+    private Set<Expression> mMultipleChildren = new HashSet<Expression>();
+
+    public MSVExpressionInformation(Expression exp) {
+        mExpression = exp;
+        mContainedInPaths = new HashMap<Expression, List<List<Expression>>>();
+
+        // Builds paths to child elements and child attributes
+        List<List<Expression>> paths = new ArrayList<List<Expression>>();
+        List<Expression> start = new ArrayList<Expression>(1);
+        start.add(exp);
+        paths.add(start);
+        buildPaths(childVisitor, paths);
+
+        // Test whether an element can have text content
+        for (List<Expression> path : paths) {
+            if (((MSVExpressionType) path.get(path.size() - 1).visit(typeVisitor)) == MSVExpressionType.STRING) {
+                mCanHaveText = true;
+                break;
+            }
+        }
+
+        List<List<Expression>> pathsToChildren = getPathsToClass(paths, NameClassAndExpression.class);
+
+        for (List<Expression> path : pathsToChildren) {
+            for (Expression step : path) {
+                List<List<Expression>> pathsToStep = mContainedInPaths.get(step);
+                if (pathsToStep == null) {
+                    pathsToStep = new ArrayList<List<Expression>>(1);
+                    pathsToStep.add(path);
+                    mContainedInPaths.put(step, pathsToStep);
+                } else {
+                    if (!pathsToStep.contains(path)) {
+                        pathsToStep.add(path);
+                    }
+                }
+            }
+        }
+
+        registerChildrenMaxCardinalities(getPathsToClass(paths, ElementExp.class));
+    }
+
+    /*
+     * Helper method: for one parent element, set property isSingleton for all parent->child relationships
+     *
+     * @param waysToChildren
+     */
+    private void registerChildrenMaxCardinalities(List<List<Expression>> waysToChildren) {
+        Map<Expression, Boolean> multiples = new HashMap<Expression, Boolean>();        // Cardinality (the opposite of isSingleton): true=N, false=1
+        Map<Expression, List<Expression>> paths = new HashMap<Expression, List<Expression>>();
+
+        for (List<Expression> way : waysToChildren) {
+            Expression childexp = way.get(way.size()-1);
+
+            Boolean newCardinality = new Boolean(false);                        // Cardinality (the opposite of isSingleton): true=N, false=1
+            for (Expression step : way) {
+                if (step instanceof OneOrMoreExp) {
+                    newCardinality = new Boolean(true);
+                    break;
+                }
+            }
+
+            // is this a multiple of an already existing parent -> ... -> child path? (i.e. parent1==parent2 && child1==child2)
+            if (multiples.containsKey(childexp)) {
+
+                // so we have a parent -> ... -> child multiple. Read the max cardinality of the existing path.
+                Boolean existingCardinality = multiples.get(childexp);
+
+                // so we have a parent -> ... -> child multiple. Is there a common CHOICE element on both paths?
+                boolean commonChoice = false;
+
+                // find common CHOICE element in both paths BEFORE a ONEOREMORE. Example for pattern match:
+                //     <CHOICE>X,<ONEOREMORE>X</ONEOREMORE></CHOICE> -> one has 1, one has N
+                //     <CHOICE>X,<SEQUENCE>A,X,B</SEQUENCE></CHOICE> -> both have 1
+                // This restriction is needed because MSV does some optimization. (Example for no pattern match):
+                //     <CHOICE>empty, X</CHOICE><ONEOREMORE><CHOICE>empty, X</CHOICE></ONEOREMORE>
+                // MSV detects that this is two times the same choice and creates just one ChoiceExpression.
+                // But this is not what we understand as a common CHOICE -> It's a common element definition
+                // <OPTIONAL>X</OPTIONAL> == <CHOICE>empty, X</CHOICE>
+                Set<ChoiceExp> choices = new HashSet<ChoiceExp>();
+                for (Expression oldStep : paths.get(childexp)) {
+                    if (oldStep instanceof ChoiceExp) {
+                        choices.add((ChoiceExp) oldStep);
+                    }
+                    if (oldStep instanceof OneOrMoreExp) {
+                        break;
+                    }
+                }
+                for (Expression step : way) {
+                    if (step instanceof ChoiceExp) {
+                        if (choices.contains((ChoiceExp) step)) {
+                            commonChoice = true;
+                            break;
+                        }
+                    }
+                    if (step instanceof OneOrMoreExp) {
+                        break;
+                    }
+                }
+
+                // Valid case: Both have N
+                if (existingCardinality && newCardinality) {
+                    // Do nothing
+                }
+
+                // One has 1, the other N
+                if (!existingCardinality.equals(newCardinality)) {
+                    // A case which we cannot handle. You have a choice between a definition which allows only 1 occurence and another which allows N occurences
+                    if (commonChoice) {
+                        System.err.println("We have a CHOICE between one definition with N and one with 1 -> What does that mean? WE CANNOT HANDLE THIS)");
+                        System.exit(1);
+                    }
+                    // Valid case: One has 1, the other N, they don't share a common CHOICE -> Set N as the both defs are not exclusive (1 occurence + N occurences)
+                    else {
+                        multiples.put(childexp, new Boolean(true));
+                    }
+                }
+
+                if (!existingCardinality && !newCardinality) {
+                    // Valid case: Both have 1 and share a common CHOICE element
+                    if (commonChoice) {
+                        // Do nothing
+                    }
+                    // A case which we cannot handle. Both have 1:1 but do not share a common CHOICE element: 1:2 ??? ... 1:3 ???
+                    else {
+                        System.err.println("Already defined as 1, but two times without common choice. What does that mean? WE CANNOT HANDLE THIS!!!");
+                        System.exit(1);
+                    }
+                }
+            } else {
+                multiples.put(childexp, newCardinality);
+                paths.put(childexp, way);
+            }
+            setParentChildSingleton(childexp, !newCardinality);
+        }
+    }
+
+    /*
+     * Register whether is a child element is a singleton or not
+     *
+     * @param parent
+     * @param child
+     * @param singleton (true=singleton, false=can have multiple occurence)
+     */
+    private void setParentChildSingleton(Expression child, boolean singleton) {
+        if (singleton) {
+            mSingletonChildren.add(child);
+        }
+        else {
+            mMultipleChildren.add(child);
+        }
+    }
+
+    /**
+     * Returns all singleton child elements
+     *
+     * @return All child elements which can only occur one time
+     */
+    public Set<Expression> getSingletons() {
+        return mSingletonChildren;
+    }
+
+    /**
+     * Returns all child elements which are no singletons
+     *
+     * @return All child elements which can only occur one time
+     */
+    public Set<Expression> getMultiples() {
+        return mMultipleChildren;
+    }
+
+    /* Helper method. Build all paths from parent to children. One path is like
+     *      ElementExp parent -> [all Expressions but ElementExp or AttributeExp]* -> ElementExp child
+     *      ElementExp parent -> [all Expressions but ElementExp or AttributeExp]* -> AttributeExp child
+     * Since we use recursion we cannot make sure a path ends with an ElementExp or AttributeExp.
+     */
+    private static void buildPaths(MSVExpressionVisitorChildren visitor, List<List<Expression>> paths) {
+        List<Expression> waytoresearch = paths.get(paths.size() - 1);
+        Expression endpoint = waytoresearch.get(waytoresearch.size() - 1);
+        List<Expression> children = (List<Expression>) endpoint.visit(visitor);
+
+        if (children.size() == 1) {
+            Expression child = children.get(0);
+            waytoresearch.add(child);
+            if (!(child instanceof ElementExp) && !(child instanceof AttributeExp)) {
+                buildPaths(visitor, paths);
+            }
+        } else if (children.size() > 1) {
+            paths.remove(paths.size() - 1);
+            for (Expression child : children) {
+                List<Expression> newway = new ArrayList<Expression>();
+                newway.addAll(waytoresearch);
+                newway.add(child);
+                paths.add(newway);
+                if (!(child instanceof ElementExp) && !(child instanceof AttributeExp)) {
+                    buildPaths(visitor, paths);
+                }
+            }
+        }
+    }
+
+    private static List<List<Expression>> getPathsToClass(List<List<Expression>> paths, Class clazz) {
+        List<List<Expression>> remainingPaths = new ArrayList<List<Expression>>();
+        for (List<Expression> path : paths) {
+            if (clazz.isInstance(path.get(path.size() - 1))) {
+                remainingPaths.add(path);
+            }
+        }
+        return remainingPaths;
+    }
+
+    /**
+     * Gets all paths leading from this.getExpression() to exp (but not necessarily ending in exp).
+     * A path always starts with this.getExpression() and ends in
+     * someChildDefinition.getExpression().
+     *
+     * @param exp The MSV Expression. If you use this.getExpression() you get
+     * all paths starting from this.getExpression().
+     * If you use someChildDefinition.getExpression() you get all paths from
+     * this.getExpression() to the Expression of the Child Definition.
+     *
+     * @return A List of paths containing exp or null if there are no such paths
+     */
+    public List<List<Expression>> getPathsContaining(Expression exp) {
+        return mContainedInPaths.get(exp);
+    }
+
+    /**
+     * Can the MSV expression have text content?
+     *
+     * @return true if the node defined by this can have text content
+     */
+    public boolean canHaveText() {
+        return mCanHaveText;
+    }
+
+    /**
+     * Determines whether an Element or Attribute child is mandatory.
+     *
+     * <p>If there are multiples of child (other equally named expressions)
+     * providing only one of those Expressions will determine whether exactly
+     * this expression is mandatory. In most cases this will return false,
+     * and in most cases this is not what you want to know.
+     * Therefore you can provide a Collection of (equally named) child expressions.
+     * </p>
+     *
+     * @return whether child is mandatory
+     */
+    public boolean isMandatory(Collection<Expression> equallyNamedChildren) {
+
+        if (equallyNamedChildren == null || equallyNamedChildren.size() == 0) {
+            throw new RuntimeException("ExpressionInformation: Cannot determine isMandatory for a null or empty children list.");
+        }
+
+        Set<List<Expression>> twins = new HashSet<List<Expression>>();
+
+        for (Expression exp : equallyNamedChildren) {
+            if (!(exp instanceof NameClassAndExpression)) {
+                throw new RuntimeException("ExpressionInformation: Cannot determine isMandatory for Expression other than ELEMENT and ATTRIBUTE");
+            }
+            // Twins == Same parent (first element in path), same child (last element in path)
+            // Contract: For all paths containing an Element or Attribute child this child is always the last Expression of the path
+            twins.addAll(getPathsContaining(exp));
+        }
+
+        /*
+         * We assume the subnode is mandatory until proven otherwise. The prove is done by examining CHOICE elements.
+         *
+         * A CHOICE splits a path in exactly _two_ parts:
+         * If the CHOICE is only contained in the current path, the other part does not lead to the subnode. Therefore the subnode is optional.
+         * A CHOICE which is shared by two twins (see above) means that CHILD can still be assumed as mandatory.
+         *
+         * However there's a MSV implementation detail:
+         * All twins share the parent element and are identically before some CHOICE splits two of them. Once two paths are split, by logic
+         * they cannot share a CHOICE any more. At least you would think so... However MSV does some optimization to merge two
+         * identical CHOICES, even if they are in different places. In the following example the two inner CHOICE elements have the same MSV instance:
+         *      <CHOICE><CHOICE>A,B</CHOICE><CHOICE>A,B</CHOICE></CHOICE>
+         * So both twins do not really share such a CHOICE. You have to look for another path which _really_ shares this choice or - if you find none -
+         * set CHILD to optional.
+         */
+
+        HashSet<Expression> visitedChoices = new HashSet<Expression>();
+
+        for (List<Expression> path : twins) {
+            for (int s=0; s<path.size(); s++) {
+                Expression step = path.get(s);
+                if (step instanceof ChoiceExp && !visitedChoices.contains(step)) {
+                    visitedChoices.add(step);
+
+                    // If other twin paths share the same choice...
+                    List<List<Expression>> choiceInPaths = new ArrayList<List<Expression>>(mContainedInPaths.get(step));
+                    choiceInPaths.retainAll(twins);
+
+                    // small Performance gain: A CHOICE contained only in one path makes CHILD always optional
+                    if (choiceInPaths.size() <= 1) {
+                        return false;
+                    }
+
+                    // we need to find two paths to CHILD ('path' and another one from the twins) _really_ (s.a.) sharing this choice. Otherwise child is optional.
+                    int sharingPaths = 0;
+
+                    for (List<Expression> otherPath : choiceInPaths) {
+                        if (otherPath.size() > s && path.subList(0, s+1).equals(otherPath.subList(0, s+1))) {
+                            sharingPaths++;
+                            if (sharingPaths==2) {
+                                break;
+                            }
+                        }
+                    }
+                    if (sharingPaths < 2) {
+                        return false;
+                    }
+                }
+            }
+        }
+        return true;
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionIterator.java b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionIterator.java
new file mode 100644
index 0000000..6748f6e
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionIterator.java
@@ -0,0 +1,265 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import static schema2template.example.odf.OdfHelper.DEBUG;
+import com.sun.msv.grammar.DataExp;
+import com.sun.msv.grammar.ElementExp;
+import com.sun.msv.grammar.Expression;
+import com.sun.msv.grammar.NameClassAndExpression;
+import com.sun.msv.grammar.ReferenceExp;
+import com.sun.msv.grammar.ValueExp;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Stack;
+import java.util.logging.Logger;
+
+/**
+ * Iterates through the MSV expression tree.
+ *
+ * Traversing the MSV Tree structure by 
+ *	1) First trying to get the child (going as deep as possible)
+ *  2) Second if no child is available, trying to get the next sibling
+ *  3) If no sibling available, get a sibling of the parent (going back to step 1)
+ * 
+ * <p>Also has the ability to limit iteration to given subclasses and to limit subtree
+ * to the next element expressions below. </p>
+ */
+public final class MSVExpressionIterator implements Iterator<Expression> {
+
+	private static final Logger LOG = Logger.getLogger(MSVExpressionIterator.class.getName());
+	private Expression mCurrentExpression; // the expression that will be received by next()
+	public int mCurrentExpressionDepth;   // Level of current expression starting with 0 
+	private MSVExpressionVisitorChildren mVisitor;
+	// list of already visited expressions to avoid endless recursion
+	// The stack assists the iteration to go back up (usually done in by recursion)
+	// The stack contains the next expression, parent, grandparent, ...
+	private Stack<UniqueAncestor> mAncestorsAndCurrent;
+	// to prevent enless loops, known Element expression will be remembered and not again reentered
+	// Situation: Element a contains Element b contains Element a, will stop after the second a not continuing with b
+	private HashSet<Expression> mKnownElementExpressions;
+
+	// The vertical tree position is remembered by the stack, the vertical position will be remembered by a sibling index
+	private class UniqueAncestor {
+
+		public UniqueAncestor(Expression exp, int siblingIndex) {
+			mExp = exp;
+			mSiblingIndex = siblingIndex;
+		}
+		private Expression mExp;
+		private int mSiblingIndex;
+	}
+	// limit browsing to subclasses of Expression
+	private Class mDesiredExpression;
+	// if false, only return direct children of root. Don't return root as first element or grand children
+	private boolean mOnlyChildren;
+	private int mCurrentDepth = 0;
+	public static final boolean ALL_SUBTREE = true;
+	public static final boolean DIRECT_CHILDREN_ONLY = true;
+
+	public int getDepth() {
+		return mCurrentDepth;
+	}
+
+	/**
+	 * Iterate through the expression tree
+	 *
+	 * @param root Expression root
+	 */
+	public MSVExpressionIterator(Expression root) {
+		this(root, Expression.class, false);
+	}
+
+	/**
+	 *  Iterate through the expression tree, but only return objects of desiredExpression
+	 *
+	 * @param root Expression root
+	 * @param desiredExpression Limit returned expressions to subclasses of desiredExpression
+	 */
+	public MSVExpressionIterator(Expression root, Class desiredExpression) {
+		this(root, desiredExpression, false);
+	}
+
+	/**
+	 * Iterate..., but only return objects of desiredExpression and (if not onlyChildren)
+	 * don't go to children of ElementExp elements (this does not concern root node!).
+	 *
+	 * <p>Example: Root is table:table. If you choose onlyChildren=false and to limit
+	 * desiredExpression=ElementExp.class, then you will get all direct element children of table:table,
+	 * like table:table-row. But you won't get the children of table:table-row.
+	 * </p>
+	 *
+	 * @param root Expression root
+	 * @param desiredExpression Limit returned expressions to subclasses of desiredExpression
+	 * @param onlyChildren if only children should be returned
+	 */
+	public MSVExpressionIterator(Expression root, Class desiredExpression, boolean onlyChildren) {
+		// initialize members
+		mCurrentExpression = root;
+		mDesiredExpression = desiredExpression;
+		mOnlyChildren = onlyChildren;
+
+		// create helpers
+		mVisitor = new MSVExpressionVisitorChildren();
+		mKnownElementExpressions = new HashSet<Expression>();
+
+		// Initialize status
+		mAncestorsAndCurrent = new Stack<UniqueAncestor>();
+		mAncestorsAndCurrent.push(new UniqueAncestor(root, 0));
+
+		// make sure that there is at least one desired expression - for hasNext()
+		while (!mDesiredExpression.isInstance(mCurrentExpression) && mCurrentExpression != null) {
+			mCurrentExpression = getNextExpression();
+		}
+		
+		// Ignore root, if only children are desired
+		if (mOnlyChildren && root == mCurrentExpression) {
+			mCurrentExpression = getNextExpression();
+		}
+	}
+
+	public static String dumpMSVExpressionTree(Expression rootExpression) throws Exception {
+		MSVExpressionIterator iterator = new MSVExpressionIterator(rootExpression);
+		StringBuilder builder = new StringBuilder();
+		while (iterator.hasNext()) {
+			Expression expr = iterator.next();
+			builder.append(dumpMSVExpression(expr, iterator.getDepth())).append("\n");
+		}
+		return builder.toString();
+	}
+
+	private static String dumpMSVExpression(Expression expr, int depth) {
+		String returnValue = null;
+		MSVExpressionVisitorType typeVisitor = new MSVExpressionVisitorType();
+		MSVNameClassVisitorList nameVisitor = new MSVNameClassVisitorList();
+		MSVExpressionType type = (MSVExpressionType) expr.visit(typeVisitor);
+		returnValue = (depth + ": " + type.toString());
+
+		// AttributeExp, ElementExp
+		if (expr instanceof NameClassAndExpression) {
+			List<String> names = (List<String>) ((NameClassAndExpression) expr).getNameClass().visit(nameVisitor);
+			for (String name : names) {
+				returnValue += (" \"" + name + "\",");
+				if(DEBUG) System.out.println(returnValue);
+			}
+		} else if (expr instanceof ReferenceExp) {
+			returnValue += (" '" + ((ReferenceExp) expr).name + "',");
+			if(DEBUG) System.out.println(returnValue);
+		} else if (type == MSVExpressionType.VALUE) {
+			returnValue += (" '" + ((ValueExp) expr).value.toString() + "',");
+			if(DEBUG) System.out.println(returnValue);
+		} else if (type == MSVExpressionType.DATA) {
+			returnValue += (" '" + ((DataExp) expr).getName().localName + "',");
+			if(DEBUG) System.out.println(returnValue);
+		} else {
+			if(DEBUG) System.out.println(returnValue);
+		}
+		return returnValue;
+	}
+
+	public boolean hasNext() {
+		return (mCurrentExpression != null) ? true : false;
+	}
+
+	/** Iterating the Tree like the following	 
+	If there are (unvisited) children -> go down
+	If there are no (unvisited) children, but unvistsiblings -> go up and right
+	 */
+	private Expression getNextExpression() {
+		Expression nextExpression = null;
+		// the current expression might be null if the desired type of expression was never found in the tree
+		if (mCurrentExpression != null) {
+			// if all tree is desired, or root, or if it is not element expression
+			if (!mOnlyChildren || mAncestorsAndCurrent.size() == 1 || !(mAncestorsAndCurrent.peek().mExp instanceof ElementExp)) {
+				List<Expression> children = (List<Expression>) mCurrentExpression.visit(mVisitor);
+				// see if we can go DOWN the tree
+				if (children.size() > 0) {
+					Expression nextExpCandidate = children.get(0);
+					// DO NOT expand elements which occur more than one time in the ancestors hierarchy (i.e.
+					// since we compute the last element: Do not expand it, if it also occurs before)
+					if (isNoKnownElement(nextExpCandidate)) {
+						// GO DOWN - Proceed with first child
+						nextExpression = nextExpCandidate;
+						mAncestorsAndCurrent.push(new UniqueAncestor(nextExpression, 0));
+					}
+				}
+			}
+
+			// if you could not get depper, but you can go up
+			// if there was no first child for the next expression and still some parent not being the root
+			while (nextExpression == null && mAncestorsAndCurrent.size() > 1) {
+				// go one up the stack
+				UniqueAncestor uniqueAncestor = mAncestorsAndCurrent.pop();
+				// get the new parent
+				Expression parent = mAncestorsAndCurrent.peek().mExp;
+				// to get the siblings
+				List<Expression> siblings = (List<Expression>) parent.visit(mVisitor);
+				// get the unvisted sibling index
+				final int nextSiblingIndex = uniqueAncestor.mSiblingIndex + 1;
+				if (nextSiblingIndex < siblings.size()) {
+					Expression nextExpCandidate = siblings.get(nextSiblingIndex);
+					// DO NOT expand elements which occur more than one time in the ancestors hierarchy (i.e.
+					// since we compute the last element: Do not expand it, if it also occurs before)
+					if (isNoKnownElement(nextExpCandidate)) {
+						// GO RIGHT - Add next sibling to the stack
+						nextExpression = nextExpCandidate;
+						mAncestorsAndCurrent.push(new UniqueAncestor(nextExpression, nextSiblingIndex));
+					}
+				}
+			}
+		}
+		return nextExpression;
+	}
+
+	private boolean isNoKnownElement(Expression exp) {
+		boolean isNew = false;
+		if (!(exp instanceof ElementExp) || !mKnownElementExpressions.contains(exp)) {
+			mKnownElementExpressions.add(exp);
+			isNew = true;
+		} else {
+//			LOG.info("Found known element expression:" + dumpMSVExpression(exp, this.getDepth()));
+		}
+		return isNew;
+	}
+
+	public Expression next() {
+		if (mCurrentExpression == null) {
+			return null;
+		}
+		Expression retVal = mCurrentExpression;
+		mCurrentDepth = mAncestorsAndCurrent.size() - 1;
+		mCurrentExpression = getNextExpression();
+		
+		// as there is always a desired expression, make sure the next one is adequate
+		while (!mDesiredExpression.isInstance(mCurrentExpression) && mCurrentExpression != null) {
+			mCurrentExpression = getNextExpression();
+		}
+		return retVal;
+	}
+
+	// Unsupported
+	public void remove() {
+		throw new UnsupportedOperationException("Not supported.");
+
+	}
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionType.java b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionType.java
new file mode 100644
index 0000000..8f23af5
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionType.java
@@ -0,0 +1,30 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+/**
+ * Enum for the type of the MSV expression
+ */
+public enum MSVExpressionType {
+
+    STRING, ATTRIBUTE, CHOICE, CONCUR, DATA, ELEMENT, EPSILON, INTERLEAVE, LIST, MIXED, NULLSET, ONEOREMORE, OTHER, REF, SEQUENCE, VALUE
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionVisitorChildren.java b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionVisitorChildren.java
new file mode 100644
index 0000000..33eada6
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionVisitorChildren.java
@@ -0,0 +1,132 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import com.sun.msv.grammar.AttributeExp;
+import com.sun.msv.grammar.ChoiceExp;
+import com.sun.msv.grammar.ConcurExp;
+import com.sun.msv.grammar.DataExp;
+import com.sun.msv.grammar.ElementExp;
+import com.sun.msv.grammar.Expression;
+import com.sun.msv.grammar.ExpressionVisitor;
+import com.sun.msv.grammar.InterleaveExp;
+import com.sun.msv.grammar.ListExp;
+import com.sun.msv.grammar.MixedExp;
+import com.sun.msv.grammar.OneOrMoreExp;
+import com.sun.msv.grammar.OtherExp;
+import com.sun.msv.grammar.ReferenceExp;
+import com.sun.msv.grammar.SequenceExp;
+import com.sun.msv.grammar.ValueExp;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This visitor visits an Expression and returns a list of child expressions
+ *
+ * <p>Usage example:
+ * <em>(List&lt;Expression&gt;) myExpression.visit(myMSVExpressionVisitorChildren)</em></p>
+ *
+ * <p>Please note that you do not use any method of this class directly!</p>
+ */
+public class MSVExpressionVisitorChildren implements ExpressionVisitor {
+
+    private static final List<Expression> empty = Collections.EMPTY_LIST;
+
+    public List<Expression> onAnyString() {
+        return empty;
+    }
+
+    public List<Expression> onAttribute(AttributeExp exp) {
+        return child(exp.exp);
+    }
+
+    public List<Expression> onChoice(ChoiceExp exp) {
+        return children(exp.children());
+    }
+
+    public List<Expression> onConcur(ConcurExp exp) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public List<Expression> onData(DataExp exp) {
+        return empty;
+    }
+
+    public List<Expression> onElement(ElementExp exp) {
+        return child(exp.getContentModel());
+    }
+
+    public List<Expression> onEpsilon() {
+        return empty;
+    }
+
+    public List<Expression> onInterleave(InterleaveExp exp) {
+        return children(exp.children());
+    }
+
+    public List<Expression> onList(ListExp exp) {
+        return child(exp.exp);
+    }
+
+    public List<Expression> onMixed(MixedExp exp) {
+        return child(exp.exp);
+    }
+
+    public List<Expression> onNullSet() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public List<Expression> onOneOrMore(OneOrMoreExp exp) {
+        return child(exp.exp);
+    }
+
+    public List<Expression> onOther(OtherExp exp) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public List<Expression> onRef(ReferenceExp exp) {
+        return child(exp.exp);
+    }
+
+    public List<Expression> onSequence(SequenceExp exp) {
+        return children(exp.children());
+    }
+
+    public List<Expression> onValue(ValueExp exp) {
+        return empty;
+    }
+
+    private List<Expression> children(Iterator<Expression> i) {
+        ArrayList<Expression> list = new ArrayList<Expression>();
+        while (i.hasNext()) {
+            list.add(i.next());
+        }
+        return list;
+    }
+
+    private List<Expression> child(Expression e) {
+        return Collections.singletonList(e);
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionVisitorType.java b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionVisitorType.java
new file mode 100644
index 0000000..dbb87bf
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVExpressionVisitorType.java
@@ -0,0 +1,113 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import com.sun.msv.grammar.AttributeExp;
+import com.sun.msv.grammar.ChoiceExp;
+import com.sun.msv.grammar.ConcurExp;
+import com.sun.msv.grammar.DataExp;
+import com.sun.msv.grammar.ElementExp;
+import com.sun.msv.grammar.ExpressionVisitor;
+import com.sun.msv.grammar.InterleaveExp;
+import com.sun.msv.grammar.ListExp;
+import com.sun.msv.grammar.MixedExp;
+import com.sun.msv.grammar.OneOrMoreExp;
+import com.sun.msv.grammar.OtherExp;
+import com.sun.msv.grammar.ReferenceExp;
+import com.sun.msv.grammar.SequenceExp;
+import com.sun.msv.grammar.ValueExp;
+
+/**
+ * Get type of expression
+ *
+ * <p>Usage example:
+ * <em>(MSVExpressionType) myExpression.visit(myMSVExpressionVisitorType)</em></p>
+ *
+ * <p>Please note that you do not use any method of this class directly!</p>
+ */
+public class MSVExpressionVisitorType implements ExpressionVisitor {
+
+    public MSVExpressionType onAnyString() {
+        return MSVExpressionType.STRING;
+    }
+
+    public MSVExpressionType onAttribute(AttributeExp arg0) {
+        return MSVExpressionType.ATTRIBUTE;
+    }
+
+    public MSVExpressionType onChoice(ChoiceExp arg0) {
+        return MSVExpressionType.CHOICE;
+    }
+
+    public MSVExpressionType onConcur(ConcurExp arg0) {
+        return MSVExpressionType.CONCUR;
+    }
+
+    public MSVExpressionType onData(DataExp arg0) {
+        return MSVExpressionType.DATA;
+    }
+
+    public MSVExpressionType onElement(ElementExp arg0) {
+        return MSVExpressionType.ELEMENT;
+    }
+
+    public MSVExpressionType onEpsilon() {
+        return MSVExpressionType.EPSILON;
+    }
+
+    public MSVExpressionType onInterleave(InterleaveExp arg0) {
+        return MSVExpressionType.INTERLEAVE;
+    }
+
+    public MSVExpressionType onList(ListExp arg0) {
+        return MSVExpressionType.LIST;
+    }
+
+    public MSVExpressionType onMixed(MixedExp arg0) {
+        return MSVExpressionType.MIXED;
+    }
+
+    public MSVExpressionType onNullSet() {
+        return MSVExpressionType.NULLSET;
+    }
+
+    public MSVExpressionType onOneOrMore(OneOrMoreExp arg0) {
+        return MSVExpressionType.ONEOREMORE;
+    }
+
+    public MSVExpressionType onOther(OtherExp arg0) {
+        return MSVExpressionType.OTHER;
+    }
+
+    public MSVExpressionType onRef(ReferenceExp arg0) {
+        return MSVExpressionType.REF;
+    }
+
+    public MSVExpressionType onSequence(SequenceExp arg0) {
+        return MSVExpressionType.SEQUENCE;
+    }
+
+    public MSVExpressionType onValue(ValueExp arg0) {
+        return MSVExpressionType.VALUE;
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/MSVNameClassVisitorList.java b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVNameClassVisitorList.java
new file mode 100644
index 0000000..4f67b0e
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/MSVNameClassVisitorList.java
@@ -0,0 +1,100 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import com.sun.msv.grammar.AnyNameClass;
+import com.sun.msv.grammar.ChoiceNameClass;
+import com.sun.msv.grammar.DifferenceNameClass;
+import com.sun.msv.grammar.NameClassVisitor;
+import com.sun.msv.grammar.NamespaceNameClass;
+import com.sun.msv.grammar.NotNameClass;
+import com.sun.msv.grammar.SimpleNameClass;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Returns the Name(s) of an Expression (or more precisely: of its Nameclass) in a List of Strings.
+ * A list instead of a single name is necessary as there might be multiple names for a single element definition.
+ * For instance in ODF 1.2:
+ * <code>
+		<element>
+			<choice>
+				<name>text:reference-ref</name>
+				<name>text:bookmark-ref</name>
+			</choice>
+ </code>
+
+ *
+ * <p>Convention: "*" will be returned as the wildcard for "any name"</p>
+ *
+ * <p>Usage example:
+ * <em>(List&lt;String&gt;) myExpression.nameclass.visit(myMSVNameClassVisitorList)</em></p>
+ *
+ * <p>Please note that you do not use any method of this class directly!</p>
+ */
+public class MSVNameClassVisitorList implements NameClassVisitor {
+
+    private static NamespaceDictionary nsdict = NamespaceDictionary.getStandardDictionary();
+
+    public List<String> onAnyName(AnyNameClass arg0) {
+        return single("*");
+    }
+
+    public List<String> onChoice(ChoiceNameClass arg0) {
+        List<String> retval = new ArrayList<String>();
+        retval.addAll((List<String>) arg0.nc1.visit(this));
+        retval.addAll((List<String>) arg0.nc2.visit(this));
+        return retval;
+    }
+
+    public List<String> onDifference(DifferenceNameClass arg0) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public List<String> onNot(NotNameClass arg0) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public List<String> onNsName(NamespaceNameClass arg0) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public List<String> onSimple(SimpleNameClass arg0) {
+        return single(simplify(arg0.namespaceURI, arg0.localName));
+    }
+
+    // singleton list
+    private List<String> single(String s) {
+        return Collections.singletonList(s);
+    }
+
+    // (a.name.space.uri, localname) -> ns:localname
+    private String simplify(String nsuri, String localname) {
+        String shortns = nsdict.getLocalNamespace(nsuri);
+        if (shortns == null || shortns.length() == 0) {
+            return localname;
+        }
+        return shortns + ":" + localname;
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/NamespaceDictionary.java b/trunk/generator/schema2template/src/main/java/schema2template/model/NamespaceDictionary.java
new file mode 100644
index 0000000..ca3f877
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/NamespaceDictionary.java
@@ -0,0 +1,117 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Translation NS URI &lt;-&gt; NS Localname
+ */
+public class NamespaceDictionary {
+
+    private Map<String,String> uri2local;
+    private Map<String,String> local2uri;
+
+    /**
+     * Construct a new empty dictionary
+     */
+    public NamespaceDictionary() {
+        uri2local = new HashMap<String, String>();
+        local2uri = new HashMap<String, String>();
+    }
+
+    /**
+     * Register a new translation
+     *
+     * @param nsLocal short namespace
+     * @param nsUri namespace URI
+     */
+    public void put(String nsLocal, String nsUri) {
+        uri2local.put(nsUri, nsLocal);
+        local2uri.put(nsLocal, nsUri);
+    }
+
+    /**
+     * Translate local namespace to URI
+     *
+     * @param nsLocal short namespace
+     * @return namespace URI
+     */
+    public String getNamespaceURI(String nsLocal) {
+        return local2uri.get(nsLocal);
+    }
+
+    /**
+     * Translate URI to local namespace
+     *
+     * @param nsUri namespace URI
+     * @return short namespace
+     */
+    public String getLocalNamespace(String nsUri) {
+        return uri2local.get(nsUri);
+    }
+
+    /**
+     * Construct an example dictionary as needed by the OpenDocument schema file
+     *
+     * @return namespace Dictionary
+     */
+    public static NamespaceDictionary getStandardDictionary() {
+        NamespaceDictionary dict = new NamespaceDictionary();
+//todo Exchange the static list with a dynamic approach!!
+	dict.put("office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0");
+	dict.put("style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0");
+	dict.put("text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0");
+	dict.put("table", "urn:oasis:names:tc:opendocument:xmlns:table:1.0");
+	dict.put("draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0");
+	dict.put("fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0");
+	dict.put("xlink", "http://www.w3.org/1999/xlink");
+	dict.put("dc", "http://purl.org/dc/elements/1.1/");
+	dict.put("meta", "urn:oasis:names:tc:opendocument:xmlns:meta:1.0");
+	dict.put("number", "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0");
+	dict.put("svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0");
+	dict.put("chart", "urn:oasis:names:tc:opendocument:xmlns:chart:1.0");
+	dict.put("dr3d", "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0");
+	dict.put("math", "http://www.w3.org/1998/Math/MathML");
+	dict.put("form", "urn:oasis:names:tc:opendocument:xmlns:form:1.0");
+	dict.put("script", "urn:oasis:names:tc:opendocument:xmlns:script:1.0");
+	dict.put("dom", "http://www.w3.org/2001/xml-events");
+	dict.put("xforms", "http://www.w3.org/2002/xforms");
+	dict.put("xsd", "http://www.w3.org/2001/XMLSchema");
+	dict.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+	dict.put("of", "urn:oasis:names:tc:opendocument:xmlns:of:1.2");
+	dict.put("rdfa", "http://docs.oasis-open.org/opendocument/meta/rdfa#");
+	dict.put("field", "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0");
+	dict.put("config","urn:oasis:names:tc:opendocument:xmlns:config:1.0");
+	dict.put("presentation","urn:oasis:names:tc:opendocument:xmlns:presentation:1.0");
+	dict.put("db","urn:oasis:names:tc:opendocument:xmlns:database:1.0");
+	dict.put("anim","urn:oasis:names:tc:opendocument:xmlns:animation:1.0");
+	dict.put("grddl","http://www.w3.org/2003/g/data-view#");
+	dict.put("xhtml","http://www.w3.org/1999/xhtml");
+	dict.put("smil","urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0");
+        dict.put("xml", "http://www.w3.org/XML/1998/namespace");
+
+        return dict;
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzleComponent.java b/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzleComponent.java
new file mode 100644
index 0000000..3f73571
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzleComponent.java
@@ -0,0 +1,109 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import java.util.Collection;
+
+/**
+ * <p>The first purpose of this interface is to provide a kind of "piece of a puzzle"
+ * representing the key definitions of a schema and their relationship:</p>
+ * <ul>
+ * <li>Element PuzzlePiece</li>
+ * <li>Attribute PuzzlePiece</li>
+ * <li>Attribute Value PuzzlePiece</li>
+ * <li>Attribute Datatype PuzzlePiece</li>
+ * </ul>
+ * <p>The second purpose of this interface is to hide the differences between one
+ * definition and a Collection of definitions. By this you will be able
+ * to use single definitions and collections of definitions as method
+ * parameters. The method getCollection() is a helper method for this.</p>
+ */
+public interface PuzzleComponent {
+
+    /**
+     * ELEMENT PuzzlePiece only: Get all child element Definitions
+     *
+     * @return The child Definitions of this PuzzleComponent
+     */
+    public PuzzlePieceSet getChildElements();
+
+    /**
+     *  ELEMENT PuzzlePiece only: Get all attribute Definitions
+     *
+     * @return The attribute Definitions of this PuzzleComponent
+     */
+    public PuzzlePieceSet getAttributes();
+
+    /**
+     *  ATTRIBUTE PuzzlePiece only: Get all datatype Definitions
+     *
+     * @return The datatype Definitions of this PuzzleComponent
+     */
+    public PuzzlePieceSet getDatatypes();
+
+    /**
+     *  ATTRIBUTE PuzzlePiece only: Get all value Definitions
+     *
+     * @return The constant value Definitions of this PuzzleComponent
+     */
+    public PuzzlePieceSet getValues();
+
+    /**
+     *  Get all parent Definitions
+     *
+     * @return The parent Definitions of this PuzzleComponent
+     */
+    public PuzzlePieceSet getParents();
+
+    /**
+     * Get type of PuzzlePiece [ELEMENT, ATTRIBUTE, VALUE, DATA]
+     *
+     * @return The type of this PuzzleComponent
+     */
+    public MSVExpressionType getType();
+
+    /**
+     * Determines whether this PuzzleComponent allows a text node as child.
+     *
+     * @return True if a text node is allowed, false otherwise
+     */
+    public boolean canHaveText();
+
+    /**
+     * Determines whether the child PuzzlePiece(s) is/are singleton(s)
+     *
+     * Convention: If child is a collection this method returns false if one child element is no singleton.
+     * If this is a collection this method returns false if child is no singleton for one element of this.
+     *
+     * @param child PuzzleComponent child
+     * @return True if child is defined as Singleton, falso otherwise.
+     */
+    public boolean isSingleton(PuzzleComponent child);
+
+    /**
+     * Method to treat NamedDefined as a Collection of PuzzlePiece
+     *
+     * @return Collection of PuzzlePiece objects
+     */
+    public Collection<PuzzlePiece> getCollection();
+    
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzlePiece.java b/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzlePiece.java
new file mode 100644
index 0000000..fd7a9ba
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzlePiece.java
@@ -0,0 +1,594 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import com.sun.msv.grammar.AttributeExp;
+import com.sun.msv.grammar.DataExp;
+import com.sun.msv.grammar.ElementExp;
+import com.sun.msv.grammar.Expression;
+import com.sun.msv.grammar.NameClassAndExpression;
+import com.sun.msv.grammar.ValueExp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * One of the following RelaxNG definitions of an Element, Attribute, Value or Datatype.
+ *
+ * <p>Each PuzzlePiece encapsulates one MSV Expression. Two PuzzlePiece can share
+ * the same MSV Expression (RelaxNG pattern:
+ * &lt;element&gt;&lt;choice&gt;&lt;name&gt;aName&lt;/name&gt;&lt;name&gt;anotherName&lt;/name&gt;&lt;/choice&gt;&lt;/element&gt;)
+ * </p>
+ * <p>Conventions: <ul>
+ * <li>hashCode uses the hashCode from the encapsulated Expressions. So two Definitions (rarely) can
+ * have the same hashCode. Equals uses Name _and_ hashCode.</li>
+ * <li>Sorting is done by ns:local tag names as first key and hashCode as second key.</li>
+ * <li>All returned PuzzlePieceSet objects are immutable to protect them against
+ * naive usage in velocity templates</li></ul></p>
+ */
+public class PuzzlePiece implements Comparable<PuzzlePiece>, QNamedPuzzleComponent {
+
+	private static MSVExpressionVisitorType TYPE_VISITOR = new MSVExpressionVisitorType();
+	private static MSVNameClassVisitorList NAME_VISITOR = new MSVNameClassVisitorList();
+	private Expression mExpression;
+	// all multiples of this tagname (contains only this if there are no multiples)
+	private PuzzlePieceSet mMultiples = new PuzzlePieceSet();
+	// definitions of elements which can have this as children
+	private PuzzlePieceSet mParents = new PuzzlePieceSet();
+	// DEFINITION CONTENT
+	// ns:local tagname
+	private String mName;
+
+	/* Properties for PuzzlePiece of Type.ELEMENT */
+	private PuzzlePieceSet mChildElements = new PuzzlePieceSet();
+	private HashSet<String> mMandatoryChildElementNames = new HashSet<String>();
+	private PuzzlePieceSet mAttributes = new PuzzlePieceSet();
+	private HashSet<String> mMandatoryChildAttributeNames = new HashSet<String>();
+	private boolean mCanHaveText = false;
+	private Set<Expression> mSingletonChildExpressions;
+	private Set<Expression> mMultipleChildExpressions;
+
+	/* Properties for PuzzlePiece of Type.ATTRIBUTE */
+	// Values like "left", "centered", "right"
+	private PuzzlePieceSet mValues = new PuzzlePieceSet();
+	// generic Data Types like "string", "countryCode", ...
+	private PuzzlePieceSet mDatatypes = new PuzzlePieceSet();
+
+	private PuzzlePiece(Expression exp, String name) {
+		mExpression = exp;
+		mName = name;
+	}
+
+	private PuzzlePiece(Expression exp) {
+		mExpression = exp;
+		MSVExpressionType type = (MSVExpressionType) exp.visit(TYPE_VISITOR);
+		if (type == MSVExpressionType.ATTRIBUTE || type == MSVExpressionType.ELEMENT) {
+			List<String> names = (List<String>) ((NameClassAndExpression) exp).getNameClass().visit(NAME_VISITOR);
+			if (names == null || names.size() != 1) {
+				throw new RuntimeException("Definition: ELEMENT or ATTRIBUTE expression exp with none or more than one name is only allowed in this(exp, name)");
+			}
+			mName = names.get(0);
+		}
+		if (type == MSVExpressionType.VALUE) {
+			mName = ((ValueExp) exp).value.toString();
+		}
+		if (type == MSVExpressionType.DATA) {
+			mName = ((DataExp) exp).getName().localName;
+		}
+	}
+
+	/**
+	 * Uses the name and the wrapped MSV Expression to test for equality.
+	 *
+	 * @param b Another object
+	 * @return Whether both objects equal
+	 */
+	public boolean equals(Object b) {
+		if (b instanceof PuzzlePiece) {
+			PuzzlePiece d = (PuzzlePiece) b;
+			if (d.mName.equals(mName) && d.mExpression.equals(mExpression)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Uses the wrapped MSV Expression for the hashCode. MSV Expressions are numbered consecutively by a distinct Hash Code.
+	 */
+	public int hashCode() {
+		return mExpression.hashCode();
+	}
+
+	/**
+	 * Uses the ns:local name of the wrapped MSV Expression as first key and the hashCode as second key.
+	 * If o1.equals(o2) this method will return 0 (since both must share the same Expression and name).
+	 *
+	 * @param o Other Object
+	 * @return Comparison
+	 */
+	public int compareTo(PuzzlePiece o) {
+		int retval = mName.compareTo(o.mName);
+		if (retval != 0) {
+			return retval;
+		}
+		return hashCode() - o.hashCode();
+	}
+
+	/*
+	 * Return whether the content of this and of another PuzzlePiece are equal.
+	 *
+	 * Content is everything that's inside a RelaxNG definition block. So child
+	 * elements, attributes, data types, name, definition type are all content.
+	 * Parent elements or multiples are no content information as they're
+	 * outside the RelaxNG definition block.
+	 *
+	 * This method is useful for reduction of Multiples with identical
+	 * definition content.
+	 *
+	 * No recursive checking: E.g. the child element DefinitionSets have to be really
+	 * equal to let this.contentEquals(other) be true. So PuzzlePiece reduction
+	 * has to be bottom up (VALUES, DATATYPES -> ATTRIBUTES -> ELEMENTS) and reduction
+	 * of ELEMENT definitions is not really possible (how to go bottom up in
+	 * ELEMENT tree?)
+	 */
+	protected boolean contentEquals(PuzzlePiece other) {
+		if (!mName.equals(other.mName)) {
+			return false;
+		}
+		if (!getType().equals(other.getType())) {
+			return false;
+		}
+		if (mCanHaveText != other.mCanHaveText) {
+			return false;
+		}
+		if (!mChildElements.equals(other.mChildElements)) {
+			return false;
+		}
+		if (!mAttributes.equals(other.mAttributes)) {
+			return false;
+		}
+		if (!mMandatoryChildElementNames.equals(other.mMandatoryChildElementNames)) {
+			return false;
+		}
+		if (!mMandatoryChildAttributeNames.equals(other.mMandatoryChildAttributeNames)) {
+			return false;
+		}
+		if (!mValues.equals(other.mValues)) {
+			return false;
+		}
+		if (!mDatatypes.equals(other.mDatatypes)) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Gets the ns:local tag name of this PuzzlePiece
+	 *
+	 * @return The tag name
+	 */
+	public String getQName() {
+		return mName;
+	}
+
+	public String getLocalName() {
+		return XMLModel.extractLocalname(mName);
+	}
+
+	public String getNamespace() {
+		return XMLModel.extractNamespace(mName);
+	}
+
+	/**
+	 * <p>Returns String representation (convenient method for getQName())</p>
+	 *
+	 * <p>Template Usage: Just use $aDefinition as you would use a string variable.</p>
+	 */
+	public String toString() {
+		return getQName();
+	}
+
+	/**
+	 * Gets the type of this (ELEMENT, ATTRIBUTE, DATA, VALUE)
+	 *
+	 * @return The ExpressionType of this PuzzlePiece
+	 */
+	public MSVExpressionType getType() {
+		return (MSVExpressionType) mExpression.visit(TYPE_VISITOR);
+	}
+
+	/**
+	 * Gets the wrapped Expression
+	 *
+	 * @return The Expression wrapped by this.
+	 */
+	public Expression getExpression() {
+		return mExpression;
+	}
+
+	/**
+	 * Determines whether this Element can have a text node as child
+	 */
+	public boolean canHaveText() {
+		return mCanHaveText;
+	}
+
+	public boolean isSingleton(PuzzleComponent child) {
+		for (PuzzlePiece element : child.getCollection()) {
+			if (mMultipleChildExpressions.contains(element.getExpression())) {
+				return false;
+			}
+			if (!mSingletonChildExpressions.contains(element.getExpression())) {
+				throw new RuntimeException("Definition.isSingleton: Unknown child element.");
+			}
+		}
+		return true;
+	}
+
+	public Collection<PuzzlePiece> getCollection() {
+		return Collections.singletonList(this);
+	}
+
+	/**
+	 * Gets the List of Definitions which share the same tag name, but are defined multiple times in the schema.
+	 * The list is type specific, i.e. an ATTRIBUTE can never be a multiple of an ELEMENT.
+	 *
+	 * @return The list of Definitions which share the same tag name.
+	 */
+	public PuzzlePieceSet withMultiples() {
+		return mMultiples;
+	}
+
+	/**
+	 * Gets the index of 'this' in the List of Definitions returned by withMultiples()
+	 *
+	 * @return Index of this PuzzlePiece object in the PuzzlePieceSet returned by withMultiples()
+	 */
+	public int getMultipleNumber() {
+		int retval = 0;
+		Iterator<PuzzlePiece> iter = mMultiples.iterator();
+		while (iter.hasNext()) {
+			if (iter.next().equals(this)) {
+				return retval;
+			}
+			retval++;
+		}
+		throw new RuntimeException("aDefinition.getMultipleNumber: Internal error");
+	}
+
+	/**
+	 * Gets the Parents which can contain this PuzzlePiece as a child
+	 *
+	 * @return The parent Definitions
+	 */
+	public PuzzlePieceSet getParents() {
+		return mParents;
+	}
+
+	/**
+	 * Gets the child elements of this PuzzlePiece. Please note that only Definitions of type ELEMENT can have child elements.
+	 *
+	 * @return The child Definitions of type ELEMENT
+	 */
+	public PuzzlePieceSet getChildElements() {
+		return mChildElements;
+	}
+
+	public boolean isMandatory(QNamedPuzzleComponent child) {
+		switch (child.getType()) {
+			case ATTRIBUTE:
+				if (mMandatoryChildAttributeNames.contains(child.getQName())) {
+					return true;
+				}
+				break;
+			case ELEMENT:
+				if (mMandatoryChildElementNames.contains(child.getQName())) {
+					return true;
+				}
+				break;
+		}
+		return false;
+	}
+
+	/**
+	 * Gets the Attributes of this PuzzlePiece. Please note that only Definitions of type ELEMENT can have attributes.
+	 *
+	 * @return The child Definitions of type ATTRIBUTE
+	 */
+	public PuzzlePieceSet getAttributes() {
+		return mAttributes;
+	}
+
+	/**
+	 * Gets the defined constant values. Please note that only Definitions of type ATTRIBUTE can have values.
+	 *
+	 * @return The constant values
+	 */
+	public PuzzlePieceSet getValues() {
+		return mValues;
+	}
+
+	/**
+	 * Gets the defined datatypes. Please note that only Definitions of type ATTRIBUTE can have datatypes.
+	 *
+	 * @return The datatypes
+	 */
+	public PuzzlePieceSet getDatatypes() {
+		return mDatatypes;
+	}
+
+
+	/*
+	 * ---------------------------------------------------------------------------
+	 *  PuzzlePiece Factory
+	 * ---------------------------------------------------------------------------
+	 */
+	/**
+	 * Creates all PuzzlePiece objects from MSV root tree.
+	 *
+	 * The PuzzlePiece objects are all made immutable to protect them
+	 * against changes by naive template usage. Note that the Sets of all elements/attributes
+	 * can only be made immutable by the caller after this method run.
+	 *
+	 * @param root MSV root Expression
+	 * @param newElementSet empty Set. Will be filled with Definitions of Type.ELEMENT
+	 * @param newAttributeSet empty Set. Will be filled with Definitions of Type.ATTRIBUTE
+	 */
+	public static void extractPuzzlePieces(Expression root, PuzzlePieceSet newElementSet, PuzzlePieceSet newAttributeSet) {
+		// e.g. the newElementSet is the set to iterate later in the template
+		extractTypedPuzzlePieces(root, newElementSet, ElementExp.class);
+		extractTypedPuzzlePieces(root, newAttributeSet, AttributeExp.class);
+		configureProperties(newElementSet, newAttributeSet);
+		reduceDatatypes(newAttributeSet);
+		reduceValues(newAttributeSet);
+		reduceAttributes(newElementSet, newAttributeSet);
+		makePuzzlePiecesImmutable(newElementSet);
+		makePuzzlePiecesImmutable(newAttributeSet);
+	}
+
+	// Extracts all Definitions of Type [ATTRIBUTE, ELEMENT] from MSV tree.
+	private static <T extends Expression> void extractTypedPuzzlePieces(Expression root, PuzzlePieceSet setToBeFilled, Class<T> superclass) {
+		MSVExpressionIterator iter = new MSVExpressionIterator(root, superclass);
+		HashMap<String, List<PuzzlePiece>> multipleMap = new HashMap<String, List<PuzzlePiece>>();
+
+		while (iter.hasNext()) {
+			Expression exp = iter.next();
+
+			// If there is more than one name for this expression, create more than one PuzzlePiece
+			List<String> names = (List<String>) ((NameClassAndExpression) exp).getNameClass().visit(NAME_VISITOR);
+
+			for (String name : names) {
+				if (name.length() == 0) {
+					throw new RuntimeException("Unnamed ELEMENT or ATTRIBUTE expression.");
+				}
+				// Create and store new definition
+				PuzzlePiece newDefinition = new PuzzlePiece(exp, name);
+
+				setToBeFilled.add(newDefinition);
+
+				// Check for multiples
+				List<PuzzlePiece> multiples = multipleMap.get(name);
+				if (multiples != null) {
+					multiples.add(newDefinition);
+				} else {
+					multiples = new ArrayList<PuzzlePiece>(1);
+					multiples.add(newDefinition);
+					multipleMap.put(name, multiples);
+				}
+			}
+
+		}
+
+		// Fills multiple information
+		Iterator<PuzzlePiece> defIter = setToBeFilled.iterator();
+		while (defIter.hasNext()) {
+			PuzzlePiece def = defIter.next();
+			def.mMultiples = new PuzzlePieceSet(multipleMap.get(def.getQName()));
+		}
+	}
+
+	// Builds Map Expression->List<PuzzlePiece>
+	private static Map<Expression, List<PuzzlePiece>> buildReverseMap(PuzzlePieceSet defs) {
+		Map<Expression, List<PuzzlePiece>> retval = new HashMap<Expression, List<PuzzlePiece>>();
+		Iterator<PuzzlePiece> iter = defs.iterator();
+		while (iter.hasNext()) {
+			PuzzlePiece def = iter.next();
+			List<PuzzlePiece> list = retval.get(def.getExpression());
+			if (list == null) {
+				list = new ArrayList<PuzzlePiece>();
+				retval.put(def.getExpression(), list);
+			}
+			list.add(def);
+		}
+		return retval;
+	}
+
+	// Builds Map Name->List<Expression>
+	private static Map<String, List<Expression>> buildNameExpressionsMap(PuzzlePieceSet defs) {
+		Map<String, List<Expression>> retval = new HashMap<String, List<Expression>>();
+		Iterator<PuzzlePiece> iter = defs.iterator();
+		while (iter.hasNext()) {
+			PuzzlePiece def = iter.next();
+			List<Expression> list = retval.get(def.getQName());
+			if (list == null) {
+				list = new ArrayList<Expression>();
+				retval.put(def.getQName(), list);
+			}
+			list.add(def.getExpression());
+		}
+		return retval;
+	}
+
+	// Unite Value Definitions with equal content. Has to be last step (after Value Definitions have been assigned to Attributes)
+	private static void reduceValues(PuzzlePieceSet attributes) {
+		PuzzlePieceSet values = new PuzzlePieceSet();
+		for (PuzzlePiece attr : attributes) {
+			values.addAll(attr.getValues());
+		}
+		Map<PuzzlePiece, PuzzlePiece> lostToSurvived = values.uniteDefinitionsWithEqualContent();
+		for (PuzzlePiece attr : attributes) {
+			PuzzlePieceSet attributeValues = attr.getValues();
+			PuzzlePieceSet immutable = new PuzzlePieceSet(attributeValues);
+			for (PuzzlePiece value : immutable) {
+				if (lostToSurvived.containsKey(value)) {
+					// Replace lost with survived
+					attributeValues.remove(value);
+					attributeValues.add(lostToSurvived.get(value));
+				}
+			}
+		}
+	}
+
+	// Unite Datatype Definitions with equal content. Has to be last step (after Datatype Definitions have been assigned to Attributes).
+	// Has to be even after reduceValues and reduceDatatypes, otherwise some attributes do not seem to have equal content
+	private static void reduceDatatypes(PuzzlePieceSet attributes) {
+		PuzzlePieceSet datatypes = new PuzzlePieceSet();
+		for (PuzzlePiece attr : attributes) {
+			datatypes.addAll(attr.getDatatypes());
+		}
+		Map<PuzzlePiece, PuzzlePiece> lostToSurvived = datatypes.uniteDefinitionsWithEqualContent();
+		for (PuzzlePiece attr : attributes) {
+			PuzzlePieceSet attributeDatatypes = attr.getValues();
+			PuzzlePieceSet immutable = new PuzzlePieceSet(attributeDatatypes);
+			for (PuzzlePiece datatype : immutable) {
+				if (lostToSurvived.containsKey(datatype)) {
+					// Replace lost with survived
+					attributeDatatypes.remove(datatype);
+					attributeDatatypes.add(lostToSurvived.get(datatype));
+				}
+			}
+		}
+	}
+
+	// Unite Attribute Definitions with equal content. Has to be last step (after Attribute Definitions have been assigned to Elements)
+	private static void reduceAttributes(PuzzlePieceSet elements, PuzzlePieceSet attributes) {
+		Map<PuzzlePiece, PuzzlePiece> lostToSurvived = attributes.uniteDefinitionsWithEqualContent();
+		for (PuzzlePiece el : elements) {
+			PuzzlePieceSet elementAttributes = el.getAttributes();
+			PuzzlePieceSet immutable = new PuzzlePieceSet(elementAttributes);
+			for (PuzzlePiece attribute : immutable) {
+				if (lostToSurvived.containsKey(attribute)) {
+					// Replace lost with survived
+					elementAttributes.remove(attribute);
+					elementAttributes.add(lostToSurvived.get(attribute));
+				}
+			}
+		}
+	}
+
+	// Sets Children, Attributes and Parents.
+	private static void configureProperties(PuzzlePieceSet elements, PuzzlePieceSet attributes) {
+		Map<Expression, List<PuzzlePiece>> reverseElementMap = buildReverseMap(elements);
+		Map<Expression, List<PuzzlePiece>> reverseAttributeMap = buildReverseMap(attributes);
+
+		// Handle Element Definitions
+		Iterator<PuzzlePiece> iter = elements.iterator();
+		while (iter.hasNext()) {
+			PuzzlePiece def = iter.next();
+			MSVExpressionIterator childFinder = new MSVExpressionIterator(def.getExpression(), NameClassAndExpression.class, MSVExpressionIterator.DIRECT_CHILDREN_ONLY);
+			while (childFinder.hasNext()) {
+				Expression child_exp = childFinder.next();
+				//2DO: IS CHILDEXPR BEREITS VORGEKOMMEN
+				// OR UNIQUE NEXT
+				List<PuzzlePiece> child_defs = null;
+				PuzzlePieceSet whereToAdd = null;
+				if (child_exp instanceof ElementExp) {
+					child_defs = reverseElementMap.get(child_exp);
+					whereToAdd = def.mChildElements;
+				} else if (child_exp instanceof AttributeExp) {
+					child_defs = reverseAttributeMap.get(child_exp);
+					whereToAdd = def.mAttributes;
+				}
+				if (child_defs != null) {
+					whereToAdd.addAll(child_defs);
+					for (PuzzlePiece child_def : child_defs) {
+						child_def.mParents.add(def);
+					}
+				}
+			}
+			MSVExpressionInformation elementInfo = new MSVExpressionInformation(def.getExpression());
+			def.mCanHaveText = elementInfo.canHaveText();
+
+			Map<String, List<Expression>> atnameToDefs = buildNameExpressionsMap(def.mAttributes);
+			for (String name : atnameToDefs.keySet()) {
+				if (elementInfo.isMandatory(atnameToDefs.get(name))) {
+					def.mMandatoryChildAttributeNames.add(name);
+				}
+			}
+
+			Map<String, List<Expression>> elnameToDefs = buildNameExpressionsMap(def.mChildElements);
+			for (String name : elnameToDefs.keySet()) {
+				if (elementInfo.isMandatory(elnameToDefs.get(name))) {
+					def.mMandatoryChildElementNames.add(name);
+				}
+			}
+
+			def.mSingletonChildExpressions = elementInfo.getSingletons();
+			def.mMultipleChildExpressions = elementInfo.getMultiples();
+
+		}
+
+		// Handle Attribute Definitions
+		Iterator<PuzzlePiece> aiter = attributes.iterator();
+		while (aiter.hasNext()) {
+			PuzzlePiece def = aiter.next();
+
+			MSVExpressionIterator datatypeFinder = new MSVExpressionIterator(def.getExpression(), DataExp.class, MSVExpressionIterator.DIRECT_CHILDREN_ONLY);
+			while (datatypeFinder.hasNext()) {
+				DataExp data_exp = (DataExp) datatypeFinder.next();
+				def.mDatatypes.add(new PuzzlePiece(data_exp));
+			}
+
+			MSVExpressionIterator valueFinder = new MSVExpressionIterator(def.getExpression(), ValueExp.class, MSVExpressionIterator.DIRECT_CHILDREN_ONLY);
+			while (valueFinder.hasNext()) {
+				ValueExp value_exp = (ValueExp) valueFinder.next();
+				if (value_exp.getName().localName.equals("token")) {
+					def.mValues.add(new PuzzlePiece(value_exp));
+				}
+			}
+
+		}
+
+	}
+
+	// Makes all Definitions unmodifiable
+	private static void makePuzzlePiecesImmutable(PuzzlePieceSet defs) {
+		Iterator<PuzzlePiece> iter = defs.iterator();
+		while (iter.hasNext()) {
+			PuzzlePiece def = iter.next();
+			def.mAttributes.makeImmutable();
+			def.mChildElements.makeImmutable();
+			def.mMultiples.makeImmutable();
+			def.mParents.makeImmutable();
+			def.mValues.makeImmutable();
+			def.mDatatypes.makeImmutable();
+		}
+		defs.makeImmutable();
+	}
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzlePieceSet.java b/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzlePieceSet.java
new file mode 100644
index 0000000..5e45505
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/PuzzlePieceSet.java
@@ -0,0 +1,435 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+
+/**
+ * Collection Class for RelaxNG definitions of an Element, Attribute, Value or Datatype.
+ *
+ * <p>Conventions: <ul><li>PuzzlePiece sorting is done by ns:local tag names as first key and hashCode as second key (see class PuzzlePiece).</li>
+ * <li>Since it is a Collection, PuzzlePieceSet is not meant to be used in a Collection. So equals(o) and hashCode() are not overwritten</li>
+ * <li>All returned PuzzlePieceSet objects are immutable to protect them against
+ * naive usage in velocity templates</li></ul></p>
+ */
+public class PuzzlePieceSet implements QNamedPuzzleComponent, Collection<PuzzlePiece> {
+
+    private boolean mImmutable = false;
+    private SortedSet<PuzzlePiece> mDefinitions;
+
+    public PuzzlePieceSet() {
+        mDefinitions = new TreeSet<PuzzlePiece>();
+    }
+
+    public PuzzlePieceSet(Collection<PuzzlePiece> c) {
+        mDefinitions = new TreeSet<PuzzlePiece>(c);
+    }
+
+    private void assertNotImmutable() {
+        if (mImmutable) {
+            throw new RuntimeException("Attempt to change an immutable DefinitionSet.");
+        }
+    }
+
+    private void assertNotEmpty(String plannedAction) {
+        if (this.size()==0) {
+            throw new RuntimeException("Attempt to " + plannedAction + " of empty DefinitionSet ");
+        }
+    }
+    
+    private void assertMultiples(String plannedAction) {
+        assertNotEmpty(plannedAction);
+        PuzzlePiece first = first();
+        MSVExpressionType type = first.getType();
+        String name = first.getQName();
+        for (PuzzlePiece def : this) {
+            if (!type.equals(def.getType())) {
+                throw new RuntimeException("Attempt to " + plannedAction + " of DefinitionSet consisting of different types of Definition objetcs.");
+            }
+            String defname = def.getQName();
+            if ((name == null && defname != null) || !name.equals(defname)) {
+                throw new RuntimeException("Attempt to " + plannedAction + " of DefinitionSet consisting of differently named Definition objetcs.");
+            }
+        }
+    }
+
+    public boolean equals(Object o) {
+        return (o instanceof PuzzlePieceSet && ((PuzzlePieceSet) o).mDefinitions.equals(mDefinitions)) ? true : false;
+    }
+
+    public int hashCode() {
+        return mDefinitions.hashCode();
+    }
+    
+    private PuzzlePiece first() {
+        return this.iterator().next();
+    }
+
+    /* Unite Definitions with equal content
+     *
+     * Returns a Map of the lost Definitions to their survived counterparts
+     */
+    Map<PuzzlePiece, PuzzlePiece> uniteDefinitionsWithEqualContent() {
+        Map<PuzzlePiece, PuzzlePiece> retval = new HashMap<PuzzlePiece, PuzzlePiece>();
+        SortedSet<PuzzlePiece> immutableSet = new TreeSet<PuzzlePiece>(this.mDefinitions);
+        for (PuzzlePiece def1 : immutableSet) {
+            if (!this.mDefinitions.contains(def1)) {
+                // if def1 is already removed, we shouldn't process it
+                continue;
+            }
+            for (PuzzlePiece def2 : immutableSet.tailSet(def1)) {
+                if (def1 == def2) {
+                    // Don't compare def1 to def1
+                    continue;
+                }
+                if (!this.mDefinitions.contains(def2)) {
+                    //if def2 is already removed, we shouldn't process it
+                    continue;
+                }
+                if (!def1.getQName().equals(def2.getQName())) {
+                    break;
+                }
+                // Now test for content equality
+                if (def1.contentEquals(def2)) {
+                    // remove from map
+                    this.remove(def2);
+                    // map lost to survived counterpart
+                    retval.put(def2, def1);
+                    // mix parent information
+                    def1.getParents().addAll(def2.getParents());
+                }
+            }
+        }
+        // Remove deleted multiples in a separate step since in the first step the needed
+        // information wasn't present (note that Multiples are no synonym for Definitions with equal content!)
+        for (PuzzlePiece def : this.mDefinitions) {
+            PuzzlePieceSet immutableDups = new PuzzlePieceSet(def.withMultiples());
+            for (PuzzlePiece multiple : immutableDups) {
+                if (multiple != def) {
+                    if (!this.mDefinitions.contains(multiple)) {
+                        def.withMultiples().remove(multiple);
+                    }
+                }
+            }
+        }
+        return retval;
+    }
+    
+    /**
+     * Make PuzzlePieceSet immutable. Cannot be undone.
+     *
+     * Template Usage: Not for use in templates as all PuzzlePieceSet already have been made immutable.
+     */
+    public void makeImmutable() {
+        mImmutable = true;
+    }
+
+    /**
+     * <p>Returns new PuzzlePieceSet containing the elements of this PuzzlePieceSet, but restricted to one
+     * PuzzlePiece per Name.</p>
+     *
+     * <p>Template Usage: #foreach ($element in $elements.withoutMultiples())</p>
+     *
+     * @return new PuzzlePieceSet
+     */
+    public PuzzlePieceSet withoutMultiples() {
+        Map<String, PuzzlePiece> uniqueMap = new HashMap<String, PuzzlePiece>();
+        for (PuzzlePiece def : this) {
+            uniqueMap.put(def.getQName(), def);
+        }
+        return new PuzzlePieceSet(uniqueMap.values());
+    }
+
+    /**
+     * <p>Returns new PuzzlePieceSet containing the elements of this PuzzlePieceSet, but without
+     * the elements of the parameter removeAll</p>
+     *
+     * <p>Template Usage: #set ($non_base_attributes = $element.getAttributes().without($baseclass.getAttributes())</p>
+     *
+     * @param removeAll QNamedPuzzleComponent which (or which elements) should be removed from the new PuzzlePieceSet
+     * @return new PuzzlePieceSet
+     */
+    public PuzzlePieceSet without(QNamedPuzzleComponent removeAll) {
+        PuzzlePieceSet retval = new PuzzlePieceSet(this);
+        retval.removeAll(removeAll.getCollection());
+        return retval;
+    }
+
+    /**
+     * Returns new PuzzlePieceSet containing the elements of this PuzzlePieceSet, but only those
+     * which have at least one element from the QNamedPuzzleComponent parameter as one of their parent Definitions.
+     *
+     * <p>Template Usage: Imagine we have one attribute name and we're not interested in the differences
+     * between Definitions sharing the same name. We're now printing the
+     * resulting allowed attribute values for each parent element name: </p>
+     * <code><br />
+     * #set ( $oneOrMoreAttributes = $model.getAttribute($atttributename) )<br />
+     * ## we want to write information about only _one_ parent per Name...<br />
+     * #foreach ($parent in $oneOrMoreAttributes.getParents().withoutMultiples())<br/>
+     * - Allowed Values for Parent Element $parent :<br />
+     * ## but we want the attribute values displayed which are allowed in _all_ parents with the same Name...<br />
+     * #foreach ($value in $oneOrMoreAttributes.byParent($parent.withMultiples()).getValues())<br />
+     *    -- "$value" <br />
+     * #end<br />
+     * #end
+     * </code><br />
+     *
+     * @param parents
+     * @return new PuzzlePieceSet
+     */
+    public PuzzlePieceSet byParent(QNamedPuzzleComponent parents) {
+        PuzzlePieceSet retval = new PuzzlePieceSet();
+        for (PuzzlePiece def : this) {
+            PuzzlePieceSet defparents = def.getParents();
+            for (PuzzlePiece parent : parents.getCollection()) {
+                if (defparents.contains(parent)) {
+                    retval.add(def);
+                    break;
+                }
+            }
+        }
+        return retval;
+    }
+
+    /**
+     * Check whether this List contains an Element by this Name
+     *
+     * @param aDefinitionName
+     * @return True if an element by this name exists
+     */
+    public boolean containsName(String aDefinitionName) {
+        for (PuzzlePiece def : this) {
+            if (def.getQName().equals(aDefinitionName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check whether this List contains an Element by this Name
+     *
+     * @param aNamed
+     * @return True if an element by this name exists
+     */
+    public boolean containsName(QNamed aNamed) {
+        return containsName(aNamed.getQName());
+    }
+
+/*
+ * -----------------------------------------------------
+ *  Interface QNamed
+ * -----------------------------------------------------
+ */
+
+
+    /**
+     * Gets the ns:local tag name of the Definitions - provided that this PuzzlePieceSet
+     * is not empty and all Definitions share the same tag name. Throws Exception otherwise.
+     *
+     * @return The tag name
+     */
+    public String getQName() {
+        assertMultiples("get name");
+        return first().getQName();
+    }
+
+    /**
+     * Gets the type of the Definitions - provided that this PuzzlePieceSet
+     * is not empty and all Definitions have the same type and name. Throws Exception otherwise.
+     */
+    public MSVExpressionType getType() {
+        assertMultiples("get type");
+        return first().getType();
+    }
+
+    /**
+     * Determines whether the Definitions can have text - provided that this PuzzlePieceSet
+     * is not empty and all Definitions have the same type and name. Throws Exception otherwise.
+     */
+    public boolean canHaveText() {
+        assertMultiples("determine text availability");
+        for (PuzzlePiece def : this) {
+            if (def.canHaveText()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public boolean isSingleton(PuzzleComponent child) {
+        for (PuzzlePiece def : this) {
+            if (!def.isSingleton(child)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public String getLocalName() {
+        return XMLModel.extractLocalname(getQName());
+    }
+
+    public String getNamespace() {
+        return XMLModel.extractNamespace(getQName());
+    }
+
+    /**
+     * <p>Returns String representation (convenient method for getQName())</p>
+     *
+     * <p>Template Usage: Just use $aDefinitionSet as you would use a string variable</p>
+     */
+    public String toString() {
+        return getQName();
+    }
+
+/*
+ * -----------------------------------------------------
+ *  Interface Collection<PuzzlePiece>
+ * -----------------------------------------------------
+ */
+
+    public boolean add(PuzzlePiece e) {
+        assertNotImmutable();
+        return mDefinitions.add(e);
+    }
+
+    public boolean addAll(Collection<? extends PuzzlePiece> c) {
+        assertNotImmutable();
+        return mDefinitions.addAll(c);
+    }
+
+    public void clear() {
+        assertNotImmutable();
+        mDefinitions.clear();
+    }
+
+    public boolean contains(Object o) {
+        return (o instanceof PuzzlePiece) ? mDefinitions.contains((PuzzlePiece) o) : false;
+    }
+
+    public boolean containsAll(Collection<?> c) {
+        return mDefinitions.containsAll(c);
+    }
+
+    public boolean isEmpty() {
+        return mDefinitions.isEmpty();
+    }
+
+    public Iterator<PuzzlePiece> iterator() {
+        return mDefinitions.iterator();
+    }
+
+    public boolean remove(Object o) {
+        assertNotImmutable();
+        return (o instanceof PuzzlePiece) ? mDefinitions.remove((PuzzlePiece) o) : false;
+    }
+
+    public boolean removeAll(Collection<?> c) {
+        assertNotImmutable();
+        return mDefinitions.removeAll(c);
+    }
+
+    public boolean retainAll(Collection<?> c) {
+        assertNotImmutable();
+        return mDefinitions.retainAll(c);
+    }
+
+    public int size() {
+        return mDefinitions.size();
+    }
+
+    public Object[] toArray() {
+        return mDefinitions.toArray();
+    }
+
+    public <T> T[] toArray(T[] a) {
+        return mDefinitions.toArray(a);
+    }
+
+/*
+ * -----------------------------------------------------
+ *  Interface QNamedPuzzleComponent
+ * -----------------------------------------------------
+ */
+
+    public PuzzlePieceSet getChildElements() {
+        PuzzlePieceSet retval = new PuzzlePieceSet();
+        for (PuzzlePiece def : this) {
+            retval.addAll(def.getChildElements());
+        }
+        return retval;
+    }
+
+    public boolean isMandatory(QNamedPuzzleComponent child) {
+        for (PuzzlePiece def : this) {
+            if (def.isMandatory(child)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public Collection<PuzzlePiece> getCollection() {
+        return mDefinitions;
+    }
+
+    public PuzzlePieceSet getAttributes() {
+        PuzzlePieceSet retval = new PuzzlePieceSet();
+        for (PuzzlePiece def : this) {
+            retval.addAll(def.getAttributes());
+        }
+        return retval;
+    }
+
+    public PuzzlePieceSet getDatatypes() {
+        PuzzlePieceSet retval = new PuzzlePieceSet();
+        for (PuzzlePiece def : this) {
+            retval.addAll(def.getDatatypes());
+        }
+        return retval;
+    }
+
+    public PuzzlePieceSet getParents() {
+        PuzzlePieceSet retval = new PuzzlePieceSet();
+        for (PuzzlePiece def : this) {
+            retval.addAll(def.getParents());
+        }
+        return retval;
+    }
+
+
+    public PuzzlePieceSet getValues() {
+        PuzzlePieceSet retval = new PuzzlePieceSet();
+        for (PuzzlePiece def : this) {
+            retval.addAll(def.getValues());
+        }
+        return retval;
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/QNameValue.java b/trunk/generator/schema2template/src/main/java/schema2template/model/QNameValue.java
new file mode 100644
index 0000000..6564391
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/QNameValue.java
@@ -0,0 +1,68 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+/**
+ * <p>Domain specific models (Odf, Java, ...) often return 'ns:localname' Strings.
+ * The purpose of this class is to encapsulate these Strings so in templates they
+ * can be treated like other QNamed objects.</p>
+ * <p>Contract: These objects are distincted only by the encapsulated String. So
+ * they use this String for equals(o), hashCode() and compareTo(o).</p>
+ */
+public class QNameValue implements QNamed, Comparable<QNameValue> {
+
+    private String mName;
+
+    /**
+     * Constructor to create a String wrapper
+     *
+     * @param name the String to wrap
+     */
+    public QNameValue(String name) {
+        mName = name;
+    }
+
+    public boolean equals(Object o) {
+        return (o instanceof QNameValue) ? ((QNameValue) o).mName.equals(mName) : false;
+    }
+
+    public int hashCode() {
+        return mName.hashCode();
+    }
+
+    public String getLocalName() {
+        return XMLModel.extractLocalname(mName);
+    }
+
+    public String getQName() {
+        return mName;
+    }
+
+    public String getNamespace() {
+        return XMLModel.extractNamespace(mName);
+    }
+
+    public int compareTo(QNameValue o) {
+        return this.mName.compareTo(o.mName);
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/QNamed.java b/trunk/generator/schema2template/src/main/java/schema2template/model/QNamed.java
new file mode 100644
index 0000000..279880a
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/QNamed.java
@@ -0,0 +1,56 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+/**
+ * Unambiguously named (ns:localname) object.
+ *
+ * <p>Contract: Every object implementing hasQName should overwrite the toString() method and
+ * return the QName.</p>
+ * <p>Warning: Using this interface does not imply any information about
+ * the equals() or hashCode() methods. So for using objects with qualified names in a
+ * Collection, you need information from the implementing class.</p>
+ */
+public interface QNamed {
+
+    /**
+     * Get the QName (i.e. namespace:localname )
+     *
+     * @return full name
+     */
+    public String getQName();
+
+    /**
+     * Get only namespace
+     *
+     * @return namespace
+     */
+    public String getNamespace();
+
+    /**
+     * Get only localname
+     *
+     * @return localname
+     */
+    public String getLocalName();
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/QNamedPuzzleComponent.java b/trunk/generator/schema2template/src/main/java/schema2template/model/QNamedPuzzleComponent.java
new file mode 100644
index 0000000..8795b06
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/QNamedPuzzleComponent.java
@@ -0,0 +1,61 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+/**
+ * By using this interface you declare that:
+ * <ul>
+ * <li>you don't care if a QNamedPuzzleComponent is a Collection of Jigsaw pieces
+ * or one single Jigsaw piece.</li>
+ * <li>you expect one single name. If the QNamedPuzzleComponent is a Collection of definitions,
+ * all definitions have to be equally named. Calling getQName(), toString(), getLocalName() or
+ * getNamespace() on a Collection of differently named definitions will throw a
+ * RuntimeException.
+ * For example: 
+ * A multiple definition of an attribute is frequently used in an XML schema.
+ * 
+ *
+ * </li>
+ * </ul>
+ */
+public interface QNamedPuzzleComponent extends QNamed, PuzzleComponent {
+
+    /**
+     * ELEMENT Definition only: Determine solely by child type and name
+     * whether child is mandatory.
+     * 
+     * <p>Here's why we're not using the child Definition object(s) for this:
+     * An element often has a mandatory attribute, but two (or more) different content definitions
+     * for this attribute. This is done by defining this attribute twice and creating a 
+     * CHOICE between both Definitions. If you'd ask whether one of these definitions is mandatory,
+     * you'd always get false as answer as you have the choice between the two definitions.
+     * Mostly this is not the answer you're looking for.</p>
+     *
+     * <p>Contract: If 'this' is a Collection, mandatory means mandatory for one member of 'this'.</p>
+     *
+     * @param child The child Definition(s) of type ELEMENT or ATTRIBUTE
+     * @return true if child is a defined child of this and if it's mandatory. False otherwise.
+     *
+     */
+    public boolean isMandatory(QNamedPuzzleComponent child);
+
+}
diff --git a/trunk/generator/schema2template/src/main/java/schema2template/model/XMLModel.java b/trunk/generator/schema2template/src/main/java/schema2template/model/XMLModel.java
new file mode 100644
index 0000000..c283eba
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/java/schema2template/model/XMLModel.java
@@ -0,0 +1,397 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.model;
+
+import com.sun.msv.grammar.Expression;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+/**
+ * The most important model, the first access to the XML Schema information.
+ * 
+ * Provides all XML attribute and XML element definitions from the schema.
+ * All further information can be accessed from those definitions
+ * (e.g. dependencies, constant values, data types, etc.).
+ */
+public class XMLModel {
+
+    PuzzlePieceSet mElements = new PuzzlePieceSet();
+    PuzzlePieceSet mAttributes = new PuzzlePieceSet();
+    Map<String, PuzzlePiece> mNameElementMap;
+    Map<String, PuzzlePiece> mNameAttributeMap;
+
+    /**
+     * Constructs new model by the MSV root expression
+     *
+     * @param root MSV root Expression
+     */
+    public XMLModel(Expression root) {
+        PuzzlePiece.extractPuzzlePieces(root, mElements, mAttributes);
+        mElements.makeImmutable();
+        mAttributes.makeImmutable();
+        mNameElementMap = createMap(mElements);
+        mNameAttributeMap = createMap(mAttributes);
+    }
+
+    // Create Map Name->PuzzlePiece. Ignore the fact that there may be more than one PuzzlePiece per Name
+    private static Map<String, PuzzlePiece> createMap(Collection<PuzzlePiece> definitions) {
+        Map<String, PuzzlePiece> retval = new HashMap<String, PuzzlePiece>();
+        Iterator<PuzzlePiece> iter = definitions.iterator();
+        while (iter.hasNext()) {
+            PuzzlePiece def = iter.next();
+            retval.put(def.getQName(), def);
+        }
+        return retval;
+    }
+
+    /**
+     * Get all elements, sorted by ns:local name.
+     *
+     * @return Unmodifiable SortedSet of elements
+     */
+    public PuzzlePieceSet getElements() {
+        return mElements;
+    }
+
+    /**
+     * Get all attributes, sorted by ns:local name.
+     * 
+     * @return Unmodifiable SortedSet of attributes
+     */
+    public PuzzlePieceSet getAttributes() {
+        return mAttributes;
+    }
+
+    /**
+     * Get element(s) by tag name. If there are multiple elements sharing the same
+     * tag name, a PuzzlePieceSet is returned. If not, a single PuzzlePiece is returned.
+     *
+     * @param name
+     * @return Element PuzzlePiece(s)
+     */
+    public QNamedPuzzleComponent getElement(String name) {
+        PuzzlePiece element = mNameElementMap.get(name);
+        if (element == null) {
+            return null;
+        }
+        return element.withMultiples();
+    }
+
+    /**
+     * Get element by tag name and hash code. The hash code distincts
+     * Elements sharing the same tag name. 
+     *
+     * @param name
+     * @param hashCode
+     * @return Element PuzzlePiece
+     */
+    public PuzzlePiece getElement(String name, int hashCode) {
+        PuzzlePiece element = mNameElementMap.get(name);
+        if (element == null) {
+            return null;
+        }
+        for (PuzzlePiece def : element.withMultiples()) {
+            if (def.hashCode() == hashCode) {
+                return def;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Get attribute by tag name. If there are multiple attributes sharing the same
+     * tag name, a PuzzlePieceSet is returned. If not, a single PuzzlePiece is returned.
+     *
+     * @param name
+     * @return Attribute PuzzlePiece(s)
+     */
+    public QNamedPuzzleComponent getAttribute(String name) {
+        PuzzlePiece attribute = mNameAttributeMap.get(name);
+        if (attribute == null) {
+            return null;
+        }
+        return attribute.withMultiples();
+    }
+
+    /**
+     * Get attribute by tag name and hash code. The hash code distincts
+     * Attributes sharing the same tag name. 
+     *
+     * @param name
+     * @param hashCode
+     * @return Attribute PuzzlePiece
+     */
+    public PuzzlePiece getAttribute(String name, int hashCode) {
+        PuzzlePiece attribute = mNameAttributeMap.get(name);
+        if (attribute == null) {
+            return null;
+        }
+        for (PuzzlePiece def : attribute.withMultiples()) {
+            if (def.hashCode() == hashCode) {
+                return def;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Convert a-few:words into AFewWords in CamelCase spelling
+     *
+     * @param raw input String
+     * @return filtered output String
+     */
+    public static String camelCase(String raw) {
+       StringTokenizer tok = new StringTokenizer(raw, "-:/ _.,");
+       String retval = "";
+       while (tok.hasMoreElements()) {
+           String word = tok.nextToken();
+           if (! word.equals("")) {
+               retval += word.substring(0, 1).toUpperCase() + word.substring(1);
+           }
+       }
+       return retval;
+    }
+
+    /**
+     * Convert a-few:words into AFewWords in CamelCase spelling
+     *
+     * @param def input
+     * @return filtered output String
+     */
+    public static String camelCase(QNamed def) {
+        return camelCase(def.getQName());
+    }
+
+    /**
+     * Convert a-few:words into aFewWords in spelling for java method names
+     *
+     * @param raw input String
+     * @return filtered output String
+     */
+    public static String javaCase(String raw) {
+        String retval = camelCase(raw);
+        if (retval.length() > 0) {
+            retval = retval.substring(0,1).toLowerCase().concat(retval.substring(1));
+        }
+        return retval;
+    }
+
+    /**
+     * Convert a-few:words into aFewWords in spelling for java method names
+     *
+     * @param def input
+     * @return filtered output String
+     */
+    public static String javaCase(QNamed def) {
+        return javaCase(def.getQName());
+    }
+
+    /**
+     * Convert a-few:words into A_FEW_WORDS in spelling used for Java constants
+     *
+     * @param raw input String
+     * @return filtered output String
+     */
+    public static String constantCase(String raw) {
+       StringTokenizer tok = new StringTokenizer(raw, "-:/ _.,");
+       String retval = "";
+       String separator = "";
+       while (tok.hasMoreElements()) {
+           String word = tok.nextToken();
+           if (! word.equals("")) {
+               retval += separator + word.toUpperCase();
+               separator = "_";
+           }
+       }
+       return retval;
+    }
+
+    /**
+     * Convert a-few:words into A_FEW_WORDS in spelling used for Java constants
+     *
+     * @param def input
+     * @return filtered output String
+     */
+    public static String constantCase(QNamed def) {
+        return constantCase(def.getQName());
+    }
+
+    /**
+     * Assist method for camel-case adaptions or namespace extraction.
+	 * Maybe not used anymore: Get first word out of a String containing delimiters like "-:/ _.,"
+     *
+	 *
+     * @param raw input String
+     * @return filtered output String
+     */
+    public static String firstWord(String raw) {
+       StringTokenizer tok = new StringTokenizer(raw, "-:/ _.,");
+       if (tok.hasMoreElements()) {
+           return tok.nextToken();
+       }
+       return null;
+    }
+
+    /**
+     * Maybe not used anymore: Get first word out of a QNamed object containing delimiters like "-:/ _.,"
+     *
+     * @param def input
+     * @return first word
+     */
+    public static String firstWord(QNamed def) {
+        return firstWord(def.getQName());
+    }
+
+    /**
+     * Maybe not used anymore: Get last word out of a String containing delimiters like "-:/ _.,"
+     *
+     * @param raw input
+     * @return last word
+     */
+    public static String lastWord(String raw) {
+       StringTokenizer tok = new StringTokenizer(raw, "-:/ _.,");
+       String retval = null;
+       while (tok.hasMoreElements()) {
+           retval = tok.nextToken();
+       }
+       return retval;
+    }
+
+    /**
+     * Maybe not used anymore: Get last word out of a String containing delimiters like "-:/ _.,"
+     *
+     * @param def input
+     * @return last word
+     */
+    public static String lastWord(QNamed def) {
+        return lastWord(def.getQName());
+    }
+
+    /**
+     * (Java) member variable may not start with a number, so escape it
+     * @param in raw input
+     * @return filtered output, starting with a literal
+     */
+    public static String escapeKeyword(QNamed in) {
+        return escapeKeyword(in.getQName());
+    }
+
+    /**
+     * (Java) Keyword may not start with a number, so escape it
+     *
+     * @param in raw input
+     * @return filtered output, starting with a literal
+     */
+    public static String escapeKeyword(String in) {
+        if (in == null || in.length() == 0) {
+            return in;
+        }
+        String out = in;
+        // Do not start with number
+        if (out.substring(0,1).matches("^\\p{Digit}")) {
+            out = "_" + out;
+        }
+        return out;
+    }
+
+    /**
+     * Escape the quotation marks of String literals
+     * 
+     * @param in raw input
+     * @return filtered output, with escaped quotation marks
+     */
+    public static String escapeLiteral(QNamed in) {
+        return escapeLiteral(in.getQName());
+    }
+
+    /**
+     * Escape the quotation marks of String literals
+     *
+     * @param in raw input
+     * @return filtered output, with escaped quotation marks
+     */
+    public static String escapeLiteral(String in) {
+        if (in == null || in.length() == 0) {
+            return in;
+        }
+        String out = in;
+        // Escape '"'
+        out = out.replaceAll("\"", "\\\\\"");
+        return out;
+    }
+
+    /**
+     * Extract namespace ns from ns:local name
+     *
+     * @param name in form ns:local
+     * @return ns part from ns:local name
+     */
+    public static String extractNamespace(String name) {
+        int pos = name.lastIndexOf(":");
+        if (pos > 0 && pos < name.length() - 1) {
+            return name.substring(0, pos);
+        }
+        else {
+            return null;
+        }
+    }
+
+    /**
+     * Extract namespace ns from ns:local name
+     *
+     * @param def QNamed object
+     * @return ns part from ns:local name
+     */
+    public static String extractNamespace(QNamed def) {
+        return extractNamespace(def.getQName());
+    }
+
+    /**
+     * Extract localname local from ns:local name
+     *
+     * @param name in form ns:local
+     * @return local part from ns:local name
+     */
+    public static String extractLocalname(String name) {
+        int pos = name.lastIndexOf(":");
+        if (pos > 0 && pos < name.length() - 1) {
+            return name.substring(pos + 1);
+        }
+        else {
+            return null;
+        }
+    }
+
+    /**
+     * Extract localname local from ns:local name
+     *
+     * @param def QNamed object
+     * @return local part from ns:local name
+     */
+    public static String extractLocalname(QNamed def) {
+        return extractLocalname(def.getQName());
+    }
+
+}
diff --git a/trunk/generator/schema2template/src/main/javadoc/overview.html b/trunk/generator/schema2template/src/main/javadoc/overview.html
new file mode 100644
index 0000000..53b2acb
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/javadoc/overview.html
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!--
+ /************************************************************************
+ *
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2009, 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.
+
+ ************************************************************************/
+
+-->
+<!--
+Reference this overview.html
+by specifying it in an ant task, like:
+<javadoc
+  ...
+  overview="${path-to-overview.html}/overview.html"
+/>
+-->
+<html>
+<head>
+    <title>Schema2Template Overview</title>
+</head>
+<body> 
+<p>The schema2template project's objective is to provide an API for easily filling user templates from arbitrary XML schematas.</p>
+            
+<h2>Introduction</h2>
+
+<p>This project allows you to process a RelaxNG schema file and to convert the definitions to any text based format you like. E.g.
+you can produce one source code file for each element defined in schema file. Or maybe you want to produce one single text or HTML
+based overview of the schema.</p>
+
+<p>Since this project is based on the Sun Multi Schema Validator, it should be able to process multiple schema formats. However up to now it has only been
+tested with RelaxNG.</p>
+
+<p>Several examples are delivered together with this project:</p>
+<ol>
+<li>Read the OpenDocument Schema and produce a Java based DOM API</li>
+<li>Read the OpenDocument Schema and produce an HTML overview of all ODF elements and attributes</li>
+<li>Read the OpenDocument Schema and produce one single Python file which represents the element hierarchy</li>
+</ol>
+
+<p>A non-trivial topic is the concept of multiple definitions for a single element or attribute, which is possible in RelaxNG. 
+The easiest way would be to unite these definitions (we call them Multiples) to one common definition. However this way important information would be lost.
+E.g. one element may have the attribute foo whith possible value <em>left</em>. This attribute may also be possible in another element, but then with 
+possible values <em>left</em> and <em>right</em>. That's why we decided to keep the distinction, even if it may make it harder to understand the API of this project. 
+We might enhance this concept in the future, e.g. to exactly determine which of the multiple definitions holds for the current element in an ODF element tree.
+</p>
+
+<h2>Velocity Help</h2>
+
+Go to the "Engine" section of the the Velocity <a href="http://velocity.apache.org/">project site</a> to find the Velocity User Guide.
+
+The velocity template structure and commands are explained there.
+
+<h2>Schema2Template file structure</h2>
+
+<p>We use a 2-step procedure: First we generate a list of files we'd like to create. While we could write this list manually, the generation of this
+list frees us from having to write an entry for each schema element or attribute.
+
+The template to generate this list is called output-files.vm, the list itself (i.e. the result of running output-files.vm) is called output-files.xml.</p>
+
+<p>Here's an example output-files.xml:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;filelist&gt;
+    &lt;file path=&quot;OdfHtmlSpecification.html&quot; template=&quot;odf-reference-template.vm&quot; /&gt;
+    &lt;file path=&quot;element/anim/AnimAnimateElement.java&quot; 
+    	     context=&quot;anim:animate&quot; 
+	     template=&quot;java-odfdom-element-template.vm&quot; /&gt;
+    ...
+&lt;/filelist&gt;
+</pre>
+
+<p>In the second step we parse output-files.xml. For every "file" entry we run the given Velocity "template", fill its context with the optional "context"
+property and write the output to the given "path". 
+The "context" property (and as seen later - the optional "param" property as well) is used in templates which process only one element or attribute - 
+to provide them with the name of this element or attribute. 
+In the above example the template for the generation of a Java class is such a template, while the template to produce the whole 
+OdfHtmlSpecification.html is a template whith a global context, i.e. it processes the whole Schema.</p>
+
+<h2>Schema2Template specific template help</h2>
+
+<p>In velocity templates, you have context objects, provided by the Java Velocity Runner Class. These are Java objects and you can call any method 
+of these objects like you would do in Java. In Schema2Template we provide the following context objects (see JavaDoc of the given Classes):</p>
+
+<a name="contextObjects" />
+
+<ul>
+<li>SchemaModel model: Provides the elements and attributes defined in the schema.</li>
+<li>OdfModel odfmodel: Provides additional information from the Odf Specification, like attribute standard values or element style families.</li>
+<li>SourceCodeModel javamodel: Provides additional information for generation of Source Code, like common base classes for elements.</li>
+<li>String context: The (optional) name of the current element. You can use model to get the element or attribute described by this name</li>
+<li>String param: A freely usable (optional) argument. An example usage is to provide a number to distinguish between elements (or attributes) sharing the same name.</li>
+</ul>
+
+<p>It should be noted that the context of output-files.vm behaves like the context of all templates which are started from there. Of course in the
+context of output-files.vm the optional context Objects "context" and "param" are null.</p>
+
+<h3>PuzzlePiece Class</h3>
+
+<p>The PuzzlePiece class provides some sort of "piece of a puzzle", containing the definition of an Odf element, attribute, datatype or
+constant attribute value. This class contains methods for quiering the relationship between definitions, e.g. to get all child elements,
+attributes, parent elements, datatypes, values, etc... PuzzlePieces are
+sorted by their name (which has the form "ns:localname").</p>
+
+<p>Some of these return parameters are collections. For these there is the class PuzzlePieceSet, which is a SortedSet of PuzzlePieces. PuzzlePiece
+and PuzzlePieceSet both implement the interface QNamedPuzzleComponent, and therefore have many methods in common (you can query all child elements
+for a PuzzlePiece as well as for a whole PuzzlePieceSet. And you can get the name for a PuzzlePiece as well as for a whole PuzzlePieceSet - provided all PuzzlePieces
+are equally named, ...)</p>
+
+<p>Before we come to the point on how to use PuzzlePieces and how to get them, there's one more important thing to know: </p>
+
+<h3>Multiples and Multiple Number</h3>
+
+<p>One element (form:list-value) and many attributes (chart-symbol-type, text:outline-level, etc...) are defined multiple times in Odf Schema. 
+Each definition is represented by a PuzzlePiece object. Those PuzzlePieces sharing the same name are called Multiples.
+Each Multiple may differ in parent elements, child elements and attributes.
+From a PuzzlePiece you can get all PuzzlePieces sharing the same name as the PuzzlePiece
+by its method withMultiples(). If there are no other PuzzlePieces you get at least a singleton PuzzlePieceSet containing only this PuzzlePiece.</p>
+
+<h3>How to get QNamedPuzzleComponent (PuzzlePiece and PuzzlePieceSets)</h3>
+
+<p>If you do not want to distinguish between elements (or attributes) sharing the same name you can use in templates processing only one element:<br />
+$model.getElement($context) or $model.getAttribute($context). By this you get a PuzzlePieceSet of PuzzlePieces sharing the same name. Since both
+classes share most methods, you can go on with your template like you'd use one single PuzzlePiece.</p>
+
+<p>If you want to distinguish between elements (or attributes) sharing the same name you can use in templates processing only one element:<br />
+$model.getElement($context, $param) or $model.getAttribute($context, $param), provided that context contains the name of the PuzzlePiece and param
+contains the multiple number to distinguish between these PuzzlePieces. In other words you have to fill both properties in output-files.vm with the needed values.
+You get the name of a PuzzlePiece by ${aDefinition.getQName()} or directly by $aDefinition and the multiple number by ${aDefinition.getMultipleNumber()}.<br />
+<em>It should be noted that this is a very rare use case (e.g. if you want to produce one file per PuzzlePiece and not - as usual - per PuzzlePiece name).</em>
+</p> 
+
+<p>If you loop over a Set of PuzzlePieces, this Set will contain Multiples. If you want to distinguish between these elements/attributes, there's nothing special to do.
+But if you do not want to distinguish between elements/attributes sharing the same name, you have two steps to do: <br />
+First, you have to create a new PuzzlePieceSet without
+these Multiples by myPuzzlePiece.withoutMultiples(). Now you have a reduced Set of PuzzlePieces, where only one random PuzzlePiece per name remains. <br />
+If you'd process only the random remaining PuzzlePiece for a name, and you're processing more than just the PuzzlePiece name, you might miss some information
+contained in the removed multiples. Even more, since you distinguish only between names, there might be some information contained in 
+Multiples which weren't even in the list before. (like an attribute Multiple
+which wasn't in the $element.getAttributes() list as it's only defined for another element). So to get all
+Multiples (not only those which were contained in the Set) of a PuzzlePiece, you use myPizzlePiece.withMultiples() for each
+PuzzlePiece of the reduced PuzzlePieceSet your're looping over.</p>
+
+<h3>How to use QNamedPuzzleComponent (PuzzlePieces and PuzzlePieceSets)</h3>
+
+<p>Mostly you might want to use a PuzzlePiece by inserting it directly into the template, like "this element is called $element", or
+like "the namespace of this element is ${element.getNamespace()}". It doesn't matter if $element is a PuzzlePiece as returned by model.getElement($context, $param),
+or a PuzzlePieceSet of equally named PuzzlePieces as returned by model.getElement($context).</p>
+
+<p>The model provides a few additional functions for String formatting like model.camelCase($element) for text:p -&gt; TextP or model.javaCase($element) 
+for text:p -&gt; textP.</p>
+
+<p>Another usage of QNamedPuzzleComponents is to get other QNamedPuzzleComponents, e.g. by $element.getParents(), $attribute.getDatatypes(), $attribute.getValues(),
+$element.getChildElements(), $element.getAttributes().</p>
+
+<p>To restrict a PuzzlePieceSet only to the PuzzlePieces which have a common parent, there is $elements.byParent($equallyNamedParents). With this method
+you can implement very distinct validation method in attribute classes. See the byParent-example below.</p>
+
+<h3>How to read the Javadoc for Template Usage</h3>
+
+<p>Basically you could use every public method from the <a href="#contextObjects">context objects</a> in a Velocity template. But
+this is not in our intention. There are quite a few public methods which are only to be used internally, e.g. to extract
+our model from the Schema file.</p>
+
+<p>To see the list of template-ready methods, you might want to look at the TemplateAPICoverageTest and the
+OdfTemplateAPICoverageTest from the source code bundle.</p>
+
+<p>To give an example you will see that the PuzzleComponent method "canHaveText" is meant for template usage. On the other hand
+you wont find neither method compareTo nor extractPuzzlePieces from class PuzzlePiece there, so those methods are not
+meant to be used in templates. Only the methods covered by the two mentioned tests are protected against internal
+refactoring (especially against renaming).</p>
+
+<h3>Examples</h3>
+
+<h4>Here's an example template to generate a ODF reference of attribute / elements. Here the PuzzlePieces are distinguished:</h4>
+<pre>
+#foreach( $element in ${model.getElements()} )
+#if (${element.withMultiples().size()} == 1)
+#set ($duptext = "")
+#set ($hasdup = false)
+#else
+#set ($duptext = "[${element.getMultipleNumber()}]")
+#set ($hasdup = true)
+#end
+&lt;h3&gt;${element}${duptext} Element&lt;/h3&gt;
+#if ( $hasdup )
+&lt;p&gt;There are more than one PuzzlePieces by this name.&lt;/p&gt;
+#end
+#end
+</pre>
+
+<h4>Here's an example output-files.vm which only produces one entry per name (processing just the element name so the Multiples can safely be removed):</h4>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;filelist&gt;
+    &lt;file path=&quot;OdfHtmlSpecification.html&quot; template=&quot;odf-reference-template.vm&quot; /&gt;
+##
+#foreach ( $element in ${model.getElements().withoutMultiples()} )
+##
+#set($classname = &quot;${model.camelCase($element)}Element&quot; )
+    &lt;file path=&quot;element/${element.getNamespace()}/${classname}.java&quot; 
+             context=&quot;$element&quot; 
+	     template=&quot;java-odfdom-element-template.vm&quot; /&gt;
+##
+#end
+&lt;/filelist&gt;
+</pre>
+
+<h4>Here's an example template to generate a Java class for an element name (by looking at all element Multiples at once).</h4> 
+
+<p>To keep it short only the part where the Getter-Methods for all attribute names (by looking at all attribute multiples at once) are generated is shown:</p>
+<pre>
+## This will return a PuzzlePieceSet containing all element PuzzlePieces with name $context
+#set($element = ${model.getElement($context)})
+...
+##
+## Step 1: Iterate over all attributes with one random attribute PuzzlePiece per attribute name
+#foreach ( $singleattr in ${element.getAttributes().withoutMultiples()} )
+##
+## Step 2: Get all attribute definitions for one attribute name. 
+## Not needed if we're just processing the attribute name
+#set($attribute = ${singleattr.withMultiples()}
+##
+#set($aClassname = &quot;${model.camelCase($attribute)}Attribute&quot; )
+	/**
+	 * Gets the value of the &lt;code&gt;$aClassname&lt;/code&gt; attribute, 
+	 * see {&#64;odf.attribute ${attribute}}
+	 *
+	 * @return - the &lt;code&gt;String&lt;/code&gt; attribute value
+	 */
+	public String get${aClassname}() {
+	   ...
+	}
+#end
+...
+</pre>
+
+<h4>Example for the byParent method: Input value validation in attribute template</h4>
+
+<p>Implementation detail: one attribute and one parent class implemented per name -
+thus ignoring PuzzlePiece multiples at Java class level.
+However differences between attribute PuzzlePieces are respected by using a different validation:</p>
+
+<pre>
+  ## This will return a PuzzlePieceSet containing all attribute PuzzlePieces with name $context
+  #set($attribute = ${model.getAttribute($context)})
+  ...
+  public void setValue(String value) {
+  	boolean valid = false;
+  ##
+  ## Iterate over parent names and get all Multiples for each name
+  #foreach ($singleparent in ${attribute.getParents().withoutMultiples()})
+  #set ($parent = $singleparent.withMultiples())
+  	if (getParent() instanceof ${model.camelCase($parent)}Element) {
+  ##
+  ## Allow only datatypes from attribute definitions reachable from $parent
+  ## Thus here we're respecting the different definitions for the current attribute
+  #foreach ($datatype in ${attribute.byParent($parent).getDatatypes()})
+    		valid = valid || validate(${datatype}.class, value);
+  #end
+	}
+  #end
+  	if (!valid) {
+		throw new IllegalArgumentException(
+			"Invalid Value for attribute $attribute and parent "
+			+ getParent().ELEMENT_NAME);
+	}
+	mValue = value;
+  }
+</pre>
+
+</body>
+</html>
diff --git a/trunk/generator/schema2template/src/main/javadoc/schema2template/example/odf/package.html b/trunk/generator/schema2template/src/main/javadoc/schema2template/example/odf/package.html
new file mode 100644
index 0000000..17b2afa
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/javadoc/schema2template/example/odf/package.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2009, 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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        Examples for the generation of source and reference for the OpenDocument XML format. 
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/generator/schema2template/src/main/javadoc/schema2template/example/package.html b/trunk/generator/schema2template/src/main/javadoc/schema2template/example/package.html
new file mode 100644
index 0000000..ec4a728
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/javadoc/schema2template/example/package.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2009, 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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        Example classes to show possibilites of schema2template.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/generator/schema2template/src/main/javadoc/schema2template/model/package.html b/trunk/generator/schema2template/src/main/javadoc/schema2template/model/package.html
new file mode 100644
index 0000000..34ddacc
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/javadoc/schema2template/model/package.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2009, 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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        Provide the XML model information parsed from a given XML schema.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/generator/schema2template/src/main/javadoc/schema2template/package.html b/trunk/generator/schema2template/src/main/javadoc/schema2template/package.html
new file mode 100644
index 0000000..9a4b888
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/javadoc/schema2template/package.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2009, 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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        Classes to trigger the process of filling a template by a schema.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/generator/schema2template/src/main/resources/documentation/WorkInProgress-RelaxNGPatterns.odt b/trunk/generator/schema2template/src/main/resources/documentation/WorkInProgress-RelaxNGPatterns.odt
new file mode 100644
index 0000000..a837973
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/documentation/WorkInProgress-RelaxNGPatterns.odt
Binary files differ
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/config.xml b/trunk/generator/schema2template/src/main/resources/examples/odf/config.xml
new file mode 100644
index 0000000..b472c32
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/config.xml
@@ -0,0 +1,680 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+
+-->
+<config>
+    <elements>
+        <element name="chart:axis" family="chart:chart"/>
+        <element name="chart:chart" family="chart:chart"/>
+        <element name="chart:data-point" family="chart:chart"/>
+        <element name="chart:error-indicator" family="chart:chart"/>
+        <element name="chart:floor" family="chart:chart"/>
+        <element name="chart:footer" family="chart:chart"/>
+        <element name="chart:grid" family="chart:chart"/>
+        <element name="chart:legend" family="chart:chart"/>
+        <element name="chart:mean-value" family="chart:chart"/>
+        <element name="chart:plot-area" family="chart:chart"/>
+        <element name="chart:regression-curve" family="chart:chart"/>
+        <element name="chart:series" family="chart:chart"/>
+        <element name="chart:stock-gain-marker" family="chart:chart"/>
+        <element name="chart:stock-loss-marker" family="chart:chart"/>
+        <element name="chart:stock-range-line" family="chart:chart"/>
+        <element name="chart:subtitle" family="chart:chart"/>
+        <element name="chart:title" family="chart:chart"/>
+        <element name="chart:wall" family="chart:chart"/>
+        <element name="draw:page" family="draw:drawing-page"/>
+        <element name="presentation:notes" family="draw:drawing-page"/>
+        <element name="dr3d:cube" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:extrude" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:rotate" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:scene" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:sphere" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:a" rename="draw:hyperlink"/>
+        <element name="draw:caption" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:circle" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:connector" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:control" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:custom-shape" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:ellipse" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:frame" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:g" rename="draw:group" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:line" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:measure" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:page-thumbnail" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:path" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:polygon" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:polyline" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:rect" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:regular-polygon" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="office:annotation" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="text:alphabetical-index-entry-template" family="text:paragraph"/>
+        <element name="text:bibliography-entry-template" family="text:paragraph"/>
+        <element name="text:h" rename="text:heading" base="text:paragraph" family="text:paragraph"/>
+        <element name="text:illustration-index-entry-template" family="text:paragraph"/>
+        <element name="text:index-source-style" family="text:paragraph"/>
+        <element name="text:index-title-template" family="text:paragraph"/>
+        <element name="text:object-index-entry-template" family="text:paragraph"/>
+        <element name="text:p" rename="text:paragraph" base="text:paragraph" family="text:paragraph"/>
+        <element name="text:table-index-entry-template" family="text:paragraph"/>
+        <element name="text:table-of-content-entry-template" family="text:paragraph"/>
+        <element name="text:user-index-entry-template" family="text:paragraph"/>
+        <element name="text:ruby" family="text:ruby"/>
+        <element name="text:ruby-text" family="text:ruby"/>
+        <element name="text:alphabetical-index" family="text:section"/>
+        <element name="text:bibliography" family="text:section"/>
+        <element name="text:illustration-index" family="text:section"/>
+        <element name="text:index-title" family="text:section"/>
+        <element name="text:object-index" family="text:section"/>
+        <element name="text:section" family="text:section"/>
+        <element name="text:s" rename="text:space"/>
+        <element name="text:table-index" family="text:section"/>
+        <element name="text:table-of-content" family="text:section"/>
+        <element name="text:user-index" family="text:section"/>
+        <element name="table:table" family="table:table"/>
+        <element name="table:covered-table-cell" base="table:table-cell" family="table:table-cell"/>
+        <element name="table:table-cell" base="table:table-cell" family="table:table-cell"/>
+        <element name="table:table-column" family="table:table-column"/>
+        <element name="table:table-row" family="table:table-row"/>
+        <element name="text:a" rename="text:hyperlink" family="text:text"/>
+        <element name="text:index-entry-bibliography" family="text:text"/>
+        <element name="text:index-entry-chapter" family="text:text"/>
+        <element name="text:index-entry-link-end" family="text:text"/>
+        <element name="text:index-entry-link-start" family="text:text"/>
+        <element name="text:index-entry-page-number" family="text:text"/>
+        <element name="text:index-entry-span" family="text:text"/>
+        <element name="text:index-entry-tab-stop" family="text:text"/>
+        <element name="text:index-entry-text" family="text:text"/>
+        <element name="text:span" family="text:text"/>
+        <element name="style:handout-master" family="draw:drawing-page"/>
+        <element name="style:master-page" family="draw:drawing-page"/>
+        <element name="table:body" family="table:table-cell"/>
+        <element name="table:even-columns" family="table:table-cell"/>
+        <element name="table:even-rows" family="table:table-cell"/>
+        <element name="table:first-column" family="table:table-cell"/>
+        <element name="table:first-row" family="table:table-cell"/>
+        <element name="table:last-column" family="table:table-cell"/>
+        <element name="table:last-row" family="table:table-cell"/>
+        <element name="table:odd-columns" family="table:table-cell"/>
+        <element name="table:odd-rows" family="table:table-cell"/>
+        <element name="style:drop-cap" family="text:text"/>
+        <element name="text:linenumbering-configuration" family="text:text"/>
+
+		<!-- does not exist as element only as baseclass -->
+        <element name="text:list-level-style" base="style"/>
+        <element name="text:list-level-style-number" base="text:list-level-style"/>
+        <element name="text:list-level-style-bullet" base="text:list-level-style"/>
+        <element name="text:list-level-style-image" base="text:list-level-style"/>
+
+        <element name="text:numbered-paragraph" family="text:list"/>
+        <element name="office:styles" base="container"/>
+        <element name="office:automatic-styles" base="container"/>
+        <element name="office:master-styles" base="container"/>
+        <!--element name="office:presentation" base="container"/-->
+
+        <element name="style:style" base="style"/>
+        <element name="style:default-style" base="style"/>
+        <element name="style:page-layout" base="style"/>
+        <element name="text:outline-level-style" base="style"/>
+        <element name="text:list-style" base="style"/>
+
+        <element name="style:chart-properties" base="styleproperties"/>
+        <element name="style:drawing-page-properties" base="styleproperties"/>
+        <element name="style:graphic-properties" base="styleproperties"/>
+        <element name="style:list-level-properties" base="styleproperties"/>
+        <element name="style:paragraph-properties" base="styleproperties"/>
+        <element name="style:ruby-properties" base="styleproperties"/>
+        <element name="style:section-properties" base="styleproperties"/>
+        <element name="style:page-layout-properties" base="styleproperties"/>
+        <element name="style:header-footer-properties" base="styleproperties"/>
+        <element name="style:text-properties" base="styleproperties"/>
+        <element name="style:table-properties" base="styleproperties"/>
+        <element name="style:table-column-properties" base="styleproperties"/>
+        <element name="style:table-row-properties" base="styleproperties"/>
+        <element name="style:table-cell-properties" base="styleproperties"/>
+    </elements>
+    <data-types>
+        <data name="anyURI" value-type="java.net.URI" conversion-type="org.odftoolkit.odfdom.type.AnyURI"/>
+        <data name="boolean" value-type="Boolean" conversion-type="Boolean"/>
+        <data name="base64Binary" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Base64Binary"/>
+        <data name="cellAddress" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CellAddress"/>
+        <data name="cellRangeAddress" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CellRangeAddress"/>
+        <data name="cellRangeAddressList" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CellRangeAddressList"/>
+        <data name="clipShape" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ClipShape"/>
+        <data name="color" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Color"/>
+        <data name="coordinate" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Coordinate"/>
+        <data name="countryCode" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CountryCode"/>
+        <data name="CURIE" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CURIE"/>
+        <data name="CURIEs" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CURIEs"/>
+        <data name="date" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.Date"/>
+        <data name="dateOrDateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.DateOrDateTime"/>
+        <data name="dateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.DateTime"/>
+        <data name="distance" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Distance"/>
+        <data name="duration" value-type="javax.xml.datatype.Duration" conversion-type="org.odftoolkit.odfdom.type.DurationType"/>
+        <data name="double" value-type="Double" conversion-type="Double"/>
+        <!--data name="extrusionOrigin" value-type="String" conversion-type="org.odftoolkit.odfdom.attribute.ExtrusionOrigin"/-->
+        <data name="formula" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Formula"/>
+        <data name="ID" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ID"/>
+        <data name="IDREF" value-type="String" conversion-type="org.odftoolkit.odfdom.type.IDREF"/>
+        <data name="IDREFS" value-type="String" conversion-type="org.odftoolkit.odfdom.type.IDREFS"/>
+        <data name="integer" value-type="Integer" conversion-type="Integer"/>
+        <data name="language" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Language"/>
+        <data name="languageCode" value-type="String" conversion-type="org.odftoolkit.odfdom.type.LanguageCode"/>
+        <data name="length" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Length"/>
+        <data name="namespacedToken" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NamespacedToken"/>
+        <data name="NCName" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NCName"/>
+        <data name="nonNegativeDecimal" value-type="Double" conversion-type="org.odftoolkit.odfdom.type.NonNegativeDecimal"/>
+        <data name="nonNegativeInteger" value-type="Integer" conversion-type="org.odftoolkit.odfdom.type.NonNegativeInteger"/>
+        <data name="nonNegativeLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NonNegativeLength"/>
+        <data name="nonNegativePixelLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NonNegativePixelLength"/>
+        <data name="percent" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Percent"/>
+        <data name="point3D" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Point3D"/>
+        <data name="points" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Points"/>
+        <data name="positiveInteger" value-type="Integer" conversion-type="org.odftoolkit.odfdom.type.PositiveInteger"/>
+        <data name="positiveLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.PositiveLength"/>
+        <!--data name="presentation-classes" value-type="String" conversion-type="org.odftoolkit.odfdom.attribute.PresentationClasses"/-->
+        <data name="relativeLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.RelativeLength"/>
+        <data name="SafeCURIE" value-type="String" conversion-type="org.odftoolkit.odfdom.type.SafeCURIE"/>
+        <data name="scriptCode" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ScriptCode"/>
+        <data name="signedZeroToHundredPercent" value-type="String" conversion-type="org.odftoolkit.odfdom.type.SignedZeroToHundredPercent"/>
+        <data name="string" value-type="String" conversion-type="String"/>
+        <data name="styleName" value-type="String" conversion-type="org.odftoolkit.odfdom.type.StyleName"/>
+        <data name="styleNameRef" value-type="String" conversion-type="org.odftoolkit.odfdom.type.StyleNameRef"/>
+        <data name="styleNameRefs" value-type="String" conversion-type="org.odftoolkit.odfdom.type.StyleNameRefs"/>
+        <data name="targetFrameName" value-type="String" conversion-type="org.odftoolkit.odfdom.type.TargetFrameName"/>
+        <!--data name="targetFrameName" value-type="enum" conversion-type="office:target-frame-name"/-->
+        <data name="textEncoding" value-type="String" conversion-type="org.odftoolkit.odfdom.type.TextEncoding"/>
+        <data name="time" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.Time"/>
+        <data name="timeOrDateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.TimeOrDateTime"/>
+        <data name="URIorSafeCURIE" value-type="String" conversion-type="org.odftoolkit.odfdom.type.URIorSafeCURIE"/>
+        <data name="valueType" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ValueType"/>
+        <data name="vector3D" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Vector3D"/>
+        <data name="zeroToHundredPercent" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ZeroToHundredPercent"/>
+        <data name="zeroToOneDecimal" value-type="Double" conversion-type="org.odftoolkit.odfdom.type.ZeroToOneDecimal"/>
+        <!--data name="rowOrCol" value-type="enum" conversion-type="table:row-or-column"/-->
+        <data name="stylefamily" value-type="org.odftoolkit.odfdom.dom.style.OdfStyleFamily" conversion-type="org.odftoolkit.odfdom.dom.style.OdfStyleFamily"/>
+        
+        
+    </data-types>
+   <attributes>
+      <attribute name="anim:color-interpolation" defaultValue="rgb"/>
+      <attribute name="anim:color-interpolation-direction" defaultValue="clockwise"/>
+      <attribute name="chart:automatic-content" defaultValue="true"/>
+      <attribute name="chart:class" defaultValue="major" element="chart:grid"/>
+      <attribute name="chart:data-source-has-labels" defaultValue="none"/>
+      <attribute name="chart:display-equation" defaultValue="true"/>
+      <attribute name="chart:display-r-square" defaultValue="false"/>
+      <attribute name="db:append-table-alias-name" defaultValue="true"/>
+      <attribute name="db:apply-command" defaultValue="false"/>
+      <attribute name="db:boolean-comparison-mode" defaultValue="equal-integer"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:decimal" defaultValue="."/>
+      <attribute name="db:delete-rule" defaultValue="no-action"/>
+      <attribute name="db:enable-sql92-check" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:encoding" defaultValue="utf-8"/>
+      <attribute name="db:escape-processing" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:field" defaultValue=";"/>
+      <attribute name="db:ignore-driver-privileges" defaultValue="true"/>
+      <attribute name="db:is-first-row-header-line" defaultValue="true"/>
+      <attribute name="db:is-password-required" defaultValue="false"/>
+      <attribute name="db:is-table-name-length-limited" defaultValue="true"/>
+      <attribute name="db:parameter-name-substitution" defaultValue="true"/>
+      <attribute name="db:show-deleted" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:string" defaultValue="."/>
+      <attribute name="db:suppress-version-columns" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:thousand" defaultValue=","/>
+      <attribute name="db:update-rule" defaultValue="no-action"/>
+      <attribute name="db:use-catalog" defaultValue="false"/>
+      <attribute name="db:visible" defaultValue="true"/>
+      <attribute name="dr3d:projection" defaultValue="parallel" element="draw:enhanced-geometry"/>
+      <attribute name="dr3d:shade-mode" defaultValue="flat" element="draw:enhanced-geometry"/>
+      <attribute name="draw:concentric-gradient-fill-allowed" defaultValue="false"/>
+      <attribute name="draw:display" defaultValue="always"/>
+      <attribute name="draw:extrusion" defaultValue="false"/>
+      <attribute name="draw:extrusion-allowed" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-brightness" defaultValue="33%"/>
+      <attribute name="draw:extrusion-color" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-depth" defaultValue="36pt 0"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-diffusion" defaultValue="0%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-first-light-direction" defaultValue="(5 0 1)"/>
+      <attribute name="draw:extrusion-first-light-harsh" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-first-light-level" defaultValue="66%"/>
+      <attribute name="draw:extrusion-light-face" defaultValue="true"/>
+      <attribute name="draw:extrusion-metal" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-number-of-line-segments" defaultValue="30"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-origin" defaultValue="0.5 -0.5"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-rotation-angle" defaultValue="0 0"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-second-light-direction" defaultValue="(-5 0 1)"/>
+      <attribute name="draw:extrusion-second-light-harsh" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-second-light-level" defaultValue="66%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-shininess" defaultValue="50%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-skew" defaultValue="50 45"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-specularity" defaultValue="0%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-viewpoint" defaultValue="3.5cm -3.5cm 25cm"/>
+      <attribute name="draw:glue-point-type" defaultValue="none"/>
+      <attribute name="draw:handle-mirror-horizontal" defaultValue="false"/>
+      <attribute name="draw:handle-mirror-vertical" defaultValue="false"/>
+      <attribute name="draw:handle-switched" defaultValue="false"/>
+      <attribute name="draw:kind" defaultValue="full"/>
+      <attribute name="draw:mirror-horizontal" defaultValue="false"/>
+      <attribute name="draw:mirror-vertical" defaultValue="false"/>
+      <attribute name="draw:may-script" defaultValue="false"/>
+      <attribute name="draw:protected" defaultValue="false"/>
+      <attribute name="draw:text-path" defaultValue="false"/>
+      <attribute name="draw:text-path-allowed" defaultValue="false"/>
+      <attribute name="draw:text-path-mode" defaultValue="normal"/>
+      <attribute name="draw:text-path-same-letter-heights" defaultValue="false"/>
+      <attribute name="draw:text-path-scale" defaultValue="path"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:text-rotate-angle" defaultValue="0"/>
+      <attribute name="draw:type" defaultValue="standard" element="draw:connector"/>
+      <attribute name="draw:type" defaultValue="non-primitive" element="draw:enhanced-geometry"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:end-indent" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:space-after" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:space-before" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:start-indent" defaultValue="0cm"/>
+      <attribute name="form:allow-deletes" defaultValue="true"/>
+      <attribute name="form:allow-inserts" defaultValue="true"/>
+      <attribute name="form:allow-updates" defaultValue="true"/>
+      <attribute name="form:apply-design-mode" defaultValue="true"/>
+      <attribute name="form:apply-filter" defaultValue="false"/>
+      <attribute name="form:automatic-focus" defaultValue="false"/>
+      <attribute name="form:button-type" defaultValue="push"/>
+      <attribute name="form:command-type" defaultValue="command"/>
+      <attribute name="form:convert-empty-to-null" defaultValue="false"/>
+      <attribute name="form:current-selected" defaultValue="false"/>
+      <attribute name="form:default-button" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:delay-for-repeat" defaultValue="PT0.050S"/>
+      <attribute name="form:disabled" defaultValue="false"/>
+      <attribute name="form:dropdown" defaultValue="false"/>
+      <attribute name="form:echo-char" defaultValue="*"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:enctype" defaultValue="application/x-www-form-urlencoded"/>
+      <attribute name="form:escape-processing" defaultValue="true"/>
+      <attribute name="form:ignore-result" defaultValue="false"/>
+      <attribute name="form:image-align" defaultValue="center"/>
+      <attribute name="form:image-position" defaultValue="center"/>
+      <attribute name="form:is-tristate" defaultValue="false"/>
+      <attribute name="form:method" defaultValue="get"/>
+      <attribute name="form:multi-line" defaultValue="false"/>
+      <attribute name="form:multiple" defaultValue="false"/>
+      <attribute name="form:printable" defaultValue="true"/>
+      <attribute name="form:readonly" defaultValue="false"/>
+      <attribute name="form:selected" defaultValue="false"/>
+      <attribute name="form:spin-button" defaultValue="false"/>
+      <attribute name="form:state" defaultValue="unchecked"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:step-size" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:tab-index" defaultValue="0"/>
+      <attribute name="form:tab-stop" defaultValue="true"/>
+      <attribute name="form:toggle" defaultValue="false"/>
+      <attribute name="form:validation" defaultValue="false"/>
+      <attribute name="number:automatic-order" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="number:decimal-places" defaultValue="0" element="number:seconds"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="number:display-factor" defaultValue="1"/>
+      <attribute name="number:format-source" defaultValue="fixed"/>
+      <attribute name="number:grouping" defaultValue="false"/>
+      <attribute name="number:textual" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="number:transliteration-format" defaultValue="1"/>
+      <attribute name="number:transliteration-style" defaultValue="short"/>
+      <attribute name="number:truncate-on-overflow" defaultValue="true"/>
+      <attribute name="office:automatic-update" defaultValue="true"/>
+      <attribute name="office:conversion-mode" defaultValue="into-default-style-data-style"/>
+      <attribute name="office:server-map" defaultValue="false"/>
+      <attribute name="office:target-frame" defaultValue="_blank"/>
+      <attribute name="presentation:animations" defaultValue="enabled"/>
+      <attribute name="presentation:direction" defaultValue="none"/>
+      <attribute name="presentation:endless" defaultValue="false"/>
+      <attribute name="presentation:effect" defaultValue="none"/>
+      <attribute name="presentation:force-manual" defaultValue="false"/>
+      <attribute name="presentation:full-screen" defaultValue="true"/>
+      <attribute name="presentation:mouse-as-pen" defaultValue="false"/>
+      <attribute name="presentation:mouse-visible" defaultValue="true"/>
+      <attribute name="presentation:node-type" defaultValue="default"/>
+      <attribute name="presentation:preset-class" defaultValue="custom"/>
+      <attribute name="presentation:show-end-of-presentation-slide" defaultValue="true"/>
+      <attribute name="presentation:show-logo" defaultValue="false"/>
+      <attribute name="presentation:speed" defaultValue="medium"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="presentation:start-scale" defaultValue="100%"/>
+      <attribute name="presentation:start-with-navigator" defaultValue="false"/>
+      <attribute name="presentation:stay-on-top" defaultValue="false"/>
+      <attribute name="presentation:transition-on-click" defaultValue="enabled"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="smil:accelerate" defaultValue="0.0"/>
+      <attribute name="smil:autoReverse" defaultValue="false"/>
+      <attribute name="smil:calcMode" defaultValue="discrete" element="anim:animate"/>
+      <attribute name="smil:calcMode" defaultValue="discrete" element="anim:animateColor"/>
+      <attribute name="smil:calcMode" defaultValue="paced" element="anim:animateMotion"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="smil:decelerate" defaultValue="0.0"/>
+      <attribute name="smil:direction" defaultValue="forward" element="anim:transitionFilter"/>
+      <attribute name="smil:fadeColor" defaultValue="#000000"/>
+      <attribute name="smil:mode" defaultValue="in"/>
+      <attribute name="smil:restart" defaultValue="default"/>
+      <attribute name="smil:restartDefault" defaultValue="inherit"/>
+      <attribute name="style:adjustment" defaultValue="left"/>
+      <attribute name="style:auto-update" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:color" defaultValue="#000000" element="style:column-sep"/>
+      <attribute name="style:display" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:distance" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:height" defaultValue="100%"/>
+      <attribute name="style:leader-text" defaultValue=" "/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:length" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:lines" defaultValue="1"/>
+      <attribute name="style:page-usage" defaultValue="all"/>
+      <attribute name="style:position" defaultValue="center" element="style:background-image"/>
+      <attribute name="style:repeat" defaultValue="repeat" element="style:background-image"/>
+      <attribute name="style:style" defaultValue="solid"/>
+      <attribute name="style:type" defaultValue="left" element="style:tab-stop"/>
+      <attribute name="style:vertical-align" defaultValue="top" element="style:column-sep"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:cx" defaultValue="50%" element="svg:radialGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:cy" defaultValue="50%" element="svg:radialGradient"/>
+      <attribute name="svg:gradientUnits" defaultValue="objectBoundingBox"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:r" defaultValue="50%" element="svg:radialGradient"/>
+      <attribute name="svg:spreadMethod" defaultValue="pad"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:x1" defaultValue="0%" element="svg:linearGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:x2" defaultValue="100%" element="svg:linearGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:y1" defaultValue="0%" element="svg:linearGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:y2" defaultValue="100%" element="svg:linearGradient"/>
+      <attribute name="table:acceptance-state" defaultValue="pending"/>
+      <attribute name="table:allow-empty-cell" defaultValue="true"/>
+      <attribute name="table:automatic-find-labels" defaultValue="true"/>
+      <attribute name="table:bind-styles-to-content" defaultValue="true"/>
+      <attribute name="table:case-sensitive" defaultValue="true"
+                 element="table:calculation-settings"/>
+      <attribute name="table:case-sensitive" defaultValue="false"
+                 element="table:filter-condition"/>
+      <attribute name="table:case-sensitive" defaultValue="false" element="table:sort"/>
+      <attribute name="table:case-sensitive" defaultValue="false" element="table:subtotal-rules"/>
+      <attribute name="table:condition-source" defaultValue="self"/>
+      <attribute name="table:contains-error" defaultValue="false"/>
+      <attribute name="table:contains-header" defaultValue="true"/>
+      <attribute name="table:copy-back" defaultValue="true"/>
+      <attribute name="table:copy-formulas" defaultValue="true"/>
+      <attribute name="table:copy-styles" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:count" defaultValue="1"/>
+      <attribute name="table:data-type" defaultValue="text" element="table:filter-condition"/>
+      <attribute name="table:data-type" defaultValue="automatic" element="table:sort-by"/>
+      <attribute name="table:data-type" defaultValue="automatic" element="table:sort-groups"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:date-value" defaultValue="1899-12-30"/>
+      <attribute name="table:display" defaultValue="true" element="table:table-column-group"/>
+      <attribute name="table:display" defaultValue="true" element="table:table-row-group"/>
+      <attribute name="table:display" defaultValue="false" element="table:error-message"/>
+      <attribute name="table:display" defaultValue="false" element="table:help-message"/>
+      <attribute name="table:display-border" defaultValue="true"/>
+      <attribute name="table:display-duplicates" defaultValue="true"/>
+      <attribute name="table:display-filter-buttons" defaultValue="false"/>
+      <attribute name="table:display-list" defaultValue="unsorted"/>
+      <attribute name="table:drill-down-on-double-click" defaultValue="true"/>
+      <attribute name="table:embedded-number-behavior" defaultValue="alpha-numeric"/>
+      <attribute name="table:execute" defaultValue="true"/>
+      <attribute name="table:grand-total" defaultValue="both"/>
+      <attribute name="table:has-persistent-data" defaultValue="true"/>
+      <attribute name="table:identify-categories" defaultValue="false"/>
+      <attribute name="table:ignore-empty-rows" defaultValue="false"/>
+      <attribute name="table:is-data-layout-field" defaultValue="false"/>
+      <attribute name="table:is-selection" defaultValue="false"/>
+      <attribute name="table:is-sub-table" defaultValue="false"/>
+      <attribute name="table:link-to-source-data" defaultValue="false"/>
+      <attribute name="table:matrix-covered" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:maximum-difference" defaultValue="0.001"/>
+      <attribute name="table:message-type" defaultValue="stop"/>
+      <attribute name="table:mode" defaultValue="copy-all"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:null-year" defaultValue="1930"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-repeated" defaultValue="1"
+                 element="table:covered-table-cell"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-repeated" defaultValue="1"
+                 element="table:table-cell"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-repeated" defaultValue="1"
+                 element="table:table-column"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-spanned" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-rows-repeated" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-rows-spanned" defaultValue="1"/>
+      <attribute name="table:on-update-keep-size" defaultValue="true"/>
+      <attribute name="table:on-update-keep-styles" defaultValue="false"/>
+      <attribute name="table:order" defaultValue="ascending" element="table:sort-by"/>
+      <attribute name="table:order" defaultValue="ascending" element="table:sort-groups"/>
+      <attribute name="table:orientation" defaultValue="row" element="table:database-range"/>
+      <attribute name="table:page-breaks-on-group-change" defaultValue="false"/>
+      <attribute name="table:parse-sql-statement" defaultValue="false"/>
+      <attribute name="table:precision-as-shown" defaultValue="false"/>
+      <attribute name="table:print" defaultValue="true"/>
+      <attribute name="table:protect" defaultValue="false"/>
+      <attribute name="table:protected" defaultValue="false" element="table:covered-table-cell"/>
+      <attribute name="table:protected" defaultValue="false" element="table:table"/>
+      <attribute name="table:protected" defaultValue="false" element="table:table-cell"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:protection-key-digest-algorithm"
+                 defaultValue="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <attribute name="table:range-usable-as" defaultValue="none"/>
+      <attribute name="table:search-criteria-must-apply-to-whole-cell" defaultValue="true"/>
+      <attribute name="table:show-filter-button" defaultValue="true"/>
+      <attribute name="table:status" defaultValue="disable"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:steps" defaultValue="100"/>
+      <attribute name="table:structure-protected" defaultValue="false"/>
+      <attribute name="table:track-changes" defaultValue="false"/>
+      <attribute name="table:use-banding-columns-styles" defaultValue="false"/>
+      <attribute name="table:use-banding-rows-styles" defaultValue="false"/>
+      <attribute name="table:use-first-column-styles" defaultValue="false"/>
+      <attribute name="table:use-first-row-styles" defaultValue="false"/>
+      <attribute name="table:use-last-column-styles" defaultValue="false"/>
+      <attribute name="table:use-last-row-styles" defaultValue="false"/>
+      <attribute name="table:use-labels" defaultValue="none"/>
+      <attribute name="table:use-regular-expressions" defaultValue="true"/>
+      <attribute name="table:use-wildcards" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:used-hierarchy" defaultValue="-1"/>
+      <attribute name="table:value-type" defaultValue="date"/>
+      <attribute name="table:visibility" defaultValue="visible"/>
+      <attribute name="text:alphabetical-separators" defaultValue="false"/>
+      <attribute name="text:capitalize-entries" defaultValue="false"/>
+      <attribute name="text:combine-entries" defaultValue="true"/>
+      <attribute name="text:combine-entries-with-dash" defaultValue="false"/>
+      <attribute name="text:combine-entries-with-pp" defaultValue="true"/>
+      <attribute name="text:comma-separated" defaultValue="false"/>
+      <attribute name="text:consecutive-numbering" defaultValue="false"/>
+      <attribute name="text:copy-outline-levels" defaultValue="false"/>
+      <attribute name="text:count-empty-lines" defaultValue="true"/>
+      <attribute name="text:count-in-text-boxes" defaultValue="false"/>
+      <attribute name="text:display" defaultValue="number" element="text:index-entry-chapter"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:display-levels" defaultValue="1"/>
+      <attribute name="text:global" defaultValue="false"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:alphabetical-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:illustration-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:object-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:table-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:user-index-source"/>
+      <attribute name="text:ignore-case" defaultValue="false"/>
+      <attribute name="text:is-list-header" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:level" defaultValue="1" element="text:numbered-paragraph"/>
+      <attribute name="text:main-entry" defaultValue="false"/>
+      <attribute name="text:number-lines" defaultValue="true"
+                 element="text:linenumbering-configuration"/>
+      <attribute name="text:number-position" defaultValue="left"/>
+      <attribute name="text:numbered-entries" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:protection-key-digest-algorithm"
+                 defaultValue="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:alphabetical-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:illustration-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:object-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:table-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:user-index-source"/>
+      <attribute name="text:restart-numbering" defaultValue="false"/>
+      <attribute name="text:restart-on-page" defaultValue="false"/>
+      <attribute name="text:sort-ascending" defaultValue="true"/>
+      <attribute name="text:sort-by-position" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:start-value" defaultValue="1" element="text:list-level-style-number"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:start-value" defaultValue="1" element="text:notes-configuration"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:start-value" defaultValue="1" element="text:outline-level-style"/>
+      <attribute name="text:track-changes" defaultValue="true"/>
+      <attribute name="text:use-caption" defaultValue="true"/>
+      <attribute name="text:use-chart-objects" defaultValue="false"/>
+      <attribute name="text:use-draw-objects" defaultValue="false"/>
+      <attribute name="text:use-floating-frames" defaultValue="false"/>
+      <attribute name="text:use-graphics" defaultValue="false"/>
+      <attribute name="text:use-index-marks" defaultValue="false"
+                 element="text:user-index-source"/>
+      <attribute name="text:use-index-source-styles" defaultValue="false"
+                 element="text:user-index-source"/>
+      <attribute name="text:use-keys-as-entries" defaultValue="false"/>
+      <attribute name="text:use-math-objects" defaultValue="false"/>
+      <attribute name="text:use-objects" defaultValue="false"/>
+      <attribute name="text:use-other-objects" defaultValue="false"/>
+      <attribute name="text:use-outline-level" defaultValue="true"/>
+      <attribute name="text:use-soft-page-breaks" defaultValue="false"/>
+      <attribute name="text:use-spreadsheet-objects" defaultValue="false"/>
+      <attribute name="text:use-tables" defaultValue="false"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="db:connection-resource"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="draw:a"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="form:form"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="meta:template"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest"
+                 element="presentation:event-listener"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="presentation:sound"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="script:event-listener"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="svg:definition-src"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="svg:font-face-uri"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="table:cell-range-source"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="table:table-source"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="text:a"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:applet"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:fill-image"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:floating-frame"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:image"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:object"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:object-ole"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:plugin"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="meta:auto-reload"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="style:background-image"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad"
+                 element="text:list-level-style-image"/>
+      <attribute name="xlink:show" defaultValue="replace" element="meta:auto-reload"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:applet"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:fill-image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:floating-frame"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:object"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:object-ole"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:plugin"/>
+      <attribute name="xlink:show" defaultValue="embed" element="presentation:event-listener"/>
+      <attribute name="xlink:show" defaultValue="embed" element="style:background-image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="text:list-level-style-image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="text:section-source"/>
+      <attribute name="xlink:show" defaultValue="none" element="db:connection-resource"/>
+      <attribute name="xlink:type" defaultValue="simple" element="db:connection-resource"/>
+      <attribute name="xlink:type" defaultValue="simple" element="db:file-based-database"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:a"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:applet"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:area-circle"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:area-polygon"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:area-rectangle"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:fill-image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:floating-frame"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:object"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:object-ole"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:plugin"/>
+      <attribute name="xlink:type" defaultValue="simple" element="form:form"/>
+      <attribute name="xlink:type" defaultValue="simple" element="meta:auto-reload"/>
+      <attribute name="xlink:type" defaultValue="simple" element="meta:template"/>
+      <attribute name="xlink:type" defaultValue="simple" element="presentation:event-listener"/>
+      <attribute name="xlink:type" defaultValue="simple" element="presentation:sound"/>
+      <attribute name="xlink:type" defaultValue="simple" element="script:event-listener"/>
+      <attribute name="xlink:type" defaultValue="simple" element="style:background-image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="svg:definition-src"/>
+      <attribute name="xlink:type" defaultValue="simple" element="svg:font-face-uri"/>
+      <attribute name="xlink:type" defaultValue="simple" element="table:cell-range-source"/>
+      <attribute name="xlink:type" defaultValue="simple" element="table:table-source"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:a"/>
+      <attribute name="xlink:type" defaultValue="simple"
+                 element="text:alphabetical-index-auto-mark-file"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:list-level-style-image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:script"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:section-source"/>
+   </attributes>
+</config>
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odf-reference/dom-output-files.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odf-reference/dom-output-files.vm
new file mode 100644
index 0000000..e31e908
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odf-reference/dom-output-files.vm
@@ -0,0 +1,29 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+<?xml version="1.0" encoding="UTF-8"?>
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## src/main/resources/documentation/help.html
+##
+<filelist>
+    <file path="OdfReference.html" template="odf-reference-template.vm" />
+</filelist>
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odf-reference/odf-reference-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odf-reference/odf-reference-template.vm
new file mode 100644
index 0000000..7fd1f1c
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odf-reference/odf-reference-template.vm
@@ -0,0 +1,201 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Template to create the Java class representing an ODF element.
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+<html>
+<head>
+<style type="text/css">
+<!--
+.left { width: 30%; }
+.right { width: 100%; }
+td { text-indent:0em; }
+.unbreakable { white-space:nowrap; }
+.mandatory { color:navy; font-weight:bold; }
+-->
+</style>
+</head>
+<body>
+<h2>ODF 1.2 XML Reference</h2>
+
+<p>This is a list of elements defined in ODF-Spec together with allowed parent and child elements and allowed attributes.</p>
+
+<p>Please note that "allowed" has the meaning of "may be allowed" as there might be a condition (like a special attribute value) 
+for an element to have a special child element.</p>
+
+<p>left displayed in bold blue letters describe a mandatory relationship. All other relationships are optional.</p>
+
+<p>The asterisk (*) symbol marks child elements which can occur multiple times.</p>
+
+<p>Here's a shortcut to the content <a href="#element_office:document_0">toplevel</a> element.</p>
+
+#foreach( $element in ${model.getElements()} )
+#set ($oldelement = "")
+#set ($oldelement = ${oldmodel.getElement($element.getQName())} )
+#if ($element != "*")
+##
+#if (${element.withMultiples().size()} == 1)
+#set ($dup = "")
+#else
+#set ($dup = "[${element.getMultipleNumber()}]")
+#end
+<h3><a name="element_${element}_${element.getMultipleNumber()}">${element}${dup} Element</a>#if (${oldelement} == "")&nbsp;(new in Odf 1.2) #end</h3>
+#if ( ${element.withMultiples().size()} > 1 )
+<p>There are more than one Definitions by this name.</p>
+#end
+#if (${element.canHaveText()})
+<p>This element can have a text node child.</p>
+#end
+<table border="1" width="100%">
+<tr>
+<td class="left">Parent Elements</td>
+<td class="right">
+#foreach ($parent in ${element.getParents()})
+#if ($parent == "*")
+[any org.w3c.dom.Element]&nbsp;
+#else
+#if (${parent.withMultiples().size()} == 1)
+#set ($dup = "")
+#else
+#set ($dup = "[${parent.getMultipleNumber()}]")
+#end
+	<a href="#element_${parent}_${parent.getMultipleNumber()}" class="unbreakable">${parent}${dup}</a>&nbsp;
+#end
+#end
+&nbsp;</td>
+</tr>
+<tr>
+<td class="left">Child Elements</td>
+<td class="right">
+#foreach($child in ${element.getChildElements()})
+#if ($child == "*")
+[any org.w3c.dom.Element]&nbsp;
+#else
+#if (${child.withMultiples().size()} == 1)
+#set ($dup = "")
+#else
+#set ($dup = "[${child.getMultipleNumber()}]")
+#end
+##
+#if (${element.isMandatory($child)})
+#set ($mandatory = "mandatory")
+#else
+#set ($mandatory = "")
+#end
+##
+#if (${element.isSingleton($child)})
+#set ($multiple = "")
+#else
+#set ($multiple = "*")
+#end
+##
+	<a href="#element_${child}_${child.getMultipleNumber()}" class="unbreakable ${mandatory}">${child}${dup}</a>${multiple}&nbsp;
+#end
+#end
+&nbsp;</td>
+</tr>
+<tr>
+<td class="left">Attributes</td>
+<td class="right">
+#foreach( $attribute in ${element.getAttributes()} )
+#if ($attribute == "*")
+[any org.w3c.dom.Attribute]&nbsp;
+#else
+#if (${attribute.withMultiples().size()} == 1)
+#set ($dup = "")
+#else
+#set ($dup = "[${attribute.getMultipleNumber()}]")
+#end
+##
+#if (${element.isMandatory($attribute)})
+#set ($mandatory = "mandatory")
+#else
+#set ($mandatory = "")
+#end
+##
+	<a href="#attribute_${attribute}_${attribute.getMultipleNumber()}" class="unbreakable ${mandatory}">${attribute}${dup}</a>&nbsp;
+#end
+#end
+&nbsp;</td>
+</tr>
+</table>
+<br />
+#end
+#end
+##
+##
+#foreach( $attribute in ${model.getAttributes()} )
+#set ($oldattribute = "")
+#set ($oldattribute = ${oldmodel.getAttribute($attribute.getQName())} )
+#if ($attribute != "*")
+##
+#if (${attribute.withMultiples().size()} == 1)
+#set ($dup = "")
+#else
+#set ($dup = "[${attribute.getMultipleNumber()}]")
+#end
+<h3><a name="attribute_${attribute}_${attribute.getMultipleNumber()}">${attribute}${dup} Attribute</a>#if (${oldattribute} == "")&nbsp;(new in Odf 1.2) #end</h3>
+#if ( ${attribute.withMultiples().size()} > 1 )
+<p>There are more than one Definitions by this name.</p>
+#end
+<table border="1" width="100%">
+<tr>
+<td class="left">Parent Elements</td>
+<td class="right">
+#foreach ($parent in ${attribute.getParents()})
+#if ($parent == "*")
+[any org.w3c.dom.Element]&nbsp;
+#else
+#if (${parent.withMultiples().size()} == 1)
+#set ($dup = "")
+#else
+#set ($dup = "[${parent.getMultipleNumber()}]")
+#end
+	<a href="#element_${parent}_${parent.getMultipleNumber()}" class="unbreakable">${parent}${dup}</a>&nbsp;
+#end
+#end
+&nbsp;</td>
+</tr>
+<tr>
+<td class="left">Datatypes</td>
+<td class="right">
+#foreach ($datatype in ${attribute.getDatatypes()})
+	<span style="unbreakable">${datatype}</a>&nbsp;
+#end
+&nbsp;</td>
+</tr>
+<tr>
+<td class="left">Values</td>
+<td class="right">
+#foreach ($value in ${attribute.getValues()})
+	<span style="unbreakable">"${value}"</a>&nbsp;
+#end
+&nbsp;</td>
+</tr>
+</table>
+<br />
+#end
+#end
+</body>
+</html>
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/copyright.txt b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/copyright.txt
new file mode 100644
index 0000000..1b1fc5d
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/copyright.txt
@@ -0,0 +1,22 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/dom-output-files.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/dom-output-files.vm
new file mode 100644
index 0000000..d27c54e
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/dom-output-files.vm
@@ -0,0 +1,75 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+<?xml version="1.0" encoding="UTF-8"?>

+## Template to create the list of artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## src/main/resources/documentation/help.html

+##

+<filelist>

+	<file path="org/odftoolkit/odfdom/dom/style/OdfStyleFamily.java" template="java-odfdom-stylefamily.vm" />

+	<file path="org/odftoolkit/odfdom/dom/style/props/OdfStylePropertiesSet.java" template="java-odfdom-styleset.vm" />

+####<file path="org/odftoolkit/odfdom/dom/DefaultElementVisitor.java" template="java-odfdom-element-visitor.vm" />

+####<file path="org/odftoolkit/odfdom/dom/DefaultAttributeVisitor.java" template="java-odfdom-attribute-visitor.vm" />

+##

+#foreach ($element in ${model.getElements().withoutMultiples()})

+#if ($element != "*")

+##

+#set($classname = "${model.camelCase($element)}Element")

+	<file path="org/odftoolkit/odfdom/dom/element/${model.extractNamespace($element)}/${classname}.java" context="$element" template="java-odfdom-element-template.vm" />

+##

+#end

+#end

+##

+#foreach ($base in $javamodel.getBaseclasses())

+##

+#if ($base != "container" && $base != "style" && $base != "styleproperties")

+#set($classname = "${model.camelCase($base)}ElementBase")

+	<file path="org/odftoolkit/odfdom/dom/element/${model.extractNamespace($base)}/${classname}.java" context="$base" template="java-odfdom-elementbase-template.vm" />

+#end

+##

+#end

+##

+#foreach ($attribute in ${model.getAttributes().withoutMultiples()})

+#if ($attribute != "*")

+##

+#set($classname = "${model.camelCase($attribute)}Attribute")

+	<file path="org/odftoolkit/odfdom/dom/attribute/${model.extractNamespace($attribute)}/${classname}.java" context="$attribute" template="java-odfdom-attribute-template.vm" />

+#end

+#end

+##

+#foreach ($attribute in ${model.getAttributes().withoutMultiples()})

+#if ($attribute != "*")

+##

+#set($classname = "${model.camelCase($attribute)}Attribute")

+	<file path="org/odftoolkit/odfdom/dom/attribute/${model.extractNamespace($attribute)}/${classname}.java" context="$attribute" template="java-odfdom-attribute-template.vm" />

+#end

+#end

+##

+#foreach ($styleelement in ${model.getElements().withoutMultiples()})

+#if ($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})

+#set ($properties=${styleelement.withMultiples().getAttributes()})

+#if ($properties.size()>0)

+	<file path="org/odftoolkit/odfdom/dom/style/props/Odf${model.camelCase(${styleelement.getLocalName()})}.java" context="$styleelement" template="java-odfdom-styleproperties.vm" />

+#end

+#end

+#end

+</filelist>

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-attribute-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-attribute-template.vm
new file mode 100644
index 0000000..bd8c3d0
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-attribute-template.vm
@@ -0,0 +1,386 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined
+#set($attribute = $model.getAttribute($context))
+#set($NS = $attribute.getNamespace())
+#set($localname = ${model.extractLocalname($attribute)})
+#set($classname = "${model.camelCase($attribute)}Attribute")
+#set ($valueobject = "String")
+##
+#set($datatypes = ${attribute.getDatatypes().withoutMultiples()})
+#if ($datatypes.size() > 0)
+#set ($hasdatatype = true)
+#else
+#set ($hasdatatype = false)
+#end
+##
+##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken
+#set($values = ${attribute.getValues().withoutMultiples()})
+#if ($values.size() > 0)
+#if ($values.size() ==2 && $hasdatatype == false)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($value in $values)
+#if ($value==true)
+#set ($trueFlag = true)
+#end
+#if ($value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($hasdatatype = true)
+#set ($valueobject = "Boolean")
+#end
+#end
+#set ($enum = true)
+#if ($valueobject == "Boolean")
+#set ($enum = false)
+#end
+#else
+#set ($enum = false)
+#end
+##
+## Check whether the attribute has default value.
+##
+#set ($hasDefaultValue = false)
+#foreach ($parent in ${attribute.getParents().withoutMultiples()})
+#if (${odfmodel.getDefaultAttributeValue($attribute, $parent)})
+#set ($hasDefaultValue = true)
+#end
+#end
+##
+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))
+#if ($hasDefaultValue and $defaultValueSet.size() == 1)
+#foreach ($value in $defaultValueSet)
+#set ($uniqueDefaultValue = $value)
+#end
+#end
+##
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.${NS};
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+#if ($hasDefaultValue)
+import org.odftoolkit.odfdom.pkg.OdfElement;
+#end
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+#if ($hasDefaultValue and $defaultValueSet.size()>1)
+#foreach ($parent in ${attribute.getParents().withoutMultiples()})
+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))
+import org.odftoolkit.odfdom.dom.element.${parent.getNamespace()}.${model.camelCase($parent)}Element;
+#end
+#end
+#end
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute ${attribute.getQName()}}.
+ *
+ */
+public class $classname extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "$localname");
+#if ($hasDefaultValue)
+#if ($defaultValueSet.size()>1)
+#foreach ($defaultValue in $defaultValueSet)
+#set ($constant = $model.constantCase($defaultValue))
+#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false)
+	public static final String DEFAULT_VALUE_${model.escapeKeyword($constant)}= "$defaultValue";
+#else
+	public static final String DEFAULT_VALUE_${model.escapeKeyword($constant)}=	Value.${model.escapeKeyword($constant)}.toString();
+#end
+#end
+#else
+#if ($uniqueDefaultValue=="&#34;")
+	public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}";
+#else
+	public static final String DEFAULT_VALUE = "$uniqueDefaultValue";
+#end
+#end
+#end
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute ${attribute}}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public $classname(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute ${attribute}}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+##
+#if ($enum)
+
+	/**
+	 * The value set of {@odf.attribute ${attribute}}.
+	 */
+	public enum Value {
+#set ($separator="		")
+#foreach($value in $values)
+#if (${value.toString().length()} == 1)
+#set ($constant = $value)
+#else
+#set ($constant = $model.constantCase($value))
+#end${separator}${model.escapeKeyword($constant)}("${model.escapeLiteral($value)}")#set ($separator=", ")
+#end ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+#end
+##
+## Handle Non-String-Attributes
+#set ($valuetypes = ${javamodel.getValuetypes($datatypes)})
+#if ($valueobject != "Boolean")
+#foreach ($valuetype in $valuetypes)
+#set ($valueobject = $valuetype)
+#end
+#end
+#if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean")
+#set ($valueobject = "String")
+#end
+#if ($valueobject != "String")
+#set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)})
+##
+
+	/**
+	 * @param value The <code>${simplevalue}</code> value of the attribute.
+	 */
+	public void set${model.camelCase($simplevalue)}Value(${simplevalue} value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>${simplevalue}</code> value of the attribute
+	 */
+	public ${simplevalue} ${simplevalue}Value() {
+		String val = super.getValue();
+		try {
+			return ${valueobject}.parse${model.camelCase($simplevalue)}(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+#end
+##
+
+	/**
+	 * @param attrValue The <code>String</code> value of the attribute.
+	 * @throws IllegalArgumentException If the provided attribute value is invalid
+	 */
+	@Override
+	public void setValue(String attrValue) {
+#if ($enum)
+#if ($hasdatatype)
+## enum and datatype
+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.
+		super.setValue(attrValue);
+#else
+## enum and no datatype
+		try {
+			super.setValue(Value.enumValueOf(attrValue).toString());
+		} catch (NullPointerException e) {
+			throw new IllegalArgumentException(e);
+		}
+#end
+#else
+		try {
+			super.setValue(attrValue);
+		} catch (NullPointerException e) {
+			// TODO: validation handling/logging
+			throw new IllegalArgumentException(e);
+		} catch (IllegalArgumentException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+#end
+	}
+
+	/**
+	 * @return Returns the <code>String</code> value of the attribute
+	 */
+	@Override
+	public String getValue() {
+#if ($enum)
+#if ($hasdatatype)
+## enum and datatype
+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.
+		return super.getValue();
+#else
+## enum and no datatype
+		try {
+			return Value.enumValueOf(super.getValue()).toString();
+		} catch (NullPointerException e) {
+			throw new IllegalArgumentException("the value of ${attribute} is not valid");
+		}
+#end
+#else
+		try {
+			return super.getValue();
+		} catch (IllegalArgumentException e) {
+			// TODO: validation handling/logging
+			throw new NumberFormatException("the value of ${attribute} is not valid");
+		}
+#end
+	}
+
+#if ($hasDefaultValue)
+	/**
+	 * Returns the default value of {@odf.attribute ${attribute}}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+#if ($defaultValueSet.size()>1)
+#foreach ($parent in ${attribute.getParents().withoutMultiples()})
+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))
+			if (parentElement instanceof ${model.camelCase($parent)}Element) {
+				defaultValue = "${model.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}";
+			}
+#end
+#end
+#else
+			defaultValue = "${model.escapeLiteral($uniqueDefaultValue)}";
+#end
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+#else
+	/**
+	 * Returns the default value of {@odf.attribute ${attribute}}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+#end
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+#if ($hasdatatype and $datatypes.size() > 0)
+#set ($datatype="")
+#foreach($value in $datatypes)
+#set ($datatype=$value)
+#end
+#if ($datatype == "ID")
+		return true;
+#else
+		return false;
+#end
+#else
+		return false;
+#end
+	}
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-attribute-visitor.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-attribute-visitor.vm
new file mode 100644
index 0000000..36d8cc6
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-attribute-visitor.vm
@@ -0,0 +1,57 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+package org.odftoolkit.odfdom.dom;
+
+import org.odftoolkit.odfdom.dom.attribute.text.TextCAttribute;
+import org.odftoolkit.odfdom.pkg.AttributeVisitor;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+##
+#foreach ($attribute in ${model.getAttributes().withoutMultiples()})
+#if ($attribute != "*")
+#set ($NS = ${attribute.getNamespace()})
+#set($classname = "${model.camelCase($attribute)}Attribute")
+import org.odftoolkit.odfdom.dom.attribute.${NS}.${classname};
+#end
+#end
+##
+public abstract class DefaultAttributeVisitor implements AttributeVisitor {
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.pkg.AttributeVisitor\#visit(org.odftoolkit.odfdom.pkg.OdfAttribute)
+	 */
+	@Override
+	abstract public void visit(OdfAttribute attribute);
+
+#foreach ($attribute in ${model.getAttributes().withoutMultiples()})
+#if ($attribute != "*")
+#set ($NS = ${attribute.getNamespace()})
+#set ($classname = "${model.camelCase($attribute)}Attribute")
+	/**
+	 * A method to visit "${attribute.getQName()}" attribute
+	 * @param attr - an instance of $classname
+	 */
+	public void visit($classname attr) {
+		visit((OdfAttribute) attr);
+	}
+#end
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-element-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-element-template.vm
new file mode 100644
index 0000000..77d70de
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-element-template.vm
@@ -0,0 +1,461 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Template to create the Java class representing an ODF element
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+#set ($element = ${model.getElement($context)})
+#set ($oldelement = ${oldmodel.getElement($context)})
+#set ($NS = ${element.getNamespace()})
+#set ($classname = "${model.camelCase($element)}Element")
+##
+## Set child element and child attributes
+#set ($children = ${element.getChildElements().withoutMultiples()})
+#set ($attributes = ${element.getAttributes().withoutMultiples()})
+##
+## Determine whether element is stylable. Set base class OdfElement, OdfStylableElement, or...
+#if ($odfmodel.isStylable($element))
+#set ($stylable = true)
+#set ($baseclassname = "OdfStylableElement")
+#set ($elementStyleFamily=${odfmodel.getStyleFamilies($element)})
+#set ($useOdfStyleableShapeElement = false)
+#foreach($f in $elementStyleFamily)
+#if (${f.getQName()}=="draw:graphic" || ${f.getQName()}=="presentation:presentation")
+#set ($useOdfStyleableShapeElement = true)
+#end
+#end
+#if ($useOdfStyleableShapeElement)
+#set ($baseclassname = "OdfStyleableShapeElement")
+#end
+#set ($baseHasMandatoryAttr = false)
+#set ($firstfamily = ${model.camelCase($model.extractLocalname($odfmodel.getStyleFamilies($element).get(0)))})
+#else
+#set ($stylable = false)
+#set ($baseclassname = "OdfElement")
+#set ($baseHasMandatoryAttr = false)
+#end
+##
+## ...or configured base class
+#if (${javamodel.getBaseclassOf($element)})
+#set ($base = ${javamodel.getBaseclassOf($element)})
+## Configured manually generated base class?
+#if ($base == "container")
+#set ($_specialbase = true)
+#set ($baseclassname = "OdfContainerElementBase")
+#set ($baseimport = "org.odftoolkit.odfdom.pkg.$baseclassname")
+#set ($baseHasMandatoryAttr = false)
+#end
+#if ($base == "style")
+#set ($_specialbase = true)
+#set ($baseclassname = "OdfStyleBase")
+#set ($baseimport = "org.odftoolkit.odfdom.dom.element.$baseclassname")
+#set ($baseHasMandatoryAttr = false)
+#end
+#if ($base == "styleproperties")
+#set ($_specialbase = true)
+#set ($baseclassname = "OdfStylePropertiesBase")
+#set ($baseimport = "org.odftoolkit.odfdom.dom.element.$baseclassname")
+#set ($baseHasMandatoryAttr = false)
+#end
+## Configured automatic generated base class. If so, remove all attributes defined in base class
+#if (!$_specialbase)
+#set ($baseclassname = "${model.camelCase($base)}ElementBase")
+#if ($base.getNamespace() != $NS)
+#set ($baseimport = "org.odftoolkit.odfdom.dom.element.${base.getNamespace()}.$baseclassname")
+#end
+#set ($attributes = $attributes.without($base.getBaseAttributes()))
+#set ($baseElement = ${model.getElement($base.getQName())})
+#set ($bAttributes = ${baseElement.getAttributes().withoutMultiples()})
+#foreach ($bAttribute in $bAttributes)
+#if (${baseElement.isMandatory($bAttribute)})
+#set ($baseHasMandatoryAttr = true)
+#end
+#end
+#end
+#end
+##
+## Test if this element has mandatory (non optional) attributes
+#set ($hasMandatoryAttr = false)
+#foreach ($attribute in $attributes)
+#if (${element.isMandatory($attribute)})
+#set ($hasMandatoryAttr = true)
+#set ($mandatoryAttr = $attribute)
+#end
+#end
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.${NS};
+
+##
+## ---------------------------------------------------
+##  Imports
+## ---------------------------------------------------
+##
+#if ($stylable)
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+#else
+import org.odftoolkit.odfdom.pkg.OdfElement;
+#end
+#if ($base == "styleproperties")
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+#end
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+#foreach ($child in $children)
+#if ($child == "*")
+#set ($anychild = true)
+#else
+#set ($childNS = ${child.getNamespace()})
+#set ($childClassname = "${model.camelCase($child)}Element")
+#if ($childNS != $NS)
+import org.odftoolkit.odfdom.dom.element.${childNS}.$childClassname;
+#end
+#end
+#end
+##
+#foreach ($child in $attributes)
+#if ($child == "*")
+#set ($anyattribute = true)
+#else
+#set ($childNS = ${child.getNamespace()})
+#set ($childClassname = "${model.camelCase($child)}Attribute")
+import org.odftoolkit.odfdom.dom.attribute.${childNS}.$childClassname;
+#end
+#end
+##
+## If there is a base class which is not in the current package
+#if ($baseimport)
+import ${baseimport};
+#end
+
+##
+## ---------------------------------------------------
+##  Class
+## ---------------------------------------------------
+##
+/**
+ * DOM implementation of OpenDocument element  {@odf.element ${context}}.
+ *
+#if ($anychild)
+ * This class can have any org.w3c.dom.Element child element.
+#end
+#if ($anyattribute)
+ * This class can have any org.w3c.dom.Attribute attribute.
+#end
+ */
+public class $classname extends $baseclassname {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "${element.getLocalName()}");
+
+	/**
+	 * Create the instance of <code>$classname</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public $classname(OdfFileDom ownerDoc) {
+#if (($stylable && ($useOdfStyleableShapeElement == false)))
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.${firstfamily}, OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "style-name"));
+#else
+		super(ownerDoc, ELEMENT_NAME);
+#end
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element ${context}}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+## ---------------------------------------------------
+##  Only for base = styleproperties
+## ---------------------------------------------------
+#if ($base == "styleproperties")
+#foreach ($attribute in $attributes)
+#if ($attribute != "*")
+#set($propertyName = ${attribute.getLocalName()})
+#if (${element.getLocalName()}=="graphic-properties" && $propertyName =="shadow")
+#set($propertyName = ${attribute.getQName()})
+#end
+
+	public final static OdfStyleProperty ${model.camelCase($propertyName)} =
+		OdfStyleProperty.get(OdfStylePropertiesSet.${model.camelCase($element.getLocalName())}, OdfName.newName(OdfDocumentNamespace.${model.firstWord($attribute).toUpperCase()}, "${attribute.getLocalName()}"));
+#end
+#end
+#end
+##
+## ---------------------------------------------------
+##  Add init method if this element or the base
+##  element has mandatory attributes
+##  TODO: NO caller use this method.
+## ---------------------------------------------------
+##
+## ---------------------------------------------------
+##  Attribute getters and setters
+## ---------------------------------------------------
+##
+#foreach ($attr in $attributes)
+#set($attri = ${model.getAttribute($attr.getQName())})
+#set ($valueObject = "String")
+#set ($simpleValue = "")
+#set ($dataTypes = ${attri.getDatatypes().withoutMultiples()})
+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})
+#foreach ($valueType in $valueTypes)
+#set ($valueObject = $valueType)
+#end
+## use attri get all of the values.
+#set($values = ${attri.getValues().withoutMultiples()})
+#if ($values.size() ==2 && $dataTypes.size()==0)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($value in $values)
+#if ($value==true)
+#set ($trueFlag = true)
+#end
+#if ($value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($hasdatatype = true)
+#set ($valueObject = "Boolean")
+#end
+#end
+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")
+#set ($valueObject = "String")
+#end
+#if ($valueObject != "String")
+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})
+#end
+#if ($attr != "*")
+#set ($attribute = ${attr.withMultiples()})
+#set ($aNS = ${attribute.getNamespace()})
+#set ($aClassname = "${model.camelCase($attribute)}Attribute")
+#set ($aParam = "${model.javaCase($attribute)}Value")
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+#if (${element.isMandatory($attribute)})
+	 * Attribute is mandatory.
+	 *
+#end
+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public $valueObject get${aClassname}() {
+		$aClassname attr = ($aClassname) getOdfAttribute(OdfDocumentNamespace.${aNS.toUpperCase()}, "${attribute.getLocalName()}");
+		if (attr != null) {
+#if ($simpleValue!="")
+			return ${valueObject}.valueOf(attr.${simpleValue}Value());
+#else
+			return ${valueObject}.valueOf(attr.getValue());
+#end
+		}
+#if ($odfmodel.getDefaultAttributeValue($attribute, $element))
+#set ($defaultValue = ${model.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))})
+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))
+#if ($defaultValueSet.size()>1)
+#set ($constant = $model.constantCase($defaultValue))
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)};
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)});
+#end
+#else
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE;
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);
+#end
+#end
+#else
+		return null;
+#end
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+	 * @param $aParam   The type is <code>$valueObject</code>
+	 */
+	public void set${aClassname}($valueObject $aParam) {
+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+#if ($valueObject == "String")
+		attr.setValue($aParam);
+#else
+		attr.set${model.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());
+#end
+	}
+#end
+#end
+
+##
+## ---------------------------------------------------
+##  Methods for child element creation
+## ---------------------------------------------------
+##
+#foreach($ch in $children)
+#if ($ch != "*")
+#set ($child = ${ch.withMultiples()})
+#set ($cClassname = "${model.camelCase($child)}Element")
+#set ($cVar = ${model.javaCase($child)})
+#set ($ch_attributes = ${child.getAttributes().withoutMultiples()})
+##set has parameter flag
+#set ($hasParams = false)
+#foreach ($ch_attribute in $ch_attributes)
+#if (${child.isMandatory($ch_attribute)})
+#set ($hasParams = true)
+#end
+#end
+#if ($hasParams)
+	/**
+	 * Create child element {@odf.element ${child}}.
+	 *
+#set ($seperateFlag="")
+#set ($params="")
+#foreach ($ch_attr in $ch_attributes)
+#if (${child.isMandatory($ch_attr)})
+#set($ch_attri = ${model.getAttribute($ch_attr.getQName())})
+#set ($ch_ValueObject = "String")
+#set ($ch_SimpleValue = "")
+#set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()})
+#set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)})
+#foreach ($ch_ValueType in $ch_ValueTypes)
+#set ($ch_ValueObject = $ch_ValueType)
+#end
+## use ch_attri get all of the values.
+#set($ch_Values = ${ch_attri.getValues().withoutMultiples()})
+#if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($ch_Value in $ch_Values)
+#if ($ch_Value==true)
+#set ($trueFlag = true)
+#end
+#if ($ch_Value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($ch_Hasdatatype = true)
+#set ($ch_ValueObject = "Boolean")
+#end
+#end
+#if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean")
+#set ($ch_ValueObject = "String")
+#end
+#if ($ch_ValueObject != "String")
+#set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)})
+#end
+#if ($ch_attr != "*")
+#set ($attribute = ${ch_attr.withMultiples()})
+#set ($aNS = ${attribute.getNamespace()})
+#set ($aClassname = "${model.camelCase($attribute)}Attribute")
+#set ($aParam = "${model.javaCase($attribute)}Value")
+	 * @param $aParam  the <code>$ch_ValueObject</code> value of <code>$aClassname</code>, see {@odf.attribute  ${attribute.getQName()}} at specification
+#if ($ch_SimpleValue!="")
+#set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}")
+#else
+#set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}")
+#end
+#set ($seperateFlag=", ")
+#end
+#end
+#end
+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)
+## but we can compare by name
+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})
+	 * Child element is new in Odf 1.2
+	 *
+#end
+#if (${element.isMandatory($child)})
+	 * Child element is mandatory.
+	 *
+#end
+	 * @return the element {@odf.element ${child}}
+	 */
+	 public $cClassname new${cClassname}($params) {
+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);
+#foreach ($ch_attr in $ch_attributes)
+#if ($ch_attr != "*" && ${child.isMandatory($ch_attr)})
+#set ($aClassname = "${model.camelCase($ch_attr)}Attribute")
+#set ($aParam = "${model.javaCase($ch_attr)}Value")
+		${cVar}.set$aClassname($aParam);
+#end
+#end
+		this.appendChild($cVar);
+		return $cVar;
+	}
+
+#else
+	/**
+	 * Create child element {@odf.element ${child}}.
+	 *
+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)
+## but we can compare by name
+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})
+	 * Child element is new in Odf 1.2
+	 *
+#end
+#if (${element.isMandatory($child)})
+	 * Child element is mandatory.
+	 *
+#end
+	 * @return the element {@odf.element ${child}}
+	 */
+	public $cClassname new${cClassname}() {
+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);
+		this.appendChild($cVar);
+		return $cVar;
+	}
+
+#end
+#end
+#end
+##
+## -----------------------------------------------------
+##  New: newTextNode
+## -----------------------------------------------------
+##
+#if ($element.canHaveText())
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	 public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	 }
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-element-visitor.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-element-visitor.vm
new file mode 100644
index 0000000..b306af1
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-element-visitor.vm
@@ -0,0 +1,59 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+package org.odftoolkit.odfdom.dom;
+
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+##
+#foreach ($element in ${model.getElements().withoutMultiples()})
+#if ($element != "*")
+#set ($NS = ${element.getNamespace()})
+#set ($classname = "${model.camelCase($element)}Element")
+import org.odftoolkit.odfdom.dom.element.${NS}.${classname};
+#end
+#end
+##
+
+/**
+ * A default visitor for DOM layer elements.
+ * <p> It implements the interface of DomVisitor in package layer.</p>
+ * <p> It provides element process method for some special elements. </p>
+ *
+ */
+public abstract class DefaultElementVisitor implements ElementVisitor {
+
+	@Override
+	abstract public void visit(OdfElement element);
+#foreach ($element in ${model.getElements().withoutMultiples()})
+#if ($element != "*")
+#set ($NS = ${element.getNamespace()})
+#set ($classname = "${model.camelCase($element)}Element")
+	/**
+	 * A method to visit "${element.getQName()}" elements
+	 * @param ele - an instance of $classname
+	 */
+	public void visit($classname ele) {
+		visit((OdfElement) ele);
+	}
+#end
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-elementbase-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-elementbase-template.vm
new file mode 100644
index 0000000..7ebd0f5
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-elementbase-template.vm
@@ -0,0 +1,207 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Template to create the Java class representing an ODF element.
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+#set ($base = $javamodel.getBaseclass($context))
+#set ($baseElement = ${model.getElement($base.getQName())})
+#set($classname = "${model.camelCase($base)}ElementBase")
+##
+## Set Superclass
+#if (${base.isStylable()})
+#set ($stylable = true)
+#set ($superclass = "OdfStylableElement")
+#if ($baseElement)
+#set ($elementStyleFamily=${odfmodel.getStyleFamilies($baseElement)})
+#set ($useOdfStyleableShapeElement = false)
+#foreach($f in $elementStyleFamily)
+#if (${f.getQName()}=="draw:graphic" || ${f.getQName()}=="presentation:presentation")
+#set ($useOdfStyleableShapeElement = true)
+#end
+#end
+#end
+#else
+#set ($superclass = 'OdfElement')
+#end
+#if ($context== "text:list-level-style")
+#set ($superclass = 'OdfStyleBase')
+#end
+
+#if ($useOdfStyleableShapeElement || $classname=="DrawShapeElementBase")
+#set ($superclass = "OdfStyleableShapeElement")
+#end
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.${base.getNamespace()};
+
+##
+## ---------------------------------------------------
+##  Imports
+## ---------------------------------------------------
+##
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+#foreach ($attribute in ${base.getBaseAttributes().withoutMultiples()})
+#if ($attribute == "*")
+#set ($anyattribute = true)
+#else
+import org.odftoolkit.odfdom.dom.attribute.${attribute.getNamespace()}.${model.camelCase($attribute)}Attribute;
+#end
+#end
+
+##
+## ---------------------------------------------------
+##  Class
+## ---------------------------------------------------
+##
+/**
+ * DOM implementation of OpenDocument base element
+ *
+#if ($anyattribute)
+ * This class can have any org.w3c.dom.Attribute attribute.
+#end
+ */
+public abstract class $classname extends $superclass {
+
+	/**
+	 * Create the instance of <code>$classname</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+#if (${base.isStylable()}&& ($useOdfStyleableShapeElement == false) || $classname=="TextParagraphElementBase")
+	public $classname(OdfFileDom ownerDoc, OdfName elementName, OdfStyleFamily styleFamily, OdfName styleAttrName) {
+		super(ownerDoc, elementName, styleFamily, styleAttrName);
+	}
+#else
+	public $classname(OdfFileDom ownerDoc, OdfName elementName) {
+		super(ownerDoc, elementName);
+	}
+#end
+
+##
+## ---------------------------------------------------
+##  Attribute getters and setters
+## ---------------------------------------------------
+##
+#foreach ($attr in ${base.getBaseAttributes().withoutMultiples()})
+#set ($valueObject = "String")
+#set ($simpleValue = "")
+#set ($dataTypes = ${attr.getDatatypes().withoutMultiples()})
+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})
+#foreach ($valueType in $valueTypes)
+#set ($valueObject = $valueType)
+#end
+#set($values = ${attr.getValues().withoutMultiples()})
+#if ($values.size() ==2)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($value in $values)
+#if ($value==true)
+#set ($trueFlag = true)
+#end
+#if ($value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($hasdatatype = true)
+#set ($valueObject = "Boolean")
+#end
+#end
+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")
+#set ($valueObject = "String")
+#end
+#if ($valueObject != "String")
+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})
+#end
+#if ($attr != "*")
+#set ($attribute = ${attr.withMultiples()})
+#set ($aNS = ${attribute.getNamespace()})
+#set ($aClassname = "${model.camelCase($attribute)}Attribute")
+#set ($aParam = "${model.javaCase($attribute)}Value")
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public $valueObject get${aClassname}() {
+		$aClassname attr = ($aClassname) getOdfAttribute(OdfDocumentNamespace.${aNS.toUpperCase()}, "${attribute.getLocalName()}");
+		if (attr != null) {
+#if ($simpleValue!="")
+			return ${valueObject}.valueOf(attr.${simpleValue}Value());
+#else
+			return ${valueObject}.valueOf(attr.getValue());
+#end
+		}
+#if ($odfmodel.getDefaultAttributeValue($attr, $base))
+#set ($defaultValue = ${model.escapeLiteral($odfmodel.getDefaultAttributeValue($attr, $base))})
+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attr))
+#if ($defaultValueSet.size()>1)
+#set ($constant = $model.constantCase($defaultValue))
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)};
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)});
+#end
+#else
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE;
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);
+#end
+#end
+#else
+		return null;
+#end
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+	 * @param $aParam   The type is <code>$valueObject</code>
+	 */
+	public void set${aClassname}($valueObject $aParam) {
+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+#if ($valueObject == "String")
+		attr.setValue($aParam);
+#else
+		attr.set${model.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());
+#end
+	}
+#end
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-stylefamily.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-stylefamily.vm
new file mode 100644
index 0000000..d3368d1
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-stylefamily.vm
@@ -0,0 +1,121 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.style;
+
+import java.util.Arrays;
+import java.util.Collections;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Map;
+import java.util.HashMap;
+##
+#foreach ($styleelement in ${model.getElements().withoutMultiples()})
+#if ($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+import org.odftoolkit.odfdom.dom.element.style.${model.camelCase($styleelement)}Element;
+#end
+#end
+
+public class OdfStyleFamily implements Comparable<OdfStyleFamily> {
+
+	private Set<OdfStyleProperty> m_properties = new TreeSet<OdfStyleProperty>();
+	private static Map<String, OdfStyleFamily> m_familyByName = new HashMap<String, OdfStyleFamily>();
+
+	public static OdfStyleFamily getByName(String name) {
+		return m_familyByName.get(name);
+	}
+
+	private OdfStyleFamily(String name, OdfStyleProperty[] props) {
+		m_name = name;
+		m_properties.addAll(Arrays.asList(props));
+		m_familyByName.put(name, this);
+	}
+
+	private OdfStyleFamily(String name) {
+		m_name = name;
+		m_familyByName.put(name, this);
+	}
+		
+	public String getName() {
+		return m_name;
+	}
+
+	public int compareTo(OdfStyleFamily o) {
+		return m_name.compareTo(o.toString());
+	}
+
+	public static OdfStyleFamily valueOf(String name) {
+		OdfStyleFamily family = getByName(name);
+		if (family == null) {
+			family = new OdfStyleFamily(name);
+		} 
+		return family;
+	}
+
+	public static String toString(OdfStyleFamily family) {
+		if (family != null) {
+			return family.toString();
+		}
+		else {
+			return new String();
+		}
+	}
+
+	@Override
+	public String toString() {
+		return m_name;
+	}
+
+	public Set<OdfStyleProperty> getProperties() {
+		return Collections.unmodifiableSet(m_properties);
+	}
+
+#foreach ($family in ${odfmodel.getStyleFamilies()})
+	public final static OdfStyleFamily ${model.camelCase($model.extractLocalname($family))} = new OdfStyleFamily("${model.extractLocalname($family)}",
+			new OdfStyleProperty[]{
+#foreach ($styleelement in ${model.getElements().withoutMultiples()})
+#if ($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+#foreach ($property in ${styleelement.withMultiples().getAttributes()})
+#set($propertyName = ${property.getLocalName()})
+#if (${styleelement.getLocalName()}=="graphic-properties" && $propertyName =="shadow")
+#set($propertyName = ${property.getQName()})
+#end
+	${model.camelCase($styleelement)}Element.${model.camelCase($propertyName)},
+#end
+#end
+#end
+	});
+
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-styleproperties.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-styleproperties.vm
new file mode 100644
index 0000000..0064201
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-styleproperties.vm
@@ -0,0 +1,41 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+#include('copyright.txt')
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+#set ($element = ${model.getElement($context)})
+#set ($classname = "Odf${model.camelCase($element.getLocalName())}")
+public interface $classname {
+#foreach ($property in ${element.getAttributes().withoutMultiples()})
+#set($propertyName = ${property.getLocalName()})
+#if (${element.getLocalName()}=="graphic-properties" && $propertyName =="shadow")
+#set($propertyName = ${property.getQName()})
+#end
+	public final static OdfStyleProperty ${model.camelCase($propertyName)} =
+		OdfStyleProperty.get(OdfStylePropertiesSet.${model.camelCase($element.getLocalName())}, OdfName.newName(OdfDocumentNamespace.${property.getNamespace().toUpperCase()}, "${property.getLocalName()}"));
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-styleset.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-styleset.vm
new file mode 100644
index 0000000..330f9be
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/dom/java-odfdom-styleset.vm
@@ -0,0 +1,38 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Template	to create the list of artefacts	which are to be	generated
+##
+## Documentation of	template development can be	found in local file
+## TemplateHelp.html.
+##
+##
+#include('copyright.txt')
+// !!! GENERATED SOURCE	CODE !!!
+package	org.odftoolkit.odfdom.dom.style.props;
+public enum	OdfStylePropertiesSet {
+#foreach ($styleelement	in ${model.getElements().withoutMultiples()})
+#if	($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+	// style-${styleelement.getLocalName()}-attlist
+	${model.camelCase($styleelement.getLocalName())},
+#end
+#end
+}
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/copyright.txt b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/copyright.txt
new file mode 100644
index 0000000..b4a06cd
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/copyright.txt
@@ -0,0 +1,24 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-dsig-attribute-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-dsig-attribute-template.vm
new file mode 100644
index 0000000..4c4a92f
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-dsig-attribute-template.vm
@@ -0,0 +1,379 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the list of signature artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined

+## Template to create the list of artefacts which are to be generated

+#set($attribute = $signaturemodel.getAttribute($context))

+#set($NS = "urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0")

+#set ($PREFIX = "dsig")

+#set($localname = ${signaturemodel.extractLocalname($attribute)})

+#set($classname = "${signaturemodel.camelCase($attribute)}Attribute")

+#set ($valueobject = "String")

+##

+#set($datatypes = ${attribute.getDatatypes().withoutMultiples()})

+#if ($datatypes.size() > 0)

+#set ($hasdatatype = true)

+#else

+#set ($hasdatatype = false)

+#end

+##

+##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken

+#set($values = ${attribute.getValues().withoutMultiples()})

+#if ($values.size() > 0)

+#if ($values.size() ==2 && $hasdatatype == false)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueobject = "Boolean")

+#end

+#end

+#set ($enum = true)

+#if ($valueobject == "Boolean")

+#set ($enum = false)

+#end

+#else

+#set ($enum = false)

+#end

+##

+## Check whether the attribute has default value.

+##

+#set ($hasDefaultValue = false)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if (${odfmodel.getDefaultAttributeValue($attribute, $parent)})

+#set ($hasDefaultValue = true)

+#end

+#end

+##

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($hasDefaultValue and $defaultValueSet.size() == 1)

+#foreach ($value in $defaultValueSet)

+#set ($uniqueDefaultValue = $value)

+#end

+#end

+##

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+#if ($hasDefaultValue)

+import org.odftoolkit.odfdom.pkg.OdfElement;

+#end

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * DOM implementation of OpenDocument attribute  {@odf.attribute ${attribute.getQName()}}.

+ *

+ */

+public class $classname extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("${NS}", "${PREFIX}:${attribute}");

+#if ($hasDefaultValue)

+#if ($defaultValueSet.size()>1)

+#foreach ($defaultValue in $defaultValueSet)

+#set ($constant = $signaturemodel.constantCase($defaultValue))

+#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false)

+	public static final String DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)}= "$defaultValue";

+#else

+	public static final String DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)}=	Value.${signaturemodel.escapeKeyword($constant)}.toString();

+#end

+#end

+#else

+#if ($uniqueDefaultValue=="&#34;")

+	public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}";

+#else

+	public static final String DEFAULT_VALUE = "$uniqueDefaultValue";

+#end

+#end

+#end

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute ${attribute}}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute ${attribute}}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+##

+#if ($enum)

+

+	/**

+	 * The value set of {@odf.attribute ${attribute}}.

+	 */

+	public enum Value {

+#set ($separator="		")

+#foreach($value in $values)

+#if (${value.toString().length()} == 1)

+#set ($constant = $value)

+#else

+#set ($constant = $signaturemodel.constantCase($value))

+#end${separator}${signaturemodel.escapeKeyword($constant)}("${signaturemodel.escapeLiteral($value)}")#set ($separator=", ")

+#end ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+#end

+##

+## Handle Non-String-Attributes

+#set ($valuetypes = ${javamodel.getValuetypes($datatypes)})

+#if ($valueobject != "Boolean")

+#foreach ($valuetype in $valuetypes)

+#set ($valueobject = $valuetype)

+#end

+#end

+#if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean")

+#set ($valueobject = "String")

+#end

+#if ($valueobject != "String")

+#set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)})

+##

+

+	/**

+	 * @param value The <code>${simplevalue}</code> value of the attribute.

+	 */

+	public void set${signaturemodel.camelCase($simplevalue)}Value(${simplevalue} value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>${simplevalue}</code> value of the attribute

+	 */

+	public ${simplevalue} ${simplevalue}Value() {

+		String val = super.getValue();

+		try {

+			return ${valueobject}.parse${signaturemodel.camelCase($simplevalue)}(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+#end

+##

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+#else

+## enum and no datatype

+		try {

+			super.setValue(Value.enumValueOf(attrValue).toString());

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException(e);

+		}

+#end

+#else

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+#end

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+#else

+## enum and no datatype

+		try {

+			return Value.enumValueOf(super.getValue()).toString();

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException("the value of ${attribute} is not valid");

+		}

+#end

+#else

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of ${attribute} is not valid");

+		}

+#end

+	}

+

+#if ($hasDefaultValue)

+	/**

+	 * Returns the default value of {@odf.attribute ${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		OdfElement parentElement = (OdfElement)getOwnerElement();

+		String defaultValue = null;

+		if (parentElement != null) {

+#if ($defaultValueSet.size()>1)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))

+			if (parentElement instanceof ${signaturemodel.camelCase($parent)}Element) {

+				defaultValue = "${signaturemodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}";

+			}

+#end

+#end

+#else

+			defaultValue = "${signaturemodel.escapeLiteral($uniqueDefaultValue)}";

+#end

+		}

+		return defaultValue;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return getOwnerElement() == null ? false : true;

+	}

+#else

+	/**

+	 * Returns the default value of {@odf.attribute ${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+#end

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+#if ($hasdatatype and $datatypes.size() > 0)

+#set ($datatype="")

+#foreach($value in $datatypes)

+#set ($datatype=$value)

+#end

+#if ($datatype == "ID")

+		return true;

+#else

+		return false;

+#end

+#else

+		return false;

+#end

+	}

+}

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-dsig-element-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-dsig-element-template.vm
new file mode 100644
index 0000000..0ebb09a
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-dsig-element-template.vm
@@ -0,0 +1,370 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the Java class representing an ODF signature element

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+#set ($element = ${signaturemodel.getElement($context)})

+#if ($element == "Signature")

+	#set ($NS = "http://www.w3.org/2000/09/xmldsig#")

+	#set ($PREFIX = "ds")

+#else

+	#set ($NS = "urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0")

+	#set ($PREFIX = "dsig")

+#end

+###set ($NS = "${element.getNamespace()}")

+#set ($classname = "${model.camelCase($element)}Element")

+##

+## Set child element and child attributes

+#set ($children = ${element.getChildElements().withoutMultiples()})

+#set ($attributes = ${element.getAttributes().withoutMultiples()})

+##

+## Set base class OdfElement

+#set ($baseclassname = "OdfElement")

+#set ($baseHasMandatoryAttr = false)

+##

+## ...or configured base class

+#if (${javamodel.getBaseclassOf($element)})

+#set ($base = ${javamodel.getBaseclassOf($element)})

+#end

+## Configured manually generated base class?

+#if ($base == "container")

+#set ($_specialbase = true)

+#set ($baseclassname = "OdfContainerElementBase")

+#set ($baseimport = "org.odftoolkit.odfdom.pkg.$baseclassname")

+#set ($baseHasMandatoryAttr = false)

+#end

+##

+## Test if this element has mandatory (non optional) attributes

+#set ($hasMandatoryAttr = false)

+#foreach ($attribute in $attributes)

+#if (${element.isMandatory($attribute)})

+#set ($hasMandatoryAttr = true)

+#set ($mandatoryAttr = $attribute)

+#end

+#end

+##

+## Begin Code

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+##

+## ---------------------------------------------------

+##  Imports

+## ---------------------------------------------------

+##

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+##

+## If there is a base class which is not in the current package

+#if ($baseimport)

+import ${baseimport};

+#end

+

+##

+## ---------------------------------------------------

+##  Class

+## ---------------------------------------------------

+##

+/**

+ * Data signature implementation of OpenDocument element  {@odf.element ${context}}.

+ *

+#if ($anychild)

+ * This class can have any org.w3c.dom.Element child element.

+#end

+#if ($anyattribute)

+ * This class can have any org.w3c.dom.Attribute attribute.

+#end

+ */

+public class $classname extends $baseclassname {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("${NS}", "${PREFIX}:${element}");

+

+	/**

+	 * Create the instance of <code>$classname</code>

+	 *

+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element ${context}}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+##

+## ---------------------------------------------------

+##  Add init method if this element or the base

+##  element has mandatory attributes

+##  TODO: NO caller use this method.

+## ---------------------------------------------------

+##

+## ---------------------------------------------------

+##  Attribute getters and setters

+## ---------------------------------------------------

+##

+#foreach ($attr in $attributes)

+#set($attri = ${signaturemodel.getAttribute($attr.getQName())})

+#set ($valueObject = "String")

+#set ($simpleValue = "")

+#set ($dataTypes = ${attri.getDatatypes().withoutMultiples()})

+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})

+#foreach ($valueType in $valueTypes)

+#set ($valueObject = $valueType)

+#end

+## use attri get all of the values.

+#set($values = ${attri.getValues().withoutMultiples()})

+#if ($values.size() ==2 && $dataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueObject = "Boolean")

+#end

+#end

+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")

+#set ($valueObject = "String")

+#end

+#if ($valueObject != "String")

+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})

+#end

+#if ($attr != "*")

+#set ($attribute = ${attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${signaturemodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${signaturemodel.javaCase($attribute)}Value")

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}

+	 *

+#if (${element.isMandatory($attribute)})

+	 * Attribute is mandatory.

+	 *

+#end

+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public $valueObject get${aClassname}() {

+		$aClassname attr = ($aClassname) getOdfAttribute(${aClassname}.ATTRIBUTE_NAME);

+		if (attr != null) {

+#if ($simpleValue!="")

+			return ${valueObject}.valueOf(attr.${simpleValue}Value());

+#else

+			return ${valueObject}.valueOf(attr.getValue());

+#end

+		}

+#if ($odfmodel.getDefaultAttributeValue($attribute, $element))

+#set ($defaultValue = ${signaturemodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))})

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($defaultValueSet.size()>1)

+#set ($constant = $signaturemodel.constantCase($defaultValue))

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)};

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)});

+#end

+#else

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE;

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);

+#end

+#end

+#else

+		return null;

+#end

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}

+	 *

+	 * @param $aParam   The type is <code>$valueObject</code>

+	 */

+	public void set${aClassname}($valueObject $aParam) {

+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+#if ($valueObject == "String")

+		attr.setValue($aParam);

+#else

+		attr.set${signaturemodel.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());

+#end

+	}

+#end

+#end

+

+##

+## ---------------------------------------------------

+##  Methods for child element creation

+## ---------------------------------------------------

+##

+#foreach($ch in $children)

+#if ($ch != "*")

+#set ($child = ${ch.withMultiples()})

+#set ($cClassname = "${signaturemodel.camelCase($child)}Element")

+#set ($cVar = ${signaturemodel.javaCase($child)})

+#set ($ch_attributes = ${child.getAttributes().withoutMultiples()})

+##set has parameter flag

+#set ($hasParams = false)

+#foreach ($ch_attribute in $ch_attributes)

+#if (${child.isMandatory($ch_attribute)})

+#set ($hasParams = true)

+#end

+#end

+#if ($hasParams)

+	/**

+	 * Create child element {@odf.element ${child}}.

+	 *

+#set ($seperateFlag="")

+#set ($params="")

+#foreach ($ch_attr in $ch_attributes)

+#if (${child.isMandatory($ch_attr)})

+#set($ch_attri = ${signaturemodel.getAttribute($ch_attr.getQName())})

+#set ($ch_ValueObject = "String")

+#set ($ch_SimpleValue = "")

+#set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()})

+#set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)})

+#foreach ($ch_ValueType in $ch_ValueTypes)

+#set ($ch_ValueObject = $ch_ValueType)

+#end

+## use ch_attri get all of the values.

+#set($ch_Values = ${ch_attri.getValues().withoutMultiples()})

+#if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($ch_Value in $ch_Values)

+#if ($ch_Value==true)

+#set ($trueFlag = true)

+#end

+#if ($ch_Value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($ch_Hasdatatype = true)

+#set ($ch_ValueObject = "Boolean")

+#end

+#end

+#if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean")

+#set ($ch_ValueObject = "String")

+#end

+#if ($ch_ValueObject != "String")

+#set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)})

+#end

+#if ($ch_attr != "*")

+#set ($attribute = ${ch_attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${signaturemodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${signaturemodel.javaCase($attribute)}Value")

+	 * @param $aParam  the <code>$ch_ValueObject</code> value of <code>$aClassname</code>, see {@odf.attribute  ${attribute.getQName()}} at specification

+#if ($ch_SimpleValue!="")

+#set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}")

+#else

+#set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}")

+#end

+#set ($seperateFlag=", ")

+#end

+#end

+#end

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element ${child}}

+	 */

+	 public $cClassname new${cClassname}($params) {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+#foreach ($ch_attr in $ch_attributes)

+#if ($ch_attr != "*" && ${child.isMandatory($ch_attr)})

+#set ($aClassname = "${signaturemodel.camelCase($ch_attr)}Attribute")

+#set ($aParam = "${signaturemodel.javaCase($ch_attr)}Value")

+		${cVar}.set$aClassname($aParam);

+#end

+#end

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#else

+	/**

+	 * Create child element {@odf.element ${child}}.

+	 *

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element ${child}}

+	 */

+	public $cClassname new${cClassname}() {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#end

+#end

+#end

+##

+## -----------------------------------------------------

+##  New: newTextNode

+## -----------------------------------------------------

+##

+#if ($element.canHaveText())

+	/**

+	 * Add text content. Only elements which are allowed to have text content offer this method.

+	 */

+	 public void newTextNode(String content) {

+		if (content != null && !content.equals("")) {

+			this.appendChild(this.getOwnerDocument().createTextNode(content));

+		}

+	 }

+#end

+}

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-manifest-attribute-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-manifest-attribute-template.vm
new file mode 100644
index 0000000..7f025f5
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-manifest-attribute-template.vm
@@ -0,0 +1,385 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the list of manifest artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined

+#set($attribute = $manifestmodel.getAttribute($context))

+#set ($NS = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0")

+#set($NS = ${attribute.getNamespace()})

+#set($localname = ${manifestmodel.extractLocalname($attribute)})

+#set($classname = "${manifestmodel.camelCase($attribute)}Attribute")

+#set ($valueobject = "String")

+##

+#set($datatypes = ${attribute.getDatatypes().withoutMultiples()})

+#if ($datatypes.size() > 0)

+#set ($hasdatatype = true)

+#else

+#set ($hasdatatype = false)

+#end

+##

+##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken

+#set($values = ${attribute.getValues().withoutMultiples()})

+#if ($values.size() > 0)

+#if ($values.size() ==2 && $hasdatatype == false)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueobject = "Boolean")

+#end

+#end

+#set ($enum = true)

+#if ($valueobject == "Boolean")

+#set ($enum = false)

+#end

+#else

+#set ($enum = false)

+#end

+##

+## Check whether the attribute has default value.

+##

+#set ($hasDefaultValue = false)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if (${odfmodel.getDefaultAttributeValue($attribute, $parent)})

+#set ($hasDefaultValue = true)

+#end

+#end

+##

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($hasDefaultValue and $defaultValueSet.size() == 1)

+#foreach ($value in $defaultValueSet)

+#set ($uniqueDefaultValue = $value)

+#end

+#end

+##

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+#if ($hasDefaultValue)

+import org.odftoolkit.odfdom.pkg.OdfElement;

+#end

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+#if ($hasDefaultValue and $defaultValueSet.size()>1)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))

+import org.odftoolkit.odfdom.pkg.${parent.getNamespace()}.${manifestmodel.camelCase($parent)}Element;

+#end

+#end

+#end

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute ${attribute.getQName()}}.

+ *

+ */

+public class $classname extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("${NS}", "manifest:${attribute}");

+#if ($hasDefaultValue)

+#if ($defaultValueSet.size()>1)

+#foreach ($defaultValue in $defaultValueSet)

+#set ($constant = $manifestmodel.constantCase($defaultValue))

+#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false)

+	public static final String DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}= "$defaultValue";

+#else

+	public static final String DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}=	Value.${manifestmodel.escapeKeyword($constant)}.toString();

+#end

+#end

+#else

+#if ($uniqueDefaultValue=="&#34;")

+	public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}";

+#else

+	public static final String DEFAULT_VALUE = "$uniqueDefaultValue";

+#end

+#end

+#end

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute ${attribute}}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute ${attribute}}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+##

+#if ($enum)

+

+	/**

+	 * The value set of {@odf.attribute ${attribute}}.

+	 */

+	public enum Value {

+#set ($separator="		")

+#foreach($value in $values)

+#if (${value.toString().length()} == 1)

+#set ($constant = $value)

+#else

+#set ($constant = $manifestmodel.constantCase($value))

+#end${separator}${manifestmodel.escapeKeyword($constant)}("${manifestmodel.escapeLiteral($value)}")#set ($separator=", ")

+#end ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+#end

+##

+## Handle Non-String-Attributes

+#set ($valuetypes = ${javamodel.getValuetypes($datatypes)})

+#if ($valueobject != "Boolean")

+#foreach ($valuetype in $valuetypes)

+#set ($valueobject = $valuetype)

+#end

+#end

+#if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean")

+#set ($valueobject = "String")

+#end

+#if ($valueobject != "String")

+#set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)})

+##

+

+	/**

+	 * @param value The <code>${simplevalue}</code> value of the attribute.

+	 */

+	public void set${manifestmodel.camelCase($simplevalue)}Value(${simplevalue} value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>${simplevalue}</code> value of the attribute

+	 */

+	public ${simplevalue} ${simplevalue}Value() {

+		String val = super.getValue();

+		try {

+			return ${valueobject}.parse${manifestmodel.camelCase($simplevalue)}(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+#end

+##

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+#else

+## enum and no datatype

+		try {

+			super.setValue(Value.enumValueOf(attrValue).toString());

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException(e);

+		}

+#end

+#else

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+#end

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+#else

+## enum and no datatype

+		try {

+			return Value.enumValueOf(super.getValue()).toString();

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException("the value of ${attribute} is not valid");

+		}

+#end

+#else

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of ${attribute} is not valid");

+		}

+#end

+	}

+

+#if ($hasDefaultValue)

+	/**

+	 * Returns the default value of {@odf.attribute ${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		OdfElement parentElement = (OdfElement)getOwnerElement();

+		String defaultValue = null;

+		if (parentElement != null) {

+#if ($defaultValueSet.size()>1)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))

+			if (parentElement instanceof ${manifestmodel.camelCase($parent)}Element) {

+				defaultValue = "${manifestmodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}";

+			}

+#end

+#end

+#else

+			defaultValue = "${manifestmodel.escapeLiteral($uniqueDefaultValue)}";

+#end

+		}

+		return defaultValue;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return getOwnerElement() == null ? false : true;

+	}

+#else

+	/**

+	 * Returns the default value of {@odf.attribute ${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+#end

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+#if ($hasdatatype and $datatypes.size() > 0)

+#set ($datatype="")

+#foreach($value in $datatypes)

+#set ($datatype=$value)

+#end

+#if ($datatype == "ID")

+		return true;

+#else

+		return false;

+#end

+#else

+		return false;

+#end

+	}

+}

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-manifest-element-template.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-manifest-element-template.vm
new file mode 100644
index 0000000..714aa99
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/odfdom-manifest-element-template.vm
@@ -0,0 +1,344 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the Java class representing an ODF manifest element

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+#set ($element = ${manifestmodel.getElement($context)})

+#set ($oldelement = ${oldmodel.getElement($context)})

+###set ($NS = ${element.getNamespace()})

+#set ($classname = "${manifestmodel.camelCase($element)}Element")

+##

+## Set child element and child attributes

+#set ($children = ${element.getChildElements().withoutMultiples()})

+#set ($attributes = ${element.getAttributes().withoutMultiples()})

+##

+#set ($baseclassname = "OdfElement")

+#set ($baseHasMandatoryAttr = false)

+##

+## Test if this element has mandatory (non optional) attributes

+#set ($hasMandatoryAttr = false)

+#foreach ($attribute in $attributes)

+#if (${element.isMandatory($attribute)})

+#set ($hasMandatoryAttr = true)

+#set ($mandatoryAttr = $attribute)

+#end

+#end

+##

+## Begin Code

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+##

+## ---------------------------------------------------

+##  Imports

+## ---------------------------------------------------

+##

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+##

+## ---------------------------------------------------

+##  Class

+## ---------------------------------------------------

+##

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element ${context}}.

+ *

+#if ($anychild)

+ * This class can have any org.w3c.dom.Element child element.

+#end

+#if ($anyattribute)

+ * This class can have any org.w3c.dom.Attribute attribute.

+#end

+ */

+public class $classname extends $baseclassname {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:${element}");

+

+	/**

+	 * Create the instance of <code>$classname</code>

+	 *

+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element ${context}}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+##

+## ---------------------------------------------------

+##  Add init method if this element or the base

+##  element has mandatory attributes

+##  TODO: NO caller use this method.

+## ---------------------------------------------------

+##

+## ---------------------------------------------------

+##  Attribute getters and setters

+## ---------------------------------------------------

+##

+#foreach ($attr in $attributes)

+#set($attri = ${manifestmodel.getAttribute($attr.getQName())})

+#set ($valueObject = "String")

+#set ($simpleValue = "")

+#set ($dataTypes = ${attri.getDatatypes().withoutMultiples()})

+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})

+#foreach ($valueType in $valueTypes)

+#set ($valueObject = $valueType)

+#end

+## use attri get all of the values.

+#set($values = ${attri.getValues().withoutMultiples()})

+#if ($values.size() ==2 && $dataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueObject = "Boolean")

+#end

+#end

+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")

+#set ($valueObject = "String")

+#end

+#if ($valueObject != "String")

+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})

+#end

+#if ($attr != "*")

+#set ($attribute = ${attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${manifestmodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${manifestmodel.javaCase($attribute)}Value")

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}

+	 *

+#if (${element.isMandatory($attribute)})

+	 * Attribute is mandatory.

+	 *

+#end

+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public $valueObject get${aClassname}() {

+		$aClassname attr = ($aClassname) getOdfAttribute(${aClassname}.ATTRIBUTE_NAME);

+		if (attr != null) {

+#if ($simpleValue!="")

+			return ${valueObject}.valueOf(attr.${simpleValue}Value());

+#else

+			return ${valueObject}.valueOf(attr.getValue());

+#end

+		}

+#if ($odfmodel.getDefaultAttributeValue($attribute, $element))

+#set ($defaultValue = ${manifestmodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))})

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($defaultValueSet.size()>1)

+#set ($constant = $manifestmodel.constantCase($defaultValue))

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)};

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)});

+#end

+#else

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE;

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);

+#end

+#end

+#else

+		return null;

+#end

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}

+	 *

+	 * @param $aParam   The type is <code>$valueObject</code>

+	 */

+	public void set${aClassname}($valueObject $aParam) {

+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+#if ($valueObject == "String")

+		attr.setValue($aParam);

+#else

+		attr.set${manifestmodel.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());

+#end

+	}

+#end

+#end

+

+##

+## ---------------------------------------------------

+##  Methods for child element creation

+## ---------------------------------------------------

+##

+#foreach($ch in $children)

+#if ($ch != "*")

+#set ($child = ${ch.withMultiples()})

+#set ($cClassname = "${manifestmodel.camelCase($child)}Element")

+#set ($cVar = ${manifestmodel.javaCase($child)})

+#set ($ch_attributes = ${child.getAttributes().withoutMultiples()})

+##set has parameter flag

+#set ($hasParams = false)

+#foreach ($ch_attribute in $ch_attributes)

+#if (${child.isMandatory($ch_attribute)})

+#set ($hasParams = true)

+#end

+#end

+#if ($hasParams)

+	/**

+	 * Create child element {@odf.element ${child}}.

+	 *

+#set ($seperateFlag="")

+#set ($params="")

+#foreach ($ch_attr in $ch_attributes)

+#if (${child.isMandatory($ch_attr)})

+#set($ch_attri = ${manifestmodel.getAttribute($ch_attr.getQName())})

+#set ($ch_ValueObject = "String")

+#set ($ch_SimpleValue = "")

+#set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()})

+#set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)})

+#foreach ($ch_ValueType in $ch_ValueTypes)

+#set ($ch_ValueObject = $ch_ValueType)

+#end

+## use ch_attri get all of the values.

+#set($ch_Values = ${ch_attri.getValues().withoutMultiples()})

+#if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($ch_Value in $ch_Values)

+#if ($ch_Value==true)

+#set ($trueFlag = true)

+#end

+#if ($ch_Value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($ch_Hasdatatype = true)

+#set ($ch_ValueObject = "Boolean")

+#end

+#end

+#if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean")

+#set ($ch_ValueObject = "String")

+#end

+#if ($ch_ValueObject != "String")

+#set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)})

+#end

+#if ($ch_attr != "*")

+#set ($attribute = ${ch_attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${manifestmodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${manifestmodel.javaCase($attribute)}Value")

+	 * @param $aParam  the <code>$ch_ValueObject</code> value of <code>$aClassname</code>, see {@odf.attribute  ${attribute.getQName()}} at specification

+#if ($ch_SimpleValue!="")

+#set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}")

+#else

+#set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}")

+#end

+#set ($seperateFlag=", ")

+#end

+#end

+#end

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element ${child}}

+	 */

+	 public $cClassname new${cClassname}($params) {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+#foreach ($ch_attr in $ch_attributes)

+#if ($ch_attr != "*" && ${child.isMandatory($ch_attr)})

+#set ($aClassname = "${manifestmodel.camelCase($ch_attr)}Attribute")

+#set ($aParam = "${manifestmodel.javaCase($ch_attr)}Value")

+		${cVar}.set$aClassname($aParam);

+#end

+#end

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#else

+	/**

+	 * Create child element {@odf.element ${child}}.

+	 *

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element ${child}}

+	 */

+	public $cClassname new${cClassname}() {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#end

+#end

+#end

+##

+## -----------------------------------------------------

+##  New: newTextNode

+## -----------------------------------------------------

+##

+#if ($element.canHaveText())

+	/**

+	 * Add text content. Only elements which are allowed to have text content offer this method.

+	 */

+	 public void newTextNode(String content) {

+		if (content != null && !content.equals("")) {

+			this.appendChild(this.getOwnerDocument().createTextNode(content));

+		}

+	 }

+#end

+}

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/pkg-output-files.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/pkg-output-files.vm
new file mode 100644
index 0000000..f5e3f81
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-java/pkg/pkg-output-files.vm
@@ -0,0 +1,62 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+<?xml version="1.0" encoding="UTF-8"?>

+## Template to create the list of artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## src/main/resources/documentation/help.html

+##

+<filelist>

+##

+#foreach ($element in ${signaturemodel.getElements().withoutMultiples()})

+#if ($element != "*")

+##

+#set($classname = "${signaturemodel.camelCase($element)}Element")

+	<file path="org/odftoolkit/odfdom/pkg/dsig/${classname}.java" context="$element" template="odfdom-dsig-element-template.vm" />

+##

+#end

+#end

+##

+#foreach ($attribute in ${signaturemodel.getAttributes().withoutMultiples()})

+#if ($attribute != "*")

+##

+#set($classname = "${signaturemodel.camelCase($attribute)}Attribute")

+	<file path="org/odftoolkit/odfdom/pkg/dsig/${classname}.java" context="$attribute" template="odfdom-dsig-attribute-template.vm" />

+#end

+#end

+##

+#foreach ($element in ${manifestmodel.getElements().withoutMultiples()})

+#if ($element != "*")

+##

+#set($classname = "${manifestmodel.camelCase($element)}Element")

+	<file path="org/odftoolkit/odfdom/pkg/manifest/${classname}.java" context="$element" template="odfdom-manifest-element-template.vm" />

+##

+#end

+#end

+##

+#foreach ($attribute in ${manifestmodel.getAttributes().withoutMultiples()})

+#if ($attribute != "*")

+##

+#set($classname = "${manifestmodel.camelCase($attribute)}Attribute")

+	<file path="org/odftoolkit/odfdom/pkg/manifest/${classname}.java" context="$attribute" template="odfdom-manifest-attribute-template.vm" />

+#end

+#end

+</filelist>

diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/OdfTextDocument.odt b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/OdfTextDocument.odt
new file mode 100644
index 0000000..71becc8
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/OdfTextDocument.odt
Binary files differ
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/dom-output-files.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/dom-output-files.vm
new file mode 100644
index 0000000..0c0562e
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/dom-output-files.vm
@@ -0,0 +1,29 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+<?xml version="1.0" encoding="UTF-8"?>
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## src/main/resources/documentation/help.html
+##
+<filelist>
+    <file path="hierarchy.py" template="pythontest.vm" />
+</filelist>
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/odfdocument.py b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/odfdocument.py
new file mode 100644
index 0000000..5ccf8fd
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/odfdocument.py
@@ -0,0 +1,93 @@
+# /usr/bin/python
+
+########################################################################
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+#
+# Copyright 2009, 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.
+#
+########################################################################/
+
+from datetime import datetime
+from zipfile import ZipFile, ZipInfo, ZIP_DEFLATED, ZIP_STORED
+from hierarchy import CHILD_ELEMENTS, CHILD_ATTRIBUTES
+from xml.dom import minidom
+
+class OdfDocument:
+
+    # Constructor. Param: File-like input object or path to input file
+    def __init__(self, path_or_file):
+        self.mZip = ZipFile(path_or_file, 'r')
+        self.mContentDom = None
+        self.mStylesDom = None
+
+    # Get DOM of content.xml
+    def get_content_dom(self):
+        if not self.mContentDom:
+            contentString = self.mZip.read("content.xml")
+            self.mContentDom = minidom.parseString(contentString)
+        return self.mContentDom
+
+    # Get document type depended content root (e.g. office:text node for .odt)
+    def get_content_root(self):
+        self.get_content_dom()
+        document_content = self.mContentDom.firstChild
+        if document_content:
+            office_body = None
+            for child in document_content.childNodes:
+                if child.nodeName == "office:body":
+                    office_body = child
+                    break
+            if office_body:
+                return office_body.firstChild
+
+    # Get DOM of styles.xml
+    def get_styles_dom(self):
+        if not self.mStylesDom:
+            stylesString = self.mZip.read("styles.xml")
+            self.mStylesDom = minidom.parseString(stylesString)
+        return self.mStylesDom
+
+    # Save Document. The input file must not be overwritten.
+    def save(self, path_or_file):
+        outZip = ZipFile(path_or_file, 'w')
+        today = datetime.today()
+        self.get_content_dom()
+        self.get_styles_dom()
+        for filename in self.mZip.namelist():
+            transmit = ""
+            info = ZipInfo(filename, (today.year, today.month, today.day, today.hour, today.minute, today.second))
+            if filename == "content.xml":
+                transmit = self.mContentDom.toxml().encode( 'utf-8')
+            elif filename == "styles.xml":
+                transmit = self.mStylesDom.toxml().encode( 'utf-8')
+            else:
+                transmit = self.mZip.read(filename)
+            if filename == "mimetype":
+                info.compress_type = ZIP_STORED
+            else:
+                info.compress_type = ZIP_DEFLATED
+            outZip.writestr(info, transmit)
+        outZip.close()
+
+    # This method should be in Node itself
+    def allowed_child_elements(self, odf_node):
+        return CHILD_ELEMENTS[odf_node.nodeName]
+        
+    # This method should be in Node itself
+    def allowed_attributes(self, odf_node):
+        return CHILD_ATTRIBUTES[odf_node.nodeName]
\ No newline at end of file
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/pythontest.vm b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/pythontest.vm
new file mode 100644
index 0000000..b949f34
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/pythontest.vm
@@ -0,0 +1,76 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+
+## Context:
+##
+## - All SortedSets are copies, so in-place ops like remove, add, etc. are allowed
+## - Do not use $set2 = $set1 if you want to change only one of these. 
+##   Use $set2 = util.copySet($set1) instead.
+##
+## String odfName: Name of current ODF element (at the time of template initialization)
+## SortedSet<String> odfElementNames: Names of all ODF elements
+## SortedSet<String> odfElementBaseNames: Names of all ODF base elements
+## SortedSet<String> odfAttributeNames: Names of all ODF attributes
+## NamespaceDictionars nsdict: Utility to translate between NamespaceURI and local Namespace:
+##    String nsdict.getLocalNamespace(String NamespaceURI)
+##    String nsdict.getNamespaceURI(String LocalNamespace)
+## Expressions util: Utility to get and transform Expression names:
+##               String util.extractLocalname(String name)
+##               String util.extractNamespace(String name)
+##               String util.getQName(Expression exp)
+##               String util.camelCase(String raw): some-text-fragment -> SomeTextFragment
+##               String util.javaCase(String raw): some-text-fragment -> someTextFragment
+##    SortedSet<String> util.emptySet()
+##    SortedSet<String> util.copySet(Set<String> original)
+## ExpressionViewByName nameView: Access to ODF element and attribute name hierarchy:
+##    SortedSet<String> nameView.getElementChildNames(String parentelementname)
+##    SortedSet<String> nameView.getElementParentNames(String elementchildname)
+##    SortedSet<String> nameView.getAttributeChildNames(String parentelementname)
+##    SortedSet<String> nameView.getAttributeParentNames(String attributechildname)
+##               String nameView.getElementRename(String elementname)
+##               String nameView.getElementBaseName(String elementname)
+##               String nameView.getElementsByBaseName(String basename)
+##    SortedSet<String> nameView.getElementStyleFamilies(String elementname)
+##
+# /usr/bin/python
+
+CHILD_ELEMENTS = {
+#foreach( $name in $odfElementNames )
+	'$name' : ( \
+#set($sortedChildren = ${nameView.getElementChildNames($name)})
+#foreach($childname in $sortedChildren)
+		'$childname', \
+#end
+),
+#end
+}
+
+CHILD_ATTRIBUTES = {
+#foreach( $name in $odfElementNames )
+	'$name' : ( \
+#set($sortedAttributes = ${nameView.getAttributeChildNames($name)})
+#foreach( $attrname in $sortedAttributes)
+		'$attrname', \
+#end
+),
+#end
+}
+
diff --git a/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/test_main.py b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/test_main.py
new file mode 100644
index 0000000..ce3c008
--- /dev/null
+++ b/trunk/generator/schema2template/src/main/resources/examples/odf/odfdom-python/test_main.py
@@ -0,0 +1,42 @@
+########################################################################
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+#
+# Copyright 2009, 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.
+#
+########################################################################/
+
+import sys
+import os.path
+from odfdocument import OdfDocument
+
+if __name__ == "__main__":
+    mProjectBase = sys.path[0]
+    textTemplate = os.path.join(mProjectBase, "OdfTextDocument.odt")
+    odt = OdfDocument(textTemplate)
+    dom = odt.get_content_dom()
+    office_text = odt.get_content_root()
+
+    if "text:p" in odt.allowed_child_elements(office_text):
+        new_p = dom.createElement("text:p")
+        office_text.appendChild(new_p)
+        new_p.appendChild(dom.createTextNode("Text in a new paragraph."))
+
+    outputPath = os.path.join(mProjectBase, "Output.odt")
+    odt.save(outputPath)
+
+    print "Saved output in file %s" % (outputPath)
\ No newline at end of file
diff --git a/trunk/generator/schema2template/src/test/java/schema2template/TemplateAPICoverageTest.java b/trunk/generator/schema2template/src/test/java/schema2template/TemplateAPICoverageTest.java
new file mode 100644
index 0000000..d74dc11
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/java/schema2template/TemplateAPICoverageTest.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template;
+
+import java.lang.reflect.Method;
+import java.util.HashSet;
+import org.junit.Test;
+import schema2template.model.PuzzleComponent;
+import schema2template.model.PuzzlePiece;
+import schema2template.model.PuzzlePieceSet;
+import schema2template.model.QNameValue;
+import schema2template.model.QNamed;
+import schema2template.model.QNamedPuzzleComponent;
+import schema2template.model.XMLModel;
+import static org.junit.Assert.*;
+
+/** Regression test to make sure that API used by templates still exists */
+public class TemplateAPICoverageTest {
+
+
+    public TemplateAPICoverageTest() {
+    }
+
+    // Method name and number of input parameters
+    public static class MethodWithParameterCount {
+        public String methodName;
+        public int parameters;
+
+        @Override
+        public boolean equals(Object o) {
+            if (o instanceof MethodWithParameterCount) {
+                MethodWithParameterCount om = ((MethodWithParameterCount) o);
+                if (om.methodName.equals(methodName) && om.parameters == parameters) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return methodName.hashCode();
+        }
+    }
+
+
+    // Method-HashSet enhanced by convenient search functionality
+    public static class MethodSet extends HashSet<MethodWithParameterCount> {
+
+        public boolean contains(String methodName, int parameters) {
+            MethodWithParameterCount mwpc = new MethodWithParameterCount();
+            mwpc.methodName = methodName;
+            mwpc.parameters = parameters;
+            return contains(mwpc);
+        }
+
+    }
+
+
+    // get all Methods of a given class
+    public static MethodSet getMethods(Class clazz) {
+        MethodSet retval = new MethodSet();
+        Method[] methods = clazz.getMethods();
+        for (Method method : methods) {
+            MethodWithParameterCount mwpc = new MethodWithParameterCount();
+            mwpc.methodName = method.getName();
+            mwpc.parameters = method.getParameterTypes().length;
+            retval.add(mwpc);
+        }
+        return retval;
+    }
+
+
+    /**
+     * Test coverage: Test existance of methods made for template usage.
+     * If you rename a method, this test will fail to show that all templates
+     * using this method have to be adapted.
+     *
+     * The input parameter count of each method will be tested for additional safety.
+     */
+    @Test
+    public void testCoverage() {
+        MethodSet methods;
+        
+        methods = getMethods(PuzzleComponent.class);
+        assertTrue(methods.contains("canHaveText", 0));
+        assertTrue(methods.contains("getAttributes", 0));
+        assertTrue(methods.contains("getChildElements", 0));
+        assertTrue(methods.contains("getCollection", 0));
+        assertTrue(methods.contains("getDatatypes", 0));
+        assertTrue(methods.contains("getParents", 0));
+        assertTrue(methods.contains("getType", 0));
+        assertTrue(methods.contains("getValues", 0));
+        assertTrue(methods.contains("isSingleton", 1));
+
+        methods = getMethods(QNamed.class);
+        assertTrue(methods.contains("getLocalName",0));
+        assertTrue(methods.contains("getNamespace",0));
+        assertTrue(methods.contains("getQName",0));
+
+        methods = getMethods(XMLModel.class);
+        assertTrue(methods.contains("camelCase",1));
+        assertTrue(methods.contains("constantCase",1));
+        assertTrue(methods.contains("escapeKeyword",1));
+        assertTrue(methods.contains("escapeLiteral",1));
+        assertTrue(methods.contains("extractLocalname",1));
+        assertTrue(methods.contains("extractNamespace",1));
+        assertTrue(methods.contains("firstWord",1));
+        assertTrue(methods.contains("getAttribute",1));
+        assertTrue(methods.contains("getAttribute",2));
+        assertTrue(methods.contains("getAttributes",0));
+        assertTrue(methods.contains("getElement",1));
+        assertTrue(methods.contains("getElement",2));
+        assertTrue(methods.contains("getElements",0));
+        assertTrue(methods.contains("javaCase",1));
+        assertTrue(methods.contains("lastWord",1));
+
+        // Test inheritance -> so there's no need to test inherited methods
+        assertTrue(QNamed.class.isAssignableFrom(PuzzlePiece.class));
+        assertTrue(QNamed.class.isAssignableFrom(PuzzlePieceSet.class));
+        assertTrue(QNamed.class.isAssignableFrom(QNameValue.class));
+        assertTrue(QNamed.class.isAssignableFrom(QNamedPuzzleComponent.class));
+        assertTrue(PuzzleComponent.class.isAssignableFrom(QNamedPuzzleComponent.class));
+        assertTrue(QNamedPuzzleComponent.class.isAssignableFrom(PuzzlePiece.class));
+        assertTrue(QNamedPuzzleComponent.class.isAssignableFrom(PuzzlePieceSet.class));
+    }
+}
\ No newline at end of file
diff --git a/trunk/generator/schema2template/src/test/java/schema2template/example/ExampleGenerationTest.java b/trunk/generator/schema2template/src/test/java/schema2template/example/ExampleGenerationTest.java
new file mode 100644
index 0000000..a026f05
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/java/schema2template/example/ExampleGenerationTest.java
@@ -0,0 +1,46 @@
+/**
+ * **********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.Test;
+import org.junit.Assert;
+import schema2template.example.odf.OdfHelper;
+
+public class ExampleGenerationTest {
+
+	/**
+	 * Test: It should be able to generate all examples without a failure.
+	 */
+	@Test
+	public void testAllExampleGenerations() {
+		try {
+			OdfHelper.main(null);
+		} catch (Exception ex) {
+			Logger.getLogger(ExampleGenerationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail(ex.toString());
+		}
+	}
+}
diff --git a/trunk/generator/schema2template/src/test/java/schema2template/example/odf/OdfTemplateAPICoverageTest.java b/trunk/generator/schema2template/src/test/java/schema2template/example/odf/OdfTemplateAPICoverageTest.java
new file mode 100644
index 0000000..db61a7d
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/java/schema2template/example/odf/OdfTemplateAPICoverageTest.java
@@ -0,0 +1,69 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import org.junit.Test;
+import schema2template.TemplateAPICoverageTest;
+import schema2template.TemplateAPICoverageTest.MethodSet;
+import schema2template.model.QNamed;
+import static org.junit.Assert.*;
+
+public class OdfTemplateAPICoverageTest {
+
+    public OdfTemplateAPICoverageTest() {
+    }
+
+    /**
+     * Test coverage: Test existense of methods made for template usage.
+     * If you rename a method, this test will fail to show that all templates
+     * using this method have to be adapted.
+     *
+     * The input parameter count of each method will be tested for additional safety.
+     */
+    @Test
+    public void testOdfCoverage() {
+        MethodSet methods;
+        
+        methods = TemplateAPICoverageTest.getMethods(OdfModel.class);
+        assertTrue(methods.contains("getDefaultAttributeValue", 2));
+        assertTrue(methods.contains("getStyleFamilies", 0));
+        assertTrue(methods.contains("getStyleFamilies", 1));
+        assertTrue(methods.contains("isStylable", 1));
+
+        methods = TemplateAPICoverageTest.getMethods(SourceCodeModel.class);
+        assertTrue(methods.contains("getBaseclass",1));
+        assertTrue(methods.contains("getBaseclasses",0));
+        assertTrue(methods.contains("getBaseclassOf",1));
+        assertTrue(methods.contains("getConversiontype",1));
+        assertTrue(methods.contains("getPrimitiveType",1));
+        assertTrue(methods.contains("getValuetype",1));
+        assertTrue(methods.contains("getValuetypes",1));
+
+        methods = TemplateAPICoverageTest.getMethods(SourceCodeBaseClass.class);
+        assertTrue(methods.contains("isStylable",0));
+        assertTrue(methods.contains("getBaseAttributes",0));
+        assertTrue(methods.contains("getElements",0));
+
+        // Test inheritance -> so there's no need to test inherited methods
+        assertTrue(QNamed.class.isAssignableFrom(SourceCodeBaseClass.class));
+    }
+}
\ No newline at end of file
diff --git a/trunk/generator/schema2template/src/test/java/schema2template/example/odf/PuzzlePieceTest.java b/trunk/generator/schema2template/src/test/java/schema2template/example/odf/PuzzlePieceTest.java
new file mode 100644
index 0000000..91deaeb
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/java/schema2template/example/odf/PuzzlePieceTest.java
@@ -0,0 +1,221 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2009, 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 schema2template.example.odf;
+
+import com.sun.msv.grammar.Expression;
+import java.io.BufferedReader;
+import static schema2template.example.odf.OdfHelper.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.Test;
+import schema2template.model.PuzzlePiece;
+import schema2template.model.PuzzlePieceSet;
+import org.junit.Assert;
+import org.junit.Ignore;
+import schema2template.model.MSVExpressionIterator;
+
+public class PuzzlePieceTest {
+
+	private static final Logger LOG = Logger.getLogger(PuzzlePieceTest.class.getName());
+	private static final String OUTPUT_DUMP_ODF10 = "target" + File.separator + "odf10-msvtree.dump";
+	private static final String OUTPUT_DUMP_ODF11 = "target" + File.separator + "odf11-msvtree.dump";
+	private static final String OUTPUT_DUMP_ODF12 = "target" + File.separator + "odf12-msvtree.dump";
+	private static final String OUTPUT_REF_ODF10 = TEST_REFERENCE_DIR + File.separator + "odf10-msvtree.ref";
+	private static final String OUTPUT_REF_ODF11 = TEST_REFERENCE_DIR + File.separator + "odf11-msvtree.ref";
+	private static final String OUTPUT_REF_ODF12 = TEST_REFERENCE_DIR + File.separator + "odf12-msvtree.ref";
+	private static final int ODF12_ELEMENT_DUPLICATES = 7;
+	private static final int ODF12_ATTRIBUTE_DUPLICATES = 134;
+
+
+
+	/**
+	 * Test: Use the MSV
+	 *
+	 * <p>This test uses the ODF example, but it's meant to test the general ability to correctly
+	 * extract PuzzlePieces out of a XML schema</p>
+	 */
+	@Test
+	public void testMSVExpressionTree() {
+		try {
+			Expression odf10Root = OdfHelper.loadSchemaODF10();
+			String odf10Dump = MSVExpressionIterator.dumpMSVExpressionTree(odf10Root);
+			LOG.info("Writing MSV RelaxNG tree into file: " + OUTPUT_DUMP_ODF10);
+			PrintWriter out0 = new PrintWriter(new FileWriter(OUTPUT_DUMP_ODF10));
+			out0.print(odf10Dump);
+			out0.close();
+
+			Expression odf11Root = OdfHelper.loadSchemaODF11();
+			String odf11Dump = MSVExpressionIterator.dumpMSVExpressionTree(odf11Root);
+			LOG.info("Writing MSV RelaxNG tree into file: " + OUTPUT_DUMP_ODF11);
+			PrintWriter out1 = new PrintWriter(new FileWriter(OUTPUT_DUMP_ODF11));
+			out1.print(odf11Dump);
+			out1.close();
+
+			Expression odf12Root = OdfHelper.loadSchemaODF12();
+			String odf12Dump = MSVExpressionIterator.dumpMSVExpressionTree(odf12Root);
+			LOG.info("Writing MSV RelaxNG tree into file: " + OUTPUT_DUMP_ODF12);
+			PrintWriter out2 = new PrintWriter(new FileWriter(OUTPUT_DUMP_ODF12));
+			out2.print(odf12Dump);
+			out2.close();
+
+			String odf10Ref = readFileAsString(OUTPUT_REF_ODF10);
+			if(!odf10Ref.equals(odf10Dump)){
+				String errorMsg = "There is a difference between the expected outcome of the parsed ODF 1.0 tree.\n"
+					+ "Please compare the output:\n\t'" + OUTPUT_DUMP_ODF10 + "'\nwith the reference\n\t'" + odf10RngFile;
+				LOG.severe(errorMsg);
+				Assert.fail(errorMsg);
+			}
+
+			String odf11Ref = readFileAsString(OUTPUT_REF_ODF11);
+			if(!odf11Ref.equals(odf11Dump)){
+				String errorMsg = "There is a difference between the expected outcome of the parsed ODF 1.1 tree.\n"
+					+ "Please compare the output:\n\t'" + OUTPUT_DUMP_ODF11 + "'\nwith the reference\n\t'" + odf11RngFile;
+				LOG.severe(errorMsg);
+				Assert.fail(errorMsg);
+			}
+
+			String odf12Ref = readFileAsString(OUTPUT_REF_ODF12);
+			if(!odf12Ref.equals(odf12Dump)){
+				String errorMsg = "There is a difference between the expected outcome of the parsed ODF 1.2 tree.\n"
+					+ "Please compare the output:\n\t'" + OUTPUT_DUMP_ODF12 + "'\nwith the reference\n\t'" + odf12RngFile;
+				LOG.severe(errorMsg);
+				Assert.fail(errorMsg);
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(PuzzlePieceTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail(ex.toString());
+		}
+	}
+
+	/**
+	 * Reading a file into a string
+     * @param filePath  path of the file to be opened.
+     */
+    private String readFileAsString(String filePath) throws java.io.IOException {
+        StringBuilder fileData = new StringBuilder(2000);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
+        char[] buf = new char[1024];
+        int numRead = 0;
+        while ((numRead = reader.read(buf)) != -1) {
+            String readData = String.valueOf(buf, 0, numRead);
+            fileData.append(readData);
+            buf = new char[1024];
+        }
+        reader.close();
+        return fileData.toString();
+    }
+
+	/**
+	 * Test: Create PuzzlePiece elements and attributes with ODF Spec 1.1 (old version, won't be changed, so
+	 * it's a good base for a test).
+	 *
+	 * <p>This test uses the ODF example, but it's meant to test the general ability to correctly
+	 * extract PuzzlePieces out of a XML schema</p>
+	 */
+	@Test
+	public void testExtractPuzzlePieces() {
+		try {
+			PuzzlePieceSet allElements_ODF11 = new PuzzlePieceSet();
+			PuzzlePieceSet allAttributes_ODF11 = new PuzzlePieceSet();
+			PuzzlePiece.extractPuzzlePieces(OdfHelper.loadSchemaODF11(), allElements_ODF11, allAttributes_ODF11);
+			// There is a difference of one wildcard "*" representing anyElement/anyAttribute
+			checkFoundNumber(allElements_ODF11.withoutMultiples(), ODF11_ELEMENT_NUMBER + 1, "element");
+			checkFoundNumber(allAttributes_ODF11.withoutMultiples(), ODF11_ATTRIBUTE_NUMBER + 1, "attribute");
+
+			PuzzlePieceSet allElements_ODF12 = new PuzzlePieceSet();
+			PuzzlePieceSet allAttributes_ODF12 = new PuzzlePieceSet();
+			PuzzlePiece.extractPuzzlePieces(OdfHelper.loadSchemaODF12(), allElements_ODF12, allAttributes_ODF12);
+			// There is a difference of one wildcard "*" representing anyElement/anyAttribute
+			checkFoundNumber(allElements_ODF12.withoutMultiples(), ODF12_ELEMENT_NUMBER + 1, "element");
+			checkFoundNumber(allAttributes_ODF12.withoutMultiples(), ODF12_ATTRIBUTE_NUMBER + 1, "attribute");
+		} catch (Exception ex) {
+			Logger.getLogger(PuzzlePieceTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail(ex.toString());
+		}
+	}
+
+	/**
+	 * Test: Create PuzzlePiece elements and attributes with ODF Spec 1.1 (old version, won't be changed, so
+	 * it's a good base for a test).
+	 *
+	 * <p>This test uses the ODF example, but it's meant to test the general ability to correctly
+	 * extract PuzzlePieces out of a XML schema</p>
+	 */
+	@Test
+	@Ignore
+	public void testExtractPuzzlePiecesWithDuplicates() {
+		try {
+			PuzzlePieceSet allElements_ODF12 = new PuzzlePieceSet();
+			PuzzlePieceSet allAttributes_ODF12 = new PuzzlePieceSet();
+			PuzzlePiece.extractPuzzlePieces(OdfHelper.loadSchemaODF12(), allElements_ODF12, allAttributes_ODF12);
+			// There is a difference of one wildcard "*" representing anyElement/anyAttribute
+
+			int foundElementDuplicates = allElements_ODF12.size() - (ODF12_ELEMENT_NUMBER + 1);
+			int foundAttributeDuplicates = allAttributes_ODF12.size() - (ODF12_ATTRIBUTE_NUMBER + 1);
+
+			if(ODF12_ELEMENT_DUPLICATES != foundElementDuplicates){
+				String errorMsg = "There is a difference between the expected outcome of duplicates for ODF 1.2 elements.\n"
+					+ "Expected: '" + ODF12_ELEMENT_DUPLICATES + "'\tfound:'" + foundElementDuplicates;
+				LOG.severe(errorMsg);
+				Assert.fail(errorMsg);
+			}
+			if(ODF12_ATTRIBUTE_DUPLICATES != foundAttributeDuplicates){
+				String errorMsg = "There is a difference between the expected outcome of duplicates for ODF 1.2 elements.\n"
+					+ "Expected: '" + ODF12_ATTRIBUTE_DUPLICATES + "'\tfound:'" + foundAttributeDuplicates;
+				LOG.severe(errorMsg);
+				Assert.fail(errorMsg);
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(PuzzlePieceTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail(ex.toString());
+		}
+	}
+
+	/** Routine to compare the expected number of either attributes or elements with the found amount */
+	private void checkFoundNumber(PuzzlePieceSet puzzlePieceSet, int expectedAmount, String nodeName) {
+		if (expectedAmount == puzzlePieceSet.size()) {
+			LOG.log(Level.INFO, "The expected amount of {0}s could be found", nodeName);
+			if (DEBUG) {
+				int i = 0;
+				for (PuzzlePiece piece : puzzlePieceSet) {
+					LOG.info(piece.getQName() + " was " + nodeName + " #" + ++i);
+				}
+				LOG.info("++++++++++++");
+			}
+		} else {
+			String errorMsg = "Instead of " + expectedAmount
+					+ " there were " + puzzlePieceSet.size() + " " + nodeName + "s found";
+			LOG.severe(errorMsg);
+			int i = 0;
+			for (PuzzlePiece piece : puzzlePieceSet) {
+				LOG.severe(piece.getQName() + " was " + nodeName + " #" + ++i);
+			}
+			LOG.info("********************");
+			Assert.fail(errorMsg);
+		}
+	}	
+}
diff --git a/trunk/generator/schema2template/src/test/resources/examples/odf/odf10-msvtree.ref b/trunk/generator/schema2template/src/test/resources/examples/odf/odf10-msvtree.ref
new file mode 100644
index 0000000..a67aa3e
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/resources/examples/odf/odf10-msvtree.ref
@@ -0,0 +1,23483 @@
+0: CHOICE
+1: REF 'office-document',
+2: ELEMENT "office:document",
+3: SEQUENCE
+4: REF 'office-document-attrs',
+5: ATTRIBUTE "office:mimetype",
+6: REF 'string',
+7: DATA 'string',
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-meta',
+5: CHOICE
+6: ELEMENT "office:meta",
+7: REF 'office-meta-content',
+8: REF 'office-meta-content-strict',
+9: CHOICE
+10: ONEOREMORE
+11: REF 'office-meta-data',
+12: CHOICE
+13: ELEMENT "meta:generator",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "dc:title",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "dc:description",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "dc:subject",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "meta:keyword",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "meta:initial-creator",
+14: REF 'string',
+15: DATA 'string',
+13: REF 'dc-creator',
+14: ELEMENT "dc:creator",
+15: REF 'string',
+16: DATA 'string',
+13: ELEMENT "meta:printed-by",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "meta:creation-date",
+14: REF 'dateTime',
+15: DATA 'dateTime',
+13: REF 'dc-date',
+14: ELEMENT "dc:date",
+15: REF 'dateTime',
+16: DATA 'dateTime',
+13: ELEMENT "meta:print-date",
+14: REF 'dateTime',
+15: DATA 'dateTime',
+13: ELEMENT "meta:template",
+14: SEQUENCE
+15: ATTRIBUTE "xlink:href",
+16: REF 'anyURI',
+17: DATA 'anyURI',
+15: CHOICE
+16: ATTRIBUTE "xlink:type",
+17: VALUE 'simple',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:actuate",
+17: VALUE 'onRequest',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:title",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:date",
+17: REF 'dateTime',
+18: DATA 'dateTime',
+16: EPSILON
+13: ELEMENT "meta:auto-reload",
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "xlink:type",
+17: VALUE 'simple',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:show",
+17: VALUE 'replace',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:actuate",
+17: VALUE 'onLoad',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:href",
+17: REF 'anyURI',
+18: DATA 'anyURI',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:delay",
+17: REF 'duration',
+18: DATA 'duration',
+16: EPSILON
+13: ELEMENT "meta:hyperlink-behaviour",
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "office:target-frame-name",
+17: REF 'targetFrameName',
+18: CHOICE
+19: VALUE '_self',
+19: VALUE '_blank',
+19: VALUE '_parent',
+19: VALUE '_top',
+19: REF 'string',
+20: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:show",
+17: CHOICE
+18: VALUE 'new',
+18: VALUE 'replace',
+16: EPSILON
+13: ELEMENT "dc:language",
+14: REF 'language',
+15: DATA 'token',
+13: ELEMENT "meta:editing-cycles",
+14: REF 'nonNegativeInteger',
+15: DATA 'nonNegativeInteger',
+13: ELEMENT "meta:editing-duration",
+14: REF 'duration',
+15: DATA 'duration',
+13: ELEMENT "meta:document-statistic",
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "meta:page-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:table-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:draw-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:image-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:ole-object-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:paragraph-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:word-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:character-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "frame-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "sentence-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "syllable-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "non-whitespace-character-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:row-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:cell-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:object-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+13: ELEMENT "meta:user-defined",
+14: SEQUENCE
+15: ATTRIBUTE "meta:name",
+16: REF 'string',
+17: DATA 'string',
+15: CHOICE
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'float',
+17: REF 'double',
+18: DATA 'double',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'date',
+17: REF 'dateOrDateTime',
+18: CHOICE
+19: DATA 'date',
+19: DATA 'dateTime',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'time',
+17: REF 'duration',
+18: DATA 'duration',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'boolean',
+17: REF 'boolean',
+18: CHOICE
+19: VALUE 'true',
+19: VALUE 'false',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'string',
+17: REF 'string',
+18: DATA 'string',
+16: STRING
+10: EPSILON
+6: EPSILON
+4: REF 'office-settings',
+5: CHOICE
+6: ELEMENT "office:settings",
+7: ONEOREMORE
+8: REF 'config-config-item-set',
+9: ELEMENT "config:config-item-set",
+10: SEQUENCE
+11: REF 'config-config-item-set-attlist',
+12: ATTRIBUTE "config:name",
+13: REF 'string',
+14: DATA 'string',
+11: REF 'config-items',
+12: ONEOREMORE
+13: CHOICE
+14: REF 'config-config-item',
+15: ELEMENT "config:config-item",
+16: SEQUENCE
+17: REF 'config-config-item-attlist',
+18: INTERLEAVE
+19: ATTRIBUTE "config:name",
+20: REF 'string',
+21: DATA 'string',
+19: ATTRIBUTE "config:type",
+20: CHOICE
+21: VALUE 'boolean',
+21: VALUE 'short',
+21: VALUE 'int',
+21: VALUE 'long',
+21: VALUE 'double',
+21: VALUE 'string',
+21: VALUE 'datetime',
+21: VALUE 'base64Binary',
+17: STRING
+14: REF 'config-config-item-set',
+14: REF 'config-config-item-map-named',
+15: ELEMENT "config:config-item-map-named",
+16: SEQUENCE
+17: REF 'config-config-item-map-named-attlist',
+18: ATTRIBUTE "config:name",
+19: REF 'string',
+20: DATA 'string',
+17: ONEOREMORE
+18: REF 'config-config-item-map-entry',
+19: ELEMENT "config:config-item-map-entry",
+20: SEQUENCE
+21: REF 'config-config-item-map-entry-attlist',
+22: CHOICE
+23: ATTRIBUTE "config:name",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'config-items',
+22: ONEOREMORE
+23: CHOICE
+24: REF 'config-config-item',
+24: REF 'config-config-item-set',
+24: REF 'config-config-item-map-named',
+24: REF 'config-config-item-map-indexed',
+25: ELEMENT "config:config-item-map-indexed",
+26: SEQUENCE
+27: REF 'config-config-item-map-indexed-attlist',
+28: ATTRIBUTE "config:name",
+29: REF 'string',
+30: DATA 'string',
+27: ONEOREMORE
+28: REF 'config-config-item-map-entry',
+14: REF 'config-config-item-map-indexed',
+6: EPSILON
+4: REF 'office-scripts',
+5: CHOICE
+6: ELEMENT "office:scripts",
+7: SEQUENCE
+8: CHOICE
+9: ONEOREMORE
+10: REF 'office-script',
+11: ELEMENT "office:script",
+12: SEQUENCE
+13: REF 'office-script-attlist',
+14: ATTRIBUTE "script:language",
+15: REF 'string',
+16: DATA 'string',
+13: MIXED
+14: REF 'anyElements',
+15: CHOICE
+16: ONEOREMORE
+17: ELEMENT "*",
+18: MIXED
+19: REF 'anyAttListOrElements',
+20: SEQUENCE
+21: CHOICE
+22: ONEOREMORE
+23: ATTRIBUTE "*",
+24: STRING
+22: EPSILON
+21: REF 'anyElements',
+22: CHOICE
+23: ONEOREMORE
+23: EPSILON
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'office-event-listeners',
+10: ELEMENT "office:event-listeners",
+11: CHOICE
+12: ONEOREMORE
+13: CHOICE
+14: REF 'script-event-listener',
+15: ELEMENT "script:event-listener",
+16: REF 'script-event-listener-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "script:event-name",
+19: REF 'string',
+20: DATA 'string',
+18: ATTRIBUTE "script:language",
+19: REF 'string',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "script:macro-name",
+20: REF 'string',
+21: DATA 'string',
+19: SEQUENCE
+20: ATTRIBUTE "xlink:href",
+21: REF 'anyURI',
+22: DATA 'anyURI',
+20: CHOICE
+21: ATTRIBUTE "xlink:type",
+22: VALUE 'simple',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:actuate",
+22: VALUE 'onRequest',
+21: EPSILON
+14: REF 'presentation-event-listener',
+15: ELEMENT "presentation:event-listener",
+16: SEQUENCE
+17: REF 'presentation-event-listener-attlist',
+18: INTERLEAVE
+19: ATTRIBUTE "script:event-name",
+20: REF 'string',
+21: DATA 'string',
+19: ATTRIBUTE "presentation:action",
+20: CHOICE
+21: VALUE 'none',
+21: VALUE 'previous-page',
+21: VALUE 'next-page',
+21: VALUE 'first-page',
+21: VALUE 'last-page',
+21: VALUE 'hide',
+21: VALUE 'stop',
+21: VALUE 'execute',
+21: VALUE 'show',
+21: VALUE 'verb',
+21: VALUE 'fade-out',
+21: VALUE 'sound',
+19: CHOICE
+20: ATTRIBUTE "presentation:effect",
+21: REF 'presentationEffects',
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'fade',
+23: VALUE 'move',
+23: VALUE 'stripes',
+23: VALUE 'open',
+23: VALUE 'close',
+23: VALUE 'dissolve',
+23: VALUE 'wavyline',
+23: VALUE 'random',
+23: VALUE 'lines',
+23: VALUE 'laser',
+23: VALUE 'appear',
+23: VALUE 'hide',
+23: VALUE 'move-short',
+23: VALUE 'checkerboard',
+23: VALUE 'rotate',
+23: VALUE 'stretch',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:direction",
+21: REF 'presentationEffectDirections',
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'from-left',
+23: VALUE 'from-top',
+23: VALUE 'from-right',
+23: VALUE 'from-bottom',
+23: VALUE 'from-center',
+23: VALUE 'from-upper-left',
+23: VALUE 'from-upper-right',
+23: VALUE 'from-lower-left',
+23: VALUE 'from-lower-right',
+23: VALUE 'to-left',
+23: VALUE 'to-top',
+23: VALUE 'to-right',
+23: VALUE 'to-bottom',
+23: VALUE 'to-upper-left',
+23: VALUE 'to-upper-right',
+23: VALUE 'to-lower-right',
+23: VALUE 'to-lower-left',
+23: VALUE 'path',
+23: VALUE 'spiral-inward-left',
+23: VALUE 'spiral-inward-right',
+23: VALUE 'spiral-outward-left',
+23: VALUE 'spiral-outward-right',
+23: VALUE 'vertical',
+23: VALUE 'horizontal',
+23: VALUE 'to-center',
+23: VALUE 'clockwise',
+23: VALUE 'counter-clockwise',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:speed",
+21: REF 'presentationSpeeds',
+22: CHOICE
+23: VALUE 'slow',
+23: VALUE 'medium',
+23: VALUE 'fast',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:start-scale",
+21: REF 'percent',
+22: DATA 'string',
+20: EPSILON
+19: SEQUENCE
+20: CHOICE
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyURI',
+23: DATA 'anyURI',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:type",
+22: VALUE 'simple',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:show",
+22: VALUE 'embed',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:actuate",
+22: VALUE 'onRequest',
+21: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:verb",
+21: REF 'nonNegativeInteger',
+22: DATA 'nonNegativeInteger',
+20: EPSILON
+17: CHOICE
+18: REF 'presentation-sound',
+19: ELEMENT "presentation:sound",
+20: SEQUENCE
+21: REF 'presentation-sound-attlist',
+22: CHOICE
+23: ATTRIBUTE "presentation:play-full",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyURI',
+23: DATA 'anyURI',
+21: CHOICE
+22: ATTRIBUTE "xlink:type",
+23: VALUE 'simple',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "xlink:actuate",
+23: VALUE 'onRequest',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "xlink:show",
+23: CHOICE
+24: VALUE 'new',
+24: VALUE 'replace',
+22: EPSILON
+18: EPSILON
+12: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-font-face-decls',
+5: CHOICE
+6: ELEMENT "office:font-face-decls",
+7: CHOICE
+8: ONEOREMORE
+9: REF 'style-font-face',
+10: ELEMENT "style:font-face",
+11: SEQUENCE
+12: REF 'style-font-face-attlist',
+13: INTERLEAVE
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "svg:font-family",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-style",
+17: REF 'fontStyle',
+18: CHOICE
+19: VALUE 'normal',
+19: VALUE 'italic',
+19: VALUE 'oblique',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-variant",
+17: REF 'fontVariant',
+18: CHOICE
+19: VALUE 'normal',
+19: VALUE 'small-caps',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-weight",
+17: REF 'fontWeight',
+18: CHOICE
+19: VALUE 'normal',
+19: VALUE 'bold',
+19: VALUE '100',
+19: VALUE '200',
+19: VALUE '300',
+19: VALUE '400',
+19: VALUE '500',
+19: VALUE '600',
+19: VALUE '700',
+19: VALUE '800',
+19: VALUE '900',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-stretch",
+17: CHOICE
+18: VALUE 'normal',
+18: VALUE 'ultra-condensed',
+18: VALUE 'extra-condensed',
+18: VALUE 'condensed',
+18: VALUE 'semi-condensed',
+18: VALUE 'semi-expanded',
+18: VALUE 'expanded',
+18: VALUE 'extra-expanded',
+18: VALUE 'ultra-expanded',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-size",
+17: REF 'positiveLength',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:unicode-range",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:units-per-em",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:panose-1",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:stemv",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:stemh",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:slope",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:cap-height",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:x-height",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:accent-height",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:ascent",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:descent",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:widths",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:bbox",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:ideographic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:alphabetic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:mathematical",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:hanging",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-ideographic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-alphabetic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-mathematical",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-hanging",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:underline-position",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:underline-thickness",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:strikethrough-position",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:strikethrough-thickness",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:overline-position",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:overline-thickness",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+14: ATTRIBUTE "style:name",
+15: REF 'string',
+16: DATA 'string',
+14: CHOICE
+15: ATTRIBUTE "style:font-adornments",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-family-generic",
+16: REF 'fontFamilyGeneric',
+17: CHOICE
+18: VALUE 'roman',
+18: VALUE 'swiss',
+18: VALUE 'modern',
+18: VALUE 'decorative',
+18: VALUE 'script',
+18: VALUE 'system',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-pitch",
+16: REF 'fontPitch',
+17: CHOICE
+18: VALUE 'fixed',
+18: VALUE 'variable',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-charset",
+16: REF 'textEncoding',
+17: DATA 'string',
+15: EPSILON
+12: CHOICE
+13: REF 'svg-font-face-src',
+14: ELEMENT "svg:font-face-src",
+15: ONEOREMORE
+16: CHOICE
+17: REF 'svg-font-face-uri',
+18: ELEMENT "svg:font-face-uri",
+19: SEQUENCE
+20: REF 'common-svg-font-face-xlink-attlist',
+21: SEQUENCE
+22: ATTRIBUTE "xlink:href",
+23: REF 'anyURI',
+24: DATA 'anyURI',
+22: CHOICE
+23: ATTRIBUTE "xlink:type",
+24: VALUE 'simple',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "xlink:actuate",
+24: VALUE 'onRequest',
+23: EPSILON
+20: CHOICE
+21: ONEOREMORE
+22: REF 'svg-font-face-format',
+23: ELEMENT "svg:font-face-format",
+24: CHOICE
+25: ATTRIBUTE "svg:string",
+26: STRING
+25: EPSILON
+21: EPSILON
+17: REF 'svg-font-face-name',
+18: ELEMENT "svg:font-face-name",
+19: CHOICE
+20: ATTRIBUTE "name",
+21: STRING
+20: EPSILON
+13: EPSILON
+12: CHOICE
+13: REF 'svg-definition-src',
+14: ELEMENT "svg:definition-src",
+15: REF 'common-svg-font-face-xlink-attlist',
+16: SEQUENCE
+17: ATTRIBUTE "xlink:href",
+18: REF 'anyURI',
+19: DATA 'anyURI',
+17: CHOICE
+18: ATTRIBUTE "xlink:type",
+19: VALUE 'simple',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "xlink:actuate",
+19: VALUE 'onRequest',
+18: EPSILON
+13: EPSILON
+8: EPSILON
+6: EPSILON
+4: REF 'office-styles',
+5: CHOICE
+6: ELEMENT "office:styles",
+7: INTERLEAVE
+8: REF 'styles',
+9: INTERLEAVE
+10: CHOICE
+11: ONEOREMORE
+12: REF 'style-style',
+13: ELEMENT "style:style",
+14: SEQUENCE
+15: REF 'style-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:parent-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:next-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:list-style-name",
+19: CHOICE
+20: REF 'styleName',
+21: DATA 'NCName',
+20: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:master-page-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:auto-update",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:data-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:class",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:default-outline-level",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: EPSILON
+15: REF 'style-style-content',
+16: CHOICE
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'text',
+18: CHOICE
+19: REF 'style-text-properties',
+20: ELEMENT "style:text-properties",
+21: REF 'style-text-properties-content',
+22: REF 'style-text-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-text-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "fo:font-variant",
+28: REF 'fontVariant',
+29: CHOICE
+30: VALUE 'normal',
+30: VALUE 'small-caps',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-transform",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'lowercase',
+29: VALUE 'uppercase',
+29: VALUE 'capitalize',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:use-window-font-color",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-outline",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-type",
+28: REF 'lineType',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'single',
+30: VALUE 'double',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-style",
+28: REF 'lineStyle',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'solid',
+30: VALUE 'dotted',
+30: VALUE 'dash',
+30: VALUE 'long-dash',
+30: VALUE 'dot-dash',
+30: VALUE 'dot-dot-dash',
+30: VALUE 'wave',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-width",
+28: REF 'lineWidth',
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'normal',
+30: VALUE 'bold',
+30: VALUE 'thin',
+30: VALUE 'dash',
+30: VALUE 'medium',
+30: VALUE 'thick',
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+30: REF 'percent',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-color",
+28: CHOICE
+29: VALUE 'font-color',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-text",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-text-style",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-position",
+28: LIST
+29: SEQUENCE
+30: CHOICE
+31: REF 'percent',
+32: DATA 'string',
+31: VALUE 'super',
+31: VALUE 'sub',
+30: CHOICE
+31: REF 'percent',
+32: DATA 'string',
+31: EPSILON
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-name",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-name-asian",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-name-complex",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-family",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-asian",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-complex",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-family-generic",
+29: REF 'fontFamilyGeneric',
+30: CHOICE
+31: VALUE 'roman',
+31: VALUE 'swiss',
+31: VALUE 'modern',
+31: VALUE 'decorative',
+31: VALUE 'script',
+31: VALUE 'system',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-generic-asian",
+29: REF 'fontFamilyGeneric',
+30: CHOICE
+31: VALUE 'roman',
+31: VALUE 'swiss',
+31: VALUE 'modern',
+31: VALUE 'decorative',
+31: VALUE 'script',
+31: VALUE 'system',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-generic-complex",
+29: REF 'fontFamilyGeneric',
+30: CHOICE
+31: VALUE 'roman',
+31: VALUE 'swiss',
+31: VALUE 'modern',
+31: VALUE 'decorative',
+31: VALUE 'script',
+31: VALUE 'system',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-style-name",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-name-asian",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-name-complex",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-pitch",
+29: REF 'fontPitch',
+30: CHOICE
+31: VALUE 'fixed',
+31: VALUE 'variable',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-pitch-asian",
+29: REF 'fontPitch',
+30: CHOICE
+31: VALUE 'fixed',
+31: VALUE 'variable',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-pitch-complex",
+29: REF 'fontPitch',
+30: CHOICE
+31: VALUE 'fixed',
+31: VALUE 'variable',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:font-charset",
+28: REF 'textEncoding',
+29: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-size",
+29: CHOICE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-asian",
+29: CHOICE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-complex",
+29: CHOICE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-size-rel",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-rel-asian",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-rel-complex",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:script-type",
+28: CHOICE
+29: VALUE 'latin',
+29: VALUE 'asian',
+29: VALUE 'complex',
+29: VALUE 'ignore',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:letter-spacing",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: VALUE 'normal',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:language",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:language-asian",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:language-complex",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:country",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:country-asian",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:country-complex",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-style",
+29: REF 'fontStyle',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'italic',
+31: VALUE 'oblique',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-asian",
+29: REF 'fontStyle',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'italic',
+31: VALUE 'oblique',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-complex",
+29: REF 'fontStyle',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'italic',
+31: VALUE 'oblique',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:font-relief",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'embossed',
+29: VALUE 'engraved',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-shadow",
+28: REF 'shadowType',
+29: CHOICE
+30: VALUE 'none',
+30: REF 'string',
+31: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-type",
+28: REF 'lineType',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'single',
+30: VALUE 'double',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-style",
+28: REF 'lineStyle',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'solid',
+30: VALUE 'dotted',
+30: VALUE 'dash',
+30: VALUE 'long-dash',
+30: VALUE 'dot-dash',
+30: VALUE 'dot-dot-dash',
+30: VALUE 'wave',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-width",
+28: REF 'lineWidth',
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'normal',
+30: VALUE 'bold',
+30: VALUE 'thin',
+30: VALUE 'dash',
+30: VALUE 'medium',
+30: VALUE 'thick',
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+30: REF 'percent',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-color",
+28: CHOICE
+29: VALUE 'font-color',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-weight",
+29: REF 'fontWeight',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'bold',
+31: VALUE '100',
+31: VALUE '200',
+31: VALUE '300',
+31: VALUE '400',
+31: VALUE '500',
+31: VALUE '600',
+31: VALUE '700',
+31: VALUE '800',
+31: VALUE '900',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-weight-asian",
+29: REF 'fontWeight',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'bold',
+31: VALUE '100',
+31: VALUE '200',
+31: VALUE '300',
+31: VALUE '400',
+31: VALUE '500',
+31: VALUE '600',
+31: VALUE '700',
+31: VALUE '800',
+31: VALUE '900',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-weight-complex",
+29: REF 'fontWeight',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'bold',
+31: VALUE '100',
+31: VALUE '200',
+31: VALUE '300',
+31: VALUE '400',
+31: VALUE '500',
+31: VALUE '600',
+31: VALUE '700',
+31: VALUE '800',
+31: VALUE '900',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-mode",
+28: REF 'lineMode',
+29: CHOICE
+30: VALUE 'continuous',
+30: VALUE 'skip-white-space',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-mode",
+28: REF 'lineMode',
+29: CHOICE
+30: VALUE 'continuous',
+30: VALUE 'skip-white-space',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:letter-kerning",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-blinking",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-combine",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'letters',
+29: VALUE 'lines',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:text-combine-start-char",
+29: REF 'character',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:text-combine-end-char",
+29: REF 'character',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-emphasize",
+28: CHOICE
+29: VALUE 'none',
+29: LIST
+30: SEQUENCE
+31: CHOICE
+32: VALUE 'none',
+32: VALUE 'accent',
+32: VALUE 'dot',
+32: VALUE 'circle',
+32: VALUE 'disc',
+31: CHOICE
+32: VALUE 'above',
+32: VALUE 'below',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-scale",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-rotation-angle",
+28: REF 'integer',
+29: DATA 'integer',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-rotation-scale",
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'line-height',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenate",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-remain-char-count",
+28: REF 'positiveInteger',
+29: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-push-char-count",
+28: REF 'positiveInteger',
+29: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:display",
+28: VALUE 'true',
+27: ATTRIBUTE "text:display",
+28: VALUE 'none',
+27: SEQUENCE
+28: ATTRIBUTE "text:display",
+29: VALUE 'condition',
+28: ATTRIBUTE "text:condition",
+29: VALUE 'none',
+27: EPSILON
+24: REF 'style-text-properties-elements',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'paragraph',
+18: CHOICE
+19: REF 'style-paragraph-properties',
+20: ELEMENT "style:paragraph-properties",
+21: REF 'style-paragraph-properties-content',
+22: REF 'style-paragraph-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-paragraph-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "fo:line-height",
+28: CHOICE
+29: VALUE 'normal',
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-height-at-least",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-spacing",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:font-independent-line-spacing",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-text-align',
+27: CHOICE
+28: ATTRIBUTE "fo:text-align",
+29: CHOICE
+30: VALUE 'start',
+30: VALUE 'end',
+30: VALUE 'left',
+30: VALUE 'right',
+30: VALUE 'center',
+30: VALUE 'justify',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-align-last",
+28: CHOICE
+29: VALUE 'start',
+29: VALUE 'center',
+29: VALUE 'justify',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:justify-single-word",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:keep-together",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'always',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:widows",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:orphans",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:tab-stop-distance",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-keep",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'page',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-ladder-count",
+28: CHOICE
+29: VALUE 'no-limit',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:register-true",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-indent",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:auto-text-indent",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-vertical-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-top",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-bottom",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-margin-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:margin",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-border-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:border",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-top",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-bottom",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-left",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-right",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-border-line-width-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-top",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-bottom",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-left",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-right",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+26: REF 'common-padding-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:padding",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-top",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-bottom",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-left",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-right",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-keep-with-next-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:keep-with-next",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'always',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:number-lines",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:line-number",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-autospace",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'ideograph-alpha',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:punctuation-wrap",
+28: CHOICE
+29: VALUE 'simple',
+29: VALUE 'hanging',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-break",
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'strict',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:vertical-align",
+28: CHOICE
+29: VALUE 'top',
+29: VALUE 'middle',
+29: VALUE 'bottom',
+29: VALUE 'auto',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode-automatic",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:snap-to-layout-grid",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-page-number-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:page-number",
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:background-transparency",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+24: REF 'style-paragraph-properties-elements',
+25: INTERLEAVE
+26: REF 'style-tab-stops',
+27: CHOICE
+28: ELEMENT "style:tab-stops",
+29: CHOICE
+30: ONEOREMORE
+31: REF 'style-tab-stop',
+32: ELEMENT "style:tab-stop",
+33: REF 'style-tab-stop-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "style:position",
+36: REF 'nonNegativeLength',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "style:type",
+37: CHOICE
+38: VALUE 'left',
+38: VALUE 'center',
+38: VALUE 'right',
+36: EPSILON
+36: SEQUENCE
+37: ATTRIBUTE "style:type",
+38: VALUE 'char',
+37: REF 'style-tab-stop-char-attlist',
+38: ATTRIBUTE "style:char",
+39: REF 'character',
+40: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "style:leader-type",
+37: REF 'lineType',
+38: CHOICE
+39: VALUE 'none',
+39: VALUE 'single',
+39: VALUE 'double',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-style",
+37: REF 'lineStyle',
+38: CHOICE
+39: VALUE 'none',
+39: VALUE 'solid',
+39: VALUE 'dotted',
+39: VALUE 'dash',
+39: VALUE 'long-dash',
+39: VALUE 'dot-dash',
+39: VALUE 'dot-dot-dash',
+39: VALUE 'wave',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-width",
+37: REF 'lineWidth',
+38: CHOICE
+39: VALUE 'auto',
+39: VALUE 'normal',
+39: VALUE 'bold',
+39: VALUE 'thin',
+39: VALUE 'dash',
+39: VALUE 'medium',
+39: VALUE 'thick',
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+39: REF 'percent',
+40: DATA 'string',
+39: REF 'positiveLength',
+40: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-color",
+37: CHOICE
+38: VALUE 'font-color',
+38: REF 'color',
+39: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-text",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-text-style",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+30: EPSILON
+28: EPSILON
+26: REF 'style-drop-cap',
+27: CHOICE
+28: ELEMENT "style:drop-cap",
+29: REF 'style-drop-cap-attlist',
+30: INTERLEAVE
+31: CHOICE
+32: ATTRIBUTE "style:length",
+33: CHOICE
+34: VALUE 'word',
+34: REF 'positiveInteger',
+35: DATA 'positiveInteger',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:lines",
+33: REF 'positiveInteger',
+34: DATA 'positiveInteger',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:distance",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+28: EPSILON
+26: REF 'style-background-image',
+27: CHOICE
+28: ELEMENT "style:background-image",
+29: SEQUENCE
+30: REF 'style-background-image-attlist',
+31: INTERLEAVE
+32: CHOICE
+33: ATTRIBUTE "style:repeat",
+34: CHOICE
+35: VALUE 'no-repeat',
+35: VALUE 'repeat',
+35: VALUE 'stretch',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "style:position",
+34: CHOICE
+35: VALUE 'left',
+35: VALUE 'center',
+35: VALUE 'right',
+35: VALUE 'top',
+35: VALUE 'bottom',
+35: LIST
+36: SEQUENCE
+37: REF 'horiBackPos',
+38: CHOICE
+39: VALUE 'left',
+39: VALUE 'center',
+39: VALUE 'right',
+37: REF 'vertBackPos',
+38: CHOICE
+39: VALUE 'top',
+39: VALUE 'center',
+39: VALUE 'bottom',
+35: LIST
+36: SEQUENCE
+37: REF 'vertBackPos',
+38: CHOICE
+39: VALUE 'top',
+39: VALUE 'center',
+39: VALUE 'bottom',
+37: REF 'horiBackPos',
+38: CHOICE
+39: VALUE 'left',
+39: VALUE 'center',
+39: VALUE 'right',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "style:filter-name",
+34: REF 'string',
+35: DATA 'string',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "draw:opacity",
+34: REF 'percent',
+35: DATA 'string',
+33: EPSILON
+30: CHOICE
+31: REF 'common-draw-data-attlist',
+32: SEQUENCE
+33: ATTRIBUTE "xlink:href",
+34: REF 'anyURI',
+35: DATA 'anyURI',
+33: CHOICE
+34: ATTRIBUTE "xlink:type",
+35: VALUE 'simple',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "xlink:show",
+35: VALUE 'embed',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "xlink:actuate",
+35: VALUE 'onLoad',
+34: EPSILON
+31: REF 'office-binary-data',
+32: ELEMENT "office:binary-data",
+33: REF 'base64Binary',
+34: DATA 'base64Binary',
+31: EPSILON
+28: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'section',
+18: CHOICE
+19: REF 'style-section-properties',
+20: ELEMENT "style:section-properties",
+21: REF 'style-section-properties-content',
+22: REF 'style-section-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-section-properties-attlist',
+25: INTERLEAVE
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:protect",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:dont-balance-text-columns",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+24: REF 'style-section-properties-elements',
+25: INTERLEAVE
+26: REF 'style-background-image',
+27: CHOICE
+26: REF 'style-columns',
+27: CHOICE
+28: ELEMENT "style:columns",
+29: SEQUENCE
+30: REF 'style-columns-attlist',
+31: INTERLEAVE
+32: ATTRIBUTE "fo:column-count",
+33: REF 'positiveInteger',
+34: DATA 'positiveInteger',
+32: CHOICE
+33: ATTRIBUTE "fo:column-gap",
+34: REF 'length',
+35: DATA 'string',
+33: EPSILON
+30: CHOICE
+31: REF 'style-column-sep',
+32: ELEMENT "style:column-sep",
+33: REF 'style-column-sep-attlist',
+34: INTERLEAVE
+35: CHOICE
+36: ATTRIBUTE "style:style",
+37: CHOICE
+38: VALUE 'none',
+38: VALUE 'solid',
+38: VALUE 'dotted',
+38: VALUE 'dashed',
+38: VALUE 'dot-dashed',
+36: EPSILON
+35: ATTRIBUTE "style:width",
+36: REF 'length',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "style:height",
+37: REF 'percent',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:vertical-align",
+37: CHOICE
+38: VALUE 'top',
+38: VALUE 'middle',
+38: VALUE 'bottom',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:color",
+37: REF 'color',
+38: DATA 'string',
+36: EPSILON
+31: EPSILON
+30: CHOICE
+31: ONEOREMORE
+32: REF 'style-column',
+33: ELEMENT "style:column",
+34: REF 'style-column-attlist',
+35: INTERLEAVE
+36: ATTRIBUTE "style:rel-width",
+37: REF 'relativeLength',
+38: DATA 'string',
+36: CHOICE
+37: ATTRIBUTE "fo:start-indent",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "fo:end-indent",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "fo:space-before",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "fo:space-after",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+31: EPSILON
+28: EPSILON
+26: CHOICE
+27: ONEOREMORE
+28: REF 'text-notes-configuration',
+29: ELEMENT "text:notes-configuration",
+30: REF 'text-notes-configuration-content',
+31: INTERLEAVE
+32: REF 'text-note-class',
+33: ATTRIBUTE "text:note-class",
+34: CHOICE
+35: VALUE 'footnote',
+35: VALUE 'endnote',
+32: CHOICE
+33: ATTRIBUTE "text:citation-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:citation-body-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:default-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:master-page-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:start-value",
+34: REF 'nonNegativeInteger',
+35: DATA 'nonNegativeInteger',
+33: EPSILON
+32: SEQUENCE
+33: REF 'common-num-format-prefix-suffix-attlist',
+34: SEQUENCE
+35: CHOICE
+36: ATTRIBUTE "style:num-prefix",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:num-suffix",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: CHOICE
+34: REF 'common-num-format-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:num-format",
+37: CHOICE
+38: VALUE '1',
+38: VALUE 'i',
+38: VALUE 'I',
+38: REF 'string',
+39: DATA 'string',
+38: EPSILON
+36: SEQUENCE
+37: ATTRIBUTE "style:num-format",
+38: CHOICE
+39: VALUE 'a',
+39: VALUE 'A',
+37: REF 'style-num-letter-sync-attlist',
+38: CHOICE
+39: ATTRIBUTE "style:num-letter-sync",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+36: EPSILON
+34: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:start-numbering-at",
+34: CHOICE
+35: VALUE 'document',
+35: VALUE 'chapter',
+35: VALUE 'page',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:footnotes-position",
+34: CHOICE
+35: VALUE 'text',
+35: VALUE 'page',
+35: VALUE 'section',
+35: VALUE 'document',
+33: EPSILON
+32: CHOICE
+33: ELEMENT "text:note-continuation-notice-forward",
+34: STRING
+33: EPSILON
+32: CHOICE
+33: ELEMENT "text:note-continuation-notice-backward",
+34: STRING
+33: EPSILON
+27: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'ruby',
+18: CHOICE
+19: REF 'style-ruby-properties',
+20: ELEMENT "style:ruby-properties",
+21: REF 'style-ruby-properties-content',
+22: REF 'style-ruby-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-ruby-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "style:ruby-position",
+28: CHOICE
+29: VALUE 'above',
+29: VALUE 'below',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:ruby-align",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+29: VALUE 'distribute-letter',
+29: VALUE 'distribute-space',
+27: EPSILON
+24: REF 'style-ruby-properties-elements',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table',
+18: CHOICE
+19: REF 'style-table-properties',
+20: ELEMENT "style:table-properties",
+21: REF 'style-table-properties-content',
+22: REF 'style-table-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-properties-attlist',
+25: INTERLEAVE
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:width",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:rel-width",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:align",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+29: VALUE 'margins',
+27: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-vertical-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-top",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-bottom",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-margin-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:margin",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-page-number-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:page-number",
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+28: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-keep-with-next-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:keep-with-next",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'always',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:may-break-between-rows",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:border-model",
+28: CHOICE
+29: VALUE 'collapsing',
+29: VALUE 'separating',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:display",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+24: REF 'style-table-properties-elements',
+25: REF 'style-background-image',
+26: CHOICE
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-column',
+18: CHOICE
+19: REF 'style-table-column-properties',
+20: ELEMENT "style:table-column-properties",
+21: REF 'style-table-column-properties-content',
+22: REF 'style-table-column-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-column-properties-attlist',
+25: INTERLEAVE
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:column-width",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:rel-column-width",
+29: REF 'relativeLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:use-optimal-column-width",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+24: REF 'style-table-column-properties-elements',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-row',
+18: CHOICE
+19: REF 'style-table-row-properties',
+20: ELEMENT "style:table-row-properties",
+21: REF 'style-table-row-properties-content',
+22: REF 'style-table-row-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-row-properties-attlist',
+25: INTERLEAVE
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:row-height",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:min-row-height",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:use-optimal-row-height",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:keep-together",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'always',
+27: EPSILON
+24: REF 'style-table-row-properties-elements',
+25: REF 'style-background-image',
+26: CHOICE
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-cell',
+18: CHOICE
+19: REF 'style-table-cell-properties',
+20: ELEMENT "style:table-cell-properties",
+21: REF 'style-table-cell-properties-content',
+22: REF 'style-table-cell-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-cell-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "style:vertical-align",
+28: CHOICE
+29: VALUE 'top',
+29: VALUE 'middle',
+29: VALUE 'bottom',
+29: VALUE 'automatic',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-align-source",
+28: CHOICE
+29: VALUE 'fix',
+29: VALUE 'value-type',
+27: EPSILON
+26: REF 'common-style-direction-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:direction",
+29: CHOICE
+30: VALUE 'ltr',
+30: VALUE 'ttb',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:glyph-orientation-vertical",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE '0',
+27: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-border-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:border",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-top",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-bottom",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-left",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-right",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-tl-br",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-tl-br-widths",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-bl-tr",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-bl-tr-widths",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+26: REF 'common-border-line-width-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-top",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-bottom",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-left",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-right",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+26: REF 'common-padding-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:padding",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-top",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-bottom",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-left",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-right",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:wrap-option",
+28: CHOICE
+29: VALUE 'no-wrap',
+29: VALUE 'wrap',
+27: EPSILON
+26: REF 'common-rotation-angle-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:rotation-angle",
+29: REF 'nonNegativeInteger',
+30: DATA 'nonNegativeInteger',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:rotation-align",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'bottom',
+29: VALUE 'top',
+29: VALUE 'center',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:cell-protect",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'hidden-and-protected',
+29: LIST
+30: ONEOREMORE
+31: CHOICE
+32: VALUE 'protected',
+32: VALUE 'formula-hidden',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:print-content",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:decimal-places",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:repeat-content",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:shrink-to-fit",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+24: REF 'style-table-cell-properties-elements',
+25: REF 'style-background-image',
+26: CHOICE
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: CHOICE
+20: VALUE 'graphic',
+20: VALUE 'presentation',
+18: CHOICE
+19: REF 'style-graphic-properties',
+20: ELEMENT "style:graphic-properties",
+21: REF 'style-graphic-properties-content',
+22: REF 'style-graphic-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-graphic-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "draw:stroke",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'dash',
+29: VALUE 'solid',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:stroke-dash",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:stroke-dash-names",
+28: REF 'styleNameRefs',
+29: LIST
+30: CHOICE
+31: ONEOREMORE
+32: DATA 'NCName',
+31: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:stroke-width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:stroke-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-start",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-end",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-start-width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-end-width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-start-center",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-end-center",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:stroke-opacity",
+28: CHOICE
+29: DATA 'double',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:stroke-linejoin",
+28: CHOICE
+29: VALUE 'miter',
+29: VALUE 'round',
+29: VALUE 'bevel',
+29: VALUE 'middle',
+29: VALUE 'none',
+29: VALUE 'inherit',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:symbol-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'scroll',
+29: VALUE 'alternate',
+29: VALUE 'slide',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-direction",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'right',
+29: VALUE 'up',
+29: VALUE 'down',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-start-inside",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-stop-inside",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-repeat",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-delay",
+28: REF 'duration',
+29: DATA 'duration',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-steps",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:auto-grow-width",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:auto-grow-height",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fit-to-size",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fit-to-contour",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:textarea-vertical-align",
+28: CHOICE
+29: VALUE 'top',
+29: VALUE 'middle',
+29: VALUE 'bottom',
+29: VALUE 'justify',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:textarea-horizontal-align",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+29: VALUE 'justify',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:wrap-option",
+28: CHOICE
+29: VALUE 'no-wrap',
+29: VALUE 'wrap',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:color-mode",
+28: CHOICE
+29: VALUE 'greyscale',
+29: VALUE 'mono',
+29: VALUE 'watermark',
+29: VALUE 'standard',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:color-inversion",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:luminance",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:contrast",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:gamma",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:red",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:green",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:blue",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:image-opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:shadow",
+28: CHOICE
+29: VALUE 'visible',
+29: VALUE 'hidden',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:shadow-offset-x",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:shadow-offset-y",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:shadow-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:shadow-opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:start-line-spacing-horizontal",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:start-line-spacing-vertical",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:end-line-spacing-horizontal",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:end-line-spacing-vertical",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:line-distance",
+28: REF 'distance',
+29: REF 'length',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:guide-overhang",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:guide-distance",
+28: REF 'distance',
+29: REF 'length',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:start-guide",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:end-guide",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:placing",
+28: CHOICE
+29: VALUE 'below',
+29: VALUE 'above',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:parallel",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:measure-align",
+29: CHOICE
+30: VALUE 'automatic',
+30: VALUE 'left-outside',
+30: VALUE 'inside',
+30: VALUE 'right-outside',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:measure-vertical-align",
+29: CHOICE
+30: VALUE 'automatic',
+30: VALUE 'above',
+30: VALUE 'below',
+30: VALUE 'center',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:unit",
+28: CHOICE
+29: VALUE 'automatic',
+29: VALUE 'mm',
+29: VALUE 'cm',
+29: VALUE 'm',
+29: VALUE 'km',
+29: VALUE 'pt',
+29: VALUE 'pc',
+29: VALUE 'inch',
+29: VALUE 'ft',
+29: VALUE 'mi',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:show-unit",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:decimal-places",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-type",
+28: CHOICE
+29: VALUE 'straight-line',
+29: VALUE 'angled-line',
+29: VALUE 'angled-connector-line',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-angle-type",
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'free',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-angle",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-gap",
+28: REF 'distance',
+29: REF 'length',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-escape-direction",
+28: CHOICE
+29: VALUE 'horizontal',
+29: VALUE 'vertical',
+29: VALUE 'auto',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-escape",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-line-length",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-fit-line-length",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:horizontal-segments",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:vertical-segments",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:edge-rounding",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:edge-rounding-mode",
+28: CHOICE
+29: VALUE 'correct',
+29: VALUE 'attractive',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:back-scale",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:depth",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:backface-culling",
+28: CHOICE
+29: VALUE 'enabled',
+29: VALUE 'disabled',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:end-angle",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:close-front",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:close-back",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:lighting-mode",
+28: CHOICE
+29: VALUE 'standard',
+29: VALUE 'double-sided',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:normals-kind",
+28: CHOICE
+29: VALUE 'object',
+29: VALUE 'flat',
+29: VALUE 'sphere',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:normals-direction",
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'inverse',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "dr3d:texture-generation-mode-x",
+29: CHOICE
+30: VALUE 'object',
+30: VALUE 'parallel',
+30: VALUE 'sphere',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:texture-generation-mode-y",
+29: CHOICE
+30: VALUE 'object',
+30: VALUE 'parallel',
+30: VALUE 'sphere',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:texture-kind",
+28: CHOICE
+29: VALUE 'luminance',
+29: VALUE 'intesity',
+29: VALUE 'color',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:texture-filter",
+28: CHOICE
+29: VALUE 'enabled',
+29: VALUE 'disabled',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:texture-mode",
+28: CHOICE
+29: VALUE 'replace',
+29: VALUE 'modulate',
+29: VALUE 'blend',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "dr3d:ambient-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:emissive-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:specular-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:diffuse-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:shininess",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:shadow",
+28: CHOICE
+29: VALUE 'visible',
+29: VALUE 'hidden',
+27: EPSILON
+26: SEQUENCE
+27: REF 'common-draw-rel-size-attlist',
+28: SEQUENCE
+29: REF 'common-draw-size-attlist',
+30: SEQUENCE
+31: CHOICE
+32: ATTRIBUTE "svg:width",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "svg:height",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+29: CHOICE
+30: ATTRIBUTE "style:rel-width",
+31: CHOICE
+32: REF 'percent',
+33: DATA 'string',
+32: VALUE 'scale',
+32: VALUE 'scale-min',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "style:rel-height",
+31: CHOICE
+32: REF 'percent',
+33: DATA 'string',
+32: VALUE 'scale',
+32: VALUE 'scale-min',
+30: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:min-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:min-height",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:max-height",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:max-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-vertical-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-top",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-bottom",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-margin-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:margin",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:print-content",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:protect",
+28: CHOICE
+29: VALUE 'none',
+29: LIST
+30: ONEOREMORE
+31: CHOICE
+32: VALUE 'content',
+32: VALUE 'position',
+32: VALUE 'size',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:horizontal-pos",
+29: CHOICE
+30: VALUE 'left',
+30: VALUE 'center',
+30: VALUE 'right',
+30: VALUE 'from-left',
+30: VALUE 'inside',
+30: VALUE 'outside',
+30: VALUE 'from-inside',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "svg:x",
+29: REF 'coordinate',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:horizontal-rel",
+28: CHOICE
+29: VALUE 'page',
+29: VALUE 'page-content',
+29: VALUE 'page-start-margin',
+29: VALUE 'page-end-margin',
+29: VALUE 'frame',
+29: VALUE 'frame-content',
+29: VALUE 'frame-start-margin',
+29: VALUE 'frame-end-margin',
+29: VALUE 'paragraph',
+29: VALUE 'paragraph-content',
+29: VALUE 'paragraph-start-margin',
+29: VALUE 'paragraph-end-margin',
+29: VALUE 'char',
+27: EPSILON
+26: REF 'common-vertical-pos-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:vertical-pos",
+30: CHOICE
+31: VALUE 'top',
+31: VALUE 'middle',
+31: VALUE 'bottom',
+31: VALUE 'from-top',
+31: VALUE 'below',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "svg:y",
+30: REF 'coordinate',
+31: REF 'length',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-vertical-rel-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:vertical-rel",
+29: CHOICE
+30: VALUE 'page',
+30: VALUE 'page-content',
+30: VALUE 'frame',
+30: VALUE 'frame-content',
+30: VALUE 'paragraph',
+30: VALUE 'paragraph-content',
+30: VALUE 'char',
+30: VALUE 'line',
+30: VALUE 'baseline',
+30: VALUE 'text',
+28: EPSILON
+26: REF 'common-text-anchor-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "text:anchor-type",
+30: CHOICE
+31: VALUE 'page',
+31: VALUE 'frame',
+31: VALUE 'paragraph',
+31: VALUE 'char',
+31: VALUE 'as-char',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "text:anchor-page-number",
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+29: EPSILON
+26: REF 'common-border-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:border",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-top",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-bottom",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-left",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-right",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-border-line-width-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-top",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-bottom",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-left",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-right",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+26: REF 'common-padding-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:padding",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-top",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-bottom",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-left",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-right",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:editable",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'left',
+29: VALUE 'right',
+29: VALUE 'parallel',
+29: VALUE 'dynamic',
+29: VALUE 'run-through',
+29: VALUE 'biggest',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap-dynamic-treshold",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:number-wrapped-paragraphs",
+28: CHOICE
+29: VALUE 'no-limit',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap-contour",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap-contour-mode",
+28: CHOICE
+29: VALUE 'full',
+29: VALUE 'outside',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:run-through",
+28: CHOICE
+29: VALUE 'foreground',
+29: VALUE 'background',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:flow-with-text",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:overflow-behavior",
+28: CHOICE
+29: VALUE 'clip',
+29: VALUE 'auto-create-new-frame',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:mirror",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'vertical',
+29: REF 'horizontal-mirror',
+30: CHOICE
+31: VALUE 'horizontal',
+31: VALUE 'horizontal-on-odd',
+31: VALUE 'horizontal-on-even',
+29: LIST
+30: SEQUENCE
+31: VALUE 'vertical',
+31: REF 'horizontal-mirror',
+32: CHOICE
+33: VALUE 'horizontal',
+33: VALUE 'horizontal-on-odd',
+33: VALUE 'horizontal-on-even',
+29: LIST
+30: SEQUENCE
+31: REF 'horizontal-mirror',
+32: CHOICE
+33: VALUE 'horizontal',
+33: VALUE 'horizontal-on-odd',
+33: VALUE 'horizontal-on-even',
+31: VALUE 'vertical',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:clip",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:wrap-influence-on-position",
+28: CHOICE
+29: VALUE 'iterative',
+29: VALUE 'once-concurrent',
+29: VALUE 'once-successive',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:frame-display-scrollbar",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:frame-display-border",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:frame-margin-horizontal",
+29: REF 'nonNegativePixelLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:frame-margin-vertical",
+29: REF 'nonNegativePixelLength',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-left",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-top",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-width",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-height",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:ole-draw-aspect",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+24: REF 'style-graphic-fill-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "draw:fill",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'bitmap',
+29: VALUE 'gradient',
+29: VALUE 'hatch',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:secondary-fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-gradient-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:gradient-step-count",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-solid",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-image-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:repeat",
+28: CHOICE
+29: VALUE 'no-repeat',
+29: VALUE 'repeat',
+29: VALUE 'stretch',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-height",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-x",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-y",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point",
+29: CHOICE
+30: VALUE 'top-left',
+30: VALUE 'top',
+30: VALUE 'top-right',
+30: VALUE 'left',
+30: VALUE 'center',
+30: VALUE 'right',
+30: VALUE 'bottom-left',
+30: VALUE 'bottom',
+30: VALUE 'bottom-right',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:tile-repeat-offset",
+28: STRING
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:fill-rule",
+28: CHOICE
+29: VALUE 'nonzero',
+29: VALUE 'evenodd',
+27: EPSILON
+24: REF 'style-graphic-properties-elements',
+25: INTERLEAVE
+26: CHOICE
+27: REF 'text-list-style',
+28: ELEMENT "text:list-style",
+29: SEQUENCE
+30: REF 'text-list-style-attr',
+31: INTERLEAVE
+32: ATTRIBUTE "style:name",
+33: REF 'styleName',
+34: DATA 'NCName',
+32: CHOICE
+33: ATTRIBUTE "style:display-name",
+34: REF 'string',
+35: DATA 'string',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:consecutive-numbering",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+30: CHOICE
+31: ONEOREMORE
+32: REF 'text-list-style-content',
+33: CHOICE
+34: ELEMENT "text:list-level-style-number",
+35: SEQUENCE
+36: REF 'text-list-level-style-attr',
+37: ATTRIBUTE "text:level",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+36: REF 'text-list-level-style-number-attr',
+37: INTERLEAVE
+38: CHOICE
+39: ATTRIBUTE "text:style-name",
+40: REF 'styleNameRef',
+41: CHOICE
+42: DATA 'NCName',
+42: EPSILON
+39: EPSILON
+38: SEQUENCE
+39: REF 'common-num-format-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:num-format",
+42: CHOICE
+43: VALUE '1',
+43: VALUE 'i',
+43: VALUE 'I',
+43: REF 'string',
+44: DATA 'string',
+43: EPSILON
+41: SEQUENCE
+42: ATTRIBUTE "style:num-format",
+43: CHOICE
+44: VALUE 'a',
+44: VALUE 'A',
+42: REF 'style-num-letter-sync-attlist',
+43: CHOICE
+44: ATTRIBUTE "style:num-letter-sync",
+45: REF 'boolean',
+46: CHOICE
+47: VALUE 'true',
+47: VALUE 'false',
+44: EPSILON
+41: EPSILON
+39: REF 'common-num-format-prefix-suffix-attlist',
+40: SEQUENCE
+41: CHOICE
+42: ATTRIBUTE "style:num-prefix",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+41: CHOICE
+42: ATTRIBUTE "style:num-suffix",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:display-levels",
+40: REF 'positiveInteger',
+41: DATA 'positiveInteger',
+39: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:start-value",
+40: REF 'positiveInteger',
+41: DATA 'positiveInteger',
+39: EPSILON
+36: CHOICE
+37: REF 'style-list-level-properties',
+38: ELEMENT "style:list-level-properties",
+39: REF 'style-list-level-properties-content',
+40: REF 'style-list-level-properties-content-strict',
+41: SEQUENCE
+42: REF 'style-list-level-properties-attlist',
+43: INTERLEAVE
+44: REF 'common-text-align',
+45: CHOICE
+46: ATTRIBUTE "fo:text-align",
+47: CHOICE
+48: VALUE 'start',
+48: VALUE 'end',
+48: VALUE 'left',
+48: VALUE 'right',
+48: VALUE 'center',
+48: VALUE 'justify',
+46: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:space-before",
+46: REF 'nonNegativeLength',
+47: DATA 'string',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:min-label-width",
+46: REF 'nonNegativeLength',
+47: DATA 'string',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:min-label-distance",
+46: REF 'nonNegativeLength',
+47: DATA 'string',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "style:font-name",
+46: REF 'string',
+47: DATA 'string',
+45: EPSILON
+44: SEQUENCE
+45: CHOICE
+46: ATTRIBUTE "fo:width",
+47: REF 'positiveLength',
+48: DATA 'string',
+46: EPSILON
+45: CHOICE
+46: ATTRIBUTE "fo:height",
+47: REF 'positiveLength',
+48: DATA 'string',
+46: EPSILON
+44: SEQUENCE
+45: REF 'common-vertical-rel-attlist',
+46: CHOICE
+47: ATTRIBUTE "style:vertical-rel",
+48: CHOICE
+49: VALUE 'page',
+49: VALUE 'page-content',
+49: VALUE 'frame',
+49: VALUE 'frame-content',
+49: VALUE 'paragraph',
+49: VALUE 'paragraph-content',
+49: VALUE 'char',
+49: VALUE 'line',
+49: VALUE 'baseline',
+49: VALUE 'text',
+47: EPSILON
+45: REF 'common-vertical-pos-attlist',
+46: SEQUENCE
+47: CHOICE
+48: ATTRIBUTE "style:vertical-pos",
+49: CHOICE
+50: VALUE 'top',
+50: VALUE 'middle',
+50: VALUE 'bottom',
+50: VALUE 'from-top',
+50: VALUE 'below',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "svg:y",
+49: REF 'coordinate',
+50: REF 'length',
+51: DATA 'string',
+48: EPSILON
+42: REF 'style-list-level-properties-elements',
+43: EPSILON
+37: EPSILON
+36: CHOICE
+37: REF 'style-text-properties',
+37: EPSILON
+34: ELEMENT "text:list-level-style-bullet",
+35: SEQUENCE
+36: REF 'text-list-level-style-attr',
+37: ATTRIBUTE "text:level",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+36: REF 'text-list-level-style-bullet-attr',
+37: INTERLEAVE
+38: CHOICE
+39: ATTRIBUTE "text:style-name",
+40: REF 'styleNameRef',
+41: CHOICE
+42: DATA 'NCName',
+42: EPSILON
+39: EPSILON
+38: ATTRIBUTE "text:bullet-char",
+39: REF 'character',
+40: DATA 'string',
+38: REF 'common-num-format-prefix-suffix-attlist',
+39: SEQUENCE
+40: CHOICE
+41: ATTRIBUTE "style:num-prefix",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "style:num-suffix",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:bullet-relative-size",
+40: REF 'percent',
+41: DATA 'string',
+39: EPSILON
+36: CHOICE
+37: REF 'style-list-level-properties',
+37: EPSILON
+36: CHOICE
+37: REF 'style-text-properties',
+37: EPSILON
+34: ELEMENT "text:list-level-style-image",
+35: SEQUENCE
+36: REF 'text-list-level-style-attr',
+37: ATTRIBUTE "text:level",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+36: REF 'text-list-level-style-image-attr',
+37: CHOICE
+38: REF 'common-draw-data-attlist',
+39: SEQUENCE
+40: ATTRIBUTE "xlink:href",
+41: REF 'anyURI',
+42: DATA 'anyURI',
+40: CHOICE
+41: ATTRIBUTE "xlink:type",
+42: VALUE 'simple',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "xlink:show",
+42: VALUE 'embed',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "xlink:actuate",
+42: VALUE 'onLoad',
+41: EPSILON
+38: REF 'office-binary-data',
+36: CHOICE
+37: REF 'style-list-level-properties',
+37: EPSILON
+31: EPSILON
+27: EPSILON
+26: REF 'style-background-image',
+27: CHOICE
+26: REF 'style-columns',
+27: CHOICE
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'drawing-page',
+18: CHOICE
+19: REF 'style-drawing-page-properties',
+20: ELEMENT "style:drawing-page-properties",
+21: REF 'style-drawing-page-properties-content',
+22: REF 'style-drawing-page-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-graphic-fill-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "draw:fill",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'bitmap',
+29: VALUE 'gradient',
+29: VALUE 'hatch',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:secondary-fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-gradient-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:gradient-step-count",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-solid",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-image-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:repeat",
+28: CHOICE
+29: VALUE 'no-repeat',
+29: VALUE 'repeat',
+29: VALUE 'stretch',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-height",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-x",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-y",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point",
+29: CHOICE
+30: VALUE 'top-left',
+30: VALUE 'top',
+30: VALUE 'top-right',
+30: VALUE 'left',
+30: VALUE 'center',
+30: VALUE 'right',
+30: VALUE 'bottom-left',
+30: VALUE 'bottom',
+30: VALUE 'bottom-right',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:tile-repeat-offset",
+28: STRING
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:fill-rule",
+28: CHOICE
+29: VALUE 'nonzero',
+29: VALUE 'evenodd',
+27: EPSILON
+24: REF 'style-drawing-page-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "presentation:transition-type",
+28: CHOICE
+29: VALUE 'manual',
+29: VALUE 'automatic',
+29: VALUE 'semi-automatic',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:transition-style",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'fade-from-left',
+29: VALUE 'fade-from-top',
+29: VALUE 'fade-from-right',
+29: VALUE 'fade-from-bottom',
+29: VALUE 'fade-from-upperleft',
+29: VALUE 'fade-from-upperright',
+29: VALUE 'fade-from-lowerleft',
+29: VALUE 'fade-from-lowerright',
+29: VALUE 'move-from-left',
+29: VALUE 'move-from-top',
+29: VALUE 'move-from-right',
+29: VALUE 'move-from-bottom',
+29: VALUE 'move-from-upperleft',
+29: VALUE 'move-from-upperright',
+29: VALUE 'move-from-lowerleft',
+29: VALUE 'move-from-lowerright',
+29: VALUE 'uncover-to-left',
+29: VALUE 'uncover-to-top',
+29: VALUE 'uncover-to-right',
+29: VALUE 'uncover-to-bottom',
+29: VALUE 'uncover-to-upperleft',
+29: VALUE 'uncover-to-upperright',
+29: VALUE 'uncover-to-lowerleft',
+29: VALUE 'uncover-to-lowerright',
+29: VALUE 'fade-to-center',
+29: VALUE 'fade-from-center',
+29: VALUE 'vertical-stripes',
+29: VALUE 'horizontal-stripes',
+29: VALUE 'clockwise',
+29: VALUE 'counterclockwise',
+29: VALUE 'open-vertical',
+29: VALUE 'open-horizontal',
+29: VALUE 'close-vertical',
+29: VALUE 'close-horizontal',
+29: VALUE 'wavyline-from-left',
+29: VALUE 'wavyline-from-top',
+29: VALUE 'wavyline-from-right',
+29: VALUE 'wavyline-from-bottom',
+29: VALUE 'spiralin-left',
+29: VALUE 'spiralin-right',
+29: VALUE 'spiralout-left',
+29: VALUE 'spiralout-right',
+29: VALUE 'roll-from-top',
+29: VALUE 'roll-from-left',
+29: VALUE 'roll-from-right',
+29: VALUE 'roll-from-bottom',
+29: VALUE 'stretch-from-left',
+29: VALUE 'stretch-from-top',
+29: VALUE 'stretch-from-right',
+29: VALUE 'stretch-from-bottom',
+29: VALUE 'vertical-lines',
+29: VALUE 'horizontal-lines',
+29: VALUE 'dissolve',
+29: VALUE 'random',
+29: VALUE 'vertical-checkerboard',
+29: VALUE 'horizontal-checkerboard',
+29: VALUE 'interlocking-horizontal-left',
+29: VALUE 'interlocking-horizontal-right',
+29: VALUE 'interlocking-vertical-top',
+29: VALUE 'interlocking-vertical-bottom',
+29: VALUE 'fly-away',
+29: VALUE 'open',
+29: VALUE 'close',
+29: VALUE 'melt',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:transition-speed",
+28: REF 'presentationSpeeds',
+29: CHOICE
+30: VALUE 'slow',
+30: VALUE 'medium',
+30: VALUE 'fast',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:type",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:subtype",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:direction",
+28: CHOICE
+29: VALUE 'forward',
+29: VALUE 'reverse',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:fadeColor",
+28: CHOICE
+29: VALUE 'forward',
+29: VALUE 'reverse',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:duration",
+28: REF 'duration',
+29: DATA 'duration',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:visibility",
+28: CHOICE
+29: VALUE 'visible',
+29: VALUE 'hidden',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:background-size",
+28: CHOICE
+29: VALUE 'full',
+29: VALUE 'border',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:background-objects-visible",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:background-visible",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-header",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-footer",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-page-number",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-date-time",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+24: REF 'style-drawing-page-properties-elements',
+25: CHOICE
+26: REF 'presentation-sound',
+26: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'chart',
+18: CHOICE
+19: REF 'style-chart-properties',
+20: ELEMENT "style:chart-properties",
+21: REF 'style-chart-properties-content',
+22: REF 'style-properties-content',
+23: REF 'anyAttListOrElements',
+24: SEQUENCE
+25: CHOICE
+26: ONEOREMORE
+27: ATTRIBUTE "*",
+28: STRING
+26: EPSILON
+25: REF 'anyElements',
+26: CHOICE
+27: ONEOREMORE
+27: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'style-graphic-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+18: ELEMENT "style:map",
+19: REF 'style-map-attlist',
+20: INTERLEAVE
+21: ATTRIBUTE "style:condition",
+22: REF 'string',
+23: DATA 'string',
+21: ATTRIBUTE "style:apply-style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:base-cell-address",
+23: REF 'cellAddress',
+24: DATA 'string',
+22: EPSILON
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'text-list-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-number-style',
+13: ELEMENT "number:number-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+17: ELEMENT "number:text",
+18: STRING
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'any-number',
+18: CHOICE
+19: REF 'number-number',
+20: ELEMENT "number:number",
+21: SEQUENCE
+22: REF 'number-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:decimal-replacement",
+26: STRING
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:display-factor",
+26: REF 'double',
+27: DATA 'double',
+25: EPSILON
+22: REF 'common-decimal-places-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'number-embedded-text',
+25: ELEMENT "number:embedded-text",
+26: SEQUENCE
+27: REF 'number-embedded-text-attlist',
+28: ATTRIBUTE "number:position",
+29: REF 'integer',
+30: DATA 'integer',
+27: STRING
+23: EPSILON
+19: REF 'number-scientific-number',
+20: ELEMENT "number:scientific-number",
+21: SEQUENCE
+22: REF 'number-scientific-number-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:min-exponent-digits",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-decimal-places-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+19: REF 'number-fraction',
+20: ELEMENT "number:fraction",
+21: SEQUENCE
+22: REF 'number-fraction-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-numerator-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:min-denominator-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:denominator-value",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-currency-style',
+13: ELEMENT "number:currency-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-auto-reorder-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:automatic-order",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'number-and-text',
+18: SEQUENCE
+19: REF 'number-number',
+19: CHOICE
+20: REF 'number-text',
+20: EPSILON
+17: CHOICE
+18: REF 'currency-symbol-and-text',
+19: SEQUENCE
+20: REF 'number-currency-symbol',
+21: ELEMENT "number:currency-symbol",
+22: SEQUENCE
+23: REF 'number-currency-symbol-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "number:language",
+27: REF 'languageCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "number:country",
+27: REF 'countryCode',
+28: DATA 'token',
+26: EPSILON
+23: STRING
+20: CHOICE
+21: REF 'number-text',
+21: EPSILON
+18: EPSILON
+16: SEQUENCE
+17: REF 'currency-symbol-and-text',
+18: SEQUENCE
+19: REF 'number-currency-symbol',
+19: CHOICE
+20: REF 'number-text',
+20: EPSILON
+17: CHOICE
+18: REF 'number-and-text',
+19: SEQUENCE
+20: REF 'number-number',
+20: CHOICE
+21: REF 'number-text',
+21: EPSILON
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-percentage-style',
+13: ELEMENT "number:percentage-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: REF 'number-and-text',
+17: SEQUENCE
+18: REF 'number-number',
+18: CHOICE
+19: REF 'number-text',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-date-style',
+13: ELEMENT "number:date-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-auto-reorder-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:automatic-order",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: REF 'common-format-source-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:format-source",
+18: CHOICE
+19: VALUE 'fixed',
+19: VALUE 'language',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: ONEOREMORE
+16: SEQUENCE
+17: REF 'any-date',
+18: CHOICE
+19: REF 'number-day',
+20: ELEMENT "number:day",
+21: SEQUENCE
+22: REF 'number-day-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-month',
+20: ELEMENT "number:month",
+21: SEQUENCE
+22: REF 'number-month-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:textual",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:possessive-form",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:style",
+26: CHOICE
+27: VALUE 'short',
+27: VALUE 'long',
+25: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-year',
+20: ELEMENT "number:year",
+21: SEQUENCE
+22: REF 'number-year-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-era',
+20: ELEMENT "number:era",
+21: SEQUENCE
+22: REF 'number-era-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-day-of-week',
+20: ELEMENT "number:day-of-week",
+21: SEQUENCE
+22: REF 'number-day-of-week-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-week-of-year',
+20: ELEMENT "number:week-of-year",
+21: REF 'common-calendar-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:calendar",
+24: CHOICE
+25: VALUE 'gregorian',
+25: VALUE 'gengou',
+25: VALUE 'ROC',
+25: VALUE 'hanja_yoil',
+25: VALUE 'hanja',
+25: VALUE 'hijri',
+25: VALUE 'jewish',
+25: VALUE 'buddhist',
+25: REF 'string',
+26: DATA 'string',
+23: EPSILON
+19: REF 'number-quarter',
+20: ELEMENT "number:quarter",
+21: SEQUENCE
+22: REF 'number-quarter-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-hours',
+20: ELEMENT "number:hours",
+21: REF 'number-hours-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:style",
+24: CHOICE
+25: VALUE 'short',
+25: VALUE 'long',
+23: EPSILON
+19: REF 'number-am-pm',
+20: ELEMENT "number:am-pm",
+21: EPSILON
+19: REF 'number-minutes',
+20: ELEMENT "number:minutes",
+21: REF 'number-minutes-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:style",
+24: CHOICE
+25: VALUE 'short',
+25: VALUE 'long',
+23: EPSILON
+19: REF 'number-seconds',
+20: ELEMENT "number:seconds",
+21: REF 'number-seconds-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-time-style',
+13: ELEMENT "number:time-style",
+14: SEQUENCE
+15: REF 'number-time-style-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:truncate-on-overflow",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-format-source-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:format-source",
+18: CHOICE
+19: VALUE 'fixed',
+19: VALUE 'language',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: ONEOREMORE
+16: SEQUENCE
+17: REF 'any-time',
+18: CHOICE
+19: REF 'number-hours',
+19: REF 'number-am-pm',
+19: REF 'number-minutes',
+19: REF 'number-seconds',
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-boolean-style',
+13: ELEMENT "number:boolean-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'number-boolean',
+18: ELEMENT "number:boolean",
+19: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-text-style',
+13: ELEMENT "number:text-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: SEQUENCE
+18: REF 'number-text-content',
+19: ELEMENT "number:text-content",
+20: EPSILON
+18: CHOICE
+19: REF 'number-text',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-default-style',
+11: ELEMENT "style:default-style",
+12: REF 'style-style-content',
+13: CHOICE
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'text',
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'paragraph',
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'section',
+15: CHOICE
+16: REF 'style-section-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'ruby',
+15: CHOICE
+16: REF 'style-ruby-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table',
+15: CHOICE
+16: REF 'style-table-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-column',
+15: CHOICE
+16: REF 'style-table-column-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-row',
+15: CHOICE
+16: REF 'style-table-row-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-cell',
+15: CHOICE
+16: REF 'style-table-cell-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: CHOICE
+17: VALUE 'graphic',
+17: VALUE 'presentation',
+15: CHOICE
+16: REF 'style-graphic-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'drawing-page',
+15: CHOICE
+16: REF 'style-drawing-page-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'chart',
+15: CHOICE
+16: REF 'style-chart-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-graphic-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'text-outline-style',
+10: ELEMENT "text:outline-style",
+11: ONEOREMORE
+12: REF 'text-outline-level-style',
+13: ELEMENT "text:outline-level-style",
+14: SEQUENCE
+15: REF 'text-outline-level-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "text:level",
+18: REF 'positiveInteger',
+19: DATA 'positiveInteger',
+17: CHOICE
+18: ATTRIBUTE "text:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: SEQUENCE
+18: REF 'common-num-format-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:num-format",
+21: CHOICE
+22: VALUE '1',
+22: VALUE 'i',
+22: VALUE 'I',
+22: REF 'string',
+23: DATA 'string',
+22: EPSILON
+20: SEQUENCE
+21: ATTRIBUTE "style:num-format",
+22: CHOICE
+23: VALUE 'a',
+23: VALUE 'A',
+21: REF 'style-num-letter-sync-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:num-letter-sync",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+20: EPSILON
+18: REF 'common-num-format-prefix-suffix-attlist',
+19: SEQUENCE
+20: CHOICE
+21: ATTRIBUTE "style:num-prefix",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:num-suffix",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+17: CHOICE
+18: ATTRIBUTE "text:display-levels",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "text:start-value",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: EPSILON
+15: CHOICE
+16: REF 'style-list-level-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'text-notes-configuration',
+9: EPSILON
+8: CHOICE
+9: REF 'text-bibliography-configuration',
+10: ELEMENT "text:bibliography-configuration",
+11: SEQUENCE
+12: REF 'text-bibliography-configuration-attlist',
+13: INTERLEAVE
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "text:prefix",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "text:suffix",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:numbered-entries",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "text:sort-by-position",
+17: REF 'boolean',
+18: CHOICE
+19: VALUE 'true',
+19: VALUE 'false',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "fo:language",
+17: REF 'languageCode',
+18: DATA 'token',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "fo:country",
+17: REF 'countryCode',
+18: DATA 'token',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "text:sort-algorithm",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+12: CHOICE
+13: ONEOREMORE
+14: REF 'text-sort-key',
+15: ELEMENT "text:sort-key",
+16: REF 'text-sort-key-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "text:key",
+19: CHOICE
+20: VALUE 'address',
+20: VALUE 'annote',
+20: VALUE 'author',
+20: VALUE 'bibliography-type',
+20: VALUE 'booktitle',
+20: VALUE 'chapter',
+20: VALUE 'custom1',
+20: VALUE 'custom2',
+20: VALUE 'custom3',
+20: VALUE 'custom4',
+20: VALUE 'custom5',
+20: VALUE 'edition',
+20: VALUE 'editor',
+20: VALUE 'howpublished',
+20: VALUE 'identifier',
+20: VALUE 'institution',
+20: VALUE 'isbn',
+20: VALUE 'issn',
+20: VALUE 'journal',
+20: VALUE 'month',
+20: VALUE 'note',
+20: VALUE 'number',
+20: VALUE 'organizations',
+20: VALUE 'pages',
+20: VALUE 'publisher',
+20: VALUE 'report-type',
+20: VALUE 'school',
+20: VALUE 'series',
+20: VALUE 'title',
+20: VALUE 'url',
+20: VALUE 'volume',
+20: VALUE 'year',
+18: CHOICE
+19: ATTRIBUTE "text:sort-ascending",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'text-linenumbering-configuration',
+10: ELEMENT "text:linenumbering-configuration",
+11: SEQUENCE
+12: REF 'text-linenumbering-configuration-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "text:number-lines",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: REF 'common-num-format-attlist',
+16: CHOICE
+17: ATTRIBUTE "style:num-format",
+18: CHOICE
+19: VALUE '1',
+19: VALUE 'i',
+19: VALUE 'I',
+19: REF 'string',
+20: DATA 'string',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:num-format",
+19: CHOICE
+20: VALUE 'a',
+20: VALUE 'A',
+18: REF 'style-num-letter-sync-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:num-letter-sync",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+17: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:style-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:increment",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:number-position",
+16: CHOICE
+17: VALUE 'left',
+17: VALUE 'rigth',
+17: VALUE 'inner',
+17: VALUE 'outer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:offset",
+16: REF 'nonNegativeLength',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:count-empty-lines",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:count-in-text-boxes",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:restart-on-page",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+12: CHOICE
+13: REF 'text-linenumbering-separator',
+14: ELEMENT "text:linenumbering-separator",
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "text:increment",
+18: REF 'nonNegativeInteger',
+19: DATA 'nonNegativeInteger',
+17: EPSILON
+16: STRING
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-gradient',
+11: ELEMENT "draw:gradient",
+12: SEQUENCE
+13: REF 'common-draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:name",
+17: REF 'styleName',
+18: DATA 'NCName',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "draw:style",
+16: REF 'gradient-style',
+17: CHOICE
+18: VALUE 'linear',
+18: VALUE 'axial',
+18: VALUE 'radial',
+18: VALUE 'ellipsoid',
+18: VALUE 'square',
+18: VALUE 'rectangular',
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:cx",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:cy",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:angle",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:border",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+13: REF 'draw-gradient-attlist',
+14: INTERLEAVE
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:start-color",
+18: REF 'color',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:end-color",
+18: REF 'color',
+19: DATA 'string',
+17: EPSILON
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:start-intensity",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:end-intensity",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'svg-linearGradient',
+11: ELEMENT "svg:linearGradient",
+12: SEQUENCE
+13: REF 'common-svg-gradient-attlist',
+14: INTERLEAVE
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "svg:gradientUnits",
+18: VALUE 'objectBoundingBox',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:gradientTransform",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:spreadMethod",
+18: CHOICE
+19: VALUE 'pad',
+19: VALUE 'reflect',
+19: VALUE 'repeat',
+17: EPSILON
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:x1",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:y1",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:x2",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:y2",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'svg-stop',
+16: ELEMENT "svg:stop",
+17: SEQUENCE
+18: ATTRIBUTE "svg:offset",
+19: CHOICE
+20: REF 'double',
+21: DATA 'double',
+20: REF 'percent',
+21: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "svg:stop-color",
+20: REF 'color',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "svg:stop-opacity",
+20: REF 'double',
+21: DATA 'double',
+19: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'svg-radialGradient',
+11: ELEMENT "svg:radialGradient",
+12: SEQUENCE
+13: REF 'common-svg-gradient-attlist',
+14: INTERLEAVE
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "svg:gradientUnits",
+18: VALUE 'objectBoundingBox',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:gradientTransform",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:spreadMethod",
+18: CHOICE
+19: VALUE 'pad',
+19: VALUE 'reflect',
+19: VALUE 'repeat',
+17: EPSILON
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:cx",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:cy",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:r",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:fx",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:fy",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'svg-stop',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-hatch',
+11: ELEMENT "draw:hatch",
+12: REF 'draw-hatch-attlist',
+13: INTERLEAVE
+14: ATTRIBUTE "draw:name",
+15: REF 'styleName',
+16: DATA 'NCName',
+14: CHOICE
+15: ATTRIBUTE "draw:display-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: ATTRIBUTE "draw:style",
+15: CHOICE
+16: VALUE 'single',
+16: VALUE 'double',
+16: VALUE 'triple',
+14: CHOICE
+15: ATTRIBUTE "draw:color",
+16: REF 'color',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:distance",
+16: REF 'length',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:rotation",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-fill-image',
+11: ELEMENT "draw:fill-image",
+12: SEQUENCE
+13: REF 'draw-fill-image-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "svg:width",
+18: REF 'length',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:height",
+18: REF 'length',
+19: DATA 'string',
+17: EPSILON
+13: ATTRIBUTE "xlink:href",
+14: REF 'anyURI',
+15: DATA 'anyURI',
+13: CHOICE
+14: ATTRIBUTE "xlink:type",
+15: VALUE 'simple',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "xlink:show",
+15: VALUE 'embed',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "xlink:actuate",
+15: VALUE 'onLoad',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-marker',
+11: ELEMENT "draw:marker",
+12: SEQUENCE
+13: REF 'draw-marker-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: REF 'common-draw-viewbox-attlist',
+14: ATTRIBUTE "svg:viewBox",
+15: LIST
+16: SEQUENCE
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+13: REF 'common-draw-path-data-attlist',
+14: ATTRIBUTE "svg:d",
+15: REF 'pathData',
+16: DATA 'string',
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-stroke-dash',
+11: ELEMENT "draw:stroke-dash",
+12: REF 'draw-stroke-dash-attlist',
+13: INTERLEAVE
+14: ATTRIBUTE "draw:name",
+15: REF 'styleName',
+16: DATA 'NCName',
+14: CHOICE
+15: ATTRIBUTE "draw:display-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:style",
+16: CHOICE
+17: VALUE 'rect',
+17: VALUE 'round',
+15: EPSILON
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "draw:dots1",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:dots1-length",
+17: REF 'length',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:dots2",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:dots2-length",
+17: REF 'length',
+18: DATA 'string',
+16: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:distance",
+16: REF 'length',
+17: DATA 'string',
+15: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-opacity',
+11: ELEMENT "draw:opacity",
+12: SEQUENCE
+13: REF 'common-draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:name",
+17: REF 'styleName',
+18: DATA 'NCName',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "draw:style",
+16: REF 'gradient-style',
+17: CHOICE
+18: VALUE 'linear',
+18: VALUE 'axial',
+18: VALUE 'radial',
+18: VALUE 'ellipsoid',
+18: VALUE 'square',
+18: VALUE 'rectangular',
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:cx",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:cy",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:angle",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:border",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+13: REF 'draw-opacity-attlist',
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "draw:start",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:end",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-presentation-page-layout',
+11: ELEMENT "style:presentation-page-layout",
+12: SEQUENCE
+13: ATTRIBUTE "style:name",
+14: REF 'styleName',
+15: DATA 'NCName',
+13: CHOICE
+14: ATTRIBUTE "style:display-name",
+15: REF 'string',
+16: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'presentation-placeholder',
+16: ELEMENT "presentation:placeholder",
+17: SEQUENCE
+18: ATTRIBUTE "presentation:object",
+19: REF 'presentation-classes',
+20: CHOICE
+21: VALUE 'title',
+21: VALUE 'outline',
+21: VALUE 'subtitle',
+21: VALUE 'text',
+21: VALUE 'graphic',
+21: VALUE 'object',
+21: VALUE 'chart',
+21: VALUE 'table',
+21: VALUE 'orgchart',
+21: VALUE 'page',
+21: VALUE 'notes',
+21: VALUE 'handout',
+21: VALUE 'header',
+21: VALUE 'footer',
+21: VALUE 'date-time',
+21: VALUE 'page-number',
+18: ATTRIBUTE "svg:x",
+19: CHOICE
+20: REF 'coordinate',
+21: REF 'length',
+22: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:y",
+19: CHOICE
+20: REF 'coordinate',
+21: REF 'length',
+22: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:width",
+19: CHOICE
+20: REF 'length',
+21: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:height",
+19: CHOICE
+20: REF 'length',
+21: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+14: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-automatic-styles',
+5: CHOICE
+6: ELEMENT "office:automatic-styles",
+7: INTERLEAVE
+8: REF 'styles',
+9: INTERLEAVE
+10: CHOICE
+11: ONEOREMORE
+12: REF 'style-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'text-list-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-number-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-currency-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-percentage-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-date-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-time-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-boolean-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-text-style',
+11: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-page-layout',
+11: ELEMENT "style:page-layout",
+12: SEQUENCE
+13: REF 'style-page-layout-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "style:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "style:page-usage",
+17: CHOICE
+18: VALUE 'all',
+18: VALUE 'left',
+18: VALUE 'right',
+18: VALUE 'mirrored',
+16: EPSILON
+13: CHOICE
+14: REF 'style-page-layout-properties',
+15: ELEMENT "style:page-layout-properties",
+16: REF 'style-page-layout-properties-content',
+17: REF 'style-page-layout-properties-content-strict',
+18: SEQUENCE
+19: REF 'style-page-layout-properties-attlist',
+20: INTERLEAVE
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "fo:page-width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:page-height",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'common-num-format-attlist',
+24: CHOICE
+25: ATTRIBUTE "style:num-format",
+26: CHOICE
+27: VALUE '1',
+27: VALUE 'i',
+27: VALUE 'I',
+27: REF 'string',
+28: DATA 'string',
+27: EPSILON
+25: SEQUENCE
+26: ATTRIBUTE "style:num-format",
+27: CHOICE
+28: VALUE 'a',
+28: VALUE 'A',
+26: REF 'style-num-letter-sync-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:num-letter-sync",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: EPSILON
+23: EPSILON
+22: REF 'common-num-format-prefix-suffix-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "style:num-prefix",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "style:num-suffix",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:paper-tray-name",
+23: CHOICE
+24: VALUE 'default',
+24: REF 'string',
+25: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:print-orientation",
+23: CHOICE
+24: VALUE 'portrait',
+24: VALUE 'landscape',
+22: EPSILON
+21: SEQUENCE
+22: REF 'common-horizontal-margin-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "fo:margin-left",
+26: CHOICE
+27: REF 'length',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "fo:margin-right",
+26: CHOICE
+27: REF 'length',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+22: REF 'common-vertical-margin-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "fo:margin-top",
+26: CHOICE
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "fo:margin-bottom",
+26: CHOICE
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+22: REF 'common-margin-attlist',
+23: CHOICE
+24: ATTRIBUTE "fo:margin",
+25: CHOICE
+26: REF 'nonNegativeLength',
+27: DATA 'string',
+26: REF 'percent',
+27: DATA 'string',
+24: EPSILON
+21: REF 'common-border-attlist',
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "fo:border",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-top",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-bottom",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-left",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-right",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-border-line-width-attlist',
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-top",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-bottom",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-left",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-right",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+21: REF 'common-padding-attlist',
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "fo:padding",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-top",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-bottom",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-left",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-right",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-shadow-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:shadow",
+24: REF 'shadowType',
+25: CHOICE
+26: VALUE 'none',
+26: REF 'string',
+27: DATA 'string',
+23: EPSILON
+21: REF 'common-background-color-attlist',
+22: CHOICE
+23: ATTRIBUTE "fo:background-color",
+24: CHOICE
+25: VALUE 'transparent',
+25: REF 'color',
+26: DATA 'string',
+23: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:register-truth-ref-style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:print",
+23: LIST
+24: CHOICE
+25: ONEOREMORE
+26: CHOICE
+27: VALUE 'headers',
+27: VALUE 'grid',
+27: VALUE 'annotations',
+27: VALUE 'objects',
+27: VALUE 'charts',
+27: VALUE 'drawings',
+27: VALUE 'formulas',
+27: VALUE 'zero-values',
+25: EPSILON
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:print-page-order",
+23: CHOICE
+24: VALUE 'ttb',
+24: VALUE 'ltr',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:first-page-number",
+23: CHOICE
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+24: VALUE 'continue',
+22: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "style:scale-to",
+24: REF 'percent',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:scale-to-pages",
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+23: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:table-centering",
+23: CHOICE
+24: VALUE 'horizontal',
+24: VALUE 'vertical',
+24: VALUE 'both',
+24: VALUE 'none',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:footnote-max-height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: REF 'common-writing-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:writing-mode",
+24: CHOICE
+25: VALUE 'lr-tb',
+25: VALUE 'rl-tb',
+25: VALUE 'tb-rl',
+25: VALUE 'tb-lr',
+25: VALUE 'lr',
+25: VALUE 'rl',
+25: VALUE 'tb',
+25: VALUE 'page',
+23: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-mode",
+23: CHOICE
+24: VALUE 'none',
+24: VALUE 'line',
+24: VALUE 'both',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-base-height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-ruby-height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-lines",
+23: REF 'positiveInteger',
+24: DATA 'positiveInteger',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-color",
+23: REF 'color',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-ruby-below",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-print",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-display",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+19: REF 'style-page-layout-properties-elements',
+20: INTERLEAVE
+21: REF 'style-background-image',
+22: CHOICE
+21: REF 'style-columns',
+22: CHOICE
+21: REF 'style-footnote-sep',
+22: CHOICE
+23: ELEMENT "style:footnote-sep",
+24: REF 'style-footnote-sep-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "style:width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:rel-width",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-style",
+28: REF 'lineStyle',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'solid',
+30: VALUE 'dotted',
+30: VALUE 'dash',
+30: VALUE 'long-dash',
+30: VALUE 'dot-dash',
+30: VALUE 'dot-dot-dash',
+30: VALUE 'wave',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:adjustment",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:distance-before-sep",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:distance-after-sep",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+23: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'style-header-style',
+15: ELEMENT "style:header-style",
+16: CHOICE
+17: REF 'style-header-footer-properties',
+18: ELEMENT "style:header-footer-properties",
+19: REF 'style-header-footer-properties-content',
+20: REF 'style-header-footer-properties-content-strict',
+21: SEQUENCE
+22: REF 'style-header-footer-properties-attlist',
+23: INTERLEAVE
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "svg:height",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:min-height",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+24: SEQUENCE
+25: REF 'common-horizontal-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-left",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-right",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-vertical-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-top",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-bottom",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-margin-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:margin",
+28: CHOICE
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+24: REF 'common-border-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "fo:border",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-top",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-bottom",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-left",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-right",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+24: REF 'common-border-line-width-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-top",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-bottom",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-left",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-right",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+24: REF 'common-padding-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "fo:padding",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-top",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-bottom",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-left",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-right",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+24: REF 'common-background-color-attlist',
+25: CHOICE
+26: ATTRIBUTE "fo:background-color",
+27: CHOICE
+28: VALUE 'transparent',
+28: REF 'color',
+29: DATA 'string',
+26: EPSILON
+24: REF 'common-shadow-attlist',
+25: CHOICE
+26: ATTRIBUTE "style:shadow",
+27: REF 'shadowType',
+28: CHOICE
+29: VALUE 'none',
+29: REF 'string',
+30: DATA 'string',
+26: EPSILON
+22: REF 'style-header-footer-properties-elements',
+23: REF 'style-background-image',
+24: CHOICE
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'style-footer-style',
+15: ELEMENT "style:footer-style",
+16: CHOICE
+17: REF 'style-header-footer-properties',
+17: EPSILON
+14: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-master-styles',
+5: CHOICE
+6: ELEMENT "office:master-styles",
+7: INTERLEAVE
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-master-page',
+11: ELEMENT "style:master-page",
+12: SEQUENCE
+13: REF 'style-master-page-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "style:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "style:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "style:page-layout-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:style-name",
+17: REF 'styleNameRef',
+18: CHOICE
+19: DATA 'NCName',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "style:next-style-name",
+17: REF 'styleNameRef',
+18: CHOICE
+19: DATA 'NCName',
+19: EPSILON
+16: EPSILON
+13: CHOICE
+14: SEQUENCE
+15: REF 'style-header',
+16: ELEMENT "style:header",
+17: SEQUENCE
+18: REF 'common-style-header-footer-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:display",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+18: REF 'header-footer-content',
+19: CHOICE
+20: SEQUENCE
+21: REF 'text-decls',
+22: SEQUENCE
+23: CHOICE
+24: ELEMENT "text:variable-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-variable-decl',
+28: ELEMENT "text:variable-decl",
+29: SEQUENCE
+30: REF 'common-field-name-attlist',
+31: ATTRIBUTE "text:name",
+32: REF 'variableName',
+33: DATA 'string',
+30: REF 'common-value-type-attlist',
+31: ATTRIBUTE "office:value-type",
+32: REF 'valueType',
+33: CHOICE
+34: VALUE 'float',
+34: VALUE 'time',
+34: VALUE 'date',
+34: VALUE 'percentage',
+34: VALUE 'currency',
+34: VALUE 'boolean',
+34: VALUE 'string',
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:sequence-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-sequence-decl',
+28: ELEMENT "text:sequence-decl",
+29: REF 'text-sequence-decl-attlist',
+30: INTERLEAVE
+31: REF 'common-field-name-attlist',
+32: ATTRIBUTE "text:name",
+33: REF 'variableName',
+34: DATA 'string',
+31: ATTRIBUTE "text:display-outline-level",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+31: CHOICE
+32: ATTRIBUTE "text:separation-character",
+33: REF 'character',
+34: DATA 'string',
+32: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:user-field-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-user-field-decl',
+28: ELEMENT "text:user-field-decl",
+29: SEQUENCE
+30: REF 'common-field-name-attlist',
+31: ATTRIBUTE "text:name",
+32: REF 'variableName',
+33: DATA 'string',
+30: CHOICE
+31: REF 'common-field-formula-attlist',
+32: CHOICE
+33: ATTRIBUTE "text:formula",
+34: REF 'formula',
+35: DATA 'string',
+33: EPSILON
+31: EPSILON
+30: REF 'common-value-and-type-attlist',
+31: CHOICE
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'float',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'percentage',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'currency',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+33: CHOICE
+34: ATTRIBUTE "office:currency",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'date',
+33: ATTRIBUTE "office:date-value",
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'time',
+33: ATTRIBUTE "office:time-value",
+34: REF 'duration',
+35: DATA 'duration',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'boolean',
+33: ATTRIBUTE "office:boolean-value",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'string',
+33: CHOICE
+34: ATTRIBUTE "office:string-value",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:dde-connection-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-dde-connection-decl',
+28: ELEMENT "text:dde-connection-decl",
+29: SEQUENCE
+30: REF 'text-dde-connection-decl-attlist',
+31: ATTRIBUTE "office:name",
+32: REF 'string',
+33: DATA 'string',
+30: REF 'common-dde-connection-decl-attlist',
+31: INTERLEAVE
+32: ATTRIBUTE "office:dde-application",
+33: REF 'string',
+34: DATA 'string',
+32: ATTRIBUTE "office:dde-topic",
+33: REF 'string',
+34: DATA 'string',
+32: ATTRIBUTE "office:dde-item",
+33: REF 'string',
+34: DATA 'string',
+32: CHOICE
+33: ATTRIBUTE "office:automatic-update",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: REF 'text-alphabetical-index-auto-mark-file',
+25: ELEMENT "text:alphabetical-index-auto-mark-file",
+26: SEQUENCE
+27: ATTRIBUTE "xlink:href",
+28: REF 'anyURI',
+29: DATA 'anyURI',
+27: CHOICE
+28: ATTRIBUTE "xlink:type",
+29: VALUE 'simple',
+28: EPSILON
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'text-h',
+25: ELEMENT "text:h",
+26: SEQUENCE
+27: REF 'heading-attrs',
+28: INTERLEAVE
+29: ATTRIBUTE "text:outline-level",
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+29: CHOICE
+30: ATTRIBUTE "text:restart-numbering",
+31: REF 'boolean',
+32: CHOICE
+33: VALUE 'true',
+33: VALUE 'false',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "text:start-value",
+31: REF 'nonNegativeInteger',
+32: DATA 'nonNegativeInteger',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "text:is-list-header",
+31: REF 'boolean',
+32: CHOICE
+33: VALUE 'true',
+33: VALUE 'false',
+30: EPSILON
+27: REF 'paragraph-attrs',
+28: INTERLEAVE
+29: SEQUENCE
+30: CHOICE
+31: ATTRIBUTE "text:style-name",
+32: REF 'styleNameRef',
+33: CHOICE
+34: DATA 'NCName',
+34: EPSILON
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "text:class-names",
+32: REF 'styleNameRefs',
+33: LIST
+34: CHOICE
+35: ONEOREMORE
+36: DATA 'NCName',
+35: EPSILON
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "text:cond-style-name",
+32: REF 'styleNameRef',
+33: CHOICE
+34: DATA 'NCName',
+34: EPSILON
+31: EPSILON
+29: CHOICE
+30: REF 'text-id',
+31: ATTRIBUTE "text:id",
+32: REF 'string',
+33: DATA 'string',
+30: EPSILON
+27: CHOICE
+28: REF 'text-number',
+29: ELEMENT "text:number",
+30: REF 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ONEOREMORE
+29: REF 'paragraph-content',
+30: CHOICE
+31: STRING
+31: ELEMENT "text:s",
+32: CHOICE
+33: ATTRIBUTE "text:c",
+34: REF 'nonNegativeInteger',
+35: DATA 'nonNegativeInteger',
+33: EPSILON
+31: ELEMENT "text:tab",
+32: REF 'text-tab-attr',
+33: CHOICE
+34: ATTRIBUTE "text:tab-ref",
+35: REF 'nonNegativeInteger',
+36: DATA 'nonNegativeInteger',
+34: EPSILON
+31: ELEMENT "text:line-break",
+32: EPSILON
+31: ELEMENT "text:span",
+32: SEQUENCE
+33: CHOICE
+34: ATTRIBUTE "text:style-name",
+35: REF 'styleNameRef',
+36: CHOICE
+37: DATA 'NCName',
+37: EPSILON
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "text:class-names",
+35: REF 'styleNameRefs',
+36: LIST
+37: CHOICE
+38: ONEOREMORE
+39: DATA 'NCName',
+38: EPSILON
+34: EPSILON
+33: CHOICE
+34: ONEOREMORE
+35: REF 'paragraph-content',
+36: CHOICE
+37: STRING
+34: EPSILON
+31: ELEMENT "text:a",
+32: SEQUENCE
+33: REF 'text-a-attlist',
+34: INTERLEAVE
+35: CHOICE
+36: ATTRIBUTE "office:name",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+35: SEQUENCE
+36: ATTRIBUTE "xlink:href",
+37: REF 'anyURI',
+38: DATA 'anyURI',
+36: CHOICE
+37: ATTRIBUTE "xlink:type",
+38: VALUE 'simple',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "xlink:actuate",
+38: VALUE 'onRequest',
+37: EPSILON
+35: SEQUENCE
+36: CHOICE
+37: ATTRIBUTE "office:target-frame-name",
+38: REF 'targetFrameName',
+39: CHOICE
+40: VALUE '_self',
+40: VALUE '_blank',
+40: VALUE '_parent',
+40: VALUE '_top',
+40: REF 'string',
+41: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "xlink:show",
+38: CHOICE
+39: VALUE 'new',
+39: VALUE 'replace',
+37: EPSILON
+35: SEQUENCE
+36: CHOICE
+37: ATTRIBUTE "text:style-name",
+38: REF 'styleNameRef',
+39: CHOICE
+40: DATA 'NCName',
+40: EPSILON
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:visited-style-name",
+38: REF 'styleNameRef',
+39: CHOICE
+40: DATA 'NCName',
+40: EPSILON
+37: EPSILON
+33: CHOICE
+34: REF 'office-event-listeners',
+34: EPSILON
+33: CHOICE
+34: ONEOREMORE
+35: REF 'paragraph-content',
+36: CHOICE
+37: STRING
+34: EPSILON
+31: ELEMENT "text:bookmark",
+32: ATTRIBUTE "text:name",
+33: REF 'string',
+34: DATA 'string',
+31: ELEMENT "text:bookmark-start",
+32: ATTRIBUTE "text:name",
+33: REF 'string',
+34: DATA 'string',
+31: ELEMENT "text:bookmark-end",
+32: ATTRIBUTE "text:name",
+33: REF 'string',
+34: DATA 'string',
+31: ELEMENT "text:reference-mark",
+32: ATTRIBUTE "text:name",
+33: REF 'string',
+34: DATA 'string',
+31: ELEMENT "text:reference-mark-start",
+32: ATTRIBUTE "text:name",
+33: REF 'string',
+34: DATA 'string',
+31: ELEMENT "text:reference-mark-end",
+32: ATTRIBUTE "text:name",
+33: REF 'string',
+34: DATA 'string',
+31: ELEMENT "text:note",
+32: SEQUENCE
+33: REF 'text-note-class',
+34: ATTRIBUTE "text:note-class",
+35: CHOICE
+36: VALUE 'footnote',
+36: VALUE 'endnote',
+33: CHOICE
+34: ATTRIBUTE "text:id",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+33: ELEMENT "text:note-citation",
+34: SEQUENCE
+35: CHOICE
+36: ATTRIBUTE "text:label",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+35: STRING
+33: ELEMENT "text:note-body",
+34: CHOICE
+35: ONEOREMORE
+36: REF 'text-content',
+37: CHOICE
+38: REF 'text-h',
+38: REF 'text-p',
+39: ELEMENT "text:p",
+40: SEQUENCE
+41: REF 'paragraph-attrs',
+42: INTERLEAVE
+43: SEQUENCE
+44: CHOICE
+45: ATTRIBUTE "text:style-name",
+46: REF 'styleNameRef',
+47: CHOICE
+48: DATA 'NCName',
+48: EPSILON
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:class-names",
+46: REF 'styleNameRefs',
+47: LIST
+48: CHOICE
+49: ONEOREMORE
+50: DATA 'NCName',
+49: EPSILON
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:cond-style-name",
+46: REF 'styleNameRef',
+47: CHOICE
+48: DATA 'NCName',
+48: EPSILON
+45: EPSILON
+43: CHOICE
+44: REF 'text-id',
+45: ATTRIBUTE "text:id",
+46: REF 'string',
+47: DATA 'string',
+44: EPSILON
+41: CHOICE
+42: ONEOREMORE
+43: REF 'paragraph-content',
+44: CHOICE
+45: STRING
+42: EPSILON
+38: REF 'text-list',
+39: ELEMENT "text:list",
+40: SEQUENCE
+41: REF 'text-list-attr',
+42: INTERLEAVE
+43: CHOICE
+44: ATTRIBUTE "text:style-name",
+45: REF 'styleNameRef',
+46: CHOICE
+47: DATA 'NCName',
+47: EPSILON
+44: EPSILON
+43: CHOICE
+44: ATTRIBUTE "text:continue-numbering",
+45: REF 'boolean',
+46: CHOICE
+47: VALUE 'true',
+47: VALUE 'false',
+44: EPSILON
+41: CHOICE
+42: REF 'text-list-header',
+43: ELEMENT "text:list-header",
+44: REF 'text-list-item-content',
+45: SEQUENCE
+46: CHOICE
+47: REF 'text-number',
+47: EPSILON
+46: CHOICE
+47: ONEOREMORE
+48: CHOICE
+49: REF 'text-p',
+49: REF 'text-h',
+49: REF 'text-list',
+47: EPSILON
+42: EPSILON
+41: CHOICE
+42: ONEOREMORE
+43: REF 'text-list-item',
+44: ELEMENT "text:list-item",
+45: SEQUENCE
+46: REF 'text-list-item-attr',
+47: CHOICE
+48: ATTRIBUTE "text:start-value",
+49: REF 'nonNegativeInteger',
+50: DATA 'nonNegativeInteger',
+48: EPSILON
+46: REF 'text-list-item-content',
+47: SEQUENCE
+48: CHOICE
+49: REF 'text-number',
+49: EPSILON
+48: CHOICE
+49: ONEOREMORE
+50: CHOICE
+51: REF 'text-p',
+51: REF 'text-h',
+51: REF 'text-list',
+49: EPSILON
+42: EPSILON
+38: REF 'text-numbered-paragraph',
+39: ELEMENT "text:numbered-paragraph",
+40: SEQUENCE
+41: REF 'text-numbered-paragraph-attr',
+42: INTERLEAVE
+43: CHOICE
+44: ATTRIBUTE "text:level",
+45: REF 'positiveInteger',
+46: DATA 'positiveInteger',
+44: EPSILON
+43: REF 'text-list-attr',
+44: INTERLEAVE
+45: CHOICE
+46: ATTRIBUTE "text:style-name",
+47: REF 'styleNameRef',
+48: CHOICE
+49: DATA 'NCName',
+49: EPSILON
+46: EPSILON
+45: CHOICE
+46: ATTRIBUTE "text:continue-numbering",
+47: REF 'boolean',
+48: CHOICE
+49: VALUE 'true',
+49: VALUE 'false',
+46: EPSILON
+43: REF 'text-list-item-attr',
+44: CHOICE
+45: ATTRIBUTE "text:start-value",
+46: REF 'nonNegativeInteger',
+47: DATA 'nonNegativeInteger',
+45: EPSILON
+41: CHOICE
+42: REF 'text-number',
+42: EPSILON
+41: CHOICE
+42: REF 'text-p',
+42: REF 'text-h',
+38: REF 'table-table',
+39: ELEMENT "table:table",
+40: SEQUENCE
+41: REF 'table-table-attlist',
+42: INTERLEAVE
+43: CHOICE
+44: ATTRIBUTE "table:name",
+45: REF 'string',
+46: DATA 'string',
+44: EPSILON
+43: CHOICE
+44: ATTRIBUTE "table:style-name",
+45: REF 'styleNameRef',
+46: CHOICE
+47: DATA 'NCName',
+47: EPSILON
+44: EPSILON
+43: SEQUENCE
+44: CHOICE
+45: ATTRIBUTE "table:protected",
+46: REF 'boolean',
+47: CHOICE
+48: VALUE 'true',
+48: VALUE 'false',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "table:protection-key",
+46: STRING
+45: EPSILON
+43: CHOICE
+44: ATTRIBUTE "table:print",
+45: REF 'boolean',
+46: CHOICE
+47: VALUE 'true',
+47: VALUE 'false',
+44: EPSILON
+43: CHOICE
+44: ATTRIBUTE "table:print-ranges",
+45: REF 'cellRangeAddressList',
+46: DATA 'string',
+44: EPSILON
+43: CHOICE
+44: ATTRIBUTE "table:is-sub-table",
+45: REF 'boolean',
+46: CHOICE
+47: VALUE 'true',
+47: VALUE 'false',
+44: EPSILON
+41: CHOICE
+42: REF 'table-table-source',
+43: ELEMENT "table:table-source",
+44: SEQUENCE
+45: REF 'table-table-source-attlist',
+46: INTERLEAVE
+47: CHOICE
+48: ATTRIBUTE "table:mode",
+49: CHOICE
+50: VALUE 'copy-all',
+50: VALUE 'copy-results-only',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "table:table-name",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+45: REF 'table-linked-source-attlist',
+46: INTERLEAVE
+47: SEQUENCE
+48: CHOICE
+49: ATTRIBUTE "xlink:type",
+50: VALUE 'simple',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "xlink:actuate",
+50: VALUE 'onRequest',
+49: EPSILON
+48: ATTRIBUTE "xlink:href",
+49: REF 'anyURI',
+50: DATA 'anyURI',
+47: CHOICE
+48: ATTRIBUTE "table:filter-name",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "table:filter-options",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "table:refresh-delay",
+49: REF 'duration',
+50: DATA 'duration',
+48: EPSILON
+42: EPSILON
+41: CHOICE
+42: REF 'office-dde-source',
+43: ELEMENT "office:dde-source",
+44: SEQUENCE
+45: REF 'office-dde-source-attlist',
+46: INTERLEAVE
+47: CHOICE
+48: ATTRIBUTE "office:name",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "office:conversion-mode",
+49: CHOICE
+50: VALUE 'into-default-style-data-style',
+50: VALUE 'into-english-number',
+50: VALUE 'keep-text',
+48: EPSILON
+45: REF 'common-dde-connection-decl-attlist',
+46: INTERLEAVE
+47: ATTRIBUTE "office:dde-application",
+48: REF 'string',
+49: DATA 'string',
+47: ATTRIBUTE "office:dde-topic",
+48: REF 'string',
+49: DATA 'string',
+47: ATTRIBUTE "office:dde-item",
+48: REF 'string',
+49: DATA 'string',
+47: CHOICE
+48: ATTRIBUTE "office:automatic-update",
+49: REF 'boolean',
+50: CHOICE
+51: VALUE 'true',
+51: VALUE 'false',
+48: EPSILON
+42: EPSILON
+41: CHOICE
+42: REF 'table-scenario',
+43: ELEMENT "table:scenario",
+44: REF 'table-scenario-attlist',
+45: INTERLEAVE
+46: ATTRIBUTE "table:scenario-ranges",
+47: REF 'cellRangeAddressList',
+48: DATA 'string',
+46: ATTRIBUTE "table:is-active",
+47: REF 'boolean',
+48: CHOICE
+49: VALUE 'true',
+49: VALUE 'false',
+46: CHOICE
+47: ATTRIBUTE "table:display-border",
+48: REF 'boolean',
+49: CHOICE
+50: VALUE 'true',
+50: VALUE 'false',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "table:border-color",
+48: REF 'color',
+49: DATA 'string',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "table:copy-back",
+48: REF 'boolean',
+49: CHOICE
+50: VALUE 'true',
+50: VALUE 'false',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "table:copy-styles",
+48: REF 'boolean',
+49: CHOICE
+50: VALUE 'true',
+50: VALUE 'false',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "table:copy-formulas",
+48: REF 'boolean',
+49: CHOICE
+50: VALUE 'true',
+50: VALUE 'false',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "table:comment",
+48: REF 'string',
+49: DATA 'string',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "table:protected",
+48: REF 'boolean',
+49: CHOICE
+50: VALUE 'true',
+50: VALUE 'false',
+47: EPSILON
+42: EPSILON
+41: CHOICE
+42: REF 'office-forms',
+43: CHOICE
+44: ELEMENT "office:forms",
+45: SEQUENCE
+46: REF 'office-forms-attlist',
+47: INTERLEAVE
+48: CHOICE
+49: ATTRIBUTE "form:automatic-focus",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "form:apply-design-mode",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+46: CHOICE
+47: ONEOREMORE
+48: CHOICE
+49: REF 'form-form',
+50: ELEMENT "form:form",
+51: SEQUENCE
+52: REF 'common-form-control-attlist',
+53: INTERLEAVE
+54: CHOICE
+55: ATTRIBUTE "form:name",
+56: REF 'string',
+57: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:control-implementation",
+56: REF 'namespacedToken',
+57: DATA 'string',
+55: EPSILON
+52: REF 'form-form-attlist',
+53: INTERLEAVE
+54: CHOICE
+55: SEQUENCE
+56: ATTRIBUTE "xlink:href",
+57: REF 'anyURI',
+58: DATA 'anyURI',
+56: CHOICE
+57: ATTRIBUTE "xlink:type",
+58: VALUE 'simple',
+57: EPSILON
+56: CHOICE
+57: ATTRIBUTE "xlink:actuate",
+58: VALUE 'onRequest',
+57: EPSILON
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "office:target-frame",
+56: REF 'targetFrameName',
+57: CHOICE
+58: VALUE '_self',
+58: VALUE '_blank',
+58: VALUE '_parent',
+58: VALUE '_top',
+58: REF 'string',
+59: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:method",
+56: CHOICE
+57: VALUE 'get',
+57: VALUE 'post',
+57: REF 'string',
+58: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:enctype",
+56: REF 'string',
+57: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:allow-deletes",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:allow-inserts",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:allow-updates",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:apply-filter",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:command-type",
+56: CHOICE
+57: VALUE 'table',
+57: VALUE 'query',
+57: VALUE 'command',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:command",
+56: STRING
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:datasource",
+56: CHOICE
+57: REF 'anyURI',
+58: DATA 'anyURI',
+57: REF 'string',
+58: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:master-fields",
+56: REF 'string',
+57: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:detail-fields",
+56: REF 'string',
+57: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:escape-processing",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:filter",
+56: REF 'string',
+57: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:ignore-result",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:navigation-mode",
+56: REF 'navigation',
+57: CHOICE
+58: VALUE 'none',
+58: VALUE 'current',
+58: VALUE 'parent',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:order",
+56: REF 'string',
+57: DATA 'string',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "form:tab-cycle",
+56: REF 'tab-cycles',
+57: CHOICE
+58: VALUE 'records',
+58: VALUE 'current',
+58: VALUE 'page',
+55: EPSILON
+52: CHOICE
+53: REF 'form-properties',
+54: ELEMENT "form:properties",
+55: ONEOREMORE
+56: REF 'form-property',
+57: CHOICE
+58: ELEMENT "form:property",
+59: SEQUENCE
+60: REF 'form-property-name',
+61: ATTRIBUTE "form:property-name",
+62: REF 'string',
+63: DATA 'string',
+60: REF 'form-property-value-and-type-attlist',
+61: CHOICE
+62: REF 'common-value-and-type-attlist',
+63: CHOICE
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'float',
+65: ATTRIBUTE "office:value",
+66: REF 'double',
+67: DATA 'double',
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'percentage',
+65: ATTRIBUTE "office:value",
+66: REF 'double',
+67: DATA 'double',
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'currency',
+65: ATTRIBUTE "office:value",
+66: REF 'double',
+67: DATA 'double',
+65: CHOICE
+66: ATTRIBUTE "office:currency",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'date',
+65: ATTRIBUTE "office:date-value",
+66: REF 'dateOrDateTime',
+67: CHOICE
+68: DATA 'date',
+68: DATA 'dateTime',
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'time',
+65: ATTRIBUTE "office:time-value",
+66: REF 'duration',
+67: DATA 'duration',
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'boolean',
+65: ATTRIBUTE "office:boolean-value",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+64: SEQUENCE
+65: ATTRIBUTE "office:value-type",
+66: VALUE 'string',
+65: CHOICE
+66: ATTRIBUTE "office:string-value",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+62: ATTRIBUTE "office:value-type",
+63: VALUE 'void',
+58: ELEMENT "form:list-property",
+59: SEQUENCE
+60: REF 'form-property-name',
+61: ATTRIBUTE "form:property-name",
+62: REF 'string',
+63: DATA 'string',
+60: REF 'form-property-type-and-value-list',
+61: CHOICE
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'float',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: ATTRIBUTE "office:value",
+67: REF 'double',
+68: DATA 'double',
+64: EPSILON
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'percentage',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: ATTRIBUTE "office:value",
+67: REF 'double',
+68: DATA 'double',
+64: EPSILON
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'currency',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: SEQUENCE
+67: ATTRIBUTE "office:value",
+68: REF 'double',
+69: DATA 'double',
+67: CHOICE
+68: ATTRIBUTE "office:currency",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: EPSILON
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'date',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: ATTRIBUTE "office:date-value",
+67: REF 'dateOrDateTime',
+68: CHOICE
+69: DATA 'date',
+69: DATA 'dateTime',
+64: EPSILON
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'time',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: ATTRIBUTE "office:time-value",
+67: REF 'duration',
+68: DATA 'duration',
+64: EPSILON
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'boolean',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: ATTRIBUTE "office:boolean-value",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+64: EPSILON
+62: SEQUENCE
+63: ATTRIBUTE "office:value-type",
+64: VALUE 'string',
+63: CHOICE
+64: ONEOREMORE
+65: ELEMENT "form:list-value",
+66: ATTRIBUTE "office:string-value",
+67: REF 'string',
+68: DATA 'string',
+64: EPSILON
+62: ATTRIBUTE "office:value-type",
+63: VALUE 'void',
+53: EPSILON
+52: CHOICE
+53: REF 'office-event-listeners',
+53: EPSILON
+52: CHOICE
+53: ONEOREMORE
+54: CHOICE
+55: REF 'controls',
+56: CHOICE
+57: REF 'column-controls',
+58: CHOICE
+59: ELEMENT "form:text",
+60: SEQUENCE
+61: REF 'form-text-attlist',
+62: SEQUENCE
+63: REF 'form-control-attlist',
+64: SEQUENCE
+65: REF 'common-form-control-attlist',
+66: INTERLEAVE
+67: CHOICE
+68: ATTRIBUTE "form:name",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "form:control-implementation",
+69: REF 'namespacedToken',
+70: DATA 'string',
+68: EPSILON
+65: REF 'common-control-id-attlist',
+66: ATTRIBUTE "form:id",
+67: REF 'ID',
+68: DATA 'ID',
+65: REF 'xforms-bind-attlist',
+66: CHOICE
+67: ATTRIBUTE "xforms:bind",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+63: REF 'common-current-value-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:current-value",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: REF 'common-disabled-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:disabled",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-maxlength-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:max-length",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+63: REF 'common-printable-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:printable",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-readonly-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:readonly",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-tab-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:tab-index",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:tab-stop",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+63: REF 'common-title-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:title",
+66: STRING
+65: EPSILON
+63: REF 'common-value-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:value",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: REF 'common-convert-empty-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:convert-empty-to-null",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-data-field-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:data-field",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+59: ELEMENT "form:textarea",
+60: SEQUENCE
+61: REF 'form-textarea-attlist',
+62: SEQUENCE
+63: REF 'form-control-attlist',
+64: SEQUENCE
+65: REF 'common-form-control-attlist',
+66: INTERLEAVE
+67: CHOICE
+68: ATTRIBUTE "form:name",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "form:control-implementation",
+69: REF 'namespacedToken',
+70: DATA 'string',
+68: EPSILON
+65: REF 'common-control-id-attlist',
+66: ATTRIBUTE "form:id",
+67: REF 'ID',
+68: DATA 'ID',
+65: REF 'xforms-bind-attlist',
+66: CHOICE
+67: ATTRIBUTE "xforms:bind",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+63: REF 'common-current-value-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:current-value",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: REF 'common-disabled-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:disabled",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-maxlength-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:max-length",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+63: REF 'common-printable-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:printable",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-readonly-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:readonly",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-tab-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:tab-index",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:tab-stop",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+63: REF 'common-title-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:title",
+66: STRING
+65: EPSILON
+63: REF 'common-value-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:value",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: REF 'common-convert-empty-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:convert-empty-to-null",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-data-field-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:data-field",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+61: CHOICE
+62: ONEOREMORE
+63: REF 'text-p',
+62: EPSILON
+59: ELEMENT "form:formatted-text",
+60: SEQUENCE
+61: REF 'form-formatted-text-attlist',
+62: INTERLEAVE
+63: SEQUENCE
+64: REF 'form-control-attlist',
+65: SEQUENCE
+66: REF 'common-form-control-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:control-implementation",
+70: REF 'namespacedToken',
+71: DATA 'string',
+69: EPSILON
+66: REF 'common-control-id-attlist',
+67: ATTRIBUTE "form:id",
+68: REF 'ID',
+69: DATA 'ID',
+66: REF 'xforms-bind-attlist',
+67: CHOICE
+68: ATTRIBUTE "xforms:bind",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-current-value-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:current-value",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-disabled-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:disabled",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-maxlength-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:max-length",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+64: REF 'common-printable-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:printable",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-readonly-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:readonly",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-tab-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:tab-index",
+68: REF 'nonNegativeInteger',
+69: DATA 'nonNegativeInteger',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:tab-stop",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+64: REF 'common-title-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:title",
+67: STRING
+66: EPSILON
+64: REF 'common-value-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:value",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-convert-empty-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:convert-empty-to-null",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-data-field-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:data-field",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:max-value",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:min-value",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:validation",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+59: ELEMENT "form:number",
+60: SEQUENCE
+61: REF 'form-number-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:value",
+65: REF 'double',
+66: DATA 'double',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:current-value",
+65: REF 'double',
+66: DATA 'double',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:min-value",
+65: REF 'double',
+66: DATA 'double',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:max-value",
+65: REF 'double',
+66: DATA 'double',
+64: EPSILON
+61: REF 'common-numeric-control-attlist',
+62: SEQUENCE
+63: REF 'form-control-attlist',
+64: SEQUENCE
+65: REF 'common-form-control-attlist',
+66: INTERLEAVE
+67: CHOICE
+68: ATTRIBUTE "form:name",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "form:control-implementation",
+69: REF 'namespacedToken',
+70: DATA 'string',
+68: EPSILON
+65: REF 'common-control-id-attlist',
+66: ATTRIBUTE "form:id",
+67: REF 'ID',
+68: DATA 'ID',
+65: REF 'xforms-bind-attlist',
+66: CHOICE
+67: ATTRIBUTE "xforms:bind",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+63: REF 'common-disabled-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:disabled",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-maxlength-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:max-length",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+63: REF 'common-printable-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:printable",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-readonly-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:readonly",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-tab-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:tab-index",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:tab-stop",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+63: REF 'common-title-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:title",
+66: STRING
+65: EPSILON
+63: REF 'common-convert-empty-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:convert-empty-to-null",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-data-field-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:data-field",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+59: ELEMENT "form:date",
+60: SEQUENCE
+61: REF 'form-date-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:value",
+65: REF 'date',
+66: DATA 'date',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:current-value",
+65: REF 'date',
+66: DATA 'date',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:min-value",
+65: REF 'date',
+66: DATA 'date',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:max-value",
+65: REF 'date',
+66: DATA 'date',
+64: EPSILON
+61: REF 'common-numeric-control-attlist',
+62: SEQUENCE
+63: REF 'form-control-attlist',
+64: SEQUENCE
+65: REF 'common-form-control-attlist',
+66: INTERLEAVE
+67: CHOICE
+68: ATTRIBUTE "form:name",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "form:control-implementation",
+69: REF 'namespacedToken',
+70: DATA 'string',
+68: EPSILON
+65: REF 'common-control-id-attlist',
+66: ATTRIBUTE "form:id",
+67: REF 'ID',
+68: DATA 'ID',
+65: REF 'xforms-bind-attlist',
+66: CHOICE
+67: ATTRIBUTE "xforms:bind",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+63: REF 'common-disabled-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:disabled",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-maxlength-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:max-length",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+63: REF 'common-printable-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:printable",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-readonly-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:readonly",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-tab-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:tab-index",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:tab-stop",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+63: REF 'common-title-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:title",
+66: STRING
+65: EPSILON
+63: REF 'common-convert-empty-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:convert-empty-to-null",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+63: REF 'common-data-field-attlist',
+64: CHOICE
+65: ATTRIBUTE "form:data-field",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+59: ELEMENT "form:combobox",
+60: SEQUENCE
+61: REF 'form-combobox-attlist',
+62: INTERLEAVE
+63: SEQUENCE
+64: REF 'form-control-attlist',
+65: SEQUENCE
+66: REF 'common-form-control-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:control-implementation",
+70: REF 'namespacedToken',
+71: DATA 'string',
+69: EPSILON
+66: REF 'common-control-id-attlist',
+67: ATTRIBUTE "form:id",
+68: REF 'ID',
+69: DATA 'ID',
+66: REF 'xforms-bind-attlist',
+67: CHOICE
+68: ATTRIBUTE "xforms:bind",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-current-value-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:current-value",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-disabled-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:disabled",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'dropdown',
+65: CHOICE
+66: ATTRIBUTE "form:dropdown",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-maxlength-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:max-length",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+64: REF 'common-printable-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:printable",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-readonly-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:readonly",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'size',
+65: CHOICE
+66: ATTRIBUTE "form:size",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+64: REF 'common-tab-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:tab-index",
+68: REF 'nonNegativeInteger',
+69: DATA 'nonNegativeInteger',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:tab-stop",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+64: REF 'common-title-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:title",
+67: STRING
+66: EPSILON
+64: REF 'common-value-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:value",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-convert-empty-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:convert-empty-to-null",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-data-field-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:data-field",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'list-source',
+65: CHOICE
+66: ATTRIBUTE "form:list-source",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'list-source-type',
+65: CHOICE
+66: ATTRIBUTE "form:list-source-type",
+67: CHOICE
+68: VALUE 'table',
+68: VALUE 'query',
+68: VALUE 'sql',
+68: VALUE 'sql-pass-through',
+68: VALUE 'value-list',
+68: VALUE 'table-fields',
+66: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:auto-complete",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+61: CHOICE
+62: ONEOREMORE
+63: REF 'form-item',
+64: ELEMENT "form:item",
+65: SEQUENCE
+66: REF 'form-item-attlist',
+67: REF 'label',
+68: CHOICE
+69: ATTRIBUTE "form:label",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+66: STRING
+62: EPSILON
+59: ELEMENT "form:listbox",
+60: SEQUENCE
+61: REF 'form-listbox-attlist',
+62: INTERLEAVE
+63: SEQUENCE
+64: REF 'form-control-attlist',
+65: SEQUENCE
+66: REF 'common-form-control-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:control-implementation",
+70: REF 'namespacedToken',
+71: DATA 'string',
+69: EPSILON
+66: REF 'common-control-id-attlist',
+67: ATTRIBUTE "form:id",
+68: REF 'ID',
+69: DATA 'ID',
+66: REF 'xforms-bind-attlist',
+67: CHOICE
+68: ATTRIBUTE "xforms:bind",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-disabled-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:disabled",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'dropdown',
+65: CHOICE
+66: ATTRIBUTE "form:dropdown",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-printable-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:printable",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'size',
+65: CHOICE
+66: ATTRIBUTE "form:size",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+64: REF 'common-tab-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:tab-index",
+68: REF 'nonNegativeInteger',
+69: DATA 'nonNegativeInteger',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:tab-stop",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+64: REF 'common-title-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:title",
+67: STRING
+66: EPSILON
+64: REF 'bound-column',
+65: CHOICE
+66: ATTRIBUTE "form:bound-column",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-data-field-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:data-field",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'list-source',
+65: CHOICE
+66: ATTRIBUTE "form:list-source",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'list-source-type',
+65: CHOICE
+66: ATTRIBUTE "form:list-source-type",
+67: CHOICE
+68: VALUE 'table',
+68: VALUE 'query',
+68: VALUE 'sql',
+68: VALUE 'sql-pass-through',
+68: VALUE 'value-list',
+68: VALUE 'table-fields',
+66: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:multiple",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:xforms-list-source",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+61: CHOICE
+62: ONEOREMORE
+63: REF 'form-option',
+64: ELEMENT "form:option",
+65: SEQUENCE
+66: REF 'form-option-attlist',
+67: SEQUENCE
+68: REF 'current-selected',
+69: CHOICE
+70: ATTRIBUTE "form:current-selected",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'selected',
+69: CHOICE
+70: ATTRIBUTE "form:selected",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'label',
+69: CHOICE
+70: ATTRIBUTE "form:label",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: STRING
+62: EPSILON
+59: ELEMENT "form:checkbox",
+60: SEQUENCE
+61: REF 'form-checkbox-attlist',
+62: INTERLEAVE
+63: SEQUENCE
+64: REF 'form-control-attlist',
+65: SEQUENCE
+66: REF 'common-form-control-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:control-implementation",
+70: REF 'namespacedToken',
+71: DATA 'string',
+69: EPSILON
+66: REF 'common-control-id-attlist',
+67: ATTRIBUTE "form:id",
+68: REF 'ID',
+69: DATA 'ID',
+66: REF 'xforms-bind-attlist',
+67: CHOICE
+68: ATTRIBUTE "xforms:bind",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-disabled-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:disabled",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'label',
+65: CHOICE
+66: ATTRIBUTE "form:label",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-printable-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:printable",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+64: REF 'common-tab-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:tab-index",
+68: REF 'nonNegativeInteger',
+69: DATA 'nonNegativeInteger',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:tab-stop",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+64: REF 'common-title-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:title",
+67: STRING
+66: EPSILON
+64: REF 'common-value-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:value",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-data-field-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:data-field",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-form-visual-effect-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:visual-effect",
+67: CHOICE
+68: VALUE 'flat',
+68: VALUE '3d',
+66: EPSILON
+64: REF 'common-form-relative-image-position-attlist',
+65: CHOICE
+66: ATTRIBUTE "form:image-position",
+67: VALUE 'center',
+66: EPSILON
+66: SEQUENCE
+67: ATTRIBUTE "form:image-position",
+68: CHOICE
+69: VALUE 'start',
+69: VALUE 'end',
+69: VALUE 'top',
+69: VALUE 'bottom',
+67: CHOICE
+68: ATTRIBUTE "form:image-align",
+69: CHOICE
+70: VALUE 'start',
+70: VALUE 'center',
+70: VALUE 'end',
+68: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:current-state",
+65: REF 'states',
+66: CHOICE
+67: VALUE 'unchecked',
+67: VALUE 'checked',
+67: VALUE 'unknown',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:is-tristate",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:state",
+65: REF 'states',
+66: CHOICE
+67: VALUE 'unchecked',
+67: VALUE 'checked',
+67: VALUE 'unknown',
+64: EPSILON
+61: REF 'common-form-control-content',
+62: SEQUENCE
+63: CHOICE
+64: REF 'form-properties',
+64: EPSILON
+63: CHOICE
+64: REF 'office-event-listeners',
+64: EPSILON
+57: ELEMENT "form:password",
+58: SEQUENCE
+59: REF 'form-password-attlist',
+60: INTERLEAVE
+61: SEQUENCE
+62: REF 'form-control-attlist',
+63: SEQUENCE
+64: REF 'common-form-control-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:name",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:control-implementation",
+68: REF 'namespacedToken',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-control-id-attlist',
+65: ATTRIBUTE "form:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: REF 'xforms-bind-attlist',
+65: CHOICE
+66: ATTRIBUTE "xforms:bind",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+62: REF 'common-disabled-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:disabled",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'common-maxlength-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:max-length",
+65: REF 'nonNegativeInteger',
+66: DATA 'nonNegativeInteger',
+64: EPSILON
+62: REF 'common-printable-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:printable",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'common-tab-attlist',
+63: INTERLEAVE
+64: CHOICE
+65: ATTRIBUTE "form:tab-index",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "form:tab-stop",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+62: REF 'common-title-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:title",
+65: STRING
+64: EPSILON
+62: REF 'common-value-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:value",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+62: REF 'common-convert-empty-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:convert-empty-to-null",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:echo-char",
+63: REF 'character',
+64: DATA 'string',
+62: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:file",
+58: SEQUENCE
+59: REF 'form-file-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-current-value-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:current-value",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-maxlength-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:max-length",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-readonly-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:readonly",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-tab-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:tab-index",
+65: REF 'nonNegativeInteger',
+66: DATA 'nonNegativeInteger',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:tab-stop",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+61: REF 'common-value-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:value",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:time",
+58: SEQUENCE
+59: REF 'form-time-attlist',
+60: INTERLEAVE
+61: CHOICE
+62: ATTRIBUTE "form:value",
+63: REF 'time',
+64: DATA 'time',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:current-value",
+63: REF 'time',
+64: DATA 'time',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:min-value",
+63: REF 'time',
+64: DATA 'time',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:max-value",
+63: REF 'time',
+64: DATA 'time',
+62: EPSILON
+59: REF 'common-numeric-control-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-maxlength-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:max-length",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-readonly-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:readonly",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-tab-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:tab-index",
+65: REF 'nonNegativeInteger',
+66: DATA 'nonNegativeInteger',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:tab-stop",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+61: REF 'common-convert-empty-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:convert-empty-to-null",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-data-field-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:data-field",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:fixed-text",
+58: SEQUENCE
+59: REF 'form-fixed-text-attlist',
+60: INTERLEAVE
+61: SEQUENCE
+62: REF 'form-control-attlist',
+63: SEQUENCE
+64: REF 'common-form-control-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:name",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:control-implementation",
+68: REF 'namespacedToken',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-control-id-attlist',
+65: ATTRIBUTE "form:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: REF 'xforms-bind-attlist',
+65: CHOICE
+66: ATTRIBUTE "xforms:bind",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+62: REF 'for',
+63: CHOICE
+64: ATTRIBUTE "form:for",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+62: REF 'common-disabled-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:disabled",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'label',
+63: CHOICE
+64: ATTRIBUTE "form:label",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+62: REF 'common-printable-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:printable",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'common-title-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:title",
+65: STRING
+64: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:multi-line",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+62: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:button",
+58: SEQUENCE
+59: REF 'form-button-attlist',
+60: INTERLEAVE
+61: SEQUENCE
+62: REF 'form-control-attlist',
+63: SEQUENCE
+64: REF 'common-form-control-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:name",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:control-implementation",
+68: REF 'namespacedToken',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-control-id-attlist',
+65: ATTRIBUTE "form:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: REF 'xforms-bind-attlist',
+65: CHOICE
+66: ATTRIBUTE "xforms:bind",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+62: REF 'button-type',
+63: CHOICE
+64: ATTRIBUTE "form:button-type",
+65: REF 'types',
+66: CHOICE
+67: VALUE 'submit',
+67: VALUE 'reset',
+67: VALUE 'push',
+67: VALUE 'url',
+64: EPSILON
+62: REF 'common-disabled-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:disabled",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'label',
+63: CHOICE
+64: ATTRIBUTE "form:label",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+62: REF 'image-data',
+63: CHOICE
+64: ATTRIBUTE "form:image-data",
+65: REF 'anyURI',
+66: DATA 'anyURI',
+64: EPSILON
+62: REF 'common-printable-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:printable",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'common-tab-attlist',
+63: INTERLEAVE
+64: CHOICE
+65: ATTRIBUTE "form:tab-index",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "form:tab-stop",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+62: REF 'target-frame',
+63: CHOICE
+64: ATTRIBUTE "office:target-frame",
+65: REF 'targetFrameName',
+66: CHOICE
+67: VALUE '_self',
+67: VALUE '_blank',
+67: VALUE '_parent',
+67: VALUE '_top',
+67: REF 'string',
+68: DATA 'string',
+64: EPSILON
+62: REF 'target-location',
+63: CHOICE
+64: ATTRIBUTE "xlink:href",
+65: REF 'anyURI',
+66: DATA 'anyURI',
+64: EPSILON
+62: REF 'common-title-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:title",
+65: STRING
+64: EPSILON
+62: REF 'common-value-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:value",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+62: REF 'common-form-relative-image-position-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:image-position",
+65: VALUE 'center',
+64: EPSILON
+64: SEQUENCE
+65: ATTRIBUTE "form:image-position",
+66: CHOICE
+67: VALUE 'start',
+67: VALUE 'end',
+67: VALUE 'top',
+67: VALUE 'bottom',
+65: CHOICE
+66: ATTRIBUTE "form:image-align",
+67: CHOICE
+68: VALUE 'start',
+68: VALUE 'center',
+68: VALUE 'end',
+66: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:default-button",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:toggle",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:focus-on-click",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:xforms-submission",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:image",
+58: SEQUENCE
+59: REF 'form-image-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'button-type',
+62: CHOICE
+63: ATTRIBUTE "form:button-type",
+64: REF 'types',
+65: CHOICE
+66: VALUE 'submit',
+66: VALUE 'reset',
+66: VALUE 'push',
+66: VALUE 'url',
+63: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'image-data',
+62: CHOICE
+63: ATTRIBUTE "form:image-data",
+64: REF 'anyURI',
+65: DATA 'anyURI',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-tab-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:tab-index",
+65: REF 'nonNegativeInteger',
+66: DATA 'nonNegativeInteger',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:tab-stop",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'target-frame',
+62: CHOICE
+63: ATTRIBUTE "office:target-frame",
+64: REF 'targetFrameName',
+65: CHOICE
+66: VALUE '_self',
+66: VALUE '_blank',
+66: VALUE '_parent',
+66: VALUE '_top',
+66: REF 'string',
+67: DATA 'string',
+63: EPSILON
+61: REF 'target-location',
+62: CHOICE
+63: ATTRIBUTE "xlink:href",
+64: REF 'anyURI',
+65: DATA 'anyURI',
+63: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+61: REF 'common-value-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:value",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:radio",
+58: SEQUENCE
+59: REF 'form-radio-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'current-selected',
+62: CHOICE
+63: ATTRIBUTE "form:current-selected",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'label',
+62: CHOICE
+63: ATTRIBUTE "form:label",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'selected',
+62: CHOICE
+63: ATTRIBUTE "form:selected",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-tab-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:tab-index",
+65: REF 'nonNegativeInteger',
+66: DATA 'nonNegativeInteger',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:tab-stop",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+61: REF 'common-value-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:value",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-data-field-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:data-field",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-form-visual-effect-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:visual-effect",
+64: CHOICE
+65: VALUE 'flat',
+65: VALUE '3d',
+63: EPSILON
+61: REF 'common-form-relative-image-position-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:image-position",
+64: VALUE 'center',
+63: EPSILON
+63: SEQUENCE
+64: ATTRIBUTE "form:image-position",
+65: CHOICE
+66: VALUE 'start',
+66: VALUE 'end',
+66: VALUE 'top',
+66: VALUE 'bottom',
+64: CHOICE
+65: ATTRIBUTE "form:image-align",
+66: CHOICE
+67: VALUE 'start',
+67: VALUE 'center',
+67: VALUE 'end',
+65: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:frame",
+58: SEQUENCE
+59: REF 'form-frame-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'for',
+62: CHOICE
+63: ATTRIBUTE "form:for",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'label',
+62: CHOICE
+63: ATTRIBUTE "form:label",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:image-frame",
+58: SEQUENCE
+59: REF 'form-image-frame-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'image-data',
+62: CHOICE
+63: ATTRIBUTE "form:image-data",
+64: REF 'anyURI',
+65: DATA 'anyURI',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-readonly-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:readonly",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+61: REF 'common-data-field-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:data-field",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:hidden",
+58: SEQUENCE
+59: REF 'form-hidden-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-value-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:value",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:grid",
+58: SEQUENCE
+59: REF 'form-grid-attlist',
+60: SEQUENCE
+61: REF 'form-control-attlist',
+62: SEQUENCE
+63: REF 'common-form-control-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "form:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "form:control-implementation",
+67: REF 'namespacedToken',
+68: DATA 'string',
+66: EPSILON
+63: REF 'common-control-id-attlist',
+64: ATTRIBUTE "form:id",
+65: REF 'ID',
+66: DATA 'ID',
+63: REF 'xforms-bind-attlist',
+64: CHOICE
+65: ATTRIBUTE "xforms:bind",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+61: REF 'common-disabled-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:disabled",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-printable-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:printable",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'common-tab-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "form:tab-index",
+65: REF 'nonNegativeInteger',
+66: DATA 'nonNegativeInteger',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "form:tab-stop",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+61: REF 'common-title-attlist',
+62: CHOICE
+63: ATTRIBUTE "form:title",
+64: STRING
+63: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+59: CHOICE
+60: ONEOREMORE
+61: REF 'form-column',
+62: ELEMENT "form:column",
+63: SEQUENCE
+64: REF 'form-column-attlist',
+65: SEQUENCE
+66: REF 'common-form-control-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:control-implementation",
+70: REF 'namespacedToken',
+71: DATA 'string',
+69: EPSILON
+66: REF 'label',
+67: CHOICE
+68: ATTRIBUTE "form:label",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'text-style-name',
+67: CHOICE
+68: ATTRIBUTE "form:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: ONEOREMORE
+65: REF 'column-controls',
+66: CHOICE
+60: EPSILON
+57: ELEMENT "form:value-range",
+58: SEQUENCE
+59: REF 'form-value-range-attlist',
+60: INTERLEAVE
+61: SEQUENCE
+62: REF 'form-control-attlist',
+63: SEQUENCE
+64: REF 'common-form-control-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "form:name",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:control-implementation",
+68: REF 'namespacedToken',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-control-id-attlist',
+65: ATTRIBUTE "form:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: REF 'xforms-bind-attlist',
+65: CHOICE
+66: ATTRIBUTE "xforms:bind",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+62: REF 'common-disabled-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:disabled",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'common-printable-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:printable",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+62: REF 'common-tab-attlist',
+63: INTERLEAVE
+64: CHOICE
+65: ATTRIBUTE "form:tab-index",
+66: REF 'nonNegativeInteger',
+67: DATA 'nonNegativeInteger',
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "form:tab-stop",
+66: REF 'boolean',
+67: CHOICE
+68: VALUE 'true',
+68: VALUE 'false',
+65: EPSILON
+62: REF 'common-title-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:title",
+65: STRING
+64: EPSILON
+62: REF 'common-value-attlist',
+63: CHOICE
+64: ATTRIBUTE "form:value",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:max-value",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:min-value",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:step-size",
+63: REF 'positiveInteger',
+64: DATA 'positiveInteger',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:page-step-size",
+63: REF 'positiveInteger',
+64: DATA 'positiveInteger',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:delay-for-repeat",
+63: REF 'duration',
+64: DATA 'duration',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "form:orientation",
+63: CHOICE
+64: VALUE 'horizontal',
+64: VALUE 'vertical',
+62: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+57: ELEMENT "form:generic-control",
+58: SEQUENCE
+59: REF 'form-generic-control-attlist',
+60: REF 'form-control-attlist',
+61: SEQUENCE
+62: REF 'common-form-control-attlist',
+63: INTERLEAVE
+64: CHOICE
+65: ATTRIBUTE "form:name",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "form:control-implementation",
+66: REF 'namespacedToken',
+67: DATA 'string',
+65: EPSILON
+62: REF 'common-control-id-attlist',
+63: ATTRIBUTE "form:id",
+64: REF 'ID',
+65: DATA 'ID',
+62: REF 'xforms-bind-attlist',
+63: CHOICE
+64: ATTRIBUTE "xforms:bind",
+65: REF 'string',
+66: DATA 'string',
+64: EPSILON
+59: REF 'common-form-control-content',
+60: SEQUENCE
+61: CHOICE
+62: REF 'form-properties',
+62: EPSILON
+61: CHOICE
+62: REF 'office-event-listeners',
+62: EPSILON
+55: REF 'form-form',
+53: EPSILON
+52: CHOICE
+53: REF 'form-connection-resource',
+54: ELEMENT "form:connection-resource",
+55: ATTRIBUTE "xlink:href",
+56: REF 'anyURI',
+57: DATA 'anyURI',
+53: EPSILON
+49: REF 'xforms-model',
+50: ELEMENT "xforms:model",
+51: REF 'anyAttListOrElements',
+52: SEQUENCE
+53: CHOICE
+54: ONEOREMORE
+55: ATTRIBUTE "*",
+56: STRING
+54: EPSILON
+53: REF 'anyElements',
+54: CHOICE
+55: ONEOREMORE
+55: EPSILON
+47: EPSILON
+44: EPSILON
+42: EPSILON
+41: CHOICE
+42: REF 'table-shapes',
+43: ELEMENT "table:shapes",
+44: ONEOREMORE
+45: REF 'shape',
+46: CHOICE
+47: REF 'draw-rect',
+48: ELEMENT "draw:rect",
+49: SEQUENCE
+50: REF 'draw-rect-attlist',
+51: CHOICE
+52: ATTRIBUTE "draw:corner-radius",
+53: REF 'nonNegativeLength',
+54: DATA 'string',
+52: EPSILON
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+53: ELEMENT "draw:glue-point",
+54: REF 'draw-glue-point-attlist',
+55: INTERLEAVE
+56: ATTRIBUTE "draw:id",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: SEQUENCE
+57: ATTRIBUTE "svg:x",
+58: CHOICE
+59: REF 'distance',
+60: REF 'length',
+61: DATA 'string',
+59: REF 'percent',
+60: DATA 'string',
+57: ATTRIBUTE "svg:y",
+58: CHOICE
+59: REF 'distance',
+60: REF 'length',
+61: DATA 'string',
+59: REF 'percent',
+60: DATA 'string',
+56: ATTRIBUTE "draw:align",
+57: CHOICE
+58: VALUE 'top-left',
+58: VALUE 'top',
+58: VALUE 'top-right',
+58: VALUE 'left',
+58: VALUE 'center',
+58: VALUE 'right',
+58: VALUE 'bottom-left',
+58: VALUE 'bottom-right',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-line',
+48: ELEMENT "draw:line",
+49: SEQUENCE
+50: REF 'draw-line-attlist',
+51: INTERLEAVE
+52: SEQUENCE
+53: ATTRIBUTE "svg:x1",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: ATTRIBUTE "svg:y1",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+52: SEQUENCE
+53: ATTRIBUTE "svg:x2",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: ATTRIBUTE "svg:y2",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-polyline',
+48: ELEMENT "draw:polyline",
+49: SEQUENCE
+50: REF 'common-draw-points-attlist',
+51: ATTRIBUTE "draw:points",
+52: REF 'points',
+53: DATA 'string',
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-viewbox-attlist',
+51: ATTRIBUTE "svg:viewBox",
+52: LIST
+53: SEQUENCE
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-polygon',
+48: ELEMENT "draw:polygon",
+49: SEQUENCE
+50: REF 'common-draw-points-attlist',
+51: ATTRIBUTE "draw:points",
+52: REF 'points',
+53: DATA 'string',
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-viewbox-attlist',
+51: ATTRIBUTE "svg:viewBox",
+52: LIST
+53: SEQUENCE
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-regular-polygon',
+48: ELEMENT "draw:regular-polygon",
+49: SEQUENCE
+50: REF 'draw-regular-polygon-attlist',
+51: INTERLEAVE
+52: CHOICE
+53: ATTRIBUTE "draw:concave",
+54: VALUE 'false',
+53: SEQUENCE
+54: ATTRIBUTE "draw:concave",
+55: VALUE 'true',
+54: REF 'draw-regular-polygon-sharpness-attlist',
+55: ATTRIBUTE "draw:sharpness",
+56: REF 'percent',
+57: DATA 'string',
+52: ATTRIBUTE "draw:corners",
+53: REF 'positiveInteger',
+54: DATA 'positiveInteger',
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-path',
+48: ELEMENT "draw:path",
+49: SEQUENCE
+50: REF 'common-draw-path-data-attlist',
+51: ATTRIBUTE "svg:d",
+52: REF 'pathData',
+53: DATA 'string',
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-viewbox-attlist',
+51: ATTRIBUTE "svg:viewBox",
+52: LIST
+53: SEQUENCE
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+54: REF 'integer',
+55: DATA 'integer',
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-circle',
+48: ELEMENT "draw:circle",
+49: SEQUENCE
+50: REF 'draw-circle-attlist',
+51: CHOICE
+52: ATTRIBUTE "svg:r",
+53: REF 'length',
+54: DATA 'string',
+52: EPSILON
+50: REF 'common-draw-circle-ellipse-attlist',
+51: INTERLEAVE
+52: CHOICE
+53: SEQUENCE
+54: ATTRIBUTE "svg:cx",
+55: REF 'coordinate',
+56: REF 'length',
+57: DATA 'string',
+54: ATTRIBUTE "svg:cy",
+55: REF 'coordinate',
+56: REF 'length',
+57: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "draw:kind",
+54: CHOICE
+55: VALUE 'full',
+55: VALUE 'section',
+55: VALUE 'cut',
+55: VALUE 'arc',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "draw:start-angle",
+54: REF 'double',
+55: DATA 'double',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "draw:end-angle",
+54: REF 'double',
+55: DATA 'double',
+53: EPSILON
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-ellipse',
+48: ELEMENT "draw:ellipse",
+49: SEQUENCE
+50: REF 'common-draw-circle-ellipse-attlist',
+51: INTERLEAVE
+52: CHOICE
+53: SEQUENCE
+54: ATTRIBUTE "svg:cx",
+55: REF 'coordinate',
+56: REF 'length',
+57: DATA 'string',
+54: ATTRIBUTE "svg:cy",
+55: REF 'coordinate',
+56: REF 'length',
+57: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "draw:kind",
+54: CHOICE
+55: VALUE 'full',
+55: VALUE 'section',
+55: VALUE 'cut',
+55: VALUE 'arc',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "draw:start-angle",
+54: REF 'double',
+55: DATA 'double',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "draw:end-angle",
+54: REF 'double',
+55: DATA 'double',
+53: EPSILON
+50: REF 'draw-ellipse-attlist',
+51: CHOICE
+52: SEQUENCE
+53: ATTRIBUTE "svg:rx",
+54: REF 'length',
+55: DATA 'string',
+53: ATTRIBUTE "svg:ry",
+54: REF 'length',
+55: DATA 'string',
+52: EPSILON
+50: REF 'common-draw-position-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:x",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:y",
+54: REF 'coordinate',
+55: REF 'length',
+56: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-size-attlist',
+51: SEQUENCE
+52: CHOICE
+53: ATTRIBUTE "svg:width",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "svg:height",
+54: REF 'length',
+55: DATA 'string',
+53: EPSILON
+50: REF 'common-draw-shape-with-text-and-styles-attlist',
+51: SEQUENCE
+52: REF 'common-draw-shape-with-styles-attlist',
+53: SEQUENCE
+54: REF 'common-draw-z-index-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:z-index",
+57: REF 'nonNegativeInteger',
+58: DATA 'nonNegativeInteger',
+56: EPSILON
+54: REF 'common-draw-id-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:id",
+57: REF 'ID',
+58: DATA 'ID',
+56: EPSILON
+54: REF 'common-draw-layer-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:layer",
+57: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-style-name-attlist',
+55: CHOICE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "draw:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "draw:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "presentation:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "presentation:class-names",
+59: REF 'styleNameRefs',
+60: LIST
+61: CHOICE
+62: ONEOREMORE
+63: DATA 'NCName',
+62: EPSILON
+58: EPSILON
+54: REF 'common-draw-transform-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:transform",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-draw-name-attlist',
+55: CHOICE
+56: ATTRIBUTE "draw:name",
+57: REF 'string',
+58: DATA 'string',
+56: EPSILON
+54: REF 'common-text-spreadsheet-shape-attlist',
+55: INTERLEAVE
+56: SEQUENCE
+57: CHOICE
+58: ATTRIBUTE "table:end-cell-address",
+59: REF 'cellAddress',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-x",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:end-y",
+59: REF 'coordinate',
+60: REF 'length',
+61: DATA 'string',
+58: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:table-background",
+58: REF 'boolean',
+59: CHOICE
+60: VALUE 'true',
+60: VALUE 'false',
+57: EPSILON
+56: REF 'common-text-anchor-attlist',
+57: INTERLEAVE
+58: CHOICE
+59: ATTRIBUTE "text:anchor-type",
+60: CHOICE
+61: VALUE 'page',
+61: VALUE 'frame',
+61: VALUE 'paragraph',
+61: VALUE 'char',
+61: VALUE 'as-char',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:anchor-page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+52: REF 'common-draw-text-style-name-attlist',
+53: CHOICE
+54: ATTRIBUTE "draw:text-style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: REF 'draw-text',
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'text-p',
+54: REF 'text-list',
+52: EPSILON
+47: REF 'draw-g',
+48: ELEMENT "draw:g",
+49: SEQUENCE
+50: REF 'draw-g-attlist',
+51: CHOICE
+52: ATTRIBUTE "svg:y",
+53: REF 'coordinate',
+54: REF 'length',
+55: DATA 'string',
+52: EPSILON
+50: REF 'common-draw-z-index-attlist',
+51: CHOICE
+52: ATTRIBUTE "draw:z-index",
+53: REF 'nonNegativeInteger',
+54: DATA 'nonNegativeInteger',
+52: EPSILON
+50: REF 'common-draw-name-attlist',
+51: CHOICE
+52: ATTRIBUTE "draw:name",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+50: REF 'common-draw-id-attlist',
+51: CHOICE
+52: ATTRIBUTE "draw:id",
+53: REF 'ID',
+54: DATA 'ID',
+52: EPSILON
+50: REF 'common-draw-style-name-attlist',
+51: CHOICE
+52: SEQUENCE
+53: CHOICE
+54: ATTRIBUTE "draw:style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "draw:class-names",
+55: REF 'styleNameRefs',
+56: LIST
+57: CHOICE
+58: ONEOREMORE
+59: DATA 'NCName',
+58: EPSILON
+54: EPSILON
+52: SEQUENCE
+53: CHOICE
+54: ATTRIBUTE "presentation:style-name",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "presentation:class-names",
+55: REF 'styleNameRefs',
+56: LIST
+57: CHOICE
+58: ONEOREMORE
+59: DATA 'NCName',
+58: EPSILON
+54: EPSILON
+50: REF 'common-text-spreadsheet-shape-attlist',
+51: INTERLEAVE
+52: SEQUENCE
+53: CHOICE
+54: ATTRIBUTE "table:end-cell-address",
+55: REF 'cellAddress',
+56: DATA 'string',
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "table:end-x",
+55: REF 'coordinate',
+56: REF 'length',
+57: DATA 'string',
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "table:end-y",
+55: REF 'coordinate',
+56: REF 'length',
+57: DATA 'string',
+54: EPSILON
+52: CHOICE
+53: ATTRIBUTE "table:table-background",
+54: REF 'boolean',
+55: CHOICE
+56: VALUE 'true',
+56: VALUE 'false',
+53: EPSILON
+52: REF 'common-text-anchor-attlist',
+53: INTERLEAVE
+54: CHOICE
+55: ATTRIBUTE "text:anchor-type",
+56: CHOICE
+57: VALUE 'page',
+57: VALUE 'frame',
+57: VALUE 'paragraph',
+57: VALUE 'char',
+57: VALUE 'as-char',
+55: EPSILON
+54: CHOICE
+55: ATTRIBUTE "text:anchor-page-number",
+56: REF 'positiveInteger',
+57: DATA 'positiveInteger',
+55: EPSILON
+50: CHOICE
+51: REF 'office-event-listeners',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'draw-glue-point',
+51: EPSILON
+50: CHOICE
+51: ONEOREMORE
+52: REF 'shape',
+53: CHOICE
+54: REF 'draw-rect',
+54: REF 'draw-line',
+54: REF 'draw-polyline',
+54: REF 'draw-polygon',
+54: REF 'draw-regular-polygon',
+54: REF 'draw-path',
+54: REF 'draw-circle',
+54: REF 'draw-ellipse',
+54: REF 'draw-g',
+54: REF 'draw-page-thumbnail',
+55: ELEMENT "draw:page-thumbnail",
+56: SEQUENCE
+57: REF 'draw-page-thumbnail-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:page-number",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+59: EPSILON
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-size-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:width",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:height",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+57: REF 'presentation-shape-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "presentation:class",
+61: REF 'presentation-classes',
+62: CHOICE
+63: VALUE 'title',
+63: VALUE 'outline',
+63: VALUE 'subtitle',
+63: VALUE 'text',
+63: VALUE 'graphic',
+63: VALUE 'object',
+63: VALUE 'chart',
+63: VALUE 'table',
+63: VALUE 'orgchart',
+63: VALUE 'page',
+63: VALUE 'notes',
+63: VALUE 'handout',
+63: VALUE 'header',
+63: VALUE 'footer',
+63: VALUE 'date-time',
+63: VALUE 'page-number',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "presentation:placeholder",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "presentation:user-transformed",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+57: REF 'common-draw-shape-with-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-z-index-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:z-index",
+62: REF 'nonNegativeInteger',
+63: DATA 'nonNegativeInteger',
+61: EPSILON
+59: REF 'common-draw-id-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:id",
+62: REF 'ID',
+63: DATA 'ID',
+61: EPSILON
+59: REF 'common-draw-layer-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:layer",
+62: DATA 'string',
+61: EPSILON
+59: REF 'common-draw-style-name-attlist',
+60: CHOICE
+61: SEQUENCE
+62: CHOICE
+63: ATTRIBUTE "draw:style-name",
+64: REF 'styleNameRef',
+65: CHOICE
+66: DATA 'NCName',
+66: EPSILON
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "draw:class-names",
+64: REF 'styleNameRefs',
+65: LIST
+66: CHOICE
+67: ONEOREMORE
+68: DATA 'NCName',
+67: EPSILON
+63: EPSILON
+61: SEQUENCE
+62: CHOICE
+63: ATTRIBUTE "presentation:style-name",
+64: REF 'styleNameRef',
+65: CHOICE
+66: DATA 'NCName',
+66: EPSILON
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "presentation:class-names",
+64: REF 'styleNameRefs',
+65: LIST
+66: CHOICE
+67: ONEOREMORE
+68: DATA 'NCName',
+67: EPSILON
+63: EPSILON
+59: REF 'common-draw-transform-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:transform",
+62: REF 'string',
+63: DATA 'string',
+61: EPSILON
+59: REF 'common-draw-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:name",
+62: REF 'string',
+63: DATA 'string',
+61: EPSILON
+59: REF 'common-text-spreadsheet-shape-attlist',
+60: INTERLEAVE
+61: SEQUENCE
+62: CHOICE
+63: ATTRIBUTE "table:end-cell-address",
+64: REF 'cellAddress',
+65: DATA 'string',
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "table:end-x",
+64: REF 'coordinate',
+65: REF 'length',
+66: DATA 'string',
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "table:end-y",
+64: REF 'coordinate',
+65: REF 'length',
+66: DATA 'string',
+63: EPSILON
+61: CHOICE
+62: ATTRIBUTE "table:table-background",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+62: EPSILON
+61: REF 'common-text-anchor-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "text:anchor-type",
+65: CHOICE
+66: VALUE 'page',
+66: VALUE 'frame',
+66: VALUE 'paragraph',
+66: VALUE 'char',
+66: VALUE 'as-char',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "text:anchor-page-number",
+65: REF 'positiveInteger',
+66: DATA 'positiveInteger',
+64: EPSILON
+54: REF 'draw-frame',
+55: ELEMENT "draw:frame",
+56: SEQUENCE
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:id",
+64: REF 'ID',
+65: DATA 'ID',
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "table:end-cell-address",
+66: REF 'cellAddress',
+67: DATA 'string',
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "table:end-x",
+66: REF 'coordinate',
+67: REF 'length',
+68: DATA 'string',
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "table:end-y",
+66: REF 'coordinate',
+67: REF 'length',
+68: DATA 'string',
+65: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-rel-size-attlist',
+58: SEQUENCE
+59: REF 'common-draw-size-attlist',
+60: SEQUENCE
+61: CHOICE
+62: ATTRIBUTE "svg:width",
+63: REF 'length',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "svg:height",
+63: REF 'length',
+64: DATA 'string',
+62: EPSILON
+59: CHOICE
+60: ATTRIBUTE "style:rel-width",
+61: CHOICE
+62: REF 'percent',
+63: DATA 'string',
+62: VALUE 'scale',
+62: VALUE 'scale-min',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "style:rel-height",
+61: CHOICE
+62: REF 'percent',
+63: DATA 'string',
+62: VALUE 'scale',
+62: VALUE 'scale-min',
+60: EPSILON
+57: REF 'presentation-shape-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "presentation:class",
+61: REF 'presentation-classes',
+62: CHOICE
+63: VALUE 'title',
+63: VALUE 'outline',
+63: VALUE 'subtitle',
+63: VALUE 'text',
+63: VALUE 'graphic',
+63: VALUE 'object',
+63: VALUE 'chart',
+63: VALUE 'table',
+63: VALUE 'orgchart',
+63: VALUE 'page',
+63: VALUE 'notes',
+63: VALUE 'handout',
+63: VALUE 'header',
+63: VALUE 'footer',
+63: VALUE 'date-time',
+63: VALUE 'page-number',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "presentation:placeholder",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "presentation:user-transformed",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+57: REF 'draw-frame-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:copy-of",
+60: REF 'string',
+61: DATA 'string',
+59: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: CHOICE
+60: REF 'draw-text-box',
+61: ELEMENT "draw:text-box",
+62: SEQUENCE
+63: REF 'draw-text-box-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "draw:chain-next-name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "draw:corner-radius",
+67: REF 'nonNegativeLength',
+68: DATA 'string',
+66: EPSILON
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "fo:min-height",
+68: CHOICE
+69: REF 'length',
+70: DATA 'string',
+69: REF 'percent',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "fo:min-width",
+68: CHOICE
+69: REF 'length',
+70: DATA 'string',
+69: REF 'percent',
+70: DATA 'string',
+67: EPSILON
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "fo:max-height",
+68: CHOICE
+69: REF 'length',
+70: DATA 'string',
+69: REF 'percent',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "fo:max-width",
+68: CHOICE
+69: REF 'length',
+70: DATA 'string',
+69: REF 'percent',
+70: DATA 'string',
+67: EPSILON
+63: CHOICE
+64: ONEOREMORE
+65: REF 'text-content',
+66: CHOICE
+67: REF 'text-h',
+67: REF 'text-p',
+67: REF 'text-list',
+67: REF 'text-numbered-paragraph',
+67: REF 'table-table',
+67: REF 'draw-a',
+68: ELEMENT "draw:a",
+69: SEQUENCE
+70: REF 'draw-a-attlist',
+71: INTERLEAVE
+72: SEQUENCE
+73: ATTRIBUTE "xlink:href",
+74: REF 'anyURI',
+75: DATA 'anyURI',
+73: CHOICE
+74: ATTRIBUTE "xlink:type",
+75: VALUE 'simple',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "xlink:actuate",
+75: VALUE 'onRequest',
+74: EPSILON
+72: SEQUENCE
+73: CHOICE
+74: ATTRIBUTE "office:target-frame-name",
+75: REF 'targetFrameName',
+76: CHOICE
+77: VALUE '_self',
+77: VALUE '_blank',
+77: VALUE '_parent',
+77: VALUE '_top',
+77: REF 'string',
+78: DATA 'string',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "xlink:show",
+75: CHOICE
+76: VALUE 'new',
+76: VALUE 'replace',
+74: EPSILON
+72: CHOICE
+73: ATTRIBUTE "office:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "office:server-map",
+74: REF 'boolean',
+75: CHOICE
+76: VALUE 'true',
+76: VALUE 'false',
+73: EPSILON
+70: REF 'draw-frame',
+67: REF 'text-section',
+68: ELEMENT "text:section",
+69: SEQUENCE
+70: REF 'text-section-attr',
+71: INTERLEAVE
+72: REF 'sectionAttr',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "text:style-name",
+76: REF 'styleNameRef',
+77: CHOICE
+78: DATA 'NCName',
+78: EPSILON
+75: EPSILON
+74: ATTRIBUTE "text:name",
+75: REF 'string',
+76: DATA 'string',
+74: CHOICE
+75: ATTRIBUTE "text:protected",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "text:protection-key",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:display",
+74: CHOICE
+75: VALUE 'true',
+75: VALUE 'none',
+73: SEQUENCE
+74: ATTRIBUTE "text:display",
+75: VALUE 'condition',
+74: ATTRIBUTE "text:condition",
+75: REF 'string',
+76: DATA 'string',
+73: EPSILON
+70: CHOICE
+71: REF 'text-section-source',
+72: ELEMENT "text:section-source",
+73: REF 'text-section-source-attr',
+74: INTERLEAVE
+75: CHOICE
+76: SEQUENCE
+77: ATTRIBUTE "xlink:href",
+78: REF 'anyURI',
+79: DATA 'anyURI',
+77: CHOICE
+78: ATTRIBUTE "xlink:type",
+79: VALUE 'simple',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "xlink:show",
+79: VALUE 'embed',
+78: EPSILON
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "text:section-name",
+77: REF 'string',
+78: DATA 'string',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "text:filter-name",
+77: REF 'string',
+78: DATA 'string',
+76: EPSILON
+71: REF 'text-section-source-dde',
+72: REF 'office-dde-source',
+71: EPSILON
+70: CHOICE
+71: ONEOREMORE
+72: REF 'text-content',
+73: CHOICE
+74: REF 'text-h',
+74: REF 'text-p',
+74: REF 'text-list',
+74: REF 'text-numbered-paragraph',
+74: REF 'table-table',
+74: REF 'draw-a',
+74: REF 'text-section',
+74: REF 'text-table-of-content',
+75: ELEMENT "text:table-of-content",
+76: SEQUENCE
+77: REF 'sectionAttr',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "text:style-name",
+81: REF 'styleNameRef',
+82: CHOICE
+83: DATA 'NCName',
+83: EPSILON
+80: EPSILON
+79: ATTRIBUTE "text:name",
+80: REF 'string',
+81: DATA 'string',
+79: CHOICE
+80: ATTRIBUTE "text:protected",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "text:protection-key",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+77: REF 'text-table-of-content-source',
+78: ELEMENT "text:table-of-content-source",
+79: SEQUENCE
+80: REF 'text-table-of-content-source-attlist',
+81: INTERLEAVE
+82: CHOICE
+83: ATTRIBUTE "text:outline-level",
+84: REF 'positiveInteger',
+85: DATA 'positiveInteger',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "text:use-outline-level",
+84: REF 'boolean',
+85: CHOICE
+86: VALUE 'true',
+86: VALUE 'false',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "text:use-index-marks",
+84: REF 'boolean',
+85: CHOICE
+86: VALUE 'true',
+86: VALUE 'false',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "text:use-index-source-styles",
+84: REF 'boolean',
+85: CHOICE
+86: VALUE 'true',
+86: VALUE 'false',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "text:index-scope",
+84: CHOICE
+85: VALUE 'document',
+85: VALUE 'chapter',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "text:relative-tab-stop-position",
+84: REF 'boolean',
+85: CHOICE
+86: VALUE 'true',
+86: VALUE 'false',
+83: EPSILON
+80: CHOICE
+81: REF 'text-index-title-template',
+82: ELEMENT "text:index-title-template",
+83: SEQUENCE
+84: CHOICE
+85: ATTRIBUTE "text:style-name",
+86: REF 'styleNameRef',
+87: CHOICE
+88: DATA 'NCName',
+88: EPSILON
+85: EPSILON
+84: STRING
+81: EPSILON
+80: CHOICE
+81: ONEOREMORE
+82: REF 'text-table-of-content-entry-template',
+83: ELEMENT "text:table-of-content-entry-template",
+84: SEQUENCE
+85: REF 'text-table-of-content-entry-template-attlist',
+86: INTERLEAVE
+87: ATTRIBUTE "text:outline-level",
+88: REF 'positiveInteger',
+89: DATA 'positiveInteger',
+87: ATTRIBUTE "text:style-name",
+88: REF 'styleNameRef',
+89: CHOICE
+90: DATA 'NCName',
+90: EPSILON
+85: CHOICE
+86: ONEOREMORE
+87: REF 'text-table-of-content-children',
+88: CHOICE
+89: REF 'text-index-entry-chapter',
+90: ELEMENT "text:index-entry-chapter",
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "text:style-name",
+94: REF 'styleNameRef',
+95: CHOICE
+96: DATA 'NCName',
+96: EPSILON
+93: EPSILON
+92: REF 'text-index-entry-chapter-attrs',
+93: CHOICE
+94: ATTRIBUTE "text:display",
+95: CHOICE
+96: VALUE 'name',
+96: VALUE 'number',
+96: VALUE 'number-and-name',
+94: EPSILON
+89: REF 'text-index-entry-page-number',
+90: ELEMENT "text:index-entry-page-number",
+91: CHOICE
+92: ATTRIBUTE "text:style-name",
+93: REF 'styleNameRef',
+94: CHOICE
+95: DATA 'NCName',
+95: EPSILON
+92: EPSILON
+89: REF 'text-index-entry-text',
+90: ELEMENT "text:index-entry-text",
+91: CHOICE
+92: ATTRIBUTE "text:style-name",
+93: REF 'styleNameRef',
+94: CHOICE
+95: DATA 'NCName',
+95: EPSILON
+92: EPSILON
+89: REF 'text-index-entry-span',
+90: ELEMENT "text:index-entry-span",
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "text:style-name",
+94: REF 'styleNameRef',
+95: CHOICE
+96: DATA 'NCName',
+96: EPSILON
+93: EPSILON
+92: STRING
+89: REF 'text-index-entry-tab-stop',
+90: ELEMENT "text:index-entry-tab-stop",
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "text:style-name",
+94: REF 'styleNameRef',
+95: CHOICE
+96: DATA 'NCName',
+96: EPSILON
+93: EPSILON
+92: REF 'text-index-entry-tab-stop-attrs',
+93: INTERLEAVE
+94: CHOICE
+95: ATTRIBUTE "style:leader-char",
+96: REF 'character',
+97: DATA 'string',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "style:type",
+96: VALUE 'right',
+95: SEQUENCE
+96: ATTRIBUTE "style:type",
+97: VALUE 'left',
+96: ATTRIBUTE "style:position",
+97: REF 'length',
+98: DATA 'string',
+89: REF 'text-index-entry-link-start',
+90: ELEMENT "text:index-entry-link-start",
+91: CHOICE
+92: ATTRIBUTE "text:style-name",
+93: REF 'styleNameRef',
+94: CHOICE
+95: DATA 'NCName',
+95: EPSILON
+92: EPSILON
+89: REF 'text-index-entry-link-end',
+90: ELEMENT "text:index-entry-link-end",
+91: CHOICE
+92: ATTRIBUTE "text:style-name",
+93: REF 'styleNameRef',
+94: CHOICE
+95: DATA 'NCName',
+95: EPSILON
+92: EPSILON
+86: EPSILON
+81: EPSILON
+80: CHOICE
+81: ONEOREMORE
+82: REF 'text-index-source-styles',
+83: ELEMENT "text:index-source-styles",
+84: SEQUENCE
+85: ATTRIBUTE "text:outline-level",
+86: REF 'positiveInteger',
+87: DATA 'positiveInteger',
+85: CHOICE
+86: ONEOREMORE
+87: REF 'text-index-source-style',
+88: ELEMENT "text:index-source-style",
+89: ATTRIBUTE "text:style-name",
+90: REF 'styleName',
+91: DATA 'NCName',
+86: EPSILON
+81: EPSILON
+77: REF 'text-index-body',
+78: ELEMENT "text:index-body",
+79: CHOICE
+80: ONEOREMORE
+81: REF 'index-content-main',
+82: CHOICE
+83: REF 'text-content',
+84: CHOICE
+85: REF 'text-h',
+85: REF 'text-p',
+85: REF 'text-list',
+85: REF 'text-numbered-paragraph',
+85: REF 'table-table',
+85: REF 'draw-a',
+85: REF 'text-section',
+85: REF 'text-table-of-content',
+85: REF 'text-illustration-index',
+86: ELEMENT "text:illustration-index",
+87: SEQUENCE
+88: REF 'sectionAttr',
+89: INTERLEAVE
+90: CHOICE
+91: ATTRIBUTE "text:style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+90: ATTRIBUTE "text:name",
+91: REF 'string',
+92: DATA 'string',
+90: CHOICE
+91: ATTRIBUTE "text:protected",
+92: REF 'boolean',
+93: CHOICE
+94: VALUE 'true',
+94: VALUE 'false',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "text:protection-key",
+92: REF 'string',
+93: DATA 'string',
+91: EPSILON
+88: REF 'text-illustration-index-source',
+89: ELEMENT "text:illustration-index-source",
+90: SEQUENCE
+91: REF 'text-illustration-index-source-attrs',
+92: INTERLEAVE
+93: REF 'text-index-scope-attr',
+94: CHOICE
+95: ATTRIBUTE "text:index-scope",
+96: CHOICE
+97: VALUE 'document',
+97: VALUE 'chapter',
+95: EPSILON
+93: REF 'text-relative-tab-stop-position-attr',
+94: CHOICE
+95: ATTRIBUTE "text:relative-tab-stop-position",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-caption",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:caption-sequence-name",
+95: REF 'string',
+96: DATA 'string',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:caption-sequence-format",
+95: CHOICE
+96: VALUE 'text',
+96: VALUE 'category-and-value',
+96: VALUE 'caption',
+94: EPSILON
+91: CHOICE
+92: REF 'text-index-title-template',
+92: EPSILON
+91: CHOICE
+92: REF 'text-illustration-index-entry-template',
+93: ELEMENT "text:illustration-index-entry-template",
+94: REF 'text-illustration-index-entry-content',
+95: SEQUENCE
+96: REF 'text-illustration-index-entry-template-attrs',
+97: ATTRIBUTE "text:style-name",
+98: REF 'styleNameRef',
+99: CHOICE
+100: DATA 'NCName',
+100: EPSILON
+96: CHOICE
+97: ONEOREMORE
+98: CHOICE
+99: REF 'text-index-entry-page-number',
+99: REF 'text-index-entry-text',
+99: REF 'text-index-entry-span',
+99: REF 'text-index-entry-tab-stop',
+97: EPSILON
+92: EPSILON
+88: REF 'text-index-body',
+85: REF 'text-table-index',
+86: ELEMENT "text:table-index",
+87: SEQUENCE
+88: REF 'sectionAttr',
+89: INTERLEAVE
+90: CHOICE
+91: ATTRIBUTE "text:style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+90: ATTRIBUTE "text:name",
+91: REF 'string',
+92: DATA 'string',
+90: CHOICE
+91: ATTRIBUTE "text:protected",
+92: REF 'boolean',
+93: CHOICE
+94: VALUE 'true',
+94: VALUE 'false',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "text:protection-key",
+92: REF 'string',
+93: DATA 'string',
+91: EPSILON
+88: REF 'text-table-index-source',
+89: ELEMENT "text:table-index-source",
+90: SEQUENCE
+91: REF 'text-illustration-index-source-attrs',
+92: INTERLEAVE
+93: REF 'text-index-scope-attr',
+94: CHOICE
+95: ATTRIBUTE "text:index-scope",
+96: CHOICE
+97: VALUE 'document',
+97: VALUE 'chapter',
+95: EPSILON
+93: REF 'text-relative-tab-stop-position-attr',
+94: CHOICE
+95: ATTRIBUTE "text:relative-tab-stop-position",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-caption",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:caption-sequence-name",
+95: REF 'string',
+96: DATA 'string',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:caption-sequence-format",
+95: CHOICE
+96: VALUE 'text',
+96: VALUE 'category-and-value',
+96: VALUE 'caption',
+94: EPSILON
+91: CHOICE
+92: REF 'text-index-title-template',
+92: EPSILON
+91: CHOICE
+92: REF 'text-table-index-entry-template',
+93: ELEMENT "text:table-index-entry-template",
+94: REF 'text-illustration-index-entry-content',
+95: SEQUENCE
+96: REF 'text-illustration-index-entry-template-attrs',
+97: ATTRIBUTE "text:style-name",
+98: REF 'styleNameRef',
+99: CHOICE
+100: DATA 'NCName',
+100: EPSILON
+96: CHOICE
+97: ONEOREMORE
+98: CHOICE
+99: REF 'text-index-entry-page-number',
+99: REF 'text-index-entry-text',
+99: REF 'text-index-entry-span',
+99: REF 'text-index-entry-tab-stop',
+97: EPSILON
+92: EPSILON
+88: REF 'text-index-body',
+85: REF 'text-object-index',
+86: ELEMENT "text:object-index",
+87: SEQUENCE
+88: REF 'sectionAttr',
+89: INTERLEAVE
+90: CHOICE
+91: ATTRIBUTE "text:style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+90: ATTRIBUTE "text:name",
+91: REF 'string',
+92: DATA 'string',
+90: CHOICE
+91: ATTRIBUTE "text:protected",
+92: REF 'boolean',
+93: CHOICE
+94: VALUE 'true',
+94: VALUE 'false',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "text:protection-key",
+92: REF 'string',
+93: DATA 'string',
+91: EPSILON
+88: REF 'text-object-index-source',
+89: ELEMENT "text:object-index-source",
+90: SEQUENCE
+91: REF 'text-object-index-source-attrs',
+92: INTERLEAVE
+93: REF 'text-index-scope-attr',
+94: CHOICE
+95: ATTRIBUTE "text:index-scope",
+96: CHOICE
+97: VALUE 'document',
+97: VALUE 'chapter',
+95: EPSILON
+93: REF 'text-relative-tab-stop-position-attr',
+94: CHOICE
+95: ATTRIBUTE "text:relative-tab-stop-position",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-spreadsheet-objects",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-math-objects",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-draw-objects",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-chart-objects",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-other-objects",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+91: CHOICE
+92: REF 'text-index-title-template',
+92: EPSILON
+91: CHOICE
+92: REF 'text-object-index-entry-template',
+93: ELEMENT "text:object-index-entry-template",
+94: REF 'text-illustration-index-entry-content',
+95: SEQUENCE
+96: REF 'text-illustration-index-entry-template-attrs',
+97: ATTRIBUTE "text:style-name",
+98: REF 'styleNameRef',
+99: CHOICE
+100: DATA 'NCName',
+100: EPSILON
+96: CHOICE
+97: ONEOREMORE
+98: CHOICE
+99: REF 'text-index-entry-page-number',
+99: REF 'text-index-entry-text',
+99: REF 'text-index-entry-span',
+99: REF 'text-index-entry-tab-stop',
+97: EPSILON
+92: EPSILON
+88: REF 'text-index-body',
+85: REF 'text-user-index',
+86: ELEMENT "text:user-index",
+87: SEQUENCE
+88: REF 'sectionAttr',
+89: INTERLEAVE
+90: CHOICE
+91: ATTRIBUTE "text:style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+90: ATTRIBUTE "text:name",
+91: REF 'string',
+92: DATA 'string',
+90: CHOICE
+91: ATTRIBUTE "text:protected",
+92: REF 'boolean',
+93: CHOICE
+94: VALUE 'true',
+94: VALUE 'false',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "text:protection-key",
+92: REF 'string',
+93: DATA 'string',
+91: EPSILON
+88: REF 'text-user-index-source',
+89: ELEMENT "text:user-index-source",
+90: SEQUENCE
+91: REF 'text-user-index-source-attr',
+92: INTERLEAVE
+93: SEQUENCE
+94: REF 'text-index-scope-attr',
+95: CHOICE
+96: ATTRIBUTE "text:index-scope",
+97: CHOICE
+98: VALUE 'document',
+98: VALUE 'chapter',
+96: EPSILON
+94: REF 'text-relative-tab-stop-position-attr',
+95: CHOICE
+96: ATTRIBUTE "text:relative-tab-stop-position",
+97: REF 'boolean',
+98: CHOICE
+99: VALUE 'true',
+99: VALUE 'false',
+96: EPSILON
+94: ATTRIBUTE "text:index-name",
+95: REF 'string',
+96: DATA 'string',
+93: SEQUENCE
+94: CHOICE
+95: ATTRIBUTE "text:use-index-marks",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:use-graphics",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:use-tables",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:use-floating-frames",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:use-objects",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:copy-outline-levels",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+91: CHOICE
+92: REF 'text-index-title-template',
+92: EPSILON
+91: CHOICE
+92: ONEOREMORE
+93: REF 'text-user-index-entry-template',
+94: ELEMENT "text:user-index-entry-template",
+95: SEQUENCE
+96: REF 'text-user-index-entry-template-attrs',
+97: INTERLEAVE
+98: ATTRIBUTE "text:outline-level",
+99: REF 'positiveInteger',
+100: DATA 'positiveInteger',
+98: ATTRIBUTE "text:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+96: CHOICE
+97: ONEOREMORE
+98: CHOICE
+99: REF 'text-index-entry-chapter',
+99: REF 'text-index-entry-page-number',
+99: REF 'text-index-entry-text',
+99: REF 'text-index-entry-span',
+99: REF 'text-index-entry-tab-stop',
+97: EPSILON
+92: EPSILON
+91: CHOICE
+92: ONEOREMORE
+93: REF 'text-index-source-styles',
+92: EPSILON
+88: REF 'text-index-body',
+85: REF 'text-alphabetical-index',
+86: ELEMENT "text:alphabetical-index",
+87: SEQUENCE
+88: REF 'sectionAttr',
+89: INTERLEAVE
+90: CHOICE
+91: ATTRIBUTE "text:style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+90: ATTRIBUTE "text:name",
+91: REF 'string',
+92: DATA 'string',
+90: CHOICE
+91: ATTRIBUTE "text:protected",
+92: REF 'boolean',
+93: CHOICE
+94: VALUE 'true',
+94: VALUE 'false',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "text:protection-key",
+92: REF 'string',
+93: DATA 'string',
+91: EPSILON
+88: REF 'text-alphabetical-index-source',
+89: ELEMENT "text:alphabetical-index-source",
+90: SEQUENCE
+91: REF 'text-alphabetical-index-source-attrs',
+92: INTERLEAVE
+93: SEQUENCE
+94: REF 'text-index-scope-attr',
+95: CHOICE
+96: ATTRIBUTE "text:index-scope",
+97: CHOICE
+98: VALUE 'document',
+98: VALUE 'chapter',
+96: EPSILON
+94: REF 'text-relative-tab-stop-position-attr',
+95: CHOICE
+96: ATTRIBUTE "text:relative-tab-stop-position",
+97: REF 'boolean',
+98: CHOICE
+99: VALUE 'true',
+99: VALUE 'false',
+96: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:ignore-case",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:main-entry-style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:alphabetical-separators",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: SEQUENCE
+94: CHOICE
+95: ATTRIBUTE "text:combine-entries",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:combine-entries-with-dash",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:combine-entries-with-pp",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:use-keys-as-entries",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:capitalize-entries",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:comma-separated",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "fo:language",
+95: REF 'languageCode',
+96: DATA 'token',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "fo:country",
+95: REF 'countryCode',
+96: DATA 'token',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:sort-algorithm",
+95: REF 'string',
+96: DATA 'string',
+94: EPSILON
+91: CHOICE
+92: REF 'text-index-title-template',
+92: EPSILON
+91: CHOICE
+92: ONEOREMORE
+93: REF 'text-alphabetical-index-entry-template',
+94: ELEMENT "text:alphabetical-index-entry-template",
+95: SEQUENCE
+96: REF 'text-alphabetical-index-entry-template-attrs',
+97: INTERLEAVE
+98: ATTRIBUTE "text:outline-level",
+99: CHOICE
+100: VALUE '1',
+100: VALUE '2',
+100: VALUE '3',
+100: VALUE 'separator',
+98: ATTRIBUTE "text:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+96: CHOICE
+97: ONEOREMORE
+98: CHOICE
+99: REF 'text-index-entry-chapter',
+99: REF 'text-index-entry-page-number',
+99: REF 'text-index-entry-text',
+99: REF 'text-index-entry-span',
+99: REF 'text-index-entry-tab-stop',
+97: EPSILON
+92: EPSILON
+88: REF 'text-index-body',
+85: REF 'text-bibliography',
+86: ELEMENT "text:bibliography",
+87: SEQUENCE
+88: REF 'sectionAttr',
+89: INTERLEAVE
+90: CHOICE
+91: ATTRIBUTE "text:style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+90: ATTRIBUTE "text:name",
+91: REF 'string',
+92: DATA 'string',
+90: CHOICE
+91: ATTRIBUTE "text:protected",
+92: REF 'boolean',
+93: CHOICE
+94: VALUE 'true',
+94: VALUE 'false',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "text:protection-key",
+92: REF 'string',
+93: DATA 'string',
+91: EPSILON
+88: REF 'text-bibliography-source',
+89: ELEMENT "text:bibliography-source",
+90: SEQUENCE
+91: CHOICE
+92: REF 'text-index-title-template',
+92: EPSILON
+91: CHOICE
+92: ONEOREMORE
+93: REF 'text-bibliography-entry-template',
+94: ELEMENT "text:bibliography-entry-template",
+95: SEQUENCE
+96: REF 'text-bibliography-entry-template-attrs',
+97: INTERLEAVE
+98: ATTRIBUTE "text:bibliography-type",
+99: REF 'text-bibliography-types',
+100: CHOICE
+101: VALUE 'article',
+101: VALUE 'book',
+101: VALUE 'booklet',
+101: VALUE 'conference',
+101: VALUE 'custom1',
+101: VALUE 'custom2',
+101: VALUE 'custom3',
+101: VALUE 'custom4',
+101: VALUE 'custom5',
+101: VALUE 'email',
+101: VALUE 'inbook',
+101: VALUE 'incollection',
+101: VALUE 'inproceedings',
+101: VALUE 'journal',
+101: VALUE 'manual',
+101: VALUE 'mastersthesis',
+101: VALUE 'misc',
+101: VALUE 'phdthesis',
+101: VALUE 'proceedings',
+101: VALUE 'techreport',
+101: VALUE 'unpublished',
+101: VALUE 'www',
+98: ATTRIBUTE "text:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+96: CHOICE
+97: ONEOREMORE
+98: CHOICE
+99: REF 'text-index-entry-span',
+99: REF 'text-index-entry-tab-stop',
+99: REF 'text-index-entry-bibliography',
+100: ELEMENT "text:index-entry-bibliography",
+101: REF 'text-index-entry-bibliography-attrs',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "text:style-name",
+105: REF 'styleNameRef',
+106: CHOICE
+107: DATA 'NCName',
+107: EPSILON
+104: EPSILON
+103: ATTRIBUTE "text:bibliography-data-field",
+104: CHOICE
+105: VALUE 'address',
+105: VALUE 'annote',
+105: VALUE 'author',
+105: VALUE 'bibliography-type',
+105: VALUE 'booktitle',
+105: VALUE 'chapter',
+105: VALUE 'custom1',
+105: VALUE 'custom2',
+105: VALUE 'custom3',
+105: VALUE 'custom4',
+105: VALUE 'custom5',
+105: VALUE 'edition',
+105: VALUE 'editor',
+105: VALUE 'howpublished',
+105: VALUE 'identifier',
+105: VALUE 'institution',
+105: VALUE 'isbn',
+105: VALUE 'issn',
+105: VALUE 'journal',
+105: VALUE 'month',
+105: VALUE 'note',
+105: VALUE 'number',
+105: VALUE 'organizations',
+105: VALUE 'pages',
+105: VALUE 'publisher',
+105: VALUE 'report-type',
+105: VALUE 'school',
+105: VALUE 'series',
+105: VALUE 'title',
+105: VALUE 'url',
+105: VALUE 'volume',
+105: VALUE 'year',
+97: EPSILON
+92: EPSILON
+88: REF 'text-index-body',
+85: REF 'shape',
+86: CHOICE
+87: REF 'draw-rect',
+87: REF 'draw-line',
+87: REF 'draw-polyline',
+87: REF 'draw-polygon',
+87: REF 'draw-regular-polygon',
+87: REF 'draw-path',
+87: REF 'draw-circle',
+87: REF 'draw-ellipse',
+87: REF 'draw-g',
+87: REF 'draw-page-thumbnail',
+87: REF 'draw-frame',
+87: REF 'draw-measure',
+88: ELEMENT "draw:measure",
+89: SEQUENCE
+90: REF 'draw-measure-attlist',
+91: INTERLEAVE
+92: SEQUENCE
+93: ATTRIBUTE "svg:x1",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: ATTRIBUTE "svg:y1",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+92: SEQUENCE
+93: ATTRIBUTE "svg:x2",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: ATTRIBUTE "svg:y2",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+90: REF 'common-draw-shape-with-text-and-styles-attlist',
+91: SEQUENCE
+92: REF 'common-draw-shape-with-styles-attlist',
+93: SEQUENCE
+94: REF 'common-draw-z-index-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:z-index",
+97: REF 'nonNegativeInteger',
+98: DATA 'nonNegativeInteger',
+96: EPSILON
+94: REF 'common-draw-id-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:id",
+97: REF 'ID',
+98: DATA 'ID',
+96: EPSILON
+94: REF 'common-draw-layer-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:layer",
+97: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-style-name-attlist',
+95: CHOICE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "presentation:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "presentation:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+94: REF 'common-draw-transform-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:transform",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:name",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-text-spreadsheet-shape-attlist',
+95: INTERLEAVE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "table:end-cell-address",
+99: REF 'cellAddress',
+100: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-x",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-y",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "table:table-background",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: REF 'common-text-anchor-attlist',
+97: INTERLEAVE
+98: CHOICE
+99: ATTRIBUTE "text:anchor-type",
+100: CHOICE
+101: VALUE 'page',
+101: VALUE 'frame',
+101: VALUE 'paragraph',
+101: VALUE 'char',
+101: VALUE 'as-char',
+99: EPSILON
+98: CHOICE
+99: ATTRIBUTE "text:anchor-page-number",
+100: REF 'positiveInteger',
+101: DATA 'positiveInteger',
+99: EPSILON
+92: REF 'common-draw-text-style-name-attlist',
+93: CHOICE
+94: ATTRIBUTE "draw:text-style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+90: CHOICE
+91: REF 'office-event-listeners',
+91: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'draw-glue-point',
+91: EPSILON
+90: REF 'draw-text',
+91: CHOICE
+92: ONEOREMORE
+93: CHOICE
+94: REF 'text-p',
+94: REF 'text-list',
+92: EPSILON
+87: REF 'draw-caption',
+88: ELEMENT "draw:caption",
+89: SEQUENCE
+90: REF 'draw-caption-attlist',
+91: INTERLEAVE
+92: CHOICE
+93: SEQUENCE
+94: ATTRIBUTE "draw:caption-point-x",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+94: ATTRIBUTE "draw:caption-point-y",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:corner-radius",
+94: REF 'nonNegativeLength',
+95: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-position-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:x",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:y",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-size-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:width",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:height",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-shape-with-text-and-styles-attlist',
+91: SEQUENCE
+92: REF 'common-draw-shape-with-styles-attlist',
+93: SEQUENCE
+94: REF 'common-draw-z-index-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:z-index",
+97: REF 'nonNegativeInteger',
+98: DATA 'nonNegativeInteger',
+96: EPSILON
+94: REF 'common-draw-id-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:id",
+97: REF 'ID',
+98: DATA 'ID',
+96: EPSILON
+94: REF 'common-draw-layer-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:layer",
+97: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-style-name-attlist',
+95: CHOICE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "presentation:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "presentation:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+94: REF 'common-draw-transform-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:transform",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:name",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-text-spreadsheet-shape-attlist',
+95: INTERLEAVE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "table:end-cell-address",
+99: REF 'cellAddress',
+100: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-x",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-y",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "table:table-background",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: REF 'common-text-anchor-attlist',
+97: INTERLEAVE
+98: CHOICE
+99: ATTRIBUTE "text:anchor-type",
+100: CHOICE
+101: VALUE 'page',
+101: VALUE 'frame',
+101: VALUE 'paragraph',
+101: VALUE 'char',
+101: VALUE 'as-char',
+99: EPSILON
+98: CHOICE
+99: ATTRIBUTE "text:anchor-page-number",
+100: REF 'positiveInteger',
+101: DATA 'positiveInteger',
+99: EPSILON
+92: REF 'common-draw-text-style-name-attlist',
+93: CHOICE
+94: ATTRIBUTE "draw:text-style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+90: CHOICE
+91: REF 'office-event-listeners',
+91: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'draw-glue-point',
+91: EPSILON
+90: REF 'draw-text',
+91: CHOICE
+92: ONEOREMORE
+93: CHOICE
+94: REF 'text-p',
+94: REF 'text-list',
+92: EPSILON
+87: REF 'draw-connector',
+88: ELEMENT "draw:connector",
+89: SEQUENCE
+90: REF 'draw-connector-attlist',
+91: INTERLEAVE
+92: CHOICE
+93: ATTRIBUTE "draw:type",
+94: CHOICE
+95: VALUE 'standard',
+95: VALUE 'lines',
+95: VALUE 'line',
+95: VALUE 'curve',
+93: EPSILON
+92: CHOICE
+93: SEQUENCE
+94: ATTRIBUTE "svg:x1",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+94: ATTRIBUTE "svg:y1",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:start-shape",
+94: REF 'IDREF',
+95: DATA 'IDREF',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:start-glue-point",
+94: REF 'nonNegativeInteger',
+95: DATA 'nonNegativeInteger',
+93: EPSILON
+92: CHOICE
+93: SEQUENCE
+94: ATTRIBUTE "svg:x2",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+94: ATTRIBUTE "svg:y2",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:end-shape",
+94: REF 'IDREF',
+95: DATA 'IDREF',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:end-glue-point",
+94: REF 'nonNegativeInteger',
+95: DATA 'nonNegativeInteger',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:line-skew",
+94: LIST
+95: SEQUENCE
+96: REF 'length',
+97: DATA 'string',
+96: CHOICE
+97: SEQUENCE
+98: REF 'length',
+99: DATA 'string',
+98: CHOICE
+99: REF 'length',
+100: DATA 'string',
+99: EPSILON
+97: EPSILON
+93: EPSILON
+90: REF 'common-draw-shape-with-text-and-styles-attlist',
+91: SEQUENCE
+92: REF 'common-draw-shape-with-styles-attlist',
+93: SEQUENCE
+94: REF 'common-draw-z-index-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:z-index",
+97: REF 'nonNegativeInteger',
+98: DATA 'nonNegativeInteger',
+96: EPSILON
+94: REF 'common-draw-id-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:id",
+97: REF 'ID',
+98: DATA 'ID',
+96: EPSILON
+94: REF 'common-draw-layer-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:layer",
+97: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-style-name-attlist',
+95: CHOICE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "presentation:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "presentation:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+94: REF 'common-draw-transform-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:transform",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:name",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-text-spreadsheet-shape-attlist',
+95: INTERLEAVE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "table:end-cell-address",
+99: REF 'cellAddress',
+100: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-x",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-y",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "table:table-background",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: REF 'common-text-anchor-attlist',
+97: INTERLEAVE
+98: CHOICE
+99: ATTRIBUTE "text:anchor-type",
+100: CHOICE
+101: VALUE 'page',
+101: VALUE 'frame',
+101: VALUE 'paragraph',
+101: VALUE 'char',
+101: VALUE 'as-char',
+99: EPSILON
+98: CHOICE
+99: ATTRIBUTE "text:anchor-page-number",
+100: REF 'positiveInteger',
+101: DATA 'positiveInteger',
+99: EPSILON
+92: REF 'common-draw-text-style-name-attlist',
+93: CHOICE
+94: ATTRIBUTE "draw:text-style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+90: CHOICE
+91: REF 'office-event-listeners',
+91: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'draw-glue-point',
+91: EPSILON
+90: REF 'draw-text',
+91: CHOICE
+92: ONEOREMORE
+93: CHOICE
+94: REF 'text-p',
+94: REF 'text-list',
+92: EPSILON
+87: REF 'draw-control',
+88: ELEMENT "draw:control",
+89: SEQUENCE
+90: REF 'draw-control-attlist',
+91: ATTRIBUTE "draw:control",
+92: REF 'IDREF',
+93: DATA 'IDREF',
+90: REF 'common-draw-position-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:x",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:y",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-size-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:width",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:height",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-shape-with-text-and-styles-attlist',
+91: SEQUENCE
+92: REF 'common-draw-shape-with-styles-attlist',
+93: SEQUENCE
+94: REF 'common-draw-z-index-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:z-index",
+97: REF 'nonNegativeInteger',
+98: DATA 'nonNegativeInteger',
+96: EPSILON
+94: REF 'common-draw-id-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:id",
+97: REF 'ID',
+98: DATA 'ID',
+96: EPSILON
+94: REF 'common-draw-layer-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:layer",
+97: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-style-name-attlist',
+95: CHOICE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "presentation:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "presentation:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+94: REF 'common-draw-transform-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:transform",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:name",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-text-spreadsheet-shape-attlist',
+95: INTERLEAVE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "table:end-cell-address",
+99: REF 'cellAddress',
+100: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-x",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-y",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "table:table-background",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: REF 'common-text-anchor-attlist',
+97: INTERLEAVE
+98: CHOICE
+99: ATTRIBUTE "text:anchor-type",
+100: CHOICE
+101: VALUE 'page',
+101: VALUE 'frame',
+101: VALUE 'paragraph',
+101: VALUE 'char',
+101: VALUE 'as-char',
+99: EPSILON
+98: CHOICE
+99: ATTRIBUTE "text:anchor-page-number",
+100: REF 'positiveInteger',
+101: DATA 'positiveInteger',
+99: EPSILON
+92: REF 'common-draw-text-style-name-attlist',
+93: CHOICE
+94: ATTRIBUTE "draw:text-style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'draw-glue-point',
+91: EPSILON
+87: REF 'dr3d-scene',
+88: ELEMENT "dr3d:scene",
+89: SEQUENCE
+90: REF 'dr3d-scene-attlist',
+91: INTERLEAVE
+92: SEQUENCE
+93: CHOICE
+94: ATTRIBUTE "dr3d:vrp",
+95: REF 'vector3D',
+96: DATA 'string',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "dr3d:vpn",
+95: REF 'vector3D',
+96: DATA 'string',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "dr3d:vup",
+95: REF 'vector3D',
+96: DATA 'string',
+94: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:projection",
+94: CHOICE
+95: VALUE 'parallel',
+95: VALUE 'perspective',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:distance",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:focal-length",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:shadow-slant",
+94: REF 'nonNegativeInteger',
+95: DATA 'nonNegativeInteger',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:shade-mode",
+94: CHOICE
+95: VALUE 'flat',
+95: VALUE 'phong',
+95: VALUE 'gouraud',
+95: VALUE 'draft',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:ambient-color",
+94: REF 'color',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "dr3d:lighting-mode",
+94: REF 'boolean',
+95: CHOICE
+96: VALUE 'true',
+96: VALUE 'false',
+93: EPSILON
+90: REF 'common-draw-position-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:x",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:y",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-size-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:width",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:height",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-style-name-attlist',
+91: CHOICE
+92: SEQUENCE
+93: CHOICE
+94: ATTRIBUTE "draw:style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "draw:class-names",
+95: REF 'styleNameRefs',
+96: LIST
+97: CHOICE
+98: ONEOREMORE
+99: DATA 'NCName',
+98: EPSILON
+94: EPSILON
+92: SEQUENCE
+93: CHOICE
+94: ATTRIBUTE "presentation:style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "presentation:class-names",
+95: REF 'styleNameRefs',
+96: LIST
+97: CHOICE
+98: ONEOREMORE
+99: DATA 'NCName',
+98: EPSILON
+94: EPSILON
+90: REF 'common-draw-z-index-attlist',
+91: CHOICE
+92: ATTRIBUTE "draw:z-index",
+93: REF 'nonNegativeInteger',
+94: DATA 'nonNegativeInteger',
+92: EPSILON
+90: REF 'common-draw-id-attlist',
+91: CHOICE
+92: ATTRIBUTE "draw:id",
+93: REF 'ID',
+94: DATA 'ID',
+92: EPSILON
+90: REF 'common-draw-layer-name-attlist',
+91: CHOICE
+92: ATTRIBUTE "draw:layer",
+93: DATA 'string',
+92: EPSILON
+90: REF 'common-text-spreadsheet-shape-attlist',
+91: INTERLEAVE
+92: SEQUENCE
+93: CHOICE
+94: ATTRIBUTE "table:end-cell-address",
+95: REF 'cellAddress',
+96: DATA 'string',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "table:end-x",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "table:end-y",
+95: REF 'coordinate',
+96: REF 'length',
+97: DATA 'string',
+94: EPSILON
+92: CHOICE
+93: ATTRIBUTE "table:table-background",
+94: REF 'boolean',
+95: CHOICE
+96: VALUE 'true',
+96: VALUE 'false',
+93: EPSILON
+92: REF 'common-text-anchor-attlist',
+93: INTERLEAVE
+94: CHOICE
+95: ATTRIBUTE "text:anchor-type",
+96: CHOICE
+97: VALUE 'page',
+97: VALUE 'frame',
+97: VALUE 'paragraph',
+97: VALUE 'char',
+97: VALUE 'as-char',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "text:anchor-page-number",
+96: REF 'positiveInteger',
+97: DATA 'positiveInteger',
+95: EPSILON
+90: REF 'common-dr3d-transform-attlist',
+91: CHOICE
+92: ATTRIBUTE "dr3d:transform",
+93: STRING
+92: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'dr3d-light',
+93: ELEMENT "dr3d:light",
+94: REF 'dr3d-light-attlist',
+95: INTERLEAVE
+96: CHOICE
+97: ATTRIBUTE "dr3d:diffuse-color",
+98: REF 'color',
+99: DATA 'string',
+97: EPSILON
+96: ATTRIBUTE "dr3d:direction",
+97: REF 'vector3D',
+98: DATA 'string',
+96: CHOICE
+97: ATTRIBUTE "dr3d:enabled",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "dr3d:specular",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+91: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'shapes3d',
+93: CHOICE
+94: REF 'dr3d-scene',
+94: REF 'dr3d-extrude',
+95: ELEMENT "dr3d:extrude",
+96: SEQUENCE
+97: REF 'common-draw-path-data-attlist',
+98: ATTRIBUTE "svg:d",
+99: REF 'pathData',
+100: DATA 'string',
+97: REF 'common-draw-viewbox-attlist',
+98: ATTRIBUTE "svg:viewBox",
+99: LIST
+100: SEQUENCE
+101: REF 'integer',
+102: DATA 'integer',
+101: REF 'integer',
+102: DATA 'integer',
+101: REF 'integer',
+102: DATA 'integer',
+101: REF 'integer',
+102: DATA 'integer',
+97: REF 'common-draw-id-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:id",
+100: REF 'ID',
+101: DATA 'ID',
+99: EPSILON
+97: REF 'common-draw-z-index-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:z-index",
+100: REF 'nonNegativeInteger',
+101: DATA 'nonNegativeInteger',
+99: EPSILON
+97: REF 'common-draw-layer-name-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:layer",
+100: DATA 'string',
+99: EPSILON
+97: REF 'common-draw-style-name-attlist',
+98: CHOICE
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "draw:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "presentation:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "presentation:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+97: REF 'common-dr3d-transform-attlist',
+98: CHOICE
+99: ATTRIBUTE "dr3d:transform",
+100: STRING
+99: EPSILON
+94: REF 'dr3d-sphere',
+95: ELEMENT "dr3d:sphere",
+96: SEQUENCE
+97: REF 'dr3d-sphere-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "dr3d:center",
+101: REF 'vector3D',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "dr3d:size",
+101: REF 'vector3D',
+102: DATA 'string',
+100: EPSILON
+97: REF 'common-draw-z-index-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:z-index",
+100: REF 'nonNegativeInteger',
+101: DATA 'nonNegativeInteger',
+99: EPSILON
+97: REF 'common-draw-id-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:id",
+100: REF 'ID',
+101: DATA 'ID',
+99: EPSILON
+97: REF 'common-draw-layer-name-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:layer",
+100: DATA 'string',
+99: EPSILON
+97: REF 'common-draw-style-name-attlist',
+98: CHOICE
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "draw:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "presentation:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "presentation:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+97: REF 'common-dr3d-transform-attlist',
+98: CHOICE
+99: ATTRIBUTE "dr3d:transform",
+100: STRING
+99: EPSILON
+94: REF 'dr3d-rotate',
+95: ELEMENT "dr3d:rotate",
+96: SEQUENCE
+97: REF 'common-draw-viewbox-attlist',
+98: ATTRIBUTE "svg:viewBox",
+99: LIST
+100: SEQUENCE
+101: REF 'integer',
+102: DATA 'integer',
+101: REF 'integer',
+102: DATA 'integer',
+101: REF 'integer',
+102: DATA 'integer',
+101: REF 'integer',
+102: DATA 'integer',
+97: REF 'common-draw-path-data-attlist',
+98: ATTRIBUTE "svg:d",
+99: REF 'pathData',
+100: DATA 'string',
+97: REF 'common-draw-z-index-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:z-index",
+100: REF 'nonNegativeInteger',
+101: DATA 'nonNegativeInteger',
+99: EPSILON
+97: REF 'common-draw-id-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:id",
+100: REF 'ID',
+101: DATA 'ID',
+99: EPSILON
+97: REF 'common-draw-layer-name-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:layer",
+100: DATA 'string',
+99: EPSILON
+97: REF 'common-draw-style-name-attlist',
+98: CHOICE
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "draw:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "presentation:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "presentation:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+97: REF 'common-dr3d-transform-attlist',
+98: CHOICE
+99: ATTRIBUTE "dr3d:transform",
+100: STRING
+99: EPSILON
+94: REF 'dr3d-cube',
+95: ELEMENT "dr3d:cube",
+96: SEQUENCE
+97: REF 'dr3d-cube-attlist',
+98: SEQUENCE
+99: CHOICE
+100: ATTRIBUTE "dr3d:min-edge",
+101: REF 'vector3D',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "dr3d:max-edge",
+101: REF 'vector3D',
+102: DATA 'string',
+100: EPSILON
+97: REF 'common-draw-z-index-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:z-index",
+100: REF 'nonNegativeInteger',
+101: DATA 'nonNegativeInteger',
+99: EPSILON
+97: REF 'common-draw-id-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:id",
+100: REF 'ID',
+101: DATA 'ID',
+99: EPSILON
+97: REF 'common-draw-layer-name-attlist',
+98: CHOICE
+99: ATTRIBUTE "draw:layer",
+100: DATA 'string',
+99: EPSILON
+97: REF 'common-draw-style-name-attlist',
+98: CHOICE
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "draw:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+99: SEQUENCE
+100: CHOICE
+101: ATTRIBUTE "presentation:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "presentation:class-names",
+102: REF 'styleNameRefs',
+103: LIST
+104: CHOICE
+105: ONEOREMORE
+106: DATA 'NCName',
+105: EPSILON
+101: EPSILON
+97: REF 'common-dr3d-transform-attlist',
+98: CHOICE
+99: ATTRIBUTE "dr3d:transform",
+100: STRING
+99: EPSILON
+91: EPSILON
+87: REF 'draw-custom-shape',
+88: ELEMENT "draw:custom-shape",
+89: SEQUENCE
+90: REF 'draw-custom-shape-attlist',
+91: INTERLEAVE
+92: CHOICE
+93: ATTRIBUTE "draw:engine",
+94: REF 'namespacedToken',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "draw:data",
+94: REF 'string',
+95: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-position-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:x",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:y",
+94: REF 'coordinate',
+95: REF 'length',
+96: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-size-attlist',
+91: SEQUENCE
+92: CHOICE
+93: ATTRIBUTE "svg:width",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+92: CHOICE
+93: ATTRIBUTE "svg:height",
+94: REF 'length',
+95: DATA 'string',
+93: EPSILON
+90: REF 'common-draw-shape-with-text-and-styles-attlist',
+91: SEQUENCE
+92: REF 'common-draw-shape-with-styles-attlist',
+93: SEQUENCE
+94: REF 'common-draw-z-index-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:z-index",
+97: REF 'nonNegativeInteger',
+98: DATA 'nonNegativeInteger',
+96: EPSILON
+94: REF 'common-draw-id-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:id",
+97: REF 'ID',
+98: DATA 'ID',
+96: EPSILON
+94: REF 'common-draw-layer-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:layer",
+97: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-style-name-attlist',
+95: CHOICE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "presentation:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "presentation:class-names",
+99: REF 'styleNameRefs',
+100: LIST
+101: CHOICE
+102: ONEOREMORE
+103: DATA 'NCName',
+102: EPSILON
+98: EPSILON
+94: REF 'common-draw-transform-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:transform",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-draw-name-attlist',
+95: CHOICE
+96: ATTRIBUTE "draw:name",
+97: REF 'string',
+98: DATA 'string',
+96: EPSILON
+94: REF 'common-text-spreadsheet-shape-attlist',
+95: INTERLEAVE
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "table:end-cell-address",
+99: REF 'cellAddress',
+100: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-x",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "table:end-y",
+99: REF 'coordinate',
+100: REF 'length',
+101: DATA 'string',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "table:table-background",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: REF 'common-text-anchor-attlist',
+97: INTERLEAVE
+98: CHOICE
+99: ATTRIBUTE "text:anchor-type",
+100: CHOICE
+101: VALUE 'page',
+101: VALUE 'frame',
+101: VALUE 'paragraph',
+101: VALUE 'char',
+101: VALUE 'as-char',
+99: EPSILON
+98: CHOICE
+99: ATTRIBUTE "text:anchor-page-number",
+100: REF 'positiveInteger',
+101: DATA 'positiveInteger',
+99: EPSILON
+92: REF 'common-draw-text-style-name-attlist',
+93: CHOICE
+94: ATTRIBUTE "draw:text-style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+90: CHOICE
+91: REF 'office-event-listeners',
+91: EPSILON
+90: CHOICE
+91: ONEOREMORE
+92: REF 'draw-glue-point',
+91: EPSILON
+90: REF 'draw-text',
+91: CHOICE
+92: ONEOREMORE
+93: CHOICE
+94: REF 'text-p',
+94: REF 'text-list',
+92: EPSILON
+90: CHOICE
+91: REF 'draw-enhanced-geometry',
+92: ELEMENT "draw:enhanced-geometry",
+93: SEQUENCE
+94: REF 'draw-enhanced-geometry-attlist',
+95: INTERLEAVE
+96: CHOICE
+97: ATTRIBUTE "draw:type",
+98: REF 'custom-shape-type',
+99: CHOICE
+100: VALUE 'non-primitive',
+100: REF 'string',
+101: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "svg:viewBox",
+98: LIST
+99: SEQUENCE
+100: REF 'integer',
+101: DATA 'integer',
+100: REF 'integer',
+101: DATA 'integer',
+100: REF 'integer',
+101: DATA 'integer',
+100: REF 'integer',
+101: DATA 'integer',
+97: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:mirror-vertical",
+99: REF 'boolean',
+100: CHOICE
+101: VALUE 'true',
+101: VALUE 'false',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:mirror-horizontal",
+99: REF 'boolean',
+100: CHOICE
+101: VALUE 'true',
+101: VALUE 'false',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-rotate-angle",
+98: REF 'double',
+99: DATA 'double',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-allowed",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-path-allowed",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:concentric-gradient-fill-allowed",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-brightness",
+98: REF 'percent',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-depth",
+98: LIST
+99: SEQUENCE
+100: REF 'length',
+101: DATA 'string',
+100: REF 'double',
+101: DATA 'double',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-diffusion",
+98: REF 'percent',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-number-of-line-segments",
+98: REF 'integer',
+99: DATA 'integer',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-light-face",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-first-light-harsh",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-second-light-harsh",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-first-light-level",
+98: REF 'percent',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-second-light-level",
+98: REF 'percent',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-first-light-direction",
+98: REF 'vector3D',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-second-light-direction",
+98: REF 'vector3D',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-metal",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "dr3d:shade-mode",
+98: CHOICE
+99: VALUE 'flat',
+99: VALUE 'phong',
+99: VALUE 'gouraud',
+99: VALUE 'draft',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-rotation-angle",
+98: LIST
+99: SEQUENCE
+100: REF 'double',
+101: DATA 'double',
+100: REF 'double',
+101: DATA 'double',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-rotation-center",
+98: REF 'vector3D',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-shininess",
+98: REF 'percent',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-skew",
+98: LIST
+99: SEQUENCE
+100: REF 'double',
+101: DATA 'double',
+100: REF 'double',
+101: DATA 'double',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-specularity",
+98: REF 'percent',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "dr3d:projection",
+98: CHOICE
+99: VALUE 'parallel',
+99: VALUE 'perspective',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-viewpoint",
+98: REF 'point3D',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-origin",
+98: LIST
+99: SEQUENCE
+100: REF 'double',
+101: DATA 'double',
+100: REF 'double',
+101: DATA 'double',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:extrusion-color",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:enhanced-path",
+98: REF 'string',
+99: DATA 'string',
+97: EPSILON
+96: SEQUENCE
+97: CHOICE
+98: ATTRIBUTE "draw:path-stretchpoint-x",
+99: REF 'double',
+100: DATA 'double',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "draw:path-stretchpoint-y",
+99: REF 'double',
+100: DATA 'double',
+98: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-areas",
+98: REF 'string',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:glue-points",
+98: REF 'string',
+99: DATA 'string',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:glue-point-type",
+98: CHOICE
+99: VALUE 'none',
+99: VALUE 'segments',
+99: VALUE 'rectangle',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:glue-point-leaving-directions",
+98: STRING
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-path",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-path-mode",
+98: CHOICE
+99: VALUE 'normal',
+99: VALUE 'path',
+99: VALUE 'shape',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-path-scale",
+98: CHOICE
+99: VALUE 'path',
+99: VALUE 'shape',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:text-path-same-letter-heights",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "draw:modifiers",
+98: REF 'string',
+99: DATA 'string',
+97: EPSILON
+94: CHOICE
+95: ONEOREMORE
+96: REF 'draw-equation',
+97: ELEMENT "draw:equation",
+98: REF 'draw-equation-attlist',
+99: INTERLEAVE
+100: CHOICE
+101: ATTRIBUTE "draw:name",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:formula",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+95: EPSILON
+94: CHOICE
+95: ONEOREMORE
+96: REF 'draw-handle',
+97: ELEMENT "draw:handle",
+98: REF 'draw-handle-attlist',
+99: INTERLEAVE
+100: CHOICE
+101: ATTRIBUTE "draw:handle-mirror-vertical",
+102: REF 'boolean',
+103: CHOICE
+104: VALUE 'true',
+104: VALUE 'false',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-mirror-horizontal",
+102: REF 'boolean',
+103: CHOICE
+104: VALUE 'true',
+104: VALUE 'false',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-switched",
+102: REF 'boolean',
+103: CHOICE
+104: VALUE 'true',
+104: VALUE 'false',
+101: EPSILON
+100: ATTRIBUTE "draw:handle-position",
+101: REF 'string',
+102: DATA 'string',
+100: CHOICE
+101: ATTRIBUTE "draw:handle-range-x-minimum",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-range-x-maximum",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-range-y-minimum",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-range-y-maximum",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-polar",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-radius-range-minimum",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+100: CHOICE
+101: ATTRIBUTE "draw:handle-radius-range-maximum",
+102: REF 'string',
+103: DATA 'string',
+101: EPSILON
+95: EPSILON
+91: EPSILON
+85: REF 'change-marks',
+86: CHOICE
+87: ELEMENT "text:change",
+88: REF 'change-mark-attr',
+89: ATTRIBUTE "text:change-id",
+90: REF 'IDREF',
+91: DATA 'IDREF',
+87: ELEMENT "text:change-start",
+88: REF 'change-mark-attr',
+89: ATTRIBUTE "text:change-id",
+90: REF 'IDREF',
+91: DATA 'IDREF',
+87: ELEMENT "text:change-end",
+88: REF 'change-mark-attr',
+89: ATTRIBUTE "text:change-id",
+90: REF 'IDREF',
+91: DATA 'IDREF',
+83: REF 'text-index-title',
+84: ELEMENT "text:index-title",
+85: SEQUENCE
+86: REF 'sectionAttr',
+87: INTERLEAVE
+88: CHOICE
+89: ATTRIBUTE "text:style-name",
+90: REF 'styleNameRef',
+91: CHOICE
+92: DATA 'NCName',
+92: EPSILON
+89: EPSILON
+88: ATTRIBUTE "text:name",
+89: REF 'string',
+90: DATA 'string',
+88: CHOICE
+89: ATTRIBUTE "text:protected",
+90: REF 'boolean',
+91: CHOICE
+92: VALUE 'true',
+92: VALUE 'false',
+89: EPSILON
+88: CHOICE
+89: ATTRIBUTE "text:protection-key",
+90: REF 'string',
+91: DATA 'string',
+89: EPSILON
+86: CHOICE
+87: ONEOREMORE
+88: REF 'index-content-main',
+89: CHOICE
+90: REF 'text-content',
+91: CHOICE
+92: REF 'text-h',
+92: REF 'text-p',
+92: REF 'text-list',
+92: REF 'text-numbered-paragraph',
+92: REF 'table-table',
+92: REF 'draw-a',
+92: REF 'text-section',
+92: REF 'text-table-of-content',
+92: REF 'text-illustration-index',
+92: REF 'text-table-index',
+92: REF 'text-object-index',
+92: REF 'text-user-index',
+92: REF 'text-alphabetical-index',
+92: REF 'text-bibliography',
+92: REF 'shape',
+93: CHOICE
+94: REF 'draw-rect',
+94: REF 'draw-line',
+94: REF 'draw-polyline',
+94: REF 'draw-polygon',
+94: REF 'draw-regular-polygon',
+94: REF 'draw-path',
+94: REF 'draw-circle',
+94: REF 'draw-ellipse',
+94: REF 'draw-g',
+94: REF 'draw-page-thumbnail',
+94: REF 'draw-frame',
+94: REF 'draw-measure',
+94: REF 'draw-caption',
+94: REF 'draw-connector',
+94: REF 'draw-control',
+94: REF 'dr3d-scene',
+94: REF 'draw-custom-shape',
+92: REF 'change-marks',
+93: CHOICE
+90: REF 'text-index-title',
+87: EPSILON
+80: EPSILON
+74: REF 'text-illustration-index',
+74: REF 'text-table-index',
+74: REF 'text-object-index',
+74: REF 'text-user-index',
+74: REF 'text-alphabetical-index',
+74: REF 'text-bibliography',
+74: REF 'shape',
+75: CHOICE
+76: REF 'draw-rect',
+76: REF 'draw-line',
+76: REF 'draw-polyline',
+76: REF 'draw-polygon',
+76: REF 'draw-regular-polygon',
+76: REF 'draw-path',
+76: REF 'draw-circle',
+76: REF 'draw-ellipse',
+76: REF 'draw-g',
+76: REF 'draw-page-thumbnail',
+76: REF 'draw-frame',
+76: REF 'draw-measure',
+76: REF 'draw-caption',
+76: REF 'draw-connector',
+76: REF 'draw-control',
+76: REF 'dr3d-scene',
+76: REF 'draw-custom-shape',
+74: REF 'change-marks',
+75: CHOICE
+71: EPSILON
+67: REF 'text-table-of-content',
+67: REF 'text-illustration-index',
+67: REF 'text-table-index',
+67: REF 'text-object-index',
+67: REF 'text-user-index',
+67: REF 'text-alphabetical-index',
+67: REF 'text-bibliography',
+67: REF 'shape',
+68: CHOICE
+69: REF 'draw-rect',
+69: REF 'draw-line',
+69: REF 'draw-polyline',
+69: REF 'draw-polygon',
+69: REF 'draw-regular-polygon',
+69: REF 'draw-path',
+69: REF 'draw-circle',
+69: REF 'draw-ellipse',
+69: REF 'draw-g',
+69: REF 'draw-page-thumbnail',
+69: REF 'draw-frame',
+69: REF 'draw-measure',
+69: REF 'draw-caption',
+69: REF 'draw-connector',
+69: REF 'draw-control',
+69: REF 'dr3d-scene',
+69: REF 'draw-custom-shape',
+67: REF 'change-marks',
+68: CHOICE
+64: EPSILON
+60: REF 'draw-image',
+61: ELEMENT "draw:image",
+62: SEQUENCE
+63: REF 'draw-image-attlist',
+64: CHOICE
+65: ATTRIBUTE "draw:filter-name",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: CHOICE
+64: REF 'common-draw-data-attlist',
+65: SEQUENCE
+66: ATTRIBUTE "xlink:href",
+67: REF 'anyURI',
+68: DATA 'anyURI',
+66: CHOICE
+67: ATTRIBUTE "xlink:type",
+68: VALUE 'simple',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:show",
+68: VALUE 'embed',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:actuate",
+68: VALUE 'onLoad',
+67: EPSILON
+64: REF 'office-binary-data',
+63: REF 'draw-text',
+64: CHOICE
+65: ONEOREMORE
+66: CHOICE
+67: REF 'text-p',
+67: REF 'text-list',
+65: EPSILON
+60: REF 'draw-object',
+61: ELEMENT "draw:object",
+62: SEQUENCE
+63: REF 'draw-object-attlist',
+64: CHOICE
+65: ATTRIBUTE "draw:notify-on-update-of-ranges",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: CHOICE
+64: REF 'common-draw-data-attlist',
+65: SEQUENCE
+66: ATTRIBUTE "xlink:href",
+67: REF 'anyURI',
+68: DATA 'anyURI',
+66: CHOICE
+67: ATTRIBUTE "xlink:type",
+68: VALUE 'simple',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:show",
+68: VALUE 'embed',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:actuate",
+68: VALUE 'onLoad',
+67: EPSILON
+64: REF 'office-document',
+64: REF 'math-math',
+65: ELEMENT "math:math",
+66: REF 'mathMarkup',
+67: ONEOREMORE
+68: CHOICE
+69: ATTRIBUTE "*",
+70: STRING
+69: STRING
+69: ELEMENT "*",
+70: REF 'mathMarkup',
+71: ONEOREMORE
+72: CHOICE
+73: ATTRIBUTE "*",
+74: STRING
+73: STRING
+60: REF 'draw-object-ole',
+61: ELEMENT "draw:object-ole",
+62: SEQUENCE
+63: REF 'draw-object-ole-attlist',
+64: CHOICE
+65: ATTRIBUTE "draw:class-id",
+66: STRING
+65: EPSILON
+63: CHOICE
+64: REF 'common-draw-data-attlist',
+65: SEQUENCE
+66: ATTRIBUTE "xlink:href",
+67: REF 'anyURI',
+68: DATA 'anyURI',
+66: CHOICE
+67: ATTRIBUTE "xlink:type",
+68: VALUE 'simple',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:show",
+68: VALUE 'embed',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:actuate",
+68: VALUE 'onLoad',
+67: EPSILON
+64: REF 'office-binary-data',
+60: REF 'draw-applet',
+61: ELEMENT "draw:applet",
+62: SEQUENCE
+63: REF 'draw-applet-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "draw:code",
+67: STRING
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "draw:object",
+67: STRING
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "draw:archive",
+67: STRING
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "draw:may-script",
+67: REF 'boolean',
+68: CHOICE
+69: VALUE 'true',
+69: VALUE 'false',
+66: EPSILON
+63: CHOICE
+64: REF 'common-draw-data-attlist',
+65: SEQUENCE
+66: ATTRIBUTE "xlink:href",
+67: REF 'anyURI',
+68: DATA 'anyURI',
+66: CHOICE
+67: ATTRIBUTE "xlink:type",
+68: VALUE 'simple',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:show",
+68: VALUE 'embed',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "xlink:actuate",
+68: VALUE 'onLoad',
+67: EPSILON
+64: EPSILON
+63: CHOICE
+64: ONEOREMORE
+65: REF 'draw-param',
+66: ELEMENT "draw:param",
+67: REF 'draw-param-attlist',
+68: INTERLEAVE
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: STRING
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "draw:value",
+71: STRING
+70: EPSILON
+64: EPSILON
+60: REF 'draw-floating-frame',
+61: ELEMENT "draw:floating-frame",
+62: SEQUENCE
+63: REF 'draw-floating-frame-attlist',
+64: CHOICE
+65: ATTRIBUTE "draw:frame-name",
+66: REF 'string',
+67: DATA 'string',
+65: EPSILON
+63: REF 'common-draw-data-attlist',
+64: SEQUENCE
+65: ATTRIBUTE "xlink:href",
+66: REF 'anyURI',
+67: DATA 'anyURI',
+65: CHOICE
+66: ATTRIBUTE "xlink:type",
+67: VALUE 'simple',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "xlink:show",
+67: VALUE 'embed',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "xlink:actuate",
+67: VALUE 'onLoad',
+66: EPSILON
+60: REF 'draw-plugin',
+61: ELEMENT "draw:plugin",
+62: SEQUENCE
+63: REF 'draw-plugin-attlist',
+64: CHOICE
+65: ATTRIBUTE "draw:mime-type",
+66: STRING
+65: EPSILON
+63: REF 'common-draw-data-attlist',
+64: SEQUENCE
+65: ATTRIBUTE "xlink:href",
+66: REF 'anyURI',
+67: DATA 'anyURI',
+65: CHOICE
+66: ATTRIBUTE "xlink:type",
+67: VALUE 'simple',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "xlink:show",
+67: VALUE 'embed',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "xlink:actuate",
+67: VALUE 'onLoad',
+66: EPSILON
+63: CHOICE
+64: ONEOREMORE
+65: REF 'draw-param',
+64: EPSILON
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: CHOICE
+58: REF 'draw-image-map',
+59: ELEMENT "draw:image-map",
+60: CHOICE
+61: ONEOREMORE
+62: CHOICE
+63: REF 'draw-area-rectangle',
+64: ELEMENT "draw:area-rectangle",
+65: SEQUENCE
+66: REF 'common-draw-area-attlist',
+67: INTERLEAVE
+68: SEQUENCE
+69: CHOICE
+70: ATTRIBUTE "xlink:href",
+71: REF 'anyURI',
+72: DATA 'anyURI',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "xlink:type",
+71: VALUE 'simple',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "office:target-frame-name",
+71: REF 'targetFrameName',
+72: CHOICE
+73: VALUE '_self',
+73: VALUE '_blank',
+73: VALUE '_parent',
+73: VALUE '_top',
+73: REF 'string',
+74: DATA 'string',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "xlink:show",
+71: CHOICE
+72: VALUE 'new',
+72: VALUE 'replace',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "office:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "draw:nohref",
+70: VALUE 'nohref',
+69: EPSILON
+66: ATTRIBUTE "svg:x",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: ATTRIBUTE "svg:y",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: ATTRIBUTE "svg:width",
+67: REF 'length',
+68: DATA 'string',
+66: ATTRIBUTE "svg:height",
+67: REF 'length',
+68: DATA 'string',
+66: CHOICE
+67: REF 'svg-desc',
+68: ELEMENT "svg:desc",
+69: STRING
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+63: REF 'draw-area-circle',
+64: ELEMENT "draw:area-circle",
+65: SEQUENCE
+66: REF 'common-draw-area-attlist',
+67: INTERLEAVE
+68: SEQUENCE
+69: CHOICE
+70: ATTRIBUTE "xlink:href",
+71: REF 'anyURI',
+72: DATA 'anyURI',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "xlink:type",
+71: VALUE 'simple',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "office:target-frame-name",
+71: REF 'targetFrameName',
+72: CHOICE
+73: VALUE '_self',
+73: VALUE '_blank',
+73: VALUE '_parent',
+73: VALUE '_top',
+73: REF 'string',
+74: DATA 'string',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "xlink:show",
+71: CHOICE
+72: VALUE 'new',
+72: VALUE 'replace',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "office:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "draw:nohref",
+70: VALUE 'nohref',
+69: EPSILON
+66: ATTRIBUTE "svg:cx",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: ATTRIBUTE "svg:cy",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: ATTRIBUTE "svg:r",
+67: REF 'length',
+68: DATA 'string',
+66: CHOICE
+67: REF 'svg-desc',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+63: REF 'draw-area-polygon',
+64: ELEMENT "draw:area-polygon",
+65: SEQUENCE
+66: REF 'common-draw-area-attlist',
+67: INTERLEAVE
+68: SEQUENCE
+69: CHOICE
+70: ATTRIBUTE "xlink:href",
+71: REF 'anyURI',
+72: DATA 'anyURI',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "xlink:type",
+71: VALUE 'simple',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "office:target-frame-name",
+71: REF 'targetFrameName',
+72: CHOICE
+73: VALUE '_self',
+73: VALUE '_blank',
+73: VALUE '_parent',
+73: VALUE '_top',
+73: REF 'string',
+74: DATA 'string',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "xlink:show",
+71: CHOICE
+72: VALUE 'new',
+72: VALUE 'replace',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "office:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "draw:nohref",
+70: VALUE 'nohref',
+69: EPSILON
+66: ATTRIBUTE "svg:x",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: ATTRIBUTE "svg:y",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: ATTRIBUTE "svg:width",
+67: REF 'length',
+68: DATA 'string',
+66: ATTRIBUTE "svg:height",
+67: REF 'length',
+68: DATA 'string',
+66: REF 'common-draw-viewbox-attlist',
+67: ATTRIBUTE "svg:viewBox",
+68: LIST
+69: SEQUENCE
+70: REF 'integer',
+71: DATA 'integer',
+70: REF 'integer',
+71: DATA 'integer',
+70: REF 'integer',
+71: DATA 'integer',
+70: REF 'integer',
+71: DATA 'integer',
+66: REF 'common-draw-points-attlist',
+67: ATTRIBUTE "draw:points",
+68: REF 'points',
+69: DATA 'string',
+66: CHOICE
+67: REF 'svg-desc',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'draw-contour-polygon',
+59: ELEMENT "draw:contour-polygon",
+60: SEQUENCE
+61: REF 'common-contour-attlist',
+62: ATTRIBUTE "draw:recreate-on-edit",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+61: REF 'common-draw-size-attlist',
+62: SEQUENCE
+63: CHOICE
+64: ATTRIBUTE "svg:width",
+65: REF 'length',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "svg:height",
+65: REF 'length',
+66: DATA 'string',
+64: EPSILON
+61: REF 'common-draw-viewbox-attlist',
+62: ATTRIBUTE "svg:viewBox",
+63: LIST
+64: SEQUENCE
+65: REF 'integer',
+66: DATA 'integer',
+65: REF 'integer',
+66: DATA 'integer',
+65: REF 'integer',
+66: DATA 'integer',
+65: REF 'integer',
+66: DATA 'integer',
+61: REF 'common-draw-points-attlist',
+62: ATTRIBUTE "draw:points",
+63: REF 'points',
+64: DATA 'string',
+58: REF 'draw-contour-path',
+59: ELEMENT "draw:contour-path",
+60: SEQUENCE
+61: REF 'common-contour-attlist',
+62: ATTRIBUTE "draw:recreate-on-edit",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+61: REF 'common-draw-size-attlist',
+62: SEQUENCE
+63: CHOICE
+64: ATTRIBUTE "svg:width",
+65: REF 'length',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "svg:height",
+65: REF 'length',
+66: DATA 'string',
+64: EPSILON
+61: REF 'common-draw-viewbox-attlist',
+62: ATTRIBUTE "svg:viewBox",
+63: LIST
+64: SEQUENCE
+65: REF 'integer',
+66: DATA 'integer',
+65: REF 'integer',
+66: DATA 'integer',
+65: REF 'integer',
+66: DATA 'integer',
+65: REF 'integer',
+66: DATA 'integer',
+61: REF 'common-draw-path-data-attlist',
+62: ATTRIBUTE "svg:d",
+63: REF 'pathData',
+64: DATA 'string',
+58: EPSILON
+54: REF 'draw-measure',
+54: REF 'draw-caption',
+54: REF 'draw-connector',
+54: REF 'draw-control',
+54: REF 'dr3d-scene',
+54: REF 'draw-custom-shape',
+51: EPSILON
+47: REF 'draw-page-thumbnail',
+47: REF 'draw-frame',
+47: REF 'draw-measure',
+47: REF 'draw-caption',
+47: REF 'draw-connector',
+47: REF 'draw-control',
+47: REF 'dr3d-scene',
+47: REF 'draw-custom-shape',
+42: EPSILON
+41: REF 'table-columns-and-groups',
+42: ONEOREMORE
+43: CHOICE
+44: REF 'table-table-column-group',
+45: ELEMENT "table:table-column-group",
+46: SEQUENCE
+47: REF 'table-table-column-group-attlist',
+48: CHOICE
+49: ATTRIBUTE "table:display",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: REF 'table-columns-and-groups',
+48: ONEOREMORE
+49: CHOICE
+50: REF 'table-table-column-group',
+50: REF 'table-columns-no-group',
+51: CHOICE
+52: SEQUENCE
+53: REF 'table-columns',
+54: CHOICE
+55: REF 'table-table-columns',
+56: ELEMENT "table:table-columns",
+57: ONEOREMORE
+58: REF 'table-table-column',
+59: ELEMENT "table:table-column",
+60: REF 'table-table-column-attlist',
+61: INTERLEAVE
+62: CHOICE
+63: ATTRIBUTE "table:number-columns-repeated",
+64: REF 'positiveInteger',
+65: DATA 'positiveInteger',
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "table:style-name",
+64: REF 'styleNameRef',
+65: CHOICE
+66: DATA 'NCName',
+66: EPSILON
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "table:visibility",
+64: REF 'table-visibility-value',
+65: CHOICE
+66: VALUE 'visible',
+66: VALUE 'collapse',
+66: VALUE 'filter',
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "table:default-cell-style-name",
+64: REF 'styleNameRef',
+65: CHOICE
+66: DATA 'NCName',
+66: EPSILON
+63: EPSILON
+55: ONEOREMORE
+56: REF 'table-table-column',
+53: CHOICE
+54: SEQUENCE
+55: REF 'table-table-header-columns',
+56: ELEMENT "table:table-header-columns",
+57: ONEOREMORE
+58: REF 'table-table-column',
+55: CHOICE
+56: REF 'table-columns',
+57: CHOICE
+58: REF 'table-table-columns',
+58: ONEOREMORE
+59: REF 'table-table-column',
+56: EPSILON
+54: EPSILON
+52: SEQUENCE
+53: REF 'table-table-header-columns',
+53: CHOICE
+54: REF 'table-columns',
+55: CHOICE
+56: REF 'table-table-columns',
+56: ONEOREMORE
+57: REF 'table-table-column',
+54: EPSILON
+44: REF 'table-columns-no-group',
+45: CHOICE
+46: SEQUENCE
+47: REF 'table-columns',
+48: CHOICE
+49: REF 'table-table-columns',
+49: ONEOREMORE
+50: REF 'table-table-column',
+47: CHOICE
+48: SEQUENCE
+49: REF 'table-table-header-columns',
+49: CHOICE
+50: REF 'table-columns',
+51: CHOICE
+52: REF 'table-table-columns',
+52: ONEOREMORE
+53: REF 'table-table-column',
+50: EPSILON
+48: EPSILON
+46: SEQUENCE
+47: REF 'table-table-header-columns',
+47: CHOICE
+48: REF 'table-columns',
+49: CHOICE
+50: REF 'table-table-columns',
+50: ONEOREMORE
+51: REF 'table-table-column',
+48: EPSILON
+41: REF 'table-rows-and-groups',
+42: ONEOREMORE
+43: CHOICE
+44: REF 'table-table-row-group',
+45: ELEMENT "table:table-row-group",
+46: SEQUENCE
+47: REF 'table-table-row-group-attlist',
+48: CHOICE
+49: ATTRIBUTE "table:display",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: REF 'table-rows-and-groups',
+48: ONEOREMORE
+49: CHOICE
+50: REF 'table-table-row-group',
+50: REF 'table-rows-no-group',
+51: CHOICE
+52: SEQUENCE
+53: REF 'table-rows',
+54: CHOICE
+55: REF 'table-table-rows',
+56: ELEMENT "table:table-rows",
+57: ONEOREMORE
+58: REF 'table-table-row',
+59: ELEMENT "table:table-row",
+60: SEQUENCE
+61: REF 'table-table-row-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:number-rows-repeated",
+65: REF 'positiveInteger',
+66: DATA 'positiveInteger',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:style-name",
+65: REF 'styleNameRef',
+66: CHOICE
+67: DATA 'NCName',
+67: EPSILON
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:default-cell-style-name",
+65: REF 'styleNameRef',
+66: CHOICE
+67: DATA 'NCName',
+67: EPSILON
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:visibility",
+65: REF 'table-visibility-value',
+66: CHOICE
+67: VALUE 'visible',
+67: VALUE 'collapse',
+67: VALUE 'filter',
+64: EPSILON
+61: ONEOREMORE
+62: CHOICE
+63: REF 'table-table-cell',
+64: ELEMENT "table:table-cell",
+65: SEQUENCE
+66: REF 'table-table-cell-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "table:number-columns-repeated",
+70: REF 'positiveInteger',
+71: DATA 'positiveInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:style-name",
+70: REF 'styleNameRef',
+71: CHOICE
+72: DATA 'NCName',
+72: EPSILON
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:content-validation-name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:formula",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: REF 'common-value-and-type-attlist',
+70: CHOICE
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'float',
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'percentage',
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'currency',
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+72: CHOICE
+73: ATTRIBUTE "office:currency",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'date',
+72: ATTRIBUTE "office:date-value",
+73: REF 'dateOrDateTime',
+74: CHOICE
+75: DATA 'date',
+75: DATA 'dateTime',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'time',
+72: ATTRIBUTE "office:time-value",
+73: REF 'duration',
+74: DATA 'duration',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'boolean',
+72: ATTRIBUTE "office:boolean-value",
+73: REF 'boolean',
+74: CHOICE
+75: VALUE 'true',
+75: VALUE 'false',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'string',
+72: CHOICE
+73: ATTRIBUTE "office:string-value",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:protect",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'table-table-cell-attlist-extra',
+67: INTERLEAVE
+68: SEQUENCE
+69: CHOICE
+70: ATTRIBUTE "table:number-columns-spanned",
+71: REF 'positiveInteger',
+72: DATA 'positiveInteger',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "table:number-rows-spanned",
+71: REF 'positiveInteger',
+72: DATA 'positiveInteger',
+70: EPSILON
+68: SEQUENCE
+69: CHOICE
+70: ATTRIBUTE "table:number-matrix-columns-spanned",
+71: REF 'positiveInteger',
+72: DATA 'positiveInteger',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "table:number-matrix-rows-spanned",
+71: REF 'positiveInteger',
+72: DATA 'positiveInteger',
+70: EPSILON
+66: REF 'table-table-cell-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'table-cell-range-source',
+70: ELEMENT "table:cell-range-source",
+71: SEQUENCE
+72: REF 'table-table-cell-range-source-attlist',
+73: INTERLEAVE
+74: ATTRIBUTE "table:name",
+75: REF 'string',
+76: DATA 'string',
+74: SEQUENCE
+75: ATTRIBUTE "table:last-column-spanned",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: ATTRIBUTE "table:last-row-spanned",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+72: REF 'table-linked-source-attlist',
+73: INTERLEAVE
+74: SEQUENCE
+75: CHOICE
+76: ATTRIBUTE "xlink:type",
+77: VALUE 'simple',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "xlink:actuate",
+77: VALUE 'onRequest',
+76: EPSILON
+75: ATTRIBUTE "xlink:href",
+76: REF 'anyURI',
+77: DATA 'anyURI',
+74: CHOICE
+75: ATTRIBUTE "table:filter-name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:filter-options",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:refresh-delay",
+76: REF 'duration',
+77: DATA 'duration',
+75: EPSILON
+69: EPSILON
+68: CHOICE
+69: REF 'office-annotation',
+70: ELEMENT "office:annotation",
+71: SEQUENCE
+72: REF 'office-annotation-attlist',
+73: CHOICE
+74: ATTRIBUTE "office:display",
+75: REF 'boolean',
+76: CHOICE
+77: VALUE 'true',
+77: VALUE 'false',
+74: EPSILON
+72: REF 'draw-caption-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: SEQUENCE
+76: ATTRIBUTE "draw:caption-point-x",
+77: REF 'coordinate',
+78: REF 'length',
+79: DATA 'string',
+76: ATTRIBUTE "draw:caption-point-y",
+77: REF 'coordinate',
+78: REF 'length',
+79: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "draw:corner-radius",
+76: REF 'nonNegativeLength',
+77: DATA 'string',
+75: EPSILON
+72: REF 'common-draw-position-attlist',
+73: SEQUENCE
+74: CHOICE
+75: ATTRIBUTE "svg:x",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "svg:y",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: EPSILON
+72: REF 'common-draw-size-attlist',
+73: SEQUENCE
+74: CHOICE
+75: ATTRIBUTE "svg:width",
+76: REF 'length',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "svg:height",
+76: REF 'length',
+77: DATA 'string',
+75: EPSILON
+72: REF 'common-draw-shape-with-text-and-styles-attlist',
+73: SEQUENCE
+74: REF 'common-draw-shape-with-styles-attlist',
+75: SEQUENCE
+76: REF 'common-draw-z-index-attlist',
+77: CHOICE
+78: ATTRIBUTE "draw:z-index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+76: REF 'common-draw-id-attlist',
+77: CHOICE
+78: ATTRIBUTE "draw:id",
+79: REF 'ID',
+80: DATA 'ID',
+78: EPSILON
+76: REF 'common-draw-layer-name-attlist',
+77: CHOICE
+78: ATTRIBUTE "draw:layer",
+79: DATA 'string',
+78: EPSILON
+76: REF 'common-draw-style-name-attlist',
+77: CHOICE
+78: SEQUENCE
+79: CHOICE
+80: ATTRIBUTE "draw:style-name",
+81: REF 'styleNameRef',
+82: CHOICE
+83: DATA 'NCName',
+83: EPSILON
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "draw:class-names",
+81: REF 'styleNameRefs',
+82: LIST
+83: CHOICE
+84: ONEOREMORE
+85: DATA 'NCName',
+84: EPSILON
+80: EPSILON
+78: SEQUENCE
+79: CHOICE
+80: ATTRIBUTE "presentation:style-name",
+81: REF 'styleNameRef',
+82: CHOICE
+83: DATA 'NCName',
+83: EPSILON
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "presentation:class-names",
+81: REF 'styleNameRefs',
+82: LIST
+83: CHOICE
+84: ONEOREMORE
+85: DATA 'NCName',
+84: EPSILON
+80: EPSILON
+76: REF 'common-draw-transform-attlist',
+77: CHOICE
+78: ATTRIBUTE "draw:transform",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'common-draw-name-attlist',
+77: CHOICE
+78: ATTRIBUTE "draw:name",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'common-text-spreadsheet-shape-attlist',
+77: INTERLEAVE
+78: SEQUENCE
+79: CHOICE
+80: ATTRIBUTE "table:end-cell-address",
+81: REF 'cellAddress',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "table:end-x",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "table:end-y",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: EPSILON
+78: CHOICE
+79: ATTRIBUTE "table:table-background",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+78: REF 'common-text-anchor-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "text:anchor-type",
+82: CHOICE
+83: VALUE 'page',
+83: VALUE 'frame',
+83: VALUE 'paragraph',
+83: VALUE 'char',
+83: VALUE 'as-char',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "text:anchor-page-number",
+82: REF 'positiveInteger',
+83: DATA 'positiveInteger',
+81: EPSILON
+74: REF 'common-draw-text-style-name-attlist',
+75: CHOICE
+76: ATTRIBUTE "draw:text-style-name",
+77: REF 'styleNameRef',
+78: CHOICE
+79: DATA 'NCName',
+79: EPSILON
+76: EPSILON
+72: CHOICE
+73: REF 'dc-creator',
+73: EPSILON
+72: CHOICE
+73: REF 'dc-date',
+73: EPSILON
+72: CHOICE
+73: REF 'meta-date-string',
+74: ELEMENT "meta:date-string",
+75: REF 'string',
+76: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ONEOREMORE
+74: CHOICE
+75: REF 'text-p',
+75: REF 'text-list',
+73: EPSILON
+69: EPSILON
+68: CHOICE
+69: REF 'table-detective',
+70: ELEMENT "table:detective",
+71: SEQUENCE
+72: CHOICE
+73: ONEOREMORE
+74: REF 'table-highlighted-range',
+75: ELEMENT "table:highlighted-range",
+76: CHOICE
+77: REF 'table-highlighted-range-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "table:cell-range-address",
+81: REF 'cellRangeAddress',
+82: DATA 'string',
+80: EPSILON
+79: ATTRIBUTE "table:direction",
+80: CHOICE
+81: VALUE 'from-another-table',
+81: VALUE 'to-another-table',
+81: VALUE 'from-same-table',
+79: CHOICE
+80: ATTRIBUTE "table:contains-error",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+77: REF 'table-highlighted-range-attlist-invalid',
+78: ATTRIBUTE "table:marked-invalid",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+73: EPSILON
+72: CHOICE
+73: ONEOREMORE
+74: REF 'table-operation',
+75: ELEMENT "table:operation",
+76: REF 'table-operation-attlist',
+77: INTERLEAVE
+78: ATTRIBUTE "table:name",
+79: CHOICE
+80: VALUE 'trace-dependents',
+80: VALUE 'remove-dependents',
+80: VALUE 'trace-precedents',
+80: VALUE 'remove-precedents',
+80: VALUE 'trace-errors',
+78: ATTRIBUTE "table:index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+73: EPSILON
+69: EPSILON
+68: CHOICE
+69: ONEOREMORE
+70: REF 'text-content',
+71: CHOICE
+72: REF 'text-h',
+72: REF 'text-p',
+72: REF 'text-list',
+72: REF 'text-numbered-paragraph',
+72: REF 'table-table',
+72: REF 'draw-a',
+72: REF 'text-section',
+72: REF 'text-table-of-content',
+72: REF 'text-illustration-index',
+72: REF 'text-table-index',
+72: REF 'text-object-index',
+72: REF 'text-user-index',
+72: REF 'text-alphabetical-index',
+72: REF 'text-bibliography',
+72: REF 'shape',
+73: CHOICE
+74: REF 'draw-rect',
+74: REF 'draw-line',
+74: REF 'draw-polyline',
+74: REF 'draw-polygon',
+74: REF 'draw-regular-polygon',
+74: REF 'draw-path',
+74: REF 'draw-circle',
+74: REF 'draw-ellipse',
+74: REF 'draw-g',
+74: REF 'draw-page-thumbnail',
+74: REF 'draw-frame',
+74: REF 'draw-measure',
+74: REF 'draw-caption',
+74: REF 'draw-connector',
+74: REF 'draw-control',
+74: REF 'dr3d-scene',
+74: REF 'draw-custom-shape',
+72: REF 'change-marks',
+73: CHOICE
+69: EPSILON
+63: REF 'table-covered-table-cell',
+64: ELEMENT "table:covered-table-cell",
+65: SEQUENCE
+66: REF 'table-table-cell-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "table:number-columns-repeated",
+70: REF 'positiveInteger',
+71: DATA 'positiveInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:style-name",
+70: REF 'styleNameRef',
+71: CHOICE
+72: DATA 'NCName',
+72: EPSILON
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:content-validation-name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:formula",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: REF 'common-value-and-type-attlist',
+70: CHOICE
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'float',
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'percentage',
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'currency',
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+72: CHOICE
+73: ATTRIBUTE "office:currency",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'date',
+72: ATTRIBUTE "office:date-value",
+73: REF 'dateOrDateTime',
+74: CHOICE
+75: DATA 'date',
+75: DATA 'dateTime',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'time',
+72: ATTRIBUTE "office:time-value",
+73: REF 'duration',
+74: DATA 'duration',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'boolean',
+72: ATTRIBUTE "office:boolean-value",
+73: REF 'boolean',
+74: CHOICE
+75: VALUE 'true',
+75: VALUE 'false',
+71: SEQUENCE
+72: ATTRIBUTE "office:value-type",
+73: VALUE 'string',
+72: CHOICE
+73: ATTRIBUTE "office:string-value",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "table:protect",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'table-table-cell-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'table-cell-range-source',
+69: EPSILON
+68: CHOICE
+69: REF 'office-annotation',
+69: EPSILON
+68: CHOICE
+69: REF 'table-detective',
+69: EPSILON
+68: CHOICE
+69: ONEOREMORE
+70: REF 'text-content',
+71: CHOICE
+72: REF 'text-h',
+72: REF 'text-p',
+72: REF 'text-list',
+72: REF 'text-numbered-paragraph',
+72: REF 'table-table',
+72: REF 'draw-a',
+72: REF 'text-section',
+72: REF 'text-table-of-content',
+72: REF 'text-illustration-index',
+72: REF 'text-table-index',
+72: REF 'text-object-index',
+72: REF 'text-user-index',
+72: REF 'text-alphabetical-index',
+72: REF 'text-bibliography',
+72: REF 'shape',
+73: CHOICE
+74: REF 'draw-rect',
+74: REF 'draw-line',
+74: REF 'draw-polyline',
+74: REF 'draw-polygon',
+74: REF 'draw-regular-polygon',
+74: REF 'draw-path',
+74: REF 'draw-circle',
+74: REF 'draw-ellipse',
+74: REF 'draw-g',
+74: REF 'draw-page-thumbnail',
+74: REF 'draw-frame',
+74: REF 'draw-measure',
+74: REF 'draw-caption',
+74: REF 'draw-connector',
+74: REF 'draw-control',
+74: REF 'dr3d-scene',
+74: REF 'draw-custom-shape',
+72: REF 'change-marks',
+73: CHOICE
+69: EPSILON
+55: ONEOREMORE
+56: REF 'table-table-row',
+53: CHOICE
+54: SEQUENCE
+55: REF 'table-table-header-rows',
+56: ELEMENT "table:table-header-rows",
+57: ONEOREMORE
+58: REF 'table-table-row',
+55: CHOICE
+56: REF 'table-rows',
+57: CHOICE
+58: REF 'table-table-rows',
+58: ONEOREMORE
+59: REF 'table-table-row',
+56: EPSILON
+54: EPSILON
+52: SEQUENCE
+53: REF 'table-table-header-rows',
+53: CHOICE
+54: REF 'table-rows',
+55: CHOICE
+56: REF 'table-table-rows',
+56: ONEOREMORE
+57: REF 'table-table-row',
+54: EPSILON
+44: REF 'table-rows-no-group',
+45: CHOICE
+46: SEQUENCE
+47: REF 'table-rows',
+48: CHOICE
+49: REF 'table-table-rows',
+49: ONEOREMORE
+50: REF 'table-table-row',
+47: CHOICE
+48: SEQUENCE
+49: REF 'table-table-header-rows',
+49: CHOICE
+50: REF 'table-rows',
+51: CHOICE
+52: REF 'table-table-rows',
+52: ONEOREMORE
+53: REF 'table-table-row',
+50: EPSILON
+48: EPSILON
+46: SEQUENCE
+47: REF 'table-table-header-rows',
+47: CHOICE
+48: REF 'table-rows',
+49: CHOICE
+50: REF 'table-table-rows',
+50: ONEOREMORE
+51: REF 'table-table-row',
+48: EPSILON
+38: REF 'draw-a',
+38: REF 'text-section',
+38: REF 'text-table-of-content',
+38: REF 'text-illustration-index',
+38: REF 'text-table-index',
+38: REF 'text-object-index',
+38: REF 'text-user-index',
+38: REF 'text-alphabetical-index',
+38: REF 'text-bibliography',
+38: REF 'shape',
+39: CHOICE
+40: REF 'draw-rect',
+40: REF 'draw-line',
+40: REF 'draw-polyline',
+40: REF 'draw-polygon',
+40: REF 'draw-regular-polygon',
+40: REF 'draw-path',
+40: REF 'draw-circle',
+40: REF 'draw-ellipse',
+40: REF 'draw-g',
+40: REF 'draw-page-thumbnail',
+40: REF 'draw-frame',
+40: REF 'draw-measure',
+40: REF 'draw-caption',
+40: REF 'draw-connector',
+40: REF 'draw-control',
+40: REF 'dr3d-scene',
+40: REF 'draw-custom-shape',
+38: REF 'change-marks',
+39: CHOICE
+35: EPSILON
+31: ELEMENT "text:ruby",
+32: SEQUENCE
+33: CHOICE
+34: ATTRIBUTE "text:style-name",
+35: REF 'styleNameRef',
+36: CHOICE
+37: DATA 'NCName',
+37: EPSILON
+34: EPSILON
+33: ELEMENT "text:ruby-base",
+34: REF 'paragraph-content',
+35: CHOICE
+36: STRING
+33: ELEMENT "text:ruby-text",
+34: SEQUENCE
+35: CHOICE
+36: ATTRIBUTE "text:style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+35: STRING
+31: REF 'office-annotation',
+31: REF 'change-marks',
+32: CHOICE
+31: REF 'shape',
+32: CHOICE
+33: REF 'draw-rect',
+33: REF 'draw-line',
+33: REF 'draw-polyline',
+33: REF 'draw-polygon',
+33: REF 'draw-regular-polygon',
+33: REF 'draw-path',
+33: REF 'draw-circle',
+33: REF 'draw-ellipse',
+33: REF 'draw-g',
+33: REF 'draw-page-thumbnail',
+33: REF 'draw-frame',
+33: REF 'draw-measure',
+33: REF 'draw-caption',
+33: REF 'draw-connector',
+33: REF 'draw-control',
+33: REF 'dr3d-scene',
+33: REF 'draw-custom-shape',
+31: REF 'draw-a',
+31: ELEMENT "text:date",
+32: SEQUENCE
+33: REF 'text-date-attlist',
+34: INTERLEAVE
+35: REF 'common-field-fixed-attlist',
+36: CHOICE
+37: ATTRIBUTE "text:fixed",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+35: REF 'common-field-data-style-name-attlist',
+36: CHOICE
+37: ATTRIBUTE "style:data-style-name",
+38: REF 'styleNameRef',
+39: CHOICE
+40: DATA 'NCName',
+40: EPSILON
+37: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:date-value",
+37: REF 'dateOrDateTime',
+38: CHOICE
+39: DATA 'date',
+39: DATA 'dateTime',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:date-adjust",
+37: REF 'duration',
+38: DATA 'duration',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:time",
+32: SEQUENCE
+33: REF 'text-time-attlist',
+34: INTERLEAVE
+35: REF 'common-field-fixed-attlist',
+36: CHOICE
+37: ATTRIBUTE "text:fixed",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+35: REF 'common-field-data-style-name-attlist',
+36: CHOICE
+37: ATTRIBUTE "style:data-style-name",
+38: REF 'styleNameRef',
+39: CHOICE
+40: DATA 'NCName',
+40: EPSILON
+37: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:time-value",
+37: REF 'timeOrDateTime',
+38: CHOICE
+39: DATA 'time',
+39: DATA 'dateTime',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:time-adjust",
+37: REF 'duration',
+38: DATA 'duration',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:page-number",
+32: SEQUENCE
+33: REF 'text-page-number-attlist',
+34: INTERLEAVE
+35: REF 'common-field-num-format-attlist',
+36: CHOICE
+37: REF 'common-num-format-attlist',
+38: CHOICE
+39: ATTRIBUTE "style:num-format",
+40: CHOICE
+41: VALUE '1',
+41: VALUE 'i',
+41: VALUE 'I',
+41: REF 'string',
+42: DATA 'string',
+41: EPSILON
+39: SEQUENCE
+40: ATTRIBUTE "style:num-format",
+41: CHOICE
+42: VALUE 'a',
+42: VALUE 'A',
+40: REF 'style-num-letter-sync-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:num-letter-sync",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+42: EPSILON
+39: EPSILON
+37: EPSILON
+35: REF 'common-field-fixed-attlist',
+36: CHOICE
+37: ATTRIBUTE "text:fixed",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:page-adjust",
+37: REF 'integer',
+38: DATA 'integer',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:select-page",
+37: CHOICE
+38: VALUE 'previous',
+38: VALUE 'current',
+38: VALUE 'next',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:page-continuation",
+32: SEQUENCE
+33: REF 'text-page-continuation-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "text:select-page",
+36: CHOICE
+37: VALUE 'previous',
+37: VALUE 'next',
+35: CHOICE
+36: ATTRIBUTE "text:string-value",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:sender-firstname",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-lastname",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-initials",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-title",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-position",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-email",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-phone-private",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-fax",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-company",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-phone-work",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-street",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-city",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-postal-code",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-country",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sender-state-or-province",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:author-name",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:author-initials",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:chapter",
+32: SEQUENCE
+33: REF 'text-chapter-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "text:display",
+36: CHOICE
+37: VALUE 'name',
+37: VALUE 'number',
+37: VALUE 'number-and-name',
+37: VALUE 'plain-number-and-name',
+37: VALUE 'plain-number',
+35: ATTRIBUTE "text:outline-level",
+36: REF 'nonNegativeInteger',
+37: DATA 'nonNegativeInteger',
+33: STRING
+31: ELEMENT "text:file-name",
+32: SEQUENCE
+33: REF 'text-file-name-attlist',
+34: INTERLEAVE
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'full',
+38: VALUE 'path',
+38: VALUE 'name',
+38: VALUE 'name-and-extension',
+36: EPSILON
+35: REF 'common-field-fixed-attlist',
+36: CHOICE
+37: ATTRIBUTE "text:fixed",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+33: STRING
+31: ELEMENT "text:template-name",
+32: SEQUENCE
+33: REF 'text-template-name-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:display",
+36: CHOICE
+37: VALUE 'full',
+37: VALUE 'path',
+37: VALUE 'name',
+37: VALUE 'name-and-extension',
+37: VALUE 'area',
+37: VALUE 'title',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:sheet-name",
+32: STRING
+31: ELEMENT "text:variable-set",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-name-attlist',
+35: ATTRIBUTE "text:name",
+36: REF 'variableName',
+37: DATA 'string',
+34: REF 'common-field-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:formula",
+37: REF 'formula',
+38: DATA 'string',
+36: EPSILON
+34: REF 'common-value-and-type-attlist',
+35: CHOICE
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'float',
+37: ATTRIBUTE "office:value",
+38: REF 'double',
+39: DATA 'double',
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'percentage',
+37: ATTRIBUTE "office:value",
+38: REF 'double',
+39: DATA 'double',
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'currency',
+37: ATTRIBUTE "office:value",
+38: REF 'double',
+39: DATA 'double',
+37: CHOICE
+38: ATTRIBUTE "office:currency",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'date',
+37: ATTRIBUTE "office:date-value",
+38: REF 'dateOrDateTime',
+39: CHOICE
+40: DATA 'date',
+40: DATA 'dateTime',
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'time',
+37: ATTRIBUTE "office:time-value",
+38: REF 'duration',
+39: DATA 'duration',
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'boolean',
+37: ATTRIBUTE "office:boolean-value",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+36: SEQUENCE
+37: ATTRIBUTE "office:value-type",
+38: VALUE 'string',
+37: CHOICE
+38: ATTRIBUTE "office:string-value",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+34: REF 'common-field-display-value-none-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'value',
+38: VALUE 'none',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:variable-get",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-name-attlist',
+35: ATTRIBUTE "text:name",
+36: REF 'variableName',
+37: DATA 'string',
+34: REF 'common-field-display-value-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'value',
+38: VALUE 'formula',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:variable-input",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-name-attlist',
+35: ATTRIBUTE "text:name",
+36: REF 'variableName',
+37: DATA 'string',
+34: REF 'common-field-description-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:description",
+37: STRING
+36: EPSILON
+34: REF 'common-value-type-attlist',
+35: ATTRIBUTE "office:value-type",
+36: REF 'valueType',
+37: CHOICE
+38: VALUE 'float',
+38: VALUE 'time',
+38: VALUE 'date',
+38: VALUE 'percentage',
+38: VALUE 'currency',
+38: VALUE 'boolean',
+38: VALUE 'string',
+34: REF 'common-field-display-value-none-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'value',
+38: VALUE 'none',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:user-field-get",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-name-attlist',
+35: ATTRIBUTE "text:name",
+36: REF 'variableName',
+37: DATA 'string',
+34: REF 'common-field-display-value-formula-none-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'value',
+38: VALUE 'formula',
+38: VALUE 'none',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:user-field-input",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-name-attlist',
+35: ATTRIBUTE "text:name",
+36: REF 'variableName',
+37: DATA 'string',
+34: REF 'common-field-description-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:description",
+37: STRING
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:sequence",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-name-attlist',
+35: ATTRIBUTE "text:name",
+36: REF 'variableName',
+37: DATA 'string',
+34: REF 'common-field-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:formula",
+37: REF 'formula',
+38: DATA 'string',
+36: EPSILON
+34: REF 'common-field-num-format-attlist',
+35: CHOICE
+36: REF 'common-num-format-attlist',
+37: CHOICE
+38: ATTRIBUTE "style:num-format",
+39: CHOICE
+40: VALUE '1',
+40: VALUE 'i',
+40: VALUE 'I',
+40: REF 'string',
+41: DATA 'string',
+40: EPSILON
+38: SEQUENCE
+39: ATTRIBUTE "style:num-format",
+40: CHOICE
+41: VALUE 'a',
+41: VALUE 'A',
+39: REF 'style-num-letter-sync-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:num-letter-sync",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+38: EPSILON
+36: EPSILON
+34: REF 'text-sequence-ref-name',
+35: CHOICE
+36: ATTRIBUTE "text:ref-name",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:expression",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:formula",
+37: REF 'formula',
+38: DATA 'string',
+36: EPSILON
+34: CHOICE
+35: REF 'common-value-and-type-attlist',
+36: CHOICE
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'float',
+38: ATTRIBUTE "office:value",
+39: REF 'double',
+40: DATA 'double',
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'percentage',
+38: ATTRIBUTE "office:value",
+39: REF 'double',
+40: DATA 'double',
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'currency',
+38: ATTRIBUTE "office:value",
+39: REF 'double',
+40: DATA 'double',
+38: CHOICE
+39: ATTRIBUTE "office:currency",
+40: REF 'string',
+41: DATA 'string',
+39: EPSILON
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'date',
+38: ATTRIBUTE "office:date-value",
+39: REF 'dateOrDateTime',
+40: CHOICE
+41: DATA 'date',
+41: DATA 'dateTime',
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'time',
+38: ATTRIBUTE "office:time-value",
+39: REF 'duration',
+40: DATA 'duration',
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'boolean',
+38: ATTRIBUTE "office:boolean-value",
+39: REF 'boolean',
+40: CHOICE
+41: VALUE 'true',
+41: VALUE 'false',
+37: SEQUENCE
+38: ATTRIBUTE "office:value-type",
+39: VALUE 'string',
+38: CHOICE
+39: ATTRIBUTE "office:string-value",
+40: REF 'string',
+41: DATA 'string',
+39: EPSILON
+35: EPSILON
+34: REF 'common-field-display-value-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'value',
+38: VALUE 'formula',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:text-input",
+32: SEQUENCE
+33: REF 'common-field-description-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:description",
+36: STRING
+35: EPSILON
+33: STRING
+31: ELEMENT "text:initial-creator",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:creation-date",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:date-value",
+36: REF 'dateOrDateTime',
+37: CHOICE
+38: DATA 'date',
+38: DATA 'dateTime',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:creation-time",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:time-value",
+36: REF 'timeOrDateTime',
+37: CHOICE
+38: DATA 'time',
+38: DATA 'dateTime',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:description",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:user-defined",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: ATTRIBUTE "text:name",
+35: REF 'string',
+36: DATA 'string',
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "office:value",
+36: REF 'double',
+37: DATA 'double',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "office:date-value",
+36: REF 'dateOrDateTime',
+37: CHOICE
+38: DATA 'date',
+38: DATA 'dateTime',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "office:time-value",
+36: REF 'duration',
+37: DATA 'duration',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "office:boolean-value",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "office:string-value",
+36: REF 'string',
+37: DATA 'string',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:print-time",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:time-value",
+36: REF 'time',
+37: DATA 'time',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:print-date",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:date-value",
+36: REF 'date',
+37: DATA 'date',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:printed-by",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:title",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:subject",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:keywords",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:editing-cycles",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:editing-duration",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:duration",
+36: REF 'duration',
+37: DATA 'duration',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:modification-time",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:time-value",
+36: REF 'time',
+37: DATA 'time',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:modification-date",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-fixed-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:fixed",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:date-value",
+36: REF 'date',
+37: DATA 'date',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:creator",
+32: SEQUENCE
+33: REF 'common-field-fixed-attlist',
+34: CHOICE
+35: ATTRIBUTE "text:fixed",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:page-count", "text:paragraph-count", "text:word-count", "text:character-count", "text:table-count", "text:image-count", "text:object-count",
+32: SEQUENCE
+33: REF 'common-field-num-format-attlist',
+34: CHOICE
+35: REF 'common-num-format-attlist',
+36: CHOICE
+37: ATTRIBUTE "style:num-format",
+38: CHOICE
+39: VALUE '1',
+39: VALUE 'i',
+39: VALUE 'I',
+39: REF 'string',
+40: DATA 'string',
+39: EPSILON
+37: SEQUENCE
+38: ATTRIBUTE "style:num-format",
+39: CHOICE
+40: VALUE 'a',
+40: VALUE 'A',
+38: REF 'style-num-letter-sync-attlist',
+39: CHOICE
+40: ATTRIBUTE "style:num-letter-sync",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+37: EPSILON
+35: EPSILON
+33: STRING
+31: ELEMENT "text:database-display",
+32: SEQUENCE
+33: REF 'text-database-display-attlist',
+34: INTERLEAVE
+35: REF 'common-field-database-table',
+36: SEQUENCE
+37: REF 'common-field-database-table-attlist',
+38: INTERLEAVE
+39: ATTRIBUTE "text:table-name",
+40: REF 'string',
+41: DATA 'string',
+39: CHOICE
+40: ATTRIBUTE "text:table-type",
+41: CHOICE
+42: VALUE 'table',
+42: VALUE 'query',
+42: VALUE 'command',
+40: EPSILON
+37: REF 'common-field-database-name',
+38: CHOICE
+39: ATTRIBUTE "text:database-name",
+40: REF 'string',
+41: DATA 'string',
+39: EPSILON
+39: REF 'form-connection-resource',
+35: REF 'common-field-data-style-name-attlist',
+36: CHOICE
+37: ATTRIBUTE "style:data-style-name",
+38: REF 'styleNameRef',
+39: CHOICE
+40: DATA 'NCName',
+40: EPSILON
+37: EPSILON
+35: ATTRIBUTE "text:column-name",
+36: REF 'string',
+37: DATA 'string',
+33: STRING
+31: ELEMENT "text:database-next",
+32: REF 'text-database-next-attlist',
+33: INTERLEAVE
+34: REF 'common-field-database-table',
+35: SEQUENCE
+36: REF 'common-field-database-table-attlist',
+37: INTERLEAVE
+38: ATTRIBUTE "text:table-name",
+39: REF 'string',
+40: DATA 'string',
+38: CHOICE
+39: ATTRIBUTE "text:table-type",
+40: CHOICE
+41: VALUE 'table',
+41: VALUE 'query',
+41: VALUE 'command',
+39: EPSILON
+36: REF 'common-field-database-name',
+37: CHOICE
+38: ATTRIBUTE "text:database-name",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+38: REF 'form-connection-resource',
+34: CHOICE
+35: ATTRIBUTE "text:condition",
+36: REF 'formula',
+37: DATA 'string',
+35: EPSILON
+31: ELEMENT "text:database-row-select",
+32: REF 'text-database-row-select-attlist',
+33: INTERLEAVE
+34: REF 'common-field-database-table',
+35: SEQUENCE
+36: REF 'common-field-database-table-attlist',
+37: INTERLEAVE
+38: ATTRIBUTE "text:table-name",
+39: REF 'string',
+40: DATA 'string',
+38: CHOICE
+39: ATTRIBUTE "text:table-type",
+40: CHOICE
+41: VALUE 'table',
+41: VALUE 'query',
+41: VALUE 'command',
+39: EPSILON
+36: REF 'common-field-database-name',
+37: CHOICE
+38: ATTRIBUTE "text:database-name",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+38: REF 'form-connection-resource',
+34: CHOICE
+35: ATTRIBUTE "text:condition",
+36: REF 'formula',
+37: DATA 'string',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:row-number",
+36: REF 'nonNegativeInteger',
+37: DATA 'nonNegativeInteger',
+35: EPSILON
+31: ELEMENT "text:database-row-number",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-database-table',
+35: SEQUENCE
+36: REF 'common-field-database-table-attlist',
+37: INTERLEAVE
+38: ATTRIBUTE "text:table-name",
+39: REF 'string',
+40: DATA 'string',
+38: CHOICE
+39: ATTRIBUTE "text:table-type",
+40: CHOICE
+41: VALUE 'table',
+41: VALUE 'query',
+41: VALUE 'command',
+39: EPSILON
+36: REF 'common-field-database-name',
+37: CHOICE
+38: ATTRIBUTE "text:database-name",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+38: REF 'form-connection-resource',
+34: REF 'common-field-num-format-attlist',
+35: CHOICE
+36: REF 'common-num-format-attlist',
+37: CHOICE
+38: ATTRIBUTE "style:num-format",
+39: CHOICE
+40: VALUE '1',
+40: VALUE 'i',
+40: VALUE 'I',
+40: REF 'string',
+41: DATA 'string',
+40: EPSILON
+38: SEQUENCE
+39: ATTRIBUTE "style:num-format",
+40: CHOICE
+41: VALUE 'a',
+41: VALUE 'A',
+39: REF 'style-num-letter-sync-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:num-letter-sync",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+38: EPSILON
+36: EPSILON
+34: CHOICE
+35: ATTRIBUTE "text:value",
+36: REF 'nonNegativeInteger',
+37: DATA 'nonNegativeInteger',
+35: EPSILON
+33: STRING
+31: ELEMENT "text:database-name",
+32: SEQUENCE
+33: REF 'common-field-database-table',
+34: SEQUENCE
+35: REF 'common-field-database-table-attlist',
+36: INTERLEAVE
+37: ATTRIBUTE "text:table-name",
+38: REF 'string',
+39: DATA 'string',
+37: CHOICE
+38: ATTRIBUTE "text:table-type",
+39: CHOICE
+40: VALUE 'table',
+40: VALUE 'query',
+40: VALUE 'command',
+38: EPSILON
+35: REF 'common-field-database-name',
+36: CHOICE
+37: ATTRIBUTE "text:database-name",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+37: REF 'form-connection-resource',
+33: STRING
+31: ELEMENT "text:page-variable-set",
+32: SEQUENCE
+33: REF 'text-set-page-variable-attlist',
+34: INTERLEAVE
+35: CHOICE
+36: ATTRIBUTE "text:active",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:page-adjust",
+37: REF 'integer',
+38: DATA 'integer',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:page-variable-get",
+32: SEQUENCE
+33: REF 'text-get-page-variable-attlist',
+34: REF 'common-field-num-format-attlist',
+35: CHOICE
+36: REF 'common-num-format-attlist',
+37: CHOICE
+38: ATTRIBUTE "style:num-format",
+39: CHOICE
+40: VALUE '1',
+40: VALUE 'i',
+40: VALUE 'I',
+40: REF 'string',
+41: DATA 'string',
+40: EPSILON
+38: SEQUENCE
+39: ATTRIBUTE "style:num-format",
+40: CHOICE
+41: VALUE 'a',
+41: VALUE 'A',
+39: REF 'style-num-letter-sync-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:num-letter-sync",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+38: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:placeholder",
+32: SEQUENCE
+33: REF 'text-placeholder-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "text:placeholder-type",
+36: CHOICE
+37: VALUE 'text',
+37: VALUE 'table',
+37: VALUE 'text-box',
+37: VALUE 'image',
+37: VALUE 'object',
+35: REF 'common-field-description-attlist',
+36: CHOICE
+37: ATTRIBUTE "text:description",
+38: STRING
+37: EPSILON
+33: STRING
+31: ELEMENT "text:conditional-text",
+32: SEQUENCE
+33: REF 'text-conditional-text-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "text:condition",
+36: REF 'formula',
+37: DATA 'string',
+35: ATTRIBUTE "text:string-value-if-true",
+36: REF 'string',
+37: DATA 'string',
+35: ATTRIBUTE "text:string-value-if-false",
+36: REF 'string',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "text:current-value",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:hidden-text",
+32: SEQUENCE
+33: REF 'text-hidden-text-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "text:condition",
+36: REF 'formula',
+37: DATA 'string',
+35: ATTRIBUTE "text:string-value",
+36: REF 'string',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "text:is-hidden",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:reference-ref", "text:bookmark-ref",
+32: INTERLEAVE
+33: REF 'text-common-ref-content',
+34: INTERLEAVE
+35: STRING
+35: CHOICE
+36: ATTRIBUTE "text:ref-name",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: REF 'text-ref-content',
+34: CHOICE
+35: ATTRIBUTE "text:reference-format",
+36: CHOICE
+37: VALUE 'page',
+37: VALUE 'chapter',
+37: VALUE 'direction',
+37: VALUE 'text',
+35: EPSILON
+31: ELEMENT "text:note-ref",
+32: INTERLEAVE
+33: REF 'text-common-ref-content',
+34: INTERLEAVE
+35: STRING
+35: CHOICE
+36: ATTRIBUTE "text:ref-name",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: REF 'text-note-ref-content',
+34: REF 'text-note-class',
+35: ATTRIBUTE "text:note-class",
+36: CHOICE
+37: VALUE 'footnote',
+37: VALUE 'endnote',
+33: REF 'text-ref-content',
+34: CHOICE
+35: ATTRIBUTE "text:reference-format",
+36: CHOICE
+37: VALUE 'page',
+37: VALUE 'chapter',
+37: VALUE 'direction',
+37: VALUE 'text',
+35: EPSILON
+31: ELEMENT "text:sequence-ref",
+32: INTERLEAVE
+33: REF 'text-common-ref-content',
+34: INTERLEAVE
+35: STRING
+35: CHOICE
+36: ATTRIBUTE "text:ref-name",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: REF 'text-sequence-ref-content',
+34: CHOICE
+35: ATTRIBUTE "text:reference-format",
+36: CHOICE
+37: VALUE 'page',
+37: VALUE 'chapter',
+37: VALUE 'direction',
+37: VALUE 'text',
+37: VALUE 'category-and-value',
+37: VALUE 'caption',
+37: VALUE 'value',
+35: EPSILON
+31: ELEMENT "text:script",
+32: INTERLEAVE
+33: CHOICE
+34: SEQUENCE
+35: ATTRIBUTE "xlink:href",
+36: REF 'anyURI',
+37: DATA 'anyURI',
+35: CHOICE
+36: ATTRIBUTE "xlink:type",
+37: VALUE 'simple',
+36: EPSILON
+34: STRING
+33: CHOICE
+34: ATTRIBUTE "script:language",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+31: ELEMENT "text:execute-macro",
+32: SEQUENCE
+33: CHOICE
+34: ATTRIBUTE "text:name",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+33: CHOICE
+34: REF 'office-event-listeners',
+34: EPSILON
+33: STRING
+31: ELEMENT "text:hidden-paragraph",
+32: SEQUENCE
+33: REF 'text-hidden-paragraph-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "text:condition",
+36: REF 'formula',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "text:is-hidden",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+33: STRING
+31: ELEMENT "text:dde-connection",
+32: SEQUENCE
+33: ATTRIBUTE "text:connection-name",
+34: REF 'string',
+35: DATA 'string',
+33: STRING
+31: ELEMENT "text:measure",
+32: SEQUENCE
+33: ATTRIBUTE "text:kind",
+34: CHOICE
+35: VALUE 'value',
+35: VALUE 'unit',
+35: VALUE 'gap',
+33: STRING
+31: ELEMENT "text:table-formula",
+32: SEQUENCE
+33: INTERLEAVE
+34: REF 'common-field-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:formula",
+37: REF 'formula',
+38: DATA 'string',
+36: EPSILON
+34: REF 'common-field-display-value-formula-attlist',
+35: CHOICE
+36: ATTRIBUTE "text:display",
+37: CHOICE
+38: VALUE 'value',
+38: VALUE 'formula',
+36: EPSILON
+34: REF 'common-field-data-style-name-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:data-style-name",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+33: STRING
+31: ELEMENT "text:toc-mark-start",
+32: REF 'text-toc-mark-start-attrs',
+33: SEQUENCE
+34: REF 'text-id',
+35: ATTRIBUTE "text:id",
+36: REF 'string',
+37: DATA 'string',
+34: REF 'text-outline-level',
+35: CHOICE
+36: ATTRIBUTE "text:outline-level",
+37: REF 'positiveInteger',
+38: DATA 'positiveInteger',
+36: EPSILON
+31: ELEMENT "text:toc-mark-end",
+32: REF 'text-id',
+33: ATTRIBUTE "text:id",
+34: REF 'string',
+35: DATA 'string',
+31: ELEMENT "text:toc-mark",
+32: SEQUENCE
+33: ATTRIBUTE "text:string-value",
+34: REF 'string',
+35: DATA 'string',
+33: REF 'text-outline-level',
+34: CHOICE
+35: ATTRIBUTE "text:outline-level",
+36: REF 'positiveInteger',
+37: DATA 'positiveInteger',
+35: EPSILON
+31: ELEMENT "text:user-index-mark-start",
+32: SEQUENCE
+33: REF 'text-id',
+34: ATTRIBUTE "text:id",
+35: REF 'string',
+36: DATA 'string',
+33: REF 'text-outline-level',
+34: CHOICE
+35: ATTRIBUTE "text:outline-level",
+36: REF 'positiveInteger',
+37: DATA 'positiveInteger',
+35: EPSILON
+33: REF 'text-index-name',
+34: ATTRIBUTE "text:index-name",
+35: REF 'string',
+36: DATA 'string',
+31: ELEMENT "text:user-index-mark-end",
+32: SEQUENCE
+33: REF 'text-id',
+34: ATTRIBUTE "text:id",
+35: REF 'string',
+36: DATA 'string',
+33: REF 'text-outline-level',
+34: CHOICE
+35: ATTRIBUTE "text:outline-level",
+36: REF 'positiveInteger',
+37: DATA 'positiveInteger',
+35: EPSILON
+31: ELEMENT "text:user-index-mark",
+32: SEQUENCE
+33: ATTRIBUTE "text:string-value",
+34: REF 'string',
+35: DATA 'string',
+33: REF 'text-outline-level',
+34: CHOICE
+35: ATTRIBUTE "text:outline-level",
+36: REF 'positiveInteger',
+37: DATA 'positiveInteger',
+35: EPSILON
+33: REF 'text-index-name',
+34: ATTRIBUTE "text:index-name",
+35: REF 'string',
+36: DATA 'string',
+31: ELEMENT "text:alphabetical-index-mark-start",
+32: SEQUENCE
+33: REF 'text-id',
+34: ATTRIBUTE "text:id",
+35: REF 'string',
+36: DATA 'string',
+33: REF 'text-alphabetical-index-mark-attrs',
+34: INTERLEAVE
+35: SEQUENCE
+36: CHOICE
+37: ATTRIBUTE "text:key1",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:key2",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+35: SEQUENCE
+36: CHOICE
+37: ATTRIBUTE "text:string-value-phonetic",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:key1-phonetic",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:key2-phonetic",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:main-entry",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+31: ELEMENT "text:alphabetical-index-mark-end",
+32: REF 'text-id',
+33: ATTRIBUTE "text:id",
+34: REF 'string',
+35: DATA 'string',
+31: ELEMENT "text:alphabetical-index-mark",
+32: SEQUENCE
+33: ATTRIBUTE "text:string-value",
+34: REF 'string',
+35: DATA 'string',
+33: REF 'text-alphabetical-index-mark-attrs',
+34: INTERLEAVE
+35: SEQUENCE
+36: CHOICE
+37: ATTRIBUTE "text:key1",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:key2",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+35: SEQUENCE
+36: CHOICE
+37: ATTRIBUTE "text:string-value-phonetic",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:key1-phonetic",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "text:key2-phonetic",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+35: CHOICE
+36: ATTRIBUTE "text:main-entry",
+37: REF 'boolean',
+38: CHOICE
+39: VALUE 'true',
+39: VALUE 'false',
+36: EPSILON
+31: ELEMENT "text:bibliography-mark",
+32: SEQUENCE
+33: ATTRIBUTE "text:bibliography-type",
+34: REF 'text-bibliography-types',
+35: CHOICE
+36: VALUE 'article',
+36: VALUE 'book',
+36: VALUE 'booklet',
+36: VALUE 'conference',
+36: VALUE 'custom1',
+36: VALUE 'custom2',
+36: VALUE 'custom3',
+36: VALUE 'custom4',
+36: VALUE 'custom5',
+36: VALUE 'email',
+36: VALUE 'inbook',
+36: VALUE 'incollection',
+36: VALUE 'inproceedings',
+36: VALUE 'journal',
+36: VALUE 'manual',
+36: VALUE 'mastersthesis',
+36: VALUE 'misc',
+36: VALUE 'phdthesis',
+36: VALUE 'proceedings',
+36: VALUE 'techreport',
+36: VALUE 'unpublished',
+36: VALUE 'www',
+33: CHOICE
+34: ONEOREMORE
+35: ATTRIBUTE "text:identifier", "text:address", "text:annote", "text:author", "text:booktitle", "text:chapter", "text:edition", "text:editor", "text:howpublished", "text:institution", "text:journal", "text:month", "text:note", "text:number", "text:organizations", "text:pages", "text:publisher", "text:school", "text:series", "text:title", "text:report-type", "text:volume", "text:year", "text:url", "text:custom1", "text:custom2", "text:custom3", "text:custom4", "text:custom5", "text:isbn", "text:issn",
+36: REF 'string',
+37: DATA 'string',
+34: EPSILON
+33: STRING
+31: ELEMENT "presentation:header",
+32: EPSILON
+31: ELEMENT "presentation:footer",
+32: EPSILON
+31: ELEMENT "presentation:date-time",
+32: EPSILON
+28: EPSILON
+24: REF 'text-p',
+24: REF 'text-list',
+24: REF 'table-table',
+24: REF 'text-section',
+24: REF 'text-table-of-content',
+24: REF 'text-illustration-index',
+24: REF 'text-table-index',
+24: REF 'text-object-index',
+24: REF 'text-user-index',
+24: REF 'text-alphabetical-index',
+24: REF 'text-bibliography',
+24: REF 'text-index-title',
+24: REF 'change-marks',
+25: CHOICE
+22: EPSILON
+20: SEQUENCE
+21: CHOICE
+22: REF 'style-region-left',
+23: ELEMENT "style:region-left",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-center',
+23: ELEMENT "style:region-center",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-right',
+23: ELEMENT "style:region-right",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+15: CHOICE
+16: REF 'style-header-left',
+17: ELEMENT "style:header-left",
+18: SEQUENCE
+19: REF 'common-style-header-footer-attlist',
+20: CHOICE
+21: ATTRIBUTE "style:display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+19: REF 'header-footer-content',
+20: CHOICE
+21: SEQUENCE
+22: REF 'text-decls',
+23: SEQUENCE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+25: REF 'text-alphabetical-index-auto-mark-file',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: CHOICE
+25: REF 'text-h',
+25: REF 'text-p',
+25: REF 'text-list',
+25: REF 'table-table',
+25: REF 'text-section',
+25: REF 'text-table-of-content',
+25: REF 'text-illustration-index',
+25: REF 'text-table-index',
+25: REF 'text-object-index',
+25: REF 'text-user-index',
+25: REF 'text-alphabetical-index',
+25: REF 'text-bibliography',
+25: REF 'text-index-title',
+25: REF 'change-marks',
+26: CHOICE
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'style-region-left',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-center',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-right',
+23: EPSILON
+16: EPSILON
+14: EPSILON
+13: CHOICE
+14: SEQUENCE
+15: REF 'style-footer',
+16: ELEMENT "style:footer",
+17: SEQUENCE
+18: REF 'common-style-header-footer-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:display",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+18: REF 'header-footer-content',
+19: CHOICE
+20: SEQUENCE
+21: REF 'text-decls',
+22: SEQUENCE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+24: REF 'text-alphabetical-index-auto-mark-file',
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'text-h',
+24: REF 'text-p',
+24: REF 'text-list',
+24: REF 'table-table',
+24: REF 'text-section',
+24: REF 'text-table-of-content',
+24: REF 'text-illustration-index',
+24: REF 'text-table-index',
+24: REF 'text-object-index',
+24: REF 'text-user-index',
+24: REF 'text-alphabetical-index',
+24: REF 'text-bibliography',
+24: REF 'text-index-title',
+24: REF 'change-marks',
+25: CHOICE
+22: EPSILON
+20: SEQUENCE
+21: CHOICE
+22: REF 'style-region-left',
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-center',
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-right',
+22: EPSILON
+15: CHOICE
+16: REF 'style-footer-left',
+17: ELEMENT "style:footer-left",
+18: SEQUENCE
+19: REF 'common-style-header-footer-attlist',
+20: CHOICE
+21: ATTRIBUTE "style:display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+19: REF 'header-footer-content',
+20: CHOICE
+21: SEQUENCE
+22: REF 'text-decls',
+23: SEQUENCE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+25: REF 'text-alphabetical-index-auto-mark-file',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: CHOICE
+25: REF 'text-h',
+25: REF 'text-p',
+25: REF 'text-list',
+25: REF 'table-table',
+25: REF 'text-section',
+25: REF 'text-table-of-content',
+25: REF 'text-illustration-index',
+25: REF 'text-table-index',
+25: REF 'text-object-index',
+25: REF 'text-user-index',
+25: REF 'text-alphabetical-index',
+25: REF 'text-bibliography',
+25: REF 'text-index-title',
+25: REF 'change-marks',
+26: CHOICE
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'style-region-left',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-center',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-right',
+23: EPSILON
+16: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'office-forms',
+15: CHOICE
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'style-style',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'shape',
+16: CHOICE
+17: REF 'draw-rect',
+17: REF 'draw-line',
+17: REF 'draw-polyline',
+17: REF 'draw-polygon',
+17: REF 'draw-regular-polygon',
+17: REF 'draw-path',
+17: REF 'draw-circle',
+17: REF 'draw-ellipse',
+17: REF 'draw-g',
+17: REF 'draw-page-thumbnail',
+17: REF 'draw-frame',
+17: REF 'draw-measure',
+17: REF 'draw-caption',
+17: REF 'draw-connector',
+17: REF 'draw-control',
+17: REF 'dr3d-scene',
+17: REF 'draw-custom-shape',
+14: EPSILON
+13: CHOICE
+14: REF 'presentation-notes',
+15: ELEMENT "presentation:notes",
+16: SEQUENCE
+17: REF 'common-presentation-header-footer-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: ATTRIBUTE "presentation:use-header-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:use-footer-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:use-date-time-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+17: REF 'presentation-notes-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: ATTRIBUTE "style:page-layout-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "draw:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'shape',
+20: CHOICE
+21: REF 'draw-rect',
+21: REF 'draw-line',
+21: REF 'draw-polyline',
+21: REF 'draw-polygon',
+21: REF 'draw-regular-polygon',
+21: REF 'draw-path',
+21: REF 'draw-circle',
+21: REF 'draw-ellipse',
+21: REF 'draw-g',
+21: REF 'draw-page-thumbnail',
+21: REF 'draw-frame',
+21: REF 'draw-measure',
+21: REF 'draw-caption',
+21: REF 'draw-connector',
+21: REF 'draw-control',
+21: REF 'dr3d-scene',
+21: REF 'draw-custom-shape',
+18: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'style-handout-master',
+10: ELEMENT "style:handout-master",
+11: SEQUENCE
+12: REF 'common-presentation-header-footer-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "presentation:use-header-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "presentation:use-footer-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "presentation:use-date-time-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+12: REF 'style-handout-master-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "presentation:presentation-page-layout-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+14: ATTRIBUTE "style:page-layout-name",
+15: REF 'styleNameRef',
+16: CHOICE
+17: DATA 'NCName',
+17: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:style-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+12: CHOICE
+13: ONEOREMORE
+14: REF 'shape',
+15: CHOICE
+16: REF 'draw-rect',
+16: REF 'draw-line',
+16: REF 'draw-polyline',
+16: REF 'draw-polygon',
+16: REF 'draw-regular-polygon',
+16: REF 'draw-path',
+16: REF 'draw-circle',
+16: REF 'draw-ellipse',
+16: REF 'draw-g',
+16: REF 'draw-page-thumbnail',
+16: REF 'draw-frame',
+16: REF 'draw-measure',
+16: REF 'draw-caption',
+16: REF 'draw-connector',
+16: REF 'draw-control',
+16: REF 'dr3d-scene',
+16: REF 'draw-custom-shape',
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'draw-layer-set',
+10: ELEMENT "draw:layer-set",
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-layer',
+14: ELEMENT "draw:layer",
+15: REF 'draw-layer-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "draw:name",
+18: REF 'string',
+19: DATA 'string',
+17: CHOICE
+18: ATTRIBUTE "draw:protected",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "draw:display",
+19: CHOICE
+20: VALUE 'always',
+20: VALUE 'screen',
+20: VALUE 'printer',
+20: VALUE 'none',
+18: EPSILON
+12: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-body',
+5: ELEMENT "office:body",
+6: REF 'office-body-content',
+7: CHOICE
+8: ELEMENT "office:text",
+9: SEQUENCE
+10: REF 'office-text-attlist',
+11: CHOICE
+12: ATTRIBUTE "text:global",
+13: REF 'boolean',
+14: CHOICE
+15: VALUE 'true',
+15: VALUE 'false',
+12: EPSILON
+10: REF 'office-text-content-prelude',
+11: SEQUENCE
+12: REF 'office-forms',
+13: CHOICE
+12: REF 'text-tracked-changes',
+13: CHOICE
+14: ELEMENT "text:tracked-changes",
+15: SEQUENCE
+16: REF 'text-tracked-changes-attr',
+17: CHOICE
+18: ATTRIBUTE "text:track-changes",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'text-changed-region',
+19: ELEMENT "text:changed-region",
+20: SEQUENCE
+21: REF 'text-changed-region-attr',
+22: ATTRIBUTE "text:id",
+23: REF 'ID',
+24: DATA 'ID',
+21: REF 'text-changed-region-content',
+22: CHOICE
+23: ELEMENT "text:insertion",
+24: REF 'office-change-info',
+25: ELEMENT "office:change-info",
+26: SEQUENCE
+27: REF 'dc-creator',
+27: REF 'dc-date',
+27: CHOICE
+28: ONEOREMORE
+29: REF 'text-p',
+28: EPSILON
+23: ELEMENT "text:deletion",
+24: SEQUENCE
+25: REF 'office-change-info',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-content',
+28: CHOICE
+29: REF 'text-h',
+29: REF 'text-p',
+29: REF 'text-list',
+29: REF 'text-numbered-paragraph',
+29: REF 'table-table',
+29: REF 'draw-a',
+29: REF 'text-section',
+29: REF 'text-table-of-content',
+29: REF 'text-illustration-index',
+29: REF 'text-table-index',
+29: REF 'text-object-index',
+29: REF 'text-user-index',
+29: REF 'text-alphabetical-index',
+29: REF 'text-bibliography',
+29: REF 'shape',
+30: CHOICE
+31: REF 'draw-rect',
+31: REF 'draw-line',
+31: REF 'draw-polyline',
+31: REF 'draw-polygon',
+31: REF 'draw-regular-polygon',
+31: REF 'draw-path',
+31: REF 'draw-circle',
+31: REF 'draw-ellipse',
+31: REF 'draw-g',
+31: REF 'draw-page-thumbnail',
+31: REF 'draw-frame',
+31: REF 'draw-measure',
+31: REF 'draw-caption',
+31: REF 'draw-connector',
+31: REF 'draw-control',
+31: REF 'dr3d-scene',
+31: REF 'draw-custom-shape',
+29: REF 'change-marks',
+30: CHOICE
+26: EPSILON
+23: ELEMENT "text:format-change",
+24: REF 'office-change-info',
+17: EPSILON
+14: EPSILON
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+16: ELEMENT "table:calculation-settings",
+17: SEQUENCE
+18: REF 'table-calculation-setting-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:case-sensitive",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:precision-as-shown",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:search-criteria-must-apply-to-whole-cell",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:automatic-find-labels",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:use-regular-expressions",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:null-year",
+22: REF 'positiveInteger',
+23: DATA 'positiveInteger',
+21: EPSILON
+18: CHOICE
+19: REF 'table-null-date',
+20: ELEMENT "table:null-date",
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "table:value-type",
+24: REF 'valueType',
+25: CHOICE
+26: VALUE 'float',
+26: VALUE 'time',
+26: VALUE 'date',
+26: VALUE 'percentage',
+26: VALUE 'currency',
+26: VALUE 'boolean',
+26: VALUE 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:date-value-type",
+24: REF 'date',
+25: DATA 'date',
+23: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'table-iteration',
+20: ELEMENT "table:iteration",
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "table:status",
+24: CHOICE
+25: VALUE 'enable',
+25: VALUE 'disable',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:steps",
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:maximum-difference",
+24: REF 'double',
+25: DATA 'double',
+23: EPSILON
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+16: ELEMENT "table:content-validations",
+17: ONEOREMORE
+18: REF 'table-content-validation',
+19: ELEMENT "table:content-validation",
+20: SEQUENCE
+21: REF 'table-validation-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:condition",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:allow-empty-cell",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:display-list",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'unsorted',
+26: VALUE 'sort-ascending',
+24: EPSILON
+21: CHOICE
+22: REF 'table-help-message',
+23: ELEMENT "table:help-message",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:title",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'table-error-message',
+23: ELEMENT "table:error-message",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:title",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:message-type",
+27: CHOICE
+28: VALUE 'stop',
+28: VALUE 'warning',
+28: VALUE 'information',
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: SEQUENCE
+23: REF 'table-error-macro',
+24: ELEMENT "table:error-macro",
+25: CHOICE
+26: ATTRIBUTE "table:execute",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: CHOICE
+24: REF 'office-event-listeners',
+24: EPSILON
+22: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+16: ELEMENT "table:label-ranges",
+17: CHOICE
+18: ONEOREMORE
+19: REF 'table-label-range',
+20: ELEMENT "table:label-range",
+21: REF 'table-label-range-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:label-cell-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: ATTRIBUTE "table:data-cell-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: ATTRIBUTE "table:orientation",
+24: CHOICE
+25: VALUE 'column',
+25: VALUE 'row',
+18: EPSILON
+15: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'office-text-content-main',
+13: CHOICE
+14: ONEOREMORE
+15: REF 'text-content',
+16: CHOICE
+17: REF 'text-h',
+17: REF 'text-p',
+17: REF 'text-list',
+17: REF 'text-numbered-paragraph',
+17: REF 'table-table',
+17: REF 'draw-a',
+17: REF 'text-section',
+17: REF 'text-table-of-content',
+17: REF 'text-illustration-index',
+17: REF 'text-table-index',
+17: REF 'text-object-index',
+17: REF 'text-user-index',
+17: REF 'text-alphabetical-index',
+17: REF 'text-bibliography',
+17: REF 'shape',
+18: CHOICE
+19: REF 'draw-rect',
+19: REF 'draw-line',
+19: REF 'draw-polyline',
+19: REF 'draw-polygon',
+19: REF 'draw-regular-polygon',
+19: REF 'draw-path',
+19: REF 'draw-circle',
+19: REF 'draw-ellipse',
+19: REF 'draw-g',
+19: REF 'draw-page-thumbnail',
+19: REF 'draw-frame',
+19: REF 'draw-measure',
+19: REF 'draw-caption',
+19: REF 'draw-connector',
+19: REF 'draw-control',
+19: REF 'dr3d-scene',
+19: REF 'draw-custom-shape',
+17: REF 'change-marks',
+18: CHOICE
+14: EPSILON
+14: SEQUENCE
+15: REF 'text-page-sequence',
+16: ELEMENT "text:page-sequence",
+17: ONEOREMORE
+18: REF 'text-page',
+19: ELEMENT "text:page",
+20: REF 'text-page-attlist',
+21: ATTRIBUTE "text:master-page-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: CHOICE
+18: REF 'draw-a',
+18: REF 'shape',
+19: CHOICE
+20: REF 'draw-rect',
+20: REF 'draw-line',
+20: REF 'draw-polyline',
+20: REF 'draw-polygon',
+20: REF 'draw-regular-polygon',
+20: REF 'draw-path',
+20: REF 'draw-circle',
+20: REF 'draw-ellipse',
+20: REF 'draw-g',
+20: REF 'draw-page-thumbnail',
+20: REF 'draw-frame',
+20: REF 'draw-measure',
+20: REF 'draw-caption',
+20: REF 'draw-connector',
+20: REF 'draw-control',
+20: REF 'dr3d-scene',
+20: REF 'draw-custom-shape',
+16: EPSILON
+11: EPSILON
+10: REF 'office-text-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+15: ELEMENT "table:named-expressions",
+16: CHOICE
+17: ONEOREMORE
+18: CHOICE
+19: REF 'table-named-range',
+20: ELEMENT "table:named-range",
+21: REF 'table-named-range-attlist',
+22: SEQUENCE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: ATTRIBUTE "table:cell-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:range-usable-as",
+25: CHOICE
+26: VALUE 'none',
+26: LIST
+27: ONEOREMORE
+28: CHOICE
+29: VALUE 'print-range',
+29: VALUE 'filter',
+29: VALUE 'repeat-row',
+29: VALUE 'repeat-column',
+24: EPSILON
+19: REF 'table-named-expression',
+20: ELEMENT "table:named-expression",
+21: REF 'table-named-expression-attlist',
+22: SEQUENCE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: ATTRIBUTE "table:expression",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+15: ELEMENT "table:database-ranges",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'table-database-range',
+19: ELEMENT "table:database-range",
+20: SEQUENCE
+21: REF 'table-database-range-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "table:name",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:is-selection",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:on-update-keep-styles",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:on-update-keep-size",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:has-persistent-data",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:orientation",
+25: CHOICE
+26: VALUE 'column',
+26: VALUE 'row',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:contains-header",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:display-filter-buttons",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: ATTRIBUTE "table:target-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:refresh-delay",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: CHOICE
+22: REF 'table-database-source-sql',
+23: ELEMENT "table:database-source-sql",
+24: REF 'table-database-source-sql-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:sql-statement",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "table:parse-sql-statement",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+22: REF 'table-database-source-table',
+23: ELEMENT "table:database-source-query",
+24: REF 'table-database-source-query-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:query-name",
+27: REF 'string',
+28: DATA 'string',
+22: REF 'table-database-source-query',
+23: ELEMENT "table:database-source-table",
+24: REF 'table-database-source-table-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:database-table-name",
+27: REF 'string',
+28: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: REF 'table-filter',
+23: ELEMENT "table:filter",
+24: SEQUENCE
+25: REF 'table-filter-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:target-range-address",
+29: REF 'cellRangeAddress',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:condition-source",
+29: CHOICE
+30: VALUE 'self',
+30: VALUE 'cell-range',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:condition-source-range-address",
+29: REF 'cellRangeAddress',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:display-duplicates",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: CHOICE
+26: REF 'table-filter-condition',
+27: ELEMENT "table:filter-condition",
+28: REF 'table-filter-condition-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-number",
+31: REF 'nonNegativeInteger',
+32: DATA 'nonNegativeInteger',
+30: ATTRIBUTE "table:value",
+31: REF 'string',
+32: DATA 'string',
+30: ATTRIBUTE "table:operator",
+31: REF 'string',
+32: DATA 'string',
+30: CHOICE
+31: ATTRIBUTE "table:case-sensitive",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+31: EPSILON
+26: REF 'table-filter-and',
+27: ELEMENT "table:filter-and",
+28: ONEOREMORE
+29: CHOICE
+30: REF 'table-filter-or',
+31: ELEMENT "table:filter-or",
+32: ONEOREMORE
+33: CHOICE
+34: REF 'table-filter-and',
+34: REF 'table-filter-condition',
+30: REF 'table-filter-condition',
+26: REF 'table-filter-or',
+22: EPSILON
+21: CHOICE
+22: REF 'table-sort',
+23: ELEMENT "table:sort",
+24: SEQUENCE
+25: REF 'table-sort-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:bind-styles-to-content",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:target-range-address",
+29: REF 'cellRangeAddress',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:case-sensitive",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:language",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:country",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:algorithm",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: ONEOREMORE
+26: REF 'table-sort-by',
+27: ELEMENT "table:sort-by",
+28: REF 'table-sort-by-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-number",
+31: REF 'nonNegativeInteger',
+32: DATA 'nonNegativeInteger',
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+33: VALUE 'automatic',
+33: REF 'string',
+34: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:order",
+32: CHOICE
+33: VALUE 'ascending',
+33: VALUE 'descending',
+31: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'table-subtotal-rules',
+23: ELEMENT "table:subtotal-rules",
+24: SEQUENCE
+25: REF 'table-subtotal-rules-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:bind-styles-to-content",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:case-sensitive",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:page-breaks-on-group-change",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: CHOICE
+26: REF 'table-sort-groups',
+27: ELEMENT "table:sort-groups",
+28: REF 'table-sort-groups-attlist',
+29: INTERLEAVE
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+33: VALUE 'automatic',
+33: REF 'string',
+34: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:order",
+32: CHOICE
+33: VALUE 'ascending',
+33: VALUE 'descending',
+31: EPSILON
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'table-subtotal-rule',
+28: ELEMENT "table:subtotal-rule",
+29: SEQUENCE
+30: REF 'table-subtotal-rule-attlist',
+31: ATTRIBUTE "table:group-by-field-number",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+30: CHOICE
+31: ONEOREMORE
+32: REF 'table-subtotal-field',
+33: ELEMENT "table:subtotal-field",
+34: REF 'table-subtotal-field-attlist',
+35: INTERLEAVE
+36: ATTRIBUTE "table:field-number",
+37: REF 'nonNegativeInteger',
+38: DATA 'nonNegativeInteger',
+36: ATTRIBUTE "table:function",
+37: CHOICE
+38: VALUE 'auto',
+38: VALUE 'average',
+38: VALUE 'count',
+38: VALUE 'countnums',
+38: VALUE 'max',
+38: VALUE 'min',
+38: VALUE 'product',
+38: VALUE 'stdev',
+38: VALUE 'stdevp',
+38: VALUE 'sum',
+38: VALUE 'var',
+38: VALUE 'varp',
+38: REF 'string',
+39: DATA 'string',
+31: EPSILON
+26: EPSILON
+22: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+15: ELEMENT "table:data-pilot-tables",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'table-data-pilot-table',
+19: ELEMENT "table:data-pilot-table",
+20: SEQUENCE
+21: REF 'table-data-pilot-table-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:application-data",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:grand-total",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'both',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:ignore-empty-rows",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:identify-categories",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: ATTRIBUTE "table:target-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:buttons",
+25: REF 'cellRangeAddressList',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:show-filter-button",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:drill-down-on-double-click",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: CHOICE
+22: REF 'table-database-source-sql',
+22: REF 'table-database-source-table',
+22: REF 'table-database-source-query',
+22: REF 'table-source-service',
+23: ELEMENT "table:source-service",
+24: REF 'table-source-service-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:source-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:object-name",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "table:user-name",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:password",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+22: REF 'table-source-cell-range',
+23: ELEMENT "table:source-cell-range",
+24: SEQUENCE
+25: REF 'table-source-cell-range-attlist',
+26: ATTRIBUTE "table:cell-range-address",
+27: REF 'cellRangeAddress',
+28: DATA 'string',
+25: CHOICE
+26: REF 'table-filter',
+26: EPSILON
+22: EPSILON
+21: ONEOREMORE
+22: REF 'table-data-pilot-field',
+23: ELEMENT "table:data-pilot-field",
+24: SEQUENCE
+25: REF 'table-data-pilot-field-attlist',
+26: INTERLEAVE
+27: ATTRIBUTE "table:source-field-name",
+28: REF 'string',
+29: DATA 'string',
+27: CHOICE
+28: ATTRIBUTE "table:orientation",
+29: CHOICE
+30: VALUE 'row',
+30: VALUE 'column',
+30: VALUE 'data',
+30: VALUE 'hidden',
+28: SEQUENCE
+29: ATTRIBUTE "table:orientation",
+30: VALUE 'page',
+29: ATTRIBUTE "table:selected-page",
+30: REF 'string',
+31: DATA 'string',
+27: CHOICE
+28: ATTRIBUTE "table:is-data-layout-field",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:function",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'average',
+30: VALUE 'count',
+30: VALUE 'countnums',
+30: VALUE 'max',
+30: VALUE 'min',
+30: VALUE 'product',
+30: VALUE 'stdev',
+30: VALUE 'stdevp',
+30: VALUE 'sum',
+30: VALUE 'var',
+30: VALUE 'varp',
+30: REF 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:used-hierarchy",
+29: REF 'integer',
+30: DATA 'integer',
+28: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-level',
+27: ELEMENT "table:data-pilot-level",
+28: SEQUENCE
+29: REF 'table-data-pilot-level-attlist',
+30: CHOICE
+31: ATTRIBUTE "table:show-empty",
+32: REF 'boolean',
+33: CHOICE
+34: VALUE 'true',
+34: VALUE 'false',
+31: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-subtotals',
+31: ELEMENT "table:data-pilot-subtotals",
+32: CHOICE
+33: ONEOREMORE
+34: REF 'table-data-pilot-subtotal',
+35: ELEMENT "table:data-pilot-subtotal",
+36: REF 'table-data-pilot-subtotal-attlist',
+37: ATTRIBUTE "table:function",
+38: CHOICE
+39: VALUE 'auto',
+39: VALUE 'average',
+39: VALUE 'count',
+39: VALUE 'countnums',
+39: VALUE 'max',
+39: VALUE 'min',
+39: VALUE 'product',
+39: VALUE 'stdev',
+39: VALUE 'stdevp',
+39: VALUE 'sum',
+39: VALUE 'var',
+39: VALUE 'varp',
+39: REF 'string',
+40: DATA 'string',
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-members',
+31: ELEMENT "table:data-pilot-members",
+32: CHOICE
+33: ONEOREMORE
+34: REF 'table-data-pilot-member',
+35: ELEMENT "table:data-pilot-member",
+36: REF 'table-data-pilot-member-attlist',
+37: INTERLEAVE
+38: ATTRIBUTE "table:name",
+39: REF 'string',
+40: DATA 'string',
+38: CHOICE
+39: ATTRIBUTE "table:display",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+38: CHOICE
+39: ATTRIBUTE "table:show-details",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-display-info',
+31: ELEMENT "table:data-pilot-display-info",
+32: REF 'table-data-pilot-display-info-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "table:enabled",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: ATTRIBUTE "table:data-field",
+35: REF 'string',
+36: DATA 'string',
+34: ATTRIBUTE "table:member-count",
+35: REF 'nonNegativeInteger',
+36: DATA 'nonNegativeInteger',
+34: ATTRIBUTE "table:display-member-mode",
+35: CHOICE
+36: VALUE 'from-top',
+36: VALUE 'from-bottom',
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-sort-info',
+31: ELEMENT "table:data-pilot-sort-info",
+32: REF 'table-data-pilot-sort-info-attlist',
+33: INTERLEAVE
+34: CHOICE
+35: SEQUENCE
+36: ATTRIBUTE "table:sort-mode",
+37: VALUE 'data',
+36: ATTRIBUTE "table:data-field",
+37: REF 'string',
+38: DATA 'string',
+35: ATTRIBUTE "table:sort-mode",
+36: CHOICE
+37: VALUE 'none',
+37: VALUE 'manual',
+37: VALUE 'name',
+34: ATTRIBUTE "table:order",
+35: CHOICE
+36: VALUE 'ascending',
+36: VALUE 'descending',
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-layout-info',
+31: ELEMENT "table:data-pilot-layout-info",
+32: REF 'table-data-pilot-layout-info-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "table:layout-mode",
+35: CHOICE
+36: VALUE 'tabular-layout',
+36: VALUE 'outline-subtotals-top',
+36: VALUE 'outline-subtotals-bottom',
+34: ATTRIBUTE "table:add-empty-lines",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+30: EPSILON
+26: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-field-reference',
+27: ELEMENT "table:data-pilot-field-reference",
+28: REF 'table-data-pilot-field-reference-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-name",
+31: REF 'string',
+32: DATA 'string',
+30: CHOICE
+31: SEQUENCE
+32: ATTRIBUTE "table:member-type",
+33: VALUE 'named',
+32: ATTRIBUTE "table:member-name",
+33: REF 'string',
+34: DATA 'string',
+31: ATTRIBUTE "table:member-type",
+32: CHOICE
+33: VALUE 'previous',
+33: VALUE 'next',
+30: ATTRIBUTE "table:type",
+31: CHOICE
+32: VALUE 'none',
+32: VALUE 'member-difference',
+32: VALUE 'member-percentage',
+32: VALUE 'member-percentage-difference',
+32: VALUE 'running-total',
+32: VALUE 'row-percentage',
+32: VALUE 'column-percentage',
+32: VALUE 'total-percentage',
+32: VALUE 'index',
+26: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-groups',
+27: ELEMENT "table:data-pilot-groups",
+28: SEQUENCE
+29: REF 'table-data-pilot-groups-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:source-field-name",
+32: REF 'string',
+33: DATA 'string',
+31: CHOICE
+32: ATTRIBUTE "table:date-start",
+33: CHOICE
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+34: VALUE 'auto',
+32: ATTRIBUTE "table:start",
+33: CHOICE
+34: REF 'double',
+35: DATA 'double',
+34: VALUE 'auto',
+31: CHOICE
+32: ATTRIBUTE "table:date-end",
+33: CHOICE
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+34: VALUE 'auto',
+32: ATTRIBUTE "table:end",
+33: CHOICE
+34: REF 'double',
+35: DATA 'double',
+34: VALUE 'auto',
+31: ATTRIBUTE "table:step",
+32: REF 'double',
+33: DATA 'double',
+31: ATTRIBUTE "table:grouped-by",
+32: CHOICE
+33: VALUE 'seconds',
+33: VALUE 'minutes',
+33: VALUE 'hours',
+33: VALUE 'days',
+33: VALUE 'months',
+33: VALUE 'quarters',
+33: VALUE 'years',
+29: ONEOREMORE
+30: REF 'table-data-pilot-group',
+31: ELEMENT "table:data-pilot-group",
+32: SEQUENCE
+33: REF 'table-data-pilot-group-attlist',
+34: ATTRIBUTE "table:name",
+35: REF 'string',
+36: DATA 'string',
+33: ONEOREMORE
+34: REF 'table-data-pilot-group-member',
+35: ELEMENT "table:data-pilot-group-member",
+36: REF 'table-data-pilot-group-member-attlist',
+37: ATTRIBUTE "table:name",
+38: REF 'string',
+39: DATA 'string',
+26: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+15: ELEMENT "table:consolidation",
+16: REF 'table-consolidation-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "table:function",
+19: CHOICE
+20: VALUE 'auto',
+20: VALUE 'average',
+20: VALUE 'count',
+20: VALUE 'countnums',
+20: VALUE 'max',
+20: VALUE 'min',
+20: VALUE 'product',
+20: VALUE 'stdev',
+20: VALUE 'stdevp',
+20: VALUE 'sum',
+20: VALUE 'var',
+20: VALUE 'varp',
+20: REF 'string',
+21: DATA 'string',
+18: ATTRIBUTE "table:source-cell-range-addresses",
+19: REF 'cellRangeAddressList',
+20: DATA 'string',
+18: ATTRIBUTE "table:target-cell-address",
+19: REF 'cellAddress',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "table:use-labels",
+20: CHOICE
+21: VALUE 'none',
+21: VALUE 'row',
+21: VALUE 'column',
+21: VALUE 'both',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:link-to-source-data",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+15: ELEMENT "table:dde-links",
+16: ONEOREMORE
+17: REF 'table-dde-link',
+18: ELEMENT "table:dde-link",
+19: SEQUENCE
+20: REF 'office-dde-source',
+20: REF 'table-table',
+14: EPSILON
+8: ELEMENT "office:drawing",
+9: SEQUENCE
+10: REF 'office-drawing-attlist',
+11: EPSILON
+10: REF 'office-drawing-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-drawing-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-page',
+14: ELEMENT "draw:page",
+15: SEQUENCE
+16: REF 'common-presentation-header-footer-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "presentation:use-header-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:use-footer-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:use-date-time-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+16: REF 'draw-page-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "draw:name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: ATTRIBUTE "draw:master-page-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:presentation-page-layout-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:id",
+20: REF 'ID',
+21: DATA 'ID',
+19: EPSILON
+16: CHOICE
+17: REF 'office-forms',
+18: CHOICE
+17: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'shape',
+19: CHOICE
+20: REF 'draw-rect',
+20: REF 'draw-line',
+20: REF 'draw-polyline',
+20: REF 'draw-polygon',
+20: REF 'draw-regular-polygon',
+20: REF 'draw-path',
+20: REF 'draw-circle',
+20: REF 'draw-ellipse',
+20: REF 'draw-g',
+20: REF 'draw-page-thumbnail',
+20: REF 'draw-frame',
+20: REF 'draw-measure',
+20: REF 'draw-caption',
+20: REF 'draw-connector',
+20: REF 'draw-control',
+20: REF 'dr3d-scene',
+20: REF 'draw-custom-shape',
+17: EPSILON
+16: CHOICE
+17: REF 'presentation-animations',
+18: ELEMENT "presentation:animations",
+19: CHOICE
+20: ONEOREMORE
+21: CHOICE
+22: REF 'presentation-animation-elements',
+23: CHOICE
+24: REF 'presentation-show-shape',
+25: ELEMENT "presentation:show-shape",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-show-text',
+25: ELEMENT "presentation:show-text",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-hide-shape',
+25: ELEMENT "presentation:hide-shape",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-hide-text',
+25: ELEMENT "presentation:hide-text",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-dim',
+25: ELEMENT "presentation:dim",
+26: SEQUENCE
+27: REF 'presentation-dim-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: ATTRIBUTE "draw:color",
+30: REF 'color',
+31: DATA 'string',
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-play',
+25: ELEMENT "presentation:play",
+26: REF 'presentation-play-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "draw:shape-id",
+29: REF 'IDREF',
+30: DATA 'IDREF',
+28: CHOICE
+29: ATTRIBUTE "presentation:speed",
+30: REF 'presentationSpeeds',
+31: CHOICE
+32: VALUE 'slow',
+32: VALUE 'medium',
+32: VALUE 'fast',
+29: EPSILON
+22: REF 'presentation-animation-group',
+23: ELEMENT "presentation:animation-group",
+24: CHOICE
+25: ONEOREMORE
+26: REF 'presentation-animation-elements',
+27: CHOICE
+28: REF 'presentation-show-shape',
+28: REF 'presentation-show-text',
+28: REF 'presentation-hide-shape',
+28: REF 'presentation-hide-text',
+28: REF 'presentation-dim',
+28: REF 'presentation-play',
+25: EPSILON
+20: EPSILON
+17: REF 'animation-element',
+18: CHOICE
+19: ELEMENT "anim:animate",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-anim-spline-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:calcMode",
+24: CHOICE
+25: VALUE 'discrete',
+25: VALUE 'linear',
+25: VALUE 'paced',
+25: VALUE 'spline',
+23: EPSILON
+21: REF 'common-spline-anim-value-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:keyTimes",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:keySplines",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-repeat-timing-attlist',
+22: CHOICE
+23: SEQUENCE
+24: ATTRIBUTE "smil:repeatDur",
+25: REF 'string',
+26: DATA 'string',
+24: ATTRIBUTE "smil:repeatCount",
+25: REF 'nonNegativeInteger',
+26: DATA 'nonNegativeInteger',
+23: EPSILON
+21: REF 'common-fill-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:fill",
+24: CHOICE
+25: VALUE 'remove',
+25: VALUE 'freeze',
+25: VALUE 'hold',
+25: VALUE 'auto',
+25: VALUE 'default',
+25: VALUE 'transition',
+23: EPSILON
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+19: ELEMENT "anim:set",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-set-values-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:to",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-fill-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:fill",
+24: CHOICE
+25: VALUE 'remove',
+25: VALUE 'freeze',
+25: VALUE 'hold',
+25: VALUE 'auto',
+25: VALUE 'default',
+25: VALUE 'transition',
+23: EPSILON
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+19: ELEMENT "anim:animateMotion",
+20: SEQUENCE
+21: REF 'anim-animate-motion-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "svg:path",
+25: REF 'pathData',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "svg:origin",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:calcMode",
+25: CHOICE
+26: VALUE 'discrete',
+26: VALUE 'linear',
+26: VALUE 'paced',
+26: VALUE 'spline',
+24: EPSILON
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-fill-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:fill",
+24: CHOICE
+25: VALUE 'remove',
+25: VALUE 'freeze',
+25: VALUE 'hold',
+25: VALUE 'auto',
+25: VALUE 'default',
+25: VALUE 'transition',
+23: EPSILON
+21: REF 'common-spline-anim-value-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:keyTimes",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:keySplines",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+19: ELEMENT "anim:animateColor",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-anim-spline-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:calcMode",
+24: CHOICE
+25: VALUE 'discrete',
+25: VALUE 'linear',
+25: VALUE 'paced',
+25: VALUE 'spline',
+23: EPSILON
+21: REF 'common-spline-anim-value-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:keyTimes",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:keySplines",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'anim-animate-color-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "anim:color-interpolation",
+25: CHOICE
+26: VALUE 'rgb',
+26: VALUE 'hsl',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:color-interpolation-direction",
+25: CHOICE
+26: VALUE 'clockwise',
+26: VALUE 'counter-clockwise',
+24: EPSILON
+21: REF 'common-fill-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:fill",
+24: CHOICE
+25: VALUE 'remove',
+25: VALUE 'freeze',
+25: VALUE 'hold',
+25: VALUE 'auto',
+25: VALUE 'default',
+25: VALUE 'transition',
+23: EPSILON
+19: ELEMENT "anim:animateTransform",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'anim-animate-transform-attlist',
+22: ATTRIBUTE "svg:type",
+23: CHOICE
+24: VALUE 'translate',
+24: VALUE 'scale',
+24: VALUE 'rotate',
+24: VALUE 'skewX',
+24: VALUE 'skewY',
+21: REF 'common-fill-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:fill",
+24: CHOICE
+25: VALUE 'remove',
+25: VALUE 'freeze',
+25: VALUE 'hold',
+25: VALUE 'auto',
+25: VALUE 'default',
+25: VALUE 'transition',
+23: EPSILON
+19: ELEMENT "anim:transitionFilter",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-anim-spline-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:calcMode",
+24: CHOICE
+25: VALUE 'discrete',
+25: VALUE 'linear',
+25: VALUE 'paced',
+25: VALUE 'spline',
+23: EPSILON
+21: REF 'anim-transition-filter-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "smil:type",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "smil:subtype",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:direction",
+25: CHOICE
+26: VALUE 'forward',
+26: VALUE 'reverse',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:fadeColor",
+25: CHOICE
+26: VALUE 'forward',
+26: VALUE 'reverse',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:mode",
+25: CHOICE
+26: VALUE 'in',
+26: VALUE 'out',
+24: EPSILON
+21: REF 'common-fill-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:fill",
+24: CHOICE
+25: VALUE 'remove',
+25: VALUE 'freeze',
+25: VALUE 'hold',
+25: VALUE 'auto',
+25: VALUE 'default',
+25: VALUE 'transition',
+23: EPSILON
+19: ELEMENT "anim:par",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: CHOICE
+27: SEQUENCE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: ATTRIBUTE "smil:repeatCount",
+29: REF 'nonNegativeInteger',
+30: DATA 'nonNegativeInteger',
+27: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-endsync-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:endsync",
+24: CHOICE
+25: VALUE 'first',
+25: VALUE 'last',
+25: VALUE 'all',
+25: VALUE 'media',
+23: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: REF 'animation-element',
+24: CHOICE
+22: EPSILON
+19: ELEMENT "anim:seq",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'common-endsync-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:endsync",
+24: CHOICE
+25: VALUE 'first',
+25: VALUE 'last',
+25: VALUE 'all',
+25: VALUE 'media',
+23: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: CHOICE
+27: SEQUENCE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: ATTRIBUTE "smil:repeatCount",
+29: REF 'nonNegativeInteger',
+30: DATA 'nonNegativeInteger',
+27: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+19: ELEMENT "anim:iterate",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'anin-iterate-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:iterate-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:iterate-interval",
+25: REF 'duration',
+26: DATA 'duration',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: CHOICE
+27: SEQUENCE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: ATTRIBUTE "smil:repeatCount",
+29: REF 'nonNegativeInteger',
+30: DATA 'nonNegativeInteger',
+27: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-endsync-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:endsync",
+24: CHOICE
+25: VALUE 'first',
+25: VALUE 'last',
+25: VALUE 'all',
+25: VALUE 'media',
+23: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: REF 'animation-element',
+24: CHOICE
+22: EPSILON
+19: ELEMENT "anim:audio",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'anim-audio-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "xlink:href",
+25: REF 'anyURI',
+26: DATA 'anyURI',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:audio-level",
+25: REF 'double',
+26: DATA 'double',
+24: EPSILON
+21: REF 'common-basic-timing-attlist',
+22: SEQUENCE
+23: REF 'common-begin-end-timing-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:begin",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:end",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+23: REF 'common-dur-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:dur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+23: REF 'common-repeat-timing-attlist',
+24: CHOICE
+25: SEQUENCE
+26: ATTRIBUTE "smil:repeatDur",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "smil:repeatCount",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+25: EPSILON
+19: ELEMENT "anim:command",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'anim-command-attlist',
+22: ATTRIBUTE "anim:command",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-begin-end-timing-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:begin",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:end",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: ELEMENT "anim:param",
+24: SEQUENCE
+25: ATTRIBUTE "anim:name",
+26: STRING
+25: ATTRIBUTE "anim:value",
+26: STRING
+22: EPSILON
+17: EPSILON
+16: CHOICE
+17: REF 'presentation-notes',
+17: EPSILON
+12: EPSILON
+10: REF 'office-drawing-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:presentation",
+9: SEQUENCE
+10: REF 'office-presentation-attlist',
+11: EPSILON
+10: REF 'office-presentation-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+12: REF 'presentation-decls',
+13: CHOICE
+14: ONEOREMORE
+15: REF 'presentation-decl',
+16: CHOICE
+17: ELEMENT "presentation:header-decl",
+18: SEQUENCE
+19: REF 'presentation-header-decl-attlist',
+20: ATTRIBUTE "presentation:name",
+21: REF 'string',
+22: DATA 'string',
+19: STRING
+17: ELEMENT "presentation:footer-decl",
+18: SEQUENCE
+19: REF 'presentation-footer-decl-attlist',
+20: ATTRIBUTE "presentation:name",
+21: REF 'string',
+22: DATA 'string',
+19: STRING
+17: ELEMENT "presentation:date-time-decl",
+18: SEQUENCE
+19: REF 'presentation-date-time-decl-attlist',
+20: INTERLEAVE
+21: ATTRIBUTE "presentation:name",
+22: REF 'string',
+23: DATA 'string',
+21: ATTRIBUTE "presentation:source",
+22: CHOICE
+23: VALUE 'fixed',
+23: VALUE 'current-date',
+21: CHOICE
+22: ATTRIBUTE "style:data-style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+19: STRING
+14: EPSILON
+10: REF 'office-presentation-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-page',
+12: EPSILON
+10: REF 'office-presentation-content-epilogue',
+11: SEQUENCE
+12: REF 'presentation-settings',
+13: CHOICE
+14: ELEMENT "presentation:settings",
+15: SEQUENCE
+16: REF 'presentation-settings-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "presentation:start-page",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:full-screen",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:endless",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:pause",
+20: REF 'duration',
+21: DATA 'duration',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show-logo",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:force-manual",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:mouse-visible",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:mouse-as-pen",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:start-with-navigator",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:animations",
+20: CHOICE
+21: VALUE 'enabled',
+21: VALUE 'disabled',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:transition-on-click",
+20: CHOICE
+21: VALUE 'enabled',
+21: VALUE 'disabled',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:stay-on-top",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'presentation-show',
+19: ELEMENT "presentation:show",
+20: REF 'presentation-show-attlist',
+21: INTERLEAVE
+22: ATTRIBUTE "presentation:name",
+23: REF 'string',
+24: DATA 'string',
+22: ATTRIBUTE "presentation:pages",
+23: STRING
+17: EPSILON
+14: EPSILON
+12: REF 'table-functions',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-named-expressions',
+15: EPSILON
+14: CHOICE
+15: REF 'table-database-ranges',
+15: EPSILON
+14: CHOICE
+15: REF 'table-data-pilot-tables',
+15: EPSILON
+14: CHOICE
+15: REF 'table-consolidation',
+15: EPSILON
+14: CHOICE
+15: REF 'table-dde-links',
+15: EPSILON
+8: ELEMENT "office:spreadsheet",
+9: SEQUENCE
+10: REF 'office-spreadsheet-attlist',
+11: SEQUENCE
+12: CHOICE
+13: ATTRIBUTE "table:structure-protected",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+12: CHOICE
+13: ATTRIBUTE "table:protection-key",
+14: REF 'string',
+15: DATA 'string',
+13: EPSILON
+10: REF 'office-spreadsheet-content-prelude',
+11: SEQUENCE
+12: CHOICE
+13: REF 'table-tracked-changes',
+14: ELEMENT "table:tracked-changes",
+15: SEQUENCE
+16: REF 'table-tracked-changes-attlist',
+17: CHOICE
+18: ATTRIBUTE "table:track-changes",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: CHOICE
+19: REF 'table-cell-content-change',
+20: ELEMENT "table:cell-content-change",
+21: SEQUENCE
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'table-cell-address',
+23: ELEMENT "table:cell-address",
+24: REF 'common-table-cell-address-attlist',
+25: SEQUENCE
+26: ATTRIBUTE "table:column",
+27: REF 'integer',
+28: DATA 'integer',
+26: ATTRIBUTE "table:row",
+27: REF 'integer',
+28: DATA 'integer',
+26: ATTRIBUTE "table:table",
+27: REF 'integer',
+28: DATA 'integer',
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+24: ELEMENT "table:dependencies",
+25: ONEOREMORE
+26: REF 'table-dependency',
+27: ELEMENT "table:dependency",
+28: ATTRIBUTE "table:id",
+29: REF 'string',
+30: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+24: ELEMENT "table:deletions",
+25: ONEOREMORE
+26: CHOICE
+27: REF 'table-cell-content-deletion',
+28: ELEMENT "table:cell-content-deletion",
+29: SEQUENCE
+30: CHOICE
+31: ATTRIBUTE "table:id",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: REF 'table-cell-address',
+31: EPSILON
+30: CHOICE
+31: REF 'table-change-track-table-cell',
+32: ELEMENT "table:change-track-table-cell",
+33: SEQUENCE
+34: REF 'table-change-track-table-cell-attlist',
+35: INTERLEAVE
+36: CHOICE
+37: ATTRIBUTE "table:cell-address",
+38: REF 'cellAddress',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "table:matrix-covered",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+36: SEQUENCE
+37: CHOICE
+38: ATTRIBUTE "table:formula",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+37: CHOICE
+38: ATTRIBUTE "table:number-matrix-columns-spanned",
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+38: EPSILON
+37: CHOICE
+38: ATTRIBUTE "table:number-matrix-rows-spanned",
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+38: EPSILON
+37: CHOICE
+38: REF 'common-value-and-type-attlist',
+39: CHOICE
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'float',
+41: ATTRIBUTE "office:value",
+42: REF 'double',
+43: DATA 'double',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'percentage',
+41: ATTRIBUTE "office:value",
+42: REF 'double',
+43: DATA 'double',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'currency',
+41: ATTRIBUTE "office:value",
+42: REF 'double',
+43: DATA 'double',
+41: CHOICE
+42: ATTRIBUTE "office:currency",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'date',
+41: ATTRIBUTE "office:date-value",
+42: REF 'dateOrDateTime',
+43: CHOICE
+44: DATA 'date',
+44: DATA 'dateTime',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'time',
+41: ATTRIBUTE "office:time-value",
+42: REF 'duration',
+43: DATA 'duration',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'boolean',
+41: ATTRIBUTE "office:boolean-value",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'string',
+41: CHOICE
+42: ATTRIBUTE "office:string-value",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+38: EPSILON
+34: CHOICE
+35: ONEOREMORE
+36: REF 'text-p',
+35: EPSILON
+31: EPSILON
+27: REF 'table-change-deletion',
+28: ELEMENT "table:change-deletion",
+29: CHOICE
+30: ATTRIBUTE "table:id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+23: EPSILON
+22: REF 'table-previous',
+23: ELEMENT "table:previous",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:id",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: REF 'table-change-track-table-cell',
+19: REF 'table-insertion',
+20: ELEMENT "table:insertion",
+21: SEQUENCE
+22: REF 'table-insertion-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:type",
+25: CHOICE
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'table',
+24: ATTRIBUTE "table:position",
+25: REF 'integer',
+26: DATA 'integer',
+24: CHOICE
+25: ATTRIBUTE "table:count",
+26: REF 'positiveInteger',
+27: DATA 'positiveInteger',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:table",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+19: REF 'table-deletion',
+20: ELEMENT "table:deletion",
+21: SEQUENCE
+22: REF 'table-deletion-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:type",
+25: CHOICE
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'table',
+24: ATTRIBUTE "table:position",
+25: REF 'integer',
+26: DATA 'integer',
+24: CHOICE
+25: ATTRIBUTE "table:table",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:multi-deletion-spanned",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+22: CHOICE
+23: REF 'table-cut-offs',
+24: ELEMENT "table:cut-offs",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'table-movement-cut-off',
+28: ELEMENT "table:movement-cut-off",
+29: REF 'table-movement-cut-off-attlist',
+30: CHOICE
+31: ATTRIBUTE "table:position",
+32: REF 'integer',
+33: DATA 'integer',
+31: SEQUENCE
+32: ATTRIBUTE "table:start-position",
+33: REF 'integer',
+34: DATA 'integer',
+32: ATTRIBUTE "table:end-position",
+33: REF 'integer',
+34: DATA 'integer',
+26: SEQUENCE
+27: REF 'table-insertion-cut-off',
+28: ELEMENT "table:insertion-cut-off",
+29: REF 'table-insertion-cut-off-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:id",
+32: REF 'string',
+33: DATA 'string',
+31: ATTRIBUTE "table:position",
+32: REF 'integer',
+33: DATA 'integer',
+27: CHOICE
+28: ONEOREMORE
+29: REF 'table-movement-cut-off',
+28: EPSILON
+23: EPSILON
+19: REF 'table-movement',
+20: ELEMENT "table:movement",
+21: SEQUENCE
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'table-source-range-address',
+23: ELEMENT "table:source-range-address",
+24: REF 'common-table-range-attlist',
+25: CHOICE
+26: REF 'common-table-cell-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:table",
+29: REF 'integer',
+30: DATA 'integer',
+26: REF 'common-table-cell-range-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:start-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-table",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-table",
+29: REF 'integer',
+30: DATA 'integer',
+22: REF 'table-target-range-address',
+23: ELEMENT "table:target-range-address",
+24: REF 'common-table-range-attlist',
+25: CHOICE
+26: REF 'common-table-cell-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:table",
+29: REF 'integer',
+30: DATA 'integer',
+26: REF 'common-table-cell-range-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:start-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-table",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-table",
+29: REF 'integer',
+30: DATA 'integer',
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+17: EPSILON
+13: EPSILON
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-spreadsheet-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'table-table',
+12: EPSILON
+10: REF 'office-spreadsheet-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:chart",
+9: SEQUENCE
+10: REF 'office-chart-attlist',
+11: EPSILON
+10: REF 'office-chart-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-chart-content-main',
+11: REF 'chart-chart',
+12: ELEMENT "chart:chart",
+13: SEQUENCE
+14: REF 'chart-chart-attlist',
+15: INTERLEAVE
+16: ATTRIBUTE "chart:class",
+17: REF 'namespacedToken',
+18: DATA 'string',
+16: REF 'common-draw-size-attlist',
+17: SEQUENCE
+18: CHOICE
+19: ATTRIBUTE "svg:width",
+20: REF 'length',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "svg:height",
+20: REF 'length',
+21: DATA 'string',
+19: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:column-mapping",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:row-mapping",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:style-name",
+18: REF 'styleNameRef',
+19: CHOICE
+20: DATA 'NCName',
+20: EPSILON
+17: EPSILON
+14: CHOICE
+15: REF 'chart-title',
+16: ELEMENT "chart:title",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellAddress',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-subtitle',
+16: ELEMENT "chart:subtitle",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellAddress',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-footer',
+16: ELEMENT "chart:footer",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellAddress',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-legend',
+16: ELEMENT "chart:legend",
+17: REF 'chart-legend-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: SEQUENCE
+21: ATTRIBUTE "chart:legend-position",
+22: CHOICE
+23: VALUE 'start',
+23: VALUE 'end',
+23: VALUE 'top',
+23: VALUE 'bottom',
+21: CHOICE
+22: ATTRIBUTE "chart:legend-align",
+23: CHOICE
+24: VALUE 'start',
+24: VALUE 'center',
+24: VALUE 'end',
+22: EPSILON
+20: ATTRIBUTE "chart:legend-position",
+21: CHOICE
+22: VALUE 'top-start',
+22: VALUE 'bottom-start',
+22: VALUE 'top-end',
+22: VALUE 'bottom-end',
+20: EPSILON
+19: REF 'common-draw-position-attlist',
+20: SEQUENCE
+21: CHOICE
+22: ATTRIBUTE "svg:x",
+23: REF 'coordinate',
+24: REF 'length',
+25: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "svg:y",
+23: REF 'coordinate',
+24: REF 'length',
+25: DATA 'string',
+22: EPSILON
+19: CHOICE
+20: ATTRIBUTE "style:legend-expansion",
+21: CHOICE
+22: VALUE 'wide',
+22: VALUE 'high',
+22: VALUE 'balanced',
+20: SEQUENCE
+21: ATTRIBUTE "style:legend-expansion",
+22: VALUE 'custom',
+21: ATTRIBUTE "style:legend-expansion-aspect-ratio",
+22: REF 'double',
+23: DATA 'double',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+15: EPSILON
+14: REF 'chart-plot-area',
+15: ELEMENT "chart:plot-area",
+16: SEQUENCE
+17: REF 'chart-plot-area-attlist',
+18: INTERLEAVE
+19: SEQUENCE
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: REF 'common-draw-size-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:height",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "table:cell-range-address",
+21: REF 'cellRangeAddress',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:data-source-has-labels",
+21: CHOICE
+22: VALUE 'none',
+22: VALUE 'row',
+22: VALUE 'column',
+22: VALUE 'both',
+20: EPSILON
+19: SEQUENCE
+20: REF 'dr3d-scene-attlist',
+21: INTERLEAVE
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "dr3d:vrp",
+25: REF 'vector3D',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "dr3d:vpn",
+25: REF 'vector3D',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "dr3d:vup",
+25: REF 'vector3D',
+26: DATA 'string',
+24: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:projection",
+24: CHOICE
+25: VALUE 'parallel',
+25: VALUE 'perspective',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:distance",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:focal-length",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:shadow-slant",
+24: REF 'nonNegativeInteger',
+25: DATA 'nonNegativeInteger',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:shade-mode",
+24: CHOICE
+25: VALUE 'flat',
+25: VALUE 'phong',
+25: VALUE 'gouraud',
+25: VALUE 'draft',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:ambient-color",
+24: REF 'color',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:lighting-mode",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+20: REF 'common-dr3d-transform-attlist',
+21: CHOICE
+22: ATTRIBUTE "dr3d:transform",
+23: STRING
+22: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'dr3d-light',
+18: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'chart-axis',
+20: ELEMENT "chart:axis",
+21: SEQUENCE
+22: REF 'chart-axis-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "chart:dimension",
+25: CHOICE
+26: VALUE 'x',
+26: VALUE 'y',
+26: VALUE 'z',
+24: CHOICE
+25: ATTRIBUTE "chart:name",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:style-name",
+26: REF 'styleNameRef',
+27: CHOICE
+28: DATA 'NCName',
+28: EPSILON
+25: EPSILON
+22: CHOICE
+23: REF 'chart-title',
+23: EPSILON
+22: CHOICE
+23: REF 'chart-categories',
+24: ELEMENT "chart:categories",
+25: CHOICE
+26: ATTRIBUTE "table:cell-range-address",
+27: REF 'cellRangeAddress',
+28: DATA 'string',
+26: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-grid',
+25: ELEMENT "chart:grid",
+26: REF 'chart-grid-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "chart:class",
+30: CHOICE
+31: VALUE 'major',
+31: VALUE 'minor',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'chart-series',
+20: ELEMENT "chart:series",
+21: SEQUENCE
+22: REF 'chart-series-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "chart:values-cell-range-address",
+26: REF 'cellRangeAddress',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:label-cell-address",
+26: REF 'cellAddress',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:class",
+26: REF 'namespacedToken',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:attached-axis",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:style-name",
+26: REF 'styleNameRef',
+27: CHOICE
+28: DATA 'NCName',
+28: EPSILON
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-domain',
+25: ELEMENT "chart:domain",
+26: CHOICE
+27: ATTRIBUTE "table:cell-range-address",
+28: REF 'cellRangeAddress',
+29: DATA 'string',
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-mean-value',
+24: ELEMENT "chart:mean-value",
+25: REF 'chart-mean-value-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-regression-curve',
+24: ELEMENT "chart:regression-curve",
+25: REF 'chart-regression-curve-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-error-indicator',
+24: ELEMENT "chart:error-indicator",
+25: REF 'chart-error-indicator-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-data-point',
+25: ELEMENT "chart:data-point",
+26: REF 'chart-data-point-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "chart:repeated",
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-gain-marker',
+19: ELEMENT "chart:stock-gain-marker",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-loss-marker',
+19: ELEMENT "chart:stock-loss-marker",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-range-line',
+19: ELEMENT "chart:stock-range-line",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-wall',
+19: ELEMENT "chart:wall",
+20: REF 'chart-wall-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "chart:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-floor',
+19: ELEMENT "chart:floor",
+20: REF 'chart-floor-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "chart:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+18: EPSILON
+14: CHOICE
+15: REF 'table-table',
+15: EPSILON
+10: REF 'office-chart-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:image",
+9: SEQUENCE
+10: REF 'office-image-attlist',
+11: EPSILON
+10: REF 'office-image-content-prelude',
+11: EPSILON
+10: REF 'office-image-content-main',
+11: REF 'draw-frame',
+10: REF 'office-image-content-epilogue',
+11: EPSILON
+1: REF 'office-document-content',
+2: ELEMENT "office:document-content",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-scripts',
+5: CHOICE
+4: REF 'office-font-face-decls',
+5: CHOICE
+4: REF 'office-automatic-styles',
+5: CHOICE
+4: REF 'office-body',
+1: REF 'office-document-styles',
+2: ELEMENT "office:document-styles",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-font-face-decls',
+5: CHOICE
+4: REF 'office-styles',
+5: CHOICE
+4: REF 'office-automatic-styles',
+5: CHOICE
+4: REF 'office-master-styles',
+5: CHOICE
+1: REF 'office-document-meta',
+2: ELEMENT "office:document-meta",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-meta',
+5: CHOICE
+1: REF 'office-document-settings',
+2: ELEMENT "office:document-settings",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-settings',
+5: CHOICE
diff --git a/trunk/generator/schema2template/src/test/resources/examples/odf/odf11-msvtree.ref b/trunk/generator/schema2template/src/test/resources/examples/odf/odf11-msvtree.ref
new file mode 100644
index 0000000..15a1725
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/resources/examples/odf/odf11-msvtree.ref
@@ -0,0 +1,24704 @@
+0: CHOICE
+1: REF 'office-document',
+2: ELEMENT "office:document",
+3: SEQUENCE
+4: REF 'office-document-attrs',
+5: ATTRIBUTE "office:mimetype",
+6: REF 'string',
+7: DATA 'string',
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-meta',
+5: CHOICE
+6: ELEMENT "office:meta",
+7: REF 'office-meta-content',
+8: REF 'office-meta-content-strict',
+9: CHOICE
+10: ONEOREMORE
+11: REF 'office-meta-data',
+12: CHOICE
+13: ELEMENT "meta:generator",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "dc:title",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "dc:description",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "dc:subject",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "meta:keyword",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "meta:initial-creator",
+14: REF 'string',
+15: DATA 'string',
+13: REF 'dc-creator',
+14: ELEMENT "dc:creator",
+15: REF 'string',
+16: DATA 'string',
+13: ELEMENT "meta:printed-by",
+14: REF 'string',
+15: DATA 'string',
+13: ELEMENT "meta:creation-date",
+14: REF 'dateTime',
+15: DATA 'dateTime',
+13: REF 'dc-date',
+14: ELEMENT "dc:date",
+15: REF 'dateTime',
+16: DATA 'dateTime',
+13: ELEMENT "meta:print-date",
+14: REF 'dateTime',
+15: DATA 'dateTime',
+13: ELEMENT "meta:template",
+14: SEQUENCE
+15: ATTRIBUTE "xlink:href",
+16: REF 'anyURI',
+17: DATA 'anyURI',
+15: CHOICE
+16: ATTRIBUTE "xlink:type",
+17: VALUE 'simple',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:actuate",
+17: VALUE 'onRequest',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:title",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:date",
+17: REF 'dateTime',
+18: DATA 'dateTime',
+16: EPSILON
+13: ELEMENT "meta:auto-reload",
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "xlink:type",
+17: VALUE 'simple',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:show",
+17: VALUE 'replace',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:actuate",
+17: VALUE 'onLoad',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:href",
+17: REF 'anyURI',
+18: DATA 'anyURI',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:delay",
+17: REF 'duration',
+18: DATA 'duration',
+16: EPSILON
+13: ELEMENT "meta:hyperlink-behaviour",
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "office:target-frame-name",
+17: REF 'targetFrameName',
+18: CHOICE
+19: VALUE '_self',
+19: VALUE '_blank',
+19: VALUE '_parent',
+19: VALUE '_top',
+19: REF 'string',
+20: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "xlink:show",
+17: CHOICE
+18: VALUE 'new',
+18: VALUE 'replace',
+16: EPSILON
+13: ELEMENT "dc:language",
+14: REF 'language',
+15: DATA 'language',
+13: ELEMENT "meta:editing-cycles",
+14: REF 'nonNegativeInteger',
+15: DATA 'nonNegativeInteger',
+13: ELEMENT "meta:editing-duration",
+14: REF 'duration',
+15: DATA 'duration',
+13: ELEMENT "meta:document-statistic",
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "meta:page-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:table-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:draw-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:image-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:ole-object-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:object-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:paragraph-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:word-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:character-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "frame-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "sentence-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "syllable-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "non-whitespace-character-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:row-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "meta:cell-count",
+17: REF 'nonNegativeInteger',
+18: DATA 'nonNegativeInteger',
+16: EPSILON
+13: ELEMENT "meta:user-defined",
+14: SEQUENCE
+15: ATTRIBUTE "meta:name",
+16: REF 'string',
+17: DATA 'string',
+15: CHOICE
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'float',
+17: REF 'double',
+18: DATA 'double',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'date',
+17: REF 'dateOrDateTime',
+18: CHOICE
+19: DATA 'date',
+19: DATA 'dateTime',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'time',
+17: REF 'duration',
+18: DATA 'duration',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'boolean',
+17: REF 'boolean',
+18: CHOICE
+19: VALUE 'true',
+19: VALUE 'false',
+16: SEQUENCE
+17: ATTRIBUTE "meta:value-type",
+18: VALUE 'string',
+17: REF 'string',
+18: DATA 'string',
+16: STRING
+10: EPSILON
+6: EPSILON
+4: REF 'office-settings',
+5: CHOICE
+6: ELEMENT "office:settings",
+7: ONEOREMORE
+8: REF 'config-config-item-set',
+9: ELEMENT "config:config-item-set",
+10: SEQUENCE
+11: REF 'config-config-item-set-attlist',
+12: ATTRIBUTE "config:name",
+13: REF 'string',
+14: DATA 'string',
+11: REF 'config-items',
+12: ONEOREMORE
+13: CHOICE
+14: REF 'config-config-item',
+15: ELEMENT "config:config-item",
+16: SEQUENCE
+17: REF 'config-config-item-attlist',
+18: INTERLEAVE
+19: ATTRIBUTE "config:name",
+20: REF 'string',
+21: DATA 'string',
+19: ATTRIBUTE "config:type",
+20: CHOICE
+21: VALUE 'boolean',
+21: VALUE 'short',
+21: VALUE 'int',
+21: VALUE 'long',
+21: VALUE 'double',
+21: VALUE 'string',
+21: VALUE 'datetime',
+21: VALUE 'base64Binary',
+17: STRING
+14: REF 'config-config-item-set',
+14: REF 'config-config-item-map-named',
+15: ELEMENT "config:config-item-map-named",
+16: SEQUENCE
+17: REF 'config-config-item-map-named-attlist',
+18: ATTRIBUTE "config:name",
+19: REF 'string',
+20: DATA 'string',
+17: ONEOREMORE
+18: REF 'config-config-item-map-entry',
+19: ELEMENT "config:config-item-map-entry",
+20: SEQUENCE
+21: REF 'config-config-item-map-entry-attlist',
+22: CHOICE
+23: ATTRIBUTE "config:name",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'config-items',
+22: ONEOREMORE
+23: CHOICE
+24: REF 'config-config-item',
+24: REF 'config-config-item-set',
+24: REF 'config-config-item-map-named',
+24: REF 'config-config-item-map-indexed',
+25: ELEMENT "config:config-item-map-indexed",
+26: SEQUENCE
+27: REF 'config-config-item-map-indexed-attlist',
+28: ATTRIBUTE "config:name",
+29: REF 'string',
+30: DATA 'string',
+27: ONEOREMORE
+28: REF 'config-config-item-map-entry',
+14: REF 'config-config-item-map-indexed',
+6: EPSILON
+4: REF 'office-scripts',
+5: CHOICE
+6: ELEMENT "office:scripts",
+7: SEQUENCE
+8: CHOICE
+9: ONEOREMORE
+10: REF 'office-script',
+11: ELEMENT "office:script",
+12: SEQUENCE
+13: REF 'office-script-attlist',
+14: ATTRIBUTE "script:language",
+15: REF 'string',
+16: DATA 'string',
+13: MIXED
+14: REF 'anyElements',
+15: CHOICE
+16: ONEOREMORE
+17: ELEMENT "*",
+18: MIXED
+19: REF 'anyAttListOrElements',
+20: SEQUENCE
+21: CHOICE
+22: ONEOREMORE
+23: ATTRIBUTE "*",
+24: STRING
+22: EPSILON
+21: REF 'anyElements',
+22: CHOICE
+23: ONEOREMORE
+23: EPSILON
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'office-event-listeners',
+10: ELEMENT "office:event-listeners",
+11: CHOICE
+12: ONEOREMORE
+13: CHOICE
+14: REF 'script-event-listener',
+15: ELEMENT "script:event-listener",
+16: REF 'script-event-listener-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "script:event-name",
+19: REF 'string',
+20: DATA 'string',
+18: ATTRIBUTE "script:language",
+19: REF 'string',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "script:macro-name",
+20: REF 'string',
+21: DATA 'string',
+19: SEQUENCE
+20: ATTRIBUTE "xlink:href",
+21: REF 'anyURI',
+22: DATA 'anyURI',
+20: CHOICE
+21: ATTRIBUTE "xlink:type",
+22: VALUE 'simple',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:actuate",
+22: VALUE 'onRequest',
+21: EPSILON
+14: REF 'presentation-event-listener',
+15: ELEMENT "presentation:event-listener",
+16: SEQUENCE
+17: REF 'presentation-event-listener-attlist',
+18: INTERLEAVE
+19: ATTRIBUTE "script:event-name",
+20: REF 'string',
+21: DATA 'string',
+19: ATTRIBUTE "presentation:action",
+20: CHOICE
+21: VALUE 'none',
+21: VALUE 'previous-page',
+21: VALUE 'next-page',
+21: VALUE 'first-page',
+21: VALUE 'last-page',
+21: VALUE 'hide',
+21: VALUE 'stop',
+21: VALUE 'execute',
+21: VALUE 'show',
+21: VALUE 'verb',
+21: VALUE 'fade-out',
+21: VALUE 'sound',
+19: CHOICE
+20: ATTRIBUTE "presentation:effect",
+21: REF 'presentationEffects',
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'fade',
+23: VALUE 'move',
+23: VALUE 'stripes',
+23: VALUE 'open',
+23: VALUE 'close',
+23: VALUE 'dissolve',
+23: VALUE 'wavyline',
+23: VALUE 'random',
+23: VALUE 'lines',
+23: VALUE 'laser',
+23: VALUE 'appear',
+23: VALUE 'hide',
+23: VALUE 'move-short',
+23: VALUE 'checkerboard',
+23: VALUE 'rotate',
+23: VALUE 'stretch',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:direction",
+21: REF 'presentationEffectDirections',
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'from-left',
+23: VALUE 'from-top',
+23: VALUE 'from-right',
+23: VALUE 'from-bottom',
+23: VALUE 'from-center',
+23: VALUE 'from-upper-left',
+23: VALUE 'from-upper-right',
+23: VALUE 'from-lower-left',
+23: VALUE 'from-lower-right',
+23: VALUE 'to-left',
+23: VALUE 'to-top',
+23: VALUE 'to-right',
+23: VALUE 'to-bottom',
+23: VALUE 'to-upper-left',
+23: VALUE 'to-upper-right',
+23: VALUE 'to-lower-right',
+23: VALUE 'to-lower-left',
+23: VALUE 'path',
+23: VALUE 'spiral-inward-left',
+23: VALUE 'spiral-inward-right',
+23: VALUE 'spiral-outward-left',
+23: VALUE 'spiral-outward-right',
+23: VALUE 'vertical',
+23: VALUE 'horizontal',
+23: VALUE 'to-center',
+23: VALUE 'clockwise',
+23: VALUE 'counter-clockwise',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:speed",
+21: REF 'presentationSpeeds',
+22: CHOICE
+23: VALUE 'slow',
+23: VALUE 'medium',
+23: VALUE 'fast',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:start-scale",
+21: REF 'percent',
+22: DATA 'string',
+20: EPSILON
+19: SEQUENCE
+20: CHOICE
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyURI',
+23: DATA 'anyURI',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:type",
+22: VALUE 'simple',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:show",
+22: VALUE 'embed',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "xlink:actuate",
+22: VALUE 'onRequest',
+21: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:verb",
+21: REF 'nonNegativeInteger',
+22: DATA 'nonNegativeInteger',
+20: EPSILON
+17: CHOICE
+18: REF 'presentation-sound',
+19: ELEMENT "presentation:sound",
+20: SEQUENCE
+21: REF 'presentation-sound-attlist',
+22: CHOICE
+23: ATTRIBUTE "presentation:play-full",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyURI',
+23: DATA 'anyURI',
+21: CHOICE
+22: ATTRIBUTE "xlink:type",
+23: VALUE 'simple',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "xlink:actuate",
+23: VALUE 'onRequest',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "xlink:show",
+23: CHOICE
+24: VALUE 'new',
+24: VALUE 'replace',
+22: EPSILON
+18: EPSILON
+12: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-font-face-decls',
+5: CHOICE
+6: ELEMENT "office:font-face-decls",
+7: CHOICE
+8: ONEOREMORE
+9: REF 'style-font-face',
+10: ELEMENT "style:font-face",
+11: SEQUENCE
+12: REF 'style-font-face-attlist',
+13: INTERLEAVE
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "svg:font-family",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-style",
+17: REF 'fontStyle',
+18: CHOICE
+19: VALUE 'normal',
+19: VALUE 'italic',
+19: VALUE 'oblique',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-variant",
+17: REF 'fontVariant',
+18: CHOICE
+19: VALUE 'normal',
+19: VALUE 'small-caps',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-weight",
+17: REF 'fontWeight',
+18: CHOICE
+19: VALUE 'normal',
+19: VALUE 'bold',
+19: VALUE '100',
+19: VALUE '200',
+19: VALUE '300',
+19: VALUE '400',
+19: VALUE '500',
+19: VALUE '600',
+19: VALUE '700',
+19: VALUE '800',
+19: VALUE '900',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-stretch",
+17: CHOICE
+18: VALUE 'normal',
+18: VALUE 'ultra-condensed',
+18: VALUE 'extra-condensed',
+18: VALUE 'condensed',
+18: VALUE 'semi-condensed',
+18: VALUE 'semi-expanded',
+18: VALUE 'expanded',
+18: VALUE 'extra-expanded',
+18: VALUE 'ultra-expanded',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:font-size",
+17: REF 'positiveLength',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:unicode-range",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:units-per-em",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:panose-1",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:stemv",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:stemh",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:slope",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:cap-height",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:x-height",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:accent-height",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:ascent",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:descent",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:widths",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:bbox",
+17: STRING
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:ideographic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:alphabetic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:mathematical",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:hanging",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-ideographic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-alphabetic",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-mathematical",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:v-hanging",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:underline-position",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:underline-thickness",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:strikethrough-position",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:strikethrough-thickness",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:overline-position",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:overline-thickness",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+14: ATTRIBUTE "style:name",
+15: REF 'string',
+16: DATA 'string',
+14: CHOICE
+15: ATTRIBUTE "style:font-adornments",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-family-generic",
+16: REF 'fontFamilyGeneric',
+17: CHOICE
+18: VALUE 'roman',
+18: VALUE 'swiss',
+18: VALUE 'modern',
+18: VALUE 'decorative',
+18: VALUE 'script',
+18: VALUE 'system',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-pitch",
+16: REF 'fontPitch',
+17: CHOICE
+18: VALUE 'fixed',
+18: VALUE 'variable',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-charset",
+16: REF 'textEncoding',
+17: DATA 'string',
+15: EPSILON
+12: CHOICE
+13: REF 'svg-font-face-src',
+14: ELEMENT "svg:font-face-src",
+15: ONEOREMORE
+16: CHOICE
+17: REF 'svg-font-face-uri',
+18: ELEMENT "svg:font-face-uri",
+19: SEQUENCE
+20: REF 'common-svg-font-face-xlink-attlist',
+21: SEQUENCE
+22: ATTRIBUTE "xlink:href",
+23: REF 'anyURI',
+24: DATA 'anyURI',
+22: CHOICE
+23: ATTRIBUTE "xlink:type",
+24: VALUE 'simple',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "xlink:actuate",
+24: VALUE 'onRequest',
+23: EPSILON
+20: CHOICE
+21: ONEOREMORE
+22: REF 'svg-font-face-format',
+23: ELEMENT "svg:font-face-format",
+24: CHOICE
+25: ATTRIBUTE "svg:string",
+26: STRING
+25: EPSILON
+21: EPSILON
+17: REF 'svg-font-face-name',
+18: ELEMENT "svg:font-face-name",
+19: CHOICE
+20: ATTRIBUTE "svg:name",
+21: STRING
+20: EPSILON
+13: EPSILON
+12: CHOICE
+13: REF 'svg-definition-src',
+14: ELEMENT "svg:definition-src",
+15: REF 'common-svg-font-face-xlink-attlist',
+16: SEQUENCE
+17: ATTRIBUTE "xlink:href",
+18: REF 'anyURI',
+19: DATA 'anyURI',
+17: CHOICE
+18: ATTRIBUTE "xlink:type",
+19: VALUE 'simple',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "xlink:actuate",
+19: VALUE 'onRequest',
+18: EPSILON
+13: EPSILON
+8: EPSILON
+6: EPSILON
+4: REF 'office-styles',
+5: CHOICE
+6: ELEMENT "office:styles",
+7: INTERLEAVE
+8: REF 'styles',
+9: INTERLEAVE
+10: CHOICE
+11: ONEOREMORE
+12: REF 'style-style',
+13: ELEMENT "style:style",
+14: SEQUENCE
+15: REF 'style-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:parent-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:next-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:list-style-name",
+19: CHOICE
+20: REF 'styleName',
+21: DATA 'NCName',
+20: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:master-page-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:auto-update",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:data-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:class",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:default-outline-level",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: EPSILON
+15: REF 'style-style-content',
+16: CHOICE
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'text',
+18: CHOICE
+19: REF 'style-text-properties',
+20: ELEMENT "style:text-properties",
+21: REF 'style-text-properties-content',
+22: REF 'style-text-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-text-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "fo:font-variant",
+28: REF 'fontVariant',
+29: CHOICE
+30: VALUE 'normal',
+30: VALUE 'small-caps',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-transform",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'lowercase',
+29: VALUE 'uppercase',
+29: VALUE 'capitalize',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:use-window-font-color",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-outline",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-type",
+28: REF 'lineType',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'single',
+30: VALUE 'double',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-style",
+28: REF 'lineStyle',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'solid',
+30: VALUE 'dotted',
+30: VALUE 'dash',
+30: VALUE 'long-dash',
+30: VALUE 'dot-dash',
+30: VALUE 'dot-dot-dash',
+30: VALUE 'wave',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-width",
+28: REF 'lineWidth',
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'normal',
+30: VALUE 'bold',
+30: VALUE 'thin',
+30: VALUE 'dash',
+30: VALUE 'medium',
+30: VALUE 'thick',
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+30: REF 'percent',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-color",
+28: CHOICE
+29: VALUE 'font-color',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-text",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-text-style",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-position",
+28: LIST
+29: SEQUENCE
+30: CHOICE
+31: REF 'percent',
+32: DATA 'string',
+31: VALUE 'super',
+31: VALUE 'sub',
+30: CHOICE
+31: REF 'percent',
+32: DATA 'string',
+31: EPSILON
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-name",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-name-asian",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-name-complex",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-family",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-asian",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-complex",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-family-generic",
+29: REF 'fontFamilyGeneric',
+30: CHOICE
+31: VALUE 'roman',
+31: VALUE 'swiss',
+31: VALUE 'modern',
+31: VALUE 'decorative',
+31: VALUE 'script',
+31: VALUE 'system',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-generic-asian",
+29: REF 'fontFamilyGeneric',
+30: CHOICE
+31: VALUE 'roman',
+31: VALUE 'swiss',
+31: VALUE 'modern',
+31: VALUE 'decorative',
+31: VALUE 'script',
+31: VALUE 'system',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-family-generic-complex",
+29: REF 'fontFamilyGeneric',
+30: CHOICE
+31: VALUE 'roman',
+31: VALUE 'swiss',
+31: VALUE 'modern',
+31: VALUE 'decorative',
+31: VALUE 'script',
+31: VALUE 'system',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-style-name",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-name-asian",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-name-complex",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-pitch",
+29: REF 'fontPitch',
+30: CHOICE
+31: VALUE 'fixed',
+31: VALUE 'variable',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-pitch-asian",
+29: REF 'fontPitch',
+30: CHOICE
+31: VALUE 'fixed',
+31: VALUE 'variable',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-pitch-complex",
+29: REF 'fontPitch',
+30: CHOICE
+31: VALUE 'fixed',
+31: VALUE 'variable',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-charset",
+29: REF 'textEncoding',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-charset-asian",
+29: REF 'textEncoding',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-charset-complex",
+29: REF 'textEncoding',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-size",
+29: CHOICE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-asian",
+29: CHOICE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-complex",
+29: CHOICE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:font-size-rel",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-rel-asian",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-size-rel-complex",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:script-type",
+28: CHOICE
+29: VALUE 'latin',
+29: VALUE 'asian',
+29: VALUE 'complex',
+29: VALUE 'ignore',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:letter-spacing",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: VALUE 'normal',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:language",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:language-asian",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:language-complex",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:country",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:country-asian",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:country-complex",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-style",
+29: REF 'fontStyle',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'italic',
+31: VALUE 'oblique',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-asian",
+29: REF 'fontStyle',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'italic',
+31: VALUE 'oblique',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-style-complex",
+29: REF 'fontStyle',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'italic',
+31: VALUE 'oblique',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:font-relief",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'embossed',
+29: VALUE 'engraved',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-shadow",
+28: REF 'shadowType',
+29: CHOICE
+30: VALUE 'none',
+30: REF 'string',
+31: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-type",
+28: REF 'lineType',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'single',
+30: VALUE 'double',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-style",
+28: REF 'lineStyle',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'solid',
+30: VALUE 'dotted',
+30: VALUE 'dash',
+30: VALUE 'long-dash',
+30: VALUE 'dot-dash',
+30: VALUE 'dot-dot-dash',
+30: VALUE 'wave',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-width",
+28: REF 'lineWidth',
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'normal',
+30: VALUE 'bold',
+30: VALUE 'thin',
+30: VALUE 'dash',
+30: VALUE 'medium',
+30: VALUE 'thick',
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+30: REF 'percent',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-color",
+28: CHOICE
+29: VALUE 'font-color',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:font-weight",
+29: REF 'fontWeight',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'bold',
+31: VALUE '100',
+31: VALUE '200',
+31: VALUE '300',
+31: VALUE '400',
+31: VALUE '500',
+31: VALUE '600',
+31: VALUE '700',
+31: VALUE '800',
+31: VALUE '900',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-weight-asian",
+29: REF 'fontWeight',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'bold',
+31: VALUE '100',
+31: VALUE '200',
+31: VALUE '300',
+31: VALUE '400',
+31: VALUE '500',
+31: VALUE '600',
+31: VALUE '700',
+31: VALUE '800',
+31: VALUE '900',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:font-weight-complex",
+29: REF 'fontWeight',
+30: CHOICE
+31: VALUE 'normal',
+31: VALUE 'bold',
+31: VALUE '100',
+31: VALUE '200',
+31: VALUE '300',
+31: VALUE '400',
+31: VALUE '500',
+31: VALUE '600',
+31: VALUE '700',
+31: VALUE '800',
+31: VALUE '900',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-underline-mode",
+28: REF 'lineMode',
+29: CHOICE
+30: VALUE 'continuous',
+30: VALUE 'skip-white-space',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-line-through-mode",
+28: REF 'lineMode',
+29: CHOICE
+30: VALUE 'continuous',
+30: VALUE 'skip-white-space',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:letter-kerning",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-blinking",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-combine",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'letters',
+29: VALUE 'lines',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:text-combine-start-char",
+29: REF 'character',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:text-combine-end-char",
+29: REF 'character',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-emphasize",
+28: CHOICE
+29: VALUE 'none',
+29: LIST
+30: SEQUENCE
+31: CHOICE
+32: VALUE 'none',
+32: VALUE 'accent',
+32: VALUE 'dot',
+32: VALUE 'circle',
+32: VALUE 'disc',
+31: CHOICE
+32: VALUE 'above',
+32: VALUE 'below',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-scale",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-rotation-angle",
+28: REF 'integer',
+29: DATA 'integer',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-rotation-scale",
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'line-height',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenate",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-remain-char-count",
+28: REF 'positiveInteger',
+29: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-push-char-count",
+28: REF 'positiveInteger',
+29: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:display",
+28: VALUE 'true',
+27: ATTRIBUTE "text:display",
+28: VALUE 'none',
+27: SEQUENCE
+28: ATTRIBUTE "text:display",
+29: VALUE 'condition',
+28: ATTRIBUTE "text:condition",
+29: VALUE 'none',
+27: EPSILON
+24: REF 'style-text-properties-elements',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'paragraph',
+18: CHOICE
+19: REF 'style-paragraph-properties',
+20: ELEMENT "style:paragraph-properties",
+21: REF 'style-paragraph-properties-content',
+22: REF 'style-paragraph-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-paragraph-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "fo:line-height",
+28: CHOICE
+29: VALUE 'normal',
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-height-at-least",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-spacing",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:font-independent-line-spacing",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-text-align',
+27: CHOICE
+28: ATTRIBUTE "fo:text-align",
+29: CHOICE
+30: VALUE 'start',
+30: VALUE 'end',
+30: VALUE 'left',
+30: VALUE 'right',
+30: VALUE 'center',
+30: VALUE 'justify',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-align-last",
+28: CHOICE
+29: VALUE 'start',
+29: VALUE 'center',
+29: VALUE 'justify',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:justify-single-word",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:keep-together",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'always',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:widows",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:orphans",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:tab-stop-distance",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-keep",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'page',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:hyphenation-ladder-count",
+28: CHOICE
+29: VALUE 'no-limit',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:register-true",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:text-indent",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:auto-text-indent",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-vertical-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-top",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-bottom",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-margin-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:margin",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-border-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:border",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-top",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-bottom",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-left",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-right",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-border-line-width-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-top",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-bottom",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-left",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-right",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+26: REF 'common-padding-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:padding",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-top",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-bottom",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-left",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-right",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-keep-with-next-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:keep-with-next",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'always',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:number-lines",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:line-number",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-autospace",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'ideograph-alpha',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:punctuation-wrap",
+28: CHOICE
+29: VALUE 'simple',
+29: VALUE 'hanging',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-break",
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'strict',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:vertical-align",
+28: CHOICE
+29: VALUE 'top',
+29: VALUE 'middle',
+29: VALUE 'bottom',
+29: VALUE 'auto',
+29: VALUE 'baseline',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode-automatic",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:snap-to-layout-grid",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-page-number-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:page-number",
+29: CHOICE
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+30: VALUE 'auto',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:background-transparency",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+24: REF 'style-paragraph-properties-elements',
+25: INTERLEAVE
+26: REF 'style-tab-stops',
+27: CHOICE
+28: ELEMENT "style:tab-stops",
+29: CHOICE
+30: ONEOREMORE
+31: REF 'style-tab-stop',
+32: ELEMENT "style:tab-stop",
+33: REF 'style-tab-stop-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "style:position",
+36: REF 'nonNegativeLength',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "style:type",
+37: CHOICE
+38: VALUE 'left',
+38: VALUE 'center',
+38: VALUE 'right',
+36: EPSILON
+36: SEQUENCE
+37: ATTRIBUTE "style:type",
+38: VALUE 'char',
+37: REF 'style-tab-stop-char-attlist',
+38: ATTRIBUTE "style:char",
+39: REF 'character',
+40: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "style:leader-type",
+37: REF 'lineType',
+38: CHOICE
+39: VALUE 'none',
+39: VALUE 'single',
+39: VALUE 'double',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-style",
+37: REF 'lineStyle',
+38: CHOICE
+39: VALUE 'none',
+39: VALUE 'solid',
+39: VALUE 'dotted',
+39: VALUE 'dash',
+39: VALUE 'long-dash',
+39: VALUE 'dot-dash',
+39: VALUE 'dot-dot-dash',
+39: VALUE 'wave',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-width",
+37: REF 'lineWidth',
+38: CHOICE
+39: VALUE 'auto',
+39: VALUE 'normal',
+39: VALUE 'bold',
+39: VALUE 'thin',
+39: VALUE 'dash',
+39: VALUE 'medium',
+39: VALUE 'thick',
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+39: REF 'percent',
+40: DATA 'string',
+39: REF 'positiveLength',
+40: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-color",
+37: CHOICE
+38: VALUE 'font-color',
+38: REF 'color',
+39: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-text",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:leader-text-style",
+37: REF 'styleNameRef',
+38: CHOICE
+39: DATA 'NCName',
+39: EPSILON
+36: EPSILON
+30: EPSILON
+28: EPSILON
+26: REF 'style-drop-cap',
+27: CHOICE
+28: ELEMENT "style:drop-cap",
+29: REF 'style-drop-cap-attlist',
+30: INTERLEAVE
+31: CHOICE
+32: ATTRIBUTE "style:length",
+33: CHOICE
+34: VALUE 'word',
+34: REF 'positiveInteger',
+35: DATA 'positiveInteger',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:lines",
+33: REF 'positiveInteger',
+34: DATA 'positiveInteger',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:distance",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+28: EPSILON
+26: REF 'style-background-image',
+27: CHOICE
+28: ELEMENT "style:background-image",
+29: SEQUENCE
+30: REF 'style-background-image-attlist',
+31: INTERLEAVE
+32: CHOICE
+33: ATTRIBUTE "style:repeat",
+34: CHOICE
+35: VALUE 'no-repeat',
+35: VALUE 'repeat',
+35: VALUE 'stretch',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "style:position",
+34: CHOICE
+35: VALUE 'left',
+35: VALUE 'center',
+35: VALUE 'right',
+35: VALUE 'top',
+35: VALUE 'bottom',
+35: LIST
+36: SEQUENCE
+37: REF 'horiBackPos',
+38: CHOICE
+39: VALUE 'left',
+39: VALUE 'center',
+39: VALUE 'right',
+37: REF 'vertBackPos',
+38: CHOICE
+39: VALUE 'top',
+39: VALUE 'center',
+39: VALUE 'bottom',
+35: LIST
+36: SEQUENCE
+37: REF 'vertBackPos',
+38: CHOICE
+39: VALUE 'top',
+39: VALUE 'center',
+39: VALUE 'bottom',
+37: REF 'horiBackPos',
+38: CHOICE
+39: VALUE 'left',
+39: VALUE 'center',
+39: VALUE 'right',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "style:filter-name",
+34: REF 'string',
+35: DATA 'string',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "draw:opacity",
+34: REF 'percent',
+35: DATA 'string',
+33: EPSILON
+30: CHOICE
+31: REF 'common-draw-data-attlist',
+32: SEQUENCE
+33: ATTRIBUTE "xlink:href",
+34: REF 'anyURI',
+35: DATA 'anyURI',
+33: CHOICE
+34: ATTRIBUTE "xlink:type",
+35: VALUE 'simple',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "xlink:show",
+35: VALUE 'embed',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "xlink:actuate",
+35: VALUE 'onLoad',
+34: EPSILON
+31: REF 'office-binary-data',
+32: ELEMENT "office:binary-data",
+33: REF 'base64Binary',
+34: DATA 'base64Binary',
+31: EPSILON
+28: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'section',
+18: CHOICE
+19: REF 'style-section-properties',
+20: ELEMENT "style:section-properties",
+21: REF 'style-section-properties-content',
+22: REF 'style-section-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-section-properties-attlist',
+25: INTERLEAVE
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:protect",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:dont-balance-text-columns",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+24: REF 'style-section-properties-elements',
+25: INTERLEAVE
+26: REF 'style-background-image',
+27: CHOICE
+26: REF 'style-columns',
+27: CHOICE
+28: ELEMENT "style:columns",
+29: SEQUENCE
+30: REF 'style-columns-attlist',
+31: INTERLEAVE
+32: ATTRIBUTE "fo:column-count",
+33: REF 'positiveInteger',
+34: DATA 'positiveInteger',
+32: CHOICE
+33: ATTRIBUTE "fo:column-gap",
+34: REF 'length',
+35: DATA 'string',
+33: EPSILON
+30: CHOICE
+31: REF 'style-column-sep',
+32: ELEMENT "style:column-sep",
+33: REF 'style-column-sep-attlist',
+34: INTERLEAVE
+35: CHOICE
+36: ATTRIBUTE "style:style",
+37: CHOICE
+38: VALUE 'none',
+38: VALUE 'solid',
+38: VALUE 'dotted',
+38: VALUE 'dashed',
+38: VALUE 'dot-dashed',
+36: EPSILON
+35: ATTRIBUTE "style:width",
+36: REF 'length',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "style:height",
+37: REF 'percent',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:vertical-align",
+37: CHOICE
+38: VALUE 'top',
+38: VALUE 'middle',
+38: VALUE 'bottom',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:color",
+37: REF 'color',
+38: DATA 'string',
+36: EPSILON
+31: EPSILON
+30: CHOICE
+31: ONEOREMORE
+32: REF 'style-column',
+33: ELEMENT "style:column",
+34: REF 'style-column-attlist',
+35: INTERLEAVE
+36: ATTRIBUTE "style:rel-width",
+37: REF 'relativeLength',
+38: DATA 'string',
+36: CHOICE
+37: ATTRIBUTE "fo:start-indent",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "fo:end-indent",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "fo:space-before",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "fo:space-after",
+38: REF 'length',
+39: DATA 'string',
+37: EPSILON
+31: EPSILON
+28: EPSILON
+26: CHOICE
+27: ONEOREMORE
+28: REF 'text-notes-configuration',
+29: ELEMENT "text:notes-configuration",
+30: REF 'text-notes-configuration-content',
+31: INTERLEAVE
+32: REF 'text-note-class',
+33: ATTRIBUTE "text:note-class",
+34: CHOICE
+35: VALUE 'footnote',
+35: VALUE 'endnote',
+32: CHOICE
+33: ATTRIBUTE "text:citation-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:citation-body-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:default-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:master-page-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:start-value",
+34: REF 'nonNegativeInteger',
+35: DATA 'nonNegativeInteger',
+33: EPSILON
+32: SEQUENCE
+33: REF 'common-num-format-prefix-suffix-attlist',
+34: SEQUENCE
+35: CHOICE
+36: ATTRIBUTE "style:num-prefix",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "style:num-suffix",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+33: CHOICE
+34: REF 'common-num-format-attlist',
+35: CHOICE
+36: ATTRIBUTE "style:num-format",
+37: CHOICE
+38: VALUE '1',
+38: VALUE 'i',
+38: VALUE 'I',
+38: REF 'string',
+39: DATA 'string',
+38: EPSILON
+36: SEQUENCE
+37: ATTRIBUTE "style:num-format",
+38: CHOICE
+39: VALUE 'a',
+39: VALUE 'A',
+37: REF 'style-num-letter-sync-attlist',
+38: CHOICE
+39: ATTRIBUTE "style:num-letter-sync",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+36: EPSILON
+34: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:start-numbering-at",
+34: CHOICE
+35: VALUE 'document',
+35: VALUE 'chapter',
+35: VALUE 'page',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:footnotes-position",
+34: CHOICE
+35: VALUE 'text',
+35: VALUE 'page',
+35: VALUE 'section',
+35: VALUE 'document',
+33: EPSILON
+32: CHOICE
+33: ELEMENT "text:note-continuation-notice-forward",
+34: STRING
+33: EPSILON
+32: CHOICE
+33: ELEMENT "text:note-continuation-notice-backward",
+34: STRING
+33: EPSILON
+27: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'ruby',
+18: CHOICE
+19: REF 'style-ruby-properties',
+20: ELEMENT "style:ruby-properties",
+21: REF 'style-ruby-properties-content',
+22: REF 'style-ruby-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-ruby-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "style:ruby-position",
+28: CHOICE
+29: VALUE 'above',
+29: VALUE 'below',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:ruby-align",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+29: VALUE 'distribute-letter',
+29: VALUE 'distribute-space',
+27: EPSILON
+24: REF 'style-ruby-properties-elements',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table',
+18: CHOICE
+19: REF 'style-table-properties',
+20: ELEMENT "style:table-properties",
+21: REF 'style-table-properties-content',
+22: REF 'style-table-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-properties-attlist',
+25: INTERLEAVE
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:width",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:rel-width",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:align",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+29: VALUE 'margins',
+27: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-vertical-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-top",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-bottom",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-margin-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:margin",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-page-number-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:page-number",
+29: CHOICE
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+30: VALUE 'auto',
+28: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-keep-with-next-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:keep-with-next",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'always',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:may-break-between-rows",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:border-model",
+28: CHOICE
+29: VALUE 'collapsing',
+29: VALUE 'separating',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:display",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+24: REF 'style-table-properties-elements',
+25: REF 'style-background-image',
+26: CHOICE
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-column',
+18: CHOICE
+19: REF 'style-table-column-properties',
+20: ELEMENT "style:table-column-properties",
+21: REF 'style-table-column-properties-content',
+22: REF 'style-table-column-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-column-properties-attlist',
+25: INTERLEAVE
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:column-width",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:rel-column-width",
+29: REF 'relativeLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:use-optimal-column-width",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+24: REF 'style-table-column-properties-elements',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-row',
+18: CHOICE
+19: REF 'style-table-row-properties',
+20: ELEMENT "style:table-row-properties",
+21: REF 'style-table-row-properties-content',
+22: REF 'style-table-row-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-row-properties-attlist',
+25: INTERLEAVE
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:row-height",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:min-row-height",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:use-optimal-row-height",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-break-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:break-before",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:break-after",
+30: CHOICE
+31: VALUE 'auto',
+31: VALUE 'column',
+31: VALUE 'page',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:keep-together",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'always',
+27: EPSILON
+24: REF 'style-table-row-properties-elements',
+25: REF 'style-background-image',
+26: CHOICE
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-cell',
+18: CHOICE
+19: REF 'style-table-cell-properties',
+20: ELEMENT "style:table-cell-properties",
+21: REF 'style-table-cell-properties-content',
+22: REF 'style-table-cell-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-table-cell-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "style:vertical-align",
+28: CHOICE
+29: VALUE 'top',
+29: VALUE 'middle',
+29: VALUE 'bottom',
+29: VALUE 'automatic',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:text-align-source",
+28: CHOICE
+29: VALUE 'fix',
+29: VALUE 'value-type',
+27: EPSILON
+26: REF 'common-style-direction-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:direction",
+29: CHOICE
+30: VALUE 'ltr',
+30: VALUE 'ttb',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:glyph-orientation-vertical",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE '0',
+27: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-border-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:border",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-top",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-bottom",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-left",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-right",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-tl-br",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-tl-br-widths",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-bl-tr",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:diagonal-bl-tr-widths",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+26: REF 'common-border-line-width-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-top",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-bottom",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-left",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-right",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+26: REF 'common-padding-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:padding",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-top",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-bottom",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-left",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-right",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:wrap-option",
+28: CHOICE
+29: VALUE 'no-wrap',
+29: VALUE 'wrap',
+27: EPSILON
+26: REF 'common-rotation-angle-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:rotation-angle",
+29: REF 'nonNegativeInteger',
+30: DATA 'nonNegativeInteger',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:rotation-align",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'bottom',
+29: VALUE 'top',
+29: VALUE 'center',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:cell-protect",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'hidden-and-protected',
+29: LIST
+30: ONEOREMORE
+31: CHOICE
+32: VALUE 'protected',
+32: VALUE 'formula-hidden',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:print-content",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:decimal-places",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:repeat-content",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:shrink-to-fit",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+24: REF 'style-table-cell-properties-elements',
+25: REF 'style-background-image',
+26: CHOICE
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: CHOICE
+20: VALUE 'graphic',
+20: VALUE 'presentation',
+18: CHOICE
+19: REF 'style-graphic-properties',
+20: ELEMENT "style:graphic-properties",
+21: REF 'style-graphic-properties-content',
+22: REF 'style-graphic-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-graphic-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "draw:stroke",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'dash',
+29: VALUE 'solid',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:stroke-dash",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:stroke-dash-names",
+28: REF 'styleNameRefs',
+29: LIST
+30: CHOICE
+31: ONEOREMORE
+32: DATA 'NCName',
+31: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:stroke-width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:stroke-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-start",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-end",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-start-width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-end-width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-start-center",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:marker-end-center",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:stroke-opacity",
+28: CHOICE
+29: DATA 'double',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:stroke-linejoin",
+28: CHOICE
+29: VALUE 'miter',
+29: VALUE 'round',
+29: VALUE 'bevel',
+29: VALUE 'middle',
+29: VALUE 'none',
+29: VALUE 'inherit',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:symbol-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'scroll',
+29: VALUE 'alternate',
+29: VALUE 'slide',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-direction",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'right',
+29: VALUE 'up',
+29: VALUE 'down',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-start-inside",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-stop-inside",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-repeat",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-delay",
+28: REF 'duration',
+29: DATA 'duration',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "text:animation-steps",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:auto-grow-width",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:auto-grow-height",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fit-to-size",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fit-to-contour",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:textarea-vertical-align",
+28: CHOICE
+29: VALUE 'top',
+29: VALUE 'middle',
+29: VALUE 'bottom',
+29: VALUE 'justify',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:textarea-horizontal-align",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+29: VALUE 'justify',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:wrap-option",
+28: CHOICE
+29: VALUE 'no-wrap',
+29: VALUE 'wrap',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:color-mode",
+28: CHOICE
+29: VALUE 'greyscale',
+29: VALUE 'mono',
+29: VALUE 'watermark',
+29: VALUE 'standard',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:color-inversion",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:luminance",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:contrast",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:gamma",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:red",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:green",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:blue",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:image-opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:shadow",
+28: CHOICE
+29: VALUE 'visible',
+29: VALUE 'hidden',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:shadow-offset-x",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:shadow-offset-y",
+29: REF 'length',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:shadow-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:shadow-opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:start-line-spacing-horizontal",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:start-line-spacing-vertical",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:end-line-spacing-horizontal",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:end-line-spacing-vertical",
+29: REF 'distance',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:line-distance",
+28: REF 'distance',
+29: REF 'length',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:guide-overhang",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:guide-distance",
+28: REF 'distance',
+29: REF 'length',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:start-guide",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:end-guide",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:placing",
+28: CHOICE
+29: VALUE 'below',
+29: VALUE 'above',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:parallel",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:measure-align",
+29: CHOICE
+30: VALUE 'automatic',
+30: VALUE 'left-outside',
+30: VALUE 'inside',
+30: VALUE 'right-outside',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:measure-vertical-align",
+29: CHOICE
+30: VALUE 'automatic',
+30: VALUE 'above',
+30: VALUE 'below',
+30: VALUE 'center',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:unit",
+28: CHOICE
+29: VALUE 'automatic',
+29: VALUE 'mm',
+29: VALUE 'cm',
+29: VALUE 'm',
+29: VALUE 'km',
+29: VALUE 'pt',
+29: VALUE 'pc',
+29: VALUE 'inch',
+29: VALUE 'ft',
+29: VALUE 'mi',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:show-unit",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:decimal-places",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-type",
+28: CHOICE
+29: VALUE 'straight-line',
+29: VALUE 'angled-line',
+29: VALUE 'angled-connector-line',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-angle-type",
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'free',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-angle",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-gap",
+28: REF 'distance',
+29: REF 'length',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-escape-direction",
+28: CHOICE
+29: VALUE 'horizontal',
+29: VALUE 'vertical',
+29: VALUE 'auto',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-escape",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-line-length",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:caption-fit-line-length",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:horizontal-segments",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:vertical-segments",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:edge-rounding",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:edge-rounding-mode",
+28: CHOICE
+29: VALUE 'correct',
+29: VALUE 'attractive',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:back-scale",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:depth",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:backface-culling",
+28: CHOICE
+29: VALUE 'enabled',
+29: VALUE 'disabled',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:end-angle",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:close-front",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:close-back",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:lighting-mode",
+28: CHOICE
+29: VALUE 'standard',
+29: VALUE 'double-sided',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:normals-kind",
+28: CHOICE
+29: VALUE 'object',
+29: VALUE 'flat',
+29: VALUE 'sphere',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:normals-direction",
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'inverse',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "dr3d:texture-generation-mode-x",
+29: CHOICE
+30: VALUE 'object',
+30: VALUE 'parallel',
+30: VALUE 'sphere',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:texture-generation-mode-y",
+29: CHOICE
+30: VALUE 'object',
+30: VALUE 'parallel',
+30: VALUE 'sphere',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:texture-kind",
+28: CHOICE
+29: VALUE 'luminance',
+29: VALUE 'intensity',
+29: VALUE 'color',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:texture-filter",
+28: CHOICE
+29: VALUE 'enabled',
+29: VALUE 'disabled',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:texture-mode",
+28: CHOICE
+29: VALUE 'replace',
+29: VALUE 'modulate',
+29: VALUE 'blend',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "dr3d:ambient-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:emissive-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:specular-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "dr3d:diffuse-color",
+29: REF 'color',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:shininess",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "dr3d:shadow",
+28: CHOICE
+29: VALUE 'visible',
+29: VALUE 'hidden',
+27: EPSILON
+26: SEQUENCE
+27: REF 'common-draw-rel-size-attlist',
+28: SEQUENCE
+29: REF 'common-draw-size-attlist',
+30: SEQUENCE
+31: CHOICE
+32: ATTRIBUTE "svg:width",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "svg:height",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+29: CHOICE
+30: ATTRIBUTE "style:rel-width",
+31: CHOICE
+32: REF 'percent',
+33: DATA 'string',
+32: VALUE 'scale',
+32: VALUE 'scale-min',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "style:rel-height",
+31: CHOICE
+32: REF 'percent',
+33: DATA 'string',
+32: VALUE 'scale',
+32: VALUE 'scale-min',
+30: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:min-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:min-height",
+28: CHOICE
+29: REF 'length',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:max-height",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:max-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: REF 'common-horizontal-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-left",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-right",
+30: CHOICE
+31: REF 'length',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-vertical-margin-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:margin-top",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:margin-bottom",
+30: CHOICE
+31: REF 'nonNegativeLength',
+32: DATA 'string',
+31: REF 'percent',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-margin-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:margin",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:print-content",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:protect",
+28: CHOICE
+29: VALUE 'none',
+29: LIST
+30: ONEOREMORE
+31: CHOICE
+32: VALUE 'content',
+32: VALUE 'position',
+32: VALUE 'size',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:horizontal-pos",
+29: CHOICE
+30: VALUE 'left',
+30: VALUE 'center',
+30: VALUE 'right',
+30: VALUE 'from-left',
+30: VALUE 'inside',
+30: VALUE 'outside',
+30: VALUE 'from-inside',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "svg:x",
+29: REF 'coordinate',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:horizontal-rel",
+28: CHOICE
+29: VALUE 'page',
+29: VALUE 'page-content',
+29: VALUE 'page-start-margin',
+29: VALUE 'page-end-margin',
+29: VALUE 'frame',
+29: VALUE 'frame-content',
+29: VALUE 'frame-start-margin',
+29: VALUE 'frame-end-margin',
+29: VALUE 'paragraph',
+29: VALUE 'paragraph-content',
+29: VALUE 'paragraph-start-margin',
+29: VALUE 'paragraph-end-margin',
+29: VALUE 'char',
+27: EPSILON
+26: REF 'common-vertical-pos-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:vertical-pos",
+30: CHOICE
+31: VALUE 'top',
+31: VALUE 'middle',
+31: VALUE 'bottom',
+31: VALUE 'from-top',
+31: VALUE 'below',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "svg:y",
+30: REF 'coordinate',
+31: REF 'length',
+32: DATA 'string',
+29: EPSILON
+26: REF 'common-vertical-rel-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:vertical-rel",
+29: CHOICE
+30: VALUE 'page',
+30: VALUE 'page-content',
+30: VALUE 'frame',
+30: VALUE 'frame-content',
+30: VALUE 'paragraph',
+30: VALUE 'paragraph-content',
+30: VALUE 'char',
+30: VALUE 'line',
+30: VALUE 'baseline',
+30: VALUE 'text',
+28: EPSILON
+26: REF 'common-text-anchor-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "text:anchor-type",
+30: CHOICE
+31: VALUE 'page',
+31: VALUE 'frame',
+31: VALUE 'paragraph',
+31: VALUE 'char',
+31: VALUE 'as-char',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "text:anchor-page-number",
+30: REF 'positiveInteger',
+31: DATA 'positiveInteger',
+29: EPSILON
+26: REF 'common-border-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:border",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-top",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-bottom",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-left",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:border-right",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-border-line-width-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-top",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-bottom",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-left",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "style:border-line-width-right",
+30: REF 'borderWidths',
+31: LIST
+32: SEQUENCE
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+33: REF 'positiveLength',
+34: DATA 'string',
+29: EPSILON
+26: REF 'common-padding-attlist',
+27: SEQUENCE
+28: CHOICE
+29: ATTRIBUTE "fo:padding",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-top",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-bottom",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-left",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "fo:padding-right",
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+29: EPSILON
+26: REF 'common-shadow-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:shadow",
+29: REF 'shadowType',
+30: CHOICE
+31: VALUE 'none',
+31: REF 'string',
+32: DATA 'string',
+28: EPSILON
+26: REF 'common-background-color-attlist',
+27: CHOICE
+28: ATTRIBUTE "fo:background-color",
+29: CHOICE
+30: VALUE 'transparent',
+30: REF 'color',
+31: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:editable",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'left',
+29: VALUE 'right',
+29: VALUE 'parallel',
+29: VALUE 'dynamic',
+29: VALUE 'run-through',
+29: VALUE 'biggest',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap-dynamic-threshold",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:number-wrapped-paragraphs",
+28: CHOICE
+29: VALUE 'no-limit',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap-contour",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:wrap-contour-mode",
+28: CHOICE
+29: VALUE 'full',
+29: VALUE 'outside',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:run-through",
+28: CHOICE
+29: VALUE 'foreground',
+29: VALUE 'background',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:flow-with-text",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:overflow-behavior",
+28: CHOICE
+29: VALUE 'clip',
+29: VALUE 'auto-create-new-frame',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:mirror",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'vertical',
+29: REF 'horizontal-mirror',
+30: CHOICE
+31: VALUE 'horizontal',
+31: VALUE 'horizontal-on-odd',
+31: VALUE 'horizontal-on-even',
+29: LIST
+30: SEQUENCE
+31: VALUE 'vertical',
+31: REF 'horizontal-mirror',
+32: CHOICE
+33: VALUE 'horizontal',
+33: VALUE 'horizontal-on-odd',
+33: VALUE 'horizontal-on-even',
+29: LIST
+30: SEQUENCE
+31: REF 'horizontal-mirror',
+32: CHOICE
+33: VALUE 'horizontal',
+33: VALUE 'horizontal-on-odd',
+33: VALUE 'horizontal-on-even',
+31: VALUE 'vertical',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:clip",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:wrap-influence-on-position",
+28: CHOICE
+29: VALUE 'iterative',
+29: VALUE 'once-concurrent',
+29: VALUE 'once-successive',
+27: EPSILON
+26: REF 'common-writing-mode-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:writing-mode",
+29: CHOICE
+30: VALUE 'lr-tb',
+30: VALUE 'rl-tb',
+30: VALUE 'tb-rl',
+30: VALUE 'tb-lr',
+30: VALUE 'lr',
+30: VALUE 'rl',
+30: VALUE 'tb',
+30: VALUE 'page',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:frame-display-scrollbar",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:frame-display-border",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:frame-margin-horizontal",
+29: REF 'nonNegativePixelLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:frame-margin-vertical",
+29: REF 'nonNegativePixelLength',
+30: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-left",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-top",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-width",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:visible-area-height",
+29: REF 'positiveLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:ole-draw-aspect",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+24: REF 'style-graphic-fill-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "draw:fill",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'bitmap',
+29: VALUE 'gradient',
+29: VALUE 'hatch',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:secondary-fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-gradient-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:gradient-step-count",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-solid",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-image-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:repeat",
+28: CHOICE
+29: VALUE 'no-repeat',
+29: VALUE 'repeat',
+29: VALUE 'stretch',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-height",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-x",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-y",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point",
+29: CHOICE
+30: VALUE 'top-left',
+30: VALUE 'top',
+30: VALUE 'top-right',
+30: VALUE 'left',
+30: VALUE 'center',
+30: VALUE 'right',
+30: VALUE 'bottom-left',
+30: VALUE 'bottom',
+30: VALUE 'bottom-right',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:tile-repeat-offset",
+28: STRING
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:fill-rule",
+28: CHOICE
+29: VALUE 'nonzero',
+29: VALUE 'evenodd',
+27: EPSILON
+24: REF 'style-graphic-properties-elements',
+25: INTERLEAVE
+26: CHOICE
+27: REF 'text-list-style',
+28: ELEMENT "text:list-style",
+29: SEQUENCE
+30: REF 'text-list-style-attr',
+31: INTERLEAVE
+32: ATTRIBUTE "style:name",
+33: REF 'styleName',
+34: DATA 'NCName',
+32: CHOICE
+33: ATTRIBUTE "style:display-name",
+34: REF 'string',
+35: DATA 'string',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:consecutive-numbering",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+30: CHOICE
+31: ONEOREMORE
+32: REF 'text-list-style-content',
+33: CHOICE
+34: ELEMENT "text:list-level-style-number",
+35: SEQUENCE
+36: REF 'text-list-level-style-attr',
+37: ATTRIBUTE "text:level",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+36: REF 'text-list-level-style-number-attr',
+37: INTERLEAVE
+38: CHOICE
+39: ATTRIBUTE "text:style-name",
+40: REF 'styleNameRef',
+41: CHOICE
+42: DATA 'NCName',
+42: EPSILON
+39: EPSILON
+38: SEQUENCE
+39: REF 'common-num-format-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:num-format",
+42: CHOICE
+43: VALUE '1',
+43: VALUE 'i',
+43: VALUE 'I',
+43: REF 'string',
+44: DATA 'string',
+43: EPSILON
+41: SEQUENCE
+42: ATTRIBUTE "style:num-format",
+43: CHOICE
+44: VALUE 'a',
+44: VALUE 'A',
+42: REF 'style-num-letter-sync-attlist',
+43: CHOICE
+44: ATTRIBUTE "style:num-letter-sync",
+45: REF 'boolean',
+46: CHOICE
+47: VALUE 'true',
+47: VALUE 'false',
+44: EPSILON
+41: EPSILON
+39: REF 'common-num-format-prefix-suffix-attlist',
+40: SEQUENCE
+41: CHOICE
+42: ATTRIBUTE "style:num-prefix",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+41: CHOICE
+42: ATTRIBUTE "style:num-suffix",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:display-levels",
+40: REF 'positiveInteger',
+41: DATA 'positiveInteger',
+39: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:start-value",
+40: REF 'positiveInteger',
+41: DATA 'positiveInteger',
+39: EPSILON
+36: CHOICE
+37: REF 'style-list-level-properties',
+38: ELEMENT "style:list-level-properties",
+39: REF 'style-list-level-properties-content',
+40: REF 'style-list-level-properties-content-strict',
+41: SEQUENCE
+42: REF 'style-list-level-properties-attlist',
+43: INTERLEAVE
+44: REF 'common-text-align',
+45: CHOICE
+46: ATTRIBUTE "fo:text-align",
+47: CHOICE
+48: VALUE 'start',
+48: VALUE 'end',
+48: VALUE 'left',
+48: VALUE 'right',
+48: VALUE 'center',
+48: VALUE 'justify',
+46: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:space-before",
+46: REF 'nonNegativeLength',
+47: DATA 'string',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:min-label-width",
+46: REF 'nonNegativeLength',
+47: DATA 'string',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:min-label-distance",
+46: REF 'nonNegativeLength',
+47: DATA 'string',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "style:font-name",
+46: REF 'string',
+47: DATA 'string',
+45: EPSILON
+44: SEQUENCE
+45: CHOICE
+46: ATTRIBUTE "fo:width",
+47: REF 'positiveLength',
+48: DATA 'string',
+46: EPSILON
+45: CHOICE
+46: ATTRIBUTE "fo:height",
+47: REF 'positiveLength',
+48: DATA 'string',
+46: EPSILON
+44: SEQUENCE
+45: REF 'common-vertical-rel-attlist',
+46: CHOICE
+47: ATTRIBUTE "style:vertical-rel",
+48: CHOICE
+49: VALUE 'page',
+49: VALUE 'page-content',
+49: VALUE 'frame',
+49: VALUE 'frame-content',
+49: VALUE 'paragraph',
+49: VALUE 'paragraph-content',
+49: VALUE 'char',
+49: VALUE 'line',
+49: VALUE 'baseline',
+49: VALUE 'text',
+47: EPSILON
+45: REF 'common-vertical-pos-attlist',
+46: SEQUENCE
+47: CHOICE
+48: ATTRIBUTE "style:vertical-pos",
+49: CHOICE
+50: VALUE 'top',
+50: VALUE 'middle',
+50: VALUE 'bottom',
+50: VALUE 'from-top',
+50: VALUE 'below',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "svg:y",
+49: REF 'coordinate',
+50: REF 'length',
+51: DATA 'string',
+48: EPSILON
+42: REF 'style-list-level-properties-elements',
+43: EPSILON
+37: EPSILON
+36: CHOICE
+37: REF 'style-text-properties',
+37: EPSILON
+34: ELEMENT "text:list-level-style-bullet",
+35: SEQUENCE
+36: REF 'text-list-level-style-attr',
+37: ATTRIBUTE "text:level",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+36: REF 'text-list-level-style-bullet-attr',
+37: INTERLEAVE
+38: CHOICE
+39: ATTRIBUTE "text:style-name",
+40: REF 'styleNameRef',
+41: CHOICE
+42: DATA 'NCName',
+42: EPSILON
+39: EPSILON
+38: ATTRIBUTE "text:bullet-char",
+39: REF 'character',
+40: DATA 'string',
+38: REF 'common-num-format-prefix-suffix-attlist',
+39: SEQUENCE
+40: CHOICE
+41: ATTRIBUTE "style:num-prefix",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "style:num-suffix",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:bullet-relative-size",
+40: REF 'percent',
+41: DATA 'string',
+39: EPSILON
+36: CHOICE
+37: REF 'style-list-level-properties',
+37: EPSILON
+36: CHOICE
+37: REF 'style-text-properties',
+37: EPSILON
+34: ELEMENT "text:list-level-style-image",
+35: SEQUENCE
+36: REF 'text-list-level-style-attr',
+37: ATTRIBUTE "text:level",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+36: REF 'text-list-level-style-image-attr',
+37: CHOICE
+38: REF 'common-draw-data-attlist',
+39: SEQUENCE
+40: ATTRIBUTE "xlink:href",
+41: REF 'anyURI',
+42: DATA 'anyURI',
+40: CHOICE
+41: ATTRIBUTE "xlink:type",
+42: VALUE 'simple',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "xlink:show",
+42: VALUE 'embed',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "xlink:actuate",
+42: VALUE 'onLoad',
+41: EPSILON
+38: REF 'office-binary-data',
+36: CHOICE
+37: REF 'style-list-level-properties',
+37: EPSILON
+31: EPSILON
+27: EPSILON
+26: REF 'style-background-image',
+27: CHOICE
+26: REF 'style-columns',
+27: CHOICE
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'drawing-page',
+18: CHOICE
+19: REF 'style-drawing-page-properties',
+20: ELEMENT "style:drawing-page-properties",
+21: REF 'style-drawing-page-properties-content',
+22: REF 'style-drawing-page-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-graphic-fill-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "draw:fill",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'bitmap',
+29: VALUE 'gradient',
+29: VALUE 'hatch',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:secondary-fill-color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-gradient-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:gradient-step-count",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-hatch-solid",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:fill-image-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:repeat",
+28: CHOICE
+29: VALUE 'no-repeat',
+29: VALUE 'repeat',
+29: VALUE 'stretch',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-width",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-height",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-x",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point-y",
+29: REF 'percent',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "draw:fill-image-ref-point",
+29: CHOICE
+30: VALUE 'top-left',
+30: VALUE 'top',
+30: VALUE 'top-right',
+30: VALUE 'left',
+30: VALUE 'center',
+30: VALUE 'right',
+30: VALUE 'bottom-left',
+30: VALUE 'bottom',
+30: VALUE 'bottom-right',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:tile-repeat-offset",
+28: STRING
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:opacity-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "svg:fill-rule",
+28: CHOICE
+29: VALUE 'nonzero',
+29: VALUE 'evenodd',
+27: EPSILON
+24: REF 'style-drawing-page-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "presentation:transition-type",
+28: CHOICE
+29: VALUE 'manual',
+29: VALUE 'automatic',
+29: VALUE 'semi-automatic',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:transition-style",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'fade-from-left',
+29: VALUE 'fade-from-top',
+29: VALUE 'fade-from-right',
+29: VALUE 'fade-from-bottom',
+29: VALUE 'fade-from-upperleft',
+29: VALUE 'fade-from-upperright',
+29: VALUE 'fade-from-lowerleft',
+29: VALUE 'fade-from-lowerright',
+29: VALUE 'move-from-left',
+29: VALUE 'move-from-top',
+29: VALUE 'move-from-right',
+29: VALUE 'move-from-bottom',
+29: VALUE 'move-from-upperleft',
+29: VALUE 'move-from-upperright',
+29: VALUE 'move-from-lowerleft',
+29: VALUE 'move-from-lowerright',
+29: VALUE 'uncover-to-left',
+29: VALUE 'uncover-to-top',
+29: VALUE 'uncover-to-right',
+29: VALUE 'uncover-to-bottom',
+29: VALUE 'uncover-to-upperleft',
+29: VALUE 'uncover-to-upperright',
+29: VALUE 'uncover-to-lowerleft',
+29: VALUE 'uncover-to-lowerright',
+29: VALUE 'fade-to-center',
+29: VALUE 'fade-from-center',
+29: VALUE 'vertical-stripes',
+29: VALUE 'horizontal-stripes',
+29: VALUE 'clockwise',
+29: VALUE 'counterclockwise',
+29: VALUE 'open-vertical',
+29: VALUE 'open-horizontal',
+29: VALUE 'close-vertical',
+29: VALUE 'close-horizontal',
+29: VALUE 'wavyline-from-left',
+29: VALUE 'wavyline-from-top',
+29: VALUE 'wavyline-from-right',
+29: VALUE 'wavyline-from-bottom',
+29: VALUE 'spiralin-left',
+29: VALUE 'spiralin-right',
+29: VALUE 'spiralout-left',
+29: VALUE 'spiralout-right',
+29: VALUE 'roll-from-top',
+29: VALUE 'roll-from-left',
+29: VALUE 'roll-from-right',
+29: VALUE 'roll-from-bottom',
+29: VALUE 'stretch-from-left',
+29: VALUE 'stretch-from-top',
+29: VALUE 'stretch-from-right',
+29: VALUE 'stretch-from-bottom',
+29: VALUE 'vertical-lines',
+29: VALUE 'horizontal-lines',
+29: VALUE 'dissolve',
+29: VALUE 'random',
+29: VALUE 'vertical-checkerboard',
+29: VALUE 'horizontal-checkerboard',
+29: VALUE 'interlocking-horizontal-left',
+29: VALUE 'interlocking-horizontal-right',
+29: VALUE 'interlocking-vertical-top',
+29: VALUE 'interlocking-vertical-bottom',
+29: VALUE 'fly-away',
+29: VALUE 'open',
+29: VALUE 'close',
+29: VALUE 'melt',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:transition-speed",
+28: REF 'presentationSpeeds',
+29: CHOICE
+30: VALUE 'slow',
+30: VALUE 'medium',
+30: VALUE 'fast',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:type",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:subtype",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:direction",
+28: CHOICE
+29: VALUE 'forward',
+29: VALUE 'reverse',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "smil:fadeColor",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:duration",
+28: REF 'duration',
+29: DATA 'duration',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:visibility",
+28: CHOICE
+29: VALUE 'visible',
+29: VALUE 'hidden',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "draw:background-size",
+28: CHOICE
+29: VALUE 'full',
+29: VALUE 'border',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:background-objects-visible",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:background-visible",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-header",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-footer",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-page-number",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "presentation:display-date-time",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+24: REF 'style-drawing-page-properties-elements',
+25: CHOICE
+26: REF 'presentation-sound',
+26: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'chart',
+18: CHOICE
+19: REF 'style-chart-properties',
+20: ELEMENT "style:chart-properties",
+21: REF 'style-chart-properties-content',
+22: REF 'style-chart-properties-content-strict',
+23: SEQUENCE
+24: REF 'style-chart-properties-attlist',
+25: INTERLEAVE
+26: CHOICE
+27: ATTRIBUTE "chart:scale-text",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:three-dimensional",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:deep",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:symbol-type",
+28: VALUE 'none',
+27: ATTRIBUTE "chart:symbol-type",
+28: VALUE 'automatic',
+27: SEQUENCE
+28: ATTRIBUTE "chart:symbol-type",
+29: VALUE 'named-symbol',
+28: ATTRIBUTE "chart:symbol-name",
+29: CHOICE
+30: VALUE 'square',
+30: VALUE 'diamond',
+30: VALUE 'arrow-down',
+30: VALUE 'arrow-up',
+30: VALUE 'arrow-right',
+30: VALUE 'arrow-left',
+30: VALUE 'bow-tie',
+30: VALUE 'hourglass',
+30: VALUE 'circle',
+30: VALUE 'star',
+30: VALUE 'x',
+30: VALUE 'plus',
+30: VALUE 'asterisk',
+30: VALUE 'horizontal-bar',
+30: VALUE 'vertical-bar',
+27: SEQUENCE
+28: ATTRIBUTE "chart:symbol-type",
+29: VALUE 'image',
+28: ELEMENT "chart:symbol-image",
+29: ATTRIBUTE "xlink:href",
+30: REF 'anyURI',
+31: DATA 'anyURI',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:symbol-width",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:symbol-height",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:vertical",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:connect-bars",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:gap-width",
+29: REF 'integer',
+30: DATA 'integer',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:overlap",
+29: REF 'integer',
+30: DATA 'integer',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:japanese-candle-stick",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:interpolation",
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'cubic-spline',
+30: VALUE 'b-spline',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:spline-order",
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:spline-resolution",
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:pie-offset",
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:lines",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:solid-type",
+28: CHOICE
+29: VALUE 'cuboid',
+29: VALUE 'cylinder',
+29: VALUE 'cone',
+29: VALUE 'pyramid',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:stacked",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:percentage",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:link-data-style-to-source",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:visible",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:logarithmic",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:maximum",
+29: REF 'double',
+30: DATA 'double',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:minimum",
+29: REF 'double',
+30: DATA 'double',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:origin",
+29: REF 'double',
+30: DATA 'double',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:interval-major",
+29: REF 'double',
+30: DATA 'double',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:interval-minor-divisor",
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:tick-marks-major-inner",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:tick-marks-major-outer",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:tick-marks-minor-inner",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:tick-marks-minor-outer",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:display-label",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:text-overlap",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "text:line-break",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:label-arrangement",
+29: CHOICE
+30: VALUE 'side-by-side',
+30: VALUE 'stagger-even',
+30: VALUE 'stagger-odd',
+28: EPSILON
+26: REF 'common-style-direction-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:direction",
+29: CHOICE
+30: VALUE 'ltr',
+30: VALUE 'ttb',
+28: EPSILON
+26: REF 'common-rotation-angle-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:rotation-angle",
+29: REF 'nonNegativeInteger',
+30: DATA 'nonNegativeInteger',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:data-label-number",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'value',
+29: VALUE 'percentage',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:data-label-text",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:data-label-symbol",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:mean-value",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:error-category",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'variance',
+29: VALUE 'standard-deviation',
+29: VALUE 'percentage',
+29: VALUE 'error-margin',
+29: VALUE 'constant',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:error-percentage",
+28: REF 'double',
+29: DATA 'double',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:error-margin",
+28: REF 'double',
+29: DATA 'double',
+27: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:error-lower-limit",
+29: REF 'double',
+30: DATA 'double',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:error-upper-limit",
+29: REF 'double',
+30: DATA 'double',
+28: EPSILON
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "chart:error-upper-indicator",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "chart:error-lower-indicator",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:series-source",
+28: CHOICE
+29: VALUE 'columns',
+29: VALUE 'rows',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "chart:regression-type",
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'linear',
+29: VALUE 'logarithmic',
+29: VALUE 'exponential',
+29: VALUE 'power',
+27: EPSILON
+24: REF 'style-chart-properties-elements',
+25: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'style-graphic-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+18: ELEMENT "style:map",
+19: REF 'style-map-attlist',
+20: INTERLEAVE
+21: ATTRIBUTE "style:condition",
+22: REF 'string',
+23: DATA 'string',
+21: ATTRIBUTE "style:apply-style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:base-cell-address",
+23: REF 'cellAddress',
+24: DATA 'string',
+22: EPSILON
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'text-list-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-number-style',
+13: ELEMENT "number:number-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+17: ELEMENT "number:text",
+18: STRING
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'any-number',
+18: CHOICE
+19: REF 'number-number',
+20: ELEMENT "number:number",
+21: SEQUENCE
+22: REF 'number-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:decimal-replacement",
+26: STRING
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:display-factor",
+26: REF 'double',
+27: DATA 'double',
+25: EPSILON
+22: REF 'common-decimal-places-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'number-embedded-text',
+25: ELEMENT "number:embedded-text",
+26: SEQUENCE
+27: REF 'number-embedded-text-attlist',
+28: ATTRIBUTE "number:position",
+29: REF 'integer',
+30: DATA 'integer',
+27: STRING
+23: EPSILON
+19: REF 'number-scientific-number',
+20: ELEMENT "number:scientific-number",
+21: SEQUENCE
+22: REF 'number-scientific-number-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:min-exponent-digits",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-decimal-places-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+19: REF 'number-fraction',
+20: ELEMENT "number:fraction",
+21: SEQUENCE
+22: REF 'number-fraction-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-numerator-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:min-denominator-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:denominator-value",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-currency-style',
+13: ELEMENT "number:currency-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-auto-reorder-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:automatic-order",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'number-and-text',
+18: SEQUENCE
+19: REF 'number-number',
+19: CHOICE
+20: REF 'number-text',
+20: EPSILON
+17: CHOICE
+18: REF 'currency-symbol-and-text',
+19: SEQUENCE
+20: REF 'number-currency-symbol',
+21: ELEMENT "number:currency-symbol",
+22: SEQUENCE
+23: REF 'number-currency-symbol-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "number:language",
+27: REF 'languageCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "number:country",
+27: REF 'countryCode',
+28: DATA 'token',
+26: EPSILON
+23: STRING
+20: CHOICE
+21: REF 'number-text',
+21: EPSILON
+18: EPSILON
+16: SEQUENCE
+17: REF 'currency-symbol-and-text',
+18: SEQUENCE
+19: REF 'number-currency-symbol',
+19: CHOICE
+20: REF 'number-text',
+20: EPSILON
+17: CHOICE
+18: REF 'number-and-text',
+19: SEQUENCE
+20: REF 'number-number',
+20: CHOICE
+21: REF 'number-text',
+21: EPSILON
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-percentage-style',
+13: ELEMENT "number:percentage-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: REF 'number-and-text',
+17: SEQUENCE
+18: REF 'number-number',
+18: CHOICE
+19: REF 'number-text',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-date-style',
+13: ELEMENT "number:date-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-auto-reorder-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:automatic-order",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: REF 'common-format-source-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:format-source",
+18: CHOICE
+19: VALUE 'fixed',
+19: VALUE 'language',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: ONEOREMORE
+16: SEQUENCE
+17: REF 'any-date',
+18: CHOICE
+19: REF 'number-day',
+20: ELEMENT "number:day",
+21: SEQUENCE
+22: REF 'number-day-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-month',
+20: ELEMENT "number:month",
+21: SEQUENCE
+22: REF 'number-month-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:textual",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:possessive-form",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:style",
+26: CHOICE
+27: VALUE 'short',
+27: VALUE 'long',
+25: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-year',
+20: ELEMENT "number:year",
+21: SEQUENCE
+22: REF 'number-year-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-era',
+20: ELEMENT "number:era",
+21: SEQUENCE
+22: REF 'number-era-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-day-of-week',
+20: ELEMENT "number:day-of-week",
+21: SEQUENCE
+22: REF 'number-day-of-week-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-week-of-year',
+20: ELEMENT "number:week-of-year",
+21: REF 'common-calendar-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:calendar",
+24: CHOICE
+25: VALUE 'gregorian',
+25: VALUE 'gengou',
+25: VALUE 'ROC',
+25: VALUE 'hanja_yoil',
+25: VALUE 'hanja',
+25: VALUE 'hijri',
+25: VALUE 'jewish',
+25: VALUE 'buddhist',
+25: REF 'string',
+26: DATA 'string',
+23: EPSILON
+19: REF 'number-quarter',
+20: ELEMENT "number:quarter",
+21: SEQUENCE
+22: REF 'number-quarter-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-hours',
+20: ELEMENT "number:hours",
+21: REF 'number-hours-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:style",
+24: CHOICE
+25: VALUE 'short',
+25: VALUE 'long',
+23: EPSILON
+19: REF 'number-am-pm',
+20: ELEMENT "number:am-pm",
+21: EPSILON
+19: REF 'number-minutes',
+20: ELEMENT "number:minutes",
+21: REF 'number-minutes-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:style",
+24: CHOICE
+25: VALUE 'short',
+25: VALUE 'long',
+23: EPSILON
+19: REF 'number-seconds',
+20: ELEMENT "number:seconds",
+21: REF 'number-seconds-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-time-style',
+13: ELEMENT "number:time-style",
+14: SEQUENCE
+15: REF 'number-time-style-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:truncate-on-overflow",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-format-source-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:format-source",
+18: CHOICE
+19: VALUE 'fixed',
+19: VALUE 'language',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: ONEOREMORE
+16: SEQUENCE
+17: REF 'any-time',
+18: CHOICE
+19: REF 'number-hours',
+19: REF 'number-am-pm',
+19: REF 'number-minutes',
+19: REF 'number-seconds',
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-boolean-style',
+13: ELEMENT "number:boolean-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'number-boolean',
+18: ELEMENT "number:boolean",
+19: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-text-style',
+13: ELEMENT "number:text-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: STRING
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: SEQUENCE
+18: REF 'number-text-content',
+19: ELEMENT "number:text-content",
+20: EPSILON
+18: CHOICE
+19: REF 'number-text',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-default-style',
+11: ELEMENT "style:default-style",
+12: REF 'style-style-content',
+13: CHOICE
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'text',
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'paragraph',
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'section',
+15: CHOICE
+16: REF 'style-section-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'ruby',
+15: CHOICE
+16: REF 'style-ruby-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table',
+15: CHOICE
+16: REF 'style-table-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-column',
+15: CHOICE
+16: REF 'style-table-column-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-row',
+15: CHOICE
+16: REF 'style-table-row-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-cell',
+15: CHOICE
+16: REF 'style-table-cell-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: CHOICE
+17: VALUE 'graphic',
+17: VALUE 'presentation',
+15: CHOICE
+16: REF 'style-graphic-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'drawing-page',
+15: CHOICE
+16: REF 'style-drawing-page-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'chart',
+15: CHOICE
+16: REF 'style-chart-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-graphic-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'text-outline-style',
+10: ELEMENT "text:outline-style",
+11: ONEOREMORE
+12: REF 'text-outline-level-style',
+13: ELEMENT "text:outline-level-style",
+14: SEQUENCE
+15: REF 'text-outline-level-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "text:level",
+18: REF 'positiveInteger',
+19: DATA 'positiveInteger',
+17: CHOICE
+18: ATTRIBUTE "text:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: SEQUENCE
+18: REF 'common-num-format-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:num-format",
+21: CHOICE
+22: VALUE '1',
+22: VALUE 'i',
+22: VALUE 'I',
+22: REF 'string',
+23: DATA 'string',
+22: EPSILON
+20: SEQUENCE
+21: ATTRIBUTE "style:num-format",
+22: CHOICE
+23: VALUE 'a',
+23: VALUE 'A',
+21: REF 'style-num-letter-sync-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:num-letter-sync",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+20: EPSILON
+18: REF 'common-num-format-prefix-suffix-attlist',
+19: SEQUENCE
+20: CHOICE
+21: ATTRIBUTE "style:num-prefix",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:num-suffix",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+17: CHOICE
+18: ATTRIBUTE "text:display-levels",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "text:start-value",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: EPSILON
+15: CHOICE
+16: REF 'style-list-level-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'text-notes-configuration',
+9: EPSILON
+8: CHOICE
+9: REF 'text-bibliography-configuration',
+10: ELEMENT "text:bibliography-configuration",
+11: SEQUENCE
+12: REF 'text-bibliography-configuration-attlist',
+13: INTERLEAVE
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "text:prefix",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "text:suffix",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:numbered-entries",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "text:sort-by-position",
+17: REF 'boolean',
+18: CHOICE
+19: VALUE 'true',
+19: VALUE 'false',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "fo:language",
+17: REF 'languageCode',
+18: DATA 'token',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "fo:country",
+17: REF 'countryCode',
+18: DATA 'token',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "text:sort-algorithm",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+12: CHOICE
+13: ONEOREMORE
+14: REF 'text-sort-key',
+15: ELEMENT "text:sort-key",
+16: REF 'text-sort-key-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "text:key",
+19: CHOICE
+20: VALUE 'address',
+20: VALUE 'annote',
+20: VALUE 'author',
+20: VALUE 'bibliography-type',
+20: VALUE 'booktitle',
+20: VALUE 'chapter',
+20: VALUE 'custom1',
+20: VALUE 'custom2',
+20: VALUE 'custom3',
+20: VALUE 'custom4',
+20: VALUE 'custom5',
+20: VALUE 'edition',
+20: VALUE 'editor',
+20: VALUE 'howpublished',
+20: VALUE 'identifier',
+20: VALUE 'institution',
+20: VALUE 'isbn',
+20: VALUE 'issn',
+20: VALUE 'journal',
+20: VALUE 'month',
+20: VALUE 'note',
+20: VALUE 'number',
+20: VALUE 'organizations',
+20: VALUE 'pages',
+20: VALUE 'publisher',
+20: VALUE 'report-type',
+20: VALUE 'school',
+20: VALUE 'series',
+20: VALUE 'title',
+20: VALUE 'url',
+20: VALUE 'volume',
+20: VALUE 'year',
+18: CHOICE
+19: ATTRIBUTE "text:sort-ascending",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'text-linenumbering-configuration',
+10: ELEMENT "text:linenumbering-configuration",
+11: SEQUENCE
+12: REF 'text-linenumbering-configuration-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "text:number-lines",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: REF 'common-num-format-attlist',
+16: CHOICE
+17: ATTRIBUTE "style:num-format",
+18: CHOICE
+19: VALUE '1',
+19: VALUE 'i',
+19: VALUE 'I',
+19: REF 'string',
+20: DATA 'string',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:num-format",
+19: CHOICE
+20: VALUE 'a',
+20: VALUE 'A',
+18: REF 'style-num-letter-sync-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:num-letter-sync",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+17: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:style-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:increment",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:number-position",
+16: CHOICE
+17: VALUE 'left',
+17: VALUE 'right',
+17: VALUE 'inner',
+17: VALUE 'outer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:offset",
+16: REF 'nonNegativeLength',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:count-empty-lines",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:count-in-text-boxes",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:restart-on-page",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+12: CHOICE
+13: REF 'text-linenumbering-separator',
+14: ELEMENT "text:linenumbering-separator",
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "text:increment",
+18: REF 'nonNegativeInteger',
+19: DATA 'nonNegativeInteger',
+17: EPSILON
+16: STRING
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-gradient',
+11: ELEMENT "draw:gradient",
+12: SEQUENCE
+13: REF 'common-draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:name",
+17: REF 'styleName',
+18: DATA 'NCName',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "draw:style",
+16: REF 'gradient-style',
+17: CHOICE
+18: VALUE 'linear',
+18: VALUE 'axial',
+18: VALUE 'radial',
+18: VALUE 'ellipsoid',
+18: VALUE 'square',
+18: VALUE 'rectangular',
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:cx",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:cy",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:angle",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:border",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+13: REF 'draw-gradient-attlist',
+14: INTERLEAVE
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:start-color",
+18: REF 'color',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:end-color",
+18: REF 'color',
+19: DATA 'string',
+17: EPSILON
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:start-intensity",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:end-intensity",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'svg-linearGradient',
+11: ELEMENT "svg:linearGradient",
+12: SEQUENCE
+13: REF 'common-svg-gradient-attlist',
+14: INTERLEAVE
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "svg:gradientUnits",
+18: VALUE 'objectBoundingBox',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:gradientTransform",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:spreadMethod",
+18: CHOICE
+19: VALUE 'pad',
+19: VALUE 'reflect',
+19: VALUE 'repeat',
+17: EPSILON
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:x1",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:y1",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:x2",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:y2",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'svg-stop',
+16: ELEMENT "svg:stop",
+17: SEQUENCE
+18: ATTRIBUTE "svg:offset",
+19: CHOICE
+20: REF 'double',
+21: DATA 'double',
+20: REF 'percent',
+21: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "svg:stop-color",
+20: REF 'color',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "svg:stop-opacity",
+20: REF 'double',
+21: DATA 'double',
+19: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'svg-radialGradient',
+11: ELEMENT "svg:radialGradient",
+12: SEQUENCE
+13: REF 'common-svg-gradient-attlist',
+14: INTERLEAVE
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "svg:gradientUnits",
+18: VALUE 'objectBoundingBox',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:gradientTransform",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:spreadMethod",
+18: CHOICE
+19: VALUE 'pad',
+19: VALUE 'reflect',
+19: VALUE 'repeat',
+17: EPSILON
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:cx",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:cy",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:r",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:fx",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:fy",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'svg-stop',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-hatch',
+11: ELEMENT "draw:hatch",
+12: REF 'draw-hatch-attlist',
+13: INTERLEAVE
+14: ATTRIBUTE "draw:name",
+15: REF 'styleName',
+16: DATA 'NCName',
+14: CHOICE
+15: ATTRIBUTE "draw:display-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: ATTRIBUTE "draw:style",
+15: CHOICE
+16: VALUE 'single',
+16: VALUE 'double',
+16: VALUE 'triple',
+14: CHOICE
+15: ATTRIBUTE "draw:color",
+16: REF 'color',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:distance",
+16: REF 'length',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:rotation",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-fill-image',
+11: ELEMENT "draw:fill-image",
+12: SEQUENCE
+13: REF 'draw-fill-image-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "svg:width",
+18: REF 'length',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "svg:height",
+18: REF 'length',
+19: DATA 'string',
+17: EPSILON
+13: ATTRIBUTE "xlink:href",
+14: REF 'anyURI',
+15: DATA 'anyURI',
+13: CHOICE
+14: ATTRIBUTE "xlink:type",
+15: VALUE 'simple',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "xlink:show",
+15: VALUE 'embed',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "xlink:actuate",
+15: VALUE 'onLoad',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-marker',
+11: ELEMENT "draw:marker",
+12: SEQUENCE
+13: REF 'draw-marker-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: REF 'common-draw-viewbox-attlist',
+14: ATTRIBUTE "svg:viewBox",
+15: LIST
+16: SEQUENCE
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+13: REF 'common-draw-path-data-attlist',
+14: ATTRIBUTE "svg:d",
+15: REF 'pathData',
+16: DATA 'string',
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-stroke-dash',
+11: ELEMENT "draw:stroke-dash",
+12: REF 'draw-stroke-dash-attlist',
+13: INTERLEAVE
+14: ATTRIBUTE "draw:name",
+15: REF 'styleName',
+16: DATA 'NCName',
+14: CHOICE
+15: ATTRIBUTE "draw:display-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:style",
+16: CHOICE
+17: VALUE 'rect',
+17: VALUE 'round',
+15: EPSILON
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "draw:dots1",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:dots1-length",
+17: REF 'length',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:dots2",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:dots2-length",
+17: REF 'length',
+18: DATA 'string',
+16: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:distance",
+16: REF 'length',
+17: DATA 'string',
+15: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-opacity',
+11: ELEMENT "draw:opacity",
+12: SEQUENCE
+13: REF 'common-draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:name",
+17: REF 'styleName',
+18: DATA 'NCName',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "draw:style",
+16: REF 'gradient-style',
+17: CHOICE
+18: VALUE 'linear',
+18: VALUE 'axial',
+18: VALUE 'radial',
+18: VALUE 'ellipsoid',
+18: VALUE 'square',
+18: VALUE 'rectangular',
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "draw:cx",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "draw:cy",
+18: REF 'percent',
+19: DATA 'string',
+17: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:angle",
+17: REF 'integer',
+18: DATA 'integer',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:border",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+13: REF 'draw-opacity-attlist',
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "draw:start",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:end",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-presentation-page-layout',
+11: ELEMENT "style:presentation-page-layout",
+12: SEQUENCE
+13: ATTRIBUTE "style:name",
+14: REF 'styleName',
+15: DATA 'NCName',
+13: CHOICE
+14: ATTRIBUTE "style:display-name",
+15: REF 'string',
+16: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'presentation-placeholder',
+16: ELEMENT "presentation:placeholder",
+17: SEQUENCE
+18: ATTRIBUTE "presentation:object",
+19: REF 'presentation-classes',
+20: CHOICE
+21: VALUE 'title',
+21: VALUE 'outline',
+21: VALUE 'subtitle',
+21: VALUE 'text',
+21: VALUE 'graphic',
+21: VALUE 'object',
+21: VALUE 'chart',
+21: VALUE 'table',
+21: VALUE 'orgchart',
+21: VALUE 'page',
+21: VALUE 'notes',
+21: VALUE 'handout',
+21: VALUE 'header',
+21: VALUE 'footer',
+21: VALUE 'date-time',
+21: VALUE 'page-number',
+18: ATTRIBUTE "svg:x",
+19: CHOICE
+20: REF 'coordinate',
+21: REF 'length',
+22: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:y",
+19: CHOICE
+20: REF 'coordinate',
+21: REF 'length',
+22: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:width",
+19: CHOICE
+20: REF 'length',
+21: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:height",
+19: CHOICE
+20: REF 'length',
+21: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+14: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-automatic-styles',
+5: CHOICE
+6: ELEMENT "office:automatic-styles",
+7: INTERLEAVE
+8: REF 'styles',
+9: INTERLEAVE
+10: CHOICE
+11: ONEOREMORE
+12: REF 'style-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'text-list-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-number-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-currency-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-percentage-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-date-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-time-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-boolean-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-text-style',
+11: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-page-layout',
+11: ELEMENT "style:page-layout",
+12: SEQUENCE
+13: REF 'style-page-layout-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "style:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "style:page-usage",
+17: CHOICE
+18: VALUE 'all',
+18: VALUE 'left',
+18: VALUE 'right',
+18: VALUE 'mirrored',
+16: EPSILON
+13: CHOICE
+14: REF 'style-page-layout-properties',
+15: ELEMENT "style:page-layout-properties",
+16: REF 'style-page-layout-properties-content',
+17: REF 'style-page-layout-properties-content-strict',
+18: SEQUENCE
+19: REF 'style-page-layout-properties-attlist',
+20: INTERLEAVE
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "fo:page-width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:page-height",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'common-num-format-attlist',
+24: CHOICE
+25: ATTRIBUTE "style:num-format",
+26: CHOICE
+27: VALUE '1',
+27: VALUE 'i',
+27: VALUE 'I',
+27: REF 'string',
+28: DATA 'string',
+27: EPSILON
+25: SEQUENCE
+26: ATTRIBUTE "style:num-format",
+27: CHOICE
+28: VALUE 'a',
+28: VALUE 'A',
+26: REF 'style-num-letter-sync-attlist',
+27: CHOICE
+28: ATTRIBUTE "style:num-letter-sync",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: EPSILON
+23: EPSILON
+22: REF 'common-num-format-prefix-suffix-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "style:num-prefix",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "style:num-suffix",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:paper-tray-name",
+23: CHOICE
+24: VALUE 'default',
+24: REF 'string',
+25: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:print-orientation",
+23: CHOICE
+24: VALUE 'portrait',
+24: VALUE 'landscape',
+22: EPSILON
+21: SEQUENCE
+22: REF 'common-horizontal-margin-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "fo:margin-left",
+26: CHOICE
+27: REF 'length',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "fo:margin-right",
+26: CHOICE
+27: REF 'length',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+22: REF 'common-vertical-margin-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "fo:margin-top",
+26: CHOICE
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "fo:margin-bottom",
+26: CHOICE
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+22: REF 'common-margin-attlist',
+23: CHOICE
+24: ATTRIBUTE "fo:margin",
+25: CHOICE
+26: REF 'nonNegativeLength',
+27: DATA 'string',
+26: REF 'percent',
+27: DATA 'string',
+24: EPSILON
+21: REF 'common-border-attlist',
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "fo:border",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-top",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-bottom",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-left",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:border-right",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-border-line-width-attlist',
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-top",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-bottom",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-left",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:border-line-width-right",
+25: REF 'borderWidths',
+26: LIST
+27: SEQUENCE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'positiveLength',
+29: DATA 'string',
+24: EPSILON
+21: REF 'common-padding-attlist',
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "fo:padding",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-top",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-bottom",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-left",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:padding-right",
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-shadow-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:shadow",
+24: REF 'shadowType',
+25: CHOICE
+26: VALUE 'none',
+26: REF 'string',
+27: DATA 'string',
+23: EPSILON
+21: REF 'common-background-color-attlist',
+22: CHOICE
+23: ATTRIBUTE "fo:background-color",
+24: CHOICE
+25: VALUE 'transparent',
+25: REF 'color',
+26: DATA 'string',
+23: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:register-truth-ref-style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:print",
+23: LIST
+24: CHOICE
+25: ONEOREMORE
+26: CHOICE
+27: VALUE 'headers',
+27: VALUE 'grid',
+27: VALUE 'annotations',
+27: VALUE 'objects',
+27: VALUE 'charts',
+27: VALUE 'drawings',
+27: VALUE 'formulas',
+27: VALUE 'zero-values',
+25: EPSILON
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:print-page-order",
+23: CHOICE
+24: VALUE 'ttb',
+24: VALUE 'ltr',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:first-page-number",
+23: CHOICE
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+24: VALUE 'continue',
+22: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "style:scale-to",
+24: REF 'percent',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:scale-to-pages",
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+23: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:table-centering",
+23: CHOICE
+24: VALUE 'horizontal',
+24: VALUE 'vertical',
+24: VALUE 'both',
+24: VALUE 'none',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:footnote-max-height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: REF 'common-writing-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:writing-mode",
+24: CHOICE
+25: VALUE 'lr-tb',
+25: VALUE 'rl-tb',
+25: VALUE 'tb-rl',
+25: VALUE 'tb-lr',
+25: VALUE 'lr',
+25: VALUE 'rl',
+25: VALUE 'tb',
+25: VALUE 'page',
+23: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-mode",
+23: CHOICE
+24: VALUE 'none',
+24: VALUE 'line',
+24: VALUE 'both',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-base-height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-ruby-height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-lines",
+23: REF 'positiveInteger',
+24: DATA 'positiveInteger',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-color",
+23: REF 'color',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-ruby-below",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-print",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:layout-grid-display",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+19: REF 'style-page-layout-properties-elements',
+20: INTERLEAVE
+21: REF 'style-background-image',
+22: CHOICE
+21: REF 'style-columns',
+22: CHOICE
+21: REF 'style-footnote-sep',
+22: CHOICE
+23: ELEMENT "style:footnote-sep",
+24: REF 'style-footnote-sep-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "style:width",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:rel-width",
+28: REF 'percent',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:color",
+28: REF 'color',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:line-style",
+28: REF 'lineStyle',
+29: CHOICE
+30: VALUE 'none',
+30: VALUE 'solid',
+30: VALUE 'dotted',
+30: VALUE 'dash',
+30: VALUE 'long-dash',
+30: VALUE 'dot-dash',
+30: VALUE 'dot-dot-dash',
+30: VALUE 'wave',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:adjustment",
+28: CHOICE
+29: VALUE 'left',
+29: VALUE 'center',
+29: VALUE 'right',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:distance-before-sep",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:distance-after-sep",
+28: REF 'length',
+29: DATA 'string',
+27: EPSILON
+23: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'style-header-style',
+15: ELEMENT "style:header-style",
+16: CHOICE
+17: REF 'style-header-footer-properties',
+18: ELEMENT "style:header-footer-properties",
+19: REF 'style-header-footer-properties-content',
+20: REF 'style-header-footer-properties-content-strict',
+21: SEQUENCE
+22: REF 'style-header-footer-properties-attlist',
+23: INTERLEAVE
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "svg:height",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:min-height",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+24: SEQUENCE
+25: REF 'common-horizontal-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-left",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-right",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-vertical-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-top",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-bottom",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-margin-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:margin",
+28: CHOICE
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+24: REF 'common-border-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "fo:border",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-top",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-bottom",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-left",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:border-right",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+24: REF 'common-border-line-width-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-top",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-bottom",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-left",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "style:border-line-width-right",
+28: REF 'borderWidths',
+29: LIST
+30: SEQUENCE
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+31: REF 'positiveLength',
+32: DATA 'string',
+27: EPSILON
+24: REF 'common-padding-attlist',
+25: SEQUENCE
+26: CHOICE
+27: ATTRIBUTE "fo:padding",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-top",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-bottom",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-left",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "fo:padding-right",
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+27: EPSILON
+24: REF 'common-background-color-attlist',
+25: CHOICE
+26: ATTRIBUTE "fo:background-color",
+27: CHOICE
+28: VALUE 'transparent',
+28: REF 'color',
+29: DATA 'string',
+26: EPSILON
+24: REF 'common-shadow-attlist',
+25: CHOICE
+26: ATTRIBUTE "style:shadow",
+27: REF 'shadowType',
+28: CHOICE
+29: VALUE 'none',
+29: REF 'string',
+30: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "style:dynamic-spacing",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+22: REF 'style-header-footer-properties-elements',
+23: REF 'style-background-image',
+24: CHOICE
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'style-footer-style',
+15: ELEMENT "style:footer-style",
+16: CHOICE
+17: REF 'style-header-footer-properties',
+17: EPSILON
+14: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-master-styles',
+5: CHOICE
+6: ELEMENT "office:master-styles",
+7: INTERLEAVE
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-master-page',
+11: ELEMENT "style:master-page",
+12: SEQUENCE
+13: REF 'style-master-page-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "style:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "style:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "style:page-layout-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:style-name",
+17: REF 'styleNameRef',
+18: CHOICE
+19: DATA 'NCName',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "style:next-style-name",
+17: REF 'styleNameRef',
+18: CHOICE
+19: DATA 'NCName',
+19: EPSILON
+16: EPSILON
+13: CHOICE
+14: SEQUENCE
+15: REF 'style-header',
+16: ELEMENT "style:header",
+17: SEQUENCE
+18: REF 'common-style-header-footer-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:display",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+18: REF 'header-footer-content',
+19: CHOICE
+20: SEQUENCE
+21: REF 'text-tracked-changes',
+22: CHOICE
+23: ELEMENT "text:tracked-changes",
+24: SEQUENCE
+25: REF 'text-tracked-changes-attr',
+26: CHOICE
+27: ATTRIBUTE "text:track-changes",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-changed-region',
+28: ELEMENT "text:changed-region",
+29: SEQUENCE
+30: REF 'text-changed-region-attr',
+31: ATTRIBUTE "text:id",
+32: REF 'ID',
+33: DATA 'ID',
+30: REF 'text-changed-region-content',
+31: CHOICE
+32: ELEMENT "text:insertion",
+33: REF 'office-change-info',
+34: ELEMENT "office:change-info",
+35: SEQUENCE
+36: REF 'dc-creator',
+36: REF 'dc-date',
+36: CHOICE
+37: ONEOREMORE
+38: REF 'text-p',
+39: ELEMENT "text:p",
+40: SEQUENCE
+41: REF 'paragraph-attrs',
+42: INTERLEAVE
+43: SEQUENCE
+44: CHOICE
+45: ATTRIBUTE "text:style-name",
+46: REF 'styleNameRef',
+47: CHOICE
+48: DATA 'NCName',
+48: EPSILON
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:class-names",
+46: REF 'styleNameRefs',
+47: LIST
+48: CHOICE
+49: ONEOREMORE
+50: DATA 'NCName',
+49: EPSILON
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "text:cond-style-name",
+46: REF 'styleNameRef',
+47: CHOICE
+48: DATA 'NCName',
+48: EPSILON
+45: EPSILON
+43: CHOICE
+44: REF 'text-id',
+45: ATTRIBUTE "text:id",
+46: REF 'string',
+47: DATA 'string',
+44: EPSILON
+41: CHOICE
+42: ONEOREMORE
+43: REF 'paragraph-content',
+44: CHOICE
+45: STRING
+45: ELEMENT "text:s",
+46: CHOICE
+47: ATTRIBUTE "text:c",
+48: REF 'nonNegativeInteger',
+49: DATA 'nonNegativeInteger',
+47: EPSILON
+45: ELEMENT "text:tab",
+46: REF 'text-tab-attr',
+47: CHOICE
+48: ATTRIBUTE "text:tab-ref",
+49: REF 'nonNegativeInteger',
+50: DATA 'nonNegativeInteger',
+48: EPSILON
+45: ELEMENT "text:line-break",
+46: EPSILON
+45: REF 'text-soft-page-break',
+46: ELEMENT "text:soft-page-break",
+47: EPSILON
+45: ELEMENT "text:span",
+46: SEQUENCE
+47: CHOICE
+48: ATTRIBUTE "text:style-name",
+49: REF 'styleNameRef',
+50: CHOICE
+51: DATA 'NCName',
+51: EPSILON
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "text:class-names",
+49: REF 'styleNameRefs',
+50: LIST
+51: CHOICE
+52: ONEOREMORE
+53: DATA 'NCName',
+52: EPSILON
+48: EPSILON
+47: CHOICE
+48: ONEOREMORE
+49: REF 'paragraph-content',
+50: CHOICE
+51: STRING
+48: EPSILON
+45: ELEMENT "text:a",
+46: SEQUENCE
+47: REF 'text-a-attlist',
+48: INTERLEAVE
+49: CHOICE
+50: ATTRIBUTE "office:name",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+49: CHOICE
+50: ATTRIBUTE "office:title",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+49: SEQUENCE
+50: ATTRIBUTE "xlink:href",
+51: REF 'anyURI',
+52: DATA 'anyURI',
+50: CHOICE
+51: ATTRIBUTE "xlink:type",
+52: VALUE 'simple',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "xlink:actuate",
+52: VALUE 'onRequest',
+51: EPSILON
+49: SEQUENCE
+50: CHOICE
+51: ATTRIBUTE "office:target-frame-name",
+52: REF 'targetFrameName',
+53: CHOICE
+54: VALUE '_self',
+54: VALUE '_blank',
+54: VALUE '_parent',
+54: VALUE '_top',
+54: REF 'string',
+55: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "xlink:show",
+52: CHOICE
+53: VALUE 'new',
+53: VALUE 'replace',
+51: EPSILON
+49: SEQUENCE
+50: CHOICE
+51: ATTRIBUTE "text:style-name",
+52: REF 'styleNameRef',
+53: CHOICE
+54: DATA 'NCName',
+54: EPSILON
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:visited-style-name",
+52: REF 'styleNameRef',
+53: CHOICE
+54: DATA 'NCName',
+54: EPSILON
+51: EPSILON
+47: CHOICE
+48: REF 'office-event-listeners',
+48: EPSILON
+47: CHOICE
+48: ONEOREMORE
+49: REF 'paragraph-content',
+50: CHOICE
+51: STRING
+48: EPSILON
+45: ELEMENT "text:bookmark",
+46: ATTRIBUTE "text:name",
+47: REF 'string',
+48: DATA 'string',
+45: ELEMENT "text:bookmark-start",
+46: ATTRIBUTE "text:name",
+47: REF 'string',
+48: DATA 'string',
+45: ELEMENT "text:bookmark-end",
+46: ATTRIBUTE "text:name",
+47: REF 'string',
+48: DATA 'string',
+45: ELEMENT "text:reference-mark",
+46: ATTRIBUTE "text:name",
+47: REF 'string',
+48: DATA 'string',
+45: ELEMENT "text:reference-mark-start",
+46: ATTRIBUTE "text:name",
+47: REF 'string',
+48: DATA 'string',
+45: ELEMENT "text:reference-mark-end",
+46: ATTRIBUTE "text:name",
+47: REF 'string',
+48: DATA 'string',
+45: ELEMENT "text:note",
+46: SEQUENCE
+47: REF 'text-note-class',
+48: ATTRIBUTE "text:note-class",
+49: CHOICE
+50: VALUE 'footnote',
+50: VALUE 'endnote',
+47: CHOICE
+48: ATTRIBUTE "text:id",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: ELEMENT "text:note-citation",
+48: SEQUENCE
+49: CHOICE
+50: ATTRIBUTE "text:label",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+49: STRING
+47: ELEMENT "text:note-body",
+48: CHOICE
+49: ONEOREMORE
+50: REF 'text-content',
+51: CHOICE
+52: REF 'text-h',
+53: ELEMENT "text:h",
+54: SEQUENCE
+55: REF 'heading-attrs',
+56: INTERLEAVE
+57: ATTRIBUTE "text:outline-level",
+58: REF 'positiveInteger',
+59: DATA 'positiveInteger',
+57: CHOICE
+58: ATTRIBUTE "text:restart-numbering",
+59: REF 'boolean',
+60: CHOICE
+61: VALUE 'true',
+61: VALUE 'false',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "text:start-value",
+59: REF 'nonNegativeInteger',
+60: DATA 'nonNegativeInteger',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "text:is-list-header",
+59: REF 'boolean',
+60: CHOICE
+61: VALUE 'true',
+61: VALUE 'false',
+58: EPSILON
+55: REF 'paragraph-attrs',
+56: INTERLEAVE
+57: SEQUENCE
+58: CHOICE
+59: ATTRIBUTE "text:style-name",
+60: REF 'styleNameRef',
+61: CHOICE
+62: DATA 'NCName',
+62: EPSILON
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:class-names",
+60: REF 'styleNameRefs',
+61: LIST
+62: CHOICE
+63: ONEOREMORE
+64: DATA 'NCName',
+63: EPSILON
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "text:cond-style-name",
+60: REF 'styleNameRef',
+61: CHOICE
+62: DATA 'NCName',
+62: EPSILON
+59: EPSILON
+57: CHOICE
+58: REF 'text-id',
+59: ATTRIBUTE "text:id",
+60: REF 'string',
+61: DATA 'string',
+58: EPSILON
+55: CHOICE
+56: REF 'text-number',
+57: ELEMENT "text:number",
+58: REF 'string',
+59: DATA 'string',
+56: EPSILON
+55: CHOICE
+56: ONEOREMORE
+57: REF 'paragraph-content',
+58: CHOICE
+59: STRING
+56: EPSILON
+52: REF 'text-p',
+52: REF 'text-list',
+53: ELEMENT "text:list",
+54: SEQUENCE
+55: REF 'text-list-attr',
+56: INTERLEAVE
+57: CHOICE
+58: ATTRIBUTE "text:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "text:continue-numbering",
+59: REF 'boolean',
+60: CHOICE
+61: VALUE 'true',
+61: VALUE 'false',
+58: EPSILON
+55: CHOICE
+56: REF 'text-list-header',
+57: ELEMENT "text:list-header",
+58: REF 'text-list-item-content',
+59: SEQUENCE
+60: CHOICE
+61: REF 'text-number',
+61: EPSILON
+60: CHOICE
+61: ONEOREMORE
+62: CHOICE
+63: REF 'text-p',
+63: REF 'text-h',
+63: REF 'text-list',
+63: REF 'text-soft-page-break',
+61: EPSILON
+56: EPSILON
+55: CHOICE
+56: ONEOREMORE
+57: REF 'text-list-item',
+58: ELEMENT "text:list-item",
+59: SEQUENCE
+60: REF 'text-list-item-attr',
+61: CHOICE
+62: ATTRIBUTE "text:start-value",
+63: REF 'nonNegativeInteger',
+64: DATA 'nonNegativeInteger',
+62: EPSILON
+60: REF 'text-list-item-content',
+61: SEQUENCE
+62: CHOICE
+63: REF 'text-number',
+63: EPSILON
+62: CHOICE
+63: ONEOREMORE
+64: CHOICE
+65: REF 'text-p',
+65: REF 'text-h',
+65: REF 'text-list',
+65: REF 'text-soft-page-break',
+63: EPSILON
+56: EPSILON
+52: REF 'text-numbered-paragraph',
+53: ELEMENT "text:numbered-paragraph",
+54: SEQUENCE
+55: REF 'text-numbered-paragraph-attr',
+56: INTERLEAVE
+57: CHOICE
+58: ATTRIBUTE "text:level",
+59: REF 'positiveInteger',
+60: DATA 'positiveInteger',
+58: EPSILON
+57: REF 'text-list-attr',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "text:style-name",
+61: REF 'styleNameRef',
+62: CHOICE
+63: DATA 'NCName',
+63: EPSILON
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "text:continue-numbering",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+57: REF 'text-list-item-attr',
+58: CHOICE
+59: ATTRIBUTE "text:start-value",
+60: REF 'nonNegativeInteger',
+61: DATA 'nonNegativeInteger',
+59: EPSILON
+55: CHOICE
+56: REF 'text-number',
+56: EPSILON
+55: CHOICE
+56: REF 'text-p',
+56: REF 'text-h',
+52: REF 'table-table',
+53: ELEMENT "table:table",
+54: SEQUENCE
+55: REF 'table-table-attlist',
+56: INTERLEAVE
+57: CHOICE
+58: ATTRIBUTE "table:name",
+59: REF 'string',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:style-name",
+59: REF 'styleNameRef',
+60: CHOICE
+61: DATA 'NCName',
+61: EPSILON
+58: EPSILON
+57: SEQUENCE
+58: CHOICE
+59: ATTRIBUTE "table:protected",
+60: REF 'boolean',
+61: CHOICE
+62: VALUE 'true',
+62: VALUE 'false',
+59: EPSILON
+58: CHOICE
+59: ATTRIBUTE "table:protection-key",
+60: STRING
+59: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:print",
+59: REF 'boolean',
+60: CHOICE
+61: VALUE 'true',
+61: VALUE 'false',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:print-ranges",
+59: REF 'cellRangeAddressList',
+60: DATA 'string',
+58: EPSILON
+57: CHOICE
+58: ATTRIBUTE "table:is-sub-table",
+59: REF 'boolean',
+60: CHOICE
+61: VALUE 'true',
+61: VALUE 'false',
+58: EPSILON
+55: CHOICE
+56: REF 'table-table-source',
+57: ELEMENT "table:table-source",
+58: SEQUENCE
+59: REF 'table-table-source-attlist',
+60: INTERLEAVE
+61: CHOICE
+62: ATTRIBUTE "table:mode",
+63: CHOICE
+64: VALUE 'copy-all',
+64: VALUE 'copy-results-only',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "table:table-name",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+59: REF 'table-linked-source-attlist',
+60: INTERLEAVE
+61: SEQUENCE
+62: CHOICE
+63: ATTRIBUTE "xlink:type",
+64: VALUE 'simple',
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "xlink:actuate",
+64: VALUE 'onRequest',
+63: EPSILON
+62: ATTRIBUTE "xlink:href",
+63: REF 'anyURI',
+64: DATA 'anyURI',
+61: CHOICE
+62: ATTRIBUTE "table:filter-name",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "table:filter-options",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "table:refresh-delay",
+63: REF 'duration',
+64: DATA 'duration',
+62: EPSILON
+56: EPSILON
+55: CHOICE
+56: REF 'office-dde-source',
+57: ELEMENT "office:dde-source",
+58: SEQUENCE
+59: REF 'office-dde-source-attlist',
+60: INTERLEAVE
+61: CHOICE
+62: ATTRIBUTE "office:name",
+63: REF 'string',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "office:conversion-mode",
+63: CHOICE
+64: VALUE 'into-default-style-data-style',
+64: VALUE 'into-english-number',
+64: VALUE 'keep-text',
+62: EPSILON
+59: REF 'common-dde-connection-decl-attlist',
+60: INTERLEAVE
+61: ATTRIBUTE "office:dde-application",
+62: REF 'string',
+63: DATA 'string',
+61: ATTRIBUTE "office:dde-topic",
+62: REF 'string',
+63: DATA 'string',
+61: ATTRIBUTE "office:dde-item",
+62: REF 'string',
+63: DATA 'string',
+61: CHOICE
+62: ATTRIBUTE "office:automatic-update",
+63: REF 'boolean',
+64: CHOICE
+65: VALUE 'true',
+65: VALUE 'false',
+62: EPSILON
+56: EPSILON
+55: CHOICE
+56: REF 'table-scenario',
+57: ELEMENT "table:scenario",
+58: REF 'table-scenario-attlist',
+59: INTERLEAVE
+60: ATTRIBUTE "table:scenario-ranges",
+61: REF 'cellRangeAddressList',
+62: DATA 'string',
+60: ATTRIBUTE "table:is-active",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: CHOICE
+61: ATTRIBUTE "table:display-border",
+62: REF 'boolean',
+63: CHOICE
+64: VALUE 'true',
+64: VALUE 'false',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "table:border-color",
+62: REF 'color',
+63: DATA 'string',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "table:copy-back",
+62: REF 'boolean',
+63: CHOICE
+64: VALUE 'true',
+64: VALUE 'false',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "table:copy-styles",
+62: REF 'boolean',
+63: CHOICE
+64: VALUE 'true',
+64: VALUE 'false',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "table:copy-formulas",
+62: REF 'boolean',
+63: CHOICE
+64: VALUE 'true',
+64: VALUE 'false',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "table:comment",
+62: REF 'string',
+63: DATA 'string',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "table:protected",
+62: REF 'boolean',
+63: CHOICE
+64: VALUE 'true',
+64: VALUE 'false',
+61: EPSILON
+56: EPSILON
+55: CHOICE
+56: REF 'office-forms',
+57: CHOICE
+58: ELEMENT "office:forms",
+59: SEQUENCE
+60: REF 'office-forms-attlist',
+61: INTERLEAVE
+62: CHOICE
+63: ATTRIBUTE "form:automatic-focus",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+62: CHOICE
+63: ATTRIBUTE "form:apply-design-mode",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+60: CHOICE
+61: ONEOREMORE
+62: CHOICE
+63: REF 'form-form',
+64: ELEMENT "form:form",
+65: SEQUENCE
+66: REF 'common-form-control-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:name",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:control-implementation",
+70: REF 'namespacedToken',
+71: DATA 'string',
+69: EPSILON
+66: REF 'form-form-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: SEQUENCE
+70: ATTRIBUTE "xlink:href",
+71: REF 'anyURI',
+72: DATA 'anyURI',
+70: CHOICE
+71: ATTRIBUTE "xlink:type",
+72: VALUE 'simple',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "xlink:actuate",
+72: VALUE 'onRequest',
+71: EPSILON
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "office:target-frame",
+70: REF 'targetFrameName',
+71: CHOICE
+72: VALUE '_self',
+72: VALUE '_blank',
+72: VALUE '_parent',
+72: VALUE '_top',
+72: REF 'string',
+73: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:method",
+70: CHOICE
+71: VALUE 'get',
+71: VALUE 'post',
+71: REF 'string',
+72: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:enctype",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:allow-deletes",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:allow-inserts",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:allow-updates",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:apply-filter",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:command-type",
+70: CHOICE
+71: VALUE 'table',
+71: VALUE 'query',
+71: VALUE 'command',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:command",
+70: STRING
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:datasource",
+70: CHOICE
+71: REF 'anyURI',
+72: DATA 'anyURI',
+71: REF 'string',
+72: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:master-fields",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:detail-fields",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:escape-processing",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:filter",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:ignore-result",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:navigation-mode",
+70: REF 'navigation',
+71: CHOICE
+72: VALUE 'none',
+72: VALUE 'current',
+72: VALUE 'parent',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:order",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-cycle",
+70: REF 'tab-cycles',
+71: CHOICE
+72: VALUE 'records',
+72: VALUE 'current',
+72: VALUE 'page',
+69: EPSILON
+66: CHOICE
+67: REF 'form-properties',
+68: ELEMENT "form:properties",
+69: ONEOREMORE
+70: REF 'form-property',
+71: CHOICE
+72: ELEMENT "form:property",
+73: SEQUENCE
+74: REF 'form-property-name',
+75: ATTRIBUTE "form:property-name",
+76: REF 'string',
+77: DATA 'string',
+74: REF 'form-property-value-and-type-attlist',
+75: CHOICE
+76: REF 'common-value-and-type-attlist',
+77: CHOICE
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'float',
+79: ATTRIBUTE "office:value",
+80: REF 'double',
+81: DATA 'double',
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'percentage',
+79: ATTRIBUTE "office:value",
+80: REF 'double',
+81: DATA 'double',
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'currency',
+79: ATTRIBUTE "office:value",
+80: REF 'double',
+81: DATA 'double',
+79: CHOICE
+80: ATTRIBUTE "office:currency",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'date',
+79: ATTRIBUTE "office:date-value",
+80: REF 'dateOrDateTime',
+81: CHOICE
+82: DATA 'date',
+82: DATA 'dateTime',
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'time',
+79: ATTRIBUTE "office:time-value",
+80: REF 'duration',
+81: DATA 'duration',
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'boolean',
+79: ATTRIBUTE "office:boolean-value",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+78: SEQUENCE
+79: ATTRIBUTE "office:value-type",
+80: VALUE 'string',
+79: CHOICE
+80: ATTRIBUTE "office:string-value",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+76: ATTRIBUTE "office:value-type",
+77: VALUE 'void',
+72: ELEMENT "form:list-property",
+73: SEQUENCE
+74: REF 'form-property-name',
+75: ATTRIBUTE "form:property-name",
+76: REF 'string',
+77: DATA 'string',
+74: REF 'form-property-type-and-value-list',
+75: CHOICE
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'float',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: ATTRIBUTE "office:value",
+81: REF 'double',
+82: DATA 'double',
+78: EPSILON
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'percentage',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: ATTRIBUTE "office:value",
+81: REF 'double',
+82: DATA 'double',
+78: EPSILON
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'currency',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: SEQUENCE
+81: ATTRIBUTE "office:value",
+82: REF 'double',
+83: DATA 'double',
+81: CHOICE
+82: ATTRIBUTE "office:currency",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+78: EPSILON
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'date',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: ATTRIBUTE "office:date-value",
+81: REF 'dateOrDateTime',
+82: CHOICE
+83: DATA 'date',
+83: DATA 'dateTime',
+78: EPSILON
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'time',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: ATTRIBUTE "office:time-value",
+81: REF 'duration',
+82: DATA 'duration',
+78: EPSILON
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'boolean',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: ATTRIBUTE "office:boolean-value",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+78: EPSILON
+76: SEQUENCE
+77: ATTRIBUTE "office:value-type",
+78: VALUE 'string',
+77: CHOICE
+78: ONEOREMORE
+79: ELEMENT "form:list-value",
+80: ATTRIBUTE "office:string-value",
+81: REF 'string',
+82: DATA 'string',
+78: EPSILON
+76: ATTRIBUTE "office:value-type",
+77: VALUE 'void',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+66: CHOICE
+67: ONEOREMORE
+68: CHOICE
+69: REF 'controls',
+70: CHOICE
+71: REF 'column-controls',
+72: CHOICE
+73: ELEMENT "form:text",
+74: SEQUENCE
+75: REF 'form-text-attlist',
+76: SEQUENCE
+77: REF 'form-control-attlist',
+78: SEQUENCE
+79: REF 'common-form-control-attlist',
+80: INTERLEAVE
+81: CHOICE
+82: ATTRIBUTE "form:name",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+81: CHOICE
+82: ATTRIBUTE "form:control-implementation",
+83: REF 'namespacedToken',
+84: DATA 'string',
+82: EPSILON
+79: REF 'common-control-id-attlist',
+80: ATTRIBUTE "form:id",
+81: REF 'ID',
+82: DATA 'ID',
+79: REF 'xforms-bind-attlist',
+80: CHOICE
+81: ATTRIBUTE "xforms:bind",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+77: REF 'common-current-value-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:current-value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: REF 'common-disabled-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:disabled",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-maxlength-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:max-length",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+77: REF 'common-printable-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:printable",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-readonly-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:readonly",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-tab-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:tab-index",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:tab-stop",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+77: REF 'common-title-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:title",
+80: STRING
+79: EPSILON
+77: REF 'common-value-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: REF 'common-convert-empty-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:convert-empty-to-null",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-data-field-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:data-field",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+73: ELEMENT "form:textarea",
+74: SEQUENCE
+75: REF 'form-textarea-attlist',
+76: SEQUENCE
+77: REF 'form-control-attlist',
+78: SEQUENCE
+79: REF 'common-form-control-attlist',
+80: INTERLEAVE
+81: CHOICE
+82: ATTRIBUTE "form:name",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+81: CHOICE
+82: ATTRIBUTE "form:control-implementation",
+83: REF 'namespacedToken',
+84: DATA 'string',
+82: EPSILON
+79: REF 'common-control-id-attlist',
+80: ATTRIBUTE "form:id",
+81: REF 'ID',
+82: DATA 'ID',
+79: REF 'xforms-bind-attlist',
+80: CHOICE
+81: ATTRIBUTE "xforms:bind",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+77: REF 'common-current-value-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:current-value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: REF 'common-disabled-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:disabled",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-maxlength-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:max-length",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+77: REF 'common-printable-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:printable",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-readonly-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:readonly",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-tab-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:tab-index",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:tab-stop",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+77: REF 'common-title-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:title",
+80: STRING
+79: EPSILON
+77: REF 'common-value-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: REF 'common-convert-empty-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:convert-empty-to-null",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-data-field-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:data-field",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+75: CHOICE
+76: ONEOREMORE
+77: REF 'text-p',
+76: EPSILON
+73: ELEMENT "form:formatted-text",
+74: SEQUENCE
+75: REF 'form-formatted-text-attlist',
+76: INTERLEAVE
+77: SEQUENCE
+78: REF 'form-control-attlist',
+79: SEQUENCE
+80: REF 'common-form-control-attlist',
+81: INTERLEAVE
+82: CHOICE
+83: ATTRIBUTE "form:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "form:control-implementation",
+84: REF 'namespacedToken',
+85: DATA 'string',
+83: EPSILON
+80: REF 'common-control-id-attlist',
+81: ATTRIBUTE "form:id",
+82: REF 'ID',
+83: DATA 'ID',
+80: REF 'xforms-bind-attlist',
+81: CHOICE
+82: ATTRIBUTE "xforms:bind",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+78: REF 'common-current-value-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:current-value",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-disabled-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:disabled",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-maxlength-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:max-length",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+78: REF 'common-printable-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:printable",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-readonly-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:readonly",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-tab-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:tab-index",
+82: REF 'nonNegativeInteger',
+83: DATA 'nonNegativeInteger',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:tab-stop",
+82: REF 'boolean',
+83: CHOICE
+84: VALUE 'true',
+84: VALUE 'false',
+81: EPSILON
+78: REF 'common-title-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:title",
+81: STRING
+80: EPSILON
+78: REF 'common-value-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:value",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-convert-empty-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:convert-empty-to-null",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-data-field-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:data-field",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:max-value",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:min-value",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:validation",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+73: ELEMENT "form:number",
+74: SEQUENCE
+75: REF 'form-number-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:value",
+79: REF 'double',
+80: DATA 'double',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:current-value",
+79: REF 'double',
+80: DATA 'double',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:min-value",
+79: REF 'double',
+80: DATA 'double',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:max-value",
+79: REF 'double',
+80: DATA 'double',
+78: EPSILON
+75: REF 'common-numeric-control-attlist',
+76: SEQUENCE
+77: REF 'form-control-attlist',
+78: SEQUENCE
+79: REF 'common-form-control-attlist',
+80: INTERLEAVE
+81: CHOICE
+82: ATTRIBUTE "form:name",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+81: CHOICE
+82: ATTRIBUTE "form:control-implementation",
+83: REF 'namespacedToken',
+84: DATA 'string',
+82: EPSILON
+79: REF 'common-control-id-attlist',
+80: ATTRIBUTE "form:id",
+81: REF 'ID',
+82: DATA 'ID',
+79: REF 'xforms-bind-attlist',
+80: CHOICE
+81: ATTRIBUTE "xforms:bind",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+77: REF 'common-disabled-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:disabled",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-maxlength-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:max-length",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+77: REF 'common-printable-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:printable",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-readonly-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:readonly",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-tab-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:tab-index",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:tab-stop",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+77: REF 'common-title-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:title",
+80: STRING
+79: EPSILON
+77: REF 'common-convert-empty-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:convert-empty-to-null",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-data-field-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:data-field",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+73: ELEMENT "form:date",
+74: SEQUENCE
+75: REF 'form-date-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:value",
+79: REF 'date',
+80: DATA 'date',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:current-value",
+79: REF 'date',
+80: DATA 'date',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:min-value",
+79: REF 'date',
+80: DATA 'date',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:max-value",
+79: REF 'date',
+80: DATA 'date',
+78: EPSILON
+75: REF 'common-numeric-control-attlist',
+76: SEQUENCE
+77: REF 'form-control-attlist',
+78: SEQUENCE
+79: REF 'common-form-control-attlist',
+80: INTERLEAVE
+81: CHOICE
+82: ATTRIBUTE "form:name",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+81: CHOICE
+82: ATTRIBUTE "form:control-implementation",
+83: REF 'namespacedToken',
+84: DATA 'string',
+82: EPSILON
+79: REF 'common-control-id-attlist',
+80: ATTRIBUTE "form:id",
+81: REF 'ID',
+82: DATA 'ID',
+79: REF 'xforms-bind-attlist',
+80: CHOICE
+81: ATTRIBUTE "xforms:bind",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+77: REF 'common-disabled-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:disabled",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-maxlength-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:max-length",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+77: REF 'common-printable-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:printable",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-readonly-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:readonly",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-tab-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:tab-index",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:tab-stop",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+77: REF 'common-title-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:title",
+80: STRING
+79: EPSILON
+77: REF 'common-convert-empty-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:convert-empty-to-null",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+77: REF 'common-data-field-attlist',
+78: CHOICE
+79: ATTRIBUTE "form:data-field",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+73: ELEMENT "form:combobox",
+74: SEQUENCE
+75: REF 'form-combobox-attlist',
+76: INTERLEAVE
+77: SEQUENCE
+78: REF 'form-control-attlist',
+79: SEQUENCE
+80: REF 'common-form-control-attlist',
+81: INTERLEAVE
+82: CHOICE
+83: ATTRIBUTE "form:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "form:control-implementation",
+84: REF 'namespacedToken',
+85: DATA 'string',
+83: EPSILON
+80: REF 'common-control-id-attlist',
+81: ATTRIBUTE "form:id",
+82: REF 'ID',
+83: DATA 'ID',
+80: REF 'xforms-bind-attlist',
+81: CHOICE
+82: ATTRIBUTE "xforms:bind",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+78: REF 'common-current-value-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:current-value",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-disabled-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:disabled",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'dropdown',
+79: CHOICE
+80: ATTRIBUTE "form:dropdown",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-maxlength-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:max-length",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+78: REF 'common-printable-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:printable",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-readonly-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:readonly",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'size',
+79: CHOICE
+80: ATTRIBUTE "form:size",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+78: REF 'common-tab-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:tab-index",
+82: REF 'nonNegativeInteger',
+83: DATA 'nonNegativeInteger',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:tab-stop",
+82: REF 'boolean',
+83: CHOICE
+84: VALUE 'true',
+84: VALUE 'false',
+81: EPSILON
+78: REF 'common-title-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:title",
+81: STRING
+80: EPSILON
+78: REF 'common-value-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:value",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-convert-empty-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:convert-empty-to-null",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-data-field-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:data-field",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'list-source',
+79: CHOICE
+80: ATTRIBUTE "form:list-source",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'list-source-type',
+79: CHOICE
+80: ATTRIBUTE "form:list-source-type",
+81: CHOICE
+82: VALUE 'table',
+82: VALUE 'query',
+82: VALUE 'sql',
+82: VALUE 'sql-pass-through',
+82: VALUE 'value-list',
+82: VALUE 'table-fields',
+80: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:auto-complete",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+75: CHOICE
+76: ONEOREMORE
+77: REF 'form-item',
+78: ELEMENT "form:item",
+79: SEQUENCE
+80: REF 'form-item-attlist',
+81: REF 'label',
+82: CHOICE
+83: ATTRIBUTE "form:label",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+80: STRING
+76: EPSILON
+73: ELEMENT "form:listbox",
+74: SEQUENCE
+75: REF 'form-listbox-attlist',
+76: INTERLEAVE
+77: SEQUENCE
+78: REF 'form-control-attlist',
+79: SEQUENCE
+80: REF 'common-form-control-attlist',
+81: INTERLEAVE
+82: CHOICE
+83: ATTRIBUTE "form:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "form:control-implementation",
+84: REF 'namespacedToken',
+85: DATA 'string',
+83: EPSILON
+80: REF 'common-control-id-attlist',
+81: ATTRIBUTE "form:id",
+82: REF 'ID',
+83: DATA 'ID',
+80: REF 'xforms-bind-attlist',
+81: CHOICE
+82: ATTRIBUTE "xforms:bind",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+78: REF 'common-disabled-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:disabled",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'dropdown',
+79: CHOICE
+80: ATTRIBUTE "form:dropdown",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-printable-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:printable",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'size',
+79: CHOICE
+80: ATTRIBUTE "form:size",
+81: REF 'nonNegativeInteger',
+82: DATA 'nonNegativeInteger',
+80: EPSILON
+78: REF 'common-tab-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:tab-index",
+82: REF 'nonNegativeInteger',
+83: DATA 'nonNegativeInteger',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:tab-stop",
+82: REF 'boolean',
+83: CHOICE
+84: VALUE 'true',
+84: VALUE 'false',
+81: EPSILON
+78: REF 'common-title-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:title",
+81: STRING
+80: EPSILON
+78: REF 'bound-column',
+79: CHOICE
+80: ATTRIBUTE "form:bound-column",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-data-field-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:data-field",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'list-source',
+79: CHOICE
+80: ATTRIBUTE "form:list-source",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'list-source-type',
+79: CHOICE
+80: ATTRIBUTE "form:list-source-type",
+81: CHOICE
+82: VALUE 'table',
+82: VALUE 'query',
+82: VALUE 'sql',
+82: VALUE 'sql-pass-through',
+82: VALUE 'value-list',
+82: VALUE 'table-fields',
+80: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:multiple",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:xforms-list-source",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+75: CHOICE
+76: ONEOREMORE
+77: REF 'form-option',
+78: ELEMENT "form:option",
+79: SEQUENCE
+80: REF 'form-option-attlist',
+81: SEQUENCE
+82: REF 'current-selected',
+83: CHOICE
+84: ATTRIBUTE "form:current-selected",
+85: REF 'boolean',
+86: CHOICE
+87: VALUE 'true',
+87: VALUE 'false',
+84: EPSILON
+82: REF 'selected',
+83: CHOICE
+84: ATTRIBUTE "form:selected",
+85: REF 'boolean',
+86: CHOICE
+87: VALUE 'true',
+87: VALUE 'false',
+84: EPSILON
+82: REF 'label',
+83: CHOICE
+84: ATTRIBUTE "form:label",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+82: REF 'common-value-attlist',
+83: CHOICE
+84: ATTRIBUTE "form:value",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+80: STRING
+76: EPSILON
+73: ELEMENT "form:checkbox",
+74: SEQUENCE
+75: REF 'form-checkbox-attlist',
+76: INTERLEAVE
+77: SEQUENCE
+78: REF 'form-control-attlist',
+79: SEQUENCE
+80: REF 'common-form-control-attlist',
+81: INTERLEAVE
+82: CHOICE
+83: ATTRIBUTE "form:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "form:control-implementation",
+84: REF 'namespacedToken',
+85: DATA 'string',
+83: EPSILON
+80: REF 'common-control-id-attlist',
+81: ATTRIBUTE "form:id",
+82: REF 'ID',
+83: DATA 'ID',
+80: REF 'xforms-bind-attlist',
+81: CHOICE
+82: ATTRIBUTE "xforms:bind",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+78: REF 'common-disabled-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:disabled",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'label',
+79: CHOICE
+80: ATTRIBUTE "form:label",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-printable-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:printable",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+78: REF 'common-tab-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:tab-index",
+82: REF 'nonNegativeInteger',
+83: DATA 'nonNegativeInteger',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:tab-stop",
+82: REF 'boolean',
+83: CHOICE
+84: VALUE 'true',
+84: VALUE 'false',
+81: EPSILON
+78: REF 'common-title-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:title",
+81: STRING
+80: EPSILON
+78: REF 'common-value-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:value",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-data-field-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:data-field",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+78: REF 'common-form-visual-effect-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:visual-effect",
+81: CHOICE
+82: VALUE 'flat',
+82: VALUE '3d',
+80: EPSILON
+78: REF 'common-form-relative-image-position-attlist',
+79: CHOICE
+80: ATTRIBUTE "form:image-position",
+81: VALUE 'center',
+80: EPSILON
+80: SEQUENCE
+81: ATTRIBUTE "form:image-position",
+82: CHOICE
+83: VALUE 'start',
+83: VALUE 'end',
+83: VALUE 'top',
+83: VALUE 'bottom',
+81: CHOICE
+82: ATTRIBUTE "form:image-align",
+83: CHOICE
+84: VALUE 'start',
+84: VALUE 'center',
+84: VALUE 'end',
+82: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:current-state",
+79: REF 'states',
+80: CHOICE
+81: VALUE 'unchecked',
+81: VALUE 'checked',
+81: VALUE 'unknown',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:is-tristate",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:state",
+79: REF 'states',
+80: CHOICE
+81: VALUE 'unchecked',
+81: VALUE 'checked',
+81: VALUE 'unknown',
+78: EPSILON
+75: REF 'common-form-control-content',
+76: SEQUENCE
+77: CHOICE
+78: REF 'form-properties',
+78: EPSILON
+77: CHOICE
+78: REF 'office-event-listeners',
+78: EPSILON
+71: ELEMENT "form:password",
+72: SEQUENCE
+73: REF 'form-password-attlist',
+74: INTERLEAVE
+75: SEQUENCE
+76: REF 'form-control-attlist',
+77: SEQUENCE
+78: REF 'common-form-control-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:name",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:control-implementation",
+82: REF 'namespacedToken',
+83: DATA 'string',
+81: EPSILON
+78: REF 'common-control-id-attlist',
+79: ATTRIBUTE "form:id",
+80: REF 'ID',
+81: DATA 'ID',
+78: REF 'xforms-bind-attlist',
+79: CHOICE
+80: ATTRIBUTE "xforms:bind",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+76: REF 'common-disabled-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:disabled",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'common-maxlength-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:max-length",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+76: REF 'common-printable-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:printable",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'common-tab-attlist',
+77: INTERLEAVE
+78: CHOICE
+79: ATTRIBUTE "form:tab-index",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "form:tab-stop",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+76: REF 'common-title-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:title",
+79: STRING
+78: EPSILON
+76: REF 'common-value-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:value",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'common-convert-empty-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:convert-empty-to-null",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:echo-char",
+77: REF 'character',
+78: DATA 'string',
+76: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:file",
+72: SEQUENCE
+73: REF 'form-file-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-current-value-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:current-value",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-maxlength-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:max-length",
+78: REF 'nonNegativeInteger',
+79: DATA 'nonNegativeInteger',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-readonly-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:readonly",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-tab-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:tab-index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:tab-stop",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+75: REF 'common-value-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:value",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:time",
+72: SEQUENCE
+73: REF 'form-time-attlist',
+74: INTERLEAVE
+75: CHOICE
+76: ATTRIBUTE "form:value",
+77: REF 'time',
+78: DATA 'time',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:current-value",
+77: REF 'time',
+78: DATA 'time',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:min-value",
+77: REF 'time',
+78: DATA 'time',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:max-value",
+77: REF 'time',
+78: DATA 'time',
+76: EPSILON
+73: REF 'common-numeric-control-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-maxlength-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:max-length",
+78: REF 'nonNegativeInteger',
+79: DATA 'nonNegativeInteger',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-readonly-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:readonly",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-tab-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:tab-index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:tab-stop",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+75: REF 'common-convert-empty-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:convert-empty-to-null",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-data-field-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:data-field",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:fixed-text",
+72: SEQUENCE
+73: REF 'form-fixed-text-attlist',
+74: INTERLEAVE
+75: SEQUENCE
+76: REF 'form-control-attlist',
+77: SEQUENCE
+78: REF 'common-form-control-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:name",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:control-implementation",
+82: REF 'namespacedToken',
+83: DATA 'string',
+81: EPSILON
+78: REF 'common-control-id-attlist',
+79: ATTRIBUTE "form:id",
+80: REF 'ID',
+81: DATA 'ID',
+78: REF 'xforms-bind-attlist',
+79: CHOICE
+80: ATTRIBUTE "xforms:bind",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+76: REF 'for',
+77: CHOICE
+78: ATTRIBUTE "form:for",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'common-disabled-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:disabled",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'label',
+77: CHOICE
+78: ATTRIBUTE "form:label",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'common-printable-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:printable",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'common-title-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:title",
+79: STRING
+78: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:multi-line",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+76: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:button",
+72: SEQUENCE
+73: REF 'form-button-attlist',
+74: INTERLEAVE
+75: SEQUENCE
+76: REF 'form-control-attlist',
+77: SEQUENCE
+78: REF 'common-form-control-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:name",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:control-implementation",
+82: REF 'namespacedToken',
+83: DATA 'string',
+81: EPSILON
+78: REF 'common-control-id-attlist',
+79: ATTRIBUTE "form:id",
+80: REF 'ID',
+81: DATA 'ID',
+78: REF 'xforms-bind-attlist',
+79: CHOICE
+80: ATTRIBUTE "xforms:bind",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+76: REF 'button-type',
+77: CHOICE
+78: ATTRIBUTE "form:button-type",
+79: REF 'types',
+80: CHOICE
+81: VALUE 'submit',
+81: VALUE 'reset',
+81: VALUE 'push',
+81: VALUE 'url',
+78: EPSILON
+76: REF 'common-disabled-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:disabled",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'label',
+77: CHOICE
+78: ATTRIBUTE "form:label",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'image-data',
+77: CHOICE
+78: ATTRIBUTE "form:image-data",
+79: REF 'anyURI',
+80: DATA 'anyURI',
+78: EPSILON
+76: REF 'common-printable-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:printable",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'common-tab-attlist',
+77: INTERLEAVE
+78: CHOICE
+79: ATTRIBUTE "form:tab-index",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "form:tab-stop",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+76: REF 'target-frame',
+77: CHOICE
+78: ATTRIBUTE "office:target-frame",
+79: REF 'targetFrameName',
+80: CHOICE
+81: VALUE '_self',
+81: VALUE '_blank',
+81: VALUE '_parent',
+81: VALUE '_top',
+81: REF 'string',
+82: DATA 'string',
+78: EPSILON
+76: REF 'target-location',
+77: CHOICE
+78: ATTRIBUTE "xlink:href",
+79: REF 'anyURI',
+80: DATA 'anyURI',
+78: EPSILON
+76: REF 'common-title-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:title",
+79: STRING
+78: EPSILON
+76: REF 'common-value-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:value",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+76: REF 'common-form-relative-image-position-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:image-position",
+79: VALUE 'center',
+78: EPSILON
+78: SEQUENCE
+79: ATTRIBUTE "form:image-position",
+80: CHOICE
+81: VALUE 'start',
+81: VALUE 'end',
+81: VALUE 'top',
+81: VALUE 'bottom',
+79: CHOICE
+80: ATTRIBUTE "form:image-align",
+81: CHOICE
+82: VALUE 'start',
+82: VALUE 'center',
+82: VALUE 'end',
+80: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:default-button",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:toggle",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:focus-on-click",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:xforms-submission",
+77: REF 'string',
+78: DATA 'string',
+76: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:image",
+72: SEQUENCE
+73: REF 'form-image-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'button-type',
+76: CHOICE
+77: ATTRIBUTE "form:button-type",
+78: REF 'types',
+79: CHOICE
+80: VALUE 'submit',
+80: VALUE 'reset',
+80: VALUE 'push',
+80: VALUE 'url',
+77: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'image-data',
+76: CHOICE
+77: ATTRIBUTE "form:image-data",
+78: REF 'anyURI',
+79: DATA 'anyURI',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-tab-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:tab-index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:tab-stop",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'target-frame',
+76: CHOICE
+77: ATTRIBUTE "office:target-frame",
+78: REF 'targetFrameName',
+79: CHOICE
+80: VALUE '_self',
+80: VALUE '_blank',
+80: VALUE '_parent',
+80: VALUE '_top',
+80: REF 'string',
+81: DATA 'string',
+77: EPSILON
+75: REF 'target-location',
+76: CHOICE
+77: ATTRIBUTE "xlink:href",
+78: REF 'anyURI',
+79: DATA 'anyURI',
+77: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+75: REF 'common-value-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:value",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:radio",
+72: SEQUENCE
+73: REF 'form-radio-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'current-selected',
+76: CHOICE
+77: ATTRIBUTE "form:current-selected",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'label',
+76: CHOICE
+77: ATTRIBUTE "form:label",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'selected',
+76: CHOICE
+77: ATTRIBUTE "form:selected",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-tab-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:tab-index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:tab-stop",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+75: REF 'common-value-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:value",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-data-field-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:data-field",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-form-visual-effect-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:visual-effect",
+78: CHOICE
+79: VALUE 'flat',
+79: VALUE '3d',
+77: EPSILON
+75: REF 'common-form-relative-image-position-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:image-position",
+78: VALUE 'center',
+77: EPSILON
+77: SEQUENCE
+78: ATTRIBUTE "form:image-position",
+79: CHOICE
+80: VALUE 'start',
+80: VALUE 'end',
+80: VALUE 'top',
+80: VALUE 'bottom',
+78: CHOICE
+79: ATTRIBUTE "form:image-align",
+80: CHOICE
+81: VALUE 'start',
+81: VALUE 'center',
+81: VALUE 'end',
+79: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:frame",
+72: SEQUENCE
+73: REF 'form-frame-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'for',
+76: CHOICE
+77: ATTRIBUTE "form:for",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'label',
+76: CHOICE
+77: ATTRIBUTE "form:label",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:image-frame",
+72: SEQUENCE
+73: REF 'form-image-frame-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'image-data',
+76: CHOICE
+77: ATTRIBUTE "form:image-data",
+78: REF 'anyURI',
+79: DATA 'anyURI',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-readonly-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:readonly",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+75: REF 'common-data-field-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:data-field",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:hidden",
+72: SEQUENCE
+73: REF 'form-hidden-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-value-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:value",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:grid",
+72: SEQUENCE
+73: REF 'form-grid-attlist',
+74: SEQUENCE
+75: REF 'form-control-attlist',
+76: SEQUENCE
+77: REF 'common-form-control-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "form:name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "form:control-implementation",
+81: REF 'namespacedToken',
+82: DATA 'string',
+80: EPSILON
+77: REF 'common-control-id-attlist',
+78: ATTRIBUTE "form:id",
+79: REF 'ID',
+80: DATA 'ID',
+77: REF 'xforms-bind-attlist',
+78: CHOICE
+79: ATTRIBUTE "xforms:bind",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: REF 'common-disabled-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:disabled",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-printable-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:printable",
+78: REF 'boolean',
+79: CHOICE
+80: VALUE 'true',
+80: VALUE 'false',
+77: EPSILON
+75: REF 'common-tab-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "form:tab-index",
+79: REF 'nonNegativeInteger',
+80: DATA 'nonNegativeInteger',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "form:tab-stop",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+75: REF 'common-title-attlist',
+76: CHOICE
+77: ATTRIBUTE "form:title",
+78: STRING
+77: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+73: CHOICE
+74: ONEOREMORE
+75: REF 'form-column',
+76: ELEMENT "form:column",
+77: SEQUENCE
+78: REF 'form-column-attlist',
+79: SEQUENCE
+80: REF 'common-form-control-attlist',
+81: INTERLEAVE
+82: CHOICE
+83: ATTRIBUTE "form:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "form:control-implementation",
+84: REF 'namespacedToken',
+85: DATA 'string',
+83: EPSILON
+80: REF 'label',
+81: CHOICE
+82: ATTRIBUTE "form:label",
+83: REF 'string',
+84: DATA 'string',
+82: EPSILON
+80: REF 'text-style-name',
+81: CHOICE
+82: ATTRIBUTE "form:text-style-name",
+83: REF 'styleNameRef',
+84: CHOICE
+85: DATA 'NCName',
+85: EPSILON
+82: EPSILON
+78: ONEOREMORE
+79: REF 'column-controls',
+80: CHOICE
+74: EPSILON
+71: ELEMENT "form:value-range",
+72: SEQUENCE
+73: REF 'form-value-range-attlist',
+74: INTERLEAVE
+75: SEQUENCE
+76: REF 'form-control-attlist',
+77: SEQUENCE
+78: REF 'common-form-control-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "form:name",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "form:control-implementation",
+82: REF 'namespacedToken',
+83: DATA 'string',
+81: EPSILON
+78: REF 'common-control-id-attlist',
+79: ATTRIBUTE "form:id",
+80: REF 'ID',
+81: DATA 'ID',
+78: REF 'xforms-bind-attlist',
+79: CHOICE
+80: ATTRIBUTE "xforms:bind",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+76: REF 'common-disabled-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:disabled",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'common-printable-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:printable",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+76: REF 'common-tab-attlist',
+77: INTERLEAVE
+78: CHOICE
+79: ATTRIBUTE "form:tab-index",
+80: REF 'nonNegativeInteger',
+81: DATA 'nonNegativeInteger',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "form:tab-stop",
+80: REF 'boolean',
+81: CHOICE
+82: VALUE 'true',
+82: VALUE 'false',
+79: EPSILON
+76: REF 'common-title-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:title",
+79: STRING
+78: EPSILON
+76: REF 'common-value-attlist',
+77: CHOICE
+78: ATTRIBUTE "form:value",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:max-value",
+77: REF 'string',
+78: DATA 'string',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:min-value",
+77: REF 'string',
+78: DATA 'string',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:step-size",
+77: REF 'positiveInteger',
+78: DATA 'positiveInteger',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:page-step-size",
+77: REF 'positiveInteger',
+78: DATA 'positiveInteger',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:delay-for-repeat",
+77: REF 'duration',
+78: DATA 'duration',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "form:orientation",
+77: CHOICE
+78: VALUE 'horizontal',
+78: VALUE 'vertical',
+76: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+71: ELEMENT "form:generic-control",
+72: SEQUENCE
+73: REF 'form-generic-control-attlist',
+74: REF 'form-control-attlist',
+75: SEQUENCE
+76: REF 'common-form-control-attlist',
+77: INTERLEAVE
+78: CHOICE
+79: ATTRIBUTE "form:name",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "form:control-implementation",
+80: REF 'namespacedToken',
+81: DATA 'string',
+79: EPSILON
+76: REF 'common-control-id-attlist',
+77: ATTRIBUTE "form:id",
+78: REF 'ID',
+79: DATA 'ID',
+76: REF 'xforms-bind-attlist',
+77: CHOICE
+78: ATTRIBUTE "xforms:bind",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+73: REF 'common-form-control-content',
+74: SEQUENCE
+75: CHOICE
+76: REF 'form-properties',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+69: REF 'form-form',
+67: EPSILON
+66: CHOICE
+67: REF 'form-connection-resource',
+68: ELEMENT "form:connection-resource",
+69: ATTRIBUTE "xlink:href",
+70: REF 'anyURI',
+71: DATA 'anyURI',
+67: EPSILON
+63: REF 'xforms-model',
+64: ELEMENT "xforms:model",
+65: REF 'anyAttListOrElements',
+66: SEQUENCE
+67: CHOICE
+68: ONEOREMORE
+69: ATTRIBUTE "*",
+70: STRING
+68: EPSILON
+67: REF 'anyElements',
+68: CHOICE
+69: ONEOREMORE
+69: EPSILON
+61: EPSILON
+58: EPSILON
+56: EPSILON
+55: CHOICE
+56: REF 'table-shapes',
+57: ELEMENT "table:shapes",
+58: ONEOREMORE
+59: REF 'shape',
+60: CHOICE
+61: REF 'draw-rect',
+62: ELEMENT "draw:rect",
+63: SEQUENCE
+64: REF 'draw-rect-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:corner-radius",
+67: REF 'nonNegativeLength',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+66: ELEMENT "svg:title",
+67: STRING
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+66: ELEMENT "svg:desc",
+67: STRING
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+67: ELEMENT "draw:glue-point",
+68: REF 'draw-glue-point-attlist',
+69: INTERLEAVE
+70: ATTRIBUTE "draw:id",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: SEQUENCE
+71: ATTRIBUTE "svg:x",
+72: CHOICE
+73: REF 'distance',
+74: REF 'length',
+75: DATA 'string',
+73: REF 'percent',
+74: DATA 'string',
+71: ATTRIBUTE "svg:y",
+72: CHOICE
+73: REF 'distance',
+74: REF 'length',
+75: DATA 'string',
+73: REF 'percent',
+74: DATA 'string',
+70: CHOICE
+71: ATTRIBUTE "draw:align",
+72: CHOICE
+73: VALUE 'top-left',
+73: VALUE 'top',
+73: VALUE 'top-right',
+73: VALUE 'left',
+73: VALUE 'center',
+73: VALUE 'right',
+73: VALUE 'bottom-left',
+73: VALUE 'bottom-right',
+71: EPSILON
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-line',
+62: ELEMENT "draw:line",
+63: SEQUENCE
+64: REF 'draw-line-attlist',
+65: INTERLEAVE
+66: SEQUENCE
+67: ATTRIBUTE "svg:x1",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: ATTRIBUTE "svg:y1",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+66: SEQUENCE
+67: ATTRIBUTE "svg:x2",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: ATTRIBUTE "svg:y2",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-polyline',
+62: ELEMENT "draw:polyline",
+63: SEQUENCE
+64: REF 'common-draw-points-attlist',
+65: ATTRIBUTE "draw:points",
+66: REF 'points',
+67: DATA 'string',
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-viewbox-attlist',
+65: ATTRIBUTE "svg:viewBox",
+66: LIST
+67: SEQUENCE
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-polygon',
+62: ELEMENT "draw:polygon",
+63: SEQUENCE
+64: REF 'common-draw-points-attlist',
+65: ATTRIBUTE "draw:points",
+66: REF 'points',
+67: DATA 'string',
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-viewbox-attlist',
+65: ATTRIBUTE "svg:viewBox",
+66: LIST
+67: SEQUENCE
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-regular-polygon',
+62: ELEMENT "draw:regular-polygon",
+63: SEQUENCE
+64: REF 'draw-regular-polygon-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: ATTRIBUTE "draw:concave",
+68: VALUE 'false',
+67: SEQUENCE
+68: ATTRIBUTE "draw:concave",
+69: VALUE 'true',
+68: REF 'draw-regular-polygon-sharpness-attlist',
+69: ATTRIBUTE "draw:sharpness",
+70: REF 'percent',
+71: DATA 'string',
+66: ATTRIBUTE "draw:corners",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-path',
+62: ELEMENT "draw:path",
+63: SEQUENCE
+64: REF 'common-draw-path-data-attlist',
+65: ATTRIBUTE "svg:d",
+66: REF 'pathData',
+67: DATA 'string',
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-viewbox-attlist',
+65: ATTRIBUTE "svg:viewBox",
+66: LIST
+67: SEQUENCE
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+68: REF 'integer',
+69: DATA 'integer',
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-circle',
+62: ELEMENT "draw:circle",
+63: SEQUENCE
+64: REF 'draw-circle-attlist',
+65: CHOICE
+66: ATTRIBUTE "svg:r",
+67: REF 'length',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-draw-circle-ellipse-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: SEQUENCE
+68: ATTRIBUTE "svg:cx",
+69: REF 'coordinate',
+70: REF 'length',
+71: DATA 'string',
+68: ATTRIBUTE "svg:cy",
+69: REF 'coordinate',
+70: REF 'length',
+71: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "draw:kind",
+68: CHOICE
+69: VALUE 'full',
+69: VALUE 'section',
+69: VALUE 'cut',
+69: VALUE 'arc',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "draw:start-angle",
+68: REF 'double',
+69: DATA 'double',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "draw:end-angle",
+68: REF 'double',
+69: DATA 'double',
+67: EPSILON
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-ellipse',
+62: ELEMENT "draw:ellipse",
+63: SEQUENCE
+64: REF 'common-draw-circle-ellipse-attlist',
+65: INTERLEAVE
+66: CHOICE
+67: SEQUENCE
+68: ATTRIBUTE "svg:cx",
+69: REF 'coordinate',
+70: REF 'length',
+71: DATA 'string',
+68: ATTRIBUTE "svg:cy",
+69: REF 'coordinate',
+70: REF 'length',
+71: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "draw:kind",
+68: CHOICE
+69: VALUE 'full',
+69: VALUE 'section',
+69: VALUE 'cut',
+69: VALUE 'arc',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "draw:start-angle",
+68: REF 'double',
+69: DATA 'double',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "draw:end-angle",
+68: REF 'double',
+69: DATA 'double',
+67: EPSILON
+64: REF 'draw-ellipse-attlist',
+65: CHOICE
+66: SEQUENCE
+67: ATTRIBUTE "svg:rx",
+68: REF 'length',
+69: DATA 'string',
+67: ATTRIBUTE "svg:ry",
+68: REF 'length',
+69: DATA 'string',
+66: EPSILON
+64: REF 'common-draw-position-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:x",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:y",
+68: REF 'coordinate',
+69: REF 'length',
+70: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-size-attlist',
+65: SEQUENCE
+66: CHOICE
+67: ATTRIBUTE "svg:width",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "svg:height",
+68: REF 'length',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-draw-shape-with-text-and-styles-attlist',
+65: SEQUENCE
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:id",
+71: REF 'ID',
+72: DATA 'ID',
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "table:end-cell-address",
+73: REF 'cellAddress',
+74: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-x",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "table:end-y",
+73: REF 'coordinate',
+74: REF 'length',
+75: DATA 'string',
+72: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-text-style-name-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:text-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: REF 'draw-text',
+65: CHOICE
+66: ONEOREMORE
+67: CHOICE
+68: REF 'text-p',
+68: REF 'text-list',
+66: EPSILON
+61: REF 'draw-g',
+62: ELEMENT "draw:g",
+63: SEQUENCE
+64: REF 'draw-g-attlist',
+65: CHOICE
+66: ATTRIBUTE "svg:y",
+67: REF 'coordinate',
+68: REF 'length',
+69: DATA 'string',
+66: EPSILON
+64: REF 'common-draw-z-index-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:z-index",
+67: REF 'nonNegativeInteger',
+68: DATA 'nonNegativeInteger',
+66: EPSILON
+64: REF 'common-draw-name-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:name",
+67: REF 'string',
+68: DATA 'string',
+66: EPSILON
+64: REF 'common-draw-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:id",
+67: REF 'ID',
+68: DATA 'ID',
+66: EPSILON
+64: REF 'common-draw-style-name-attlist',
+65: CHOICE
+66: SEQUENCE
+67: CHOICE
+68: ATTRIBUTE "draw:style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "draw:class-names",
+69: REF 'styleNameRefs',
+70: LIST
+71: CHOICE
+72: ONEOREMORE
+73: DATA 'NCName',
+72: EPSILON
+68: EPSILON
+66: SEQUENCE
+67: CHOICE
+68: ATTRIBUTE "presentation:style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "presentation:class-names",
+69: REF 'styleNameRefs',
+70: LIST
+71: CHOICE
+72: ONEOREMORE
+73: DATA 'NCName',
+72: EPSILON
+68: EPSILON
+64: REF 'common-text-spreadsheet-shape-attlist',
+65: INTERLEAVE
+66: SEQUENCE
+67: CHOICE
+68: ATTRIBUTE "table:end-cell-address",
+69: REF 'cellAddress',
+70: DATA 'string',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "table:end-x",
+69: REF 'coordinate',
+70: REF 'length',
+71: DATA 'string',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "table:end-y",
+69: REF 'coordinate',
+70: REF 'length',
+71: DATA 'string',
+68: EPSILON
+66: CHOICE
+67: ATTRIBUTE "table:table-background",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+66: REF 'common-text-anchor-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "text:anchor-type",
+70: CHOICE
+71: VALUE 'page',
+71: VALUE 'frame',
+71: VALUE 'paragraph',
+71: VALUE 'char',
+71: VALUE 'as-char',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "text:anchor-page-number",
+70: REF 'positiveInteger',
+71: DATA 'positiveInteger',
+69: EPSILON
+64: REF 'common-draw-caption-id-attlist',
+65: CHOICE
+66: ATTRIBUTE "draw:caption-id",
+67: REF 'IDREF',
+68: DATA 'IDREF',
+66: EPSILON
+64: CHOICE
+65: REF 'svg-title',
+65: EPSILON
+64: CHOICE
+65: REF 'svg-desc',
+65: EPSILON
+64: CHOICE
+65: REF 'office-event-listeners',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'draw-glue-point',
+65: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'shape',
+67: CHOICE
+68: REF 'draw-rect',
+68: REF 'draw-line',
+68: REF 'draw-polyline',
+68: REF 'draw-polygon',
+68: REF 'draw-regular-polygon',
+68: REF 'draw-path',
+68: REF 'draw-circle',
+68: REF 'draw-ellipse',
+68: REF 'draw-g',
+68: REF 'draw-page-thumbnail',
+69: ELEMENT "draw:page-thumbnail",
+70: SEQUENCE
+71: REF 'draw-page-thumbnail-attlist',
+72: CHOICE
+73: ATTRIBUTE "draw:page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+71: REF 'common-draw-position-attlist',
+72: SEQUENCE
+73: CHOICE
+74: ATTRIBUTE "svg:x",
+75: REF 'coordinate',
+76: REF 'length',
+77: DATA 'string',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "svg:y",
+75: REF 'coordinate',
+76: REF 'length',
+77: DATA 'string',
+74: EPSILON
+71: REF 'common-draw-size-attlist',
+72: SEQUENCE
+73: CHOICE
+74: ATTRIBUTE "svg:width",
+75: REF 'length',
+76: DATA 'string',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "svg:height",
+75: REF 'length',
+76: DATA 'string',
+74: EPSILON
+71: REF 'presentation-shape-attlist',
+72: INTERLEAVE
+73: CHOICE
+74: ATTRIBUTE "presentation:class",
+75: REF 'presentation-classes',
+76: CHOICE
+77: VALUE 'title',
+77: VALUE 'outline',
+77: VALUE 'subtitle',
+77: VALUE 'text',
+77: VALUE 'graphic',
+77: VALUE 'object',
+77: VALUE 'chart',
+77: VALUE 'table',
+77: VALUE 'orgchart',
+77: VALUE 'page',
+77: VALUE 'notes',
+77: VALUE 'handout',
+77: VALUE 'header',
+77: VALUE 'footer',
+77: VALUE 'date-time',
+77: VALUE 'page-number',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "presentation:placeholder",
+75: REF 'boolean',
+76: CHOICE
+77: VALUE 'true',
+77: VALUE 'false',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "presentation:user-transformed",
+75: REF 'boolean',
+76: CHOICE
+77: VALUE 'true',
+77: VALUE 'false',
+74: EPSILON
+71: REF 'common-draw-shape-with-styles-attlist',
+72: SEQUENCE
+73: REF 'common-draw-z-index-attlist',
+74: CHOICE
+75: ATTRIBUTE "draw:z-index",
+76: REF 'nonNegativeInteger',
+77: DATA 'nonNegativeInteger',
+75: EPSILON
+73: REF 'common-draw-id-attlist',
+74: CHOICE
+75: ATTRIBUTE "draw:id",
+76: REF 'ID',
+77: DATA 'ID',
+75: EPSILON
+73: REF 'common-draw-layer-name-attlist',
+74: CHOICE
+75: ATTRIBUTE "draw:layer",
+76: DATA 'string',
+75: EPSILON
+73: REF 'common-draw-style-name-attlist',
+74: CHOICE
+75: SEQUENCE
+76: CHOICE
+77: ATTRIBUTE "draw:style-name",
+78: REF 'styleNameRef',
+79: CHOICE
+80: DATA 'NCName',
+80: EPSILON
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "draw:class-names",
+78: REF 'styleNameRefs',
+79: LIST
+80: CHOICE
+81: ONEOREMORE
+82: DATA 'NCName',
+81: EPSILON
+77: EPSILON
+75: SEQUENCE
+76: CHOICE
+77: ATTRIBUTE "presentation:style-name",
+78: REF 'styleNameRef',
+79: CHOICE
+80: DATA 'NCName',
+80: EPSILON
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "presentation:class-names",
+78: REF 'styleNameRefs',
+79: LIST
+80: CHOICE
+81: ONEOREMORE
+82: DATA 'NCName',
+81: EPSILON
+77: EPSILON
+73: REF 'common-draw-transform-attlist',
+74: CHOICE
+75: ATTRIBUTE "draw:transform",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+73: REF 'common-draw-name-attlist',
+74: CHOICE
+75: ATTRIBUTE "draw:name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+73: REF 'common-text-spreadsheet-shape-attlist',
+74: INTERLEAVE
+75: SEQUENCE
+76: CHOICE
+77: ATTRIBUTE "table:end-cell-address",
+78: REF 'cellAddress',
+79: DATA 'string',
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "table:end-x",
+78: REF 'coordinate',
+79: REF 'length',
+80: DATA 'string',
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "table:end-y",
+78: REF 'coordinate',
+79: REF 'length',
+80: DATA 'string',
+77: EPSILON
+75: CHOICE
+76: ATTRIBUTE "table:table-background",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+76: EPSILON
+75: REF 'common-text-anchor-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: ATTRIBUTE "text:anchor-type",
+79: CHOICE
+80: VALUE 'page',
+80: VALUE 'frame',
+80: VALUE 'paragraph',
+80: VALUE 'char',
+80: VALUE 'as-char',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "text:anchor-page-number",
+79: REF 'positiveInteger',
+80: DATA 'positiveInteger',
+78: EPSILON
+71: REF 'common-draw-caption-id-attlist',
+72: CHOICE
+73: ATTRIBUTE "draw:caption-id",
+74: REF 'IDREF',
+75: DATA 'IDREF',
+73: EPSILON
+71: CHOICE
+72: REF 'svg-title',
+72: EPSILON
+71: CHOICE
+72: REF 'svg-desc',
+72: EPSILON
+68: REF 'draw-frame',
+69: ELEMENT "draw:frame",
+70: SEQUENCE
+71: REF 'common-draw-shape-with-text-and-styles-attlist',
+72: SEQUENCE
+73: REF 'common-draw-shape-with-styles-attlist',
+74: SEQUENCE
+75: REF 'common-draw-z-index-attlist',
+76: CHOICE
+77: ATTRIBUTE "draw:z-index",
+78: REF 'nonNegativeInteger',
+79: DATA 'nonNegativeInteger',
+77: EPSILON
+75: REF 'common-draw-id-attlist',
+76: CHOICE
+77: ATTRIBUTE "draw:id",
+78: REF 'ID',
+79: DATA 'ID',
+77: EPSILON
+75: REF 'common-draw-layer-name-attlist',
+76: CHOICE
+77: ATTRIBUTE "draw:layer",
+78: DATA 'string',
+77: EPSILON
+75: REF 'common-draw-style-name-attlist',
+76: CHOICE
+77: SEQUENCE
+78: CHOICE
+79: ATTRIBUTE "draw:style-name",
+80: REF 'styleNameRef',
+81: CHOICE
+82: DATA 'NCName',
+82: EPSILON
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "draw:class-names",
+80: REF 'styleNameRefs',
+81: LIST
+82: CHOICE
+83: ONEOREMORE
+84: DATA 'NCName',
+83: EPSILON
+79: EPSILON
+77: SEQUENCE
+78: CHOICE
+79: ATTRIBUTE "presentation:style-name",
+80: REF 'styleNameRef',
+81: CHOICE
+82: DATA 'NCName',
+82: EPSILON
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "presentation:class-names",
+80: REF 'styleNameRefs',
+81: LIST
+82: CHOICE
+83: ONEOREMORE
+84: DATA 'NCName',
+83: EPSILON
+79: EPSILON
+75: REF 'common-draw-transform-attlist',
+76: CHOICE
+77: ATTRIBUTE "draw:transform",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-draw-name-attlist',
+76: CHOICE
+77: ATTRIBUTE "draw:name",
+78: REF 'string',
+79: DATA 'string',
+77: EPSILON
+75: REF 'common-text-spreadsheet-shape-attlist',
+76: INTERLEAVE
+77: SEQUENCE
+78: CHOICE
+79: ATTRIBUTE "table:end-cell-address",
+80: REF 'cellAddress',
+81: DATA 'string',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "table:end-x",
+80: REF 'coordinate',
+81: REF 'length',
+82: DATA 'string',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "table:end-y",
+80: REF 'coordinate',
+81: REF 'length',
+82: DATA 'string',
+79: EPSILON
+77: CHOICE
+78: ATTRIBUTE "table:table-background",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+78: EPSILON
+77: REF 'common-text-anchor-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "text:anchor-type",
+81: CHOICE
+82: VALUE 'page',
+82: VALUE 'frame',
+82: VALUE 'paragraph',
+82: VALUE 'char',
+82: VALUE 'as-char',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "text:anchor-page-number",
+81: REF 'positiveInteger',
+82: DATA 'positiveInteger',
+80: EPSILON
+73: REF 'common-draw-text-style-name-attlist',
+74: CHOICE
+75: ATTRIBUTE "draw:text-style-name",
+76: REF 'styleNameRef',
+77: CHOICE
+78: DATA 'NCName',
+78: EPSILON
+75: EPSILON
+71: REF 'common-draw-position-attlist',
+72: SEQUENCE
+73: CHOICE
+74: ATTRIBUTE "svg:x",
+75: REF 'coordinate',
+76: REF 'length',
+77: DATA 'string',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "svg:y",
+75: REF 'coordinate',
+76: REF 'length',
+77: DATA 'string',
+74: EPSILON
+71: REF 'common-draw-rel-size-attlist',
+72: SEQUENCE
+73: REF 'common-draw-size-attlist',
+74: SEQUENCE
+75: CHOICE
+76: ATTRIBUTE "svg:width",
+77: REF 'length',
+78: DATA 'string',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "svg:height",
+77: REF 'length',
+78: DATA 'string',
+76: EPSILON
+73: CHOICE
+74: ATTRIBUTE "style:rel-width",
+75: CHOICE
+76: REF 'percent',
+77: DATA 'string',
+76: VALUE 'scale',
+76: VALUE 'scale-min',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "style:rel-height",
+75: CHOICE
+76: REF 'percent',
+77: DATA 'string',
+76: VALUE 'scale',
+76: VALUE 'scale-min',
+74: EPSILON
+71: REF 'common-draw-caption-id-attlist',
+72: CHOICE
+73: ATTRIBUTE "draw:caption-id",
+74: REF 'IDREF',
+75: DATA 'IDREF',
+73: EPSILON
+71: REF 'presentation-shape-attlist',
+72: INTERLEAVE
+73: CHOICE
+74: ATTRIBUTE "presentation:class",
+75: REF 'presentation-classes',
+76: CHOICE
+77: VALUE 'title',
+77: VALUE 'outline',
+77: VALUE 'subtitle',
+77: VALUE 'text',
+77: VALUE 'graphic',
+77: VALUE 'object',
+77: VALUE 'chart',
+77: VALUE 'table',
+77: VALUE 'orgchart',
+77: VALUE 'page',
+77: VALUE 'notes',
+77: VALUE 'handout',
+77: VALUE 'header',
+77: VALUE 'footer',
+77: VALUE 'date-time',
+77: VALUE 'page-number',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "presentation:placeholder",
+75: REF 'boolean',
+76: CHOICE
+77: VALUE 'true',
+77: VALUE 'false',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "presentation:user-transformed",
+75: REF 'boolean',
+76: CHOICE
+77: VALUE 'true',
+77: VALUE 'false',
+74: EPSILON
+71: REF 'draw-frame-attlist',
+72: CHOICE
+73: ATTRIBUTE "draw:copy-of",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+71: CHOICE
+72: ONEOREMORE
+73: CHOICE
+74: REF 'draw-text-box',
+75: ELEMENT "draw:text-box",
+76: SEQUENCE
+77: REF 'draw-text-box-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "draw:chain-next-name",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "draw:corner-radius",
+81: REF 'nonNegativeLength',
+82: DATA 'string',
+80: EPSILON
+79: SEQUENCE
+80: CHOICE
+81: ATTRIBUTE "fo:min-height",
+82: CHOICE
+83: REF 'length',
+84: DATA 'string',
+83: REF 'percent',
+84: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "fo:min-width",
+82: CHOICE
+83: REF 'length',
+84: DATA 'string',
+83: REF 'percent',
+84: DATA 'string',
+81: EPSILON
+79: SEQUENCE
+80: CHOICE
+81: ATTRIBUTE "fo:max-height",
+82: CHOICE
+83: REF 'length',
+84: DATA 'string',
+83: REF 'percent',
+84: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "fo:max-width",
+82: CHOICE
+83: REF 'length',
+84: DATA 'string',
+83: REF 'percent',
+84: DATA 'string',
+81: EPSILON
+79: CHOICE
+80: REF 'text-id',
+81: ATTRIBUTE "text:id",
+82: REF 'string',
+83: DATA 'string',
+80: EPSILON
+77: CHOICE
+78: ONEOREMORE
+79: REF 'text-content',
+80: CHOICE
+81: REF 'text-h',
+81: REF 'text-p',
+81: REF 'text-list',
+81: REF 'text-numbered-paragraph',
+81: REF 'table-table',
+81: REF 'draw-a',
+82: ELEMENT "draw:a",
+83: SEQUENCE
+84: REF 'draw-a-attlist',
+85: INTERLEAVE
+86: SEQUENCE
+87: ATTRIBUTE "xlink:href",
+88: REF 'anyURI',
+89: DATA 'anyURI',
+87: CHOICE
+88: ATTRIBUTE "xlink:type",
+89: VALUE 'simple',
+88: EPSILON
+87: CHOICE
+88: ATTRIBUTE "xlink:actuate",
+89: VALUE 'onRequest',
+88: EPSILON
+86: SEQUENCE
+87: CHOICE
+88: ATTRIBUTE "office:target-frame-name",
+89: REF 'targetFrameName',
+90: CHOICE
+91: VALUE '_self',
+91: VALUE '_blank',
+91: VALUE '_parent',
+91: VALUE '_top',
+91: REF 'string',
+92: DATA 'string',
+88: EPSILON
+87: CHOICE
+88: ATTRIBUTE "xlink:show",
+89: CHOICE
+90: VALUE 'new',
+90: VALUE 'replace',
+88: EPSILON
+86: CHOICE
+87: ATTRIBUTE "office:name",
+88: REF 'string',
+89: DATA 'string',
+87: EPSILON
+86: CHOICE
+87: ATTRIBUTE "office:title",
+88: REF 'string',
+89: DATA 'string',
+87: EPSILON
+86: CHOICE
+87: ATTRIBUTE "office:server-map",
+88: REF 'boolean',
+89: CHOICE
+90: VALUE 'true',
+90: VALUE 'false',
+87: EPSILON
+84: REF 'draw-frame',
+81: REF 'text-section',
+82: ELEMENT "text:section",
+83: SEQUENCE
+84: REF 'text-section-attr',
+85: INTERLEAVE
+86: REF 'sectionAttr',
+87: INTERLEAVE
+88: CHOICE
+89: ATTRIBUTE "text:style-name",
+90: REF 'styleNameRef',
+91: CHOICE
+92: DATA 'NCName',
+92: EPSILON
+89: EPSILON
+88: ATTRIBUTE "text:name",
+89: REF 'string',
+90: DATA 'string',
+88: CHOICE
+89: ATTRIBUTE "text:protected",
+90: REF 'boolean',
+91: CHOICE
+92: VALUE 'true',
+92: VALUE 'false',
+89: EPSILON
+88: CHOICE
+89: ATTRIBUTE "text:protection-key",
+90: REF 'string',
+91: DATA 'string',
+89: EPSILON
+86: CHOICE
+87: ATTRIBUTE "text:display",
+88: CHOICE
+89: VALUE 'true',
+89: VALUE 'none',
+87: SEQUENCE
+88: ATTRIBUTE "text:display",
+89: VALUE 'condition',
+88: ATTRIBUTE "text:condition",
+89: REF 'string',
+90: DATA 'string',
+87: EPSILON
+84: CHOICE
+85: REF 'text-section-source',
+86: ELEMENT "text:section-source",
+87: REF 'text-section-source-attr',
+88: INTERLEAVE
+89: CHOICE
+90: SEQUENCE
+91: ATTRIBUTE "xlink:href",
+92: REF 'anyURI',
+93: DATA 'anyURI',
+91: CHOICE
+92: ATTRIBUTE "xlink:type",
+93: VALUE 'simple',
+92: EPSILON
+91: CHOICE
+92: ATTRIBUTE "xlink:show",
+93: VALUE 'embed',
+92: EPSILON
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "text:section-name",
+91: REF 'string',
+92: DATA 'string',
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "text:filter-name",
+91: REF 'string',
+92: DATA 'string',
+90: EPSILON
+85: REF 'text-section-source-dde',
+86: REF 'office-dde-source',
+85: EPSILON
+84: CHOICE
+85: ONEOREMORE
+86: REF 'text-content',
+87: CHOICE
+88: REF 'text-h',
+88: REF 'text-p',
+88: REF 'text-list',
+88: REF 'text-numbered-paragraph',
+88: REF 'table-table',
+88: REF 'draw-a',
+88: REF 'text-section',
+88: REF 'text-soft-page-break',
+88: REF 'text-table-of-content',
+89: ELEMENT "text:table-of-content",
+90: SEQUENCE
+91: REF 'sectionAttr',
+92: INTERLEAVE
+93: CHOICE
+94: ATTRIBUTE "text:style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+93: ATTRIBUTE "text:name",
+94: REF 'string',
+95: DATA 'string',
+93: CHOICE
+94: ATTRIBUTE "text:protected",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: CHOICE
+94: ATTRIBUTE "text:protection-key",
+95: REF 'string',
+96: DATA 'string',
+94: EPSILON
+91: REF 'text-table-of-content-source',
+92: ELEMENT "text:table-of-content-source",
+93: SEQUENCE
+94: REF 'text-table-of-content-source-attlist',
+95: INTERLEAVE
+96: CHOICE
+97: ATTRIBUTE "text:outline-level",
+98: REF 'positiveInteger',
+99: DATA 'positiveInteger',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "text:use-outline-level",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "text:use-index-marks",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "text:use-index-source-styles",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "text:index-scope",
+98: CHOICE
+99: VALUE 'document',
+99: VALUE 'chapter',
+97: EPSILON
+96: CHOICE
+97: ATTRIBUTE "text:relative-tab-stop-position",
+98: REF 'boolean',
+99: CHOICE
+100: VALUE 'true',
+100: VALUE 'false',
+97: EPSILON
+94: CHOICE
+95: REF 'text-index-title-template',
+96: ELEMENT "text:index-title-template",
+97: SEQUENCE
+98: CHOICE
+99: ATTRIBUTE "text:style-name",
+100: REF 'styleNameRef',
+101: CHOICE
+102: DATA 'NCName',
+102: EPSILON
+99: EPSILON
+98: STRING
+95: EPSILON
+94: CHOICE
+95: ONEOREMORE
+96: REF 'text-table-of-content-entry-template',
+97: ELEMENT "text:table-of-content-entry-template",
+98: SEQUENCE
+99: REF 'text-table-of-content-entry-template-attlist',
+100: INTERLEAVE
+101: ATTRIBUTE "text:outline-level",
+102: REF 'positiveInteger',
+103: DATA 'positiveInteger',
+101: ATTRIBUTE "text:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+99: CHOICE
+100: ONEOREMORE
+101: REF 'text-table-of-content-children',
+102: CHOICE
+103: REF 'text-index-entry-chapter',
+104: ELEMENT "text:index-entry-chapter",
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "text:style-name",
+108: REF 'styleNameRef',
+109: CHOICE
+110: DATA 'NCName',
+110: EPSILON
+107: EPSILON
+106: REF 'text-index-entry-chapter-attrs',
+107: CHOICE
+108: ATTRIBUTE "text:display",
+109: CHOICE
+110: VALUE 'name',
+110: VALUE 'number',
+110: VALUE 'number-and-name',
+108: EPSILON
+103: REF 'text-index-entry-page-number',
+104: ELEMENT "text:index-entry-page-number",
+105: CHOICE
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+106: EPSILON
+103: REF 'text-index-entry-text',
+104: ELEMENT "text:index-entry-text",
+105: CHOICE
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+106: EPSILON
+103: REF 'text-index-entry-span',
+104: ELEMENT "text:index-entry-span",
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "text:style-name",
+108: REF 'styleNameRef',
+109: CHOICE
+110: DATA 'NCName',
+110: EPSILON
+107: EPSILON
+106: STRING
+103: REF 'text-index-entry-tab-stop',
+104: ELEMENT "text:index-entry-tab-stop",
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "text:style-name",
+108: REF 'styleNameRef',
+109: CHOICE
+110: DATA 'NCName',
+110: EPSILON
+107: EPSILON
+106: REF 'text-index-entry-tab-stop-attrs',
+107: INTERLEAVE
+108: CHOICE
+109: ATTRIBUTE "style:leader-char",
+110: REF 'character',
+111: DATA 'string',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "style:type",
+110: VALUE 'right',
+109: SEQUENCE
+110: ATTRIBUTE "style:type",
+111: VALUE 'left',
+110: ATTRIBUTE "style:position",
+111: REF 'length',
+112: DATA 'string',
+103: REF 'text-index-entry-link-start',
+104: ELEMENT "text:index-entry-link-start",
+105: CHOICE
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+106: EPSILON
+103: REF 'text-index-entry-link-end',
+104: ELEMENT "text:index-entry-link-end",
+105: CHOICE
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+106: EPSILON
+100: EPSILON
+95: EPSILON
+94: CHOICE
+95: ONEOREMORE
+96: REF 'text-index-source-styles',
+97: ELEMENT "text:index-source-styles",
+98: SEQUENCE
+99: ATTRIBUTE "text:outline-level",
+100: REF 'positiveInteger',
+101: DATA 'positiveInteger',
+99: CHOICE
+100: ONEOREMORE
+101: REF 'text-index-source-style',
+102: ELEMENT "text:index-source-style",
+103: ATTRIBUTE "text:style-name",
+104: REF 'styleName',
+105: DATA 'NCName',
+100: EPSILON
+95: EPSILON
+91: REF 'text-index-body',
+92: ELEMENT "text:index-body",
+93: CHOICE
+94: ONEOREMORE
+95: REF 'index-content-main',
+96: CHOICE
+97: REF 'text-content',
+98: CHOICE
+99: REF 'text-h',
+99: REF 'text-p',
+99: REF 'text-list',
+99: REF 'text-numbered-paragraph',
+99: REF 'table-table',
+99: REF 'draw-a',
+99: REF 'text-section',
+99: REF 'text-soft-page-break',
+99: REF 'text-table-of-content',
+99: REF 'text-illustration-index',
+100: ELEMENT "text:illustration-index",
+101: SEQUENCE
+102: REF 'sectionAttr',
+103: INTERLEAVE
+104: CHOICE
+105: ATTRIBUTE "text:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: ATTRIBUTE "text:name",
+105: REF 'string',
+106: DATA 'string',
+104: CHOICE
+105: ATTRIBUTE "text:protected",
+106: REF 'boolean',
+107: CHOICE
+108: VALUE 'true',
+108: VALUE 'false',
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "text:protection-key",
+106: REF 'string',
+107: DATA 'string',
+105: EPSILON
+102: REF 'text-illustration-index-source',
+103: ELEMENT "text:illustration-index-source",
+104: SEQUENCE
+105: REF 'text-illustration-index-source-attrs',
+106: INTERLEAVE
+107: REF 'text-index-scope-attr',
+108: CHOICE
+109: ATTRIBUTE "text:index-scope",
+110: CHOICE
+111: VALUE 'document',
+111: VALUE 'chapter',
+109: EPSILON
+107: REF 'text-relative-tab-stop-position-attr',
+108: CHOICE
+109: ATTRIBUTE "text:relative-tab-stop-position",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-caption",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:caption-sequence-name",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:caption-sequence-format",
+109: CHOICE
+110: VALUE 'text',
+110: VALUE 'category-and-value',
+110: VALUE 'caption',
+108: EPSILON
+105: CHOICE
+106: REF 'text-index-title-template',
+106: EPSILON
+105: CHOICE
+106: REF 'text-illustration-index-entry-template',
+107: ELEMENT "text:illustration-index-entry-template",
+108: REF 'text-illustration-index-entry-content',
+109: SEQUENCE
+110: REF 'text-illustration-index-entry-template-attrs',
+111: ATTRIBUTE "text:style-name",
+112: REF 'styleNameRef',
+113: CHOICE
+114: DATA 'NCName',
+114: EPSILON
+110: CHOICE
+111: ONEOREMORE
+112: CHOICE
+113: REF 'text-index-entry-page-number',
+113: REF 'text-index-entry-text',
+113: REF 'text-index-entry-span',
+113: REF 'text-index-entry-tab-stop',
+111: EPSILON
+106: EPSILON
+102: REF 'text-index-body',
+99: REF 'text-table-index',
+100: ELEMENT "text:table-index",
+101: SEQUENCE
+102: REF 'sectionAttr',
+103: INTERLEAVE
+104: CHOICE
+105: ATTRIBUTE "text:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: ATTRIBUTE "text:name",
+105: REF 'string',
+106: DATA 'string',
+104: CHOICE
+105: ATTRIBUTE "text:protected",
+106: REF 'boolean',
+107: CHOICE
+108: VALUE 'true',
+108: VALUE 'false',
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "text:protection-key",
+106: REF 'string',
+107: DATA 'string',
+105: EPSILON
+102: REF 'text-table-index-source',
+103: ELEMENT "text:table-index-source",
+104: SEQUENCE
+105: REF 'text-illustration-index-source-attrs',
+106: INTERLEAVE
+107: REF 'text-index-scope-attr',
+108: CHOICE
+109: ATTRIBUTE "text:index-scope",
+110: CHOICE
+111: VALUE 'document',
+111: VALUE 'chapter',
+109: EPSILON
+107: REF 'text-relative-tab-stop-position-attr',
+108: CHOICE
+109: ATTRIBUTE "text:relative-tab-stop-position",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-caption",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:caption-sequence-name",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:caption-sequence-format",
+109: CHOICE
+110: VALUE 'text',
+110: VALUE 'category-and-value',
+110: VALUE 'caption',
+108: EPSILON
+105: CHOICE
+106: REF 'text-index-title-template',
+106: EPSILON
+105: CHOICE
+106: REF 'text-table-index-entry-template',
+107: ELEMENT "text:table-index-entry-template",
+108: REF 'text-illustration-index-entry-content',
+109: SEQUENCE
+110: REF 'text-illustration-index-entry-template-attrs',
+111: ATTRIBUTE "text:style-name",
+112: REF 'styleNameRef',
+113: CHOICE
+114: DATA 'NCName',
+114: EPSILON
+110: CHOICE
+111: ONEOREMORE
+112: CHOICE
+113: REF 'text-index-entry-page-number',
+113: REF 'text-index-entry-text',
+113: REF 'text-index-entry-span',
+113: REF 'text-index-entry-tab-stop',
+111: EPSILON
+106: EPSILON
+102: REF 'text-index-body',
+99: REF 'text-object-index',
+100: ELEMENT "text:object-index",
+101: SEQUENCE
+102: REF 'sectionAttr',
+103: INTERLEAVE
+104: CHOICE
+105: ATTRIBUTE "text:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: ATTRIBUTE "text:name",
+105: REF 'string',
+106: DATA 'string',
+104: CHOICE
+105: ATTRIBUTE "text:protected",
+106: REF 'boolean',
+107: CHOICE
+108: VALUE 'true',
+108: VALUE 'false',
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "text:protection-key",
+106: REF 'string',
+107: DATA 'string',
+105: EPSILON
+102: REF 'text-object-index-source',
+103: ELEMENT "text:object-index-source",
+104: SEQUENCE
+105: REF 'text-object-index-source-attrs',
+106: INTERLEAVE
+107: REF 'text-index-scope-attr',
+108: CHOICE
+109: ATTRIBUTE "text:index-scope",
+110: CHOICE
+111: VALUE 'document',
+111: VALUE 'chapter',
+109: EPSILON
+107: REF 'text-relative-tab-stop-position-attr',
+108: CHOICE
+109: ATTRIBUTE "text:relative-tab-stop-position",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-spreadsheet-objects",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-math-objects",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-draw-objects",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-chart-objects",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-other-objects",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+105: CHOICE
+106: REF 'text-index-title-template',
+106: EPSILON
+105: CHOICE
+106: REF 'text-object-index-entry-template',
+107: ELEMENT "text:object-index-entry-template",
+108: REF 'text-illustration-index-entry-content',
+109: SEQUENCE
+110: REF 'text-illustration-index-entry-template-attrs',
+111: ATTRIBUTE "text:style-name",
+112: REF 'styleNameRef',
+113: CHOICE
+114: DATA 'NCName',
+114: EPSILON
+110: CHOICE
+111: ONEOREMORE
+112: CHOICE
+113: REF 'text-index-entry-page-number',
+113: REF 'text-index-entry-text',
+113: REF 'text-index-entry-span',
+113: REF 'text-index-entry-tab-stop',
+111: EPSILON
+106: EPSILON
+102: REF 'text-index-body',
+99: REF 'text-user-index',
+100: ELEMENT "text:user-index",
+101: SEQUENCE
+102: REF 'sectionAttr',
+103: INTERLEAVE
+104: CHOICE
+105: ATTRIBUTE "text:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: ATTRIBUTE "text:name",
+105: REF 'string',
+106: DATA 'string',
+104: CHOICE
+105: ATTRIBUTE "text:protected",
+106: REF 'boolean',
+107: CHOICE
+108: VALUE 'true',
+108: VALUE 'false',
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "text:protection-key",
+106: REF 'string',
+107: DATA 'string',
+105: EPSILON
+102: REF 'text-user-index-source',
+103: ELEMENT "text:user-index-source",
+104: SEQUENCE
+105: REF 'text-user-index-source-attr',
+106: INTERLEAVE
+107: SEQUENCE
+108: REF 'text-index-scope-attr',
+109: CHOICE
+110: ATTRIBUTE "text:index-scope",
+111: CHOICE
+112: VALUE 'document',
+112: VALUE 'chapter',
+110: EPSILON
+108: REF 'text-relative-tab-stop-position-attr',
+109: CHOICE
+110: ATTRIBUTE "text:relative-tab-stop-position",
+111: REF 'boolean',
+112: CHOICE
+113: VALUE 'true',
+113: VALUE 'false',
+110: EPSILON
+108: ATTRIBUTE "text:index-name",
+109: REF 'string',
+110: DATA 'string',
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "text:use-index-marks",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:use-graphics",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:use-tables",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:use-floating-frames",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:use-objects",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:copy-outline-levels",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+105: CHOICE
+106: REF 'text-index-title-template',
+106: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: REF 'text-user-index-entry-template',
+108: ELEMENT "text:user-index-entry-template",
+109: SEQUENCE
+110: REF 'text-user-index-entry-template-attrs',
+111: INTERLEAVE
+112: ATTRIBUTE "text:outline-level",
+113: REF 'positiveInteger',
+114: DATA 'positiveInteger',
+112: ATTRIBUTE "text:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+110: CHOICE
+111: ONEOREMORE
+112: CHOICE
+113: REF 'text-index-entry-chapter',
+113: REF 'text-index-entry-page-number',
+113: REF 'text-index-entry-text',
+113: REF 'text-index-entry-span',
+113: REF 'text-index-entry-tab-stop',
+111: EPSILON
+106: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: REF 'text-index-source-styles',
+106: EPSILON
+102: REF 'text-index-body',
+99: REF 'text-alphabetical-index',
+100: ELEMENT "text:alphabetical-index",
+101: SEQUENCE
+102: REF 'sectionAttr',
+103: INTERLEAVE
+104: CHOICE
+105: ATTRIBUTE "text:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: ATTRIBUTE "text:name",
+105: REF 'string',
+106: DATA 'string',
+104: CHOICE
+105: ATTRIBUTE "text:protected",
+106: REF 'boolean',
+107: CHOICE
+108: VALUE 'true',
+108: VALUE 'false',
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "text:protection-key",
+106: REF 'string',
+107: DATA 'string',
+105: EPSILON
+102: REF 'text-alphabetical-index-source',
+103: ELEMENT "text:alphabetical-index-source",
+104: SEQUENCE
+105: REF 'text-alphabetical-index-source-attrs',
+106: INTERLEAVE
+107: SEQUENCE
+108: REF 'text-index-scope-attr',
+109: CHOICE
+110: ATTRIBUTE "text:index-scope",
+111: CHOICE
+112: VALUE 'document',
+112: VALUE 'chapter',
+110: EPSILON
+108: REF 'text-relative-tab-stop-position-attr',
+109: CHOICE
+110: ATTRIBUTE "text:relative-tab-stop-position",
+111: REF 'boolean',
+112: CHOICE
+113: VALUE 'true',
+113: VALUE 'false',
+110: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:ignore-case",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:main-entry-style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:alphabetical-separators",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "text:combine-entries",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:combine-entries-with-dash",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:combine-entries-with-pp",
+110: REF 'boolean',
+111: CHOICE
+112: VALUE 'true',
+112: VALUE 'false',
+109: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:use-keys-as-entries",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:capitalize-entries",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:comma-separated",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "fo:language",
+109: REF 'languageCode',
+110: DATA 'token',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "fo:country",
+109: REF 'countryCode',
+110: DATA 'token',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "text:sort-algorithm",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+105: CHOICE
+106: REF 'text-index-title-template',
+106: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: REF 'text-alphabetical-index-entry-template',
+108: ELEMENT "text:alphabetical-index-entry-template",
+109: SEQUENCE
+110: REF 'text-alphabetical-index-entry-template-attrs',
+111: INTERLEAVE
+112: ATTRIBUTE "text:outline-level",
+113: CHOICE
+114: VALUE '1',
+114: VALUE '2',
+114: VALUE '3',
+114: VALUE 'separator',
+112: ATTRIBUTE "text:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+110: CHOICE
+111: ONEOREMORE
+112: CHOICE
+113: REF 'text-index-entry-chapter',
+113: REF 'text-index-entry-page-number',
+113: REF 'text-index-entry-text',
+113: REF 'text-index-entry-span',
+113: REF 'text-index-entry-tab-stop',
+111: EPSILON
+106: EPSILON
+102: REF 'text-index-body',
+99: REF 'text-bibliography',
+100: ELEMENT "text:bibliography",
+101: SEQUENCE
+102: REF 'sectionAttr',
+103: INTERLEAVE
+104: CHOICE
+105: ATTRIBUTE "text:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: ATTRIBUTE "text:name",
+105: REF 'string',
+106: DATA 'string',
+104: CHOICE
+105: ATTRIBUTE "text:protected",
+106: REF 'boolean',
+107: CHOICE
+108: VALUE 'true',
+108: VALUE 'false',
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "text:protection-key",
+106: REF 'string',
+107: DATA 'string',
+105: EPSILON
+102: REF 'text-bibliography-source',
+103: ELEMENT "text:bibliography-source",
+104: SEQUENCE
+105: CHOICE
+106: REF 'text-index-title-template',
+106: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: REF 'text-bibliography-entry-template',
+108: ELEMENT "text:bibliography-entry-template",
+109: SEQUENCE
+110: REF 'text-bibliography-entry-template-attrs',
+111: INTERLEAVE
+112: ATTRIBUTE "text:bibliography-type",
+113: REF 'text-bibliography-types',
+114: CHOICE
+115: VALUE 'article',
+115: VALUE 'book',
+115: VALUE 'booklet',
+115: VALUE 'conference',
+115: VALUE 'custom1',
+115: VALUE 'custom2',
+115: VALUE 'custom3',
+115: VALUE 'custom4',
+115: VALUE 'custom5',
+115: VALUE 'email',
+115: VALUE 'inbook',
+115: VALUE 'incollection',
+115: VALUE 'inproceedings',
+115: VALUE 'journal',
+115: VALUE 'manual',
+115: VALUE 'mastersthesis',
+115: VALUE 'misc',
+115: VALUE 'phdthesis',
+115: VALUE 'proceedings',
+115: VALUE 'techreport',
+115: VALUE 'unpublished',
+115: VALUE 'www',
+112: ATTRIBUTE "text:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+110: CHOICE
+111: ONEOREMORE
+112: CHOICE
+113: REF 'text-index-entry-span',
+113: REF 'text-index-entry-tab-stop',
+113: REF 'text-index-entry-bibliography',
+114: ELEMENT "text:index-entry-bibliography",
+115: REF 'text-index-entry-bibliography-attrs',
+116: INTERLEAVE
+117: CHOICE
+118: ATTRIBUTE "text:style-name",
+119: REF 'styleNameRef',
+120: CHOICE
+121: DATA 'NCName',
+121: EPSILON
+118: EPSILON
+117: ATTRIBUTE "text:bibliography-data-field",
+118: CHOICE
+119: VALUE 'address',
+119: VALUE 'annote',
+119: VALUE 'author',
+119: VALUE 'bibliography-type',
+119: VALUE 'booktitle',
+119: VALUE 'chapter',
+119: VALUE 'custom1',
+119: VALUE 'custom2',
+119: VALUE 'custom3',
+119: VALUE 'custom4',
+119: VALUE 'custom5',
+119: VALUE 'edition',
+119: VALUE 'editor',
+119: VALUE 'howpublished',
+119: VALUE 'identifier',
+119: VALUE 'institution',
+119: VALUE 'isbn',
+119: VALUE 'issn',
+119: VALUE 'journal',
+119: VALUE 'month',
+119: VALUE 'note',
+119: VALUE 'number',
+119: VALUE 'organizations',
+119: VALUE 'pages',
+119: VALUE 'publisher',
+119: VALUE 'report-type',
+119: VALUE 'school',
+119: VALUE 'series',
+119: VALUE 'title',
+119: VALUE 'url',
+119: VALUE 'volume',
+119: VALUE 'year',
+111: EPSILON
+106: EPSILON
+102: REF 'text-index-body',
+99: REF 'shape',
+100: CHOICE
+101: REF 'draw-rect',
+101: REF 'draw-line',
+101: REF 'draw-polyline',
+101: REF 'draw-polygon',
+101: REF 'draw-regular-polygon',
+101: REF 'draw-path',
+101: REF 'draw-circle',
+101: REF 'draw-ellipse',
+101: REF 'draw-g',
+101: REF 'draw-page-thumbnail',
+101: REF 'draw-frame',
+101: REF 'draw-measure',
+102: ELEMENT "draw:measure",
+103: SEQUENCE
+104: REF 'draw-measure-attlist',
+105: INTERLEAVE
+106: SEQUENCE
+107: ATTRIBUTE "svg:x1",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: ATTRIBUTE "svg:y1",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+106: SEQUENCE
+107: ATTRIBUTE "svg:x2",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: ATTRIBUTE "svg:y2",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+104: REF 'common-draw-shape-with-text-and-styles-attlist',
+105: SEQUENCE
+106: REF 'common-draw-shape-with-styles-attlist',
+107: SEQUENCE
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:id",
+111: REF 'ID',
+112: DATA 'ID',
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-draw-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:name",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-text-spreadsheet-shape-attlist',
+109: INTERLEAVE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "table:end-cell-address",
+113: REF 'cellAddress',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-x",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-y",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "table:table-background",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: REF 'common-text-anchor-attlist',
+111: INTERLEAVE
+112: CHOICE
+113: ATTRIBUTE "text:anchor-type",
+114: CHOICE
+115: VALUE 'page',
+115: VALUE 'frame',
+115: VALUE 'paragraph',
+115: VALUE 'char',
+115: VALUE 'as-char',
+113: EPSILON
+112: CHOICE
+113: ATTRIBUTE "text:anchor-page-number",
+114: REF 'positiveInteger',
+115: DATA 'positiveInteger',
+113: EPSILON
+106: REF 'common-draw-text-style-name-attlist',
+107: CHOICE
+108: ATTRIBUTE "draw:text-style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+104: REF 'common-draw-caption-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:caption-id",
+107: REF 'IDREF',
+108: DATA 'IDREF',
+106: EPSILON
+104: CHOICE
+105: REF 'svg-title',
+105: EPSILON
+104: CHOICE
+105: REF 'svg-desc',
+105: EPSILON
+104: CHOICE
+105: REF 'office-event-listeners',
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'draw-glue-point',
+105: EPSILON
+104: REF 'draw-text',
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-p',
+108: REF 'text-list',
+106: EPSILON
+101: REF 'draw-caption',
+102: ELEMENT "draw:caption",
+103: SEQUENCE
+104: REF 'draw-caption-attlist',
+105: INTERLEAVE
+106: CHOICE
+107: SEQUENCE
+108: ATTRIBUTE "draw:caption-point-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: ATTRIBUTE "draw:caption-point-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:corner-radius",
+108: REF 'nonNegativeLength',
+109: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-position-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:x",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:y",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-size-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:width",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:height",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-shape-with-text-and-styles-attlist',
+105: SEQUENCE
+106: REF 'common-draw-shape-with-styles-attlist',
+107: SEQUENCE
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:id",
+111: REF 'ID',
+112: DATA 'ID',
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-draw-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:name",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-text-spreadsheet-shape-attlist',
+109: INTERLEAVE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "table:end-cell-address",
+113: REF 'cellAddress',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-x",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-y",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "table:table-background",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: REF 'common-text-anchor-attlist',
+111: INTERLEAVE
+112: CHOICE
+113: ATTRIBUTE "text:anchor-type",
+114: CHOICE
+115: VALUE 'page',
+115: VALUE 'frame',
+115: VALUE 'paragraph',
+115: VALUE 'char',
+115: VALUE 'as-char',
+113: EPSILON
+112: CHOICE
+113: ATTRIBUTE "text:anchor-page-number",
+114: REF 'positiveInteger',
+115: DATA 'positiveInteger',
+113: EPSILON
+106: REF 'common-draw-text-style-name-attlist',
+107: CHOICE
+108: ATTRIBUTE "draw:text-style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+104: REF 'common-draw-caption-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:caption-id",
+107: REF 'IDREF',
+108: DATA 'IDREF',
+106: EPSILON
+104: CHOICE
+105: REF 'svg-title',
+105: EPSILON
+104: CHOICE
+105: REF 'svg-desc',
+105: EPSILON
+104: CHOICE
+105: REF 'office-event-listeners',
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'draw-glue-point',
+105: EPSILON
+104: REF 'draw-text',
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-p',
+108: REF 'text-list',
+106: EPSILON
+101: REF 'draw-connector',
+102: ELEMENT "draw:connector",
+103: SEQUENCE
+104: REF 'draw-connector-attlist',
+105: INTERLEAVE
+106: CHOICE
+107: ATTRIBUTE "draw:type",
+108: CHOICE
+109: VALUE 'standard',
+109: VALUE 'lines',
+109: VALUE 'line',
+109: VALUE 'curve',
+107: EPSILON
+106: CHOICE
+107: SEQUENCE
+108: ATTRIBUTE "svg:x1",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: ATTRIBUTE "svg:y1",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:start-shape",
+108: REF 'IDREF',
+109: DATA 'IDREF',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:start-glue-point",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+106: CHOICE
+107: SEQUENCE
+108: ATTRIBUTE "svg:x2",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: ATTRIBUTE "svg:y2",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:end-shape",
+108: REF 'IDREF',
+109: DATA 'IDREF',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:end-glue-point",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:line-skew",
+108: LIST
+109: SEQUENCE
+110: REF 'length',
+111: DATA 'string',
+110: CHOICE
+111: SEQUENCE
+112: REF 'length',
+113: DATA 'string',
+112: CHOICE
+113: REF 'length',
+114: DATA 'string',
+113: EPSILON
+111: EPSILON
+107: EPSILON
+104: REF 'common-draw-shape-with-text-and-styles-attlist',
+105: SEQUENCE
+106: REF 'common-draw-shape-with-styles-attlist',
+107: SEQUENCE
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:id",
+111: REF 'ID',
+112: DATA 'ID',
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-draw-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:name",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-text-spreadsheet-shape-attlist',
+109: INTERLEAVE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "table:end-cell-address",
+113: REF 'cellAddress',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-x",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-y",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "table:table-background",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: REF 'common-text-anchor-attlist',
+111: INTERLEAVE
+112: CHOICE
+113: ATTRIBUTE "text:anchor-type",
+114: CHOICE
+115: VALUE 'page',
+115: VALUE 'frame',
+115: VALUE 'paragraph',
+115: VALUE 'char',
+115: VALUE 'as-char',
+113: EPSILON
+112: CHOICE
+113: ATTRIBUTE "text:anchor-page-number",
+114: REF 'positiveInteger',
+115: DATA 'positiveInteger',
+113: EPSILON
+106: REF 'common-draw-text-style-name-attlist',
+107: CHOICE
+108: ATTRIBUTE "draw:text-style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+104: REF 'common-draw-caption-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:caption-id",
+107: REF 'IDREF',
+108: DATA 'IDREF',
+106: EPSILON
+104: CHOICE
+105: REF 'svg-title',
+105: EPSILON
+104: CHOICE
+105: REF 'svg-desc',
+105: EPSILON
+104: CHOICE
+105: REF 'office-event-listeners',
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'draw-glue-point',
+105: EPSILON
+104: REF 'draw-text',
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-p',
+108: REF 'text-list',
+106: EPSILON
+101: REF 'draw-control',
+102: ELEMENT "draw:control",
+103: SEQUENCE
+104: REF 'draw-control-attlist',
+105: ATTRIBUTE "draw:control",
+106: REF 'IDREF',
+107: DATA 'IDREF',
+104: REF 'common-draw-position-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:x",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:y",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-size-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:width",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:height",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-shape-with-text-and-styles-attlist',
+105: SEQUENCE
+106: REF 'common-draw-shape-with-styles-attlist',
+107: SEQUENCE
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:id",
+111: REF 'ID',
+112: DATA 'ID',
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-draw-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:name",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-text-spreadsheet-shape-attlist',
+109: INTERLEAVE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "table:end-cell-address",
+113: REF 'cellAddress',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-x",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-y",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "table:table-background",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: REF 'common-text-anchor-attlist',
+111: INTERLEAVE
+112: CHOICE
+113: ATTRIBUTE "text:anchor-type",
+114: CHOICE
+115: VALUE 'page',
+115: VALUE 'frame',
+115: VALUE 'paragraph',
+115: VALUE 'char',
+115: VALUE 'as-char',
+113: EPSILON
+112: CHOICE
+113: ATTRIBUTE "text:anchor-page-number",
+114: REF 'positiveInteger',
+115: DATA 'positiveInteger',
+113: EPSILON
+106: REF 'common-draw-text-style-name-attlist',
+107: CHOICE
+108: ATTRIBUTE "draw:text-style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+104: REF 'common-draw-caption-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:caption-id",
+107: REF 'IDREF',
+108: DATA 'IDREF',
+106: EPSILON
+104: CHOICE
+105: REF 'svg-title',
+105: EPSILON
+104: CHOICE
+105: REF 'svg-desc',
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'draw-glue-point',
+105: EPSILON
+101: REF 'dr3d-scene',
+102: ELEMENT "dr3d:scene",
+103: SEQUENCE
+104: REF 'dr3d-scene-attlist',
+105: INTERLEAVE
+106: SEQUENCE
+107: CHOICE
+108: ATTRIBUTE "dr3d:vrp",
+109: REF 'vector3D',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "dr3d:vpn",
+109: REF 'vector3D',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "dr3d:vup",
+109: REF 'vector3D',
+110: DATA 'string',
+108: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:projection",
+108: CHOICE
+109: VALUE 'parallel',
+109: VALUE 'perspective',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:distance",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:focal-length",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:shadow-slant",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:shade-mode",
+108: CHOICE
+109: VALUE 'flat',
+109: VALUE 'phong',
+109: VALUE 'gouraud',
+109: VALUE 'draft',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:ambient-color",
+108: REF 'color',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "dr3d:lighting-mode",
+108: REF 'boolean',
+109: CHOICE
+110: VALUE 'true',
+110: VALUE 'false',
+107: EPSILON
+104: REF 'common-draw-position-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:x",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:y",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-size-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:width",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:height",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-style-name-attlist',
+105: CHOICE
+106: SEQUENCE
+107: CHOICE
+108: ATTRIBUTE "draw:style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:class-names",
+109: REF 'styleNameRefs',
+110: LIST
+111: CHOICE
+112: ONEOREMORE
+113: DATA 'NCName',
+112: EPSILON
+108: EPSILON
+106: SEQUENCE
+107: CHOICE
+108: ATTRIBUTE "presentation:style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "presentation:class-names",
+109: REF 'styleNameRefs',
+110: LIST
+111: CHOICE
+112: ONEOREMORE
+113: DATA 'NCName',
+112: EPSILON
+108: EPSILON
+104: REF 'common-draw-z-index-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:z-index",
+107: REF 'nonNegativeInteger',
+108: DATA 'nonNegativeInteger',
+106: EPSILON
+104: REF 'common-draw-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:id",
+107: REF 'ID',
+108: DATA 'ID',
+106: EPSILON
+104: REF 'common-draw-layer-name-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:layer",
+107: DATA 'string',
+106: EPSILON
+104: REF 'common-text-spreadsheet-shape-attlist',
+105: INTERLEAVE
+106: SEQUENCE
+107: CHOICE
+108: ATTRIBUTE "table:end-cell-address",
+109: REF 'cellAddress',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+106: CHOICE
+107: ATTRIBUTE "table:table-background",
+108: REF 'boolean',
+109: CHOICE
+110: VALUE 'true',
+110: VALUE 'false',
+107: EPSILON
+106: REF 'common-text-anchor-attlist',
+107: INTERLEAVE
+108: CHOICE
+109: ATTRIBUTE "text:anchor-type",
+110: CHOICE
+111: VALUE 'page',
+111: VALUE 'frame',
+111: VALUE 'paragraph',
+111: VALUE 'char',
+111: VALUE 'as-char',
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "text:anchor-page-number",
+110: REF 'positiveInteger',
+111: DATA 'positiveInteger',
+109: EPSILON
+104: REF 'common-dr3d-transform-attlist',
+105: CHOICE
+106: ATTRIBUTE "dr3d:transform",
+107: STRING
+106: EPSILON
+104: REF 'common-draw-caption-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:caption-id",
+107: REF 'IDREF',
+108: DATA 'IDREF',
+106: EPSILON
+104: CHOICE
+105: REF 'svg-title',
+105: EPSILON
+104: CHOICE
+105: REF 'svg-desc',
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'dr3d-light',
+107: ELEMENT "dr3d:light",
+108: REF 'dr3d-light-attlist',
+109: INTERLEAVE
+110: CHOICE
+111: ATTRIBUTE "dr3d:diffuse-color",
+112: REF 'color',
+113: DATA 'string',
+111: EPSILON
+110: ATTRIBUTE "dr3d:direction",
+111: REF 'vector3D',
+112: DATA 'string',
+110: CHOICE
+111: ATTRIBUTE "dr3d:enabled",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "dr3d:specular",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'shapes3d',
+107: CHOICE
+108: REF 'dr3d-scene',
+108: REF 'dr3d-extrude',
+109: ELEMENT "dr3d:extrude",
+110: SEQUENCE
+111: REF 'common-draw-path-data-attlist',
+112: ATTRIBUTE "svg:d",
+113: REF 'pathData',
+114: DATA 'string',
+111: REF 'common-draw-viewbox-attlist',
+112: ATTRIBUTE "svg:viewBox",
+113: LIST
+114: SEQUENCE
+115: REF 'integer',
+116: DATA 'integer',
+115: REF 'integer',
+116: DATA 'integer',
+115: REF 'integer',
+116: DATA 'integer',
+115: REF 'integer',
+116: DATA 'integer',
+111: REF 'common-draw-id-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:id",
+114: REF 'ID',
+115: DATA 'ID',
+113: EPSILON
+111: REF 'common-draw-z-index-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:z-index",
+114: REF 'nonNegativeInteger',
+115: DATA 'nonNegativeInteger',
+113: EPSILON
+111: REF 'common-draw-layer-name-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:layer",
+114: DATA 'string',
+113: EPSILON
+111: REF 'common-draw-style-name-attlist',
+112: CHOICE
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "draw:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "presentation:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "presentation:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+111: REF 'common-dr3d-transform-attlist',
+112: CHOICE
+113: ATTRIBUTE "dr3d:transform",
+114: STRING
+113: EPSILON
+108: REF 'dr3d-sphere',
+109: ELEMENT "dr3d:sphere",
+110: SEQUENCE
+111: REF 'dr3d-sphere-attlist',
+112: INTERLEAVE
+113: CHOICE
+114: ATTRIBUTE "dr3d:center",
+115: REF 'vector3D',
+116: DATA 'string',
+114: EPSILON
+113: CHOICE
+114: ATTRIBUTE "dr3d:size",
+115: REF 'vector3D',
+116: DATA 'string',
+114: EPSILON
+111: REF 'common-draw-z-index-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:z-index",
+114: REF 'nonNegativeInteger',
+115: DATA 'nonNegativeInteger',
+113: EPSILON
+111: REF 'common-draw-id-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:id",
+114: REF 'ID',
+115: DATA 'ID',
+113: EPSILON
+111: REF 'common-draw-layer-name-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:layer",
+114: DATA 'string',
+113: EPSILON
+111: REF 'common-draw-style-name-attlist',
+112: CHOICE
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "draw:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "presentation:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "presentation:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+111: REF 'common-dr3d-transform-attlist',
+112: CHOICE
+113: ATTRIBUTE "dr3d:transform",
+114: STRING
+113: EPSILON
+108: REF 'dr3d-rotate',
+109: ELEMENT "dr3d:rotate",
+110: SEQUENCE
+111: REF 'common-draw-viewbox-attlist',
+112: ATTRIBUTE "svg:viewBox",
+113: LIST
+114: SEQUENCE
+115: REF 'integer',
+116: DATA 'integer',
+115: REF 'integer',
+116: DATA 'integer',
+115: REF 'integer',
+116: DATA 'integer',
+115: REF 'integer',
+116: DATA 'integer',
+111: REF 'common-draw-path-data-attlist',
+112: ATTRIBUTE "svg:d",
+113: REF 'pathData',
+114: DATA 'string',
+111: REF 'common-draw-z-index-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:z-index",
+114: REF 'nonNegativeInteger',
+115: DATA 'nonNegativeInteger',
+113: EPSILON
+111: REF 'common-draw-id-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:id",
+114: REF 'ID',
+115: DATA 'ID',
+113: EPSILON
+111: REF 'common-draw-layer-name-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:layer",
+114: DATA 'string',
+113: EPSILON
+111: REF 'common-draw-style-name-attlist',
+112: CHOICE
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "draw:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "presentation:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "presentation:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+111: REF 'common-dr3d-transform-attlist',
+112: CHOICE
+113: ATTRIBUTE "dr3d:transform",
+114: STRING
+113: EPSILON
+108: REF 'dr3d-cube',
+109: ELEMENT "dr3d:cube",
+110: SEQUENCE
+111: REF 'dr3d-cube-attlist',
+112: SEQUENCE
+113: CHOICE
+114: ATTRIBUTE "dr3d:min-edge",
+115: REF 'vector3D',
+116: DATA 'string',
+114: EPSILON
+113: CHOICE
+114: ATTRIBUTE "dr3d:max-edge",
+115: REF 'vector3D',
+116: DATA 'string',
+114: EPSILON
+111: REF 'common-draw-z-index-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:z-index",
+114: REF 'nonNegativeInteger',
+115: DATA 'nonNegativeInteger',
+113: EPSILON
+111: REF 'common-draw-id-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:id",
+114: REF 'ID',
+115: DATA 'ID',
+113: EPSILON
+111: REF 'common-draw-layer-name-attlist',
+112: CHOICE
+113: ATTRIBUTE "draw:layer",
+114: DATA 'string',
+113: EPSILON
+111: REF 'common-draw-style-name-attlist',
+112: CHOICE
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "draw:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+113: SEQUENCE
+114: CHOICE
+115: ATTRIBUTE "presentation:style-name",
+116: REF 'styleNameRef',
+117: CHOICE
+118: DATA 'NCName',
+118: EPSILON
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "presentation:class-names",
+116: REF 'styleNameRefs',
+117: LIST
+118: CHOICE
+119: ONEOREMORE
+120: DATA 'NCName',
+119: EPSILON
+115: EPSILON
+111: REF 'common-dr3d-transform-attlist',
+112: CHOICE
+113: ATTRIBUTE "dr3d:transform",
+114: STRING
+113: EPSILON
+105: EPSILON
+101: REF 'draw-custom-shape',
+102: ELEMENT "draw:custom-shape",
+103: SEQUENCE
+104: REF 'draw-custom-shape-attlist',
+105: INTERLEAVE
+106: CHOICE
+107: ATTRIBUTE "draw:engine",
+108: REF 'namespacedToken',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "draw:data",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-position-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:x",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:y",
+108: REF 'coordinate',
+109: REF 'length',
+110: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-size-attlist',
+105: SEQUENCE
+106: CHOICE
+107: ATTRIBUTE "svg:width",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+106: CHOICE
+107: ATTRIBUTE "svg:height",
+108: REF 'length',
+109: DATA 'string',
+107: EPSILON
+104: REF 'common-draw-shape-with-text-and-styles-attlist',
+105: SEQUENCE
+106: REF 'common-draw-shape-with-styles-attlist',
+107: SEQUENCE
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:id",
+111: REF 'ID',
+112: DATA 'ID',
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-draw-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:name",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-text-spreadsheet-shape-attlist',
+109: INTERLEAVE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "table:end-cell-address",
+113: REF 'cellAddress',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-x",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "table:end-y",
+113: REF 'coordinate',
+114: REF 'length',
+115: DATA 'string',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "table:table-background",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: REF 'common-text-anchor-attlist',
+111: INTERLEAVE
+112: CHOICE
+113: ATTRIBUTE "text:anchor-type",
+114: CHOICE
+115: VALUE 'page',
+115: VALUE 'frame',
+115: VALUE 'paragraph',
+115: VALUE 'char',
+115: VALUE 'as-char',
+113: EPSILON
+112: CHOICE
+113: ATTRIBUTE "text:anchor-page-number",
+114: REF 'positiveInteger',
+115: DATA 'positiveInteger',
+113: EPSILON
+106: REF 'common-draw-text-style-name-attlist',
+107: CHOICE
+108: ATTRIBUTE "draw:text-style-name",
+109: REF 'styleNameRef',
+110: CHOICE
+111: DATA 'NCName',
+111: EPSILON
+108: EPSILON
+104: REF 'common-draw-caption-id-attlist',
+105: CHOICE
+106: ATTRIBUTE "draw:caption-id",
+107: REF 'IDREF',
+108: DATA 'IDREF',
+106: EPSILON
+104: CHOICE
+105: REF 'svg-title',
+105: EPSILON
+104: CHOICE
+105: REF 'svg-desc',
+105: EPSILON
+104: CHOICE
+105: REF 'office-event-listeners',
+105: EPSILON
+104: CHOICE
+105: ONEOREMORE
+106: REF 'draw-glue-point',
+105: EPSILON
+104: REF 'draw-text',
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-p',
+108: REF 'text-list',
+106: EPSILON
+104: CHOICE
+105: REF 'draw-enhanced-geometry',
+106: ELEMENT "draw:enhanced-geometry",
+107: SEQUENCE
+108: REF 'draw-enhanced-geometry-attlist',
+109: INTERLEAVE
+110: CHOICE
+111: ATTRIBUTE "draw:type",
+112: REF 'custom-shape-type',
+113: CHOICE
+114: VALUE 'non-primitive',
+114: REF 'string',
+115: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "svg:viewBox",
+112: LIST
+113: SEQUENCE
+114: REF 'integer',
+115: DATA 'integer',
+114: REF 'integer',
+115: DATA 'integer',
+114: REF 'integer',
+115: DATA 'integer',
+114: REF 'integer',
+115: DATA 'integer',
+111: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:mirror-vertical",
+113: REF 'boolean',
+114: CHOICE
+115: VALUE 'true',
+115: VALUE 'false',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:mirror-horizontal",
+113: REF 'boolean',
+114: CHOICE
+115: VALUE 'true',
+115: VALUE 'false',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-rotate-angle",
+112: REF 'double',
+113: DATA 'double',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-allowed",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-path-allowed",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:concentric-gradient-fill-allowed",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-brightness",
+112: REF 'percent',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-depth",
+112: LIST
+113: SEQUENCE
+114: REF 'length',
+115: DATA 'string',
+114: REF 'double',
+115: DATA 'double',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-diffusion",
+112: REF 'percent',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-number-of-line-segments",
+112: REF 'integer',
+113: DATA 'integer',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-light-face",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-first-light-harsh",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-second-light-harsh",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-first-light-level",
+112: REF 'percent',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-second-light-level",
+112: REF 'percent',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-first-light-direction",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-second-light-direction",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-metal",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "dr3d:shade-mode",
+112: CHOICE
+113: VALUE 'flat',
+113: VALUE 'phong',
+113: VALUE 'gouraud',
+113: VALUE 'draft',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-rotation-angle",
+112: LIST
+113: SEQUENCE
+114: REF 'double',
+115: DATA 'double',
+114: REF 'double',
+115: DATA 'double',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-rotation-center",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-shininess",
+112: REF 'percent',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-skew",
+112: LIST
+113: SEQUENCE
+114: REF 'double',
+115: DATA 'double',
+114: REF 'double',
+115: DATA 'double',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-specularity",
+112: REF 'percent',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "dr3d:projection",
+112: CHOICE
+113: VALUE 'parallel',
+113: VALUE 'perspective',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-viewpoint",
+112: REF 'point3D',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-origin",
+112: LIST
+113: SEQUENCE
+114: REF 'double',
+115: DATA 'double',
+114: REF 'double',
+115: DATA 'double',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:extrusion-color",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:enhanced-path",
+112: REF 'string',
+113: DATA 'string',
+111: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:path-stretchpoint-x",
+113: REF 'double',
+114: DATA 'double',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:path-stretchpoint-y",
+113: REF 'double',
+114: DATA 'double',
+112: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-areas",
+112: REF 'string',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:glue-points",
+112: REF 'string',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:glue-point-type",
+112: CHOICE
+113: VALUE 'none',
+113: VALUE 'segments',
+113: VALUE 'rectangle',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:glue-point-leaving-directions",
+112: STRING
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-path",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-path-mode",
+112: CHOICE
+113: VALUE 'normal',
+113: VALUE 'path',
+113: VALUE 'shape',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-path-scale",
+112: CHOICE
+113: VALUE 'path',
+113: VALUE 'shape',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:text-path-same-letter-heights",
+112: REF 'boolean',
+113: CHOICE
+114: VALUE 'true',
+114: VALUE 'false',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "draw:modifiers",
+112: REF 'string',
+113: DATA 'string',
+111: EPSILON
+108: CHOICE
+109: ONEOREMORE
+110: REF 'draw-equation',
+111: ELEMENT "draw:equation",
+112: REF 'draw-equation-attlist',
+113: INTERLEAVE
+114: CHOICE
+115: ATTRIBUTE "draw:name",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:formula",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+109: EPSILON
+108: CHOICE
+109: ONEOREMORE
+110: REF 'draw-handle',
+111: ELEMENT "draw:handle",
+112: REF 'draw-handle-attlist',
+113: INTERLEAVE
+114: CHOICE
+115: ATTRIBUTE "draw:handle-mirror-vertical",
+116: REF 'boolean',
+117: CHOICE
+118: VALUE 'true',
+118: VALUE 'false',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-mirror-horizontal",
+116: REF 'boolean',
+117: CHOICE
+118: VALUE 'true',
+118: VALUE 'false',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-switched",
+116: REF 'boolean',
+117: CHOICE
+118: VALUE 'true',
+118: VALUE 'false',
+115: EPSILON
+114: ATTRIBUTE "draw:handle-position",
+115: REF 'string',
+116: DATA 'string',
+114: CHOICE
+115: ATTRIBUTE "draw:handle-range-x-minimum",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-range-x-maximum",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-range-y-minimum",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-range-y-maximum",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-polar",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-radius-range-minimum",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+114: CHOICE
+115: ATTRIBUTE "draw:handle-radius-range-maximum",
+116: REF 'string',
+117: DATA 'string',
+115: EPSILON
+109: EPSILON
+105: EPSILON
+99: REF 'change-marks',
+100: CHOICE
+101: ELEMENT "text:change",
+102: REF 'change-mark-attr',
+103: ATTRIBUTE "text:change-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+101: ELEMENT "text:change-start",
+102: REF 'change-mark-attr',
+103: ATTRIBUTE "text:change-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+101: ELEMENT "text:change-end",
+102: REF 'change-mark-attr',
+103: ATTRIBUTE "text:change-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+97: REF 'text-index-title',
+98: ELEMENT "text:index-title",
+99: SEQUENCE
+100: REF 'sectionAttr',
+101: INTERLEAVE
+102: CHOICE
+103: ATTRIBUTE "text:style-name",
+104: REF 'styleNameRef',
+105: CHOICE
+106: DATA 'NCName',
+106: EPSILON
+103: EPSILON
+102: ATTRIBUTE "text:name",
+103: REF 'string',
+104: DATA 'string',
+102: CHOICE
+103: ATTRIBUTE "text:protected",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:protection-key",
+104: REF 'string',
+105: DATA 'string',
+103: EPSILON
+100: CHOICE
+101: ONEOREMORE
+102: REF 'index-content-main',
+103: CHOICE
+104: REF 'text-content',
+105: CHOICE
+106: REF 'text-h',
+106: REF 'text-p',
+106: REF 'text-list',
+106: REF 'text-numbered-paragraph',
+106: REF 'table-table',
+106: REF 'draw-a',
+106: REF 'text-section',
+106: REF 'text-soft-page-break',
+106: REF 'text-table-of-content',
+106: REF 'text-illustration-index',
+106: REF 'text-table-index',
+106: REF 'text-object-index',
+106: REF 'text-user-index',
+106: REF 'text-alphabetical-index',
+106: REF 'text-bibliography',
+106: REF 'shape',
+107: CHOICE
+108: REF 'draw-rect',
+108: REF 'draw-line',
+108: REF 'draw-polyline',
+108: REF 'draw-polygon',
+108: REF 'draw-regular-polygon',
+108: REF 'draw-path',
+108: REF 'draw-circle',
+108: REF 'draw-ellipse',
+108: REF 'draw-g',
+108: REF 'draw-page-thumbnail',
+108: REF 'draw-frame',
+108: REF 'draw-measure',
+108: REF 'draw-caption',
+108: REF 'draw-connector',
+108: REF 'draw-control',
+108: REF 'dr3d-scene',
+108: REF 'draw-custom-shape',
+106: REF 'change-marks',
+107: CHOICE
+104: REF 'text-index-title',
+101: EPSILON
+94: EPSILON
+88: REF 'text-illustration-index',
+88: REF 'text-table-index',
+88: REF 'text-object-index',
+88: REF 'text-user-index',
+88: REF 'text-alphabetical-index',
+88: REF 'text-bibliography',
+88: REF 'shape',
+89: CHOICE
+90: REF 'draw-rect',
+90: REF 'draw-line',
+90: REF 'draw-polyline',
+90: REF 'draw-polygon',
+90: REF 'draw-regular-polygon',
+90: REF 'draw-path',
+90: REF 'draw-circle',
+90: REF 'draw-ellipse',
+90: REF 'draw-g',
+90: REF 'draw-page-thumbnail',
+90: REF 'draw-frame',
+90: REF 'draw-measure',
+90: REF 'draw-caption',
+90: REF 'draw-connector',
+90: REF 'draw-control',
+90: REF 'dr3d-scene',
+90: REF 'draw-custom-shape',
+88: REF 'change-marks',
+89: CHOICE
+85: EPSILON
+81: REF 'text-soft-page-break',
+81: REF 'text-table-of-content',
+81: REF 'text-illustration-index',
+81: REF 'text-table-index',
+81: REF 'text-object-index',
+81: REF 'text-user-index',
+81: REF 'text-alphabetical-index',
+81: REF 'text-bibliography',
+81: REF 'shape',
+82: CHOICE
+83: REF 'draw-rect',
+83: REF 'draw-line',
+83: REF 'draw-polyline',
+83: REF 'draw-polygon',
+83: REF 'draw-regular-polygon',
+83: REF 'draw-path',
+83: REF 'draw-circle',
+83: REF 'draw-ellipse',
+83: REF 'draw-g',
+83: REF 'draw-page-thumbnail',
+83: REF 'draw-frame',
+83: REF 'draw-measure',
+83: REF 'draw-caption',
+83: REF 'draw-connector',
+83: REF 'draw-control',
+83: REF 'dr3d-scene',
+83: REF 'draw-custom-shape',
+81: REF 'change-marks',
+82: CHOICE
+78: EPSILON
+74: REF 'draw-image',
+75: ELEMENT "draw:image",
+76: SEQUENCE
+77: REF 'draw-image-attlist',
+78: CHOICE
+79: ATTRIBUTE "draw:filter-name",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: CHOICE
+78: REF 'common-draw-data-attlist',
+79: SEQUENCE
+80: ATTRIBUTE "xlink:href",
+81: REF 'anyURI',
+82: DATA 'anyURI',
+80: CHOICE
+81: ATTRIBUTE "xlink:type",
+82: VALUE 'simple',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:show",
+82: VALUE 'embed',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:actuate",
+82: VALUE 'onLoad',
+81: EPSILON
+78: REF 'office-binary-data',
+77: REF 'draw-text',
+78: CHOICE
+79: ONEOREMORE
+80: CHOICE
+81: REF 'text-p',
+81: REF 'text-list',
+79: EPSILON
+74: REF 'draw-object',
+75: ELEMENT "draw:object",
+76: SEQUENCE
+77: REF 'draw-object-attlist',
+78: CHOICE
+79: ATTRIBUTE "draw:notify-on-update-of-ranges",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: CHOICE
+78: REF 'common-draw-data-attlist',
+79: SEQUENCE
+80: ATTRIBUTE "xlink:href",
+81: REF 'anyURI',
+82: DATA 'anyURI',
+80: CHOICE
+81: ATTRIBUTE "xlink:type",
+82: VALUE 'simple',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:show",
+82: VALUE 'embed',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:actuate",
+82: VALUE 'onLoad',
+81: EPSILON
+78: REF 'office-document',
+78: REF 'math-math',
+79: ELEMENT "math:math",
+80: REF 'mathMarkup',
+81: ONEOREMORE
+82: CHOICE
+83: ATTRIBUTE "*",
+84: STRING
+83: STRING
+83: ELEMENT "*",
+84: REF 'mathMarkup',
+85: ONEOREMORE
+86: CHOICE
+87: ATTRIBUTE "*",
+88: STRING
+87: STRING
+74: REF 'draw-object-ole',
+75: ELEMENT "draw:object-ole",
+76: SEQUENCE
+77: REF 'draw-object-ole-attlist',
+78: CHOICE
+79: ATTRIBUTE "draw:class-id",
+80: STRING
+79: EPSILON
+77: CHOICE
+78: REF 'common-draw-data-attlist',
+79: SEQUENCE
+80: ATTRIBUTE "xlink:href",
+81: REF 'anyURI',
+82: DATA 'anyURI',
+80: CHOICE
+81: ATTRIBUTE "xlink:type",
+82: VALUE 'simple',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:show",
+82: VALUE 'embed',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:actuate",
+82: VALUE 'onLoad',
+81: EPSILON
+78: REF 'office-binary-data',
+74: REF 'draw-applet',
+75: ELEMENT "draw:applet",
+76: SEQUENCE
+77: REF 'draw-applet-attlist',
+78: INTERLEAVE
+79: CHOICE
+80: ATTRIBUTE "draw:code",
+81: STRING
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "draw:object",
+81: STRING
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "draw:archive",
+81: STRING
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "draw:may-script",
+81: REF 'boolean',
+82: CHOICE
+83: VALUE 'true',
+83: VALUE 'false',
+80: EPSILON
+77: CHOICE
+78: REF 'common-draw-data-attlist',
+79: SEQUENCE
+80: ATTRIBUTE "xlink:href",
+81: REF 'anyURI',
+82: DATA 'anyURI',
+80: CHOICE
+81: ATTRIBUTE "xlink:type",
+82: VALUE 'simple',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:show",
+82: VALUE 'embed',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "xlink:actuate",
+82: VALUE 'onLoad',
+81: EPSILON
+78: EPSILON
+77: CHOICE
+78: ONEOREMORE
+79: REF 'draw-param',
+80: ELEMENT "draw:param",
+81: REF 'draw-param-attlist',
+82: INTERLEAVE
+83: CHOICE
+84: ATTRIBUTE "draw:name",
+85: STRING
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "draw:value",
+85: STRING
+84: EPSILON
+78: EPSILON
+74: REF 'draw-floating-frame',
+75: ELEMENT "draw:floating-frame",
+76: SEQUENCE
+77: REF 'draw-floating-frame-attlist',
+78: CHOICE
+79: ATTRIBUTE "draw:frame-name",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: REF 'common-draw-data-attlist',
+78: SEQUENCE
+79: ATTRIBUTE "xlink:href",
+80: REF 'anyURI',
+81: DATA 'anyURI',
+79: CHOICE
+80: ATTRIBUTE "xlink:type",
+81: VALUE 'simple',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:show",
+81: VALUE 'embed',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:actuate",
+81: VALUE 'onLoad',
+80: EPSILON
+74: REF 'draw-plugin',
+75: ELEMENT "draw:plugin",
+76: SEQUENCE
+77: REF 'draw-plugin-attlist',
+78: CHOICE
+79: ATTRIBUTE "draw:mime-type",
+80: STRING
+79: EPSILON
+77: REF 'common-draw-data-attlist',
+78: SEQUENCE
+79: ATTRIBUTE "xlink:href",
+80: REF 'anyURI',
+81: DATA 'anyURI',
+79: CHOICE
+80: ATTRIBUTE "xlink:type",
+81: VALUE 'simple',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:show",
+81: VALUE 'embed',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:actuate",
+81: VALUE 'onLoad',
+80: EPSILON
+77: CHOICE
+78: ONEOREMORE
+79: REF 'draw-param',
+78: EPSILON
+72: EPSILON
+71: CHOICE
+72: REF 'office-event-listeners',
+72: EPSILON
+71: CHOICE
+72: ONEOREMORE
+73: REF 'draw-glue-point',
+72: EPSILON
+71: CHOICE
+72: REF 'draw-image-map',
+73: ELEMENT "draw:image-map",
+74: CHOICE
+75: ONEOREMORE
+76: CHOICE
+77: REF 'draw-area-rectangle',
+78: ELEMENT "draw:area-rectangle",
+79: SEQUENCE
+80: REF 'common-draw-area-attlist',
+81: INTERLEAVE
+82: SEQUENCE
+83: CHOICE
+84: ATTRIBUTE "xlink:href",
+85: REF 'anyURI',
+86: DATA 'anyURI',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "xlink:type",
+85: VALUE 'simple',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "office:target-frame-name",
+85: REF 'targetFrameName',
+86: CHOICE
+87: VALUE '_self',
+87: VALUE '_blank',
+87: VALUE '_parent',
+87: VALUE '_top',
+87: REF 'string',
+88: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "xlink:show",
+85: CHOICE
+86: VALUE 'new',
+86: VALUE 'replace',
+84: EPSILON
+82: CHOICE
+83: ATTRIBUTE "office:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "draw:nohref",
+84: VALUE 'nohref',
+83: EPSILON
+80: ATTRIBUTE "svg:x",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: ATTRIBUTE "svg:y",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: ATTRIBUTE "svg:width",
+81: REF 'length',
+82: DATA 'string',
+80: ATTRIBUTE "svg:height",
+81: REF 'length',
+82: DATA 'string',
+80: CHOICE
+81: REF 'svg-title',
+81: EPSILON
+80: CHOICE
+81: REF 'svg-desc',
+81: EPSILON
+80: CHOICE
+81: REF 'office-event-listeners',
+81: EPSILON
+77: REF 'draw-area-circle',
+78: ELEMENT "draw:area-circle",
+79: SEQUENCE
+80: REF 'common-draw-area-attlist',
+81: INTERLEAVE
+82: SEQUENCE
+83: CHOICE
+84: ATTRIBUTE "xlink:href",
+85: REF 'anyURI',
+86: DATA 'anyURI',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "xlink:type",
+85: VALUE 'simple',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "office:target-frame-name",
+85: REF 'targetFrameName',
+86: CHOICE
+87: VALUE '_self',
+87: VALUE '_blank',
+87: VALUE '_parent',
+87: VALUE '_top',
+87: REF 'string',
+88: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "xlink:show",
+85: CHOICE
+86: VALUE 'new',
+86: VALUE 'replace',
+84: EPSILON
+82: CHOICE
+83: ATTRIBUTE "office:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "draw:nohref",
+84: VALUE 'nohref',
+83: EPSILON
+80: ATTRIBUTE "svg:cx",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: ATTRIBUTE "svg:cy",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: ATTRIBUTE "svg:r",
+81: REF 'length',
+82: DATA 'string',
+80: CHOICE
+81: REF 'svg-title',
+81: EPSILON
+80: CHOICE
+81: REF 'svg-desc',
+81: EPSILON
+80: CHOICE
+81: REF 'office-event-listeners',
+81: EPSILON
+77: REF 'draw-area-polygon',
+78: ELEMENT "draw:area-polygon",
+79: SEQUENCE
+80: REF 'common-draw-area-attlist',
+81: INTERLEAVE
+82: SEQUENCE
+83: CHOICE
+84: ATTRIBUTE "xlink:href",
+85: REF 'anyURI',
+86: DATA 'anyURI',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "xlink:type",
+85: VALUE 'simple',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "office:target-frame-name",
+85: REF 'targetFrameName',
+86: CHOICE
+87: VALUE '_self',
+87: VALUE '_blank',
+87: VALUE '_parent',
+87: VALUE '_top',
+87: REF 'string',
+88: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "xlink:show",
+85: CHOICE
+86: VALUE 'new',
+86: VALUE 'replace',
+84: EPSILON
+82: CHOICE
+83: ATTRIBUTE "office:name",
+84: REF 'string',
+85: DATA 'string',
+83: EPSILON
+82: CHOICE
+83: ATTRIBUTE "draw:nohref",
+84: VALUE 'nohref',
+83: EPSILON
+80: ATTRIBUTE "svg:x",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: ATTRIBUTE "svg:y",
+81: REF 'coordinate',
+82: REF 'length',
+83: DATA 'string',
+80: ATTRIBUTE "svg:width",
+81: REF 'length',
+82: DATA 'string',
+80: ATTRIBUTE "svg:height",
+81: REF 'length',
+82: DATA 'string',
+80: REF 'common-draw-viewbox-attlist',
+81: ATTRIBUTE "svg:viewBox",
+82: LIST
+83: SEQUENCE
+84: REF 'integer',
+85: DATA 'integer',
+84: REF 'integer',
+85: DATA 'integer',
+84: REF 'integer',
+85: DATA 'integer',
+84: REF 'integer',
+85: DATA 'integer',
+80: REF 'common-draw-points-attlist',
+81: ATTRIBUTE "draw:points",
+82: REF 'points',
+83: DATA 'string',
+80: CHOICE
+81: REF 'svg-title',
+81: EPSILON
+80: CHOICE
+81: REF 'svg-desc',
+81: EPSILON
+80: CHOICE
+81: REF 'office-event-listeners',
+81: EPSILON
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: REF 'svg-title',
+72: EPSILON
+71: CHOICE
+72: REF 'svg-desc',
+72: EPSILON
+71: CHOICE
+72: REF 'draw-contour-polygon',
+73: ELEMENT "draw:contour-polygon",
+74: SEQUENCE
+75: REF 'common-contour-attlist',
+76: ATTRIBUTE "draw:recreate-on-edit",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+75: REF 'common-draw-size-attlist',
+76: SEQUENCE
+77: CHOICE
+78: ATTRIBUTE "svg:width",
+79: REF 'length',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "svg:height",
+79: REF 'length',
+80: DATA 'string',
+78: EPSILON
+75: REF 'common-draw-viewbox-attlist',
+76: ATTRIBUTE "svg:viewBox",
+77: LIST
+78: SEQUENCE
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+75: REF 'common-draw-points-attlist',
+76: ATTRIBUTE "draw:points",
+77: REF 'points',
+78: DATA 'string',
+72: REF 'draw-contour-path',
+73: ELEMENT "draw:contour-path",
+74: SEQUENCE
+75: REF 'common-contour-attlist',
+76: ATTRIBUTE "draw:recreate-on-edit",
+77: REF 'boolean',
+78: CHOICE
+79: VALUE 'true',
+79: VALUE 'false',
+75: REF 'common-draw-size-attlist',
+76: SEQUENCE
+77: CHOICE
+78: ATTRIBUTE "svg:width",
+79: REF 'length',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "svg:height",
+79: REF 'length',
+80: DATA 'string',
+78: EPSILON
+75: REF 'common-draw-viewbox-attlist',
+76: ATTRIBUTE "svg:viewBox",
+77: LIST
+78: SEQUENCE
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+75: REF 'common-draw-path-data-attlist',
+76: ATTRIBUTE "svg:d",
+77: REF 'pathData',
+78: DATA 'string',
+72: EPSILON
+68: REF 'draw-measure',
+68: REF 'draw-caption',
+68: REF 'draw-connector',
+68: REF 'draw-control',
+68: REF 'dr3d-scene',
+68: REF 'draw-custom-shape',
+65: EPSILON
+61: REF 'draw-page-thumbnail',
+61: REF 'draw-frame',
+61: REF 'draw-measure',
+61: REF 'draw-caption',
+61: REF 'draw-connector',
+61: REF 'draw-control',
+61: REF 'dr3d-scene',
+61: REF 'draw-custom-shape',
+56: EPSILON
+55: REF 'table-columns-and-groups',
+56: ONEOREMORE
+57: CHOICE
+58: REF 'table-table-column-group',
+59: ELEMENT "table:table-column-group",
+60: SEQUENCE
+61: REF 'table-table-column-group-attlist',
+62: CHOICE
+63: ATTRIBUTE "table:display",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'table-columns-and-groups',
+62: ONEOREMORE
+63: CHOICE
+64: REF 'table-table-column-group',
+64: REF 'table-columns-no-group',
+65: CHOICE
+66: SEQUENCE
+67: REF 'table-columns',
+68: CHOICE
+69: REF 'table-table-columns',
+70: ELEMENT "table:table-columns",
+71: ONEOREMORE
+72: REF 'table-table-column',
+73: ELEMENT "table:table-column",
+74: REF 'table-table-column-attlist',
+75: INTERLEAVE
+76: CHOICE
+77: ATTRIBUTE "table:number-columns-repeated",
+78: REF 'positiveInteger',
+79: DATA 'positiveInteger',
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "table:style-name",
+78: REF 'styleNameRef',
+79: CHOICE
+80: DATA 'NCName',
+80: EPSILON
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "table:visibility",
+78: REF 'table-visibility-value',
+79: CHOICE
+80: VALUE 'visible',
+80: VALUE 'collapse',
+80: VALUE 'filter',
+77: EPSILON
+76: CHOICE
+77: ATTRIBUTE "table:default-cell-style-name",
+78: REF 'styleNameRef',
+79: CHOICE
+80: DATA 'NCName',
+80: EPSILON
+77: EPSILON
+69: ONEOREMORE
+70: REF 'table-table-column',
+67: CHOICE
+68: SEQUENCE
+69: REF 'table-table-header-columns',
+70: ELEMENT "table:table-header-columns",
+71: ONEOREMORE
+72: REF 'table-table-column',
+69: CHOICE
+70: REF 'table-columns',
+71: CHOICE
+72: REF 'table-table-columns',
+72: ONEOREMORE
+73: REF 'table-table-column',
+70: EPSILON
+68: EPSILON
+66: SEQUENCE
+67: REF 'table-table-header-columns',
+67: CHOICE
+68: REF 'table-columns',
+69: CHOICE
+70: REF 'table-table-columns',
+70: ONEOREMORE
+71: REF 'table-table-column',
+68: EPSILON
+58: REF 'table-columns-no-group',
+59: CHOICE
+60: SEQUENCE
+61: REF 'table-columns',
+62: CHOICE
+63: REF 'table-table-columns',
+63: ONEOREMORE
+64: REF 'table-table-column',
+61: CHOICE
+62: SEQUENCE
+63: REF 'table-table-header-columns',
+63: CHOICE
+64: REF 'table-columns',
+65: CHOICE
+66: REF 'table-table-columns',
+66: ONEOREMORE
+67: REF 'table-table-column',
+64: EPSILON
+62: EPSILON
+60: SEQUENCE
+61: REF 'table-table-header-columns',
+61: CHOICE
+62: REF 'table-columns',
+63: CHOICE
+64: REF 'table-table-columns',
+64: ONEOREMORE
+65: REF 'table-table-column',
+62: EPSILON
+55: REF 'table-rows-and-groups',
+56: ONEOREMORE
+57: CHOICE
+58: REF 'table-table-row-group',
+59: ELEMENT "table:table-row-group",
+60: SEQUENCE
+61: REF 'table-table-row-group-attlist',
+62: CHOICE
+63: ATTRIBUTE "table:display",
+64: REF 'boolean',
+65: CHOICE
+66: VALUE 'true',
+66: VALUE 'false',
+63: EPSILON
+61: REF 'table-rows-and-groups',
+62: ONEOREMORE
+63: CHOICE
+64: REF 'table-table-row-group',
+64: REF 'table-rows-no-group',
+65: CHOICE
+66: SEQUENCE
+67: REF 'table-rows',
+68: CHOICE
+69: REF 'table-table-rows',
+70: ELEMENT "table:table-rows",
+71: ONEOREMORE
+72: SEQUENCE
+73: CHOICE
+74: REF 'text-soft-page-break',
+74: EPSILON
+73: REF 'table-table-row',
+74: ELEMENT "table:table-row",
+75: SEQUENCE
+76: REF 'table-table-row-attlist',
+77: INTERLEAVE
+78: CHOICE
+79: ATTRIBUTE "table:number-rows-repeated",
+80: REF 'positiveInteger',
+81: DATA 'positiveInteger',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "table:style-name",
+80: REF 'styleNameRef',
+81: CHOICE
+82: DATA 'NCName',
+82: EPSILON
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "table:default-cell-style-name",
+80: REF 'styleNameRef',
+81: CHOICE
+82: DATA 'NCName',
+82: EPSILON
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "table:visibility",
+80: REF 'table-visibility-value',
+81: CHOICE
+82: VALUE 'visible',
+82: VALUE 'collapse',
+82: VALUE 'filter',
+79: EPSILON
+76: ONEOREMORE
+77: CHOICE
+78: REF 'table-table-cell',
+79: ELEMENT "table:table-cell",
+80: SEQUENCE
+81: REF 'table-table-cell-attlist',
+82: INTERLEAVE
+83: CHOICE
+84: ATTRIBUTE "table:number-columns-repeated",
+85: REF 'positiveInteger',
+86: DATA 'positiveInteger',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:style-name",
+85: REF 'styleNameRef',
+86: CHOICE
+87: DATA 'NCName',
+87: EPSILON
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:content-validation-name",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:formula",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: REF 'common-value-and-type-attlist',
+85: CHOICE
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'float',
+87: ATTRIBUTE "office:value",
+88: REF 'double',
+89: DATA 'double',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'percentage',
+87: ATTRIBUTE "office:value",
+88: REF 'double',
+89: DATA 'double',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'currency',
+87: ATTRIBUTE "office:value",
+88: REF 'double',
+89: DATA 'double',
+87: CHOICE
+88: ATTRIBUTE "office:currency",
+89: REF 'string',
+90: DATA 'string',
+88: EPSILON
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'date',
+87: ATTRIBUTE "office:date-value",
+88: REF 'dateOrDateTime',
+89: CHOICE
+90: DATA 'date',
+90: DATA 'dateTime',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'time',
+87: ATTRIBUTE "office:time-value",
+88: REF 'duration',
+89: DATA 'duration',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'boolean',
+87: ATTRIBUTE "office:boolean-value",
+88: REF 'boolean',
+89: CHOICE
+90: VALUE 'true',
+90: VALUE 'false',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'string',
+87: CHOICE
+88: ATTRIBUTE "office:string-value",
+89: REF 'string',
+90: DATA 'string',
+88: EPSILON
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:protect",
+85: REF 'boolean',
+86: CHOICE
+87: VALUE 'true',
+87: VALUE 'false',
+84: EPSILON
+81: REF 'table-table-cell-attlist-extra',
+82: INTERLEAVE
+83: SEQUENCE
+84: CHOICE
+85: ATTRIBUTE "table:number-columns-spanned",
+86: REF 'positiveInteger',
+87: DATA 'positiveInteger',
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "table:number-rows-spanned",
+86: REF 'positiveInteger',
+87: DATA 'positiveInteger',
+85: EPSILON
+83: SEQUENCE
+84: CHOICE
+85: ATTRIBUTE "table:number-matrix-columns-spanned",
+86: REF 'positiveInteger',
+87: DATA 'positiveInteger',
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "table:number-matrix-rows-spanned",
+86: REF 'positiveInteger',
+87: DATA 'positiveInteger',
+85: EPSILON
+81: REF 'table-table-cell-content',
+82: SEQUENCE
+83: CHOICE
+84: REF 'table-cell-range-source',
+85: ELEMENT "table:cell-range-source",
+86: SEQUENCE
+87: REF 'table-table-cell-range-source-attlist',
+88: INTERLEAVE
+89: ATTRIBUTE "table:name",
+90: REF 'string',
+91: DATA 'string',
+89: SEQUENCE
+90: ATTRIBUTE "table:last-column-spanned",
+91: REF 'positiveInteger',
+92: DATA 'positiveInteger',
+90: ATTRIBUTE "table:last-row-spanned",
+91: REF 'positiveInteger',
+92: DATA 'positiveInteger',
+87: REF 'table-linked-source-attlist',
+88: INTERLEAVE
+89: SEQUENCE
+90: CHOICE
+91: ATTRIBUTE "xlink:type",
+92: VALUE 'simple',
+91: EPSILON
+90: CHOICE
+91: ATTRIBUTE "xlink:actuate",
+92: VALUE 'onRequest',
+91: EPSILON
+90: ATTRIBUTE "xlink:href",
+91: REF 'anyURI',
+92: DATA 'anyURI',
+89: CHOICE
+90: ATTRIBUTE "table:filter-name",
+91: REF 'string',
+92: DATA 'string',
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "table:filter-options",
+91: REF 'string',
+92: DATA 'string',
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "table:refresh-delay",
+91: REF 'duration',
+92: DATA 'duration',
+90: EPSILON
+84: EPSILON
+83: CHOICE
+84: REF 'office-annotation',
+85: ELEMENT "office:annotation",
+86: SEQUENCE
+87: REF 'office-annotation-attlist',
+88: CHOICE
+89: ATTRIBUTE "office:display",
+90: REF 'boolean',
+91: CHOICE
+92: VALUE 'true',
+92: VALUE 'false',
+89: EPSILON
+87: REF 'draw-caption-attlist',
+88: INTERLEAVE
+89: CHOICE
+90: SEQUENCE
+91: ATTRIBUTE "draw:caption-point-x",
+92: REF 'coordinate',
+93: REF 'length',
+94: DATA 'string',
+91: ATTRIBUTE "draw:caption-point-y",
+92: REF 'coordinate',
+93: REF 'length',
+94: DATA 'string',
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "draw:corner-radius",
+91: REF 'nonNegativeLength',
+92: DATA 'string',
+90: EPSILON
+87: REF 'common-draw-position-attlist',
+88: SEQUENCE
+89: CHOICE
+90: ATTRIBUTE "svg:x",
+91: REF 'coordinate',
+92: REF 'length',
+93: DATA 'string',
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "svg:y",
+91: REF 'coordinate',
+92: REF 'length',
+93: DATA 'string',
+90: EPSILON
+87: REF 'common-draw-size-attlist',
+88: SEQUENCE
+89: CHOICE
+90: ATTRIBUTE "svg:width",
+91: REF 'length',
+92: DATA 'string',
+90: EPSILON
+89: CHOICE
+90: ATTRIBUTE "svg:height",
+91: REF 'length',
+92: DATA 'string',
+90: EPSILON
+87: REF 'common-draw-shape-with-text-and-styles-attlist',
+88: SEQUENCE
+89: REF 'common-draw-shape-with-styles-attlist',
+90: SEQUENCE
+91: REF 'common-draw-z-index-attlist',
+92: CHOICE
+93: ATTRIBUTE "draw:z-index",
+94: REF 'nonNegativeInteger',
+95: DATA 'nonNegativeInteger',
+93: EPSILON
+91: REF 'common-draw-id-attlist',
+92: CHOICE
+93: ATTRIBUTE "draw:id",
+94: REF 'ID',
+95: DATA 'ID',
+93: EPSILON
+91: REF 'common-draw-layer-name-attlist',
+92: CHOICE
+93: ATTRIBUTE "draw:layer",
+94: DATA 'string',
+93: EPSILON
+91: REF 'common-draw-style-name-attlist',
+92: CHOICE
+93: SEQUENCE
+94: CHOICE
+95: ATTRIBUTE "draw:style-name",
+96: REF 'styleNameRef',
+97: CHOICE
+98: DATA 'NCName',
+98: EPSILON
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "draw:class-names",
+96: REF 'styleNameRefs',
+97: LIST
+98: CHOICE
+99: ONEOREMORE
+100: DATA 'NCName',
+99: EPSILON
+95: EPSILON
+93: SEQUENCE
+94: CHOICE
+95: ATTRIBUTE "presentation:style-name",
+96: REF 'styleNameRef',
+97: CHOICE
+98: DATA 'NCName',
+98: EPSILON
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "presentation:class-names",
+96: REF 'styleNameRefs',
+97: LIST
+98: CHOICE
+99: ONEOREMORE
+100: DATA 'NCName',
+99: EPSILON
+95: EPSILON
+91: REF 'common-draw-transform-attlist',
+92: CHOICE
+93: ATTRIBUTE "draw:transform",
+94: REF 'string',
+95: DATA 'string',
+93: EPSILON
+91: REF 'common-draw-name-attlist',
+92: CHOICE
+93: ATTRIBUTE "draw:name",
+94: REF 'string',
+95: DATA 'string',
+93: EPSILON
+91: REF 'common-text-spreadsheet-shape-attlist',
+92: INTERLEAVE
+93: SEQUENCE
+94: CHOICE
+95: ATTRIBUTE "table:end-cell-address",
+96: REF 'cellAddress',
+97: DATA 'string',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "table:end-x",
+96: REF 'coordinate',
+97: REF 'length',
+98: DATA 'string',
+95: EPSILON
+94: CHOICE
+95: ATTRIBUTE "table:end-y",
+96: REF 'coordinate',
+97: REF 'length',
+98: DATA 'string',
+95: EPSILON
+93: CHOICE
+94: ATTRIBUTE "table:table-background",
+95: REF 'boolean',
+96: CHOICE
+97: VALUE 'true',
+97: VALUE 'false',
+94: EPSILON
+93: REF 'common-text-anchor-attlist',
+94: INTERLEAVE
+95: CHOICE
+96: ATTRIBUTE "text:anchor-type",
+97: CHOICE
+98: VALUE 'page',
+98: VALUE 'frame',
+98: VALUE 'paragraph',
+98: VALUE 'char',
+98: VALUE 'as-char',
+96: EPSILON
+95: CHOICE
+96: ATTRIBUTE "text:anchor-page-number",
+97: REF 'positiveInteger',
+98: DATA 'positiveInteger',
+96: EPSILON
+89: REF 'common-draw-text-style-name-attlist',
+90: CHOICE
+91: ATTRIBUTE "draw:text-style-name",
+92: REF 'styleNameRef',
+93: CHOICE
+94: DATA 'NCName',
+94: EPSILON
+91: EPSILON
+87: CHOICE
+88: REF 'dc-creator',
+88: EPSILON
+87: CHOICE
+88: REF 'dc-date',
+88: EPSILON
+87: CHOICE
+88: REF 'meta-date-string',
+89: ELEMENT "meta:date-string",
+90: REF 'string',
+91: DATA 'string',
+88: EPSILON
+87: CHOICE
+88: ONEOREMORE
+89: CHOICE
+90: REF 'text-p',
+90: REF 'text-list',
+88: EPSILON
+84: EPSILON
+83: CHOICE
+84: REF 'table-detective',
+85: ELEMENT "table:detective",
+86: SEQUENCE
+87: CHOICE
+88: ONEOREMORE
+89: REF 'table-highlighted-range',
+90: ELEMENT "table:highlighted-range",
+91: CHOICE
+92: REF 'table-highlighted-range-attlist',
+93: INTERLEAVE
+94: CHOICE
+95: ATTRIBUTE "table:cell-range-address",
+96: REF 'cellRangeAddress',
+97: DATA 'string',
+95: EPSILON
+94: ATTRIBUTE "table:direction",
+95: CHOICE
+96: VALUE 'from-another-table',
+96: VALUE 'to-another-table',
+96: VALUE 'from-same-table',
+94: CHOICE
+95: ATTRIBUTE "table:contains-error",
+96: REF 'boolean',
+97: CHOICE
+98: VALUE 'true',
+98: VALUE 'false',
+95: EPSILON
+92: REF 'table-highlighted-range-attlist-invalid',
+93: ATTRIBUTE "table:marked-invalid",
+94: REF 'boolean',
+95: CHOICE
+96: VALUE 'true',
+96: VALUE 'false',
+88: EPSILON
+87: CHOICE
+88: ONEOREMORE
+89: REF 'table-operation',
+90: ELEMENT "table:operation",
+91: REF 'table-operation-attlist',
+92: INTERLEAVE
+93: ATTRIBUTE "table:name",
+94: CHOICE
+95: VALUE 'trace-dependents',
+95: VALUE 'remove-dependents',
+95: VALUE 'trace-precedents',
+95: VALUE 'remove-precedents',
+95: VALUE 'trace-errors',
+93: ATTRIBUTE "table:index",
+94: REF 'nonNegativeInteger',
+95: DATA 'nonNegativeInteger',
+88: EPSILON
+84: EPSILON
+83: CHOICE
+84: ONEOREMORE
+85: REF 'text-content',
+86: CHOICE
+87: REF 'text-h',
+87: REF 'text-p',
+87: REF 'text-list',
+87: REF 'text-numbered-paragraph',
+87: REF 'table-table',
+87: REF 'draw-a',
+87: REF 'text-section',
+87: REF 'text-soft-page-break',
+87: REF 'text-table-of-content',
+87: REF 'text-illustration-index',
+87: REF 'text-table-index',
+87: REF 'text-object-index',
+87: REF 'text-user-index',
+87: REF 'text-alphabetical-index',
+87: REF 'text-bibliography',
+87: REF 'shape',
+88: CHOICE
+89: REF 'draw-rect',
+89: REF 'draw-line',
+89: REF 'draw-polyline',
+89: REF 'draw-polygon',
+89: REF 'draw-regular-polygon',
+89: REF 'draw-path',
+89: REF 'draw-circle',
+89: REF 'draw-ellipse',
+89: REF 'draw-g',
+89: REF 'draw-page-thumbnail',
+89: REF 'draw-frame',
+89: REF 'draw-measure',
+89: REF 'draw-caption',
+89: REF 'draw-connector',
+89: REF 'draw-control',
+89: REF 'dr3d-scene',
+89: REF 'draw-custom-shape',
+87: REF 'change-marks',
+88: CHOICE
+84: EPSILON
+78: REF 'table-covered-table-cell',
+79: ELEMENT "table:covered-table-cell",
+80: SEQUENCE
+81: REF 'table-table-cell-attlist',
+82: INTERLEAVE
+83: CHOICE
+84: ATTRIBUTE "table:number-columns-repeated",
+85: REF 'positiveInteger',
+86: DATA 'positiveInteger',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:style-name",
+85: REF 'styleNameRef',
+86: CHOICE
+87: DATA 'NCName',
+87: EPSILON
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:content-validation-name",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:formula",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: REF 'common-value-and-type-attlist',
+85: CHOICE
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'float',
+87: ATTRIBUTE "office:value",
+88: REF 'double',
+89: DATA 'double',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'percentage',
+87: ATTRIBUTE "office:value",
+88: REF 'double',
+89: DATA 'double',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'currency',
+87: ATTRIBUTE "office:value",
+88: REF 'double',
+89: DATA 'double',
+87: CHOICE
+88: ATTRIBUTE "office:currency",
+89: REF 'string',
+90: DATA 'string',
+88: EPSILON
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'date',
+87: ATTRIBUTE "office:date-value",
+88: REF 'dateOrDateTime',
+89: CHOICE
+90: DATA 'date',
+90: DATA 'dateTime',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'time',
+87: ATTRIBUTE "office:time-value",
+88: REF 'duration',
+89: DATA 'duration',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'boolean',
+87: ATTRIBUTE "office:boolean-value",
+88: REF 'boolean',
+89: CHOICE
+90: VALUE 'true',
+90: VALUE 'false',
+86: SEQUENCE
+87: ATTRIBUTE "office:value-type",
+88: VALUE 'string',
+87: CHOICE
+88: ATTRIBUTE "office:string-value",
+89: REF 'string',
+90: DATA 'string',
+88: EPSILON
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "table:protect",
+85: REF 'boolean',
+86: CHOICE
+87: VALUE 'true',
+87: VALUE 'false',
+84: EPSILON
+81: REF 'table-table-cell-content',
+82: SEQUENCE
+83: CHOICE
+84: REF 'table-cell-range-source',
+84: EPSILON
+83: CHOICE
+84: REF 'office-annotation',
+84: EPSILON
+83: CHOICE
+84: REF 'table-detective',
+84: EPSILON
+83: CHOICE
+84: ONEOREMORE
+85: REF 'text-content',
+86: CHOICE
+87: REF 'text-h',
+87: REF 'text-p',
+87: REF 'text-list',
+87: REF 'text-numbered-paragraph',
+87: REF 'table-table',
+87: REF 'draw-a',
+87: REF 'text-section',
+87: REF 'text-soft-page-break',
+87: REF 'text-table-of-content',
+87: REF 'text-illustration-index',
+87: REF 'text-table-index',
+87: REF 'text-object-index',
+87: REF 'text-user-index',
+87: REF 'text-alphabetical-index',
+87: REF 'text-bibliography',
+87: REF 'shape',
+88: CHOICE
+89: REF 'draw-rect',
+89: REF 'draw-line',
+89: REF 'draw-polyline',
+89: REF 'draw-polygon',
+89: REF 'draw-regular-polygon',
+89: REF 'draw-path',
+89: REF 'draw-circle',
+89: REF 'draw-ellipse',
+89: REF 'draw-g',
+89: REF 'draw-page-thumbnail',
+89: REF 'draw-frame',
+89: REF 'draw-measure',
+89: REF 'draw-caption',
+89: REF 'draw-connector',
+89: REF 'draw-control',
+89: REF 'dr3d-scene',
+89: REF 'draw-custom-shape',
+87: REF 'change-marks',
+88: CHOICE
+84: EPSILON
+69: ONEOREMORE
+70: SEQUENCE
+71: CHOICE
+72: REF 'text-soft-page-break',
+72: EPSILON
+71: REF 'table-table-row',
+67: CHOICE
+68: SEQUENCE
+69: REF 'table-table-header-rows',
+70: ELEMENT "table:table-header-rows",
+71: ONEOREMORE
+72: SEQUENCE
+73: CHOICE
+74: REF 'text-soft-page-break',
+74: EPSILON
+73: REF 'table-table-row',
+69: CHOICE
+70: REF 'table-rows',
+71: CHOICE
+72: REF 'table-table-rows',
+72: ONEOREMORE
+73: SEQUENCE
+74: CHOICE
+75: REF 'text-soft-page-break',
+75: EPSILON
+74: REF 'table-table-row',
+70: EPSILON
+68: EPSILON
+66: SEQUENCE
+67: REF 'table-table-header-rows',
+67: CHOICE
+68: REF 'table-rows',
+69: CHOICE
+70: REF 'table-table-rows',
+70: ONEOREMORE
+71: SEQUENCE
+72: CHOICE
+73: REF 'text-soft-page-break',
+73: EPSILON
+72: REF 'table-table-row',
+68: EPSILON
+58: REF 'table-rows-no-group',
+59: CHOICE
+60: SEQUENCE
+61: REF 'table-rows',
+62: CHOICE
+63: REF 'table-table-rows',
+63: ONEOREMORE
+64: SEQUENCE
+65: CHOICE
+66: REF 'text-soft-page-break',
+66: EPSILON
+65: REF 'table-table-row',
+61: CHOICE
+62: SEQUENCE
+63: REF 'table-table-header-rows',
+63: CHOICE
+64: REF 'table-rows',
+65: CHOICE
+66: REF 'table-table-rows',
+66: ONEOREMORE
+67: SEQUENCE
+68: CHOICE
+69: REF 'text-soft-page-break',
+69: EPSILON
+68: REF 'table-table-row',
+64: EPSILON
+62: EPSILON
+60: SEQUENCE
+61: REF 'table-table-header-rows',
+61: CHOICE
+62: REF 'table-rows',
+63: CHOICE
+64: REF 'table-table-rows',
+64: ONEOREMORE
+65: SEQUENCE
+66: CHOICE
+67: REF 'text-soft-page-break',
+67: EPSILON
+66: REF 'table-table-row',
+62: EPSILON
+52: REF 'draw-a',
+52: REF 'text-section',
+52: REF 'text-soft-page-break',
+52: REF 'text-table-of-content',
+52: REF 'text-illustration-index',
+52: REF 'text-table-index',
+52: REF 'text-object-index',
+52: REF 'text-user-index',
+52: REF 'text-alphabetical-index',
+52: REF 'text-bibliography',
+52: REF 'shape',
+53: CHOICE
+54: REF 'draw-rect',
+54: REF 'draw-line',
+54: REF 'draw-polyline',
+54: REF 'draw-polygon',
+54: REF 'draw-regular-polygon',
+54: REF 'draw-path',
+54: REF 'draw-circle',
+54: REF 'draw-ellipse',
+54: REF 'draw-g',
+54: REF 'draw-page-thumbnail',
+54: REF 'draw-frame',
+54: REF 'draw-measure',
+54: REF 'draw-caption',
+54: REF 'draw-connector',
+54: REF 'draw-control',
+54: REF 'dr3d-scene',
+54: REF 'draw-custom-shape',
+52: REF 'change-marks',
+53: CHOICE
+49: EPSILON
+45: ELEMENT "text:ruby",
+46: SEQUENCE
+47: CHOICE
+48: ATTRIBUTE "text:style-name",
+49: REF 'styleNameRef',
+50: CHOICE
+51: DATA 'NCName',
+51: EPSILON
+48: EPSILON
+47: ELEMENT "text:ruby-base",
+48: REF 'paragraph-content',
+49: CHOICE
+50: STRING
+47: ELEMENT "text:ruby-text",
+48: SEQUENCE
+49: CHOICE
+50: ATTRIBUTE "text:style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+49: STRING
+45: REF 'office-annotation',
+45: REF 'change-marks',
+46: CHOICE
+45: REF 'shape',
+46: CHOICE
+47: REF 'draw-rect',
+47: REF 'draw-line',
+47: REF 'draw-polyline',
+47: REF 'draw-polygon',
+47: REF 'draw-regular-polygon',
+47: REF 'draw-path',
+47: REF 'draw-circle',
+47: REF 'draw-ellipse',
+47: REF 'draw-g',
+47: REF 'draw-page-thumbnail',
+47: REF 'draw-frame',
+47: REF 'draw-measure',
+47: REF 'draw-caption',
+47: REF 'draw-connector',
+47: REF 'draw-control',
+47: REF 'dr3d-scene',
+47: REF 'draw-custom-shape',
+45: REF 'draw-a',
+45: ELEMENT "text:date",
+46: SEQUENCE
+47: REF 'text-date-attlist',
+48: INTERLEAVE
+49: REF 'common-field-fixed-attlist',
+50: CHOICE
+51: ATTRIBUTE "text:fixed",
+52: REF 'boolean',
+53: CHOICE
+54: VALUE 'true',
+54: VALUE 'false',
+51: EPSILON
+49: REF 'common-field-data-style-name-attlist',
+50: CHOICE
+51: ATTRIBUTE "style:data-style-name",
+52: REF 'styleNameRef',
+53: CHOICE
+54: DATA 'NCName',
+54: EPSILON
+51: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:date-value",
+51: REF 'dateOrDateTime',
+52: CHOICE
+53: DATA 'date',
+53: DATA 'dateTime',
+50: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:date-adjust",
+51: REF 'duration',
+52: DATA 'duration',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:time",
+46: SEQUENCE
+47: REF 'text-time-attlist',
+48: INTERLEAVE
+49: REF 'common-field-fixed-attlist',
+50: CHOICE
+51: ATTRIBUTE "text:fixed",
+52: REF 'boolean',
+53: CHOICE
+54: VALUE 'true',
+54: VALUE 'false',
+51: EPSILON
+49: REF 'common-field-data-style-name-attlist',
+50: CHOICE
+51: ATTRIBUTE "style:data-style-name",
+52: REF 'styleNameRef',
+53: CHOICE
+54: DATA 'NCName',
+54: EPSILON
+51: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:time-value",
+51: REF 'timeOrDateTime',
+52: CHOICE
+53: DATA 'time',
+53: DATA 'dateTime',
+50: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:time-adjust",
+51: REF 'duration',
+52: DATA 'duration',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:page-number",
+46: SEQUENCE
+47: REF 'text-page-number-attlist',
+48: INTERLEAVE
+49: REF 'common-field-num-format-attlist',
+50: CHOICE
+51: REF 'common-num-format-attlist',
+52: CHOICE
+53: ATTRIBUTE "style:num-format",
+54: CHOICE
+55: VALUE '1',
+55: VALUE 'i',
+55: VALUE 'I',
+55: REF 'string',
+56: DATA 'string',
+55: EPSILON
+53: SEQUENCE
+54: ATTRIBUTE "style:num-format",
+55: CHOICE
+56: VALUE 'a',
+56: VALUE 'A',
+54: REF 'style-num-letter-sync-attlist',
+55: CHOICE
+56: ATTRIBUTE "style:num-letter-sync",
+57: REF 'boolean',
+58: CHOICE
+59: VALUE 'true',
+59: VALUE 'false',
+56: EPSILON
+53: EPSILON
+51: EPSILON
+49: REF 'common-field-fixed-attlist',
+50: CHOICE
+51: ATTRIBUTE "text:fixed",
+52: REF 'boolean',
+53: CHOICE
+54: VALUE 'true',
+54: VALUE 'false',
+51: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:page-adjust",
+51: REF 'integer',
+52: DATA 'integer',
+50: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:select-page",
+51: CHOICE
+52: VALUE 'previous',
+52: VALUE 'current',
+52: VALUE 'next',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:page-continuation",
+46: SEQUENCE
+47: REF 'text-page-continuation-attlist',
+48: INTERLEAVE
+49: ATTRIBUTE "text:select-page",
+50: CHOICE
+51: VALUE 'previous',
+51: VALUE 'next',
+49: CHOICE
+50: ATTRIBUTE "text:string-value",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:sender-firstname",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-lastname",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-initials",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-title",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-position",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-email",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-phone-private",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-fax",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-company",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-phone-work",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-street",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-city",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-postal-code",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-country",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sender-state-or-province",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:author-name",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:author-initials",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:chapter",
+46: SEQUENCE
+47: REF 'text-chapter-attlist',
+48: INTERLEAVE
+49: ATTRIBUTE "text:display",
+50: CHOICE
+51: VALUE 'name',
+51: VALUE 'number',
+51: VALUE 'number-and-name',
+51: VALUE 'plain-number-and-name',
+51: VALUE 'plain-number',
+49: ATTRIBUTE "text:outline-level",
+50: REF 'nonNegativeInteger',
+51: DATA 'nonNegativeInteger',
+47: STRING
+45: ELEMENT "text:file-name",
+46: SEQUENCE
+47: REF 'text-file-name-attlist',
+48: INTERLEAVE
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'full',
+52: VALUE 'path',
+52: VALUE 'name',
+52: VALUE 'name-and-extension',
+50: EPSILON
+49: REF 'common-field-fixed-attlist',
+50: CHOICE
+51: ATTRIBUTE "text:fixed",
+52: REF 'boolean',
+53: CHOICE
+54: VALUE 'true',
+54: VALUE 'false',
+51: EPSILON
+47: STRING
+45: ELEMENT "text:template-name",
+46: SEQUENCE
+47: REF 'text-template-name-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:display",
+50: CHOICE
+51: VALUE 'full',
+51: VALUE 'path',
+51: VALUE 'name',
+51: VALUE 'name-and-extension',
+51: VALUE 'area',
+51: VALUE 'title',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:sheet-name",
+46: STRING
+45: ELEMENT "text:variable-set",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-name-attlist',
+49: ATTRIBUTE "text:name",
+50: REF 'variableName',
+51: DATA 'string',
+48: REF 'common-field-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:formula",
+51: REF 'formula',
+52: DATA 'string',
+50: EPSILON
+48: REF 'common-value-and-type-attlist',
+49: CHOICE
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'float',
+51: ATTRIBUTE "office:value",
+52: REF 'double',
+53: DATA 'double',
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'percentage',
+51: ATTRIBUTE "office:value",
+52: REF 'double',
+53: DATA 'double',
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'currency',
+51: ATTRIBUTE "office:value",
+52: REF 'double',
+53: DATA 'double',
+51: CHOICE
+52: ATTRIBUTE "office:currency",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'date',
+51: ATTRIBUTE "office:date-value",
+52: REF 'dateOrDateTime',
+53: CHOICE
+54: DATA 'date',
+54: DATA 'dateTime',
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'time',
+51: ATTRIBUTE "office:time-value",
+52: REF 'duration',
+53: DATA 'duration',
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'boolean',
+51: ATTRIBUTE "office:boolean-value",
+52: REF 'boolean',
+53: CHOICE
+54: VALUE 'true',
+54: VALUE 'false',
+50: SEQUENCE
+51: ATTRIBUTE "office:value-type",
+52: VALUE 'string',
+51: CHOICE
+52: ATTRIBUTE "office:string-value",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+48: REF 'common-field-display-value-none-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'value',
+52: VALUE 'none',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:variable-get",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-name-attlist',
+49: ATTRIBUTE "text:name",
+50: REF 'variableName',
+51: DATA 'string',
+48: REF 'common-field-display-value-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'value',
+52: VALUE 'formula',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:variable-input",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-name-attlist',
+49: ATTRIBUTE "text:name",
+50: REF 'variableName',
+51: DATA 'string',
+48: REF 'common-field-description-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:description",
+51: STRING
+50: EPSILON
+48: REF 'common-value-type-attlist',
+49: ATTRIBUTE "office:value-type",
+50: REF 'valueType',
+51: CHOICE
+52: VALUE 'float',
+52: VALUE 'time',
+52: VALUE 'date',
+52: VALUE 'percentage',
+52: VALUE 'currency',
+52: VALUE 'boolean',
+52: VALUE 'string',
+48: REF 'common-field-display-value-none-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'value',
+52: VALUE 'none',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:user-field-get",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-name-attlist',
+49: ATTRIBUTE "text:name",
+50: REF 'variableName',
+51: DATA 'string',
+48: REF 'common-field-display-value-formula-none-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'value',
+52: VALUE 'formula',
+52: VALUE 'none',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:user-field-input",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-name-attlist',
+49: ATTRIBUTE "text:name",
+50: REF 'variableName',
+51: DATA 'string',
+48: REF 'common-field-description-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:description",
+51: STRING
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:sequence",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-name-attlist',
+49: ATTRIBUTE "text:name",
+50: REF 'variableName',
+51: DATA 'string',
+48: REF 'common-field-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:formula",
+51: REF 'formula',
+52: DATA 'string',
+50: EPSILON
+48: REF 'common-field-num-format-attlist',
+49: CHOICE
+50: REF 'common-num-format-attlist',
+51: CHOICE
+52: ATTRIBUTE "style:num-format",
+53: CHOICE
+54: VALUE '1',
+54: VALUE 'i',
+54: VALUE 'I',
+54: REF 'string',
+55: DATA 'string',
+54: EPSILON
+52: SEQUENCE
+53: ATTRIBUTE "style:num-format",
+54: CHOICE
+55: VALUE 'a',
+55: VALUE 'A',
+53: REF 'style-num-letter-sync-attlist',
+54: CHOICE
+55: ATTRIBUTE "style:num-letter-sync",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+52: EPSILON
+50: EPSILON
+48: REF 'text-sequence-ref-name',
+49: CHOICE
+50: ATTRIBUTE "text:ref-name",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:expression",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:formula",
+51: REF 'formula',
+52: DATA 'string',
+50: EPSILON
+48: CHOICE
+49: REF 'common-value-and-type-attlist',
+50: CHOICE
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'float',
+52: ATTRIBUTE "office:value",
+53: REF 'double',
+54: DATA 'double',
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'percentage',
+52: ATTRIBUTE "office:value",
+53: REF 'double',
+54: DATA 'double',
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'currency',
+52: ATTRIBUTE "office:value",
+53: REF 'double',
+54: DATA 'double',
+52: CHOICE
+53: ATTRIBUTE "office:currency",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'date',
+52: ATTRIBUTE "office:date-value",
+53: REF 'dateOrDateTime',
+54: CHOICE
+55: DATA 'date',
+55: DATA 'dateTime',
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'time',
+52: ATTRIBUTE "office:time-value",
+53: REF 'duration',
+54: DATA 'duration',
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'boolean',
+52: ATTRIBUTE "office:boolean-value",
+53: REF 'boolean',
+54: CHOICE
+55: VALUE 'true',
+55: VALUE 'false',
+51: SEQUENCE
+52: ATTRIBUTE "office:value-type",
+53: VALUE 'string',
+52: CHOICE
+53: ATTRIBUTE "office:string-value",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+49: EPSILON
+48: REF 'common-field-display-value-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'value',
+52: VALUE 'formula',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:text-input",
+46: SEQUENCE
+47: REF 'common-field-description-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:description",
+50: STRING
+49: EPSILON
+47: STRING
+45: ELEMENT "text:initial-creator",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:creation-date",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:date-value",
+50: REF 'dateOrDateTime',
+51: CHOICE
+52: DATA 'date',
+52: DATA 'dateTime',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:creation-time",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:time-value",
+50: REF 'timeOrDateTime',
+51: CHOICE
+52: DATA 'time',
+52: DATA 'dateTime',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:description",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:user-defined",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: ATTRIBUTE "text:name",
+49: REF 'string',
+50: DATA 'string',
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "office:value",
+50: REF 'double',
+51: DATA 'double',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "office:date-value",
+50: REF 'dateOrDateTime',
+51: CHOICE
+52: DATA 'date',
+52: DATA 'dateTime',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "office:time-value",
+50: REF 'duration',
+51: DATA 'duration',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "office:boolean-value",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "office:string-value",
+50: REF 'string',
+51: DATA 'string',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:print-time",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:time-value",
+50: REF 'time',
+51: DATA 'time',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:print-date",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:date-value",
+50: REF 'date',
+51: DATA 'date',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:printed-by",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:title",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:subject",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:keywords",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:editing-cycles",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:editing-duration",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:duration",
+50: REF 'duration',
+51: DATA 'duration',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:modification-time",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:time-value",
+50: REF 'time',
+51: DATA 'time',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:modification-date",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-fixed-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:fixed",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:date-value",
+50: REF 'date',
+51: DATA 'date',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:creator",
+46: SEQUENCE
+47: REF 'common-field-fixed-attlist',
+48: CHOICE
+49: ATTRIBUTE "text:fixed",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:page-count", "text:paragraph-count", "text:word-count", "text:character-count", "text:table-count", "text:image-count", "text:object-count",
+46: SEQUENCE
+47: REF 'common-field-num-format-attlist',
+48: CHOICE
+49: REF 'common-num-format-attlist',
+50: CHOICE
+51: ATTRIBUTE "style:num-format",
+52: CHOICE
+53: VALUE '1',
+53: VALUE 'i',
+53: VALUE 'I',
+53: REF 'string',
+54: DATA 'string',
+53: EPSILON
+51: SEQUENCE
+52: ATTRIBUTE "style:num-format",
+53: CHOICE
+54: VALUE 'a',
+54: VALUE 'A',
+52: REF 'style-num-letter-sync-attlist',
+53: CHOICE
+54: ATTRIBUTE "style:num-letter-sync",
+55: REF 'boolean',
+56: CHOICE
+57: VALUE 'true',
+57: VALUE 'false',
+54: EPSILON
+51: EPSILON
+49: EPSILON
+47: STRING
+45: ELEMENT "text:database-display",
+46: SEQUENCE
+47: REF 'text-database-display-attlist',
+48: INTERLEAVE
+49: REF 'common-field-database-table',
+50: SEQUENCE
+51: REF 'common-field-database-table-attlist',
+52: INTERLEAVE
+53: ATTRIBUTE "text:table-name",
+54: REF 'string',
+55: DATA 'string',
+53: CHOICE
+54: ATTRIBUTE "text:table-type",
+55: CHOICE
+56: VALUE 'table',
+56: VALUE 'query',
+56: VALUE 'command',
+54: EPSILON
+51: REF 'common-field-database-name',
+52: CHOICE
+53: ATTRIBUTE "text:database-name",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+53: REF 'form-connection-resource',
+49: REF 'common-field-data-style-name-attlist',
+50: CHOICE
+51: ATTRIBUTE "style:data-style-name",
+52: REF 'styleNameRef',
+53: CHOICE
+54: DATA 'NCName',
+54: EPSILON
+51: EPSILON
+49: ATTRIBUTE "text:column-name",
+50: REF 'string',
+51: DATA 'string',
+47: STRING
+45: ELEMENT "text:database-next",
+46: REF 'text-database-next-attlist',
+47: INTERLEAVE
+48: REF 'common-field-database-table',
+49: SEQUENCE
+50: REF 'common-field-database-table-attlist',
+51: INTERLEAVE
+52: ATTRIBUTE "text:table-name",
+53: REF 'string',
+54: DATA 'string',
+52: CHOICE
+53: ATTRIBUTE "text:table-type",
+54: CHOICE
+55: VALUE 'table',
+55: VALUE 'query',
+55: VALUE 'command',
+53: EPSILON
+50: REF 'common-field-database-name',
+51: CHOICE
+52: ATTRIBUTE "text:database-name",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+52: REF 'form-connection-resource',
+48: CHOICE
+49: ATTRIBUTE "text:condition",
+50: REF 'formula',
+51: DATA 'string',
+49: EPSILON
+45: ELEMENT "text:database-row-select",
+46: REF 'text-database-row-select-attlist',
+47: INTERLEAVE
+48: REF 'common-field-database-table',
+49: SEQUENCE
+50: REF 'common-field-database-table-attlist',
+51: INTERLEAVE
+52: ATTRIBUTE "text:table-name",
+53: REF 'string',
+54: DATA 'string',
+52: CHOICE
+53: ATTRIBUTE "text:table-type",
+54: CHOICE
+55: VALUE 'table',
+55: VALUE 'query',
+55: VALUE 'command',
+53: EPSILON
+50: REF 'common-field-database-name',
+51: CHOICE
+52: ATTRIBUTE "text:database-name",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+52: REF 'form-connection-resource',
+48: CHOICE
+49: ATTRIBUTE "text:condition",
+50: REF 'formula',
+51: DATA 'string',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:row-number",
+50: REF 'nonNegativeInteger',
+51: DATA 'nonNegativeInteger',
+49: EPSILON
+45: ELEMENT "text:database-row-number",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-database-table',
+49: SEQUENCE
+50: REF 'common-field-database-table-attlist',
+51: INTERLEAVE
+52: ATTRIBUTE "text:table-name",
+53: REF 'string',
+54: DATA 'string',
+52: CHOICE
+53: ATTRIBUTE "text:table-type",
+54: CHOICE
+55: VALUE 'table',
+55: VALUE 'query',
+55: VALUE 'command',
+53: EPSILON
+50: REF 'common-field-database-name',
+51: CHOICE
+52: ATTRIBUTE "text:database-name",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+52: REF 'form-connection-resource',
+48: REF 'common-field-num-format-attlist',
+49: CHOICE
+50: REF 'common-num-format-attlist',
+51: CHOICE
+52: ATTRIBUTE "style:num-format",
+53: CHOICE
+54: VALUE '1',
+54: VALUE 'i',
+54: VALUE 'I',
+54: REF 'string',
+55: DATA 'string',
+54: EPSILON
+52: SEQUENCE
+53: ATTRIBUTE "style:num-format",
+54: CHOICE
+55: VALUE 'a',
+55: VALUE 'A',
+53: REF 'style-num-letter-sync-attlist',
+54: CHOICE
+55: ATTRIBUTE "style:num-letter-sync",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+52: EPSILON
+50: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:value",
+50: REF 'nonNegativeInteger',
+51: DATA 'nonNegativeInteger',
+49: EPSILON
+47: STRING
+45: ELEMENT "text:database-name",
+46: SEQUENCE
+47: REF 'common-field-database-table',
+48: SEQUENCE
+49: REF 'common-field-database-table-attlist',
+50: INTERLEAVE
+51: ATTRIBUTE "text:table-name",
+52: REF 'string',
+53: DATA 'string',
+51: CHOICE
+52: ATTRIBUTE "text:table-type",
+53: CHOICE
+54: VALUE 'table',
+54: VALUE 'query',
+54: VALUE 'command',
+52: EPSILON
+49: REF 'common-field-database-name',
+50: CHOICE
+51: ATTRIBUTE "text:database-name",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+51: REF 'form-connection-resource',
+47: STRING
+45: ELEMENT "text:page-variable-set",
+46: SEQUENCE
+47: REF 'text-set-page-variable-attlist',
+48: INTERLEAVE
+49: CHOICE
+50: ATTRIBUTE "text:active",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:page-adjust",
+51: REF 'integer',
+52: DATA 'integer',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:page-variable-get",
+46: SEQUENCE
+47: REF 'text-get-page-variable-attlist',
+48: REF 'common-field-num-format-attlist',
+49: CHOICE
+50: REF 'common-num-format-attlist',
+51: CHOICE
+52: ATTRIBUTE "style:num-format",
+53: CHOICE
+54: VALUE '1',
+54: VALUE 'i',
+54: VALUE 'I',
+54: REF 'string',
+55: DATA 'string',
+54: EPSILON
+52: SEQUENCE
+53: ATTRIBUTE "style:num-format",
+54: CHOICE
+55: VALUE 'a',
+55: VALUE 'A',
+53: REF 'style-num-letter-sync-attlist',
+54: CHOICE
+55: ATTRIBUTE "style:num-letter-sync",
+56: REF 'boolean',
+57: CHOICE
+58: VALUE 'true',
+58: VALUE 'false',
+55: EPSILON
+52: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:placeholder",
+46: SEQUENCE
+47: REF 'text-placeholder-attlist',
+48: INTERLEAVE
+49: ATTRIBUTE "text:placeholder-type",
+50: CHOICE
+51: VALUE 'text',
+51: VALUE 'table',
+51: VALUE 'text-box',
+51: VALUE 'image',
+51: VALUE 'object',
+49: REF 'common-field-description-attlist',
+50: CHOICE
+51: ATTRIBUTE "text:description",
+52: STRING
+51: EPSILON
+47: STRING
+45: ELEMENT "text:conditional-text",
+46: SEQUENCE
+47: REF 'text-conditional-text-attlist',
+48: INTERLEAVE
+49: ATTRIBUTE "text:condition",
+50: REF 'formula',
+51: DATA 'string',
+49: ATTRIBUTE "text:string-value-if-true",
+50: REF 'string',
+51: DATA 'string',
+49: ATTRIBUTE "text:string-value-if-false",
+50: REF 'string',
+51: DATA 'string',
+49: CHOICE
+50: ATTRIBUTE "text:current-value",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:hidden-text",
+46: SEQUENCE
+47: REF 'text-hidden-text-attlist',
+48: INTERLEAVE
+49: ATTRIBUTE "text:condition",
+50: REF 'formula',
+51: DATA 'string',
+49: ATTRIBUTE "text:string-value",
+50: REF 'string',
+51: DATA 'string',
+49: CHOICE
+50: ATTRIBUTE "text:is-hidden",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:reference-ref", "text:bookmark-ref",
+46: INTERLEAVE
+47: REF 'text-common-ref-content',
+48: INTERLEAVE
+49: STRING
+49: CHOICE
+50: ATTRIBUTE "text:ref-name",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+47: REF 'text-ref-content',
+48: CHOICE
+49: ATTRIBUTE "text:reference-format",
+50: CHOICE
+51: VALUE 'page',
+51: VALUE 'chapter',
+51: VALUE 'direction',
+51: VALUE 'text',
+49: EPSILON
+45: ELEMENT "text:note-ref",
+46: INTERLEAVE
+47: REF 'text-common-ref-content',
+48: INTERLEAVE
+49: STRING
+49: CHOICE
+50: ATTRIBUTE "text:ref-name",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+47: REF 'text-note-ref-content',
+48: REF 'text-note-class',
+49: ATTRIBUTE "text:note-class",
+50: CHOICE
+51: VALUE 'footnote',
+51: VALUE 'endnote',
+47: REF 'text-ref-content',
+48: CHOICE
+49: ATTRIBUTE "text:reference-format",
+50: CHOICE
+51: VALUE 'page',
+51: VALUE 'chapter',
+51: VALUE 'direction',
+51: VALUE 'text',
+49: EPSILON
+45: ELEMENT "text:sequence-ref",
+46: INTERLEAVE
+47: REF 'text-common-ref-content',
+48: INTERLEAVE
+49: STRING
+49: CHOICE
+50: ATTRIBUTE "text:ref-name",
+51: REF 'string',
+52: DATA 'string',
+50: EPSILON
+47: REF 'text-sequence-ref-content',
+48: CHOICE
+49: ATTRIBUTE "text:reference-format",
+50: CHOICE
+51: VALUE 'page',
+51: VALUE 'chapter',
+51: VALUE 'direction',
+51: VALUE 'text',
+51: VALUE 'category-and-value',
+51: VALUE 'caption',
+51: VALUE 'value',
+49: EPSILON
+45: ELEMENT "text:script",
+46: INTERLEAVE
+47: CHOICE
+48: SEQUENCE
+49: ATTRIBUTE "xlink:href",
+50: REF 'anyURI',
+51: DATA 'anyURI',
+49: CHOICE
+50: ATTRIBUTE "xlink:type",
+51: VALUE 'simple',
+50: EPSILON
+48: STRING
+47: CHOICE
+48: ATTRIBUTE "script:language",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+45: ELEMENT "text:execute-macro",
+46: SEQUENCE
+47: CHOICE
+48: ATTRIBUTE "text:name",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: CHOICE
+48: REF 'office-event-listeners',
+48: EPSILON
+47: STRING
+45: ELEMENT "text:hidden-paragraph",
+46: SEQUENCE
+47: REF 'text-hidden-paragraph-attlist',
+48: INTERLEAVE
+49: ATTRIBUTE "text:condition",
+50: REF 'formula',
+51: DATA 'string',
+49: CHOICE
+50: ATTRIBUTE "text:is-hidden",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+47: STRING
+45: ELEMENT "text:dde-connection",
+46: SEQUENCE
+47: ATTRIBUTE "text:connection-name",
+48: REF 'string',
+49: DATA 'string',
+47: STRING
+45: ELEMENT "text:measure",
+46: SEQUENCE
+47: ATTRIBUTE "text:kind",
+48: CHOICE
+49: VALUE 'value',
+49: VALUE 'unit',
+49: VALUE 'gap',
+47: STRING
+45: ELEMENT "text:table-formula",
+46: SEQUENCE
+47: INTERLEAVE
+48: REF 'common-field-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:formula",
+51: REF 'formula',
+52: DATA 'string',
+50: EPSILON
+48: REF 'common-field-display-value-formula-attlist',
+49: CHOICE
+50: ATTRIBUTE "text:display",
+51: CHOICE
+52: VALUE 'value',
+52: VALUE 'formula',
+50: EPSILON
+48: REF 'common-field-data-style-name-attlist',
+49: CHOICE
+50: ATTRIBUTE "style:data-style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: EPSILON
+47: STRING
+45: ELEMENT "text:toc-mark-start",
+46: REF 'text-toc-mark-start-attrs',
+47: SEQUENCE
+48: REF 'text-id',
+49: ATTRIBUTE "text:id",
+50: REF 'string',
+51: DATA 'string',
+48: REF 'text-outline-level',
+49: CHOICE
+50: ATTRIBUTE "text:outline-level",
+51: REF 'positiveInteger',
+52: DATA 'positiveInteger',
+50: EPSILON
+45: ELEMENT "text:toc-mark-end",
+46: REF 'text-id',
+47: ATTRIBUTE "text:id",
+48: REF 'string',
+49: DATA 'string',
+45: ELEMENT "text:toc-mark",
+46: SEQUENCE
+47: ATTRIBUTE "text:string-value",
+48: REF 'string',
+49: DATA 'string',
+47: REF 'text-outline-level',
+48: CHOICE
+49: ATTRIBUTE "text:outline-level",
+50: REF 'positiveInteger',
+51: DATA 'positiveInteger',
+49: EPSILON
+45: ELEMENT "text:user-index-mark-start",
+46: SEQUENCE
+47: REF 'text-id',
+48: ATTRIBUTE "text:id",
+49: REF 'string',
+50: DATA 'string',
+47: REF 'text-outline-level',
+48: CHOICE
+49: ATTRIBUTE "text:outline-level",
+50: REF 'positiveInteger',
+51: DATA 'positiveInteger',
+49: EPSILON
+47: REF 'text-index-name',
+48: ATTRIBUTE "text:index-name",
+49: REF 'string',
+50: DATA 'string',
+45: ELEMENT "text:user-index-mark-end",
+46: SEQUENCE
+47: REF 'text-id',
+48: ATTRIBUTE "text:id",
+49: REF 'string',
+50: DATA 'string',
+47: REF 'text-outline-level',
+48: CHOICE
+49: ATTRIBUTE "text:outline-level",
+50: REF 'positiveInteger',
+51: DATA 'positiveInteger',
+49: EPSILON
+45: ELEMENT "text:user-index-mark",
+46: SEQUENCE
+47: ATTRIBUTE "text:string-value",
+48: REF 'string',
+49: DATA 'string',
+47: REF 'text-outline-level',
+48: CHOICE
+49: ATTRIBUTE "text:outline-level",
+50: REF 'positiveInteger',
+51: DATA 'positiveInteger',
+49: EPSILON
+47: REF 'text-index-name',
+48: ATTRIBUTE "text:index-name",
+49: REF 'string',
+50: DATA 'string',
+45: ELEMENT "text:alphabetical-index-mark-start",
+46: SEQUENCE
+47: REF 'text-id',
+48: ATTRIBUTE "text:id",
+49: REF 'string',
+50: DATA 'string',
+47: REF 'text-alphabetical-index-mark-attrs',
+48: INTERLEAVE
+49: SEQUENCE
+50: CHOICE
+51: ATTRIBUTE "text:key1",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:key2",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+49: SEQUENCE
+50: CHOICE
+51: ATTRIBUTE "text:string-value-phonetic",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:key1-phonetic",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:key2-phonetic",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:main-entry",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+45: ELEMENT "text:alphabetical-index-mark-end",
+46: REF 'text-id',
+47: ATTRIBUTE "text:id",
+48: REF 'string',
+49: DATA 'string',
+45: ELEMENT "text:alphabetical-index-mark",
+46: SEQUENCE
+47: ATTRIBUTE "text:string-value",
+48: REF 'string',
+49: DATA 'string',
+47: REF 'text-alphabetical-index-mark-attrs',
+48: INTERLEAVE
+49: SEQUENCE
+50: CHOICE
+51: ATTRIBUTE "text:key1",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:key2",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+49: SEQUENCE
+50: CHOICE
+51: ATTRIBUTE "text:string-value-phonetic",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:key1-phonetic",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+50: CHOICE
+51: ATTRIBUTE "text:key2-phonetic",
+52: REF 'string',
+53: DATA 'string',
+51: EPSILON
+49: CHOICE
+50: ATTRIBUTE "text:main-entry",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: EPSILON
+45: ELEMENT "text:bibliography-mark",
+46: SEQUENCE
+47: ATTRIBUTE "text:bibliography-type",
+48: REF 'text-bibliography-types',
+49: CHOICE
+50: VALUE 'article',
+50: VALUE 'book',
+50: VALUE 'booklet',
+50: VALUE 'conference',
+50: VALUE 'custom1',
+50: VALUE 'custom2',
+50: VALUE 'custom3',
+50: VALUE 'custom4',
+50: VALUE 'custom5',
+50: VALUE 'email',
+50: VALUE 'inbook',
+50: VALUE 'incollection',
+50: VALUE 'inproceedings',
+50: VALUE 'journal',
+50: VALUE 'manual',
+50: VALUE 'mastersthesis',
+50: VALUE 'misc',
+50: VALUE 'phdthesis',
+50: VALUE 'proceedings',
+50: VALUE 'techreport',
+50: VALUE 'unpublished',
+50: VALUE 'www',
+47: CHOICE
+48: ONEOREMORE
+49: ATTRIBUTE "text:identifier", "text:address", "text:annote", "text:author", "text:booktitle", "text:chapter", "text:edition", "text:editor", "text:howpublished", "text:institution", "text:journal", "text:month", "text:note", "text:number", "text:organizations", "text:pages", "text:publisher", "text:school", "text:series", "text:title", "text:report-type", "text:volume", "text:year", "text:url", "text:custom1", "text:custom2", "text:custom3", "text:custom4", "text:custom5", "text:isbn", "text:issn",
+50: REF 'string',
+51: DATA 'string',
+48: EPSILON
+47: STRING
+45: ELEMENT "presentation:header",
+46: EPSILON
+45: ELEMENT "presentation:footer",
+46: EPSILON
+45: ELEMENT "presentation:date-time",
+46: EPSILON
+42: EPSILON
+37: EPSILON
+32: ELEMENT "text:deletion",
+33: SEQUENCE
+34: REF 'office-change-info',
+34: CHOICE
+35: ONEOREMORE
+36: REF 'text-content',
+37: CHOICE
+38: REF 'text-h',
+38: REF 'text-p',
+38: REF 'text-list',
+38: REF 'text-numbered-paragraph',
+38: REF 'table-table',
+38: REF 'draw-a',
+38: REF 'text-section',
+38: REF 'text-soft-page-break',
+38: REF 'text-table-of-content',
+38: REF 'text-illustration-index',
+38: REF 'text-table-index',
+38: REF 'text-object-index',
+38: REF 'text-user-index',
+38: REF 'text-alphabetical-index',
+38: REF 'text-bibliography',
+38: REF 'shape',
+39: CHOICE
+40: REF 'draw-rect',
+40: REF 'draw-line',
+40: REF 'draw-polyline',
+40: REF 'draw-polygon',
+40: REF 'draw-regular-polygon',
+40: REF 'draw-path',
+40: REF 'draw-circle',
+40: REF 'draw-ellipse',
+40: REF 'draw-g',
+40: REF 'draw-page-thumbnail',
+40: REF 'draw-frame',
+40: REF 'draw-measure',
+40: REF 'draw-caption',
+40: REF 'draw-connector',
+40: REF 'draw-control',
+40: REF 'dr3d-scene',
+40: REF 'draw-custom-shape',
+38: REF 'change-marks',
+39: CHOICE
+35: EPSILON
+32: ELEMENT "text:format-change",
+33: REF 'office-change-info',
+26: EPSILON
+23: EPSILON
+21: REF 'text-decls',
+22: SEQUENCE
+23: CHOICE
+24: ELEMENT "text:variable-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-variable-decl',
+28: ELEMENT "text:variable-decl",
+29: SEQUENCE
+30: REF 'common-field-name-attlist',
+31: ATTRIBUTE "text:name",
+32: REF 'variableName',
+33: DATA 'string',
+30: REF 'common-value-type-attlist',
+31: ATTRIBUTE "office:value-type",
+32: REF 'valueType',
+33: CHOICE
+34: VALUE 'float',
+34: VALUE 'time',
+34: VALUE 'date',
+34: VALUE 'percentage',
+34: VALUE 'currency',
+34: VALUE 'boolean',
+34: VALUE 'string',
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:sequence-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-sequence-decl',
+28: ELEMENT "text:sequence-decl",
+29: REF 'text-sequence-decl-attlist',
+30: INTERLEAVE
+31: REF 'common-field-name-attlist',
+32: ATTRIBUTE "text:name",
+33: REF 'variableName',
+34: DATA 'string',
+31: ATTRIBUTE "text:display-outline-level",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+31: CHOICE
+32: ATTRIBUTE "text:separation-character",
+33: REF 'character',
+34: DATA 'string',
+32: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:user-field-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-user-field-decl',
+28: ELEMENT "text:user-field-decl",
+29: SEQUENCE
+30: REF 'common-field-name-attlist',
+31: ATTRIBUTE "text:name",
+32: REF 'variableName',
+33: DATA 'string',
+30: CHOICE
+31: REF 'common-field-formula-attlist',
+32: CHOICE
+33: ATTRIBUTE "text:formula",
+34: REF 'formula',
+35: DATA 'string',
+33: EPSILON
+31: EPSILON
+30: REF 'common-value-and-type-attlist',
+31: CHOICE
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'float',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'percentage',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'currency',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+33: CHOICE
+34: ATTRIBUTE "office:currency",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'date',
+33: ATTRIBUTE "office:date-value",
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'time',
+33: ATTRIBUTE "office:time-value",
+34: REF 'duration',
+35: DATA 'duration',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'boolean',
+33: ATTRIBUTE "office:boolean-value",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'string',
+33: CHOICE
+34: ATTRIBUTE "office:string-value",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:dde-connection-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-dde-connection-decl',
+28: ELEMENT "text:dde-connection-decl",
+29: SEQUENCE
+30: REF 'text-dde-connection-decl-attlist',
+31: ATTRIBUTE "office:name",
+32: REF 'string',
+33: DATA 'string',
+30: REF 'common-dde-connection-decl-attlist',
+31: INTERLEAVE
+32: ATTRIBUTE "office:dde-application",
+33: REF 'string',
+34: DATA 'string',
+32: ATTRIBUTE "office:dde-topic",
+33: REF 'string',
+34: DATA 'string',
+32: ATTRIBUTE "office:dde-item",
+33: REF 'string',
+34: DATA 'string',
+32: CHOICE
+33: ATTRIBUTE "office:automatic-update",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: REF 'text-alphabetical-index-auto-mark-file',
+25: ELEMENT "text:alphabetical-index-auto-mark-file",
+26: SEQUENCE
+27: ATTRIBUTE "xlink:href",
+28: REF 'anyURI',
+29: DATA 'anyURI',
+27: CHOICE
+28: ATTRIBUTE "xlink:type",
+29: VALUE 'simple',
+28: EPSILON
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'text-h',
+24: REF 'text-p',
+24: REF 'text-list',
+24: REF 'table-table',
+24: REF 'text-section',
+24: REF 'text-table-of-content',
+24: REF 'text-illustration-index',
+24: REF 'text-table-index',
+24: REF 'text-object-index',
+24: REF 'text-user-index',
+24: REF 'text-alphabetical-index',
+24: REF 'text-bibliography',
+24: REF 'text-index-title',
+24: REF 'change-marks',
+25: CHOICE
+22: EPSILON
+20: SEQUENCE
+21: CHOICE
+22: REF 'style-region-left',
+23: ELEMENT "style:region-left",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-center',
+23: ELEMENT "style:region-center",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-right',
+23: ELEMENT "style:region-right",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+15: CHOICE
+16: REF 'style-header-left',
+17: ELEMENT "style:header-left",
+18: SEQUENCE
+19: REF 'common-style-header-footer-attlist',
+20: CHOICE
+21: ATTRIBUTE "style:display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+19: REF 'header-footer-content',
+20: CHOICE
+21: SEQUENCE
+22: REF 'text-tracked-changes',
+23: CHOICE
+22: REF 'text-decls',
+23: SEQUENCE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+25: REF 'text-alphabetical-index-auto-mark-file',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: CHOICE
+25: REF 'text-h',
+25: REF 'text-p',
+25: REF 'text-list',
+25: REF 'table-table',
+25: REF 'text-section',
+25: REF 'text-table-of-content',
+25: REF 'text-illustration-index',
+25: REF 'text-table-index',
+25: REF 'text-object-index',
+25: REF 'text-user-index',
+25: REF 'text-alphabetical-index',
+25: REF 'text-bibliography',
+25: REF 'text-index-title',
+25: REF 'change-marks',
+26: CHOICE
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'style-region-left',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-center',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-right',
+23: EPSILON
+16: EPSILON
+14: EPSILON
+13: CHOICE
+14: SEQUENCE
+15: REF 'style-footer',
+16: ELEMENT "style:footer",
+17: SEQUENCE
+18: REF 'common-style-header-footer-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:display",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+18: REF 'header-footer-content',
+19: CHOICE
+20: SEQUENCE
+21: REF 'text-tracked-changes',
+22: CHOICE
+21: REF 'text-decls',
+22: SEQUENCE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+24: REF 'text-alphabetical-index-auto-mark-file',
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'text-h',
+24: REF 'text-p',
+24: REF 'text-list',
+24: REF 'table-table',
+24: REF 'text-section',
+24: REF 'text-table-of-content',
+24: REF 'text-illustration-index',
+24: REF 'text-table-index',
+24: REF 'text-object-index',
+24: REF 'text-user-index',
+24: REF 'text-alphabetical-index',
+24: REF 'text-bibliography',
+24: REF 'text-index-title',
+24: REF 'change-marks',
+25: CHOICE
+22: EPSILON
+20: SEQUENCE
+21: CHOICE
+22: REF 'style-region-left',
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-center',
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-right',
+22: EPSILON
+15: CHOICE
+16: REF 'style-footer-left',
+17: ELEMENT "style:footer-left",
+18: SEQUENCE
+19: REF 'common-style-header-footer-attlist',
+20: CHOICE
+21: ATTRIBUTE "style:display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+19: REF 'header-footer-content',
+20: CHOICE
+21: SEQUENCE
+22: REF 'text-tracked-changes',
+23: CHOICE
+22: REF 'text-decls',
+23: SEQUENCE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+25: REF 'text-alphabetical-index-auto-mark-file',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: CHOICE
+25: REF 'text-h',
+25: REF 'text-p',
+25: REF 'text-list',
+25: REF 'table-table',
+25: REF 'text-section',
+25: REF 'text-table-of-content',
+25: REF 'text-illustration-index',
+25: REF 'text-table-index',
+25: REF 'text-object-index',
+25: REF 'text-user-index',
+25: REF 'text-alphabetical-index',
+25: REF 'text-bibliography',
+25: REF 'text-index-title',
+25: REF 'change-marks',
+26: CHOICE
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'style-region-left',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-center',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-right',
+23: EPSILON
+16: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'office-forms',
+15: CHOICE
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'style-style',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'shape',
+16: CHOICE
+17: REF 'draw-rect',
+17: REF 'draw-line',
+17: REF 'draw-polyline',
+17: REF 'draw-polygon',
+17: REF 'draw-regular-polygon',
+17: REF 'draw-path',
+17: REF 'draw-circle',
+17: REF 'draw-ellipse',
+17: REF 'draw-g',
+17: REF 'draw-page-thumbnail',
+17: REF 'draw-frame',
+17: REF 'draw-measure',
+17: REF 'draw-caption',
+17: REF 'draw-connector',
+17: REF 'draw-control',
+17: REF 'dr3d-scene',
+17: REF 'draw-custom-shape',
+14: EPSILON
+13: CHOICE
+14: REF 'presentation-notes',
+15: ELEMENT "presentation:notes",
+16: SEQUENCE
+17: REF 'common-presentation-header-footer-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: ATTRIBUTE "presentation:use-header-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:use-footer-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:use-date-time-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+17: REF 'presentation-notes-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: ATTRIBUTE "style:page-layout-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "draw:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+17: REF 'office-forms',
+18: CHOICE
+17: CHOICE
+18: ONEOREMORE
+19: REF 'shape',
+20: CHOICE
+21: REF 'draw-rect',
+21: REF 'draw-line',
+21: REF 'draw-polyline',
+21: REF 'draw-polygon',
+21: REF 'draw-regular-polygon',
+21: REF 'draw-path',
+21: REF 'draw-circle',
+21: REF 'draw-ellipse',
+21: REF 'draw-g',
+21: REF 'draw-page-thumbnail',
+21: REF 'draw-frame',
+21: REF 'draw-measure',
+21: REF 'draw-caption',
+21: REF 'draw-connector',
+21: REF 'draw-control',
+21: REF 'dr3d-scene',
+21: REF 'draw-custom-shape',
+18: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'style-handout-master',
+10: ELEMENT "style:handout-master",
+11: SEQUENCE
+12: REF 'common-presentation-header-footer-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "presentation:use-header-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "presentation:use-footer-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "presentation:use-date-time-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+12: REF 'style-handout-master-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "presentation:presentation-page-layout-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+14: ATTRIBUTE "style:page-layout-name",
+15: REF 'styleNameRef',
+16: CHOICE
+17: DATA 'NCName',
+17: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:style-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+12: CHOICE
+13: ONEOREMORE
+14: REF 'shape',
+15: CHOICE
+16: REF 'draw-rect',
+16: REF 'draw-line',
+16: REF 'draw-polyline',
+16: REF 'draw-polygon',
+16: REF 'draw-regular-polygon',
+16: REF 'draw-path',
+16: REF 'draw-circle',
+16: REF 'draw-ellipse',
+16: REF 'draw-g',
+16: REF 'draw-page-thumbnail',
+16: REF 'draw-frame',
+16: REF 'draw-measure',
+16: REF 'draw-caption',
+16: REF 'draw-connector',
+16: REF 'draw-control',
+16: REF 'dr3d-scene',
+16: REF 'draw-custom-shape',
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'draw-layer-set',
+10: ELEMENT "draw:layer-set",
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-layer',
+14: ELEMENT "draw:layer",
+15: SEQUENCE
+16: REF 'draw-layer-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "draw:name",
+19: REF 'string',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "draw:protected",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:display",
+20: CHOICE
+21: VALUE 'always',
+21: VALUE 'screen',
+21: VALUE 'printer',
+21: VALUE 'none',
+19: EPSILON
+16: CHOICE
+17: REF 'svg-title',
+17: EPSILON
+16: CHOICE
+17: REF 'svg-desc',
+17: EPSILON
+12: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-body',
+5: ELEMENT "office:body",
+6: REF 'office-body-content',
+7: CHOICE
+8: ELEMENT "office:text",
+9: SEQUENCE
+10: REF 'office-text-attlist',
+11: INTERLEAVE
+12: CHOICE
+13: ATTRIBUTE "text:global",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+12: CHOICE
+13: ATTRIBUTE "text:use-soft-page-breaks",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+10: REF 'office-text-content-prelude',
+11: SEQUENCE
+12: REF 'office-forms',
+13: CHOICE
+12: REF 'text-tracked-changes',
+13: CHOICE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+16: ELEMENT "table:calculation-settings",
+17: SEQUENCE
+18: REF 'table-calculation-setting-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:case-sensitive",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:precision-as-shown",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:search-criteria-must-apply-to-whole-cell",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:automatic-find-labels",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:use-regular-expressions",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:null-year",
+22: REF 'positiveInteger',
+23: DATA 'positiveInteger',
+21: EPSILON
+18: CHOICE
+19: REF 'table-null-date',
+20: ELEMENT "table:null-date",
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "table:value-type",
+24: REF 'valueType',
+25: CHOICE
+26: VALUE 'float',
+26: VALUE 'time',
+26: VALUE 'date',
+26: VALUE 'percentage',
+26: VALUE 'currency',
+26: VALUE 'boolean',
+26: VALUE 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:date-value",
+24: REF 'date',
+25: DATA 'date',
+23: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'table-iteration',
+20: ELEMENT "table:iteration",
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "table:status",
+24: CHOICE
+25: VALUE 'enable',
+25: VALUE 'disable',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:steps",
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:maximum-difference",
+24: REF 'double',
+25: DATA 'double',
+23: EPSILON
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+16: ELEMENT "table:content-validations",
+17: ONEOREMORE
+18: REF 'table-content-validation',
+19: ELEMENT "table:content-validation",
+20: SEQUENCE
+21: REF 'table-validation-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:condition",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:allow-empty-cell",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:display-list",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'unsorted',
+26: VALUE 'sort-ascending',
+24: EPSILON
+21: CHOICE
+22: REF 'table-help-message',
+23: ELEMENT "table:help-message",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:title",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'table-error-message',
+23: ELEMENT "table:error-message",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:title",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:message-type",
+27: CHOICE
+28: VALUE 'stop',
+28: VALUE 'warning',
+28: VALUE 'information',
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: SEQUENCE
+23: REF 'table-error-macro',
+24: ELEMENT "table:error-macro",
+25: CHOICE
+26: ATTRIBUTE "table:execute",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: CHOICE
+24: REF 'office-event-listeners',
+24: EPSILON
+22: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+16: ELEMENT "table:label-ranges",
+17: CHOICE
+18: ONEOREMORE
+19: REF 'table-label-range',
+20: ELEMENT "table:label-range",
+21: REF 'table-label-range-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:label-cell-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: ATTRIBUTE "table:data-cell-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: ATTRIBUTE "table:orientation",
+24: CHOICE
+25: VALUE 'column',
+25: VALUE 'row',
+18: EPSILON
+15: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'office-text-content-main',
+13: CHOICE
+14: ONEOREMORE
+15: REF 'text-content',
+16: CHOICE
+17: REF 'text-h',
+17: REF 'text-p',
+17: REF 'text-list',
+17: REF 'text-numbered-paragraph',
+17: REF 'table-table',
+17: REF 'draw-a',
+17: REF 'text-section',
+17: REF 'text-soft-page-break',
+17: REF 'text-table-of-content',
+17: REF 'text-illustration-index',
+17: REF 'text-table-index',
+17: REF 'text-object-index',
+17: REF 'text-user-index',
+17: REF 'text-alphabetical-index',
+17: REF 'text-bibliography',
+17: REF 'shape',
+18: CHOICE
+19: REF 'draw-rect',
+19: REF 'draw-line',
+19: REF 'draw-polyline',
+19: REF 'draw-polygon',
+19: REF 'draw-regular-polygon',
+19: REF 'draw-path',
+19: REF 'draw-circle',
+19: REF 'draw-ellipse',
+19: REF 'draw-g',
+19: REF 'draw-page-thumbnail',
+19: REF 'draw-frame',
+19: REF 'draw-measure',
+19: REF 'draw-caption',
+19: REF 'draw-connector',
+19: REF 'draw-control',
+19: REF 'dr3d-scene',
+19: REF 'draw-custom-shape',
+17: REF 'change-marks',
+18: CHOICE
+14: EPSILON
+14: SEQUENCE
+15: REF 'text-page-sequence',
+16: ELEMENT "text:page-sequence",
+17: ONEOREMORE
+18: REF 'text-page',
+19: ELEMENT "text:page",
+20: REF 'text-page-attlist',
+21: ATTRIBUTE "text:master-page-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: CHOICE
+18: REF 'draw-a',
+18: REF 'shape',
+19: CHOICE
+20: REF 'draw-rect',
+20: REF 'draw-line',
+20: REF 'draw-polyline',
+20: REF 'draw-polygon',
+20: REF 'draw-regular-polygon',
+20: REF 'draw-path',
+20: REF 'draw-circle',
+20: REF 'draw-ellipse',
+20: REF 'draw-g',
+20: REF 'draw-page-thumbnail',
+20: REF 'draw-frame',
+20: REF 'draw-measure',
+20: REF 'draw-caption',
+20: REF 'draw-connector',
+20: REF 'draw-control',
+20: REF 'dr3d-scene',
+20: REF 'draw-custom-shape',
+16: EPSILON
+11: EPSILON
+10: REF 'office-text-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+15: ELEMENT "table:named-expressions",
+16: CHOICE
+17: ONEOREMORE
+18: CHOICE
+19: REF 'table-named-range',
+20: ELEMENT "table:named-range",
+21: REF 'table-named-range-attlist',
+22: SEQUENCE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: ATTRIBUTE "table:cell-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:range-usable-as",
+25: CHOICE
+26: VALUE 'none',
+26: LIST
+27: ONEOREMORE
+28: CHOICE
+29: VALUE 'print-range',
+29: VALUE 'filter',
+29: VALUE 'repeat-row',
+29: VALUE 'repeat-column',
+24: EPSILON
+19: REF 'table-named-expression',
+20: ELEMENT "table:named-expression",
+21: REF 'table-named-expression-attlist',
+22: SEQUENCE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: ATTRIBUTE "table:expression",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+15: ELEMENT "table:database-ranges",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'table-database-range',
+19: ELEMENT "table:database-range",
+20: SEQUENCE
+21: REF 'table-database-range-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "table:name",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:is-selection",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:on-update-keep-styles",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:on-update-keep-size",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:has-persistent-data",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:orientation",
+25: CHOICE
+26: VALUE 'column',
+26: VALUE 'row',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:contains-header",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:display-filter-buttons",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: ATTRIBUTE "table:target-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:refresh-delay",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: CHOICE
+22: REF 'table-database-source-sql',
+23: ELEMENT "table:database-source-sql",
+24: REF 'table-database-source-sql-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:sql-statement",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "table:parse-sql-statement",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+22: REF 'table-database-source-table',
+23: ELEMENT "table:database-source-query",
+24: REF 'table-database-source-query-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:query-name",
+27: REF 'string',
+28: DATA 'string',
+22: REF 'table-database-source-query',
+23: ELEMENT "table:database-source-table",
+24: REF 'table-database-source-table-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:database-table-name",
+27: REF 'string',
+28: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: REF 'table-filter',
+23: ELEMENT "table:filter",
+24: SEQUENCE
+25: REF 'table-filter-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:target-range-address",
+29: REF 'cellRangeAddress',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:condition-source",
+29: CHOICE
+30: VALUE 'self',
+30: VALUE 'cell-range',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:condition-source-range-address",
+29: REF 'cellRangeAddress',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:display-duplicates",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: CHOICE
+26: REF 'table-filter-condition',
+27: ELEMENT "table:filter-condition",
+28: REF 'table-filter-condition-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-number",
+31: REF 'nonNegativeInteger',
+32: DATA 'nonNegativeInteger',
+30: ATTRIBUTE "table:value",
+31: REF 'string',
+32: DATA 'string',
+30: ATTRIBUTE "table:operator",
+31: REF 'string',
+32: DATA 'string',
+30: CHOICE
+31: ATTRIBUTE "table:case-sensitive",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+31: EPSILON
+26: REF 'table-filter-and',
+27: ELEMENT "table:filter-and",
+28: ONEOREMORE
+29: CHOICE
+30: REF 'table-filter-or',
+31: ELEMENT "table:filter-or",
+32: ONEOREMORE
+33: CHOICE
+34: REF 'table-filter-and',
+34: REF 'table-filter-condition',
+30: REF 'table-filter-condition',
+26: REF 'table-filter-or',
+22: EPSILON
+21: CHOICE
+22: REF 'table-sort',
+23: ELEMENT "table:sort",
+24: SEQUENCE
+25: REF 'table-sort-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:bind-styles-to-content",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:target-range-address",
+29: REF 'cellRangeAddress',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:case-sensitive",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:language",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:country",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:algorithm",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: ONEOREMORE
+26: REF 'table-sort-by',
+27: ELEMENT "table:sort-by",
+28: REF 'table-sort-by-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-number",
+31: REF 'nonNegativeInteger',
+32: DATA 'nonNegativeInteger',
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+33: VALUE 'automatic',
+33: REF 'string',
+34: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:order",
+32: CHOICE
+33: VALUE 'ascending',
+33: VALUE 'descending',
+31: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'table-subtotal-rules',
+23: ELEMENT "table:subtotal-rules",
+24: SEQUENCE
+25: REF 'table-subtotal-rules-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:bind-styles-to-content",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:case-sensitive",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:page-breaks-on-group-change",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: CHOICE
+26: REF 'table-sort-groups',
+27: ELEMENT "table:sort-groups",
+28: REF 'table-sort-groups-attlist',
+29: INTERLEAVE
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+33: VALUE 'automatic',
+33: REF 'string',
+34: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:order",
+32: CHOICE
+33: VALUE 'ascending',
+33: VALUE 'descending',
+31: EPSILON
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'table-subtotal-rule',
+28: ELEMENT "table:subtotal-rule",
+29: SEQUENCE
+30: REF 'table-subtotal-rule-attlist',
+31: ATTRIBUTE "table:group-by-field-number",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+30: CHOICE
+31: ONEOREMORE
+32: REF 'table-subtotal-field',
+33: ELEMENT "table:subtotal-field",
+34: REF 'table-subtotal-field-attlist',
+35: INTERLEAVE
+36: ATTRIBUTE "table:field-number",
+37: REF 'nonNegativeInteger',
+38: DATA 'nonNegativeInteger',
+36: ATTRIBUTE "table:function",
+37: CHOICE
+38: VALUE 'auto',
+38: VALUE 'average',
+38: VALUE 'count',
+38: VALUE 'countnums',
+38: VALUE 'max',
+38: VALUE 'min',
+38: VALUE 'product',
+38: VALUE 'stdev',
+38: VALUE 'stdevp',
+38: VALUE 'sum',
+38: VALUE 'var',
+38: VALUE 'varp',
+38: REF 'string',
+39: DATA 'string',
+31: EPSILON
+26: EPSILON
+22: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+15: ELEMENT "table:data-pilot-tables",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'table-data-pilot-table',
+19: ELEMENT "table:data-pilot-table",
+20: SEQUENCE
+21: REF 'table-data-pilot-table-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:application-data",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:grand-total",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'both',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:ignore-empty-rows",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:identify-categories",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: ATTRIBUTE "table:target-range-address",
+24: REF 'cellRangeAddress',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:buttons",
+25: REF 'cellRangeAddressList',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:show-filter-button",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:drill-down-on-double-click",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: CHOICE
+22: REF 'table-database-source-sql',
+22: REF 'table-database-source-table',
+22: REF 'table-database-source-query',
+22: REF 'table-source-service',
+23: ELEMENT "table:source-service",
+24: REF 'table-source-service-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:source-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:object-name",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "table:user-name",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:password",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+22: REF 'table-source-cell-range',
+23: ELEMENT "table:source-cell-range",
+24: SEQUENCE
+25: REF 'table-source-cell-range-attlist',
+26: ATTRIBUTE "table:cell-range-address",
+27: REF 'cellRangeAddress',
+28: DATA 'string',
+25: CHOICE
+26: REF 'table-filter',
+26: EPSILON
+22: EPSILON
+21: ONEOREMORE
+22: REF 'table-data-pilot-field',
+23: ELEMENT "table:data-pilot-field",
+24: SEQUENCE
+25: REF 'table-data-pilot-field-attlist',
+26: INTERLEAVE
+27: ATTRIBUTE "table:source-field-name",
+28: REF 'string',
+29: DATA 'string',
+27: CHOICE
+28: ATTRIBUTE "table:orientation",
+29: CHOICE
+30: VALUE 'row',
+30: VALUE 'column',
+30: VALUE 'data',
+30: VALUE 'hidden',
+28: SEQUENCE
+29: ATTRIBUTE "table:orientation",
+30: VALUE 'page',
+29: ATTRIBUTE "table:selected-page",
+30: REF 'string',
+31: DATA 'string',
+27: CHOICE
+28: ATTRIBUTE "table:is-data-layout-field",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:function",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'average',
+30: VALUE 'count',
+30: VALUE 'countnums',
+30: VALUE 'max',
+30: VALUE 'min',
+30: VALUE 'product',
+30: VALUE 'stdev',
+30: VALUE 'stdevp',
+30: VALUE 'sum',
+30: VALUE 'var',
+30: VALUE 'varp',
+30: REF 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:used-hierarchy",
+29: REF 'integer',
+30: DATA 'integer',
+28: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-level',
+27: ELEMENT "table:data-pilot-level",
+28: SEQUENCE
+29: REF 'table-data-pilot-level-attlist',
+30: CHOICE
+31: ATTRIBUTE "table:show-empty",
+32: REF 'boolean',
+33: CHOICE
+34: VALUE 'true',
+34: VALUE 'false',
+31: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-subtotals',
+31: ELEMENT "table:data-pilot-subtotals",
+32: CHOICE
+33: ONEOREMORE
+34: REF 'table-data-pilot-subtotal',
+35: ELEMENT "table:data-pilot-subtotal",
+36: REF 'table-data-pilot-subtotal-attlist',
+37: ATTRIBUTE "table:function",
+38: CHOICE
+39: VALUE 'auto',
+39: VALUE 'average',
+39: VALUE 'count',
+39: VALUE 'countnums',
+39: VALUE 'max',
+39: VALUE 'min',
+39: VALUE 'product',
+39: VALUE 'stdev',
+39: VALUE 'stdevp',
+39: VALUE 'sum',
+39: VALUE 'var',
+39: VALUE 'varp',
+39: REF 'string',
+40: DATA 'string',
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-members',
+31: ELEMENT "table:data-pilot-members",
+32: CHOICE
+33: ONEOREMORE
+34: REF 'table-data-pilot-member',
+35: ELEMENT "table:data-pilot-member",
+36: REF 'table-data-pilot-member-attlist',
+37: INTERLEAVE
+38: ATTRIBUTE "table:name",
+39: REF 'string',
+40: DATA 'string',
+38: CHOICE
+39: ATTRIBUTE "table:display",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+38: CHOICE
+39: ATTRIBUTE "table:show-details",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-display-info',
+31: ELEMENT "table:data-pilot-display-info",
+32: REF 'table-data-pilot-display-info-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "table:enabled",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: ATTRIBUTE "table:data-field",
+35: REF 'string',
+36: DATA 'string',
+34: ATTRIBUTE "table:member-count",
+35: REF 'nonNegativeInteger',
+36: DATA 'nonNegativeInteger',
+34: ATTRIBUTE "table:display-member-mode",
+35: CHOICE
+36: VALUE 'from-top',
+36: VALUE 'from-bottom',
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-sort-info',
+31: ELEMENT "table:data-pilot-sort-info",
+32: REF 'table-data-pilot-sort-info-attlist',
+33: INTERLEAVE
+34: CHOICE
+35: SEQUENCE
+36: ATTRIBUTE "table:sort-mode",
+37: VALUE 'data',
+36: ATTRIBUTE "table:data-field",
+37: REF 'string',
+38: DATA 'string',
+35: ATTRIBUTE "table:sort-mode",
+36: CHOICE
+37: VALUE 'none',
+37: VALUE 'manual',
+37: VALUE 'name',
+34: ATTRIBUTE "table:order",
+35: CHOICE
+36: VALUE 'ascending',
+36: VALUE 'descending',
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-layout-info',
+31: ELEMENT "table:data-pilot-layout-info",
+32: REF 'table-data-pilot-layout-info-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "table:layout-mode",
+35: CHOICE
+36: VALUE 'tabular-layout',
+36: VALUE 'outline-subtotals-top',
+36: VALUE 'outline-subtotals-bottom',
+34: ATTRIBUTE "table:add-empty-lines",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+30: EPSILON
+26: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-field-reference',
+27: ELEMENT "table:data-pilot-field-reference",
+28: REF 'table-data-pilot-field-reference-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-name",
+31: REF 'string',
+32: DATA 'string',
+30: CHOICE
+31: SEQUENCE
+32: ATTRIBUTE "table:member-type",
+33: VALUE 'named',
+32: ATTRIBUTE "table:member-name",
+33: REF 'string',
+34: DATA 'string',
+31: ATTRIBUTE "table:member-type",
+32: CHOICE
+33: VALUE 'previous',
+33: VALUE 'next',
+30: ATTRIBUTE "table:type",
+31: CHOICE
+32: VALUE 'none',
+32: VALUE 'member-difference',
+32: VALUE 'member-percentage',
+32: VALUE 'member-percentage-difference',
+32: VALUE 'running-total',
+32: VALUE 'row-percentage',
+32: VALUE 'column-percentage',
+32: VALUE 'total-percentage',
+32: VALUE 'index',
+26: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-groups',
+27: ELEMENT "table:data-pilot-groups",
+28: SEQUENCE
+29: REF 'table-data-pilot-groups-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:source-field-name",
+32: REF 'string',
+33: DATA 'string',
+31: CHOICE
+32: ATTRIBUTE "table:date-start",
+33: CHOICE
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+34: VALUE 'auto',
+32: ATTRIBUTE "table:start",
+33: CHOICE
+34: REF 'double',
+35: DATA 'double',
+34: VALUE 'auto',
+31: CHOICE
+32: ATTRIBUTE "table:date-end",
+33: CHOICE
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+34: VALUE 'auto',
+32: ATTRIBUTE "table:end",
+33: CHOICE
+34: REF 'double',
+35: DATA 'double',
+34: VALUE 'auto',
+31: ATTRIBUTE "table:step",
+32: REF 'double',
+33: DATA 'double',
+31: ATTRIBUTE "table:grouped-by",
+32: CHOICE
+33: VALUE 'seconds',
+33: VALUE 'minutes',
+33: VALUE 'hours',
+33: VALUE 'days',
+33: VALUE 'months',
+33: VALUE 'quarters',
+33: VALUE 'years',
+29: ONEOREMORE
+30: REF 'table-data-pilot-group',
+31: ELEMENT "table:data-pilot-group",
+32: SEQUENCE
+33: REF 'table-data-pilot-group-attlist',
+34: ATTRIBUTE "table:name",
+35: REF 'string',
+36: DATA 'string',
+33: ONEOREMORE
+34: REF 'table-data-pilot-group-member',
+35: ELEMENT "table:data-pilot-group-member",
+36: REF 'table-data-pilot-group-member-attlist',
+37: ATTRIBUTE "table:name",
+38: REF 'string',
+39: DATA 'string',
+26: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+15: ELEMENT "table:consolidation",
+16: REF 'table-consolidation-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "table:function",
+19: CHOICE
+20: VALUE 'auto',
+20: VALUE 'average',
+20: VALUE 'count',
+20: VALUE 'countnums',
+20: VALUE 'max',
+20: VALUE 'min',
+20: VALUE 'product',
+20: VALUE 'stdev',
+20: VALUE 'stdevp',
+20: VALUE 'sum',
+20: VALUE 'var',
+20: VALUE 'varp',
+20: REF 'string',
+21: DATA 'string',
+18: ATTRIBUTE "table:source-cell-range-addresses",
+19: REF 'cellRangeAddressList',
+20: DATA 'string',
+18: ATTRIBUTE "table:target-cell-address",
+19: REF 'cellAddress',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "table:use-labels",
+20: CHOICE
+21: VALUE 'none',
+21: VALUE 'row',
+21: VALUE 'column',
+21: VALUE 'both',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:link-to-source-data",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+15: ELEMENT "table:dde-links",
+16: ONEOREMORE
+17: REF 'table-dde-link',
+18: ELEMENT "table:dde-link",
+19: SEQUENCE
+20: REF 'office-dde-source',
+20: REF 'table-table',
+14: EPSILON
+8: ELEMENT "office:drawing",
+9: SEQUENCE
+10: REF 'office-drawing-attlist',
+11: EPSILON
+10: REF 'office-drawing-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-drawing-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-page',
+14: ELEMENT "draw:page",
+15: SEQUENCE
+16: REF 'common-presentation-header-footer-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "presentation:use-header-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:use-footer-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:use-date-time-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+16: REF 'draw-page-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "draw:name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: ATTRIBUTE "draw:master-page-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:presentation-page-layout-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:id",
+20: REF 'ID',
+21: DATA 'ID',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:nav-order",
+20: REF 'IDREFS',
+21: DATA 'IDREFS',
+19: EPSILON
+16: CHOICE
+17: REF 'office-forms',
+18: CHOICE
+17: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'shape',
+19: CHOICE
+20: REF 'draw-rect',
+20: REF 'draw-line',
+20: REF 'draw-polyline',
+20: REF 'draw-polygon',
+20: REF 'draw-regular-polygon',
+20: REF 'draw-path',
+20: REF 'draw-circle',
+20: REF 'draw-ellipse',
+20: REF 'draw-g',
+20: REF 'draw-page-thumbnail',
+20: REF 'draw-frame',
+20: REF 'draw-measure',
+20: REF 'draw-caption',
+20: REF 'draw-connector',
+20: REF 'draw-control',
+20: REF 'dr3d-scene',
+20: REF 'draw-custom-shape',
+17: EPSILON
+16: CHOICE
+17: REF 'presentation-animations',
+18: ELEMENT "presentation:animations",
+19: CHOICE
+20: ONEOREMORE
+21: CHOICE
+22: REF 'presentation-animation-elements',
+23: CHOICE
+24: REF 'presentation-show-shape',
+25: ELEMENT "presentation:show-shape",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-show-text',
+25: ELEMENT "presentation:show-text",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-hide-shape',
+25: ELEMENT "presentation:hide-shape",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-hide-text',
+25: ELEMENT "presentation:hide-text",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: STRING
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-dim',
+25: ELEMENT "presentation:dim",
+26: SEQUENCE
+27: REF 'presentation-dim-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: ATTRIBUTE "draw:color",
+30: REF 'color',
+31: DATA 'string',
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-play',
+25: ELEMENT "presentation:play",
+26: REF 'presentation-play-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "draw:shape-id",
+29: REF 'IDREF',
+30: DATA 'IDREF',
+28: CHOICE
+29: ATTRIBUTE "presentation:speed",
+30: REF 'presentationSpeeds',
+31: CHOICE
+32: VALUE 'slow',
+32: VALUE 'medium',
+32: VALUE 'fast',
+29: EPSILON
+22: REF 'presentation-animation-group',
+23: ELEMENT "presentation:animation-group",
+24: CHOICE
+25: ONEOREMORE
+26: REF 'presentation-animation-elements',
+27: CHOICE
+28: REF 'presentation-show-shape',
+28: REF 'presentation-show-text',
+28: REF 'presentation-hide-shape',
+28: REF 'presentation-hide-text',
+28: REF 'presentation-dim',
+28: REF 'presentation-play',
+25: EPSILON
+20: EPSILON
+17: REF 'animation-element',
+18: CHOICE
+19: ELEMENT "anim:animate",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-anim-spline-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:calcMode",
+24: CHOICE
+25: VALUE 'discrete',
+25: VALUE 'linear',
+25: VALUE 'paced',
+25: VALUE 'spline',
+23: EPSILON
+21: REF 'common-spline-anim-value-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:keyTimes",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:keySplines",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+19: ELEMENT "anim:set",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-set-values-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:to",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+19: ELEMENT "anim:animateMotion",
+20: SEQUENCE
+21: REF 'anim-animate-motion-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "svg:path",
+25: REF 'pathData',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "svg:origin",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:calcMode",
+25: CHOICE
+26: VALUE 'discrete',
+26: VALUE 'linear',
+26: VALUE 'paced',
+26: VALUE 'spline',
+24: EPSILON
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-spline-anim-value-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:keyTimes",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:keySplines",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+19: ELEMENT "anim:animateColor",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-anim-spline-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:calcMode",
+24: CHOICE
+25: VALUE 'discrete',
+25: VALUE 'linear',
+25: VALUE 'paced',
+25: VALUE 'spline',
+23: EPSILON
+21: REF 'common-spline-anim-value-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:keyTimes",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:keySplines",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'anim-animate-color-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "anim:color-interpolation",
+25: CHOICE
+26: VALUE 'rgb',
+26: VALUE 'hsl',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:color-interpolation-direction",
+25: CHOICE
+26: VALUE 'clockwise',
+26: VALUE 'counter-clockwise',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+19: ELEMENT "anim:animateTransform",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-named-target-attlist',
+22: ATTRIBUTE "smil:attributeName",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'anim-animate-transform-attlist',
+22: ATTRIBUTE "svg:type",
+23: CHOICE
+24: VALUE 'translate',
+24: VALUE 'scale',
+24: VALUE 'rotate',
+24: VALUE 'skewX',
+24: VALUE 'skewY',
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+19: ELEMENT "anim:transitionFilter",
+20: SEQUENCE
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-add-accum-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:accumulate",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'sum',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:additive",
+25: CHOICE
+26: VALUE 'replace',
+26: VALUE 'sum',
+24: EPSILON
+21: REF 'common-anim-values-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:values",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:formula",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: SEQUENCE
+24: REF 'common-anim-set-values-attlist',
+25: CHOICE
+26: ATTRIBUTE "smil:to",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:from",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:by",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: REF 'common-anim-spline-mode-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:calcMode",
+24: CHOICE
+25: VALUE 'discrete',
+25: VALUE 'linear',
+25: VALUE 'paced',
+25: VALUE 'spline',
+23: EPSILON
+21: REF 'anim-transition-filter-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "smil:type",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "smil:subtype",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:direction",
+25: CHOICE
+26: VALUE 'forward',
+26: VALUE 'reverse',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:fadeColor",
+25: CHOICE
+26: VALUE 'forward',
+26: VALUE 'reverse',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:mode",
+25: CHOICE
+26: VALUE 'in',
+26: VALUE 'out',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+19: ELEMENT "anim:par",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-endsync-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:endsync",
+24: CHOICE
+25: VALUE 'first',
+25: VALUE 'last',
+25: VALUE 'all',
+25: VALUE 'media',
+23: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: REF 'animation-element',
+24: CHOICE
+22: EPSILON
+19: ELEMENT "anim:seq",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'common-endsync-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:endsync",
+24: CHOICE
+25: VALUE 'first',
+25: VALUE 'last',
+25: VALUE 'all',
+25: VALUE 'media',
+23: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: REF 'animation-element',
+24: CHOICE
+22: EPSILON
+19: ELEMENT "anim:iterate",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'anim-iterate-attlist',
+22: INTERLEAVE
+23: REF 'common-anim-target-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:targetElement",
+27: REF 'IDREF',
+28: DATA 'IDREF',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "anim:sub-item",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:iterate-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:iterate-interval",
+25: REF 'duration',
+26: DATA 'duration',
+24: EPSILON
+21: REF 'common-timing-attlist',
+22: SEQUENCE
+23: REF 'common-basic-timing-attlist',
+24: SEQUENCE
+25: REF 'common-begin-end-timing-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "smil:begin",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:end",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-dur-timing-attlist',
+26: CHOICE
+27: ATTRIBUTE "smil:dur",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-repeat-timing-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "smil:repeatDur",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "smil:repeatCount",
+29: CHOICE
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+30: VALUE 'indefinite',
+28: EPSILON
+23: REF 'common-restart-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restart",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'default',
+25: EPSILON
+23: REF 'common-restart-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:restartDefault",
+26: CHOICE
+27: VALUE 'never',
+27: VALUE 'always',
+27: VALUE 'whenNotActive',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-fill-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fill",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'auto',
+27: VALUE 'default',
+27: VALUE 'transition',
+25: EPSILON
+23: REF 'common-fill-default-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:fillDefault",
+26: CHOICE
+27: VALUE 'remove',
+27: VALUE 'freeze',
+27: VALUE 'hold',
+27: VALUE 'transition',
+27: VALUE 'auto',
+27: VALUE 'inherit',
+25: EPSILON
+23: REF 'common-time-manip-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:accelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:decelerate",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:autoReverse",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+21: REF 'common-endsync-timing-attlist',
+22: CHOICE
+23: ATTRIBUTE "smil:endsync",
+24: CHOICE
+25: VALUE 'first',
+25: VALUE 'last',
+25: VALUE 'all',
+25: VALUE 'media',
+23: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: REF 'animation-element',
+24: CHOICE
+22: EPSILON
+19: ELEMENT "anim:audio",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'anim-audio-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "xlink:href",
+25: REF 'anyURI',
+26: DATA 'anyURI',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:audio-level",
+25: REF 'double',
+26: DATA 'double',
+24: EPSILON
+21: REF 'common-basic-timing-attlist',
+22: SEQUENCE
+23: REF 'common-begin-end-timing-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "smil:begin",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:end",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+23: REF 'common-dur-timing-attlist',
+24: CHOICE
+25: ATTRIBUTE "smil:dur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+23: REF 'common-repeat-timing-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "smil:repeatDur",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:repeatCount",
+27: CHOICE
+28: REF 'nonNegativeInteger',
+29: DATA 'nonNegativeInteger',
+28: VALUE 'indefinite',
+26: EPSILON
+19: ELEMENT "anim:command",
+20: SEQUENCE
+21: REF 'common-anim-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:node-type",
+25: CHOICE
+26: VALUE 'default',
+26: VALUE 'on-click',
+26: VALUE 'with-previous',
+26: VALUE 'after-previous',
+26: VALUE 'timing-root',
+26: VALUE 'main-sequence',
+26: VALUE 'interactive-sequence',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-sub-type",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:preset-class",
+25: CHOICE
+26: VALUE 'custom',
+26: VALUE 'entrance',
+26: VALUE 'exit',
+26: VALUE 'emphasis',
+26: VALUE 'motion-path',
+26: VALUE 'ole-action',
+26: VALUE 'media-call',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:master-element",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "presentation:group-id",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:id",
+25: REF 'ID',
+26: DATA 'ID',
+24: EPSILON
+21: REF 'anim-command-attlist',
+22: ATTRIBUTE "anim:command",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-begin-end-timing-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:begin",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "smil:end",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: REF 'common-anim-target-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "smil:targetElement",
+25: REF 'IDREF',
+26: DATA 'IDREF',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "anim:sub-item",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: ELEMENT "anim:param",
+24: SEQUENCE
+25: ATTRIBUTE "anim:name",
+26: STRING
+25: ATTRIBUTE "anim:value",
+26: STRING
+22: EPSILON
+17: EPSILON
+16: CHOICE
+17: REF 'presentation-notes',
+17: EPSILON
+12: EPSILON
+10: REF 'office-drawing-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:presentation",
+9: SEQUENCE
+10: REF 'office-presentation-attlist',
+11: EPSILON
+10: REF 'office-presentation-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+12: REF 'presentation-decls',
+13: CHOICE
+14: ONEOREMORE
+15: REF 'presentation-decl',
+16: CHOICE
+17: ELEMENT "presentation:header-decl",
+18: SEQUENCE
+19: REF 'presentation-header-decl-attlist',
+20: ATTRIBUTE "presentation:name",
+21: REF 'string',
+22: DATA 'string',
+19: STRING
+17: ELEMENT "presentation:footer-decl",
+18: SEQUENCE
+19: REF 'presentation-footer-decl-attlist',
+20: ATTRIBUTE "presentation:name",
+21: REF 'string',
+22: DATA 'string',
+19: STRING
+17: ELEMENT "presentation:date-time-decl",
+18: SEQUENCE
+19: REF 'presentation-date-time-decl-attlist',
+20: INTERLEAVE
+21: ATTRIBUTE "presentation:name",
+22: REF 'string',
+23: DATA 'string',
+21: ATTRIBUTE "presentation:source",
+22: CHOICE
+23: VALUE 'fixed',
+23: VALUE 'current-date',
+21: CHOICE
+22: ATTRIBUTE "style:data-style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+19: STRING
+14: EPSILON
+10: REF 'office-presentation-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-page',
+12: EPSILON
+10: REF 'office-presentation-content-epilogue',
+11: SEQUENCE
+12: REF 'presentation-settings',
+13: CHOICE
+14: ELEMENT "presentation:settings",
+15: SEQUENCE
+16: REF 'presentation-settings-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "presentation:start-page",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:full-screen",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:endless",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:pause",
+20: REF 'duration',
+21: DATA 'duration',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show-logo",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:force-manual",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:mouse-visible",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:mouse-as-pen",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:start-with-navigator",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:animations",
+20: CHOICE
+21: VALUE 'enabled',
+21: VALUE 'disabled',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:transition-on-click",
+20: CHOICE
+21: VALUE 'enabled',
+21: VALUE 'disabled',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:stay-on-top",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show-end-of-presentation-slide",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'presentation-show',
+19: ELEMENT "presentation:show",
+20: REF 'presentation-show-attlist',
+21: INTERLEAVE
+22: ATTRIBUTE "presentation:name",
+23: REF 'string',
+24: DATA 'string',
+22: ATTRIBUTE "presentation:pages",
+23: STRING
+17: EPSILON
+14: EPSILON
+12: REF 'table-functions',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-named-expressions',
+15: EPSILON
+14: CHOICE
+15: REF 'table-database-ranges',
+15: EPSILON
+14: CHOICE
+15: REF 'table-data-pilot-tables',
+15: EPSILON
+14: CHOICE
+15: REF 'table-consolidation',
+15: EPSILON
+14: CHOICE
+15: REF 'table-dde-links',
+15: EPSILON
+8: ELEMENT "office:spreadsheet",
+9: SEQUENCE
+10: REF 'office-spreadsheet-attlist',
+11: SEQUENCE
+12: CHOICE
+13: ATTRIBUTE "table:structure-protected",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+12: CHOICE
+13: ATTRIBUTE "table:protection-key",
+14: REF 'string',
+15: DATA 'string',
+13: EPSILON
+10: REF 'office-spreadsheet-content-prelude',
+11: SEQUENCE
+12: CHOICE
+13: REF 'table-tracked-changes',
+14: ELEMENT "table:tracked-changes",
+15: SEQUENCE
+16: REF 'table-tracked-changes-attlist',
+17: CHOICE
+18: ATTRIBUTE "table:track-changes",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: CHOICE
+19: REF 'table-cell-content-change',
+20: ELEMENT "table:cell-content-change",
+21: SEQUENCE
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'table-cell-address',
+23: ELEMENT "table:cell-address",
+24: REF 'common-table-cell-address-attlist',
+25: SEQUENCE
+26: ATTRIBUTE "table:column",
+27: REF 'integer',
+28: DATA 'integer',
+26: ATTRIBUTE "table:row",
+27: REF 'integer',
+28: DATA 'integer',
+26: ATTRIBUTE "table:table",
+27: REF 'integer',
+28: DATA 'integer',
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+24: ELEMENT "table:dependencies",
+25: ONEOREMORE
+26: REF 'table-dependency',
+27: ELEMENT "table:dependency",
+28: ATTRIBUTE "table:id",
+29: REF 'string',
+30: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+24: ELEMENT "table:deletions",
+25: ONEOREMORE
+26: CHOICE
+27: REF 'table-cell-content-deletion',
+28: ELEMENT "table:cell-content-deletion",
+29: SEQUENCE
+30: CHOICE
+31: ATTRIBUTE "table:id",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: REF 'table-cell-address',
+31: EPSILON
+30: CHOICE
+31: REF 'table-change-track-table-cell',
+32: ELEMENT "table:change-track-table-cell",
+33: SEQUENCE
+34: REF 'table-change-track-table-cell-attlist',
+35: INTERLEAVE
+36: CHOICE
+37: ATTRIBUTE "table:cell-address",
+38: REF 'cellAddress',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "table:matrix-covered",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+36: SEQUENCE
+37: CHOICE
+38: ATTRIBUTE "table:formula",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+37: CHOICE
+38: ATTRIBUTE "table:number-matrix-columns-spanned",
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+38: EPSILON
+37: CHOICE
+38: ATTRIBUTE "table:number-matrix-rows-spanned",
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+38: EPSILON
+37: CHOICE
+38: REF 'common-value-and-type-attlist',
+39: CHOICE
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'float',
+41: ATTRIBUTE "office:value",
+42: REF 'double',
+43: DATA 'double',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'percentage',
+41: ATTRIBUTE "office:value",
+42: REF 'double',
+43: DATA 'double',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'currency',
+41: ATTRIBUTE "office:value",
+42: REF 'double',
+43: DATA 'double',
+41: CHOICE
+42: ATTRIBUTE "office:currency",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'date',
+41: ATTRIBUTE "office:date-value",
+42: REF 'dateOrDateTime',
+43: CHOICE
+44: DATA 'date',
+44: DATA 'dateTime',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'time',
+41: ATTRIBUTE "office:time-value",
+42: REF 'duration',
+43: DATA 'duration',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'boolean',
+41: ATTRIBUTE "office:boolean-value",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+40: SEQUENCE
+41: ATTRIBUTE "office:value-type",
+42: VALUE 'string',
+41: CHOICE
+42: ATTRIBUTE "office:string-value",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+38: EPSILON
+34: CHOICE
+35: ONEOREMORE
+36: REF 'text-p',
+35: EPSILON
+31: EPSILON
+27: REF 'table-change-deletion',
+28: ELEMENT "table:change-deletion",
+29: CHOICE
+30: ATTRIBUTE "table:id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+23: EPSILON
+22: REF 'table-previous',
+23: ELEMENT "table:previous",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:id",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: REF 'table-change-track-table-cell',
+19: REF 'table-insertion',
+20: ELEMENT "table:insertion",
+21: SEQUENCE
+22: REF 'table-insertion-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:type",
+25: CHOICE
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'table',
+24: ATTRIBUTE "table:position",
+25: REF 'integer',
+26: DATA 'integer',
+24: CHOICE
+25: ATTRIBUTE "table:count",
+26: REF 'positiveInteger',
+27: DATA 'positiveInteger',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:table",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+19: REF 'table-deletion',
+20: ELEMENT "table:deletion",
+21: SEQUENCE
+22: REF 'table-deletion-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:type",
+25: CHOICE
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'table',
+24: ATTRIBUTE "table:position",
+25: REF 'integer',
+26: DATA 'integer',
+24: CHOICE
+25: ATTRIBUTE "table:table",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:multi-deletion-spanned",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+22: CHOICE
+23: REF 'table-cut-offs',
+24: ELEMENT "table:cut-offs",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'table-movement-cut-off',
+28: ELEMENT "table:movement-cut-off",
+29: REF 'table-movement-cut-off-attlist',
+30: CHOICE
+31: ATTRIBUTE "table:position",
+32: REF 'integer',
+33: DATA 'integer',
+31: SEQUENCE
+32: ATTRIBUTE "table:start-position",
+33: REF 'integer',
+34: DATA 'integer',
+32: ATTRIBUTE "table:end-position",
+33: REF 'integer',
+34: DATA 'integer',
+26: SEQUENCE
+27: REF 'table-insertion-cut-off',
+28: ELEMENT "table:insertion-cut-off",
+29: REF 'table-insertion-cut-off-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:id",
+32: REF 'string',
+33: DATA 'string',
+31: ATTRIBUTE "table:position",
+32: REF 'integer',
+33: DATA 'integer',
+27: CHOICE
+28: ONEOREMORE
+29: REF 'table-movement-cut-off',
+28: EPSILON
+23: EPSILON
+19: REF 'table-movement',
+20: ELEMENT "table:movement",
+21: SEQUENCE
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'table-source-range-address',
+23: ELEMENT "table:source-range-address",
+24: REF 'common-table-range-attlist',
+25: CHOICE
+26: REF 'common-table-cell-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:table",
+29: REF 'integer',
+30: DATA 'integer',
+26: REF 'common-table-cell-range-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:start-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-table",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-table",
+29: REF 'integer',
+30: DATA 'integer',
+22: REF 'table-target-range-address',
+23: ELEMENT "table:target-range-address",
+24: REF 'common-table-range-attlist',
+25: CHOICE
+26: REF 'common-table-cell-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:table",
+29: REF 'integer',
+30: DATA 'integer',
+26: REF 'common-table-cell-range-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:start-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-table",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-table",
+29: REF 'integer',
+30: DATA 'integer',
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+17: EPSILON
+13: EPSILON
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-spreadsheet-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'table-table',
+12: EPSILON
+10: REF 'office-spreadsheet-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:chart",
+9: SEQUENCE
+10: REF 'office-chart-attlist',
+11: EPSILON
+10: REF 'office-chart-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-chart-content-main',
+11: REF 'chart-chart',
+12: ELEMENT "chart:chart",
+13: SEQUENCE
+14: REF 'chart-chart-attlist',
+15: INTERLEAVE
+16: ATTRIBUTE "chart:class",
+17: REF 'namespacedToken',
+18: DATA 'string',
+16: REF 'common-draw-size-attlist',
+17: SEQUENCE
+18: CHOICE
+19: ATTRIBUTE "svg:width",
+20: REF 'length',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "svg:height",
+20: REF 'length',
+21: DATA 'string',
+19: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:column-mapping",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:row-mapping",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:style-name",
+18: REF 'styleNameRef',
+19: CHOICE
+20: DATA 'NCName',
+20: EPSILON
+17: EPSILON
+14: CHOICE
+15: REF 'chart-title',
+16: ELEMENT "chart:title",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellAddress',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-subtitle',
+16: ELEMENT "chart:subtitle",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellAddress',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-footer',
+16: ELEMENT "chart:footer",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellAddress',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-legend',
+16: ELEMENT "chart:legend",
+17: REF 'chart-legend-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: SEQUENCE
+21: ATTRIBUTE "chart:legend-position",
+22: CHOICE
+23: VALUE 'start',
+23: VALUE 'end',
+23: VALUE 'top',
+23: VALUE 'bottom',
+21: CHOICE
+22: ATTRIBUTE "chart:legend-align",
+23: CHOICE
+24: VALUE 'start',
+24: VALUE 'center',
+24: VALUE 'end',
+22: EPSILON
+20: ATTRIBUTE "chart:legend-position",
+21: CHOICE
+22: VALUE 'top-start',
+22: VALUE 'bottom-start',
+22: VALUE 'top-end',
+22: VALUE 'bottom-end',
+20: EPSILON
+19: REF 'common-draw-position-attlist',
+20: SEQUENCE
+21: CHOICE
+22: ATTRIBUTE "svg:x",
+23: REF 'coordinate',
+24: REF 'length',
+25: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "svg:y",
+23: REF 'coordinate',
+24: REF 'length',
+25: DATA 'string',
+22: EPSILON
+19: CHOICE
+20: ATTRIBUTE "style:legend-expansion",
+21: CHOICE
+22: VALUE 'wide',
+22: VALUE 'high',
+22: VALUE 'balanced',
+20: SEQUENCE
+21: ATTRIBUTE "style:legend-expansion",
+22: VALUE 'custom',
+21: ATTRIBUTE "style:legend-expansion-aspect-ratio",
+22: REF 'double',
+23: DATA 'double',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+15: EPSILON
+14: REF 'chart-plot-area',
+15: ELEMENT "chart:plot-area",
+16: SEQUENCE
+17: REF 'chart-plot-area-attlist',
+18: INTERLEAVE
+19: SEQUENCE
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: REF 'common-draw-size-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:height",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "table:cell-range-address",
+21: REF 'cellRangeAddress',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:data-source-has-labels",
+21: CHOICE
+22: VALUE 'none',
+22: VALUE 'row',
+22: VALUE 'column',
+22: VALUE 'both',
+20: EPSILON
+19: SEQUENCE
+20: REF 'dr3d-scene-attlist',
+21: INTERLEAVE
+22: SEQUENCE
+23: CHOICE
+24: ATTRIBUTE "dr3d:vrp",
+25: REF 'vector3D',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "dr3d:vpn",
+25: REF 'vector3D',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "dr3d:vup",
+25: REF 'vector3D',
+26: DATA 'string',
+24: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:projection",
+24: CHOICE
+25: VALUE 'parallel',
+25: VALUE 'perspective',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:distance",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:focal-length",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:shadow-slant",
+24: REF 'nonNegativeInteger',
+25: DATA 'nonNegativeInteger',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:shade-mode",
+24: CHOICE
+25: VALUE 'flat',
+25: VALUE 'phong',
+25: VALUE 'gouraud',
+25: VALUE 'draft',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:ambient-color",
+24: REF 'color',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "dr3d:lighting-mode",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+20: REF 'common-dr3d-transform-attlist',
+21: CHOICE
+22: ATTRIBUTE "dr3d:transform",
+23: STRING
+22: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'dr3d-light',
+18: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'chart-axis',
+20: ELEMENT "chart:axis",
+21: SEQUENCE
+22: REF 'chart-axis-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "chart:dimension",
+25: CHOICE
+26: VALUE 'x',
+26: VALUE 'y',
+26: VALUE 'z',
+24: CHOICE
+25: ATTRIBUTE "chart:name",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:style-name",
+26: REF 'styleNameRef',
+27: CHOICE
+28: DATA 'NCName',
+28: EPSILON
+25: EPSILON
+22: CHOICE
+23: REF 'chart-title',
+23: EPSILON
+22: CHOICE
+23: REF 'chart-categories',
+24: ELEMENT "chart:categories",
+25: CHOICE
+26: ATTRIBUTE "table:cell-range-address",
+27: REF 'cellRangeAddress',
+28: DATA 'string',
+26: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-grid',
+25: ELEMENT "chart:grid",
+26: REF 'chart-grid-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "chart:class",
+30: CHOICE
+31: VALUE 'major',
+31: VALUE 'minor',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'chart-series',
+20: ELEMENT "chart:series",
+21: SEQUENCE
+22: REF 'chart-series-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "chart:values-cell-range-address",
+26: REF 'cellRangeAddress',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:label-cell-address",
+26: REF 'cellAddress',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:class",
+26: REF 'namespacedToken',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:attached-axis",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:style-name",
+26: REF 'styleNameRef',
+27: CHOICE
+28: DATA 'NCName',
+28: EPSILON
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-domain',
+25: ELEMENT "chart:domain",
+26: CHOICE
+27: ATTRIBUTE "table:cell-range-address",
+28: REF 'cellRangeAddress',
+29: DATA 'string',
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-mean-value',
+24: ELEMENT "chart:mean-value",
+25: REF 'chart-mean-value-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-regression-curve',
+24: ELEMENT "chart:regression-curve",
+25: REF 'chart-regression-curve-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-error-indicator',
+24: ELEMENT "chart:error-indicator",
+25: REF 'chart-error-indicator-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-data-point',
+25: ELEMENT "chart:data-point",
+26: REF 'chart-data-point-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "chart:repeated",
+30: REF 'nonNegativeInteger',
+31: DATA 'nonNegativeInteger',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-gain-marker',
+19: ELEMENT "chart:stock-gain-marker",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-loss-marker',
+19: ELEMENT "chart:stock-loss-marker",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-range-line',
+19: ELEMENT "chart:stock-range-line",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-wall',
+19: ELEMENT "chart:wall",
+20: REF 'chart-wall-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "chart:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-floor',
+19: ELEMENT "chart:floor",
+20: REF 'chart-floor-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "chart:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+18: EPSILON
+14: CHOICE
+15: REF 'table-table',
+15: EPSILON
+10: REF 'office-chart-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:image",
+9: SEQUENCE
+10: REF 'office-image-attlist',
+11: EPSILON
+10: REF 'office-image-content-prelude',
+11: EPSILON
+10: REF 'office-image-content-main',
+11: REF 'draw-frame',
+10: REF 'office-image-content-epilogue',
+11: EPSILON
+1: REF 'office-document-content',
+2: ELEMENT "office:document-content",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-scripts',
+5: CHOICE
+4: REF 'office-font-face-decls',
+5: CHOICE
+4: REF 'office-automatic-styles',
+5: CHOICE
+4: REF 'office-body',
+1: REF 'office-document-styles',
+2: ELEMENT "office:document-styles",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-font-face-decls',
+5: CHOICE
+4: REF 'office-styles',
+5: CHOICE
+4: REF 'office-automatic-styles',
+5: CHOICE
+4: REF 'office-master-styles',
+5: CHOICE
+1: REF 'office-document-meta',
+2: ELEMENT "office:document-meta",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-meta',
+5: CHOICE
+1: REF 'office-document-settings',
+2: ELEMENT "office:document-settings",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: CHOICE
+6: ATTRIBUTE "office:version",
+7: REF 'string',
+8: DATA 'string',
+6: EPSILON
+4: REF 'office-settings',
+5: CHOICE
diff --git a/trunk/generator/schema2template/src/test/resources/examples/odf/odf12-msvtree.ref b/trunk/generator/schema2template/src/test/resources/examples/odf/odf12-msvtree.ref
new file mode 100644
index 0000000..3cb2ce3
--- /dev/null
+++ b/trunk/generator/schema2template/src/test/resources/examples/odf/odf12-msvtree.ref
@@ -0,0 +1,28008 @@
+0: CHOICE
+1: REF 'office-document',
+2: ELEMENT "office:document",
+3: SEQUENCE
+4: REF 'office-document-attrs',
+5: ATTRIBUTE "office:mimetype",
+6: REF 'string',
+7: DATA 'string',
+4: REF 'office-document-common-attrs',
+5: INTERLEAVE
+6: ATTRIBUTE "office:version",
+7: VALUE '1.2',
+6: CHOICE
+7: ATTRIBUTE "grddl:transformation",
+8: LIST
+9: CHOICE
+10: ONEOREMORE
+11: REF 'anyIRI',
+12: DATA 'anyURI',
+10: EPSILON
+7: EPSILON
+4: REF 'office-meta',
+5: CHOICE
+6: ELEMENT "office:meta",
+7: REF 'office-meta-content-strict',
+8: CHOICE
+9: ONEOREMORE
+10: REF 'office-meta-data',
+11: CHOICE
+12: ELEMENT "meta:generator",
+13: REF 'string',
+14: DATA 'string',
+12: ELEMENT "dc:title",
+13: REF 'string',
+14: DATA 'string',
+12: ELEMENT "dc:description",
+13: REF 'string',
+14: DATA 'string',
+12: ELEMENT "dc:subject",
+13: REF 'string',
+14: DATA 'string',
+12: ELEMENT "meta:keyword",
+13: REF 'string',
+14: DATA 'string',
+12: ELEMENT "meta:initial-creator",
+13: REF 'string',
+14: DATA 'string',
+12: REF 'dc-creator',
+13: ELEMENT "dc:creator",
+14: REF 'string',
+15: DATA 'string',
+12: ELEMENT "meta:printed-by",
+13: REF 'string',
+14: DATA 'string',
+12: ELEMENT "meta:creation-date",
+13: REF 'dateTime',
+14: DATA 'dateTime',
+12: REF 'dc-date',
+13: ELEMENT "dc:date",
+14: REF 'dateTime',
+15: DATA 'dateTime',
+12: ELEMENT "meta:print-date",
+13: REF 'dateTime',
+14: DATA 'dateTime',
+12: ELEMENT "meta:template",
+13: SEQUENCE
+14: ATTRIBUTE "xlink:type",
+15: VALUE 'simple',
+14: ATTRIBUTE "xlink:href",
+15: REF 'anyIRI',
+16: DATA 'anyURI',
+14: CHOICE
+15: ATTRIBUTE "xlink:actuate",
+16: VALUE 'onRequest',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "xlink:title",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:date",
+16: REF 'dateTime',
+17: DATA 'dateTime',
+15: EPSILON
+12: ELEMENT "meta:auto-reload",
+13: SEQUENCE
+14: CHOICE
+15: SEQUENCE
+16: ATTRIBUTE "xlink:type",
+17: VALUE 'simple',
+16: ATTRIBUTE "xlink:href",
+17: REF 'anyIRI',
+18: DATA 'anyURI',
+16: CHOICE
+17: ATTRIBUTE "xlink:show",
+18: VALUE 'replace',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "xlink:actuate",
+18: VALUE 'onLoad',
+17: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:delay",
+16: REF 'duration',
+17: DATA 'duration',
+15: EPSILON
+12: ELEMENT "meta:hyperlink-behaviour",
+13: SEQUENCE
+14: CHOICE
+15: ATTRIBUTE "office:target-frame-name",
+16: REF 'targetFrameName',
+17: CHOICE
+18: VALUE '_self',
+18: VALUE '_blank',
+18: VALUE '_parent',
+18: VALUE '_top',
+18: REF 'string',
+19: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "xlink:show",
+16: CHOICE
+17: VALUE 'new',
+17: VALUE 'replace',
+15: EPSILON
+12: ELEMENT "dc:language",
+13: REF 'language',
+14: DATA 'language',
+12: ELEMENT "meta:editing-cycles",
+13: REF 'nonNegativeInteger',
+14: DATA 'nonNegativeInteger',
+12: ELEMENT "meta:editing-duration",
+13: REF 'duration',
+14: DATA 'duration',
+12: ELEMENT "meta:document-statistic",
+13: SEQUENCE
+14: CHOICE
+15: ATTRIBUTE "meta:page-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:table-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:draw-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:image-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:ole-object-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:object-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:paragraph-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:word-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:character-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:frame-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:sentence-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:syllable-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:non-whitespace-character-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:row-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "meta:cell-count",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+12: ELEMENT "meta:user-defined",
+13: SEQUENCE
+14: ATTRIBUTE "meta:name",
+15: REF 'string',
+16: DATA 'string',
+14: CHOICE
+15: SEQUENCE
+16: ATTRIBUTE "meta:value-type",
+17: VALUE 'float',
+16: REF 'double',
+17: DATA 'double',
+15: SEQUENCE
+16: ATTRIBUTE "meta:value-type",
+17: VALUE 'date',
+16: REF 'dateOrDateTime',
+17: CHOICE
+18: DATA 'date',
+18: DATA 'dateTime',
+15: SEQUENCE
+16: ATTRIBUTE "meta:value-type",
+17: VALUE 'time',
+16: REF 'duration',
+17: DATA 'duration',
+15: SEQUENCE
+16: ATTRIBUTE "meta:value-type",
+17: VALUE 'boolean',
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: SEQUENCE
+16: ATTRIBUTE "meta:value-type",
+17: VALUE 'string',
+16: REF 'string',
+17: DATA 'string',
+15: STRING
+9: EPSILON
+6: EPSILON
+4: REF 'office-settings',
+5: CHOICE
+6: ELEMENT "office:settings",
+7: ONEOREMORE
+8: REF 'config-config-item-set',
+9: ELEMENT "config:config-item-set",
+10: SEQUENCE
+11: REF 'config-config-item-set-attlist',
+12: ATTRIBUTE "config:name",
+13: REF 'string',
+14: DATA 'string',
+11: REF 'config-items',
+12: ONEOREMORE
+13: CHOICE
+14: REF 'config-config-item',
+15: ELEMENT "config:config-item",
+16: SEQUENCE
+17: REF 'config-config-item-attlist',
+18: INTERLEAVE
+19: ATTRIBUTE "config:name",
+20: REF 'string',
+21: DATA 'string',
+19: ATTRIBUTE "config:type",
+20: CHOICE
+21: VALUE 'boolean',
+21: VALUE 'short',
+21: VALUE 'int',
+21: VALUE 'long',
+21: VALUE 'double',
+21: VALUE 'string',
+21: VALUE 'datetime',
+21: VALUE 'base64Binary',
+17: STRING
+14: REF 'config-config-item-set',
+14: REF 'config-config-item-map-named',
+15: ELEMENT "config:config-item-map-named",
+16: SEQUENCE
+17: REF 'config-config-item-map-named-attlist',
+18: ATTRIBUTE "config:name",
+19: REF 'string',
+20: DATA 'string',
+17: ONEOREMORE
+18: REF 'config-config-item-map-entry',
+19: ELEMENT "config:config-item-map-entry",
+20: SEQUENCE
+21: REF 'config-config-item-map-entry-attlist',
+22: CHOICE
+23: ATTRIBUTE "config:name",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'config-items',
+22: ONEOREMORE
+23: CHOICE
+24: REF 'config-config-item',
+24: REF 'config-config-item-set',
+24: REF 'config-config-item-map-named',
+24: REF 'config-config-item-map-indexed',
+25: ELEMENT "config:config-item-map-indexed",
+26: SEQUENCE
+27: REF 'config-config-item-map-indexed-attlist',
+28: ATTRIBUTE "config:name",
+29: REF 'string',
+30: DATA 'string',
+27: ONEOREMORE
+28: REF 'config-config-item-map-entry',
+14: REF 'config-config-item-map-indexed',
+6: EPSILON
+4: REF 'office-scripts',
+5: CHOICE
+6: ELEMENT "office:scripts",
+7: SEQUENCE
+8: CHOICE
+9: ONEOREMORE
+10: REF 'office-script',
+11: ELEMENT "office:script",
+12: SEQUENCE
+13: REF 'office-script-attlist',
+14: ATTRIBUTE "script:language",
+15: REF 'string',
+16: DATA 'string',
+13: MIXED
+14: REF 'anyElements',
+15: CHOICE
+16: ONEOREMORE
+17: ELEMENT "*",
+18: MIXED
+19: REF 'anyAttListOrElements',
+20: SEQUENCE
+21: CHOICE
+22: ONEOREMORE
+23: ATTRIBUTE "*",
+24: STRING
+22: EPSILON
+21: REF 'anyElements',
+22: CHOICE
+23: ONEOREMORE
+23: EPSILON
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'office-event-listeners',
+10: ELEMENT "office:event-listeners",
+11: CHOICE
+12: ONEOREMORE
+13: CHOICE
+14: REF 'script-event-listener',
+15: ELEMENT "script:event-listener",
+16: REF 'script-event-listener-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "script:event-name",
+19: REF 'string',
+20: DATA 'string',
+18: ATTRIBUTE "script:language",
+19: REF 'string',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "script:macro-name",
+20: REF 'string',
+21: DATA 'string',
+19: SEQUENCE
+20: ATTRIBUTE "xlink:type",
+21: VALUE 'simple',
+20: ATTRIBUTE "xlink:href",
+21: REF 'anyIRI',
+22: DATA 'anyURI',
+20: CHOICE
+21: ATTRIBUTE "xlink:actuate",
+22: VALUE 'onRequest',
+21: EPSILON
+14: REF 'presentation-event-listener',
+15: ELEMENT "presentation:event-listener",
+16: SEQUENCE
+17: REF 'presentation-event-listener-attlist',
+18: INTERLEAVE
+19: ATTRIBUTE "script:event-name",
+20: REF 'string',
+21: DATA 'string',
+19: ATTRIBUTE "presentation:action",
+20: CHOICE
+21: VALUE 'none',
+21: VALUE 'previous-page',
+21: VALUE 'next-page',
+21: VALUE 'first-page',
+21: VALUE 'last-page',
+21: VALUE 'hide',
+21: VALUE 'stop',
+21: VALUE 'execute',
+21: VALUE 'show',
+21: VALUE 'verb',
+21: VALUE 'fade-out',
+21: VALUE 'sound',
+21: VALUE 'last-visited-page',
+19: CHOICE
+20: ATTRIBUTE "presentation:effect",
+21: REF 'presentationEffects',
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'fade',
+23: VALUE 'move',
+23: VALUE 'stripes',
+23: VALUE 'open',
+23: VALUE 'close',
+23: VALUE 'dissolve',
+23: VALUE 'wavyline',
+23: VALUE 'random',
+23: VALUE 'lines',
+23: VALUE 'laser',
+23: VALUE 'appear',
+23: VALUE 'hide',
+23: VALUE 'move-short',
+23: VALUE 'checkerboard',
+23: VALUE 'rotate',
+23: VALUE 'stretch',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:direction",
+21: REF 'presentationEffectDirections',
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'from-left',
+23: VALUE 'from-top',
+23: VALUE 'from-right',
+23: VALUE 'from-bottom',
+23: VALUE 'from-center',
+23: VALUE 'from-upper-left',
+23: VALUE 'from-upper-right',
+23: VALUE 'from-lower-left',
+23: VALUE 'from-lower-right',
+23: VALUE 'to-left',
+23: VALUE 'to-top',
+23: VALUE 'to-right',
+23: VALUE 'to-bottom',
+23: VALUE 'to-upper-left',
+23: VALUE 'to-upper-right',
+23: VALUE 'to-lower-right',
+23: VALUE 'to-lower-left',
+23: VALUE 'path',
+23: VALUE 'spiral-inward-left',
+23: VALUE 'spiral-inward-right',
+23: VALUE 'spiral-outward-left',
+23: VALUE 'spiral-outward-right',
+23: VALUE 'vertical',
+23: VALUE 'horizontal',
+23: VALUE 'to-center',
+23: VALUE 'clockwise',
+23: VALUE 'counter-clockwise',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:speed",
+21: REF 'presentationSpeeds',
+22: CHOICE
+23: VALUE 'slow',
+23: VALUE 'medium',
+23: VALUE 'fast',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:start-scale",
+21: REF 'percent',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: SEQUENCE
+21: ATTRIBUTE "xlink:type",
+22: VALUE 'simple',
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyIRI',
+23: DATA 'anyURI',
+21: CHOICE
+22: ATTRIBUTE "xlink:show",
+23: VALUE 'embed',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "xlink:actuate",
+23: VALUE 'onRequest',
+22: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:verb",
+21: REF 'nonNegativeInteger',
+22: DATA 'nonNegativeInteger',
+20: EPSILON
+17: CHOICE
+18: REF 'presentation-sound',
+19: ELEMENT "presentation:sound",
+20: SEQUENCE
+21: REF 'presentation-sound-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "presentation:play-full",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: REF 'xml-id',
+25: ATTRIBUTE "xml:id",
+26: REF 'ID',
+27: DATA 'ID',
+24: EPSILON
+21: ATTRIBUTE "xlink:type",
+22: VALUE 'simple',
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyIRI',
+23: DATA 'anyURI',
+21: CHOICE
+22: ATTRIBUTE "xlink:actuate",
+23: VALUE 'onRequest',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "xlink:show",
+23: CHOICE
+24: VALUE 'new',
+24: VALUE 'replace',
+22: EPSILON
+18: EPSILON
+12: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-font-face-decls',
+5: CHOICE
+6: ELEMENT "office:font-face-decls",
+7: CHOICE
+8: ONEOREMORE
+9: REF 'style-font-face',
+10: ELEMENT "style:font-face",
+11: SEQUENCE
+12: REF 'style-font-face-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "svg:font-family",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:font-style",
+16: REF 'fontStyle',
+17: CHOICE
+18: VALUE 'normal',
+18: VALUE 'italic',
+18: VALUE 'oblique',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:font-variant",
+16: REF 'fontVariant',
+17: CHOICE
+18: VALUE 'normal',
+18: VALUE 'small-caps',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:font-weight",
+16: REF 'fontWeight',
+17: CHOICE
+18: VALUE 'normal',
+18: VALUE 'bold',
+18: VALUE '100',
+18: VALUE '200',
+18: VALUE '300',
+18: VALUE '400',
+18: VALUE '500',
+18: VALUE '600',
+18: VALUE '700',
+18: VALUE '800',
+18: VALUE '900',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:font-stretch",
+16: CHOICE
+17: VALUE 'normal',
+17: VALUE 'ultra-condensed',
+17: VALUE 'extra-condensed',
+17: VALUE 'condensed',
+17: VALUE 'semi-condensed',
+17: VALUE 'semi-expanded',
+17: VALUE 'expanded',
+17: VALUE 'extra-expanded',
+17: VALUE 'ultra-expanded',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:font-size",
+16: REF 'positiveLength',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:unicode-range",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:units-per-em",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:panose-1",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:stemv",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:stemh",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:slope",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:cap-height",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:x-height",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:accent-height",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:ascent",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:descent",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:widths",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:bbox",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:ideographic",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:alphabetic",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:mathematical",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:hanging",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:v-ideographic",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:v-alphabetic",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:v-mathematical",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:v-hanging",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:underline-position",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:underline-thickness",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:strikethrough-position",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:strikethrough-thickness",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:overline-position",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "svg:overline-thickness",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: ATTRIBUTE "style:name",
+15: REF 'string',
+16: DATA 'string',
+14: CHOICE
+15: ATTRIBUTE "style:font-adornments",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-family-generic",
+16: REF 'fontFamilyGeneric',
+17: CHOICE
+18: VALUE 'roman',
+18: VALUE 'swiss',
+18: VALUE 'modern',
+18: VALUE 'decorative',
+18: VALUE 'script',
+18: VALUE 'system',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-pitch",
+16: REF 'fontPitch',
+17: CHOICE
+18: VALUE 'fixed',
+18: VALUE 'variable',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:font-charset",
+16: REF 'textEncoding',
+17: DATA 'string',
+15: EPSILON
+12: CHOICE
+13: REF 'svg-font-face-src',
+14: ELEMENT "svg:font-face-src",
+15: ONEOREMORE
+16: CHOICE
+17: REF 'svg-font-face-uri',
+18: ELEMENT "svg:font-face-uri",
+19: SEQUENCE
+20: REF 'common-svg-font-face-xlink-attlist',
+21: SEQUENCE
+22: ATTRIBUTE "xlink:type",
+23: VALUE 'simple',
+22: ATTRIBUTE "xlink:href",
+23: REF 'anyIRI',
+24: DATA 'anyURI',
+22: CHOICE
+23: ATTRIBUTE "xlink:actuate",
+24: VALUE 'onRequest',
+23: EPSILON
+20: CHOICE
+21: ONEOREMORE
+22: REF 'svg-font-face-format',
+23: ELEMENT "svg:font-face-format",
+24: CHOICE
+25: ATTRIBUTE "svg:string",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+21: EPSILON
+17: REF 'svg-font-face-name',
+18: ELEMENT "svg:font-face-name",
+19: CHOICE
+20: ATTRIBUTE "svg:name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+13: EPSILON
+12: CHOICE
+13: REF 'svg-definition-src',
+14: ELEMENT "svg:definition-src",
+15: REF 'common-svg-font-face-xlink-attlist',
+16: SEQUENCE
+17: ATTRIBUTE "xlink:type",
+18: VALUE 'simple',
+17: ATTRIBUTE "xlink:href",
+18: REF 'anyIRI',
+19: DATA 'anyURI',
+17: CHOICE
+18: ATTRIBUTE "xlink:actuate",
+19: VALUE 'onRequest',
+18: EPSILON
+13: EPSILON
+8: EPSILON
+6: EPSILON
+4: REF 'office-styles',
+5: CHOICE
+6: ELEMENT "office:styles",
+7: INTERLEAVE
+8: REF 'styles',
+9: INTERLEAVE
+10: CHOICE
+11: ONEOREMORE
+12: REF 'style-style',
+13: ELEMENT "style:style",
+14: SEQUENCE
+15: REF 'style-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:parent-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:next-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:list-level",
+19: CHOICE
+20: REF 'positiveInteger',
+21: DATA 'positiveInteger',
+20: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:list-style-name",
+19: CHOICE
+20: REF 'styleName',
+21: DATA 'NCName',
+20: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:master-page-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:auto-update",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:data-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:percentage-data-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:class",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:default-outline-level",
+19: CHOICE
+20: REF 'positiveInteger',
+21: DATA 'positiveInteger',
+20: EPSILON
+18: EPSILON
+15: REF 'style-style-content',
+16: CHOICE
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'text',
+18: CHOICE
+19: REF 'style-text-properties',
+20: ELEMENT "style:text-properties",
+21: REF 'style-text-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-text-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "fo:font-variant",
+27: REF 'fontVariant',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'small-caps',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:text-transform",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'lowercase',
+28: VALUE 'uppercase',
+28: VALUE 'capitalize',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:use-window-font-color",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-outline",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-type",
+27: REF 'lineType',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'single',
+29: VALUE 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-style",
+27: REF 'lineStyle',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'dotted',
+29: VALUE 'dash',
+29: VALUE 'long-dash',
+29: VALUE 'dot-dash',
+29: VALUE 'dot-dot-dash',
+29: VALUE 'wave',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-width",
+27: REF 'lineWidth',
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'normal',
+29: VALUE 'bold',
+29: VALUE 'thin',
+29: VALUE 'medium',
+29: VALUE 'thick',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+29: REF 'percent',
+30: DATA 'string',
+29: REF 'positiveLength',
+30: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-color",
+27: CHOICE
+28: VALUE 'font-color',
+28: REF 'color',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-text",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-text-style",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-position",
+27: LIST
+28: SEQUENCE
+29: CHOICE
+30: REF 'percent',
+31: DATA 'string',
+30: VALUE 'super',
+30: VALUE 'sub',
+29: CHOICE
+30: REF 'percent',
+31: DATA 'string',
+30: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-name",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-name-asian",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-name-complex",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:font-family",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-family-asian",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-family-complex",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-family-generic",
+27: REF 'fontFamilyGeneric',
+28: CHOICE
+29: VALUE 'roman',
+29: VALUE 'swiss',
+29: VALUE 'modern',
+29: VALUE 'decorative',
+29: VALUE 'script',
+29: VALUE 'system',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-family-generic-asian",
+27: REF 'fontFamilyGeneric',
+28: CHOICE
+29: VALUE 'roman',
+29: VALUE 'swiss',
+29: VALUE 'modern',
+29: VALUE 'decorative',
+29: VALUE 'script',
+29: VALUE 'system',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-family-generic-complex",
+27: REF 'fontFamilyGeneric',
+28: CHOICE
+29: VALUE 'roman',
+29: VALUE 'swiss',
+29: VALUE 'modern',
+29: VALUE 'decorative',
+29: VALUE 'script',
+29: VALUE 'system',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-style-name",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-style-name-asian",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-style-name-complex",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-pitch",
+27: REF 'fontPitch',
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'variable',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-pitch-asian",
+27: REF 'fontPitch',
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'variable',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-pitch-complex",
+27: REF 'fontPitch',
+28: CHOICE
+29: VALUE 'fixed',
+29: VALUE 'variable',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-charset",
+27: REF 'textEncoding',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-charset-asian",
+27: REF 'textEncoding',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-charset-complex",
+27: REF 'textEncoding',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:font-size",
+27: CHOICE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-size-asian",
+27: CHOICE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-size-complex",
+27: CHOICE
+28: REF 'positiveLength',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-size-rel",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-size-rel-asian",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-size-rel-complex",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:script-type",
+27: CHOICE
+28: VALUE 'latin',
+28: VALUE 'asian',
+28: VALUE 'complex',
+28: VALUE 'ignore',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:letter-spacing",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: VALUE 'normal',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:language",
+27: REF 'languageCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:language-asian",
+27: REF 'languageCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:language-complex",
+27: REF 'languageCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:country",
+27: REF 'countryCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:country-asian",
+27: REF 'countryCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:country-complex",
+27: REF 'countryCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:script",
+27: REF 'scriptCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:script-asian",
+27: REF 'scriptCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:script-complex",
+27: REF 'scriptCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rfc-language-tag",
+27: REF 'language',
+28: DATA 'language',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rfc-language-tag-asian",
+27: REF 'language',
+28: DATA 'language',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rfc-language-tag-complex",
+27: REF 'language',
+28: DATA 'language',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:font-style",
+27: REF 'fontStyle',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'italic',
+29: VALUE 'oblique',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-style-asian",
+27: REF 'fontStyle',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'italic',
+29: VALUE 'oblique',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-style-complex",
+27: REF 'fontStyle',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'italic',
+29: VALUE 'oblique',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-relief",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'embossed',
+28: VALUE 'engraved',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:text-shadow",
+27: REF 'shadowType',
+28: CHOICE
+29: VALUE 'none',
+29: REF 'string',
+30: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-underline-type",
+27: REF 'lineType',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'single',
+29: VALUE 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-underline-style",
+27: REF 'lineStyle',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'dotted',
+29: VALUE 'dash',
+29: VALUE 'long-dash',
+29: VALUE 'dot-dash',
+29: VALUE 'dot-dot-dash',
+29: VALUE 'wave',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-underline-width",
+27: REF 'lineWidth',
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'normal',
+29: VALUE 'bold',
+29: VALUE 'thin',
+29: VALUE 'medium',
+29: VALUE 'thick',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+29: REF 'percent',
+30: DATA 'string',
+29: REF 'positiveLength',
+30: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-underline-color",
+27: CHOICE
+28: VALUE 'font-color',
+28: REF 'color',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-overline-type",
+27: REF 'lineType',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'single',
+29: VALUE 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-overline-style",
+27: REF 'lineStyle',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'dotted',
+29: VALUE 'dash',
+29: VALUE 'long-dash',
+29: VALUE 'dot-dash',
+29: VALUE 'dot-dot-dash',
+29: VALUE 'wave',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-overline-width",
+27: REF 'lineWidth',
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'normal',
+29: VALUE 'bold',
+29: VALUE 'thin',
+29: VALUE 'medium',
+29: VALUE 'thick',
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+29: REF 'percent',
+30: DATA 'string',
+29: REF 'positiveLength',
+30: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-overline-color",
+27: CHOICE
+28: VALUE 'font-color',
+28: REF 'color',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-overline-mode",
+27: REF 'lineMode',
+28: CHOICE
+29: VALUE 'continuous',
+29: VALUE 'skip-white-space',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:font-weight",
+27: REF 'fontWeight',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'bold',
+29: VALUE '100',
+29: VALUE '200',
+29: VALUE '300',
+29: VALUE '400',
+29: VALUE '500',
+29: VALUE '600',
+29: VALUE '700',
+29: VALUE '800',
+29: VALUE '900',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-weight-asian",
+27: REF 'fontWeight',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'bold',
+29: VALUE '100',
+29: VALUE '200',
+29: VALUE '300',
+29: VALUE '400',
+29: VALUE '500',
+29: VALUE '600',
+29: VALUE '700',
+29: VALUE '800',
+29: VALUE '900',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-weight-complex",
+27: REF 'fontWeight',
+28: CHOICE
+29: VALUE 'normal',
+29: VALUE 'bold',
+29: VALUE '100',
+29: VALUE '200',
+29: VALUE '300',
+29: VALUE '400',
+29: VALUE '500',
+29: VALUE '600',
+29: VALUE '700',
+29: VALUE '800',
+29: VALUE '900',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-underline-mode",
+27: REF 'lineMode',
+28: CHOICE
+29: VALUE 'continuous',
+29: VALUE 'skip-white-space',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-line-through-mode",
+27: REF 'lineMode',
+28: CHOICE
+29: VALUE 'continuous',
+29: VALUE 'skip-white-space',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:letter-kerning",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-blinking",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-combine",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'letters',
+28: VALUE 'lines',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-combine-start-char",
+27: REF 'character',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-combine-end-char",
+27: REF 'character',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-emphasize",
+27: CHOICE
+28: VALUE 'none',
+28: LIST
+29: SEQUENCE
+30: CHOICE
+31: VALUE 'none',
+31: VALUE 'accent',
+31: VALUE 'dot',
+31: VALUE 'circle',
+31: VALUE 'disc',
+30: CHOICE
+31: VALUE 'above',
+31: VALUE 'below',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-scale",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-rotation-angle",
+27: REF 'angle',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-rotation-scale",
+27: CHOICE
+28: VALUE 'fixed',
+28: VALUE 'line-height',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:hyphenate",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:hyphenation-remain-char-count",
+27: REF 'positiveInteger',
+28: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:hyphenation-push-char-count",
+27: REF 'positiveInteger',
+28: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:display",
+27: VALUE 'true',
+26: ATTRIBUTE "text:display",
+27: VALUE 'none',
+26: SEQUENCE
+27: ATTRIBUTE "text:display",
+28: VALUE 'condition',
+27: ATTRIBUTE "text:condition",
+28: VALUE 'none',
+26: EPSILON
+23: REF 'style-text-properties-elements',
+24: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'paragraph',
+18: CHOICE
+19: REF 'style-paragraph-properties',
+20: ELEMENT "style:paragraph-properties",
+21: REF 'style-paragraph-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-paragraph-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "fo:line-height",
+27: CHOICE
+28: VALUE 'normal',
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:line-height-at-least",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:line-spacing",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:font-independent-line-spacing",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-text-align',
+26: CHOICE
+27: ATTRIBUTE "fo:text-align",
+28: CHOICE
+29: VALUE 'start',
+29: VALUE 'end',
+29: VALUE 'left',
+29: VALUE 'right',
+29: VALUE 'center',
+29: VALUE 'justify',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:text-align-last",
+27: CHOICE
+28: VALUE 'start',
+28: VALUE 'center',
+28: VALUE 'justify',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:justify-single-word",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:keep-together",
+27: CHOICE
+28: VALUE 'auto',
+28: VALUE 'always',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:widows",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:orphans",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:tab-stop-distance",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:hyphenation-keep",
+27: CHOICE
+28: VALUE 'auto',
+28: VALUE 'page',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:hyphenation-ladder-count",
+27: CHOICE
+28: VALUE 'no-limit',
+28: REF 'positiveInteger',
+29: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:register-true",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-horizontal-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-left",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-right",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:text-indent",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:auto-text-indent",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-vertical-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-top",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-bottom",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-margin-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:margin",
+28: CHOICE
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-break-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:break-before",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:break-after",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-border-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:border",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-top",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-bottom",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-left",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-right",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-border-line-width-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-top",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-bottom",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-left",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-right",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:join-border",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-padding-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:padding",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-top",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-bottom",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-left",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-right",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-shadow-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:shadow",
+28: REF 'shadowType',
+29: CHOICE
+30: VALUE 'none',
+30: REF 'string',
+31: DATA 'string',
+27: EPSILON
+25: REF 'common-keep-with-next-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:keep-with-next",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'always',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:number-lines",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:line-number",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-autospace",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'ideograph-alpha',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:punctuation-wrap",
+27: CHOICE
+28: VALUE 'simple',
+28: VALUE 'hanging',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:line-break",
+27: CHOICE
+28: VALUE 'normal',
+28: VALUE 'strict',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:vertical-align",
+27: CHOICE
+28: VALUE 'top',
+28: VALUE 'middle',
+28: VALUE 'bottom',
+28: VALUE 'auto',
+28: VALUE 'baseline',
+26: EPSILON
+25: REF 'common-writing-mode-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode",
+28: CHOICE
+29: VALUE 'lr-tb',
+29: VALUE 'rl-tb',
+29: VALUE 'tb-rl',
+29: VALUE 'tb-lr',
+29: VALUE 'lr',
+29: VALUE 'rl',
+29: VALUE 'tb',
+29: VALUE 'page',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:writing-mode-automatic",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:snap-to-layout-grid",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-page-number-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:page-number",
+28: CHOICE
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+29: VALUE 'auto',
+27: EPSILON
+25: REF 'common-background-transparency-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:background-transparency",
+28: REF 'zeroToHundredPercent',
+29: DATA 'string',
+27: EPSILON
+23: REF 'style-paragraph-properties-elements',
+24: INTERLEAVE
+25: REF 'style-tab-stops',
+26: CHOICE
+27: ELEMENT "style:tab-stops",
+28: CHOICE
+29: ONEOREMORE
+30: REF 'style-tab-stop',
+31: ELEMENT "style:tab-stop",
+32: REF 'style-tab-stop-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "style:position",
+35: REF 'length',
+36: DATA 'string',
+34: CHOICE
+35: ATTRIBUTE "style:type",
+36: CHOICE
+37: VALUE 'left',
+37: VALUE 'center',
+37: VALUE 'right',
+35: EPSILON
+35: SEQUENCE
+36: ATTRIBUTE "style:type",
+37: VALUE 'char',
+36: REF 'style-tab-stop-char-attlist',
+37: ATTRIBUTE "style:char",
+38: REF 'character',
+39: DATA 'string',
+34: CHOICE
+35: ATTRIBUTE "style:leader-type",
+36: REF 'lineType',
+37: CHOICE
+38: VALUE 'none',
+38: VALUE 'single',
+38: VALUE 'double',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:leader-style",
+36: REF 'lineStyle',
+37: CHOICE
+38: VALUE 'none',
+38: VALUE 'solid',
+38: VALUE 'dotted',
+38: VALUE 'dash',
+38: VALUE 'long-dash',
+38: VALUE 'dot-dash',
+38: VALUE 'dot-dot-dash',
+38: VALUE 'wave',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:leader-width",
+36: REF 'lineWidth',
+37: CHOICE
+38: VALUE 'auto',
+38: VALUE 'normal',
+38: VALUE 'bold',
+38: VALUE 'thin',
+38: VALUE 'medium',
+38: VALUE 'thick',
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+38: REF 'percent',
+39: DATA 'string',
+38: REF 'positiveLength',
+39: DATA 'string',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:leader-color",
+36: CHOICE
+37: VALUE 'font-color',
+37: REF 'color',
+38: DATA 'string',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:leader-text",
+36: REF 'character',
+37: DATA 'string',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:leader-text-style",
+36: REF 'styleNameRef',
+37: CHOICE
+38: DATA 'NCName',
+38: EPSILON
+35: EPSILON
+29: EPSILON
+27: EPSILON
+25: REF 'style-drop-cap',
+26: CHOICE
+27: ELEMENT "style:drop-cap",
+28: REF 'style-drop-cap-attlist',
+29: INTERLEAVE
+30: CHOICE
+31: ATTRIBUTE "style:length",
+32: CHOICE
+33: VALUE 'word',
+33: REF 'positiveInteger',
+34: DATA 'positiveInteger',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "style:lines",
+32: REF 'positiveInteger',
+33: DATA 'positiveInteger',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "style:distance",
+32: REF 'length',
+33: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "style:style-name",
+32: REF 'styleNameRef',
+33: CHOICE
+34: DATA 'NCName',
+34: EPSILON
+31: EPSILON
+27: EPSILON
+25: REF 'style-background-image',
+26: CHOICE
+27: ELEMENT "style:background-image",
+28: SEQUENCE
+29: REF 'style-background-image-attlist',
+30: INTERLEAVE
+31: CHOICE
+32: ATTRIBUTE "style:repeat",
+33: CHOICE
+34: VALUE 'no-repeat',
+34: VALUE 'repeat',
+34: VALUE 'stretch',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:position",
+33: CHOICE
+34: VALUE 'left',
+34: VALUE 'center',
+34: VALUE 'right',
+34: VALUE 'top',
+34: VALUE 'bottom',
+34: LIST
+35: SEQUENCE
+36: REF 'horiBackPos',
+37: CHOICE
+38: VALUE 'left',
+38: VALUE 'center',
+38: VALUE 'right',
+36: REF 'vertBackPos',
+37: CHOICE
+38: VALUE 'top',
+38: VALUE 'center',
+38: VALUE 'bottom',
+34: LIST
+35: SEQUENCE
+36: REF 'vertBackPos',
+37: CHOICE
+38: VALUE 'top',
+38: VALUE 'center',
+38: VALUE 'bottom',
+36: REF 'horiBackPos',
+37: CHOICE
+38: VALUE 'left',
+38: VALUE 'center',
+38: VALUE 'right',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "style:filter-name",
+33: REF 'string',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "draw:opacity",
+33: REF 'zeroToHundredPercent',
+34: DATA 'string',
+32: EPSILON
+29: CHOICE
+30: REF 'common-draw-data-attlist',
+31: SEQUENCE
+32: ATTRIBUTE "xlink:type",
+33: VALUE 'simple',
+32: ATTRIBUTE "xlink:href",
+33: REF 'anyIRI',
+34: DATA 'anyURI',
+32: CHOICE
+33: ATTRIBUTE "xlink:show",
+34: VALUE 'embed',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "xlink:actuate",
+34: VALUE 'onLoad',
+33: EPSILON
+30: REF 'office-binary-data',
+31: ELEMENT "office:binary-data",
+32: REF 'base64Binary',
+33: DATA 'base64Binary',
+30: EPSILON
+27: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'section',
+18: CHOICE
+19: REF 'style-section-properties',
+20: ELEMENT "style:section-properties",
+21: REF 'style-section-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-section-properties-attlist',
+24: INTERLEAVE
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-horizontal-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-left",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-right",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:protect",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-editable-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:editable",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:dont-balance-text-columns",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-writing-mode-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode",
+28: CHOICE
+29: VALUE 'lr-tb',
+29: VALUE 'rl-tb',
+29: VALUE 'tb-rl',
+29: VALUE 'tb-lr',
+29: VALUE 'lr',
+29: VALUE 'rl',
+29: VALUE 'tb',
+29: VALUE 'page',
+27: EPSILON
+23: REF 'style-section-properties-elements',
+24: INTERLEAVE
+25: REF 'style-background-image',
+26: CHOICE
+25: REF 'style-columns',
+26: CHOICE
+27: ELEMENT "style:columns",
+28: SEQUENCE
+29: REF 'style-columns-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "fo:column-count",
+32: REF 'positiveInteger',
+33: DATA 'positiveInteger',
+31: CHOICE
+32: ATTRIBUTE "fo:column-gap",
+33: REF 'length',
+34: DATA 'string',
+32: EPSILON
+29: CHOICE
+30: REF 'style-column-sep',
+31: ELEMENT "style:column-sep",
+32: REF 'style-column-sep-attlist',
+33: INTERLEAVE
+34: CHOICE
+35: ATTRIBUTE "style:style",
+36: CHOICE
+37: VALUE 'none',
+37: VALUE 'solid',
+37: VALUE 'dotted',
+37: VALUE 'dashed',
+37: VALUE 'dot-dashed',
+35: EPSILON
+34: ATTRIBUTE "style:width",
+35: REF 'length',
+36: DATA 'string',
+34: CHOICE
+35: ATTRIBUTE "style:height",
+36: REF 'zeroToHundredPercent',
+37: DATA 'string',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:vertical-align",
+36: CHOICE
+37: VALUE 'top',
+37: VALUE 'middle',
+37: VALUE 'bottom',
+35: EPSILON
+34: CHOICE
+35: ATTRIBUTE "style:color",
+36: REF 'color',
+37: DATA 'string',
+35: EPSILON
+30: EPSILON
+29: CHOICE
+30: ONEOREMORE
+31: REF 'style-column',
+32: ELEMENT "style:column",
+33: REF 'style-column-attlist',
+34: INTERLEAVE
+35: ATTRIBUTE "style:rel-width",
+36: REF 'relativeLength',
+37: DATA 'string',
+35: CHOICE
+36: ATTRIBUTE "fo:start-indent",
+37: REF 'length',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "fo:end-indent",
+37: REF 'length',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "fo:space-before",
+37: REF 'length',
+38: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "fo:space-after",
+37: REF 'length',
+38: DATA 'string',
+36: EPSILON
+30: EPSILON
+27: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-notes-configuration',
+28: ELEMENT "text:notes-configuration",
+29: REF 'text-notes-configuration-content',
+30: INTERLEAVE
+31: REF 'text-note-class',
+32: ATTRIBUTE "text:note-class",
+33: CHOICE
+34: VALUE 'footnote',
+34: VALUE 'endnote',
+31: CHOICE
+32: ATTRIBUTE "text:citation-style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:citation-body-style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:default-style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:master-page-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:start-value",
+33: REF 'nonNegativeInteger',
+34: DATA 'nonNegativeInteger',
+32: EPSILON
+31: REF 'common-num-format-prefix-suffix-attlist',
+32: SEQUENCE
+33: CHOICE
+34: ATTRIBUTE "style:num-prefix",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "style:num-suffix",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+31: CHOICE
+32: REF 'common-num-format-attlist',
+33: CHOICE
+34: ATTRIBUTE "style:num-format",
+35: CHOICE
+36: VALUE '1',
+36: VALUE 'i',
+36: VALUE 'I',
+36: REF 'string',
+37: DATA 'string',
+36: EPSILON
+34: SEQUENCE
+35: ATTRIBUTE "style:num-format",
+36: CHOICE
+37: VALUE 'a',
+37: VALUE 'A',
+35: REF 'style-num-letter-sync-attlist',
+36: CHOICE
+37: ATTRIBUTE "style:num-letter-sync",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+34: EPSILON
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:start-numbering-at",
+33: CHOICE
+34: VALUE 'document',
+34: VALUE 'chapter',
+34: VALUE 'page',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:footnotes-position",
+33: CHOICE
+34: VALUE 'text',
+34: VALUE 'page',
+34: VALUE 'section',
+34: VALUE 'document',
+32: EPSILON
+31: CHOICE
+32: ELEMENT "text:note-continuation-notice-forward",
+33: STRING
+32: EPSILON
+31: CHOICE
+32: ELEMENT "text:note-continuation-notice-backward",
+33: STRING
+32: EPSILON
+26: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'ruby',
+18: CHOICE
+19: REF 'style-ruby-properties',
+20: ELEMENT "style:ruby-properties",
+21: REF 'style-ruby-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-ruby-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "style:ruby-position",
+27: CHOICE
+28: VALUE 'above',
+28: VALUE 'below',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:ruby-align",
+27: CHOICE
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+28: VALUE 'distribute-letter',
+28: VALUE 'distribute-space',
+26: EPSILON
+23: REF 'style-ruby-properties-elements',
+24: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table',
+18: CHOICE
+19: REF 'style-table-properties',
+20: ELEMENT "style:table-properties",
+21: REF 'style-table-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-table-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "style:width",
+27: REF 'positiveLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rel-width",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:align",
+27: CHOICE
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+28: VALUE 'margins',
+26: EPSILON
+25: REF 'common-horizontal-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-left",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-right",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-vertical-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-top",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-bottom",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-margin-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:margin",
+28: CHOICE
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-page-number-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:page-number",
+28: CHOICE
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+29: VALUE 'auto',
+27: EPSILON
+25: REF 'common-break-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:break-before",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:break-after",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-shadow-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:shadow",
+28: REF 'shadowType',
+29: CHOICE
+30: VALUE 'none',
+30: REF 'string',
+31: DATA 'string',
+27: EPSILON
+25: REF 'common-keep-with-next-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:keep-with-next",
+28: CHOICE
+29: VALUE 'auto',
+29: VALUE 'always',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:may-break-between-rows",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:border-model",
+27: CHOICE
+28: VALUE 'collapsing',
+28: VALUE 'separating',
+26: EPSILON
+25: REF 'common-writing-mode-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode",
+28: CHOICE
+29: VALUE 'lr-tb',
+29: VALUE 'rl-tb',
+29: VALUE 'tb-rl',
+29: VALUE 'tb-lr',
+29: VALUE 'lr',
+29: VALUE 'rl',
+29: VALUE 'tb',
+29: VALUE 'page',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: REF 'style-table-properties-elements',
+24: REF 'style-background-image',
+25: CHOICE
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-column',
+18: CHOICE
+19: REF 'style-table-column-properties',
+20: ELEMENT "style:table-column-properties",
+21: REF 'style-table-column-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-table-column-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "style:column-width",
+27: REF 'positiveLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rel-column-width",
+27: REF 'relativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:use-optimal-column-width",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-break-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:break-before",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:break-after",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+23: REF 'style-table-column-properties-elements',
+24: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-row',
+18: CHOICE
+19: REF 'style-table-row-properties',
+20: ELEMENT "style:table-row-properties",
+21: REF 'style-table-row-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-table-row-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "style:row-height",
+27: REF 'positiveLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:min-row-height",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:use-optimal-row-height",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-break-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:break-before",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:break-after",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'column',
+30: VALUE 'page',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:keep-together",
+27: CHOICE
+28: VALUE 'auto',
+28: VALUE 'always',
+26: EPSILON
+23: REF 'style-table-row-properties-elements',
+24: REF 'style-background-image',
+25: CHOICE
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'table-cell',
+18: CHOICE
+19: REF 'style-table-cell-properties',
+20: ELEMENT "style:table-cell-properties",
+21: REF 'style-table-cell-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-table-cell-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "style:vertical-align",
+27: CHOICE
+28: VALUE 'top',
+28: VALUE 'middle',
+28: VALUE 'bottom',
+28: VALUE 'automatic',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:text-align-source",
+27: CHOICE
+28: VALUE 'fix',
+28: VALUE 'value-type',
+26: EPSILON
+25: REF 'common-style-direction-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:direction",
+28: CHOICE
+29: VALUE 'ltr',
+29: VALUE 'ttb',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:glyph-orientation-vertical",
+27: CHOICE
+28: VALUE 'auto',
+28: VALUE '0',
+28: VALUE '0deg',
+28: VALUE '0rad',
+28: VALUE '0grad',
+26: EPSILON
+25: REF 'common-writing-mode-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode",
+28: CHOICE
+29: VALUE 'lr-tb',
+29: VALUE 'rl-tb',
+29: VALUE 'tb-rl',
+29: VALUE 'tb-lr',
+29: VALUE 'lr',
+29: VALUE 'rl',
+29: VALUE 'tb',
+29: VALUE 'page',
+27: EPSILON
+25: REF 'common-shadow-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:shadow",
+28: REF 'shadowType',
+29: CHOICE
+30: VALUE 'none',
+30: REF 'string',
+31: DATA 'string',
+27: EPSILON
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-border-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:border",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-top",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-bottom",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-left",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-right",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:diagonal-tl-br",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:diagonal-tl-br-widths",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:diagonal-bl-tr",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:diagonal-bl-tr-widths",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+25: REF 'common-border-line-width-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-top",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-bottom",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-left",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-right",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+25: REF 'common-padding-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:padding",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-top",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-bottom",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-left",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-right",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:wrap-option",
+27: CHOICE
+28: VALUE 'no-wrap',
+28: VALUE 'wrap',
+26: EPSILON
+25: REF 'common-rotation-angle-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:rotation-angle",
+28: REF 'angle',
+29: DATA 'string',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rotation-align",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'bottom',
+28: VALUE 'top',
+28: VALUE 'center',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:cell-protect",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'hidden-and-protected',
+28: LIST
+29: ONEOREMORE
+30: CHOICE
+31: VALUE 'protected',
+31: VALUE 'formula-hidden',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:print-content",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:decimal-places",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:repeat-content",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:shrink-to-fit",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: REF 'style-table-cell-properties-elements',
+24: REF 'style-background-image',
+25: CHOICE
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: CHOICE
+20: VALUE 'graphic',
+20: VALUE 'presentation',
+18: CHOICE
+19: REF 'style-graphic-properties',
+20: ELEMENT "style:graphic-properties",
+21: REF 'style-graphic-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-graphic-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "draw:stroke",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'dash',
+28: VALUE 'solid',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:stroke-dash",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:stroke-dash-names",
+27: REF 'styleNameRefs',
+28: LIST
+29: CHOICE
+30: ONEOREMORE
+31: DATA 'NCName',
+30: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:stroke-width",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:stroke-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:marker-start",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:marker-end",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:marker-start-width",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:marker-end-width",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:marker-start-center",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:marker-end-center",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:stroke-opacity",
+27: CHOICE
+28: DATA 'double',
+28: REF 'zeroToHundredPercent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:stroke-linejoin",
+27: CHOICE
+28: VALUE 'miter',
+28: VALUE 'round',
+28: VALUE 'bevel',
+28: VALUE 'middle',
+28: VALUE 'none',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:stroke-linecap",
+27: CHOICE
+28: VALUE 'butt',
+28: VALUE 'square',
+28: VALUE 'round',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:symbol-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'scroll',
+28: VALUE 'alternate',
+28: VALUE 'slide',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation-direction",
+27: CHOICE
+28: VALUE 'left',
+28: VALUE 'right',
+28: VALUE 'up',
+28: VALUE 'down',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation-start-inside",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation-stop-inside",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation-repeat",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation-delay",
+27: REF 'duration',
+28: DATA 'duration',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:animation-steps",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:auto-grow-width",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:auto-grow-height",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fit-to-size",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fit-to-contour",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:textarea-vertical-align",
+27: CHOICE
+28: VALUE 'top',
+28: VALUE 'middle',
+28: VALUE 'bottom',
+28: VALUE 'justify',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:textarea-horizontal-align",
+27: CHOICE
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+28: VALUE 'justify',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:wrap-option",
+27: CHOICE
+28: VALUE 'no-wrap',
+28: VALUE 'wrap',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:shrink-to-fit",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:color-mode",
+27: CHOICE
+28: VALUE 'greyscale',
+28: VALUE 'mono',
+28: VALUE 'watermark',
+28: VALUE 'standard',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:color-inversion",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:luminance",
+27: REF 'zeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:contrast",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:gamma",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:red",
+27: REF 'signedZeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:green",
+27: REF 'signedZeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:blue",
+27: REF 'signedZeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:image-opacity",
+27: REF 'zeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:shadow",
+27: CHOICE
+28: VALUE 'visible',
+28: VALUE 'hidden',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:shadow-offset-x",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:shadow-offset-y",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:shadow-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:shadow-opacity",
+27: REF 'zeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:start-line-spacing-horizontal",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:start-line-spacing-vertical",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:end-line-spacing-horizontal",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:end-line-spacing-vertical",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:line-distance",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:guide-overhang",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:guide-distance",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:start-guide",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:end-guide",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:placing",
+27: CHOICE
+28: VALUE 'below',
+28: VALUE 'above',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:parallel",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:measure-align",
+27: CHOICE
+28: VALUE 'automatic',
+28: VALUE 'left-outside',
+28: VALUE 'inside',
+28: VALUE 'right-outside',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:measure-vertical-align",
+27: CHOICE
+28: VALUE 'automatic',
+28: VALUE 'above',
+28: VALUE 'below',
+28: VALUE 'center',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:unit",
+27: CHOICE
+28: VALUE 'automatic',
+28: VALUE 'mm',
+28: VALUE 'cm',
+28: VALUE 'm',
+28: VALUE 'km',
+28: VALUE 'pt',
+28: VALUE 'pc',
+28: VALUE 'inch',
+28: VALUE 'ft',
+28: VALUE 'mi',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:show-unit",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:decimal-places",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-type",
+27: CHOICE
+28: VALUE 'straight-line',
+28: VALUE 'angled-line',
+28: VALUE 'angled-connector-line',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-angle-type",
+27: CHOICE
+28: VALUE 'fixed',
+28: VALUE 'free',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-angle",
+27: REF 'angle',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-gap",
+27: REF 'distance',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-escape-direction",
+27: CHOICE
+28: VALUE 'horizontal',
+28: VALUE 'vertical',
+28: VALUE 'auto',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-escape",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-line-length",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:caption-fit-line-length",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:horizontal-segments",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:vertical-segments",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:edge-rounding",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:edge-rounding-mode",
+27: CHOICE
+28: VALUE 'correct',
+28: VALUE 'attractive',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:back-scale",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:depth",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:backface-culling",
+27: CHOICE
+28: VALUE 'enabled',
+28: VALUE 'disabled',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:end-angle",
+27: REF 'angle',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:close-front",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:close-back",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:lighting-mode",
+27: CHOICE
+28: VALUE 'standard',
+28: VALUE 'double-sided',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:normals-kind",
+27: CHOICE
+28: VALUE 'object',
+28: VALUE 'flat',
+28: VALUE 'sphere',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:normals-direction",
+27: CHOICE
+28: VALUE 'normal',
+28: VALUE 'inverse',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:texture-generation-mode-x",
+27: CHOICE
+28: VALUE 'object',
+28: VALUE 'parallel',
+28: VALUE 'sphere',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:texture-generation-mode-y",
+27: CHOICE
+28: VALUE 'object',
+28: VALUE 'parallel',
+28: VALUE 'sphere',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:texture-kind",
+27: CHOICE
+28: VALUE 'luminance',
+28: VALUE 'intensity',
+28: VALUE 'color',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:texture-filter",
+27: CHOICE
+28: VALUE 'enabled',
+28: VALUE 'disabled',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:texture-mode",
+27: CHOICE
+28: VALUE 'replace',
+28: VALUE 'modulate',
+28: VALUE 'blend',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:ambient-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:emissive-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:specular-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:diffuse-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:shininess",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "dr3d:shadow",
+27: CHOICE
+28: VALUE 'visible',
+28: VALUE 'hidden',
+26: EPSILON
+25: REF 'common-draw-rel-size-attlist',
+26: SEQUENCE
+27: REF 'common-draw-size-attlist',
+28: SEQUENCE
+29: CHOICE
+30: ATTRIBUTE "svg:width",
+31: REF 'length',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "svg:height",
+31: REF 'length',
+32: DATA 'string',
+30: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:rel-width",
+29: CHOICE
+30: REF 'percent',
+31: DATA 'string',
+30: VALUE 'scale',
+30: VALUE 'scale-min',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:rel-height",
+29: CHOICE
+30: REF 'percent',
+31: DATA 'string',
+30: VALUE 'scale',
+30: VALUE 'scale-min',
+28: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:min-width",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:min-height",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:max-height",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:max-width",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: REF 'common-horizontal-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-left",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-right",
+29: CHOICE
+30: REF 'length',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-vertical-margin-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:margin-top",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:margin-bottom",
+29: CHOICE
+30: REF 'nonNegativeLength',
+31: DATA 'string',
+30: REF 'percent',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-margin-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:margin",
+28: CHOICE
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+29: REF 'percent',
+30: DATA 'string',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:print-content",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:protect",
+27: CHOICE
+28: VALUE 'none',
+28: LIST
+29: ONEOREMORE
+30: CHOICE
+31: VALUE 'content',
+31: VALUE 'position',
+31: VALUE 'size',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:horizontal-pos",
+27: CHOICE
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+28: VALUE 'from-left',
+28: VALUE 'inside',
+28: VALUE 'outside',
+28: VALUE 'from-inside',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:x",
+27: REF 'coordinate',
+28: REF 'length',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:horizontal-rel",
+27: CHOICE
+28: VALUE 'page',
+28: VALUE 'page-content',
+28: VALUE 'page-start-margin',
+28: VALUE 'page-end-margin',
+28: VALUE 'frame',
+28: VALUE 'frame-content',
+28: VALUE 'frame-start-margin',
+28: VALUE 'frame-end-margin',
+28: VALUE 'paragraph',
+28: VALUE 'paragraph-content',
+28: VALUE 'paragraph-start-margin',
+28: VALUE 'paragraph-end-margin',
+28: VALUE 'char',
+26: EPSILON
+25: REF 'common-vertical-pos-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:vertical-pos",
+29: CHOICE
+30: VALUE 'top',
+30: VALUE 'middle',
+30: VALUE 'bottom',
+30: VALUE 'from-top',
+30: VALUE 'below',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "svg:y",
+29: REF 'coordinate',
+30: REF 'length',
+31: DATA 'string',
+28: EPSILON
+25: REF 'common-vertical-rel-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:vertical-rel",
+28: CHOICE
+29: VALUE 'page',
+29: VALUE 'page-content',
+29: VALUE 'frame',
+29: VALUE 'frame-content',
+29: VALUE 'paragraph',
+29: VALUE 'paragraph-content',
+29: VALUE 'char',
+29: VALUE 'line',
+29: VALUE 'baseline',
+29: VALUE 'text',
+27: EPSILON
+25: REF 'common-text-anchor-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "text:anchor-type",
+29: CHOICE
+30: VALUE 'page',
+30: VALUE 'frame',
+30: VALUE 'paragraph',
+30: VALUE 'char',
+30: VALUE 'as-char',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "text:anchor-page-number",
+29: REF 'positiveInteger',
+30: DATA 'positiveInteger',
+28: EPSILON
+25: REF 'common-border-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:border",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-top",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-bottom",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-left",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:border-right",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-border-line-width-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-top",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-bottom",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-left",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "style:border-line-width-right",
+29: REF 'borderWidths',
+30: LIST
+31: SEQUENCE
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+32: REF 'positiveLength',
+33: DATA 'string',
+28: EPSILON
+25: REF 'common-padding-attlist',
+26: SEQUENCE
+27: CHOICE
+28: ATTRIBUTE "fo:padding",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-top",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-bottom",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-left",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "fo:padding-right",
+29: REF 'nonNegativeLength',
+30: DATA 'string',
+28: EPSILON
+25: REF 'common-shadow-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:shadow",
+28: REF 'shadowType',
+29: CHOICE
+30: VALUE 'none',
+30: REF 'string',
+31: DATA 'string',
+27: EPSILON
+25: REF 'common-background-color-attlist',
+26: CHOICE
+27: ATTRIBUTE "fo:background-color",
+28: CHOICE
+29: VALUE 'transparent',
+29: REF 'color',
+30: DATA 'string',
+27: EPSILON
+25: REF 'common-background-transparency-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:background-transparency",
+28: REF 'zeroToHundredPercent',
+29: DATA 'string',
+27: EPSILON
+25: REF 'common-editable-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:editable",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:wrap",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'left',
+28: VALUE 'right',
+28: VALUE 'parallel',
+28: VALUE 'dynamic',
+28: VALUE 'run-through',
+28: VALUE 'biggest',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:wrap-dynamic-threshold",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:number-wrapped-paragraphs",
+27: CHOICE
+28: VALUE 'no-limit',
+28: REF 'positiveInteger',
+29: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:wrap-contour",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:wrap-contour-mode",
+27: CHOICE
+28: VALUE 'full',
+28: VALUE 'outside',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:run-through",
+27: CHOICE
+28: VALUE 'foreground',
+28: VALUE 'background',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:flow-with-text",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:overflow-behavior",
+27: CHOICE
+28: VALUE 'clip',
+28: VALUE 'auto-create-new-frame',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:mirror",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'vertical',
+28: REF 'horizontal-mirror',
+29: CHOICE
+30: VALUE 'horizontal',
+30: VALUE 'horizontal-on-odd',
+30: VALUE 'horizontal-on-even',
+28: LIST
+29: SEQUENCE
+30: VALUE 'vertical',
+30: REF 'horizontal-mirror',
+31: CHOICE
+32: VALUE 'horizontal',
+32: VALUE 'horizontal-on-odd',
+32: VALUE 'horizontal-on-even',
+28: LIST
+29: SEQUENCE
+30: REF 'horizontal-mirror',
+31: CHOICE
+32: VALUE 'horizontal',
+32: VALUE 'horizontal-on-odd',
+32: VALUE 'horizontal-on-even',
+30: VALUE 'vertical',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:clip",
+27: CHOICE
+28: VALUE 'auto',
+28: REF 'clipShape',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:wrap-influence-on-position",
+27: CHOICE
+28: VALUE 'iterative',
+28: VALUE 'once-concurrent',
+28: VALUE 'once-successive',
+26: EPSILON
+25: REF 'common-writing-mode-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:writing-mode",
+28: CHOICE
+29: VALUE 'lr-tb',
+29: VALUE 'rl-tb',
+29: VALUE 'tb-rl',
+29: VALUE 'tb-lr',
+29: VALUE 'lr',
+29: VALUE 'rl',
+29: VALUE 'tb',
+29: VALUE 'page',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:frame-display-scrollbar",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:frame-display-border",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:frame-margin-horizontal",
+27: REF 'nonNegativePixelLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:frame-margin-vertical",
+27: REF 'nonNegativePixelLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:visible-area-left",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:visible-area-top",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:visible-area-width",
+27: REF 'positiveLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:visible-area-height",
+27: REF 'positiveLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:draw-aspect",
+27: CHOICE
+28: VALUE 'content',
+28: VALUE 'thumbnail',
+28: VALUE 'icon',
+28: VALUE 'print-view',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:ole-draw-aspect",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+23: REF 'style-graphic-fill-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "draw:fill",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'solid',
+28: VALUE 'bitmap',
+28: VALUE 'gradient',
+28: VALUE 'hatch',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:secondary-fill-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-gradient-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:gradient-step-count",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-hatch-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-hatch-solid",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:repeat",
+27: CHOICE
+28: VALUE 'no-repeat',
+28: VALUE 'repeat',
+28: VALUE 'stretch',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-width",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-height",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-ref-point-x",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-ref-point-y",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-ref-point",
+27: CHOICE
+28: VALUE 'top-left',
+28: VALUE 'top',
+28: VALUE 'top-right',
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+28: VALUE 'bottom-left',
+28: VALUE 'bottom',
+28: VALUE 'bottom-right',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:tile-repeat-offset",
+27: LIST
+28: SEQUENCE
+29: REF 'zeroToHundredPercent',
+30: DATA 'string',
+29: CHOICE
+30: VALUE 'horizontal',
+30: VALUE 'vertical',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:opacity",
+27: REF 'zeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:opacity-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:fill-rule",
+27: CHOICE
+28: VALUE 'nonzero',
+28: VALUE 'evenodd',
+26: EPSILON
+23: REF 'style-graphic-properties-elements',
+24: INTERLEAVE
+25: CHOICE
+26: REF 'text-list-style',
+27: ELEMENT "text:list-style",
+28: SEQUENCE
+29: REF 'text-list-style-attr',
+30: INTERLEAVE
+31: ATTRIBUTE "style:name",
+32: REF 'styleName',
+33: DATA 'NCName',
+31: CHOICE
+32: ATTRIBUTE "style:display-name",
+33: REF 'string',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "text:consecutive-numbering",
+33: REF 'boolean',
+34: CHOICE
+35: VALUE 'true',
+35: VALUE 'false',
+32: EPSILON
+29: CHOICE
+30: ONEOREMORE
+31: REF 'text-list-style-content',
+32: CHOICE
+33: ELEMENT "text:list-level-style-number",
+34: SEQUENCE
+35: REF 'text-list-level-style-attr',
+36: ATTRIBUTE "text:level",
+37: REF 'positiveInteger',
+38: DATA 'positiveInteger',
+35: REF 'text-list-level-style-number-attr',
+36: INTERLEAVE
+37: CHOICE
+38: ATTRIBUTE "text:style-name",
+39: REF 'styleNameRef',
+40: CHOICE
+41: DATA 'NCName',
+41: EPSILON
+38: EPSILON
+37: REF 'common-num-format-attlist',
+38: CHOICE
+39: ATTRIBUTE "style:num-format",
+40: CHOICE
+41: VALUE '1',
+41: VALUE 'i',
+41: VALUE 'I',
+41: REF 'string',
+42: DATA 'string',
+41: EPSILON
+39: SEQUENCE
+40: ATTRIBUTE "style:num-format",
+41: CHOICE
+42: VALUE 'a',
+42: VALUE 'A',
+40: REF 'style-num-letter-sync-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:num-letter-sync",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+42: EPSILON
+39: EPSILON
+37: REF 'common-num-format-prefix-suffix-attlist',
+38: SEQUENCE
+39: CHOICE
+40: ATTRIBUTE "style:num-prefix",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "style:num-suffix",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+37: CHOICE
+38: ATTRIBUTE "text:display-levels",
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+38: EPSILON
+37: CHOICE
+38: ATTRIBUTE "text:start-value",
+39: REF 'positiveInteger',
+40: DATA 'positiveInteger',
+38: EPSILON
+35: CHOICE
+36: REF 'style-list-level-properties',
+37: ELEMENT "style:list-level-properties",
+38: REF 'style-list-level-properties-content-strict',
+39: SEQUENCE
+40: REF 'style-list-level-properties-attlist',
+41: INTERLEAVE
+42: REF 'common-text-align',
+43: CHOICE
+44: ATTRIBUTE "fo:text-align",
+45: CHOICE
+46: VALUE 'start',
+46: VALUE 'end',
+46: VALUE 'left',
+46: VALUE 'right',
+46: VALUE 'center',
+46: VALUE 'justify',
+44: EPSILON
+42: CHOICE
+43: ATTRIBUTE "text:space-before",
+44: REF 'length',
+45: DATA 'string',
+43: EPSILON
+42: CHOICE
+43: ATTRIBUTE "text:min-label-width",
+44: REF 'nonNegativeLength',
+45: DATA 'string',
+43: EPSILON
+42: CHOICE
+43: ATTRIBUTE "text:min-label-distance",
+44: REF 'nonNegativeLength',
+45: DATA 'string',
+43: EPSILON
+42: CHOICE
+43: ATTRIBUTE "style:font-name",
+44: REF 'string',
+45: DATA 'string',
+43: EPSILON
+42: CHOICE
+43: ATTRIBUTE "fo:width",
+44: REF 'positiveLength',
+45: DATA 'string',
+43: EPSILON
+42: CHOICE
+43: ATTRIBUTE "fo:height",
+44: REF 'positiveLength',
+45: DATA 'string',
+43: EPSILON
+42: REF 'common-vertical-rel-attlist',
+43: CHOICE
+44: ATTRIBUTE "style:vertical-rel",
+45: CHOICE
+46: VALUE 'page',
+46: VALUE 'page-content',
+46: VALUE 'frame',
+46: VALUE 'frame-content',
+46: VALUE 'paragraph',
+46: VALUE 'paragraph-content',
+46: VALUE 'char',
+46: VALUE 'line',
+46: VALUE 'baseline',
+46: VALUE 'text',
+44: EPSILON
+42: REF 'common-vertical-pos-attlist',
+43: SEQUENCE
+44: CHOICE
+45: ATTRIBUTE "style:vertical-pos",
+46: CHOICE
+47: VALUE 'top',
+47: VALUE 'middle',
+47: VALUE 'bottom',
+47: VALUE 'from-top',
+47: VALUE 'below',
+45: EPSILON
+44: CHOICE
+45: ATTRIBUTE "svg:y",
+46: REF 'coordinate',
+47: REF 'length',
+48: DATA 'string',
+45: EPSILON
+42: CHOICE
+43: ATTRIBUTE "text:list-level-position-and-space-mode",
+44: CHOICE
+45: VALUE 'label-width-and-position',
+45: VALUE 'label-alignment',
+43: EPSILON
+40: REF 'style-list-level-properties-elements',
+41: REF 'style-list-level-label-alignment',
+42: CHOICE
+43: ELEMENT "style:list-level-label-alignment",
+44: REF 'style-list-level-label-alignment-attlist',
+45: INTERLEAVE
+46: ATTRIBUTE "text:label-followed-by",
+47: CHOICE
+48: VALUE 'listtab',
+48: VALUE 'space',
+48: VALUE 'nothing',
+46: CHOICE
+47: ATTRIBUTE "text:list-tab-stop-position",
+48: REF 'length',
+49: DATA 'string',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "fo:text-indent",
+48: REF 'length',
+49: DATA 'string',
+47: EPSILON
+46: CHOICE
+47: ATTRIBUTE "fo:margin-left",
+48: REF 'length',
+49: DATA 'string',
+47: EPSILON
+43: EPSILON
+36: EPSILON
+35: CHOICE
+36: REF 'style-text-properties',
+36: EPSILON
+33: ELEMENT "text:list-level-style-bullet",
+34: SEQUENCE
+35: REF 'text-list-level-style-attr',
+36: ATTRIBUTE "text:level",
+37: REF 'positiveInteger',
+38: DATA 'positiveInteger',
+35: REF 'text-list-level-style-bullet-attr',
+36: INTERLEAVE
+37: CHOICE
+38: ATTRIBUTE "text:style-name",
+39: REF 'styleNameRef',
+40: CHOICE
+41: DATA 'NCName',
+41: EPSILON
+38: EPSILON
+37: ATTRIBUTE "text:bullet-char",
+38: REF 'character',
+39: DATA 'string',
+37: REF 'common-num-format-prefix-suffix-attlist',
+38: SEQUENCE
+39: CHOICE
+40: ATTRIBUTE "style:num-prefix",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "style:num-suffix",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+37: CHOICE
+38: ATTRIBUTE "text:bullet-relative-size",
+39: REF 'percent',
+40: DATA 'string',
+38: EPSILON
+35: CHOICE
+36: REF 'style-list-level-properties',
+36: EPSILON
+35: CHOICE
+36: REF 'style-text-properties',
+36: EPSILON
+33: ELEMENT "text:list-level-style-image",
+34: SEQUENCE
+35: REF 'text-list-level-style-attr',
+36: ATTRIBUTE "text:level",
+37: REF 'positiveInteger',
+38: DATA 'positiveInteger',
+35: REF 'text-list-level-style-image-attr',
+36: CHOICE
+37: REF 'common-draw-data-attlist',
+38: SEQUENCE
+39: ATTRIBUTE "xlink:type",
+40: VALUE 'simple',
+39: ATTRIBUTE "xlink:href",
+40: REF 'anyIRI',
+41: DATA 'anyURI',
+39: CHOICE
+40: ATTRIBUTE "xlink:show",
+41: VALUE 'embed',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "xlink:actuate",
+41: VALUE 'onLoad',
+40: EPSILON
+37: REF 'office-binary-data',
+35: CHOICE
+36: REF 'style-list-level-properties',
+36: EPSILON
+30: EPSILON
+26: EPSILON
+25: REF 'style-background-image',
+26: CHOICE
+25: REF 'style-columns',
+26: CHOICE
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'drawing-page',
+18: CHOICE
+19: REF 'style-drawing-page-properties',
+20: ELEMENT "style:drawing-page-properties",
+21: REF 'style-drawing-page-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-graphic-fill-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "draw:fill",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'solid',
+28: VALUE 'bitmap',
+28: VALUE 'gradient',
+28: VALUE 'hatch',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:secondary-fill-color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-gradient-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:gradient-step-count",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-hatch-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-hatch-solid",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:repeat",
+27: CHOICE
+28: VALUE 'no-repeat',
+28: VALUE 'repeat',
+28: VALUE 'stretch',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-width",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-height",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-ref-point-x",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-ref-point-y",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:fill-image-ref-point",
+27: CHOICE
+28: VALUE 'top-left',
+28: VALUE 'top',
+28: VALUE 'top-right',
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+28: VALUE 'bottom-left',
+28: VALUE 'bottom',
+28: VALUE 'bottom-right',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:tile-repeat-offset",
+27: LIST
+28: SEQUENCE
+29: REF 'zeroToHundredPercent',
+30: DATA 'string',
+29: CHOICE
+30: VALUE 'horizontal',
+30: VALUE 'vertical',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:opacity",
+27: REF 'zeroToHundredPercent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:opacity-name",
+27: REF 'styleNameRef',
+28: CHOICE
+29: DATA 'NCName',
+29: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "svg:fill-rule",
+27: CHOICE
+28: VALUE 'nonzero',
+28: VALUE 'evenodd',
+26: EPSILON
+23: REF 'style-drawing-page-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "presentation:transition-type",
+27: CHOICE
+28: VALUE 'manual',
+28: VALUE 'automatic',
+28: VALUE 'semi-automatic',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:transition-style",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'fade-from-left',
+28: VALUE 'fade-from-top',
+28: VALUE 'fade-from-right',
+28: VALUE 'fade-from-bottom',
+28: VALUE 'fade-from-upperleft',
+28: VALUE 'fade-from-upperright',
+28: VALUE 'fade-from-lowerleft',
+28: VALUE 'fade-from-lowerright',
+28: VALUE 'move-from-left',
+28: VALUE 'move-from-top',
+28: VALUE 'move-from-right',
+28: VALUE 'move-from-bottom',
+28: VALUE 'move-from-upperleft',
+28: VALUE 'move-from-upperright',
+28: VALUE 'move-from-lowerleft',
+28: VALUE 'move-from-lowerright',
+28: VALUE 'uncover-to-left',
+28: VALUE 'uncover-to-top',
+28: VALUE 'uncover-to-right',
+28: VALUE 'uncover-to-bottom',
+28: VALUE 'uncover-to-upperleft',
+28: VALUE 'uncover-to-upperright',
+28: VALUE 'uncover-to-lowerleft',
+28: VALUE 'uncover-to-lowerright',
+28: VALUE 'fade-to-center',
+28: VALUE 'fade-from-center',
+28: VALUE 'vertical-stripes',
+28: VALUE 'horizontal-stripes',
+28: VALUE 'clockwise',
+28: VALUE 'counterclockwise',
+28: VALUE 'open-vertical',
+28: VALUE 'open-horizontal',
+28: VALUE 'close-vertical',
+28: VALUE 'close-horizontal',
+28: VALUE 'wavyline-from-left',
+28: VALUE 'wavyline-from-top',
+28: VALUE 'wavyline-from-right',
+28: VALUE 'wavyline-from-bottom',
+28: VALUE 'spiralin-left',
+28: VALUE 'spiralin-right',
+28: VALUE 'spiralout-left',
+28: VALUE 'spiralout-right',
+28: VALUE 'roll-from-top',
+28: VALUE 'roll-from-left',
+28: VALUE 'roll-from-right',
+28: VALUE 'roll-from-bottom',
+28: VALUE 'stretch-from-left',
+28: VALUE 'stretch-from-top',
+28: VALUE 'stretch-from-right',
+28: VALUE 'stretch-from-bottom',
+28: VALUE 'vertical-lines',
+28: VALUE 'horizontal-lines',
+28: VALUE 'dissolve',
+28: VALUE 'random',
+28: VALUE 'vertical-checkerboard',
+28: VALUE 'horizontal-checkerboard',
+28: VALUE 'interlocking-horizontal-left',
+28: VALUE 'interlocking-horizontal-right',
+28: VALUE 'interlocking-vertical-top',
+28: VALUE 'interlocking-vertical-bottom',
+28: VALUE 'fly-away',
+28: VALUE 'open',
+28: VALUE 'close',
+28: VALUE 'melt',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:transition-speed",
+27: REF 'presentationSpeeds',
+28: CHOICE
+29: VALUE 'slow',
+29: VALUE 'medium',
+29: VALUE 'fast',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:type",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:subtype",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:direction",
+27: CHOICE
+28: VALUE 'forward',
+28: VALUE 'reverse',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "smil:fadeColor",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:duration",
+27: REF 'duration',
+28: DATA 'duration',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:visibility",
+27: CHOICE
+28: VALUE 'visible',
+28: VALUE 'hidden',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "draw:background-size",
+27: CHOICE
+28: VALUE 'full',
+28: VALUE 'border',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:background-objects-visible",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:background-visible",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:display-header",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:display-footer",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:display-page-number",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "presentation:display-date-time",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: REF 'style-drawing-page-properties-elements',
+24: CHOICE
+25: REF 'presentation-sound',
+25: EPSILON
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:family",
+19: VALUE 'chart',
+18: CHOICE
+19: REF 'style-chart-properties',
+20: ELEMENT "style:chart-properties",
+21: REF 'style-chart-properties-content-strict',
+22: SEQUENCE
+23: REF 'style-chart-properties-attlist',
+24: INTERLEAVE
+25: CHOICE
+26: ATTRIBUTE "chart:scale-text",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:three-dimensional",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:deep",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:right-angled-axes",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:symbol-type",
+27: VALUE 'none',
+26: ATTRIBUTE "chart:symbol-type",
+27: VALUE 'automatic',
+26: SEQUENCE
+27: ATTRIBUTE "chart:symbol-type",
+28: VALUE 'named-symbol',
+27: ATTRIBUTE "chart:symbol-name",
+28: CHOICE
+29: VALUE 'square',
+29: VALUE 'diamond',
+29: VALUE 'arrow-down',
+29: VALUE 'arrow-up',
+29: VALUE 'arrow-right',
+29: VALUE 'arrow-left',
+29: VALUE 'bow-tie',
+29: VALUE 'hourglass',
+29: VALUE 'circle',
+29: VALUE 'star',
+29: VALUE 'x',
+29: VALUE 'plus',
+29: VALUE 'asterisk',
+29: VALUE 'horizontal-bar',
+29: VALUE 'vertical-bar',
+26: SEQUENCE
+27: ATTRIBUTE "chart:symbol-type",
+28: VALUE 'image',
+27: ELEMENT "chart:symbol-image",
+28: ATTRIBUTE "xlink:href",
+29: REF 'anyIRI',
+30: DATA 'anyURI',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:symbol-width",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:symbol-height",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:sort-by-x-values",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:vertical",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:connect-bars",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:gap-width",
+27: REF 'integer',
+28: DATA 'integer',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:overlap",
+27: REF 'integer',
+28: DATA 'integer',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:group-bars-per-axis",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:japanese-candle-stick",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:interpolation",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'cubic-spline',
+28: VALUE 'b-spline',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:spline-order",
+27: REF 'positiveInteger',
+28: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:spline-resolution",
+27: REF 'positiveInteger',
+28: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:pie-offset",
+27: REF 'nonNegativeInteger',
+28: DATA 'nonNegativeInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:angle-offset",
+27: REF 'angle',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:hole-size",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:lines",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:solid-type",
+27: CHOICE
+28: VALUE 'cuboid',
+28: VALUE 'cylinder',
+28: VALUE 'cone',
+28: VALUE 'pyramid',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:stacked",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:percentage",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:treat-empty-cells",
+27: CHOICE
+28: VALUE 'use-zero',
+28: VALUE 'leave-gap',
+28: VALUE 'ignore',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:link-data-style-to-source",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:logarithmic",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:maximum",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:minimum",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:origin",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:interval-major",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:interval-minor-divisor",
+27: REF 'positiveInteger',
+28: DATA 'positiveInteger',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:tick-marks-major-inner",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:tick-marks-major-outer",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:tick-marks-minor-inner",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:tick-marks-minor-outer",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:reverse-direction",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:display-label",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:text-overlap",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "text:line-break",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:label-arrangement",
+27: CHOICE
+28: VALUE 'side-by-side',
+28: VALUE 'stagger-even',
+28: VALUE 'stagger-odd',
+26: EPSILON
+25: REF 'common-style-direction-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:direction",
+28: CHOICE
+29: VALUE 'ltr',
+29: VALUE 'ttb',
+27: EPSILON
+25: REF 'common-rotation-angle-attlist',
+26: CHOICE
+27: ATTRIBUTE "style:rotation-angle",
+28: REF 'angle',
+29: DATA 'string',
+27: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:data-label-number",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'value',
+28: VALUE 'percentage',
+28: VALUE 'value-and-percentage',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:data-label-text",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:data-label-symbol",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ELEMENT "chart:label-separator",
+27: REF 'text-p',
+28: ELEMENT "text:p",
+29: SEQUENCE
+30: REF 'paragraph-attrs',
+31: INTERLEAVE
+32: CHOICE
+33: ATTRIBUTE "text:style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:class-names",
+34: REF 'styleNameRefs',
+35: LIST
+36: CHOICE
+37: ONEOREMORE
+38: DATA 'NCName',
+37: EPSILON
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "text:cond-style-name",
+34: REF 'styleNameRef',
+35: CHOICE
+36: DATA 'NCName',
+36: EPSILON
+33: EPSILON
+32: CHOICE
+33: SEQUENCE
+34: REF 'xml-id',
+35: ATTRIBUTE "xml:id",
+36: REF 'ID',
+37: DATA 'ID',
+34: CHOICE
+35: ATTRIBUTE "text:id",
+36: REF 'NCName',
+37: DATA 'NCName',
+35: EPSILON
+33: EPSILON
+32: CHOICE
+33: REF 'common-in-content-meta-attlist',
+34: SEQUENCE
+35: ATTRIBUTE "xhtml:about",
+36: REF 'URIorSafeCURIE',
+37: CHOICE
+38: REF 'anyURI',
+39: DATA 'anyURI',
+38: REF 'SafeCURIE',
+39: DATA 'string',
+35: ATTRIBUTE "xhtml:property",
+36: REF 'CURIEs',
+37: LIST
+38: ONEOREMORE
+39: REF 'CURIE',
+40: DATA 'string',
+35: REF 'common-meta-literal-attlist',
+36: SEQUENCE
+37: CHOICE
+38: ATTRIBUTE "xhtml:datatype",
+39: REF 'CURIE',
+40: DATA 'string',
+38: EPSILON
+37: CHOICE
+38: ATTRIBUTE "xhtml:content",
+39: REF 'string',
+40: DATA 'string',
+38: EPSILON
+33: EPSILON
+30: CHOICE
+31: ONEOREMORE
+32: REF 'paragraph-content-or-hyperlink',
+33: CHOICE
+34: REF 'paragraph-content',
+35: CHOICE
+36: STRING
+36: ELEMENT "text:s",
+37: CHOICE
+38: ATTRIBUTE "text:c",
+39: REF 'nonNegativeInteger',
+40: DATA 'nonNegativeInteger',
+38: EPSILON
+36: ELEMENT "text:tab",
+37: REF 'text-tab-attr',
+38: CHOICE
+39: ATTRIBUTE "text:tab-ref",
+40: REF 'nonNegativeInteger',
+41: DATA 'nonNegativeInteger',
+39: EPSILON
+36: ELEMENT "text:line-break",
+37: EPSILON
+36: REF 'text-soft-page-break',
+37: ELEMENT "text:soft-page-break",
+38: EPSILON
+36: ELEMENT "text:span",
+37: SEQUENCE
+38: CHOICE
+39: ATTRIBUTE "text:style-name",
+40: REF 'styleNameRef',
+41: CHOICE
+42: DATA 'NCName',
+42: EPSILON
+39: EPSILON
+38: CHOICE
+39: ATTRIBUTE "text:class-names",
+40: REF 'styleNameRefs',
+41: LIST
+42: CHOICE
+43: ONEOREMORE
+44: DATA 'NCName',
+43: EPSILON
+39: EPSILON
+38: CHOICE
+39: ONEOREMORE
+40: REF 'paragraph-content-or-hyperlink',
+41: CHOICE
+42: REF 'paragraph-content',
+43: CHOICE
+44: STRING
+42: REF 'text-a',
+43: ELEMENT "text:a",
+44: SEQUENCE
+45: REF 'text-a-attlist',
+46: INTERLEAVE
+47: CHOICE
+48: ATTRIBUTE "office:name",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "office:title",
+49: REF 'string',
+50: DATA 'string',
+48: EPSILON
+47: ATTRIBUTE "xlink:type",
+48: VALUE 'simple',
+47: ATTRIBUTE "xlink:href",
+48: REF 'anyIRI',
+49: DATA 'anyURI',
+47: CHOICE
+48: ATTRIBUTE "xlink:actuate",
+49: VALUE 'onRequest',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "office:target-frame-name",
+49: REF 'targetFrameName',
+50: CHOICE
+51: VALUE '_self',
+51: VALUE '_blank',
+51: VALUE '_parent',
+51: VALUE '_top',
+51: REF 'string',
+52: DATA 'string',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "xlink:show",
+49: CHOICE
+50: VALUE 'new',
+50: VALUE 'replace',
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "text:style-name",
+49: REF 'styleNameRef',
+50: CHOICE
+51: DATA 'NCName',
+51: EPSILON
+48: EPSILON
+47: CHOICE
+48: ATTRIBUTE "text:visited-style-name",
+49: REF 'styleNameRef',
+50: CHOICE
+51: DATA 'NCName',
+51: EPSILON
+48: EPSILON
+45: CHOICE
+46: REF 'office-event-listeners',
+46: EPSILON
+45: ONEOREMORE
+46: REF 'paragraph-content',
+47: CHOICE
+48: STRING
+39: EPSILON
+36: ELEMENT "text:meta",
+37: SEQUENCE
+38: REF 'text-meta-attlist',
+39: INTERLEAVE
+40: CHOICE
+41: REF 'common-in-content-meta-attlist',
+42: SEQUENCE
+43: ATTRIBUTE "xhtml:about",
+44: REF 'URIorSafeCURIE',
+45: CHOICE
+46: REF 'anyURI',
+47: DATA 'anyURI',
+46: REF 'SafeCURIE',
+47: DATA 'string',
+43: ATTRIBUTE "xhtml:property",
+44: REF 'CURIEs',
+45: LIST
+46: ONEOREMORE
+47: REF 'CURIE',
+48: DATA 'string',
+43: REF 'common-meta-literal-attlist',
+44: SEQUENCE
+45: CHOICE
+46: ATTRIBUTE "xhtml:datatype",
+47: REF 'CURIE',
+48: DATA 'string',
+46: EPSILON
+45: CHOICE
+46: ATTRIBUTE "xhtml:content",
+47: REF 'string',
+48: DATA 'string',
+46: EPSILON
+41: EPSILON
+40: CHOICE
+41: REF 'xml-id',
+42: ATTRIBUTE "xml:id",
+43: REF 'ID',
+44: DATA 'ID',
+41: EPSILON
+38: CHOICE
+39: ONEOREMORE
+40: REF 'paragraph-content-or-hyperlink',
+41: CHOICE
+42: REF 'paragraph-content',
+43: CHOICE
+44: STRING
+42: REF 'text-a',
+39: EPSILON
+36: REF 'text-bookmark',
+37: ELEMENT "text:bookmark",
+38: REF 'text-bookmark-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:name",
+41: REF 'string',
+42: DATA 'string',
+40: CHOICE
+41: REF 'xml-id',
+42: ATTRIBUTE "xml:id",
+43: REF 'ID',
+44: DATA 'ID',
+41: EPSILON
+36: REF 'text-bookmark-start',
+37: ELEMENT "text:bookmark-start",
+38: REF 'text-bookmark-start-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:name",
+41: REF 'string',
+42: DATA 'string',
+40: CHOICE
+41: REF 'xml-id',
+42: ATTRIBUTE "xml:id",
+43: REF 'ID',
+44: DATA 'ID',
+41: EPSILON
+40: CHOICE
+41: REF 'common-in-content-meta-attlist',
+42: SEQUENCE
+43: ATTRIBUTE "xhtml:about",
+44: REF 'URIorSafeCURIE',
+45: CHOICE
+46: REF 'anyURI',
+47: DATA 'anyURI',
+46: REF 'SafeCURIE',
+47: DATA 'string',
+43: ATTRIBUTE "xhtml:property",
+44: REF 'CURIEs',
+45: LIST
+46: ONEOREMORE
+47: REF 'CURIE',
+48: DATA 'string',
+43: REF 'common-meta-literal-attlist',
+44: SEQUENCE
+45: CHOICE
+46: ATTRIBUTE "xhtml:datatype",
+47: REF 'CURIE',
+48: DATA 'string',
+46: EPSILON
+45: CHOICE
+46: ATTRIBUTE "xhtml:content",
+47: REF 'string',
+48: DATA 'string',
+46: EPSILON
+41: EPSILON
+36: REF 'text-bookmark-end',
+37: ELEMENT "text:bookmark-end",
+38: REF 'text-bookmark-end-attlist',
+39: ATTRIBUTE "text:name",
+40: REF 'string',
+41: DATA 'string',
+36: ELEMENT "text:reference-mark",
+37: ATTRIBUTE "text:name",
+38: REF 'string',
+39: DATA 'string',
+36: ELEMENT "text:reference-mark-start",
+37: ATTRIBUTE "text:name",
+38: REF 'string',
+39: DATA 'string',
+36: ELEMENT "text:reference-mark-end",
+37: ATTRIBUTE "text:name",
+38: REF 'string',
+39: DATA 'string',
+36: ELEMENT "text:note",
+37: SEQUENCE
+38: REF 'text-note-class',
+39: ATTRIBUTE "text:note-class",
+40: CHOICE
+41: VALUE 'footnote',
+41: VALUE 'endnote',
+38: CHOICE
+39: ATTRIBUTE "text:id",
+40: REF 'string',
+41: DATA 'string',
+39: EPSILON
+38: ELEMENT "text:note-citation",
+39: SEQUENCE
+40: CHOICE
+41: ATTRIBUTE "text:label",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: STRING
+38: ELEMENT "text:note-body",
+39: CHOICE
+40: ONEOREMORE
+41: REF 'text-content',
+42: CHOICE
+43: REF 'text-h',
+44: ELEMENT "text:h",
+45: SEQUENCE
+46: REF 'heading-attrs',
+47: INTERLEAVE
+48: ATTRIBUTE "text:outline-level",
+49: REF 'positiveInteger',
+50: DATA 'positiveInteger',
+48: CHOICE
+49: ATTRIBUTE "text:restart-numbering",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:start-value",
+50: REF 'nonNegativeInteger',
+51: DATA 'nonNegativeInteger',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:is-list-header",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+46: REF 'paragraph-attrs',
+47: INTERLEAVE
+48: CHOICE
+49: ATTRIBUTE "text:style-name",
+50: REF 'styleNameRef',
+51: CHOICE
+52: DATA 'NCName',
+52: EPSILON
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:class-names",
+50: REF 'styleNameRefs',
+51: LIST
+52: CHOICE
+53: ONEOREMORE
+54: DATA 'NCName',
+53: EPSILON
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:cond-style-name",
+50: REF 'styleNameRef',
+51: CHOICE
+52: DATA 'NCName',
+52: EPSILON
+49: EPSILON
+48: CHOICE
+49: SEQUENCE
+50: REF 'xml-id',
+51: ATTRIBUTE "xml:id",
+52: REF 'ID',
+53: DATA 'ID',
+50: CHOICE
+51: ATTRIBUTE "text:id",
+52: REF 'NCName',
+53: DATA 'NCName',
+51: EPSILON
+49: EPSILON
+48: CHOICE
+49: REF 'common-in-content-meta-attlist',
+50: SEQUENCE
+51: ATTRIBUTE "xhtml:about",
+52: REF 'URIorSafeCURIE',
+53: CHOICE
+54: REF 'anyURI',
+55: DATA 'anyURI',
+54: REF 'SafeCURIE',
+55: DATA 'string',
+51: ATTRIBUTE "xhtml:property",
+52: REF 'CURIEs',
+53: LIST
+54: ONEOREMORE
+55: REF 'CURIE',
+56: DATA 'string',
+51: REF 'common-meta-literal-attlist',
+52: SEQUENCE
+53: CHOICE
+54: ATTRIBUTE "xhtml:datatype",
+55: REF 'CURIE',
+56: DATA 'string',
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "xhtml:content",
+55: REF 'string',
+56: DATA 'string',
+54: EPSILON
+49: EPSILON
+46: CHOICE
+47: REF 'text-number',
+48: ELEMENT "text:number",
+49: REF 'string',
+50: DATA 'string',
+47: EPSILON
+46: CHOICE
+47: ONEOREMORE
+48: REF 'paragraph-content-or-hyperlink',
+49: CHOICE
+50: REF 'paragraph-content',
+51: CHOICE
+52: STRING
+50: REF 'text-a',
+47: EPSILON
+43: REF 'text-p',
+43: REF 'text-list',
+44: ELEMENT "text:list",
+45: SEQUENCE
+46: REF 'text-list-attr',
+47: INTERLEAVE
+48: CHOICE
+49: ATTRIBUTE "text:style-name",
+50: REF 'styleNameRef',
+51: CHOICE
+52: DATA 'NCName',
+52: EPSILON
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:continue-numbering",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "text:continue-list",
+50: REF 'IDREF',
+51: DATA 'IDREF',
+49: EPSILON
+48: CHOICE
+49: REF 'xml-id',
+50: ATTRIBUTE "xml:id",
+51: REF 'ID',
+52: DATA 'ID',
+49: EPSILON
+46: CHOICE
+47: REF 'text-list-header',
+48: ELEMENT "text:list-header",
+49: SEQUENCE
+50: REF 'text-list-header-attr',
+51: CHOICE
+52: REF 'xml-id',
+53: ATTRIBUTE "xml:id",
+54: REF 'ID',
+55: DATA 'ID',
+52: EPSILON
+50: REF 'text-list-item-content',
+51: SEQUENCE
+52: CHOICE
+53: REF 'text-number',
+53: EPSILON
+52: CHOICE
+53: ONEOREMORE
+54: CHOICE
+55: REF 'text-p',
+55: REF 'text-h',
+55: REF 'text-list',
+55: REF 'text-soft-page-break',
+53: EPSILON
+47: EPSILON
+46: CHOICE
+47: ONEOREMORE
+48: REF 'text-list-item',
+49: ELEMENT "text:list-item",
+50: SEQUENCE
+51: REF 'text-list-item-attr',
+52: INTERLEAVE
+53: CHOICE
+54: ATTRIBUTE "text:start-value",
+55: REF 'nonNegativeInteger',
+56: DATA 'nonNegativeInteger',
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "text:style-override",
+55: REF 'styleNameRef',
+56: CHOICE
+57: DATA 'NCName',
+57: EPSILON
+54: EPSILON
+53: CHOICE
+54: REF 'xml-id',
+55: ATTRIBUTE "xml:id",
+56: REF 'ID',
+57: DATA 'ID',
+54: EPSILON
+51: REF 'text-list-item-content',
+52: SEQUENCE
+53: CHOICE
+54: REF 'text-number',
+54: EPSILON
+53: CHOICE
+54: ONEOREMORE
+55: CHOICE
+56: REF 'text-p',
+56: REF 'text-h',
+56: REF 'text-list',
+56: REF 'text-soft-page-break',
+54: EPSILON
+47: EPSILON
+43: REF 'text-numbered-paragraph',
+44: ELEMENT "text:numbered-paragraph",
+45: SEQUENCE
+46: REF 'text-numbered-paragraph-attr',
+47: INTERLEAVE
+48: ATTRIBUTE "text:list-id",
+49: REF 'NCName',
+50: DATA 'NCName',
+48: CHOICE
+49: ATTRIBUTE "text:level",
+50: REF 'positiveInteger',
+51: DATA 'positiveInteger',
+49: EPSILON
+48: CHOICE
+49: SEQUENCE
+50: ATTRIBUTE "text:style-name",
+51: REF 'styleNameRef',
+52: CHOICE
+53: DATA 'NCName',
+53: EPSILON
+50: ATTRIBUTE "text:continue-numbering",
+51: REF 'boolean',
+52: CHOICE
+53: VALUE 'true',
+53: VALUE 'false',
+50: ATTRIBUTE "text:start-value",
+51: REF 'nonNegativeInteger',
+52: DATA 'nonNegativeInteger',
+49: EPSILON
+48: CHOICE
+49: REF 'xml-id',
+50: ATTRIBUTE "xml:id",
+51: REF 'ID',
+52: DATA 'ID',
+49: EPSILON
+46: CHOICE
+47: REF 'text-number',
+47: EPSILON
+46: CHOICE
+47: REF 'text-p',
+47: REF 'text-h',
+43: REF 'table-table',
+44: ELEMENT "table:table",
+45: SEQUENCE
+46: REF 'table-table-attlist',
+47: INTERLEAVE
+48: CHOICE
+49: ATTRIBUTE "table:name",
+50: REF 'string',
+51: DATA 'string',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:style-name",
+50: REF 'styleNameRef',
+51: CHOICE
+52: DATA 'NCName',
+52: EPSILON
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:template-name",
+50: REF 'string',
+51: DATA 'string',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:use-first-row-styles",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:use-last-row-styles",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:use-first-column-styles",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:use-last-column-styles",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:use-banding-rows-styles",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:use-banding-columns-styles",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:protected",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:protection-key",
+50: REF 'string',
+51: DATA 'string',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:protection-key-digest-algorithm",
+50: REF 'anyIRI',
+51: DATA 'anyURI',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:print",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:print-ranges",
+50: REF 'cellRangeAddressList',
+51: DATA 'string',
+49: EPSILON
+48: CHOICE
+49: REF 'xml-id',
+50: ATTRIBUTE "xml:id",
+51: REF 'ID',
+52: DATA 'ID',
+49: EPSILON
+48: CHOICE
+49: ATTRIBUTE "table:is-sub-table",
+50: REF 'boolean',
+51: CHOICE
+52: VALUE 'true',
+52: VALUE 'false',
+49: EPSILON
+46: CHOICE
+47: REF 'table-title',
+48: ELEMENT "table:title",
+49: STRING
+47: EPSILON
+46: CHOICE
+47: REF 'table-desc',
+48: ELEMENT "table:desc",
+49: STRING
+47: EPSILON
+46: CHOICE
+47: REF 'table-table-source',
+48: ELEMENT "table:table-source",
+49: SEQUENCE
+50: REF 'table-table-source-attlist',
+51: INTERLEAVE
+52: CHOICE
+53: ATTRIBUTE "table:mode",
+54: CHOICE
+55: VALUE 'copy-all',
+55: VALUE 'copy-results-only',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "table:table-name",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+50: REF 'table-linked-source-attlist',
+51: INTERLEAVE
+52: ATTRIBUTE "xlink:type",
+53: VALUE 'simple',
+52: ATTRIBUTE "xlink:href",
+53: REF 'anyIRI',
+54: DATA 'anyURI',
+52: CHOICE
+53: ATTRIBUTE "xlink:actuate",
+54: VALUE 'onRequest',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "table:filter-name",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "table:filter-options",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "table:refresh-delay",
+54: REF 'duration',
+55: DATA 'duration',
+53: EPSILON
+47: EPSILON
+46: CHOICE
+47: REF 'office-dde-source',
+48: ELEMENT "office:dde-source",
+49: SEQUENCE
+50: REF 'office-dde-source-attlist',
+51: INTERLEAVE
+52: CHOICE
+53: ATTRIBUTE "office:name",
+54: REF 'string',
+55: DATA 'string',
+53: EPSILON
+52: CHOICE
+53: ATTRIBUTE "office:conversion-mode",
+54: CHOICE
+55: VALUE 'into-default-style-data-style',
+55: VALUE 'into-english-number',
+55: VALUE 'keep-text',
+53: EPSILON
+50: REF 'common-dde-connection-decl-attlist',
+51: INTERLEAVE
+52: ATTRIBUTE "office:dde-application",
+53: REF 'string',
+54: DATA 'string',
+52: ATTRIBUTE "office:dde-topic",
+53: REF 'string',
+54: DATA 'string',
+52: ATTRIBUTE "office:dde-item",
+53: REF 'string',
+54: DATA 'string',
+52: CHOICE
+53: ATTRIBUTE "office:automatic-update",
+54: REF 'boolean',
+55: CHOICE
+56: VALUE 'true',
+56: VALUE 'false',
+53: EPSILON
+47: EPSILON
+46: CHOICE
+47: REF 'table-scenario',
+48: ELEMENT "table:scenario",
+49: REF 'table-scenario-attlist',
+50: INTERLEAVE
+51: ATTRIBUTE "table:scenario-ranges",
+52: REF 'cellRangeAddressList',
+53: DATA 'string',
+51: ATTRIBUTE "table:is-active",
+52: REF 'boolean',
+53: CHOICE
+54: VALUE 'true',
+54: VALUE 'false',
+51: CHOICE
+52: ATTRIBUTE "table:display-border",
+53: REF 'boolean',
+54: CHOICE
+55: VALUE 'true',
+55: VALUE 'false',
+52: EPSILON
+51: CHOICE
+52: ATTRIBUTE "table:border-color",
+53: REF 'color',
+54: DATA 'string',
+52: EPSILON
+51: CHOICE
+52: ATTRIBUTE "table:copy-back",
+53: REF 'boolean',
+54: CHOICE
+55: VALUE 'true',
+55: VALUE 'false',
+52: EPSILON
+51: CHOICE
+52: ATTRIBUTE "table:copy-styles",
+53: REF 'boolean',
+54: CHOICE
+55: VALUE 'true',
+55: VALUE 'false',
+52: EPSILON
+51: CHOICE
+52: ATTRIBUTE "table:copy-formulas",
+53: REF 'boolean',
+54: CHOICE
+55: VALUE 'true',
+55: VALUE 'false',
+52: EPSILON
+51: CHOICE
+52: ATTRIBUTE "table:comment",
+53: REF 'string',
+54: DATA 'string',
+52: EPSILON
+51: CHOICE
+52: ATTRIBUTE "table:protected",
+53: REF 'boolean',
+54: CHOICE
+55: VALUE 'true',
+55: VALUE 'false',
+52: EPSILON
+47: EPSILON
+46: CHOICE
+47: REF 'office-forms',
+48: CHOICE
+49: ELEMENT "office:forms",
+50: SEQUENCE
+51: REF 'office-forms-attlist',
+52: INTERLEAVE
+53: CHOICE
+54: ATTRIBUTE "form:automatic-focus",
+55: REF 'boolean',
+56: CHOICE
+57: VALUE 'true',
+57: VALUE 'false',
+54: EPSILON
+53: CHOICE
+54: ATTRIBUTE "form:apply-design-mode",
+55: REF 'boolean',
+56: CHOICE
+57: VALUE 'true',
+57: VALUE 'false',
+54: EPSILON
+51: CHOICE
+52: ONEOREMORE
+53: CHOICE
+54: REF 'form-form',
+55: ELEMENT "form:form",
+56: SEQUENCE
+57: REF 'common-form-control-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "form:name",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:control-implementation",
+61: REF 'namespacedToken',
+62: DATA 'QName',
+60: EPSILON
+57: REF 'form-form-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: SEQUENCE
+61: ATTRIBUTE "xlink:type",
+62: VALUE 'simple',
+61: ATTRIBUTE "xlink:href",
+62: REF 'anyIRI',
+63: DATA 'anyURI',
+61: CHOICE
+62: ATTRIBUTE "xlink:actuate",
+63: VALUE 'onRequest',
+62: EPSILON
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "office:target-frame",
+61: REF 'targetFrameName',
+62: CHOICE
+63: VALUE '_self',
+63: VALUE '_blank',
+63: VALUE '_parent',
+63: VALUE '_top',
+63: REF 'string',
+64: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:method",
+61: CHOICE
+62: VALUE 'get',
+62: VALUE 'post',
+62: REF 'string',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:enctype",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:allow-deletes",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:allow-inserts",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:allow-updates",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:apply-filter",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:command-type",
+61: CHOICE
+62: VALUE 'table',
+62: VALUE 'query',
+62: VALUE 'command',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:command",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:datasource",
+61: CHOICE
+62: REF 'anyIRI',
+63: DATA 'anyURI',
+62: REF 'string',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:master-fields",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:detail-fields",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:escape-processing",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:filter",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:ignore-result",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:navigation-mode",
+61: REF 'navigation',
+62: CHOICE
+63: VALUE 'none',
+63: VALUE 'current',
+63: VALUE 'parent',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:order",
+61: REF 'string',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "form:tab-cycle",
+61: REF 'tab-cycles',
+62: CHOICE
+63: VALUE 'records',
+63: VALUE 'current',
+63: VALUE 'page',
+60: EPSILON
+57: CHOICE
+58: REF 'form-properties',
+59: ELEMENT "form:properties",
+60: ONEOREMORE
+61: REF 'form-property',
+62: CHOICE
+63: ELEMENT "form:property",
+64: SEQUENCE
+65: REF 'form-property-name',
+66: ATTRIBUTE "form:property-name",
+67: REF 'string',
+68: DATA 'string',
+65: REF 'form-property-value-and-type-attlist',
+66: CHOICE
+67: REF 'common-value-and-type-attlist',
+68: CHOICE
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'float',
+70: ATTRIBUTE "office:value",
+71: REF 'double',
+72: DATA 'double',
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'percentage',
+70: ATTRIBUTE "office:value",
+71: REF 'double',
+72: DATA 'double',
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'currency',
+70: ATTRIBUTE "office:value",
+71: REF 'double',
+72: DATA 'double',
+70: CHOICE
+71: ATTRIBUTE "office:currency",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'date',
+70: ATTRIBUTE "office:date-value",
+71: REF 'dateOrDateTime',
+72: CHOICE
+73: DATA 'date',
+73: DATA 'dateTime',
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'time',
+70: ATTRIBUTE "office:time-value",
+71: REF 'duration',
+72: DATA 'duration',
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'boolean',
+70: ATTRIBUTE "office:boolean-value",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+69: SEQUENCE
+70: ATTRIBUTE "office:value-type",
+71: VALUE 'string',
+70: CHOICE
+71: ATTRIBUTE "office:string-value",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+67: ATTRIBUTE "office:value-type",
+68: VALUE 'void',
+63: ELEMENT "form:list-property",
+64: SEQUENCE
+65: REF 'form-property-name',
+66: ATTRIBUTE "form:property-name",
+67: REF 'string',
+68: DATA 'string',
+65: REF 'form-property-type-and-value-list',
+66: CHOICE
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'float',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: ATTRIBUTE "office:value",
+72: REF 'double',
+73: DATA 'double',
+69: EPSILON
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'percentage',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: ATTRIBUTE "office:value",
+72: REF 'double',
+73: DATA 'double',
+69: EPSILON
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'currency',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: SEQUENCE
+72: ATTRIBUTE "office:value",
+73: REF 'double',
+74: DATA 'double',
+72: CHOICE
+73: ATTRIBUTE "office:currency",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+69: EPSILON
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'date',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: ATTRIBUTE "office:date-value",
+72: REF 'dateOrDateTime',
+73: CHOICE
+74: DATA 'date',
+74: DATA 'dateTime',
+69: EPSILON
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'time',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: ATTRIBUTE "office:time-value",
+72: REF 'duration',
+73: DATA 'duration',
+69: EPSILON
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'boolean',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: ATTRIBUTE "office:boolean-value",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+69: EPSILON
+67: SEQUENCE
+68: ATTRIBUTE "office:value-type",
+69: VALUE 'string',
+68: CHOICE
+69: ONEOREMORE
+70: ELEMENT "form:list-value",
+71: ATTRIBUTE "office:string-value",
+72: REF 'string',
+73: DATA 'string',
+69: EPSILON
+67: ATTRIBUTE "office:value-type",
+68: VALUE 'void',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: CHOICE
+60: REF 'controls',
+61: CHOICE
+62: REF 'column-controls',
+63: CHOICE
+64: ELEMENT "form:text",
+65: SEQUENCE
+66: REF 'form-text-attlist',
+67: SEQUENCE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-current-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:current-value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-linked-cell',
+69: CHOICE
+70: ATTRIBUTE "form:linked-cell",
+71: CHOICE
+72: REF 'cellAddress',
+73: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+64: ELEMENT "form:textarea",
+65: SEQUENCE
+66: REF 'form-textarea-attlist',
+67: SEQUENCE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-current-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:current-value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-linked-cell',
+69: CHOICE
+70: ATTRIBUTE "form:linked-cell",
+71: CHOICE
+72: REF 'cellAddress',
+73: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+66: CHOICE
+67: ONEOREMORE
+68: REF 'text-p',
+67: EPSILON
+64: ELEMENT "form:formatted-text",
+65: SEQUENCE
+66: REF 'form-formatted-text-attlist',
+67: INTERLEAVE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-current-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:current-value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-linked-cell',
+69: CHOICE
+70: ATTRIBUTE "form:linked-cell",
+71: CHOICE
+72: REF 'cellAddress',
+73: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+68: REF 'common-spin-button',
+69: CHOICE
+70: ATTRIBUTE "form:spin-button",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-repeat',
+69: CHOICE
+70: ATTRIBUTE "form:repeat",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-delay-for-repeat',
+69: CHOICE
+70: ATTRIBUTE "form:delay-for-repeat",
+71: REF 'duration',
+72: DATA 'duration',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:max-value",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:min-value",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:validation",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+64: ELEMENT "form:number",
+65: SEQUENCE
+66: REF 'form-number-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:value",
+70: REF 'double',
+71: DATA 'double',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:current-value",
+70: REF 'double',
+71: DATA 'double',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:min-value",
+70: REF 'double',
+71: DATA 'double',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:max-value",
+70: REF 'double',
+71: DATA 'double',
+69: EPSILON
+66: REF 'common-numeric-control-attlist',
+67: SEQUENCE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+66: REF 'common-spin-button',
+67: CHOICE
+68: ATTRIBUTE "form:spin-button",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:repeat",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-delay-for-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:delay-for-repeat",
+69: REF 'duration',
+70: DATA 'duration',
+68: EPSILON
+64: ELEMENT "form:date",
+65: SEQUENCE
+66: REF 'form-date-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:value",
+70: REF 'date',
+71: DATA 'date',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:current-value",
+70: REF 'date',
+71: DATA 'date',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:min-value",
+70: REF 'date',
+71: DATA 'date',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:max-value",
+70: REF 'date',
+71: DATA 'date',
+69: EPSILON
+66: REF 'common-numeric-control-attlist',
+67: SEQUENCE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+66: REF 'common-spin-button',
+67: CHOICE
+68: ATTRIBUTE "form:spin-button",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:repeat",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-delay-for-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:delay-for-repeat",
+69: REF 'duration',
+70: DATA 'duration',
+68: EPSILON
+64: ELEMENT "form:time",
+65: SEQUENCE
+66: REF 'form-time-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:value",
+70: REF 'time',
+71: DATA 'time',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:current-value",
+70: REF 'time',
+71: DATA 'time',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:min-value",
+70: REF 'time',
+71: DATA 'time',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:max-value",
+70: REF 'time',
+71: DATA 'time',
+69: EPSILON
+66: REF 'common-numeric-control-attlist',
+67: SEQUENCE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+66: REF 'common-spin-button',
+67: CHOICE
+68: ATTRIBUTE "form:spin-button",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:repeat",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-delay-for-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:delay-for-repeat",
+69: REF 'duration',
+70: DATA 'duration',
+68: EPSILON
+64: ELEMENT "form:combobox",
+65: SEQUENCE
+66: REF 'form-combobox-attlist',
+67: INTERLEAVE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-current-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:current-value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'dropdown',
+69: CHOICE
+70: ATTRIBUTE "form:dropdown",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-maxlength-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:max-length",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-readonly-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:readonly",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'size',
+69: CHOICE
+70: ATTRIBUTE "form:size",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-convert-empty-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:convert-empty-to-null",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'list-source',
+69: CHOICE
+70: ATTRIBUTE "form:list-source",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'list-source-type',
+69: CHOICE
+70: ATTRIBUTE "form:list-source-type",
+71: CHOICE
+72: VALUE 'table',
+72: VALUE 'query',
+72: VALUE 'sql',
+72: VALUE 'sql-pass-through',
+72: VALUE 'value-list',
+72: VALUE 'table-fields',
+70: EPSILON
+68: REF 'common-linked-cell',
+69: CHOICE
+70: ATTRIBUTE "form:linked-cell",
+71: CHOICE
+72: REF 'cellAddress',
+73: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+68: REF 'common-source-cell-range',
+69: CHOICE
+70: ATTRIBUTE "form:source-cell-range",
+71: CHOICE
+72: REF 'cellRangeAddress',
+73: CHOICE
+74: DATA 'string',
+74: DATA 'string',
+74: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:auto-complete",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+66: CHOICE
+67: ONEOREMORE
+68: REF 'form-item',
+69: ELEMENT "form:item",
+70: SEQUENCE
+71: REF 'form-item-attlist',
+72: REF 'label',
+73: CHOICE
+74: ATTRIBUTE "form:label",
+75: REF 'string',
+76: DATA 'string',
+74: EPSILON
+71: STRING
+67: EPSILON
+64: ELEMENT "form:listbox",
+65: SEQUENCE
+66: REF 'form-listbox-attlist',
+67: INTERLEAVE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'dropdown',
+69: CHOICE
+70: ATTRIBUTE "form:dropdown",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'size',
+69: CHOICE
+70: ATTRIBUTE "form:size",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'bound-column',
+69: CHOICE
+70: ATTRIBUTE "form:bound-column",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'list-source',
+69: CHOICE
+70: ATTRIBUTE "form:list-source",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'list-source-type',
+69: CHOICE
+70: ATTRIBUTE "form:list-source-type",
+71: CHOICE
+72: VALUE 'table',
+72: VALUE 'query',
+72: VALUE 'sql',
+72: VALUE 'sql-pass-through',
+72: VALUE 'value-list',
+72: VALUE 'table-fields',
+70: EPSILON
+68: REF 'common-linked-cell',
+69: CHOICE
+70: ATTRIBUTE "form:linked-cell",
+71: CHOICE
+72: REF 'cellAddress',
+73: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+68: REF 'list-linkage-type',
+69: CHOICE
+70: ATTRIBUTE "form:list-linkage-type",
+71: CHOICE
+72: VALUE 'selection',
+72: VALUE 'selection-indices',
+70: EPSILON
+68: REF 'common-source-cell-range',
+69: CHOICE
+70: ATTRIBUTE "form:source-cell-range",
+71: CHOICE
+72: REF 'cellRangeAddress',
+73: CHOICE
+74: DATA 'string',
+74: DATA 'string',
+74: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:multiple",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:xforms-list-source",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+66: CHOICE
+67: ONEOREMORE
+68: REF 'form-option',
+69: ELEMENT "form:option",
+70: SEQUENCE
+71: REF 'form-option-attlist',
+72: SEQUENCE
+73: REF 'current-selected',
+74: CHOICE
+75: ATTRIBUTE "form:current-selected",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+73: REF 'selected',
+74: CHOICE
+75: ATTRIBUTE "form:selected",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+73: REF 'label',
+74: CHOICE
+75: ATTRIBUTE "form:label",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+73: REF 'common-value-attlist',
+74: CHOICE
+75: ATTRIBUTE "form:value",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+71: STRING
+67: EPSILON
+64: ELEMENT "form:checkbox",
+65: SEQUENCE
+66: REF 'form-checkbox-attlist',
+67: INTERLEAVE
+68: REF 'form-control-attlist',
+69: SEQUENCE
+70: REF 'common-form-control-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "form:name",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "form:control-implementation",
+74: REF 'namespacedToken',
+75: DATA 'QName',
+73: EPSILON
+70: REF 'common-control-id-attlist',
+71: SEQUENCE
+72: REF 'xml-id',
+73: ATTRIBUTE "xml:id",
+74: REF 'ID',
+75: DATA 'ID',
+72: CHOICE
+73: ATTRIBUTE "form:id",
+74: REF 'NCName',
+75: DATA 'NCName',
+73: EPSILON
+70: REF 'xforms-bind-attlist',
+71: CHOICE
+72: ATTRIBUTE "xforms:bind",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+68: REF 'common-disabled-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:disabled",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'label',
+69: CHOICE
+70: ATTRIBUTE "form:label",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-printable-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:printable",
+71: REF 'boolean',
+72: CHOICE
+73: VALUE 'true',
+73: VALUE 'false',
+70: EPSILON
+68: REF 'common-tab-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:tab-index",
+72: REF 'nonNegativeInteger',
+73: DATA 'nonNegativeInteger',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:tab-stop",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+68: REF 'common-title-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:title",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-value-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:value",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-data-field-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:data-field",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-form-visual-effect-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:visual-effect",
+71: CHOICE
+72: VALUE 'flat',
+72: VALUE '3d',
+70: EPSILON
+68: REF 'common-form-relative-image-position-attlist',
+69: CHOICE
+70: ATTRIBUTE "form:image-position",
+71: VALUE 'center',
+70: EPSILON
+70: SEQUENCE
+71: ATTRIBUTE "form:image-position",
+72: CHOICE
+73: VALUE 'start',
+73: VALUE 'end',
+73: VALUE 'top',
+73: VALUE 'bottom',
+71: CHOICE
+72: ATTRIBUTE "form:image-align",
+73: CHOICE
+74: VALUE 'start',
+74: VALUE 'center',
+74: VALUE 'end',
+72: EPSILON
+68: REF 'common-linked-cell',
+69: CHOICE
+70: ATTRIBUTE "form:linked-cell",
+71: CHOICE
+72: REF 'cellAddress',
+73: DATA 'string',
+72: REF 'string',
+73: DATA 'string',
+70: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:current-state",
+70: REF 'states',
+71: CHOICE
+72: VALUE 'unchecked',
+72: VALUE 'checked',
+72: VALUE 'unknown',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:is-tristate",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:state",
+70: REF 'states',
+71: CHOICE
+72: VALUE 'unchecked',
+72: VALUE 'checked',
+72: VALUE 'unknown',
+69: EPSILON
+66: REF 'common-form-control-content',
+67: SEQUENCE
+68: CHOICE
+69: REF 'form-properties',
+69: EPSILON
+68: CHOICE
+69: REF 'office-event-listeners',
+69: EPSILON
+62: ELEMENT "form:password",
+63: SEQUENCE
+64: REF 'form-password-attlist',
+65: INTERLEAVE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-maxlength-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:max-length",
+69: REF 'nonNegativeInteger',
+70: DATA 'nonNegativeInteger',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-convert-empty-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:convert-empty-to-null",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:echo-char",
+68: REF 'character',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:file",
+63: SEQUENCE
+64: REF 'form-file-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-current-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:current-value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-maxlength-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:max-length",
+69: REF 'nonNegativeInteger',
+70: DATA 'nonNegativeInteger',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-readonly-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:readonly",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:fixed-text",
+63: SEQUENCE
+64: REF 'form-fixed-text-attlist',
+65: INTERLEAVE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'for',
+67: CHOICE
+68: ATTRIBUTE "form:for",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'label',
+67: CHOICE
+68: ATTRIBUTE "form:label",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:multi-line",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:button",
+63: SEQUENCE
+64: REF 'form-button-attlist',
+65: INTERLEAVE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'button-type',
+67: CHOICE
+68: ATTRIBUTE "form:button-type",
+69: REF 'types',
+70: CHOICE
+71: VALUE 'submit',
+71: VALUE 'reset',
+71: VALUE 'push',
+71: VALUE 'url',
+68: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'label',
+67: CHOICE
+68: ATTRIBUTE "form:label",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'image-data',
+67: CHOICE
+68: ATTRIBUTE "form:image-data",
+69: REF 'anyIRI',
+70: DATA 'anyURI',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'target-frame',
+67: CHOICE
+68: ATTRIBUTE "office:target-frame",
+69: REF 'targetFrameName',
+70: CHOICE
+71: VALUE '_self',
+71: VALUE '_blank',
+71: VALUE '_parent',
+71: VALUE '_top',
+71: REF 'string',
+72: DATA 'string',
+68: EPSILON
+66: REF 'target-location',
+67: CHOICE
+68: ATTRIBUTE "xlink:href",
+69: REF 'anyIRI',
+70: DATA 'anyURI',
+68: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-form-relative-image-position-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:image-position",
+69: VALUE 'center',
+68: EPSILON
+68: SEQUENCE
+69: ATTRIBUTE "form:image-position",
+70: CHOICE
+71: VALUE 'start',
+71: VALUE 'end',
+71: VALUE 'top',
+71: VALUE 'bottom',
+69: CHOICE
+70: ATTRIBUTE "form:image-align",
+71: CHOICE
+72: VALUE 'start',
+72: VALUE 'center',
+72: VALUE 'end',
+70: EPSILON
+66: REF 'common-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:repeat",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-delay-for-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:delay-for-repeat",
+69: REF 'duration',
+70: DATA 'duration',
+68: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:default-button",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:toggle",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:focus-on-click",
+68: REF 'boolean',
+69: CHOICE
+70: VALUE 'true',
+70: VALUE 'false',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:xforms-submission",
+68: REF 'string',
+69: DATA 'string',
+67: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:image",
+63: SEQUENCE
+64: REF 'form-image-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'button-type',
+67: CHOICE
+68: ATTRIBUTE "form:button-type",
+69: REF 'types',
+70: CHOICE
+71: VALUE 'submit',
+71: VALUE 'reset',
+71: VALUE 'push',
+71: VALUE 'url',
+68: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'image-data',
+67: CHOICE
+68: ATTRIBUTE "form:image-data",
+69: REF 'anyIRI',
+70: DATA 'anyURI',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'target-frame',
+67: CHOICE
+68: ATTRIBUTE "office:target-frame",
+69: REF 'targetFrameName',
+70: CHOICE
+71: VALUE '_self',
+71: VALUE '_blank',
+71: VALUE '_parent',
+71: VALUE '_top',
+71: REF 'string',
+72: DATA 'string',
+68: EPSILON
+66: REF 'target-location',
+67: CHOICE
+68: ATTRIBUTE "xlink:href",
+69: REF 'anyIRI',
+70: DATA 'anyURI',
+68: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:radio",
+63: SEQUENCE
+64: REF 'form-radio-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'current-selected',
+67: CHOICE
+68: ATTRIBUTE "form:current-selected",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'label',
+67: CHOICE
+68: ATTRIBUTE "form:label",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'selected',
+67: CHOICE
+68: ATTRIBUTE "form:selected",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-data-field-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:data-field",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-form-visual-effect-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:visual-effect",
+69: CHOICE
+70: VALUE 'flat',
+70: VALUE '3d',
+68: EPSILON
+66: REF 'common-form-relative-image-position-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:image-position",
+69: VALUE 'center',
+68: EPSILON
+68: SEQUENCE
+69: ATTRIBUTE "form:image-position",
+70: CHOICE
+71: VALUE 'start',
+71: VALUE 'end',
+71: VALUE 'top',
+71: VALUE 'bottom',
+69: CHOICE
+70: ATTRIBUTE "form:image-align",
+71: CHOICE
+72: VALUE 'start',
+72: VALUE 'center',
+72: VALUE 'end',
+70: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:frame",
+63: SEQUENCE
+64: REF 'form-frame-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'for',
+67: CHOICE
+68: ATTRIBUTE "form:for",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'label',
+67: CHOICE
+68: ATTRIBUTE "form:label",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:image-frame",
+63: SEQUENCE
+64: REF 'form-image-frame-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'image-data',
+67: CHOICE
+68: ATTRIBUTE "form:image-data",
+69: REF 'anyIRI',
+70: DATA 'anyURI',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-readonly-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:readonly",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-data-field-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:data-field",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:hidden",
+63: SEQUENCE
+64: REF 'form-hidden-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:grid",
+63: SEQUENCE
+64: REF 'form-grid-attlist',
+65: SEQUENCE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+64: CHOICE
+65: ONEOREMORE
+66: REF 'form-column',
+67: ELEMENT "form:column",
+68: SEQUENCE
+69: REF 'form-column-attlist',
+70: SEQUENCE
+71: REF 'common-form-control-attlist',
+72: INTERLEAVE
+73: CHOICE
+74: ATTRIBUTE "form:name",
+75: REF 'string',
+76: DATA 'string',
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "form:control-implementation",
+75: REF 'namespacedToken',
+76: DATA 'QName',
+74: EPSILON
+71: REF 'label',
+72: CHOICE
+73: ATTRIBUTE "form:label",
+74: REF 'string',
+75: DATA 'string',
+73: EPSILON
+71: REF 'text-style-name',
+72: CHOICE
+73: ATTRIBUTE "form:text-style-name",
+74: REF 'styleNameRef',
+75: CHOICE
+76: DATA 'NCName',
+76: EPSILON
+73: EPSILON
+69: ONEOREMORE
+70: REF 'column-controls',
+71: CHOICE
+65: EPSILON
+62: ELEMENT "form:value-range",
+63: SEQUENCE
+64: REF 'form-value-range-attlist',
+65: INTERLEAVE
+66: REF 'form-control-attlist',
+67: SEQUENCE
+68: REF 'common-form-control-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "form:name",
+72: REF 'string',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "form:control-implementation",
+72: REF 'namespacedToken',
+73: DATA 'QName',
+71: EPSILON
+68: REF 'common-control-id-attlist',
+69: SEQUENCE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: CHOICE
+71: ATTRIBUTE "form:id",
+72: REF 'NCName',
+73: DATA 'NCName',
+71: EPSILON
+68: REF 'xforms-bind-attlist',
+69: CHOICE
+70: ATTRIBUTE "xforms:bind",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+66: REF 'common-disabled-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:disabled",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-printable-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:printable",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-tab-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "form:tab-index",
+70: REF 'nonNegativeInteger',
+71: DATA 'nonNegativeInteger',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "form:tab-stop",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-title-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:title",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-value-attlist',
+67: CHOICE
+68: ATTRIBUTE "form:value",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: REF 'common-linked-cell',
+67: CHOICE
+68: ATTRIBUTE "form:linked-cell",
+69: CHOICE
+70: REF 'cellAddress',
+71: DATA 'string',
+70: REF 'string',
+71: DATA 'string',
+68: EPSILON
+66: REF 'common-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:repeat",
+69: REF 'boolean',
+70: CHOICE
+71: VALUE 'true',
+71: VALUE 'false',
+68: EPSILON
+66: REF 'common-delay-for-repeat',
+67: CHOICE
+68: ATTRIBUTE "form:delay-for-repeat",
+69: REF 'duration',
+70: DATA 'duration',
+68: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:max-value",
+68: REF 'integer',
+69: DATA 'integer',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:min-value",
+68: REF 'integer',
+69: DATA 'integer',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:step-size",
+68: REF 'positiveInteger',
+69: DATA 'positiveInteger',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:page-step-size",
+68: REF 'positiveInteger',
+69: DATA 'positiveInteger',
+67: EPSILON
+66: CHOICE
+67: ATTRIBUTE "form:orientation",
+68: CHOICE
+69: VALUE 'horizontal',
+69: VALUE 'vertical',
+67: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+62: ELEMENT "form:generic-control",
+63: SEQUENCE
+64: REF 'form-generic-control-attlist',
+65: REF 'form-control-attlist',
+66: SEQUENCE
+67: REF 'common-form-control-attlist',
+68: INTERLEAVE
+69: CHOICE
+70: ATTRIBUTE "form:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "form:control-implementation",
+71: REF 'namespacedToken',
+72: DATA 'QName',
+70: EPSILON
+67: REF 'common-control-id-attlist',
+68: SEQUENCE
+69: REF 'xml-id',
+70: ATTRIBUTE "xml:id",
+71: REF 'ID',
+72: DATA 'ID',
+69: CHOICE
+70: ATTRIBUTE "form:id",
+71: REF 'NCName',
+72: DATA 'NCName',
+70: EPSILON
+67: REF 'xforms-bind-attlist',
+68: CHOICE
+69: ATTRIBUTE "xforms:bind",
+70: REF 'string',
+71: DATA 'string',
+69: EPSILON
+64: REF 'common-form-control-content',
+65: SEQUENCE
+66: CHOICE
+67: REF 'form-properties',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+60: REF 'form-form',
+58: EPSILON
+57: CHOICE
+58: REF 'form-connection-resource',
+59: ELEMENT "form:connection-resource",
+60: ATTRIBUTE "xlink:href",
+61: REF 'anyIRI',
+62: DATA 'anyURI',
+58: EPSILON
+54: REF 'xforms-model',
+55: ELEMENT "xforms:model",
+56: REF 'anyAttListOrElements',
+57: SEQUENCE
+58: CHOICE
+59: ONEOREMORE
+60: ATTRIBUTE "*",
+61: STRING
+59: EPSILON
+58: REF 'anyElements',
+59: CHOICE
+60: ONEOREMORE
+60: EPSILON
+52: EPSILON
+49: EPSILON
+47: EPSILON
+46: CHOICE
+47: REF 'table-shapes',
+48: ELEMENT "table:shapes",
+49: ONEOREMORE
+50: REF 'shape',
+51: CHOICE
+52: REF 'shape-instance',
+53: CHOICE
+54: REF 'draw-rect',
+55: ELEMENT "draw:rect",
+56: SEQUENCE
+57: REF 'draw-rect-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:corner-radius",
+60: REF 'nonNegativeLength',
+61: DATA 'string',
+59: EPSILON
+59: SEQUENCE
+60: CHOICE
+61: ATTRIBUTE "svg:rx",
+62: REF 'nonNegativeLength',
+63: DATA 'string',
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "svg:ry",
+62: REF 'nonNegativeLength',
+63: DATA 'string',
+61: EPSILON
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-size-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:width",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:height",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+59: ELEMENT "svg:title",
+60: STRING
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+59: ELEMENT "svg:desc",
+60: STRING
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+60: ELEMENT "draw:glue-point",
+61: REF 'draw-glue-point-attlist',
+62: INTERLEAVE
+63: ATTRIBUTE "draw:id",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: ATTRIBUTE "svg:x",
+64: CHOICE
+65: REF 'distance',
+66: REF 'length',
+67: DATA 'string',
+65: REF 'percent',
+66: DATA 'string',
+63: ATTRIBUTE "svg:y",
+64: CHOICE
+65: REF 'distance',
+66: REF 'length',
+67: DATA 'string',
+65: REF 'percent',
+66: DATA 'string',
+63: CHOICE
+64: ATTRIBUTE "draw:align",
+65: CHOICE
+66: VALUE 'top-left',
+66: VALUE 'top',
+66: VALUE 'top-right',
+66: VALUE 'left',
+66: VALUE 'center',
+66: VALUE 'right',
+66: VALUE 'bottom-left',
+66: VALUE 'bottom-right',
+64: EPSILON
+63: ATTRIBUTE "draw:escape-direction",
+64: CHOICE
+65: VALUE 'auto',
+65: VALUE 'left',
+65: VALUE 'right',
+65: VALUE 'up',
+65: VALUE 'down',
+65: VALUE 'horizontal',
+65: VALUE 'vertical',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-line',
+55: ELEMENT "draw:line",
+56: SEQUENCE
+57: REF 'draw-line-attlist',
+58: INTERLEAVE
+59: ATTRIBUTE "svg:x1",
+60: REF 'coordinate',
+61: REF 'length',
+62: DATA 'string',
+59: ATTRIBUTE "svg:y1",
+60: REF 'coordinate',
+61: REF 'length',
+62: DATA 'string',
+59: ATTRIBUTE "svg:x2",
+60: REF 'coordinate',
+61: REF 'length',
+62: DATA 'string',
+59: ATTRIBUTE "svg:y2",
+60: REF 'coordinate',
+61: REF 'length',
+62: DATA 'string',
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-polyline',
+55: ELEMENT "draw:polyline",
+56: SEQUENCE
+57: REF 'common-draw-points-attlist',
+58: ATTRIBUTE "draw:points",
+59: REF 'points',
+60: DATA 'string',
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-size-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:width",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:height",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-viewbox-attlist',
+58: ATTRIBUTE "svg:viewBox",
+59: LIST
+60: SEQUENCE
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-polygon',
+55: ELEMENT "draw:polygon",
+56: SEQUENCE
+57: REF 'common-draw-points-attlist',
+58: ATTRIBUTE "draw:points",
+59: REF 'points',
+60: DATA 'string',
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-size-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:width",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:height",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-viewbox-attlist',
+58: ATTRIBUTE "svg:viewBox",
+59: LIST
+60: SEQUENCE
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-regular-polygon',
+55: ELEMENT "draw:regular-polygon",
+56: SEQUENCE
+57: REF 'draw-regular-polygon-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "draw:concave",
+61: VALUE 'false',
+60: SEQUENCE
+61: ATTRIBUTE "draw:concave",
+62: VALUE 'true',
+61: REF 'draw-regular-polygon-sharpness-attlist',
+62: ATTRIBUTE "draw:sharpness",
+63: REF 'percent',
+64: DATA 'string',
+59: ATTRIBUTE "draw:corners",
+60: REF 'positiveInteger',
+61: DATA 'positiveInteger',
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-size-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:width",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:height",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-path',
+55: ELEMENT "draw:path",
+56: SEQUENCE
+57: REF 'common-draw-path-data-attlist',
+58: ATTRIBUTE "svg:d",
+59: REF 'pathData',
+60: DATA 'string',
+57: REF 'common-draw-position-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-size-attlist',
+58: SEQUENCE
+59: CHOICE
+60: ATTRIBUTE "svg:width",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "svg:height",
+61: REF 'length',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-viewbox-attlist',
+58: ATTRIBUTE "svg:viewBox",
+59: LIST
+60: SEQUENCE
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+61: REF 'integer',
+62: DATA 'integer',
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-circle',
+55: ELEMENT "draw:circle",
+56: SEQUENCE
+57: CHOICE
+58: SEQUENCE
+59: REF 'draw-circle-attlist',
+60: ATTRIBUTE "svg:r",
+61: REF 'length',
+62: DATA 'string',
+59: REF 'common-draw-circle-ellipse-pos-attlist',
+60: SEQUENCE
+61: ATTRIBUTE "svg:cx",
+62: REF 'coordinate',
+63: REF 'length',
+64: DATA 'string',
+61: ATTRIBUTE "svg:cy",
+62: REF 'coordinate',
+63: REF 'length',
+64: DATA 'string',
+58: SEQUENCE
+59: REF 'common-draw-position-attlist',
+60: SEQUENCE
+61: CHOICE
+62: ATTRIBUTE "svg:x",
+63: REF 'coordinate',
+64: REF 'length',
+65: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "svg:y",
+63: REF 'coordinate',
+64: REF 'length',
+65: DATA 'string',
+62: EPSILON
+59: REF 'common-draw-size-attlist',
+60: SEQUENCE
+61: CHOICE
+62: ATTRIBUTE "svg:width",
+63: REF 'length',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "svg:height",
+63: REF 'length',
+64: DATA 'string',
+62: EPSILON
+57: REF 'common-draw-circle-ellipse-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "draw:kind",
+61: CHOICE
+62: VALUE 'full',
+62: VALUE 'section',
+62: VALUE 'cut',
+62: VALUE 'arc',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "draw:start-angle",
+61: REF 'angle',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "draw:end-angle",
+61: REF 'angle',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-ellipse',
+55: ELEMENT "draw:ellipse",
+56: SEQUENCE
+57: CHOICE
+58: SEQUENCE
+59: REF 'draw-ellipse-attlist',
+60: SEQUENCE
+61: ATTRIBUTE "svg:rx",
+62: REF 'length',
+63: DATA 'string',
+61: ATTRIBUTE "svg:ry",
+62: REF 'length',
+63: DATA 'string',
+59: REF 'common-draw-circle-ellipse-pos-attlist',
+60: SEQUENCE
+61: ATTRIBUTE "svg:cx",
+62: REF 'coordinate',
+63: REF 'length',
+64: DATA 'string',
+61: ATTRIBUTE "svg:cy",
+62: REF 'coordinate',
+63: REF 'length',
+64: DATA 'string',
+58: SEQUENCE
+59: REF 'common-draw-position-attlist',
+60: SEQUENCE
+61: CHOICE
+62: ATTRIBUTE "svg:x",
+63: REF 'coordinate',
+64: REF 'length',
+65: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "svg:y",
+63: REF 'coordinate',
+64: REF 'length',
+65: DATA 'string',
+62: EPSILON
+59: REF 'common-draw-size-attlist',
+60: SEQUENCE
+61: CHOICE
+62: ATTRIBUTE "svg:width",
+63: REF 'length',
+64: DATA 'string',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "svg:height",
+63: REF 'length',
+64: DATA 'string',
+62: EPSILON
+57: REF 'common-draw-circle-ellipse-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "draw:kind",
+61: CHOICE
+62: VALUE 'full',
+62: VALUE 'section',
+62: VALUE 'cut',
+62: VALUE 'arc',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "draw:start-angle",
+61: REF 'angle',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "draw:end-angle",
+61: REF 'angle',
+62: DATA 'string',
+60: EPSILON
+57: REF 'common-draw-shape-with-text-and-styles-attlist',
+58: SEQUENCE
+59: REF 'common-draw-shape-with-styles-attlist',
+60: SEQUENCE
+61: REF 'common-draw-z-index-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:z-index",
+64: REF 'nonNegativeInteger',
+65: DATA 'nonNegativeInteger',
+63: EPSILON
+61: REF 'common-draw-id-attlist',
+62: CHOICE
+63: SEQUENCE
+64: REF 'xml-id',
+65: ATTRIBUTE "xml:id",
+66: REF 'ID',
+67: DATA 'ID',
+64: CHOICE
+65: ATTRIBUTE "draw:id",
+66: REF 'NCName',
+67: DATA 'NCName',
+65: EPSILON
+63: EPSILON
+61: REF 'common-draw-layer-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:layer",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-style-name-attlist',
+62: CHOICE
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "draw:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "draw:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+63: SEQUENCE
+64: CHOICE
+65: ATTRIBUTE "presentation:style-name",
+66: REF 'styleNameRef',
+67: CHOICE
+68: DATA 'NCName',
+68: EPSILON
+65: EPSILON
+64: CHOICE
+65: ATTRIBUTE "presentation:class-names",
+66: REF 'styleNameRefs',
+67: LIST
+68: CHOICE
+69: ONEOREMORE
+70: DATA 'NCName',
+69: EPSILON
+65: EPSILON
+61: REF 'common-draw-transform-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:transform",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-draw-name-attlist',
+62: CHOICE
+63: ATTRIBUTE "draw:name",
+64: REF 'string',
+65: DATA 'string',
+63: EPSILON
+61: REF 'common-text-spreadsheet-shape-attlist',
+62: INTERLEAVE
+63: CHOICE
+64: ATTRIBUTE "table:end-cell-address",
+65: REF 'cellAddress',
+66: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-x",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:end-y",
+65: REF 'coordinate',
+66: REF 'length',
+67: DATA 'string',
+64: EPSILON
+63: CHOICE
+64: ATTRIBUTE "table:table-background",
+65: REF 'boolean',
+66: CHOICE
+67: VALUE 'true',
+67: VALUE 'false',
+64: EPSILON
+63: REF 'common-text-anchor-attlist',
+64: INTERLEAVE
+65: CHOICE
+66: ATTRIBUTE "text:anchor-type",
+67: CHOICE
+68: VALUE 'page',
+68: VALUE 'frame',
+68: VALUE 'paragraph',
+68: VALUE 'char',
+68: VALUE 'as-char',
+66: EPSILON
+65: CHOICE
+66: ATTRIBUTE "text:anchor-page-number",
+67: REF 'positiveInteger',
+68: DATA 'positiveInteger',
+66: EPSILON
+59: REF 'common-draw-text-style-name-attlist',
+60: CHOICE
+61: ATTRIBUTE "draw:text-style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: REF 'draw-text',
+58: CHOICE
+59: ONEOREMORE
+60: CHOICE
+61: REF 'text-p',
+61: REF 'text-list',
+59: EPSILON
+54: REF 'draw-g',
+55: ELEMENT "draw:g",
+56: SEQUENCE
+57: REF 'draw-g-attlist',
+58: CHOICE
+59: ATTRIBUTE "svg:y",
+60: REF 'coordinate',
+61: REF 'length',
+62: DATA 'string',
+59: EPSILON
+57: REF 'common-draw-z-index-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:z-index",
+60: REF 'nonNegativeInteger',
+61: DATA 'nonNegativeInteger',
+59: EPSILON
+57: REF 'common-draw-name-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:name",
+60: REF 'string',
+61: DATA 'string',
+59: EPSILON
+57: REF 'common-draw-id-attlist',
+58: CHOICE
+59: SEQUENCE
+60: REF 'xml-id',
+61: ATTRIBUTE "xml:id",
+62: REF 'ID',
+63: DATA 'ID',
+60: CHOICE
+61: ATTRIBUTE "draw:id",
+62: REF 'NCName',
+63: DATA 'NCName',
+61: EPSILON
+59: EPSILON
+57: REF 'common-draw-style-name-attlist',
+58: CHOICE
+59: SEQUENCE
+60: CHOICE
+61: ATTRIBUTE "draw:style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "draw:class-names",
+62: REF 'styleNameRefs',
+63: LIST
+64: CHOICE
+65: ONEOREMORE
+66: DATA 'NCName',
+65: EPSILON
+61: EPSILON
+59: SEQUENCE
+60: CHOICE
+61: ATTRIBUTE "presentation:style-name",
+62: REF 'styleNameRef',
+63: CHOICE
+64: DATA 'NCName',
+64: EPSILON
+61: EPSILON
+60: CHOICE
+61: ATTRIBUTE "presentation:class-names",
+62: REF 'styleNameRefs',
+63: LIST
+64: CHOICE
+65: ONEOREMORE
+66: DATA 'NCName',
+65: EPSILON
+61: EPSILON
+57: REF 'common-text-spreadsheet-shape-attlist',
+58: INTERLEAVE
+59: CHOICE
+60: ATTRIBUTE "table:end-cell-address",
+61: REF 'cellAddress',
+62: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "table:end-x",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "table:end-y",
+61: REF 'coordinate',
+62: REF 'length',
+63: DATA 'string',
+60: EPSILON
+59: CHOICE
+60: ATTRIBUTE "table:table-background",
+61: REF 'boolean',
+62: CHOICE
+63: VALUE 'true',
+63: VALUE 'false',
+60: EPSILON
+59: REF 'common-text-anchor-attlist',
+60: INTERLEAVE
+61: CHOICE
+62: ATTRIBUTE "text:anchor-type",
+63: CHOICE
+64: VALUE 'page',
+64: VALUE 'frame',
+64: VALUE 'paragraph',
+64: VALUE 'char',
+64: VALUE 'as-char',
+62: EPSILON
+61: CHOICE
+62: ATTRIBUTE "text:anchor-page-number",
+63: REF 'positiveInteger',
+64: DATA 'positiveInteger',
+62: EPSILON
+57: REF 'common-draw-caption-id-attlist',
+58: CHOICE
+59: ATTRIBUTE "draw:caption-id",
+60: REF 'IDREF',
+61: DATA 'IDREF',
+59: EPSILON
+57: CHOICE
+58: REF 'svg-title',
+58: EPSILON
+57: CHOICE
+58: REF 'svg-desc',
+58: EPSILON
+57: CHOICE
+58: REF 'office-event-listeners',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'draw-glue-point',
+58: EPSILON
+57: CHOICE
+58: ONEOREMORE
+59: REF 'shape',
+60: CHOICE
+61: REF 'shape-instance',
+62: CHOICE
+63: REF 'draw-rect',
+63: REF 'draw-line',
+63: REF 'draw-polyline',
+63: REF 'draw-polygon',
+63: REF 'draw-regular-polygon',
+63: REF 'draw-path',
+63: REF 'draw-circle',
+63: REF 'draw-ellipse',
+63: REF 'draw-g',
+63: REF 'draw-page-thumbnail',
+64: ELEMENT "draw:page-thumbnail",
+65: SEQUENCE
+66: REF 'draw-page-thumbnail-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:page-number",
+69: REF 'positiveInteger',
+70: DATA 'positiveInteger',
+68: EPSILON
+66: REF 'common-draw-position-attlist',
+67: SEQUENCE
+68: CHOICE
+69: ATTRIBUTE "svg:x",
+70: REF 'coordinate',
+71: REF 'length',
+72: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "svg:y",
+70: REF 'coordinate',
+71: REF 'length',
+72: DATA 'string',
+69: EPSILON
+66: REF 'common-draw-size-attlist',
+67: SEQUENCE
+68: CHOICE
+69: ATTRIBUTE "svg:width",
+70: REF 'length',
+71: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "svg:height",
+70: REF 'length',
+71: DATA 'string',
+69: EPSILON
+66: REF 'presentation-shape-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "presentation:class",
+70: REF 'presentation-classes',
+71: CHOICE
+72: VALUE 'title',
+72: VALUE 'outline',
+72: VALUE 'subtitle',
+72: VALUE 'text',
+72: VALUE 'graphic',
+72: VALUE 'object',
+72: VALUE 'chart',
+72: VALUE 'table',
+72: VALUE 'orgchart',
+72: VALUE 'page',
+72: VALUE 'notes',
+72: VALUE 'handout',
+72: VALUE 'header',
+72: VALUE 'footer',
+72: VALUE 'date-time',
+72: VALUE 'page-number',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "presentation:placeholder",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "presentation:user-transformed",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'common-draw-shape-with-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-z-index-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:z-index",
+71: REF 'nonNegativeInteger',
+72: DATA 'nonNegativeInteger',
+70: EPSILON
+68: REF 'common-draw-id-attlist',
+69: CHOICE
+70: SEQUENCE
+71: REF 'xml-id',
+72: ATTRIBUTE "xml:id",
+73: REF 'ID',
+74: DATA 'ID',
+71: CHOICE
+72: ATTRIBUTE "draw:id",
+73: REF 'NCName',
+74: DATA 'NCName',
+72: EPSILON
+70: EPSILON
+68: REF 'common-draw-layer-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:layer",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-style-name-attlist',
+69: CHOICE
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "draw:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "draw:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+70: SEQUENCE
+71: CHOICE
+72: ATTRIBUTE "presentation:style-name",
+73: REF 'styleNameRef',
+74: CHOICE
+75: DATA 'NCName',
+75: EPSILON
+72: EPSILON
+71: CHOICE
+72: ATTRIBUTE "presentation:class-names",
+73: REF 'styleNameRefs',
+74: LIST
+75: CHOICE
+76: ONEOREMORE
+77: DATA 'NCName',
+76: EPSILON
+72: EPSILON
+68: REF 'common-draw-transform-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:transform",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-draw-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:name",
+71: REF 'string',
+72: DATA 'string',
+70: EPSILON
+68: REF 'common-text-spreadsheet-shape-attlist',
+69: INTERLEAVE
+70: CHOICE
+71: ATTRIBUTE "table:end-cell-address",
+72: REF 'cellAddress',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:end-x",
+72: REF 'coordinate',
+73: REF 'length',
+74: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:end-y",
+72: REF 'coordinate',
+73: REF 'length',
+74: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "table:table-background",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+71: EPSILON
+70: REF 'common-text-anchor-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "text:anchor-type",
+74: CHOICE
+75: VALUE 'page',
+75: VALUE 'frame',
+75: VALUE 'paragraph',
+75: VALUE 'char',
+75: VALUE 'as-char',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "text:anchor-page-number",
+74: REF 'positiveInteger',
+75: DATA 'positiveInteger',
+73: EPSILON
+66: REF 'common-draw-caption-id-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:caption-id",
+69: REF 'IDREF',
+70: DATA 'IDREF',
+68: EPSILON
+66: CHOICE
+67: REF 'svg-title',
+67: EPSILON
+66: CHOICE
+67: REF 'svg-desc',
+67: EPSILON
+63: REF 'draw-frame',
+64: ELEMENT "draw:frame",
+65: SEQUENCE
+66: REF 'common-draw-shape-with-text-and-styles-attlist',
+67: SEQUENCE
+68: REF 'common-draw-shape-with-styles-attlist',
+69: SEQUENCE
+70: REF 'common-draw-z-index-attlist',
+71: CHOICE
+72: ATTRIBUTE "draw:z-index",
+73: REF 'nonNegativeInteger',
+74: DATA 'nonNegativeInteger',
+72: EPSILON
+70: REF 'common-draw-id-attlist',
+71: CHOICE
+72: SEQUENCE
+73: REF 'xml-id',
+74: ATTRIBUTE "xml:id",
+75: REF 'ID',
+76: DATA 'ID',
+73: CHOICE
+74: ATTRIBUTE "draw:id",
+75: REF 'NCName',
+76: DATA 'NCName',
+74: EPSILON
+72: EPSILON
+70: REF 'common-draw-layer-name-attlist',
+71: CHOICE
+72: ATTRIBUTE "draw:layer",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+70: REF 'common-draw-style-name-attlist',
+71: CHOICE
+72: SEQUENCE
+73: CHOICE
+74: ATTRIBUTE "draw:style-name",
+75: REF 'styleNameRef',
+76: CHOICE
+77: DATA 'NCName',
+77: EPSILON
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "draw:class-names",
+75: REF 'styleNameRefs',
+76: LIST
+77: CHOICE
+78: ONEOREMORE
+79: DATA 'NCName',
+78: EPSILON
+74: EPSILON
+72: SEQUENCE
+73: CHOICE
+74: ATTRIBUTE "presentation:style-name",
+75: REF 'styleNameRef',
+76: CHOICE
+77: DATA 'NCName',
+77: EPSILON
+74: EPSILON
+73: CHOICE
+74: ATTRIBUTE "presentation:class-names",
+75: REF 'styleNameRefs',
+76: LIST
+77: CHOICE
+78: ONEOREMORE
+79: DATA 'NCName',
+78: EPSILON
+74: EPSILON
+70: REF 'common-draw-transform-attlist',
+71: CHOICE
+72: ATTRIBUTE "draw:transform",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+70: REF 'common-draw-name-attlist',
+71: CHOICE
+72: ATTRIBUTE "draw:name",
+73: REF 'string',
+74: DATA 'string',
+72: EPSILON
+70: REF 'common-text-spreadsheet-shape-attlist',
+71: INTERLEAVE
+72: CHOICE
+73: ATTRIBUTE "table:end-cell-address",
+74: REF 'cellAddress',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "table:end-x",
+74: REF 'coordinate',
+75: REF 'length',
+76: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "table:end-y",
+74: REF 'coordinate',
+75: REF 'length',
+76: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "table:table-background",
+74: REF 'boolean',
+75: CHOICE
+76: VALUE 'true',
+76: VALUE 'false',
+73: EPSILON
+72: REF 'common-text-anchor-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "text:anchor-type",
+76: CHOICE
+77: VALUE 'page',
+77: VALUE 'frame',
+77: VALUE 'paragraph',
+77: VALUE 'char',
+77: VALUE 'as-char',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "text:anchor-page-number",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+68: REF 'common-draw-text-style-name-attlist',
+69: CHOICE
+70: ATTRIBUTE "draw:text-style-name",
+71: REF 'styleNameRef',
+72: CHOICE
+73: DATA 'NCName',
+73: EPSILON
+70: EPSILON
+66: REF 'common-draw-position-attlist',
+67: SEQUENCE
+68: CHOICE
+69: ATTRIBUTE "svg:x",
+70: REF 'coordinate',
+71: REF 'length',
+72: DATA 'string',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "svg:y",
+70: REF 'coordinate',
+71: REF 'length',
+72: DATA 'string',
+69: EPSILON
+66: REF 'common-draw-rel-size-attlist',
+67: SEQUENCE
+68: REF 'common-draw-size-attlist',
+69: SEQUENCE
+70: CHOICE
+71: ATTRIBUTE "svg:width",
+72: REF 'length',
+73: DATA 'string',
+71: EPSILON
+70: CHOICE
+71: ATTRIBUTE "svg:height",
+72: REF 'length',
+73: DATA 'string',
+71: EPSILON
+68: CHOICE
+69: ATTRIBUTE "style:rel-width",
+70: CHOICE
+71: REF 'percent',
+72: DATA 'string',
+71: VALUE 'scale',
+71: VALUE 'scale-min',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "style:rel-height",
+70: CHOICE
+71: REF 'percent',
+72: DATA 'string',
+71: VALUE 'scale',
+71: VALUE 'scale-min',
+69: EPSILON
+66: REF 'common-draw-caption-id-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:caption-id",
+69: REF 'IDREF',
+70: DATA 'IDREF',
+68: EPSILON
+66: REF 'presentation-shape-attlist',
+67: INTERLEAVE
+68: CHOICE
+69: ATTRIBUTE "presentation:class",
+70: REF 'presentation-classes',
+71: CHOICE
+72: VALUE 'title',
+72: VALUE 'outline',
+72: VALUE 'subtitle',
+72: VALUE 'text',
+72: VALUE 'graphic',
+72: VALUE 'object',
+72: VALUE 'chart',
+72: VALUE 'table',
+72: VALUE 'orgchart',
+72: VALUE 'page',
+72: VALUE 'notes',
+72: VALUE 'handout',
+72: VALUE 'header',
+72: VALUE 'footer',
+72: VALUE 'date-time',
+72: VALUE 'page-number',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "presentation:placeholder",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+68: CHOICE
+69: ATTRIBUTE "presentation:user-transformed",
+70: REF 'boolean',
+71: CHOICE
+72: VALUE 'true',
+72: VALUE 'false',
+69: EPSILON
+66: REF 'draw-frame-attlist',
+67: CHOICE
+68: ATTRIBUTE "draw:copy-of",
+69: REF 'string',
+70: DATA 'string',
+68: EPSILON
+66: CHOICE
+67: ONEOREMORE
+68: CHOICE
+69: REF 'draw-text-box',
+70: ELEMENT "draw:text-box",
+71: SEQUENCE
+72: REF 'draw-text-box-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:chain-next-name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "draw:corner-radius",
+76: REF 'nonNegativeLength',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "fo:min-height",
+76: CHOICE
+77: REF 'length',
+78: DATA 'string',
+77: REF 'percent',
+78: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "fo:min-width",
+76: CHOICE
+77: REF 'length',
+78: DATA 'string',
+77: REF 'percent',
+78: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "fo:max-height",
+76: CHOICE
+77: REF 'length',
+78: DATA 'string',
+77: REF 'percent',
+78: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "fo:max-width",
+76: CHOICE
+77: REF 'length',
+78: DATA 'string',
+77: REF 'percent',
+78: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: SEQUENCE
+76: REF 'xml-id',
+77: ATTRIBUTE "xml:id",
+78: REF 'ID',
+79: DATA 'ID',
+76: CHOICE
+77: ATTRIBUTE "text:id",
+78: REF 'NCName',
+79: DATA 'NCName',
+77: EPSILON
+75: EPSILON
+72: CHOICE
+73: ONEOREMORE
+74: REF 'text-content',
+75: CHOICE
+76: REF 'text-h',
+76: REF 'text-p',
+76: REF 'text-list',
+76: REF 'text-numbered-paragraph',
+76: REF 'table-table',
+76: REF 'text-section',
+77: ELEMENT "text:section",
+78: SEQUENCE
+79: REF 'text-section-attlist',
+80: INTERLEAVE
+81: REF 'common-section-attlist',
+82: INTERLEAVE
+83: CHOICE
+84: ATTRIBUTE "text:style-name",
+85: REF 'styleNameRef',
+86: CHOICE
+87: DATA 'NCName',
+87: EPSILON
+84: EPSILON
+83: ATTRIBUTE "text:name",
+84: REF 'string',
+85: DATA 'string',
+83: CHOICE
+84: ATTRIBUTE "text:protected",
+85: REF 'boolean',
+86: CHOICE
+87: VALUE 'true',
+87: VALUE 'false',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "text:protection-key",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+83: CHOICE
+84: ATTRIBUTE "text:protection-key-digest-algorithm",
+85: REF 'anyIRI',
+86: DATA 'anyURI',
+84: EPSILON
+83: CHOICE
+84: REF 'xml-id',
+85: ATTRIBUTE "xml:id",
+86: REF 'ID',
+87: DATA 'ID',
+84: EPSILON
+81: CHOICE
+82: ATTRIBUTE "text:display",
+83: CHOICE
+84: VALUE 'true',
+84: VALUE 'none',
+82: SEQUENCE
+83: ATTRIBUTE "text:display",
+84: VALUE 'condition',
+83: ATTRIBUTE "text:condition",
+84: REF 'string',
+85: DATA 'string',
+82: EPSILON
+79: CHOICE
+80: REF 'text-section-source',
+81: ELEMENT "text:section-source",
+82: REF 'text-section-source-attr',
+83: INTERLEAVE
+84: CHOICE
+85: SEQUENCE
+86: ATTRIBUTE "xlink:type",
+87: VALUE 'simple',
+86: ATTRIBUTE "xlink:href",
+87: REF 'anyIRI',
+88: DATA 'anyURI',
+86: CHOICE
+87: ATTRIBUTE "xlink:show",
+88: VALUE 'embed',
+87: EPSILON
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "text:section-name",
+86: REF 'string',
+87: DATA 'string',
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "text:filter-name",
+86: REF 'string',
+87: DATA 'string',
+85: EPSILON
+80: REF 'text-section-source-dde',
+81: REF 'office-dde-source',
+80: EPSILON
+79: CHOICE
+80: ONEOREMORE
+81: REF 'text-content',
+82: CHOICE
+83: REF 'text-h',
+83: REF 'text-p',
+83: REF 'text-list',
+83: REF 'text-numbered-paragraph',
+83: REF 'table-table',
+83: REF 'text-section',
+83: REF 'text-soft-page-break',
+83: REF 'text-table-of-content',
+84: ELEMENT "text:table-of-content",
+85: SEQUENCE
+86: REF 'common-section-attlist',
+87: INTERLEAVE
+88: CHOICE
+89: ATTRIBUTE "text:style-name",
+90: REF 'styleNameRef',
+91: CHOICE
+92: DATA 'NCName',
+92: EPSILON
+89: EPSILON
+88: ATTRIBUTE "text:name",
+89: REF 'string',
+90: DATA 'string',
+88: CHOICE
+89: ATTRIBUTE "text:protected",
+90: REF 'boolean',
+91: CHOICE
+92: VALUE 'true',
+92: VALUE 'false',
+89: EPSILON
+88: CHOICE
+89: ATTRIBUTE "text:protection-key",
+90: REF 'string',
+91: DATA 'string',
+89: EPSILON
+88: CHOICE
+89: ATTRIBUTE "text:protection-key-digest-algorithm",
+90: REF 'anyIRI',
+91: DATA 'anyURI',
+89: EPSILON
+88: CHOICE
+89: REF 'xml-id',
+90: ATTRIBUTE "xml:id",
+91: REF 'ID',
+92: DATA 'ID',
+89: EPSILON
+86: REF 'text-table-of-content-source',
+87: ELEMENT "text:table-of-content-source",
+88: SEQUENCE
+89: REF 'text-table-of-content-source-attlist',
+90: INTERLEAVE
+91: CHOICE
+92: ATTRIBUTE "text:outline-level",
+93: REF 'positiveInteger',
+94: DATA 'positiveInteger',
+92: EPSILON
+91: CHOICE
+92: ATTRIBUTE "text:use-outline-level",
+93: REF 'boolean',
+94: CHOICE
+95: VALUE 'true',
+95: VALUE 'false',
+92: EPSILON
+91: CHOICE
+92: ATTRIBUTE "text:use-index-marks",
+93: REF 'boolean',
+94: CHOICE
+95: VALUE 'true',
+95: VALUE 'false',
+92: EPSILON
+91: CHOICE
+92: ATTRIBUTE "text:use-index-source-styles",
+93: REF 'boolean',
+94: CHOICE
+95: VALUE 'true',
+95: VALUE 'false',
+92: EPSILON
+91: CHOICE
+92: ATTRIBUTE "text:index-scope",
+93: CHOICE
+94: VALUE 'document',
+94: VALUE 'chapter',
+92: EPSILON
+91: CHOICE
+92: ATTRIBUTE "text:relative-tab-stop-position",
+93: REF 'boolean',
+94: CHOICE
+95: VALUE 'true',
+95: VALUE 'false',
+92: EPSILON
+89: CHOICE
+90: REF 'text-index-title-template',
+91: ELEMENT "text:index-title-template",
+92: SEQUENCE
+93: CHOICE
+94: ATTRIBUTE "text:style-name",
+95: REF 'styleNameRef',
+96: CHOICE
+97: DATA 'NCName',
+97: EPSILON
+94: EPSILON
+93: STRING
+90: EPSILON
+89: CHOICE
+90: ONEOREMORE
+91: REF 'text-table-of-content-entry-template',
+92: ELEMENT "text:table-of-content-entry-template",
+93: SEQUENCE
+94: REF 'text-table-of-content-entry-template-attlist',
+95: INTERLEAVE
+96: ATTRIBUTE "text:outline-level",
+97: REF 'positiveInteger',
+98: DATA 'positiveInteger',
+96: ATTRIBUTE "text:style-name",
+97: REF 'styleNameRef',
+98: CHOICE
+99: DATA 'NCName',
+99: EPSILON
+94: CHOICE
+95: ONEOREMORE
+96: REF 'text-table-of-content-children',
+97: CHOICE
+98: REF 'text-index-entry-chapter',
+99: ELEMENT "text:index-entry-chapter",
+100: SEQUENCE
+101: CHOICE
+102: ATTRIBUTE "text:style-name",
+103: REF 'styleNameRef',
+104: CHOICE
+105: DATA 'NCName',
+105: EPSILON
+102: EPSILON
+101: REF 'text-index-entry-chapter-attrs',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "text:display",
+105: CHOICE
+106: VALUE 'name',
+106: VALUE 'number',
+106: VALUE 'number-and-name',
+106: VALUE 'plain-number',
+106: VALUE 'plain-number-and-name',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "text:outline-level",
+105: REF 'positiveInteger',
+106: DATA 'positiveInteger',
+104: EPSILON
+98: REF 'text-index-entry-page-number',
+99: ELEMENT "text:index-entry-page-number",
+100: CHOICE
+101: ATTRIBUTE "text:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+98: REF 'text-index-entry-text',
+99: ELEMENT "text:index-entry-text",
+100: CHOICE
+101: ATTRIBUTE "text:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+98: REF 'text-index-entry-span',
+99: ELEMENT "text:index-entry-span",
+100: SEQUENCE
+101: CHOICE
+102: ATTRIBUTE "text:style-name",
+103: REF 'styleNameRef',
+104: CHOICE
+105: DATA 'NCName',
+105: EPSILON
+102: EPSILON
+101: STRING
+98: REF 'text-index-entry-tab-stop',
+99: ELEMENT "text:index-entry-tab-stop",
+100: SEQUENCE
+101: CHOICE
+102: ATTRIBUTE "text:style-name",
+103: REF 'styleNameRef',
+104: CHOICE
+105: DATA 'NCName',
+105: EPSILON
+102: EPSILON
+101: REF 'text-index-entry-tab-stop-attrs',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "style:leader-char",
+105: REF 'character',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "style:type",
+105: VALUE 'right',
+104: SEQUENCE
+105: ATTRIBUTE "style:type",
+106: VALUE 'left',
+105: ATTRIBUTE "style:position",
+106: REF 'length',
+107: DATA 'string',
+98: REF 'text-index-entry-link-start',
+99: ELEMENT "text:index-entry-link-start",
+100: CHOICE
+101: ATTRIBUTE "text:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+98: REF 'text-index-entry-link-end',
+99: ELEMENT "text:index-entry-link-end",
+100: CHOICE
+101: ATTRIBUTE "text:style-name",
+102: REF 'styleNameRef',
+103: CHOICE
+104: DATA 'NCName',
+104: EPSILON
+101: EPSILON
+95: EPSILON
+90: EPSILON
+89: CHOICE
+90: ONEOREMORE
+91: REF 'text-index-source-styles',
+92: ELEMENT "text:index-source-styles",
+93: SEQUENCE
+94: ATTRIBUTE "text:outline-level",
+95: REF 'positiveInteger',
+96: DATA 'positiveInteger',
+94: CHOICE
+95: ONEOREMORE
+96: REF 'text-index-source-style',
+97: ELEMENT "text:index-source-style",
+98: ATTRIBUTE "text:style-name",
+99: REF 'styleName',
+100: DATA 'NCName',
+95: EPSILON
+90: EPSILON
+86: REF 'text-index-body',
+87: ELEMENT "text:index-body",
+88: CHOICE
+89: ONEOREMORE
+90: REF 'index-content-main',
+91: CHOICE
+92: REF 'text-content',
+93: CHOICE
+94: REF 'text-h',
+94: REF 'text-p',
+94: REF 'text-list',
+94: REF 'text-numbered-paragraph',
+94: REF 'table-table',
+94: REF 'text-section',
+94: REF 'text-soft-page-break',
+94: REF 'text-table-of-content',
+94: REF 'text-illustration-index',
+95: ELEMENT "text:illustration-index",
+96: SEQUENCE
+97: REF 'common-section-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "text:style-name",
+101: REF 'styleNameRef',
+102: CHOICE
+103: DATA 'NCName',
+103: EPSILON
+100: EPSILON
+99: ATTRIBUTE "text:name",
+100: REF 'string',
+101: DATA 'string',
+99: CHOICE
+100: ATTRIBUTE "text:protected",
+101: REF 'boolean',
+102: CHOICE
+103: VALUE 'true',
+103: VALUE 'false',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key",
+101: REF 'string',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key-digest-algorithm",
+101: REF 'anyIRI',
+102: DATA 'anyURI',
+100: EPSILON
+99: CHOICE
+100: REF 'xml-id',
+101: ATTRIBUTE "xml:id",
+102: REF 'ID',
+103: DATA 'ID',
+100: EPSILON
+97: REF 'text-illustration-index-source',
+98: ELEMENT "text:illustration-index-source",
+99: SEQUENCE
+100: REF 'text-illustration-index-source-attrs',
+101: INTERLEAVE
+102: REF 'text-index-scope-attr',
+103: CHOICE
+104: ATTRIBUTE "text:index-scope",
+105: CHOICE
+106: VALUE 'document',
+106: VALUE 'chapter',
+104: EPSILON
+102: REF 'text-relative-tab-stop-position-attr',
+103: CHOICE
+104: ATTRIBUTE "text:relative-tab-stop-position",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-caption",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:caption-sequence-name",
+104: REF 'string',
+105: DATA 'string',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:caption-sequence-format",
+104: CHOICE
+105: VALUE 'text',
+105: VALUE 'category-and-value',
+105: VALUE 'caption',
+103: EPSILON
+100: CHOICE
+101: REF 'text-index-title-template',
+101: EPSILON
+100: CHOICE
+101: REF 'text-illustration-index-entry-template',
+102: ELEMENT "text:illustration-index-entry-template",
+103: REF 'text-illustration-index-entry-content',
+104: SEQUENCE
+105: REF 'text-illustration-index-entry-template-attrs',
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-index-entry-chapter',
+108: REF 'text-index-entry-page-number',
+108: REF 'text-index-entry-text',
+108: REF 'text-index-entry-span',
+108: REF 'text-index-entry-tab-stop',
+106: EPSILON
+101: EPSILON
+97: REF 'text-index-body',
+94: REF 'text-table-index',
+95: ELEMENT "text:table-index",
+96: SEQUENCE
+97: REF 'common-section-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "text:style-name",
+101: REF 'styleNameRef',
+102: CHOICE
+103: DATA 'NCName',
+103: EPSILON
+100: EPSILON
+99: ATTRIBUTE "text:name",
+100: REF 'string',
+101: DATA 'string',
+99: CHOICE
+100: ATTRIBUTE "text:protected",
+101: REF 'boolean',
+102: CHOICE
+103: VALUE 'true',
+103: VALUE 'false',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key",
+101: REF 'string',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key-digest-algorithm",
+101: REF 'anyIRI',
+102: DATA 'anyURI',
+100: EPSILON
+99: CHOICE
+100: REF 'xml-id',
+101: ATTRIBUTE "xml:id",
+102: REF 'ID',
+103: DATA 'ID',
+100: EPSILON
+97: REF 'text-table-index-source',
+98: ELEMENT "text:table-index-source",
+99: SEQUENCE
+100: REF 'text-illustration-index-source-attrs',
+101: INTERLEAVE
+102: REF 'text-index-scope-attr',
+103: CHOICE
+104: ATTRIBUTE "text:index-scope",
+105: CHOICE
+106: VALUE 'document',
+106: VALUE 'chapter',
+104: EPSILON
+102: REF 'text-relative-tab-stop-position-attr',
+103: CHOICE
+104: ATTRIBUTE "text:relative-tab-stop-position",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-caption",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:caption-sequence-name",
+104: REF 'string',
+105: DATA 'string',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:caption-sequence-format",
+104: CHOICE
+105: VALUE 'text',
+105: VALUE 'category-and-value',
+105: VALUE 'caption',
+103: EPSILON
+100: CHOICE
+101: REF 'text-index-title-template',
+101: EPSILON
+100: CHOICE
+101: REF 'text-table-index-entry-template',
+102: ELEMENT "text:table-index-entry-template",
+103: REF 'text-illustration-index-entry-content',
+104: SEQUENCE
+105: REF 'text-illustration-index-entry-template-attrs',
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-index-entry-chapter',
+108: REF 'text-index-entry-page-number',
+108: REF 'text-index-entry-text',
+108: REF 'text-index-entry-span',
+108: REF 'text-index-entry-tab-stop',
+106: EPSILON
+101: EPSILON
+97: REF 'text-index-body',
+94: REF 'text-object-index',
+95: ELEMENT "text:object-index",
+96: SEQUENCE
+97: REF 'common-section-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "text:style-name",
+101: REF 'styleNameRef',
+102: CHOICE
+103: DATA 'NCName',
+103: EPSILON
+100: EPSILON
+99: ATTRIBUTE "text:name",
+100: REF 'string',
+101: DATA 'string',
+99: CHOICE
+100: ATTRIBUTE "text:protected",
+101: REF 'boolean',
+102: CHOICE
+103: VALUE 'true',
+103: VALUE 'false',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key",
+101: REF 'string',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key-digest-algorithm",
+101: REF 'anyIRI',
+102: DATA 'anyURI',
+100: EPSILON
+99: CHOICE
+100: REF 'xml-id',
+101: ATTRIBUTE "xml:id",
+102: REF 'ID',
+103: DATA 'ID',
+100: EPSILON
+97: REF 'text-object-index-source',
+98: ELEMENT "text:object-index-source",
+99: SEQUENCE
+100: REF 'text-object-index-source-attrs',
+101: INTERLEAVE
+102: REF 'text-index-scope-attr',
+103: CHOICE
+104: ATTRIBUTE "text:index-scope",
+105: CHOICE
+106: VALUE 'document',
+106: VALUE 'chapter',
+104: EPSILON
+102: REF 'text-relative-tab-stop-position-attr',
+103: CHOICE
+104: ATTRIBUTE "text:relative-tab-stop-position",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-spreadsheet-objects",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-math-objects",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-draw-objects",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-chart-objects",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-other-objects",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+100: CHOICE
+101: REF 'text-index-title-template',
+101: EPSILON
+100: CHOICE
+101: REF 'text-object-index-entry-template',
+102: ELEMENT "text:object-index-entry-template",
+103: REF 'text-illustration-index-entry-content',
+104: SEQUENCE
+105: REF 'text-illustration-index-entry-template-attrs',
+106: ATTRIBUTE "text:style-name",
+107: REF 'styleNameRef',
+108: CHOICE
+109: DATA 'NCName',
+109: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-index-entry-chapter',
+108: REF 'text-index-entry-page-number',
+108: REF 'text-index-entry-text',
+108: REF 'text-index-entry-span',
+108: REF 'text-index-entry-tab-stop',
+106: EPSILON
+101: EPSILON
+97: REF 'text-index-body',
+94: REF 'text-user-index',
+95: ELEMENT "text:user-index",
+96: SEQUENCE
+97: REF 'common-section-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "text:style-name",
+101: REF 'styleNameRef',
+102: CHOICE
+103: DATA 'NCName',
+103: EPSILON
+100: EPSILON
+99: ATTRIBUTE "text:name",
+100: REF 'string',
+101: DATA 'string',
+99: CHOICE
+100: ATTRIBUTE "text:protected",
+101: REF 'boolean',
+102: CHOICE
+103: VALUE 'true',
+103: VALUE 'false',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key",
+101: REF 'string',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key-digest-algorithm",
+101: REF 'anyIRI',
+102: DATA 'anyURI',
+100: EPSILON
+99: CHOICE
+100: REF 'xml-id',
+101: ATTRIBUTE "xml:id",
+102: REF 'ID',
+103: DATA 'ID',
+100: EPSILON
+97: REF 'text-user-index-source',
+98: ELEMENT "text:user-index-source",
+99: SEQUENCE
+100: REF 'text-user-index-source-attr',
+101: INTERLEAVE
+102: REF 'text-index-scope-attr',
+103: CHOICE
+104: ATTRIBUTE "text:index-scope",
+105: CHOICE
+106: VALUE 'document',
+106: VALUE 'chapter',
+104: EPSILON
+102: REF 'text-relative-tab-stop-position-attr',
+103: CHOICE
+104: ATTRIBUTE "text:relative-tab-stop-position",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-index-marks",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-index-source-styles",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-graphics",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-tables",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-floating-frames",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-objects",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:copy-outline-levels",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: ATTRIBUTE "text:index-name",
+103: REF 'string',
+104: DATA 'string',
+100: CHOICE
+101: REF 'text-index-title-template',
+101: EPSILON
+100: CHOICE
+101: ONEOREMORE
+102: REF 'text-user-index-entry-template',
+103: ELEMENT "text:user-index-entry-template",
+104: SEQUENCE
+105: REF 'text-user-index-entry-template-attrs',
+106: INTERLEAVE
+107: ATTRIBUTE "text:outline-level",
+108: REF 'positiveInteger',
+109: DATA 'positiveInteger',
+107: ATTRIBUTE "text:style-name",
+108: REF 'styleNameRef',
+109: CHOICE
+110: DATA 'NCName',
+110: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-index-entry-chapter',
+108: REF 'text-index-entry-page-number',
+108: REF 'text-index-entry-text',
+108: REF 'text-index-entry-span',
+108: REF 'text-index-entry-tab-stop',
+106: EPSILON
+101: EPSILON
+100: CHOICE
+101: ONEOREMORE
+102: REF 'text-index-source-styles',
+101: EPSILON
+97: REF 'text-index-body',
+94: REF 'text-alphabetical-index',
+95: ELEMENT "text:alphabetical-index",
+96: SEQUENCE
+97: REF 'common-section-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "text:style-name",
+101: REF 'styleNameRef',
+102: CHOICE
+103: DATA 'NCName',
+103: EPSILON
+100: EPSILON
+99: ATTRIBUTE "text:name",
+100: REF 'string',
+101: DATA 'string',
+99: CHOICE
+100: ATTRIBUTE "text:protected",
+101: REF 'boolean',
+102: CHOICE
+103: VALUE 'true',
+103: VALUE 'false',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key",
+101: REF 'string',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key-digest-algorithm",
+101: REF 'anyIRI',
+102: DATA 'anyURI',
+100: EPSILON
+99: CHOICE
+100: REF 'xml-id',
+101: ATTRIBUTE "xml:id",
+102: REF 'ID',
+103: DATA 'ID',
+100: EPSILON
+97: REF 'text-alphabetical-index-source',
+98: ELEMENT "text:alphabetical-index-source",
+99: SEQUENCE
+100: REF 'text-alphabetical-index-source-attrs',
+101: INTERLEAVE
+102: REF 'text-index-scope-attr',
+103: CHOICE
+104: ATTRIBUTE "text:index-scope",
+105: CHOICE
+106: VALUE 'document',
+106: VALUE 'chapter',
+104: EPSILON
+102: REF 'text-relative-tab-stop-position-attr',
+103: CHOICE
+104: ATTRIBUTE "text:relative-tab-stop-position",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:ignore-case",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:main-entry-style-name",
+104: REF 'styleNameRef',
+105: CHOICE
+106: DATA 'NCName',
+106: EPSILON
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:alphabetical-separators",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:combine-entries",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:combine-entries-with-dash",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:combine-entries-with-pp",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:use-keys-as-entries",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:capitalize-entries",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:comma-separated",
+104: REF 'boolean',
+105: CHOICE
+106: VALUE 'true',
+106: VALUE 'false',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "fo:language",
+104: REF 'languageCode',
+105: DATA 'token',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "fo:country",
+104: REF 'countryCode',
+105: DATA 'token',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "fo:script",
+104: REF 'scriptCode',
+105: DATA 'token',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "style:rfc-language-tag",
+104: REF 'language',
+105: DATA 'language',
+103: EPSILON
+102: CHOICE
+103: ATTRIBUTE "text:sort-algorithm",
+104: REF 'string',
+105: DATA 'string',
+103: EPSILON
+100: CHOICE
+101: REF 'text-index-title-template',
+101: EPSILON
+100: CHOICE
+101: ONEOREMORE
+102: REF 'text-alphabetical-index-entry-template',
+103: ELEMENT "text:alphabetical-index-entry-template",
+104: SEQUENCE
+105: REF 'text-alphabetical-index-entry-template-attrs',
+106: INTERLEAVE
+107: ATTRIBUTE "text:outline-level",
+108: CHOICE
+109: VALUE '1',
+109: VALUE '2',
+109: VALUE '3',
+109: VALUE 'separator',
+107: ATTRIBUTE "text:style-name",
+108: REF 'styleNameRef',
+109: CHOICE
+110: DATA 'NCName',
+110: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-index-entry-chapter',
+108: REF 'text-index-entry-page-number',
+108: REF 'text-index-entry-text',
+108: REF 'text-index-entry-span',
+108: REF 'text-index-entry-tab-stop',
+106: EPSILON
+101: EPSILON
+97: REF 'text-index-body',
+94: REF 'text-bibliography',
+95: ELEMENT "text:bibliography",
+96: SEQUENCE
+97: REF 'common-section-attlist',
+98: INTERLEAVE
+99: CHOICE
+100: ATTRIBUTE "text:style-name",
+101: REF 'styleNameRef',
+102: CHOICE
+103: DATA 'NCName',
+103: EPSILON
+100: EPSILON
+99: ATTRIBUTE "text:name",
+100: REF 'string',
+101: DATA 'string',
+99: CHOICE
+100: ATTRIBUTE "text:protected",
+101: REF 'boolean',
+102: CHOICE
+103: VALUE 'true',
+103: VALUE 'false',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key",
+101: REF 'string',
+102: DATA 'string',
+100: EPSILON
+99: CHOICE
+100: ATTRIBUTE "text:protection-key-digest-algorithm",
+101: REF 'anyIRI',
+102: DATA 'anyURI',
+100: EPSILON
+99: CHOICE
+100: REF 'xml-id',
+101: ATTRIBUTE "xml:id",
+102: REF 'ID',
+103: DATA 'ID',
+100: EPSILON
+97: REF 'text-bibliography-source',
+98: ELEMENT "text:bibliography-source",
+99: SEQUENCE
+100: CHOICE
+101: REF 'text-index-title-template',
+101: EPSILON
+100: CHOICE
+101: ONEOREMORE
+102: REF 'text-bibliography-entry-template',
+103: ELEMENT "text:bibliography-entry-template",
+104: SEQUENCE
+105: REF 'text-bibliography-entry-template-attrs',
+106: INTERLEAVE
+107: ATTRIBUTE "text:bibliography-type",
+108: REF 'text-bibliography-types',
+109: CHOICE
+110: VALUE 'article',
+110: VALUE 'book',
+110: VALUE 'booklet',
+110: VALUE 'conference',
+110: VALUE 'custom1',
+110: VALUE 'custom2',
+110: VALUE 'custom3',
+110: VALUE 'custom4',
+110: VALUE 'custom5',
+110: VALUE 'email',
+110: VALUE 'inbook',
+110: VALUE 'incollection',
+110: VALUE 'inproceedings',
+110: VALUE 'journal',
+110: VALUE 'manual',
+110: VALUE 'mastersthesis',
+110: VALUE 'misc',
+110: VALUE 'phdthesis',
+110: VALUE 'proceedings',
+110: VALUE 'techreport',
+110: VALUE 'unpublished',
+110: VALUE 'www',
+107: ATTRIBUTE "text:style-name",
+108: REF 'styleNameRef',
+109: CHOICE
+110: DATA 'NCName',
+110: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: CHOICE
+108: REF 'text-index-entry-span',
+108: REF 'text-index-entry-tab-stop',
+108: REF 'text-index-entry-bibliography',
+109: ELEMENT "text:index-entry-bibliography",
+110: REF 'text-index-entry-bibliography-attrs',
+111: INTERLEAVE
+112: CHOICE
+113: ATTRIBUTE "text:style-name",
+114: REF 'styleNameRef',
+115: CHOICE
+116: DATA 'NCName',
+116: EPSILON
+113: EPSILON
+112: ATTRIBUTE "text:bibliography-data-field",
+113: CHOICE
+114: VALUE 'address',
+114: VALUE 'annote',
+114: VALUE 'author',
+114: VALUE 'bibliography-type',
+114: VALUE 'booktitle',
+114: VALUE 'chapter',
+114: VALUE 'custom1',
+114: VALUE 'custom2',
+114: VALUE 'custom3',
+114: VALUE 'custom4',
+114: VALUE 'custom5',
+114: VALUE 'edition',
+114: VALUE 'editor',
+114: VALUE 'howpublished',
+114: VALUE 'identifier',
+114: VALUE 'institution',
+114: VALUE 'isbn',
+114: VALUE 'issn',
+114: VALUE 'journal',
+114: VALUE 'month',
+114: VALUE 'note',
+114: VALUE 'number',
+114: VALUE 'organizations',
+114: VALUE 'pages',
+114: VALUE 'publisher',
+114: VALUE 'report-type',
+114: VALUE 'school',
+114: VALUE 'series',
+114: VALUE 'title',
+114: VALUE 'url',
+114: VALUE 'volume',
+114: VALUE 'year',
+106: EPSILON
+101: EPSILON
+97: REF 'text-index-body',
+94: REF 'shape',
+95: CHOICE
+96: REF 'shape-instance',
+97: CHOICE
+98: REF 'draw-rect',
+98: REF 'draw-line',
+98: REF 'draw-polyline',
+98: REF 'draw-polygon',
+98: REF 'draw-regular-polygon',
+98: REF 'draw-path',
+98: REF 'draw-circle',
+98: REF 'draw-ellipse',
+98: REF 'draw-g',
+98: REF 'draw-page-thumbnail',
+98: REF 'draw-frame',
+98: REF 'draw-measure',
+99: ELEMENT "draw:measure",
+100: SEQUENCE
+101: REF 'draw-measure-attlist',
+102: INTERLEAVE
+103: ATTRIBUTE "svg:x1",
+104: REF 'coordinate',
+105: REF 'length',
+106: DATA 'string',
+103: ATTRIBUTE "svg:y1",
+104: REF 'coordinate',
+105: REF 'length',
+106: DATA 'string',
+103: ATTRIBUTE "svg:x2",
+104: REF 'coordinate',
+105: REF 'length',
+106: DATA 'string',
+103: ATTRIBUTE "svg:y2",
+104: REF 'coordinate',
+105: REF 'length',
+106: DATA 'string',
+101: REF 'common-draw-shape-with-text-and-styles-attlist',
+102: SEQUENCE
+103: REF 'common-draw-shape-with-styles-attlist',
+104: SEQUENCE
+105: REF 'common-draw-z-index-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:z-index",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+105: REF 'common-draw-id-attlist',
+106: CHOICE
+107: SEQUENCE
+108: REF 'xml-id',
+109: ATTRIBUTE "xml:id",
+110: REF 'ID',
+111: DATA 'ID',
+108: CHOICE
+109: ATTRIBUTE "draw:id",
+110: REF 'NCName',
+111: DATA 'NCName',
+109: EPSILON
+107: EPSILON
+105: REF 'common-draw-layer-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:layer",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-style-name-attlist',
+106: CHOICE
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "draw:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "draw:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "presentation:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "presentation:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+105: REF 'common-draw-transform-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:transform",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:name",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-text-spreadsheet-shape-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "table:end-cell-address",
+109: REF 'cellAddress',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:table-background",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: REF 'common-text-anchor-attlist',
+108: INTERLEAVE
+109: CHOICE
+110: ATTRIBUTE "text:anchor-type",
+111: CHOICE
+112: VALUE 'page',
+112: VALUE 'frame',
+112: VALUE 'paragraph',
+112: VALUE 'char',
+112: VALUE 'as-char',
+110: EPSILON
+109: CHOICE
+110: ATTRIBUTE "text:anchor-page-number",
+111: REF 'positiveInteger',
+112: DATA 'positiveInteger',
+110: EPSILON
+103: REF 'common-draw-text-style-name-attlist',
+104: CHOICE
+105: ATTRIBUTE "draw:text-style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+101: REF 'common-draw-caption-id-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:caption-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+103: EPSILON
+101: CHOICE
+102: REF 'svg-title',
+102: EPSILON
+101: CHOICE
+102: REF 'svg-desc',
+102: EPSILON
+101: CHOICE
+102: REF 'office-event-listeners',
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'draw-glue-point',
+102: EPSILON
+101: REF 'draw-text',
+102: CHOICE
+103: ONEOREMORE
+104: CHOICE
+105: REF 'text-p',
+105: REF 'text-list',
+103: EPSILON
+98: REF 'draw-caption',
+99: ELEMENT "draw:caption",
+100: SEQUENCE
+101: REF 'draw-caption-attlist',
+102: INTERLEAVE
+103: CHOICE
+104: SEQUENCE
+105: ATTRIBUTE "draw:caption-point-x",
+106: REF 'coordinate',
+107: REF 'length',
+108: DATA 'string',
+105: ATTRIBUTE "draw:caption-point-y",
+106: REF 'coordinate',
+107: REF 'length',
+108: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:corner-radius",
+105: REF 'nonNegativeLength',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-position-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:x",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:y",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-size-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:width",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:height",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-shape-with-text-and-styles-attlist',
+102: SEQUENCE
+103: REF 'common-draw-shape-with-styles-attlist',
+104: SEQUENCE
+105: REF 'common-draw-z-index-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:z-index",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+105: REF 'common-draw-id-attlist',
+106: CHOICE
+107: SEQUENCE
+108: REF 'xml-id',
+109: ATTRIBUTE "xml:id",
+110: REF 'ID',
+111: DATA 'ID',
+108: CHOICE
+109: ATTRIBUTE "draw:id",
+110: REF 'NCName',
+111: DATA 'NCName',
+109: EPSILON
+107: EPSILON
+105: REF 'common-draw-layer-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:layer",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-style-name-attlist',
+106: CHOICE
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "draw:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "draw:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "presentation:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "presentation:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+105: REF 'common-draw-transform-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:transform",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:name",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-text-spreadsheet-shape-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "table:end-cell-address",
+109: REF 'cellAddress',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:table-background",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: REF 'common-text-anchor-attlist',
+108: INTERLEAVE
+109: CHOICE
+110: ATTRIBUTE "text:anchor-type",
+111: CHOICE
+112: VALUE 'page',
+112: VALUE 'frame',
+112: VALUE 'paragraph',
+112: VALUE 'char',
+112: VALUE 'as-char',
+110: EPSILON
+109: CHOICE
+110: ATTRIBUTE "text:anchor-page-number",
+111: REF 'positiveInteger',
+112: DATA 'positiveInteger',
+110: EPSILON
+103: REF 'common-draw-text-style-name-attlist',
+104: CHOICE
+105: ATTRIBUTE "draw:text-style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+101: REF 'common-draw-caption-id-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:caption-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+103: EPSILON
+101: CHOICE
+102: REF 'svg-title',
+102: EPSILON
+101: CHOICE
+102: REF 'svg-desc',
+102: EPSILON
+101: CHOICE
+102: REF 'office-event-listeners',
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'draw-glue-point',
+102: EPSILON
+101: REF 'draw-text',
+102: CHOICE
+103: ONEOREMORE
+104: CHOICE
+105: REF 'text-p',
+105: REF 'text-list',
+103: EPSILON
+98: REF 'draw-connector',
+99: ELEMENT "draw:connector",
+100: SEQUENCE
+101: REF 'draw-connector-attlist',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "draw:type",
+105: CHOICE
+106: VALUE 'standard',
+106: VALUE 'lines',
+106: VALUE 'line',
+106: VALUE 'curve',
+104: EPSILON
+103: CHOICE
+104: SEQUENCE
+105: ATTRIBUTE "svg:x1",
+106: REF 'coordinate',
+107: REF 'length',
+108: DATA 'string',
+105: ATTRIBUTE "svg:y1",
+106: REF 'coordinate',
+107: REF 'length',
+108: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:start-shape",
+105: REF 'IDREF',
+106: DATA 'IDREF',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:start-glue-point",
+105: REF 'nonNegativeInteger',
+106: DATA 'nonNegativeInteger',
+104: EPSILON
+103: CHOICE
+104: SEQUENCE
+105: ATTRIBUTE "svg:x2",
+106: REF 'coordinate',
+107: REF 'length',
+108: DATA 'string',
+105: ATTRIBUTE "svg:y2",
+106: REF 'coordinate',
+107: REF 'length',
+108: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:end-shape",
+105: REF 'IDREF',
+106: DATA 'IDREF',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:end-glue-point",
+105: REF 'nonNegativeInteger',
+106: DATA 'nonNegativeInteger',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:line-skew",
+105: LIST
+106: SEQUENCE
+107: REF 'length',
+108: DATA 'string',
+107: CHOICE
+108: SEQUENCE
+109: REF 'length',
+110: DATA 'string',
+109: CHOICE
+110: REF 'length',
+111: DATA 'string',
+110: EPSILON
+108: EPSILON
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:d",
+105: REF 'pathData',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-shape-with-text-and-styles-attlist',
+102: SEQUENCE
+103: REF 'common-draw-shape-with-styles-attlist',
+104: SEQUENCE
+105: REF 'common-draw-z-index-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:z-index",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+105: REF 'common-draw-id-attlist',
+106: CHOICE
+107: SEQUENCE
+108: REF 'xml-id',
+109: ATTRIBUTE "xml:id",
+110: REF 'ID',
+111: DATA 'ID',
+108: CHOICE
+109: ATTRIBUTE "draw:id",
+110: REF 'NCName',
+111: DATA 'NCName',
+109: EPSILON
+107: EPSILON
+105: REF 'common-draw-layer-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:layer",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-style-name-attlist',
+106: CHOICE
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "draw:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "draw:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "presentation:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "presentation:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+105: REF 'common-draw-transform-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:transform",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:name",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-text-spreadsheet-shape-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "table:end-cell-address",
+109: REF 'cellAddress',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:table-background",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: REF 'common-text-anchor-attlist',
+108: INTERLEAVE
+109: CHOICE
+110: ATTRIBUTE "text:anchor-type",
+111: CHOICE
+112: VALUE 'page',
+112: VALUE 'frame',
+112: VALUE 'paragraph',
+112: VALUE 'char',
+112: VALUE 'as-char',
+110: EPSILON
+109: CHOICE
+110: ATTRIBUTE "text:anchor-page-number",
+111: REF 'positiveInteger',
+112: DATA 'positiveInteger',
+110: EPSILON
+103: REF 'common-draw-text-style-name-attlist',
+104: CHOICE
+105: ATTRIBUTE "draw:text-style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+101: REF 'common-draw-caption-id-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:caption-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+103: EPSILON
+101: REF 'common-draw-viewbox-attlist',
+102: ATTRIBUTE "svg:viewBox",
+103: LIST
+104: SEQUENCE
+105: REF 'integer',
+106: DATA 'integer',
+105: REF 'integer',
+106: DATA 'integer',
+105: REF 'integer',
+106: DATA 'integer',
+105: REF 'integer',
+106: DATA 'integer',
+101: CHOICE
+102: REF 'svg-title',
+102: EPSILON
+101: CHOICE
+102: REF 'svg-desc',
+102: EPSILON
+101: CHOICE
+102: REF 'office-event-listeners',
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'draw-glue-point',
+102: EPSILON
+101: REF 'draw-text',
+102: CHOICE
+103: ONEOREMORE
+104: CHOICE
+105: REF 'text-p',
+105: REF 'text-list',
+103: EPSILON
+98: REF 'draw-control',
+99: ELEMENT "draw:control",
+100: SEQUENCE
+101: REF 'draw-control-attlist',
+102: ATTRIBUTE "draw:control",
+103: REF 'IDREF',
+104: DATA 'IDREF',
+101: REF 'common-draw-position-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:x",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:y",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-size-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:width",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:height",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-shape-with-text-and-styles-attlist',
+102: SEQUENCE
+103: REF 'common-draw-shape-with-styles-attlist',
+104: SEQUENCE
+105: REF 'common-draw-z-index-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:z-index",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+105: REF 'common-draw-id-attlist',
+106: CHOICE
+107: SEQUENCE
+108: REF 'xml-id',
+109: ATTRIBUTE "xml:id",
+110: REF 'ID',
+111: DATA 'ID',
+108: CHOICE
+109: ATTRIBUTE "draw:id",
+110: REF 'NCName',
+111: DATA 'NCName',
+109: EPSILON
+107: EPSILON
+105: REF 'common-draw-layer-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:layer",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-style-name-attlist',
+106: CHOICE
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "draw:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "draw:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "presentation:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "presentation:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+105: REF 'common-draw-transform-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:transform",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:name",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-text-spreadsheet-shape-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "table:end-cell-address",
+109: REF 'cellAddress',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:table-background",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: REF 'common-text-anchor-attlist',
+108: INTERLEAVE
+109: CHOICE
+110: ATTRIBUTE "text:anchor-type",
+111: CHOICE
+112: VALUE 'page',
+112: VALUE 'frame',
+112: VALUE 'paragraph',
+112: VALUE 'char',
+112: VALUE 'as-char',
+110: EPSILON
+109: CHOICE
+110: ATTRIBUTE "text:anchor-page-number",
+111: REF 'positiveInteger',
+112: DATA 'positiveInteger',
+110: EPSILON
+103: REF 'common-draw-text-style-name-attlist',
+104: CHOICE
+105: ATTRIBUTE "draw:text-style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+101: REF 'common-draw-caption-id-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:caption-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+103: EPSILON
+101: CHOICE
+102: REF 'svg-title',
+102: EPSILON
+101: CHOICE
+102: REF 'svg-desc',
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'draw-glue-point',
+102: EPSILON
+98: REF 'dr3d-scene',
+99: ELEMENT "dr3d:scene",
+100: SEQUENCE
+101: REF 'dr3d-scene-attlist',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "dr3d:vrp",
+105: REF 'vector3D',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:vpn",
+105: REF 'vector3D',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:vup",
+105: REF 'vector3D',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:projection",
+105: CHOICE
+106: VALUE 'parallel',
+106: VALUE 'perspective',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:distance",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:focal-length",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:shadow-slant",
+105: REF 'angle',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:shade-mode",
+105: CHOICE
+106: VALUE 'flat',
+106: VALUE 'phong',
+106: VALUE 'gouraud',
+106: VALUE 'draft',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:ambient-color",
+105: REF 'color',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "dr3d:lighting-mode",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+101: REF 'common-draw-position-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:x",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:y",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-size-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:width",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:height",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-style-name-attlist',
+102: CHOICE
+103: SEQUENCE
+104: CHOICE
+105: ATTRIBUTE "draw:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "draw:class-names",
+106: REF 'styleNameRefs',
+107: LIST
+108: CHOICE
+109: ONEOREMORE
+110: DATA 'NCName',
+109: EPSILON
+105: EPSILON
+103: SEQUENCE
+104: CHOICE
+105: ATTRIBUTE "presentation:style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+104: CHOICE
+105: ATTRIBUTE "presentation:class-names",
+106: REF 'styleNameRefs',
+107: LIST
+108: CHOICE
+109: ONEOREMORE
+110: DATA 'NCName',
+109: EPSILON
+105: EPSILON
+101: REF 'common-draw-z-index-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:z-index",
+104: REF 'nonNegativeInteger',
+105: DATA 'nonNegativeInteger',
+103: EPSILON
+101: REF 'common-draw-id-attlist',
+102: CHOICE
+103: SEQUENCE
+104: REF 'xml-id',
+105: ATTRIBUTE "xml:id",
+106: REF 'ID',
+107: DATA 'ID',
+104: CHOICE
+105: ATTRIBUTE "draw:id",
+106: REF 'NCName',
+107: DATA 'NCName',
+105: EPSILON
+103: EPSILON
+101: REF 'common-draw-layer-name-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:layer",
+104: REF 'string',
+105: DATA 'string',
+103: EPSILON
+101: REF 'common-text-spreadsheet-shape-attlist',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "table:end-cell-address",
+105: REF 'cellAddress',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "table:end-x",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "table:end-y",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "table:table-background",
+105: REF 'boolean',
+106: CHOICE
+107: VALUE 'true',
+107: VALUE 'false',
+104: EPSILON
+103: REF 'common-text-anchor-attlist',
+104: INTERLEAVE
+105: CHOICE
+106: ATTRIBUTE "text:anchor-type",
+107: CHOICE
+108: VALUE 'page',
+108: VALUE 'frame',
+108: VALUE 'paragraph',
+108: VALUE 'char',
+108: VALUE 'as-char',
+106: EPSILON
+105: CHOICE
+106: ATTRIBUTE "text:anchor-page-number",
+107: REF 'positiveInteger',
+108: DATA 'positiveInteger',
+106: EPSILON
+101: REF 'common-dr3d-transform-attlist',
+102: CHOICE
+103: ATTRIBUTE "dr3d:transform",
+104: REF 'string',
+105: DATA 'string',
+103: EPSILON
+101: REF 'common-draw-caption-id-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:caption-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+103: EPSILON
+101: CHOICE
+102: REF 'svg-title',
+102: EPSILON
+101: CHOICE
+102: REF 'svg-desc',
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'dr3d-light',
+104: ELEMENT "dr3d:light",
+105: REF 'dr3d-light-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "dr3d:diffuse-color",
+109: REF 'color',
+110: DATA 'string',
+108: EPSILON
+107: ATTRIBUTE "dr3d:direction",
+108: REF 'vector3D',
+109: DATA 'string',
+107: CHOICE
+108: ATTRIBUTE "dr3d:enabled",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "dr3d:specular",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'shapes3d',
+104: CHOICE
+105: REF 'dr3d-scene',
+105: REF 'dr3d-extrude',
+106: ELEMENT "dr3d:extrude",
+107: SEQUENCE
+108: REF 'common-draw-path-data-attlist',
+109: ATTRIBUTE "svg:d",
+110: REF 'pathData',
+111: DATA 'string',
+108: REF 'common-draw-viewbox-attlist',
+109: ATTRIBUTE "svg:viewBox",
+110: LIST
+111: SEQUENCE
+112: REF 'integer',
+113: DATA 'integer',
+112: REF 'integer',
+113: DATA 'integer',
+112: REF 'integer',
+113: DATA 'integer',
+112: REF 'integer',
+113: DATA 'integer',
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: SEQUENCE
+111: REF 'xml-id',
+112: ATTRIBUTE "xml:id",
+113: REF 'ID',
+114: DATA 'ID',
+111: CHOICE
+112: ATTRIBUTE "draw:id",
+113: REF 'NCName',
+114: DATA 'NCName',
+112: EPSILON
+110: EPSILON
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-dr3d-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "dr3d:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+105: REF 'dr3d-sphere',
+106: ELEMENT "dr3d:sphere",
+107: SEQUENCE
+108: REF 'dr3d-sphere-attlist',
+109: INTERLEAVE
+110: CHOICE
+111: ATTRIBUTE "dr3d:center",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "dr3d:size",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: SEQUENCE
+111: REF 'xml-id',
+112: ATTRIBUTE "xml:id",
+113: REF 'ID',
+114: DATA 'ID',
+111: CHOICE
+112: ATTRIBUTE "draw:id",
+113: REF 'NCName',
+114: DATA 'NCName',
+112: EPSILON
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-dr3d-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "dr3d:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+105: REF 'dr3d-rotate',
+106: ELEMENT "dr3d:rotate",
+107: SEQUENCE
+108: REF 'common-draw-viewbox-attlist',
+109: ATTRIBUTE "svg:viewBox",
+110: LIST
+111: SEQUENCE
+112: REF 'integer',
+113: DATA 'integer',
+112: REF 'integer',
+113: DATA 'integer',
+112: REF 'integer',
+113: DATA 'integer',
+112: REF 'integer',
+113: DATA 'integer',
+108: REF 'common-draw-path-data-attlist',
+109: ATTRIBUTE "svg:d",
+110: REF 'pathData',
+111: DATA 'string',
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: SEQUENCE
+111: REF 'xml-id',
+112: ATTRIBUTE "xml:id",
+113: REF 'ID',
+114: DATA 'ID',
+111: CHOICE
+112: ATTRIBUTE "draw:id",
+113: REF 'NCName',
+114: DATA 'NCName',
+112: EPSILON
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-dr3d-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "dr3d:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+105: REF 'dr3d-cube',
+106: ELEMENT "dr3d:cube",
+107: SEQUENCE
+108: REF 'dr3d-cube-attlist',
+109: SEQUENCE
+110: CHOICE
+111: ATTRIBUTE "dr3d:min-edge",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+110: CHOICE
+111: ATTRIBUTE "dr3d:max-edge",
+112: REF 'vector3D',
+113: DATA 'string',
+111: EPSILON
+108: REF 'common-draw-z-index-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:z-index",
+111: REF 'nonNegativeInteger',
+112: DATA 'nonNegativeInteger',
+110: EPSILON
+108: REF 'common-draw-id-attlist',
+109: CHOICE
+110: SEQUENCE
+111: REF 'xml-id',
+112: ATTRIBUTE "xml:id",
+113: REF 'ID',
+114: DATA 'ID',
+111: CHOICE
+112: ATTRIBUTE "draw:id",
+113: REF 'NCName',
+114: DATA 'NCName',
+112: EPSILON
+110: EPSILON
+108: REF 'common-draw-layer-name-attlist',
+109: CHOICE
+110: ATTRIBUTE "draw:layer",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+108: REF 'common-draw-style-name-attlist',
+109: CHOICE
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "draw:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+110: SEQUENCE
+111: CHOICE
+112: ATTRIBUTE "presentation:style-name",
+113: REF 'styleNameRef',
+114: CHOICE
+115: DATA 'NCName',
+115: EPSILON
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "presentation:class-names",
+113: REF 'styleNameRefs',
+114: LIST
+115: CHOICE
+116: ONEOREMORE
+117: DATA 'NCName',
+116: EPSILON
+112: EPSILON
+108: REF 'common-dr3d-transform-attlist',
+109: CHOICE
+110: ATTRIBUTE "dr3d:transform",
+111: REF 'string',
+112: DATA 'string',
+110: EPSILON
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'draw-glue-point',
+102: EPSILON
+98: REF 'draw-custom-shape',
+99: ELEMENT "draw:custom-shape",
+100: SEQUENCE
+101: REF 'draw-custom-shape-attlist',
+102: INTERLEAVE
+103: CHOICE
+104: ATTRIBUTE "draw:engine",
+105: REF 'namespacedToken',
+106: DATA 'QName',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "draw:data",
+105: REF 'string',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-position-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:x",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:y",
+105: REF 'coordinate',
+106: REF 'length',
+107: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-size-attlist',
+102: SEQUENCE
+103: CHOICE
+104: ATTRIBUTE "svg:width",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+103: CHOICE
+104: ATTRIBUTE "svg:height",
+105: REF 'length',
+106: DATA 'string',
+104: EPSILON
+101: REF 'common-draw-shape-with-text-and-styles-attlist',
+102: SEQUENCE
+103: REF 'common-draw-shape-with-styles-attlist',
+104: SEQUENCE
+105: REF 'common-draw-z-index-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:z-index",
+108: REF 'nonNegativeInteger',
+109: DATA 'nonNegativeInteger',
+107: EPSILON
+105: REF 'common-draw-id-attlist',
+106: CHOICE
+107: SEQUENCE
+108: REF 'xml-id',
+109: ATTRIBUTE "xml:id",
+110: REF 'ID',
+111: DATA 'ID',
+108: CHOICE
+109: ATTRIBUTE "draw:id",
+110: REF 'NCName',
+111: DATA 'NCName',
+109: EPSILON
+107: EPSILON
+105: REF 'common-draw-layer-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:layer",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-style-name-attlist',
+106: CHOICE
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "draw:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "draw:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+107: SEQUENCE
+108: CHOICE
+109: ATTRIBUTE "presentation:style-name",
+110: REF 'styleNameRef',
+111: CHOICE
+112: DATA 'NCName',
+112: EPSILON
+109: EPSILON
+108: CHOICE
+109: ATTRIBUTE "presentation:class-names",
+110: REF 'styleNameRefs',
+111: LIST
+112: CHOICE
+113: ONEOREMORE
+114: DATA 'NCName',
+113: EPSILON
+109: EPSILON
+105: REF 'common-draw-transform-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:transform",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-draw-name-attlist',
+106: CHOICE
+107: ATTRIBUTE "draw:name",
+108: REF 'string',
+109: DATA 'string',
+107: EPSILON
+105: REF 'common-text-spreadsheet-shape-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "table:end-cell-address",
+109: REF 'cellAddress',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-x",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:end-y",
+109: REF 'coordinate',
+110: REF 'length',
+111: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "table:table-background",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: REF 'common-text-anchor-attlist',
+108: INTERLEAVE
+109: CHOICE
+110: ATTRIBUTE "text:anchor-type",
+111: CHOICE
+112: VALUE 'page',
+112: VALUE 'frame',
+112: VALUE 'paragraph',
+112: VALUE 'char',
+112: VALUE 'as-char',
+110: EPSILON
+109: CHOICE
+110: ATTRIBUTE "text:anchor-page-number",
+111: REF 'positiveInteger',
+112: DATA 'positiveInteger',
+110: EPSILON
+103: REF 'common-draw-text-style-name-attlist',
+104: CHOICE
+105: ATTRIBUTE "draw:text-style-name",
+106: REF 'styleNameRef',
+107: CHOICE
+108: DATA 'NCName',
+108: EPSILON
+105: EPSILON
+101: REF 'common-draw-caption-id-attlist',
+102: CHOICE
+103: ATTRIBUTE "draw:caption-id",
+104: REF 'IDREF',
+105: DATA 'IDREF',
+103: EPSILON
+101: CHOICE
+102: REF 'svg-title',
+102: EPSILON
+101: CHOICE
+102: REF 'svg-desc',
+102: EPSILON
+101: CHOICE
+102: REF 'office-event-listeners',
+102: EPSILON
+101: CHOICE
+102: ONEOREMORE
+103: REF 'draw-glue-point',
+102: EPSILON
+101: REF 'draw-text',
+102: CHOICE
+103: ONEOREMORE
+104: CHOICE
+105: REF 'text-p',
+105: REF 'text-list',
+103: EPSILON
+101: CHOICE
+102: REF 'draw-enhanced-geometry',
+103: ELEMENT "draw:enhanced-geometry",
+104: SEQUENCE
+105: REF 'draw-enhanced-geometry-attlist',
+106: INTERLEAVE
+107: CHOICE
+108: ATTRIBUTE "draw:type",
+109: REF 'custom-shape-type',
+110: CHOICE
+111: VALUE 'non-primitive',
+111: REF 'string',
+112: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "svg:viewBox",
+109: LIST
+110: SEQUENCE
+111: REF 'integer',
+112: DATA 'integer',
+111: REF 'integer',
+112: DATA 'integer',
+111: REF 'integer',
+112: DATA 'integer',
+111: REF 'integer',
+112: DATA 'integer',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:mirror-vertical",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:mirror-horizontal",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-rotate-angle",
+109: REF 'angle',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-allowed",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-path-allowed",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:concentric-gradient-fill-allowed",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-brightness",
+109: REF 'zeroToHundredPercent',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-depth",
+109: LIST
+110: SEQUENCE
+111: REF 'length',
+112: DATA 'string',
+111: REF 'double',
+112: DATA 'double',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-diffusion",
+109: REF 'percent',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-number-of-line-segments",
+109: REF 'integer',
+110: DATA 'integer',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-light-face",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-first-light-harsh",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-second-light-harsh",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-first-light-level",
+109: REF 'zeroToHundredPercent',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-second-light-level",
+109: REF 'zeroToHundredPercent',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-first-light-direction",
+109: REF 'vector3D',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-second-light-direction",
+109: REF 'vector3D',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-metal",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "dr3d:shade-mode",
+109: CHOICE
+110: VALUE 'flat',
+110: VALUE 'phong',
+110: VALUE 'gouraud',
+110: VALUE 'draft',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-rotation-angle",
+109: LIST
+110: SEQUENCE
+111: REF 'angle',
+112: DATA 'string',
+111: REF 'angle',
+112: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-rotation-center",
+109: REF 'vector3D',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-shininess",
+109: REF 'zeroToHundredPercent',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-skew",
+109: LIST
+110: SEQUENCE
+111: REF 'double',
+112: DATA 'double',
+111: REF 'angle',
+112: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-specularity",
+109: REF 'zeroToHundredPercent',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "dr3d:projection",
+109: CHOICE
+110: VALUE 'parallel',
+110: VALUE 'perspective',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-viewpoint",
+109: REF 'point3D',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-origin",
+109: LIST
+110: SEQUENCE
+111: REF 'extrusionOrigin',
+112: DATA 'double',
+111: REF 'extrusionOrigin',
+112: DATA 'double',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:extrusion-color",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:enhanced-path",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:path-stretchpoint-x",
+109: REF 'double',
+110: DATA 'double',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:path-stretchpoint-y",
+109: REF 'double',
+110: DATA 'double',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-areas",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:glue-points",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:glue-point-type",
+109: CHOICE
+110: VALUE 'none',
+110: VALUE 'segments',
+110: VALUE 'rectangle',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:glue-point-leaving-directions",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-path",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-path-mode",
+109: CHOICE
+110: VALUE 'normal',
+110: VALUE 'path',
+110: VALUE 'shape',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-path-scale",
+109: CHOICE
+110: VALUE 'path',
+110: VALUE 'shape',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:text-path-same-letter-heights",
+109: REF 'boolean',
+110: CHOICE
+111: VALUE 'true',
+111: VALUE 'false',
+108: EPSILON
+107: CHOICE
+108: ATTRIBUTE "draw:modifiers",
+109: REF 'string',
+110: DATA 'string',
+108: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: REF 'draw-equation',
+108: ELEMENT "draw:equation",
+109: REF 'draw-equation-attlist',
+110: INTERLEAVE
+111: CHOICE
+112: ATTRIBUTE "draw:name",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:formula",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+106: EPSILON
+105: CHOICE
+106: ONEOREMORE
+107: REF 'draw-handle',
+108: ELEMENT "draw:handle",
+109: REF 'draw-handle-attlist',
+110: INTERLEAVE
+111: CHOICE
+112: ATTRIBUTE "draw:handle-mirror-vertical",
+113: REF 'boolean',
+114: CHOICE
+115: VALUE 'true',
+115: VALUE 'false',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-mirror-horizontal",
+113: REF 'boolean',
+114: CHOICE
+115: VALUE 'true',
+115: VALUE 'false',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-switched",
+113: REF 'boolean',
+114: CHOICE
+115: VALUE 'true',
+115: VALUE 'false',
+112: EPSILON
+111: ATTRIBUTE "draw:handle-position",
+112: REF 'string',
+113: DATA 'string',
+111: CHOICE
+112: ATTRIBUTE "draw:handle-range-x-minimum",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-range-x-maximum",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-range-y-minimum",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-range-y-maximum",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-polar",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-radius-range-minimum",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+111: CHOICE
+112: ATTRIBUTE "draw:handle-radius-range-maximum",
+113: REF 'string',
+114: DATA 'string',
+112: EPSILON
+106: EPSILON
+102: EPSILON
+96: REF 'draw-a',
+97: ELEMENT "draw:a",
+98: SEQUENCE
+99: REF 'draw-a-attlist',
+100: INTERLEAVE
+101: ATTRIBUTE "xlink:type",
+102: VALUE 'simple',
+101: ATTRIBUTE "xlink:href",
+102: REF 'anyIRI',
+103: DATA 'anyURI',
+101: CHOICE
+102: ATTRIBUTE "xlink:actuate",
+103: VALUE 'onRequest',
+102: EPSILON
+101: CHOICE
+102: ATTRIBUTE "office:target-frame-name",
+103: REF 'targetFrameName',
+104: CHOICE
+105: VALUE '_self',
+105: VALUE '_blank',
+105: VALUE '_parent',
+105: VALUE '_top',
+105: REF 'string',
+106: DATA 'string',
+102: EPSILON
+101: CHOICE
+102: ATTRIBUTE "xlink:show",
+103: CHOICE
+104: VALUE 'new',
+104: VALUE 'replace',
+102: EPSILON
+101: CHOICE
+102: ATTRIBUTE "office:name",
+103: REF 'string',
+104: DATA 'string',
+102: EPSILON
+101: CHOICE
+102: ATTRIBUTE "office:title",
+103: REF 'string',
+104: DATA 'string',
+102: EPSILON
+101: CHOICE
+102: ATTRIBUTE "office:server-map",
+103: REF 'boolean',
+104: CHOICE
+105: VALUE 'true',
+105: VALUE 'false',
+102: EPSILON
+101: CHOICE
+102: REF 'xml-id',
+103: ATTRIBUTE "xml:id",
+104: REF 'ID',
+105: DATA 'ID',
+102: EPSILON
+99: REF 'shape-instance',
+100: CHOICE
+101: REF 'draw-rect',
+101: REF 'draw-line',
+101: REF 'draw-polyline',
+101: REF 'draw-polygon',
+101: REF 'draw-regular-polygon',
+101: REF 'draw-path',
+101: REF 'draw-circle',
+101: REF 'draw-ellipse',
+101: REF 'draw-g',
+101: REF 'draw-page-thumbnail',
+101: REF 'draw-frame',
+101: REF 'draw-measure',
+101: REF 'draw-caption',
+101: REF 'draw-connector',
+101: REF 'draw-control',
+101: REF 'dr3d-scene',
+101: REF 'draw-custom-shape',
+94: REF 'change-marks',
+95: CHOICE
+96: ELEMENT "text:change",
+97: REF 'change-mark-attr',
+98: ATTRIBUTE "text:change-id",
+99: REF 'IDREF',
+100: DATA 'IDREF',
+96: ELEMENT "text:change-start",
+97: REF 'change-mark-attr',
+98: ATTRIBUTE "text:change-id",
+99: REF 'IDREF',
+100: DATA 'IDREF',
+96: ELEMENT "text:change-end",
+97: REF 'change-mark-attr',
+98: ATTRIBUTE "text:change-id",
+99: REF 'IDREF',
+100: DATA 'IDREF',
+92: REF 'text-index-title',
+93: ELEMENT "text:index-title",
+94: SEQUENCE
+95: REF 'common-section-attlist',
+96: INTERLEAVE
+97: CHOICE
+98: ATTRIBUTE "text:style-name",
+99: REF 'styleNameRef',
+100: CHOICE
+101: DATA 'NCName',
+101: EPSILON
+98: EPSILON
+97: ATTRIBUTE "text:name",
+98: REF 'string',
+99: DATA 'string',
+97: CHOICE
+98: ATTRIBUTE "text:protected",
+99: REF 'boolean',
+100: CHOICE
+101: VALUE 'true',
+101: VALUE 'false',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "text:protection-key",
+99: REF 'string',
+100: DATA 'string',
+98: EPSILON
+97: CHOICE
+98: ATTRIBUTE "text:protection-key-digest-algorithm",
+99: REF 'anyIRI',
+100: DATA 'anyURI',
+98: EPSILON
+97: CHOICE
+98: REF 'xml-id',
+99: ATTRIBUTE "xml:id",
+100: REF 'ID',
+101: DATA 'ID',
+98: EPSILON
+95: CHOICE
+96: ONEOREMORE
+97: REF 'index-content-main',
+98: CHOICE
+99: REF 'text-content',
+100: CHOICE
+101: REF 'text-h',
+101: REF 'text-p',
+101: REF 'text-list',
+101: REF 'text-numbered-paragraph',
+101: REF 'table-table',
+101: REF 'text-section',
+101: REF 'text-soft-page-break',
+101: REF 'text-table-of-content',
+101: REF 'text-illustration-index',
+101: REF 'text-table-index',
+101: REF 'text-object-index',
+101: REF 'text-user-index',
+101: REF 'text-alphabetical-index',
+101: REF 'text-bibliography',
+101: REF 'shape',
+102: CHOICE
+103: REF 'shape-instance',
+104: CHOICE
+105: REF 'draw-rect',
+105: REF 'draw-line',
+105: REF 'draw-polyline',
+105: REF 'draw-polygon',
+105: REF 'draw-regular-polygon',
+105: REF 'draw-path',
+105: REF 'draw-circle',
+105: REF 'draw-ellipse',
+105: REF 'draw-g',
+105: REF 'draw-page-thumbnail',
+105: REF 'draw-frame',
+105: REF 'draw-measure',
+105: REF 'draw-caption',
+105: REF 'draw-connector',
+105: REF 'draw-control',
+105: REF 'dr3d-scene',
+105: REF 'draw-custom-shape',
+103: REF 'draw-a',
+101: REF 'change-marks',
+102: CHOICE
+99: REF 'text-index-title',
+96: EPSILON
+89: EPSILON
+83: REF 'text-illustration-index',
+83: REF 'text-table-index',
+83: REF 'text-object-index',
+83: REF 'text-user-index',
+83: REF 'text-alphabetical-index',
+83: REF 'text-bibliography',
+83: REF 'shape',
+84: CHOICE
+85: REF 'shape-instance',
+86: CHOICE
+87: REF 'draw-rect',
+87: REF 'draw-line',
+87: REF 'draw-polyline',
+87: REF 'draw-polygon',
+87: REF 'draw-regular-polygon',
+87: REF 'draw-path',
+87: REF 'draw-circle',
+87: REF 'draw-ellipse',
+87: REF 'draw-g',
+87: REF 'draw-page-thumbnail',
+87: REF 'draw-frame',
+87: REF 'draw-measure',
+87: REF 'draw-caption',
+87: REF 'draw-connector',
+87: REF 'draw-control',
+87: REF 'dr3d-scene',
+87: REF 'draw-custom-shape',
+85: REF 'draw-a',
+83: REF 'change-marks',
+84: CHOICE
+80: EPSILON
+76: REF 'text-soft-page-break',
+76: REF 'text-table-of-content',
+76: REF 'text-illustration-index',
+76: REF 'text-table-index',
+76: REF 'text-object-index',
+76: REF 'text-user-index',
+76: REF 'text-alphabetical-index',
+76: REF 'text-bibliography',
+76: REF 'shape',
+77: CHOICE
+78: REF 'shape-instance',
+79: CHOICE
+80: REF 'draw-rect',
+80: REF 'draw-line',
+80: REF 'draw-polyline',
+80: REF 'draw-polygon',
+80: REF 'draw-regular-polygon',
+80: REF 'draw-path',
+80: REF 'draw-circle',
+80: REF 'draw-ellipse',
+80: REF 'draw-g',
+80: REF 'draw-page-thumbnail',
+80: REF 'draw-frame',
+80: REF 'draw-measure',
+80: REF 'draw-caption',
+80: REF 'draw-connector',
+80: REF 'draw-control',
+80: REF 'dr3d-scene',
+80: REF 'draw-custom-shape',
+78: REF 'draw-a',
+76: REF 'change-marks',
+77: CHOICE
+73: EPSILON
+69: REF 'draw-image',
+70: ELEMENT "draw:image",
+71: SEQUENCE
+72: REF 'draw-image-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:filter-name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+72: CHOICE
+73: REF 'common-draw-data-attlist',
+74: SEQUENCE
+75: ATTRIBUTE "xlink:type",
+76: VALUE 'simple',
+75: ATTRIBUTE "xlink:href",
+76: REF 'anyIRI',
+77: DATA 'anyURI',
+75: CHOICE
+76: ATTRIBUTE "xlink:show",
+77: VALUE 'embed',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "xlink:actuate",
+77: VALUE 'onLoad',
+76: EPSILON
+73: REF 'office-binary-data',
+72: REF 'draw-text',
+73: CHOICE
+74: ONEOREMORE
+75: CHOICE
+76: REF 'text-p',
+76: REF 'text-list',
+74: EPSILON
+69: REF 'draw-object',
+70: ELEMENT "draw:object",
+71: SEQUENCE
+72: REF 'draw-object-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:notify-on-update-of-ranges",
+76: CHOICE
+77: REF 'cellRangeAddressList',
+78: DATA 'string',
+77: REF 'string',
+78: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+72: CHOICE
+73: REF 'common-draw-data-attlist',
+74: SEQUENCE
+75: ATTRIBUTE "xlink:type",
+76: VALUE 'simple',
+75: ATTRIBUTE "xlink:href",
+76: REF 'anyIRI',
+77: DATA 'anyURI',
+75: CHOICE
+76: ATTRIBUTE "xlink:show",
+77: VALUE 'embed',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "xlink:actuate",
+77: VALUE 'onLoad',
+76: EPSILON
+73: REF 'office-document',
+73: REF 'math-math',
+74: ELEMENT "math:math",
+75: REF 'mathMarkup',
+76: ONEOREMORE
+77: CHOICE
+78: ATTRIBUTE "*",
+79: STRING
+78: STRING
+78: ELEMENT "*",
+79: REF 'mathMarkup',
+80: ONEOREMORE
+81: CHOICE
+82: ATTRIBUTE "*",
+83: STRING
+82: STRING
+69: REF 'draw-object-ole',
+70: ELEMENT "draw:object-ole",
+71: SEQUENCE
+72: REF 'draw-object-ole-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:class-id",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+72: CHOICE
+73: REF 'common-draw-data-attlist',
+74: SEQUENCE
+75: ATTRIBUTE "xlink:type",
+76: VALUE 'simple',
+75: ATTRIBUTE "xlink:href",
+76: REF 'anyIRI',
+77: DATA 'anyURI',
+75: CHOICE
+76: ATTRIBUTE "xlink:show",
+77: VALUE 'embed',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "xlink:actuate",
+77: VALUE 'onLoad',
+76: EPSILON
+73: REF 'office-binary-data',
+69: REF 'draw-applet',
+70: ELEMENT "draw:applet",
+71: SEQUENCE
+72: REF 'draw-applet-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:code",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "draw:object",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "draw:archive",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "draw:may-script",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+72: CHOICE
+73: REF 'common-draw-data-attlist',
+74: SEQUENCE
+75: ATTRIBUTE "xlink:type",
+76: VALUE 'simple',
+75: ATTRIBUTE "xlink:href",
+76: REF 'anyIRI',
+77: DATA 'anyURI',
+75: CHOICE
+76: ATTRIBUTE "xlink:show",
+77: VALUE 'embed',
+76: EPSILON
+75: CHOICE
+76: ATTRIBUTE "xlink:actuate",
+77: VALUE 'onLoad',
+76: EPSILON
+73: EPSILON
+72: CHOICE
+73: ONEOREMORE
+74: REF 'draw-param',
+75: ELEMENT "draw:param",
+76: REF 'draw-param-attlist',
+77: INTERLEAVE
+78: CHOICE
+79: ATTRIBUTE "draw:name",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+78: CHOICE
+79: ATTRIBUTE "draw:value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+73: EPSILON
+69: REF 'draw-floating-frame',
+70: ELEMENT "draw:floating-frame",
+71: SEQUENCE
+72: REF 'draw-floating-frame-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:frame-name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+72: REF 'common-draw-data-attlist',
+73: SEQUENCE
+74: ATTRIBUTE "xlink:type",
+75: VALUE 'simple',
+74: ATTRIBUTE "xlink:href",
+75: REF 'anyIRI',
+76: DATA 'anyURI',
+74: CHOICE
+75: ATTRIBUTE "xlink:show",
+76: VALUE 'embed',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "xlink:actuate",
+76: VALUE 'onLoad',
+75: EPSILON
+69: REF 'draw-plugin',
+70: ELEMENT "draw:plugin",
+71: SEQUENCE
+72: REF 'draw-plugin-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "draw:mime-type",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+72: REF 'common-draw-data-attlist',
+73: SEQUENCE
+74: ATTRIBUTE "xlink:type",
+75: VALUE 'simple',
+74: ATTRIBUTE "xlink:href",
+75: REF 'anyIRI',
+76: DATA 'anyURI',
+74: CHOICE
+75: ATTRIBUTE "xlink:show",
+76: VALUE 'embed',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "xlink:actuate",
+76: VALUE 'onLoad',
+75: EPSILON
+72: CHOICE
+73: ONEOREMORE
+74: REF 'draw-param',
+73: EPSILON
+69: REF 'table-table',
+67: EPSILON
+66: CHOICE
+67: REF 'office-event-listeners',
+67: EPSILON
+66: CHOICE
+67: ONEOREMORE
+68: REF 'draw-glue-point',
+67: EPSILON
+66: CHOICE
+67: REF 'draw-image-map',
+68: ELEMENT "draw:image-map",
+69: CHOICE
+70: ONEOREMORE
+71: CHOICE
+72: REF 'draw-area-rectangle',
+73: ELEMENT "draw:area-rectangle",
+74: SEQUENCE
+75: REF 'common-draw-area-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: SEQUENCE
+79: ATTRIBUTE "xlink:type",
+80: VALUE 'simple',
+79: ATTRIBUTE "xlink:href",
+80: REF 'anyIRI',
+81: DATA 'anyURI',
+79: CHOICE
+80: ATTRIBUTE "office:target-frame-name",
+81: REF 'targetFrameName',
+82: CHOICE
+83: VALUE '_self',
+83: VALUE '_blank',
+83: VALUE '_parent',
+83: VALUE '_top',
+83: REF 'string',
+84: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:show",
+81: CHOICE
+82: VALUE 'new',
+82: VALUE 'replace',
+80: EPSILON
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "office:name",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "draw:nohref",
+79: VALUE 'nohref',
+78: EPSILON
+75: ATTRIBUTE "svg:x",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: ATTRIBUTE "svg:y",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: ATTRIBUTE "svg:width",
+76: REF 'length',
+77: DATA 'string',
+75: ATTRIBUTE "svg:height",
+76: REF 'length',
+77: DATA 'string',
+75: CHOICE
+76: REF 'svg-title',
+76: EPSILON
+75: CHOICE
+76: REF 'svg-desc',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+72: REF 'draw-area-circle',
+73: ELEMENT "draw:area-circle",
+74: SEQUENCE
+75: REF 'common-draw-area-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: SEQUENCE
+79: ATTRIBUTE "xlink:type",
+80: VALUE 'simple',
+79: ATTRIBUTE "xlink:href",
+80: REF 'anyIRI',
+81: DATA 'anyURI',
+79: CHOICE
+80: ATTRIBUTE "office:target-frame-name",
+81: REF 'targetFrameName',
+82: CHOICE
+83: VALUE '_self',
+83: VALUE '_blank',
+83: VALUE '_parent',
+83: VALUE '_top',
+83: REF 'string',
+84: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:show",
+81: CHOICE
+82: VALUE 'new',
+82: VALUE 'replace',
+80: EPSILON
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "office:name",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "draw:nohref",
+79: VALUE 'nohref',
+78: EPSILON
+75: ATTRIBUTE "svg:cx",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: ATTRIBUTE "svg:cy",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: ATTRIBUTE "svg:r",
+76: REF 'length',
+77: DATA 'string',
+75: CHOICE
+76: REF 'svg-title',
+76: EPSILON
+75: CHOICE
+76: REF 'svg-desc',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+72: REF 'draw-area-polygon',
+73: ELEMENT "draw:area-polygon",
+74: SEQUENCE
+75: REF 'common-draw-area-attlist',
+76: INTERLEAVE
+77: CHOICE
+78: SEQUENCE
+79: ATTRIBUTE "xlink:type",
+80: VALUE 'simple',
+79: ATTRIBUTE "xlink:href",
+80: REF 'anyIRI',
+81: DATA 'anyURI',
+79: CHOICE
+80: ATTRIBUTE "office:target-frame-name",
+81: REF 'targetFrameName',
+82: CHOICE
+83: VALUE '_self',
+83: VALUE '_blank',
+83: VALUE '_parent',
+83: VALUE '_top',
+83: REF 'string',
+84: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xlink:show",
+81: CHOICE
+82: VALUE 'new',
+82: VALUE 'replace',
+80: EPSILON
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "office:name",
+79: REF 'string',
+80: DATA 'string',
+78: EPSILON
+77: CHOICE
+78: ATTRIBUTE "draw:nohref",
+79: VALUE 'nohref',
+78: EPSILON
+75: ATTRIBUTE "svg:x",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: ATTRIBUTE "svg:y",
+76: REF 'coordinate',
+77: REF 'length',
+78: DATA 'string',
+75: ATTRIBUTE "svg:width",
+76: REF 'length',
+77: DATA 'string',
+75: ATTRIBUTE "svg:height",
+76: REF 'length',
+77: DATA 'string',
+75: REF 'common-draw-viewbox-attlist',
+76: ATTRIBUTE "svg:viewBox",
+77: LIST
+78: SEQUENCE
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+79: REF 'integer',
+80: DATA 'integer',
+75: REF 'common-draw-points-attlist',
+76: ATTRIBUTE "draw:points",
+77: REF 'points',
+78: DATA 'string',
+75: CHOICE
+76: REF 'svg-title',
+76: EPSILON
+75: CHOICE
+76: REF 'svg-desc',
+76: EPSILON
+75: CHOICE
+76: REF 'office-event-listeners',
+76: EPSILON
+70: EPSILON
+67: EPSILON
+66: CHOICE
+67: REF 'svg-title',
+67: EPSILON
+66: CHOICE
+67: REF 'svg-desc',
+67: EPSILON
+66: CHOICE
+67: REF 'draw-contour-polygon',
+68: ELEMENT "draw:contour-polygon",
+69: SEQUENCE
+70: REF 'common-contour-attlist',
+71: ATTRIBUTE "draw:recreate-on-edit",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+70: REF 'common-draw-size-attlist',
+71: SEQUENCE
+72: CHOICE
+73: ATTRIBUTE "svg:width",
+74: REF 'length',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "svg:height",
+74: REF 'length',
+75: DATA 'string',
+73: EPSILON
+70: REF 'common-draw-viewbox-attlist',
+71: ATTRIBUTE "svg:viewBox",
+72: LIST
+73: SEQUENCE
+74: REF 'integer',
+75: DATA 'integer',
+74: REF 'integer',
+75: DATA 'integer',
+74: REF 'integer',
+75: DATA 'integer',
+74: REF 'integer',
+75: DATA 'integer',
+70: REF 'common-draw-points-attlist',
+71: ATTRIBUTE "draw:points",
+72: REF 'points',
+73: DATA 'string',
+67: REF 'draw-contour-path',
+68: ELEMENT "draw:contour-path",
+69: SEQUENCE
+70: REF 'common-contour-attlist',
+71: ATTRIBUTE "draw:recreate-on-edit",
+72: REF 'boolean',
+73: CHOICE
+74: VALUE 'true',
+74: VALUE 'false',
+70: REF 'common-draw-size-attlist',
+71: SEQUENCE
+72: CHOICE
+73: ATTRIBUTE "svg:width",
+74: REF 'length',
+75: DATA 'string',
+73: EPSILON
+72: CHOICE
+73: ATTRIBUTE "svg:height",
+74: REF 'length',
+75: DATA 'string',
+73: EPSILON
+70: REF 'common-draw-viewbox-attlist',
+71: ATTRIBUTE "svg:viewBox",
+72: LIST
+73: SEQUENCE
+74: REF 'integer',
+75: DATA 'integer',
+74: REF 'integer',
+75: DATA 'integer',
+74: REF 'integer',
+75: DATA 'integer',
+74: REF 'integer',
+75: DATA 'integer',
+70: REF 'common-draw-path-data-attlist',
+71: ATTRIBUTE "svg:d",
+72: REF 'pathData',
+73: DATA 'string',
+67: EPSILON
+63: REF 'draw-measure',
+63: REF 'draw-caption',
+63: REF 'draw-connector',
+63: REF 'draw-control',
+63: REF 'dr3d-scene',
+63: REF 'draw-custom-shape',
+61: REF 'draw-a',
+58: EPSILON
+54: REF 'draw-page-thumbnail',
+54: REF 'draw-frame',
+54: REF 'draw-measure',
+54: REF 'draw-caption',
+54: REF 'draw-connector',
+54: REF 'draw-control',
+54: REF 'dr3d-scene',
+54: REF 'draw-custom-shape',
+52: REF 'draw-a',
+47: EPSILON
+46: REF 'table-columns-and-groups',
+47: ONEOREMORE
+48: CHOICE
+49: REF 'table-table-column-group',
+50: ELEMENT "table:table-column-group",
+51: SEQUENCE
+52: REF 'table-table-column-group-attlist',
+53: CHOICE
+54: ATTRIBUTE "table:display",
+55: REF 'boolean',
+56: CHOICE
+57: VALUE 'true',
+57: VALUE 'false',
+54: EPSILON
+52: REF 'table-columns-and-groups',
+53: ONEOREMORE
+54: CHOICE
+55: REF 'table-table-column-group',
+55: REF 'table-columns-no-group',
+56: CHOICE
+57: SEQUENCE
+58: REF 'table-columns',
+59: CHOICE
+60: REF 'table-table-columns',
+61: ELEMENT "table:table-columns",
+62: ONEOREMORE
+63: REF 'table-table-column',
+64: ELEMENT "table:table-column",
+65: REF 'table-table-column-attlist',
+66: INTERLEAVE
+67: CHOICE
+68: ATTRIBUTE "table:number-columns-repeated",
+69: REF 'positiveInteger',
+70: DATA 'positiveInteger',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "table:style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "table:visibility",
+69: REF 'table-visibility-value',
+70: CHOICE
+71: VALUE 'visible',
+71: VALUE 'collapse',
+71: VALUE 'filter',
+68: EPSILON
+67: CHOICE
+68: ATTRIBUTE "table:default-cell-style-name",
+69: REF 'styleNameRef',
+70: CHOICE
+71: DATA 'NCName',
+71: EPSILON
+68: EPSILON
+67: CHOICE
+68: REF 'xml-id',
+69: ATTRIBUTE "xml:id",
+70: REF 'ID',
+71: DATA 'ID',
+68: EPSILON
+60: ONEOREMORE
+61: REF 'table-table-column',
+58: CHOICE
+59: SEQUENCE
+60: REF 'table-table-header-columns',
+61: ELEMENT "table:table-header-columns",
+62: ONEOREMORE
+63: REF 'table-table-column',
+60: CHOICE
+61: REF 'table-columns',
+62: CHOICE
+63: REF 'table-table-columns',
+63: ONEOREMORE
+64: REF 'table-table-column',
+61: EPSILON
+59: EPSILON
+57: SEQUENCE
+58: REF 'table-table-header-columns',
+58: CHOICE
+59: REF 'table-columns',
+60: CHOICE
+61: REF 'table-table-columns',
+61: ONEOREMORE
+62: REF 'table-table-column',
+59: EPSILON
+49: REF 'table-columns-no-group',
+50: CHOICE
+51: SEQUENCE
+52: REF 'table-columns',
+53: CHOICE
+54: REF 'table-table-columns',
+54: ONEOREMORE
+55: REF 'table-table-column',
+52: CHOICE
+53: SEQUENCE
+54: REF 'table-table-header-columns',
+54: CHOICE
+55: REF 'table-columns',
+56: CHOICE
+57: REF 'table-table-columns',
+57: ONEOREMORE
+58: REF 'table-table-column',
+55: EPSILON
+53: EPSILON
+51: SEQUENCE
+52: REF 'table-table-header-columns',
+52: CHOICE
+53: REF 'table-columns',
+54: CHOICE
+55: REF 'table-table-columns',
+55: ONEOREMORE
+56: REF 'table-table-column',
+53: EPSILON
+46: REF 'table-rows-and-groups',
+47: ONEOREMORE
+48: CHOICE
+49: REF 'table-table-row-group',
+50: ELEMENT "table:table-row-group",
+51: SEQUENCE
+52: REF 'table-table-row-group-attlist',
+53: CHOICE
+54: ATTRIBUTE "table:display",
+55: REF 'boolean',
+56: CHOICE
+57: VALUE 'true',
+57: VALUE 'false',
+54: EPSILON
+52: REF 'table-rows-and-groups',
+53: ONEOREMORE
+54: CHOICE
+55: REF 'table-table-row-group',
+55: REF 'table-rows-no-group',
+56: CHOICE
+57: SEQUENCE
+58: REF 'table-rows',
+59: CHOICE
+60: REF 'table-table-rows',
+61: ELEMENT "table:table-rows",
+62: ONEOREMORE
+63: SEQUENCE
+64: CHOICE
+65: REF 'text-soft-page-break',
+65: EPSILON
+64: REF 'table-table-row',
+65: ELEMENT "table:table-row",
+66: SEQUENCE
+67: REF 'table-table-row-attlist',
+68: INTERLEAVE
+69: CHOICE
+70: ATTRIBUTE "table:number-rows-repeated",
+71: REF 'positiveInteger',
+72: DATA 'positiveInteger',
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "table:style-name",
+71: REF 'styleNameRef',
+72: CHOICE
+73: DATA 'NCName',
+73: EPSILON
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "table:default-cell-style-name",
+71: REF 'styleNameRef',
+72: CHOICE
+73: DATA 'NCName',
+73: EPSILON
+70: EPSILON
+69: CHOICE
+70: ATTRIBUTE "table:visibility",
+71: REF 'table-visibility-value',
+72: CHOICE
+73: VALUE 'visible',
+73: VALUE 'collapse',
+73: VALUE 'filter',
+70: EPSILON
+69: CHOICE
+70: REF 'xml-id',
+71: ATTRIBUTE "xml:id",
+72: REF 'ID',
+73: DATA 'ID',
+70: EPSILON
+67: ONEOREMORE
+68: CHOICE
+69: REF 'table-table-cell',
+70: ELEMENT "table:table-cell",
+71: SEQUENCE
+72: REF 'table-table-cell-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "table:number-columns-repeated",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:style-name",
+76: REF 'styleNameRef',
+77: CHOICE
+78: DATA 'NCName',
+78: EPSILON
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:content-validation-name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:formula",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'common-value-and-type-attlist',
+76: CHOICE
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'float',
+78: ATTRIBUTE "office:value",
+79: REF 'double',
+80: DATA 'double',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'percentage',
+78: ATTRIBUTE "office:value",
+79: REF 'double',
+80: DATA 'double',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'currency',
+78: ATTRIBUTE "office:value",
+79: REF 'double',
+80: DATA 'double',
+78: CHOICE
+79: ATTRIBUTE "office:currency",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'date',
+78: ATTRIBUTE "office:date-value",
+79: REF 'dateOrDateTime',
+80: CHOICE
+81: DATA 'date',
+81: DATA 'dateTime',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'time',
+78: ATTRIBUTE "office:time-value",
+79: REF 'duration',
+80: DATA 'duration',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'boolean',
+78: ATTRIBUTE "office:boolean-value",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'string',
+78: CHOICE
+79: ATTRIBUTE "office:string-value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:protect",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:protected",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+74: CHOICE
+75: REF 'common-in-content-meta-attlist',
+76: SEQUENCE
+77: ATTRIBUTE "xhtml:about",
+78: REF 'URIorSafeCURIE',
+79: CHOICE
+80: REF 'anyURI',
+81: DATA 'anyURI',
+80: REF 'SafeCURIE',
+81: DATA 'string',
+77: ATTRIBUTE "xhtml:property",
+78: REF 'CURIEs',
+79: LIST
+80: ONEOREMORE
+81: REF 'CURIE',
+82: DATA 'string',
+77: REF 'common-meta-literal-attlist',
+78: SEQUENCE
+79: CHOICE
+80: ATTRIBUTE "xhtml:datatype",
+81: REF 'CURIE',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xhtml:content",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+75: EPSILON
+72: REF 'table-table-cell-attlist-extra',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "table:number-columns-spanned",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:number-rows-spanned",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:number-matrix-columns-spanned",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:number-matrix-rows-spanned",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+72: REF 'table-table-cell-content',
+73: SEQUENCE
+74: CHOICE
+75: REF 'table-cell-range-source',
+76: ELEMENT "table:cell-range-source",
+77: SEQUENCE
+78: REF 'table-table-cell-range-source-attlist',
+79: INTERLEAVE
+80: ATTRIBUTE "table:name",
+81: REF 'string',
+82: DATA 'string',
+80: ATTRIBUTE "table:last-column-spanned",
+81: REF 'positiveInteger',
+82: DATA 'positiveInteger',
+80: ATTRIBUTE "table:last-row-spanned",
+81: REF 'positiveInteger',
+82: DATA 'positiveInteger',
+78: REF 'table-linked-source-attlist',
+79: INTERLEAVE
+80: ATTRIBUTE "xlink:type",
+81: VALUE 'simple',
+80: ATTRIBUTE "xlink:href",
+81: REF 'anyIRI',
+82: DATA 'anyURI',
+80: CHOICE
+81: ATTRIBUTE "xlink:actuate",
+82: VALUE 'onRequest',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "table:filter-name",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "table:filter-options",
+82: REF 'string',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "table:refresh-delay",
+82: REF 'duration',
+83: DATA 'duration',
+81: EPSILON
+75: EPSILON
+74: CHOICE
+75: REF 'office-annotation',
+76: ELEMENT "office:annotation",
+77: SEQUENCE
+78: REF 'office-annotation-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: ATTRIBUTE "office:display",
+82: REF 'boolean',
+83: CHOICE
+84: VALUE 'true',
+84: VALUE 'false',
+81: EPSILON
+80: CHOICE
+81: REF 'common-office-annotation-name-attlist',
+82: ATTRIBUTE "office:name",
+83: REF 'string',
+84: DATA 'string',
+81: EPSILON
+78: REF 'draw-caption-attlist',
+79: INTERLEAVE
+80: CHOICE
+81: SEQUENCE
+82: ATTRIBUTE "draw:caption-point-x",
+83: REF 'coordinate',
+84: REF 'length',
+85: DATA 'string',
+82: ATTRIBUTE "draw:caption-point-y",
+83: REF 'coordinate',
+84: REF 'length',
+85: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "draw:corner-radius",
+82: REF 'nonNegativeLength',
+83: DATA 'string',
+81: EPSILON
+78: REF 'common-draw-position-attlist',
+79: SEQUENCE
+80: CHOICE
+81: ATTRIBUTE "svg:x",
+82: REF 'coordinate',
+83: REF 'length',
+84: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "svg:y",
+82: REF 'coordinate',
+83: REF 'length',
+84: DATA 'string',
+81: EPSILON
+78: REF 'common-draw-size-attlist',
+79: SEQUENCE
+80: CHOICE
+81: ATTRIBUTE "svg:width",
+82: REF 'length',
+83: DATA 'string',
+81: EPSILON
+80: CHOICE
+81: ATTRIBUTE "svg:height",
+82: REF 'length',
+83: DATA 'string',
+81: EPSILON
+78: REF 'common-draw-shape-with-text-and-styles-attlist',
+79: SEQUENCE
+80: REF 'common-draw-shape-with-styles-attlist',
+81: SEQUENCE
+82: REF 'common-draw-z-index-attlist',
+83: CHOICE
+84: ATTRIBUTE "draw:z-index",
+85: REF 'nonNegativeInteger',
+86: DATA 'nonNegativeInteger',
+84: EPSILON
+82: REF 'common-draw-id-attlist',
+83: CHOICE
+84: SEQUENCE
+85: REF 'xml-id',
+86: ATTRIBUTE "xml:id",
+87: REF 'ID',
+88: DATA 'ID',
+85: CHOICE
+86: ATTRIBUTE "draw:id",
+87: REF 'NCName',
+88: DATA 'NCName',
+86: EPSILON
+84: EPSILON
+82: REF 'common-draw-layer-name-attlist',
+83: CHOICE
+84: ATTRIBUTE "draw:layer",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+82: REF 'common-draw-style-name-attlist',
+83: CHOICE
+84: SEQUENCE
+85: CHOICE
+86: ATTRIBUTE "draw:style-name",
+87: REF 'styleNameRef',
+88: CHOICE
+89: DATA 'NCName',
+89: EPSILON
+86: EPSILON
+85: CHOICE
+86: ATTRIBUTE "draw:class-names",
+87: REF 'styleNameRefs',
+88: LIST
+89: CHOICE
+90: ONEOREMORE
+91: DATA 'NCName',
+90: EPSILON
+86: EPSILON
+84: SEQUENCE
+85: CHOICE
+86: ATTRIBUTE "presentation:style-name",
+87: REF 'styleNameRef',
+88: CHOICE
+89: DATA 'NCName',
+89: EPSILON
+86: EPSILON
+85: CHOICE
+86: ATTRIBUTE "presentation:class-names",
+87: REF 'styleNameRefs',
+88: LIST
+89: CHOICE
+90: ONEOREMORE
+91: DATA 'NCName',
+90: EPSILON
+86: EPSILON
+82: REF 'common-draw-transform-attlist',
+83: CHOICE
+84: ATTRIBUTE "draw:transform",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+82: REF 'common-draw-name-attlist',
+83: CHOICE
+84: ATTRIBUTE "draw:name",
+85: REF 'string',
+86: DATA 'string',
+84: EPSILON
+82: REF 'common-text-spreadsheet-shape-attlist',
+83: INTERLEAVE
+84: CHOICE
+85: ATTRIBUTE "table:end-cell-address",
+86: REF 'cellAddress',
+87: DATA 'string',
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "table:end-x",
+86: REF 'coordinate',
+87: REF 'length',
+88: DATA 'string',
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "table:end-y",
+86: REF 'coordinate',
+87: REF 'length',
+88: DATA 'string',
+85: EPSILON
+84: CHOICE
+85: ATTRIBUTE "table:table-background",
+86: REF 'boolean',
+87: CHOICE
+88: VALUE 'true',
+88: VALUE 'false',
+85: EPSILON
+84: REF 'common-text-anchor-attlist',
+85: INTERLEAVE
+86: CHOICE
+87: ATTRIBUTE "text:anchor-type",
+88: CHOICE
+89: VALUE 'page',
+89: VALUE 'frame',
+89: VALUE 'paragraph',
+89: VALUE 'char',
+89: VALUE 'as-char',
+87: EPSILON
+86: CHOICE
+87: ATTRIBUTE "text:anchor-page-number",
+88: REF 'positiveInteger',
+89: DATA 'positiveInteger',
+87: EPSILON
+80: REF 'common-draw-text-style-name-attlist',
+81: CHOICE
+82: ATTRIBUTE "draw:text-style-name",
+83: REF 'styleNameRef',
+84: CHOICE
+85: DATA 'NCName',
+85: EPSILON
+82: EPSILON
+78: CHOICE
+79: REF 'dc-creator',
+79: EPSILON
+78: CHOICE
+79: REF 'dc-date',
+79: EPSILON
+78: CHOICE
+79: REF 'meta-date-string',
+80: ELEMENT "meta:date-string",
+81: REF 'string',
+82: DATA 'string',
+79: EPSILON
+78: CHOICE
+79: ONEOREMORE
+80: CHOICE
+81: REF 'text-p',
+81: REF 'text-list',
+79: EPSILON
+75: EPSILON
+74: CHOICE
+75: REF 'table-detective',
+76: ELEMENT "table:detective",
+77: SEQUENCE
+78: CHOICE
+79: ONEOREMORE
+80: REF 'table-highlighted-range',
+81: ELEMENT "table:highlighted-range",
+82: CHOICE
+83: REF 'table-highlighted-range-attlist',
+84: INTERLEAVE
+85: CHOICE
+86: ATTRIBUTE "table:cell-range-address",
+87: REF 'cellRangeAddress',
+88: CHOICE
+89: DATA 'string',
+89: DATA 'string',
+89: DATA 'string',
+86: EPSILON
+85: ATTRIBUTE "table:direction",
+86: CHOICE
+87: VALUE 'from-another-table',
+87: VALUE 'to-another-table',
+87: VALUE 'from-same-table',
+85: CHOICE
+86: ATTRIBUTE "table:contains-error",
+87: REF 'boolean',
+88: CHOICE
+89: VALUE 'true',
+89: VALUE 'false',
+86: EPSILON
+83: REF 'table-highlighted-range-attlist-invalid',
+84: ATTRIBUTE "table:marked-invalid",
+85: REF 'boolean',
+86: CHOICE
+87: VALUE 'true',
+87: VALUE 'false',
+79: EPSILON
+78: CHOICE
+79: ONEOREMORE
+80: REF 'table-operation',
+81: ELEMENT "table:operation",
+82: REF 'table-operation-attlist',
+83: INTERLEAVE
+84: ATTRIBUTE "table:name",
+85: CHOICE
+86: VALUE 'trace-dependents',
+86: VALUE 'remove-dependents',
+86: VALUE 'trace-precedents',
+86: VALUE 'remove-precedents',
+86: VALUE 'trace-errors',
+84: ATTRIBUTE "table:index",
+85: REF 'nonNegativeInteger',
+86: DATA 'nonNegativeInteger',
+79: EPSILON
+75: EPSILON
+74: CHOICE
+75: ONEOREMORE
+76: REF 'text-content',
+77: CHOICE
+78: REF 'text-h',
+78: REF 'text-p',
+78: REF 'text-list',
+78: REF 'text-numbered-paragraph',
+78: REF 'table-table',
+78: REF 'text-section',
+78: REF 'text-soft-page-break',
+78: REF 'text-table-of-content',
+78: REF 'text-illustration-index',
+78: REF 'text-table-index',
+78: REF 'text-object-index',
+78: REF 'text-user-index',
+78: REF 'text-alphabetical-index',
+78: REF 'text-bibliography',
+78: REF 'shape',
+79: CHOICE
+80: REF 'shape-instance',
+81: CHOICE
+82: REF 'draw-rect',
+82: REF 'draw-line',
+82: REF 'draw-polyline',
+82: REF 'draw-polygon',
+82: REF 'draw-regular-polygon',
+82: REF 'draw-path',
+82: REF 'draw-circle',
+82: REF 'draw-ellipse',
+82: REF 'draw-g',
+82: REF 'draw-page-thumbnail',
+82: REF 'draw-frame',
+82: REF 'draw-measure',
+82: REF 'draw-caption',
+82: REF 'draw-connector',
+82: REF 'draw-control',
+82: REF 'dr3d-scene',
+82: REF 'draw-custom-shape',
+80: REF 'draw-a',
+78: REF 'change-marks',
+79: CHOICE
+75: EPSILON
+69: REF 'table-covered-table-cell',
+70: ELEMENT "table:covered-table-cell",
+71: SEQUENCE
+72: REF 'table-table-cell-attlist',
+73: INTERLEAVE
+74: CHOICE
+75: ATTRIBUTE "table:number-columns-repeated",
+76: REF 'positiveInteger',
+77: DATA 'positiveInteger',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:style-name",
+76: REF 'styleNameRef',
+77: CHOICE
+78: DATA 'NCName',
+78: EPSILON
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:content-validation-name",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:formula",
+76: REF 'string',
+77: DATA 'string',
+75: EPSILON
+74: CHOICE
+75: REF 'common-value-and-type-attlist',
+76: CHOICE
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'float',
+78: ATTRIBUTE "office:value",
+79: REF 'double',
+80: DATA 'double',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'percentage',
+78: ATTRIBUTE "office:value",
+79: REF 'double',
+80: DATA 'double',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'currency',
+78: ATTRIBUTE "office:value",
+79: REF 'double',
+80: DATA 'double',
+78: CHOICE
+79: ATTRIBUTE "office:currency",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'date',
+78: ATTRIBUTE "office:date-value",
+79: REF 'dateOrDateTime',
+80: CHOICE
+81: DATA 'date',
+81: DATA 'dateTime',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'time',
+78: ATTRIBUTE "office:time-value",
+79: REF 'duration',
+80: DATA 'duration',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'boolean',
+78: ATTRIBUTE "office:boolean-value",
+79: REF 'boolean',
+80: CHOICE
+81: VALUE 'true',
+81: VALUE 'false',
+77: SEQUENCE
+78: ATTRIBUTE "office:value-type",
+79: VALUE 'string',
+78: CHOICE
+79: ATTRIBUTE "office:string-value",
+80: REF 'string',
+81: DATA 'string',
+79: EPSILON
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:protect",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+74: CHOICE
+75: ATTRIBUTE "table:protected",
+76: REF 'boolean',
+77: CHOICE
+78: VALUE 'true',
+78: VALUE 'false',
+75: EPSILON
+74: CHOICE
+75: REF 'xml-id',
+76: ATTRIBUTE "xml:id",
+77: REF 'ID',
+78: DATA 'ID',
+75: EPSILON
+74: CHOICE
+75: REF 'common-in-content-meta-attlist',
+76: SEQUENCE
+77: ATTRIBUTE "xhtml:about",
+78: REF 'URIorSafeCURIE',
+79: CHOICE
+80: REF 'anyURI',
+81: DATA 'anyURI',
+80: REF 'SafeCURIE',
+81: DATA 'string',
+77: ATTRIBUTE "xhtml:property",
+78: REF 'CURIEs',
+79: LIST
+80: ONEOREMORE
+81: REF 'CURIE',
+82: DATA 'string',
+77: REF 'common-meta-literal-attlist',
+78: SEQUENCE
+79: CHOICE
+80: ATTRIBUTE "xhtml:datatype",
+81: REF 'CURIE',
+82: DATA 'string',
+80: EPSILON
+79: CHOICE
+80: ATTRIBUTE "xhtml:content",
+81: REF 'string',
+82: DATA 'string',
+80: EPSILON
+75: EPSILON
+72: REF 'table-table-cell-content',
+73: SEQUENCE
+74: CHOICE
+75: REF 'table-cell-range-source',
+75: EPSILON
+74: CHOICE
+75: REF 'office-annotation',
+75: EPSILON
+74: CHOICE
+75: REF 'table-detective',
+75: EPSILON
+74: CHOICE
+75: ONEOREMORE
+76: REF 'text-content',
+77: CHOICE
+78: REF 'text-h',
+78: REF 'text-p',
+78: REF 'text-list',
+78: REF 'text-numbered-paragraph',
+78: REF 'table-table',
+78: REF 'text-section',
+78: REF 'text-soft-page-break',
+78: REF 'text-table-of-content',
+78: REF 'text-illustration-index',
+78: REF 'text-table-index',
+78: REF 'text-object-index',
+78: REF 'text-user-index',
+78: REF 'text-alphabetical-index',
+78: REF 'text-bibliography',
+78: REF 'shape',
+79: CHOICE
+80: REF 'shape-instance',
+81: CHOICE
+82: REF 'draw-rect',
+82: REF 'draw-line',
+82: REF 'draw-polyline',
+82: REF 'draw-polygon',
+82: REF 'draw-regular-polygon',
+82: REF 'draw-path',
+82: REF 'draw-circle',
+82: REF 'draw-ellipse',
+82: REF 'draw-g',
+82: REF 'draw-page-thumbnail',
+82: REF 'draw-frame',
+82: REF 'draw-measure',
+82: REF 'draw-caption',
+82: REF 'draw-connector',
+82: REF 'draw-control',
+82: REF 'dr3d-scene',
+82: REF 'draw-custom-shape',
+80: REF 'draw-a',
+78: REF 'change-marks',
+79: CHOICE
+75: EPSILON
+60: ONEOREMORE
+61: SEQUENCE
+62: CHOICE
+63: REF 'text-soft-page-break',
+63: EPSILON
+62: REF 'table-table-row',
+58: CHOICE
+59: SEQUENCE
+60: REF 'table-table-header-rows',
+61: ELEMENT "table:table-header-rows",
+62: ONEOREMORE
+63: SEQUENCE
+64: CHOICE
+65: REF 'text-soft-page-break',
+65: EPSILON
+64: REF 'table-table-row',
+60: CHOICE
+61: REF 'table-rows',
+62: CHOICE
+63: REF 'table-table-rows',
+63: ONEOREMORE
+64: SEQUENCE
+65: CHOICE
+66: REF 'text-soft-page-break',
+66: EPSILON
+65: REF 'table-table-row',
+61: EPSILON
+59: EPSILON
+57: SEQUENCE
+58: REF 'table-table-header-rows',
+58: CHOICE
+59: REF 'table-rows',
+60: CHOICE
+61: REF 'table-table-rows',
+61: ONEOREMORE
+62: SEQUENCE
+63: CHOICE
+64: REF 'text-soft-page-break',
+64: EPSILON
+63: REF 'table-table-row',
+59: EPSILON
+49: REF 'table-rows-no-group',
+50: CHOICE
+51: SEQUENCE
+52: REF 'table-rows',
+53: CHOICE
+54: REF 'table-table-rows',
+54: ONEOREMORE
+55: SEQUENCE
+56: CHOICE
+57: REF 'text-soft-page-break',
+57: EPSILON
+56: REF 'table-table-row',
+52: CHOICE
+53: SEQUENCE
+54: REF 'table-table-header-rows',
+54: CHOICE
+55: REF 'table-rows',
+56: CHOICE
+57: REF 'table-table-rows',
+57: ONEOREMORE
+58: SEQUENCE
+59: CHOICE
+60: REF 'text-soft-page-break',
+60: EPSILON
+59: REF 'table-table-row',
+55: EPSILON
+53: EPSILON
+51: SEQUENCE
+52: REF 'table-table-header-rows',
+52: CHOICE
+53: REF 'table-rows',
+54: CHOICE
+55: REF 'table-table-rows',
+55: ONEOREMORE
+56: SEQUENCE
+57: CHOICE
+58: REF 'text-soft-page-break',
+58: EPSILON
+57: REF 'table-table-row',
+53: EPSILON
+46: CHOICE
+47: REF 'table-named-expressions',
+48: ELEMENT "table:named-expressions",
+49: CHOICE
+50: ONEOREMORE
+51: CHOICE
+52: REF 'table-named-range',
+53: ELEMENT "table:named-range",
+54: REF 'table-named-range-attlist',
+55: SEQUENCE
+56: ATTRIBUTE "table:name",
+57: REF 'string',
+58: DATA 'string',
+56: ATTRIBUTE "table:cell-range-address",
+57: REF 'cellRangeAddress',
+58: CHOICE
+59: DATA 'string',
+59: DATA 'string',
+59: DATA 'string',
+56: CHOICE
+57: ATTRIBUTE "table:base-cell-address",
+58: REF 'cellAddress',
+59: DATA 'string',
+57: EPSILON
+56: CHOICE
+57: ATTRIBUTE "table:range-usable-as",
+58: CHOICE
+59: VALUE 'none',
+59: LIST
+60: ONEOREMORE
+61: CHOICE
+62: VALUE 'print-range',
+62: VALUE 'filter',
+62: VALUE 'repeat-row',
+62: VALUE 'repeat-column',
+57: EPSILON
+52: REF 'table-named-expression',
+53: ELEMENT "table:named-expression",
+54: REF 'table-named-expression-attlist',
+55: SEQUENCE
+56: ATTRIBUTE "table:name",
+57: REF 'string',
+58: DATA 'string',
+56: ATTRIBUTE "table:expression",
+57: REF 'string',
+58: DATA 'string',
+56: CHOICE
+57: ATTRIBUTE "table:base-cell-address",
+58: REF 'cellAddress',
+59: DATA 'string',
+57: EPSILON
+50: EPSILON
+47: EPSILON
+43: REF 'text-section',
+43: REF 'text-soft-page-break',
+43: REF 'text-table-of-content',
+43: REF 'text-illustration-index',
+43: REF 'text-table-index',
+43: REF 'text-object-index',
+43: REF 'text-user-index',
+43: REF 'text-alphabetical-index',
+43: REF 'text-bibliography',
+43: REF 'shape',
+44: CHOICE
+45: REF 'shape-instance',
+46: CHOICE
+47: REF 'draw-rect',
+47: REF 'draw-line',
+47: REF 'draw-polyline',
+47: REF 'draw-polygon',
+47: REF 'draw-regular-polygon',
+47: REF 'draw-path',
+47: REF 'draw-circle',
+47: REF 'draw-ellipse',
+47: REF 'draw-g',
+47: REF 'draw-page-thumbnail',
+47: REF 'draw-frame',
+47: REF 'draw-measure',
+47: REF 'draw-caption',
+47: REF 'draw-connector',
+47: REF 'draw-control',
+47: REF 'dr3d-scene',
+47: REF 'draw-custom-shape',
+45: REF 'draw-a',
+43: REF 'change-marks',
+44: CHOICE
+40: EPSILON
+36: ELEMENT "text:ruby",
+37: SEQUENCE
+38: CHOICE
+39: ATTRIBUTE "text:style-name",
+40: REF 'styleNameRef',
+41: CHOICE
+42: DATA 'NCName',
+42: EPSILON
+39: EPSILON
+38: ELEMENT "text:ruby-base",
+39: CHOICE
+40: ONEOREMORE
+41: REF 'paragraph-content-or-hyperlink',
+42: CHOICE
+43: REF 'paragraph-content',
+44: CHOICE
+45: STRING
+43: REF 'text-a',
+40: EPSILON
+38: ELEMENT "text:ruby-text",
+39: SEQUENCE
+40: CHOICE
+41: ATTRIBUTE "text:style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+40: STRING
+36: REF 'office-annotation',
+36: REF 'office-annotation-end',
+37: ELEMENT "office:annotation-end",
+38: REF 'office-annotation-end-attlist',
+39: REF 'common-office-annotation-name-attlist',
+40: ATTRIBUTE "office:name",
+41: REF 'string',
+42: DATA 'string',
+36: REF 'change-marks',
+37: CHOICE
+36: REF 'shape',
+37: CHOICE
+38: REF 'shape-instance',
+39: CHOICE
+40: REF 'draw-rect',
+40: REF 'draw-line',
+40: REF 'draw-polyline',
+40: REF 'draw-polygon',
+40: REF 'draw-regular-polygon',
+40: REF 'draw-path',
+40: REF 'draw-circle',
+40: REF 'draw-ellipse',
+40: REF 'draw-g',
+40: REF 'draw-page-thumbnail',
+40: REF 'draw-frame',
+40: REF 'draw-measure',
+40: REF 'draw-caption',
+40: REF 'draw-connector',
+40: REF 'draw-control',
+40: REF 'dr3d-scene',
+40: REF 'draw-custom-shape',
+38: REF 'draw-a',
+36: ELEMENT "text:date",
+37: SEQUENCE
+38: REF 'text-date-attlist',
+39: INTERLEAVE
+40: REF 'common-field-fixed-attlist',
+41: CHOICE
+42: ATTRIBUTE "text:fixed",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+42: EPSILON
+40: REF 'common-field-data-style-name-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:data-style-name",
+43: REF 'styleNameRef',
+44: CHOICE
+45: DATA 'NCName',
+45: EPSILON
+42: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:date-value",
+42: REF 'dateOrDateTime',
+43: CHOICE
+44: DATA 'date',
+44: DATA 'dateTime',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:date-adjust",
+42: REF 'duration',
+43: DATA 'duration',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:time",
+37: SEQUENCE
+38: REF 'text-time-attlist',
+39: INTERLEAVE
+40: REF 'common-field-fixed-attlist',
+41: CHOICE
+42: ATTRIBUTE "text:fixed",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+42: EPSILON
+40: REF 'common-field-data-style-name-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:data-style-name",
+43: REF 'styleNameRef',
+44: CHOICE
+45: DATA 'NCName',
+45: EPSILON
+42: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:time-value",
+42: REF 'timeOrDateTime',
+43: CHOICE
+44: DATA 'time',
+44: DATA 'dateTime',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:time-adjust",
+42: REF 'duration',
+43: DATA 'duration',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:page-number",
+37: SEQUENCE
+38: REF 'text-page-number-attlist',
+39: INTERLEAVE
+40: REF 'common-field-num-format-attlist',
+41: CHOICE
+42: REF 'common-num-format-attlist',
+43: CHOICE
+44: ATTRIBUTE "style:num-format",
+45: CHOICE
+46: VALUE '1',
+46: VALUE 'i',
+46: VALUE 'I',
+46: REF 'string',
+47: DATA 'string',
+46: EPSILON
+44: SEQUENCE
+45: ATTRIBUTE "style:num-format",
+46: CHOICE
+47: VALUE 'a',
+47: VALUE 'A',
+45: REF 'style-num-letter-sync-attlist',
+46: CHOICE
+47: ATTRIBUTE "style:num-letter-sync",
+48: REF 'boolean',
+49: CHOICE
+50: VALUE 'true',
+50: VALUE 'false',
+47: EPSILON
+44: EPSILON
+42: EPSILON
+40: REF 'common-field-fixed-attlist',
+41: CHOICE
+42: ATTRIBUTE "text:fixed",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+42: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:page-adjust",
+42: REF 'integer',
+43: DATA 'integer',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:select-page",
+42: CHOICE
+43: VALUE 'previous',
+43: VALUE 'current',
+43: VALUE 'next',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:page-continuation",
+37: SEQUENCE
+38: REF 'text-page-continuation-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:select-page",
+41: CHOICE
+42: VALUE 'previous',
+42: VALUE 'next',
+40: CHOICE
+41: ATTRIBUTE "text:string-value",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:sender-firstname",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-lastname",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-initials",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-title",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-position",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-email",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-phone-private",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-fax",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-company",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-phone-work",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-street",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-city",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-postal-code",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-country",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sender-state-or-province",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:author-name",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:author-initials",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:chapter",
+37: SEQUENCE
+38: REF 'text-chapter-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:display",
+41: CHOICE
+42: VALUE 'name',
+42: VALUE 'number',
+42: VALUE 'number-and-name',
+42: VALUE 'plain-number-and-name',
+42: VALUE 'plain-number',
+40: ATTRIBUTE "text:outline-level",
+41: REF 'nonNegativeInteger',
+42: DATA 'nonNegativeInteger',
+38: STRING
+36: ELEMENT "text:file-name",
+37: SEQUENCE
+38: REF 'text-file-name-attlist',
+39: INTERLEAVE
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'full',
+43: VALUE 'path',
+43: VALUE 'name',
+43: VALUE 'name-and-extension',
+41: EPSILON
+40: REF 'common-field-fixed-attlist',
+41: CHOICE
+42: ATTRIBUTE "text:fixed",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+42: EPSILON
+38: STRING
+36: ELEMENT "text:template-name",
+37: SEQUENCE
+38: REF 'text-template-name-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:display",
+41: CHOICE
+42: VALUE 'full',
+42: VALUE 'path',
+42: VALUE 'name',
+42: VALUE 'name-and-extension',
+42: VALUE 'area',
+42: VALUE 'title',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:sheet-name",
+37: STRING
+36: ELEMENT "text:variable-set",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-name-attlist',
+40: ATTRIBUTE "text:name",
+41: REF 'variableName',
+42: DATA 'string',
+39: REF 'common-field-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:formula",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: REF 'common-value-and-type-attlist',
+40: CHOICE
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'float',
+42: ATTRIBUTE "office:value",
+43: REF 'double',
+44: DATA 'double',
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'percentage',
+42: ATTRIBUTE "office:value",
+43: REF 'double',
+44: DATA 'double',
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'currency',
+42: ATTRIBUTE "office:value",
+43: REF 'double',
+44: DATA 'double',
+42: CHOICE
+43: ATTRIBUTE "office:currency",
+44: REF 'string',
+45: DATA 'string',
+43: EPSILON
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'date',
+42: ATTRIBUTE "office:date-value",
+43: REF 'dateOrDateTime',
+44: CHOICE
+45: DATA 'date',
+45: DATA 'dateTime',
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'time',
+42: ATTRIBUTE "office:time-value",
+43: REF 'duration',
+44: DATA 'duration',
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'boolean',
+42: ATTRIBUTE "office:boolean-value",
+43: REF 'boolean',
+44: CHOICE
+45: VALUE 'true',
+45: VALUE 'false',
+41: SEQUENCE
+42: ATTRIBUTE "office:value-type",
+43: VALUE 'string',
+42: CHOICE
+43: ATTRIBUTE "office:string-value",
+44: REF 'string',
+45: DATA 'string',
+43: EPSILON
+39: REF 'common-field-display-value-none-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'value',
+43: VALUE 'none',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:variable-get",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-name-attlist',
+40: ATTRIBUTE "text:name",
+41: REF 'variableName',
+42: DATA 'string',
+39: REF 'common-field-display-value-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'value',
+43: VALUE 'formula',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:variable-input",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-name-attlist',
+40: ATTRIBUTE "text:name",
+41: REF 'variableName',
+42: DATA 'string',
+39: REF 'common-field-description-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:description",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: REF 'common-value-type-attlist',
+40: ATTRIBUTE "office:value-type",
+41: REF 'valueType',
+42: CHOICE
+43: VALUE 'float',
+43: VALUE 'time',
+43: VALUE 'date',
+43: VALUE 'percentage',
+43: VALUE 'currency',
+43: VALUE 'boolean',
+43: VALUE 'string',
+39: REF 'common-field-display-value-none-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'value',
+43: VALUE 'none',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:user-field-get",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-name-attlist',
+40: ATTRIBUTE "text:name",
+41: REF 'variableName',
+42: DATA 'string',
+39: REF 'common-field-display-value-formula-none-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'value',
+43: VALUE 'formula',
+43: VALUE 'none',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:user-field-input",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-name-attlist',
+40: ATTRIBUTE "text:name",
+41: REF 'variableName',
+42: DATA 'string',
+39: REF 'common-field-description-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:description",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:sequence",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-name-attlist',
+40: ATTRIBUTE "text:name",
+41: REF 'variableName',
+42: DATA 'string',
+39: REF 'common-field-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:formula",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: REF 'common-field-num-format-attlist',
+40: CHOICE
+41: REF 'common-num-format-attlist',
+42: CHOICE
+43: ATTRIBUTE "style:num-format",
+44: CHOICE
+45: VALUE '1',
+45: VALUE 'i',
+45: VALUE 'I',
+45: REF 'string',
+46: DATA 'string',
+45: EPSILON
+43: SEQUENCE
+44: ATTRIBUTE "style:num-format",
+45: CHOICE
+46: VALUE 'a',
+46: VALUE 'A',
+44: REF 'style-num-letter-sync-attlist',
+45: CHOICE
+46: ATTRIBUTE "style:num-letter-sync",
+47: REF 'boolean',
+48: CHOICE
+49: VALUE 'true',
+49: VALUE 'false',
+46: EPSILON
+43: EPSILON
+41: EPSILON
+39: REF 'text-sequence-ref-name',
+40: CHOICE
+41: ATTRIBUTE "text:ref-name",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:expression",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:formula",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: CHOICE
+40: REF 'common-value-and-type-attlist',
+41: CHOICE
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'float',
+43: ATTRIBUTE "office:value",
+44: REF 'double',
+45: DATA 'double',
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'percentage',
+43: ATTRIBUTE "office:value",
+44: REF 'double',
+45: DATA 'double',
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'currency',
+43: ATTRIBUTE "office:value",
+44: REF 'double',
+45: DATA 'double',
+43: CHOICE
+44: ATTRIBUTE "office:currency",
+45: REF 'string',
+46: DATA 'string',
+44: EPSILON
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'date',
+43: ATTRIBUTE "office:date-value",
+44: REF 'dateOrDateTime',
+45: CHOICE
+46: DATA 'date',
+46: DATA 'dateTime',
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'time',
+43: ATTRIBUTE "office:time-value",
+44: REF 'duration',
+45: DATA 'duration',
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'boolean',
+43: ATTRIBUTE "office:boolean-value",
+44: REF 'boolean',
+45: CHOICE
+46: VALUE 'true',
+46: VALUE 'false',
+42: SEQUENCE
+43: ATTRIBUTE "office:value-type",
+44: VALUE 'string',
+43: CHOICE
+44: ATTRIBUTE "office:string-value",
+45: REF 'string',
+46: DATA 'string',
+44: EPSILON
+40: EPSILON
+39: REF 'common-field-display-value-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'value',
+43: VALUE 'formula',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:text-input",
+37: SEQUENCE
+38: REF 'common-field-description-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:description",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:initial-creator",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:creation-date",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:date-value",
+41: REF 'dateOrDateTime',
+42: CHOICE
+43: DATA 'date',
+43: DATA 'dateTime',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:creation-time",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:time-value",
+41: REF 'timeOrDateTime',
+42: CHOICE
+43: DATA 'time',
+43: DATA 'dateTime',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:description",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:user-defined",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: ATTRIBUTE "text:name",
+40: REF 'string',
+41: DATA 'string',
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "office:value",
+41: REF 'double',
+42: DATA 'double',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "office:date-value",
+41: REF 'dateOrDateTime',
+42: CHOICE
+43: DATA 'date',
+43: DATA 'dateTime',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "office:time-value",
+41: REF 'duration',
+42: DATA 'duration',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "office:boolean-value",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "office:string-value",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:print-time",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:time-value",
+41: REF 'time',
+42: DATA 'time',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:print-date",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:date-value",
+41: REF 'date',
+42: DATA 'date',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:printed-by",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:title",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:subject",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:keywords",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:editing-cycles",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:editing-duration",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:duration",
+41: REF 'duration',
+42: DATA 'duration',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:modification-time",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:time-value",
+41: REF 'time',
+42: DATA 'time',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:modification-date",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-fixed-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:fixed",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:date-value",
+41: REF 'date',
+42: DATA 'date',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:creator",
+37: SEQUENCE
+38: REF 'common-field-fixed-attlist',
+39: CHOICE
+40: ATTRIBUTE "text:fixed",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:page-count", "text:paragraph-count", "text:word-count", "text:character-count", "text:table-count", "text:image-count", "text:object-count",
+37: SEQUENCE
+38: REF 'common-field-num-format-attlist',
+39: CHOICE
+40: REF 'common-num-format-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:num-format",
+43: CHOICE
+44: VALUE '1',
+44: VALUE 'i',
+44: VALUE 'I',
+44: REF 'string',
+45: DATA 'string',
+44: EPSILON
+42: SEQUENCE
+43: ATTRIBUTE "style:num-format",
+44: CHOICE
+45: VALUE 'a',
+45: VALUE 'A',
+43: REF 'style-num-letter-sync-attlist',
+44: CHOICE
+45: ATTRIBUTE "style:num-letter-sync",
+46: REF 'boolean',
+47: CHOICE
+48: VALUE 'true',
+48: VALUE 'false',
+45: EPSILON
+42: EPSILON
+40: EPSILON
+38: STRING
+36: ELEMENT "text:database-display",
+37: SEQUENCE
+38: REF 'text-database-display-attlist',
+39: INTERLEAVE
+40: REF 'common-field-database-table',
+41: SEQUENCE
+42: REF 'common-field-database-table-attlist',
+43: INTERLEAVE
+44: ATTRIBUTE "text:table-name",
+45: REF 'string',
+46: DATA 'string',
+44: CHOICE
+45: ATTRIBUTE "text:table-type",
+46: CHOICE
+47: VALUE 'table',
+47: VALUE 'query',
+47: VALUE 'command',
+45: EPSILON
+42: REF 'common-field-database-name',
+43: CHOICE
+44: ATTRIBUTE "text:database-name",
+45: REF 'string',
+46: DATA 'string',
+44: EPSILON
+44: REF 'form-connection-resource',
+40: REF 'common-field-data-style-name-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:data-style-name",
+43: REF 'styleNameRef',
+44: CHOICE
+45: DATA 'NCName',
+45: EPSILON
+42: EPSILON
+40: ATTRIBUTE "text:column-name",
+41: REF 'string',
+42: DATA 'string',
+38: STRING
+36: ELEMENT "text:database-next",
+37: REF 'text-database-next-attlist',
+38: INTERLEAVE
+39: REF 'common-field-database-table',
+40: SEQUENCE
+41: REF 'common-field-database-table-attlist',
+42: INTERLEAVE
+43: ATTRIBUTE "text:table-name",
+44: REF 'string',
+45: DATA 'string',
+43: CHOICE
+44: ATTRIBUTE "text:table-type",
+45: CHOICE
+46: VALUE 'table',
+46: VALUE 'query',
+46: VALUE 'command',
+44: EPSILON
+41: REF 'common-field-database-name',
+42: CHOICE
+43: ATTRIBUTE "text:database-name",
+44: REF 'string',
+45: DATA 'string',
+43: EPSILON
+43: REF 'form-connection-resource',
+39: CHOICE
+40: ATTRIBUTE "text:condition",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+36: ELEMENT "text:database-row-select",
+37: REF 'text-database-row-select-attlist',
+38: INTERLEAVE
+39: REF 'common-field-database-table',
+40: SEQUENCE
+41: REF 'common-field-database-table-attlist',
+42: INTERLEAVE
+43: ATTRIBUTE "text:table-name",
+44: REF 'string',
+45: DATA 'string',
+43: CHOICE
+44: ATTRIBUTE "text:table-type",
+45: CHOICE
+46: VALUE 'table',
+46: VALUE 'query',
+46: VALUE 'command',
+44: EPSILON
+41: REF 'common-field-database-name',
+42: CHOICE
+43: ATTRIBUTE "text:database-name",
+44: REF 'string',
+45: DATA 'string',
+43: EPSILON
+43: REF 'form-connection-resource',
+39: CHOICE
+40: ATTRIBUTE "text:condition",
+41: REF 'string',
+42: DATA 'string',
+40: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:row-number",
+41: REF 'nonNegativeInteger',
+42: DATA 'nonNegativeInteger',
+40: EPSILON
+36: ELEMENT "text:database-row-number",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-database-table',
+40: SEQUENCE
+41: REF 'common-field-database-table-attlist',
+42: INTERLEAVE
+43: ATTRIBUTE "text:table-name",
+44: REF 'string',
+45: DATA 'string',
+43: CHOICE
+44: ATTRIBUTE "text:table-type",
+45: CHOICE
+46: VALUE 'table',
+46: VALUE 'query',
+46: VALUE 'command',
+44: EPSILON
+41: REF 'common-field-database-name',
+42: CHOICE
+43: ATTRIBUTE "text:database-name",
+44: REF 'string',
+45: DATA 'string',
+43: EPSILON
+43: REF 'form-connection-resource',
+39: REF 'common-field-num-format-attlist',
+40: CHOICE
+41: REF 'common-num-format-attlist',
+42: CHOICE
+43: ATTRIBUTE "style:num-format",
+44: CHOICE
+45: VALUE '1',
+45: VALUE 'i',
+45: VALUE 'I',
+45: REF 'string',
+46: DATA 'string',
+45: EPSILON
+43: SEQUENCE
+44: ATTRIBUTE "style:num-format",
+45: CHOICE
+46: VALUE 'a',
+46: VALUE 'A',
+44: REF 'style-num-letter-sync-attlist',
+45: CHOICE
+46: ATTRIBUTE "style:num-letter-sync",
+47: REF 'boolean',
+48: CHOICE
+49: VALUE 'true',
+49: VALUE 'false',
+46: EPSILON
+43: EPSILON
+41: EPSILON
+39: CHOICE
+40: ATTRIBUTE "text:value",
+41: REF 'nonNegativeInteger',
+42: DATA 'nonNegativeInteger',
+40: EPSILON
+38: STRING
+36: ELEMENT "text:database-name",
+37: SEQUENCE
+38: REF 'common-field-database-table',
+39: SEQUENCE
+40: REF 'common-field-database-table-attlist',
+41: INTERLEAVE
+42: ATTRIBUTE "text:table-name",
+43: REF 'string',
+44: DATA 'string',
+42: CHOICE
+43: ATTRIBUTE "text:table-type",
+44: CHOICE
+45: VALUE 'table',
+45: VALUE 'query',
+45: VALUE 'command',
+43: EPSILON
+40: REF 'common-field-database-name',
+41: CHOICE
+42: ATTRIBUTE "text:database-name",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+42: REF 'form-connection-resource',
+38: STRING
+36: ELEMENT "text:page-variable-set",
+37: SEQUENCE
+38: REF 'text-set-page-variable-attlist',
+39: INTERLEAVE
+40: CHOICE
+41: ATTRIBUTE "text:active",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:page-adjust",
+42: REF 'integer',
+43: DATA 'integer',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:page-variable-get",
+37: SEQUENCE
+38: REF 'text-get-page-variable-attlist',
+39: REF 'common-field-num-format-attlist',
+40: CHOICE
+41: REF 'common-num-format-attlist',
+42: CHOICE
+43: ATTRIBUTE "style:num-format",
+44: CHOICE
+45: VALUE '1',
+45: VALUE 'i',
+45: VALUE 'I',
+45: REF 'string',
+46: DATA 'string',
+45: EPSILON
+43: SEQUENCE
+44: ATTRIBUTE "style:num-format",
+45: CHOICE
+46: VALUE 'a',
+46: VALUE 'A',
+44: REF 'style-num-letter-sync-attlist',
+45: CHOICE
+46: ATTRIBUTE "style:num-letter-sync",
+47: REF 'boolean',
+48: CHOICE
+49: VALUE 'true',
+49: VALUE 'false',
+46: EPSILON
+43: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:placeholder",
+37: SEQUENCE
+38: REF 'text-placeholder-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:placeholder-type",
+41: CHOICE
+42: VALUE 'text',
+42: VALUE 'table',
+42: VALUE 'text-box',
+42: VALUE 'image',
+42: VALUE 'object',
+40: REF 'common-field-description-attlist',
+41: CHOICE
+42: ATTRIBUTE "text:description",
+43: REF 'string',
+44: DATA 'string',
+42: EPSILON
+38: STRING
+36: ELEMENT "text:conditional-text",
+37: SEQUENCE
+38: REF 'text-conditional-text-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:condition",
+41: REF 'string',
+42: DATA 'string',
+40: ATTRIBUTE "text:string-value-if-true",
+41: REF 'string',
+42: DATA 'string',
+40: ATTRIBUTE "text:string-value-if-false",
+41: REF 'string',
+42: DATA 'string',
+40: CHOICE
+41: ATTRIBUTE "text:current-value",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:hidden-text",
+37: SEQUENCE
+38: REF 'text-hidden-text-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:condition",
+41: REF 'string',
+42: DATA 'string',
+40: ATTRIBUTE "text:string-value",
+41: REF 'string',
+42: DATA 'string',
+40: CHOICE
+41: ATTRIBUTE "text:is-hidden",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:reference-ref", "text:bookmark-ref",
+37: INTERLEAVE
+38: REF 'text-common-ref-content',
+39: INTERLEAVE
+40: STRING
+40: CHOICE
+41: ATTRIBUTE "text:ref-name",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: REF 'text-bookmark-ref-content',
+39: CHOICE
+40: ATTRIBUTE "text:reference-format",
+41: CHOICE
+42: REF 'common-ref-format-values',
+43: CHOICE
+44: VALUE 'page',
+44: VALUE 'chapter',
+44: VALUE 'direction',
+44: VALUE 'text',
+42: VALUE 'number-no-superior',
+42: VALUE 'number-all-superior',
+42: VALUE 'number',
+40: EPSILON
+36: ELEMENT "text:note-ref",
+37: INTERLEAVE
+38: REF 'text-common-ref-content',
+39: INTERLEAVE
+40: STRING
+40: CHOICE
+41: ATTRIBUTE "text:ref-name",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: REF 'text-note-ref-content',
+39: INTERLEAVE
+40: CHOICE
+41: ATTRIBUTE "text:reference-format",
+42: REF 'common-ref-format-values',
+43: CHOICE
+44: VALUE 'page',
+44: VALUE 'chapter',
+44: VALUE 'direction',
+44: VALUE 'text',
+41: EPSILON
+40: REF 'text-note-class',
+41: ATTRIBUTE "text:note-class",
+42: CHOICE
+43: VALUE 'footnote',
+43: VALUE 'endnote',
+36: ELEMENT "text:sequence-ref",
+37: INTERLEAVE
+38: REF 'text-common-ref-content',
+39: INTERLEAVE
+40: STRING
+40: CHOICE
+41: ATTRIBUTE "text:ref-name",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+38: REF 'text-sequence-ref-content',
+39: CHOICE
+40: ATTRIBUTE "text:reference-format",
+41: CHOICE
+42: REF 'common-ref-format-values',
+43: CHOICE
+44: VALUE 'page',
+44: VALUE 'chapter',
+44: VALUE 'direction',
+44: VALUE 'text',
+42: VALUE 'category-and-value',
+42: VALUE 'caption',
+42: VALUE 'value',
+40: EPSILON
+36: ELEMENT "text:script",
+37: INTERLEAVE
+38: CHOICE
+39: SEQUENCE
+40: ATTRIBUTE "xlink:type",
+41: VALUE 'simple',
+40: ATTRIBUTE "xlink:href",
+41: REF 'anyIRI',
+42: DATA 'anyURI',
+39: STRING
+38: CHOICE
+39: ATTRIBUTE "script:language",
+40: REF 'string',
+41: DATA 'string',
+39: EPSILON
+36: ELEMENT "text:execute-macro",
+37: SEQUENCE
+38: CHOICE
+39: ATTRIBUTE "text:name",
+40: REF 'string',
+41: DATA 'string',
+39: EPSILON
+38: CHOICE
+39: REF 'office-event-listeners',
+39: EPSILON
+38: STRING
+36: ELEMENT "text:hidden-paragraph",
+37: SEQUENCE
+38: REF 'text-hidden-paragraph-attlist',
+39: INTERLEAVE
+40: ATTRIBUTE "text:condition",
+41: REF 'string',
+42: DATA 'string',
+40: CHOICE
+41: ATTRIBUTE "text:is-hidden",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+38: STRING
+36: ELEMENT "text:dde-connection",
+37: SEQUENCE
+38: ATTRIBUTE "text:connection-name",
+39: REF 'string',
+40: DATA 'string',
+38: STRING
+36: ELEMENT "text:measure",
+37: SEQUENCE
+38: ATTRIBUTE "text:kind",
+39: CHOICE
+40: VALUE 'value',
+40: VALUE 'unit',
+40: VALUE 'gap',
+38: STRING
+36: ELEMENT "text:table-formula",
+37: SEQUENCE
+38: INTERLEAVE
+39: REF 'common-field-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:formula",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: REF 'common-field-display-value-formula-attlist',
+40: CHOICE
+41: ATTRIBUTE "text:display",
+42: CHOICE
+43: VALUE 'value',
+43: VALUE 'formula',
+41: EPSILON
+39: REF 'common-field-data-style-name-attlist',
+40: CHOICE
+41: ATTRIBUTE "style:data-style-name",
+42: REF 'styleNameRef',
+43: CHOICE
+44: DATA 'NCName',
+44: EPSILON
+41: EPSILON
+38: STRING
+36: ELEMENT "text:meta-field",
+37: SEQUENCE
+38: REF 'text-meta-field-attlist',
+39: INTERLEAVE
+40: REF 'xml-id',
+41: ATTRIBUTE "xml:id",
+42: REF 'ID',
+43: DATA 'ID',
+40: REF 'common-field-data-style-name-attlist',
+41: CHOICE
+42: ATTRIBUTE "style:data-style-name",
+43: REF 'styleNameRef',
+44: CHOICE
+45: DATA 'NCName',
+45: EPSILON
+42: EPSILON
+38: CHOICE
+39: ONEOREMORE
+40: REF 'paragraph-content-or-hyperlink',
+41: CHOICE
+42: REF 'paragraph-content',
+43: CHOICE
+44: STRING
+42: REF 'text-a',
+39: EPSILON
+36: ELEMENT "text:toc-mark-start",
+37: REF 'text-toc-mark-start-attrs',
+38: SEQUENCE
+39: REF 'text-id',
+40: ATTRIBUTE "text:id",
+41: REF 'string',
+42: DATA 'string',
+39: REF 'text-outline-level',
+40: CHOICE
+41: ATTRIBUTE "text:outline-level",
+42: REF 'positiveInteger',
+43: DATA 'positiveInteger',
+41: EPSILON
+36: ELEMENT "text:toc-mark-end",
+37: REF 'text-id',
+38: ATTRIBUTE "text:id",
+39: REF 'string',
+40: DATA 'string',
+36: ELEMENT "text:toc-mark",
+37: SEQUENCE
+38: ATTRIBUTE "text:string-value",
+39: REF 'string',
+40: DATA 'string',
+38: REF 'text-outline-level',
+39: CHOICE
+40: ATTRIBUTE "text:outline-level",
+41: REF 'positiveInteger',
+42: DATA 'positiveInteger',
+40: EPSILON
+36: ELEMENT "text:user-index-mark-start",
+37: SEQUENCE
+38: REF 'text-id',
+39: ATTRIBUTE "text:id",
+40: REF 'string',
+41: DATA 'string',
+38: REF 'text-outline-level',
+39: CHOICE
+40: ATTRIBUTE "text:outline-level",
+41: REF 'positiveInteger',
+42: DATA 'positiveInteger',
+40: EPSILON
+38: REF 'text-index-name',
+39: ATTRIBUTE "text:index-name",
+40: REF 'string',
+41: DATA 'string',
+36: ELEMENT "text:user-index-mark-end",
+37: REF 'text-id',
+38: ATTRIBUTE "text:id",
+39: REF 'string',
+40: DATA 'string',
+36: ELEMENT "text:user-index-mark",
+37: SEQUENCE
+38: ATTRIBUTE "text:string-value",
+39: REF 'string',
+40: DATA 'string',
+38: REF 'text-outline-level',
+39: CHOICE
+40: ATTRIBUTE "text:outline-level",
+41: REF 'positiveInteger',
+42: DATA 'positiveInteger',
+40: EPSILON
+38: REF 'text-index-name',
+39: ATTRIBUTE "text:index-name",
+40: REF 'string',
+41: DATA 'string',
+36: ELEMENT "text:alphabetical-index-mark-start",
+37: SEQUENCE
+38: REF 'text-id',
+39: ATTRIBUTE "text:id",
+40: REF 'string',
+41: DATA 'string',
+38: REF 'text-alphabetical-index-mark-attrs',
+39: INTERLEAVE
+40: CHOICE
+41: ATTRIBUTE "text:key1",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:key2",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:string-value-phonetic",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:key1-phonetic",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:key2-phonetic",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:main-entry",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+36: ELEMENT "text:alphabetical-index-mark-end",
+37: REF 'text-id',
+38: ATTRIBUTE "text:id",
+39: REF 'string',
+40: DATA 'string',
+36: ELEMENT "text:alphabetical-index-mark",
+37: SEQUENCE
+38: ATTRIBUTE "text:string-value",
+39: REF 'string',
+40: DATA 'string',
+38: REF 'text-alphabetical-index-mark-attrs',
+39: INTERLEAVE
+40: CHOICE
+41: ATTRIBUTE "text:key1",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:key2",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:string-value-phonetic",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:key1-phonetic",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:key2-phonetic",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "text:main-entry",
+42: REF 'boolean',
+43: CHOICE
+44: VALUE 'true',
+44: VALUE 'false',
+41: EPSILON
+36: ELEMENT "text:bibliography-mark",
+37: SEQUENCE
+38: ATTRIBUTE "text:bibliography-type",
+39: REF 'text-bibliography-types',
+40: CHOICE
+41: VALUE 'article',
+41: VALUE 'book',
+41: VALUE 'booklet',
+41: VALUE 'conference',
+41: VALUE 'custom1',
+41: VALUE 'custom2',
+41: VALUE 'custom3',
+41: VALUE 'custom4',
+41: VALUE 'custom5',
+41: VALUE 'email',
+41: VALUE 'inbook',
+41: VALUE 'incollection',
+41: VALUE 'inproceedings',
+41: VALUE 'journal',
+41: VALUE 'manual',
+41: VALUE 'mastersthesis',
+41: VALUE 'misc',
+41: VALUE 'phdthesis',
+41: VALUE 'proceedings',
+41: VALUE 'techreport',
+41: VALUE 'unpublished',
+41: VALUE 'www',
+38: CHOICE
+39: ONEOREMORE
+40: ATTRIBUTE "text:identifier", "text:address", "text:annote", "text:author", "text:booktitle", "text:chapter", "text:edition", "text:editor", "text:howpublished", "text:institution", "text:journal", "text:month", "text:note", "text:number", "text:organizations", "text:pages", "text:publisher", "text:school", "text:series", "text:title", "text:report-type", "text:volume", "text:year", "text:url", "text:custom1", "text:custom2", "text:custom3", "text:custom4", "text:custom5", "text:isbn", "text:issn",
+41: REF 'string',
+42: DATA 'string',
+39: EPSILON
+38: STRING
+36: ELEMENT "presentation:header",
+37: EPSILON
+36: ELEMENT "presentation:footer",
+37: EPSILON
+36: ELEMENT "presentation:date-time",
+37: EPSILON
+34: REF 'text-a',
+31: EPSILON
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:label-position",
+27: REF 'labelPositions',
+28: CHOICE
+29: VALUE 'avoid-overlap',
+29: VALUE 'center',
+29: VALUE 'top',
+29: VALUE 'top-right',
+29: VALUE 'right',
+29: VALUE 'bottom-right',
+29: VALUE 'bottom',
+29: VALUE 'bottom-left',
+29: VALUE 'left',
+29: VALUE 'top-left',
+29: VALUE 'inside',
+29: VALUE 'outside',
+29: VALUE 'near-origin',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:label-position-negative",
+27: REF 'labelPositions',
+28: CHOICE
+29: VALUE 'avoid-overlap',
+29: VALUE 'center',
+29: VALUE 'top',
+29: VALUE 'top-right',
+29: VALUE 'right',
+29: VALUE 'bottom-right',
+29: VALUE 'bottom',
+29: VALUE 'bottom-left',
+29: VALUE 'left',
+29: VALUE 'top-left',
+29: VALUE 'inside',
+29: VALUE 'outside',
+29: VALUE 'near-origin',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:visible",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:auto-position",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:auto-size",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:mean-value",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-category",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'variance',
+28: VALUE 'standard-deviation',
+28: VALUE 'percentage',
+28: VALUE 'error-margin',
+28: VALUE 'constant',
+28: VALUE 'standard-error',
+28: VALUE 'cell-range',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-percentage",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-margin",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-lower-limit",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-upper-limit",
+27: REF 'double',
+28: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-upper-indicator",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-lower-indicator",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-lower-range",
+27: REF 'cellRangeAddressList',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:error-upper-range",
+27: REF 'cellRangeAddressList',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:series-source",
+27: CHOICE
+28: VALUE 'columns',
+28: VALUE 'rows',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:regression-type",
+27: CHOICE
+28: VALUE 'none',
+28: VALUE 'linear',
+28: VALUE 'logarithmic',
+28: VALUE 'exponential',
+28: VALUE 'power',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:axis-position",
+27: CHOICE
+28: VALUE 'start',
+28: VALUE 'end',
+28: REF 'double',
+29: DATA 'double',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:axis-label-position",
+27: CHOICE
+28: VALUE 'near-axis',
+28: VALUE 'near-axis-other-side',
+28: VALUE 'outside-start',
+28: VALUE 'outside-end',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:tick-mark-position",
+27: CHOICE
+28: VALUE 'at-labels',
+28: VALUE 'at-axis',
+28: VALUE 'at-labels-and-axis',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "chart:include-hidden-cells",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: REF 'style-chart-properties-elements',
+24: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'style-graphic-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-paragraph-properties',
+19: EPSILON
+18: CHOICE
+19: REF 'style-text-properties',
+19: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+18: ELEMENT "style:map",
+19: REF 'style-map-attlist',
+20: INTERLEAVE
+21: ATTRIBUTE "style:condition",
+22: REF 'string',
+23: DATA 'string',
+21: ATTRIBUTE "style:apply-style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: CHOICE
+22: ATTRIBUTE "style:base-cell-address",
+23: REF 'cellAddress',
+24: DATA 'string',
+22: EPSILON
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'text-list-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-number-style',
+13: ELEMENT "number:number-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+17: ELEMENT "number:text",
+18: STRING
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'any-number',
+18: CHOICE
+19: REF 'number-number',
+20: ELEMENT "number:number",
+21: SEQUENCE
+22: REF 'number-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:decimal-replacement",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:display-factor",
+26: REF 'double',
+27: DATA 'double',
+25: EPSILON
+22: REF 'common-decimal-places-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'number-embedded-text',
+25: ELEMENT "number:embedded-text",
+26: SEQUENCE
+27: REF 'number-embedded-text-attlist',
+28: ATTRIBUTE "number:position",
+29: REF 'integer',
+30: DATA 'integer',
+27: STRING
+23: EPSILON
+19: REF 'number-scientific-number',
+20: ELEMENT "number:scientific-number",
+21: SEQUENCE
+22: REF 'number-scientific-number-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:min-exponent-digits",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-decimal-places-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+19: REF 'number-fraction',
+20: ELEMENT "number:fraction",
+21: SEQUENCE
+22: REF 'number-fraction-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-numerator-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:min-denominator-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:denominator-value",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-number-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:min-integer-digits",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:grouping",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-currency-style',
+13: ELEMENT "number:currency-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-auto-reorder-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:automatic-order",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'number-and-text',
+18: SEQUENCE
+19: REF 'number-number',
+19: CHOICE
+20: REF 'number-text',
+20: EPSILON
+17: CHOICE
+18: REF 'currency-symbol-and-text',
+19: SEQUENCE
+20: REF 'number-currency-symbol',
+21: ELEMENT "number:currency-symbol",
+22: SEQUENCE
+23: REF 'number-currency-symbol-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "number:language",
+27: REF 'languageCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "number:country",
+27: REF 'countryCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "number:script",
+27: REF 'scriptCode',
+28: DATA 'token',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "number:rfc-language-tag",
+27: REF 'language',
+28: DATA 'language',
+26: EPSILON
+23: STRING
+20: CHOICE
+21: REF 'number-text',
+21: EPSILON
+18: EPSILON
+16: SEQUENCE
+17: REF 'currency-symbol-and-text',
+18: SEQUENCE
+19: REF 'number-currency-symbol',
+19: CHOICE
+20: REF 'number-text',
+20: EPSILON
+17: CHOICE
+18: REF 'number-and-text',
+19: SEQUENCE
+20: REF 'number-number',
+20: CHOICE
+21: REF 'number-text',
+21: EPSILON
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-percentage-style',
+13: ELEMENT "number:percentage-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: REF 'number-and-text',
+17: SEQUENCE
+18: REF 'number-number',
+18: CHOICE
+19: REF 'number-text',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-date-style',
+13: ELEMENT "number:date-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-auto-reorder-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:automatic-order",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: REF 'common-format-source-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:format-source",
+18: CHOICE
+19: VALUE 'fixed',
+19: VALUE 'language',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: ONEOREMORE
+16: SEQUENCE
+17: REF 'any-date',
+18: CHOICE
+19: REF 'number-day',
+20: ELEMENT "number:day",
+21: SEQUENCE
+22: REF 'number-day-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-month',
+20: ELEMENT "number:month",
+21: SEQUENCE
+22: REF 'number-month-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "number:textual",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:possessive-form",
+26: REF 'boolean',
+27: CHOICE
+28: VALUE 'true',
+28: VALUE 'false',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "number:style",
+26: CHOICE
+27: VALUE 'short',
+27: VALUE 'long',
+25: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-year',
+20: ELEMENT "number:year",
+21: SEQUENCE
+22: REF 'number-year-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-era',
+20: ELEMENT "number:era",
+21: SEQUENCE
+22: REF 'number-era-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-day-of-week',
+20: ELEMENT "number:day-of-week",
+21: SEQUENCE
+22: REF 'number-day-of-week-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-week-of-year',
+20: ELEMENT "number:week-of-year",
+21: REF 'common-calendar-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:calendar",
+24: CHOICE
+25: VALUE 'gregorian',
+25: VALUE 'gengou',
+25: VALUE 'ROC',
+25: VALUE 'hanja_yoil',
+25: VALUE 'hanja',
+25: VALUE 'hijri',
+25: VALUE 'jewish',
+25: VALUE 'buddhist',
+25: REF 'string',
+26: DATA 'string',
+23: EPSILON
+19: REF 'number-quarter',
+20: ELEMENT "number:quarter",
+21: SEQUENCE
+22: REF 'number-quarter-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+22: REF 'common-calendar-attlist',
+23: CHOICE
+24: ATTRIBUTE "number:calendar",
+25: CHOICE
+26: VALUE 'gregorian',
+26: VALUE 'gengou',
+26: VALUE 'ROC',
+26: VALUE 'hanja_yoil',
+26: VALUE 'hanja',
+26: VALUE 'hijri',
+26: VALUE 'jewish',
+26: VALUE 'buddhist',
+26: REF 'string',
+27: DATA 'string',
+24: EPSILON
+19: REF 'number-hours',
+20: ELEMENT "number:hours",
+21: REF 'number-hours-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:style",
+24: CHOICE
+25: VALUE 'short',
+25: VALUE 'long',
+23: EPSILON
+19: REF 'number-am-pm',
+20: ELEMENT "number:am-pm",
+21: EPSILON
+19: REF 'number-minutes',
+20: ELEMENT "number:minutes",
+21: REF 'number-minutes-attlist',
+22: CHOICE
+23: ATTRIBUTE "number:style",
+24: CHOICE
+25: VALUE 'short',
+25: VALUE 'long',
+23: EPSILON
+19: REF 'number-seconds',
+20: ELEMENT "number:seconds",
+21: REF 'number-seconds-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "number:style",
+25: CHOICE
+26: VALUE 'short',
+26: VALUE 'long',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "number:decimal-places",
+25: REF 'integer',
+26: DATA 'integer',
+24: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-time-style',
+13: ELEMENT "number:time-style",
+14: SEQUENCE
+15: REF 'number-time-style-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:truncate-on-overflow",
+18: REF 'boolean',
+19: CHOICE
+20: VALUE 'true',
+20: VALUE 'false',
+17: EPSILON
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: REF 'common-format-source-attlist',
+16: CHOICE
+17: ATTRIBUTE "number:format-source",
+18: CHOICE
+19: VALUE 'fixed',
+19: VALUE 'language',
+17: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: ONEOREMORE
+16: SEQUENCE
+17: REF 'any-time',
+18: CHOICE
+19: REF 'number-hours',
+19: REF 'number-am-pm',
+19: REF 'number-minutes',
+19: REF 'number-seconds',
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-boolean-style',
+13: ELEMENT "number:boolean-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: SEQUENCE
+17: REF 'number-boolean',
+18: ELEMENT "number:boolean",
+19: EPSILON
+17: CHOICE
+18: REF 'number-text',
+18: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-text-style',
+13: ELEMENT "number:text-style",
+14: SEQUENCE
+15: REF 'common-data-style-attlist',
+16: INTERLEAVE
+17: ATTRIBUTE "style:name",
+18: REF 'styleName',
+19: DATA 'NCName',
+17: CHOICE
+18: ATTRIBUTE "style:display-name",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:language",
+19: REF 'languageCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:script",
+19: REF 'scriptCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:rfc-language-tag",
+19: REF 'language',
+20: DATA 'language',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:title",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "style:volatile",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-format",
+19: REF 'string',
+20: DATA 'string',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-language",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-country",
+19: REF 'countryCode',
+20: DATA 'token',
+18: EPSILON
+17: CHOICE
+18: ATTRIBUTE "number:transliteration-style",
+19: CHOICE
+20: VALUE 'short',
+20: VALUE 'medium',
+20: VALUE 'long',
+18: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'number-text',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: SEQUENCE
+18: REF 'number-text-content',
+19: ELEMENT "number:text-content",
+20: EPSILON
+18: CHOICE
+19: REF 'number-text',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'style-map',
+16: EPSILON
+11: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-default-style',
+11: ELEMENT "style:default-style",
+12: REF 'style-style-content',
+13: CHOICE
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'text',
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'paragraph',
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'section',
+15: CHOICE
+16: REF 'style-section-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'ruby',
+15: CHOICE
+16: REF 'style-ruby-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table',
+15: CHOICE
+16: REF 'style-table-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-column',
+15: CHOICE
+16: REF 'style-table-column-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-row',
+15: CHOICE
+16: REF 'style-table-row-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'table-cell',
+15: CHOICE
+16: REF 'style-table-cell-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: CHOICE
+17: VALUE 'graphic',
+17: VALUE 'presentation',
+15: CHOICE
+16: REF 'style-graphic-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'drawing-page',
+15: CHOICE
+16: REF 'style-drawing-page-properties',
+16: EPSILON
+14: SEQUENCE
+15: ATTRIBUTE "style:family",
+16: VALUE 'chart',
+15: CHOICE
+16: REF 'style-chart-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-graphic-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-paragraph-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-text-properties',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'style-default-page-layout',
+10: ELEMENT "style:default-page-layout",
+11: REF 'style-page-layout-content',
+12: SEQUENCE
+13: CHOICE
+14: REF 'style-page-layout-properties',
+15: ELEMENT "style:page-layout-properties",
+16: REF 'style-page-layout-properties-content-strict',
+17: SEQUENCE
+18: REF 'style-page-layout-properties-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "fo:page-width",
+22: REF 'length',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "fo:page-height",
+22: REF 'length',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: REF 'common-num-format-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:num-format",
+24: CHOICE
+25: VALUE '1',
+25: VALUE 'i',
+25: VALUE 'I',
+25: REF 'string',
+26: DATA 'string',
+25: EPSILON
+23: SEQUENCE
+24: ATTRIBUTE "style:num-format",
+25: CHOICE
+26: VALUE 'a',
+26: VALUE 'A',
+24: REF 'style-num-letter-sync-attlist',
+25: CHOICE
+26: ATTRIBUTE "style:num-letter-sync",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: EPSILON
+21: EPSILON
+20: REF 'common-num-format-prefix-suffix-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "style:num-prefix",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:num-suffix",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:paper-tray-name",
+22: CHOICE
+23: VALUE 'default',
+23: REF 'string',
+24: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:print-orientation",
+22: CHOICE
+23: VALUE 'portrait',
+23: VALUE 'landscape',
+21: EPSILON
+20: REF 'common-horizontal-margin-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "fo:margin-left",
+24: CHOICE
+25: REF 'length',
+26: DATA 'string',
+25: REF 'percent',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:margin-right",
+24: CHOICE
+25: REF 'length',
+26: DATA 'string',
+25: REF 'percent',
+26: DATA 'string',
+23: EPSILON
+20: REF 'common-vertical-margin-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "fo:margin-top",
+24: CHOICE
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+25: REF 'percent',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:margin-bottom",
+24: CHOICE
+25: REF 'nonNegativeLength',
+26: DATA 'string',
+25: REF 'percent',
+26: DATA 'string',
+23: EPSILON
+20: REF 'common-margin-attlist',
+21: CHOICE
+22: ATTRIBUTE "fo:margin",
+23: CHOICE
+24: REF 'nonNegativeLength',
+25: DATA 'string',
+24: REF 'percent',
+25: DATA 'string',
+22: EPSILON
+20: REF 'common-border-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "fo:border",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:border-top",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:border-bottom",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:border-left",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:border-right",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+20: REF 'common-border-line-width-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "style:border-line-width",
+24: REF 'borderWidths',
+25: LIST
+26: SEQUENCE
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:border-line-width-top",
+24: REF 'borderWidths',
+25: LIST
+26: SEQUENCE
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:border-line-width-bottom",
+24: REF 'borderWidths',
+25: LIST
+26: SEQUENCE
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:border-line-width-left",
+24: REF 'borderWidths',
+25: LIST
+26: SEQUENCE
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "style:border-line-width-right",
+24: REF 'borderWidths',
+25: LIST
+26: SEQUENCE
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+27: REF 'positiveLength',
+28: DATA 'string',
+23: EPSILON
+20: REF 'common-padding-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "fo:padding",
+24: REF 'nonNegativeLength',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:padding-top",
+24: REF 'nonNegativeLength',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:padding-bottom",
+24: REF 'nonNegativeLength',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:padding-left",
+24: REF 'nonNegativeLength',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "fo:padding-right",
+24: REF 'nonNegativeLength',
+25: DATA 'string',
+23: EPSILON
+20: REF 'common-shadow-attlist',
+21: CHOICE
+22: ATTRIBUTE "style:shadow",
+23: REF 'shadowType',
+24: CHOICE
+25: VALUE 'none',
+25: REF 'string',
+26: DATA 'string',
+22: EPSILON
+20: REF 'common-background-color-attlist',
+21: CHOICE
+22: ATTRIBUTE "fo:background-color",
+23: CHOICE
+24: VALUE 'transparent',
+24: REF 'color',
+25: DATA 'string',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:register-truth-ref-style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:print",
+22: LIST
+23: CHOICE
+24: ONEOREMORE
+25: CHOICE
+26: VALUE 'headers',
+26: VALUE 'grid',
+26: VALUE 'annotations',
+26: VALUE 'objects',
+26: VALUE 'charts',
+26: VALUE 'drawings',
+26: VALUE 'formulas',
+26: VALUE 'zero-values',
+24: EPSILON
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:print-page-order",
+22: CHOICE
+23: VALUE 'ttb',
+23: VALUE 'ltr',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:first-page-number",
+22: CHOICE
+23: REF 'positiveInteger',
+24: DATA 'positiveInteger',
+23: VALUE 'continue',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:scale-to",
+22: REF 'percent',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:scale-to-pages",
+22: REF 'positiveInteger',
+23: DATA 'positiveInteger',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:table-centering",
+22: CHOICE
+23: VALUE 'horizontal',
+23: VALUE 'vertical',
+23: VALUE 'both',
+23: VALUE 'none',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:footnote-max-height",
+22: REF 'length',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-writing-mode-attlist',
+21: CHOICE
+22: ATTRIBUTE "style:writing-mode",
+23: CHOICE
+24: VALUE 'lr-tb',
+24: VALUE 'rl-tb',
+24: VALUE 'tb-rl',
+24: VALUE 'tb-lr',
+24: VALUE 'lr',
+24: VALUE 'rl',
+24: VALUE 'tb',
+24: VALUE 'page',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-mode",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'line',
+23: VALUE 'both',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-standard-mode",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-base-height",
+22: REF 'length',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-ruby-height",
+22: REF 'length',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-lines",
+22: REF 'positiveInteger',
+23: DATA 'positiveInteger',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-base-width",
+22: REF 'length',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-color",
+22: REF 'color',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-ruby-below",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-print",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:layout-grid-snap-to",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+18: REF 'style-page-layout-properties-elements',
+19: INTERLEAVE
+20: REF 'style-background-image',
+21: CHOICE
+20: REF 'style-columns',
+21: CHOICE
+20: REF 'style-footnote-sep',
+21: CHOICE
+22: ELEMENT "style:footnote-sep",
+23: REF 'style-footnote-sep-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "style:width",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:rel-width",
+27: REF 'percent',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:color",
+27: REF 'color',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:line-style",
+27: REF 'lineStyle',
+28: CHOICE
+29: VALUE 'none',
+29: VALUE 'solid',
+29: VALUE 'dotted',
+29: VALUE 'dash',
+29: VALUE 'long-dash',
+29: VALUE 'dot-dash',
+29: VALUE 'dot-dot-dash',
+29: VALUE 'wave',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:adjustment",
+27: CHOICE
+28: VALUE 'left',
+28: VALUE 'center',
+28: VALUE 'right',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:distance-before-sep",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:distance-after-sep",
+27: REF 'length',
+28: DATA 'string',
+26: EPSILON
+22: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'style-header-style',
+15: ELEMENT "style:header-style",
+16: CHOICE
+17: REF 'style-header-footer-properties',
+18: ELEMENT "style:header-footer-properties",
+19: REF 'style-header-footer-properties-content-strict',
+20: SEQUENCE
+21: REF 'style-header-footer-properties-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "svg:height",
+25: REF 'length',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "fo:min-height",
+25: REF 'length',
+26: DATA 'string',
+24: EPSILON
+23: REF 'common-horizontal-margin-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "fo:margin-left",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:margin-right",
+27: CHOICE
+28: REF 'length',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+23: REF 'common-vertical-margin-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "fo:margin-top",
+27: CHOICE
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:margin-bottom",
+27: CHOICE
+28: REF 'nonNegativeLength',
+29: DATA 'string',
+28: REF 'percent',
+29: DATA 'string',
+26: EPSILON
+23: REF 'common-margin-attlist',
+24: CHOICE
+25: ATTRIBUTE "fo:margin",
+26: CHOICE
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+27: REF 'percent',
+28: DATA 'string',
+25: EPSILON
+23: REF 'common-border-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "fo:border",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:border-top",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:border-bottom",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:border-left",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:border-right",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+23: REF 'common-border-line-width-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "style:border-line-width",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:border-line-width-top",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:border-line-width-bottom",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:border-line-width-left",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "style:border-line-width-right",
+27: REF 'borderWidths',
+28: LIST
+29: SEQUENCE
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+30: REF 'positiveLength',
+31: DATA 'string',
+26: EPSILON
+23: REF 'common-padding-attlist',
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "fo:padding",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:padding-top",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:padding-bottom",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:padding-left",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "fo:padding-right",
+27: REF 'nonNegativeLength',
+28: DATA 'string',
+26: EPSILON
+23: REF 'common-background-color-attlist',
+24: CHOICE
+25: ATTRIBUTE "fo:background-color",
+26: CHOICE
+27: VALUE 'transparent',
+27: REF 'color',
+28: DATA 'string',
+25: EPSILON
+23: REF 'common-shadow-attlist',
+24: CHOICE
+25: ATTRIBUTE "style:shadow",
+26: REF 'shadowType',
+27: CHOICE
+28: VALUE 'none',
+28: REF 'string',
+29: DATA 'string',
+25: EPSILON
+23: CHOICE
+24: ATTRIBUTE "style:dynamic-spacing",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: REF 'style-header-footer-properties-elements',
+22: REF 'style-background-image',
+23: CHOICE
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'style-footer-style',
+15: ELEMENT "style:footer-style",
+16: CHOICE
+17: REF 'style-header-footer-properties',
+17: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'text-outline-style',
+10: ELEMENT "text:outline-style",
+11: SEQUENCE
+12: REF 'text-outline-style-attr',
+13: ATTRIBUTE "style:name",
+14: REF 'styleName',
+15: DATA 'NCName',
+12: ONEOREMORE
+13: REF 'text-outline-level-style',
+14: ELEMENT "text:outline-level-style",
+15: SEQUENCE
+16: REF 'text-outline-level-style-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "text:level",
+19: REF 'positiveInteger',
+20: DATA 'positiveInteger',
+18: CHOICE
+19: ATTRIBUTE "text:style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: REF 'common-num-format-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:num-format",
+21: CHOICE
+22: VALUE '1',
+22: VALUE 'i',
+22: VALUE 'I',
+22: REF 'string',
+23: DATA 'string',
+22: EPSILON
+20: SEQUENCE
+21: ATTRIBUTE "style:num-format",
+22: CHOICE
+23: VALUE 'a',
+23: VALUE 'A',
+21: REF 'style-num-letter-sync-attlist',
+22: CHOICE
+23: ATTRIBUTE "style:num-letter-sync",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+20: EPSILON
+18: REF 'common-num-format-prefix-suffix-attlist',
+19: SEQUENCE
+20: CHOICE
+21: ATTRIBUTE "style:num-prefix",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:num-suffix",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "text:display-levels",
+20: REF 'positiveInteger',
+21: DATA 'positiveInteger',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "text:start-value",
+20: REF 'positiveInteger',
+21: DATA 'positiveInteger',
+19: EPSILON
+16: CHOICE
+17: REF 'style-list-level-properties',
+17: EPSILON
+16: CHOICE
+17: REF 'style-text-properties',
+17: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'text-notes-configuration',
+9: EPSILON
+8: CHOICE
+9: REF 'text-bibliography-configuration',
+10: ELEMENT "text:bibliography-configuration",
+11: SEQUENCE
+12: REF 'text-bibliography-configuration-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "text:prefix",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:suffix",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:numbered-entries",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:sort-by-position",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "fo:language",
+16: REF 'languageCode',
+17: DATA 'token',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "fo:country",
+16: REF 'countryCode',
+17: DATA 'token',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "fo:script",
+16: REF 'scriptCode',
+17: DATA 'token',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "style:rfc-language-tag",
+16: REF 'language',
+17: DATA 'language',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:sort-algorithm",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+12: CHOICE
+13: ONEOREMORE
+14: REF 'text-sort-key',
+15: ELEMENT "text:sort-key",
+16: REF 'text-sort-key-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "text:key",
+19: CHOICE
+20: VALUE 'address',
+20: VALUE 'annote',
+20: VALUE 'author',
+20: VALUE 'bibliography-type',
+20: VALUE 'booktitle',
+20: VALUE 'chapter',
+20: VALUE 'custom1',
+20: VALUE 'custom2',
+20: VALUE 'custom3',
+20: VALUE 'custom4',
+20: VALUE 'custom5',
+20: VALUE 'edition',
+20: VALUE 'editor',
+20: VALUE 'howpublished',
+20: VALUE 'identifier',
+20: VALUE 'institution',
+20: VALUE 'isbn',
+20: VALUE 'issn',
+20: VALUE 'journal',
+20: VALUE 'month',
+20: VALUE 'note',
+20: VALUE 'number',
+20: VALUE 'organizations',
+20: VALUE 'pages',
+20: VALUE 'publisher',
+20: VALUE 'report-type',
+20: VALUE 'school',
+20: VALUE 'series',
+20: VALUE 'title',
+20: VALUE 'url',
+20: VALUE 'volume',
+20: VALUE 'year',
+18: CHOICE
+19: ATTRIBUTE "text:sort-ascending",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'text-linenumbering-configuration',
+10: ELEMENT "text:linenumbering-configuration",
+11: SEQUENCE
+12: REF 'text-linenumbering-configuration-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "text:number-lines",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: REF 'common-num-format-attlist',
+16: CHOICE
+17: ATTRIBUTE "style:num-format",
+18: CHOICE
+19: VALUE '1',
+19: VALUE 'i',
+19: VALUE 'I',
+19: REF 'string',
+20: DATA 'string',
+19: EPSILON
+17: SEQUENCE
+18: ATTRIBUTE "style:num-format",
+19: CHOICE
+20: VALUE 'a',
+20: VALUE 'A',
+18: REF 'style-num-letter-sync-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:num-letter-sync",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+17: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:style-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:increment",
+16: REF 'nonNegativeInteger',
+17: DATA 'nonNegativeInteger',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:number-position",
+16: CHOICE
+17: VALUE 'left',
+17: VALUE 'right',
+17: VALUE 'inner',
+17: VALUE 'outer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:offset",
+16: REF 'nonNegativeLength',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:count-empty-lines",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:count-in-text-boxes",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "text:restart-on-page",
+16: REF 'boolean',
+17: CHOICE
+18: VALUE 'true',
+18: VALUE 'false',
+15: EPSILON
+12: CHOICE
+13: REF 'text-linenumbering-separator',
+14: ELEMENT "text:linenumbering-separator",
+15: SEQUENCE
+16: CHOICE
+17: ATTRIBUTE "text:increment",
+18: REF 'nonNegativeInteger',
+19: DATA 'nonNegativeInteger',
+17: EPSILON
+16: STRING
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-gradient',
+11: ELEMENT "draw:gradient",
+12: SEQUENCE
+13: REF 'common-draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:name",
+17: REF 'styleName',
+18: DATA 'NCName',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "draw:style",
+16: REF 'gradient-style',
+17: CHOICE
+18: VALUE 'linear',
+18: VALUE 'axial',
+18: VALUE 'radial',
+18: VALUE 'ellipsoid',
+18: VALUE 'square',
+18: VALUE 'rectangular',
+15: CHOICE
+16: ATTRIBUTE "draw:cx",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:cy",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:angle",
+17: REF 'angle',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:border",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+13: REF 'draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:start-color",
+17: REF 'color',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:end-color",
+17: REF 'color',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:start-intensity",
+17: REF 'zeroToHundredPercent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:end-intensity",
+17: REF 'zeroToHundredPercent',
+18: DATA 'string',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'svg-linearGradient',
+11: ELEMENT "svg:linearGradient",
+12: SEQUENCE
+13: REF 'common-svg-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "svg:gradientUnits",
+17: VALUE 'objectBoundingBox',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:gradientTransform",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:spreadMethod",
+17: CHOICE
+18: VALUE 'pad',
+18: VALUE 'reflect',
+18: VALUE 'repeat',
+16: EPSILON
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:x1",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:y1",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:x2",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:y2",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'svg-stop',
+16: ELEMENT "svg:stop",
+17: SEQUENCE
+18: ATTRIBUTE "svg:offset",
+19: CHOICE
+20: REF 'double',
+21: DATA 'double',
+20: REF 'percent',
+21: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "svg:stop-color",
+20: REF 'color',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "svg:stop-opacity",
+20: REF 'double',
+21: DATA 'double',
+19: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'svg-radialGradient',
+11: ELEMENT "svg:radialGradient",
+12: SEQUENCE
+13: REF 'common-svg-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "svg:gradientUnits",
+17: VALUE 'objectBoundingBox',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:gradientTransform",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:spreadMethod",
+17: CHOICE
+18: VALUE 'pad',
+18: VALUE 'reflect',
+18: VALUE 'repeat',
+16: EPSILON
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:cx",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:cy",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:r",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:fx",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "svg:fy",
+15: CHOICE
+16: REF 'coordinate',
+17: REF 'length',
+18: DATA 'string',
+16: REF 'percent',
+17: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'svg-stop',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-hatch',
+11: ELEMENT "draw:hatch",
+12: REF 'draw-hatch-attlist',
+13: INTERLEAVE
+14: ATTRIBUTE "draw:name",
+15: REF 'styleName',
+16: DATA 'NCName',
+14: CHOICE
+15: ATTRIBUTE "draw:display-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: ATTRIBUTE "draw:style",
+15: CHOICE
+16: VALUE 'single',
+16: VALUE 'double',
+16: VALUE 'triple',
+14: CHOICE
+15: ATTRIBUTE "draw:color",
+16: REF 'color',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:distance",
+16: REF 'length',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:rotation",
+16: REF 'angle',
+17: DATA 'string',
+15: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-fill-image',
+11: ELEMENT "draw:fill-image",
+12: SEQUENCE
+13: REF 'draw-fill-image-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:width",
+17: REF 'length',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "svg:height",
+17: REF 'length',
+18: DATA 'string',
+16: EPSILON
+13: ATTRIBUTE "xlink:type",
+14: VALUE 'simple',
+13: ATTRIBUTE "xlink:href",
+14: REF 'anyIRI',
+15: DATA 'anyURI',
+13: CHOICE
+14: ATTRIBUTE "xlink:show",
+15: VALUE 'embed',
+14: EPSILON
+13: CHOICE
+14: ATTRIBUTE "xlink:actuate",
+15: VALUE 'onLoad',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-marker',
+11: ELEMENT "draw:marker",
+12: SEQUENCE
+13: REF 'draw-marker-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "draw:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+13: REF 'common-draw-viewbox-attlist',
+14: ATTRIBUTE "svg:viewBox",
+15: LIST
+16: SEQUENCE
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+17: REF 'integer',
+18: DATA 'integer',
+13: REF 'common-draw-path-data-attlist',
+14: ATTRIBUTE "svg:d",
+15: REF 'pathData',
+16: DATA 'string',
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-stroke-dash',
+11: ELEMENT "draw:stroke-dash",
+12: REF 'draw-stroke-dash-attlist',
+13: INTERLEAVE
+14: ATTRIBUTE "draw:name",
+15: REF 'styleName',
+16: DATA 'NCName',
+14: CHOICE
+15: ATTRIBUTE "draw:display-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:style",
+16: CHOICE
+17: VALUE 'rect',
+17: VALUE 'round',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:dots1",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:dots1-length",
+16: CHOICE
+17: REF 'length',
+18: DATA 'string',
+17: REF 'percent',
+18: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:dots2",
+16: REF 'integer',
+17: DATA 'integer',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:dots2-length",
+16: CHOICE
+17: REF 'length',
+18: DATA 'string',
+17: REF 'percent',
+18: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:distance",
+16: CHOICE
+17: REF 'length',
+18: DATA 'string',
+17: REF 'percent',
+18: DATA 'string',
+15: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'draw-opacity',
+11: ELEMENT "draw:opacity",
+12: SEQUENCE
+13: REF 'common-draw-gradient-attlist',
+14: INTERLEAVE
+15: CHOICE
+16: ATTRIBUTE "draw:name",
+17: REF 'styleName',
+18: DATA 'NCName',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "draw:style",
+16: REF 'gradient-style',
+17: CHOICE
+18: VALUE 'linear',
+18: VALUE 'axial',
+18: VALUE 'radial',
+18: VALUE 'ellipsoid',
+18: VALUE 'square',
+18: VALUE 'rectangular',
+15: CHOICE
+16: ATTRIBUTE "draw:cx",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:cy",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:angle",
+17: REF 'angle',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:border",
+17: REF 'percent',
+18: DATA 'string',
+16: EPSILON
+13: REF 'draw-opacity-attlist',
+14: SEQUENCE
+15: CHOICE
+16: ATTRIBUTE "draw:start",
+17: REF 'zeroToHundredPercent',
+18: DATA 'string',
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:end",
+17: REF 'zeroToHundredPercent',
+18: DATA 'string',
+16: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-presentation-page-layout',
+11: ELEMENT "style:presentation-page-layout",
+12: SEQUENCE
+13: ATTRIBUTE "style:name",
+14: REF 'styleName',
+15: DATA 'NCName',
+13: CHOICE
+14: ATTRIBUTE "style:display-name",
+15: REF 'string',
+16: DATA 'string',
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'presentation-placeholder',
+16: ELEMENT "presentation:placeholder",
+17: SEQUENCE
+18: ATTRIBUTE "presentation:object",
+19: REF 'presentation-classes',
+20: CHOICE
+21: VALUE 'title',
+21: VALUE 'outline',
+21: VALUE 'subtitle',
+21: VALUE 'text',
+21: VALUE 'graphic',
+21: VALUE 'object',
+21: VALUE 'chart',
+21: VALUE 'table',
+21: VALUE 'orgchart',
+21: VALUE 'page',
+21: VALUE 'notes',
+21: VALUE 'handout',
+21: VALUE 'header',
+21: VALUE 'footer',
+21: VALUE 'date-time',
+21: VALUE 'page-number',
+18: ATTRIBUTE "svg:x",
+19: CHOICE
+20: REF 'coordinate',
+21: REF 'length',
+22: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:y",
+19: CHOICE
+20: REF 'coordinate',
+21: REF 'length',
+22: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:width",
+19: CHOICE
+20: REF 'length',
+21: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+18: ATTRIBUTE "svg:height",
+19: CHOICE
+20: REF 'length',
+21: DATA 'string',
+20: REF 'percent',
+21: DATA 'string',
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'table-table-template',
+11: ELEMENT "table:table-template",
+12: SEQUENCE
+13: REF 'table-table-template-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "table:name",
+16: REF 'string',
+17: DATA 'string',
+15: ATTRIBUTE "table:first-row-start-column",
+16: REF 'rowOrCol',
+17: CHOICE
+18: VALUE 'row',
+18: VALUE 'column',
+15: ATTRIBUTE "table:first-row-end-column",
+16: REF 'rowOrCol',
+17: CHOICE
+18: VALUE 'row',
+18: VALUE 'column',
+15: ATTRIBUTE "table:last-row-start-column",
+16: REF 'rowOrCol',
+17: CHOICE
+18: VALUE 'row',
+18: VALUE 'column',
+15: ATTRIBUTE "table:last-row-end-column",
+16: REF 'rowOrCol',
+17: CHOICE
+18: VALUE 'row',
+18: VALUE 'column',
+13: CHOICE
+14: REF 'table-first-row',
+15: ELEMENT "table:first-row",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-last-row',
+15: ELEMENT "table:last-row",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-first-column',
+15: ELEMENT "table:first-column",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-last-column',
+15: ELEMENT "table:last-column",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: REF 'table-body',
+14: ELEMENT "table:body",
+15: REF 'common-table-template-attlist',
+16: SEQUENCE
+17: ATTRIBUTE "table:style-name",
+18: REF 'styleNameRef',
+19: CHOICE
+20: DATA 'NCName',
+20: EPSILON
+17: CHOICE
+18: ATTRIBUTE "table:paragraph-style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: EPSILON
+13: CHOICE
+14: REF 'table-even-rows',
+15: ELEMENT "table:even-rows",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-odd-rows',
+15: ELEMENT "table:odd-rows",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-even-columns',
+15: ELEMENT "table:even-columns",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-odd-columns',
+15: ELEMENT "table:odd-columns",
+16: REF 'common-table-template-attlist',
+17: SEQUENCE
+18: ATTRIBUTE "table:style-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:paragraph-style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-background',
+15: ELEMENT "table:background",
+16: REF 'table-background-attlist',
+17: ATTRIBUTE "table:style-name",
+18: REF 'styleNameRef',
+19: CHOICE
+20: DATA 'NCName',
+20: EPSILON
+14: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-automatic-styles',
+5: CHOICE
+6: ELEMENT "office:automatic-styles",
+7: INTERLEAVE
+8: REF 'styles',
+9: INTERLEAVE
+10: CHOICE
+11: ONEOREMORE
+12: REF 'style-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'text-list-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-number-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-currency-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-percentage-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-date-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-time-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-boolean-style',
+11: EPSILON
+10: CHOICE
+11: ONEOREMORE
+12: REF 'number-text-style',
+11: EPSILON
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-page-layout',
+11: ELEMENT "style:page-layout",
+12: SEQUENCE
+13: REF 'style-page-layout-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "style:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "style:page-usage",
+17: CHOICE
+18: VALUE 'all',
+18: VALUE 'left',
+18: VALUE 'right',
+18: VALUE 'mirrored',
+16: EPSILON
+13: REF 'style-page-layout-content',
+14: SEQUENCE
+15: CHOICE
+16: REF 'style-page-layout-properties',
+16: EPSILON
+15: CHOICE
+16: REF 'style-header-style',
+16: EPSILON
+15: CHOICE
+16: REF 'style-footer-style',
+16: EPSILON
+9: EPSILON
+6: EPSILON
+4: REF 'office-master-styles',
+5: CHOICE
+6: ELEMENT "office:master-styles",
+7: INTERLEAVE
+8: CHOICE
+9: ONEOREMORE
+10: REF 'style-master-page',
+11: ELEMENT "style:master-page",
+12: SEQUENCE
+13: REF 'style-master-page-attlist',
+14: INTERLEAVE
+15: ATTRIBUTE "style:name",
+16: REF 'styleName',
+17: DATA 'NCName',
+15: CHOICE
+16: ATTRIBUTE "style:display-name",
+17: REF 'string',
+18: DATA 'string',
+16: EPSILON
+15: ATTRIBUTE "style:page-layout-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: CHOICE
+16: ATTRIBUTE "draw:style-name",
+17: REF 'styleNameRef',
+18: CHOICE
+19: DATA 'NCName',
+19: EPSILON
+16: EPSILON
+15: CHOICE
+16: ATTRIBUTE "style:next-style-name",
+17: REF 'styleNameRef',
+18: CHOICE
+19: DATA 'NCName',
+19: EPSILON
+16: EPSILON
+13: CHOICE
+14: SEQUENCE
+15: REF 'style-header',
+16: ELEMENT "style:header",
+17: SEQUENCE
+18: REF 'common-style-header-footer-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:display",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+18: REF 'header-footer-content',
+19: CHOICE
+20: SEQUENCE
+21: REF 'text-tracked-changes',
+22: CHOICE
+23: ELEMENT "text:tracked-changes",
+24: SEQUENCE
+25: REF 'text-tracked-changes-attr',
+26: CHOICE
+27: ATTRIBUTE "text:track-changes",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-changed-region',
+28: ELEMENT "text:changed-region",
+29: SEQUENCE
+30: REF 'text-changed-region-attr',
+31: SEQUENCE
+32: REF 'xml-id',
+33: ATTRIBUTE "xml:id",
+34: REF 'ID',
+35: DATA 'ID',
+32: CHOICE
+33: ATTRIBUTE "text:id",
+34: REF 'NCName',
+35: DATA 'NCName',
+33: EPSILON
+30: REF 'text-changed-region-content',
+31: CHOICE
+32: ELEMENT "text:insertion",
+33: REF 'office-change-info',
+34: ELEMENT "office:change-info",
+35: SEQUENCE
+36: REF 'dc-creator',
+36: REF 'dc-date',
+36: CHOICE
+37: ONEOREMORE
+38: REF 'text-p',
+37: EPSILON
+32: ELEMENT "text:deletion",
+33: SEQUENCE
+34: REF 'office-change-info',
+34: CHOICE
+35: ONEOREMORE
+36: REF 'text-content',
+37: CHOICE
+38: REF 'text-h',
+38: REF 'text-p',
+38: REF 'text-list',
+38: REF 'text-numbered-paragraph',
+38: REF 'table-table',
+38: REF 'text-section',
+38: REF 'text-soft-page-break',
+38: REF 'text-table-of-content',
+38: REF 'text-illustration-index',
+38: REF 'text-table-index',
+38: REF 'text-object-index',
+38: REF 'text-user-index',
+38: REF 'text-alphabetical-index',
+38: REF 'text-bibliography',
+38: REF 'shape',
+39: CHOICE
+40: REF 'shape-instance',
+41: CHOICE
+42: REF 'draw-rect',
+42: REF 'draw-line',
+42: REF 'draw-polyline',
+42: REF 'draw-polygon',
+42: REF 'draw-regular-polygon',
+42: REF 'draw-path',
+42: REF 'draw-circle',
+42: REF 'draw-ellipse',
+42: REF 'draw-g',
+42: REF 'draw-page-thumbnail',
+42: REF 'draw-frame',
+42: REF 'draw-measure',
+42: REF 'draw-caption',
+42: REF 'draw-connector',
+42: REF 'draw-control',
+42: REF 'dr3d-scene',
+42: REF 'draw-custom-shape',
+40: REF 'draw-a',
+38: REF 'change-marks',
+39: CHOICE
+35: EPSILON
+32: ELEMENT "text:format-change",
+33: REF 'office-change-info',
+26: EPSILON
+23: EPSILON
+21: REF 'text-decls',
+22: SEQUENCE
+23: CHOICE
+24: ELEMENT "text:variable-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-variable-decl',
+28: ELEMENT "text:variable-decl",
+29: SEQUENCE
+30: REF 'common-field-name-attlist',
+31: ATTRIBUTE "text:name",
+32: REF 'variableName',
+33: DATA 'string',
+30: REF 'common-value-type-attlist',
+31: ATTRIBUTE "office:value-type",
+32: REF 'valueType',
+33: CHOICE
+34: VALUE 'float',
+34: VALUE 'time',
+34: VALUE 'date',
+34: VALUE 'percentage',
+34: VALUE 'currency',
+34: VALUE 'boolean',
+34: VALUE 'string',
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:sequence-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-sequence-decl',
+28: ELEMENT "text:sequence-decl",
+29: REF 'text-sequence-decl-attlist',
+30: INTERLEAVE
+31: REF 'common-field-name-attlist',
+32: ATTRIBUTE "text:name",
+33: REF 'variableName',
+34: DATA 'string',
+31: ATTRIBUTE "text:display-outline-level",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+31: CHOICE
+32: ATTRIBUTE "text:separation-character",
+33: REF 'character',
+34: DATA 'string',
+32: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:user-field-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-user-field-decl',
+28: ELEMENT "text:user-field-decl",
+29: SEQUENCE
+30: REF 'common-field-name-attlist',
+31: ATTRIBUTE "text:name",
+32: REF 'variableName',
+33: DATA 'string',
+30: CHOICE
+31: REF 'common-field-formula-attlist',
+32: CHOICE
+33: ATTRIBUTE "text:formula",
+34: REF 'string',
+35: DATA 'string',
+33: EPSILON
+31: EPSILON
+30: REF 'common-value-and-type-attlist',
+31: CHOICE
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'float',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'percentage',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'currency',
+33: ATTRIBUTE "office:value",
+34: REF 'double',
+35: DATA 'double',
+33: CHOICE
+34: ATTRIBUTE "office:currency",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'date',
+33: ATTRIBUTE "office:date-value",
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'time',
+33: ATTRIBUTE "office:time-value",
+34: REF 'duration',
+35: DATA 'duration',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'boolean',
+33: ATTRIBUTE "office:boolean-value",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+32: SEQUENCE
+33: ATTRIBUTE "office:value-type",
+34: VALUE 'string',
+33: CHOICE
+34: ATTRIBUTE "office:string-value",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ELEMENT "text:dde-connection-decls",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-dde-connection-decl',
+28: ELEMENT "text:dde-connection-decl",
+29: SEQUENCE
+30: REF 'text-dde-connection-decl-attlist',
+31: ATTRIBUTE "office:name",
+32: REF 'string',
+33: DATA 'string',
+30: REF 'common-dde-connection-decl-attlist',
+31: INTERLEAVE
+32: ATTRIBUTE "office:dde-application",
+33: REF 'string',
+34: DATA 'string',
+32: ATTRIBUTE "office:dde-topic",
+33: REF 'string',
+34: DATA 'string',
+32: ATTRIBUTE "office:dde-item",
+33: REF 'string',
+34: DATA 'string',
+32: CHOICE
+33: ATTRIBUTE "office:automatic-update",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: REF 'text-alphabetical-index-auto-mark-file',
+25: ELEMENT "text:alphabetical-index-auto-mark-file",
+26: SEQUENCE
+27: ATTRIBUTE "xlink:type",
+28: VALUE 'simple',
+27: ATTRIBUTE "xlink:href",
+28: REF 'anyIRI',
+29: DATA 'anyURI',
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'text-h',
+24: REF 'text-p',
+24: REF 'text-list',
+24: REF 'table-table',
+24: REF 'text-section',
+24: REF 'text-table-of-content',
+24: REF 'text-illustration-index',
+24: REF 'text-table-index',
+24: REF 'text-object-index',
+24: REF 'text-user-index',
+24: REF 'text-alphabetical-index',
+24: REF 'text-bibliography',
+24: REF 'text-index-title',
+24: REF 'change-marks',
+25: CHOICE
+22: EPSILON
+20: SEQUENCE
+21: CHOICE
+22: REF 'style-region-left',
+23: ELEMENT "style:region-left",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-center',
+23: ELEMENT "style:region-center",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-right',
+23: ELEMENT "style:region-right",
+24: REF 'region-content',
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+15: CHOICE
+16: REF 'style-header-left',
+17: ELEMENT "style:header-left",
+18: SEQUENCE
+19: REF 'common-style-header-footer-attlist',
+20: CHOICE
+21: ATTRIBUTE "style:display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+19: REF 'header-footer-content',
+20: CHOICE
+21: SEQUENCE
+22: REF 'text-tracked-changes',
+23: CHOICE
+22: REF 'text-decls',
+23: SEQUENCE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+25: REF 'text-alphabetical-index-auto-mark-file',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: CHOICE
+25: REF 'text-h',
+25: REF 'text-p',
+25: REF 'text-list',
+25: REF 'table-table',
+25: REF 'text-section',
+25: REF 'text-table-of-content',
+25: REF 'text-illustration-index',
+25: REF 'text-table-index',
+25: REF 'text-object-index',
+25: REF 'text-user-index',
+25: REF 'text-alphabetical-index',
+25: REF 'text-bibliography',
+25: REF 'text-index-title',
+25: REF 'change-marks',
+26: CHOICE
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'style-region-left',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-center',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-right',
+23: EPSILON
+16: EPSILON
+14: EPSILON
+13: CHOICE
+14: SEQUENCE
+15: REF 'style-footer',
+16: ELEMENT "style:footer",
+17: SEQUENCE
+18: REF 'common-style-header-footer-attlist',
+19: CHOICE
+20: ATTRIBUTE "style:display",
+21: REF 'boolean',
+22: CHOICE
+23: VALUE 'true',
+23: VALUE 'false',
+20: EPSILON
+18: REF 'header-footer-content',
+19: CHOICE
+20: SEQUENCE
+21: REF 'text-tracked-changes',
+22: CHOICE
+21: REF 'text-decls',
+22: SEQUENCE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+23: CHOICE
+24: REF 'text-alphabetical-index-auto-mark-file',
+24: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'text-h',
+24: REF 'text-p',
+24: REF 'text-list',
+24: REF 'table-table',
+24: REF 'text-section',
+24: REF 'text-table-of-content',
+24: REF 'text-illustration-index',
+24: REF 'text-table-index',
+24: REF 'text-object-index',
+24: REF 'text-user-index',
+24: REF 'text-alphabetical-index',
+24: REF 'text-bibliography',
+24: REF 'text-index-title',
+24: REF 'change-marks',
+25: CHOICE
+22: EPSILON
+20: SEQUENCE
+21: CHOICE
+22: REF 'style-region-left',
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-center',
+22: EPSILON
+21: CHOICE
+22: REF 'style-region-right',
+22: EPSILON
+15: CHOICE
+16: REF 'style-footer-left',
+17: ELEMENT "style:footer-left",
+18: SEQUENCE
+19: REF 'common-style-header-footer-attlist',
+20: CHOICE
+21: ATTRIBUTE "style:display",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+19: REF 'header-footer-content',
+20: CHOICE
+21: SEQUENCE
+22: REF 'text-tracked-changes',
+23: CHOICE
+22: REF 'text-decls',
+23: SEQUENCE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+24: CHOICE
+25: REF 'text-alphabetical-index-auto-mark-file',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: CHOICE
+25: REF 'text-h',
+25: REF 'text-p',
+25: REF 'text-list',
+25: REF 'table-table',
+25: REF 'text-section',
+25: REF 'text-table-of-content',
+25: REF 'text-illustration-index',
+25: REF 'text-table-index',
+25: REF 'text-object-index',
+25: REF 'text-user-index',
+25: REF 'text-alphabetical-index',
+25: REF 'text-bibliography',
+25: REF 'text-index-title',
+25: REF 'change-marks',
+26: CHOICE
+23: EPSILON
+21: SEQUENCE
+22: CHOICE
+23: REF 'style-region-left',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-center',
+23: EPSILON
+22: CHOICE
+23: REF 'style-region-right',
+23: EPSILON
+16: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'draw-layer-set',
+15: ELEMENT "draw:layer-set",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'draw-layer',
+19: ELEMENT "draw:layer",
+20: SEQUENCE
+21: REF 'draw-layer-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "draw:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "draw:protected",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "draw:display",
+25: CHOICE
+26: VALUE 'always',
+26: VALUE 'screen',
+26: VALUE 'printer',
+26: VALUE 'none',
+24: EPSILON
+21: CHOICE
+22: REF 'svg-title',
+22: EPSILON
+21: CHOICE
+22: REF 'svg-desc',
+22: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'office-forms',
+15: CHOICE
+14: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'shape',
+16: CHOICE
+17: REF 'shape-instance',
+18: CHOICE
+19: REF 'draw-rect',
+19: REF 'draw-line',
+19: REF 'draw-polyline',
+19: REF 'draw-polygon',
+19: REF 'draw-regular-polygon',
+19: REF 'draw-path',
+19: REF 'draw-circle',
+19: REF 'draw-ellipse',
+19: REF 'draw-g',
+19: REF 'draw-page-thumbnail',
+19: REF 'draw-frame',
+19: REF 'draw-measure',
+19: REF 'draw-caption',
+19: REF 'draw-connector',
+19: REF 'draw-control',
+19: REF 'dr3d-scene',
+19: REF 'draw-custom-shape',
+17: REF 'draw-a',
+14: EPSILON
+13: CHOICE
+14: REF 'animation-element',
+15: CHOICE
+16: ELEMENT "anim:animate",
+17: SEQUENCE
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-named-target-attlist',
+19: ATTRIBUTE "smil:attributeName",
+20: REF 'string',
+21: DATA 'string',
+18: REF 'common-anim-values-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:values",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:formula",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-anim-set-values-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:to",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:from",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:by",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-spline-mode-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:calcMode",
+21: CHOICE
+22: VALUE 'discrete',
+22: VALUE 'linear',
+22: VALUE 'paced',
+22: VALUE 'spline',
+20: EPSILON
+18: REF 'common-spline-anim-value-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:keyTimes",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:keySplines",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+18: REF 'common-anim-add-accum-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:accumulate",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'sum',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:additive",
+22: CHOICE
+23: VALUE 'replace',
+23: VALUE 'sum',
+21: EPSILON
+16: ELEMENT "anim:set",
+17: SEQUENCE
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-named-target-attlist',
+19: ATTRIBUTE "smil:attributeName",
+20: REF 'string',
+21: DATA 'string',
+18: REF 'common-anim-set-values-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:to",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+18: REF 'common-anim-add-accum-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:accumulate",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'sum',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:additive",
+22: CHOICE
+23: VALUE 'replace',
+23: VALUE 'sum',
+21: EPSILON
+16: ELEMENT "anim:animateMotion",
+17: SEQUENCE
+18: REF 'anim-animate-motion-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "svg:path",
+22: REF 'pathData',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "svg:origin",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:calcMode",
+22: CHOICE
+23: VALUE 'discrete',
+23: VALUE 'linear',
+23: VALUE 'paced',
+23: VALUE 'spline',
+21: EPSILON
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-named-target-attlist',
+19: ATTRIBUTE "smil:attributeName",
+20: REF 'string',
+21: DATA 'string',
+18: REF 'common-anim-add-accum-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:accumulate",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'sum',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:additive",
+22: CHOICE
+23: VALUE 'replace',
+23: VALUE 'sum',
+21: EPSILON
+18: REF 'common-anim-values-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:values",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:formula",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-anim-set-values-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:to",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:from",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:by",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+18: REF 'common-spline-anim-value-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:keyTimes",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:keySplines",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+16: ELEMENT "anim:animateColor",
+17: SEQUENCE
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-named-target-attlist',
+19: ATTRIBUTE "smil:attributeName",
+20: REF 'string',
+21: DATA 'string',
+18: REF 'common-anim-add-accum-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:accumulate",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'sum',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:additive",
+22: CHOICE
+23: VALUE 'replace',
+23: VALUE 'sum',
+21: EPSILON
+18: REF 'common-anim-values-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:values",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:formula",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-anim-set-values-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:to",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:from",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:by",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-spline-mode-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:calcMode",
+21: CHOICE
+22: VALUE 'discrete',
+22: VALUE 'linear',
+22: VALUE 'paced',
+22: VALUE 'spline',
+20: EPSILON
+18: REF 'common-spline-anim-value-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:keyTimes",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:keySplines",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'anim-animate-color-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "anim:color-interpolation",
+22: CHOICE
+23: VALUE 'rgb',
+23: VALUE 'hsl',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:color-interpolation-direction",
+22: CHOICE
+23: VALUE 'clockwise',
+23: VALUE 'counter-clockwise',
+21: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+16: ELEMENT "anim:animateTransform",
+17: SEQUENCE
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-named-target-attlist',
+19: ATTRIBUTE "smil:attributeName",
+20: REF 'string',
+21: DATA 'string',
+18: REF 'common-anim-add-accum-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:accumulate",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'sum',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:additive",
+22: CHOICE
+23: VALUE 'replace',
+23: VALUE 'sum',
+21: EPSILON
+18: REF 'common-anim-values-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:values",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:formula",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-anim-set-values-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:to",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:from",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:by",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'anim-animate-transform-attlist',
+19: ATTRIBUTE "svg:type",
+20: CHOICE
+21: VALUE 'translate',
+21: VALUE 'scale',
+21: VALUE 'rotate',
+21: VALUE 'skewX',
+21: VALUE 'skewY',
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+16: ELEMENT "anim:transitionFilter",
+17: SEQUENCE
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-add-accum-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:accumulate",
+22: CHOICE
+23: VALUE 'none',
+23: VALUE 'sum',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:additive",
+22: CHOICE
+23: VALUE 'replace',
+23: VALUE 'sum',
+21: EPSILON
+18: REF 'common-anim-values-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:values",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:formula",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-anim-set-values-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:to",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:from",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:by",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-spline-mode-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:calcMode",
+21: CHOICE
+22: VALUE 'discrete',
+22: VALUE 'linear',
+22: VALUE 'paced',
+22: VALUE 'spline',
+20: EPSILON
+18: REF 'anim-transition-filter-attlist',
+19: INTERLEAVE
+20: ATTRIBUTE "smil:type",
+21: REF 'string',
+22: DATA 'string',
+20: CHOICE
+21: ATTRIBUTE "smil:subtype",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:direction",
+22: CHOICE
+23: VALUE 'forward',
+23: VALUE 'reverse',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:fadeColor",
+22: REF 'color',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:mode",
+22: CHOICE
+23: VALUE 'in',
+23: VALUE 'out',
+21: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+16: ELEMENT "anim:par",
+17: SEQUENCE
+18: REF 'common-anim-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "presentation:node-type",
+22: CHOICE
+23: VALUE 'default',
+23: VALUE 'on-click',
+23: VALUE 'with-previous',
+23: VALUE 'after-previous',
+23: VALUE 'timing-root',
+23: VALUE 'main-sequence',
+23: VALUE 'interactive-sequence',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-sub-type",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-class",
+22: CHOICE
+23: VALUE 'custom',
+23: VALUE 'entrance',
+23: VALUE 'exit',
+23: VALUE 'emphasis',
+23: VALUE 'motion-path',
+23: VALUE 'ole-action',
+23: VALUE 'media-call',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:master-element",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:group-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: SEQUENCE
+22: REF 'xml-id',
+23: ATTRIBUTE "xml:id",
+24: REF 'ID',
+25: DATA 'ID',
+22: CHOICE
+23: ATTRIBUTE "anim:id",
+24: REF 'NCName',
+25: DATA 'NCName',
+23: EPSILON
+21: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+18: REF 'common-endsync-timing-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:endsync",
+21: CHOICE
+22: VALUE 'first',
+22: VALUE 'last',
+22: VALUE 'all',
+22: VALUE 'media',
+22: REF 'IDREF',
+23: DATA 'IDREF',
+20: EPSILON
+18: CHOICE
+19: ONEOREMORE
+20: REF 'animation-element',
+21: CHOICE
+19: EPSILON
+16: ELEMENT "anim:seq",
+17: SEQUENCE
+18: REF 'common-anim-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "presentation:node-type",
+22: CHOICE
+23: VALUE 'default',
+23: VALUE 'on-click',
+23: VALUE 'with-previous',
+23: VALUE 'after-previous',
+23: VALUE 'timing-root',
+23: VALUE 'main-sequence',
+23: VALUE 'interactive-sequence',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-sub-type",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-class",
+22: CHOICE
+23: VALUE 'custom',
+23: VALUE 'entrance',
+23: VALUE 'exit',
+23: VALUE 'emphasis',
+23: VALUE 'motion-path',
+23: VALUE 'ole-action',
+23: VALUE 'media-call',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:master-element",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:group-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: SEQUENCE
+22: REF 'xml-id',
+23: ATTRIBUTE "xml:id",
+24: REF 'ID',
+25: DATA 'ID',
+22: CHOICE
+23: ATTRIBUTE "anim:id",
+24: REF 'NCName',
+25: DATA 'NCName',
+23: EPSILON
+21: EPSILON
+18: REF 'common-endsync-timing-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:endsync",
+21: CHOICE
+22: VALUE 'first',
+22: VALUE 'last',
+22: VALUE 'all',
+22: VALUE 'media',
+22: REF 'IDREF',
+23: DATA 'IDREF',
+20: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+18: CHOICE
+19: ONEOREMORE
+20: REF 'animation-element',
+21: CHOICE
+19: EPSILON
+16: ELEMENT "anim:iterate",
+17: SEQUENCE
+18: REF 'common-anim-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "presentation:node-type",
+22: CHOICE
+23: VALUE 'default',
+23: VALUE 'on-click',
+23: VALUE 'with-previous',
+23: VALUE 'after-previous',
+23: VALUE 'timing-root',
+23: VALUE 'main-sequence',
+23: VALUE 'interactive-sequence',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-sub-type",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-class",
+22: CHOICE
+23: VALUE 'custom',
+23: VALUE 'entrance',
+23: VALUE 'exit',
+23: VALUE 'emphasis',
+23: VALUE 'motion-path',
+23: VALUE 'ole-action',
+23: VALUE 'media-call',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:master-element",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:group-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: SEQUENCE
+22: REF 'xml-id',
+23: ATTRIBUTE "xml:id",
+24: REF 'ID',
+25: DATA 'ID',
+22: CHOICE
+23: ATTRIBUTE "anim:id",
+24: REF 'NCName',
+25: DATA 'NCName',
+23: EPSILON
+21: EPSILON
+18: REF 'anim-iterate-attlist',
+19: INTERLEAVE
+20: REF 'common-anim-target-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:targetElement",
+24: REF 'IDREF',
+25: DATA 'IDREF',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "anim:sub-item",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:iterate-type",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:iterate-interval",
+22: REF 'duration',
+23: DATA 'duration',
+21: EPSILON
+18: REF 'common-timing-attlist',
+19: SEQUENCE
+20: REF 'common-basic-timing-attlist',
+21: SEQUENCE
+22: REF 'common-begin-end-timing-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "smil:begin",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:end",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'common-dur-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:dur",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+22: REF 'common-repeat-timing-attlist',
+23: SEQUENCE
+24: CHOICE
+25: ATTRIBUTE "smil:repeatDur",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "smil:repeatCount",
+26: CHOICE
+27: REF 'nonNegativeDecimal',
+28: DATA 'decimal',
+27: VALUE 'indefinite',
+25: EPSILON
+22: REF 'common-restart-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restart",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'default',
+24: EPSILON
+22: REF 'common-restart-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:restartDefault",
+25: CHOICE
+26: VALUE 'never',
+26: VALUE 'always',
+26: VALUE 'whenNotActive',
+26: VALUE 'inherit',
+24: EPSILON
+22: REF 'common-fill-timing-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fill",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'auto',
+26: VALUE 'default',
+26: VALUE 'transition',
+24: EPSILON
+22: REF 'common-fill-default-attlist',
+23: CHOICE
+24: ATTRIBUTE "smil:fillDefault",
+25: CHOICE
+26: VALUE 'remove',
+26: VALUE 'freeze',
+26: VALUE 'hold',
+26: VALUE 'transition',
+26: VALUE 'auto',
+26: VALUE 'inherit',
+24: EPSILON
+20: REF 'common-time-manip-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:accelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:decelerate",
+24: REF 'zeroToOneDecimal',
+25: DATA 'decimal',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:autoReverse",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+18: REF 'common-endsync-timing-attlist',
+19: CHOICE
+20: ATTRIBUTE "smil:endsync",
+21: CHOICE
+22: VALUE 'first',
+22: VALUE 'last',
+22: VALUE 'all',
+22: VALUE 'media',
+22: REF 'IDREF',
+23: DATA 'IDREF',
+20: EPSILON
+18: CHOICE
+19: ONEOREMORE
+20: REF 'animation-element',
+21: CHOICE
+19: EPSILON
+16: ELEMENT "anim:audio",
+17: SEQUENCE
+18: REF 'common-anim-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "presentation:node-type",
+22: CHOICE
+23: VALUE 'default',
+23: VALUE 'on-click',
+23: VALUE 'with-previous',
+23: VALUE 'after-previous',
+23: VALUE 'timing-root',
+23: VALUE 'main-sequence',
+23: VALUE 'interactive-sequence',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-sub-type",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-class",
+22: CHOICE
+23: VALUE 'custom',
+23: VALUE 'entrance',
+23: VALUE 'exit',
+23: VALUE 'emphasis',
+23: VALUE 'motion-path',
+23: VALUE 'ole-action',
+23: VALUE 'media-call',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:master-element",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:group-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: SEQUENCE
+22: REF 'xml-id',
+23: ATTRIBUTE "xml:id",
+24: REF 'ID',
+25: DATA 'ID',
+22: CHOICE
+23: ATTRIBUTE "anim:id",
+24: REF 'NCName',
+25: DATA 'NCName',
+23: EPSILON
+21: EPSILON
+18: REF 'anim-audio-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "xlink:href",
+22: REF 'anyIRI',
+23: DATA 'anyURI',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:audio-level",
+22: REF 'double',
+23: DATA 'double',
+21: EPSILON
+18: REF 'common-basic-timing-attlist',
+19: SEQUENCE
+20: REF 'common-begin-end-timing-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "smil:begin",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:end",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+20: REF 'common-dur-timing-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:dur",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: REF 'common-repeat-timing-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "smil:repeatDur",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "smil:repeatCount",
+24: CHOICE
+25: REF 'nonNegativeDecimal',
+26: DATA 'decimal',
+25: VALUE 'indefinite',
+23: EPSILON
+20: REF 'common-restart-timing-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:restart",
+23: CHOICE
+24: VALUE 'never',
+24: VALUE 'always',
+24: VALUE 'whenNotActive',
+24: VALUE 'default',
+22: EPSILON
+20: REF 'common-restart-default-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:restartDefault",
+23: CHOICE
+24: VALUE 'never',
+24: VALUE 'always',
+24: VALUE 'whenNotActive',
+24: VALUE 'inherit',
+22: EPSILON
+20: REF 'common-fill-timing-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:fill",
+23: CHOICE
+24: VALUE 'remove',
+24: VALUE 'freeze',
+24: VALUE 'hold',
+24: VALUE 'auto',
+24: VALUE 'default',
+24: VALUE 'transition',
+22: EPSILON
+20: REF 'common-fill-default-attlist',
+21: CHOICE
+22: ATTRIBUTE "smil:fillDefault",
+23: CHOICE
+24: VALUE 'remove',
+24: VALUE 'freeze',
+24: VALUE 'hold',
+24: VALUE 'transition',
+24: VALUE 'auto',
+24: VALUE 'inherit',
+22: EPSILON
+16: ELEMENT "anim:command",
+17: SEQUENCE
+18: REF 'common-anim-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "presentation:node-type",
+22: CHOICE
+23: VALUE 'default',
+23: VALUE 'on-click',
+23: VALUE 'with-previous',
+23: VALUE 'after-previous',
+23: VALUE 'timing-root',
+23: VALUE 'main-sequence',
+23: VALUE 'interactive-sequence',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-sub-type",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:preset-class",
+22: CHOICE
+23: VALUE 'custom',
+23: VALUE 'entrance',
+23: VALUE 'exit',
+23: VALUE 'emphasis',
+23: VALUE 'motion-path',
+23: VALUE 'ole-action',
+23: VALUE 'media-call',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:master-element",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "presentation:group-id",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: SEQUENCE
+22: REF 'xml-id',
+23: ATTRIBUTE "xml:id",
+24: REF 'ID',
+25: DATA 'ID',
+22: CHOICE
+23: ATTRIBUTE "anim:id",
+24: REF 'NCName',
+25: DATA 'NCName',
+23: EPSILON
+21: EPSILON
+18: REF 'anim-command-attlist',
+19: ATTRIBUTE "anim:command",
+20: REF 'string',
+21: DATA 'string',
+18: REF 'common-begin-end-timing-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:begin",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "smil:end",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: REF 'common-anim-target-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "smil:targetElement",
+22: REF 'IDREF',
+23: DATA 'IDREF',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "anim:sub-item",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+18: CHOICE
+19: ONEOREMORE
+20: ELEMENT "anim:param",
+21: SEQUENCE
+22: ATTRIBUTE "anim:name",
+23: REF 'string',
+24: DATA 'string',
+22: ATTRIBUTE "anim:value",
+23: REF 'string',
+24: DATA 'string',
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'presentation-notes',
+15: ELEMENT "presentation:notes",
+16: SEQUENCE
+17: REF 'common-presentation-header-footer-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: ATTRIBUTE "presentation:use-header-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:use-footer-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "presentation:use-date-time-name",
+21: REF 'string',
+22: DATA 'string',
+20: EPSILON
+17: REF 'presentation-notes-attlist',
+18: INTERLEAVE
+19: CHOICE
+20: ATTRIBUTE "style:page-layout-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "draw:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+17: REF 'office-forms',
+18: CHOICE
+17: CHOICE
+18: ONEOREMORE
+19: REF 'shape',
+20: CHOICE
+21: REF 'shape-instance',
+22: CHOICE
+23: REF 'draw-rect',
+23: REF 'draw-line',
+23: REF 'draw-polyline',
+23: REF 'draw-polygon',
+23: REF 'draw-regular-polygon',
+23: REF 'draw-path',
+23: REF 'draw-circle',
+23: REF 'draw-ellipse',
+23: REF 'draw-g',
+23: REF 'draw-page-thumbnail',
+23: REF 'draw-frame',
+23: REF 'draw-measure',
+23: REF 'draw-caption',
+23: REF 'draw-connector',
+23: REF 'draw-control',
+23: REF 'dr3d-scene',
+23: REF 'draw-custom-shape',
+21: REF 'draw-a',
+18: EPSILON
+14: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'style-handout-master',
+10: ELEMENT "style:handout-master",
+11: SEQUENCE
+12: REF 'common-presentation-header-footer-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "presentation:use-header-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "presentation:use-footer-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+14: CHOICE
+15: ATTRIBUTE "presentation:use-date-time-name",
+16: REF 'string',
+17: DATA 'string',
+15: EPSILON
+12: REF 'style-handout-master-attlist',
+13: INTERLEAVE
+14: CHOICE
+15: ATTRIBUTE "presentation:presentation-page-layout-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+14: ATTRIBUTE "style:page-layout-name",
+15: REF 'styleNameRef',
+16: CHOICE
+17: DATA 'NCName',
+17: EPSILON
+14: CHOICE
+15: ATTRIBUTE "draw:style-name",
+16: REF 'styleNameRef',
+17: CHOICE
+18: DATA 'NCName',
+18: EPSILON
+15: EPSILON
+12: CHOICE
+13: ONEOREMORE
+14: REF 'shape',
+15: CHOICE
+16: REF 'shape-instance',
+17: CHOICE
+18: REF 'draw-rect',
+18: REF 'draw-line',
+18: REF 'draw-polyline',
+18: REF 'draw-polygon',
+18: REF 'draw-regular-polygon',
+18: REF 'draw-path',
+18: REF 'draw-circle',
+18: REF 'draw-ellipse',
+18: REF 'draw-g',
+18: REF 'draw-page-thumbnail',
+18: REF 'draw-frame',
+18: REF 'draw-measure',
+18: REF 'draw-caption',
+18: REF 'draw-connector',
+18: REF 'draw-control',
+18: REF 'dr3d-scene',
+18: REF 'draw-custom-shape',
+16: REF 'draw-a',
+13: EPSILON
+9: EPSILON
+8: CHOICE
+9: REF 'draw-layer-set',
+9: EPSILON
+6: EPSILON
+4: REF 'office-body',
+5: ELEMENT "office:body",
+6: REF 'office-body-content',
+7: CHOICE
+8: ELEMENT "office:text",
+9: SEQUENCE
+10: REF 'office-text-attlist',
+11: INTERLEAVE
+12: CHOICE
+13: ATTRIBUTE "text:global",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+12: CHOICE
+13: ATTRIBUTE "text:use-soft-page-breaks",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+10: REF 'office-text-content-prelude',
+11: SEQUENCE
+12: REF 'office-forms',
+13: CHOICE
+12: REF 'text-tracked-changes',
+13: CHOICE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+16: ELEMENT "table:calculation-settings",
+17: SEQUENCE
+18: REF 'table-calculation-setting-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:case-sensitive",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:precision-as-shown",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:search-criteria-must-apply-to-whole-cell",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:automatic-find-labels",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:use-regular-expressions",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:use-wildcards",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "table:null-year",
+22: REF 'positiveInteger',
+23: DATA 'positiveInteger',
+21: EPSILON
+18: CHOICE
+19: REF 'table-null-date',
+20: ELEMENT "table:null-date",
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "table:value-type",
+24: VALUE 'date',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:date-value",
+24: REF 'date',
+25: DATA 'date',
+23: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'table-iteration',
+20: ELEMENT "table:iteration",
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "table:status",
+24: CHOICE
+25: VALUE 'enable',
+25: VALUE 'disable',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:steps",
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "table:maximum-difference",
+24: REF 'double',
+25: DATA 'double',
+23: EPSILON
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+16: ELEMENT "table:content-validations",
+17: ONEOREMORE
+18: REF 'table-content-validation',
+19: ELEMENT "table:content-validation",
+20: SEQUENCE
+21: REF 'table-validation-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:condition",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:base-cell-address",
+25: REF 'cellAddress',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:allow-empty-cell",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:display-list",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'unsorted',
+26: VALUE 'sort-ascending',
+24: EPSILON
+21: CHOICE
+22: REF 'table-help-message',
+23: ELEMENT "table:help-message",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:title",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'table-error-message',
+23: ELEMENT "table:error-message",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:title",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:display",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "table:message-type",
+27: CHOICE
+28: VALUE 'stop',
+28: VALUE 'warning',
+28: VALUE 'information',
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'text-p',
+26: EPSILON
+22: SEQUENCE
+23: REF 'table-error-macro',
+24: ELEMENT "table:error-macro",
+25: CHOICE
+26: ATTRIBUTE "table:execute",
+27: REF 'boolean',
+28: CHOICE
+29: VALUE 'true',
+29: VALUE 'false',
+26: EPSILON
+23: REF 'office-event-listeners',
+22: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+16: ELEMENT "table:label-ranges",
+17: CHOICE
+18: ONEOREMORE
+19: REF 'table-label-range',
+20: ELEMENT "table:label-range",
+21: REF 'table-label-range-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:label-cell-range-address",
+24: REF 'cellRangeAddress',
+25: CHOICE
+26: DATA 'string',
+26: DATA 'string',
+26: DATA 'string',
+23: ATTRIBUTE "table:data-cell-range-address",
+24: REF 'cellRangeAddress',
+25: CHOICE
+26: DATA 'string',
+26: DATA 'string',
+26: DATA 'string',
+23: ATTRIBUTE "table:orientation",
+24: CHOICE
+25: VALUE 'column',
+25: VALUE 'row',
+18: EPSILON
+15: EPSILON
+10: REF 'office-text-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'text-content',
+14: CHOICE
+15: REF 'text-h',
+15: REF 'text-p',
+15: REF 'text-list',
+15: REF 'text-numbered-paragraph',
+15: REF 'table-table',
+15: REF 'text-section',
+15: REF 'text-soft-page-break',
+15: REF 'text-table-of-content',
+15: REF 'text-illustration-index',
+15: REF 'text-table-index',
+15: REF 'text-object-index',
+15: REF 'text-user-index',
+15: REF 'text-alphabetical-index',
+15: REF 'text-bibliography',
+15: REF 'shape',
+16: CHOICE
+17: REF 'shape-instance',
+18: CHOICE
+19: REF 'draw-rect',
+19: REF 'draw-line',
+19: REF 'draw-polyline',
+19: REF 'draw-polygon',
+19: REF 'draw-regular-polygon',
+19: REF 'draw-path',
+19: REF 'draw-circle',
+19: REF 'draw-ellipse',
+19: REF 'draw-g',
+19: REF 'draw-page-thumbnail',
+19: REF 'draw-frame',
+19: REF 'draw-measure',
+19: REF 'draw-caption',
+19: REF 'draw-connector',
+19: REF 'draw-control',
+19: REF 'dr3d-scene',
+19: REF 'draw-custom-shape',
+17: REF 'draw-a',
+15: REF 'change-marks',
+16: CHOICE
+12: EPSILON
+12: SEQUENCE
+13: REF 'text-page-sequence',
+14: ELEMENT "text:page-sequence",
+15: ONEOREMORE
+16: REF 'text-page',
+17: ELEMENT "text:page",
+18: REF 'text-page-attlist',
+19: ATTRIBUTE "text:master-page-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+13: CHOICE
+14: ONEOREMORE
+15: REF 'shape',
+16: CHOICE
+17: REF 'shape-instance',
+18: CHOICE
+19: REF 'draw-rect',
+19: REF 'draw-line',
+19: REF 'draw-polyline',
+19: REF 'draw-polygon',
+19: REF 'draw-regular-polygon',
+19: REF 'draw-path',
+19: REF 'draw-circle',
+19: REF 'draw-ellipse',
+19: REF 'draw-g',
+19: REF 'draw-page-thumbnail',
+19: REF 'draw-frame',
+19: REF 'draw-measure',
+19: REF 'draw-caption',
+19: REF 'draw-connector',
+19: REF 'draw-control',
+19: REF 'dr3d-scene',
+19: REF 'draw-custom-shape',
+17: REF 'draw-a',
+14: EPSILON
+10: REF 'office-text-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+15: ELEMENT "table:database-ranges",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'table-database-range',
+19: ELEMENT "table:database-range",
+20: SEQUENCE
+21: REF 'table-database-range-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "table:name",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:is-selection",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:on-update-keep-styles",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:on-update-keep-size",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:has-persistent-data",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:orientation",
+25: CHOICE
+26: VALUE 'column',
+26: VALUE 'row',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:contains-header",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:display-filter-buttons",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: ATTRIBUTE "table:target-range-address",
+24: REF 'cellRangeAddress',
+25: CHOICE
+26: DATA 'string',
+26: DATA 'string',
+26: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:refresh-delay",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: CHOICE
+22: REF 'table-database-source-sql',
+23: ELEMENT "table:database-source-sql",
+24: REF 'table-database-source-sql-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:sql-statement",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "table:parse-sql-statement",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+22: REF 'table-database-source-table',
+23: ELEMENT "table:database-source-query",
+24: REF 'table-database-source-query-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:query-name",
+27: REF 'string',
+28: DATA 'string',
+22: REF 'table-database-source-query',
+23: ELEMENT "table:database-source-table",
+24: REF 'table-database-source-table-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:database-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:database-table-name",
+27: REF 'string',
+28: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: REF 'table-filter',
+23: ELEMENT "table:filter",
+24: SEQUENCE
+25: REF 'table-filter-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:target-range-address",
+29: REF 'cellRangeAddress',
+30: CHOICE
+31: DATA 'string',
+31: DATA 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:condition-source",
+29: CHOICE
+30: VALUE 'self',
+30: VALUE 'cell-range',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:condition-source-range-address",
+29: REF 'cellRangeAddress',
+30: CHOICE
+31: DATA 'string',
+31: DATA 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:display-duplicates",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: CHOICE
+26: REF 'table-filter-condition',
+27: ELEMENT "table:filter-condition",
+28: SEQUENCE
+29: REF 'table-filter-condition-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:field-number",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+31: ATTRIBUTE "table:value",
+32: CHOICE
+33: REF 'string',
+34: DATA 'string',
+33: REF 'double',
+34: DATA 'double',
+31: ATTRIBUTE "table:operator",
+32: REF 'string',
+33: DATA 'string',
+31: CHOICE
+32: ATTRIBUTE "table:case-sensitive",
+33: REF 'string',
+34: DATA 'string',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "table:data-type",
+33: CHOICE
+34: VALUE 'text',
+34: VALUE 'number',
+32: EPSILON
+29: CHOICE
+30: ONEOREMORE
+31: REF 'table-filter-set-item',
+32: ELEMENT "table:filter-set-item",
+33: ATTRIBUTE "table:value",
+34: REF 'string',
+35: DATA 'string',
+30: EPSILON
+26: REF 'table-filter-and',
+27: ELEMENT "table:filter-and",
+28: ONEOREMORE
+29: CHOICE
+30: REF 'table-filter-or',
+31: ELEMENT "table:filter-or",
+32: ONEOREMORE
+33: CHOICE
+34: REF 'table-filter-and',
+34: REF 'table-filter-condition',
+30: REF 'table-filter-condition',
+26: REF 'table-filter-or',
+22: EPSILON
+21: CHOICE
+22: REF 'table-sort',
+23: ELEMENT "table:sort",
+24: SEQUENCE
+25: REF 'table-sort-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:bind-styles-to-content",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:target-range-address",
+29: REF 'cellRangeAddress',
+30: CHOICE
+31: DATA 'string',
+31: DATA 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:case-sensitive",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:language",
+29: REF 'languageCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:country",
+29: REF 'countryCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:script",
+29: REF 'scriptCode',
+30: DATA 'token',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:rfc-language-tag",
+29: REF 'language',
+30: DATA 'language',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:algorithm",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:embedded-number-behavior",
+29: CHOICE
+30: VALUE 'alpha-numeric',
+30: VALUE 'integer',
+30: VALUE 'double',
+28: EPSILON
+25: ONEOREMORE
+26: REF 'table-sort-by',
+27: ELEMENT "table:sort-by",
+28: REF 'table-sort-by-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-number",
+31: REF 'nonNegativeInteger',
+32: DATA 'nonNegativeInteger',
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+33: VALUE 'automatic',
+33: REF 'string',
+34: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:order",
+32: CHOICE
+33: VALUE 'ascending',
+33: VALUE 'descending',
+31: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'table-subtotal-rules',
+23: ELEMENT "table:subtotal-rules",
+24: SEQUENCE
+25: REF 'table-subtotal-rules-attlist',
+26: INTERLEAVE
+27: CHOICE
+28: ATTRIBUTE "table:bind-styles-to-content",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:case-sensitive",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:page-breaks-on-group-change",
+29: REF 'boolean',
+30: CHOICE
+31: VALUE 'true',
+31: VALUE 'false',
+28: EPSILON
+25: CHOICE
+26: REF 'table-sort-groups',
+27: ELEMENT "table:sort-groups",
+28: REF 'table-sort-groups-attlist',
+29: INTERLEAVE
+30: CHOICE
+31: ATTRIBUTE "table:data-type",
+32: CHOICE
+33: VALUE 'text',
+33: VALUE 'number',
+33: VALUE 'automatic',
+33: REF 'string',
+34: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: ATTRIBUTE "table:order",
+32: CHOICE
+33: VALUE 'ascending',
+33: VALUE 'descending',
+31: EPSILON
+26: EPSILON
+25: CHOICE
+26: ONEOREMORE
+27: REF 'table-subtotal-rule',
+28: ELEMENT "table:subtotal-rule",
+29: SEQUENCE
+30: REF 'table-subtotal-rule-attlist',
+31: ATTRIBUTE "table:group-by-field-number",
+32: REF 'nonNegativeInteger',
+33: DATA 'nonNegativeInteger',
+30: CHOICE
+31: ONEOREMORE
+32: REF 'table-subtotal-field',
+33: ELEMENT "table:subtotal-field",
+34: REF 'table-subtotal-field-attlist',
+35: INTERLEAVE
+36: ATTRIBUTE "table:field-number",
+37: REF 'nonNegativeInteger',
+38: DATA 'nonNegativeInteger',
+36: ATTRIBUTE "table:function",
+37: CHOICE
+38: VALUE 'average',
+38: VALUE 'count',
+38: VALUE 'countnums',
+38: VALUE 'max',
+38: VALUE 'min',
+38: VALUE 'product',
+38: VALUE 'stdev',
+38: VALUE 'stdevp',
+38: VALUE 'sum',
+38: VALUE 'var',
+38: VALUE 'varp',
+38: REF 'string',
+39: DATA 'string',
+31: EPSILON
+26: EPSILON
+22: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+15: ELEMENT "table:data-pilot-tables",
+16: CHOICE
+17: ONEOREMORE
+18: REF 'table-data-pilot-table',
+19: ELEMENT "table:data-pilot-table",
+20: SEQUENCE
+21: REF 'table-data-pilot-table-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "table:name",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:application-data",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:grand-total",
+25: CHOICE
+26: VALUE 'none',
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'both',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:ignore-empty-rows",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:identify-categories",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: ATTRIBUTE "table:target-range-address",
+24: REF 'cellRangeAddress',
+25: CHOICE
+26: DATA 'string',
+26: DATA 'string',
+26: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "table:buttons",
+25: REF 'cellRangeAddressList',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:show-filter-button",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "table:drill-down-on-double-click",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: CHOICE
+22: REF 'table-database-source-sql',
+22: REF 'table-database-source-table',
+22: REF 'table-database-source-query',
+22: REF 'table-source-service',
+23: ELEMENT "table:source-service",
+24: REF 'table-source-service-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "table:name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:source-name",
+27: REF 'string',
+28: DATA 'string',
+26: ATTRIBUTE "table:object-name",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "table:user-name",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "table:password",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+22: REF 'table-source-cell-range',
+23: ELEMENT "table:source-cell-range",
+24: SEQUENCE
+25: REF 'table-source-cell-range-attlist',
+26: ATTRIBUTE "table:cell-range-address",
+27: REF 'cellRangeAddress',
+28: CHOICE
+29: DATA 'string',
+29: DATA 'string',
+29: DATA 'string',
+25: CHOICE
+26: REF 'table-filter',
+26: EPSILON
+22: EPSILON
+21: ONEOREMORE
+22: REF 'table-data-pilot-field',
+23: ELEMENT "table:data-pilot-field",
+24: SEQUENCE
+25: REF 'table-data-pilot-field-attlist',
+26: INTERLEAVE
+27: ATTRIBUTE "table:source-field-name",
+28: REF 'string',
+29: DATA 'string',
+27: CHOICE
+28: ATTRIBUTE "table:orientation",
+29: CHOICE
+30: VALUE 'row',
+30: VALUE 'column',
+30: VALUE 'data',
+30: VALUE 'hidden',
+28: SEQUENCE
+29: ATTRIBUTE "table:orientation",
+30: VALUE 'page',
+29: ATTRIBUTE "table:selected-page",
+30: REF 'string',
+31: DATA 'string',
+27: CHOICE
+28: ATTRIBUTE "table:is-data-layout-field",
+29: REF 'string',
+30: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:function",
+29: CHOICE
+30: VALUE 'auto',
+30: VALUE 'average',
+30: VALUE 'count',
+30: VALUE 'countnums',
+30: VALUE 'max',
+30: VALUE 'min',
+30: VALUE 'product',
+30: VALUE 'stdev',
+30: VALUE 'stdevp',
+30: VALUE 'sum',
+30: VALUE 'var',
+30: VALUE 'varp',
+30: REF 'string',
+31: DATA 'string',
+28: EPSILON
+27: CHOICE
+28: ATTRIBUTE "table:used-hierarchy",
+29: REF 'integer',
+30: DATA 'integer',
+28: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-level',
+27: ELEMENT "table:data-pilot-level",
+28: SEQUENCE
+29: REF 'table-data-pilot-level-attlist',
+30: CHOICE
+31: ATTRIBUTE "table:show-empty",
+32: REF 'boolean',
+33: CHOICE
+34: VALUE 'true',
+34: VALUE 'false',
+31: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-subtotals',
+31: ELEMENT "table:data-pilot-subtotals",
+32: CHOICE
+33: ONEOREMORE
+34: REF 'table-data-pilot-subtotal',
+35: ELEMENT "table:data-pilot-subtotal",
+36: REF 'table-data-pilot-subtotal-attlist',
+37: ATTRIBUTE "table:function",
+38: CHOICE
+39: VALUE 'auto',
+39: VALUE 'average',
+39: VALUE 'count',
+39: VALUE 'countnums',
+39: VALUE 'max',
+39: VALUE 'min',
+39: VALUE 'product',
+39: VALUE 'stdev',
+39: VALUE 'stdevp',
+39: VALUE 'sum',
+39: VALUE 'var',
+39: VALUE 'varp',
+39: REF 'string',
+40: DATA 'string',
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-members',
+31: ELEMENT "table:data-pilot-members",
+32: CHOICE
+33: ONEOREMORE
+34: REF 'table-data-pilot-member',
+35: ELEMENT "table:data-pilot-member",
+36: REF 'table-data-pilot-member-attlist',
+37: INTERLEAVE
+38: ATTRIBUTE "table:name",
+39: REF 'string',
+40: DATA 'string',
+38: CHOICE
+39: ATTRIBUTE "table:display",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+38: CHOICE
+39: ATTRIBUTE "table:show-details",
+40: REF 'boolean',
+41: CHOICE
+42: VALUE 'true',
+42: VALUE 'false',
+39: EPSILON
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-display-info',
+31: ELEMENT "table:data-pilot-display-info",
+32: REF 'table-data-pilot-display-info-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "table:enabled",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: ATTRIBUTE "table:data-field",
+35: REF 'string',
+36: DATA 'string',
+34: ATTRIBUTE "table:member-count",
+35: REF 'nonNegativeInteger',
+36: DATA 'nonNegativeInteger',
+34: ATTRIBUTE "table:display-member-mode",
+35: CHOICE
+36: VALUE 'from-top',
+36: VALUE 'from-bottom',
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-sort-info',
+31: ELEMENT "table:data-pilot-sort-info",
+32: REF 'table-data-pilot-sort-info-attlist',
+33: INTERLEAVE
+34: CHOICE
+35: SEQUENCE
+36: ATTRIBUTE "table:sort-mode",
+37: VALUE 'data',
+36: ATTRIBUTE "table:data-field",
+37: REF 'string',
+38: DATA 'string',
+35: ATTRIBUTE "table:sort-mode",
+36: CHOICE
+37: VALUE 'none',
+37: VALUE 'manual',
+37: VALUE 'name',
+34: ATTRIBUTE "table:order",
+35: CHOICE
+36: VALUE 'ascending',
+36: VALUE 'descending',
+30: EPSILON
+29: CHOICE
+30: REF 'table-data-pilot-layout-info',
+31: ELEMENT "table:data-pilot-layout-info",
+32: REF 'table-data-pilot-layout-info-attlist',
+33: INTERLEAVE
+34: ATTRIBUTE "table:layout-mode",
+35: CHOICE
+36: VALUE 'tabular-layout',
+36: VALUE 'outline-subtotals-top',
+36: VALUE 'outline-subtotals-bottom',
+34: ATTRIBUTE "table:add-empty-lines",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+30: EPSILON
+26: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-field-reference',
+27: ELEMENT "table:data-pilot-field-reference",
+28: REF 'table-data-pilot-field-reference-attlist',
+29: INTERLEAVE
+30: ATTRIBUTE "table:field-name",
+31: REF 'string',
+32: DATA 'string',
+30: CHOICE
+31: SEQUENCE
+32: ATTRIBUTE "table:member-type",
+33: VALUE 'named',
+32: ATTRIBUTE "table:member-name",
+33: REF 'string',
+34: DATA 'string',
+31: ATTRIBUTE "table:member-type",
+32: CHOICE
+33: VALUE 'previous',
+33: VALUE 'next',
+30: ATTRIBUTE "table:type",
+31: CHOICE
+32: VALUE 'none',
+32: VALUE 'member-difference',
+32: VALUE 'member-percentage',
+32: VALUE 'member-percentage-difference',
+32: VALUE 'running-total',
+32: VALUE 'row-percentage',
+32: VALUE 'column-percentage',
+32: VALUE 'total-percentage',
+32: VALUE 'index',
+26: EPSILON
+25: CHOICE
+26: REF 'table-data-pilot-groups',
+27: ELEMENT "table:data-pilot-groups",
+28: SEQUENCE
+29: REF 'table-data-pilot-groups-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:source-field-name",
+32: REF 'string',
+33: DATA 'string',
+31: CHOICE
+32: ATTRIBUTE "table:date-start",
+33: CHOICE
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+34: VALUE 'auto',
+32: ATTRIBUTE "table:start",
+33: CHOICE
+34: REF 'double',
+35: DATA 'double',
+34: VALUE 'auto',
+31: CHOICE
+32: ATTRIBUTE "table:date-end",
+33: CHOICE
+34: REF 'dateOrDateTime',
+35: CHOICE
+36: DATA 'date',
+36: DATA 'dateTime',
+34: VALUE 'auto',
+32: ATTRIBUTE "table:end",
+33: CHOICE
+34: REF 'double',
+35: DATA 'double',
+34: VALUE 'auto',
+31: ATTRIBUTE "table:step",
+32: REF 'double',
+33: DATA 'double',
+31: ATTRIBUTE "table:grouped-by",
+32: CHOICE
+33: VALUE 'seconds',
+33: VALUE 'minutes',
+33: VALUE 'hours',
+33: VALUE 'days',
+33: VALUE 'months',
+33: VALUE 'quarters',
+33: VALUE 'years',
+29: ONEOREMORE
+30: REF 'table-data-pilot-group',
+31: ELEMENT "table:data-pilot-group",
+32: SEQUENCE
+33: REF 'table-data-pilot-group-attlist',
+34: ATTRIBUTE "table:name",
+35: REF 'string',
+36: DATA 'string',
+33: ONEOREMORE
+34: REF 'table-data-pilot-group-member',
+35: ELEMENT "table:data-pilot-group-member",
+36: REF 'table-data-pilot-group-member-attlist',
+37: ATTRIBUTE "table:name",
+38: REF 'string',
+39: DATA 'string',
+26: EPSILON
+17: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+15: ELEMENT "table:consolidation",
+16: REF 'table-consolidation-attlist',
+17: INTERLEAVE
+18: ATTRIBUTE "table:function",
+19: CHOICE
+20: VALUE 'average',
+20: VALUE 'count',
+20: VALUE 'countnums',
+20: VALUE 'max',
+20: VALUE 'min',
+20: VALUE 'product',
+20: VALUE 'stdev',
+20: VALUE 'stdevp',
+20: VALUE 'sum',
+20: VALUE 'var',
+20: VALUE 'varp',
+20: REF 'string',
+21: DATA 'string',
+18: ATTRIBUTE "table:source-cell-range-addresses",
+19: REF 'cellRangeAddressList',
+20: DATA 'string',
+18: ATTRIBUTE "table:target-cell-address",
+19: REF 'cellAddress',
+20: DATA 'string',
+18: CHOICE
+19: ATTRIBUTE "table:use-labels",
+20: CHOICE
+21: VALUE 'none',
+21: VALUE 'row',
+21: VALUE 'column',
+21: VALUE 'both',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "table:link-to-source-data",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+15: ELEMENT "table:dde-links",
+16: ONEOREMORE
+17: REF 'table-dde-link',
+18: ELEMENT "table:dde-link",
+19: SEQUENCE
+20: REF 'office-dde-source',
+20: REF 'table-table',
+14: EPSILON
+8: ELEMENT "office:drawing",
+9: SEQUENCE
+10: REF 'office-drawing-attlist',
+11: EPSILON
+10: REF 'office-drawing-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-drawing-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-page',
+14: ELEMENT "draw:page",
+15: SEQUENCE
+16: REF 'common-presentation-header-footer-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "presentation:use-header-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:use-footer-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:use-date-time-name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+16: REF 'draw-page-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "draw:name",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:style-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: ATTRIBUTE "draw:master-page-name",
+19: REF 'styleNameRef',
+20: CHOICE
+21: DATA 'NCName',
+21: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:presentation-page-layout-name",
+20: REF 'styleNameRef',
+21: CHOICE
+22: DATA 'NCName',
+22: EPSILON
+19: EPSILON
+18: CHOICE
+19: SEQUENCE
+20: REF 'xml-id',
+21: ATTRIBUTE "xml:id",
+22: REF 'ID',
+23: DATA 'ID',
+20: CHOICE
+21: ATTRIBUTE "draw:id",
+22: REF 'NCName',
+23: DATA 'NCName',
+21: EPSILON
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "draw:nav-order",
+20: REF 'IDREFS',
+21: DATA 'IDREFS',
+19: EPSILON
+16: CHOICE
+17: REF 'svg-title',
+17: EPSILON
+16: CHOICE
+17: REF 'svg-desc',
+17: EPSILON
+16: CHOICE
+17: REF 'draw-layer-set',
+17: EPSILON
+16: CHOICE
+17: REF 'office-forms',
+18: CHOICE
+17: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'shape',
+19: CHOICE
+20: REF 'shape-instance',
+21: CHOICE
+22: REF 'draw-rect',
+22: REF 'draw-line',
+22: REF 'draw-polyline',
+22: REF 'draw-polygon',
+22: REF 'draw-regular-polygon',
+22: REF 'draw-path',
+22: REF 'draw-circle',
+22: REF 'draw-ellipse',
+22: REF 'draw-g',
+22: REF 'draw-page-thumbnail',
+22: REF 'draw-frame',
+22: REF 'draw-measure',
+22: REF 'draw-caption',
+22: REF 'draw-connector',
+22: REF 'draw-control',
+22: REF 'dr3d-scene',
+22: REF 'draw-custom-shape',
+20: REF 'draw-a',
+17: EPSILON
+16: CHOICE
+17: REF 'presentation-animations',
+18: ELEMENT "presentation:animations",
+19: CHOICE
+20: ONEOREMORE
+21: CHOICE
+22: REF 'presentation-animation-elements',
+23: CHOICE
+24: REF 'presentation-show-shape',
+25: ELEMENT "presentation:show-shape",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-show-text',
+25: ELEMENT "presentation:show-text",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-hide-shape',
+25: ELEMENT "presentation:hide-shape",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-hide-text',
+25: ELEMENT "presentation:hide-text",
+26: SEQUENCE
+27: REF 'common-presentation-effect-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: CHOICE
+30: ATTRIBUTE "presentation:effect",
+31: REF 'presentationEffects',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'fade',
+33: VALUE 'move',
+33: VALUE 'stripes',
+33: VALUE 'open',
+33: VALUE 'close',
+33: VALUE 'dissolve',
+33: VALUE 'wavyline',
+33: VALUE 'random',
+33: VALUE 'lines',
+33: VALUE 'laser',
+33: VALUE 'appear',
+33: VALUE 'hide',
+33: VALUE 'move-short',
+33: VALUE 'checkerboard',
+33: VALUE 'rotate',
+33: VALUE 'stretch',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:direction",
+31: REF 'presentationEffectDirections',
+32: CHOICE
+33: VALUE 'none',
+33: VALUE 'from-left',
+33: VALUE 'from-top',
+33: VALUE 'from-right',
+33: VALUE 'from-bottom',
+33: VALUE 'from-center',
+33: VALUE 'from-upper-left',
+33: VALUE 'from-upper-right',
+33: VALUE 'from-lower-left',
+33: VALUE 'from-lower-right',
+33: VALUE 'to-left',
+33: VALUE 'to-top',
+33: VALUE 'to-right',
+33: VALUE 'to-bottom',
+33: VALUE 'to-upper-left',
+33: VALUE 'to-upper-right',
+33: VALUE 'to-lower-right',
+33: VALUE 'to-lower-left',
+33: VALUE 'path',
+33: VALUE 'spiral-inward-left',
+33: VALUE 'spiral-inward-right',
+33: VALUE 'spiral-outward-left',
+33: VALUE 'spiral-outward-right',
+33: VALUE 'vertical',
+33: VALUE 'horizontal',
+33: VALUE 'to-center',
+33: VALUE 'clockwise',
+33: VALUE 'counter-clockwise',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:speed",
+31: REF 'presentationSpeeds',
+32: CHOICE
+33: VALUE 'slow',
+33: VALUE 'medium',
+33: VALUE 'fast',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:delay",
+31: REF 'duration',
+32: DATA 'duration',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:start-scale",
+31: REF 'percent',
+32: DATA 'string',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "presentation:path-id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-dim',
+25: ELEMENT "presentation:dim",
+26: SEQUENCE
+27: REF 'presentation-dim-attlist',
+28: INTERLEAVE
+29: ATTRIBUTE "draw:shape-id",
+30: REF 'IDREF',
+31: DATA 'IDREF',
+29: ATTRIBUTE "draw:color",
+30: REF 'color',
+31: DATA 'string',
+27: CHOICE
+28: REF 'presentation-sound',
+28: EPSILON
+24: REF 'presentation-play',
+25: ELEMENT "presentation:play",
+26: REF 'presentation-play-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "draw:shape-id",
+29: REF 'IDREF',
+30: DATA 'IDREF',
+28: CHOICE
+29: ATTRIBUTE "presentation:speed",
+30: REF 'presentationSpeeds',
+31: CHOICE
+32: VALUE 'slow',
+32: VALUE 'medium',
+32: VALUE 'fast',
+29: EPSILON
+22: REF 'presentation-animation-group',
+23: ELEMENT "presentation:animation-group",
+24: CHOICE
+25: ONEOREMORE
+26: REF 'presentation-animation-elements',
+27: CHOICE
+28: REF 'presentation-show-shape',
+28: REF 'presentation-show-text',
+28: REF 'presentation-hide-shape',
+28: REF 'presentation-hide-text',
+28: REF 'presentation-dim',
+28: REF 'presentation-play',
+25: EPSILON
+20: EPSILON
+17: REF 'animation-element',
+18: CHOICE
+17: EPSILON
+16: CHOICE
+17: REF 'presentation-notes',
+17: EPSILON
+12: EPSILON
+10: REF 'office-drawing-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:presentation",
+9: SEQUENCE
+10: REF 'office-presentation-attlist',
+11: EPSILON
+10: REF 'office-presentation-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+12: REF 'presentation-decls',
+13: CHOICE
+14: ONEOREMORE
+15: REF 'presentation-decl',
+16: CHOICE
+17: ELEMENT "presentation:header-decl",
+18: SEQUENCE
+19: REF 'presentation-header-decl-attlist',
+20: ATTRIBUTE "presentation:name",
+21: REF 'string',
+22: DATA 'string',
+19: STRING
+17: ELEMENT "presentation:footer-decl",
+18: SEQUENCE
+19: REF 'presentation-footer-decl-attlist',
+20: ATTRIBUTE "presentation:name",
+21: REF 'string',
+22: DATA 'string',
+19: STRING
+17: ELEMENT "presentation:date-time-decl",
+18: SEQUENCE
+19: REF 'presentation-date-time-decl-attlist',
+20: INTERLEAVE
+21: ATTRIBUTE "presentation:name",
+22: REF 'string',
+23: DATA 'string',
+21: ATTRIBUTE "presentation:source",
+22: CHOICE
+23: VALUE 'fixed',
+23: VALUE 'current-date',
+21: CHOICE
+22: ATTRIBUTE "style:data-style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+19: STRING
+14: EPSILON
+10: REF 'office-presentation-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'draw-page',
+12: EPSILON
+10: REF 'office-presentation-content-epilogue',
+11: SEQUENCE
+12: REF 'presentation-settings',
+13: CHOICE
+14: ELEMENT "presentation:settings",
+15: SEQUENCE
+16: REF 'presentation-settings-attlist',
+17: INTERLEAVE
+18: CHOICE
+19: ATTRIBUTE "presentation:start-page",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show",
+20: REF 'string',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:full-screen",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:endless",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:pause",
+20: REF 'duration',
+21: DATA 'duration',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show-logo",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:force-manual",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:mouse-visible",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:mouse-as-pen",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:start-with-navigator",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:animations",
+20: CHOICE
+21: VALUE 'enabled',
+21: VALUE 'disabled',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:transition-on-click",
+20: CHOICE
+21: VALUE 'enabled',
+21: VALUE 'disabled',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:stay-on-top",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "presentation:show-end-of-presentation-slide",
+20: REF 'boolean',
+21: CHOICE
+22: VALUE 'true',
+22: VALUE 'false',
+19: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: REF 'presentation-show',
+19: ELEMENT "presentation:show",
+20: REF 'presentation-show-attlist',
+21: INTERLEAVE
+22: ATTRIBUTE "presentation:name",
+23: REF 'string',
+24: DATA 'string',
+22: ATTRIBUTE "presentation:pages",
+23: REF 'string',
+24: DATA 'string',
+17: EPSILON
+14: EPSILON
+12: REF 'table-functions',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-named-expressions',
+15: EPSILON
+14: CHOICE
+15: REF 'table-database-ranges',
+15: EPSILON
+14: CHOICE
+15: REF 'table-data-pilot-tables',
+15: EPSILON
+14: CHOICE
+15: REF 'table-consolidation',
+15: EPSILON
+14: CHOICE
+15: REF 'table-dde-links',
+15: EPSILON
+8: ELEMENT "office:spreadsheet",
+9: SEQUENCE
+10: REF 'office-spreadsheet-attlist',
+11: SEQUENCE
+12: CHOICE
+13: ATTRIBUTE "table:structure-protected",
+14: REF 'boolean',
+15: CHOICE
+16: VALUE 'true',
+16: VALUE 'false',
+13: EPSILON
+12: CHOICE
+13: ATTRIBUTE "table:protection-key",
+14: REF 'string',
+15: DATA 'string',
+13: EPSILON
+12: CHOICE
+13: ATTRIBUTE "table:protection-key-digest-algorithm",
+14: REF 'anyIRI',
+15: DATA 'anyURI',
+13: EPSILON
+10: REF 'office-spreadsheet-content-prelude',
+11: SEQUENCE
+12: CHOICE
+13: REF 'table-tracked-changes',
+14: ELEMENT "table:tracked-changes",
+15: SEQUENCE
+16: REF 'table-tracked-changes-attlist',
+17: CHOICE
+18: ATTRIBUTE "table:track-changes",
+19: REF 'boolean',
+20: CHOICE
+21: VALUE 'true',
+21: VALUE 'false',
+18: EPSILON
+16: CHOICE
+17: ONEOREMORE
+18: CHOICE
+19: REF 'table-cell-content-change',
+20: ELEMENT "table:cell-content-change",
+21: SEQUENCE
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'table-cell-address',
+23: ELEMENT "table:cell-address",
+24: REF 'common-table-cell-address-attlist',
+25: SEQUENCE
+26: ATTRIBUTE "table:column",
+27: REF 'integer',
+28: DATA 'integer',
+26: ATTRIBUTE "table:row",
+27: REF 'integer',
+28: DATA 'integer',
+26: ATTRIBUTE "table:table",
+27: REF 'integer',
+28: DATA 'integer',
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+24: ELEMENT "table:dependencies",
+25: ONEOREMORE
+26: REF 'table-dependency',
+27: ELEMENT "table:dependency",
+28: ATTRIBUTE "table:id",
+29: REF 'string',
+30: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+24: ELEMENT "table:deletions",
+25: ONEOREMORE
+26: CHOICE
+27: REF 'table-cell-content-deletion',
+28: ELEMENT "table:cell-content-deletion",
+29: SEQUENCE
+30: CHOICE
+31: ATTRIBUTE "table:id",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+30: CHOICE
+31: REF 'table-cell-address',
+31: EPSILON
+30: CHOICE
+31: REF 'table-change-track-table-cell',
+32: ELEMENT "table:change-track-table-cell",
+33: SEQUENCE
+34: REF 'table-change-track-table-cell-attlist',
+35: INTERLEAVE
+36: CHOICE
+37: ATTRIBUTE "table:cell-address",
+38: REF 'cellAddress',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "table:matrix-covered",
+38: REF 'boolean',
+39: CHOICE
+40: VALUE 'true',
+40: VALUE 'false',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "table:formula",
+38: REF 'string',
+39: DATA 'string',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "table:number-matrix-columns-spanned",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+37: EPSILON
+36: CHOICE
+37: ATTRIBUTE "table:number-matrix-rows-spanned",
+38: REF 'positiveInteger',
+39: DATA 'positiveInteger',
+37: EPSILON
+36: CHOICE
+37: REF 'common-value-and-type-attlist',
+38: CHOICE
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'float',
+40: ATTRIBUTE "office:value",
+41: REF 'double',
+42: DATA 'double',
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'percentage',
+40: ATTRIBUTE "office:value",
+41: REF 'double',
+42: DATA 'double',
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'currency',
+40: ATTRIBUTE "office:value",
+41: REF 'double',
+42: DATA 'double',
+40: CHOICE
+41: ATTRIBUTE "office:currency",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'date',
+40: ATTRIBUTE "office:date-value",
+41: REF 'dateOrDateTime',
+42: CHOICE
+43: DATA 'date',
+43: DATA 'dateTime',
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'time',
+40: ATTRIBUTE "office:time-value",
+41: REF 'duration',
+42: DATA 'duration',
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'boolean',
+40: ATTRIBUTE "office:boolean-value",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+39: SEQUENCE
+40: ATTRIBUTE "office:value-type",
+41: VALUE 'string',
+40: CHOICE
+41: ATTRIBUTE "office:string-value",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+37: EPSILON
+34: CHOICE
+35: ONEOREMORE
+36: REF 'text-p',
+35: EPSILON
+31: EPSILON
+27: REF 'table-change-deletion',
+28: ELEMENT "table:change-deletion",
+29: CHOICE
+30: ATTRIBUTE "table:id",
+31: REF 'string',
+32: DATA 'string',
+30: EPSILON
+23: EPSILON
+22: REF 'table-previous',
+23: ELEMENT "table:previous",
+24: SEQUENCE
+25: CHOICE
+26: ATTRIBUTE "table:id",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: REF 'table-change-track-table-cell',
+19: REF 'table-insertion',
+20: ELEMENT "table:insertion",
+21: SEQUENCE
+22: REF 'table-insertion-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:type",
+25: CHOICE
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'table',
+24: ATTRIBUTE "table:position",
+25: REF 'integer',
+26: DATA 'integer',
+24: CHOICE
+25: ATTRIBUTE "table:count",
+26: REF 'positiveInteger',
+27: DATA 'positiveInteger',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:table",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+19: REF 'table-deletion',
+20: ELEMENT "table:deletion",
+21: SEQUENCE
+22: REF 'table-deletion-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:type",
+25: CHOICE
+26: VALUE 'row',
+26: VALUE 'column',
+26: VALUE 'table',
+24: ATTRIBUTE "table:position",
+25: REF 'integer',
+26: DATA 'integer',
+24: CHOICE
+25: ATTRIBUTE "table:table",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:multi-deletion-spanned",
+26: REF 'integer',
+27: DATA 'integer',
+25: EPSILON
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+22: CHOICE
+23: REF 'table-cut-offs',
+24: ELEMENT "table:cut-offs",
+25: CHOICE
+26: ONEOREMORE
+27: REF 'table-movement-cut-off',
+28: ELEMENT "table:movement-cut-off",
+29: REF 'table-movement-cut-off-attlist',
+30: CHOICE
+31: ATTRIBUTE "table:position",
+32: REF 'integer',
+33: DATA 'integer',
+31: SEQUENCE
+32: ATTRIBUTE "table:start-position",
+33: REF 'integer',
+34: DATA 'integer',
+32: ATTRIBUTE "table:end-position",
+33: REF 'integer',
+34: DATA 'integer',
+26: SEQUENCE
+27: REF 'table-insertion-cut-off',
+28: ELEMENT "table:insertion-cut-off",
+29: REF 'table-insertion-cut-off-attlist',
+30: INTERLEAVE
+31: ATTRIBUTE "table:id",
+32: REF 'string',
+33: DATA 'string',
+31: ATTRIBUTE "table:position",
+32: REF 'integer',
+33: DATA 'integer',
+27: CHOICE
+28: ONEOREMORE
+29: REF 'table-movement-cut-off',
+28: EPSILON
+23: EPSILON
+19: REF 'table-movement',
+20: ELEMENT "table:movement",
+21: SEQUENCE
+22: REF 'common-table-change-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "table:id",
+25: REF 'string',
+26: DATA 'string',
+24: CHOICE
+25: ATTRIBUTE "table:acceptance-state",
+26: CHOICE
+27: VALUE 'accepted',
+27: VALUE 'rejected',
+27: VALUE 'pending',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "table:rejecting-change-id",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+22: REF 'table-source-range-address',
+23: ELEMENT "table:source-range-address",
+24: REF 'common-table-range-attlist',
+25: CHOICE
+26: REF 'common-table-cell-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:table",
+29: REF 'integer',
+30: DATA 'integer',
+26: REF 'common-table-cell-range-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:start-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-table",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-table",
+29: REF 'integer',
+30: DATA 'integer',
+22: REF 'table-target-range-address',
+23: ELEMENT "table:target-range-address",
+24: REF 'common-table-range-attlist',
+25: CHOICE
+26: REF 'common-table-cell-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:table",
+29: REF 'integer',
+30: DATA 'integer',
+26: REF 'common-table-cell-range-address-attlist',
+27: SEQUENCE
+28: ATTRIBUTE "table:start-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:start-table",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-column",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-row",
+29: REF 'integer',
+30: DATA 'integer',
+28: ATTRIBUTE "table:end-table",
+29: REF 'integer',
+30: DATA 'integer',
+22: REF 'office-change-info',
+22: CHOICE
+23: REF 'table-dependencies',
+23: EPSILON
+22: CHOICE
+23: REF 'table-deletions',
+23: EPSILON
+17: EPSILON
+13: EPSILON
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-spreadsheet-content-main',
+11: CHOICE
+12: ONEOREMORE
+13: REF 'table-table',
+12: EPSILON
+10: REF 'office-spreadsheet-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:chart",
+9: SEQUENCE
+10: REF 'office-chart-attlist',
+11: EPSILON
+10: REF 'office-chart-content-prelude',
+11: SEQUENCE
+12: REF 'text-decls',
+13: SEQUENCE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+14: CHOICE
+15: REF 'text-alphabetical-index-auto-mark-file',
+15: EPSILON
+12: REF 'table-decls',
+13: SEQUENCE
+14: CHOICE
+15: REF 'table-calculation-settings',
+15: EPSILON
+14: CHOICE
+15: REF 'table-content-validations',
+15: EPSILON
+14: CHOICE
+15: REF 'table-label-ranges',
+15: EPSILON
+10: REF 'office-chart-content-main',
+11: REF 'chart-chart',
+12: ELEMENT "chart:chart",
+13: SEQUENCE
+14: REF 'chart-chart-attlist',
+15: INTERLEAVE
+16: ATTRIBUTE "chart:class",
+17: REF 'namespacedToken',
+18: DATA 'QName',
+16: REF 'common-draw-size-attlist',
+17: SEQUENCE
+18: CHOICE
+19: ATTRIBUTE "svg:width",
+20: REF 'length',
+21: DATA 'string',
+19: EPSILON
+18: CHOICE
+19: ATTRIBUTE "svg:height",
+20: REF 'length',
+21: DATA 'string',
+19: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:column-mapping",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:row-mapping",
+18: REF 'string',
+19: DATA 'string',
+17: EPSILON
+16: CHOICE
+17: ATTRIBUTE "chart:style-name",
+18: REF 'styleNameRef',
+19: CHOICE
+20: DATA 'NCName',
+20: EPSILON
+17: EPSILON
+16: CHOICE
+17: SEQUENCE
+18: ATTRIBUTE "xlink:type",
+19: VALUE 'simple',
+18: ATTRIBUTE "xlink:href",
+19: REF 'anyIRI',
+20: DATA 'anyURI',
+17: EPSILON
+16: CHOICE
+17: REF 'xml-id',
+18: ATTRIBUTE "xml:id",
+19: REF 'ID',
+20: DATA 'ID',
+17: EPSILON
+14: CHOICE
+15: REF 'chart-title',
+16: ELEMENT "chart:title",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellRangeAddressList',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-subtitle',
+16: ELEMENT "chart:subtitle",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellRangeAddressList',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-footer',
+16: ELEMENT "chart:footer",
+17: SEQUENCE
+18: REF 'chart-title-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "table:cell-range",
+22: REF 'cellRangeAddressList',
+23: DATA 'string',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'chart-legend',
+16: ELEMENT "chart:legend",
+17: SEQUENCE
+18: REF 'chart-legend-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: SEQUENCE
+22: ATTRIBUTE "chart:legend-position",
+23: CHOICE
+24: VALUE 'start',
+24: VALUE 'end',
+24: VALUE 'top',
+24: VALUE 'bottom',
+22: CHOICE
+23: ATTRIBUTE "chart:legend-align",
+24: CHOICE
+25: VALUE 'start',
+25: VALUE 'center',
+25: VALUE 'end',
+23: EPSILON
+21: ATTRIBUTE "chart:legend-position",
+22: CHOICE
+23: VALUE 'top-start',
+23: VALUE 'bottom-start',
+23: VALUE 'top-end',
+23: VALUE 'bottom-end',
+21: EPSILON
+20: REF 'common-draw-position-attlist',
+21: SEQUENCE
+22: CHOICE
+23: ATTRIBUTE "svg:x",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "svg:y",
+24: REF 'coordinate',
+25: REF 'length',
+26: DATA 'string',
+23: EPSILON
+20: CHOICE
+21: ATTRIBUTE "style:legend-expansion",
+22: CHOICE
+23: VALUE 'wide',
+23: VALUE 'high',
+23: VALUE 'balanced',
+21: SEQUENCE
+22: ATTRIBUTE "style:legend-expansion",
+23: VALUE 'custom',
+22: ATTRIBUTE "style:legend-expansion-aspect-ratio",
+23: REF 'double',
+24: DATA 'double',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "chart:style-name",
+22: REF 'styleNameRef',
+23: CHOICE
+24: DATA 'NCName',
+24: EPSILON
+21: EPSILON
+18: CHOICE
+19: REF 'text-p',
+19: EPSILON
+15: EPSILON
+14: REF 'chart-plot-area',
+15: ELEMENT "chart:plot-area",
+16: SEQUENCE
+17: REF 'chart-plot-area-attlist',
+18: INTERLEAVE
+19: REF 'common-draw-position-attlist',
+20: SEQUENCE
+21: CHOICE
+22: ATTRIBUTE "svg:x",
+23: REF 'coordinate',
+24: REF 'length',
+25: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "svg:y",
+23: REF 'coordinate',
+24: REF 'length',
+25: DATA 'string',
+22: EPSILON
+19: REF 'common-draw-size-attlist',
+20: SEQUENCE
+21: CHOICE
+22: ATTRIBUTE "svg:width",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "svg:height",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:style-name",
+21: REF 'styleNameRef',
+22: CHOICE
+23: DATA 'NCName',
+23: EPSILON
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "table:cell-range-address",
+21: REF 'cellRangeAddressList',
+22: DATA 'string',
+20: EPSILON
+19: CHOICE
+20: ATTRIBUTE "chart:data-source-has-labels",
+21: CHOICE
+22: VALUE 'none',
+22: VALUE 'row',
+22: VALUE 'column',
+22: VALUE 'both',
+20: EPSILON
+19: REF 'dr3d-scene-attlist',
+20: INTERLEAVE
+21: CHOICE
+22: ATTRIBUTE "dr3d:vrp",
+23: REF 'vector3D',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:vpn",
+23: REF 'vector3D',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:vup",
+23: REF 'vector3D',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:projection",
+23: CHOICE
+24: VALUE 'parallel',
+24: VALUE 'perspective',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:distance",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:focal-length",
+23: REF 'length',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:shadow-slant",
+23: REF 'angle',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:shade-mode",
+23: CHOICE
+24: VALUE 'flat',
+24: VALUE 'phong',
+24: VALUE 'gouraud',
+24: VALUE 'draft',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:ambient-color",
+23: REF 'color',
+24: DATA 'string',
+22: EPSILON
+21: CHOICE
+22: ATTRIBUTE "dr3d:lighting-mode",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+19: REF 'common-dr3d-transform-attlist',
+20: CHOICE
+21: ATTRIBUTE "dr3d:transform",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+19: CHOICE
+20: REF 'xml-id',
+21: ATTRIBUTE "xml:id",
+22: REF 'ID',
+23: DATA 'ID',
+20: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'dr3d-light',
+18: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'chart-axis',
+20: ELEMENT "chart:axis",
+21: SEQUENCE
+22: REF 'chart-axis-attlist',
+23: INTERLEAVE
+24: ATTRIBUTE "chart:dimension",
+25: REF 'chart-dimension',
+26: CHOICE
+27: VALUE 'x',
+27: VALUE 'y',
+27: VALUE 'z',
+24: CHOICE
+25: ATTRIBUTE "chart:name",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:style-name",
+26: REF 'styleNameRef',
+27: CHOICE
+28: DATA 'NCName',
+28: EPSILON
+25: EPSILON
+22: CHOICE
+23: REF 'chart-title',
+23: EPSILON
+22: CHOICE
+23: REF 'chart-categories',
+24: ELEMENT "chart:categories",
+25: CHOICE
+26: ATTRIBUTE "table:cell-range-address",
+27: REF 'cellRangeAddressList',
+28: DATA 'string',
+26: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-grid',
+25: ELEMENT "chart:grid",
+26: REF 'chart-grid-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "chart:class",
+30: CHOICE
+31: VALUE 'major',
+31: VALUE 'minor',
+29: EPSILON
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: ONEOREMORE
+19: REF 'chart-series',
+20: ELEMENT "chart:series",
+21: SEQUENCE
+22: REF 'chart-series-attlist',
+23: INTERLEAVE
+24: CHOICE
+25: ATTRIBUTE "chart:values-cell-range-address",
+26: REF 'cellRangeAddressList',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:label-cell-address",
+26: REF 'cellRangeAddressList',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:class",
+26: REF 'namespacedToken',
+27: DATA 'QName',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:attached-axis",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+24: CHOICE
+25: ATTRIBUTE "chart:style-name",
+26: REF 'styleNameRef',
+27: CHOICE
+28: DATA 'NCName',
+28: EPSILON
+25: EPSILON
+24: CHOICE
+25: REF 'xml-id',
+26: ATTRIBUTE "xml:id",
+27: REF 'ID',
+28: DATA 'ID',
+25: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-domain',
+25: ELEMENT "chart:domain",
+26: CHOICE
+27: ATTRIBUTE "table:cell-range-address",
+28: REF 'cellRangeAddressList',
+29: DATA 'string',
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-mean-value',
+24: ELEMENT "chart:mean-value",
+25: REF 'chart-mean-value-attlist',
+26: CHOICE
+27: ATTRIBUTE "chart:style-name",
+28: REF 'styleNameRef',
+29: CHOICE
+30: DATA 'NCName',
+30: EPSILON
+27: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-regression-curve',
+25: ELEMENT "chart:regression-curve",
+26: SEQUENCE
+27: REF 'chart-regression-curve-attlist',
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+27: CHOICE
+28: REF 'chart-equation',
+29: ELEMENT "chart:equation",
+30: SEQUENCE
+31: REF 'chart-equation-attlist',
+32: INTERLEAVE
+33: CHOICE
+34: ATTRIBUTE "chart:automatic-content",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "chart:display-r-square",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "chart:display-equation",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: EPSILON
+33: REF 'common-draw-position-attlist',
+34: SEQUENCE
+35: CHOICE
+36: ATTRIBUTE "svg:x",
+37: REF 'coordinate',
+38: REF 'length',
+39: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "svg:y",
+37: REF 'coordinate',
+38: REF 'length',
+39: DATA 'string',
+36: EPSILON
+33: CHOICE
+34: ATTRIBUTE "chart:style-name",
+35: REF 'styleNameRef',
+36: CHOICE
+37: DATA 'NCName',
+37: EPSILON
+34: EPSILON
+31: CHOICE
+32: REF 'text-p',
+32: EPSILON
+28: EPSILON
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-error-indicator',
+25: ELEMENT "chart:error-indicator",
+26: REF 'chart-error-indicator-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "chart:style-name",
+30: REF 'styleNameRef',
+31: CHOICE
+32: DATA 'NCName',
+32: EPSILON
+29: EPSILON
+28: ATTRIBUTE "chart:dimension",
+29: REF 'chart-dimension',
+30: CHOICE
+31: VALUE 'x',
+31: VALUE 'y',
+31: VALUE 'z',
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'chart-data-point',
+25: ELEMENT "chart:data-point",
+26: SEQUENCE
+27: REF 'chart-data-point-attlist',
+28: INTERLEAVE
+29: CHOICE
+30: ATTRIBUTE "chart:repeated",
+31: REF 'positiveInteger',
+32: DATA 'positiveInteger',
+30: EPSILON
+29: CHOICE
+30: ATTRIBUTE "chart:style-name",
+31: REF 'styleNameRef',
+32: CHOICE
+33: DATA 'NCName',
+33: EPSILON
+30: EPSILON
+29: CHOICE
+30: REF 'xml-id',
+31: ATTRIBUTE "xml:id",
+32: REF 'ID',
+33: DATA 'ID',
+30: EPSILON
+27: CHOICE
+28: REF 'chart-data-label',
+29: ELEMENT "chart:data-label",
+30: SEQUENCE
+31: REF 'chart-data-label-attlist',
+32: INTERLEAVE
+33: REF 'common-draw-position-attlist',
+34: SEQUENCE
+35: CHOICE
+36: ATTRIBUTE "svg:x",
+37: REF 'coordinate',
+38: REF 'length',
+39: DATA 'string',
+36: EPSILON
+35: CHOICE
+36: ATTRIBUTE "svg:y",
+37: REF 'coordinate',
+38: REF 'length',
+39: DATA 'string',
+36: EPSILON
+33: CHOICE
+34: ATTRIBUTE "chart:style-name",
+35: REF 'styleNameRef',
+36: CHOICE
+37: DATA 'NCName',
+37: EPSILON
+34: EPSILON
+31: CHOICE
+32: REF 'text-p',
+32: EPSILON
+28: EPSILON
+23: EPSILON
+22: CHOICE
+23: REF 'chart-data-label',
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-gain-marker',
+19: ELEMENT "chart:stock-gain-marker",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-loss-marker',
+19: ELEMENT "chart:stock-loss-marker",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-stock-range-line',
+19: ELEMENT "chart:stock-range-line",
+20: REF 'common-stock-marker-attlist',
+21: CHOICE
+22: ATTRIBUTE "chart:style-name",
+23: REF 'styleNameRef',
+24: CHOICE
+25: DATA 'NCName',
+25: EPSILON
+22: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-wall',
+19: ELEMENT "chart:wall",
+20: REF 'chart-wall-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "chart:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+18: EPSILON
+17: CHOICE
+18: REF 'chart-floor',
+19: ELEMENT "chart:floor",
+20: REF 'chart-floor-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "svg:width",
+24: REF 'length',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "chart:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+18: EPSILON
+14: CHOICE
+15: REF 'table-table',
+15: EPSILON
+10: REF 'office-chart-content-epilogue',
+11: REF 'table-functions',
+12: SEQUENCE
+13: CHOICE
+14: REF 'table-named-expressions',
+14: EPSILON
+13: CHOICE
+14: REF 'table-database-ranges',
+14: EPSILON
+13: CHOICE
+14: REF 'table-data-pilot-tables',
+14: EPSILON
+13: CHOICE
+14: REF 'table-consolidation',
+14: EPSILON
+13: CHOICE
+14: REF 'table-dde-links',
+14: EPSILON
+8: ELEMENT "office:image",
+9: SEQUENCE
+10: REF 'office-image-attlist',
+11: EPSILON
+10: REF 'office-image-content-prelude',
+11: EPSILON
+10: REF 'office-image-content-main',
+11: REF 'draw-frame',
+10: REF 'office-image-content-epilogue',
+11: EPSILON
+8: REF 'office-database',
+9: ELEMENT "office:database",
+10: SEQUENCE
+11: REF 'db-data-source',
+12: ELEMENT "db:data-source",
+13: SEQUENCE
+14: REF 'db-data-source-attlist',
+15: EPSILON
+14: REF 'db-connection-data',
+15: ELEMENT "db:connection-data",
+16: SEQUENCE
+17: REF 'db-connection-data-attlist',
+18: EPSILON
+17: CHOICE
+18: REF 'db-database-description',
+19: ELEMENT "db:database-description",
+20: SEQUENCE
+21: REF 'db-database-description-attlist',
+22: EPSILON
+21: CHOICE
+22: REF 'db-file-based-database',
+23: ELEMENT "db:file-based-database",
+24: REF 'db-file-based-database-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "xlink:type",
+27: VALUE 'simple',
+26: ATTRIBUTE "xlink:href",
+27: REF 'anyIRI',
+28: DATA 'anyURI',
+26: ATTRIBUTE "db:media-type",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "db:extension",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+22: REF 'db-server-database',
+23: ELEMENT "db:server-database",
+24: REF 'db-server-database-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "db:type",
+27: REF 'namespacedToken',
+28: DATA 'QName',
+26: CHOICE
+27: REF 'db-host-and-port',
+28: SEQUENCE
+29: ATTRIBUTE "db:hostname",
+30: REF 'string',
+31: DATA 'string',
+29: CHOICE
+30: ATTRIBUTE "db:port",
+31: REF 'positiveInteger',
+32: DATA 'positiveInteger',
+30: EPSILON
+27: REF 'db-local-socket-name',
+28: CHOICE
+29: ATTRIBUTE "db:local-socket",
+30: REF 'string',
+31: DATA 'string',
+29: EPSILON
+26: CHOICE
+27: ATTRIBUTE "db:database-name",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+18: REF 'db-connection-resource',
+19: ELEMENT "db:connection-resource",
+20: REF 'db-connection-resource-attlist',
+21: SEQUENCE
+22: ATTRIBUTE "xlink:type",
+23: VALUE 'simple',
+22: ATTRIBUTE "xlink:href",
+23: REF 'anyIRI',
+24: DATA 'anyURI',
+22: CHOICE
+23: ATTRIBUTE "xlink:show",
+24: VALUE 'none',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "xlink:actuate",
+24: VALUE 'onRequest',
+23: EPSILON
+17: CHOICE
+18: REF 'db-login',
+19: ELEMENT "db:login",
+20: REF 'db-login-attlist',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "db:user-name",
+24: REF 'string',
+25: DATA 'string',
+23: ATTRIBUTE "db:use-system-user",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "db:is-password-required",
+24: REF 'boolean',
+25: CHOICE
+26: VALUE 'true',
+26: VALUE 'false',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "db:login-timeout",
+24: REF 'positiveInteger',
+25: DATA 'positiveInteger',
+23: EPSILON
+18: EPSILON
+14: CHOICE
+15: REF 'db-driver-settings',
+16: ELEMENT "db:driver-settings",
+17: SEQUENCE
+18: REF 'db-driver-settings-attlist',
+19: INTERLEAVE
+20: REF 'db-show-deleted',
+21: CHOICE
+22: ATTRIBUTE "db:show-deleted",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:system-driver-settings",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:base-dn",
+22: REF 'string',
+23: DATA 'string',
+21: EPSILON
+20: REF 'db-is-first-row-header-line',
+21: CHOICE
+22: ATTRIBUTE "db:is-first-row-header-line",
+23: REF 'boolean',
+24: CHOICE
+25: VALUE 'true',
+25: VALUE 'false',
+22: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:parameter-name-substitution",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+18: CHOICE
+19: REF 'db-auto-increment',
+20: ELEMENT "db:auto-increment",
+21: REF 'db-auto-increment-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "db:additional-column-statement",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "db:row-retrieving-statement",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'db-delimiter',
+20: ELEMENT "db:delimiter",
+21: REF 'db-delimiter-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "db:field",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "db:string",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "db:decimal",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "db:thousand",
+25: REF 'string',
+26: DATA 'string',
+24: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'db-character-set',
+20: ELEMENT "db:character-set",
+21: REF 'db-character-set-attlist',
+22: CHOICE
+23: ATTRIBUTE "db:encoding",
+24: REF 'textEncoding',
+25: DATA 'string',
+23: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'db-table-settings',
+20: ELEMENT "db:table-settings",
+21: CHOICE
+22: ONEOREMORE
+23: REF 'db-table-setting',
+24: ELEMENT "db:table-setting",
+25: SEQUENCE
+26: REF 'db-table-setting-attlist',
+27: SEQUENCE
+28: REF 'db-is-first-row-header-line',
+29: CHOICE
+30: ATTRIBUTE "db:is-first-row-header-line",
+31: REF 'boolean',
+32: CHOICE
+33: VALUE 'true',
+33: VALUE 'false',
+30: EPSILON
+28: REF 'db-show-deleted',
+29: CHOICE
+30: ATTRIBUTE "db:show-deleted",
+31: REF 'boolean',
+32: CHOICE
+33: VALUE 'true',
+33: VALUE 'false',
+30: EPSILON
+26: CHOICE
+27: REF 'db-delimiter',
+27: EPSILON
+26: CHOICE
+27: REF 'db-character-set',
+27: EPSILON
+22: EPSILON
+19: EPSILON
+15: EPSILON
+14: CHOICE
+15: REF 'db-application-connection-settings',
+16: ELEMENT "db:application-connection-settings",
+17: SEQUENCE
+18: REF 'db-application-connection-settings-attlist',
+19: INTERLEAVE
+20: CHOICE
+21: ATTRIBUTE "db:is-table-name-length-limited",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:enable-sql92-check",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:append-table-alias-name",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:ignore-driver-privileges",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:boolean-comparison-mode",
+22: CHOICE
+23: VALUE 'equal-integer',
+23: VALUE 'is-boolean',
+23: VALUE 'equal-boolean',
+23: VALUE 'equal-use-only-zero',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:use-catalog",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:max-row-count",
+22: REF 'integer',
+23: DATA 'integer',
+21: EPSILON
+20: CHOICE
+21: ATTRIBUTE "db:suppress-version-columns",
+22: REF 'boolean',
+23: CHOICE
+24: VALUE 'true',
+24: VALUE 'false',
+21: EPSILON
+18: CHOICE
+19: REF 'db-table-filter',
+20: ELEMENT "db:table-filter",
+21: SEQUENCE
+22: REF 'db-table-filter-attlist',
+23: EPSILON
+22: CHOICE
+23: REF 'db-table-include-filter',
+24: ELEMENT "db:table-include-filter",
+25: SEQUENCE
+26: REF 'db-table-include-filter-attlist',
+27: EPSILON
+26: ONEOREMORE
+27: REF 'db-table-filter-pattern',
+28: ELEMENT "db:table-filter-pattern",
+29: SEQUENCE
+30: REF 'db-table-filter-pattern-attlist',
+31: EPSILON
+30: REF 'string',
+31: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: REF 'db-table-exclude-filter',
+24: ELEMENT "db:table-exclude-filter",
+25: SEQUENCE
+26: REF 'db-table-exclude-filter-attlist',
+27: EPSILON
+26: ONEOREMORE
+27: REF 'db-table-filter-pattern',
+23: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'db-table-type-filter',
+20: ELEMENT "db:table-type-filter",
+21: SEQUENCE
+22: REF 'db-table-type-filter-attlist',
+23: EPSILON
+22: CHOICE
+23: ONEOREMORE
+24: REF 'db-table-type',
+25: ELEMENT "db:table-type",
+26: SEQUENCE
+27: REF 'db-table-type-attlist',
+28: EPSILON
+27: REF 'string',
+28: DATA 'string',
+23: EPSILON
+19: EPSILON
+18: CHOICE
+19: REF 'db-data-source-settings',
+20: ELEMENT "db:data-source-settings",
+21: SEQUENCE
+22: REF 'db-data-source-settings-attlist',
+23: EPSILON
+22: ONEOREMORE
+23: REF 'db-data-source-setting',
+24: ELEMENT "db:data-source-setting",
+25: SEQUENCE
+26: REF 'db-data-source-setting-attlist',
+27: INTERLEAVE
+28: CHOICE
+29: ATTRIBUTE "db:data-source-setting-is-list",
+30: REF 'boolean',
+31: CHOICE
+32: VALUE 'true',
+32: VALUE 'false',
+29: EPSILON
+28: ATTRIBUTE "db:data-source-setting-name",
+29: REF 'string',
+30: DATA 'string',
+28: ATTRIBUTE "db:data-source-setting-type",
+29: REF 'db-data-source-setting-types',
+30: CHOICE
+31: VALUE 'boolean',
+31: VALUE 'short',
+31: VALUE 'int',
+31: VALUE 'long',
+31: VALUE 'double',
+31: VALUE 'string',
+26: ONEOREMORE
+27: REF 'db-data-source-setting-value',
+28: ELEMENT "db:data-source-setting-value",
+29: SEQUENCE
+30: REF 'db-data-source-setting-value-attlist',
+31: EPSILON
+30: REF 'string',
+31: DATA 'string',
+19: EPSILON
+15: EPSILON
+11: CHOICE
+12: REF 'db-forms',
+13: ELEMENT "db:forms",
+14: SEQUENCE
+15: REF 'db-forms-attlist',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: CHOICE
+18: REF 'db-component',
+19: ELEMENT "db:component",
+20: SEQUENCE
+21: REF 'db-component-attlist',
+22: INTERLEAVE
+23: CHOICE
+24: SEQUENCE
+25: ATTRIBUTE "xlink:type",
+26: VALUE 'simple',
+25: ATTRIBUTE "xlink:href",
+26: REF 'anyIRI',
+27: DATA 'anyURI',
+25: CHOICE
+26: ATTRIBUTE "xlink:show",
+27: VALUE 'none',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "xlink:actuate",
+27: VALUE 'onRequest',
+26: EPSILON
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "db:as-template",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: REF 'common-db-object-name',
+22: ATTRIBUTE "db:name",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-db-object-title',
+22: CHOICE
+23: ATTRIBUTE "db:title",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-db-object-description',
+22: CHOICE
+23: ATTRIBUTE "db:description",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: CHOICE
+22: REF 'office-document',
+22: REF 'math-math',
+22: EPSILON
+18: REF 'db-component-collection',
+19: ELEMENT "db:component-collection",
+20: SEQUENCE
+21: REF 'db-component-collection-attlist',
+22: EPSILON
+21: REF 'common-db-object-name',
+22: ATTRIBUTE "db:name",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-db-object-title',
+22: CHOICE
+23: ATTRIBUTE "db:title",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-db-object-description',
+22: CHOICE
+23: ATTRIBUTE "db:description",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'db-component',
+24: REF 'db-component-collection',
+22: EPSILON
+16: EPSILON
+12: EPSILON
+11: CHOICE
+12: REF 'db-reports',
+13: ELEMENT "db:reports",
+14: SEQUENCE
+15: REF 'db-reports-attlist',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: CHOICE
+18: REF 'db-component',
+18: REF 'db-component-collection',
+16: EPSILON
+12: EPSILON
+11: CHOICE
+12: REF 'db-queries',
+13: ELEMENT "db:queries",
+14: SEQUENCE
+15: REF 'db-queries-attlist',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: CHOICE
+18: REF 'db-query',
+19: ELEMENT "db:query",
+20: SEQUENCE
+21: REF 'db-query-attlist',
+22: INTERLEAVE
+23: ATTRIBUTE "db:command",
+24: REF 'string',
+25: DATA 'string',
+23: CHOICE
+24: ATTRIBUTE "db:escape-processing",
+25: REF 'boolean',
+26: CHOICE
+27: VALUE 'true',
+27: VALUE 'false',
+24: EPSILON
+21: REF 'common-db-object-name',
+22: ATTRIBUTE "db:name",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-db-object-title',
+22: CHOICE
+23: ATTRIBUTE "db:title",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-db-object-description',
+22: CHOICE
+23: ATTRIBUTE "db:description",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-db-table-style-name',
+22: INTERLEAVE
+23: CHOICE
+24: ATTRIBUTE "db:style-name",
+25: REF 'styleNameRef',
+26: CHOICE
+27: DATA 'NCName',
+27: EPSILON
+24: EPSILON
+23: CHOICE
+24: ATTRIBUTE "db:default-row-style-name",
+25: REF 'styleNameRef',
+26: CHOICE
+27: DATA 'NCName',
+27: EPSILON
+24: EPSILON
+21: CHOICE
+22: REF 'db-order-statement',
+23: ELEMENT "db:order-statement",
+24: SEQUENCE
+25: REF 'db-command',
+26: ATTRIBUTE "db:command",
+27: REF 'string',
+28: DATA 'string',
+25: REF 'db-apply-command',
+26: CHOICE
+27: ATTRIBUTE "db:apply-command",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'db-filter-statement',
+23: ELEMENT "db:filter-statement",
+24: SEQUENCE
+25: REF 'db-command',
+26: ATTRIBUTE "db:command",
+27: REF 'string',
+28: DATA 'string',
+25: REF 'db-apply-command',
+26: CHOICE
+27: ATTRIBUTE "db:apply-command",
+28: REF 'boolean',
+29: CHOICE
+30: VALUE 'true',
+30: VALUE 'false',
+27: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'db-columns',
+23: ELEMENT "db:columns",
+24: SEQUENCE
+25: REF 'db-columns-attlist',
+26: EPSILON
+25: ONEOREMORE
+26: REF 'db-column',
+27: ELEMENT "db:column",
+28: SEQUENCE
+29: REF 'db-column-attlist',
+30: INTERLEAVE
+31: CHOICE
+32: ATTRIBUTE "db:visible",
+33: REF 'boolean',
+34: CHOICE
+35: VALUE 'true',
+35: VALUE 'false',
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "db:style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+31: CHOICE
+32: ATTRIBUTE "db:default-cell-style-name",
+33: REF 'styleNameRef',
+34: CHOICE
+35: DATA 'NCName',
+35: EPSILON
+32: EPSILON
+29: REF 'common-db-object-name',
+30: ATTRIBUTE "db:name",
+31: REF 'string',
+32: DATA 'string',
+29: REF 'common-db-object-title',
+30: CHOICE
+31: ATTRIBUTE "db:title",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+29: REF 'common-db-object-description',
+30: CHOICE
+31: ATTRIBUTE "db:description",
+32: REF 'string',
+33: DATA 'string',
+31: EPSILON
+29: REF 'common-db-default-value',
+30: CHOICE
+31: REF 'common-value-and-type-attlist',
+32: CHOICE
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'float',
+34: ATTRIBUTE "office:value",
+35: REF 'double',
+36: DATA 'double',
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'percentage',
+34: ATTRIBUTE "office:value",
+35: REF 'double',
+36: DATA 'double',
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'currency',
+34: ATTRIBUTE "office:value",
+35: REF 'double',
+36: DATA 'double',
+34: CHOICE
+35: ATTRIBUTE "office:currency",
+36: REF 'string',
+37: DATA 'string',
+35: EPSILON
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'date',
+34: ATTRIBUTE "office:date-value",
+35: REF 'dateOrDateTime',
+36: CHOICE
+37: DATA 'date',
+37: DATA 'dateTime',
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'time',
+34: ATTRIBUTE "office:time-value",
+35: REF 'duration',
+36: DATA 'duration',
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'boolean',
+34: ATTRIBUTE "office:boolean-value",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+33: SEQUENCE
+34: ATTRIBUTE "office:value-type",
+35: VALUE 'string',
+34: CHOICE
+35: ATTRIBUTE "office:string-value",
+36: REF 'string',
+37: DATA 'string',
+35: EPSILON
+31: EPSILON
+22: EPSILON
+21: CHOICE
+22: REF 'db-update-table',
+23: ELEMENT "db:update-table",
+24: REF 'common-db-table-name-attlist',
+25: INTERLEAVE
+26: ATTRIBUTE "db:name",
+27: REF 'string',
+28: DATA 'string',
+26: CHOICE
+27: ATTRIBUTE "db:catalog-name",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+26: CHOICE
+27: ATTRIBUTE "db:schema-name",
+28: REF 'string',
+29: DATA 'string',
+27: EPSILON
+22: EPSILON
+18: REF 'db-query-collection',
+19: ELEMENT "db:query-collection",
+20: SEQUENCE
+21: REF 'db-query-collection-attlist',
+22: EPSILON
+21: REF 'common-db-object-name',
+22: ATTRIBUTE "db:name",
+23: REF 'string',
+24: DATA 'string',
+21: REF 'common-db-object-title',
+22: CHOICE
+23: ATTRIBUTE "db:title",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: REF 'common-db-object-description',
+22: CHOICE
+23: ATTRIBUTE "db:description",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+21: CHOICE
+22: ONEOREMORE
+23: CHOICE
+24: REF 'db-query',
+24: REF 'db-query-collection',
+22: EPSILON
+16: EPSILON
+12: EPSILON
+11: CHOICE
+12: REF 'db-table-presentations',
+13: ELEMENT "db:table-representations",
+14: SEQUENCE
+15: REF 'db-table-presentations-attlist',
+16: EPSILON
+15: CHOICE
+16: ONEOREMORE
+17: REF 'db-table-presentation',
+18: ELEMENT "db:table-representation",
+19: SEQUENCE
+20: REF 'db-table-presentation-attlist',
+21: EPSILON
+20: REF 'common-db-table-name-attlist',
+21: INTERLEAVE
+22: ATTRIBUTE "db:name",
+23: REF 'string',
+24: DATA 'string',
+22: CHOICE
+23: ATTRIBUTE "db:catalog-name",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "db:schema-name",
+24: REF 'string',
+25: DATA 'string',
+23: EPSILON
+20: REF 'common-db-object-title',
+21: CHOICE
+22: ATTRIBUTE "db:title",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: REF 'common-db-object-description',
+21: CHOICE
+22: ATTRIBUTE "db:description",
+23: REF 'string',
+24: DATA 'string',
+22: EPSILON
+20: REF 'common-db-table-style-name',
+21: INTERLEAVE
+22: CHOICE
+23: ATTRIBUTE "db:style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+22: CHOICE
+23: ATTRIBUTE "db:default-row-style-name",
+24: REF 'styleNameRef',
+25: CHOICE
+26: DATA 'NCName',
+26: EPSILON
+23: EPSILON
+20: CHOICE
+21: REF 'db-order-statement',
+21: EPSILON
+20: CHOICE
+21: REF 'db-filter-statement',
+21: EPSILON
+20: CHOICE
+21: REF 'db-columns',
+21: EPSILON
+16: EPSILON
+12: EPSILON
+11: CHOICE
+12: REF 'db-schema-definition',
+13: ELEMENT "db:schema-definition",
+14: SEQUENCE
+15: REF 'db-schema-definition-attlist',
+16: EPSILON
+15: REF 'db-table-definitions',
+16: ELEMENT "db:table-definitions",
+17: SEQUENCE
+18: REF 'db-table-definitions-attlist',
+19: EPSILON
+18: CHOICE
+19: ONEOREMORE
+20: REF 'db-table-definition',
+21: ELEMENT "db:table-definition",
+22: SEQUENCE
+23: REF 'common-db-table-name-attlist',
+24: INTERLEAVE
+25: ATTRIBUTE "db:name",
+26: REF 'string',
+27: DATA 'string',
+25: CHOICE
+26: ATTRIBUTE "db:catalog-name",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+25: CHOICE
+26: ATTRIBUTE "db:schema-name",
+27: REF 'string',
+28: DATA 'string',
+26: EPSILON
+23: REF 'db-table-definition-attlist',
+24: CHOICE
+25: ATTRIBUTE "db:type",
+26: REF 'string',
+27: DATA 'string',
+25: EPSILON
+23: REF 'db-column-definitions',
+24: ELEMENT "db:column-definitions",
+25: SEQUENCE
+26: REF 'db-column-definitions-attlist',
+27: EPSILON
+26: ONEOREMORE
+27: REF 'db-column-definition',
+28: ELEMENT "db:column-definition",
+29: SEQUENCE
+30: REF 'db-column-definition-attlist',
+31: INTERLEAVE
+32: ATTRIBUTE "db:name",
+33: REF 'string',
+34: DATA 'string',
+32: CHOICE
+33: ATTRIBUTE "db:data-type",
+34: REF 'db-data-types',
+35: CHOICE
+36: VALUE 'bit',
+36: VALUE 'boolean',
+36: VALUE 'tinyint',
+36: VALUE 'smallint',
+36: VALUE 'integer',
+36: VALUE 'bigint',
+36: VALUE 'float',
+36: VALUE 'real',
+36: VALUE 'double',
+36: VALUE 'numeric',
+36: VALUE 'decimal',
+36: VALUE 'char',
+36: VALUE 'varchar',
+36: VALUE 'longvarchar',
+36: VALUE 'date',
+36: VALUE 'time',
+36: VALUE 'timestmp',
+36: VALUE 'binary',
+36: VALUE 'varbinary',
+36: VALUE 'longvarbinary',
+36: VALUE 'sqlnull',
+36: VALUE 'other',
+36: VALUE 'object',
+36: VALUE 'distinct',
+36: VALUE 'struct',
+36: VALUE 'array',
+36: VALUE 'blob',
+36: VALUE 'clob',
+36: VALUE 'ref',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "db:type-name",
+34: REF 'string',
+35: DATA 'string',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "db:precision",
+34: REF 'positiveInteger',
+35: DATA 'positiveInteger',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "db:scale",
+34: REF 'positiveInteger',
+35: DATA 'positiveInteger',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "db:is-nullable",
+34: CHOICE
+35: VALUE 'no-nulls',
+35: VALUE 'nullable',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "db:is-empty-allowed",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+32: CHOICE
+33: ATTRIBUTE "db:is-autoincrement",
+34: REF 'boolean',
+35: CHOICE
+36: VALUE 'true',
+36: VALUE 'false',
+33: EPSILON
+30: REF 'common-db-default-value',
+31: CHOICE
+32: REF 'common-value-and-type-attlist',
+33: CHOICE
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'float',
+35: ATTRIBUTE "office:value",
+36: REF 'double',
+37: DATA 'double',
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'percentage',
+35: ATTRIBUTE "office:value",
+36: REF 'double',
+37: DATA 'double',
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'currency',
+35: ATTRIBUTE "office:value",
+36: REF 'double',
+37: DATA 'double',
+35: CHOICE
+36: ATTRIBUTE "office:currency",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'date',
+35: ATTRIBUTE "office:date-value",
+36: REF 'dateOrDateTime',
+37: CHOICE
+38: DATA 'date',
+38: DATA 'dateTime',
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'time',
+35: ATTRIBUTE "office:time-value",
+36: REF 'duration',
+37: DATA 'duration',
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'boolean',
+35: ATTRIBUTE "office:boolean-value",
+36: REF 'boolean',
+37: CHOICE
+38: VALUE 'true',
+38: VALUE 'false',
+34: SEQUENCE
+35: ATTRIBUTE "office:value-type",
+36: VALUE 'string',
+35: CHOICE
+36: ATTRIBUTE "office:string-value",
+37: REF 'string',
+38: DATA 'string',
+36: EPSILON
+32: EPSILON
+23: CHOICE
+24: REF 'db-keys',
+25: ELEMENT "db:keys",
+26: SEQUENCE
+27: REF 'db-keys-attlist',
+28: EPSILON
+27: ONEOREMORE
+28: REF 'db-key',
+29: ELEMENT "db:key",
+30: SEQUENCE
+31: REF 'db-key-attlist',
+32: INTERLEAVE
+33: CHOICE
+34: ATTRIBUTE "db:name",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+33: ATTRIBUTE "db:type",
+34: CHOICE
+35: VALUE 'primary',
+35: VALUE 'unique',
+35: VALUE 'foreign',
+33: CHOICE
+34: ATTRIBUTE "db:referenced-table-name",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "db:update-rule",
+35: CHOICE
+36: VALUE 'cascade',
+36: VALUE 'restrict',
+36: VALUE 'set-null',
+36: VALUE 'no-action',
+36: VALUE 'set-default',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "db:delete-rule",
+35: CHOICE
+36: VALUE 'cascade',
+36: VALUE 'restrict',
+36: VALUE 'set-null',
+36: VALUE 'no-action',
+36: VALUE 'set-default',
+34: EPSILON
+31: ONEOREMORE
+32: REF 'db-key-columns',
+33: ELEMENT "db:key-columns",
+34: SEQUENCE
+35: REF 'db-key-columns-attlist',
+36: EPSILON
+35: ONEOREMORE
+36: REF 'db-key-column',
+37: ELEMENT "db:key-column",
+38: REF 'db-key-column-attlist',
+39: INTERLEAVE
+40: CHOICE
+41: ATTRIBUTE "db:name",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+40: CHOICE
+41: ATTRIBUTE "db:related-column-name",
+42: REF 'string',
+43: DATA 'string',
+41: EPSILON
+24: EPSILON
+23: CHOICE
+24: REF 'db-indices',
+25: ELEMENT "db:indices",
+26: SEQUENCE
+27: REF 'db-indices-attlist',
+28: EPSILON
+27: ONEOREMORE
+28: REF 'db-index',
+29: ELEMENT "db:index",
+30: SEQUENCE
+31: REF 'db-index-attlist',
+32: INTERLEAVE
+33: ATTRIBUTE "db:name",
+34: REF 'string',
+35: DATA 'string',
+33: CHOICE
+34: ATTRIBUTE "db:catalog-name",
+35: REF 'string',
+36: DATA 'string',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "db:is-unique",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: EPSILON
+33: CHOICE
+34: ATTRIBUTE "db:is-clustered",
+35: REF 'boolean',
+36: CHOICE
+37: VALUE 'true',
+37: VALUE 'false',
+34: EPSILON
+31: ONEOREMORE
+32: REF 'db-index-columns',
+33: ELEMENT "db:index-columns",
+34: ONEOREMORE
+35: REF 'db-index-column',
+36: ELEMENT "db:index-column",
+37: REF 'db-index-column-attlist',
+38: INTERLEAVE
+39: ATTRIBUTE "db:name",
+40: REF 'string',
+41: DATA 'string',
+39: CHOICE
+40: ATTRIBUTE "db:is-ascending",
+41: REF 'boolean',
+42: CHOICE
+43: VALUE 'true',
+43: VALUE 'false',
+40: EPSILON
+24: EPSILON
+19: EPSILON
+12: EPSILON
+1: REF 'office-document-content',
+2: ELEMENT "office:document-content",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: INTERLEAVE
+6: ATTRIBUTE "office:version",
+7: VALUE '1.2',
+6: CHOICE
+7: ATTRIBUTE "grddl:transformation",
+8: LIST
+9: CHOICE
+10: ONEOREMORE
+11: REF 'anyIRI',
+12: DATA 'anyURI',
+10: EPSILON
+7: EPSILON
+4: REF 'office-scripts',
+5: CHOICE
+4: REF 'office-font-face-decls',
+5: CHOICE
+4: REF 'office-automatic-styles',
+5: CHOICE
+4: REF 'office-body',
+1: REF 'office-document-styles',
+2: ELEMENT "office:document-styles",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: INTERLEAVE
+6: ATTRIBUTE "office:version",
+7: VALUE '1.2',
+6: CHOICE
+7: ATTRIBUTE "grddl:transformation",
+8: LIST
+9: CHOICE
+10: ONEOREMORE
+11: REF 'anyIRI',
+12: DATA 'anyURI',
+10: EPSILON
+7: EPSILON
+4: REF 'office-font-face-decls',
+5: CHOICE
+4: REF 'office-styles',
+5: CHOICE
+4: REF 'office-automatic-styles',
+5: CHOICE
+4: REF 'office-master-styles',
+5: CHOICE
+1: REF 'office-document-meta',
+2: ELEMENT "office:document-meta",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: INTERLEAVE
+6: ATTRIBUTE "office:version",
+7: VALUE '1.2',
+6: CHOICE
+7: ATTRIBUTE "grddl:transformation",
+8: LIST
+9: CHOICE
+10: ONEOREMORE
+11: REF 'anyIRI',
+12: DATA 'anyURI',
+10: EPSILON
+7: EPSILON
+4: REF 'office-meta',
+5: CHOICE
+1: REF 'office-document-settings',
+2: ELEMENT "office:document-settings",
+3: SEQUENCE
+4: REF 'office-document-common-attrs',
+5: INTERLEAVE
+6: ATTRIBUTE "office:version",
+7: VALUE '1.2',
+6: CHOICE
+7: ATTRIBUTE "grddl:transformation",
+8: LIST
+9: CHOICE
+10: ONEOREMORE
+11: REF 'anyIRI',
+12: DATA 'anyURI',
+10: EPSILON
+7: EPSILON
+4: REF 'office-settings',
+5: CHOICE
diff --git a/trunk/legal/LICENSE b/trunk/legal/LICENSE
new file mode 100644
index 0000000..57bc88a
--- /dev/null
+++ b/trunk/legal/LICENSE
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/trunk/legal/NOTICE b/trunk/legal/NOTICE
new file mode 100644
index 0000000..b602d3f
--- /dev/null
+++ b/trunk/legal/NOTICE
@@ -0,0 +1,8 @@
+Apache ODF Toolkit
+
+Copyright 2011 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions copyright IBM, 2009-2011.  All rights reserved.
diff --git a/trunk/odfdom/LICENSE.txt b/trunk/odfdom/LICENSE.txt
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/trunk/odfdom/LICENSE.txt
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/trunk/odfdom/README.txt b/trunk/odfdom/README.txt
new file mode 100644
index 0000000..eb74ee0
--- /dev/null
+++ b/trunk/odfdom/README.txt
@@ -0,0 +1,49 @@
+*************************************************************
+* ODFDOM Java Library                                       *
+*                                                           *
+*************************************************************
+
+
+About ODFDOM
+-------------
+
+ODFDOM is an OpenDocument Format (ODF) framework. Its purpose 
+is to provide an easy common way to create, access and 
+manipulate ODF files, without requiring detailed knowledge of
+the ODF specification. It is designed to provide the ODF
+developer community with an easy lightwork programming API
+portable to any object-oriented language.
+
+The current reference implementation is written in Java.
+
+
+Documentation
+--------------
+
+The latest release notes and a summary of API changes (if any) are available
+online at the project's Wiki page:
+    http://odftoolkit.org/projects/odfdom/pages/ReleaseNotes
+
+In general, the Wiki page is a great place to start when looking for online
+documentation and other information about the odfdom project.
+    http://odftoolkit.org/projects/odfdom/pages/Home
+
+API documentation (Javadoc) can be downloaded from the project's download area:
+    http://odftoolkit.org/projects/odfdom/downloads
+
+The Javadoc can also be viewed online and is available for each version, e.g.
+    http://odfdom.odftoolkit.org/0.8.6/docs/api/
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
+
+Installation
+-------------
+
+Just put the file odfdom.jar in your classpath. You will
+need Apache Xerces-J as well. Get it from
+    http://xml.apache.org/dist/xerces-j/
diff --git a/trunk/odfdom/pom.xml b/trunk/odfdom/pom.xml
new file mode 100644
index 0000000..7c5d6bd
--- /dev/null
+++ b/trunk/odfdom/pom.xml
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.odftoolkit</groupId>
+		<artifactId>odftoolkit</artifactId>
+		<version>0.6.1-incubating</version>
+	</parent>
+  
+	<artifactId>odfdom-java</artifactId>
+	<version>0.8.10-incubating</version>
+	<packaging>jar</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>taglets</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>xerces</groupId>
+			<artifactId>xercesImpl</artifactId>
+		</dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+        </dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.jena</groupId>
+			<artifactId>jena-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.jena</groupId>
+			<artifactId>jena-core</artifactId>
+			<classifier>tests</classifier>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>net.rootdev</groupId>
+			<artifactId>java-rdfa</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>commons-validator</groupId>
+			<artifactId>commons-validator</artifactId>
+		</dependency>
+	</dependencies>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss</maven.build.timestamp.format>
+	</properties>
+
+	<!-- Build Settings -->
+	<build>
+		<extensions>
+			<extension>
+				<groupId>org.apache.maven.wagon</groupId>
+				<artifactId>wagon-webdav-jackrabbit</artifactId>
+				<version>1.0-beta-7</version>
+			</extension>
+		</extensions>
+		<plugins>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+					<meminitial>512m</meminitial>
+					<maxmem>1024m</maxmem>
+					<showDeprecation>true</showDeprecation>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<version>2.3.1</version>
+				<configuration>
+					<archive>
+						<index>true</index>
+						<manifest>
+							<mainClass>org.odftoolkit.odfdom.JarManifest</mainClass>
+						</manifest>
+						<manifestEntries>
+							<version>${project.version}</version>
+						</manifestEntries>
+						<manifestSections>
+							<manifestSection>
+								<name>ODFDOM</name>
+								<manifestEntries>
+									<ODFDOM-Name>odfdom</ODFDOM-Name>
+									<ODFDOM-Version>${project.version}</ODFDOM-Version>
+									<ODFDOM-Website>http://incubator.apache.org/odftoolkit/odfdom/index.html</ODFDOM-Website>
+									<ODFDOM-Built-Date>${build.timestamp}</ODFDOM-Built-Date>
+									<ODFDOM-Supported-Odf-Version>1.2</ODFDOM-Supported-Odf-Version>
+								</manifestEntries>
+							</manifestSection>
+						</manifestSections>
+					</archive>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-release-plugin</artifactId>
+				<version>2.1</version>
+				<configuration>
+					<!-- Workaround for http://jira.codehaus.org/browse/MGPG-9 -->
+					<mavenExecutorId>forked-path</mavenExecutorId>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<!-- Explizit version required for fix on systemPropertyVariables -->
+				<version>2.6</version>
+				<configuration>
+					<forkMode>pertest</forkMode>
+					<argLine>-Xms512m -Xmx512m</argLine>
+					<systemPropertyVariables>
+						<odfdom.version>${project.version}</odfdom.version>
+						<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
+						<org.odftoolkit.odfdom.validation>org.odftoolkit.odfdom.pkg.DefaultErrorHandler</org.odftoolkit.odfdom.validation>
+					</systemPropertyVariables>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.7</version>
+				<configuration>
+					<doctitle>ODFDOM</doctitle>
+					<minmemory>1024m</minmemory>
+					<maxmemory>1024m</maxmemory>
+					<links>
+						<link>http://download.oracle.com/javase/6/docs/api/</link>
+						<link>http://xerces.apache.org/xerces-j/apiDocs/</link>
+						<link>http://simple.odftoolkit.org/javadoc/</link>
+					</links>
+					<splitindex>true</splitindex>
+					<windowtitle>ODFDOM API v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
+					<taglets>
+						<taglet>
+							<tagletClass>org.odftoolkit.odfdom.taglet.OdfElementTaglet</tagletClass>
+						</taglet>
+						<taglet>
+							<tagletClass>org.odftoolkit.odfdom.taglet.OdfAttributeTaglet</tagletClass>
+						</taglet>
+						<taglet>
+							<tagletClass>org.odftoolkit.odfdom.taglet.OdfDatatypeTaglet</tagletClass>
+						</taglet>
+					</taglets>
+					<tagletArtifact>
+						<groupId>${project.groupId}</groupId>
+						<artifactId>taglets</artifactId>
+						<version>${project.version}</version>
+					</tagletArtifact>
+				</configuration>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-source-plugin</artifactId>
+				<version>2.1.2</version>
+				<executions>
+					<execution>
+						<id>attach-sources</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+				</configuration>
+				<executions>
+					<execution>
+						<id>single</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.rat</groupId>
+				<artifactId>apache-rat-plugin</artifactId>
+				<configuration>
+					<excludes>
+						<exclude>src/main/resources/**</exclude>
+						<exclude>src/test/resources/**</exclude>
+						<exclude>src/main/javadoc/doc-files/OpenDocument-v1.2-part1.html</exclude>
+						<exclude>src/main/javadoc/doc-files/OpenDocument-v1.2-part3.html</exclude>
+						<exclude>src/codegen/resources/dom/*.rng</exclude>
+						<exclude>src/codegen/resources/pkg/*.rng</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.7</version>
+				<configuration>
+					<doctitle>ODFDOM</doctitle>
+					<minmemory>512m</minmemory>
+					<maxmemory>1024m</maxmemory>
+					<links>
+						<link>http://download.oracle.com/javase/6/docs/api/</link>
+						<link>http://xerces.apache.org/xerces-j/apiDocs/</link>
+					</links>
+					<splitindex>true</splitindex>
+					<windowtitle>ODFDOM API v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
+				</configuration>
+			</plugin>
+			<!-- Code Coverage Testing generated by Cobertura -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>cobertura-maven-plugin</artifactId>
+				<version>2.4</version>
+				<configuration>
+					<instrumentation>
+						<excludes>
+							<exclude>org/odftoolkit/**/*Test.class</exclude>
+						</excludes>
+					</instrumentation>
+				</configuration>
+			</plugin>
+			<!-- Reporting integration test results -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-failsafe-plugin</artifactId>
+				<version>2.5</version>
+				<reportSets>
+					<reportSet>
+						<id>integration-tests</id>
+						<reports>
+							<report>report-only</report>
+						</reports>
+						<configuration>
+							<outputName>failsafe-report</outputName>
+						</configuration>
+					</reportSet>
+				</reportSets>
+			</plugin>
+		</plugins>
+	</reporting>
+
+	<!-- More Project Information -->
+	<name>ODFDOM</name>
+	<description>
+		ODFDOM is an OpenDocument Format (ODF) framework. Its purpose
+		is to provide an easy common way to create, access and
+		manipulate ODF files, without requiring detailed knowledge of
+		the ODF specification. It is designed to provide the ODF
+		developer community with an easy lightwork programming API
+		portable to any object-oriented language.
+
+		The current reference implementation is written in Java.
+	</description>
+	<url>http://incubator.apache.org/odftoolkit/odfdom/index.html</url>
+	<inceptionYear>2008</inceptionYear>
+    
+	<licenses>
+		<license>
+			<name>Apache 2</name>
+			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+		</license>
+	</licenses>
+	<organization>
+		<name>The Apache Software Foundation</name>
+		<url>http://www.apache.org/</url>
+	</organization>
+
+	<scm>
+		<connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/odfdom</connection>
+		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/odfdom</developerConnection>
+		<url>http://svn.apache.org/viewvc/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/odfdom</url>
+	</scm>
+	<profiles>
+		<profile>
+			<id>codegen</id>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>wagon-maven-plugin</artifactId>
+						<version>1.0-beta-3</version>
+						<executions>
+							<execution>
+								<id>download-odf-schema-v1.2</id>
+								<phase>validate</phase>
+								<goals>
+									<goal>download-single</goal>
+								</goals>
+								<configuration>
+									<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+									<fromFile>os/OpenDocument-v1.2-os-schema.rng</fromFile>
+									<toDir>${project.build.directory}/odf-schemas</toDir>
+								</configuration>
+							</execution>
+							<execution>
+								<id>download-odf-manifest-schema-v1.2</id>
+								<phase>validate</phase>
+								<goals>
+									<goal>download-single</goal>
+								</goals>
+								<configuration>
+									<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+									<fromFile>os/OpenDocument-v1.2-os-manifest-schema.rng</fromFile>
+									<toDir>${project.build.directory}/odf-schemas</toDir>
+								</configuration>
+							</execution>
+							<execution>
+								<id>download-odf-dsig-schema-v1.2</id>
+								<phase>validate</phase>
+								<goals>
+									<goal>download-single</goal>
+								</goals>
+								<configuration>
+									<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+									<fromFile>os/OpenDocument-v1.2-os-dsig-schema.rng</fromFile>
+									<toDir>${project.build.directory}/odf-schemas</toDir>
+								</configuration>
+							</execution>
+							<execution>
+								<id>download-odf-schema-v1.1</id>
+								<phase>validate</phase>
+								<goals>
+									<goal>download-single</goal>
+								</goals>
+								<configuration>
+									<url>dav:http://docs.oasis-open.org/office/v1.1</url>
+									<fromFile>OS/OpenDocument-schema-v1.1.rng</fromFile>
+									<toDir>${project.build.directory}/odf-schemas</toDir>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<groupId>${project.groupId}</groupId>
+						<artifactId>schema2template-maven-plugin</artifactId>
+						<version>${project.version}</version>
+						<executions>
+							<execution>
+								<id>dom</id>
+								<phase>generate-sources</phase>
+								<goals>
+									<goal>codegen</goal>
+								</goals>
+								<!-- DOM LAYER CONFIGURATION -->
+								<configuration>
+									<targetRoot>${basedir}/src/main/java/</targetRoot>
+									<domResourceRoot>${basedir}/src/codegen/resources/dom/template</domResourceRoot>
+									<pkgResourceRoot>${basedir}/src/codegen/resources/pkg/template</pkgResourceRoot>
+									<odf12SchemaFile>${project.build.directory}/odf-schemas/OpenDocument-v1.2-os-schema.rng</odf12SchemaFile>
+									<odf11SchemaFile>${project.build.directory}/odf-schemas/OpenDocument-schema-v1.1.rng</odf11SchemaFile>
+									<signatureSchemaFile>${project.build.directory}/odf-schemas/OpenDocument-v1.2-os-dsig-schema.rng</signatureSchemaFile>
+									<manifestSchemaFile>${project.build.directory}/odf-schemas/OpenDocument-v1.2-os-manifest-schema.rng</manifestSchemaFile>
+									<configFile>${basedir}/src/codegen/resources/config.xml</configFile>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+		<!--
+		<profile>
+			<id>codegen-pkg</id>
+			<activation>
+			  <activeByDefault>true</activeByDefault>
+			</activation>
+			<build>
+				<defaultGoal>install</defaultGoal>
+				<plugins>
+					<plugin>
+						<groupId>org.odftoolkit</groupId>
+						<artifactId>maven-codegen-plugin</artifactId>
+						<version>0.8</version>
+						<executions>
+							<execution>
+								<id>pkg</id>
+								<phase>generate-sources</phase>
+								<goals>
+									<goal>codegen</goal>
+								</goals>
+								<configuration>
+									<sourceRoot>${basedir}/src/main/java</sourceRoot>
+									<schemaFile>${basedir}/src/codegen/resources/pkg/OpenDocument-manifest-schema-v1.2-draft7.rng</schemaFile>
+									<configFile>${basedir}/src/codegen/resources/pkg/config.xml</configFile>
+									<templateFile>${basedir}/src/codegen/resources/pkg/javacodetemplate.xml</templateFile>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+		-->
+		<profile>
+			<id>integration-test</id>
+			<activation>
+				<property>
+					<name>integration-test</name>
+				</property>
+			</activation>
+			<build>
+				<defaultGoal>verify</defaultGoal>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-failsafe-plugin</artifactId>
+						<version>2.5</version>
+						<executions>
+							<execution>
+								<id>failsafe-it</id>
+								<phase>integration-test</phase>
+								<goals>
+									<goal>integration-test</goal>
+									<goal>verify</goal>
+								</goals>
+								<configuration>
+									<classesDirectory>${basedir}/target/odfdom*.jar</classesDirectory>
+									<systemPropertyVariables>
+										<testresourcefolder>performance</testresourcefolder>
+										<executetimes>1</executetimes>
+										<testflag>test</testflag>
+									</systemPropertyVariables>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<!-- Explizit version required for fix on systemPropertyVariables -->
+						<version>2.6</version>
+						<configuration>
+							<systemPropertyVariables>
+								<odfdom.version>${project.version}</odfdom.version>
+								<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
+								<org.odftoolkit.odfdom.validation>true</org.odftoolkit.odfdom.validation>
+							</systemPropertyVariables>
+							<skip>true</skip>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+		<!-- Profile for deploying to the Sonatype repository, which
+		requires GPG signatures 
+		see
+		https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
+		https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
+		https://issues.sonatype.org/browse/OSSRH-960
+		-->
+		<profile>
+			<id>release-sign-artifacts</id>
+			<activation>
+				<property>
+					<name>performRelease</name>
+					<value>true</value>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-gpg-plugin</artifactId>
+						<version>1.1</version>
+						<executions>
+							<execution>
+								<id>sign-artifacts</id>
+								<phase>verify</phase>
+								<goals>
+									<goal>sign</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+			<!-- <distributionManagement>
+				<site>
+					<id>odfdom</id>
+					<name>ODFDOM Java Toolkit Project</name>
+					<url>dav:https://odftoolkit.org/website/odfdom/${project.version}/odfdom</url>
+				</site>
+			</distributionManagement> -->
+		</profile>
+	</profiles>
+</project>
diff --git a/trunk/odfdom/src/codegen/resources/config.xml b/trunk/odfdom/src/codegen/resources/config.xml
new file mode 100644
index 0000000..b472c32
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/config.xml
@@ -0,0 +1,680 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+
+-->
+<config>
+    <elements>
+        <element name="chart:axis" family="chart:chart"/>
+        <element name="chart:chart" family="chart:chart"/>
+        <element name="chart:data-point" family="chart:chart"/>
+        <element name="chart:error-indicator" family="chart:chart"/>
+        <element name="chart:floor" family="chart:chart"/>
+        <element name="chart:footer" family="chart:chart"/>
+        <element name="chart:grid" family="chart:chart"/>
+        <element name="chart:legend" family="chart:chart"/>
+        <element name="chart:mean-value" family="chart:chart"/>
+        <element name="chart:plot-area" family="chart:chart"/>
+        <element name="chart:regression-curve" family="chart:chart"/>
+        <element name="chart:series" family="chart:chart"/>
+        <element name="chart:stock-gain-marker" family="chart:chart"/>
+        <element name="chart:stock-loss-marker" family="chart:chart"/>
+        <element name="chart:stock-range-line" family="chart:chart"/>
+        <element name="chart:subtitle" family="chart:chart"/>
+        <element name="chart:title" family="chart:chart"/>
+        <element name="chart:wall" family="chart:chart"/>
+        <element name="draw:page" family="draw:drawing-page"/>
+        <element name="presentation:notes" family="draw:drawing-page"/>
+        <element name="dr3d:cube" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:extrude" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:rotate" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:scene" family="draw:graphic,presentation:presentation"/>
+        <element name="dr3d:sphere" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:a" rename="draw:hyperlink"/>
+        <element name="draw:caption" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:circle" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:connector" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:control" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:custom-shape" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:ellipse" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:frame" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:g" rename="draw:group" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:line" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:measure" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:page-thumbnail" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:path" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:polygon" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:polyline" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:rect" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="draw:regular-polygon" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="office:annotation" base="draw:shape" family="draw:graphic,presentation:presentation"/>
+        <element name="text:alphabetical-index-entry-template" family="text:paragraph"/>
+        <element name="text:bibliography-entry-template" family="text:paragraph"/>
+        <element name="text:h" rename="text:heading" base="text:paragraph" family="text:paragraph"/>
+        <element name="text:illustration-index-entry-template" family="text:paragraph"/>
+        <element name="text:index-source-style" family="text:paragraph"/>
+        <element name="text:index-title-template" family="text:paragraph"/>
+        <element name="text:object-index-entry-template" family="text:paragraph"/>
+        <element name="text:p" rename="text:paragraph" base="text:paragraph" family="text:paragraph"/>
+        <element name="text:table-index-entry-template" family="text:paragraph"/>
+        <element name="text:table-of-content-entry-template" family="text:paragraph"/>
+        <element name="text:user-index-entry-template" family="text:paragraph"/>
+        <element name="text:ruby" family="text:ruby"/>
+        <element name="text:ruby-text" family="text:ruby"/>
+        <element name="text:alphabetical-index" family="text:section"/>
+        <element name="text:bibliography" family="text:section"/>
+        <element name="text:illustration-index" family="text:section"/>
+        <element name="text:index-title" family="text:section"/>
+        <element name="text:object-index" family="text:section"/>
+        <element name="text:section" family="text:section"/>
+        <element name="text:s" rename="text:space"/>
+        <element name="text:table-index" family="text:section"/>
+        <element name="text:table-of-content" family="text:section"/>
+        <element name="text:user-index" family="text:section"/>
+        <element name="table:table" family="table:table"/>
+        <element name="table:covered-table-cell" base="table:table-cell" family="table:table-cell"/>
+        <element name="table:table-cell" base="table:table-cell" family="table:table-cell"/>
+        <element name="table:table-column" family="table:table-column"/>
+        <element name="table:table-row" family="table:table-row"/>
+        <element name="text:a" rename="text:hyperlink" family="text:text"/>
+        <element name="text:index-entry-bibliography" family="text:text"/>
+        <element name="text:index-entry-chapter" family="text:text"/>
+        <element name="text:index-entry-link-end" family="text:text"/>
+        <element name="text:index-entry-link-start" family="text:text"/>
+        <element name="text:index-entry-page-number" family="text:text"/>
+        <element name="text:index-entry-span" family="text:text"/>
+        <element name="text:index-entry-tab-stop" family="text:text"/>
+        <element name="text:index-entry-text" family="text:text"/>
+        <element name="text:span" family="text:text"/>
+        <element name="style:handout-master" family="draw:drawing-page"/>
+        <element name="style:master-page" family="draw:drawing-page"/>
+        <element name="table:body" family="table:table-cell"/>
+        <element name="table:even-columns" family="table:table-cell"/>
+        <element name="table:even-rows" family="table:table-cell"/>
+        <element name="table:first-column" family="table:table-cell"/>
+        <element name="table:first-row" family="table:table-cell"/>
+        <element name="table:last-column" family="table:table-cell"/>
+        <element name="table:last-row" family="table:table-cell"/>
+        <element name="table:odd-columns" family="table:table-cell"/>
+        <element name="table:odd-rows" family="table:table-cell"/>
+        <element name="style:drop-cap" family="text:text"/>
+        <element name="text:linenumbering-configuration" family="text:text"/>
+
+		<!-- does not exist as element only as baseclass -->
+        <element name="text:list-level-style" base="style"/>
+        <element name="text:list-level-style-number" base="text:list-level-style"/>
+        <element name="text:list-level-style-bullet" base="text:list-level-style"/>
+        <element name="text:list-level-style-image" base="text:list-level-style"/>
+
+        <element name="text:numbered-paragraph" family="text:list"/>
+        <element name="office:styles" base="container"/>
+        <element name="office:automatic-styles" base="container"/>
+        <element name="office:master-styles" base="container"/>
+        <!--element name="office:presentation" base="container"/-->
+
+        <element name="style:style" base="style"/>
+        <element name="style:default-style" base="style"/>
+        <element name="style:page-layout" base="style"/>
+        <element name="text:outline-level-style" base="style"/>
+        <element name="text:list-style" base="style"/>
+
+        <element name="style:chart-properties" base="styleproperties"/>
+        <element name="style:drawing-page-properties" base="styleproperties"/>
+        <element name="style:graphic-properties" base="styleproperties"/>
+        <element name="style:list-level-properties" base="styleproperties"/>
+        <element name="style:paragraph-properties" base="styleproperties"/>
+        <element name="style:ruby-properties" base="styleproperties"/>
+        <element name="style:section-properties" base="styleproperties"/>
+        <element name="style:page-layout-properties" base="styleproperties"/>
+        <element name="style:header-footer-properties" base="styleproperties"/>
+        <element name="style:text-properties" base="styleproperties"/>
+        <element name="style:table-properties" base="styleproperties"/>
+        <element name="style:table-column-properties" base="styleproperties"/>
+        <element name="style:table-row-properties" base="styleproperties"/>
+        <element name="style:table-cell-properties" base="styleproperties"/>
+    </elements>
+    <data-types>
+        <data name="anyURI" value-type="java.net.URI" conversion-type="org.odftoolkit.odfdom.type.AnyURI"/>
+        <data name="boolean" value-type="Boolean" conversion-type="Boolean"/>
+        <data name="base64Binary" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Base64Binary"/>
+        <data name="cellAddress" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CellAddress"/>
+        <data name="cellRangeAddress" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CellRangeAddress"/>
+        <data name="cellRangeAddressList" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CellRangeAddressList"/>
+        <data name="clipShape" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ClipShape"/>
+        <data name="color" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Color"/>
+        <data name="coordinate" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Coordinate"/>
+        <data name="countryCode" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CountryCode"/>
+        <data name="CURIE" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CURIE"/>
+        <data name="CURIEs" value-type="String" conversion-type="org.odftoolkit.odfdom.type.CURIEs"/>
+        <data name="date" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.Date"/>
+        <data name="dateOrDateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.DateOrDateTime"/>
+        <data name="dateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.DateTime"/>
+        <data name="distance" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Distance"/>
+        <data name="duration" value-type="javax.xml.datatype.Duration" conversion-type="org.odftoolkit.odfdom.type.DurationType"/>
+        <data name="double" value-type="Double" conversion-type="Double"/>
+        <!--data name="extrusionOrigin" value-type="String" conversion-type="org.odftoolkit.odfdom.attribute.ExtrusionOrigin"/-->
+        <data name="formula" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Formula"/>
+        <data name="ID" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ID"/>
+        <data name="IDREF" value-type="String" conversion-type="org.odftoolkit.odfdom.type.IDREF"/>
+        <data name="IDREFS" value-type="String" conversion-type="org.odftoolkit.odfdom.type.IDREFS"/>
+        <data name="integer" value-type="Integer" conversion-type="Integer"/>
+        <data name="language" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Language"/>
+        <data name="languageCode" value-type="String" conversion-type="org.odftoolkit.odfdom.type.LanguageCode"/>
+        <data name="length" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Length"/>
+        <data name="namespacedToken" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NamespacedToken"/>
+        <data name="NCName" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NCName"/>
+        <data name="nonNegativeDecimal" value-type="Double" conversion-type="org.odftoolkit.odfdom.type.NonNegativeDecimal"/>
+        <data name="nonNegativeInteger" value-type="Integer" conversion-type="org.odftoolkit.odfdom.type.NonNegativeInteger"/>
+        <data name="nonNegativeLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NonNegativeLength"/>
+        <data name="nonNegativePixelLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.NonNegativePixelLength"/>
+        <data name="percent" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Percent"/>
+        <data name="point3D" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Point3D"/>
+        <data name="points" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Points"/>
+        <data name="positiveInteger" value-type="Integer" conversion-type="org.odftoolkit.odfdom.type.PositiveInteger"/>
+        <data name="positiveLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.PositiveLength"/>
+        <!--data name="presentation-classes" value-type="String" conversion-type="org.odftoolkit.odfdom.attribute.PresentationClasses"/-->
+        <data name="relativeLength" value-type="String" conversion-type="org.odftoolkit.odfdom.type.RelativeLength"/>
+        <data name="SafeCURIE" value-type="String" conversion-type="org.odftoolkit.odfdom.type.SafeCURIE"/>
+        <data name="scriptCode" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ScriptCode"/>
+        <data name="signedZeroToHundredPercent" value-type="String" conversion-type="org.odftoolkit.odfdom.type.SignedZeroToHundredPercent"/>
+        <data name="string" value-type="String" conversion-type="String"/>
+        <data name="styleName" value-type="String" conversion-type="org.odftoolkit.odfdom.type.StyleName"/>
+        <data name="styleNameRef" value-type="String" conversion-type="org.odftoolkit.odfdom.type.StyleNameRef"/>
+        <data name="styleNameRefs" value-type="String" conversion-type="org.odftoolkit.odfdom.type.StyleNameRefs"/>
+        <data name="targetFrameName" value-type="String" conversion-type="org.odftoolkit.odfdom.type.TargetFrameName"/>
+        <!--data name="targetFrameName" value-type="enum" conversion-type="office:target-frame-name"/-->
+        <data name="textEncoding" value-type="String" conversion-type="org.odftoolkit.odfdom.type.TextEncoding"/>
+        <data name="time" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.Time"/>
+        <data name="timeOrDateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.type.TimeOrDateTime"/>
+        <data name="URIorSafeCURIE" value-type="String" conversion-type="org.odftoolkit.odfdom.type.URIorSafeCURIE"/>
+        <data name="valueType" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ValueType"/>
+        <data name="vector3D" value-type="String" conversion-type="org.odftoolkit.odfdom.type.Vector3D"/>
+        <data name="zeroToHundredPercent" value-type="String" conversion-type="org.odftoolkit.odfdom.type.ZeroToHundredPercent"/>
+        <data name="zeroToOneDecimal" value-type="Double" conversion-type="org.odftoolkit.odfdom.type.ZeroToOneDecimal"/>
+        <!--data name="rowOrCol" value-type="enum" conversion-type="table:row-or-column"/-->
+        <data name="stylefamily" value-type="org.odftoolkit.odfdom.dom.style.OdfStyleFamily" conversion-type="org.odftoolkit.odfdom.dom.style.OdfStyleFamily"/>
+        
+        
+    </data-types>
+   <attributes>
+      <attribute name="anim:color-interpolation" defaultValue="rgb"/>
+      <attribute name="anim:color-interpolation-direction" defaultValue="clockwise"/>
+      <attribute name="chart:automatic-content" defaultValue="true"/>
+      <attribute name="chart:class" defaultValue="major" element="chart:grid"/>
+      <attribute name="chart:data-source-has-labels" defaultValue="none"/>
+      <attribute name="chart:display-equation" defaultValue="true"/>
+      <attribute name="chart:display-r-square" defaultValue="false"/>
+      <attribute name="db:append-table-alias-name" defaultValue="true"/>
+      <attribute name="db:apply-command" defaultValue="false"/>
+      <attribute name="db:boolean-comparison-mode" defaultValue="equal-integer"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:decimal" defaultValue="."/>
+      <attribute name="db:delete-rule" defaultValue="no-action"/>
+      <attribute name="db:enable-sql92-check" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:encoding" defaultValue="utf-8"/>
+      <attribute name="db:escape-processing" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:field" defaultValue=";"/>
+      <attribute name="db:ignore-driver-privileges" defaultValue="true"/>
+      <attribute name="db:is-first-row-header-line" defaultValue="true"/>
+      <attribute name="db:is-password-required" defaultValue="false"/>
+      <attribute name="db:is-table-name-length-limited" defaultValue="true"/>
+      <attribute name="db:parameter-name-substitution" defaultValue="true"/>
+      <attribute name="db:show-deleted" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:string" defaultValue="."/>
+      <attribute name="db:suppress-version-columns" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="db:thousand" defaultValue=","/>
+      <attribute name="db:update-rule" defaultValue="no-action"/>
+      <attribute name="db:use-catalog" defaultValue="false"/>
+      <attribute name="db:visible" defaultValue="true"/>
+      <attribute name="dr3d:projection" defaultValue="parallel" element="draw:enhanced-geometry"/>
+      <attribute name="dr3d:shade-mode" defaultValue="flat" element="draw:enhanced-geometry"/>
+      <attribute name="draw:concentric-gradient-fill-allowed" defaultValue="false"/>
+      <attribute name="draw:display" defaultValue="always"/>
+      <attribute name="draw:extrusion" defaultValue="false"/>
+      <attribute name="draw:extrusion-allowed" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-brightness" defaultValue="33%"/>
+      <attribute name="draw:extrusion-color" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-depth" defaultValue="36pt 0"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-diffusion" defaultValue="0%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-first-light-direction" defaultValue="(5 0 1)"/>
+      <attribute name="draw:extrusion-first-light-harsh" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-first-light-level" defaultValue="66%"/>
+      <attribute name="draw:extrusion-light-face" defaultValue="true"/>
+      <attribute name="draw:extrusion-metal" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-number-of-line-segments" defaultValue="30"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-origin" defaultValue="0.5 -0.5"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-rotation-angle" defaultValue="0 0"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-second-light-direction" defaultValue="(-5 0 1)"/>
+      <attribute name="draw:extrusion-second-light-harsh" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-second-light-level" defaultValue="66%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-shininess" defaultValue="50%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-skew" defaultValue="50 45"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-specularity" defaultValue="0%"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:extrusion-viewpoint" defaultValue="3.5cm -3.5cm 25cm"/>
+      <attribute name="draw:glue-point-type" defaultValue="none"/>
+      <attribute name="draw:handle-mirror-horizontal" defaultValue="false"/>
+      <attribute name="draw:handle-mirror-vertical" defaultValue="false"/>
+      <attribute name="draw:handle-switched" defaultValue="false"/>
+      <attribute name="draw:kind" defaultValue="full"/>
+      <attribute name="draw:mirror-horizontal" defaultValue="false"/>
+      <attribute name="draw:mirror-vertical" defaultValue="false"/>
+      <attribute name="draw:may-script" defaultValue="false"/>
+      <attribute name="draw:protected" defaultValue="false"/>
+      <attribute name="draw:text-path" defaultValue="false"/>
+      <attribute name="draw:text-path-allowed" defaultValue="false"/>
+      <attribute name="draw:text-path-mode" defaultValue="normal"/>
+      <attribute name="draw:text-path-same-letter-heights" defaultValue="false"/>
+      <attribute name="draw:text-path-scale" defaultValue="path"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="draw:text-rotate-angle" defaultValue="0"/>
+      <attribute name="draw:type" defaultValue="standard" element="draw:connector"/>
+      <attribute name="draw:type" defaultValue="non-primitive" element="draw:enhanced-geometry"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:end-indent" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:space-after" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:space-before" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="fo:start-indent" defaultValue="0cm"/>
+      <attribute name="form:allow-deletes" defaultValue="true"/>
+      <attribute name="form:allow-inserts" defaultValue="true"/>
+      <attribute name="form:allow-updates" defaultValue="true"/>
+      <attribute name="form:apply-design-mode" defaultValue="true"/>
+      <attribute name="form:apply-filter" defaultValue="false"/>
+      <attribute name="form:automatic-focus" defaultValue="false"/>
+      <attribute name="form:button-type" defaultValue="push"/>
+      <attribute name="form:command-type" defaultValue="command"/>
+      <attribute name="form:convert-empty-to-null" defaultValue="false"/>
+      <attribute name="form:current-selected" defaultValue="false"/>
+      <attribute name="form:default-button" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:delay-for-repeat" defaultValue="PT0.050S"/>
+      <attribute name="form:disabled" defaultValue="false"/>
+      <attribute name="form:dropdown" defaultValue="false"/>
+      <attribute name="form:echo-char" defaultValue="*"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:enctype" defaultValue="application/x-www-form-urlencoded"/>
+      <attribute name="form:escape-processing" defaultValue="true"/>
+      <attribute name="form:ignore-result" defaultValue="false"/>
+      <attribute name="form:image-align" defaultValue="center"/>
+      <attribute name="form:image-position" defaultValue="center"/>
+      <attribute name="form:is-tristate" defaultValue="false"/>
+      <attribute name="form:method" defaultValue="get"/>
+      <attribute name="form:multi-line" defaultValue="false"/>
+      <attribute name="form:multiple" defaultValue="false"/>
+      <attribute name="form:printable" defaultValue="true"/>
+      <attribute name="form:readonly" defaultValue="false"/>
+      <attribute name="form:selected" defaultValue="false"/>
+      <attribute name="form:spin-button" defaultValue="false"/>
+      <attribute name="form:state" defaultValue="unchecked"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:step-size" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="form:tab-index" defaultValue="0"/>
+      <attribute name="form:tab-stop" defaultValue="true"/>
+      <attribute name="form:toggle" defaultValue="false"/>
+      <attribute name="form:validation" defaultValue="false"/>
+      <attribute name="number:automatic-order" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="number:decimal-places" defaultValue="0" element="number:seconds"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="number:display-factor" defaultValue="1"/>
+      <attribute name="number:format-source" defaultValue="fixed"/>
+      <attribute name="number:grouping" defaultValue="false"/>
+      <attribute name="number:textual" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="number:transliteration-format" defaultValue="1"/>
+      <attribute name="number:transliteration-style" defaultValue="short"/>
+      <attribute name="number:truncate-on-overflow" defaultValue="true"/>
+      <attribute name="office:automatic-update" defaultValue="true"/>
+      <attribute name="office:conversion-mode" defaultValue="into-default-style-data-style"/>
+      <attribute name="office:server-map" defaultValue="false"/>
+      <attribute name="office:target-frame" defaultValue="_blank"/>
+      <attribute name="presentation:animations" defaultValue="enabled"/>
+      <attribute name="presentation:direction" defaultValue="none"/>
+      <attribute name="presentation:endless" defaultValue="false"/>
+      <attribute name="presentation:effect" defaultValue="none"/>
+      <attribute name="presentation:force-manual" defaultValue="false"/>
+      <attribute name="presentation:full-screen" defaultValue="true"/>
+      <attribute name="presentation:mouse-as-pen" defaultValue="false"/>
+      <attribute name="presentation:mouse-visible" defaultValue="true"/>
+      <attribute name="presentation:node-type" defaultValue="default"/>
+      <attribute name="presentation:preset-class" defaultValue="custom"/>
+      <attribute name="presentation:show-end-of-presentation-slide" defaultValue="true"/>
+      <attribute name="presentation:show-logo" defaultValue="false"/>
+      <attribute name="presentation:speed" defaultValue="medium"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="presentation:start-scale" defaultValue="100%"/>
+      <attribute name="presentation:start-with-navigator" defaultValue="false"/>
+      <attribute name="presentation:stay-on-top" defaultValue="false"/>
+      <attribute name="presentation:transition-on-click" defaultValue="enabled"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="smil:accelerate" defaultValue="0.0"/>
+      <attribute name="smil:autoReverse" defaultValue="false"/>
+      <attribute name="smil:calcMode" defaultValue="discrete" element="anim:animate"/>
+      <attribute name="smil:calcMode" defaultValue="discrete" element="anim:animateColor"/>
+      <attribute name="smil:calcMode" defaultValue="paced" element="anim:animateMotion"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="smil:decelerate" defaultValue="0.0"/>
+      <attribute name="smil:direction" defaultValue="forward" element="anim:transitionFilter"/>
+      <attribute name="smil:fadeColor" defaultValue="#000000"/>
+      <attribute name="smil:mode" defaultValue="in"/>
+      <attribute name="smil:restart" defaultValue="default"/>
+      <attribute name="smil:restartDefault" defaultValue="inherit"/>
+      <attribute name="style:adjustment" defaultValue="left"/>
+      <attribute name="style:auto-update" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:color" defaultValue="#000000" element="style:column-sep"/>
+      <attribute name="style:display" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:distance" defaultValue="0cm"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:height" defaultValue="100%"/>
+      <attribute name="style:leader-text" defaultValue=" "/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:length" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="style:lines" defaultValue="1"/>
+      <attribute name="style:page-usage" defaultValue="all"/>
+      <attribute name="style:position" defaultValue="center" element="style:background-image"/>
+      <attribute name="style:repeat" defaultValue="repeat" element="style:background-image"/>
+      <attribute name="style:style" defaultValue="solid"/>
+      <attribute name="style:type" defaultValue="left" element="style:tab-stop"/>
+      <attribute name="style:vertical-align" defaultValue="top" element="style:column-sep"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:cx" defaultValue="50%" element="svg:radialGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:cy" defaultValue="50%" element="svg:radialGradient"/>
+      <attribute name="svg:gradientUnits" defaultValue="objectBoundingBox"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:r" defaultValue="50%" element="svg:radialGradient"/>
+      <attribute name="svg:spreadMethod" defaultValue="pad"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:x1" defaultValue="0%" element="svg:linearGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:x2" defaultValue="100%" element="svg:linearGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:y1" defaultValue="0%" element="svg:linearGradient"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="svg:y2" defaultValue="100%" element="svg:linearGradient"/>
+      <attribute name="table:acceptance-state" defaultValue="pending"/>
+      <attribute name="table:allow-empty-cell" defaultValue="true"/>
+      <attribute name="table:automatic-find-labels" defaultValue="true"/>
+      <attribute name="table:bind-styles-to-content" defaultValue="true"/>
+      <attribute name="table:case-sensitive" defaultValue="true"
+                 element="table:calculation-settings"/>
+      <attribute name="table:case-sensitive" defaultValue="false"
+                 element="table:filter-condition"/>
+      <attribute name="table:case-sensitive" defaultValue="false" element="table:sort"/>
+      <attribute name="table:case-sensitive" defaultValue="false" element="table:subtotal-rules"/>
+      <attribute name="table:condition-source" defaultValue="self"/>
+      <attribute name="table:contains-error" defaultValue="false"/>
+      <attribute name="table:contains-header" defaultValue="true"/>
+      <attribute name="table:copy-back" defaultValue="true"/>
+      <attribute name="table:copy-formulas" defaultValue="true"/>
+      <attribute name="table:copy-styles" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:count" defaultValue="1"/>
+      <attribute name="table:data-type" defaultValue="text" element="table:filter-condition"/>
+      <attribute name="table:data-type" defaultValue="automatic" element="table:sort-by"/>
+      <attribute name="table:data-type" defaultValue="automatic" element="table:sort-groups"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:date-value" defaultValue="1899-12-30"/>
+      <attribute name="table:display" defaultValue="true" element="table:table-column-group"/>
+      <attribute name="table:display" defaultValue="true" element="table:table-row-group"/>
+      <attribute name="table:display" defaultValue="false" element="table:error-message"/>
+      <attribute name="table:display" defaultValue="false" element="table:help-message"/>
+      <attribute name="table:display-border" defaultValue="true"/>
+      <attribute name="table:display-duplicates" defaultValue="true"/>
+      <attribute name="table:display-filter-buttons" defaultValue="false"/>
+      <attribute name="table:display-list" defaultValue="unsorted"/>
+      <attribute name="table:drill-down-on-double-click" defaultValue="true"/>
+      <attribute name="table:embedded-number-behavior" defaultValue="alpha-numeric"/>
+      <attribute name="table:execute" defaultValue="true"/>
+      <attribute name="table:grand-total" defaultValue="both"/>
+      <attribute name="table:has-persistent-data" defaultValue="true"/>
+      <attribute name="table:identify-categories" defaultValue="false"/>
+      <attribute name="table:ignore-empty-rows" defaultValue="false"/>
+      <attribute name="table:is-data-layout-field" defaultValue="false"/>
+      <attribute name="table:is-selection" defaultValue="false"/>
+      <attribute name="table:is-sub-table" defaultValue="false"/>
+      <attribute name="table:link-to-source-data" defaultValue="false"/>
+      <attribute name="table:matrix-covered" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:maximum-difference" defaultValue="0.001"/>
+      <attribute name="table:message-type" defaultValue="stop"/>
+      <attribute name="table:mode" defaultValue="copy-all"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:null-year" defaultValue="1930"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-repeated" defaultValue="1"
+                 element="table:covered-table-cell"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-repeated" defaultValue="1"
+                 element="table:table-cell"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-repeated" defaultValue="1"
+                 element="table:table-column"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-columns-spanned" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-rows-repeated" defaultValue="1"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:number-rows-spanned" defaultValue="1"/>
+      <attribute name="table:on-update-keep-size" defaultValue="true"/>
+      <attribute name="table:on-update-keep-styles" defaultValue="false"/>
+      <attribute name="table:order" defaultValue="ascending" element="table:sort-by"/>
+      <attribute name="table:order" defaultValue="ascending" element="table:sort-groups"/>
+      <attribute name="table:orientation" defaultValue="row" element="table:database-range"/>
+      <attribute name="table:page-breaks-on-group-change" defaultValue="false"/>
+      <attribute name="table:parse-sql-statement" defaultValue="false"/>
+      <attribute name="table:precision-as-shown" defaultValue="false"/>
+      <attribute name="table:print" defaultValue="true"/>
+      <attribute name="table:protect" defaultValue="false"/>
+      <attribute name="table:protected" defaultValue="false" element="table:covered-table-cell"/>
+      <attribute name="table:protected" defaultValue="false" element="table:table"/>
+      <attribute name="table:protected" defaultValue="false" element="table:table-cell"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:protection-key-digest-algorithm"
+                 defaultValue="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <attribute name="table:range-usable-as" defaultValue="none"/>
+      <attribute name="table:search-criteria-must-apply-to-whole-cell" defaultValue="true"/>
+      <attribute name="table:show-filter-button" defaultValue="true"/>
+      <attribute name="table:status" defaultValue="disable"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:steps" defaultValue="100"/>
+      <attribute name="table:structure-protected" defaultValue="false"/>
+      <attribute name="table:track-changes" defaultValue="false"/>
+      <attribute name="table:use-banding-columns-styles" defaultValue="false"/>
+      <attribute name="table:use-banding-rows-styles" defaultValue="false"/>
+      <attribute name="table:use-first-column-styles" defaultValue="false"/>
+      <attribute name="table:use-first-row-styles" defaultValue="false"/>
+      <attribute name="table:use-last-column-styles" defaultValue="false"/>
+      <attribute name="table:use-last-row-styles" defaultValue="false"/>
+      <attribute name="table:use-labels" defaultValue="none"/>
+      <attribute name="table:use-regular-expressions" defaultValue="true"/>
+      <attribute name="table:use-wildcards" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="table:used-hierarchy" defaultValue="-1"/>
+      <attribute name="table:value-type" defaultValue="date"/>
+      <attribute name="table:visibility" defaultValue="visible"/>
+      <attribute name="text:alphabetical-separators" defaultValue="false"/>
+      <attribute name="text:capitalize-entries" defaultValue="false"/>
+      <attribute name="text:combine-entries" defaultValue="true"/>
+      <attribute name="text:combine-entries-with-dash" defaultValue="false"/>
+      <attribute name="text:combine-entries-with-pp" defaultValue="true"/>
+      <attribute name="text:comma-separated" defaultValue="false"/>
+      <attribute name="text:consecutive-numbering" defaultValue="false"/>
+      <attribute name="text:copy-outline-levels" defaultValue="false"/>
+      <attribute name="text:count-empty-lines" defaultValue="true"/>
+      <attribute name="text:count-in-text-boxes" defaultValue="false"/>
+      <attribute name="text:display" defaultValue="number" element="text:index-entry-chapter"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:display-levels" defaultValue="1"/>
+      <attribute name="text:global" defaultValue="false"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:alphabetical-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:illustration-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:object-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:table-index-source"/>
+      <attribute name="text:index-scope" defaultValue="document"
+                 element="text:user-index-source"/>
+      <attribute name="text:ignore-case" defaultValue="false"/>
+      <attribute name="text:is-list-header" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:level" defaultValue="1" element="text:numbered-paragraph"/>
+      <attribute name="text:main-entry" defaultValue="false"/>
+      <attribute name="text:number-lines" defaultValue="true"
+                 element="text:linenumbering-configuration"/>
+      <attribute name="text:number-position" defaultValue="left"/>
+      <attribute name="text:numbered-entries" defaultValue="false"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:protection-key-digest-algorithm"
+                 defaultValue="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:alphabetical-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:illustration-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:object-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:table-index-source"/>
+      <attribute name="text:relative-tab-stop-position" defaultValue="true"
+                 element="text:user-index-source"/>
+      <attribute name="text:restart-numbering" defaultValue="false"/>
+      <attribute name="text:restart-on-page" defaultValue="false"/>
+      <attribute name="text:sort-ascending" defaultValue="true"/>
+      <attribute name="text:sort-by-position" defaultValue="true"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:start-value" defaultValue="1" element="text:list-level-style-number"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:start-value" defaultValue="1" element="text:notes-configuration"/>
+      <!--The following attribute default value is listed in the ODF schema-->            
+      <attribute name="text:start-value" defaultValue="1" element="text:outline-level-style"/>
+      <attribute name="text:track-changes" defaultValue="true"/>
+      <attribute name="text:use-caption" defaultValue="true"/>
+      <attribute name="text:use-chart-objects" defaultValue="false"/>
+      <attribute name="text:use-draw-objects" defaultValue="false"/>
+      <attribute name="text:use-floating-frames" defaultValue="false"/>
+      <attribute name="text:use-graphics" defaultValue="false"/>
+      <attribute name="text:use-index-marks" defaultValue="false"
+                 element="text:user-index-source"/>
+      <attribute name="text:use-index-source-styles" defaultValue="false"
+                 element="text:user-index-source"/>
+      <attribute name="text:use-keys-as-entries" defaultValue="false"/>
+      <attribute name="text:use-math-objects" defaultValue="false"/>
+      <attribute name="text:use-objects" defaultValue="false"/>
+      <attribute name="text:use-other-objects" defaultValue="false"/>
+      <attribute name="text:use-outline-level" defaultValue="true"/>
+      <attribute name="text:use-soft-page-breaks" defaultValue="false"/>
+      <attribute name="text:use-spreadsheet-objects" defaultValue="false"/>
+      <attribute name="text:use-tables" defaultValue="false"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="db:connection-resource"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="draw:a"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="form:form"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="meta:template"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest"
+                 element="presentation:event-listener"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="presentation:sound"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="script:event-listener"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="svg:definition-src"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="svg:font-face-uri"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="table:cell-range-source"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="table:table-source"/>
+      <attribute name="xlink:actuate" defaultValue="onRequest" element="text:a"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:applet"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:fill-image"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:floating-frame"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:image"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:object"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:object-ole"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="draw:plugin"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="meta:auto-reload"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad" element="style:background-image"/>
+      <attribute name="xlink:actuate" defaultValue="onLoad"
+                 element="text:list-level-style-image"/>
+      <attribute name="xlink:show" defaultValue="replace" element="meta:auto-reload"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:applet"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:fill-image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:floating-frame"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:object"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:object-ole"/>
+      <attribute name="xlink:show" defaultValue="embed" element="draw:plugin"/>
+      <attribute name="xlink:show" defaultValue="embed" element="presentation:event-listener"/>
+      <attribute name="xlink:show" defaultValue="embed" element="style:background-image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="text:list-level-style-image"/>
+      <attribute name="xlink:show" defaultValue="embed" element="text:section-source"/>
+      <attribute name="xlink:show" defaultValue="none" element="db:connection-resource"/>
+      <attribute name="xlink:type" defaultValue="simple" element="db:connection-resource"/>
+      <attribute name="xlink:type" defaultValue="simple" element="db:file-based-database"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:a"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:applet"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:area-circle"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:area-polygon"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:area-rectangle"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:fill-image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:floating-frame"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:object"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:object-ole"/>
+      <attribute name="xlink:type" defaultValue="simple" element="draw:plugin"/>
+      <attribute name="xlink:type" defaultValue="simple" element="form:form"/>
+      <attribute name="xlink:type" defaultValue="simple" element="meta:auto-reload"/>
+      <attribute name="xlink:type" defaultValue="simple" element="meta:template"/>
+      <attribute name="xlink:type" defaultValue="simple" element="presentation:event-listener"/>
+      <attribute name="xlink:type" defaultValue="simple" element="presentation:sound"/>
+      <attribute name="xlink:type" defaultValue="simple" element="script:event-listener"/>
+      <attribute name="xlink:type" defaultValue="simple" element="style:background-image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="svg:definition-src"/>
+      <attribute name="xlink:type" defaultValue="simple" element="svg:font-face-uri"/>
+      <attribute name="xlink:type" defaultValue="simple" element="table:cell-range-source"/>
+      <attribute name="xlink:type" defaultValue="simple" element="table:table-source"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:a"/>
+      <attribute name="xlink:type" defaultValue="simple"
+                 element="text:alphabetical-index-auto-mark-file"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:list-level-style-image"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:script"/>
+      <attribute name="xlink:type" defaultValue="simple" element="text:section-source"/>
+   </attributes>
+</config>
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/copyright.txt b/trunk/odfdom/src/codegen/resources/dom/template/copyright.txt
new file mode 100644
index 0000000..1b1fc5d
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/copyright.txt
@@ -0,0 +1,22 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/dom-output-files.vm b/trunk/odfdom/src/codegen/resources/dom/template/dom-output-files.vm
new file mode 100644
index 0000000..36f3b1b
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/dom-output-files.vm
@@ -0,0 +1,75 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+<?xml version="1.0" encoding="UTF-8"?>
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## src/main/resources/documentation/help.html
+##
+<filelist>
+	<file path="org/odftoolkit/odfdom/dom/style/OdfStyleFamily.java" template="java-odfdom-stylefamily.vm" />
+	<file path="org/odftoolkit/odfdom/dom/style/props/OdfStylePropertiesSet.java" template="java-odfdom-styleset.vm" />
+	<file path="org/odftoolkit/odfdom/dom/DefaultElementVisitor.java" template="java-odfdom-element-visitor.vm" />
+####<file path="org/odftoolkit/odfdom/pkg/DefaultAttributeVisitor.java" template="java-odfdom-attribute-visitor.vm" />
+##
+#foreach ($element in ${model.getElements().withoutMultiples()})
+#if ($element != "*")
+##
+#set($classname = "${model.camelCase($element)}Element")
+	<file path="org/odftoolkit/odfdom/dom/element/${model.extractNamespace($element)}/${classname}.java" context="$element" template="java-odfdom-element-template.vm" />
+##
+#end
+#end
+##
+#foreach ($base in $javamodel.getBaseclasses())
+##
+#if ($base != "container" && $base != "style" && $base != "styleproperties")
+#set($classname = "${model.camelCase($base)}ElementBase")
+	<file path="org/odftoolkit/odfdom/dom/element/${model.extractNamespace($base)}/${classname}.java" context="$base" template="java-odfdom-elementbase-template.vm" />
+#end
+##
+#end
+##
+#foreach ($attribute in ${model.getAttributes().withoutMultiples()})
+#if ($attribute != "*")
+##
+#set($classname = "${model.camelCase($attribute)}Attribute")
+	<file path="org/odftoolkit/odfdom/dom/attribute/${model.extractNamespace($attribute)}/${classname}.java" context="$attribute" template="java-odfdom-attribute-template.vm" />
+#end
+#end
+##
+#foreach ($attribute in ${model.getAttributes().withoutMultiples()})
+#if ($attribute != "*")
+##
+#set($classname = "${model.camelCase($attribute)}Attribute")
+	<file path="org/odftoolkit/odfdom/dom/attribute/${model.extractNamespace($attribute)}/${classname}.java" context="$attribute" template="java-odfdom-attribute-template.vm" />
+#end
+#end
+##
+#foreach ($styleelement in ${model.getElements().withoutMultiples()})
+#if ($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+#set ($properties=${styleelement.withMultiples().getAttributes()})
+#if ($properties.size()>0)
+	<file path="org/odftoolkit/odfdom/dom/style/props/Odf${model.camelCase(${styleelement.getLocalName()})}.java" context="$styleelement" template="java-odfdom-styleproperties.vm" />
+#end
+#end
+#end
+</filelist>
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-attribute-template.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-attribute-template.vm
new file mode 100644
index 0000000..a81e66e
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-attribute-template.vm
@@ -0,0 +1,386 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+################################################################## 
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined
+#set($attribute = $model.getAttribute($context))
+#set($NS = $attribute.getNamespace())
+#set($localname = ${model.extractLocalname($attribute)})
+#set($classname = "${model.camelCase($attribute)}Attribute")
+#set ($valueobject = "String")
+##
+#set($datatypes = ${attribute.getDatatypes().withoutMultiples()})
+#if ($datatypes.size() > 0)
+#set ($hasdatatype = true)
+#else
+#set ($hasdatatype = false)
+#end
+##
+##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken
+#set($values = ${attribute.getValues().withoutMultiples()})
+#if ($values.size() > 0)
+#if ($values.size() ==2 && $hasdatatype == false)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($value in $values)
+#if ($value==true)
+#set ($trueFlag = true)
+#end
+#if ($value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($hasdatatype = true)
+#set ($valueobject = "Boolean")
+#end
+#end
+#set ($enum = true)
+#if ($valueobject == "Boolean")
+#set ($enum = false)
+#end
+#else
+#set ($enum = false)
+#end
+##
+## Check whether the attribute has default value.
+##
+#set ($hasDefaultValue = false)
+#foreach ($parent in ${attribute.getParents().withoutMultiples()})
+#if (${odfmodel.getDefaultAttributeValue($attribute, $parent)})
+#set ($hasDefaultValue = true)
+#end
+#end
+##
+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))
+#if ($hasDefaultValue and $defaultValueSet.size() == 1)
+#foreach ($value in $defaultValueSet)
+#set ($uniqueDefaultValue = $value)
+#end
+#end
+##
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.${NS};
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+#if ($hasDefaultValue)
+import org.odftoolkit.odfdom.pkg.OdfElement;
+#end
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+#if ($hasDefaultValue and $defaultValueSet.size()>1)
+#foreach ($parent in ${attribute.getParents().withoutMultiples()})
+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))
+import org.odftoolkit.odfdom.dom.element.${parent.getNamespace()}.${model.camelCase($parent)}Element;
+#end
+#end
+#end
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute ${attribute.getQName()}}.
+ *
+ */
+public class $classname extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "$localname");
+#if ($hasDefaultValue)
+#if ($defaultValueSet.size()>1)
+#foreach ($defaultValue in $defaultValueSet)
+#set ($constant = $model.constantCase($defaultValue))
+#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false)
+	public static final String DEFAULT_VALUE_${model.escapeKeyword($constant)} = "$defaultValue";
+#else
+	public static final String DEFAULT_VALUE_${model.escapeKeyword($constant)} = Value.${model.escapeKeyword($constant)}.toString();
+#end
+#end
+#else
+#if ($uniqueDefaultValue=="&#34;")
+	public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}";
+#else
+	public static final String DEFAULT_VALUE = "$uniqueDefaultValue";
+#end
+#end
+#end
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute ${attribute}}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public $classname(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute ${attribute}}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+##
+#if ($enum)
+
+	/**
+	 * The value set of {@odf.attribute ${attribute}}.
+	 */
+	public enum Value {
+#set ($separator="		")
+#foreach($value in $values)
+#if (${value.toString().length()} == 1)
+#set ($constant = $value)
+#else
+#set ($constant = $model.constantCase($value))
+#end${separator}${model.escapeKeyword($constant)}("${model.escapeLiteral($value)}")#set ($separator=", ")
+#end ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+#end
+##
+## Handle Non-String-Attributes
+#set ($valuetypes = ${javamodel.getValuetypes($datatypes)})
+#if ($valueobject != "Boolean")
+#foreach ($valuetype in $valuetypes)
+#set ($valueobject = $valuetype)
+#end
+#end
+#if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean")
+#set ($valueobject = "String")
+#end
+#if ($valueobject != "String")
+#set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)})
+##
+
+	/**
+	 * @param value The <code>${simplevalue}</code> value of the attribute.
+	 */
+	public void set${model.camelCase($simplevalue)}Value(${simplevalue} value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>${simplevalue}</code> value of the attribute
+	 */
+	public ${simplevalue} ${simplevalue}Value() {
+		String val = super.getValue();
+		try {
+			return ${valueobject}.parse${model.camelCase($simplevalue)}(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+#end
+##
+#*
+	/**
+	 * @param attrValue The <code>String</code> value of the attribute.
+	 * @throws IllegalArgumentException If the provided attribute value is invalid
+	 */
+	@Override
+	public void setValue(String attrValue) {
+#if ($enum)
+#if ($hasdatatype)
+## enum and datatype
+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.
+		super.setValue(attrValue);
+#else
+## enum and no datatype
+		try {
+			super.setValue(Value.enumValueOf(attrValue).toString());
+		} catch (NullPointerException e) {
+			throw new IllegalArgumentException(e);
+		}
+#end
+#else
+		try {
+			super.setValue(attrValue);
+		} catch (NullPointerException e) {
+			// TODO: validation handling/logging
+			throw new IllegalArgumentException(e);
+		} catch (IllegalArgumentException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+#end
+	}
+
+	/**
+	 * @return Returns the <code>String</code> value of the attribute
+	 */
+	@Override
+	public String getValue() {
+#if ($enum)
+#if ($hasdatatype)
+## enum and datatype
+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.
+		return super.getValue();
+#else
+## enum and no datatype
+		try {
+			return Value.enumValueOf(super.getValue()).toString();
+		} catch (NullPointerException e) {
+			throw new IllegalArgumentException("the value of ${attribute} is not valid");
+		}
+#end
+#else
+		try {
+			return super.getValue();
+		} catch (IllegalArgumentException e) {
+			// TODO: validation handling/logging
+			throw new NumberFormatException("the value of ${attribute} is not valid");
+		}
+#end
+	}
+*#
+#if ($hasDefaultValue)
+	/**
+	 * Returns the default value of {@odf.attribute ${attribute}}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+#if ($defaultValueSet.size()>1)
+#foreach ($parent in ${attribute.getParents().withoutMultiples()})
+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))
+			if (parentElement instanceof ${model.camelCase($parent)}Element) {
+#set ($constant = ${model.constantCase($odfmodel.getDefaultAttributeValue($attribute, $parent))})
+				defaultValue = DEFAULT_VALUE_${model.escapeKeyword($constant)};
+			}
+#end
+#end
+#else
+			defaultValue=DEFAULT_VALUE;
+#end
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+#else
+	/**
+	 * Returns the default value of {@odf.attribute ${attribute}}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+#end
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+#if ($hasdatatype and $datatypes.size() > 0)
+#set ($datatype="")
+#foreach($value in $datatypes)
+#set ($datatype=$value)
+#end
+#if ($datatype == "ID")
+		return true;
+#else
+		return false;
+#end
+#else
+		return false;
+#end
+	}
+}
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-element-template.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-element-template.vm
new file mode 100644
index 0000000..2167135
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-element-template.vm
@@ -0,0 +1,471 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+## Template to create the Java class representing an ODF element
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+#set ($element = ${model.getElement($context)})
+#set ($oldelement = ${oldmodel.getElement($context)})
+#set ($NS = ${element.getNamespace()})
+#set ($classname = "${model.camelCase($element)}Element")
+##
+## Set child element and child attributes
+#set ($children = ${element.getChildElements().withoutMultiples()})
+#set ($attributes = ${element.getAttributes().withoutMultiples()})
+##
+## Determine whether element is stylable. Set base class OdfElement, OdfStylableElement, or...
+#if ($odfmodel.isStylable($element))
+#set ($stylable = true)
+#set ($baseclassname = "OdfStylableElement")
+#set ($elementStyleFamily=${odfmodel.getStyleFamilies($element)})
+#set ($useOdfStyleableShapeElement = false)
+#foreach($f in $elementStyleFamily)
+#if (${f.getQName()}=="draw:graphic" || ${f.getQName()}=="presentation:presentation")
+#set ($useOdfStyleableShapeElement = true)
+#end
+#end
+#if ($useOdfStyleableShapeElement)
+#set ($baseclassname = "OdfStyleableShapeElement")
+#end
+#set ($baseHasMandatoryAttr = false)
+#set ($firstfamily = ${model.camelCase($model.extractLocalname($odfmodel.getStyleFamilies($element).get(0)))})
+#else
+#set ($stylable = false)
+#set ($baseclassname = "OdfElement")
+#set ($baseHasMandatoryAttr = false)
+#end
+##
+## ...or configured base class
+#if (${javamodel.getBaseclassOf($element)})
+#set ($base = ${javamodel.getBaseclassOf($element)})
+## Configured manually generated base class?
+#if ($base == "container")
+#set ($_specialbase = true)
+#set ($baseclassname = "OdfContainerElementBase")
+#set ($baseimport = "org.odftoolkit.odfdom.pkg.$baseclassname")
+#set ($baseHasMandatoryAttr = false)
+#end
+#if ($base == "style")
+#set ($_specialbase = true)
+#set ($baseclassname = "OdfStyleBase")
+#set ($baseimport = "org.odftoolkit.odfdom.dom.element.$baseclassname")
+#set ($baseHasMandatoryAttr = false)
+#end
+#if ($base == "styleproperties")
+#set ($_specialbase = true)
+#set ($baseclassname = "OdfStylePropertiesBase")
+#set ($baseimport = "org.odftoolkit.odfdom.dom.element.$baseclassname")
+#set ($baseHasMandatoryAttr = false)
+#end
+## Configured automatic generated base class. If so, remove all attributes defined in base class
+#if (!$_specialbase)
+#set ($baseclassname = "${model.camelCase($base)}ElementBase")
+#if ($base.getNamespace() != $NS)
+#set ($baseimport = "org.odftoolkit.odfdom.dom.element.${base.getNamespace()}.$baseclassname")
+#end
+#set ($attributes = $attributes.without($base.getBaseAttributes()))
+#set ($baseElement = ${model.getElement($base.getQName())})
+#set ($bAttributes = ${baseElement.getAttributes().withoutMultiples()})
+#foreach ($bAttribute in $bAttributes)
+#if (${baseElement.isMandatory($bAttribute)})
+#set ($baseHasMandatoryAttr = true)
+#end
+#end
+#end
+#end
+##
+## Test if this element has mandatory (non optional) attributes
+#set ($hasMandatoryAttr = false)
+#foreach ($attribute in $attributes)
+#if (${element.isMandatory($attribute)})
+#set ($hasMandatoryAttr = true)
+#set ($mandatoryAttr = $attribute)
+#end
+#end
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.${NS};
+
+##
+## ---------------------------------------------------
+##  Imports
+## ---------------------------------------------------
+##
+#if ($stylable)
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+#else
+import org.odftoolkit.odfdom.pkg.OdfElement;
+#end
+#if ($base == "styleproperties")
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+#end
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+#foreach ($child in $children)
+#if ($child == "*")
+#set ($anychild = true)
+#else
+#set ($childNS = ${child.getNamespace()})
+#set ($childClassname = "${model.camelCase($child)}Element")
+#if ($childNS != $NS)
+import org.odftoolkit.odfdom.dom.element.${childNS}.$childClassname;
+#end
+#end
+#end
+##
+#foreach ($child in $attributes)
+#if ($child == "*")
+#set ($anyattribute = true)
+#else
+#set ($childNS = ${child.getNamespace()})
+#set ($childClassname = "${model.camelCase($child)}Attribute")
+import org.odftoolkit.odfdom.dom.attribute.${childNS}.$childClassname;
+#end
+#end
+##
+## If there is a base class which is not in the current package
+#if ($baseimport)
+import ${baseimport};
+#end
+
+##
+## ---------------------------------------------------
+##  Class
+## ---------------------------------------------------
+##
+/**
+ * DOM implementation of OpenDocument element  {@odf.element ${context}}.
+ *
+#if ($anychild)
+ * This class can have any org.w3c.dom.Element child element.
+#end
+#if ($anyattribute)
+ * This class can have any org.w3c.dom.Attribute attribute.
+#end
+ */
+public class $classname extends $baseclassname {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "${element.getLocalName()}");
+
+	/**
+	 * Create the instance of <code>$classname</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public $classname(OdfFileDom ownerDoc) {
+#if (($stylable && ($useOdfStyleableShapeElement == false)))
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.${firstfamily}, OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "style-name"));
+#else
+		super(ownerDoc, ELEMENT_NAME);
+#end
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element ${context}}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+## ---------------------------------------------------
+##  Only for base = styleproperties
+## ---------------------------------------------------
+#if ($base == "styleproperties")
+#foreach ($attribute in $attributes)
+#if ($attribute != "*")
+#set($propertyName = ${attribute.getLocalName()})
+#if (${element.getLocalName()}=="graphic-properties" && $propertyName =="shadow")
+#set($propertyName = ${attribute.getQName()})
+#end
+
+	public final static OdfStyleProperty ${model.camelCase($propertyName)} =
+		OdfStyleProperty.get(OdfStylePropertiesSet.${model.camelCase($element.getLocalName())}, OdfName.newName(OdfDocumentNamespace.${model.firstWord($attribute).toUpperCase()}, "${attribute.getLocalName()}"));
+#end
+#end
+#end
+##
+## ---------------------------------------------------
+##  Add init method if this element or the base
+##  element has mandatory attributes
+##  TODO: NO caller use this method.
+## ---------------------------------------------------
+##
+## ---------------------------------------------------
+##  Attribute getters and setters
+## ---------------------------------------------------
+##
+#foreach ($attr in $attributes)
+#set($attri = ${model.getAttribute($attr.getQName())})
+#set ($valueObject = "String")
+#set ($simpleValue = "")
+#set ($dataTypes = ${attri.getDatatypes().withoutMultiples()})
+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})
+#foreach ($valueType in $valueTypes)
+#set ($valueObject = $valueType)
+#end
+## use attri get all of the values.
+#set($values = ${attri.getValues().withoutMultiples()})
+#if ($values.size() ==2 && $dataTypes.size()==0)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($value in $values)
+#if ($value==true)
+#set ($trueFlag = true)
+#end
+#if ($value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($hasdatatype = true)
+#set ($valueObject = "Boolean")
+#end
+#end
+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")
+#set ($valueObject = "String")
+#end
+#if ($valueObject != "String")
+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})
+#end
+#if ($attr != "*")
+#set ($attribute = ${attr.withMultiples()})
+#set ($aNS = ${attribute.getNamespace()})
+#set ($aClassname = "${model.camelCase($attribute)}Attribute")
+#set ($aParam = "${model.javaCase($attribute)}Value")
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+#if (${element.isMandatory($attribute)})
+	 * Attribute is mandatory.
+	 *
+#end
+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public $valueObject get${aClassname}() {
+		$aClassname attr = ($aClassname) getOdfAttribute(OdfDocumentNamespace.${aNS.toUpperCase()}, "${attribute.getLocalName()}");
+		if (attr != null) {
+#if ($simpleValue!="")
+			return ${valueObject}.valueOf(attr.${simpleValue}Value());
+#else
+			return ${valueObject}.valueOf(attr.getValue());
+#end
+		}
+#if ($odfmodel.getDefaultAttributeValue($attribute, $element))
+#set ($defaultValue = ${model.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))})
+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))
+#if ($defaultValueSet.size()>1)
+#set ($constant = $model.constantCase($defaultValue))
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)};
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)});
+#end
+#else
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE;
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);
+#end
+#end
+#else
+		return null;
+#end
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+	 * @param $aParam   The type is <code>$valueObject</code>
+	 */
+	public void set${aClassname}($valueObject $aParam) {
+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+#if ($valueObject == "String")
+		attr.setValue($aParam);
+#else
+		attr.set${model.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());
+#end
+	}
+#end
+#end
+
+##
+## ---------------------------------------------------
+##  Methods for child element creation
+## ---------------------------------------------------
+##
+#foreach($ch in $children)
+#if ($ch != "*")
+#set ($child = ${ch.withMultiples()})
+#set ($cClassname = "${model.camelCase($child)}Element")
+#set ($cVar = ${model.javaCase($child)})
+#set ($ch_attributes = ${child.getAttributes().withoutMultiples()})
+##set has parameter flag
+#set ($hasParams = false)
+#foreach ($ch_attribute in $ch_attributes)
+#if (${child.isMandatory($ch_attribute)})
+#set ($hasParams = true)
+#end
+#end
+#if ($hasParams)
+	/**
+	 * Create child element {@odf.element ${child}}.
+	 *
+#set ($seperateFlag="")
+#set ($params="")
+#foreach ($ch_attr in $ch_attributes)
+#if (${child.isMandatory($ch_attr)})
+#set($ch_attri = ${model.getAttribute($ch_attr.getQName())})
+#set ($ch_ValueObject = "String")
+#set ($ch_SimpleValue = "")
+#set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()})
+#set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)})
+#foreach ($ch_ValueType in $ch_ValueTypes)
+#set ($ch_ValueObject = $ch_ValueType)
+#end
+## use ch_attri get all of the values.
+#set($ch_Values = ${ch_attri.getValues().withoutMultiples()})
+#if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($ch_Value in $ch_Values)
+#if ($ch_Value==true)
+#set ($trueFlag = true)
+#end
+#if ($ch_Value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($ch_Hasdatatype = true)
+#set ($ch_ValueObject = "Boolean")
+#end
+#end
+#if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean")
+#set ($ch_ValueObject = "String")
+#end
+#if ($ch_ValueObject != "String")
+#set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)})
+#end
+#if ($ch_attr != "*")
+#set ($attribute = ${ch_attr.withMultiples()})
+#set ($aNS = ${attribute.getNamespace()})
+#set ($aClassname = "${model.camelCase($attribute)}Attribute")
+#set ($aParam = "${model.javaCase($attribute)}Value")
+	 * @param $aParam  the <code>$ch_ValueObject</code> value of <code>$aClassname</code>, see {@odf.attribute  ${attribute.getQName()}} at specification
+#if ($ch_SimpleValue!="")
+#set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}")
+#else
+#set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}")
+#end
+#set ($seperateFlag=", ")
+#end
+#end
+#end
+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)
+## but we can compare by name
+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})
+	 * Child element is new in Odf 1.2
+	 *
+#end
+#if (${element.isMandatory($child)})
+	 * Child element is mandatory.
+	 *
+#end
+	 * @return the element {@odf.element ${child}}
+	 */
+	 public $cClassname new${cClassname}($params) {
+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);
+#foreach ($ch_attr in $ch_attributes)
+#if ($ch_attr != "*" && ${child.isMandatory($ch_attr)})
+#set ($aClassname = "${model.camelCase($ch_attr)}Attribute")
+#set ($aParam = "${model.javaCase($ch_attr)}Value")
+		${cVar}.set$aClassname($aParam);
+#end
+#end
+		this.appendChild($cVar);
+		return $cVar;
+	}
+
+#else
+	/**
+	 * Create child element {@odf.element ${child}}.
+	 *
+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)
+## but we can compare by name
+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})
+	 * Child element is new in Odf 1.2
+	 *
+#end
+#if (${element.isMandatory($child)})
+	 * Child element is mandatory.
+	 *
+#end
+	 * @return the element {@odf.element ${child}}
+	 */
+	public $cClassname new${cClassname}() {
+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);
+		this.appendChild($cVar);
+		return $cVar;
+	}
+
+#end
+#end
+#end
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+##
+## -----------------------------------------------------
+##  New: newTextNode
+## -----------------------------------------------------
+##
+#if ($element.canHaveText())
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+#end
+}
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-element-visitor.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-element-visitor.vm
new file mode 100644
index 0000000..7927941
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-element-visitor.vm
@@ -0,0 +1,70 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom;
+##
+## ---------------------------------------------------
+##  Imports
+## ---------------------------------------------------
+##
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+##
+#foreach ($element in ${model.getElements().withoutMultiples()})
+#if ($element != "*")
+#set ($NS = ${element.getNamespace()})
+#set ($classname = "${model.camelCase($element)}Element")
+import org.odftoolkit.odfdom.dom.element.${NS}.${classname};
+#end
+#end
+##
+
+/**
+ * The default visitor for ODF XML sSchema elements.
+ * The default behavior of all specific elements is to dispatch to the visit call
+ * to their super class <code>OdfElement<code>.
+ * This default method is abstract and have to be overridden.
+ * The method is the only method of <code>ElementVisitor<code> interface from the package layer.
+ */
+public abstract class DefaultElementVisitor implements ElementVisitor {
+
+	abstract public void visit(OdfElement element);
+#foreach ($element in ${model.getElements().withoutMultiples()})
+#if ($element != "*")
+#set ($NS = ${element.getNamespace()})
+#set ($classname = "${model.camelCase($element)}Element")
+
+	/**
+	 * A method to visit "${element.getQName()}" elements
+	 * @param ele - an instance of $classname
+	 */
+	public void visit($classname ele) {
+		visit((OdfElement) ele);
+	}
+#end
+#end
+}
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-elementbase-template.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-elementbase-template.vm
new file mode 100644
index 0000000..44315a8
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-elementbase-template.vm
@@ -0,0 +1,206 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+## Template to create the Java class representing an ODF element.
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+#set ($base = $javamodel.getBaseclass($context))
+#set ($baseElement = ${model.getElement($base.getQName())})
+#set($classname = "${model.camelCase($base)}ElementBase")
+##
+## Set Superclass
+#if (${base.isStylable()})
+#set ($stylable = true)
+#set ($superclass = "OdfStylableElement")
+#if ($baseElement)
+#set ($elementStyleFamily=${odfmodel.getStyleFamilies($baseElement)})
+#set ($useOdfStyleableShapeElement = false)
+#foreach($f in $elementStyleFamily)
+#if (${f.getQName()}=="draw:graphic" || ${f.getQName()}=="presentation:presentation")
+#set ($useOdfStyleableShapeElement = true)
+#end
+#end
+#end
+#else
+#set ($superclass = 'OdfElement')
+#end
+#if ($context== "text:list-level-style")
+#set ($superclass = 'OdfStyleBase')
+#end
+
+#if ($useOdfStyleableShapeElement || $classname=="DrawShapeElementBase")
+#set ($superclass = "OdfStyleableShapeElement")
+#end
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.${base.getNamespace()};
+
+##
+## ---------------------------------------------------
+##  Imports
+## ---------------------------------------------------
+##
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+#foreach ($attribute in ${base.getBaseAttributes().withoutMultiples()})
+#if ($attribute == "*")
+#set ($anyattribute = true)
+#else
+import org.odftoolkit.odfdom.dom.attribute.${attribute.getNamespace()}.${model.camelCase($attribute)}Attribute;
+#end
+#end
+
+##
+## ---------------------------------------------------
+##  Class
+## ---------------------------------------------------
+##
+/**
+ * DOM implementation of OpenDocument base element
+ *
+#if ($anyattribute)
+ * This class can have any org.w3c.dom.Attribute attribute.
+#end
+ */
+public abstract class $classname extends $superclass {
+
+	/**
+	 * Create the instance of <code>$classname</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+#if (${base.isStylable()}&& ($useOdfStyleableShapeElement == false) || $classname=="TextParagraphElementBase")
+	public $classname(OdfFileDom ownerDoc, OdfName elementName, OdfStyleFamily styleFamily, OdfName styleAttrName) {
+		super(ownerDoc, elementName, styleFamily, styleAttrName);
+	}
+#else
+	public $classname(OdfFileDom ownerDoc, OdfName elementName) {
+		super(ownerDoc, elementName);
+	}
+#end
+
+##
+## ---------------------------------------------------
+##  Attribute getters and setters
+## ---------------------------------------------------
+##
+#foreach ($attr in ${base.getBaseAttributes().withoutMultiples()})
+#set ($valueObject = "String")
+#set ($simpleValue = "")
+#set ($dataTypes = ${attr.getDatatypes().withoutMultiples()})
+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})
+#foreach ($valueType in $valueTypes)
+#set ($valueObject = $valueType)
+#end
+#set($values = ${attr.getValues().withoutMultiples()})
+#if ($values.size() ==2)
+#set ($trueFlag = false)
+#set ($falseFlag = false)
+#foreach ($value in $values)
+#if ($value==true)
+#set ($trueFlag = true)
+#end
+#if ($value==false)
+#set ($falseFlag = true)
+#end
+#end
+#if ($trueFlag and $falseFlag)
+#set ($hasdatatype = true)
+#set ($valueObject = "Boolean")
+#end
+#end
+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")
+#set ($valueObject = "String")
+#end
+#if ($valueObject != "String")
+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})
+#end
+#if ($attr != "*")
+#set ($attribute = ${attr.withMultiples()})
+#set ($aNS = ${attribute.getNamespace()})
+#set ($aClassname = "${model.camelCase($attribute)}Attribute")
+#set ($aParam = "${model.javaCase($attribute)}Value")
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public $valueObject get${aClassname}() {
+		$aClassname attr = ($aClassname) getOdfAttribute(OdfDocumentNamespace.${aNS.toUpperCase()}, "${attribute.getLocalName()}");
+		if (attr != null) {
+#if ($simpleValue!="")
+			return ${valueObject}.valueOf(attr.${simpleValue}Value());
+#else
+			return ${valueObject}.valueOf(attr.getValue());
+#end
+		}
+#if ($odfmodel.getDefaultAttributeValue($attr, $base))
+#set ($defaultValue = ${model.escapeLiteral($odfmodel.getDefaultAttributeValue($attr, $base))})
+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attr))
+#if ($defaultValueSet.size()>1)
+#set ($constant = $model.constantCase($defaultValue))
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)};
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${model.escapeKeyword($constant)});
+#end
+#else
+#if ($valueObject == "String")
+		return ${aClassname}.DEFAULT_VALUE;
+#else
+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);
+#end
+#end
+#else
+		return null;
+#end
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${attribute.getQName()}}
+	 *
+	 * @param $aParam   The type is <code>$valueObject</code>
+	 */
+	public void set${aClassname}($valueObject $aParam) {
+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+#if ($valueObject == "String")
+		attr.setValue($aParam);
+#else
+		attr.set${model.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());
+#end
+	}
+#end
+#end
+}
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-stylefamily.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-stylefamily.vm
new file mode 100644
index 0000000..5ebd24e
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-stylefamily.vm
@@ -0,0 +1,117 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+## Template to create the list of artefacts which are to be generated
+##
+## Documentation of template development can be found in local file
+## TemplateHelp.html.
+##
+##
+## Begin Code
+#include('copyright.txt')
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.style;
+
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFamilyAttribute;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Map;
+import java.util.HashMap;
+##
+#foreach ($styleelement in ${model.getElements().withoutMultiples()})
+#if ($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+import org.odftoolkit.odfdom.dom.element.style.${model.camelCase($styleelement)}Element;
+#end
+#end
+
+public class OdfStyleFamily implements Comparable<OdfStyleFamily> {
+
+	private String m_name;
+//    private Class m_styleClass;
+	private Set<OdfStyleProperty> m_properties = new TreeSet<OdfStyleProperty>();
+	private static Map<String, OdfStyleFamily> m_familyByName = new HashMap<String, OdfStyleFamily>();
+
+	public static OdfStyleFamily getByName(String name) {
+		return m_familyByName.get(name);
+	}
+
+	private OdfStyleFamily(String name /*, Class styleClass*/, OdfStyleProperty[] props) {
+		m_name = name;
+//        m_styleClass = styleClass;
+		for (OdfStyleProperty prop : props) {
+			m_properties.add(prop);
+		}
+		m_familyByName.put(name, this);
+	}
+
+	public String getName() {
+		return m_name;
+	}
+
+	public int compareTo(OdfStyleFamily o) {
+		return m_name.compareTo(o.toString());
+	}
+
+	public static OdfStyleFamily valueOf(String name) {
+		OdfStyleFamily family = getByName(name);
+		if (family == null)
+			family = new OdfStyleFamily(name,  new OdfStyleProperty[]{ null });
+
+		return family;
+	}
+
+	public static String toString(OdfStyleFamily family) {
+		if (family != null)
+			return family.toString();
+		else
+			return new String();
+	}
+
+	@Override
+	public String toString() {
+		return m_name;
+	}
+
+	public Set<OdfStyleProperty> getProperties() {
+		return m_properties;
+	}
+
+#foreach ($family in ${odfmodel.getStyleFamilies()})
+	public final static OdfStyleFamily ${model.camelCase($model.extractLocalname($family))} = new OdfStyleFamily("${model.extractLocalname($family)}",
+			new OdfStyleProperty[]{
+#foreach ($styleelement in ${model.getElements().withoutMultiples()})
+#if ($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+#foreach ($property in ${styleelement.withMultiples().getAttributes()})
+#set($propertyName = ${property.getLocalName()})
+#if (${styleelement.getLocalName()}=="graphic-properties" && $propertyName =="shadow")
+#set($propertyName = ${property.getQName()})
+#end
+	${model.camelCase($styleelement)}Element.${model.camelCase($propertyName)},
+#end
+#end
+#end
+	});
+
+#end
+}
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-styleproperties.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-styleproperties.vm
new file mode 100644
index 0000000..9e9dfe7
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-styleproperties.vm
@@ -0,0 +1,40 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+#include('copyright.txt')
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+#set ($element = ${model.getElement($context)})
+#set ($classname = "Odf${model.camelCase($element.getLocalName())}")
+public interface $classname {
+#foreach ($property in ${element.getAttributes().withoutMultiples()})
+#set($propertyName = ${property.getLocalName()})
+#if (${element.getLocalName()}=="graphic-properties" && $propertyName =="shadow")
+#set($propertyName = ${property.getQName()})
+#end
+	public final static OdfStyleProperty ${model.camelCase($propertyName)} =
+		OdfStyleProperty.get(OdfStylePropertiesSet.${model.camelCase($element.getLocalName())}, OdfName.newName(OdfDocumentNamespace.${property.getNamespace().toUpperCase()}, "${property.getLocalName()}"));
+#end
+}
diff --git a/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-styleset.vm b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-styleset.vm
new file mode 100644
index 0000000..340fec7
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/dom/template/java-odfdom-styleset.vm
@@ -0,0 +1,37 @@
+##################################################################
+## 
+## 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
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+## 
+##  http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+##
+##################################################################
+## Template	to create the list of artefacts	which are to be	generated
+##
+## Documentation of	template development can be	found in local file
+## TemplateHelp.html.
+##
+##
+#include('copyright.txt')
+// !!! GENERATED SOURCE	CODE !!!
+package	org.odftoolkit.odfdom.dom.style.props;
+public enum	OdfStylePropertiesSet {
+#foreach ($styleelement	in ${model.getElements().withoutMultiples()})
+#if	($styleelement.getNamespace() == "style" && ${styleelement.getLocalName().endsWith("properties")})
+	// style-${styleelement.getLocalName()}-attlist
+	${model.camelCase($styleelement.getLocalName())},
+#end
+#end
+}
diff --git a/trunk/odfdom/src/codegen/resources/pkg/config.xml b/trunk/odfdom/src/codegen/resources/pkg/config.xml
new file mode 100644
index 0000000..0bf8c2e
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/config.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+
+-->
+<config>
+    <data-types>
+        <data name="NCName" value-type="String" conversion-type="String"/>
+        <data name="anyURI" value-type="String" conversion-type="org.odftoolkit.odfdom.dom.type.OdfAnyURI"/>
+        <data name="integer" value-type="Integer" conversion-type="Integer"/>
+        <data name="ID" value-type="String" conversion-type="org.odftoolkit.odfdom.dom.type.OdfId"/>
+        <data name="IDREF" value-type="String" conversion-type="org.odftoolkit.odfdom.dom.type.OdfId"/>
+        <data name="IDREFS" value-type="String" conversion-type="org.odftoolkit.odfdom.dom.type.OdfId"/>
+        <data name="double" value-type="Double" conversion-type="Double"/>
+        <data name="date" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.dom.type.OdfDate"/>
+        <data name="nonNegativeInteger" value-type="Integer" conversion-type="org.odftoolkit.odfdom.dom.type.OdfNonNegativeInteger"/>
+        <data name="positiveInteger" value-type="Integer" conversion-type="org.odftoolkit.odfdom.dom.type.OdfPositiveInteger"/>
+        <data name="time" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.dom.type.OdfDate"/>
+        <data name="duration" value-type="javax.xml.datatype.Duration" conversion-type="org.odftoolkit.odfdom.dom.type.OdfDuration"/>
+        <data name="base64Binary" value-type="String" conversion-type="String"/>
+        <data name="token" value-type="String" conversion-type="String"/>
+        <data name="string" value-type="String" conversion-type="String"/>
+        <data name="language" value-type="String" conversion-type="String"/>
+        <data name="dateOrDateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.dom.type.OdfDate"/>
+        <data name="dateTime" value-type="javax.xml.datatype.XMLGregorianCalendar" conversion-type="org.odftoolkit.odfdom.dom.type.OdfDate"/>
+        <data name="boolean" value-type="Boolean" conversion-type="org.odftoolkit.odfdom.dom.type.OdfBoolean"/>
+        <data name="percent" value-type="Double" conversion-type="org.odftoolkit.odfdom.dom.type.OdfPercent"/>
+        <data name="nonNegativeLength" value-type="String" conversion-type="org.odftoolkit.odfdom.dom.type.OdfNonNegativeLength"/>
+    </data-types>
+</config>
diff --git a/trunk/odfdom/src/codegen/resources/pkg/javacodetemplate.xml b/trunk/odfdom/src/codegen/resources/pkg/javacodetemplate.xml
new file mode 100644
index 0000000..cb0ddff
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/javacodetemplate.xml
@@ -0,0 +1,1200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+ 
+-->
+<template class="java">
+
+<ref name="gen_dom_type_enumerations"/>
+<ref name="gen_dom_base_elements"/>
+<ref name="gen_manifest_dom_elements"/>
+<ref name="gen_OdfNamespace"/>
+<ref name="gen_manifest_pkg_elements"/>
+<ref name="gen_OdfElementFactory"/>
+    
+<!-- generate flat rng -->
+<!--file name="elements" extension="xml">
+<code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;elements&gt;</code>
+      <foreach type="element">
+<code>
+&lt;element name="%{elementqname}"&gt;</code>
+<foreach type="attribute">
+<if test="valuetype='enum'">
+<code>
+&lt;attribute name="%{attributeqname}" type="enum"&gt;</code>
+<foreach type="value" seperator=", ">
+ <code>"%{value}"</code>
+</foreach>
+<code>&lt;/attribute&gt;</code>
+<else>
+<code>
+&lt;attribute name="%{attributeqname}" type="%{valuetype}"/&gt;</code>    
+</else>
+</if>
+</foreach>   
+<code>
+&lt;/element&gt;</code>      
+      </foreach>
+<code>
+&lt;/elements&gt;</code>
+</file-->  
+
+<!-- copyright header for .java files -->  
+<define name="header">
+<code>/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */    
+</code>
+</define>
+
+<!-- copyright header for .java files -->  
+<define name="docheader">
+<code>/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+</code>
+</define>
+<!-- sets the name for the current attribute ============================== -->
+
+<define name="convertenumvaluetype">
+    <if test="valuetype='enum'">
+        <if test="not endswith(conversiontype,'type')">
+            <set valuetype="org.odftoolkit.odfdom.dom.type.%{prefix(conversiontype)}:Odf%{identifier(conversiontype)}Type"/>
+            <else>
+                <set valuetype="org.odftoolkit.odfdom.dom.type.%{prefix(conversiontype)}:Odf%{identifier(conversiontype)}"/>
+            </else>
+         </if>
+         <set conversiontype="%{valuetype}"/>
+         <set valueoffunc="enumValueOf"/>
+         <else>
+             <set valueoffunc="valueOf"/>
+         </else>
+    </if>            
+</define>
+
+
+<!-- create getter and setter for all attributes of the current element ==== -->
+
+<define name="setxlinkdefaults">
+    <foreach type="attribute">
+        <if test="(valuetype = 'String') and (attributeqname = 'xlink:type' or attributeqname = 'xlink:show' or attributeqname = 'xlink:actuate')">
+            <foreach type="value">
+<code>        setOdfAttribute( OdfName.get( OdfNamespace.XLINK, "%{local_name(attributeqname)}" ), "%{value}" );
+</code>
+            </foreach>
+        </if>
+    </foreach>
+</define>
+
+<define name="attributes">
+    <foreach type="attribute">
+    <ref name="convertenumvaluetype"/>
+    <if test="not prefix(attributeqname)">
+        <set namespace='""'/>
+        <else>
+            <set namespace="OdfNamespace.%{toupper(prefix(attributeqname))}"/>
+        </else>
+    </if>
+    <if test="(valuetype != 'String') or (attributeqname != 'xlink:type' and attributeqname != 'xlink:show' and attributeqname != 'xlink:actuate')">
+        <code>
+    /**
+     * Get value of attribute {@attributeName %{attributeqname}}.
+     *
+     *@return return the attribute which type is %{local_name(valuetype)}
+     */
+    public %{local_name(valuetype)} get%{identifier(attributename)}()
+    {</code>
+            <if test="not defaultvalue and valuetype = 'String' and conversiontype = 'String'">
+<code>
+        return getOdfAttribute( OdfName.get( %{namespace}, "%{local_name(attributeqname)}" ) );
+</code>        
+                <else>
+<code>                    
+        String aStringVal = getOdfAttribute( OdfName.get( %{namespace}, "%{local_name(attributeqname)}" ) );</code>
+<if test=" defaultvalue = '&quot;' ">
+<code>
+        if( aStringVal.length()==0 )
+        {
+            aStringVal = "\%{defaultvalue}";
+        }
+</code>   
+	<else>
+		<if test="defaultvalue">
+<code>
+        if( aStringVal.length()==0 )
+        {
+            aStringVal = "%{defaultvalue}";
+        }
+</code> 			
+		</if>
+	</else>
+</if>        
+<code>
+        return %{local_name(conversiontype)}.%{valueoffunc}( aStringVal);
+</code>        
+                </else>
+            </if>
+<code>    }
+
+    /**
+     * Set value of attribute {@attributeName %{attributeqname}}.
+     *
+     *@param  _a%{identifier(attributename)}    the attribute's type is %{local_name(valuetype)}
+     */
+    public void set%{identifier(attributename)}( %{local_name(valuetype)} _a%{identifier(attributename)} )
+    {</code>
+            <if test="valuetype = 'String' and conversiontype = 'String'">
+<code>
+        setOdfAttribute( OdfName.get( %{namespace}, "%{local_name(attributeqname)}" ), _a%{identifier(attributename)} );
+</code>        
+                <else>
+<code>                    
+        String aStringVal = %{local_name(conversiontype)}.toString( _a%{identifier(attributename)} );
+        setOdfAttribute( OdfName.get( %{namespace}, "%{local_name(attributeqname)}" ), aStringVal );
+</code>        
+                </else>
+            </if>            
+            
+            <if test="attributeqname = 'xlink:href'">
+                <ref name="setxlinkdefaults"/>
+            </if>
+<code>    }
+</code> 
+      </if>
+    </foreach>          
+</define>
+
+<!-- imports section for the current element =============================== -->
+
+<define name="doImport">
+  <if test="not contains(imports,import,';')">
+<code>import %{import};
+</code>
+      <set imports="%{imports};%{import}"/>
+  </if>
+</define>
+
+<define name="element-import-section">
+<code>import org.odftoolkit.odfdom.dom.OdfName;
+import org.odftoolkit.odfdom.pkg.manifest.OdfNamespace;
+import org.odftoolkit.odfdom.doc.OdfFileDom;
+</code>
+<if test="elementstylefamily!=''">
+<code>import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+</code>
+</if>
+<!-- import base class, but only if it is in another package -->
+<if test="prefix(baseclassname) != prefix(classname)">
+<code>import %{baseclassname};
+</code>
+</if>
+  <!-- do imports for attribute values and conversion types -->
+ <if test="elementbasename != 'styleproperties'">
+  <set imports=""/>
+  <foreach type="attribute">
+    <set import=""/>
+    <if test="valuetype = 'enum'">
+        <ref name="convertenumvaluetype"/>
+        <set import="%{prefix(valuetype)}.%{local_name(valuetype)}"/>
+        <set conversiontype="%{valuetype}"/>
+        <else>
+            <if test="prefix(valuetype) != ''">
+                <set import="%{substring-before(valuetype,'&lt;')}"/>
+            </if>
+        </else>
+    </if>
+    <if test="import">
+        <ref name="doImport"/>
+    </if>
+    <if test="valuetype != conversiontype">
+        <if test="prefix(conversiontype)">
+            <set import="%{substring-before(conversiontype,'&lt;')}"/>
+            <ref name="doImport"/>
+        </if>
+    </if>
+  </foreach>
+  <else>
+<code>import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+</code>
+</else>
+  </if>
+</define>
+
+<!-- sets 'ret' to 'true' if the current element has non optional attributes -->
+<define name="check_for_non_optional_attributes">
+    <set ret="false"/>
+    <foreach type="attribute">
+        <if test="not optionalattribute">
+            <set ret="true"/>
+        </if>
+    </foreach>
+</define>
+
+<!-- create constructor parameter string for current non optional attributes -->
+<define name="element_ctor_params">
+    <foreach type="attribute">
+        <if test="not optionalattribute">
+            <ref name="convertenumvaluetype"/>
+                <code>%{sep}%{local_name(valuetype)} _a%{identifier(attributename)}</code>
+            <set sep=", "/>
+        </if>
+    </foreach>
+</define>
+
+<!-- create the parameter list for the init method of the current element == -->
+<define name="element_init_params">
+    <foreach type="attribute">
+        <if test="not optionalattribute">
+            <ref name="convertenumvaluetype"/>
+                <code>_a%{identifier(attributename)}</code>
+            <set sep=", "/>
+        </if>
+    </foreach>
+</define>
+
+<!-- create init method for current non optional attributes -->
+<define name="element_ctor_init">
+    <foreach type="attribute">
+        <if test="not optionalattribute">
+            <ref name="convertenumvaluetype"/>
+<code>        set%{identifier(attributename)}( _a%{identifier(attributename)} );
+</code>
+        </if>
+    </foreach>
+</define>
+ 
+<!-- create enumerations java files ===================================== -->
+<define name="gen_dom_type_enumerations">
+  <foreach type="element">
+    <foreach type="attribute">
+      <if test="valuetype='enum'">
+        <ref name="convertenumvaluetype"/>
+        <set enumclassname="%{local_name(valuetype)}"/>
+        <file path="%{prefix(valuetype)}" name="%{enumclassname}" extensions="java">
+          <ref name="header"/>
+<code>package %{prefix(valuetype)};
+
+public enum %{enumclassname}
+{
+              </code>
+              <foreach type="value" seperator=", ">
+                 <code>%{toupper(identifier(replace("-","_",value)))}( "%{value}" )</code>
+              </foreach>
+              <code>;
+
+    private String m_aValue;
+
+    %{enumclassname}( String _aValue )
+    {
+        m_aValue = _aValue;
+    }
+
+    public String toString()
+    {
+        return m_aValue;
+    }
+
+    public static String toString( %{enumclassname} _aEnum )
+    {
+        return _aEnum.toString();
+    }
+
+    public static %{enumclassname} enumValueOf( String _aString )
+    {
+        for( %{enumclassname} aIter : values() )
+        {
+            if( _aString.equals( aIter.toString() ) )
+            {
+                return aIter;
+            }
+        }
+        return null;
+    }
+
+}
+</code>
+        </file>
+      </if>
+    </foreach>
+  </foreach>
+</define>
+
+<!-- create base element class files ===================================== -->
+<define name="gen_dom_base_elements">
+  <foreach type="baseelement">
+    <set classname="org.odftoolkit.odfdom.dom.element.%{prefix(elementqname)}.Odf%{identifier(elementname)}ElementBase"/>
+    <if test="not elementstylefamily">        
+        <if test="elementbasename = 'container'">
+            <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfContainerElementBase"/>
+            <else>
+                <if test="elementbasename = 'style'">
+                    <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStyleBase"/>
+                    <else>
+                       <if test="elementbasename = 'styleproperties'">
+                          <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase"/>
+                          <else>
+                              <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfElement"/>
+                          </else>
+                       </if>
+                     </else>
+                  </if>
+               </else>
+           </if>
+        <else>
+            <if test="elementstylefamily!='draw:graphic,presentation:presentation'">
+                <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStylableElement"/>
+                <else>
+                    <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStyleablePresentationElement"/>
+                </else>
+            </if>
+        </else>
+    </if>
+    <file path="%{prefix(classname)}" name="%{local_name(classname)}" extensions="java">      
+      <ref name="header"/>
+<code>package org.odftoolkit.odfdom.dom.element.%{prefix(elementqname)};
+</code>
+      <ref name="element-import-section"/>
+      <code>
+
+/**
+ * ODF DOM base element implementation.
+ */
+public abstract class %{local_name(classname)} extends %{local_name(baseclassname)}
+{</code>
+<if test="(elementstylefamily = '') or (elementstylefamily = 'draw:graphic,presentation:presentation')">
+<code>
+    public %{local_name(classname)}( OdfFileDom _aOwnerDoc, OdfName element_name )
+    {
+        super( _aOwnerDoc, element_name );
+    }</code>
+<else>    
+<code>
+    public %{local_name(classname)}( OdfFileDom _aOwnerDoc ,OdfName _elementName ,OdfStyleFamily _styleFamily ,OdfName _styleAttrName )
+    {
+        super( _aOwnerDoc, _elementName, _styleFamily, _styleAttrName );
+    }</code>   
+</else>    
+</if>
+<code>
+    /**
+     * Initialize mandatory attributes.
+     */
+    public void init(</code>
+<set sep=""/>    
+<ref name="element_ctor_params"/>    
+<code>)
+    {
+</code>
+<ref name="element_ctor_init"/>    
+<code>    }
+      </code>
+      <if test="elementbasename != 'styleproperties'">
+        <ref name="attributes"/>
+        <else>
+            
+        </else>
+      </if>
+      <code>
+}
+      </code>
+    </file>
+  </foreach>    
+</define>
+
+<define name="get_baseclassname">
+    <if test="not elementbasename">
+        <if test="not elementstylefamily">        
+            <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfElement"/>
+            <else>
+                <if test="elementstylefamily!='draw:graphic,presentation:presentation'">
+                    <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStylableElement"/>
+                    <else>
+                        <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStyleablePresentationElement"/>
+                    </else>
+                </if>                
+            </else>
+        </if>
+        <else>
+            <if test="elementbasename = 'container'">
+                <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfContainerElementBase"/>
+            <else>
+                <if test="elementbasename = 'style'">
+                    <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStyleBase"/>
+                    <else>
+                       <if test="elementbasename = 'styleproperties'">
+                          <set baseclassname="org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase"/>
+                          <else>
+                            <set baseclassname="org.odftoolkit.odfdom.dom.element.%{prefix(elementbasename)}.Odf%{identifier(elementbasename)}ElementBase"/>
+                          </else>
+                       </if>
+                    </else>
+                </if>
+            </else>
+            </if>
+        </else>
+    </if>
+</define>
+
+<!-- create dom element class files ========================================== -->
+<define name="gen_manifest_dom_elements">
+  <foreach type="element">
+    <!-- test if this element has mandatory (non optional) attributes -->
+    <ref name="check_for_non_optional_attributes"/>
+    <set hasMandatoryAttr="%{ret}"/>
+    <set packagename = "%{prefix(elementqname)}" />
+    <set currentname = "%{elementname}" />
+
+    <!-- now check if base element has mandatory (non optional) attributes -->
+    <set baseHasMandatoryAttr="false"/>
+    <if test="prefix(elementbasename) != ''">
+      <select type="baseelement" name="%{elementbasename}">
+        <ref name="check_for_non_optional_attributes"/>
+        <set baseHasMandatoryAttr="%{ret}"/>
+      </select>
+    </if>
+
+	<set classname="org.odftoolkit.odfdom.pkg.%{prefix(elementqname)}.element.Odf%{identifier(elementname)}Element"/>
+    <ref name="get_baseclassname"/>
+    <file path="%{prefix(classname)}" name="Odf%{identifier(elementname)}Element" extensions="java">
+      <ref name="header"/>
+      <code>
+package %{prefix(classname)};
+
+</code>
+      <ref name="element-import-section"/>
+      
+      <!-- now set the imports for child elements and attributes -->
+     <set imports=""/>
+     <set import="" />  
+       <children type="element">
+            <if test = "currentname != elementname">
+               <if test="prefix(elementqname) != packagename and elementname !='hyperlink' and elementname !='measure' and elementqname !='presentation:event-listener' ">
+                  <set import="org.odftoolkit.odfdom.dom.element.%{prefix(elementqname)}.Odf%{identifier(elementname)}Element"/>
+               </if>
+           </if>
+           <if test="not contains(imports,import,';')">
+               <if test="import !=''">
+                <if test="imports =''">
+                   <set imports="import %{import}"/>
+                   <else>
+                      <set imports="%{imports};%{import}"/>
+                   </else>
+                </if>
+               </if>
+           </if>
+           <set import="" />
+           <subattribute>
+               <group>
+                  <set import="" />
+                  <if test = "valuetype != conversiontype and attributeqname !='style:num-format'">" >
+                       <if test=" valuetype = 'enum'">
+                             <if test="not endswith(conversiontype,'type')">
+                                      <set import="org.odftoolkit.odfdom.dom.type.%{prefix(conversiontype)}.Odf%{identifier(conversiontype)}Type"/>
+                                   <else>
+                                        <set import="org.odftoolkit.odfdom.dom.type.%{prefix(conversiontype)}.Odf%{identifier(conversiontype)}"/>
+                                   </else>
+                             </if>
+                       </if>
+                       <if test="local_name(valuetype) ='Duration' or local_name(valuetype) = 'XMLGregorianCalendar' ">
+                             <set import="%{valuetype}" />
+                       </if>
+                       <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='Type' or identifier(attributename)='Orientation' or identifier(attributename)='SortMode') ">
+                                <set import="org.odftoolkit.odfdom.dom.type.%{prefix(attributeqname)}.Odf%{identifier(conversiontype)}Type"/>
+                       </if>
+ 
+                       <else>
+                            <if test=" valuetype ='String' and identifier(attributename)='ValueType'">
+                                <set import="org.odftoolkit.odfdom.dom.type.%{prefix(attributeqname)}.Odf%{identifier(attributename)}"/>
+                            </if>
+                            <if test=" valuetype ='String' and identifier(attributename)='LegendExpansion'">
+                                <set import="org.odftoolkit.odfdom.dom.type.%{prefix(attributeqname)}.Odf%{identifier(attributename)}Type"/>
+                            </if>
+                            <if test="local_name(valuetype) ='OdfPresentationClasses'">
+                                <set import="%{valuetype}" />
+                            </if>
+                       </else>                       
+                  </if>
+                  <if test="not contains(imports,import,';')">
+                          <if test="import !=''">
+                            <if test="imports =''">
+                                <set imports="import %{import}"/>
+                            <else>
+                                 <set imports="%{imports};%{import}"/>
+                             </else>
+                             </if>
+                           </if>
+                   </if>
+               </group>
+           </subattribute>
+      </children>
+      <if test ="imports =''">
+           <set allimport=""/>
+         <else>
+           <set allimport="%{imports}"/>
+           <set allimport="%{replace(';',';\nimport ',allimport)}" />
+        </else>
+       </if><code>
+%{allimport};</code>
+      
+      <code>
+
+/**
+ * ODF DOM Element implementation for element {@odfLink %{elementqname}}.
+ *
+ */
+public abstract class %{local_name(classname)} extends %{local_name(baseclassname)}
+{        
+    public static final OdfName ELEMENT_NAME = OdfName.get( OdfNamespace.%{toupper(prefix(elementqname))}, "%{local_name(elementqname)}" );
+
+    public %{local_name(classname)}( OdfFileDom _aOwnerDoc )
+    {
+        super( _aOwnerDoc, ELEMENT_NAME</code>
+<if test="(elementstylefamily != '') and (elementstylefamily != 'draw:graphic,presentation:presentation')">
+<code>, OdfStyleFamily.%{identifier(elementstylefamily)}, OdfName.get( OdfNamespace.%{toupper(prefix(elementstylefamily))}, "style-name" )</code>
+</if>
+<code> );
+    }
+
+    public OdfName getOdfName()
+    {
+        return ELEMENT_NAME;
+    }
+
+</code>
+
+      <if test="elementbasename != 'styleproperties'">
+
+<!-- add init method if this element or the base element has mandatory attributes -->
+<if test="hasMandatoryAttr or baseHasMandatoryAttr">
+<code>    /**
+     * Initialize mandatory attributes.
+     */
+    public void init(</code>
+<set sep=""/>    
+<ref name="element_ctor_params"/>
+<if test="baseHasMandatoryAttr">
+  <select type="baseelement" name="%{elementbasename}">
+    <ref name="element_ctor_params"/>
+  </select>
+</if>
+<code>)
+    {
+</code>
+<ref name="element_ctor_init"/>    
+      <!-- if we have a base element, call its init function here -->
+      <if test="baseHasMandatoryAttr">
+          <select type="baseelement" name="%{elementbasename}">
+              <code>        super.init( </code>
+              <set sep=""/>
+                  <ref name="element_init_params"/>
+              <code> );
+</code>
+        </select>
+      </if>
+<code>    }
+</code>
+</if>      
+        <ref name="attributes"/>
+<else>
+            <foreach type="attribute">
+<code>    public final static OdfStyleProperty %{identifier(attributename)} = 
+        OdfStyleProperty.get(OdfStylePropertiesSet.%{identifier(local_name(elementqname))}, OdfName.get(OdfNamespace.%{toupper(prefix(attributeqname))}, "%{local_name(attributeqname)}"));
+</code>
+            </foreach>
+</else>
+</if>
+
+<!-- add create child elements method  -->
+      <set selements="" />
+      <children type="element">
+          <set hasparameters="false" />
+            <subattribute>
+              <set hasparameters="true" />
+              <if test="elementname='hyperlink'or elementname='measure' or elementqname ='presentation:event-listener'">
+                     <set childname="org.odftoolkit.odfdom.dom.element.%{prefix(elementqname)}.Odf%{identifier(elementname)}Element"/>
+            <code>
+    /**
+    * Create child element {@odfLink %{elementqname}}.
+    *</code>
+               <set parameters = ""/>
+               <set sep="" />
+               <group>
+                  <set hasparameters="true" />
+                  <if test="valuetype != conversiontype " >
+                       <if test="valuetype ='enum' and attributeqname != 'style:num-format'">
+                             <if test="not endswith(conversiontype,'type') ">
+                                    <set parameter="_a%{identifier(attributename)}     the attribute's type is Odf%{identifier(conversiontype)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                                 <else>
+                                   <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(conversiontype)}, see {@attributeName  %{conversiontype}} at specification"/>
+                                 </else>
+                             </if>
+                             <else>
+                               <if test="attributeqname ='style:num-format'">
+                                   <set parameter="_a%{identifier(attributename)}   the attribute's type is String"/>
+                                </if>                             
+                             </else>                      
+                       </if>
+                       <if test=" valuetype ='Integer' or valuetype ='Boolean' or valuetype='String'">
+                                <set parameter="_a%{identifier(attributename)}  the attribute's type is %{valuetype}"/>
+                       </if>
+                       <if test=" valuetype='javax.xml.datatype.Duration' or valuetype ='javax.xml.datatype.XMLGregorianCalendar' ">
+                                <set parameter="_a%{identifier(attributename)}    the attribute's type is %{local_name(valuetype)}"/>
+                       </if>
+                       <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='Display')">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(conversiontype)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                       </if>
+                        <if test=" valuetype ='String' and identifier(attributename)='LegendExpansion' ">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(attributename)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                        </if>
+                        <if test=" valuetype ='String' and attributename ='style:num-format' ">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is String"/>
+                        </if>
+                        <if test=" valuetype ='String' and (identifier(attributename)='Type' or identifier(attributename)='Orientation' or identifier(attributename)='SortMode')">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(conversiontype)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                        </if>
+                       <else>
+                            <set parameter="_a%{identifier(attributename)} %{local_name(valuetype)}   " />
+                            <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='MemberType') ">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(attributename)}, see {@attributeName  %{attributename}} at specification"/>
+                            </if>
+                             <if test=" valuetype ='String' and (identifier(attributename)='LegendExpansion' or identifier(attributename)='SortMode')">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(attributename)}Type, see {@attributeName  %{attributename}} at specification"/>
+                             </if>
+                             <if test=" valuetype ='String' and identifier(attributename)='Concave' ">
+                                  <set parameter="_a%{identifier(attributename)}   the attribute's type is Boolean"/>
+                             </if>
+                       </else>
+                  </if>
+                  <set parameters="%{parameters}%{sep}%{parameter}" /> 
+                  <set sep=";"/> 
+               </group>
+               <if test="parameters != ''" ><code>*@param %{replace(';','\n    *@param ',parameters)}</code></if>
+    <code>*@return   return  the element {@odfLink %{elementqname}}
+    */
+    public %{childname} create%{prefix(elementqname)}%{identifier(elementname)}Element(</code>
+                   <else>
+                     <set childname = "Odf%{identifier(elementname)}Element" />
+                                 <code>
+    /**
+    * Create child element {@odfLink %{elementqname}}.
+    *
+    </code>
+               <set parameters = ""/>
+               <set sep="" />
+               <group>
+                  <set hasparameters="true" />
+                  <if test="valuetype != conversiontype " >
+                       <if test="valuetype ='enum' and attributeqname != 'style:num-format'">
+                             <if test="not endswith(conversiontype,'type') ">
+                                    <set parameter="_a%{identifier(attributename)}     the attribute's type is Odf%{identifier(conversiontype)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                                 <else>
+                                   <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(conversiontype)}, see {@attributeName  %{conversiontype}} at specification"/>
+                                 </else>
+                             </if>
+                             <else>
+                               <if test="attributeqname ='style:num-format'">
+                                   <set parameter="_a%{identifier(attributename)}   the attribute's type is String"/>
+                                </if>                             
+                             </else>                      
+                       </if>
+                       <if test=" valuetype ='Integer' or valuetype ='Boolean' or valuetype='String'">
+                                <set parameter="_a%{identifier(attributename)}  the attribute's type is %{valuetype}"/>
+                       </if>
+                       <if test=" valuetype='javax.xml.datatype.Duration' or valuetype ='javax.xml.datatype.XMLGregorianCalendar' ">
+                                <set parameter="_a%{identifier(attributename)}    the attribute's type is %{local_name(valuetype)}"/>
+                       </if>
+                       <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='Display')">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(conversiontype)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                       </if>
+                        <if test=" valuetype ='String' and identifier(attributename)='LegendExpansion' ">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(attributename)}Type"/>
+                        </if>
+                        <if test=" valuetype ='String' and attributename ='style:num-format' ">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is String"/>
+                        </if>
+                        <if test=" valuetype ='String' and (identifier(attributename)='Type' or identifier(attributename)='Orientation' or identifier(attributename)='SortMode')">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(conversiontype)}Type, see {@attributeName  %{conversiontype}} at specification"/>
+                        </if>
+                       <else>
+                            <set parameter="_a%{identifier(attributename)} %{local_name(valuetype)}   " />
+                            <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='MemberType') ">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(attributename)}, see {@attributeName  %{attributename}} at specification"/>
+                            </if>
+                             <if test=" valuetype ='String' and (identifier(attributename)='LegendExpansion' or identifier(attributename)='SortMode')">
+                                <set parameter="_a%{identifier(attributename)}   the attribute's type is Odf%{identifier(attributename)}Type, see {@attributeName  %{attributename}} at specification"/>
+                             </if>
+                             <if test=" valuetype ='String' and identifier(attributename)='Concave' ">
+                                  <set parameter="_a%{identifier(attributename)}   the attribute's type is Boolean"/>
+                             </if>
+                       </else>
+                  </if>
+                  <set parameters="%{parameters}%{sep}%{parameter}" /> 
+                  <set sep=";"/> 
+               </group>
+               <if test="parameters != ''" ><code>*@param %{replace(';','\n    *@param ',parameters)}</code></if>
+    <code>*@return   return  the element {@odfLink %{elementqname}}
+    */
+    public %{childname} create%{identifier(elementname)}Element(</code>
+                   </else>
+              </if>
+               <set parameters = ""/>
+               <set sep="" />
+               <group>
+                  <set hasparameters="true" />
+                  <if test="valuetype != conversiontype " >
+                       <if test="valuetype ='enum' and attributeqname != 'style:num-format'">
+                             <if test="not endswith(conversiontype,'type') ">
+                                    <set parameter="Odf%{identifier(conversiontype)}Type   _a%{identifier(attributename)}"/>
+                                 <else>
+                                   <set parameter="Odf%{identifier(conversiontype)}   _a%{identifier(attributename)}"/>
+                                 </else>
+                             </if>
+                             <else>
+                               <if test="attributeqname ='style:num-format'">
+                                   <set parameter="String   _a%{identifier(attributename)}"/>
+                                </if>                             
+                             </else>                      
+                       </if>
+                       <if test=" valuetype ='Integer' or valuetype ='Boolean' or valuetype='String'">
+                                <set parameter="%{valuetype}   _a%{identifier(attributename)}"/>
+                       </if>
+                       <if test=" valuetype='javax.xml.datatype.Duration' or valuetype ='javax.xml.datatype.XMLGregorianCalendar' ">
+                                <set parameter="%{local_name(valuetype)}   _a%{identifier(attributename)}"/>
+                       </if>
+                       <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='Display')">
+                                <set parameter="Odf%{identifier(conversiontype)}Type   _a%{identifier(attributename)}"/>
+                       </if>
+                        <if test=" valuetype ='String' and identifier(attributename)='LegendExpansion' ">
+                                <set parameter="Odf%{identifier(attributename)}Type   _a%{identifier(attributename)}"/>
+                        </if>
+                        <if test=" valuetype ='String' and attributename ='style:num-format' ">
+                                <set parameter="String   _a%{identifier(attributename)}"/>
+                        </if>
+                        <if test=" valuetype ='String' and (identifier(attributename)='Type' or identifier(attributename)='Orientation' or identifier(attributename)='SortMode')">
+                                <set parameter="Odf%{identifier(conversiontype)}Type   _a%{identifier(attributename)}"/>
+                        </if>
+                       <else>
+                            <set parameter="%{local_name(valuetype)}   _a%{identifier(attributename)}" />
+                            <if test=" valuetype ='String' and (identifier(attributename)='ValueType' or identifier(attributename)='MemberType') ">
+                                <set parameter="Odf%{identifier(attributename)}   _a%{identifier(attributename)}"/>
+                            </if>
+                             <if test=" valuetype ='String' and (identifier(attributename)='LegendExpansion' or identifier(attributename)='SortMode')">
+                                <set parameter="Odf%{identifier(attributename)}Type   _a%{identifier(attributename)}"/>
+                             </if>
+                             <if test=" valuetype ='String' and identifier(attributename)='Concave' ">
+                                  <set parameter="Boolean   _a%{identifier(attributename)}"/>
+                             </if>
+                       </else>
+                  </if>
+                  <set parameters="%{parameters}%{sep}%{parameter}" /> 
+                  <set sep=", "/> 
+               </group>
+               <code>%{parameters})
+    {
+        %{childname}  _n%{identifier(elementname)} = ((OdfFileDom)this.ownerDocument).createOdfElement(%{childname}.class);</code>
+            <group>
+            <ref name="convertenumvaluetype"/>
+            <if test="elementbasename = 'styleproperties' or attributeqname ='chart:class'" >
+               <else><code>
+        _n%{identifier(elementname)}.set%{identifier(attributename)}( _a%{identifier(attributename)});</code>
+               </else>
+            </if>
+            </group><code>
+        this.appendChild( _n%{identifier(elementname)});
+        return  _n%{identifier(elementname)};      
+    }
+    </code>
+            </subattribute>
+            <if test="hasparameters='false'" >
+                 <set selement="%{elementqname}"/>
+                 <if test="not contains(selements,selement,';')">
+  
+                   <if test="elementname='hyperlink'or elementname='measure' or elementqname ='presentation:event-listener'">
+                         <set childname="org.odftoolkit.odfdom.dom.element.%{prefix(elementqname)}.Odf%{identifier(elementname)}Element"/>
+                     <else>
+                         <set childname = "Odf%{identifier(elementname)}Element" />
+                     </else>
+                   </if>
+                
+               <code>
+    /**
+    * Create child element {@odfLink %{elementqname}}.
+    *
+    *@return   return  the element {@odfLink %{elementqname}}
+    */
+    public %{childname} create%{identifier(elementname)}Element()
+    {
+        %{childname}  _n%{identifier(elementname)} = ((OdfFileDom)this.ownerDocument).createOdfElement(%{childname}.class);
+        this.appendChild( _n%{identifier(elementname)});
+        return  _n%{identifier(elementname)};
+    }                   
+               </code>
+                                  <set selements="%{selements};%{selement}" />
+
+                </if>
+            </if>
+      </children>
+      <code>
+}
+</code>
+    </file>
+  </foreach>  
+</define>
+
+<!-- generate OdfNamespace java file -->
+<define name="gen_OdfNamespace">
+<set classname="org.odftoolkit.odfdom.pkg.manifest.OdfNamespace"/>
+  <file path="%{prefix(classname)}" name="%{local_name(classname)}" extensions="java">
+      <ref name="header"/>
+<code>
+package %{prefix(classname)};
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import javax.xml.namespace.NamespaceContext;
+import org.odftoolkit.odfdom.dom.OdfName;
+
+/**
+ * class keeping some constants for OpenDocument namespaces
+ */
+public class %{local_name(classname)} implements Comparable, NamespaceContext {
+
+    private static Map&lt;String, String&gt; namesspacesByPrefix;
+    private static Map&lt;String, String&gt; namesspacesByUri;
+
+    static private enum OOoNamespace {
+</code>
+    <foreach type="namespace" seperator=","><code>
+        %{toupper(namespaceprefix)}("%{namespaceprefix}", "%{namespaceuri}")</code>  
+    </foreach>
+	<code>;
+    </code>
+<code>
+        private String mPrefix;
+        private String mNamespaceUri;
+
+        OOoNamespace(String prefix, String namespaceUri) {
+            mPrefix = prefix;
+            mNamespaceUri = namespaceUri;
+        }
+    }
+
+    static {
+        namesspacesByPrefix = new HashMap&lt;String, String&gt;();
+        namesspacesByUri = new HashMap&lt;String, String&gt;();
+        for (OOoNamespace ns : OOoNamespace.values()) {
+            namesspacesByPrefix.put(ns.mPrefix, ns.mNamespaceUri);
+            namesspacesByUri.put(ns.mNamespaceUri, ns.mPrefix);
+        }
+    }
+    private String m_uri;
+    private String m_prefix;
+
+    public %{local_name(classname)}(){}
+    
+    private %{local_name(classname)}(String uri) {
+        this(null, uri);
+    }
+
+    private %{local_name(classname)}(String prefix, String uri) {
+        if (uri != null &amp;&amp; uri.length() > 0) {
+            m_uri = uri;
+        }
+        if (prefix != null &amp;&amp; prefix.length() > 0) {
+            m_prefix = prefix;
+        }
+    }
+
+    public OdfName getOdfName(String name) {
+        int i = name.indexOf(':');
+        if (i >= 0) {
+            return OdfName.get(this, name.substring(i + 1));
+        } else {
+            return OdfName.get(this, name);
+        }
+    }
+    private static SortedSet m_namespaces = new TreeSet();
+
+    public static OdfNamespace get(String uri) {
+        OdfNamespace newns = new OdfNamespace(uri);
+        SortedSet tail = m_namespaces.tailSet(newns);
+        if (tail.size() > 0) {
+            OdfNamespace result = (OdfNamespace) tail.first();
+            if (result.equals(uri)) {
+                return result;
+            }
+        }
+        // no namespace found, create a new one        
+        m_namespaces.add(newns);
+        return newns;
+    }
+
+    public static OdfNamespace get(String prefix, String uri) {
+        OdfNamespace newns = new OdfNamespace(prefix, uri);
+        SortedSet tail = m_namespaces.tailSet(newns);
+        for (Object obj : tail) {
+            OdfNamespace result = (OdfNamespace) obj;
+            if (tail.first().equals(uri)) {
+                if (result.getPrefix().equals(prefix)) {
+                    return result;
+                } else {
+                    // try to find a matching prefix as long as the uri matches
+                    continue;
+                }
+            } else {
+                // uri doesn't match any longer. stop searching
+                break;
+            }
+        }
+        // no namespace found, create a new one        
+        m_namespaces.add(newns);
+        return newns;
+
+    }
+
+    public boolean hasPrefix() {
+        return m_prefix != null;
+    }
+
+    public String getPrefix() {
+        return m_prefix;
+    }
+
+    public String getUri() {
+        return m_uri;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (m_uri != null) {
+            return m_uri.equals(obj.toString());
+        } else {
+            return m_uri == obj;
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        if (m_uri != null) {
+            return m_uri.hashCode();
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    public String toString() {
+        return m_uri;
+    }
+
+    public static String[] splitQName(String qname) {
+        String localpart = qname;
+        String prefix = null;
+        int colon = qname.indexOf(':');
+        if (colon > 0) {
+            localpart = qname.substring(colon + 1);
+            prefix = qname.substring(0, colon);
+        }
+        return new String[]{prefix, localpart};
+    }
+
+    public static String getPrefixPart(String qname) {
+        return splitQName(qname)[0];
+    }
+
+    public static String getLocalPart(String qname) {
+        return splitQName(qname)[1];
+    }
+
+    public int compareTo(Object o) {
+        return toString().compareTo(o.toString());
+    }
+    
+    // 2DO: use only constants from Enumeration
+    // 2DO: move Namespaceconstants into OdfName.. (?)
+</code>
+    <foreach type="namespace">
+<code>    public static final OdfNamespace %{toupper(namespaceprefix)} = get("%{namespaceprefix}", "%{namespaceuri}");
+</code>
+    </foreach>
+<code>
+    public String getNamespaceURI(String prefix) {
+        return namesspacesByPrefix.get(prefix);
+    }
+
+    public static String getNamespaceURIByPrefix(String prefix) {
+        return namesspacesByPrefix.get(prefix);
+    }
+    
+    public String getPrefix(String namespaceUri) {
+        return namesspacesByUri.get(namespaceUri);
+    }
+
+    public Iterator getPrefixes(String namespaceuri) {
+        return namesspacesByPrefix.keySet().iterator();
+    }
+}
+</code>
+</file>
+</define>
+
+<!-- generate doc element java classes ===================================== -->
+<define name="gen_manifest_pkg_elements">
+	<foreach type="element">
+		<set classname="org.odftoolkit.odfdom.pkg.%{prefix(elementqname)}.%{identifier(elementname)}"/>
+		<set baseclassname="org.odftoolkit.odfdom.pkg.%{prefix(elementqname)}.element.Odf%{identifier(elementname)}Element"/>
+		<file path="org/odftoolkit/odfdom/pkg/%{prefix(elementqname)}" name="%{identifier(elementname)}" extensions="java">
+			<ref name="docheader"/>
+			<code>
+package %{prefix(classname)};
+
+import org.odftoolkit.odfdom.doc.OdfFileDom;
+import %{baseclassname};
+
+/**
+ *
+ */
+public class %{local_name(classname)} extends %{local_name(baseclassname)}
+{
+    public %{local_name(classname)}( OdfFileDom _aOwnerDoc )
+    {
+        super( _aOwnerDoc );
+    }
+}
+</code>
+</file>
+</foreach>
+</define>
+
+<!-- create org.odftoolkit.odfdom.doc.element.OdfElementFactory.java ========== -->
+<define name="gen_OdfElementFactory">
+<file path="org/odftoolkit/odfdom/pkg/manifest" name="OdfElementFactory" extensions="java">
+<ref name="header"/>
+<code>
+package org.odftoolkit.odfdom.pkg.manifest;
+
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.Map;
+import org.odftoolkit.odfdom.doc.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfElement;
+import org.odftoolkit.odfdom.dom.OdfName;
+import org.w3c.dom.DOMException;
+import org.odftoolkit.odfdom.doc.element.OdfDefault;
+
+public class OdfElementFactory {
+
+    private static Map&lt;OdfName, Class&gt; m_elementTypes;
+
+    static {
+        populateElementTypes();
+    }
+
+    private synchronized static void populateElementTypes() {
+        if (m_elementTypes != null) {
+            return;
+        }
+        m_elementTypes = new HashMap&lt;OdfName, Class&gt;();
+</code>
+<foreach type="element">
+<set classname="org.odftoolkit.odfdom.pkg.%{prefix(elementqname)}.%{identifier(elementname)}"/>
+<!-- we must use the full qualified class name here as we have equal element names in different namespaces! -->
+<code>        m_elementTypes.put(%{classname}.ELEMENT_NAME, %{classname}.class);
+</code>
+</foreach>
+<code>    }
+    
+    public static void mapOdfNameToClass(OdfName odfName, Class className){
+        m_elementTypes.put(odfName, className);
+    }
+
+    public static OdfElement createOdfElement(OdfFileDom ownerDocument, OdfName name) throws DOMException {
+        OdfElement e = null;
+
+        // lookup registered class for qname
+        Class elementClass = m_elementTypes.get(name);
+
+        // if a class was registered create an instance of that class
+        if (elementClass != null) {
+            try {
+                Constructor ctor = elementClass.getConstructor(new Class[]{OdfFileDom.class});
+                e = (OdfElement) ctor.newInstance(new Object[]{ownerDocument});
+                return e;
+            } catch (Exception cause) {
+                // an exception at this point is a bug. Throw an Error
+                throw new Error("OdfDOM error in element factory", cause);
+            }
+        }
+
+        // otherwise create the default class for odf
+        return (OdfElement) new OdfDefault(ownerDocument, name);
+    }
+}
+</code>    
+</file>
+</define>
+</template>
diff --git a/trunk/odfdom/src/codegen/resources/pkg/template/copyright.txt b/trunk/odfdom/src/codegen/resources/pkg/template/copyright.txt
new file mode 100644
index 0000000..b4a06cd
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/template/copyright.txt
@@ -0,0 +1,24 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

diff --git a/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-dsig-attribute-template.vm b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-dsig-attribute-template.vm
new file mode 100644
index 0000000..60fce5b
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-dsig-attribute-template.vm
@@ -0,0 +1,379 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the list of signature artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined

+## Template to create the list of artefacts which are to be generated

+#set($attribute = $signaturemodel.getAttribute($context))

+#set($NS = "urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0")

+#set ($PREFIX = "dsig")

+#set($localname = ${signaturemodel.extractLocalname($attribute)})

+#set($classname = "${signaturemodel.camelCase($attribute)}Attribute")

+#set ($valueobject = "String")

+##

+#set($datatypes = ${attribute.getDatatypes().withoutMultiples()})

+#if ($datatypes.size() > 0)

+#set ($hasdatatype = true)

+#else

+#set ($hasdatatype = false)

+#end

+##

+##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken

+#set($values = ${attribute.getValues().withoutMultiples()})

+#if ($values.size() > 0)

+#if ($values.size() ==2 && $hasdatatype == false)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueobject = "Boolean")

+#end

+#end

+#set ($enum = true)

+#if ($valueobject == "Boolean")

+#set ($enum = false)

+#end

+#else

+#set ($enum = false)

+#end

+##

+## Check whether the attribute has default value.

+##

+#set ($hasDefaultValue = false)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if (${odfmodel.getDefaultAttributeValue($attribute, $parent)})

+#set ($hasDefaultValue = true)

+#end

+#end

+##

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($hasDefaultValue and $defaultValueSet.size() == 1)

+#foreach ($value in $defaultValueSet)

+#set ($uniqueDefaultValue = $value)

+#end

+#end

+##

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+#if ($hasDefaultValue)

+import org.odftoolkit.odfdom.pkg.OdfElement;

+#end

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * DOM implementation of OpenDocument attribute  {@odf.attribute ${PREFIX}:${attribute.getQName()}}.

+ *

+ */

+public class $classname extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("${NS}", "${PREFIX}:${attribute}");

+#if ($hasDefaultValue)

+#if ($defaultValueSet.size()>1)

+#foreach ($defaultValue in $defaultValueSet)

+#set ($constant = $signaturemodel.constantCase($defaultValue))

+#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false)

+	public static final String DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)}= "$defaultValue";

+#else

+	public static final String DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)}=	Value.${signaturemodel.escapeKeyword($constant)}.toString();

+#end

+#end

+#else

+#if ($uniqueDefaultValue=="&#34;")

+	public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}";

+#else

+	public static final String DEFAULT_VALUE = "$uniqueDefaultValue";

+#end

+#end

+#end

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute ${PREFIX}:${attribute}}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute ${PREFIX}:${attribute}}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+##

+#if ($enum)

+

+	/**

+	 * The value set of {@odf.attribute ${PREFIX}:${attribute}}.

+	 */

+	public enum Value {

+#set ($separator="		")

+#foreach($value in $values)

+#if (${value.toString().length()} == 1)

+#set ($constant = $value)

+#else

+#set ($constant = $signaturemodel.constantCase($value))

+#end${separator}${signaturemodel.escapeKeyword($constant)}("${signaturemodel.escapeLiteral($value)}")#set ($separator=", ")

+#end ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+#end

+##

+## Handle Non-String-Attributes

+#set ($valuetypes = ${javamodel.getValuetypes($datatypes)})

+#if ($valueobject != "Boolean")

+#foreach ($valuetype in $valuetypes)

+#set ($valueobject = $valuetype)

+#end

+#end

+#if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean")

+#set ($valueobject = "String")

+#end

+#if ($valueobject != "String")

+#set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)})

+##

+

+	/**

+	 * @param value The <code>${simplevalue}</code> value of the attribute.

+	 */

+	public void set${signaturemodel.camelCase($simplevalue)}Value(${simplevalue} value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>${simplevalue}</code> value of the attribute

+	 */

+	public ${simplevalue} ${simplevalue}Value() {

+		String val = super.getValue();

+		try {

+			return ${valueobject}.parse${signaturemodel.camelCase($simplevalue)}(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+#end

+##

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+#else

+## enum and no datatype

+		try {

+			super.setValue(Value.enumValueOf(attrValue).toString());

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException(e);

+		}

+#end

+#else

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+#end

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+#else

+## enum and no datatype

+		try {

+			return Value.enumValueOf(super.getValue()).toString();

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException("the value of ${PREFIX}:${attribute} is not valid");

+		}

+#end

+#else

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of ${PREFIX}:${attribute} is not valid");

+		}

+#end

+	}

+

+#if ($hasDefaultValue)

+	/**

+	 * Returns the default value of {@odf.attribute ${PREFIX}:${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		OdfElement parentElement = (OdfElement)getOwnerElement();

+		String defaultValue = null;

+		if (parentElement != null) {

+#if ($defaultValueSet.size()>1)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))

+			if (parentElement instanceof ${signaturemodel.camelCase($parent)}Element) {

+				defaultValue = "${signaturemodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}";

+			}

+#end

+#end

+#else

+			defaultValue = "${signaturemodel.escapeLiteral($uniqueDefaultValue)}";

+#end

+		}

+		return defaultValue;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute ${PREFIX}:${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return getOwnerElement() == null ? false : true;

+	}

+#else

+	/**

+	 * Returns the default value of {@odf.attribute ${PREFIX}:${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute ${PREFIX}:${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+#end

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+#if ($hasdatatype and $datatypes.size() > 0)

+#set ($datatype="")

+#foreach($value in $datatypes)

+#set ($datatype=$value)

+#end

+#if ($datatype == "ID")

+		return true;

+#else

+		return false;

+#end

+#else

+		return false;

+#end

+	}

+}

diff --git a/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-dsig-element-template.vm b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-dsig-element-template.vm
new file mode 100644
index 0000000..a7d2f38
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-dsig-element-template.vm
@@ -0,0 +1,370 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the Java class representing an ODF signature element

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+#set ($element = ${signaturemodel.getElement($context)})

+#if ($element == "Signature")

+	#set ($NS = "http://www.w3.org/2000/09/xmldsig#")

+	#set ($PREFIX = "ds")

+#else

+	#set ($NS = "urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0")

+	#set ($PREFIX = "dsig")

+#end

+###set ($NS = "${element.getNamespace()}")

+#set ($classname = "${model.camelCase($element)}Element")

+##

+## Set child element and child attributes

+#set ($children = ${element.getChildElements().withoutMultiples()})

+#set ($attributes = ${element.getAttributes().withoutMultiples()})

+##

+## Set base class OdfElement

+#set ($baseclassname = "OdfElement")

+#set ($baseHasMandatoryAttr = false)

+##

+## ...or configured base class

+#if (${javamodel.getBaseclassOf($element)})

+#set ($base = ${javamodel.getBaseclassOf($element)})

+#end

+## Configured manually generated base class?

+#if ($base == "container")

+#set ($_specialbase = true)

+#set ($baseclassname = "OdfContainerElementBase")

+#set ($baseimport = "org.odftoolkit.odfdom.pkg.$baseclassname")

+#set ($baseHasMandatoryAttr = false)

+#end

+##

+## Test if this element has mandatory (non optional) attributes

+#set ($hasMandatoryAttr = false)

+#foreach ($attribute in $attributes)

+#if (${element.isMandatory($attribute)})

+#set ($hasMandatoryAttr = true)

+#set ($mandatoryAttr = $attribute)

+#end

+#end

+##

+## Begin Code

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+##

+## ---------------------------------------------------

+##  Imports

+## ---------------------------------------------------

+##

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+##

+## If there is a base class which is not in the current package

+#if ($baseimport)

+import ${baseimport};

+#end

+

+##

+## ---------------------------------------------------

+##  Class

+## ---------------------------------------------------

+##

+/**

+ * DOM implementation of OpenDocument element  {@odf.element ${PREFIX}:${context}}.

+ *

+#if ($anychild)

+ * This class can have any org.w3c.dom.Element child element.

+#end

+#if ($anyattribute)

+ * This class can have any org.w3c.dom.Attribute attribute.

+#end

+ */

+public class $classname extends $baseclassname {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("${NS}", "${PREFIX}:${element}");

+

+	/**

+	 * Create the instance of <code>$classname</code>

+	 *

+	 * @param  ownerDoc The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return <code>OdfName</code> the name of element {@odf.element ${PREFIX}:${context}}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+##

+## ---------------------------------------------------

+##  Add init method if this element or the base

+##  element has mandatory attributes

+##  TODO: NO caller use this method.

+## ---------------------------------------------------

+##

+## ---------------------------------------------------

+##  Attribute getters and setters

+## ---------------------------------------------------

+##

+#foreach ($attr in $attributes)

+#set($attri = ${signaturemodel.getAttribute($attr.getQName())})

+#set ($valueObject = "String")

+#set ($simpleValue = "")

+#set ($dataTypes = ${attri.getDatatypes().withoutMultiples()})

+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})

+#foreach ($valueType in $valueTypes)

+#set ($valueObject = $valueType)

+#end

+## use attri get all of the values.

+#set($values = ${attri.getValues().withoutMultiples()})

+#if ($values.size() ==2 && $dataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueObject = "Boolean")

+#end

+#end

+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")

+#set ($valueObject = "String")

+#end

+#if ($valueObject != "String")

+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})

+#end

+#if ($attr != "*")

+#set ($attribute = ${attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${signaturemodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${signaturemodel.javaCase($attribute)}Value")

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${PREFIX}:${attribute.getQName()}}

+	 *

+#if (${element.isMandatory($attribute)})

+	 * Attribute is mandatory.

+	 *

+#end

+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public $valueObject get${aClassname}() {

+		$aClassname attr = ($aClassname) getOdfAttribute(${aClassname}.ATTRIBUTE_NAME);

+		if (attr != null) {

+#if ($simpleValue!="")

+			return ${valueObject}.valueOf(attr.${simpleValue}Value());

+#else

+			return ${valueObject}.valueOf(attr.getValue());

+#end

+		}

+#if ($odfmodel.getDefaultAttributeValue($attribute, $element))

+#set ($defaultValue = ${signaturemodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))})

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($defaultValueSet.size()>1)

+#set ($constant = $signaturemodel.constantCase($defaultValue))

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)};

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${signaturemodel.escapeKeyword($constant)});

+#end

+#else

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE;

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);

+#end

+#end

+#else

+		return null;

+#end

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute ${PREFIX}:${attribute.getQName()}}

+	 *

+	 * @param $aParam   The type is <code>$valueObject</code>

+	 */

+	public void set${aClassname}($valueObject $aParam) {

+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+#if ($valueObject == "String")

+		attr.setValue($aParam);

+#else

+		attr.set${signaturemodel.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());

+#end

+	}

+#end

+#end

+

+##

+## ---------------------------------------------------

+##  Methods for child element creation

+## ---------------------------------------------------

+##

+#foreach($ch in $children)

+#if ($ch != "*")

+#set ($child = ${ch.withMultiples()})

+#set ($cClassname = "${signaturemodel.camelCase($child)}Element")

+#set ($cVar = ${signaturemodel.javaCase($child)})

+#set ($ch_attributes = ${child.getAttributes().withoutMultiples()})

+##set has parameter flag

+#set ($hasParams = false)

+#foreach ($ch_attribute in $ch_attributes)

+#if (${child.isMandatory($ch_attribute)})

+#set ($hasParams = true)

+#end

+#end

+#if ($hasParams)

+	/**

+	 * Create child element {@odf.element ds:${child}}.

+	 *

+#set ($seperateFlag="")

+#set ($params="")

+#foreach ($ch_attr in $ch_attributes)

+#if (${child.isMandatory($ch_attr)})

+#set($ch_attri = ${signaturemodel.getAttribute($ch_attr.getQName())})

+#set ($ch_ValueObject = "String")

+#set ($ch_SimpleValue = "")

+#set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()})

+#set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)})

+#foreach ($ch_ValueType in $ch_ValueTypes)

+#set ($ch_ValueObject = $ch_ValueType)

+#end

+## use ch_attri get all of the values.

+#set($ch_Values = ${ch_attri.getValues().withoutMultiples()})

+#if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($ch_Value in $ch_Values)

+#if ($ch_Value==true)

+#set ($trueFlag = true)

+#end

+#if ($ch_Value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($ch_Hasdatatype = true)

+#set ($ch_ValueObject = "Boolean")

+#end

+#end

+#if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean")

+#set ($ch_ValueObject = "String")

+#end

+#if ($ch_ValueObject != "String")

+#set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)})

+#end

+#if ($ch_attr != "*")

+#set ($attribute = ${ch_attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${signaturemodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${signaturemodel.javaCase($attribute)}Value")

+	 * @param $aParam  the <code>$ch_ValueObject</code> value of <code>$aClassname</code>, see {@odf.attribute ${PREFIX}:${attribute.getQName()}} at specification

+#if ($ch_SimpleValue!="")

+#set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}")

+#else

+#set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}")

+#end

+#set ($seperateFlag=", ")

+#end

+#end

+#end

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element ds:${child}}

+	 */

+	 public $cClassname new${cClassname}($params) {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+#foreach ($ch_attr in $ch_attributes)

+#if ($ch_attr != "*" && ${child.isMandatory($ch_attr)})

+#set ($aClassname = "${signaturemodel.camelCase($ch_attr)}Attribute")

+#set ($aParam = "${signaturemodel.javaCase($ch_attr)}Value")

+		${cVar}.set$aClassname($aParam);

+#end

+#end

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#else

+	/**

+	 * Create child element {@odf.element ds:${child}}.

+	 *

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element ds:${child}}

+	 */

+	public $cClassname new${cClassname}() {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#end

+#end

+#end

+##

+## -----------------------------------------------------

+##  New: newTextNode

+## -----------------------------------------------------

+##

+#if ($element.canHaveText())

+	/**

+	 * Add text content. Only elements which are allowed to have text content offer this method.

+	 */

+	 public void newTextNode(String content) {

+		if (content != null && !content.equals("")) {

+			this.appendChild(this.getOwnerDocument().createTextNode(content));

+		}

+	 }

+#end

+}

diff --git a/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-manifest-attribute-template.vm b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-manifest-attribute-template.vm
new file mode 100644
index 0000000..60189d9
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-manifest-attribute-template.vm
@@ -0,0 +1,385 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the list of manifest artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined

+#set($attribute = $manifestmodel.getAttribute($context))

+#set ($NS = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0")

+#set($NS = ${attribute.getNamespace()})

+#set($localname = ${manifestmodel.extractLocalname($attribute)})

+#set($classname = "${manifestmodel.camelCase($attribute)}Attribute")

+#set ($valueobject = "String")

+##

+#set($datatypes = ${attribute.getDatatypes().withoutMultiples()})

+#if ($datatypes.size() > 0)

+#set ($hasdatatype = true)

+#else

+#set ($hasdatatype = false)

+#end

+##

+##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken

+#set($values = ${attribute.getValues().withoutMultiples()})

+#if ($values.size() > 0)

+#if ($values.size() ==2 && $hasdatatype == false)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueobject = "Boolean")

+#end

+#end

+#set ($enum = true)

+#if ($valueobject == "Boolean")

+#set ($enum = false)

+#end

+#else

+#set ($enum = false)

+#end

+##

+## Check whether the attribute has default value.

+##

+#set ($hasDefaultValue = false)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if (${odfmodel.getDefaultAttributeValue($attribute, $parent)})

+#set ($hasDefaultValue = true)

+#end

+#end

+##

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($hasDefaultValue and $defaultValueSet.size() == 1)

+#foreach ($value in $defaultValueSet)

+#set ($uniqueDefaultValue = $value)

+#end

+#end

+##

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+#if ($hasDefaultValue)

+import org.odftoolkit.odfdom.pkg.OdfElement;

+#end

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+#if ($hasDefaultValue and $defaultValueSet.size()>1)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))

+import org.odftoolkit.odfdom.pkg.${parent.getNamespace()}.${manifestmodel.camelCase($parent)}Element;

+#end

+#end

+#end

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:${attribute.getQName()}}.

+ *

+ */

+public class $classname extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("${NS}", "manifest:${attribute}");

+#if ($hasDefaultValue)

+#if ($defaultValueSet.size()>1)

+#foreach ($defaultValue in $defaultValueSet)

+#set ($constant = $manifestmodel.constantCase($defaultValue))

+#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false)

+	public static final String DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}= "$defaultValue";

+#else

+	public static final String DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}=	Value.${manifestmodel.escapeKeyword($constant)}.toString();

+#end

+#end

+#else

+#if ($uniqueDefaultValue=="&#34;")

+	public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}";

+#else

+	public static final String DEFAULT_VALUE = "$uniqueDefaultValue";

+#end

+#end

+#end

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:${attribute}}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:${attribute}}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+##

+#if ($enum)

+

+	/**

+	 * The value set of {@odf.attribute manifest:${attribute}}.

+	 */

+	public enum Value {

+#set ($separator="		")

+#foreach($value in $values)

+#if (${value.toString().length()} == 1)

+#set ($constant = $value)

+#else

+#set ($constant = $manifestmodel.constantCase($value))

+#end${separator}${manifestmodel.escapeKeyword($constant)}("${manifestmodel.escapeLiteral($value)}")#set ($separator=", ")

+#end ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+#end

+##

+## Handle Non-String-Attributes

+#set ($valuetypes = ${javamodel.getValuetypes($datatypes)})

+#if ($valueobject != "Boolean")

+#foreach ($valuetype in $valuetypes)

+#set ($valueobject = $valuetype)

+#end

+#end

+#if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean")

+#set ($valueobject = "String")

+#end

+#if ($valueobject != "String")

+#set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)})

+##

+

+	/**

+	 * @param value The <code>${simplevalue}</code> value of the attribute.

+	 */

+	public void set${manifestmodel.camelCase($simplevalue)}Value(${simplevalue} value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>${simplevalue}</code> value of the attribute

+	 */

+	public ${simplevalue} ${simplevalue}Value() {

+		String val = super.getValue();

+		try {

+			return ${valueobject}.parse${manifestmodel.camelCase($simplevalue)}(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+#end

+##

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+#else

+## enum and no datatype

+		try {

+			super.setValue(Value.enumValueOf(attrValue).toString());

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException(e);

+		}

+#end

+#else

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+#end

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+#if ($enum)

+#if ($hasdatatype)

+## enum and datatype

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+#else

+## enum and no datatype

+		try {

+			return Value.enumValueOf(super.getValue()).toString();

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException("the value of ${attribute} is not valid");

+		}

+#end

+#else

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of ${attribute} is not valid");

+		}

+#end

+	}

+

+#if ($hasDefaultValue)

+	/**

+	 * Returns the default value of {@odf.attribute manifest:${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		OdfElement parentElement = (OdfElement)getOwnerElement();

+		String defaultValue = null;

+		if (parentElement != null) {

+#if ($defaultValueSet.size()>1)

+#foreach ($parent in ${attribute.getParents().withoutMultiples()})

+#if ($odfmodel.getDefaultAttributeValue($attribute, $parent))

+			if (parentElement instanceof ${manifestmodel.camelCase($parent)}Element) {

+				defaultValue = "${manifestmodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}";

+			}

+#end

+#end

+#else

+			defaultValue = "${manifestmodel.escapeLiteral($uniqueDefaultValue)}";

+#end

+		}

+		return defaultValue;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return getOwnerElement() == null ? false : true;

+	}

+#else

+	/**

+	 * Returns the default value of {@odf.attribute manifest:${attribute}}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:${attribute}} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+#end

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+#if ($hasdatatype and $datatypes.size() > 0)

+#set ($datatype="")

+#foreach($value in $datatypes)

+#set ($datatype=$value)

+#end

+#if ($datatype == "ID")

+		return true;

+#else

+		return false;

+#end

+#else

+		return false;

+#end

+	}

+}

diff --git a/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-manifest-element-template.vm b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-manifest-element-template.vm
new file mode 100644
index 0000000..668194c
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/template/odfdom-manifest-element-template.vm
@@ -0,0 +1,344 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+## Template to create the Java class representing an ODF manifest element

+##

+## Documentation of template development can be found in local file

+## TemplateHelp.html.

+##

+#set ($element = ${manifestmodel.getElement($context)})

+#set ($oldelement = ${oldmodel.getElement($context)})

+###set ($NS = ${element.getNamespace()})

+#set ($classname = "${manifestmodel.camelCase($element)}Element")

+##

+## Set child element and child attributes

+#set ($children = ${element.getChildElements().withoutMultiples()})

+#set ($attributes = ${element.getAttributes().withoutMultiples()})

+##

+#set ($baseclassname = "OdfElement")

+#set ($baseHasMandatoryAttr = false)

+##

+## Test if this element has mandatory (non optional) attributes

+#set ($hasMandatoryAttr = false)

+#foreach ($attribute in $attributes)

+#if (${element.isMandatory($attribute)})

+#set ($hasMandatoryAttr = true)

+#set ($mandatoryAttr = $attribute)

+#end

+#end

+##

+## Begin Code

+#include('copyright.txt')

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+##

+## ---------------------------------------------------

+##  Imports

+## ---------------------------------------------------

+##

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+##

+## ---------------------------------------------------

+##  Class

+## ---------------------------------------------------

+##

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:${context}}.

+ *

+#if ($anychild)

+ * This class can have any org.w3c.dom.Element child element.

+#end

+#if ($anyattribute)

+ * This class can have any org.w3c.dom.Attribute attribute.

+#end

+ */

+public class $classname extends $baseclassname {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:${element}");

+

+	/**

+	 * Create the instance of <code>$classname</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public $classname(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:${context}}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+##

+## ---------------------------------------------------

+##  Add init method if this element or the base

+##  element has mandatory attributes

+##  TODO: NO caller use this method.

+## ---------------------------------------------------

+##

+## ---------------------------------------------------

+##  Attribute getters and setters

+## ---------------------------------------------------

+##

+#foreach ($attr in $attributes)

+#set($attri = ${manifestmodel.getAttribute($attr.getQName())})

+#set ($valueObject = "String")

+#set ($simpleValue = "")

+#set ($dataTypes = ${attri.getDatatypes().withoutMultiples()})

+#set ($valueTypes = ${javamodel.getValuetypes($dataTypes)})

+#foreach ($valueType in $valueTypes)

+#set ($valueObject = $valueType)

+#end

+## use attri get all of the values.

+#set($values = ${attri.getValues().withoutMultiples()})

+#if ($values.size() ==2 && $dataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($value in $values)

+#if ($value==true)

+#set ($trueFlag = true)

+#end

+#if ($value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($hasdatatype = true)

+#set ($valueObject = "Boolean")

+#end

+#end

+#if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean")

+#set ($valueObject = "String")

+#end

+#if ($valueObject != "String")

+#set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)})

+#end

+#if ($attr != "*")

+#set ($attribute = ${attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${manifestmodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${manifestmodel.javaCase($attribute)}Value")

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute manifest:${attribute.getQName()}}

+	 *

+#if (${element.isMandatory($attribute)})

+	 * Attribute is mandatory.

+	 *

+#end

+	 * @return - the <code>$valueObject</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public $valueObject get${aClassname}() {

+		$aClassname attr = ($aClassname) getOdfAttribute(${aClassname}.ATTRIBUTE_NAME);

+		if (attr != null) {

+#if ($simpleValue!="")

+			return ${valueObject}.valueOf(attr.${simpleValue}Value());

+#else

+			return ${valueObject}.valueOf(attr.getValue());

+#end

+		}

+#if ($odfmodel.getDefaultAttributeValue($attribute, $element))

+#set ($defaultValue = ${manifestmodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))})

+#set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute))

+#if ($defaultValueSet.size()>1)

+#set ($constant = $manifestmodel.constantCase($defaultValue))

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)};

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)});

+#end

+#else

+#if ($valueObject == "String")

+		return ${aClassname}.DEFAULT_VALUE;

+#else

+		return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE);

+#end

+#end

+#else

+		return null;

+#end

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>$aClassname</code> , See {@odf.attribute manifest:${attribute.getQName()}}

+	 *

+	 * @param $aParam   The type is <code>$valueObject</code>

+	 */

+	public void set${aClassname}($valueObject $aParam) {

+		$aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+#if ($valueObject == "String")

+		attr.setValue($aParam);

+#else

+		attr.set${manifestmodel.camelCase($simpleValue)}Value($aParam.${simpleValue}Value());

+#end

+	}

+#end

+#end

+

+##

+## ---------------------------------------------------

+##  Methods for child element creation

+## ---------------------------------------------------

+##

+#foreach($ch in $children)

+#if ($ch != "*")

+#set ($child = ${ch.withMultiples()})

+#set ($cClassname = "${manifestmodel.camelCase($child)}Element")

+#set ($cVar = ${manifestmodel.javaCase($child)})

+#set ($ch_attributes = ${child.getAttributes().withoutMultiples()})

+##set has parameter flag

+#set ($hasParams = false)

+#foreach ($ch_attribute in $ch_attributes)

+#if (${child.isMandatory($ch_attribute)})

+#set ($hasParams = true)

+#end

+#end

+#if ($hasParams)

+	/**

+	 * Create child element {@odf.element manifest:${child}}.

+	 *

+#set ($seperateFlag="")

+#set ($params="")

+#foreach ($ch_attr in $ch_attributes)

+#if (${child.isMandatory($ch_attr)})

+#set($ch_attri = ${manifestmodel.getAttribute($ch_attr.getQName())})

+#set ($ch_ValueObject = "String")

+#set ($ch_SimpleValue = "")

+#set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()})

+#set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)})

+#foreach ($ch_ValueType in $ch_ValueTypes)

+#set ($ch_ValueObject = $ch_ValueType)

+#end

+## use ch_attri get all of the values.

+#set($ch_Values = ${ch_attri.getValues().withoutMultiples()})

+#if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0)

+#set ($trueFlag = false)

+#set ($falseFlag = false)

+#foreach ($ch_Value in $ch_Values)

+#if ($ch_Value==true)

+#set ($trueFlag = true)

+#end

+#if ($ch_Value==false)

+#set ($falseFlag = true)

+#end

+#end

+#if ($trueFlag and $falseFlag)

+#set ($ch_Hasdatatype = true)

+#set ($ch_ValueObject = "Boolean")

+#end

+#end

+#if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean")

+#set ($ch_ValueObject = "String")

+#end

+#if ($ch_ValueObject != "String")

+#set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)})

+#end

+#if ($ch_attr != "*")

+#set ($attribute = ${ch_attr.withMultiples()})

+#set ($aNS = ${attribute.getNamespace()})

+#set ($aClassname = "${manifestmodel.camelCase($attribute)}Attribute")

+#set ($aParam = "${manifestmodel.javaCase($attribute)}Value")

+	 * @param $aParam  the <code>$ch_ValueObject</code> value of <code>$aClassname</code>, see {@odf.attribute  manifest:${attribute.getQName()}} at specification

+#if ($ch_SimpleValue!="")

+#set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}")

+#else

+#set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}")

+#end

+#set ($seperateFlag=", ")

+#end

+#end

+#end

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element manifest:${child}}

+	 */

+	 public $cClassname new${cClassname}($params) {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+#foreach ($ch_attr in $ch_attributes)

+#if ($ch_attr != "*" && ${child.isMandatory($ch_attr)})

+#set ($aClassname = "${manifestmodel.camelCase($ch_attr)}Attribute")

+#set ($aParam = "${manifestmodel.javaCase($ch_attr)}Value")

+		${cVar}.set$aClassname($aParam);

+#end

+#end

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#else

+	/**

+	 * Create child element {@odf.element manifest:${child}}.

+	 *

+## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions)

+## but we can compare by name

+#if (!$oldelement || !${oldelement.getChildElements().containsName($child)})

+	 * Child element is new in Odf 1.2

+	 *

+#end

+#if (${element.isMandatory($child)})

+	 * Child element is mandatory.

+	 *

+#end

+	 * @return the element {@odf.element manifest:${child}}

+	 */

+	public $cClassname new${cClassname}() {

+		$cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class);

+		this.appendChild($cVar);

+		return $cVar;

+	}

+

+#end

+#end

+#end

+##

+## -----------------------------------------------------

+##  New: newTextNode

+## -----------------------------------------------------

+##

+#if ($element.canHaveText())

+	/**

+	 * Add text content. Only elements which are allowed to have text content offer this method.

+	 */

+	 public void newTextNode(String content) {

+		if (content != null && !content.equals("")) {

+			this.appendChild(this.getOwnerDocument().createTextNode(content));

+		}

+	 }

+#end

+}

diff --git a/trunk/odfdom/src/codegen/resources/pkg/template/pkg-output-files.vm b/trunk/odfdom/src/codegen/resources/pkg/template/pkg-output-files.vm
new file mode 100644
index 0000000..f5e3f81
--- /dev/null
+++ b/trunk/odfdom/src/codegen/resources/pkg/template/pkg-output-files.vm
@@ -0,0 +1,62 @@
+##################################################################

+## 

+## 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

+## regarding copyright ownership.  The ASF licenses this file

+## to you under the Apache License, Version 2.0 (the

+## "License"); you may not use this file except in compliance

+## with the License.  You may obtain a copy of the License at

+## 

+##  http://www.apache.org/licenses/LICENSE-2.0

+## 

+## Unless required by applicable law or agreed to in writing,

+## software distributed under the License is distributed on an

+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+## KIND, either express or implied.  See the License for the

+## specific language governing permissions and limitations

+## under the License.

+##

+##################################################################

+<?xml version="1.0" encoding="UTF-8"?>

+## Template to create the list of artefacts which are to be generated

+##

+## Documentation of template development can be found in local file

+## src/main/resources/documentation/help.html

+##

+<filelist>

+##

+#foreach ($element in ${signaturemodel.getElements().withoutMultiples()})

+#if ($element != "*")

+##

+#set($classname = "${signaturemodel.camelCase($element)}Element")

+	<file path="org/odftoolkit/odfdom/pkg/dsig/${classname}.java" context="$element" template="odfdom-dsig-element-template.vm" />

+##

+#end

+#end

+##

+#foreach ($attribute in ${signaturemodel.getAttributes().withoutMultiples()})

+#if ($attribute != "*")

+##

+#set($classname = "${signaturemodel.camelCase($attribute)}Attribute")

+	<file path="org/odftoolkit/odfdom/pkg/dsig/${classname}.java" context="$attribute" template="odfdom-dsig-attribute-template.vm" />

+#end

+#end

+##

+#foreach ($element in ${manifestmodel.getElements().withoutMultiples()})

+#if ($element != "*")

+##

+#set($classname = "${manifestmodel.camelCase($element)}Element")

+	<file path="org/odftoolkit/odfdom/pkg/manifest/${classname}.java" context="$element" template="odfdom-manifest-element-template.vm" />

+##

+#end

+#end

+##

+#foreach ($attribute in ${manifestmodel.getAttributes().withoutMultiples()})

+#if ($attribute != "*")

+##

+#set($classname = "${manifestmodel.camelCase($attribute)}Attribute")

+	<file path="org/odftoolkit/odfdom/pkg/manifest/${classname}.java" context="$attribute" template="odfdom-manifest-attribute-template.vm" />

+#end

+#end

+</filelist>

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/JarManifest.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/JarManifest.java
new file mode 100644
index 0000000..d2741cf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/JarManifest.java
@@ -0,0 +1,145 @@
+/************************************************************************
+ *
+ * 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;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Provides metadata about the ODFDOM library as build date, version number. Its
+ * main() method is the start method of the library, enabling the access of
+ * versioning methods from command line: "java -jar odfdom.jar".
+ */
+public class JarManifest {
+
+    private static final String CURRENT_CLASS_RESOURCE_PATH = "org/odftoolkit/odfdom/JarManifest.class";
+    private static final String MANIFEST_JAR_PATH = "META-INF/MANIFEST.MF";
+    private static String ODFDOM_NAME;
+    private static String ODFDOM_VERSION;
+    private static String ODFDOM_WEBSITE;
+    private static String ODFDOM_BUILD_DATE;
+    private static String ODFDOM_SUPPORTED_ODF_VERSION;
+   
+    static {
+        try {
+            Manifest manifest = new Manifest(getManifestAsStream());
+            Attributes attr = manifest.getEntries().get("ODFDOM");
+            ODFDOM_NAME = attr.getValue("ODFDOM-Name");
+            ODFDOM_VERSION = attr.getValue("ODFDOM-Version");
+            ODFDOM_WEBSITE = attr.getValue("ODFDOM-Website");
+            ODFDOM_BUILD_DATE = attr.getValue("ODFDOM-Built-Date");
+            ODFDOM_SUPPORTED_ODF_VERSION = attr.getValue("ODFDOM-Supported-Odf-Version");
+        } catch (Exception e) {
+            Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE, null, e);
+        }
+    }
+
+    private static InputStream getManifestAsStream() {
+        String versionRef = JarManifest.class.getClassLoader().getResource(CURRENT_CLASS_RESOURCE_PATH).toString();
+        String manifestRef = versionRef.substring(0, versionRef.lastIndexOf(CURRENT_CLASS_RESOURCE_PATH)) + MANIFEST_JAR_PATH;
+        URL manifestURL = null;
+        InputStream in = null;
+        try {
+            manifestURL = new URL(manifestRef);
+        } catch (MalformedURLException ex) {
+            Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        try {
+            in = manifestURL.openStream();
+        } catch (IOException ex) {
+            Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return in;
+    }
+
+    private JarManifest() {
+    }
+
+	/**
+	 * The main method is meant to be called when the JAR is being executed,
+	 * e.g. "java -jar odfdom.jar" and provides versioning information:
+	 *
+	 *	odfdom 0.9-SNAPSHOT (build 20100701-1729)
+	 *	from http://odftoolkit.org supporting ODF 1.2
+	 *
+	 * Allowing version access from the JAR without the need to unzip the JAR nor naming the JAR
+	 * (requiring the change of classpath for every version due to JAR naming change).
+	 */
+    public static void main(String[] args) throws IOException {
+        System.out.println(getOdfdomTitle() + " (build " + getOdfdomBuildDate() + ')' + "\nfrom " + getOdfdomWebsite() + " supporting ODF " + getOdfdomSupportedOdfVersion());
+    }
+
+    /**
+     * Return the name of ODFDOM;
+     * @return the ODFDOM library name
+     */
+    public static String getOdfdomName() {
+        return ODFDOM_NAME;
+    }
+
+    /**
+     * Returns the ODFDOM library title
+     * 
+     * @return A string containing both the name and the version of the ODFDOM library.
+     */
+    public static String getOdfdomTitle() {
+        return getOdfdomName() + ' ' + getOdfdomVersion();
+    }    
+
+    /**
+     * Return the version of the ODFDOM library (ie. odfdom.jar)
+     * @return the ODFDOM library version
+     */
+    public static String getOdfdomVersion() {
+        return ODFDOM_VERSION;
+    }
+
+    /**
+     * Return the website of the ODFDOM library (ie. odfdom.jar)
+     * @return the ODFDOM library website
+     */
+    public static String getOdfdomWebsite() {
+        return ODFDOM_WEBSITE;
+    }
+
+    /**
+     * Return the date when ODFDOM had been build
+     * @return the date of the build formated as "yyyy-MM-dd'T'HH:mm:ss".
+     */
+    public static String getOdfdomBuildDate() {
+        return ODFDOM_BUILD_DATE;
+    }
+
+    /**
+     * Returns the version of the OpenDocument specification covered by the ODFDOM library (ie. odfdom.jar)
+     * @return the supported ODF version number
+     */
+    public static String getOdfdomSupportedOdfVersion() {
+        return ODFDOM_SUPPORTED_ODF_VERSION;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfChartDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfChartDocument.java
new file mode 100644
index 0000000..48b395a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfChartDocument.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeChartElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.SAXException;
+
+/**
+ * This class represents an empty ODF document , which will be in general embedded
+ * in an existing ODF (Spreadsheet) document.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.ChartDocument} in Simple API.
+ */
+public class OdfChartDocument extends OdfDocument {
+
+	private static final String EMPTY_CHART_DOCUMENT_PATH = "/OdfChartDocument.odc";
+	static final Resource EMPTY_CHART_DOCUMENT_RESOURCE = new Resource(EMPTY_CHART_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of OdfChartDocument documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		CHART(OdfDocument.OdfMediaType.CHART),
+		CHART_TEMPLATE(OdfDocument.OdfMediaType.CHART_TEMPLATE);
+		private final OdfDocument.OdfMediaType mMediaType;
+
+		OdfMediaType(OdfDocument.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfDocument.OdfMediaType getOdfMediaType(String mediaType) {
+			return OdfDocument.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty charts document.
+	 * *  <br/><em>Note: ODF Chart documents are (with OOo 3.0) only used as embedded document and not used stand-alone.</em>
+	 * @return ODF charts document based on a default template
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfChartDocument newChartDocument() throws Exception {
+		return (OdfChartDocument) OdfDocument.loadTemplate(EMPTY_CHART_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.CHART);
+	}
+
+	/**
+	 * Creates an empty charts template.
+	 * *  <br/><em>Note: ODF Chart documents are (with OOo 3.0) only used as embedded document and not used stand-alone.</em>
+	 * @return ODF charts template based on a default template
+	 * @throws java.lang.Exception - if the template could not be created
+	 */
+	public static OdfChartDocument newChartTemplateDocument() throws Exception {
+		OdfChartDocument doc = (OdfChartDocument) OdfDocument.loadTemplate(EMPTY_CHART_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.CHART_TEMPLATE);
+		doc.changeMode(OdfMediaType.CHART_TEMPLATE);
+		return doc;
+	}
+
+	/**
+	 * Creates an OdfChartDocument from the OpenDocument provided by a resource Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfChartDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An advantage of caching is that there are no problems overwriting
+	 * an input file.</p>
+	 * 
+	 * <p>If the resource stream is not a ODF chart document, ClassCastException might be thrown.</p>
+	 *
+	 * @param inputStream - the InputStream of the ODF chart document.
+	 * @return the chart document created from the given InputStream
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfChartDocument loadDocument(InputStream inputStream) throws Exception {
+        return (OdfChartDocument) OdfDocument.loadDocument(inputStream);
+    }
+	
+	/**
+	 * Loads an OdfChartDocument from the provided path.
+	 *
+	 * <p>OdfChartDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfChartDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF chart document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the chart document from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfChartDocument loadDocument(String documentPath) throws Exception {
+		return (OdfChartDocument)OdfDocument.loadDocument(documentPath);
+	}
+	
+	/**
+	 * Creates an OdfChartDocument from the OpenDocument provided by a File.
+	 *
+	 * <p>OdfChartDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfChartDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF chart document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param file - a file representing the ODF chart document.
+	 * @return the chart document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfChartDocument loadDocument(File file) throws Exception {
+		return (OdfChartDocument)OdfDocument.loadDocument(file);
+	}
+	
+	/** To avoid data duplication a new document is only created, if not already opened.
+	 * A document is cached by this constructor using the internalpath as key. */
+	protected OdfChartDocument(OdfPackage pkg, String internalPath, OdfChartDocument.OdfMediaType odfMediaType) throws SAXException {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Get the content root of a chart document.
+	 *
+	 * @return content root, representing the office:chart tag
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeChartElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeChartElement.class);
+	}
+	/**
+	 * Changes the document to the given mediatype.
+	 * This method can only be used to convert a document to a related mediatype, e.g. template.
+	 * 
+	 * @param mediaType the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfDocument.java
new file mode 100644
index 0000000..b8425bf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfDocument.java
@@ -0,0 +1,1046 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+
+import org.odftoolkit.odfdom.doc.table.OdfTable;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfMetaDom;
+import org.odftoolkit.odfdom.dom.OdfSchemaConstraint;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfTextProperties;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.meta.OdfOfficeMeta;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfValidationException;
+import org.odftoolkit.odfdom.type.Duration;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+
+/** 
+ * This abstract class is representing one of the possible ODF documents.
+ * 
+ */
+public abstract class OdfDocument extends OdfSchemaDocument {
+	// Static parts of file references
+
+	private static final String SLASH = "/";
+	private OdfMediaType mMediaType;
+	private OdfOfficeMeta mOfficeMeta;
+	private long documentOpeningTime;
+	private static final Pattern CONTROL_CHAR_PATTERN = Pattern.compile("\\p{Cntrl}");
+	private static final String EMPTY_STRING = "";
+	private Calendar mCreationDate;
+
+	// Using static factory instead of constructor
+	protected OdfDocument(OdfPackage pkg, String internalPath, OdfMediaType mediaType) throws SAXException {
+		super(pkg, internalPath, mediaType.getMediaTypeString());
+		mMediaType = mediaType;
+		//set document opening time.
+		documentOpeningTime = System.currentTimeMillis();
+	}
+
+	/**
+	 * This enum contains all possible media types of OpenDocument documents.
+	 */
+	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"),
+		TEXT_WEB("application/vnd.oasis.opendocument.text-web", "oth");
+		private final String mMediaType;
+		private final String mSuffix;
+
+		OdfMediaType(String mediaType, String suffix) {
+			this.mMediaType = mediaType;
+			this.mSuffix = suffix;
+		}
+
+		/**
+		 * @return the mediatype String of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType;
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mSuffix;
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfMediaType getOdfMediaType(String mediaType) {
+			OdfMediaType odfMediaType = null;
+			if (mediaType != null) {
+
+				String mediaTypeShort = mediaType.substring(mediaType.lastIndexOf(".") + 1, mediaType.length());
+				mediaTypeShort = mediaTypeShort.replace('-', '_').toUpperCase();
+				try {
+					odfMediaType = OdfMediaType.valueOf(mediaTypeShort);
+
+				} catch (IllegalArgumentException e) {
+					throw new IllegalArgumentException("Given mediaType '" + mediaType + "' is not an ODF mediatype!");
+				}
+			}
+			return odfMediaType;
+		}
+	}
+
+	/**
+	 * Loads the ODF root document from the given Resource.
+	 * 
+	 * NOTE: Initial meta data (like the document creation time) will be added in this method.
+	 * 
+	 * @param res a resource containing a package with a root document
+	 * @param odfMediaType the media type of the root document
+	 * @return the OpenDocument document
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	protected static OdfDocument loadTemplate(Resource res, OdfMediaType odfMediaType) throws Exception {
+		InputStream in = res.createInputStream();
+		OdfPackage pkg = null;
+		try {
+			pkg = OdfPackage.loadPackage(in);
+		} finally {
+			in.close();
+		}
+		OdfDocument newDocument = newDocument(pkg, ROOT_DOCUMENT_PATH, odfMediaType);
+		//add creation time, the metadata have to be explicitly set
+		newDocument.mCreationDate = Calendar.getInstance();
+		return newDocument;
+	}
+
+	/**
+	 * Loads the ODF root document from the ODF package provided by its path.
+	 *
+	 * <p>OdfDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfDocument.</p>
+	 *
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the OpenDocument from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfDocument loadDocument(String documentPath) throws Exception {
+		return loadDocument(OdfPackage.loadPackage(documentPath));
+	}
+
+	/**
+	 * Loads the ODF root document from the ODF package provided by a Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An 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
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfDocument loadDocument(InputStream inStream) throws Exception {
+		return loadDocument(OdfPackage.loadPackage(inStream));
+	}
+
+	/**
+	 * Loads the ODF root document from the ODF package provided as a File.
+	 *
+	 * @param file - a file representing the ODF document.
+	 * @return the document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfDocument loadDocument(File file) throws Exception {
+		return loadDocument(OdfPackage.loadPackage(file));
+	}
+
+	/**
+	 * Loads the ODF root document from the ODF package.
+	 *
+	 * @param odfPackage - the ODF package containing the ODF document.
+	 * @return the root document of the given OdfPackage
+	 * @throws java.lang.Exception - if the ODF document could not be created.
+	 */
+	public static OdfDocument loadDocument(OdfPackage odfPackage) throws Exception {
+		return loadDocument(odfPackage, ROOT_DOCUMENT_PATH);
+	}
+
+	/**
+	 * Creates an OdfDocument from the OpenDocument provided by an ODF package.
+	 * @param odfPackage - the ODF package containing the ODF document.
+	 * @param internalPath - the path to the ODF document relative to the package root, or an empty String for the root document.
+	 * @return the root document of the given OdfPackage
+	 * @throws java.lang.Exception - if the ODF document could not be created.
+	 */
+	public static OdfDocument loadDocument(OdfPackage odfPackage, String internalPath) throws Exception {
+		String documentMediaType = odfPackage.getMediaTypeString(internalPath);
+		OdfMediaType odfMediaType = null;
+		try {
+			odfMediaType = OdfMediaType.getOdfMediaType(documentMediaType);
+		} catch (IllegalArgumentException e) {
+			// the returned NULL will be taking care of afterwards
+		}
+		if (odfMediaType == null) {
+			ErrorHandler errorHandler = odfPackage.getErrorHandler();
+			Matcher matcherCTRL = CONTROL_CHAR_PATTERN.matcher(documentMediaType);
+			if (matcherCTRL.find()) {
+				documentMediaType = matcherCTRL.replaceAll(EMPTY_STRING);
+			}
+			OdfValidationException ve = new OdfValidationException(OdfSchemaConstraint.DOCUMENT_WITHOUT_ODF_MIMETYPE, internalPath, documentMediaType);
+			if (errorHandler != null) {
+				errorHandler.fatalError(ve);
+			}
+			throw ve;
+		}
+		return newDocument(odfPackage, internalPath, odfMediaType);
+	}
+
+	//return null if the media type can not be recognized.
+	private static OdfDocument loadDocumentFromTemplate(OdfMediaType odfMediaType) throws Exception {
+
+		final Resource documentTemplate;
+		switch (odfMediaType) {
+			case TEXT:
+			case TEXT_TEMPLATE:
+			case TEXT_MASTER:
+			case TEXT_WEB:
+				documentTemplate = OdfTextDocument.EMPTY_TEXT_DOCUMENT_RESOURCE;
+				break;
+
+			case SPREADSHEET:
+			case SPREADSHEET_TEMPLATE:
+				documentTemplate = OdfSpreadsheetDocument.EMPTY_SPREADSHEET_DOCUMENT_RESOURCE;
+				break;
+
+			case PRESENTATION:
+			case PRESENTATION_TEMPLATE:
+				documentTemplate = OdfPresentationDocument.EMPTY_PRESENTATION_DOCUMENT_RESOURCE;
+				break;
+
+			case GRAPHICS:
+			case GRAPHICS_TEMPLATE:
+				documentTemplate = OdfGraphicsDocument.EMPTY_GRAPHICS_DOCUMENT_RESOURCE;
+				break;
+
+			case CHART:
+			case CHART_TEMPLATE:
+				documentTemplate = OdfChartDocument.EMPTY_CHART_DOCUMENT_RESOURCE;
+				break;
+
+			case IMAGE:
+			case IMAGE_TEMPLATE:
+				documentTemplate = OdfImageDocument.EMPTY_IMAGE_DOCUMENT_RESOURCE;
+				break;
+
+			default:
+				documentTemplate = null;
+				throw new IllegalArgumentException("Given mediaType '" + odfMediaType.mMediaType + "' is not yet supported!");
+		}
+		return loadTemplate(documentTemplate, odfMediaType);
+	}
+
+	/**
+	 * 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
+	 *	NULL if media type were not supported.
+	 */
+	private static OdfDocument newDocument(OdfPackage pkg, String internalPath, OdfMediaType odfMediaType) throws SAXException {
+		OdfDocument newDoc = null;
+		switch (odfMediaType) {
+			case TEXT:
+				newDoc = new OdfTextDocument(pkg, internalPath, OdfTextDocument.OdfMediaType.TEXT);
+				break;
+
+			case TEXT_TEMPLATE:
+				newDoc = new OdfTextDocument(pkg, internalPath, OdfTextDocument.OdfMediaType.TEXT_TEMPLATE);
+				break;
+
+			case TEXT_MASTER:
+				newDoc = new OdfTextDocument(pkg, internalPath, OdfTextDocument.OdfMediaType.TEXT_MASTER);
+				break;
+
+			case TEXT_WEB:
+				newDoc = new OdfTextDocument(pkg, internalPath, OdfTextDocument.OdfMediaType.TEXT_WEB);
+				break;
+
+			case SPREADSHEET:
+				newDoc = new OdfSpreadsheetDocument(pkg, internalPath, OdfSpreadsheetDocument.OdfMediaType.SPREADSHEET);
+				break;
+
+			case SPREADSHEET_TEMPLATE:
+				newDoc = new OdfSpreadsheetDocument(pkg, internalPath, OdfSpreadsheetDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+				break;
+
+			case PRESENTATION:
+				newDoc = new OdfPresentationDocument(pkg, internalPath, OdfPresentationDocument.OdfMediaType.PRESENTATION);
+				break;
+
+			case PRESENTATION_TEMPLATE:
+				newDoc = new OdfPresentationDocument(pkg, internalPath, OdfPresentationDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+				break;
+
+			case GRAPHICS:
+				newDoc = new OdfGraphicsDocument(pkg, internalPath, OdfGraphicsDocument.OdfMediaType.GRAPHICS);
+				break;
+
+			case GRAPHICS_TEMPLATE:
+				newDoc = new OdfGraphicsDocument(pkg, internalPath, OdfGraphicsDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+				break;
+
+			case CHART:
+				newDoc = new OdfChartDocument(pkg, internalPath, OdfChartDocument.OdfMediaType.CHART);
+				break;
+
+			case CHART_TEMPLATE:
+				newDoc = new OdfChartDocument(pkg, internalPath, OdfChartDocument.OdfMediaType.CHART_TEMPLATE);
+				break;
+
+			case IMAGE:
+				newDoc = new OdfImageDocument(pkg, internalPath, OdfImageDocument.OdfMediaType.IMAGE);
+				break;
+
+			case IMAGE_TEMPLATE:
+				newDoc = new OdfImageDocument(pkg, internalPath, OdfImageDocument.OdfMediaType.IMAGE_TEMPLATE);
+				break;
+
+			default:
+				newDoc = null;
+				throw new IllegalArgumentException("Given mediaType '" + odfMediaType.mMediaType + "' is not yet supported!");
+		}
+		// returning null if MediaType is not supported
+		return newDoc;
+	}
+
+	/**
+	 * Returns an embedded OdfPackageDocument from the given package path.
+	 *
+	 * @param documentPath to the ODF document within the package. The path is relative the current ODF document path.
+	 * @return an embedded OdfPackageDocument
+	 */
+	@Override
+	public OdfDocument loadSubDocument(String documentPath) {
+		return (OdfDocument) super.loadSubDocument(documentPath);
+	}
+
+	/**
+	 * Method returns all embedded OdfPackageDocuments, which match a valid OdfMediaType,
+	 * of the current OdfPackageDocument. Note: The root document is not part of the returned collection.
+	 * @return a map with all embedded documents and their paths of the current OdfPackageDocument
+	 */
+	public Map<String, OdfDocument> loadSubDocuments() {
+		return loadSubDocuments(null);
+	}
+
+	/**
+	 * Method returns all embedded OdfPackageDocuments of sthe current OdfPackageDocument matching the
+	 * according MediaType. This is done by matching the subfolder entries of the
+	 * manifest file with the given OdfMediaType.
+	 * @param desiredMediaType media type of the documents to be returned (used as a filter).
+	 * @return embedded documents of the current OdfPackageDocument matching the given media type
+	 */
+	public Map<String, OdfDocument> loadSubDocuments(OdfMediaType desiredMediaType) {
+		String wantedMediaString = null;
+		if (desiredMediaType != null) {
+			wantedMediaString = desiredMediaType.getMediaTypeString();
+		}
+		Map<String, OdfDocument> embeddedObjectsMap = new HashMap<String, OdfDocument>();
+		// check manifest for current embedded OdfPackageDocuments
+		Set<String> manifestEntries = mPackage.getFilePaths();
+		for (String path : manifestEntries) {
+			// any directory that is not the root document "/"
+			if (path.length() > 1 && path.endsWith(SLASH)) {
+				String entryMediaType = mPackage.getFileEntry(path).getMediaTypeString();
+				// if the entry is a document (directory has mediaType)
+				if (entryMediaType != null) {
+					// if a specific ODF mediatype was requested
+					if (wantedMediaString != null) {
+						// test if the desired mediatype matches the current
+						if (entryMediaType.equals(wantedMediaString)) {
+							path = normalizeDocumentPath(path);
+							embeddedObjectsMap.put(path, (OdfDocument) mPackage.loadDocument(path));
+						}
+					} else {
+						// test if any ODF mediatype matches the current
+						for (OdfMediaType mediaType : OdfMediaType.values()) {
+							if (entryMediaType.equals(mediaType.getMediaTypeString())) {
+								embeddedObjectsMap.put(path, (OdfDocument) mPackage.loadDocument(path));
+							}
+						}
+					}
+				}
+			}
+		}
+		return embeddedObjectsMap;
+	}
+
+	/**
+	 * Sets the media type of the OdfDocument
+	 * @param odfMediaType media type to be set
+	 */
+	protected void setOdfMediaType(OdfMediaType odfMediaType) {
+		mMediaType = odfMediaType;
+		super.setMediaTypeString(odfMediaType.getMediaTypeString());
+	}
+
+	/**
+	 * Gets the media type of the OdfDocument
+	 */
+	protected OdfMediaType getOdfMediaType() {
+		return mMediaType;
+	}
+
+	/**
+	 * 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	 
+	 */
+	public OdfOfficeMeta getOfficeMetadata() {
+		if (mOfficeMeta == null) {
+			try {
+				OdfMetaDom metaDom = getMetaDom();
+				if (metaDom == null) {
+					metaDom = new OdfMetaDom(this, OdfSchemaDocument.OdfXMLFile.META.getFileName());
+				}
+				mOfficeMeta = new OdfOfficeMeta(metaDom);
+			} catch (Exception ex) {
+				Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE, null, ex);
+			}
+		}
+		return mOfficeMeta;
+	}
+
+	/**
+	 * Save the document to an OutputStream. Delegate to the root document
+	 * and save possible embedded OdfDocuments.
+	 *
+	 * <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 package.
+	 * If the embedded document is outside of the current document 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  if the document could not be saved
+	 */
+	public void save(OutputStream out) throws Exception {
+		updateMetaData();
+		if (!isRootDocument()) {
+			OdfDocument newDoc = loadDocumentFromTemplate(getOdfMediaType());
+			newDoc.insertDocument(this, ROOT_DOCUMENT_PATH);
+			newDoc.updateMetaData();
+			newDoc.mPackage.save(out);
+			// ToDo: (Issue 219 - PackageRefactoring) - Return the document, when not closing!
+			// Should we close the sources now? User will never receive the open package!
+		} else {
+			mPackage.save(out);
+		}
+	}
+
+	/**
+	 * 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 embedded document is outside of the current document directory, 
+	 * you have 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  if the document could not be saved
+	 */
+	@Override
+	public void save(File file) throws Exception {
+		updateMetaData();
+		if (!isRootDocument()) {
+			OdfDocument newDoc = loadDocumentFromTemplate(getOdfMediaType());
+			newDoc.insertDocument(this, ROOT_DOCUMENT_PATH);
+			newDoc.updateMetaData();
+			newDoc.mPackage.save(file);
+			// ToDo: (Issue 219 - PackageRefactoring) - Return the document, when not closing!
+			// Should we close the sources now? User will never receive the open package!
+		} else {
+			this.mPackage.save(file);
+		}
+	}
+
+	/**
+	 * Close the OdfPackage and release all temporary created data.
+	 * Acter execution of this method, this class is no longer usable.
+	 * Do this as the last action to free resources.
+	 * Closing an already closed document has no effect.
+	 */
+	@Override
+	public void close() {
+		// set all member variables explicit to null
+		mMediaType = null;
+		mOfficeMeta = null;
+		super.close();
+	}
+
+	/**
+	 * Get the content root of a document.
+	 *
+	 * You may prefer to use the getContentRoot methods of subclasses of
+	 * OdfDocument. Their return parameters are already casted to
+	 * respective subclasses of OdfElement.
+	 *
+	 * @param 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
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@SuppressWarnings("unchecked")
+	<T extends OdfElement> T getContentRoot(Class<T> clazz) throws Exception {
+		OdfElement contentRoot = getContentDom().getRootElement();
+		OfficeBodyElement contentBody = OdfElement.findFirstChildNode(
+				OfficeBodyElement.class, contentRoot);
+		NodeList childs = contentBody.getChildNodes();
+		for (int i = 0;
+				i < childs.getLength();
+				i++) {
+			Node cur = childs.item(i);
+			if ((cur != null) && clazz.isInstance(cur)) {
+				return (T) cur;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Get the content root of a document.
+	 *
+	 * You may prefer to use the getContentRoot methods of subclasses of
+	 * OdfDocument.
+	 * 
+	 * @return the child element of office:body, e.g. office:text for text docs
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	public OdfElement getContentRoot() throws Exception {
+		return getContentRoot(OdfElement.class);
+	}
+
+	@Override
+	public String toString() {
+		return "\n" + getMediaTypeString() + " - ID: " + this.hashCode() + " " + getPackage().getBaseURI();
+	}
+
+	/**
+	 * Insert an Image from the specified uri to the end of the OdfDocument.
+	 * @param imageUri The URI of the image that will be added to the document,
+	 * 				   add image stream to the package,
+	 *                 in the 'Pictures/' graphic directory with the same image file name as in the URI.
+	 *                 If the imageURI is relative first the user.dir is taken to make it absolute.
+	 * @return         Returns the internal package path of the image, which was created based on the given URI.
+	 * */
+	public String newImage(URI imageUri) {
+		try {
+			OdfContentDom contentDom = this.getContentDom();
+			OdfDrawFrame drawFrame = contentDom.newOdfElement(OdfDrawFrame.class);
+			XPath xpath = contentDom.getXPath();
+			if (this instanceof OdfSpreadsheetDocument) {
+				TableTableCellElement lastCell = (TableTableCellElement) xpath.evaluate("//table:table-cell[last()]", contentDom, XPathConstants.NODE);
+				lastCell.appendChild(drawFrame);
+				drawFrame.removeAttribute("text:anchor-type");
+
+			} else if (this instanceof OdfTextDocument) {
+				TextPElement lastPara = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom, XPathConstants.NODE);
+				if (lastPara == null) {
+					lastPara = ((OdfTextDocument) this).newParagraph();
+				}
+				lastPara.appendChild(drawFrame);
+				drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+			} else if (this instanceof OdfPresentationDocument) {
+				DrawPageElement lastPage = (DrawPageElement) xpath.evaluate("//draw:page[last()]", contentDom, XPathConstants.NODE);
+				lastPage.appendChild(drawFrame);
+			}
+			OdfDrawImage image = (OdfDrawImage) drawFrame.newDrawImageElement();
+			String imagePath = image.newImage(imageUri);
+			return imagePath;
+		} catch (Exception ex) {
+			Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return null;
+	}
+
+	/**
+	 * Return an instance of table feature with the specific table name.
+	 * @param name of the table beeing searched for.
+	 * @return an instance of table feature with the specific table name.
+	 */
+	public OdfTable getTableByName(String name) {
+		try {
+			OdfElement root = getContentDom().getRootElement();
+			OfficeBodyElement officeBody = OdfElement.findFirstChildNode(OfficeBodyElement.class, root);
+			OdfElement typedContent = OdfElement.findFirstChildNode(OdfElement.class, officeBody);
+
+			NodeList childList = typedContent.getChildNodes();
+			for (int i = 0; i < childList.getLength(); i++) {
+				if (childList.item(i) instanceof TableTableElement) {
+					TableTableElement table = (TableTableElement) childList.item(i);
+					if (table.getOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.TABLE, "name")).equals(name)) {
+						return OdfTable.getInstance(table);
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+
+	/**
+	 * Return a list of table features in this document.
+	 * @return a list of table features in this document.
+	 */
+	public List<OdfTable> getTableList() {
+		List<OdfTable> tableList = null;
+		try {
+			List<TableTableElement> tableElementList = getTables();
+			tableList = new ArrayList<OdfTable>(tableElementList.size());
+			for (int i = 0;
+					i < tableElementList.size();
+					i++) {
+				tableList.add(OdfTable.getInstance(tableElementList.get(i)));
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return tableList;
+	}
+
+	/**
+	 * Update document meta data in the ODF document. Following metadata data is
+	 * being updated:
+	 * <ul>
+	 * <li>The name of the person who last modified this document will be the Java user.name System property</li>
+	 * <li>The date and time when the document was last modified using current data</li>
+	 * <li>The number of times this document has been edited is incremented by 1</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 
+	 * @throws IllegalArgumentException 
+	 */
+	private void updateMetaData() throws IllegalArgumentException, Exception {
+		if (getOfficeMetadata().hasAutomaticUpdate()) {
+			OdfOfficeMeta metaData = getOfficeMetadata();
+
+			// set creation date´
+			if (mCreationDate != null) {
+				getOfficeMetadata().setCreationDate(mCreationDate);
+			}
+
+			// update late modfied date
+			Calendar calendar = Calendar.getInstance();
+			metaData.setDate(calendar);
+
+			// update editing-cycles
+			Integer cycle = metaData.getEditingCycles();
+			if (cycle != null) {
+				metaData.setEditingCycles(++cycle);
+			} else {
+				metaData.setEditingCycles(1);
+			}
+			// update editing-duration
+			long editingDuration = calendar.getTimeInMillis() - documentOpeningTime;
+			editingDuration = (editingDuration < 1) ? 1 : editingDuration;
+			try {
+				DatatypeFactory aFactory = DatatypeFactory.newInstance();
+				metaData.setEditingDuration(new Duration(aFactory.newDurationDayTime(editingDuration)));
+			} catch (DatatypeConfigurationException e) {
+				Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE,
+						"editing duration update fail as DatatypeFactory can not be instanced", e);
+			}
+		}
+	}
+
+	// /////////////////
+	// Following is the implementation of locale settings
+	// ////////////////
+	/**
+	 * <p>
+	 * Unicode characters are in general divided by office applications into
+	 * three different groups.
+	 * 
+	 * <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 for instance Arabic, Hebrew, Indic and Thai. See http://en.wikipedia.org/wiki/Complex_Text_Layout
+	 * 
+	 * <p>
+	 * 3) And there is all the rest, which was once called by MS Western.
+	 */
+	public enum UnicodeGroup {
+
+		/**
+		 * Western language
+		 */
+		WESTERN,
+		/**
+		 * Chinese, Japanese and Korean
+		 */
+		CJK,
+		/**
+		 * Complex Text Layout language
+		 */
+		CTL;
+	}
+	private final static HashSet<String> CJKLanguage = new HashSet<String>();
+	private final static HashSet<String> CTLLanguage = new HashSet<String>();
+
+	{
+		CJKLanguage.add("zh"); // LANGUAGE_CHINES
+		CJKLanguage.add("ja"); // LANGUAGE_JAPANESE
+		CJKLanguage.add("ko"); // LANGUAGE_KOREANE
+
+		CTLLanguage.add("am"); // LANGUAGE_AMHARIC_ETHIOPIA
+		CTLLanguage.add("ar"); // LANGUAGE_ARABIC_SAUDI_ARABIA
+		CTLLanguage.add("as"); // LANGUAGE_ASSAMESE
+		CTLLanguage.add("bn"); // LANGUAGE_BENGALI
+		CTLLanguage.add("bo"); // LANGUAGE_TIBETAN
+		CTLLanguage.add("brx");// LANGUAGE_USER_BODO_INDIA
+		CTLLanguage.add("dgo");// LANGUAGE_USER_DOGRI_INDIA
+		CTLLanguage.add("dv"); // LANGUAGE_DHIVEHI
+		CTLLanguage.add("dz"); // LANGUAGE_DZONGKHA
+		CTLLanguage.add("fa"); // LANGUAGE_FARSI
+		CTLLanguage.add("gu"); // LANGUAGE_GUJARATI
+		CTLLanguage.add("he"); // LANGUAGE_HEBREW
+		CTLLanguage.add("hi"); // LANGUAGE_HINDI
+		CTLLanguage.add("km"); // LANGUAGE_KHMER
+		CTLLanguage.add("kn"); // LANGUAGE_KANNADA
+		CTLLanguage.add("ks"); // LANGUAGE_KASHMIRI
+		CTLLanguage.add("ku"); // LANGUAGE_USER_KURDISH_IRAQ
+		CTLLanguage.add("lo"); // LANGUAGE_LAO
+		CTLLanguage.add("mai");// LANGUAGE_USER_MAITHILI_INDIA
+		CTLLanguage.add("ml"); // LANGUAGE_MALAYALAM
+		CTLLanguage.add("mn"); // LANGUAGE_MONGOLIAN_MONGOLIAN
+		CTLLanguage.add("mni");// LANGUAGE_MANIPURI
+		CTLLanguage.add("mr"); // LANGUAGE_MARATHI
+		CTLLanguage.add("my"); // LANGUAGE_BURMESE
+		CTLLanguage.add("ne"); // LANGUAGE_NEPALI
+		CTLLanguage.add("or"); // LANGUAGE_ORIYA
+		CTLLanguage.add("pa"); // LANGUAGE_PUNJABI
+		CTLLanguage.add("sa"); // LANGUAGE_SANSKRIT
+		CTLLanguage.add("sd"); // LANGUAGE_SINDHI
+		CTLLanguage.add("si"); // LANGUAGE_SINHALESE_SRI_LANKA
+		CTLLanguage.add("syr");// LANGUAGE_SYRIAC
+		CTLLanguage.add("ta"); // LANGUAGE_TAMIL
+		CTLLanguage.add("te"); // LANGUAGE_TELUGU
+		CTLLanguage.add("th"); // LANGUAGE_THAI
+		CTLLanguage.add("ug"); // LANGUAGE_UIGHUR_CHINA
+		CTLLanguage.add("ur"); // LANGUAGE_URDU
+		CTLLanguage.add("yi"); // LANGUAGE_YIDDISH
+	}
+
+	/**
+	 * <p>
+	 * Set a locale information.
+	 * <p>
+	 * 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
+	 */
+	public void setLocale(Locale locale) {
+		setLocale(locale, getUnicodeGroup(locale));
+	}
+
+	/**
+	 * This method will return 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.
+	 */
+	/**
+	 * Similar to OpenOffice.org, ODFDOM assumes that every Locale is related
+	 * to one of the three Unicodes Groups, either CJK, CTL or Western.
+	 * @param locale the UnicodeGroup is requested for
+	 * @return the related UnicodeGroup
+	 */
+	public static UnicodeGroup getUnicodeGroup(Locale locale) {
+		String language = locale.getLanguage();
+		if (CJKLanguage.contains(language)) {
+			return UnicodeGroup.CJK;
+		}
+		if (CTLLanguage.contains(language)) {
+			return UnicodeGroup.CTL;
+		}
+		return UnicodeGroup.WESTERN;
+
+	}
+
+	/**
+	 * <p>
+	 * Set a locale of a specific script type.
+	 * <p>
+	 * If the locale does not belong to the script type, it will not be set.
+	 *
+	 * @param locale
+	 *            - Locale information
+	 * @param unicodeGroup
+	 *            - The script type
+	 */
+	private void setLocale(Locale locale, UnicodeGroup unicodeGroup) {
+		try {
+			switch (unicodeGroup) {
+				case WESTERN:
+					setDefaultWesternLanguage(locale);
+					break;
+				case CJK:
+					setDefaultAsianLanguage(locale);
+					break;
+				case CTL:
+					setDefaultComplexLanguage(locale);
+					break;
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE,
+					"Failed to set locale", e);
+		}
+	}
+
+	/**
+	 * This method will return Locale, which presents the default
+	 * language and country information settings in this document
+	 * <p>
+	 * ODF allows to set a Locale for each of the three UnicodeGroups.
+	 * Therefore there might be three different Locale for the document.
+	 * 
+	 * @param unicodeGroup
+	 *            - One of the three (CJK, CTL or Western).
+	 * @return the Locale for the given UnicodeGroup
+	 */
+	public Locale getLocale(UnicodeGroup unicodeGroup) {
+		try {
+			switch (unicodeGroup) {
+				case WESTERN:
+					return getDefaultLanguageByProperty(OdfTextProperties.Country,
+							OdfTextProperties.Language);
+				case CJK:
+					return getDefaultLanguageByProperty(
+							OdfTextProperties.CountryAsian,
+							OdfTextProperties.LanguageAsian);
+				case CTL:
+					return getDefaultLanguageByProperty(
+							OdfTextProperties.CountryComplex,
+							OdfTextProperties.LanguageComplex);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfDocument.class.getName()).log(Level.SEVERE,
+					"Failed to get locale", e);
+		}
+		return null;
+	}
+
+	/** Returns the current Locale for the OdfStyleProperty of the corresponding UnicodeGroup */
+	private Locale getDefaultLanguageByProperty(OdfStyleProperty countryProp,
+			OdfStyleProperty languageProp) throws Exception {
+		String lang = null, ctry = null;
+
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+
+		// get language and country setting from default style setting for
+		// paragraph
+		OdfDefaultStyle defaultStyle = styles.getDefaultStyle(OdfStyleFamily.Paragraph);
+		if (defaultStyle != null) {
+			if (defaultStyle.hasProperty(countryProp) && defaultStyle.hasProperty(languageProp)) {
+				ctry = defaultStyle.getProperty(countryProp);
+				lang = defaultStyle.getProperty(languageProp);
+				return new Locale(lang, ctry);
+			}
+		}
+		// if no default style setting for paragraph
+		// get language and country setting from other default style settings
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+		while (itera.hasNext()) {
+			OdfDefaultStyle style = itera.next();
+			if (style.hasProperty(countryProp) && style.hasProperty(languageProp)) {
+				ctry = style.getProperty(countryProp);
+				lang = style.getProperty(languageProp);
+				return new Locale(lang, ctry);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 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.
+	 * @throws Exception
+	 */
+	private void setDefaultWesternLanguage(Locale locale) throws Exception {
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		if (defaultStyles != null) {
+			Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+			while (itera.hasNext()) {
+				OdfDefaultStyle style = itera.next();
+				if (style.getFamily().getProperties().contains(
+						OdfTextProperties.Language)) {
+					style.setProperty(OdfTextProperties.Language, locale.getLanguage());
+					style.setProperty(OdfTextProperties.Country, locale.getCountry());
+				}
+			}
+		}
+	}
+
+	/**
+	 * This method will set the default Asian language and country information
+	 * 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.
+	 * @throws Exception
+	 */
+	private void setDefaultAsianLanguage(Locale locale) throws Exception {
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		if (defaultStyles != null) {
+			Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+			while (itera.hasNext()) {
+				OdfDefaultStyle style = itera.next();
+				if (style.getFamily().getProperties().contains(
+						OdfTextProperties.LanguageAsian)) {
+					style.setProperty(OdfTextProperties.LanguageAsian, locale.getLanguage());
+					style.setProperty(OdfTextProperties.CountryAsian, locale.getCountry());
+				}
+			}
+		}
+	}
+
+	/**
+	 * 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.
+	 * @throws Exception
+	 */
+	private void setDefaultComplexLanguage(Locale locale) throws Exception {
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		if (defaultStyles != null) {
+			Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+			while (itera.hasNext()) {
+				OdfDefaultStyle style = itera.next();
+				if (style.getFamily().getProperties().contains(
+						OdfTextProperties.LanguageComplex)) {
+					style.setProperty(OdfTextProperties.LanguageComplex, locale.getLanguage());
+					style.setProperty(OdfTextProperties.CountryComplex, locale.getCountry());
+				}
+			}
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfGraphicsDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfGraphicsDocument.java
new file mode 100644
index 0000000..1d3fd9b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfGraphicsDocument.java
@@ -0,0 +1,177 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeDrawingElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.SAXException;
+
+/**
+ * This class represents an empty ODF graphics document.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.GraphicsDocument} in Simple API.
+ */
+public class OdfGraphicsDocument extends OdfDocument {
+
+	private static final String EMPTY_GRAPHICS_DOCUMENT_PATH = "/OdfGraphicsDocument.odg";
+	static final Resource EMPTY_GRAPHICS_DOCUMENT_RESOURCE = new Resource(EMPTY_GRAPHICS_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of OdfGraphicsDocument documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		GRAPHICS(OdfDocument.OdfMediaType.GRAPHICS),
+		GRAPHICS_TEMPLATE(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+		private final OdfDocument.OdfMediaType mMediaType;
+
+		OdfMediaType(OdfDocument.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfDocument.OdfMediaType getOdfMediaType(String mediaType) {
+			return OdfDocument.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty graphics document.
+	 * @return ODF graphics document based on a default template
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfGraphicsDocument newGraphicsDocument() throws Exception {
+		return (OdfGraphicsDocument) OdfDocument.loadTemplate(EMPTY_GRAPHICS_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.GRAPHICS);
+	}
+
+	/**
+	 * Creates an empty graphics template.
+	 * @return ODF graphics template based on a default
+	 * @throws java.lang.Exception - if the template could not be created
+	 */
+	public static OdfGraphicsDocument newGraphicsTemplateDocument() throws Exception {
+		OdfGraphicsDocument doc = (OdfGraphicsDocument) OdfDocument.loadTemplate(EMPTY_GRAPHICS_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+		doc.changeMode(OdfMediaType.GRAPHICS_TEMPLATE);
+		return doc;
+	}
+
+	/** To avoid data duplication a new document is only created, if not already opened.
+	 * A document is cached by this constructor using the internalpath as key. */
+	protected OdfGraphicsDocument(OdfPackage pkg, String internalPath, OdfGraphicsDocument.OdfMediaType odfMediaType) throws SAXException {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Creates an OdfGraphicsDocument from the OpenDocument provided by a resource Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfGraphicsDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An advantage of caching is that there are no problems overwriting
+	 * an input file.</p>
+	 * 
+	 * <p>If the resource stream is not a ODF graphics document, ClassCastException might be thrown.</p>
+	 *
+	 * @param inputStream - the InputStream of the ODF graphics document.
+	 * @return the graphics document created from the given InputStream
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfGraphicsDocument loadDocument(InputStream inputStream) throws Exception {
+        return (OdfGraphicsDocument) OdfDocument.loadDocument(inputStream);
+    }
+	
+	/**
+	 * Loads an OdfGraphicsDocument from the provided path.
+	 *
+	 * <p>OdfGraphicsDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfGraphicsDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF graphics document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the graphics document from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfGraphicsDocument loadDocument(String documentPath) throws Exception {
+		return (OdfGraphicsDocument)OdfDocument.loadDocument(documentPath);
+	}
+	
+	/**
+	 * Creates an OdfGraphicsDocument from the OpenDocument provided by a File.
+	 *
+	 * <p>OdfGraphicsDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfGraphicsDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF graphics document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param file - a file representing the ODF graphics document.
+	 * @return the graphics document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfGraphicsDocument loadDocument(File file) throws Exception {
+		return (OdfGraphicsDocument)OdfDocument.loadDocument(file);
+	}
+	
+	/**
+	 * Get the content root of a graphics document.
+	 *
+	 * @return content root, representing the office:drawing tag
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeDrawingElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeDrawingElement.class);
+	}
+
+	/**
+	 * Changes the document to the given mediatype. 
+	 * This method can only be used to convert a document to a related mediatype, e.g. template.
+	 *
+	 * @param mediaType the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfImageDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfImageDocument.java
new file mode 100644
index 0000000..e0d3b90
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfImageDocument.java
@@ -0,0 +1,175 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeImageElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.SAXException;
+
+/**
+ * This class represents an ODF image document.
+ * 
+ */
+public class OdfImageDocument extends OdfDocument {
+
+	private static final String EMPTY_IMAGE_DOCUMENT_PATH = "/OdfImageDocument.odi";
+	static final Resource EMPTY_IMAGE_DOCUMENT_RESOURCE = new Resource(EMPTY_IMAGE_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of OdfImageDocument documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		IMAGE(OdfDocument.OdfMediaType.IMAGE),
+		IMAGE_TEMPLATE(OdfDocument.OdfMediaType.IMAGE_TEMPLATE);
+		private final OdfDocument.OdfMediaType mMediaType;
+
+		OdfMediaType(OdfDocument.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfDocument.OdfMediaType getOdfMediaType(String mediaType) {
+			return OdfDocument.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty image document.
+	 * @return ODF image document based on a default template
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfImageDocument newImageDocument() throws Exception {
+		return (OdfImageDocument) OdfDocument.loadTemplate(EMPTY_IMAGE_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.IMAGE);
+	}
+
+	/**
+	 * Creates an empty image template.
+	 * @return ODF image template based on a default
+	 * @throws java.lang.Exception - if the template could not be created
+	 */
+	public static OdfImageDocument newImageTemplateDocument() throws Exception {
+		OdfImageDocument doc = (OdfImageDocument) OdfDocument.loadTemplate(EMPTY_IMAGE_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.IMAGE_TEMPLATE);
+		doc.changeMode(OdfMediaType.IMAGE_TEMPLATE);
+		return doc;
+	}
+
+	/** To avoid data duplication a new document is only created, if not already opened.
+	 * A document is cached by this constructor using the internalpath as key. */
+	protected OdfImageDocument(OdfPackage pkg, String internalPath, OdfImageDocument.OdfMediaType odfMediaType) throws SAXException {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Creates an OdfImageDocument from the OpenDocument provided by a resource Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfImageDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An advantage of caching is that there are no problems overwriting
+	 * an input file.</p>
+	 * 
+	 * <p>If the resource stream is not a ODF image document, ClassCastException might be thrown.</p>
+	 *
+	 * @param inputStream - the InputStream of the ODF image document.
+	 * @return the image document created from the given InputStream
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfImageDocument loadDocument(InputStream inputStream) throws Exception {
+        return (OdfImageDocument) OdfDocument.loadDocument(inputStream);
+    }
+	
+	/**
+	 * Loads an OdfImageDocument from the provided path.
+	 *
+	 * <p>OdfImageDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfImageDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF image document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the image document from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfImageDocument loadDocument(String documentPath) throws Exception {
+		return (OdfImageDocument)OdfDocument.loadDocument(documentPath);
+	}
+	
+	/**
+	 * Creates an OdfImageDocument from the OpenDocument provided by a File.
+	 *
+	 * <p>OdfImageDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfImageDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF image document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param file - a file representing the ODF image document.
+	 * @return the image document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfImageDocument loadDocument(File file) throws Exception {
+		return (OdfImageDocument)OdfDocument.loadDocument(file);
+	}
+	/**
+	 * Get the content root of a image document.
+	 *
+	 * @return content root, representing the office:drawing tag
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeImageElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeImageElement.class);
+	}
+
+	/**
+	 * Changes the document to the given mediatype.
+	 * This method can only be used to convert a document to a related mediatype, e.g. template.
+	 *
+	 * @param mediaType the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfPresentationDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfPresentationDocument.java
new file mode 100644
index 0000000..88a6d85
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfPresentationDocument.java
@@ -0,0 +1,1468 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+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.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.doc.presentation.OdfSlide;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePresentationPageLayoutElement;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfPackageDocument;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * This class represents an empty ODF presentation.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.PresentationDocument} in Simple API.
+ */
+public class OdfPresentationDocument extends OdfDocument {
+
+	private static final String EMPTY_PRESENTATION_DOCUMENT_PATH = "/OdfPresentationDocument.odp";
+	static final Resource EMPTY_PRESENTATION_DOCUMENT_RESOURCE = new Resource(EMPTY_PRESENTATION_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of OdfPresentationDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		PRESENTATION(OdfDocument.OdfMediaType.PRESENTATION),
+		PRESENTATION_TEMPLATE(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+		private final OdfDocument.OdfMediaType mMediaType;
+
+		OdfMediaType(OdfDocument.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the ODF mediatype of this document
+		 */
+		public OdfDocument.OdfMediaType getOdfMediaType() {
+			return mMediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfDocument.OdfMediaType getOdfMediaType(String mediaType) {
+			return OdfDocument.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty presentation document.
+	 * @return ODF presentation document based on a default template
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfPresentationDocument newPresentationDocument() throws Exception {
+		return (OdfPresentationDocument) OdfDocument.loadTemplate(EMPTY_PRESENTATION_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.PRESENTATION);
+	}
+
+	/**
+	 * Creates an empty presentation template.
+	 * @return ODF presentation template based on a default
+	 * @throws Exception - if the template could not be created
+	 */
+	public static OdfPresentationDocument newPresentationTemplateDocument() throws Exception {
+		OdfPresentationDocument doc = (OdfPresentationDocument) OdfDocument.loadTemplate(EMPTY_PRESENTATION_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+		doc.changeMode(OdfMediaType.PRESENTATION_TEMPLATE);
+		return doc;
+	}
+
+	/** To avoid data duplication a new document is only created, if not already opened.
+	 * A document is cached by this constructor using the internalpath as key. */
+	protected OdfPresentationDocument(OdfPackage pkg, String internalPath, OdfPresentationDocument.OdfMediaType odfMediaType) throws SAXException {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Creates an OdfPresentationDocument from the OpenDocument provided by a resource Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfPresentationDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An advantage of caching is that there are no problems overwriting
+	 * an input file.</p>
+	 * 
+	 * <p>If the resource stream is not a ODF presentation document, ClassCastException might be thrown.</p>
+	 *
+	 * @param inputStream - the InputStream of the ODF presentation document.
+	 * @return the presentation document created from the given InputStream
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfPresentationDocument loadDocument(InputStream inputStream) throws Exception {
+		return (OdfPresentationDocument) OdfDocument.loadDocument(inputStream);
+	}
+
+	/**
+	 * Loads an OdfPresentationDocument from the provided path.
+	 *
+	 * <p>OdfPresentationDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfPresentationDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF presentation document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the presentation document from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfPresentationDocument loadDocument(String documentPath) throws Exception {
+		return (OdfPresentationDocument) OdfDocument.loadDocument(documentPath);
+	}
+
+	/**
+	 * Creates an OdfPresentationDocument from the OpenDocument provided by a File.
+	 *
+	 * <p>OdfPresentationDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfPresentationDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF presentation document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param file - a file representing the ODF presentation document.
+	 * @return the presentation document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfPresentationDocument loadDocument(File file) throws Exception {
+		return (OdfPresentationDocument) OdfDocument.loadDocument(file);
+	}
+
+	/**
+	 * Get the content root of a presentation document.
+	 *
+	 * @return content root, representing the office:presentation tag
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@Override
+	public OfficePresentationElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficePresentationElement.class);
+	}
+
+	/**
+	 * Switches this instance to the given type. This method can be used to e.g.
+	 * convert a document instance to a template and vice versa.
+	 * Changes take affect in the package when saving the document.
+	 *
+	 * @param type the compatible ODF mediatype.
+	 */
+	public void changeMode(OdfMediaType type) {
+		setOdfMediaType(type.mMediaType);
+	}
+	private boolean hasCheckSlideName = false;
+	//if the copy foreign slide for several times, 
+	//the same style might be copied for several times with the different name
+	//so use styleRenameMap to keep track the renamed style so we can reuse the style, 
+	//rather than new several styles which only have the different style names.
+	//while if the style elements really have the same style name but with different content
+	//such as that these style elements are from different document
+	//so the value for each key should be a list
+	private HashMap<String, List<String>> styleRenameMap = new HashMap<String, List<String>>();
+	//the map is used to record if the renamed style name is appended to the current dom
+	private HashMap<String, Boolean> styleAppendMap = new HashMap<String, Boolean>();
+	//the object rename map for image.
+	//can not easily recognize if the embedded document are the same.
+//	private HashMap<String, String> objectRenameMap = new HashMap<String, String>();
+
+	/**
+	 * Return the slide at a specified position in this presentation.
+	 * Return null if the index is out of range.
+	 *
+	 * @param index	the index of the slide to be returned
+	 * @return	a draw slide at the specified position
+	 */
+	public OdfSlide getSlideByIndex(int index) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		if ((index >= slideNodes.getLength()) || (index < 0)) {
+			return null;
+		}
+		DrawPageElement slideElement = (DrawPageElement) slideNodes.item(index);
+		return OdfSlide.getInstance(slideElement);
+	}
+
+	/**
+	 * Get the number of the slides in this presentation.
+	 *
+	 * @return	the number of slides
+	 */
+	public int getSlideCount() {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return 0;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		return slideNodes.getLength();
+	}
+
+	/**
+	 * Return the slide which have a specified slide name in this presentation.
+	 * <p>
+	 * According to the odf specification
+	 * "The draw:name attribute specifies a name by which this element can be referenced. 
+	 * It is optional but if present, must be unique within the document instance. 
+	 * If not present, an application may generate a unique name."
+	 * <p>
+	 * If the name is null, then return null because all the slide must has its own unique name.
+	 * 
+	 * @param name	the specified slide name
+	 * @return	the slide whose name equals to the specified name
+	 */
+	public OdfSlide getSlideByName(String name) {
+		checkAllSlideName();
+		if (name == null) {
+			return null;
+		}
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideElement = (DrawPageElement) slideNodes.item(i);
+			OdfSlide slide = OdfSlide.getInstance(slideElement);
+			String slideName = slide.getSlideName();
+			if (slideName.equals(name)) {
+				return slide;
+			}
+		}
+		return null;
+	}
+
+	//when access slide related method, this function should be called
+	private void checkAllSlideName() {
+		//check if this function is called or not
+		if (hasCheckSlideName) {
+			return;
+		}
+		List<String> slideNameList = new ArrayList<String>();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideElement = (DrawPageElement) slideNodes.item(i);
+			String slideName = slideElement.getDrawNameAttribute();
+			if ((slideName == null) || slideNameList.contains(slideName)) {
+				slideName = "page" + (i + 1) + "-" + makeUniqueName();
+				slideElement.setDrawNameAttribute(slideName);
+			}
+			slideNameList.add(slideName);
+		}
+		hasCheckSlideName = true;
+	}
+
+	/**
+	 * Return a list iterator containing all slides in this presentation.
+	 *
+	 * @return	a list iterator containing all slides in this presentation
+	 */
+	public Iterator<OdfSlide> getSlides() {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		ArrayList<OdfSlide> slideList = new ArrayList<OdfSlide>();
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideElement = (DrawPageElement) slideNodes.item(i);
+			slideList.add(OdfSlide.getInstance(slideElement));
+		}
+		return slideList.iterator();
+	}
+
+	/**
+	 * Delete the slide at a specified position in this presentation.
+	 *
+	 * @param index	the index of the slide that need to be delete
+	 * <p>
+	 * Throw IndexOutOfBoundsException if the slide index is out of the presentation document slide count.
+	 * @return false if the operation was not successful
+	 */
+	public boolean deleteSlideByIndex(int index) {
+		boolean success = true;
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+			return success;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		if ((index >= slideNodes.getLength()) || (index < 0)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call deleteSlideByIndex method.");
+		}
+		DrawPageElement slideElement = (DrawPageElement) slideNodes.item(index);
+		//remove all the content of the current page
+		//1. the reference of the path that contained in this slide is 1, then remove it
+		success &= deleteLinkRef(slideElement);
+		//2.the reference of the style is 1, then remove it
+		//in order to save time, do not delete the style here
+		success &= deleteStyleRef(slideElement);
+		//remove the current page element
+		contentRoot.removeChild(slideElement);
+		adjustNotePageNumber(index);
+		return success;
+	}
+
+	private boolean deleteStyleRef(DrawPageElement slideEle) {
+		boolean success = true;
+		try {			
+			//method 1:
+			//1.1. iterate child element of the content element
+			//1.2. if the child element is an OdfStylableElement, get the style-name ref count
+			////////////////
+			//method 2:
+			//2.1. get the list of the style definition
+			ArrayList<OdfElement> removeStyles = new ArrayList<OdfElement>();
+			OdfOfficeAutomaticStyles autoStyles = getContentDom().getAutomaticStyles();
+
+			NodeList stylesList = autoStyles.getChildNodes();
+			OdfContentDom contentDom = getContentDom();
+			XPath xpath = contentDom.getXPath();
+
+			//2.2. get the reference of each style which occurred in the current page
+			for (int i = 0; i < stylesList.getLength(); i++) {
+				Node item = stylesList.item(i);
+				if (item instanceof OdfElement) {
+					OdfElement node = (OdfElement) item;
+					String styleName = node.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "name");
+					if (styleName != null) {
+						//search the styleName contained at the current page element
+						NodeList styleNodes = (NodeList) xpath.evaluate("//*[@*='" + styleName + "']", contentDom, XPathConstants.NODESET);
+						int styleCnt = styleNodes.getLength();
+						if (styleCnt > 1) {
+							//the first styleName is occurred in the style definition
+							//so check if the second styleName and last styleName is occurred in the current page element
+							//if yes, then remove it
+							OdfElement elementFirst = (OdfElement) styleNodes.item(1);
+							OdfElement elementLast = (OdfElement) styleNodes.item(styleCnt - 1);
+							boolean isSamePage = false;
+							if (elementFirst instanceof DrawPageElement) {
+								DrawPageElement tempPage = (DrawPageElement) elementFirst;
+								if (tempPage.equals(slideEle)) {
+									isSamePage = true;
+								}
+							}
+							int relationFirst = slideEle.compareDocumentPosition(elementFirst);
+							int relationLast = slideEle.compareDocumentPosition(elementLast);
+							//if slide element contains the child element which has the styleName reference
+							if (((relationFirst & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0
+									&& (relationLast & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0)
+									|| (isSamePage && (styleCnt == 1))) {
+								if (node instanceof OdfStyleBase) {
+									removeStyles.add(node);
+								}
+							}
+						} else {
+							continue;
+						}
+					}
+				}
+			}
+			for (int i = 0; i < removeStyles.size(); i++) {
+				autoStyles.removeChild(removeStyles.get(i));
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+		}
+		return success;
+	}
+
+	//delete all the xlink:href object which is contained in slideElement and does not referred by other slides
+	private boolean deleteLinkRef(DrawPageElement slideEle) {
+		boolean success = true;
+		try {
+			OdfContentDom contentDom = getContentDom();
+			XPath xpath = contentDom.getXPath();
+			NodeList linkNodes = (NodeList) xpath.evaluate("//*[@xlink:href]", contentDom, XPathConstants.NODESET);
+			for (int i = 0; i < linkNodes.getLength(); i++) {
+				OdfElement object = (OdfElement) linkNodes.item(i);
+				String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+				int relation = slideEle.compareDocumentPosition(object);
+				//if slide element contains the returned element which has the xlink:href reference
+				if ((relation & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0 && refObjPath != null && refObjPath.length() > 0) {
+					//the path of the object is start with "./"
+					NodeList pathNodes = (NodeList) xpath.evaluate("//*[@xlink:href='" + refObjPath + "']", getContentDom(), XPathConstants.NODESET);
+					int refCount = pathNodes.getLength();
+					if (refCount == 1) {
+						//delete "./"
+						if (refObjPath.startsWith("./")) {
+							refObjPath = refObjPath.substring(2);
+						}
+						//check if the current document contains the same path
+						OdfFileEntry fileEntry = getPackage().getFileEntry(refObjPath);
+						if (fileEntry != null) {
+							//it is a stream, such as image, binary file
+							getPackage().remove(refObjPath);
+						} else {
+							//note: if refObjPath is a directory, it must end with '/'
+							fileEntry = getPackage().getFileEntry(refObjPath + "/");
+							removeDocument(refObjPath);
+						}
+					}
+				}
+			}
+		} catch (XPathExpressionException e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+		}
+		return success;
+	}
+
+	/**
+	 * Delete all the slides with a specified name in this presentation.
+	 *
+	 * @param name	the name of the slide that need to be delete
+	 * @return false if the operation was not successful
+	 */
+	public boolean deleteSlideByName(String name) {
+		boolean success = true;
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+			return success;
+		}
+		OdfSlide slide = getSlideByName(name);
+		DrawPageElement slideElement = slide.getOdfElement();
+		//remove all the content of the current page
+		//1. the reference of the path that contained in this slide is 1, then remove its
+		success &= deleteLinkRef(slideElement);
+		//2.the reference of the style is 1, then remove it
+		//in order to save time, do not delete style here
+		success &= deleteStyleRef(slideElement);
+		//remove the current page element
+		contentRoot.removeChild(slideElement);
+		adjustNotePageNumber(0);
+		return success;
+	}
+
+	/**
+	 * Make a copy of the slide at a specified position to another position in this presentation.
+	 * The original slide which at the dest index and after the dest index will move after.
+	 * <p>
+	 * @param source	the source position of the slide need to be copied 
+	 * @param dest		the destination position of the slide need to be copied
+	 * @param newName	the new name of the copied slide
+	 * @return the new slide at the destination position with the specified name, and it has the same content 
+	 * with the slide at the source position.
+	 * <p>
+	 * Throw IndexOutOfBoundsException if the slide index is out of the presentation document slide count.
+	 * If copy the slide at the end of document, destIndex should set the same value with the slide count.
+	 */
+	public OdfSlide copySlide(int source, int dest, String newName) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((source < 0) || (source >= slideCount)
+				|| (dest < 0) || (dest > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call copySlide method.");
+		}
+		DrawPageElement sourceSlideElement = (DrawPageElement) slideList.item(source);
+		DrawPageElement cloneSlideElement = (DrawPageElement) sourceSlideElement.cloneNode(true);
+		cloneSlideElement.setDrawNameAttribute(newName);
+		if (dest == slideCount) {
+			contentRoot.appendChild(cloneSlideElement);
+		} else {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(dest);
+			contentRoot.insertBefore(cloneSlideElement, refSlide);
+		}
+		adjustNotePageNumber(Math.min(source, dest));
+		//in case that the appended new slide have the same name with the original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+		return OdfSlide.getInstance(cloneSlideElement);
+	}
+
+	/**
+	 * Move the slide at a specified position to the destination position.
+	 *
+	 * @param source	the current index of the slide that need to be moved
+	 * @param dest		The index of the destination position before the move action
+	 * <p>
+	 * Throw IndexOutOfBoundsException if the slide index is out of the presentation document slide count.
+	 */
+	public void moveSlide(int source, int dest) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((source < 0) || (source >= slideCount)
+				|| (dest < 0) || (dest > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call moveSlide method.");
+		}
+		DrawPageElement sourceSlide = (DrawPageElement) slideList.item(source);
+		if (dest == slideCount) {
+			contentRoot.appendChild(sourceSlide);
+		} else {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(dest);
+			contentRoot.insertBefore(sourceSlide, refSlide);
+		}
+		adjustNotePageNumber(Math.min(source, dest));
+	}
+
+	/**
+	 * Append all the slides of the specified presentation document to the current document.
+	 * @param srcDoc	the specified <code>OdfPresentationDocument</code> that need to be appended
+	 */
+	public void appendPresentation(OdfPresentationDocument srcDoc) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		OdfFileDom contentDom = null;
+		OfficePresentationElement srcContentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+			contentDom = getContentDom();
+			srcContentRoot = srcDoc.getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideNum = slideList.getLength();
+		//clone the srcContentRoot, and make a modification on this clone node.
+		OfficePresentationElement srcCloneContentRoot = (OfficePresentationElement) srcContentRoot.cloneNode(true);
+		//copy all the referred xlink:href here
+		copyForeignLinkRef(srcCloneContentRoot);
+		//copy all the referred style definition here
+		copyForeignStyleRef(srcCloneContentRoot, srcDoc);
+		Node child = srcCloneContentRoot.getFirstChild();
+		while (child != null) {
+			Node cloneElement = cloneForeignElement(child, contentDom, true);
+			contentRoot.appendChild(cloneElement);
+			child = child.getNextSibling();
+		}
+		adjustNotePageNumber(slideNum - 1);
+
+		//in case that the appended new slide have the same name with the original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+	}
+
+	/**
+	 * Make a copy of slide which locates at the specified position of the source presentation document
+	 * and insert it to the current presentation document at the new position.
+	 * The original slide which at the dest index and after the dest index will move after.
+	 * @param destIndex	the new position of the copied slide in the current document
+	 * @param srcDoc	the source document of the copied slide
+	 * @param srcIndex	the slide index of the source document that need to be copied
+	 * @return the new slide which has the same content with the source slide
+	 * <p>
+	 * Throw IndexOutOfBoundsException if the slide index is out of the presentation document slide count
+	 * If insert the foreign slide at the end of document, destIndex should set the same value
+	 * with the slide count of the current presentation document.
+	 */
+	public OdfSlide copyForeignSlide(int destIndex,
+			OdfPresentationDocument srcDoc, int srcIndex) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		OdfFileDom contentDom = null;
+		try {
+			contentRoot = getContentRoot();
+			contentDom = getContentDom();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((destIndex < 0) || (destIndex > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call copyForeignSlide method.");
+		}
+		OdfSlide sourceSlide = srcDoc.getSlideByIndex(srcIndex);
+		DrawPageElement sourceSlideElement = sourceSlide.getOdfElement();
+		//clone the sourceSlideEle, and make a modification on this clone node.
+		DrawPageElement sourceCloneSlideElement = (DrawPageElement) sourceSlideElement.cloneNode(true);
+
+		//copy all the referred xlink:href here
+		copyForeignLinkRef(sourceCloneSlideElement);
+		//copy all the referred style definition here
+		copyForeignStyleRef(sourceCloneSlideElement, srcDoc);
+		//clone the sourceCloneSlideEle, and this cloned element should in the current dom tree
+		DrawPageElement cloneSlideElement = (DrawPageElement) cloneForeignElement(sourceCloneSlideElement, contentDom, true);
+		if (destIndex == slideCount) {
+			contentRoot.appendChild(cloneSlideElement);
+		} else {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(destIndex);
+			contentRoot.insertBefore(cloneSlideElement, refSlide);
+		}
+		adjustNotePageNumber(destIndex);
+		//in case that the appended new slide have the same name with the original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+		return OdfSlide.getInstance(cloneSlideElement);
+	}
+
+	//clone the source clone element's referred object path to the current package
+	//if the current package contains the same name with the referred object path,
+	//rename the object path and path reference of this slide element
+	//notes: the source clone element is the copied one to avoid changing the content of the source document.
+	private void copyForeignLinkRef(OdfElement sourceCloneEle) {
+		try {
+			OdfFileDom fileDom = (OdfFileDom) sourceCloneEle.getOwnerDocument();
+			XPath xpath;
+			if (fileDom instanceof OdfContentDom) {
+				xpath = ((OdfContentDom) fileDom).getXPath();
+			} else {
+				xpath = ((OdfStylesDom) fileDom).getXPath();
+			}
+			OdfPackageDocument srcDoc = fileDom.getDocument();
+			//new a map to put the original name and the rename string, in case that the same name might be referred by the slide several times.
+			HashMap<String, String> objectRenameMap = new HashMap<String, String>();
+			NodeList linkNodes = (NodeList) xpath.evaluate(".//*[@xlink:href]", sourceCloneEle, XPathConstants.NODESET);
+			for (int i = 0; i <= linkNodes.getLength(); i++) {
+				OdfElement object = null;
+				if (linkNodes.getLength() == i) {
+					if (sourceCloneEle.hasAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href")) {
+						object = sourceCloneEle;
+					} else {
+						break;
+					}
+				} else {
+					object = (OdfElement) linkNodes.item(i);
+				}
+				String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+				if (refObjPath != null && refObjPath.length() > 0) {
+					//the path of the object is start with "./"
+					boolean hasPrefix = false;
+					String prefix = "./";
+					if (refObjPath.startsWith(prefix)) {
+						refObjPath = refObjPath.substring(2);
+						hasPrefix = true;
+					}
+					//check if the current document contains the same path
+					OdfFileEntry fileEntry = getPackage().getFileEntry(refObjPath);
+					//note: if refObjPath is a directory, it must end with '/'
+					if (fileEntry == null) {
+						fileEntry = getPackage().getFileEntry(refObjPath + "/");
+					}
+					String newObjPath = refObjPath;
+					if (fileEntry != null) {
+						//rename the object path
+						newObjPath = objectRenameMap.get(refObjPath);
+						if (newObjPath == null) {
+							//if refObjPath still contains ".", it means that it has the suffix
+							//then change the name before the suffix string
+							int dotIndex = refObjPath.indexOf(".");
+							if (dotIndex != -1) {
+								newObjPath = refObjPath.substring(0, dotIndex) + "-" + makeUniqueName() + refObjPath.substring(dotIndex);
+							} else {
+								newObjPath = refObjPath + "-" + makeUniqueName();
+							}
+							objectRenameMap.put(refObjPath, newObjPath);
+						}
+						object.setAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "xlink:href", hasPrefix ? (prefix + newObjPath) : newObjPath);
+					}
+					InputStream is = srcDoc.getPackage().getInputStream(refObjPath);
+					if (is != null) {
+						String mediaType = srcDoc.getPackage().getFileEntry(refObjPath).getMediaTypeString();
+						getPackage().insert(is, newObjPath, mediaType);
+					} else {
+						OdfDocument embedDoc = (OdfDocument) srcDoc.loadSubDocument(refObjPath);
+						if (embedDoc != null) {
+							insertDocument(embedDoc, newObjPath);
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	private void copyForeignStyleRef(OdfElement sourceCloneEle,
+			OdfPresentationDocument doc) {
+		try {
+			OdfContentDom contentDom = getContentDom();
+			XPath xpath = contentDom.getXPath();
+			//1. collect all the referred style element which has "style:name" attribute
+			//1.1. style:name of content.xml
+			String styleQName = "style:name";
+			NodeList srcStyleDefNodeList = (NodeList) xpath.evaluate("//*[@" + styleQName + "]", contentDom, XPathConstants.NODESET);
+			HashMap<OdfElement, List<OdfElement>> srcContentStyleCloneEleList = new HashMap<OdfElement, List<OdfElement>>();
+			HashMap<OdfElement, OdfElement> appendContentStyleList = new HashMap<OdfElement, OdfElement>();
+			getCopyStyleList(null, sourceCloneEle, styleQName, srcStyleDefNodeList, srcContentStyleCloneEleList, appendContentStyleList, true);
+			//1.2. style:name of styles.xml
+			srcStyleDefNodeList = (NodeList) xpath.evaluate("//*[@" + styleQName + "]", doc.getStylesDom(), XPathConstants.NODESET);
+			HashMap<OdfElement, List<OdfElement>> srcStylesStyleCloneEleList = new HashMap<OdfElement, List<OdfElement>>();
+			HashMap<OdfElement, OdfElement> appendStylesStyleList = new HashMap<OdfElement, OdfElement>();
+			getCopyStyleList(null, sourceCloneEle, styleQName, srcStyleDefNodeList, srcStylesStyleCloneEleList, appendStylesStyleList, true);
+			//1.3 rename, copy the referred style element to the corresponding position in the dom tree
+			insertCollectedStyle(styleQName, srcContentStyleCloneEleList, getContentDom(), appendContentStyleList);
+			insertCollectedStyle(styleQName, srcStylesStyleCloneEleList, getStylesDom(), appendStylesStyleList);
+
+
+			//2. collect all the referred style element which has "draw:name" attribute 
+			//2.1 draw:name of styles.xml
+			//the value of draw:name is string or StyleName,
+			//only when the value is StyleName type, the style definition should be cloned to the destination document
+			//in ODF spec, such attribute type is only exist in <office:styles> element, so only search it in styles.xml dom
+			styleQName = "draw:name";
+			srcStyleDefNodeList = (NodeList) xpath.evaluate("//*[@" + styleQName + "]", doc.getStylesDom(), XPathConstants.NODESET);
+			HashMap<OdfElement, List<OdfElement>> srcDrawStyleCloneEleList = new HashMap<OdfElement, List<OdfElement>>();
+			HashMap<OdfElement, OdfElement> appendDrawStyleList = new HashMap<OdfElement, OdfElement>();
+			Iterator<OdfElement> iter = appendContentStyleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendContentStyleList.get(styleElement);
+				getCopyStyleList(styleElement, cloneStyleElement, styleQName, srcStyleDefNodeList, srcDrawStyleCloneEleList, appendDrawStyleList, false);
+			}
+			iter = appendStylesStyleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendStylesStyleList.get(styleElement);
+				getCopyStyleList(styleElement, cloneStyleElement, styleQName, srcStyleDefNodeList, srcDrawStyleCloneEleList, appendDrawStyleList, false);
+			}
+			//2.2 rename, copy the referred style element to the corresponding position in the dom tree
+			//note: "draw:name" style element only exist in styles.dom
+			insertCollectedStyle(styleQName, srcDrawStyleCloneEleList, getStylesDom(), appendDrawStyleList);
+
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+
+	}
+
+	//1. modified the style name of the style definition element which has the same name with the source document
+	//2. As to the style definition which match 1) condition, modified the referred style name of the element which reference this style
+	//3. All the style which also contains other style reference, should be copied to the source document.
+	private void insertCollectedStyle(String styleQName,
+			HashMap<OdfElement, List<OdfElement>> srcStyleCloneEleList, OdfFileDom dom, HashMap<OdfElement, OdfElement> appendStyleList) {
+		try {
+			String stylePrefix = OdfNamespace.getPrefixPart(styleQName);
+			String styleLocalName = OdfNamespace.getLocalPart(styleQName);
+			String styleURI = OdfDocumentNamespace.STYLE.getUri();
+			// is the DOM always the styles.xml
+			XPath xpath = dom.getXPath();
+			NodeList destStyleNodeList = (NodeList) xpath.evaluate("//*[@" + styleQName + "]", dom, XPathConstants.NODESET);
+
+//			HashMap<String, String> styleRenameMap = new HashMap<String, String>();
+			Iterator<OdfElement> iter = srcStyleCloneEleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendStyleList.get(styleElement);
+				if (cloneStyleElement == null) {
+					cloneStyleElement = (OdfElement) styleElement.cloneNode(true);
+					appendStyleList.put(styleElement, cloneStyleElement);
+				}
+				String styleName = styleElement.getAttributeNS(styleURI, styleLocalName);
+				List<String> newStyleNameList = styleRenameMap.get(styleName);
+				// if the newStyleNameList != null, means that styleName exists in dest document
+				// and it has already been renamed
+				if ((newStyleNameList != null)
+						|| (isStyleNameExist(destStyleNodeList, styleName) != null)) {
+					String newStyleName = null;
+					if (newStyleNameList == null) {
+						newStyleNameList = new ArrayList<String>();
+						newStyleName = styleName + "-" + makeUniqueName();
+						newStyleNameList.add(newStyleName);
+						styleRenameMap.put(styleName, newStyleNameList);
+					} else {
+						for (int i = 0; i < newStyleNameList.size(); i++) {
+							String styleNameIter = newStyleNameList.get(i);
+							OdfElement destStyleElementWithNewName = isStyleNameExist(destStyleNodeList, styleNameIter);
+							//check if the two style elements have the same content
+							//if not, the cloneStyleElement should rename, rather than reuse the new style name
+							cloneStyleElement.setAttributeNS(styleURI, styleQName, styleNameIter);
+							if ((destStyleElementWithNewName != null) && destStyleElementWithNewName.equals(cloneStyleElement)) {
+								newStyleName = styleNameIter;
+								break;
+							}
+						}
+						if (newStyleName == null) {
+							newStyleName = styleName + "-" + makeUniqueName();
+							newStyleNameList.add(newStyleName);
+						}
+					}
+					// if newStyleName has been set in the element as the new name
+					// which means that the newStyleName is conform to the odf spec
+					// then change element style reference name
+					if (changeStyleRefName(srcStyleCloneEleList.get(styleElement), styleName, newStyleName)) {
+						cloneStyleElement.setAttributeNS(styleURI, styleQName, newStyleName);
+						//if display name should also be renamed
+						String displayName = cloneStyleElement.getAttributeNS(styleURI, "display-name");
+						if ((displayName != null) && (displayName.length() > 0)) {
+							cloneStyleElement.setAttributeNS(styleURI, stylePrefix + ":display-name",
+									displayName + newStyleName.substring(newStyleName.length() - 8));
+						}
+					}
+
+				}
+			}
+
+			iter = appendStyleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendStyleList.get(styleElement);
+				String newStyleName = cloneStyleElement.getAttributeNS(styleURI, styleLocalName);
+				Boolean isAppended = styleAppendMap.get(newStyleName);
+				//if styleAppendMap contain the newStyleName, 
+				//means that cloneStyleElement has already been appended
+				if ((isAppended != null) && isAppended.booleanValue() == true) {
+					continue;
+				} else {
+					styleAppendMap.put(newStyleName, true);
+				}
+				OdfElement cloneForeignStyleElement = (OdfElement) cloneForeignElement(cloneStyleElement, dom, true);
+				String styleElePath = getElementPath(styleElement);
+				appendForeignStyleElement(cloneForeignStyleElement, dom, styleElePath);
+				copyForeignLinkRef(cloneStyleElement);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+
+	}
+
+	//get all the copy of referred style element which is directly referred or indirectly referred by cloneEle
+	//all the style are defined in srcStyleNodeList
+	//and these style are all have the styleName defined in styleQName attribute
+	//the key of copyStyleEleList is the style definition element
+	//the value of the corresponding key is the clone of the element which refer to the key, 
+	//the cloned element can be the content of slide or the style element.
+	//the key of appendStyleList is the style definition element which has the other style reference
+	//the value of the corresponding key is the the style definition clone element
+	//loop means if recursive call this function
+	//if loop == true, get the style definition element reference other style definition element
+	private void getCopyStyleList(OdfElement ele, OdfElement cloneEle, String styleQName, NodeList srcStyleNodeList,
+			HashMap<OdfElement, List<OdfElement>> copyStyleEleList, HashMap<OdfElement, OdfElement> appendStyleList, boolean loop) {
+		try {
+			String styleLocalName = OdfNamespace.getLocalPart(styleQName);
+			String styleURI = OdfDocumentNamespace.STYLE.getUri();
+			//OdfElement override the "toString" method
+			String cloneEleStr = cloneEle.toString();
+			for (int i = 0; i < srcStyleNodeList.getLength(); i++) {
+				OdfElement styleElement = (OdfElement) srcStyleNodeList.item(i);
+				String styleName = styleElement.getAttributeNS(styleURI, styleLocalName);
+				if (styleName != null) {
+					int index = 0;
+					index = cloneEleStr.indexOf("=\"" + styleName + "\"", index);
+					while (index >= 0) {
+						String subStr = cloneEleStr.substring(0, index);
+						int lastSpaceIndex = subStr.lastIndexOf(' ');
+						String attrStr = subStr.substring(lastSpaceIndex + 1, index);
+						XPath xpath = ((OdfFileDom) cloneEle.getOwnerDocument()).getXPath();
+						NodeList styleRefNodes = (NodeList) xpath.evaluate(".//*[@" + attrStr + "='" + styleName + "']", cloneEle, XPathConstants.NODESET);
+						boolean isExist = false;
+						for (int j = 0; j <= styleRefNodes.getLength(); j++) {
+							OdfElement styleRefElement = null;
+							if (j == styleRefNodes.getLength()) {
+								isExist = isStyleNameRefExist(cloneEle, styleName, false);
+								if (isExist) {
+									styleRefElement = cloneEle;
+								} else {
+									continue;
+								}
+							} else {
+								OdfElement tmpElement = (OdfElement) styleRefNodes.item(j);
+								if (isStyleNameRefExist(tmpElement, styleName, false)) {
+									styleRefElement = tmpElement;
+								} else {
+									continue;
+								}
+							}
+							boolean hasLoopStyleDef = true;
+							if (copyStyleEleList.get(styleElement) == null) {
+								List<OdfElement> styleRefEleList = new ArrayList<OdfElement>();
+								copyStyleEleList.put(styleElement, styleRefEleList);
+								hasLoopStyleDef = false;
+							}
+							copyStyleEleList.get(styleElement).add(styleRefElement);
+
+							OdfElement cloneStyleElement = appendStyleList.get(styleElement);
+							if (cloneStyleElement == null) {
+								cloneStyleElement = (OdfElement) styleElement.cloneNode(true);
+								appendStyleList.put(styleElement, cloneStyleElement);
+							}
+							if (loop && !hasLoopStyleDef) {
+								getCopyStyleList(styleElement, cloneStyleElement, styleQName, srcStyleNodeList, copyStyleEleList, appendStyleList, loop);
+							}
+						}
+						index = cloneEleStr.indexOf("=\"" + styleName + "\"", index + styleName.length());
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+	//append the cloneStyleElement to the contentDom which position is defined by styleElePath
+
+	private void appendForeignStyleElement(OdfElement cloneStyleEle,
+			OdfFileDom dom, String styleElePath) {
+		StringTokenizer token = new StringTokenizer(styleElePath, "/");
+		boolean isExist = true;
+		Node iterNode = dom.getFirstChild();
+		Node parentNode = dom;
+		while (token.hasMoreTokens()) {
+			String onePath = token.nextToken();
+
+			while ((iterNode != null) && isExist) {
+				String path = iterNode.getNamespaceURI();
+				String prefix = iterNode.getPrefix();
+				if (prefix == null) {
+					path += "@" + iterNode.getLocalName();
+				} else {
+					path += "@" + prefix + ":" + iterNode.getLocalName();
+				}
+				if (!path.equals(onePath)) {
+					//not found, then get the next sibling to find such path node
+					iterNode = iterNode.getNextSibling();
+				} else {
+					//found, then get the child nodes to find the next path node
+					parentNode = iterNode;
+					iterNode = iterNode.getFirstChild();
+					break;
+				}
+			}
+
+			if (iterNode == null) {
+				//should new the element since the current path node
+				if (isExist) {
+					isExist = false;
+				}
+				StringTokenizer token2 = new StringTokenizer(onePath, "@");
+				OdfElement newElement = dom.createElementNS(OdfName.newName(token2.nextToken(), token2.nextToken()));
+				parentNode.appendChild(newElement);
+				parentNode = newElement;
+			}
+		}
+		parentNode.appendChild(cloneStyleEle);
+	}
+
+	//The returned string is a path from the top of the dom tree to the specified element
+	//and the path is split by "/" between each node
+	private String getElementPath(OdfElement styleEle) {
+		String path = "";
+		Node parentNode = styleEle.getParentNode();
+		while (!(parentNode instanceof OdfFileDom)) {
+			String qname = null;
+			String prefix = parentNode.getPrefix();
+			if (prefix == null) {
+				qname = parentNode.getLocalName();
+			} else {
+				qname = prefix + ":" + parentNode.getLocalName();
+			}
+			path = parentNode.getNamespaceURI() + "@" + qname + "/" + path;
+			parentNode = parentNode.getParentNode();
+		}
+		return path;
+	}
+
+	//change the element referred oldStyleName to the new name
+	//if true then set newStyleName attribute value successfully
+	//if false means that the newStyleName value is not conform to the ODF spec, so do not modify the oldStyleName
+	private boolean changeStyleRefName(List<OdfElement> list, String oldStyleName, String newStyleName) {
+		boolean rtn = false;
+		for (int index = 0; index < list.size(); index++) {
+			OdfElement element = list.get(index);
+			NamedNodeMap attributes = element.getAttributes();
+
+			if (attributes != null) {
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node item = attributes.item(i);
+					String value = item.getNodeValue();
+					if (oldStyleName.equals(value)) {
+						try {
+							item.setNodeValue(newStyleName);
+							rtn = true;
+							break;
+						} catch (IllegalArgumentException e) {
+							return false;
+						}
+					}
+				}
+			}
+		}
+		return rtn;
+	}
+
+	//check if the element contains the referred styleName
+	private boolean isStyleNameRefExist(Node element, String styleName, boolean deep) {
+		NamedNodeMap attributes = element.getAttributes();
+		if (attributes != null) {
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node item = attributes.item(i);
+				if (item.getNodeValue().equals(styleName)
+						&& !item.getNodeName().equals("style:name")) //this is style definition, not reference
+				{
+					return true;
+				}
+			}
+		}
+		if (deep) {
+			Node childNode = element.getFirstChild();
+			while (childNode != null) {
+				if (!isStyleNameRefExist(childNode, styleName, true)) {
+					childNode = childNode.getNextSibling();
+				} else {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	//check if nodeList contains the node that "style:name" attribute has the same value with styleName
+	//Note: nodeList here is all the style definition list
+	private OdfElement isStyleNameExist(NodeList nodeList,
+			String styleName) {
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			OdfElement element = (OdfElement) nodeList.item(i);
+			String name = element.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "name");
+			if (name.equals(styleName)) //return true;
+			{
+				return element;
+			}
+		}
+		//return false;
+		return null;
+	}
+
+	private String makeUniqueName() {
+		return String.format("a%06x", (int) (Math.random() * 0xffffff));
+	}
+
+	/**
+	 * 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		The specified DOM tree that the returned element belong to
+	 * @param deep		If true, recursively clone the subtree under the element,
+	 * 					false, only clone the element itself
+	 * @return	Returns a duplicated element which is not in the DOM tree with the specified element
+	 */
+	public Node cloneForeignElement(Node element, OdfFileDom dom, boolean deep) {
+		checkAllSlideName();
+		if (element instanceof OdfElement) {
+			OdfElement cloneElement = dom.createElementNS(((OdfElement) element).getOdfName());
+
+			NamedNodeMap attributes = element.getAttributes();
+			if (attributes != null) {
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node item = attributes.item(i);
+					String qname = null;
+					String prefix = item.getPrefix();
+					if (prefix == null) {
+						qname = item.getLocalName();
+					} else {
+						qname = prefix + ":" + item.getLocalName();
+					}
+
+					cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
+				}
+			}
+
+			if (deep) {
+				Node childNode = element.getFirstChild();
+				while (childNode != null) {
+					cloneElement.appendChild(cloneForeignElement(childNode, dom, true));
+					childNode = childNode.getNextSibling();
+				}
+			}
+
+			return cloneElement;
+		} else {
+			return dom.createTextNode(element.getNodeValue());
+		}
+
+	}
+
+	/**
+	 * New a slide at the specified position with the specified name,
+	 * and use the specified slide template.
+	 * See <code>OdfDrawPage.SlideLayout</code>.
+	 * <p>
+	 * If index is invalid, such as larger than the current document 
+	 * slide number or is negative,
+	 * then append the new slide at the end of the document.
+	 * <p>
+	 * The slide name can be null.
+	 * @param index		the new slide position
+	 * @param name		the new slide name
+	 * @param slideLayout	the new slide template
+	 * @return	the new slide which locate at the specified position 
+	 * with the specified name and apply the specified slide template.
+	 * If slideLayout is null, then use the default slide template which is a blank slide.
+	 * <p>
+	 * Throw IndexOutOfBoundsException if index is out of the presentation document slide count.
+	 */
+	public OdfSlide newSlide(int index, String name, OdfSlide.SlideLayout slideLayout) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((index < 0) || (index > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call newSlide method.");
+		}
+		//if insert page at the beginning of the document,
+		//get the next page style as the new page style
+		//else get the previous page style as the new page style
+		DrawPageElement refStyleSlide = null;
+		int refSlideIndex = 0;
+		if (index > 0) {
+			refSlideIndex = index - 1;
+		}
+		refStyleSlide = (DrawPageElement) slideList.item(refSlideIndex);
+		String masterPageStyleName = "Default";
+		String masterName = refStyleSlide.getDrawMasterPageNameAttribute();
+		if (masterName != null) {
+			masterPageStyleName = masterName;
+		}
+		DrawPageElement newSlideElement = contentRoot.newDrawPageElement(masterPageStyleName);
+		newSlideElement.setDrawNameAttribute(name);
+		String drawStyleName = refStyleSlide.getDrawStyleNameAttribute();
+		if (drawStyleName != null) {
+			newSlideElement.setDrawStyleNameAttribute(drawStyleName);
+		}
+		String pageLayoutName = refStyleSlide.getPresentationPresentationPageLayoutNameAttribute();
+		if (pageLayoutName != null) {
+			newSlideElement.setPresentationPresentationPageLayoutNameAttribute(pageLayoutName);
+		}
+		setSlideLayout(newSlideElement, slideLayout);
+		//insert notes page
+		NodeList noteNodes = refStyleSlide.getElementsByTagNameNS(OdfDocumentNamespace.PRESENTATION.getUri(), "notes");
+		if (noteNodes.getLength() > 0) {
+			PresentationNotesElement notePage = (PresentationNotesElement) noteNodes.item(0);
+			PresentationNotesElement cloneNotePage = (PresentationNotesElement) notePage.cloneNode(true);
+			newSlideElement.appendChild(cloneNotePage);
+		}
+		if (index < slideCount) {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(index);
+			contentRoot.insertBefore(newSlideElement, refSlide);
+		}
+		adjustNotePageNumber(index);
+		//in case that the appended new slide have the same name with the original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+		return OdfSlide.getInstance(newSlideElement);
+	}
+
+	//when insert a slide, the note page for this slide is also inserted.
+	//note page refer the slide index in order to show the corresponding slide notes view
+	//this function is used to adjust note page referred slide index since startIndex
+	//when the slide at startIndex has been delete or insert
+	private void adjustNotePageNumber(int startIndex) {
+		try {
+			OfficePresentationElement contentRoot = getContentRoot();
+			NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+			for (int i = startIndex; i < getSlideCount(); i++) {
+				DrawPageElement page = (DrawPageElement) slideList.item(i);
+				NodeList noteNodes = page.getElementsByTagNameNS(OdfDocumentNamespace.PRESENTATION.getUri(), "notes");
+				if (noteNodes.getLength() > 0) {
+					PresentationNotesElement notePage = (PresentationNotesElement) noteNodes.item(0);
+					NodeList thumbnailList = notePage.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page-thumbnail");
+					if (thumbnailList.getLength() > 0) {
+						DrawPageThumbnailElement thumbnail = (DrawPageThumbnailElement) thumbnailList.item(0);
+						thumbnail.setDrawPageNumberAttribute(i + 1);
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	//covered element
+	//<presentation:notes>, <draw:page-thumbnail>, <draw:frame>
+	//<style:presentation-page-layout>
+	private void setSlideLayout(DrawPageElement page,
+			OdfSlide.SlideLayout slideLayout) {
+		if (slideLayout == null) {
+			slideLayout = OdfSlide.SlideLayout.BLANK;
+		}
+		OdfOfficeStyles styles = getOrCreateDocumentStyles();
+		String layoutName;
+
+		if (slideLayout.toString().equals(OdfSlide.SlideLayout.TITLE_ONLY.toString())) {
+			layoutName = "AL1T" + makeUniqueName();
+			try {
+				StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+				layout.newPresentationPlaceholderElement("title", "2.058cm", "1.743cm", "23.91cm", "3.507cm");
+			} catch (Exception e1) {
+				Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e1);
+			}
+			page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+			DrawFrameElement frame1 = page.newDrawFrameElement();
+			frame1.setProperty(StyleGraphicPropertiesElement.StyleShadow, "true");
+			frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+			frame1.setDrawLayerAttribute("layout");
+			frame1.setSvgHeightAttribute("3.006cm");
+			frame1.setSvgWidthAttribute("24.299cm");
+			frame1.setSvgXAttribute("1.35cm");
+			frame1.setSvgYAttribute("0.717cm");
+			frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+			frame1.setPresentationPlaceholderAttribute(true);
+			frame1.newDrawTextBoxElement();
+		} else if (slideLayout.toString().equals(OdfSlide.SlideLayout.TITLE_OUTLINE.toString())) {
+			layoutName = makeUniqueName();
+			try {
+				styles = super.getStylesDom().getOfficeStyles();
+				if (styles == null) {
+					styles = super.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+				}
+				StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+				layout.newPresentationPlaceholderElement("title", "2.058cm", "1.743cm", "23.91cm", "3.507cm");
+				layout.newPresentationPlaceholderElement("outline", "2.058cm", "1.743cm", "23.91cm", "3.507cm");
+
+			} catch (Exception e1) {
+				Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e1);
+			}
+			page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+
+			DrawFrameElement frame1 = page.newDrawFrameElement();
+			frame1.setProperty(StyleGraphicPropertiesElement.StyleShadow, "true");
+			frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+			frame1.setDrawLayerAttribute("layout");
+			frame1.setSvgHeightAttribute("3.006cm");
+			frame1.setSvgWidthAttribute("24.299cm");
+			frame1.setSvgXAttribute("1.35cm");
+			frame1.setSvgYAttribute("0.717cm");
+			frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+			frame1.setPresentationPlaceholderAttribute(true);
+			frame1.newDrawTextBoxElement();
+			DrawFrameElement frame2 = page.newDrawFrameElement();
+
+			frame2.setProperty(StyleGraphicPropertiesElement.FillColor, "#ffffff");
+			frame2.setProperty(StyleGraphicPropertiesElement.MinHeight, "13.114");
+			frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+
+			frame2.setDrawLayerAttribute("layout");
+			frame2.setSvgHeightAttribute("11.629cm");
+			frame2.setSvgWidthAttribute("24.199cm");
+			frame2.setSvgXAttribute("1.35cm");
+			frame2.setSvgYAttribute("4.337cm");
+			frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+			frame2.setPresentationPlaceholderAttribute(true);
+			frame2.newDrawTextBoxElement();
+		} else if (slideLayout.toString().equals(OdfSlide.SlideLayout.TITLE_PLUS_TEXT.toString())) {
+			layoutName = makeUniqueName();
+			try {
+				styles = super.getStylesDom().getOfficeStyles();
+				if (styles == null) {
+					styles = super.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+				}
+				StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+				layout.newPresentationPlaceholderElement("title", "2.058cm", "1.743cm", "23.91cm", "1.743cm");
+				layout.newPresentationPlaceholderElement("subtitle", "2.058cm", "5.838cm", "23.91cm", "13.23cm");
+
+			} catch (Exception e1) {
+				Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e1);
+			}
+			page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+			DrawFrameElement frame1 = page.newDrawFrameElement();
+			frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+			frame1.setDrawLayerAttribute("layout");
+			frame1.setSvgHeightAttribute("3.006cm");
+			frame1.setSvgWidthAttribute("24.299cm");
+			frame1.setSvgXAttribute("1.35cm");
+			frame1.setSvgYAttribute("0.717cm");
+			frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+			frame1.setPresentationPlaceholderAttribute(true);
+			frame1.newDrawTextBoxElement();
+			DrawFrameElement frame2 = page.newDrawFrameElement();
+			frame2.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame2.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+
+			frame2.setDrawLayerAttribute("layout");
+			frame2.setSvgHeightAttribute("11.88cm");
+			frame2.setSvgWidthAttribute("24.299cm");
+			frame2.setSvgXAttribute("1.35cm");
+			frame2.setSvgYAttribute("4.712cm");
+			frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.SUBTITLE.toString());
+			frame2.setPresentationPlaceholderAttribute(true);
+			frame2.newDrawTextBoxElement();
+
+		} else if (slideLayout.toString().equals(OdfSlide.SlideLayout.TITLE_PLUS_2_TEXT_BLOCK.toString())) {
+
+			layoutName = makeUniqueName();
+			try {
+				styles = super.getStylesDom().getOfficeStyles();
+				if (styles == null) {
+					styles = super.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+				}
+				StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+				layout.newPresentationPlaceholderElement("outline", "2.058cm", "1.743cm", "23.91cm", "1.743cm");
+				layout.newPresentationPlaceholderElement("outline", "1.35cm", "4.212cm", "11.857cm", "11.629cm");
+				layout.newPresentationPlaceholderElement("outline", "4.212cm", "13.8cm", "11.857cm", "11.629cm");
+
+			} catch (Exception e1) {
+				Logger.getLogger(OdfPresentationDocument.class.getName()).log(Level.SEVERE, null, e1);
+			}
+
+			DrawFrameElement frame1 = page.newDrawFrameElement();
+			frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+			frame1.setDrawLayerAttribute("layout");
+			frame1.setSvgHeightAttribute("3.006cm");
+			frame1.setSvgWidthAttribute("24.299cm");
+			frame1.setSvgXAttribute("1.35cm");
+			frame1.setSvgYAttribute("0.717cm");
+			frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+			frame1.setPresentationPlaceholderAttribute(true);
+			frame1.newDrawTextBoxElement();
+			DrawFrameElement frame2 = page.newDrawFrameElement();
+			frame2.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame2.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+
+			frame2.setDrawLayerAttribute("layout");
+			frame2.setSvgHeightAttribute("11.629cm");
+			frame2.setSvgWidthAttribute("11.857cm");
+			frame2.setSvgXAttribute("1.35cm");
+			frame2.setSvgYAttribute("4.212cm");
+			frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+			frame2.setPresentationPlaceholderAttribute(true);
+			frame2.newDrawTextBoxElement();
+			DrawFrameElement frame3 = page.newDrawFrameElement();
+			frame3.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+			frame3.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+			frame3.setPresentationStyleNameAttribute(frame3.getStyleName());
+
+			frame3.setDrawLayerAttribute("layout");
+			frame3.setSvgHeightAttribute("11.62cm");
+			frame3.setSvgWidthAttribute("11.857cm");
+			frame3.setSvgXAttribute("13.8cm");
+			frame3.setSvgYAttribute("4.212cm");
+			frame3.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+			frame3.setPresentationPlaceholderAttribute(true);
+			frame3.newDrawTextBoxElement();
+
+			page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfSpreadsheetDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfSpreadsheetDocument.java
new file mode 100644
index 0000000..e11f7c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfSpreadsheetDocument.java
@@ -0,0 +1,178 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.SAXException;
+
+/**
+ * This class represents an empty ODF spreadsheet document.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.SpreadsheetDocument} in Simple API.
+ */
+public class OdfSpreadsheetDocument extends OdfDocument {
+
+	private static final String EMPTY_SPREADSHEET_DOCUMENT_PATH = "/OdfSpreadsheetDocument.ods";
+	static final Resource EMPTY_SPREADSHEET_DOCUMENT_RESOURCE = new Resource(EMPTY_SPREADSHEET_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of OdfSpreadsheetDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		SPREADSHEET(OdfDocument.OdfMediaType.SPREADSHEET),
+		SPREADSHEET_TEMPLATE(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+		private final OdfDocument.OdfMediaType mMediaType;
+
+		OdfMediaType(OdfDocument.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfDocument.OdfMediaType getOdfMediaType(String mediaType) {
+			return OdfDocument.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty spreadsheet document.
+	 * @return ODF spreadsheet document based on a default template*
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfSpreadsheetDocument newSpreadsheetDocument() throws Exception {
+		return (OdfSpreadsheetDocument) OdfDocument.loadTemplate(EMPTY_SPREADSHEET_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.SPREADSHEET);
+	}
+
+	/**
+	 * Creates an empty spreadsheet template.
+	 * @return ODF spreadsheet template based on a default
+	 * @throws java.lang.Exception - if the template could not be created
+	 */
+	public static OdfSpreadsheetDocument newSpreadsheetTemplateDocument() throws Exception {
+		OdfSpreadsheetDocument doc = (OdfSpreadsheetDocument) OdfDocument.loadTemplate(EMPTY_SPREADSHEET_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+		doc.changeMode(OdfMediaType.SPREADSHEET_TEMPLATE);
+		return doc;
+	}
+
+	/** To avoid data duplication a new document is only created, if not already opened.
+	 * A document is cached by this constructor using the internalpath as key. */
+	protected OdfSpreadsheetDocument(OdfPackage pkg, String internalPath, OdfSpreadsheetDocument.OdfMediaType odfMediaType) throws SAXException {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Creates an OdfSpreadsheetDocument from the OpenDocument provided by a resource Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfSpreadsheetDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An advantage of caching is that there are no problems overwriting
+	 * an input file.</p>
+	 * 
+	 * <p>If the resource stream is not a ODF spreadsheet document, ClassCastException might be thrown.</p>
+	 *
+	 * @param inputStream - the InputStream of the ODF spreadsheet document.
+	 * @return the spreadsheet document created from the given InputStream
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfSpreadsheetDocument loadDocument(InputStream inputStream) throws Exception {
+        return (OdfSpreadsheetDocument) OdfDocument.loadDocument(inputStream);
+    }
+	
+	/**
+	 * Loads an OdfSpreadsheetDocument from the provided path.
+	 *
+	 * <p>OdfSpreadsheetDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfSpreadsheetDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF spreadsheet document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the spreadsheet document from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfSpreadsheetDocument loadDocument(String documentPath) throws Exception {
+		return (OdfSpreadsheetDocument)OdfDocument.loadDocument(documentPath);
+	}
+	
+	/**
+	 * Creates an OdfSpreadsheetDocument from the OpenDocument provided by a File.
+	 *
+	 * <p>OdfSpreadsheetDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfSpreadsheetDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF spreadsheet document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param file - a file representing the ODF spreadsheet document.
+	 * @return the spreadsheet document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfSpreadsheetDocument loadDocument(File file) throws Exception {
+		return (OdfSpreadsheetDocument)OdfDocument.loadDocument(file);
+	}
+	
+	/**
+	 * Get the content root of a spreadsheet document.
+	 *
+	 * @return content root, representing the office:spreadsheet tag
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeSpreadsheetElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeSpreadsheetElement.class);
+	}
+
+	/**
+	 * Changes the document to the given mediatype.
+	 * This method can only be used to convert a document to a related mediatype, e.g. template.
+	 *
+	 * @param mediaType the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfTextDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfTextDocument.java
new file mode 100644
index 0000000..664246f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/OdfTextDocument.java
@@ -0,0 +1,257 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+/**
+ * This class represents an empty ODF text document.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.TextDocument} in Simple API.
+ */
+public class OdfTextDocument extends OdfDocument {
+
+	private static final String EMPTY_TEXT_DOCUMENT_PATH = "/OdfTextDocument.odt";
+	static final Resource EMPTY_TEXT_DOCUMENT_RESOURCE = new Resource(EMPTY_TEXT_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of OdfSpreadsheetDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		TEXT(OdfDocument.OdfMediaType.TEXT),
+		TEXT_TEMPLATE(OdfDocument.OdfMediaType.TEXT_TEMPLATE),
+		TEXT_MASTER(OdfDocument.OdfMediaType.TEXT_MASTER),
+		TEXT_WEB(OdfDocument.OdfMediaType.TEXT_WEB);
+		private final OdfDocument.OdfMediaType mMediaType;
+
+		OdfMediaType(OdfDocument.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 *
+		 * @param mediaType string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and the suffix
+		 */
+		public static OdfDocument.OdfMediaType getOdfMediaType(String mediaType) {
+			return OdfDocument.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty text document.
+	 * @return ODF text document based on a default template
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfTextDocument newTextDocument() throws Exception {
+		return (OdfTextDocument) OdfDocument.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.TEXT);
+	}
+
+	/**
+	 * Creates an empty text document.
+	 * @return ODF text document based on a default template
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfTextDocument newTextDocument(OdfTextDocument.OdfMediaType mimeType) throws Exception {
+		return (OdfTextDocument) OdfDocument.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.TEXT);
+	}
+
+
+	/**
+	 * Creates an empty text template.
+	 * @return ODF text template based on a default
+	 * @throws java.lang.Exception - if the template could not be created
+	 */
+	public static OdfTextDocument newTextTemplateDocument() throws Exception {
+		return  (OdfTextDocument) OdfDocument.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.TEXT_TEMPLATE);
+	}
+
+	/**
+	 * Creates an empty text master document.
+	 * @return ODF text master based on a default
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfTextDocument newTextMasterDocument() throws Exception {
+		OdfTextDocument doc = (OdfTextDocument) OdfDocument.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.TEXT_MASTER);
+		doc.changeMode(OdfMediaType.TEXT_MASTER);
+		return doc;
+	}
+
+	/**
+	 * Creates an empty text web.
+	 * @return ODF text web based on a default
+	 * @throws java.lang.Exception - if the document could not be created
+	 */
+	public static OdfTextDocument newTextWebDocument() throws Exception {
+		OdfTextDocument doc = (OdfTextDocument) OdfDocument.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, OdfDocument.OdfMediaType.TEXT_WEB);
+		doc.changeMode(OdfMediaType.TEXT_WEB);
+		return doc;
+	}
+
+	/**
+	 * Creates an OdfTextDocument from the OpenDocument provided by a resource Stream.
+	 *
+	 * <p>Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by OdfTextDocument, the InputStream is cached. This usually
+	 * takes more time compared to the other createInternalDocument methods.
+	 * An advantage of caching is that there are no problems overwriting
+	 * an input file.</p>
+	 * 
+	 * <p>If the resource stream is not a ODF text document, ClassCastException might be thrown.</p>
+	 *
+	 * @param inputStream - the InputStream of the ODF text document.
+	 * @return the text document created from the given InputStream
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfTextDocument loadDocument(InputStream inputStream) throws Exception {
+        return (OdfTextDocument) OdfDocument.loadDocument(inputStream);
+    }
+	
+	/**
+	 * Loads an OdfTextDocument from the provided path.
+	 *
+	 * <p>OdfTextDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfTextDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF text document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the text document from the given path
+	 *		  or NULL if the media type is not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfTextDocument loadDocument(String documentPath) throws Exception {
+		return (OdfTextDocument)OdfDocument.loadDocument(documentPath);
+	}
+	
+	/**
+	 * Creates an OdfTextDocument from the OpenDocument provided by a File.
+	 *
+	 * <p>OdfTextDocument relies on the file being available for read access over
+	 * the whole lifecycle of OdfTextDocument.</p>
+	 *
+	 * <p>If the resource stream is not a ODF text document, ClassCastException might be thrown.</p>
+	 * 
+	 * @param file - a file representing the ODF text document.
+	 * @return the text document created from the given File
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfTextDocument loadDocument(File file) throws Exception {
+		return (OdfTextDocument)OdfDocument.loadDocument(file);
+	}
+	
+	/** To avoid data duplication a new document is only created, if not already opened.
+	 * A document is cached by this constructor using the internalpath as key. */
+	protected OdfTextDocument(OdfPackage pkg, String internalPath, OdfTextDocument.OdfMediaType odfMediaType) throws SAXException {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Get the content root of a text document. Start here to get or create new
+	 * elements of a text document like paragraphs, headings, tables or lists.
+	 *
+	 * @return content root, representing the office:text tag
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeTextElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeTextElement.class);
+	}
+	/**
+	 * Creates a new paragraph and append text
+	 *
+	 * @param text
+	 * @return the new paragraph
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	public OdfTextParagraph newParagraph(String text) throws Exception {
+		OdfTextParagraph para = newParagraph();
+		para.addContent(text);
+		return para;
+	}
+
+	/**
+	 * Creates a new paragraph
+	 *
+	 * @return The new paragraph
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	public OdfTextParagraph newParagraph() throws Exception {
+		OfficeTextElement odfText = getContentRoot();
+		return (OdfTextParagraph) odfText.newTextPElement();
+	}
+
+	/**
+	 * Append text to the end of a text document.
+	 * If there is no paragraph at the end of a document, a new one will be created.
+	 *
+	 * @param text initial text for the paragraph.
+	 * @return The paragraph at the end of the text document, where the text has been added to.
+	 * @throws Exception if the file DOM could not be created.
+	 */
+	public OdfTextParagraph addText(String text) throws Exception {
+		OfficeTextElement odfText = getContentRoot();
+		Node n = odfText.getLastChild();
+		OdfTextParagraph para;
+		if (OdfTextParagraph.class.isInstance(n)) {
+			para = (OdfTextParagraph) n;
+		} else {
+			para = newParagraph();
+		}
+		para.addContent(text);
+		return para;
+	}
+
+	/**
+	 * Changes the document to the given mediatype.
+	 * This method can only be used to convert a document to a related mediatype, e.g. template.
+	 *
+	 * @param mediaType the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/presentation/OdfPresentationNotes.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/presentation/OdfPresentationNotes.java
new file mode 100644
index 0000000..1046547
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/presentation/OdfPresentationNotes.java
@@ -0,0 +1,92 @@
+/************************************************************************
+ *
+ * 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.presentation;
+
+import java.util.Hashtable;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawTextBoxElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.w3c.dom.NodeList;
+
+/**
+ * Convenient functionality for the parent ODF OpenDocument element
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.presentation.Notes} in Simple API.
+ */
+public class OdfPresentationNotes
+{
+	PresentationNotesElement maNoteElement;
+	private static Hashtable<PresentationNotesElement, OdfPresentationNotes> maNotesRepository = 
+		new Hashtable<PresentationNotesElement, OdfPresentationNotes>();	
+	
+	private OdfPresentationNotes( PresentationNotesElement noteElement )
+	{
+		maNoteElement = noteElement;
+	}
+	
+	/**
+	 * Return an instance of <code>PresentationNotesElement</code> which represents presentation notes page feature.
+	 * 
+	 * @return an instance of <code>PresentationNotesElement</code>
+	 */
+	public PresentationNotesElement getOdfElement()
+	{
+		return maNoteElement;
+	}
+	/**
+	 * Get a presentation notes page instance by an instance of <code>PresentationNotesElement</code>.
+	 * 
+	 * @param noteElement	an instance of <code>PresentationNotesElement</code>
+	 * @return an instance of <code>OdfPresentationNotes</code> that can represent <code>PresentationNotesElement</code>
+	 */
+	public static OdfPresentationNotes getInstance(PresentationNotesElement noteElement)
+	{
+		if (maNotesRepository.containsKey(noteElement))
+			return maNotesRepository.get(noteElement);
+		else {
+			OdfPresentationNotes newNotes = new OdfPresentationNotes(noteElement);
+			maNotesRepository.put(noteElement, newNotes);
+			return newNotes;
+		}	
+	}
+	
+	/**
+	 * insert some text to the notes page
+	 * @param text	the text that need to insert in the notes page
+	 */
+	public void addText(String text){
+		NodeList frameList = maNoteElement.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "frame");
+		if(frameList.getLength() > 0){
+			DrawFrameElement frame = (DrawFrameElement)frameList.item(0);
+			NodeList textBoxList = frame.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "text-box");
+			if(textBoxList.getLength() > 0){
+				DrawTextBoxElement textBox = (DrawTextBoxElement)textBoxList.item(0);
+				TextPElement newPara = textBox.newTextPElement();
+				newPara.setTextContent(text);
+			}
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/presentation/OdfSlide.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/presentation/OdfSlide.java
new file mode 100644
index 0000000..9c95b80
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/presentation/OdfSlide.java
@@ -0,0 +1,230 @@
+/************************************************************************
+ *
+ * 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.presentation;
+
+import java.util.Hashtable;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.w3c.dom.NodeList;
+
+/**
+ * <code>OdfSlide</code> represents the presentation slide feature of the ODF document.
+ * <code>OdfSlide</code> provides methods to get the slide index,get the content of the current slide, etc.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.presentation.Slide} in Simple API.
+ */
+public class OdfSlide {
+
+	DrawPageElement maSlideElement;
+	private static Hashtable<DrawPageElement, OdfSlide> maSlideRepository =
+			new Hashtable<DrawPageElement, OdfSlide>();
+
+	private OdfSlide(DrawPageElement pageElement) {
+		maSlideElement = pageElement;
+	}
+
+	/**
+	 * Get a presentation slide instance by an instance of <code>DrawPageElement</code>.
+	 * 
+	 * @param pageElement	an instance of <code>DrawPageElement</code>
+	 * @return an instance of <code>OdfSlide</code> that can represent <code>pageElement</code>
+	 */
+	public static OdfSlide getInstance(DrawPageElement pageElement) {
+		if (maSlideRepository.containsKey(pageElement)) {
+			return maSlideRepository.get(pageElement);
+		} else {
+			OdfSlide newSlide = new OdfSlide(pageElement);
+			maSlideRepository.put(pageElement, newSlide);
+			return newSlide;
+		}
+	}
+
+	/**
+	 * Return an instance of <code>DrawPageElement</code> which represents presentation slide feature.
+	 * 
+	 * @return an instance of <code>DrawPageElement</code>
+	 */
+	public DrawPageElement getOdfElement() {
+		return maSlideElement;
+	}
+
+	/**
+	 * Get the current slide index in the owner document.
+	 * @return the slide index in the owner document
+	 * <p>
+	 * -1, if the odf element which can represent this slide is not in the document DOM tree
+	 */
+	public int getSlideIndex() {
+		OdfFileDom contentDom = (OdfFileDom) maSlideElement.getOwnerDocument();
+		NodeList slideNodes = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideEle = (DrawPageElement) slideNodes.item(i);
+			if (slideEle == maSlideElement)//should not equals here, see OdfElement.equals(Object obj)
+			{
+				return i;
+			}
+		}
+		return -1;
+	}
+
+	/**
+	 * Get the current slide name.
+	 * <p>
+	 * If the "draw:name" attribute is not present there,
+	 * create an unique name for this slide
+	 * @return the name of the current slide
+	 */
+	public String getSlideName() {
+		String slideName = maSlideElement.getDrawNameAttribute();
+		if (slideName == null) {
+			slideName = makeUniqueSlideName();
+			maSlideElement.setDrawNameAttribute(slideName);
+		}
+		return slideName;
+	}
+
+	/**
+	 * Set the current slide name. 
+	 * <p>
+	 * It must be unique slide name in the current presentation.
+	 * If not, an IllegalArgumentException will be thrown.
+	 * If the given name is null,  an IllegalArgumentException will also be thrown.
+	 * @param name	the new name of the current slide
+	 * @throws IllegalArgumentException if the given name is null or it is not unique in the current presentation.
+	 */
+	public void setSlideName(String name) {
+		if (name == null) {
+			throw new IllegalArgumentException("slide name is null is not accepted in the presentation document");
+		}
+		//check if name is unique in this presentation
+		OdfFileDom contentDom = (OdfFileDom) maSlideElement.getOwnerDocument();
+		NodeList slideNodes = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideEle = (DrawPageElement) slideNodes.item(i);
+			OdfSlide slide = OdfSlide.getInstance(slideEle);
+			String slideName = slide.getSlideName();
+			if (slideName.equals(name)) {
+				throw new IllegalArgumentException("the given slide name is already exist in the current presentation document");
+			}
+		}
+		maSlideElement.setDrawNameAttribute(name);
+	}
+
+	/**
+	 * Get the Notes page of this slide
+	 * @return the instance of <code>OdfPresentationNotes</code> which represent the notes page of the current slide
+	 */
+	public OdfPresentationNotes getNotesPage() {
+		NodeList notesList = maSlideElement.getElementsByTagNameNS(OdfDocumentNamespace.PRESENTATION.getUri(), "notes");
+		if (notesList.getLength() > 0) {
+			PresentationNotesElement noteEle = (PresentationNotesElement) notesList.item(0);
+			return OdfPresentationNotes.getInstance(noteEle);
+
+		}
+		return null;
+	}
+
+	private String makeUniqueSlideName() {
+		int index = getSlideIndex();
+		String slideName = "page" + (index + 1) + "-" + String.format("a%06x", (int) (Math.random() * 0xffffff));
+		return slideName;
+	}
+
+	/** 
+	 * A slide layout is a slide with some predefine placeholder.
+	 *
+	 * we define some template layout as below:
+	 *
+	 * "blank" template is a slide without any filled element,
+	 *
+	 * "title_only" template is a slide with a title,
+	 *
+	 * "title_outline" template is a slide with a title and an outline block,
+	 *
+	 * "title_text" template is a slide with a title and a text block,
+	 *
+	 * "title_two_text_block" template is a slide with a title two text blocks.
+	 */
+	public enum SlideLayout {
+
+		/**
+		 * Blank,  a blank presentation
+		 */
+		BLANK("blank"),
+		/**
+		 * Title_only, the presentation with title only
+		 */
+		TITLE_ONLY("title_only"),
+		/**
+		 * Title_outline, the presentation with outline
+		 */
+		TITLE_OUTLINE("title_outline"),
+		/**
+		 * Title_text, the presentation with title and one text block
+		 */
+		TITLE_PLUS_TEXT("title_text"),
+		/**
+		 * title_two_text_block, the presentation with title and two text blocks
+		 */
+		TITLE_PLUS_2_TEXT_BLOCK("title_two_text_block");
+		private String mValue;
+
+		SlideLayout(String aValue) {
+			mValue = aValue;
+		}
+
+		/**
+		 * Return the slide template type value.
+		 * @return   the template type value
+		 */
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		/**
+		 * Return the name of the template slide type.
+		 * @param aEnum    a <code>SlideLayout</code>
+		 * @return         the name of slide template type
+		 */
+		public static String toString(SlideLayout aEnum) {
+			return aEnum.toString();
+		}
+
+		/**
+		 * Return a template slide type.
+		 * @param aString   the name of the slide template type
+		 * @return       a <code>SlideLayout</code>
+		 */
+		public static SlideLayout enumValueOf(String aString) {
+			for (SlideLayout aIter : values()) {
+				if (aString.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return null;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/DomNodeList.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/DomNodeList.java
new file mode 100644
index 0000000..917ded8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/DomNodeList.java
@@ -0,0 +1,47 @@
+/************************************************************************
+ *
+ * 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.table;
+
+import java.util.AbstractList;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+class DomNodeList extends AbstractList<Node> {
+    
+    private NodeList m_nodeList;
+    
+    /** Creates a new instance of NodeList */
+    public DomNodeList(NodeList list) {
+        m_nodeList = list;
+    }
+
+    @Override
+	public int size() {
+        return m_nodeList.getLength();
+    }
+
+    @Override
+	public Node get(int index) {
+        return m_nodeList.item(index);
+    }    
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTable.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTable.java
new file mode 100644
index 0000000..058bb0c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTable.java
@@ -0,0 +1,2397 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfDocument.OdfMediaType;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAlignAttribute;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableProperties;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfPackageDocument;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * OdfTable represents the table feature in ODF spreadsheet and text documents.
+ * <p>
+ * OdfTable provides methods to get/add/delete/modify table column/row/cell.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.table.Table} in Simple API.
+ */
+public class OdfTable {
+
+	TableTableElement mTableElement;
+	protected OdfDocument mDocument;
+	protected boolean mIsSpreadsheet;
+	protected boolean mIsCellStyleInheritance = true;
+	private static final int DEFAULT_ROW_COUNT = 2;
+	private static final int DEFAULT_COLUMN_COUNT = 5;
+	private static final double DEFAULT_TABLE_WIDTH = 6;
+	private static final int DEFAULT_REL_TABLE_WIDTH = 65535;
+	private static final String DEFAULT_TABLE_ALIGN = "margins";
+	// TODO: should save seperately for different dom tree
+	static IdentityHashMap<TableTableElement, OdfTable> mTableRepository =
+			new IdentityHashMap<TableTableElement, OdfTable>();
+	IdentityHashMap<TableTableCellElementBase, Vector<OdfTableCell>> mCellRepository =
+			new IdentityHashMap<TableTableCellElementBase, Vector<OdfTableCell>>();
+	IdentityHashMap<TableTableRowElement, Vector<OdfTableRow>> mRowRepository =
+			new IdentityHashMap<TableTableRowElement, Vector<OdfTableRow>>();
+	IdentityHashMap<TableTableColumnElement, Vector<OdfTableColumn>> mColumnRepository =
+			new IdentityHashMap<TableTableColumnElement, Vector<OdfTableColumn>>();
+
+	private OdfTable(TableTableElement table) {
+		mTableElement = table;
+		mDocument = (OdfDocument) ((OdfFileDom)(table.getOwnerDocument())).getDocument();
+		if (mDocument instanceof OdfSpreadsheetDocument)
+			mIsSpreadsheet = true;
+		else mIsSpreadsheet = false;
+	}
+
+	/**
+	 * Get a table feature instance by an instance of <code>TableTableElement</code>.
+	 * 
+	 * @param odfElement	an instance of <code>TableTableElement</code>
+	 * @return an instance of <code>OdfTable</code> that can represent <code>odfElement</code>
+	 */
+	public synchronized static OdfTable getInstance(TableTableElement odfElement) {
+		if (mTableRepository.containsKey(odfElement)) {
+			return mTableRepository.get(odfElement);
+		} else {
+			OdfTable newTable = new OdfTable(odfElement);
+			mTableRepository.put(odfElement, newTable);
+			return newTable;
+		}
+	}
+
+	OdfTableCell getCellInstance(TableTableCellElementBase cell, int repeatedColIndex, int repeatedRowIndex) {
+		if (mCellRepository.containsKey(cell)) {
+			Vector<OdfTableCell> list = mCellRepository.get(cell);
+			OdfTableCell fCell = null;
+			for (int i = 0; i < list.size(); i++) {
+				if (list.get(i).getOdfElement() == cell
+						&& list.get(i).mnRepeatedColIndex == repeatedColIndex
+						&& list.get(i).mnRepeatedRowIndex == repeatedRowIndex) {
+					fCell = list.get(i);
+					break;
+				}
+			}
+			if (fCell == null) {
+				fCell = new OdfTableCell(cell, repeatedColIndex, repeatedRowIndex);
+				list.add(fCell);
+			}
+			return fCell;
+		} else {
+			OdfTableCell newCell = new OdfTableCell(cell, repeatedColIndex, repeatedRowIndex);
+			Vector<OdfTableCell> list = new Vector<OdfTableCell>();
+			list.add(newCell);
+			mCellRepository.put(cell, list);
+			return newCell;
+		}
+	}
+
+	OdfTableRow getRowInstance(TableTableRowElement row, int repeatedRowIndex) {
+		if (mRowRepository.containsKey(row)) {
+			Vector<OdfTableRow> list = mRowRepository.get(row);
+			if (list.size() <= repeatedRowIndex) {
+				list.setSize(repeatedRowIndex + 1);
+			}
+			OdfTableRow fCell = list.get(repeatedRowIndex);
+			if (fCell == null) {
+				fCell = new OdfTableRow(row, repeatedRowIndex);
+				list.set(repeatedRowIndex, fCell);
+			}
+			return fCell;
+		} else {
+			OdfTableRow newCell = new OdfTableRow(row, repeatedRowIndex);
+			int size = (repeatedRowIndex > 7) ? (repeatedRowIndex + 1) : 8;
+			Vector<OdfTableRow> list = new Vector<OdfTableRow>(size);
+			list.setSize(repeatedRowIndex + 1);
+			list.set(repeatedRowIndex, newCell);
+			mRowRepository.put(row, list);
+			return newCell;
+		}
+	}
+
+	OdfTableColumn getColumnInstance(TableTableColumnElement col, int repeatedColIndex) {
+		if (mColumnRepository.containsKey(col)) {
+			Vector<OdfTableColumn> list = mColumnRepository.get(col);
+			if (list.size() <= repeatedColIndex) {
+				list.setSize(repeatedColIndex + 1);
+			}
+			OdfTableColumn fClm = list.get(repeatedColIndex);
+			if (fClm == null) {
+				fClm = new OdfTableColumn(col, repeatedColIndex);
+				list.set(repeatedColIndex, fClm);
+			}
+			return fClm;
+		} else {
+			OdfTableColumn newCell = new OdfTableColumn(col, repeatedColIndex);
+			int size = (repeatedColIndex > 7) ? (repeatedColIndex + 1) : 8;
+			Vector<OdfTableColumn> list = new Vector<OdfTableColumn>(size);
+			list.setSize(repeatedColIndex + 1);
+			list.set(repeatedColIndex, newCell);
+			mColumnRepository.put(col, list);
+			return newCell;
+		}
+	}
+
+	TableTableColumnElement getColumnElementByIndex(int colIndex) {
+		int result = 0;
+		TableTableColumnElement columnEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableColumnElement) {
+						columnEle = (TableTableColumnElement) m;
+						if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+							result += 1;
+						} else {
+							result += columnEle.getTableNumberColumnsRepeatedAttribute();
+						}
+					}
+					if (result > colIndex) {
+						break;
+					}
+				}
+			}
+			if (n instanceof TableTableColumnElement) {
+				columnEle = (TableTableColumnElement) n;
+				if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+					result += 1;
+				} else {
+					result += columnEle.getTableNumberColumnsRepeatedAttribute();
+				}
+			}
+			if (result > colIndex) {
+				break;
+			}
+		}
+		return columnEle;
+	}
+
+	TableTableRowElement getRowElementByIndex(int rowIndex) {
+		int result = 0;
+		TableTableRowElement rowEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableRowElement) {
+						rowEle = (TableTableRowElement) m;
+						result += rowEle.getTableNumberRowsRepeatedAttribute();
+					}
+					if (result > rowIndex) {
+						break;
+					}
+				}
+			}
+			if (n instanceof TableTableRowElement) {
+				rowEle = (TableTableRowElement) n;
+				result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+			}
+			if (result > rowIndex) {
+				break;
+			}
+		}
+		return rowEle;
+	}
+
+	/**
+	 * Get the width of the table (in Millimeter).
+	 * <p>
+	 * Throw an UnsupportedOperationException if the 
+	 * table is one sheet of a spreadsheet document.
+	 * because the sheet doesn't have an attribute of table width.
+	 * 
+	 * @return the width of the current table (in Millimeter).
+	 * <p>
+	 * An UnsupportedOperationException will be thrown if the table is in the spreadsheet document.
+	 */
+	public long getWidth() {	
+		if (!mIsSpreadsheet) {
+			String sWidth = mTableElement.getProperty(OdfTableProperties.Width);
+			if(sWidth == null){
+				int colCount = getColumnCount();
+				int tableWidth = 0;
+				for(int i = 0; i<colCount;i++){
+					OdfTableColumn col = getColumnByIndex(i);
+					tableWidth += col.getWidth();
+				}
+				return tableWidth;
+			}else
+				return PositiveLength.parseLong(sWidth, Unit.MILLIMETER);
+		} else {
+			throw new UnsupportedOperationException();
+		}
+	}
+
+	/**
+	 * Set the width of the table (in Millimeter).
+	 * <p>
+	 * Throw an UnsupportedOperationException if the 
+	 * table is part of a spreadsheet document that does not allow to change the table size,
+	 * because spreadsheet is not allow user to set the table size.
+	 * 
+	 * @param width	the width that need to set (in Millimeter).
+	 * <p>
+	 * An UnsupportedOperationException will be thrown if the table is in the spreadsheet document.
+	 */
+	public void setWidth(long width) {
+		if (!mIsSpreadsheet) {
+			String sWidthMM = String.valueOf(width) + Unit.MILLIMETER.abbr();
+			String sWidthIN = PositiveLength.mapToUnit(sWidthMM, Unit.INCH);
+			mTableElement.setProperty(OdfTableProperties.Width, sWidthIN);
+			//if the width is changed, we should also change the table:align properties if it is "margins"
+			//otherwise the width seems not changed
+			String alineStyle = mTableElement.getProperty(StyleTablePropertiesElement.Align);
+			if (TableAlignAttribute.Value.MARGINS.toString().equals(alineStyle)) {
+				mTableElement.setProperty(StyleTablePropertiesElement.Align, TableAlignAttribute.Value.LEFT.toString());
+			}
+		} else {
+			throw new UnsupportedOperationException();
+		}
+	}
+
+	static void setLeftTopBorderStyleProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.BorderLeft, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderRight, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderTop, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderBottom, "0.0007in solid #000000");
+	}
+
+	static void setRightTopBorderStyleProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.Border, "0.0007in solid #000000");
+	}
+
+	static void setLeftBottomBorderStylesProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.BorderLeft, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderRight, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderTop, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderBottom, "0.0007in solid #000000");
+
+	}
+
+	static void setRightBottomBorderStylesProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.Border, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderTop, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderBottom, "0.0007in solid #000000");
+	}
+
+	private static TableTableElement createTable(OdfElement parent, int numRows, int numCols, int headerRowNumber, int headerColumnNumber) throws Exception {
+		
+		
+		// check arguments
+		if (numRows < 1 || numCols < 1 || headerRowNumber < 0
+				|| headerColumnNumber < 0 || headerRowNumber > numRows
+				|| headerColumnNumber > numCols) {
+			throw new IllegalArgumentException("Can not create table with the given parameters:\n"
+					+ "Rows " + numRows + ", Columns " + numCols + ", HeaderRows " + headerRowNumber + ", HeaderColumns " + headerColumnNumber);
+		}
+		OdfFileDom dom = (OdfFileDom) parent.getOwnerDocument();
+		OdfOfficeAutomaticStyles styles = null;
+		if(dom instanceof OdfContentDom){
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		}else if(dom instanceof OdfStylesDom){
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		
+		//1. create table element
+		TableTableElement newTEle = (TableTableElement) OdfXMLFactory.newOdfElement(dom,
+				OdfName.newName(OdfDocumentNamespace.TABLE, "table"));
+		String tablename = getUniqueTableName(parent);
+		newTEle.setTableNameAttribute(tablename);
+		//create style
+		OdfStyle tableStyle = styles.newStyle(OdfStyleFamily.Table);
+		String stylename = tableStyle.getStyleNameAttribute();
+		tableStyle.setProperty(StyleTablePropertiesElement.Width, DEFAULT_TABLE_WIDTH + "in");
+		tableStyle.setProperty(StyleTablePropertiesElement.Align, DEFAULT_TABLE_ALIGN);
+		newTEle.setStyleName(stylename);
+
+		// 2. create column elements
+		// 2.0 create column style
+		OdfStyle columnStyle = styles.newStyle(OdfStyleFamily.TableColumn);
+		String columnStylename = columnStyle.getStyleNameAttribute();
+		columnStyle.setProperty(StyleTableColumnPropertiesElement.ColumnWidth,
+				new DecimalFormat("000.0000").format(DEFAULT_TABLE_WIDTH / numCols) + "in");
+		columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, Math.round(DEFAULT_REL_TABLE_WIDTH / numCols) + "*");
+		// 2.1 create header column elements
+		if (headerColumnNumber > 0) {
+			TableTableHeaderColumnsElement headercolumns = (TableTableHeaderColumnsElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-columns"));
+			TableTableColumnElement headercolumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
+			headercolumn.setTableNumberColumnsRepeatedAttribute(headerColumnNumber);
+			headercolumns.appendChild(headercolumn);
+			newTEle.appendChild(headercolumns);
+			headercolumn.setStyleName(columnStylename);
+		}
+		//2.2 create common column elements
+		TableTableColumnElement columns = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom,
+				OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
+		columns.setTableNumberColumnsRepeatedAttribute(numCols - headerColumnNumber);
+		columns.setStyleName(columnStylename);
+		newTEle.appendChild(columns);
+
+		//3. create row elements
+		//3.0 create 4 kinds of styles
+		OdfStyle lefttopStyle=null,leftbottomStyle=null,righttopStyle=null,rightbottomStyle=null;
+
+		OdfPackageDocument document = dom.getDocument();
+		if (!document.getMediaTypeString().equals(OdfMediaType.SPREADSHEET.getMediaTypeString())) {
+			lefttopStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setLeftTopBorderStyleProperties(lefttopStyle);
+	
+			leftbottomStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setLeftBottomBorderStylesProperties(leftbottomStyle);
+	
+			righttopStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setRightTopBorderStyleProperties(righttopStyle);
+	
+			rightbottomStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setRightBottomBorderStylesProperties(rightbottomStyle);
+		}
+
+		//3.1 create header row elements
+		if( headerRowNumber > 0)
+		{
+			TableTableHeaderRowsElement headerrows = (TableTableHeaderRowsElement) OdfXMLFactory.newOdfElement(dom,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-rows"));
+			for (int i = 0; i < headerRowNumber; i++) {
+				TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement(dom,
+						OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
+				for (int j = 0; j < numCols; j++) {
+					TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom,
+							OdfName.newName(OdfDocumentNamespace.TABLE, "table-cell"));
+					TextPElement aParagraph = (TextPElement) OdfXMLFactory.newOdfElement(dom,
+							OdfName.newName(OdfDocumentNamespace.TEXT, "p"));
+					aCell.appendChild(aParagraph);
+					if (!(document instanceof OdfSpreadsheetDocument)) {
+						if ((j + 1 == numCols) && (i == 0)) {
+							aCell.setStyleName(righttopStyle.getStyleNameAttribute());
+						} else if (i == 0) {
+							aCell.setStyleName(lefttopStyle.getStyleNameAttribute());
+						} else if ((j + 1 == numCols) && (i > 0)) {
+							aCell.setStyleName(rightbottomStyle.getStyleNameAttribute());
+						} else {
+							aCell.setStyleName(leftbottomStyle.getStyleNameAttribute());
+						}
+					}
+					aRow.appendChild(aCell);
+				}
+				headerrows.appendChild(aRow);
+			}
+			newTEle.appendChild(headerrows);
+		}
+
+		//3.2 create common row elements
+		for (int i = headerRowNumber; i < numRows; i++) {
+			TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement(dom,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
+			for (int j = 0; j < numCols; j++) {
+				TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom,
+						OdfName.newName(OdfDocumentNamespace.TABLE, "table-cell"));
+				TextPElement aParagraph = (TextPElement) OdfXMLFactory.newOdfElement(dom,
+						OdfName.newName(OdfDocumentNamespace.TEXT, "p"));
+				aCell.appendChild(aParagraph);
+				if (!(document instanceof OdfSpreadsheetDocument)) {
+					if ((j + 1 == numCols) && (i == 0)) {
+						aCell.setStyleName(righttopStyle.getStyleNameAttribute());
+					} else if (i == 0) {
+						aCell.setStyleName(lefttopStyle.getStyleNameAttribute());
+					} else if ((j + 1 == numCols) && (i > 0)) {
+						aCell.setStyleName(rightbottomStyle.getStyleNameAttribute());
+					} else {
+						aCell.setStyleName(leftbottomStyle.getStyleNameAttribute());
+					}
+				}
+				aRow.appendChild(aCell);
+			}
+			newTEle.appendChild(aRow);
+		}
+
+		return newTEle;
+	}
+
+
+//	/**
+//	 * The given table will be appended at the end of the given document.
+//	 *
+//	 * @param document	the ODF document that contains this feature
+//	 * @return the created <code>OdfTable</code> feature instance
+//	 */
+//	public static void appendTable(TableTableElement table, OdfDocument document) {
+//		try {
+//			OdfElement contentRoot = document.getContentRoot();
+//			contentRoot.appendChild(table);
+//		} catch (DOMException e) {
+//			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+//		} catch (Exception e) {
+//			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+//		}
+//	}
+
+
+	/**
+	 * Construct the <code>OdfTable</code> feature.
+	 * The default column count is 5.
+	 * The default row count is 2.
+	 * <p>
+	 * The table will be inserted at the end of the document the parent element belongs to.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 * 
+	 * @param tableParent the ODF element the new table will be appended to
+	 * @return the created <code>OdfTable</code> feature instance
+	 */
+	public static OdfTable newTable(OdfElement tableParent) {
+		try {
+			TableTableElement newTEle = createTable(tableParent, DEFAULT_ROW_COUNT, DEFAULT_COLUMN_COUNT, 0, 0);
+			tableParent.appendChild(newTEle);
+			return OdfTable.getInstance(newTEle);
+
+		} catch (DOMException e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		} catch (Exception e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+
+		return null;
+	}
+
+	/**
+	 * Construct the <code>OdfTable</code> feature.
+	 * The default column count is 5.
+	 * The default row count is 2.
+	 * <p>
+	 * The table will be inserted at the end of the given document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+ 	 * @param document	the ODF document that contains this feature
+	 * @return the created <code>OdfTable</code> feature instance
+	 */
+	public static OdfTable newTable(OdfDocument document) {
+		OdfTable table = null;
+		try {
+			table = newTable(document.getContentRoot());
+		} catch (Exception ex) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return table;
+	}
+
+	private static String getUniqueTableName(OdfElement tableParent) {
+		OdfFileDom dom = (OdfFileDom) tableParent.getOwnerDocument();
+		List<TableTableElement> tableList = ((OdfSchemaDocument) dom.getDocument()).getTables();
+		boolean notUnique = true;
+
+		String tablename = "Table" + (tableList.size() + 1);
+
+		while (notUnique) {
+			notUnique = false;
+			for (int i = 0; i < tableList.size(); i++) {
+				if (tableList.get(i).getTableNameAttribute().equalsIgnoreCase(tablename)) {
+					notUnique = true;
+					break;
+				}
+			}
+			if (notUnique) {
+				tablename = tablename + Math.round(Math.random() * 10);
+			}
+		}
+
+		return tablename;
+	}
+
+	/**
+	 * Construct the <code>OdfTable</code> feature
+	 * with a specified row number and column number.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 * 
+	 * @param tableParent	the ODF element the new table will be appended to
+	 * @param numRows	the row number
+	 * @param numCols	the column number
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfElement tableParent, int numRows, int numCols) {
+		try {
+			TableTableElement newTEle = createTable(tableParent, numRows, numCols, 0, 0);
+			tableParent.appendChild(newTEle);
+
+			return OdfTable.getInstance(newTEle);
+		
+		} catch (Exception e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+
+		return null;
+	}
+
+
+	/**
+	 * Construct the <code>OdfTable</code> feature
+	 * with a specified row number and column number.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 *
+	 * @param document	the ODF document that contains this feature
+	 * @param numRows	the row number
+	 * @param numCols	the column number
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfDocument document, int numRows, int numCols) {
+			OdfTable table = null;
+		try {
+			table = newTable(document.getContentRoot(), numRows, numCols);
+		} catch (Exception ex) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return table;
+	}
+
+	/**
+	 * Construct the <code>OdfTable</code> feature
+	 * with a specified row number, column number, header row number, header column number.
+	 * <p>
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 * 
+	 * @param tableParent the ODF element the new table will be appended to
+	 * @param numRows	the row number
+	 * @param numCols	the column number
+	 * @param headerRowNumber	the header row number
+	 * @param headerColumnNumber	the header column number
+	 * @return a new instance of <code>OdfTable</code>
+	 * */
+	public static OdfTable newTable(OdfElement tableParent, int numRows, int numCols, int headerRowNumber, int headerColumnNumber) {
+		try {
+			TableTableElement newTEle = createTable(tableParent, numRows, numCols, headerRowNumber, headerColumnNumber);
+			tableParent.appendChild(newTEle);
+
+			return OdfTable.getInstance(newTEle);
+
+		} catch (DOMException e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		} catch (Exception e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+
+		return null;
+	}
+
+	/**
+	 * Construct the OdfTable feature
+	 * with a specified 2 dimension array as the data of this table.
+	 * The value type of each cell is float.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 *
+	 * @param document	the ODF document that contains this feature
+	 * @param numRows	the row number
+	 * @param numCols	the column number
+	 * @param headerRowNumber	the header row number
+	 * @param headerColumnNumber	the header column number
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfDocument document, int numRows, int numCols, int headerRowNumber, int headerColumnNumber) {
+		OdfTable table = null;
+		try {
+			table = newTable(document.getContentRoot(), numRows, numCols, headerRowNumber, headerColumnNumber);
+		} catch (Exception ex) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return table;
+	}
+
+	/**
+	 * Construct the OdfTable feature
+	 * with a specified 2 dimension array as the data of this table.
+	 * The value type of each cell is float.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 * 
+	 * @param tableParent	the ODF document that contains this feature
+	 * @param rowLabel	set as the header row, it can be null if no header row needed
+	 * @param columnLabel	set as the header column, it can be null if no header column needed
+	 * @param data	the two dimension array of double as the data of this table
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfElement tableParent, String[] rowLabel, String[] columnLabel, double[][] data) {
+		int rowNumber = DEFAULT_ROW_COUNT;
+		int columnNumber = DEFAULT_COLUMN_COUNT;
+		if (data != null) {
+			rowNumber = data.length;
+			columnNumber = data[0].length;
+		}
+		int rowHeaders = 0, columnHeaders = 0;
+
+		if (rowLabel != null) {
+			rowHeaders = 1;
+		}
+		if (columnLabel != null) {
+			columnHeaders = 1;
+		}
+
+		try {
+			TableTableElement newTEle = createTable(tableParent, rowNumber + rowHeaders, columnNumber + columnHeaders, rowHeaders, columnHeaders);
+			tableParent.appendChild(newTEle);
+
+			OdfTable table = OdfTable.getInstance(newTEle);
+			List<OdfTableRow> rowList = table.getRowList();
+			for (int i = 0; i < rowNumber + rowHeaders; i++) {
+				OdfTableRow row = rowList.get(i);
+				for (int j = 0; j < columnNumber + columnHeaders; j++) {
+					if ((i == 0) && (j == 0)) {
+						continue;
+					}
+					OdfTableCell cell = row.getCellByIndex(j);
+					if (i == 0 && columnLabel != null) //first row, should fill column labels
+					{
+						if (j <= columnLabel.length) {
+							cell.setStringValue(columnLabel[j - 1]);
+						} else {
+							cell.setStringValue("");
+						}
+					} else if (j == 0 && rowLabel != null) //first column, should fill row labels
+					{
+						if (i <= rowLabel.length) {
+							cell.setStringValue(rowLabel[i - 1]);
+						} else {
+							cell.setStringValue("");
+						}
+					} else {//data
+						if ((data != null) && (i >= rowHeaders) && (j >= columnHeaders)) {
+							cell.setDoubleValue(data[i - rowHeaders][j - columnHeaders]);
+						}
+					}
+				}
+			}
+			return table;
+		} catch (DOMException e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		} catch (Exception e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		return null;
+	}
+
+
+	/**
+	 * Construct the OdfTable feature
+	 * with a specified 2 dimension array as the data of this table.
+	 * The value type of each cell is float.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 *
+	 * @param document	the ODF document that contains this feature
+	 * @param rowLabel	set as the header row, it can be null if no header row needed
+	 * @param columnLabel	set as the header column, it can be null if no header column needed
+	 * @param data	the two dimension array of double as the data of this table
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfDocument document, String[] rowLabel, String[] columnLabel, double[][] data) {
+		OdfTable table = null;
+		try {
+			table = newTable(document.getContentRoot(), rowLabel, columnLabel, data);
+		} catch (Exception ex) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return table;
+	}
+
+	/**
+	 * Construct the OdfTable feature
+	 * with a specified 2 dimension array as the data of this table.
+	 * The value type of each cell is string.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 * 
+	 * @param tableParent the ODF element the new table will be appended to
+	 * @param rowLabel	set as the header row, it can be null if no header row needed
+	 * @param columnLabel	set as the header column, it can be null if no header column needed
+	 * @param data	the two dimension array of string as the data of this table
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfElement tableParent, String[] rowLabel, String[] columnLabel, String[][] data) {
+		int rowNumber = DEFAULT_ROW_COUNT;
+		int columnNumber = DEFAULT_COLUMN_COUNT;
+		if (data != null) {
+			rowNumber = data.length;
+			columnNumber = data[0].length;
+		}
+		int rowHeaders = 0, columnHeaders = 0;
+
+		if (rowLabel != null) {
+			rowHeaders = 1;
+		}
+		if (columnLabel != null) {
+			columnHeaders = 1;
+		}
+
+		try {
+			TableTableElement newTEle = createTable(tableParent, rowNumber + rowHeaders, columnNumber + columnHeaders, rowHeaders, columnHeaders);
+			tableParent.appendChild(newTEle);
+
+			OdfTable table = OdfTable.getInstance(newTEle);
+			List<OdfTableRow> rowList = table.getRowList();
+			for (int i = 0; i < rowNumber + rowHeaders; i++) {
+				OdfTableRow row = rowList.get(i);
+				for (int j = 0; j < columnNumber + columnHeaders; j++) {
+					if ((i == 0) && (j == 0)) {
+						continue;
+					}
+					OdfTableCell cell = row.getCellByIndex(j);
+					if (i == 0 && columnLabel != null) //first row, should fill column labels
+					{
+						if (j <= columnLabel.length) {
+							cell.setStringValue(columnLabel[j - 1]);
+						} else {
+							cell.setStringValue("");
+						}
+					} else if (j == 0 && rowLabel != null) //first column, should fill row labels
+					{
+						if (i <= rowLabel.length) {
+							cell.setStringValue(rowLabel[i - 1]);
+						} else {
+							cell.setStringValue("");
+						}
+					} else {
+						if ((data != null) && (i >= rowHeaders) && (j >= columnHeaders)) {
+							cell.setStringValue(data[i - rowHeaders][j - columnHeaders]);
+						}
+					}
+				}
+			}
+
+			return table;
+
+		} catch (DOMException e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		} catch (Exception e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+
+		return null;
+	}
+
+	/**
+	 * Construct the OdfTable feature
+	 * with a specified 2 dimension array as the data of this table.
+	 * The value type of each cell is string.
+	 * <p>
+	 * The table will be inserted at the end of the document.
+	 * An unique table name will be given, you may set a custom table name using the <code>setTableName</code> method.
+	 * <p>
+	 * If the document is a text document, cell borders will be created by default.
+	 *
+	 * @param document	the ODF document that contains this feature
+	 * @param rowLabel	set as the header row, it can be null if no header row needed
+	 * @param columnLabel	set as the header column, it can be null if no header column needed
+	 * @param data	the two dimension array of string as the data of this table
+	 * @return a new instance of <code>OdfTable</code>
+	 */
+	public static OdfTable newTable(OdfDocument document, String[] rowLabel, String[] columnLabel, String[][] data) {
+
+		OdfTable table = null;
+		try {
+			table = newTable(document.getContentRoot(), rowLabel, columnLabel, data);
+		} catch (Exception ex) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return table;
+	}
+
+	/**
+	 * Get the row count of this table.
+	 * 
+	 * @return total count of rows
+	 */
+	public int getRowCount() {
+		int result = 0;
+
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				result += getHeaderRowCount((TableTableHeaderRowsElement) n);
+			}
+			if (n instanceof TableTableRowElement) {
+				result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Get the column count of this table.
+	 * 
+	 * @return total count of columns
+	 */
+	public int getColumnCount() {
+		int result = 0;
+
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				result += getHeaderColumnCount((TableTableHeaderColumnsElement) n);
+			}
+			if (n instanceof TableTableColumnElement) {
+				result += getColumnInstance((TableTableColumnElement) n, 0).getColumnsRepeatedNumber();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * This method is invoked by appendRow.
+	 * When a table has no row, the first row is a default row.
+	 */
+	private TableTableRowElement createDefaultRow(int columnCount) {
+		OdfFileDom dom = (OdfFileDom) mTableElement.getOwnerDocument();
+		//3. create row elements
+		//3.0 create 4 kinds of styles
+		OdfStyle lefttopStyle=null,righttopStyle=null;
+		
+		if (!mIsSpreadsheet) {
+			lefttopStyle = mTableElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableCell);
+			setLeftTopBorderStyleProperties(lefttopStyle);
+	
+			righttopStyle = mTableElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableCell);
+			setRightTopBorderStyleProperties(righttopStyle);
+		}
+
+		//3.1 create header row elements
+		TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement(dom,
+				OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
+		for (int j = 0; j < columnCount; j++) {
+			TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-cell"));
+			TextPElement aParagraph = (TextPElement) OdfXMLFactory.newOdfElement(dom,
+					OdfName.newName(OdfDocumentNamespace.TEXT, "p"));
+			aCell.appendChild(aParagraph);
+			if (!mIsSpreadsheet) {
+				if (j + 1 == columnCount) {
+					aCell.setStyleName(righttopStyle.getStyleNameAttribute());
+				} else {
+					aCell.setStyleName(lefttopStyle.getStyleNameAttribute());
+				}
+			}
+			aRow.appendChild(aCell);
+		}
+
+		return aRow;
+	}
+
+	/**
+	 * Append a row to the end of the table. The style of new row is same with
+	 * the last row in the table.
+	 * <p>
+	 * Since ODFDOM 8.5 automatic table expansion is supported. Whenever a cell
+	 * outside the current table is addressed the table is instantly expanded.
+	 * Method <code>getCellByPosition</code> can randomly access any cell, no
+	 * matter it in or out of the table original range.
+	 * 
+	 * @return a new appended row
+	 * @see #appendRows(int)
+	 * @see #getRowByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public OdfTableRow appendRow() {
+		int columnCount = getColumnCount();
+		List<OdfTableRow> rowList = getRowList();
+
+		if (rowList.size() == 0) //no row, create a default row
+		{
+			TableTableRowElement newRow = createDefaultRow(columnCount);
+			mTableElement.appendChild(newRow);
+
+			return getRowInstance(newRow, 0);
+		} else {
+			OdfTableRow refRow = rowList.get(rowList.size() - 1);
+			OdfTableRow newRow = insertRowBefore(refRow, null);
+			return newRow;
+		}
+	}
+
+	/**
+	 * Append a specific number of rows to the end of the table. The style of
+	 * new rows are same with the last row in the table. 
+	 * <p>
+	 * Since ODFDOM 8.5 automatic table expansion is supported. Whenever a cell
+	 * outside the current table is addressed the table is instantly expanded.
+	 * Method <code>getCellByPosition</code> can randomly access any cell, no
+	 * matter it in or out of the table original range.
+	 * 
+	 * @param rowCount  is the number of rows to be appended.
+	 * @return a list of new appended rows
+	 * @see #appendRow()
+	 * @see #getRowByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public List<OdfTableRow> appendRows(int rowCount) {
+		return appendRows(rowCount, false);
+	}
+
+	List<OdfTableRow> appendRows(int rowCount, boolean isCleanStyle) {
+		List<OdfTableRow> resultList = new ArrayList<OdfTableRow>();
+		if (rowCount <= 0) {
+			return resultList;
+		}
+		OdfTableRow firstRow = appendRow();
+		resultList.add(firstRow);
+		if (rowCount == 1) {
+			return resultList;
+		}
+		List<OdfTableRow> list = insertRowsBefore((getRowCount() - 1),
+				(rowCount - 1));
+		resultList.addAll(list);
+		if (isCleanStyle) {
+			// clean style name
+			for (OdfTableRow row : resultList) {
+				for (int i = 0; i < row.getCellCount(); i++) {
+					TableTableCellElement cellElement = (TableTableCellElement) (row
+							.getCellByIndex(i).mCellElement);
+					cellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+				}
+			}
+		}
+		return resultList;
+	}
+
+	/**
+	 * Append a column at the end of the table. The style of new column is
+	 * same with the last column in the table.
+	 * <p>
+	 * Since ODFDOM 8.5 automatic table expansion is supported. Whenever a cell
+	 * outside the current table is addressed the table is instantly expanded.
+	 * Method <code>getCellByPosition</code> can randomly access any cell, no
+	 * matter it in or out of the table original range.
+	 * 
+	 * @return a new appended column
+	 * @see #appendColumns(int)
+	 * @see #getColumnByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public OdfTableColumn appendColumn() {
+		List<OdfTableColumn> columnList = getColumnList();
+		int columnCount = columnList.size();
+
+		TableTableColumnElement newColumn;
+		OdfElement positonElement = getRowElementByIndex(0);
+		if (positonElement.getParentNode() instanceof TableTableHeaderRowsElement) {
+			positonElement = (OdfElement) positonElement.getParentNode();
+		}
+		
+		//Moved before column elements inserted
+		//insert cells firstly
+		//Or else, wrong column number will be gotten in updateCellRepository, which will cause a NPE.
+		//insertCellBefore()->splitRepeatedRows()->updateRowRepository()->updateCellRepository() 
+		List<OdfTableRow> rowList = getRowList();
+		for (int i = 0; i < rowList.size();) {
+			OdfTableRow row1 = rowList.get(i);
+			row1.insertCellBefore(row1.getCellByIndex(columnCount - 1), null);
+			i = i + row1.getRowsRepeatedNumber();
+		}		
+
+		//insert columns secondly
+		if (columnList.size() == 0) //no column, create a new column
+		{
+			OdfStyle columnStyle = mTableElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableColumn);
+			String columnStylename = columnStyle.getStyleNameAttribute();
+			columnStyle.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, DEFAULT_TABLE_WIDTH + "in");
+			columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, DEFAULT_REL_TABLE_WIDTH + "*");
+
+			newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement.getOwnerDocument(),
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
+			newColumn.setStyleName(columnStylename);
+			mTableElement.insertBefore(newColumn, positonElement);
+		} else { //has column, append a same column as the last one.
+			TableTableColumnElement refColumn = columnList.get(columnList.size() - 1).getOdfElement();
+			newColumn = (TableTableColumnElement) refColumn.cloneNode(true);
+			newColumn.setTableNumberColumnsRepeatedAttribute(1);//chagne to remove attribute
+			mTableElement.insertBefore(newColumn, positonElement);
+		}
+
+		return getColumnInstance(newColumn, 0);
+	}
+
+	/**
+	 * Append a specific number of columns to the right of the table. The style
+	 * of new columns are same with the rightmost column in the table. 
+	 * <p>
+	 * Since ODFDOM 8.5 automatic table expansion is supported. Whenever a cell
+	 * outside the current table is addressed the table is instantly expanded.
+	 * Method <code>getCellByPosition</code> can randomly access any cell, no
+	 * matter it in or out of the table original range.
+	 * 
+	 * @param columnCount is the number of columns to be appended.
+	 * @return a list of new appended columns
+	 * @see #appendColumn()
+	 * @see #getColumnByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public List<OdfTableColumn> appendColumns(int columnCount) {
+		return appendColumns(columnCount, false);
+	}
+
+	List<OdfTableColumn> appendColumns(int columnCount, boolean isCleanStyle) {
+		List<OdfTableColumn> resultList = new ArrayList<OdfTableColumn>();
+		if (columnCount <= 0) {
+			return resultList;
+		}
+		OdfTableColumn firstClm = appendColumn();
+		resultList.add(firstClm);
+		if (columnCount == 1) {
+			return resultList;
+		}
+		List<OdfTableColumn> list = insertColumnsBefore((getColumnCount() - 1), (columnCount - 1));
+		resultList.addAll(list);
+		// clean style name
+		if(isCleanStyle){
+			for (OdfTableColumn column : resultList) {
+				for (int i = 0; i < column.getCellCount(); i++) {
+					TableTableCellElement cellElement = (TableTableCellElement) (column
+							.getCellByIndex(i).mCellElement);
+					cellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+				}
+			}
+		}		
+		return resultList;
+	}
+
+	/**
+	 * This method is to insert a numbers of row  
+	 */
+	private List<OdfTableRow> insertMultipleRowBefore(OdfTableRow refRow, OdfTableRow positionRow, int count) {
+		List<OdfTableRow> resultList = new ArrayList<OdfTableRow>();
+		int j = 1;
+
+		if (count <= 0) {
+			return resultList;
+		}
+
+		OdfTableRow firstRow = insertRowBefore(refRow, positionRow);
+		resultList.add(firstRow);
+
+		if (count == 1) {
+			return resultList;
+		}
+
+		TableTableRowElement rowEle = firstRow.getOdfElement();
+		for (int i = 0; i < getColumnCount();) {
+			OdfTableCell refCell = refRow.getCellByIndex(i);
+			if (!refCell.isCoveredElement()) {
+				int coveredHeigth = refCell.getRowSpannedNumber();
+				if (coveredHeigth > 1) {
+					refCell.setRowSpannedNumber(coveredHeigth + 1);
+				}
+			}
+			i += refCell.getColumnsRepeatedNumber();
+		}
+		firstRow.setRowsRepeatedNumber(count);
+		while (j < count) {
+			resultList.add(getRowInstance(rowEle, j));
+			j++;
+		}
+		return resultList;
+	}
+
+	private OdfTableRow insertRowBefore(OdfTableRow refRow, OdfTableRow positionRow) //only insert one Row
+	{
+		int columnCount = getColumnCount();
+		TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement.getOwnerDocument(),
+				OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
+		int coveredLength = 0, coveredHeigth = 0;
+		for (int i = 0; i < columnCount;) {
+			OdfTableCell refCell = refRow.getCellByIndex(i);
+			if (!refCell.isCoveredElement()) //not cover element
+			{
+				TableTableCellElement aCellEle = (TableTableCellElement) refCell.getOdfElement();
+				coveredHeigth = aCellEle.getTableNumberRowsSpannedAttribute();
+				if (coveredHeigth == 1) {
+					TableTableCellElement newCellEle = (TableTableCellElement) aCellEle.cloneNode(true);
+					cleanCell(newCellEle);
+					aRow.appendChild(newCellEle);
+				} else { //cover more rows
+					aCellEle.setTableNumberRowsSpannedAttribute(coveredHeigth + 1);
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+							(OdfFileDom) mTableElement.getOwnerDocument(),
+							OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+					newCellEle.setTableNumberColumnsRepeatedAttribute(refCell.getColumnsRepeatedNumber());
+					aRow.appendChild(newCellEle);
+				}
+
+				coveredLength = aCellEle.getTableNumberColumnsSpannedAttribute() - refCell.getColumnsRepeatedNumber();
+				i = i + refCell.getColumnsRepeatedNumber();
+			} else {
+				TableCoveredTableCellElement aCellEle = (TableCoveredTableCellElement) refCell.getOdfElement();
+				if (coveredLength >= 1) {
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) aCellEle.cloneNode(true);
+					aRow.appendChild(newCellEle);
+					coveredLength -= newCellEle.getTableNumberColumnsRepeatedAttribute();
+				} else {
+					TableTableCellElement coveredCell = (TableTableCellElement) refCell.getCoverCell().getOdfElement();
+					TableTableCellElement newCellEle = (TableTableCellElement) coveredCell.cloneNode(true);
+					cleanCell(newCellEle);
+					newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-spanned");
+					aRow.appendChild(newCellEle);
+
+					coveredLength = coveredCell.getTableNumberColumnsSpannedAttribute() - refCell.getColumnsRepeatedNumber();
+				}
+				i = i + refCell.getColumnsRepeatedNumber();
+			}
+		}
+		if (positionRow == null) {
+			mTableElement.appendChild(aRow);
+		} else {
+			mTableElement.insertBefore(aRow, positionRow.getOdfElement());
+		}
+
+		return getRowInstance(aRow, 0);
+	}
+
+	void cleanCell(TableTableCellElement newCellEle) {
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "date-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "time-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "boolean-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "string-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "formula");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "value-type");
+		if(!isCellStyleInheritance()){
+			newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+		}
+		Node n = newCellEle.getFirstChild();
+		while (n != null) {
+			Node m = n.getNextSibling();
+			if (n instanceof TextPElement
+					|| n instanceof TextHElement
+					|| n instanceof TextListElement) {
+				newCellEle.removeChild(n);
+			}
+			n = m;
+		}
+	}
+
+	/**
+	 * Return an instance of <code>TableTableElement</code> which represents this feature.
+	 * 
+	 * @return an instance of <code>TableTableElement</code>
+	 */
+	public TableTableElement getOdfElement() {
+		return mTableElement;
+	}
+
+	/** 
+	 * Insert a specific number of columns before the column whose index is <code>index</code>.
+	 * 
+	 * @param index	is the index of the column to insert before.
+	 * @param columnCount	is the number of columns to insert.
+	 * @return a list of new inserted columns
+	 */
+	public List<OdfTableColumn> insertColumnsBefore(int index, int columnCount) {
+		OdfTableColumn refColumn, positionCol;
+		ArrayList<OdfTableColumn> list = new ArrayList<OdfTableColumn>();
+		int columncount = getColumnCount();
+
+		if (index >= columncount) {
+			throw new IndexOutOfBoundsException();
+		}
+
+		if (index == 0) {
+			int iRowCount = getRowCount();
+			for (int i = 0; i < iRowCount; i++) {
+				OdfTableRow row = getRowByIndex(i);
+				row.insertCellByIndex(index, columnCount);
+			}
+
+			refColumn = getColumnByIndex(index);
+			positionCol = refColumn;
+
+			TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(true);
+			newColumnEle.setTableNumberColumnsRepeatedAttribute(new Integer(columnCount));
+			mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+
+			for (int i = 0; i < columnCount; i++) {
+				list.add(getColumnInstance(newColumnEle, i));
+			}
+			return list;
+		}
+
+		//1. insert the cell
+		int iRowCount = getRowCount();
+		for (int i = iRowCount - 1; i >= 0;) {
+			OdfTableRow row = getRowByIndex(i);
+			OdfTableCell refCell = row.getCellByIndex(index - 1);
+			OdfTableCell positionCell = null;
+			positionCell = row.getCellByIndex(index);
+			row.insertCellBefore(refCell, positionCell, columnCount);
+			i = i - row.getRowsRepeatedNumber();
+		}
+
+		refColumn = getColumnByIndex(index - 1);
+		positionCol = getColumnByIndex(index);
+		//2. insert a <table:table-column>
+		if (refColumn.getOdfElement() == positionCol.getOdfElement()) {
+			TableTableColumnElement column = refColumn.getOdfElement();
+			int repeatedCount = getColumnInstance(column, 0).getColumnsRepeatedNumber();
+			getColumnInstance(column, 0).setColumnsRepeatedNumber((repeatedCount + columnCount));
+			TableTableColumnElement columnEle = positionCol.getOdfElement();
+			OdfTableColumn startCol = getColumnInstance(positionCol.getOdfElement(), 0);
+			for (int i = repeatedCount + columnCount - 1; i >= columnCount + (index - startCol.getColumnIndex()); i--) {
+				updateColumnRepository(columnEle, i - columnCount, columnEle, i);
+			}
+			for (int i = 0; i < columnCount; i++) {
+				list.add(getColumnInstance(column, refColumn.mnRepeatedIndex + 1 + i));
+			}
+		} else {
+			TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(true);
+			newColumnEle.setTableNumberColumnsRepeatedAttribute(new Integer(columnCount));
+			mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+
+			for (int i = 0; i < columnCount; i++) {
+				list.add(getColumnInstance(newColumnEle, i));
+			}
+		}
+
+		return list;
+	}
+
+	/** 
+	 * Remove a specific number of columns, starting from the column at <code>index</code>.
+	 * 
+	 * @param startIndex
+	 * 				is the index of the first column to delete.
+	 * @param deleteColCount
+	 * 				is the number of columns to delete.
+	 */
+	public void removeColumnsByIndex(int startIndex, int deleteColCount) {
+		//0. verify the index
+		if(deleteColCount <= 0) {
+			return;
+		}
+		if(startIndex < 0) {
+			throw new IllegalArgumentException("startIndex of the deleted columns should not be negative");
+		}
+		int colCount = getColumnCount();
+		if (startIndex >= colCount) {
+			throw new IndexOutOfBoundsException("Start column index is out of bound");
+		}
+		if (startIndex + deleteColCount >= colCount) {
+			deleteColCount = colCount - startIndex;
+		}
+
+		//1. remove cell
+		for (int i = 0; i < getRowCount(); i++) {
+			OdfTableRow aRow = getRowByIndex(i);
+			aRow.removeCellByIndex(startIndex, deleteColCount);
+		}
+
+		//2. remove column
+		OdfTableColumn firstColumn;
+		for (int i = 0; i < deleteColCount; i++) {
+			firstColumn = getColumnByIndex(startIndex);
+			int repeatedAttr = firstColumn.getColumnsRepeatedNumber();
+			if (repeatedAttr == 1) {
+				TableTableColumnElement columnEle = OdfElement.findNextChildNode(TableTableColumnElement.class, firstColumn.getOdfElement());
+				mTableElement.removeChild(firstColumn.getOdfElement());
+				if (i < (deleteColCount - 1)) {
+					firstColumn = this.getColumnInstance(columnEle, 0);
+				}
+			} else {
+				if (repeatedAttr > firstColumn.mnRepeatedIndex) {
+					firstColumn.setColumnsRepeatedNumber(repeatedAttr - 1);
+					OdfTableColumn startCol = this.getColumnInstance(firstColumn.getOdfElement(), 0);
+					updateColumnRepository(firstColumn.getOdfElement(), startIndex - startCol.getColumnIndex(), null, 0);
+				}
+			}
+		}
+
+	}
+
+	private void reviseStyleFromTopRowToMediumRow(OdfTableRow oldTopRow) {
+		if (mIsSpreadsheet) return;
+		int length = getColumnCount();
+
+		for (int i = 0; i < length;) {
+			OdfTableCell cell = oldTopRow.getCellByIndex(i);
+			if (cell.isCoveredElement()) {
+				i = i + cell.getColumnsRepeatedNumber();
+				continue;
+			}
+			OdfStyle styleEle = cell.getCellStyleElementForWrite();
+			if (i < length - 1) {
+				setLeftBottomBorderStylesProperties(styleEle);
+			} else {
+				setRightBottomBorderStylesProperties(styleEle);
+			}
+			i = i + cell.getColumnsRepeatedNumber();
+		}
+	}
+
+	private void reviseStyleFromMediumRowToTopRow(OdfTableRow newTopRow) {
+		if (mIsSpreadsheet) {
+			return;
+		}
+		int length = getColumnCount();
+		
+		for (int i = 0; i < length;) {
+			OdfTableCell cell = newTopRow.getCellByIndex(i);
+			if (cell.isCoveredElement()) {
+				i = i + cell.getColumnsRepeatedNumber();
+				continue;
+			}
+			OdfStyle styleEle = cell.getCellStyleElementForWrite();
+			if (i < length - 1) {
+				setLeftTopBorderStyleProperties(styleEle);
+			} else {
+				setRightTopBorderStyleProperties(styleEle);
+			}
+			i = i + cell.getColumnsRepeatedNumber();
+		}
+	}
+
+	/**
+	 * Insert a specific number of rows before the row at <code>index</code>.
+	 * 
+	 * @param index	is the index of the row to insert before.
+	 * @param rowCount	is the number of rows to insert.
+	 * @return a list of new inserted rows
+	 */
+	public List<OdfTableRow> insertRowsBefore(int index, int rowCount) {
+		if (index >= getRowCount()) {
+			throw new IndexOutOfBoundsException();
+		}
+
+		ArrayList<OdfTableRow> list = new ArrayList<OdfTableRow>();
+
+		if (index == 0) {
+			OdfTableRow refRow = getRowByIndex(index);
+			OdfTableRow positionRow = refRow;
+			//add first row
+			OdfTableRow newFirstRow = insertRowBefore(refRow, positionRow);
+			reviseStyleFromTopRowToMediumRow(refRow);
+			list.add(newFirstRow);
+			List<OdfTableRow> rowList = insertMultipleRowBefore(refRow, refRow, rowCount - 1);
+			for (int i = 0; i < rowList.size(); i++) {
+				list.add(rowList.get(i));
+			}
+			return list;
+		}
+
+		OdfTableRow refRow = getRowByIndex(index - 1);
+		OdfTableRow positionRow = getRowByIndex(index);
+		//1. insert a <table:table-column>
+		if (refRow.getOdfElement() == positionRow.getOdfElement()) {
+			TableTableRowElement row = refRow.getOdfElement();
+			int repeatedCount = refRow.getRowsRepeatedNumber();
+			refRow.setRowsRepeatedNumber(repeatedCount + rowCount);
+			TableTableRowElement rowEle = positionRow.getOdfElement();
+			OdfTableRow startRow = getRowInstance(positionRow.getOdfElement(), 0);
+			for (int i = repeatedCount + rowCount - 1; i >= rowCount + (index - startRow.getRowIndex()); i--) {
+				updateRowRepository(rowEle, i - rowCount, rowEle, i);
+			}
+			for (int i = 0; i < rowCount; i++) {
+				list.add(getRowInstance(row, refRow.mnRepeatedIndex + 1 + i));
+			}
+		} else {
+			List<OdfTableRow> newRowList = insertMultipleRowBefore(refRow, positionRow, rowCount);
+			if (index - 1 == 0) {
+				//correct styles
+				reviseStyleFromTopRowToMediumRow(newRowList.get(0));
+			}
+			for (int i = 0; i < newRowList.size(); i++) {
+				list.add(newRowList.get(i));
+			}
+		}
+
+		return list;
+	}
+
+	/**
+	 * Return a list of columns in the current table.
+	 * 
+	 * @return a list of table columns
+	 */
+	public List<OdfTableColumn> getColumnList() {
+		ArrayList<OdfTableColumn> list = new ArrayList<OdfTableColumn>();
+		TableTableColumnElement colEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableColumnElement) {
+						colEle = (TableTableColumnElement) m;
+						for (int i = 0; i < getColumnInstance(colEle, 0).getColumnsRepeatedNumber(); i++) {
+							list.add(getColumnInstance(colEle, i));
+						}
+					}
+				}
+			}
+			if (n instanceof TableTableColumnElement) {
+				colEle = (TableTableColumnElement) n;
+				for (int i = 0; i < getColumnInstance(colEle, 0).getColumnsRepeatedNumber(); i++) {
+					list.add(getColumnInstance(colEle, i));
+				}
+			}
+		}
+		return list;
+	}
+
+	/**
+	 * Return a list of table rows in the current table.
+	 * 
+	 * @return a list of table rows
+	 */
+	public List<OdfTableRow> getRowList() {
+		ArrayList<OdfTableRow> list = new ArrayList<OdfTableRow>();
+		TableTableRowElement rowEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableRowElement) {
+						rowEle = (TableTableRowElement) m;
+						for (int i = 0; i < rowEle.getTableNumberRowsRepeatedAttribute(); i++) {
+							list.add(getRowInstance(rowEle, i));
+						}
+					}
+				}
+			}
+			if (n instanceof TableTableRowElement) {
+				rowEle = (TableTableRowElement) n;
+				for (int i = 0; i < rowEle.getTableNumberRowsRepeatedAttribute(); i++) {
+					list.add(getRowInstance(rowEle, i));
+				}
+			}
+		}
+		return list;
+	}
+
+	/**
+	 * Get the column at the specified index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the zero-based index of the column.
+	 * @return the column at the specified index
+	 */
+	public OdfTableColumn getColumnByIndex(int index) {
+		if (index < 0) {
+			throw new IllegalArgumentException(
+					"index should be nonnegative integer.");
+		}
+		// expand column as needed.
+		int lastIndex = getColumnCount() - 1;
+		if (index > lastIndex) {
+			appendColumns(index - lastIndex);
+		}
+		int result = 0;
+		OdfTableColumn col = null;
+		// TableTableColumnElement colEle=null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				col = getHeaderColumnByIndex(
+						(TableTableHeaderColumnsElement) n, index);
+				if (col != null) {
+					return col;
+				}
+				result += getHeaderColumnCount((TableTableHeaderColumnsElement) n);
+			}
+			if (n instanceof TableTableColumnElement) {
+				col = getColumnInstance((TableTableColumnElement) n, 0);
+				result += col.getColumnsRepeatedNumber();
+			}
+			if ((result > index) && (col != null)) {
+				return getColumnInstance(col.getOdfElement(), index
+						- (result - col.getColumnsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	private OdfTableRow getHeaderRowByIndex(TableTableHeaderRowsElement headers, int nIndex) {
+		int result = 0;
+		OdfTableRow row = null;
+		for (Node n : new DomNodeList(headers.getChildNodes())) {
+			if (n instanceof TableTableRowElement) {
+				row = getRowInstance((TableTableRowElement) n, 0);
+				result += row.getRowsRepeatedNumber();
+			}
+			if ((result > nIndex) && (row != null)) {
+				return getRowInstance(row.getOdfElement(), nIndex - (result - row.getRowsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	private OdfTableColumn getHeaderColumnByIndex(TableTableHeaderColumnsElement headers, int nIndex) {
+		int result = 0;
+		OdfTableColumn col = null;
+		for (Node n : new DomNodeList(headers.getChildNodes())) {
+			if (n instanceof TableTableColumnElement) {
+				col = getColumnInstance((TableTableColumnElement) n, 0);
+				result += col.getColumnsRepeatedNumber();
+			}
+			if (result > nIndex) {
+				return getColumnInstance(col.getOdfElement(), nIndex - (result - col.getColumnsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Get the row at the specified index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the zero-based index of the row.
+	 * @return the row at the specified index
+	 */
+	public OdfTableRow getRowByIndex(int index) {
+		if (index < 0) {
+			throw new IllegalArgumentException(
+					"index should be nonnegative integer.");
+		}
+		// expand row as needed.
+		int lastIndex = getRowCount() - 1;
+		if (index > lastIndex) {
+			appendRows(index - lastIndex);
+		}
+		int result = 0;
+		OdfTableRow row = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				row = getHeaderRowByIndex((TableTableHeaderRowsElement) n,
+						index);
+				if (row != null) {
+					return row;
+				}
+				result += getHeaderRowCount((TableTableHeaderRowsElement) n);
+			}
+			if (n instanceof TableTableRowElement) {
+				row = getRowInstance((TableTableRowElement) n, 0);
+				result += row.getRowsRepeatedNumber();
+			}
+			if (result > index) {
+				return getRowInstance(row.getOdfElement(), index
+						- (result - row.getRowsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	/** 
+	 * Remove the specific number of rows, starting from the row at <code>index</code>.
+	 * 
+	 * @param startIndex	is the zero-based index of the first row to delete.
+	 * @param deleteRowCount	is the number of rows to delete.
+	 */
+	public void removeRowsByIndex(int startIndex, int deleteRowCount) {
+		boolean deleted = false;
+		//0. verify the index
+		if(deleteRowCount <= 0) {
+			return;
+		}
+		if(startIndex < 0) {
+			throw new IllegalArgumentException("startIndex of the deleted rows should not be negative");
+		}
+		int rowCount = getRowCount();
+		if (startIndex >= rowCount) {
+			throw new IndexOutOfBoundsException("Start index out of bound");
+		}
+		if (startIndex + deleteRowCount >= rowCount) {
+			deleteRowCount = rowCount - startIndex;
+		}
+
+		//1. remove row
+		OdfTableRow firstRow = getRowByIndex(startIndex);
+		for (int i = startIndex; i < startIndex + deleteRowCount; i++) {
+			int repeatedAttr = firstRow.getRowsRepeatedNumber();
+			if (repeatedAttr == 1) {
+				TableTableRowElement rowEle = OdfElement.findNextChildNode(TableTableRowElement.class, firstRow.getOdfElement());
+				firstRow.removeAllCellsRelationship();
+				firstRow.getOdfElement().getParentNode().removeChild(firstRow.getOdfElement());
+				updateRowRepository(firstRow.getOdfElement(), firstRow.mnRepeatedIndex, null, 0);
+				if (i < (startIndex + deleteRowCount - 1)) {
+					firstRow = this.getRowInstance(rowEle, 0);
+				}
+				deleted = true;
+			} else {
+				if (repeatedAttr > firstRow.mnRepeatedIndex) {
+					firstRow.setRowsRepeatedNumber(repeatedAttr - 1);
+					OdfTableRow startRow = this.getRowInstance(firstRow.getOdfElement(), 0);
+					updateRowRepository(firstRow.getOdfElement(), i - startRow.getRowIndex(), null, 0);
+				}
+			}
+		}
+		//2. if mediumRow becomes as top row, revise style
+		if (deleted && startIndex == 0) {
+			OdfTableRow aRow = getRowByIndex(0);
+			reviseStyleFromMediumRowToTopRow(aRow);
+		}
+	}
+
+	/**
+	 * Remove this table from the document
+	 */
+	public void remove() {
+		mTableElement.getParentNode().removeChild(mTableElement);
+
+	}
+
+	private int getHeaderRowCount(TableTableHeaderRowsElement headers) {
+		int result = 0;
+		if (headers != null) {
+			for (Node n : new DomNodeList(headers.getChildNodes())) {
+				if (n instanceof TableTableRowElement) {
+					result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Return the number of header rows in this table.
+	 * 
+	 * @return the number of header rows.
+	 */
+	public int getHeaderRowCount() {
+
+		TableTableHeaderRowsElement headers = OdfElement.findFirstChildNode(TableTableHeaderRowsElement.class, mTableElement);
+		return getHeaderRowCount(headers);
+	}
+
+	private int getHeaderColumnCount(TableTableHeaderColumnsElement headers) {
+		int result = 0;
+		if (headers != null) {
+			for (Node n : new DomNodeList(headers.getChildNodes())) {
+				if (n instanceof TableTableColumnElement) {
+					result += getColumnInstance(((TableTableColumnElement) n),
+							0).getColumnsRepeatedNumber();
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Return the number of header columns in the table.
+	 * 
+	 * @return the number of header columns.
+	 */
+	public int getHeaderColumnCount() {
+		TableTableHeaderColumnsElement headers = OdfElement.findFirstChildNode(TableTableHeaderColumnsElement.class, mTableElement);
+		return getHeaderColumnCount(headers);
+	}
+
+	/**
+	 * Return the table name.
+	 * 
+	 * @return the table name
+	 */
+	public String getTableName() {
+		return mTableElement.getTableNameAttribute();
+	}
+
+	/**
+	 * Set the table name.
+	 * 
+	 * @param tableName the table name
+	 * @throws IllegalArgumentException if the tableName is duplicate with one of tables in the current document
+	 */
+	public void setTableName(String tableName) {
+		//check if the table name is already exist 		
+		List<OdfTable> tableList = mDocument.getTableList();
+		for(int i=0;i<tableList.size();i++){
+			OdfTable table = tableList.get(i);
+			if(tableName.equals(table.getTableName())){
+				if(table != this) {
+					throw new IllegalArgumentException("The table name is duplicate with one of tables in the current document.");
+				}
+			}	
+		}		
+		mTableElement.setTableNameAttribute(tableName);
+	}
+
+	/**
+	 * Return true if the table is protected.
+	 * 
+	 * @return true if the table is protected
+	 */
+	public boolean isProtected() {
+		if (mTableElement.getTableProtectedAttribute() != null) {
+			return mTableElement.getTableProtectedAttribute().booleanValue();
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Set if the table is protected.
+	 * @param isProtected	the protected attribute of the table to be set
+	 */
+	public void setProtected(boolean isProtected) {
+		mTableElement.setTableProtectedAttribute(isProtected);
+	}
+	
+	/**
+	 * Return true if cell style is inherited when a new cell is added to the
+	 * table.
+	 * <p>
+	 * The default setting is inherited. In this condition, the style of new
+	 * column is same with the previous column before the inserted position,
+	 * while the style of new row is same with the last row before the inserted
+	 * position.
+	 * <p>
+	 * This feature setting will influence <code>appendRow()</code>,
+	 * <code>appendColumn()</code>, <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code> and
+	 * <code>insertColumnsBefore()</code>.
+	 * <p>
+	 * For <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>, if need
+	 * automatically expand cells, it will return empty cell(s) without any
+	 * style settings. So inheritance setting have no effect on them.
+	 * 
+	 * @return true if cell style is inherited when a new cell is added to the
+	 *         table.
+	 * 
+	 * @see #setCellStyleInheritance(boolean)
+	 * @see #appendColumn()
+	 * @see #appendColumns(int)
+	 * @see #appendRow()
+	 * @see #appendRows(int)
+	 * @see #insertColumnsBefore(int, int)
+	 * @see #insertRowsBefore(int, int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 * @see #getCellRangeByPosition(int, int, int, int)
+	 * @see #getCellRangeByPosition(String, String)
+	 * @see #getCellRangeByName(String)
+	 * @see #getColumnByIndex(int)
+	 * @see #getRowByIndex(int)
+	 */
+	protected boolean isCellStyleInheritance() {
+		return mIsCellStyleInheritance;
+	}
+
+	/**
+	 * This method allows users to set whether cell style is inherited or not
+	 * when a new cell is added to the table. Of course, the default setting is
+	 * inherited. In this condition, the style of new column is same with the
+	 * previous column before the inserted position, while the style of new row
+	 * is same with the last row before the inserted position.
+	 * <p>
+	 * This feature setting will influence <code>appendRow()</code>,
+	 * <code>appendColumn()</code>, <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code> and
+	 * <code>insertColumnsBefore()</code>.
+	 * <p>
+	 * For <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>, if need
+	 * automatically expand cells, it will return empty cell(s) without any
+	 * style settings. So inheritance setting have no effect on them.
+	 * 
+	 * @param isEnabled
+	 *            if<code>isEnabled</code> is true, cell style will be inherited
+	 *            by new cell.
+	 *            
+	 * @see #isCellStyleInheritance()
+	 * @see #appendColumn()
+	 * @see #appendColumns(int)
+	 * @see #appendRow()
+	 * @see #appendRows(int)
+	 * @see #insertColumnsBefore(int, int)
+	 * @see #insertRowsBefore(int, int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 * @see #getCellRangeByPosition(int, int, int, int)
+	 * @see #getCellRangeByPosition(String, String)
+	 * @see #getCellRangeByName(String)
+	 * @see #getColumnByIndex(int)
+	 * @see #getRowByIndex(int)
+	 */
+	protected void setCellStyleInheritance(boolean	isEnabled) {
+		mIsCellStyleInheritance=isEnabled;
+	}
+	////////////////////////////////////////////////////////////////////////////////////////////
+	/**
+	 * Return a range of cells within the specified range. The table will be
+	 * automatically expanded as need.
+	 * 
+	 * @param startCol
+	 *            the column index of the first cell inside the range.
+	 * @param startRow
+	 *            the row index of the first cell inside the range.
+	 * @param endCol
+	 *            the column index of the last cell inside the range.
+	 * @param endRow
+	 *            the row index of the last cell inside the range.
+	 * @return the specified cell range.
+	 */
+	public OdfTableCellRange getCellRangeByPosition(int startCol, int startRow,
+			int endCol, int endRow) {
+		// test whether cell position is out of table range and expand table
+		// automatically.
+		getCellByPosition(startCol, startRow);
+		getCellByPosition(endCol, endRow);
+		return new OdfTableCellRange(this, startCol, startRow, endCol, endRow);
+	}
+
+	/**
+	 * Return a range of cells within the specified range. The range is
+	 * specified by the cell address of the first cell and the cell address of
+	 * the last cell. The table will be automatically expanded as need.
+	 * <p>
+	 * The cell address is constructed with a table name, a dot (.), an
+	 * alphabetic value representing the column, and a numeric value
+	 * representing the row. The table name can be omitted. For example:
+	 * "$Sheet1.A1", "Sheet1.A1" and "A1" are all valid cell address.
+	 * 
+	 * @param startAddress
+	 *            the cell address of the first cell inside the range.
+	 * @param endAddress
+	 *            the cell address of the last cell inside the range.
+	 * @return the specified cell range.
+	 */
+	public OdfTableCellRange getCellRangeByPosition(String startAddress,
+			String endAddress) {
+		return getCellRangeByPosition(getColIndexFromCellAddress(startAddress),
+				getRowIndexFromCellAddress(startAddress),
+				getColIndexFromCellAddress(endAddress),
+				getRowIndexFromCellAddress(endAddress));
+	}
+
+	/**
+	 * Return a range of cells by a specified name.
+	 * <p>
+	 * After you get a cell range with <code>getCellRangeByPosition</code>,  
+	 * you can assign a name to this cell range with the method <code>setCellRangeName<code> in class <code>OdfTableCellRange</code>.
+	 * Then you will get a <b>named range</b> which can be represented by name.
+	 * This method can be used to get a named range.
+	 * 
+	 * @param name	the name of the specified named range
+	 * @return	the specified cell range.
+	 */
+	public OdfTableCellRange getCellRangeByName(String name) {
+		NodeList nameRanges;
+		try {
+			nameRanges = mTableElement.getOwnerDocument().getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "named-range");
+			for (int i = 0; i < nameRanges.getLength(); i++) {
+				TableNamedRangeElement nameRange = (TableNamedRangeElement) nameRanges.item(i);
+				if (nameRange.getTableNameAttribute().equals(name)) {
+					String cellRange = nameRange.getTableCellRangeAddressAttribute();
+					String[] addresses = cellRange.split(":");
+					return getCellRangeByPosition(addresses[0], addresses[1]);
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(OdfTable.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		return null;
+	}
+
+	/**
+	 * Return a single cell that is positioned at the specified column and row. 
+	 * The table will be automatically expanded as need.
+	 * 
+	 * @param colIndex  the column index of the cell.
+	 * @param rowIndex  the row index of the cell.
+	 * @return the cell at the specified position
+	 */
+	public OdfTableCell getCellByPosition(int colIndex, int rowIndex) {
+		if (colIndex < 0 || rowIndex < 0) {
+			throw new IllegalArgumentException(
+					"colIndex and rowIndex should be nonnegative integer.");
+		}
+		// expand row as needed.
+		int lastRowIndex = getRowCount() - 1;
+		if (rowIndex > lastRowIndex) {
+			//need clean cell style.
+			appendRows((rowIndex - lastRowIndex), true);
+		}
+		// expand column as needed.
+		int lastColumnIndex = getColumnCount() - 1;
+		if (colIndex > lastColumnIndex) {
+			//need clean cell style.
+			appendColumns((colIndex - lastColumnIndex), true);
+		}
+		OdfTableRow row = getRowByIndex(rowIndex);
+		return row.getCellByIndex(colIndex);
+	}
+
+	//return array of string contain 3 member
+	//1. sheet table name
+	//2. alphabetic represent the column 
+	//3. string represent the row number
+	String[] splitCellAddress(String cellAddress) {
+		String[] returnArray = new String[3];
+		//seperate column and row from cell range
+		StringTokenizer stDot = new StringTokenizer(cellAddress, ".");
+		//get sheet table name and the cell address
+		String cell = "";
+		if (stDot.countTokens() >= 2) {
+			StringTokenizer stDollar = new StringTokenizer(stDot.nextToken(), "$");
+			returnArray[0] = stDollar.nextToken();
+			cell = stDot.nextToken();
+		} else {
+			returnArray[0] = getTableName();
+			cell = stDot.nextToken();
+		}
+
+		//get the column/row number from the cell address
+		StringTokenizer stDollar = new StringTokenizer(cell, "$");
+		if (stDollar.countTokens() >= 2) {
+			returnArray[1] = stDollar.nextToken();
+			returnArray[2] = stDollar.nextToken();
+		} else {
+			cell = stDollar.nextToken();
+			for (int i = 0; i < cell.length(); i++) {
+				if (!Character.isLetter(cell.charAt(i))) {
+					returnArray[1] = cell.substring(0, i);
+					returnArray[2] = cell.substring(i);
+					break;
+				}
+			}
+		}
+		return returnArray;
+
+	}
+
+	/**
+	 * Return a single cell that is positioned at the specified cell address.
+	 * The table can be automatically expanded as need.
+	 * <p>
+	 * The cell address is constructed with a table name, a dot (.), 
+	 * an alphabetic value representing the column, and a numeric value representing the row. 
+	 * The table name can be omitted. For example: "$Sheet1.A1", "Sheet1.A1" and "A1" are all
+	 * valid cell address.
+	 * 
+	 * @param address	the cell address of the cell.
+	 * @return the cell at the specified position.
+	 */
+	public OdfTableCell getCellByPosition(String address) {
+		return getCellByPosition(getColIndexFromCellAddress(address),
+				getRowIndexFromCellAddress(address));
+	}
+
+	//TODO: can put these two method to type.CellAddress
+	int getColIndexFromCellAddress(String cellAddress) {
+		String[] returnArray = splitCellAddress(cellAddress);
+		String colNum = returnArray[1];
+		int colIndex = 0;
+		for (int i = 0; i < colNum.length(); i++) {
+			colIndex = 26 * colIndex;
+			colIndex += (colNum.charAt(i) - 'A') + 1;
+		}
+
+		return (colIndex - 1);
+	}
+
+	int getRowIndexFromCellAddress(String cellAddress) {
+		String[] returnArray = splitCellAddress(cellAddress);
+		return Integer.parseInt(returnArray[2]) - 1;
+	}
+
+	String getAbsoluteCellAddress(int colIndex, int rowIndex) {
+		int remainder = 0;
+		int multiple = colIndex;
+		String cellRange = "";
+		while (multiple != 0) {
+			multiple = colIndex / 26;
+			remainder = colIndex % 26;
+			char c;
+			if (multiple == 0) {
+				c = (char) ('A' + remainder);
+			} else {
+				c = (char) ('A' + multiple - 1);
+			}
+			cellRange = cellRange + String.valueOf(c);
+			colIndex = remainder;
+		}
+		cellRange = "$" + cellRange + "$" + (rowIndex + 1);
+		return cellRange;
+
+	}
+	//the parameter is the column/row index in the ownerTable,rather than in the cell range
+	//if the position is a covered cell, then get the owner cell for it
+
+	OdfTableCell getOwnerCellByPosition(List<CellCoverInfo> coverList, int nCol, int nRow) {
+		CellCoverInfo info;
+		if (!isCoveredCellInOwnerTable(coverList, nCol, nRow)) {
+			OdfTableCell cell = getCellByPosition(nCol, nRow);
+			return cell;
+		} else {
+			for (int m = 0; m < coverList.size(); m++) {
+				info = coverList.get(m);
+				if (((nCol > info.nStartCol) && (nCol <= info.nEndCol)
+						&& (nRow == info.nStartRow) && (nRow == info.nEndRow))
+						|| ((nCol == info.nStartCol) && (nCol == info.nEndCol)
+						&& (nRow > info.nStartRow) && (nRow <= info.nEndRow))
+						|| ((nCol > info.nStartCol) && (nCol <= info.nEndCol)
+						&& (nRow > info.nStartRow) && (nRow <= info.nEndRow))) {
+					OdfTableCell cell = getCellByPosition(info.nStartCol, info.nStartRow);
+					return cell;
+				}
+			}
+		}
+		return null;
+	}
+
+	//the parameter is the column/row index in the ownerTable,rather than in the cell range
+	boolean isCoveredCellInOwnerTable(List<CellCoverInfo> coverList, int nCol, int nRow) {
+		CellCoverInfo info;
+		for (int m = 0; m < coverList.size(); m++) {
+			info = coverList.get(m);
+			if (((nCol > info.nStartCol) && (nCol <= info.nEndCol)
+					&& (nRow == info.nStartRow) && (nRow == info.nEndRow))
+					|| ((nCol == info.nStartCol) && (nCol == info.nEndCol)
+					&& (nRow > info.nStartRow) && (nRow <= info.nEndRow))
+					|| ((nCol > info.nStartCol) && (nCol <= info.nEndCol)
+					&& (nRow > info.nStartRow) && (nRow <= info.nEndRow))) //covered cell
+			{
+				return true;
+			}
+		}
+		return false;
+	}
+
+	List<CellCoverInfo> getCellCoverInfos(int nStartCol, int nStartRow, int nEndCol, int nEndRow) {
+		List<CellCoverInfo> coverList = new ArrayList<CellCoverInfo>();
+		int nColSpan, nRowSpan;
+		for (int i = nStartCol; i < nEndCol + 1; i++) {
+			for (int j = nStartRow; j < nEndRow + 1; j++) {
+				OdfTableCell cell = getCellByPosition(i, j);
+				if (cell != null) {
+					nColSpan = cell.getColumnSpannedNumber();
+					nRowSpan = cell.getRowSpannedNumber();
+					if ((nColSpan > 1) || (nRowSpan > 1)) {
+						coverList.add(new CellCoverInfo(i, j, nColSpan, nRowSpan));
+					}
+				}
+			}
+		}
+		return coverList;
+	}
+
+	//the odfelement of the FTableColumn changed, so we should update the repository here
+	void updateColumnRepository(TableTableColumnElement oldElement, int oldRepeatIndex, TableTableColumnElement newElement, int newRepeatIndex) {
+		if (mColumnRepository.containsKey(oldElement)) {
+			Vector<OdfTableColumn> oldList = mColumnRepository.get(oldElement);
+			if (oldRepeatIndex < oldList.size()) {
+				if (oldElement != newElement) {
+					//the new column replace the old column
+					OdfTableColumn oldColumn = oldList.get(oldRepeatIndex);
+					if (oldColumn != null) {
+						//update the mnRepeateIndex of the column which locate after the removed column
+						for (int i = oldRepeatIndex + 1; i < oldList.size(); i++) {
+							OdfTableColumn column = oldList.get(i);
+							if (column != null) {
+								column.mnRepeatedIndex = i - 1;
+							}
+						}
+						oldList.remove(oldColumn);
+						//oldList.add(oldRepeatIndex, null);
+						if (newElement != null) {
+							oldColumn.maColumnElement = newElement;
+							oldColumn.mnRepeatedIndex = newRepeatIndex;
+							int size = (newRepeatIndex > 7) ? (newRepeatIndex + 1) : 8;
+							Vector<OdfTableColumn> list = new Vector<OdfTableColumn>(size);
+							list.setSize(newRepeatIndex + 1);
+							list.set(newRepeatIndex, oldColumn);
+							mColumnRepository.put(newElement, list);
+						} else {
+							oldColumn.maColumnElement = null;
+						}
+					}
+				} else {
+					//the new column element is equal to the old column element, just change the repeatIndex
+					OdfTableColumn oldColumn = oldList.get(oldRepeatIndex);
+					if (oldColumn != null) {
+						oldList.remove(oldColumn);
+						oldList.add(oldRepeatIndex, null);
+						oldColumn.mnRepeatedIndex = newRepeatIndex;
+						if (newRepeatIndex >= oldList.size()) {
+							oldList.setSize(newRepeatIndex + 1);
+						}
+						oldList.set(newRepeatIndex, oldColumn);
+					} else {
+						getColumnInstance(newElement, newRepeatIndex);
+					}
+				}
+			}
+		}
+	}
+
+	//the odfelement of the FTableRow changed, so we should update the repository here
+	void updateRowRepository(TableTableRowElement oldElement, int oldRepeatIndex, TableTableRowElement newElement, int newRepeatIndex) {
+		if (mRowRepository.containsKey(oldElement)) {
+			Vector<OdfTableRow> oldList = mRowRepository.get(oldElement);
+			if (oldRepeatIndex < oldList.size()) {
+				if (oldElement != newElement) {
+					//the new row replace the old row
+					OdfTableRow oldRow = oldList.get(oldRepeatIndex);
+					Vector<OdfTableCell> updateCellList = new Vector<OdfTableCell>();
+					if (oldRow != null) {
+						//update the mnRepeateIndex of the row which locate after the removed row
+						for (int i = oldRepeatIndex + 1; i < oldList.size(); i++) {
+							OdfTableRow row = oldList.get(i);
+							if (row != null) {
+								//update the cell in this row, 
+								int colNum = getColumnCount();
+								for (int j = 0; j < colNum; j++) {
+									OdfTableCell cell = row.getCellByIndex(j);
+									updateCellList.add(cell);
+								}
+								row.mnRepeatedIndex = i - 1;
+							}
+						}
+						oldList.remove(oldRow);
+						if (newElement != null) {
+							//update the cell in this row
+							int colNum = getColumnCount();
+							OdfTableCell[] oldCells = new OdfTableCell[colNum];
+							for (int j = 0; j < colNum; j++) {
+								oldCells[j] = oldRow.getCellByIndex(j);
+							}
+							///
+							oldRow.maRowElement = newElement;
+							oldRow.mnRepeatedIndex = newRepeatIndex;
+							int size = (newRepeatIndex > 7) ? (newRepeatIndex + 1) : 8;
+							Vector<OdfTableRow> list = new Vector<OdfTableRow>(size);
+							list.setSize(newRepeatIndex + 1);
+							list.set(newRepeatIndex, oldRow);
+							mRowRepository.put(newElement, list);
+							//update the cell in this row
+							OdfTableCell[] newCells = new OdfTableCell[colNum];
+							for (int j = 0; j < colNum; j++) {
+								newCells[j] = oldRow.getCellByIndex(j);
+							}
+							for (int j = 0; j < colNum; j++) {
+								this.updateCellRepository(oldCells[j].getOdfElement(), oldCells[j].mnRepeatedColIndex, oldCells[j].mnRepeatedRowIndex,
+										newCells[j].getOdfElement(), newCells[j].mnRepeatedColIndex, newCells[j].mnRepeatedRowIndex);
+							}
+
+							//update the mnRepeatedRowIndex of the cell which locate after the removed row
+							for (int j = 0; j < updateCellList.size(); j++) {
+								OdfTableCell cell = updateCellList.get(j);
+								if (cell.mnRepeatedRowIndex > oldRepeatIndex) {
+									cell.mnRepeatedRowIndex--;
+								}
+							}
+						} else {
+							oldRow.maRowElement = null;
+						}
+					}
+				} else {
+					//the new row element is equal to the old row element, just change the repeatIndex
+					OdfTableRow oldRow = oldList.get(oldRepeatIndex);
+					if (oldRow != null) {
+						oldList.remove(oldRow);
+						oldList.add(oldRepeatIndex, null);
+						oldRow.mnRepeatedIndex = newRepeatIndex;
+						if (newRepeatIndex >= oldList.size()) {
+							oldList.setSize(newRepeatIndex + 1);
+						}
+						oldList.set(newRepeatIndex, oldRow);
+					} else {
+						getRowInstance(newElement, newRepeatIndex);
+					}
+				}
+			}
+		}
+	}
+
+	//the odfelement of the FTableCell changed, so we should update the repository here
+	void updateCellRepository(TableTableCellElementBase oldElement, int oldRepeatColIndex, int oldRepeatRowIndex,
+			TableTableCellElementBase newElement, int newRepeatColIndex, int newRepeatRowIndex) {
+		if (mCellRepository.containsKey(oldElement)) {
+			OdfTableCell oldCell = null;
+			Vector<OdfTableCell> oldList = mCellRepository.get(oldElement);
+			for (int i = 0; i < oldList.size(); i++) {
+				if (oldList.get(i).getOdfElement() == oldElement
+						&& oldList.get(i).mnRepeatedColIndex == oldRepeatColIndex
+						&& oldList.get(i).mnRepeatedRowIndex == oldRepeatRowIndex) {
+					oldCell = oldList.get(i);
+					break;
+				}
+			}
+			if (oldElement != newElement) {
+				//the new cell replace the old cell
+				if (oldCell != null) {
+					//update the mnRepeateRowIndex &  mnRepeateColIndex of the cell which locate after the removed cell
+					for (int i = 0; i < oldList.size(); i++) {
+						OdfTableCell cell = oldList.get(i);
+						if (cell != null && (cell.getOdfElement() == oldElement)) {
+							if ((cell.mnRepeatedRowIndex == oldRepeatRowIndex)
+									&& (cell.mnRepeatedColIndex > oldRepeatColIndex)) {
+								cell.mnRepeatedColIndex--;
+							}
+						}
+					}
+					oldList.remove(oldCell);
+					if (oldList.size() == 0) {
+						mCellRepository.remove(oldElement);
+					}
+					if (newElement != null) {
+						oldCell.mCellElement = newElement;
+						oldCell.mnRepeatedColIndex = newRepeatColIndex;
+						oldCell.mnRepeatedRowIndex = newRepeatRowIndex;
+						Vector<OdfTableCell> list;
+						if (mCellRepository.containsKey(newElement)) {
+							list = mCellRepository.get(newElement);
+							boolean bReplaced = false;
+							for (int i = 0; i < list.size(); i++) {
+								OdfTableCell cell = list.get(i);
+								if (cell != null && (cell.getOdfElement() == newElement)) {
+									if ((cell.mnRepeatedColIndex == newRepeatColIndex)
+											&& (cell.mnRepeatedRowIndex == newRepeatRowIndex)) {
+										list.remove(i);
+										list.add(i, oldCell);
+										bReplaced = true;
+										break;
+									}
+								}
+							}
+							if (!bReplaced) {
+								list.add(oldCell);
+							}
+						} else {
+							list = new Vector<OdfTableCell>();
+							list.add(oldCell);
+							mCellRepository.put(newElement, list);
+						}
+					} else {
+						oldCell.mCellElement = null;
+						oldCell.mnRepeatedColIndex = 0;
+						oldCell.mnRepeatedRowIndex = 0;
+					}
+				}
+			} else {
+				//the new cell element is equal to the old cell element, just change the repeatIndex
+				if (oldCell != null) {
+					oldCell.mnRepeatedColIndex = newRepeatColIndex;
+					oldCell.mnRepeatedRowIndex = newRepeatRowIndex;
+				} else {
+					getCellInstance(newElement, newRepeatColIndex, newRepeatRowIndex);
+				}
+			}
+		}
+	}
+
+	void updateRepositoryWhenCellElementChanged(int startRow, int endRow, int startClm, int endClm, TableTableCellElement newCellEle) {
+		for (int i = startRow; i < endRow; i++) {
+			for (int j = startClm; j < endClm; j++) {
+				OdfTableCell cell = getCellByPosition(j, i);
+				updateCellRepository(cell.getOdfElement(), cell.mnRepeatedColIndex, cell.mnRepeatedRowIndex,
+						newCellEle, cell.mnRepeatedColIndex, cell.mnRepeatedRowIndex);
+			}
+		}
+	}
+}
+
+/**
+ * Record the Cell Cover Info in this cell range.
+ * <p>
+ * Sometimes the covered cell is not tagged as <table:covered-table-cell> element.
+ *
+ */
+class CellCoverInfo {
+
+	int nStartCol;
+	int nStartRow;
+	int nEndCol;
+	int nEndRow;
+
+	CellCoverInfo(int nSC, int nSR, int nColumnSpan, int nRowSpan) {
+		nStartCol = nSC;
+		nStartRow = nSR;
+		nEndCol = nSC + nColumnSpan - 1;
+		nEndRow = nSR + nRowSpan - 1;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableCell.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableCell.java
new file mode 100644
index 0000000..8a45404
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableCell.java
@@ -0,0 +1,1735 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoWrapOptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencySymbolElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberCurrencyStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfWhitespaceProcessor;
+import org.odftoolkit.odfdom.type.Color;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * OdfTableCell represents table cell feature in ODF document.
+ * <p>
+ * OdfTable provides methods to get/set/modify the cell content and cell properties.
+ *
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.table.Cell} in Simple API.
+ */
+public class OdfTableCell {
+
+	TableTableCellElementBase mOdfElement;
+	int mnRepeatedColIndex;
+	int mnRepeatedRowIndex;
+	OdfTable mOwnerTable;
+	String msFormatString;
+	/**
+	 * The default date format of table cell.
+	 */
+	private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
+	/**
+	 * The default time format of table cell.
+	 */
+	private static final String DEFAULT_TIME_FORMAT = "'PT'HH'H'mm'M'ss'S'";
+	/**
+	 * The default cell back color of table cell.
+	 */
+	private static final String DEFAULT_BACKGROUND_COLOR = "#FFFFFF";
+	/**
+	 * The default column spanned number.
+	 */
+	private static final int DEFAULT_COLUMN_SPANNED_NUMBER = 1;
+	/**
+	 * The default row spanned number.
+	 */
+	private static final int DEFAULT_ROW_SPANNED_NUMBER = 1;
+	/**
+	 * The default columns repeated number.
+	 */
+	private static final int DEFAULT_COLUMNS_REPEATED_NUMBER = 1;
+	TableTableCellElementBase mCellElement;
+	OdfDocument mDocument;
+
+	OdfTableCell(TableTableCellElementBase odfElement, int repeatedColIndex, int repeatedRowIndex) {
+		mCellElement = odfElement;
+		mnRepeatedColIndex = repeatedColIndex;
+		mnRepeatedRowIndex = repeatedRowIndex;
+		mOwnerTable = getTable();
+		mDocument = ((OdfDocument) ((OdfFileDom) mCellElement.getOwnerDocument()).getDocument());
+	}
+
+	/**
+	 * Get the <code>OdfTableCell</code> instance from the <code>TableTableCellElementBase</code> instance.
+	 * <p>
+	 * Each <code>TableTableCellElementBase</code> instance has a one-to-one relationship to the a <code>OdfTableCell</code> instance.
+	 * 
+	 * @param cellElement	the cell element that need to get the corresponding <code>OdfTableCell</code> instance
+	 * @return the <code>OdfTableCell</code> instance that represents a specified cell element
+	 */
+	public static OdfTableCell getInstance(TableTableCellElementBase cellElement) {
+		TableTableElement tableElement = null;
+		Node node = cellElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				tableElement = (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		OdfTable table = null;
+		if (tableElement != null) {
+			table = OdfTable.getInstance(tableElement);
+		} else {
+			throw new IllegalArgumentException("the cellElement is not in the table dom tree");
+		}
+
+		OdfTableCell cell = table.getCellInstance(cellElement, 0, 0);
+		int colRepeatedNum = cell.getColumnsRepeatedNumber();
+		int rowRepeatedNum = cell.getTableRow().getRowsRepeatedNumber();
+		if (colRepeatedNum > 1 && rowRepeatedNum > 1) {
+			if (colRepeatedNum > 1) {
+				Logger.getLogger(OdfTableCell.class.getName()).log(Level.WARNING, "the cell has the repeated column number, and puzzled about get which repeated column index of the cell,");
+			}
+			if (rowRepeatedNum > 1) {
+				Logger.getLogger(OdfTableCell.class.getName()).log(Level.WARNING, "the row contains the current cell has the repeated row number, and puzzled about get which repeated row index of the cell,");
+			}
+			Logger.getLogger(OdfTableCell.class.getName()).log(Level.WARNING, "here just return the first cell that the repeated column index is 0 and repeated row index is 0, too.");
+		}
+		return cell;
+	}
+
+	/**
+	 * Return the horizontal alignment setting of this cell.
+	 * <p>
+	 * The returned value can be "center", "end", "justify", "left", "right", or "start".
+	 * If no horizontal alignment is set, null will be returned.
+	 * 
+	 * @return the horizontal alignment setting. 
+	 */
+	public String getHorizontalAlignment() {
+		OdfStyleBase styleElement = getCellStyleElement();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "text-align"));
+			return styleElement.getProperty(property);
+		}
+		return null;
+	}
+
+	/**
+	 * Set the horizontal alignment setting of this cell.
+	 * <p>
+	 * The parameter can be "center", "end", "justify", "left", "right", or "start".
+	 * Actually, "left" will be interpreted as "start", while "right" will be interpreted as "end".
+	 * If argument is null, the explicit horizontal alignment setting is removed.
+	 * 
+	 * @param horizontalAlignment	the horizontal alignment setting.
+	 */
+	public void setHorizontalAlignment(String horizontalAlignment) {
+		if (FoTextAlignAttribute.Value.LEFT.toString().equalsIgnoreCase(horizontalAlignment)) {
+			horizontalAlignment = FoTextAlignAttribute.Value.START.toString();
+		}
+		if (FoTextAlignAttribute.Value.RIGHT.toString().equalsIgnoreCase(horizontalAlignment)) {
+			horizontalAlignment = FoTextAlignAttribute.Value.END.toString();
+		}
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getCellStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(
+					OdfDocumentNamespace.FO, "text-align"));
+			if (horizontalAlignment != null) {
+				styleElement.setProperty(property, horizontalAlignment);
+			} else {
+				styleElement.removeProperty(property);
+			}
+		}
+	}
+
+	/**
+	 * Return the vertical alignment setting of this cell.
+	 * <p>
+	 * The returned value can be "auto", "automatic", "baseline", "bottom", "middle", or "top".
+	 * 
+	 * @return the vertical alignment setting of this cell. 
+	 */
+	public String getVerticalAlignment() {
+		OdfStyleBase styleElement = getCellStyleElement();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+			return styleElement.getProperty(property);
+		}
+		return null;
+	}
+
+	/**
+	 * Set the vertical alignment setting of this cell.
+	 * <p>
+	 * The parameter can be "auto", "automatic", "baseline", "bottom", "middle", or "top".
+	 * If argument is null, the explicit vertical alignment setting is removed.
+	 * 
+	 * @param verticalAlignment	the vertical alignment setting.
+	 */
+	public void setVerticalAlignment(String verticalAlignment) {
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getCellStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(
+					OdfDocumentNamespace.STYLE, "vertical-align"));
+			if (verticalAlignment != null) {
+				styleElement.setProperty(property, verticalAlignment);
+			} else {
+				styleElement.removeProperty(property);
+			}
+		}
+	}
+
+	/**
+	 * Return the wrap option of this cell.
+	 * @return true if the cell content can be wrapped; 
+	 * <p>
+	 * false if the cell content cannot be wrapped.
+	 */
+	public boolean isTextWrapped() {
+		OdfStyleBase styleElement = getCellStyleElement();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "wrap-option"));
+			String wrapped = styleElement.getProperty(property);
+			if ((wrapped != null) && (wrapped.equals(FoWrapOptionAttribute.Value.WRAP.toString()))) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Set the wrap option of this cell.
+	 * @param isTextWrapped	whether the cell content can be wrapped or not
+	 */
+	public void setTextWrapped(boolean isTextWrapped) {
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getCellStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "wrap-option"));
+			if (isTextWrapped) {
+				styleElement.setProperty(property, FoWrapOptionAttribute.Value.WRAP.toString());
+			} else {
+				styleElement.setProperty(property, FoWrapOptionAttribute.Value.NO_WRAP.toString());
+			}
+		}
+	}
+
+	private TableTableRowElement findRowInTableHeaderRows(TableTableHeaderRowsElement headers, TableTableRowElement tr, int[] indexs) {
+		int result = 0;
+		for (Node m : new DomNodeList(headers.getChildNodes())) {
+			if (m == tr) {
+				indexs[0] = result;
+				return tr;
+			}
+			if (m instanceof TableTableRowElement) {
+				result += ((TableTableRowElement) m).getTableNumberRowsRepeatedAttribute().intValue();
+			}
+		}
+		indexs[0] = result;
+		return null;
+	}
+
+	private TableTableRowElement findRowInTableRows(TableTableRowsElement rows, TableTableRowElement tr, int[] indexs) {
+		int result = 0;
+		for (Node m : new DomNodeList(rows.getChildNodes())) {
+			if (m == tr) {
+				indexs[0] = result;
+				return tr;
+			}
+			if (m instanceof TableTableRowElement) {
+				result += ((TableTableRowElement) m).getTableNumberRowsRepeatedAttribute().intValue();
+			}
+		}
+		indexs[0] = result;
+		return null;
+	}
+
+	private TableTableRowElement findRowInTableRowGroup(OdfElement group, TableTableRowElement tr, int[] indexs) {
+		int result = 0;
+		int[] resultIndexs = new int[1];
+
+		if (!(group instanceof TableTableRowGroupElement) && !(group instanceof TableTableElement)) {
+			indexs[0] = 0;
+			return null;
+		}
+
+		for (Node m : new DomNodeList(group.getChildNodes())) {
+			if (m instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) m;
+				TableTableRowElement returnEle = findRowInTableHeaderRows(headers, tr, resultIndexs);
+				result += resultIndexs[0];
+				if (returnEle != null) {//find
+					indexs[0] = result;
+					return returnEle;
+				}
+			} else if (m instanceof TableTableRowGroupElement) {
+				TableTableRowGroupElement aGroup = (TableTableRowGroupElement) m;
+				TableTableRowElement returnEle = findRowInTableRowGroup(aGroup, tr, resultIndexs);
+				result += resultIndexs[0];
+				if (returnEle != null) {//find
+					indexs[0] = result;
+					return returnEle;
+				}
+			} else if (m instanceof TableTableRowsElement) {
+				TableTableRowsElement rows = (TableTableRowsElement) m;
+				TableTableRowElement returnEle = findRowInTableRows(rows, tr, resultIndexs);
+				result += resultIndexs[0];
+				if (returnEle != null) {//find
+					indexs[0] = result;
+					return returnEle;
+				}
+			} else if (m instanceof TableTableRowElement) {
+				if (m == tr) { //find
+					indexs[0] = result;
+					return tr;
+				}
+				result += ((TableTableRowElement) m).getTableNumberRowsRepeatedAttribute().intValue();
+			}
+		}
+		indexs[0] = result;
+		return null;
+	}
+
+	/**
+	 * Get the index of the table row which contains this cell.
+	 * @return the index of the row containing this cell
+	 */
+	public int getRowIndex() {
+		TableTableElement table = getTableElement();
+		TableTableRowElement tr = getTableRowElement();
+		int[] indexs = new int[1];
+
+		TableTableRowElement returnEle = findRowInTableRowGroup(table, tr, indexs);
+		if (returnEle != null) {
+			return (indexs[0] + mnRepeatedRowIndex);
+		} else {
+			return -1;
+		}
+	}
+
+	/**
+	 * Get an instance of table feature which contains this cell.
+	 * @return the table containing this cell
+	 */
+	public OdfTable getTable() {
+		TableTableElement tableElement = getTableElement();
+		if (tableElement != null) {
+			return OdfTable.getInstance(tableElement);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the index of the table column which contains this cell.
+	 * @return the index of the column containing this cell
+	 */
+	public int getColumnIndex() {
+		TableTableRowElement tr = (TableTableRowElement) mCellElement.getParentNode();
+		int result = 0;
+		for (Node n : new DomNodeList(tr.getChildNodes())) {
+			if (n == mCellElement) {
+				return result + mnRepeatedColIndex;
+			}
+			if (n instanceof TableTableCellElementBase) {
+				result += ((TableTableCellElementBase) n).getTableNumberColumnsRepeatedAttribute().intValue();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Get the instance of table column feature which contains this cell.
+	 * @return the instance of table column feature which contains the cell.
+	 */
+	public OdfTableColumn getTableColumn() {
+		OdfTable table = getTable();
+		int index = getColumnIndex();
+		return table.getColumnByIndex(index);
+	}
+
+	TableTableColumnElement getTableColumnElement() {
+		//return OdfTableCellBaseImpl.getTableColumn((OdfTableCellBase) mCellElement);
+		TableTableElement tableElement = getTableElement();
+		int columnindex = getColumnIndex();
+		OdfTable fTable = OdfTable.getInstance(tableElement);
+		return fTable.getColumnElementByIndex(columnindex);
+	}
+
+	/**
+	 * Get the instance of table row feature which contains this cell.
+	 * @return the instance of table row feature which contains the cell.
+	 */
+	public OdfTableRow getTableRow() {
+		OdfTable table = getTable();
+		int index = getRowIndex();
+		return table.getRowByIndex(index);
+	}
+
+	private TableTableRowElement getTableRowElement() {
+		Node node = mCellElement.getParentNode();
+		if (node instanceof TableTableRowElement) {
+			return (TableTableRowElement) node;
+		}
+		return null;
+	}
+
+	/**
+	 * Get the table object who contains this cell.
+	 * @return the table object who contains the cell.
+	 */
+	private TableTableElement getTableElement() {
+		Node node = mCellElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				return (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	/**
+	 * Get the cell that covers this cell.
+	 * <p>
+	 * If the cell is a covered cell, the owner cell will be returned;
+	 * if the cell is a real cell , the cell itself will be returned.
+	 * @return the cell that covers the current cell
+	 */
+	public OdfTableCell getOwnerTableCell() {
+		OdfTable ownerTable = getTable();
+		List<CellCoverInfo> coverList = ownerTable.getCellCoverInfos(0, 0, ownerTable.getColumnCount() - 1, ownerTable.getRowCount() - 1);
+		return ownerTable.getOwnerCellByPosition(coverList, getColumnIndex(), getRowIndex());
+	}
+
+	/**
+	 * Get the instance of <code>TableTableCellElementBase</code> which represents this cell.
+	 * @return the instance of <code>TableTableCellElementBase</code> 
+	 */
+	public TableTableCellElementBase getOdfElement() {
+		return mCellElement;
+	}
+
+	/**
+	 * Return the currency code of this cell, for example, "USD", "EUR", "CNY", and etc. 
+	 * <p>
+	 * If the value type is not "currency", an IllegalArgumentException will be thrown.
+	 * 
+	 * @return the currency code
+	 * <p>
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown if the value type is not "currency".
+	 */
+	public String getCurrencyCode() {
+		if (mCellElement.getOfficeValueTypeAttribute().equals(OfficeValueTypeAttribute.Value.CURRENCY.toString())) {
+			return mCellElement.getOfficeCurrencyAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the currency code of this cell, for example, "USD", "EUR", "CNY", and etc.
+	 * 
+	 * @param currency	the currency code that need to be set.
+	 * @throws IllegalArgumentException  If input <code>currency</code> is null, an IllegalArgumentException will be thrown.
+	 */
+	public void setCurrencyCode(String currency) {
+		if (currency == null) {
+			throw new IllegalArgumentException(
+					"Currency code of cell should not be null.");
+		}
+		splitRepeatedCells();
+		if (mCellElement.getOfficeValueTypeAttribute().equals(OfficeValueTypeAttribute.Value.CURRENCY.toString())) {
+			mCellElement.setOfficeCurrencyAttribute(currency);
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	private void setTypeAttr(OfficeValueTypeAttribute.Value type) {
+		mCellElement.setOfficeValueTypeAttribute(type.toString());
+	}
+
+	/**
+	 * Set the value type of this cell.
+	 * The parameter can be "boolean", "currency", "date", "float", "percentage", "string" or "time".
+	 * <p>
+	 * If the parameter <code>type</code> is not a valid cell type, an IllegalArgumentException will be thrown.
+	 * 
+	 * @param type	the type that need to be set
+	 * If input type is null, an IllegalArgumentException will be thrown.
+	 */
+	public void setValueType(String type) {
+		if (type == null) {
+			throw new IllegalArgumentException("type shouldn't be null.");
+		}
+		String sType = type.toLowerCase();
+		OfficeValueTypeAttribute.Value value = OfficeValueTypeAttribute.Value.enumValueOf(sType);
+		if (value == null) {
+			throw new IllegalArgumentException("the value type of cell is not valid");
+		}
+
+		mCellElement.setOfficeValueTypeAttribute(sType);
+	}
+
+	/**
+	 * Get the value type of this cell.
+	 * The returned value can be "boolean", "currency", "date", "float", "percentage", "string" or "time".
+	 * If no value type is set, null will be returned.
+	 * 
+	 * @return the type of the cell
+	 */
+	public String getValueType() {
+		return mCellElement.getOfficeValueTypeAttribute();
+	}
+
+	private OfficeValueTypeAttribute.Value getTypeAttr() {
+		String type = mCellElement.getOfficeValueTypeAttribute();
+		return OfficeValueTypeAttribute.Value.enumValueOf(type);
+	}
+
+	/**
+	 * Get the double value of this cell as Double object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "float".
+	 * 
+	 * @return the double value of this cell as a Double object. If the cell value is empty, null will be returned.
+	 * <p>
+	 * An IllegalArgumentException will be thrown if the cell type is not "float".
+	 */
+	public Double getDoubleValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.FLOAT) {
+			return mCellElement.getOfficeValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Get the currency value of this cell as Double object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "currency".
+	 * 
+	 * @return the currency value of this cell as a Double object. If the cell value is empty, null will be returned.
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown if the cell type is not "currency".
+	 */
+	public Double getCurrencyValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.CURRENCY) {
+			return mCellElement.getOfficeValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Get the symbol of currency.
+	 * @return the currency symbol
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown if the value type is not "currency".
+	 */
+	public String getCurrencySymbol() {
+		if (getTypeAttr() != OfficeValueTypeAttribute.Value.CURRENCY) {
+			throw new IllegalArgumentException();
+		}
+
+		OdfStyle style = getCellStyleElement();
+		if (style != null) {
+			String dataStyleName = style.getOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.STYLE, "data-style-name"));
+			OdfNumberCurrencyStyle dataStyle = mCellElement.getAutomaticStyles().getCurrencyStyle(dataStyleName);
+			if (dataStyle == null) {
+				dataStyle = mDocument.getDocumentStyles().getCurrencyStyle(dataStyleName);
+			}
+			if ((dataStyle != null) && (dataStyle.getCurrencySymbolElement() != null)) {
+				return dataStyle.getCurrencySymbolElement().getTextContent();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Set the value and currency of the cell, and set the value type as "currency". 
+	 * If<code>value</value> is null, the cell value will be removed.
+	 * 
+	 * @param value  the value that will be set 
+	 * @param currency	the currency that will be set.
+	 * @throws IllegalArgumentException  If input currency is null, an IllegalArgumentException will be thrown.
+	 */
+	public void setCurrencyValue(Double value, String currency) {
+		if (currency == null) {
+			throw new IllegalArgumentException("currency shouldn't be null.");
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.CURRENCY);
+		mCellElement.setOfficeValueAttribute(value);
+		mCellElement.setOfficeCurrencyAttribute(currency);
+	}
+
+	/**
+	 * Get the cell percentage value as Double object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "percentage".
+	 * 
+	 * @return the percentage value of this cell as a Double object. If the cell value is empty, null will be returned.
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown if the cell type is not "percentage".
+	 */
+	public Double getPercentageValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.PERCENTAGE) {
+			return mCellElement.getOfficeValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a percentage value and set the value type as percentage too.
+	 * If<code>value</value> is null, the cell value will be removed.
+	 * 
+	 * @param value	the value that will be set
+	 */
+	public void setPercentageValue(Double value) {
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.PERCENTAGE);
+		mCellElement.setOfficeValueAttribute(value);
+	}
+
+	/**
+	 * Get the text displayed in this cell.
+	 * 
+	 * @return the text displayed in this cell
+	 */
+	public String getDisplayText() {
+		//TODO: This function doesn't work well if a cell contains a list.
+		//Refer to testGetSetTextValue();
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+		return textProcessor.getText(mCellElement);
+	}
+
+	/**
+	 * Set the text displayed in this cell.
+	 * <p>
+	 * Please note the displayed text in ODF viewer might be different with the value set by this method,
+	 * because the displayed text in ODF viewer is calculated and set by editor. 
+	 * 
+	 * @param content	the displayed text. 
+	 * If content is null, it will display the empty string instead. 
+	 */
+	public void setDisplayText(String content) {
+		if (content == null) {
+			content = "";
+		}
+		removeContent();
+
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+		OdfTextParagraph para = new OdfTextParagraph((OdfFileDom) mCellElement.getOwnerDocument());
+		textProcessor.append(para, content);
+
+		mCellElement.appendChild(para);
+	}
+
+	/**
+	 * Set the text displayed in this cell, with a specified style name.
+	 * <p>
+	 * Please note the displayed text in ODF viewer might be different with the value set by this method,
+	 * because the displayed text in ODF viewer are calculated and set by editor. 
+	 * 
+	 * @param content    the displayed text. If content is null, it will display the empty string instead. 
+	 * @param stylename  the style name. If stylename is null, the content will use the default paragraph style.
+	 */
+	public void setDisplayText(String content, String stylename) {
+		if (content == null) {
+			content = "";
+		}
+		removeContent();
+
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+		OdfTextParagraph para = new OdfTextParagraph((OdfFileDom) mCellElement.getOwnerDocument());
+		if ((stylename != null) && (stylename.length() > 0)) {
+			para.setStyleName(stylename);
+		}
+		textProcessor.append(para, content);
+
+		mCellElement.appendChild(para);
+	}
+
+	/**
+	 * Set the cell value as a double and set the value type to be "float".
+	 * 
+	 * @param value	the double value that will be set. If<code>value</value> is null, the cell value will be removed.
+	 */
+	public void setDoubleValue(Double value) {
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.FLOAT);
+		mCellElement.setOfficeValueAttribute(value);
+		setDisplayText(value + "");
+	}
+
+	/**
+	 * Get the cell boolean value as Boolean object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "boolean".
+	 * 
+	 * @return the Boolean value of cell. If the cell value is empty, null will be returned.
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown if the cell type is not "boolean".
+	 */
+	public Boolean getBooleanValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.BOOLEAN) {
+			return mCellElement.getOfficeBooleanValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a boolean and set the value type to be boolean. If<code>value</value> is null, the cell value will be removed.
+	 * 
+	 * @param value	the value of boolean type
+	 */
+	public void setBooleanValue(Boolean value) {
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.BOOLEAN);
+		mCellElement.setOfficeBooleanValueAttribute(value);
+		setDisplayText(value + "");
+	}
+
+	/**
+	 * Get the cell date value as Calendar.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "date".
+	 * 
+	 * @return the Calendar value of cell
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown, if the cell type is not "date".
+	 */
+	public Calendar getDateValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.DATE) {
+			String dateStr = mCellElement.getOfficeDateValueAttribute();
+			if (dateStr == null) {
+				return null;
+			}
+			Date date = parseString(dateStr, DEFAULT_DATE_FORMAT);
+			Calendar calender = Calendar.getInstance();
+			calender.setTime(date);
+			return calender;
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a date, and set the value type to be "date".
+	 * 
+	 * @param date	the value of {@link java.util.Calendar java.util.Calendar} type.
+	 */
+	public void setDateValue(Calendar date) {
+		if (date == null) {
+			throw new IllegalArgumentException("date shouldn't be null.");
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.DATE);
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
+		String svalue = simpleFormat.format(date.getTime());
+		mCellElement.setOfficeDateValueAttribute(svalue);
+		setDisplayText(svalue);
+	}
+
+	/**
+	 * Set the cell value as a string, and set the value type to be string.
+	 * 
+	 * @param str	the value of string type. 
+	 * If input string is null, an empty string will be set.
+	 */
+	public void setStringValue(String str) {
+		if (str == null) {
+			str = "";
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.STRING);
+		mCellElement.setOfficeStringValueAttribute(str);
+		setDisplayText(str);
+	}
+
+	//Note: if you want to change the cell
+	//splitRepeatedCells must be called first in order to 
+	//1. update parent row if the row is the repeated rows.
+	//2. update the cell itself if the cell is the column repeated cells.
+	void splitRepeatedCells() {
+		OdfTable table = getTable();
+		//1.if the parent row is the repeated row
+		//the repeated row has to be separated
+		//after this the cell element and repeated index will be updated
+		//according to the new parent row
+		OdfTableRow row = getTableRow();
+		int colIndex = getColumnIndex();
+		if (row.getRowsRepeatedNumber() > 1) {
+			row.splitRepeatedRows();
+			OdfTableCell cell = row.getCellByIndex(colIndex);
+			mCellElement = cell.getOdfElement();
+			mnRepeatedColIndex = cell.mnRepeatedColIndex;
+			mnRepeatedRowIndex = cell.mnRepeatedRowIndex;
+		}
+
+		//2.if the cell is the column repeated cell
+		//this repeated cell has to be separated
+		int repeateNum = getColumnsRepeatedNumber();
+		if (repeateNum > 1) {
+			//change this repeated column to several single columns
+			TableTableCellElementBase ownerCellElement = null;
+			int repeatedColIndex = mnRepeatedColIndex;
+			Node refElement = mCellElement;
+			for (int i = repeateNum - 1; i >= 0; i--) {
+				TableTableCellElementBase newCell = (TableTableCellElementBase) mCellElement.cloneNode(true);
+				newCell.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+				row.getOdfElement().insertBefore(newCell, refElement);
+				refElement = newCell;
+				if (repeatedColIndex == i) {
+					ownerCellElement = newCell;
+				} else {
+					table.updateCellRepository(mCellElement, i, mnRepeatedRowIndex, newCell, 0, mnRepeatedRowIndex);
+				}
+			}
+			//remove this column element
+			row.getOdfElement().removeChild(mCellElement);
+
+			if (ownerCellElement != null) {
+				table.updateCellRepository(mCellElement, mnRepeatedColIndex, mnRepeatedRowIndex, ownerCellElement, 0, mnRepeatedRowIndex);
+				mCellElement = ownerCellElement;
+				mnRepeatedColIndex = 0;
+			}
+		}
+	}
+
+	/**
+	 * Get the cell value as a string.
+	 * <p>
+	 * If the cell type is not string, the display text will be returned.
+	 * 
+	 * @return the string value of this cell, or the display text
+	 */
+	public String getStringValue() {
+		return getDisplayText();
+	}
+
+	/**
+	 * Get the cell value as {@link java.util.Calendar java.util.Calendar}.
+	 * <p>
+	 * Throw exception if the cell type is not "time".
+	 * 
+	 * @return the Calendar value of cell
+	 * @throws IllegalArgumentException  an IllegalArgumentException will be thrown if the cell type is not time.
+	 */
+	public Calendar getTimeValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.TIME) {
+			String timeStr = mCellElement.getOfficeTimeValueAttribute();
+                        if (timeStr == null) {
+                            return null;
+                        }
+			Date date = parseString(timeStr, DEFAULT_TIME_FORMAT);
+			Calendar calender = Calendar.getInstance();
+			calender.setTime(date);
+			calender.clear(Calendar.YEAR);
+			calender.clear(Calendar.MONTH);
+			calender.clear(Calendar.DAY_OF_MONTH);
+			return calender;
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a time and set the value type to be "time" too.
+	 * 
+	 * @param time  the value of {@link java.util.Calendar java.util.Calendar} type.
+	 * @throws IllegalArgumentException   If input time is null, an IllegalArgumentException exception will be thrown.
+	 */
+	public void setTimeValue(Calendar time) {
+		if (time == null) {
+			throw new IllegalArgumentException("time shouldn't be null.");
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.TIME);
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
+		String svalue = simpleFormat.format(time.getTime());
+		mCellElement.setOfficeTimeValueAttribute(svalue);
+		setDisplayText(svalue);
+	}
+
+	private Date parseString(String value, String format) {
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(format);
+		Date simpleDate = null;
+		try {
+			simpleDate = simpleFormat.parse(value);
+		} catch (ParseException e) {
+			Logger.getLogger(OdfTableCell.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			return null;
+		}
+		return simpleDate;
+	}
+
+	/**
+	 * Get the background color of this cell.
+	 * <p>
+	 * If no background color is set, default background color "#FFFFFF" will be returned.
+	 * 
+	 * @return the background color of this cell 
+	 */
+	public Color getCellBackgroundColor() {
+		Color color = Color.WHITE;
+		OdfStyleBase styleElement = getCellStyleElement();
+		if (styleElement != null) {
+			OdfStyleProperty bkColorProperty = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+			String property = styleElement.getProperty(bkColorProperty);
+			if (property != null) {
+				try {
+					color = new Color(property);
+				} catch (Exception e) {
+					// use default background color White
+					color = Color.WHITE;
+					Logger.getLogger(OdfTableCell.class.getName()).log(Level.WARNING, e.getMessage());
+				}
+			}
+		}
+		return color;
+	}
+
+	/**
+	 * Get the background color string of this cell.
+	 * <p>
+	 * If no background color is set, default background color "#FFFFFF" will be returned.
+	 * 
+	 * @return the background color of this cell 
+	 */
+	public String getCellBackgroundColorString() {
+		String color = DEFAULT_BACKGROUND_COLOR;
+		OdfStyleBase styleElement = getCellStyleElement();
+		if (styleElement != null) {
+			OdfStyleProperty bkColorProperty = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+			String property = styleElement.getProperty(bkColorProperty);
+			if (Color.isValid(property)) {
+				color = property;
+			}
+		}
+		return color;
+	}
+
+	/**
+	 * Set the background color of this cell.
+	 * 
+	 * @param cellBackgroundColor
+	 *            the background color that need to set. 
+	 *            If <code>cellBackgroundColor</code> is null, default background color <code>Color.WHITE</code> will be set.
+	 */
+	public void setCellBackgroundColor(Color cellBackgroundColor) {
+		if (cellBackgroundColor == null) {
+			cellBackgroundColor = Color.WHITE;
+		}
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getCellStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty bkColorProperty = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+			styleElement.setProperty(bkColorProperty, cellBackgroundColor.toString());
+		}
+	}
+
+	/**
+	 * Set the background color of this cell using string. The string must be a valid argument for 
+	 * constructing {@link org.odftoolkit.odfdom.type.Color <code>org.odftoolkit.odfdom.type.Color</code>}. 
+	 * 
+	 * @param cellBackgroundColor
+	 *            the background color that need to set. 
+	 *            If cellBackgroundColor is null, default background color #FFFFFF will be set.
+	 * @see org.odftoolkit.odfdom.type.Color
+	 */
+	public void setCellBackgroundColor(String cellBackgroundColor) {
+		if (!Color.isValid(cellBackgroundColor)) {
+			Logger.getLogger(OdfTableCell.class.getName()).log(Level.WARNING, "Parameter is invalid for datatype Color, default background color #FFFFFF will be set.");
+			cellBackgroundColor = DEFAULT_BACKGROUND_COLOR;
+		}
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getCellStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty bkColorProperty = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties,
+					OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+			styleElement.setProperty(bkColorProperty, cellBackgroundColor);
+		}
+	}
+
+	/**
+	 * Get the column spanned number of this cell.
+	 * 
+	 * @return the column spanned number
+	 */
+	int getColumnSpannedNumber() {
+		if (mCellElement instanceof TableCoveredTableCellElement) {
+			return 1;
+		}
+		Integer value = ((TableTableCellElement) mCellElement).getTableNumberColumnsSpannedAttribute();
+		if (value != null) {
+			return value.intValue();
+		}
+		return DEFAULT_COLUMN_SPANNED_NUMBER;
+	}
+
+	/**
+	 * Get the column repeated number of this cell.
+	 * 
+	 * @return the column repeated number
+	 */
+	int getColumnsRepeatedNumber() {
+		Integer value = mCellElement.getTableNumberColumnsRepeatedAttribute();
+		if (value != null) {
+			return value.intValue();
+		}
+		return DEFAULT_COLUMNS_REPEATED_NUMBER;
+	}
+
+	/**
+	 * Get the row spanned number of this cell.
+	 * 
+	 * @return the row spanned number
+	 */
+	int getRowSpannedNumber() {
+		if (mCellElement instanceof TableCoveredTableCellElement) {
+			return 1;
+		}
+		Integer value = ((TableTableCellElement) mCellElement).getTableNumberRowsSpannedAttribute();
+		if (value != null) {
+			return value.intValue();
+		}
+		return DEFAULT_ROW_SPANNED_NUMBER;
+	}
+
+	/**
+	 * Set the column spanned number.
+	 * 
+	 * @param spannedNum
+	 *            the column spanned number to be set. If spannedNum is less than 1,
+	 *            default column spanned number 1 will be
+	 *            set.
+	 */
+	void setColumnSpannedNumber(int spannedNum) {
+		if (spannedNum < 1) {
+			spannedNum = DEFAULT_COLUMN_SPANNED_NUMBER;
+		}
+		splitRepeatedCells();
+		if (mCellElement instanceof TableTableCellElement) {
+			((TableTableCellElement) mCellElement).setTableNumberColumnsSpannedAttribute(new Integer(spannedNum));
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the column repeated number.
+	 * 
+	 * @param repeatedNum
+	 *            the column repeated number that need to be set. If repeatedNum
+	 *            is less than 1, default columns repeated number 1 will be set.
+	 */
+	void setColumnsRepeatedNumber(int repeatedNum) {
+		if (repeatedNum < 1) {
+			repeatedNum = DEFAULT_COLUMNS_REPEATED_NUMBER;
+		}
+		mCellElement.setTableNumberColumnsRepeatedAttribute(new Integer(repeatedNum));
+	}
+
+	/**
+	 * Set the row spanned number.
+	 * 
+	 * @param spannedNum	row spanned number that need to be set 
+	 *            the row spanned number that need to be set. If spannedNum is
+	 *            less than 1, default row spanned number 1 will be
+	 *            set.
+	 */
+	void setRowSpannedNumber(int spannedNum) {
+		if (spannedNum < 1) {
+			spannedNum = DEFAULT_ROW_SPANNED_NUMBER;
+		}
+		splitRepeatedCells();
+		if (mCellElement instanceof TableTableCellElement) {
+			((TableTableCellElement) mCellElement).setTableNumberRowsSpannedAttribute(new Integer(spannedNum));
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Judge if the ODF DOM element of this cell is the covered cell element.
+	 * 
+	 * @return true if the ODFDOM element is TableCoveredTableCellElement
+	 */
+	boolean isCoveredElement() {
+		if (mCellElement instanceof TableCoveredTableCellElement) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Get the style name of this cell.
+	 * 
+	 * @return the name of the style
+	 */
+	public String getStyleName() {
+		OdfStyle style = getCellStyleElement();
+		if (style == null) {
+			return "";
+		}
+		return style.getStyleNameAttribute();
+	}
+
+	/** 
+	 * Set a formula to the cell.
+	 * <p>
+	 * Please note, the parameter <code>formula</code> will not be checked and interpreted;
+	 * the cell value will not be calculated.
+	 * It's just simply set as a formula attribute. See {@odf.attribute table:formula}
+	 * 
+	 * @param formula	the formula that need to be set.
+	 * @throws IllegalArgumentException  if formula is null, an IllegalArgumentException will be thrown.
+	 */
+	public void setFormula(String formula) {
+		if (formula == null) {
+			throw new IllegalArgumentException("formula shouldn't be null.");
+		}
+		splitRepeatedCells();
+		mCellElement.setTableFormulaAttribute(formula);
+	}
+
+	/**
+	 * Get the formula string of the cell.
+	 * 
+	 * @return the formula representation of the cell
+	 * <p>
+	 * If the cell does not contain a formula, null will be returned.
+	 * 
+	 */
+	public String getFormula() {
+		return mCellElement.getTableFormulaAttribute();
+	}
+
+//	/**
+//	 * get the error value of the cell
+//	 * if the formula can not be calculated, an error will be set
+//	 * @return
+//	 * 			return 0 if the cell has no error
+//	 * 			return the error value of the cell if the formula result can not be calculated
+//	 * 			such as divided by 0
+//	 */
+//	public long getError()
+//	{
+//		return 0;
+//	}
+	/**
+	 * Set the currency symbol and overall format of a currency cell.
+	 * <p>
+	 * Please note the overall format includes the symbol character, for example: $#,##0.00.
+	 * <p>
+	 * This function only works for currency.
+	 * @param currencySymbol	the currency symbol
+	 * @param format			overall format
+	 * @throws IllegalArgumentException  if input currencySymbol or format is null, an IllegalArgumentException will be thrown.
+	 */
+	public void setCurrencyFormat(String currencySymbol, String format) {
+		if (currencySymbol == null) {
+			throw new IllegalArgumentException(
+					"currencySymbol shouldn't be null.");
+		}
+		if (format == null) {
+			throw new IllegalArgumentException("format shouldn't be null.");
+		}
+		splitRepeatedCells();
+		String type = mCellElement.getOfficeValueTypeAttribute();
+		OfficeValueTypeAttribute.Value typeValue = null;
+		msFormatString = format;
+		if (type != null) {
+			typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);
+		}
+
+		if (typeValue != OfficeValueTypeAttribute.Value.CURRENCY) {
+			throw new IllegalArgumentException();
+		}
+
+		OdfNumberCurrencyStyle currencyStyle = new OdfNumberCurrencyStyle(
+				(OdfFileDom) mCellElement.getOwnerDocument(),
+				currencySymbol,
+				format,
+				getUniqueCurrencyStyleName());
+		mCellElement.getAutomaticStyles().appendChild(currencyStyle);
+		setDataDisplayStyleName(currencyStyle.getStyleNameAttribute());
+		Double value = getCurrencyValue();
+
+		//set display text
+		if (value != null) {
+			setDisplayText(formatCurrency(currencyStyle, value.doubleValue()));
+		}
+	}
+
+	//This method doesn't handle style:map element.
+	private String formatCurrency(OdfNumberCurrencyStyle currencyStyle, double value) {
+		String valuestr = "";
+		for (Node m : new DomNodeList(currencyStyle.getChildNodes())) {
+			if (m instanceof NumberCurrencySymbolElement) {
+				valuestr += m.getTextContent();
+			} else if (m instanceof NumberNumberElement) {
+				String numberformat = currencyStyle.getNumberFormat();
+				valuestr += (new DecimalFormat(numberformat)).format(value);
+			} else if (m instanceof NumberTextElement) {
+				String textcontent = m.getTextContent();
+				if (textcontent == null || textcontent.length() == 0) {
+					textcontent = " ";
+				}
+				valuestr += textcontent;
+			}
+		}
+		return valuestr;
+	}
+
+	/**
+	 * Set the format string of the cell.
+	 * <p>
+	 * This function only works for float, date, time and percentage, otherwise an
+	 * {@link java.lang.IllegalArgumentException} will be thrown. 
+	 * <p>
+	 * For value type float and percentage, the <code>formatStr</code> must follow the encoding 
+	 * rule of {@link java.text.DecimalFormat <code>java.text.DecimalFormat</code>}.
+	 * For value type date and time, the <code>formatStr</code> must follow the encoding 
+	 * rule of {@link java.text.SimpleDateFormat <code>java.text.SimpleDateFormat</code>}.
+	 * <p>
+	 * Refer to {@link org.odftoolkit.odfdom.doc.table.OdfTableCell#setCurrencyFormat <code>setCurrencyFormat</code>} to set the format of currency.
+	 * <p>
+	 * If the cell value type is not set, the method will try to give it a value type, according 
+	 * to common ordination. The adapt order is: percentage-> time-> date-> float.
+	 * <blockquote>
+	 * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing ValueType, Distinguish Symbol
+	 * and Distinguish Priority.">
+	 *     <tr bgcolor="#ccccff">
+	 *          <th align=left>ValueType
+	 *          <th align=left>Distinguish Symbol
+	 *          <th align=left>Distinguish Priority
+	 *     <tr valign=top>
+	 *          <td>percentage
+	 *          <td>%
+	 *          <td>1
+	 *     <tr valign=top>
+	 *          <td>time
+	 *          <td>H, k, m, s, S
+	 *          <td>2
+	 *     <tr valign=top>
+	 *          <td>date
+	 *          <td>y, M, w, W, D, d, F, E, K, h
+	 *          <td>3
+	 *     <tr valign=top>
+	 *          <td>float
+	 *          <td>#, 0
+	 *          <td>4
+	 * </table>
+	 * </blockquote>
+	 * The adapt result may be inaccurate, so you'd better set value type before call this method. 
+	 * If adaptive failed, an {@link java.lang.UnsupportedOperationException} will be thrown.
+	 * <p>
+	 * @param formatStr	the cell need be formatted as this specified format string.
+	 * @throws IllegalArgumentException if <code>formatStr</code> is null or the cell value type is supported.
+	 * @throws UnsupportedOperationException if the adaptive failed, when cell value type is not set.
+	 * @see java.text.SimpleDateFormat
+	 * @see java.text.DecimalFormat
+	 */
+	public void setFormatString(String formatStr) {
+		if (formatStr == null) {
+			throw new IllegalArgumentException("formatStr shouldn't be null.");
+		}
+		String type = getValueType();
+		if (type == null) {
+			if (formatStr.contains("%")) {
+				setValueType("percentage");
+			} else if (formatStr.contains("H") || formatStr.contains("k")
+					|| formatStr.contains("m") || formatStr.contains("s")
+					|| formatStr.contains("S")) {
+				setValueType("time");
+			} else if (formatStr.contains("y") || formatStr.contains("M")
+					|| formatStr.contains("w") || formatStr.contains("W")
+					|| formatStr.contains("D") || formatStr.contains("d")
+					|| formatStr.contains("F") || formatStr.contains("E")
+					|| formatStr.contains("K") || formatStr.contains("h")) {
+				setValueType("date");
+			} else if (formatStr.contains("#") || formatStr.contains("0")) {
+				setValueType("float");
+			} else {
+				throw new UnsupportedOperationException("format string: "
+						+ formatStr
+						+ " can't be adapted to a possible value type.");
+			}
+			type = getValueType();
+		}
+		setCellFormatString(formatStr, type);
+	}
+
+	private void setCellFormatString(String formatStr, String type) {
+		OfficeValueTypeAttribute.Value typeValue = null;
+		msFormatString = formatStr;
+		splitRepeatedCells();
+		typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);
+		if (typeValue == OfficeValueTypeAttribute.Value.FLOAT) {
+			OdfNumberStyle numberStyle = new OdfNumberStyle(
+					(OdfFileDom) mCellElement.getOwnerDocument(),
+					formatStr,
+					getUniqueNumberStyleName());
+			mCellElement.getAutomaticStyles().appendChild(numberStyle);
+			setDataDisplayStyleName(numberStyle.getStyleNameAttribute());
+			Double value = getDoubleValue();
+			if (value != null) {
+				setDisplayText((new DecimalFormat(formatStr)).format(value.doubleValue()));
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.DATE) {
+			OdfNumberDateStyle dateStyle = new OdfNumberDateStyle(
+					(OdfFileDom) mCellElement.getOwnerDocument(),
+					formatStr,
+					getUniqueDateStyleName(), null);
+			mCellElement.getAutomaticStyles().appendChild(dateStyle);
+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());
+			String dateStr = mCellElement.getOfficeDateValueAttribute();
+			if (dateStr != null) {
+				Calendar date = getDateValue();
+				setDisplayText((new SimpleDateFormat(formatStr)).format(date.getTime()));
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.TIME) {
+			OdfNumberTimeStyle timeStyle = new OdfNumberTimeStyle(
+					(OdfFileDom) mCellElement.getOwnerDocument(), formatStr,
+					getUniqueDateStyleName());
+			mCellElement.getAutomaticStyles().appendChild(timeStyle);
+			setDataDisplayStyleName(timeStyle.getStyleNameAttribute());
+			String timeStr = mCellElement.getOfficeTimeValueAttribute();
+			if (timeStr != null) {
+				Calendar time = getTimeValue();
+				setDisplayText((new SimpleDateFormat(formatStr)).format(time.getTime()));
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.PERCENTAGE) {
+			OdfNumberPercentageStyle dateStyle = new OdfNumberPercentageStyle(
+					(OdfFileDom) mCellElement.getOwnerDocument(),
+					formatStr,
+					getUniquePercentageStyleName());
+			mCellElement.getAutomaticStyles().appendChild(dateStyle);
+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());
+			Double value = getPercentageValue();
+			if (value != null) {
+				setDisplayText((new DecimalFormat(formatStr)).format(value.doubleValue()));
+			}
+		} else {
+			throw new IllegalArgumentException("This function doesn't support " + typeValue + " cell.");
+		}
+	}
+
+	private void setDataDisplayStyleName(String name) {
+		OdfStyleBase styleElement = getCellStyleElementForWrite();
+		if (styleElement != null) {
+			styleElement.setOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.STYLE, "data-style-name"), name);
+		}
+	}
+
+	protected OdfStyle getCellStyleElement() {
+		String styleName = mCellElement.getStyleName();
+		if (styleName == null || (styleName.equals(""))) {	//search in row
+			OdfTableRow aRow = getTableRow();
+			styleName = aRow.getOdfElement().getTableDefaultCellStyleNameAttribute();
+		}
+		if (styleName == null || (styleName.equals(""))) {	//search in column
+			OdfTableColumn aColumn = getTableColumn();
+			styleName = aColumn.getOdfElement().getTableDefaultCellStyleNameAttribute();
+		}
+		if (styleName == null || (styleName.equals(""))) {
+			return null;
+		}
+
+		OdfStyle styleElement = mCellElement.getAutomaticStyles().getStyle(styleName, mCellElement.getStyleFamily());
+
+		if (styleElement == null) {
+			styleElement = mDocument.getDocumentStyles().getStyle(styleName,
+					OdfStyleFamily.TableCell);
+		}
+
+		if (styleElement == null) {
+			styleElement = mCellElement.getDocumentStyle();
+		}
+
+		if (styleElement == null) {
+			OdfStyle newStyle = mCellElement.getAutomaticStyles().newStyle(
+					OdfStyleFamily.TableCell);
+			String newname = newStyle.getStyleNameAttribute();
+			mCellElement.setStyleName(newname);
+			newStyle.addStyleUser(mCellElement);
+			return newStyle;
+		}
+
+		return styleElement;
+	}
+
+	protected OdfStyle getCellStyleElementForWrite() {
+		boolean copy = false;
+		String styleName = mCellElement.getStyleName();
+		if (styleName == null || (styleName.equals(""))) {	//search in row
+			OdfTableRow aRow = getTableRow();
+			styleName = aRow.getOdfElement().getTableDefaultCellStyleNameAttribute();
+			copy = true;
+		}
+		if (styleName == null || (styleName.equals(""))) {	//search in column
+			OdfTableColumn aColumn = getTableColumn();
+			styleName = aColumn.getOdfElement().getTableDefaultCellStyleNameAttribute();
+			copy = true;
+		}
+		if (styleName == null || (styleName.equals(""))) {
+			return null;
+		}
+
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		OdfStyle styleElement = styles.getStyle(styleName, mCellElement.getStyleFamily());
+
+		if (styleElement == null) {
+			styleElement = mDocument.getDocumentStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+		}
+
+		if (styleElement == null) {
+			styleElement = mCellElement.getDocumentStyle();
+		}
+
+		if (styleElement.getStyleUserCount() > 1 || copy) //if this style are used by many users,
+		//should create a new one.
+		{
+			OdfStyle newStyle = mCellElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableCell);
+			newStyle.setProperties(styleElement.getStylePropertiesDeep());
+			//copy attributes
+			NamedNodeMap attributes = styleElement.getAttributes();
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node attr = attributes.item(i);
+				if (!attr.getNodeName().equals("style:name")) {
+					newStyle.setAttributeNS(attr.getNamespaceURI(), attr.getNodeName(), attr.getNodeValue());
+				}
+			}//end of copying attributes
+			//mCellElement.getAutomaticStyles().appendChild(newStyle);
+			String newname = newStyle.getStyleNameAttribute();
+			mCellElement.setStyleName(newname);
+			return newStyle;
+		}
+		return styleElement;
+	}
+
+	private String getDataDisplayStyleName() {
+		String datadisplayStylename = null;
+		OdfStyleBase styleElement = getCellStyleElement();
+		if (styleElement != null) {
+			datadisplayStylename = styleElement.getOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.STYLE, "data-style-name"));
+		}
+
+		return datadisplayStylename;
+	}
+
+	private String getUniqueNumberStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("n%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getNumberStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	private String getUniqueDateStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("d%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getDateStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	private String getUniquePercentageStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("p%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getPercentageStyle(unique_name) != null);
+		return unique_name;
+	}
+
+//    private String getUniqueCellStyleName() {
+//    	String unique_name;
+//		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+//	    do {
+//			unique_name = String.format("a%06x", (int) (Math.random() * 0xffffff));
+//		} while (styles.getStyle(unique_name, OdfStyleFamily.TableCell) != null);
+//    	return unique_name;
+//    }	
+	private String getUniqueCurrencyStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("c%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getCurrencyStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	/**
+	 * Get the format string of the cell.
+	 * 
+	 * @return the format string of the cell
+	 */
+	public String getFormatString() {
+		String type = mCellElement.getOfficeValueTypeAttribute();
+		OfficeValueTypeAttribute.Value typeValue = null;
+		if (type != null) {
+			typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);
+		}
+
+		if (typeValue == OfficeValueTypeAttribute.Value.FLOAT) {
+			String name = getDataDisplayStyleName();
+			OdfNumberStyle style = mCellElement.getAutomaticStyles().getNumberStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getNumberStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.DATE) {
+			String name = getDataDisplayStyleName();
+			OdfNumberDateStyle style = mCellElement.getAutomaticStyles().getDateStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getDateStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.CURRENCY) {
+			String name = getCurrencyDisplayStyleName();
+			OdfNumberCurrencyStyle dataStyle = mCellElement.getAutomaticStyles().getCurrencyStyle(name);
+			if (dataStyle == null) {
+				dataStyle = mDocument.getDocumentStyles().getCurrencyStyle(name);
+			}
+			if (dataStyle != null) {
+				return dataStyle.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.PERCENTAGE) {
+			String name = getDataDisplayStyleName();
+			OdfNumberPercentageStyle style = mCellElement.getAutomaticStyles().getPercentageStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getPercentageStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		}
+		return null;
+	}
+
+	private String getCurrencyDisplayStyleName() {
+		String name = getDataDisplayStyleName();
+		OdfNumberCurrencyStyle dataStyle = mCellElement.getAutomaticStyles().getCurrencyStyle(name);
+		if (dataStyle == null) {
+			dataStyle = mDocument.getDocumentStyles().getCurrencyStyle(name);
+		}
+
+		if (dataStyle != null) {
+			return dataStyle.getConditionStyleName(getCurrencyValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Remove all the text content of cell.
+	 */
+	public void removeTextContent() {
+		splitRepeatedCells();
+		//delete text:p child element
+		Node node = mCellElement.getFirstChild();
+		while (node != null) {
+			Node nextNode = node.getNextSibling();
+			if (node instanceof TextPElement
+					|| node instanceof TextHElement
+					|| node instanceof TextListElement) {
+				mCellElement.removeChild(node);
+			}
+			node = nextNode;
+		}
+	}
+
+	/**
+	 * Remove all the content of the cell.
+	 */
+	public void removeContent() {
+		splitRepeatedCells();
+		Node node = mCellElement.getFirstChild();
+		while (node != null) {
+			Node nextNode = node.getNextSibling();
+			mCellElement.removeChild(node);
+			node = nextNode;
+		}
+	}
+
+	/**
+	 * Append the content of another cell.
+	 * 
+	 * @param fromCell	another cell whose content will be appended to this cell
+	 */
+	void appendContentFrom(OdfTableCell fromCell) {
+		splitRepeatedCells();
+		OdfWhitespaceProcessor textProcess = new OdfWhitespaceProcessor();
+		TableTableCellElementBase cell = fromCell.getOdfElement();
+		Node node = cell.getFirstChild();
+		while (node != null) {
+			if (node instanceof OdfTextParagraph) {
+				if (!textProcess.getText(node).equals("")) {
+					mCellElement.appendChild(node.cloneNode(true));
+				}
+			} else {
+				mCellElement.appendChild(node.cloneNode(true));
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*****************************************
+	 * Moved from OdfTable
+	 * 
+	 *******************************************/
+	/**
+	 * This method is invoked by insertCellBefore and insertRowBefore
+	 * When it is needed to clone a cell and the cell is a cover cell,
+	 * for some instance, we need to find the cell who covers this cell.
+	 * So this method is to get the cell who covers this cell
+	 */
+	OdfTableCell getCoverCell() {
+		int startRowi = getRowIndex();
+		int startColumni = getColumnIndex();
+
+		for (int i = startRowi; i >= 0; i--) {
+			OdfTableRow aRow = mOwnerTable.getRowByIndex(i);
+			for (int j = startColumni; j >= 0; j--) {
+				if (i == startRowi && j == startColumni) {
+					continue;
+				}
+				OdfTableCell cell = aRow.getCellByIndex(j);
+				if (cell.getOdfElement() instanceof TableTableCellElement) {
+					TableTableCellElement cellEle = (TableTableCellElement) cell.getOdfElement();
+					if ((cellEle.getTableNumberColumnsSpannedAttribute() + j > startColumni)
+							&& (cellEle.getTableNumberRowsSpannedAttribute() + i > startRowi)) {
+						return mOwnerTable.getCellInstance(cellEle, 0, 0);
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * This method is invoked by getCoverCell.
+	 * It's to get the cell in a same row who covers this cell.
+	 * 
+	 * @return the cell in a same row who covers this cell
+	 * <p>
+	 *         Null if there is no cell who covers this cell
+	 */
+	OdfTableCell getCoverCellInSameRow() {
+		int startRowi = getRowIndex();
+		int startColumni = getColumnIndex();
+
+		for (int j = startColumni - 1; j >= 0; j--) {
+			OdfTableCell cell = mOwnerTable.getCellByPosition(j, startRowi);
+			if (cell.getOdfElement() instanceof TableCoveredTableCellElement) {
+				continue;
+			}
+
+			int oldSpanN = cell.getColumnSpannedNumber();
+			if (oldSpanN + j > startColumni) {
+				//cell.setColumnSpannedNumber(oldSpanN-1);
+				return cell;
+			}
+			return null;
+		}
+		return null;
+	}
+
+	/**
+	 * This method is invoked by getCoverCell
+	 */
+	OdfTableCell getCoverCellInSameColumn() {
+		int startRowi = getRowIndex();
+		int startColumni = getColumnIndex();
+
+		for (int i = startRowi - 1; i >= 0; i--) {
+			OdfTableCell cell = mOwnerTable.getCellByPosition(startColumni, i);
+			if (cell.getOdfElement() instanceof TableCoveredTableCellElement) {
+				continue;
+			}
+
+			int oldSpanN = cell.getRowSpannedNumber();
+			if (oldSpanN + i > startRowi) {
+				//cell.setRowSpannedNumber(oldSpanN-1);
+				return cell;
+			}
+			return null;
+		}
+		return null;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableCellRange.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableCellRange.java
new file mode 100644
index 0000000..03ae5a1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableCellRange.java
@@ -0,0 +1,472 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+
+/**
+ * OdfTableCellRange represent a rang of cells that are adjacent with each other
+ * <p>
+ * OdfTableCellRange provides methods to get/set/modify the properties of cell range.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.table.CellRange} in Simple API.
+ */
+public class OdfTableCellRange {
+
+	private int mnStartRow;
+	private int mnStartColumn;
+	private int mnEndRow;
+	private int mnEndColumn;
+	private String msCellRangeName;
+	private OdfTable maOwnerTable;
+	private boolean mbSpreadsheet;
+
+	/**
+	 * Construct the instance of OdfTableCellRange.
+	 * @param table
+	 * 					is the container table of this cell range.
+	 * @param startColumn
+	 * 					is the column index of the first cell in this cell range.
+	 * @param startRow
+	 * 					is the row index of the first cell in this cell range.
+	 * @param endColumn
+	 * 					is the column index of the last cell in this cell range.
+	 * @param endRow
+	 * 					is the row index of the last cell in this cell range.
+	 */
+	OdfTableCellRange(OdfTable table, int startColumn, int startRow, int endColumn, int endRow) {
+		maOwnerTable = table;
+
+		OdfDocument doc = (OdfDocument) ((OdfFileDom) maOwnerTable.getOdfElement().getOwnerDocument()).getDocument();
+		if (doc instanceof OdfSpreadsheetDocument) {
+			mbSpreadsheet = true;
+		}
+
+		//the first cell is the covered cell, then the cell range should be enlarged
+		//so that it can contains the complete cell
+		//get the cell cover info
+		mnStartColumn = startColumn;
+		mnStartRow = startRow;
+		mnEndColumn = endColumn;
+		mnEndRow = endRow;
+		List<CellCoverInfo> coverList = maOwnerTable.getCellCoverInfos(0, 0, maOwnerTable.getColumnCount() - 1, maOwnerTable.getRowCount() - 1);
+		OdfTableCell cell;// = maOwnerTable.getOwnerCellByPosition(coverList, nStartColumn, nStartRow);
+		for (int i = startColumn; i <= endColumn; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, i, startRow);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+
+		for (int i = startColumn; i <= endColumn; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, i, endRow);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+
+		for (int i = startRow + 1; i < endRow; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, startColumn, i);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+
+		for (int i = startRow + 1; i < endRow; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, endColumn, i);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+	}
+
+	/**
+	 * construct the empty cellRange
+	 */
+	OdfTableCellRange() {
+	}
+
+	/**
+	 * Merge the current cell range to one cell
+	 */
+	public void merge() {
+		OdfTableCell firstCell = maOwnerTable.getCellByPosition(mnStartColumn, mnStartRow);
+
+		//note: after merge, the cell row/column count might  be changed
+		int rowCount = maOwnerTable.getRowCount();
+		int colCount = maOwnerTable.getColumnCount();
+		//if the cell range is the whole table, then merge it to a big cell
+		//as to the spreadsheet document, it should still keep the original cell count,
+		//rather than merge to a big cell.
+		if (rowCount == (mnEndRow - mnStartRow + 1)
+				&& colCount == (mnEndColumn - mnStartColumn + 1)
+				&& !mbSpreadsheet) {
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-spanned");
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-spanned");
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//just copy the text of the other cells to this first cell
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					OdfTableCell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						//copy the content of this cell to the first cell
+						firstCell.appendContentFrom(cellBase);
+					}
+				}
+			}
+			maOwnerTable.removeRowsByIndex(1, maOwnerTable.getRowCount() - 1);
+			maOwnerTable.removeColumnsByIndex(1, maOwnerTable.getColumnCount() - 1);
+			OdfTableColumn firstColumn = maOwnerTable.getColumnByIndex(0);
+			firstColumn.setWidth(maOwnerTable.getWidth());
+			mnEndRow = mnStartRow;
+			mnEndColumn = mnStartColumn;
+			return;
+		} //if the cell range covered all the table row, and the merged column > 1
+		//the merged column can be removed
+		else if (rowCount == (mnEndRow - mnStartRow + 1)
+				&& colCount > (mnEndColumn - mnStartColumn + 1)
+				&& (mnEndColumn - mnStartColumn) > 0) {
+			//the first cell, set the span attribute
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-spanned");
+				firstCellElement.setTableNumberRowsSpannedAttribute(Integer.valueOf(mnEndRow - mnStartRow + 1));
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//the other cell, copy the content to first cell
+			//if it is also in the first column of the cell range, set to the covered cell
+			//other cell not in the first column will be removed when remove the column
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					OdfTableCell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						//append content to first cell
+						firstCell.appendContentFrom(cellBase);
+						//change the cell in the first column of cell range to covered cell
+						if ((j == mnStartColumn) && (cellBase.getOdfElement() instanceof TableTableCellElement)) {
+							//change the normal cell to be the covered cell
+							TableTableCellElement firstColumnCell = (TableTableCellElement) cellBase.getOdfElement();
+							TableCoveredTableCellElement coveredCell = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+									(OdfFileDom) firstColumnCell.getOwnerDocument(),
+									OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+							OdfTableRow parentRow = cellBase.getTableRow();
+							parentRow.getOdfElement().insertBefore(coveredCell, firstColumnCell);
+							parentRow.getOdfElement().removeChild(firstColumnCell);
+						}
+					}
+				}
+			}
+			List<Long> widthList = getCellRangeWidthList();
+			long nCellRangeWidth = widthList.get(widthList.size() - 1).longValue() - widthList.get(0).longValue();
+			maOwnerTable.removeColumnsByIndex(mnStartColumn + 1, mnEndColumn - mnStartColumn);
+			OdfTableColumn firstColumn = maOwnerTable.getColumnByIndex(mnStartColumn);
+			firstColumn.setWidth(nCellRangeWidth);
+			mnEndColumn = mnStartColumn;
+			return;
+		} //if the cell range covered all the table column, the merged row can be removed
+		else if (rowCount > (mnEndRow - mnStartRow + 1)
+				&& colCount == (mnEndColumn - mnStartColumn + 1)
+				&& (mnEndRow - mnStartRow) > 0) {
+			//the first cell, set the span attribute
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-spanned");
+				firstCellElement.setTableNumberColumnsSpannedAttribute(Integer.valueOf(mnEndColumn - mnStartColumn + 1));
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//the other cell, copy the content to first cell
+			//if it is also in the first row of the cell range, set to the covered cell
+			//other cell not in the first row will be removed when remove the row
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					OdfTableCell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						//append content to first cell
+						firstCell.appendContentFrom(cellBase);
+						//change the cell in the first row of cell range to covered cell
+						if ((i == mnStartRow) && (cellBase.getOdfElement() instanceof TableTableCellElement)) {
+							//change the normal cell to be the covered cell
+							TableTableCellElement firstRowCell = (TableTableCellElement) cellBase.getOdfElement();
+							TableCoveredTableCellElement coveredCell = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+									(OdfFileDom) firstRowCell.getOwnerDocument(),
+									OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+							OdfTableRow parentRow = cellBase.getTableRow();
+							parentRow.getOdfElement().insertBefore(coveredCell, firstRowCell);
+							parentRow.getOdfElement().removeChild(firstRowCell);
+						}
+					}
+				}
+			}
+			maOwnerTable.removeRowsByIndex(mnStartRow + 1, mnEndRow - mnStartRow);
+			mnEndRow = mnStartRow;
+			return;
+		} //don't remove any row/column
+		else {
+			//first keep the column and row count in this cell range
+			//the first cell, set the span attribute
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.setTableNumberColumnsSpannedAttribute(Integer.valueOf(mnEndColumn - mnStartColumn + 1));
+				firstCellElement.setTableNumberRowsSpannedAttribute(Integer.valueOf(mnEndRow - mnStartRow + 1));
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//the other cell, set to the covered cell
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					OdfTableCell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						if (cellBase.getOdfElement() instanceof TableTableCellElement) {
+							//change the normal cell to be the covered cell
+							TableTableCellElement cell = (TableTableCellElement) cellBase.getOdfElement();
+							TableCoveredTableCellElement coveredCell = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+									(OdfFileDom) cell.getOwnerDocument(),
+									OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+
+							OdfTableRow parentRow = cellBase.getTableRow();
+							parentRow.getOdfElement().insertBefore(coveredCell, cell);
+							//copy the content of this cell to the first cell
+							firstCell.appendContentFrom(cellBase);
+							cellBase.removeContent();
+							//set the table column repeated attribute
+							int repeatedNum = cell.getTableNumberColumnsRepeatedAttribute().intValue();
+							int num = (mnEndColumn - j + 1) - repeatedNum;
+							if (num >= 0) {
+								coveredCell.setTableNumberColumnsRepeatedAttribute(Integer.valueOf(repeatedNum));
+								parentRow.getOdfElement().removeChild(cell);
+							} else {
+								coveredCell.setTableNumberColumnsRepeatedAttribute(new Integer(mnEndColumn - j + 1));
+								cell.setTableNumberColumnsRepeatedAttribute(Integer.valueOf(-num));
+							}
+
+						} else if (cellBase.getOdfElement() instanceof TableCoveredTableCellElement) {
+							try {
+								//copy the content of this cell to the first cell
+								firstCell.appendContentFrom(cellBase);
+								cellBase.removeContent();
+							} catch (Exception e) {
+								Logger.getLogger(OdfTableCellRange.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	//vector store the x coordinate of each column which reference to the left start point of owner table
+	//the returned value is all measured with "mm" unit
+	private List<Long> getCellRangeWidthList() {
+		List<Long> list = new ArrayList<Long>();
+		Long length = Long.valueOf(0);
+		for (int i = 0; i < maOwnerTable.getColumnCount() - 1; i++) {
+			OdfTableColumn col = maOwnerTable.getColumnByIndex(i);
+			int repeateNum = col.getColumnsRepeatedNumber();
+			if (repeateNum == 1) {
+				if (isColumnInCellRange(i)) {
+					list.add(length);
+				}
+				length = Long.valueOf(length.longValue() + col.getWidth());
+			} else {
+				for (int j = 0; j < repeateNum; j++) {
+					if (isColumnInCellRange(i + j)) {
+						list.add(length);
+						length = Long.valueOf(length.longValue() + col.getWidth());
+					}
+				}
+				i += repeateNum - 1;
+			}
+		}
+		//x coordinate of last column right point 
+		list.add(length);
+		return list;
+	}
+
+	//vector store the x coordinate of each will split column start point
+	List<Long> getVeticalSplitCellRangeWidthList(int splitNum) {
+		//get each cell in the cell range(the cell here means the real cell, not the covered cell)
+		List<CellCoverInfo> coverList = maOwnerTable.getCellCoverInfos(mnStartColumn, mnStartRow, mnEndColumn, mnEndRow);
+		//then get the real(uncovered) cell x coordinate
+		List<Long> tmpList = new ArrayList<Long>();
+		List<Long> widthList = getCellRangeWidthList();
+		for (int i = mnStartColumn; i < mnEndColumn + 1; i++) {
+			for (int j = mnStartRow; j < mnEndRow + 1; j++) {
+				if (maOwnerTable.isCoveredCellInOwnerTable(coverList, i, j)) {
+					continue;
+				} else {
+					//the real cell, record the x coordinate of the left point
+					Long width = widthList.get(i - mnStartColumn);
+					if (!tmpList.contains(width)) {
+						tmpList.add(width);
+					}
+				}
+			}
+		}
+
+		//last, reorder the tmpVector and split it to splitNum between each item
+		Long[] widthArray = (Long[]) tmpList.toArray();
+		Arrays.sort(widthArray);
+		List<Long> rtnValues = new ArrayList<Long>();
+		Long colWidth;
+		long unitWidth;
+		rtnValues.add(widthArray[0]);
+		for (int i = 1; i < widthArray.length; i++) {
+			colWidth = Long.valueOf(widthArray[i].longValue() - widthArray[i - 1].longValue());
+			unitWidth = colWidth.longValue() / splitNum;
+			for (int j = 1; j < splitNum; j++) {
+				long eachWidth = unitWidth * j + widthArray[i - 1].longValue();
+				rtnValues.add(Long.valueOf(eachWidth));
+			}
+			rtnValues.add(widthArray[i]);
+		}
+		return rtnValues;
+	}
+
+	/**
+	 * Get the name of the named cell range.
+	 * 
+	 * @return the name of the cell range
+	 */
+	public String getCellRangeName() {
+		return msCellRangeName;
+	}
+
+	/**
+	 * Set the name of the current cell range.
+	 * 
+	 * @param cellRangeName	the name that need to set
+	 */
+	public void setCellRangeName(String cellRangeName) {
+		try {
+			OdfElement contentRoot = maOwnerTable.mDocument.getContentRoot();
+			//create name range element
+			OdfFileDom contentDom = ((OdfFileDom) maOwnerTable.getOdfElement().getOwnerDocument());
+			TableNamedExpressionsElement nameExpress = (TableNamedExpressionsElement) OdfXMLFactory.newOdfElement(
+					contentDom,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "named-expressions"));
+			String startCellRange = "$" + maOwnerTable.getTableName() + "." + maOwnerTable.getAbsoluteCellAddress(mnStartColumn, mnStartRow);
+			String endCellRange = "$" + maOwnerTable.getTableName() + "." + maOwnerTable.getAbsoluteCellAddress(mnEndColumn, mnEndRow);
+			TableNamedRangeElement nameRange = (TableNamedRangeElement) nameExpress.newTableNamedRangeElement(startCellRange + ":" + endCellRange, cellRangeName);
+			nameRange.setTableBaseCellAddressAttribute(endCellRange);
+			contentRoot.appendChild(nameExpress);
+			msCellRangeName = cellRangeName;
+		} catch (Exception ex) {
+			Logger.getLogger(OdfTableCellRange.class.getName()).log(Level.SEVERE, null, ex);
+		}
+
+	}
+
+	/**
+	 * Get the <code>OdfTable</code> instance who contains this cell range.
+	 * @return the table that contains the cell range.
+	 */
+	public OdfTable getTable() {
+		return maOwnerTable;
+	}
+
+	/**
+	 * Get the number of rows in this cell range.
+	 * @return rows number in the cell range
+	 */
+	public int getRowNumber() {
+		return (mnEndRow - mnStartRow + 1);
+	}
+
+	/**
+	 * Get the number of columns in this cell range.
+	 * @return columns number in the cell range
+	 */
+	public int getColumnNumber() {
+		return (mnEndColumn - mnStartColumn + 1);
+	}
+
+	/** 
+	 * Returns a single cell that is positioned at specified column and row.
+	 * @param clmIndex	the column index of the cell inside the range.
+	 * @param rowIndex	the row index of the cell inside the range.
+	 * @return
+	 * 				the cell at the specified position relative to the start position of the cell range
+	 * @throws IndexOutOfBoundsException if the column/row index is bigger than the column/row count
+	 */
+	public OdfTableCell getCellByPosition(int clmIndex, int rowIndex) throws IndexOutOfBoundsException {
+		return maOwnerTable.getCellByPosition(mnStartColumn + clmIndex, mnStartRow + rowIndex);
+	}
+
+	/**
+	 * Check if the given column in is this cell range.
+	 * @param colIndex	
+	 * 					the given column index
+	 * @return true if the given column index is in the current cell range
+	 * 
+	 */
+	private boolean isColumnInCellRange(int colIndex) {
+		if (colIndex < mnStartColumn || colIndex > mnEndColumn) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	/** 
+	 * Returns a single cell that is positioned at specified cell address.
+	 * 
+	 * @param address
+	 * 				the cell address of the cell inside the range.
+	 * @return
+	 * 				the cell at the specified cell address relative to the start position of the cell range
+	 */
+	public OdfTableCell getCellByPosition(String address) {
+		//if the address also contain the table name,  but the table is not the maOwnerTable
+		//what should do? get the table then getcellByPosition?
+		return getCellByPosition(maOwnerTable.getColIndexFromCellAddress(address), maOwnerTable.getRowIndexFromCellAddress(address));
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableColumn.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableColumn.java
new file mode 100644
index 0000000..b1cd403
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableColumn.java
@@ -0,0 +1,489 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+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.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableColumnProperties;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.w3c.dom.Node;
+
+/**
+ * OdfTableColumn represents table column feature in ODF document.
+ * <p>
+ * OdfTableColumn provides methods to get table cells that belong to this table column.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.table.Column} in Simple API.
+ */
+public class OdfTableColumn {
+
+	TableTableColumnElement maColumnElement;
+	int mnRepeatedIndex;
+	private static final String DEFAULT_WIDTH = "0in";
+	private OdfDocument mDocument;
+
+	/**
+	 * Construct the <code>OdfTableColumn</code> feature.
+	 * 
+	 * @param odfElement
+	 * 					the element that can construct this table column
+	 * @param repeatedIndex 
+	 * 					the index in the repeated columns
+	 */
+	OdfTableColumn(TableTableColumnElement colElement, int repeatedIndex) {
+		maColumnElement = colElement;
+		mnRepeatedIndex = repeatedIndex;
+		mDocument = (OdfDocument) ((OdfFileDom) maColumnElement.getOwnerDocument()).getDocument();
+	}
+
+	/**
+	 * Get the <code>OdfTableColumn</code> instance from the <code>TableTableColumnElement</code> instance.
+	 * <p>
+	 * Each <code>TableTableColumnElement</code> instance has a one-to-one relationship to the a <code>OdfTableColumn</code> instance.
+	 * 
+	 * @param colElement	the column element that need to get the corresponding <code>OdfTableColumn</code> instance
+	 * @return the <code>OdfTableColumn</code> instance represent the specified column element
+	 */
+	public static OdfTableColumn getInstance(TableTableColumnElement colElement) {
+		TableTableElement tableElement = null;
+		Node node = colElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				tableElement = (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		OdfTable table = null;
+		if (tableElement != null) {
+			table = OdfTable.getInstance(tableElement);
+		} else {
+			throw new IllegalArgumentException("the colElement is not in the table dom tree");
+		}
+
+		OdfTableColumn column = table.getColumnInstance(colElement, 0);
+		if (column.getColumnsRepeatedNumber() > 1) {
+			Logger.getLogger(OdfTableColumn.class.getName()).log(Level.WARNING, "the column has the repeated column number, and puzzled about get which repeated index of the column,"
+					+ "here just return the first column of the repeated columns.");
+		}
+		return column;
+	}
+
+	/**
+	 * Get the <code>TableTableElement</code> who contains this cell.
+	 * @return the table that contains the cell.
+	 */
+	private TableTableElement getTableElement() {
+		Node node = maColumnElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				return (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	/**
+	 * Get owner table of the current column.
+	 *
+	 * @return
+	 * 			the parent table of this column
+	 */
+	public OdfTable getTable() {
+		TableTableElement tableElement = getTableElement();
+		if (tableElement != null) {
+			return OdfTable.getInstance(tableElement);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the width of the column (in Millimeter).
+	 * 
+	 * @return the width of the current column (in Millimeter).
+	 */
+	public long getWidth() {
+		String sWidth = maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+		if (sWidth == null) {
+			sWidth = DEFAULT_WIDTH;
+		}
+		return PositiveLength.parseLong(sWidth, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the width of the column (in Millimeter).
+	 * @param width
+	 * 				the width that will be set to the column (in Millimeter).
+	 */
+	public void setWidth(long width) {
+		String sWidthMM = String.valueOf(width) + Unit.MILLIMETER.abbr();
+		String sWidthIN = PositiveLength.mapToUnit(sWidthMM, Unit.INCH);
+
+		splitRepeatedColumns();
+		maColumnElement.setProperty(OdfTableColumnProperties.ColumnWidth, sWidthIN);
+
+		//check if need set relative width
+		int index = getColumnIndex();
+		if (index >= 1) {
+			index = index - 1;
+		} else {
+			index = index + 1;
+		}
+		OdfTableColumn column = null;
+		if (index < getTable().getColumnCount()) {
+			column = getTable().getColumnByIndex(index);
+		}
+		if (column != null) {
+			long prevColumnRelWidth = column.getRelativeWidth();
+			if (prevColumnRelWidth != 0) {
+				long prevColumnWidth = column.getWidth();
+				setRelativeWidth(prevColumnRelWidth / prevColumnWidth * width);
+			}
+		}
+	}
+
+	//if one of the repeated column want to change something
+	//then this repeated column have to split to repeated number columns
+	//the maColumnElement should also be updated according to the original index in the repeated column
+	void splitRepeatedColumns() {
+		OdfTable table = getTable();
+		TableTableElement tableEle = table.getOdfElement();
+		int repeateNum = getColumnsRepeatedNumber();
+		if (repeateNum > 1) {
+			//change this repeated column to several single columns
+			TableTableColumnElement ownerColumnElement = null;
+			int repeatedColumnIndex = mnRepeatedIndex;
+			Node refElement = maColumnElement;
+			maColumnElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+			String originalWidth = maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+			String originalRelWidth = maColumnElement.getProperty(OdfTableColumnProperties.RelColumnWidth);
+			for (int i = repeateNum - 1; i >= 0; i--) {
+				TableTableColumnElement newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement((OdfFileDom) maColumnElement.getOwnerDocument(),
+						OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
+				if (originalWidth != null && originalWidth.length() > 0) {
+					newColumn.setProperty(OdfTableColumnProperties.ColumnWidth, originalWidth);
+				}
+				if (originalRelWidth != null && originalRelWidth.length() > 0) {
+					newColumn.setProperty(OdfTableColumnProperties.RelColumnWidth, originalRelWidth);
+				}
+				tableEle.insertBefore(newColumn, refElement);
+				refElement = newColumn;
+				if (repeatedColumnIndex == i) {
+					ownerColumnElement = newColumn;
+				} else {
+					table.updateColumnRepository(maColumnElement, i, newColumn, 0);
+				}
+			}
+			//remove this column element
+			tableEle.removeChild(maColumnElement);
+
+			if (ownerColumnElement != null) {
+				table.updateColumnRepository(maColumnElement, mnRepeatedIndex, ownerColumnElement, 0);
+			}
+		}
+	}
+
+	private long getRelativeWidth() {
+		String sRelWidth = maColumnElement.getProperty(OdfTableColumnProperties.RelColumnWidth);
+		if (sRelWidth != null) {
+			if (sRelWidth.contains("*")) {
+				Long value = Long.valueOf(sRelWidth.substring(0, sRelWidth.indexOf("*")));
+				return value.longValue();
+			}
+		}
+		return 0;
+	}
+
+	private void setRelativeWidth(long relWidth) {
+		maColumnElement.setProperty(OdfTableColumnProperties.RelColumnWidth, String.valueOf(relWidth) + "*");
+	}
+
+	/**
+	 * Returns if the column always keeps its optimal width.
+	 * @return 
+	 * 			true if the column always keeps its optimal width;
+	 * 			vice versa
+	 */
+	public boolean isOptimalWidth() {
+		return Boolean.parseBoolean(maColumnElement.getProperty(OdfTableColumnProperties.UseOptimalColumnWidth));
+	}
+
+	/**
+	 * Set if the column always keeps its optimal width.
+	 * 
+	 * @param isUseOptimalWidth
+	 * 					the flag that indicate column should keep its optimal width or not
+	 */
+	public void setUseOptimalWidth(boolean isUseOptimalWidth) {
+		maColumnElement.setProperty(OdfTableColumnProperties.UseOptimalColumnWidth, String.valueOf(isUseOptimalWidth));
+	}
+
+	/**
+	 * Return an instance of <code>TableTableColumnElement</code> which represents this feature.
+	 * 
+	 * @return an instance of <code>TableTableColumnElement</code>
+	 */
+	public TableTableColumnElement getOdfElement() {
+		return maColumnElement;
+	}
+
+	/**
+	 * Get the count of cells in this column.
+	 * 
+	 * @return 	the cells count in the current column
+	 */
+	public int getCellCount() {
+		return getTable().getRowCount();
+	}
+
+	/**
+	 * Get a cell with a specific index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the cell index in this column
+	 * @return the cell object in the given cell index
+	 */
+	public OdfTableCell getCellByIndex(int index) {
+		return getTable().getCellByPosition(getColumnIndex(), index);
+	}
+
+	/**
+	 * Get the previous column of the current column.
+	 *
+	 * @return the previous column before this column in the owner table
+	 */
+	public OdfTableColumn getPreviousColumn() {
+		OdfTable table = getTable();
+		//the column has repeated column number > 1
+		if (maColumnElement.getTableNumberColumnsRepeatedAttribute().intValue() > 1) {
+			if (mnRepeatedIndex > 0) {
+				return table.getColumnInstance(maColumnElement, mnRepeatedIndex - 1);
+			}
+		}
+		//the column has repeated column number > 1 && the index is 0
+		//or the column has repeated column num = 1
+		Node aPrevNode = maColumnElement.getPreviousSibling();
+		Node aCurNode = maColumnElement;
+		while (true) {
+			if (aPrevNode == null) {
+				//does not have previous sibling, then get the parent
+				//because aCurNode might be the child element of table-header-columns, table-columns, table-column-group
+				Node parentNode = aCurNode.getParentNode();
+				//if the parent is table, then it means that this column is the first column in this table
+				//it has no previous column
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aPrevNode = parentNode.getPreviousSibling();
+			}
+			//else the parent node might be table-header-columns, table-columns, table-column-group
+			if (aPrevNode != null) {
+				try {
+					if (aPrevNode instanceof TableTableColumnElement) {
+						return table.getColumnInstance((TableTableColumnElement) aPrevNode, ((TableTableColumnElement) aPrevNode).getTableNumberColumnsRepeatedAttribute().intValue() - 1);
+					} else if (aPrevNode instanceof TableTableColumnsElement
+							|| aPrevNode instanceof TableTableHeaderColumnsElement
+							|| aPrevNode instanceof TableTableColumnGroupElement) {
+						XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
+						TableTableColumnElement lastCol = (TableTableColumnElement) xpath.evaluate("//table:table-column[last()]", aPrevNode, XPathConstants.NODE);
+						if (lastCol != null) {
+							return table.getColumnInstance(lastCol, lastCol.getTableNumberColumnsRepeatedAttribute().intValue() - 1);
+						}
+					} else {
+						aCurNode = aPrevNode;
+						aPrevNode = aPrevNode.getPreviousSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(OdfTableColumn.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Get the next column of the current column.
+	 *
+	 * @return the next column after this column in the owner table
+	 */
+	public OdfTableColumn getNextColumn() {
+		OdfTable table = getTable();
+		//the column has repeated column number > 1
+		if (getColumnsRepeatedNumber() > 1) {
+			if (mnRepeatedIndex < (getColumnsRepeatedNumber() - 1)) {
+				return table.getColumnInstance(maColumnElement, mnRepeatedIndex + 1);
+			}
+		}
+		Node aNextNode = maColumnElement.getNextSibling();
+		Node aCurNode = maColumnElement;
+		while (true) {
+			if (aNextNode == null) {
+				//does not have next sibling, then get the parent
+				//because aCurNode might be the child element of table-header-columns, table-columns, table-column-group
+				Node parentNode = aCurNode.getParentNode();
+				//if the parent is table, then it means that this column is the last column in this table
+				//it has no next column
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aNextNode = parentNode.getNextSibling();
+			}
+			//else the parent node might be table-header-columns, table-columns, table-column-group
+			if (aNextNode != null) {
+				try {
+					if (aNextNode instanceof TableTableColumnElement) {
+						return table.getColumnInstance((TableTableColumnElement) aNextNode, 0);
+					} else if (aNextNode instanceof TableTableColumnsElement
+							|| aNextNode instanceof TableTableHeaderColumnsElement
+							|| aNextNode instanceof TableTableColumnGroupElement) {
+						XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
+						TableTableColumnElement firstCol = (TableTableColumnElement) xpath.evaluate("//table:table-column[first()]", aNextNode, XPathConstants.NODE);
+						if (firstCol != null) {
+							return table.getColumnInstance(firstCol, 0);
+						}
+					} else {
+						aCurNode = aNextNode;
+						aNextNode = aNextNode.getNextSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(OdfTableColumn.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Get the index of this column in the owner table.
+	 * 
+	 * @return the index of the column
+	 */
+	public int getColumnIndex() {
+		int result = 0;
+		OdfTable table = getTable();
+		TableTableColumnElement columnEle;
+		TableTableElement mTableElement = table.getOdfElement();
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableColumnElement) {
+						columnEle = (TableTableColumnElement) m;
+						if (columnEle == getOdfElement()) {
+							return result + mnRepeatedIndex;
+						}
+						if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+							result += 1;
+						} else {
+							result += columnEle.getTableNumberColumnsRepeatedAttribute();
+						}
+					}
+				}
+			}
+			if (n instanceof TableTableColumnElement) {
+				columnEle = (TableTableColumnElement) n;
+				if (columnEle == getOdfElement()) {
+					break;
+				}
+				if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+					result += 1;
+				} else {
+					result += columnEle.getTableNumberColumnsRepeatedAttribute();
+				}
+			}
+		}
+		return result + mnRepeatedIndex;
+	}
+
+	/**
+	 * Set the default cell style to this column.
+	 * <p>
+	 * The style should already exist in this document.
+	 * <p>
+	 * This method is not recommended for text document cases. 
+	 * These is a style assigned to each cell in tables under text documents.
+	 * So setting the default cell style to a column may not work.
+	 * 
+	 * @param style
+	 * 			the cell style of the document
+	 */
+	public void setDefaultCellStyle(OdfStyle style) {
+		splitRepeatedColumns();
+		OdfStyle defaultStyle = getDefaultCellStyle();
+		if (defaultStyle != null) {
+			defaultStyle.removeStyleUser(maColumnElement);
+		}
+
+		if (style != null) {
+			style.addStyleUser(maColumnElement);
+			maColumnElement.setTableDefaultCellStyleNameAttribute(
+					style.getStyleNameAttribute());
+		}
+	}
+
+	/**
+	 * Get the default cell style of this column.
+	 * @return the default cell style of this column
+	 */
+	public OdfStyle getDefaultCellStyle() {
+		String styleName = maColumnElement.getTableDefaultCellStyleNameAttribute();
+		OdfStyle style = maColumnElement.getAutomaticStyles().getStyle(
+				styleName, OdfStyleFamily.TableCell);
+
+		if (style == null) {
+			style = mDocument.getDocumentStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+		}
+		return style;
+	}
+
+	//note: we have to use this method to modify the column repeated number
+	//in order to update mnRepeatedIndex of the each column
+	void setColumnsRepeatedNumber(int num) {
+		//update the mnRepeatedIndex for the ever repeated column
+		maColumnElement.setTableNumberColumnsRepeatedAttribute(Integer.valueOf(num));
+	}
+
+	int getColumnsRepeatedNumber() {
+		Integer count = maColumnElement.getTableNumberColumnsRepeatedAttribute();
+		if (count == null) {
+			return 1;
+		} else {
+			return count.intValue();
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableRow.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableRow.java
new file mode 100644
index 0000000..eb6a4d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/doc/table/OdfTableRow.java
@@ -0,0 +1,842 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+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.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableRowProperties;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.w3c.dom.Node;
+
+/**
+ * OdfTableRow represents table row feature in ODF document.
+ * <p>
+ * OdfTableRow provides methods to get table cells that belong to this table row.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.table.Row} in Simple API.
+ */
+public class OdfTableRow {
+
+	//boolean mbVisible;
+	TableTableRowElement maRowElement;
+	int mnRepeatedIndex;
+	int mRowsRepeatedNumber = -1;
+	private static final String DEFAULT_HEIGHT = "0.30in";
+	private OdfDocument mDocument;
+
+	/**
+	 * Construct the <code>OdfTableRow</code> feature.
+	 * @param rowElement	the row element represent this row
+	 * @param repeatedIndex	the index in the repeated rows
+	 */
+	OdfTableRow(TableTableRowElement rowElement, int repeatedIndex) {
+		maRowElement = rowElement;
+		mnRepeatedIndex = repeatedIndex;
+		mDocument = (OdfDocument) ((OdfFileDom) maRowElement.getOwnerDocument()).getDocument();
+	}
+
+	/**
+	 * Get the <code>OdfTableRow</code> instance from the <code>TableTableRowElement</code> instance.
+	 * <p>
+	 * Each <code>TableTableRowElement</code> instance has a one-to-one relationship to a <code>OdfTableRow</code> instance.
+	 * 
+	 * @param rowElement	the row element that need to get the corresponding <code>OdfTableRow</code> instance
+	 * @return the <code>OdfTableRow</code> instance represent the specified row element
+	 */
+	public static OdfTableRow getInstance(TableTableRowElement rowElement) {
+		TableTableElement tableElement = null;
+		Node node = rowElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				tableElement = (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		OdfTable table = null;
+		if (tableElement != null) {
+			table = OdfTable.getInstance(tableElement);
+		} else {
+			throw new IllegalArgumentException("the rowElement is not in the table dom tree");
+		}
+
+		OdfTableRow row = table.getRowInstance(rowElement, 0);
+		if (row.getRowsRepeatedNumber() > 1) {
+			Logger.getLogger(OdfTableRow.class.getName()).log(Level.WARNING, "the row has the repeated row number, and puzzled about get which repeated index of the row,"
+					+ "here just return the first row of the repeated rows.");
+		}
+		return row;
+	}
+
+	/**
+	 * Get the <code>TableTableElement</code>  who contains this row.
+	 * 
+	 * @return the table element that contains the row.
+	 */
+	private TableTableElement getTableElement() {
+		Node node = maRowElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				return (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	/**
+	 * Get owner table of the current row.
+	 * @return	the parent table of this row
+	 */
+	public OdfTable getTable() {
+		TableTableElement tableElement = getTableElement();
+		if (tableElement != null) {
+			return OdfTable.getInstance(tableElement);
+		}
+		return null;
+	}
+
+	/**
+	 * Return the height of the row (in Millimeter).
+	 * <p>
+	 * Return the minimal height, if the row height is not set, 
+	 * @return the height of the current row (in Millimeter).
+	 */
+	public long getHeight() {
+		String sHeight = maRowElement.getProperty(OdfTableRowProperties.RowHeight);
+		if (sHeight == null) {
+			sHeight = maRowElement.getProperty(OdfTableRowProperties.MinRowHeight);
+		}
+		if (sHeight == null) {
+			sHeight = DEFAULT_HEIGHT;
+		}
+		return PositiveLength.parseLong(sHeight, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the height/minimal height of the row (in Millimeter) according to the second parameter.
+	 * @param height
+	 * 				the height/minimal height that will be set to the row (in Millimeter).
+	 * @param isMinHeight
+	 * 				if it is true, the row can fit the height to the text, vice versa.
+	 */
+	public void setHeight(long height, boolean isMinHeight) {
+		String sHeightMM = String.valueOf(height) + Unit.MILLIMETER.abbr();
+		String sHeightIN = PositiveLength.mapToUnit(sHeightMM, Unit.INCH);
+		splitRepeatedRows();
+		maRowElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+		maRowElement.setProperty(OdfTableRowProperties.RowHeight, sHeightIN);
+	}
+
+	//if one of the repeated row want to change something
+	//then this repeated row have to split to repeated number rows
+	//the maRowElement/mnRepeatedIndex should also be updated according to the original index in the repeated column
+	void splitRepeatedRows() {
+		int repeateNum = getRowsRepeatedNumber();
+		if (repeateNum > 1) {
+			OdfTable table = getTable();
+			TableTableElement tableEle = table.getOdfElement();
+			//change this repeated row to several single rows
+			TableTableRowElement ownerRowElement = null;
+			int repeatedRowIndex = mnRepeatedIndex;
+			Node refElement = maRowElement;
+			Node oldRowElement = maRowElement;
+			for (int i = repeateNum - 1; i >= 0; i--) {
+				TableTableRowElement newRow = (TableTableRowElement) maRowElement.cloneNode(true);
+				newRow.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-repeated");
+				tableEle.insertBefore(newRow, refElement);
+				refElement = newRow;
+				if (repeatedRowIndex == i) {
+					ownerRowElement = newRow;
+				} else {
+					table.updateRowRepository(maRowElement, i, newRow, 0);
+				}
+			}
+
+			if (ownerRowElement != null) {
+				table.updateRowRepository(maRowElement, mnRepeatedIndex, ownerRowElement, 0);
+			}
+			tableEle.removeChild(oldRowElement);
+			mRowsRepeatedNumber = -1;
+		}
+	}
+
+	/**
+	 * Return if the row always keeps its optimal height.
+	 * @return 
+	 * 			true if the row always keeps its optimal height;
+	 * 			vice versa
+	 */
+	public boolean isOptimalHeight() {
+		return Boolean.parseBoolean(maRowElement.getProperty(OdfTableRowProperties.UseOptimalRowHeight));
+	}
+
+	/**
+	 * Set if the row always keeps its optimal height.
+	 * @param isUseOptimalHeight
+	 * 					the flag that indicate row should keep its optimal height or not
+	 */
+	public void setUseOptimalHeight(boolean isUseOptimalHeight) {
+		maRowElement.setProperty(OdfTableRowProperties.UseOptimalRowHeight, String.valueOf(isUseOptimalHeight));
+	}
+
+	/**
+	 * Return an instance of <code>TableTableRowElement</code> which represents this feature.
+	 * @return an instance of <code>TableTableRowElement</code>
+	 */
+	public TableTableRowElement getOdfElement() {
+		return maRowElement;
+	}
+
+	/**
+	 * Get a cell with a specific index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the cell index in this row
+	 * @return the cell object in the given cell index
+	 */
+	public OdfTableCell getCellByIndex(int index) {
+		OdfTable table = getTable();
+		if (index < 0) {
+			throw new IllegalArgumentException("index should be nonnegative integer.");
+		}
+		// expand column as needed.
+		int lastColumnIndex = table.getColumnCount() - 1;
+		if (index > lastColumnIndex) {
+			//need clean cell style.
+			table.appendColumns((index - lastColumnIndex), true);
+		}
+		for (Node n : new DomNodeList(maRowElement.getChildNodes())) {
+			if (n instanceof TableTableCellElementBase) {
+				if (index == 0) {
+					return table.getCellInstance((TableTableCellElementBase) n,
+							0, mnRepeatedIndex);
+				} else {
+					int nextIndex = index
+							- ((TableTableCellElementBase) n).getTableNumberColumnsRepeatedAttribute().intValue();
+					if (nextIndex < 0) {
+						OdfTableCell cell = table.getCellInstance(
+								(TableTableCellElementBase) n, index,
+								mnRepeatedIndex);
+						return cell;
+					} else {
+						index = nextIndex;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Return the count of real cells in this row.
+	 * The cells covered by top cells are not counted.
+	 * <p>
+	 * Please note it might not equal to the column count of the owner table,
+	 * because some of them are the covered cells.
+	 * @return 		the cell count
+	 */
+	public int getCellCount() {
+		OdfTable table = getTable();
+		Set<OdfTableCell> realCells = new HashSet<OdfTableCell>();
+		List<CellCoverInfo> coverList = table.getCellCoverInfos(0, 0, table.getColumnCount() - 1, table.getRowCount() - 1);
+		int rowIndex = getRowIndex();
+		for (int i = 0; i < table.getColumnCount(); i++) {
+			OdfTableCell cell = table.getOwnerCellByPosition(coverList, i, rowIndex);
+			realCells.add(cell);
+		}
+		return realCells.size();
+	}
+
+	/**
+	 * Return the previous row of the current row.
+	 *
+	 * @return the previous row before this row in the owner table
+	 */
+	public OdfTableRow getPreviousRow() {
+		OdfTable table = getTable();
+		//the row has repeated row number > 1
+		if (getRowsRepeatedNumber() > 1) {
+			if (mnRepeatedIndex > 0) {
+				return table.getRowInstance(maRowElement, mnRepeatedIndex - 1);
+			}
+		}
+		//the row has repeated row number > 1 && the index is 0
+		//or the row has repeated row num = 1
+		Node aPrevNode = maRowElement.getPreviousSibling();
+		Node aCurNode = maRowElement;
+		TableTableRowElement lastRow;
+		while (true) {
+			if (aPrevNode == null) {
+				//does not have previous sibling, then get the parent
+				//because aCurNode might be the child element of table-header-rows, table-rows, table-row-group
+				Node parentNode = aCurNode.getParentNode();
+				//if the parent is table, then it means that this row is the first row in this table
+				//it has no previous row
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aPrevNode = parentNode.getPreviousSibling();
+			}
+			//else the previous node might be table-header-rows, table-rows, table-row-group
+			if (aPrevNode != null) {
+				try {
+					if (aPrevNode instanceof TableTableRowElement) {
+						return table.getRowInstance((TableTableRowElement) aPrevNode,
+								((TableTableRowElement) aPrevNode).getTableNumberRowsRepeatedAttribute().intValue() - 1);
+					} else if (aPrevNode instanceof TableTableRowsElement
+							|| aPrevNode instanceof TableTableHeaderRowsElement
+							|| aPrevNode instanceof TableTableRowGroupElement) {
+						XPath xpath = ((OdfContentDom) aPrevNode.getOwnerDocument()).getXPath();
+						synchronized (mDocument) {
+							lastRow = (TableTableRowElement) xpath.evaluate(".//table:table-row[last()]", aPrevNode, XPathConstants.NODE);
+						}
+						if (lastRow != null) {
+							return table.getRowInstance(lastRow, lastRow.getTableNumberRowsRepeatedAttribute().intValue() - 1);
+						}
+					} else {
+						aCurNode = aPrevNode;
+						aPrevNode = aPrevNode.getPreviousSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(OdfTableRow.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Return the next row of the current row.
+	 *
+	 * @return the next row after this row in the owner table
+	 */
+	public OdfTableRow getNextRow() {
+		OdfTable table = getTable();
+		//the row has repeated row number > 1
+		if (getRowsRepeatedNumber() > 1) {
+			if (mnRepeatedIndex < (getRowsRepeatedNumber() - 1)) {
+				return table.getRowInstance(maRowElement, mnRepeatedIndex + 1);
+			}
+		}
+
+		Node aNextNode = maRowElement.getNextSibling();
+		Node aCurNode = maRowElement;		
+		TableTableRowElement firstRow;
+		while (true) {
+			if (aNextNode == null) {
+				//does not have next sibling, then get the parent
+				//because aCurNode might be the child element of table-header-rows, table-rows, table-row-group
+				Node parentNode = aCurNode.getParentNode();
+				//if the parent is table, then it means that this row is the last row in this table
+				//it has no next row
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aNextNode = parentNode.getNextSibling();
+			}
+			//else the next node might be table-header-rows, table-rows, table-row-group
+			if (aNextNode != null) {
+				try {
+					if (aNextNode instanceof TableTableRowElement) {
+						return table.getRowInstance((TableTableRowElement) aNextNode, 0);
+					} else if (aNextNode instanceof TableTableRowsElement
+							|| aNextNode instanceof TableTableHeaderRowsElement
+							|| aNextNode instanceof TableTableRowGroupElement) {
+						XPath xpath = ((OdfContentDom) aNextNode.getOwnerDocument()).getXPath();
+						synchronized (mDocument) {
+							firstRow = (TableTableRowElement) xpath.evaluate(".//table:table-row[first()]", aNextNode, XPathConstants.NODE);
+						}
+						if (firstRow != null) {
+							return table.getRowInstance(firstRow, 0);
+						}
+					} else {
+						aCurNode = aNextNode;
+						aNextNode = aNextNode.getNextSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(OdfTableRow.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+	/**
+	 * Set the default cell style to this row.
+	 * <p>
+	 * The style should already exist in this document.
+	 * @param style
+	 * 			the cell style of the document
+	 */
+	public void setDefaultCellStyle(OdfStyle style) {
+		splitRepeatedRows();
+		OdfStyle defaultStyle = getDefaultCellStyle();
+		if (defaultStyle != null) {
+			defaultStyle.removeStyleUser(maRowElement);
+		}
+
+		if (style != null) {
+			style.addStyleUser(maRowElement);
+			maRowElement.setTableDefaultCellStyleNameAttribute(
+					style.getStyleNameAttribute());
+		}
+	}
+
+	/**
+	 * Get the default cell style of this row.
+	 *
+	 * @return the default cell style of this row
+	 */
+	public OdfStyle getDefaultCellStyle() {
+		String styleName = maRowElement.getTableDefaultCellStyleNameAttribute();
+		OdfStyle style = maRowElement.getAutomaticStyles().getStyle(
+				styleName, OdfStyleFamily.TableCell);
+
+		if (style == null) {
+			style = mDocument.getDocumentStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+		}
+		return style;
+	}
+
+	/**
+	 * Return the index of this row in the owner table.
+	 * 
+	 * @return the index of the row
+	 */
+	public int getRowIndex() {
+		int result = 0;
+		TableTableElement mTableElement = getTableElement();
+		TableTableRowElement rowEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableRowElement) {
+						rowEle = (TableTableRowElement) m;
+						if (rowEle == getOdfElement()) {
+							return result + mnRepeatedIndex;
+						}
+						result += rowEle.getTableNumberRowsRepeatedAttribute();
+					}
+				}
+			}
+			if (n instanceof TableTableRowElement) {
+				rowEle = (TableTableRowElement) n;
+				if (rowEle == getOdfElement()) {
+					break;
+				}
+				result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+			}
+		}
+		return result + mnRepeatedIndex;
+
+	}
+
+	//insert count number of cell from index
+	//this is called after insertColumn has been called by OdfTable
+	void insertCellByIndex(int index, int count) {
+		splitRepeatedRows();
+		//all insert the real cell
+		OdfTable table = getTable();
+		List<CellCoverInfo> coverList = table.getCellCoverInfos(0, 0, table.getColumnCount() - 1, table.getRowCount() - 1);
+		int rowIndex = getRowIndex();
+		OdfTableCell preCell;
+		if (index == 0) {
+			preCell = table.getOwnerCellByPosition(coverList, 0, rowIndex);
+		} else {
+			preCell = table.getOwnerCellByPosition(coverList, index - 1, rowIndex);
+		}
+		OdfTableCell nextCell = getCellByIndex(index);
+		if (nextCell == null) {
+			nextCell = getCellByIndex(getCellCount() - 1);
+		}
+		for (int i = index + count; i > index; i--) {
+			TableTableCellElement newCell = (TableTableCellElement) OdfXMLFactory.newOdfElement((OdfFileDom) maRowElement.getOwnerDocument() ,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-cell"));
+			newCell.setTableStyleNameAttribute(preCell.getStyleName());
+			maRowElement.insertBefore(newCell, nextCell.getOdfElement());
+		}
+	}
+
+	//note: we have to use this method to modify the row repeated number
+	//in order to update mnRepeatedIndex of the each row
+	void setRowsRepeatedNumber(int num) {
+		mRowsRepeatedNumber = num;
+		//update the mnRepeatedIndex for the ever repeated row
+		maRowElement.setTableNumberRowsRepeatedAttribute(Integer.valueOf(num));
+	}
+
+	int getRowsRepeatedNumber() {
+		if (mRowsRepeatedNumber < 0) {
+			Integer count = maRowElement.getTableNumberRowsRepeatedAttribute();
+			if (count == null) {
+				mRowsRepeatedNumber = 1;
+			} else {
+				mRowsRepeatedNumber = count.intValue();
+			}
+		}
+		return mRowsRepeatedNumber;
+	}
+
+	/****************************
+	 * Moved from OdfTable
+	 * 
+	 */
+	private void insertCellElementBefore(OdfElement parentEle, TableTableCellElementBase positionEle, TableTableCellElementBase cellEle, int count) {
+		if (positionEle == null) {
+			parentEle.appendChild(cellEle);
+			for (int i = 1; i < count; i++) {
+				parentEle.appendChild(cellEle.cloneNode(true));
+			}
+		} else {
+			parentEle.insertBefore(cellEle, positionEle);
+			for (int i = 1; i < count; i++) {
+				parentEle.insertBefore(cellEle.cloneNode(true), positionEle);
+			}
+		}
+	}
+
+	void insertCellBefore(OdfTableCell refCell, OdfTableCell positionCell, int count) {
+		splitRepeatedRows();
+		OdfTable ownerTable = getTable();
+
+		if (positionCell == null) {
+			if (refCell.isCoveredElement()) {
+				TableTableCellElement coverCellEle = (TableTableCellElement) refCell.getCoverCell().getOdfElement();
+				TableTableCellElement newCellEle = (TableTableCellElement) coverCellEle.cloneNode(true);
+				cleanCell(newCellEle);
+				insertCellElementBefore(getOdfElement(), null, newCellEle, count);
+			} else {
+				TableTableCellElement endCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(endCellEle);
+				getOdfElement().appendChild(endCellEle);
+				reviseStyleFromLastColumnToMedium(refCell);
+				if (count > 1) {
+					TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+					cleanCell(newCellEle);
+					insertCellElementBefore(getOdfElement(), endCellEle, newCellEle, count - 1);
+				}
+			}
+		} else {
+			TableTableCellElement coverRefCellEle = null;
+			TableTableCellElement coverPosCellEle = null;
+			OdfTableCell coverRefCell = null;
+			if (refCell.isCoveredElement()) { //get ref cover cell
+				coverRefCell = refCell.getCoverCell();
+				coverRefCellEle = (TableTableCellElement) coverRefCell.getOdfElement();
+			}
+			if (positionCell.isCoveredElement()) //get position cover cell
+			{
+				coverPosCellEle = (TableTableCellElement) positionCell.getCoverCell().getOdfElement();
+			}
+
+			if ((coverRefCellEle != null && coverRefCellEle == coverPosCellEle) //is cover cell and have the same cover cell
+					|| (coverPosCellEle != null && refCell.getOdfElement() == coverPosCellEle)) //position cell is cover cell and refer cell covers position cell
+			{
+				if (coverRefCellEle == null) {
+					coverRefCellEle = (TableTableCellElement) refCell.getOdfElement();
+					coverRefCell = refCell;
+				}
+				TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+						(OdfFileDom) ownerTable.getOdfElement().getOwnerDocument(),
+						OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+				insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) //the first cover line
+				{
+					coverRefCell.setColumnSpannedNumber(coverRefCell.getColumnSpannedNumber() + count);
+				}
+			} else if (coverRefCellEle != null) //is cover cell
+			{
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) { //the first cover line
+					TableTableCellElement newCellEle = (TableTableCellElement) coverRefCellEle.cloneNode(true);
+					cleanCell(newCellEle);
+					insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+				} else { //the second and other cover line
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) refCell.getOdfElement().cloneNode(true);
+					newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+					insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+				}
+			} else if ((refCell.getOdfElement() == positionCell.getOdfElement())
+					&& (refCell.getColumnsRepeatedNumber() > 1)) //repeated number
+			{
+				int repeatNum = refCell.getColumnsRepeatedNumber();
+				//update the cell that after the ref cell
+				for (int i = repeatNum - 1; i > refCell.mnRepeatedColIndex; i--) {
+					ownerTable.updateCellRepository(refCell.getOdfElement(), i, refCell.mnRepeatedRowIndex,
+							refCell.getOdfElement(), i + count, refCell.mnRepeatedRowIndex);
+				}
+				refCell.getOdfElement().setTableNumberColumnsRepeatedAttribute(repeatNum + count);
+			} else {
+				TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(newCellEle);
+				insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+			}
+		}
+	}
+
+	/**
+	 * This method is to insert a cell same as refCell before positionCell.
+	 * <p>
+	 * This method is invoked by appendColumn and insertColumnBefore.
+	 */
+	OdfTableCell insertCellBefore(OdfTableCell refCell, OdfTableCell positionCell) {
+		splitRepeatedRows();
+		OdfTableCell newCell = null;
+		OdfTable ownerTable = getTable();
+
+		if (positionCell == null) {
+			if (refCell.isCoveredElement()) {
+				TableTableCellElement coverCellEle = (TableTableCellElement) refCell.getCoverCell().getOdfElement();
+				TableTableCellElement newCellEle = (TableTableCellElement) coverCellEle.cloneNode(true);
+				cleanCell(newCellEle);
+				getOdfElement().appendChild(newCellEle);
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+			} else {
+				TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(newCellEle);
+				getOdfElement().appendChild(newCellEle);
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+				reviseStyleFromLastColumnToMedium(refCell);
+			}
+		} else {
+			TableTableCellElement coverRefCellEle = null;
+			TableTableCellElement coverPosCellEle = null;
+			OdfTableCell coverRefCell = null;
+			if (refCell.isCoveredElement()) { //get ref cover cell
+				coverRefCell = refCell.getCoverCell();
+				coverRefCellEle = (TableTableCellElement) coverRefCell.getOdfElement();
+			}
+			if (positionCell.isCoveredElement()) //get position cover cell
+			{
+				coverPosCellEle = (TableTableCellElement) positionCell.getCoverCell().getOdfElement();
+			}
+
+			if ((coverRefCellEle != null && coverRefCellEle == coverPosCellEle) //is cover cell and have the same cover cell
+					|| (coverPosCellEle != null && refCell.getOdfElement() == coverPosCellEle)) //position cell is cover cell and refer cell covers position cell
+			{
+				if (coverRefCellEle == null) {
+					coverRefCellEle = (TableTableCellElement) refCell.getOdfElement();
+					coverRefCell = refCell;
+				}
+				TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+						(OdfFileDom) ownerTable.getOdfElement().getOwnerDocument(),
+						OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+				getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) //the first cover line
+				{
+					coverRefCell.setColumnSpannedNumber(coverRefCell.getColumnSpannedNumber() + 1);
+				}
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+			} else if (coverRefCellEle != null) //is cover cell
+			{
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) { //the first cover line
+					TableTableCellElement newCellEle = (TableTableCellElement) coverRefCellEle.cloneNode(true);
+					cleanCell(newCellEle);
+					getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+					newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+				} else { //the second and other cover line
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) refCell.getOdfElement().cloneNode(true);
+					newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+					getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+					newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+				}
+			} else if ((refCell.getOdfElement() == positionCell.getOdfElement())
+					&& (refCell.getColumnsRepeatedNumber() > 1)) //repeated number
+			{
+				int repeatNum = refCell.getColumnsRepeatedNumber();
+				//update the cell that after the ref cell
+				for (int i = repeatNum - 1; i > refCell.mnRepeatedColIndex; i--) {
+					ownerTable.updateCellRepository(refCell.getOdfElement(), i, refCell.mnRepeatedRowIndex,
+							refCell.getOdfElement(), i + 1, refCell.mnRepeatedRowIndex);
+				}
+				refCell.getOdfElement().setTableNumberColumnsRepeatedAttribute(repeatNum + 1);
+				newCell = ownerTable.getCellInstance(refCell.getOdfElement(), refCell.mnRepeatedColIndex + 1, refCell.mnRepeatedRowIndex);
+			} else {
+				TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(newCellEle);
+				getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+			}
+		}
+		return newCell;
+	}
+
+	private void cleanCell(TableTableCellElement newCellEle) {
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "date-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "time-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "boolean-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "string-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "formula");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-spanned");
+		if(!getTable().isCellStyleInheritance()){
+			newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+		}
+		Node n = newCellEle.getFirstChild();
+		while (n != null) {
+			Node m = n.getNextSibling();
+			if (n instanceof TextPElement
+					|| n instanceof TextHElement
+					|| n instanceof TextListElement) {
+				newCellEle.removeChild(n);
+			}
+			n = m;
+		}
+	}
+
+	private void reviseStyleFromLastColumnToMedium(OdfTableCell oldLastCell) {
+		if (getTable().mIsSpreadsheet) return;
+		
+		OdfStyle styleEle = oldLastCell.getCellStyleElementForWrite();
+		if (styleEle != null) {
+			if (oldLastCell.getRowIndex() == 0) {
+				OdfTable.setLeftTopBorderStyleProperties(styleEle);
+			} else {
+				OdfTable.setLeftBottomBorderStylesProperties(styleEle);
+			}
+		}
+	}
+
+	private void reviseStyleFromMediumColumnToLast(OdfTableCell newLastCell) {
+		if (getTable().mIsSpreadsheet) return;
+		
+		OdfStyle styleEle = newLastCell.getCellStyleElementForWrite();
+		if (styleEle != null) {
+			if (newLastCell.getRowIndex() == 0) {
+				OdfTable.setRightTopBorderStyleProperties(styleEle);
+			} else {
+				OdfTable.setRightBottomBorderStylesProperties(styleEle);
+			}
+		}
+	}
+
+	/**
+	 * This method is invoked by removeColumnByIndex
+	 * So we don't need to care about 
+	 * the covered and spanned cell in a same column 
+	 */
+	void removeCellByIndex(int nStart, int nCount) {
+		splitRepeatedRows();
+		OdfTableCell startCell = getCellByIndex(nStart);
+		OdfTableCell coverCell = null;
+		if (startCell.isCoveredElement()) {
+			coverCell = startCell.getCoverCellInSameRow();
+		}
+
+		int index = nStart;
+		for (int i = 0; i < nCount; i++) {
+			OdfTableCell cell = getCellByIndex(index);
+			cell.splitRepeatedCells();
+			if (cell.isCoveredElement() && coverCell != null) {
+				coverCell.setColumnSpannedNumber(coverCell.getColumnSpannedNumber() - cell.getColumnsRepeatedNumber());
+				maRowElement.removeChild(cell.getOdfElement());
+				i += cell.getColumnsRepeatedNumber() - 1;
+			} else if (cell.isCoveredElement()) {
+				maRowElement.removeChild(cell.getOdfElement());
+				i += cell.getColumnsRepeatedNumber() - 1;
+			} else if (!cell.isCoveredElement()) {
+				if (i + cell.getColumnSpannedNumber() <= nCount) {
+					maRowElement.removeChild(cell.getOdfElement());
+					i += cell.getColumnSpannedNumber() - 1;
+				} else {
+					removeCellByIndex(index + 1, nCount - i);
+				}
+			}
+		}
+
+		int clmnum = getTable().getColumnCount();
+		if (nStart + nCount >= clmnum) {
+			OdfTableCell cell = getCellByIndex(nStart - 1);
+			reviseStyleFromMediumColumnToLast(cell);
+		}
+	}
+
+	void removeAllCellsRelationship() {
+		OdfTable table = getTable();
+
+		for (int i = 0; i < table.getColumnCount();) {
+			OdfTableCell cell = getCellByIndex(i);
+			if (cell.isCoveredElement()) //cell is a cover cell
+			{
+				OdfTableCell coverCell = cell.getCoverCellInSameColumn();
+				if (coverCell != null) {
+					coverCell.setRowSpannedNumber(coverCell.getRowSpannedNumber() - getRowsRepeatedNumber());
+				}
+				getOdfElement().removeChild(cell.getOdfElement());
+			} else {
+				if (cell.getRowSpannedNumber() > 1) //cell is not a cover cell, and it span more rows
+				{
+					//split the cell under this cell to a single cell
+					OdfTableRow nextRow = table.getRowByIndex(getRowIndex() + 1);
+					if (nextRow.getRowsRepeatedNumber() > 1) {
+						nextRow.splitRepeatedRows();
+					}
+					OdfTableCell coveredCell = table.getCellByPosition(cell.getColumnIndex(), getRowIndex() + 1);
+					if (coveredCell.getColumnsRepeatedNumber() > 1) {
+						coveredCell.splitRepeatedCells();
+						coveredCell = table.getCellByPosition(cell.getColumnIndex(), getRowIndex() + 1);
+					}
+
+					//create a new cell
+					TableTableCellElement newCellEle = (TableTableCellElement) cell.getOdfElement().cloneNode(true);
+					newCellEle.setTableNumberRowsSpannedAttribute(cell.getRowSpannedNumber() - getRowsRepeatedNumber());
+					//update repository
+					int startRow = coveredCell.getRowIndex();
+					int endRow = coveredCell.getRowIndex() + newCellEle.getTableNumberRowsSpannedAttribute();
+					int startClm = coveredCell.getColumnIndex();
+					int endClm = coveredCell.getColumnIndex() + newCellEle.getTableNumberColumnsSpannedAttribute() * newCellEle.getTableNumberColumnsRepeatedAttribute();
+					coveredCell.getOdfElement().getParentNode().replaceChild(newCellEle, coveredCell.getOdfElement());
+
+					table.updateRepositoryWhenCellElementChanged(startRow, endRow, startClm, endClm, newCellEle);
+				}
+			}
+			i += cell.getColumnSpannedNumber();
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/DefaultElementVisitor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/DefaultElementVisitor.java
new file mode 100644
index 0000000..4bbe95d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/DefaultElementVisitor.java
@@ -0,0 +1,5423 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateColorElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateMotionElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateTransformElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAudioElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimCommandElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimIterateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimParElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimParamElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimSeqElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimSetElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimTransitionFilterElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartAxisElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartCategoriesElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartChartElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartDataLabelElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartDataPointElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartDomainElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartEquationElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartErrorIndicatorElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartFloorElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartFooterElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartGridElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartLabelSeparatorElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartLegendElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartMeanValueElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartPlotAreaElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartRegressionCurveElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartSeriesElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartStockGainMarkerElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartStockLossMarkerElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartStockRangeLineElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartSubtitleElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartSymbolImageElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartTitleElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartWallElement;
+import org.odftoolkit.odfdom.dom.element.config.ConfigConfigItemElement;
+import org.odftoolkit.odfdom.dom.element.config.ConfigConfigItemMapEntryElement;
+import org.odftoolkit.odfdom.dom.element.config.ConfigConfigItemMapIndexedElement;
+import org.odftoolkit.odfdom.dom.element.config.ConfigConfigItemMapNamedElement;
+import org.odftoolkit.odfdom.dom.element.config.ConfigConfigItemSetElement;
+import org.odftoolkit.odfdom.dom.element.db.DbApplicationConnectionSettingsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbAutoIncrementElement;
+import org.odftoolkit.odfdom.dom.element.db.DbCharacterSetElement;
+import org.odftoolkit.odfdom.dom.element.db.DbColumnElement;
+import org.odftoolkit.odfdom.dom.element.db.DbColumnDefinitionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbColumnDefinitionsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbColumnsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbComponentElement;
+import org.odftoolkit.odfdom.dom.element.db.DbComponentCollectionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbConnectionDataElement;
+import org.odftoolkit.odfdom.dom.element.db.DbConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDataSourceElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDataSourceSettingElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDataSourceSettingValueElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDataSourceSettingsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDatabaseDescriptionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDelimiterElement;
+import org.odftoolkit.odfdom.dom.element.db.DbDriverSettingsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbFileBasedDatabaseElement;
+import org.odftoolkit.odfdom.dom.element.db.DbFilterStatementElement;
+import org.odftoolkit.odfdom.dom.element.db.DbFormsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbIndexElement;
+import org.odftoolkit.odfdom.dom.element.db.DbIndexColumnElement;
+import org.odftoolkit.odfdom.dom.element.db.DbIndexColumnsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbIndicesElement;
+import org.odftoolkit.odfdom.dom.element.db.DbKeyElement;
+import org.odftoolkit.odfdom.dom.element.db.DbKeyColumnElement;
+import org.odftoolkit.odfdom.dom.element.db.DbKeyColumnsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbKeysElement;
+import org.odftoolkit.odfdom.dom.element.db.DbLoginElement;
+import org.odftoolkit.odfdom.dom.element.db.DbOrderStatementElement;
+import org.odftoolkit.odfdom.dom.element.db.DbQueriesElement;
+import org.odftoolkit.odfdom.dom.element.db.DbQueryElement;
+import org.odftoolkit.odfdom.dom.element.db.DbQueryCollectionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbReportsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbSchemaDefinitionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbServerDatabaseElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableDefinitionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableDefinitionsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableExcludeFilterElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableFilterElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableFilterPatternElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableIncludeFilterElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableRepresentationElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableRepresentationsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableSettingElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableSettingsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableTypeElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableTypeFilterElement;
+import org.odftoolkit.odfdom.dom.element.db.DbUpdateTableElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDescriptionElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcLanguageElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcSubjectElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcTitleElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dCubeElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dExtrudeElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dLightElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dRotateElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSphereElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAppletElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAreaCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAreaPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAreaRectangleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawContourPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawContourPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEnhancedGeometryElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEquationElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFloatingFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGluePointElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGradientElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawHandleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawHatchElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageMapElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLayerElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLayerSetElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMarkerElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectOleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawOpacityElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawParamElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPluginElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawStrokeDashElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawTextBoxElement;
+import org.odftoolkit.odfdom.dom.element.form.FormButtonElement;
+import org.odftoolkit.odfdom.dom.element.form.FormCheckboxElement;
+import org.odftoolkit.odfdom.dom.element.form.FormColumnElement;
+import org.odftoolkit.odfdom.dom.element.form.FormComboboxElement;
+import org.odftoolkit.odfdom.dom.element.form.FormConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.element.form.FormDateElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFileElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFixedTextElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFrameElement;
+import org.odftoolkit.odfdom.dom.element.form.FormGenericControlElement;
+import org.odftoolkit.odfdom.dom.element.form.FormGridElement;
+import org.odftoolkit.odfdom.dom.element.form.FormHiddenElement;
+import org.odftoolkit.odfdom.dom.element.form.FormImageElement;
+import org.odftoolkit.odfdom.dom.element.form.FormImageFrameElement;
+import org.odftoolkit.odfdom.dom.element.form.FormItemElement;
+import org.odftoolkit.odfdom.dom.element.form.FormListPropertyElement;
+import org.odftoolkit.odfdom.dom.element.form.FormListValueElement;
+import org.odftoolkit.odfdom.dom.element.form.FormListboxElement;
+import org.odftoolkit.odfdom.dom.element.form.FormNumberElement;
+import org.odftoolkit.odfdom.dom.element.form.FormOptionElement;
+import org.odftoolkit.odfdom.dom.element.form.FormPasswordElement;
+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.form.FormPropertyElement;
+import org.odftoolkit.odfdom.dom.element.form.FormRadioElement;
+import org.odftoolkit.odfdom.dom.element.form.FormTextElement;
+import org.odftoolkit.odfdom.dom.element.form.FormTextareaElement;
+import org.odftoolkit.odfdom.dom.element.form.FormTimeElement;
+import org.odftoolkit.odfdom.dom.element.form.FormValueRangeElement;
+import org.odftoolkit.odfdom.dom.element.math.MathMathElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaAutoReloadElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDateStringElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaHyperlinkBehaviourElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaTemplateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberAmPmElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencyStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencySymbolElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDateStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDayElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDayOfWeekElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberEmbeddedTextElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberEraElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberFractionElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberHoursElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberMinutesElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberMonthElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberPercentageStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberQuarterElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberScientificNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberSecondsElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextContentElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTimeStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberWeekOfYearElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberYearElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAutomaticStylesElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBinaryDataElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChartElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDatabaseElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDdeSourceElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentContentElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentMetaElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentSettingsElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentStylesElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDrawingElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFontFaceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeImageElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMasterStylesElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeScriptElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeScriptsElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeSettingsElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeStylesElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationAnimationGroupElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationAnimationsElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeDeclElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDimElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationEventListenerElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterDeclElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderDeclElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHideShapeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHideTextElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationPlaceholderElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationPlayElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationShowElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationShowShapeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationShowTextElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationSoundElement;
+import org.odftoolkit.odfdom.dom.element.script.ScriptEventListenerElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleBackgroundImageElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleChartPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleColumnElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleColumnSepElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleColumnsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDefaultPageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDefaultStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDrawingPagePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDropCapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFontFaceElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterLeftElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFootnoteSepElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHandoutMasterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderFooterPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderLeftElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelLabelAlignmentElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePresentationPageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleRegionCenterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleRegionLeftElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleRegionRightElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleRubyPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleSectionPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTabStopElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTabStopsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableRowPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDefinitionSrcElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgFontFaceFormatElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgFontFaceNameElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgFontFaceSrcElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgFontFaceUriElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgLinearGradientElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgRadialGradientElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgStopElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.table.TableBackgroundElement;
+import org.odftoolkit.odfdom.dom.element.table.TableBodyElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCellAddressElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCellContentChangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCellContentDeletionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCellRangeSourceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableChangeDeletionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableChangeTrackTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableConsolidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCutOffsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotDisplayInfoElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotFieldElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotFieldReferenceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotGroupMemberElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotGroupsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotLayoutInfoElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotLevelElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotMemberElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotMembersElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotSortInfoElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotSubtotalElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotSubtotalsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTablesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseSourceQueryElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseSourceSqlElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseSourceTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinkElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinksElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDeletionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDeletionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDependenciesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDependencyElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDescElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDetectiveElement;
+import org.odftoolkit.odfdom.dom.element.table.TableErrorMacroElement;
+import org.odftoolkit.odfdom.dom.element.table.TableErrorMessageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableEvenColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableEvenRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFilterElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFilterAndElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFilterConditionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFilterOrElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFilterSetItemElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFirstColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFirstRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableHelpMessageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableHighlightedRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableInsertionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableInsertionCutOffElement;
+import org.odftoolkit.odfdom.dom.element.table.TableIterationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLastColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLastRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableMovementElement;
+import org.odftoolkit.odfdom.dom.element.table.TableMovementCutOffElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNullDateElement;
+import org.odftoolkit.odfdom.dom.element.table.TableOddColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableOddRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableOperationElement;
+import org.odftoolkit.odfdom.dom.element.table.TablePreviousElement;
+import org.odftoolkit.odfdom.dom.element.table.TableScenarioElement;
+import org.odftoolkit.odfdom.dom.element.table.TableShapesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSortElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSortByElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSortGroupsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSourceCellRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSourceRangeAddressElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSourceServiceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSubtotalFieldElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSubtotalRuleElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSubtotalRulesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableSourceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableTemplateElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTargetRangeAddressElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTitleElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexMarkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexMarkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorInitialsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyConfigurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographySourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkRefElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangedRegionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChapterElement;
+import org.odftoolkit.odfdom.dom.element.text.TextCharacterCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextConditionalTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextCreationDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextCreationTimeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextCreatorElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDatabaseDisplayElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDatabaseNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDatabaseNextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDatabaseRowNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDatabaseRowSelectElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDeletionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDescriptionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextEditingCyclesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextEditingDurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextExecuteMacroElement;
+import org.odftoolkit.odfdom.dom.element.text.TextExpressionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextFileNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextFormatChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHiddenParagraphElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHiddenTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextImageCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexBodyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryChapterElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryLinkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryLinkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryPageNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntrySpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryTabStopElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexSourceStyleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexSourceStylesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextInitialCreatorElement;
+import org.odftoolkit.odfdom.dom.element.text.TextInsertionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextKeywordsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLinenumberingConfigurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLinenumberingSeparatorElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListHeaderElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleBulletElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListStyleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextMeasureElement;
+import org.odftoolkit.odfdom.dom.element.text.TextMetaElement;
+import org.odftoolkit.odfdom.dom.element.text.TextMetaFieldElement;
+import org.odftoolkit.odfdom.dom.element.text.TextModificationDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextModificationTimeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNoteElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNoteBodyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNoteCitationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNoteContinuationNoticeBackwardElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNoteContinuationNoticeForwardElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNoteRefElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNotesConfigurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberedParagraphElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextOutlineLevelStyleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextOutlineStyleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageContinuationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageSequenceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageVariableGetElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageVariableSetElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPlaceholderElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPrintDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPrintTimeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPrintedByElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceMarkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceMarkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceRefElement;
+import org.odftoolkit.odfdom.dom.element.text.TextRubyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextRubyBaseElement;
+import org.odftoolkit.odfdom.dom.element.text.TextRubyTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextScriptElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderCityElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderCompanyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderCountryElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderEmailElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderFaxElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderFirstnameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderInitialsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderLastnameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderPhonePrivateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderPhoneWorkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderPositionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderPostalCodeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderStateOrProvinceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderStreetElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSenderTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceRefElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSheetNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSortKeyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSubjectElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableFormulaElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTemplateNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTextInputElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTimeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserDefinedElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldGetElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldInputElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexMarkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexMarkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableGetElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableInputElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableSetElement;
+import org.odftoolkit.odfdom.dom.element.text.TextWordCountElement;
+import org.odftoolkit.odfdom.dom.element.xforms.XformsModelElement;
+
+/**
+ * The default visitor for ODF XML sSchema elements.
+ * The default behavior of all specific elements is to dispatch to the visit call
+ * to their super class <code>OdfElement<code>.
+ * This default method is abstract and have to be overridden.
+ * The method is the only method of <code>ElementVisitor<code> interface from the package layer.
+ */
+public abstract class DefaultElementVisitor implements ElementVisitor {
+
+	abstract public void visit(OdfElement element);
+
+	/**
+	 * A method to visit "anim:animate" elements
+	 * @param ele - an instance of AnimAnimateElement
+	 */
+	public void visit(AnimAnimateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:animateColor" elements
+	 * @param ele - an instance of AnimAnimateColorElement
+	 */
+	public void visit(AnimAnimateColorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:animateMotion" elements
+	 * @param ele - an instance of AnimAnimateMotionElement
+	 */
+	public void visit(AnimAnimateMotionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:animateTransform" elements
+	 * @param ele - an instance of AnimAnimateTransformElement
+	 */
+	public void visit(AnimAnimateTransformElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:audio" elements
+	 * @param ele - an instance of AnimAudioElement
+	 */
+	public void visit(AnimAudioElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:command" elements
+	 * @param ele - an instance of AnimCommandElement
+	 */
+	public void visit(AnimCommandElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:iterate" elements
+	 * @param ele - an instance of AnimIterateElement
+	 */
+	public void visit(AnimIterateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:par" elements
+	 * @param ele - an instance of AnimParElement
+	 */
+	public void visit(AnimParElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:param" elements
+	 * @param ele - an instance of AnimParamElement
+	 */
+	public void visit(AnimParamElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:seq" elements
+	 * @param ele - an instance of AnimSeqElement
+	 */
+	public void visit(AnimSeqElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:set" elements
+	 * @param ele - an instance of AnimSetElement
+	 */
+	public void visit(AnimSetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "anim:transitionFilter" elements
+	 * @param ele - an instance of AnimTransitionFilterElement
+	 */
+	public void visit(AnimTransitionFilterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:axis" elements
+	 * @param ele - an instance of ChartAxisElement
+	 */
+	public void visit(ChartAxisElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:categories" elements
+	 * @param ele - an instance of ChartCategoriesElement
+	 */
+	public void visit(ChartCategoriesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:chart" elements
+	 * @param ele - an instance of ChartChartElement
+	 */
+	public void visit(ChartChartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:data-label" elements
+	 * @param ele - an instance of ChartDataLabelElement
+	 */
+	public void visit(ChartDataLabelElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:data-point" elements
+	 * @param ele - an instance of ChartDataPointElement
+	 */
+	public void visit(ChartDataPointElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:domain" elements
+	 * @param ele - an instance of ChartDomainElement
+	 */
+	public void visit(ChartDomainElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:equation" elements
+	 * @param ele - an instance of ChartEquationElement
+	 */
+	public void visit(ChartEquationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:error-indicator" elements
+	 * @param ele - an instance of ChartErrorIndicatorElement
+	 */
+	public void visit(ChartErrorIndicatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:floor" elements
+	 * @param ele - an instance of ChartFloorElement
+	 */
+	public void visit(ChartFloorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:footer" elements
+	 * @param ele - an instance of ChartFooterElement
+	 */
+	public void visit(ChartFooterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:grid" elements
+	 * @param ele - an instance of ChartGridElement
+	 */
+	public void visit(ChartGridElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:label-separator" elements
+	 * @param ele - an instance of ChartLabelSeparatorElement
+	 */
+	public void visit(ChartLabelSeparatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:legend" elements
+	 * @param ele - an instance of ChartLegendElement
+	 */
+	public void visit(ChartLegendElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:mean-value" elements
+	 * @param ele - an instance of ChartMeanValueElement
+	 */
+	public void visit(ChartMeanValueElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:plot-area" elements
+	 * @param ele - an instance of ChartPlotAreaElement
+	 */
+	public void visit(ChartPlotAreaElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:regression-curve" elements
+	 * @param ele - an instance of ChartRegressionCurveElement
+	 */
+	public void visit(ChartRegressionCurveElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:series" elements
+	 * @param ele - an instance of ChartSeriesElement
+	 */
+	public void visit(ChartSeriesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:stock-gain-marker" elements
+	 * @param ele - an instance of ChartStockGainMarkerElement
+	 */
+	public void visit(ChartStockGainMarkerElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:stock-loss-marker" elements
+	 * @param ele - an instance of ChartStockLossMarkerElement
+	 */
+	public void visit(ChartStockLossMarkerElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:stock-range-line" elements
+	 * @param ele - an instance of ChartStockRangeLineElement
+	 */
+	public void visit(ChartStockRangeLineElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:subtitle" elements
+	 * @param ele - an instance of ChartSubtitleElement
+	 */
+	public void visit(ChartSubtitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:symbol-image" elements
+	 * @param ele - an instance of ChartSymbolImageElement
+	 */
+	public void visit(ChartSymbolImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:title" elements
+	 * @param ele - an instance of ChartTitleElement
+	 */
+	public void visit(ChartTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "chart:wall" elements
+	 * @param ele - an instance of ChartWallElement
+	 */
+	public void visit(ChartWallElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "config:config-item" elements
+	 * @param ele - an instance of ConfigConfigItemElement
+	 */
+	public void visit(ConfigConfigItemElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "config:config-item-map-entry" elements
+	 * @param ele - an instance of ConfigConfigItemMapEntryElement
+	 */
+	public void visit(ConfigConfigItemMapEntryElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "config:config-item-map-indexed" elements
+	 * @param ele - an instance of ConfigConfigItemMapIndexedElement
+	 */
+	public void visit(ConfigConfigItemMapIndexedElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "config:config-item-map-named" elements
+	 * @param ele - an instance of ConfigConfigItemMapNamedElement
+	 */
+	public void visit(ConfigConfigItemMapNamedElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "config:config-item-set" elements
+	 * @param ele - an instance of ConfigConfigItemSetElement
+	 */
+	public void visit(ConfigConfigItemSetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:application-connection-settings" elements
+	 * @param ele - an instance of DbApplicationConnectionSettingsElement
+	 */
+	public void visit(DbApplicationConnectionSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:auto-increment" elements
+	 * @param ele - an instance of DbAutoIncrementElement
+	 */
+	public void visit(DbAutoIncrementElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:character-set" elements
+	 * @param ele - an instance of DbCharacterSetElement
+	 */
+	public void visit(DbCharacterSetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:column" elements
+	 * @param ele - an instance of DbColumnElement
+	 */
+	public void visit(DbColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:column-definition" elements
+	 * @param ele - an instance of DbColumnDefinitionElement
+	 */
+	public void visit(DbColumnDefinitionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:column-definitions" elements
+	 * @param ele - an instance of DbColumnDefinitionsElement
+	 */
+	public void visit(DbColumnDefinitionsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:columns" elements
+	 * @param ele - an instance of DbColumnsElement
+	 */
+	public void visit(DbColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:component" elements
+	 * @param ele - an instance of DbComponentElement
+	 */
+	public void visit(DbComponentElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:component-collection" elements
+	 * @param ele - an instance of DbComponentCollectionElement
+	 */
+	public void visit(DbComponentCollectionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:connection-data" elements
+	 * @param ele - an instance of DbConnectionDataElement
+	 */
+	public void visit(DbConnectionDataElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:connection-resource" elements
+	 * @param ele - an instance of DbConnectionResourceElement
+	 */
+	public void visit(DbConnectionResourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:data-source" elements
+	 * @param ele - an instance of DbDataSourceElement
+	 */
+	public void visit(DbDataSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:data-source-setting" elements
+	 * @param ele - an instance of DbDataSourceSettingElement
+	 */
+	public void visit(DbDataSourceSettingElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:data-source-setting-value" elements
+	 * @param ele - an instance of DbDataSourceSettingValueElement
+	 */
+	public void visit(DbDataSourceSettingValueElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:data-source-settings" elements
+	 * @param ele - an instance of DbDataSourceSettingsElement
+	 */
+	public void visit(DbDataSourceSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:database-description" elements
+	 * @param ele - an instance of DbDatabaseDescriptionElement
+	 */
+	public void visit(DbDatabaseDescriptionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:delimiter" elements
+	 * @param ele - an instance of DbDelimiterElement
+	 */
+	public void visit(DbDelimiterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:driver-settings" elements
+	 * @param ele - an instance of DbDriverSettingsElement
+	 */
+	public void visit(DbDriverSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:file-based-database" elements
+	 * @param ele - an instance of DbFileBasedDatabaseElement
+	 */
+	public void visit(DbFileBasedDatabaseElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:filter-statement" elements
+	 * @param ele - an instance of DbFilterStatementElement
+	 */
+	public void visit(DbFilterStatementElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:forms" elements
+	 * @param ele - an instance of DbFormsElement
+	 */
+	public void visit(DbFormsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:index" elements
+	 * @param ele - an instance of DbIndexElement
+	 */
+	public void visit(DbIndexElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:index-column" elements
+	 * @param ele - an instance of DbIndexColumnElement
+	 */
+	public void visit(DbIndexColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:index-columns" elements
+	 * @param ele - an instance of DbIndexColumnsElement
+	 */
+	public void visit(DbIndexColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:indices" elements
+	 * @param ele - an instance of DbIndicesElement
+	 */
+	public void visit(DbIndicesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:key" elements
+	 * @param ele - an instance of DbKeyElement
+	 */
+	public void visit(DbKeyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:key-column" elements
+	 * @param ele - an instance of DbKeyColumnElement
+	 */
+	public void visit(DbKeyColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:key-columns" elements
+	 * @param ele - an instance of DbKeyColumnsElement
+	 */
+	public void visit(DbKeyColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:keys" elements
+	 * @param ele - an instance of DbKeysElement
+	 */
+	public void visit(DbKeysElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:login" elements
+	 * @param ele - an instance of DbLoginElement
+	 */
+	public void visit(DbLoginElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:order-statement" elements
+	 * @param ele - an instance of DbOrderStatementElement
+	 */
+	public void visit(DbOrderStatementElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:queries" elements
+	 * @param ele - an instance of DbQueriesElement
+	 */
+	public void visit(DbQueriesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:query" elements
+	 * @param ele - an instance of DbQueryElement
+	 */
+	public void visit(DbQueryElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:query-collection" elements
+	 * @param ele - an instance of DbQueryCollectionElement
+	 */
+	public void visit(DbQueryCollectionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:reports" elements
+	 * @param ele - an instance of DbReportsElement
+	 */
+	public void visit(DbReportsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:schema-definition" elements
+	 * @param ele - an instance of DbSchemaDefinitionElement
+	 */
+	public void visit(DbSchemaDefinitionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:server-database" elements
+	 * @param ele - an instance of DbServerDatabaseElement
+	 */
+	public void visit(DbServerDatabaseElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-definition" elements
+	 * @param ele - an instance of DbTableDefinitionElement
+	 */
+	public void visit(DbTableDefinitionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-definitions" elements
+	 * @param ele - an instance of DbTableDefinitionsElement
+	 */
+	public void visit(DbTableDefinitionsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-exclude-filter" elements
+	 * @param ele - an instance of DbTableExcludeFilterElement
+	 */
+	public void visit(DbTableExcludeFilterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-filter" elements
+	 * @param ele - an instance of DbTableFilterElement
+	 */
+	public void visit(DbTableFilterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-filter-pattern" elements
+	 * @param ele - an instance of DbTableFilterPatternElement
+	 */
+	public void visit(DbTableFilterPatternElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-include-filter" elements
+	 * @param ele - an instance of DbTableIncludeFilterElement
+	 */
+	public void visit(DbTableIncludeFilterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-representation" elements
+	 * @param ele - an instance of DbTableRepresentationElement
+	 */
+	public void visit(DbTableRepresentationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-representations" elements
+	 * @param ele - an instance of DbTableRepresentationsElement
+	 */
+	public void visit(DbTableRepresentationsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-setting" elements
+	 * @param ele - an instance of DbTableSettingElement
+	 */
+	public void visit(DbTableSettingElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-settings" elements
+	 * @param ele - an instance of DbTableSettingsElement
+	 */
+	public void visit(DbTableSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-type" elements
+	 * @param ele - an instance of DbTableTypeElement
+	 */
+	public void visit(DbTableTypeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:table-type-filter" elements
+	 * @param ele - an instance of DbTableTypeFilterElement
+	 */
+	public void visit(DbTableTypeFilterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "db:update-table" elements
+	 * @param ele - an instance of DbUpdateTableElement
+	 */
+	public void visit(DbUpdateTableElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dc:creator" elements
+	 * @param ele - an instance of DcCreatorElement
+	 */
+	public void visit(DcCreatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dc:date" elements
+	 * @param ele - an instance of DcDateElement
+	 */
+	public void visit(DcDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dc:description" elements
+	 * @param ele - an instance of DcDescriptionElement
+	 */
+	public void visit(DcDescriptionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dc:language" elements
+	 * @param ele - an instance of DcLanguageElement
+	 */
+	public void visit(DcLanguageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dc:subject" elements
+	 * @param ele - an instance of DcSubjectElement
+	 */
+	public void visit(DcSubjectElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dc:title" elements
+	 * @param ele - an instance of DcTitleElement
+	 */
+	public void visit(DcTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dr3d:cube" elements
+	 * @param ele - an instance of Dr3dCubeElement
+	 */
+	public void visit(Dr3dCubeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dr3d:extrude" elements
+	 * @param ele - an instance of Dr3dExtrudeElement
+	 */
+	public void visit(Dr3dExtrudeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dr3d:light" elements
+	 * @param ele - an instance of Dr3dLightElement
+	 */
+	public void visit(Dr3dLightElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dr3d:rotate" elements
+	 * @param ele - an instance of Dr3dRotateElement
+	 */
+	public void visit(Dr3dRotateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dr3d:scene" elements
+	 * @param ele - an instance of Dr3dSceneElement
+	 */
+	public void visit(Dr3dSceneElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "dr3d:sphere" elements
+	 * @param ele - an instance of Dr3dSphereElement
+	 */
+	public void visit(Dr3dSphereElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:a" elements
+	 * @param ele - an instance of DrawAElement
+	 */
+	public void visit(DrawAElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:applet" elements
+	 * @param ele - an instance of DrawAppletElement
+	 */
+	public void visit(DrawAppletElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:area-circle" elements
+	 * @param ele - an instance of DrawAreaCircleElement
+	 */
+	public void visit(DrawAreaCircleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:area-polygon" elements
+	 * @param ele - an instance of DrawAreaPolygonElement
+	 */
+	public void visit(DrawAreaPolygonElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:area-rectangle" elements
+	 * @param ele - an instance of DrawAreaRectangleElement
+	 */
+	public void visit(DrawAreaRectangleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:caption" elements
+	 * @param ele - an instance of DrawCaptionElement
+	 */
+	public void visit(DrawCaptionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:circle" elements
+	 * @param ele - an instance of DrawCircleElement
+	 */
+	public void visit(DrawCircleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:connector" elements
+	 * @param ele - an instance of DrawConnectorElement
+	 */
+	public void visit(DrawConnectorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:contour-path" elements
+	 * @param ele - an instance of DrawContourPathElement
+	 */
+	public void visit(DrawContourPathElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:contour-polygon" elements
+	 * @param ele - an instance of DrawContourPolygonElement
+	 */
+	public void visit(DrawContourPolygonElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:control" elements
+	 * @param ele - an instance of DrawControlElement
+	 */
+	public void visit(DrawControlElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:custom-shape" elements
+	 * @param ele - an instance of DrawCustomShapeElement
+	 */
+	public void visit(DrawCustomShapeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:ellipse" elements
+	 * @param ele - an instance of DrawEllipseElement
+	 */
+	public void visit(DrawEllipseElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:enhanced-geometry" elements
+	 * @param ele - an instance of DrawEnhancedGeometryElement
+	 */
+	public void visit(DrawEnhancedGeometryElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:equation" elements
+	 * @param ele - an instance of DrawEquationElement
+	 */
+	public void visit(DrawEquationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:fill-image" elements
+	 * @param ele - an instance of DrawFillImageElement
+	 */
+	public void visit(DrawFillImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:floating-frame" elements
+	 * @param ele - an instance of DrawFloatingFrameElement
+	 */
+	public void visit(DrawFloatingFrameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:frame" elements
+	 * @param ele - an instance of DrawFrameElement
+	 */
+	public void visit(DrawFrameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:g" elements
+	 * @param ele - an instance of DrawGElement
+	 */
+	public void visit(DrawGElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:glue-point" elements
+	 * @param ele - an instance of DrawGluePointElement
+	 */
+	public void visit(DrawGluePointElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:gradient" elements
+	 * @param ele - an instance of DrawGradientElement
+	 */
+	public void visit(DrawGradientElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:handle" elements
+	 * @param ele - an instance of DrawHandleElement
+	 */
+	public void visit(DrawHandleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:hatch" elements
+	 * @param ele - an instance of DrawHatchElement
+	 */
+	public void visit(DrawHatchElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:image" elements
+	 * @param ele - an instance of DrawImageElement
+	 */
+	public void visit(DrawImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:image-map" elements
+	 * @param ele - an instance of DrawImageMapElement
+	 */
+	public void visit(DrawImageMapElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:layer" elements
+	 * @param ele - an instance of DrawLayerElement
+	 */
+	public void visit(DrawLayerElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:layer-set" elements
+	 * @param ele - an instance of DrawLayerSetElement
+	 */
+	public void visit(DrawLayerSetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:line" elements
+	 * @param ele - an instance of DrawLineElement
+	 */
+	public void visit(DrawLineElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:marker" elements
+	 * @param ele - an instance of DrawMarkerElement
+	 */
+	public void visit(DrawMarkerElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:measure" elements
+	 * @param ele - an instance of DrawMeasureElement
+	 */
+	public void visit(DrawMeasureElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:object" elements
+	 * @param ele - an instance of DrawObjectElement
+	 */
+	public void visit(DrawObjectElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:object-ole" elements
+	 * @param ele - an instance of DrawObjectOleElement
+	 */
+	public void visit(DrawObjectOleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:opacity" elements
+	 * @param ele - an instance of DrawOpacityElement
+	 */
+	public void visit(DrawOpacityElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:page" elements
+	 * @param ele - an instance of DrawPageElement
+	 */
+	public void visit(DrawPageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:page-thumbnail" elements
+	 * @param ele - an instance of DrawPageThumbnailElement
+	 */
+	public void visit(DrawPageThumbnailElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:param" elements
+	 * @param ele - an instance of DrawParamElement
+	 */
+	public void visit(DrawParamElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:path" elements
+	 * @param ele - an instance of DrawPathElement
+	 */
+	public void visit(DrawPathElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:plugin" elements
+	 * @param ele - an instance of DrawPluginElement
+	 */
+	public void visit(DrawPluginElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:polygon" elements
+	 * @param ele - an instance of DrawPolygonElement
+	 */
+	public void visit(DrawPolygonElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:polyline" elements
+	 * @param ele - an instance of DrawPolylineElement
+	 */
+	public void visit(DrawPolylineElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:rect" elements
+	 * @param ele - an instance of DrawRectElement
+	 */
+	public void visit(DrawRectElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:regular-polygon" elements
+	 * @param ele - an instance of DrawRegularPolygonElement
+	 */
+	public void visit(DrawRegularPolygonElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:stroke-dash" elements
+	 * @param ele - an instance of DrawStrokeDashElement
+	 */
+	public void visit(DrawStrokeDashElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "draw:text-box" elements
+	 * @param ele - an instance of DrawTextBoxElement
+	 */
+	public void visit(DrawTextBoxElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:button" elements
+	 * @param ele - an instance of FormButtonElement
+	 */
+	public void visit(FormButtonElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:checkbox" elements
+	 * @param ele - an instance of FormCheckboxElement
+	 */
+	public void visit(FormCheckboxElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:column" elements
+	 * @param ele - an instance of FormColumnElement
+	 */
+	public void visit(FormColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:combobox" elements
+	 * @param ele - an instance of FormComboboxElement
+	 */
+	public void visit(FormComboboxElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:connection-resource" elements
+	 * @param ele - an instance of FormConnectionResourceElement
+	 */
+	public void visit(FormConnectionResourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:date" elements
+	 * @param ele - an instance of FormDateElement
+	 */
+	public void visit(FormDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:file" elements
+	 * @param ele - an instance of FormFileElement
+	 */
+	public void visit(FormFileElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:fixed-text" elements
+	 * @param ele - an instance of FormFixedTextElement
+	 */
+	public void visit(FormFixedTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:form" elements
+	 * @param ele - an instance of FormFormElement
+	 */
+	public void visit(FormFormElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:formatted-text" elements
+	 * @param ele - an instance of FormFormattedTextElement
+	 */
+	public void visit(FormFormattedTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:frame" elements
+	 * @param ele - an instance of FormFrameElement
+	 */
+	public void visit(FormFrameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:generic-control" elements
+	 * @param ele - an instance of FormGenericControlElement
+	 */
+	public void visit(FormGenericControlElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:grid" elements
+	 * @param ele - an instance of FormGridElement
+	 */
+	public void visit(FormGridElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:hidden" elements
+	 * @param ele - an instance of FormHiddenElement
+	 */
+	public void visit(FormHiddenElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:image" elements
+	 * @param ele - an instance of FormImageElement
+	 */
+	public void visit(FormImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:image-frame" elements
+	 * @param ele - an instance of FormImageFrameElement
+	 */
+	public void visit(FormImageFrameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:item" elements
+	 * @param ele - an instance of FormItemElement
+	 */
+	public void visit(FormItemElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:list-property" elements
+	 * @param ele - an instance of FormListPropertyElement
+	 */
+	public void visit(FormListPropertyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:list-value" elements
+	 * @param ele - an instance of FormListValueElement
+	 */
+	public void visit(FormListValueElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:listbox" elements
+	 * @param ele - an instance of FormListboxElement
+	 */
+	public void visit(FormListboxElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:number" elements
+	 * @param ele - an instance of FormNumberElement
+	 */
+	public void visit(FormNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:option" elements
+	 * @param ele - an instance of FormOptionElement
+	 */
+	public void visit(FormOptionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:password" elements
+	 * @param ele - an instance of FormPasswordElement
+	 */
+	public void visit(FormPasswordElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:properties" elements
+	 * @param ele - an instance of FormPropertiesElement
+	 */
+	public void visit(FormPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:property" elements
+	 * @param ele - an instance of FormPropertyElement
+	 */
+	public void visit(FormPropertyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:radio" elements
+	 * @param ele - an instance of FormRadioElement
+	 */
+	public void visit(FormRadioElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:text" elements
+	 * @param ele - an instance of FormTextElement
+	 */
+	public void visit(FormTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:textarea" elements
+	 * @param ele - an instance of FormTextareaElement
+	 */
+	public void visit(FormTextareaElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:time" elements
+	 * @param ele - an instance of FormTimeElement
+	 */
+	public void visit(FormTimeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "form:value-range" elements
+	 * @param ele - an instance of FormValueRangeElement
+	 */
+	public void visit(FormValueRangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "math:math" elements
+	 * @param ele - an instance of MathMathElement
+	 */
+	public void visit(MathMathElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:auto-reload" elements
+	 * @param ele - an instance of MetaAutoReloadElement
+	 */
+	public void visit(MetaAutoReloadElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:creation-date" elements
+	 * @param ele - an instance of MetaCreationDateElement
+	 */
+	public void visit(MetaCreationDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:date-string" elements
+	 * @param ele - an instance of MetaDateStringElement
+	 */
+	public void visit(MetaDateStringElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:document-statistic" elements
+	 * @param ele - an instance of MetaDocumentStatisticElement
+	 */
+	public void visit(MetaDocumentStatisticElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:editing-cycles" elements
+	 * @param ele - an instance of MetaEditingCyclesElement
+	 */
+	public void visit(MetaEditingCyclesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:editing-duration" elements
+	 * @param ele - an instance of MetaEditingDurationElement
+	 */
+	public void visit(MetaEditingDurationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:generator" elements
+	 * @param ele - an instance of MetaGeneratorElement
+	 */
+	public void visit(MetaGeneratorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:hyperlink-behaviour" elements
+	 * @param ele - an instance of MetaHyperlinkBehaviourElement
+	 */
+	public void visit(MetaHyperlinkBehaviourElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:initial-creator" elements
+	 * @param ele - an instance of MetaInitialCreatorElement
+	 */
+	public void visit(MetaInitialCreatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:keyword" elements
+	 * @param ele - an instance of MetaKeywordElement
+	 */
+	public void visit(MetaKeywordElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:print-date" elements
+	 * @param ele - an instance of MetaPrintDateElement
+	 */
+	public void visit(MetaPrintDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:printed-by" elements
+	 * @param ele - an instance of MetaPrintedByElement
+	 */
+	public void visit(MetaPrintedByElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:template" elements
+	 * @param ele - an instance of MetaTemplateElement
+	 */
+	public void visit(MetaTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "meta:user-defined" elements
+	 * @param ele - an instance of MetaUserDefinedElement
+	 */
+	public void visit(MetaUserDefinedElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:am-pm" elements
+	 * @param ele - an instance of NumberAmPmElement
+	 */
+	public void visit(NumberAmPmElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:boolean" elements
+	 * @param ele - an instance of NumberBooleanElement
+	 */
+	public void visit(NumberBooleanElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:boolean-style" elements
+	 * @param ele - an instance of NumberBooleanStyleElement
+	 */
+	public void visit(NumberBooleanStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:currency-style" elements
+	 * @param ele - an instance of NumberCurrencyStyleElement
+	 */
+	public void visit(NumberCurrencyStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:currency-symbol" elements
+	 * @param ele - an instance of NumberCurrencySymbolElement
+	 */
+	public void visit(NumberCurrencySymbolElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:date-style" elements
+	 * @param ele - an instance of NumberDateStyleElement
+	 */
+	public void visit(NumberDateStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:day" elements
+	 * @param ele - an instance of NumberDayElement
+	 */
+	public void visit(NumberDayElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:day-of-week" elements
+	 * @param ele - an instance of NumberDayOfWeekElement
+	 */
+	public void visit(NumberDayOfWeekElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:embedded-text" elements
+	 * @param ele - an instance of NumberEmbeddedTextElement
+	 */
+	public void visit(NumberEmbeddedTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:era" elements
+	 * @param ele - an instance of NumberEraElement
+	 */
+	public void visit(NumberEraElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:fraction" elements
+	 * @param ele - an instance of NumberFractionElement
+	 */
+	public void visit(NumberFractionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:hours" elements
+	 * @param ele - an instance of NumberHoursElement
+	 */
+	public void visit(NumberHoursElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:minutes" elements
+	 * @param ele - an instance of NumberMinutesElement
+	 */
+	public void visit(NumberMinutesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:month" elements
+	 * @param ele - an instance of NumberMonthElement
+	 */
+	public void visit(NumberMonthElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:number" elements
+	 * @param ele - an instance of NumberNumberElement
+	 */
+	public void visit(NumberNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:number-style" elements
+	 * @param ele - an instance of NumberNumberStyleElement
+	 */
+	public void visit(NumberNumberStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:percentage-style" elements
+	 * @param ele - an instance of NumberPercentageStyleElement
+	 */
+	public void visit(NumberPercentageStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:quarter" elements
+	 * @param ele - an instance of NumberQuarterElement
+	 */
+	public void visit(NumberQuarterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:scientific-number" elements
+	 * @param ele - an instance of NumberScientificNumberElement
+	 */
+	public void visit(NumberScientificNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:seconds" elements
+	 * @param ele - an instance of NumberSecondsElement
+	 */
+	public void visit(NumberSecondsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:text" elements
+	 * @param ele - an instance of NumberTextElement
+	 */
+	public void visit(NumberTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:text-content" elements
+	 * @param ele - an instance of NumberTextContentElement
+	 */
+	public void visit(NumberTextContentElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:text-style" elements
+	 * @param ele - an instance of NumberTextStyleElement
+	 */
+	public void visit(NumberTextStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:time-style" elements
+	 * @param ele - an instance of NumberTimeStyleElement
+	 */
+	public void visit(NumberTimeStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:week-of-year" elements
+	 * @param ele - an instance of NumberWeekOfYearElement
+	 */
+	public void visit(NumberWeekOfYearElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "number:year" elements
+	 * @param ele - an instance of NumberYearElement
+	 */
+	public void visit(NumberYearElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:annotation" elements
+	 * @param ele - an instance of OfficeAnnotationElement
+	 */
+	public void visit(OfficeAnnotationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:annotation-end" elements
+	 * @param ele - an instance of OfficeAnnotationEndElement
+	 */
+	public void visit(OfficeAnnotationEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:automatic-styles" elements
+	 * @param ele - an instance of OfficeAutomaticStylesElement
+	 */
+	public void visit(OfficeAutomaticStylesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:binary-data" elements
+	 * @param ele - an instance of OfficeBinaryDataElement
+	 */
+	public void visit(OfficeBinaryDataElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:body" elements
+	 * @param ele - an instance of OfficeBodyElement
+	 */
+	public void visit(OfficeBodyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:change-info" elements
+	 * @param ele - an instance of OfficeChangeInfoElement
+	 */
+	public void visit(OfficeChangeInfoElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:chart" elements
+	 * @param ele - an instance of OfficeChartElement
+	 */
+	public void visit(OfficeChartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:database" elements
+	 * @param ele - an instance of OfficeDatabaseElement
+	 */
+	public void visit(OfficeDatabaseElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:dde-source" elements
+	 * @param ele - an instance of OfficeDdeSourceElement
+	 */
+	public void visit(OfficeDdeSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:document" elements
+	 * @param ele - an instance of OfficeDocumentElement
+	 */
+	public void visit(OfficeDocumentElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:document-content" elements
+	 * @param ele - an instance of OfficeDocumentContentElement
+	 */
+	public void visit(OfficeDocumentContentElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:document-meta" elements
+	 * @param ele - an instance of OfficeDocumentMetaElement
+	 */
+	public void visit(OfficeDocumentMetaElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:document-settings" elements
+	 * @param ele - an instance of OfficeDocumentSettingsElement
+	 */
+	public void visit(OfficeDocumentSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:document-styles" elements
+	 * @param ele - an instance of OfficeDocumentStylesElement
+	 */
+	public void visit(OfficeDocumentStylesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:drawing" elements
+	 * @param ele - an instance of OfficeDrawingElement
+	 */
+	public void visit(OfficeDrawingElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:event-listeners" elements
+	 * @param ele - an instance of OfficeEventListenersElement
+	 */
+	public void visit(OfficeEventListenersElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:font-face-decls" elements
+	 * @param ele - an instance of OfficeFontFaceDeclsElement
+	 */
+	public void visit(OfficeFontFaceDeclsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:forms" elements
+	 * @param ele - an instance of OfficeFormsElement
+	 */
+	public void visit(OfficeFormsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:image" elements
+	 * @param ele - an instance of OfficeImageElement
+	 */
+	public void visit(OfficeImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:master-styles" elements
+	 * @param ele - an instance of OfficeMasterStylesElement
+	 */
+	public void visit(OfficeMasterStylesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:meta" elements
+	 * @param ele - an instance of OfficeMetaElement
+	 */
+	public void visit(OfficeMetaElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:presentation" elements
+	 * @param ele - an instance of OfficePresentationElement
+	 */
+	public void visit(OfficePresentationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:script" elements
+	 * @param ele - an instance of OfficeScriptElement
+	 */
+	public void visit(OfficeScriptElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:scripts" elements
+	 * @param ele - an instance of OfficeScriptsElement
+	 */
+	public void visit(OfficeScriptsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:settings" elements
+	 * @param ele - an instance of OfficeSettingsElement
+	 */
+	public void visit(OfficeSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:spreadsheet" elements
+	 * @param ele - an instance of OfficeSpreadsheetElement
+	 */
+	public void visit(OfficeSpreadsheetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:styles" elements
+	 * @param ele - an instance of OfficeStylesElement
+	 */
+	public void visit(OfficeStylesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "office:text" elements
+	 * @param ele - an instance of OfficeTextElement
+	 */
+	public void visit(OfficeTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:animation-group" elements
+	 * @param ele - an instance of PresentationAnimationGroupElement
+	 */
+	public void visit(PresentationAnimationGroupElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:animations" elements
+	 * @param ele - an instance of PresentationAnimationsElement
+	 */
+	public void visit(PresentationAnimationsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:date-time" elements
+	 * @param ele - an instance of PresentationDateTimeElement
+	 */
+	public void visit(PresentationDateTimeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:date-time-decl" elements
+	 * @param ele - an instance of PresentationDateTimeDeclElement
+	 */
+	public void visit(PresentationDateTimeDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:dim" elements
+	 * @param ele - an instance of PresentationDimElement
+	 */
+	public void visit(PresentationDimElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:event-listener" elements
+	 * @param ele - an instance of PresentationEventListenerElement
+	 */
+	public void visit(PresentationEventListenerElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:footer" elements
+	 * @param ele - an instance of PresentationFooterElement
+	 */
+	public void visit(PresentationFooterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:footer-decl" elements
+	 * @param ele - an instance of PresentationFooterDeclElement
+	 */
+	public void visit(PresentationFooterDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:header" elements
+	 * @param ele - an instance of PresentationHeaderElement
+	 */
+	public void visit(PresentationHeaderElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:header-decl" elements
+	 * @param ele - an instance of PresentationHeaderDeclElement
+	 */
+	public void visit(PresentationHeaderDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:hide-shape" elements
+	 * @param ele - an instance of PresentationHideShapeElement
+	 */
+	public void visit(PresentationHideShapeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:hide-text" elements
+	 * @param ele - an instance of PresentationHideTextElement
+	 */
+	public void visit(PresentationHideTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:notes" elements
+	 * @param ele - an instance of PresentationNotesElement
+	 */
+	public void visit(PresentationNotesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:placeholder" elements
+	 * @param ele - an instance of PresentationPlaceholderElement
+	 */
+	public void visit(PresentationPlaceholderElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:play" elements
+	 * @param ele - an instance of PresentationPlayElement
+	 */
+	public void visit(PresentationPlayElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:settings" elements
+	 * @param ele - an instance of PresentationSettingsElement
+	 */
+	public void visit(PresentationSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:show" elements
+	 * @param ele - an instance of PresentationShowElement
+	 */
+	public void visit(PresentationShowElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:show-shape" elements
+	 * @param ele - an instance of PresentationShowShapeElement
+	 */
+	public void visit(PresentationShowShapeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:show-text" elements
+	 * @param ele - an instance of PresentationShowTextElement
+	 */
+	public void visit(PresentationShowTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "presentation:sound" elements
+	 * @param ele - an instance of PresentationSoundElement
+	 */
+	public void visit(PresentationSoundElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "script:event-listener" elements
+	 * @param ele - an instance of ScriptEventListenerElement
+	 */
+	public void visit(ScriptEventListenerElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:background-image" elements
+	 * @param ele - an instance of StyleBackgroundImageElement
+	 */
+	public void visit(StyleBackgroundImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:chart-properties" elements
+	 * @param ele - an instance of StyleChartPropertiesElement
+	 */
+	public void visit(StyleChartPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:column" elements
+	 * @param ele - an instance of StyleColumnElement
+	 */
+	public void visit(StyleColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:column-sep" elements
+	 * @param ele - an instance of StyleColumnSepElement
+	 */
+	public void visit(StyleColumnSepElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:columns" elements
+	 * @param ele - an instance of StyleColumnsElement
+	 */
+	public void visit(StyleColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:default-page-layout" elements
+	 * @param ele - an instance of StyleDefaultPageLayoutElement
+	 */
+	public void visit(StyleDefaultPageLayoutElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:default-style" elements
+	 * @param ele - an instance of StyleDefaultStyleElement
+	 */
+	public void visit(StyleDefaultStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:drawing-page-properties" elements
+	 * @param ele - an instance of StyleDrawingPagePropertiesElement
+	 */
+	public void visit(StyleDrawingPagePropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:drop-cap" elements
+	 * @param ele - an instance of StyleDropCapElement
+	 */
+	public void visit(StyleDropCapElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:font-face" elements
+	 * @param ele - an instance of StyleFontFaceElement
+	 */
+	public void visit(StyleFontFaceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:footer" elements
+	 * @param ele - an instance of StyleFooterElement
+	 */
+	public void visit(StyleFooterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:footer-left" elements
+	 * @param ele - an instance of StyleFooterLeftElement
+	 */
+	public void visit(StyleFooterLeftElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:footer-style" elements
+	 * @param ele - an instance of StyleFooterStyleElement
+	 */
+	public void visit(StyleFooterStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:footnote-sep" elements
+	 * @param ele - an instance of StyleFootnoteSepElement
+	 */
+	public void visit(StyleFootnoteSepElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:graphic-properties" elements
+	 * @param ele - an instance of StyleGraphicPropertiesElement
+	 */
+	public void visit(StyleGraphicPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:handout-master" elements
+	 * @param ele - an instance of StyleHandoutMasterElement
+	 */
+	public void visit(StyleHandoutMasterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:header" elements
+	 * @param ele - an instance of StyleHeaderElement
+	 */
+	public void visit(StyleHeaderElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:header-footer-properties" elements
+	 * @param ele - an instance of StyleHeaderFooterPropertiesElement
+	 */
+	public void visit(StyleHeaderFooterPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:header-left" elements
+	 * @param ele - an instance of StyleHeaderLeftElement
+	 */
+	public void visit(StyleHeaderLeftElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:header-style" elements
+	 * @param ele - an instance of StyleHeaderStyleElement
+	 */
+	public void visit(StyleHeaderStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:list-level-label-alignment" elements
+	 * @param ele - an instance of StyleListLevelLabelAlignmentElement
+	 */
+	public void visit(StyleListLevelLabelAlignmentElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:list-level-properties" elements
+	 * @param ele - an instance of StyleListLevelPropertiesElement
+	 */
+	public void visit(StyleListLevelPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:map" elements
+	 * @param ele - an instance of StyleMapElement
+	 */
+	public void visit(StyleMapElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:master-page" elements
+	 * @param ele - an instance of StyleMasterPageElement
+	 */
+	public void visit(StyleMasterPageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:page-layout" elements
+	 * @param ele - an instance of StylePageLayoutElement
+	 */
+	public void visit(StylePageLayoutElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:page-layout-properties" elements
+	 * @param ele - an instance of StylePageLayoutPropertiesElement
+	 */
+	public void visit(StylePageLayoutPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:paragraph-properties" elements
+	 * @param ele - an instance of StyleParagraphPropertiesElement
+	 */
+	public void visit(StyleParagraphPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:presentation-page-layout" elements
+	 * @param ele - an instance of StylePresentationPageLayoutElement
+	 */
+	public void visit(StylePresentationPageLayoutElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:region-center" elements
+	 * @param ele - an instance of StyleRegionCenterElement
+	 */
+	public void visit(StyleRegionCenterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:region-left" elements
+	 * @param ele - an instance of StyleRegionLeftElement
+	 */
+	public void visit(StyleRegionLeftElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:region-right" elements
+	 * @param ele - an instance of StyleRegionRightElement
+	 */
+	public void visit(StyleRegionRightElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:ruby-properties" elements
+	 * @param ele - an instance of StyleRubyPropertiesElement
+	 */
+	public void visit(StyleRubyPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:section-properties" elements
+	 * @param ele - an instance of StyleSectionPropertiesElement
+	 */
+	public void visit(StyleSectionPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:style" elements
+	 * @param ele - an instance of StyleStyleElement
+	 */
+	public void visit(StyleStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:tab-stop" elements
+	 * @param ele - an instance of StyleTabStopElement
+	 */
+	public void visit(StyleTabStopElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:tab-stops" elements
+	 * @param ele - an instance of StyleTabStopsElement
+	 */
+	public void visit(StyleTabStopsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:table-cell-properties" elements
+	 * @param ele - an instance of StyleTableCellPropertiesElement
+	 */
+	public void visit(StyleTableCellPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:table-column-properties" elements
+	 * @param ele - an instance of StyleTableColumnPropertiesElement
+	 */
+	public void visit(StyleTableColumnPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:table-properties" elements
+	 * @param ele - an instance of StyleTablePropertiesElement
+	 */
+	public void visit(StyleTablePropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:table-row-properties" elements
+	 * @param ele - an instance of StyleTableRowPropertiesElement
+	 */
+	public void visit(StyleTableRowPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "style:text-properties" elements
+	 * @param ele - an instance of StyleTextPropertiesElement
+	 */
+	public void visit(StyleTextPropertiesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:definition-src" elements
+	 * @param ele - an instance of SvgDefinitionSrcElement
+	 */
+	public void visit(SvgDefinitionSrcElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:desc" elements
+	 * @param ele - an instance of SvgDescElement
+	 */
+	public void visit(SvgDescElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:font-face-format" elements
+	 * @param ele - an instance of SvgFontFaceFormatElement
+	 */
+	public void visit(SvgFontFaceFormatElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:font-face-name" elements
+	 * @param ele - an instance of SvgFontFaceNameElement
+	 */
+	public void visit(SvgFontFaceNameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:font-face-src" elements
+	 * @param ele - an instance of SvgFontFaceSrcElement
+	 */
+	public void visit(SvgFontFaceSrcElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:font-face-uri" elements
+	 * @param ele - an instance of SvgFontFaceUriElement
+	 */
+	public void visit(SvgFontFaceUriElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:linearGradient" elements
+	 * @param ele - an instance of SvgLinearGradientElement
+	 */
+	public void visit(SvgLinearGradientElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:radialGradient" elements
+	 * @param ele - an instance of SvgRadialGradientElement
+	 */
+	public void visit(SvgRadialGradientElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:stop" elements
+	 * @param ele - an instance of SvgStopElement
+	 */
+	public void visit(SvgStopElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "svg:title" elements
+	 * @param ele - an instance of SvgTitleElement
+	 */
+	public void visit(SvgTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:background" elements
+	 * @param ele - an instance of TableBackgroundElement
+	 */
+	public void visit(TableBackgroundElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:body" elements
+	 * @param ele - an instance of TableBodyElement
+	 */
+	public void visit(TableBodyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:calculation-settings" elements
+	 * @param ele - an instance of TableCalculationSettingsElement
+	 */
+	public void visit(TableCalculationSettingsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:cell-address" elements
+	 * @param ele - an instance of TableCellAddressElement
+	 */
+	public void visit(TableCellAddressElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:cell-content-change" elements
+	 * @param ele - an instance of TableCellContentChangeElement
+	 */
+	public void visit(TableCellContentChangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:cell-content-deletion" elements
+	 * @param ele - an instance of TableCellContentDeletionElement
+	 */
+	public void visit(TableCellContentDeletionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:cell-range-source" elements
+	 * @param ele - an instance of TableCellRangeSourceElement
+	 */
+	public void visit(TableCellRangeSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:change-deletion" elements
+	 * @param ele - an instance of TableChangeDeletionElement
+	 */
+	public void visit(TableChangeDeletionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:change-track-table-cell" elements
+	 * @param ele - an instance of TableChangeTrackTableCellElement
+	 */
+	public void visit(TableChangeTrackTableCellElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:consolidation" elements
+	 * @param ele - an instance of TableConsolidationElement
+	 */
+	public void visit(TableConsolidationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:content-validation" elements
+	 * @param ele - an instance of TableContentValidationElement
+	 */
+	public void visit(TableContentValidationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:content-validations" elements
+	 * @param ele - an instance of TableContentValidationsElement
+	 */
+	public void visit(TableContentValidationsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:covered-table-cell" elements
+	 * @param ele - an instance of TableCoveredTableCellElement
+	 */
+	public void visit(TableCoveredTableCellElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:cut-offs" elements
+	 * @param ele - an instance of TableCutOffsElement
+	 */
+	public void visit(TableCutOffsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-display-info" elements
+	 * @param ele - an instance of TableDataPilotDisplayInfoElement
+	 */
+	public void visit(TableDataPilotDisplayInfoElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-field" elements
+	 * @param ele - an instance of TableDataPilotFieldElement
+	 */
+	public void visit(TableDataPilotFieldElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-field-reference" elements
+	 * @param ele - an instance of TableDataPilotFieldReferenceElement
+	 */
+	public void visit(TableDataPilotFieldReferenceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-group" elements
+	 * @param ele - an instance of TableDataPilotGroupElement
+	 */
+	public void visit(TableDataPilotGroupElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-group-member" elements
+	 * @param ele - an instance of TableDataPilotGroupMemberElement
+	 */
+	public void visit(TableDataPilotGroupMemberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-groups" elements
+	 * @param ele - an instance of TableDataPilotGroupsElement
+	 */
+	public void visit(TableDataPilotGroupsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-layout-info" elements
+	 * @param ele - an instance of TableDataPilotLayoutInfoElement
+	 */
+	public void visit(TableDataPilotLayoutInfoElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-level" elements
+	 * @param ele - an instance of TableDataPilotLevelElement
+	 */
+	public void visit(TableDataPilotLevelElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-member" elements
+	 * @param ele - an instance of TableDataPilotMemberElement
+	 */
+	public void visit(TableDataPilotMemberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-members" elements
+	 * @param ele - an instance of TableDataPilotMembersElement
+	 */
+	public void visit(TableDataPilotMembersElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-sort-info" elements
+	 * @param ele - an instance of TableDataPilotSortInfoElement
+	 */
+	public void visit(TableDataPilotSortInfoElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-subtotal" elements
+	 * @param ele - an instance of TableDataPilotSubtotalElement
+	 */
+	public void visit(TableDataPilotSubtotalElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-subtotals" elements
+	 * @param ele - an instance of TableDataPilotSubtotalsElement
+	 */
+	public void visit(TableDataPilotSubtotalsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-table" elements
+	 * @param ele - an instance of TableDataPilotTableElement
+	 */
+	public void visit(TableDataPilotTableElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:data-pilot-tables" elements
+	 * @param ele - an instance of TableDataPilotTablesElement
+	 */
+	public void visit(TableDataPilotTablesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:database-range" elements
+	 * @param ele - an instance of TableDatabaseRangeElement
+	 */
+	public void visit(TableDatabaseRangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:database-ranges" elements
+	 * @param ele - an instance of TableDatabaseRangesElement
+	 */
+	public void visit(TableDatabaseRangesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:database-source-query" elements
+	 * @param ele - an instance of TableDatabaseSourceQueryElement
+	 */
+	public void visit(TableDatabaseSourceQueryElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:database-source-sql" elements
+	 * @param ele - an instance of TableDatabaseSourceSqlElement
+	 */
+	public void visit(TableDatabaseSourceSqlElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:database-source-table" elements
+	 * @param ele - an instance of TableDatabaseSourceTableElement
+	 */
+	public void visit(TableDatabaseSourceTableElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:dde-link" elements
+	 * @param ele - an instance of TableDdeLinkElement
+	 */
+	public void visit(TableDdeLinkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:dde-links" elements
+	 * @param ele - an instance of TableDdeLinksElement
+	 */
+	public void visit(TableDdeLinksElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:deletion" elements
+	 * @param ele - an instance of TableDeletionElement
+	 */
+	public void visit(TableDeletionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:deletions" elements
+	 * @param ele - an instance of TableDeletionsElement
+	 */
+	public void visit(TableDeletionsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:dependencies" elements
+	 * @param ele - an instance of TableDependenciesElement
+	 */
+	public void visit(TableDependenciesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:dependency" elements
+	 * @param ele - an instance of TableDependencyElement
+	 */
+	public void visit(TableDependencyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:desc" elements
+	 * @param ele - an instance of TableDescElement
+	 */
+	public void visit(TableDescElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:detective" elements
+	 * @param ele - an instance of TableDetectiveElement
+	 */
+	public void visit(TableDetectiveElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:error-macro" elements
+	 * @param ele - an instance of TableErrorMacroElement
+	 */
+	public void visit(TableErrorMacroElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:error-message" elements
+	 * @param ele - an instance of TableErrorMessageElement
+	 */
+	public void visit(TableErrorMessageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:even-columns" elements
+	 * @param ele - an instance of TableEvenColumnsElement
+	 */
+	public void visit(TableEvenColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:even-rows" elements
+	 * @param ele - an instance of TableEvenRowsElement
+	 */
+	public void visit(TableEvenRowsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:filter" elements
+	 * @param ele - an instance of TableFilterElement
+	 */
+	public void visit(TableFilterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:filter-and" elements
+	 * @param ele - an instance of TableFilterAndElement
+	 */
+	public void visit(TableFilterAndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:filter-condition" elements
+	 * @param ele - an instance of TableFilterConditionElement
+	 */
+	public void visit(TableFilterConditionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:filter-or" elements
+	 * @param ele - an instance of TableFilterOrElement
+	 */
+	public void visit(TableFilterOrElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:filter-set-item" elements
+	 * @param ele - an instance of TableFilterSetItemElement
+	 */
+	public void visit(TableFilterSetItemElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:first-column" elements
+	 * @param ele - an instance of TableFirstColumnElement
+	 */
+	public void visit(TableFirstColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:first-row" elements
+	 * @param ele - an instance of TableFirstRowElement
+	 */
+	public void visit(TableFirstRowElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:help-message" elements
+	 * @param ele - an instance of TableHelpMessageElement
+	 */
+	public void visit(TableHelpMessageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:highlighted-range" elements
+	 * @param ele - an instance of TableHighlightedRangeElement
+	 */
+	public void visit(TableHighlightedRangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:insertion" elements
+	 * @param ele - an instance of TableInsertionElement
+	 */
+	public void visit(TableInsertionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:insertion-cut-off" elements
+	 * @param ele - an instance of TableInsertionCutOffElement
+	 */
+	public void visit(TableInsertionCutOffElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:iteration" elements
+	 * @param ele - an instance of TableIterationElement
+	 */
+	public void visit(TableIterationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:label-range" elements
+	 * @param ele - an instance of TableLabelRangeElement
+	 */
+	public void visit(TableLabelRangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:label-ranges" elements
+	 * @param ele - an instance of TableLabelRangesElement
+	 */
+	public void visit(TableLabelRangesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:last-column" elements
+	 * @param ele - an instance of TableLastColumnElement
+	 */
+	public void visit(TableLastColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:last-row" elements
+	 * @param ele - an instance of TableLastRowElement
+	 */
+	public void visit(TableLastRowElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:movement" elements
+	 * @param ele - an instance of TableMovementElement
+	 */
+	public void visit(TableMovementElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:movement-cut-off" elements
+	 * @param ele - an instance of TableMovementCutOffElement
+	 */
+	public void visit(TableMovementCutOffElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:named-expression" elements
+	 * @param ele - an instance of TableNamedExpressionElement
+	 */
+	public void visit(TableNamedExpressionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:named-expressions" elements
+	 * @param ele - an instance of TableNamedExpressionsElement
+	 */
+	public void visit(TableNamedExpressionsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:named-range" elements
+	 * @param ele - an instance of TableNamedRangeElement
+	 */
+	public void visit(TableNamedRangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:null-date" elements
+	 * @param ele - an instance of TableNullDateElement
+	 */
+	public void visit(TableNullDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:odd-columns" elements
+	 * @param ele - an instance of TableOddColumnsElement
+	 */
+	public void visit(TableOddColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:odd-rows" elements
+	 * @param ele - an instance of TableOddRowsElement
+	 */
+	public void visit(TableOddRowsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:operation" elements
+	 * @param ele - an instance of TableOperationElement
+	 */
+	public void visit(TableOperationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:previous" elements
+	 * @param ele - an instance of TablePreviousElement
+	 */
+	public void visit(TablePreviousElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:scenario" elements
+	 * @param ele - an instance of TableScenarioElement
+	 */
+	public void visit(TableScenarioElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:shapes" elements
+	 * @param ele - an instance of TableShapesElement
+	 */
+	public void visit(TableShapesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:sort" elements
+	 * @param ele - an instance of TableSortElement
+	 */
+	public void visit(TableSortElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:sort-by" elements
+	 * @param ele - an instance of TableSortByElement
+	 */
+	public void visit(TableSortByElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:sort-groups" elements
+	 * @param ele - an instance of TableSortGroupsElement
+	 */
+	public void visit(TableSortGroupsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:source-cell-range" elements
+	 * @param ele - an instance of TableSourceCellRangeElement
+	 */
+	public void visit(TableSourceCellRangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:source-range-address" elements
+	 * @param ele - an instance of TableSourceRangeAddressElement
+	 */
+	public void visit(TableSourceRangeAddressElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:source-service" elements
+	 * @param ele - an instance of TableSourceServiceElement
+	 */
+	public void visit(TableSourceServiceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:subtotal-field" elements
+	 * @param ele - an instance of TableSubtotalFieldElement
+	 */
+	public void visit(TableSubtotalFieldElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:subtotal-rule" elements
+	 * @param ele - an instance of TableSubtotalRuleElement
+	 */
+	public void visit(TableSubtotalRuleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:subtotal-rules" elements
+	 * @param ele - an instance of TableSubtotalRulesElement
+	 */
+	public void visit(TableSubtotalRulesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table" elements
+	 * @param ele - an instance of TableTableElement
+	 */
+	public void visit(TableTableElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-cell" elements
+	 * @param ele - an instance of TableTableCellElement
+	 */
+	public void visit(TableTableCellElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-column" elements
+	 * @param ele - an instance of TableTableColumnElement
+	 */
+	public void visit(TableTableColumnElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-column-group" elements
+	 * @param ele - an instance of TableTableColumnGroupElement
+	 */
+	public void visit(TableTableColumnGroupElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-columns" elements
+	 * @param ele - an instance of TableTableColumnsElement
+	 */
+	public void visit(TableTableColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-header-columns" elements
+	 * @param ele - an instance of TableTableHeaderColumnsElement
+	 */
+	public void visit(TableTableHeaderColumnsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-header-rows" elements
+	 * @param ele - an instance of TableTableHeaderRowsElement
+	 */
+	public void visit(TableTableHeaderRowsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-row" elements
+	 * @param ele - an instance of TableTableRowElement
+	 */
+	public void visit(TableTableRowElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-row-group" elements
+	 * @param ele - an instance of TableTableRowGroupElement
+	 */
+	public void visit(TableTableRowGroupElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-rows" elements
+	 * @param ele - an instance of TableTableRowsElement
+	 */
+	public void visit(TableTableRowsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-source" elements
+	 * @param ele - an instance of TableTableSourceElement
+	 */
+	public void visit(TableTableSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:table-template" elements
+	 * @param ele - an instance of TableTableTemplateElement
+	 */
+	public void visit(TableTableTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:target-range-address" elements
+	 * @param ele - an instance of TableTargetRangeAddressElement
+	 */
+	public void visit(TableTargetRangeAddressElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:title" elements
+	 * @param ele - an instance of TableTitleElement
+	 */
+	public void visit(TableTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "table:tracked-changes" elements
+	 * @param ele - an instance of TableTrackedChangesElement
+	 */
+	public void visit(TableTrackedChangesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:a" elements
+	 * @param ele - an instance of TextAElement
+	 */
+	public void visit(TextAElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index" elements
+	 * @param ele - an instance of TextAlphabeticalIndexElement
+	 */
+	public void visit(TextAlphabeticalIndexElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index-auto-mark-file" elements
+	 * @param ele - an instance of TextAlphabeticalIndexAutoMarkFileElement
+	 */
+	public void visit(TextAlphabeticalIndexAutoMarkFileElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index-entry-template" elements
+	 * @param ele - an instance of TextAlphabeticalIndexEntryTemplateElement
+	 */
+	public void visit(TextAlphabeticalIndexEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index-mark" elements
+	 * @param ele - an instance of TextAlphabeticalIndexMarkElement
+	 */
+	public void visit(TextAlphabeticalIndexMarkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index-mark-end" elements
+	 * @param ele - an instance of TextAlphabeticalIndexMarkEndElement
+	 */
+	public void visit(TextAlphabeticalIndexMarkEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index-mark-start" elements
+	 * @param ele - an instance of TextAlphabeticalIndexMarkStartElement
+	 */
+	public void visit(TextAlphabeticalIndexMarkStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:alphabetical-index-source" elements
+	 * @param ele - an instance of TextAlphabeticalIndexSourceElement
+	 */
+	public void visit(TextAlphabeticalIndexSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:author-initials" elements
+	 * @param ele - an instance of TextAuthorInitialsElement
+	 */
+	public void visit(TextAuthorInitialsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:author-name" elements
+	 * @param ele - an instance of TextAuthorNameElement
+	 */
+	public void visit(TextAuthorNameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bibliography" elements
+	 * @param ele - an instance of TextBibliographyElement
+	 */
+	public void visit(TextBibliographyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bibliography-configuration" elements
+	 * @param ele - an instance of TextBibliographyConfigurationElement
+	 */
+	public void visit(TextBibliographyConfigurationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bibliography-entry-template" elements
+	 * @param ele - an instance of TextBibliographyEntryTemplateElement
+	 */
+	public void visit(TextBibliographyEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bibliography-mark" elements
+	 * @param ele - an instance of TextBibliographyMarkElement
+	 */
+	public void visit(TextBibliographyMarkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bibliography-source" elements
+	 * @param ele - an instance of TextBibliographySourceElement
+	 */
+	public void visit(TextBibliographySourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bookmark" elements
+	 * @param ele - an instance of TextBookmarkElement
+	 */
+	public void visit(TextBookmarkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bookmark-end" elements
+	 * @param ele - an instance of TextBookmarkEndElement
+	 */
+	public void visit(TextBookmarkEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bookmark-ref" elements
+	 * @param ele - an instance of TextBookmarkRefElement
+	 */
+	public void visit(TextBookmarkRefElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:bookmark-start" elements
+	 * @param ele - an instance of TextBookmarkStartElement
+	 */
+	public void visit(TextBookmarkStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:change" elements
+	 * @param ele - an instance of TextChangeElement
+	 */
+	public void visit(TextChangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:change-end" elements
+	 * @param ele - an instance of TextChangeEndElement
+	 */
+	public void visit(TextChangeEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:change-start" elements
+	 * @param ele - an instance of TextChangeStartElement
+	 */
+	public void visit(TextChangeStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:changed-region" elements
+	 * @param ele - an instance of TextChangedRegionElement
+	 */
+	public void visit(TextChangedRegionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:chapter" elements
+	 * @param ele - an instance of TextChapterElement
+	 */
+	public void visit(TextChapterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:character-count" elements
+	 * @param ele - an instance of TextCharacterCountElement
+	 */
+	public void visit(TextCharacterCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:conditional-text" elements
+	 * @param ele - an instance of TextConditionalTextElement
+	 */
+	public void visit(TextConditionalTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:creation-date" elements
+	 * @param ele - an instance of TextCreationDateElement
+	 */
+	public void visit(TextCreationDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:creation-time" elements
+	 * @param ele - an instance of TextCreationTimeElement
+	 */
+	public void visit(TextCreationTimeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:creator" elements
+	 * @param ele - an instance of TextCreatorElement
+	 */
+	public void visit(TextCreatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:database-display" elements
+	 * @param ele - an instance of TextDatabaseDisplayElement
+	 */
+	public void visit(TextDatabaseDisplayElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:database-name" elements
+	 * @param ele - an instance of TextDatabaseNameElement
+	 */
+	public void visit(TextDatabaseNameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:database-next" elements
+	 * @param ele - an instance of TextDatabaseNextElement
+	 */
+	public void visit(TextDatabaseNextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:database-row-number" elements
+	 * @param ele - an instance of TextDatabaseRowNumberElement
+	 */
+	public void visit(TextDatabaseRowNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:database-row-select" elements
+	 * @param ele - an instance of TextDatabaseRowSelectElement
+	 */
+	public void visit(TextDatabaseRowSelectElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:date" elements
+	 * @param ele - an instance of TextDateElement
+	 */
+	public void visit(TextDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:dde-connection" elements
+	 * @param ele - an instance of TextDdeConnectionElement
+	 */
+	public void visit(TextDdeConnectionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:dde-connection-decl" elements
+	 * @param ele - an instance of TextDdeConnectionDeclElement
+	 */
+	public void visit(TextDdeConnectionDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:dde-connection-decls" elements
+	 * @param ele - an instance of TextDdeConnectionDeclsElement
+	 */
+	public void visit(TextDdeConnectionDeclsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:deletion" elements
+	 * @param ele - an instance of TextDeletionElement
+	 */
+	public void visit(TextDeletionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:description" elements
+	 * @param ele - an instance of TextDescriptionElement
+	 */
+	public void visit(TextDescriptionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:editing-cycles" elements
+	 * @param ele - an instance of TextEditingCyclesElement
+	 */
+	public void visit(TextEditingCyclesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:editing-duration" elements
+	 * @param ele - an instance of TextEditingDurationElement
+	 */
+	public void visit(TextEditingDurationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:execute-macro" elements
+	 * @param ele - an instance of TextExecuteMacroElement
+	 */
+	public void visit(TextExecuteMacroElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:expression" elements
+	 * @param ele - an instance of TextExpressionElement
+	 */
+	public void visit(TextExpressionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:file-name" elements
+	 * @param ele - an instance of TextFileNameElement
+	 */
+	public void visit(TextFileNameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:format-change" elements
+	 * @param ele - an instance of TextFormatChangeElement
+	 */
+	public void visit(TextFormatChangeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:h" elements
+	 * @param ele - an instance of TextHElement
+	 */
+	public void visit(TextHElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:hidden-paragraph" elements
+	 * @param ele - an instance of TextHiddenParagraphElement
+	 */
+	public void visit(TextHiddenParagraphElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:hidden-text" elements
+	 * @param ele - an instance of TextHiddenTextElement
+	 */
+	public void visit(TextHiddenTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:illustration-index" elements
+	 * @param ele - an instance of TextIllustrationIndexElement
+	 */
+	public void visit(TextIllustrationIndexElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:illustration-index-entry-template" elements
+	 * @param ele - an instance of TextIllustrationIndexEntryTemplateElement
+	 */
+	public void visit(TextIllustrationIndexEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:illustration-index-source" elements
+	 * @param ele - an instance of TextIllustrationIndexSourceElement
+	 */
+	public void visit(TextIllustrationIndexSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:image-count" elements
+	 * @param ele - an instance of TextImageCountElement
+	 */
+	public void visit(TextImageCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-body" elements
+	 * @param ele - an instance of TextIndexBodyElement
+	 */
+	public void visit(TextIndexBodyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-bibliography" elements
+	 * @param ele - an instance of TextIndexEntryBibliographyElement
+	 */
+	public void visit(TextIndexEntryBibliographyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-chapter" elements
+	 * @param ele - an instance of TextIndexEntryChapterElement
+	 */
+	public void visit(TextIndexEntryChapterElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-link-end" elements
+	 * @param ele - an instance of TextIndexEntryLinkEndElement
+	 */
+	public void visit(TextIndexEntryLinkEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-link-start" elements
+	 * @param ele - an instance of TextIndexEntryLinkStartElement
+	 */
+	public void visit(TextIndexEntryLinkStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-page-number" elements
+	 * @param ele - an instance of TextIndexEntryPageNumberElement
+	 */
+	public void visit(TextIndexEntryPageNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-span" elements
+	 * @param ele - an instance of TextIndexEntrySpanElement
+	 */
+	public void visit(TextIndexEntrySpanElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-tab-stop" elements
+	 * @param ele - an instance of TextIndexEntryTabStopElement
+	 */
+	public void visit(TextIndexEntryTabStopElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-entry-text" elements
+	 * @param ele - an instance of TextIndexEntryTextElement
+	 */
+	public void visit(TextIndexEntryTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-source-style" elements
+	 * @param ele - an instance of TextIndexSourceStyleElement
+	 */
+	public void visit(TextIndexSourceStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-source-styles" elements
+	 * @param ele - an instance of TextIndexSourceStylesElement
+	 */
+	public void visit(TextIndexSourceStylesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-title" elements
+	 * @param ele - an instance of TextIndexTitleElement
+	 */
+	public void visit(TextIndexTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:index-title-template" elements
+	 * @param ele - an instance of TextIndexTitleTemplateElement
+	 */
+	public void visit(TextIndexTitleTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:initial-creator" elements
+	 * @param ele - an instance of TextInitialCreatorElement
+	 */
+	public void visit(TextInitialCreatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:insertion" elements
+	 * @param ele - an instance of TextInsertionElement
+	 */
+	public void visit(TextInsertionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:keywords" elements
+	 * @param ele - an instance of TextKeywordsElement
+	 */
+	public void visit(TextKeywordsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:line-break" elements
+	 * @param ele - an instance of TextLineBreakElement
+	 */
+	public void visit(TextLineBreakElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:linenumbering-configuration" elements
+	 * @param ele - an instance of TextLinenumberingConfigurationElement
+	 */
+	public void visit(TextLinenumberingConfigurationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:linenumbering-separator" elements
+	 * @param ele - an instance of TextLinenumberingSeparatorElement
+	 */
+	public void visit(TextLinenumberingSeparatorElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list" elements
+	 * @param ele - an instance of TextListElement
+	 */
+	public void visit(TextListElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list-header" elements
+	 * @param ele - an instance of TextListHeaderElement
+	 */
+	public void visit(TextListHeaderElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list-item" elements
+	 * @param ele - an instance of TextListItemElement
+	 */
+	public void visit(TextListItemElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list-level-style-bullet" elements
+	 * @param ele - an instance of TextListLevelStyleBulletElement
+	 */
+	public void visit(TextListLevelStyleBulletElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list-level-style-image" elements
+	 * @param ele - an instance of TextListLevelStyleImageElement
+	 */
+	public void visit(TextListLevelStyleImageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list-level-style-number" elements
+	 * @param ele - an instance of TextListLevelStyleNumberElement
+	 */
+	public void visit(TextListLevelStyleNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:list-style" elements
+	 * @param ele - an instance of TextListStyleElement
+	 */
+	public void visit(TextListStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:measure" elements
+	 * @param ele - an instance of TextMeasureElement
+	 */
+	public void visit(TextMeasureElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:meta" elements
+	 * @param ele - an instance of TextMetaElement
+	 */
+	public void visit(TextMetaElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:meta-field" elements
+	 * @param ele - an instance of TextMetaFieldElement
+	 */
+	public void visit(TextMetaFieldElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:modification-date" elements
+	 * @param ele - an instance of TextModificationDateElement
+	 */
+	public void visit(TextModificationDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:modification-time" elements
+	 * @param ele - an instance of TextModificationTimeElement
+	 */
+	public void visit(TextModificationTimeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:note" elements
+	 * @param ele - an instance of TextNoteElement
+	 */
+	public void visit(TextNoteElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:note-body" elements
+	 * @param ele - an instance of TextNoteBodyElement
+	 */
+	public void visit(TextNoteBodyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:note-citation" elements
+	 * @param ele - an instance of TextNoteCitationElement
+	 */
+	public void visit(TextNoteCitationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:note-continuation-notice-backward" elements
+	 * @param ele - an instance of TextNoteContinuationNoticeBackwardElement
+	 */
+	public void visit(TextNoteContinuationNoticeBackwardElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:note-continuation-notice-forward" elements
+	 * @param ele - an instance of TextNoteContinuationNoticeForwardElement
+	 */
+	public void visit(TextNoteContinuationNoticeForwardElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:note-ref" elements
+	 * @param ele - an instance of TextNoteRefElement
+	 */
+	public void visit(TextNoteRefElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:notes-configuration" elements
+	 * @param ele - an instance of TextNotesConfigurationElement
+	 */
+	public void visit(TextNotesConfigurationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:number" elements
+	 * @param ele - an instance of TextNumberElement
+	 */
+	public void visit(TextNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:numbered-paragraph" elements
+	 * @param ele - an instance of TextNumberedParagraphElement
+	 */
+	public void visit(TextNumberedParagraphElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:object-count" elements
+	 * @param ele - an instance of TextObjectCountElement
+	 */
+	public void visit(TextObjectCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:object-index" elements
+	 * @param ele - an instance of TextObjectIndexElement
+	 */
+	public void visit(TextObjectIndexElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:object-index-entry-template" elements
+	 * @param ele - an instance of TextObjectIndexEntryTemplateElement
+	 */
+	public void visit(TextObjectIndexEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:object-index-source" elements
+	 * @param ele - an instance of TextObjectIndexSourceElement
+	 */
+	public void visit(TextObjectIndexSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:outline-level-style" elements
+	 * @param ele - an instance of TextOutlineLevelStyleElement
+	 */
+	public void visit(TextOutlineLevelStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:outline-style" elements
+	 * @param ele - an instance of TextOutlineStyleElement
+	 */
+	public void visit(TextOutlineStyleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:p" elements
+	 * @param ele - an instance of TextPElement
+	 */
+	public void visit(TextPElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page" elements
+	 * @param ele - an instance of TextPageElement
+	 */
+	public void visit(TextPageElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page-continuation" elements
+	 * @param ele - an instance of TextPageContinuationElement
+	 */
+	public void visit(TextPageContinuationElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page-count" elements
+	 * @param ele - an instance of TextPageCountElement
+	 */
+	public void visit(TextPageCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page-number" elements
+	 * @param ele - an instance of TextPageNumberElement
+	 */
+	public void visit(TextPageNumberElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page-sequence" elements
+	 * @param ele - an instance of TextPageSequenceElement
+	 */
+	public void visit(TextPageSequenceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page-variable-get" elements
+	 * @param ele - an instance of TextPageVariableGetElement
+	 */
+	public void visit(TextPageVariableGetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:page-variable-set" elements
+	 * @param ele - an instance of TextPageVariableSetElement
+	 */
+	public void visit(TextPageVariableSetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:paragraph-count" elements
+	 * @param ele - an instance of TextParagraphCountElement
+	 */
+	public void visit(TextParagraphCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:placeholder" elements
+	 * @param ele - an instance of TextPlaceholderElement
+	 */
+	public void visit(TextPlaceholderElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:print-date" elements
+	 * @param ele - an instance of TextPrintDateElement
+	 */
+	public void visit(TextPrintDateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:print-time" elements
+	 * @param ele - an instance of TextPrintTimeElement
+	 */
+	public void visit(TextPrintTimeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:printed-by" elements
+	 * @param ele - an instance of TextPrintedByElement
+	 */
+	public void visit(TextPrintedByElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:reference-mark" elements
+	 * @param ele - an instance of TextReferenceMarkElement
+	 */
+	public void visit(TextReferenceMarkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:reference-mark-end" elements
+	 * @param ele - an instance of TextReferenceMarkEndElement
+	 */
+	public void visit(TextReferenceMarkEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:reference-mark-start" elements
+	 * @param ele - an instance of TextReferenceMarkStartElement
+	 */
+	public void visit(TextReferenceMarkStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:reference-ref" elements
+	 * @param ele - an instance of TextReferenceRefElement
+	 */
+	public void visit(TextReferenceRefElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:ruby" elements
+	 * @param ele - an instance of TextRubyElement
+	 */
+	public void visit(TextRubyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:ruby-base" elements
+	 * @param ele - an instance of TextRubyBaseElement
+	 */
+	public void visit(TextRubyBaseElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:ruby-text" elements
+	 * @param ele - an instance of TextRubyTextElement
+	 */
+	public void visit(TextRubyTextElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:s" elements
+	 * @param ele - an instance of TextSElement
+	 */
+	public void visit(TextSElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:script" elements
+	 * @param ele - an instance of TextScriptElement
+	 */
+	public void visit(TextScriptElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:section" elements
+	 * @param ele - an instance of TextSectionElement
+	 */
+	public void visit(TextSectionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:section-source" elements
+	 * @param ele - an instance of TextSectionSourceElement
+	 */
+	public void visit(TextSectionSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-city" elements
+	 * @param ele - an instance of TextSenderCityElement
+	 */
+	public void visit(TextSenderCityElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-company" elements
+	 * @param ele - an instance of TextSenderCompanyElement
+	 */
+	public void visit(TextSenderCompanyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-country" elements
+	 * @param ele - an instance of TextSenderCountryElement
+	 */
+	public void visit(TextSenderCountryElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-email" elements
+	 * @param ele - an instance of TextSenderEmailElement
+	 */
+	public void visit(TextSenderEmailElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-fax" elements
+	 * @param ele - an instance of TextSenderFaxElement
+	 */
+	public void visit(TextSenderFaxElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-firstname" elements
+	 * @param ele - an instance of TextSenderFirstnameElement
+	 */
+	public void visit(TextSenderFirstnameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-initials" elements
+	 * @param ele - an instance of TextSenderInitialsElement
+	 */
+	public void visit(TextSenderInitialsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-lastname" elements
+	 * @param ele - an instance of TextSenderLastnameElement
+	 */
+	public void visit(TextSenderLastnameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-phone-private" elements
+	 * @param ele - an instance of TextSenderPhonePrivateElement
+	 */
+	public void visit(TextSenderPhonePrivateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-phone-work" elements
+	 * @param ele - an instance of TextSenderPhoneWorkElement
+	 */
+	public void visit(TextSenderPhoneWorkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-position" elements
+	 * @param ele - an instance of TextSenderPositionElement
+	 */
+	public void visit(TextSenderPositionElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-postal-code" elements
+	 * @param ele - an instance of TextSenderPostalCodeElement
+	 */
+	public void visit(TextSenderPostalCodeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-state-or-province" elements
+	 * @param ele - an instance of TextSenderStateOrProvinceElement
+	 */
+	public void visit(TextSenderStateOrProvinceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-street" elements
+	 * @param ele - an instance of TextSenderStreetElement
+	 */
+	public void visit(TextSenderStreetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sender-title" elements
+	 * @param ele - an instance of TextSenderTitleElement
+	 */
+	public void visit(TextSenderTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sequence" elements
+	 * @param ele - an instance of TextSequenceElement
+	 */
+	public void visit(TextSequenceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sequence-decl" elements
+	 * @param ele - an instance of TextSequenceDeclElement
+	 */
+	public void visit(TextSequenceDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sequence-decls" elements
+	 * @param ele - an instance of TextSequenceDeclsElement
+	 */
+	public void visit(TextSequenceDeclsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sequence-ref" elements
+	 * @param ele - an instance of TextSequenceRefElement
+	 */
+	public void visit(TextSequenceRefElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sheet-name" elements
+	 * @param ele - an instance of TextSheetNameElement
+	 */
+	public void visit(TextSheetNameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:soft-page-break" elements
+	 * @param ele - an instance of TextSoftPageBreakElement
+	 */
+	public void visit(TextSoftPageBreakElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:sort-key" elements
+	 * @param ele - an instance of TextSortKeyElement
+	 */
+	public void visit(TextSortKeyElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:span" elements
+	 * @param ele - an instance of TextSpanElement
+	 */
+	public void visit(TextSpanElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:subject" elements
+	 * @param ele - an instance of TextSubjectElement
+	 */
+	public void visit(TextSubjectElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:tab" elements
+	 * @param ele - an instance of TextTabElement
+	 */
+	public void visit(TextTabElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-count" elements
+	 * @param ele - an instance of TextTableCountElement
+	 */
+	public void visit(TextTableCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-formula" elements
+	 * @param ele - an instance of TextTableFormulaElement
+	 */
+	public void visit(TextTableFormulaElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-index" elements
+	 * @param ele - an instance of TextTableIndexElement
+	 */
+	public void visit(TextTableIndexElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-index-entry-template" elements
+	 * @param ele - an instance of TextTableIndexEntryTemplateElement
+	 */
+	public void visit(TextTableIndexEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-index-source" elements
+	 * @param ele - an instance of TextTableIndexSourceElement
+	 */
+	public void visit(TextTableIndexSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-of-content" elements
+	 * @param ele - an instance of TextTableOfContentElement
+	 */
+	public void visit(TextTableOfContentElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-of-content-entry-template" elements
+	 * @param ele - an instance of TextTableOfContentEntryTemplateElement
+	 */
+	public void visit(TextTableOfContentEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:table-of-content-source" elements
+	 * @param ele - an instance of TextTableOfContentSourceElement
+	 */
+	public void visit(TextTableOfContentSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:template-name" elements
+	 * @param ele - an instance of TextTemplateNameElement
+	 */
+	public void visit(TextTemplateNameElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:text-input" elements
+	 * @param ele - an instance of TextTextInputElement
+	 */
+	public void visit(TextTextInputElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:time" elements
+	 * @param ele - an instance of TextTimeElement
+	 */
+	public void visit(TextTimeElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:title" elements
+	 * @param ele - an instance of TextTitleElement
+	 */
+	public void visit(TextTitleElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:toc-mark" elements
+	 * @param ele - an instance of TextTocMarkElement
+	 */
+	public void visit(TextTocMarkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:toc-mark-end" elements
+	 * @param ele - an instance of TextTocMarkEndElement
+	 */
+	public void visit(TextTocMarkEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:toc-mark-start" elements
+	 * @param ele - an instance of TextTocMarkStartElement
+	 */
+	public void visit(TextTocMarkStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:tracked-changes" elements
+	 * @param ele - an instance of TextTrackedChangesElement
+	 */
+	public void visit(TextTrackedChangesElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-defined" elements
+	 * @param ele - an instance of TextUserDefinedElement
+	 */
+	public void visit(TextUserDefinedElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-field-decl" elements
+	 * @param ele - an instance of TextUserFieldDeclElement
+	 */
+	public void visit(TextUserFieldDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-field-decls" elements
+	 * @param ele - an instance of TextUserFieldDeclsElement
+	 */
+	public void visit(TextUserFieldDeclsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-field-get" elements
+	 * @param ele - an instance of TextUserFieldGetElement
+	 */
+	public void visit(TextUserFieldGetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-field-input" elements
+	 * @param ele - an instance of TextUserFieldInputElement
+	 */
+	public void visit(TextUserFieldInputElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-index" elements
+	 * @param ele - an instance of TextUserIndexElement
+	 */
+	public void visit(TextUserIndexElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-index-entry-template" elements
+	 * @param ele - an instance of TextUserIndexEntryTemplateElement
+	 */
+	public void visit(TextUserIndexEntryTemplateElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-index-mark" elements
+	 * @param ele - an instance of TextUserIndexMarkElement
+	 */
+	public void visit(TextUserIndexMarkElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-index-mark-end" elements
+	 * @param ele - an instance of TextUserIndexMarkEndElement
+	 */
+	public void visit(TextUserIndexMarkEndElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-index-mark-start" elements
+	 * @param ele - an instance of TextUserIndexMarkStartElement
+	 */
+	public void visit(TextUserIndexMarkStartElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:user-index-source" elements
+	 * @param ele - an instance of TextUserIndexSourceElement
+	 */
+	public void visit(TextUserIndexSourceElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:variable-decl" elements
+	 * @param ele - an instance of TextVariableDeclElement
+	 */
+	public void visit(TextVariableDeclElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:variable-decls" elements
+	 * @param ele - an instance of TextVariableDeclsElement
+	 */
+	public void visit(TextVariableDeclsElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:variable-get" elements
+	 * @param ele - an instance of TextVariableGetElement
+	 */
+	public void visit(TextVariableGetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:variable-input" elements
+	 * @param ele - an instance of TextVariableInputElement
+	 */
+	public void visit(TextVariableInputElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:variable-set" elements
+	 * @param ele - an instance of TextVariableSetElement
+	 */
+	public void visit(TextVariableSetElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "text:word-count" elements
+	 * @param ele - an instance of TextWordCountElement
+	 */
+	public void visit(TextWordCountElement ele) {
+		visit((OdfElement) ele);
+	}
+
+	/**
+	 * A method to visit "xforms:model" elements
+	 * @param ele - an instance of XformsModelElement
+	 */
+	public void visit(XformsModelElement ele) {
+		visit((OdfElement) ele);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfContentDom.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfContentDom.java
new file mode 100644
index 0000000..40a4b61
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfContentDom.java
@@ -0,0 +1,135 @@
+/************************************************************************
+ *
+ * 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.dom;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathFactory;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentContentElement;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.pkg.NamespaceName;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.Node;
+
+/**
+ * The DOM repesentation of the ODF content.xml file of an ODF document.
+ */
+public class OdfContentDom extends OdfFileDom {
+
+	private static final long serialVersionUID = 766167617530147883L;
+
+	/**
+	 * Creates the DOM representation of an XML file of an Odf document.
+	 *
+	 * @param odfDocument   the document the XML files belongs to
+	 * @param packagePath   the internal package path to the XML file
+	 */
+	public OdfContentDom(OdfSchemaDocument odfDocument, String packagePath) {
+		super(odfDocument, packagePath);
+	}
+
+	/** Might be used to initialize specific XML Namespace prefixes/URIs for this XML file*/
+	@Override
+	protected void initialize() {
+		for (NamespaceName name : OdfDocumentNamespace.values()) {
+			mUriByPrefix.put(name.getPrefix(), name.getUri());
+			mPrefixByUri.put(name.getUri(), name.getPrefix());
+		}
+		super.initialize();
+	}
+
+	/**
+	 * Retrieves the Odf Document
+	 * 
+	 * @return The <code>OdfDocument</code>
+	 */
+	@Override
+	public OdfSchemaDocument getDocument() {
+		return (OdfSchemaDocument) mPackageDocument;
+	}
+
+	/**
+	 * @return The root element <office:document-content> of the content.xml file as <code>OfficeDocumentContentElement</code>.
+	 */
+	@Override
+	public OfficeDocumentContentElement getRootElement() {
+		return (OfficeDocumentContentElement) getDocumentElement();
+	}
+
+	/**
+	 * Creates an JDK <code>XPath</code> instance.
+	 * Initialized with ODF namespaces from <code>OdfDocumentNamespace</code>. Updated with all namespace of the XML file.
+	 * @return an XPath instance with namespace context set to include the standard
+	 * ODFDOM prefixes.
+	 */
+	@Override
+	public XPath getXPath() {
+		if (mXPath == null) {
+			mXPath = XPathFactory.newInstance().newXPath();
+			mXPath.setNamespaceContext(this);
+		}
+		return mXPath;
+	}
+
+	/**
+	 * Retrieve the ODF AutomaticStyles
+	 *
+	 * @return the {@odf.element style:automatic-styles} element of this dom. May return null
+	 *         if there is not yet such element in this dom.
+	 *
+	 * @see #getOrCreateAutomaticStyles()
+	 *
+	 */
+	public OdfOfficeAutomaticStyles getAutomaticStyles() {
+		return OdfElement.findFirstChildNode(OdfOfficeAutomaticStyles.class, getFirstChild());
+	}
+
+	/**
+	 * @return the {@odf.element style:automatic-styles} element of this dom. If it does not
+	 *         yet exists, a new one is inserted into the dom and returned.
+	 *
+	 */
+	public OdfOfficeAutomaticStyles getOrCreateAutomaticStyles() {
+
+		OdfOfficeAutomaticStyles automaticStyles = getAutomaticStyles();
+		if (automaticStyles == null) {
+			automaticStyles = newOdfElement(OdfOfficeAutomaticStyles.class);
+
+			Node parent = getFirstChild();
+
+			// try to insert before body or before master-styles element
+			OdfElement sibling = OdfElement.findFirstChildNode(OfficeBodyElement.class, parent);
+			if (sibling == null) {
+				sibling = OdfElement.findFirstChildNode(OdfOfficeMasterStyles.class, parent);
+			}
+			if (sibling == null) {
+				parent.appendChild(automaticStyles);
+			} else {
+				parent.insertBefore(automaticStyles, sibling);
+			}
+		}
+		return automaticStyles;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfDocumentNamespace.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfDocumentNamespace.java
new file mode 100644
index 0000000..6efaaab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfDocumentNamespace.java
@@ -0,0 +1,80 @@
+/************************************************************************
+ *
+ * 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.dom;
+
+import org.odftoolkit.odfdom.pkg.NamespaceName;
+
+/**
+ * Namespaces of OpenDocument 1.2 XML Schema
+ */
+public enum OdfDocumentNamespace implements NamespaceName {
+
+	ANIM("anim", "urn:oasis:names:tc:opendocument:xmlns:animation:1.0"),
+	CHART("chart", "urn:oasis:names:tc:opendocument:xmlns:chart:1.0"),
+	CONFIG("config", "urn:oasis:names:tc:opendocument:xmlns:config:1.0"),
+	DB("db", "urn:oasis:names:tc:opendocument:xmlns:database:1.0"),
+	DC("dc", "http://purl.org/dc/elements/1.1/"),
+	DR3D("dr3d", "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"),
+	DRAW("draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"),
+	FO("fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"),
+	FORM("form", "urn:oasis:names:tc:opendocument:xmlns:form:1.0"),
+	GRDDL("grddl", "http://www.w3.org/2003/g/data-view#"),
+	MATH("math", "http://www.w3.org/1998/Math/MathML"),
+	META("meta", "urn:oasis:names:tc:opendocument:xmlns:meta:1.0"),
+	NUMBER("number", "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"),
+	OF("of", "urn:oasis:names:tc:opendocument:xmlns:of:1.2"),
+	OFFICE("office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0"),
+	PRESENTATION("presentation", "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"),
+	SCRIPT("script", "urn:oasis:names:tc:opendocument:xmlns:script:1.0"),
+	SMIL("smil", "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"),
+	STYLE("style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0"),
+	SVG("svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"),
+	TABLE("table", "urn:oasis:names:tc:opendocument:xmlns:table:1.0"),
+	TEXT("text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0"),
+	XFORMS("xforms", "http://www.w3.org/2002/xforms"),
+	XHTML("xhtml", "http://www.w3.org/1999/xhtml"),
+	XLINK("xlink", "http://www.w3.org/1999/xlink"),
+	XML("xml", "http://www.w3.org/XML/1998/namespace" );
+    	
+	private String mPrefix;
+	private String mUri;
+	
+	OdfDocumentNamespace(String prefix, String uri) {
+		mPrefix = prefix;
+		mUri = uri;
+	}    
+
+	/**
+	 * @return the prefix currently related to ODF Namespace.
+	 */
+	public String getPrefix() {
+		return mPrefix;
+	}
+
+	/**
+	 * @return the URI identifiying the ODF Namespace.
+	 */
+	public String getUri() {
+		return mUri;
+	}
+} 
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfMetaDom.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfMetaDom.java
new file mode 100644
index 0000000..f3e7877
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfMetaDom.java
@@ -0,0 +1,102 @@
+/************************************************************************
+ *
+ * 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.dom;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathFactory;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentMetaElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement;
+import org.odftoolkit.odfdom.pkg.NamespaceName;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+
+/**
+ * The DOM repesentation of the ODF meta.xml file of an ODF document.
+ */
+public class OdfMetaDom extends OdfFileDom {
+
+	private static final long serialVersionUID = 766167617530147884L;
+
+	/**
+	 * Creates the DOM representation of an XML file of an Odf document.
+	 *
+	 * @param odfDocument   the document the XML files belongs to
+	 * @param packagePath   the internal package path to the XML file
+	 */
+	public OdfMetaDom(OdfSchemaDocument odfDocument, String packagePath) {
+		super(odfDocument, packagePath);
+		OfficeDocumentMetaElement rootElement = this.getRootElement();
+		if(rootElement == null){		
+			rootElement = new OfficeDocumentMetaElement(this);
+			this.appendChild(rootElement);
+			OfficeMetaElement officeMetaElement = new OfficeMetaElement(this);
+			rootElement.appendChild(officeMetaElement);
+		}
+	}
+
+	/** Might be used to initialize specific XML Namespace prefixes/URIs for this XML file*/
+	@Override
+	protected void initialize() {
+		for (NamespaceName name : OdfDocumentNamespace.values()) {
+			mUriByPrefix.put(name.getPrefix(), name.getUri());
+			mPrefixByUri.put(name.getUri(), name.getPrefix());
+		}
+		super.initialize();
+	}
+
+	/**
+	 * Retrieves the Odf Document
+	 *
+	 * @return The <code>OdfDocument</code>
+	 */
+	@Override
+	public OdfSchemaDocument getDocument() {
+		return (OdfSchemaDocument) mPackageDocument;
+	}
+
+	/**
+	 * @return The root element <office:document-meta> of the meta.xml file as <code>OfficeDocumentMetaElement</code>.
+	 */
+	@Override
+	public final OfficeDocumentMetaElement getRootElement() {
+		return (OfficeDocumentMetaElement) getDocumentElement();
+	}
+
+	/**
+	 * Creates an JDK <code>XPath</code> instance.
+	 * Initialized with ODF namespaces from <code>OdfDocumentNamespace</code>. Updated with all namespace of the XML file.
+	 * @return an XPath instance with namespace context set to include the standard
+	 * ODFDOM prefixes.
+	 */
+	@Override
+	public XPath getXPath() {
+		if (mXPath == null) {
+			mXPath = XPathFactory.newInstance().newXPath();
+			mXPath.setNamespaceContext(this);
+			for (NamespaceName name : OdfDocumentNamespace.values()) {
+				mUriByPrefix.put(name.getPrefix(), name.getUri());
+				mPrefixByUri.put(name.getUri(), name.getPrefix());
+			}
+		}
+		return mXPath;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSchemaConstraint.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSchemaConstraint.java
new file mode 100644
index 0000000..437f091
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSchemaConstraint.java
@@ -0,0 +1,80 @@
+/************************************************************************
+ *
+ * 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.dom;
+
+import org.odftoolkit.odfdom.pkg.ValidationConstraint;
+
+/**
+ * This class is used for validation of the ODF Document.
+ * It contains the constraint messages are taken from the OASIS ODF 1.2 part 1, the XML Schema specification.
+ * These messages are used by the <code>ValidationException</code> for ODF validation.
+ * The validation is enabled, when an <code>ErrorHandler</code> was provided to the <code>OdfPackage</code>.
+ */
+public enum OdfSchemaConstraint implements ValidationConstraint {
+
+	// NOTE FOLLOWING CODE CONVENTION:
+	// The first parameter is ALWAYS the source path, followed by a missing space. The OdfValidationException will take care of adjusting.
+	/** A ODF mimetype is invalid for the ODF XML Schema document. */
+	DOCUMENT_WITHOUT_ODF_MIMETYPE("The ODF mimetype '%2$s' is invalid for the ODF XML Schema document%1$s!"),
+	/** At least \'content.xml' or 'styles.xml' have to be contained in the ODF XML Schema package.*/
+	DOCUMENT_WITHOUT_CONTENT_NOR_STYLES_XML("At least 'content.xml' or 'styles.xml' have to be contained in the ODF XML Schema package%1$s!"),
+	/** The 'mimetype' file have to be contained in the ODF XML Schema package.*/
+	PACKAGE_SHALL_CONTAIN_MIMETYPE("The 'mimetype' file have to be contained in the ODF XML Schema package%1$s!");
+
+	private final String mMessage;
+
+	/**
+	 * Creates a ODF Document constraint
+	 * @param message of the constraint */
+	OdfSchemaConstraint(String message) {
+		mMessage = message;
+	}
+
+	/**
+	 * Creates a localized description of a Constraint.
+	 * Subclasses may override this method in order to produce a
+	 * locale-specific message.  For subclasses that do not override this
+	 * method, the default implementation returns the same result as
+	 * <code>getMessage()</code>.
+	 *
+	 * @return  The localized description of this constraint. */
+	public String getLocalizedMessage() {
+//    FUTURE FEATUE: LOCALIZATION:
+//    =============================
+//    There should be a property files e.g. OdfPackageConstraint_de_DE.properties Sourcecode:
+//    PACKAGE_SHALL_BE_ZIP=%s muß eine ZIP Datei sein, wie in [ZIP] definiert. Alle Dateien innerhalbe des ZIPS müssen entwder unkomprimiert (STORED) oder komprimiert sein (DEFLATED) und den DEFLATE aloritmus verwenden.
+//    PACKAGE_SHALL_CONTAIN_MANIFEST=.....
+//    ResourceBundle bundle = ResourceBundle.getBundle(OdfPackageConstraint.class.getName());
+//    return bundle.getString(this.name());
+		return mMessage;
+	}
+
+	/**
+	 * Returns the detail message string of this Constraint.
+	 *
+	 * @return  the detail message string of this <tt>Constraint</tt> instance
+	 *          (which may be <tt>null</tt>).
+	 */
+	public String getMessage() {
+		return mMessage;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSchemaDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSchemaDocument.java
new file mode 100644
index 0000000..25188b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSchemaDocument.java
@@ -0,0 +1,496 @@
+/**

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

+ *

+ * 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.dom;

+

+import java.io.InputStream;

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+

+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeMasterStylesElement;

+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;

+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfPackage;

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

+import org.odftoolkit.odfdom.pkg.OdfValidationException;

+import org.odftoolkit.odfdom.pkg.rdfa.Util;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+import org.w3c.dom.NodeList;

+import org.xml.sax.ErrorHandler;

+import org.xml.sax.SAXException;

+

+import com.hp.hpl.jena.rdf.model.Model;

+import com.hp.hpl.jena.rdf.model.ModelFactory;

+import com.hp.hpl.jena.util.ResourceUtils;

+import java.io.InputStreamReader;

+

+/**

+ * A document in ODF is from the package view a directory with a media type.

+ * If the media type represents a document described by the ODF 1.2 Schema,

+ * certain files are assumed within:

+ * content.xml, styles.xml, metadata.xml and settings.xml.

+ *

+ * The class represents such a document, providing easier access to its XML files.

+ */

+public abstract class OdfSchemaDocument extends OdfPackageDocument {

+

+	protected OdfContentDom mContentDom;

+	protected OdfStylesDom mStylesDom;

+	protected OdfMetaDom mMetaDom;

+	protected OdfSettingsDom mSettingsDom;

+	protected OdfOfficeStyles mDocumentStyles;

+

+	/**

+	 * Creates a new OdfSchemaDocument.

+	 *

+	 * @param pkg - the ODF Package that contains the document. A baseURL is being generated based on its location.

+	 * @param internalPath - the directory path within the package from where the document should be loaded.

+	 * @param mediaTypeString

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

+	 */

+	protected OdfSchemaDocument(OdfPackage pkg, String internalPath, String mediaTypeString) {

+		super(pkg, internalPath, mediaTypeString);

+		ErrorHandler errorHandler = pkg.getErrorHandler();

+		if (errorHandler != null) {

+			if (pkg.getFileEntry(internalPath + "content.xml") == null && pkg.getFileEntry(internalPath + "styles.xml") == null) {

+				try {

+					String baseURI = pkg.getBaseURI();

+					if (baseURI == null) {

+						baseURI = internalPath;

+					} else {

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

+							baseURI = "/" + internalPath;

+						}

+					}

+					errorHandler.error(new OdfValidationException(OdfSchemaConstraint.DOCUMENT_WITHOUT_CONTENT_NOR_STYLES_XML, baseURI));

+				} catch (SAXException ex) {

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

+				}

+			}

+			InputStream mimetypeStream = pkg.getInputStream(OdfPackage.OdfFile.MEDIA_TYPE.getPath(), true);

+			if (internalPath.equals(ROOT_DOCUMENT_PATH) && mimetypeStream == null) {

+				try {

+					errorHandler.error(new OdfValidationException(OdfSchemaConstraint.PACKAGE_SHALL_CONTAIN_MIMETYPE, pkg.getBaseURI()));

+				} catch (SAXException ex) {

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

+				}

+			}

+		}

+	}

+

+	/**

+	 * This enum contains all possible standardized XML ODF files of the OpenDocument document.

+	 */

+	public static enum OdfXMLFile {

+

+		/** The XML file containing the content of an ODF document as specified by the ODF 1.2 specification part 1. */

+		CONTENT("content.xml"),

+		/** The XML file containing a predifined set of metadata related to an ODF document as specified by the ODF 1.2 specification part 1. */

+		META("meta.xml"),

+		/** The XML file containing the settings of an ODF document as specified by the ODF 1.2 specification part 1. */

+		SETTINGS("settings.xml"),

+		/** The XML file containing the styles of an ODF document as specified by the ODF 1.2 specification part 1. */

+		STYLES("styles.xml");

+		private final String mFileName;

+

+		/**

+		 * @return the file name of xml files contained in odf packages.

+		 */

+		public String getFileName() {

+			return mFileName;

+		}

+

+		OdfXMLFile(String fileName) {

+			this.mFileName = fileName;

+		}

+	}

+

+	/**

+	 * Gets the ODF content.xml file as stream.

+	 *

+	 * @return - a stream of the ODF content 'content.xml' file

+	 * @throws java.lang.Exception - if the stream can not be extracted

+	 */

+	public InputStream getContentStream() throws Exception {

+		String path = getXMLFilePath(OdfXMLFile.CONTENT);

+		return mPackage.getInputStream(path);

+	}

+

+	/**

+	 * Gets the ODF style.xml file as stream.

+	 *

+	 * @return - a stream of the ODF style 'styles.xml' file

+	 * @throws java.lang.Exception - if the stream can not be extracted

+	 */

+	public InputStream getStylesStream() throws Exception {

+		return mPackage.getInputStream(getXMLFilePath(OdfXMLFile.STYLES));

+	}

+

+	/**

+	 * Gets the ODF settings.xml file as stream.

+	 *

+	 * @return - a stream of the ODF settings 'setting.xml' file

+	 * @throws java.lang.Exception - if the stream can not be extracted

+	 */

+	public InputStream getSettingsStream() throws Exception {

+		return mPackage.getInputStream(getXMLFilePath(OdfXMLFile.SETTINGS));

+	}

+

+	/**

+	 * Gets the ODF metadata.xml file as stream.

+	 *

+	 * @return - a stream of the ODF metadata 'meta.xml' file

+	 * @throws java.lang.Exception - if the stream can not be extracted

+	 */

+	public InputStream getMetaStream() throws Exception {

+		return mPackage.getInputStream(getXMLFilePath(OdfXMLFile.META));

+	}

+

+	/**

+	 * Get the relative path for an embedded ODF document including its file name.

+	 * @param file represents one of the standardized XML ODF files.

+	 * @return path to embedded ODF XML file relative to ODF package root.

+	 */

+	protected String getXMLFilePath(OdfXMLFile file) {

+		return file.mFileName;

+	}

+

+	/**

+	 * Get the URI, where this ODF document is stored.

+	 * @return the URI to the ODF document. Returns null if document is not stored yet.

+	 */

+	public String getBaseURI() {

+		return mPackage.getBaseURI();

+

+

+	}

+

+	/**

+	 * Return the ODF type-based content DOM of the content.xml

+	 *

+	 * @return ODF type-based content DOM or null if no content.xml exists.

+	 * @throws Exception if content DOM could not be initialized

+	 */

+	public OdfContentDom getContentDom() throws Exception {

+		if (mContentDom == null) {

+			mContentDom = (OdfContentDom) getFileDom(OdfXMLFile.CONTENT);

+		}

+		return mContentDom;

+	}

+

+	/**

+	 * Return the ODF type-based styles DOM of the styles.xml

+	 *

+	 * @return ODF type-based styles DOM or null if no styles.xml exists.

+	 * @throws Exception if styles DOM could not be initialized

+	 */

+	public OdfStylesDom getStylesDom() throws Exception {

+		if (mStylesDom == null) {

+			mStylesDom = (OdfStylesDom) getFileDom(OdfXMLFile.STYLES);

+		}

+		return mStylesDom;

+	}

+

+	/**

+	 * Return the ODF type-based metadata DOM of the meta.xml

+	 *

+	 * @return ODF type-based meta DOM or null if no meta.xml exists.

+	 * @throws Exception if meta DOM could not be initialized

+	 */

+	public OdfMetaDom getMetaDom() throws Exception {

+		if (mMetaDom == null) {

+			mMetaDom = (OdfMetaDom) getFileDom(OdfXMLFile.META);

+		}

+		return mMetaDom;

+	}

+

+	/**

+	 * Return the ODF type-based settings DOM of the settings.xml

+	 *

+	 * @return ODF type-based settings DOM or null if no settings.xml exists.

+	 * @throws Exception if settings DOM could not be initialized

+	 */

+	public OdfSettingsDom getSettingsDom() throws Exception {

+		if (mSettingsDom == null) {

+			mSettingsDom = (OdfSettingsDom) getFileDom(OdfXMLFile.SETTINGS);

+		}

+		return mSettingsDom;

+	}

+

+	/**

+	 *

+	 * @return the office:styles element from the styles dom or null if there is

+	 * no such element.

+	 */

+	public OdfOfficeStyles getDocumentStyles() {

+		if (mDocumentStyles == null) {

+			try {

+				OdfFileDom stylesDom = getStylesDom();

+				if (stylesDom != null) {

+					mDocumentStyles = OdfElement.findFirstChildNode(OdfOfficeStyles.class, stylesDom.getFirstChild());

+				} else {

+					return null;

+				}

+			} catch (Exception ex) {

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

+			}

+		}

+		return mDocumentStyles;

+	}

+

+	/**

+	 * return the office:master-styles element of this document.

+	 *

+	 * @return the office:master-styles element

+	 */

+	public OdfOfficeMasterStyles getOfficeMasterStyles() {

+		try {

+			OdfFileDom fileDom = getStylesDom();

+			if (fileDom != null) {

+				return OdfElement.findFirstChildNode(OdfOfficeMasterStyles.class, fileDom.getFirstChild());

+			}

+		} catch (Exception ex) {

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

+		}

+		return null;

+	}

+

+	/**

+	 *

+	 * @return the office:styles element from the styles dom. If there is not

+	 *         yet such an element, it is created.

+	 */

+	public OdfOfficeStyles getOrCreateDocumentStyles() {

+		if (mDocumentStyles == null) {

+			try {

+				OdfFileDom stylesDom = getStylesDom();

+				Node parent = stylesDom != null ? stylesDom.getFirstChild() : null;

+				if (parent != null) {

+					mDocumentStyles = OdfElement.findFirstChildNode(OdfOfficeStyles.class, parent);

+					if (mDocumentStyles == null) {

+						mDocumentStyles = stylesDom.newOdfElement(OdfOfficeStyles.class);

+						parent.insertBefore(mDocumentStyles, parent.getFirstChild());

+					}

+				}

+			} catch (Exception ex) {

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

+			}

+		}

+		return mDocumentStyles;

+	}

+

+	/**

+	 * Return a list of table features in this document.

+	 *

+	 * @return a list of table features in this document.

+	 */

+	// ToDo: Instead of a method to receive all possible feature/components on the document, there might be a generic or one each element?

+	public List<TableTableElement> getTables() {

+		List<TableTableElement> tableList = new ArrayList<TableTableElement>();

+		try {

+			// find tables from content.xml

+			OfficeBodyElement officeBody = OdfElement.findFirstChildNode(OfficeBodyElement.class, getContentDom().getRootElement());

+			OdfElement contentRoot = OdfElement.findFirstChildNode(OdfElement.class, officeBody);

+			tableList = fillTableList(contentRoot, tableList);

+

+			// find tables from styles.xml (header & footer)

+			Map<String, StyleMasterPageElement> masterPages = getMasterPages();

+			StyleMasterPageElement defaultMasterPage = masterPages.get("Standard");

+			if (defaultMasterPage != null) {

+				tableList = fillTableList(defaultMasterPage, tableList);

+			}

+		} catch (Exception ex) {

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

+		}

+		return tableList;

+	}

+

+	// Only tables being on root level are being considered

+	private List<TableTableElement> fillTableList(Element startElement, List<TableTableElement> tableList) {

+		NodeList childList = startElement.getChildNodes();

+		for (int i = 0;

+				i < childList.getLength();

+				i++) {

+			Node childNode = childList.item(i);

+			if (childNode instanceof Element) {

+				if(childNode instanceof TableTableElement){

+					tableList.add((TableTableElement) childList.item(i));

+				}else{

+					fillTableList((Element) childNode, tableList);

+				}

+			}

+		}

+		return tableList;

+	}

+

+	/**

+	 * ToDo: Instead of adding all elements using an index to the document, we

+	 * might add a pattern to the code generation to create a HashMap either on

+	 * demand (whenever such a structure is required from the user) or by

+	 * default

+	 *

+	 * @deprecated This method will be moved to the generated sources as soon

+	 *              code generation was improved!

+	 *

+	 */

+	public Map<String, StyleMasterPageElement> getMasterPages() throws Exception {

+

+		// get original values:

+		OdfStylesDom stylesDoc = getStylesDom();

+		OfficeMasterStylesElement masterStyles = OdfElement.findFirstChildNode(OfficeMasterStylesElement.class, stylesDoc.getRootElement());

+		Map<String, StyleMasterPageElement> masterPages = null;

+		if (masterStyles != null) {

+			NodeList lstMasterPages = stylesDoc.getElementsByTagNameNS(OdfDocumentNamespace.STYLE.getUri(), "master-page");

+			if (lstMasterPages != null && lstMasterPages.getLength() > 0) {

+				masterPages = new HashMap();

+				for (int i = 0; i < lstMasterPages.getLength(); i++) {

+					StyleMasterPageElement masterPage = (StyleMasterPageElement) lstMasterPages.item(i); //Take the node from the list

+					//ToDo: Drop Attribute Suffix for methods returning String values and NOT Attributes

+					String styleName = masterPage.getStyleNameAttribute();

+					masterPages.put(styleName, masterPage);

+				}

+			}

+		}

+		return masterPages;

+	}

+

+	/**

+	 * Close the OdfPackage and release all temporary created data.

+	 * Acter execution of this method, this class is no longer usable.

+	 * Do this as the last action to free resources.

+	 * Closing an already closed document has no effect.

+	 * Note that this will not close any cached documents.

+	 */

+	@Override

+	public void close() {

+		mContentDom = null;

+		mStylesDom = null;

+		mMetaDom = null;

+		mSettingsDom = null;

+		mDocumentStyles = null;

+		super.close();

+	}

+

+	public OdfFileDom getFileDom(OdfXMLFile file) throws Exception {

+		return getFileDom(getXMLFilePath(file));

+	}

+

+	/**

+	 * Get all two types of RDF Metadata through GRDDL XSLT:

+	 * http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1415068_253892949

+	 */

+	public Model getRDFMetadata() throws Exception {

+		Model m = getInContentMetadata().union(this.getManifestRDFMetadata());

+		return m;

+	}

+

+	/**

+	 * Get In Content RDF Metadata through GRDDL XSLT

+	 * http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1415070_253892949

+	 */

+	public Model getInContentMetadata() throws Exception {

+		Model documentRDFModel = ModelFactory.createDefaultModel();

+		Model fileRDFModel = null;

+		for (String internalPath : this.getPackage().getFilePaths()) {

+			for (OdfXMLFile file : OdfXMLFile.values()) {

+				if (Util.isSubPathOf(internalPath, this.getDocumentPath())

+						&& internalPath.endsWith(file.getFileName())) {

+					fileRDFModel = getXMLFileMetadata(internalPath);

+					if (fileRDFModel.size() > 0) {

+						documentRDFModel = documentRDFModel.union(fileRDFModel);

+					}

+					break;

+				}

+			}

+		}

+		if (fileRDFModel.size() > 0) {

+			documentRDFModel = documentRDFModel.union(fileRDFModel);

+		}

+		return documentRDFModel;

+	}

+

+	/**

+	 * Get in-content metadata cache model

+	 *

+	 * @return The in-content metadata cache model

+	 * @throws Exception

+	 */

+	public Model getInContentMetadataFromCache() throws Exception {

+		Model m = ModelFactory.createDefaultModel();

+		// find and merge the RDF triples cache from the OdfXMLFile files

+		for (OdfXMLFile file : OdfXMLFile.values()) {

+			for (Model m1 : this.getFileDom(file).getInContentMetadataCache().values()) {

+				m = m.union(m1);

+			}

+		}

+		return m;

+	}

+

+	/**

+	 * Get RDF metadata from manifest.rdf and those rdf files registered in the

+	 * manifest.xml as "application/rdf+xml" through GRDDL XSLT

+	 * http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1415072_253892949

+	 */

+	public Model getManifestRDFMetadata() throws Exception {

+		Model m = ModelFactory.createDefaultModel();

+		for (String internalPath : this.getPackage().getFilePaths()) {

+			if (Util.isSubPathOf(internalPath, this.getDocumentPath()) && this.getPackage().getMediaTypeString(internalPath).endsWith("application/rdf+xml")) {

+				Model m1 = ModelFactory.createDefaultModel();

+				String RDFBaseUri = Util.getRDFBaseUri(this.getPackage().getBaseURI(), internalPath);

+				m1.read(new InputStreamReader(this.getPackage().getInputStream(internalPath), "utf-8"), RDFBaseUri);

+				// remove the last SLASH at the end of the RDFBaseUri:

+				// test_rdfmeta.odt/ --> test_rdfmeta.odt

+				ResourceUtils.renameResource(m1.getResource(RDFBaseUri), RDFBaseUri.substring(0, RDFBaseUri.length() - 1));

+				if (m1.size() > 0) {

+					m = m.union(m1);

+				}

+			}

+		}

+		return m;

+	}

+

+	/**

+	 * Get in-content metadata model of bookmarks

+	 *

+	 * @return The in-content metadata model of bookmarks

+	 * @throws Exception

+	 */

+	public Model getBookmarkRDFMetadata() throws Exception {

+		Model m = ModelFactory.createDefaultModel();

+		for (OdfXMLFile file : OdfXMLFile.values()) {

+			OdfFileDom dom = getFileDom(file);

+			m = m.union(dom.getBookmarkRDFMetadata());

+		}

+		return m;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSettingsDom.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSettingsDom.java
new file mode 100644
index 0000000..bda91f6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfSettingsDom.java
@@ -0,0 +1,94 @@
+/*
+ * 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.dom;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathFactory;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentSettingsElement;
+import org.odftoolkit.odfdom.pkg.NamespaceName;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfPackageDocument;
+
+/**
+ * The DOM repesentation of the ODF Settings.xml file of an ODF document.
+ */
+public class OdfSettingsDom extends OdfFileDom {
+
+	private static final long serialVersionUID = 766167617530147885L;
+
+	/**
+	 * Creates the DOM representation of an XML file of an Odf document.
+	 *
+	 * @param odfDocument   the document the XML files belongs to
+	 * @param packagePath   the internal package path to the XML file
+	 */
+	public OdfSettingsDom(OdfSchemaDocument odfDocument, String packagePath) {
+		super(odfDocument, packagePath);
+	}
+
+	/** Might be used to initialize specific XML Namespace prefixes/URIs for this XML file*/
+	@Override
+	protected void initialize() {
+		for (NamespaceName name : OdfDocumentNamespace.values()) {
+			mUriByPrefix.put(name.getPrefix(), name.getUri());
+			mPrefixByUri.put(name.getUri(), name.getPrefix());
+		}
+		super.initialize();
+	}
+
+	/**
+	 * Retrieves the Odf Document
+	 *
+	 * @return The <code>OdfDocument</code>
+	 */
+	@Override
+	public OdfSchemaDocument getDocument() {
+		return (OdfSchemaDocument) mPackageDocument;
+	}
+
+	/**
+	 * @return The root element <office:document-settings> of the settings.xml file as <code>OfficeDocumentSettingsElement</code>.
+	 */
+	@Override
+	public OfficeDocumentSettingsElement getRootElement() {
+		return (OfficeDocumentSettingsElement) getDocumentElement();
+	}
+
+	/**
+	 * Creates an JDK <code>XPath</code> instance.
+	 * Initialized with ODF namespaces from <code>OdfDocumentNamespace</code>. Updated with all namespace of the XML file.
+	 * @return an XPath instance with namespace context set to include the standard
+	 * ODFDOM prefixes.
+	 */
+	@Override
+	public XPath getXPath() {
+		if (mXPath == null) {
+			mXPath = XPathFactory.newInstance().newXPath();
+			mXPath.setNamespaceContext(this);
+			for (NamespaceName name : OdfDocumentNamespace.values()) {
+				mUriByPrefix.put(name.getPrefix(), name.getUri());
+				mPrefixByUri.put(name.getUri(), name.getPrefix());
+			}
+		}
+		return mXPath;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfStylesDom.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfStylesDom.java
new file mode 100644
index 0000000..b820177
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/OdfStylesDom.java
@@ -0,0 +1,155 @@
+/************************************************************************
+ *
+ * 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.dom;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathFactory;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentStylesElement;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.pkg.NamespaceName;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.Node;
+
+/**
+ * The DOM repesentation of the ODF styles.xml file of an ODF document.
+ */
+public class OdfStylesDom extends OdfFileDom {
+
+	private static final long serialVersionUID = 766167617530147886L;
+
+	/**
+	 * Creates the DOM representation of an XML file of an Odf document.
+	 *
+	 * @param odfDocument   the document the XML files belongs to
+	 * @param packagePath   the internal package path to the XML file
+	 */
+	public OdfStylesDom(OdfSchemaDocument odfDocument, String packagePath) {
+		super(odfDocument, packagePath);
+	}
+
+	/** Might be used to initialize specific XML Namespace prefixes/URIs for this XML file*/
+	@Override
+	protected void initialize() {
+		for (NamespaceName name : OdfDocumentNamespace.values()) {
+			mUriByPrefix.put(name.getPrefix(), name.getUri());
+			mPrefixByUri.put(name.getUri(), name.getPrefix());
+		}
+		super.initialize();
+	}
+
+	/**
+	 * Retrieves the Odf Document
+	 *
+	 * @return The <code>OdfDocument</code>
+	 */
+	@Override
+	public OdfSchemaDocument getDocument() {
+		return (OdfSchemaDocument) mPackageDocument;
+	}
+
+	/**
+	 * * @return The root element <office:document-styles> of the styles.xml file as <code>OfficeDocumentStylesElement</code>.
+	 */
+	@Override
+	public OfficeDocumentStylesElement getRootElement() {
+		return (OfficeDocumentStylesElement) getDocumentElement();
+	}
+
+	/**
+	 * Creates an JDK <code>XPath</code> instance.
+	 * Initialized with ODF namespaces from <code>OdfDocumentNamespace</code>. Updated with all namespace of the XML file.
+	 * @return an XPath instance with namespace context set to include the standard
+	 * ODFDOM prefixes.
+	 */
+	@Override
+	public XPath getXPath() {
+		if (mXPath == null) {
+			mXPath = XPathFactory.newInstance().newXPath();
+			mXPath.setNamespaceContext(this);
+			for (NamespaceName name : OdfDocumentNamespace.values()) {
+				mUriByPrefix.put(name.getPrefix(), name.getUri());
+				mPrefixByUri.put(name.getUri(), name.getPrefix());
+			}
+		}
+		return mXPath;
+	}
+
+
+	// ToDo bug 72 - STYLE REFACTORING - THE FOLLOWING METHODS WILL BE RE/MOVED
+	// As Package layer should not refer to DOM/DOC layer and DOM files should not
+	// handle automatic styles the upcoming DOM Document should capsulate this.
+	/**
+	 * @return the style:office-styles element of this dom. May return null
+	 *         if there is not yet such element in this dom.
+	 *
+	 * @see #getOrCreateAutomaticStyles()
+	 *
+	 */
+	public OdfOfficeStyles getOfficeStyles() {
+		return OdfElement.findFirstChildNode(OdfOfficeStyles.class, getFirstChild());
+	}
+
+	/**
+	 * Retrieve the ODF AutomaticStyles
+	 *
+	 * @return the {@odf.element style:automatic-styles} element of this dom. May return null
+	 *         if there is not yet such element in this dom.
+	 *
+	 * @see #getOrCreateAutomaticStyles()
+	 *
+	 */
+	public OdfOfficeAutomaticStyles getAutomaticStyles() {
+		return OdfElement.findFirstChildNode(OdfOfficeAutomaticStyles.class, getFirstChild());
+	}
+
+	/**
+	 * @return the {@odf.element style:automatic-styles} element of this dom. If it does not
+	 *         yet exists, a new one is inserted into the dom and returned.
+	 *
+	 */
+	public OdfOfficeAutomaticStyles getOrCreateAutomaticStyles() {
+
+		OdfOfficeAutomaticStyles automaticStyles = getAutomaticStyles();
+		if (automaticStyles == null) {
+			automaticStyles = newOdfElement(OdfOfficeAutomaticStyles.class);
+
+			Node parent = getFirstChild();
+
+			// try to insert before body or before master-styles element
+			OdfElement sibling = OdfElement.findFirstChildNode(OfficeBodyElement.class, parent);
+			if (sibling == null) {
+				sibling = OdfElement.findFirstChildNode(OdfOfficeMasterStyles.class, parent);
+			}
+			if (sibling == null) {
+				parent.appendChild(automaticStyles);
+			} else {
+				parent.insertBefore(automaticStyles, sibling);
+			}
+		}
+		return automaticStyles;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimAudioLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimAudioLevelAttribute.java
new file mode 100644
index 0000000..cbca6a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimAudioLevelAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:audio-level}.
+ *
+ */
+public class AnimAudioLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "audio-level");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:audio-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimAudioLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:audio-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:audio-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:audio-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimColorInterpolationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimColorInterpolationAttribute.java
new file mode 100644
index 0000000..736edef
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimColorInterpolationAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:color-interpolation}.
+ *
+ */
+public class AnimColorInterpolationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "color-interpolation");
+	public static final String DEFAULT_VALUE = "rgb";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:color-interpolation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimColorInterpolationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:color-interpolation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute anim:color-interpolation}.
+	 */
+	public enum Value {
+		HSL("hsl"), RGB("rgb") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:color-interpolation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:color-interpolation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimColorInterpolationDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimColorInterpolationDirectionAttribute.java
new file mode 100644
index 0000000..ad847fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimColorInterpolationDirectionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:color-interpolation-direction}.
+ *
+ */
+public class AnimColorInterpolationDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "color-interpolation-direction");
+	public static final String DEFAULT_VALUE = "clockwise";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:color-interpolation-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimColorInterpolationDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:color-interpolation-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute anim:color-interpolation-direction}.
+	 */
+	public enum Value {
+		CLOCKWISE("clockwise"), COUNTER_CLOCKWISE("counter-clockwise") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:color-interpolation-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:color-interpolation-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimCommandAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimCommandAttribute.java
new file mode 100644
index 0000000..a8ea69c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimCommandAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:command}.
+ *
+ */
+public class AnimCommandAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "command");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:command}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimCommandAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:command}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:command}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:command} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimFormulaAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimFormulaAttribute.java
new file mode 100644
index 0000000..75d5ff6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimFormulaAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:formula}.
+ *
+ */
+public class AnimFormulaAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "formula");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:formula}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimFormulaAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:formula}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:formula}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:formula} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIdAttribute.java
new file mode 100644
index 0000000..35799c7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:id}.
+ *
+ */
+public class AnimIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIterateIntervalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIterateIntervalAttribute.java
new file mode 100644
index 0000000..6669fbc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIterateIntervalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:iterate-interval}.
+ *
+ */
+public class AnimIterateIntervalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "iterate-interval");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:iterate-interval}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimIterateIntervalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:iterate-interval}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:iterate-interval}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:iterate-interval} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIterateTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIterateTypeAttribute.java
new file mode 100644
index 0000000..06253b6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimIterateTypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:iterate-type}.
+ *
+ */
+public class AnimIterateTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "iterate-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:iterate-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimIterateTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:iterate-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:iterate-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:iterate-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimNameAttribute.java
new file mode 100644
index 0000000..5922d79
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:name}.
+ *
+ */
+public class AnimNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimSubItemAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimSubItemAttribute.java
new file mode 100644
index 0000000..4b50d2c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimSubItemAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:sub-item}.
+ *
+ */
+public class AnimSubItemAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "sub-item");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:sub-item}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimSubItemAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:sub-item}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:sub-item}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:sub-item} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimValueAttribute.java
new file mode 100644
index 0000000..6ae9696
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/anim/AnimValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.anim;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute anim:value}.
+ *
+ */
+public class AnimValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute anim:value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public AnimValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute anim:value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute anim:value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute anim:value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAngleOffsetAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAngleOffsetAttribute.java
new file mode 100644
index 0000000..45e6387
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAngleOffsetAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:angle-offset}.
+ *
+ */
+public class ChartAngleOffsetAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "angle-offset");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:angle-offset}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAngleOffsetAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:angle-offset}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:angle-offset}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:angle-offset} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAttachedAxisAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAttachedAxisAttribute.java
new file mode 100644
index 0000000..2e90b50
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAttachedAxisAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:attached-axis}.
+ *
+ */
+public class ChartAttachedAxisAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "attached-axis");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:attached-axis}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAttachedAxisAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:attached-axis}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:attached-axis}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:attached-axis} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutoPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutoPositionAttribute.java
new file mode 100644
index 0000000..d40fb9d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutoPositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:auto-position}.
+ *
+ */
+public class ChartAutoPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "auto-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:auto-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAutoPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:auto-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:auto-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:auto-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutoSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutoSizeAttribute.java
new file mode 100644
index 0000000..2fd83fb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutoSizeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:auto-size}.
+ *
+ */
+public class ChartAutoSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "auto-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:auto-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAutoSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:auto-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:auto-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:auto-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutomaticContentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutomaticContentAttribute.java
new file mode 100644
index 0000000..da7c4e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAutomaticContentAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:automatic-content}.
+ *
+ */
+public class ChartAutomaticContentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "automatic-content");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:automatic-content}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAutomaticContentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:automatic-content}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:automatic-content}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:automatic-content} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAxisLabelPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAxisLabelPositionAttribute.java
new file mode 100644
index 0000000..17f627b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAxisLabelPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:axis-label-position}.
+ *
+ */
+public class ChartAxisLabelPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "axis-label-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:axis-label-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAxisLabelPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:axis-label-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:axis-label-position}.
+	 */
+	public enum Value {
+		NEAR_AXIS("near-axis"), NEAR_AXIS_OTHER_SIDE("near-axis-other-side"), OUTSIDE_END("outside-end"), OUTSIDE_START("outside-start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:axis-label-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:axis-label-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAxisPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAxisPositionAttribute.java
new file mode 100644
index 0000000..d71fe1e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartAxisPositionAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:axis-position}.
+ *
+ */
+public class ChartAxisPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "axis-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:axis-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartAxisPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:axis-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:axis-position}.
+	 */
+	public enum Value {
+		END("end"), START("start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:axis-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:axis-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartClassAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartClassAttribute.java
new file mode 100644
index 0000000..7c6cd54
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartClassAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:class}.
+ *
+ */
+public class ChartClassAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "class");
+	public static final String DEFAULT_VALUE = "major";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:class}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartClassAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:class}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:class}.
+	 */
+	public enum Value {
+		MAJOR("major"), MINOR("minor") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:class}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:class} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartColumnMappingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartColumnMappingAttribute.java
new file mode 100644
index 0000000..582cb62
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartColumnMappingAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:column-mapping}.
+ *
+ */
+public class ChartColumnMappingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "column-mapping");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:column-mapping}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartColumnMappingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:column-mapping}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:column-mapping}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:column-mapping} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartConnectBarsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartConnectBarsAttribute.java
new file mode 100644
index 0000000..147ee82
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartConnectBarsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:connect-bars}.
+ *
+ */
+public class ChartConnectBarsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "connect-bars");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:connect-bars}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartConnectBarsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:connect-bars}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:connect-bars}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:connect-bars} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelNumberAttribute.java
new file mode 100644
index 0000000..d0a09c3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelNumberAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:data-label-number}.
+ *
+ */
+public class ChartDataLabelNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "data-label-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:data-label-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDataLabelNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:data-label-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:data-label-number}.
+	 */
+	public enum Value {
+		NONE("none"), PERCENTAGE("percentage"), VALUE("value"), VALUE_AND_PERCENTAGE("value-and-percentage") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:data-label-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:data-label-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelSymbolAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelSymbolAttribute.java
new file mode 100644
index 0000000..f1f2b2b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelSymbolAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:data-label-symbol}.
+ *
+ */
+public class ChartDataLabelSymbolAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "data-label-symbol");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:data-label-symbol}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDataLabelSymbolAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:data-label-symbol}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:data-label-symbol}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:data-label-symbol} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelTextAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelTextAttribute.java
new file mode 100644
index 0000000..e284a01
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataLabelTextAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:data-label-text}.
+ *
+ */
+public class ChartDataLabelTextAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "data-label-text");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:data-label-text}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDataLabelTextAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:data-label-text}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:data-label-text}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:data-label-text} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataSourceHasLabelsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataSourceHasLabelsAttribute.java
new file mode 100644
index 0000000..c8579ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDataSourceHasLabelsAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:data-source-has-labels}.
+ *
+ */
+public class ChartDataSourceHasLabelsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "data-source-has-labels");
+	public static final String DEFAULT_VALUE = "none";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:data-source-has-labels}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDataSourceHasLabelsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:data-source-has-labels}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:data-source-has-labels}.
+	 */
+	public enum Value {
+		BOTH("both"), COLUMN("column"), NONE("none"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:data-source-has-labels}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:data-source-has-labels} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDeepAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDeepAttribute.java
new file mode 100644
index 0000000..57b9afc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDeepAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:deep}.
+ *
+ */
+public class ChartDeepAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "deep");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:deep}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDeepAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:deep}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:deep}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:deep} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDimensionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDimensionAttribute.java
new file mode 100644
index 0000000..37601f1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDimensionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:dimension}.
+ *
+ */
+public class ChartDimensionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "dimension");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:dimension}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDimensionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:dimension}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:dimension}.
+	 */
+	public enum Value {
+		x("x"), y("y"), z("z") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:dimension}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:dimension} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayEquationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayEquationAttribute.java
new file mode 100644
index 0000000..d5bb71e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayEquationAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:display-equation}.
+ *
+ */
+public class ChartDisplayEquationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "display-equation");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:display-equation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDisplayEquationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:display-equation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:display-equation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:display-equation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayLabelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayLabelAttribute.java
new file mode 100644
index 0000000..8b35eed
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayLabelAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:display-label}.
+ *
+ */
+public class ChartDisplayLabelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "display-label");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:display-label}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDisplayLabelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:display-label}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:display-label}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:display-label} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayRSquareAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayRSquareAttribute.java
new file mode 100644
index 0000000..b9237ce
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartDisplayRSquareAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:display-r-square}.
+ *
+ */
+public class ChartDisplayRSquareAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "display-r-square");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:display-r-square}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartDisplayRSquareAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:display-r-square}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:display-r-square}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:display-r-square} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorCategoryAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorCategoryAttribute.java
new file mode 100644
index 0000000..632e1aa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorCategoryAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-category}.
+ *
+ */
+public class ChartErrorCategoryAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-category");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-category}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorCategoryAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-category}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:error-category}.
+	 */
+	public enum Value {
+		CELL_RANGE("cell-range"), CONSTANT("constant"), ERROR_MARGIN("error-margin"), NONE("none"), PERCENTAGE("percentage"), STANDARD_DEVIATION("standard-deviation"), STANDARD_ERROR("standard-error"), VARIANCE("variance") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-category}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-category} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerIndicatorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerIndicatorAttribute.java
new file mode 100644
index 0000000..3fb2709
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerIndicatorAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-lower-indicator}.
+ *
+ */
+public class ChartErrorLowerIndicatorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-indicator");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-lower-indicator}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorLowerIndicatorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-lower-indicator}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-lower-indicator}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-lower-indicator} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerLimitAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerLimitAttribute.java
new file mode 100644
index 0000000..484fcbf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerLimitAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-lower-limit}.
+ *
+ */
+public class ChartErrorLowerLimitAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-limit");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-lower-limit}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorLowerLimitAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-lower-limit}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-lower-limit}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-lower-limit} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerRangeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerRangeAttribute.java
new file mode 100644
index 0000000..e812e28
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorLowerRangeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-lower-range}.
+ *
+ */
+public class ChartErrorLowerRangeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-range");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-lower-range}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorLowerRangeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-lower-range}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-lower-range}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-lower-range} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorMarginAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorMarginAttribute.java
new file mode 100644
index 0000000..deb6586
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorMarginAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-margin}.
+ *
+ */
+public class ChartErrorMarginAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-margin");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-margin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorMarginAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-margin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-margin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-margin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorPercentageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorPercentageAttribute.java
new file mode 100644
index 0000000..7b27ac4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorPercentageAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-percentage}.
+ *
+ */
+public class ChartErrorPercentageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-percentage");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-percentage}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorPercentageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-percentage}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-percentage}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-percentage} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperIndicatorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperIndicatorAttribute.java
new file mode 100644
index 0000000..0b6b764
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperIndicatorAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-upper-indicator}.
+ *
+ */
+public class ChartErrorUpperIndicatorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-indicator");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-upper-indicator}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorUpperIndicatorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-upper-indicator}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-upper-indicator}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-upper-indicator} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperLimitAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperLimitAttribute.java
new file mode 100644
index 0000000..721f714
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperLimitAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-upper-limit}.
+ *
+ */
+public class ChartErrorUpperLimitAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-limit");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-upper-limit}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorUpperLimitAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-upper-limit}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-upper-limit}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-upper-limit} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperRangeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperRangeAttribute.java
new file mode 100644
index 0000000..22dec32
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartErrorUpperRangeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:error-upper-range}.
+ *
+ */
+public class ChartErrorUpperRangeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-range");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:error-upper-range}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorUpperRangeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:error-upper-range}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:error-upper-range}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:error-upper-range} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartGapWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartGapWidthAttribute.java
new file mode 100644
index 0000000..a306b43
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartGapWidthAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:gap-width}.
+ *
+ */
+public class ChartGapWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "gap-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:gap-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartGapWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:gap-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:gap-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:gap-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartGroupBarsPerAxisAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartGroupBarsPerAxisAttribute.java
new file mode 100644
index 0000000..582f0d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartGroupBarsPerAxisAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:group-bars-per-axis}.
+ *
+ */
+public class ChartGroupBarsPerAxisAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "group-bars-per-axis");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:group-bars-per-axis}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartGroupBarsPerAxisAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:group-bars-per-axis}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:group-bars-per-axis}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:group-bars-per-axis} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartHoleSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartHoleSizeAttribute.java
new file mode 100644
index 0000000..eec45be
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartHoleSizeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:hole-size}.
+ *
+ */
+public class ChartHoleSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "hole-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:hole-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartHoleSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:hole-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:hole-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:hole-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIncludeHiddenCellsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIncludeHiddenCellsAttribute.java
new file mode 100644
index 0000000..7319148
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIncludeHiddenCellsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:include-hidden-cells}.
+ *
+ */
+public class ChartIncludeHiddenCellsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "include-hidden-cells");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:include-hidden-cells}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartIncludeHiddenCellsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:include-hidden-cells}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:include-hidden-cells}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:include-hidden-cells} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartInterpolationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartInterpolationAttribute.java
new file mode 100644
index 0000000..20555da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartInterpolationAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:interpolation}.
+ *
+ */
+public class ChartInterpolationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "interpolation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:interpolation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartInterpolationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:interpolation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:interpolation}.
+	 */
+	public enum Value {
+		B_SPLINE("b-spline"), CUBIC_SPLINE("cubic-spline"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:interpolation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:interpolation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIntervalMajorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIntervalMajorAttribute.java
new file mode 100644
index 0000000..0434afd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIntervalMajorAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:interval-major}.
+ *
+ */
+public class ChartIntervalMajorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "interval-major");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:interval-major}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartIntervalMajorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:interval-major}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:interval-major}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:interval-major} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIntervalMinorDivisorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIntervalMinorDivisorAttribute.java
new file mode 100644
index 0000000..666d9d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartIntervalMinorDivisorAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:interval-minor-divisor}.
+ *
+ */
+public class ChartIntervalMinorDivisorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "interval-minor-divisor");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:interval-minor-divisor}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartIntervalMinorDivisorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:interval-minor-divisor}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:interval-minor-divisor}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:interval-minor-divisor} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartJapaneseCandleStickAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartJapaneseCandleStickAttribute.java
new file mode 100644
index 0000000..9357cd2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartJapaneseCandleStickAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:japanese-candle-stick}.
+ *
+ */
+public class ChartJapaneseCandleStickAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "japanese-candle-stick");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:japanese-candle-stick}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartJapaneseCandleStickAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:japanese-candle-stick}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:japanese-candle-stick}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:japanese-candle-stick} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelArrangementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelArrangementAttribute.java
new file mode 100644
index 0000000..0627a5f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelArrangementAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:label-arrangement}.
+ *
+ */
+public class ChartLabelArrangementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "label-arrangement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:label-arrangement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLabelArrangementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:label-arrangement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:label-arrangement}.
+	 */
+	public enum Value {
+		SIDE_BY_SIDE("side-by-side"), STAGGER_EVEN("stagger-even"), STAGGER_ODD("stagger-odd") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:label-arrangement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:label-arrangement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelCellAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelCellAddressAttribute.java
new file mode 100644
index 0000000..321ea5d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelCellAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:label-cell-address}.
+ *
+ */
+public class ChartLabelCellAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "label-cell-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:label-cell-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLabelCellAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:label-cell-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:label-cell-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:label-cell-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelPositionAttribute.java
new file mode 100644
index 0000000..751c7c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:label-position}.
+ *
+ */
+public class ChartLabelPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "label-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:label-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLabelPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:label-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:label-position}.
+	 */
+	public enum Value {
+		AVOID_OVERLAP("avoid-overlap"), BOTTOM("bottom"), BOTTOM_LEFT("bottom-left"), BOTTOM_RIGHT("bottom-right"), CENTER("center"), INSIDE("inside"), LEFT("left"), NEAR_ORIGIN("near-origin"), OUTSIDE("outside"), RIGHT("right"), TOP("top"), TOP_LEFT("top-left"), TOP_RIGHT("top-right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:label-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:label-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelPositionNegativeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelPositionNegativeAttribute.java
new file mode 100644
index 0000000..144f7c2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLabelPositionNegativeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:label-position-negative}.
+ *
+ */
+public class ChartLabelPositionNegativeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "label-position-negative");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:label-position-negative}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLabelPositionNegativeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:label-position-negative}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:label-position-negative}.
+	 */
+	public enum Value {
+		AVOID_OVERLAP("avoid-overlap"), BOTTOM("bottom"), BOTTOM_LEFT("bottom-left"), BOTTOM_RIGHT("bottom-right"), CENTER("center"), INSIDE("inside"), LEFT("left"), NEAR_ORIGIN("near-origin"), OUTSIDE("outside"), RIGHT("right"), TOP("top"), TOP_LEFT("top-left"), TOP_RIGHT("top-right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:label-position-negative}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:label-position-negative} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLegendAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLegendAlignAttribute.java
new file mode 100644
index 0000000..28e5f64
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLegendAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:legend-align}.
+ *
+ */
+public class ChartLegendAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "legend-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:legend-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLegendAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:legend-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:legend-align}.
+	 */
+	public enum Value {
+		CENTER("center"), END("end"), START("start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:legend-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:legend-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLegendPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLegendPositionAttribute.java
new file mode 100644
index 0000000..a2b116e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLegendPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:legend-position}.
+ *
+ */
+public class ChartLegendPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "legend-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:legend-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLegendPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:legend-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:legend-position}.
+	 */
+	public enum Value {
+		BOTTOM("bottom"), BOTTOM_END("bottom-end"), BOTTOM_START("bottom-start"), END("end"), START("start"), TOP("top"), TOP_END("top-end"), TOP_START("top-start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:legend-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:legend-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLinesAttribute.java
new file mode 100644
index 0000000..0c20a93
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLinesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:lines}.
+ *
+ */
+public class ChartLinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "lines");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:lines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:lines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:lines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:lines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLinkDataStyleToSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLinkDataStyleToSourceAttribute.java
new file mode 100644
index 0000000..5816e41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLinkDataStyleToSourceAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:link-data-style-to-source}.
+ *
+ */
+public class ChartLinkDataStyleToSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "link-data-style-to-source");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:link-data-style-to-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLinkDataStyleToSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:link-data-style-to-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:link-data-style-to-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:link-data-style-to-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLogarithmicAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLogarithmicAttribute.java
new file mode 100644
index 0000000..31bf383
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartLogarithmicAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:logarithmic}.
+ *
+ */
+public class ChartLogarithmicAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "logarithmic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:logarithmic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartLogarithmicAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:logarithmic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:logarithmic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:logarithmic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMaximumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMaximumAttribute.java
new file mode 100644
index 0000000..03d86ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMaximumAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:maximum}.
+ *
+ */
+public class ChartMaximumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "maximum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:maximum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartMaximumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:maximum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:maximum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:maximum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMeanValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMeanValueAttribute.java
new file mode 100644
index 0000000..bbeb651
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMeanValueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:mean-value}.
+ *
+ */
+public class ChartMeanValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "mean-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:mean-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartMeanValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:mean-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:mean-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:mean-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMinimumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMinimumAttribute.java
new file mode 100644
index 0000000..f7f647c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartMinimumAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:minimum}.
+ *
+ */
+public class ChartMinimumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "minimum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:minimum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartMinimumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:minimum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:minimum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:minimum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartNameAttribute.java
new file mode 100644
index 0000000..e5e422b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:name}.
+ *
+ */
+public class ChartNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartOriginAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartOriginAttribute.java
new file mode 100644
index 0000000..014fbe3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartOriginAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:origin}.
+ *
+ */
+public class ChartOriginAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "origin");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:origin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartOriginAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:origin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:origin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:origin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartOverlapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartOverlapAttribute.java
new file mode 100644
index 0000000..86229ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartOverlapAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:overlap}.
+ *
+ */
+public class ChartOverlapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "overlap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:overlap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartOverlapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:overlap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:overlap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:overlap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartPercentageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartPercentageAttribute.java
new file mode 100644
index 0000000..0a159f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartPercentageAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:percentage}.
+ *
+ */
+public class ChartPercentageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "percentage");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:percentage}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartPercentageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:percentage}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:percentage}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:percentage} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartPieOffsetAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartPieOffsetAttribute.java
new file mode 100644
index 0000000..9d1533f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartPieOffsetAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:pie-offset}.
+ *
+ */
+public class ChartPieOffsetAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "pie-offset");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:pie-offset}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartPieOffsetAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:pie-offset}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:pie-offset}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:pie-offset} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRegressionTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRegressionTypeAttribute.java
new file mode 100644
index 0000000..1459336
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRegressionTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:regression-type}.
+ *
+ */
+public class ChartRegressionTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "regression-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:regression-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartRegressionTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:regression-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:regression-type}.
+	 */
+	public enum Value {
+		EXPONENTIAL("exponential"), LINEAR("linear"), LOGARITHMIC("logarithmic"), NONE("none"), POWER("power") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:regression-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:regression-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRepeatedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRepeatedAttribute.java
new file mode 100644
index 0000000..ca9c865
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRepeatedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:repeated}.
+ *
+ */
+public class ChartRepeatedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "repeated");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:repeated}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartRepeatedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:repeated}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:repeated}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:repeated} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartReverseDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartReverseDirectionAttribute.java
new file mode 100644
index 0000000..3c50378
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartReverseDirectionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:reverse-direction}.
+ *
+ */
+public class ChartReverseDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "reverse-direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:reverse-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartReverseDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:reverse-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:reverse-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:reverse-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRightAngledAxesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRightAngledAxesAttribute.java
new file mode 100644
index 0000000..c1fb793
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRightAngledAxesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:right-angled-axes}.
+ *
+ */
+public class ChartRightAngledAxesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "right-angled-axes");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:right-angled-axes}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartRightAngledAxesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:right-angled-axes}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:right-angled-axes}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:right-angled-axes} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRowMappingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRowMappingAttribute.java
new file mode 100644
index 0000000..c09119a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartRowMappingAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:row-mapping}.
+ *
+ */
+public class ChartRowMappingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "row-mapping");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:row-mapping}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartRowMappingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:row-mapping}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:row-mapping}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:row-mapping} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartScaleTextAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartScaleTextAttribute.java
new file mode 100644
index 0000000..87fe1d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartScaleTextAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:scale-text}.
+ *
+ */
+public class ChartScaleTextAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "scale-text");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:scale-text}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartScaleTextAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:scale-text}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:scale-text}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:scale-text} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSeriesSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSeriesSourceAttribute.java
new file mode 100644
index 0000000..3797c5d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSeriesSourceAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:series-source}.
+ *
+ */
+public class ChartSeriesSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "series-source");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:series-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSeriesSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:series-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:series-source}.
+	 */
+	public enum Value {
+		COLUMNS("columns"), ROWS("rows") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:series-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:series-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSolidTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSolidTypeAttribute.java
new file mode 100644
index 0000000..5377fe0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSolidTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:solid-type}.
+ *
+ */
+public class ChartSolidTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "solid-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:solid-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSolidTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:solid-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:solid-type}.
+	 */
+	public enum Value {
+		CONE("cone"), CUBOID("cuboid"), CYLINDER("cylinder"), PYRAMID("pyramid") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:solid-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:solid-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSortByXValuesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSortByXValuesAttribute.java
new file mode 100644
index 0000000..9f3c3a8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSortByXValuesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:sort-by-x-values}.
+ *
+ */
+public class ChartSortByXValuesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "sort-by-x-values");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:sort-by-x-values}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSortByXValuesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:sort-by-x-values}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:sort-by-x-values}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:sort-by-x-values} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSplineOrderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSplineOrderAttribute.java
new file mode 100644
index 0000000..03b1345
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSplineOrderAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:spline-order}.
+ *
+ */
+public class ChartSplineOrderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "spline-order");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:spline-order}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSplineOrderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:spline-order}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:spline-order}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:spline-order} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSplineResolutionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSplineResolutionAttribute.java
new file mode 100644
index 0000000..2ae5762
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSplineResolutionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:spline-resolution}.
+ *
+ */
+public class ChartSplineResolutionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "spline-resolution");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:spline-resolution}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSplineResolutionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:spline-resolution}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:spline-resolution}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:spline-resolution} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartStackedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartStackedAttribute.java
new file mode 100644
index 0000000..ad22149
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartStackedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:stacked}.
+ *
+ */
+public class ChartStackedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "stacked");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:stacked}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartStackedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:stacked}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:stacked}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:stacked} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartStyleNameAttribute.java
new file mode 100644
index 0000000..d9e3261
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:style-name}.
+ *
+ */
+public class ChartStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolHeightAttribute.java
new file mode 100644
index 0000000..f907e55
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:symbol-height}.
+ *
+ */
+public class ChartSymbolHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "symbol-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:symbol-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSymbolHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:symbol-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:symbol-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:symbol-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolNameAttribute.java
new file mode 100644
index 0000000..7f184f5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolNameAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:symbol-name}.
+ *
+ */
+public class ChartSymbolNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "symbol-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:symbol-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSymbolNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:symbol-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:symbol-name}.
+	 */
+	public enum Value {
+		ARROW_DOWN("arrow-down"), ARROW_LEFT("arrow-left"), ARROW_RIGHT("arrow-right"), ARROW_UP("arrow-up"), ASTERISK("asterisk"), BOW_TIE("bow-tie"), CIRCLE("circle"), DIAMOND("diamond"), HORIZONTAL_BAR("horizontal-bar"), HOURGLASS("hourglass"), PLUS("plus"), SQUARE("square"), STAR("star"), VERTICAL_BAR("vertical-bar"), x("x") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:symbol-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:symbol-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolTypeAttribute.java
new file mode 100644
index 0000000..f163239
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:symbol-type}.
+ *
+ */
+public class ChartSymbolTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "symbol-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:symbol-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSymbolTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:symbol-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:symbol-type}.
+	 */
+	public enum Value {
+		AUTOMATIC("automatic"), IMAGE("image"), NAMED_SYMBOL("named-symbol"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:symbol-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:symbol-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolWidthAttribute.java
new file mode 100644
index 0000000..200650b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartSymbolWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:symbol-width}.
+ *
+ */
+public class ChartSymbolWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "symbol-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:symbol-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartSymbolWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:symbol-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:symbol-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:symbol-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTextOverlapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTextOverlapAttribute.java
new file mode 100644
index 0000000..a568953
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTextOverlapAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:text-overlap}.
+ *
+ */
+public class ChartTextOverlapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "text-overlap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:text-overlap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTextOverlapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:text-overlap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:text-overlap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:text-overlap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartThreeDimensionalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartThreeDimensionalAttribute.java
new file mode 100644
index 0000000..2ca5134
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartThreeDimensionalAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:three-dimensional}.
+ *
+ */
+public class ChartThreeDimensionalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "three-dimensional");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:three-dimensional}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartThreeDimensionalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:three-dimensional}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:three-dimensional}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:three-dimensional} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarkPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarkPositionAttribute.java
new file mode 100644
index 0000000..1e0d50c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarkPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:tick-mark-position}.
+ *
+ */
+public class ChartTickMarkPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "tick-mark-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:tick-mark-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTickMarkPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:tick-mark-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:tick-mark-position}.
+	 */
+	public enum Value {
+		AT_AXIS("at-axis"), AT_LABELS("at-labels"), AT_LABELS_AND_AXIS("at-labels-and-axis") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:tick-mark-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:tick-mark-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMajorInnerAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMajorInnerAttribute.java
new file mode 100644
index 0000000..4607001
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMajorInnerAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:tick-marks-major-inner}.
+ *
+ */
+public class ChartTickMarksMajorInnerAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-major-inner");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:tick-marks-major-inner}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTickMarksMajorInnerAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:tick-marks-major-inner}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:tick-marks-major-inner}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:tick-marks-major-inner} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMajorOuterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMajorOuterAttribute.java
new file mode 100644
index 0000000..636244d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMajorOuterAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:tick-marks-major-outer}.
+ *
+ */
+public class ChartTickMarksMajorOuterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-major-outer");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:tick-marks-major-outer}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTickMarksMajorOuterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:tick-marks-major-outer}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:tick-marks-major-outer}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:tick-marks-major-outer} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMinorInnerAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMinorInnerAttribute.java
new file mode 100644
index 0000000..1c0874d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMinorInnerAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:tick-marks-minor-inner}.
+ *
+ */
+public class ChartTickMarksMinorInnerAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-minor-inner");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:tick-marks-minor-inner}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTickMarksMinorInnerAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:tick-marks-minor-inner}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:tick-marks-minor-inner}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:tick-marks-minor-inner} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMinorOuterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMinorOuterAttribute.java
new file mode 100644
index 0000000..b5b1e26
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTickMarksMinorOuterAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:tick-marks-minor-outer}.
+ *
+ */
+public class ChartTickMarksMinorOuterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-minor-outer");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:tick-marks-minor-outer}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTickMarksMinorOuterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:tick-marks-minor-outer}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:tick-marks-minor-outer}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:tick-marks-minor-outer} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTreatEmptyCellsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTreatEmptyCellsAttribute.java
new file mode 100644
index 0000000..812f29f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartTreatEmptyCellsAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:treat-empty-cells}.
+ *
+ */
+public class ChartTreatEmptyCellsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "treat-empty-cells");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:treat-empty-cells}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartTreatEmptyCellsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:treat-empty-cells}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute chart:treat-empty-cells}.
+	 */
+	public enum Value {
+		IGNORE("ignore"), LEAVE_GAP("leave-gap"), USE_ZERO("use-zero") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:treat-empty-cells}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:treat-empty-cells} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartValuesCellRangeAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartValuesCellRangeAddressAttribute.java
new file mode 100644
index 0000000..0f2d121
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartValuesCellRangeAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:values-cell-range-address}.
+ *
+ */
+public class ChartValuesCellRangeAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "values-cell-range-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:values-cell-range-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartValuesCellRangeAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:values-cell-range-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:values-cell-range-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:values-cell-range-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartVerticalAttribute.java
new file mode 100644
index 0000000..6ab8ff5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartVerticalAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:vertical}.
+ *
+ */
+public class ChartVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "vertical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartVisibleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartVisibleAttribute.java
new file mode 100644
index 0000000..db6dec5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/chart/ChartVisibleAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.chart;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute chart:visible}.
+ *
+ */
+public class ChartVisibleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "visible");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute chart:visible}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ChartVisibleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute chart:visible}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute chart:visible}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute chart:visible} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/config/ConfigNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/config/ConfigNameAttribute.java
new file mode 100644
index 0000000..546601d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/config/ConfigNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.config;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute config:name}.
+ *
+ */
+public class ConfigNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute config:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ConfigNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute config:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute config:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute config:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/config/ConfigTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/config/ConfigTypeAttribute.java
new file mode 100644
index 0000000..f0dd3f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/config/ConfigTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.config;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute config:type}.
+ *
+ */
+public class ConfigTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute config:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ConfigTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute config:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute config:type}.
+	 */
+	public enum Value {
+		BASE64BINARY("base64Binary"), BOOLEAN("boolean"), DATETIME("datetime"), DOUBLE("double"), INT("int"), LONG("long"), SHORT("short"), STRING("string") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute config:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute config:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAdditionalColumnStatementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAdditionalColumnStatementAttribute.java
new file mode 100644
index 0000000..66306e1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAdditionalColumnStatementAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:additional-column-statement}.
+ *
+ */
+public class DbAdditionalColumnStatementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "additional-column-statement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:additional-column-statement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbAdditionalColumnStatementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:additional-column-statement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:additional-column-statement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:additional-column-statement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAppendTableAliasNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAppendTableAliasNameAttribute.java
new file mode 100644
index 0000000..fab2205
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAppendTableAliasNameAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:append-table-alias-name}.
+ *
+ */
+public class DbAppendTableAliasNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "append-table-alias-name");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:append-table-alias-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbAppendTableAliasNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:append-table-alias-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:append-table-alias-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:append-table-alias-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbApplyCommandAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbApplyCommandAttribute.java
new file mode 100644
index 0000000..8573a04
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbApplyCommandAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:apply-command}.
+ *
+ */
+public class DbApplyCommandAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "apply-command");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:apply-command}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbApplyCommandAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:apply-command}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:apply-command}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:apply-command} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAsTemplateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAsTemplateAttribute.java
new file mode 100644
index 0000000..ac35135
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbAsTemplateAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:as-template}.
+ *
+ */
+public class DbAsTemplateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "as-template");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:as-template}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbAsTemplateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:as-template}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:as-template}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:as-template} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbBaseDnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbBaseDnAttribute.java
new file mode 100644
index 0000000..9a7850a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbBaseDnAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:base-dn}.
+ *
+ */
+public class DbBaseDnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "base-dn");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:base-dn}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbBaseDnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:base-dn}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:base-dn}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:base-dn} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbBooleanComparisonModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbBooleanComparisonModeAttribute.java
new file mode 100644
index 0000000..a538541
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbBooleanComparisonModeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:boolean-comparison-mode}.
+ *
+ */
+public class DbBooleanComparisonModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "boolean-comparison-mode");
+	public static final String DEFAULT_VALUE = "equal-integer";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:boolean-comparison-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbBooleanComparisonModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:boolean-comparison-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:boolean-comparison-mode}.
+	 */
+	public enum Value {
+		EQUAL_BOOLEAN("equal-boolean"), EQUAL_INTEGER("equal-integer"), EQUAL_USE_ONLY_ZERO("equal-use-only-zero"), IS_BOOLEAN("is-boolean") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:boolean-comparison-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:boolean-comparison-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbCatalogNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbCatalogNameAttribute.java
new file mode 100644
index 0000000..aa837b9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbCatalogNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:catalog-name}.
+ *
+ */
+public class DbCatalogNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "catalog-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:catalog-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbCatalogNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:catalog-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:catalog-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:catalog-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbCommandAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbCommandAttribute.java
new file mode 100644
index 0000000..86d51ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbCommandAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:command}.
+ *
+ */
+public class DbCommandAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "command");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:command}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbCommandAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:command}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:command}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:command} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingIsListAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingIsListAttribute.java
new file mode 100644
index 0000000..0c79087
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingIsListAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:data-source-setting-is-list}.
+ *
+ */
+public class DbDataSourceSettingIsListAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source-setting-is-list");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:data-source-setting-is-list}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceSettingIsListAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:data-source-setting-is-list}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:data-source-setting-is-list}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:data-source-setting-is-list} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingNameAttribute.java
new file mode 100644
index 0000000..ee5cf80
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:data-source-setting-name}.
+ *
+ */
+public class DbDataSourceSettingNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source-setting-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:data-source-setting-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceSettingNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:data-source-setting-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:data-source-setting-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:data-source-setting-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingTypeAttribute.java
new file mode 100644
index 0000000..34279fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataSourceSettingTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:data-source-setting-type}.
+ *
+ */
+public class DbDataSourceSettingTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source-setting-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:data-source-setting-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceSettingTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:data-source-setting-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:data-source-setting-type}.
+	 */
+	public enum Value {
+		BOOLEAN("boolean"), DOUBLE("double"), INT("int"), LONG("long"), SHORT("short"), STRING("string") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:data-source-setting-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:data-source-setting-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataTypeAttribute.java
new file mode 100644
index 0000000..233f700
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDataTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:data-type}.
+ *
+ */
+public class DbDataTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:data-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDataTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:data-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:data-type}.
+	 */
+	public enum Value {
+		ARRAY("array"), BIGINT("bigint"), BINARY("binary"), BIT("bit"), BLOB("blob"), BOOLEAN("boolean"), CHAR("char"), CLOB("clob"), DATE("date"), DECIMAL("decimal"), DISTINCT("distinct"), DOUBLE("double"), FLOAT("float"), INTEGER("integer"), LONGVARBINARY("longvarbinary"), LONGVARCHAR("longvarchar"), NUMERIC("numeric"), OBJECT("object"), OTHER("other"), REAL("real"), REF("ref"), SMALLINT("smallint"), SQLNULL("sqlnull"), STRUCT("struct"), TIME("time"), TIMESTMP("timestmp"), TINYINT("tinyint"), VARBINARY("varbinary"), VARCHAR("varchar") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:data-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:data-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDatabaseNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDatabaseNameAttribute.java
new file mode 100644
index 0000000..a8a628f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDatabaseNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:database-name}.
+ *
+ */
+public class DbDatabaseNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "database-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:database-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDatabaseNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:database-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:database-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:database-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDecimalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDecimalAttribute.java
new file mode 100644
index 0000000..54fcfcd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDecimalAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:decimal}.
+ *
+ */
+public class DbDecimalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "decimal");
+	public static final String DEFAULT_VALUE = ".";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:decimal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDecimalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:decimal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:decimal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:decimal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDefaultCellStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDefaultCellStyleNameAttribute.java
new file mode 100644
index 0000000..02624f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDefaultCellStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:default-cell-style-name}.
+ *
+ */
+public class DbDefaultCellStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "default-cell-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:default-cell-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDefaultCellStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:default-cell-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:default-cell-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:default-cell-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDefaultRowStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDefaultRowStyleNameAttribute.java
new file mode 100644
index 0000000..d4ef50c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDefaultRowStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:default-row-style-name}.
+ *
+ */
+public class DbDefaultRowStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "default-row-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:default-row-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDefaultRowStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:default-row-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:default-row-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:default-row-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDeleteRuleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDeleteRuleAttribute.java
new file mode 100644
index 0000000..73c6d62
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDeleteRuleAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:delete-rule}.
+ *
+ */
+public class DbDeleteRuleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "delete-rule");
+	public static final String DEFAULT_VALUE = "no-action";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:delete-rule}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDeleteRuleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:delete-rule}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:delete-rule}.
+	 */
+	public enum Value {
+		CASCADE("cascade"), NO_ACTION("no-action"), RESTRICT("restrict"), SET_DEFAULT("set-default"), SET_NULL("set-null") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:delete-rule}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:delete-rule} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDescriptionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDescriptionAttribute.java
new file mode 100644
index 0000000..0b84bd4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbDescriptionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:description}.
+ *
+ */
+public class DbDescriptionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "description");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:description}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbDescriptionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:description}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:description}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:description} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEnableSql92CheckAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEnableSql92CheckAttribute.java
new file mode 100644
index 0000000..cb442b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEnableSql92CheckAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:enable-sql92-check}.
+ *
+ */
+public class DbEnableSql92CheckAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "enable-sql92-check");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:enable-sql92-check}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbEnableSql92CheckAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:enable-sql92-check}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:enable-sql92-check}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:enable-sql92-check} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEncodingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEncodingAttribute.java
new file mode 100644
index 0000000..97c4547
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEncodingAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:encoding}.
+ *
+ */
+public class DbEncodingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "encoding");
+	public static final String DEFAULT_VALUE = "utf-8";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:encoding}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbEncodingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:encoding}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:encoding}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:encoding} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEscapeProcessingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEscapeProcessingAttribute.java
new file mode 100644
index 0000000..8832b57
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbEscapeProcessingAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:escape-processing}.
+ *
+ */
+public class DbEscapeProcessingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "escape-processing");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:escape-processing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbEscapeProcessingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:escape-processing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:escape-processing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:escape-processing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbExtensionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbExtensionAttribute.java
new file mode 100644
index 0000000..851b718
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbExtensionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:extension}.
+ *
+ */
+public class DbExtensionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "extension");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:extension}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbExtensionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:extension}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:extension}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:extension} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbFieldAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbFieldAttribute.java
new file mode 100644
index 0000000..9d7f1a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbFieldAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:field}.
+ *
+ */
+public class DbFieldAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "field");
+	public static final String DEFAULT_VALUE = ";";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:field}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbFieldAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:field}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:field}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:field} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbHostnameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbHostnameAttribute.java
new file mode 100644
index 0000000..01a3023
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbHostnameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:hostname}.
+ *
+ */
+public class DbHostnameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "hostname");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:hostname}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbHostnameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:hostname}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:hostname}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:hostname} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIgnoreDriverPrivilegesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIgnoreDriverPrivilegesAttribute.java
new file mode 100644
index 0000000..64b282e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIgnoreDriverPrivilegesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:ignore-driver-privileges}.
+ *
+ */
+public class DbIgnoreDriverPrivilegesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "ignore-driver-privileges");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:ignore-driver-privileges}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIgnoreDriverPrivilegesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:ignore-driver-privileges}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:ignore-driver-privileges}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:ignore-driver-privileges} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsAscendingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsAscendingAttribute.java
new file mode 100644
index 0000000..9c5a4aa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsAscendingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-ascending}.
+ *
+ */
+public class DbIsAscendingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-ascending");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-ascending}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsAscendingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-ascending}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-ascending}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-ascending} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsAutoincrementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsAutoincrementAttribute.java
new file mode 100644
index 0000000..45cabae
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsAutoincrementAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-autoincrement}.
+ *
+ */
+public class DbIsAutoincrementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-autoincrement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-autoincrement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsAutoincrementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-autoincrement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-autoincrement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-autoincrement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsClusteredAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsClusteredAttribute.java
new file mode 100644
index 0000000..771162b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsClusteredAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-clustered}.
+ *
+ */
+public class DbIsClusteredAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-clustered");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-clustered}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsClusteredAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-clustered}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-clustered}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-clustered} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsEmptyAllowedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsEmptyAllowedAttribute.java
new file mode 100644
index 0000000..6fdb26a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsEmptyAllowedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-empty-allowed}.
+ *
+ */
+public class DbIsEmptyAllowedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-empty-allowed");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-empty-allowed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsEmptyAllowedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-empty-allowed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-empty-allowed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-empty-allowed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsFirstRowHeaderLineAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsFirstRowHeaderLineAttribute.java
new file mode 100644
index 0000000..efe7d52
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsFirstRowHeaderLineAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-first-row-header-line}.
+ *
+ */
+public class DbIsFirstRowHeaderLineAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-first-row-header-line");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-first-row-header-line}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsFirstRowHeaderLineAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-first-row-header-line}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-first-row-header-line}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-first-row-header-line} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsNullableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsNullableAttribute.java
new file mode 100644
index 0000000..7cd744b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsNullableAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-nullable}.
+ *
+ */
+public class DbIsNullableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-nullable");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-nullable}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsNullableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-nullable}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:is-nullable}.
+	 */
+	public enum Value {
+		NO_NULLS("no-nulls"), NULLABLE("nullable") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-nullable}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-nullable} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsPasswordRequiredAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsPasswordRequiredAttribute.java
new file mode 100644
index 0000000..5a08e3e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsPasswordRequiredAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-password-required}.
+ *
+ */
+public class DbIsPasswordRequiredAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-password-required");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-password-required}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsPasswordRequiredAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-password-required}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-password-required}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-password-required} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsTableNameLengthLimitedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsTableNameLengthLimitedAttribute.java
new file mode 100644
index 0000000..1c793ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsTableNameLengthLimitedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-table-name-length-limited}.
+ *
+ */
+public class DbIsTableNameLengthLimitedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-table-name-length-limited");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-table-name-length-limited}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsTableNameLengthLimitedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-table-name-length-limited}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-table-name-length-limited}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-table-name-length-limited} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsUniqueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsUniqueAttribute.java
new file mode 100644
index 0000000..ac31408
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbIsUniqueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:is-unique}.
+ *
+ */
+public class DbIsUniqueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "is-unique");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:is-unique}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbIsUniqueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:is-unique}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:is-unique}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:is-unique} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbLocalSocketAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbLocalSocketAttribute.java
new file mode 100644
index 0000000..45ab36a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbLocalSocketAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:local-socket}.
+ *
+ */
+public class DbLocalSocketAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "local-socket");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:local-socket}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbLocalSocketAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:local-socket}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:local-socket}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:local-socket} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbLoginTimeoutAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbLoginTimeoutAttribute.java
new file mode 100644
index 0000000..2f77cfc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbLoginTimeoutAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:login-timeout}.
+ *
+ */
+public class DbLoginTimeoutAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "login-timeout");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:login-timeout}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbLoginTimeoutAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:login-timeout}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:login-timeout}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:login-timeout} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbMaxRowCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbMaxRowCountAttribute.java
new file mode 100644
index 0000000..fc29d84
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbMaxRowCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:max-row-count}.
+ *
+ */
+public class DbMaxRowCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "max-row-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:max-row-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbMaxRowCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:max-row-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:max-row-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:max-row-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbMediaTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbMediaTypeAttribute.java
new file mode 100644
index 0000000..d393cc9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbMediaTypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:media-type}.
+ *
+ */
+public class DbMediaTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "media-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:media-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbMediaTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:media-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:media-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:media-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbNameAttribute.java
new file mode 100644
index 0000000..f43c89d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:name}.
+ *
+ */
+public class DbNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbParameterNameSubstitutionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbParameterNameSubstitutionAttribute.java
new file mode 100644
index 0000000..1e82114
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbParameterNameSubstitutionAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:parameter-name-substitution}.
+ *
+ */
+public class DbParameterNameSubstitutionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "parameter-name-substitution");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:parameter-name-substitution}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbParameterNameSubstitutionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:parameter-name-substitution}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:parameter-name-substitution}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:parameter-name-substitution} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbPortAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbPortAttribute.java
new file mode 100644
index 0000000..6a34912
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbPortAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:port}.
+ *
+ */
+public class DbPortAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "port");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:port}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbPortAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:port}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:port}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:port} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbPrecisionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbPrecisionAttribute.java
new file mode 100644
index 0000000..0136eea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbPrecisionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:precision}.
+ *
+ */
+public class DbPrecisionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "precision");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:precision}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbPrecisionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:precision}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:precision}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:precision} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbReferencedTableNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbReferencedTableNameAttribute.java
new file mode 100644
index 0000000..800b99a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbReferencedTableNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:referenced-table-name}.
+ *
+ */
+public class DbReferencedTableNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "referenced-table-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:referenced-table-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbReferencedTableNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:referenced-table-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:referenced-table-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:referenced-table-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbRelatedColumnNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbRelatedColumnNameAttribute.java
new file mode 100644
index 0000000..1a5bc0d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbRelatedColumnNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:related-column-name}.
+ *
+ */
+public class DbRelatedColumnNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "related-column-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:related-column-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbRelatedColumnNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:related-column-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:related-column-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:related-column-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbRowRetrievingStatementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbRowRetrievingStatementAttribute.java
new file mode 100644
index 0000000..ca05e1e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbRowRetrievingStatementAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:row-retrieving-statement}.
+ *
+ */
+public class DbRowRetrievingStatementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "row-retrieving-statement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:row-retrieving-statement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbRowRetrievingStatementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:row-retrieving-statement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:row-retrieving-statement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:row-retrieving-statement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbScaleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbScaleAttribute.java
new file mode 100644
index 0000000..b2007ba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbScaleAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:scale}.
+ *
+ */
+public class DbScaleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "scale");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:scale}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbScaleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:scale}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:scale}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:scale} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSchemaNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSchemaNameAttribute.java
new file mode 100644
index 0000000..f8b816c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSchemaNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:schema-name}.
+ *
+ */
+public class DbSchemaNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "schema-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:schema-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbSchemaNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:schema-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:schema-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:schema-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbShowDeletedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbShowDeletedAttribute.java
new file mode 100644
index 0000000..6d3199b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbShowDeletedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:show-deleted}.
+ *
+ */
+public class DbShowDeletedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "show-deleted");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:show-deleted}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbShowDeletedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:show-deleted}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:show-deleted}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:show-deleted} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbStringAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbStringAttribute.java
new file mode 100644
index 0000000..a6da6bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbStringAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:string}.
+ *
+ */
+public class DbStringAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "string");
+	public static final String DEFAULT_VALUE = ".";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:string}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbStringAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:string}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:string}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:string} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbStyleNameAttribute.java
new file mode 100644
index 0000000..e1415f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:style-name}.
+ *
+ */
+public class DbStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSuppressVersionColumnsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSuppressVersionColumnsAttribute.java
new file mode 100644
index 0000000..26f3b7a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSuppressVersionColumnsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:suppress-version-columns}.
+ *
+ */
+public class DbSuppressVersionColumnsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "suppress-version-columns");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:suppress-version-columns}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbSuppressVersionColumnsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:suppress-version-columns}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:suppress-version-columns}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:suppress-version-columns} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSystemDriverSettingsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSystemDriverSettingsAttribute.java
new file mode 100644
index 0000000..29a05e8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbSystemDriverSettingsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:system-driver-settings}.
+ *
+ */
+public class DbSystemDriverSettingsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "system-driver-settings");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:system-driver-settings}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbSystemDriverSettingsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:system-driver-settings}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:system-driver-settings}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:system-driver-settings} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbThousandAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbThousandAttribute.java
new file mode 100644
index 0000000..35272ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbThousandAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:thousand}.
+ *
+ */
+public class DbThousandAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "thousand");
+	public static final String DEFAULT_VALUE = ",";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:thousand}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbThousandAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:thousand}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:thousand}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:thousand} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTitleAttribute.java
new file mode 100644
index 0000000..ef59b4f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:title}.
+ *
+ */
+public class DbTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTypeAttribute.java
new file mode 100644
index 0000000..ea340fc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:type}.
+ *
+ */
+public class DbTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:type}.
+	 */
+	public enum Value {
+		FOREIGN("foreign"), PRIMARY("primary"), UNIQUE("unique") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTypeNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTypeNameAttribute.java
new file mode 100644
index 0000000..9498f9d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbTypeNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:type-name}.
+ *
+ */
+public class DbTypeNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "type-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:type-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbTypeNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:type-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:type-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:type-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUpdateRuleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUpdateRuleAttribute.java
new file mode 100644
index 0000000..8e8cc31
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUpdateRuleAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:update-rule}.
+ *
+ */
+public class DbUpdateRuleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "update-rule");
+	public static final String DEFAULT_VALUE = "no-action";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:update-rule}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbUpdateRuleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:update-rule}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute db:update-rule}.
+	 */
+	public enum Value {
+		CASCADE("cascade"), NO_ACTION("no-action"), RESTRICT("restrict"), SET_DEFAULT("set-default"), SET_NULL("set-null") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:update-rule}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:update-rule} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUseCatalogAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUseCatalogAttribute.java
new file mode 100644
index 0000000..8793d03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUseCatalogAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:use-catalog}.
+ *
+ */
+public class DbUseCatalogAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "use-catalog");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:use-catalog}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbUseCatalogAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:use-catalog}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:use-catalog}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:use-catalog} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUseSystemUserAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUseSystemUserAttribute.java
new file mode 100644
index 0000000..eaca5d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUseSystemUserAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:use-system-user}.
+ *
+ */
+public class DbUseSystemUserAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "use-system-user");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:use-system-user}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbUseSystemUserAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:use-system-user}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:use-system-user}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:use-system-user} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUserNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUserNameAttribute.java
new file mode 100644
index 0000000..6f007e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbUserNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:user-name}.
+ *
+ */
+public class DbUserNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "user-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:user-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbUserNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:user-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:user-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:user-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbVisibleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbVisibleAttribute.java
new file mode 100644
index 0000000..4b15329
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/db/DbVisibleAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.db;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute db:visible}.
+ *
+ */
+public class DbVisibleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DB, "visible");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute db:visible}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DbVisibleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute db:visible}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute db:visible}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute db:visible} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dAmbientColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dAmbientColorAttribute.java
new file mode 100644
index 0000000..5d6954e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dAmbientColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:ambient-color}.
+ *
+ */
+public class Dr3dAmbientColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "ambient-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:ambient-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dAmbientColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:ambient-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:ambient-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:ambient-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dBackScaleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dBackScaleAttribute.java
new file mode 100644
index 0000000..92c94df
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dBackScaleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:back-scale}.
+ *
+ */
+public class Dr3dBackScaleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "back-scale");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:back-scale}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dBackScaleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:back-scale}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:back-scale}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:back-scale} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dBackfaceCullingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dBackfaceCullingAttribute.java
new file mode 100644
index 0000000..f738a02
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dBackfaceCullingAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:backface-culling}.
+ *
+ */
+public class Dr3dBackfaceCullingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "backface-culling");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:backface-culling}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dBackfaceCullingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:backface-culling}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:backface-culling}.
+	 */
+	public enum Value {
+		DISABLED("disabled"), ENABLED("enabled") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:backface-culling}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:backface-culling} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCenterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCenterAttribute.java
new file mode 100644
index 0000000..84509d1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCenterAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:center}.
+ *
+ */
+public class Dr3dCenterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "center");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:center}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dCenterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:center}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:center}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:center} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCloseBackAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCloseBackAttribute.java
new file mode 100644
index 0000000..5819b98
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCloseBackAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:close-back}.
+ *
+ */
+public class Dr3dCloseBackAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "close-back");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:close-back}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dCloseBackAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:close-back}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:close-back}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:close-back} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCloseFrontAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCloseFrontAttribute.java
new file mode 100644
index 0000000..0976eee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dCloseFrontAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:close-front}.
+ *
+ */
+public class Dr3dCloseFrontAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "close-front");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:close-front}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dCloseFrontAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:close-front}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:close-front}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:close-front} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDepthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDepthAttribute.java
new file mode 100644
index 0000000..3cda5e5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDepthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:depth}.
+ *
+ */
+public class Dr3dDepthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "depth");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:depth}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dDepthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:depth}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:depth}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:depth} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDiffuseColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDiffuseColorAttribute.java
new file mode 100644
index 0000000..e2be3f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDiffuseColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:diffuse-color}.
+ *
+ */
+public class Dr3dDiffuseColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "diffuse-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:diffuse-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dDiffuseColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:diffuse-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:diffuse-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:diffuse-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDirectionAttribute.java
new file mode 100644
index 0000000..7801893
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDirectionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:direction}.
+ *
+ */
+public class Dr3dDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDistanceAttribute.java
new file mode 100644
index 0000000..1da6537
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dDistanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:distance}.
+ *
+ */
+public class Dr3dDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "distance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEdgeRoundingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEdgeRoundingAttribute.java
new file mode 100644
index 0000000..ca46d92
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEdgeRoundingAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:edge-rounding}.
+ *
+ */
+public class Dr3dEdgeRoundingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "edge-rounding");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:edge-rounding}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dEdgeRoundingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:edge-rounding}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:edge-rounding}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:edge-rounding} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEdgeRoundingModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEdgeRoundingModeAttribute.java
new file mode 100644
index 0000000..b5ea4e9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEdgeRoundingModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:edge-rounding-mode}.
+ *
+ */
+public class Dr3dEdgeRoundingModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "edge-rounding-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:edge-rounding-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dEdgeRoundingModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:edge-rounding-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:edge-rounding-mode}.
+	 */
+	public enum Value {
+		ATTRACTIVE("attractive"), CORRECT("correct") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:edge-rounding-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:edge-rounding-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEmissiveColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEmissiveColorAttribute.java
new file mode 100644
index 0000000..5017071
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEmissiveColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:emissive-color}.
+ *
+ */
+public class Dr3dEmissiveColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "emissive-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:emissive-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dEmissiveColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:emissive-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:emissive-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:emissive-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEnabledAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEnabledAttribute.java
new file mode 100644
index 0000000..49b6d9a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEnabledAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:enabled}.
+ *
+ */
+public class Dr3dEnabledAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "enabled");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:enabled}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dEnabledAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:enabled}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:enabled}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:enabled} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEndAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEndAngleAttribute.java
new file mode 100644
index 0000000..c7f8450
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dEndAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:end-angle}.
+ *
+ */
+public class Dr3dEndAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "end-angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:end-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dEndAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:end-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:end-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:end-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dFocalLengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dFocalLengthAttribute.java
new file mode 100644
index 0000000..b82eb4a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dFocalLengthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:focal-length}.
+ *
+ */
+public class Dr3dFocalLengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "focal-length");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:focal-length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dFocalLengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:focal-length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:focal-length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:focal-length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dHorizontalSegmentsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dHorizontalSegmentsAttribute.java
new file mode 100644
index 0000000..2ca7a80
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dHorizontalSegmentsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:horizontal-segments}.
+ *
+ */
+public class Dr3dHorizontalSegmentsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "horizontal-segments");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:horizontal-segments}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dHorizontalSegmentsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:horizontal-segments}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:horizontal-segments}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:horizontal-segments} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dLightingModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dLightingModeAttribute.java
new file mode 100644
index 0000000..4011d3c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dLightingModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:lighting-mode}.
+ *
+ */
+public class Dr3dLightingModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "lighting-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:lighting-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dLightingModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:lighting-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:lighting-mode}.
+	 */
+	public enum Value {
+		DOUBLE_SIDED("double-sided"), FALSE("false"), STANDARD("standard"), TRUE("true") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:lighting-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:lighting-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dMaxEdgeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dMaxEdgeAttribute.java
new file mode 100644
index 0000000..49e94bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dMaxEdgeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:max-edge}.
+ *
+ */
+public class Dr3dMaxEdgeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "max-edge");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:max-edge}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dMaxEdgeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:max-edge}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:max-edge}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:max-edge} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dMinEdgeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dMinEdgeAttribute.java
new file mode 100644
index 0000000..0789c30
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dMinEdgeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:min-edge}.
+ *
+ */
+public class Dr3dMinEdgeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "min-edge");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:min-edge}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dMinEdgeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:min-edge}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:min-edge}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:min-edge} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dNormalsDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dNormalsDirectionAttribute.java
new file mode 100644
index 0000000..c70cfe1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dNormalsDirectionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:normals-direction}.
+ *
+ */
+public class Dr3dNormalsDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "normals-direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:normals-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dNormalsDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:normals-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:normals-direction}.
+	 */
+	public enum Value {
+		INVERSE("inverse"), NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:normals-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:normals-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dNormalsKindAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dNormalsKindAttribute.java
new file mode 100644
index 0000000..59b82d3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dNormalsKindAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:normals-kind}.
+ *
+ */
+public class Dr3dNormalsKindAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "normals-kind");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:normals-kind}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dNormalsKindAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:normals-kind}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:normals-kind}.
+	 */
+	public enum Value {
+		FLAT("flat"), OBJECT("object"), SPHERE("sphere") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:normals-kind}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:normals-kind} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dProjectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dProjectionAttribute.java
new file mode 100644
index 0000000..fed482c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dProjectionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:projection}.
+ *
+ */
+public class Dr3dProjectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "projection");
+	public static final String DEFAULT_VALUE = "parallel";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:projection}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dProjectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:projection}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:projection}.
+	 */
+	public enum Value {
+		PARALLEL("parallel"), PERSPECTIVE("perspective") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:projection}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:projection} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadeModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadeModeAttribute.java
new file mode 100644
index 0000000..29f963a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadeModeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:shade-mode}.
+ *
+ */
+public class Dr3dShadeModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "shade-mode");
+	public static final String DEFAULT_VALUE = "flat";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:shade-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dShadeModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:shade-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:shade-mode}.
+	 */
+	public enum Value {
+		DRAFT("draft"), FLAT("flat"), GOURAUD("gouraud"), PHONG("phong") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:shade-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:shade-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadowAttribute.java
new file mode 100644
index 0000000..c4efb75
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadowAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:shadow}.
+ *
+ */
+public class Dr3dShadowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "shadow");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:shadow}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dShadowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:shadow}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:shadow}.
+	 */
+	public enum Value {
+		HIDDEN("hidden"), VISIBLE("visible") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:shadow}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:shadow} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadowSlantAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadowSlantAttribute.java
new file mode 100644
index 0000000..cf01e7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShadowSlantAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:shadow-slant}.
+ *
+ */
+public class Dr3dShadowSlantAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "shadow-slant");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:shadow-slant}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dShadowSlantAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:shadow-slant}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:shadow-slant}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:shadow-slant} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShininessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShininessAttribute.java
new file mode 100644
index 0000000..c578776
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dShininessAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:shininess}.
+ *
+ */
+public class Dr3dShininessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "shininess");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:shininess}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dShininessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:shininess}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:shininess}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:shininess} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSizeAttribute.java
new file mode 100644
index 0000000..31600cc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSizeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:size}.
+ *
+ */
+public class Dr3dSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSpecularAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSpecularAttribute.java
new file mode 100644
index 0000000..2ab557f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSpecularAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:specular}.
+ *
+ */
+public class Dr3dSpecularAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "specular");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:specular}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dSpecularAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:specular}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:specular}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:specular} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSpecularColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSpecularColorAttribute.java
new file mode 100644
index 0000000..65b28cd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dSpecularColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:specular-color}.
+ *
+ */
+public class Dr3dSpecularColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "specular-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:specular-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dSpecularColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:specular-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:specular-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:specular-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureFilterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureFilterAttribute.java
new file mode 100644
index 0000000..4c35ca1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureFilterAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:texture-filter}.
+ *
+ */
+public class Dr3dTextureFilterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "texture-filter");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:texture-filter}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dTextureFilterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:texture-filter}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:texture-filter}.
+	 */
+	public enum Value {
+		DISABLED("disabled"), ENABLED("enabled") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:texture-filter}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:texture-filter} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureGenerationModeXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureGenerationModeXAttribute.java
new file mode 100644
index 0000000..bc1a201
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureGenerationModeXAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:texture-generation-mode-x}.
+ *
+ */
+public class Dr3dTextureGenerationModeXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "texture-generation-mode-x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:texture-generation-mode-x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dTextureGenerationModeXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:texture-generation-mode-x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:texture-generation-mode-x}.
+	 */
+	public enum Value {
+		OBJECT("object"), PARALLEL("parallel"), SPHERE("sphere") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:texture-generation-mode-x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:texture-generation-mode-x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureGenerationModeYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureGenerationModeYAttribute.java
new file mode 100644
index 0000000..621281a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureGenerationModeYAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:texture-generation-mode-y}.
+ *
+ */
+public class Dr3dTextureGenerationModeYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "texture-generation-mode-y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:texture-generation-mode-y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dTextureGenerationModeYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:texture-generation-mode-y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:texture-generation-mode-y}.
+	 */
+	public enum Value {
+		OBJECT("object"), PARALLEL("parallel"), SPHERE("sphere") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:texture-generation-mode-y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:texture-generation-mode-y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureKindAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureKindAttribute.java
new file mode 100644
index 0000000..90a3567
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureKindAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:texture-kind}.
+ *
+ */
+public class Dr3dTextureKindAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "texture-kind");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:texture-kind}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dTextureKindAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:texture-kind}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:texture-kind}.
+	 */
+	public enum Value {
+		COLOR("color"), INTENSITY("intensity"), LUMINANCE("luminance") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:texture-kind}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:texture-kind} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureModeAttribute.java
new file mode 100644
index 0000000..a42494b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTextureModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:texture-mode}.
+ *
+ */
+public class Dr3dTextureModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "texture-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:texture-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dTextureModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:texture-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute dr3d:texture-mode}.
+	 */
+	public enum Value {
+		BLEND("blend"), MODULATE("modulate"), REPLACE("replace") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:texture-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:texture-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTransformAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTransformAttribute.java
new file mode 100644
index 0000000..af8ec91
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dTransformAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:transform}.
+ *
+ */
+public class Dr3dTransformAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "transform");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:transform}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dTransformAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:transform}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:transform}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:transform} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVerticalSegmentsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVerticalSegmentsAttribute.java
new file mode 100644
index 0000000..922340f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVerticalSegmentsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:vertical-segments}.
+ *
+ */
+public class Dr3dVerticalSegmentsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "vertical-segments");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:vertical-segments}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dVerticalSegmentsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:vertical-segments}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:vertical-segments}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:vertical-segments} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVpnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVpnAttribute.java
new file mode 100644
index 0000000..0192285
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVpnAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:vpn}.
+ *
+ */
+public class Dr3dVpnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "vpn");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:vpn}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dVpnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:vpn}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:vpn}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:vpn} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVrpAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVrpAttribute.java
new file mode 100644
index 0000000..1483f66
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVrpAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:vrp}.
+ *
+ */
+public class Dr3dVrpAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "vrp");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:vrp}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dVrpAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:vrp}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:vrp}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:vrp} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVupAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVupAttribute.java
new file mode 100644
index 0000000..4194f77
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/dr3d/Dr3dVupAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.dr3d;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute dr3d:vup}.
+ *
+ */
+public class Dr3dVupAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "vup");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute dr3d:vup}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dVupAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute dr3d:vup}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute dr3d:vup}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute dr3d:vup} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAlignAttribute.java
new file mode 100644
index 0000000..2db4cdb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:align}.
+ *
+ */
+public class DrawAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:align}.
+	 */
+	public enum Value {
+		BOTTOM_LEFT("bottom-left"), BOTTOM_RIGHT("bottom-right"), CENTER("center"), LEFT("left"), RIGHT("right"), TOP("top"), TOP_LEFT("top-left"), TOP_RIGHT("top-right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAngleAttribute.java
new file mode 100644
index 0000000..c1f943f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:angle}.
+ *
+ */
+public class DrawAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawArchiveAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawArchiveAttribute.java
new file mode 100644
index 0000000..41cada5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawArchiveAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:archive}.
+ *
+ */
+public class DrawArchiveAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "archive");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:archive}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawArchiveAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:archive}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:archive}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:archive} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAutoGrowHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAutoGrowHeightAttribute.java
new file mode 100644
index 0000000..bd4c391
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAutoGrowHeightAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:auto-grow-height}.
+ *
+ */
+public class DrawAutoGrowHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "auto-grow-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:auto-grow-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawAutoGrowHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:auto-grow-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:auto-grow-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:auto-grow-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAutoGrowWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAutoGrowWidthAttribute.java
new file mode 100644
index 0000000..efe10ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawAutoGrowWidthAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:auto-grow-width}.
+ *
+ */
+public class DrawAutoGrowWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "auto-grow-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:auto-grow-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawAutoGrowWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:auto-grow-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:auto-grow-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:auto-grow-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBackgroundSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBackgroundSizeAttribute.java
new file mode 100644
index 0000000..4cec987
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBackgroundSizeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:background-size}.
+ *
+ */
+public class DrawBackgroundSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "background-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:background-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawBackgroundSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:background-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:background-size}.
+	 */
+	public enum Value {
+		BORDER("border"), FULL("full") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:background-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:background-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBlueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBlueAttribute.java
new file mode 100644
index 0000000..8969351
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBlueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:blue}.
+ *
+ */
+public class DrawBlueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "blue");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:blue}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawBlueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:blue}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:blue}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:blue} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBorderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBorderAttribute.java
new file mode 100644
index 0000000..1f17a37
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawBorderAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:border}.
+ *
+ */
+public class DrawBorderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "border");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:border}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawBorderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:border}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:border}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:border} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionAngleAttribute.java
new file mode 100644
index 0000000..5470746
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-angle}.
+ *
+ */
+public class DrawCaptionAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionAngleTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionAngleTypeAttribute.java
new file mode 100644
index 0000000..6032f39
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionAngleTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-angle-type}.
+ *
+ */
+public class DrawCaptionAngleTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-angle-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-angle-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionAngleTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-angle-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:caption-angle-type}.
+	 */
+	public enum Value {
+		FIXED("fixed"), FREE("free") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-angle-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-angle-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionEscapeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionEscapeAttribute.java
new file mode 100644
index 0000000..f389dbe
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionEscapeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-escape}.
+ *
+ */
+public class DrawCaptionEscapeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-escape");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-escape}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionEscapeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-escape}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-escape}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-escape} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionEscapeDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionEscapeDirectionAttribute.java
new file mode 100644
index 0000000..11214c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionEscapeDirectionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-escape-direction}.
+ *
+ */
+public class DrawCaptionEscapeDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-escape-direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-escape-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionEscapeDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-escape-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:caption-escape-direction}.
+	 */
+	public enum Value {
+		AUTO("auto"), HORIZONTAL("horizontal"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-escape-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-escape-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionFitLineLengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionFitLineLengthAttribute.java
new file mode 100644
index 0000000..cf20a57
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionFitLineLengthAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-fit-line-length}.
+ *
+ */
+public class DrawCaptionFitLineLengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-fit-line-length");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-fit-line-length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionFitLineLengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-fit-line-length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-fit-line-length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-fit-line-length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionGapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionGapAttribute.java
new file mode 100644
index 0000000..f58324d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionGapAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-gap}.
+ *
+ */
+public class DrawCaptionGapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-gap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-gap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionGapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-gap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-gap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-gap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionIdAttribute.java
new file mode 100644
index 0000000..e64504f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-id}.
+ *
+ */
+public class DrawCaptionIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionLineLengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionLineLengthAttribute.java
new file mode 100644
index 0000000..7d9b3bd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionLineLengthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-line-length}.
+ *
+ */
+public class DrawCaptionLineLengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-line-length");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-line-length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionLineLengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-line-length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-line-length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-line-length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionPointXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionPointXAttribute.java
new file mode 100644
index 0000000..c84084f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionPointXAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-point-x}.
+ *
+ */
+public class DrawCaptionPointXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-point-x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-point-x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionPointXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-point-x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-point-x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-point-x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionPointYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionPointYAttribute.java
new file mode 100644
index 0000000..9004276
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionPointYAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-point-y}.
+ *
+ */
+public class DrawCaptionPointYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-point-y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-point-y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionPointYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-point-y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-point-y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-point-y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionTypeAttribute.java
new file mode 100644
index 0000000..95ddbf7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCaptionTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:caption-type}.
+ *
+ */
+public class DrawCaptionTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:caption-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:caption-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:caption-type}.
+	 */
+	public enum Value {
+		ANGLED_CONNECTOR_LINE("angled-connector-line"), ANGLED_LINE("angled-line"), STRAIGHT_LINE("straight-line") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:caption-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:caption-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawChainNextNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawChainNextNameAttribute.java
new file mode 100644
index 0000000..900833c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawChainNextNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:chain-next-name}.
+ *
+ */
+public class DrawChainNextNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "chain-next-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:chain-next-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawChainNextNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:chain-next-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:chain-next-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:chain-next-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawClassIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawClassIdAttribute.java
new file mode 100644
index 0000000..fb61b65
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawClassIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:class-id}.
+ *
+ */
+public class DrawClassIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "class-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:class-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawClassIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:class-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:class-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:class-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawClassNamesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawClassNamesAttribute.java
new file mode 100644
index 0000000..7864138
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawClassNamesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:class-names}.
+ *
+ */
+public class DrawClassNamesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "class-names");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:class-names}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawClassNamesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:class-names}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:class-names}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:class-names} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCodeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCodeAttribute.java
new file mode 100644
index 0000000..c4798c9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCodeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:code}.
+ *
+ */
+public class DrawCodeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "code");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:code}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCodeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:code}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:code}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:code} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorAttribute.java
new file mode 100644
index 0000000..93f3f59
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:color}.
+ *
+ */
+public class DrawColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorInversionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorInversionAttribute.java
new file mode 100644
index 0000000..8d0a47b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorInversionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:color-inversion}.
+ *
+ */
+public class DrawColorInversionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "color-inversion");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:color-inversion}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawColorInversionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:color-inversion}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:color-inversion}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:color-inversion} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorModeAttribute.java
new file mode 100644
index 0000000..97a7470
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawColorModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:color-mode}.
+ *
+ */
+public class DrawColorModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "color-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:color-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawColorModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:color-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:color-mode}.
+	 */
+	public enum Value {
+		GREYSCALE("greyscale"), MONO("mono"), STANDARD("standard"), WATERMARK("watermark") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:color-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:color-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawConcaveAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawConcaveAttribute.java
new file mode 100644
index 0000000..de1d401
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawConcaveAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:concave}.
+ *
+ */
+public class DrawConcaveAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "concave");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:concave}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawConcaveAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:concave}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:concave}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:concave} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawConcentricGradientFillAllowedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawConcentricGradientFillAllowedAttribute.java
new file mode 100644
index 0000000..2bde9a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawConcentricGradientFillAllowedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:concentric-gradient-fill-allowed}.
+ *
+ */
+public class DrawConcentricGradientFillAllowedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "concentric-gradient-fill-allowed");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:concentric-gradient-fill-allowed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawConcentricGradientFillAllowedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:concentric-gradient-fill-allowed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:concentric-gradient-fill-allowed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:concentric-gradient-fill-allowed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawContrastAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawContrastAttribute.java
new file mode 100644
index 0000000..f3389a7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawContrastAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:contrast}.
+ *
+ */
+public class DrawContrastAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "contrast");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:contrast}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawContrastAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:contrast}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:contrast}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:contrast} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawControlAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawControlAttribute.java
new file mode 100644
index 0000000..1c3e4f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawControlAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:control}.
+ *
+ */
+public class DrawControlAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "control");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:control}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawControlAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:control}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:control}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:control} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCopyOfAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCopyOfAttribute.java
new file mode 100644
index 0000000..7f6f929
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCopyOfAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:copy-of}.
+ *
+ */
+public class DrawCopyOfAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "copy-of");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:copy-of}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCopyOfAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:copy-of}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:copy-of}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:copy-of} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCornerRadiusAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCornerRadiusAttribute.java
new file mode 100644
index 0000000..b734d41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCornerRadiusAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:corner-radius}.
+ *
+ */
+public class DrawCornerRadiusAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "corner-radius");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:corner-radius}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCornerRadiusAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:corner-radius}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:corner-radius}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:corner-radius} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCornersAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCornersAttribute.java
new file mode 100644
index 0000000..0c1d8e2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCornersAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:corners}.
+ *
+ */
+public class DrawCornersAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "corners");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:corners}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCornersAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:corners}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:corners}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:corners} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCxAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCxAttribute.java
new file mode 100644
index 0000000..c5aeed5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCxAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:cx}.
+ *
+ */
+public class DrawCxAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "cx");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:cx}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCxAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:cx}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:cx}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:cx} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCyAttribute.java
new file mode 100644
index 0000000..fc8aa9f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawCyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:cy}.
+ *
+ */
+public class DrawCyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "cy");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:cy}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawCyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:cy}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:cy}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:cy} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDataAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDataAttribute.java
new file mode 100644
index 0000000..d610e72
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDataAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:data}.
+ *
+ */
+public class DrawDataAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "data");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:data}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDataAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:data}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:data}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:data} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDecimalPlacesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDecimalPlacesAttribute.java
new file mode 100644
index 0000000..c823de9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDecimalPlacesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:decimal-places}.
+ *
+ */
+public class DrawDecimalPlacesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "decimal-places");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:decimal-places}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDecimalPlacesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:decimal-places}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:decimal-places}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:decimal-places} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDisplayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDisplayAttribute.java
new file mode 100644
index 0000000..747311f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDisplayAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:display}.
+ *
+ */
+public class DrawDisplayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "display");
+	public static final String DEFAULT_VALUE = "always";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:display}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDisplayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:display}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:display}.
+	 */
+	public enum Value {
+		ALWAYS("always"), NONE("none"), PRINTER("printer"), SCREEN("screen") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:display}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:display} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDisplayNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDisplayNameAttribute.java
new file mode 100644
index 0000000..2a8094b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDisplayNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:display-name}.
+ *
+ */
+public class DrawDisplayNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "display-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:display-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDisplayNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:display-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:display-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:display-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDistanceAttribute.java
new file mode 100644
index 0000000..fd657d1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDistanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:distance}.
+ *
+ */
+public class DrawDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "distance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots1Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots1Attribute.java
new file mode 100644
index 0000000..4d11ce9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots1Attribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:dots1}.
+ *
+ */
+public class DrawDots1Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "dots1");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:dots1}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDots1Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:dots1}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:dots1}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:dots1} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots1LengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots1LengthAttribute.java
new file mode 100644
index 0000000..f81872a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots1LengthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:dots1-length}.
+ *
+ */
+public class DrawDots1LengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "dots1-length");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:dots1-length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDots1LengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:dots1-length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:dots1-length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:dots1-length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots2Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots2Attribute.java
new file mode 100644
index 0000000..bf0a987
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots2Attribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:dots2}.
+ *
+ */
+public class DrawDots2Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "dots2");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:dots2}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDots2Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:dots2}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:dots2}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:dots2} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots2LengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots2LengthAttribute.java
new file mode 100644
index 0000000..d883813
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDots2LengthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:dots2-length}.
+ *
+ */
+public class DrawDots2LengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "dots2-length");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:dots2-length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDots2LengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:dots2-length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:dots2-length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:dots2-length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDrawAspectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDrawAspectAttribute.java
new file mode 100644
index 0000000..e0f24e4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawDrawAspectAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:draw-aspect}.
+ *
+ */
+public class DrawDrawAspectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "draw-aspect");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:draw-aspect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawDrawAspectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:draw-aspect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:draw-aspect}.
+	 */
+	public enum Value {
+		CONTENT("content"), ICON("icon"), PRINT_VIEW("print-view"), THUMBNAIL("thumbnail") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:draw-aspect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:draw-aspect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndAngleAttribute.java
new file mode 100644
index 0000000..0ae80e5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-angle}.
+ *
+ */
+public class DrawEndAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndAttribute.java
new file mode 100644
index 0000000..e507d97
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end}.
+ *
+ */
+public class DrawEndAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndColorAttribute.java
new file mode 100644
index 0000000..fd3d6ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-color}.
+ *
+ */
+public class DrawEndColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndGluePointAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndGluePointAttribute.java
new file mode 100644
index 0000000..3b2d9a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndGluePointAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-glue-point}.
+ *
+ */
+public class DrawEndGluePointAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-glue-point");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-glue-point}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndGluePointAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-glue-point}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-glue-point}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-glue-point} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndGuideAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndGuideAttribute.java
new file mode 100644
index 0000000..132d7b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndGuideAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-guide}.
+ *
+ */
+public class DrawEndGuideAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-guide");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-guide}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndGuideAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-guide}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-guide}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-guide} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndIntensityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndIntensityAttribute.java
new file mode 100644
index 0000000..2453d52
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndIntensityAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-intensity}.
+ *
+ */
+public class DrawEndIntensityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-intensity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-intensity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndIntensityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-intensity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-intensity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-intensity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndLineSpacingHorizontalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndLineSpacingHorizontalAttribute.java
new file mode 100644
index 0000000..4636615
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndLineSpacingHorizontalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-line-spacing-horizontal}.
+ *
+ */
+public class DrawEndLineSpacingHorizontalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-line-spacing-horizontal");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-line-spacing-horizontal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndLineSpacingHorizontalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-line-spacing-horizontal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-line-spacing-horizontal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-line-spacing-horizontal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndLineSpacingVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndLineSpacingVerticalAttribute.java
new file mode 100644
index 0000000..02691d4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndLineSpacingVerticalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-line-spacing-vertical}.
+ *
+ */
+public class DrawEndLineSpacingVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-line-spacing-vertical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-line-spacing-vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndLineSpacingVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-line-spacing-vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-line-spacing-vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-line-spacing-vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndShapeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndShapeAttribute.java
new file mode 100644
index 0000000..9aaaa0b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEndShapeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:end-shape}.
+ *
+ */
+public class DrawEndShapeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "end-shape");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:end-shape}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEndShapeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:end-shape}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:end-shape}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:end-shape} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEngineAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEngineAttribute.java
new file mode 100644
index 0000000..d70b642
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEngineAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:engine}.
+ *
+ */
+public class DrawEngineAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "engine");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:engine}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEngineAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:engine}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:engine}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:engine} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEnhancedPathAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEnhancedPathAttribute.java
new file mode 100644
index 0000000..4078226
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEnhancedPathAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:enhanced-path}.
+ *
+ */
+public class DrawEnhancedPathAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "enhanced-path");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:enhanced-path}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEnhancedPathAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:enhanced-path}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:enhanced-path}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:enhanced-path} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEscapeDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEscapeDirectionAttribute.java
new file mode 100644
index 0000000..e97d8f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawEscapeDirectionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:escape-direction}.
+ *
+ */
+public class DrawEscapeDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "escape-direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:escape-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawEscapeDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:escape-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:escape-direction}.
+	 */
+	public enum Value {
+		AUTO("auto"), DOWN("down"), HORIZONTAL("horizontal"), LEFT("left"), RIGHT("right"), UP("up"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:escape-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:escape-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionAllowedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionAllowedAttribute.java
new file mode 100644
index 0000000..a4eb3d0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionAllowedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-allowed}.
+ *
+ */
+public class DrawExtrusionAllowedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-allowed");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-allowed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionAllowedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-allowed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-allowed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-allowed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionAttribute.java
new file mode 100644
index 0000000..aee9026
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion}.
+ *
+ */
+public class DrawExtrusionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionBrightnessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionBrightnessAttribute.java
new file mode 100644
index 0000000..6892e16
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionBrightnessAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-brightness}.
+ *
+ */
+public class DrawExtrusionBrightnessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-brightness");
+	public static final String DEFAULT_VALUE = "33%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-brightness}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionBrightnessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-brightness}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-brightness}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-brightness} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionColorAttribute.java
new file mode 100644
index 0000000..66143d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionColorAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-color}.
+ *
+ */
+public class DrawExtrusionColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-color");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionDepthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionDepthAttribute.java
new file mode 100644
index 0000000..f638ad4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionDepthAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-depth}.
+ *
+ */
+public class DrawExtrusionDepthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-depth");
+	public static final String DEFAULT_VALUE = "36pt 0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-depth}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionDepthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-depth}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-depth}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-depth} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionDiffusionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionDiffusionAttribute.java
new file mode 100644
index 0000000..7a31905
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionDiffusionAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-diffusion}.
+ *
+ */
+public class DrawExtrusionDiffusionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-diffusion");
+	public static final String DEFAULT_VALUE = "0%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-diffusion}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionDiffusionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-diffusion}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-diffusion}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-diffusion} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightDirectionAttribute.java
new file mode 100644
index 0000000..77aedc6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightDirectionAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-first-light-direction}.
+ *
+ */
+public class DrawExtrusionFirstLightDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-first-light-direction");
+	public static final String DEFAULT_VALUE = "(5 0 1)";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-first-light-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionFirstLightDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-first-light-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-first-light-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-first-light-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightHarshAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightHarshAttribute.java
new file mode 100644
index 0000000..72a2e49
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightHarshAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-first-light-harsh}.
+ *
+ */
+public class DrawExtrusionFirstLightHarshAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-first-light-harsh");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-first-light-harsh}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionFirstLightHarshAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-first-light-harsh}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-first-light-harsh}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-first-light-harsh} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightLevelAttribute.java
new file mode 100644
index 0000000..d342a27
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionFirstLightLevelAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-first-light-level}.
+ *
+ */
+public class DrawExtrusionFirstLightLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-first-light-level");
+	public static final String DEFAULT_VALUE = "66%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-first-light-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionFirstLightLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-first-light-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-first-light-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-first-light-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionLightFaceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionLightFaceAttribute.java
new file mode 100644
index 0000000..6b2ad21
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionLightFaceAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-light-face}.
+ *
+ */
+public class DrawExtrusionLightFaceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-light-face");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-light-face}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionLightFaceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-light-face}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-light-face}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-light-face} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionMetalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionMetalAttribute.java
new file mode 100644
index 0000000..99fc8f9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionMetalAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-metal}.
+ *
+ */
+public class DrawExtrusionMetalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-metal");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-metal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionMetalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-metal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-metal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-metal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionNumberOfLineSegmentsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionNumberOfLineSegmentsAttribute.java
new file mode 100644
index 0000000..c901b49
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionNumberOfLineSegmentsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-number-of-line-segments}.
+ *
+ */
+public class DrawExtrusionNumberOfLineSegmentsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-number-of-line-segments");
+	public static final String DEFAULT_VALUE = "30";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-number-of-line-segments}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionNumberOfLineSegmentsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-number-of-line-segments}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-number-of-line-segments}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-number-of-line-segments} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionOriginAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionOriginAttribute.java
new file mode 100644
index 0000000..7661d07
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionOriginAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-origin}.
+ *
+ */
+public class DrawExtrusionOriginAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-origin");
+	public static final String DEFAULT_VALUE = "0.5 -0.5";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-origin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionOriginAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-origin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-origin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-origin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionRotationAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionRotationAngleAttribute.java
new file mode 100644
index 0000000..bf64553
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionRotationAngleAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-rotation-angle}.
+ *
+ */
+public class DrawExtrusionRotationAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-rotation-angle");
+	public static final String DEFAULT_VALUE = "0 0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-rotation-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionRotationAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-rotation-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-rotation-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-rotation-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionRotationCenterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionRotationCenterAttribute.java
new file mode 100644
index 0000000..1b1245a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionRotationCenterAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-rotation-center}.
+ *
+ */
+public class DrawExtrusionRotationCenterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-rotation-center");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-rotation-center}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionRotationCenterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-rotation-center}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-rotation-center}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-rotation-center} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightDirectionAttribute.java
new file mode 100644
index 0000000..c2b2bd1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightDirectionAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-second-light-direction}.
+ *
+ */
+public class DrawExtrusionSecondLightDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-second-light-direction");
+	public static final String DEFAULT_VALUE = "(-5 0 1)";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-second-light-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionSecondLightDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-second-light-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-second-light-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-second-light-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightHarshAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightHarshAttribute.java
new file mode 100644
index 0000000..ec33cc2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightHarshAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-second-light-harsh}.
+ *
+ */
+public class DrawExtrusionSecondLightHarshAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-second-light-harsh");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-second-light-harsh}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionSecondLightHarshAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-second-light-harsh}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-second-light-harsh}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-second-light-harsh} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightLevelAttribute.java
new file mode 100644
index 0000000..4757c85
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSecondLightLevelAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-second-light-level}.
+ *
+ */
+public class DrawExtrusionSecondLightLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-second-light-level");
+	public static final String DEFAULT_VALUE = "66%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-second-light-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionSecondLightLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-second-light-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-second-light-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-second-light-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionShininessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionShininessAttribute.java
new file mode 100644
index 0000000..3e53385
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionShininessAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-shininess}.
+ *
+ */
+public class DrawExtrusionShininessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-shininess");
+	public static final String DEFAULT_VALUE = "50%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-shininess}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionShininessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-shininess}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-shininess}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-shininess} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSkewAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSkewAttribute.java
new file mode 100644
index 0000000..01123d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSkewAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-skew}.
+ *
+ */
+public class DrawExtrusionSkewAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-skew");
+	public static final String DEFAULT_VALUE = "50 45";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-skew}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionSkewAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-skew}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-skew}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-skew} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSpecularityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSpecularityAttribute.java
new file mode 100644
index 0000000..97315b3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionSpecularityAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-specularity}.
+ *
+ */
+public class DrawExtrusionSpecularityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-specularity");
+	public static final String DEFAULT_VALUE = "0%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-specularity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionSpecularityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-specularity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-specularity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-specularity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionViewpointAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionViewpointAttribute.java
new file mode 100644
index 0000000..ee86587
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawExtrusionViewpointAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:extrusion-viewpoint}.
+ *
+ */
+public class DrawExtrusionViewpointAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "extrusion-viewpoint");
+	public static final String DEFAULT_VALUE = "3.5cm -3.5cm 25cm";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:extrusion-viewpoint}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawExtrusionViewpointAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:extrusion-viewpoint}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:extrusion-viewpoint}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:extrusion-viewpoint} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillAttribute.java
new file mode 100644
index 0000000..be5cc05
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill}.
+ *
+ */
+public class DrawFillAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:fill}.
+	 */
+	public enum Value {
+		BITMAP("bitmap"), GRADIENT("gradient"), HATCH("hatch"), NONE("none"), SOLID("solid") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillColorAttribute.java
new file mode 100644
index 0000000..bd4c24c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-color}.
+ *
+ */
+public class DrawFillColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillGradientNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillGradientNameAttribute.java
new file mode 100644
index 0000000..f2c5548
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillGradientNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-gradient-name}.
+ *
+ */
+public class DrawFillGradientNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-gradient-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-gradient-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillGradientNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-gradient-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-gradient-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-gradient-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillHatchNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillHatchNameAttribute.java
new file mode 100644
index 0000000..7cbb207
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillHatchNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-hatch-name}.
+ *
+ */
+public class DrawFillHatchNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-hatch-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillHatchNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-hatch-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-hatch-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-hatch-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillHatchSolidAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillHatchSolidAttribute.java
new file mode 100644
index 0000000..436c17c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillHatchSolidAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-hatch-solid}.
+ *
+ */
+public class DrawFillHatchSolidAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-solid");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-hatch-solid}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillHatchSolidAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-hatch-solid}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-hatch-solid}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-hatch-solid} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageHeightAttribute.java
new file mode 100644
index 0000000..84f26b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-image-height}.
+ *
+ */
+public class DrawFillImageHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-image-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-image-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-image-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-image-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageNameAttribute.java
new file mode 100644
index 0000000..93ba63e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-image-name}.
+ *
+ */
+public class DrawFillImageNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-image-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-image-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-image-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-image-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointAttribute.java
new file mode 100644
index 0000000..ae5b2e0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-image-ref-point}.
+ *
+ */
+public class DrawFillImageRefPointAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-image-ref-point}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageRefPointAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-image-ref-point}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:fill-image-ref-point}.
+	 */
+	public enum Value {
+		BOTTOM("bottom"), BOTTOM_LEFT("bottom-left"), BOTTOM_RIGHT("bottom-right"), CENTER("center"), LEFT("left"), RIGHT("right"), TOP("top"), TOP_LEFT("top-left"), TOP_RIGHT("top-right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-image-ref-point}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-image-ref-point} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointXAttribute.java
new file mode 100644
index 0000000..ff6ed4a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointXAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-image-ref-point-x}.
+ *
+ */
+public class DrawFillImageRefPointXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-image-ref-point-x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageRefPointXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-image-ref-point-x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-image-ref-point-x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-image-ref-point-x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointYAttribute.java
new file mode 100644
index 0000000..4234e49
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageRefPointYAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-image-ref-point-y}.
+ *
+ */
+public class DrawFillImageRefPointYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-image-ref-point-y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageRefPointYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-image-ref-point-y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-image-ref-point-y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-image-ref-point-y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageWidthAttribute.java
new file mode 100644
index 0000000..d3802f3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFillImageWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fill-image-width}.
+ *
+ */
+public class DrawFillImageWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fill-image-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fill-image-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fill-image-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fill-image-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFilterNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFilterNameAttribute.java
new file mode 100644
index 0000000..7e97261
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFilterNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:filter-name}.
+ *
+ */
+public class DrawFilterNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "filter-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:filter-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFilterNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:filter-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:filter-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:filter-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFitToContourAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFitToContourAttribute.java
new file mode 100644
index 0000000..3d1d764
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFitToContourAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fit-to-contour}.
+ *
+ */
+public class DrawFitToContourAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fit-to-contour");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fit-to-contour}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFitToContourAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fit-to-contour}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fit-to-contour}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fit-to-contour} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFitToSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFitToSizeAttribute.java
new file mode 100644
index 0000000..571840a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFitToSizeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:fit-to-size}.
+ *
+ */
+public class DrawFitToSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fit-to-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:fit-to-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFitToSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:fit-to-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:fit-to-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:fit-to-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFormulaAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFormulaAttribute.java
new file mode 100644
index 0000000..aa404e8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFormulaAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:formula}.
+ *
+ */
+public class DrawFormulaAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "formula");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:formula}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFormulaAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:formula}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:formula}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:formula} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameDisplayBorderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameDisplayBorderAttribute.java
new file mode 100644
index 0000000..61bae3d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameDisplayBorderAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:frame-display-border}.
+ *
+ */
+public class DrawFrameDisplayBorderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "frame-display-border");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:frame-display-border}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFrameDisplayBorderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:frame-display-border}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:frame-display-border}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:frame-display-border} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameDisplayScrollbarAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameDisplayScrollbarAttribute.java
new file mode 100644
index 0000000..cda0878
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameDisplayScrollbarAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:frame-display-scrollbar}.
+ *
+ */
+public class DrawFrameDisplayScrollbarAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "frame-display-scrollbar");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:frame-display-scrollbar}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFrameDisplayScrollbarAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:frame-display-scrollbar}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:frame-display-scrollbar}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:frame-display-scrollbar} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameMarginHorizontalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameMarginHorizontalAttribute.java
new file mode 100644
index 0000000..d9f2dbc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameMarginHorizontalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:frame-margin-horizontal}.
+ *
+ */
+public class DrawFrameMarginHorizontalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "frame-margin-horizontal");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:frame-margin-horizontal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFrameMarginHorizontalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:frame-margin-horizontal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:frame-margin-horizontal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:frame-margin-horizontal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameMarginVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameMarginVerticalAttribute.java
new file mode 100644
index 0000000..cfee5f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameMarginVerticalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:frame-margin-vertical}.
+ *
+ */
+public class DrawFrameMarginVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "frame-margin-vertical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:frame-margin-vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFrameMarginVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:frame-margin-vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:frame-margin-vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:frame-margin-vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameNameAttribute.java
new file mode 100644
index 0000000..4bc4d08
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawFrameNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:frame-name}.
+ *
+ */
+public class DrawFrameNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "frame-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:frame-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawFrameNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:frame-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:frame-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:frame-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGammaAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGammaAttribute.java
new file mode 100644
index 0000000..dbff3b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGammaAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:gamma}.
+ *
+ */
+public class DrawGammaAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "gamma");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:gamma}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGammaAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:gamma}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:gamma}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:gamma} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointLeavingDirectionsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointLeavingDirectionsAttribute.java
new file mode 100644
index 0000000..14046d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointLeavingDirectionsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:glue-point-leaving-directions}.
+ *
+ */
+public class DrawGluePointLeavingDirectionsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "glue-point-leaving-directions");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:glue-point-leaving-directions}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGluePointLeavingDirectionsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:glue-point-leaving-directions}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:glue-point-leaving-directions}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:glue-point-leaving-directions} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointTypeAttribute.java
new file mode 100644
index 0000000..45c8e31
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:glue-point-type}.
+ *
+ */
+public class DrawGluePointTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "glue-point-type");
+	public static final String DEFAULT_VALUE = "none";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:glue-point-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGluePointTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:glue-point-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:glue-point-type}.
+	 */
+	public enum Value {
+		NONE("none"), RECTANGLE("rectangle"), SEGMENTS("segments") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:glue-point-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:glue-point-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointsAttribute.java
new file mode 100644
index 0000000..2809ace
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGluePointsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:glue-points}.
+ *
+ */
+public class DrawGluePointsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "glue-points");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:glue-points}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGluePointsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:glue-points}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:glue-points}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:glue-points} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGradientStepCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGradientStepCountAttribute.java
new file mode 100644
index 0000000..60daece
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGradientStepCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:gradient-step-count}.
+ *
+ */
+public class DrawGradientStepCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "gradient-step-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:gradient-step-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGradientStepCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:gradient-step-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:gradient-step-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:gradient-step-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGreenAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGreenAttribute.java
new file mode 100644
index 0000000..8cb82fa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGreenAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:green}.
+ *
+ */
+public class DrawGreenAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "green");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:green}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGreenAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:green}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:green}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:green} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGuideDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGuideDistanceAttribute.java
new file mode 100644
index 0000000..9203e89
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGuideDistanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:guide-distance}.
+ *
+ */
+public class DrawGuideDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "guide-distance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:guide-distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGuideDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:guide-distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:guide-distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:guide-distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGuideOverhangAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGuideOverhangAttribute.java
new file mode 100644
index 0000000..8bd5930
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawGuideOverhangAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:guide-overhang}.
+ *
+ */
+public class DrawGuideOverhangAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "guide-overhang");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:guide-overhang}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawGuideOverhangAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:guide-overhang}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:guide-overhang}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:guide-overhang} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleMirrorHorizontalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleMirrorHorizontalAttribute.java
new file mode 100644
index 0000000..7fd4477
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleMirrorHorizontalAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-mirror-horizontal}.
+ *
+ */
+public class DrawHandleMirrorHorizontalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-mirror-horizontal");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-mirror-horizontal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleMirrorHorizontalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-mirror-horizontal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-mirror-horizontal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-mirror-horizontal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleMirrorVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleMirrorVerticalAttribute.java
new file mode 100644
index 0000000..041f4a0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleMirrorVerticalAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-mirror-vertical}.
+ *
+ */
+public class DrawHandleMirrorVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-mirror-vertical");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-mirror-vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleMirrorVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-mirror-vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-mirror-vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-mirror-vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandlePolarAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandlePolarAttribute.java
new file mode 100644
index 0000000..63c9a63
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandlePolarAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-polar}.
+ *
+ */
+public class DrawHandlePolarAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-polar");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-polar}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandlePolarAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-polar}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-polar}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-polar} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandlePositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandlePositionAttribute.java
new file mode 100644
index 0000000..fe5bc72
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandlePositionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-position}.
+ *
+ */
+public class DrawHandlePositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandlePositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRadiusRangeMaximumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRadiusRangeMaximumAttribute.java
new file mode 100644
index 0000000..1da11d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRadiusRangeMaximumAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-radius-range-maximum}.
+ *
+ */
+public class DrawHandleRadiusRangeMaximumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-radius-range-maximum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-radius-range-maximum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleRadiusRangeMaximumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-radius-range-maximum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-radius-range-maximum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-radius-range-maximum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRadiusRangeMinimumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRadiusRangeMinimumAttribute.java
new file mode 100644
index 0000000..be6ffdc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRadiusRangeMinimumAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-radius-range-minimum}.
+ *
+ */
+public class DrawHandleRadiusRangeMinimumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-radius-range-minimum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-radius-range-minimum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleRadiusRangeMinimumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-radius-range-minimum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-radius-range-minimum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-radius-range-minimum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeXMaximumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeXMaximumAttribute.java
new file mode 100644
index 0000000..fc21760
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeXMaximumAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-range-x-maximum}.
+ *
+ */
+public class DrawHandleRangeXMaximumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-range-x-maximum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-range-x-maximum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleRangeXMaximumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-range-x-maximum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-range-x-maximum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-range-x-maximum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeXMinimumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeXMinimumAttribute.java
new file mode 100644
index 0000000..5917a3e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeXMinimumAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-range-x-minimum}.
+ *
+ */
+public class DrawHandleRangeXMinimumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-range-x-minimum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-range-x-minimum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleRangeXMinimumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-range-x-minimum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-range-x-minimum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-range-x-minimum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeYMaximumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeYMaximumAttribute.java
new file mode 100644
index 0000000..d6e3bc5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeYMaximumAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-range-y-maximum}.
+ *
+ */
+public class DrawHandleRangeYMaximumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-range-y-maximum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-range-y-maximum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleRangeYMaximumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-range-y-maximum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-range-y-maximum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-range-y-maximum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeYMinimumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeYMinimumAttribute.java
new file mode 100644
index 0000000..231eb74
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleRangeYMinimumAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-range-y-minimum}.
+ *
+ */
+public class DrawHandleRangeYMinimumAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-range-y-minimum");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-range-y-minimum}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleRangeYMinimumAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-range-y-minimum}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-range-y-minimum}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-range-y-minimum} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleSwitchedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleSwitchedAttribute.java
new file mode 100644
index 0000000..c4f7714
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawHandleSwitchedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:handle-switched}.
+ *
+ */
+public class DrawHandleSwitchedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle-switched");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:handle-switched}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleSwitchedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:handle-switched}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:handle-switched}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:handle-switched} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawIdAttribute.java
new file mode 100644
index 0000000..6cd2005
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:id}.
+ *
+ */
+public class DrawIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawImageOpacityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawImageOpacityAttribute.java
new file mode 100644
index 0000000..fcd1420
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawImageOpacityAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:image-opacity}.
+ *
+ */
+public class DrawImageOpacityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "image-opacity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:image-opacity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawImageOpacityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:image-opacity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:image-opacity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:image-opacity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawKindAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawKindAttribute.java
new file mode 100644
index 0000000..ce7b9fa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawKindAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:kind}.
+ *
+ */
+public class DrawKindAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "kind");
+	public static final String DEFAULT_VALUE = "full";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:kind}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawKindAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:kind}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:kind}.
+	 */
+	public enum Value {
+		ARC("arc"), CUT("cut"), FULL("full"), SECTION("section") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:kind}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:kind} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLayerAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLayerAttribute.java
new file mode 100644
index 0000000..bf42a96
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLayerAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:layer}.
+ *
+ */
+public class DrawLayerAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "layer");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:layer}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawLayerAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:layer}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:layer}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:layer} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLineDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLineDistanceAttribute.java
new file mode 100644
index 0000000..4c59fd5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLineDistanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:line-distance}.
+ *
+ */
+public class DrawLineDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "line-distance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:line-distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawLineDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:line-distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:line-distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:line-distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLineSkewAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLineSkewAttribute.java
new file mode 100644
index 0000000..c26efa4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLineSkewAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:line-skew}.
+ *
+ */
+public class DrawLineSkewAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "line-skew");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:line-skew}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawLineSkewAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:line-skew}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:line-skew}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:line-skew} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLuminanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLuminanceAttribute.java
new file mode 100644
index 0000000..1315226
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawLuminanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:luminance}.
+ *
+ */
+public class DrawLuminanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "luminance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:luminance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawLuminanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:luminance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:luminance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:luminance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndAttribute.java
new file mode 100644
index 0000000..92ae305
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:marker-end}.
+ *
+ */
+public class DrawMarkerEndAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:marker-end}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerEndAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:marker-end}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:marker-end}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:marker-end} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndCenterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndCenterAttribute.java
new file mode 100644
index 0000000..5997a8d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndCenterAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:marker-end-center}.
+ *
+ */
+public class DrawMarkerEndCenterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end-center");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:marker-end-center}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerEndCenterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:marker-end-center}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:marker-end-center}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:marker-end-center} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndWidthAttribute.java
new file mode 100644
index 0000000..7086aba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerEndWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:marker-end-width}.
+ *
+ */
+public class DrawMarkerEndWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:marker-end-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerEndWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:marker-end-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:marker-end-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:marker-end-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartAttribute.java
new file mode 100644
index 0000000..2957fd4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:marker-start}.
+ *
+ */
+public class DrawMarkerStartAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:marker-start}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerStartAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:marker-start}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:marker-start}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:marker-start} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartCenterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartCenterAttribute.java
new file mode 100644
index 0000000..7c88dcc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartCenterAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:marker-start-center}.
+ *
+ */
+public class DrawMarkerStartCenterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start-center");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:marker-start-center}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerStartCenterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:marker-start-center}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:marker-start-center}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:marker-start-center} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartWidthAttribute.java
new file mode 100644
index 0000000..b3bdaed
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMarkerStartWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:marker-start-width}.
+ *
+ */
+public class DrawMarkerStartWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:marker-start-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerStartWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:marker-start-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:marker-start-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:marker-start-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMasterPageNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMasterPageNameAttribute.java
new file mode 100644
index 0000000..5777e0e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMasterPageNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:master-page-name}.
+ *
+ */
+public class DrawMasterPageNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "master-page-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:master-page-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMasterPageNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:master-page-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:master-page-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:master-page-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMayScriptAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMayScriptAttribute.java
new file mode 100644
index 0000000..65607dc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMayScriptAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:may-script}.
+ *
+ */
+public class DrawMayScriptAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "may-script");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:may-script}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMayScriptAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:may-script}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:may-script}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:may-script} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMeasureAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMeasureAlignAttribute.java
new file mode 100644
index 0000000..09b4fe0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMeasureAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:measure-align}.
+ *
+ */
+public class DrawMeasureAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "measure-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:measure-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMeasureAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:measure-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:measure-align}.
+	 */
+	public enum Value {
+		AUTOMATIC("automatic"), INSIDE("inside"), LEFT_OUTSIDE("left-outside"), RIGHT_OUTSIDE("right-outside") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:measure-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:measure-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMeasureVerticalAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMeasureVerticalAlignAttribute.java
new file mode 100644
index 0000000..2b06499
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMeasureVerticalAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:measure-vertical-align}.
+ *
+ */
+public class DrawMeasureVerticalAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "measure-vertical-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:measure-vertical-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMeasureVerticalAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:measure-vertical-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:measure-vertical-align}.
+	 */
+	public enum Value {
+		ABOVE("above"), AUTOMATIC("automatic"), BELOW("below"), CENTER("center") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:measure-vertical-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:measure-vertical-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMimeTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMimeTypeAttribute.java
new file mode 100644
index 0000000..610df86
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMimeTypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:mime-type}.
+ *
+ */
+public class DrawMimeTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "mime-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:mime-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMimeTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:mime-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:mime-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:mime-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMirrorHorizontalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMirrorHorizontalAttribute.java
new file mode 100644
index 0000000..093da0d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMirrorHorizontalAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:mirror-horizontal}.
+ *
+ */
+public class DrawMirrorHorizontalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "mirror-horizontal");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:mirror-horizontal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMirrorHorizontalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:mirror-horizontal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:mirror-horizontal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:mirror-horizontal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMirrorVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMirrorVerticalAttribute.java
new file mode 100644
index 0000000..5ca745b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawMirrorVerticalAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:mirror-vertical}.
+ *
+ */
+public class DrawMirrorVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "mirror-vertical");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:mirror-vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawMirrorVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:mirror-vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:mirror-vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:mirror-vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawModifiersAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawModifiersAttribute.java
new file mode 100644
index 0000000..720cdd0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawModifiersAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:modifiers}.
+ *
+ */
+public class DrawModifiersAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "modifiers");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:modifiers}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawModifiersAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:modifiers}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:modifiers}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:modifiers} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNameAttribute.java
new file mode 100644
index 0000000..d25d102
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:name}.
+ *
+ */
+public class DrawNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNavOrderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNavOrderAttribute.java
new file mode 100644
index 0000000..b40c6f3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNavOrderAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:nav-order}.
+ *
+ */
+public class DrawNavOrderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "nav-order");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:nav-order}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawNavOrderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:nav-order}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:nav-order}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:nav-order} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNohrefAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNohrefAttribute.java
new file mode 100644
index 0000000..ba94ddb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNohrefAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:nohref}.
+ *
+ */
+public class DrawNohrefAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "nohref");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:nohref}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawNohrefAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:nohref}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:nohref}.
+	 */
+	public enum Value {
+		NOHREF("nohref") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:nohref}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:nohref} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNotifyOnUpdateOfRangesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNotifyOnUpdateOfRangesAttribute.java
new file mode 100644
index 0000000..ab3737b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawNotifyOnUpdateOfRangesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:notify-on-update-of-ranges}.
+ *
+ */
+public class DrawNotifyOnUpdateOfRangesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "notify-on-update-of-ranges");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:notify-on-update-of-ranges}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawNotifyOnUpdateOfRangesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:notify-on-update-of-ranges}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:notify-on-update-of-ranges}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:notify-on-update-of-ranges} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawObjectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawObjectAttribute.java
new file mode 100644
index 0000000..008f97b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawObjectAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:object}.
+ *
+ */
+public class DrawObjectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "object");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:object}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawObjectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:object}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:object}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:object} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOleDrawAspectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOleDrawAspectAttribute.java
new file mode 100644
index 0000000..1c96b9a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOleDrawAspectAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:ole-draw-aspect}.
+ *
+ */
+public class DrawOleDrawAspectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "ole-draw-aspect");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:ole-draw-aspect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawOleDrawAspectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:ole-draw-aspect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:ole-draw-aspect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:ole-draw-aspect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOpacityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOpacityAttribute.java
new file mode 100644
index 0000000..b29fb16
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOpacityAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:opacity}.
+ *
+ */
+public class DrawOpacityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "opacity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:opacity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawOpacityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:opacity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:opacity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:opacity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOpacityNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOpacityNameAttribute.java
new file mode 100644
index 0000000..1e7d384
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawOpacityNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:opacity-name}.
+ *
+ */
+public class DrawOpacityNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "opacity-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:opacity-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawOpacityNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:opacity-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:opacity-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:opacity-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPageNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPageNumberAttribute.java
new file mode 100644
index 0000000..6098b66
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPageNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:page-number}.
+ *
+ */
+public class DrawPageNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "page-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:page-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawPageNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:page-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:page-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:page-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawParallelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawParallelAttribute.java
new file mode 100644
index 0000000..685c1da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawParallelAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:parallel}.
+ *
+ */
+public class DrawParallelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "parallel");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:parallel}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawParallelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:parallel}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:parallel}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:parallel} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPathStretchpointXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPathStretchpointXAttribute.java
new file mode 100644
index 0000000..16d6237
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPathStretchpointXAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:path-stretchpoint-x}.
+ *
+ */
+public class DrawPathStretchpointXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "path-stretchpoint-x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:path-stretchpoint-x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawPathStretchpointXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:path-stretchpoint-x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:path-stretchpoint-x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:path-stretchpoint-x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPathStretchpointYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPathStretchpointYAttribute.java
new file mode 100644
index 0000000..531f414
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPathStretchpointYAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:path-stretchpoint-y}.
+ *
+ */
+public class DrawPathStretchpointYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "path-stretchpoint-y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:path-stretchpoint-y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawPathStretchpointYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:path-stretchpoint-y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:path-stretchpoint-y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:path-stretchpoint-y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPlacingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPlacingAttribute.java
new file mode 100644
index 0000000..4d41731
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPlacingAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:placing}.
+ *
+ */
+public class DrawPlacingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "placing");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:placing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawPlacingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:placing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:placing}.
+	 */
+	public enum Value {
+		ABOVE("above"), BELOW("below") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:placing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:placing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPointsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPointsAttribute.java
new file mode 100644
index 0000000..c107320
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawPointsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:points}.
+ *
+ */
+public class DrawPointsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "points");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:points}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawPointsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:points}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:points}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:points} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawProtectedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawProtectedAttribute.java
new file mode 100644
index 0000000..7d19d41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawProtectedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:protected}.
+ *
+ */
+public class DrawProtectedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "protected");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:protected}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawProtectedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:protected}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:protected}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:protected} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRecreateOnEditAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRecreateOnEditAttribute.java
new file mode 100644
index 0000000..5872825
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRecreateOnEditAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:recreate-on-edit}.
+ *
+ */
+public class DrawRecreateOnEditAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "recreate-on-edit");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:recreate-on-edit}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawRecreateOnEditAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:recreate-on-edit}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:recreate-on-edit}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:recreate-on-edit} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRedAttribute.java
new file mode 100644
index 0000000..7bd6739
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRedAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:red}.
+ *
+ */
+public class DrawRedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "red");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:red}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawRedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:red}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:red}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:red} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRotationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRotationAttribute.java
new file mode 100644
index 0000000..f0fb0d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawRotationAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:rotation}.
+ *
+ */
+public class DrawRotationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "rotation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:rotation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawRotationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:rotation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:rotation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:rotation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSecondaryFillColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSecondaryFillColorAttribute.java
new file mode 100644
index 0000000..3384c4b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSecondaryFillColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:secondary-fill-color}.
+ *
+ */
+public class DrawSecondaryFillColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "secondary-fill-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:secondary-fill-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawSecondaryFillColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:secondary-fill-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:secondary-fill-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:secondary-fill-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowAttribute.java
new file mode 100644
index 0000000..e35cc41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:shadow}.
+ *
+ */
+public class DrawShadowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "shadow");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:shadow}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShadowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:shadow}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:shadow}.
+	 */
+	public enum Value {
+		HIDDEN("hidden"), VISIBLE("visible") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:shadow}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:shadow} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowColorAttribute.java
new file mode 100644
index 0000000..c4d0ba5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:shadow-color}.
+ *
+ */
+public class DrawShadowColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:shadow-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShadowColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:shadow-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:shadow-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:shadow-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOffsetXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOffsetXAttribute.java
new file mode 100644
index 0000000..7611ae0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOffsetXAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:shadow-offset-x}.
+ *
+ */
+public class DrawShadowOffsetXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-offset-x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:shadow-offset-x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShadowOffsetXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:shadow-offset-x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:shadow-offset-x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:shadow-offset-x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOffsetYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOffsetYAttribute.java
new file mode 100644
index 0000000..68b0fe3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOffsetYAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:shadow-offset-y}.
+ *
+ */
+public class DrawShadowOffsetYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-offset-y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:shadow-offset-y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShadowOffsetYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:shadow-offset-y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:shadow-offset-y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:shadow-offset-y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOpacityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOpacityAttribute.java
new file mode 100644
index 0000000..44513c9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShadowOpacityAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:shadow-opacity}.
+ *
+ */
+public class DrawShadowOpacityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-opacity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:shadow-opacity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShadowOpacityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:shadow-opacity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:shadow-opacity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:shadow-opacity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShapeIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShapeIdAttribute.java
new file mode 100644
index 0000000..3503cf7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShapeIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:shape-id}.
+ *
+ */
+public class DrawShapeIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "shape-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:shape-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShapeIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:shape-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:shape-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:shape-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSharpnessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSharpnessAttribute.java
new file mode 100644
index 0000000..a45dff4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSharpnessAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:sharpness}.
+ *
+ */
+public class DrawSharpnessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "sharpness");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:sharpness}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawSharpnessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:sharpness}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:sharpness}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:sharpness} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShowUnitAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShowUnitAttribute.java
new file mode 100644
index 0000000..b2e4ea7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawShowUnitAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:show-unit}.
+ *
+ */
+public class DrawShowUnitAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "show-unit");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:show-unit}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawShowUnitAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:show-unit}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:show-unit}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:show-unit} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartAngleAttribute.java
new file mode 100644
index 0000000..f9e73b8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-angle}.
+ *
+ */
+public class DrawStartAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartAttribute.java
new file mode 100644
index 0000000..f3faab8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start}.
+ *
+ */
+public class DrawStartAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartColorAttribute.java
new file mode 100644
index 0000000..91fcdb9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-color}.
+ *
+ */
+public class DrawStartColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartGluePointAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartGluePointAttribute.java
new file mode 100644
index 0000000..d1158ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartGluePointAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-glue-point}.
+ *
+ */
+public class DrawStartGluePointAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-glue-point");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-glue-point}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartGluePointAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-glue-point}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-glue-point}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-glue-point} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartGuideAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartGuideAttribute.java
new file mode 100644
index 0000000..70e3b8a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartGuideAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-guide}.
+ *
+ */
+public class DrawStartGuideAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-guide");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-guide}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartGuideAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-guide}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-guide}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-guide} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartIntensityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartIntensityAttribute.java
new file mode 100644
index 0000000..fc133c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartIntensityAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-intensity}.
+ *
+ */
+public class DrawStartIntensityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-intensity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-intensity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartIntensityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-intensity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-intensity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-intensity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartLineSpacingHorizontalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartLineSpacingHorizontalAttribute.java
new file mode 100644
index 0000000..59d1158
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartLineSpacingHorizontalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-line-spacing-horizontal}.
+ *
+ */
+public class DrawStartLineSpacingHorizontalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-line-spacing-horizontal");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-line-spacing-horizontal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartLineSpacingHorizontalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-line-spacing-horizontal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-line-spacing-horizontal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-line-spacing-horizontal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartLineSpacingVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartLineSpacingVerticalAttribute.java
new file mode 100644
index 0000000..c9d1c1d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartLineSpacingVerticalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-line-spacing-vertical}.
+ *
+ */
+public class DrawStartLineSpacingVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-line-spacing-vertical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-line-spacing-vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartLineSpacingVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-line-spacing-vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-line-spacing-vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-line-spacing-vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartShapeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartShapeAttribute.java
new file mode 100644
index 0000000..d0ce742
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStartShapeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:start-shape}.
+ *
+ */
+public class DrawStartShapeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "start-shape");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:start-shape}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStartShapeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:start-shape}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:start-shape}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:start-shape} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeAttribute.java
new file mode 100644
index 0000000..5321363
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:stroke}.
+ *
+ */
+public class DrawStrokeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "stroke");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:stroke}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStrokeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:stroke}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:stroke}.
+	 */
+	public enum Value {
+		DASH("dash"), NONE("none"), SOLID("solid") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:stroke}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:stroke} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeDashAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeDashAttribute.java
new file mode 100644
index 0000000..187c6bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeDashAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:stroke-dash}.
+ *
+ */
+public class DrawStrokeDashAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:stroke-dash}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStrokeDashAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:stroke-dash}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:stroke-dash}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:stroke-dash} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeDashNamesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeDashNamesAttribute.java
new file mode 100644
index 0000000..2d6447d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeDashNamesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:stroke-dash-names}.
+ *
+ */
+public class DrawStrokeDashNamesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash-names");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:stroke-dash-names}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStrokeDashNamesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:stroke-dash-names}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:stroke-dash-names}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:stroke-dash-names} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeLinejoinAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeLinejoinAttribute.java
new file mode 100644
index 0000000..90417fa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStrokeLinejoinAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:stroke-linejoin}.
+ *
+ */
+public class DrawStrokeLinejoinAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-linejoin");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:stroke-linejoin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStrokeLinejoinAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:stroke-linejoin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:stroke-linejoin}.
+	 */
+	public enum Value {
+		BEVEL("bevel"), MIDDLE("middle"), MITER("miter"), NONE("none"), ROUND("round") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:stroke-linejoin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:stroke-linejoin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStyleAttribute.java
new file mode 100644
index 0000000..449b4d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:style}.
+ *
+ */
+public class DrawStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:style}.
+	 */
+	public enum Value {
+		AXIAL("axial"), DOUBLE("double"), ELLIPSOID("ellipsoid"), LINEAR("linear"), RADIAL("radial"), RECT("rect"), RECTANGULAR("rectangular"), ROUND("round"), SINGLE("single"), SQUARE("square"), TRIPLE("triple") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStyleNameAttribute.java
new file mode 100644
index 0000000..f1d7898
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:style-name}.
+ *
+ */
+public class DrawStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSymbolColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSymbolColorAttribute.java
new file mode 100644
index 0000000..2d65aaa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawSymbolColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:symbol-color}.
+ *
+ */
+public class DrawSymbolColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "symbol-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:symbol-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawSymbolColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:symbol-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:symbol-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:symbol-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextAreasAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextAreasAttribute.java
new file mode 100644
index 0000000..830cb1e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextAreasAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-areas}.
+ *
+ */
+public class DrawTextAreasAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-areas");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-areas}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextAreasAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-areas}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-areas}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-areas} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathAllowedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathAllowedAttribute.java
new file mode 100644
index 0000000..78331f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathAllowedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-path-allowed}.
+ *
+ */
+public class DrawTextPathAllowedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-path-allowed");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-path-allowed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextPathAllowedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-path-allowed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-path-allowed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-path-allowed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathAttribute.java
new file mode 100644
index 0000000..8c2f869
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-path}.
+ *
+ */
+public class DrawTextPathAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-path");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-path}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextPathAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-path}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-path}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-path} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathModeAttribute.java
new file mode 100644
index 0000000..99c1b03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathModeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-path-mode}.
+ *
+ */
+public class DrawTextPathModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-path-mode");
+	public static final String DEFAULT_VALUE = "normal";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-path-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextPathModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-path-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:text-path-mode}.
+	 */
+	public enum Value {
+		NORMAL("normal"), PATH("path"), SHAPE("shape") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-path-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-path-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathSameLetterHeightsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathSameLetterHeightsAttribute.java
new file mode 100644
index 0000000..ba845df
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathSameLetterHeightsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-path-same-letter-heights}.
+ *
+ */
+public class DrawTextPathSameLetterHeightsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-path-same-letter-heights");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-path-same-letter-heights}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextPathSameLetterHeightsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-path-same-letter-heights}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-path-same-letter-heights}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-path-same-letter-heights} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathScaleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathScaleAttribute.java
new file mode 100644
index 0000000..58ec77f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextPathScaleAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-path-scale}.
+ *
+ */
+public class DrawTextPathScaleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-path-scale");
+	public static final String DEFAULT_VALUE = "path";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-path-scale}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextPathScaleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-path-scale}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:text-path-scale}.
+	 */
+	public enum Value {
+		PATH("path"), SHAPE("shape") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-path-scale}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-path-scale} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextRotateAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextRotateAngleAttribute.java
new file mode 100644
index 0000000..29b37e5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextRotateAngleAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-rotate-angle}.
+ *
+ */
+public class DrawTextRotateAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-rotate-angle");
+	public static final String DEFAULT_VALUE = "0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-rotate-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextRotateAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-rotate-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-rotate-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-rotate-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextStyleNameAttribute.java
new file mode 100644
index 0000000..2ec2d6b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:text-style-name}.
+ *
+ */
+public class DrawTextStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:text-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:text-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:text-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:text-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextareaHorizontalAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextareaHorizontalAlignAttribute.java
new file mode 100644
index 0000000..98a7760
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextareaHorizontalAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:textarea-horizontal-align}.
+ *
+ */
+public class DrawTextareaHorizontalAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "textarea-horizontal-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:textarea-horizontal-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextareaHorizontalAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:textarea-horizontal-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:textarea-horizontal-align}.
+	 */
+	public enum Value {
+		CENTER("center"), JUSTIFY("justify"), LEFT("left"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:textarea-horizontal-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:textarea-horizontal-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextareaVerticalAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextareaVerticalAlignAttribute.java
new file mode 100644
index 0000000..cffc72c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTextareaVerticalAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:textarea-vertical-align}.
+ *
+ */
+public class DrawTextareaVerticalAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "textarea-vertical-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:textarea-vertical-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextareaVerticalAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:textarea-vertical-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:textarea-vertical-align}.
+	 */
+	public enum Value {
+		BOTTOM("bottom"), JUSTIFY("justify"), MIDDLE("middle"), TOP("top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:textarea-vertical-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:textarea-vertical-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTileRepeatOffsetAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTileRepeatOffsetAttribute.java
new file mode 100644
index 0000000..035bda2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTileRepeatOffsetAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:tile-repeat-offset}.
+ *
+ */
+public class DrawTileRepeatOffsetAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "tile-repeat-offset");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:tile-repeat-offset}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTileRepeatOffsetAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:tile-repeat-offset}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:tile-repeat-offset}.
+	 */
+	public enum Value {
+		HORIZONTAL("horizontal"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:tile-repeat-offset}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:tile-repeat-offset} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTransformAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTransformAttribute.java
new file mode 100644
index 0000000..5be28f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTransformAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:transform}.
+ *
+ */
+public class DrawTransformAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "transform");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:transform}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTransformAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:transform}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:transform}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:transform} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTypeAttribute.java
new file mode 100644
index 0000000..c6c9724
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawTypeAttribute.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEnhancedGeometryElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:type}.
+ *
+ */
+public class DrawTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "type");
+	public static final String DEFAULT_VALUE_STANDARD = Value.STANDARD.toString();
+	public static final String DEFAULT_VALUE_NON_PRIMITIVE = Value.NON_PRIMITIVE.toString();
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:type}.
+	 */
+	public enum Value {
+		CURVE("curve"), LINE("line"), LINES("lines"), NON_PRIMITIVE("non-primitive"), STANDARD("standard") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof DrawConnectorElement) {
+				defaultValue = DEFAULT_VALUE_STANDARD;
+			}
+			if (parentElement instanceof DrawEnhancedGeometryElement) {
+				defaultValue = DEFAULT_VALUE_NON_PRIMITIVE;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawUnitAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawUnitAttribute.java
new file mode 100644
index 0000000..d680ba6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawUnitAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:unit}.
+ *
+ */
+public class DrawUnitAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "unit");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:unit}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawUnitAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:unit}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:unit}.
+	 */
+	public enum Value {
+		AUTOMATIC("automatic"), CM("cm"), FT("ft"), INCH("inch"), KM("km"), m("m"), MI("mi"), MM("mm"), PC("pc"), PT("pt") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:unit}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:unit} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawValueAttribute.java
new file mode 100644
index 0000000..d62dcf9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:value}.
+ *
+ */
+public class DrawValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaHeightAttribute.java
new file mode 100644
index 0000000..30af74c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:visible-area-height}.
+ *
+ */
+public class DrawVisibleAreaHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:visible-area-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawVisibleAreaHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:visible-area-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:visible-area-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:visible-area-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaLeftAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaLeftAttribute.java
new file mode 100644
index 0000000..3144b15
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaLeftAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:visible-area-left}.
+ *
+ */
+public class DrawVisibleAreaLeftAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-left");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:visible-area-left}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawVisibleAreaLeftAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:visible-area-left}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:visible-area-left}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:visible-area-left} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaTopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaTopAttribute.java
new file mode 100644
index 0000000..4f7abe4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaTopAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:visible-area-top}.
+ *
+ */
+public class DrawVisibleAreaTopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-top");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:visible-area-top}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawVisibleAreaTopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:visible-area-top}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:visible-area-top}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:visible-area-top} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaWidthAttribute.java
new file mode 100644
index 0000000..3a19b71
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawVisibleAreaWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:visible-area-width}.
+ *
+ */
+public class DrawVisibleAreaWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:visible-area-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawVisibleAreaWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:visible-area-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:visible-area-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:visible-area-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawWrapInfluenceOnPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawWrapInfluenceOnPositionAttribute.java
new file mode 100644
index 0000000..fb06883
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawWrapInfluenceOnPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:wrap-influence-on-position}.
+ *
+ */
+public class DrawWrapInfluenceOnPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "wrap-influence-on-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:wrap-influence-on-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawWrapInfluenceOnPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:wrap-influence-on-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute draw:wrap-influence-on-position}.
+	 */
+	public enum Value {
+		ITERATIVE("iterative"), ONCE_CONCURRENT("once-concurrent"), ONCE_SUCCESSIVE("once-successive") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:wrap-influence-on-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:wrap-influence-on-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawZIndexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawZIndexAttribute.java
new file mode 100644
index 0000000..ba9026c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/draw/DrawZIndexAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.draw;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute draw:z-index}.
+ *
+ */
+public class DrawZIndexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "z-index");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute draw:z-index}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public DrawZIndexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute draw:z-index}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute draw:z-index}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute draw:z-index} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBackgroundColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBackgroundColorAttribute.java
new file mode 100644
index 0000000..f34920c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBackgroundColorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:background-color}.
+ *
+ */
+public class FoBackgroundColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "background-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:background-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBackgroundColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:background-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:background-color}.
+	 */
+	public enum Value {
+		TRANSPARENT("transparent") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:background-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:background-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderAttribute.java
new file mode 100644
index 0000000..b89779c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:border}.
+ *
+ */
+public class FoBorderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "border");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:border}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBorderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:border}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:border}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:border} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderBottomAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderBottomAttribute.java
new file mode 100644
index 0000000..eb7726b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderBottomAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:border-bottom}.
+ *
+ */
+public class FoBorderBottomAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "border-bottom");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:border-bottom}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBorderBottomAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:border-bottom}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:border-bottom}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:border-bottom} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderLeftAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderLeftAttribute.java
new file mode 100644
index 0000000..c523a7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderLeftAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:border-left}.
+ *
+ */
+public class FoBorderLeftAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "border-left");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:border-left}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBorderLeftAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:border-left}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:border-left}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:border-left} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderRightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderRightAttribute.java
new file mode 100644
index 0000000..16d079d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderRightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:border-right}.
+ *
+ */
+public class FoBorderRightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "border-right");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:border-right}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBorderRightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:border-right}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:border-right}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:border-right} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderTopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderTopAttribute.java
new file mode 100644
index 0000000..864c30a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBorderTopAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:border-top}.
+ *
+ */
+public class FoBorderTopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "border-top");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:border-top}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBorderTopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:border-top}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:border-top}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:border-top} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBreakAfterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBreakAfterAttribute.java
new file mode 100644
index 0000000..8de261d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBreakAfterAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:break-after}.
+ *
+ */
+public class FoBreakAfterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "break-after");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:break-after}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBreakAfterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:break-after}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:break-after}.
+	 */
+	public enum Value {
+		AUTO("auto"), COLUMN("column"), PAGE("page") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:break-after}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:break-after} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBreakBeforeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBreakBeforeAttribute.java
new file mode 100644
index 0000000..d43f2a8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoBreakBeforeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:break-before}.
+ *
+ */
+public class FoBreakBeforeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "break-before");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:break-before}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoBreakBeforeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:break-before}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:break-before}.
+	 */
+	public enum Value {
+		AUTO("auto"), COLUMN("column"), PAGE("page") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:break-before}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:break-before} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoClipAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoClipAttribute.java
new file mode 100644
index 0000000..a5029c9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoClipAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:clip}.
+ *
+ */
+public class FoClipAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "clip");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:clip}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoClipAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:clip}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:clip}.
+	 */
+	public enum Value {
+		AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:clip}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:clip} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColorAttribute.java
new file mode 100644
index 0000000..5452ced
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:color}.
+ *
+ */
+public class FoColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColumnCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColumnCountAttribute.java
new file mode 100644
index 0000000..da10538
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColumnCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:column-count}.
+ *
+ */
+public class FoColumnCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "column-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:column-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoColumnCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:column-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:column-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:column-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColumnGapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColumnGapAttribute.java
new file mode 100644
index 0000000..5c67f13
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoColumnGapAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:column-gap}.
+ *
+ */
+public class FoColumnGapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "column-gap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:column-gap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoColumnGapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:column-gap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:column-gap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:column-gap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoCountryAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoCountryAttribute.java
new file mode 100644
index 0000000..c34b330
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoCountryAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:country}.
+ *
+ */
+public class FoCountryAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "country");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:country}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoCountryAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:country}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:country}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:country} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoEndIndentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoEndIndentAttribute.java
new file mode 100644
index 0000000..3073187
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoEndIndentAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:end-indent}.
+ *
+ */
+public class FoEndIndentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "end-indent");
+	public static final String DEFAULT_VALUE = "0cm";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:end-indent}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoEndIndentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:end-indent}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:end-indent}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:end-indent} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontFamilyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontFamilyAttribute.java
new file mode 100644
index 0000000..94b8b76
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontFamilyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:font-family}.
+ *
+ */
+public class FoFontFamilyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "font-family");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:font-family}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoFontFamilyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:font-family}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:font-family}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:font-family} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontSizeAttribute.java
new file mode 100644
index 0000000..a268d91
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontSizeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:font-size}.
+ *
+ */
+public class FoFontSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "font-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:font-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoFontSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:font-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:font-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:font-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontStyleAttribute.java
new file mode 100644
index 0000000..5ec7be5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:font-style}.
+ *
+ */
+public class FoFontStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "font-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:font-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoFontStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:font-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:font-style}.
+	 */
+	public enum Value {
+		ITALIC("italic"), NORMAL("normal"), OBLIQUE("oblique") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:font-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:font-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontVariantAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontVariantAttribute.java
new file mode 100644
index 0000000..b251670
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontVariantAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:font-variant}.
+ *
+ */
+public class FoFontVariantAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "font-variant");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:font-variant}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoFontVariantAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:font-variant}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:font-variant}.
+	 */
+	public enum Value {
+		NORMAL("normal"), SMALL_CAPS("small-caps") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:font-variant}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:font-variant} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontWeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontWeightAttribute.java
new file mode 100644
index 0000000..ccb25dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoFontWeightAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:font-weight}.
+ *
+ */
+public class FoFontWeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "font-weight");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:font-weight}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoFontWeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:font-weight}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:font-weight}.
+	 */
+	public enum Value {
+		_100("100"), _200("200"), _300("300"), _400("400"), _500("500"), _600("600"), _700("700"), _800("800"), _900("900"), BOLD("bold"), NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:font-weight}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:font-weight} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHeightAttribute.java
new file mode 100644
index 0000000..e000550
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:height}.
+ *
+ */
+public class FoHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenateAttribute.java
new file mode 100644
index 0000000..ca2eb4d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenateAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:hyphenate}.
+ *
+ */
+public class FoHyphenateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "hyphenate");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:hyphenate}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoHyphenateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:hyphenate}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:hyphenate}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:hyphenate} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationKeepAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationKeepAttribute.java
new file mode 100644
index 0000000..aaab846
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationKeepAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:hyphenation-keep}.
+ *
+ */
+public class FoHyphenationKeepAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-keep");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:hyphenation-keep}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoHyphenationKeepAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:hyphenation-keep}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:hyphenation-keep}.
+	 */
+	public enum Value {
+		AUTO("auto"), PAGE("page") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:hyphenation-keep}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:hyphenation-keep} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationLadderCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationLadderCountAttribute.java
new file mode 100644
index 0000000..f2a8e3e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationLadderCountAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:hyphenation-ladder-count}.
+ *
+ */
+public class FoHyphenationLadderCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-ladder-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:hyphenation-ladder-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoHyphenationLadderCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:hyphenation-ladder-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:hyphenation-ladder-count}.
+	 */
+	public enum Value {
+		NO_LIMIT("no-limit") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:hyphenation-ladder-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:hyphenation-ladder-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationPushCharCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationPushCharCountAttribute.java
new file mode 100644
index 0000000..822ed42
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationPushCharCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:hyphenation-push-char-count}.
+ *
+ */
+public class FoHyphenationPushCharCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-push-char-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:hyphenation-push-char-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoHyphenationPushCharCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:hyphenation-push-char-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:hyphenation-push-char-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:hyphenation-push-char-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationRemainCharCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationRemainCharCountAttribute.java
new file mode 100644
index 0000000..cd1471c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoHyphenationRemainCharCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:hyphenation-remain-char-count}.
+ *
+ */
+public class FoHyphenationRemainCharCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-remain-char-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:hyphenation-remain-char-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoHyphenationRemainCharCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:hyphenation-remain-char-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:hyphenation-remain-char-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:hyphenation-remain-char-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoKeepTogetherAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoKeepTogetherAttribute.java
new file mode 100644
index 0000000..772e737
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoKeepTogetherAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:keep-together}.
+ *
+ */
+public class FoKeepTogetherAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "keep-together");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:keep-together}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoKeepTogetherAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:keep-together}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:keep-together}.
+	 */
+	public enum Value {
+		ALWAYS("always"), AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:keep-together}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:keep-together} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoKeepWithNextAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoKeepWithNextAttribute.java
new file mode 100644
index 0000000..41eaec4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoKeepWithNextAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:keep-with-next}.
+ *
+ */
+public class FoKeepWithNextAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "keep-with-next");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:keep-with-next}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoKeepWithNextAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:keep-with-next}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:keep-with-next}.
+	 */
+	public enum Value {
+		ALWAYS("always"), AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:keep-with-next}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:keep-with-next} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLanguageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLanguageAttribute.java
new file mode 100644
index 0000000..1b9259f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLanguageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:language}.
+ *
+ */
+public class FoLanguageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "language");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:language}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoLanguageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:language}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:language}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:language} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLetterSpacingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLetterSpacingAttribute.java
new file mode 100644
index 0000000..f6a917c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLetterSpacingAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:letter-spacing}.
+ *
+ */
+public class FoLetterSpacingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "letter-spacing");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:letter-spacing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoLetterSpacingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:letter-spacing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:letter-spacing}.
+	 */
+	public enum Value {
+		NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:letter-spacing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:letter-spacing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLineHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLineHeightAttribute.java
new file mode 100644
index 0000000..a4329ce
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoLineHeightAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:line-height}.
+ *
+ */
+public class FoLineHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "line-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:line-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoLineHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:line-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:line-height}.
+	 */
+	public enum Value {
+		NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:line-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:line-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginAttribute.java
new file mode 100644
index 0000000..7127357
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:margin}.
+ *
+ */
+public class FoMarginAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "margin");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:margin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMarginAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:margin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:margin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:margin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginBottomAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginBottomAttribute.java
new file mode 100644
index 0000000..7cb9bee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginBottomAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:margin-bottom}.
+ *
+ */
+public class FoMarginBottomAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:margin-bottom}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMarginBottomAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:margin-bottom}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:margin-bottom}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:margin-bottom} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginLeftAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginLeftAttribute.java
new file mode 100644
index 0000000..61f7f4c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginLeftAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:margin-left}.
+ *
+ */
+public class FoMarginLeftAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "margin-left");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:margin-left}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMarginLeftAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:margin-left}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:margin-left}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:margin-left} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginRightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginRightAttribute.java
new file mode 100644
index 0000000..f0c73ae
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginRightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:margin-right}.
+ *
+ */
+public class FoMarginRightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "margin-right");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:margin-right}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMarginRightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:margin-right}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:margin-right}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:margin-right} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginTopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginTopAttribute.java
new file mode 100644
index 0000000..768f3ac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMarginTopAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:margin-top}.
+ *
+ */
+public class FoMarginTopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "margin-top");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:margin-top}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMarginTopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:margin-top}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:margin-top}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:margin-top} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMaxHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMaxHeightAttribute.java
new file mode 100644
index 0000000..cb6be35
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMaxHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:max-height}.
+ *
+ */
+public class FoMaxHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "max-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:max-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMaxHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:max-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:max-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:max-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMaxWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMaxWidthAttribute.java
new file mode 100644
index 0000000..26ec6cc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMaxWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:max-width}.
+ *
+ */
+public class FoMaxWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "max-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:max-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMaxWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:max-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:max-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:max-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMinHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMinHeightAttribute.java
new file mode 100644
index 0000000..7d2a32b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMinHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:min-height}.
+ *
+ */
+public class FoMinHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "min-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:min-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMinHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:min-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:min-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:min-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMinWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMinWidthAttribute.java
new file mode 100644
index 0000000..2c5fc02
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoMinWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:min-width}.
+ *
+ */
+public class FoMinWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "min-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:min-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoMinWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:min-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:min-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:min-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoOrphansAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoOrphansAttribute.java
new file mode 100644
index 0000000..38baa82
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoOrphansAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:orphans}.
+ *
+ */
+public class FoOrphansAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "orphans");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:orphans}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoOrphansAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:orphans}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:orphans}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:orphans} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingAttribute.java
new file mode 100644
index 0000000..dfaf4a0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:padding}.
+ *
+ */
+public class FoPaddingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "padding");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:padding}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPaddingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:padding}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:padding}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:padding} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingBottomAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingBottomAttribute.java
new file mode 100644
index 0000000..50742a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingBottomAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:padding-bottom}.
+ *
+ */
+public class FoPaddingBottomAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:padding-bottom}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPaddingBottomAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:padding-bottom}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:padding-bottom}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:padding-bottom} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingLeftAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingLeftAttribute.java
new file mode 100644
index 0000000..72f6143
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingLeftAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:padding-left}.
+ *
+ */
+public class FoPaddingLeftAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "padding-left");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:padding-left}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPaddingLeftAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:padding-left}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:padding-left}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:padding-left} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingRightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingRightAttribute.java
new file mode 100644
index 0000000..d6cf467
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingRightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:padding-right}.
+ *
+ */
+public class FoPaddingRightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "padding-right");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:padding-right}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPaddingRightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:padding-right}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:padding-right}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:padding-right} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingTopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingTopAttribute.java
new file mode 100644
index 0000000..4b58f0f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPaddingTopAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:padding-top}.
+ *
+ */
+public class FoPaddingTopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "padding-top");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:padding-top}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPaddingTopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:padding-top}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:padding-top}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:padding-top} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPageHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPageHeightAttribute.java
new file mode 100644
index 0000000..7783a81
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPageHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:page-height}.
+ *
+ */
+public class FoPageHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "page-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:page-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPageHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:page-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:page-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:page-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPageWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPageWidthAttribute.java
new file mode 100644
index 0000000..764f4cb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoPageWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:page-width}.
+ *
+ */
+public class FoPageWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "page-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:page-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoPageWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:page-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:page-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:page-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoScriptAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoScriptAttribute.java
new file mode 100644
index 0000000..976dee6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoScriptAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:script}.
+ *
+ */
+public class FoScriptAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "script");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:script}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoScriptAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:script}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:script}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:script} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoSpaceAfterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoSpaceAfterAttribute.java
new file mode 100644
index 0000000..df153c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoSpaceAfterAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:space-after}.
+ *
+ */
+public class FoSpaceAfterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "space-after");
+	public static final String DEFAULT_VALUE = "0cm";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:space-after}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoSpaceAfterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:space-after}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:space-after}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:space-after} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoSpaceBeforeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoSpaceBeforeAttribute.java
new file mode 100644
index 0000000..9c2da39
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoSpaceBeforeAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:space-before}.
+ *
+ */
+public class FoSpaceBeforeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "space-before");
+	public static final String DEFAULT_VALUE = "0cm";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:space-before}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoSpaceBeforeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:space-before}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:space-before}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:space-before} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoStartIndentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoStartIndentAttribute.java
new file mode 100644
index 0000000..ac5d1c0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoStartIndentAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:start-indent}.
+ *
+ */
+public class FoStartIndentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "start-indent");
+	public static final String DEFAULT_VALUE = "0cm";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:start-indent}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoStartIndentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:start-indent}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:start-indent}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:start-indent} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextAlignAttribute.java
new file mode 100644
index 0000000..1d9e621
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:text-align}.
+ *
+ */
+public class FoTextAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "text-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:text-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoTextAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:text-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:text-align}.
+	 */
+	public enum Value {
+		CENTER("center"), END("end"), JUSTIFY("justify"), LEFT("left"), RIGHT("right"), START("start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:text-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:text-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextAlignLastAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextAlignLastAttribute.java
new file mode 100644
index 0000000..39bb289
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextAlignLastAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:text-align-last}.
+ *
+ */
+public class FoTextAlignLastAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "text-align-last");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:text-align-last}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoTextAlignLastAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:text-align-last}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:text-align-last}.
+	 */
+	public enum Value {
+		CENTER("center"), JUSTIFY("justify"), START("start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:text-align-last}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:text-align-last} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextIndentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextIndentAttribute.java
new file mode 100644
index 0000000..51666c5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextIndentAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:text-indent}.
+ *
+ */
+public class FoTextIndentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "text-indent");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:text-indent}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoTextIndentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:text-indent}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:text-indent}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:text-indent} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextShadowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextShadowAttribute.java
new file mode 100644
index 0000000..2b3d1b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextShadowAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:text-shadow}.
+ *
+ */
+public class FoTextShadowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "text-shadow");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:text-shadow}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoTextShadowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:text-shadow}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:text-shadow}.
+	 */
+	public enum Value {
+		NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:text-shadow}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:text-shadow} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextTransformAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextTransformAttribute.java
new file mode 100644
index 0000000..89aa7ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoTextTransformAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:text-transform}.
+ *
+ */
+public class FoTextTransformAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "text-transform");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:text-transform}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoTextTransformAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:text-transform}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:text-transform}.
+	 */
+	public enum Value {
+		CAPITALIZE("capitalize"), LOWERCASE("lowercase"), NONE("none"), UPPERCASE("uppercase") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:text-transform}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:text-transform} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWidowsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWidowsAttribute.java
new file mode 100644
index 0000000..ea9486e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWidowsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:widows}.
+ *
+ */
+public class FoWidowsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "widows");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:widows}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoWidowsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:widows}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:widows}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:widows} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWidthAttribute.java
new file mode 100644
index 0000000..1c8d085
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:width}.
+ *
+ */
+public class FoWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWrapOptionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWrapOptionAttribute.java
new file mode 100644
index 0000000..c21595e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/fo/FoWrapOptionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.fo;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute fo:wrap-option}.
+ *
+ */
+public class FoWrapOptionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FO, "wrap-option");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute fo:wrap-option}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FoWrapOptionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute fo:wrap-option}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute fo:wrap-option}.
+	 */
+	public enum Value {
+		NO_WRAP("no-wrap"), WRAP("wrap") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute fo:wrap-option}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute fo:wrap-option} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowDeletesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowDeletesAttribute.java
new file mode 100644
index 0000000..791b797
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowDeletesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:allow-deletes}.
+ *
+ */
+public class FormAllowDeletesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "allow-deletes");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:allow-deletes}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormAllowDeletesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:allow-deletes}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:allow-deletes}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:allow-deletes} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowInsertsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowInsertsAttribute.java
new file mode 100644
index 0000000..26611b8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowInsertsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:allow-inserts}.
+ *
+ */
+public class FormAllowInsertsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "allow-inserts");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:allow-inserts}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormAllowInsertsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:allow-inserts}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:allow-inserts}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:allow-inserts} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowUpdatesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowUpdatesAttribute.java
new file mode 100644
index 0000000..8e76908
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAllowUpdatesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:allow-updates}.
+ *
+ */
+public class FormAllowUpdatesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "allow-updates");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:allow-updates}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormAllowUpdatesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:allow-updates}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:allow-updates}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:allow-updates} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormApplyDesignModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormApplyDesignModeAttribute.java
new file mode 100644
index 0000000..6eb4bfb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormApplyDesignModeAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:apply-design-mode}.
+ *
+ */
+public class FormApplyDesignModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "apply-design-mode");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:apply-design-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormApplyDesignModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:apply-design-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:apply-design-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:apply-design-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormApplyFilterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormApplyFilterAttribute.java
new file mode 100644
index 0000000..52e09f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormApplyFilterAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:apply-filter}.
+ *
+ */
+public class FormApplyFilterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "apply-filter");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:apply-filter}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormApplyFilterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:apply-filter}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:apply-filter}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:apply-filter} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAutoCompleteAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAutoCompleteAttribute.java
new file mode 100644
index 0000000..17527b1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAutoCompleteAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:auto-complete}.
+ *
+ */
+public class FormAutoCompleteAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "auto-complete");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:auto-complete}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormAutoCompleteAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:auto-complete}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:auto-complete}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:auto-complete} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAutomaticFocusAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAutomaticFocusAttribute.java
new file mode 100644
index 0000000..2a5eb98
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormAutomaticFocusAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:automatic-focus}.
+ *
+ */
+public class FormAutomaticFocusAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "automatic-focus");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:automatic-focus}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormAutomaticFocusAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:automatic-focus}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:automatic-focus}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:automatic-focus} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormBoundColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormBoundColumnAttribute.java
new file mode 100644
index 0000000..51fc41c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormBoundColumnAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:bound-column}.
+ *
+ */
+public class FormBoundColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "bound-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:bound-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormBoundColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:bound-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:bound-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:bound-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormButtonTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormButtonTypeAttribute.java
new file mode 100644
index 0000000..b3848bf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormButtonTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:button-type}.
+ *
+ */
+public class FormButtonTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "button-type");
+	public static final String DEFAULT_VALUE = "push";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:button-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormButtonTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:button-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:button-type}.
+	 */
+	public enum Value {
+		PUSH("push"), RESET("reset"), SUBMIT("submit"), URL("url") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:button-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:button-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCommandAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCommandAttribute.java
new file mode 100644
index 0000000..9704cb9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCommandAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:command}.
+ *
+ */
+public class FormCommandAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "command");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:command}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormCommandAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:command}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:command}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:command} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCommandTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCommandTypeAttribute.java
new file mode 100644
index 0000000..06038e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCommandTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:command-type}.
+ *
+ */
+public class FormCommandTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "command-type");
+	public static final String DEFAULT_VALUE = "command";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:command-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormCommandTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:command-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:command-type}.
+	 */
+	public enum Value {
+		COMMAND("command"), QUERY("query"), TABLE("table") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:command-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:command-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormControlImplementationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormControlImplementationAttribute.java
new file mode 100644
index 0000000..6f17839
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormControlImplementationAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:control-implementation}.
+ *
+ */
+public class FormControlImplementationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "control-implementation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:control-implementation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormControlImplementationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:control-implementation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:control-implementation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:control-implementation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormConvertEmptyToNullAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormConvertEmptyToNullAttribute.java
new file mode 100644
index 0000000..1ea514e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormConvertEmptyToNullAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:convert-empty-to-null}.
+ *
+ */
+public class FormConvertEmptyToNullAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:convert-empty-to-null}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormConvertEmptyToNullAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:convert-empty-to-null}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:convert-empty-to-null}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:convert-empty-to-null} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentSelectedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentSelectedAttribute.java
new file mode 100644
index 0000000..f18c250
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentSelectedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:current-selected}.
+ *
+ */
+public class FormCurrentSelectedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "current-selected");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:current-selected}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormCurrentSelectedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:current-selected}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:current-selected}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:current-selected} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentStateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentStateAttribute.java
new file mode 100644
index 0000000..0d82a57
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentStateAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:current-state}.
+ *
+ */
+public class FormCurrentStateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "current-state");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:current-state}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormCurrentStateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:current-state}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:current-state}.
+	 */
+	public enum Value {
+		CHECKED("checked"), UNCHECKED("unchecked"), UNKNOWN("unknown") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:current-state}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:current-state} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentValueAttribute.java
new file mode 100644
index 0000000..12875dc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormCurrentValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:current-value}.
+ *
+ */
+public class FormCurrentValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "current-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:current-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormCurrentValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:current-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:current-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:current-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDataFieldAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDataFieldAttribute.java
new file mode 100644
index 0000000..37ba771
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDataFieldAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:data-field}.
+ *
+ */
+public class FormDataFieldAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "data-field");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:data-field}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDataFieldAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:data-field}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:data-field}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:data-field} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDatasourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDatasourceAttribute.java
new file mode 100644
index 0000000..ad7d7cb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDatasourceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:datasource}.
+ *
+ */
+public class FormDatasourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "datasource");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:datasource}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDatasourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:datasource}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:datasource}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:datasource} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDefaultButtonAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDefaultButtonAttribute.java
new file mode 100644
index 0000000..59c1b10
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDefaultButtonAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:default-button}.
+ *
+ */
+public class FormDefaultButtonAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "default-button");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:default-button}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDefaultButtonAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:default-button}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:default-button}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:default-button} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDelayForRepeatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDelayForRepeatAttribute.java
new file mode 100644
index 0000000..f6245dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDelayForRepeatAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:delay-for-repeat}.
+ *
+ */
+public class FormDelayForRepeatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "delay-for-repeat");
+	public static final String DEFAULT_VALUE = "PT0.050S";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:delay-for-repeat}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDelayForRepeatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:delay-for-repeat}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:delay-for-repeat}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:delay-for-repeat} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDetailFieldsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDetailFieldsAttribute.java
new file mode 100644
index 0000000..93727b3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDetailFieldsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:detail-fields}.
+ *
+ */
+public class FormDetailFieldsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "detail-fields");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:detail-fields}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDetailFieldsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:detail-fields}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:detail-fields}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:detail-fields} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDisabledAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDisabledAttribute.java
new file mode 100644
index 0000000..7b88e82
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDisabledAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:disabled}.
+ *
+ */
+public class FormDisabledAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "disabled");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:disabled}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDisabledAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:disabled}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:disabled}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:disabled} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDropdownAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDropdownAttribute.java
new file mode 100644
index 0000000..e51cd97
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormDropdownAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:dropdown}.
+ *
+ */
+public class FormDropdownAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "dropdown");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:dropdown}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormDropdownAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:dropdown}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:dropdown}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:dropdown} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEchoCharAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEchoCharAttribute.java
new file mode 100644
index 0000000..0be6ed7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEchoCharAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:echo-char}.
+ *
+ */
+public class FormEchoCharAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "echo-char");
+	public static final String DEFAULT_VALUE = "*";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:echo-char}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormEchoCharAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:echo-char}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:echo-char}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:echo-char} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEnctypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEnctypeAttribute.java
new file mode 100644
index 0000000..55aca2c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEnctypeAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:enctype}.
+ *
+ */
+public class FormEnctypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "enctype");
+	public static final String DEFAULT_VALUE = "application/x-www-form-urlencoded";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:enctype}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormEnctypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:enctype}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:enctype}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:enctype} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEscapeProcessingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEscapeProcessingAttribute.java
new file mode 100644
index 0000000..926ad93
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormEscapeProcessingAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:escape-processing}.
+ *
+ */
+public class FormEscapeProcessingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "escape-processing");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:escape-processing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormEscapeProcessingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:escape-processing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:escape-processing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:escape-processing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormFilterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormFilterAttribute.java
new file mode 100644
index 0000000..007f2e1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormFilterAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:filter}.
+ *
+ */
+public class FormFilterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "filter");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:filter}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormFilterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:filter}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:filter}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:filter} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormFocusOnClickAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormFocusOnClickAttribute.java
new file mode 100644
index 0000000..9eef773
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormFocusOnClickAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:focus-on-click}.
+ *
+ */
+public class FormFocusOnClickAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "focus-on-click");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:focus-on-click}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormFocusOnClickAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:focus-on-click}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:focus-on-click}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:focus-on-click} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormForAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormForAttribute.java
new file mode 100644
index 0000000..32d651a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormForAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:for}.
+ *
+ */
+public class FormForAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "for");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:for}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormForAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:for}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:for}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:for} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIdAttribute.java
new file mode 100644
index 0000000..e73e804
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:id}.
+ *
+ */
+public class FormIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIgnoreResultAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIgnoreResultAttribute.java
new file mode 100644
index 0000000..17ba7d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIgnoreResultAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:ignore-result}.
+ *
+ */
+public class FormIgnoreResultAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "ignore-result");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:ignore-result}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormIgnoreResultAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:ignore-result}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:ignore-result}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:ignore-result} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImageAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImageAlignAttribute.java
new file mode 100644
index 0000000..45ee746
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImageAlignAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:image-align}.
+ *
+ */
+public class FormImageAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "image-align");
+	public static final String DEFAULT_VALUE = "center";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:image-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormImageAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:image-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:image-align}.
+	 */
+	public enum Value {
+		CENTER("center"), END("end"), START("start") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:image-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:image-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImageDataAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImageDataAttribute.java
new file mode 100644
index 0000000..5a87854
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImageDataAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:image-data}.
+ *
+ */
+public class FormImageDataAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "image-data");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:image-data}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormImageDataAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:image-data}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:image-data}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:image-data} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImagePositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImagePositionAttribute.java
new file mode 100644
index 0000000..d24de69
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormImagePositionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:image-position}.
+ *
+ */
+public class FormImagePositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "image-position");
+	public static final String DEFAULT_VALUE = "center";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:image-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormImagePositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:image-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:image-position}.
+	 */
+	public enum Value {
+		BOTTOM("bottom"), CENTER("center"), END("end"), START("start"), TOP("top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:image-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:image-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIsTristateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIsTristateAttribute.java
new file mode 100644
index 0000000..beb9198
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormIsTristateAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:is-tristate}.
+ *
+ */
+public class FormIsTristateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "is-tristate");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:is-tristate}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormIsTristateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:is-tristate}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:is-tristate}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:is-tristate} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormLabelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormLabelAttribute.java
new file mode 100644
index 0000000..a9b7401
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormLabelAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:label}.
+ *
+ */
+public class FormLabelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "label");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:label}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormLabelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:label}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:label}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:label} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormLinkedCellAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormLinkedCellAttribute.java
new file mode 100644
index 0000000..e7c378a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormLinkedCellAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:linked-cell}.
+ *
+ */
+public class FormLinkedCellAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "linked-cell");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:linked-cell}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormLinkedCellAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:linked-cell}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:linked-cell}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:linked-cell} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListLinkageTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListLinkageTypeAttribute.java
new file mode 100644
index 0000000..cccf9d9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListLinkageTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:list-linkage-type}.
+ *
+ */
+public class FormListLinkageTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "list-linkage-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:list-linkage-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormListLinkageTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:list-linkage-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:list-linkage-type}.
+	 */
+	public enum Value {
+		SELECTION("selection"), SELECTION_INDICES("selection-indices") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:list-linkage-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:list-linkage-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListSourceAttribute.java
new file mode 100644
index 0000000..d06a0be
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListSourceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:list-source}.
+ *
+ */
+public class FormListSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "list-source");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:list-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormListSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:list-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:list-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:list-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListSourceTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListSourceTypeAttribute.java
new file mode 100644
index 0000000..d33b3ae
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormListSourceTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:list-source-type}.
+ *
+ */
+public class FormListSourceTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "list-source-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:list-source-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormListSourceTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:list-source-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:list-source-type}.
+	 */
+	public enum Value {
+		QUERY("query"), SQL("sql"), SQL_PASS_THROUGH("sql-pass-through"), TABLE("table"), TABLE_FIELDS("table-fields"), VALUE_LIST("value-list") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:list-source-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:list-source-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMasterFieldsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMasterFieldsAttribute.java
new file mode 100644
index 0000000..867476c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMasterFieldsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:master-fields}.
+ *
+ */
+public class FormMasterFieldsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "master-fields");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:master-fields}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMasterFieldsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:master-fields}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:master-fields}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:master-fields} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMaxLengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMaxLengthAttribute.java
new file mode 100644
index 0000000..b94be6a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMaxLengthAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:max-length}.
+ *
+ */
+public class FormMaxLengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "max-length");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:max-length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMaxLengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:max-length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:max-length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:max-length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMaxValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMaxValueAttribute.java
new file mode 100644
index 0000000..1b764f1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMaxValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:max-value}.
+ *
+ */
+public class FormMaxValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "max-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:max-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMaxValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:max-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:max-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:max-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMethodAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMethodAttribute.java
new file mode 100644
index 0000000..a38b984
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMethodAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:method}.
+ *
+ */
+public class FormMethodAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "method");
+	public static final String DEFAULT_VALUE = "get";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:method}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMethodAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:method}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:method}.
+	 */
+	public enum Value {
+		GET("get"), POST("post") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:method}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:method} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMinValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMinValueAttribute.java
new file mode 100644
index 0000000..205e835
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMinValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:min-value}.
+ *
+ */
+public class FormMinValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "min-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:min-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMinValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:min-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:min-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:min-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMultiLineAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMultiLineAttribute.java
new file mode 100644
index 0000000..0d87d28
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMultiLineAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:multi-line}.
+ *
+ */
+public class FormMultiLineAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "multi-line");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:multi-line}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMultiLineAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:multi-line}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:multi-line}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:multi-line} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMultipleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMultipleAttribute.java
new file mode 100644
index 0000000..90f7800
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormMultipleAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:multiple}.
+ *
+ */
+public class FormMultipleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "multiple");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:multiple}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormMultipleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:multiple}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:multiple}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:multiple} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormNameAttribute.java
new file mode 100644
index 0000000..90d0909
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:name}.
+ *
+ */
+public class FormNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormNavigationModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormNavigationModeAttribute.java
new file mode 100644
index 0000000..2ee3ae9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormNavigationModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:navigation-mode}.
+ *
+ */
+public class FormNavigationModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "navigation-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:navigation-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormNavigationModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:navigation-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:navigation-mode}.
+	 */
+	public enum Value {
+		CURRENT("current"), NONE("none"), PARENT("parent") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:navigation-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:navigation-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormOrderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormOrderAttribute.java
new file mode 100644
index 0000000..d9897d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormOrderAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:order}.
+ *
+ */
+public class FormOrderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "order");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:order}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormOrderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:order}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:order}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:order} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormOrientationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormOrientationAttribute.java
new file mode 100644
index 0000000..27ff189
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormOrientationAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:orientation}.
+ *
+ */
+public class FormOrientationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "orientation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:orientation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormOrientationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:orientation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:orientation}.
+	 */
+	public enum Value {
+		HORIZONTAL("horizontal"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:orientation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:orientation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPageStepSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPageStepSizeAttribute.java
new file mode 100644
index 0000000..71f2569
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPageStepSizeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:page-step-size}.
+ *
+ */
+public class FormPageStepSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "page-step-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:page-step-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormPageStepSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:page-step-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:page-step-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:page-step-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPrintableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPrintableAttribute.java
new file mode 100644
index 0000000..2f60b22
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPrintableAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:printable}.
+ *
+ */
+public class FormPrintableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "printable");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:printable}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormPrintableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:printable}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:printable}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:printable} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPropertyNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPropertyNameAttribute.java
new file mode 100644
index 0000000..3a9c4dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormPropertyNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:property-name}.
+ *
+ */
+public class FormPropertyNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "property-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:property-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormPropertyNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:property-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:property-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:property-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormReadonlyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormReadonlyAttribute.java
new file mode 100644
index 0000000..d07a098
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormReadonlyAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:readonly}.
+ *
+ */
+public class FormReadonlyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "readonly");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:readonly}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormReadonlyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:readonly}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:readonly}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:readonly} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormRepeatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormRepeatAttribute.java
new file mode 100644
index 0000000..b534d88
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormRepeatAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:repeat}.
+ *
+ */
+public class FormRepeatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "repeat");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:repeat}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormRepeatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:repeat}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:repeat}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:repeat} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSelectedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSelectedAttribute.java
new file mode 100644
index 0000000..0167024
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSelectedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:selected}.
+ *
+ */
+public class FormSelectedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "selected");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:selected}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormSelectedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:selected}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:selected}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:selected} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSizeAttribute.java
new file mode 100644
index 0000000..a37074c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSizeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:size}.
+ *
+ */
+public class FormSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSourceCellRangeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSourceCellRangeAttribute.java
new file mode 100644
index 0000000..fc0a83a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSourceCellRangeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:source-cell-range}.
+ *
+ */
+public class FormSourceCellRangeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "source-cell-range");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:source-cell-range}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormSourceCellRangeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:source-cell-range}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:source-cell-range}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:source-cell-range} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSpinButtonAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSpinButtonAttribute.java
new file mode 100644
index 0000000..e400141
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormSpinButtonAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:spin-button}.
+ *
+ */
+public class FormSpinButtonAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "spin-button");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:spin-button}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormSpinButtonAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:spin-button}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:spin-button}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:spin-button} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormStateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormStateAttribute.java
new file mode 100644
index 0000000..a0a98c7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormStateAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:state}.
+ *
+ */
+public class FormStateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "state");
+	public static final String DEFAULT_VALUE = "unchecked";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:state}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormStateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:state}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:state}.
+	 */
+	public enum Value {
+		CHECKED("checked"), UNCHECKED("unchecked"), UNKNOWN("unknown") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:state}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:state} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormStepSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormStepSizeAttribute.java
new file mode 100644
index 0000000..b48d3a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormStepSizeAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:step-size}.
+ *
+ */
+public class FormStepSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "step-size");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:step-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormStepSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:step-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:step-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:step-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabCycleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabCycleAttribute.java
new file mode 100644
index 0000000..282d4c6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabCycleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:tab-cycle}.
+ *
+ */
+public class FormTabCycleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "tab-cycle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:tab-cycle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormTabCycleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:tab-cycle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:tab-cycle}.
+	 */
+	public enum Value {
+		CURRENT("current"), PAGE("page"), RECORDS("records") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:tab-cycle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:tab-cycle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabIndexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabIndexAttribute.java
new file mode 100644
index 0000000..aeb68f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabIndexAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:tab-index}.
+ *
+ */
+public class FormTabIndexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "tab-index");
+	public static final String DEFAULT_VALUE = "0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:tab-index}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormTabIndexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:tab-index}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:tab-index}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:tab-index} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabStopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabStopAttribute.java
new file mode 100644
index 0000000..0f648c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTabStopAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:tab-stop}.
+ *
+ */
+public class FormTabStopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "tab-stop");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:tab-stop}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormTabStopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:tab-stop}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:tab-stop}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:tab-stop} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTextStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTextStyleNameAttribute.java
new file mode 100644
index 0000000..813f313
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTextStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:text-style-name}.
+ *
+ */
+public class FormTextStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "text-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:text-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormTextStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:text-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:text-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:text-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTitleAttribute.java
new file mode 100644
index 0000000..a8cfb32
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:title}.
+ *
+ */
+public class FormTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormToggleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormToggleAttribute.java
new file mode 100644
index 0000000..da5b4b5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormToggleAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:toggle}.
+ *
+ */
+public class FormToggleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "toggle");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:toggle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormToggleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:toggle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:toggle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:toggle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormValidationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormValidationAttribute.java
new file mode 100644
index 0000000..af2a0e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormValidationAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:validation}.
+ *
+ */
+public class FormValidationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "validation");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:validation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormValidationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:validation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:validation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:validation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormValueAttribute.java
new file mode 100644
index 0000000..a260e32
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:value}.
+ *
+ */
+public class FormValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormVisualEffectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormVisualEffectAttribute.java
new file mode 100644
index 0000000..9df6cad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormVisualEffectAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:visual-effect}.
+ *
+ */
+public class FormVisualEffectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "visual-effect");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:visual-effect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormVisualEffectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:visual-effect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute form:visual-effect}.
+	 */
+	public enum Value {
+		_3D("3d"), FLAT("flat") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:visual-effect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:visual-effect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormXformsListSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormXformsListSourceAttribute.java
new file mode 100644
index 0000000..03a3aff
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormXformsListSourceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:xforms-list-source}.
+ *
+ */
+public class FormXformsListSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "xforms-list-source");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:xforms-list-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormXformsListSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:xforms-list-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:xforms-list-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:xforms-list-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormXformsSubmissionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormXformsSubmissionAttribute.java
new file mode 100644
index 0000000..2624e6d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/form/FormXformsSubmissionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.form;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute form:xforms-submission}.
+ *
+ */
+public class FormXformsSubmissionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "xforms-submission");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute form:xforms-submission}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public FormXformsSubmissionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute form:xforms-submission}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute form:xforms-submission}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute form:xforms-submission} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/grddl/GrddlTransformationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/grddl/GrddlTransformationAttribute.java
new file mode 100644
index 0000000..5b6af8d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/grddl/GrddlTransformationAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.grddl;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute grddl:transformation}.
+ *
+ */
+public class GrddlTransformationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.GRDDL, "transformation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute grddl:transformation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public GrddlTransformationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute grddl:transformation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute grddl:transformation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute grddl:transformation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaCellCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaCellCountAttribute.java
new file mode 100644
index 0000000..5d84568
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaCellCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:cell-count}.
+ *
+ */
+public class MetaCellCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "cell-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:cell-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaCellCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:cell-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:cell-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:cell-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaCharacterCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaCharacterCountAttribute.java
new file mode 100644
index 0000000..d066ec5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaCharacterCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:character-count}.
+ *
+ */
+public class MetaCharacterCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "character-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:character-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaCharacterCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:character-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:character-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:character-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDateAttribute.java
new file mode 100644
index 0000000..914313b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDateAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:date}.
+ *
+ */
+public class MetaDateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "date");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:date}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaDateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:date}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:date}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:date} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDelayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDelayAttribute.java
new file mode 100644
index 0000000..4c3706d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDelayAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:delay}.
+ *
+ */
+public class MetaDelayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "delay");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:delay}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaDelayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:delay}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:delay}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:delay} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDrawCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDrawCountAttribute.java
new file mode 100644
index 0000000..a05ab76
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaDrawCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:draw-count}.
+ *
+ */
+public class MetaDrawCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "draw-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:draw-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaDrawCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:draw-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:draw-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:draw-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaFrameCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaFrameCountAttribute.java
new file mode 100644
index 0000000..86c40c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaFrameCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:frame-count}.
+ *
+ */
+public class MetaFrameCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "frame-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:frame-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaFrameCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:frame-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:frame-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:frame-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaImageCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaImageCountAttribute.java
new file mode 100644
index 0000000..2ad688d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaImageCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:image-count}.
+ *
+ */
+public class MetaImageCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "image-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:image-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaImageCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:image-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:image-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:image-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaNameAttribute.java
new file mode 100644
index 0000000..24c1725
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:name}.
+ *
+ */
+public class MetaNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaNonWhitespaceCharacterCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaNonWhitespaceCharacterCountAttribute.java
new file mode 100644
index 0000000..3e04e84
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaNonWhitespaceCharacterCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:non-whitespace-character-count}.
+ *
+ */
+public class MetaNonWhitespaceCharacterCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "non-whitespace-character-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:non-whitespace-character-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaNonWhitespaceCharacterCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:non-whitespace-character-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:non-whitespace-character-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:non-whitespace-character-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaObjectCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaObjectCountAttribute.java
new file mode 100644
index 0000000..847cf68
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaObjectCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:object-count}.
+ *
+ */
+public class MetaObjectCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "object-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:object-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaObjectCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:object-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:object-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:object-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaOleObjectCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaOleObjectCountAttribute.java
new file mode 100644
index 0000000..27f2252
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaOleObjectCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:ole-object-count}.
+ *
+ */
+public class MetaOleObjectCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "ole-object-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:ole-object-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaOleObjectCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:ole-object-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:ole-object-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:ole-object-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaPageCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaPageCountAttribute.java
new file mode 100644
index 0000000..17f163c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaPageCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:page-count}.
+ *
+ */
+public class MetaPageCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "page-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:page-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaPageCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:page-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:page-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:page-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaParagraphCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaParagraphCountAttribute.java
new file mode 100644
index 0000000..e8e8d63
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaParagraphCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:paragraph-count}.
+ *
+ */
+public class MetaParagraphCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "paragraph-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:paragraph-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaParagraphCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:paragraph-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:paragraph-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:paragraph-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaRowCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaRowCountAttribute.java
new file mode 100644
index 0000000..009e3b6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaRowCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:row-count}.
+ *
+ */
+public class MetaRowCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "row-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:row-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaRowCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:row-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:row-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:row-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaSentenceCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaSentenceCountAttribute.java
new file mode 100644
index 0000000..e12660f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaSentenceCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:sentence-count}.
+ *
+ */
+public class MetaSentenceCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "sentence-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:sentence-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaSentenceCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:sentence-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:sentence-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:sentence-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaSyllableCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaSyllableCountAttribute.java
new file mode 100644
index 0000000..2c17e07
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaSyllableCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:syllable-count}.
+ *
+ */
+public class MetaSyllableCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "syllable-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:syllable-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaSyllableCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:syllable-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:syllable-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:syllable-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaTableCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaTableCountAttribute.java
new file mode 100644
index 0000000..451efca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaTableCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:table-count}.
+ *
+ */
+public class MetaTableCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "table-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:table-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaTableCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:table-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:table-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:table-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaValueTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaValueTypeAttribute.java
new file mode 100644
index 0000000..87e3c1c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaValueTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:value-type}.
+ *
+ */
+public class MetaValueTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "value-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:value-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaValueTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:value-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute meta:value-type}.
+	 */
+	public enum Value {
+		BOOLEAN("boolean"), DATE("date"), FLOAT("float"), STRING("string"), TIME("time") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:value-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:value-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaWordCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaWordCountAttribute.java
new file mode 100644
index 0000000..303a86d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/meta/MetaWordCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.meta;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute meta:word-count}.
+ *
+ */
+public class MetaWordCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.META, "word-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute meta:word-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public MetaWordCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute meta:word-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute meta:word-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute meta:word-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberAutomaticOrderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberAutomaticOrderAttribute.java
new file mode 100644
index 0000000..192c4f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberAutomaticOrderAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:automatic-order}.
+ *
+ */
+public class NumberAutomaticOrderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "automatic-order");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:automatic-order}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberAutomaticOrderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:automatic-order}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:automatic-order}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:automatic-order} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberCalendarAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberCalendarAttribute.java
new file mode 100644
index 0000000..8b2d51f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberCalendarAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:calendar}.
+ *
+ */
+public class NumberCalendarAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "calendar");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:calendar}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberCalendarAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:calendar}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute number:calendar}.
+	 */
+	public enum Value {
+		ROC("ROC"), BUDDHIST("buddhist"), GENGOU("gengou"), GREGORIAN("gregorian"), HANJA("hanja"), HANJA_YOIL("hanja_yoil"), HIJRI("hijri"), JEWISH("jewish") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:calendar}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:calendar} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberCountryAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberCountryAttribute.java
new file mode 100644
index 0000000..b02348b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberCountryAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:country}.
+ *
+ */
+public class NumberCountryAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "country");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:country}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberCountryAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:country}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:country}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:country} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDecimalPlacesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDecimalPlacesAttribute.java
new file mode 100644
index 0000000..1fa355e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDecimalPlacesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:decimal-places}.
+ *
+ */
+public class NumberDecimalPlacesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "decimal-places");
+	public static final String DEFAULT_VALUE = "0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:decimal-places}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberDecimalPlacesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:decimal-places}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:decimal-places}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:decimal-places} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDecimalReplacementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDecimalReplacementAttribute.java
new file mode 100644
index 0000000..2480747
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDecimalReplacementAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:decimal-replacement}.
+ *
+ */
+public class NumberDecimalReplacementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "decimal-replacement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:decimal-replacement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberDecimalReplacementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:decimal-replacement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:decimal-replacement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:decimal-replacement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDenominatorValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDenominatorValueAttribute.java
new file mode 100644
index 0000000..443a89b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDenominatorValueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:denominator-value}.
+ *
+ */
+public class NumberDenominatorValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "denominator-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:denominator-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberDenominatorValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:denominator-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:denominator-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:denominator-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDisplayFactorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDisplayFactorAttribute.java
new file mode 100644
index 0000000..9ad86ee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberDisplayFactorAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:display-factor}.
+ *
+ */
+public class NumberDisplayFactorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "display-factor");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:display-factor}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberDisplayFactorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:display-factor}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:display-factor}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:display-factor} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberFormatSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberFormatSourceAttribute.java
new file mode 100644
index 0000000..eff57ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberFormatSourceAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:format-source}.
+ *
+ */
+public class NumberFormatSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "format-source");
+	public static final String DEFAULT_VALUE = "fixed";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:format-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberFormatSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:format-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute number:format-source}.
+	 */
+	public enum Value {
+		FIXED("fixed"), LANGUAGE("language") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:format-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:format-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberGroupingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberGroupingAttribute.java
new file mode 100644
index 0000000..f6054c7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberGroupingAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:grouping}.
+ *
+ */
+public class NumberGroupingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "grouping");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:grouping}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberGroupingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:grouping}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:grouping}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:grouping} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberLanguageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberLanguageAttribute.java
new file mode 100644
index 0000000..bee9316
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberLanguageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:language}.
+ *
+ */
+public class NumberLanguageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "language");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:language}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberLanguageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:language}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:language}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:language} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinDenominatorDigitsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinDenominatorDigitsAttribute.java
new file mode 100644
index 0000000..fa617b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinDenominatorDigitsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:min-denominator-digits}.
+ *
+ */
+public class NumberMinDenominatorDigitsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "min-denominator-digits");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:min-denominator-digits}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberMinDenominatorDigitsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:min-denominator-digits}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:min-denominator-digits}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:min-denominator-digits} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinExponentDigitsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinExponentDigitsAttribute.java
new file mode 100644
index 0000000..1795dcb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinExponentDigitsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:min-exponent-digits}.
+ *
+ */
+public class NumberMinExponentDigitsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "min-exponent-digits");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:min-exponent-digits}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberMinExponentDigitsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:min-exponent-digits}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:min-exponent-digits}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:min-exponent-digits} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinIntegerDigitsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinIntegerDigitsAttribute.java
new file mode 100644
index 0000000..0aa26f6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinIntegerDigitsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:min-integer-digits}.
+ *
+ */
+public class NumberMinIntegerDigitsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "min-integer-digits");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:min-integer-digits}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberMinIntegerDigitsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:min-integer-digits}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:min-integer-digits}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:min-integer-digits} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinNumeratorDigitsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinNumeratorDigitsAttribute.java
new file mode 100644
index 0000000..72d502f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberMinNumeratorDigitsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:min-numerator-digits}.
+ *
+ */
+public class NumberMinNumeratorDigitsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "min-numerator-digits");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:min-numerator-digits}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberMinNumeratorDigitsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:min-numerator-digits}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:min-numerator-digits}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:min-numerator-digits} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberPositionAttribute.java
new file mode 100644
index 0000000..c76b5f6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberPositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:position}.
+ *
+ */
+public class NumberPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberPossessiveFormAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberPossessiveFormAttribute.java
new file mode 100644
index 0000000..f08261b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberPossessiveFormAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:possessive-form}.
+ *
+ */
+public class NumberPossessiveFormAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "possessive-form");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:possessive-form}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberPossessiveFormAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:possessive-form}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:possessive-form}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:possessive-form} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberRfcLanguageTagAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberRfcLanguageTagAttribute.java
new file mode 100644
index 0000000..388501b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberRfcLanguageTagAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:rfc-language-tag}.
+ *
+ */
+public class NumberRfcLanguageTagAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:rfc-language-tag}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberRfcLanguageTagAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:rfc-language-tag}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:rfc-language-tag}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:rfc-language-tag} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberScriptAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberScriptAttribute.java
new file mode 100644
index 0000000..c6cfd88
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberScriptAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:script}.
+ *
+ */
+public class NumberScriptAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "script");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:script}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberScriptAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:script}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:script}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:script} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberStyleAttribute.java
new file mode 100644
index 0000000..c9fd240
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:style}.
+ *
+ */
+public class NumberStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute number:style}.
+	 */
+	public enum Value {
+		LONG("long"), SHORT("short") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTextualAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTextualAttribute.java
new file mode 100644
index 0000000..5b2bbdb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTextualAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:textual}.
+ *
+ */
+public class NumberTextualAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "textual");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:textual}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTextualAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:textual}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:textual}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:textual} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTitleAttribute.java
new file mode 100644
index 0000000..b66b20b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:title}.
+ *
+ */
+public class NumberTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationCountryAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationCountryAttribute.java
new file mode 100644
index 0000000..0593e00
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationCountryAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:transliteration-country}.
+ *
+ */
+public class NumberTransliterationCountryAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "transliteration-country");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:transliteration-country}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTransliterationCountryAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:transliteration-country}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:transliteration-country}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:transliteration-country} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationFormatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationFormatAttribute.java
new file mode 100644
index 0000000..0362b34
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationFormatAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:transliteration-format}.
+ *
+ */
+public class NumberTransliterationFormatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "transliteration-format");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:transliteration-format}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTransliterationFormatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:transliteration-format}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:transliteration-format}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:transliteration-format} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationLanguageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationLanguageAttribute.java
new file mode 100644
index 0000000..84f184e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationLanguageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:transliteration-language}.
+ *
+ */
+public class NumberTransliterationLanguageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "transliteration-language");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:transliteration-language}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTransliterationLanguageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:transliteration-language}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:transliteration-language}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:transliteration-language} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationStyleAttribute.java
new file mode 100644
index 0000000..76b7ee0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTransliterationStyleAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:transliteration-style}.
+ *
+ */
+public class NumberTransliterationStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "transliteration-style");
+	public static final String DEFAULT_VALUE = "short";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:transliteration-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTransliterationStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:transliteration-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute number:transliteration-style}.
+	 */
+	public enum Value {
+		LONG("long"), MEDIUM("medium"), SHORT("short") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:transliteration-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:transliteration-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTruncateOnOverflowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTruncateOnOverflowAttribute.java
new file mode 100644
index 0000000..f799376
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/number/NumberTruncateOnOverflowAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.number;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute number:truncate-on-overflow}.
+ *
+ */
+public class NumberTruncateOnOverflowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "truncate-on-overflow");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute number:truncate-on-overflow}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public NumberTruncateOnOverflowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute number:truncate-on-overflow}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute number:truncate-on-overflow}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute number:truncate-on-overflow} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeAutomaticUpdateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeAutomaticUpdateAttribute.java
new file mode 100644
index 0000000..228a514
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeAutomaticUpdateAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:automatic-update}.
+ *
+ */
+public class OfficeAutomaticUpdateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "automatic-update");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:automatic-update}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeAutomaticUpdateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:automatic-update}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:automatic-update}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:automatic-update} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeBooleanValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeBooleanValueAttribute.java
new file mode 100644
index 0000000..fda2607
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeBooleanValueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:boolean-value}.
+ *
+ */
+public class OfficeBooleanValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "boolean-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:boolean-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeBooleanValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:boolean-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:boolean-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:boolean-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeConversionModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeConversionModeAttribute.java
new file mode 100644
index 0000000..fd2c509
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeConversionModeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:conversion-mode}.
+ *
+ */
+public class OfficeConversionModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "conversion-mode");
+	public static final String DEFAULT_VALUE = "into-default-style-data-style";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:conversion-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeConversionModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:conversion-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute office:conversion-mode}.
+	 */
+	public enum Value {
+		INTO_DEFAULT_STYLE_DATA_STYLE("into-default-style-data-style"), INTO_ENGLISH_NUMBER("into-english-number"), KEEP_TEXT("keep-text") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:conversion-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:conversion-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeCurrencyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeCurrencyAttribute.java
new file mode 100644
index 0000000..3b7e2d4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeCurrencyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:currency}.
+ *
+ */
+public class OfficeCurrencyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "currency");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:currency}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeCurrencyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:currency}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:currency}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:currency} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDateValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDateValueAttribute.java
new file mode 100644
index 0000000..17e184d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDateValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:date-value}.
+ *
+ */
+public class OfficeDateValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "date-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:date-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDateValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:date-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:date-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:date-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeApplicationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeApplicationAttribute.java
new file mode 100644
index 0000000..b7df1ec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeApplicationAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:dde-application}.
+ *
+ */
+public class OfficeDdeApplicationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "dde-application");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:dde-application}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDdeApplicationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:dde-application}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:dde-application}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:dde-application} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeItemAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeItemAttribute.java
new file mode 100644
index 0000000..9a020b1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeItemAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:dde-item}.
+ *
+ */
+public class OfficeDdeItemAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "dde-item");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:dde-item}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDdeItemAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:dde-item}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:dde-item}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:dde-item} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeTopicAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeTopicAttribute.java
new file mode 100644
index 0000000..662fadd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDdeTopicAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:dde-topic}.
+ *
+ */
+public class OfficeDdeTopicAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "dde-topic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:dde-topic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDdeTopicAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:dde-topic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:dde-topic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:dde-topic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDisplayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDisplayAttribute.java
new file mode 100644
index 0000000..aff94c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeDisplayAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:display}.
+ *
+ */
+public class OfficeDisplayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "display");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:display}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDisplayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:display}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:display}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:display} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeMimetypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeMimetypeAttribute.java
new file mode 100644
index 0000000..3210344
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeMimetypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:mimetype}.
+ *
+ */
+public class OfficeMimetypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "mimetype");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:mimetype}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeMimetypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:mimetype}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:mimetype}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:mimetype} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeNameAttribute.java
new file mode 100644
index 0000000..5a729f7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:name}.
+ *
+ */
+public class OfficeNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeServerMapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeServerMapAttribute.java
new file mode 100644
index 0000000..41db53f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeServerMapAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:server-map}.
+ *
+ */
+public class OfficeServerMapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "server-map");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:server-map}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeServerMapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:server-map}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:server-map}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:server-map} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeStringValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeStringValueAttribute.java
new file mode 100644
index 0000000..1aef7e2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeStringValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:string-value}.
+ *
+ */
+public class OfficeStringValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "string-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:string-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeStringValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:string-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:string-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:string-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTargetFrameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTargetFrameAttribute.java
new file mode 100644
index 0000000..d2f15e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTargetFrameAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:target-frame}.
+ *
+ */
+public class OfficeTargetFrameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "target-frame");
+	public static final String DEFAULT_VALUE = "_blank";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:target-frame}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeTargetFrameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:target-frame}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute office:target-frame}.
+	 */
+	public enum Value {
+		BLANK("_blank"), PARENT("_parent"), SELF("_self"), TOP("_top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:target-frame}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:target-frame} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTargetFrameNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTargetFrameNameAttribute.java
new file mode 100644
index 0000000..87999f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTargetFrameNameAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:target-frame-name}.
+ *
+ */
+public class OfficeTargetFrameNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "target-frame-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:target-frame-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeTargetFrameNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:target-frame-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute office:target-frame-name}.
+	 */
+	public enum Value {
+		BLANK("_blank"), PARENT("_parent"), SELF("_self"), TOP("_top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:target-frame-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:target-frame-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTimeValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTimeValueAttribute.java
new file mode 100644
index 0000000..4787198
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTimeValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:time-value}.
+ *
+ */
+public class OfficeTimeValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "time-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:time-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeTimeValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:time-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:time-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:time-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTitleAttribute.java
new file mode 100644
index 0000000..3e2da94
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:title}.
+ *
+ */
+public class OfficeTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeValueAttribute.java
new file mode 100644
index 0000000..1c55251
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeValueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:value}.
+ *
+ */
+public class OfficeValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeValueTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeValueTypeAttribute.java
new file mode 100644
index 0000000..09dc189
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeValueTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:value-type}.
+ *
+ */
+public class OfficeValueTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "value-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:value-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeValueTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:value-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute office:value-type}.
+	 */
+	public enum Value {
+		BOOLEAN("boolean"), CURRENCY("currency"), DATE("date"), FLOAT("float"), PERCENTAGE("percentage"), STRING("string"), TIME("time"), VOID("void") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:value-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:value-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeVersionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeVersionAttribute.java
new file mode 100644
index 0000000..0247c97
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/office/OfficeVersionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.office;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute office:version}.
+ *
+ */
+public class OfficeVersionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "version");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute office:version}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public OfficeVersionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute office:version}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute office:version}.
+	 */
+	public enum Value {
+		_1_2("1.2") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute office:version}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute office:version} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationActionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationActionAttribute.java
new file mode 100644
index 0000000..6dfc76f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationActionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:action}.
+ *
+ */
+public class PresentationActionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "action");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:action}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationActionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:action}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:action}.
+	 */
+	public enum Value {
+		EXECUTE("execute"), FADE_OUT("fade-out"), FIRST_PAGE("first-page"), HIDE("hide"), LAST_PAGE("last-page"), LAST_VISITED_PAGE("last-visited-page"), NEXT_PAGE("next-page"), NONE("none"), PREVIOUS_PAGE("previous-page"), SHOW("show"), SOUND("sound"), STOP("stop"), VERB("verb") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:action}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:action} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationAnimationsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationAnimationsAttribute.java
new file mode 100644
index 0000000..d817930
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationAnimationsAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:animations}.
+ *
+ */
+public class PresentationAnimationsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "animations");
+	public static final String DEFAULT_VALUE = "enabled";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:animations}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationAnimationsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:animations}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:animations}.
+	 */
+	public enum Value {
+		DISABLED("disabled"), ENABLED("enabled") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:animations}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:animations} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationBackgroundObjectsVisibleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationBackgroundObjectsVisibleAttribute.java
new file mode 100644
index 0000000..6c12950
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationBackgroundObjectsVisibleAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:background-objects-visible}.
+ *
+ */
+public class PresentationBackgroundObjectsVisibleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "background-objects-visible");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:background-objects-visible}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationBackgroundObjectsVisibleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:background-objects-visible}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:background-objects-visible}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:background-objects-visible} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationBackgroundVisibleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationBackgroundVisibleAttribute.java
new file mode 100644
index 0000000..b28cdd1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationBackgroundVisibleAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:background-visible}.
+ *
+ */
+public class PresentationBackgroundVisibleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "background-visible");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:background-visible}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationBackgroundVisibleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:background-visible}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:background-visible}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:background-visible} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationClassAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationClassAttribute.java
new file mode 100644
index 0000000..5eee3a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationClassAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:class}.
+ *
+ */
+public class PresentationClassAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "class");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:class}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationClassAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:class}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:class}.
+	 */
+	public enum Value {
+		CHART("chart"), DATE_TIME("date-time"), FOOTER("footer"), GRAPHIC("graphic"), HANDOUT("handout"), HEADER("header"), NOTES("notes"), OBJECT("object"), ORGCHART("orgchart"), OUTLINE("outline"), PAGE("page"), PAGE_NUMBER("page-number"), SUBTITLE("subtitle"), TABLE("table"), TEXT("text"), TITLE("title") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:class}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:class} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationClassNamesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationClassNamesAttribute.java
new file mode 100644
index 0000000..9b69dd3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationClassNamesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:class-names}.
+ *
+ */
+public class PresentationClassNamesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "class-names");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:class-names}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationClassNamesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:class-names}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:class-names}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:class-names} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDelayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDelayAttribute.java
new file mode 100644
index 0000000..7d810d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDelayAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:delay}.
+ *
+ */
+public class PresentationDelayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "delay");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:delay}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDelayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:delay}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:delay}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:delay} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDirectionAttribute.java
new file mode 100644
index 0000000..33d2a6c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDirectionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:direction}.
+ *
+ */
+public class PresentationDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "direction");
+	public static final String DEFAULT_VALUE = "none";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:direction}.
+	 */
+	public enum Value {
+		CLOCKWISE("clockwise"), COUNTER_CLOCKWISE("counter-clockwise"), FROM_BOTTOM("from-bottom"), FROM_CENTER("from-center"), FROM_LEFT("from-left"), FROM_LOWER_LEFT("from-lower-left"), FROM_LOWER_RIGHT("from-lower-right"), FROM_RIGHT("from-right"), FROM_TOP("from-top"), FROM_UPPER_LEFT("from-upper-left"), FROM_UPPER_RIGHT("from-upper-right"), HORIZONTAL("horizontal"), NONE("none"), PATH("path"), SPIRAL_INWARD_LEFT("spiral-inward-left"), SPIRAL_INWARD_RIGHT("spiral-inward-right"), SPIRAL_OUTWARD_LEFT("spiral-outward-left"), SPIRAL_OUTWARD_RIGHT("spiral-outward-right"), TO_BOTTOM("to-bottom"), TO_CENTER("to-center"), TO_LEFT("to-left"), TO_LOWER_LEFT("to-lower-left"), TO_LOWER_RIGHT("to-lower-right"), TO_RIGHT("to-right"), TO_TOP("to-top"), TO_UPPER_LEFT("to-upper-left"), TO_UPPER_RIGHT("to-upper-right"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayDateTimeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayDateTimeAttribute.java
new file mode 100644
index 0000000..9dd8fa7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayDateTimeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:display-date-time}.
+ *
+ */
+public class PresentationDisplayDateTimeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-date-time");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:display-date-time}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDisplayDateTimeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:display-date-time}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:display-date-time}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:display-date-time} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayFooterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayFooterAttribute.java
new file mode 100644
index 0000000..d6947d0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayFooterAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:display-footer}.
+ *
+ */
+public class PresentationDisplayFooterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-footer");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:display-footer}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDisplayFooterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:display-footer}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:display-footer}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:display-footer} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayHeaderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayHeaderAttribute.java
new file mode 100644
index 0000000..13e2e75
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayHeaderAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:display-header}.
+ *
+ */
+public class PresentationDisplayHeaderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-header");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:display-header}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDisplayHeaderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:display-header}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:display-header}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:display-header} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayPageNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayPageNumberAttribute.java
new file mode 100644
index 0000000..a11de40
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDisplayPageNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:display-page-number}.
+ *
+ */
+public class PresentationDisplayPageNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-page-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:display-page-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDisplayPageNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:display-page-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:display-page-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:display-page-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDurationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDurationAttribute.java
new file mode 100644
index 0000000..c1f0ed4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationDurationAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:duration}.
+ *
+ */
+public class PresentationDurationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "duration");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:duration}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDurationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:duration}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:duration}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:duration} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationEffectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationEffectAttribute.java
new file mode 100644
index 0000000..b4e3462
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationEffectAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:effect}.
+ *
+ */
+public class PresentationEffectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "effect");
+	public static final String DEFAULT_VALUE = "none";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:effect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationEffectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:effect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:effect}.
+	 */
+	public enum Value {
+		APPEAR("appear"), CHECKERBOARD("checkerboard"), CLOSE("close"), DISSOLVE("dissolve"), FADE("fade"), HIDE("hide"), LASER("laser"), LINES("lines"), MOVE("move"), MOVE_SHORT("move-short"), NONE("none"), OPEN("open"), RANDOM("random"), ROTATE("rotate"), STRETCH("stretch"), STRIPES("stripes"), WAVYLINE("wavyline") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:effect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:effect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationEndlessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationEndlessAttribute.java
new file mode 100644
index 0000000..4c86b50
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationEndlessAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:endless}.
+ *
+ */
+public class PresentationEndlessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "endless");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:endless}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationEndlessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:endless}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:endless}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:endless} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationForceManualAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationForceManualAttribute.java
new file mode 100644
index 0000000..182dd24
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationForceManualAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:force-manual}.
+ *
+ */
+public class PresentationForceManualAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "force-manual");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:force-manual}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationForceManualAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:force-manual}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:force-manual}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:force-manual} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationFullScreenAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationFullScreenAttribute.java
new file mode 100644
index 0000000..a6f7ccf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationFullScreenAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:full-screen}.
+ *
+ */
+public class PresentationFullScreenAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "full-screen");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:full-screen}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationFullScreenAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:full-screen}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:full-screen}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:full-screen} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationGroupIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationGroupIdAttribute.java
new file mode 100644
index 0000000..42b1706
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationGroupIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:group-id}.
+ *
+ */
+public class PresentationGroupIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "group-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:group-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationGroupIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:group-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:group-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:group-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMasterElementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMasterElementAttribute.java
new file mode 100644
index 0000000..ce213b5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMasterElementAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:master-element}.
+ *
+ */
+public class PresentationMasterElementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "master-element");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:master-element}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationMasterElementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:master-element}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:master-element}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:master-element} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMouseAsPenAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMouseAsPenAttribute.java
new file mode 100644
index 0000000..951a35a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMouseAsPenAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:mouse-as-pen}.
+ *
+ */
+public class PresentationMouseAsPenAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "mouse-as-pen");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:mouse-as-pen}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationMouseAsPenAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:mouse-as-pen}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:mouse-as-pen}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:mouse-as-pen} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMouseVisibleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMouseVisibleAttribute.java
new file mode 100644
index 0000000..b3006ef
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationMouseVisibleAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:mouse-visible}.
+ *
+ */
+public class PresentationMouseVisibleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "mouse-visible");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:mouse-visible}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationMouseVisibleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:mouse-visible}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:mouse-visible}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:mouse-visible} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationNameAttribute.java
new file mode 100644
index 0000000..d83e950
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:name}.
+ *
+ */
+public class PresentationNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationNodeTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationNodeTypeAttribute.java
new file mode 100644
index 0000000..8bdb889
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationNodeTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:node-type}.
+ *
+ */
+public class PresentationNodeTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "node-type");
+	public static final String DEFAULT_VALUE = "default";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:node-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationNodeTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:node-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:node-type}.
+	 */
+	public enum Value {
+		AFTER_PREVIOUS("after-previous"), DEFAULT("default"), INTERACTIVE_SEQUENCE("interactive-sequence"), MAIN_SEQUENCE("main-sequence"), ON_CLICK("on-click"), TIMING_ROOT("timing-root"), WITH_PREVIOUS("with-previous") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:node-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:node-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationObjectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationObjectAttribute.java
new file mode 100644
index 0000000..b51e47a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationObjectAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:object}.
+ *
+ */
+public class PresentationObjectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "object");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:object}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationObjectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:object}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:object}.
+	 */
+	public enum Value {
+		CHART("chart"), DATE_TIME("date-time"), FOOTER("footer"), GRAPHIC("graphic"), HANDOUT("handout"), HEADER("header"), NOTES("notes"), OBJECT("object"), ORGCHART("orgchart"), OUTLINE("outline"), PAGE("page"), PAGE_NUMBER("page-number"), SUBTITLE("subtitle"), TABLE("table"), TEXT("text"), TITLE("title") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:object}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:object} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPagesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPagesAttribute.java
new file mode 100644
index 0000000..0ee8300
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPagesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:pages}.
+ *
+ */
+public class PresentationPagesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "pages");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:pages}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPagesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:pages}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:pages}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:pages} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPathIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPathIdAttribute.java
new file mode 100644
index 0000000..b83b716
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPathIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:path-id}.
+ *
+ */
+public class PresentationPathIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "path-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:path-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPathIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:path-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:path-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:path-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPauseAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPauseAttribute.java
new file mode 100644
index 0000000..616050b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPauseAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:pause}.
+ *
+ */
+public class PresentationPauseAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "pause");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:pause}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPauseAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:pause}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:pause}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:pause} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPlaceholderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPlaceholderAttribute.java
new file mode 100644
index 0000000..c5a78ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPlaceholderAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:placeholder}.
+ *
+ */
+public class PresentationPlaceholderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "placeholder");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:placeholder}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPlaceholderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:placeholder}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:placeholder}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:placeholder} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPlayFullAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPlayFullAttribute.java
new file mode 100644
index 0000000..6568639
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPlayFullAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:play-full}.
+ *
+ */
+public class PresentationPlayFullAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "play-full");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:play-full}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPlayFullAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:play-full}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:play-full}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:play-full} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresentationPageLayoutNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresentationPageLayoutNameAttribute.java
new file mode 100644
index 0000000..a174e1f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresentationPageLayoutNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:presentation-page-layout-name}.
+ *
+ */
+public class PresentationPresentationPageLayoutNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "presentation-page-layout-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:presentation-page-layout-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPresentationPageLayoutNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:presentation-page-layout-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:presentation-page-layout-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:presentation-page-layout-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetClassAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetClassAttribute.java
new file mode 100644
index 0000000..cc4f1ea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetClassAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:preset-class}.
+ *
+ */
+public class PresentationPresetClassAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "preset-class");
+	public static final String DEFAULT_VALUE = "custom";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:preset-class}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPresetClassAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:preset-class}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:preset-class}.
+	 */
+	public enum Value {
+		CUSTOM("custom"), EMPHASIS("emphasis"), ENTRANCE("entrance"), EXIT("exit"), MEDIA_CALL("media-call"), MOTION_PATH("motion-path"), OLE_ACTION("ole-action") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:preset-class}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:preset-class} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetIdAttribute.java
new file mode 100644
index 0000000..0ca2a5e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:preset-id}.
+ *
+ */
+public class PresentationPresetIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "preset-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:preset-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPresetIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:preset-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:preset-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:preset-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetSubTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetSubTypeAttribute.java
new file mode 100644
index 0000000..b39ec31
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationPresetSubTypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:preset-sub-type}.
+ *
+ */
+public class PresentationPresetSubTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "preset-sub-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:preset-sub-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPresetSubTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:preset-sub-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:preset-sub-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:preset-sub-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowAttribute.java
new file mode 100644
index 0000000..aba85bc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:show}.
+ *
+ */
+public class PresentationShowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "show");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:show}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationShowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:show}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:show}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:show} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowEndOfPresentationSlideAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowEndOfPresentationSlideAttribute.java
new file mode 100644
index 0000000..bc90e98
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowEndOfPresentationSlideAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:show-end-of-presentation-slide}.
+ *
+ */
+public class PresentationShowEndOfPresentationSlideAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "show-end-of-presentation-slide");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:show-end-of-presentation-slide}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationShowEndOfPresentationSlideAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:show-end-of-presentation-slide}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:show-end-of-presentation-slide}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:show-end-of-presentation-slide} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowLogoAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowLogoAttribute.java
new file mode 100644
index 0000000..cb093b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationShowLogoAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:show-logo}.
+ *
+ */
+public class PresentationShowLogoAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "show-logo");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:show-logo}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationShowLogoAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:show-logo}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:show-logo}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:show-logo} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationSourceAttribute.java
new file mode 100644
index 0000000..b0b9d5e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationSourceAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:source}.
+ *
+ */
+public class PresentationSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "source");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:source}.
+	 */
+	public enum Value {
+		CURRENT_DATE("current-date"), FIXED("fixed") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationSpeedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationSpeedAttribute.java
new file mode 100644
index 0000000..a903bb4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationSpeedAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:speed}.
+ *
+ */
+public class PresentationSpeedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "speed");
+	public static final String DEFAULT_VALUE = "medium";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:speed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationSpeedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:speed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:speed}.
+	 */
+	public enum Value {
+		FAST("fast"), MEDIUM("medium"), SLOW("slow") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:speed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:speed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartPageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartPageAttribute.java
new file mode 100644
index 0000000..a40798a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartPageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:start-page}.
+ *
+ */
+public class PresentationStartPageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "start-page");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:start-page}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationStartPageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:start-page}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:start-page}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:start-page} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartScaleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartScaleAttribute.java
new file mode 100644
index 0000000..766fe60
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartScaleAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:start-scale}.
+ *
+ */
+public class PresentationStartScaleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "start-scale");
+	public static final String DEFAULT_VALUE = "100%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:start-scale}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationStartScaleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:start-scale}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:start-scale}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:start-scale} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartWithNavigatorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartWithNavigatorAttribute.java
new file mode 100644
index 0000000..d5a1d02
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStartWithNavigatorAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:start-with-navigator}.
+ *
+ */
+public class PresentationStartWithNavigatorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "start-with-navigator");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:start-with-navigator}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationStartWithNavigatorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:start-with-navigator}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:start-with-navigator}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:start-with-navigator} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStayOnTopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStayOnTopAttribute.java
new file mode 100644
index 0000000..05c8ac1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStayOnTopAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:stay-on-top}.
+ *
+ */
+public class PresentationStayOnTopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "stay-on-top");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:stay-on-top}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationStayOnTopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:stay-on-top}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:stay-on-top}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:stay-on-top} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStyleNameAttribute.java
new file mode 100644
index 0000000..0655df7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:style-name}.
+ *
+ */
+public class PresentationStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionOnClickAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionOnClickAttribute.java
new file mode 100644
index 0000000..c3df428
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionOnClickAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:transition-on-click}.
+ *
+ */
+public class PresentationTransitionOnClickAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-on-click");
+	public static final String DEFAULT_VALUE = "enabled";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:transition-on-click}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationTransitionOnClickAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:transition-on-click}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:transition-on-click}.
+	 */
+	public enum Value {
+		DISABLED("disabled"), ENABLED("enabled") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:transition-on-click}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:transition-on-click} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionSpeedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionSpeedAttribute.java
new file mode 100644
index 0000000..bd19c89
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionSpeedAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:transition-speed}.
+ *
+ */
+public class PresentationTransitionSpeedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-speed");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:transition-speed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationTransitionSpeedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:transition-speed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:transition-speed}.
+	 */
+	public enum Value {
+		FAST("fast"), MEDIUM("medium"), SLOW("slow") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:transition-speed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:transition-speed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionStyleAttribute.java
new file mode 100644
index 0000000..7f22614
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:transition-style}.
+ *
+ */
+public class PresentationTransitionStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:transition-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationTransitionStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:transition-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:transition-style}.
+	 */
+	public enum Value {
+		CLOCKWISE("clockwise"), CLOSE("close"), CLOSE_HORIZONTAL("close-horizontal"), CLOSE_VERTICAL("close-vertical"), COUNTERCLOCKWISE("counterclockwise"), DISSOLVE("dissolve"), FADE_FROM_BOTTOM("fade-from-bottom"), FADE_FROM_CENTER("fade-from-center"), FADE_FROM_LEFT("fade-from-left"), FADE_FROM_LOWERLEFT("fade-from-lowerleft"), FADE_FROM_LOWERRIGHT("fade-from-lowerright"), FADE_FROM_RIGHT("fade-from-right"), FADE_FROM_TOP("fade-from-top"), FADE_FROM_UPPERLEFT("fade-from-upperleft"), FADE_FROM_UPPERRIGHT("fade-from-upperright"), FADE_TO_CENTER("fade-to-center"), FLY_AWAY("fly-away"), HORIZONTAL_CHECKERBOARD("horizontal-checkerboard"), HORIZONTAL_LINES("horizontal-lines"), HORIZONTAL_STRIPES("horizontal-stripes"), INTERLOCKING_HORIZONTAL_LEFT("interlocking-horizontal-left"), INTERLOCKING_HORIZONTAL_RIGHT("interlocking-horizontal-right"), INTERLOCKING_VERTICAL_BOTTOM("interlocking-vertical-bottom"), INTERLOCKING_VERTICAL_TOP("interlocking-vertical-top"), MELT("melt"), MOVE_FROM_BOTTOM("move-from-bottom"), MOVE_FROM_LEFT("move-from-left"), MOVE_FROM_LOWERLEFT("move-from-lowerleft"), MOVE_FROM_LOWERRIGHT("move-from-lowerright"), MOVE_FROM_RIGHT("move-from-right"), MOVE_FROM_TOP("move-from-top"), MOVE_FROM_UPPERLEFT("move-from-upperleft"), MOVE_FROM_UPPERRIGHT("move-from-upperright"), NONE("none"), OPEN("open"), OPEN_HORIZONTAL("open-horizontal"), OPEN_VERTICAL("open-vertical"), RANDOM("random"), ROLL_FROM_BOTTOM("roll-from-bottom"), ROLL_FROM_LEFT("roll-from-left"), ROLL_FROM_RIGHT("roll-from-right"), ROLL_FROM_TOP("roll-from-top"), SPIRALIN_LEFT("spiralin-left"), SPIRALIN_RIGHT("spiralin-right"), SPIRALOUT_LEFT("spiralout-left"), SPIRALOUT_RIGHT("spiralout-right"), STRETCH_FROM_BOTTOM("stretch-from-bottom"), STRETCH_FROM_LEFT("stretch-from-left"), STRETCH_FROM_RIGHT("stretch-from-right"), STRETCH_FROM_TOP("stretch-from-top"), UNCOVER_TO_BOTTOM("uncover-to-bottom"), UNCOVER_TO_LEFT("uncover-to-left"), UNCOVER_TO_LOWERLEFT("uncover-to-lowerleft"), UNCOVER_TO_LOWERRIGHT("uncover-to-lowerright"), UNCOVER_TO_RIGHT("uncover-to-right"), UNCOVER_TO_TOP("uncover-to-top"), UNCOVER_TO_UPPERLEFT("uncover-to-upperleft"), UNCOVER_TO_UPPERRIGHT("uncover-to-upperright"), VERTICAL_CHECKERBOARD("vertical-checkerboard"), VERTICAL_LINES("vertical-lines"), VERTICAL_STRIPES("vertical-stripes"), WAVYLINE_FROM_BOTTOM("wavyline-from-bottom"), WAVYLINE_FROM_LEFT("wavyline-from-left"), WAVYLINE_FROM_RIGHT("wavyline-from-right"), WAVYLINE_FROM_TOP("wavyline-from-top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:transition-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:transition-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionTypeAttribute.java
new file mode 100644
index 0000000..4638c5e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationTransitionTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:transition-type}.
+ *
+ */
+public class PresentationTransitionTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:transition-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationTransitionTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:transition-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:transition-type}.
+	 */
+	public enum Value {
+		AUTOMATIC("automatic"), MANUAL("manual"), SEMI_AUTOMATIC("semi-automatic") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:transition-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:transition-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseDateTimeNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseDateTimeNameAttribute.java
new file mode 100644
index 0000000..4695e58
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseDateTimeNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:use-date-time-name}.
+ *
+ */
+public class PresentationUseDateTimeNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "use-date-time-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:use-date-time-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationUseDateTimeNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:use-date-time-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:use-date-time-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:use-date-time-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseFooterNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseFooterNameAttribute.java
new file mode 100644
index 0000000..52ea784
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseFooterNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:use-footer-name}.
+ *
+ */
+public class PresentationUseFooterNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "use-footer-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:use-footer-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationUseFooterNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:use-footer-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:use-footer-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:use-footer-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseHeaderNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseHeaderNameAttribute.java
new file mode 100644
index 0000000..07ab2e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUseHeaderNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:use-header-name}.
+ *
+ */
+public class PresentationUseHeaderNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "use-header-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:use-header-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationUseHeaderNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:use-header-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:use-header-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:use-header-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUserTransformedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUserTransformedAttribute.java
new file mode 100644
index 0000000..48d4960
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationUserTransformedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:user-transformed}.
+ *
+ */
+public class PresentationUserTransformedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "user-transformed");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:user-transformed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationUserTransformedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:user-transformed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:user-transformed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:user-transformed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationVerbAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationVerbAttribute.java
new file mode 100644
index 0000000..dc908c5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationVerbAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:verb}.
+ *
+ */
+public class PresentationVerbAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "verb");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:verb}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationVerbAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:verb}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:verb}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:verb} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationVisibilityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationVisibilityAttribute.java
new file mode 100644
index 0000000..a84e2e5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/presentation/PresentationVisibilityAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.presentation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute presentation:visibility}.
+ *
+ */
+public class PresentationVisibilityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "visibility");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute presentation:visibility}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public PresentationVisibilityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute presentation:visibility}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute presentation:visibility}.
+	 */
+	public enum Value {
+		HIDDEN("hidden"), VISIBLE("visible") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute presentation:visibility}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute presentation:visibility} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptEventNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptEventNameAttribute.java
new file mode 100644
index 0000000..75cf0b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptEventNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.script;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute script:event-name}.
+ *
+ */
+public class ScriptEventNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SCRIPT, "event-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute script:event-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ScriptEventNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute script:event-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute script:event-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute script:event-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptLanguageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptLanguageAttribute.java
new file mode 100644
index 0000000..12d41b5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptLanguageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.script;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute script:language}.
+ *
+ */
+public class ScriptLanguageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SCRIPT, "language");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute script:language}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ScriptLanguageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute script:language}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute script:language}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute script:language} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptMacroNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptMacroNameAttribute.java
new file mode 100644
index 0000000..0e32963
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/script/ScriptMacroNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.script;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute script:macro-name}.
+ *
+ */
+public class ScriptMacroNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SCRIPT, "macro-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute script:macro-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public ScriptMacroNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute script:macro-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute script:macro-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute script:macro-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAccelerateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAccelerateAttribute.java
new file mode 100644
index 0000000..15718e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAccelerateAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:accelerate}.
+ *
+ */
+public class SmilAccelerateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "accelerate");
+	public static final String DEFAULT_VALUE = "0.0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:accelerate}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilAccelerateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:accelerate}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:accelerate}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:accelerate} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAccumulateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAccumulateAttribute.java
new file mode 100644
index 0000000..61b0125
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAccumulateAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:accumulate}.
+ *
+ */
+public class SmilAccumulateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "accumulate");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:accumulate}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilAccumulateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:accumulate}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:accumulate}.
+	 */
+	public enum Value {
+		NONE("none"), SUM("sum") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:accumulate}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:accumulate} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAdditiveAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAdditiveAttribute.java
new file mode 100644
index 0000000..def7139
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAdditiveAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:additive}.
+ *
+ */
+public class SmilAdditiveAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "additive");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:additive}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilAdditiveAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:additive}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:additive}.
+	 */
+	public enum Value {
+		REPLACE("replace"), SUM("sum") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:additive}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:additive} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAttributeNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAttributeNameAttribute.java
new file mode 100644
index 0000000..89d3e10
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAttributeNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:attributeName}.
+ *
+ */
+public class SmilAttributeNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "attributeName");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:attributeName}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilAttributeNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:attributeName}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:attributeName}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:attributeName} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAutoReverseAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAutoReverseAttribute.java
new file mode 100644
index 0000000..6bb46cd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilAutoReverseAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:autoReverse}.
+ *
+ */
+public class SmilAutoReverseAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "autoReverse");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:autoReverse}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilAutoReverseAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:autoReverse}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:autoReverse}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:autoReverse} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilBeginAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilBeginAttribute.java
new file mode 100644
index 0000000..f9e0fc3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilBeginAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:begin}.
+ *
+ */
+public class SmilBeginAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "begin");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:begin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilBeginAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:begin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:begin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:begin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilByAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilByAttribute.java
new file mode 100644
index 0000000..94aa93d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilByAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:by}.
+ *
+ */
+public class SmilByAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "by");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:by}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilByAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:by}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:by}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:by} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilCalcModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilCalcModeAttribute.java
new file mode 100644
index 0000000..9323edb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilCalcModeAttribute.java
@@ -0,0 +1,158 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateColorElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateMotionElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:calcMode}.
+ *
+ */
+public class SmilCalcModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "calcMode");
+	public static final String DEFAULT_VALUE_DISCRETE = Value.DISCRETE.toString();
+	public static final String DEFAULT_VALUE_PACED = Value.PACED.toString();
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:calcMode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilCalcModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:calcMode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:calcMode}.
+	 */
+	public enum Value {
+		DISCRETE("discrete"), LINEAR("linear"), PACED("paced"), SPLINE("spline") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:calcMode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof AnimAnimateElement) {
+				defaultValue = DEFAULT_VALUE_DISCRETE;
+			}
+			if (parentElement instanceof AnimAnimateColorElement) {
+				defaultValue = DEFAULT_VALUE_DISCRETE;
+			}
+			if (parentElement instanceof AnimAnimateMotionElement) {
+				defaultValue = DEFAULT_VALUE_PACED;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:calcMode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDecelerateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDecelerateAttribute.java
new file mode 100644
index 0000000..a7675d3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDecelerateAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:decelerate}.
+ *
+ */
+public class SmilDecelerateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "decelerate");
+	public static final String DEFAULT_VALUE = "0.0";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:decelerate}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilDecelerateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:decelerate}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:decelerate}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:decelerate} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDirectionAttribute.java
new file mode 100644
index 0000000..7803c0f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDirectionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:direction}.
+ *
+ */
+public class SmilDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "direction");
+	public static final String DEFAULT_VALUE = "forward";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:direction}.
+	 */
+	public enum Value {
+		FORWARD("forward"), REVERSE("reverse") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDurAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDurAttribute.java
new file mode 100644
index 0000000..8d47903
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilDurAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:dur}.
+ *
+ */
+public class SmilDurAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "dur");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:dur}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilDurAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:dur}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:dur}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:dur} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilEndAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilEndAttribute.java
new file mode 100644
index 0000000..f17394c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilEndAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:end}.
+ *
+ */
+public class SmilEndAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "end");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:end}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilEndAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:end}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:end}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:end} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilEndsyncAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilEndsyncAttribute.java
new file mode 100644
index 0000000..61c1b7a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilEndsyncAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:endsync}.
+ *
+ */
+public class SmilEndsyncAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "endsync");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:endsync}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilEndsyncAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:endsync}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:endsync}.
+	 */
+	public enum Value {
+		ALL("all"), FIRST("first"), LAST("last"), MEDIA("media") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:endsync}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:endsync} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFadeColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFadeColorAttribute.java
new file mode 100644
index 0000000..3c0ef21
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFadeColorAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:fadeColor}.
+ *
+ */
+public class SmilFadeColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "fadeColor");
+	public static final String DEFAULT_VALUE = "#000000";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:fadeColor}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilFadeColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:fadeColor}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:fadeColor}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:fadeColor} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFillAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFillAttribute.java
new file mode 100644
index 0000000..1bc65ed
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFillAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:fill}.
+ *
+ */
+public class SmilFillAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "fill");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:fill}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilFillAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:fill}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:fill}.
+	 */
+	public enum Value {
+		AUTO("auto"), DEFAULT("default"), FREEZE("freeze"), HOLD("hold"), REMOVE("remove"), TRANSITION("transition") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:fill}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:fill} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFillDefaultAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFillDefaultAttribute.java
new file mode 100644
index 0000000..5627c52
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFillDefaultAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:fillDefault}.
+ *
+ */
+public class SmilFillDefaultAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "fillDefault");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:fillDefault}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilFillDefaultAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:fillDefault}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:fillDefault}.
+	 */
+	public enum Value {
+		AUTO("auto"), FREEZE("freeze"), HOLD("hold"), INHERIT("inherit"), REMOVE("remove"), TRANSITION("transition") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:fillDefault}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:fillDefault} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFromAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFromAttribute.java
new file mode 100644
index 0000000..6ed50d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilFromAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:from}.
+ *
+ */
+public class SmilFromAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "from");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:from}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilFromAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:from}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:from}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:from} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilKeySplinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilKeySplinesAttribute.java
new file mode 100644
index 0000000..2e6f22a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilKeySplinesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:keySplines}.
+ *
+ */
+public class SmilKeySplinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "keySplines");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:keySplines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilKeySplinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:keySplines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:keySplines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:keySplines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilKeyTimesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilKeyTimesAttribute.java
new file mode 100644
index 0000000..c5107a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilKeyTimesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:keyTimes}.
+ *
+ */
+public class SmilKeyTimesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "keyTimes");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:keyTimes}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilKeyTimesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:keyTimes}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:keyTimes}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:keyTimes} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilModeAttribute.java
new file mode 100644
index 0000000..c2d35c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilModeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:mode}.
+ *
+ */
+public class SmilModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "mode");
+	public static final String DEFAULT_VALUE = "in";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:mode}.
+	 */
+	public enum Value {
+		IN("in"), OUT("out") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRepeatCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRepeatCountAttribute.java
new file mode 100644
index 0000000..5ecd4ea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRepeatCountAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:repeatCount}.
+ *
+ */
+public class SmilRepeatCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "repeatCount");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:repeatCount}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilRepeatCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:repeatCount}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:repeatCount}.
+	 */
+	public enum Value {
+		INDEFINITE("indefinite") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:repeatCount}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:repeatCount} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRepeatDurAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRepeatDurAttribute.java
new file mode 100644
index 0000000..39f897d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRepeatDurAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:repeatDur}.
+ *
+ */
+public class SmilRepeatDurAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "repeatDur");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:repeatDur}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilRepeatDurAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:repeatDur}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:repeatDur}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:repeatDur} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRestartAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRestartAttribute.java
new file mode 100644
index 0000000..f4295c0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRestartAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:restart}.
+ *
+ */
+public class SmilRestartAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "restart");
+	public static final String DEFAULT_VALUE = "default";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:restart}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilRestartAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:restart}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:restart}.
+	 */
+	public enum Value {
+		ALWAYS("always"), DEFAULT("default"), NEVER("never"), WHENNOTACTIVE("whenNotActive") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:restart}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:restart} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRestartDefaultAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRestartDefaultAttribute.java
new file mode 100644
index 0000000..d8ef4b5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilRestartDefaultAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:restartDefault}.
+ *
+ */
+public class SmilRestartDefaultAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "restartDefault");
+	public static final String DEFAULT_VALUE = "inherit";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:restartDefault}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilRestartDefaultAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:restartDefault}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute smil:restartDefault}.
+	 */
+	public enum Value {
+		ALWAYS("always"), INHERIT("inherit"), NEVER("never"), WHENNOTACTIVE("whenNotActive") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:restartDefault}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:restartDefault} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilSubtypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilSubtypeAttribute.java
new file mode 100644
index 0000000..2d468de
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilSubtypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:subtype}.
+ *
+ */
+public class SmilSubtypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "subtype");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:subtype}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilSubtypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:subtype}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:subtype}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:subtype} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilTargetElementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilTargetElementAttribute.java
new file mode 100644
index 0000000..152a8e0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilTargetElementAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:targetElement}.
+ *
+ */
+public class SmilTargetElementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "targetElement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:targetElement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilTargetElementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:targetElement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:targetElement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:targetElement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilToAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilToAttribute.java
new file mode 100644
index 0000000..cb5c14a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilToAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:to}.
+ *
+ */
+public class SmilToAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "to");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:to}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilToAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:to}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:to}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:to} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilTypeAttribute.java
new file mode 100644
index 0000000..80221ec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilTypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:type}.
+ *
+ */
+public class SmilTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilValuesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilValuesAttribute.java
new file mode 100644
index 0000000..37577a8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/smil/SmilValuesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.smil;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute smil:values}.
+ *
+ */
+public class SmilValuesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SMIL, "values");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute smil:values}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SmilValuesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute smil:values}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute smil:values}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute smil:values} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAdjustmentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAdjustmentAttribute.java
new file mode 100644
index 0000000..e594a21
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAdjustmentAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:adjustment}.
+ *
+ */
+public class StyleAdjustmentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "adjustment");
+	public static final String DEFAULT_VALUE = "left";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:adjustment}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleAdjustmentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:adjustment}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:adjustment}.
+	 */
+	public enum Value {
+		CENTER("center"), LEFT("left"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:adjustment}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:adjustment} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleApplyStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleApplyStyleNameAttribute.java
new file mode 100644
index 0000000..6718228
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleApplyStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:apply-style-name}.
+ *
+ */
+public class StyleApplyStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "apply-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:apply-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleApplyStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:apply-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:apply-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:apply-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAutoTextIndentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAutoTextIndentAttribute.java
new file mode 100644
index 0000000..9a5a6ff
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAutoTextIndentAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:auto-text-indent}.
+ *
+ */
+public class StyleAutoTextIndentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "auto-text-indent");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:auto-text-indent}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleAutoTextIndentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:auto-text-indent}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:auto-text-indent}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:auto-text-indent} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAutoUpdateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAutoUpdateAttribute.java
new file mode 100644
index 0000000..3fe6c56
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleAutoUpdateAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:auto-update}.
+ *
+ */
+public class StyleAutoUpdateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "auto-update");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:auto-update}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleAutoUpdateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:auto-update}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:auto-update}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:auto-update} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBackgroundTransparencyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBackgroundTransparencyAttribute.java
new file mode 100644
index 0000000..9b320d1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBackgroundTransparencyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:background-transparency}.
+ *
+ */
+public class StyleBackgroundTransparencyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "background-transparency");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:background-transparency}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBackgroundTransparencyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:background-transparency}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:background-transparency}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:background-transparency} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBaseCellAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBaseCellAddressAttribute.java
new file mode 100644
index 0000000..7ba2443
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBaseCellAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:base-cell-address}.
+ *
+ */
+public class StyleBaseCellAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "base-cell-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:base-cell-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBaseCellAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:base-cell-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:base-cell-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:base-cell-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthAttribute.java
new file mode 100644
index 0000000..b9f365d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:border-line-width}.
+ *
+ */
+public class StyleBorderLineWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:border-line-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBorderLineWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:border-line-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:border-line-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:border-line-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthBottomAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthBottomAttribute.java
new file mode 100644
index 0000000..2038237
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthBottomAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:border-line-width-bottom}.
+ *
+ */
+public class StyleBorderLineWidthBottomAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:border-line-width-bottom}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBorderLineWidthBottomAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:border-line-width-bottom}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:border-line-width-bottom}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:border-line-width-bottom} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthLeftAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthLeftAttribute.java
new file mode 100644
index 0000000..cd8266a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthLeftAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:border-line-width-left}.
+ *
+ */
+public class StyleBorderLineWidthLeftAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:border-line-width-left}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBorderLineWidthLeftAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:border-line-width-left}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:border-line-width-left}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:border-line-width-left} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthRightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthRightAttribute.java
new file mode 100644
index 0000000..e8b3d53
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthRightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:border-line-width-right}.
+ *
+ */
+public class StyleBorderLineWidthRightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:border-line-width-right}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBorderLineWidthRightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:border-line-width-right}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:border-line-width-right}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:border-line-width-right} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthTopAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthTopAttribute.java
new file mode 100644
index 0000000..ad0946b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleBorderLineWidthTopAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:border-line-width-top}.
+ *
+ */
+public class StyleBorderLineWidthTopAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:border-line-width-top}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleBorderLineWidthTopAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:border-line-width-top}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:border-line-width-top}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:border-line-width-top} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCellProtectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCellProtectAttribute.java
new file mode 100644
index 0000000..5c14cf7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCellProtectAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:cell-protect}.
+ *
+ */
+public class StyleCellProtectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "cell-protect");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:cell-protect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleCellProtectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:cell-protect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:cell-protect}.
+	 */
+	public enum Value {
+		FORMULA_HIDDEN("formula-hidden"), HIDDEN_AND_PROTECTED("hidden-and-protected"), NONE("none"), PROTECTED("protected") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:cell-protect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:cell-protect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCharAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCharAttribute.java
new file mode 100644
index 0000000..549dd7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCharAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:char}.
+ *
+ */
+public class StyleCharAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "char");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:char}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleCharAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:char}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:char}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:char} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleClassAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleClassAttribute.java
new file mode 100644
index 0000000..e07a26d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleClassAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:class}.
+ *
+ */
+public class StyleClassAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "class");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:class}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleClassAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:class}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:class}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:class} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleColorAttribute.java
new file mode 100644
index 0000000..06e99b9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleColorAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:color}.
+ *
+ */
+public class StyleColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "color");
+	public static final String DEFAULT_VALUE = "#000000";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleColumnWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleColumnWidthAttribute.java
new file mode 100644
index 0000000..6944c98
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleColumnWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:column-width}.
+ *
+ */
+public class StyleColumnWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "column-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:column-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleColumnWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:column-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:column-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:column-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleConditionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleConditionAttribute.java
new file mode 100644
index 0000000..f249459
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleConditionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:condition}.
+ *
+ */
+public class StyleConditionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "condition");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:condition}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleConditionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:condition}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:condition}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:condition} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCountryAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCountryAsianAttribute.java
new file mode 100644
index 0000000..4b5e8af
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCountryAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:country-asian}.
+ *
+ */
+public class StyleCountryAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "country-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:country-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleCountryAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:country-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:country-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:country-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCountryComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCountryComplexAttribute.java
new file mode 100644
index 0000000..f7def71
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleCountryComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:country-complex}.
+ *
+ */
+public class StyleCountryComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "country-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:country-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleCountryComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:country-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:country-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:country-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDataStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDataStyleNameAttribute.java
new file mode 100644
index 0000000..1b9b269
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDataStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:data-style-name}.
+ *
+ */
+public class StyleDataStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "data-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:data-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDataStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:data-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:data-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:data-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDecimalPlacesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDecimalPlacesAttribute.java
new file mode 100644
index 0000000..2200123
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDecimalPlacesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:decimal-places}.
+ *
+ */
+public class StyleDecimalPlacesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "decimal-places");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:decimal-places}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDecimalPlacesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:decimal-places}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:decimal-places}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:decimal-places} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDefaultOutlineLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDefaultOutlineLevelAttribute.java
new file mode 100644
index 0000000..9cfd79f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDefaultOutlineLevelAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:default-outline-level}.
+ *
+ */
+public class StyleDefaultOutlineLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "default-outline-level");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:default-outline-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDefaultOutlineLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:default-outline-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:default-outline-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:default-outline-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalBlTrAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalBlTrAttribute.java
new file mode 100644
index 0000000..ab5a5d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalBlTrAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:diagonal-bl-tr}.
+ *
+ */
+public class StyleDiagonalBlTrAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-bl-tr");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:diagonal-bl-tr}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDiagonalBlTrAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:diagonal-bl-tr}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:diagonal-bl-tr}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:diagonal-bl-tr} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalBlTrWidthsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalBlTrWidthsAttribute.java
new file mode 100644
index 0000000..f32e2d9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalBlTrWidthsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:diagonal-bl-tr-widths}.
+ *
+ */
+public class StyleDiagonalBlTrWidthsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-bl-tr-widths");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:diagonal-bl-tr-widths}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDiagonalBlTrWidthsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:diagonal-bl-tr-widths}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:diagonal-bl-tr-widths}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:diagonal-bl-tr-widths} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalTlBrAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalTlBrAttribute.java
new file mode 100644
index 0000000..90e844e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalTlBrAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:diagonal-tl-br}.
+ *
+ */
+public class StyleDiagonalTlBrAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-tl-br");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:diagonal-tl-br}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDiagonalTlBrAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:diagonal-tl-br}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:diagonal-tl-br}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:diagonal-tl-br} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalTlBrWidthsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalTlBrWidthsAttribute.java
new file mode 100644
index 0000000..2505b5d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDiagonalTlBrWidthsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:diagonal-tl-br-widths}.
+ *
+ */
+public class StyleDiagonalTlBrWidthsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-tl-br-widths");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:diagonal-tl-br-widths}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDiagonalTlBrWidthsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:diagonal-tl-br-widths}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:diagonal-tl-br-widths}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:diagonal-tl-br-widths} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDirectionAttribute.java
new file mode 100644
index 0000000..4b89c88
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDirectionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:direction}.
+ *
+ */
+public class StyleDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:direction}.
+	 */
+	public enum Value {
+		LTR("ltr"), TTB("ttb") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDisplayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDisplayAttribute.java
new file mode 100644
index 0000000..105d620
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDisplayAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:display}.
+ *
+ */
+public class StyleDisplayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "display");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:display}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDisplayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:display}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:display}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:display} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDisplayNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDisplayNameAttribute.java
new file mode 100644
index 0000000..641e8d1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDisplayNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:display-name}.
+ *
+ */
+public class StyleDisplayNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "display-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:display-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDisplayNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:display-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:display-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:display-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceAfterSepAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceAfterSepAttribute.java
new file mode 100644
index 0000000..461f5aa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceAfterSepAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:distance-after-sep}.
+ *
+ */
+public class StyleDistanceAfterSepAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "distance-after-sep");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:distance-after-sep}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDistanceAfterSepAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:distance-after-sep}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:distance-after-sep}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:distance-after-sep} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceAttribute.java
new file mode 100644
index 0000000..cf6fcde
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:distance}.
+ *
+ */
+public class StyleDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "distance");
+	public static final String DEFAULT_VALUE = "0cm";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceBeforeSepAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceBeforeSepAttribute.java
new file mode 100644
index 0000000..92ac3d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDistanceBeforeSepAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:distance-before-sep}.
+ *
+ */
+public class StyleDistanceBeforeSepAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "distance-before-sep");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:distance-before-sep}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDistanceBeforeSepAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:distance-before-sep}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:distance-before-sep}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:distance-before-sep} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDynamicSpacingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDynamicSpacingAttribute.java
new file mode 100644
index 0000000..6040f15
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleDynamicSpacingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:dynamic-spacing}.
+ *
+ */
+public class StyleDynamicSpacingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "dynamic-spacing");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:dynamic-spacing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleDynamicSpacingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:dynamic-spacing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:dynamic-spacing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:dynamic-spacing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleEditableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleEditableAttribute.java
new file mode 100644
index 0000000..d915123
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleEditableAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:editable}.
+ *
+ */
+public class StyleEditableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "editable");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:editable}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleEditableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:editable}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:editable}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:editable} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFamilyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFamilyAttribute.java
new file mode 100644
index 0000000..797bd45
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFamilyAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:family}.
+ *
+ */
+public class StyleFamilyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "family");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:family}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFamilyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:family}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:family}.
+	 */
+	public enum Value {
+		CHART("chart"), DRAWING_PAGE("drawing-page"), GRAPHIC("graphic"), PARAGRAPH("paragraph"), PRESENTATION("presentation"), RUBY("ruby"), SECTION("section"), TABLE("table"), TABLE_CELL("table-cell"), TABLE_COLUMN("table-column"), TABLE_ROW("table-row"), TEXT("text") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:family}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:family} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFilterNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFilterNameAttribute.java
new file mode 100644
index 0000000..7b9ebc1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFilterNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:filter-name}.
+ *
+ */
+public class StyleFilterNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "filter-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:filter-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFilterNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:filter-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:filter-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:filter-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFirstPageNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFirstPageNumberAttribute.java
new file mode 100644
index 0000000..013e0d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFirstPageNumberAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:first-page-number}.
+ *
+ */
+public class StyleFirstPageNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "first-page-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:first-page-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFirstPageNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:first-page-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:first-page-number}.
+	 */
+	public enum Value {
+		CONTINUE("continue") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:first-page-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:first-page-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFlowWithTextAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFlowWithTextAttribute.java
new file mode 100644
index 0000000..040e61a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFlowWithTextAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:flow-with-text}.
+ *
+ */
+public class StyleFlowWithTextAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "flow-with-text");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:flow-with-text}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFlowWithTextAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:flow-with-text}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:flow-with-text}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:flow-with-text} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontAdornmentsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontAdornmentsAttribute.java
new file mode 100644
index 0000000..3a863d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontAdornmentsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-adornments}.
+ *
+ */
+public class StyleFontAdornmentsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-adornments");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-adornments}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontAdornmentsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-adornments}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-adornments}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-adornments} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetAsianAttribute.java
new file mode 100644
index 0000000..fd95757
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-charset-asian}.
+ *
+ */
+public class StyleFontCharsetAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-charset-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontCharsetAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-charset-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-charset-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-charset-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetAttribute.java
new file mode 100644
index 0000000..967b32d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-charset}.
+ *
+ */
+public class StyleFontCharsetAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-charset}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontCharsetAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-charset}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-charset}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-charset} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetComplexAttribute.java
new file mode 100644
index 0000000..07eb08f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontCharsetComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-charset-complex}.
+ *
+ */
+public class StyleFontCharsetComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-charset-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontCharsetComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-charset-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-charset-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-charset-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyAsianAttribute.java
new file mode 100644
index 0000000..ba8c012
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-family-asian}.
+ *
+ */
+public class StyleFontFamilyAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-family-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontFamilyAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-family-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-family-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-family-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyComplexAttribute.java
new file mode 100644
index 0000000..fb0ef4e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-family-complex}.
+ *
+ */
+public class StyleFontFamilyComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-family-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontFamilyComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-family-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-family-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-family-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericAsianAttribute.java
new file mode 100644
index 0000000..55c692c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericAsianAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-family-generic-asian}.
+ *
+ */
+public class StyleFontFamilyGenericAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-family-generic-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontFamilyGenericAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-family-generic-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-family-generic-asian}.
+	 */
+	public enum Value {
+		DECORATIVE("decorative"), MODERN("modern"), ROMAN("roman"), SCRIPT("script"), SWISS("swiss"), SYSTEM("system") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-family-generic-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-family-generic-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericAttribute.java
new file mode 100644
index 0000000..d104906
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-family-generic}.
+ *
+ */
+public class StyleFontFamilyGenericAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-family-generic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontFamilyGenericAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-family-generic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-family-generic}.
+	 */
+	public enum Value {
+		DECORATIVE("decorative"), MODERN("modern"), ROMAN("roman"), SCRIPT("script"), SWISS("swiss"), SYSTEM("system") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-family-generic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-family-generic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericComplexAttribute.java
new file mode 100644
index 0000000..595a6fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontFamilyGenericComplexAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-family-generic-complex}.
+ *
+ */
+public class StyleFontFamilyGenericComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-family-generic-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontFamilyGenericComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-family-generic-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-family-generic-complex}.
+	 */
+	public enum Value {
+		DECORATIVE("decorative"), MODERN("modern"), ROMAN("roman"), SCRIPT("script"), SWISS("swiss"), SYSTEM("system") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-family-generic-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-family-generic-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontIndependentLineSpacingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontIndependentLineSpacingAttribute.java
new file mode 100644
index 0000000..8ed1feb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontIndependentLineSpacingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-independent-line-spacing}.
+ *
+ */
+public class StyleFontIndependentLineSpacingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-independent-line-spacing");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-independent-line-spacing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontIndependentLineSpacingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-independent-line-spacing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-independent-line-spacing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-independent-line-spacing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameAsianAttribute.java
new file mode 100644
index 0000000..7fc76a0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-name-asian}.
+ *
+ */
+public class StyleFontNameAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-name-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-name-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontNameAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-name-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-name-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-name-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameAttribute.java
new file mode 100644
index 0000000..30e5465
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-name}.
+ *
+ */
+public class StyleFontNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameComplexAttribute.java
new file mode 100644
index 0000000..3855a0a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontNameComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-name-complex}.
+ *
+ */
+public class StyleFontNameComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-name-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-name-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontNameComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-name-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-name-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-name-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchAsianAttribute.java
new file mode 100644
index 0000000..7924787
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchAsianAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-pitch-asian}.
+ *
+ */
+public class StyleFontPitchAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-pitch-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontPitchAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-pitch-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-pitch-asian}.
+	 */
+	public enum Value {
+		FIXED("fixed"), VARIABLE("variable") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-pitch-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-pitch-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchAttribute.java
new file mode 100644
index 0000000..7e59ac2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-pitch}.
+ *
+ */
+public class StyleFontPitchAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-pitch}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontPitchAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-pitch}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-pitch}.
+	 */
+	public enum Value {
+		FIXED("fixed"), VARIABLE("variable") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-pitch}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-pitch} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchComplexAttribute.java
new file mode 100644
index 0000000..2314d4c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontPitchComplexAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-pitch-complex}.
+ *
+ */
+public class StyleFontPitchComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-pitch-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontPitchComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-pitch-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-pitch-complex}.
+	 */
+	public enum Value {
+		FIXED("fixed"), VARIABLE("variable") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-pitch-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-pitch-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontReliefAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontReliefAttribute.java
new file mode 100644
index 0000000..408f5a7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontReliefAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-relief}.
+ *
+ */
+public class StyleFontReliefAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-relief");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-relief}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontReliefAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-relief}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-relief}.
+	 */
+	public enum Value {
+		EMBOSSED("embossed"), ENGRAVED("engraved"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-relief}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-relief} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeAsianAttribute.java
new file mode 100644
index 0000000..3a7fe54
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-size-asian}.
+ *
+ */
+public class StyleFontSizeAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-size-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontSizeAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-size-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-size-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-size-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeComplexAttribute.java
new file mode 100644
index 0000000..9b4b1b6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-size-complex}.
+ *
+ */
+public class StyleFontSizeComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-size-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontSizeComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-size-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-size-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-size-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelAsianAttribute.java
new file mode 100644
index 0000000..9ceb861
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-size-rel-asian}.
+ *
+ */
+public class StyleFontSizeRelAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-size-rel-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontSizeRelAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-size-rel-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-size-rel-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-size-rel-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelAttribute.java
new file mode 100644
index 0000000..9bab558
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-size-rel}.
+ *
+ */
+public class StyleFontSizeRelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-size-rel}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontSizeRelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-size-rel}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-size-rel}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-size-rel} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelComplexAttribute.java
new file mode 100644
index 0000000..64cae9c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontSizeRelComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-size-rel-complex}.
+ *
+ */
+public class StyleFontSizeRelComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-size-rel-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontSizeRelComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-size-rel-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-size-rel-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-size-rel-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleAsianAttribute.java
new file mode 100644
index 0000000..b242cc5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleAsianAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-style-asian}.
+ *
+ */
+public class StyleFontStyleAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-style-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontStyleAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-style-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-style-asian}.
+	 */
+	public enum Value {
+		ITALIC("italic"), NORMAL("normal"), OBLIQUE("oblique") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-style-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-style-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleComplexAttribute.java
new file mode 100644
index 0000000..0c24800
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleComplexAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-style-complex}.
+ *
+ */
+public class StyleFontStyleComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-style-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontStyleComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-style-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-style-complex}.
+	 */
+	public enum Value {
+		ITALIC("italic"), NORMAL("normal"), OBLIQUE("oblique") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-style-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-style-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameAsianAttribute.java
new file mode 100644
index 0000000..667dca9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-style-name-asian}.
+ *
+ */
+public class StyleFontStyleNameAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-style-name-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontStyleNameAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-style-name-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-style-name-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-style-name-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameAttribute.java
new file mode 100644
index 0000000..5318991
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-style-name}.
+ *
+ */
+public class StyleFontStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameComplexAttribute.java
new file mode 100644
index 0000000..f65605e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontStyleNameComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-style-name-complex}.
+ *
+ */
+public class StyleFontStyleNameComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-style-name-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontStyleNameComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-style-name-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-style-name-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-style-name-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontWeightAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontWeightAsianAttribute.java
new file mode 100644
index 0000000..7651ed1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontWeightAsianAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-weight-asian}.
+ *
+ */
+public class StyleFontWeightAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-weight-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-weight-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontWeightAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-weight-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-weight-asian}.
+	 */
+	public enum Value {
+		_100("100"), _200("200"), _300("300"), _400("400"), _500("500"), _600("600"), _700("700"), _800("800"), _900("900"), BOLD("bold"), NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-weight-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-weight-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontWeightComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontWeightComplexAttribute.java
new file mode 100644
index 0000000..04dca19
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFontWeightComplexAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:font-weight-complex}.
+ *
+ */
+public class StyleFontWeightComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-weight-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:font-weight-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontWeightComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:font-weight-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:font-weight-complex}.
+	 */
+	public enum Value {
+		_100("100"), _200("200"), _300("300"), _400("400"), _500("500"), _600("600"), _700("700"), _800("800"), _900("900"), BOLD("bold"), NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:font-weight-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:font-weight-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFootnoteMaxHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFootnoteMaxHeightAttribute.java
new file mode 100644
index 0000000..51f937e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleFootnoteMaxHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:footnote-max-height}.
+ *
+ */
+public class StyleFootnoteMaxHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "footnote-max-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:footnote-max-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleFootnoteMaxHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:footnote-max-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:footnote-max-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:footnote-max-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleGlyphOrientationVerticalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleGlyphOrientationVerticalAttribute.java
new file mode 100644
index 0000000..dc39013
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleGlyphOrientationVerticalAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:glyph-orientation-vertical}.
+ *
+ */
+public class StyleGlyphOrientationVerticalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "glyph-orientation-vertical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:glyph-orientation-vertical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleGlyphOrientationVerticalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:glyph-orientation-vertical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:glyph-orientation-vertical}.
+	 */
+	public enum Value {
+		_0("0"), _0DEG("0deg"), _0GRAD("0grad"), _0RAD("0rad"), AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:glyph-orientation-vertical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:glyph-orientation-vertical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHeightAttribute.java
new file mode 100644
index 0000000..eb40c0f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHeightAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:height}.
+ *
+ */
+public class StyleHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "height");
+	public static final String DEFAULT_VALUE = "100%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHorizontalPosAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHorizontalPosAttribute.java
new file mode 100644
index 0000000..5f08b8a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHorizontalPosAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:horizontal-pos}.
+ *
+ */
+public class StyleHorizontalPosAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "horizontal-pos");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:horizontal-pos}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleHorizontalPosAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:horizontal-pos}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:horizontal-pos}.
+	 */
+	public enum Value {
+		CENTER("center"), FROM_INSIDE("from-inside"), FROM_LEFT("from-left"), INSIDE("inside"), LEFT("left"), OUTSIDE("outside"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:horizontal-pos}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:horizontal-pos} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHorizontalRelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHorizontalRelAttribute.java
new file mode 100644
index 0000000..5808f85
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleHorizontalRelAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:horizontal-rel}.
+ *
+ */
+public class StyleHorizontalRelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "horizontal-rel");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:horizontal-rel}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleHorizontalRelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:horizontal-rel}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:horizontal-rel}.
+	 */
+	public enum Value {
+		CHAR("char"), FRAME("frame"), FRAME_CONTENT("frame-content"), FRAME_END_MARGIN("frame-end-margin"), FRAME_START_MARGIN("frame-start-margin"), PAGE("page"), PAGE_CONTENT("page-content"), PAGE_END_MARGIN("page-end-margin"), PAGE_START_MARGIN("page-start-margin"), PARAGRAPH("paragraph"), PARAGRAPH_CONTENT("paragraph-content"), PARAGRAPH_END_MARGIN("paragraph-end-margin"), PARAGRAPH_START_MARGIN("paragraph-start-margin") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:horizontal-rel}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:horizontal-rel} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleJoinBorderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleJoinBorderAttribute.java
new file mode 100644
index 0000000..10fc706
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleJoinBorderAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:join-border}.
+ *
+ */
+public class StyleJoinBorderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "join-border");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:join-border}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleJoinBorderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:join-border}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:join-border}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:join-border} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleJustifySingleWordAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleJustifySingleWordAttribute.java
new file mode 100644
index 0000000..3c71bc1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleJustifySingleWordAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:justify-single-word}.
+ *
+ */
+public class StyleJustifySingleWordAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "justify-single-word");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:justify-single-word}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleJustifySingleWordAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:justify-single-word}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:justify-single-word}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:justify-single-word} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLanguageAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLanguageAsianAttribute.java
new file mode 100644
index 0000000..1ea143e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLanguageAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:language-asian}.
+ *
+ */
+public class StyleLanguageAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "language-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:language-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLanguageAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:language-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:language-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:language-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLanguageComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLanguageComplexAttribute.java
new file mode 100644
index 0000000..bb8debc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLanguageComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:language-complex}.
+ *
+ */
+public class StyleLanguageComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "language-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:language-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLanguageComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:language-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:language-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:language-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridBaseHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridBaseHeightAttribute.java
new file mode 100644
index 0000000..28aeb35
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridBaseHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-base-height}.
+ *
+ */
+public class StyleLayoutGridBaseHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-base-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-base-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridBaseHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-base-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-base-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-base-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridBaseWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridBaseWidthAttribute.java
new file mode 100644
index 0000000..8cdba9c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridBaseWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-base-width}.
+ *
+ */
+public class StyleLayoutGridBaseWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-base-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-base-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridBaseWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-base-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-base-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-base-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridColorAttribute.java
new file mode 100644
index 0000000..1557bc7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-color}.
+ *
+ */
+public class StyleLayoutGridColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridDisplayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridDisplayAttribute.java
new file mode 100644
index 0000000..68257d9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridDisplayAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-display}.
+ *
+ */
+public class StyleLayoutGridDisplayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-display");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-display}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridDisplayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-display}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-display}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-display} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridLinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridLinesAttribute.java
new file mode 100644
index 0000000..0e7d35a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridLinesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-lines}.
+ *
+ */
+public class StyleLayoutGridLinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-lines");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-lines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridLinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-lines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-lines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-lines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridModeAttribute.java
new file mode 100644
index 0000000..4852195
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-mode}.
+ *
+ */
+public class StyleLayoutGridModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:layout-grid-mode}.
+	 */
+	public enum Value {
+		BOTH("both"), LINE("line"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridPrintAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridPrintAttribute.java
new file mode 100644
index 0000000..b42f7dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridPrintAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-print}.
+ *
+ */
+public class StyleLayoutGridPrintAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-print");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-print}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridPrintAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-print}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-print}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-print} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridRubyBelowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridRubyBelowAttribute.java
new file mode 100644
index 0000000..4b775ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridRubyBelowAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-ruby-below}.
+ *
+ */
+public class StyleLayoutGridRubyBelowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-ruby-below");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-ruby-below}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridRubyBelowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-ruby-below}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-ruby-below}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-ruby-below} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridRubyHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridRubyHeightAttribute.java
new file mode 100644
index 0000000..8cb1cae
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridRubyHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-ruby-height}.
+ *
+ */
+public class StyleLayoutGridRubyHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-ruby-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-ruby-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridRubyHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-ruby-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-ruby-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-ruby-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridSnapToAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridSnapToAttribute.java
new file mode 100644
index 0000000..f96adb0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridSnapToAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-snap-to}.
+ *
+ */
+public class StyleLayoutGridSnapToAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-snap-to");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-snap-to}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridSnapToAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-snap-to}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-snap-to}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-snap-to} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridStandardModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridStandardModeAttribute.java
new file mode 100644
index 0000000..bb92517
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLayoutGridStandardModeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:layout-grid-standard-mode}.
+ *
+ */
+public class StyleLayoutGridStandardModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-standard-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:layout-grid-standard-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLayoutGridStandardModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:layout-grid-standard-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:layout-grid-standard-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:layout-grid-standard-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderCharAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderCharAttribute.java
new file mode 100644
index 0000000..337a1b3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderCharAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-char}.
+ *
+ */
+public class StyleLeaderCharAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-char");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-char}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderCharAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-char}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-char}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-char} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderColorAttribute.java
new file mode 100644
index 0000000..8ae7012
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderColorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-color}.
+ *
+ */
+public class StyleLeaderColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:leader-color}.
+	 */
+	public enum Value {
+		FONT_COLOR("font-color") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderStyleAttribute.java
new file mode 100644
index 0000000..ceb5f1a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-style}.
+ *
+ */
+public class StyleLeaderStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:leader-style}.
+	 */
+	public enum Value {
+		DASH("dash"), DOT_DASH("dot-dash"), DOT_DOT_DASH("dot-dot-dash"), DOTTED("dotted"), LONG_DASH("long-dash"), NONE("none"), SOLID("solid"), WAVE("wave") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTextAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTextAttribute.java
new file mode 100644
index 0000000..cd6368c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTextAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-text}.
+ *
+ */
+public class StyleLeaderTextAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-text");
+	public static final String DEFAULT_VALUE = " ";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-text}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderTextAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-text}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-text}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-text} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTextStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTextStyleAttribute.java
new file mode 100644
index 0000000..8eeeb3f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTextStyleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-text-style}.
+ *
+ */
+public class StyleLeaderTextStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-text-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-text-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderTextStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-text-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-text-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-text-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTypeAttribute.java
new file mode 100644
index 0000000..d9284f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-type}.
+ *
+ */
+public class StyleLeaderTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:leader-type}.
+	 */
+	public enum Value {
+		DOUBLE("double"), NONE("none"), SINGLE("single") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderWidthAttribute.java
new file mode 100644
index 0000000..771291d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLeaderWidthAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:leader-width}.
+ *
+ */
+public class StyleLeaderWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "leader-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:leader-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLeaderWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:leader-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:leader-width}.
+	 */
+	public enum Value {
+		AUTO("auto"), BOLD("bold"), MEDIUM("medium"), NORMAL("normal"), THICK("thick"), THIN("thin") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:leader-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:leader-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLegendExpansionAspectRatioAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLegendExpansionAspectRatioAttribute.java
new file mode 100644
index 0000000..8815afe
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLegendExpansionAspectRatioAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:legend-expansion-aspect-ratio}.
+ *
+ */
+public class StyleLegendExpansionAspectRatioAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "legend-expansion-aspect-ratio");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:legend-expansion-aspect-ratio}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLegendExpansionAspectRatioAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:legend-expansion-aspect-ratio}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:legend-expansion-aspect-ratio}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:legend-expansion-aspect-ratio} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLegendExpansionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLegendExpansionAttribute.java
new file mode 100644
index 0000000..1c644d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLegendExpansionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:legend-expansion}.
+ *
+ */
+public class StyleLegendExpansionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "legend-expansion");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:legend-expansion}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLegendExpansionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:legend-expansion}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:legend-expansion}.
+	 */
+	public enum Value {
+		BALANCED("balanced"), CUSTOM("custom"), HIGH("high"), WIDE("wide") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:legend-expansion}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:legend-expansion} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLengthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLengthAttribute.java
new file mode 100644
index 0000000..ab5ef57
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLengthAttribute.java
@@ -0,0 +1,166 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:length}.
+ *
+ */
+public class StyleLengthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "length");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:length}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLengthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:length}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:length}.
+	 */
+	public enum Value {
+		WORD("word") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:length}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:length} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLetterKerningAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLetterKerningAttribute.java
new file mode 100644
index 0000000..13485ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLetterKerningAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:letter-kerning}.
+ *
+ */
+public class StyleLetterKerningAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "letter-kerning");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:letter-kerning}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLetterKerningAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:letter-kerning}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:letter-kerning}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:letter-kerning} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineBreakAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineBreakAttribute.java
new file mode 100644
index 0000000..9376ef3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineBreakAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:line-break}.
+ *
+ */
+public class StyleLineBreakAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "line-break");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:line-break}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLineBreakAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:line-break}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:line-break}.
+	 */
+	public enum Value {
+		NORMAL("normal"), STRICT("strict") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:line-break}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:line-break} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineHeightAtLeastAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineHeightAtLeastAttribute.java
new file mode 100644
index 0000000..84b30bc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineHeightAtLeastAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:line-height-at-least}.
+ *
+ */
+public class StyleLineHeightAtLeastAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "line-height-at-least");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:line-height-at-least}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLineHeightAtLeastAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:line-height-at-least}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:line-height-at-least}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:line-height-at-least} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineSpacingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineSpacingAttribute.java
new file mode 100644
index 0000000..2b76c20
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineSpacingAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:line-spacing}.
+ *
+ */
+public class StyleLineSpacingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "line-spacing");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:line-spacing}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLineSpacingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:line-spacing}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:line-spacing}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:line-spacing} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineStyleAttribute.java
new file mode 100644
index 0000000..22f5604
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLineStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:line-style}.
+ *
+ */
+public class StyleLineStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "line-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:line-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLineStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:line-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:line-style}.
+	 */
+	public enum Value {
+		DASH("dash"), DOT_DASH("dot-dash"), DOT_DOT_DASH("dot-dot-dash"), DOTTED("dotted"), LONG_DASH("long-dash"), NONE("none"), SOLID("solid"), WAVE("wave") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:line-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:line-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLinesAttribute.java
new file mode 100644
index 0000000..490d943
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleLinesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:lines}.
+ *
+ */
+public class StyleLinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "lines");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:lines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleLinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:lines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:lines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:lines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleListLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleListLevelAttribute.java
new file mode 100644
index 0000000..b094658
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleListLevelAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:list-level}.
+ *
+ */
+public class StyleListLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "list-level");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:list-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleListLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:list-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:list-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:list-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleListStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleListStyleNameAttribute.java
new file mode 100644
index 0000000..eccb112
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleListStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:list-style-name}.
+ *
+ */
+public class StyleListStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "list-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:list-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleListStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:list-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:list-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:list-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMasterPageNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMasterPageNameAttribute.java
new file mode 100644
index 0000000..0ac0e66
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMasterPageNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:master-page-name}.
+ *
+ */
+public class StyleMasterPageNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "master-page-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:master-page-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleMasterPageNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:master-page-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:master-page-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:master-page-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMayBreakBetweenRowsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMayBreakBetweenRowsAttribute.java
new file mode 100644
index 0000000..299ca84
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMayBreakBetweenRowsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:may-break-between-rows}.
+ *
+ */
+public class StyleMayBreakBetweenRowsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "may-break-between-rows");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:may-break-between-rows}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleMayBreakBetweenRowsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:may-break-between-rows}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:may-break-between-rows}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:may-break-between-rows} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMinRowHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMinRowHeightAttribute.java
new file mode 100644
index 0000000..2275b2d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMinRowHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:min-row-height}.
+ *
+ */
+public class StyleMinRowHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "min-row-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:min-row-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleMinRowHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:min-row-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:min-row-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:min-row-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMirrorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMirrorAttribute.java
new file mode 100644
index 0000000..a735293
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleMirrorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:mirror}.
+ *
+ */
+public class StyleMirrorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "mirror");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:mirror}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleMirrorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:mirror}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:mirror}.
+	 */
+	public enum Value {
+		HORIZONTAL("horizontal"), HORIZONTAL_ON_EVEN("horizontal-on-even"), HORIZONTAL_ON_ODD("horizontal-on-odd"), NONE("none"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:mirror}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:mirror} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNameAttribute.java
new file mode 100644
index 0000000..787d697
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:name}.
+ *
+ */
+public class StyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNextStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNextStyleNameAttribute.java
new file mode 100644
index 0000000..7a1951a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNextStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:next-style-name}.
+ *
+ */
+public class StyleNextStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "next-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:next-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNextStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:next-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:next-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:next-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumFormatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumFormatAttribute.java
new file mode 100644
index 0000000..8215351
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumFormatAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:num-format}.
+ *
+ */
+public class StyleNumFormatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "num-format");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:num-format}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNumFormatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:num-format}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:num-format}.
+	 */
+	public enum Value {
+		_1("1"), A("A"), I("I"), a("a"), i("i") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:num-format}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:num-format} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumLetterSyncAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumLetterSyncAttribute.java
new file mode 100644
index 0000000..0202ef2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumLetterSyncAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:num-letter-sync}.
+ *
+ */
+public class StyleNumLetterSyncAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "num-letter-sync");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:num-letter-sync}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNumLetterSyncAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:num-letter-sync}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:num-letter-sync}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:num-letter-sync} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumPrefixAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumPrefixAttribute.java
new file mode 100644
index 0000000..62dd2f9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumPrefixAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:num-prefix}.
+ *
+ */
+public class StyleNumPrefixAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "num-prefix");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:num-prefix}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNumPrefixAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:num-prefix}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:num-prefix}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:num-prefix} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumSuffixAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumSuffixAttribute.java
new file mode 100644
index 0000000..f8b9c2e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumSuffixAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:num-suffix}.
+ *
+ */
+public class StyleNumSuffixAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "num-suffix");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:num-suffix}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNumSuffixAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:num-suffix}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:num-suffix}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:num-suffix} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumberWrappedParagraphsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumberWrappedParagraphsAttribute.java
new file mode 100644
index 0000000..698fa81
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleNumberWrappedParagraphsAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:number-wrapped-paragraphs}.
+ *
+ */
+public class StyleNumberWrappedParagraphsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "number-wrapped-paragraphs");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:number-wrapped-paragraphs}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleNumberWrappedParagraphsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:number-wrapped-paragraphs}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:number-wrapped-paragraphs}.
+	 */
+	public enum Value {
+		NO_LIMIT("no-limit") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:number-wrapped-paragraphs}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:number-wrapped-paragraphs} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleOverflowBehaviorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleOverflowBehaviorAttribute.java
new file mode 100644
index 0000000..3fe3a71
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleOverflowBehaviorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:overflow-behavior}.
+ *
+ */
+public class StyleOverflowBehaviorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "overflow-behavior");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:overflow-behavior}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleOverflowBehaviorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:overflow-behavior}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:overflow-behavior}.
+	 */
+	public enum Value {
+		AUTO_CREATE_NEW_FRAME("auto-create-new-frame"), CLIP("clip") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:overflow-behavior}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:overflow-behavior} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageLayoutNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageLayoutNameAttribute.java
new file mode 100644
index 0000000..5a7d903
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageLayoutNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:page-layout-name}.
+ *
+ */
+public class StylePageLayoutNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "page-layout-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:page-layout-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePageLayoutNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:page-layout-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:page-layout-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:page-layout-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageNumberAttribute.java
new file mode 100644
index 0000000..b96013a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageNumberAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:page-number}.
+ *
+ */
+public class StylePageNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "page-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:page-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePageNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:page-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:page-number}.
+	 */
+	public enum Value {
+		AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:page-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:page-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageUsageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageUsageAttribute.java
new file mode 100644
index 0000000..05934a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePageUsageAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:page-usage}.
+ *
+ */
+public class StylePageUsageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "page-usage");
+	public static final String DEFAULT_VALUE = "all";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:page-usage}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePageUsageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:page-usage}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:page-usage}.
+	 */
+	public enum Value {
+		ALL("all"), LEFT("left"), MIRRORED("mirrored"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:page-usage}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:page-usage} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePaperTrayNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePaperTrayNameAttribute.java
new file mode 100644
index 0000000..5f1ea6b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePaperTrayNameAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:paper-tray-name}.
+ *
+ */
+public class StylePaperTrayNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "paper-tray-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:paper-tray-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePaperTrayNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:paper-tray-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:paper-tray-name}.
+	 */
+	public enum Value {
+		DEFAULT("default") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:paper-tray-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:paper-tray-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleParentStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleParentStyleNameAttribute.java
new file mode 100644
index 0000000..10e2ccc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleParentStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:parent-style-name}.
+ *
+ */
+public class StyleParentStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "parent-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:parent-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleParentStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:parent-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:parent-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:parent-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePercentageDataStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePercentageDataStyleNameAttribute.java
new file mode 100644
index 0000000..6e48ee5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePercentageDataStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:percentage-data-style-name}.
+ *
+ */
+public class StylePercentageDataStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "percentage-data-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:percentage-data-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePercentageDataStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:percentage-data-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:percentage-data-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:percentage-data-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePositionAttribute.java
new file mode 100644
index 0000000..9f584e5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePositionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:position}.
+ *
+ */
+public class StylePositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "position");
+	public static final String DEFAULT_VALUE = "center";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:position}.
+	 */
+	public enum Value {
+		BOTTOM("bottom"), CENTER("center"), LEFT("left"), RIGHT("right"), TOP("top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintAttribute.java
new file mode 100644
index 0000000..4f17852
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:print}.
+ *
+ */
+public class StylePrintAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "print");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:print}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePrintAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:print}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:print}.
+	 */
+	public enum Value {
+		ANNOTATIONS("annotations"), CHARTS("charts"), DRAWINGS("drawings"), FORMULAS("formulas"), GRID("grid"), HEADERS("headers"), OBJECTS("objects"), ZERO_VALUES("zero-values") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:print}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:print} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintContentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintContentAttribute.java
new file mode 100644
index 0000000..dd01501
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintContentAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:print-content}.
+ *
+ */
+public class StylePrintContentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "print-content");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:print-content}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePrintContentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:print-content}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:print-content}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:print-content} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintOrientationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintOrientationAttribute.java
new file mode 100644
index 0000000..896b050
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintOrientationAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:print-orientation}.
+ *
+ */
+public class StylePrintOrientationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "print-orientation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:print-orientation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePrintOrientationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:print-orientation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:print-orientation}.
+	 */
+	public enum Value {
+		LANDSCAPE("landscape"), PORTRAIT("portrait") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:print-orientation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:print-orientation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintPageOrderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintPageOrderAttribute.java
new file mode 100644
index 0000000..46f3f08
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePrintPageOrderAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:print-page-order}.
+ *
+ */
+public class StylePrintPageOrderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "print-page-order");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:print-page-order}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePrintPageOrderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:print-page-order}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:print-page-order}.
+	 */
+	public enum Value {
+		LTR("ltr"), TTB("ttb") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:print-page-order}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:print-page-order} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleProtectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleProtectAttribute.java
new file mode 100644
index 0000000..89b7498
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleProtectAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:protect}.
+ *
+ */
+public class StyleProtectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "protect");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:protect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleProtectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:protect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:protect}.
+	 */
+	public enum Value {
+		CONTENT("content"), FALSE("false"), NONE("none"), POSITION("position"), SIZE("size"), TRUE("true") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:protect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:protect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePunctuationWrapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePunctuationWrapAttribute.java
new file mode 100644
index 0000000..37bd14a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StylePunctuationWrapAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:punctuation-wrap}.
+ *
+ */
+public class StylePunctuationWrapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "punctuation-wrap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:punctuation-wrap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StylePunctuationWrapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:punctuation-wrap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:punctuation-wrap}.
+	 */
+	public enum Value {
+		HANGING("hanging"), SIMPLE("simple") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:punctuation-wrap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:punctuation-wrap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRegisterTrueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRegisterTrueAttribute.java
new file mode 100644
index 0000000..12d6c93
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRegisterTrueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:register-true}.
+ *
+ */
+public class StyleRegisterTrueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "register-true");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:register-true}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRegisterTrueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:register-true}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:register-true}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:register-true} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRegisterTruthRefStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRegisterTruthRefStyleNameAttribute.java
new file mode 100644
index 0000000..a21ceb3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRegisterTruthRefStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:register-truth-ref-style-name}.
+ *
+ */
+public class StyleRegisterTruthRefStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "register-truth-ref-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:register-truth-ref-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRegisterTruthRefStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:register-truth-ref-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:register-truth-ref-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:register-truth-ref-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelColumnWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelColumnWidthAttribute.java
new file mode 100644
index 0000000..765561a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelColumnWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rel-column-width}.
+ *
+ */
+public class StyleRelColumnWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rel-column-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rel-column-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRelColumnWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rel-column-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rel-column-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rel-column-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelHeightAttribute.java
new file mode 100644
index 0000000..388dc03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelHeightAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rel-height}.
+ *
+ */
+public class StyleRelHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rel-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rel-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRelHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rel-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:rel-height}.
+	 */
+	public enum Value {
+		SCALE("scale"), SCALE_MIN("scale-min") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rel-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rel-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelWidthAttribute.java
new file mode 100644
index 0000000..7308636
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRelWidthAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rel-width}.
+ *
+ */
+public class StyleRelWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rel-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rel-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRelWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rel-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:rel-width}.
+	 */
+	public enum Value {
+		SCALE("scale"), SCALE_MIN("scale-min") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rel-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rel-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRepeatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRepeatAttribute.java
new file mode 100644
index 0000000..d8bcc52
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRepeatAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:repeat}.
+ *
+ */
+public class StyleRepeatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "repeat");
+	public static final String DEFAULT_VALUE = "repeat";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:repeat}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRepeatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:repeat}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:repeat}.
+	 */
+	public enum Value {
+		NO_REPEAT("no-repeat"), REPEAT("repeat"), STRETCH("stretch") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:repeat}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:repeat} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRepeatContentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRepeatContentAttribute.java
new file mode 100644
index 0000000..2e3e648
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRepeatContentAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:repeat-content}.
+ *
+ */
+public class StyleRepeatContentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "repeat-content");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:repeat-content}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRepeatContentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:repeat-content}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:repeat-content}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:repeat-content} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagAsianAttribute.java
new file mode 100644
index 0000000..444e58f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rfc-language-tag-asian}.
+ *
+ */
+public class StyleRfcLanguageTagAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rfc-language-tag-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRfcLanguageTagAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rfc-language-tag-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rfc-language-tag-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rfc-language-tag-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagAttribute.java
new file mode 100644
index 0000000..9789be0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rfc-language-tag}.
+ *
+ */
+public class StyleRfcLanguageTagAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rfc-language-tag}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRfcLanguageTagAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rfc-language-tag}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rfc-language-tag}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rfc-language-tag} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagComplexAttribute.java
new file mode 100644
index 0000000..0b09199
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRfcLanguageTagComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rfc-language-tag-complex}.
+ *
+ */
+public class StyleRfcLanguageTagComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rfc-language-tag-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRfcLanguageTagComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rfc-language-tag-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rfc-language-tag-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rfc-language-tag-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRotationAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRotationAlignAttribute.java
new file mode 100644
index 0000000..b6f9986
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRotationAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rotation-align}.
+ *
+ */
+public class StyleRotationAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rotation-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRotationAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rotation-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:rotation-align}.
+	 */
+	public enum Value {
+		BOTTOM("bottom"), CENTER("center"), NONE("none"), TOP("top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rotation-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rotation-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRotationAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRotationAngleAttribute.java
new file mode 100644
index 0000000..5b9055e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRotationAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:rotation-angle}.
+ *
+ */
+public class StyleRotationAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:rotation-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRotationAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:rotation-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:rotation-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:rotation-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRowHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRowHeightAttribute.java
new file mode 100644
index 0000000..15fde36
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRowHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:row-height}.
+ *
+ */
+public class StyleRowHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "row-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:row-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRowHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:row-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:row-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:row-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRubyAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRubyAlignAttribute.java
new file mode 100644
index 0000000..ed939c9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRubyAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:ruby-align}.
+ *
+ */
+public class StyleRubyAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:ruby-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRubyAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:ruby-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:ruby-align}.
+	 */
+	public enum Value {
+		CENTER("center"), DISTRIBUTE_LETTER("distribute-letter"), DISTRIBUTE_SPACE("distribute-space"), LEFT("left"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:ruby-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:ruby-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRubyPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRubyPositionAttribute.java
new file mode 100644
index 0000000..15d6d79
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRubyPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:ruby-position}.
+ *
+ */
+public class StyleRubyPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:ruby-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRubyPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:ruby-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:ruby-position}.
+	 */
+	public enum Value {
+		ABOVE("above"), BELOW("below") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:ruby-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:ruby-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRunThroughAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRunThroughAttribute.java
new file mode 100644
index 0000000..86c78ba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleRunThroughAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:run-through}.
+ *
+ */
+public class StyleRunThroughAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "run-through");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:run-through}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleRunThroughAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:run-through}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:run-through}.
+	 */
+	public enum Value {
+		BACKGROUND("background"), FOREGROUND("foreground") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:run-through}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:run-through} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScaleToAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScaleToAttribute.java
new file mode 100644
index 0000000..6fa979c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScaleToAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:scale-to}.
+ *
+ */
+public class StyleScaleToAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "scale-to");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:scale-to}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleScaleToAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:scale-to}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:scale-to}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:scale-to} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScaleToPagesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScaleToPagesAttribute.java
new file mode 100644
index 0000000..a90ead7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScaleToPagesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:scale-to-pages}.
+ *
+ */
+public class StyleScaleToPagesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "scale-to-pages");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:scale-to-pages}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleScaleToPagesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:scale-to-pages}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:scale-to-pages}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:scale-to-pages} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptAsianAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptAsianAttribute.java
new file mode 100644
index 0000000..c9ff736
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptAsianAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:script-asian}.
+ *
+ */
+public class StyleScriptAsianAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "script-asian");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:script-asian}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleScriptAsianAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:script-asian}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:script-asian}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:script-asian} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptComplexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptComplexAttribute.java
new file mode 100644
index 0000000..d9b194f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptComplexAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:script-complex}.
+ *
+ */
+public class StyleScriptComplexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "script-complex");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:script-complex}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleScriptComplexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:script-complex}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:script-complex}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:script-complex} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptTypeAttribute.java
new file mode 100644
index 0000000..6835cc9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleScriptTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:script-type}.
+ *
+ */
+public class StyleScriptTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "script-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:script-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleScriptTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:script-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:script-type}.
+	 */
+	public enum Value {
+		ASIAN("asian"), COMPLEX("complex"), IGNORE("ignore"), LATIN("latin") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:script-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:script-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleShadowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleShadowAttribute.java
new file mode 100644
index 0000000..9d37706
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleShadowAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:shadow}.
+ *
+ */
+public class StyleShadowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "shadow");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:shadow}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleShadowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:shadow}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:shadow}.
+	 */
+	public enum Value {
+		NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:shadow}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:shadow} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleShrinkToFitAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleShrinkToFitAttribute.java
new file mode 100644
index 0000000..98ee14d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleShrinkToFitAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:shrink-to-fit}.
+ *
+ */
+public class StyleShrinkToFitAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "shrink-to-fit");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:shrink-to-fit}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleShrinkToFitAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:shrink-to-fit}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:shrink-to-fit}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:shrink-to-fit} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleSnapToLayoutGridAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleSnapToLayoutGridAttribute.java
new file mode 100644
index 0000000..012defc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleSnapToLayoutGridAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:snap-to-layout-grid}.
+ *
+ */
+public class StyleSnapToLayoutGridAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "snap-to-layout-grid");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:snap-to-layout-grid}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleSnapToLayoutGridAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:snap-to-layout-grid}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:snap-to-layout-grid}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:snap-to-layout-grid} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleStyleAttribute.java
new file mode 100644
index 0000000..a872fac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleStyleAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:style}.
+ *
+ */
+public class StyleStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "style");
+	public static final String DEFAULT_VALUE = "solid";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:style}.
+	 */
+	public enum Value {
+		DASHED("dashed"), DOT_DASHED("dot-dashed"), DOTTED("dotted"), NONE("none"), SOLID("solid") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleStyleNameAttribute.java
new file mode 100644
index 0000000..d8858cb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:style-name}.
+ *
+ */
+public class StyleStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTabStopDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTabStopDistanceAttribute.java
new file mode 100644
index 0000000..26c2cec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTabStopDistanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:tab-stop-distance}.
+ *
+ */
+public class StyleTabStopDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "tab-stop-distance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:tab-stop-distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTabStopDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:tab-stop-distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:tab-stop-distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:tab-stop-distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTableCenteringAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTableCenteringAttribute.java
new file mode 100644
index 0000000..50138f1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTableCenteringAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:table-centering}.
+ *
+ */
+public class StyleTableCenteringAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "table-centering");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:table-centering}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTableCenteringAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:table-centering}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:table-centering}.
+	 */
+	public enum Value {
+		BOTH("both"), HORIZONTAL("horizontal"), NONE("none"), VERTICAL("vertical") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:table-centering}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:table-centering} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextAlignSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextAlignSourceAttribute.java
new file mode 100644
index 0000000..ec2cca1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextAlignSourceAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-align-source}.
+ *
+ */
+public class StyleTextAlignSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-align-source");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-align-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextAlignSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-align-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-align-source}.
+	 */
+	public enum Value {
+		FIX("fix"), VALUE_TYPE("value-type") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-align-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-align-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextAutospaceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextAutospaceAttribute.java
new file mode 100644
index 0000000..1492e01
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextAutospaceAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-autospace}.
+ *
+ */
+public class StyleTextAutospaceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-autospace");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-autospace}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextAutospaceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-autospace}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-autospace}.
+	 */
+	public enum Value {
+		IDEOGRAPH_ALPHA("ideograph-alpha"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-autospace}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-autospace} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextBlinkingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextBlinkingAttribute.java
new file mode 100644
index 0000000..437eba6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextBlinkingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-blinking}.
+ *
+ */
+public class StyleTextBlinkingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-blinking");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-blinking}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextBlinkingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-blinking}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-blinking}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-blinking} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineAttribute.java
new file mode 100644
index 0000000..5ab79d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-combine}.
+ *
+ */
+public class StyleTextCombineAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-combine}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextCombineAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-combine}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-combine}.
+	 */
+	public enum Value {
+		LETTERS("letters"), LINES("lines"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-combine}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-combine} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineEndCharAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineEndCharAttribute.java
new file mode 100644
index 0000000..5bbfafe
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineEndCharAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-combine-end-char}.
+ *
+ */
+public class StyleTextCombineEndCharAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine-end-char");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-combine-end-char}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextCombineEndCharAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-combine-end-char}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-combine-end-char}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-combine-end-char} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineStartCharAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineStartCharAttribute.java
new file mode 100644
index 0000000..5ee68ac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextCombineStartCharAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-combine-start-char}.
+ *
+ */
+public class StyleTextCombineStartCharAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine-start-char");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-combine-start-char}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextCombineStartCharAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-combine-start-char}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-combine-start-char}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-combine-start-char} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextEmphasizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextEmphasizeAttribute.java
new file mode 100644
index 0000000..3561378
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextEmphasizeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-emphasize}.
+ *
+ */
+public class StyleTextEmphasizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-emphasize");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-emphasize}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextEmphasizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-emphasize}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-emphasize}.
+	 */
+	public enum Value {
+		ABOVE("above"), ACCENT("accent"), BELOW("below"), CIRCLE("circle"), DISC("disc"), DOT("dot"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-emphasize}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-emphasize} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughColorAttribute.java
new file mode 100644
index 0000000..94b6d1a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughColorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-color}.
+ *
+ */
+public class StyleTextLineThroughColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-line-through-color}.
+	 */
+	public enum Value {
+		FONT_COLOR("font-color") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughModeAttribute.java
new file mode 100644
index 0000000..8d28800
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-mode}.
+ *
+ */
+public class StyleTextLineThroughModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-line-through-mode}.
+	 */
+	public enum Value {
+		CONTINUOUS("continuous"), SKIP_WHITE_SPACE("skip-white-space") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughStyleAttribute.java
new file mode 100644
index 0000000..a1eb8b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-style}.
+ *
+ */
+public class StyleTextLineThroughStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-line-through-style}.
+	 */
+	public enum Value {
+		DASH("dash"), DOT_DASH("dot-dash"), DOT_DOT_DASH("dot-dot-dash"), DOTTED("dotted"), LONG_DASH("long-dash"), NONE("none"), SOLID("solid"), WAVE("wave") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTextAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTextAttribute.java
new file mode 100644
index 0000000..c9dbeca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTextAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-text}.
+ *
+ */
+public class StyleTextLineThroughTextAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-text");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-text}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughTextAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-text}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-text}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-text} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTextStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTextStyleAttribute.java
new file mode 100644
index 0000000..eacac77
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTextStyleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-text-style}.
+ *
+ */
+public class StyleTextLineThroughTextStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-text-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-text-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughTextStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-text-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-text-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-text-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTypeAttribute.java
new file mode 100644
index 0000000..8fe602d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-type}.
+ *
+ */
+public class StyleTextLineThroughTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-line-through-type}.
+	 */
+	public enum Value {
+		DOUBLE("double"), NONE("none"), SINGLE("single") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughWidthAttribute.java
new file mode 100644
index 0000000..52b7896
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextLineThroughWidthAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-line-through-width}.
+ *
+ */
+public class StyleTextLineThroughWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-line-through-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextLineThroughWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-line-through-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-line-through-width}.
+	 */
+	public enum Value {
+		AUTO("auto"), BOLD("bold"), MEDIUM("medium"), NORMAL("normal"), THICK("thick"), THIN("thin") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-line-through-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-line-through-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOutlineAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOutlineAttribute.java
new file mode 100644
index 0000000..9cd83c5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOutlineAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-outline}.
+ *
+ */
+public class StyleTextOutlineAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-outline");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-outline}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextOutlineAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-outline}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-outline}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-outline} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineColorAttribute.java
new file mode 100644
index 0000000..7ca27a4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineColorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-overline-color}.
+ *
+ */
+public class StyleTextOverlineColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-overline-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextOverlineColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-overline-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-overline-color}.
+	 */
+	public enum Value {
+		FONT_COLOR("font-color") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-overline-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-overline-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineModeAttribute.java
new file mode 100644
index 0000000..2d22bd6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-overline-mode}.
+ *
+ */
+public class StyleTextOverlineModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-overline-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextOverlineModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-overline-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-overline-mode}.
+	 */
+	public enum Value {
+		CONTINUOUS("continuous"), SKIP_WHITE_SPACE("skip-white-space") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-overline-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-overline-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineStyleAttribute.java
new file mode 100644
index 0000000..7ca07b5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-overline-style}.
+ *
+ */
+public class StyleTextOverlineStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-overline-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextOverlineStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-overline-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-overline-style}.
+	 */
+	public enum Value {
+		DASH("dash"), DOT_DASH("dot-dash"), DOT_DOT_DASH("dot-dot-dash"), DOTTED("dotted"), LONG_DASH("long-dash"), NONE("none"), SOLID("solid"), WAVE("wave") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-overline-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-overline-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineTypeAttribute.java
new file mode 100644
index 0000000..e9d0364
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-overline-type}.
+ *
+ */
+public class StyleTextOverlineTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-overline-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextOverlineTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-overline-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-overline-type}.
+	 */
+	public enum Value {
+		DOUBLE("double"), NONE("none"), SINGLE("single") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-overline-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-overline-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineWidthAttribute.java
new file mode 100644
index 0000000..5f4ac39
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextOverlineWidthAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-overline-width}.
+ *
+ */
+public class StyleTextOverlineWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-overline-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextOverlineWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-overline-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-overline-width}.
+	 */
+	public enum Value {
+		AUTO("auto"), BOLD("bold"), MEDIUM("medium"), NORMAL("normal"), THICK("thick"), THIN("thin") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-overline-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-overline-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextPositionAttribute.java
new file mode 100644
index 0000000..5aa816b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-position}.
+ *
+ */
+public class StyleTextPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-position}.
+	 */
+	public enum Value {
+		SUB("sub"), SUPER("super") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextRotationAngleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextRotationAngleAttribute.java
new file mode 100644
index 0000000..bdc2846
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextRotationAngleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-rotation-angle}.
+ *
+ */
+public class StyleTextRotationAngleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-rotation-angle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-rotation-angle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextRotationAngleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-rotation-angle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-rotation-angle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-rotation-angle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextRotationScaleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextRotationScaleAttribute.java
new file mode 100644
index 0000000..dfbffc1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextRotationScaleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-rotation-scale}.
+ *
+ */
+public class StyleTextRotationScaleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-rotation-scale");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-rotation-scale}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextRotationScaleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-rotation-scale}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-rotation-scale}.
+	 */
+	public enum Value {
+		FIXED("fixed"), LINE_HEIGHT("line-height") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-rotation-scale}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-rotation-scale} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextScaleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextScaleAttribute.java
new file mode 100644
index 0000000..0d7ea5e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextScaleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-scale}.
+ *
+ */
+public class StyleTextScaleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-scale");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-scale}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextScaleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-scale}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-scale}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-scale} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineColorAttribute.java
new file mode 100644
index 0000000..1f76529
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineColorAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-underline-color}.
+ *
+ */
+public class StyleTextUnderlineColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-underline-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextUnderlineColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-underline-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-underline-color}.
+	 */
+	public enum Value {
+		FONT_COLOR("font-color") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-underline-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-underline-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineModeAttribute.java
new file mode 100644
index 0000000..23c98b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-underline-mode}.
+ *
+ */
+public class StyleTextUnderlineModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-underline-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextUnderlineModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-underline-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-underline-mode}.
+	 */
+	public enum Value {
+		CONTINUOUS("continuous"), SKIP_WHITE_SPACE("skip-white-space") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-underline-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-underline-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineStyleAttribute.java
new file mode 100644
index 0000000..75c55d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-underline-style}.
+ *
+ */
+public class StyleTextUnderlineStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-underline-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextUnderlineStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-underline-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-underline-style}.
+	 */
+	public enum Value {
+		DASH("dash"), DOT_DASH("dot-dash"), DOT_DOT_DASH("dot-dot-dash"), DOTTED("dotted"), LONG_DASH("long-dash"), NONE("none"), SOLID("solid"), WAVE("wave") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-underline-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-underline-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineTypeAttribute.java
new file mode 100644
index 0000000..5fdb65e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-underline-type}.
+ *
+ */
+public class StyleTextUnderlineTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-underline-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextUnderlineTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-underline-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-underline-type}.
+	 */
+	public enum Value {
+		DOUBLE("double"), NONE("none"), SINGLE("single") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-underline-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-underline-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineWidthAttribute.java
new file mode 100644
index 0000000..f16907f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTextUnderlineWidthAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:text-underline-width}.
+ *
+ */
+public class StyleTextUnderlineWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:text-underline-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextUnderlineWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:text-underline-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:text-underline-width}.
+	 */
+	public enum Value {
+		AUTO("auto"), BOLD("bold"), MEDIUM("medium"), NORMAL("normal"), THICK("thick"), THIN("thin") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:text-underline-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:text-underline-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTypeAttribute.java
new file mode 100644
index 0000000..27588d4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:type}.
+ *
+ */
+public class StyleTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "type");
+	public static final String DEFAULT_VALUE = "left";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:type}.
+	 */
+	public enum Value {
+		CENTER("center"), CHAR("char"), LEFT("left"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseOptimalColumnWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseOptimalColumnWidthAttribute.java
new file mode 100644
index 0000000..f159fb3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseOptimalColumnWidthAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:use-optimal-column-width}.
+ *
+ */
+public class StyleUseOptimalColumnWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "use-optimal-column-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:use-optimal-column-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleUseOptimalColumnWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:use-optimal-column-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:use-optimal-column-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:use-optimal-column-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseOptimalRowHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseOptimalRowHeightAttribute.java
new file mode 100644
index 0000000..418cb7e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseOptimalRowHeightAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:use-optimal-row-height}.
+ *
+ */
+public class StyleUseOptimalRowHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "use-optimal-row-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:use-optimal-row-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleUseOptimalRowHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:use-optimal-row-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:use-optimal-row-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:use-optimal-row-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseWindowFontColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseWindowFontColorAttribute.java
new file mode 100644
index 0000000..8e52bb4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleUseWindowFontColorAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:use-window-font-color}.
+ *
+ */
+public class StyleUseWindowFontColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "use-window-font-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:use-window-font-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleUseWindowFontColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:use-window-font-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:use-window-font-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:use-window-font-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalAlignAttribute.java
new file mode 100644
index 0000000..19bcd00
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalAlignAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:vertical-align}.
+ *
+ */
+public class StyleVerticalAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-align");
+	public static final String DEFAULT_VALUE = "top";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:vertical-align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleVerticalAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:vertical-align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:vertical-align}.
+	 */
+	public enum Value {
+		AUTO("auto"), AUTOMATIC("automatic"), BASELINE("baseline"), BOTTOM("bottom"), MIDDLE("middle"), TOP("top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:vertical-align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:vertical-align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalPosAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalPosAttribute.java
new file mode 100644
index 0000000..6298d68
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalPosAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:vertical-pos}.
+ *
+ */
+public class StyleVerticalPosAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-pos");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:vertical-pos}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleVerticalPosAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:vertical-pos}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:vertical-pos}.
+	 */
+	public enum Value {
+		BELOW("below"), BOTTOM("bottom"), FROM_TOP("from-top"), MIDDLE("middle"), TOP("top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:vertical-pos}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:vertical-pos} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalRelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalRelAttribute.java
new file mode 100644
index 0000000..a231d0d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVerticalRelAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:vertical-rel}.
+ *
+ */
+public class StyleVerticalRelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-rel");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:vertical-rel}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleVerticalRelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:vertical-rel}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:vertical-rel}.
+	 */
+	public enum Value {
+		BASELINE("baseline"), CHAR("char"), FRAME("frame"), FRAME_CONTENT("frame-content"), LINE("line"), PAGE("page"), PAGE_CONTENT("page-content"), PARAGRAPH("paragraph"), PARAGRAPH_CONTENT("paragraph-content"), TEXT("text") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:vertical-rel}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:vertical-rel} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVolatileAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVolatileAttribute.java
new file mode 100644
index 0000000..bf5f50b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleVolatileAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:volatile}.
+ *
+ */
+public class StyleVolatileAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "volatile");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:volatile}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleVolatileAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:volatile}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:volatile}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:volatile} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWidthAttribute.java
new file mode 100644
index 0000000..3f88eee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:width}.
+ *
+ */
+public class StyleWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapAttribute.java
new file mode 100644
index 0000000..0146af8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:wrap}.
+ *
+ */
+public class StyleWrapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "wrap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:wrap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWrapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:wrap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:wrap}.
+	 */
+	public enum Value {
+		BIGGEST("biggest"), DYNAMIC("dynamic"), LEFT("left"), NONE("none"), PARALLEL("parallel"), RIGHT("right"), RUN_THROUGH("run-through") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:wrap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:wrap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapContourAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapContourAttribute.java
new file mode 100644
index 0000000..d420ac5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapContourAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:wrap-contour}.
+ *
+ */
+public class StyleWrapContourAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-contour");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:wrap-contour}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWrapContourAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:wrap-contour}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:wrap-contour}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:wrap-contour} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapContourModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapContourModeAttribute.java
new file mode 100644
index 0000000..4581118
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapContourModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:wrap-contour-mode}.
+ *
+ */
+public class StyleWrapContourModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-contour-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:wrap-contour-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWrapContourModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:wrap-contour-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:wrap-contour-mode}.
+	 */
+	public enum Value {
+		FULL("full"), OUTSIDE("outside") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:wrap-contour-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:wrap-contour-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapDynamicThresholdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapDynamicThresholdAttribute.java
new file mode 100644
index 0000000..3cce318
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWrapDynamicThresholdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:wrap-dynamic-threshold}.
+ *
+ */
+public class StyleWrapDynamicThresholdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-dynamic-threshold");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:wrap-dynamic-threshold}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWrapDynamicThresholdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:wrap-dynamic-threshold}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:wrap-dynamic-threshold}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:wrap-dynamic-threshold} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWritingModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWritingModeAttribute.java
new file mode 100644
index 0000000..2f892f3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWritingModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:writing-mode}.
+ *
+ */
+public class StyleWritingModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:writing-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWritingModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:writing-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute style:writing-mode}.
+	 */
+	public enum Value {
+		LR("lr"), LR_TB("lr-tb"), PAGE("page"), RL("rl"), RL_TB("rl-tb"), TB("tb"), TB_LR("tb-lr"), TB_RL("tb-rl") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:writing-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:writing-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWritingModeAutomaticAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWritingModeAutomaticAttribute.java
new file mode 100644
index 0000000..9231bf8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/style/StyleWritingModeAutomaticAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.style;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute style:writing-mode-automatic}.
+ *
+ */
+public class StyleWritingModeAutomaticAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode-automatic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute style:writing-mode-automatic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public StyleWritingModeAutomaticAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute style:writing-mode-automatic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute style:writing-mode-automatic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute style:writing-mode-automatic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAccentHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAccentHeightAttribute.java
new file mode 100644
index 0000000..cb8c216
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAccentHeightAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:accent-height}.
+ *
+ */
+public class SvgAccentHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "accent-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:accent-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgAccentHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:accent-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:accent-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:accent-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAlphabeticAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAlphabeticAttribute.java
new file mode 100644
index 0000000..4ad7f09
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAlphabeticAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:alphabetic}.
+ *
+ */
+public class SvgAlphabeticAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "alphabetic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:alphabetic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgAlphabeticAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:alphabetic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:alphabetic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:alphabetic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAscentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAscentAttribute.java
new file mode 100644
index 0000000..6a42fcb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgAscentAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:ascent}.
+ *
+ */
+public class SvgAscentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "ascent");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:ascent}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgAscentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:ascent}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:ascent}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:ascent} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgBboxAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgBboxAttribute.java
new file mode 100644
index 0000000..13b676a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgBboxAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:bbox}.
+ *
+ */
+public class SvgBboxAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "bbox");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:bbox}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgBboxAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:bbox}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:bbox}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:bbox} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCapHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCapHeightAttribute.java
new file mode 100644
index 0000000..8501fa3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCapHeightAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:cap-height}.
+ *
+ */
+public class SvgCapHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "cap-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:cap-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgCapHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:cap-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:cap-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:cap-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCxAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCxAttribute.java
new file mode 100644
index 0000000..f5929d1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCxAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:cx}.
+ *
+ */
+public class SvgCxAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "cx");
+	public static final String DEFAULT_VALUE = "50%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:cx}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgCxAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:cx}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:cx}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:cx} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCyAttribute.java
new file mode 100644
index 0000000..68e18b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgCyAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:cy}.
+ *
+ */
+public class SvgCyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "cy");
+	public static final String DEFAULT_VALUE = "50%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:cy}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgCyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:cy}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:cy}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:cy} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgDAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgDAttribute.java
new file mode 100644
index 0000000..9e3aad1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgDAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:d}.
+ *
+ */
+public class SvgDAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "d");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:d}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgDAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:d}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:d}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:d} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgDescentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgDescentAttribute.java
new file mode 100644
index 0000000..59cc7a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgDescentAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:descent}.
+ *
+ */
+public class SvgDescentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "descent");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:descent}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgDescentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:descent}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:descent}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:descent} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFillRuleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFillRuleAttribute.java
new file mode 100644
index 0000000..a21bea8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFillRuleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:fill-rule}.
+ *
+ */
+public class SvgFillRuleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "fill-rule");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:fill-rule}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFillRuleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:fill-rule}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:fill-rule}.
+	 */
+	public enum Value {
+		EVENODD("evenodd"), NONZERO("nonzero") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:fill-rule}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:fill-rule} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontFamilyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontFamilyAttribute.java
new file mode 100644
index 0000000..5198e7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontFamilyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:font-family}.
+ *
+ */
+public class SvgFontFamilyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-family");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:font-family}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontFamilyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:font-family}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:font-family}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:font-family} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontSizeAttribute.java
new file mode 100644
index 0000000..c4a4dad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontSizeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:font-size}.
+ *
+ */
+public class SvgFontSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:font-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:font-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:font-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:font-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontStretchAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontStretchAttribute.java
new file mode 100644
index 0000000..0a76af0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontStretchAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:font-stretch}.
+ *
+ */
+public class SvgFontStretchAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-stretch");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:font-stretch}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontStretchAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:font-stretch}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:font-stretch}.
+	 */
+	public enum Value {
+		CONDENSED("condensed"), EXPANDED("expanded"), EXTRA_CONDENSED("extra-condensed"), EXTRA_EXPANDED("extra-expanded"), NORMAL("normal"), SEMI_CONDENSED("semi-condensed"), SEMI_EXPANDED("semi-expanded"), ULTRA_CONDENSED("ultra-condensed"), ULTRA_EXPANDED("ultra-expanded") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:font-stretch}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:font-stretch} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontStyleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontStyleAttribute.java
new file mode 100644
index 0000000..0eeae4a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontStyleAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:font-style}.
+ *
+ */
+public class SvgFontStyleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-style");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:font-style}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontStyleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:font-style}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:font-style}.
+	 */
+	public enum Value {
+		ITALIC("italic"), NORMAL("normal"), OBLIQUE("oblique") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:font-style}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:font-style} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontVariantAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontVariantAttribute.java
new file mode 100644
index 0000000..1edd3a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontVariantAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:font-variant}.
+ *
+ */
+public class SvgFontVariantAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-variant");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:font-variant}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontVariantAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:font-variant}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:font-variant}.
+	 */
+	public enum Value {
+		NORMAL("normal"), SMALL_CAPS("small-caps") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:font-variant}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:font-variant} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontWeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontWeightAttribute.java
new file mode 100644
index 0000000..88de32f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFontWeightAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:font-weight}.
+ *
+ */
+public class SvgFontWeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-weight");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:font-weight}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontWeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:font-weight}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:font-weight}.
+	 */
+	public enum Value {
+		_100("100"), _200("200"), _300("300"), _400("400"), _500("500"), _600("600"), _700("700"), _800("800"), _900("900"), BOLD("bold"), NORMAL("normal") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:font-weight}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:font-weight} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFxAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFxAttribute.java
new file mode 100644
index 0000000..8ecc25d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFxAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:fx}.
+ *
+ */
+public class SvgFxAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "fx");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:fx}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFxAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:fx}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:fx}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:fx} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFyAttribute.java
new file mode 100644
index 0000000..9ccf816
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgFyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:fy}.
+ *
+ */
+public class SvgFyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "fy");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:fy}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgFyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:fy}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:fy}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:fy} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgGradientTransformAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgGradientTransformAttribute.java
new file mode 100644
index 0000000..81926ff
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgGradientTransformAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:gradientTransform}.
+ *
+ */
+public class SvgGradientTransformAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "gradientTransform");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:gradientTransform}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgGradientTransformAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:gradientTransform}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:gradientTransform}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:gradientTransform} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgGradientUnitsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgGradientUnitsAttribute.java
new file mode 100644
index 0000000..69cf8a8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgGradientUnitsAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:gradientUnits}.
+ *
+ */
+public class SvgGradientUnitsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "gradientUnits");
+	public static final String DEFAULT_VALUE = "objectBoundingBox";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:gradientUnits}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgGradientUnitsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:gradientUnits}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:gradientUnits}.
+	 */
+	public enum Value {
+		OBJECTBOUNDINGBOX("objectBoundingBox") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:gradientUnits}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:gradientUnits} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgHangingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgHangingAttribute.java
new file mode 100644
index 0000000..7d20d2c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgHangingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:hanging}.
+ *
+ */
+public class SvgHangingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "hanging");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:hanging}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgHangingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:hanging}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:hanging}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:hanging} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgHeightAttribute.java
new file mode 100644
index 0000000..56d92c1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgHeightAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:height}.
+ *
+ */
+public class SvgHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgIdeographicAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgIdeographicAttribute.java
new file mode 100644
index 0000000..2b8ec93
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgIdeographicAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:ideographic}.
+ *
+ */
+public class SvgIdeographicAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "ideographic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:ideographic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgIdeographicAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:ideographic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:ideographic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:ideographic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgMathematicalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgMathematicalAttribute.java
new file mode 100644
index 0000000..1bb9d07
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgMathematicalAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:mathematical}.
+ *
+ */
+public class SvgMathematicalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "mathematical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:mathematical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgMathematicalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:mathematical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:mathematical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:mathematical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgNameAttribute.java
new file mode 100644
index 0000000..55fabd7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:name}.
+ *
+ */
+public class SvgNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOffsetAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOffsetAttribute.java
new file mode 100644
index 0000000..e57941d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOffsetAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:offset}.
+ *
+ */
+public class SvgOffsetAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "offset");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:offset}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgOffsetAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:offset}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:offset}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:offset} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOriginAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOriginAttribute.java
new file mode 100644
index 0000000..00e0202
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOriginAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:origin}.
+ *
+ */
+public class SvgOriginAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "origin");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:origin}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgOriginAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:origin}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:origin}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:origin} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOverlinePositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOverlinePositionAttribute.java
new file mode 100644
index 0000000..bbf06b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOverlinePositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:overline-position}.
+ *
+ */
+public class SvgOverlinePositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "overline-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:overline-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgOverlinePositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:overline-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:overline-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:overline-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOverlineThicknessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOverlineThicknessAttribute.java
new file mode 100644
index 0000000..47afd17
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgOverlineThicknessAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:overline-thickness}.
+ *
+ */
+public class SvgOverlineThicknessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "overline-thickness");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:overline-thickness}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgOverlineThicknessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:overline-thickness}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:overline-thickness}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:overline-thickness} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgPanose1Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgPanose1Attribute.java
new file mode 100644
index 0000000..1fd15ea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgPanose1Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:panose-1}.
+ *
+ */
+public class SvgPanose1Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "panose-1");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:panose-1}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgPanose1Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:panose-1}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:panose-1}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:panose-1} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgPathAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgPathAttribute.java
new file mode 100644
index 0000000..00cb3a7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgPathAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:path}.
+ *
+ */
+public class SvgPathAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "path");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:path}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgPathAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:path}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:path}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:path} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRAttribute.java
new file mode 100644
index 0000000..1c7f442
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:r}.
+ *
+ */
+public class SvgRAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "r");
+	public static final String DEFAULT_VALUE = "50%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:r}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgRAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:r}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:r}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:r} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRxAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRxAttribute.java
new file mode 100644
index 0000000..f91f32e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRxAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:rx}.
+ *
+ */
+public class SvgRxAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "rx");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:rx}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgRxAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:rx}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:rx}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:rx} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRyAttribute.java
new file mode 100644
index 0000000..1b32739
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgRyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:ry}.
+ *
+ */
+public class SvgRyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "ry");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:ry}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgRyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:ry}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:ry}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:ry} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgSlopeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgSlopeAttribute.java
new file mode 100644
index 0000000..ffe7fe6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgSlopeAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:slope}.
+ *
+ */
+public class SvgSlopeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "slope");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:slope}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgSlopeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:slope}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:slope}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:slope} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgSpreadMethodAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgSpreadMethodAttribute.java
new file mode 100644
index 0000000..496ce4e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgSpreadMethodAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:spreadMethod}.
+ *
+ */
+public class SvgSpreadMethodAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "spreadMethod");
+	public static final String DEFAULT_VALUE = "pad";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:spreadMethod}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgSpreadMethodAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:spreadMethod}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:spreadMethod}.
+	 */
+	public enum Value {
+		PAD("pad"), REFLECT("reflect"), REPEAT("repeat") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:spreadMethod}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:spreadMethod} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStemhAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStemhAttribute.java
new file mode 100644
index 0000000..c69a713
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStemhAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stemh}.
+ *
+ */
+public class SvgStemhAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stemh");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stemh}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStemhAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stemh}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stemh}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stemh} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStemvAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStemvAttribute.java
new file mode 100644
index 0000000..9c7404b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStemvAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stemv}.
+ *
+ */
+public class SvgStemvAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stemv");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stemv}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStemvAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stemv}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stemv}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stemv} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStopColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStopColorAttribute.java
new file mode 100644
index 0000000..1378ff0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStopColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stop-color}.
+ *
+ */
+public class SvgStopColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stop-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stop-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStopColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stop-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stop-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stop-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStopOpacityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStopOpacityAttribute.java
new file mode 100644
index 0000000..899b8f7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStopOpacityAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stop-opacity}.
+ *
+ */
+public class SvgStopOpacityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stop-opacity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stop-opacity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStopOpacityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stop-opacity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stop-opacity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stop-opacity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrikethroughPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrikethroughPositionAttribute.java
new file mode 100644
index 0000000..7d1d74d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrikethroughPositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:strikethrough-position}.
+ *
+ */
+public class SvgStrikethroughPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "strikethrough-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:strikethrough-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStrikethroughPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:strikethrough-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:strikethrough-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:strikethrough-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrikethroughThicknessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrikethroughThicknessAttribute.java
new file mode 100644
index 0000000..dbe7de4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrikethroughThicknessAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:strikethrough-thickness}.
+ *
+ */
+public class SvgStrikethroughThicknessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "strikethrough-thickness");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:strikethrough-thickness}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStrikethroughThicknessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:strikethrough-thickness}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:strikethrough-thickness}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:strikethrough-thickness} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStringAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStringAttribute.java
new file mode 100644
index 0000000..7b8204b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStringAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:string}.
+ *
+ */
+public class SvgStringAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "string");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:string}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStringAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:string}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:string}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:string} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeColorAttribute.java
new file mode 100644
index 0000000..81d2a68
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stroke-color}.
+ *
+ */
+public class SvgStrokeColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stroke-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stroke-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStrokeColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stroke-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stroke-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stroke-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeLinecapAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeLinecapAttribute.java
new file mode 100644
index 0000000..d0c2e5e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeLinecapAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stroke-linecap}.
+ *
+ */
+public class SvgStrokeLinecapAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stroke-linecap");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stroke-linecap}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStrokeLinecapAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stroke-linecap}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:stroke-linecap}.
+	 */
+	public enum Value {
+		BUTT("butt"), ROUND("round"), SQUARE("square") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stroke-linecap}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stroke-linecap} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeOpacityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeOpacityAttribute.java
new file mode 100644
index 0000000..f8c263e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeOpacityAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stroke-opacity}.
+ *
+ */
+public class SvgStrokeOpacityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stroke-opacity");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stroke-opacity}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStrokeOpacityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stroke-opacity}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stroke-opacity}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stroke-opacity} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeWidthAttribute.java
new file mode 100644
index 0000000..ebc1dc2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgStrokeWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:stroke-width}.
+ *
+ */
+public class SvgStrokeWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stroke-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:stroke-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgStrokeWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:stroke-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:stroke-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:stroke-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgTypeAttribute.java
new file mode 100644
index 0000000..98321b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:type}.
+ *
+ */
+public class SvgTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute svg:type}.
+	 */
+	public enum Value {
+		ROTATE("rotate"), SCALE("scale"), SKEWX("skewX"), SKEWY("skewY"), TRANSLATE("translate") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnderlinePositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnderlinePositionAttribute.java
new file mode 100644
index 0000000..62459cb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnderlinePositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:underline-position}.
+ *
+ */
+public class SvgUnderlinePositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "underline-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:underline-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgUnderlinePositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:underline-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:underline-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:underline-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnderlineThicknessAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnderlineThicknessAttribute.java
new file mode 100644
index 0000000..a147eaf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnderlineThicknessAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:underline-thickness}.
+ *
+ */
+public class SvgUnderlineThicknessAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "underline-thickness");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:underline-thickness}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgUnderlineThicknessAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:underline-thickness}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:underline-thickness}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:underline-thickness} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnicodeRangeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnicodeRangeAttribute.java
new file mode 100644
index 0000000..8941f8d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnicodeRangeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:unicode-range}.
+ *
+ */
+public class SvgUnicodeRangeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "unicode-range");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:unicode-range}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgUnicodeRangeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:unicode-range}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:unicode-range}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:unicode-range} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnitsPerEmAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnitsPerEmAttribute.java
new file mode 100644
index 0000000..3d30ab8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgUnitsPerEmAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:units-per-em}.
+ *
+ */
+public class SvgUnitsPerEmAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "units-per-em");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:units-per-em}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgUnitsPerEmAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:units-per-em}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:units-per-em}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:units-per-em} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVAlphabeticAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVAlphabeticAttribute.java
new file mode 100644
index 0000000..9465fd2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVAlphabeticAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:v-alphabetic}.
+ *
+ */
+public class SvgVAlphabeticAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "v-alphabetic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:v-alphabetic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgVAlphabeticAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:v-alphabetic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:v-alphabetic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:v-alphabetic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVHangingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVHangingAttribute.java
new file mode 100644
index 0000000..bc80f1e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVHangingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:v-hanging}.
+ *
+ */
+public class SvgVHangingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "v-hanging");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:v-hanging}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgVHangingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:v-hanging}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:v-hanging}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:v-hanging} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVIdeographicAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVIdeographicAttribute.java
new file mode 100644
index 0000000..2718ac8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVIdeographicAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:v-ideographic}.
+ *
+ */
+public class SvgVIdeographicAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "v-ideographic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:v-ideographic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgVIdeographicAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:v-ideographic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:v-ideographic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:v-ideographic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVMathematicalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVMathematicalAttribute.java
new file mode 100644
index 0000000..1713a47
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgVMathematicalAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:v-mathematical}.
+ *
+ */
+public class SvgVMathematicalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "v-mathematical");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:v-mathematical}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgVMathematicalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:v-mathematical}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:v-mathematical}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:v-mathematical} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgViewBoxAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgViewBoxAttribute.java
new file mode 100644
index 0000000..03f63a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgViewBoxAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:viewBox}.
+ *
+ */
+public class SvgViewBoxAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "viewBox");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:viewBox}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgViewBoxAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:viewBox}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:viewBox}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:viewBox} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgWidthAttribute.java
new file mode 100644
index 0000000..f0a0d99
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:width}.
+ *
+ */
+public class SvgWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgWidthsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgWidthsAttribute.java
new file mode 100644
index 0000000..7e49e03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgWidthsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:widths}.
+ *
+ */
+public class SvgWidthsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "widths");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:widths}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgWidthsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:widths}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:widths}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:widths} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgX1Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgX1Attribute.java
new file mode 100644
index 0000000..ad9cad4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgX1Attribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:x1}.
+ *
+ */
+public class SvgX1Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "x1");
+	public static final String DEFAULT_VALUE = "0%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:x1}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgX1Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:x1}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:x1}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:x1} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgX2Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgX2Attribute.java
new file mode 100644
index 0000000..8d9d4aa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgX2Attribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:x2}.
+ *
+ */
+public class SvgX2Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "x2");
+	public static final String DEFAULT_VALUE = "100%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:x2}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgX2Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:x2}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:x2}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:x2} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgXAttribute.java
new file mode 100644
index 0000000..00484de
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgXAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:x}.
+ *
+ */
+public class SvgXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgXHeightAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgXHeightAttribute.java
new file mode 100644
index 0000000..920a739
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgXHeightAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:x-height}.
+ *
+ */
+public class SvgXHeightAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "x-height");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:x-height}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgXHeightAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:x-height}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:x-height}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:x-height} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgY1Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgY1Attribute.java
new file mode 100644
index 0000000..e5cb9da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgY1Attribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:y1}.
+ *
+ */
+public class SvgY1Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "y1");
+	public static final String DEFAULT_VALUE = "0%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:y1}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgY1Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:y1}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:y1}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:y1} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgY2Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgY2Attribute.java
new file mode 100644
index 0000000..136b6d3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgY2Attribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:y2}.
+ *
+ */
+public class SvgY2Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "y2");
+	public static final String DEFAULT_VALUE = "100%";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:y2}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgY2Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:y2}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:y2}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:y2} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgYAttribute.java
new file mode 100644
index 0000000..b780668
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/svg/SvgYAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.svg;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute svg:y}.
+ *
+ */
+public class SvgYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute svg:y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public SvgYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute svg:y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute svg:y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute svg:y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAcceptanceStateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAcceptanceStateAttribute.java
new file mode 100644
index 0000000..608e7bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAcceptanceStateAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:acceptance-state}.
+ *
+ */
+public class TableAcceptanceStateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "acceptance-state");
+	public static final String DEFAULT_VALUE = "pending";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:acceptance-state}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableAcceptanceStateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:acceptance-state}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:acceptance-state}.
+	 */
+	public enum Value {
+		ACCEPTED("accepted"), PENDING("pending"), REJECTED("rejected") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:acceptance-state}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:acceptance-state} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAddEmptyLinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAddEmptyLinesAttribute.java
new file mode 100644
index 0000000..e7e6efe
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAddEmptyLinesAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:add-empty-lines}.
+ *
+ */
+public class TableAddEmptyLinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "add-empty-lines");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:add-empty-lines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableAddEmptyLinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:add-empty-lines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:add-empty-lines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:add-empty-lines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAlgorithmAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAlgorithmAttribute.java
new file mode 100644
index 0000000..e00a27c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAlgorithmAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:algorithm}.
+ *
+ */
+public class TableAlgorithmAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "algorithm");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:algorithm}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableAlgorithmAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:algorithm}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:algorithm}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:algorithm} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAlignAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAlignAttribute.java
new file mode 100644
index 0000000..7b8334b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAlignAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:align}.
+ *
+ */
+public class TableAlignAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "align");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:align}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableAlignAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:align}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:align}.
+	 */
+	public enum Value {
+		CENTER("center"), LEFT("left"), MARGINS("margins"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:align}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:align} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAllowEmptyCellAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAllowEmptyCellAttribute.java
new file mode 100644
index 0000000..345eac3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAllowEmptyCellAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:allow-empty-cell}.
+ *
+ */
+public class TableAllowEmptyCellAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "allow-empty-cell");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:allow-empty-cell}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableAllowEmptyCellAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:allow-empty-cell}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:allow-empty-cell}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:allow-empty-cell} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableApplicationDataAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableApplicationDataAttribute.java
new file mode 100644
index 0000000..1cc231d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableApplicationDataAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:application-data}.
+ *
+ */
+public class TableApplicationDataAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "application-data");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:application-data}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableApplicationDataAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:application-data}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:application-data}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:application-data} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAutomaticFindLabelsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAutomaticFindLabelsAttribute.java
new file mode 100644
index 0000000..161b823
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableAutomaticFindLabelsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:automatic-find-labels}.
+ *
+ */
+public class TableAutomaticFindLabelsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "automatic-find-labels");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:automatic-find-labels}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableAutomaticFindLabelsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:automatic-find-labels}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:automatic-find-labels}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:automatic-find-labels} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBaseCellAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBaseCellAddressAttribute.java
new file mode 100644
index 0000000..2d6a672
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBaseCellAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:base-cell-address}.
+ *
+ */
+public class TableBaseCellAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "base-cell-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:base-cell-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableBaseCellAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:base-cell-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:base-cell-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:base-cell-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBindStylesToContentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBindStylesToContentAttribute.java
new file mode 100644
index 0000000..7e0891e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBindStylesToContentAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:bind-styles-to-content}.
+ *
+ */
+public class TableBindStylesToContentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "bind-styles-to-content");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:bind-styles-to-content}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableBindStylesToContentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:bind-styles-to-content}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:bind-styles-to-content}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:bind-styles-to-content} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBorderColorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBorderColorAttribute.java
new file mode 100644
index 0000000..68ee27e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBorderColorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:border-color}.
+ *
+ */
+public class TableBorderColorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "border-color");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:border-color}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableBorderColorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:border-color}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:border-color}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:border-color} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBorderModelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBorderModelAttribute.java
new file mode 100644
index 0000000..4095a09
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableBorderModelAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:border-model}.
+ *
+ */
+public class TableBorderModelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "border-model");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:border-model}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableBorderModelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:border-model}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:border-model}.
+	 */
+	public enum Value {
+		COLLAPSING("collapsing"), SEPARATING("separating") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:border-model}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:border-model} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableButtonsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableButtonsAttribute.java
new file mode 100644
index 0000000..b67b49e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableButtonsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:buttons}.
+ *
+ */
+public class TableButtonsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "buttons");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:buttons}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableButtonsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:buttons}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:buttons}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:buttons} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCaseSensitiveAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCaseSensitiveAttribute.java
new file mode 100644
index 0000000..3924ae4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCaseSensitiveAttribute.java
@@ -0,0 +1,162 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableFilterConditionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSortElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSubtotalRulesElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:case-sensitive}.
+ *
+ */
+public class TableCaseSensitiveAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "case-sensitive");
+	public static final String DEFAULT_VALUE_FALSE = Value.FALSE.toString();
+	public static final String DEFAULT_VALUE_TRUE = Value.TRUE.toString();
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:case-sensitive}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCaseSensitiveAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:case-sensitive}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:case-sensitive}.
+	 */
+	public enum Value {
+		FALSE("false"), TRUE("true") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:case-sensitive}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof TableCalculationSettingsElement) {
+				defaultValue = DEFAULT_VALUE_TRUE;
+			}
+			if (parentElement instanceof TableFilterConditionElement) {
+				defaultValue = DEFAULT_VALUE_FALSE;
+			}
+			if (parentElement instanceof TableSortElement) {
+				defaultValue = DEFAULT_VALUE_FALSE;
+			}
+			if (parentElement instanceof TableSubtotalRulesElement) {
+				defaultValue = DEFAULT_VALUE_FALSE;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:case-sensitive} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellAddressAttribute.java
new file mode 100644
index 0000000..0f447eb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:cell-address}.
+ *
+ */
+public class TableCellAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:cell-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCellAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:cell-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:cell-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:cell-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellRangeAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellRangeAddressAttribute.java
new file mode 100644
index 0000000..b3613be
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellRangeAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:cell-range-address}.
+ *
+ */
+public class TableCellRangeAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-range-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:cell-range-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCellRangeAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:cell-range-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:cell-range-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:cell-range-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellRangeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellRangeAttribute.java
new file mode 100644
index 0000000..54b2632
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCellRangeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:cell-range}.
+ *
+ */
+public class TableCellRangeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-range");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:cell-range}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCellRangeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:cell-range}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:cell-range}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:cell-range} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableColumnAttribute.java
new file mode 100644
index 0000000..bab1db9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableColumnAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:column}.
+ *
+ */
+public class TableColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCommentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCommentAttribute.java
new file mode 100644
index 0000000..2efdebb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCommentAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:comment}.
+ *
+ */
+public class TableCommentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "comment");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:comment}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCommentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:comment}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:comment}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:comment} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionAttribute.java
new file mode 100644
index 0000000..4826af2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:condition}.
+ *
+ */
+public class TableConditionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "condition");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:condition}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableConditionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:condition}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:condition}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:condition} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionSourceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionSourceAttribute.java
new file mode 100644
index 0000000..74ed0b3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionSourceAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:condition-source}.
+ *
+ */
+public class TableConditionSourceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "condition-source");
+	public static final String DEFAULT_VALUE = "self";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:condition-source}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableConditionSourceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:condition-source}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:condition-source}.
+	 */
+	public enum Value {
+		CELL_RANGE("cell-range"), SELF("self") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:condition-source}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:condition-source} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionSourceRangeAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionSourceRangeAddressAttribute.java
new file mode 100644
index 0000000..33ed458
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableConditionSourceRangeAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:condition-source-range-address}.
+ *
+ */
+public class TableConditionSourceRangeAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "condition-source-range-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:condition-source-range-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableConditionSourceRangeAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:condition-source-range-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:condition-source-range-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:condition-source-range-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContainsErrorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContainsErrorAttribute.java
new file mode 100644
index 0000000..2f426b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContainsErrorAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:contains-error}.
+ *
+ */
+public class TableContainsErrorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "contains-error");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:contains-error}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableContainsErrorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:contains-error}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:contains-error}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:contains-error} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContainsHeaderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContainsHeaderAttribute.java
new file mode 100644
index 0000000..1a25bb1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContainsHeaderAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:contains-header}.
+ *
+ */
+public class TableContainsHeaderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "contains-header");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:contains-header}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableContainsHeaderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:contains-header}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:contains-header}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:contains-header} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContentValidationNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContentValidationNameAttribute.java
new file mode 100644
index 0000000..dcfe8fb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableContentValidationNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:content-validation-name}.
+ *
+ */
+public class TableContentValidationNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "content-validation-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:content-validation-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableContentValidationNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:content-validation-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:content-validation-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:content-validation-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyBackAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyBackAttribute.java
new file mode 100644
index 0000000..e41e69f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyBackAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:copy-back}.
+ *
+ */
+public class TableCopyBackAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "copy-back");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:copy-back}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCopyBackAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:copy-back}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:copy-back}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:copy-back} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyFormulasAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyFormulasAttribute.java
new file mode 100644
index 0000000..7d21045
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyFormulasAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:copy-formulas}.
+ *
+ */
+public class TableCopyFormulasAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "copy-formulas");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:copy-formulas}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCopyFormulasAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:copy-formulas}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:copy-formulas}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:copy-formulas} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyStylesAttribute.java
new file mode 100644
index 0000000..b889e05
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCopyStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:copy-styles}.
+ *
+ */
+public class TableCopyStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "copy-styles");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:copy-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCopyStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:copy-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:copy-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:copy-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCountAttribute.java
new file mode 100644
index 0000000..6edf6e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCountAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:count}.
+ *
+ */
+public class TableCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "count");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCountryAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCountryAttribute.java
new file mode 100644
index 0000000..1428e4d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableCountryAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:country}.
+ *
+ */
+public class TableCountryAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "country");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:country}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableCountryAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:country}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:country}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:country} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataCellRangeAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataCellRangeAddressAttribute.java
new file mode 100644
index 0000000..26544e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataCellRangeAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:data-cell-range-address}.
+ *
+ */
+public class TableDataCellRangeAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-cell-range-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:data-cell-range-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDataCellRangeAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:data-cell-range-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:data-cell-range-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:data-cell-range-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataFieldAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataFieldAttribute.java
new file mode 100644
index 0000000..86e21aa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataFieldAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:data-field}.
+ *
+ */
+public class TableDataFieldAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-field");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:data-field}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDataFieldAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:data-field}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:data-field}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:data-field} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataTypeAttribute.java
new file mode 100644
index 0000000..fbba33c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDataTypeAttribute.java
@@ -0,0 +1,158 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.table.TableFilterConditionElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSortByElement;
+import org.odftoolkit.odfdom.dom.element.table.TableSortGroupsElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:data-type}.
+ *
+ */
+public class TableDataTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-type");
+	public static final String DEFAULT_VALUE_TEXT = Value.TEXT.toString();
+	public static final String DEFAULT_VALUE_AUTOMATIC = Value.AUTOMATIC.toString();
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:data-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDataTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:data-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:data-type}.
+	 */
+	public enum Value {
+		AUTOMATIC("automatic"), NUMBER("number"), TEXT("text") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:data-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof TableFilterConditionElement) {
+				defaultValue = DEFAULT_VALUE_TEXT;
+			}
+			if (parentElement instanceof TableSortByElement) {
+				defaultValue = DEFAULT_VALUE_AUTOMATIC;
+			}
+			if (parentElement instanceof TableSortGroupsElement) {
+				defaultValue = DEFAULT_VALUE_AUTOMATIC;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:data-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDatabaseNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDatabaseNameAttribute.java
new file mode 100644
index 0000000..6094f40
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDatabaseNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:database-name}.
+ *
+ */
+public class TableDatabaseNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:database-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:database-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:database-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:database-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDatabaseTableNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDatabaseTableNameAttribute.java
new file mode 100644
index 0000000..b472edb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDatabaseTableNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:database-table-name}.
+ *
+ */
+public class TableDatabaseTableNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-table-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:database-table-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseTableNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:database-table-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:database-table-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:database-table-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateEndAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateEndAttribute.java
new file mode 100644
index 0000000..5b32686
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateEndAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:date-end}.
+ *
+ */
+public class TableDateEndAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "date-end");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:date-end}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDateEndAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:date-end}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:date-end}.
+	 */
+	public enum Value {
+		AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:date-end}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:date-end} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateStartAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateStartAttribute.java
new file mode 100644
index 0000000..e8a0838
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateStartAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:date-start}.
+ *
+ */
+public class TableDateStartAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "date-start");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:date-start}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDateStartAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:date-start}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:date-start}.
+	 */
+	public enum Value {
+		AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:date-start}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:date-start} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateValueAttribute.java
new file mode 100644
index 0000000..c6bc0b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDateValueAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:date-value}.
+ *
+ */
+public class TableDateValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "date-value");
+	public static final String DEFAULT_VALUE = "1899-12-30";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:date-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDateValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:date-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:date-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:date-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDefaultCellStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDefaultCellStyleNameAttribute.java
new file mode 100644
index 0000000..25f9efa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDefaultCellStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:default-cell-style-name}.
+ *
+ */
+public class TableDefaultCellStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "default-cell-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:default-cell-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDefaultCellStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:default-cell-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:default-cell-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:default-cell-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDirectionAttribute.java
new file mode 100644
index 0000000..432a3ec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDirectionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:direction}.
+ *
+ */
+public class TableDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:direction}.
+	 */
+	public enum Value {
+		FROM_ANOTHER_TABLE("from-another-table"), FROM_SAME_TABLE("from-same-table"), TO_ANOTHER_TABLE("to-another-table") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayAttribute.java
new file mode 100644
index 0000000..40ef5df
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayAttribute.java
@@ -0,0 +1,141 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.table.TableErrorMessageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableHelpMessageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:display}.
+ *
+ */
+public class TableDisplayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "display");
+	public static final String DEFAULT_VALUE_TRUE = "true";
+	public static final String DEFAULT_VALUE_FALSE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:display}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDisplayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:display}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:display}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof TableErrorMessageElement) {
+				defaultValue = DEFAULT_VALUE_FALSE;
+			}
+			if (parentElement instanceof TableHelpMessageElement) {
+				defaultValue = DEFAULT_VALUE_FALSE;
+			}
+			if (parentElement instanceof TableTableColumnGroupElement) {
+				defaultValue = DEFAULT_VALUE_TRUE;
+			}
+			if (parentElement instanceof TableTableRowGroupElement) {
+				defaultValue = DEFAULT_VALUE_TRUE;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:display} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayBorderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayBorderAttribute.java
new file mode 100644
index 0000000..ea08ce4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayBorderAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:display-border}.
+ *
+ */
+public class TableDisplayBorderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "display-border");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:display-border}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDisplayBorderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:display-border}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:display-border}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:display-border} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayDuplicatesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayDuplicatesAttribute.java
new file mode 100644
index 0000000..63f9f1b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayDuplicatesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:display-duplicates}.
+ *
+ */
+public class TableDisplayDuplicatesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "display-duplicates");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:display-duplicates}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDisplayDuplicatesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:display-duplicates}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:display-duplicates}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:display-duplicates} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayFilterButtonsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayFilterButtonsAttribute.java
new file mode 100644
index 0000000..6d51cf3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayFilterButtonsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:display-filter-buttons}.
+ *
+ */
+public class TableDisplayFilterButtonsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "display-filter-buttons");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:display-filter-buttons}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDisplayFilterButtonsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:display-filter-buttons}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:display-filter-buttons}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:display-filter-buttons} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayListAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayListAttribute.java
new file mode 100644
index 0000000..e97ab64
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayListAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:display-list}.
+ *
+ */
+public class TableDisplayListAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "display-list");
+	public static final String DEFAULT_VALUE = "unsorted";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:display-list}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDisplayListAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:display-list}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:display-list}.
+	 */
+	public enum Value {
+		NONE("none"), SORT_ASCENDING("sort-ascending"), UNSORTED("unsorted") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:display-list}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:display-list} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayMemberModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayMemberModeAttribute.java
new file mode 100644
index 0000000..9889169
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDisplayMemberModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:display-member-mode}.
+ *
+ */
+public class TableDisplayMemberModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "display-member-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:display-member-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDisplayMemberModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:display-member-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:display-member-mode}.
+	 */
+	public enum Value {
+		FROM_BOTTOM("from-bottom"), FROM_TOP("from-top") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:display-member-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:display-member-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDrillDownOnDoubleClickAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDrillDownOnDoubleClickAttribute.java
new file mode 100644
index 0000000..c254651
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableDrillDownOnDoubleClickAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:drill-down-on-double-click}.
+ *
+ */
+public class TableDrillDownOnDoubleClickAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "drill-down-on-double-click");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:drill-down-on-double-click}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableDrillDownOnDoubleClickAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:drill-down-on-double-click}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:drill-down-on-double-click}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:drill-down-on-double-click} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEmbeddedNumberBehaviorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEmbeddedNumberBehaviorAttribute.java
new file mode 100644
index 0000000..39a51f3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEmbeddedNumberBehaviorAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:embedded-number-behavior}.
+ *
+ */
+public class TableEmbeddedNumberBehaviorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "embedded-number-behavior");
+	public static final String DEFAULT_VALUE = "alpha-numeric";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:embedded-number-behavior}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEmbeddedNumberBehaviorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:embedded-number-behavior}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:embedded-number-behavior}.
+	 */
+	public enum Value {
+		ALPHA_NUMERIC("alpha-numeric"), DOUBLE("double"), INTEGER("integer") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:embedded-number-behavior}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:embedded-number-behavior} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEnabledAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEnabledAttribute.java
new file mode 100644
index 0000000..e75e588
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEnabledAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:enabled}.
+ *
+ */
+public class TableEnabledAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "enabled");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:enabled}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEnabledAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:enabled}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:enabled}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:enabled} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndAttribute.java
new file mode 100644
index 0000000..1a1ba4e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end}.
+ *
+ */
+public class TableEndAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:end}.
+	 */
+	public enum Value {
+		AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndCellAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndCellAddressAttribute.java
new file mode 100644
index 0000000..2c2d648
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndCellAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-cell-address}.
+ *
+ */
+public class TableEndCellAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-cell-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-cell-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndCellAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-cell-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-cell-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-cell-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndColumnAttribute.java
new file mode 100644
index 0000000..b048dcf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndColumnAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-column}.
+ *
+ */
+public class TableEndColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndPositionAttribute.java
new file mode 100644
index 0000000..82afb16
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndPositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-position}.
+ *
+ */
+public class TableEndPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndRowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndRowAttribute.java
new file mode 100644
index 0000000..b35b0a2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndRowAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-row}.
+ *
+ */
+public class TableEndRowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-row");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-row}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndRowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-row}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-row}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-row} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndTableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndTableAttribute.java
new file mode 100644
index 0000000..aecb76a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndTableAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-table}.
+ *
+ */
+public class TableEndTableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-table");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-table}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndTableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-table}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-table}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-table} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndXAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndXAttribute.java
new file mode 100644
index 0000000..35cbbbc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndXAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-x}.
+ *
+ */
+public class TableEndXAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-x");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-x}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndXAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-x}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-x}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-x} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndYAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndYAttribute.java
new file mode 100644
index 0000000..b98aed8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableEndYAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:end-y}.
+ *
+ */
+public class TableEndYAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "end-y");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:end-y}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableEndYAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:end-y}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:end-y}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:end-y} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableExecuteAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableExecuteAttribute.java
new file mode 100644
index 0000000..c4e623c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableExecuteAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:execute}.
+ *
+ */
+public class TableExecuteAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "execute");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:execute}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableExecuteAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:execute}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:execute}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:execute} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableExpressionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableExpressionAttribute.java
new file mode 100644
index 0000000..93b2558
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableExpressionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:expression}.
+ *
+ */
+public class TableExpressionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "expression");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:expression}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableExpressionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:expression}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:expression}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:expression} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFieldNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFieldNameAttribute.java
new file mode 100644
index 0000000..b5927f5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFieldNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:field-name}.
+ *
+ */
+public class TableFieldNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "field-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:field-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFieldNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:field-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:field-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:field-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFieldNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFieldNumberAttribute.java
new file mode 100644
index 0000000..f274576
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFieldNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:field-number}.
+ *
+ */
+public class TableFieldNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "field-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:field-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFieldNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:field-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:field-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:field-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFilterNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFilterNameAttribute.java
new file mode 100644
index 0000000..2cb8990
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFilterNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:filter-name}.
+ *
+ */
+public class TableFilterNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:filter-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:filter-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:filter-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:filter-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFilterOptionsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFilterOptionsAttribute.java
new file mode 100644
index 0000000..44a544f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFilterOptionsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:filter-options}.
+ *
+ */
+public class TableFilterOptionsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter-options");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:filter-options}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterOptionsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:filter-options}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:filter-options}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:filter-options} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFirstRowEndColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFirstRowEndColumnAttribute.java
new file mode 100644
index 0000000..d3d4934
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFirstRowEndColumnAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:first-row-end-column}.
+ *
+ */
+public class TableFirstRowEndColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "first-row-end-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:first-row-end-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFirstRowEndColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:first-row-end-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:first-row-end-column}.
+	 */
+	public enum Value {
+		COLUMN("column"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:first-row-end-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:first-row-end-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFirstRowStartColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFirstRowStartColumnAttribute.java
new file mode 100644
index 0000000..6bc8a0e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFirstRowStartColumnAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:first-row-start-column}.
+ *
+ */
+public class TableFirstRowStartColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "first-row-start-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:first-row-start-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFirstRowStartColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:first-row-start-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:first-row-start-column}.
+	 */
+	public enum Value {
+		COLUMN("column"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:first-row-start-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:first-row-start-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFormulaAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFormulaAttribute.java
new file mode 100644
index 0000000..52ce9b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFormulaAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:formula}.
+ *
+ */
+public class TableFormulaAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "formula");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:formula}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFormulaAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:formula}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:formula}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:formula} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFunctionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFunctionAttribute.java
new file mode 100644
index 0000000..b472dfa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableFunctionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:function}.
+ *
+ */
+public class TableFunctionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "function");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:function}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableFunctionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:function}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:function}.
+	 */
+	public enum Value {
+		AUTO("auto"), AVERAGE("average"), COUNT("count"), COUNTNUMS("countnums"), MAX("max"), MIN("min"), PRODUCT("product"), STDEV("stdev"), STDEVP("stdevp"), SUM("sum"), VAR("var"), VARP("varp") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:function}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:function} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGrandTotalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGrandTotalAttribute.java
new file mode 100644
index 0000000..f1fe0ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGrandTotalAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:grand-total}.
+ *
+ */
+public class TableGrandTotalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "grand-total");
+	public static final String DEFAULT_VALUE = "both";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:grand-total}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableGrandTotalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:grand-total}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:grand-total}.
+	 */
+	public enum Value {
+		BOTH("both"), COLUMN("column"), NONE("none"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:grand-total}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:grand-total} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGroupByFieldNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGroupByFieldNumberAttribute.java
new file mode 100644
index 0000000..819691f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGroupByFieldNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:group-by-field-number}.
+ *
+ */
+public class TableGroupByFieldNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "group-by-field-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:group-by-field-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableGroupByFieldNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:group-by-field-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:group-by-field-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:group-by-field-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGroupedByAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGroupedByAttribute.java
new file mode 100644
index 0000000..381c67c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableGroupedByAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:grouped-by}.
+ *
+ */
+public class TableGroupedByAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "grouped-by");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:grouped-by}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableGroupedByAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:grouped-by}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:grouped-by}.
+	 */
+	public enum Value {
+		DAYS("days"), HOURS("hours"), MINUTES("minutes"), MONTHS("months"), QUARTERS("quarters"), SECONDS("seconds"), YEARS("years") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:grouped-by}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:grouped-by} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableHasPersistentDataAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableHasPersistentDataAttribute.java
new file mode 100644
index 0000000..674dcbf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableHasPersistentDataAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:has-persistent-data}.
+ *
+ */
+public class TableHasPersistentDataAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "has-persistent-data");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:has-persistent-data}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableHasPersistentDataAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:has-persistent-data}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:has-persistent-data}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:has-persistent-data} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIdAttribute.java
new file mode 100644
index 0000000..260b5d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:id}.
+ *
+ */
+public class TableIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIdentifyCategoriesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIdentifyCategoriesAttribute.java
new file mode 100644
index 0000000..a507f41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIdentifyCategoriesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:identify-categories}.
+ *
+ */
+public class TableIdentifyCategoriesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "identify-categories");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:identify-categories}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIdentifyCategoriesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:identify-categories}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:identify-categories}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:identify-categories} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIgnoreEmptyRowsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIgnoreEmptyRowsAttribute.java
new file mode 100644
index 0000000..e2b6b2b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIgnoreEmptyRowsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:ignore-empty-rows}.
+ *
+ */
+public class TableIgnoreEmptyRowsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "ignore-empty-rows");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:ignore-empty-rows}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIgnoreEmptyRowsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:ignore-empty-rows}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:ignore-empty-rows}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:ignore-empty-rows} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIndexAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIndexAttribute.java
new file mode 100644
index 0000000..7d9fe68
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIndexAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:index}.
+ *
+ */
+public class TableIndexAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "index");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:index}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIndexAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:index}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:index}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:index} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsActiveAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsActiveAttribute.java
new file mode 100644
index 0000000..bc30ef8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsActiveAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:is-active}.
+ *
+ */
+public class TableIsActiveAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "is-active");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:is-active}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIsActiveAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:is-active}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:is-active}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:is-active} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsDataLayoutFieldAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsDataLayoutFieldAttribute.java
new file mode 100644
index 0000000..bfe87f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsDataLayoutFieldAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:is-data-layout-field}.
+ *
+ */
+public class TableIsDataLayoutFieldAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "is-data-layout-field");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:is-data-layout-field}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIsDataLayoutFieldAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:is-data-layout-field}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:is-data-layout-field}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:is-data-layout-field} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsSelectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsSelectionAttribute.java
new file mode 100644
index 0000000..a424fcc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsSelectionAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:is-selection}.
+ *
+ */
+public class TableIsSelectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "is-selection");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:is-selection}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIsSelectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:is-selection}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:is-selection}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:is-selection} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsSubTableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsSubTableAttribute.java
new file mode 100644
index 0000000..10773d3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableIsSubTableAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:is-sub-table}.
+ *
+ */
+public class TableIsSubTableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "is-sub-table");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:is-sub-table}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableIsSubTableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:is-sub-table}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:is-sub-table}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:is-sub-table} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLabelCellRangeAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLabelCellRangeAddressAttribute.java
new file mode 100644
index 0000000..7dd97fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLabelCellRangeAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:label-cell-range-address}.
+ *
+ */
+public class TableLabelCellRangeAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "label-cell-range-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:label-cell-range-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLabelCellRangeAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:label-cell-range-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:label-cell-range-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:label-cell-range-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLanguageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLanguageAttribute.java
new file mode 100644
index 0000000..c99e5da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLanguageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:language}.
+ *
+ */
+public class TableLanguageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "language");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:language}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLanguageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:language}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:language}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:language} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastColumnSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastColumnSpannedAttribute.java
new file mode 100644
index 0000000..7f467a2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastColumnSpannedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:last-column-spanned}.
+ *
+ */
+public class TableLastColumnSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "last-column-spanned");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:last-column-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLastColumnSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:last-column-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:last-column-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:last-column-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowEndColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowEndColumnAttribute.java
new file mode 100644
index 0000000..4f0d422
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowEndColumnAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:last-row-end-column}.
+ *
+ */
+public class TableLastRowEndColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "last-row-end-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:last-row-end-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLastRowEndColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:last-row-end-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:last-row-end-column}.
+	 */
+	public enum Value {
+		COLUMN("column"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:last-row-end-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:last-row-end-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowSpannedAttribute.java
new file mode 100644
index 0000000..d12a962
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowSpannedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:last-row-spanned}.
+ *
+ */
+public class TableLastRowSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "last-row-spanned");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:last-row-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLastRowSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:last-row-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:last-row-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:last-row-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowStartColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowStartColumnAttribute.java
new file mode 100644
index 0000000..f8bedad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLastRowStartColumnAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:last-row-start-column}.
+ *
+ */
+public class TableLastRowStartColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "last-row-start-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:last-row-start-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLastRowStartColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:last-row-start-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:last-row-start-column}.
+	 */
+	public enum Value {
+		COLUMN("column"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:last-row-start-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:last-row-start-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLayoutModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLayoutModeAttribute.java
new file mode 100644
index 0000000..c9ecd1b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLayoutModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:layout-mode}.
+ *
+ */
+public class TableLayoutModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "layout-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:layout-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLayoutModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:layout-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:layout-mode}.
+	 */
+	public enum Value {
+		OUTLINE_SUBTOTALS_BOTTOM("outline-subtotals-bottom"), OUTLINE_SUBTOTALS_TOP("outline-subtotals-top"), TABULAR_LAYOUT("tabular-layout") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:layout-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:layout-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLinkToSourceDataAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLinkToSourceDataAttribute.java
new file mode 100644
index 0000000..e0cd34f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableLinkToSourceDataAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:link-to-source-data}.
+ *
+ */
+public class TableLinkToSourceDataAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "link-to-source-data");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:link-to-source-data}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableLinkToSourceDataAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:link-to-source-data}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:link-to-source-data}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:link-to-source-data} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMarkedInvalidAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMarkedInvalidAttribute.java
new file mode 100644
index 0000000..db0bd45
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMarkedInvalidAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:marked-invalid}.
+ *
+ */
+public class TableMarkedInvalidAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "marked-invalid");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:marked-invalid}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMarkedInvalidAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:marked-invalid}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:marked-invalid}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:marked-invalid} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMatrixCoveredAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMatrixCoveredAttribute.java
new file mode 100644
index 0000000..2145d53
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMatrixCoveredAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:matrix-covered}.
+ *
+ */
+public class TableMatrixCoveredAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "matrix-covered");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:matrix-covered}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMatrixCoveredAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:matrix-covered}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:matrix-covered}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:matrix-covered} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMaximumDifferenceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMaximumDifferenceAttribute.java
new file mode 100644
index 0000000..28d25cf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMaximumDifferenceAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:maximum-difference}.
+ *
+ */
+public class TableMaximumDifferenceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "maximum-difference");
+	public static final String DEFAULT_VALUE = "0.001";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:maximum-difference}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMaximumDifferenceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:maximum-difference}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:maximum-difference}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:maximum-difference} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberCountAttribute.java
new file mode 100644
index 0000000..018d7bc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberCountAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:member-count}.
+ *
+ */
+public class TableMemberCountAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "member-count");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:member-count}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMemberCountAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:member-count}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:member-count}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:member-count} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberNameAttribute.java
new file mode 100644
index 0000000..6f49b89
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:member-name}.
+ *
+ */
+public class TableMemberNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "member-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:member-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMemberNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:member-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:member-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:member-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberTypeAttribute.java
new file mode 100644
index 0000000..8f18754
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMemberTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:member-type}.
+ *
+ */
+public class TableMemberTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "member-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:member-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMemberTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:member-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:member-type}.
+	 */
+	public enum Value {
+		NAMED("named"), NEXT("next"), PREVIOUS("previous") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:member-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:member-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMessageTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMessageTypeAttribute.java
new file mode 100644
index 0000000..2658ba9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMessageTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:message-type}.
+ *
+ */
+public class TableMessageTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "message-type");
+	public static final String DEFAULT_VALUE = "stop";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:message-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMessageTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:message-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:message-type}.
+	 */
+	public enum Value {
+		INFORMATION("information"), STOP("stop"), WARNING("warning") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:message-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:message-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableModeAttribute.java
new file mode 100644
index 0000000..3947ccd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableModeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:mode}.
+ *
+ */
+public class TableModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "mode");
+	public static final String DEFAULT_VALUE = "copy-all";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:mode}.
+	 */
+	public enum Value {
+		COPY_ALL("copy-all"), COPY_RESULTS_ONLY("copy-results-only") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMultiDeletionSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMultiDeletionSpannedAttribute.java
new file mode 100644
index 0000000..431bbc3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableMultiDeletionSpannedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:multi-deletion-spanned}.
+ *
+ */
+public class TableMultiDeletionSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "multi-deletion-spanned");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:multi-deletion-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableMultiDeletionSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:multi-deletion-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:multi-deletion-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:multi-deletion-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNameAttribute.java
new file mode 100644
index 0000000..cfae354
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNameAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:name}.
+ *
+ */
+public class TableNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:name}.
+	 */
+	public enum Value {
+		REMOVE_DEPENDENTS("remove-dependents"), REMOVE_PRECEDENTS("remove-precedents"), TRACE_DEPENDENTS("trace-dependents"), TRACE_ERRORS("trace-errors"), TRACE_PRECEDENTS("trace-precedents") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNullYearAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNullYearAttribute.java
new file mode 100644
index 0000000..2075073
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNullYearAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:null-year}.
+ *
+ */
+public class TableNullYearAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "null-year");
+	public static final String DEFAULT_VALUE = "1930";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:null-year}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNullYearAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:null-year}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:null-year}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:null-year} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberColumnsRepeatedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberColumnsRepeatedAttribute.java
new file mode 100644
index 0000000..b7b9167
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberColumnsRepeatedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:number-columns-repeated}.
+ *
+ */
+public class TableNumberColumnsRepeatedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "number-columns-repeated");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:number-columns-repeated}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNumberColumnsRepeatedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:number-columns-repeated}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:number-columns-repeated}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:number-columns-repeated} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberColumnsSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberColumnsSpannedAttribute.java
new file mode 100644
index 0000000..a3c7574
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberColumnsSpannedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:number-columns-spanned}.
+ *
+ */
+public class TableNumberColumnsSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "number-columns-spanned");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:number-columns-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNumberColumnsSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:number-columns-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:number-columns-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:number-columns-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberMatrixColumnsSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberMatrixColumnsSpannedAttribute.java
new file mode 100644
index 0000000..4f5180f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberMatrixColumnsSpannedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:number-matrix-columns-spanned}.
+ *
+ */
+public class TableNumberMatrixColumnsSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "number-matrix-columns-spanned");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:number-matrix-columns-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNumberMatrixColumnsSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:number-matrix-columns-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:number-matrix-columns-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:number-matrix-columns-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberMatrixRowsSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberMatrixRowsSpannedAttribute.java
new file mode 100644
index 0000000..7463383
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberMatrixRowsSpannedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:number-matrix-rows-spanned}.
+ *
+ */
+public class TableNumberMatrixRowsSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "number-matrix-rows-spanned");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:number-matrix-rows-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNumberMatrixRowsSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:number-matrix-rows-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:number-matrix-rows-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:number-matrix-rows-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberRowsRepeatedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberRowsRepeatedAttribute.java
new file mode 100644
index 0000000..40d7764
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberRowsRepeatedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:number-rows-repeated}.
+ *
+ */
+public class TableNumberRowsRepeatedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "number-rows-repeated");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:number-rows-repeated}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNumberRowsRepeatedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:number-rows-repeated}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:number-rows-repeated}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:number-rows-repeated} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberRowsSpannedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberRowsSpannedAttribute.java
new file mode 100644
index 0000000..3a1d7c1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableNumberRowsSpannedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:number-rows-spanned}.
+ *
+ */
+public class TableNumberRowsSpannedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "number-rows-spanned");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:number-rows-spanned}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableNumberRowsSpannedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:number-rows-spanned}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:number-rows-spanned}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:number-rows-spanned} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableObjectNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableObjectNameAttribute.java
new file mode 100644
index 0000000..84b3b53
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableObjectNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:object-name}.
+ *
+ */
+public class TableObjectNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "object-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:object-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableObjectNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:object-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:object-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:object-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOnUpdateKeepSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOnUpdateKeepSizeAttribute.java
new file mode 100644
index 0000000..c53e379
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOnUpdateKeepSizeAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:on-update-keep-size}.
+ *
+ */
+public class TableOnUpdateKeepSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "on-update-keep-size");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:on-update-keep-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableOnUpdateKeepSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:on-update-keep-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:on-update-keep-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:on-update-keep-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOnUpdateKeepStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOnUpdateKeepStylesAttribute.java
new file mode 100644
index 0000000..e8b8f50
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOnUpdateKeepStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:on-update-keep-styles}.
+ *
+ */
+public class TableOnUpdateKeepStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "on-update-keep-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:on-update-keep-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableOnUpdateKeepStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:on-update-keep-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:on-update-keep-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:on-update-keep-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOperatorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOperatorAttribute.java
new file mode 100644
index 0000000..af2a8f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOperatorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:operator}.
+ *
+ */
+public class TableOperatorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "operator");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:operator}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableOperatorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:operator}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:operator}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:operator} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOrderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOrderAttribute.java
new file mode 100644
index 0000000..9e4c582
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOrderAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:order}.
+ *
+ */
+public class TableOrderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "order");
+	public static final String DEFAULT_VALUE = "ascending";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:order}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableOrderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:order}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:order}.
+	 */
+	public enum Value {
+		ASCENDING("ascending"), DESCENDING("descending") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:order}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:order} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOrientationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOrientationAttribute.java
new file mode 100644
index 0000000..e26b496
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableOrientationAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:orientation}.
+ *
+ */
+public class TableOrientationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "orientation");
+	public static final String DEFAULT_VALUE = "row";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:orientation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableOrientationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:orientation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:orientation}.
+	 */
+	public enum Value {
+		COLUMN("column"), DATA("data"), HIDDEN("hidden"), PAGE("page"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:orientation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:orientation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePageBreaksOnGroupChangeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePageBreaksOnGroupChangeAttribute.java
new file mode 100644
index 0000000..d00adc5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePageBreaksOnGroupChangeAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:page-breaks-on-group-change}.
+ *
+ */
+public class TablePageBreaksOnGroupChangeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "page-breaks-on-group-change");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:page-breaks-on-group-change}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TablePageBreaksOnGroupChangeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:page-breaks-on-group-change}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:page-breaks-on-group-change}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:page-breaks-on-group-change} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableParagraphStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableParagraphStyleNameAttribute.java
new file mode 100644
index 0000000..410231c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableParagraphStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:paragraph-style-name}.
+ *
+ */
+public class TableParagraphStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:paragraph-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableParagraphStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:paragraph-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:paragraph-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:paragraph-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableParseSqlStatementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableParseSqlStatementAttribute.java
new file mode 100644
index 0000000..ee3fafd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableParseSqlStatementAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:parse-sql-statement}.
+ *
+ */
+public class TableParseSqlStatementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "parse-sql-statement");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:parse-sql-statement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableParseSqlStatementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:parse-sql-statement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:parse-sql-statement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:parse-sql-statement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePasswordAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePasswordAttribute.java
new file mode 100644
index 0000000..a19b3b8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePasswordAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:password}.
+ *
+ */
+public class TablePasswordAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "password");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:password}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TablePasswordAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:password}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:password}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:password} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePositionAttribute.java
new file mode 100644
index 0000000..3591476
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:position}.
+ *
+ */
+public class TablePositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TablePositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrecisionAsShownAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrecisionAsShownAttribute.java
new file mode 100644
index 0000000..f90270c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrecisionAsShownAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:precision-as-shown}.
+ *
+ */
+public class TablePrecisionAsShownAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "precision-as-shown");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:precision-as-shown}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TablePrecisionAsShownAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:precision-as-shown}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:precision-as-shown}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:precision-as-shown} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrintAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrintAttribute.java
new file mode 100644
index 0000000..6b49da7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrintAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:print}.
+ *
+ */
+public class TablePrintAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "print");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:print}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TablePrintAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:print}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:print}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:print} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrintRangesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrintRangesAttribute.java
new file mode 100644
index 0000000..ac22388
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TablePrintRangesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:print-ranges}.
+ *
+ */
+public class TablePrintRangesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "print-ranges");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:print-ranges}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TablePrintRangesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:print-ranges}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:print-ranges}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:print-ranges} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectAttribute.java
new file mode 100644
index 0000000..adb228b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:protect}.
+ *
+ */
+public class TableProtectAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "protect");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:protect}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableProtectAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:protect}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:protect}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:protect} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectedAttribute.java
new file mode 100644
index 0000000..88748c2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:protected}.
+ *
+ */
+public class TableProtectedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "protected");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:protected}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableProtectedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:protected}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:protected}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:protected} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectionKeyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectionKeyAttribute.java
new file mode 100644
index 0000000..1ce151e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectionKeyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:protection-key}.
+ *
+ */
+public class TableProtectionKeyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "protection-key");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:protection-key}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableProtectionKeyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:protection-key}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:protection-key}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:protection-key} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectionKeyDigestAlgorithmAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectionKeyDigestAlgorithmAttribute.java
new file mode 100644
index 0000000..03db2ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableProtectionKeyDigestAlgorithmAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:protection-key-digest-algorithm}.
+ *
+ */
+public class TableProtectionKeyDigestAlgorithmAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "protection-key-digest-algorithm");
+	public static final String DEFAULT_VALUE = "http://www.w3.org/2000/09/xmldsig#sha1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:protection-key-digest-algorithm}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableProtectionKeyDigestAlgorithmAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:protection-key-digest-algorithm}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:protection-key-digest-algorithm}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:protection-key-digest-algorithm} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableQueryNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableQueryNameAttribute.java
new file mode 100644
index 0000000..e41bc71
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableQueryNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:query-name}.
+ *
+ */
+public class TableQueryNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "query-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:query-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableQueryNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:query-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:query-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:query-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRangeUsableAsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRangeUsableAsAttribute.java
new file mode 100644
index 0000000..18e5163
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRangeUsableAsAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:range-usable-as}.
+ *
+ */
+public class TableRangeUsableAsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "range-usable-as");
+	public static final String DEFAULT_VALUE = "none";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:range-usable-as}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableRangeUsableAsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:range-usable-as}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:range-usable-as}.
+	 */
+	public enum Value {
+		FILTER("filter"), NONE("none"), PRINT_RANGE("print-range"), REPEAT_COLUMN("repeat-column"), REPEAT_ROW("repeat-row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:range-usable-as}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:range-usable-as} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRefreshDelayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRefreshDelayAttribute.java
new file mode 100644
index 0000000..ddaeb5a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRefreshDelayAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:refresh-delay}.
+ *
+ */
+public class TableRefreshDelayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "refresh-delay");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:refresh-delay}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableRefreshDelayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:refresh-delay}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:refresh-delay}.
+	 */
+	public enum Value {
+		FALSE("false"), TRUE("true") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:refresh-delay}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:refresh-delay} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRejectingChangeIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRejectingChangeIdAttribute.java
new file mode 100644
index 0000000..925bc30
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRejectingChangeIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:rejecting-change-id}.
+ *
+ */
+public class TableRejectingChangeIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "rejecting-change-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:rejecting-change-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableRejectingChangeIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:rejecting-change-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:rejecting-change-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:rejecting-change-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRfcLanguageTagAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRfcLanguageTagAttribute.java
new file mode 100644
index 0000000..1bdfe25
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRfcLanguageTagAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:rfc-language-tag}.
+ *
+ */
+public class TableRfcLanguageTagAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "rfc-language-tag");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:rfc-language-tag}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableRfcLanguageTagAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:rfc-language-tag}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:rfc-language-tag}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:rfc-language-tag} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRowAttribute.java
new file mode 100644
index 0000000..a3629e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableRowAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:row}.
+ *
+ */
+public class TableRowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "row");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:row}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableRowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:row}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:row}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:row} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableScenarioRangesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableScenarioRangesAttribute.java
new file mode 100644
index 0000000..0d8fdf0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableScenarioRangesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:scenario-ranges}.
+ *
+ */
+public class TableScenarioRangesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "scenario-ranges");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:scenario-ranges}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableScenarioRangesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:scenario-ranges}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:scenario-ranges}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:scenario-ranges} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableScriptAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableScriptAttribute.java
new file mode 100644
index 0000000..93510de
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableScriptAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:script}.
+ *
+ */
+public class TableScriptAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "script");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:script}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableScriptAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:script}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:script}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:script} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSearchCriteriaMustApplyToWholeCellAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSearchCriteriaMustApplyToWholeCellAttribute.java
new file mode 100644
index 0000000..9af9780
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSearchCriteriaMustApplyToWholeCellAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:search-criteria-must-apply-to-whole-cell}.
+ *
+ */
+public class TableSearchCriteriaMustApplyToWholeCellAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "search-criteria-must-apply-to-whole-cell");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:search-criteria-must-apply-to-whole-cell}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSearchCriteriaMustApplyToWholeCellAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:search-criteria-must-apply-to-whole-cell}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:search-criteria-must-apply-to-whole-cell}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:search-criteria-must-apply-to-whole-cell} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSelectedPageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSelectedPageAttribute.java
new file mode 100644
index 0000000..0c83389
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSelectedPageAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:selected-page}.
+ *
+ */
+public class TableSelectedPageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "selected-page");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:selected-page}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSelectedPageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:selected-page}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:selected-page}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:selected-page} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowDetailsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowDetailsAttribute.java
new file mode 100644
index 0000000..fbe12f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowDetailsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:show-details}.
+ *
+ */
+public class TableShowDetailsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "show-details");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:show-details}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableShowDetailsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:show-details}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:show-details}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:show-details} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowEmptyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowEmptyAttribute.java
new file mode 100644
index 0000000..fd8333d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowEmptyAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:show-empty}.
+ *
+ */
+public class TableShowEmptyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "show-empty");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:show-empty}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableShowEmptyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:show-empty}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:show-empty}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:show-empty} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowFilterButtonAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowFilterButtonAttribute.java
new file mode 100644
index 0000000..98de10b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableShowFilterButtonAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:show-filter-button}.
+ *
+ */
+public class TableShowFilterButtonAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "show-filter-button");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:show-filter-button}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableShowFilterButtonAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:show-filter-button}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:show-filter-button}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:show-filter-button} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSortModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSortModeAttribute.java
new file mode 100644
index 0000000..5a6edf1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSortModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:sort-mode}.
+ *
+ */
+public class TableSortModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "sort-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:sort-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSortModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:sort-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:sort-mode}.
+	 */
+	public enum Value {
+		DATA("data"), MANUAL("manual"), NAME("name"), NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:sort-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:sort-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceCellRangeAddressesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceCellRangeAddressesAttribute.java
new file mode 100644
index 0000000..657afb2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceCellRangeAddressesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:source-cell-range-addresses}.
+ *
+ */
+public class TableSourceCellRangeAddressesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "source-cell-range-addresses");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:source-cell-range-addresses}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSourceCellRangeAddressesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:source-cell-range-addresses}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:source-cell-range-addresses}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:source-cell-range-addresses} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceFieldNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceFieldNameAttribute.java
new file mode 100644
index 0000000..825b152
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceFieldNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:source-field-name}.
+ *
+ */
+public class TableSourceFieldNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "source-field-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:source-field-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSourceFieldNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:source-field-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:source-field-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:source-field-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceNameAttribute.java
new file mode 100644
index 0000000..2c0bee8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSourceNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:source-name}.
+ *
+ */
+public class TableSourceNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "source-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:source-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSourceNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:source-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:source-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:source-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSqlStatementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSqlStatementAttribute.java
new file mode 100644
index 0000000..fd0b72a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableSqlStatementAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:sql-statement}.
+ *
+ */
+public class TableSqlStatementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "sql-statement");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:sql-statement}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableSqlStatementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:sql-statement}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:sql-statement}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:sql-statement} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartAttribute.java
new file mode 100644
index 0000000..638011b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:start}.
+ *
+ */
+public class TableStartAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "start");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:start}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStartAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:start}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:start}.
+	 */
+	public enum Value {
+		AUTO("auto") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:start}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:start} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartColumnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartColumnAttribute.java
new file mode 100644
index 0000000..38a3f3d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartColumnAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:start-column}.
+ *
+ */
+public class TableStartColumnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "start-column");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:start-column}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStartColumnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:start-column}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:start-column}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:start-column} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartPositionAttribute.java
new file mode 100644
index 0000000..46749a1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartPositionAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:start-position}.
+ *
+ */
+public class TableStartPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "start-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:start-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStartPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:start-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:start-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:start-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartRowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartRowAttribute.java
new file mode 100644
index 0000000..d271cb4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartRowAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:start-row}.
+ *
+ */
+public class TableStartRowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "start-row");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:start-row}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStartRowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:start-row}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:start-row}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:start-row} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartTableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartTableAttribute.java
new file mode 100644
index 0000000..f785d6b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStartTableAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:start-table}.
+ *
+ */
+public class TableStartTableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "start-table");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:start-table}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStartTableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:start-table}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:start-table}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:start-table} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStatusAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStatusAttribute.java
new file mode 100644
index 0000000..71a7e5d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStatusAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:status}.
+ *
+ */
+public class TableStatusAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "status");
+	public static final String DEFAULT_VALUE = "disable";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:status}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStatusAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:status}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:status}.
+	 */
+	public enum Value {
+		DISABLE("disable"), ENABLE("enable") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:status}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:status} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStepAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStepAttribute.java
new file mode 100644
index 0000000..6a00f24
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStepAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:step}.
+ *
+ */
+public class TableStepAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "step");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:step}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStepAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:step}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>double</code> value of the attribute.
+	 */
+	public void setDoubleValue(double value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>double</code> value of the attribute
+	 */
+	public double doubleValue() {
+		String val = super.getValue();
+		try {
+			return Double.parseDouble(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:step}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:step} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStepsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStepsAttribute.java
new file mode 100644
index 0000000..a75157f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStepsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:steps}.
+ *
+ */
+public class TableStepsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "steps");
+	public static final String DEFAULT_VALUE = "100";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:steps}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStepsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:steps}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:steps}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:steps} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStructureProtectedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStructureProtectedAttribute.java
new file mode 100644
index 0000000..54401db
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStructureProtectedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:structure-protected}.
+ *
+ */
+public class TableStructureProtectedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "structure-protected");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:structure-protected}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStructureProtectedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:structure-protected}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:structure-protected}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:structure-protected} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStyleNameAttribute.java
new file mode 100644
index 0000000..06bc0eb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:style-name}.
+ *
+ */
+public class TableStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableAttribute.java
new file mode 100644
index 0000000..8b741bc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:table}.
+ *
+ */
+public class TableTableAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:table}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTableAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:table}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:table}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:table} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableBackgroundAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableBackgroundAttribute.java
new file mode 100644
index 0000000..7eebabc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableBackgroundAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:table-background}.
+ *
+ */
+public class TableTableBackgroundAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-background");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:table-background}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTableBackgroundAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:table-background}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:table-background}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:table-background} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableNameAttribute.java
new file mode 100644
index 0000000..9063cb3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTableNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:table-name}.
+ *
+ */
+public class TableTableNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:table-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTableNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:table-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:table-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:table-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTargetCellAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTargetCellAddressAttribute.java
new file mode 100644
index 0000000..3e4985d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTargetCellAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:target-cell-address}.
+ *
+ */
+public class TableTargetCellAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "target-cell-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:target-cell-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTargetCellAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:target-cell-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:target-cell-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:target-cell-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTargetRangeAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTargetRangeAddressAttribute.java
new file mode 100644
index 0000000..f8a5784
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTargetRangeAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:target-range-address}.
+ *
+ */
+public class TableTargetRangeAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "target-range-address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:target-range-address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTargetRangeAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:target-range-address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:target-range-address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:target-range-address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTemplateNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTemplateNameAttribute.java
new file mode 100644
index 0000000..f7f0676
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTemplateNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:template-name}.
+ *
+ */
+public class TableTemplateNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "template-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:template-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTemplateNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:template-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:template-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:template-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTitleAttribute.java
new file mode 100644
index 0000000..5891b21
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:title}.
+ *
+ */
+public class TableTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTrackChangesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTrackChangesAttribute.java
new file mode 100644
index 0000000..b48bcde
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTrackChangesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:track-changes}.
+ *
+ */
+public class TableTrackChangesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "track-changes");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:track-changes}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTrackChangesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:track-changes}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:track-changes}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:track-changes} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTypeAttribute.java
new file mode 100644
index 0000000..7b9fecc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:type}.
+ *
+ */
+public class TableTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:type}.
+	 */
+	public enum Value {
+		COLUMN("column"), COLUMN_PERCENTAGE("column-percentage"), INDEX("index"), MEMBER_DIFFERENCE("member-difference"), MEMBER_PERCENTAGE("member-percentage"), MEMBER_PERCENTAGE_DIFFERENCE("member-percentage-difference"), NONE("none"), ROW("row"), ROW_PERCENTAGE("row-percentage"), RUNNING_TOTAL("running-total"), TABLE("table"), TOTAL_PERCENTAGE("total-percentage") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseBandingColumnsStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseBandingColumnsStylesAttribute.java
new file mode 100644
index 0000000..435a438
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseBandingColumnsStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-banding-columns-styles}.
+ *
+ */
+public class TableUseBandingColumnsStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-banding-columns-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-banding-columns-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseBandingColumnsStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-banding-columns-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-banding-columns-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-banding-columns-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseBandingRowsStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseBandingRowsStylesAttribute.java
new file mode 100644
index 0000000..57a5c16
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseBandingRowsStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-banding-rows-styles}.
+ *
+ */
+public class TableUseBandingRowsStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-banding-rows-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-banding-rows-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseBandingRowsStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-banding-rows-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-banding-rows-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-banding-rows-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseFirstColumnStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseFirstColumnStylesAttribute.java
new file mode 100644
index 0000000..80bd5af
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseFirstColumnStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-first-column-styles}.
+ *
+ */
+public class TableUseFirstColumnStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-first-column-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-first-column-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseFirstColumnStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-first-column-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-first-column-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-first-column-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseFirstRowStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseFirstRowStylesAttribute.java
new file mode 100644
index 0000000..1104693
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseFirstRowStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-first-row-styles}.
+ *
+ */
+public class TableUseFirstRowStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-first-row-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-first-row-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseFirstRowStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-first-row-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-first-row-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-first-row-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLabelsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLabelsAttribute.java
new file mode 100644
index 0000000..46f3b08
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLabelsAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-labels}.
+ *
+ */
+public class TableUseLabelsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-labels");
+	public static final String DEFAULT_VALUE = "none";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-labels}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseLabelsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-labels}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:use-labels}.
+	 */
+	public enum Value {
+		BOTH("both"), COLUMN("column"), NONE("none"), ROW("row") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-labels}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-labels} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLastColumnStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLastColumnStylesAttribute.java
new file mode 100644
index 0000000..ff28fbe
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLastColumnStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-last-column-styles}.
+ *
+ */
+public class TableUseLastColumnStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-last-column-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-last-column-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseLastColumnStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-last-column-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-last-column-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-last-column-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLastRowStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLastRowStylesAttribute.java
new file mode 100644
index 0000000..cee15d0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseLastRowStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-last-row-styles}.
+ *
+ */
+public class TableUseLastRowStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-last-row-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-last-row-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseLastRowStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-last-row-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-last-row-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-last-row-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseRegularExpressionsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseRegularExpressionsAttribute.java
new file mode 100644
index 0000000..44fd2a4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseRegularExpressionsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-regular-expressions}.
+ *
+ */
+public class TableUseRegularExpressionsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-regular-expressions");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-regular-expressions}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseRegularExpressionsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-regular-expressions}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-regular-expressions}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-regular-expressions} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseWildcardsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseWildcardsAttribute.java
new file mode 100644
index 0000000..30ee1bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUseWildcardsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:use-wildcards}.
+ *
+ */
+public class TableUseWildcardsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "use-wildcards");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:use-wildcards}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUseWildcardsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:use-wildcards}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:use-wildcards}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:use-wildcards} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUsedHierarchyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUsedHierarchyAttribute.java
new file mode 100644
index 0000000..429bbc8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUsedHierarchyAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:used-hierarchy}.
+ *
+ */
+public class TableUsedHierarchyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "used-hierarchy");
+	public static final String DEFAULT_VALUE = "-1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:used-hierarchy}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUsedHierarchyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:used-hierarchy}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:used-hierarchy}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:used-hierarchy} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUserNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUserNameAttribute.java
new file mode 100644
index 0000000..e7e2efb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableUserNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:user-name}.
+ *
+ */
+public class TableUserNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "user-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:user-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableUserNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:user-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:user-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:user-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableValueAttribute.java
new file mode 100644
index 0000000..38da79d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:value}.
+ *
+ */
+public class TableValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableValueTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableValueTypeAttribute.java
new file mode 100644
index 0000000..fde7c67
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableValueTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:value-type}.
+ *
+ */
+public class TableValueTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "value-type");
+	public static final String DEFAULT_VALUE = "date";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:value-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableValueTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:value-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:value-type}.
+	 */
+	public enum Value {
+		DATE("date") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:value-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:value-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableVisibilityAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableVisibilityAttribute.java
new file mode 100644
index 0000000..816bcb1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/table/TableVisibilityAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.table;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute table:visibility}.
+ *
+ */
+public class TableVisibilityAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "visibility");
+	public static final String DEFAULT_VALUE = "visible";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute table:visibility}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TableVisibilityAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute table:visibility}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute table:visibility}.
+	 */
+	public enum Value {
+		COLLAPSE("collapse"), FILTER("filter"), VISIBLE("visible") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute table:visibility}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute table:visibility} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextActiveAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextActiveAttribute.java
new file mode 100644
index 0000000..16a718b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextActiveAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:active}.
+ *
+ */
+public class TextActiveAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "active");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:active}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextActiveAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:active}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:active}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:active} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAddressAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAddressAttribute.java
new file mode 100644
index 0000000..ce686ed
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAddressAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:address}.
+ *
+ */
+public class TextAddressAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "address");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:address}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAddressAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:address}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:address}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:address} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAlphabeticalSeparatorsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAlphabeticalSeparatorsAttribute.java
new file mode 100644
index 0000000..a00679b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAlphabeticalSeparatorsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:alphabetical-separators}.
+ *
+ */
+public class TextAlphabeticalSeparatorsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-separators");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:alphabetical-separators}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalSeparatorsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:alphabetical-separators}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:alphabetical-separators}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:alphabetical-separators} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnchorPageNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnchorPageNumberAttribute.java
new file mode 100644
index 0000000..6d2052c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnchorPageNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:anchor-page-number}.
+ *
+ */
+public class TextAnchorPageNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "anchor-page-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:anchor-page-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnchorPageNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:anchor-page-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:anchor-page-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:anchor-page-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnchorTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnchorTypeAttribute.java
new file mode 100644
index 0000000..6dd0750
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnchorTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:anchor-type}.
+ *
+ */
+public class TextAnchorTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "anchor-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:anchor-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnchorTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:anchor-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:anchor-type}.
+	 */
+	public enum Value {
+		AS_CHAR("as-char"), CHAR("char"), FRAME("frame"), PAGE("page"), PARAGRAPH("paragraph") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:anchor-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:anchor-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationAttribute.java
new file mode 100644
index 0000000..f0022be
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation}.
+ *
+ */
+public class TextAnimationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:animation}.
+	 */
+	public enum Value {
+		ALTERNATE("alternate"), NONE("none"), SCROLL("scroll"), SLIDE("slide") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationDelayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationDelayAttribute.java
new file mode 100644
index 0000000..989cef8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationDelayAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation-delay}.
+ *
+ */
+public class TextAnimationDelayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation-delay");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation-delay}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationDelayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation-delay}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation-delay}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation-delay} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationDirectionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationDirectionAttribute.java
new file mode 100644
index 0000000..469a274
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationDirectionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation-direction}.
+ *
+ */
+public class TextAnimationDirectionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation-direction");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation-direction}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationDirectionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation-direction}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:animation-direction}.
+	 */
+	public enum Value {
+		DOWN("down"), LEFT("left"), RIGHT("right"), UP("up") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation-direction}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation-direction} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationRepeatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationRepeatAttribute.java
new file mode 100644
index 0000000..8379294
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationRepeatAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation-repeat}.
+ *
+ */
+public class TextAnimationRepeatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation-repeat");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation-repeat}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationRepeatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation-repeat}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation-repeat}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation-repeat} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStartInsideAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStartInsideAttribute.java
new file mode 100644
index 0000000..ca92ae4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStartInsideAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation-start-inside}.
+ *
+ */
+public class TextAnimationStartInsideAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation-start-inside");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation-start-inside}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationStartInsideAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation-start-inside}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation-start-inside}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation-start-inside} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStepsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStepsAttribute.java
new file mode 100644
index 0000000..5fd531d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStepsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation-steps}.
+ *
+ */
+public class TextAnimationStepsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation-steps");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation-steps}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationStepsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation-steps}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation-steps}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation-steps} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStopInsideAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStopInsideAttribute.java
new file mode 100644
index 0000000..12c3435
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnimationStopInsideAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:animation-stop-inside}.
+ *
+ */
+public class TextAnimationStopInsideAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "animation-stop-inside");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:animation-stop-inside}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnimationStopInsideAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:animation-stop-inside}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:animation-stop-inside}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:animation-stop-inside} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnnoteAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnnoteAttribute.java
new file mode 100644
index 0000000..00d2ae9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAnnoteAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:annote}.
+ *
+ */
+public class TextAnnoteAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "annote");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:annote}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAnnoteAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:annote}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:annote}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:annote} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAuthorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAuthorAttribute.java
new file mode 100644
index 0000000..dd9f121
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextAuthorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:author}.
+ *
+ */
+public class TextAuthorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "author");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:author}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextAuthorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:author}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:author}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:author} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBibliographyDataFieldAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBibliographyDataFieldAttribute.java
new file mode 100644
index 0000000..28ee8c1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBibliographyDataFieldAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:bibliography-data-field}.
+ *
+ */
+public class TextBibliographyDataFieldAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography-data-field");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:bibliography-data-field}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographyDataFieldAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:bibliography-data-field}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:bibliography-data-field}.
+	 */
+	public enum Value {
+		ADDRESS("address"), ANNOTE("annote"), AUTHOR("author"), BIBLIOGRAPHY_TYPE("bibliography-type"), BOOKTITLE("booktitle"), CHAPTER("chapter"), CUSTOM1("custom1"), CUSTOM2("custom2"), CUSTOM3("custom3"), CUSTOM4("custom4"), CUSTOM5("custom5"), EDITION("edition"), EDITOR("editor"), HOWPUBLISHED("howpublished"), IDENTIFIER("identifier"), INSTITUTION("institution"), ISBN("isbn"), ISSN("issn"), JOURNAL("journal"), MONTH("month"), NOTE("note"), NUMBER("number"), ORGANIZATIONS("organizations"), PAGES("pages"), PUBLISHER("publisher"), REPORT_TYPE("report-type"), SCHOOL("school"), SERIES("series"), TITLE("title"), URL("url"), VOLUME("volume"), YEAR("year") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:bibliography-data-field}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:bibliography-data-field} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBibliographyTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBibliographyTypeAttribute.java
new file mode 100644
index 0000000..1fac5e9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBibliographyTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:bibliography-type}.
+ *
+ */
+public class TextBibliographyTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:bibliography-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographyTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:bibliography-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:bibliography-type}.
+	 */
+	public enum Value {
+		ARTICLE("article"), BOOK("book"), BOOKLET("booklet"), CONFERENCE("conference"), CUSTOM1("custom1"), CUSTOM2("custom2"), CUSTOM3("custom3"), CUSTOM4("custom4"), CUSTOM5("custom5"), EMAIL("email"), INBOOK("inbook"), INCOLLECTION("incollection"), INPROCEEDINGS("inproceedings"), JOURNAL("journal"), MANUAL("manual"), MASTERSTHESIS("mastersthesis"), MISC("misc"), PHDTHESIS("phdthesis"), PROCEEDINGS("proceedings"), TECHREPORT("techreport"), UNPUBLISHED("unpublished"), WWW("www") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:bibliography-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:bibliography-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBooktitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBooktitleAttribute.java
new file mode 100644
index 0000000..aaeda73
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBooktitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:booktitle}.
+ *
+ */
+public class TextBooktitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "booktitle");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:booktitle}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextBooktitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:booktitle}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:booktitle}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:booktitle} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBulletCharAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBulletCharAttribute.java
new file mode 100644
index 0000000..87ce13c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBulletCharAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:bullet-char}.
+ *
+ */
+public class TextBulletCharAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bullet-char");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:bullet-char}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextBulletCharAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:bullet-char}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:bullet-char}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:bullet-char} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBulletRelativeSizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBulletRelativeSizeAttribute.java
new file mode 100644
index 0000000..0bc13e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextBulletRelativeSizeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:bullet-relative-size}.
+ *
+ */
+public class TextBulletRelativeSizeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bullet-relative-size");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:bullet-relative-size}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextBulletRelativeSizeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:bullet-relative-size}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:bullet-relative-size}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:bullet-relative-size} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCAttribute.java
new file mode 100644
index 0000000..fd65a9d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:c}.
+ *
+ */
+public class TextCAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "c");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:c}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:c}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:c}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:c} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCapitalizeEntriesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCapitalizeEntriesAttribute.java
new file mode 100644
index 0000000..8736bd3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCapitalizeEntriesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:capitalize-entries}.
+ *
+ */
+public class TextCapitalizeEntriesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "capitalize-entries");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:capitalize-entries}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCapitalizeEntriesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:capitalize-entries}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:capitalize-entries}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:capitalize-entries} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCaptionSequenceFormatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCaptionSequenceFormatAttribute.java
new file mode 100644
index 0000000..6c1327c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCaptionSequenceFormatAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:caption-sequence-format}.
+ *
+ */
+public class TextCaptionSequenceFormatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "caption-sequence-format");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:caption-sequence-format}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCaptionSequenceFormatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:caption-sequence-format}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:caption-sequence-format}.
+	 */
+	public enum Value {
+		CAPTION("caption"), CATEGORY_AND_VALUE("category-and-value"), TEXT("text") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:caption-sequence-format}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:caption-sequence-format} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCaptionSequenceNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCaptionSequenceNameAttribute.java
new file mode 100644
index 0000000..1ff218d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCaptionSequenceNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:caption-sequence-name}.
+ *
+ */
+public class TextCaptionSequenceNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "caption-sequence-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:caption-sequence-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCaptionSequenceNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:caption-sequence-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:caption-sequence-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:caption-sequence-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextChangeIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextChangeIdAttribute.java
new file mode 100644
index 0000000..b1ad4da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextChangeIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:change-id}.
+ *
+ */
+public class TextChangeIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "change-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:change-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextChangeIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:change-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:change-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:change-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextChapterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextChapterAttribute.java
new file mode 100644
index 0000000..a29a705
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextChapterAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:chapter}.
+ *
+ */
+public class TextChapterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "chapter");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:chapter}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextChapterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:chapter}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:chapter}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:chapter} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCitationBodyStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCitationBodyStyleNameAttribute.java
new file mode 100644
index 0000000..993c725
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCitationBodyStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:citation-body-style-name}.
+ *
+ */
+public class TextCitationBodyStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "citation-body-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:citation-body-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCitationBodyStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:citation-body-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:citation-body-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:citation-body-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCitationStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCitationStyleNameAttribute.java
new file mode 100644
index 0000000..1f3ae3b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCitationStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:citation-style-name}.
+ *
+ */
+public class TextCitationStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "citation-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:citation-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCitationStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:citation-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:citation-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:citation-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextClassNamesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextClassNamesAttribute.java
new file mode 100644
index 0000000..3913510
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextClassNamesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:class-names}.
+ *
+ */
+public class TextClassNamesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "class-names");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:class-names}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextClassNamesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:class-names}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:class-names}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:class-names} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextColumnNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextColumnNameAttribute.java
new file mode 100644
index 0000000..9cf96b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextColumnNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:column-name}.
+ *
+ */
+public class TextColumnNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "column-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:column-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextColumnNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:column-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:column-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:column-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesAttribute.java
new file mode 100644
index 0000000..19af562
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:combine-entries}.
+ *
+ */
+public class TextCombineEntriesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "combine-entries");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:combine-entries}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCombineEntriesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:combine-entries}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:combine-entries}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:combine-entries} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesWithDashAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesWithDashAttribute.java
new file mode 100644
index 0000000..0ffa9ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesWithDashAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:combine-entries-with-dash}.
+ *
+ */
+public class TextCombineEntriesWithDashAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "combine-entries-with-dash");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:combine-entries-with-dash}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCombineEntriesWithDashAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:combine-entries-with-dash}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:combine-entries-with-dash}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:combine-entries-with-dash} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesWithPpAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesWithPpAttribute.java
new file mode 100644
index 0000000..49c1fa0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCombineEntriesWithPpAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:combine-entries-with-pp}.
+ *
+ */
+public class TextCombineEntriesWithPpAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "combine-entries-with-pp");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:combine-entries-with-pp}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCombineEntriesWithPpAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:combine-entries-with-pp}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:combine-entries-with-pp}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:combine-entries-with-pp} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCommaSeparatedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCommaSeparatedAttribute.java
new file mode 100644
index 0000000..c7169f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCommaSeparatedAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:comma-separated}.
+ *
+ */
+public class TextCommaSeparatedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "comma-separated");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:comma-separated}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCommaSeparatedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:comma-separated}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:comma-separated}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:comma-separated} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCondStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCondStyleNameAttribute.java
new file mode 100644
index 0000000..50e1fee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCondStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:cond-style-name}.
+ *
+ */
+public class TextCondStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "cond-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:cond-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCondStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:cond-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:cond-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:cond-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConditionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConditionAttribute.java
new file mode 100644
index 0000000..13086d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConditionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:condition}.
+ *
+ */
+public class TextConditionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "condition");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:condition}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextConditionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:condition}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:condition}.
+	 */
+	public enum Value {
+		NONE("none") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:condition}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:condition} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConnectionNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConnectionNameAttribute.java
new file mode 100644
index 0000000..8872092
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConnectionNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:connection-name}.
+ *
+ */
+public class TextConnectionNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "connection-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:connection-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextConnectionNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:connection-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:connection-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:connection-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConsecutiveNumberingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConsecutiveNumberingAttribute.java
new file mode 100644
index 0000000..0dcb090
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextConsecutiveNumberingAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:consecutive-numbering}.
+ *
+ */
+public class TextConsecutiveNumberingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "consecutive-numbering");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:consecutive-numbering}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextConsecutiveNumberingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:consecutive-numbering}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:consecutive-numbering}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:consecutive-numbering} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextContinueListAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextContinueListAttribute.java
new file mode 100644
index 0000000..ea4356d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextContinueListAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:continue-list}.
+ *
+ */
+public class TextContinueListAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "continue-list");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:continue-list}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextContinueListAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:continue-list}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:continue-list}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:continue-list} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextContinueNumberingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextContinueNumberingAttribute.java
new file mode 100644
index 0000000..613476a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextContinueNumberingAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:continue-numbering}.
+ *
+ */
+public class TextContinueNumberingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "continue-numbering");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:continue-numbering}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextContinueNumberingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:continue-numbering}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:continue-numbering}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:continue-numbering} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCopyOutlineLevelsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCopyOutlineLevelsAttribute.java
new file mode 100644
index 0000000..517b663
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCopyOutlineLevelsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:copy-outline-levels}.
+ *
+ */
+public class TextCopyOutlineLevelsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "copy-outline-levels");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:copy-outline-levels}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCopyOutlineLevelsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:copy-outline-levels}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:copy-outline-levels}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:copy-outline-levels} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCountEmptyLinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCountEmptyLinesAttribute.java
new file mode 100644
index 0000000..f376d51
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCountEmptyLinesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:count-empty-lines}.
+ *
+ */
+public class TextCountEmptyLinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "count-empty-lines");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:count-empty-lines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCountEmptyLinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:count-empty-lines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:count-empty-lines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:count-empty-lines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCountInTextBoxesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCountInTextBoxesAttribute.java
new file mode 100644
index 0000000..eb206b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCountInTextBoxesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:count-in-text-boxes}.
+ *
+ */
+public class TextCountInTextBoxesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "count-in-text-boxes");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:count-in-text-boxes}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCountInTextBoxesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:count-in-text-boxes}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:count-in-text-boxes}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:count-in-text-boxes} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCurrentValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCurrentValueAttribute.java
new file mode 100644
index 0000000..94b80c6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCurrentValueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:current-value}.
+ *
+ */
+public class TextCurrentValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "current-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:current-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCurrentValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:current-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:current-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:current-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom1Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom1Attribute.java
new file mode 100644
index 0000000..a096bea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom1Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:custom1}.
+ *
+ */
+public class TextCustom1Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "custom1");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:custom1}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCustom1Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:custom1}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:custom1}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:custom1} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom2Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom2Attribute.java
new file mode 100644
index 0000000..ffc76d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom2Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:custom2}.
+ *
+ */
+public class TextCustom2Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "custom2");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:custom2}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCustom2Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:custom2}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:custom2}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:custom2} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom3Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom3Attribute.java
new file mode 100644
index 0000000..416a859
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom3Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:custom3}.
+ *
+ */
+public class TextCustom3Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "custom3");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:custom3}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCustom3Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:custom3}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:custom3}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:custom3} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom4Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom4Attribute.java
new file mode 100644
index 0000000..5ee116e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom4Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:custom4}.
+ *
+ */
+public class TextCustom4Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "custom4");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:custom4}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCustom4Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:custom4}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:custom4}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:custom4} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom5Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom5Attribute.java
new file mode 100644
index 0000000..163bf29
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextCustom5Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:custom5}.
+ *
+ */
+public class TextCustom5Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "custom5");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:custom5}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextCustom5Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:custom5}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:custom5}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:custom5} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDatabaseNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDatabaseNameAttribute.java
new file mode 100644
index 0000000..f529fc1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDatabaseNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:database-name}.
+ *
+ */
+public class TextDatabaseNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "database-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:database-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDatabaseNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:database-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:database-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:database-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDateAdjustAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDateAdjustAttribute.java
new file mode 100644
index 0000000..823e778
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDateAdjustAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:date-adjust}.
+ *
+ */
+public class TextDateAdjustAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "date-adjust");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:date-adjust}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDateAdjustAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:date-adjust}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:date-adjust}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:date-adjust} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDateValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDateValueAttribute.java
new file mode 100644
index 0000000..bc7fc6c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDateValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:date-value}.
+ *
+ */
+public class TextDateValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "date-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:date-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDateValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:date-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:date-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:date-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDefaultStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDefaultStyleNameAttribute.java
new file mode 100644
index 0000000..636ad41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDefaultStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:default-style-name}.
+ *
+ */
+public class TextDefaultStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "default-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:default-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDefaultStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:default-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:default-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:default-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDescriptionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDescriptionAttribute.java
new file mode 100644
index 0000000..78999c1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDescriptionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:description}.
+ *
+ */
+public class TextDescriptionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "description");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:description}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDescriptionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:description}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:description}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:description} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayAttribute.java
new file mode 100644
index 0000000..308fc3f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:display}.
+ *
+ */
+public class TextDisplayAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "display");
+	public static final String DEFAULT_VALUE = "number";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:display}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDisplayAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:display}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:display}.
+	 */
+	public enum Value {
+		AREA("area"), CONDITION("condition"), FORMULA("formula"), FULL("full"), NAME("name"), NAME_AND_EXTENSION("name-and-extension"), NONE("none"), NUMBER("number"), NUMBER_AND_NAME("number-and-name"), PATH("path"), PLAIN_NUMBER("plain-number"), PLAIN_NUMBER_AND_NAME("plain-number-and-name"), TITLE("title"), TRUE("true"), VALUE("value") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:display}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:display} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayLevelsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayLevelsAttribute.java
new file mode 100644
index 0000000..20d5343
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayLevelsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:display-levels}.
+ *
+ */
+public class TextDisplayLevelsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "display-levels");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:display-levels}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDisplayLevelsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:display-levels}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:display-levels}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:display-levels} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayOutlineLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayOutlineLevelAttribute.java
new file mode 100644
index 0000000..815f0a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDisplayOutlineLevelAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:display-outline-level}.
+ *
+ */
+public class TextDisplayOutlineLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "display-outline-level");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:display-outline-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDisplayOutlineLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:display-outline-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:display-outline-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:display-outline-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDontBalanceTextColumnsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDontBalanceTextColumnsAttribute.java
new file mode 100644
index 0000000..070a94a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDontBalanceTextColumnsAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:dont-balance-text-columns}.
+ *
+ */
+public class TextDontBalanceTextColumnsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "dont-balance-text-columns");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:dont-balance-text-columns}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDontBalanceTextColumnsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:dont-balance-text-columns}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:dont-balance-text-columns}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:dont-balance-text-columns} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDurationAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDurationAttribute.java
new file mode 100644
index 0000000..6a4db0d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextDurationAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:duration}.
+ *
+ */
+public class TextDurationAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "duration");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:duration}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextDurationAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:duration}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:duration}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:duration} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextEditionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextEditionAttribute.java
new file mode 100644
index 0000000..bc5d026
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextEditionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:edition}.
+ *
+ */
+public class TextEditionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "edition");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:edition}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextEditionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:edition}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:edition}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:edition} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextEditorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextEditorAttribute.java
new file mode 100644
index 0000000..12beb0d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextEditorAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:editor}.
+ *
+ */
+public class TextEditorAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "editor");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:editor}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextEditorAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:editor}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:editor}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:editor} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFilterNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFilterNameAttribute.java
new file mode 100644
index 0000000..5fc3a1a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFilterNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:filter-name}.
+ *
+ */
+public class TextFilterNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "filter-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:filter-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextFilterNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:filter-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:filter-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:filter-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFixedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFixedAttribute.java
new file mode 100644
index 0000000..e0ecc01
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFixedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:fixed}.
+ *
+ */
+public class TextFixedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "fixed");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:fixed}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextFixedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:fixed}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:fixed}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:fixed} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFootnotesPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFootnotesPositionAttribute.java
new file mode 100644
index 0000000..2d0af2b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFootnotesPositionAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:footnotes-position}.
+ *
+ */
+public class TextFootnotesPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "footnotes-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:footnotes-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextFootnotesPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:footnotes-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:footnotes-position}.
+	 */
+	public enum Value {
+		DOCUMENT("document"), PAGE("page"), SECTION("section"), TEXT("text") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:footnotes-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:footnotes-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFormulaAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFormulaAttribute.java
new file mode 100644
index 0000000..344b361
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextFormulaAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:formula}.
+ *
+ */
+public class TextFormulaAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "formula");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:formula}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextFormulaAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:formula}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:formula}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:formula} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextGlobalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextGlobalAttribute.java
new file mode 100644
index 0000000..8da1816
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextGlobalAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:global}.
+ *
+ */
+public class TextGlobalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "global");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:global}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextGlobalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:global}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:global}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:global} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextHowpublishedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextHowpublishedAttribute.java
new file mode 100644
index 0000000..1eed8fc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextHowpublishedAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:howpublished}.
+ *
+ */
+public class TextHowpublishedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "howpublished");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:howpublished}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextHowpublishedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:howpublished}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:howpublished}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:howpublished} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIdAttribute.java
new file mode 100644
index 0000000..8f1c4ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:id}.
+ *
+ */
+public class TextIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIdentifierAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIdentifierAttribute.java
new file mode 100644
index 0000000..ef893a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIdentifierAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:identifier}.
+ *
+ */
+public class TextIdentifierAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "identifier");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:identifier}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIdentifierAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:identifier}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:identifier}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:identifier} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIgnoreCaseAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIgnoreCaseAttribute.java
new file mode 100644
index 0000000..98c8deb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIgnoreCaseAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:ignore-case}.
+ *
+ */
+public class TextIgnoreCaseAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "ignore-case");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:ignore-case}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIgnoreCaseAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:ignore-case}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:ignore-case}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:ignore-case} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIncrementAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIncrementAttribute.java
new file mode 100644
index 0000000..843ac4a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIncrementAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:increment}.
+ *
+ */
+public class TextIncrementAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "increment");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:increment}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIncrementAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:increment}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:increment}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:increment} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIndexNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIndexNameAttribute.java
new file mode 100644
index 0000000..8b47a23
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIndexNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:index-name}.
+ *
+ */
+public class TextIndexNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:index-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:index-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:index-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:index-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIndexScopeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIndexScopeAttribute.java
new file mode 100644
index 0000000..bacb48b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIndexScopeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:index-scope}.
+ *
+ */
+public class TextIndexScopeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-scope");
+	public static final String DEFAULT_VALUE = "document";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:index-scope}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexScopeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:index-scope}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:index-scope}.
+	 */
+	public enum Value {
+		CHAPTER("chapter"), DOCUMENT("document") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:index-scope}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:index-scope} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextInstitutionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextInstitutionAttribute.java
new file mode 100644
index 0000000..7355223
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextInstitutionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:institution}.
+ *
+ */
+public class TextInstitutionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "institution");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:institution}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextInstitutionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:institution}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:institution}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:institution} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsHiddenAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsHiddenAttribute.java
new file mode 100644
index 0000000..47f5213
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsHiddenAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:is-hidden}.
+ *
+ */
+public class TextIsHiddenAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "is-hidden");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:is-hidden}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIsHiddenAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:is-hidden}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:is-hidden}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:is-hidden} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsListHeaderAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsListHeaderAttribute.java
new file mode 100644
index 0000000..c685308
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsListHeaderAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:is-list-header}.
+ *
+ */
+public class TextIsListHeaderAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "is-list-header");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:is-list-header}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIsListHeaderAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:is-list-header}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:is-list-header}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:is-list-header} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsbnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsbnAttribute.java
new file mode 100644
index 0000000..345353e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIsbnAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:isbn}.
+ *
+ */
+public class TextIsbnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "isbn");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:isbn}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIsbnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:isbn}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:isbn}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:isbn} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIssnAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIssnAttribute.java
new file mode 100644
index 0000000..474b6c1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextIssnAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:issn}.
+ *
+ */
+public class TextIssnAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "issn");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:issn}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextIssnAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:issn}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:issn}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:issn} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextJournalAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextJournalAttribute.java
new file mode 100644
index 0000000..ff70268
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextJournalAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:journal}.
+ *
+ */
+public class TextJournalAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "journal");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:journal}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextJournalAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:journal}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:journal}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:journal} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey1Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey1Attribute.java
new file mode 100644
index 0000000..b6a828c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey1Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:key1}.
+ *
+ */
+public class TextKey1Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "key1");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:key1}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextKey1Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:key1}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:key1}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:key1} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey1PhoneticAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey1PhoneticAttribute.java
new file mode 100644
index 0000000..11ebfec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey1PhoneticAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:key1-phonetic}.
+ *
+ */
+public class TextKey1PhoneticAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "key1-phonetic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:key1-phonetic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextKey1PhoneticAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:key1-phonetic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:key1-phonetic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:key1-phonetic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey2Attribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey2Attribute.java
new file mode 100644
index 0000000..eccff42
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey2Attribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:key2}.
+ *
+ */
+public class TextKey2Attribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "key2");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:key2}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextKey2Attribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:key2}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:key2}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:key2} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey2PhoneticAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey2PhoneticAttribute.java
new file mode 100644
index 0000000..7efc70e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKey2PhoneticAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:key2-phonetic}.
+ *
+ */
+public class TextKey2PhoneticAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "key2-phonetic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:key2-phonetic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextKey2PhoneticAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:key2-phonetic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:key2-phonetic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:key2-phonetic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKeyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKeyAttribute.java
new file mode 100644
index 0000000..8653fe5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKeyAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:key}.
+ *
+ */
+public class TextKeyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "key");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:key}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextKeyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:key}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:key}.
+	 */
+	public enum Value {
+		ADDRESS("address"), ANNOTE("annote"), AUTHOR("author"), BIBLIOGRAPHY_TYPE("bibliography-type"), BOOKTITLE("booktitle"), CHAPTER("chapter"), CUSTOM1("custom1"), CUSTOM2("custom2"), CUSTOM3("custom3"), CUSTOM4("custom4"), CUSTOM5("custom5"), EDITION("edition"), EDITOR("editor"), HOWPUBLISHED("howpublished"), IDENTIFIER("identifier"), INSTITUTION("institution"), ISBN("isbn"), ISSN("issn"), JOURNAL("journal"), MONTH("month"), NOTE("note"), NUMBER("number"), ORGANIZATIONS("organizations"), PAGES("pages"), PUBLISHER("publisher"), REPORT_TYPE("report-type"), SCHOOL("school"), SERIES("series"), TITLE("title"), URL("url"), VOLUME("volume"), YEAR("year") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:key}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:key} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKindAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKindAttribute.java
new file mode 100644
index 0000000..d5d9b03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextKindAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:kind}.
+ *
+ */
+public class TextKindAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "kind");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:kind}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextKindAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:kind}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:kind}.
+	 */
+	public enum Value {
+		GAP("gap"), UNIT("unit"), VALUE("value") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:kind}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:kind} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLabelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLabelAttribute.java
new file mode 100644
index 0000000..256e0e7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLabelAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:label}.
+ *
+ */
+public class TextLabelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "label");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:label}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextLabelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:label}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:label}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:label} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLabelFollowedByAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLabelFollowedByAttribute.java
new file mode 100644
index 0000000..caa8df8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLabelFollowedByAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:label-followed-by}.
+ *
+ */
+public class TextLabelFollowedByAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "label-followed-by");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:label-followed-by}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextLabelFollowedByAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:label-followed-by}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:label-followed-by}.
+	 */
+	public enum Value {
+		LISTTAB("listtab"), NOTHING("nothing"), SPACE("space") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:label-followed-by}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:label-followed-by} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLevelAttribute.java
new file mode 100644
index 0000000..16d0a39
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLevelAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:level}.
+ *
+ */
+public class TextLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "level");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLineBreakAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLineBreakAttribute.java
new file mode 100644
index 0000000..9aa9835
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLineBreakAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:line-break}.
+ *
+ */
+public class TextLineBreakAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "line-break");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:line-break}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextLineBreakAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:line-break}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:line-break}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:line-break} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLineNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLineNumberAttribute.java
new file mode 100644
index 0000000..d49be52
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextLineNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:line-number}.
+ *
+ */
+public class TextLineNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "line-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:line-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextLineNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:line-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:line-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:line-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListIdAttribute.java
new file mode 100644
index 0000000..2f35c4f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:list-id}.
+ *
+ */
+public class TextListIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:list-id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextListIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:list-id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:list-id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:list-id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListLevelPositionAndSpaceModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListLevelPositionAndSpaceModeAttribute.java
new file mode 100644
index 0000000..eef7ac2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListLevelPositionAndSpaceModeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:list-level-position-and-space-mode}.
+ *
+ */
+public class TextListLevelPositionAndSpaceModeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-level-position-and-space-mode");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:list-level-position-and-space-mode}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextListLevelPositionAndSpaceModeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:list-level-position-and-space-mode}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:list-level-position-and-space-mode}.
+	 */
+	public enum Value {
+		LABEL_ALIGNMENT("label-alignment"), LABEL_WIDTH_AND_POSITION("label-width-and-position") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:list-level-position-and-space-mode}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:list-level-position-and-space-mode} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListTabStopPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListTabStopPositionAttribute.java
new file mode 100644
index 0000000..fe12c7c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextListTabStopPositionAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:list-tab-stop-position}.
+ *
+ */
+public class TextListTabStopPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-tab-stop-position");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:list-tab-stop-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextListTabStopPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:list-tab-stop-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:list-tab-stop-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:list-tab-stop-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMainEntryAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMainEntryAttribute.java
new file mode 100644
index 0000000..e9a4e07
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMainEntryAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:main-entry}.
+ *
+ */
+public class TextMainEntryAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "main-entry");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:main-entry}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextMainEntryAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:main-entry}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:main-entry}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:main-entry} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMainEntryStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMainEntryStyleNameAttribute.java
new file mode 100644
index 0000000..2bbd82b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMainEntryStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:main-entry-style-name}.
+ *
+ */
+public class TextMainEntryStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "main-entry-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:main-entry-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextMainEntryStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:main-entry-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:main-entry-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:main-entry-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMasterPageNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMasterPageNameAttribute.java
new file mode 100644
index 0000000..7414990
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMasterPageNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:master-page-name}.
+ *
+ */
+public class TextMasterPageNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "master-page-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:master-page-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextMasterPageNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:master-page-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:master-page-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:master-page-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMinLabelDistanceAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMinLabelDistanceAttribute.java
new file mode 100644
index 0000000..2882ddf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMinLabelDistanceAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:min-label-distance}.
+ *
+ */
+public class TextMinLabelDistanceAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "min-label-distance");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:min-label-distance}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextMinLabelDistanceAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:min-label-distance}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:min-label-distance}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:min-label-distance} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMinLabelWidthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMinLabelWidthAttribute.java
new file mode 100644
index 0000000..942b4e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMinLabelWidthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:min-label-width}.
+ *
+ */
+public class TextMinLabelWidthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "min-label-width");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:min-label-width}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextMinLabelWidthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:min-label-width}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:min-label-width}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:min-label-width} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMonthAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMonthAttribute.java
new file mode 100644
index 0000000..6c254a4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextMonthAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:month}.
+ *
+ */
+public class TextMonthAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "month");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:month}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextMonthAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:month}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:month}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:month} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNameAttribute.java
new file mode 100644
index 0000000..eff20ba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:name}.
+ *
+ */
+public class TextNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNoteAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNoteAttribute.java
new file mode 100644
index 0000000..efd3c7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNoteAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:note}.
+ *
+ */
+public class TextNoteAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:note}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:note}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:note}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:note} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNoteClassAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNoteClassAttribute.java
new file mode 100644
index 0000000..bfbfc8b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNoteClassAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:note-class}.
+ *
+ */
+public class TextNoteClassAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note-class");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:note-class}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteClassAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:note-class}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:note-class}.
+	 */
+	public enum Value {
+		ENDNOTE("endnote"), FOOTNOTE("footnote") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:note-class}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:note-class} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberAttribute.java
new file mode 100644
index 0000000..312180a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:number}.
+ *
+ */
+public class TextNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberLinesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberLinesAttribute.java
new file mode 100644
index 0000000..7d02df1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberLinesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:number-lines}.
+ *
+ */
+public class TextNumberLinesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "number-lines");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:number-lines}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNumberLinesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:number-lines}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:number-lines}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:number-lines} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberPositionAttribute.java
new file mode 100644
index 0000000..d29b308
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberPositionAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:number-position}.
+ *
+ */
+public class TextNumberPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "number-position");
+	public static final String DEFAULT_VALUE = "left";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:number-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNumberPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:number-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:number-position}.
+	 */
+	public enum Value {
+		INNER("inner"), LEFT("left"), OUTER("outer"), RIGHT("right") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:number-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:number-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberedEntriesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberedEntriesAttribute.java
new file mode 100644
index 0000000..f7fce0e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextNumberedEntriesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:numbered-entries}.
+ *
+ */
+public class TextNumberedEntriesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "numbered-entries");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:numbered-entries}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextNumberedEntriesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:numbered-entries}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:numbered-entries}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:numbered-entries} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOffsetAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOffsetAttribute.java
new file mode 100644
index 0000000..29fd046
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOffsetAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:offset}.
+ *
+ */
+public class TextOffsetAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "offset");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:offset}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextOffsetAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:offset}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:offset}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:offset} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOrganizationsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOrganizationsAttribute.java
new file mode 100644
index 0000000..af28a32
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOrganizationsAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:organizations}.
+ *
+ */
+public class TextOrganizationsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "organizations");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:organizations}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextOrganizationsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:organizations}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:organizations}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:organizations} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOutlineLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOutlineLevelAttribute.java
new file mode 100644
index 0000000..4d3b0fe
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextOutlineLevelAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:outline-level}.
+ *
+ */
+public class TextOutlineLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "outline-level");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:outline-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextOutlineLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:outline-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:outline-level}.
+	 */
+	public enum Value {
+		_1("1"), _2("2"), _3("3"), SEPARATOR("separator") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:outline-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:outline-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPageAdjustAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPageAdjustAttribute.java
new file mode 100644
index 0000000..9874dbf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPageAdjustAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:page-adjust}.
+ *
+ */
+public class TextPageAdjustAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-adjust");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:page-adjust}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextPageAdjustAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:page-adjust}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:page-adjust}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:page-adjust} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPagesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPagesAttribute.java
new file mode 100644
index 0000000..f9165f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPagesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:pages}.
+ *
+ */
+public class TextPagesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "pages");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:pages}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextPagesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:pages}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:pages}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:pages} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPlaceholderTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPlaceholderTypeAttribute.java
new file mode 100644
index 0000000..0d16f91
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPlaceholderTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:placeholder-type}.
+ *
+ */
+public class TextPlaceholderTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "placeholder-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:placeholder-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextPlaceholderTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:placeholder-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:placeholder-type}.
+	 */
+	public enum Value {
+		IMAGE("image"), OBJECT("object"), TABLE("table"), TEXT("text"), TEXT_BOX("text-box") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:placeholder-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:placeholder-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPrefixAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPrefixAttribute.java
new file mode 100644
index 0000000..5b2369a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPrefixAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:prefix}.
+ *
+ */
+public class TextPrefixAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "prefix");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:prefix}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextPrefixAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:prefix}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:prefix}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:prefix} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectedAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectedAttribute.java
new file mode 100644
index 0000000..e1794ac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectedAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:protected}.
+ *
+ */
+public class TextProtectedAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "protected");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:protected}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextProtectedAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:protected}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:protected}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:protected} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectionKeyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectionKeyAttribute.java
new file mode 100644
index 0000000..09e4033
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectionKeyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:protection-key}.
+ *
+ */
+public class TextProtectionKeyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "protection-key");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:protection-key}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextProtectionKeyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:protection-key}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:protection-key}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:protection-key} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectionKeyDigestAlgorithmAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectionKeyDigestAlgorithmAttribute.java
new file mode 100644
index 0000000..fdfa9b5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextProtectionKeyDigestAlgorithmAttribute.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:protection-key-digest-algorithm}.
+ *
+ */
+public class TextProtectionKeyDigestAlgorithmAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+	public static final String DEFAULT_VALUE = "http://www.w3.org/2000/09/xmldsig#sha1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:protection-key-digest-algorithm}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextProtectionKeyDigestAlgorithmAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:protection-key-digest-algorithm}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:protection-key-digest-algorithm}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:protection-key-digest-algorithm} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPublisherAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPublisherAttribute.java
new file mode 100644
index 0000000..f1ef3be
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextPublisherAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:publisher}.
+ *
+ */
+public class TextPublisherAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "publisher");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:publisher}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextPublisherAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:publisher}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:publisher}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:publisher} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRefNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRefNameAttribute.java
new file mode 100644
index 0000000..b9216f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRefNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:ref-name}.
+ *
+ */
+public class TextRefNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "ref-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:ref-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextRefNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:ref-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:ref-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:ref-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextReferenceFormatAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextReferenceFormatAttribute.java
new file mode 100644
index 0000000..fd95f05
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextReferenceFormatAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:reference-format}.
+ *
+ */
+public class TextReferenceFormatAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "reference-format");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:reference-format}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextReferenceFormatAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:reference-format}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:reference-format}.
+	 */
+	public enum Value {
+		CAPTION("caption"), CATEGORY_AND_VALUE("category-and-value"), CHAPTER("chapter"), DIRECTION("direction"), NUMBER("number"), NUMBER_ALL_SUPERIOR("number-all-superior"), NUMBER_NO_SUPERIOR("number-no-superior"), PAGE("page"), TEXT("text"), VALUE("value") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:reference-format}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:reference-format} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRelativeTabStopPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRelativeTabStopPositionAttribute.java
new file mode 100644
index 0000000..3058b00
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRelativeTabStopPositionAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:relative-tab-stop-position}.
+ *
+ */
+public class TextRelativeTabStopPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:relative-tab-stop-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextRelativeTabStopPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:relative-tab-stop-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:relative-tab-stop-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:relative-tab-stop-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextReportTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextReportTypeAttribute.java
new file mode 100644
index 0000000..5ec3bc2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextReportTypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:report-type}.
+ *
+ */
+public class TextReportTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "report-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:report-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextReportTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:report-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:report-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:report-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRestartNumberingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRestartNumberingAttribute.java
new file mode 100644
index 0000000..a8b336e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRestartNumberingAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:restart-numbering}.
+ *
+ */
+public class TextRestartNumberingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "restart-numbering");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:restart-numbering}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextRestartNumberingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:restart-numbering}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:restart-numbering}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:restart-numbering} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRestartOnPageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRestartOnPageAttribute.java
new file mode 100644
index 0000000..ca0d3ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRestartOnPageAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:restart-on-page}.
+ *
+ */
+public class TextRestartOnPageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "restart-on-page");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:restart-on-page}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextRestartOnPageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:restart-on-page}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:restart-on-page}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:restart-on-page} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRowNumberAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRowNumberAttribute.java
new file mode 100644
index 0000000..23f5110
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextRowNumberAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:row-number}.
+ *
+ */
+public class TextRowNumberAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "row-number");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:row-number}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextRowNumberAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:row-number}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:row-number}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:row-number} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSchoolAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSchoolAttribute.java
new file mode 100644
index 0000000..b32121f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSchoolAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:school}.
+ *
+ */
+public class TextSchoolAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "school");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:school}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSchoolAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:school}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:school}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:school} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSectionNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSectionNameAttribute.java
new file mode 100644
index 0000000..e57a003
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSectionNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:section-name}.
+ *
+ */
+public class TextSectionNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "section-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:section-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSectionNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:section-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:section-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:section-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSelectPageAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSelectPageAttribute.java
new file mode 100644
index 0000000..8795fa8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSelectPageAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:select-page}.
+ *
+ */
+public class TextSelectPageAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "select-page");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:select-page}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSelectPageAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:select-page}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:select-page}.
+	 */
+	public enum Value {
+		CURRENT("current"), NEXT("next"), PREVIOUS("previous") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:select-page}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:select-page} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSeparationCharacterAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSeparationCharacterAttribute.java
new file mode 100644
index 0000000..6b59435
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSeparationCharacterAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:separation-character}.
+ *
+ */
+public class TextSeparationCharacterAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "separation-character");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:separation-character}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSeparationCharacterAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:separation-character}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:separation-character}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:separation-character} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSeriesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSeriesAttribute.java
new file mode 100644
index 0000000..764f8f5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSeriesAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:series}.
+ *
+ */
+public class TextSeriesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "series");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:series}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSeriesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:series}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:series}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:series} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortAlgorithmAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortAlgorithmAttribute.java
new file mode 100644
index 0000000..5c5f566
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortAlgorithmAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:sort-algorithm}.
+ *
+ */
+public class TextSortAlgorithmAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sort-algorithm");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:sort-algorithm}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSortAlgorithmAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:sort-algorithm}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:sort-algorithm}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:sort-algorithm} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortAscendingAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortAscendingAttribute.java
new file mode 100644
index 0000000..6b52950
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortAscendingAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:sort-ascending}.
+ *
+ */
+public class TextSortAscendingAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sort-ascending");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:sort-ascending}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSortAscendingAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:sort-ascending}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:sort-ascending}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:sort-ascending} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortByPositionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortByPositionAttribute.java
new file mode 100644
index 0000000..0ee074a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSortByPositionAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:sort-by-position}.
+ *
+ */
+public class TextSortByPositionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sort-by-position");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:sort-by-position}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSortByPositionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:sort-by-position}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:sort-by-position}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:sort-by-position} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSpaceBeforeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSpaceBeforeAttribute.java
new file mode 100644
index 0000000..4558711
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSpaceBeforeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:space-before}.
+ *
+ */
+public class TextSpaceBeforeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "space-before");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:space-before}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSpaceBeforeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:space-before}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:space-before}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:space-before} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStartNumberingAtAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStartNumberingAtAttribute.java
new file mode 100644
index 0000000..25c33ee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStartNumberingAtAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:start-numbering-at}.
+ *
+ */
+public class TextStartNumberingAtAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "start-numbering-at");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:start-numbering-at}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStartNumberingAtAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:start-numbering-at}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:start-numbering-at}.
+	 */
+	public enum Value {
+		CHAPTER("chapter"), DOCUMENT("document"), PAGE("page") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:start-numbering-at}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:start-numbering-at} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStartValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStartValueAttribute.java
new file mode 100644
index 0000000..432e373
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStartValueAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:start-value}.
+ *
+ */
+public class TextStartValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "start-value");
+	public static final String DEFAULT_VALUE = "1";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:start-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStartValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:start-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:start-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:start-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueAttribute.java
new file mode 100644
index 0000000..eaa2daa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:string-value}.
+ *
+ */
+public class TextStringValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "string-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:string-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStringValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:string-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:string-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:string-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueIfFalseAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueIfFalseAttribute.java
new file mode 100644
index 0000000..0a141d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueIfFalseAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:string-value-if-false}.
+ *
+ */
+public class TextStringValueIfFalseAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "string-value-if-false");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:string-value-if-false}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStringValueIfFalseAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:string-value-if-false}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:string-value-if-false}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:string-value-if-false} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueIfTrueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueIfTrueAttribute.java
new file mode 100644
index 0000000..9824cce
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValueIfTrueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:string-value-if-true}.
+ *
+ */
+public class TextStringValueIfTrueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "string-value-if-true");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:string-value-if-true}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStringValueIfTrueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:string-value-if-true}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:string-value-if-true}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:string-value-if-true} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValuePhoneticAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValuePhoneticAttribute.java
new file mode 100644
index 0000000..61e1267
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStringValuePhoneticAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:string-value-phonetic}.
+ *
+ */
+public class TextStringValuePhoneticAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "string-value-phonetic");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:string-value-phonetic}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStringValuePhoneticAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:string-value-phonetic}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:string-value-phonetic}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:string-value-phonetic} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStyleNameAttribute.java
new file mode 100644
index 0000000..01cea91
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:style-name}.
+ *
+ */
+public class TextStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStyleOverrideAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStyleOverrideAttribute.java
new file mode 100644
index 0000000..6a96d9e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextStyleOverrideAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:style-override}.
+ *
+ */
+public class TextStyleOverrideAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "style-override");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:style-override}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextStyleOverrideAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:style-override}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:style-override}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:style-override} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSuffixAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSuffixAttribute.java
new file mode 100644
index 0000000..33656d3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextSuffixAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:suffix}.
+ *
+ */
+public class TextSuffixAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "suffix");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:suffix}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextSuffixAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:suffix}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:suffix}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:suffix} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTabRefAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTabRefAttribute.java
new file mode 100644
index 0000000..24a0f3a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTabRefAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:tab-ref}.
+ *
+ */
+public class TextTabRefAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "tab-ref");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:tab-ref}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTabRefAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:tab-ref}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:tab-ref}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:tab-ref} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTableNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTableNameAttribute.java
new file mode 100644
index 0000000..291580b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTableNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:table-name}.
+ *
+ */
+public class TextTableNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:table-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTableNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:table-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:table-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:table-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTableTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTableTypeAttribute.java
new file mode 100644
index 0000000..8028e8b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTableTypeAttribute.java
@@ -0,0 +1,139 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:table-type}.
+ *
+ */
+public class TextTableTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-type");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:table-type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTableTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:table-type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute text:table-type}.
+	 */
+	public enum Value {
+		COMMAND("command"), QUERY("query"), TABLE("table") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:table-type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:table-type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTimeAdjustAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTimeAdjustAttribute.java
new file mode 100644
index 0000000..d83055b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTimeAdjustAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:time-adjust}.
+ *
+ */
+public class TextTimeAdjustAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "time-adjust");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:time-adjust}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTimeAdjustAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:time-adjust}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:time-adjust}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:time-adjust} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTimeValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTimeValueAttribute.java
new file mode 100644
index 0000000..b8d5ee8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTimeValueAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:time-value}.
+ *
+ */
+public class TextTimeValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "time-value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:time-value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTimeValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:time-value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:time-value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:time-value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTitleAttribute.java
new file mode 100644
index 0000000..226f3ff
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:title}.
+ *
+ */
+public class TextTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTrackChangesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTrackChangesAttribute.java
new file mode 100644
index 0000000..abf399a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextTrackChangesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:track-changes}.
+ *
+ */
+public class TextTrackChangesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "track-changes");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:track-changes}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextTrackChangesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:track-changes}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:track-changes}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:track-changes} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUrlAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUrlAttribute.java
new file mode 100644
index 0000000..55fa52c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUrlAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:url}.
+ *
+ */
+public class TextUrlAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "url");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:url}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUrlAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:url}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:url}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:url} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseCaptionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseCaptionAttribute.java
new file mode 100644
index 0000000..586c970
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseCaptionAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-caption}.
+ *
+ */
+public class TextUseCaptionAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-caption");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-caption}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseCaptionAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-caption}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-caption}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-caption} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseChartObjectsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseChartObjectsAttribute.java
new file mode 100644
index 0000000..cbc9f95
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseChartObjectsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-chart-objects}.
+ *
+ */
+public class TextUseChartObjectsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-chart-objects");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-chart-objects}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseChartObjectsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-chart-objects}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-chart-objects}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-chart-objects} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseDrawObjectsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseDrawObjectsAttribute.java
new file mode 100644
index 0000000..52ee900
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseDrawObjectsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-draw-objects}.
+ *
+ */
+public class TextUseDrawObjectsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-draw-objects");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-draw-objects}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseDrawObjectsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-draw-objects}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-draw-objects}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-draw-objects} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseFloatingFramesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseFloatingFramesAttribute.java
new file mode 100644
index 0000000..912aaf7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseFloatingFramesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-floating-frames}.
+ *
+ */
+public class TextUseFloatingFramesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-floating-frames");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-floating-frames}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseFloatingFramesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-floating-frames}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-floating-frames}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-floating-frames} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseGraphicsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseGraphicsAttribute.java
new file mode 100644
index 0000000..7c74b7e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseGraphicsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-graphics}.
+ *
+ */
+public class TextUseGraphicsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-graphics");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-graphics}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseGraphicsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-graphics}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-graphics}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-graphics} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseIndexMarksAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseIndexMarksAttribute.java
new file mode 100644
index 0000000..679cbe3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseIndexMarksAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-index-marks}.
+ *
+ */
+public class TextUseIndexMarksAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-index-marks");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-index-marks}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseIndexMarksAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-index-marks}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-index-marks}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-index-marks} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseIndexSourceStylesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseIndexSourceStylesAttribute.java
new file mode 100644
index 0000000..d029183
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseIndexSourceStylesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-index-source-styles}.
+ *
+ */
+public class TextUseIndexSourceStylesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-index-source-styles");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-index-source-styles}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseIndexSourceStylesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-index-source-styles}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-index-source-styles}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-index-source-styles} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseKeysAsEntriesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseKeysAsEntriesAttribute.java
new file mode 100644
index 0000000..428b30c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseKeysAsEntriesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-keys-as-entries}.
+ *
+ */
+public class TextUseKeysAsEntriesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-keys-as-entries");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-keys-as-entries}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseKeysAsEntriesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-keys-as-entries}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-keys-as-entries}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-keys-as-entries} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseMathObjectsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseMathObjectsAttribute.java
new file mode 100644
index 0000000..e7bc605
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseMathObjectsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-math-objects}.
+ *
+ */
+public class TextUseMathObjectsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-math-objects");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-math-objects}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseMathObjectsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-math-objects}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-math-objects}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-math-objects} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseObjectsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseObjectsAttribute.java
new file mode 100644
index 0000000..fdf3ebf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseObjectsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-objects}.
+ *
+ */
+public class TextUseObjectsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-objects");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-objects}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseObjectsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-objects}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-objects}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-objects} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseOtherObjectsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseOtherObjectsAttribute.java
new file mode 100644
index 0000000..23a1d4e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseOtherObjectsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-other-objects}.
+ *
+ */
+public class TextUseOtherObjectsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-other-objects");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-other-objects}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseOtherObjectsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-other-objects}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-other-objects}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-other-objects} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseOutlineLevelAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseOutlineLevelAttribute.java
new file mode 100644
index 0000000..e11841b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseOutlineLevelAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-outline-level}.
+ *
+ */
+public class TextUseOutlineLevelAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-outline-level");
+	public static final String DEFAULT_VALUE = "true";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-outline-level}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseOutlineLevelAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-outline-level}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-outline-level}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-outline-level} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseSoftPageBreaksAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseSoftPageBreaksAttribute.java
new file mode 100644
index 0000000..daad01b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseSoftPageBreaksAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-soft-page-breaks}.
+ *
+ */
+public class TextUseSoftPageBreaksAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-soft-page-breaks");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-soft-page-breaks}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseSoftPageBreaksAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-soft-page-breaks}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-soft-page-breaks}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-soft-page-breaks} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseSpreadsheetObjectsAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseSpreadsheetObjectsAttribute.java
new file mode 100644
index 0000000..6dab339
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseSpreadsheetObjectsAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-spreadsheet-objects}.
+ *
+ */
+public class TextUseSpreadsheetObjectsAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-spreadsheet-objects");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-spreadsheet-objects}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseSpreadsheetObjectsAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-spreadsheet-objects}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-spreadsheet-objects}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-spreadsheet-objects} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseTablesAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseTablesAttribute.java
new file mode 100644
index 0000000..9560655
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextUseTablesAttribute.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:use-tables}.
+ *
+ */
+public class TextUseTablesAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "use-tables");
+	public static final String DEFAULT_VALUE = "false";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:use-tables}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextUseTablesAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:use-tables}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>boolean</code> value of the attribute.
+	 */
+	public void setBooleanValue(boolean value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>boolean</code> value of the attribute
+	 */
+	public boolean booleanValue() {
+		String val = super.getValue();
+		try {
+			return Boolean.parseBoolean(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:use-tables}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:use-tables} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextValueAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextValueAttribute.java
new file mode 100644
index 0000000..f8352da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextValueAttribute.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:value}.
+ *
+ */
+public class TextValueAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "value");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:value}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextValueAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:value}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * @param value The <code>int</code> value of the attribute.
+	 */
+	public void setIntValue(int value) {
+		super.setValue(String.valueOf(value));
+	}
+
+	/**
+	 * @return Returns the <code>int</code> value of the attribute
+	 */
+	public int intValue() {
+		String val = super.getValue();
+		try {
+			return Integer.parseInt(val);
+		} catch (NumberFormatException e) {
+			// TODO: validation handling/logging
+			throw (e);
+		}
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:value}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:value} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextVisitedStyleNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextVisitedStyleNameAttribute.java
new file mode 100644
index 0000000..01158a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextVisitedStyleNameAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:visited-style-name}.
+ *
+ */
+public class TextVisitedStyleNameAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "visited-style-name");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:visited-style-name}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextVisitedStyleNameAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:visited-style-name}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:visited-style-name}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:visited-style-name} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextVolumeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextVolumeAttribute.java
new file mode 100644
index 0000000..bae0bd8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextVolumeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:volume}.
+ *
+ */
+public class TextVolumeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "volume");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:volume}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextVolumeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:volume}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:volume}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:volume} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextYearAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextYearAttribute.java
new file mode 100644
index 0000000..d5e596f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/text/TextYearAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.text;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute text:year}.
+ *
+ */
+public class TextYearAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "year");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute text:year}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public TextYearAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute text:year}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute text:year}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute text:year} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xforms/XformsBindAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xforms/XformsBindAttribute.java
new file mode 100644
index 0000000..ce57029
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xforms/XformsBindAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xforms;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xforms:bind}.
+ *
+ */
+public class XformsBindAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XFORMS, "bind");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xforms:bind}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XformsBindAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xforms:bind}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xforms:bind}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xforms:bind} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlAboutAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlAboutAttribute.java
new file mode 100644
index 0000000..80222a4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlAboutAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xhtml;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xhtml:about}.
+ *
+ */
+public class XhtmlAboutAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XHTML, "about");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xhtml:about}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XhtmlAboutAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xhtml:about}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xhtml:about}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xhtml:about} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlContentAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlContentAttribute.java
new file mode 100644
index 0000000..19fef05
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlContentAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xhtml;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xhtml:content}.
+ *
+ */
+public class XhtmlContentAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XHTML, "content");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xhtml:content}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XhtmlContentAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xhtml:content}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xhtml:content}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xhtml:content} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlDatatypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlDatatypeAttribute.java
new file mode 100644
index 0000000..7826b3f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlDatatypeAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xhtml;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xhtml:datatype}.
+ *
+ */
+public class XhtmlDatatypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XHTML, "datatype");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xhtml:datatype}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XhtmlDatatypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xhtml:datatype}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xhtml:datatype}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xhtml:datatype} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlPropertyAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlPropertyAttribute.java
new file mode 100644
index 0000000..8a918ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xhtml/XhtmlPropertyAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xhtml;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xhtml:property}.
+ *
+ */
+public class XhtmlPropertyAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XHTML, "property");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xhtml:property}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XhtmlPropertyAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xhtml:property}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xhtml:property}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xhtml:property} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkActuateAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkActuateAttribute.java
new file mode 100644
index 0000000..7c50a42
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkActuateAttribute.java
@@ -0,0 +1,234 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xlink;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.db.DbConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAppletElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFloatingFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectOleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPluginElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaAutoReloadElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaTemplateElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationEventListenerElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationSoundElement;
+import org.odftoolkit.odfdom.dom.element.script.ScriptEventListenerElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleBackgroundImageElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDefinitionSrcElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgFontFaceUriElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCellRangeSourceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleImageElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xlink:actuate}.
+ *
+ */
+public class XlinkActuateAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XLINK, "actuate");
+	public static final String DEFAULT_VALUE_ONLOAD = Value.ONLOAD.toString();
+	public static final String DEFAULT_VALUE_ONREQUEST = Value.ONREQUEST.toString();
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xlink:actuate}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XlinkActuateAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xlink:actuate}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute xlink:actuate}.
+	 */
+	public enum Value {
+		ONLOAD("onLoad"), ONREQUEST("onRequest") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xlink:actuate}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof DbConnectionResourceElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof DrawAElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof DrawAppletElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof DrawFillImageElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof DrawFloatingFrameElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof DrawImageElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof DrawObjectElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof DrawObjectOleElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof DrawPluginElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof FormFormElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof MetaAutoReloadElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof MetaTemplateElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof PresentationEventListenerElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof PresentationSoundElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof ScriptEventListenerElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof StyleBackgroundImageElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+			if (parentElement instanceof SvgDefinitionSrcElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof SvgFontFaceUriElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof TableCellRangeSourceElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof TableTableSourceElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof TextAElement) {
+				defaultValue = DEFAULT_VALUE_ONREQUEST;
+			}
+			if (parentElement instanceof TextListLevelStyleImageElement) {
+				defaultValue = DEFAULT_VALUE_ONLOAD;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xlink:actuate} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkHrefAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkHrefAttribute.java
new file mode 100644
index 0000000..0764737
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkHrefAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xlink;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xlink:href}.
+ *
+ */
+public class XlinkHrefAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XLINK, "href");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xlink:href}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XlinkHrefAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xlink:href}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xlink:href}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xlink:href} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkShowAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkShowAttribute.java
new file mode 100644
index 0000000..a63c555
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkShowAttribute.java
@@ -0,0 +1,199 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xlink;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+import org.odftoolkit.odfdom.dom.element.db.DbConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAppletElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFloatingFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectOleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPluginElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaAutoReloadElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationEventListenerElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleBackgroundImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionSourceElement;
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xlink:show}.
+ *
+ */
+public class XlinkShowAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XLINK, "show");
+	public static final String DEFAULT_VALUE_REPLACE = Value.REPLACE.toString();
+	public static final String DEFAULT_VALUE_NONE = Value.NONE.toString();
+	public static final String DEFAULT_VALUE_EMBED = Value.EMBED.toString();
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xlink:show}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XlinkShowAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xlink:show}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute xlink:show}.
+	 */
+	public enum Value {
+		EMBED("embed"), NEW("new"), NONE("none"), REPLACE("replace") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xlink:show}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			if (parentElement instanceof DbConnectionResourceElement) {
+				defaultValue = DEFAULT_VALUE_NONE;
+			}
+			if (parentElement instanceof DrawAppletElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof DrawFillImageElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof DrawFloatingFrameElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof DrawImageElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof DrawObjectElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof DrawObjectOleElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof DrawPluginElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof MetaAutoReloadElement) {
+				defaultValue = DEFAULT_VALUE_REPLACE;
+			}
+			if (parentElement instanceof PresentationEventListenerElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof StyleBackgroundImageElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof TextListLevelStyleImageElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+			if (parentElement instanceof TextSectionSourceElement) {
+				defaultValue = DEFAULT_VALUE_EMBED;
+			}
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xlink:show} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkTitleAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkTitleAttribute.java
new file mode 100644
index 0000000..ad112f5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkTitleAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xlink;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xlink:title}.
+ *
+ */
+public class XlinkTitleAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XLINK, "title");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xlink:title}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XlinkTitleAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xlink:title}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xlink:title}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xlink:title} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkTypeAttribute.java
new file mode 100644
index 0000000..8af713c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xlink/XlinkTypeAttribute.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xlink;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xlink:type}.
+ *
+ */
+public class XlinkTypeAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XLINK, "type");
+	public static final String DEFAULT_VALUE = "simple";
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xlink:type}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XlinkTypeAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xlink:type}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * The value set of {@odf.attribute xlink:type}.
+	 */
+	public enum Value {
+		SIMPLE("simple") ;
+
+		private String mValue;
+
+		Value(String value) {
+			mValue = value;
+		}
+
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		public static Value enumValueOf(String value) {
+			for(Value aIter : values()) {
+				if (value.equals(aIter.toString())) {
+				return aIter;
+				}
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * @param attrValue The <code>Enum</code> value of the attribute.
+	 */
+	public void setEnumValue(Value attrValue) {
+		setValue(attrValue.toString());
+	}
+
+	/**
+	 * @return Returns the <code>Enum</code> value of the attribute
+	 */
+	public Value getEnumValue() {
+		return Value.enumValueOf(this.getValue());
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xlink:type}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		OdfElement parentElement = (OdfElement)getOwnerElement();
+		String defaultValue = null;
+		if (parentElement != null) {
+			defaultValue=DEFAULT_VALUE;
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xlink:type} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return getOwnerElement() == null ? false : true;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xml/XmlIdAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xml/XmlIdAttribute.java
new file mode 100644
index 0000000..2a601a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/attribute/xml/XmlIdAttribute.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.attribute.xml;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * DOM implementation of OpenDocument attribute  {@odf.attribute xml:id}.
+ *
+ */
+public class XmlIdAttribute extends OdfAttribute {
+
+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.XML, "id");
+
+	/**
+	 * Create the instance of OpenDocument attribute {@odf.attribute xml:id}.
+	 *
+	 * @param ownerDocument       The type is <code>OdfFileDom</code>
+	 */
+	public XmlIdAttribute(OdfFileDom ownerDocument) {
+		super(ownerDocument, ATTRIBUTE_NAME);
+	}
+
+	/**
+	 * Returns the attribute name.
+	 *
+	 * @return the <code>OdfName</code> for {@odf.attribute xml:id}.
+	 */
+	@Override
+	public OdfName getOdfName() {
+		return ATTRIBUTE_NAME;
+	}
+
+	/**
+	 * @return Returns the name of this attribute.
+	 */
+	@Override
+	public String getName() {
+		return ATTRIBUTE_NAME.getLocalName();
+	}
+
+	/**
+	 * Returns the default value of {@odf.attribute xml:id}.
+	 *
+	 * @return the default value as <code>String</code> dependent of its element name
+	 *         return <code>null</code> if the default value does not exist
+	 */
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	/**
+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.
+	 *
+	 * @return <code>true</code> if {@odf.attribute xml:id} has an element parent
+	 *         otherwise return <code>false</code> as undefined.
+	 */
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+
+	/**
+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)
+	 */
+	@Override
+	public boolean isId() {
+		return true;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStylableElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStylableElement.java
new file mode 100644
index 0000000..fc2c4c6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStylableElement.java
@@ -0,0 +1,448 @@
+/************************************************************************
+ *
+ * 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.dom.element;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.OdfStylePropertySet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.type.StyleNameRef;
+import org.w3c.dom.DOMException;
+
+// ToDo: change modifier public to package after refactoring
+abstract public class OdfStylableElement extends OdfElement implements
+		OdfStylePropertySet {
+
+	private static final long serialVersionUID = -7828513537641758879L;
+	// ToDo: Overall StyleRefactoring: DOM Layer reaches to upper layer here...
+	private OdfStyle mAutomaticStyle;
+	protected OdfStyleFamily mFamily;
+	protected OdfName mStyleNameAttrib;
+	private OdfSchemaDocument mOdfSchemaDocument;
+
+	/**
+	 * Creates a new instance of OdfElementImpl
+	 * 
+	 * @param ownerDocument
+	 * @param name
+	 * @param family
+	 * @param styleNameAttrib
+	 * @throws DOMException
+	 */
+	public OdfStylableElement(OdfFileDom ownerDocument, OdfName name,
+			OdfStyleFamily family, OdfName styleNameAttrib) throws DOMException {
+		super(ownerDocument, name.getUri(), name.getQName());
+		mFamily = family;
+		mStyleNameAttrib = styleNameAttrib;
+		mOdfSchemaDocument = (OdfSchemaDocument) ownerDocument.getDocument();
+	}
+
+	/**
+	 * Retrieve or create uniqiue ODF AutomaticStyle
+	 * 
+	 * @return The <code>StyleStyleElement</code> element
+	 */
+	public StyleStyleElement getOrCreateUnqiueAutomaticStyle() {
+		if ((mAutomaticStyle == null)
+				|| (mAutomaticStyle.getStyleUserCount() > 1)) {
+			// we need a new automatic style
+			OdfOfficeAutomaticStyles automatic_styles = getAutomaticStyles();
+			if (automatic_styles != null) {
+				StyleNameRef sParentStyleName = null;
+				if (mAutomaticStyle == null) {
+					mAutomaticStyle = automatic_styles.newStyle(getStyleFamily());
+					sParentStyleName = new StyleNameRef(getStyleName());
+				} else {
+					String nameAttr = mAutomaticStyle.getStyleParentStyleNameAttribute();
+					sParentStyleName = new StyleNameRef(nameAttr == null ? "" : nameAttr);
+					mAutomaticStyle.removeStyleUser(this);
+					mAutomaticStyle = automatic_styles.makeStyleUnique(mAutomaticStyle);
+				}
+
+				mAutomaticStyle.addStyleUser(this);
+
+				if ((sParentStyleName != null)
+						&& (sParentStyleName.toString().length() != 0)) {
+					mAutomaticStyle.setStyleParentStyleNameAttribute(sParentStyleName.toString());
+				}
+				setStyleName(mAutomaticStyle.getStyleNameAttribute());
+			}
+		}
+		return mAutomaticStyle;
+	}
+
+	/**
+	 * Retrieve ODF OfficeAutomaticStyles
+	 * 
+	 * @return the <code>OdfOfficeAutomaticStyles</code> element that contains
+	 *         the automatic style for this element, or null if not available.
+	 */
+	public OdfOfficeAutomaticStyles getAutomaticStyles() {
+		OdfFileDom fileDom = (OdfFileDom) this.ownerDocument;
+		if (fileDom != null) {
+			if(fileDom instanceof OdfContentDom){
+				return ((OdfContentDom) fileDom).getAutomaticStyles();
+			}else if(fileDom instanceof OdfStylesDom){
+				return ((OdfStylesDom) fileDom).getAutomaticStyles();
+			}else
+			return null;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Set style attribute value with uri and name
+	 * 
+	 * @param uri
+	 *            The namespace uri
+	 * @param qname
+	 *            The qualified name of the attribute
+	 * @param value
+	 *            The attribute value
+	 */
+	@Override
+	public void setAttributeNS(String uri, String qname, String value) {
+		super.setAttributeNS(uri, qname, value);
+
+		// check if style has changed
+		if (mStyleNameAttrib.equals(uri, qname)) {
+			OdfStyle autoStyle = null;
+
+			// optimization: check if we already know this automatic style
+			if ((mAutomaticStyle != null)
+					&& (mAutomaticStyle.getStyleNameAttribute().equals(value))) {
+				// nothing todo
+			} else {
+				// register new automatic style
+				OdfOfficeAutomaticStyles automatic_styles = getAutomaticStyles();
+				if (automatic_styles != null) {
+					autoStyle = automatic_styles.getStyle(value,
+							getStyleFamily());
+				}
+
+				if (mAutomaticStyle != null) {
+					mAutomaticStyle.removeStyleUser(this);
+				}
+
+				mAutomaticStyle = autoStyle;
+
+				if (mAutomaticStyle != null) {
+					mAutomaticStyle.addStyleUser(this);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Retrieve style name
+	 * 
+	 * @return the style name
+	 */
+	public String getStyleName() {
+		return getAttributeNS(mStyleNameAttrib.getUri(), mStyleNameAttrib.getLocalName());
+	}
+
+	/**
+	 * Set style name
+	 * 
+	 * @param name
+	 *            The style name
+	 */
+	public void setStyleName(String name) {
+		setAttributeNS(mStyleNameAttrib.getUri(), mStyleNameAttrib.getQName(),
+				name);
+	}
+
+	/**
+	 * Retrieve ODF AutomaticStyle
+	 * 
+	 * @return the <code>OdfStyle</code> element
+	 */
+	public OdfStyle getAutomaticStyle() {
+		return mAutomaticStyle;
+	}
+
+	/**
+	 * Judge if there is an automatic style
+	 * 
+	 * @return true if there is an automatic style
+	 */
+	public boolean hasAutomaticStyle() {
+		return mAutomaticStyle != null;
+	}
+
+	/*
+	 * public void setLocalStyleProperties(OdfStyle style) { mAutomaticStyle =
+	 * style.getAsLocalStyle(); setStyleName(style.getName()); }
+	 */
+	/**
+	 * Returns a DocumentStyle if there is no local style
+	 * 
+	 * @return The <code>OdfStyle</code> element
+	 * 
+	 * */
+	public OdfStyle reuseDocumentStyle(String styleName) {
+		OdfStyle style = null;
+		if (styleName != null) {
+			style = mOdfSchemaDocument.getDocumentStyles().getStyle(styleName,
+					getStyleFamily());
+			if (style != null) {
+				setDocumentStyle(style);
+			}
+		}
+		return style;
+	}
+
+	/**
+	 * Set ODF DocumentStyle
+	 * 
+	 * @param style
+	 *            The document style
+	 */
+	public void setDocumentStyle(OdfStyle style) {
+		// when there is a local style, the document style becomes the parent
+		// of the local style
+		if (mAutomaticStyle != null) {
+			mAutomaticStyle.setStyleParentStyleNameAttribute(style.getStyleNameAttribute());
+		} else {
+			setStyleName(style.getStyleNameAttribute());
+		}
+	}
+
+	// protected static final String LOCAL_STYLE_PREFIX = "#local-style";
+
+	/*
+	 * public OdfStyle newDocumentStyle(String name) { OdfStyle newDocStyle =
+	 * mFamily.newStyle(name, mOdfSchemaDocument.getDocumentStyles());
+	 * setDocumentStyle(newDocStyle); return newDocStyle; }
+	 */
+	/**
+	 * Retrieve ODF DocumentStyle
+	 * 
+	 * @return the document style
+	 */
+	public OdfStyle getDocumentStyle() {
+		String styleName;
+		if (mAutomaticStyle != null) {
+			styleName = mAutomaticStyle.getStyleParentStyleNameAttribute();
+		} else {
+			styleName = getStyleName();
+		}
+
+		return mOdfSchemaDocument.getDocumentStyles().getStyle(styleName,
+				getStyleFamily());
+	}
+
+	/**
+	 * 
+	 * @return true if there is a document style.
+	 */
+	public boolean hasDocumentStyle() {
+		return getDocumentStyle() != null;
+	}
+
+	/*
+	 * public OdfStyle getAutomaticStyle() { if (mAutomaticStyle == null) {
+	 * mAutomaticStyle = mFamily.newStyle(LOCAL_STYLE_PREFIX, null); // if there
+	 * is already a document style, but no local style String styleName = null;
+	 * if ((styleName = getStyleName()) != null) {
+	 * mAutomaticStyle.setParentName(styleName); } } return mAutomaticStyle; }
+	 */
+	/**
+	 * Retrieve ODF style family
+	 * 
+	 * @return the style family.
+	 */
+	public OdfStyleFamily getStyleFamily() {
+		return mFamily;
+	}
+
+	/*
+	 * public OdfStyle getMergedStyle() { OdfStyle merged = new
+	 * OdfStyle("#merged-style", getStyleFamily()); OdfStyle docStyle =
+	 * getDocumentStyle(); if (mAutomaticStyle != null) { // a document style
+	 * may be referenced indirectly from the local style... if (docStyle ==
+	 * null) { docStyle =
+	 * mOdfSchemaDocument.getDocumentStyles().getStyle(mAutomaticStyle
+	 * .getParentName()); } // copy local style to merged style
+	 * mAutomaticStyle.copyTo(merged, true,false); }
+	 * 
+	 * // copy doc style to merged style // copyTo only copies properties that
+	 * are not already set at the // target style if (docStyle != null) {
+	 * docStyle.copyTo(merged, true,false); }
+	 * 
+	 * return merged; }
+	 */
+	/**
+	 * Retrieve ODF style property
+	 * 
+	 * @param property
+	 *            The style property
+	 * @return string for a property.
+	 */
+	public String getProperty(OdfStyleProperty property) {
+		// first try automatic style
+		StyleStyleElement style = mAutomaticStyle;
+
+		if (style == null) {
+			style = getOfficeStyle();
+		}
+
+		if (style != null) {
+			return style.getProperty(property);
+		}
+
+		return null;
+	}
+
+	/**
+	 * Retrieve the set of ODF style proerties
+	 * 
+	 * @param properties
+	 * @return a map of all the properties.
+	 */
+	public Map<OdfStyleProperty, String> getProperties(
+			Set<OdfStyleProperty> properties) {
+		HashMap<OdfStyleProperty, String> map = new HashMap<OdfStyleProperty, String>();
+		for (OdfStyleProperty property : properties) {
+			map.put(property, getProperty(property));
+		}
+
+		return map;
+	}
+
+	/**
+	 * Retrieve the set of strict ODF properties
+	 * 
+	 * @return a set of all the properties from the style family.
+	 */
+	public Set<OdfStyleProperty> getStrictProperties() {
+		return getStyleFamily().getProperties();
+	}
+
+	/**
+	 * Judge if there is an automatic style with this property
+	 * 
+	 * @param property
+	 * @return true if there is an automatic style with this property.
+	 */
+	public boolean hasProperty(OdfStyleProperty property) {
+		return (mAutomaticStyle != null)
+				&& mAutomaticStyle.hasProperty(property);
+	}
+
+	/**
+	 * Remove the ODF property
+	 * 
+	 * @param property
+	 */
+	public void removeProperty(OdfStyleProperty property) {
+		if (mAutomaticStyle != null) {
+			mAutomaticStyle.removeProperty(property);
+		}
+	}
+
+	/**
+	 * Set ODF properties
+	 * 
+	 * @param properties
+	 */
+	public void setProperties(Map<OdfStyleProperty, String> properties) {
+		for (Map.Entry<OdfStyleProperty, String> entry : properties.entrySet()) {
+			setProperty(entry.getKey(), entry.getValue());
+		}
+	}
+
+	/**
+	 * Set ODF style property with value
+	 * 
+	 * @param property
+	 * @param value
+	 */
+	public void setProperty(OdfStyleProperty property, String value) {
+		getOrCreateUnqiueAutomaticStyle().setProperty(property, value);
+	}
+
+	@Override
+	protected void onInsertNode() {
+		super.onInsertNode();
+
+		String stylename = getStyleName();
+		if (stylename.length() != 0) {
+			if (mAutomaticStyle != null) {
+				if (mAutomaticStyle.getStyleNameAttribute().equals(stylename)) {
+					return;
+				}
+
+				mAutomaticStyle.removeStyleUser(this);
+				mAutomaticStyle = null;
+			}
+
+			OdfOfficeAutomaticStyles automatic_styles = getAutomaticStyles();
+			if (automatic_styles != null) {
+				mAutomaticStyle = automatic_styles.getStyle(stylename,
+						getStyleFamily());
+
+				if (mAutomaticStyle != null) {
+					mAutomaticStyle.addStyleUser(this);
+				}
+			}
+		}
+	}
+
+	/**
+	 *
+	 */
+	@Override
+	protected void onRemoveNode() {
+		super.onInsertNode();
+
+		if (this.mAutomaticStyle != null) {
+			this.mAutomaticStyle.removeStyleUser(this);
+			this.mAutomaticStyle = null;
+		}
+	}
+
+	// todo: rename after newName rid of deprecated getDocumentStyle()
+	private OdfStyle getOfficeStyle() {
+		OdfOfficeStyles styles = this.mOdfSchemaDocument.getDocumentStyles();
+		if (styles != null) {
+			return styles.getStyle(getStyleName(), getStyleFamily());
+		} else {
+			return null;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStyleBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStyleBase.java
new file mode 100644
index 0000000..9483627
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStyleBase.java
@@ -0,0 +1,527 @@
+/************************************************************************
+ *
+ * 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.dom.element;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.Map.Entry;
+
+import org.odftoolkit.odfdom.pkg.OdfAttribute;
+import org.odftoolkit.odfdom.pkg.OdfContainerElementBase;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.style.StyleChartPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDrawingPagePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderFooterPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleRubyPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleSectionPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableRowPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.OdfStylePropertySet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.w3c.dom.Attr;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * 
+ */
+abstract public class OdfStyleBase extends OdfContainerElementBase implements OdfStylePropertySet, Comparable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 8271282184913774000L;
+    private HashMap<OdfStylePropertiesSet, OdfStylePropertiesBase> mPropertySetElementMap;
+    private ArrayList<OdfStylableElement> mStyleUser;
+    static HashMap<OdfName, OdfStylePropertiesSet> mStylePropertiesElementToSetMap;
+
+
+    static {
+        mStylePropertiesElementToSetMap = new HashMap<OdfName, OdfStylePropertiesSet>();
+        mStylePropertiesElementToSetMap.put(StyleChartPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.ChartProperties);
+        mStylePropertiesElementToSetMap.put(StyleDrawingPagePropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.DrawingPageProperties);
+        mStylePropertiesElementToSetMap.put(StyleGraphicPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.GraphicProperties);
+        mStylePropertiesElementToSetMap.put(StyleHeaderFooterPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.HeaderFooterProperties);
+        mStylePropertiesElementToSetMap.put(StyleListLevelPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.ListLevelProperties);
+        mStylePropertiesElementToSetMap.put(StylePageLayoutPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.PageLayoutProperties);
+        mStylePropertiesElementToSetMap.put(StyleParagraphPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.ParagraphProperties);
+        mStylePropertiesElementToSetMap.put(StyleRubyPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.RubyProperties);
+        mStylePropertiesElementToSetMap.put(StyleSectionPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.SectionProperties);
+        mStylePropertiesElementToSetMap.put(StyleTableCellPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.TableCellProperties);
+        mStylePropertiesElementToSetMap.put(StyleTableColumnPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.TableColumnProperties);
+        mStylePropertiesElementToSetMap.put(StyleTablePropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.TableProperties);
+        mStylePropertiesElementToSetMap.put(StyleTableRowPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.TableRowProperties);
+        mStylePropertiesElementToSetMap.put(StyleTextPropertiesElement.ELEMENT_NAME, OdfStylePropertiesSet.TextProperties);
+    }
+
+    /** Creates a new instance of OdfElement */
+    public OdfStyleBase(OdfFileDom ownerDocument,
+            String namespaceURI,
+            String qualifiedName) throws DOMException {
+        super(ownerDocument, namespaceURI, qualifiedName);
+    }
+
+    /** Creates a new instance of OdfElement */
+    public OdfStyleBase(OdfFileDom ownerDocument,
+            OdfName aName) throws DOMException {
+        super(ownerDocument, aName.getUri(), aName.getQName());
+    }
+
+    public void addStyleUser(OdfStylableElement user) {
+        if (mStyleUser == null) {
+            mStyleUser = new ArrayList<OdfStylableElement>();
+        }
+        mStyleUser.add(user);
+    }
+
+    /**
+     * get a map containing all properties of this style and their values.
+     * @return map of properties. 
+     */
+    public Map<OdfStyleProperty, String> getStyleProperties() {
+        TreeMap<OdfStyleProperty, String> result = new TreeMap<OdfStyleProperty, String>();
+        OdfStyleFamily family = getFamily();
+        if (family != null) {
+            for (OdfStyleProperty property : family.getProperties()) {
+                if (hasProperty(property)) {
+                    result.put(property, getProperty(property));
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * get a map containing all properties of this style and their values.
+     * The map will also include any properties set by parent styles
+     * @return  a map of all the properties.
+     */
+    public Map<OdfStyleProperty, String> getStylePropertiesDeep() {
+        TreeMap<OdfStyleProperty, String> result = new TreeMap<OdfStyleProperty, String>();
+        OdfStyleBase style = this;
+        while (style != null) {
+            OdfStyleFamily family = style.getFamily();
+            if (family != null) {
+                for (OdfStyleProperty property : family.getProperties()) {
+                    if (!result.containsKey(property) && style.hasProperty(property)) {
+                        result.put(property, style.getProperty(property));
+                    }
+                }
+            }
+
+            style = style.getParentStyle();
+        }
+        return result;
+    }
+
+    public void removeStyleUser(OdfStylableElement user) {
+        if (mStyleUser != null) {
+            mStyleUser.remove(user);
+        }
+    }
+
+    public int getStyleUserCount() {
+        return mStyleUser == null ? 0 : mStyleUser.size();
+    }
+
+    /** Returns an iterator for all <code>OdfStylableElement</code> elements
+     * using this style.
+     *
+     * @return an iterator for all <code>OdfStylableElement</code> elements
+     * using this style
+     */
+    public Iterable<OdfStylableElement> getStyleUsers() {
+        if (mStyleUser != null) {
+            return mStyleUser;
+        }
+        return new ArrayList<OdfStylableElement>();
+    }
+
+    public String getFamilyName() {
+        return getFamily().getName();
+    }
+
+
+    /**
+     * 
+     * @param set
+     * @return the style:*-properties element for the given set. Returns null if
+     *         such element does not exist yet.
+     */
+    public OdfStylePropertiesBase getPropertiesElement(OdfStylePropertiesSet set) {
+        if (mPropertySetElementMap != null) {
+            return mPropertySetElementMap.get(set);
+        }
+
+        return null;
+    }
+
+    /**
+     * 
+     * @param set
+     * @return the style:*-properties element for the given set. If such element
+     *         does not yet exist, it is created.
+     */
+    public OdfStylePropertiesBase getOrCreatePropertiesElement(OdfStylePropertiesSet set) {
+        OdfStylePropertiesBase properties = null;
+
+        if (mPropertySetElementMap != null) {
+            properties = mPropertySetElementMap.get(set);
+        }
+
+        if (properties == null) {
+            for (Entry<OdfName, OdfStylePropertiesSet> entry : mStylePropertiesElementToSetMap.entrySet()) {
+                if (entry.getValue().equals(set)) {
+                    properties = (OdfStylePropertiesBase) ((OdfFileDom) this.ownerDocument).createElementNS(entry.getKey());
+                    if (getFirstChild() == null) {
+                        appendChild(properties);
+                    } else {
+                        // make sure the properties elements are in the correct order
+                        Node beforeNode = null;
+                        if (set.equals(OdfStylePropertiesSet.GraphicProperties)) {
+                            beforeNode = OdfElement.findFirstChildNode(StyleParagraphPropertiesElement.class, this);
+                            if (beforeNode == null) {
+                                beforeNode = OdfElement.findFirstChildNode(StyleTextPropertiesElement.class, this);
+                            }
+                        } else if (set.equals(OdfStylePropertiesSet.ParagraphProperties)) {
+                            beforeNode = OdfElement.findFirstChildNode(StyleTextPropertiesElement.class, this);
+                        } else if (!set.equals(OdfStylePropertiesSet.TextProperties)) {
+                            beforeNode = getFirstChild();
+                        }
+
+                        if (beforeNode == null) {
+                            beforeNode = getFirstChild();
+                            // find first non properties node
+                            while (beforeNode != null) {
+                                if (beforeNode.getNodeType() == Node.ELEMENT_NODE) {
+                                    if (!(beforeNode instanceof OdfStylePropertiesBase)) {
+                                        break;
+                                    }
+                                }
+                                beforeNode = beforeNode.getNextSibling();
+                            }
+                        }
+
+                        insertBefore(properties, beforeNode);
+                    }
+                    break;
+                }
+            }
+        }
+
+        return properties;
+    }
+
+    /**
+     * 
+     * @return a property value.
+     */
+    public String getProperty(OdfStyleProperty prop) {
+        String value = null;
+
+        OdfStylePropertiesBase properties = getPropertiesElement(prop.getPropertySet());
+        if (properties != null) {
+            if (properties.hasAttributeNS(prop.getName().getUri(), prop.getName().getLocalName())) {
+                return properties.getOdfAttribute(prop.getName()).getValue();
+            }
+        }
+
+        OdfStyleBase parent = getParentStyle();
+        if (parent != null) {
+            return parent.getProperty(prop);
+        }
+
+        return value;
+    }
+
+    public boolean hasProperty(OdfStyleProperty prop) {
+        if (mPropertySetElementMap != null) {
+            OdfStylePropertiesBase properties = mPropertySetElementMap.get(prop.getPropertySet());
+            if (properties != null) {
+                return properties.hasAttributeNS(prop.getName().getUri(), prop.getName().getLocalName());
+            }
+        }
+        return false;
+    }
+
+    @Override
+    protected void onOdfNodeInserted(OdfElement node, Node refChild) {
+        if (node instanceof OdfStylePropertiesBase) {
+            OdfStylePropertiesSet set = mStylePropertiesElementToSetMap.get(node.getOdfName());
+            if (set != null) {
+                if (mPropertySetElementMap == null) {
+                    mPropertySetElementMap = new HashMap<OdfStylePropertiesSet, OdfStylePropertiesBase>();
+                }
+                mPropertySetElementMap.put(set, (OdfStylePropertiesBase) node);
+            }
+        }
+    }
+
+    @Override
+    protected void onOdfNodeRemoved(OdfElement node) {
+        if (mPropertySetElementMap != null) {
+            if (node instanceof OdfStylePropertiesBase) {
+                OdfStylePropertiesSet set = mStylePropertiesElementToSetMap.get(node.getOdfName());
+                if (set != null) {
+                    mPropertySetElementMap.remove(set);
+                }
+            }
+        }
+    }
+
+    public Map<OdfStyleProperty, String> getProperties(Set<OdfStyleProperty> properties) {
+        HashMap<OdfStyleProperty, String> map = new HashMap<OdfStyleProperty, String>();
+        for (OdfStyleProperty property : properties) {
+            map.put(property, getProperty(property));
+        }
+
+        return map;
+    }
+
+    public Set<OdfStyleProperty> getStrictProperties() {
+        return getFamily().getProperties();
+    }
+
+    public void removeProperty(OdfStyleProperty property) {
+        if (mPropertySetElementMap != null) {
+            OdfStylePropertiesBase properties = mPropertySetElementMap.get(property.getPropertySet());
+            if (properties != null) {
+                properties.removeAttributeNS(property.getName().getUri(), property.getName().getLocalName());
+            }
+        }
+    }
+
+    public void setProperties(Map<OdfStyleProperty, String> properties) {
+        for (Map.Entry<OdfStyleProperty, String> entry : properties.entrySet()) {
+            setProperty(entry.getKey(), entry.getValue());
+        }
+    }
+
+    public void setProperty(OdfStyleProperty property, String value) {
+        OdfStylePropertiesBase properties = getOrCreatePropertiesElement(property.getPropertySet());
+        if (properties != null) {
+        	OdfAttribute propertyAttr = ((OdfFileDom) this.ownerDocument).createAttributeNS(property.getName());
+            properties.setOdfAttribute(propertyAttr);
+            propertyAttr.setValue(value);
+        }
+    }
+
+    /** compare one style to another one.
+     *  This implements a total order on style objects.
+     *
+     * @param obj - the reference object with which to compare2.
+     * @return 0 if this object is the same as the obj argument; -1 if this
+     * object is less than the obj argument; 1 if this object is greater than
+     * the obj argument
+     */
+    public int compareTo(Object obj) {
+        if (this == obj) {
+            return 0;
+        }
+
+        if (!(obj instanceof OdfStyleBase)) {
+            if (obj == null) {
+                throw new ClassCastException("The object to be compared is null!");
+            } else {
+                throw new ClassCastException("The object to be compared is not a style!");
+            }
+        }
+        OdfStyleBase compare = (OdfStyleBase) obj;
+
+        int c = compareNodes(this, compare);
+        return c;
+    }
+
+    // Currently this function does not consider the order of child nodes, e.g.,
+    //
+    //		<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+    //			<style:paragraph-properties>
+    //				<style:tab-stops>
+    //					<style:tab-stop style:position="4.344cm"/>
+    //				</style:tab-stops>
+    //				<style:background-image xlink:href="Pictures/1.jpg" xlink:type="simple" xlink:actuate="onLoad"/>
+    //			</style:paragraph-properties>
+    //		</style:style>
+    //
+    //  and
+    //
+    //		<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+    //			<style:paragraph-properties>
+    //				<style:background-image xlink:href="Pictures/1.jpg" xlink:type="simple" xlink:actuate="onLoad"/>
+    //				<style:tab-stops>
+    //					<style:tab-stop style:position="4.344cm"/>
+    //				</style:tab-stops>
+    //			</style:paragraph-properties>
+    //		</style:style>
+    //
+    //  are regarded non-equal
+    //
+    static private int compareNodes(Node compare1, Node compare2) {
+        // Only styles can be equal, that are from the same element
+        // (e.g. style:style and text:list-level-style-bullet are never equal)
+        int c = 0;
+        // if the local name is unequal (e.g. style vs. list-level-style-bullet)
+        // the String compareTo will give me the order
+        if ((c = compare1.getLocalName().compareTo(compare2.getLocalName())) != 0) {
+            return c;
+        }
+
+        // if the namespaceURI is unequal (e.g. style vs. text)
+        // the String compareTo will give me the order
+        if ((c = compare1.getNamespaceURI().compareTo(compare2.getNamespaceURI())) != 0) {
+            return c;
+        }
+
+        // compare number of attributes
+        int attr_count1 = compare1.getAttributes() != null ? compare1.getAttributes().getLength() : 0;
+        int attr_count2 = compare2.getAttributes() != null ? compare2.getAttributes().getLength() : 0;
+
+        // attributes with default values do not exist in the ODFDOM XML model
+        if (attr_count1 != attr_count2) {
+            return attr_count1 < attr_count2 ? -1 : 1;
+        }
+
+        // sort attributes by namespace:localname, omit style name
+        SortedMap<String, String> attr1 = getSortedAttributes(compare1);
+        SortedMap<String, String> attr2 = getSortedAttributes(compare2);
+
+        // compare2 attribute names and values
+        Iterator<String> keySet1Iter = attr1.keySet().iterator();
+        Iterator<String> keySet2Iter = attr2.keySet().iterator();
+
+        while (keySet1Iter.hasNext()) {
+            String key1 = keySet1Iter.next();
+            String key2 = keySet2Iter.next();
+
+            if ((c = key1.compareTo(key2)) != 0) {
+                return c;
+            }
+
+            String attrValue1 = attr1.get(key1);
+            String attrValue2 = attr2.get(key1);
+            
+            if ((c = attrValue1.compareTo(attrValue2)) != 0) {
+                return c;
+            }
+        }
+
+        // now number of child elements
+        ArrayList<Node> nodes1 = getNonEmptyChildNodes(compare1);
+        ArrayList<Node> nodes2 = getNonEmptyChildNodes(compare2);
+
+        if (nodes1.size() != nodes2.size()) {
+            return nodes1.size() < nodes2.size() ? -1 : 1;
+        }
+
+        // now compare child elements
+        Iterator<Node> iter1 = nodes1.iterator();
+        Iterator<Node> iter2 = nodes2.iterator();
+
+        while (iter1.hasNext()) {
+            Node child1 = iter1.next();
+            Node child2 = iter2.next();
+            if ((c = compareNodes(child1, child2)) != 0) {
+                return c;
+            }
+        }
+
+        return 0;
+    }
+
+    // helper function for compareTo.
+    // sorts attributes by namespace:localname
+    private static SortedMap<String, String> getSortedAttributes(Node node) {
+        SortedMap<String, String> ret = new TreeMap<String, String>();
+        NamedNodeMap attrs = node.getAttributes();
+        for (int i = 0; i < attrs.getLength(); i++) {
+            Node cur = attrs.item(i);
+            String namespace = cur.getNamespaceURI();
+            String local = cur.getLocalName();
+            // styles can be still the same, even if they have different names
+            if (local.equals("name") && namespace.equals(OdfDocumentNamespace.STYLE.getUri())) {
+                continue;
+            }
+            ret.put(namespace + ":" + local, ((Attr) cur).getValue());
+        }
+        return ret;
+    }
+
+    // helper function for compareTo.
+    // all except "empty" text nodes will be returned
+    private static ArrayList<Node> getNonEmptyChildNodes(Node node) {
+        ArrayList<Node> ret = new ArrayList<Node>();
+        NodeList childs = node.getChildNodes();
+        for (int i = 0; i < childs.getLength(); i++) {
+            Node cur = childs.item(i);
+            if (cur.getNodeType() == Node.TEXT_NODE) {
+                if (cur.getNodeValue().trim().length() == 0) {
+                    continue; // skip whitespace text nodes
+                }
+            }
+            ret.add(cur);
+        }
+        return ret;
+    }
+
+    /** Indicates if some other object is equal to this one.
+     *  The attribute style:name is ignored during compare2.
+     *
+     * @param obj - the reference object with which to compare2.
+     * @return true if this object is the same as the obj argument; false otherwise.
+     */
+	@Override
+	public boolean equals(Object obj) {
+        return obj != null ? compareTo(obj) == 0 : false;
+	}
+
+    @Override
+    public int hashCode() {
+        return 59 * 7 + (this.mPropertySetElementMap != null ? this.mPropertySetElementMap.hashCode() : 0);
+    }
+    
+    public OdfStyleFamily getFamily() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public OdfStyleBase getParentStyle() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStylePropertiesBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStylePropertiesBase.java
new file mode 100644
index 0000000..6d98736
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStylePropertiesBase.java
@@ -0,0 +1,59 @@
+/************************************************************************
+ *
+ * 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.dom.element;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.w3c.dom.DOMException;
+
+/**
+ * Base class for those ODF element having several ODF style attributes.
+ * NOTE: We call style attribute commonly style properties.
+ */
+abstract public class OdfStylePropertiesBase extends OdfElement
+{
+    /**
+	 * Base class for all ODF elements having style attributes (we call properties).
+	 */
+	private static final long serialVersionUID = -6575728390842696683L;
+
+	/** Creates a new instance of OdfStyleProperties */
+    public OdfStylePropertiesBase(OdfFileDom ownerDocument,
+            String namespaceURI,
+            String qualifiedName) throws DOMException {
+        super(ownerDocument, namespaceURI, qualifiedName);
+    }
+
+    /** Creates a new instance of OdfStyleProperties */
+    public OdfStylePropertiesBase(OdfFileDom ownerDocument, 
+            OdfName aName) throws DOMException {
+        super(ownerDocument,aName);
+    }
+
+    @Override
+    public int hashCode()
+    {
+        return getOdfName().hashCode() + 7;
+    }    
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStyleableShapeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStyleableShapeElement.java
new file mode 100644
index 0000000..2fc5e67
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/OdfStyleableShapeElement.java
@@ -0,0 +1,97 @@
+/*
+ * 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.dom.element;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.w3c.dom.Attr;
+
+/**
+ * This class decides upon the shape style attribute, whether the style family is
+ * of type 'graphic' or 'presentation'.
+ *
+ * 
+ * Why do have ODF shapes two alternatives for their style:family attribute?
+ *
+ * In ODF a style (ie. style:style) is always identified not alone by its name,
+ * but as well by its style:family. Elements are in general predefined to one style:family.
+ * For instance, a paragraph (text:p) will have a style from the style:family="paragraph",
+ * a span (text:span) would have a style:family="text".
+ *
+ * Only ODF shapes (e.g. draw:frame) can choose between two different style:family values,
+ * ie. 'presentation' and 'graphic'.
+ *
+ * The idea behind is that 'graphic' family shapes have a style that belong to the document
+ * similar as all other styles, but 'presentation' family shapes have a style that belongs
+ * to a master page.
+ * 
+ * The difference:
+ * Whenever in an application the master page of a page is being changed, all 'graphic'
+ * shapes look the same, only the 'presentation' shapes will get a new look-and-feel
+ * from the new master page.
+ */
+abstract public class OdfStyleableShapeElement extends OdfStylableElement {
+
+	private static final long serialVersionUID = 3604813885619852184L;
+	private static OdfName PresStyleAttrName = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "style-name");
+	private static OdfName DrawStyleAttrName = OdfName.newName(OdfDocumentNamespace.DRAW, "style-name");
+
+	public OdfStyleableShapeElement(OdfFileDom ownerDocument, OdfName name) {
+		super(ownerDocument, name, OdfStyleFamily.Graphic, DrawStyleAttrName);
+	}
+
+	/**
+	 * When the style-name prefix is changed between draw: and presentation:
+	 * the style:family is adjusted as well
+	 *
+	 * @param uri the namespace uri of the attribute to be changed
+	 * @param localname of the attribute to be changed
+	 */
+	protected void adjustStyleNameAttrib(String uri, String localname) {
+		if (DrawStyleAttrName.equals(uri, localname)) {
+			mStyleNameAttrib = DrawStyleAttrName;
+			mFamily = OdfStyleFamily.Graphic;
+		} else if (PresStyleAttrName.equals(uri, localname)) {
+			mStyleNameAttrib = PresStyleAttrName;
+			mFamily = OdfStyleFamily.Presentation;
+		}
+	}
+
+	@Override
+	public void setAttributeNS(String uri, String localname, String value) {
+		if ((value != null) && (value.length() != 0)) {
+			adjustStyleNameAttrib(uri, localname);
+		}
+
+		super.setAttributeNS(uri, localname, value);
+	}
+
+	@Override
+	public Attr setAttributeNodeNS(Attr newAttr) {
+		String uri = newAttr.getNamespaceURI();
+		String localname = newAttr.getName();
+		adjustStyleNameAttrib(uri, localname);
+		return super.setAttributeNodeNS(newAttr);
+	}
+}
+
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateColorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateColorElement.java
new file mode 100644
index 0000000..5ddbb4e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateColorElement.java
@@ -0,0 +1,748 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimColorInterpolationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimColorInterpolationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccumulateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAdditiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAttributeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilCalcModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFromAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilKeySplinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilKeyTimesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilValuesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:animateColor}.
+ *
+ */
+public class AnimAnimateColorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "animateColor");
+
+	/**
+	 * Create the instance of <code>AnimAnimateColorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimAnimateColorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:animateColor}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimColorInterpolationAttribute</code> , See {@odf.attribute anim:color-interpolation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimColorInterpolationAttribute() {
+		AnimColorInterpolationAttribute attr = (AnimColorInterpolationAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "color-interpolation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return AnimColorInterpolationAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimColorInterpolationAttribute</code> , See {@odf.attribute anim:color-interpolation}
+	 *
+	 * @param animColorInterpolationValue   The type is <code>String</code>
+	 */
+	public void setAnimColorInterpolationAttribute(String animColorInterpolationValue) {
+		AnimColorInterpolationAttribute attr = new AnimColorInterpolationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animColorInterpolationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimColorInterpolationDirectionAttribute</code> , See {@odf.attribute anim:color-interpolation-direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimColorInterpolationDirectionAttribute() {
+		AnimColorInterpolationDirectionAttribute attr = (AnimColorInterpolationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "color-interpolation-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return AnimColorInterpolationDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimColorInterpolationDirectionAttribute</code> , See {@odf.attribute anim:color-interpolation-direction}
+	 *
+	 * @param animColorInterpolationDirectionValue   The type is <code>String</code>
+	 */
+	public void setAnimColorInterpolationDirectionAttribute(String animColorInterpolationDirectionValue) {
+		AnimColorInterpolationDirectionAttribute attr = new AnimColorInterpolationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animColorInterpolationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimFormulaAttribute() {
+		AnimFormulaAttribute attr = (AnimFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @param animFormulaValue   The type is <code>String</code>
+	 */
+	public void setAnimFormulaAttribute(String animFormulaValue) {
+		AnimFormulaAttribute attr = new AnimFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccumulateAttribute() {
+		SmilAccumulateAttribute attr = (SmilAccumulateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accumulate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @param smilAccumulateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccumulateAttribute(String smilAccumulateValue) {
+		SmilAccumulateAttribute attr = new SmilAccumulateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccumulateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAdditiveAttribute() {
+		SmilAdditiveAttribute attr = (SmilAdditiveAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "additive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @param smilAdditiveValue   The type is <code>String</code>
+	 */
+	public void setSmilAdditiveAttribute(String smilAdditiveValue) {
+		SmilAdditiveAttribute attr = new SmilAdditiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAdditiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAttributeNameAttribute() {
+		SmilAttributeNameAttribute attr = (SmilAttributeNameAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "attributeName");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * @param smilAttributeNameValue   The type is <code>String</code>
+	 */
+	public void setSmilAttributeNameAttribute(String smilAttributeNameValue) {
+		SmilAttributeNameAttribute attr = new SmilAttributeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAttributeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilByAttribute() {
+		SmilByAttribute attr = (SmilByAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @param smilByValue   The type is <code>String</code>
+	 */
+	public void setSmilByAttribute(String smilByValue) {
+		SmilByAttribute attr = new SmilByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilCalcModeAttribute() {
+		SmilCalcModeAttribute attr = (SmilCalcModeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "calcMode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilCalcModeAttribute.DEFAULT_VALUE_DISCRETE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @param smilCalcModeValue   The type is <code>String</code>
+	 */
+	public void setSmilCalcModeAttribute(String smilCalcModeValue) {
+		SmilCalcModeAttribute attr = new SmilCalcModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilCalcModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFromAttribute() {
+		SmilFromAttribute attr = (SmilFromAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "from");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @param smilFromValue   The type is <code>String</code>
+	 */
+	public void setSmilFromAttribute(String smilFromValue) {
+		SmilFromAttribute attr = new SmilFromAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFromValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilKeySplinesAttribute</code> , See {@odf.attribute smil:keySplines}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilKeySplinesAttribute() {
+		SmilKeySplinesAttribute attr = (SmilKeySplinesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "keySplines");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilKeySplinesAttribute</code> , See {@odf.attribute smil:keySplines}
+	 *
+	 * @param smilKeySplinesValue   The type is <code>String</code>
+	 */
+	public void setSmilKeySplinesAttribute(String smilKeySplinesValue) {
+		SmilKeySplinesAttribute attr = new SmilKeySplinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilKeySplinesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilKeyTimesAttribute</code> , See {@odf.attribute smil:keyTimes}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilKeyTimesAttribute() {
+		SmilKeyTimesAttribute attr = (SmilKeyTimesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "keyTimes");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilKeyTimesAttribute</code> , See {@odf.attribute smil:keyTimes}
+	 *
+	 * @param smilKeyTimesValue   The type is <code>String</code>
+	 */
+	public void setSmilKeyTimesAttribute(String smilKeyTimesValue) {
+		SmilKeyTimesAttribute attr = new SmilKeyTimesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilKeyTimesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilToAttribute() {
+		SmilToAttribute attr = (SmilToAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @param smilToValue   The type is <code>String</code>
+	 */
+	public void setSmilToAttribute(String smilToValue) {
+		SmilToAttribute attr = new SmilToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilToValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilValuesAttribute() {
+		SmilValuesAttribute attr = (SmilValuesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "values");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @param smilValuesValue   The type is <code>String</code>
+	 */
+	public void setSmilValuesAttribute(String smilValuesValue) {
+		SmilValuesAttribute attr = new SmilValuesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilValuesValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateElement.java
new file mode 100644
index 0000000..35425d4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateElement.java
@@ -0,0 +1,698 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccumulateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAdditiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAttributeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilCalcModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFromAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilKeySplinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilKeyTimesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilValuesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:animate}.
+ *
+ */
+public class AnimAnimateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "animate");
+
+	/**
+	 * Create the instance of <code>AnimAnimateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimAnimateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:animate}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimFormulaAttribute() {
+		AnimFormulaAttribute attr = (AnimFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @param animFormulaValue   The type is <code>String</code>
+	 */
+	public void setAnimFormulaAttribute(String animFormulaValue) {
+		AnimFormulaAttribute attr = new AnimFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccumulateAttribute() {
+		SmilAccumulateAttribute attr = (SmilAccumulateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accumulate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @param smilAccumulateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccumulateAttribute(String smilAccumulateValue) {
+		SmilAccumulateAttribute attr = new SmilAccumulateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccumulateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAdditiveAttribute() {
+		SmilAdditiveAttribute attr = (SmilAdditiveAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "additive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @param smilAdditiveValue   The type is <code>String</code>
+	 */
+	public void setSmilAdditiveAttribute(String smilAdditiveValue) {
+		SmilAdditiveAttribute attr = new SmilAdditiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAdditiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAttributeNameAttribute() {
+		SmilAttributeNameAttribute attr = (SmilAttributeNameAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "attributeName");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * @param smilAttributeNameValue   The type is <code>String</code>
+	 */
+	public void setSmilAttributeNameAttribute(String smilAttributeNameValue) {
+		SmilAttributeNameAttribute attr = new SmilAttributeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAttributeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilByAttribute() {
+		SmilByAttribute attr = (SmilByAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @param smilByValue   The type is <code>String</code>
+	 */
+	public void setSmilByAttribute(String smilByValue) {
+		SmilByAttribute attr = new SmilByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilCalcModeAttribute() {
+		SmilCalcModeAttribute attr = (SmilCalcModeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "calcMode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilCalcModeAttribute.DEFAULT_VALUE_DISCRETE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @param smilCalcModeValue   The type is <code>String</code>
+	 */
+	public void setSmilCalcModeAttribute(String smilCalcModeValue) {
+		SmilCalcModeAttribute attr = new SmilCalcModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilCalcModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFromAttribute() {
+		SmilFromAttribute attr = (SmilFromAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "from");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @param smilFromValue   The type is <code>String</code>
+	 */
+	public void setSmilFromAttribute(String smilFromValue) {
+		SmilFromAttribute attr = new SmilFromAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFromValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilKeySplinesAttribute</code> , See {@odf.attribute smil:keySplines}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilKeySplinesAttribute() {
+		SmilKeySplinesAttribute attr = (SmilKeySplinesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "keySplines");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilKeySplinesAttribute</code> , See {@odf.attribute smil:keySplines}
+	 *
+	 * @param smilKeySplinesValue   The type is <code>String</code>
+	 */
+	public void setSmilKeySplinesAttribute(String smilKeySplinesValue) {
+		SmilKeySplinesAttribute attr = new SmilKeySplinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilKeySplinesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilKeyTimesAttribute</code> , See {@odf.attribute smil:keyTimes}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilKeyTimesAttribute() {
+		SmilKeyTimesAttribute attr = (SmilKeyTimesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "keyTimes");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilKeyTimesAttribute</code> , See {@odf.attribute smil:keyTimes}
+	 *
+	 * @param smilKeyTimesValue   The type is <code>String</code>
+	 */
+	public void setSmilKeyTimesAttribute(String smilKeyTimesValue) {
+		SmilKeyTimesAttribute attr = new SmilKeyTimesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilKeyTimesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilToAttribute() {
+		SmilToAttribute attr = (SmilToAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @param smilToValue   The type is <code>String</code>
+	 */
+	public void setSmilToAttribute(String smilToValue) {
+		SmilToAttribute attr = new SmilToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilToValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilValuesAttribute() {
+		SmilValuesAttribute attr = (SmilValuesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "values");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @param smilValuesValue   The type is <code>String</code>
+	 */
+	public void setSmilValuesAttribute(String smilValuesValue) {
+		SmilValuesAttribute attr = new SmilValuesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilValuesValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateMotionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateMotionElement.java
new file mode 100644
index 0000000..6c049ae
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateMotionElement.java
@@ -0,0 +1,748 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccumulateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAdditiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAttributeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilCalcModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFromAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilKeySplinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilKeyTimesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilValuesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgOriginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgPathAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:animateMotion}.
+ *
+ */
+public class AnimAnimateMotionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "animateMotion");
+
+	/**
+	 * Create the instance of <code>AnimAnimateMotionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimAnimateMotionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:animateMotion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimFormulaAttribute() {
+		AnimFormulaAttribute attr = (AnimFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @param animFormulaValue   The type is <code>String</code>
+	 */
+	public void setAnimFormulaAttribute(String animFormulaValue) {
+		AnimFormulaAttribute attr = new AnimFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccumulateAttribute() {
+		SmilAccumulateAttribute attr = (SmilAccumulateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accumulate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @param smilAccumulateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccumulateAttribute(String smilAccumulateValue) {
+		SmilAccumulateAttribute attr = new SmilAccumulateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccumulateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAdditiveAttribute() {
+		SmilAdditiveAttribute attr = (SmilAdditiveAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "additive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @param smilAdditiveValue   The type is <code>String</code>
+	 */
+	public void setSmilAdditiveAttribute(String smilAdditiveValue) {
+		SmilAdditiveAttribute attr = new SmilAdditiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAdditiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAttributeNameAttribute() {
+		SmilAttributeNameAttribute attr = (SmilAttributeNameAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "attributeName");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * @param smilAttributeNameValue   The type is <code>String</code>
+	 */
+	public void setSmilAttributeNameAttribute(String smilAttributeNameValue) {
+		SmilAttributeNameAttribute attr = new SmilAttributeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAttributeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilByAttribute() {
+		SmilByAttribute attr = (SmilByAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @param smilByValue   The type is <code>String</code>
+	 */
+	public void setSmilByAttribute(String smilByValue) {
+		SmilByAttribute attr = new SmilByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilCalcModeAttribute() {
+		SmilCalcModeAttribute attr = (SmilCalcModeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "calcMode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilCalcModeAttribute.DEFAULT_VALUE_PACED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @param smilCalcModeValue   The type is <code>String</code>
+	 */
+	public void setSmilCalcModeAttribute(String smilCalcModeValue) {
+		SmilCalcModeAttribute attr = new SmilCalcModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilCalcModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFromAttribute() {
+		SmilFromAttribute attr = (SmilFromAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "from");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @param smilFromValue   The type is <code>String</code>
+	 */
+	public void setSmilFromAttribute(String smilFromValue) {
+		SmilFromAttribute attr = new SmilFromAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFromValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilKeySplinesAttribute</code> , See {@odf.attribute smil:keySplines}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilKeySplinesAttribute() {
+		SmilKeySplinesAttribute attr = (SmilKeySplinesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "keySplines");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilKeySplinesAttribute</code> , See {@odf.attribute smil:keySplines}
+	 *
+	 * @param smilKeySplinesValue   The type is <code>String</code>
+	 */
+	public void setSmilKeySplinesAttribute(String smilKeySplinesValue) {
+		SmilKeySplinesAttribute attr = new SmilKeySplinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilKeySplinesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilKeyTimesAttribute</code> , See {@odf.attribute smil:keyTimes}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilKeyTimesAttribute() {
+		SmilKeyTimesAttribute attr = (SmilKeyTimesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "keyTimes");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilKeyTimesAttribute</code> , See {@odf.attribute smil:keyTimes}
+	 *
+	 * @param smilKeyTimesValue   The type is <code>String</code>
+	 */
+	public void setSmilKeyTimesAttribute(String smilKeyTimesValue) {
+		SmilKeyTimesAttribute attr = new SmilKeyTimesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilKeyTimesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilToAttribute() {
+		SmilToAttribute attr = (SmilToAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @param smilToValue   The type is <code>String</code>
+	 */
+	public void setSmilToAttribute(String smilToValue) {
+		SmilToAttribute attr = new SmilToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilToValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilValuesAttribute() {
+		SmilValuesAttribute attr = (SmilValuesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "values");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @param smilValuesValue   The type is <code>String</code>
+	 */
+	public void setSmilValuesAttribute(String smilValuesValue) {
+		SmilValuesAttribute attr = new SmilValuesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilValuesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgOriginAttribute</code> , See {@odf.attribute svg:origin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgOriginAttribute() {
+		SvgOriginAttribute attr = (SvgOriginAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "origin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgOriginAttribute</code> , See {@odf.attribute svg:origin}
+	 *
+	 * @param svgOriginValue   The type is <code>String</code>
+	 */
+	public void setSvgOriginAttribute(String svgOriginValue) {
+		SvgOriginAttribute attr = new SvgOriginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgOriginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgPathAttribute</code> , See {@odf.attribute svg:path}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgPathAttribute() {
+		SvgPathAttribute attr = (SvgPathAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "path");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgPathAttribute</code> , See {@odf.attribute svg:path}
+	 *
+	 * @param svgPathValue   The type is <code>String</code>
+	 */
+	public void setSvgPathAttribute(String svgPathValue) {
+		SvgPathAttribute attr = new SvgPathAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgPathValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateTransformElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateTransformElement.java
new file mode 100644
index 0000000..3270973
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAnimateTransformElement.java
@@ -0,0 +1,650 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccumulateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAdditiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAttributeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFromAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilValuesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:animateTransform}.
+ *
+ */
+public class AnimAnimateTransformElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "animateTransform");
+
+	/**
+	 * Create the instance of <code>AnimAnimateTransformElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimAnimateTransformElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:animateTransform}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimFormulaAttribute() {
+		AnimFormulaAttribute attr = (AnimFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @param animFormulaValue   The type is <code>String</code>
+	 */
+	public void setAnimFormulaAttribute(String animFormulaValue) {
+		AnimFormulaAttribute attr = new AnimFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccumulateAttribute() {
+		SmilAccumulateAttribute attr = (SmilAccumulateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accumulate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @param smilAccumulateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccumulateAttribute(String smilAccumulateValue) {
+		SmilAccumulateAttribute attr = new SmilAccumulateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccumulateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAdditiveAttribute() {
+		SmilAdditiveAttribute attr = (SmilAdditiveAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "additive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @param smilAdditiveValue   The type is <code>String</code>
+	 */
+	public void setSmilAdditiveAttribute(String smilAdditiveValue) {
+		SmilAdditiveAttribute attr = new SmilAdditiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAdditiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAttributeNameAttribute() {
+		SmilAttributeNameAttribute attr = (SmilAttributeNameAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "attributeName");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * @param smilAttributeNameValue   The type is <code>String</code>
+	 */
+	public void setSmilAttributeNameAttribute(String smilAttributeNameValue) {
+		SmilAttributeNameAttribute attr = new SmilAttributeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAttributeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilByAttribute() {
+		SmilByAttribute attr = (SmilByAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @param smilByValue   The type is <code>String</code>
+	 */
+	public void setSmilByAttribute(String smilByValue) {
+		SmilByAttribute attr = new SmilByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFromAttribute() {
+		SmilFromAttribute attr = (SmilFromAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "from");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @param smilFromValue   The type is <code>String</code>
+	 */
+	public void setSmilFromAttribute(String smilFromValue) {
+		SmilFromAttribute attr = new SmilFromAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFromValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilToAttribute() {
+		SmilToAttribute attr = (SmilToAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @param smilToValue   The type is <code>String</code>
+	 */
+	public void setSmilToAttribute(String smilToValue) {
+		SmilToAttribute attr = new SmilToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilToValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilValuesAttribute() {
+		SmilValuesAttribute attr = (SmilValuesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "values");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @param smilValuesValue   The type is <code>String</code>
+	 */
+	public void setSmilValuesAttribute(String smilValuesValue) {
+		SmilValuesAttribute attr = new SmilValuesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilValuesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgTypeAttribute</code> , See {@odf.attribute svg:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgTypeAttribute() {
+		SvgTypeAttribute attr = (SvgTypeAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgTypeAttribute</code> , See {@odf.attribute svg:type}
+	 *
+	 * @param svgTypeValue   The type is <code>String</code>
+	 */
+	public void setSvgTypeAttribute(String svgTypeValue) {
+		SvgTypeAttribute attr = new SvgTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAudioElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAudioElement.java
new file mode 100644
index 0000000..91dc3a8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimAudioElement.java
@@ -0,0 +1,546 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimAudioLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationGroupIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMasterElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNodeTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetSubTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:audio}.
+ *
+ */
+public class AnimAudioElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "audio");
+
+	/**
+	 * Create the instance of <code>AnimAudioElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimAudioElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:audio}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimAudioLevelAttribute</code> , See {@odf.attribute anim:audio-level}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getAnimAudioLevelAttribute() {
+		AnimAudioLevelAttribute attr = (AnimAudioLevelAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "audio-level");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimAudioLevelAttribute</code> , See {@odf.attribute anim:audio-level}
+	 *
+	 * @param animAudioLevelValue   The type is <code>Double</code>
+	 */
+	public void setAnimAudioLevelAttribute(Double animAudioLevelValue) {
+		AnimAudioLevelAttribute attr = new AnimAudioLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(animAudioLevelValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIdAttribute() {
+		AnimIdAttribute attr = (AnimIdAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @param animIdValue   The type is <code>String</code>
+	 */
+	public void setAnimIdAttribute(String animIdValue) {
+		AnimIdAttribute attr = new AnimIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationGroupIdAttribute() {
+		PresentationGroupIdAttribute attr = (PresentationGroupIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "group-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @param presentationGroupIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationGroupIdAttribute(String presentationGroupIdValue) {
+		PresentationGroupIdAttribute attr = new PresentationGroupIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationGroupIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationMasterElementAttribute() {
+		PresentationMasterElementAttribute attr = (PresentationMasterElementAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "master-element");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @param presentationMasterElementValue   The type is <code>String</code>
+	 */
+	public void setPresentationMasterElementAttribute(String presentationMasterElementValue) {
+		PresentationMasterElementAttribute attr = new PresentationMasterElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationMasterElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNodeTypeAttribute() {
+		PresentationNodeTypeAttribute attr = (PresentationNodeTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "node-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationNodeTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @param presentationNodeTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationNodeTypeAttribute(String presentationNodeTypeValue) {
+		PresentationNodeTypeAttribute attr = new PresentationNodeTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNodeTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetClassAttribute() {
+		PresentationPresetClassAttribute attr = (PresentationPresetClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationPresetClassAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @param presentationPresetClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetClassAttribute(String presentationPresetClassValue) {
+		PresentationPresetClassAttribute attr = new PresentationPresetClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetIdAttribute() {
+		PresentationPresetIdAttribute attr = (PresentationPresetIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @param presentationPresetIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetIdAttribute(String presentationPresetIdValue) {
+		PresentationPresetIdAttribute attr = new PresentationPresetIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetSubTypeAttribute() {
+		PresentationPresetSubTypeAttribute attr = (PresentationPresetSubTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-sub-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @param presentationPresetSubTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetSubTypeAttribute(String presentationPresetSubTypeValue) {
+		PresentationPresetSubTypeAttribute attr = new PresentationPresetSubTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetSubTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimCommandElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimCommandElement.java
new file mode 100644
index 0000000..cc09f9a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimCommandElement.java
@@ -0,0 +1,413 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimCommandAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationGroupIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMasterElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNodeTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetSubTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:command}.
+ *
+ */
+public class AnimCommandElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "command");
+
+	/**
+	 * Create the instance of <code>AnimCommandElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimCommandElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:command}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimCommandAttribute</code> , See {@odf.attribute anim:command}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimCommandAttribute() {
+		AnimCommandAttribute attr = (AnimCommandAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "command");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimCommandAttribute</code> , See {@odf.attribute anim:command}
+	 *
+	 * @param animCommandValue   The type is <code>String</code>
+	 */
+	public void setAnimCommandAttribute(String animCommandValue) {
+		AnimCommandAttribute attr = new AnimCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animCommandValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIdAttribute() {
+		AnimIdAttribute attr = (AnimIdAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @param animIdValue   The type is <code>String</code>
+	 */
+	public void setAnimIdAttribute(String animIdValue) {
+		AnimIdAttribute attr = new AnimIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationGroupIdAttribute() {
+		PresentationGroupIdAttribute attr = (PresentationGroupIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "group-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @param presentationGroupIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationGroupIdAttribute(String presentationGroupIdValue) {
+		PresentationGroupIdAttribute attr = new PresentationGroupIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationGroupIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationMasterElementAttribute() {
+		PresentationMasterElementAttribute attr = (PresentationMasterElementAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "master-element");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @param presentationMasterElementValue   The type is <code>String</code>
+	 */
+	public void setPresentationMasterElementAttribute(String presentationMasterElementValue) {
+		PresentationMasterElementAttribute attr = new PresentationMasterElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationMasterElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNodeTypeAttribute() {
+		PresentationNodeTypeAttribute attr = (PresentationNodeTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "node-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationNodeTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @param presentationNodeTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationNodeTypeAttribute(String presentationNodeTypeValue) {
+		PresentationNodeTypeAttribute attr = new PresentationNodeTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNodeTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetClassAttribute() {
+		PresentationPresetClassAttribute attr = (PresentationPresetClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationPresetClassAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @param presentationPresetClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetClassAttribute(String presentationPresetClassValue) {
+		PresentationPresetClassAttribute attr = new PresentationPresetClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetIdAttribute() {
+		PresentationPresetIdAttribute attr = (PresentationPresetIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @param presentationPresetIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetIdAttribute(String presentationPresetIdValue) {
+		PresentationPresetIdAttribute attr = new PresentationPresetIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetSubTypeAttribute() {
+		PresentationPresetSubTypeAttribute attr = (PresentationPresetSubTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-sub-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @param presentationPresetSubTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetSubTypeAttribute(String presentationPresetSubTypeValue) {
+		PresentationPresetSubTypeAttribute attr = new PresentationPresetSubTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetSubTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element anim:param}.
+	 *
+	 * @param animNameValue  the <code>String</code> value of <code>AnimNameAttribute</code>, see {@odf.attribute  anim:name} at specification
+	 * @param animValueValue  the <code>String</code> value of <code>AnimValueAttribute</code>, see {@odf.attribute  anim:value} at specification
+	 * @return the element {@odf.element anim:param}
+	 */
+	 public AnimParamElement newAnimParamElement(String animNameValue, String animValueValue) {
+		AnimParamElement animParam = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimParamElement.class);
+		animParam.setAnimNameAttribute(animNameValue);
+		animParam.setAnimValueAttribute(animValueValue);
+		this.appendChild(animParam);
+		return animParam;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimIterateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimIterateElement.java
new file mode 100644
index 0000000..db391d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimIterateElement.java
@@ -0,0 +1,833 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIterateIntervalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIterateTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationGroupIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMasterElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNodeTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetSubTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndsyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:iterate}.
+ *
+ */
+public class AnimIterateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "iterate");
+
+	/**
+	 * Create the instance of <code>AnimIterateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimIterateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:iterate}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIdAttribute() {
+		AnimIdAttribute attr = (AnimIdAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @param animIdValue   The type is <code>String</code>
+	 */
+	public void setAnimIdAttribute(String animIdValue) {
+		AnimIdAttribute attr = new AnimIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIterateIntervalAttribute</code> , See {@odf.attribute anim:iterate-interval}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIterateIntervalAttribute() {
+		AnimIterateIntervalAttribute attr = (AnimIterateIntervalAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "iterate-interval");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIterateIntervalAttribute</code> , See {@odf.attribute anim:iterate-interval}
+	 *
+	 * @param animIterateIntervalValue   The type is <code>String</code>
+	 */
+	public void setAnimIterateIntervalAttribute(String animIterateIntervalValue) {
+		AnimIterateIntervalAttribute attr = new AnimIterateIntervalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIterateIntervalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIterateTypeAttribute</code> , See {@odf.attribute anim:iterate-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIterateTypeAttribute() {
+		AnimIterateTypeAttribute attr = (AnimIterateTypeAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "iterate-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIterateTypeAttribute</code> , See {@odf.attribute anim:iterate-type}
+	 *
+	 * @param animIterateTypeValue   The type is <code>String</code>
+	 */
+	public void setAnimIterateTypeAttribute(String animIterateTypeValue) {
+		AnimIterateTypeAttribute attr = new AnimIterateTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIterateTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationGroupIdAttribute() {
+		PresentationGroupIdAttribute attr = (PresentationGroupIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "group-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @param presentationGroupIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationGroupIdAttribute(String presentationGroupIdValue) {
+		PresentationGroupIdAttribute attr = new PresentationGroupIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationGroupIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationMasterElementAttribute() {
+		PresentationMasterElementAttribute attr = (PresentationMasterElementAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "master-element");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @param presentationMasterElementValue   The type is <code>String</code>
+	 */
+	public void setPresentationMasterElementAttribute(String presentationMasterElementValue) {
+		PresentationMasterElementAttribute attr = new PresentationMasterElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationMasterElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNodeTypeAttribute() {
+		PresentationNodeTypeAttribute attr = (PresentationNodeTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "node-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationNodeTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @param presentationNodeTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationNodeTypeAttribute(String presentationNodeTypeValue) {
+		PresentationNodeTypeAttribute attr = new PresentationNodeTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNodeTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetClassAttribute() {
+		PresentationPresetClassAttribute attr = (PresentationPresetClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationPresetClassAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @param presentationPresetClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetClassAttribute(String presentationPresetClassValue) {
+		PresentationPresetClassAttribute attr = new PresentationPresetClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetIdAttribute() {
+		PresentationPresetIdAttribute attr = (PresentationPresetIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @param presentationPresetIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetIdAttribute(String presentationPresetIdValue) {
+		PresentationPresetIdAttribute attr = new PresentationPresetIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetSubTypeAttribute() {
+		PresentationPresetSubTypeAttribute attr = (PresentationPresetSubTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-sub-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @param presentationPresetSubTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetSubTypeAttribute(String presentationPresetSubTypeValue) {
+		PresentationPresetSubTypeAttribute attr = new PresentationPresetSubTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetSubTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndsyncAttribute</code> , See {@odf.attribute smil:endsync}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndsyncAttribute() {
+		SmilEndsyncAttribute attr = (SmilEndsyncAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "endsync");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndsyncAttribute</code> , See {@odf.attribute smil:endsync}
+	 *
+	 * @param smilEndsyncValue   The type is <code>String</code>
+	 */
+	public void setSmilEndsyncAttribute(String smilEndsyncValue) {
+		SmilEndsyncAttribute attr = new SmilEndsyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndsyncValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animate}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animate}
+	 */
+	 public AnimAnimateElement newAnimAnimateElement(String smilAttributeNameValue) {
+		AnimAnimateElement animAnimate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateElement.class);
+		animAnimate.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimate);
+		return animAnimate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateColor}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateColor}
+	 */
+	 public AnimAnimateColorElement newAnimAnimateColorElement(String smilAttributeNameValue) {
+		AnimAnimateColorElement animAnimateColor = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateColorElement.class);
+		animAnimateColor.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateColor);
+		return animAnimateColor;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateMotion}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateMotion}
+	 */
+	 public AnimAnimateMotionElement newAnimAnimateMotionElement(String smilAttributeNameValue) {
+		AnimAnimateMotionElement animAnimateMotion = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateMotionElement.class);
+		animAnimateMotion.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateMotion);
+		return animAnimateMotion;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateTransform}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @param svgTypeValue  the <code>String</code> value of <code>SvgTypeAttribute</code>, see {@odf.attribute  svg:type} at specification
+	 * @return the element {@odf.element anim:animateTransform}
+	 */
+	 public AnimAnimateTransformElement newAnimAnimateTransformElement(String smilAttributeNameValue, String svgTypeValue) {
+		AnimAnimateTransformElement animAnimateTransform = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateTransformElement.class);
+		animAnimateTransform.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		animAnimateTransform.setSvgTypeAttribute(svgTypeValue);
+		this.appendChild(animAnimateTransform);
+		return animAnimateTransform;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:audio}.
+	 *
+	 * @return the element {@odf.element anim:audio}
+	 */
+	public AnimAudioElement newAnimAudioElement() {
+		AnimAudioElement animAudio = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAudioElement.class);
+		this.appendChild(animAudio);
+		return animAudio;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:command}.
+	 *
+	 * @param animCommandValue  the <code>String</code> value of <code>AnimCommandAttribute</code>, see {@odf.attribute  anim:command} at specification
+	 * @return the element {@odf.element anim:command}
+	 */
+	 public AnimCommandElement newAnimCommandElement(String animCommandValue) {
+		AnimCommandElement animCommand = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimCommandElement.class);
+		animCommand.setAnimCommandAttribute(animCommandValue);
+		this.appendChild(animCommand);
+		return animCommand;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:iterate}.
+	 *
+	 * @return the element {@odf.element anim:iterate}
+	 */
+	public AnimIterateElement newAnimIterateElement() {
+		AnimIterateElement animIterate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimIterateElement.class);
+		this.appendChild(animIterate);
+		return animIterate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:par}.
+	 *
+	 * @return the element {@odf.element anim:par}
+	 */
+	public AnimParElement newAnimParElement() {
+		AnimParElement animPar = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimParElement.class);
+		this.appendChild(animPar);
+		return animPar;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:seq}.
+	 *
+	 * @return the element {@odf.element anim:seq}
+	 */
+	public AnimSeqElement newAnimSeqElement() {
+		AnimSeqElement animSeq = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSeqElement.class);
+		this.appendChild(animSeq);
+		return animSeq;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:set}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:set}
+	 */
+	 public AnimSetElement newAnimSetElement(String smilAttributeNameValue) {
+		AnimSetElement animSet = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSetElement.class);
+		animSet.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animSet);
+		return animSet;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:transitionFilter}.
+	 *
+	 * @param smilTypeValue  the <code>String</code> value of <code>SmilTypeAttribute</code>, see {@odf.attribute  smil:type} at specification
+	 * @return the element {@odf.element anim:transitionFilter}
+	 */
+	 public AnimTransitionFilterElement newAnimTransitionFilterElement(String smilTypeValue) {
+		AnimTransitionFilterElement animTransitionFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimTransitionFilterElement.class);
+		animTransitionFilter.setSmilTypeAttribute(smilTypeValue);
+		this.appendChild(animTransitionFilter);
+		return animTransitionFilter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimParElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimParElement.java
new file mode 100644
index 0000000..4bb5abc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimParElement.java
@@ -0,0 +1,733 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationGroupIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMasterElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNodeTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetSubTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndsyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:par}.
+ *
+ */
+public class AnimParElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "par");
+
+	/**
+	 * Create the instance of <code>AnimParElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimParElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:par}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIdAttribute() {
+		AnimIdAttribute attr = (AnimIdAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @param animIdValue   The type is <code>String</code>
+	 */
+	public void setAnimIdAttribute(String animIdValue) {
+		AnimIdAttribute attr = new AnimIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationGroupIdAttribute() {
+		PresentationGroupIdAttribute attr = (PresentationGroupIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "group-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @param presentationGroupIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationGroupIdAttribute(String presentationGroupIdValue) {
+		PresentationGroupIdAttribute attr = new PresentationGroupIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationGroupIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationMasterElementAttribute() {
+		PresentationMasterElementAttribute attr = (PresentationMasterElementAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "master-element");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @param presentationMasterElementValue   The type is <code>String</code>
+	 */
+	public void setPresentationMasterElementAttribute(String presentationMasterElementValue) {
+		PresentationMasterElementAttribute attr = new PresentationMasterElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationMasterElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNodeTypeAttribute() {
+		PresentationNodeTypeAttribute attr = (PresentationNodeTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "node-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationNodeTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @param presentationNodeTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationNodeTypeAttribute(String presentationNodeTypeValue) {
+		PresentationNodeTypeAttribute attr = new PresentationNodeTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNodeTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetClassAttribute() {
+		PresentationPresetClassAttribute attr = (PresentationPresetClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationPresetClassAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @param presentationPresetClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetClassAttribute(String presentationPresetClassValue) {
+		PresentationPresetClassAttribute attr = new PresentationPresetClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetIdAttribute() {
+		PresentationPresetIdAttribute attr = (PresentationPresetIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @param presentationPresetIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetIdAttribute(String presentationPresetIdValue) {
+		PresentationPresetIdAttribute attr = new PresentationPresetIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetSubTypeAttribute() {
+		PresentationPresetSubTypeAttribute attr = (PresentationPresetSubTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-sub-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @param presentationPresetSubTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetSubTypeAttribute(String presentationPresetSubTypeValue) {
+		PresentationPresetSubTypeAttribute attr = new PresentationPresetSubTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetSubTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndsyncAttribute</code> , See {@odf.attribute smil:endsync}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndsyncAttribute() {
+		SmilEndsyncAttribute attr = (SmilEndsyncAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "endsync");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndsyncAttribute</code> , See {@odf.attribute smil:endsync}
+	 *
+	 * @param smilEndsyncValue   The type is <code>String</code>
+	 */
+	public void setSmilEndsyncAttribute(String smilEndsyncValue) {
+		SmilEndsyncAttribute attr = new SmilEndsyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndsyncValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animate}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animate}
+	 */
+	 public AnimAnimateElement newAnimAnimateElement(String smilAttributeNameValue) {
+		AnimAnimateElement animAnimate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateElement.class);
+		animAnimate.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimate);
+		return animAnimate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateColor}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateColor}
+	 */
+	 public AnimAnimateColorElement newAnimAnimateColorElement(String smilAttributeNameValue) {
+		AnimAnimateColorElement animAnimateColor = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateColorElement.class);
+		animAnimateColor.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateColor);
+		return animAnimateColor;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateMotion}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateMotion}
+	 */
+	 public AnimAnimateMotionElement newAnimAnimateMotionElement(String smilAttributeNameValue) {
+		AnimAnimateMotionElement animAnimateMotion = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateMotionElement.class);
+		animAnimateMotion.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateMotion);
+		return animAnimateMotion;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateTransform}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @param svgTypeValue  the <code>String</code> value of <code>SvgTypeAttribute</code>, see {@odf.attribute  svg:type} at specification
+	 * @return the element {@odf.element anim:animateTransform}
+	 */
+	 public AnimAnimateTransformElement newAnimAnimateTransformElement(String smilAttributeNameValue, String svgTypeValue) {
+		AnimAnimateTransformElement animAnimateTransform = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateTransformElement.class);
+		animAnimateTransform.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		animAnimateTransform.setSvgTypeAttribute(svgTypeValue);
+		this.appendChild(animAnimateTransform);
+		return animAnimateTransform;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:audio}.
+	 *
+	 * @return the element {@odf.element anim:audio}
+	 */
+	public AnimAudioElement newAnimAudioElement() {
+		AnimAudioElement animAudio = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAudioElement.class);
+		this.appendChild(animAudio);
+		return animAudio;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:command}.
+	 *
+	 * @param animCommandValue  the <code>String</code> value of <code>AnimCommandAttribute</code>, see {@odf.attribute  anim:command} at specification
+	 * @return the element {@odf.element anim:command}
+	 */
+	 public AnimCommandElement newAnimCommandElement(String animCommandValue) {
+		AnimCommandElement animCommand = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimCommandElement.class);
+		animCommand.setAnimCommandAttribute(animCommandValue);
+		this.appendChild(animCommand);
+		return animCommand;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:iterate}.
+	 *
+	 * @return the element {@odf.element anim:iterate}
+	 */
+	public AnimIterateElement newAnimIterateElement() {
+		AnimIterateElement animIterate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimIterateElement.class);
+		this.appendChild(animIterate);
+		return animIterate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:par}.
+	 *
+	 * @return the element {@odf.element anim:par}
+	 */
+	public AnimParElement newAnimParElement() {
+		AnimParElement animPar = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimParElement.class);
+		this.appendChild(animPar);
+		return animPar;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:seq}.
+	 *
+	 * @return the element {@odf.element anim:seq}
+	 */
+	public AnimSeqElement newAnimSeqElement() {
+		AnimSeqElement animSeq = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSeqElement.class);
+		this.appendChild(animSeq);
+		return animSeq;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:set}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:set}
+	 */
+	 public AnimSetElement newAnimSetElement(String smilAttributeNameValue) {
+		AnimSetElement animSet = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSetElement.class);
+		animSet.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animSet);
+		return animSet;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:transitionFilter}.
+	 *
+	 * @param smilTypeValue  the <code>String</code> value of <code>SmilTypeAttribute</code>, see {@odf.attribute  smil:type} at specification
+	 * @return the element {@odf.element anim:transitionFilter}
+	 */
+	 public AnimTransitionFilterElement newAnimTransitionFilterElement(String smilTypeValue) {
+		AnimTransitionFilterElement animTransitionFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimTransitionFilterElement.class);
+		animTransitionFilter.setSmilTypeAttribute(smilTypeValue);
+		this.appendChild(animTransitionFilter);
+		return animTransitionFilter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimParamElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimParamElement.java
new file mode 100644
index 0000000..05663d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimParamElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:param}.
+ *
+ */
+public class AnimParamElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "param");
+
+	/**
+	 * Create the instance of <code>AnimParamElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimParamElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:param}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimNameAttribute</code> , See {@odf.attribute anim:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimNameAttribute() {
+		AnimNameAttribute attr = (AnimNameAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimNameAttribute</code> , See {@odf.attribute anim:name}
+	 *
+	 * @param animNameValue   The type is <code>String</code>
+	 */
+	public void setAnimNameAttribute(String animNameValue) {
+		AnimNameAttribute attr = new AnimNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimValueAttribute</code> , See {@odf.attribute anim:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimValueAttribute() {
+		AnimValueAttribute attr = (AnimValueAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimValueAttribute</code> , See {@odf.attribute anim:value}
+	 *
+	 * @param animValueValue   The type is <code>String</code>
+	 */
+	public void setAnimValueAttribute(String animValueValue) {
+		AnimValueAttribute attr = new AnimValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimSeqElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimSeqElement.java
new file mode 100644
index 0000000..aabadec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimSeqElement.java
@@ -0,0 +1,733 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationGroupIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMasterElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNodeTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresetSubTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndsyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:seq}.
+ *
+ */
+public class AnimSeqElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "seq");
+
+	/**
+	 * Create the instance of <code>AnimSeqElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimSeqElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:seq}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimIdAttribute() {
+		AnimIdAttribute attr = (AnimIdAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimIdAttribute</code> , See {@odf.attribute anim:id}
+	 *
+	 * @param animIdValue   The type is <code>String</code>
+	 */
+	public void setAnimIdAttribute(String animIdValue) {
+		AnimIdAttribute attr = new AnimIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationGroupIdAttribute() {
+		PresentationGroupIdAttribute attr = (PresentationGroupIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "group-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationGroupIdAttribute</code> , See {@odf.attribute presentation:group-id}
+	 *
+	 * @param presentationGroupIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationGroupIdAttribute(String presentationGroupIdValue) {
+		PresentationGroupIdAttribute attr = new PresentationGroupIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationGroupIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationMasterElementAttribute() {
+		PresentationMasterElementAttribute attr = (PresentationMasterElementAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "master-element");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMasterElementAttribute</code> , See {@odf.attribute presentation:master-element}
+	 *
+	 * @param presentationMasterElementValue   The type is <code>String</code>
+	 */
+	public void setPresentationMasterElementAttribute(String presentationMasterElementValue) {
+		PresentationMasterElementAttribute attr = new PresentationMasterElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationMasterElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNodeTypeAttribute() {
+		PresentationNodeTypeAttribute attr = (PresentationNodeTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "node-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationNodeTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNodeTypeAttribute</code> , See {@odf.attribute presentation:node-type}
+	 *
+	 * @param presentationNodeTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationNodeTypeAttribute(String presentationNodeTypeValue) {
+		PresentationNodeTypeAttribute attr = new PresentationNodeTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNodeTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetClassAttribute() {
+		PresentationPresetClassAttribute attr = (PresentationPresetClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationPresetClassAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetClassAttribute</code> , See {@odf.attribute presentation:preset-class}
+	 *
+	 * @param presentationPresetClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetClassAttribute(String presentationPresetClassValue) {
+		PresentationPresetClassAttribute attr = new PresentationPresetClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetIdAttribute() {
+		PresentationPresetIdAttribute attr = (PresentationPresetIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetIdAttribute</code> , See {@odf.attribute presentation:preset-id}
+	 *
+	 * @param presentationPresetIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetIdAttribute(String presentationPresetIdValue) {
+		PresentationPresetIdAttribute attr = new PresentationPresetIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresetSubTypeAttribute() {
+		PresentationPresetSubTypeAttribute attr = (PresentationPresetSubTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "preset-sub-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresetSubTypeAttribute</code> , See {@odf.attribute presentation:preset-sub-type}
+	 *
+	 * @param presentationPresetSubTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresetSubTypeAttribute(String presentationPresetSubTypeValue) {
+		PresentationPresetSubTypeAttribute attr = new PresentationPresetSubTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresetSubTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndsyncAttribute</code> , See {@odf.attribute smil:endsync}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndsyncAttribute() {
+		SmilEndsyncAttribute attr = (SmilEndsyncAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "endsync");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndsyncAttribute</code> , See {@odf.attribute smil:endsync}
+	 *
+	 * @param smilEndsyncValue   The type is <code>String</code>
+	 */
+	public void setSmilEndsyncAttribute(String smilEndsyncValue) {
+		SmilEndsyncAttribute attr = new SmilEndsyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndsyncValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animate}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animate}
+	 */
+	 public AnimAnimateElement newAnimAnimateElement(String smilAttributeNameValue) {
+		AnimAnimateElement animAnimate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateElement.class);
+		animAnimate.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimate);
+		return animAnimate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateColor}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateColor}
+	 */
+	 public AnimAnimateColorElement newAnimAnimateColorElement(String smilAttributeNameValue) {
+		AnimAnimateColorElement animAnimateColor = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateColorElement.class);
+		animAnimateColor.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateColor);
+		return animAnimateColor;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateMotion}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateMotion}
+	 */
+	 public AnimAnimateMotionElement newAnimAnimateMotionElement(String smilAttributeNameValue) {
+		AnimAnimateMotionElement animAnimateMotion = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateMotionElement.class);
+		animAnimateMotion.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateMotion);
+		return animAnimateMotion;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateTransform}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @param svgTypeValue  the <code>String</code> value of <code>SvgTypeAttribute</code>, see {@odf.attribute  svg:type} at specification
+	 * @return the element {@odf.element anim:animateTransform}
+	 */
+	 public AnimAnimateTransformElement newAnimAnimateTransformElement(String smilAttributeNameValue, String svgTypeValue) {
+		AnimAnimateTransformElement animAnimateTransform = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateTransformElement.class);
+		animAnimateTransform.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		animAnimateTransform.setSvgTypeAttribute(svgTypeValue);
+		this.appendChild(animAnimateTransform);
+		return animAnimateTransform;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:audio}.
+	 *
+	 * @return the element {@odf.element anim:audio}
+	 */
+	public AnimAudioElement newAnimAudioElement() {
+		AnimAudioElement animAudio = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAudioElement.class);
+		this.appendChild(animAudio);
+		return animAudio;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:command}.
+	 *
+	 * @param animCommandValue  the <code>String</code> value of <code>AnimCommandAttribute</code>, see {@odf.attribute  anim:command} at specification
+	 * @return the element {@odf.element anim:command}
+	 */
+	 public AnimCommandElement newAnimCommandElement(String animCommandValue) {
+		AnimCommandElement animCommand = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimCommandElement.class);
+		animCommand.setAnimCommandAttribute(animCommandValue);
+		this.appendChild(animCommand);
+		return animCommand;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:iterate}.
+	 *
+	 * @return the element {@odf.element anim:iterate}
+	 */
+	public AnimIterateElement newAnimIterateElement() {
+		AnimIterateElement animIterate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimIterateElement.class);
+		this.appendChild(animIterate);
+		return animIterate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:par}.
+	 *
+	 * @return the element {@odf.element anim:par}
+	 */
+	public AnimParElement newAnimParElement() {
+		AnimParElement animPar = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimParElement.class);
+		this.appendChild(animPar);
+		return animPar;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:seq}.
+	 *
+	 * @return the element {@odf.element anim:seq}
+	 */
+	public AnimSeqElement newAnimSeqElement() {
+		AnimSeqElement animSeq = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSeqElement.class);
+		this.appendChild(animSeq);
+		return animSeq;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:set}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:set}
+	 */
+	 public AnimSetElement newAnimSetElement(String smilAttributeNameValue) {
+		AnimSetElement animSet = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSetElement.class);
+		animSet.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animSet);
+		return animSet;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:transitionFilter}.
+	 *
+	 * @param smilTypeValue  the <code>String</code> value of <code>SmilTypeAttribute</code>, see {@odf.attribute  smil:type} at specification
+	 * @return the element {@odf.element anim:transitionFilter}
+	 */
+	 public AnimTransitionFilterElement newAnimTransitionFilterElement(String smilTypeValue) {
+		AnimTransitionFilterElement animTransitionFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimTransitionFilterElement.class);
+		animTransitionFilter.setSmilTypeAttribute(smilTypeValue);
+		this.appendChild(animTransitionFilter);
+		return animTransitionFilter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimSetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimSetElement.java
new file mode 100644
index 0000000..ad134f3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimSetElement.java
@@ -0,0 +1,523 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccumulateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAdditiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAttributeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilToAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:set}.
+ *
+ */
+public class AnimSetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "set");
+
+	/**
+	 * Create the instance of <code>AnimSetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimSetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:set}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccumulateAttribute() {
+		SmilAccumulateAttribute attr = (SmilAccumulateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accumulate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @param smilAccumulateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccumulateAttribute(String smilAccumulateValue) {
+		SmilAccumulateAttribute attr = new SmilAccumulateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccumulateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAdditiveAttribute() {
+		SmilAdditiveAttribute attr = (SmilAdditiveAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "additive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @param smilAdditiveValue   The type is <code>String</code>
+	 */
+	public void setSmilAdditiveAttribute(String smilAdditiveValue) {
+		SmilAdditiveAttribute attr = new SmilAdditiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAdditiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAttributeNameAttribute() {
+		SmilAttributeNameAttribute attr = (SmilAttributeNameAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "attributeName");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAttributeNameAttribute</code> , See {@odf.attribute smil:attributeName}
+	 *
+	 * @param smilAttributeNameValue   The type is <code>String</code>
+	 */
+	public void setSmilAttributeNameAttribute(String smilAttributeNameValue) {
+		SmilAttributeNameAttribute attr = new SmilAttributeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAttributeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilToAttribute() {
+		SmilToAttribute attr = (SmilToAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @param smilToValue   The type is <code>String</code>
+	 */
+	public void setSmilToAttribute(String smilToValue) {
+		SmilToAttribute attr = new SmilToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilToValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimTransitionFilterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimTransitionFilterElement.java
new file mode 100644
index 0000000..b348d1e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/anim/AnimTransitionFilterElement.java
@@ -0,0 +1,748 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.anim;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.anim.AnimSubItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAccumulateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAdditiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilAutoReverseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilBeginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilCalcModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDecelerateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFadeColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFillDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFromAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRepeatDurAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilRestartDefaultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilSubtypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTargetElementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilValuesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element anim:transitionFilter}.
+ *
+ */
+public class AnimTransitionFilterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.ANIM, "transitionFilter");
+
+	/**
+	 * Create the instance of <code>AnimTransitionFilterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public AnimTransitionFilterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element anim:transitionFilter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimFormulaAttribute() {
+		AnimFormulaAttribute attr = (AnimFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimFormulaAttribute</code> , See {@odf.attribute anim:formula}
+	 *
+	 * @param animFormulaValue   The type is <code>String</code>
+	 */
+	public void setAnimFormulaAttribute(String animFormulaValue) {
+		AnimFormulaAttribute attr = new AnimFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getAnimSubItemAttribute() {
+		AnimSubItemAttribute attr = (AnimSubItemAttribute) getOdfAttribute(OdfDocumentNamespace.ANIM, "sub-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>AnimSubItemAttribute</code> , See {@odf.attribute anim:sub-item}
+	 *
+	 * @param animSubItemValue   The type is <code>String</code>
+	 */
+	public void setAnimSubItemAttribute(String animSubItemValue) {
+		AnimSubItemAttribute attr = new AnimSubItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(animSubItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccelerateAttribute() {
+		SmilAccelerateAttribute attr = (SmilAccelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilAccelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccelerateAttribute</code> , See {@odf.attribute smil:accelerate}
+	 *
+	 * @param smilAccelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccelerateAttribute(String smilAccelerateValue) {
+		SmilAccelerateAttribute attr = new SmilAccelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAccumulateAttribute() {
+		SmilAccumulateAttribute attr = (SmilAccumulateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "accumulate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAccumulateAttribute</code> , See {@odf.attribute smil:accumulate}
+	 *
+	 * @param smilAccumulateValue   The type is <code>String</code>
+	 */
+	public void setSmilAccumulateAttribute(String smilAccumulateValue) {
+		SmilAccumulateAttribute attr = new SmilAccumulateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAccumulateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilAdditiveAttribute() {
+		SmilAdditiveAttribute attr = (SmilAdditiveAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "additive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAdditiveAttribute</code> , See {@odf.attribute smil:additive}
+	 *
+	 * @param smilAdditiveValue   The type is <code>String</code>
+	 */
+	public void setSmilAdditiveAttribute(String smilAdditiveValue) {
+		SmilAdditiveAttribute attr = new SmilAdditiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilAdditiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getSmilAutoReverseAttribute() {
+		SmilAutoReverseAttribute attr = (SmilAutoReverseAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "autoReverse");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(SmilAutoReverseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilAutoReverseAttribute</code> , See {@odf.attribute smil:autoReverse}
+	 *
+	 * @param smilAutoReverseValue   The type is <code>Boolean</code>
+	 */
+	public void setSmilAutoReverseAttribute(Boolean smilAutoReverseValue) {
+		SmilAutoReverseAttribute attr = new SmilAutoReverseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(smilAutoReverseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilBeginAttribute() {
+		SmilBeginAttribute attr = (SmilBeginAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "begin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilBeginAttribute</code> , See {@odf.attribute smil:begin}
+	 *
+	 * @param smilBeginValue   The type is <code>String</code>
+	 */
+	public void setSmilBeginAttribute(String smilBeginValue) {
+		SmilBeginAttribute attr = new SmilBeginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilBeginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilByAttribute() {
+		SmilByAttribute attr = (SmilByAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilByAttribute</code> , See {@odf.attribute smil:by}
+	 *
+	 * @param smilByValue   The type is <code>String</code>
+	 */
+	public void setSmilByAttribute(String smilByValue) {
+		SmilByAttribute attr = new SmilByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilCalcModeAttribute() {
+		SmilCalcModeAttribute attr = (SmilCalcModeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "calcMode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilCalcModeAttribute</code> , See {@odf.attribute smil:calcMode}
+	 *
+	 * @param smilCalcModeValue   The type is <code>String</code>
+	 */
+	public void setSmilCalcModeAttribute(String smilCalcModeValue) {
+		SmilCalcModeAttribute attr = new SmilCalcModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilCalcModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDecelerateAttribute() {
+		SmilDecelerateAttribute attr = (SmilDecelerateAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "decelerate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDecelerateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDecelerateAttribute</code> , See {@odf.attribute smil:decelerate}
+	 *
+	 * @param smilDecelerateValue   The type is <code>String</code>
+	 */
+	public void setSmilDecelerateAttribute(String smilDecelerateValue) {
+		SmilDecelerateAttribute attr = new SmilDecelerateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDecelerateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDirectionAttribute</code> , See {@odf.attribute smil:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDirectionAttribute() {
+		SmilDirectionAttribute attr = (SmilDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDirectionAttribute</code> , See {@odf.attribute smil:direction}
+	 *
+	 * @param smilDirectionValue   The type is <code>String</code>
+	 */
+	public void setSmilDirectionAttribute(String smilDirectionValue) {
+		SmilDirectionAttribute attr = new SmilDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDurAttribute() {
+		SmilDurAttribute attr = (SmilDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "dur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDurAttribute</code> , See {@odf.attribute smil:dur}
+	 *
+	 * @param smilDurValue   The type is <code>String</code>
+	 */
+	public void setSmilDurAttribute(String smilDurValue) {
+		SmilDurAttribute attr = new SmilDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilEndAttribute() {
+		SmilEndAttribute attr = (SmilEndAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilEndAttribute</code> , See {@odf.attribute smil:end}
+	 *
+	 * @param smilEndValue   The type is <code>String</code>
+	 */
+	public void setSmilEndAttribute(String smilEndValue) {
+		SmilEndAttribute attr = new SmilEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFadeColorAttribute</code> , See {@odf.attribute smil:fadeColor}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFadeColorAttribute() {
+		SmilFadeColorAttribute attr = (SmilFadeColorAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fadeColor");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilFadeColorAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFadeColorAttribute</code> , See {@odf.attribute smil:fadeColor}
+	 *
+	 * @param smilFadeColorValue   The type is <code>String</code>
+	 */
+	public void setSmilFadeColorAttribute(String smilFadeColorValue) {
+		SmilFadeColorAttribute attr = new SmilFadeColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFadeColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillAttribute() {
+		SmilFillAttribute attr = (SmilFillAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillAttribute</code> , See {@odf.attribute smil:fill}
+	 *
+	 * @param smilFillValue   The type is <code>String</code>
+	 */
+	public void setSmilFillAttribute(String smilFillValue) {
+		SmilFillAttribute attr = new SmilFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFillDefaultAttribute() {
+		SmilFillDefaultAttribute attr = (SmilFillDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fillDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFillDefaultAttribute</code> , See {@odf.attribute smil:fillDefault}
+	 *
+	 * @param smilFillDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilFillDefaultAttribute(String smilFillDefaultValue) {
+		SmilFillDefaultAttribute attr = new SmilFillDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFillDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFromAttribute() {
+		SmilFromAttribute attr = (SmilFromAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "from");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFromAttribute</code> , See {@odf.attribute smil:from}
+	 *
+	 * @param smilFromValue   The type is <code>String</code>
+	 */
+	public void setSmilFromAttribute(String smilFromValue) {
+		SmilFromAttribute attr = new SmilFromAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFromValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilModeAttribute</code> , See {@odf.attribute smil:mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilModeAttribute() {
+		SmilModeAttribute attr = (SmilModeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilModeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilModeAttribute</code> , See {@odf.attribute smil:mode}
+	 *
+	 * @param smilModeValue   The type is <code>String</code>
+	 */
+	public void setSmilModeAttribute(String smilModeValue) {
+		SmilModeAttribute attr = new SmilModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatCountAttribute() {
+		SmilRepeatCountAttribute attr = (SmilRepeatCountAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatCount");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatCountAttribute</code> , See {@odf.attribute smil:repeatCount}
+	 *
+	 * @param smilRepeatCountValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatCountAttribute(String smilRepeatCountValue) {
+		SmilRepeatCountAttribute attr = new SmilRepeatCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatCountValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRepeatDurAttribute() {
+		SmilRepeatDurAttribute attr = (SmilRepeatDurAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "repeatDur");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRepeatDurAttribute</code> , See {@odf.attribute smil:repeatDur}
+	 *
+	 * @param smilRepeatDurValue   The type is <code>String</code>
+	 */
+	public void setSmilRepeatDurAttribute(String smilRepeatDurValue) {
+		SmilRepeatDurAttribute attr = new SmilRepeatDurAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRepeatDurValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartAttribute() {
+		SmilRestartAttribute attr = (SmilRestartAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restart");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartAttribute</code> , See {@odf.attribute smil:restart}
+	 *
+	 * @param smilRestartValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartAttribute(String smilRestartValue) {
+		SmilRestartAttribute attr = new SmilRestartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilRestartDefaultAttribute() {
+		SmilRestartDefaultAttribute attr = (SmilRestartDefaultAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "restartDefault");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilRestartDefaultAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilRestartDefaultAttribute</code> , See {@odf.attribute smil:restartDefault}
+	 *
+	 * @param smilRestartDefaultValue   The type is <code>String</code>
+	 */
+	public void setSmilRestartDefaultAttribute(String smilRestartDefaultValue) {
+		SmilRestartDefaultAttribute attr = new SmilRestartDefaultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilRestartDefaultValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilSubtypeAttribute</code> , See {@odf.attribute smil:subtype}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilSubtypeAttribute() {
+		SmilSubtypeAttribute attr = (SmilSubtypeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "subtype");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilSubtypeAttribute</code> , See {@odf.attribute smil:subtype}
+	 *
+	 * @param smilSubtypeValue   The type is <code>String</code>
+	 */
+	public void setSmilSubtypeAttribute(String smilSubtypeValue) {
+		SmilSubtypeAttribute attr = new SmilSubtypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilSubtypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTargetElementAttribute() {
+		SmilTargetElementAttribute attr = (SmilTargetElementAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "targetElement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTargetElementAttribute</code> , See {@odf.attribute smil:targetElement}
+	 *
+	 * @param smilTargetElementValue   The type is <code>String</code>
+	 */
+	public void setSmilTargetElementAttribute(String smilTargetElementValue) {
+		SmilTargetElementAttribute attr = new SmilTargetElementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTargetElementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilToAttribute() {
+		SmilToAttribute attr = (SmilToAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilToAttribute</code> , See {@odf.attribute smil:to}
+	 *
+	 * @param smilToValue   The type is <code>String</code>
+	 */
+	public void setSmilToAttribute(String smilToValue) {
+		SmilToAttribute attr = new SmilToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilToValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTypeAttribute</code> , See {@odf.attribute smil:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTypeAttribute() {
+		SmilTypeAttribute attr = (SmilTypeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTypeAttribute</code> , See {@odf.attribute smil:type}
+	 *
+	 * @param smilTypeValue   The type is <code>String</code>
+	 */
+	public void setSmilTypeAttribute(String smilTypeValue) {
+		SmilTypeAttribute attr = new SmilTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilValuesAttribute() {
+		SmilValuesAttribute attr = (SmilValuesAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "values");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilValuesAttribute</code> , See {@odf.attribute smil:values}
+	 *
+	 * @param smilValuesValue   The type is <code>String</code>
+	 */
+	public void setSmilValuesAttribute(String smilValuesValue) {
+		SmilValuesAttribute attr = new SmilValuesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilValuesValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartAxisElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartAxisElement.java
new file mode 100644
index 0000000..ee61d3e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartAxisElement.java
@@ -0,0 +1,183 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDimensionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:axis}.
+ *
+ */
+public class ChartAxisElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "axis");
+
+	/**
+	 * Create the instance of <code>ChartAxisElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartAxisElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:axis}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDimensionAttribute</code> , See {@odf.attribute chart:dimension}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartDimensionAttribute() {
+		ChartDimensionAttribute attr = (ChartDimensionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "dimension");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDimensionAttribute</code> , See {@odf.attribute chart:dimension}
+	 *
+	 * @param chartDimensionValue   The type is <code>String</code>
+	 */
+	public void setChartDimensionAttribute(String chartDimensionValue) {
+		ChartDimensionAttribute attr = new ChartDimensionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartDimensionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartNameAttribute</code> , See {@odf.attribute chart:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartNameAttribute() {
+		ChartNameAttribute attr = (ChartNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartNameAttribute</code> , See {@odf.attribute chart:name}
+	 *
+	 * @param chartNameValue   The type is <code>String</code>
+	 */
+	public void setChartNameAttribute(String chartNameValue) {
+		ChartNameAttribute attr = new ChartNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element chart:categories}.
+	 *
+	 * @return the element {@odf.element chart:categories}
+	 */
+	public ChartCategoriesElement newChartCategoriesElement() {
+		ChartCategoriesElement chartCategories = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartCategoriesElement.class);
+		this.appendChild(chartCategories);
+		return chartCategories;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:grid}.
+	 *
+	 * @return the element {@odf.element chart:grid}
+	 */
+	public ChartGridElement newChartGridElement() {
+		ChartGridElement chartGrid = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartGridElement.class);
+		this.appendChild(chartGrid);
+		return chartGrid;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:title}.
+	 *
+	 * @return the element {@odf.element chart:title}
+	 */
+	public ChartTitleElement newChartTitleElement() {
+		ChartTitleElement chartTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartTitleElement.class);
+		this.appendChild(chartTitle);
+		return chartTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartCategoriesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartCategoriesElement.java
new file mode 100644
index 0000000..b3a45e5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartCategoriesElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:categories}.
+ *
+ */
+public class ChartCategoriesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "categories");
+
+	/**
+	 * Create the instance of <code>ChartCategoriesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartCategoriesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:categories}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAddressAttribute() {
+		TableCellRangeAddressAttribute attr = (TableCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @param tableCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAddressAttribute(String tableCellRangeAddressValue) {
+		TableCellRangeAddressAttribute attr = new TableCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeAddressValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartChartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartChartElement.java
new file mode 100644
index 0000000..1aac1ea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartChartElement.java
@@ -0,0 +1,373 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartColumnMappingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartRowMappingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:chart}.
+ *
+ */
+public class ChartChartElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "chart");
+
+	/**
+	 * Create the instance of <code>ChartChartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartChartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:chart}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartClassAttribute</code> , See {@odf.attribute chart:class}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartClassAttribute() {
+		ChartClassAttribute attr = (ChartClassAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartClassAttribute</code> , See {@odf.attribute chart:class}
+	 *
+	 * @param chartClassValue   The type is <code>String</code>
+	 */
+	public void setChartClassAttribute(String chartClassValue) {
+		ChartClassAttribute attr = new ChartClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartColumnMappingAttribute</code> , See {@odf.attribute chart:column-mapping}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartColumnMappingAttribute() {
+		ChartColumnMappingAttribute attr = (ChartColumnMappingAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "column-mapping");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartColumnMappingAttribute</code> , See {@odf.attribute chart:column-mapping}
+	 *
+	 * @param chartColumnMappingValue   The type is <code>String</code>
+	 */
+	public void setChartColumnMappingAttribute(String chartColumnMappingValue) {
+		ChartColumnMappingAttribute attr = new ChartColumnMappingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartColumnMappingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartRowMappingAttribute</code> , See {@odf.attribute chart:row-mapping}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartRowMappingAttribute() {
+		ChartRowMappingAttribute attr = (ChartRowMappingAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "row-mapping");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartRowMappingAttribute</code> , See {@odf.attribute chart:row-mapping}
+	 *
+	 * @param chartRowMappingValue   The type is <code>String</code>
+	 */
+	public void setChartRowMappingAttribute(String chartRowMappingValue) {
+		ChartRowMappingAttribute attr = new ChartRowMappingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartRowMappingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element chart:footer}.
+	 *
+	 * @return the element {@odf.element chart:footer}
+	 */
+	public ChartFooterElement newChartFooterElement() {
+		ChartFooterElement chartFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartFooterElement.class);
+		this.appendChild(chartFooter);
+		return chartFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:legend}.
+	 *
+	 * @param chartLegendPositionValue  the <code>String</code> value of <code>ChartLegendPositionAttribute</code>, see {@odf.attribute  chart:legend-position} at specification
+	 * @param styleLegendExpansionValue  the <code>String</code> value of <code>StyleLegendExpansionAttribute</code>, see {@odf.attribute  style:legend-expansion} at specification
+	 * @return the element {@odf.element chart:legend}
+	 */
+	 public ChartLegendElement newChartLegendElement(String chartLegendPositionValue, String styleLegendExpansionValue) {
+		ChartLegendElement chartLegend = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartLegendElement.class);
+		chartLegend.setChartLegendPositionAttribute(chartLegendPositionValue);
+		chartLegend.setStyleLegendExpansionAttribute(styleLegendExpansionValue);
+		this.appendChild(chartLegend);
+		return chartLegend;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:plot-area}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element chart:plot-area}
+	 */
+	public ChartPlotAreaElement newChartPlotAreaElement() {
+		ChartPlotAreaElement chartPlotArea = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartPlotAreaElement.class);
+		this.appendChild(chartPlotArea);
+		return chartPlotArea;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:subtitle}.
+	 *
+	 * @return the element {@odf.element chart:subtitle}
+	 */
+	public ChartSubtitleElement newChartSubtitleElement() {
+		ChartSubtitleElement chartSubtitle = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartSubtitleElement.class);
+		this.appendChild(chartSubtitle);
+		return chartSubtitle;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:title}.
+	 *
+	 * @return the element {@odf.element chart:title}
+	 */
+	public ChartTitleElement newChartTitleElement() {
+		ChartTitleElement chartTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartTitleElement.class);
+		this.appendChild(chartTitle);
+		return chartTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDataLabelElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDataLabelElement.java
new file mode 100644
index 0000000..4992629
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDataLabelElement.java
@@ -0,0 +1,160 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:data-label}.
+ *
+ */
+public class ChartDataLabelElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "data-label");
+
+	/**
+	 * Create the instance of <code>ChartDataLabelElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartDataLabelElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:data-label}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDataPointElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDataPointElement.java
new file mode 100644
index 0000000..5812c70
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDataPointElement.java
@@ -0,0 +1,161 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartRepeatedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:data-point}.
+ *
+ */
+public class ChartDataPointElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "data-point");
+
+	/**
+	 * Create the instance of <code>ChartDataPointElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartDataPointElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:data-point}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartRepeatedAttribute</code> , See {@odf.attribute chart:repeated}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartRepeatedAttribute() {
+		ChartRepeatedAttribute attr = (ChartRepeatedAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "repeated");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartRepeatedAttribute</code> , See {@odf.attribute chart:repeated}
+	 *
+	 * @param chartRepeatedValue   The type is <code>Integer</code>
+	 */
+	public void setChartRepeatedAttribute(Integer chartRepeatedValue) {
+		ChartRepeatedAttribute attr = new ChartRepeatedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartRepeatedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element chart:data-label}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element chart:data-label}
+	 */
+	public ChartDataLabelElement newChartDataLabelElement() {
+		ChartDataLabelElement chartDataLabel = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartDataLabelElement.class);
+		this.appendChild(chartDataLabel);
+		return chartDataLabel;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDomainElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDomainElement.java
new file mode 100644
index 0000000..303f9ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartDomainElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:domain}.
+ *
+ */
+public class ChartDomainElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "domain");
+
+	/**
+	 * Create the instance of <code>ChartDomainElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartDomainElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:domain}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAddressAttribute() {
+		TableCellRangeAddressAttribute attr = (TableCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @param tableCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAddressAttribute(String tableCellRangeAddressValue) {
+		TableCellRangeAddressAttribute attr = new TableCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeAddressValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartEquationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartEquationElement.java
new file mode 100644
index 0000000..d664ee5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartEquationElement.java
@@ -0,0 +1,235 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAutomaticContentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDisplayEquationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDisplayRSquareAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:equation}.
+ *
+ */
+public class ChartEquationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "equation");
+
+	/**
+	 * Create the instance of <code>ChartEquationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartEquationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:equation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAutomaticContentAttribute</code> , See {@odf.attribute chart:automatic-content}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartAutomaticContentAttribute() {
+		ChartAutomaticContentAttribute attr = (ChartAutomaticContentAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "automatic-content");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(ChartAutomaticContentAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAutomaticContentAttribute</code> , See {@odf.attribute chart:automatic-content}
+	 *
+	 * @param chartAutomaticContentValue   The type is <code>Boolean</code>
+	 */
+	public void setChartAutomaticContentAttribute(Boolean chartAutomaticContentValue) {
+		ChartAutomaticContentAttribute attr = new ChartAutomaticContentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartAutomaticContentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDisplayEquationAttribute</code> , See {@odf.attribute chart:display-equation}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartDisplayEquationAttribute() {
+		ChartDisplayEquationAttribute attr = (ChartDisplayEquationAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "display-equation");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(ChartDisplayEquationAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDisplayEquationAttribute</code> , See {@odf.attribute chart:display-equation}
+	 *
+	 * @param chartDisplayEquationValue   The type is <code>Boolean</code>
+	 */
+	public void setChartDisplayEquationAttribute(Boolean chartDisplayEquationValue) {
+		ChartDisplayEquationAttribute attr = new ChartDisplayEquationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartDisplayEquationValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDisplayRSquareAttribute</code> , See {@odf.attribute chart:display-r-square}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartDisplayRSquareAttribute() {
+		ChartDisplayRSquareAttribute attr = (ChartDisplayRSquareAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "display-r-square");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(ChartDisplayRSquareAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDisplayRSquareAttribute</code> , See {@odf.attribute chart:display-r-square}
+	 *
+	 * @param chartDisplayRSquareValue   The type is <code>Boolean</code>
+	 */
+	public void setChartDisplayRSquareAttribute(Boolean chartDisplayRSquareValue) {
+		ChartDisplayRSquareAttribute attr = new ChartDisplayRSquareAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartDisplayRSquareValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartErrorIndicatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartErrorIndicatorElement.java
new file mode 100644
index 0000000..7948093
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartErrorIndicatorElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDimensionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:error-indicator}.
+ *
+ */
+public class ChartErrorIndicatorElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "error-indicator");
+
+	/**
+	 * Create the instance of <code>ChartErrorIndicatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartErrorIndicatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:error-indicator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDimensionAttribute</code> , See {@odf.attribute chart:dimension}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartDimensionAttribute() {
+		ChartDimensionAttribute attr = (ChartDimensionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "dimension");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDimensionAttribute</code> , See {@odf.attribute chart:dimension}
+	 *
+	 * @param chartDimensionValue   The type is <code>String</code>
+	 */
+	public void setChartDimensionAttribute(String chartDimensionValue) {
+		ChartDimensionAttribute attr = new ChartDimensionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartDimensionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartFloorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartFloorElement.java
new file mode 100644
index 0000000..38a0560
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartFloorElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:floor}.
+ *
+ */
+public class ChartFloorElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "floor");
+
+	/**
+	 * Create the instance of <code>ChartFloorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartFloorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:floor}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartFooterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartFooterElement.java
new file mode 100644
index 0000000..89bb908
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartFooterElement.java
@@ -0,0 +1,185 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:footer}.
+ *
+ */
+public class ChartFooterElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "footer");
+
+	/**
+	 * Create the instance of <code>ChartFooterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartFooterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:footer}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAttribute</code> , See {@odf.attribute table:cell-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAttribute() {
+		TableCellRangeAttribute attr = (TableCellRangeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAttribute</code> , See {@odf.attribute table:cell-range}
+	 *
+	 * @param tableCellRangeValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAttribute(String tableCellRangeValue) {
+		TableCellRangeAttribute attr = new TableCellRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartGridElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartGridElement.java
new file mode 100644
index 0000000..68df17b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartGridElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:grid}.
+ *
+ */
+public class ChartGridElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "grid");
+
+	/**
+	 * Create the instance of <code>ChartGridElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartGridElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:grid}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartClassAttribute</code> , See {@odf.attribute chart:class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartClassAttribute() {
+		ChartClassAttribute attr = (ChartClassAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return ChartClassAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartClassAttribute</code> , See {@odf.attribute chart:class}
+	 *
+	 * @param chartClassValue   The type is <code>String</code>
+	 */
+	public void setChartClassAttribute(String chartClassValue) {
+		ChartClassAttribute attr = new ChartClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartLabelSeparatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartLabelSeparatorElement.java
new file mode 100644
index 0000000..aed33c7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartLabelSeparatorElement.java
@@ -0,0 +1,87 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:label-separator}.
+ *
+ */
+public class ChartLabelSeparatorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "label-separator");
+
+	/**
+	 * Create the instance of <code>ChartLabelSeparatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartLabelSeparatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:label-separator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartLegendElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartLegendElement.java
new file mode 100644
index 0000000..9cd9115
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartLegendElement.java
@@ -0,0 +1,266 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLegendAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLegendPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLegendExpansionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLegendExpansionAspectRatioAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:legend}.
+ *
+ */
+public class ChartLegendElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "legend");
+
+	/**
+	 * Create the instance of <code>ChartLegendElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartLegendElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:legend}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLegendAlignAttribute</code> , See {@odf.attribute chart:legend-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartLegendAlignAttribute() {
+		ChartLegendAlignAttribute attr = (ChartLegendAlignAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "legend-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLegendAlignAttribute</code> , See {@odf.attribute chart:legend-align}
+	 *
+	 * @param chartLegendAlignValue   The type is <code>String</code>
+	 */
+	public void setChartLegendAlignAttribute(String chartLegendAlignValue) {
+		ChartLegendAlignAttribute attr = new ChartLegendAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartLegendAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLegendPositionAttribute</code> , See {@odf.attribute chart:legend-position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartLegendPositionAttribute() {
+		ChartLegendPositionAttribute attr = (ChartLegendPositionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "legend-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLegendPositionAttribute</code> , See {@odf.attribute chart:legend-position}
+	 *
+	 * @param chartLegendPositionValue   The type is <code>String</code>
+	 */
+	public void setChartLegendPositionAttribute(String chartLegendPositionValue) {
+		ChartLegendPositionAttribute attr = new ChartLegendPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartLegendPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLegendExpansionAttribute</code> , See {@odf.attribute style:legend-expansion}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLegendExpansionAttribute() {
+		StyleLegendExpansionAttribute attr = (StyleLegendExpansionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "legend-expansion");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLegendExpansionAttribute</code> , See {@odf.attribute style:legend-expansion}
+	 *
+	 * @param styleLegendExpansionValue   The type is <code>String</code>
+	 */
+	public void setStyleLegendExpansionAttribute(String styleLegendExpansionValue) {
+		StyleLegendExpansionAttribute attr = new StyleLegendExpansionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLegendExpansionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLegendExpansionAspectRatioAttribute</code> , See {@odf.attribute style:legend-expansion-aspect-ratio}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getStyleLegendExpansionAspectRatioAttribute() {
+		StyleLegendExpansionAspectRatioAttribute attr = (StyleLegendExpansionAspectRatioAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "legend-expansion-aspect-ratio");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLegendExpansionAspectRatioAttribute</code> , See {@odf.attribute style:legend-expansion-aspect-ratio}
+	 *
+	 * @param styleLegendExpansionAspectRatioValue   The type is <code>Double</code>
+	 */
+	public void setStyleLegendExpansionAspectRatioAttribute(Double styleLegendExpansionAspectRatioValue) {
+		StyleLegendExpansionAspectRatioAttribute attr = new StyleLegendExpansionAspectRatioAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(styleLegendExpansionAspectRatioValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartMeanValueElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartMeanValueElement.java
new file mode 100644
index 0000000..dfcf56b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartMeanValueElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:mean-value}.
+ *
+ */
+public class ChartMeanValueElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "mean-value");
+
+	/**
+	 * Create the instance of <code>ChartMeanValueElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartMeanValueElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:mean-value}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartPlotAreaElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartPlotAreaElement.java
new file mode 100644
index 0000000..38f4eb6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartPlotAreaElement.java
@@ -0,0 +1,641 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dLightElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDataSourceHasLabelsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dAmbientColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dFocalLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dLightingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dProjectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadeModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadowSlantAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVpnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVrpAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVupAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:plot-area}.
+ *
+ */
+public class ChartPlotAreaElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "plot-area");
+
+	/**
+	 * Create the instance of <code>ChartPlotAreaElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartPlotAreaElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:plot-area}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDataSourceHasLabelsAttribute</code> , See {@odf.attribute chart:data-source-has-labels}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartDataSourceHasLabelsAttribute() {
+		ChartDataSourceHasLabelsAttribute attr = (ChartDataSourceHasLabelsAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "data-source-has-labels");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return ChartDataSourceHasLabelsAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDataSourceHasLabelsAttribute</code> , See {@odf.attribute chart:data-source-has-labels}
+	 *
+	 * @param chartDataSourceHasLabelsValue   The type is <code>String</code>
+	 */
+	public void setChartDataSourceHasLabelsAttribute(String chartDataSourceHasLabelsValue) {
+		ChartDataSourceHasLabelsAttribute attr = new ChartDataSourceHasLabelsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartDataSourceHasLabelsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dAmbientColorAttribute</code> , See {@odf.attribute dr3d:ambient-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dAmbientColorAttribute() {
+		Dr3dAmbientColorAttribute attr = (Dr3dAmbientColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "ambient-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dAmbientColorAttribute</code> , See {@odf.attribute dr3d:ambient-color}
+	 *
+	 * @param dr3dAmbientColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dAmbientColorAttribute(String dr3dAmbientColorValue) {
+		Dr3dAmbientColorAttribute attr = new Dr3dAmbientColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dAmbientColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dDistanceAttribute</code> , See {@odf.attribute dr3d:distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dDistanceAttribute() {
+		Dr3dDistanceAttribute attr = (Dr3dDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dDistanceAttribute</code> , See {@odf.attribute dr3d:distance}
+	 *
+	 * @param dr3dDistanceValue   The type is <code>String</code>
+	 */
+	public void setDr3dDistanceAttribute(String dr3dDistanceValue) {
+		Dr3dDistanceAttribute attr = new Dr3dDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dFocalLengthAttribute</code> , See {@odf.attribute dr3d:focal-length}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dFocalLengthAttribute() {
+		Dr3dFocalLengthAttribute attr = (Dr3dFocalLengthAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "focal-length");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dFocalLengthAttribute</code> , See {@odf.attribute dr3d:focal-length}
+	 *
+	 * @param dr3dFocalLengthValue   The type is <code>String</code>
+	 */
+	public void setDr3dFocalLengthAttribute(String dr3dFocalLengthValue) {
+		Dr3dFocalLengthAttribute attr = new Dr3dFocalLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dFocalLengthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dLightingModeAttribute</code> , See {@odf.attribute dr3d:lighting-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dLightingModeAttribute() {
+		Dr3dLightingModeAttribute attr = (Dr3dLightingModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "lighting-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dLightingModeAttribute</code> , See {@odf.attribute dr3d:lighting-mode}
+	 *
+	 * @param dr3dLightingModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dLightingModeAttribute(String dr3dLightingModeValue) {
+		Dr3dLightingModeAttribute attr = new Dr3dLightingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dLightingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dProjectionAttribute</code> , See {@odf.attribute dr3d:projection}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dProjectionAttribute() {
+		Dr3dProjectionAttribute attr = (Dr3dProjectionAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "projection");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dProjectionAttribute</code> , See {@odf.attribute dr3d:projection}
+	 *
+	 * @param dr3dProjectionValue   The type is <code>String</code>
+	 */
+	public void setDr3dProjectionAttribute(String dr3dProjectionValue) {
+		Dr3dProjectionAttribute attr = new Dr3dProjectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dProjectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShadeModeAttribute</code> , See {@odf.attribute dr3d:shade-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShadeModeAttribute() {
+		Dr3dShadeModeAttribute attr = (Dr3dShadeModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shade-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShadeModeAttribute</code> , See {@odf.attribute dr3d:shade-mode}
+	 *
+	 * @param dr3dShadeModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dShadeModeAttribute(String dr3dShadeModeValue) {
+		Dr3dShadeModeAttribute attr = new Dr3dShadeModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShadeModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShadowSlantAttribute</code> , See {@odf.attribute dr3d:shadow-slant}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShadowSlantAttribute() {
+		Dr3dShadowSlantAttribute attr = (Dr3dShadowSlantAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shadow-slant");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShadowSlantAttribute</code> , See {@odf.attribute dr3d:shadow-slant}
+	 *
+	 * @param dr3dShadowSlantValue   The type is <code>String</code>
+	 */
+	public void setDr3dShadowSlantAttribute(String dr3dShadowSlantValue) {
+		Dr3dShadowSlantAttribute attr = new Dr3dShadowSlantAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShadowSlantValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTransformAttribute() {
+		Dr3dTransformAttribute attr = (Dr3dTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @param dr3dTransformValue   The type is <code>String</code>
+	 */
+	public void setDr3dTransformAttribute(String dr3dTransformValue) {
+		Dr3dTransformAttribute attr = new Dr3dTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVpnAttribute</code> , See {@odf.attribute dr3d:vpn}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dVpnAttribute() {
+		Dr3dVpnAttribute attr = (Dr3dVpnAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vpn");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVpnAttribute</code> , See {@odf.attribute dr3d:vpn}
+	 *
+	 * @param dr3dVpnValue   The type is <code>String</code>
+	 */
+	public void setDr3dVpnAttribute(String dr3dVpnValue) {
+		Dr3dVpnAttribute attr = new Dr3dVpnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dVpnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVrpAttribute</code> , See {@odf.attribute dr3d:vrp}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dVrpAttribute() {
+		Dr3dVrpAttribute attr = (Dr3dVrpAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vrp");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVrpAttribute</code> , See {@odf.attribute dr3d:vrp}
+	 *
+	 * @param dr3dVrpValue   The type is <code>String</code>
+	 */
+	public void setDr3dVrpAttribute(String dr3dVrpValue) {
+		Dr3dVrpAttribute attr = new Dr3dVrpAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dVrpValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVupAttribute</code> , See {@odf.attribute dr3d:vup}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dVupAttribute() {
+		Dr3dVupAttribute attr = (Dr3dVupAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vup");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVupAttribute</code> , See {@odf.attribute dr3d:vup}
+	 *
+	 * @param dr3dVupValue   The type is <code>String</code>
+	 */
+	public void setDr3dVupAttribute(String dr3dVupValue) {
+		Dr3dVupAttribute attr = new Dr3dVupAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dVupValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAddressAttribute() {
+		TableCellRangeAddressAttribute attr = (TableCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @param tableCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAddressAttribute(String tableCellRangeAddressValue) {
+		TableCellRangeAddressAttribute attr = new TableCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element chart:axis}.
+	 *
+	 * @param chartDimensionValue  the <code>String</code> value of <code>ChartDimensionAttribute</code>, see {@odf.attribute  chart:dimension} at specification
+	 * @return the element {@odf.element chart:axis}
+	 */
+	 public ChartAxisElement newChartAxisElement(String chartDimensionValue) {
+		ChartAxisElement chartAxis = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartAxisElement.class);
+		chartAxis.setChartDimensionAttribute(chartDimensionValue);
+		this.appendChild(chartAxis);
+		return chartAxis;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:floor}.
+	 *
+	 * @return the element {@odf.element chart:floor}
+	 */
+	public ChartFloorElement newChartFloorElement() {
+		ChartFloorElement chartFloor = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartFloorElement.class);
+		this.appendChild(chartFloor);
+		return chartFloor;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:series}.
+	 *
+	 * @return the element {@odf.element chart:series}
+	 */
+	public ChartSeriesElement newChartSeriesElement() {
+		ChartSeriesElement chartSeries = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartSeriesElement.class);
+		this.appendChild(chartSeries);
+		return chartSeries;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:stock-gain-marker}.
+	 *
+	 * @return the element {@odf.element chart:stock-gain-marker}
+	 */
+	public ChartStockGainMarkerElement newChartStockGainMarkerElement() {
+		ChartStockGainMarkerElement chartStockGainMarker = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartStockGainMarkerElement.class);
+		this.appendChild(chartStockGainMarker);
+		return chartStockGainMarker;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:stock-loss-marker}.
+	 *
+	 * @return the element {@odf.element chart:stock-loss-marker}
+	 */
+	public ChartStockLossMarkerElement newChartStockLossMarkerElement() {
+		ChartStockLossMarkerElement chartStockLossMarker = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartStockLossMarkerElement.class);
+		this.appendChild(chartStockLossMarker);
+		return chartStockLossMarker;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:stock-range-line}.
+	 *
+	 * @return the element {@odf.element chart:stock-range-line}
+	 */
+	public ChartStockRangeLineElement newChartStockRangeLineElement() {
+		ChartStockRangeLineElement chartStockRangeLine = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartStockRangeLineElement.class);
+		this.appendChild(chartStockRangeLine);
+		return chartStockRangeLine;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:wall}.
+	 *
+	 * @return the element {@odf.element chart:wall}
+	 */
+	public ChartWallElement newChartWallElement() {
+		ChartWallElement chartWall = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartWallElement.class);
+		this.appendChild(chartWall);
+		return chartWall;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:light}.
+	 *
+	 * @param dr3dDirectionValue  the <code>String</code> value of <code>Dr3dDirectionAttribute</code>, see {@odf.attribute  dr3d:direction} at specification
+	 * @return the element {@odf.element dr3d:light}
+	 */
+	 public Dr3dLightElement newDr3dLightElement(String dr3dDirectionValue) {
+		Dr3dLightElement dr3dLight = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dLightElement.class);
+		dr3dLight.setDr3dDirectionAttribute(dr3dDirectionValue);
+		this.appendChild(dr3dLight);
+		return dr3dLight;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartRegressionCurveElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartRegressionCurveElement.java
new file mode 100644
index 0000000..7375ba0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartRegressionCurveElement.java
@@ -0,0 +1,111 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:regression-curve}.
+ *
+ */
+public class ChartRegressionCurveElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "regression-curve");
+
+	/**
+	 * Create the instance of <code>ChartRegressionCurveElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartRegressionCurveElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:regression-curve}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element chart:equation}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element chart:equation}
+	 */
+	public ChartEquationElement newChartEquationElement() {
+		ChartEquationElement chartEquation = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartEquationElement.class);
+		this.appendChild(chartEquation);
+		return chartEquation;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSeriesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSeriesElement.java
new file mode 100644
index 0000000..3075abc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSeriesElement.java
@@ -0,0 +1,293 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAttachedAxisAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLabelCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartValuesCellRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:series}.
+ *
+ */
+public class ChartSeriesElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "series");
+
+	/**
+	 * Create the instance of <code>ChartSeriesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartSeriesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:series}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAttachedAxisAttribute</code> , See {@odf.attribute chart:attached-axis}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartAttachedAxisAttribute() {
+		ChartAttachedAxisAttribute attr = (ChartAttachedAxisAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "attached-axis");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAttachedAxisAttribute</code> , See {@odf.attribute chart:attached-axis}
+	 *
+	 * @param chartAttachedAxisValue   The type is <code>String</code>
+	 */
+	public void setChartAttachedAxisAttribute(String chartAttachedAxisValue) {
+		ChartAttachedAxisAttribute attr = new ChartAttachedAxisAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartAttachedAxisValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartClassAttribute</code> , See {@odf.attribute chart:class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartClassAttribute() {
+		ChartClassAttribute attr = (ChartClassAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartClassAttribute</code> , See {@odf.attribute chart:class}
+	 *
+	 * @param chartClassValue   The type is <code>String</code>
+	 */
+	public void setChartClassAttribute(String chartClassValue) {
+		ChartClassAttribute attr = new ChartClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLabelCellAddressAttribute</code> , See {@odf.attribute chart:label-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartLabelCellAddressAttribute() {
+		ChartLabelCellAddressAttribute attr = (ChartLabelCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "label-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLabelCellAddressAttribute</code> , See {@odf.attribute chart:label-cell-address}
+	 *
+	 * @param chartLabelCellAddressValue   The type is <code>String</code>
+	 */
+	public void setChartLabelCellAddressAttribute(String chartLabelCellAddressValue) {
+		ChartLabelCellAddressAttribute attr = new ChartLabelCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartLabelCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartValuesCellRangeAddressAttribute</code> , See {@odf.attribute chart:values-cell-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartValuesCellRangeAddressAttribute() {
+		ChartValuesCellRangeAddressAttribute attr = (ChartValuesCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "values-cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartValuesCellRangeAddressAttribute</code> , See {@odf.attribute chart:values-cell-range-address}
+	 *
+	 * @param chartValuesCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setChartValuesCellRangeAddressAttribute(String chartValuesCellRangeAddressValue) {
+		ChartValuesCellRangeAddressAttribute attr = new ChartValuesCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartValuesCellRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element chart:data-label}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element chart:data-label}
+	 */
+	public ChartDataLabelElement newChartDataLabelElement() {
+		ChartDataLabelElement chartDataLabel = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartDataLabelElement.class);
+		this.appendChild(chartDataLabel);
+		return chartDataLabel;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:data-point}.
+	 *
+	 * @return the element {@odf.element chart:data-point}
+	 */
+	public ChartDataPointElement newChartDataPointElement() {
+		ChartDataPointElement chartDataPoint = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartDataPointElement.class);
+		this.appendChild(chartDataPoint);
+		return chartDataPoint;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:domain}.
+	 *
+	 * @return the element {@odf.element chart:domain}
+	 */
+	public ChartDomainElement newChartDomainElement() {
+		ChartDomainElement chartDomain = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartDomainElement.class);
+		this.appendChild(chartDomain);
+		return chartDomain;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:error-indicator}.
+	 *
+	 * @param chartDimensionValue  the <code>String</code> value of <code>ChartDimensionAttribute</code>, see {@odf.attribute  chart:dimension} at specification
+	 * @return the element {@odf.element chart:error-indicator}
+	 */
+	 public ChartErrorIndicatorElement newChartErrorIndicatorElement(String chartDimensionValue) {
+		ChartErrorIndicatorElement chartErrorIndicator = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartErrorIndicatorElement.class);
+		chartErrorIndicator.setChartDimensionAttribute(chartDimensionValue);
+		this.appendChild(chartErrorIndicator);
+		return chartErrorIndicator;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:mean-value}.
+	 *
+	 * @return the element {@odf.element chart:mean-value}
+	 */
+	public ChartMeanValueElement newChartMeanValueElement() {
+		ChartMeanValueElement chartMeanValue = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartMeanValueElement.class);
+		this.appendChild(chartMeanValue);
+		return chartMeanValue;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:regression-curve}.
+	 *
+	 * @return the element {@odf.element chart:regression-curve}
+	 */
+	public ChartRegressionCurveElement newChartRegressionCurveElement() {
+		ChartRegressionCurveElement chartRegressionCurve = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartRegressionCurveElement.class);
+		this.appendChild(chartRegressionCurve);
+		return chartRegressionCurve;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockGainMarkerElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockGainMarkerElement.java
new file mode 100644
index 0000000..748bef5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockGainMarkerElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:stock-gain-marker}.
+ *
+ */
+public class ChartStockGainMarkerElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "stock-gain-marker");
+
+	/**
+	 * Create the instance of <code>ChartStockGainMarkerElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartStockGainMarkerElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:stock-gain-marker}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockLossMarkerElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockLossMarkerElement.java
new file mode 100644
index 0000000..1e0ed98
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockLossMarkerElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:stock-loss-marker}.
+ *
+ */
+public class ChartStockLossMarkerElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "stock-loss-marker");
+
+	/**
+	 * Create the instance of <code>ChartStockLossMarkerElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartStockLossMarkerElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:stock-loss-marker}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockRangeLineElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockRangeLineElement.java
new file mode 100644
index 0000000..690421f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartStockRangeLineElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:stock-range-line}.
+ *
+ */
+public class ChartStockRangeLineElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "stock-range-line");
+
+	/**
+	 * Create the instance of <code>ChartStockRangeLineElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartStockRangeLineElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:stock-range-line}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSubtitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSubtitleElement.java
new file mode 100644
index 0000000..71c5958
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSubtitleElement.java
@@ -0,0 +1,185 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:subtitle}.
+ *
+ */
+public class ChartSubtitleElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "subtitle");
+
+	/**
+	 * Create the instance of <code>ChartSubtitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartSubtitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:subtitle}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAttribute</code> , See {@odf.attribute table:cell-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAttribute() {
+		TableCellRangeAttribute attr = (TableCellRangeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAttribute</code> , See {@odf.attribute table:cell-range}
+	 *
+	 * @param tableCellRangeValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAttribute(String tableCellRangeValue) {
+		TableCellRangeAttribute attr = new TableCellRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSymbolImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSymbolImageElement.java
new file mode 100644
index 0000000..5301cab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartSymbolImageElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:symbol-image}.
+ *
+ */
+public class ChartSymbolImageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "symbol-image");
+
+	/**
+	 * Create the instance of <code>ChartSymbolImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartSymbolImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:symbol-image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartTitleElement.java
new file mode 100644
index 0000000..3f54fff
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartTitleElement.java
@@ -0,0 +1,185 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:title}.
+ *
+ */
+public class ChartTitleElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "title");
+
+	/**
+	 * Create the instance of <code>ChartTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAttribute</code> , See {@odf.attribute table:cell-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAttribute() {
+		TableCellRangeAttribute attr = (TableCellRangeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAttribute</code> , See {@odf.attribute table:cell-range}
+	 *
+	 * @param tableCellRangeValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAttribute(String tableCellRangeValue) {
+		TableCellRangeAttribute attr = new TableCellRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartWallElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartWallElement.java
new file mode 100644
index 0000000..5ff9b70
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/chart/ChartWallElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.chart;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element chart:wall}.
+ *
+ */
+public class ChartWallElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CHART, "wall");
+
+	/**
+	 * Create the instance of <code>ChartWallElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ChartWallElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Chart, OdfName.newName(OdfDocumentNamespace.CHART, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element chart:wall}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartStyleNameAttribute() {
+		ChartStyleNameAttribute attr = (ChartStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStyleNameAttribute</code> , See {@odf.attribute chart:style-name}
+	 *
+	 * @param chartStyleNameValue   The type is <code>String</code>
+	 */
+	public void setChartStyleNameAttribute(String chartStyleNameValue) {
+		ChartStyleNameAttribute attr = new ChartStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemElement.java
new file mode 100644
index 0000000..4ef456d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemElement.java
@@ -0,0 +1,133 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.config;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.config.ConfigNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.config.ConfigTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element config:config-item}.
+ *
+ */
+public class ConfigConfigItemElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "config-item");
+
+	/**
+	 * Create the instance of <code>ConfigConfigItemElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ConfigConfigItemElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element config:config-item}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getConfigNameAttribute() {
+		ConfigNameAttribute attr = (ConfigNameAttribute) getOdfAttribute(OdfDocumentNamespace.CONFIG, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * @param configNameValue   The type is <code>String</code>
+	 */
+	public void setConfigNameAttribute(String configNameValue) {
+		ConfigNameAttribute attr = new ConfigNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(configNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ConfigTypeAttribute</code> , See {@odf.attribute config:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getConfigTypeAttribute() {
+		ConfigTypeAttribute attr = (ConfigTypeAttribute) getOdfAttribute(OdfDocumentNamespace.CONFIG, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ConfigTypeAttribute</code> , See {@odf.attribute config:type}
+	 *
+	 * @param configTypeValue   The type is <code>String</code>
+	 */
+	public void setConfigTypeAttribute(String configTypeValue) {
+		ConfigTypeAttribute attr = new ConfigTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(configTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapEntryElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapEntryElement.java
new file mode 100644
index 0000000..989cba8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapEntryElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.config;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.config.ConfigNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element config:config-item-map-entry}.
+ *
+ */
+public class ConfigConfigItemMapEntryElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "config-item-map-entry");
+
+	/**
+	 * Create the instance of <code>ConfigConfigItemMapEntryElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ConfigConfigItemMapEntryElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element config:config-item-map-entry}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getConfigNameAttribute() {
+		ConfigNameAttribute attr = (ConfigNameAttribute) getOdfAttribute(OdfDocumentNamespace.CONFIG, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * @param configNameValue   The type is <code>String</code>
+	 */
+	public void setConfigNameAttribute(String configNameValue) {
+		ConfigNameAttribute attr = new ConfigNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(configNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @param configTypeValue  the <code>String</code> value of <code>ConfigTypeAttribute</code>, see {@odf.attribute  config:type} at specification
+	 * @return the element {@odf.element config:config-item}
+	 */
+	 public ConfigConfigItemElement newConfigConfigItemElement(String configNameValue, String configTypeValue) {
+		ConfigConfigItemElement configConfigItem = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemElement.class);
+		configConfigItem.setConfigNameAttribute(configNameValue);
+		configConfigItem.setConfigTypeAttribute(configTypeValue);
+		this.appendChild(configConfigItem);
+		return configConfigItem;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-map-indexed}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @return the element {@odf.element config:config-item-map-indexed}
+	 */
+	 public ConfigConfigItemMapIndexedElement newConfigConfigItemMapIndexedElement(String configNameValue) {
+		ConfigConfigItemMapIndexedElement configConfigItemMapIndexed = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemMapIndexedElement.class);
+		configConfigItemMapIndexed.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemMapIndexed);
+		return configConfigItemMapIndexed;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-map-named}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @return the element {@odf.element config:config-item-map-named}
+	 */
+	 public ConfigConfigItemMapNamedElement newConfigConfigItemMapNamedElement(String configNameValue) {
+		ConfigConfigItemMapNamedElement configConfigItemMapNamed = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemMapNamedElement.class);
+		configConfigItemMapNamed.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemMapNamed);
+		return configConfigItemMapNamed;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-set}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @return the element {@odf.element config:config-item-set}
+	 */
+	 public ConfigConfigItemSetElement newConfigConfigItemSetElement(String configNameValue) {
+		ConfigConfigItemSetElement configConfigItemSet = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemSetElement.class);
+		configConfigItemSet.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemSet);
+		return configConfigItemSet;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapIndexedElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapIndexedElement.java
new file mode 100644
index 0000000..b23306c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapIndexedElement.java
@@ -0,0 +1,111 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.config;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.config.ConfigNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element config:config-item-map-indexed}.
+ *
+ */
+public class ConfigConfigItemMapIndexedElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "config-item-map-indexed");
+
+	/**
+	 * Create the instance of <code>ConfigConfigItemMapIndexedElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ConfigConfigItemMapIndexedElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element config:config-item-map-indexed}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getConfigNameAttribute() {
+		ConfigNameAttribute attr = (ConfigNameAttribute) getOdfAttribute(OdfDocumentNamespace.CONFIG, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * @param configNameValue   The type is <code>String</code>
+	 */
+	public void setConfigNameAttribute(String configNameValue) {
+		ConfigNameAttribute attr = new ConfigNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(configNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-map-entry}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element config:config-item-map-entry}
+	 */
+	public ConfigConfigItemMapEntryElement newConfigConfigItemMapEntryElement() {
+		ConfigConfigItemMapEntryElement configConfigItemMapEntry = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemMapEntryElement.class);
+		this.appendChild(configConfigItemMapEntry);
+		return configConfigItemMapEntry;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapNamedElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapNamedElement.java
new file mode 100644
index 0000000..2e8813b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemMapNamedElement.java
@@ -0,0 +1,111 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.config;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.config.ConfigNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element config:config-item-map-named}.
+ *
+ */
+public class ConfigConfigItemMapNamedElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "config-item-map-named");
+
+	/**
+	 * Create the instance of <code>ConfigConfigItemMapNamedElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ConfigConfigItemMapNamedElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element config:config-item-map-named}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getConfigNameAttribute() {
+		ConfigNameAttribute attr = (ConfigNameAttribute) getOdfAttribute(OdfDocumentNamespace.CONFIG, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * @param configNameValue   The type is <code>String</code>
+	 */
+	public void setConfigNameAttribute(String configNameValue) {
+		ConfigNameAttribute attr = new ConfigNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(configNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-map-entry}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element config:config-item-map-entry}
+	 */
+	public ConfigConfigItemMapEntryElement newConfigConfigItemMapEntryElement() {
+		ConfigConfigItemMapEntryElement configConfigItemMapEntry = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemMapEntryElement.class);
+		this.appendChild(configConfigItemMapEntry);
+		return configConfigItemMapEntry;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemSetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemSetElement.java
new file mode 100644
index 0000000..f4b05a2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/config/ConfigConfigItemSetElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.config;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.config.ConfigNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element config:config-item-set}.
+ *
+ */
+public class ConfigConfigItemSetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.CONFIG, "config-item-set");
+
+	/**
+	 * Create the instance of <code>ConfigConfigItemSetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ConfigConfigItemSetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element config:config-item-set}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getConfigNameAttribute() {
+		ConfigNameAttribute attr = (ConfigNameAttribute) getOdfAttribute(OdfDocumentNamespace.CONFIG, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ConfigNameAttribute</code> , See {@odf.attribute config:name}
+	 *
+	 * @param configNameValue   The type is <code>String</code>
+	 */
+	public void setConfigNameAttribute(String configNameValue) {
+		ConfigNameAttribute attr = new ConfigNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(configNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @param configTypeValue  the <code>String</code> value of <code>ConfigTypeAttribute</code>, see {@odf.attribute  config:type} at specification
+	 * @return the element {@odf.element config:config-item}
+	 */
+	 public ConfigConfigItemElement newConfigConfigItemElement(String configNameValue, String configTypeValue) {
+		ConfigConfigItemElement configConfigItem = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemElement.class);
+		configConfigItem.setConfigNameAttribute(configNameValue);
+		configConfigItem.setConfigTypeAttribute(configTypeValue);
+		this.appendChild(configConfigItem);
+		return configConfigItem;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-map-indexed}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @return the element {@odf.element config:config-item-map-indexed}
+	 */
+	 public ConfigConfigItemMapIndexedElement newConfigConfigItemMapIndexedElement(String configNameValue) {
+		ConfigConfigItemMapIndexedElement configConfigItemMapIndexed = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemMapIndexedElement.class);
+		configConfigItemMapIndexed.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemMapIndexed);
+		return configConfigItemMapIndexed;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-map-named}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * @return the element {@odf.element config:config-item-map-named}
+	 */
+	 public ConfigConfigItemMapNamedElement newConfigConfigItemMapNamedElement(String configNameValue) {
+		ConfigConfigItemMapNamedElement configConfigItemMapNamed = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemMapNamedElement.class);
+		configConfigItemMapNamed.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemMapNamed);
+		return configConfigItemMapNamed;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-set}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element config:config-item-set}
+	 */
+	 public ConfigConfigItemSetElement newConfigConfigItemSetElement(String configNameValue) {
+		ConfigConfigItemSetElement configConfigItemSet = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemSetElement.class);
+		configConfigItemSet.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemSet);
+		return configConfigItemSet;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbApplicationConnectionSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbApplicationConnectionSettingsElement.java
new file mode 100644
index 0000000..8077ca9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbApplicationConnectionSettingsElement.java
@@ -0,0 +1,310 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbAppendTableAliasNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbBooleanComparisonModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbEnableSql92CheckAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIgnoreDriverPrivilegesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsTableNameLengthLimitedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbMaxRowCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbSuppressVersionColumnsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbUseCatalogAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:application-connection-settings}.
+ *
+ */
+public class DbApplicationConnectionSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "application-connection-settings");
+
+	/**
+	 * Create the instance of <code>DbApplicationConnectionSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbApplicationConnectionSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:application-connection-settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbAppendTableAliasNameAttribute</code> , See {@odf.attribute db:append-table-alias-name}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbAppendTableAliasNameAttribute() {
+		DbAppendTableAliasNameAttribute attr = (DbAppendTableAliasNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "append-table-alias-name");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbAppendTableAliasNameAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbAppendTableAliasNameAttribute</code> , See {@odf.attribute db:append-table-alias-name}
+	 *
+	 * @param dbAppendTableAliasNameValue   The type is <code>Boolean</code>
+	 */
+	public void setDbAppendTableAliasNameAttribute(Boolean dbAppendTableAliasNameValue) {
+		DbAppendTableAliasNameAttribute attr = new DbAppendTableAliasNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbAppendTableAliasNameValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbBooleanComparisonModeAttribute</code> , See {@odf.attribute db:boolean-comparison-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbBooleanComparisonModeAttribute() {
+		DbBooleanComparisonModeAttribute attr = (DbBooleanComparisonModeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "boolean-comparison-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbBooleanComparisonModeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbBooleanComparisonModeAttribute</code> , See {@odf.attribute db:boolean-comparison-mode}
+	 *
+	 * @param dbBooleanComparisonModeValue   The type is <code>String</code>
+	 */
+	public void setDbBooleanComparisonModeAttribute(String dbBooleanComparisonModeValue) {
+		DbBooleanComparisonModeAttribute attr = new DbBooleanComparisonModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbBooleanComparisonModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbEnableSql92CheckAttribute</code> , See {@odf.attribute db:enable-sql92-check}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbEnableSql92CheckAttribute() {
+		DbEnableSql92CheckAttribute attr = (DbEnableSql92CheckAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "enable-sql92-check");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbEnableSql92CheckAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbEnableSql92CheckAttribute</code> , See {@odf.attribute db:enable-sql92-check}
+	 *
+	 * @param dbEnableSql92CheckValue   The type is <code>Boolean</code>
+	 */
+	public void setDbEnableSql92CheckAttribute(Boolean dbEnableSql92CheckValue) {
+		DbEnableSql92CheckAttribute attr = new DbEnableSql92CheckAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbEnableSql92CheckValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIgnoreDriverPrivilegesAttribute</code> , See {@odf.attribute db:ignore-driver-privileges}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIgnoreDriverPrivilegesAttribute() {
+		DbIgnoreDriverPrivilegesAttribute attr = (DbIgnoreDriverPrivilegesAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "ignore-driver-privileges");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbIgnoreDriverPrivilegesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIgnoreDriverPrivilegesAttribute</code> , See {@odf.attribute db:ignore-driver-privileges}
+	 *
+	 * @param dbIgnoreDriverPrivilegesValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIgnoreDriverPrivilegesAttribute(Boolean dbIgnoreDriverPrivilegesValue) {
+		DbIgnoreDriverPrivilegesAttribute attr = new DbIgnoreDriverPrivilegesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIgnoreDriverPrivilegesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsTableNameLengthLimitedAttribute</code> , See {@odf.attribute db:is-table-name-length-limited}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsTableNameLengthLimitedAttribute() {
+		DbIsTableNameLengthLimitedAttribute attr = (DbIsTableNameLengthLimitedAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-table-name-length-limited");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbIsTableNameLengthLimitedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsTableNameLengthLimitedAttribute</code> , See {@odf.attribute db:is-table-name-length-limited}
+	 *
+	 * @param dbIsTableNameLengthLimitedValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsTableNameLengthLimitedAttribute(Boolean dbIsTableNameLengthLimitedValue) {
+		DbIsTableNameLengthLimitedAttribute attr = new DbIsTableNameLengthLimitedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsTableNameLengthLimitedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbMaxRowCountAttribute</code> , See {@odf.attribute db:max-row-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDbMaxRowCountAttribute() {
+		DbMaxRowCountAttribute attr = (DbMaxRowCountAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "max-row-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbMaxRowCountAttribute</code> , See {@odf.attribute db:max-row-count}
+	 *
+	 * @param dbMaxRowCountValue   The type is <code>Integer</code>
+	 */
+	public void setDbMaxRowCountAttribute(Integer dbMaxRowCountValue) {
+		DbMaxRowCountAttribute attr = new DbMaxRowCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dbMaxRowCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbSuppressVersionColumnsAttribute</code> , See {@odf.attribute db:suppress-version-columns}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbSuppressVersionColumnsAttribute() {
+		DbSuppressVersionColumnsAttribute attr = (DbSuppressVersionColumnsAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "suppress-version-columns");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbSuppressVersionColumnsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbSuppressVersionColumnsAttribute</code> , See {@odf.attribute db:suppress-version-columns}
+	 *
+	 * @param dbSuppressVersionColumnsValue   The type is <code>Boolean</code>
+	 */
+	public void setDbSuppressVersionColumnsAttribute(Boolean dbSuppressVersionColumnsValue) {
+		DbSuppressVersionColumnsAttribute attr = new DbSuppressVersionColumnsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbSuppressVersionColumnsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbUseCatalogAttribute</code> , See {@odf.attribute db:use-catalog}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbUseCatalogAttribute() {
+		DbUseCatalogAttribute attr = (DbUseCatalogAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "use-catalog");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbUseCatalogAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbUseCatalogAttribute</code> , See {@odf.attribute db:use-catalog}
+	 *
+	 * @param dbUseCatalogValue   The type is <code>Boolean</code>
+	 */
+	public void setDbUseCatalogAttribute(Boolean dbUseCatalogValue) {
+		DbUseCatalogAttribute attr = new DbUseCatalogAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbUseCatalogValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element db:data-source-settings}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:data-source-settings}
+	 */
+	public DbDataSourceSettingsElement newDbDataSourceSettingsElement() {
+		DbDataSourceSettingsElement dbDataSourceSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDataSourceSettingsElement.class);
+		this.appendChild(dbDataSourceSettings);
+		return dbDataSourceSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-filter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-filter}
+	 */
+	public DbTableFilterElement newDbTableFilterElement() {
+		DbTableFilterElement dbTableFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableFilterElement.class);
+		this.appendChild(dbTableFilter);
+		return dbTableFilter;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-type-filter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-type-filter}
+	 */
+	public DbTableTypeFilterElement newDbTableTypeFilterElement() {
+		DbTableTypeFilterElement dbTableTypeFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableTypeFilterElement.class);
+		this.appendChild(dbTableTypeFilter);
+		return dbTableTypeFilter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbAutoIncrementElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbAutoIncrementElement.java
new file mode 100644
index 0000000..d6f5268
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbAutoIncrementElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbAdditionalColumnStatementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbRowRetrievingStatementAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:auto-increment}.
+ *
+ */
+public class DbAutoIncrementElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "auto-increment");
+
+	/**
+	 * Create the instance of <code>DbAutoIncrementElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbAutoIncrementElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:auto-increment}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbAdditionalColumnStatementAttribute</code> , See {@odf.attribute db:additional-column-statement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbAdditionalColumnStatementAttribute() {
+		DbAdditionalColumnStatementAttribute attr = (DbAdditionalColumnStatementAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "additional-column-statement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbAdditionalColumnStatementAttribute</code> , See {@odf.attribute db:additional-column-statement}
+	 *
+	 * @param dbAdditionalColumnStatementValue   The type is <code>String</code>
+	 */
+	public void setDbAdditionalColumnStatementAttribute(String dbAdditionalColumnStatementValue) {
+		DbAdditionalColumnStatementAttribute attr = new DbAdditionalColumnStatementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbAdditionalColumnStatementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbRowRetrievingStatementAttribute</code> , See {@odf.attribute db:row-retrieving-statement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbRowRetrievingStatementAttribute() {
+		DbRowRetrievingStatementAttribute attr = (DbRowRetrievingStatementAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "row-retrieving-statement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbRowRetrievingStatementAttribute</code> , See {@odf.attribute db:row-retrieving-statement}
+	 *
+	 * @param dbRowRetrievingStatementValue   The type is <code>String</code>
+	 */
+	public void setDbRowRetrievingStatementAttribute(String dbRowRetrievingStatementValue) {
+		DbRowRetrievingStatementAttribute attr = new DbRowRetrievingStatementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbRowRetrievingStatementValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbCharacterSetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbCharacterSetElement.java
new file mode 100644
index 0000000..0205d37
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbCharacterSetElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbEncodingAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:character-set}.
+ *
+ */
+public class DbCharacterSetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "character-set");
+
+	/**
+	 * Create the instance of <code>DbCharacterSetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbCharacterSetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:character-set}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbEncodingAttribute</code> , See {@odf.attribute db:encoding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbEncodingAttribute() {
+		DbEncodingAttribute attr = (DbEncodingAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "encoding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbEncodingAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbEncodingAttribute</code> , See {@odf.attribute db:encoding}
+	 *
+	 * @param dbEncodingValue   The type is <code>String</code>
+	 */
+	public void setDbEncodingAttribute(String dbEncodingValue) {
+		DbEncodingAttribute attr = new DbEncodingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbEncodingValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnDefinitionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnDefinitionElement.java
new file mode 100644
index 0000000..2929e2a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnDefinitionElement.java
@@ -0,0 +1,452 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDataTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsAutoincrementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsEmptyAllowedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsNullableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbPrecisionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbScaleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTypeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:column-definition}.
+ *
+ */
+public class DbColumnDefinitionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "column-definition");
+
+	/**
+	 * Create the instance of <code>DbColumnDefinitionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbColumnDefinitionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:column-definition}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDataTypeAttribute</code> , See {@odf.attribute db:data-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDataTypeAttribute() {
+		DbDataTypeAttribute attr = (DbDataTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "data-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDataTypeAttribute</code> , See {@odf.attribute db:data-type}
+	 *
+	 * @param dbDataTypeValue   The type is <code>String</code>
+	 */
+	public void setDbDataTypeAttribute(String dbDataTypeValue) {
+		DbDataTypeAttribute attr = new DbDataTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDataTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsAutoincrementAttribute</code> , See {@odf.attribute db:is-autoincrement}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsAutoincrementAttribute() {
+		DbIsAutoincrementAttribute attr = (DbIsAutoincrementAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-autoincrement");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsAutoincrementAttribute</code> , See {@odf.attribute db:is-autoincrement}
+	 *
+	 * @param dbIsAutoincrementValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsAutoincrementAttribute(Boolean dbIsAutoincrementValue) {
+		DbIsAutoincrementAttribute attr = new DbIsAutoincrementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsAutoincrementValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsEmptyAllowedAttribute</code> , See {@odf.attribute db:is-empty-allowed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsEmptyAllowedAttribute() {
+		DbIsEmptyAllowedAttribute attr = (DbIsEmptyAllowedAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-empty-allowed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsEmptyAllowedAttribute</code> , See {@odf.attribute db:is-empty-allowed}
+	 *
+	 * @param dbIsEmptyAllowedValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsEmptyAllowedAttribute(Boolean dbIsEmptyAllowedValue) {
+		DbIsEmptyAllowedAttribute attr = new DbIsEmptyAllowedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsEmptyAllowedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsNullableAttribute</code> , See {@odf.attribute db:is-nullable}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbIsNullableAttribute() {
+		DbIsNullableAttribute attr = (DbIsNullableAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-nullable");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsNullableAttribute</code> , See {@odf.attribute db:is-nullable}
+	 *
+	 * @param dbIsNullableValue   The type is <code>String</code>
+	 */
+	public void setDbIsNullableAttribute(String dbIsNullableValue) {
+		DbIsNullableAttribute attr = new DbIsNullableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbIsNullableValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbPrecisionAttribute</code> , See {@odf.attribute db:precision}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDbPrecisionAttribute() {
+		DbPrecisionAttribute attr = (DbPrecisionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "precision");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbPrecisionAttribute</code> , See {@odf.attribute db:precision}
+	 *
+	 * @param dbPrecisionValue   The type is <code>Integer</code>
+	 */
+	public void setDbPrecisionAttribute(Integer dbPrecisionValue) {
+		DbPrecisionAttribute attr = new DbPrecisionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dbPrecisionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbScaleAttribute</code> , See {@odf.attribute db:scale}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDbScaleAttribute() {
+		DbScaleAttribute attr = (DbScaleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "scale");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbScaleAttribute</code> , See {@odf.attribute db:scale}
+	 *
+	 * @param dbScaleValue   The type is <code>Integer</code>
+	 */
+	public void setDbScaleAttribute(Integer dbScaleValue) {
+		DbScaleAttribute attr = new DbScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dbScaleValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTypeNameAttribute</code> , See {@odf.attribute db:type-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTypeNameAttribute() {
+		DbTypeNameAttribute attr = (DbTypeNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "type-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTypeNameAttribute</code> , See {@odf.attribute db:type-name}
+	 *
+	 * @param dbTypeNameValue   The type is <code>String</code>
+	 */
+	public void setDbTypeNameAttribute(String dbTypeNameValue) {
+		DbTypeNameAttribute attr = new DbTypeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTypeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnDefinitionsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnDefinitionsElement.java
new file mode 100644
index 0000000..4e40d3b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnDefinitionsElement.java
@@ -0,0 +1,92 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:column-definitions}.
+ *
+ */
+public class DbColumnDefinitionsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "column-definitions");
+
+	/**
+	 * Create the instance of <code>DbColumnDefinitionsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbColumnDefinitionsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:column-definitions}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:column-definition}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:column-definition}
+	 */
+	 public DbColumnDefinitionElement newDbColumnDefinitionElement(String dbNameValue, double officeValueValue, String officeValueTypeValue) {
+		DbColumnDefinitionElement dbColumnDefinition = ((OdfFileDom) this.ownerDocument).newOdfElement(DbColumnDefinitionElement.class);
+		dbColumnDefinition.setDbNameAttribute(dbNameValue);
+		dbColumnDefinition.setOfficeValueAttribute(officeValueValue);
+		dbColumnDefinition.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(dbColumnDefinition);
+		return dbColumnDefinition;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnElement.java
new file mode 100644
index 0000000..892cc76
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnElement.java
@@ -0,0 +1,402 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDefaultCellStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbVisibleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:column}.
+ *
+ */
+public class DbColumnElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "column");
+
+	/**
+	 * Create the instance of <code>DbColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDefaultCellStyleNameAttribute</code> , See {@odf.attribute db:default-cell-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDefaultCellStyleNameAttribute() {
+		DbDefaultCellStyleNameAttribute attr = (DbDefaultCellStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "default-cell-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDefaultCellStyleNameAttribute</code> , See {@odf.attribute db:default-cell-style-name}
+	 *
+	 * @param dbDefaultCellStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDbDefaultCellStyleNameAttribute(String dbDefaultCellStyleNameValue) {
+		DbDefaultCellStyleNameAttribute attr = new DbDefaultCellStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDefaultCellStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDescriptionAttribute() {
+		DbDescriptionAttribute attr = (DbDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @param dbDescriptionValue   The type is <code>String</code>
+	 */
+	public void setDbDescriptionAttribute(String dbDescriptionValue) {
+		DbDescriptionAttribute attr = new DbDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbStyleNameAttribute</code> , See {@odf.attribute db:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbStyleNameAttribute() {
+		DbStyleNameAttribute attr = (DbStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbStyleNameAttribute</code> , See {@odf.attribute db:style-name}
+	 *
+	 * @param dbStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDbStyleNameAttribute(String dbStyleNameValue) {
+		DbStyleNameAttribute attr = new DbStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTitleAttribute() {
+		DbTitleAttribute attr = (DbTitleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @param dbTitleValue   The type is <code>String</code>
+	 */
+	public void setDbTitleAttribute(String dbTitleValue) {
+		DbTitleAttribute attr = new DbTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbVisibleAttribute</code> , See {@odf.attribute db:visible}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbVisibleAttribute() {
+		DbVisibleAttribute attr = (DbVisibleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "visible");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbVisibleAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbVisibleAttribute</code> , See {@odf.attribute db:visible}
+	 *
+	 * @param dbVisibleValue   The type is <code>Boolean</code>
+	 */
+	public void setDbVisibleAttribute(Boolean dbVisibleValue) {
+		DbVisibleAttribute attr = new DbVisibleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbVisibleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnsElement.java
new file mode 100644
index 0000000..f759fed
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbColumnsElement.java
@@ -0,0 +1,92 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:columns}.
+ *
+ */
+public class DbColumnsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "columns");
+
+	/**
+	 * Create the instance of <code>DbColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:column}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:column}
+	 */
+	 public DbColumnElement newDbColumnElement(String dbNameValue, double officeValueValue, String officeValueTypeValue) {
+		DbColumnElement dbColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(DbColumnElement.class);
+		dbColumn.setDbNameAttribute(dbNameValue);
+		dbColumn.setOfficeValueAttribute(officeValueValue);
+		dbColumn.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(dbColumn);
+		return dbColumn;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbComponentCollectionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbComponentCollectionElement.java
new file mode 100644
index 0000000..3886782
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbComponentCollectionElement.java
@@ -0,0 +1,178 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTitleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:component-collection}.
+ *
+ */
+public class DbComponentCollectionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "component-collection");
+
+	/**
+	 * Create the instance of <code>DbComponentCollectionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbComponentCollectionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:component-collection}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDescriptionAttribute() {
+		DbDescriptionAttribute attr = (DbDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @param dbDescriptionValue   The type is <code>String</code>
+	 */
+	public void setDbDescriptionAttribute(String dbDescriptionValue) {
+		DbDescriptionAttribute attr = new DbDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTitleAttribute() {
+		DbTitleAttribute attr = (DbTitleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @param dbTitleValue   The type is <code>String</code>
+	 */
+	public void setDbTitleAttribute(String dbTitleValue) {
+		DbTitleAttribute attr = new DbTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTitleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:component}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:component}
+	 */
+	 public DbComponentElement newDbComponentElement(String dbNameValue) {
+		DbComponentElement dbComponent = ((OdfFileDom) this.ownerDocument).newOdfElement(DbComponentElement.class);
+		dbComponent.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbComponent);
+		return dbComponent;
+	}
+
+	/**
+	 * Create child element {@odf.element db:component-collection}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:component-collection}
+	 */
+	 public DbComponentCollectionElement newDbComponentCollectionElement(String dbNameValue) {
+		DbComponentCollectionElement dbComponentCollection = ((OdfFileDom) this.ownerDocument).newOdfElement(DbComponentCollectionElement.class);
+		dbComponentCollection.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbComponentCollection);
+		return dbComponentCollection;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbComponentElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbComponentElement.java
new file mode 100644
index 0000000..61d94fc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbComponentElement.java
@@ -0,0 +1,305 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.math.MathMathElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentElement;
+import org.odftoolkit.odfdom.dom.attribute.db.DbAsTemplateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:component}.
+ *
+ */
+public class DbComponentElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "component");
+
+	/**
+	 * Create the instance of <code>DbComponentElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbComponentElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:component}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbAsTemplateAttribute</code> , See {@odf.attribute db:as-template}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbAsTemplateAttribute() {
+		DbAsTemplateAttribute attr = (DbAsTemplateAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "as-template");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbAsTemplateAttribute</code> , See {@odf.attribute db:as-template}
+	 *
+	 * @param dbAsTemplateValue   The type is <code>Boolean</code>
+	 */
+	public void setDbAsTemplateAttribute(Boolean dbAsTemplateValue) {
+		DbAsTemplateAttribute attr = new DbAsTemplateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbAsTemplateValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDescriptionAttribute() {
+		DbDescriptionAttribute attr = (DbDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @param dbDescriptionValue   The type is <code>String</code>
+	 */
+	public void setDbDescriptionAttribute(String dbDescriptionValue) {
+		DbDescriptionAttribute attr = new DbDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTitleAttribute() {
+		DbTitleAttribute attr = (DbTitleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @param dbTitleValue   The type is <code>String</code>
+	 */
+	public void setDbTitleAttribute(String dbTitleValue) {
+		DbTitleAttribute attr = new DbTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element math:math}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element math:math}
+	 */
+	public MathMathElement newMathMathElement() {
+		MathMathElement mathMath = ((OdfFileDom) this.ownerDocument).newOdfElement(MathMathElement.class);
+		this.appendChild(mathMath);
+		return mathMath;
+	}
+
+	/**
+	 * Create child element {@odf.element office:document}.
+	 *
+	 * @param officeMimetypeValue  the <code>String</code> value of <code>OfficeMimetypeAttribute</code>, see {@odf.attribute  office:mimetype} at specification
+	 * @param officeVersionValue  the <code>String</code> value of <code>OfficeVersionAttribute</code>, see {@odf.attribute  office:version} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:document}
+	 */
+	 public OfficeDocumentElement newOfficeDocumentElement(String officeMimetypeValue, String officeVersionValue) {
+		OfficeDocumentElement officeDocument = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDocumentElement.class);
+		officeDocument.setOfficeMimetypeAttribute(officeMimetypeValue);
+		officeDocument.setOfficeVersionAttribute(officeVersionValue);
+		this.appendChild(officeDocument);
+		return officeDocument;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbConnectionDataElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbConnectionDataElement.java
new file mode 100644
index 0000000..2adf74b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbConnectionDataElement.java
@@ -0,0 +1,114 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:connection-data}.
+ *
+ */
+public class DbConnectionDataElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "connection-data");
+
+	/**
+	 * Create the instance of <code>DbConnectionDataElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbConnectionDataElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:connection-data}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:connection-resource}
+	 */
+	 public DbConnectionResourceElement newDbConnectionResourceElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DbConnectionResourceElement dbConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(DbConnectionResourceElement.class);
+		dbConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		dbConnectionResource.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(dbConnectionResource);
+		return dbConnectionResource;
+	}
+
+	/**
+	 * Create child element {@odf.element db:database-description}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:database-description}
+	 */
+	public DbDatabaseDescriptionElement newDbDatabaseDescriptionElement() {
+		DbDatabaseDescriptionElement dbDatabaseDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDatabaseDescriptionElement.class);
+		this.appendChild(dbDatabaseDescription);
+		return dbDatabaseDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element db:login}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:login}
+	 */
+	public DbLoginElement newDbLoginElement() {
+		DbLoginElement dbLogin = ((OdfFileDom) this.ownerDocument).newOdfElement(DbLoginElement.class);
+		this.appendChild(dbLogin);
+		return dbLogin;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbConnectionResourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbConnectionResourceElement.java
new file mode 100644
index 0000000..9f79621
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbConnectionResourceElement.java
@@ -0,0 +1,175 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:connection-resource}.
+ *
+ */
+public class DbConnectionResourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "connection-resource");
+
+	/**
+	 * Create the instance of <code>DbConnectionResourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbConnectionResourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:connection-resource}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_NONE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceElement.java
new file mode 100644
index 0000000..2448188
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceElement.java
@@ -0,0 +1,112 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:data-source}.
+ *
+ */
+public class DbDataSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source");
+
+	/**
+	 * Create the instance of <code>DbDataSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:data-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:application-connection-settings}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:application-connection-settings}
+	 */
+	public DbApplicationConnectionSettingsElement newDbApplicationConnectionSettingsElement() {
+		DbApplicationConnectionSettingsElement dbApplicationConnectionSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(DbApplicationConnectionSettingsElement.class);
+		this.appendChild(dbApplicationConnectionSettings);
+		return dbApplicationConnectionSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element db:connection-data}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:connection-data}
+	 */
+	public DbConnectionDataElement newDbConnectionDataElement() {
+		DbConnectionDataElement dbConnectionData = ((OdfFileDom) this.ownerDocument).newOdfElement(DbConnectionDataElement.class);
+		this.appendChild(dbConnectionData);
+		return dbConnectionData;
+	}
+
+	/**
+	 * Create child element {@odf.element db:driver-settings}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:driver-settings}
+	 */
+	public DbDriverSettingsElement newDbDriverSettingsElement() {
+		DbDriverSettingsElement dbDriverSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDriverSettingsElement.class);
+		this.appendChild(dbDriverSettings);
+		return dbDriverSettings;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingElement.java
new file mode 100644
index 0000000..c7fec3e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingElement.java
@@ -0,0 +1,165 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDataSourceSettingIsListAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDataSourceSettingNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDataSourceSettingTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:data-source-setting}.
+ *
+ */
+public class DbDataSourceSettingElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source-setting");
+
+	/**
+	 * Create the instance of <code>DbDataSourceSettingElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceSettingElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:data-source-setting}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDataSourceSettingIsListAttribute</code> , See {@odf.attribute db:data-source-setting-is-list}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbDataSourceSettingIsListAttribute() {
+		DbDataSourceSettingIsListAttribute attr = (DbDataSourceSettingIsListAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "data-source-setting-is-list");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDataSourceSettingIsListAttribute</code> , See {@odf.attribute db:data-source-setting-is-list}
+	 *
+	 * @param dbDataSourceSettingIsListValue   The type is <code>Boolean</code>
+	 */
+	public void setDbDataSourceSettingIsListAttribute(Boolean dbDataSourceSettingIsListValue) {
+		DbDataSourceSettingIsListAttribute attr = new DbDataSourceSettingIsListAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbDataSourceSettingIsListValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDataSourceSettingNameAttribute</code> , See {@odf.attribute db:data-source-setting-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDataSourceSettingNameAttribute() {
+		DbDataSourceSettingNameAttribute attr = (DbDataSourceSettingNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "data-source-setting-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDataSourceSettingNameAttribute</code> , See {@odf.attribute db:data-source-setting-name}
+	 *
+	 * @param dbDataSourceSettingNameValue   The type is <code>String</code>
+	 */
+	public void setDbDataSourceSettingNameAttribute(String dbDataSourceSettingNameValue) {
+		DbDataSourceSettingNameAttribute attr = new DbDataSourceSettingNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDataSourceSettingNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDataSourceSettingTypeAttribute</code> , See {@odf.attribute db:data-source-setting-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDataSourceSettingTypeAttribute() {
+		DbDataSourceSettingTypeAttribute attr = (DbDataSourceSettingTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "data-source-setting-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDataSourceSettingTypeAttribute</code> , See {@odf.attribute db:data-source-setting-type}
+	 *
+	 * @param dbDataSourceSettingTypeValue   The type is <code>String</code>
+	 */
+	public void setDbDataSourceSettingTypeAttribute(String dbDataSourceSettingTypeValue) {
+		DbDataSourceSettingTypeAttribute attr = new DbDataSourceSettingTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDataSourceSettingTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:data-source-setting-value}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:data-source-setting-value}
+	 */
+	public DbDataSourceSettingValueElement newDbDataSourceSettingValueElement() {
+		DbDataSourceSettingValueElement dbDataSourceSettingValue = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDataSourceSettingValueElement.class);
+		this.appendChild(dbDataSourceSettingValue);
+		return dbDataSourceSettingValue;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingValueElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingValueElement.java
new file mode 100644
index 0000000..c873df1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingValueElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:data-source-setting-value}.
+ *
+ */
+public class DbDataSourceSettingValueElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source-setting-value");
+
+	/**
+	 * Create the instance of <code>DbDataSourceSettingValueElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceSettingValueElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:data-source-setting-value}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingsElement.java
new file mode 100644
index 0000000..19533a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDataSourceSettingsElement.java
@@ -0,0 +1,90 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:data-source-settings}.
+ *
+ */
+public class DbDataSourceSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "data-source-settings");
+
+	/**
+	 * Create the instance of <code>DbDataSourceSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDataSourceSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:data-source-settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:data-source-setting}.
+	 *
+	 * @param dbDataSourceSettingNameValue  the <code>String</code> value of <code>DbDataSourceSettingNameAttribute</code>, see {@odf.attribute  db:data-source-setting-name} at specification
+	 * @param dbDataSourceSettingTypeValue  the <code>String</code> value of <code>DbDataSourceSettingTypeAttribute</code>, see {@odf.attribute  db:data-source-setting-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:data-source-setting}
+	 */
+	 public DbDataSourceSettingElement newDbDataSourceSettingElement(String dbDataSourceSettingNameValue, String dbDataSourceSettingTypeValue) {
+		DbDataSourceSettingElement dbDataSourceSetting = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDataSourceSettingElement.class);
+		dbDataSourceSetting.setDbDataSourceSettingNameAttribute(dbDataSourceSettingNameValue);
+		dbDataSourceSetting.setDbDataSourceSettingTypeAttribute(dbDataSourceSettingTypeValue);
+		this.appendChild(dbDataSourceSetting);
+		return dbDataSourceSetting;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDatabaseDescriptionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDatabaseDescriptionElement.java
new file mode 100644
index 0000000..0524d61
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDatabaseDescriptionElement.java
@@ -0,0 +1,105 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:database-description}.
+ *
+ */
+public class DbDatabaseDescriptionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "database-description");
+
+	/**
+	 * Create the instance of <code>DbDatabaseDescriptionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDatabaseDescriptionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:database-description}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:file-based-database}.
+	 *
+	 * @param dbMediaTypeValue  the <code>String</code> value of <code>DbMediaTypeAttribute</code>, see {@odf.attribute  db:media-type} at specification
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:file-based-database}
+	 */
+	 public DbFileBasedDatabaseElement newDbFileBasedDatabaseElement(String dbMediaTypeValue, String xlinkHrefValue, String xlinkTypeValue) {
+		DbFileBasedDatabaseElement dbFileBasedDatabase = ((OdfFileDom) this.ownerDocument).newOdfElement(DbFileBasedDatabaseElement.class);
+		dbFileBasedDatabase.setDbMediaTypeAttribute(dbMediaTypeValue);
+		dbFileBasedDatabase.setXlinkHrefAttribute(xlinkHrefValue);
+		dbFileBasedDatabase.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(dbFileBasedDatabase);
+		return dbFileBasedDatabase;
+	}
+
+	/**
+	 * Create child element {@odf.element db:server-database}.
+	 *
+	 * @param dbTypeValue  the <code>String</code> value of <code>DbTypeAttribute</code>, see {@odf.attribute  db:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:server-database}
+	 */
+	 public DbServerDatabaseElement newDbServerDatabaseElement(String dbTypeValue) {
+		DbServerDatabaseElement dbServerDatabase = ((OdfFileDom) this.ownerDocument).newOdfElement(DbServerDatabaseElement.class);
+		dbServerDatabase.setDbTypeAttribute(dbTypeValue);
+		this.appendChild(dbServerDatabase);
+		return dbServerDatabase;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDelimiterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDelimiterElement.java
new file mode 100644
index 0000000..eaea850
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDelimiterElement.java
@@ -0,0 +1,171 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDecimalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbStringAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbThousandAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:delimiter}.
+ *
+ */
+public class DbDelimiterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "delimiter");
+
+	/**
+	 * Create the instance of <code>DbDelimiterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDelimiterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:delimiter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDecimalAttribute</code> , See {@odf.attribute db:decimal}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDecimalAttribute() {
+		DbDecimalAttribute attr = (DbDecimalAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "decimal");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbDecimalAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDecimalAttribute</code> , See {@odf.attribute db:decimal}
+	 *
+	 * @param dbDecimalValue   The type is <code>String</code>
+	 */
+	public void setDbDecimalAttribute(String dbDecimalValue) {
+		DbDecimalAttribute attr = new DbDecimalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDecimalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbFieldAttribute</code> , See {@odf.attribute db:field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbFieldAttribute() {
+		DbFieldAttribute attr = (DbFieldAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbFieldAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbFieldAttribute</code> , See {@odf.attribute db:field}
+	 *
+	 * @param dbFieldValue   The type is <code>String</code>
+	 */
+	public void setDbFieldAttribute(String dbFieldValue) {
+		DbFieldAttribute attr = new DbFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbStringAttribute</code> , See {@odf.attribute db:string}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbStringAttribute() {
+		DbStringAttribute attr = (DbStringAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "string");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbStringAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbStringAttribute</code> , See {@odf.attribute db:string}
+	 *
+	 * @param dbStringValue   The type is <code>String</code>
+	 */
+	public void setDbStringAttribute(String dbStringValue) {
+		DbStringAttribute attr = new DbStringAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbStringValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbThousandAttribute</code> , See {@odf.attribute db:thousand}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbThousandAttribute() {
+		DbThousandAttribute attr = (DbThousandAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "thousand");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbThousandAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbThousandAttribute</code> , See {@odf.attribute db:thousand}
+	 *
+	 * @param dbThousandValue   The type is <code>String</code>
+	 */
+	public void setDbThousandAttribute(String dbThousandValue) {
+		DbThousandAttribute attr = new DbThousandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbThousandValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDriverSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDriverSettingsElement.java
new file mode 100644
index 0000000..5cbe2fa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbDriverSettingsElement.java
@@ -0,0 +1,248 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbBaseDnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsFirstRowHeaderLineAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbParameterNameSubstitutionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbShowDeletedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbSystemDriverSettingsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:driver-settings}.
+ *
+ */
+public class DbDriverSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "driver-settings");
+
+	/**
+	 * Create the instance of <code>DbDriverSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbDriverSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:driver-settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbBaseDnAttribute</code> , See {@odf.attribute db:base-dn}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbBaseDnAttribute() {
+		DbBaseDnAttribute attr = (DbBaseDnAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "base-dn");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbBaseDnAttribute</code> , See {@odf.attribute db:base-dn}
+	 *
+	 * @param dbBaseDnValue   The type is <code>String</code>
+	 */
+	public void setDbBaseDnAttribute(String dbBaseDnValue) {
+		DbBaseDnAttribute attr = new DbBaseDnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbBaseDnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsFirstRowHeaderLineAttribute</code> , See {@odf.attribute db:is-first-row-header-line}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsFirstRowHeaderLineAttribute() {
+		DbIsFirstRowHeaderLineAttribute attr = (DbIsFirstRowHeaderLineAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-first-row-header-line");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbIsFirstRowHeaderLineAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsFirstRowHeaderLineAttribute</code> , See {@odf.attribute db:is-first-row-header-line}
+	 *
+	 * @param dbIsFirstRowHeaderLineValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsFirstRowHeaderLineAttribute(Boolean dbIsFirstRowHeaderLineValue) {
+		DbIsFirstRowHeaderLineAttribute attr = new DbIsFirstRowHeaderLineAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsFirstRowHeaderLineValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbParameterNameSubstitutionAttribute</code> , See {@odf.attribute db:parameter-name-substitution}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbParameterNameSubstitutionAttribute() {
+		DbParameterNameSubstitutionAttribute attr = (DbParameterNameSubstitutionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "parameter-name-substitution");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbParameterNameSubstitutionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbParameterNameSubstitutionAttribute</code> , See {@odf.attribute db:parameter-name-substitution}
+	 *
+	 * @param dbParameterNameSubstitutionValue   The type is <code>Boolean</code>
+	 */
+	public void setDbParameterNameSubstitutionAttribute(Boolean dbParameterNameSubstitutionValue) {
+		DbParameterNameSubstitutionAttribute attr = new DbParameterNameSubstitutionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbParameterNameSubstitutionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbShowDeletedAttribute</code> , See {@odf.attribute db:show-deleted}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbShowDeletedAttribute() {
+		DbShowDeletedAttribute attr = (DbShowDeletedAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "show-deleted");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbShowDeletedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbShowDeletedAttribute</code> , See {@odf.attribute db:show-deleted}
+	 *
+	 * @param dbShowDeletedValue   The type is <code>Boolean</code>
+	 */
+	public void setDbShowDeletedAttribute(Boolean dbShowDeletedValue) {
+		DbShowDeletedAttribute attr = new DbShowDeletedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbShowDeletedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbSystemDriverSettingsAttribute</code> , See {@odf.attribute db:system-driver-settings}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbSystemDriverSettingsAttribute() {
+		DbSystemDriverSettingsAttribute attr = (DbSystemDriverSettingsAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "system-driver-settings");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbSystemDriverSettingsAttribute</code> , See {@odf.attribute db:system-driver-settings}
+	 *
+	 * @param dbSystemDriverSettingsValue   The type is <code>String</code>
+	 */
+	public void setDbSystemDriverSettingsAttribute(String dbSystemDriverSettingsValue) {
+		DbSystemDriverSettingsAttribute attr = new DbSystemDriverSettingsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbSystemDriverSettingsValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:auto-increment}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:auto-increment}
+	 */
+	public DbAutoIncrementElement newDbAutoIncrementElement() {
+		DbAutoIncrementElement dbAutoIncrement = ((OdfFileDom) this.ownerDocument).newOdfElement(DbAutoIncrementElement.class);
+		this.appendChild(dbAutoIncrement);
+		return dbAutoIncrement;
+	}
+
+	/**
+	 * Create child element {@odf.element db:character-set}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:character-set}
+	 */
+	public DbCharacterSetElement newDbCharacterSetElement() {
+		DbCharacterSetElement dbCharacterSet = ((OdfFileDom) this.ownerDocument).newOdfElement(DbCharacterSetElement.class);
+		this.appendChild(dbCharacterSet);
+		return dbCharacterSet;
+	}
+
+	/**
+	 * Create child element {@odf.element db:delimiter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:delimiter}
+	 */
+	public DbDelimiterElement newDbDelimiterElement() {
+		DbDelimiterElement dbDelimiter = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDelimiterElement.class);
+		this.appendChild(dbDelimiter);
+		return dbDelimiter;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-settings}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-settings}
+	 */
+	public DbTableSettingsElement newDbTableSettingsElement() {
+		DbTableSettingsElement dbTableSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableSettingsElement.class);
+		this.appendChild(dbTableSettings);
+		return dbTableSettings;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFileBasedDatabaseElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFileBasedDatabaseElement.java
new file mode 100644
index 0000000..50fcd76
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFileBasedDatabaseElement.java
@@ -0,0 +1,177 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbExtensionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbMediaTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:file-based-database}.
+ *
+ */
+public class DbFileBasedDatabaseElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "file-based-database");
+
+	/**
+	 * Create the instance of <code>DbFileBasedDatabaseElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbFileBasedDatabaseElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:file-based-database}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbExtensionAttribute</code> , See {@odf.attribute db:extension}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbExtensionAttribute() {
+		DbExtensionAttribute attr = (DbExtensionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "extension");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbExtensionAttribute</code> , See {@odf.attribute db:extension}
+	 *
+	 * @param dbExtensionValue   The type is <code>String</code>
+	 */
+	public void setDbExtensionAttribute(String dbExtensionValue) {
+		DbExtensionAttribute attr = new DbExtensionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbExtensionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbMediaTypeAttribute</code> , See {@odf.attribute db:media-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbMediaTypeAttribute() {
+		DbMediaTypeAttribute attr = (DbMediaTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "media-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbMediaTypeAttribute</code> , See {@odf.attribute db:media-type}
+	 *
+	 * @param dbMediaTypeValue   The type is <code>String</code>
+	 */
+	public void setDbMediaTypeAttribute(String dbMediaTypeValue) {
+		DbMediaTypeAttribute attr = new DbMediaTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbMediaTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFilterStatementElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFilterStatementElement.java
new file mode 100644
index 0000000..b5d3070
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFilterStatementElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbApplyCommandAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCommandAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:filter-statement}.
+ *
+ */
+public class DbFilterStatementElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "filter-statement");
+
+	/**
+	 * Create the instance of <code>DbFilterStatementElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbFilterStatementElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:filter-statement}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbApplyCommandAttribute</code> , See {@odf.attribute db:apply-command}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbApplyCommandAttribute() {
+		DbApplyCommandAttribute attr = (DbApplyCommandAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "apply-command");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbApplyCommandAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbApplyCommandAttribute</code> , See {@odf.attribute db:apply-command}
+	 *
+	 * @param dbApplyCommandValue   The type is <code>Boolean</code>
+	 */
+	public void setDbApplyCommandAttribute(Boolean dbApplyCommandValue) {
+		DbApplyCommandAttribute attr = new DbApplyCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbApplyCommandValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCommandAttribute</code> , See {@odf.attribute db:command}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCommandAttribute() {
+		DbCommandAttribute attr = (DbCommandAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "command");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCommandAttribute</code> , See {@odf.attribute db:command}
+	 *
+	 * @param dbCommandValue   The type is <code>String</code>
+	 */
+	public void setDbCommandAttribute(String dbCommandValue) {
+		DbCommandAttribute attr = new DbCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCommandValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFormsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFormsElement.java
new file mode 100644
index 0000000..f2b65ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbFormsElement.java
@@ -0,0 +1,101 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:forms}.
+ *
+ */
+public class DbFormsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "forms");
+
+	/**
+	 * Create the instance of <code>DbFormsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbFormsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:forms}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:component}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:component}
+	 */
+	 public DbComponentElement newDbComponentElement(String dbNameValue) {
+		DbComponentElement dbComponent = ((OdfFileDom) this.ownerDocument).newOdfElement(DbComponentElement.class);
+		dbComponent.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbComponent);
+		return dbComponent;
+	}
+
+	/**
+	 * Create child element {@odf.element db:component-collection}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:component-collection}
+	 */
+	 public DbComponentCollectionElement newDbComponentCollectionElement(String dbNameValue) {
+		DbComponentCollectionElement dbComponentCollection = ((OdfFileDom) this.ownerDocument).newOdfElement(DbComponentCollectionElement.class);
+		dbComponentCollection.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbComponentCollection);
+		return dbComponentCollection;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexColumnElement.java
new file mode 100644
index 0000000..bbdb5f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexColumnElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsAscendingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:index-column}.
+ *
+ */
+public class DbIndexColumnElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "index-column");
+
+	/**
+	 * Create the instance of <code>DbIndexColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbIndexColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:index-column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsAscendingAttribute</code> , See {@odf.attribute db:is-ascending}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsAscendingAttribute() {
+		DbIsAscendingAttribute attr = (DbIsAscendingAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-ascending");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsAscendingAttribute</code> , See {@odf.attribute db:is-ascending}
+	 *
+	 * @param dbIsAscendingValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsAscendingAttribute(Boolean dbIsAscendingValue) {
+		DbIsAscendingAttribute attr = new DbIsAscendingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsAscendingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexColumnsElement.java
new file mode 100644
index 0000000..d629c4f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexColumnsElement.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:index-columns}.
+ *
+ */
+public class DbIndexColumnsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "index-columns");
+
+	/**
+	 * Create the instance of <code>DbIndexColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbIndexColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:index-columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:index-column}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:index-column}
+	 */
+	 public DbIndexColumnElement newDbIndexColumnElement(String dbNameValue) {
+		DbIndexColumnElement dbIndexColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(DbIndexColumnElement.class);
+		dbIndexColumn.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbIndexColumn);
+		return dbIndexColumn;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexElement.java
new file mode 100644
index 0000000..0cb0e11
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndexElement.java
@@ -0,0 +1,188 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCatalogNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsClusteredAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsUniqueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:index}.
+ *
+ */
+public class DbIndexElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "index");
+
+	/**
+	 * Create the instance of <code>DbIndexElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbIndexElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:index}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCatalogNameAttribute() {
+		DbCatalogNameAttribute attr = (DbCatalogNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "catalog-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @param dbCatalogNameValue   The type is <code>String</code>
+	 */
+	public void setDbCatalogNameAttribute(String dbCatalogNameValue) {
+		DbCatalogNameAttribute attr = new DbCatalogNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCatalogNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsClusteredAttribute</code> , See {@odf.attribute db:is-clustered}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsClusteredAttribute() {
+		DbIsClusteredAttribute attr = (DbIsClusteredAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-clustered");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsClusteredAttribute</code> , See {@odf.attribute db:is-clustered}
+	 *
+	 * @param dbIsClusteredValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsClusteredAttribute(Boolean dbIsClusteredValue) {
+		DbIsClusteredAttribute attr = new DbIsClusteredAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsClusteredValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsUniqueAttribute</code> , See {@odf.attribute db:is-unique}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsUniqueAttribute() {
+		DbIsUniqueAttribute attr = (DbIsUniqueAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-unique");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsUniqueAttribute</code> , See {@odf.attribute db:is-unique}
+	 *
+	 * @param dbIsUniqueValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsUniqueAttribute(Boolean dbIsUniqueValue) {
+		DbIsUniqueAttribute attr = new DbIsUniqueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsUniqueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:index-columns}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:index-columns}
+	 */
+	public DbIndexColumnsElement newDbIndexColumnsElement() {
+		DbIndexColumnsElement dbIndexColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(DbIndexColumnsElement.class);
+		this.appendChild(dbIndexColumns);
+		return dbIndexColumns;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndicesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndicesElement.java
new file mode 100644
index 0000000..cb05935
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbIndicesElement.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:indices}.
+ *
+ */
+public class DbIndicesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "indices");
+
+	/**
+	 * Create the instance of <code>DbIndicesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbIndicesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:indices}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:index}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:index}
+	 */
+	 public DbIndexElement newDbIndexElement(String dbNameValue) {
+		DbIndexElement dbIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(DbIndexElement.class);
+		dbIndex.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbIndex);
+		return dbIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyColumnElement.java
new file mode 100644
index 0000000..c0603c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyColumnElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbRelatedColumnNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:key-column}.
+ *
+ */
+public class DbKeyColumnElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "key-column");
+
+	/**
+	 * Create the instance of <code>DbKeyColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbKeyColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:key-column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbRelatedColumnNameAttribute</code> , See {@odf.attribute db:related-column-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbRelatedColumnNameAttribute() {
+		DbRelatedColumnNameAttribute attr = (DbRelatedColumnNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "related-column-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbRelatedColumnNameAttribute</code> , See {@odf.attribute db:related-column-name}
+	 *
+	 * @param dbRelatedColumnNameValue   The type is <code>String</code>
+	 */
+	public void setDbRelatedColumnNameAttribute(String dbRelatedColumnNameValue) {
+		DbRelatedColumnNameAttribute attr = new DbRelatedColumnNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbRelatedColumnNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyColumnsElement.java
new file mode 100644
index 0000000..a73cb6f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyColumnsElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:key-columns}.
+ *
+ */
+public class DbKeyColumnsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "key-columns");
+
+	/**
+	 * Create the instance of <code>DbKeyColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbKeyColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:key-columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:key-column}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:key-column}
+	 */
+	public DbKeyColumnElement newDbKeyColumnElement() {
+		DbKeyColumnElement dbKeyColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(DbKeyColumnElement.class);
+		this.appendChild(dbKeyColumn);
+		return dbKeyColumn;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyElement.java
new file mode 100644
index 0000000..8fb7981
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeyElement.java
@@ -0,0 +1,213 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDeleteRuleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbReferencedTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbUpdateRuleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:key}.
+ *
+ */
+public class DbKeyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "key");
+
+	/**
+	 * Create the instance of <code>DbKeyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbKeyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:key}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDeleteRuleAttribute</code> , See {@odf.attribute db:delete-rule}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDeleteRuleAttribute() {
+		DbDeleteRuleAttribute attr = (DbDeleteRuleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "delete-rule");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbDeleteRuleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDeleteRuleAttribute</code> , See {@odf.attribute db:delete-rule}
+	 *
+	 * @param dbDeleteRuleValue   The type is <code>String</code>
+	 */
+	public void setDbDeleteRuleAttribute(String dbDeleteRuleValue) {
+		DbDeleteRuleAttribute attr = new DbDeleteRuleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDeleteRuleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbReferencedTableNameAttribute</code> , See {@odf.attribute db:referenced-table-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbReferencedTableNameAttribute() {
+		DbReferencedTableNameAttribute attr = (DbReferencedTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "referenced-table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbReferencedTableNameAttribute</code> , See {@odf.attribute db:referenced-table-name}
+	 *
+	 * @param dbReferencedTableNameValue   The type is <code>String</code>
+	 */
+	public void setDbReferencedTableNameAttribute(String dbReferencedTableNameValue) {
+		DbReferencedTableNameAttribute attr = new DbReferencedTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbReferencedTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTypeAttribute</code> , See {@odf.attribute db:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTypeAttribute() {
+		DbTypeAttribute attr = (DbTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTypeAttribute</code> , See {@odf.attribute db:type}
+	 *
+	 * @param dbTypeValue   The type is <code>String</code>
+	 */
+	public void setDbTypeAttribute(String dbTypeValue) {
+		DbTypeAttribute attr = new DbTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbUpdateRuleAttribute</code> , See {@odf.attribute db:update-rule}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbUpdateRuleAttribute() {
+		DbUpdateRuleAttribute attr = (DbUpdateRuleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "update-rule");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DbUpdateRuleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbUpdateRuleAttribute</code> , See {@odf.attribute db:update-rule}
+	 *
+	 * @param dbUpdateRuleValue   The type is <code>String</code>
+	 */
+	public void setDbUpdateRuleAttribute(String dbUpdateRuleValue) {
+		DbUpdateRuleAttribute attr = new DbUpdateRuleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbUpdateRuleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:key-columns}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:key-columns}
+	 */
+	public DbKeyColumnsElement newDbKeyColumnsElement() {
+		DbKeyColumnsElement dbKeyColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(DbKeyColumnsElement.class);
+		this.appendChild(dbKeyColumns);
+		return dbKeyColumns;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeysElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeysElement.java
new file mode 100644
index 0000000..7f3af94
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbKeysElement.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:keys}.
+ *
+ */
+public class DbKeysElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "keys");
+
+	/**
+	 * Create the instance of <code>DbKeysElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbKeysElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:keys}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:key}.
+	 *
+	 * @param dbTypeValue  the <code>String</code> value of <code>DbTypeAttribute</code>, see {@odf.attribute  db:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:key}
+	 */
+	 public DbKeyElement newDbKeyElement(String dbTypeValue) {
+		DbKeyElement dbKey = ((OdfFileDom) this.ownerDocument).newOdfElement(DbKeyElement.class);
+		dbKey.setDbTypeAttribute(dbTypeValue);
+		this.appendChild(dbKey);
+		return dbKey;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbLoginElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbLoginElement.java
new file mode 100644
index 0000000..6703ad4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbLoginElement.java
@@ -0,0 +1,171 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsPasswordRequiredAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbLoginTimeoutAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbUseSystemUserAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbUserNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:login}.
+ *
+ */
+public class DbLoginElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "login");
+
+	/**
+	 * Create the instance of <code>DbLoginElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbLoginElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:login}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsPasswordRequiredAttribute</code> , See {@odf.attribute db:is-password-required}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsPasswordRequiredAttribute() {
+		DbIsPasswordRequiredAttribute attr = (DbIsPasswordRequiredAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-password-required");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbIsPasswordRequiredAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsPasswordRequiredAttribute</code> , See {@odf.attribute db:is-password-required}
+	 *
+	 * @param dbIsPasswordRequiredValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsPasswordRequiredAttribute(Boolean dbIsPasswordRequiredValue) {
+		DbIsPasswordRequiredAttribute attr = new DbIsPasswordRequiredAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsPasswordRequiredValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbLoginTimeoutAttribute</code> , See {@odf.attribute db:login-timeout}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDbLoginTimeoutAttribute() {
+		DbLoginTimeoutAttribute attr = (DbLoginTimeoutAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "login-timeout");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbLoginTimeoutAttribute</code> , See {@odf.attribute db:login-timeout}
+	 *
+	 * @param dbLoginTimeoutValue   The type is <code>Integer</code>
+	 */
+	public void setDbLoginTimeoutAttribute(Integer dbLoginTimeoutValue) {
+		DbLoginTimeoutAttribute attr = new DbLoginTimeoutAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dbLoginTimeoutValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbUseSystemUserAttribute</code> , See {@odf.attribute db:use-system-user}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbUseSystemUserAttribute() {
+		DbUseSystemUserAttribute attr = (DbUseSystemUserAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "use-system-user");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbUseSystemUserAttribute</code> , See {@odf.attribute db:use-system-user}
+	 *
+	 * @param dbUseSystemUserValue   The type is <code>Boolean</code>
+	 */
+	public void setDbUseSystemUserAttribute(Boolean dbUseSystemUserValue) {
+		DbUseSystemUserAttribute attr = new DbUseSystemUserAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbUseSystemUserValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbUserNameAttribute</code> , See {@odf.attribute db:user-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbUserNameAttribute() {
+		DbUserNameAttribute attr = (DbUserNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "user-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbUserNameAttribute</code> , See {@odf.attribute db:user-name}
+	 *
+	 * @param dbUserNameValue   The type is <code>String</code>
+	 */
+	public void setDbUserNameAttribute(String dbUserNameValue) {
+		DbUserNameAttribute attr = new DbUserNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbUserNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbOrderStatementElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbOrderStatementElement.java
new file mode 100644
index 0000000..90d4c96
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbOrderStatementElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbApplyCommandAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCommandAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:order-statement}.
+ *
+ */
+public class DbOrderStatementElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "order-statement");
+
+	/**
+	 * Create the instance of <code>DbOrderStatementElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbOrderStatementElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:order-statement}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbApplyCommandAttribute</code> , See {@odf.attribute db:apply-command}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbApplyCommandAttribute() {
+		DbApplyCommandAttribute attr = (DbApplyCommandAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "apply-command");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbApplyCommandAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbApplyCommandAttribute</code> , See {@odf.attribute db:apply-command}
+	 *
+	 * @param dbApplyCommandValue   The type is <code>Boolean</code>
+	 */
+	public void setDbApplyCommandAttribute(Boolean dbApplyCommandValue) {
+		DbApplyCommandAttribute attr = new DbApplyCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbApplyCommandValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCommandAttribute</code> , See {@odf.attribute db:command}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCommandAttribute() {
+		DbCommandAttribute attr = (DbCommandAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "command");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCommandAttribute</code> , See {@odf.attribute db:command}
+	 *
+	 * @param dbCommandValue   The type is <code>String</code>
+	 */
+	public void setDbCommandAttribute(String dbCommandValue) {
+		DbCommandAttribute attr = new DbCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCommandValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueriesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueriesElement.java
new file mode 100644
index 0000000..fe26afb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueriesElement.java
@@ -0,0 +1,103 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:queries}.
+ *
+ */
+public class DbQueriesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "queries");
+
+	/**
+	 * Create the instance of <code>DbQueriesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbQueriesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:queries}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:query}.
+	 *
+	 * @param dbCommandValue  the <code>String</code> value of <code>DbCommandAttribute</code>, see {@odf.attribute  db:command} at specification
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:query}
+	 */
+	 public DbQueryElement newDbQueryElement(String dbCommandValue, String dbNameValue) {
+		DbQueryElement dbQuery = ((OdfFileDom) this.ownerDocument).newOdfElement(DbQueryElement.class);
+		dbQuery.setDbCommandAttribute(dbCommandValue);
+		dbQuery.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbQuery);
+		return dbQuery;
+	}
+
+	/**
+	 * Create child element {@odf.element db:query-collection}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:query-collection}
+	 */
+	 public DbQueryCollectionElement newDbQueryCollectionElement(String dbNameValue) {
+		DbQueryCollectionElement dbQueryCollection = ((OdfFileDom) this.ownerDocument).newOdfElement(DbQueryCollectionElement.class);
+		dbQueryCollection.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbQueryCollection);
+		return dbQueryCollection;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueryCollectionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueryCollectionElement.java
new file mode 100644
index 0000000..c3fca39
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueryCollectionElement.java
@@ -0,0 +1,180 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTitleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:query-collection}.
+ *
+ */
+public class DbQueryCollectionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "query-collection");
+
+	/**
+	 * Create the instance of <code>DbQueryCollectionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbQueryCollectionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:query-collection}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDescriptionAttribute() {
+		DbDescriptionAttribute attr = (DbDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @param dbDescriptionValue   The type is <code>String</code>
+	 */
+	public void setDbDescriptionAttribute(String dbDescriptionValue) {
+		DbDescriptionAttribute attr = new DbDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTitleAttribute() {
+		DbTitleAttribute attr = (DbTitleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @param dbTitleValue   The type is <code>String</code>
+	 */
+	public void setDbTitleAttribute(String dbTitleValue) {
+		DbTitleAttribute attr = new DbTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTitleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:query}.
+	 *
+	 * @param dbCommandValue  the <code>String</code> value of <code>DbCommandAttribute</code>, see {@odf.attribute  db:command} at specification
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:query}
+	 */
+	 public DbQueryElement newDbQueryElement(String dbCommandValue, String dbNameValue) {
+		DbQueryElement dbQuery = ((OdfFileDom) this.ownerDocument).newOdfElement(DbQueryElement.class);
+		dbQuery.setDbCommandAttribute(dbCommandValue);
+		dbQuery.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbQuery);
+		return dbQuery;
+	}
+
+	/**
+	 * Create child element {@odf.element db:query-collection}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:query-collection}
+	 */
+	 public DbQueryCollectionElement newDbQueryCollectionElement(String dbNameValue) {
+		DbQueryCollectionElement dbQueryCollection = ((OdfFileDom) this.ownerDocument).newOdfElement(DbQueryCollectionElement.class);
+		dbQueryCollection.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbQueryCollection);
+		return dbQueryCollection;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueryElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueryElement.java
new file mode 100644
index 0000000..eea78f1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbQueryElement.java
@@ -0,0 +1,308 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCommandAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDefaultRowStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbEscapeProcessingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTitleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:query}.
+ *
+ */
+public class DbQueryElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "query");
+
+	/**
+	 * Create the instance of <code>DbQueryElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbQueryElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:query}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCommandAttribute</code> , See {@odf.attribute db:command}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCommandAttribute() {
+		DbCommandAttribute attr = (DbCommandAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "command");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCommandAttribute</code> , See {@odf.attribute db:command}
+	 *
+	 * @param dbCommandValue   The type is <code>String</code>
+	 */
+	public void setDbCommandAttribute(String dbCommandValue) {
+		DbCommandAttribute attr = new DbCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCommandValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDefaultRowStyleNameAttribute</code> , See {@odf.attribute db:default-row-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDefaultRowStyleNameAttribute() {
+		DbDefaultRowStyleNameAttribute attr = (DbDefaultRowStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "default-row-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDefaultRowStyleNameAttribute</code> , See {@odf.attribute db:default-row-style-name}
+	 *
+	 * @param dbDefaultRowStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDbDefaultRowStyleNameAttribute(String dbDefaultRowStyleNameValue) {
+		DbDefaultRowStyleNameAttribute attr = new DbDefaultRowStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDefaultRowStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDescriptionAttribute() {
+		DbDescriptionAttribute attr = (DbDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @param dbDescriptionValue   The type is <code>String</code>
+	 */
+	public void setDbDescriptionAttribute(String dbDescriptionValue) {
+		DbDescriptionAttribute attr = new DbDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbEscapeProcessingAttribute</code> , See {@odf.attribute db:escape-processing}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbEscapeProcessingAttribute() {
+		DbEscapeProcessingAttribute attr = (DbEscapeProcessingAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "escape-processing");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbEscapeProcessingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbEscapeProcessingAttribute</code> , See {@odf.attribute db:escape-processing}
+	 *
+	 * @param dbEscapeProcessingValue   The type is <code>Boolean</code>
+	 */
+	public void setDbEscapeProcessingAttribute(Boolean dbEscapeProcessingValue) {
+		DbEscapeProcessingAttribute attr = new DbEscapeProcessingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbEscapeProcessingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbStyleNameAttribute</code> , See {@odf.attribute db:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbStyleNameAttribute() {
+		DbStyleNameAttribute attr = (DbStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbStyleNameAttribute</code> , See {@odf.attribute db:style-name}
+	 *
+	 * @param dbStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDbStyleNameAttribute(String dbStyleNameValue) {
+		DbStyleNameAttribute attr = new DbStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTitleAttribute() {
+		DbTitleAttribute attr = (DbTitleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @param dbTitleValue   The type is <code>String</code>
+	 */
+	public void setDbTitleAttribute(String dbTitleValue) {
+		DbTitleAttribute attr = new DbTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTitleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:columns}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:columns}
+	 */
+	public DbColumnsElement newDbColumnsElement() {
+		DbColumnsElement dbColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(DbColumnsElement.class);
+		this.appendChild(dbColumns);
+		return dbColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element db:filter-statement}.
+	 *
+	 * @param dbCommandValue  the <code>String</code> value of <code>DbCommandAttribute</code>, see {@odf.attribute  db:command} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:filter-statement}
+	 */
+	 public DbFilterStatementElement newDbFilterStatementElement(String dbCommandValue) {
+		DbFilterStatementElement dbFilterStatement = ((OdfFileDom) this.ownerDocument).newOdfElement(DbFilterStatementElement.class);
+		dbFilterStatement.setDbCommandAttribute(dbCommandValue);
+		this.appendChild(dbFilterStatement);
+		return dbFilterStatement;
+	}
+
+	/**
+	 * Create child element {@odf.element db:order-statement}.
+	 *
+	 * @param dbCommandValue  the <code>String</code> value of <code>DbCommandAttribute</code>, see {@odf.attribute  db:command} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:order-statement}
+	 */
+	 public DbOrderStatementElement newDbOrderStatementElement(String dbCommandValue) {
+		DbOrderStatementElement dbOrderStatement = ((OdfFileDom) this.ownerDocument).newOdfElement(DbOrderStatementElement.class);
+		dbOrderStatement.setDbCommandAttribute(dbCommandValue);
+		this.appendChild(dbOrderStatement);
+		return dbOrderStatement;
+	}
+
+	/**
+	 * Create child element {@odf.element db:update-table}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:update-table}
+	 */
+	 public DbUpdateTableElement newDbUpdateTableElement(String dbNameValue) {
+		DbUpdateTableElement dbUpdateTable = ((OdfFileDom) this.ownerDocument).newOdfElement(DbUpdateTableElement.class);
+		dbUpdateTable.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbUpdateTable);
+		return dbUpdateTable;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbReportsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbReportsElement.java
new file mode 100644
index 0000000..6c5f699
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbReportsElement.java
@@ -0,0 +1,101 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:reports}.
+ *
+ */
+public class DbReportsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "reports");
+
+	/**
+	 * Create the instance of <code>DbReportsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbReportsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:reports}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:component}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:component}
+	 */
+	 public DbComponentElement newDbComponentElement(String dbNameValue) {
+		DbComponentElement dbComponent = ((OdfFileDom) this.ownerDocument).newOdfElement(DbComponentElement.class);
+		dbComponent.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbComponent);
+		return dbComponent;
+	}
+
+	/**
+	 * Create child element {@odf.element db:component-collection}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:component-collection}
+	 */
+	 public DbComponentCollectionElement newDbComponentCollectionElement(String dbNameValue) {
+		DbComponentCollectionElement dbComponentCollection = ((OdfFileDom) this.ownerDocument).newOdfElement(DbComponentCollectionElement.class);
+		dbComponentCollection.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbComponentCollection);
+		return dbComponentCollection;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbSchemaDefinitionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbSchemaDefinitionElement.java
new file mode 100644
index 0000000..eecefcb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbSchemaDefinitionElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:schema-definition}.
+ *
+ */
+public class DbSchemaDefinitionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "schema-definition");
+
+	/**
+	 * Create the instance of <code>DbSchemaDefinitionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbSchemaDefinitionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:schema-definition}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-definitions}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:table-definitions}
+	 */
+	public DbTableDefinitionsElement newDbTableDefinitionsElement() {
+		DbTableDefinitionsElement dbTableDefinitions = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableDefinitionsElement.class);
+		this.appendChild(dbTableDefinitions);
+		return dbTableDefinitions;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbServerDatabaseElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbServerDatabaseElement.java
new file mode 100644
index 0000000..966a57c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbServerDatabaseElement.java
@@ -0,0 +1,198 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbHostnameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbLocalSocketAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbPortAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:server-database}.
+ *
+ */
+public class DbServerDatabaseElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "server-database");
+
+	/**
+	 * Create the instance of <code>DbServerDatabaseElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbServerDatabaseElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:server-database}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDatabaseNameAttribute</code> , See {@odf.attribute db:database-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDatabaseNameAttribute() {
+		DbDatabaseNameAttribute attr = (DbDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDatabaseNameAttribute</code> , See {@odf.attribute db:database-name}
+	 *
+	 * @param dbDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setDbDatabaseNameAttribute(String dbDatabaseNameValue) {
+		DbDatabaseNameAttribute attr = new DbDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbHostnameAttribute</code> , See {@odf.attribute db:hostname}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbHostnameAttribute() {
+		DbHostnameAttribute attr = (DbHostnameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "hostname");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbHostnameAttribute</code> , See {@odf.attribute db:hostname}
+	 *
+	 * @param dbHostnameValue   The type is <code>String</code>
+	 */
+	public void setDbHostnameAttribute(String dbHostnameValue) {
+		DbHostnameAttribute attr = new DbHostnameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbHostnameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbLocalSocketAttribute</code> , See {@odf.attribute db:local-socket}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbLocalSocketAttribute() {
+		DbLocalSocketAttribute attr = (DbLocalSocketAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "local-socket");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbLocalSocketAttribute</code> , See {@odf.attribute db:local-socket}
+	 *
+	 * @param dbLocalSocketValue   The type is <code>String</code>
+	 */
+	public void setDbLocalSocketAttribute(String dbLocalSocketValue) {
+		DbLocalSocketAttribute attr = new DbLocalSocketAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbLocalSocketValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbPortAttribute</code> , See {@odf.attribute db:port}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDbPortAttribute() {
+		DbPortAttribute attr = (DbPortAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "port");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbPortAttribute</code> , See {@odf.attribute db:port}
+	 *
+	 * @param dbPortValue   The type is <code>Integer</code>
+	 */
+	public void setDbPortAttribute(Integer dbPortValue) {
+		DbPortAttribute attr = new DbPortAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dbPortValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTypeAttribute</code> , See {@odf.attribute db:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTypeAttribute() {
+		DbTypeAttribute attr = (DbTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTypeAttribute</code> , See {@odf.attribute db:type}
+	 *
+	 * @param dbTypeValue   The type is <code>String</code>
+	 */
+	public void setDbTypeAttribute(String dbTypeValue) {
+		DbTypeAttribute attr = new DbTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableDefinitionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableDefinitionElement.java
new file mode 100644
index 0000000..9b148d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableDefinitionElement.java
@@ -0,0 +1,214 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCatalogNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbSchemaNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-definition}.
+ *
+ */
+public class DbTableDefinitionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-definition");
+
+	/**
+	 * Create the instance of <code>DbTableDefinitionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableDefinitionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-definition}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCatalogNameAttribute() {
+		DbCatalogNameAttribute attr = (DbCatalogNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "catalog-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @param dbCatalogNameValue   The type is <code>String</code>
+	 */
+	public void setDbCatalogNameAttribute(String dbCatalogNameValue) {
+		DbCatalogNameAttribute attr = new DbCatalogNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCatalogNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbSchemaNameAttribute</code> , See {@odf.attribute db:schema-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbSchemaNameAttribute() {
+		DbSchemaNameAttribute attr = (DbSchemaNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "schema-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbSchemaNameAttribute</code> , See {@odf.attribute db:schema-name}
+	 *
+	 * @param dbSchemaNameValue   The type is <code>String</code>
+	 */
+	public void setDbSchemaNameAttribute(String dbSchemaNameValue) {
+		DbSchemaNameAttribute attr = new DbSchemaNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbSchemaNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTypeAttribute</code> , See {@odf.attribute db:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTypeAttribute() {
+		DbTypeAttribute attr = (DbTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTypeAttribute</code> , See {@odf.attribute db:type}
+	 *
+	 * @param dbTypeValue   The type is <code>String</code>
+	 */
+	public void setDbTypeAttribute(String dbTypeValue) {
+		DbTypeAttribute attr = new DbTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:column-definitions}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:column-definitions}
+	 */
+	public DbColumnDefinitionsElement newDbColumnDefinitionsElement() {
+		DbColumnDefinitionsElement dbColumnDefinitions = ((OdfFileDom) this.ownerDocument).newOdfElement(DbColumnDefinitionsElement.class);
+		this.appendChild(dbColumnDefinitions);
+		return dbColumnDefinitions;
+	}
+
+	/**
+	 * Create child element {@odf.element db:indices}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:indices}
+	 */
+	public DbIndicesElement newDbIndicesElement() {
+		DbIndicesElement dbIndices = ((OdfFileDom) this.ownerDocument).newOdfElement(DbIndicesElement.class);
+		this.appendChild(dbIndices);
+		return dbIndices;
+	}
+
+	/**
+	 * Create child element {@odf.element db:keys}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:keys}
+	 */
+	public DbKeysElement newDbKeysElement() {
+		DbKeysElement dbKeys = ((OdfFileDom) this.ownerDocument).newOdfElement(DbKeysElement.class);
+		this.appendChild(dbKeys);
+		return dbKeys;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableDefinitionsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableDefinitionsElement.java
new file mode 100644
index 0000000..f049f69
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableDefinitionsElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-definitions}.
+ *
+ */
+public class DbTableDefinitionsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-definitions");
+
+	/**
+	 * Create the instance of <code>DbTableDefinitionsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableDefinitionsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-definitions}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-definition}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-definition}
+	 */
+	 public DbTableDefinitionElement newDbTableDefinitionElement(String dbNameValue) {
+		DbTableDefinitionElement dbTableDefinition = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableDefinitionElement.class);
+		dbTableDefinition.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbTableDefinition);
+		return dbTableDefinition;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableExcludeFilterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableExcludeFilterElement.java
new file mode 100644
index 0000000..3163e75
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableExcludeFilterElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-exclude-filter}.
+ *
+ */
+public class DbTableExcludeFilterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-exclude-filter");
+
+	/**
+	 * Create the instance of <code>DbTableExcludeFilterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableExcludeFilterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-exclude-filter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-filter-pattern}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:table-filter-pattern}
+	 */
+	public DbTableFilterPatternElement newDbTableFilterPatternElement() {
+		DbTableFilterPatternElement dbTableFilterPattern = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableFilterPatternElement.class);
+		this.appendChild(dbTableFilterPattern);
+		return dbTableFilterPattern;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableFilterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableFilterElement.java
new file mode 100644
index 0000000..8e7ec38
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableFilterElement.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-filter}.
+ *
+ */
+public class DbTableFilterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-filter");
+
+	/**
+	 * Create the instance of <code>DbTableFilterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableFilterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-filter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-exclude-filter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-exclude-filter}
+	 */
+	public DbTableExcludeFilterElement newDbTableExcludeFilterElement() {
+		DbTableExcludeFilterElement dbTableExcludeFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableExcludeFilterElement.class);
+		this.appendChild(dbTableExcludeFilter);
+		return dbTableExcludeFilter;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-include-filter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-include-filter}
+	 */
+	public DbTableIncludeFilterElement newDbTableIncludeFilterElement() {
+		DbTableIncludeFilterElement dbTableIncludeFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableIncludeFilterElement.class);
+		this.appendChild(dbTableIncludeFilter);
+		return dbTableIncludeFilter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableFilterPatternElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableFilterPatternElement.java
new file mode 100644
index 0000000..9acac4b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableFilterPatternElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-filter-pattern}.
+ *
+ */
+public class DbTableFilterPatternElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-filter-pattern");
+
+	/**
+	 * Create the instance of <code>DbTableFilterPatternElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableFilterPatternElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-filter-pattern}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableIncludeFilterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableIncludeFilterElement.java
new file mode 100644
index 0000000..55815f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableIncludeFilterElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-include-filter}.
+ *
+ */
+public class DbTableIncludeFilterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-include-filter");
+
+	/**
+	 * Create the instance of <code>DbTableIncludeFilterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableIncludeFilterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-include-filter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-filter-pattern}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:table-filter-pattern}
+	 */
+	public DbTableFilterPatternElement newDbTableFilterPatternElement() {
+		DbTableFilterPatternElement dbTableFilterPattern = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableFilterPatternElement.class);
+		this.appendChild(dbTableFilterPattern);
+		return dbTableFilterPattern;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableRepresentationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableRepresentationElement.java
new file mode 100644
index 0000000..9c618d4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableRepresentationElement.java
@@ -0,0 +1,291 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCatalogNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDefaultRowStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbSchemaNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbTitleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-representation}.
+ *
+ */
+public class DbTableRepresentationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-representation");
+
+	/**
+	 * Create the instance of <code>DbTableRepresentationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableRepresentationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-representation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCatalogNameAttribute() {
+		DbCatalogNameAttribute attr = (DbCatalogNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "catalog-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @param dbCatalogNameValue   The type is <code>String</code>
+	 */
+	public void setDbCatalogNameAttribute(String dbCatalogNameValue) {
+		DbCatalogNameAttribute attr = new DbCatalogNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCatalogNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDefaultRowStyleNameAttribute</code> , See {@odf.attribute db:default-row-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDefaultRowStyleNameAttribute() {
+		DbDefaultRowStyleNameAttribute attr = (DbDefaultRowStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "default-row-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDefaultRowStyleNameAttribute</code> , See {@odf.attribute db:default-row-style-name}
+	 *
+	 * @param dbDefaultRowStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDbDefaultRowStyleNameAttribute(String dbDefaultRowStyleNameValue) {
+		DbDefaultRowStyleNameAttribute attr = new DbDefaultRowStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDefaultRowStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbDescriptionAttribute() {
+		DbDescriptionAttribute attr = (DbDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbDescriptionAttribute</code> , See {@odf.attribute db:description}
+	 *
+	 * @param dbDescriptionValue   The type is <code>String</code>
+	 */
+	public void setDbDescriptionAttribute(String dbDescriptionValue) {
+		DbDescriptionAttribute attr = new DbDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbSchemaNameAttribute</code> , See {@odf.attribute db:schema-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbSchemaNameAttribute() {
+		DbSchemaNameAttribute attr = (DbSchemaNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "schema-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbSchemaNameAttribute</code> , See {@odf.attribute db:schema-name}
+	 *
+	 * @param dbSchemaNameValue   The type is <code>String</code>
+	 */
+	public void setDbSchemaNameAttribute(String dbSchemaNameValue) {
+		DbSchemaNameAttribute attr = new DbSchemaNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbSchemaNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbStyleNameAttribute</code> , See {@odf.attribute db:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbStyleNameAttribute() {
+		DbStyleNameAttribute attr = (DbStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbStyleNameAttribute</code> , See {@odf.attribute db:style-name}
+	 *
+	 * @param dbStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDbStyleNameAttribute(String dbStyleNameValue) {
+		DbStyleNameAttribute attr = new DbStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbTitleAttribute() {
+		DbTitleAttribute attr = (DbTitleAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbTitleAttribute</code> , See {@odf.attribute db:title}
+	 *
+	 * @param dbTitleValue   The type is <code>String</code>
+	 */
+	public void setDbTitleAttribute(String dbTitleValue) {
+		DbTitleAttribute attr = new DbTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbTitleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element db:columns}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:columns}
+	 */
+	public DbColumnsElement newDbColumnsElement() {
+		DbColumnsElement dbColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(DbColumnsElement.class);
+		this.appendChild(dbColumns);
+		return dbColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element db:filter-statement}.
+	 *
+	 * @param dbCommandValue  the <code>String</code> value of <code>DbCommandAttribute</code>, see {@odf.attribute  db:command} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:filter-statement}
+	 */
+	 public DbFilterStatementElement newDbFilterStatementElement(String dbCommandValue) {
+		DbFilterStatementElement dbFilterStatement = ((OdfFileDom) this.ownerDocument).newOdfElement(DbFilterStatementElement.class);
+		dbFilterStatement.setDbCommandAttribute(dbCommandValue);
+		this.appendChild(dbFilterStatement);
+		return dbFilterStatement;
+	}
+
+	/**
+	 * Create child element {@odf.element db:order-statement}.
+	 *
+	 * @param dbCommandValue  the <code>String</code> value of <code>DbCommandAttribute</code>, see {@odf.attribute  db:command} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:order-statement}
+	 */
+	 public DbOrderStatementElement newDbOrderStatementElement(String dbCommandValue) {
+		DbOrderStatementElement dbOrderStatement = ((OdfFileDom) this.ownerDocument).newOdfElement(DbOrderStatementElement.class);
+		dbOrderStatement.setDbCommandAttribute(dbCommandValue);
+		this.appendChild(dbOrderStatement);
+		return dbOrderStatement;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableRepresentationsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableRepresentationsElement.java
new file mode 100644
index 0000000..d166e36
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableRepresentationsElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-representations}.
+ *
+ */
+public class DbTableRepresentationsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-representations");
+
+	/**
+	 * Create the instance of <code>DbTableRepresentationsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableRepresentationsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-representations}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-representation}.
+	 *
+	 * @param dbNameValue  the <code>String</code> value of <code>DbNameAttribute</code>, see {@odf.attribute  db:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-representation}
+	 */
+	 public DbTableRepresentationElement newDbTableRepresentationElement(String dbNameValue) {
+		DbTableRepresentationElement dbTableRepresentation = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableRepresentationElement.class);
+		dbTableRepresentation.setDbNameAttribute(dbNameValue);
+		this.appendChild(dbTableRepresentation);
+		return dbTableRepresentation;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableSettingElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableSettingElement.java
new file mode 100644
index 0000000..bb3345f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableSettingElement.java
@@ -0,0 +1,147 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbIsFirstRowHeaderLineAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbShowDeletedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-setting}.
+ *
+ */
+public class DbTableSettingElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-setting");
+
+	/**
+	 * Create the instance of <code>DbTableSettingElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableSettingElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-setting}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbIsFirstRowHeaderLineAttribute</code> , See {@odf.attribute db:is-first-row-header-line}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbIsFirstRowHeaderLineAttribute() {
+		DbIsFirstRowHeaderLineAttribute attr = (DbIsFirstRowHeaderLineAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "is-first-row-header-line");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbIsFirstRowHeaderLineAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbIsFirstRowHeaderLineAttribute</code> , See {@odf.attribute db:is-first-row-header-line}
+	 *
+	 * @param dbIsFirstRowHeaderLineValue   The type is <code>Boolean</code>
+	 */
+	public void setDbIsFirstRowHeaderLineAttribute(Boolean dbIsFirstRowHeaderLineValue) {
+		DbIsFirstRowHeaderLineAttribute attr = new DbIsFirstRowHeaderLineAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbIsFirstRowHeaderLineValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbShowDeletedAttribute</code> , See {@odf.attribute db:show-deleted}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDbShowDeletedAttribute() {
+		DbShowDeletedAttribute attr = (DbShowDeletedAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "show-deleted");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DbShowDeletedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbShowDeletedAttribute</code> , See {@odf.attribute db:show-deleted}
+	 *
+	 * @param dbShowDeletedValue   The type is <code>Boolean</code>
+	 */
+	public void setDbShowDeletedAttribute(Boolean dbShowDeletedValue) {
+		DbShowDeletedAttribute attr = new DbShowDeletedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dbShowDeletedValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element db:character-set}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:character-set}
+	 */
+	public DbCharacterSetElement newDbCharacterSetElement() {
+		DbCharacterSetElement dbCharacterSet = ((OdfFileDom) this.ownerDocument).newOdfElement(DbCharacterSetElement.class);
+		this.appendChild(dbCharacterSet);
+		return dbCharacterSet;
+	}
+
+	/**
+	 * Create child element {@odf.element db:delimiter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:delimiter}
+	 */
+	public DbDelimiterElement newDbDelimiterElement() {
+		DbDelimiterElement dbDelimiter = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDelimiterElement.class);
+		this.appendChild(dbDelimiter);
+		return dbDelimiter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableSettingsElement.java
new file mode 100644
index 0000000..9b36b86
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableSettingsElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-settings}.
+ *
+ */
+public class DbTableSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-settings");
+
+	/**
+	 * Create the instance of <code>DbTableSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-setting}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-setting}
+	 */
+	public DbTableSettingElement newDbTableSettingElement() {
+		DbTableSettingElement dbTableSetting = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableSettingElement.class);
+		this.appendChild(dbTableSetting);
+		return dbTableSetting;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableTypeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableTypeElement.java
new file mode 100644
index 0000000..99f5166
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableTypeElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-type}.
+ *
+ */
+public class DbTableTypeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-type");
+
+	/**
+	 * Create the instance of <code>DbTableTypeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableTypeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-type}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableTypeFilterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableTypeFilterElement.java
new file mode 100644
index 0000000..65937cf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbTableTypeFilterElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:table-type-filter}.
+ *
+ */
+public class DbTableTypeFilterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "table-type-filter");
+
+	/**
+	 * Create the instance of <code>DbTableTypeFilterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbTableTypeFilterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:table-type-filter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-type}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-type}
+	 */
+	public DbTableTypeElement newDbTableTypeElement() {
+		DbTableTypeElement dbTableType = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableTypeElement.class);
+		this.appendChild(dbTableType);
+		return dbTableType;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbUpdateTableElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbUpdateTableElement.java
new file mode 100644
index 0000000..ccfa01d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/db/DbUpdateTableElement.java
@@ -0,0 +1,148 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.db;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.db.DbCatalogNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.db.DbSchemaNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element db:update-table}.
+ *
+ */
+public class DbUpdateTableElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DB, "update-table");
+
+	/**
+	 * Create the instance of <code>DbUpdateTableElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DbUpdateTableElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element db:update-table}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbCatalogNameAttribute() {
+		DbCatalogNameAttribute attr = (DbCatalogNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "catalog-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbCatalogNameAttribute</code> , See {@odf.attribute db:catalog-name}
+	 *
+	 * @param dbCatalogNameValue   The type is <code>String</code>
+	 */
+	public void setDbCatalogNameAttribute(String dbCatalogNameValue) {
+		DbCatalogNameAttribute attr = new DbCatalogNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbCatalogNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbNameAttribute() {
+		DbNameAttribute attr = (DbNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbNameAttribute</code> , See {@odf.attribute db:name}
+	 *
+	 * @param dbNameValue   The type is <code>String</code>
+	 */
+	public void setDbNameAttribute(String dbNameValue) {
+		DbNameAttribute attr = new DbNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DbSchemaNameAttribute</code> , See {@odf.attribute db:schema-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDbSchemaNameAttribute() {
+		DbSchemaNameAttribute attr = (DbSchemaNameAttribute) getOdfAttribute(OdfDocumentNamespace.DB, "schema-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DbSchemaNameAttribute</code> , See {@odf.attribute db:schema-name}
+	 *
+	 * @param dbSchemaNameValue   The type is <code>String</code>
+	 */
+	public void setDbSchemaNameAttribute(String dbSchemaNameValue) {
+		DbSchemaNameAttribute attr = new DbSchemaNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dbSchemaNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcCreatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcCreatorElement.java
new file mode 100644
index 0000000..ce9c5cc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcCreatorElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dc;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dc:creator}.
+ *
+ */
+public class DcCreatorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DC, "creator");
+
+	/**
+	 * Create the instance of <code>DcCreatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DcCreatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dc:creator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcDateElement.java
new file mode 100644
index 0000000..c167554
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcDateElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dc;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dc:date}.
+ *
+ */
+public class DcDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DC, "date");
+
+	/**
+	 * Create the instance of <code>DcDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DcDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dc:date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcDescriptionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcDescriptionElement.java
new file mode 100644
index 0000000..4599df8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcDescriptionElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dc;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dc:description}.
+ *
+ */
+public class DcDescriptionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DC, "description");
+
+	/**
+	 * Create the instance of <code>DcDescriptionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DcDescriptionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dc:description}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcLanguageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcLanguageElement.java
new file mode 100644
index 0000000..b8b4cdd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcLanguageElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dc;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dc:language}.
+ *
+ */
+public class DcLanguageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DC, "language");
+
+	/**
+	 * Create the instance of <code>DcLanguageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DcLanguageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dc:language}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcSubjectElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcSubjectElement.java
new file mode 100644
index 0000000..ee749dc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcSubjectElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dc;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dc:subject}.
+ *
+ */
+public class DcSubjectElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DC, "subject");
+
+	/**
+	 * Create the instance of <code>DcSubjectElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DcSubjectElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dc:subject}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcTitleElement.java
new file mode 100644
index 0000000..177e872
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dc/DcTitleElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dc;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dc:title}.
+ *
+ */
+public class DcTitleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DC, "title");
+
+	/**
+	 * Create the instance of <code>DcTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DcTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dc:title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dCubeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dCubeElement.java
new file mode 100644
index 0000000..80de20d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dCubeElement.java
@@ -0,0 +1,348 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dr3d;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dMaxEdgeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dMinEdgeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawZIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dr3d:cube}.
+ *
+ */
+public class Dr3dCubeElement extends OdfStyleableShapeElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "cube");
+
+	/**
+	 * Create the instance of <code>Dr3dCubeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dCubeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dr3d:cube}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dMaxEdgeAttribute</code> , See {@odf.attribute dr3d:max-edge}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dMaxEdgeAttribute() {
+		Dr3dMaxEdgeAttribute attr = (Dr3dMaxEdgeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "max-edge");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dMaxEdgeAttribute</code> , See {@odf.attribute dr3d:max-edge}
+	 *
+	 * @param dr3dMaxEdgeValue   The type is <code>String</code>
+	 */
+	public void setDr3dMaxEdgeAttribute(String dr3dMaxEdgeValue) {
+		Dr3dMaxEdgeAttribute attr = new Dr3dMaxEdgeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dMaxEdgeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dMinEdgeAttribute</code> , See {@odf.attribute dr3d:min-edge}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dMinEdgeAttribute() {
+		Dr3dMinEdgeAttribute attr = (Dr3dMinEdgeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "min-edge");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dMinEdgeAttribute</code> , See {@odf.attribute dr3d:min-edge}
+	 *
+	 * @param dr3dMinEdgeValue   The type is <code>String</code>
+	 */
+	public void setDr3dMinEdgeAttribute(String dr3dMinEdgeValue) {
+		Dr3dMinEdgeAttribute attr = new Dr3dMinEdgeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dMinEdgeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTransformAttribute() {
+		Dr3dTransformAttribute attr = (Dr3dTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @param dr3dTransformValue   The type is <code>String</code>
+	 */
+	public void setDr3dTransformAttribute(String dr3dTransformValue) {
+		Dr3dTransformAttribute attr = new Dr3dTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassNamesAttribute() {
+		DrawClassNamesAttribute attr = (DrawClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @param drawClassNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawClassNamesAttribute(String drawClassNamesValue) {
+		DrawClassNamesAttribute attr = new DrawClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawZIndexAttribute() {
+		DrawZIndexAttribute attr = (DrawZIndexAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "z-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @param drawZIndexValue   The type is <code>Integer</code>
+	 */
+	public void setDrawZIndexAttribute(Integer drawZIndexValue) {
+		DrawZIndexAttribute attr = new DrawZIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawZIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassNamesAttribute() {
+		PresentationClassNamesAttribute attr = (PresentationClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @param presentationClassNamesValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassNamesAttribute(String presentationClassNamesValue) {
+		PresentationClassNamesAttribute attr = new PresentationClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStyleNameAttribute() {
+		PresentationStyleNameAttribute attr = (PresentationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @param presentationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationStyleNameAttribute(String presentationStyleNameValue) {
+		PresentationStyleNameAttribute attr = new PresentationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dExtrudeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dExtrudeElement.java
new file mode 100644
index 0000000..8514c8f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dExtrudeElement.java
@@ -0,0 +1,352 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dr3d;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawZIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dr3d:extrude}.
+ *
+ */
+public class Dr3dExtrudeElement extends OdfStyleableShapeElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "extrude");
+
+	/**
+	 * Create the instance of <code>Dr3dExtrudeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dExtrudeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dr3d:extrude}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTransformAttribute() {
+		Dr3dTransformAttribute attr = (Dr3dTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @param dr3dTransformValue   The type is <code>String</code>
+	 */
+	public void setDr3dTransformAttribute(String dr3dTransformValue) {
+		Dr3dTransformAttribute attr = new Dr3dTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassNamesAttribute() {
+		DrawClassNamesAttribute attr = (DrawClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @param drawClassNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawClassNamesAttribute(String drawClassNamesValue) {
+		DrawClassNamesAttribute attr = new DrawClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawZIndexAttribute() {
+		DrawZIndexAttribute attr = (DrawZIndexAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "z-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @param drawZIndexValue   The type is <code>Integer</code>
+	 */
+	public void setDrawZIndexAttribute(Integer drawZIndexValue) {
+		DrawZIndexAttribute attr = new DrawZIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawZIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassNamesAttribute() {
+		PresentationClassNamesAttribute attr = (PresentationClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @param presentationClassNamesValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassNamesAttribute(String presentationClassNamesValue) {
+		PresentationClassNamesAttribute attr = new PresentationClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStyleNameAttribute() {
+		PresentationStyleNameAttribute attr = (PresentationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @param presentationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationStyleNameAttribute(String presentationStyleNameValue) {
+		PresentationStyleNameAttribute attr = new PresentationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgDAttribute() {
+		SvgDAttribute attr = (SvgDAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "d");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @param svgDValue   The type is <code>String</code>
+	 */
+	public void setSvgDAttribute(String svgDValue) {
+		SvgDAttribute attr = new SvgDAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgDValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dLightElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dLightElement.java
new file mode 100644
index 0000000..1b720eb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dLightElement.java
@@ -0,0 +1,173 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dr3d;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dDiffuseColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dEnabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dSpecularAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dr3d:light}.
+ *
+ */
+public class Dr3dLightElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "light");
+
+	/**
+	 * Create the instance of <code>Dr3dLightElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dLightElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dr3d:light}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dDiffuseColorAttribute</code> , See {@odf.attribute dr3d:diffuse-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dDiffuseColorAttribute() {
+		Dr3dDiffuseColorAttribute attr = (Dr3dDiffuseColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "diffuse-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dDiffuseColorAttribute</code> , See {@odf.attribute dr3d:diffuse-color}
+	 *
+	 * @param dr3dDiffuseColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dDiffuseColorAttribute(String dr3dDiffuseColorValue) {
+		Dr3dDiffuseColorAttribute attr = new Dr3dDiffuseColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dDiffuseColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dDirectionAttribute</code> , See {@odf.attribute dr3d:direction}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dDirectionAttribute() {
+		Dr3dDirectionAttribute attr = (Dr3dDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dDirectionAttribute</code> , See {@odf.attribute dr3d:direction}
+	 *
+	 * @param dr3dDirectionValue   The type is <code>String</code>
+	 */
+	public void setDr3dDirectionAttribute(String dr3dDirectionValue) {
+		Dr3dDirectionAttribute attr = new Dr3dDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dEnabledAttribute</code> , See {@odf.attribute dr3d:enabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDr3dEnabledAttribute() {
+		Dr3dEnabledAttribute attr = (Dr3dEnabledAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "enabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dEnabledAttribute</code> , See {@odf.attribute dr3d:enabled}
+	 *
+	 * @param dr3dEnabledValue   The type is <code>Boolean</code>
+	 */
+	public void setDr3dEnabledAttribute(Boolean dr3dEnabledValue) {
+		Dr3dEnabledAttribute attr = new Dr3dEnabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dr3dEnabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dSpecularAttribute</code> , See {@odf.attribute dr3d:specular}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDr3dSpecularAttribute() {
+		Dr3dSpecularAttribute attr = (Dr3dSpecularAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "specular");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dSpecularAttribute</code> , See {@odf.attribute dr3d:specular}
+	 *
+	 * @param dr3dSpecularValue   The type is <code>Boolean</code>
+	 */
+	public void setDr3dSpecularAttribute(Boolean dr3dSpecularValue) {
+		Dr3dSpecularAttribute attr = new Dr3dSpecularAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dr3dSpecularValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dRotateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dRotateElement.java
new file mode 100644
index 0000000..1b8b893
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dRotateElement.java
@@ -0,0 +1,352 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dr3d;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawZIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dr3d:rotate}.
+ *
+ */
+public class Dr3dRotateElement extends OdfStyleableShapeElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "rotate");
+
+	/**
+	 * Create the instance of <code>Dr3dRotateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dRotateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dr3d:rotate}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTransformAttribute() {
+		Dr3dTransformAttribute attr = (Dr3dTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @param dr3dTransformValue   The type is <code>String</code>
+	 */
+	public void setDr3dTransformAttribute(String dr3dTransformValue) {
+		Dr3dTransformAttribute attr = new Dr3dTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassNamesAttribute() {
+		DrawClassNamesAttribute attr = (DrawClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @param drawClassNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawClassNamesAttribute(String drawClassNamesValue) {
+		DrawClassNamesAttribute attr = new DrawClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawZIndexAttribute() {
+		DrawZIndexAttribute attr = (DrawZIndexAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "z-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @param drawZIndexValue   The type is <code>Integer</code>
+	 */
+	public void setDrawZIndexAttribute(Integer drawZIndexValue) {
+		DrawZIndexAttribute attr = new DrawZIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawZIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassNamesAttribute() {
+		PresentationClassNamesAttribute attr = (PresentationClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @param presentationClassNamesValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassNamesAttribute(String presentationClassNamesValue) {
+		PresentationClassNamesAttribute attr = new PresentationClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStyleNameAttribute() {
+		PresentationStyleNameAttribute attr = (PresentationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @param presentationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationStyleNameAttribute(String presentationStyleNameValue) {
+		PresentationStyleNameAttribute attr = new PresentationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgDAttribute() {
+		SvgDAttribute attr = (SvgDAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "d");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @param svgDValue   The type is <code>String</code>
+	 */
+	public void setSvgDAttribute(String svgDValue) {
+		SvgDAttribute attr = new SvgDAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgDValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dSceneElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dSceneElement.java
new file mode 100644
index 0000000..8d3a679
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dSceneElement.java
@@ -0,0 +1,945 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dr3d;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGluePointElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dAmbientColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dFocalLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dLightingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dProjectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadeModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadowSlantAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVpnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVrpAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVupAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawZIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableBackgroundAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorPageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dr3d:scene}.
+ *
+ */
+public class Dr3dSceneElement extends OdfStyleableShapeElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "scene");
+
+	/**
+	 * Create the instance of <code>Dr3dSceneElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dSceneElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dr3d:scene}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dAmbientColorAttribute</code> , See {@odf.attribute dr3d:ambient-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dAmbientColorAttribute() {
+		Dr3dAmbientColorAttribute attr = (Dr3dAmbientColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "ambient-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dAmbientColorAttribute</code> , See {@odf.attribute dr3d:ambient-color}
+	 *
+	 * @param dr3dAmbientColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dAmbientColorAttribute(String dr3dAmbientColorValue) {
+		Dr3dAmbientColorAttribute attr = new Dr3dAmbientColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dAmbientColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dDistanceAttribute</code> , See {@odf.attribute dr3d:distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dDistanceAttribute() {
+		Dr3dDistanceAttribute attr = (Dr3dDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dDistanceAttribute</code> , See {@odf.attribute dr3d:distance}
+	 *
+	 * @param dr3dDistanceValue   The type is <code>String</code>
+	 */
+	public void setDr3dDistanceAttribute(String dr3dDistanceValue) {
+		Dr3dDistanceAttribute attr = new Dr3dDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dFocalLengthAttribute</code> , See {@odf.attribute dr3d:focal-length}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dFocalLengthAttribute() {
+		Dr3dFocalLengthAttribute attr = (Dr3dFocalLengthAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "focal-length");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dFocalLengthAttribute</code> , See {@odf.attribute dr3d:focal-length}
+	 *
+	 * @param dr3dFocalLengthValue   The type is <code>String</code>
+	 */
+	public void setDr3dFocalLengthAttribute(String dr3dFocalLengthValue) {
+		Dr3dFocalLengthAttribute attr = new Dr3dFocalLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dFocalLengthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dLightingModeAttribute</code> , See {@odf.attribute dr3d:lighting-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dLightingModeAttribute() {
+		Dr3dLightingModeAttribute attr = (Dr3dLightingModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "lighting-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dLightingModeAttribute</code> , See {@odf.attribute dr3d:lighting-mode}
+	 *
+	 * @param dr3dLightingModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dLightingModeAttribute(String dr3dLightingModeValue) {
+		Dr3dLightingModeAttribute attr = new Dr3dLightingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dLightingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dProjectionAttribute</code> , See {@odf.attribute dr3d:projection}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dProjectionAttribute() {
+		Dr3dProjectionAttribute attr = (Dr3dProjectionAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "projection");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dProjectionAttribute</code> , See {@odf.attribute dr3d:projection}
+	 *
+	 * @param dr3dProjectionValue   The type is <code>String</code>
+	 */
+	public void setDr3dProjectionAttribute(String dr3dProjectionValue) {
+		Dr3dProjectionAttribute attr = new Dr3dProjectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dProjectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShadeModeAttribute</code> , See {@odf.attribute dr3d:shade-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShadeModeAttribute() {
+		Dr3dShadeModeAttribute attr = (Dr3dShadeModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shade-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShadeModeAttribute</code> , See {@odf.attribute dr3d:shade-mode}
+	 *
+	 * @param dr3dShadeModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dShadeModeAttribute(String dr3dShadeModeValue) {
+		Dr3dShadeModeAttribute attr = new Dr3dShadeModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShadeModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShadowSlantAttribute</code> , See {@odf.attribute dr3d:shadow-slant}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShadowSlantAttribute() {
+		Dr3dShadowSlantAttribute attr = (Dr3dShadowSlantAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shadow-slant");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShadowSlantAttribute</code> , See {@odf.attribute dr3d:shadow-slant}
+	 *
+	 * @param dr3dShadowSlantValue   The type is <code>String</code>
+	 */
+	public void setDr3dShadowSlantAttribute(String dr3dShadowSlantValue) {
+		Dr3dShadowSlantAttribute attr = new Dr3dShadowSlantAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShadowSlantValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTransformAttribute() {
+		Dr3dTransformAttribute attr = (Dr3dTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @param dr3dTransformValue   The type is <code>String</code>
+	 */
+	public void setDr3dTransformAttribute(String dr3dTransformValue) {
+		Dr3dTransformAttribute attr = new Dr3dTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVpnAttribute</code> , See {@odf.attribute dr3d:vpn}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dVpnAttribute() {
+		Dr3dVpnAttribute attr = (Dr3dVpnAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vpn");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVpnAttribute</code> , See {@odf.attribute dr3d:vpn}
+	 *
+	 * @param dr3dVpnValue   The type is <code>String</code>
+	 */
+	public void setDr3dVpnAttribute(String dr3dVpnValue) {
+		Dr3dVpnAttribute attr = new Dr3dVpnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dVpnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVrpAttribute</code> , See {@odf.attribute dr3d:vrp}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dVrpAttribute() {
+		Dr3dVrpAttribute attr = (Dr3dVrpAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vrp");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVrpAttribute</code> , See {@odf.attribute dr3d:vrp}
+	 *
+	 * @param dr3dVrpValue   The type is <code>String</code>
+	 */
+	public void setDr3dVrpAttribute(String dr3dVrpValue) {
+		Dr3dVrpAttribute attr = new Dr3dVrpAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dVrpValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVupAttribute</code> , See {@odf.attribute dr3d:vup}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dVupAttribute() {
+		Dr3dVupAttribute attr = (Dr3dVupAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vup");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVupAttribute</code> , See {@odf.attribute dr3d:vup}
+	 *
+	 * @param dr3dVupValue   The type is <code>String</code>
+	 */
+	public void setDr3dVupAttribute(String dr3dVupValue) {
+		Dr3dVupAttribute attr = new Dr3dVupAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dVupValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassNamesAttribute() {
+		DrawClassNamesAttribute attr = (DrawClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @param drawClassNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawClassNamesAttribute(String drawClassNamesValue) {
+		DrawClassNamesAttribute attr = new DrawClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawZIndexAttribute() {
+		DrawZIndexAttribute attr = (DrawZIndexAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "z-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @param drawZIndexValue   The type is <code>Integer</code>
+	 */
+	public void setDrawZIndexAttribute(Integer drawZIndexValue) {
+		DrawZIndexAttribute attr = new DrawZIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawZIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassNamesAttribute() {
+		PresentationClassNamesAttribute attr = (PresentationClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @param presentationClassNamesValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassNamesAttribute(String presentationClassNamesValue) {
+		PresentationClassNamesAttribute attr = new PresentationClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStyleNameAttribute() {
+		PresentationStyleNameAttribute attr = (PresentationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @param presentationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationStyleNameAttribute(String presentationStyleNameValue) {
+		PresentationStyleNameAttribute attr = new PresentationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndCellAddressAttribute</code> , See {@odf.attribute table:end-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEndCellAddressAttribute() {
+		TableEndCellAddressAttribute attr = (TableEndCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndCellAddressAttribute</code> , See {@odf.attribute table:end-cell-address}
+	 *
+	 * @param tableEndCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableEndCellAddressAttribute(String tableEndCellAddressValue) {
+		TableEndCellAddressAttribute attr = new TableEndCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEndCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndXAttribute</code> , See {@odf.attribute table:end-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEndXAttribute() {
+		TableEndXAttribute attr = (TableEndXAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndXAttribute</code> , See {@odf.attribute table:end-x}
+	 *
+	 * @param tableEndXValue   The type is <code>String</code>
+	 */
+	public void setTableEndXAttribute(String tableEndXValue) {
+		TableEndXAttribute attr = new TableEndXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEndXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndYAttribute</code> , See {@odf.attribute table:end-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEndYAttribute() {
+		TableEndYAttribute attr = (TableEndYAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndYAttribute</code> , See {@odf.attribute table:end-y}
+	 *
+	 * @param tableEndYValue   The type is <code>String</code>
+	 */
+	public void setTableEndYAttribute(String tableEndYValue) {
+		TableEndYAttribute attr = new TableEndYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEndYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableBackgroundAttribute</code> , See {@odf.attribute table:table-background}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableTableBackgroundAttribute() {
+		TableTableBackgroundAttribute attr = (TableTableBackgroundAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table-background");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableBackgroundAttribute</code> , See {@odf.attribute table:table-background}
+	 *
+	 * @param tableTableBackgroundValue   The type is <code>Boolean</code>
+	 */
+	public void setTableTableBackgroundAttribute(Boolean tableTableBackgroundValue) {
+		TableTableBackgroundAttribute attr = new TableTableBackgroundAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableTableBackgroundValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnchorPageNumberAttribute</code> , See {@odf.attribute text:anchor-page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextAnchorPageNumberAttribute() {
+		TextAnchorPageNumberAttribute attr = (TextAnchorPageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "anchor-page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnchorPageNumberAttribute</code> , See {@odf.attribute text:anchor-page-number}
+	 *
+	 * @param textAnchorPageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTextAnchorPageNumberAttribute(Integer textAnchorPageNumberValue) {
+		TextAnchorPageNumberAttribute attr = new TextAnchorPageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textAnchorPageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnchorTypeAttribute</code> , See {@odf.attribute text:anchor-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnchorTypeAttribute() {
+		TextAnchorTypeAttribute attr = (TextAnchorTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "anchor-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnchorTypeAttribute</code> , See {@odf.attribute text:anchor-type}
+	 *
+	 * @param textAnchorTypeValue   The type is <code>String</code>
+	 */
+	public void setTextAnchorTypeAttribute(String textAnchorTypeValue) {
+		TextAnchorTypeAttribute attr = new TextAnchorTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnchorTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:cube}.
+	 *
+	 * @return the element {@odf.element dr3d:cube}
+	 */
+	public Dr3dCubeElement newDr3dCubeElement() {
+		Dr3dCubeElement dr3dCube = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dCubeElement.class);
+		this.appendChild(dr3dCube);
+		return dr3dCube;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:extrude}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element dr3d:extrude}
+	 */
+	 public Dr3dExtrudeElement newDr3dExtrudeElement(String svgDValue, int svgViewBoxValue) {
+		Dr3dExtrudeElement dr3dExtrude = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dExtrudeElement.class);
+		dr3dExtrude.setSvgDAttribute(svgDValue);
+		dr3dExtrude.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(dr3dExtrude);
+		return dr3dExtrude;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:light}.
+	 *
+	 * @param dr3dDirectionValue  the <code>String</code> value of <code>Dr3dDirectionAttribute</code>, see {@odf.attribute  dr3d:direction} at specification
+	 * @return the element {@odf.element dr3d:light}
+	 */
+	 public Dr3dLightElement newDr3dLightElement(String dr3dDirectionValue) {
+		Dr3dLightElement dr3dLight = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dLightElement.class);
+		dr3dLight.setDr3dDirectionAttribute(dr3dDirectionValue);
+		this.appendChild(dr3dLight);
+		return dr3dLight;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:rotate}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element dr3d:rotate}
+	 */
+	 public Dr3dRotateElement newDr3dRotateElement(String svgDValue, int svgViewBoxValue) {
+		Dr3dRotateElement dr3dRotate = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dRotateElement.class);
+		dr3dRotate.setSvgDAttribute(svgDValue);
+		dr3dRotate.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(dr3dRotate);
+		return dr3dRotate;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:sphere}.
+	 *
+	 * @return the element {@odf.element dr3d:sphere}
+	 */
+	public Dr3dSphereElement newDr3dSphereElement() {
+		Dr3dSphereElement dr3dSphere = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSphereElement.class);
+		this.appendChild(dr3dSphere);
+		return dr3dSphere;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dSphereElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dSphereElement.java
new file mode 100644
index 0000000..fdabf6e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/dr3d/Dr3dSphereElement.java
@@ -0,0 +1,348 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.dr3d;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dCenterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawZIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element dr3d:sphere}.
+ *
+ */
+public class Dr3dSphereElement extends OdfStyleableShapeElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DR3D, "sphere");
+
+	/**
+	 * Create the instance of <code>Dr3dSphereElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public Dr3dSphereElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element dr3d:sphere}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dCenterAttribute</code> , See {@odf.attribute dr3d:center}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dCenterAttribute() {
+		Dr3dCenterAttribute attr = (Dr3dCenterAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "center");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dCenterAttribute</code> , See {@odf.attribute dr3d:center}
+	 *
+	 * @param dr3dCenterValue   The type is <code>String</code>
+	 */
+	public void setDr3dCenterAttribute(String dr3dCenterValue) {
+		Dr3dCenterAttribute attr = new Dr3dCenterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dCenterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dSizeAttribute</code> , See {@odf.attribute dr3d:size}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dSizeAttribute() {
+		Dr3dSizeAttribute attr = (Dr3dSizeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "size");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dSizeAttribute</code> , See {@odf.attribute dr3d:size}
+	 *
+	 * @param dr3dSizeValue   The type is <code>String</code>
+	 */
+	public void setDr3dSizeAttribute(String dr3dSizeValue) {
+		Dr3dSizeAttribute attr = new Dr3dSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dSizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTransformAttribute() {
+		Dr3dTransformAttribute attr = (Dr3dTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTransformAttribute</code> , See {@odf.attribute dr3d:transform}
+	 *
+	 * @param dr3dTransformValue   The type is <code>String</code>
+	 */
+	public void setDr3dTransformAttribute(String dr3dTransformValue) {
+		Dr3dTransformAttribute attr = new Dr3dTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassNamesAttribute() {
+		DrawClassNamesAttribute attr = (DrawClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @param drawClassNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawClassNamesAttribute(String drawClassNamesValue) {
+		DrawClassNamesAttribute attr = new DrawClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawZIndexAttribute() {
+		DrawZIndexAttribute attr = (DrawZIndexAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "z-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @param drawZIndexValue   The type is <code>Integer</code>
+	 */
+	public void setDrawZIndexAttribute(Integer drawZIndexValue) {
+		DrawZIndexAttribute attr = new DrawZIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawZIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassNamesAttribute() {
+		PresentationClassNamesAttribute attr = (PresentationClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @param presentationClassNamesValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassNamesAttribute(String presentationClassNamesValue) {
+		PresentationClassNamesAttribute attr = new PresentationClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStyleNameAttribute() {
+		PresentationStyleNameAttribute attr = (PresentationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @param presentationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationStyleNameAttribute(String presentationStyleNameValue) {
+		PresentationStyleNameAttribute attr = new PresentationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAElement.java
new file mode 100644
index 0000000..5a57ebb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAElement.java
@@ -0,0 +1,556 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeServerMapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:a}.
+ *
+ */
+public class DrawAElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "a");
+
+	/**
+	 * Create the instance of <code>DrawAElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawAElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:a}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeServerMapAttribute</code> , See {@odf.attribute office:server-map}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeServerMapAttribute() {
+		OfficeServerMapAttribute attr = (OfficeServerMapAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "server-map");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(OfficeServerMapAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeServerMapAttribute</code> , See {@odf.attribute office:server-map}
+	 *
+	 * @param officeServerMapValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeServerMapAttribute(Boolean officeServerMapValue) {
+		OfficeServerMapAttribute attr = new OfficeServerMapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeServerMapValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameNameAttribute() {
+		OfficeTargetFrameNameAttribute attr = (OfficeTargetFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @param officeTargetFrameNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameNameAttribute(String officeTargetFrameNameValue) {
+		OfficeTargetFrameNameAttribute attr = new OfficeTargetFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTitleAttribute</code> , See {@odf.attribute office:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTitleAttribute() {
+		OfficeTitleAttribute attr = (OfficeTitleAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTitleAttribute</code> , See {@odf.attribute office:title}
+	 *
+	 * @param officeTitleValue   The type is <code>String</code>
+	 */
+	public void setOfficeTitleAttribute(String officeTitleValue) {
+		OfficeTitleAttribute attr = new OfficeTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAppletElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAppletElement.java
new file mode 100644
index 0000000..df7d814
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAppletElement.java
@@ -0,0 +1,307 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawArchiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCodeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMayScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawObjectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:applet}.
+ *
+ */
+public class DrawAppletElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "applet");
+
+	/**
+	 * Create the instance of <code>DrawAppletElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawAppletElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:applet}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawArchiveAttribute</code> , See {@odf.attribute draw:archive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawArchiveAttribute() {
+		DrawArchiveAttribute attr = (DrawArchiveAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "archive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawArchiveAttribute</code> , See {@odf.attribute draw:archive}
+	 *
+	 * @param drawArchiveValue   The type is <code>String</code>
+	 */
+	public void setDrawArchiveAttribute(String drawArchiveValue) {
+		DrawArchiveAttribute attr = new DrawArchiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawArchiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCodeAttribute</code> , See {@odf.attribute draw:code}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCodeAttribute() {
+		DrawCodeAttribute attr = (DrawCodeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "code");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCodeAttribute</code> , See {@odf.attribute draw:code}
+	 *
+	 * @param drawCodeValue   The type is <code>String</code>
+	 */
+	public void setDrawCodeAttribute(String drawCodeValue) {
+		DrawCodeAttribute attr = new DrawCodeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCodeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMayScriptAttribute</code> , See {@odf.attribute draw:may-script}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawMayScriptAttribute() {
+		DrawMayScriptAttribute attr = (DrawMayScriptAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "may-script");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawMayScriptAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMayScriptAttribute</code> , See {@odf.attribute draw:may-script}
+	 *
+	 * @param drawMayScriptValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawMayScriptAttribute(Boolean drawMayScriptValue) {
+		DrawMayScriptAttribute attr = new DrawMayScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawMayScriptValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawObjectAttribute</code> , See {@odf.attribute draw:object}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawObjectAttribute() {
+		DrawObjectAttribute attr = (DrawObjectAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "object");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawObjectAttribute</code> , See {@odf.attribute draw:object}
+	 *
+	 * @param drawObjectValue   The type is <code>String</code>
+	 */
+	public void setDrawObjectAttribute(String drawObjectValue) {
+		DrawObjectAttribute attr = new DrawObjectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawObjectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:param}.
+	 *
+	 * @return the element {@odf.element draw:param}
+	 */
+	public DrawParamElement newDrawParamElement() {
+		DrawParamElement drawParam = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawParamElement.class);
+		this.appendChild(drawParam);
+		return drawParam;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaCircleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaCircleElement.java
new file mode 100644
index 0000000..fcbb903
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaCircleElement.java
@@ -0,0 +1,338 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNohrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:area-circle}.
+ *
+ */
+public class DrawAreaCircleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "area-circle");
+
+	/**
+	 * Create the instance of <code>DrawAreaCircleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawAreaCircleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:area-circle}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNohrefAttribute</code> , See {@odf.attribute draw:nohref}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNohrefAttribute() {
+		DrawNohrefAttribute attr = (DrawNohrefAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "nohref");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNohrefAttribute</code> , See {@odf.attribute draw:nohref}
+	 *
+	 * @param drawNohrefValue   The type is <code>String</code>
+	 */
+	public void setDrawNohrefAttribute(String drawNohrefValue) {
+		DrawNohrefAttribute attr = new DrawNohrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNohrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameNameAttribute() {
+		OfficeTargetFrameNameAttribute attr = (OfficeTargetFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @param officeTargetFrameNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameNameAttribute(String officeTargetFrameNameValue) {
+		OfficeTargetFrameNameAttribute attr = new OfficeTargetFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCxAttribute() {
+		SvgCxAttribute attr = (SvgCxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @param svgCxValue   The type is <code>String</code>
+	 */
+	public void setSvgCxAttribute(String svgCxValue) {
+		SvgCxAttribute attr = new SvgCxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCyAttribute() {
+		SvgCyAttribute attr = (SvgCyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @param svgCyValue   The type is <code>String</code>
+	 */
+	public void setSvgCyAttribute(String svgCyValue) {
+		SvgCyAttribute attr = new SvgCyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRAttribute</code> , See {@odf.attribute svg:r}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRAttribute() {
+		SvgRAttribute attr = (SvgRAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "r");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRAttribute</code> , See {@odf.attribute svg:r}
+	 *
+	 * @param svgRValue   The type is <code>String</code>
+	 */
+	public void setSvgRAttribute(String svgRValue) {
+		SvgRAttribute attr = new SvgRAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaPolygonElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaPolygonElement.java
new file mode 100644
index 0000000..ccf8df4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaPolygonElement.java
@@ -0,0 +1,419 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNohrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPointsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:area-polygon}.
+ *
+ */
+public class DrawAreaPolygonElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "area-polygon");
+
+	/**
+	 * Create the instance of <code>DrawAreaPolygonElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawAreaPolygonElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:area-polygon}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNohrefAttribute</code> , See {@odf.attribute draw:nohref}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNohrefAttribute() {
+		DrawNohrefAttribute attr = (DrawNohrefAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "nohref");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNohrefAttribute</code> , See {@odf.attribute draw:nohref}
+	 *
+	 * @param drawNohrefValue   The type is <code>String</code>
+	 */
+	public void setDrawNohrefAttribute(String drawNohrefValue) {
+		DrawNohrefAttribute attr = new DrawNohrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNohrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawPointsAttribute() {
+		DrawPointsAttribute attr = (DrawPointsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "points");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * @param drawPointsValue   The type is <code>String</code>
+	 */
+	public void setDrawPointsAttribute(String drawPointsValue) {
+		DrawPointsAttribute attr = new DrawPointsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawPointsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameNameAttribute() {
+		OfficeTargetFrameNameAttribute attr = (OfficeTargetFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @param officeTargetFrameNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameNameAttribute(String officeTargetFrameNameValue) {
+		OfficeTargetFrameNameAttribute attr = new OfficeTargetFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaRectangleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaRectangleElement.java
new file mode 100644
index 0000000..608f1e9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawAreaRectangleElement.java
@@ -0,0 +1,365 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNohrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:area-rectangle}.
+ *
+ */
+public class DrawAreaRectangleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "area-rectangle");
+
+	/**
+	 * Create the instance of <code>DrawAreaRectangleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawAreaRectangleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:area-rectangle}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNohrefAttribute</code> , See {@odf.attribute draw:nohref}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNohrefAttribute() {
+		DrawNohrefAttribute attr = (DrawNohrefAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "nohref");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNohrefAttribute</code> , See {@odf.attribute draw:nohref}
+	 *
+	 * @param drawNohrefValue   The type is <code>String</code>
+	 */
+	public void setDrawNohrefAttribute(String drawNohrefValue) {
+		DrawNohrefAttribute attr = new DrawNohrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNohrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameNameAttribute() {
+		OfficeTargetFrameNameAttribute attr = (OfficeTargetFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @param officeTargetFrameNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameNameAttribute(String officeTargetFrameNameValue) {
+		OfficeTargetFrameNameAttribute attr = new OfficeTargetFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCaptionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCaptionElement.java
new file mode 100644
index 0000000..66338ca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCaptionElement.java
@@ -0,0 +1,427 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionPointXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionPointYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCornerRadiusAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:caption}.
+ *
+ */
+public class DrawCaptionElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "caption");
+
+	/**
+	 * Create the instance of <code>DrawCaptionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawCaptionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:caption}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionPointXAttribute</code> , See {@odf.attribute draw:caption-point-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionPointXAttribute() {
+		DrawCaptionPointXAttribute attr = (DrawCaptionPointXAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-point-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionPointXAttribute</code> , See {@odf.attribute draw:caption-point-x}
+	 *
+	 * @param drawCaptionPointXValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionPointXAttribute(String drawCaptionPointXValue) {
+		DrawCaptionPointXAttribute attr = new DrawCaptionPointXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionPointXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionPointYAttribute</code> , See {@odf.attribute draw:caption-point-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionPointYAttribute() {
+		DrawCaptionPointYAttribute attr = (DrawCaptionPointYAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-point-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionPointYAttribute</code> , See {@odf.attribute draw:caption-point-y}
+	 *
+	 * @param drawCaptionPointYValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionPointYAttribute(String drawCaptionPointYValue) {
+		DrawCaptionPointYAttribute attr = new DrawCaptionPointYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionPointYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCornerRadiusAttribute() {
+		DrawCornerRadiusAttribute attr = (DrawCornerRadiusAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "corner-radius");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @param drawCornerRadiusValue   The type is <code>String</code>
+	 */
+	public void setDrawCornerRadiusAttribute(String drawCornerRadiusValue) {
+		DrawCornerRadiusAttribute attr = new DrawCornerRadiusAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCornerRadiusValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCircleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCircleElement.java
new file mode 100644
index 0000000..2000b0f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCircleElement.java
@@ -0,0 +1,502 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawKindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:circle}.
+ *
+ */
+public class DrawCircleElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "circle");
+
+	/**
+	 * Create the instance of <code>DrawCircleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawCircleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:circle}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndAngleAttribute</code> , See {@odf.attribute draw:end-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndAngleAttribute() {
+		DrawEndAngleAttribute attr = (DrawEndAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndAngleAttribute</code> , See {@odf.attribute draw:end-angle}
+	 *
+	 * @param drawEndAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawEndAngleAttribute(String drawEndAngleValue) {
+		DrawEndAngleAttribute attr = new DrawEndAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawKindAttribute</code> , See {@odf.attribute draw:kind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawKindAttribute() {
+		DrawKindAttribute attr = (DrawKindAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "kind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawKindAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawKindAttribute</code> , See {@odf.attribute draw:kind}
+	 *
+	 * @param drawKindValue   The type is <code>String</code>
+	 */
+	public void setDrawKindAttribute(String drawKindValue) {
+		DrawKindAttribute attr = new DrawKindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawKindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartAngleAttribute</code> , See {@odf.attribute draw:start-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartAngleAttribute() {
+		DrawStartAngleAttribute attr = (DrawStartAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartAngleAttribute</code> , See {@odf.attribute draw:start-angle}
+	 *
+	 * @param drawStartAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawStartAngleAttribute(String drawStartAngleValue) {
+		DrawStartAngleAttribute attr = new DrawStartAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCxAttribute() {
+		SvgCxAttribute attr = (SvgCxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @param svgCxValue   The type is <code>String</code>
+	 */
+	public void setSvgCxAttribute(String svgCxValue) {
+		SvgCxAttribute attr = new SvgCxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCyAttribute() {
+		SvgCyAttribute attr = (SvgCyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @param svgCyValue   The type is <code>String</code>
+	 */
+	public void setSvgCyAttribute(String svgCyValue) {
+		SvgCyAttribute attr = new SvgCyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRAttribute</code> , See {@odf.attribute svg:r}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRAttribute() {
+		SvgRAttribute attr = (SvgRAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "r");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRAttribute</code> , See {@odf.attribute svg:r}
+	 *
+	 * @param svgRValue   The type is <code>String</code>
+	 */
+	public void setSvgRAttribute(String svgRValue) {
+		SvgRAttribute attr = new SvgRAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawConnectorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawConnectorElement.java
new file mode 100644
index 0000000..418d75d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawConnectorElement.java
@@ -0,0 +1,554 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndGluePointAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndShapeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLineSkewAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartGluePointAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartShapeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY2Attribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:connector}.
+ *
+ */
+public class DrawConnectorElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "connector");
+
+	/**
+	 * Create the instance of <code>DrawConnectorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawConnectorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:connector}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndGluePointAttribute</code> , See {@odf.attribute draw:end-glue-point}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawEndGluePointAttribute() {
+		DrawEndGluePointAttribute attr = (DrawEndGluePointAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-glue-point");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndGluePointAttribute</code> , See {@odf.attribute draw:end-glue-point}
+	 *
+	 * @param drawEndGluePointValue   The type is <code>Integer</code>
+	 */
+	public void setDrawEndGluePointAttribute(Integer drawEndGluePointValue) {
+		DrawEndGluePointAttribute attr = new DrawEndGluePointAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawEndGluePointValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndShapeAttribute</code> , See {@odf.attribute draw:end-shape}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndShapeAttribute() {
+		DrawEndShapeAttribute attr = (DrawEndShapeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-shape");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndShapeAttribute</code> , See {@odf.attribute draw:end-shape}
+	 *
+	 * @param drawEndShapeValue   The type is <code>String</code>
+	 */
+	public void setDrawEndShapeAttribute(String drawEndShapeValue) {
+		DrawEndShapeAttribute attr = new DrawEndShapeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndShapeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLineSkewAttribute</code> , See {@odf.attribute draw:line-skew}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLineSkewAttribute() {
+		DrawLineSkewAttribute attr = (DrawLineSkewAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "line-skew");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLineSkewAttribute</code> , See {@odf.attribute draw:line-skew}
+	 *
+	 * @param drawLineSkewValue   The type is <code>String</code>
+	 */
+	public void setDrawLineSkewAttribute(String drawLineSkewValue) {
+		DrawLineSkewAttribute attr = new DrawLineSkewAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLineSkewValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartGluePointAttribute</code> , See {@odf.attribute draw:start-glue-point}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawStartGluePointAttribute() {
+		DrawStartGluePointAttribute attr = (DrawStartGluePointAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-glue-point");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartGluePointAttribute</code> , See {@odf.attribute draw:start-glue-point}
+	 *
+	 * @param drawStartGluePointValue   The type is <code>Integer</code>
+	 */
+	public void setDrawStartGluePointAttribute(Integer drawStartGluePointValue) {
+		DrawStartGluePointAttribute attr = new DrawStartGluePointAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawStartGluePointValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartShapeAttribute</code> , See {@odf.attribute draw:start-shape}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartShapeAttribute() {
+		DrawStartShapeAttribute attr = (DrawStartShapeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-shape");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartShapeAttribute</code> , See {@odf.attribute draw:start-shape}
+	 *
+	 * @param drawStartShapeValue   The type is <code>String</code>
+	 */
+	public void setDrawStartShapeAttribute(String drawStartShapeValue) {
+		DrawStartShapeAttribute attr = new DrawStartShapeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartShapeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTypeAttribute</code> , See {@odf.attribute draw:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTypeAttribute() {
+		DrawTypeAttribute attr = (DrawTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawTypeAttribute.DEFAULT_VALUE_STANDARD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTypeAttribute</code> , See {@odf.attribute draw:type}
+	 *
+	 * @param drawTypeValue   The type is <code>String</code>
+	 */
+	public void setDrawTypeAttribute(String drawTypeValue) {
+		DrawTypeAttribute attr = new DrawTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgDAttribute() {
+		SvgDAttribute attr = (SvgDAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "d");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @param svgDValue   The type is <code>String</code>
+	 */
+	public void setSvgDAttribute(String svgDValue) {
+		SvgDAttribute attr = new SvgDAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgDValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX1Attribute() {
+		SvgX1Attribute attr = (SvgX1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * @param svgX1Value   The type is <code>String</code>
+	 */
+	public void setSvgX1Attribute(String svgX1Value) {
+		SvgX1Attribute attr = new SvgX1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX2Attribute() {
+		SvgX2Attribute attr = (SvgX2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * @param svgX2Value   The type is <code>String</code>
+	 */
+	public void setSvgX2Attribute(String svgX2Value) {
+		SvgX2Attribute attr = new SvgX2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY1Attribute() {
+		SvgY1Attribute attr = (SvgY1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * @param svgY1Value   The type is <code>String</code>
+	 */
+	public void setSvgY1Attribute(String svgY1Value) {
+		SvgY1Attribute attr = new SvgY1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY2Attribute() {
+		SvgY2Attribute attr = (SvgY2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * @param svgY2Value   The type is <code>String</code>
+	 */
+	public void setSvgY2Attribute(String svgY2Value) {
+		SvgY2Attribute attr = new SvgY2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY2Value);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawContourPathElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawContourPathElement.java
new file mode 100644
index 0000000..50cdcf1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawContourPathElement.java
@@ -0,0 +1,202 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawRecreateOnEditAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:contour-path}.
+ *
+ */
+public class DrawContourPathElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "contour-path");
+
+	/**
+	 * Create the instance of <code>DrawContourPathElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawContourPathElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:contour-path}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawRecreateOnEditAttribute</code> , See {@odf.attribute draw:recreate-on-edit}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawRecreateOnEditAttribute() {
+		DrawRecreateOnEditAttribute attr = (DrawRecreateOnEditAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "recreate-on-edit");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawRecreateOnEditAttribute</code> , See {@odf.attribute draw:recreate-on-edit}
+	 *
+	 * @param drawRecreateOnEditValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawRecreateOnEditAttribute(Boolean drawRecreateOnEditValue) {
+		DrawRecreateOnEditAttribute attr = new DrawRecreateOnEditAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawRecreateOnEditValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgDAttribute() {
+		SvgDAttribute attr = (SvgDAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "d");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @param svgDValue   The type is <code>String</code>
+	 */
+	public void setSvgDAttribute(String svgDValue) {
+		SvgDAttribute attr = new SvgDAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgDValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawContourPolygonElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawContourPolygonElement.java
new file mode 100644
index 0000000..68fd650
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawContourPolygonElement.java
@@ -0,0 +1,202 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPointsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawRecreateOnEditAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:contour-polygon}.
+ *
+ */
+public class DrawContourPolygonElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "contour-polygon");
+
+	/**
+	 * Create the instance of <code>DrawContourPolygonElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawContourPolygonElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:contour-polygon}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawPointsAttribute() {
+		DrawPointsAttribute attr = (DrawPointsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "points");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * @param drawPointsValue   The type is <code>String</code>
+	 */
+	public void setDrawPointsAttribute(String drawPointsValue) {
+		DrawPointsAttribute attr = new DrawPointsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawPointsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawRecreateOnEditAttribute</code> , See {@odf.attribute draw:recreate-on-edit}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawRecreateOnEditAttribute() {
+		DrawRecreateOnEditAttribute attr = (DrawRecreateOnEditAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "recreate-on-edit");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawRecreateOnEditAttribute</code> , See {@odf.attribute draw:recreate-on-edit}
+	 *
+	 * @param drawRecreateOnEditValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawRecreateOnEditAttribute(Boolean drawRecreateOnEditValue) {
+		DrawRecreateOnEditAttribute attr = new DrawRecreateOnEditAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawRecreateOnEditValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawControlElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawControlElement.java
new file mode 100644
index 0000000..07b396f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawControlElement.java
@@ -0,0 +1,343 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawControlAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:control}.
+ *
+ */
+public class DrawControlElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "control");
+
+	/**
+	 * Create the instance of <code>DrawControlElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawControlElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:control}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawControlAttribute</code> , See {@odf.attribute draw:control}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawControlAttribute() {
+		DrawControlAttribute attr = (DrawControlAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "control");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawControlAttribute</code> , See {@odf.attribute draw:control}
+	 *
+	 * @param drawControlValue   The type is <code>String</code>
+	 */
+	public void setDrawControlAttribute(String drawControlValue) {
+		DrawControlAttribute attr = new DrawControlAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawControlValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCustomShapeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCustomShapeElement.java
new file mode 100644
index 0000000..1818fce
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawCustomShapeElement.java
@@ -0,0 +1,413 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEngineAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:custom-shape}.
+ *
+ */
+public class DrawCustomShapeElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "custom-shape");
+
+	/**
+	 * Create the instance of <code>DrawCustomShapeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawCustomShapeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:custom-shape}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDataAttribute</code> , See {@odf.attribute draw:data}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDataAttribute() {
+		DrawDataAttribute attr = (DrawDataAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "data");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDataAttribute</code> , See {@odf.attribute draw:data}
+	 *
+	 * @param drawDataValue   The type is <code>String</code>
+	 */
+	public void setDrawDataAttribute(String drawDataValue) {
+		DrawDataAttribute attr = new DrawDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDataValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEngineAttribute</code> , See {@odf.attribute draw:engine}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEngineAttribute() {
+		DrawEngineAttribute attr = (DrawEngineAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "engine");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEngineAttribute</code> , See {@odf.attribute draw:engine}
+	 *
+	 * @param drawEngineValue   The type is <code>String</code>
+	 */
+	public void setDrawEngineAttribute(String drawEngineValue) {
+		DrawEngineAttribute attr = new DrawEngineAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEngineValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:enhanced-geometry}.
+	 *
+	 * @return the element {@odf.element draw:enhanced-geometry}
+	 */
+	public DrawEnhancedGeometryElement newDrawEnhancedGeometryElement() {
+		DrawEnhancedGeometryElement drawEnhancedGeometry = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEnhancedGeometryElement.class);
+		this.appendChild(drawEnhancedGeometry);
+		return drawEnhancedGeometry;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEllipseElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEllipseElement.java
new file mode 100644
index 0000000..9e126e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEllipseElement.java
@@ -0,0 +1,527 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawKindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:ellipse}.
+ *
+ */
+public class DrawEllipseElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "ellipse");
+
+	/**
+	 * Create the instance of <code>DrawEllipseElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawEllipseElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:ellipse}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndAngleAttribute</code> , See {@odf.attribute draw:end-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndAngleAttribute() {
+		DrawEndAngleAttribute attr = (DrawEndAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndAngleAttribute</code> , See {@odf.attribute draw:end-angle}
+	 *
+	 * @param drawEndAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawEndAngleAttribute(String drawEndAngleValue) {
+		DrawEndAngleAttribute attr = new DrawEndAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawKindAttribute</code> , See {@odf.attribute draw:kind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawKindAttribute() {
+		DrawKindAttribute attr = (DrawKindAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "kind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawKindAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawKindAttribute</code> , See {@odf.attribute draw:kind}
+	 *
+	 * @param drawKindValue   The type is <code>String</code>
+	 */
+	public void setDrawKindAttribute(String drawKindValue) {
+		DrawKindAttribute attr = new DrawKindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawKindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartAngleAttribute</code> , See {@odf.attribute draw:start-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartAngleAttribute() {
+		DrawStartAngleAttribute attr = (DrawStartAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartAngleAttribute</code> , See {@odf.attribute draw:start-angle}
+	 *
+	 * @param drawStartAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawStartAngleAttribute(String drawStartAngleValue) {
+		DrawStartAngleAttribute attr = new DrawStartAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCxAttribute() {
+		SvgCxAttribute attr = (SvgCxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @param svgCxValue   The type is <code>String</code>
+	 */
+	public void setSvgCxAttribute(String svgCxValue) {
+		SvgCxAttribute attr = new SvgCxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCyAttribute() {
+		SvgCyAttribute attr = (SvgCyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @param svgCyValue   The type is <code>String</code>
+	 */
+	public void setSvgCyAttribute(String svgCyValue) {
+		SvgCyAttribute attr = new SvgCyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRxAttribute</code> , See {@odf.attribute svg:rx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRxAttribute() {
+		SvgRxAttribute attr = (SvgRxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "rx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRxAttribute</code> , See {@odf.attribute svg:rx}
+	 *
+	 * @param svgRxValue   The type is <code>String</code>
+	 */
+	public void setSvgRxAttribute(String svgRxValue) {
+		SvgRxAttribute attr = new SvgRxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRyAttribute</code> , See {@odf.attribute svg:ry}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRyAttribute() {
+		SvgRyAttribute attr = (SvgRyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "ry");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRyAttribute</code> , See {@odf.attribute svg:ry}
+	 *
+	 * @param svgRyValue   The type is <code>String</code>
+	 */
+	public void setSvgRyAttribute(String svgRyValue) {
+		SvgRyAttribute attr = new SvgRyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEnhancedGeometryElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEnhancedGeometryElement.java
new file mode 100644
index 0000000..23535a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEnhancedGeometryElement.java
@@ -0,0 +1,1170 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dProjectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadeModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawConcentricGradientFillAllowedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEnhancedPathAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionAllowedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionBrightnessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionDepthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionDiffusionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionFirstLightDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionFirstLightHarshAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionFirstLightLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionLightFaceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionMetalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionNumberOfLineSegmentsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionOriginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionRotationAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionRotationCenterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionSecondLightDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionSecondLightHarshAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionSecondLightLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionShininessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionSkewAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionSpecularityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawExtrusionViewpointAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGluePointLeavingDirectionsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGluePointTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGluePointsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMirrorHorizontalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMirrorVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawModifiersAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPathStretchpointXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPathStretchpointYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextAreasAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextPathAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextPathAllowedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextPathModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextPathSameLetterHeightsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextPathScaleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextRotateAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:enhanced-geometry}.
+ *
+ */
+public class DrawEnhancedGeometryElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "enhanced-geometry");
+
+	/**
+	 * Create the instance of <code>DrawEnhancedGeometryElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawEnhancedGeometryElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:enhanced-geometry}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dProjectionAttribute</code> , See {@odf.attribute dr3d:projection}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dProjectionAttribute() {
+		Dr3dProjectionAttribute attr = (Dr3dProjectionAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "projection");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return Dr3dProjectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dProjectionAttribute</code> , See {@odf.attribute dr3d:projection}
+	 *
+	 * @param dr3dProjectionValue   The type is <code>String</code>
+	 */
+	public void setDr3dProjectionAttribute(String dr3dProjectionValue) {
+		Dr3dProjectionAttribute attr = new Dr3dProjectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dProjectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShadeModeAttribute</code> , See {@odf.attribute dr3d:shade-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShadeModeAttribute() {
+		Dr3dShadeModeAttribute attr = (Dr3dShadeModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shade-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return Dr3dShadeModeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShadeModeAttribute</code> , See {@odf.attribute dr3d:shade-mode}
+	 *
+	 * @param dr3dShadeModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dShadeModeAttribute(String dr3dShadeModeValue) {
+		Dr3dShadeModeAttribute attr = new Dr3dShadeModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShadeModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawConcentricGradientFillAllowedAttribute</code> , See {@odf.attribute draw:concentric-gradient-fill-allowed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawConcentricGradientFillAllowedAttribute() {
+		DrawConcentricGradientFillAllowedAttribute attr = (DrawConcentricGradientFillAllowedAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "concentric-gradient-fill-allowed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawConcentricGradientFillAllowedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawConcentricGradientFillAllowedAttribute</code> , See {@odf.attribute draw:concentric-gradient-fill-allowed}
+	 *
+	 * @param drawConcentricGradientFillAllowedValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawConcentricGradientFillAllowedAttribute(Boolean drawConcentricGradientFillAllowedValue) {
+		DrawConcentricGradientFillAllowedAttribute attr = new DrawConcentricGradientFillAllowedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawConcentricGradientFillAllowedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEnhancedPathAttribute</code> , See {@odf.attribute draw:enhanced-path}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEnhancedPathAttribute() {
+		DrawEnhancedPathAttribute attr = (DrawEnhancedPathAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "enhanced-path");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEnhancedPathAttribute</code> , See {@odf.attribute draw:enhanced-path}
+	 *
+	 * @param drawEnhancedPathValue   The type is <code>String</code>
+	 */
+	public void setDrawEnhancedPathAttribute(String drawEnhancedPathValue) {
+		DrawEnhancedPathAttribute attr = new DrawEnhancedPathAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEnhancedPathValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionAttribute</code> , See {@odf.attribute draw:extrusion}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionAttribute() {
+		DrawExtrusionAttribute attr = (DrawExtrusionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionAttribute</code> , See {@odf.attribute draw:extrusion}
+	 *
+	 * @param drawExtrusionValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionAttribute(Boolean drawExtrusionValue) {
+		DrawExtrusionAttribute attr = new DrawExtrusionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionAllowedAttribute</code> , See {@odf.attribute draw:extrusion-allowed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionAllowedAttribute() {
+		DrawExtrusionAllowedAttribute attr = (DrawExtrusionAllowedAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-allowed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionAllowedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionAllowedAttribute</code> , See {@odf.attribute draw:extrusion-allowed}
+	 *
+	 * @param drawExtrusionAllowedValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionAllowedAttribute(Boolean drawExtrusionAllowedValue) {
+		DrawExtrusionAllowedAttribute attr = new DrawExtrusionAllowedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionAllowedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionBrightnessAttribute</code> , See {@odf.attribute draw:extrusion-brightness}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionBrightnessAttribute() {
+		DrawExtrusionBrightnessAttribute attr = (DrawExtrusionBrightnessAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-brightness");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionBrightnessAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionBrightnessAttribute</code> , See {@odf.attribute draw:extrusion-brightness}
+	 *
+	 * @param drawExtrusionBrightnessValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionBrightnessAttribute(String drawExtrusionBrightnessValue) {
+		DrawExtrusionBrightnessAttribute attr = new DrawExtrusionBrightnessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionBrightnessValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionColorAttribute</code> , See {@odf.attribute draw:extrusion-color}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionColorAttribute() {
+		DrawExtrusionColorAttribute attr = (DrawExtrusionColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-color");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionColorAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionColorAttribute</code> , See {@odf.attribute draw:extrusion-color}
+	 *
+	 * @param drawExtrusionColorValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionColorAttribute(Boolean drawExtrusionColorValue) {
+		DrawExtrusionColorAttribute attr = new DrawExtrusionColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionColorValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionDepthAttribute</code> , See {@odf.attribute draw:extrusion-depth}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionDepthAttribute() {
+		DrawExtrusionDepthAttribute attr = (DrawExtrusionDepthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-depth");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionDepthAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionDepthAttribute</code> , See {@odf.attribute draw:extrusion-depth}
+	 *
+	 * @param drawExtrusionDepthValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionDepthAttribute(String drawExtrusionDepthValue) {
+		DrawExtrusionDepthAttribute attr = new DrawExtrusionDepthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionDepthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionDiffusionAttribute</code> , See {@odf.attribute draw:extrusion-diffusion}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionDiffusionAttribute() {
+		DrawExtrusionDiffusionAttribute attr = (DrawExtrusionDiffusionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-diffusion");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionDiffusionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionDiffusionAttribute</code> , See {@odf.attribute draw:extrusion-diffusion}
+	 *
+	 * @param drawExtrusionDiffusionValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionDiffusionAttribute(String drawExtrusionDiffusionValue) {
+		DrawExtrusionDiffusionAttribute attr = new DrawExtrusionDiffusionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionDiffusionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionFirstLightDirectionAttribute</code> , See {@odf.attribute draw:extrusion-first-light-direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionFirstLightDirectionAttribute() {
+		DrawExtrusionFirstLightDirectionAttribute attr = (DrawExtrusionFirstLightDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-first-light-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionFirstLightDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionFirstLightDirectionAttribute</code> , See {@odf.attribute draw:extrusion-first-light-direction}
+	 *
+	 * @param drawExtrusionFirstLightDirectionValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionFirstLightDirectionAttribute(String drawExtrusionFirstLightDirectionValue) {
+		DrawExtrusionFirstLightDirectionAttribute attr = new DrawExtrusionFirstLightDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionFirstLightDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionFirstLightHarshAttribute</code> , See {@odf.attribute draw:extrusion-first-light-harsh}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionFirstLightHarshAttribute() {
+		DrawExtrusionFirstLightHarshAttribute attr = (DrawExtrusionFirstLightHarshAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-first-light-harsh");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionFirstLightHarshAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionFirstLightHarshAttribute</code> , See {@odf.attribute draw:extrusion-first-light-harsh}
+	 *
+	 * @param drawExtrusionFirstLightHarshValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionFirstLightHarshAttribute(Boolean drawExtrusionFirstLightHarshValue) {
+		DrawExtrusionFirstLightHarshAttribute attr = new DrawExtrusionFirstLightHarshAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionFirstLightHarshValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionFirstLightLevelAttribute</code> , See {@odf.attribute draw:extrusion-first-light-level}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionFirstLightLevelAttribute() {
+		DrawExtrusionFirstLightLevelAttribute attr = (DrawExtrusionFirstLightLevelAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-first-light-level");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionFirstLightLevelAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionFirstLightLevelAttribute</code> , See {@odf.attribute draw:extrusion-first-light-level}
+	 *
+	 * @param drawExtrusionFirstLightLevelValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionFirstLightLevelAttribute(String drawExtrusionFirstLightLevelValue) {
+		DrawExtrusionFirstLightLevelAttribute attr = new DrawExtrusionFirstLightLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionFirstLightLevelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionLightFaceAttribute</code> , See {@odf.attribute draw:extrusion-light-face}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionLightFaceAttribute() {
+		DrawExtrusionLightFaceAttribute attr = (DrawExtrusionLightFaceAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-light-face");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionLightFaceAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionLightFaceAttribute</code> , See {@odf.attribute draw:extrusion-light-face}
+	 *
+	 * @param drawExtrusionLightFaceValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionLightFaceAttribute(Boolean drawExtrusionLightFaceValue) {
+		DrawExtrusionLightFaceAttribute attr = new DrawExtrusionLightFaceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionLightFaceValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionMetalAttribute</code> , See {@odf.attribute draw:extrusion-metal}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionMetalAttribute() {
+		DrawExtrusionMetalAttribute attr = (DrawExtrusionMetalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-metal");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionMetalAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionMetalAttribute</code> , See {@odf.attribute draw:extrusion-metal}
+	 *
+	 * @param drawExtrusionMetalValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionMetalAttribute(Boolean drawExtrusionMetalValue) {
+		DrawExtrusionMetalAttribute attr = new DrawExtrusionMetalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionMetalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionNumberOfLineSegmentsAttribute</code> , See {@odf.attribute draw:extrusion-number-of-line-segments}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawExtrusionNumberOfLineSegmentsAttribute() {
+		DrawExtrusionNumberOfLineSegmentsAttribute attr = (DrawExtrusionNumberOfLineSegmentsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-number-of-line-segments");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(DrawExtrusionNumberOfLineSegmentsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionNumberOfLineSegmentsAttribute</code> , See {@odf.attribute draw:extrusion-number-of-line-segments}
+	 *
+	 * @param drawExtrusionNumberOfLineSegmentsValue   The type is <code>Integer</code>
+	 */
+	public void setDrawExtrusionNumberOfLineSegmentsAttribute(Integer drawExtrusionNumberOfLineSegmentsValue) {
+		DrawExtrusionNumberOfLineSegmentsAttribute attr = new DrawExtrusionNumberOfLineSegmentsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawExtrusionNumberOfLineSegmentsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionOriginAttribute</code> , See {@odf.attribute draw:extrusion-origin}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getDrawExtrusionOriginAttribute() {
+		DrawExtrusionOriginAttribute attr = (DrawExtrusionOriginAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-origin");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return Double.valueOf(DrawExtrusionOriginAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionOriginAttribute</code> , See {@odf.attribute draw:extrusion-origin}
+	 *
+	 * @param drawExtrusionOriginValue   The type is <code>Double</code>
+	 */
+	public void setDrawExtrusionOriginAttribute(Double drawExtrusionOriginValue) {
+		DrawExtrusionOriginAttribute attr = new DrawExtrusionOriginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(drawExtrusionOriginValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionRotationAngleAttribute</code> , See {@odf.attribute draw:extrusion-rotation-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionRotationAngleAttribute() {
+		DrawExtrusionRotationAngleAttribute attr = (DrawExtrusionRotationAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-rotation-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionRotationAngleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionRotationAngleAttribute</code> , See {@odf.attribute draw:extrusion-rotation-angle}
+	 *
+	 * @param drawExtrusionRotationAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionRotationAngleAttribute(String drawExtrusionRotationAngleValue) {
+		DrawExtrusionRotationAngleAttribute attr = new DrawExtrusionRotationAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionRotationAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionRotationCenterAttribute</code> , See {@odf.attribute draw:extrusion-rotation-center}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionRotationCenterAttribute() {
+		DrawExtrusionRotationCenterAttribute attr = (DrawExtrusionRotationCenterAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-rotation-center");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionRotationCenterAttribute</code> , See {@odf.attribute draw:extrusion-rotation-center}
+	 *
+	 * @param drawExtrusionRotationCenterValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionRotationCenterAttribute(String drawExtrusionRotationCenterValue) {
+		DrawExtrusionRotationCenterAttribute attr = new DrawExtrusionRotationCenterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionRotationCenterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionSecondLightDirectionAttribute</code> , See {@odf.attribute draw:extrusion-second-light-direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionSecondLightDirectionAttribute() {
+		DrawExtrusionSecondLightDirectionAttribute attr = (DrawExtrusionSecondLightDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-second-light-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionSecondLightDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionSecondLightDirectionAttribute</code> , See {@odf.attribute draw:extrusion-second-light-direction}
+	 *
+	 * @param drawExtrusionSecondLightDirectionValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionSecondLightDirectionAttribute(String drawExtrusionSecondLightDirectionValue) {
+		DrawExtrusionSecondLightDirectionAttribute attr = new DrawExtrusionSecondLightDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionSecondLightDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionSecondLightHarshAttribute</code> , See {@odf.attribute draw:extrusion-second-light-harsh}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawExtrusionSecondLightHarshAttribute() {
+		DrawExtrusionSecondLightHarshAttribute attr = (DrawExtrusionSecondLightHarshAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-second-light-harsh");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawExtrusionSecondLightHarshAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionSecondLightHarshAttribute</code> , See {@odf.attribute draw:extrusion-second-light-harsh}
+	 *
+	 * @param drawExtrusionSecondLightHarshValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawExtrusionSecondLightHarshAttribute(Boolean drawExtrusionSecondLightHarshValue) {
+		DrawExtrusionSecondLightHarshAttribute attr = new DrawExtrusionSecondLightHarshAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawExtrusionSecondLightHarshValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionSecondLightLevelAttribute</code> , See {@odf.attribute draw:extrusion-second-light-level}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionSecondLightLevelAttribute() {
+		DrawExtrusionSecondLightLevelAttribute attr = (DrawExtrusionSecondLightLevelAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-second-light-level");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionSecondLightLevelAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionSecondLightLevelAttribute</code> , See {@odf.attribute draw:extrusion-second-light-level}
+	 *
+	 * @param drawExtrusionSecondLightLevelValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionSecondLightLevelAttribute(String drawExtrusionSecondLightLevelValue) {
+		DrawExtrusionSecondLightLevelAttribute attr = new DrawExtrusionSecondLightLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionSecondLightLevelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionShininessAttribute</code> , See {@odf.attribute draw:extrusion-shininess}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionShininessAttribute() {
+		DrawExtrusionShininessAttribute attr = (DrawExtrusionShininessAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-shininess");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionShininessAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionShininessAttribute</code> , See {@odf.attribute draw:extrusion-shininess}
+	 *
+	 * @param drawExtrusionShininessValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionShininessAttribute(String drawExtrusionShininessValue) {
+		DrawExtrusionShininessAttribute attr = new DrawExtrusionShininessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionShininessValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionSkewAttribute</code> , See {@odf.attribute draw:extrusion-skew}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionSkewAttribute() {
+		DrawExtrusionSkewAttribute attr = (DrawExtrusionSkewAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-skew");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionSkewAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionSkewAttribute</code> , See {@odf.attribute draw:extrusion-skew}
+	 *
+	 * @param drawExtrusionSkewValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionSkewAttribute(String drawExtrusionSkewValue) {
+		DrawExtrusionSkewAttribute attr = new DrawExtrusionSkewAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionSkewValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionSpecularityAttribute</code> , See {@odf.attribute draw:extrusion-specularity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionSpecularityAttribute() {
+		DrawExtrusionSpecularityAttribute attr = (DrawExtrusionSpecularityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-specularity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionSpecularityAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionSpecularityAttribute</code> , See {@odf.attribute draw:extrusion-specularity}
+	 *
+	 * @param drawExtrusionSpecularityValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionSpecularityAttribute(String drawExtrusionSpecularityValue) {
+		DrawExtrusionSpecularityAttribute attr = new DrawExtrusionSpecularityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionSpecularityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawExtrusionViewpointAttribute</code> , See {@odf.attribute draw:extrusion-viewpoint}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawExtrusionViewpointAttribute() {
+		DrawExtrusionViewpointAttribute attr = (DrawExtrusionViewpointAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "extrusion-viewpoint");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawExtrusionViewpointAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawExtrusionViewpointAttribute</code> , See {@odf.attribute draw:extrusion-viewpoint}
+	 *
+	 * @param drawExtrusionViewpointValue   The type is <code>String</code>
+	 */
+	public void setDrawExtrusionViewpointAttribute(String drawExtrusionViewpointValue) {
+		DrawExtrusionViewpointAttribute attr = new DrawExtrusionViewpointAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawExtrusionViewpointValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGluePointLeavingDirectionsAttribute</code> , See {@odf.attribute draw:glue-point-leaving-directions}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGluePointLeavingDirectionsAttribute() {
+		DrawGluePointLeavingDirectionsAttribute attr = (DrawGluePointLeavingDirectionsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "glue-point-leaving-directions");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGluePointLeavingDirectionsAttribute</code> , See {@odf.attribute draw:glue-point-leaving-directions}
+	 *
+	 * @param drawGluePointLeavingDirectionsValue   The type is <code>String</code>
+	 */
+	public void setDrawGluePointLeavingDirectionsAttribute(String drawGluePointLeavingDirectionsValue) {
+		DrawGluePointLeavingDirectionsAttribute attr = new DrawGluePointLeavingDirectionsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGluePointLeavingDirectionsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGluePointTypeAttribute</code> , See {@odf.attribute draw:glue-point-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGluePointTypeAttribute() {
+		DrawGluePointTypeAttribute attr = (DrawGluePointTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "glue-point-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawGluePointTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGluePointTypeAttribute</code> , See {@odf.attribute draw:glue-point-type}
+	 *
+	 * @param drawGluePointTypeValue   The type is <code>String</code>
+	 */
+	public void setDrawGluePointTypeAttribute(String drawGluePointTypeValue) {
+		DrawGluePointTypeAttribute attr = new DrawGluePointTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGluePointTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGluePointsAttribute</code> , See {@odf.attribute draw:glue-points}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGluePointsAttribute() {
+		DrawGluePointsAttribute attr = (DrawGluePointsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "glue-points");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGluePointsAttribute</code> , See {@odf.attribute draw:glue-points}
+	 *
+	 * @param drawGluePointsValue   The type is <code>String</code>
+	 */
+	public void setDrawGluePointsAttribute(String drawGluePointsValue) {
+		DrawGluePointsAttribute attr = new DrawGluePointsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGluePointsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMirrorHorizontalAttribute</code> , See {@odf.attribute draw:mirror-horizontal}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawMirrorHorizontalAttribute() {
+		DrawMirrorHorizontalAttribute attr = (DrawMirrorHorizontalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "mirror-horizontal");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawMirrorHorizontalAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMirrorHorizontalAttribute</code> , See {@odf.attribute draw:mirror-horizontal}
+	 *
+	 * @param drawMirrorHorizontalValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawMirrorHorizontalAttribute(Boolean drawMirrorHorizontalValue) {
+		DrawMirrorHorizontalAttribute attr = new DrawMirrorHorizontalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawMirrorHorizontalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMirrorVerticalAttribute</code> , See {@odf.attribute draw:mirror-vertical}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawMirrorVerticalAttribute() {
+		DrawMirrorVerticalAttribute attr = (DrawMirrorVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "mirror-vertical");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawMirrorVerticalAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMirrorVerticalAttribute</code> , See {@odf.attribute draw:mirror-vertical}
+	 *
+	 * @param drawMirrorVerticalValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawMirrorVerticalAttribute(Boolean drawMirrorVerticalValue) {
+		DrawMirrorVerticalAttribute attr = new DrawMirrorVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawMirrorVerticalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawModifiersAttribute</code> , See {@odf.attribute draw:modifiers}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawModifiersAttribute() {
+		DrawModifiersAttribute attr = (DrawModifiersAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "modifiers");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawModifiersAttribute</code> , See {@odf.attribute draw:modifiers}
+	 *
+	 * @param drawModifiersValue   The type is <code>String</code>
+	 */
+	public void setDrawModifiersAttribute(String drawModifiersValue) {
+		DrawModifiersAttribute attr = new DrawModifiersAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawModifiersValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPathStretchpointXAttribute</code> , See {@odf.attribute draw:path-stretchpoint-x}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getDrawPathStretchpointXAttribute() {
+		DrawPathStretchpointXAttribute attr = (DrawPathStretchpointXAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "path-stretchpoint-x");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPathStretchpointXAttribute</code> , See {@odf.attribute draw:path-stretchpoint-x}
+	 *
+	 * @param drawPathStretchpointXValue   The type is <code>Double</code>
+	 */
+	public void setDrawPathStretchpointXAttribute(Double drawPathStretchpointXValue) {
+		DrawPathStretchpointXAttribute attr = new DrawPathStretchpointXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(drawPathStretchpointXValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPathStretchpointYAttribute</code> , See {@odf.attribute draw:path-stretchpoint-y}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getDrawPathStretchpointYAttribute() {
+		DrawPathStretchpointYAttribute attr = (DrawPathStretchpointYAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "path-stretchpoint-y");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPathStretchpointYAttribute</code> , See {@odf.attribute draw:path-stretchpoint-y}
+	 *
+	 * @param drawPathStretchpointYValue   The type is <code>Double</code>
+	 */
+	public void setDrawPathStretchpointYAttribute(Double drawPathStretchpointYValue) {
+		DrawPathStretchpointYAttribute attr = new DrawPathStretchpointYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(drawPathStretchpointYValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextAreasAttribute</code> , See {@odf.attribute draw:text-areas}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextAreasAttribute() {
+		DrawTextAreasAttribute attr = (DrawTextAreasAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-areas");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextAreasAttribute</code> , See {@odf.attribute draw:text-areas}
+	 *
+	 * @param drawTextAreasValue   The type is <code>String</code>
+	 */
+	public void setDrawTextAreasAttribute(String drawTextAreasValue) {
+		DrawTextAreasAttribute attr = new DrawTextAreasAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextAreasValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextPathAttribute</code> , See {@odf.attribute draw:text-path}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawTextPathAttribute() {
+		DrawTextPathAttribute attr = (DrawTextPathAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-path");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawTextPathAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextPathAttribute</code> , See {@odf.attribute draw:text-path}
+	 *
+	 * @param drawTextPathValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawTextPathAttribute(Boolean drawTextPathValue) {
+		DrawTextPathAttribute attr = new DrawTextPathAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawTextPathValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextPathAllowedAttribute</code> , See {@odf.attribute draw:text-path-allowed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawTextPathAllowedAttribute() {
+		DrawTextPathAllowedAttribute attr = (DrawTextPathAllowedAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-path-allowed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawTextPathAllowedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextPathAllowedAttribute</code> , See {@odf.attribute draw:text-path-allowed}
+	 *
+	 * @param drawTextPathAllowedValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawTextPathAllowedAttribute(Boolean drawTextPathAllowedValue) {
+		DrawTextPathAllowedAttribute attr = new DrawTextPathAllowedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawTextPathAllowedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextPathModeAttribute</code> , See {@odf.attribute draw:text-path-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextPathModeAttribute() {
+		DrawTextPathModeAttribute attr = (DrawTextPathModeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-path-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawTextPathModeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextPathModeAttribute</code> , See {@odf.attribute draw:text-path-mode}
+	 *
+	 * @param drawTextPathModeValue   The type is <code>String</code>
+	 */
+	public void setDrawTextPathModeAttribute(String drawTextPathModeValue) {
+		DrawTextPathModeAttribute attr = new DrawTextPathModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextPathModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextPathSameLetterHeightsAttribute</code> , See {@odf.attribute draw:text-path-same-letter-heights}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawTextPathSameLetterHeightsAttribute() {
+		DrawTextPathSameLetterHeightsAttribute attr = (DrawTextPathSameLetterHeightsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-path-same-letter-heights");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawTextPathSameLetterHeightsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextPathSameLetterHeightsAttribute</code> , See {@odf.attribute draw:text-path-same-letter-heights}
+	 *
+	 * @param drawTextPathSameLetterHeightsValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawTextPathSameLetterHeightsAttribute(Boolean drawTextPathSameLetterHeightsValue) {
+		DrawTextPathSameLetterHeightsAttribute attr = new DrawTextPathSameLetterHeightsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawTextPathSameLetterHeightsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextPathScaleAttribute</code> , See {@odf.attribute draw:text-path-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextPathScaleAttribute() {
+		DrawTextPathScaleAttribute attr = (DrawTextPathScaleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-path-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawTextPathScaleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextPathScaleAttribute</code> , See {@odf.attribute draw:text-path-scale}
+	 *
+	 * @param drawTextPathScaleValue   The type is <code>String</code>
+	 */
+	public void setDrawTextPathScaleAttribute(String drawTextPathScaleValue) {
+		DrawTextPathScaleAttribute attr = new DrawTextPathScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextPathScaleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextRotateAngleAttribute</code> , See {@odf.attribute draw:text-rotate-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextRotateAngleAttribute() {
+		DrawTextRotateAngleAttribute attr = (DrawTextRotateAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-rotate-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawTextRotateAngleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextRotateAngleAttribute</code> , See {@odf.attribute draw:text-rotate-angle}
+	 *
+	 * @param drawTextRotateAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawTextRotateAngleAttribute(String drawTextRotateAngleValue) {
+		DrawTextRotateAngleAttribute attr = new DrawTextRotateAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextRotateAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTypeAttribute</code> , See {@odf.attribute draw:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTypeAttribute() {
+		DrawTypeAttribute attr = (DrawTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawTypeAttribute.DEFAULT_VALUE_NON_PRIMITIVE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTypeAttribute</code> , See {@odf.attribute draw:type}
+	 *
+	 * @param drawTypeValue   The type is <code>String</code>
+	 */
+	public void setDrawTypeAttribute(String drawTypeValue) {
+		DrawTypeAttribute attr = new DrawTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element draw:equation}.
+	 *
+	 * @return the element {@odf.element draw:equation}
+	 */
+	public DrawEquationElement newDrawEquationElement() {
+		DrawEquationElement drawEquation = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEquationElement.class);
+		this.appendChild(drawEquation);
+		return drawEquation;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:handle}.
+	 *
+	 * @param drawHandlePositionValue  the <code>String</code> value of <code>DrawHandlePositionAttribute</code>, see {@odf.attribute  draw:handle-position} at specification
+	 * @return the element {@odf.element draw:handle}
+	 */
+	 public DrawHandleElement newDrawHandleElement(String drawHandlePositionValue) {
+		DrawHandleElement drawHandle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawHandleElement.class);
+		drawHandle.setDrawHandlePositionAttribute(drawHandlePositionValue);
+		this.appendChild(drawHandle);
+		return drawHandle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEquationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEquationElement.java
new file mode 100644
index 0000000..8f6ecbf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawEquationElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:equation}.
+ *
+ */
+public class DrawEquationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "equation");
+
+	/**
+	 * Create the instance of <code>DrawEquationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawEquationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:equation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFormulaAttribute</code> , See {@odf.attribute draw:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFormulaAttribute() {
+		DrawFormulaAttribute attr = (DrawFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFormulaAttribute</code> , See {@odf.attribute draw:formula}
+	 *
+	 * @param drawFormulaValue   The type is <code>String</code>
+	 */
+	public void setDrawFormulaAttribute(String drawFormulaValue) {
+		DrawFormulaAttribute attr = new DrawFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFillImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFillImageElement.java
new file mode 100644
index 0000000..a31a2de
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFillImageElement.java
@@ -0,0 +1,277 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:fill-image}.
+ *
+ */
+public class DrawFillImageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image");
+
+	/**
+	 * Create the instance of <code>DrawFillImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawFillImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:fill-image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFloatingFrameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFloatingFrameElement.java
new file mode 100644
index 0000000..0a4599c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFloatingFrameElement.java
@@ -0,0 +1,225 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:floating-frame}.
+ *
+ */
+public class DrawFloatingFrameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "floating-frame");
+
+	/**
+	 * Create the instance of <code>DrawFloatingFrameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawFloatingFrameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:floating-frame}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFrameNameAttribute</code> , See {@odf.attribute draw:frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFrameNameAttribute() {
+		DrawFrameNameAttribute attr = (DrawFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFrameNameAttribute</code> , See {@odf.attribute draw:frame-name}
+	 *
+	 * @param drawFrameNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFrameNameAttribute(String drawFrameNameValue) {
+		DrawFrameNameAttribute attr = new DrawFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFrameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFrameElement.java
new file mode 100644
index 0000000..9d44269
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawFrameElement.java
@@ -0,0 +1,622 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCopyOfAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPlaceholderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUserTransformedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:frame}.
+ *
+ */
+public class DrawFrameElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "frame");
+
+	/**
+	 * Create the instance of <code>DrawFrameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawFrameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:frame}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCopyOfAttribute</code> , See {@odf.attribute draw:copy-of}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCopyOfAttribute() {
+		DrawCopyOfAttribute attr = (DrawCopyOfAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "copy-of");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCopyOfAttribute</code> , See {@odf.attribute draw:copy-of}
+	 *
+	 * @param drawCopyOfValue   The type is <code>String</code>
+	 */
+	public void setDrawCopyOfAttribute(String drawCopyOfValue) {
+		DrawCopyOfAttribute attr = new DrawCopyOfAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCopyOfValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassAttribute</code> , See {@odf.attribute presentation:class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassAttribute() {
+		PresentationClassAttribute attr = (PresentationClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassAttribute</code> , See {@odf.attribute presentation:class}
+	 *
+	 * @param presentationClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassAttribute(String presentationClassValue) {
+		PresentationClassAttribute attr = new PresentationClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPlaceholderAttribute</code> , See {@odf.attribute presentation:placeholder}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationPlaceholderAttribute() {
+		PresentationPlaceholderAttribute attr = (PresentationPlaceholderAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "placeholder");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPlaceholderAttribute</code> , See {@odf.attribute presentation:placeholder}
+	 *
+	 * @param presentationPlaceholderValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationPlaceholderAttribute(Boolean presentationPlaceholderValue) {
+		PresentationPlaceholderAttribute attr = new PresentationPlaceholderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationPlaceholderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUserTransformedAttribute</code> , See {@odf.attribute presentation:user-transformed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationUserTransformedAttribute() {
+		PresentationUserTransformedAttribute attr = (PresentationUserTransformedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "user-transformed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUserTransformedAttribute</code> , See {@odf.attribute presentation:user-transformed}
+	 *
+	 * @param presentationUserTransformedValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationUserTransformedAttribute(Boolean presentationUserTransformedValue) {
+		PresentationUserTransformedAttribute attr = new PresentationUserTransformedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationUserTransformedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelHeightAttribute</code> , See {@odf.attribute style:rel-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelHeightAttribute() {
+		StyleRelHeightAttribute attr = (StyleRelHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelHeightAttribute</code> , See {@odf.attribute style:rel-height}
+	 *
+	 * @param styleRelHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleRelHeightAttribute(String styleRelHeightValue) {
+		StyleRelHeightAttribute attr = new StyleRelHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelWidthAttribute() {
+		StyleRelWidthAttribute attr = (StyleRelWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @param styleRelWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleRelWidthAttribute(String styleRelWidthValue) {
+		StyleRelWidthAttribute attr = new StyleRelWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:applet}.
+	 *
+	 * @return the element {@odf.element draw:applet}
+	 */
+	public DrawAppletElement newDrawAppletElement() {
+		DrawAppletElement drawApplet = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAppletElement.class);
+		this.appendChild(drawApplet);
+		return drawApplet;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:contour-path}.
+	 *
+	 * @param drawRecreateOnEditValue  the <code>Boolean</code> value of <code>DrawRecreateOnEditAttribute</code>, see {@odf.attribute  draw:recreate-on-edit} at specification
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:contour-path}
+	 */
+	 public DrawContourPathElement newDrawContourPathElement(boolean drawRecreateOnEditValue, String svgDValue, int svgViewBoxValue) {
+		DrawContourPathElement drawContourPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawContourPathElement.class);
+		drawContourPath.setDrawRecreateOnEditAttribute(drawRecreateOnEditValue);
+		drawContourPath.setSvgDAttribute(svgDValue);
+		drawContourPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawContourPath);
+		return drawContourPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:contour-polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param drawRecreateOnEditValue  the <code>Boolean</code> value of <code>DrawRecreateOnEditAttribute</code>, see {@odf.attribute  draw:recreate-on-edit} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:contour-polygon}
+	 */
+	 public DrawContourPolygonElement newDrawContourPolygonElement(String drawPointsValue, boolean drawRecreateOnEditValue, int svgViewBoxValue) {
+		DrawContourPolygonElement drawContourPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawContourPolygonElement.class);
+		drawContourPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawContourPolygon.setDrawRecreateOnEditAttribute(drawRecreateOnEditValue);
+		drawContourPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawContourPolygon);
+		return drawContourPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:floating-frame}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:floating-frame}
+	 */
+	 public DrawFloatingFrameElement newDrawFloatingFrameElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawFloatingFrameElement drawFloatingFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFloatingFrameElement.class);
+		drawFloatingFrame.setXlinkHrefAttribute(xlinkHrefValue);
+		drawFloatingFrame.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawFloatingFrame);
+		return drawFloatingFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:image}.
+	 *
+	 * @return the element {@odf.element draw:image}
+	 */
+	public DrawImageElement newDrawImageElement() {
+		DrawImageElement drawImage = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawImageElement.class);
+		this.appendChild(drawImage);
+		return drawImage;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:image-map}.
+	 *
+	 * @return the element {@odf.element draw:image-map}
+	 */
+	public DrawImageMapElement newDrawImageMapElement() {
+		DrawImageMapElement drawImageMap = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawImageMapElement.class);
+		this.appendChild(drawImageMap);
+		return drawImageMap;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:object}.
+	 *
+	 * @return the element {@odf.element draw:object}
+	 */
+	public DrawObjectElement newDrawObjectElement() {
+		DrawObjectElement drawObject = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawObjectElement.class);
+		this.appendChild(drawObject);
+		return drawObject;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:object-ole}.
+	 *
+	 * @return the element {@odf.element draw:object-ole}
+	 */
+	public DrawObjectOleElement newDrawObjectOleElement() {
+		DrawObjectOleElement drawObjectOle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawObjectOleElement.class);
+		this.appendChild(drawObjectOle);
+		return drawObjectOle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:plugin}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:plugin}
+	 */
+	 public DrawPluginElement newDrawPluginElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawPluginElement drawPlugin = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPluginElement.class);
+		drawPlugin.setXlinkHrefAttribute(xlinkHrefValue);
+		drawPlugin.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawPlugin);
+		return drawPlugin;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:text-box}.
+	 *
+	 * @return the element {@odf.element draw:text-box}
+	 */
+	public DrawTextBoxElement newDrawTextBoxElement() {
+		DrawTextBoxElement drawTextBox = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawTextBoxElement.class);
+		this.appendChild(drawTextBox);
+		return drawTextBox;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGElement.java
new file mode 100644
index 0000000..fd797ba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGElement.java
@@ -0,0 +1,419 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:g}.
+ *
+ */
+public class DrawGElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "g");
+
+	/**
+	 * Create the instance of <code>DrawGElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawGElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:g}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGluePointElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGluePointElement.java
new file mode 100644
index 0000000..a6a432b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGluePointElement.java
@@ -0,0 +1,204 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEscapeDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:glue-point}.
+ *
+ */
+public class DrawGluePointElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "glue-point");
+
+	/**
+	 * Create the instance of <code>DrawGluePointElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawGluePointElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:glue-point}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawAlignAttribute</code> , See {@odf.attribute draw:align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawAlignAttribute() {
+		DrawAlignAttribute attr = (DrawAlignAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawAlignAttribute</code> , See {@odf.attribute draw:align}
+	 *
+	 * @param drawAlignValue   The type is <code>String</code>
+	 */
+	public void setDrawAlignAttribute(String drawAlignValue) {
+		DrawAlignAttribute attr = new DrawAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEscapeDirectionAttribute</code> , See {@odf.attribute draw:escape-direction}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEscapeDirectionAttribute() {
+		DrawEscapeDirectionAttribute attr = (DrawEscapeDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "escape-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEscapeDirectionAttribute</code> , See {@odf.attribute draw:escape-direction}
+	 *
+	 * @param drawEscapeDirectionValue   The type is <code>String</code>
+	 */
+	public void setDrawEscapeDirectionAttribute(String drawEscapeDirectionValue) {
+		DrawEscapeDirectionAttribute attr = new DrawEscapeDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEscapeDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGradientElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGradientElement.java
new file mode 100644
index 0000000..92e5ea0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawGradientElement.java
@@ -0,0 +1,348 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndIntensityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartIntensityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:gradient}.
+ *
+ */
+public class DrawGradientElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "gradient");
+
+	/**
+	 * Create the instance of <code>DrawGradientElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawGradientElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:gradient}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawAngleAttribute</code> , See {@odf.attribute draw:angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawAngleAttribute() {
+		DrawAngleAttribute attr = (DrawAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawAngleAttribute</code> , See {@odf.attribute draw:angle}
+	 *
+	 * @param drawAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawAngleAttribute(String drawAngleValue) {
+		DrawAngleAttribute attr = new DrawAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawBorderAttribute</code> , See {@odf.attribute draw:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawBorderAttribute() {
+		DrawBorderAttribute attr = (DrawBorderAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawBorderAttribute</code> , See {@odf.attribute draw:border}
+	 *
+	 * @param drawBorderValue   The type is <code>String</code>
+	 */
+	public void setDrawBorderAttribute(String drawBorderValue) {
+		DrawBorderAttribute attr = new DrawBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCxAttribute</code> , See {@odf.attribute draw:cx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCxAttribute() {
+		DrawCxAttribute attr = (DrawCxAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "cx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCxAttribute</code> , See {@odf.attribute draw:cx}
+	 *
+	 * @param drawCxValue   The type is <code>String</code>
+	 */
+	public void setDrawCxAttribute(String drawCxValue) {
+		DrawCxAttribute attr = new DrawCxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCyAttribute</code> , See {@odf.attribute draw:cy}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCyAttribute() {
+		DrawCyAttribute attr = (DrawCyAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "cy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCyAttribute</code> , See {@odf.attribute draw:cy}
+	 *
+	 * @param drawCyValue   The type is <code>String</code>
+	 */
+	public void setDrawCyAttribute(String drawCyValue) {
+		DrawCyAttribute attr = new DrawCyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndColorAttribute</code> , See {@odf.attribute draw:end-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndColorAttribute() {
+		DrawEndColorAttribute attr = (DrawEndColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndColorAttribute</code> , See {@odf.attribute draw:end-color}
+	 *
+	 * @param drawEndColorValue   The type is <code>String</code>
+	 */
+	public void setDrawEndColorAttribute(String drawEndColorValue) {
+		DrawEndColorAttribute attr = new DrawEndColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndIntensityAttribute</code> , See {@odf.attribute draw:end-intensity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndIntensityAttribute() {
+		DrawEndIntensityAttribute attr = (DrawEndIntensityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-intensity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndIntensityAttribute</code> , See {@odf.attribute draw:end-intensity}
+	 *
+	 * @param drawEndIntensityValue   The type is <code>String</code>
+	 */
+	public void setDrawEndIntensityAttribute(String drawEndIntensityValue) {
+		DrawEndIntensityAttribute attr = new DrawEndIntensityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndIntensityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartColorAttribute</code> , See {@odf.attribute draw:start-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartColorAttribute() {
+		DrawStartColorAttribute attr = (DrawStartColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartColorAttribute</code> , See {@odf.attribute draw:start-color}
+	 *
+	 * @param drawStartColorValue   The type is <code>String</code>
+	 */
+	public void setDrawStartColorAttribute(String drawStartColorValue) {
+		DrawStartColorAttribute attr = new DrawStartColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartIntensityAttribute</code> , See {@odf.attribute draw:start-intensity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartIntensityAttribute() {
+		DrawStartIntensityAttribute attr = (DrawStartIntensityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-intensity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartIntensityAttribute</code> , See {@odf.attribute draw:start-intensity}
+	 *
+	 * @param drawStartIntensityValue   The type is <code>String</code>
+	 */
+	public void setDrawStartIntensityAttribute(String drawStartIntensityValue) {
+		DrawStartIntensityAttribute attr = new DrawStartIntensityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartIntensityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleAttribute() {
+		DrawStyleAttribute attr = (DrawStyleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * @param drawStyleValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleAttribute(String drawStyleValue) {
+		DrawStyleAttribute attr = new DrawStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawHandleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawHandleElement.java
new file mode 100644
index 0000000..46fbec9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawHandleElement.java
@@ -0,0 +1,348 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleMirrorHorizontalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleMirrorVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandlePolarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandlePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleRadiusRangeMaximumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleRadiusRangeMinimumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleRangeXMaximumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleRangeXMinimumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleRangeYMaximumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleRangeYMinimumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawHandleSwitchedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:handle}.
+ *
+ */
+public class DrawHandleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "handle");
+
+	/**
+	 * Create the instance of <code>DrawHandleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawHandleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:handle}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleMirrorHorizontalAttribute</code> , See {@odf.attribute draw:handle-mirror-horizontal}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawHandleMirrorHorizontalAttribute() {
+		DrawHandleMirrorHorizontalAttribute attr = (DrawHandleMirrorHorizontalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-mirror-horizontal");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawHandleMirrorHorizontalAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleMirrorHorizontalAttribute</code> , See {@odf.attribute draw:handle-mirror-horizontal}
+	 *
+	 * @param drawHandleMirrorHorizontalValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawHandleMirrorHorizontalAttribute(Boolean drawHandleMirrorHorizontalValue) {
+		DrawHandleMirrorHorizontalAttribute attr = new DrawHandleMirrorHorizontalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawHandleMirrorHorizontalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleMirrorVerticalAttribute</code> , See {@odf.attribute draw:handle-mirror-vertical}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawHandleMirrorVerticalAttribute() {
+		DrawHandleMirrorVerticalAttribute attr = (DrawHandleMirrorVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-mirror-vertical");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawHandleMirrorVerticalAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleMirrorVerticalAttribute</code> , See {@odf.attribute draw:handle-mirror-vertical}
+	 *
+	 * @param drawHandleMirrorVerticalValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawHandleMirrorVerticalAttribute(Boolean drawHandleMirrorVerticalValue) {
+		DrawHandleMirrorVerticalAttribute attr = new DrawHandleMirrorVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawHandleMirrorVerticalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandlePolarAttribute</code> , See {@odf.attribute draw:handle-polar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandlePolarAttribute() {
+		DrawHandlePolarAttribute attr = (DrawHandlePolarAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-polar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandlePolarAttribute</code> , See {@odf.attribute draw:handle-polar}
+	 *
+	 * @param drawHandlePolarValue   The type is <code>String</code>
+	 */
+	public void setDrawHandlePolarAttribute(String drawHandlePolarValue) {
+		DrawHandlePolarAttribute attr = new DrawHandlePolarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandlePolarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandlePositionAttribute</code> , See {@odf.attribute draw:handle-position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandlePositionAttribute() {
+		DrawHandlePositionAttribute attr = (DrawHandlePositionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandlePositionAttribute</code> , See {@odf.attribute draw:handle-position}
+	 *
+	 * @param drawHandlePositionValue   The type is <code>String</code>
+	 */
+	public void setDrawHandlePositionAttribute(String drawHandlePositionValue) {
+		DrawHandlePositionAttribute attr = new DrawHandlePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandlePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleRadiusRangeMaximumAttribute</code> , See {@odf.attribute draw:handle-radius-range-maximum}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandleRadiusRangeMaximumAttribute() {
+		DrawHandleRadiusRangeMaximumAttribute attr = (DrawHandleRadiusRangeMaximumAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-radius-range-maximum");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleRadiusRangeMaximumAttribute</code> , See {@odf.attribute draw:handle-radius-range-maximum}
+	 *
+	 * @param drawHandleRadiusRangeMaximumValue   The type is <code>String</code>
+	 */
+	public void setDrawHandleRadiusRangeMaximumAttribute(String drawHandleRadiusRangeMaximumValue) {
+		DrawHandleRadiusRangeMaximumAttribute attr = new DrawHandleRadiusRangeMaximumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandleRadiusRangeMaximumValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleRadiusRangeMinimumAttribute</code> , See {@odf.attribute draw:handle-radius-range-minimum}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandleRadiusRangeMinimumAttribute() {
+		DrawHandleRadiusRangeMinimumAttribute attr = (DrawHandleRadiusRangeMinimumAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-radius-range-minimum");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleRadiusRangeMinimumAttribute</code> , See {@odf.attribute draw:handle-radius-range-minimum}
+	 *
+	 * @param drawHandleRadiusRangeMinimumValue   The type is <code>String</code>
+	 */
+	public void setDrawHandleRadiusRangeMinimumAttribute(String drawHandleRadiusRangeMinimumValue) {
+		DrawHandleRadiusRangeMinimumAttribute attr = new DrawHandleRadiusRangeMinimumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandleRadiusRangeMinimumValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleRangeXMaximumAttribute</code> , See {@odf.attribute draw:handle-range-x-maximum}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandleRangeXMaximumAttribute() {
+		DrawHandleRangeXMaximumAttribute attr = (DrawHandleRangeXMaximumAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-range-x-maximum");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleRangeXMaximumAttribute</code> , See {@odf.attribute draw:handle-range-x-maximum}
+	 *
+	 * @param drawHandleRangeXMaximumValue   The type is <code>String</code>
+	 */
+	public void setDrawHandleRangeXMaximumAttribute(String drawHandleRangeXMaximumValue) {
+		DrawHandleRangeXMaximumAttribute attr = new DrawHandleRangeXMaximumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandleRangeXMaximumValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleRangeXMinimumAttribute</code> , See {@odf.attribute draw:handle-range-x-minimum}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandleRangeXMinimumAttribute() {
+		DrawHandleRangeXMinimumAttribute attr = (DrawHandleRangeXMinimumAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-range-x-minimum");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleRangeXMinimumAttribute</code> , See {@odf.attribute draw:handle-range-x-minimum}
+	 *
+	 * @param drawHandleRangeXMinimumValue   The type is <code>String</code>
+	 */
+	public void setDrawHandleRangeXMinimumAttribute(String drawHandleRangeXMinimumValue) {
+		DrawHandleRangeXMinimumAttribute attr = new DrawHandleRangeXMinimumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandleRangeXMinimumValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleRangeYMaximumAttribute</code> , See {@odf.attribute draw:handle-range-y-maximum}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandleRangeYMaximumAttribute() {
+		DrawHandleRangeYMaximumAttribute attr = (DrawHandleRangeYMaximumAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-range-y-maximum");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleRangeYMaximumAttribute</code> , See {@odf.attribute draw:handle-range-y-maximum}
+	 *
+	 * @param drawHandleRangeYMaximumValue   The type is <code>String</code>
+	 */
+	public void setDrawHandleRangeYMaximumAttribute(String drawHandleRangeYMaximumValue) {
+		DrawHandleRangeYMaximumAttribute attr = new DrawHandleRangeYMaximumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandleRangeYMaximumValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleRangeYMinimumAttribute</code> , See {@odf.attribute draw:handle-range-y-minimum}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawHandleRangeYMinimumAttribute() {
+		DrawHandleRangeYMinimumAttribute attr = (DrawHandleRangeYMinimumAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-range-y-minimum");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleRangeYMinimumAttribute</code> , See {@odf.attribute draw:handle-range-y-minimum}
+	 *
+	 * @param drawHandleRangeYMinimumValue   The type is <code>String</code>
+	 */
+	public void setDrawHandleRangeYMinimumAttribute(String drawHandleRangeYMinimumValue) {
+		DrawHandleRangeYMinimumAttribute attr = new DrawHandleRangeYMinimumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawHandleRangeYMinimumValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawHandleSwitchedAttribute</code> , See {@odf.attribute draw:handle-switched}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawHandleSwitchedAttribute() {
+		DrawHandleSwitchedAttribute attr = (DrawHandleSwitchedAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "handle-switched");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawHandleSwitchedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawHandleSwitchedAttribute</code> , See {@odf.attribute draw:handle-switched}
+	 *
+	 * @param drawHandleSwitchedValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawHandleSwitchedAttribute(Boolean drawHandleSwitchedValue) {
+		DrawHandleSwitchedAttribute attr = new DrawHandleSwitchedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawHandleSwitchedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawHatchElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawHatchElement.java
new file mode 100644
index 0000000..c2cbf93
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawHatchElement.java
@@ -0,0 +1,225 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawRotationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:hatch}.
+ *
+ */
+public class DrawHatchElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "hatch");
+
+	/**
+	 * Create the instance of <code>DrawHatchElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawHatchElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:hatch}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawColorAttribute</code> , See {@odf.attribute draw:color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawColorAttribute() {
+		DrawColorAttribute attr = (DrawColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawColorAttribute</code> , See {@odf.attribute draw:color}
+	 *
+	 * @param drawColorValue   The type is <code>String</code>
+	 */
+	public void setDrawColorAttribute(String drawColorValue) {
+		DrawColorAttribute attr = new DrawColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDistanceAttribute</code> , See {@odf.attribute draw:distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDistanceAttribute() {
+		DrawDistanceAttribute attr = (DrawDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDistanceAttribute</code> , See {@odf.attribute draw:distance}
+	 *
+	 * @param drawDistanceValue   The type is <code>String</code>
+	 */
+	public void setDrawDistanceAttribute(String drawDistanceValue) {
+		DrawDistanceAttribute attr = new DrawDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawRotationAttribute</code> , See {@odf.attribute draw:rotation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawRotationAttribute() {
+		DrawRotationAttribute attr = (DrawRotationAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "rotation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawRotationAttribute</code> , See {@odf.attribute draw:rotation}
+	 *
+	 * @param drawRotationValue   The type is <code>String</code>
+	 */
+	public void setDrawRotationAttribute(String drawRotationValue) {
+		DrawRotationAttribute attr = new DrawRotationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawRotationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleAttribute() {
+		DrawStyleAttribute attr = (DrawStyleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * @param drawStyleValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleAttribute(String drawStyleValue) {
+		DrawStyleAttribute attr = new DrawStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawImageElement.java
new file mode 100644
index 0000000..3e9d65c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawImageElement.java
@@ -0,0 +1,257 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBinaryDataElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFilterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:image}.
+ *
+ */
+public class DrawImageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "image");
+
+	/**
+	 * Create the instance of <code>DrawImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFilterNameAttribute</code> , See {@odf.attribute draw:filter-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFilterNameAttribute() {
+		DrawFilterNameAttribute attr = (DrawFilterNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "filter-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFilterNameAttribute</code> , See {@odf.attribute draw:filter-name}
+	 *
+	 * @param drawFilterNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFilterNameAttribute(String drawFilterNameValue) {
+		DrawFilterNameAttribute attr = new DrawFilterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFilterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:binary-data}.
+	 *
+	 * @return the element {@odf.element office:binary-data}
+	 */
+	public OfficeBinaryDataElement newOfficeBinaryDataElement() {
+		OfficeBinaryDataElement officeBinaryData = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeBinaryDataElement.class);
+		this.appendChild(officeBinaryData);
+		return officeBinaryData;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawImageMapElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawImageMapElement.java
new file mode 100644
index 0000000..21b85ec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawImageMapElement.java
@@ -0,0 +1,130 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:image-map}.
+ *
+ */
+public class DrawImageMapElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "image-map");
+
+	/**
+	 * Create the instance of <code>DrawImageMapElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawImageMapElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:image-map}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:area-circle}.
+	 *
+	 * @param svgCxValue  the <code>String</code> value of <code>SvgCxAttribute</code>, see {@odf.attribute  svg:cx} at specification
+	 * @param svgCyValue  the <code>String</code> value of <code>SvgCyAttribute</code>, see {@odf.attribute  svg:cy} at specification
+	 * @param svgRValue  the <code>String</code> value of <code>SvgRAttribute</code>, see {@odf.attribute  svg:r} at specification
+	 * @return the element {@odf.element draw:area-circle}
+	 */
+	 public DrawAreaCircleElement newDrawAreaCircleElement(String svgCxValue, String svgCyValue, String svgRValue) {
+		DrawAreaCircleElement drawAreaCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAreaCircleElement.class);
+		drawAreaCircle.setSvgCxAttribute(svgCxValue);
+		drawAreaCircle.setSvgCyAttribute(svgCyValue);
+		drawAreaCircle.setSvgRAttribute(svgRValue);
+		this.appendChild(drawAreaCircle);
+		return drawAreaCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:area-polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgHeightValue  the <code>String</code> value of <code>SvgHeightAttribute</code>, see {@odf.attribute  svg:height} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @param svgWidthValue  the <code>String</code> value of <code>SvgWidthAttribute</code>, see {@odf.attribute  svg:width} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:area-polygon}
+	 */
+	 public DrawAreaPolygonElement newDrawAreaPolygonElement(String drawPointsValue, String svgHeightValue, int svgViewBoxValue, String svgWidthValue, String svgXValue, String svgYValue) {
+		DrawAreaPolygonElement drawAreaPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAreaPolygonElement.class);
+		drawAreaPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawAreaPolygon.setSvgHeightAttribute(svgHeightValue);
+		drawAreaPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		drawAreaPolygon.setSvgWidthAttribute(svgWidthValue);
+		drawAreaPolygon.setSvgXAttribute(svgXValue);
+		drawAreaPolygon.setSvgYAttribute(svgYValue);
+		this.appendChild(drawAreaPolygon);
+		return drawAreaPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:area-rectangle}.
+	 *
+	 * @param svgHeightValue  the <code>String</code> value of <code>SvgHeightAttribute</code>, see {@odf.attribute  svg:height} at specification
+	 * @param svgWidthValue  the <code>String</code> value of <code>SvgWidthAttribute</code>, see {@odf.attribute  svg:width} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:area-rectangle}
+	 */
+	 public DrawAreaRectangleElement newDrawAreaRectangleElement(String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue) {
+		DrawAreaRectangleElement drawAreaRectangle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAreaRectangleElement.class);
+		drawAreaRectangle.setSvgHeightAttribute(svgHeightValue);
+		drawAreaRectangle.setSvgWidthAttribute(svgWidthValue);
+		drawAreaRectangle.setSvgXAttribute(svgXValue);
+		drawAreaRectangle.setSvgYAttribute(svgYValue);
+		this.appendChild(drawAreaRectangle);
+		return drawAreaRectangle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLayerElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLayerElement.java
new file mode 100644
index 0000000..d089533
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLayerElement.java
@@ -0,0 +1,172 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawProtectedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:layer}.
+ *
+ */
+public class DrawLayerElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "layer");
+
+	/**
+	 * Create the instance of <code>DrawLayerElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawLayerElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:layer}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayAttribute</code> , See {@odf.attribute draw:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayAttribute() {
+		DrawDisplayAttribute attr = (DrawDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return DrawDisplayAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayAttribute</code> , See {@odf.attribute draw:display}
+	 *
+	 * @param drawDisplayValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayAttribute(String drawDisplayValue) {
+		DrawDisplayAttribute attr = new DrawDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawProtectedAttribute</code> , See {@odf.attribute draw:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawProtectedAttribute() {
+		DrawProtectedAttribute attr = (DrawProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(DrawProtectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawProtectedAttribute</code> , See {@odf.attribute draw:protected}
+	 *
+	 * @param drawProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawProtectedAttribute(Boolean drawProtectedValue) {
+		DrawProtectedAttribute attr = new DrawProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLayerSetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLayerSetElement.java
new file mode 100644
index 0000000..b648ca0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLayerSetElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:layer-set}.
+ *
+ */
+public class DrawLayerSetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "layer-set");
+
+	/**
+	 * Create the instance of <code>DrawLayerSetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawLayerSetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:layer-set}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:layer}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @return the element {@odf.element draw:layer}
+	 */
+	 public DrawLayerElement newDrawLayerElement(String drawNameValue) {
+		DrawLayerElement drawLayer = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLayerElement.class);
+		drawLayer.setDrawNameAttribute(drawNameValue);
+		this.appendChild(drawLayer);
+		return drawLayer;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLineElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLineElement.java
new file mode 100644
index 0000000..043e400
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawLineElement.java
@@ -0,0 +1,360 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY2Attribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:line}.
+ *
+ */
+public class DrawLineElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "line");
+
+	/**
+	 * Create the instance of <code>DrawLineElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawLineElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:line}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX1Attribute() {
+		SvgX1Attribute attr = (SvgX1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * @param svgX1Value   The type is <code>String</code>
+	 */
+	public void setSvgX1Attribute(String svgX1Value) {
+		SvgX1Attribute attr = new SvgX1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX2Attribute() {
+		SvgX2Attribute attr = (SvgX2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * @param svgX2Value   The type is <code>String</code>
+	 */
+	public void setSvgX2Attribute(String svgX2Value) {
+		SvgX2Attribute attr = new SvgX2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY1Attribute() {
+		SvgY1Attribute attr = (SvgY1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * @param svgY1Value   The type is <code>String</code>
+	 */
+	public void setSvgY1Attribute(String svgY1Value) {
+		SvgY1Attribute attr = new SvgY1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY2Attribute() {
+		SvgY2Attribute attr = (SvgY2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * @param svgY2Value   The type is <code>String</code>
+	 */
+	public void setSvgY2Attribute(String svgY2Value) {
+		SvgY2Attribute attr = new SvgY2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY2Value);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawMarkerElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawMarkerElement.java
new file mode 100644
index 0000000..7acade8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawMarkerElement.java
@@ -0,0 +1,177 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:marker}.
+ *
+ */
+public class DrawMarkerElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "marker");
+
+	/**
+	 * Create the instance of <code>DrawMarkerElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawMarkerElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:marker}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgDAttribute() {
+		SvgDAttribute attr = (SvgDAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "d");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @param svgDValue   The type is <code>String</code>
+	 */
+	public void setSvgDAttribute(String svgDValue) {
+		SvgDAttribute attr = new SvgDAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgDValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawMeasureElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawMeasureElement.java
new file mode 100644
index 0000000..615d65f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawMeasureElement.java
@@ -0,0 +1,360 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY2Attribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:measure}.
+ *
+ */
+public class DrawMeasureElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "measure");
+
+	/**
+	 * Create the instance of <code>DrawMeasureElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawMeasureElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:measure}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX1Attribute() {
+		SvgX1Attribute attr = (SvgX1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * @param svgX1Value   The type is <code>String</code>
+	 */
+	public void setSvgX1Attribute(String svgX1Value) {
+		SvgX1Attribute attr = new SvgX1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX2Attribute() {
+		SvgX2Attribute attr = (SvgX2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * @param svgX2Value   The type is <code>String</code>
+	 */
+	public void setSvgX2Attribute(String svgX2Value) {
+		SvgX2Attribute attr = new SvgX2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY1Attribute() {
+		SvgY1Attribute attr = (SvgY1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * @param svgY1Value   The type is <code>String</code>
+	 */
+	public void setSvgY1Attribute(String svgY1Value) {
+		SvgY1Attribute attr = new SvgY1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY2Attribute() {
+		SvgY2Attribute attr = (SvgY2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * @param svgY2Value   The type is <code>String</code>
+	 */
+	public void setSvgY2Attribute(String svgY2Value) {
+		SvgY2Attribute attr = new SvgY2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY2Value);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawObjectElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawObjectElement.java
new file mode 100644
index 0000000..c4a70eb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawObjectElement.java
@@ -0,0 +1,249 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.math.MathMathElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNotifyOnUpdateOfRangesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:object}.
+ *
+ */
+public class DrawObjectElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "object");
+
+	/**
+	 * Create the instance of <code>DrawObjectElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawObjectElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:object}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNotifyOnUpdateOfRangesAttribute</code> , See {@odf.attribute draw:notify-on-update-of-ranges}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNotifyOnUpdateOfRangesAttribute() {
+		DrawNotifyOnUpdateOfRangesAttribute attr = (DrawNotifyOnUpdateOfRangesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "notify-on-update-of-ranges");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNotifyOnUpdateOfRangesAttribute</code> , See {@odf.attribute draw:notify-on-update-of-ranges}
+	 *
+	 * @param drawNotifyOnUpdateOfRangesValue   The type is <code>String</code>
+	 */
+	public void setDrawNotifyOnUpdateOfRangesAttribute(String drawNotifyOnUpdateOfRangesValue) {
+		DrawNotifyOnUpdateOfRangesAttribute attr = new DrawNotifyOnUpdateOfRangesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNotifyOnUpdateOfRangesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element math:math}.
+	 *
+	 * @return the element {@odf.element math:math}
+	 */
+	public MathMathElement newMathMathElement() {
+		MathMathElement mathMath = ((OdfFileDom) this.ownerDocument).newOdfElement(MathMathElement.class);
+		this.appendChild(mathMath);
+		return mathMath;
+	}
+
+	/**
+	 * Create child element {@odf.element office:document}.
+	 *
+	 * @param officeMimetypeValue  the <code>String</code> value of <code>OfficeMimetypeAttribute</code>, see {@odf.attribute  office:mimetype} at specification
+	 * @param officeVersionValue  the <code>String</code> value of <code>OfficeVersionAttribute</code>, see {@odf.attribute  office:version} at specification
+	 * @return the element {@odf.element office:document}
+	 */
+	 public OfficeDocumentElement newOfficeDocumentElement(String officeMimetypeValue, String officeVersionValue) {
+		OfficeDocumentElement officeDocument = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDocumentElement.class);
+		officeDocument.setOfficeMimetypeAttribute(officeMimetypeValue);
+		officeDocument.setOfficeVersionAttribute(officeVersionValue);
+		this.appendChild(officeDocument);
+		return officeDocument;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawObjectOleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawObjectOleElement.java
new file mode 100644
index 0000000..e956e35
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawObjectOleElement.java
@@ -0,0 +1,233 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBinaryDataElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:object-ole}.
+ *
+ */
+public class DrawObjectOleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "object-ole");
+
+	/**
+	 * Create the instance of <code>DrawObjectOleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawObjectOleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:object-ole}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassIdAttribute</code> , See {@odf.attribute draw:class-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassIdAttribute() {
+		DrawClassIdAttribute attr = (DrawClassIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassIdAttribute</code> , See {@odf.attribute draw:class-id}
+	 *
+	 * @param drawClassIdValue   The type is <code>String</code>
+	 */
+	public void setDrawClassIdAttribute(String drawClassIdValue) {
+		DrawClassIdAttribute attr = new DrawClassIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:binary-data}.
+	 *
+	 * @return the element {@odf.element office:binary-data}
+	 */
+	public OfficeBinaryDataElement newOfficeBinaryDataElement() {
+		OfficeBinaryDataElement officeBinaryData = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeBinaryDataElement.class);
+		this.appendChild(officeBinaryData);
+		return officeBinaryData;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawOpacityElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawOpacityElement.java
new file mode 100644
index 0000000..f43f03d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawOpacityElement.java
@@ -0,0 +1,298 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:opacity}.
+ *
+ */
+public class DrawOpacityElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "opacity");
+
+	/**
+	 * Create the instance of <code>DrawOpacityElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawOpacityElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:opacity}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawAngleAttribute</code> , See {@odf.attribute draw:angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawAngleAttribute() {
+		DrawAngleAttribute attr = (DrawAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawAngleAttribute</code> , See {@odf.attribute draw:angle}
+	 *
+	 * @param drawAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawAngleAttribute(String drawAngleValue) {
+		DrawAngleAttribute attr = new DrawAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawBorderAttribute</code> , See {@odf.attribute draw:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawBorderAttribute() {
+		DrawBorderAttribute attr = (DrawBorderAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawBorderAttribute</code> , See {@odf.attribute draw:border}
+	 *
+	 * @param drawBorderValue   The type is <code>String</code>
+	 */
+	public void setDrawBorderAttribute(String drawBorderValue) {
+		DrawBorderAttribute attr = new DrawBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCxAttribute</code> , See {@odf.attribute draw:cx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCxAttribute() {
+		DrawCxAttribute attr = (DrawCxAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "cx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCxAttribute</code> , See {@odf.attribute draw:cx}
+	 *
+	 * @param drawCxValue   The type is <code>String</code>
+	 */
+	public void setDrawCxAttribute(String drawCxValue) {
+		DrawCxAttribute attr = new DrawCxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCyAttribute</code> , See {@odf.attribute draw:cy}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCyAttribute() {
+		DrawCyAttribute attr = (DrawCyAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "cy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCyAttribute</code> , See {@odf.attribute draw:cy}
+	 *
+	 * @param drawCyValue   The type is <code>String</code>
+	 */
+	public void setDrawCyAttribute(String drawCyValue) {
+		DrawCyAttribute attr = new DrawCyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndAttribute</code> , See {@odf.attribute draw:end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndAttribute() {
+		DrawEndAttribute attr = (DrawEndAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndAttribute</code> , See {@odf.attribute draw:end}
+	 *
+	 * @param drawEndValue   The type is <code>String</code>
+	 */
+	public void setDrawEndAttribute(String drawEndValue) {
+		DrawEndAttribute attr = new DrawEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartAttribute</code> , See {@odf.attribute draw:start}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartAttribute() {
+		DrawStartAttribute attr = (DrawStartAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartAttribute</code> , See {@odf.attribute draw:start}
+	 *
+	 * @param drawStartValue   The type is <code>String</code>
+	 */
+	public void setDrawStartAttribute(String drawStartValue) {
+		DrawStartAttribute attr = new DrawStartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleAttribute() {
+		DrawStyleAttribute attr = (DrawStyleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * @param drawStyleValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleAttribute(String drawStyleValue) {
+		DrawStyleAttribute attr = new DrawStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPageElement.java
new file mode 100644
index 0000000..0ccf1cd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPageElement.java
@@ -0,0 +1,791 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateColorElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateMotionElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateTransformElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAudioElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimCommandElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimIterateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimParElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimSeqElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimSetElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimTransitionFilterElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationAnimationsElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMasterPageNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNavOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresentationPageLayoutNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseDateTimeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseFooterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseHeaderNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:page}.
+ *
+ */
+public class DrawPageElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "page");
+
+	/**
+	 * Create the instance of <code>DrawPageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawPageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.DrawingPage, OdfName.newName(OdfDocumentNamespace.DRAW, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:page}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMasterPageNameAttribute</code> , See {@odf.attribute draw:master-page-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMasterPageNameAttribute() {
+		DrawMasterPageNameAttribute attr = (DrawMasterPageNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "master-page-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMasterPageNameAttribute</code> , See {@odf.attribute draw:master-page-name}
+	 *
+	 * @param drawMasterPageNameValue   The type is <code>String</code>
+	 */
+	public void setDrawMasterPageNameAttribute(String drawMasterPageNameValue) {
+		DrawMasterPageNameAttribute attr = new DrawMasterPageNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMasterPageNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNavOrderAttribute</code> , See {@odf.attribute draw:nav-order}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNavOrderAttribute() {
+		DrawNavOrderAttribute attr = (DrawNavOrderAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "nav-order");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNavOrderAttribute</code> , See {@odf.attribute draw:nav-order}
+	 *
+	 * @param drawNavOrderValue   The type is <code>String</code>
+	 */
+	public void setDrawNavOrderAttribute(String drawNavOrderValue) {
+		DrawNavOrderAttribute attr = new DrawNavOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNavOrderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresentationPageLayoutNameAttribute</code> , See {@odf.attribute presentation:presentation-page-layout-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresentationPageLayoutNameAttribute() {
+		PresentationPresentationPageLayoutNameAttribute attr = (PresentationPresentationPageLayoutNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "presentation-page-layout-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresentationPageLayoutNameAttribute</code> , See {@odf.attribute presentation:presentation-page-layout-name}
+	 *
+	 * @param presentationPresentationPageLayoutNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresentationPageLayoutNameAttribute(String presentationPresentationPageLayoutNameValue) {
+		PresentationPresentationPageLayoutNameAttribute attr = new PresentationPresentationPageLayoutNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresentationPageLayoutNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseDateTimeNameAttribute</code> , See {@odf.attribute presentation:use-date-time-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseDateTimeNameAttribute() {
+		PresentationUseDateTimeNameAttribute attr = (PresentationUseDateTimeNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-date-time-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseDateTimeNameAttribute</code> , See {@odf.attribute presentation:use-date-time-name}
+	 *
+	 * @param presentationUseDateTimeNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseDateTimeNameAttribute(String presentationUseDateTimeNameValue) {
+		PresentationUseDateTimeNameAttribute attr = new PresentationUseDateTimeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseDateTimeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseFooterNameAttribute</code> , See {@odf.attribute presentation:use-footer-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseFooterNameAttribute() {
+		PresentationUseFooterNameAttribute attr = (PresentationUseFooterNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-footer-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseFooterNameAttribute</code> , See {@odf.attribute presentation:use-footer-name}
+	 *
+	 * @param presentationUseFooterNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseFooterNameAttribute(String presentationUseFooterNameValue) {
+		PresentationUseFooterNameAttribute attr = new PresentationUseFooterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseFooterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseHeaderNameAttribute</code> , See {@odf.attribute presentation:use-header-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseHeaderNameAttribute() {
+		PresentationUseHeaderNameAttribute attr = (PresentationUseHeaderNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-header-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseHeaderNameAttribute</code> , See {@odf.attribute presentation:use-header-name}
+	 *
+	 * @param presentationUseHeaderNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseHeaderNameAttribute(String presentationUseHeaderNameValue) {
+		PresentationUseHeaderNameAttribute attr = new PresentationUseHeaderNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseHeaderNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animate}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animate}
+	 */
+	 public AnimAnimateElement newAnimAnimateElement(String smilAttributeNameValue) {
+		AnimAnimateElement animAnimate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateElement.class);
+		animAnimate.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimate);
+		return animAnimate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateColor}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateColor}
+	 */
+	 public AnimAnimateColorElement newAnimAnimateColorElement(String smilAttributeNameValue) {
+		AnimAnimateColorElement animAnimateColor = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateColorElement.class);
+		animAnimateColor.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateColor);
+		return animAnimateColor;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateMotion}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:animateMotion}
+	 */
+	 public AnimAnimateMotionElement newAnimAnimateMotionElement(String smilAttributeNameValue) {
+		AnimAnimateMotionElement animAnimateMotion = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateMotionElement.class);
+		animAnimateMotion.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateMotion);
+		return animAnimateMotion;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateTransform}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @param svgTypeValue  the <code>String</code> value of <code>SvgTypeAttribute</code>, see {@odf.attribute  svg:type} at specification
+	 * @return the element {@odf.element anim:animateTransform}
+	 */
+	 public AnimAnimateTransformElement newAnimAnimateTransformElement(String smilAttributeNameValue, String svgTypeValue) {
+		AnimAnimateTransformElement animAnimateTransform = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateTransformElement.class);
+		animAnimateTransform.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		animAnimateTransform.setSvgTypeAttribute(svgTypeValue);
+		this.appendChild(animAnimateTransform);
+		return animAnimateTransform;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:audio}.
+	 *
+	 * @return the element {@odf.element anim:audio}
+	 */
+	public AnimAudioElement newAnimAudioElement() {
+		AnimAudioElement animAudio = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAudioElement.class);
+		this.appendChild(animAudio);
+		return animAudio;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:command}.
+	 *
+	 * @param animCommandValue  the <code>String</code> value of <code>AnimCommandAttribute</code>, see {@odf.attribute  anim:command} at specification
+	 * @return the element {@odf.element anim:command}
+	 */
+	 public AnimCommandElement newAnimCommandElement(String animCommandValue) {
+		AnimCommandElement animCommand = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimCommandElement.class);
+		animCommand.setAnimCommandAttribute(animCommandValue);
+		this.appendChild(animCommand);
+		return animCommand;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:iterate}.
+	 *
+	 * @return the element {@odf.element anim:iterate}
+	 */
+	public AnimIterateElement newAnimIterateElement() {
+		AnimIterateElement animIterate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimIterateElement.class);
+		this.appendChild(animIterate);
+		return animIterate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:par}.
+	 *
+	 * @return the element {@odf.element anim:par}
+	 */
+	public AnimParElement newAnimParElement() {
+		AnimParElement animPar = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimParElement.class);
+		this.appendChild(animPar);
+		return animPar;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:seq}.
+	 *
+	 * @return the element {@odf.element anim:seq}
+	 */
+	public AnimSeqElement newAnimSeqElement() {
+		AnimSeqElement animSeq = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSeqElement.class);
+		this.appendChild(animSeq);
+		return animSeq;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:set}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @return the element {@odf.element anim:set}
+	 */
+	 public AnimSetElement newAnimSetElement(String smilAttributeNameValue) {
+		AnimSetElement animSet = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSetElement.class);
+		animSet.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animSet);
+		return animSet;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:transitionFilter}.
+	 *
+	 * @param smilTypeValue  the <code>String</code> value of <code>SmilTypeAttribute</code>, see {@odf.attribute  smil:type} at specification
+	 * @return the element {@odf.element anim:transitionFilter}
+	 */
+	 public AnimTransitionFilterElement newAnimTransitionFilterElement(String smilTypeValue) {
+		AnimTransitionFilterElement animTransitionFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimTransitionFilterElement.class);
+		animTransitionFilter.setSmilTypeAttribute(smilTypeValue);
+		this.appendChild(animTransitionFilter);
+		return animTransitionFilter;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:layer-set}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:layer-set}
+	 */
+	public DrawLayerSetElement newDrawLayerSetElement() {
+		DrawLayerSetElement drawLayerSet = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLayerSetElement.class);
+		this.appendChild(drawLayerSet);
+		return drawLayerSet;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:forms}.
+	 *
+	 * @return the element {@odf.element office:forms}
+	 */
+	public OfficeFormsElement newOfficeFormsElement() {
+		OfficeFormsElement officeForms = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFormsElement.class);
+		this.appendChild(officeForms);
+		return officeForms;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:animations}.
+	 *
+	 * @return the element {@odf.element presentation:animations}
+	 */
+	public PresentationAnimationsElement newPresentationAnimationsElement() {
+		PresentationAnimationsElement presentationAnimations = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationAnimationsElement.class);
+		this.appendChild(presentationAnimations);
+		return presentationAnimations;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:notes}.
+	 *
+	 * @return the element {@odf.element presentation:notes}
+	 */
+	public PresentationNotesElement newPresentationNotesElement() {
+		PresentationNotesElement presentationNotes = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationNotesElement.class);
+		this.appendChild(presentationNotes);
+		return presentationNotes;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPageThumbnailElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPageThumbnailElement.java
new file mode 100644
index 0000000..e9f271f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPageThumbnailElement.java
@@ -0,0 +1,372 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPlaceholderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUserTransformedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:page-thumbnail}.
+ *
+ */
+public class DrawPageThumbnailElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "page-thumbnail");
+
+	/**
+	 * Create the instance of <code>DrawPageThumbnailElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawPageThumbnailElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:page-thumbnail}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPageNumberAttribute</code> , See {@odf.attribute draw:page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawPageNumberAttribute() {
+		DrawPageNumberAttribute attr = (DrawPageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPageNumberAttribute</code> , See {@odf.attribute draw:page-number}
+	 *
+	 * @param drawPageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setDrawPageNumberAttribute(Integer drawPageNumberValue) {
+		DrawPageNumberAttribute attr = new DrawPageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawPageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassAttribute</code> , See {@odf.attribute presentation:class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassAttribute() {
+		PresentationClassAttribute attr = (PresentationClassAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassAttribute</code> , See {@odf.attribute presentation:class}
+	 *
+	 * @param presentationClassValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassAttribute(String presentationClassValue) {
+		PresentationClassAttribute attr = new PresentationClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPlaceholderAttribute</code> , See {@odf.attribute presentation:placeholder}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationPlaceholderAttribute() {
+		PresentationPlaceholderAttribute attr = (PresentationPlaceholderAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "placeholder");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPlaceholderAttribute</code> , See {@odf.attribute presentation:placeholder}
+	 *
+	 * @param presentationPlaceholderValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationPlaceholderAttribute(Boolean presentationPlaceholderValue) {
+		PresentationPlaceholderAttribute attr = new PresentationPlaceholderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationPlaceholderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUserTransformedAttribute</code> , See {@odf.attribute presentation:user-transformed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationUserTransformedAttribute() {
+		PresentationUserTransformedAttribute attr = (PresentationUserTransformedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "user-transformed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUserTransformedAttribute</code> , See {@odf.attribute presentation:user-transformed}
+	 *
+	 * @param presentationUserTransformedValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationUserTransformedAttribute(Boolean presentationUserTransformedValue) {
+		PresentationUserTransformedAttribute attr = new PresentationUserTransformedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationUserTransformedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawParamElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawParamElement.java
new file mode 100644
index 0000000..fe1d8ac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawParamElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:param}.
+ *
+ */
+public class DrawParamElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "param");
+
+	/**
+	 * Create the instance of <code>DrawParamElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawParamElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:param}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawValueAttribute</code> , See {@odf.attribute draw:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawValueAttribute() {
+		DrawValueAttribute attr = (DrawValueAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawValueAttribute</code> , See {@odf.attribute draw:value}
+	 *
+	 * @param drawValueValue   The type is <code>String</code>
+	 */
+	public void setDrawValueAttribute(String drawValueValue) {
+		DrawValueAttribute attr = new DrawValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPathElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPathElement.java
new file mode 100644
index 0000000..22ff029
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPathElement.java
@@ -0,0 +1,406 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:path}.
+ *
+ */
+public class DrawPathElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "path");
+
+	/**
+	 * Create the instance of <code>DrawPathElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawPathElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:path}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgDAttribute() {
+		SvgDAttribute attr = (SvgDAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "d");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDAttribute</code> , See {@odf.attribute svg:d}
+	 *
+	 * @param svgDValue   The type is <code>String</code>
+	 */
+	public void setSvgDAttribute(String svgDValue) {
+		SvgDAttribute attr = new SvgDAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgDValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPluginElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPluginElement.java
new file mode 100644
index 0000000..36c8ffa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPluginElement.java
@@ -0,0 +1,236 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMimeTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:plugin}.
+ *
+ */
+public class DrawPluginElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "plugin");
+
+	/**
+	 * Create the instance of <code>DrawPluginElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawPluginElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:plugin}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMimeTypeAttribute</code> , See {@odf.attribute draw:mime-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMimeTypeAttribute() {
+		DrawMimeTypeAttribute attr = (DrawMimeTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "mime-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMimeTypeAttribute</code> , See {@odf.attribute draw:mime-type}
+	 *
+	 * @param drawMimeTypeValue   The type is <code>String</code>
+	 */
+	public void setDrawMimeTypeAttribute(String drawMimeTypeValue) {
+		DrawMimeTypeAttribute attr = new DrawMimeTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMimeTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:param}.
+	 *
+	 * @return the element {@odf.element draw:param}
+	 */
+	public DrawParamElement newDrawParamElement() {
+		DrawParamElement drawParam = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawParamElement.class);
+		this.appendChild(drawParam);
+		return drawParam;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPolygonElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPolygonElement.java
new file mode 100644
index 0000000..6e9cd90
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPolygonElement.java
@@ -0,0 +1,406 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPointsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:polygon}.
+ *
+ */
+public class DrawPolygonElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "polygon");
+
+	/**
+	 * Create the instance of <code>DrawPolygonElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawPolygonElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:polygon}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawPointsAttribute() {
+		DrawPointsAttribute attr = (DrawPointsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "points");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * @param drawPointsValue   The type is <code>String</code>
+	 */
+	public void setDrawPointsAttribute(String drawPointsValue) {
+		DrawPointsAttribute attr = new DrawPointsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawPointsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPolylineElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPolylineElement.java
new file mode 100644
index 0000000..dd6f3c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawPolylineElement.java
@@ -0,0 +1,406 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPointsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgViewBoxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:polyline}.
+ *
+ */
+public class DrawPolylineElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "polyline");
+
+	/**
+	 * Create the instance of <code>DrawPolylineElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawPolylineElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:polyline}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawPointsAttribute() {
+		DrawPointsAttribute attr = (DrawPointsAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "points");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPointsAttribute</code> , See {@odf.attribute draw:points}
+	 *
+	 * @param drawPointsValue   The type is <code>String</code>
+	 */
+	public void setDrawPointsAttribute(String drawPointsValue) {
+		DrawPointsAttribute attr = new DrawPointsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawPointsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgViewBoxAttribute() {
+		SvgViewBoxAttribute attr = (SvgViewBoxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "viewBox");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgViewBoxAttribute</code> , See {@odf.attribute svg:viewBox}
+	 *
+	 * @param svgViewBoxValue   The type is <code>Integer</code>
+	 */
+	public void setSvgViewBoxAttribute(Integer svgViewBoxValue) {
+		SvgViewBoxAttribute attr = new SvgViewBoxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgViewBoxValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawRectElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawRectElement.java
new file mode 100644
index 0000000..b358fdb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawRectElement.java
@@ -0,0 +1,427 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCornerRadiusAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:rect}.
+ *
+ */
+public class DrawRectElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "rect");
+
+	/**
+	 * Create the instance of <code>DrawRectElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawRectElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:rect}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCornerRadiusAttribute() {
+		DrawCornerRadiusAttribute attr = (DrawCornerRadiusAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "corner-radius");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @param drawCornerRadiusValue   The type is <code>String</code>
+	 */
+	public void setDrawCornerRadiusAttribute(String drawCornerRadiusValue) {
+		DrawCornerRadiusAttribute attr = new DrawCornerRadiusAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCornerRadiusValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRxAttribute</code> , See {@odf.attribute svg:rx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRxAttribute() {
+		SvgRxAttribute attr = (SvgRxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "rx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRxAttribute</code> , See {@odf.attribute svg:rx}
+	 *
+	 * @param svgRxValue   The type is <code>String</code>
+	 */
+	public void setSvgRxAttribute(String svgRxValue) {
+		SvgRxAttribute attr = new SvgRxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRyAttribute</code> , See {@odf.attribute svg:ry}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRyAttribute() {
+		SvgRyAttribute attr = (SvgRyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "ry");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRyAttribute</code> , See {@odf.attribute svg:ry}
+	 *
+	 * @param svgRyValue   The type is <code>String</code>
+	 */
+	public void setSvgRyAttribute(String svgRyValue) {
+		SvgRyAttribute attr = new SvgRyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawRegularPolygonElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawRegularPolygonElement.java
new file mode 100644
index 0000000..af3301e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawRegularPolygonElement.java
@@ -0,0 +1,431 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawConcaveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCornersAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawSharpnessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:regular-polygon}.
+ *
+ */
+public class DrawRegularPolygonElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "regular-polygon");
+
+	/**
+	 * Create the instance of <code>DrawRegularPolygonElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawRegularPolygonElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:regular-polygon}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionIdAttribute() {
+		DrawCaptionIdAttribute attr = (DrawCaptionIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionIdAttribute</code> , See {@odf.attribute draw:caption-id}
+	 *
+	 * @param drawCaptionIdValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionIdAttribute(String drawCaptionIdValue) {
+		DrawCaptionIdAttribute attr = new DrawCaptionIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawConcaveAttribute</code> , See {@odf.attribute draw:concave}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawConcaveAttribute() {
+		DrawConcaveAttribute attr = (DrawConcaveAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "concave");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawConcaveAttribute</code> , See {@odf.attribute draw:concave}
+	 *
+	 * @param drawConcaveValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawConcaveAttribute(Boolean drawConcaveValue) {
+		DrawConcaveAttribute attr = new DrawConcaveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawConcaveValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCornersAttribute</code> , See {@odf.attribute draw:corners}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawCornersAttribute() {
+		DrawCornersAttribute attr = (DrawCornersAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "corners");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCornersAttribute</code> , See {@odf.attribute draw:corners}
+	 *
+	 * @param drawCornersValue   The type is <code>Integer</code>
+	 */
+	public void setDrawCornersAttribute(Integer drawCornersValue) {
+		DrawCornersAttribute attr = new DrawCornersAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawCornersValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawSharpnessAttribute</code> , See {@odf.attribute draw:sharpness}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawSharpnessAttribute() {
+		DrawSharpnessAttribute attr = (DrawSharpnessAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "sharpness");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawSharpnessAttribute</code> , See {@odf.attribute draw:sharpness}
+	 *
+	 * @param drawSharpnessValue   The type is <code>String</code>
+	 */
+	public void setDrawSharpnessAttribute(String drawSharpnessValue) {
+		DrawSharpnessAttribute attr = new DrawSharpnessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawSharpnessValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element draw:glue-point}.
+	 *
+	 * @param drawEscapeDirectionValue  the <code>String</code> value of <code>DrawEscapeDirectionAttribute</code>, see {@odf.attribute  draw:escape-direction} at specification
+	 * @param drawIdValue  the <code>String</code> value of <code>DrawIdAttribute</code>, see {@odf.attribute  draw:id} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element draw:glue-point}
+	 */
+	 public DrawGluePointElement newDrawGluePointElement(String drawEscapeDirectionValue, String drawIdValue, String svgXValue, String svgYValue) {
+		DrawGluePointElement drawGluePoint = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGluePointElement.class);
+		drawGluePoint.setDrawEscapeDirectionAttribute(drawEscapeDirectionValue);
+		drawGluePoint.setDrawIdAttribute(drawIdValue);
+		drawGluePoint.setSvgXAttribute(svgXValue);
+		drawGluePoint.setSvgYAttribute(svgYValue);
+		this.appendChild(drawGluePoint);
+		return drawGluePoint;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:desc}.
+	 *
+	 * @return the element {@odf.element svg:desc}
+	 */
+	public SvgDescElement newSvgDescElement() {
+		SvgDescElement svgDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDescElement.class);
+		this.appendChild(svgDesc);
+		return svgDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:title}.
+	 *
+	 * @return the element {@odf.element svg:title}
+	 */
+	public SvgTitleElement newSvgTitleElement() {
+		SvgTitleElement svgTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgTitleElement.class);
+		this.appendChild(svgTitle);
+		return svgTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawShapeElementBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawShapeElementBase.java
new file mode 100644
index 0000000..ccb2e49
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawShapeElementBase.java
@@ -0,0 +1,404 @@
+
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawZIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableBackgroundAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorPageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument base element
+ *
+ */
+public abstract class DrawShapeElementBase extends OdfStyleableShapeElement {
+
+	/**
+	 * Create the instance of <code>DrawShapeElementBase</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawShapeElementBase(OdfFileDom ownerDoc, OdfName elementName) {
+		super(ownerDoc, elementName);
+	}
+
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawClassNamesAttribute() {
+		DrawClassNamesAttribute attr = (DrawClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawClassNamesAttribute</code> , See {@odf.attribute draw:class-names}
+	 *
+	 * @param drawClassNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawClassNamesAttribute(String drawClassNamesValue) {
+		DrawClassNamesAttribute attr = new DrawClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawIdAttribute() {
+		DrawIdAttribute attr = (DrawIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawIdAttribute</code> , See {@odf.attribute draw:id}
+	 *
+	 * @param drawIdValue   The type is <code>String</code>
+	 */
+	public void setDrawIdAttribute(String drawIdValue) {
+		DrawIdAttribute attr = new DrawIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawZIndexAttribute() {
+		DrawZIndexAttribute attr = (DrawZIndexAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "z-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawZIndexAttribute</code> , See {@odf.attribute draw:z-index}
+	 *
+	 * @param drawZIndexValue   The type is <code>Integer</code>
+	 */
+	public void setDrawZIndexAttribute(Integer drawZIndexValue) {
+		DrawZIndexAttribute attr = new DrawZIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawZIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationClassNamesAttribute() {
+		PresentationClassNamesAttribute attr = (PresentationClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationClassNamesAttribute</code> , See {@odf.attribute presentation:class-names}
+	 *
+	 * @param presentationClassNamesValue   The type is <code>String</code>
+	 */
+	public void setPresentationClassNamesAttribute(String presentationClassNamesValue) {
+		PresentationClassNamesAttribute attr = new PresentationClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStyleNameAttribute() {
+		PresentationStyleNameAttribute attr = (PresentationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStyleNameAttribute</code> , See {@odf.attribute presentation:style-name}
+	 *
+	 * @param presentationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationStyleNameAttribute(String presentationStyleNameValue) {
+		PresentationStyleNameAttribute attr = new PresentationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndCellAddressAttribute</code> , See {@odf.attribute table:end-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEndCellAddressAttribute() {
+		TableEndCellAddressAttribute attr = (TableEndCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndCellAddressAttribute</code> , See {@odf.attribute table:end-cell-address}
+	 *
+	 * @param tableEndCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableEndCellAddressAttribute(String tableEndCellAddressValue) {
+		TableEndCellAddressAttribute attr = new TableEndCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEndCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndXAttribute</code> , See {@odf.attribute table:end-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEndXAttribute() {
+		TableEndXAttribute attr = (TableEndXAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndXAttribute</code> , See {@odf.attribute table:end-x}
+	 *
+	 * @param tableEndXValue   The type is <code>String</code>
+	 */
+	public void setTableEndXAttribute(String tableEndXValue) {
+		TableEndXAttribute attr = new TableEndXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEndXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndYAttribute</code> , See {@odf.attribute table:end-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEndYAttribute() {
+		TableEndYAttribute attr = (TableEndYAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndYAttribute</code> , See {@odf.attribute table:end-y}
+	 *
+	 * @param tableEndYValue   The type is <code>String</code>
+	 */
+	public void setTableEndYAttribute(String tableEndYValue) {
+		TableEndYAttribute attr = new TableEndYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEndYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableBackgroundAttribute</code> , See {@odf.attribute table:table-background}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableTableBackgroundAttribute() {
+		TableTableBackgroundAttribute attr = (TableTableBackgroundAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table-background");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableBackgroundAttribute</code> , See {@odf.attribute table:table-background}
+	 *
+	 * @param tableTableBackgroundValue   The type is <code>Boolean</code>
+	 */
+	public void setTableTableBackgroundAttribute(Boolean tableTableBackgroundValue) {
+		TableTableBackgroundAttribute attr = new TableTableBackgroundAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableTableBackgroundValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnchorPageNumberAttribute</code> , See {@odf.attribute text:anchor-page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextAnchorPageNumberAttribute() {
+		TextAnchorPageNumberAttribute attr = (TextAnchorPageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "anchor-page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnchorPageNumberAttribute</code> , See {@odf.attribute text:anchor-page-number}
+	 *
+	 * @param textAnchorPageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTextAnchorPageNumberAttribute(Integer textAnchorPageNumberValue) {
+		TextAnchorPageNumberAttribute attr = new TextAnchorPageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textAnchorPageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnchorTypeAttribute</code> , See {@odf.attribute text:anchor-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnchorTypeAttribute() {
+		TextAnchorTypeAttribute attr = (TextAnchorTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "anchor-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnchorTypeAttribute</code> , See {@odf.attribute text:anchor-type}
+	 *
+	 * @param textAnchorTypeValue   The type is <code>String</code>
+	 */
+	public void setTextAnchorTypeAttribute(String textAnchorTypeValue) {
+		TextAnchorTypeAttribute attr = new TextAnchorTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnchorTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawStrokeDashElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawStrokeDashElement.java
new file mode 100644
index 0000000..b8b5a03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawStrokeDashElement.java
@@ -0,0 +1,273 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDots1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDots1LengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDots2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDots2LengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:stroke-dash}.
+ *
+ */
+public class DrawStrokeDashElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash");
+
+	/**
+	 * Create the instance of <code>DrawStrokeDashElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawStrokeDashElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:stroke-dash}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDistanceAttribute</code> , See {@odf.attribute draw:distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDistanceAttribute() {
+		DrawDistanceAttribute attr = (DrawDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDistanceAttribute</code> , See {@odf.attribute draw:distance}
+	 *
+	 * @param drawDistanceValue   The type is <code>String</code>
+	 */
+	public void setDrawDistanceAttribute(String drawDistanceValue) {
+		DrawDistanceAttribute attr = new DrawDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDots1Attribute</code> , See {@odf.attribute draw:dots1}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawDots1Attribute() {
+		DrawDots1Attribute attr = (DrawDots1Attribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "dots1");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDots1Attribute</code> , See {@odf.attribute draw:dots1}
+	 *
+	 * @param drawDots1Value   The type is <code>Integer</code>
+	 */
+	public void setDrawDots1Attribute(Integer drawDots1Value) {
+		DrawDots1Attribute attr = new DrawDots1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawDots1Value.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDots1LengthAttribute</code> , See {@odf.attribute draw:dots1-length}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDots1LengthAttribute() {
+		DrawDots1LengthAttribute attr = (DrawDots1LengthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "dots1-length");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDots1LengthAttribute</code> , See {@odf.attribute draw:dots1-length}
+	 *
+	 * @param drawDots1LengthValue   The type is <code>String</code>
+	 */
+	public void setDrawDots1LengthAttribute(String drawDots1LengthValue) {
+		DrawDots1LengthAttribute attr = new DrawDots1LengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDots1LengthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDots2Attribute</code> , See {@odf.attribute draw:dots2}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawDots2Attribute() {
+		DrawDots2Attribute attr = (DrawDots2Attribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "dots2");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDots2Attribute</code> , See {@odf.attribute draw:dots2}
+	 *
+	 * @param drawDots2Value   The type is <code>Integer</code>
+	 */
+	public void setDrawDots2Attribute(Integer drawDots2Value) {
+		DrawDots2Attribute attr = new DrawDots2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawDots2Value.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDots2LengthAttribute</code> , See {@odf.attribute draw:dots2-length}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDots2LengthAttribute() {
+		DrawDots2LengthAttribute attr = (DrawDots2LengthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "dots2-length");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDots2LengthAttribute</code> , See {@odf.attribute draw:dots2-length}
+	 *
+	 * @param drawDots2LengthValue   The type is <code>String</code>
+	 */
+	public void setDrawDots2LengthAttribute(String drawDots2LengthValue) {
+		DrawDots2LengthAttribute attr = new DrawDots2LengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDots2LengthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleAttribute() {
+		DrawStyleAttribute attr = (DrawStyleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleAttribute</code> , See {@odf.attribute draw:style}
+	 *
+	 * @param drawStyleValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleAttribute(String drawStyleValue) {
+		DrawStyleAttribute attr = new DrawStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawTextBoxElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawTextBoxElement.java
new file mode 100644
index 0000000..67cb727
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/draw/DrawTextBoxElement.java
@@ -0,0 +1,742 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberedParagraphElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawChainNextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCornerRadiusAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMaxHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMaxWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMinHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMinWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element draw:text-box}.
+ *
+ */
+public class DrawTextBoxElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.DRAW, "text-box");
+
+	/**
+	 * Create the instance of <code>DrawTextBoxElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public DrawTextBoxElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element draw:text-box}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawChainNextNameAttribute</code> , See {@odf.attribute draw:chain-next-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawChainNextNameAttribute() {
+		DrawChainNextNameAttribute attr = (DrawChainNextNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "chain-next-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawChainNextNameAttribute</code> , See {@odf.attribute draw:chain-next-name}
+	 *
+	 * @param drawChainNextNameValue   The type is <code>String</code>
+	 */
+	public void setDrawChainNextNameAttribute(String drawChainNextNameValue) {
+		DrawChainNextNameAttribute attr = new DrawChainNextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawChainNextNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCornerRadiusAttribute() {
+		DrawCornerRadiusAttribute attr = (DrawCornerRadiusAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "corner-radius");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @param drawCornerRadiusValue   The type is <code>String</code>
+	 */
+	public void setDrawCornerRadiusAttribute(String drawCornerRadiusValue) {
+		DrawCornerRadiusAttribute attr = new DrawCornerRadiusAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCornerRadiusValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMaxHeightAttribute</code> , See {@odf.attribute fo:max-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMaxHeightAttribute() {
+		FoMaxHeightAttribute attr = (FoMaxHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "max-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMaxHeightAttribute</code> , See {@odf.attribute fo:max-height}
+	 *
+	 * @param foMaxHeightValue   The type is <code>String</code>
+	 */
+	public void setFoMaxHeightAttribute(String foMaxHeightValue) {
+		FoMaxHeightAttribute attr = new FoMaxHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMaxHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMaxWidthAttribute</code> , See {@odf.attribute fo:max-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMaxWidthAttribute() {
+		FoMaxWidthAttribute attr = (FoMaxWidthAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "max-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMaxWidthAttribute</code> , See {@odf.attribute fo:max-width}
+	 *
+	 * @param foMaxWidthValue   The type is <code>String</code>
+	 */
+	public void setFoMaxWidthAttribute(String foMaxWidthValue) {
+		FoMaxWidthAttribute attr = new FoMaxWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMaxWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMinHeightAttribute</code> , See {@odf.attribute fo:min-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMinHeightAttribute() {
+		FoMinHeightAttribute attr = (FoMinHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "min-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMinHeightAttribute</code> , See {@odf.attribute fo:min-height}
+	 *
+	 * @param foMinHeightValue   The type is <code>String</code>
+	 */
+	public void setFoMinHeightAttribute(String foMinHeightValue) {
+		FoMinHeightAttribute attr = new FoMinHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMinHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMinWidthAttribute</code> , See {@odf.attribute fo:min-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMinWidthAttribute() {
+		FoMinWidthAttribute attr = (FoMinWidthAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "min-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMinWidthAttribute</code> , See {@odf.attribute fo:min-width}
+	 *
+	 * @param foMinWidthValue   The type is <code>String</code>
+	 */
+	public void setFoMinWidthAttribute(String foMinWidthValue) {
+		FoMinWidthAttribute attr = new FoMinWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMinWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormButtonElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormButtonElement.java
new file mode 100644
index 0000000..186c436
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormButtonElement.java
@@ -0,0 +1,698 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormButtonTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDefaultButtonAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDelayForRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormFocusOnClickAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImageAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImageDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImagePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormToggleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormXformsSubmissionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:button}.
+ *
+ */
+public class FormButtonElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "button");
+
+	/**
+	 * Create the instance of <code>FormButtonElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormButtonElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:button}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormButtonTypeAttribute</code> , See {@odf.attribute form:button-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormButtonTypeAttribute() {
+		FormButtonTypeAttribute attr = (FormButtonTypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "button-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormButtonTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormButtonTypeAttribute</code> , See {@odf.attribute form:button-type}
+	 *
+	 * @param formButtonTypeValue   The type is <code>String</code>
+	 */
+	public void setFormButtonTypeAttribute(String formButtonTypeValue) {
+		FormButtonTypeAttribute attr = new FormButtonTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formButtonTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDefaultButtonAttribute</code> , See {@odf.attribute form:default-button}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDefaultButtonAttribute() {
+		FormDefaultButtonAttribute attr = (FormDefaultButtonAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "default-button");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDefaultButtonAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDefaultButtonAttribute</code> , See {@odf.attribute form:default-button}
+	 *
+	 * @param formDefaultButtonValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDefaultButtonAttribute(Boolean formDefaultButtonValue) {
+		FormDefaultButtonAttribute attr = new FormDefaultButtonAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDefaultButtonValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDelayForRepeatAttribute() {
+		FormDelayForRepeatAttribute attr = (FormDelayForRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "delay-for-repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormDelayForRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @param formDelayForRepeatValue   The type is <code>String</code>
+	 */
+	public void setFormDelayForRepeatAttribute(String formDelayForRepeatValue) {
+		FormDelayForRepeatAttribute attr = new FormDelayForRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDelayForRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormFocusOnClickAttribute</code> , See {@odf.attribute form:focus-on-click}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormFocusOnClickAttribute() {
+		FormFocusOnClickAttribute attr = (FormFocusOnClickAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "focus-on-click");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormFocusOnClickAttribute</code> , See {@odf.attribute form:focus-on-click}
+	 *
+	 * @param formFocusOnClickValue   The type is <code>Boolean</code>
+	 */
+	public void setFormFocusOnClickAttribute(Boolean formFocusOnClickValue) {
+		FormFocusOnClickAttribute attr = new FormFocusOnClickAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formFocusOnClickValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImageAlignAttribute</code> , See {@odf.attribute form:image-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImageAlignAttribute() {
+		FormImageAlignAttribute attr = (FormImageAlignAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormImageAlignAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImageAlignAttribute</code> , See {@odf.attribute form:image-align}
+	 *
+	 * @param formImageAlignValue   The type is <code>String</code>
+	 */
+	public void setFormImageAlignAttribute(String formImageAlignValue) {
+		FormImageAlignAttribute attr = new FormImageAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImageAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImageDataAttribute</code> , See {@odf.attribute form:image-data}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImageDataAttribute() {
+		FormImageDataAttribute attr = (FormImageDataAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-data");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImageDataAttribute</code> , See {@odf.attribute form:image-data}
+	 *
+	 * @param formImageDataValue   The type is <code>String</code>
+	 */
+	public void setFormImageDataAttribute(String formImageDataValue) {
+		FormImageDataAttribute attr = new FormImageDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImageDataValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImagePositionAttribute</code> , See {@odf.attribute form:image-position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImagePositionAttribute() {
+		FormImagePositionAttribute attr = (FormImagePositionAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormImagePositionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImagePositionAttribute</code> , See {@odf.attribute form:image-position}
+	 *
+	 * @param formImagePositionValue   The type is <code>String</code>
+	 */
+	public void setFormImagePositionAttribute(String formImagePositionValue) {
+		FormImagePositionAttribute attr = new FormImagePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImagePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormRepeatAttribute() {
+		FormRepeatAttribute attr = (FormRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "repeat");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @param formRepeatValue   The type is <code>Boolean</code>
+	 */
+	public void setFormRepeatAttribute(Boolean formRepeatValue) {
+		FormRepeatAttribute attr = new FormRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formRepeatValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormToggleAttribute</code> , See {@odf.attribute form:toggle}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormToggleAttribute() {
+		FormToggleAttribute attr = (FormToggleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "toggle");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormToggleAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormToggleAttribute</code> , See {@odf.attribute form:toggle}
+	 *
+	 * @param formToggleValue   The type is <code>Boolean</code>
+	 */
+	public void setFormToggleAttribute(Boolean formToggleValue) {
+		FormToggleAttribute attr = new FormToggleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formToggleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormXformsSubmissionAttribute</code> , See {@odf.attribute form:xforms-submission}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormXformsSubmissionAttribute() {
+		FormXformsSubmissionAttribute attr = (FormXformsSubmissionAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "xforms-submission");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormXformsSubmissionAttribute</code> , See {@odf.attribute form:xforms-submission}
+	 *
+	 * @param formXformsSubmissionValue   The type is <code>String</code>
+	 */
+	public void setFormXformsSubmissionAttribute(String formXformsSubmissionValue) {
+		FormXformsSubmissionAttribute attr = new FormXformsSubmissionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formXformsSubmissionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameAttribute</code> , See {@odf.attribute office:target-frame}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameAttribute() {
+		OfficeTargetFrameAttribute attr = (OfficeTargetFrameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return OfficeTargetFrameAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameAttribute</code> , See {@odf.attribute office:target-frame}
+	 *
+	 * @param officeTargetFrameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameAttribute(String officeTargetFrameValue) {
+		OfficeTargetFrameAttribute attr = new OfficeTargetFrameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormCheckboxElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormCheckboxElement.java
new file mode 100644
index 0000000..b2d8a0f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormCheckboxElement.java
@@ -0,0 +1,598 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentStateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImageAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImagePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIsTristateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormStateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormVisualEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:checkbox}.
+ *
+ */
+public class FormCheckboxElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "checkbox");
+
+	/**
+	 * Create the instance of <code>FormCheckboxElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormCheckboxElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:checkbox}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentStateAttribute</code> , See {@odf.attribute form:current-state}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentStateAttribute() {
+		FormCurrentStateAttribute attr = (FormCurrentStateAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-state");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentStateAttribute</code> , See {@odf.attribute form:current-state}
+	 *
+	 * @param formCurrentStateValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentStateAttribute(String formCurrentStateValue) {
+		FormCurrentStateAttribute attr = new FormCurrentStateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentStateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImageAlignAttribute</code> , See {@odf.attribute form:image-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImageAlignAttribute() {
+		FormImageAlignAttribute attr = (FormImageAlignAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormImageAlignAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImageAlignAttribute</code> , See {@odf.attribute form:image-align}
+	 *
+	 * @param formImageAlignValue   The type is <code>String</code>
+	 */
+	public void setFormImageAlignAttribute(String formImageAlignValue) {
+		FormImageAlignAttribute attr = new FormImageAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImageAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImagePositionAttribute</code> , See {@odf.attribute form:image-position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImagePositionAttribute() {
+		FormImagePositionAttribute attr = (FormImagePositionAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormImagePositionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImagePositionAttribute</code> , See {@odf.attribute form:image-position}
+	 *
+	 * @param formImagePositionValue   The type is <code>String</code>
+	 */
+	public void setFormImagePositionAttribute(String formImagePositionValue) {
+		FormImagePositionAttribute attr = new FormImagePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImagePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIsTristateAttribute</code> , See {@odf.attribute form:is-tristate}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormIsTristateAttribute() {
+		FormIsTristateAttribute attr = (FormIsTristateAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "is-tristate");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormIsTristateAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIsTristateAttribute</code> , See {@odf.attribute form:is-tristate}
+	 *
+	 * @param formIsTristateValue   The type is <code>Boolean</code>
+	 */
+	public void setFormIsTristateAttribute(Boolean formIsTristateValue) {
+		FormIsTristateAttribute attr = new FormIsTristateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formIsTristateValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormStateAttribute</code> , See {@odf.attribute form:state}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormStateAttribute() {
+		FormStateAttribute attr = (FormStateAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "state");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormStateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormStateAttribute</code> , See {@odf.attribute form:state}
+	 *
+	 * @param formStateValue   The type is <code>String</code>
+	 */
+	public void setFormStateAttribute(String formStateValue) {
+		FormStateAttribute attr = new FormStateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formStateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormVisualEffectAttribute</code> , See {@odf.attribute form:visual-effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormVisualEffectAttribute() {
+		FormVisualEffectAttribute attr = (FormVisualEffectAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "visual-effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormVisualEffectAttribute</code> , See {@odf.attribute form:visual-effect}
+	 *
+	 * @param formVisualEffectValue   The type is <code>String</code>
+	 */
+	public void setFormVisualEffectAttribute(String formVisualEffectValue) {
+		FormVisualEffectAttribute attr = new FormVisualEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formVisualEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormColumnElement.java
new file mode 100644
index 0000000..d4d3295
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormColumnElement.java
@@ -0,0 +1,292 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:column}.
+ *
+ */
+public class FormColumnElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "column");
+
+	/**
+	 * Create the instance of <code>FormColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTextStyleNameAttribute</code> , See {@odf.attribute form:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTextStyleNameAttribute() {
+		FormTextStyleNameAttribute attr = (FormTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTextStyleNameAttribute</code> , See {@odf.attribute form:text-style-name}
+	 *
+	 * @param formTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setFormTextStyleNameAttribute(String formTextStyleNameValue) {
+		FormTextStyleNameAttribute attr = new FormTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTextStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:checkbox}.
+	 *
+	 * @param formImagePositionValue  the <code>String</code> value of <code>FormImagePositionAttribute</code>, see {@odf.attribute  form:image-position} at specification
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:checkbox}
+	 */
+	 public FormCheckboxElement newFormCheckboxElement(String formImagePositionValue, String xmlIdValue) {
+		FormCheckboxElement formCheckbox = ((OdfFileDom) this.ownerDocument).newOdfElement(FormCheckboxElement.class);
+		formCheckbox.setFormImagePositionAttribute(formImagePositionValue);
+		formCheckbox.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formCheckbox);
+		return formCheckbox;
+	}
+
+	/**
+	 * Create child element {@odf.element form:combobox}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:combobox}
+	 */
+	 public FormComboboxElement newFormComboboxElement(String xmlIdValue) {
+		FormComboboxElement formCombobox = ((OdfFileDom) this.ownerDocument).newOdfElement(FormComboboxElement.class);
+		formCombobox.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formCombobox);
+		return formCombobox;
+	}
+
+	/**
+	 * Create child element {@odf.element form:date}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:date}
+	 */
+	 public FormDateElement newFormDateElement(String xmlIdValue) {
+		FormDateElement formDate = ((OdfFileDom) this.ownerDocument).newOdfElement(FormDateElement.class);
+		formDate.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formDate);
+		return formDate;
+	}
+
+	/**
+	 * Create child element {@odf.element form:formatted-text}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:formatted-text}
+	 */
+	 public FormFormattedTextElement newFormFormattedTextElement(String xmlIdValue) {
+		FormFormattedTextElement formFormattedText = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFormattedTextElement.class);
+		formFormattedText.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formFormattedText);
+		return formFormattedText;
+	}
+
+	/**
+	 * Create child element {@odf.element form:listbox}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:listbox}
+	 */
+	 public FormListboxElement newFormListboxElement(String xmlIdValue) {
+		FormListboxElement formListbox = ((OdfFileDom) this.ownerDocument).newOdfElement(FormListboxElement.class);
+		formListbox.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formListbox);
+		return formListbox;
+	}
+
+	/**
+	 * Create child element {@odf.element form:number}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:number}
+	 */
+	 public FormNumberElement newFormNumberElement(String xmlIdValue) {
+		FormNumberElement formNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(FormNumberElement.class);
+		formNumber.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formNumber);
+		return formNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element form:text}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:text}
+	 */
+	 public FormTextElement newFormTextElement(String xmlIdValue) {
+		FormTextElement formText = ((OdfFileDom) this.ownerDocument).newOdfElement(FormTextElement.class);
+		formText.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formText);
+		return formText;
+	}
+
+	/**
+	 * Create child element {@odf.element form:textarea}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:textarea}
+	 */
+	 public FormTextareaElement newFormTextareaElement(String xmlIdValue) {
+		FormTextareaElement formTextarea = ((OdfFileDom) this.ownerDocument).newOdfElement(FormTextareaElement.class);
+		formTextarea.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formTextarea);
+		return formTextarea;
+	}
+
+	/**
+	 * Create child element {@odf.element form:time}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element form:time}
+	 */
+	 public FormTimeElement newFormTimeElement(String xmlIdValue) {
+		FormTimeElement formTime = ((OdfFileDom) this.ownerDocument).newOdfElement(FormTimeElement.class);
+		formTime.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formTime);
+		return formTime;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormComboboxElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormComboboxElement.java
new file mode 100644
index 0000000..5272d53
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormComboboxElement.java
@@ -0,0 +1,682 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormAutoCompleteAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDropdownAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormListSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormListSourceTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSourceCellRangeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:combobox}.
+ *
+ */
+public class FormComboboxElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "combobox");
+
+	/**
+	 * Create the instance of <code>FormComboboxElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormComboboxElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:combobox}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormAutoCompleteAttribute</code> , See {@odf.attribute form:auto-complete}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormAutoCompleteAttribute() {
+		FormAutoCompleteAttribute attr = (FormAutoCompleteAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "auto-complete");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormAutoCompleteAttribute</code> , See {@odf.attribute form:auto-complete}
+	 *
+	 * @param formAutoCompleteValue   The type is <code>Boolean</code>
+	 */
+	public void setFormAutoCompleteAttribute(Boolean formAutoCompleteValue) {
+		FormAutoCompleteAttribute attr = new FormAutoCompleteAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formAutoCompleteValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDropdownAttribute</code> , See {@odf.attribute form:dropdown}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDropdownAttribute() {
+		FormDropdownAttribute attr = (FormDropdownAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "dropdown");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDropdownAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDropdownAttribute</code> , See {@odf.attribute form:dropdown}
+	 *
+	 * @param formDropdownValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDropdownAttribute(Boolean formDropdownValue) {
+		FormDropdownAttribute attr = new FormDropdownAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDropdownValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormListSourceAttribute</code> , See {@odf.attribute form:list-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormListSourceAttribute() {
+		FormListSourceAttribute attr = (FormListSourceAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "list-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormListSourceAttribute</code> , See {@odf.attribute form:list-source}
+	 *
+	 * @param formListSourceValue   The type is <code>String</code>
+	 */
+	public void setFormListSourceAttribute(String formListSourceValue) {
+		FormListSourceAttribute attr = new FormListSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formListSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormListSourceTypeAttribute</code> , See {@odf.attribute form:list-source-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormListSourceTypeAttribute() {
+		FormListSourceTypeAttribute attr = (FormListSourceTypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "list-source-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormListSourceTypeAttribute</code> , See {@odf.attribute form:list-source-type}
+	 *
+	 * @param formListSourceTypeValue   The type is <code>String</code>
+	 */
+	public void setFormListSourceTypeAttribute(String formListSourceTypeValue) {
+		FormListSourceTypeAttribute attr = new FormListSourceTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formListSourceTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSizeAttribute</code> , See {@odf.attribute form:size}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormSizeAttribute() {
+		FormSizeAttribute attr = (FormSizeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "size");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSizeAttribute</code> , See {@odf.attribute form:size}
+	 *
+	 * @param formSizeValue   The type is <code>Integer</code>
+	 */
+	public void setFormSizeAttribute(Integer formSizeValue) {
+		FormSizeAttribute attr = new FormSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formSizeValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSourceCellRangeAttribute</code> , See {@odf.attribute form:source-cell-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormSourceCellRangeAttribute() {
+		FormSourceCellRangeAttribute attr = (FormSourceCellRangeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "source-cell-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSourceCellRangeAttribute</code> , See {@odf.attribute form:source-cell-range}
+	 *
+	 * @param formSourceCellRangeValue   The type is <code>String</code>
+	 */
+	public void setFormSourceCellRangeAttribute(String formSourceCellRangeValue) {
+		FormSourceCellRangeAttribute attr = new FormSourceCellRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formSourceCellRangeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:item}.
+	 *
+	 * @return the element {@odf.element form:item}
+	 */
+	public FormItemElement newFormItemElement() {
+		FormItemElement formItem = ((OdfFileDom) this.ownerDocument).newOdfElement(FormItemElement.class);
+		this.appendChild(formItem);
+		return formItem;
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormConnectionResourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormConnectionResourceElement.java
new file mode 100644
index 0000000..4e86eeb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormConnectionResourceElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:connection-resource}.
+ *
+ */
+public class FormConnectionResourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "connection-resource");
+
+	/**
+	 * Create the instance of <code>FormConnectionResourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormConnectionResourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:connection-resource}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormDateElement.java
new file mode 100644
index 0000000..2b4a655
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormDateElement.java
@@ -0,0 +1,646 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDelayForRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMinValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSpinButtonAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:date}.
+ *
+ */
+public class FormDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "date");
+
+	/**
+	 * Create the instance of <code>FormDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDelayForRepeatAttribute() {
+		FormDelayForRepeatAttribute attr = (FormDelayForRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "delay-for-repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormDelayForRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @param formDelayForRepeatValue   The type is <code>String</code>
+	 */
+	public void setFormDelayForRepeatAttribute(String formDelayForRepeatValue) {
+		FormDelayForRepeatAttribute attr = new FormDelayForRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDelayForRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMaxValueAttribute() {
+		FormMaxValueAttribute attr = (FormMaxValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @param formMaxValueValue   The type is <code>String</code>
+	 */
+	public void setFormMaxValueAttribute(String formMaxValueValue) {
+		FormMaxValueAttribute attr = new FormMaxValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMaxValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMinValueAttribute() {
+		FormMinValueAttribute attr = (FormMinValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "min-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @param formMinValueValue   The type is <code>String</code>
+	 */
+	public void setFormMinValueAttribute(String formMinValueValue) {
+		FormMinValueAttribute attr = new FormMinValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMinValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormRepeatAttribute() {
+		FormRepeatAttribute attr = (FormRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "repeat");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @param formRepeatValue   The type is <code>Boolean</code>
+	 */
+	public void setFormRepeatAttribute(Boolean formRepeatValue) {
+		FormRepeatAttribute attr = new FormRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formRepeatValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormSpinButtonAttribute() {
+		FormSpinButtonAttribute attr = (FormSpinButtonAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "spin-button");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormSpinButtonAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @param formSpinButtonValue   The type is <code>Boolean</code>
+	 */
+	public void setFormSpinButtonAttribute(Boolean formSpinButtonValue) {
+		FormSpinButtonAttribute attr = new FormSpinButtonAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formSpinButtonValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFileElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFileElement.java
new file mode 100644
index 0000000..d532f69
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFileElement.java
@@ -0,0 +1,471 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:file}.
+ *
+ */
+public class FormFileElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "file");
+
+	/**
+	 * Create the instance of <code>FormFileElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormFileElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:file}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFixedTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFixedTextElement.java
new file mode 100644
index 0000000..b6b0f5a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFixedTextElement.java
@@ -0,0 +1,371 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormForAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMultiLineAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:fixed-text}.
+ *
+ */
+public class FormFixedTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "fixed-text");
+
+	/**
+	 * Create the instance of <code>FormFixedTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormFixedTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:fixed-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormForAttribute</code> , See {@odf.attribute form:for}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormForAttribute() {
+		FormForAttribute attr = (FormForAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "for");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormForAttribute</code> , See {@odf.attribute form:for}
+	 *
+	 * @param formForValue   The type is <code>String</code>
+	 */
+	public void setFormForAttribute(String formForValue) {
+		FormForAttribute attr = new FormForAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formForValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMultiLineAttribute</code> , See {@odf.attribute form:multi-line}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormMultiLineAttribute() {
+		FormMultiLineAttribute attr = (FormMultiLineAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "multi-line");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormMultiLineAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMultiLineAttribute</code> , See {@odf.attribute form:multi-line}
+	 *
+	 * @param formMultiLineValue   The type is <code>Boolean</code>
+	 */
+	public void setFormMultiLineAttribute(Boolean formMultiLineValue) {
+		FormMultiLineAttribute attr = new FormMultiLineAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formMultiLineValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFormElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFormElement.java
new file mode 100644
index 0000000..156e847
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFormElement.java
@@ -0,0 +1,972 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormAllowDeletesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormAllowInsertsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormAllowUpdatesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormApplyFilterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCommandAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCommandTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDatasourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDetailFieldsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormEnctypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormEscapeProcessingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormFilterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIgnoreResultAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMasterFieldsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMethodAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNavigationModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabCycleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:form}.
+ *
+ */
+public class FormFormElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "form");
+
+	/**
+	 * Create the instance of <code>FormFormElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormFormElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:form}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormAllowDeletesAttribute</code> , See {@odf.attribute form:allow-deletes}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormAllowDeletesAttribute() {
+		FormAllowDeletesAttribute attr = (FormAllowDeletesAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "allow-deletes");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormAllowDeletesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormAllowDeletesAttribute</code> , See {@odf.attribute form:allow-deletes}
+	 *
+	 * @param formAllowDeletesValue   The type is <code>Boolean</code>
+	 */
+	public void setFormAllowDeletesAttribute(Boolean formAllowDeletesValue) {
+		FormAllowDeletesAttribute attr = new FormAllowDeletesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formAllowDeletesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormAllowInsertsAttribute</code> , See {@odf.attribute form:allow-inserts}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormAllowInsertsAttribute() {
+		FormAllowInsertsAttribute attr = (FormAllowInsertsAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "allow-inserts");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormAllowInsertsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormAllowInsertsAttribute</code> , See {@odf.attribute form:allow-inserts}
+	 *
+	 * @param formAllowInsertsValue   The type is <code>Boolean</code>
+	 */
+	public void setFormAllowInsertsAttribute(Boolean formAllowInsertsValue) {
+		FormAllowInsertsAttribute attr = new FormAllowInsertsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formAllowInsertsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormAllowUpdatesAttribute</code> , See {@odf.attribute form:allow-updates}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormAllowUpdatesAttribute() {
+		FormAllowUpdatesAttribute attr = (FormAllowUpdatesAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "allow-updates");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormAllowUpdatesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormAllowUpdatesAttribute</code> , See {@odf.attribute form:allow-updates}
+	 *
+	 * @param formAllowUpdatesValue   The type is <code>Boolean</code>
+	 */
+	public void setFormAllowUpdatesAttribute(Boolean formAllowUpdatesValue) {
+		FormAllowUpdatesAttribute attr = new FormAllowUpdatesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formAllowUpdatesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormApplyFilterAttribute</code> , See {@odf.attribute form:apply-filter}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormApplyFilterAttribute() {
+		FormApplyFilterAttribute attr = (FormApplyFilterAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "apply-filter");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormApplyFilterAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormApplyFilterAttribute</code> , See {@odf.attribute form:apply-filter}
+	 *
+	 * @param formApplyFilterValue   The type is <code>Boolean</code>
+	 */
+	public void setFormApplyFilterAttribute(Boolean formApplyFilterValue) {
+		FormApplyFilterAttribute attr = new FormApplyFilterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formApplyFilterValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCommandAttribute</code> , See {@odf.attribute form:command}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCommandAttribute() {
+		FormCommandAttribute attr = (FormCommandAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "command");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCommandAttribute</code> , See {@odf.attribute form:command}
+	 *
+	 * @param formCommandValue   The type is <code>String</code>
+	 */
+	public void setFormCommandAttribute(String formCommandValue) {
+		FormCommandAttribute attr = new FormCommandAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCommandValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCommandTypeAttribute</code> , See {@odf.attribute form:command-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCommandTypeAttribute() {
+		FormCommandTypeAttribute attr = (FormCommandTypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "command-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormCommandTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCommandTypeAttribute</code> , See {@odf.attribute form:command-type}
+	 *
+	 * @param formCommandTypeValue   The type is <code>String</code>
+	 */
+	public void setFormCommandTypeAttribute(String formCommandTypeValue) {
+		FormCommandTypeAttribute attr = new FormCommandTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCommandTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDatasourceAttribute</code> , See {@odf.attribute form:datasource}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDatasourceAttribute() {
+		FormDatasourceAttribute attr = (FormDatasourceAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "datasource");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDatasourceAttribute</code> , See {@odf.attribute form:datasource}
+	 *
+	 * @param formDatasourceValue   The type is <code>String</code>
+	 */
+	public void setFormDatasourceAttribute(String formDatasourceValue) {
+		FormDatasourceAttribute attr = new FormDatasourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDatasourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDetailFieldsAttribute</code> , See {@odf.attribute form:detail-fields}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDetailFieldsAttribute() {
+		FormDetailFieldsAttribute attr = (FormDetailFieldsAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "detail-fields");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDetailFieldsAttribute</code> , See {@odf.attribute form:detail-fields}
+	 *
+	 * @param formDetailFieldsValue   The type is <code>String</code>
+	 */
+	public void setFormDetailFieldsAttribute(String formDetailFieldsValue) {
+		FormDetailFieldsAttribute attr = new FormDetailFieldsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDetailFieldsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormEnctypeAttribute</code> , See {@odf.attribute form:enctype}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormEnctypeAttribute() {
+		FormEnctypeAttribute attr = (FormEnctypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "enctype");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormEnctypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormEnctypeAttribute</code> , See {@odf.attribute form:enctype}
+	 *
+	 * @param formEnctypeValue   The type is <code>String</code>
+	 */
+	public void setFormEnctypeAttribute(String formEnctypeValue) {
+		FormEnctypeAttribute attr = new FormEnctypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formEnctypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormEscapeProcessingAttribute</code> , See {@odf.attribute form:escape-processing}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormEscapeProcessingAttribute() {
+		FormEscapeProcessingAttribute attr = (FormEscapeProcessingAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "escape-processing");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormEscapeProcessingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormEscapeProcessingAttribute</code> , See {@odf.attribute form:escape-processing}
+	 *
+	 * @param formEscapeProcessingValue   The type is <code>Boolean</code>
+	 */
+	public void setFormEscapeProcessingAttribute(Boolean formEscapeProcessingValue) {
+		FormEscapeProcessingAttribute attr = new FormEscapeProcessingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formEscapeProcessingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormFilterAttribute</code> , See {@odf.attribute form:filter}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormFilterAttribute() {
+		FormFilterAttribute attr = (FormFilterAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "filter");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormFilterAttribute</code> , See {@odf.attribute form:filter}
+	 *
+	 * @param formFilterValue   The type is <code>String</code>
+	 */
+	public void setFormFilterAttribute(String formFilterValue) {
+		FormFilterAttribute attr = new FormFilterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formFilterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIgnoreResultAttribute</code> , See {@odf.attribute form:ignore-result}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormIgnoreResultAttribute() {
+		FormIgnoreResultAttribute attr = (FormIgnoreResultAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "ignore-result");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormIgnoreResultAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIgnoreResultAttribute</code> , See {@odf.attribute form:ignore-result}
+	 *
+	 * @param formIgnoreResultValue   The type is <code>Boolean</code>
+	 */
+	public void setFormIgnoreResultAttribute(Boolean formIgnoreResultValue) {
+		FormIgnoreResultAttribute attr = new FormIgnoreResultAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formIgnoreResultValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMasterFieldsAttribute</code> , See {@odf.attribute form:master-fields}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMasterFieldsAttribute() {
+		FormMasterFieldsAttribute attr = (FormMasterFieldsAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "master-fields");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMasterFieldsAttribute</code> , See {@odf.attribute form:master-fields}
+	 *
+	 * @param formMasterFieldsValue   The type is <code>String</code>
+	 */
+	public void setFormMasterFieldsAttribute(String formMasterFieldsValue) {
+		FormMasterFieldsAttribute attr = new FormMasterFieldsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMasterFieldsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMethodAttribute</code> , See {@odf.attribute form:method}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMethodAttribute() {
+		FormMethodAttribute attr = (FormMethodAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "method");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormMethodAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMethodAttribute</code> , See {@odf.attribute form:method}
+	 *
+	 * @param formMethodValue   The type is <code>String</code>
+	 */
+	public void setFormMethodAttribute(String formMethodValue) {
+		FormMethodAttribute attr = new FormMethodAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMethodValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNavigationModeAttribute</code> , See {@odf.attribute form:navigation-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNavigationModeAttribute() {
+		FormNavigationModeAttribute attr = (FormNavigationModeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "navigation-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNavigationModeAttribute</code> , See {@odf.attribute form:navigation-mode}
+	 *
+	 * @param formNavigationModeValue   The type is <code>String</code>
+	 */
+	public void setFormNavigationModeAttribute(String formNavigationModeValue) {
+		FormNavigationModeAttribute attr = new FormNavigationModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNavigationModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormOrderAttribute</code> , See {@odf.attribute form:order}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormOrderAttribute() {
+		FormOrderAttribute attr = (FormOrderAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "order");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormOrderAttribute</code> , See {@odf.attribute form:order}
+	 *
+	 * @param formOrderValue   The type is <code>String</code>
+	 */
+	public void setFormOrderAttribute(String formOrderValue) {
+		FormOrderAttribute attr = new FormOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formOrderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabCycleAttribute</code> , See {@odf.attribute form:tab-cycle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTabCycleAttribute() {
+		FormTabCycleAttribute attr = (FormTabCycleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-cycle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabCycleAttribute</code> , See {@odf.attribute form:tab-cycle}
+	 *
+	 * @param formTabCycleValue   The type is <code>String</code>
+	 */
+	public void setFormTabCycleAttribute(String formTabCycleValue) {
+		FormTabCycleAttribute attr = new FormTabCycleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTabCycleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameAttribute</code> , See {@odf.attribute office:target-frame}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameAttribute() {
+		OfficeTargetFrameAttribute attr = (OfficeTargetFrameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return OfficeTargetFrameAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameAttribute</code> , See {@odf.attribute office:target-frame}
+	 *
+	 * @param officeTargetFrameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameAttribute(String officeTargetFrameValue) {
+		OfficeTargetFrameAttribute attr = new OfficeTargetFrameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:button}.
+	 *
+	 * @param formImagePositionValue  the <code>String</code> value of <code>FormImagePositionAttribute</code>, see {@odf.attribute  form:image-position} at specification
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:button}
+	 */
+	 public FormButtonElement newFormButtonElement(String formImagePositionValue, String xmlIdValue) {
+		FormButtonElement formButton = ((OdfFileDom) this.ownerDocument).newOdfElement(FormButtonElement.class);
+		formButton.setFormImagePositionAttribute(formImagePositionValue);
+		formButton.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formButton);
+		return formButton;
+	}
+
+	/**
+	 * Create child element {@odf.element form:checkbox}.
+	 *
+	 * @param formImagePositionValue  the <code>String</code> value of <code>FormImagePositionAttribute</code>, see {@odf.attribute  form:image-position} at specification
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:checkbox}
+	 */
+	 public FormCheckboxElement newFormCheckboxElement(String formImagePositionValue, String xmlIdValue) {
+		FormCheckboxElement formCheckbox = ((OdfFileDom) this.ownerDocument).newOdfElement(FormCheckboxElement.class);
+		formCheckbox.setFormImagePositionAttribute(formImagePositionValue);
+		formCheckbox.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formCheckbox);
+		return formCheckbox;
+	}
+
+	/**
+	 * Create child element {@odf.element form:combobox}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:combobox}
+	 */
+	 public FormComboboxElement newFormComboboxElement(String xmlIdValue) {
+		FormComboboxElement formCombobox = ((OdfFileDom) this.ownerDocument).newOdfElement(FormComboboxElement.class);
+		formCombobox.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formCombobox);
+		return formCombobox;
+	}
+
+	/**
+	 * Create child element {@odf.element form:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @return the element {@odf.element form:connection-resource}
+	 */
+	 public FormConnectionResourceElement newFormConnectionResourceElement(String xlinkHrefValue) {
+		FormConnectionResourceElement formConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(FormConnectionResourceElement.class);
+		formConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(formConnectionResource);
+		return formConnectionResource;
+	}
+
+	/**
+	 * Create child element {@odf.element form:date}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:date}
+	 */
+	 public FormDateElement newFormDateElement(String xmlIdValue) {
+		FormDateElement formDate = ((OdfFileDom) this.ownerDocument).newOdfElement(FormDateElement.class);
+		formDate.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formDate);
+		return formDate;
+	}
+
+	/**
+	 * Create child element {@odf.element form:file}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:file}
+	 */
+	 public FormFileElement newFormFileElement(String xmlIdValue) {
+		FormFileElement formFile = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFileElement.class);
+		formFile.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formFile);
+		return formFile;
+	}
+
+	/**
+	 * Create child element {@odf.element form:fixed-text}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:fixed-text}
+	 */
+	 public FormFixedTextElement newFormFixedTextElement(String xmlIdValue) {
+		FormFixedTextElement formFixedText = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFixedTextElement.class);
+		formFixedText.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formFixedText);
+		return formFixedText;
+	}
+
+	/**
+	 * Create child element {@odf.element form:form}.
+	 *
+	 * @return the element {@odf.element form:form}
+	 */
+	public FormFormElement newFormFormElement() {
+		FormFormElement formForm = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFormElement.class);
+		this.appendChild(formForm);
+		return formForm;
+	}
+
+	/**
+	 * Create child element {@odf.element form:formatted-text}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:formatted-text}
+	 */
+	 public FormFormattedTextElement newFormFormattedTextElement(String xmlIdValue) {
+		FormFormattedTextElement formFormattedText = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFormattedTextElement.class);
+		formFormattedText.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formFormattedText);
+		return formFormattedText;
+	}
+
+	/**
+	 * Create child element {@odf.element form:frame}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:frame}
+	 */
+	 public FormFrameElement newFormFrameElement(String xmlIdValue) {
+		FormFrameElement formFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFrameElement.class);
+		formFrame.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formFrame);
+		return formFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element form:generic-control}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:generic-control}
+	 */
+	 public FormGenericControlElement newFormGenericControlElement(String xmlIdValue) {
+		FormGenericControlElement formGenericControl = ((OdfFileDom) this.ownerDocument).newOdfElement(FormGenericControlElement.class);
+		formGenericControl.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formGenericControl);
+		return formGenericControl;
+	}
+
+	/**
+	 * Create child element {@odf.element form:grid}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:grid}
+	 */
+	 public FormGridElement newFormGridElement(String xmlIdValue) {
+		FormGridElement formGrid = ((OdfFileDom) this.ownerDocument).newOdfElement(FormGridElement.class);
+		formGrid.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formGrid);
+		return formGrid;
+	}
+
+	/**
+	 * Create child element {@odf.element form:hidden}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:hidden}
+	 */
+	 public FormHiddenElement newFormHiddenElement(String xmlIdValue) {
+		FormHiddenElement formHidden = ((OdfFileDom) this.ownerDocument).newOdfElement(FormHiddenElement.class);
+		formHidden.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formHidden);
+		return formHidden;
+	}
+
+	/**
+	 * Create child element {@odf.element form:image}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:image}
+	 */
+	 public FormImageElement newFormImageElement(String xmlIdValue) {
+		FormImageElement formImage = ((OdfFileDom) this.ownerDocument).newOdfElement(FormImageElement.class);
+		formImage.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formImage);
+		return formImage;
+	}
+
+	/**
+	 * Create child element {@odf.element form:image-frame}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:image-frame}
+	 */
+	 public FormImageFrameElement newFormImageFrameElement(String xmlIdValue) {
+		FormImageFrameElement formImageFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(FormImageFrameElement.class);
+		formImageFrame.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formImageFrame);
+		return formImageFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element form:listbox}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:listbox}
+	 */
+	 public FormListboxElement newFormListboxElement(String xmlIdValue) {
+		FormListboxElement formListbox = ((OdfFileDom) this.ownerDocument).newOdfElement(FormListboxElement.class);
+		formListbox.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formListbox);
+		return formListbox;
+	}
+
+	/**
+	 * Create child element {@odf.element form:number}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:number}
+	 */
+	 public FormNumberElement newFormNumberElement(String xmlIdValue) {
+		FormNumberElement formNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(FormNumberElement.class);
+		formNumber.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formNumber);
+		return formNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element form:password}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:password}
+	 */
+	 public FormPasswordElement newFormPasswordElement(String xmlIdValue) {
+		FormPasswordElement formPassword = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPasswordElement.class);
+		formPassword.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formPassword);
+		return formPassword;
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element form:radio}.
+	 *
+	 * @param formImagePositionValue  the <code>String</code> value of <code>FormImagePositionAttribute</code>, see {@odf.attribute  form:image-position} at specification
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:radio}
+	 */
+	 public FormRadioElement newFormRadioElement(String formImagePositionValue, String xmlIdValue) {
+		FormRadioElement formRadio = ((OdfFileDom) this.ownerDocument).newOdfElement(FormRadioElement.class);
+		formRadio.setFormImagePositionAttribute(formImagePositionValue);
+		formRadio.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formRadio);
+		return formRadio;
+	}
+
+	/**
+	 * Create child element {@odf.element form:text}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:text}
+	 */
+	 public FormTextElement newFormTextElement(String xmlIdValue) {
+		FormTextElement formText = ((OdfFileDom) this.ownerDocument).newOdfElement(FormTextElement.class);
+		formText.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formText);
+		return formText;
+	}
+
+	/**
+	 * Create child element {@odf.element form:textarea}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:textarea}
+	 */
+	 public FormTextareaElement newFormTextareaElement(String xmlIdValue) {
+		FormTextareaElement formTextarea = ((OdfFileDom) this.ownerDocument).newOdfElement(FormTextareaElement.class);
+		formTextarea.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formTextarea);
+		return formTextarea;
+	}
+
+	/**
+	 * Create child element {@odf.element form:time}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:time}
+	 */
+	 public FormTimeElement newFormTimeElement(String xmlIdValue) {
+		FormTimeElement formTime = ((OdfFileDom) this.ownerDocument).newOdfElement(FormTimeElement.class);
+		formTime.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formTime);
+		return formTime;
+	}
+
+	/**
+	 * Create child element {@odf.element form:value-range}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element form:value-range}
+	 */
+	 public FormValueRangeElement newFormValueRangeElement(String xmlIdValue) {
+		FormValueRangeElement formValueRange = ((OdfFileDom) this.ownerDocument).newOdfElement(FormValueRangeElement.class);
+		formValueRange.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(formValueRange);
+		return formValueRange;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFormattedTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFormattedTextElement.java
new file mode 100644
index 0000000..366dfa8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFormattedTextElement.java
@@ -0,0 +1,671 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDelayForRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMinValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSpinButtonAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValidationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:formatted-text}.
+ *
+ */
+public class FormFormattedTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "formatted-text");
+
+	/**
+	 * Create the instance of <code>FormFormattedTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormFormattedTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:formatted-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDelayForRepeatAttribute() {
+		FormDelayForRepeatAttribute attr = (FormDelayForRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "delay-for-repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormDelayForRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @param formDelayForRepeatValue   The type is <code>String</code>
+	 */
+	public void setFormDelayForRepeatAttribute(String formDelayForRepeatValue) {
+		FormDelayForRepeatAttribute attr = new FormDelayForRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDelayForRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMaxValueAttribute() {
+		FormMaxValueAttribute attr = (FormMaxValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @param formMaxValueValue   The type is <code>String</code>
+	 */
+	public void setFormMaxValueAttribute(String formMaxValueValue) {
+		FormMaxValueAttribute attr = new FormMaxValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMaxValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMinValueAttribute() {
+		FormMinValueAttribute attr = (FormMinValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "min-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @param formMinValueValue   The type is <code>String</code>
+	 */
+	public void setFormMinValueAttribute(String formMinValueValue) {
+		FormMinValueAttribute attr = new FormMinValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMinValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormRepeatAttribute() {
+		FormRepeatAttribute attr = (FormRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "repeat");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @param formRepeatValue   The type is <code>Boolean</code>
+	 */
+	public void setFormRepeatAttribute(Boolean formRepeatValue) {
+		FormRepeatAttribute attr = new FormRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formRepeatValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormSpinButtonAttribute() {
+		FormSpinButtonAttribute attr = (FormSpinButtonAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "spin-button");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormSpinButtonAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @param formSpinButtonValue   The type is <code>Boolean</code>
+	 */
+	public void setFormSpinButtonAttribute(Boolean formSpinButtonValue) {
+		FormSpinButtonAttribute attr = new FormSpinButtonAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formSpinButtonValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValidationAttribute</code> , See {@odf.attribute form:validation}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormValidationAttribute() {
+		FormValidationAttribute attr = (FormValidationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "validation");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormValidationAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValidationAttribute</code> , See {@odf.attribute form:validation}
+	 *
+	 * @param formValidationValue   The type is <code>Boolean</code>
+	 */
+	public void setFormValidationAttribute(Boolean formValidationValue) {
+		FormValidationAttribute attr = new FormValidationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formValidationValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFrameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFrameElement.java
new file mode 100644
index 0000000..bb77d79
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormFrameElement.java
@@ -0,0 +1,346 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormForAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:frame}.
+ *
+ */
+public class FormFrameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "frame");
+
+	/**
+	 * Create the instance of <code>FormFrameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormFrameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:frame}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormForAttribute</code> , See {@odf.attribute form:for}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormForAttribute() {
+		FormForAttribute attr = (FormForAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "for");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormForAttribute</code> , See {@odf.attribute form:for}
+	 *
+	 * @param formForValue   The type is <code>String</code>
+	 */
+	public void setFormForAttribute(String formForValue) {
+		FormForAttribute attr = new FormForAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formForValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormGenericControlElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormGenericControlElement.java
new file mode 100644
index 0000000..8667323
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormGenericControlElement.java
@@ -0,0 +1,221 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:generic-control}.
+ *
+ */
+public class FormGenericControlElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "generic-control");
+
+	/**
+	 * Create the instance of <code>FormGenericControlElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormGenericControlElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:generic-control}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormGridElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormGridElement.java
new file mode 100644
index 0000000..67b1eac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormGridElement.java
@@ -0,0 +1,357 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:grid}.
+ *
+ */
+public class FormGridElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "grid");
+
+	/**
+	 * Create the instance of <code>FormGridElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormGridElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:grid}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:column}.
+	 *
+	 * @return the element {@odf.element form:column}
+	 */
+	public FormColumnElement newFormColumnElement() {
+		FormColumnElement formColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(FormColumnElement.class);
+		this.appendChild(formColumn);
+		return formColumn;
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormHiddenElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormHiddenElement.java
new file mode 100644
index 0000000..169687f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormHiddenElement.java
@@ -0,0 +1,246 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:hidden}.
+ *
+ */
+public class FormHiddenElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "hidden");
+
+	/**
+	 * Create the instance of <code>FormHiddenElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormHiddenElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:hidden}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormImageElement.java
new file mode 100644
index 0000000..b1cbaab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormImageElement.java
@@ -0,0 +1,471 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormButtonTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImageDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:image}.
+ *
+ */
+public class FormImageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "image");
+
+	/**
+	 * Create the instance of <code>FormImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormButtonTypeAttribute</code> , See {@odf.attribute form:button-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormButtonTypeAttribute() {
+		FormButtonTypeAttribute attr = (FormButtonTypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "button-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormButtonTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormButtonTypeAttribute</code> , See {@odf.attribute form:button-type}
+	 *
+	 * @param formButtonTypeValue   The type is <code>String</code>
+	 */
+	public void setFormButtonTypeAttribute(String formButtonTypeValue) {
+		FormButtonTypeAttribute attr = new FormButtonTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formButtonTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImageDataAttribute</code> , See {@odf.attribute form:image-data}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImageDataAttribute() {
+		FormImageDataAttribute attr = (FormImageDataAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-data");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImageDataAttribute</code> , See {@odf.attribute form:image-data}
+	 *
+	 * @param formImageDataValue   The type is <code>String</code>
+	 */
+	public void setFormImageDataAttribute(String formImageDataValue) {
+		FormImageDataAttribute attr = new FormImageDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImageDataValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameAttribute</code> , See {@odf.attribute office:target-frame}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameAttribute() {
+		OfficeTargetFrameAttribute attr = (OfficeTargetFrameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return OfficeTargetFrameAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameAttribute</code> , See {@odf.attribute office:target-frame}
+	 *
+	 * @param officeTargetFrameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameAttribute(String officeTargetFrameValue) {
+		OfficeTargetFrameAttribute attr = new OfficeTargetFrameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormImageFrameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormImageFrameElement.java
new file mode 100644
index 0000000..d203db3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormImageFrameElement.java
@@ -0,0 +1,371 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImageDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:image-frame}.
+ *
+ */
+public class FormImageFrameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "image-frame");
+
+	/**
+	 * Create the instance of <code>FormImageFrameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormImageFrameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:image-frame}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImageDataAttribute</code> , See {@odf.attribute form:image-data}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImageDataAttribute() {
+		FormImageDataAttribute attr = (FormImageDataAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-data");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImageDataAttribute</code> , See {@odf.attribute form:image-data}
+	 *
+	 * @param formImageDataValue   The type is <code>String</code>
+	 */
+	public void setFormImageDataAttribute(String formImageDataValue) {
+		FormImageDataAttribute attr = new FormImageDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImageDataValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormItemElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormItemElement.java
new file mode 100644
index 0000000..ee56e66
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormItemElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:item}.
+ *
+ */
+public class FormItemElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "item");
+
+	/**
+	 * Create the instance of <code>FormItemElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormItemElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:item}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListPropertyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListPropertyElement.java
new file mode 100644
index 0000000..d7e658d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListPropertyElement.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPropertyNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:list-property}.
+ *
+ */
+public class FormListPropertyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "list-property");
+
+	/**
+	 * Create the instance of <code>FormListPropertyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormListPropertyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:list-property}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPropertyNameAttribute</code> , See {@odf.attribute form:property-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormPropertyNameAttribute() {
+		FormPropertyNameAttribute attr = (FormPropertyNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "property-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPropertyNameAttribute</code> , See {@odf.attribute form:property-name}
+	 *
+	 * @param formPropertyNameValue   The type is <code>String</code>
+	 */
+	public void setFormPropertyNameAttribute(String formPropertyNameValue) {
+		FormPropertyNameAttribute attr = new FormPropertyNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formPropertyNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:list-value}.
+	 *
+	 * @param officeBooleanValueValue  the <code>Boolean</code> value of <code>OfficeBooleanValueAttribute</code>, see {@odf.attribute  office:boolean-value} at specification
+	 * @param officeDateValueValue  the <code>String</code> value of <code>OfficeDateValueAttribute</code>, see {@odf.attribute  office:date-value} at specification
+	 * @param officeStringValueValue  the <code>String</code> value of <code>OfficeStringValueAttribute</code>, see {@odf.attribute  office:string-value} at specification
+	 * @param officeTimeValueValue  the <code>String</code> value of <code>OfficeTimeValueAttribute</code>, see {@odf.attribute  office:time-value} at specification
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @return the element {@odf.element form:list-value}
+	 */
+	 public FormListValueElement newFormListValueElement(boolean officeBooleanValueValue, String officeDateValueValue, String officeStringValueValue, String officeTimeValueValue, double officeValueValue) {
+		FormListValueElement formListValue = ((OdfFileDom) this.ownerDocument).newOdfElement(FormListValueElement.class);
+		formListValue.setOfficeBooleanValueAttribute(officeBooleanValueValue);
+		formListValue.setOfficeDateValueAttribute(officeDateValueValue);
+		formListValue.setOfficeStringValueAttribute(officeStringValueValue);
+		formListValue.setOfficeTimeValueAttribute(officeTimeValueValue);
+		formListValue.setOfficeValueAttribute(officeValueValue);
+		this.appendChild(formListValue);
+		return formListValue;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListValueElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListValueElement.java
new file mode 100644
index 0000000..20a9031
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListValueElement.java
@@ -0,0 +1,231 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:list-value}.
+ *
+ */
+public class FormListValueElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "list-value");
+
+	/**
+	 * Create the instance of <code>FormListValueElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormListValueElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:list-value}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListboxElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListboxElement.java
new file mode 100644
index 0000000..e1452c2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormListboxElement.java
@@ -0,0 +1,632 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormBoundColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDropdownAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormListLinkageTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormListSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormListSourceTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMultipleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSourceCellRangeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormXformsListSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:listbox}.
+ *
+ */
+public class FormListboxElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "listbox");
+
+	/**
+	 * Create the instance of <code>FormListboxElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormListboxElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:listbox}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormBoundColumnAttribute</code> , See {@odf.attribute form:bound-column}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormBoundColumnAttribute() {
+		FormBoundColumnAttribute attr = (FormBoundColumnAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "bound-column");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormBoundColumnAttribute</code> , See {@odf.attribute form:bound-column}
+	 *
+	 * @param formBoundColumnValue   The type is <code>String</code>
+	 */
+	public void setFormBoundColumnAttribute(String formBoundColumnValue) {
+		FormBoundColumnAttribute attr = new FormBoundColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formBoundColumnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDropdownAttribute</code> , See {@odf.attribute form:dropdown}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDropdownAttribute() {
+		FormDropdownAttribute attr = (FormDropdownAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "dropdown");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDropdownAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDropdownAttribute</code> , See {@odf.attribute form:dropdown}
+	 *
+	 * @param formDropdownValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDropdownAttribute(Boolean formDropdownValue) {
+		FormDropdownAttribute attr = new FormDropdownAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDropdownValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormListLinkageTypeAttribute</code> , See {@odf.attribute form:list-linkage-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormListLinkageTypeAttribute() {
+		FormListLinkageTypeAttribute attr = (FormListLinkageTypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "list-linkage-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormListLinkageTypeAttribute</code> , See {@odf.attribute form:list-linkage-type}
+	 *
+	 * @param formListLinkageTypeValue   The type is <code>String</code>
+	 */
+	public void setFormListLinkageTypeAttribute(String formListLinkageTypeValue) {
+		FormListLinkageTypeAttribute attr = new FormListLinkageTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formListLinkageTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormListSourceAttribute</code> , See {@odf.attribute form:list-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormListSourceAttribute() {
+		FormListSourceAttribute attr = (FormListSourceAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "list-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormListSourceAttribute</code> , See {@odf.attribute form:list-source}
+	 *
+	 * @param formListSourceValue   The type is <code>String</code>
+	 */
+	public void setFormListSourceAttribute(String formListSourceValue) {
+		FormListSourceAttribute attr = new FormListSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formListSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormListSourceTypeAttribute</code> , See {@odf.attribute form:list-source-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormListSourceTypeAttribute() {
+		FormListSourceTypeAttribute attr = (FormListSourceTypeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "list-source-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormListSourceTypeAttribute</code> , See {@odf.attribute form:list-source-type}
+	 *
+	 * @param formListSourceTypeValue   The type is <code>String</code>
+	 */
+	public void setFormListSourceTypeAttribute(String formListSourceTypeValue) {
+		FormListSourceTypeAttribute attr = new FormListSourceTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formListSourceTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMultipleAttribute</code> , See {@odf.attribute form:multiple}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormMultipleAttribute() {
+		FormMultipleAttribute attr = (FormMultipleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "multiple");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormMultipleAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMultipleAttribute</code> , See {@odf.attribute form:multiple}
+	 *
+	 * @param formMultipleValue   The type is <code>Boolean</code>
+	 */
+	public void setFormMultipleAttribute(Boolean formMultipleValue) {
+		FormMultipleAttribute attr = new FormMultipleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formMultipleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSizeAttribute</code> , See {@odf.attribute form:size}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormSizeAttribute() {
+		FormSizeAttribute attr = (FormSizeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "size");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSizeAttribute</code> , See {@odf.attribute form:size}
+	 *
+	 * @param formSizeValue   The type is <code>Integer</code>
+	 */
+	public void setFormSizeAttribute(Integer formSizeValue) {
+		FormSizeAttribute attr = new FormSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formSizeValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSourceCellRangeAttribute</code> , See {@odf.attribute form:source-cell-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormSourceCellRangeAttribute() {
+		FormSourceCellRangeAttribute attr = (FormSourceCellRangeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "source-cell-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSourceCellRangeAttribute</code> , See {@odf.attribute form:source-cell-range}
+	 *
+	 * @param formSourceCellRangeValue   The type is <code>String</code>
+	 */
+	public void setFormSourceCellRangeAttribute(String formSourceCellRangeValue) {
+		FormSourceCellRangeAttribute attr = new FormSourceCellRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formSourceCellRangeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormXformsListSourceAttribute</code> , See {@odf.attribute form:xforms-list-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormXformsListSourceAttribute() {
+		FormXformsListSourceAttribute attr = (FormXformsListSourceAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "xforms-list-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormXformsListSourceAttribute</code> , See {@odf.attribute form:xforms-list-source}
+	 *
+	 * @param formXformsListSourceValue   The type is <code>String</code>
+	 */
+	public void setFormXformsListSourceAttribute(String formXformsListSourceValue) {
+		FormXformsListSourceAttribute attr = new FormXformsListSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formXformsListSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:option}.
+	 *
+	 * @return the element {@odf.element form:option}
+	 */
+	public FormOptionElement newFormOptionElement() {
+		FormOptionElement formOption = ((OdfFileDom) this.ownerDocument).newOdfElement(FormOptionElement.class);
+		this.appendChild(formOption);
+		return formOption;
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormNumberElement.java
new file mode 100644
index 0000000..87b075b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormNumberElement.java
@@ -0,0 +1,646 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDelayForRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMinValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSpinButtonAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:number}.
+ *
+ */
+public class FormNumberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "number");
+
+	/**
+	 * Create the instance of <code>FormNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDelayForRepeatAttribute() {
+		FormDelayForRepeatAttribute attr = (FormDelayForRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "delay-for-repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormDelayForRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @param formDelayForRepeatValue   The type is <code>String</code>
+	 */
+	public void setFormDelayForRepeatAttribute(String formDelayForRepeatValue) {
+		FormDelayForRepeatAttribute attr = new FormDelayForRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDelayForRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMaxValueAttribute() {
+		FormMaxValueAttribute attr = (FormMaxValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @param formMaxValueValue   The type is <code>String</code>
+	 */
+	public void setFormMaxValueAttribute(String formMaxValueValue) {
+		FormMaxValueAttribute attr = new FormMaxValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMaxValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMinValueAttribute() {
+		FormMinValueAttribute attr = (FormMinValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "min-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @param formMinValueValue   The type is <code>String</code>
+	 */
+	public void setFormMinValueAttribute(String formMinValueValue) {
+		FormMinValueAttribute attr = new FormMinValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMinValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormRepeatAttribute() {
+		FormRepeatAttribute attr = (FormRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "repeat");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @param formRepeatValue   The type is <code>Boolean</code>
+	 */
+	public void setFormRepeatAttribute(Boolean formRepeatValue) {
+		FormRepeatAttribute attr = new FormRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formRepeatValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormSpinButtonAttribute() {
+		FormSpinButtonAttribute attr = (FormSpinButtonAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "spin-button");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormSpinButtonAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @param formSpinButtonValue   The type is <code>Boolean</code>
+	 */
+	public void setFormSpinButtonAttribute(Boolean formSpinButtonValue) {
+		FormSpinButtonAttribute attr = new FormSpinButtonAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formSpinButtonValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormOptionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormOptionElement.java
new file mode 100644
index 0000000..02c6045
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormOptionElement.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentSelectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSelectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:option}.
+ *
+ */
+public class FormOptionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "option");
+
+	/**
+	 * Create the instance of <code>FormOptionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormOptionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:option}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentSelectedAttribute</code> , See {@odf.attribute form:current-selected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormCurrentSelectedAttribute() {
+		FormCurrentSelectedAttribute attr = (FormCurrentSelectedAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-selected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormCurrentSelectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentSelectedAttribute</code> , See {@odf.attribute form:current-selected}
+	 *
+	 * @param formCurrentSelectedValue   The type is <code>Boolean</code>
+	 */
+	public void setFormCurrentSelectedAttribute(Boolean formCurrentSelectedValue) {
+		FormCurrentSelectedAttribute attr = new FormCurrentSelectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formCurrentSelectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSelectedAttribute</code> , See {@odf.attribute form:selected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormSelectedAttribute() {
+		FormSelectedAttribute attr = (FormSelectedAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "selected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormSelectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSelectedAttribute</code> , See {@odf.attribute form:selected}
+	 *
+	 * @param formSelectedValue   The type is <code>Boolean</code>
+	 */
+	public void setFormSelectedAttribute(Boolean formSelectedValue) {
+		FormSelectedAttribute attr = new FormSelectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formSelectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPasswordElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPasswordElement.java
new file mode 100644
index 0000000..60fc406
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPasswordElement.java
@@ -0,0 +1,471 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormEchoCharAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:password}.
+ *
+ */
+public class FormPasswordElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "password");
+
+	/**
+	 * Create the instance of <code>FormPasswordElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormPasswordElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:password}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormEchoCharAttribute</code> , See {@odf.attribute form:echo-char}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormEchoCharAttribute() {
+		FormEchoCharAttribute attr = (FormEchoCharAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "echo-char");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormEchoCharAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormEchoCharAttribute</code> , See {@odf.attribute form:echo-char}
+	 *
+	 * @param formEchoCharValue   The type is <code>String</code>
+	 */
+	public void setFormEchoCharAttribute(String formEchoCharValue) {
+		FormEchoCharAttribute attr = new FormEchoCharAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formEchoCharValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPropertiesElement.java
new file mode 100644
index 0000000..43f07b6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPropertiesElement.java
@@ -0,0 +1,103 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:properties}.
+ *
+ */
+public class FormPropertiesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "properties");
+
+	/**
+	 * Create the instance of <code>FormPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element form:list-property}.
+	 *
+	 * @param formPropertyNameValue  the <code>String</code> value of <code>FormPropertyNameAttribute</code>, see {@odf.attribute  form:property-name} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element form:list-property}
+	 */
+	 public FormListPropertyElement newFormListPropertyElement(String formPropertyNameValue, String officeValueTypeValue) {
+		FormListPropertyElement formListProperty = ((OdfFileDom) this.ownerDocument).newOdfElement(FormListPropertyElement.class);
+		formListProperty.setFormPropertyNameAttribute(formPropertyNameValue);
+		formListProperty.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(formListProperty);
+		return formListProperty;
+	}
+
+	/**
+	 * Create child element {@odf.element form:property}.
+	 *
+	 * @param formPropertyNameValue  the <code>String</code> value of <code>FormPropertyNameAttribute</code>, see {@odf.attribute  form:property-name} at specification
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element form:property}
+	 */
+	 public FormPropertyElement newFormPropertyElement(String formPropertyNameValue, double officeValueValue, String officeValueTypeValue) {
+		FormPropertyElement formProperty = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertyElement.class);
+		formProperty.setFormPropertyNameAttribute(formPropertyNameValue);
+		formProperty.setOfficeValueAttribute(officeValueValue);
+		formProperty.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(formProperty);
+		return formProperty;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPropertyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPropertyElement.java
new file mode 100644
index 0000000..6657322
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormPropertyElement.java
@@ -0,0 +1,277 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPropertyNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:property}.
+ *
+ */
+public class FormPropertyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "property");
+
+	/**
+	 * Create the instance of <code>FormPropertyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormPropertyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:property}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPropertyNameAttribute</code> , See {@odf.attribute form:property-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormPropertyNameAttribute() {
+		FormPropertyNameAttribute attr = (FormPropertyNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "property-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPropertyNameAttribute</code> , See {@odf.attribute form:property-name}
+	 *
+	 * @param formPropertyNameValue   The type is <code>String</code>
+	 */
+	public void setFormPropertyNameAttribute(String formPropertyNameValue) {
+		FormPropertyNameAttribute attr = new FormPropertyNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formPropertyNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormRadioElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormRadioElement.java
new file mode 100644
index 0000000..0e44e58
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormRadioElement.java
@@ -0,0 +1,573 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentSelectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImageAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormImagePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSelectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormVisualEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:radio}.
+ *
+ */
+public class FormRadioElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "radio");
+
+	/**
+	 * Create the instance of <code>FormRadioElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormRadioElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:radio}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentSelectedAttribute</code> , See {@odf.attribute form:current-selected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormCurrentSelectedAttribute() {
+		FormCurrentSelectedAttribute attr = (FormCurrentSelectedAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-selected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormCurrentSelectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentSelectedAttribute</code> , See {@odf.attribute form:current-selected}
+	 *
+	 * @param formCurrentSelectedValue   The type is <code>Boolean</code>
+	 */
+	public void setFormCurrentSelectedAttribute(Boolean formCurrentSelectedValue) {
+		FormCurrentSelectedAttribute attr = new FormCurrentSelectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formCurrentSelectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImageAlignAttribute</code> , See {@odf.attribute form:image-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImageAlignAttribute() {
+		FormImageAlignAttribute attr = (FormImageAlignAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormImageAlignAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImageAlignAttribute</code> , See {@odf.attribute form:image-align}
+	 *
+	 * @param formImageAlignValue   The type is <code>String</code>
+	 */
+	public void setFormImageAlignAttribute(String formImageAlignValue) {
+		FormImageAlignAttribute attr = new FormImageAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImageAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormImagePositionAttribute</code> , See {@odf.attribute form:image-position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormImagePositionAttribute() {
+		FormImagePositionAttribute attr = (FormImagePositionAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "image-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormImagePositionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormImagePositionAttribute</code> , See {@odf.attribute form:image-position}
+	 *
+	 * @param formImagePositionValue   The type is <code>String</code>
+	 */
+	public void setFormImagePositionAttribute(String formImagePositionValue) {
+		FormImagePositionAttribute attr = new FormImagePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formImagePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLabelAttribute() {
+		FormLabelAttribute attr = (FormLabelAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLabelAttribute</code> , See {@odf.attribute form:label}
+	 *
+	 * @param formLabelValue   The type is <code>String</code>
+	 */
+	public void setFormLabelAttribute(String formLabelValue) {
+		FormLabelAttribute attr = new FormLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLabelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSelectedAttribute</code> , See {@odf.attribute form:selected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormSelectedAttribute() {
+		FormSelectedAttribute attr = (FormSelectedAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "selected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormSelectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSelectedAttribute</code> , See {@odf.attribute form:selected}
+	 *
+	 * @param formSelectedValue   The type is <code>Boolean</code>
+	 */
+	public void setFormSelectedAttribute(Boolean formSelectedValue) {
+		FormSelectedAttribute attr = new FormSelectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formSelectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormVisualEffectAttribute</code> , See {@odf.attribute form:visual-effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormVisualEffectAttribute() {
+		FormVisualEffectAttribute attr = (FormVisualEffectAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "visual-effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormVisualEffectAttribute</code> , See {@odf.attribute form:visual-effect}
+	 *
+	 * @param formVisualEffectValue   The type is <code>String</code>
+	 */
+	public void setFormVisualEffectAttribute(String formVisualEffectValue) {
+		FormVisualEffectAttribute attr = new FormVisualEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formVisualEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTextElement.java
new file mode 100644
index 0000000..e648d8a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTextElement.java
@@ -0,0 +1,521 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:text}.
+ *
+ */
+public class FormTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "text");
+
+	/**
+	 * Create the instance of <code>FormTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTextareaElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTextareaElement.java
new file mode 100644
index 0000000..b752f95
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTextareaElement.java
@@ -0,0 +1,533 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:textarea}.
+ *
+ */
+public class FormTextareaElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "textarea");
+
+	/**
+	 * Create the instance of <code>FormTextareaElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormTextareaElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:textarea}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTimeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTimeElement.java
new file mode 100644
index 0000000..c27f284
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormTimeElement.java
@@ -0,0 +1,646 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormConvertEmptyToNullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDelayForRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMinValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormReadonlyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormSpinButtonAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:time}.
+ *
+ */
+public class FormTimeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "time");
+
+	/**
+	 * Create the instance of <code>FormTimeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormTimeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:time}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormConvertEmptyToNullAttribute() {
+		FormConvertEmptyToNullAttribute attr = (FormConvertEmptyToNullAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "convert-empty-to-null");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormConvertEmptyToNullAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormConvertEmptyToNullAttribute</code> , See {@odf.attribute form:convert-empty-to-null}
+	 *
+	 * @param formConvertEmptyToNullValue   The type is <code>Boolean</code>
+	 */
+	public void setFormConvertEmptyToNullAttribute(Boolean formConvertEmptyToNullValue) {
+		FormConvertEmptyToNullAttribute attr = new FormConvertEmptyToNullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formConvertEmptyToNullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormCurrentValueAttribute() {
+		FormCurrentValueAttribute attr = (FormCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "current-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormCurrentValueAttribute</code> , See {@odf.attribute form:current-value}
+	 *
+	 * @param formCurrentValueValue   The type is <code>String</code>
+	 */
+	public void setFormCurrentValueAttribute(String formCurrentValueValue) {
+		FormCurrentValueAttribute attr = new FormCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formCurrentValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDataFieldAttribute() {
+		FormDataFieldAttribute attr = (FormDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDataFieldAttribute</code> , See {@odf.attribute form:data-field}
+	 *
+	 * @param formDataFieldValue   The type is <code>String</code>
+	 */
+	public void setFormDataFieldAttribute(String formDataFieldValue) {
+		FormDataFieldAttribute attr = new FormDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDelayForRepeatAttribute() {
+		FormDelayForRepeatAttribute attr = (FormDelayForRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "delay-for-repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormDelayForRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @param formDelayForRepeatValue   The type is <code>String</code>
+	 */
+	public void setFormDelayForRepeatAttribute(String formDelayForRepeatValue) {
+		FormDelayForRepeatAttribute attr = new FormDelayForRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDelayForRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormMaxLengthAttribute() {
+		FormMaxLengthAttribute attr = (FormMaxLengthAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxLengthAttribute</code> , See {@odf.attribute form:max-length}
+	 *
+	 * @param formMaxLengthValue   The type is <code>Integer</code>
+	 */
+	public void setFormMaxLengthAttribute(Integer formMaxLengthValue) {
+		FormMaxLengthAttribute attr = new FormMaxLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formMaxLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMaxValueAttribute() {
+		FormMaxValueAttribute attr = (FormMaxValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @param formMaxValueValue   The type is <code>String</code>
+	 */
+	public void setFormMaxValueAttribute(String formMaxValueValue) {
+		FormMaxValueAttribute attr = new FormMaxValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMaxValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMinValueAttribute() {
+		FormMinValueAttribute attr = (FormMinValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "min-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @param formMinValueValue   The type is <code>String</code>
+	 */
+	public void setFormMinValueAttribute(String formMinValueValue) {
+		FormMinValueAttribute attr = new FormMinValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMinValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormReadonlyAttribute() {
+		FormReadonlyAttribute attr = (FormReadonlyAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "readonly");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormReadonlyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormReadonlyAttribute</code> , See {@odf.attribute form:readonly}
+	 *
+	 * @param formReadonlyValue   The type is <code>Boolean</code>
+	 */
+	public void setFormReadonlyAttribute(Boolean formReadonlyValue) {
+		FormReadonlyAttribute attr = new FormReadonlyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formReadonlyValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormRepeatAttribute() {
+		FormRepeatAttribute attr = (FormRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "repeat");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @param formRepeatValue   The type is <code>Boolean</code>
+	 */
+	public void setFormRepeatAttribute(Boolean formRepeatValue) {
+		FormRepeatAttribute attr = new FormRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formRepeatValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormSpinButtonAttribute() {
+		FormSpinButtonAttribute attr = (FormSpinButtonAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "spin-button");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormSpinButtonAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormSpinButtonAttribute</code> , See {@odf.attribute form:spin-button}
+	 *
+	 * @param formSpinButtonValue   The type is <code>Boolean</code>
+	 */
+	public void setFormSpinButtonAttribute(Boolean formSpinButtonValue) {
+		FormSpinButtonAttribute attr = new FormSpinButtonAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formSpinButtonValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormValueRangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormValueRangeElement.java
new file mode 100644
index 0000000..ef62ca0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/form/FormValueRangeElement.java
@@ -0,0 +1,571 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.form;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormControlImplementationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDelayForRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormDisabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormLinkedCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMaxValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormMinValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormOrientationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPageStepSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormPrintableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormStepSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTabStopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xforms.XformsBindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element form:value-range}.
+ *
+ */
+public class FormValueRangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.FORM, "value-range");
+
+	/**
+	 * Create the instance of <code>FormValueRangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public FormValueRangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element form:value-range}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormControlImplementationAttribute() {
+		FormControlImplementationAttribute attr = (FormControlImplementationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "control-implementation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormControlImplementationAttribute</code> , See {@odf.attribute form:control-implementation}
+	 *
+	 * @param formControlImplementationValue   The type is <code>String</code>
+	 */
+	public void setFormControlImplementationAttribute(String formControlImplementationValue) {
+		FormControlImplementationAttribute attr = new FormControlImplementationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formControlImplementationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormDelayForRepeatAttribute() {
+		FormDelayForRepeatAttribute attr = (FormDelayForRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "delay-for-repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FormDelayForRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDelayForRepeatAttribute</code> , See {@odf.attribute form:delay-for-repeat}
+	 *
+	 * @param formDelayForRepeatValue   The type is <code>String</code>
+	 */
+	public void setFormDelayForRepeatAttribute(String formDelayForRepeatValue) {
+		FormDelayForRepeatAttribute attr = new FormDelayForRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formDelayForRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormDisabledAttribute() {
+		FormDisabledAttribute attr = (FormDisabledAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "disabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormDisabledAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormDisabledAttribute</code> , See {@odf.attribute form:disabled}
+	 *
+	 * @param formDisabledValue   The type is <code>Boolean</code>
+	 */
+	public void setFormDisabledAttribute(Boolean formDisabledValue) {
+		FormDisabledAttribute attr = new FormDisabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formDisabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormIdAttribute() {
+		FormIdAttribute attr = (FormIdAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormIdAttribute</code> , See {@odf.attribute form:id}
+	 *
+	 * @param formIdValue   The type is <code>String</code>
+	 */
+	public void setFormIdAttribute(String formIdValue) {
+		FormIdAttribute attr = new FormIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormLinkedCellAttribute() {
+		FormLinkedCellAttribute attr = (FormLinkedCellAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "linked-cell");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormLinkedCellAttribute</code> , See {@odf.attribute form:linked-cell}
+	 *
+	 * @param formLinkedCellValue   The type is <code>String</code>
+	 */
+	public void setFormLinkedCellAttribute(String formLinkedCellValue) {
+		FormLinkedCellAttribute attr = new FormLinkedCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formLinkedCellValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMaxValueAttribute() {
+		FormMaxValueAttribute attr = (FormMaxValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "max-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMaxValueAttribute</code> , See {@odf.attribute form:max-value}
+	 *
+	 * @param formMaxValueValue   The type is <code>String</code>
+	 */
+	public void setFormMaxValueAttribute(String formMaxValueValue) {
+		FormMaxValueAttribute attr = new FormMaxValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMaxValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormMinValueAttribute() {
+		FormMinValueAttribute attr = (FormMinValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "min-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormMinValueAttribute</code> , See {@odf.attribute form:min-value}
+	 *
+	 * @param formMinValueValue   The type is <code>String</code>
+	 */
+	public void setFormMinValueAttribute(String formMinValueValue) {
+		FormMinValueAttribute attr = new FormMinValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formMinValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormNameAttribute() {
+		FormNameAttribute attr = (FormNameAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormNameAttribute</code> , See {@odf.attribute form:name}
+	 *
+	 * @param formNameValue   The type is <code>String</code>
+	 */
+	public void setFormNameAttribute(String formNameValue) {
+		FormNameAttribute attr = new FormNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormOrientationAttribute</code> , See {@odf.attribute form:orientation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormOrientationAttribute() {
+		FormOrientationAttribute attr = (FormOrientationAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "orientation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormOrientationAttribute</code> , See {@odf.attribute form:orientation}
+	 *
+	 * @param formOrientationValue   The type is <code>String</code>
+	 */
+	public void setFormOrientationAttribute(String formOrientationValue) {
+		FormOrientationAttribute attr = new FormOrientationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formOrientationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPageStepSizeAttribute</code> , See {@odf.attribute form:page-step-size}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormPageStepSizeAttribute() {
+		FormPageStepSizeAttribute attr = (FormPageStepSizeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "page-step-size");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPageStepSizeAttribute</code> , See {@odf.attribute form:page-step-size}
+	 *
+	 * @param formPageStepSizeValue   The type is <code>Integer</code>
+	 */
+	public void setFormPageStepSizeAttribute(Integer formPageStepSizeValue) {
+		FormPageStepSizeAttribute attr = new FormPageStepSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formPageStepSizeValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormPrintableAttribute() {
+		FormPrintableAttribute attr = (FormPrintableAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "printable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormPrintableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormPrintableAttribute</code> , See {@odf.attribute form:printable}
+	 *
+	 * @param formPrintableValue   The type is <code>Boolean</code>
+	 */
+	public void setFormPrintableAttribute(Boolean formPrintableValue) {
+		FormPrintableAttribute attr = new FormPrintableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formPrintableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormRepeatAttribute() {
+		FormRepeatAttribute attr = (FormRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "repeat");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormRepeatAttribute</code> , See {@odf.attribute form:repeat}
+	 *
+	 * @param formRepeatValue   The type is <code>Boolean</code>
+	 */
+	public void setFormRepeatAttribute(Boolean formRepeatValue) {
+		FormRepeatAttribute attr = new FormRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formRepeatValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormStepSizeAttribute</code> , See {@odf.attribute form:step-size}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormStepSizeAttribute() {
+		FormStepSizeAttribute attr = (FormStepSizeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "step-size");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormStepSizeAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormStepSizeAttribute</code> , See {@odf.attribute form:step-size}
+	 *
+	 * @param formStepSizeValue   The type is <code>Integer</code>
+	 */
+	public void setFormStepSizeAttribute(Integer formStepSizeValue) {
+		FormStepSizeAttribute attr = new FormStepSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formStepSizeValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFormTabIndexAttribute() {
+		FormTabIndexAttribute attr = (FormTabIndexAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(FormTabIndexAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabIndexAttribute</code> , See {@odf.attribute form:tab-index}
+	 *
+	 * @param formTabIndexValue   The type is <code>Integer</code>
+	 */
+	public void setFormTabIndexAttribute(Integer formTabIndexValue) {
+		FormTabIndexAttribute attr = new FormTabIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(formTabIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormTabStopAttribute() {
+		FormTabStopAttribute attr = (FormTabStopAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "tab-stop");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormTabStopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTabStopAttribute</code> , See {@odf.attribute form:tab-stop}
+	 *
+	 * @param formTabStopValue   The type is <code>Boolean</code>
+	 */
+	public void setFormTabStopAttribute(Boolean formTabStopValue) {
+		FormTabStopAttribute attr = new FormTabStopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formTabStopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormTitleAttribute() {
+		FormTitleAttribute attr = (FormTitleAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormTitleAttribute</code> , See {@odf.attribute form:title}
+	 *
+	 * @param formTitleValue   The type is <code>String</code>
+	 */
+	public void setFormTitleAttribute(String formTitleValue) {
+		FormTitleAttribute attr = new FormTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFormValueAttribute() {
+		FormValueAttribute attr = (FormValueAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormValueAttribute</code> , See {@odf.attribute form:value}
+	 *
+	 * @param formValueValue   The type is <code>String</code>
+	 */
+	public void setFormValueAttribute(String formValueValue) {
+		FormValueAttribute attr = new FormValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(formValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXformsBindAttribute() {
+		XformsBindAttribute attr = (XformsBindAttribute) getOdfAttribute(OdfDocumentNamespace.XFORMS, "bind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XformsBindAttribute</code> , See {@odf.attribute xforms:bind}
+	 *
+	 * @param xformsBindValue   The type is <code>String</code>
+	 */
+	public void setXformsBindAttribute(String xformsBindValue) {
+		XformsBindAttribute attr = new XformsBindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xformsBindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:properties}.
+	 *
+	 * @return the element {@odf.element form:properties}
+	 */
+	public FormPropertiesElement newFormPropertiesElement() {
+		FormPropertiesElement formProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(FormPropertiesElement.class);
+		this.appendChild(formProperties);
+		return formProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/math/MathMathElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/math/MathMathElement.java
new file mode 100644
index 0000000..b0db54b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/math/MathMathElement.java
@@ -0,0 +1,81 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.math;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element math:math}.
+ *
+ * This class can have any org.w3c.dom.Element child element.
+ * This class can have any org.w3c.dom.Attribute attribute.
+ */
+public class MathMathElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.MATH, "math");
+
+	/**
+	 * Create the instance of <code>MathMathElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MathMathElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element math:math}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaAutoReloadElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaAutoReloadElement.java
new file mode 100644
index 0000000..ad690b7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaAutoReloadElement.java
@@ -0,0 +1,196 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:auto-reload}.
+ *
+ */
+public class MetaAutoReloadElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "auto-reload");
+
+	/**
+	 * Create the instance of <code>MetaAutoReloadElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaAutoReloadElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:auto-reload}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaDelayAttribute</code> , See {@odf.attribute meta:delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getMetaDelayAttribute() {
+		MetaDelayAttribute attr = (MetaDelayAttribute) getOdfAttribute(OdfDocumentNamespace.META, "delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaDelayAttribute</code> , See {@odf.attribute meta:delay}
+	 *
+	 * @param metaDelayValue   The type is <code>String</code>
+	 */
+	public void setMetaDelayAttribute(String metaDelayValue) {
+		MetaDelayAttribute attr = new MetaDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(metaDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_REPLACE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaCreationDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaCreationDateElement.java
new file mode 100644
index 0000000..fc2c328
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaCreationDateElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:creation-date}.
+ *
+ */
+public class MetaCreationDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "creation-date");
+
+	/**
+	 * Create the instance of <code>MetaCreationDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaCreationDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:creation-date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaDateStringElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaDateStringElement.java
new file mode 100644
index 0000000..358b9ba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaDateStringElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:date-string}.
+ *
+ */
+public class MetaDateStringElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "date-string");
+
+	/**
+	 * Create the instance of <code>MetaDateStringElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaDateStringElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:date-string}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaDocumentStatisticElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaDocumentStatisticElement.java
new file mode 100644
index 0000000..a3b8d3d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaDocumentStatisticElement.java
@@ -0,0 +1,446 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaCellCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaCharacterCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaDrawCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaFrameCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaImageCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaNonWhitespaceCharacterCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaObjectCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaOleObjectCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaPageCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaParagraphCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaRowCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaSentenceCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaSyllableCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaTableCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaWordCountAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:document-statistic}.
+ *
+ */
+public class MetaDocumentStatisticElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "document-statistic");
+
+	/**
+	 * Create the instance of <code>MetaDocumentStatisticElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaDocumentStatisticElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:document-statistic}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaCellCountAttribute</code> , See {@odf.attribute meta:cell-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaCellCountAttribute() {
+		MetaCellCountAttribute attr = (MetaCellCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "cell-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaCellCountAttribute</code> , See {@odf.attribute meta:cell-count}
+	 *
+	 * @param metaCellCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaCellCountAttribute(Integer metaCellCountValue) {
+		MetaCellCountAttribute attr = new MetaCellCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaCellCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaCharacterCountAttribute</code> , See {@odf.attribute meta:character-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaCharacterCountAttribute() {
+		MetaCharacterCountAttribute attr = (MetaCharacterCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "character-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaCharacterCountAttribute</code> , See {@odf.attribute meta:character-count}
+	 *
+	 * @param metaCharacterCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaCharacterCountAttribute(Integer metaCharacterCountValue) {
+		MetaCharacterCountAttribute attr = new MetaCharacterCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaCharacterCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaDrawCountAttribute</code> , See {@odf.attribute meta:draw-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaDrawCountAttribute() {
+		MetaDrawCountAttribute attr = (MetaDrawCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "draw-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaDrawCountAttribute</code> , See {@odf.attribute meta:draw-count}
+	 *
+	 * @param metaDrawCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaDrawCountAttribute(Integer metaDrawCountValue) {
+		MetaDrawCountAttribute attr = new MetaDrawCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaDrawCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaFrameCountAttribute</code> , See {@odf.attribute meta:frame-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaFrameCountAttribute() {
+		MetaFrameCountAttribute attr = (MetaFrameCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "frame-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaFrameCountAttribute</code> , See {@odf.attribute meta:frame-count}
+	 *
+	 * @param metaFrameCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaFrameCountAttribute(Integer metaFrameCountValue) {
+		MetaFrameCountAttribute attr = new MetaFrameCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaFrameCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaImageCountAttribute</code> , See {@odf.attribute meta:image-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaImageCountAttribute() {
+		MetaImageCountAttribute attr = (MetaImageCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "image-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaImageCountAttribute</code> , See {@odf.attribute meta:image-count}
+	 *
+	 * @param metaImageCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaImageCountAttribute(Integer metaImageCountValue) {
+		MetaImageCountAttribute attr = new MetaImageCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaImageCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaNonWhitespaceCharacterCountAttribute</code> , See {@odf.attribute meta:non-whitespace-character-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaNonWhitespaceCharacterCountAttribute() {
+		MetaNonWhitespaceCharacterCountAttribute attr = (MetaNonWhitespaceCharacterCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "non-whitespace-character-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaNonWhitespaceCharacterCountAttribute</code> , See {@odf.attribute meta:non-whitespace-character-count}
+	 *
+	 * @param metaNonWhitespaceCharacterCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaNonWhitespaceCharacterCountAttribute(Integer metaNonWhitespaceCharacterCountValue) {
+		MetaNonWhitespaceCharacterCountAttribute attr = new MetaNonWhitespaceCharacterCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaNonWhitespaceCharacterCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaObjectCountAttribute</code> , See {@odf.attribute meta:object-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaObjectCountAttribute() {
+		MetaObjectCountAttribute attr = (MetaObjectCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "object-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaObjectCountAttribute</code> , See {@odf.attribute meta:object-count}
+	 *
+	 * @param metaObjectCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaObjectCountAttribute(Integer metaObjectCountValue) {
+		MetaObjectCountAttribute attr = new MetaObjectCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaObjectCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaOleObjectCountAttribute</code> , See {@odf.attribute meta:ole-object-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaOleObjectCountAttribute() {
+		MetaOleObjectCountAttribute attr = (MetaOleObjectCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "ole-object-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaOleObjectCountAttribute</code> , See {@odf.attribute meta:ole-object-count}
+	 *
+	 * @param metaOleObjectCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaOleObjectCountAttribute(Integer metaOleObjectCountValue) {
+		MetaOleObjectCountAttribute attr = new MetaOleObjectCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaOleObjectCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaPageCountAttribute</code> , See {@odf.attribute meta:page-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaPageCountAttribute() {
+		MetaPageCountAttribute attr = (MetaPageCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "page-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaPageCountAttribute</code> , See {@odf.attribute meta:page-count}
+	 *
+	 * @param metaPageCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaPageCountAttribute(Integer metaPageCountValue) {
+		MetaPageCountAttribute attr = new MetaPageCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaPageCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaParagraphCountAttribute</code> , See {@odf.attribute meta:paragraph-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaParagraphCountAttribute() {
+		MetaParagraphCountAttribute attr = (MetaParagraphCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "paragraph-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaParagraphCountAttribute</code> , See {@odf.attribute meta:paragraph-count}
+	 *
+	 * @param metaParagraphCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaParagraphCountAttribute(Integer metaParagraphCountValue) {
+		MetaParagraphCountAttribute attr = new MetaParagraphCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaParagraphCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaRowCountAttribute</code> , See {@odf.attribute meta:row-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaRowCountAttribute() {
+		MetaRowCountAttribute attr = (MetaRowCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "row-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaRowCountAttribute</code> , See {@odf.attribute meta:row-count}
+	 *
+	 * @param metaRowCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaRowCountAttribute(Integer metaRowCountValue) {
+		MetaRowCountAttribute attr = new MetaRowCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaRowCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaSentenceCountAttribute</code> , See {@odf.attribute meta:sentence-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaSentenceCountAttribute() {
+		MetaSentenceCountAttribute attr = (MetaSentenceCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "sentence-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaSentenceCountAttribute</code> , See {@odf.attribute meta:sentence-count}
+	 *
+	 * @param metaSentenceCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaSentenceCountAttribute(Integer metaSentenceCountValue) {
+		MetaSentenceCountAttribute attr = new MetaSentenceCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaSentenceCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaSyllableCountAttribute</code> , See {@odf.attribute meta:syllable-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaSyllableCountAttribute() {
+		MetaSyllableCountAttribute attr = (MetaSyllableCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "syllable-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaSyllableCountAttribute</code> , See {@odf.attribute meta:syllable-count}
+	 *
+	 * @param metaSyllableCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaSyllableCountAttribute(Integer metaSyllableCountValue) {
+		MetaSyllableCountAttribute attr = new MetaSyllableCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaSyllableCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaTableCountAttribute</code> , See {@odf.attribute meta:table-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaTableCountAttribute() {
+		MetaTableCountAttribute attr = (MetaTableCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "table-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaTableCountAttribute</code> , See {@odf.attribute meta:table-count}
+	 *
+	 * @param metaTableCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaTableCountAttribute(Integer metaTableCountValue) {
+		MetaTableCountAttribute attr = new MetaTableCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaTableCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaWordCountAttribute</code> , See {@odf.attribute meta:word-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getMetaWordCountAttribute() {
+		MetaWordCountAttribute attr = (MetaWordCountAttribute) getOdfAttribute(OdfDocumentNamespace.META, "word-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaWordCountAttribute</code> , See {@odf.attribute meta:word-count}
+	 *
+	 * @param metaWordCountValue   The type is <code>Integer</code>
+	 */
+	public void setMetaWordCountAttribute(Integer metaWordCountValue) {
+		MetaWordCountAttribute attr = new MetaWordCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(metaWordCountValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaEditingCyclesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaEditingCyclesElement.java
new file mode 100644
index 0000000..54c593b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaEditingCyclesElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:editing-cycles}.
+ *
+ */
+public class MetaEditingCyclesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "editing-cycles");
+
+	/**
+	 * Create the instance of <code>MetaEditingCyclesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaEditingCyclesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:editing-cycles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaEditingDurationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaEditingDurationElement.java
new file mode 100644
index 0000000..7ebe811
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaEditingDurationElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:editing-duration}.
+ *
+ */
+public class MetaEditingDurationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "editing-duration");
+
+	/**
+	 * Create the instance of <code>MetaEditingDurationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaEditingDurationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:editing-duration}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaGeneratorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaGeneratorElement.java
new file mode 100644
index 0000000..a9f89a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaGeneratorElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:generator}.
+ *
+ */
+public class MetaGeneratorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "generator");
+
+	/**
+	 * Create the instance of <code>MetaGeneratorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaGeneratorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:generator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaHyperlinkBehaviourElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaHyperlinkBehaviourElement.java
new file mode 100644
index 0000000..6ad124e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaHyperlinkBehaviourElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:hyperlink-behaviour}.
+ *
+ */
+public class MetaHyperlinkBehaviourElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "hyperlink-behaviour");
+
+	/**
+	 * Create the instance of <code>MetaHyperlinkBehaviourElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaHyperlinkBehaviourElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:hyperlink-behaviour}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameNameAttribute() {
+		OfficeTargetFrameNameAttribute attr = (OfficeTargetFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @param officeTargetFrameNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameNameAttribute(String officeTargetFrameNameValue) {
+		OfficeTargetFrameNameAttribute attr = new OfficeTargetFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaInitialCreatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaInitialCreatorElement.java
new file mode 100644
index 0000000..618381f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaInitialCreatorElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:initial-creator}.
+ *
+ */
+public class MetaInitialCreatorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "initial-creator");
+
+	/**
+	 * Create the instance of <code>MetaInitialCreatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaInitialCreatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:initial-creator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaKeywordElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaKeywordElement.java
new file mode 100644
index 0000000..558985f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaKeywordElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:keyword}.
+ *
+ */
+public class MetaKeywordElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "keyword");
+
+	/**
+	 * Create the instance of <code>MetaKeywordElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaKeywordElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:keyword}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaPrintDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaPrintDateElement.java
new file mode 100644
index 0000000..b044981
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaPrintDateElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:print-date}.
+ *
+ */
+public class MetaPrintDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "print-date");
+
+	/**
+	 * Create the instance of <code>MetaPrintDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaPrintDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:print-date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaPrintedByElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaPrintedByElement.java
new file mode 100644
index 0000000..4663505
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaPrintedByElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:printed-by}.
+ *
+ */
+public class MetaPrintedByElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "printed-by");
+
+	/**
+	 * Create the instance of <code>MetaPrintedByElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaPrintedByElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:printed-by}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaTemplateElement.java
new file mode 100644
index 0000000..4a5ea23
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaTemplateElement.java
@@ -0,0 +1,200 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaDateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:template}.
+ *
+ */
+public class MetaTemplateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "template");
+
+	/**
+	 * Create the instance of <code>MetaTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaDateAttribute</code> , See {@odf.attribute meta:date}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getMetaDateAttribute() {
+		MetaDateAttribute attr = (MetaDateAttribute) getOdfAttribute(OdfDocumentNamespace.META, "date");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaDateAttribute</code> , See {@odf.attribute meta:date}
+	 *
+	 * @param metaDateValue   The type is <code>String</code>
+	 */
+	public void setMetaDateAttribute(String metaDateValue) {
+		MetaDateAttribute attr = new MetaDateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(metaDateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTitleAttribute</code> , See {@odf.attribute xlink:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTitleAttribute() {
+		XlinkTitleAttribute attr = (XlinkTitleAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTitleAttribute</code> , See {@odf.attribute xlink:title}
+	 *
+	 * @param xlinkTitleValue   The type is <code>String</code>
+	 */
+	public void setXlinkTitleAttribute(String xlinkTitleValue) {
+		XlinkTitleAttribute attr = new XlinkTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaUserDefinedElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaUserDefinedElement.java
new file mode 100644
index 0000000..6e32128
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/meta/MetaUserDefinedElement.java
@@ -0,0 +1,133 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.meta;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaValueTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element meta:user-defined}.
+ *
+ */
+public class MetaUserDefinedElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.META, "user-defined");
+
+	/**
+	 * Create the instance of <code>MetaUserDefinedElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public MetaUserDefinedElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element meta:user-defined}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaNameAttribute</code> , See {@odf.attribute meta:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getMetaNameAttribute() {
+		MetaNameAttribute attr = (MetaNameAttribute) getOdfAttribute(OdfDocumentNamespace.META, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaNameAttribute</code> , See {@odf.attribute meta:name}
+	 *
+	 * @param metaNameValue   The type is <code>String</code>
+	 */
+	public void setMetaNameAttribute(String metaNameValue) {
+		MetaNameAttribute attr = new MetaNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(metaNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>MetaValueTypeAttribute</code> , See {@odf.attribute meta:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getMetaValueTypeAttribute() {
+		MetaValueTypeAttribute attr = (MetaValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.META, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>MetaValueTypeAttribute</code> , See {@odf.attribute meta:value-type}
+	 *
+	 * @param metaValueTypeValue   The type is <code>String</code>
+	 */
+	public void setMetaValueTypeAttribute(String metaValueTypeValue) {
+		MetaValueTypeAttribute attr = new MetaValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(metaValueTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberAmPmElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberAmPmElement.java
new file mode 100644
index 0000000..7fb5aa7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberAmPmElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:am-pm}.
+ *
+ */
+public class NumberAmPmElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "am-pm");
+
+	/**
+	 * Create the instance of <code>NumberAmPmElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberAmPmElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:am-pm}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberBooleanElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberBooleanElement.java
new file mode 100644
index 0000000..2a9bb1c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberBooleanElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:boolean}.
+ *
+ */
+public class NumberBooleanElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "boolean");
+
+	/**
+	 * Create the instance of <code>NumberBooleanElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberBooleanElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:boolean}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberBooleanStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberBooleanStyleElement.java
new file mode 100644
index 0000000..751d461
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberBooleanStyleElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:boolean-style}.
+ *
+ */
+public class NumberBooleanStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "boolean-style");
+
+	/**
+	 * Create the instance of <code>NumberBooleanStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberBooleanStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:boolean-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:boolean}.
+	 *
+	 * @return the element {@odf.element number:boolean}
+	 */
+	public NumberBooleanElement newNumberBooleanElement() {
+		NumberBooleanElement numberBoolean = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberBooleanElement.class);
+		this.appendChild(numberBoolean);
+		return numberBoolean;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberCurrencyStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberCurrencyStyleElement.java
new file mode 100644
index 0000000..11819d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberCurrencyStyleElement.java
@@ -0,0 +1,461 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberAutomaticOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:currency-style}.
+ *
+ */
+public class NumberCurrencyStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "currency-style");
+
+	/**
+	 * Create the instance of <code>NumberCurrencyStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberCurrencyStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:currency-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberAutomaticOrderAttribute</code> , See {@odf.attribute number:automatic-order}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberAutomaticOrderAttribute() {
+		NumberAutomaticOrderAttribute attr = (NumberAutomaticOrderAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "automatic-order");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberAutomaticOrderAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberAutomaticOrderAttribute</code> , See {@odf.attribute number:automatic-order}
+	 *
+	 * @param numberAutomaticOrderValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberAutomaticOrderAttribute(Boolean numberAutomaticOrderValue) {
+		NumberAutomaticOrderAttribute attr = new NumberAutomaticOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberAutomaticOrderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:currency-symbol}.
+	 *
+	 * @return the element {@odf.element number:currency-symbol}
+	 */
+	public NumberCurrencySymbolElement newNumberCurrencySymbolElement() {
+		NumberCurrencySymbolElement numberCurrencySymbol = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberCurrencySymbolElement.class);
+		this.appendChild(numberCurrencySymbol);
+		return numberCurrencySymbol;
+	}
+
+	/**
+	 * Create child element {@odf.element number:number}.
+	 *
+	 * @return the element {@odf.element number:number}
+	 */
+	public NumberNumberElement newNumberNumberElement() {
+		NumberNumberElement numberNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberNumberElement.class);
+		this.appendChild(numberNumber);
+		return numberNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberCurrencySymbolElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberCurrencySymbolElement.java
new file mode 100644
index 0000000..e87814c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberCurrencySymbolElement.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:currency-symbol}.
+ *
+ */
+public class NumberCurrencySymbolElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "currency-symbol");
+
+	/**
+	 * Create the instance of <code>NumberCurrencySymbolElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberCurrencySymbolElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:currency-symbol}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDateStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDateStyleElement.java
new file mode 100644
index 0000000..2f4f75f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDateStyleElement.java
@@ -0,0 +1,585 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberAutomaticOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberFormatSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:date-style}.
+ *
+ */
+public class NumberDateStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "date-style");
+
+	/**
+	 * Create the instance of <code>NumberDateStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberDateStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:date-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberAutomaticOrderAttribute</code> , See {@odf.attribute number:automatic-order}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberAutomaticOrderAttribute() {
+		NumberAutomaticOrderAttribute attr = (NumberAutomaticOrderAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "automatic-order");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberAutomaticOrderAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberAutomaticOrderAttribute</code> , See {@odf.attribute number:automatic-order}
+	 *
+	 * @param numberAutomaticOrderValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberAutomaticOrderAttribute(Boolean numberAutomaticOrderValue) {
+		NumberAutomaticOrderAttribute attr = new NumberAutomaticOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberAutomaticOrderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberFormatSourceAttribute</code> , See {@odf.attribute number:format-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberFormatSourceAttribute() {
+		NumberFormatSourceAttribute attr = (NumberFormatSourceAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "format-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberFormatSourceAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberFormatSourceAttribute</code> , See {@odf.attribute number:format-source}
+	 *
+	 * @param numberFormatSourceValue   The type is <code>String</code>
+	 */
+	public void setNumberFormatSourceAttribute(String numberFormatSourceValue) {
+		NumberFormatSourceAttribute attr = new NumberFormatSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberFormatSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:am-pm}.
+	 *
+	 * @return the element {@odf.element number:am-pm}
+	 */
+	public NumberAmPmElement newNumberAmPmElement() {
+		NumberAmPmElement numberAmPm = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberAmPmElement.class);
+		this.appendChild(numberAmPm);
+		return numberAmPm;
+	}
+
+	/**
+	 * Create child element {@odf.element number:day}.
+	 *
+	 * @return the element {@odf.element number:day}
+	 */
+	public NumberDayElement newNumberDayElement() {
+		NumberDayElement numberDay = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberDayElement.class);
+		this.appendChild(numberDay);
+		return numberDay;
+	}
+
+	/**
+	 * Create child element {@odf.element number:day-of-week}.
+	 *
+	 * @return the element {@odf.element number:day-of-week}
+	 */
+	public NumberDayOfWeekElement newNumberDayOfWeekElement() {
+		NumberDayOfWeekElement numberDayOfWeek = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberDayOfWeekElement.class);
+		this.appendChild(numberDayOfWeek);
+		return numberDayOfWeek;
+	}
+
+	/**
+	 * Create child element {@odf.element number:era}.
+	 *
+	 * @return the element {@odf.element number:era}
+	 */
+	public NumberEraElement newNumberEraElement() {
+		NumberEraElement numberEra = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberEraElement.class);
+		this.appendChild(numberEra);
+		return numberEra;
+	}
+
+	/**
+	 * Create child element {@odf.element number:hours}.
+	 *
+	 * @return the element {@odf.element number:hours}
+	 */
+	public NumberHoursElement newNumberHoursElement() {
+		NumberHoursElement numberHours = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberHoursElement.class);
+		this.appendChild(numberHours);
+		return numberHours;
+	}
+
+	/**
+	 * Create child element {@odf.element number:minutes}.
+	 *
+	 * @return the element {@odf.element number:minutes}
+	 */
+	public NumberMinutesElement newNumberMinutesElement() {
+		NumberMinutesElement numberMinutes = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberMinutesElement.class);
+		this.appendChild(numberMinutes);
+		return numberMinutes;
+	}
+
+	/**
+	 * Create child element {@odf.element number:month}.
+	 *
+	 * @return the element {@odf.element number:month}
+	 */
+	public NumberMonthElement newNumberMonthElement() {
+		NumberMonthElement numberMonth = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberMonthElement.class);
+		this.appendChild(numberMonth);
+		return numberMonth;
+	}
+
+	/**
+	 * Create child element {@odf.element number:quarter}.
+	 *
+	 * @return the element {@odf.element number:quarter}
+	 */
+	public NumberQuarterElement newNumberQuarterElement() {
+		NumberQuarterElement numberQuarter = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberQuarterElement.class);
+		this.appendChild(numberQuarter);
+		return numberQuarter;
+	}
+
+	/**
+	 * Create child element {@odf.element number:seconds}.
+	 *
+	 * @return the element {@odf.element number:seconds}
+	 */
+	public NumberSecondsElement newNumberSecondsElement() {
+		NumberSecondsElement numberSeconds = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberSecondsElement.class);
+		this.appendChild(numberSeconds);
+		return numberSeconds;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element number:week-of-year}.
+	 *
+	 * @return the element {@odf.element number:week-of-year}
+	 */
+	public NumberWeekOfYearElement newNumberWeekOfYearElement() {
+		NumberWeekOfYearElement numberWeekOfYear = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberWeekOfYearElement.class);
+		this.appendChild(numberWeekOfYear);
+		return numberWeekOfYear;
+	}
+
+	/**
+	 * Create child element {@odf.element number:year}.
+	 *
+	 * @return the element {@odf.element number:year}
+	 */
+	public NumberYearElement newNumberYearElement() {
+		NumberYearElement numberYear = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberYearElement.class);
+		this.appendChild(numberYear);
+		return numberYear;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDayElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDayElement.java
new file mode 100644
index 0000000..dd2675e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDayElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:day}.
+ *
+ */
+public class NumberDayElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "day");
+
+	/**
+	 * Create the instance of <code>NumberDayElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberDayElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:day}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDayOfWeekElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDayOfWeekElement.java
new file mode 100644
index 0000000..f4d4e40
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberDayOfWeekElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:day-of-week}.
+ *
+ */
+public class NumberDayOfWeekElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "day-of-week");
+
+	/**
+	 * Create the instance of <code>NumberDayOfWeekElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberDayOfWeekElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:day-of-week}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberEmbeddedTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberEmbeddedTextElement.java
new file mode 100644
index 0000000..69d4f60
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberEmbeddedTextElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberPositionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:embedded-text}.
+ *
+ */
+public class NumberEmbeddedTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "embedded-text");
+
+	/**
+	 * Create the instance of <code>NumberEmbeddedTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberEmbeddedTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:embedded-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberPositionAttribute</code> , See {@odf.attribute number:position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberPositionAttribute() {
+		NumberPositionAttribute attr = (NumberPositionAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberPositionAttribute</code> , See {@odf.attribute number:position}
+	 *
+	 * @param numberPositionValue   The type is <code>Integer</code>
+	 */
+	public void setNumberPositionAttribute(Integer numberPositionValue) {
+		NumberPositionAttribute attr = new NumberPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberPositionValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberEraElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberEraElement.java
new file mode 100644
index 0000000..8ebd392
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberEraElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:era}.
+ *
+ */
+public class NumberEraElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "era");
+
+	/**
+	 * Create the instance of <code>NumberEraElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberEraElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:era}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberFractionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberFractionElement.java
new file mode 100644
index 0000000..6959977
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberFractionElement.java
@@ -0,0 +1,196 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberDenominatorValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberGroupingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberMinDenominatorDigitsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberMinIntegerDigitsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberMinNumeratorDigitsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:fraction}.
+ *
+ */
+public class NumberFractionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "fraction");
+
+	/**
+	 * Create the instance of <code>NumberFractionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberFractionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:fraction}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberDenominatorValueAttribute</code> , See {@odf.attribute number:denominator-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberDenominatorValueAttribute() {
+		NumberDenominatorValueAttribute attr = (NumberDenominatorValueAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "denominator-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberDenominatorValueAttribute</code> , See {@odf.attribute number:denominator-value}
+	 *
+	 * @param numberDenominatorValueValue   The type is <code>Integer</code>
+	 */
+	public void setNumberDenominatorValueAttribute(Integer numberDenominatorValueValue) {
+		NumberDenominatorValueAttribute attr = new NumberDenominatorValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberDenominatorValueValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberGroupingAttribute</code> , See {@odf.attribute number:grouping}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberGroupingAttribute() {
+		NumberGroupingAttribute attr = (NumberGroupingAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "grouping");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberGroupingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberGroupingAttribute</code> , See {@odf.attribute number:grouping}
+	 *
+	 * @param numberGroupingValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberGroupingAttribute(Boolean numberGroupingValue) {
+		NumberGroupingAttribute attr = new NumberGroupingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberGroupingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberMinDenominatorDigitsAttribute</code> , See {@odf.attribute number:min-denominator-digits}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberMinDenominatorDigitsAttribute() {
+		NumberMinDenominatorDigitsAttribute attr = (NumberMinDenominatorDigitsAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "min-denominator-digits");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberMinDenominatorDigitsAttribute</code> , See {@odf.attribute number:min-denominator-digits}
+	 *
+	 * @param numberMinDenominatorDigitsValue   The type is <code>Integer</code>
+	 */
+	public void setNumberMinDenominatorDigitsAttribute(Integer numberMinDenominatorDigitsValue) {
+		NumberMinDenominatorDigitsAttribute attr = new NumberMinDenominatorDigitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberMinDenominatorDigitsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberMinIntegerDigitsAttribute</code> , See {@odf.attribute number:min-integer-digits}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberMinIntegerDigitsAttribute() {
+		NumberMinIntegerDigitsAttribute attr = (NumberMinIntegerDigitsAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "min-integer-digits");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberMinIntegerDigitsAttribute</code> , See {@odf.attribute number:min-integer-digits}
+	 *
+	 * @param numberMinIntegerDigitsValue   The type is <code>Integer</code>
+	 */
+	public void setNumberMinIntegerDigitsAttribute(Integer numberMinIntegerDigitsValue) {
+		NumberMinIntegerDigitsAttribute attr = new NumberMinIntegerDigitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberMinIntegerDigitsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberMinNumeratorDigitsAttribute</code> , See {@odf.attribute number:min-numerator-digits}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberMinNumeratorDigitsAttribute() {
+		NumberMinNumeratorDigitsAttribute attr = (NumberMinNumeratorDigitsAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "min-numerator-digits");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberMinNumeratorDigitsAttribute</code> , See {@odf.attribute number:min-numerator-digits}
+	 *
+	 * @param numberMinNumeratorDigitsValue   The type is <code>Integer</code>
+	 */
+	public void setNumberMinNumeratorDigitsAttribute(Integer numberMinNumeratorDigitsValue) {
+		NumberMinNumeratorDigitsAttribute attr = new NumberMinNumeratorDigitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberMinNumeratorDigitsValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberHoursElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberHoursElement.java
new file mode 100644
index 0000000..d3819c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberHoursElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:hours}.
+ *
+ */
+public class NumberHoursElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "hours");
+
+	/**
+	 * Create the instance of <code>NumberHoursElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberHoursElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:hours}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberMinutesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberMinutesElement.java
new file mode 100644
index 0000000..a1aa74f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberMinutesElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:minutes}.
+ *
+ */
+public class NumberMinutesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "minutes");
+
+	/**
+	 * Create the instance of <code>NumberMinutesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberMinutesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:minutes}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberMonthElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberMonthElement.java
new file mode 100644
index 0000000..12caa6c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberMonthElement.java
@@ -0,0 +1,171 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberPossessiveFormAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTextualAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:month}.
+ *
+ */
+public class NumberMonthElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "month");
+
+	/**
+	 * Create the instance of <code>NumberMonthElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberMonthElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:month}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberPossessiveFormAttribute</code> , See {@odf.attribute number:possessive-form}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberPossessiveFormAttribute() {
+		NumberPossessiveFormAttribute attr = (NumberPossessiveFormAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "possessive-form");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberPossessiveFormAttribute</code> , See {@odf.attribute number:possessive-form}
+	 *
+	 * @param numberPossessiveFormValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberPossessiveFormAttribute(Boolean numberPossessiveFormValue) {
+		NumberPossessiveFormAttribute attr = new NumberPossessiveFormAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberPossessiveFormValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTextualAttribute</code> , See {@odf.attribute number:textual}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberTextualAttribute() {
+		NumberTextualAttribute attr = (NumberTextualAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "textual");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberTextualAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTextualAttribute</code> , See {@odf.attribute number:textual}
+	 *
+	 * @param numberTextualValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberTextualAttribute(Boolean numberTextualValue) {
+		NumberTextualAttribute attr = new NumberTextualAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberTextualValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberNumberElement.java
new file mode 100644
index 0000000..3d046a7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberNumberElement.java
@@ -0,0 +1,209 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberDecimalPlacesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberDecimalReplacementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberDisplayFactorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberGroupingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberMinIntegerDigitsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:number}.
+ *
+ */
+public class NumberNumberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "number");
+
+	/**
+	 * Create the instance of <code>NumberNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberDecimalPlacesAttribute</code> , See {@odf.attribute number:decimal-places}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberDecimalPlacesAttribute() {
+		NumberDecimalPlacesAttribute attr = (NumberDecimalPlacesAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "decimal-places");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberDecimalPlacesAttribute</code> , See {@odf.attribute number:decimal-places}
+	 *
+	 * @param numberDecimalPlacesValue   The type is <code>Integer</code>
+	 */
+	public void setNumberDecimalPlacesAttribute(Integer numberDecimalPlacesValue) {
+		NumberDecimalPlacesAttribute attr = new NumberDecimalPlacesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberDecimalPlacesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberDecimalReplacementAttribute</code> , See {@odf.attribute number:decimal-replacement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberDecimalReplacementAttribute() {
+		NumberDecimalReplacementAttribute attr = (NumberDecimalReplacementAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "decimal-replacement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberDecimalReplacementAttribute</code> , See {@odf.attribute number:decimal-replacement}
+	 *
+	 * @param numberDecimalReplacementValue   The type is <code>String</code>
+	 */
+	public void setNumberDecimalReplacementAttribute(String numberDecimalReplacementValue) {
+		NumberDecimalReplacementAttribute attr = new NumberDecimalReplacementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberDecimalReplacementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberDisplayFactorAttribute</code> , See {@odf.attribute number:display-factor}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getNumberDisplayFactorAttribute() {
+		NumberDisplayFactorAttribute attr = (NumberDisplayFactorAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "display-factor");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return Double.valueOf(NumberDisplayFactorAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberDisplayFactorAttribute</code> , See {@odf.attribute number:display-factor}
+	 *
+	 * @param numberDisplayFactorValue   The type is <code>Double</code>
+	 */
+	public void setNumberDisplayFactorAttribute(Double numberDisplayFactorValue) {
+		NumberDisplayFactorAttribute attr = new NumberDisplayFactorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(numberDisplayFactorValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberGroupingAttribute</code> , See {@odf.attribute number:grouping}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberGroupingAttribute() {
+		NumberGroupingAttribute attr = (NumberGroupingAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "grouping");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberGroupingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberGroupingAttribute</code> , See {@odf.attribute number:grouping}
+	 *
+	 * @param numberGroupingValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberGroupingAttribute(Boolean numberGroupingValue) {
+		NumberGroupingAttribute attr = new NumberGroupingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberGroupingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberMinIntegerDigitsAttribute</code> , See {@odf.attribute number:min-integer-digits}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberMinIntegerDigitsAttribute() {
+		NumberMinIntegerDigitsAttribute attr = (NumberMinIntegerDigitsAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "min-integer-digits");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberMinIntegerDigitsAttribute</code> , See {@odf.attribute number:min-integer-digits}
+	 *
+	 * @param numberMinIntegerDigitsValue   The type is <code>Integer</code>
+	 */
+	public void setNumberMinIntegerDigitsAttribute(Integer numberMinIntegerDigitsValue) {
+		NumberMinIntegerDigitsAttribute attr = new NumberMinIntegerDigitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberMinIntegerDigitsValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:embedded-text}.
+	 *
+	 * @param numberPositionValue  the <code>Integer</code> value of <code>NumberPositionAttribute</code>, see {@odf.attribute  number:position} at specification
+	 * @return the element {@odf.element number:embedded-text}
+	 */
+	 public NumberEmbeddedTextElement newNumberEmbeddedTextElement(int numberPositionValue) {
+		NumberEmbeddedTextElement numberEmbeddedText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberEmbeddedTextElement.class);
+		numberEmbeddedText.setNumberPositionAttribute(numberPositionValue);
+		this.appendChild(numberEmbeddedText);
+		return numberEmbeddedText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberNumberStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberNumberStyleElement.java
new file mode 100644
index 0000000..b7c232b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberNumberStyleElement.java
@@ -0,0 +1,447 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:number-style}.
+ *
+ */
+public class NumberNumberStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "number-style");
+
+	/**
+	 * Create the instance of <code>NumberNumberStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberNumberStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:number-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:fraction}.
+	 *
+	 * @return the element {@odf.element number:fraction}
+	 */
+	public NumberFractionElement newNumberFractionElement() {
+		NumberFractionElement numberFraction = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberFractionElement.class);
+		this.appendChild(numberFraction);
+		return numberFraction;
+	}
+
+	/**
+	 * Create child element {@odf.element number:number}.
+	 *
+	 * @return the element {@odf.element number:number}
+	 */
+	public NumberNumberElement newNumberNumberElement() {
+		NumberNumberElement numberNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberNumberElement.class);
+		this.appendChild(numberNumber);
+		return numberNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element number:scientific-number}.
+	 *
+	 * @return the element {@odf.element number:scientific-number}
+	 */
+	public NumberScientificNumberElement newNumberScientificNumberElement() {
+		NumberScientificNumberElement numberScientificNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberScientificNumberElement.class);
+		this.appendChild(numberScientificNumber);
+		return numberScientificNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberPercentageStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberPercentageStyleElement.java
new file mode 100644
index 0000000..a99e6b2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberPercentageStyleElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:percentage-style}.
+ *
+ */
+public class NumberPercentageStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "percentage-style");
+
+	/**
+	 * Create the instance of <code>NumberPercentageStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberPercentageStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:percentage-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:number}.
+	 *
+	 * @return the element {@odf.element number:number}
+	 */
+	public NumberNumberElement newNumberNumberElement() {
+		NumberNumberElement numberNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberNumberElement.class);
+		this.appendChild(numberNumber);
+		return numberNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberQuarterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberQuarterElement.java
new file mode 100644
index 0000000..c508b8a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberQuarterElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:quarter}.
+ *
+ */
+public class NumberQuarterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "quarter");
+
+	/**
+	 * Create the instance of <code>NumberQuarterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberQuarterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:quarter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberScientificNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberScientificNumberElement.java
new file mode 100644
index 0000000..eaa06f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberScientificNumberElement.java
@@ -0,0 +1,171 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberDecimalPlacesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberGroupingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberMinExponentDigitsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberMinIntegerDigitsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:scientific-number}.
+ *
+ */
+public class NumberScientificNumberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "scientific-number");
+
+	/**
+	 * Create the instance of <code>NumberScientificNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberScientificNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:scientific-number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberDecimalPlacesAttribute</code> , See {@odf.attribute number:decimal-places}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberDecimalPlacesAttribute() {
+		NumberDecimalPlacesAttribute attr = (NumberDecimalPlacesAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "decimal-places");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberDecimalPlacesAttribute</code> , See {@odf.attribute number:decimal-places}
+	 *
+	 * @param numberDecimalPlacesValue   The type is <code>Integer</code>
+	 */
+	public void setNumberDecimalPlacesAttribute(Integer numberDecimalPlacesValue) {
+		NumberDecimalPlacesAttribute attr = new NumberDecimalPlacesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberDecimalPlacesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberGroupingAttribute</code> , See {@odf.attribute number:grouping}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberGroupingAttribute() {
+		NumberGroupingAttribute attr = (NumberGroupingAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "grouping");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberGroupingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberGroupingAttribute</code> , See {@odf.attribute number:grouping}
+	 *
+	 * @param numberGroupingValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberGroupingAttribute(Boolean numberGroupingValue) {
+		NumberGroupingAttribute attr = new NumberGroupingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberGroupingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberMinExponentDigitsAttribute</code> , See {@odf.attribute number:min-exponent-digits}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberMinExponentDigitsAttribute() {
+		NumberMinExponentDigitsAttribute attr = (NumberMinExponentDigitsAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "min-exponent-digits");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberMinExponentDigitsAttribute</code> , See {@odf.attribute number:min-exponent-digits}
+	 *
+	 * @param numberMinExponentDigitsValue   The type is <code>Integer</code>
+	 */
+	public void setNumberMinExponentDigitsAttribute(Integer numberMinExponentDigitsValue) {
+		NumberMinExponentDigitsAttribute attr = new NumberMinExponentDigitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberMinExponentDigitsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberMinIntegerDigitsAttribute</code> , See {@odf.attribute number:min-integer-digits}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberMinIntegerDigitsAttribute() {
+		NumberMinIntegerDigitsAttribute attr = (NumberMinIntegerDigitsAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "min-integer-digits");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberMinIntegerDigitsAttribute</code> , See {@odf.attribute number:min-integer-digits}
+	 *
+	 * @param numberMinIntegerDigitsValue   The type is <code>Integer</code>
+	 */
+	public void setNumberMinIntegerDigitsAttribute(Integer numberMinIntegerDigitsValue) {
+		NumberMinIntegerDigitsAttribute attr = new NumberMinIntegerDigitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberMinIntegerDigitsValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberSecondsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberSecondsElement.java
new file mode 100644
index 0000000..6fcc704
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberSecondsElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberDecimalPlacesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:seconds}.
+ *
+ */
+public class NumberSecondsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "seconds");
+
+	/**
+	 * Create the instance of <code>NumberSecondsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberSecondsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:seconds}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberDecimalPlacesAttribute</code> , See {@odf.attribute number:decimal-places}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNumberDecimalPlacesAttribute() {
+		NumberDecimalPlacesAttribute attr = (NumberDecimalPlacesAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "decimal-places");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(NumberDecimalPlacesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberDecimalPlacesAttribute</code> , See {@odf.attribute number:decimal-places}
+	 *
+	 * @param numberDecimalPlacesValue   The type is <code>Integer</code>
+	 */
+	public void setNumberDecimalPlacesAttribute(Integer numberDecimalPlacesValue) {
+		NumberDecimalPlacesAttribute attr = new NumberDecimalPlacesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(numberDecimalPlacesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextContentElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextContentElement.java
new file mode 100644
index 0000000..c2115c0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextContentElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:text-content}.
+ *
+ */
+public class NumberTextContentElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "text-content");
+
+	/**
+	 * Create the instance of <code>NumberTextContentElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberTextContentElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:text-content}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextElement.java
new file mode 100644
index 0000000..c11e547
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:text}.
+ *
+ */
+public class NumberTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "text");
+
+	/**
+	 * Create the instance of <code>NumberTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextStyleElement.java
new file mode 100644
index 0000000..a9a6001
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTextStyleElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:text-style}.
+ *
+ */
+public class NumberTextStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "text-style");
+
+	/**
+	 * Create the instance of <code>NumberTextStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberTextStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:text-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text-content}.
+	 *
+	 * @return the element {@odf.element number:text-content}
+	 */
+	public NumberTextContentElement newNumberTextContentElement() {
+		NumberTextContentElement numberTextContent = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextContentElement.class);
+		this.appendChild(numberTextContent);
+		return numberTextContent;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTimeStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTimeStyleElement.java
new file mode 100644
index 0000000..f5731b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberTimeStyleElement.java
@@ -0,0 +1,508 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberFormatSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTransliterationStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberTruncateOnOverflowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVolatileAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:time-style}.
+ *
+ */
+public class NumberTimeStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "time-style");
+
+	/**
+	 * Create the instance of <code>NumberTimeStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberTimeStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:time-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCountryAttribute() {
+		NumberCountryAttribute attr = (NumberCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCountryAttribute</code> , See {@odf.attribute number:country}
+	 *
+	 * @param numberCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberCountryAttribute(String numberCountryValue) {
+		NumberCountryAttribute attr = new NumberCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberFormatSourceAttribute</code> , See {@odf.attribute number:format-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberFormatSourceAttribute() {
+		NumberFormatSourceAttribute attr = (NumberFormatSourceAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "format-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberFormatSourceAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberFormatSourceAttribute</code> , See {@odf.attribute number:format-source}
+	 *
+	 * @param numberFormatSourceValue   The type is <code>String</code>
+	 */
+	public void setNumberFormatSourceAttribute(String numberFormatSourceValue) {
+		NumberFormatSourceAttribute attr = new NumberFormatSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberFormatSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberLanguageAttribute() {
+		NumberLanguageAttribute attr = (NumberLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberLanguageAttribute</code> , See {@odf.attribute number:language}
+	 *
+	 * @param numberLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberLanguageAttribute(String numberLanguageValue) {
+		NumberLanguageAttribute attr = new NumberLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberRfcLanguageTagAttribute() {
+		NumberRfcLanguageTagAttribute attr = (NumberRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberRfcLanguageTagAttribute</code> , See {@odf.attribute number:rfc-language-tag}
+	 *
+	 * @param numberRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setNumberRfcLanguageTagAttribute(String numberRfcLanguageTagValue) {
+		NumberRfcLanguageTagAttribute attr = new NumberRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberScriptAttribute() {
+		NumberScriptAttribute attr = (NumberScriptAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberScriptAttribute</code> , See {@odf.attribute number:script}
+	 *
+	 * @param numberScriptValue   The type is <code>String</code>
+	 */
+	public void setNumberScriptAttribute(String numberScriptValue) {
+		NumberScriptAttribute attr = new NumberScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTitleAttribute() {
+		NumberTitleAttribute attr = (NumberTitleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTitleAttribute</code> , See {@odf.attribute number:title}
+	 *
+	 * @param numberTitleValue   The type is <code>String</code>
+	 */
+	public void setNumberTitleAttribute(String numberTitleValue) {
+		NumberTitleAttribute attr = new NumberTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationCountryAttribute() {
+		NumberTransliterationCountryAttribute attr = (NumberTransliterationCountryAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationCountryAttribute</code> , See {@odf.attribute number:transliteration-country}
+	 *
+	 * @param numberTransliterationCountryValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationCountryAttribute(String numberTransliterationCountryValue) {
+		NumberTransliterationCountryAttribute attr = new NumberTransliterationCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationFormatAttribute() {
+		NumberTransliterationFormatAttribute attr = (NumberTransliterationFormatAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationFormatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationFormatAttribute</code> , See {@odf.attribute number:transliteration-format}
+	 *
+	 * @param numberTransliterationFormatValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationFormatAttribute(String numberTransliterationFormatValue) {
+		NumberTransliterationFormatAttribute attr = new NumberTransliterationFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationLanguageAttribute() {
+		NumberTransliterationLanguageAttribute attr = (NumberTransliterationLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationLanguageAttribute</code> , See {@odf.attribute number:transliteration-language}
+	 *
+	 * @param numberTransliterationLanguageValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationLanguageAttribute(String numberTransliterationLanguageValue) {
+		NumberTransliterationLanguageAttribute attr = new NumberTransliterationLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberTransliterationStyleAttribute() {
+		NumberTransliterationStyleAttribute attr = (NumberTransliterationStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "transliteration-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return NumberTransliterationStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTransliterationStyleAttribute</code> , See {@odf.attribute number:transliteration-style}
+	 *
+	 * @param numberTransliterationStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberTransliterationStyleAttribute(String numberTransliterationStyleValue) {
+		NumberTransliterationStyleAttribute attr = new NumberTransliterationStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberTransliterationStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberTruncateOnOverflowAttribute</code> , See {@odf.attribute number:truncate-on-overflow}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getNumberTruncateOnOverflowAttribute() {
+		NumberTruncateOnOverflowAttribute attr = (NumberTruncateOnOverflowAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "truncate-on-overflow");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(NumberTruncateOnOverflowAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberTruncateOnOverflowAttribute</code> , See {@odf.attribute number:truncate-on-overflow}
+	 *
+	 * @param numberTruncateOnOverflowValue   The type is <code>Boolean</code>
+	 */
+	public void setNumberTruncateOnOverflowAttribute(Boolean numberTruncateOnOverflowValue) {
+		NumberTruncateOnOverflowAttribute attr = new NumberTruncateOnOverflowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(numberTruncateOnOverflowValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleVolatileAttribute() {
+		StyleVolatileAttribute attr = (StyleVolatileAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "volatile");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVolatileAttribute</code> , See {@odf.attribute style:volatile}
+	 *
+	 * @param styleVolatileValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleVolatileAttribute(Boolean styleVolatileValue) {
+		StyleVolatileAttribute attr = new StyleVolatileAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleVolatileValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element number:am-pm}.
+	 *
+	 * @return the element {@odf.element number:am-pm}
+	 */
+	public NumberAmPmElement newNumberAmPmElement() {
+		NumberAmPmElement numberAmPm = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberAmPmElement.class);
+		this.appendChild(numberAmPm);
+		return numberAmPm;
+	}
+
+	/**
+	 * Create child element {@odf.element number:hours}.
+	 *
+	 * @return the element {@odf.element number:hours}
+	 */
+	public NumberHoursElement newNumberHoursElement() {
+		NumberHoursElement numberHours = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberHoursElement.class);
+		this.appendChild(numberHours);
+		return numberHours;
+	}
+
+	/**
+	 * Create child element {@odf.element number:minutes}.
+	 *
+	 * @return the element {@odf.element number:minutes}
+	 */
+	public NumberMinutesElement newNumberMinutesElement() {
+		NumberMinutesElement numberMinutes = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberMinutesElement.class);
+		this.appendChild(numberMinutes);
+		return numberMinutes;
+	}
+
+	/**
+	 * Create child element {@odf.element number:seconds}.
+	 *
+	 * @return the element {@odf.element number:seconds}
+	 */
+	public NumberSecondsElement newNumberSecondsElement() {
+		NumberSecondsElement numberSeconds = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberSecondsElement.class);
+		this.appendChild(numberSeconds);
+		return numberSeconds;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text}.
+	 *
+	 * @return the element {@odf.element number:text}
+	 */
+	public NumberTextElement newNumberTextElement() {
+		NumberTextElement numberText = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextElement.class);
+		this.appendChild(numberText);
+		return numberText;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberWeekOfYearElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberWeekOfYearElement.java
new file mode 100644
index 0000000..6db3b19
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberWeekOfYearElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:week-of-year}.
+ *
+ */
+public class NumberWeekOfYearElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "week-of-year");
+
+	/**
+	 * Create the instance of <code>NumberWeekOfYearElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberWeekOfYearElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:week-of-year}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberYearElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberYearElement.java
new file mode 100644
index 0000000..d46e766
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/number/NumberYearElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberCalendarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberStyleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element number:year}.
+ *
+ */
+public class NumberYearElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.NUMBER, "year");
+
+	/**
+	 * Create the instance of <code>NumberYearElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public NumberYearElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element number:year}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberCalendarAttribute() {
+		NumberCalendarAttribute attr = (NumberCalendarAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "calendar");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberCalendarAttribute</code> , See {@odf.attribute number:calendar}
+	 *
+	 * @param numberCalendarValue   The type is <code>String</code>
+	 */
+	public void setNumberCalendarAttribute(String numberCalendarValue) {
+		NumberCalendarAttribute attr = new NumberCalendarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberCalendarValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getNumberStyleAttribute() {
+		NumberStyleAttribute attr = (NumberStyleAttribute) getOdfAttribute(OdfDocumentNamespace.NUMBER, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>NumberStyleAttribute</code> , See {@odf.attribute number:style}
+	 *
+	 * @param numberStyleValue   The type is <code>String</code>
+	 */
+	public void setNumberStyleAttribute(String numberStyleValue) {
+		NumberStyleAttribute attr = new NumberStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(numberStyleValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAnnotationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAnnotationElement.java
new file mode 100644
index 0000000..b1b8fe4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAnnotationElement.java
@@ -0,0 +1,434 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDateStringElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionPointXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionPointYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCornerRadiusAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLayerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawShapeElementBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:annotation}.
+ *
+ */
+public class OfficeAnnotationElement extends DrawShapeElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "annotation");
+
+	/**
+	 * Create the instance of <code>OfficeAnnotationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeAnnotationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:annotation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionPointXAttribute</code> , See {@odf.attribute draw:caption-point-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionPointXAttribute() {
+		DrawCaptionPointXAttribute attr = (DrawCaptionPointXAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-point-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionPointXAttribute</code> , See {@odf.attribute draw:caption-point-x}
+	 *
+	 * @param drawCaptionPointXValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionPointXAttribute(String drawCaptionPointXValue) {
+		DrawCaptionPointXAttribute attr = new DrawCaptionPointXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionPointXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionPointYAttribute</code> , See {@odf.attribute draw:caption-point-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionPointYAttribute() {
+		DrawCaptionPointYAttribute attr = (DrawCaptionPointYAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-point-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionPointYAttribute</code> , See {@odf.attribute draw:caption-point-y}
+	 *
+	 * @param drawCaptionPointYValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionPointYAttribute(String drawCaptionPointYValue) {
+		DrawCaptionPointYAttribute attr = new DrawCaptionPointYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionPointYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCornerRadiusAttribute() {
+		DrawCornerRadiusAttribute attr = (DrawCornerRadiusAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "corner-radius");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCornerRadiusAttribute</code> , See {@odf.attribute draw:corner-radius}
+	 *
+	 * @param drawCornerRadiusValue   The type is <code>String</code>
+	 */
+	public void setDrawCornerRadiusAttribute(String drawCornerRadiusValue) {
+		DrawCornerRadiusAttribute attr = new DrawCornerRadiusAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCornerRadiusValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLayerAttribute() {
+		DrawLayerAttribute attr = (DrawLayerAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "layer");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLayerAttribute</code> , See {@odf.attribute draw:layer}
+	 *
+	 * @param drawLayerValue   The type is <code>String</code>
+	 */
+	public void setDrawLayerAttribute(String drawLayerValue) {
+		DrawLayerAttribute attr = new DrawLayerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLayerValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextStyleNameAttribute() {
+		DrawTextStyleNameAttribute attr = (DrawTextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "text-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextStyleNameAttribute</code> , See {@odf.attribute draw:text-style-name}
+	 *
+	 * @param drawTextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawTextStyleNameAttribute(String drawTextStyleNameValue) {
+		DrawTextStyleNameAttribute attr = new DrawTextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTransformAttribute() {
+		DrawTransformAttribute attr = (DrawTransformAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTransformAttribute</code> , See {@odf.attribute draw:transform}
+	 *
+	 * @param drawTransformValue   The type is <code>String</code>
+	 */
+	public void setDrawTransformAttribute(String drawTransformValue) {
+		DrawTransformAttribute attr = new DrawTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDisplayAttribute</code> , See {@odf.attribute office:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeDisplayAttribute() {
+		OfficeDisplayAttribute attr = (OfficeDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDisplayAttribute</code> , See {@odf.attribute office:display}
+	 *
+	 * @param officeDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeDisplayAttribute(Boolean officeDisplayValue) {
+		OfficeDisplayAttribute attr = new OfficeDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dc:creator}.
+	 *
+	 * @return the element {@odf.element dc:creator}
+	 */
+	public DcCreatorElement newDcCreatorElement() {
+		DcCreatorElement dcCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(DcCreatorElement.class);
+		this.appendChild(dcCreator);
+		return dcCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:date}.
+	 *
+	 * @return the element {@odf.element dc:date}
+	 */
+	public DcDateElement newDcDateElement() {
+		DcDateElement dcDate = ((OdfFileDom) this.ownerDocument).newOdfElement(DcDateElement.class);
+		this.appendChild(dcDate);
+		return dcDate;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:date-string}.
+	 *
+	 * @return the element {@odf.element meta:date-string}
+	 */
+	public MetaDateStringElement newMetaDateStringElement() {
+		MetaDateStringElement metaDateString = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaDateStringElement.class);
+		this.appendChild(metaDateString);
+		return metaDateString;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAnnotationEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAnnotationEndElement.java
new file mode 100644
index 0000000..bb65a72
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAnnotationEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:annotation-end}.
+ *
+ */
+public class OfficeAnnotationEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "annotation-end");
+
+	/**
+	 * Create the instance of <code>OfficeAnnotationEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeAnnotationEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:annotation-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAutomaticStylesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAutomaticStylesElement.java
new file mode 100644
index 0000000..bff8d33
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeAutomaticStylesElement.java
@@ -0,0 +1,214 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencyStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDateStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberPercentageStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTimeStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListStyleElement;
+import org.odftoolkit.odfdom.pkg.OdfContainerElementBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:automatic-styles}.
+ *
+ */
+public class OfficeAutomaticStylesElement extends OdfContainerElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "automatic-styles");
+
+	/**
+	 * Create the instance of <code>OfficeAutomaticStylesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeAutomaticStylesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:automatic-styles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element number:boolean-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:boolean-style}
+	 */
+	 public NumberBooleanStyleElement newNumberBooleanStyleElement(String styleNameValue) {
+		NumberBooleanStyleElement numberBooleanStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberBooleanStyleElement.class);
+		numberBooleanStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberBooleanStyle);
+		return numberBooleanStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:currency-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:currency-style}
+	 */
+	 public NumberCurrencyStyleElement newNumberCurrencyStyleElement(String styleNameValue) {
+		NumberCurrencyStyleElement numberCurrencyStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberCurrencyStyleElement.class);
+		numberCurrencyStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberCurrencyStyle);
+		return numberCurrencyStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:date-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:date-style}
+	 */
+	 public NumberDateStyleElement newNumberDateStyleElement(String styleNameValue) {
+		NumberDateStyleElement numberDateStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberDateStyleElement.class);
+		numberDateStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberDateStyle);
+		return numberDateStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:number-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:number-style}
+	 */
+	 public NumberNumberStyleElement newNumberNumberStyleElement(String styleNameValue) {
+		NumberNumberStyleElement numberNumberStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberNumberStyleElement.class);
+		numberNumberStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberNumberStyle);
+		return numberNumberStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:percentage-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:percentage-style}
+	 */
+	 public NumberPercentageStyleElement newNumberPercentageStyleElement(String styleNameValue) {
+		NumberPercentageStyleElement numberPercentageStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberPercentageStyleElement.class);
+		numberPercentageStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberPercentageStyle);
+		return numberPercentageStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:text-style}
+	 */
+	 public NumberTextStyleElement newNumberTextStyleElement(String styleNameValue) {
+		NumberTextStyleElement numberTextStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextStyleElement.class);
+		numberTextStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberTextStyle);
+		return numberTextStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:time-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:time-style}
+	 */
+	 public NumberTimeStyleElement newNumberTimeStyleElement(String styleNameValue) {
+		NumberTimeStyleElement numberTimeStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTimeStyleElement.class);
+		numberTimeStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberTimeStyle);
+		return numberTimeStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:page-layout}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element style:page-layout}
+	 */
+	 public StylePageLayoutElement newStylePageLayoutElement(String styleNameValue) {
+		StylePageLayoutElement stylePageLayout = ((OdfFileDom) this.ownerDocument).newOdfElement(StylePageLayoutElement.class);
+		stylePageLayout.setStyleNameAttribute(styleNameValue);
+		this.appendChild(stylePageLayout);
+		return stylePageLayout;
+	}
+
+	/**
+	 * Create child element {@odf.element style:style}.
+	 *
+	 * @param styleFamilyValue  the <code>String</code> value of <code>StyleFamilyAttribute</code>, see {@odf.attribute  style:family} at specification
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element style:style}
+	 */
+	 public StyleStyleElement newStyleStyleElement(String styleFamilyValue, String styleNameValue) {
+		StyleStyleElement styleStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleStyleElement.class);
+		styleStyle.setStyleFamilyAttribute(styleFamilyValue);
+		styleStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(styleStyle);
+		return styleStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element text:list-style}
+	 */
+	 public TextListStyleElement newTextListStyleElement(String styleNameValue) {
+		TextListStyleElement textListStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListStyleElement.class);
+		textListStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(textListStyle);
+		return textListStyle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeBinaryDataElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeBinaryDataElement.java
new file mode 100644
index 0000000..22f5ae1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeBinaryDataElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:binary-data}.
+ *
+ */
+public class OfficeBinaryDataElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "binary-data");
+
+	/**
+	 * Create the instance of <code>OfficeBinaryDataElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeBinaryDataElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:binary-data}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeBodyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeBodyElement.java
new file mode 100644
index 0000000..fb13aba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeBodyElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:body}.
+ *
+ */
+public class OfficeBodyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "body");
+
+	/**
+	 * Create the instance of <code>OfficeBodyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeBodyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:body}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element office:chart}.
+	 *
+	 * @return the element {@odf.element office:chart}
+	 */
+	public OfficeChartElement newOfficeChartElement() {
+		OfficeChartElement officeChart = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChartElement.class);
+		this.appendChild(officeChart);
+		return officeChart;
+	}
+
+	/**
+	 * Create child element {@odf.element office:database}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:database}
+	 */
+	public OfficeDatabaseElement newOfficeDatabaseElement() {
+		OfficeDatabaseElement officeDatabase = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDatabaseElement.class);
+		this.appendChild(officeDatabase);
+		return officeDatabase;
+	}
+
+	/**
+	 * Create child element {@odf.element office:drawing}.
+	 *
+	 * @return the element {@odf.element office:drawing}
+	 */
+	public OfficeDrawingElement newOfficeDrawingElement() {
+		OfficeDrawingElement officeDrawing = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDrawingElement.class);
+		this.appendChild(officeDrawing);
+		return officeDrawing;
+	}
+
+	/**
+	 * Create child element {@odf.element office:image}.
+	 *
+	 * @return the element {@odf.element office:image}
+	 */
+	public OfficeImageElement newOfficeImageElement() {
+		OfficeImageElement officeImage = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeImageElement.class);
+		this.appendChild(officeImage);
+		return officeImage;
+	}
+
+	/**
+	 * Create child element {@odf.element office:presentation}.
+	 *
+	 * @return the element {@odf.element office:presentation}
+	 */
+	public OfficePresentationElement newOfficePresentationElement() {
+		OfficePresentationElement officePresentation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficePresentationElement.class);
+		this.appendChild(officePresentation);
+		return officePresentation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:spreadsheet}.
+	 *
+	 * @return the element {@odf.element office:spreadsheet}
+	 */
+	public OfficeSpreadsheetElement newOfficeSpreadsheetElement() {
+		OfficeSpreadsheetElement officeSpreadsheet = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeSpreadsheetElement.class);
+		this.appendChild(officeSpreadsheet);
+		return officeSpreadsheet;
+	}
+
+	/**
+	 * Create child element {@odf.element office:text}.
+	 *
+	 * @return the element {@odf.element office:text}
+	 */
+	public OfficeTextElement newOfficeTextElement() {
+		OfficeTextElement officeText = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeTextElement.class);
+		this.appendChild(officeText);
+		return officeText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeChangeInfoElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeChangeInfoElement.java
new file mode 100644
index 0000000..2ef4466
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeChangeInfoElement.java
@@ -0,0 +1,111 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:change-info}.
+ *
+ */
+public class OfficeChangeInfoElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "change-info");
+
+	/**
+	 * Create the instance of <code>OfficeChangeInfoElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeChangeInfoElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:change-info}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:creator}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element dc:creator}
+	 */
+	public DcCreatorElement newDcCreatorElement() {
+		DcCreatorElement dcCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(DcCreatorElement.class);
+		this.appendChild(dcCreator);
+		return dcCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:date}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element dc:date}
+	 */
+	public DcDateElement newDcDateElement() {
+		DcDateElement dcDate = ((OdfFileDom) this.ownerDocument).newOdfElement(DcDateElement.class);
+		this.appendChild(dcDate);
+		return dcDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeChartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeChartElement.java
new file mode 100644
index 0000000..88dfb64
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeChartElement.java
@@ -0,0 +1,253 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.chart.ChartChartElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableConsolidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTablesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinksElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:chart}.
+ *
+ */
+public class OfficeChartElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "chart");
+
+	/**
+	 * Create the instance of <code>OfficeChartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeChartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:chart}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:chart}.
+	 *
+	 * @param chartClassValue  the <code>String</code> value of <code>ChartClassAttribute</code>, see {@odf.attribute  chart:class} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element chart:chart}
+	 */
+	 public ChartChartElement newChartChartElement(String chartClassValue) {
+		ChartChartElement chartChart = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartChartElement.class);
+		chartChart.setChartClassAttribute(chartClassValue);
+		this.appendChild(chartChart);
+		return chartChart;
+	}
+
+	/**
+	 * Create child element {@odf.element table:calculation-settings}.
+	 *
+	 * @return the element {@odf.element table:calculation-settings}
+	 */
+	public TableCalculationSettingsElement newTableCalculationSettingsElement() {
+		TableCalculationSettingsElement tableCalculationSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCalculationSettingsElement.class);
+		this.appendChild(tableCalculationSettings);
+		return tableCalculationSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element table:consolidation}.
+	 *
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @param tableSourceCellRangeAddressesValue  the <code>String</code> value of <code>TableSourceCellRangeAddressesAttribute</code>, see {@odf.attribute  table:source-cell-range-addresses} at specification
+	 * @param tableTargetCellAddressValue  the <code>String</code> value of <code>TableTargetCellAddressAttribute</code>, see {@odf.attribute  table:target-cell-address} at specification
+	 * @return the element {@odf.element table:consolidation}
+	 */
+	 public TableConsolidationElement newTableConsolidationElement(String tableFunctionValue, String tableSourceCellRangeAddressesValue, String tableTargetCellAddressValue) {
+		TableConsolidationElement tableConsolidation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableConsolidationElement.class);
+		tableConsolidation.setTableFunctionAttribute(tableFunctionValue);
+		tableConsolidation.setTableSourceCellRangeAddressesAttribute(tableSourceCellRangeAddressesValue);
+		tableConsolidation.setTableTargetCellAddressAttribute(tableTargetCellAddressValue);
+		this.appendChild(tableConsolidation);
+		return tableConsolidation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:content-validations}.
+	 *
+	 * @return the element {@odf.element table:content-validations}
+	 */
+	public TableContentValidationsElement newTableContentValidationsElement() {
+		TableContentValidationsElement tableContentValidations = ((OdfFileDom) this.ownerDocument).newOdfElement(TableContentValidationsElement.class);
+		this.appendChild(tableContentValidations);
+		return tableContentValidations;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-tables}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-tables}
+	 */
+	public TableDataPilotTablesElement newTableDataPilotTablesElement() {
+		TableDataPilotTablesElement tableDataPilotTables = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotTablesElement.class);
+		this.appendChild(tableDataPilotTables);
+		return tableDataPilotTables;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-ranges}.
+	 *
+	 * @return the element {@odf.element table:database-ranges}
+	 */
+	public TableDatabaseRangesElement newTableDatabaseRangesElement() {
+		TableDatabaseRangesElement tableDatabaseRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseRangesElement.class);
+		this.appendChild(tableDatabaseRanges);
+		return tableDatabaseRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dde-links}.
+	 *
+	 * @return the element {@odf.element table:dde-links}
+	 */
+	public TableDdeLinksElement newTableDdeLinksElement() {
+		TableDdeLinksElement tableDdeLinks = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDdeLinksElement.class);
+		this.appendChild(tableDdeLinks);
+		return tableDdeLinks;
+	}
+
+	/**
+	 * Create child element {@odf.element table:label-ranges}.
+	 *
+	 * @return the element {@odf.element table:label-ranges}
+	 */
+	public TableLabelRangesElement newTableLabelRangesElement() {
+		TableLabelRangesElement tableLabelRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLabelRangesElement.class);
+		this.appendChild(tableLabelRanges);
+		return tableLabelRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expressions}.
+	 *
+	 * @return the element {@odf.element table:named-expressions}
+	 */
+	public TableNamedExpressionsElement newTableNamedExpressionsElement() {
+		TableNamedExpressionsElement tableNamedExpressions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionsElement.class);
+		this.appendChild(tableNamedExpressions);
+		return tableNamedExpressions;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDatabaseElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDatabaseElement.java
new file mode 100644
index 0000000..52b06bf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDatabaseElement.java
@@ -0,0 +1,157 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.db.DbDataSourceElement;
+import org.odftoolkit.odfdom.dom.element.db.DbFormsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbQueriesElement;
+import org.odftoolkit.odfdom.dom.element.db.DbReportsElement;
+import org.odftoolkit.odfdom.dom.element.db.DbSchemaDefinitionElement;
+import org.odftoolkit.odfdom.dom.element.db.DbTableRepresentationsElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:database}.
+ *
+ */
+public class OfficeDatabaseElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "database");
+
+	/**
+	 * Create the instance of <code>OfficeDatabaseElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDatabaseElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:database}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element db:data-source}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element db:data-source}
+	 */
+	public DbDataSourceElement newDbDataSourceElement() {
+		DbDataSourceElement dbDataSource = ((OdfFileDom) this.ownerDocument).newOdfElement(DbDataSourceElement.class);
+		this.appendChild(dbDataSource);
+		return dbDataSource;
+	}
+
+	/**
+	 * Create child element {@odf.element db:forms}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:forms}
+	 */
+	public DbFormsElement newDbFormsElement() {
+		DbFormsElement dbForms = ((OdfFileDom) this.ownerDocument).newOdfElement(DbFormsElement.class);
+		this.appendChild(dbForms);
+		return dbForms;
+	}
+
+	/**
+	 * Create child element {@odf.element db:queries}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:queries}
+	 */
+	public DbQueriesElement newDbQueriesElement() {
+		DbQueriesElement dbQueries = ((OdfFileDom) this.ownerDocument).newOdfElement(DbQueriesElement.class);
+		this.appendChild(dbQueries);
+		return dbQueries;
+	}
+
+	/**
+	 * Create child element {@odf.element db:reports}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:reports}
+	 */
+	public DbReportsElement newDbReportsElement() {
+		DbReportsElement dbReports = ((OdfFileDom) this.ownerDocument).newOdfElement(DbReportsElement.class);
+		this.appendChild(dbReports);
+		return dbReports;
+	}
+
+	/**
+	 * Create child element {@odf.element db:schema-definition}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:schema-definition}
+	 */
+	public DbSchemaDefinitionElement newDbSchemaDefinitionElement() {
+		DbSchemaDefinitionElement dbSchemaDefinition = ((OdfFileDom) this.ownerDocument).newOdfElement(DbSchemaDefinitionElement.class);
+		this.appendChild(dbSchemaDefinition);
+		return dbSchemaDefinition;
+	}
+
+	/**
+	 * Create child element {@odf.element db:table-representations}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element db:table-representations}
+	 */
+	public DbTableRepresentationsElement newDbTableRepresentationsElement() {
+		DbTableRepresentationsElement dbTableRepresentations = ((OdfFileDom) this.ownerDocument).newOdfElement(DbTableRepresentationsElement.class);
+		this.appendChild(dbTableRepresentations);
+		return dbTableRepresentations;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDdeSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDdeSourceElement.java
new file mode 100644
index 0000000..ca53ba6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDdeSourceElement.java
@@ -0,0 +1,227 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeAutomaticUpdateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeConversionModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDdeApplicationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDdeItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDdeTopicAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:dde-source}.
+ *
+ */
+public class OfficeDdeSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "dde-source");
+
+	/**
+	 * Create the instance of <code>OfficeDdeSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDdeSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:dde-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeAutomaticUpdateAttribute</code> , See {@odf.attribute office:automatic-update}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeAutomaticUpdateAttribute() {
+		OfficeAutomaticUpdateAttribute attr = (OfficeAutomaticUpdateAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "automatic-update");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(OfficeAutomaticUpdateAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeAutomaticUpdateAttribute</code> , See {@odf.attribute office:automatic-update}
+	 *
+	 * @param officeAutomaticUpdateValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeAutomaticUpdateAttribute(Boolean officeAutomaticUpdateValue) {
+		OfficeAutomaticUpdateAttribute attr = new OfficeAutomaticUpdateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeAutomaticUpdateValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeConversionModeAttribute</code> , See {@odf.attribute office:conversion-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeConversionModeAttribute() {
+		OfficeConversionModeAttribute attr = (OfficeConversionModeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "conversion-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return OfficeConversionModeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeConversionModeAttribute</code> , See {@odf.attribute office:conversion-mode}
+	 *
+	 * @param officeConversionModeValue   The type is <code>String</code>
+	 */
+	public void setOfficeConversionModeAttribute(String officeConversionModeValue) {
+		OfficeConversionModeAttribute attr = new OfficeConversionModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeConversionModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDdeApplicationAttribute</code> , See {@odf.attribute office:dde-application}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDdeApplicationAttribute() {
+		OfficeDdeApplicationAttribute attr = (OfficeDdeApplicationAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "dde-application");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDdeApplicationAttribute</code> , See {@odf.attribute office:dde-application}
+	 *
+	 * @param officeDdeApplicationValue   The type is <code>String</code>
+	 */
+	public void setOfficeDdeApplicationAttribute(String officeDdeApplicationValue) {
+		OfficeDdeApplicationAttribute attr = new OfficeDdeApplicationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDdeApplicationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDdeItemAttribute</code> , See {@odf.attribute office:dde-item}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDdeItemAttribute() {
+		OfficeDdeItemAttribute attr = (OfficeDdeItemAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "dde-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDdeItemAttribute</code> , See {@odf.attribute office:dde-item}
+	 *
+	 * @param officeDdeItemValue   The type is <code>String</code>
+	 */
+	public void setOfficeDdeItemAttribute(String officeDdeItemValue) {
+		OfficeDdeItemAttribute attr = new OfficeDdeItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDdeItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDdeTopicAttribute</code> , See {@odf.attribute office:dde-topic}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDdeTopicAttribute() {
+		OfficeDdeTopicAttribute attr = (OfficeDdeTopicAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "dde-topic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDdeTopicAttribute</code> , See {@odf.attribute office:dde-topic}
+	 *
+	 * @param officeDdeTopicValue   The type is <code>String</code>
+	 */
+	public void setOfficeDdeTopicAttribute(String officeDdeTopicValue) {
+		OfficeDdeTopicAttribute attr = new OfficeDdeTopicAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDdeTopicValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentContentElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentContentElement.java
new file mode 100644
index 0000000..8915241
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentContentElement.java
@@ -0,0 +1,169 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.grddl.GrddlTransformationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:document-content}.
+ *
+ */
+public class OfficeDocumentContentElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "document-content");
+
+	/**
+	 * Create the instance of <code>OfficeDocumentContentElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDocumentContentElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:document-content}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getGrddlTransformationAttribute() {
+		GrddlTransformationAttribute attr = (GrddlTransformationAttribute) getOdfAttribute(OdfDocumentNamespace.GRDDL, "transformation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @param grddlTransformationValue   The type is <code>String</code>
+	 */
+	public void setGrddlTransformationAttribute(String grddlTransformationValue) {
+		GrddlTransformationAttribute attr = new GrddlTransformationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(grddlTransformationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeVersionAttribute() {
+		OfficeVersionAttribute attr = (OfficeVersionAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "version");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * @param officeVersionValue   The type is <code>String</code>
+	 */
+	public void setOfficeVersionAttribute(String officeVersionValue) {
+		OfficeVersionAttribute attr = new OfficeVersionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeVersionValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:automatic-styles}.
+	 *
+	 * @return the element {@odf.element office:automatic-styles}
+	 */
+	public OfficeAutomaticStylesElement newOfficeAutomaticStylesElement() {
+		OfficeAutomaticStylesElement officeAutomaticStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAutomaticStylesElement.class);
+		this.appendChild(officeAutomaticStyles);
+		return officeAutomaticStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element office:body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:body}
+	 */
+	public OfficeBodyElement newOfficeBodyElement() {
+		OfficeBodyElement officeBody = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeBodyElement.class);
+		this.appendChild(officeBody);
+		return officeBody;
+	}
+
+	/**
+	 * Create child element {@odf.element office:font-face-decls}.
+	 *
+	 * @return the element {@odf.element office:font-face-decls}
+	 */
+	public OfficeFontFaceDeclsElement newOfficeFontFaceDeclsElement() {
+		OfficeFontFaceDeclsElement officeFontFaceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFontFaceDeclsElement.class);
+		this.appendChild(officeFontFaceDecls);
+		return officeFontFaceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element office:scripts}.
+	 *
+	 * @return the element {@odf.element office:scripts}
+	 */
+	public OfficeScriptsElement newOfficeScriptsElement() {
+		OfficeScriptsElement officeScripts = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeScriptsElement.class);
+		this.appendChild(officeScripts);
+		return officeScripts;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentElement.java
new file mode 100644
index 0000000..7b0de67
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentElement.java
@@ -0,0 +1,240 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.grddl.GrddlTransformationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeMimetypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:document}.
+ *
+ */
+public class OfficeDocumentElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "document");
+
+	/**
+	 * Create the instance of <code>OfficeDocumentElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDocumentElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:document}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getGrddlTransformationAttribute() {
+		GrddlTransformationAttribute attr = (GrddlTransformationAttribute) getOdfAttribute(OdfDocumentNamespace.GRDDL, "transformation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @param grddlTransformationValue   The type is <code>String</code>
+	 */
+	public void setGrddlTransformationAttribute(String grddlTransformationValue) {
+		GrddlTransformationAttribute attr = new GrddlTransformationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(grddlTransformationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeMimetypeAttribute</code> , See {@odf.attribute office:mimetype}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeMimetypeAttribute() {
+		OfficeMimetypeAttribute attr = (OfficeMimetypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "mimetype");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeMimetypeAttribute</code> , See {@odf.attribute office:mimetype}
+	 *
+	 * @param officeMimetypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeMimetypeAttribute(String officeMimetypeValue) {
+		OfficeMimetypeAttribute attr = new OfficeMimetypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeMimetypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeVersionAttribute() {
+		OfficeVersionAttribute attr = (OfficeVersionAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "version");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * @param officeVersionValue   The type is <code>String</code>
+	 */
+	public void setOfficeVersionAttribute(String officeVersionValue) {
+		OfficeVersionAttribute attr = new OfficeVersionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeVersionValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:automatic-styles}.
+	 *
+	 * @return the element {@odf.element office:automatic-styles}
+	 */
+	public OfficeAutomaticStylesElement newOfficeAutomaticStylesElement() {
+		OfficeAutomaticStylesElement officeAutomaticStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAutomaticStylesElement.class);
+		this.appendChild(officeAutomaticStyles);
+		return officeAutomaticStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element office:body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:body}
+	 */
+	public OfficeBodyElement newOfficeBodyElement() {
+		OfficeBodyElement officeBody = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeBodyElement.class);
+		this.appendChild(officeBody);
+		return officeBody;
+	}
+
+	/**
+	 * Create child element {@odf.element office:font-face-decls}.
+	 *
+	 * @return the element {@odf.element office:font-face-decls}
+	 */
+	public OfficeFontFaceDeclsElement newOfficeFontFaceDeclsElement() {
+		OfficeFontFaceDeclsElement officeFontFaceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFontFaceDeclsElement.class);
+		this.appendChild(officeFontFaceDecls);
+		return officeFontFaceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element office:master-styles}.
+	 *
+	 * @return the element {@odf.element office:master-styles}
+	 */
+	public OfficeMasterStylesElement newOfficeMasterStylesElement() {
+		OfficeMasterStylesElement officeMasterStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeMasterStylesElement.class);
+		this.appendChild(officeMasterStyles);
+		return officeMasterStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element office:meta}.
+	 *
+	 * @return the element {@odf.element office:meta}
+	 */
+	public OfficeMetaElement newOfficeMetaElement() {
+		OfficeMetaElement officeMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeMetaElement.class);
+		this.appendChild(officeMeta);
+		return officeMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element office:scripts}.
+	 *
+	 * @return the element {@odf.element office:scripts}
+	 */
+	public OfficeScriptsElement newOfficeScriptsElement() {
+		OfficeScriptsElement officeScripts = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeScriptsElement.class);
+		this.appendChild(officeScripts);
+		return officeScripts;
+	}
+
+	/**
+	 * Create child element {@odf.element office:settings}.
+	 *
+	 * @return the element {@odf.element office:settings}
+	 */
+	public OfficeSettingsElement newOfficeSettingsElement() {
+		OfficeSettingsElement officeSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeSettingsElement.class);
+		this.appendChild(officeSettings);
+		return officeSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element office:styles}.
+	 *
+	 * @return the element {@odf.element office:styles}
+	 */
+	public OfficeStylesElement newOfficeStylesElement() {
+		OfficeStylesElement officeStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeStylesElement.class);
+		this.appendChild(officeStyles);
+		return officeStyles;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentMetaElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentMetaElement.java
new file mode 100644
index 0000000..0e99f1b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentMetaElement.java
@@ -0,0 +1,134 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.grddl.GrddlTransformationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:document-meta}.
+ *
+ */
+public class OfficeDocumentMetaElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "document-meta");
+
+	/**
+	 * Create the instance of <code>OfficeDocumentMetaElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDocumentMetaElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:document-meta}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getGrddlTransformationAttribute() {
+		GrddlTransformationAttribute attr = (GrddlTransformationAttribute) getOdfAttribute(OdfDocumentNamespace.GRDDL, "transformation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @param grddlTransformationValue   The type is <code>String</code>
+	 */
+	public void setGrddlTransformationAttribute(String grddlTransformationValue) {
+		GrddlTransformationAttribute attr = new GrddlTransformationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(grddlTransformationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeVersionAttribute() {
+		OfficeVersionAttribute attr = (OfficeVersionAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "version");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * @param officeVersionValue   The type is <code>String</code>
+	 */
+	public void setOfficeVersionAttribute(String officeVersionValue) {
+		OfficeVersionAttribute attr = new OfficeVersionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeVersionValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:meta}.
+	 *
+	 * @return the element {@odf.element office:meta}
+	 */
+	public OfficeMetaElement newOfficeMetaElement() {
+		OfficeMetaElement officeMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeMetaElement.class);
+		this.appendChild(officeMeta);
+		return officeMeta;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentSettingsElement.java
new file mode 100644
index 0000000..43375e9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentSettingsElement.java
@@ -0,0 +1,134 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.grddl.GrddlTransformationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:document-settings}.
+ *
+ */
+public class OfficeDocumentSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "document-settings");
+
+	/**
+	 * Create the instance of <code>OfficeDocumentSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDocumentSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:document-settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getGrddlTransformationAttribute() {
+		GrddlTransformationAttribute attr = (GrddlTransformationAttribute) getOdfAttribute(OdfDocumentNamespace.GRDDL, "transformation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @param grddlTransformationValue   The type is <code>String</code>
+	 */
+	public void setGrddlTransformationAttribute(String grddlTransformationValue) {
+		GrddlTransformationAttribute attr = new GrddlTransformationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(grddlTransformationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeVersionAttribute() {
+		OfficeVersionAttribute attr = (OfficeVersionAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "version");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * @param officeVersionValue   The type is <code>String</code>
+	 */
+	public void setOfficeVersionAttribute(String officeVersionValue) {
+		OfficeVersionAttribute attr = new OfficeVersionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeVersionValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:settings}.
+	 *
+	 * @return the element {@odf.element office:settings}
+	 */
+	public OfficeSettingsElement newOfficeSettingsElement() {
+		OfficeSettingsElement officeSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeSettingsElement.class);
+		this.appendChild(officeSettings);
+		return officeSettings;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentStylesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentStylesElement.java
new file mode 100644
index 0000000..17fa6ad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDocumentStylesElement.java
@@ -0,0 +1,167 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.grddl.GrddlTransformationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:document-styles}.
+ *
+ */
+public class OfficeDocumentStylesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "document-styles");
+
+	/**
+	 * Create the instance of <code>OfficeDocumentStylesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDocumentStylesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:document-styles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getGrddlTransformationAttribute() {
+		GrddlTransformationAttribute attr = (GrddlTransformationAttribute) getOdfAttribute(OdfDocumentNamespace.GRDDL, "transformation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>GrddlTransformationAttribute</code> , See {@odf.attribute grddl:transformation}
+	 *
+	 * @param grddlTransformationValue   The type is <code>String</code>
+	 */
+	public void setGrddlTransformationAttribute(String grddlTransformationValue) {
+		GrddlTransformationAttribute attr = new GrddlTransformationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(grddlTransformationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeVersionAttribute() {
+		OfficeVersionAttribute attr = (OfficeVersionAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "version");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeVersionAttribute</code> , See {@odf.attribute office:version}
+	 *
+	 * @param officeVersionValue   The type is <code>String</code>
+	 */
+	public void setOfficeVersionAttribute(String officeVersionValue) {
+		OfficeVersionAttribute attr = new OfficeVersionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeVersionValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:automatic-styles}.
+	 *
+	 * @return the element {@odf.element office:automatic-styles}
+	 */
+	public OfficeAutomaticStylesElement newOfficeAutomaticStylesElement() {
+		OfficeAutomaticStylesElement officeAutomaticStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAutomaticStylesElement.class);
+		this.appendChild(officeAutomaticStyles);
+		return officeAutomaticStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element office:font-face-decls}.
+	 *
+	 * @return the element {@odf.element office:font-face-decls}
+	 */
+	public OfficeFontFaceDeclsElement newOfficeFontFaceDeclsElement() {
+		OfficeFontFaceDeclsElement officeFontFaceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFontFaceDeclsElement.class);
+		this.appendChild(officeFontFaceDecls);
+		return officeFontFaceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element office:master-styles}.
+	 *
+	 * @return the element {@odf.element office:master-styles}
+	 */
+	public OfficeMasterStylesElement newOfficeMasterStylesElement() {
+		OfficeMasterStylesElement officeMasterStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeMasterStylesElement.class);
+		this.appendChild(officeMasterStyles);
+		return officeMasterStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element office:styles}.
+	 *
+	 * @return the element {@odf.element office:styles}
+	 */
+	public OfficeStylesElement newOfficeStylesElement() {
+		OfficeStylesElement officeStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeStylesElement.class);
+		this.appendChild(officeStyles);
+		return officeStyles;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDrawingElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDrawingElement.java
new file mode 100644
index 0000000..1133241
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeDrawingElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableConsolidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTablesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinksElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:drawing}.
+ *
+ */
+public class OfficeDrawingElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "drawing");
+
+	/**
+	 * Create the instance of <code>OfficeDrawingElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeDrawingElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:drawing}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page}.
+	 *
+	 * @param drawMasterPageNameValue  the <code>String</code> value of <code>DrawMasterPageNameAttribute</code>, see {@odf.attribute  draw:master-page-name} at specification
+	 * @return the element {@odf.element draw:page}
+	 */
+	 public DrawPageElement newDrawPageElement(String drawMasterPageNameValue) {
+		DrawPageElement drawPage = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageElement.class);
+		drawPage.setDrawMasterPageNameAttribute(drawMasterPageNameValue);
+		this.appendChild(drawPage);
+		return drawPage;
+	}
+
+	/**
+	 * Create child element {@odf.element table:calculation-settings}.
+	 *
+	 * @return the element {@odf.element table:calculation-settings}
+	 */
+	public TableCalculationSettingsElement newTableCalculationSettingsElement() {
+		TableCalculationSettingsElement tableCalculationSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCalculationSettingsElement.class);
+		this.appendChild(tableCalculationSettings);
+		return tableCalculationSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element table:consolidation}.
+	 *
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @param tableSourceCellRangeAddressesValue  the <code>String</code> value of <code>TableSourceCellRangeAddressesAttribute</code>, see {@odf.attribute  table:source-cell-range-addresses} at specification
+	 * @param tableTargetCellAddressValue  the <code>String</code> value of <code>TableTargetCellAddressAttribute</code>, see {@odf.attribute  table:target-cell-address} at specification
+	 * @return the element {@odf.element table:consolidation}
+	 */
+	 public TableConsolidationElement newTableConsolidationElement(String tableFunctionValue, String tableSourceCellRangeAddressesValue, String tableTargetCellAddressValue) {
+		TableConsolidationElement tableConsolidation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableConsolidationElement.class);
+		tableConsolidation.setTableFunctionAttribute(tableFunctionValue);
+		tableConsolidation.setTableSourceCellRangeAddressesAttribute(tableSourceCellRangeAddressesValue);
+		tableConsolidation.setTableTargetCellAddressAttribute(tableTargetCellAddressValue);
+		this.appendChild(tableConsolidation);
+		return tableConsolidation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:content-validations}.
+	 *
+	 * @return the element {@odf.element table:content-validations}
+	 */
+	public TableContentValidationsElement newTableContentValidationsElement() {
+		TableContentValidationsElement tableContentValidations = ((OdfFileDom) this.ownerDocument).newOdfElement(TableContentValidationsElement.class);
+		this.appendChild(tableContentValidations);
+		return tableContentValidations;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-tables}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-tables}
+	 */
+	public TableDataPilotTablesElement newTableDataPilotTablesElement() {
+		TableDataPilotTablesElement tableDataPilotTables = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotTablesElement.class);
+		this.appendChild(tableDataPilotTables);
+		return tableDataPilotTables;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-ranges}.
+	 *
+	 * @return the element {@odf.element table:database-ranges}
+	 */
+	public TableDatabaseRangesElement newTableDatabaseRangesElement() {
+		TableDatabaseRangesElement tableDatabaseRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseRangesElement.class);
+		this.appendChild(tableDatabaseRanges);
+		return tableDatabaseRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dde-links}.
+	 *
+	 * @return the element {@odf.element table:dde-links}
+	 */
+	public TableDdeLinksElement newTableDdeLinksElement() {
+		TableDdeLinksElement tableDdeLinks = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDdeLinksElement.class);
+		this.appendChild(tableDdeLinks);
+		return tableDdeLinks;
+	}
+
+	/**
+	 * Create child element {@odf.element table:label-ranges}.
+	 *
+	 * @return the element {@odf.element table:label-ranges}
+	 */
+	public TableLabelRangesElement newTableLabelRangesElement() {
+		TableLabelRangesElement tableLabelRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLabelRangesElement.class);
+		this.appendChild(tableLabelRanges);
+		return tableLabelRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expressions}.
+	 *
+	 * @return the element {@odf.element table:named-expressions}
+	 */
+	public TableNamedExpressionsElement newTableNamedExpressionsElement() {
+		TableNamedExpressionsElement tableNamedExpressions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionsElement.class);
+		this.appendChild(tableNamedExpressions);
+		return tableNamedExpressions;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeEventListenersElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeEventListenersElement.java
new file mode 100644
index 0000000..648a639
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeEventListenersElement.java
@@ -0,0 +1,103 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationEventListenerElement;
+import org.odftoolkit.odfdom.dom.element.script.ScriptEventListenerElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:event-listeners}.
+ *
+ */
+public class OfficeEventListenersElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "event-listeners");
+
+	/**
+	 * Create the instance of <code>OfficeEventListenersElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeEventListenersElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:event-listeners}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:event-listener}.
+	 *
+	 * @param presentationActionValue  the <code>String</code> value of <code>PresentationActionAttribute</code>, see {@odf.attribute  presentation:action} at specification
+	 * @param scriptEventNameValue  the <code>String</code> value of <code>ScriptEventNameAttribute</code>, see {@odf.attribute  script:event-name} at specification
+	 * @return the element {@odf.element presentation:event-listener}
+	 */
+	 public PresentationEventListenerElement newPresentationEventListenerElement(String presentationActionValue, String scriptEventNameValue) {
+		PresentationEventListenerElement presentationEventListener = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationEventListenerElement.class);
+		presentationEventListener.setPresentationActionAttribute(presentationActionValue);
+		presentationEventListener.setScriptEventNameAttribute(scriptEventNameValue);
+		this.appendChild(presentationEventListener);
+		return presentationEventListener;
+	}
+
+	/**
+	 * Create child element {@odf.element script:event-listener}.
+	 *
+	 * @param scriptEventNameValue  the <code>String</code> value of <code>ScriptEventNameAttribute</code>, see {@odf.attribute  script:event-name} at specification
+	 * @param scriptLanguageValue  the <code>String</code> value of <code>ScriptLanguageAttribute</code>, see {@odf.attribute  script:language} at specification
+	 * @return the element {@odf.element script:event-listener}
+	 */
+	 public ScriptEventListenerElement newScriptEventListenerElement(String scriptEventNameValue, String scriptLanguageValue) {
+		ScriptEventListenerElement scriptEventListener = ((OdfFileDom) this.ownerDocument).newOdfElement(ScriptEventListenerElement.class);
+		scriptEventListener.setScriptEventNameAttribute(scriptEventNameValue);
+		scriptEventListener.setScriptLanguageAttribute(scriptLanguageValue);
+		this.appendChild(scriptEventListener);
+		return scriptEventListener;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeFontFaceDeclsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeFontFaceDeclsElement.java
new file mode 100644
index 0000000..90185c5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeFontFaceDeclsElement.java
@@ -0,0 +1,85 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleFontFaceElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:font-face-decls}.
+ *
+ */
+public class OfficeFontFaceDeclsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "font-face-decls");
+
+	/**
+	 * Create the instance of <code>OfficeFontFaceDeclsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeFontFaceDeclsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:font-face-decls}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element style:font-face}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element style:font-face}
+	 */
+	 public StyleFontFaceElement newStyleFontFaceElement(String styleNameValue) {
+		StyleFontFaceElement styleFontFace = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleFontFaceElement.class);
+		styleFontFace.setStyleNameAttribute(styleNameValue);
+		this.appendChild(styleFontFace);
+		return styleFontFace;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeFormsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeFormsElement.java
new file mode 100644
index 0000000..57c2ef8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeFormsElement.java
@@ -0,0 +1,145 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;
+import org.odftoolkit.odfdom.dom.element.xforms.XformsModelElement;
+import org.odftoolkit.odfdom.dom.attribute.form.FormApplyDesignModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.form.FormAutomaticFocusAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:forms}.
+ *
+ */
+public class OfficeFormsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "forms");
+
+	/**
+	 * Create the instance of <code>OfficeFormsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeFormsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:forms}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormApplyDesignModeAttribute</code> , See {@odf.attribute form:apply-design-mode}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormApplyDesignModeAttribute() {
+		FormApplyDesignModeAttribute attr = (FormApplyDesignModeAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "apply-design-mode");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormApplyDesignModeAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormApplyDesignModeAttribute</code> , See {@odf.attribute form:apply-design-mode}
+	 *
+	 * @param formApplyDesignModeValue   The type is <code>Boolean</code>
+	 */
+	public void setFormApplyDesignModeAttribute(Boolean formApplyDesignModeValue) {
+		FormApplyDesignModeAttribute attr = new FormApplyDesignModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formApplyDesignModeValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FormAutomaticFocusAttribute</code> , See {@odf.attribute form:automatic-focus}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFormAutomaticFocusAttribute() {
+		FormAutomaticFocusAttribute attr = (FormAutomaticFocusAttribute) getOdfAttribute(OdfDocumentNamespace.FORM, "automatic-focus");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(FormAutomaticFocusAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FormAutomaticFocusAttribute</code> , See {@odf.attribute form:automatic-focus}
+	 *
+	 * @param formAutomaticFocusValue   The type is <code>Boolean</code>
+	 */
+	public void setFormAutomaticFocusAttribute(Boolean formAutomaticFocusValue) {
+		FormAutomaticFocusAttribute attr = new FormAutomaticFocusAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(formAutomaticFocusValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element form:form}.
+	 *
+	 * @return the element {@odf.element form:form}
+	 */
+	public FormFormElement newFormFormElement() {
+		FormFormElement formForm = ((OdfFileDom) this.ownerDocument).newOdfElement(FormFormElement.class);
+		this.appendChild(formForm);
+		return formForm;
+	}
+
+	/**
+	 * Create child element {@odf.element xforms:model}.
+	 *
+	 * @return the element {@odf.element xforms:model}
+	 */
+	public XformsModelElement newXformsModelElement() {
+		XformsModelElement xformsModel = ((OdfFileDom) this.ownerDocument).newOdfElement(XformsModelElement.class);
+		this.appendChild(xformsModel);
+		return xformsModel;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeImageElement.java
new file mode 100644
index 0000000..3ed1b04
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeImageElement.java
@@ -0,0 +1,85 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:image}.
+ *
+ */
+public class OfficeImageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "image");
+
+	/**
+	 * Create the instance of <code>OfficeImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeMasterStylesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeMasterStylesElement.java
new file mode 100644
index 0000000..1f91061
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeMasterStylesElement.java
@@ -0,0 +1,114 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLayerSetElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHandoutMasterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.pkg.OdfContainerElementBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:master-styles}.
+ *
+ */
+public class OfficeMasterStylesElement extends OdfContainerElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "master-styles");
+
+	/**
+	 * Create the instance of <code>OfficeMasterStylesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeMasterStylesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:master-styles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:layer-set}.
+	 *
+	 * @return the element {@odf.element draw:layer-set}
+	 */
+	public DrawLayerSetElement newDrawLayerSetElement() {
+		DrawLayerSetElement drawLayerSet = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLayerSetElement.class);
+		this.appendChild(drawLayerSet);
+		return drawLayerSet;
+	}
+
+	/**
+	 * Create child element {@odf.element style:handout-master}.
+	 *
+	 * @param stylePageLayoutNameValue  the <code>String</code> value of <code>StylePageLayoutNameAttribute</code>, see {@odf.attribute  style:page-layout-name} at specification
+	 * @return the element {@odf.element style:handout-master}
+	 */
+	 public StyleHandoutMasterElement newStyleHandoutMasterElement(String stylePageLayoutNameValue) {
+		StyleHandoutMasterElement styleHandoutMaster = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHandoutMasterElement.class);
+		styleHandoutMaster.setStylePageLayoutNameAttribute(stylePageLayoutNameValue);
+		this.appendChild(styleHandoutMaster);
+		return styleHandoutMaster;
+	}
+
+	/**
+	 * Create child element {@odf.element style:master-page}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @param stylePageLayoutNameValue  the <code>String</code> value of <code>StylePageLayoutNameAttribute</code>, see {@odf.attribute  style:page-layout-name} at specification
+	 * @return the element {@odf.element style:master-page}
+	 */
+	 public StyleMasterPageElement newStyleMasterPageElement(String styleNameValue, String stylePageLayoutNameValue) {
+		StyleMasterPageElement styleMasterPage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMasterPageElement.class);
+		styleMasterPage.setStyleNameAttribute(styleNameValue);
+		styleMasterPage.setStylePageLayoutNameAttribute(stylePageLayoutNameValue);
+		this.appendChild(styleMasterPage);
+		return styleMasterPage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeMetaElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeMetaElement.java
new file mode 100644
index 0000000..b27cb66
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeMetaElement.java
@@ -0,0 +1,345 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDescriptionElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcLanguageElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcSubjectElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcTitleElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaAutoReloadElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaHyperlinkBehaviourElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaTemplateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:meta}.
+ *
+ */
+public class OfficeMetaElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "meta");
+
+	/**
+	 * Create the instance of <code>OfficeMetaElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeMetaElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:meta}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:creator}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dc:creator}
+	 */
+	public DcCreatorElement newDcCreatorElement() {
+		DcCreatorElement dcCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(DcCreatorElement.class);
+		this.appendChild(dcCreator);
+		return dcCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dc:date}
+	 */
+	public DcDateElement newDcDateElement() {
+		DcDateElement dcDate = ((OdfFileDom) this.ownerDocument).newOdfElement(DcDateElement.class);
+		this.appendChild(dcDate);
+		return dcDate;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:description}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dc:description}
+	 */
+	public DcDescriptionElement newDcDescriptionElement() {
+		DcDescriptionElement dcDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(DcDescriptionElement.class);
+		this.appendChild(dcDescription);
+		return dcDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:language}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dc:language}
+	 */
+	public DcLanguageElement newDcLanguageElement() {
+		DcLanguageElement dcLanguage = ((OdfFileDom) this.ownerDocument).newOdfElement(DcLanguageElement.class);
+		this.appendChild(dcLanguage);
+		return dcLanguage;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:subject}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dc:subject}
+	 */
+	public DcSubjectElement newDcSubjectElement() {
+		DcSubjectElement dcSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(DcSubjectElement.class);
+		this.appendChild(dcSubject);
+		return dcSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element dc:title}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dc:title}
+	 */
+	public DcTitleElement newDcTitleElement() {
+		DcTitleElement dcTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(DcTitleElement.class);
+		this.appendChild(dcTitle);
+		return dcTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:auto-reload}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:auto-reload}
+	 */
+	public MetaAutoReloadElement newMetaAutoReloadElement() {
+		MetaAutoReloadElement metaAutoReload = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaAutoReloadElement.class);
+		this.appendChild(metaAutoReload);
+		return metaAutoReload;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:creation-date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:creation-date}
+	 */
+	public MetaCreationDateElement newMetaCreationDateElement() {
+		MetaCreationDateElement metaCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaCreationDateElement.class);
+		this.appendChild(metaCreationDate);
+		return metaCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:document-statistic}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:document-statistic}
+	 */
+	public MetaDocumentStatisticElement newMetaDocumentStatisticElement() {
+		MetaDocumentStatisticElement metaDocumentStatistic = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaDocumentStatisticElement.class);
+		this.appendChild(metaDocumentStatistic);
+		return metaDocumentStatistic;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:editing-cycles}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:editing-cycles}
+	 */
+	public MetaEditingCyclesElement newMetaEditingCyclesElement() {
+		MetaEditingCyclesElement metaEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaEditingCyclesElement.class);
+		this.appendChild(metaEditingCycles);
+		return metaEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:editing-duration}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:editing-duration}
+	 */
+	public MetaEditingDurationElement newMetaEditingDurationElement() {
+		MetaEditingDurationElement metaEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaEditingDurationElement.class);
+		this.appendChild(metaEditingDuration);
+		return metaEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:generator}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:generator}
+	 */
+	public MetaGeneratorElement newMetaGeneratorElement() {
+		MetaGeneratorElement metaGenerator = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaGeneratorElement.class);
+		this.appendChild(metaGenerator);
+		return metaGenerator;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:hyperlink-behaviour}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:hyperlink-behaviour}
+	 */
+	public MetaHyperlinkBehaviourElement newMetaHyperlinkBehaviourElement() {
+		MetaHyperlinkBehaviourElement metaHyperlinkBehaviour = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaHyperlinkBehaviourElement.class);
+		this.appendChild(metaHyperlinkBehaviour);
+		return metaHyperlinkBehaviour;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:initial-creator}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:initial-creator}
+	 */
+	public MetaInitialCreatorElement newMetaInitialCreatorElement() {
+		MetaInitialCreatorElement metaInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaInitialCreatorElement.class);
+		this.appendChild(metaInitialCreator);
+		return metaInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:keyword}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:keyword}
+	 */
+	public MetaKeywordElement newMetaKeywordElement() {
+		MetaKeywordElement metaKeyword = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaKeywordElement.class);
+		this.appendChild(metaKeyword);
+		return metaKeyword;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:print-date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:print-date}
+	 */
+	public MetaPrintDateElement newMetaPrintDateElement() {
+		MetaPrintDateElement metaPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaPrintDateElement.class);
+		this.appendChild(metaPrintDate);
+		return metaPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:printed-by}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:printed-by}
+	 */
+	public MetaPrintedByElement newMetaPrintedByElement() {
+		MetaPrintedByElement metaPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaPrintedByElement.class);
+		this.appendChild(metaPrintedBy);
+		return metaPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:template}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:template}
+	 */
+	 public MetaTemplateElement newMetaTemplateElement(String xlinkHrefValue, String xlinkTypeValue) {
+		MetaTemplateElement metaTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaTemplateElement.class);
+		metaTemplate.setXlinkHrefAttribute(xlinkHrefValue);
+		metaTemplate.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(metaTemplate);
+		return metaTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element meta:user-defined}.
+	 *
+	 * @param metaNameValue  the <code>String</code> value of <code>MetaNameAttribute</code>, see {@odf.attribute  meta:name} at specification
+	 * @param metaValueTypeValue  the <code>String</code> value of <code>MetaValueTypeAttribute</code>, see {@odf.attribute  meta:value-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element meta:user-defined}
+	 */
+	 public MetaUserDefinedElement newMetaUserDefinedElement(String metaNameValue, String metaValueTypeValue) {
+		MetaUserDefinedElement metaUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(MetaUserDefinedElement.class);
+		metaUserDefined.setMetaNameAttribute(metaNameValue);
+		metaUserDefined.setMetaValueTypeAttribute(metaValueTypeValue);
+		this.appendChild(metaUserDefined);
+		return metaUserDefined;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficePresentationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficePresentationElement.java
new file mode 100644
index 0000000..a9cef55
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficePresentationElement.java
@@ -0,0 +1,307 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeDeclElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterDeclElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderDeclElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableConsolidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTablesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinksElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:presentation}.
+ *
+ */
+public class OfficePresentationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "presentation");
+
+	/**
+	 * Create the instance of <code>OfficePresentationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficePresentationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:presentation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page}.
+	 *
+	 * @param drawMasterPageNameValue  the <code>String</code> value of <code>DrawMasterPageNameAttribute</code>, see {@odf.attribute  draw:master-page-name} at specification
+	 * @return the element {@odf.element draw:page}
+	 */
+	 public DrawPageElement newDrawPageElement(String drawMasterPageNameValue) {
+		DrawPageElement drawPage = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageElement.class);
+		drawPage.setDrawMasterPageNameAttribute(drawMasterPageNameValue);
+		this.appendChild(drawPage);
+		return drawPage;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time-decl}.
+	 *
+	 * @param presentationNameValue  the <code>String</code> value of <code>PresentationNameAttribute</code>, see {@odf.attribute  presentation:name} at specification
+	 * @param presentationSourceValue  the <code>String</code> value of <code>PresentationSourceAttribute</code>, see {@odf.attribute  presentation:source} at specification
+	 * @return the element {@odf.element presentation:date-time-decl}
+	 */
+	 public PresentationDateTimeDeclElement newPresentationDateTimeDeclElement(String presentationNameValue, String presentationSourceValue) {
+		PresentationDateTimeDeclElement presentationDateTimeDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeDeclElement.class);
+		presentationDateTimeDecl.setPresentationNameAttribute(presentationNameValue);
+		presentationDateTimeDecl.setPresentationSourceAttribute(presentationSourceValue);
+		this.appendChild(presentationDateTimeDecl);
+		return presentationDateTimeDecl;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer-decl}.
+	 *
+	 * @param presentationNameValue  the <code>String</code> value of <code>PresentationNameAttribute</code>, see {@odf.attribute  presentation:name} at specification
+	 * @return the element {@odf.element presentation:footer-decl}
+	 */
+	 public PresentationFooterDeclElement newPresentationFooterDeclElement(String presentationNameValue) {
+		PresentationFooterDeclElement presentationFooterDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterDeclElement.class);
+		presentationFooterDecl.setPresentationNameAttribute(presentationNameValue);
+		this.appendChild(presentationFooterDecl);
+		return presentationFooterDecl;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header-decl}.
+	 *
+	 * @param presentationNameValue  the <code>String</code> value of <code>PresentationNameAttribute</code>, see {@odf.attribute  presentation:name} at specification
+	 * @return the element {@odf.element presentation:header-decl}
+	 */
+	 public PresentationHeaderDeclElement newPresentationHeaderDeclElement(String presentationNameValue) {
+		PresentationHeaderDeclElement presentationHeaderDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderDeclElement.class);
+		presentationHeaderDecl.setPresentationNameAttribute(presentationNameValue);
+		this.appendChild(presentationHeaderDecl);
+		return presentationHeaderDecl;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:settings}.
+	 *
+	 * @return the element {@odf.element presentation:settings}
+	 */
+	public PresentationSettingsElement newPresentationSettingsElement() {
+		PresentationSettingsElement presentationSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSettingsElement.class);
+		this.appendChild(presentationSettings);
+		return presentationSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element table:calculation-settings}.
+	 *
+	 * @return the element {@odf.element table:calculation-settings}
+	 */
+	public TableCalculationSettingsElement newTableCalculationSettingsElement() {
+		TableCalculationSettingsElement tableCalculationSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCalculationSettingsElement.class);
+		this.appendChild(tableCalculationSettings);
+		return tableCalculationSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element table:consolidation}.
+	 *
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @param tableSourceCellRangeAddressesValue  the <code>String</code> value of <code>TableSourceCellRangeAddressesAttribute</code>, see {@odf.attribute  table:source-cell-range-addresses} at specification
+	 * @param tableTargetCellAddressValue  the <code>String</code> value of <code>TableTargetCellAddressAttribute</code>, see {@odf.attribute  table:target-cell-address} at specification
+	 * @return the element {@odf.element table:consolidation}
+	 */
+	 public TableConsolidationElement newTableConsolidationElement(String tableFunctionValue, String tableSourceCellRangeAddressesValue, String tableTargetCellAddressValue) {
+		TableConsolidationElement tableConsolidation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableConsolidationElement.class);
+		tableConsolidation.setTableFunctionAttribute(tableFunctionValue);
+		tableConsolidation.setTableSourceCellRangeAddressesAttribute(tableSourceCellRangeAddressesValue);
+		tableConsolidation.setTableTargetCellAddressAttribute(tableTargetCellAddressValue);
+		this.appendChild(tableConsolidation);
+		return tableConsolidation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:content-validations}.
+	 *
+	 * @return the element {@odf.element table:content-validations}
+	 */
+	public TableContentValidationsElement newTableContentValidationsElement() {
+		TableContentValidationsElement tableContentValidations = ((OdfFileDom) this.ownerDocument).newOdfElement(TableContentValidationsElement.class);
+		this.appendChild(tableContentValidations);
+		return tableContentValidations;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-tables}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-tables}
+	 */
+	public TableDataPilotTablesElement newTableDataPilotTablesElement() {
+		TableDataPilotTablesElement tableDataPilotTables = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotTablesElement.class);
+		this.appendChild(tableDataPilotTables);
+		return tableDataPilotTables;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-ranges}.
+	 *
+	 * @return the element {@odf.element table:database-ranges}
+	 */
+	public TableDatabaseRangesElement newTableDatabaseRangesElement() {
+		TableDatabaseRangesElement tableDatabaseRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseRangesElement.class);
+		this.appendChild(tableDatabaseRanges);
+		return tableDatabaseRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dde-links}.
+	 *
+	 * @return the element {@odf.element table:dde-links}
+	 */
+	public TableDdeLinksElement newTableDdeLinksElement() {
+		TableDdeLinksElement tableDdeLinks = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDdeLinksElement.class);
+		this.appendChild(tableDdeLinks);
+		return tableDdeLinks;
+	}
+
+	/**
+	 * Create child element {@odf.element table:label-ranges}.
+	 *
+	 * @return the element {@odf.element table:label-ranges}
+	 */
+	public TableLabelRangesElement newTableLabelRangesElement() {
+		TableLabelRangesElement tableLabelRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLabelRangesElement.class);
+		this.appendChild(tableLabelRanges);
+		return tableLabelRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expressions}.
+	 *
+	 * @return the element {@odf.element table:named-expressions}
+	 */
+	public TableNamedExpressionsElement newTableNamedExpressionsElement() {
+		TableNamedExpressionsElement tableNamedExpressions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionsElement.class);
+		this.appendChild(tableNamedExpressions);
+		return tableNamedExpressions;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeScriptElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeScriptElement.java
new file mode 100644
index 0000000..cb9c254
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeScriptElement.java
@@ -0,0 +1,99 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.script.ScriptLanguageAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:script}.
+ *
+ * This class can have any org.w3c.dom.Element child element.
+ */
+public class OfficeScriptElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "script");
+
+	/**
+	 * Create the instance of <code>OfficeScriptElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeScriptElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:script}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ScriptLanguageAttribute</code> , See {@odf.attribute script:language}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getScriptLanguageAttribute() {
+		ScriptLanguageAttribute attr = (ScriptLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.SCRIPT, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ScriptLanguageAttribute</code> , See {@odf.attribute script:language}
+	 *
+	 * @param scriptLanguageValue   The type is <code>String</code>
+	 */
+	public void setScriptLanguageAttribute(String scriptLanguageValue) {
+		ScriptLanguageAttribute attr = new ScriptLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(scriptLanguageValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeScriptsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeScriptsElement.java
new file mode 100644
index 0000000..082dadb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeScriptsElement.java
@@ -0,0 +1,95 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:scripts}.
+ *
+ */
+public class OfficeScriptsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "scripts");
+
+	/**
+	 * Create the instance of <code>OfficeScriptsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeScriptsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:scripts}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element office:script}.
+	 *
+	 * @param scriptLanguageValue  the <code>String</code> value of <code>ScriptLanguageAttribute</code>, see {@odf.attribute  script:language} at specification
+	 * @return the element {@odf.element office:script}
+	 */
+	 public OfficeScriptElement newOfficeScriptElement(String scriptLanguageValue) {
+		OfficeScriptElement officeScript = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeScriptElement.class);
+		officeScript.setScriptLanguageAttribute(scriptLanguageValue);
+		this.appendChild(officeScript);
+		return officeScript;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeSettingsElement.java
new file mode 100644
index 0000000..8bec837
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeSettingsElement.java
@@ -0,0 +1,87 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.config.ConfigConfigItemSetElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:settings}.
+ *
+ */
+public class OfficeSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "settings");
+
+	/**
+	 * Create the instance of <code>OfficeSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element config:config-item-set}.
+	 *
+	 * @param configNameValue  the <code>String</code> value of <code>ConfigNameAttribute</code>, see {@odf.attribute  config:name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element config:config-item-set}
+	 */
+	 public ConfigConfigItemSetElement newConfigConfigItemSetElement(String configNameValue) {
+		ConfigConfigItemSetElement configConfigItemSet = ((OdfFileDom) this.ownerDocument).newOdfElement(ConfigConfigItemSetElement.class);
+		configConfigItemSet.setConfigNameAttribute(configNameValue);
+		this.appendChild(configConfigItemSet);
+		return configConfigItemSet;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeSpreadsheetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeSpreadsheetElement.java
new file mode 100644
index 0000000..897edad
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeSpreadsheetElement.java
@@ -0,0 +1,336 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableConsolidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTablesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinksElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStructureProtectedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:spreadsheet}.
+ *
+ */
+public class OfficeSpreadsheetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "spreadsheet");
+
+	/**
+	 * Create the instance of <code>OfficeSpreadsheetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeSpreadsheetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:spreadsheet}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectionKeyAttribute</code> , See {@odf.attribute table:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableProtectionKeyAttribute() {
+		TableProtectionKeyAttribute attr = (TableProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableProtectionKeyAttribute</code> , See {@odf.attribute table:protection-key}
+	 *
+	 * @param tableProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTableProtectionKeyAttribute(String tableProtectionKeyValue) {
+		TableProtectionKeyAttribute attr = new TableProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute table:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableProtectionKeyDigestAlgorithmAttribute() {
+		TableProtectionKeyDigestAlgorithmAttribute attr = (TableProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute table:protection-key-digest-algorithm}
+	 *
+	 * @param tableProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTableProtectionKeyDigestAlgorithmAttribute(String tableProtectionKeyDigestAlgorithmValue) {
+		TableProtectionKeyDigestAlgorithmAttribute attr = new TableProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStructureProtectedAttribute</code> , See {@odf.attribute table:structure-protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableStructureProtectedAttribute() {
+		TableStructureProtectedAttribute attr = (TableStructureProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "structure-protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableStructureProtectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStructureProtectedAttribute</code> , See {@odf.attribute table:structure-protected}
+	 *
+	 * @param tableStructureProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTableStructureProtectedAttribute(Boolean tableStructureProtectedValue) {
+		TableStructureProtectedAttribute attr = new TableStructureProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableStructureProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:calculation-settings}.
+	 *
+	 * @return the element {@odf.element table:calculation-settings}
+	 */
+	public TableCalculationSettingsElement newTableCalculationSettingsElement() {
+		TableCalculationSettingsElement tableCalculationSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCalculationSettingsElement.class);
+		this.appendChild(tableCalculationSettings);
+		return tableCalculationSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element table:consolidation}.
+	 *
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @param tableSourceCellRangeAddressesValue  the <code>String</code> value of <code>TableSourceCellRangeAddressesAttribute</code>, see {@odf.attribute  table:source-cell-range-addresses} at specification
+	 * @param tableTargetCellAddressValue  the <code>String</code> value of <code>TableTargetCellAddressAttribute</code>, see {@odf.attribute  table:target-cell-address} at specification
+	 * @return the element {@odf.element table:consolidation}
+	 */
+	 public TableConsolidationElement newTableConsolidationElement(String tableFunctionValue, String tableSourceCellRangeAddressesValue, String tableTargetCellAddressValue) {
+		TableConsolidationElement tableConsolidation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableConsolidationElement.class);
+		tableConsolidation.setTableFunctionAttribute(tableFunctionValue);
+		tableConsolidation.setTableSourceCellRangeAddressesAttribute(tableSourceCellRangeAddressesValue);
+		tableConsolidation.setTableTargetCellAddressAttribute(tableTargetCellAddressValue);
+		this.appendChild(tableConsolidation);
+		return tableConsolidation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:content-validations}.
+	 *
+	 * @return the element {@odf.element table:content-validations}
+	 */
+	public TableContentValidationsElement newTableContentValidationsElement() {
+		TableContentValidationsElement tableContentValidations = ((OdfFileDom) this.ownerDocument).newOdfElement(TableContentValidationsElement.class);
+		this.appendChild(tableContentValidations);
+		return tableContentValidations;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-tables}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-tables}
+	 */
+	public TableDataPilotTablesElement newTableDataPilotTablesElement() {
+		TableDataPilotTablesElement tableDataPilotTables = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotTablesElement.class);
+		this.appendChild(tableDataPilotTables);
+		return tableDataPilotTables;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-ranges}.
+	 *
+	 * @return the element {@odf.element table:database-ranges}
+	 */
+	public TableDatabaseRangesElement newTableDatabaseRangesElement() {
+		TableDatabaseRangesElement tableDatabaseRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseRangesElement.class);
+		this.appendChild(tableDatabaseRanges);
+		return tableDatabaseRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dde-links}.
+	 *
+	 * @return the element {@odf.element table:dde-links}
+	 */
+	public TableDdeLinksElement newTableDdeLinksElement() {
+		TableDdeLinksElement tableDdeLinks = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDdeLinksElement.class);
+		this.appendChild(tableDdeLinks);
+		return tableDdeLinks;
+	}
+
+	/**
+	 * Create child element {@odf.element table:label-ranges}.
+	 *
+	 * @return the element {@odf.element table:label-ranges}
+	 */
+	public TableLabelRangesElement newTableLabelRangesElement() {
+		TableLabelRangesElement tableLabelRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLabelRangesElement.class);
+		this.appendChild(tableLabelRanges);
+		return tableLabelRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expressions}.
+	 *
+	 * @return the element {@odf.element table:named-expressions}
+	 */
+	public TableNamedExpressionsElement newTableNamedExpressionsElement() {
+		TableNamedExpressionsElement tableNamedExpressions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionsElement.class);
+		this.appendChild(tableNamedExpressions);
+		return tableNamedExpressions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element table:tracked-changes}.
+	 *
+	 * @return the element {@odf.element table:tracked-changes}
+	 */
+	public TableTrackedChangesElement newTableTrackedChangesElement() {
+		TableTrackedChangesElement tableTrackedChanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTrackedChangesElement.class);
+		this.appendChild(tableTrackedChanges);
+		return tableTrackedChanges;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeStylesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeStylesElement.java
new file mode 100644
index 0000000..f988401
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeStylesElement.java
@@ -0,0 +1,444 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGradientElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawHatchElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMarkerElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawOpacityElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawStrokeDashElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencyStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDateStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberPercentageStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTimeStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDefaultPageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDefaultStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePresentationPageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgLinearGradientElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgRadialGradientElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyConfigurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLinenumberingConfigurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListStyleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNotesConfigurationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextOutlineStyleElement;
+import org.odftoolkit.odfdom.pkg.OdfContainerElementBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:styles}.
+ *
+ */
+public class OfficeStylesElement extends OdfContainerElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "styles");
+
+	/**
+	 * Create the instance of <code>OfficeStylesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeStylesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:styles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:fill-image}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:fill-image}
+	 */
+	 public DrawFillImageElement newDrawFillImageElement(String drawNameValue, String xlinkHrefValue, String xlinkTypeValue) {
+		DrawFillImageElement drawFillImage = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFillImageElement.class);
+		drawFillImage.setDrawNameAttribute(drawNameValue);
+		drawFillImage.setXlinkHrefAttribute(xlinkHrefValue);
+		drawFillImage.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawFillImage);
+		return drawFillImage;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:gradient}.
+	 *
+	 * @param drawStyleValue  the <code>String</code> value of <code>DrawStyleAttribute</code>, see {@odf.attribute  draw:style} at specification
+	 * @return the element {@odf.element draw:gradient}
+	 */
+	 public DrawGradientElement newDrawGradientElement(String drawStyleValue) {
+		DrawGradientElement drawGradient = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGradientElement.class);
+		drawGradient.setDrawStyleAttribute(drawStyleValue);
+		this.appendChild(drawGradient);
+		return drawGradient;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:hatch}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @param drawStyleValue  the <code>String</code> value of <code>DrawStyleAttribute</code>, see {@odf.attribute  draw:style} at specification
+	 * @return the element {@odf.element draw:hatch}
+	 */
+	 public DrawHatchElement newDrawHatchElement(String drawNameValue, String drawStyleValue) {
+		DrawHatchElement drawHatch = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawHatchElement.class);
+		drawHatch.setDrawNameAttribute(drawNameValue);
+		drawHatch.setDrawStyleAttribute(drawStyleValue);
+		this.appendChild(drawHatch);
+		return drawHatch;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:marker}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:marker}
+	 */
+	 public DrawMarkerElement newDrawMarkerElement(String drawNameValue, String svgDValue, int svgViewBoxValue) {
+		DrawMarkerElement drawMarker = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMarkerElement.class);
+		drawMarker.setDrawNameAttribute(drawNameValue);
+		drawMarker.setSvgDAttribute(svgDValue);
+		drawMarker.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawMarker);
+		return drawMarker;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:opacity}.
+	 *
+	 * @param drawStyleValue  the <code>String</code> value of <code>DrawStyleAttribute</code>, see {@odf.attribute  draw:style} at specification
+	 * @return the element {@odf.element draw:opacity}
+	 */
+	 public DrawOpacityElement newDrawOpacityElement(String drawStyleValue) {
+		DrawOpacityElement drawOpacity = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawOpacityElement.class);
+		drawOpacity.setDrawStyleAttribute(drawStyleValue);
+		this.appendChild(drawOpacity);
+		return drawOpacity;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:stroke-dash}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @return the element {@odf.element draw:stroke-dash}
+	 */
+	 public DrawStrokeDashElement newDrawStrokeDashElement(String drawNameValue) {
+		DrawStrokeDashElement drawStrokeDash = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawStrokeDashElement.class);
+		drawStrokeDash.setDrawNameAttribute(drawNameValue);
+		this.appendChild(drawStrokeDash);
+		return drawStrokeDash;
+	}
+
+	/**
+	 * Create child element {@odf.element number:boolean-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:boolean-style}
+	 */
+	 public NumberBooleanStyleElement newNumberBooleanStyleElement(String styleNameValue) {
+		NumberBooleanStyleElement numberBooleanStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberBooleanStyleElement.class);
+		numberBooleanStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberBooleanStyle);
+		return numberBooleanStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:currency-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:currency-style}
+	 */
+	 public NumberCurrencyStyleElement newNumberCurrencyStyleElement(String styleNameValue) {
+		NumberCurrencyStyleElement numberCurrencyStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberCurrencyStyleElement.class);
+		numberCurrencyStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberCurrencyStyle);
+		return numberCurrencyStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:date-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:date-style}
+	 */
+	 public NumberDateStyleElement newNumberDateStyleElement(String styleNameValue) {
+		NumberDateStyleElement numberDateStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberDateStyleElement.class);
+		numberDateStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberDateStyle);
+		return numberDateStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:number-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:number-style}
+	 */
+	 public NumberNumberStyleElement newNumberNumberStyleElement(String styleNameValue) {
+		NumberNumberStyleElement numberNumberStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberNumberStyleElement.class);
+		numberNumberStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberNumberStyle);
+		return numberNumberStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:percentage-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:percentage-style}
+	 */
+	 public NumberPercentageStyleElement newNumberPercentageStyleElement(String styleNameValue) {
+		NumberPercentageStyleElement numberPercentageStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberPercentageStyleElement.class);
+		numberPercentageStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberPercentageStyle);
+		return numberPercentageStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:text-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:text-style}
+	 */
+	 public NumberTextStyleElement newNumberTextStyleElement(String styleNameValue) {
+		NumberTextStyleElement numberTextStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTextStyleElement.class);
+		numberTextStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberTextStyle);
+		return numberTextStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element number:time-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element number:time-style}
+	 */
+	 public NumberTimeStyleElement newNumberTimeStyleElement(String styleNameValue) {
+		NumberTimeStyleElement numberTimeStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(NumberTimeStyleElement.class);
+		numberTimeStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(numberTimeStyle);
+		return numberTimeStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:default-page-layout}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:default-page-layout}
+	 */
+	public StyleDefaultPageLayoutElement newStyleDefaultPageLayoutElement() {
+		StyleDefaultPageLayoutElement styleDefaultPageLayout = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleDefaultPageLayoutElement.class);
+		this.appendChild(styleDefaultPageLayout);
+		return styleDefaultPageLayout;
+	}
+
+	/**
+	 * Create child element {@odf.element style:default-style}.
+	 *
+	 * @param styleFamilyValue  the <code>String</code> value of <code>StyleFamilyAttribute</code>, see {@odf.attribute  style:family} at specification
+	 * @return the element {@odf.element style:default-style}
+	 */
+	 public StyleDefaultStyleElement newStyleDefaultStyleElement(String styleFamilyValue) {
+		StyleDefaultStyleElement styleDefaultStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleDefaultStyleElement.class);
+		styleDefaultStyle.setStyleFamilyAttribute(styleFamilyValue);
+		this.appendChild(styleDefaultStyle);
+		return styleDefaultStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:presentation-page-layout}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element style:presentation-page-layout}
+	 */
+	 public StylePresentationPageLayoutElement newStylePresentationPageLayoutElement(String styleNameValue) {
+		StylePresentationPageLayoutElement stylePresentationPageLayout = ((OdfFileDom) this.ownerDocument).newOdfElement(StylePresentationPageLayoutElement.class);
+		stylePresentationPageLayout.setStyleNameAttribute(styleNameValue);
+		this.appendChild(stylePresentationPageLayout);
+		return stylePresentationPageLayout;
+	}
+
+	/**
+	 * Create child element {@odf.element style:style}.
+	 *
+	 * @param styleFamilyValue  the <code>String</code> value of <code>StyleFamilyAttribute</code>, see {@odf.attribute  style:family} at specification
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element style:style}
+	 */
+	 public StyleStyleElement newStyleStyleElement(String styleFamilyValue, String styleNameValue) {
+		StyleStyleElement styleStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleStyleElement.class);
+		styleStyle.setStyleFamilyAttribute(styleFamilyValue);
+		styleStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(styleStyle);
+		return styleStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:linearGradient}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @return the element {@odf.element svg:linearGradient}
+	 */
+	 public SvgLinearGradientElement newSvgLinearGradientElement(String drawNameValue) {
+		SvgLinearGradientElement svgLinearGradient = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgLinearGradientElement.class);
+		svgLinearGradient.setDrawNameAttribute(drawNameValue);
+		this.appendChild(svgLinearGradient);
+		return svgLinearGradient;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:radialGradient}.
+	 *
+	 * @param drawNameValue  the <code>String</code> value of <code>DrawNameAttribute</code>, see {@odf.attribute  draw:name} at specification
+	 * @return the element {@odf.element svg:radialGradient}
+	 */
+	 public SvgRadialGradientElement newSvgRadialGradientElement(String drawNameValue) {
+		SvgRadialGradientElement svgRadialGradient = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgRadialGradientElement.class);
+		svgRadialGradient.setDrawNameAttribute(drawNameValue);
+		this.appendChild(svgRadialGradient);
+		return svgRadialGradient;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-template}.
+	 *
+	 * @param tableFirstRowEndColumnValue  the <code>String</code> value of <code>TableFirstRowEndColumnAttribute</code>, see {@odf.attribute  table:first-row-end-column} at specification
+	 * @param tableFirstRowStartColumnValue  the <code>String</code> value of <code>TableFirstRowStartColumnAttribute</code>, see {@odf.attribute  table:first-row-start-column} at specification
+	 * @param tableLastRowEndColumnValue  the <code>String</code> value of <code>TableLastRowEndColumnAttribute</code>, see {@odf.attribute  table:last-row-end-column} at specification
+	 * @param tableLastRowStartColumnValue  the <code>String</code> value of <code>TableLastRowStartColumnAttribute</code>, see {@odf.attribute  table:last-row-start-column} at specification
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:table-template}
+	 */
+	 public TableTableTemplateElement newTableTableTemplateElement(String tableFirstRowEndColumnValue, String tableFirstRowStartColumnValue, String tableLastRowEndColumnValue, String tableLastRowStartColumnValue, String tableNameValue) {
+		TableTableTemplateElement tableTableTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableTemplateElement.class);
+		tableTableTemplate.setTableFirstRowEndColumnAttribute(tableFirstRowEndColumnValue);
+		tableTableTemplate.setTableFirstRowStartColumnAttribute(tableFirstRowStartColumnValue);
+		tableTableTemplate.setTableLastRowEndColumnAttribute(tableLastRowEndColumnValue);
+		tableTableTemplate.setTableLastRowStartColumnAttribute(tableLastRowStartColumnValue);
+		tableTableTemplate.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableTableTemplate);
+		return tableTableTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-configuration}.
+	 *
+	 * @return the element {@odf.element text:bibliography-configuration}
+	 */
+	public TextBibliographyConfigurationElement newTextBibliographyConfigurationElement() {
+		TextBibliographyConfigurationElement textBibliographyConfiguration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyConfigurationElement.class);
+		this.appendChild(textBibliographyConfiguration);
+		return textBibliographyConfiguration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:linenumbering-configuration}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:linenumbering-configuration}
+	 */
+	 public TextLinenumberingConfigurationElement newTextLinenumberingConfigurationElement(String styleNumFormatValue) {
+		TextLinenumberingConfigurationElement textLinenumberingConfiguration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLinenumberingConfigurationElement.class);
+		textLinenumberingConfiguration.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textLinenumberingConfiguration);
+		return textLinenumberingConfiguration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element text:list-style}
+	 */
+	 public TextListStyleElement newTextListStyleElement(String styleNameValue) {
+		TextListStyleElement textListStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListStyleElement.class);
+		textListStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(textListStyle);
+		return textListStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:notes-configuration}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:notes-configuration}
+	 */
+	 public TextNotesConfigurationElement newTextNotesConfigurationElement(String styleNumFormatValue, String textNoteClassValue) {
+		TextNotesConfigurationElement textNotesConfiguration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNotesConfigurationElement.class);
+		textNotesConfiguration.setStyleNumFormatAttribute(styleNumFormatValue);
+		textNotesConfiguration.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNotesConfiguration);
+		return textNotesConfiguration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:outline-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * @return the element {@odf.element text:outline-style}
+	 */
+	 public TextOutlineStyleElement newTextOutlineStyleElement(String styleNameValue) {
+		TextOutlineStyleElement textOutlineStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextOutlineStyleElement.class);
+		textOutlineStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(textOutlineStyle);
+		return textOutlineStyle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeTextElement.java
new file mode 100644
index 0000000..5502dca
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/office/OfficeTextElement.java
@@ -0,0 +1,810 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.office;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCalculationSettingsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableConsolidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDataPilotTablesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDatabaseRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableDdeLinksElement;
+import org.odftoolkit.odfdom.dom.element.table.TableLabelRangesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberedParagraphElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageSequenceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextGlobalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseSoftPageBreaksAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element office:text}.
+ *
+ */
+public class OfficeTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.OFFICE, "text");
+
+	/**
+	 * Create the instance of <code>OfficeTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public OfficeTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element office:text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextGlobalAttribute</code> , See {@odf.attribute text:global}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextGlobalAttribute() {
+		TextGlobalAttribute attr = (TextGlobalAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "global");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextGlobalAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextGlobalAttribute</code> , See {@odf.attribute text:global}
+	 *
+	 * @param textGlobalValue   The type is <code>Boolean</code>
+	 */
+	public void setTextGlobalAttribute(Boolean textGlobalValue) {
+		TextGlobalAttribute attr = new TextGlobalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textGlobalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseSoftPageBreaksAttribute</code> , See {@odf.attribute text:use-soft-page-breaks}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseSoftPageBreaksAttribute() {
+		TextUseSoftPageBreaksAttribute attr = (TextUseSoftPageBreaksAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-soft-page-breaks");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseSoftPageBreaksAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseSoftPageBreaksAttribute</code> , See {@odf.attribute text:use-soft-page-breaks}
+	 *
+	 * @param textUseSoftPageBreaksValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseSoftPageBreaksAttribute(Boolean textUseSoftPageBreaksValue) {
+		TextUseSoftPageBreaksAttribute attr = new TextUseSoftPageBreaksAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseSoftPageBreaksValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:forms}.
+	 *
+	 * @return the element {@odf.element office:forms}
+	 */
+	public OfficeFormsElement newOfficeFormsElement() {
+		OfficeFormsElement officeForms = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFormsElement.class);
+		this.appendChild(officeForms);
+		return officeForms;
+	}
+
+	/**
+	 * Create child element {@odf.element table:calculation-settings}.
+	 *
+	 * @return the element {@odf.element table:calculation-settings}
+	 */
+	public TableCalculationSettingsElement newTableCalculationSettingsElement() {
+		TableCalculationSettingsElement tableCalculationSettings = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCalculationSettingsElement.class);
+		this.appendChild(tableCalculationSettings);
+		return tableCalculationSettings;
+	}
+
+	/**
+	 * Create child element {@odf.element table:consolidation}.
+	 *
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @param tableSourceCellRangeAddressesValue  the <code>String</code> value of <code>TableSourceCellRangeAddressesAttribute</code>, see {@odf.attribute  table:source-cell-range-addresses} at specification
+	 * @param tableTargetCellAddressValue  the <code>String</code> value of <code>TableTargetCellAddressAttribute</code>, see {@odf.attribute  table:target-cell-address} at specification
+	 * @return the element {@odf.element table:consolidation}
+	 */
+	 public TableConsolidationElement newTableConsolidationElement(String tableFunctionValue, String tableSourceCellRangeAddressesValue, String tableTargetCellAddressValue) {
+		TableConsolidationElement tableConsolidation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableConsolidationElement.class);
+		tableConsolidation.setTableFunctionAttribute(tableFunctionValue);
+		tableConsolidation.setTableSourceCellRangeAddressesAttribute(tableSourceCellRangeAddressesValue);
+		tableConsolidation.setTableTargetCellAddressAttribute(tableTargetCellAddressValue);
+		this.appendChild(tableConsolidation);
+		return tableConsolidation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:content-validations}.
+	 *
+	 * @return the element {@odf.element table:content-validations}
+	 */
+	public TableContentValidationsElement newTableContentValidationsElement() {
+		TableContentValidationsElement tableContentValidations = ((OdfFileDom) this.ownerDocument).newOdfElement(TableContentValidationsElement.class);
+		this.appendChild(tableContentValidations);
+		return tableContentValidations;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-tables}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-tables}
+	 */
+	public TableDataPilotTablesElement newTableDataPilotTablesElement() {
+		TableDataPilotTablesElement tableDataPilotTables = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotTablesElement.class);
+		this.appendChild(tableDataPilotTables);
+		return tableDataPilotTables;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-ranges}.
+	 *
+	 * @return the element {@odf.element table:database-ranges}
+	 */
+	public TableDatabaseRangesElement newTableDatabaseRangesElement() {
+		TableDatabaseRangesElement tableDatabaseRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseRangesElement.class);
+		this.appendChild(tableDatabaseRanges);
+		return tableDatabaseRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dde-links}.
+	 *
+	 * @return the element {@odf.element table:dde-links}
+	 */
+	public TableDdeLinksElement newTableDdeLinksElement() {
+		TableDdeLinksElement tableDdeLinks = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDdeLinksElement.class);
+		this.appendChild(tableDdeLinks);
+		return tableDdeLinks;
+	}
+
+	/**
+	 * Create child element {@odf.element table:label-ranges}.
+	 *
+	 * @return the element {@odf.element table:label-ranges}
+	 */
+	public TableLabelRangesElement newTableLabelRangesElement() {
+		TableLabelRangesElement tableLabelRanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLabelRangesElement.class);
+		this.appendChild(tableLabelRanges);
+		return tableLabelRanges;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expressions}.
+	 *
+	 * @return the element {@odf.element table:named-expressions}
+	 */
+	public TableNamedExpressionsElement newTableNamedExpressionsElement() {
+		TableNamedExpressionsElement tableNamedExpressions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionsElement.class);
+		this.appendChild(tableNamedExpressions);
+		return tableNamedExpressions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-sequence}.
+	 *
+	 * @return the element {@odf.element text:page-sequence}
+	 */
+	public TextPageSequenceElement newTextPageSequenceElement() {
+		TextPageSequenceElement textPageSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageSequenceElement.class);
+		this.appendChild(textPageSequence);
+		return textPageSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tracked-changes}.
+	 *
+	 * @return the element {@odf.element text:tracked-changes}
+	 */
+	public TextTrackedChangesElement newTextTrackedChangesElement() {
+		TextTrackedChangesElement textTrackedChanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTrackedChangesElement.class);
+		this.appendChild(textTrackedChanges);
+		return textTrackedChanges;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationAnimationGroupElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationAnimationGroupElement.java
new file mode 100644
index 0000000..3e02e71
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationAnimationGroupElement.java
@@ -0,0 +1,151 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:animation-group}.
+ *
+ */
+public class PresentationAnimationGroupElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "animation-group");
+
+	/**
+	 * Create the instance of <code>PresentationAnimationGroupElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationAnimationGroupElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:animation-group}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:dim}.
+	 *
+	 * @param drawColorValue  the <code>String</code> value of <code>DrawColorAttribute</code>, see {@odf.attribute  draw:color} at specification
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:dim}
+	 */
+	 public PresentationDimElement newPresentationDimElement(String drawColorValue, String drawShapeIdValue) {
+		PresentationDimElement presentationDim = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDimElement.class);
+		presentationDim.setDrawColorAttribute(drawColorValue);
+		presentationDim.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationDim);
+		return presentationDim;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:hide-shape}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:hide-shape}
+	 */
+	 public PresentationHideShapeElement newPresentationHideShapeElement(String drawShapeIdValue) {
+		PresentationHideShapeElement presentationHideShape = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHideShapeElement.class);
+		presentationHideShape.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationHideShape);
+		return presentationHideShape;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:hide-text}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:hide-text}
+	 */
+	 public PresentationHideTextElement newPresentationHideTextElement(String drawShapeIdValue) {
+		PresentationHideTextElement presentationHideText = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHideTextElement.class);
+		presentationHideText.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationHideText);
+		return presentationHideText;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:play}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:play}
+	 */
+	 public PresentationPlayElement newPresentationPlayElement(String drawShapeIdValue) {
+		PresentationPlayElement presentationPlay = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationPlayElement.class);
+		presentationPlay.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationPlay);
+		return presentationPlay;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:show-shape}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:show-shape}
+	 */
+	 public PresentationShowShapeElement newPresentationShowShapeElement(String drawShapeIdValue) {
+		PresentationShowShapeElement presentationShowShape = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationShowShapeElement.class);
+		presentationShowShape.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationShowShape);
+		return presentationShowShape;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:show-text}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:show-text}
+	 */
+	 public PresentationShowTextElement newPresentationShowTextElement(String drawShapeIdValue) {
+		PresentationShowTextElement presentationShowText = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationShowTextElement.class);
+		presentationShowText.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationShowText);
+		return presentationShowText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationAnimationsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationAnimationsElement.java
new file mode 100644
index 0000000..733bc0c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationAnimationsElement.java
@@ -0,0 +1,162 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:animations}.
+ *
+ */
+public class PresentationAnimationsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "animations");
+
+	/**
+	 * Create the instance of <code>PresentationAnimationsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationAnimationsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:animations}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:animation-group}.
+	 *
+	 * @return the element {@odf.element presentation:animation-group}
+	 */
+	public PresentationAnimationGroupElement newPresentationAnimationGroupElement() {
+		PresentationAnimationGroupElement presentationAnimationGroup = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationAnimationGroupElement.class);
+		this.appendChild(presentationAnimationGroup);
+		return presentationAnimationGroup;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:dim}.
+	 *
+	 * @param drawColorValue  the <code>String</code> value of <code>DrawColorAttribute</code>, see {@odf.attribute  draw:color} at specification
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:dim}
+	 */
+	 public PresentationDimElement newPresentationDimElement(String drawColorValue, String drawShapeIdValue) {
+		PresentationDimElement presentationDim = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDimElement.class);
+		presentationDim.setDrawColorAttribute(drawColorValue);
+		presentationDim.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationDim);
+		return presentationDim;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:hide-shape}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:hide-shape}
+	 */
+	 public PresentationHideShapeElement newPresentationHideShapeElement(String drawShapeIdValue) {
+		PresentationHideShapeElement presentationHideShape = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHideShapeElement.class);
+		presentationHideShape.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationHideShape);
+		return presentationHideShape;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:hide-text}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:hide-text}
+	 */
+	 public PresentationHideTextElement newPresentationHideTextElement(String drawShapeIdValue) {
+		PresentationHideTextElement presentationHideText = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHideTextElement.class);
+		presentationHideText.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationHideText);
+		return presentationHideText;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:play}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:play}
+	 */
+	 public PresentationPlayElement newPresentationPlayElement(String drawShapeIdValue) {
+		PresentationPlayElement presentationPlay = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationPlayElement.class);
+		presentationPlay.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationPlay);
+		return presentationPlay;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:show-shape}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:show-shape}
+	 */
+	 public PresentationShowShapeElement newPresentationShowShapeElement(String drawShapeIdValue) {
+		PresentationShowShapeElement presentationShowShape = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationShowShapeElement.class);
+		presentationShowShape.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationShowShape);
+		return presentationShowShape;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:show-text}.
+	 *
+	 * @param drawShapeIdValue  the <code>String</code> value of <code>DrawShapeIdAttribute</code>, see {@odf.attribute  draw:shape-id} at specification
+	 * @return the element {@odf.element presentation:show-text}
+	 */
+	 public PresentationShowTextElement newPresentationShowTextElement(String drawShapeIdValue) {
+		PresentationShowTextElement presentationShowText = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationShowTextElement.class);
+		presentationShowText.setDrawShapeIdAttribute(drawShapeIdValue);
+		this.appendChild(presentationShowText);
+		return presentationShowText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDateTimeDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDateTimeDeclElement.java
new file mode 100644
index 0000000..e8b34c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDateTimeDeclElement.java
@@ -0,0 +1,158 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:date-time-decl}.
+ *
+ */
+public class PresentationDateTimeDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "date-time-decl");
+
+	/**
+	 * Create the instance of <code>PresentationDateTimeDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDateTimeDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:date-time-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNameAttribute() {
+		PresentationNameAttribute attr = (PresentationNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * @param presentationNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationNameAttribute(String presentationNameValue) {
+		PresentationNameAttribute attr = new PresentationNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSourceAttribute</code> , See {@odf.attribute presentation:source}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSourceAttribute() {
+		PresentationSourceAttribute attr = (PresentationSourceAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSourceAttribute</code> , See {@odf.attribute presentation:source}
+	 *
+	 * @param presentationSourceValue   The type is <code>String</code>
+	 */
+	public void setPresentationSourceAttribute(String presentationSourceValue) {
+		PresentationSourceAttribute attr = new PresentationSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDateTimeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDateTimeElement.java
new file mode 100644
index 0000000..3ba6431
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDateTimeElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:date-time}.
+ *
+ */
+public class PresentationDateTimeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "date-time");
+
+	/**
+	 * Create the instance of <code>PresentationDateTimeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDateTimeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:date-time}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDimElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDimElement.java
new file mode 100644
index 0000000..b04138b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationDimElement.java
@@ -0,0 +1,140 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShapeIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:dim}.
+ *
+ */
+public class PresentationDimElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "dim");
+
+	/**
+	 * Create the instance of <code>PresentationDimElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationDimElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:dim}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawColorAttribute</code> , See {@odf.attribute draw:color}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawColorAttribute() {
+		DrawColorAttribute attr = (DrawColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawColorAttribute</code> , See {@odf.attribute draw:color}
+	 *
+	 * @param drawColorValue   The type is <code>String</code>
+	 */
+	public void setDrawColorAttribute(String drawColorValue) {
+		DrawColorAttribute attr = new DrawColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShapeIdAttribute() {
+		DrawShapeIdAttribute attr = (DrawShapeIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shape-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * @param drawShapeIdValue   The type is <code>String</code>
+	 */
+	public void setDrawShapeIdAttribute(String drawShapeIdValue) {
+		DrawShapeIdAttribute attr = new DrawShapeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShapeIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationEventListenerElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationEventListenerElement.java
new file mode 100644
index 0000000..dfe191d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationEventListenerElement.java
@@ -0,0 +1,365 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationActionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSpeedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartScaleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationVerbAttribute;
+import org.odftoolkit.odfdom.dom.attribute.script.ScriptEventNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:event-listener}.
+ *
+ */
+public class PresentationEventListenerElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "event-listener");
+
+	/**
+	 * Create the instance of <code>PresentationEventListenerElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationEventListenerElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:event-listener}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationActionAttribute</code> , See {@odf.attribute presentation:action}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationActionAttribute() {
+		PresentationActionAttribute attr = (PresentationActionAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "action");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationActionAttribute</code> , See {@odf.attribute presentation:action}
+	 *
+	 * @param presentationActionValue   The type is <code>String</code>
+	 */
+	public void setPresentationActionAttribute(String presentationActionValue) {
+		PresentationActionAttribute attr = new PresentationActionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationActionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDirectionAttribute() {
+		PresentationDirectionAttribute attr = (PresentationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @param presentationDirectionValue   The type is <code>String</code>
+	 */
+	public void setPresentationDirectionAttribute(String presentationDirectionValue) {
+		PresentationDirectionAttribute attr = new PresentationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationEffectAttribute() {
+		PresentationEffectAttribute attr = (PresentationEffectAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationEffectAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @param presentationEffectValue   The type is <code>String</code>
+	 */
+	public void setPresentationEffectAttribute(String presentationEffectValue) {
+		PresentationEffectAttribute attr = new PresentationEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSpeedAttribute() {
+		PresentationSpeedAttribute attr = (PresentationSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationSpeedAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @param presentationSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationSpeedAttribute(String presentationSpeedValue) {
+		PresentationSpeedAttribute attr = new PresentationSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSpeedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStartScaleAttribute() {
+		PresentationStartScaleAttribute attr = (PresentationStartScaleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationStartScaleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @param presentationStartScaleValue   The type is <code>String</code>
+	 */
+	public void setPresentationStartScaleAttribute(String presentationStartScaleValue) {
+		PresentationStartScaleAttribute attr = new PresentationStartScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStartScaleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationVerbAttribute</code> , See {@odf.attribute presentation:verb}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getPresentationVerbAttribute() {
+		PresentationVerbAttribute attr = (PresentationVerbAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "verb");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationVerbAttribute</code> , See {@odf.attribute presentation:verb}
+	 *
+	 * @param presentationVerbValue   The type is <code>Integer</code>
+	 */
+	public void setPresentationVerbAttribute(Integer presentationVerbValue) {
+		PresentationVerbAttribute attr = new PresentationVerbAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(presentationVerbValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ScriptEventNameAttribute</code> , See {@odf.attribute script:event-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getScriptEventNameAttribute() {
+		ScriptEventNameAttribute attr = (ScriptEventNameAttribute) getOdfAttribute(OdfDocumentNamespace.SCRIPT, "event-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ScriptEventNameAttribute</code> , See {@odf.attribute script:event-name}
+	 *
+	 * @param scriptEventNameValue   The type is <code>String</code>
+	 */
+	public void setScriptEventNameAttribute(String scriptEventNameValue) {
+		ScriptEventNameAttribute attr = new ScriptEventNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(scriptEventNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationFooterDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationFooterDeclElement.java
new file mode 100644
index 0000000..62e25e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationFooterDeclElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:footer-decl}.
+ *
+ */
+public class PresentationFooterDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "footer-decl");
+
+	/**
+	 * Create the instance of <code>PresentationFooterDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationFooterDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:footer-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNameAttribute() {
+		PresentationNameAttribute attr = (PresentationNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * @param presentationNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationNameAttribute(String presentationNameValue) {
+		PresentationNameAttribute attr = new PresentationNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationFooterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationFooterElement.java
new file mode 100644
index 0000000..bc655ea
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationFooterElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:footer}.
+ *
+ */
+public class PresentationFooterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "footer");
+
+	/**
+	 * Create the instance of <code>PresentationFooterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationFooterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:footer}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHeaderDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHeaderDeclElement.java
new file mode 100644
index 0000000..d669f14
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHeaderDeclElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:header-decl}.
+ *
+ */
+public class PresentationHeaderDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "header-decl");
+
+	/**
+	 * Create the instance of <code>PresentationHeaderDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationHeaderDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:header-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNameAttribute() {
+		PresentationNameAttribute attr = (PresentationNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * @param presentationNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationNameAttribute(String presentationNameValue) {
+		PresentationNameAttribute attr = new PresentationNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHeaderElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHeaderElement.java
new file mode 100644
index 0000000..cdf3d41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHeaderElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:header}.
+ *
+ */
+public class PresentationHeaderElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "header");
+
+	/**
+	 * Create the instance of <code>PresentationHeaderElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationHeaderElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:header}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHideShapeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHideShapeElement.java
new file mode 100644
index 0000000..a1fdd3a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHideShapeElement.java
@@ -0,0 +1,263 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShapeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPathIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSpeedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartScaleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:hide-shape}.
+ *
+ */
+public class PresentationHideShapeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "hide-shape");
+
+	/**
+	 * Create the instance of <code>PresentationHideShapeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationHideShapeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:hide-shape}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShapeIdAttribute() {
+		DrawShapeIdAttribute attr = (DrawShapeIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shape-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * @param drawShapeIdValue   The type is <code>String</code>
+	 */
+	public void setDrawShapeIdAttribute(String drawShapeIdValue) {
+		DrawShapeIdAttribute attr = new DrawShapeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShapeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDelayAttribute() {
+		PresentationDelayAttribute attr = (PresentationDelayAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @param presentationDelayValue   The type is <code>String</code>
+	 */
+	public void setPresentationDelayAttribute(String presentationDelayValue) {
+		PresentationDelayAttribute attr = new PresentationDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDirectionAttribute() {
+		PresentationDirectionAttribute attr = (PresentationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @param presentationDirectionValue   The type is <code>String</code>
+	 */
+	public void setPresentationDirectionAttribute(String presentationDirectionValue) {
+		PresentationDirectionAttribute attr = new PresentationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationEffectAttribute() {
+		PresentationEffectAttribute attr = (PresentationEffectAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationEffectAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @param presentationEffectValue   The type is <code>String</code>
+	 */
+	public void setPresentationEffectAttribute(String presentationEffectValue) {
+		PresentationEffectAttribute attr = new PresentationEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPathIdAttribute() {
+		PresentationPathIdAttribute attr = (PresentationPathIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "path-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @param presentationPathIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPathIdAttribute(String presentationPathIdValue) {
+		PresentationPathIdAttribute attr = new PresentationPathIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPathIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSpeedAttribute() {
+		PresentationSpeedAttribute attr = (PresentationSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationSpeedAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @param presentationSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationSpeedAttribute(String presentationSpeedValue) {
+		PresentationSpeedAttribute attr = new PresentationSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSpeedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStartScaleAttribute() {
+		PresentationStartScaleAttribute attr = (PresentationStartScaleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationStartScaleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @param presentationStartScaleValue   The type is <code>String</code>
+	 */
+	public void setPresentationStartScaleAttribute(String presentationStartScaleValue) {
+		PresentationStartScaleAttribute attr = new PresentationStartScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStartScaleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHideTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHideTextElement.java
new file mode 100644
index 0000000..95bc8e0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationHideTextElement.java
@@ -0,0 +1,263 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShapeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPathIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSpeedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartScaleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:hide-text}.
+ *
+ */
+public class PresentationHideTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "hide-text");
+
+	/**
+	 * Create the instance of <code>PresentationHideTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationHideTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:hide-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShapeIdAttribute() {
+		DrawShapeIdAttribute attr = (DrawShapeIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shape-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * @param drawShapeIdValue   The type is <code>String</code>
+	 */
+	public void setDrawShapeIdAttribute(String drawShapeIdValue) {
+		DrawShapeIdAttribute attr = new DrawShapeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShapeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDelayAttribute() {
+		PresentationDelayAttribute attr = (PresentationDelayAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @param presentationDelayValue   The type is <code>String</code>
+	 */
+	public void setPresentationDelayAttribute(String presentationDelayValue) {
+		PresentationDelayAttribute attr = new PresentationDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDirectionAttribute() {
+		PresentationDirectionAttribute attr = (PresentationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @param presentationDirectionValue   The type is <code>String</code>
+	 */
+	public void setPresentationDirectionAttribute(String presentationDirectionValue) {
+		PresentationDirectionAttribute attr = new PresentationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationEffectAttribute() {
+		PresentationEffectAttribute attr = (PresentationEffectAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationEffectAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @param presentationEffectValue   The type is <code>String</code>
+	 */
+	public void setPresentationEffectAttribute(String presentationEffectValue) {
+		PresentationEffectAttribute attr = new PresentationEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPathIdAttribute() {
+		PresentationPathIdAttribute attr = (PresentationPathIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "path-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @param presentationPathIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPathIdAttribute(String presentationPathIdValue) {
+		PresentationPathIdAttribute attr = new PresentationPathIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPathIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSpeedAttribute() {
+		PresentationSpeedAttribute attr = (PresentationSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationSpeedAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @param presentationSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationSpeedAttribute(String presentationSpeedValue) {
+		PresentationSpeedAttribute attr = new PresentationSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSpeedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStartScaleAttribute() {
+		PresentationStartScaleAttribute attr = (PresentationStartScaleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationStartScaleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @param presentationStartScaleValue   The type is <code>String</code>
+	 */
+	public void setPresentationStartScaleAttribute(String presentationStartScaleValue) {
+		PresentationStartScaleAttribute attr = new PresentationStartScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStartScaleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationNotesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationNotesElement.java
new file mode 100644
index 0000000..acb8fe0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationNotesElement.java
@@ -0,0 +1,468 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseDateTimeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseFooterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseHeaderNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePageLayoutNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:notes}.
+ *
+ */
+public class PresentationNotesElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "notes");
+
+	/**
+	 * Create the instance of <code>PresentationNotesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationNotesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.DrawingPage, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:notes}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseDateTimeNameAttribute</code> , See {@odf.attribute presentation:use-date-time-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseDateTimeNameAttribute() {
+		PresentationUseDateTimeNameAttribute attr = (PresentationUseDateTimeNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-date-time-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseDateTimeNameAttribute</code> , See {@odf.attribute presentation:use-date-time-name}
+	 *
+	 * @param presentationUseDateTimeNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseDateTimeNameAttribute(String presentationUseDateTimeNameValue) {
+		PresentationUseDateTimeNameAttribute attr = new PresentationUseDateTimeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseDateTimeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseFooterNameAttribute</code> , See {@odf.attribute presentation:use-footer-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseFooterNameAttribute() {
+		PresentationUseFooterNameAttribute attr = (PresentationUseFooterNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-footer-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseFooterNameAttribute</code> , See {@odf.attribute presentation:use-footer-name}
+	 *
+	 * @param presentationUseFooterNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseFooterNameAttribute(String presentationUseFooterNameValue) {
+		PresentationUseFooterNameAttribute attr = new PresentationUseFooterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseFooterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseHeaderNameAttribute</code> , See {@odf.attribute presentation:use-header-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseHeaderNameAttribute() {
+		PresentationUseHeaderNameAttribute attr = (PresentationUseHeaderNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-header-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseHeaderNameAttribute</code> , See {@odf.attribute presentation:use-header-name}
+	 *
+	 * @param presentationUseHeaderNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseHeaderNameAttribute(String presentationUseHeaderNameValue) {
+		PresentationUseHeaderNameAttribute attr = new PresentationUseHeaderNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseHeaderNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePageLayoutNameAttribute</code> , See {@odf.attribute style:page-layout-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePageLayoutNameAttribute() {
+		StylePageLayoutNameAttribute attr = (StylePageLayoutNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "page-layout-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePageLayoutNameAttribute</code> , See {@odf.attribute style:page-layout-name}
+	 *
+	 * @param stylePageLayoutNameValue   The type is <code>String</code>
+	 */
+	public void setStylePageLayoutNameAttribute(String stylePageLayoutNameValue) {
+		StylePageLayoutNameAttribute attr = new StylePageLayoutNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePageLayoutNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:forms}.
+	 *
+	 * @return the element {@odf.element office:forms}
+	 */
+	public OfficeFormsElement newOfficeFormsElement() {
+		OfficeFormsElement officeForms = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFormsElement.class);
+		this.appendChild(officeForms);
+		return officeForms;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationPlaceholderElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationPlaceholderElement.java
new file mode 100644
index 0000000..3e1c9b6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationPlaceholderElement.java
@@ -0,0 +1,206 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationObjectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:placeholder}.
+ *
+ */
+public class PresentationPlaceholderElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "placeholder");
+
+	/**
+	 * Create the instance of <code>PresentationPlaceholderElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPlaceholderElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:placeholder}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationObjectAttribute</code> , See {@odf.attribute presentation:object}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationObjectAttribute() {
+		PresentationObjectAttribute attr = (PresentationObjectAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "object");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationObjectAttribute</code> , See {@odf.attribute presentation:object}
+	 *
+	 * @param presentationObjectValue   The type is <code>String</code>
+	 */
+	public void setPresentationObjectAttribute(String presentationObjectValue) {
+		PresentationObjectAttribute attr = new PresentationObjectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationObjectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationPlayElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationPlayElement.java
new file mode 100644
index 0000000..62f14c3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationPlayElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShapeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSpeedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:play}.
+ *
+ */
+public class PresentationPlayElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "play");
+
+	/**
+	 * Create the instance of <code>PresentationPlayElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationPlayElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:play}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShapeIdAttribute() {
+		DrawShapeIdAttribute attr = (DrawShapeIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shape-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * @param drawShapeIdValue   The type is <code>String</code>
+	 */
+	public void setDrawShapeIdAttribute(String drawShapeIdValue) {
+		DrawShapeIdAttribute attr = new DrawShapeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShapeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSpeedAttribute() {
+		PresentationSpeedAttribute attr = (PresentationSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationSpeedAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @param presentationSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationSpeedAttribute(String presentationSpeedValue) {
+		PresentationSpeedAttribute attr = new PresentationSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSpeedValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationSettingsElement.java
new file mode 100644
index 0000000..98e305e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationSettingsElement.java
@@ -0,0 +1,436 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationAnimationsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationEndlessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationForceManualAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationFullScreenAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMouseAsPenAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationMouseVisibleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPauseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationShowEndOfPresentationSlideAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationShowLogoAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartPageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartWithNavigatorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStayOnTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationTransitionOnClickAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:settings}.
+ *
+ */
+public class PresentationSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "settings");
+
+	/**
+	 * Create the instance of <code>PresentationSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationAnimationsAttribute</code> , See {@odf.attribute presentation:animations}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationAnimationsAttribute() {
+		PresentationAnimationsAttribute attr = (PresentationAnimationsAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "animations");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationAnimationsAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationAnimationsAttribute</code> , See {@odf.attribute presentation:animations}
+	 *
+	 * @param presentationAnimationsValue   The type is <code>String</code>
+	 */
+	public void setPresentationAnimationsAttribute(String presentationAnimationsValue) {
+		PresentationAnimationsAttribute attr = new PresentationAnimationsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationAnimationsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationEndlessAttribute</code> , See {@odf.attribute presentation:endless}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationEndlessAttribute() {
+		PresentationEndlessAttribute attr = (PresentationEndlessAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "endless");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationEndlessAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationEndlessAttribute</code> , See {@odf.attribute presentation:endless}
+	 *
+	 * @param presentationEndlessValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationEndlessAttribute(Boolean presentationEndlessValue) {
+		PresentationEndlessAttribute attr = new PresentationEndlessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationEndlessValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationForceManualAttribute</code> , See {@odf.attribute presentation:force-manual}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationForceManualAttribute() {
+		PresentationForceManualAttribute attr = (PresentationForceManualAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "force-manual");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationForceManualAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationForceManualAttribute</code> , See {@odf.attribute presentation:force-manual}
+	 *
+	 * @param presentationForceManualValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationForceManualAttribute(Boolean presentationForceManualValue) {
+		PresentationForceManualAttribute attr = new PresentationForceManualAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationForceManualValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationFullScreenAttribute</code> , See {@odf.attribute presentation:full-screen}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationFullScreenAttribute() {
+		PresentationFullScreenAttribute attr = (PresentationFullScreenAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "full-screen");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationFullScreenAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationFullScreenAttribute</code> , See {@odf.attribute presentation:full-screen}
+	 *
+	 * @param presentationFullScreenValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationFullScreenAttribute(Boolean presentationFullScreenValue) {
+		PresentationFullScreenAttribute attr = new PresentationFullScreenAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationFullScreenValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMouseAsPenAttribute</code> , See {@odf.attribute presentation:mouse-as-pen}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationMouseAsPenAttribute() {
+		PresentationMouseAsPenAttribute attr = (PresentationMouseAsPenAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "mouse-as-pen");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationMouseAsPenAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMouseAsPenAttribute</code> , See {@odf.attribute presentation:mouse-as-pen}
+	 *
+	 * @param presentationMouseAsPenValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationMouseAsPenAttribute(Boolean presentationMouseAsPenValue) {
+		PresentationMouseAsPenAttribute attr = new PresentationMouseAsPenAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationMouseAsPenValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationMouseVisibleAttribute</code> , See {@odf.attribute presentation:mouse-visible}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationMouseVisibleAttribute() {
+		PresentationMouseVisibleAttribute attr = (PresentationMouseVisibleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "mouse-visible");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationMouseVisibleAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationMouseVisibleAttribute</code> , See {@odf.attribute presentation:mouse-visible}
+	 *
+	 * @param presentationMouseVisibleValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationMouseVisibleAttribute(Boolean presentationMouseVisibleValue) {
+		PresentationMouseVisibleAttribute attr = new PresentationMouseVisibleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationMouseVisibleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPauseAttribute</code> , See {@odf.attribute presentation:pause}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPauseAttribute() {
+		PresentationPauseAttribute attr = (PresentationPauseAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "pause");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPauseAttribute</code> , See {@odf.attribute presentation:pause}
+	 *
+	 * @param presentationPauseValue   The type is <code>String</code>
+	 */
+	public void setPresentationPauseAttribute(String presentationPauseValue) {
+		PresentationPauseAttribute attr = new PresentationPauseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPauseValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationShowAttribute</code> , See {@odf.attribute presentation:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationShowAttribute() {
+		PresentationShowAttribute attr = (PresentationShowAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationShowAttribute</code> , See {@odf.attribute presentation:show}
+	 *
+	 * @param presentationShowValue   The type is <code>String</code>
+	 */
+	public void setPresentationShowAttribute(String presentationShowValue) {
+		PresentationShowAttribute attr = new PresentationShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationShowEndOfPresentationSlideAttribute</code> , See {@odf.attribute presentation:show-end-of-presentation-slide}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationShowEndOfPresentationSlideAttribute() {
+		PresentationShowEndOfPresentationSlideAttribute attr = (PresentationShowEndOfPresentationSlideAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "show-end-of-presentation-slide");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationShowEndOfPresentationSlideAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationShowEndOfPresentationSlideAttribute</code> , See {@odf.attribute presentation:show-end-of-presentation-slide}
+	 *
+	 * @param presentationShowEndOfPresentationSlideValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationShowEndOfPresentationSlideAttribute(Boolean presentationShowEndOfPresentationSlideValue) {
+		PresentationShowEndOfPresentationSlideAttribute attr = new PresentationShowEndOfPresentationSlideAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationShowEndOfPresentationSlideValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationShowLogoAttribute</code> , See {@odf.attribute presentation:show-logo}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationShowLogoAttribute() {
+		PresentationShowLogoAttribute attr = (PresentationShowLogoAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "show-logo");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationShowLogoAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationShowLogoAttribute</code> , See {@odf.attribute presentation:show-logo}
+	 *
+	 * @param presentationShowLogoValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationShowLogoAttribute(Boolean presentationShowLogoValue) {
+		PresentationShowLogoAttribute attr = new PresentationShowLogoAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationShowLogoValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartPageAttribute</code> , See {@odf.attribute presentation:start-page}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStartPageAttribute() {
+		PresentationStartPageAttribute attr = (PresentationStartPageAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-page");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartPageAttribute</code> , See {@odf.attribute presentation:start-page}
+	 *
+	 * @param presentationStartPageValue   The type is <code>String</code>
+	 */
+	public void setPresentationStartPageAttribute(String presentationStartPageValue) {
+		PresentationStartPageAttribute attr = new PresentationStartPageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStartPageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartWithNavigatorAttribute</code> , See {@odf.attribute presentation:start-with-navigator}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationStartWithNavigatorAttribute() {
+		PresentationStartWithNavigatorAttribute attr = (PresentationStartWithNavigatorAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-with-navigator");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationStartWithNavigatorAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartWithNavigatorAttribute</code> , See {@odf.attribute presentation:start-with-navigator}
+	 *
+	 * @param presentationStartWithNavigatorValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationStartWithNavigatorAttribute(Boolean presentationStartWithNavigatorValue) {
+		PresentationStartWithNavigatorAttribute attr = new PresentationStartWithNavigatorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationStartWithNavigatorValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStayOnTopAttribute</code> , See {@odf.attribute presentation:stay-on-top}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationStayOnTopAttribute() {
+		PresentationStayOnTopAttribute attr = (PresentationStayOnTopAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "stay-on-top");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(PresentationStayOnTopAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStayOnTopAttribute</code> , See {@odf.attribute presentation:stay-on-top}
+	 *
+	 * @param presentationStayOnTopValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationStayOnTopAttribute(Boolean presentationStayOnTopValue) {
+		PresentationStayOnTopAttribute attr = new PresentationStayOnTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationStayOnTopValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationTransitionOnClickAttribute</code> , See {@odf.attribute presentation:transition-on-click}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationTransitionOnClickAttribute() {
+		PresentationTransitionOnClickAttribute attr = (PresentationTransitionOnClickAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "transition-on-click");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationTransitionOnClickAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationTransitionOnClickAttribute</code> , See {@odf.attribute presentation:transition-on-click}
+	 *
+	 * @param presentationTransitionOnClickValue   The type is <code>String</code>
+	 */
+	public void setPresentationTransitionOnClickAttribute(String presentationTransitionOnClickValue) {
+		PresentationTransitionOnClickAttribute attr = new PresentationTransitionOnClickAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationTransitionOnClickValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:show}.
+	 *
+	 * @param presentationNameValue  the <code>String</code> value of <code>PresentationNameAttribute</code>, see {@odf.attribute  presentation:name} at specification
+	 * @param presentationPagesValue  the <code>String</code> value of <code>PresentationPagesAttribute</code>, see {@odf.attribute  presentation:pages} at specification
+	 * @return the element {@odf.element presentation:show}
+	 */
+	 public PresentationShowElement newPresentationShowElement(String presentationNameValue, String presentationPagesValue) {
+		PresentationShowElement presentationShow = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationShowElement.class);
+		presentationShow.setPresentationNameAttribute(presentationNameValue);
+		presentationShow.setPresentationPagesAttribute(presentationPagesValue);
+		this.appendChild(presentationShow);
+		return presentationShow;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowElement.java
new file mode 100644
index 0000000..cb6f86b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPagesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:show}.
+ *
+ */
+public class PresentationShowElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "show");
+
+	/**
+	 * Create the instance of <code>PresentationShowElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationShowElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:show}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationNameAttribute() {
+		PresentationNameAttribute attr = (PresentationNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationNameAttribute</code> , See {@odf.attribute presentation:name}
+	 *
+	 * @param presentationNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationNameAttribute(String presentationNameValue) {
+		PresentationNameAttribute attr = new PresentationNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPagesAttribute</code> , See {@odf.attribute presentation:pages}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPagesAttribute() {
+		PresentationPagesAttribute attr = (PresentationPagesAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "pages");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPagesAttribute</code> , See {@odf.attribute presentation:pages}
+	 *
+	 * @param presentationPagesValue   The type is <code>String</code>
+	 */
+	public void setPresentationPagesAttribute(String presentationPagesValue) {
+		PresentationPagesAttribute attr = new PresentationPagesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPagesValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowShapeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowShapeElement.java
new file mode 100644
index 0000000..15680ef
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowShapeElement.java
@@ -0,0 +1,263 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShapeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPathIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSpeedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartScaleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:show-shape}.
+ *
+ */
+public class PresentationShowShapeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "show-shape");
+
+	/**
+	 * Create the instance of <code>PresentationShowShapeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationShowShapeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:show-shape}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShapeIdAttribute() {
+		DrawShapeIdAttribute attr = (DrawShapeIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shape-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * @param drawShapeIdValue   The type is <code>String</code>
+	 */
+	public void setDrawShapeIdAttribute(String drawShapeIdValue) {
+		DrawShapeIdAttribute attr = new DrawShapeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShapeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDelayAttribute() {
+		PresentationDelayAttribute attr = (PresentationDelayAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @param presentationDelayValue   The type is <code>String</code>
+	 */
+	public void setPresentationDelayAttribute(String presentationDelayValue) {
+		PresentationDelayAttribute attr = new PresentationDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDirectionAttribute() {
+		PresentationDirectionAttribute attr = (PresentationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @param presentationDirectionValue   The type is <code>String</code>
+	 */
+	public void setPresentationDirectionAttribute(String presentationDirectionValue) {
+		PresentationDirectionAttribute attr = new PresentationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationEffectAttribute() {
+		PresentationEffectAttribute attr = (PresentationEffectAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationEffectAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @param presentationEffectValue   The type is <code>String</code>
+	 */
+	public void setPresentationEffectAttribute(String presentationEffectValue) {
+		PresentationEffectAttribute attr = new PresentationEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPathIdAttribute() {
+		PresentationPathIdAttribute attr = (PresentationPathIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "path-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @param presentationPathIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPathIdAttribute(String presentationPathIdValue) {
+		PresentationPathIdAttribute attr = new PresentationPathIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPathIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSpeedAttribute() {
+		PresentationSpeedAttribute attr = (PresentationSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationSpeedAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @param presentationSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationSpeedAttribute(String presentationSpeedValue) {
+		PresentationSpeedAttribute attr = new PresentationSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSpeedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStartScaleAttribute() {
+		PresentationStartScaleAttribute attr = (PresentationStartScaleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationStartScaleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @param presentationStartScaleValue   The type is <code>String</code>
+	 */
+	public void setPresentationStartScaleAttribute(String presentationStartScaleValue) {
+		PresentationStartScaleAttribute attr = new PresentationStartScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStartScaleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowTextElement.java
new file mode 100644
index 0000000..1d8a704
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationShowTextElement.java
@@ -0,0 +1,263 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShapeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationEffectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPathIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationSpeedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationStartScaleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:show-text}.
+ *
+ */
+public class PresentationShowTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "show-text");
+
+	/**
+	 * Create the instance of <code>PresentationShowTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationShowTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:show-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShapeIdAttribute() {
+		DrawShapeIdAttribute attr = (DrawShapeIdAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shape-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShapeIdAttribute</code> , See {@odf.attribute draw:shape-id}
+	 *
+	 * @param drawShapeIdValue   The type is <code>String</code>
+	 */
+	public void setDrawShapeIdAttribute(String drawShapeIdValue) {
+		DrawShapeIdAttribute attr = new DrawShapeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShapeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDelayAttribute() {
+		PresentationDelayAttribute attr = (PresentationDelayAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDelayAttribute</code> , See {@odf.attribute presentation:delay}
+	 *
+	 * @param presentationDelayValue   The type is <code>String</code>
+	 */
+	public void setPresentationDelayAttribute(String presentationDelayValue) {
+		PresentationDelayAttribute attr = new PresentationDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDirectionAttribute() {
+		PresentationDirectionAttribute attr = (PresentationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationDirectionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDirectionAttribute</code> , See {@odf.attribute presentation:direction}
+	 *
+	 * @param presentationDirectionValue   The type is <code>String</code>
+	 */
+	public void setPresentationDirectionAttribute(String presentationDirectionValue) {
+		PresentationDirectionAttribute attr = new PresentationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationEffectAttribute() {
+		PresentationEffectAttribute attr = (PresentationEffectAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "effect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationEffectAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationEffectAttribute</code> , See {@odf.attribute presentation:effect}
+	 *
+	 * @param presentationEffectValue   The type is <code>String</code>
+	 */
+	public void setPresentationEffectAttribute(String presentationEffectValue) {
+		PresentationEffectAttribute attr = new PresentationEffectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationEffectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPathIdAttribute() {
+		PresentationPathIdAttribute attr = (PresentationPathIdAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "path-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPathIdAttribute</code> , See {@odf.attribute presentation:path-id}
+	 *
+	 * @param presentationPathIdValue   The type is <code>String</code>
+	 */
+	public void setPresentationPathIdAttribute(String presentationPathIdValue) {
+		PresentationPathIdAttribute attr = new PresentationPathIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPathIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationSpeedAttribute() {
+		PresentationSpeedAttribute attr = (PresentationSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationSpeedAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationSpeedAttribute</code> , See {@odf.attribute presentation:speed}
+	 *
+	 * @param presentationSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationSpeedAttribute(String presentationSpeedValue) {
+		PresentationSpeedAttribute attr = new PresentationSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationSpeedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationStartScaleAttribute() {
+		PresentationStartScaleAttribute attr = (PresentationStartScaleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "start-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return PresentationStartScaleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationStartScaleAttribute</code> , See {@odf.attribute presentation:start-scale}
+	 *
+	 * @param presentationStartScaleValue   The type is <code>String</code>
+	 */
+	public void setPresentationStartScaleAttribute(String presentationStartScaleValue) {
+		PresentationStartScaleAttribute attr = new PresentationStartScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationStartScaleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationSoundElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationSoundElement.java
new file mode 100644
index 0000000..fc427a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/presentation/PresentationSoundElement.java
@@ -0,0 +1,225 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.presentation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPlayFullAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element presentation:sound}.
+ *
+ */
+public class PresentationSoundElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.PRESENTATION, "sound");
+
+	/**
+	 * Create the instance of <code>PresentationSoundElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public PresentationSoundElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element presentation:sound}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPlayFullAttribute</code> , See {@odf.attribute presentation:play-full}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationPlayFullAttribute() {
+		PresentationPlayFullAttribute attr = (PresentationPlayFullAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "play-full");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPlayFullAttribute</code> , See {@odf.attribute presentation:play-full}
+	 *
+	 * @param presentationPlayFullValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationPlayFullAttribute(Boolean presentationPlayFullValue) {
+		PresentationPlayFullAttribute attr = new PresentationPlayFullAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationPlayFullValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/script/ScriptEventListenerElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/script/ScriptEventListenerElement.java
new file mode 100644
index 0000000..c2b9edd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/script/ScriptEventListenerElement.java
@@ -0,0 +1,225 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.script;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.script.ScriptEventNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.script.ScriptLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.script.ScriptMacroNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element script:event-listener}.
+ *
+ */
+public class ScriptEventListenerElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SCRIPT, "event-listener");
+
+	/**
+	 * Create the instance of <code>ScriptEventListenerElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public ScriptEventListenerElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element script:event-listener}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ScriptEventNameAttribute</code> , See {@odf.attribute script:event-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getScriptEventNameAttribute() {
+		ScriptEventNameAttribute attr = (ScriptEventNameAttribute) getOdfAttribute(OdfDocumentNamespace.SCRIPT, "event-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ScriptEventNameAttribute</code> , See {@odf.attribute script:event-name}
+	 *
+	 * @param scriptEventNameValue   The type is <code>String</code>
+	 */
+	public void setScriptEventNameAttribute(String scriptEventNameValue) {
+		ScriptEventNameAttribute attr = new ScriptEventNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(scriptEventNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ScriptLanguageAttribute</code> , See {@odf.attribute script:language}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getScriptLanguageAttribute() {
+		ScriptLanguageAttribute attr = (ScriptLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.SCRIPT, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ScriptLanguageAttribute</code> , See {@odf.attribute script:language}
+	 *
+	 * @param scriptLanguageValue   The type is <code>String</code>
+	 */
+	public void setScriptLanguageAttribute(String scriptLanguageValue) {
+		ScriptLanguageAttribute attr = new ScriptLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(scriptLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ScriptMacroNameAttribute</code> , See {@odf.attribute script:macro-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getScriptMacroNameAttribute() {
+		ScriptMacroNameAttribute attr = (ScriptMacroNameAttribute) getOdfAttribute(OdfDocumentNamespace.SCRIPT, "macro-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ScriptMacroNameAttribute</code> , See {@odf.attribute script:macro-name}
+	 *
+	 * @param scriptMacroNameValue   The type is <code>String</code>
+	 */
+	public void setScriptMacroNameAttribute(String scriptMacroNameValue) {
+		ScriptMacroNameAttribute attr = new ScriptMacroNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(scriptMacroNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleBackgroundImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleBackgroundImageElement.java
new file mode 100644
index 0000000..1c3a49e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleBackgroundImageElement.java
@@ -0,0 +1,285 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBinaryDataElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawOpacityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFilterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:background-image}.
+ *
+ */
+public class StyleBackgroundImageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "background-image");
+
+	/**
+	 * Create the instance of <code>StyleBackgroundImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleBackgroundImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:background-image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawOpacityAttribute</code> , See {@odf.attribute draw:opacity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawOpacityAttribute() {
+		DrawOpacityAttribute attr = (DrawOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "opacity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawOpacityAttribute</code> , See {@odf.attribute draw:opacity}
+	 *
+	 * @param drawOpacityValue   The type is <code>String</code>
+	 */
+	public void setDrawOpacityAttribute(String drawOpacityValue) {
+		DrawOpacityAttribute attr = new DrawOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawOpacityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFilterNameAttribute</code> , See {@odf.attribute style:filter-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFilterNameAttribute() {
+		StyleFilterNameAttribute attr = (StyleFilterNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "filter-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFilterNameAttribute</code> , See {@odf.attribute style:filter-name}
+	 *
+	 * @param styleFilterNameValue   The type is <code>String</code>
+	 */
+	public void setStyleFilterNameAttribute(String styleFilterNameValue) {
+		StyleFilterNameAttribute attr = new StyleFilterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFilterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePositionAttribute</code> , See {@odf.attribute style:position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePositionAttribute() {
+		StylePositionAttribute attr = (StylePositionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StylePositionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePositionAttribute</code> , See {@odf.attribute style:position}
+	 *
+	 * @param stylePositionValue   The type is <code>String</code>
+	 */
+	public void setStylePositionAttribute(String stylePositionValue) {
+		StylePositionAttribute attr = new StylePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRepeatAttribute</code> , See {@odf.attribute style:repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRepeatAttribute() {
+		StyleRepeatAttribute attr = (StyleRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleRepeatAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRepeatAttribute</code> , See {@odf.attribute style:repeat}
+	 *
+	 * @param styleRepeatValue   The type is <code>String</code>
+	 */
+	public void setStyleRepeatAttribute(String styleRepeatValue) {
+		StyleRepeatAttribute attr = new StyleRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:binary-data}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:binary-data}
+	 */
+	public OfficeBinaryDataElement newOfficeBinaryDataElement() {
+		OfficeBinaryDataElement officeBinaryData = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeBinaryDataElement.class);
+		this.appendChild(officeBinaryData);
+		return officeBinaryData;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleChartPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleChartPropertiesElement.java
new file mode 100644
index 0000000..bc598cd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleChartPropertiesElement.java
@@ -0,0 +1,2010 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.chart.ChartLabelSeparatorElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartSymbolImageElement;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAngleOffsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAutoPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAutoSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAxisLabelPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartAxisPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartConnectBarsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDataLabelNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDataLabelSymbolAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDataLabelTextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDeepAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDisplayLabelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorCategoryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorLowerIndicatorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorLowerLimitAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorLowerRangeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorMarginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorPercentageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorUpperIndicatorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorUpperLimitAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartErrorUpperRangeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartGapWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartGroupBarsPerAxisAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartHoleSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartIncludeHiddenCellsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartInterpolationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartIntervalMajorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartIntervalMinorDivisorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartJapaneseCandleStickAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLabelArrangementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLabelPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLabelPositionNegativeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLinkDataStyleToSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLogarithmicAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartMaximumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartMeanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartMinimumAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartOriginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartOverlapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartPercentageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartPieOffsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartRegressionTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartReverseDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartRightAngledAxesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartScaleTextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSeriesSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSolidTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSortByXValuesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSplineOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSplineResolutionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartStackedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSymbolHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSymbolNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSymbolTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartSymbolWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTextOverlapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartThreeDimensionalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTickMarkPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTickMarksMajorInnerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTickMarksMajorOuterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTickMarksMinorInnerAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTickMarksMinorOuterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartTreatEmptyCellsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartVisibleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRotationAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLineBreakAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:chart-properties}.
+ *
+ */
+public class StyleChartPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "chart-properties");
+
+	/**
+	 * Create the instance of <code>StyleChartPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleChartPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:chart-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty AngleOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "angle-offset"));
+
+	public final static OdfStyleProperty AutoPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "auto-position"));
+
+	public final static OdfStyleProperty AutoSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "auto-size"));
+
+	public final static OdfStyleProperty AxisLabelPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "axis-label-position"));
+
+	public final static OdfStyleProperty AxisPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "axis-position"));
+
+	public final static OdfStyleProperty ConnectBars =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "connect-bars"));
+
+	public final static OdfStyleProperty DataLabelNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "data-label-number"));
+
+	public final static OdfStyleProperty DataLabelSymbol =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "data-label-symbol"));
+
+	public final static OdfStyleProperty DataLabelText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "data-label-text"));
+
+	public final static OdfStyleProperty Deep =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "deep"));
+
+	public final static OdfStyleProperty DisplayLabel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "display-label"));
+
+	public final static OdfStyleProperty ErrorCategory =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-category"));
+
+	public final static OdfStyleProperty ErrorLowerIndicator =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-indicator"));
+
+	public final static OdfStyleProperty ErrorLowerLimit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-limit"));
+
+	public final static OdfStyleProperty ErrorLowerRange =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-range"));
+
+	public final static OdfStyleProperty ErrorMargin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-margin"));
+
+	public final static OdfStyleProperty ErrorPercentage =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-percentage"));
+
+	public final static OdfStyleProperty ErrorUpperIndicator =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-indicator"));
+
+	public final static OdfStyleProperty ErrorUpperLimit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-limit"));
+
+	public final static OdfStyleProperty ErrorUpperRange =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-range"));
+
+	public final static OdfStyleProperty GapWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "gap-width"));
+
+	public final static OdfStyleProperty GroupBarsPerAxis =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "group-bars-per-axis"));
+
+	public final static OdfStyleProperty HoleSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "hole-size"));
+
+	public final static OdfStyleProperty IncludeHiddenCells =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "include-hidden-cells"));
+
+	public final static OdfStyleProperty Interpolation =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "interpolation"));
+
+	public final static OdfStyleProperty IntervalMajor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "interval-major"));
+
+	public final static OdfStyleProperty IntervalMinorDivisor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "interval-minor-divisor"));
+
+	public final static OdfStyleProperty JapaneseCandleStick =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "japanese-candle-stick"));
+
+	public final static OdfStyleProperty LabelArrangement =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "label-arrangement"));
+
+	public final static OdfStyleProperty LabelPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "label-position"));
+
+	public final static OdfStyleProperty LabelPositionNegative =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "label-position-negative"));
+
+	public final static OdfStyleProperty Lines =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "lines"));
+
+	public final static OdfStyleProperty LinkDataStyleToSource =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "link-data-style-to-source"));
+
+	public final static OdfStyleProperty Logarithmic =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "logarithmic"));
+
+	public final static OdfStyleProperty Maximum =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "maximum"));
+
+	public final static OdfStyleProperty MeanValue =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "mean-value"));
+
+	public final static OdfStyleProperty Minimum =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "minimum"));
+
+	public final static OdfStyleProperty Origin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "origin"));
+
+	public final static OdfStyleProperty Overlap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "overlap"));
+
+	public final static OdfStyleProperty Percentage =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "percentage"));
+
+	public final static OdfStyleProperty PieOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "pie-offset"));
+
+	public final static OdfStyleProperty RegressionType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "regression-type"));
+
+	public final static OdfStyleProperty ReverseDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "reverse-direction"));
+
+	public final static OdfStyleProperty RightAngledAxes =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "right-angled-axes"));
+
+	public final static OdfStyleProperty ScaleText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "scale-text"));
+
+	public final static OdfStyleProperty SeriesSource =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "series-source"));
+
+	public final static OdfStyleProperty SolidType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "solid-type"));
+
+	public final static OdfStyleProperty SortByXValues =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "sort-by-x-values"));
+
+	public final static OdfStyleProperty SplineOrder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "spline-order"));
+
+	public final static OdfStyleProperty SplineResolution =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "spline-resolution"));
+
+	public final static OdfStyleProperty Stacked =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "stacked"));
+
+	public final static OdfStyleProperty SymbolHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-height"));
+
+	public final static OdfStyleProperty SymbolName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-name"));
+
+	public final static OdfStyleProperty SymbolType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-type"));
+
+	public final static OdfStyleProperty SymbolWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-width"));
+
+	public final static OdfStyleProperty TextOverlap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "text-overlap"));
+
+	public final static OdfStyleProperty ThreeDimensional =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "three-dimensional"));
+
+	public final static OdfStyleProperty TickMarkPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-mark-position"));
+
+	public final static OdfStyleProperty TickMarksMajorInner =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-major-inner"));
+
+	public final static OdfStyleProperty TickMarksMajorOuter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-major-outer"));
+
+	public final static OdfStyleProperty TickMarksMinorInner =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-minor-inner"));
+
+	public final static OdfStyleProperty TickMarksMinorOuter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-minor-outer"));
+
+	public final static OdfStyleProperty TreatEmptyCells =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "treat-empty-cells"));
+
+	public final static OdfStyleProperty Vertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "vertical"));
+
+	public final static OdfStyleProperty Visible =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "visible"));
+
+	public final static OdfStyleProperty Direction =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "direction"));
+
+	public final static OdfStyleProperty RotationAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-angle"));
+
+	public final static OdfStyleProperty LineBreak =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "line-break"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAngleOffsetAttribute</code> , See {@odf.attribute chart:angle-offset}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartAngleOffsetAttribute() {
+		ChartAngleOffsetAttribute attr = (ChartAngleOffsetAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "angle-offset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAngleOffsetAttribute</code> , See {@odf.attribute chart:angle-offset}
+	 *
+	 * @param chartAngleOffsetValue   The type is <code>String</code>
+	 */
+	public void setChartAngleOffsetAttribute(String chartAngleOffsetValue) {
+		ChartAngleOffsetAttribute attr = new ChartAngleOffsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartAngleOffsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAutoPositionAttribute</code> , See {@odf.attribute chart:auto-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartAutoPositionAttribute() {
+		ChartAutoPositionAttribute attr = (ChartAutoPositionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "auto-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAutoPositionAttribute</code> , See {@odf.attribute chart:auto-position}
+	 *
+	 * @param chartAutoPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setChartAutoPositionAttribute(Boolean chartAutoPositionValue) {
+		ChartAutoPositionAttribute attr = new ChartAutoPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartAutoPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAutoSizeAttribute</code> , See {@odf.attribute chart:auto-size}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartAutoSizeAttribute() {
+		ChartAutoSizeAttribute attr = (ChartAutoSizeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "auto-size");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAutoSizeAttribute</code> , See {@odf.attribute chart:auto-size}
+	 *
+	 * @param chartAutoSizeValue   The type is <code>Boolean</code>
+	 */
+	public void setChartAutoSizeAttribute(Boolean chartAutoSizeValue) {
+		ChartAutoSizeAttribute attr = new ChartAutoSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartAutoSizeValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAxisLabelPositionAttribute</code> , See {@odf.attribute chart:axis-label-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartAxisLabelPositionAttribute() {
+		ChartAxisLabelPositionAttribute attr = (ChartAxisLabelPositionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "axis-label-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAxisLabelPositionAttribute</code> , See {@odf.attribute chart:axis-label-position}
+	 *
+	 * @param chartAxisLabelPositionValue   The type is <code>String</code>
+	 */
+	public void setChartAxisLabelPositionAttribute(String chartAxisLabelPositionValue) {
+		ChartAxisLabelPositionAttribute attr = new ChartAxisLabelPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartAxisLabelPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartAxisPositionAttribute</code> , See {@odf.attribute chart:axis-position}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartAxisPositionAttribute() {
+		ChartAxisPositionAttribute attr = (ChartAxisPositionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "axis-position");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartAxisPositionAttribute</code> , See {@odf.attribute chart:axis-position}
+	 *
+	 * @param chartAxisPositionValue   The type is <code>Double</code>
+	 */
+	public void setChartAxisPositionAttribute(Double chartAxisPositionValue) {
+		ChartAxisPositionAttribute attr = new ChartAxisPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartAxisPositionValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartConnectBarsAttribute</code> , See {@odf.attribute chart:connect-bars}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartConnectBarsAttribute() {
+		ChartConnectBarsAttribute attr = (ChartConnectBarsAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "connect-bars");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartConnectBarsAttribute</code> , See {@odf.attribute chart:connect-bars}
+	 *
+	 * @param chartConnectBarsValue   The type is <code>Boolean</code>
+	 */
+	public void setChartConnectBarsAttribute(Boolean chartConnectBarsValue) {
+		ChartConnectBarsAttribute attr = new ChartConnectBarsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartConnectBarsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDataLabelNumberAttribute</code> , See {@odf.attribute chart:data-label-number}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartDataLabelNumberAttribute() {
+		ChartDataLabelNumberAttribute attr = (ChartDataLabelNumberAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "data-label-number");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDataLabelNumberAttribute</code> , See {@odf.attribute chart:data-label-number}
+	 *
+	 * @param chartDataLabelNumberValue   The type is <code>String</code>
+	 */
+	public void setChartDataLabelNumberAttribute(String chartDataLabelNumberValue) {
+		ChartDataLabelNumberAttribute attr = new ChartDataLabelNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartDataLabelNumberValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDataLabelSymbolAttribute</code> , See {@odf.attribute chart:data-label-symbol}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartDataLabelSymbolAttribute() {
+		ChartDataLabelSymbolAttribute attr = (ChartDataLabelSymbolAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "data-label-symbol");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDataLabelSymbolAttribute</code> , See {@odf.attribute chart:data-label-symbol}
+	 *
+	 * @param chartDataLabelSymbolValue   The type is <code>Boolean</code>
+	 */
+	public void setChartDataLabelSymbolAttribute(Boolean chartDataLabelSymbolValue) {
+		ChartDataLabelSymbolAttribute attr = new ChartDataLabelSymbolAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartDataLabelSymbolValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDataLabelTextAttribute</code> , See {@odf.attribute chart:data-label-text}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartDataLabelTextAttribute() {
+		ChartDataLabelTextAttribute attr = (ChartDataLabelTextAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "data-label-text");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDataLabelTextAttribute</code> , See {@odf.attribute chart:data-label-text}
+	 *
+	 * @param chartDataLabelTextValue   The type is <code>Boolean</code>
+	 */
+	public void setChartDataLabelTextAttribute(Boolean chartDataLabelTextValue) {
+		ChartDataLabelTextAttribute attr = new ChartDataLabelTextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartDataLabelTextValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDeepAttribute</code> , See {@odf.attribute chart:deep}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartDeepAttribute() {
+		ChartDeepAttribute attr = (ChartDeepAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "deep");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDeepAttribute</code> , See {@odf.attribute chart:deep}
+	 *
+	 * @param chartDeepValue   The type is <code>Boolean</code>
+	 */
+	public void setChartDeepAttribute(Boolean chartDeepValue) {
+		ChartDeepAttribute attr = new ChartDeepAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartDeepValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartDisplayLabelAttribute</code> , See {@odf.attribute chart:display-label}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartDisplayLabelAttribute() {
+		ChartDisplayLabelAttribute attr = (ChartDisplayLabelAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "display-label");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartDisplayLabelAttribute</code> , See {@odf.attribute chart:display-label}
+	 *
+	 * @param chartDisplayLabelValue   The type is <code>Boolean</code>
+	 */
+	public void setChartDisplayLabelAttribute(Boolean chartDisplayLabelValue) {
+		ChartDisplayLabelAttribute attr = new ChartDisplayLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartDisplayLabelValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorCategoryAttribute</code> , See {@odf.attribute chart:error-category}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartErrorCategoryAttribute() {
+		ChartErrorCategoryAttribute attr = (ChartErrorCategoryAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-category");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorCategoryAttribute</code> , See {@odf.attribute chart:error-category}
+	 *
+	 * @param chartErrorCategoryValue   The type is <code>String</code>
+	 */
+	public void setChartErrorCategoryAttribute(String chartErrorCategoryValue) {
+		ChartErrorCategoryAttribute attr = new ChartErrorCategoryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartErrorCategoryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorLowerIndicatorAttribute</code> , See {@odf.attribute chart:error-lower-indicator}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartErrorLowerIndicatorAttribute() {
+		ChartErrorLowerIndicatorAttribute attr = (ChartErrorLowerIndicatorAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-lower-indicator");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorLowerIndicatorAttribute</code> , See {@odf.attribute chart:error-lower-indicator}
+	 *
+	 * @param chartErrorLowerIndicatorValue   The type is <code>Boolean</code>
+	 */
+	public void setChartErrorLowerIndicatorAttribute(Boolean chartErrorLowerIndicatorValue) {
+		ChartErrorLowerIndicatorAttribute attr = new ChartErrorLowerIndicatorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartErrorLowerIndicatorValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorLowerLimitAttribute</code> , See {@odf.attribute chart:error-lower-limit}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartErrorLowerLimitAttribute() {
+		ChartErrorLowerLimitAttribute attr = (ChartErrorLowerLimitAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-lower-limit");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorLowerLimitAttribute</code> , See {@odf.attribute chart:error-lower-limit}
+	 *
+	 * @param chartErrorLowerLimitValue   The type is <code>Double</code>
+	 */
+	public void setChartErrorLowerLimitAttribute(Double chartErrorLowerLimitValue) {
+		ChartErrorLowerLimitAttribute attr = new ChartErrorLowerLimitAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartErrorLowerLimitValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorLowerRangeAttribute</code> , See {@odf.attribute chart:error-lower-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartErrorLowerRangeAttribute() {
+		ChartErrorLowerRangeAttribute attr = (ChartErrorLowerRangeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-lower-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorLowerRangeAttribute</code> , See {@odf.attribute chart:error-lower-range}
+	 *
+	 * @param chartErrorLowerRangeValue   The type is <code>String</code>
+	 */
+	public void setChartErrorLowerRangeAttribute(String chartErrorLowerRangeValue) {
+		ChartErrorLowerRangeAttribute attr = new ChartErrorLowerRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartErrorLowerRangeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorMarginAttribute</code> , See {@odf.attribute chart:error-margin}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartErrorMarginAttribute() {
+		ChartErrorMarginAttribute attr = (ChartErrorMarginAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-margin");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorMarginAttribute</code> , See {@odf.attribute chart:error-margin}
+	 *
+	 * @param chartErrorMarginValue   The type is <code>Double</code>
+	 */
+	public void setChartErrorMarginAttribute(Double chartErrorMarginValue) {
+		ChartErrorMarginAttribute attr = new ChartErrorMarginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartErrorMarginValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorPercentageAttribute</code> , See {@odf.attribute chart:error-percentage}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartErrorPercentageAttribute() {
+		ChartErrorPercentageAttribute attr = (ChartErrorPercentageAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-percentage");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorPercentageAttribute</code> , See {@odf.attribute chart:error-percentage}
+	 *
+	 * @param chartErrorPercentageValue   The type is <code>Double</code>
+	 */
+	public void setChartErrorPercentageAttribute(Double chartErrorPercentageValue) {
+		ChartErrorPercentageAttribute attr = new ChartErrorPercentageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartErrorPercentageValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorUpperIndicatorAttribute</code> , See {@odf.attribute chart:error-upper-indicator}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartErrorUpperIndicatorAttribute() {
+		ChartErrorUpperIndicatorAttribute attr = (ChartErrorUpperIndicatorAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-upper-indicator");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorUpperIndicatorAttribute</code> , See {@odf.attribute chart:error-upper-indicator}
+	 *
+	 * @param chartErrorUpperIndicatorValue   The type is <code>Boolean</code>
+	 */
+	public void setChartErrorUpperIndicatorAttribute(Boolean chartErrorUpperIndicatorValue) {
+		ChartErrorUpperIndicatorAttribute attr = new ChartErrorUpperIndicatorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartErrorUpperIndicatorValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorUpperLimitAttribute</code> , See {@odf.attribute chart:error-upper-limit}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartErrorUpperLimitAttribute() {
+		ChartErrorUpperLimitAttribute attr = (ChartErrorUpperLimitAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-upper-limit");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorUpperLimitAttribute</code> , See {@odf.attribute chart:error-upper-limit}
+	 *
+	 * @param chartErrorUpperLimitValue   The type is <code>Double</code>
+	 */
+	public void setChartErrorUpperLimitAttribute(Double chartErrorUpperLimitValue) {
+		ChartErrorUpperLimitAttribute attr = new ChartErrorUpperLimitAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartErrorUpperLimitValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartErrorUpperRangeAttribute</code> , See {@odf.attribute chart:error-upper-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartErrorUpperRangeAttribute() {
+		ChartErrorUpperRangeAttribute attr = (ChartErrorUpperRangeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "error-upper-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartErrorUpperRangeAttribute</code> , See {@odf.attribute chart:error-upper-range}
+	 *
+	 * @param chartErrorUpperRangeValue   The type is <code>String</code>
+	 */
+	public void setChartErrorUpperRangeAttribute(String chartErrorUpperRangeValue) {
+		ChartErrorUpperRangeAttribute attr = new ChartErrorUpperRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartErrorUpperRangeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartGapWidthAttribute</code> , See {@odf.attribute chart:gap-width}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartGapWidthAttribute() {
+		ChartGapWidthAttribute attr = (ChartGapWidthAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "gap-width");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartGapWidthAttribute</code> , See {@odf.attribute chart:gap-width}
+	 *
+	 * @param chartGapWidthValue   The type is <code>Integer</code>
+	 */
+	public void setChartGapWidthAttribute(Integer chartGapWidthValue) {
+		ChartGapWidthAttribute attr = new ChartGapWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartGapWidthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartGroupBarsPerAxisAttribute</code> , See {@odf.attribute chart:group-bars-per-axis}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartGroupBarsPerAxisAttribute() {
+		ChartGroupBarsPerAxisAttribute attr = (ChartGroupBarsPerAxisAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "group-bars-per-axis");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartGroupBarsPerAxisAttribute</code> , See {@odf.attribute chart:group-bars-per-axis}
+	 *
+	 * @param chartGroupBarsPerAxisValue   The type is <code>Boolean</code>
+	 */
+	public void setChartGroupBarsPerAxisAttribute(Boolean chartGroupBarsPerAxisValue) {
+		ChartGroupBarsPerAxisAttribute attr = new ChartGroupBarsPerAxisAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartGroupBarsPerAxisValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartHoleSizeAttribute</code> , See {@odf.attribute chart:hole-size}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartHoleSizeAttribute() {
+		ChartHoleSizeAttribute attr = (ChartHoleSizeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "hole-size");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartHoleSizeAttribute</code> , See {@odf.attribute chart:hole-size}
+	 *
+	 * @param chartHoleSizeValue   The type is <code>String</code>
+	 */
+	public void setChartHoleSizeAttribute(String chartHoleSizeValue) {
+		ChartHoleSizeAttribute attr = new ChartHoleSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartHoleSizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartIncludeHiddenCellsAttribute</code> , See {@odf.attribute chart:include-hidden-cells}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartIncludeHiddenCellsAttribute() {
+		ChartIncludeHiddenCellsAttribute attr = (ChartIncludeHiddenCellsAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "include-hidden-cells");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartIncludeHiddenCellsAttribute</code> , See {@odf.attribute chart:include-hidden-cells}
+	 *
+	 * @param chartIncludeHiddenCellsValue   The type is <code>Boolean</code>
+	 */
+	public void setChartIncludeHiddenCellsAttribute(Boolean chartIncludeHiddenCellsValue) {
+		ChartIncludeHiddenCellsAttribute attr = new ChartIncludeHiddenCellsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartIncludeHiddenCellsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartInterpolationAttribute</code> , See {@odf.attribute chart:interpolation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartInterpolationAttribute() {
+		ChartInterpolationAttribute attr = (ChartInterpolationAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "interpolation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartInterpolationAttribute</code> , See {@odf.attribute chart:interpolation}
+	 *
+	 * @param chartInterpolationValue   The type is <code>String</code>
+	 */
+	public void setChartInterpolationAttribute(String chartInterpolationValue) {
+		ChartInterpolationAttribute attr = new ChartInterpolationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartInterpolationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartIntervalMajorAttribute</code> , See {@odf.attribute chart:interval-major}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartIntervalMajorAttribute() {
+		ChartIntervalMajorAttribute attr = (ChartIntervalMajorAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "interval-major");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartIntervalMajorAttribute</code> , See {@odf.attribute chart:interval-major}
+	 *
+	 * @param chartIntervalMajorValue   The type is <code>Double</code>
+	 */
+	public void setChartIntervalMajorAttribute(Double chartIntervalMajorValue) {
+		ChartIntervalMajorAttribute attr = new ChartIntervalMajorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartIntervalMajorValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartIntervalMinorDivisorAttribute</code> , See {@odf.attribute chart:interval-minor-divisor}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartIntervalMinorDivisorAttribute() {
+		ChartIntervalMinorDivisorAttribute attr = (ChartIntervalMinorDivisorAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "interval-minor-divisor");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartIntervalMinorDivisorAttribute</code> , See {@odf.attribute chart:interval-minor-divisor}
+	 *
+	 * @param chartIntervalMinorDivisorValue   The type is <code>Integer</code>
+	 */
+	public void setChartIntervalMinorDivisorAttribute(Integer chartIntervalMinorDivisorValue) {
+		ChartIntervalMinorDivisorAttribute attr = new ChartIntervalMinorDivisorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartIntervalMinorDivisorValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartJapaneseCandleStickAttribute</code> , See {@odf.attribute chart:japanese-candle-stick}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartJapaneseCandleStickAttribute() {
+		ChartJapaneseCandleStickAttribute attr = (ChartJapaneseCandleStickAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "japanese-candle-stick");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartJapaneseCandleStickAttribute</code> , See {@odf.attribute chart:japanese-candle-stick}
+	 *
+	 * @param chartJapaneseCandleStickValue   The type is <code>Boolean</code>
+	 */
+	public void setChartJapaneseCandleStickAttribute(Boolean chartJapaneseCandleStickValue) {
+		ChartJapaneseCandleStickAttribute attr = new ChartJapaneseCandleStickAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartJapaneseCandleStickValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLabelArrangementAttribute</code> , See {@odf.attribute chart:label-arrangement}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartLabelArrangementAttribute() {
+		ChartLabelArrangementAttribute attr = (ChartLabelArrangementAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "label-arrangement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLabelArrangementAttribute</code> , See {@odf.attribute chart:label-arrangement}
+	 *
+	 * @param chartLabelArrangementValue   The type is <code>String</code>
+	 */
+	public void setChartLabelArrangementAttribute(String chartLabelArrangementValue) {
+		ChartLabelArrangementAttribute attr = new ChartLabelArrangementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartLabelArrangementValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLabelPositionAttribute</code> , See {@odf.attribute chart:label-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartLabelPositionAttribute() {
+		ChartLabelPositionAttribute attr = (ChartLabelPositionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "label-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLabelPositionAttribute</code> , See {@odf.attribute chart:label-position}
+	 *
+	 * @param chartLabelPositionValue   The type is <code>String</code>
+	 */
+	public void setChartLabelPositionAttribute(String chartLabelPositionValue) {
+		ChartLabelPositionAttribute attr = new ChartLabelPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartLabelPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLabelPositionNegativeAttribute</code> , See {@odf.attribute chart:label-position-negative}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartLabelPositionNegativeAttribute() {
+		ChartLabelPositionNegativeAttribute attr = (ChartLabelPositionNegativeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "label-position-negative");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLabelPositionNegativeAttribute</code> , See {@odf.attribute chart:label-position-negative}
+	 *
+	 * @param chartLabelPositionNegativeValue   The type is <code>String</code>
+	 */
+	public void setChartLabelPositionNegativeAttribute(String chartLabelPositionNegativeValue) {
+		ChartLabelPositionNegativeAttribute attr = new ChartLabelPositionNegativeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartLabelPositionNegativeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLinesAttribute</code> , See {@odf.attribute chart:lines}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartLinesAttribute() {
+		ChartLinesAttribute attr = (ChartLinesAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "lines");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLinesAttribute</code> , See {@odf.attribute chart:lines}
+	 *
+	 * @param chartLinesValue   The type is <code>Boolean</code>
+	 */
+	public void setChartLinesAttribute(Boolean chartLinesValue) {
+		ChartLinesAttribute attr = new ChartLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartLinesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLinkDataStyleToSourceAttribute</code> , See {@odf.attribute chart:link-data-style-to-source}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartLinkDataStyleToSourceAttribute() {
+		ChartLinkDataStyleToSourceAttribute attr = (ChartLinkDataStyleToSourceAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "link-data-style-to-source");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLinkDataStyleToSourceAttribute</code> , See {@odf.attribute chart:link-data-style-to-source}
+	 *
+	 * @param chartLinkDataStyleToSourceValue   The type is <code>Boolean</code>
+	 */
+	public void setChartLinkDataStyleToSourceAttribute(Boolean chartLinkDataStyleToSourceValue) {
+		ChartLinkDataStyleToSourceAttribute attr = new ChartLinkDataStyleToSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartLinkDataStyleToSourceValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartLogarithmicAttribute</code> , See {@odf.attribute chart:logarithmic}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartLogarithmicAttribute() {
+		ChartLogarithmicAttribute attr = (ChartLogarithmicAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "logarithmic");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartLogarithmicAttribute</code> , See {@odf.attribute chart:logarithmic}
+	 *
+	 * @param chartLogarithmicValue   The type is <code>Boolean</code>
+	 */
+	public void setChartLogarithmicAttribute(Boolean chartLogarithmicValue) {
+		ChartLogarithmicAttribute attr = new ChartLogarithmicAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartLogarithmicValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartMaximumAttribute</code> , See {@odf.attribute chart:maximum}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartMaximumAttribute() {
+		ChartMaximumAttribute attr = (ChartMaximumAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "maximum");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartMaximumAttribute</code> , See {@odf.attribute chart:maximum}
+	 *
+	 * @param chartMaximumValue   The type is <code>Double</code>
+	 */
+	public void setChartMaximumAttribute(Double chartMaximumValue) {
+		ChartMaximumAttribute attr = new ChartMaximumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartMaximumValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartMeanValueAttribute</code> , See {@odf.attribute chart:mean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartMeanValueAttribute() {
+		ChartMeanValueAttribute attr = (ChartMeanValueAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "mean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartMeanValueAttribute</code> , See {@odf.attribute chart:mean-value}
+	 *
+	 * @param chartMeanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setChartMeanValueAttribute(Boolean chartMeanValueValue) {
+		ChartMeanValueAttribute attr = new ChartMeanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartMeanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartMinimumAttribute</code> , See {@odf.attribute chart:minimum}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartMinimumAttribute() {
+		ChartMinimumAttribute attr = (ChartMinimumAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "minimum");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartMinimumAttribute</code> , See {@odf.attribute chart:minimum}
+	 *
+	 * @param chartMinimumValue   The type is <code>Double</code>
+	 */
+	public void setChartMinimumAttribute(Double chartMinimumValue) {
+		ChartMinimumAttribute attr = new ChartMinimumAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartMinimumValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartOriginAttribute</code> , See {@odf.attribute chart:origin}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getChartOriginAttribute() {
+		ChartOriginAttribute attr = (ChartOriginAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "origin");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartOriginAttribute</code> , See {@odf.attribute chart:origin}
+	 *
+	 * @param chartOriginValue   The type is <code>Double</code>
+	 */
+	public void setChartOriginAttribute(Double chartOriginValue) {
+		ChartOriginAttribute attr = new ChartOriginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(chartOriginValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartOverlapAttribute</code> , See {@odf.attribute chart:overlap}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartOverlapAttribute() {
+		ChartOverlapAttribute attr = (ChartOverlapAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "overlap");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartOverlapAttribute</code> , See {@odf.attribute chart:overlap}
+	 *
+	 * @param chartOverlapValue   The type is <code>Integer</code>
+	 */
+	public void setChartOverlapAttribute(Integer chartOverlapValue) {
+		ChartOverlapAttribute attr = new ChartOverlapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartOverlapValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartPercentageAttribute</code> , See {@odf.attribute chart:percentage}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartPercentageAttribute() {
+		ChartPercentageAttribute attr = (ChartPercentageAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "percentage");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartPercentageAttribute</code> , See {@odf.attribute chart:percentage}
+	 *
+	 * @param chartPercentageValue   The type is <code>Boolean</code>
+	 */
+	public void setChartPercentageAttribute(Boolean chartPercentageValue) {
+		ChartPercentageAttribute attr = new ChartPercentageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartPercentageValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartPieOffsetAttribute</code> , See {@odf.attribute chart:pie-offset}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartPieOffsetAttribute() {
+		ChartPieOffsetAttribute attr = (ChartPieOffsetAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "pie-offset");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartPieOffsetAttribute</code> , See {@odf.attribute chart:pie-offset}
+	 *
+	 * @param chartPieOffsetValue   The type is <code>Integer</code>
+	 */
+	public void setChartPieOffsetAttribute(Integer chartPieOffsetValue) {
+		ChartPieOffsetAttribute attr = new ChartPieOffsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartPieOffsetValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartRegressionTypeAttribute</code> , See {@odf.attribute chart:regression-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartRegressionTypeAttribute() {
+		ChartRegressionTypeAttribute attr = (ChartRegressionTypeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "regression-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartRegressionTypeAttribute</code> , See {@odf.attribute chart:regression-type}
+	 *
+	 * @param chartRegressionTypeValue   The type is <code>String</code>
+	 */
+	public void setChartRegressionTypeAttribute(String chartRegressionTypeValue) {
+		ChartRegressionTypeAttribute attr = new ChartRegressionTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartRegressionTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartReverseDirectionAttribute</code> , See {@odf.attribute chart:reverse-direction}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartReverseDirectionAttribute() {
+		ChartReverseDirectionAttribute attr = (ChartReverseDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "reverse-direction");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartReverseDirectionAttribute</code> , See {@odf.attribute chart:reverse-direction}
+	 *
+	 * @param chartReverseDirectionValue   The type is <code>Boolean</code>
+	 */
+	public void setChartReverseDirectionAttribute(Boolean chartReverseDirectionValue) {
+		ChartReverseDirectionAttribute attr = new ChartReverseDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartReverseDirectionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartRightAngledAxesAttribute</code> , See {@odf.attribute chart:right-angled-axes}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartRightAngledAxesAttribute() {
+		ChartRightAngledAxesAttribute attr = (ChartRightAngledAxesAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "right-angled-axes");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartRightAngledAxesAttribute</code> , See {@odf.attribute chart:right-angled-axes}
+	 *
+	 * @param chartRightAngledAxesValue   The type is <code>Boolean</code>
+	 */
+	public void setChartRightAngledAxesAttribute(Boolean chartRightAngledAxesValue) {
+		ChartRightAngledAxesAttribute attr = new ChartRightAngledAxesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartRightAngledAxesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartScaleTextAttribute</code> , See {@odf.attribute chart:scale-text}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartScaleTextAttribute() {
+		ChartScaleTextAttribute attr = (ChartScaleTextAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "scale-text");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartScaleTextAttribute</code> , See {@odf.attribute chart:scale-text}
+	 *
+	 * @param chartScaleTextValue   The type is <code>Boolean</code>
+	 */
+	public void setChartScaleTextAttribute(Boolean chartScaleTextValue) {
+		ChartScaleTextAttribute attr = new ChartScaleTextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartScaleTextValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSeriesSourceAttribute</code> , See {@odf.attribute chart:series-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartSeriesSourceAttribute() {
+		ChartSeriesSourceAttribute attr = (ChartSeriesSourceAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "series-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSeriesSourceAttribute</code> , See {@odf.attribute chart:series-source}
+	 *
+	 * @param chartSeriesSourceValue   The type is <code>String</code>
+	 */
+	public void setChartSeriesSourceAttribute(String chartSeriesSourceValue) {
+		ChartSeriesSourceAttribute attr = new ChartSeriesSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartSeriesSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSolidTypeAttribute</code> , See {@odf.attribute chart:solid-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartSolidTypeAttribute() {
+		ChartSolidTypeAttribute attr = (ChartSolidTypeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "solid-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSolidTypeAttribute</code> , See {@odf.attribute chart:solid-type}
+	 *
+	 * @param chartSolidTypeValue   The type is <code>String</code>
+	 */
+	public void setChartSolidTypeAttribute(String chartSolidTypeValue) {
+		ChartSolidTypeAttribute attr = new ChartSolidTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartSolidTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSortByXValuesAttribute</code> , See {@odf.attribute chart:sort-by-x-values}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartSortByXValuesAttribute() {
+		ChartSortByXValuesAttribute attr = (ChartSortByXValuesAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "sort-by-x-values");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSortByXValuesAttribute</code> , See {@odf.attribute chart:sort-by-x-values}
+	 *
+	 * @param chartSortByXValuesValue   The type is <code>Boolean</code>
+	 */
+	public void setChartSortByXValuesAttribute(Boolean chartSortByXValuesValue) {
+		ChartSortByXValuesAttribute attr = new ChartSortByXValuesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartSortByXValuesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSplineOrderAttribute</code> , See {@odf.attribute chart:spline-order}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartSplineOrderAttribute() {
+		ChartSplineOrderAttribute attr = (ChartSplineOrderAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "spline-order");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSplineOrderAttribute</code> , See {@odf.attribute chart:spline-order}
+	 *
+	 * @param chartSplineOrderValue   The type is <code>Integer</code>
+	 */
+	public void setChartSplineOrderAttribute(Integer chartSplineOrderValue) {
+		ChartSplineOrderAttribute attr = new ChartSplineOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartSplineOrderValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSplineResolutionAttribute</code> , See {@odf.attribute chart:spline-resolution}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getChartSplineResolutionAttribute() {
+		ChartSplineResolutionAttribute attr = (ChartSplineResolutionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "spline-resolution");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSplineResolutionAttribute</code> , See {@odf.attribute chart:spline-resolution}
+	 *
+	 * @param chartSplineResolutionValue   The type is <code>Integer</code>
+	 */
+	public void setChartSplineResolutionAttribute(Integer chartSplineResolutionValue) {
+		ChartSplineResolutionAttribute attr = new ChartSplineResolutionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(chartSplineResolutionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartStackedAttribute</code> , See {@odf.attribute chart:stacked}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartStackedAttribute() {
+		ChartStackedAttribute attr = (ChartStackedAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "stacked");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartStackedAttribute</code> , See {@odf.attribute chart:stacked}
+	 *
+	 * @param chartStackedValue   The type is <code>Boolean</code>
+	 */
+	public void setChartStackedAttribute(Boolean chartStackedValue) {
+		ChartStackedAttribute attr = new ChartStackedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartStackedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSymbolHeightAttribute</code> , See {@odf.attribute chart:symbol-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartSymbolHeightAttribute() {
+		ChartSymbolHeightAttribute attr = (ChartSymbolHeightAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "symbol-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSymbolHeightAttribute</code> , See {@odf.attribute chart:symbol-height}
+	 *
+	 * @param chartSymbolHeightValue   The type is <code>String</code>
+	 */
+	public void setChartSymbolHeightAttribute(String chartSymbolHeightValue) {
+		ChartSymbolHeightAttribute attr = new ChartSymbolHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartSymbolHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSymbolNameAttribute</code> , See {@odf.attribute chart:symbol-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartSymbolNameAttribute() {
+		ChartSymbolNameAttribute attr = (ChartSymbolNameAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "symbol-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSymbolNameAttribute</code> , See {@odf.attribute chart:symbol-name}
+	 *
+	 * @param chartSymbolNameValue   The type is <code>String</code>
+	 */
+	public void setChartSymbolNameAttribute(String chartSymbolNameValue) {
+		ChartSymbolNameAttribute attr = new ChartSymbolNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartSymbolNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSymbolTypeAttribute</code> , See {@odf.attribute chart:symbol-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartSymbolTypeAttribute() {
+		ChartSymbolTypeAttribute attr = (ChartSymbolTypeAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "symbol-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSymbolTypeAttribute</code> , See {@odf.attribute chart:symbol-type}
+	 *
+	 * @param chartSymbolTypeValue   The type is <code>String</code>
+	 */
+	public void setChartSymbolTypeAttribute(String chartSymbolTypeValue) {
+		ChartSymbolTypeAttribute attr = new ChartSymbolTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartSymbolTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartSymbolWidthAttribute</code> , See {@odf.attribute chart:symbol-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartSymbolWidthAttribute() {
+		ChartSymbolWidthAttribute attr = (ChartSymbolWidthAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "symbol-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartSymbolWidthAttribute</code> , See {@odf.attribute chart:symbol-width}
+	 *
+	 * @param chartSymbolWidthValue   The type is <code>String</code>
+	 */
+	public void setChartSymbolWidthAttribute(String chartSymbolWidthValue) {
+		ChartSymbolWidthAttribute attr = new ChartSymbolWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartSymbolWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTextOverlapAttribute</code> , See {@odf.attribute chart:text-overlap}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartTextOverlapAttribute() {
+		ChartTextOverlapAttribute attr = (ChartTextOverlapAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "text-overlap");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTextOverlapAttribute</code> , See {@odf.attribute chart:text-overlap}
+	 *
+	 * @param chartTextOverlapValue   The type is <code>Boolean</code>
+	 */
+	public void setChartTextOverlapAttribute(Boolean chartTextOverlapValue) {
+		ChartTextOverlapAttribute attr = new ChartTextOverlapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartTextOverlapValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartThreeDimensionalAttribute</code> , See {@odf.attribute chart:three-dimensional}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartThreeDimensionalAttribute() {
+		ChartThreeDimensionalAttribute attr = (ChartThreeDimensionalAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "three-dimensional");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartThreeDimensionalAttribute</code> , See {@odf.attribute chart:three-dimensional}
+	 *
+	 * @param chartThreeDimensionalValue   The type is <code>Boolean</code>
+	 */
+	public void setChartThreeDimensionalAttribute(Boolean chartThreeDimensionalValue) {
+		ChartThreeDimensionalAttribute attr = new ChartThreeDimensionalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartThreeDimensionalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTickMarkPositionAttribute</code> , See {@odf.attribute chart:tick-mark-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartTickMarkPositionAttribute() {
+		ChartTickMarkPositionAttribute attr = (ChartTickMarkPositionAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "tick-mark-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTickMarkPositionAttribute</code> , See {@odf.attribute chart:tick-mark-position}
+	 *
+	 * @param chartTickMarkPositionValue   The type is <code>String</code>
+	 */
+	public void setChartTickMarkPositionAttribute(String chartTickMarkPositionValue) {
+		ChartTickMarkPositionAttribute attr = new ChartTickMarkPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartTickMarkPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTickMarksMajorInnerAttribute</code> , See {@odf.attribute chart:tick-marks-major-inner}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartTickMarksMajorInnerAttribute() {
+		ChartTickMarksMajorInnerAttribute attr = (ChartTickMarksMajorInnerAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "tick-marks-major-inner");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTickMarksMajorInnerAttribute</code> , See {@odf.attribute chart:tick-marks-major-inner}
+	 *
+	 * @param chartTickMarksMajorInnerValue   The type is <code>Boolean</code>
+	 */
+	public void setChartTickMarksMajorInnerAttribute(Boolean chartTickMarksMajorInnerValue) {
+		ChartTickMarksMajorInnerAttribute attr = new ChartTickMarksMajorInnerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartTickMarksMajorInnerValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTickMarksMajorOuterAttribute</code> , See {@odf.attribute chart:tick-marks-major-outer}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartTickMarksMajorOuterAttribute() {
+		ChartTickMarksMajorOuterAttribute attr = (ChartTickMarksMajorOuterAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "tick-marks-major-outer");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTickMarksMajorOuterAttribute</code> , See {@odf.attribute chart:tick-marks-major-outer}
+	 *
+	 * @param chartTickMarksMajorOuterValue   The type is <code>Boolean</code>
+	 */
+	public void setChartTickMarksMajorOuterAttribute(Boolean chartTickMarksMajorOuterValue) {
+		ChartTickMarksMajorOuterAttribute attr = new ChartTickMarksMajorOuterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartTickMarksMajorOuterValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTickMarksMinorInnerAttribute</code> , See {@odf.attribute chart:tick-marks-minor-inner}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartTickMarksMinorInnerAttribute() {
+		ChartTickMarksMinorInnerAttribute attr = (ChartTickMarksMinorInnerAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "tick-marks-minor-inner");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTickMarksMinorInnerAttribute</code> , See {@odf.attribute chart:tick-marks-minor-inner}
+	 *
+	 * @param chartTickMarksMinorInnerValue   The type is <code>Boolean</code>
+	 */
+	public void setChartTickMarksMinorInnerAttribute(Boolean chartTickMarksMinorInnerValue) {
+		ChartTickMarksMinorInnerAttribute attr = new ChartTickMarksMinorInnerAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartTickMarksMinorInnerValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTickMarksMinorOuterAttribute</code> , See {@odf.attribute chart:tick-marks-minor-outer}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartTickMarksMinorOuterAttribute() {
+		ChartTickMarksMinorOuterAttribute attr = (ChartTickMarksMinorOuterAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "tick-marks-minor-outer");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTickMarksMinorOuterAttribute</code> , See {@odf.attribute chart:tick-marks-minor-outer}
+	 *
+	 * @param chartTickMarksMinorOuterValue   The type is <code>Boolean</code>
+	 */
+	public void setChartTickMarksMinorOuterAttribute(Boolean chartTickMarksMinorOuterValue) {
+		ChartTickMarksMinorOuterAttribute attr = new ChartTickMarksMinorOuterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartTickMarksMinorOuterValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartTreatEmptyCellsAttribute</code> , See {@odf.attribute chart:treat-empty-cells}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getChartTreatEmptyCellsAttribute() {
+		ChartTreatEmptyCellsAttribute attr = (ChartTreatEmptyCellsAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "treat-empty-cells");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartTreatEmptyCellsAttribute</code> , See {@odf.attribute chart:treat-empty-cells}
+	 *
+	 * @param chartTreatEmptyCellsValue   The type is <code>String</code>
+	 */
+	public void setChartTreatEmptyCellsAttribute(String chartTreatEmptyCellsValue) {
+		ChartTreatEmptyCellsAttribute attr = new ChartTreatEmptyCellsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(chartTreatEmptyCellsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartVerticalAttribute</code> , See {@odf.attribute chart:vertical}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartVerticalAttribute() {
+		ChartVerticalAttribute attr = (ChartVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "vertical");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartVerticalAttribute</code> , See {@odf.attribute chart:vertical}
+	 *
+	 * @param chartVerticalValue   The type is <code>Boolean</code>
+	 */
+	public void setChartVerticalAttribute(Boolean chartVerticalValue) {
+		ChartVerticalAttribute attr = new ChartVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartVerticalValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ChartVisibleAttribute</code> , See {@odf.attribute chart:visible}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getChartVisibleAttribute() {
+		ChartVisibleAttribute attr = (ChartVisibleAttribute) getOdfAttribute(OdfDocumentNamespace.CHART, "visible");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ChartVisibleAttribute</code> , See {@odf.attribute chart:visible}
+	 *
+	 * @param chartVisibleValue   The type is <code>Boolean</code>
+	 */
+	public void setChartVisibleAttribute(Boolean chartVisibleValue) {
+		ChartVisibleAttribute attr = new ChartVisibleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(chartVisibleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDirectionAttribute</code> , See {@odf.attribute style:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDirectionAttribute() {
+		StyleDirectionAttribute attr = (StyleDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDirectionAttribute</code> , See {@odf.attribute style:direction}
+	 *
+	 * @param styleDirectionValue   The type is <code>String</code>
+	 */
+	public void setStyleDirectionAttribute(String styleDirectionValue) {
+		StyleDirectionAttribute attr = new StyleDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRotationAngleAttribute</code> , See {@odf.attribute style:rotation-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRotationAngleAttribute() {
+		StyleRotationAngleAttribute attr = (StyleRotationAngleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rotation-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRotationAngleAttribute</code> , See {@odf.attribute style:rotation-angle}
+	 *
+	 * @param styleRotationAngleValue   The type is <code>String</code>
+	 */
+	public void setStyleRotationAngleAttribute(String styleRotationAngleValue) {
+		StyleRotationAngleAttribute attr = new StyleRotationAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRotationAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLineBreakAttribute</code> , See {@odf.attribute text:line-break}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextLineBreakAttribute() {
+		TextLineBreakAttribute attr = (TextLineBreakAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "line-break");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLineBreakAttribute</code> , See {@odf.attribute text:line-break}
+	 *
+	 * @param textLineBreakValue   The type is <code>Boolean</code>
+	 */
+	public void setTextLineBreakAttribute(Boolean textLineBreakValue) {
+		TextLineBreakAttribute attr = new TextLineBreakAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textLineBreakValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element chart:label-separator}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element chart:label-separator}
+	 */
+	public ChartLabelSeparatorElement newChartLabelSeparatorElement() {
+		ChartLabelSeparatorElement chartLabelSeparator = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartLabelSeparatorElement.class);
+		this.appendChild(chartLabelSeparator);
+		return chartLabelSeparator;
+	}
+
+	/**
+	 * Create child element {@odf.element chart:symbol-image}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element chart:symbol-image}
+	 */
+	 public ChartSymbolImageElement newChartSymbolImageElement(String xlinkHrefValue) {
+		ChartSymbolImageElement chartSymbolImage = ((OdfFileDom) this.ownerDocument).newOdfElement(ChartSymbolImageElement.class);
+		chartSymbolImage.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(chartSymbolImage);
+		return chartSymbolImage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnElement.java
new file mode 100644
index 0000000..ce80b7a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnElement.java
@@ -0,0 +1,198 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoEndIndentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoSpaceAfterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoSpaceBeforeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoStartIndentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:column}.
+ *
+ */
+public class StyleColumnElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "column");
+
+	/**
+	 * Create the instance of <code>StyleColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoEndIndentAttribute</code> , See {@odf.attribute fo:end-indent}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoEndIndentAttribute() {
+		FoEndIndentAttribute attr = (FoEndIndentAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "end-indent");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FoEndIndentAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoEndIndentAttribute</code> , See {@odf.attribute fo:end-indent}
+	 *
+	 * @param foEndIndentValue   The type is <code>String</code>
+	 */
+	public void setFoEndIndentAttribute(String foEndIndentValue) {
+		FoEndIndentAttribute attr = new FoEndIndentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foEndIndentValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoSpaceAfterAttribute</code> , See {@odf.attribute fo:space-after}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoSpaceAfterAttribute() {
+		FoSpaceAfterAttribute attr = (FoSpaceAfterAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "space-after");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FoSpaceAfterAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoSpaceAfterAttribute</code> , See {@odf.attribute fo:space-after}
+	 *
+	 * @param foSpaceAfterValue   The type is <code>String</code>
+	 */
+	public void setFoSpaceAfterAttribute(String foSpaceAfterValue) {
+		FoSpaceAfterAttribute attr = new FoSpaceAfterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foSpaceAfterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoSpaceBeforeAttribute</code> , See {@odf.attribute fo:space-before}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoSpaceBeforeAttribute() {
+		FoSpaceBeforeAttribute attr = (FoSpaceBeforeAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "space-before");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FoSpaceBeforeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoSpaceBeforeAttribute</code> , See {@odf.attribute fo:space-before}
+	 *
+	 * @param foSpaceBeforeValue   The type is <code>String</code>
+	 */
+	public void setFoSpaceBeforeAttribute(String foSpaceBeforeValue) {
+		FoSpaceBeforeAttribute attr = new FoSpaceBeforeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foSpaceBeforeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoStartIndentAttribute</code> , See {@odf.attribute fo:start-indent}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoStartIndentAttribute() {
+		FoStartIndentAttribute attr = (FoStartIndentAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "start-indent");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return FoStartIndentAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoStartIndentAttribute</code> , See {@odf.attribute fo:start-indent}
+	 *
+	 * @param foStartIndentValue   The type is <code>String</code>
+	 */
+	public void setFoStartIndentAttribute(String foStartIndentValue) {
+		FoStartIndentAttribute attr = new FoStartIndentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foStartIndentValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelWidthAttribute() {
+		StyleRelWidthAttribute attr = (StyleRelWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @param styleRelWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleRelWidthAttribute(String styleRelWidthValue) {
+		StyleRelWidthAttribute attr = new StyleRelWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnSepElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnSepElement.java
new file mode 100644
index 0000000..eeb1f8a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnSepElement.java
@@ -0,0 +1,198 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:column-sep}.
+ *
+ */
+public class StyleColumnSepElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "column-sep");
+
+	/**
+	 * Create the instance of <code>StyleColumnSepElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleColumnSepElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:column-sep}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleColorAttribute</code> , See {@odf.attribute style:color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleColorAttribute() {
+		StyleColorAttribute attr = (StyleColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleColorAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleColorAttribute</code> , See {@odf.attribute style:color}
+	 *
+	 * @param styleColorValue   The type is <code>String</code>
+	 */
+	public void setStyleColorAttribute(String styleColorValue) {
+		StyleColorAttribute attr = new StyleColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleHeightAttribute</code> , See {@odf.attribute style:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleHeightAttribute() {
+		StyleHeightAttribute attr = (StyleHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleHeightAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleHeightAttribute</code> , See {@odf.attribute style:height}
+	 *
+	 * @param styleHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleHeightAttribute(String styleHeightValue) {
+		StyleHeightAttribute attr = new StyleHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleStyleAttribute</code> , See {@odf.attribute style:style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleStyleAttribute() {
+		StyleStyleAttribute attr = (StyleStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleStyleAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleStyleAttribute</code> , See {@odf.attribute style:style}
+	 *
+	 * @param styleStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleStyleAttribute(String styleStyleValue) {
+		StyleStyleAttribute attr = new StyleStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalAlignAttribute</code> , See {@odf.attribute style:vertical-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalAlignAttribute() {
+		StyleVerticalAlignAttribute attr = (StyleVerticalAlignAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleVerticalAlignAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalAlignAttribute</code> , See {@odf.attribute style:vertical-align}
+	 *
+	 * @param styleVerticalAlignValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalAlignAttribute(String styleVerticalAlignValue) {
+		StyleVerticalAlignAttribute attr = new StyleVerticalAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWidthAttribute</code> , See {@odf.attribute style:width}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWidthAttribute() {
+		StyleWidthAttribute attr = (StyleWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWidthAttribute</code> , See {@odf.attribute style:width}
+	 *
+	 * @param styleWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleWidthAttribute(String styleWidthValue) {
+		StyleWidthAttribute attr = new StyleWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnsElement.java
new file mode 100644
index 0000000..50f882e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleColumnsElement.java
@@ -0,0 +1,153 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoColumnCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoColumnGapAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:columns}.
+ *
+ */
+public class StyleColumnsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "columns");
+
+	/**
+	 * Create the instance of <code>StyleColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoColumnCountAttribute</code> , See {@odf.attribute fo:column-count}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFoColumnCountAttribute() {
+		FoColumnCountAttribute attr = (FoColumnCountAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "column-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoColumnCountAttribute</code> , See {@odf.attribute fo:column-count}
+	 *
+	 * @param foColumnCountValue   The type is <code>Integer</code>
+	 */
+	public void setFoColumnCountAttribute(Integer foColumnCountValue) {
+		FoColumnCountAttribute attr = new FoColumnCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(foColumnCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoColumnGapAttribute</code> , See {@odf.attribute fo:column-gap}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoColumnGapAttribute() {
+		FoColumnGapAttribute attr = (FoColumnGapAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "column-gap");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoColumnGapAttribute</code> , See {@odf.attribute fo:column-gap}
+	 *
+	 * @param foColumnGapValue   The type is <code>String</code>
+	 */
+	public void setFoColumnGapAttribute(String foColumnGapValue) {
+		FoColumnGapAttribute attr = new FoColumnGapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foColumnGapValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:column}.
+	 *
+	 * @param styleRelWidthValue  the <code>String</code> value of <code>StyleRelWidthAttribute</code>, see {@odf.attribute  style:rel-width} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:column}
+	 */
+	 public StyleColumnElement newStyleColumnElement(String styleRelWidthValue) {
+		StyleColumnElement styleColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleColumnElement.class);
+		styleColumn.setStyleRelWidthAttribute(styleRelWidthValue);
+		this.appendChild(styleColumn);
+		return styleColumn;
+	}
+
+	/**
+	 * Create child element {@odf.element style:column-sep}.
+	 *
+	 * @param styleWidthValue  the <code>String</code> value of <code>StyleWidthAttribute</code>, see {@odf.attribute  style:width} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:column-sep}
+	 */
+	 public StyleColumnSepElement newStyleColumnSepElement(String styleWidthValue) {
+		StyleColumnSepElement styleColumnSep = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleColumnSepElement.class);
+		styleColumnSep.setStyleWidthAttribute(styleWidthValue);
+		this.appendChild(styleColumnSep);
+		return styleColumnSep;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDefaultPageLayoutElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDefaultPageLayoutElement.java
new file mode 100644
index 0000000..29436d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDefaultPageLayoutElement.java
@@ -0,0 +1,112 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:default-page-layout}.
+ *
+ */
+public class StyleDefaultPageLayoutElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "default-page-layout");
+
+	/**
+	 * Create the instance of <code>StyleDefaultPageLayoutElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleDefaultPageLayoutElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:default-page-layout}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element style:footer-style}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:footer-style}
+	 */
+	public StyleFooterStyleElement newStyleFooterStyleElement() {
+		StyleFooterStyleElement styleFooterStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleFooterStyleElement.class);
+		this.appendChild(styleFooterStyle);
+		return styleFooterStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:header-style}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:header-style}
+	 */
+	public StyleHeaderStyleElement newStyleHeaderStyleElement() {
+		StyleHeaderStyleElement styleHeaderStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHeaderStyleElement.class);
+		this.appendChild(styleHeaderStyle);
+		return styleHeaderStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:page-layout-properties}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:page-layout-properties}
+	 */
+	 public StylePageLayoutPropertiesElement newStylePageLayoutPropertiesElement(String styleNumFormatValue) {
+		StylePageLayoutPropertiesElement stylePageLayoutProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StylePageLayoutPropertiesElement.class);
+		stylePageLayoutProperties.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(stylePageLayoutProperties);
+		return stylePageLayoutProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDefaultStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDefaultStyleElement.java
new file mode 100644
index 0000000..75a26b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDefaultStyleElement.java
@@ -0,0 +1,224 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFamilyAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:default-style}.
+ *
+ */
+public class StyleDefaultStyleElement extends OdfStyleBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "default-style");
+
+	/**
+	 * Create the instance of <code>StyleDefaultStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleDefaultStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:default-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFamilyAttribute</code> , See {@odf.attribute style:family}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFamilyAttribute() {
+		StyleFamilyAttribute attr = (StyleFamilyAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "family");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFamilyAttribute</code> , See {@odf.attribute style:family}
+	 *
+	 * @param styleFamilyValue   The type is <code>String</code>
+	 */
+	public void setStyleFamilyAttribute(String styleFamilyValue) {
+		StyleFamilyAttribute attr = new StyleFamilyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFamilyValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:chart-properties}.
+	 *
+	 * @param chartSymbolTypeValue  the <code>String</code> value of <code>ChartSymbolTypeAttribute</code>, see {@odf.attribute  chart:symbol-type} at specification
+	 * @return the element {@odf.element style:chart-properties}
+	 */
+	 public StyleChartPropertiesElement newStyleChartPropertiesElement(String chartSymbolTypeValue) {
+		StyleChartPropertiesElement styleChartProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleChartPropertiesElement.class);
+		styleChartProperties.setChartSymbolTypeAttribute(chartSymbolTypeValue);
+		this.appendChild(styleChartProperties);
+		return styleChartProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:drawing-page-properties}.
+	 *
+	 * @return the element {@odf.element style:drawing-page-properties}
+	 */
+	public StyleDrawingPagePropertiesElement newStyleDrawingPagePropertiesElement() {
+		StyleDrawingPagePropertiesElement styleDrawingPageProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleDrawingPagePropertiesElement.class);
+		this.appendChild(styleDrawingPageProperties);
+		return styleDrawingPageProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:graphic-properties}.
+	 *
+	 * @return the element {@odf.element style:graphic-properties}
+	 */
+	public StyleGraphicPropertiesElement newStyleGraphicPropertiesElement() {
+		StyleGraphicPropertiesElement styleGraphicProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleGraphicPropertiesElement.class);
+		this.appendChild(styleGraphicProperties);
+		return styleGraphicProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:paragraph-properties}.
+	 *
+	 * @return the element {@odf.element style:paragraph-properties}
+	 */
+	public StyleParagraphPropertiesElement newStyleParagraphPropertiesElement() {
+		StyleParagraphPropertiesElement styleParagraphProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleParagraphPropertiesElement.class);
+		this.appendChild(styleParagraphProperties);
+		return styleParagraphProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:ruby-properties}.
+	 *
+	 * @return the element {@odf.element style:ruby-properties}
+	 */
+	public StyleRubyPropertiesElement newStyleRubyPropertiesElement() {
+		StyleRubyPropertiesElement styleRubyProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRubyPropertiesElement.class);
+		this.appendChild(styleRubyProperties);
+		return styleRubyProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:section-properties}.
+	 *
+	 * @return the element {@odf.element style:section-properties}
+	 */
+	public StyleSectionPropertiesElement newStyleSectionPropertiesElement() {
+		StyleSectionPropertiesElement styleSectionProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleSectionPropertiesElement.class);
+		this.appendChild(styleSectionProperties);
+		return styleSectionProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-cell-properties}.
+	 *
+	 * @return the element {@odf.element style:table-cell-properties}
+	 */
+	public StyleTableCellPropertiesElement newStyleTableCellPropertiesElement() {
+		StyleTableCellPropertiesElement styleTableCellProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTableCellPropertiesElement.class);
+		this.appendChild(styleTableCellProperties);
+		return styleTableCellProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-column-properties}.
+	 *
+	 * @return the element {@odf.element style:table-column-properties}
+	 */
+	public StyleTableColumnPropertiesElement newStyleTableColumnPropertiesElement() {
+		StyleTableColumnPropertiesElement styleTableColumnProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTableColumnPropertiesElement.class);
+		this.appendChild(styleTableColumnProperties);
+		return styleTableColumnProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-properties}.
+	 *
+	 * @return the element {@odf.element style:table-properties}
+	 */
+	public StyleTablePropertiesElement newStyleTablePropertiesElement() {
+		StyleTablePropertiesElement styleTableProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTablePropertiesElement.class);
+		this.appendChild(styleTableProperties);
+		return styleTableProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-row-properties}.
+	 *
+	 * @return the element {@odf.element style:table-row-properties}
+	 */
+	public StyleTableRowPropertiesElement newStyleTableRowPropertiesElement() {
+		StyleTableRowPropertiesElement styleTableRowProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTableRowPropertiesElement.class);
+		this.appendChild(styleTableRowProperties);
+		return styleTableRowProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDrawingPagePropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDrawingPagePropertiesElement.java
new file mode 100644
index 0000000..99e39cf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDrawingPagePropertiesElement.java
@@ -0,0 +1,1044 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationSoundElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawBackgroundSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillGradientNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillHatchNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillHatchSolidAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageRefPointAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageRefPointXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageRefPointYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGradientStepCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawOpacityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawOpacityNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawSecondaryFillColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTileRepeatOffsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationBackgroundObjectsVisibleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationBackgroundVisibleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDisplayDateTimeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDisplayFooterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDisplayHeaderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDisplayPageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationDurationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationTransitionSpeedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationTransitionStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationTransitionTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationVisibilityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilFadeColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilSubtypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.smil.SmilTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFillRuleAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:drawing-page-properties}.
+ *
+ */
+public class StyleDrawingPagePropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "drawing-page-properties");
+
+	/**
+	 * Create the instance of <code>StyleDrawingPagePropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleDrawingPagePropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:drawing-page-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "background-size"));
+
+	public final static OdfStyleProperty Fill =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill"));
+
+	public final static OdfStyleProperty FillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-color"));
+
+	public final static OdfStyleProperty FillGradientName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-gradient-name"));
+
+	public final static OdfStyleProperty FillHatchName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-name"));
+
+	public final static OdfStyleProperty FillHatchSolid =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-solid"));
+
+	public final static OdfStyleProperty FillImageHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-height"));
+
+	public final static OdfStyleProperty FillImageName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-name"));
+
+	public final static OdfStyleProperty FillImageRefPoint =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point"));
+
+	public final static OdfStyleProperty FillImageRefPointX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x"));
+
+	public final static OdfStyleProperty FillImageRefPointY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y"));
+
+	public final static OdfStyleProperty FillImageWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-width"));
+
+	public final static OdfStyleProperty GradientStepCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "gradient-step-count"));
+
+	public final static OdfStyleProperty Opacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity"));
+
+	public final static OdfStyleProperty OpacityName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity-name"));
+
+	public final static OdfStyleProperty SecondaryFillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "secondary-fill-color"));
+
+	public final static OdfStyleProperty TileRepeatOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "tile-repeat-offset"));
+
+	public final static OdfStyleProperty BackgroundObjectsVisible =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "background-objects-visible"));
+
+	public final static OdfStyleProperty BackgroundVisible =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "background-visible"));
+
+	public final static OdfStyleProperty DisplayDateTime =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-date-time"));
+
+	public final static OdfStyleProperty DisplayFooter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-footer"));
+
+	public final static OdfStyleProperty DisplayHeader =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-header"));
+
+	public final static OdfStyleProperty DisplayPageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-page-number"));
+
+	public final static OdfStyleProperty Duration =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "duration"));
+
+	public final static OdfStyleProperty TransitionSpeed =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-speed"));
+
+	public final static OdfStyleProperty TransitionStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-style"));
+
+	public final static OdfStyleProperty TransitionType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-type"));
+
+	public final static OdfStyleProperty Visibility =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "visibility"));
+
+	public final static OdfStyleProperty Direction =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "direction"));
+
+	public final static OdfStyleProperty FadeColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "fadeColor"));
+
+	public final static OdfStyleProperty Subtype =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "subtype"));
+
+	public final static OdfStyleProperty Type =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "type"));
+
+	public final static OdfStyleProperty Repeat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "repeat"));
+
+	public final static OdfStyleProperty FillRule =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SVG, "fill-rule"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawBackgroundSizeAttribute</code> , See {@odf.attribute draw:background-size}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawBackgroundSizeAttribute() {
+		DrawBackgroundSizeAttribute attr = (DrawBackgroundSizeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "background-size");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawBackgroundSizeAttribute</code> , See {@odf.attribute draw:background-size}
+	 *
+	 * @param drawBackgroundSizeValue   The type is <code>String</code>
+	 */
+	public void setDrawBackgroundSizeAttribute(String drawBackgroundSizeValue) {
+		DrawBackgroundSizeAttribute attr = new DrawBackgroundSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawBackgroundSizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillAttribute</code> , See {@odf.attribute draw:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillAttribute() {
+		DrawFillAttribute attr = (DrawFillAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillAttribute</code> , See {@odf.attribute draw:fill}
+	 *
+	 * @param drawFillValue   The type is <code>String</code>
+	 */
+	public void setDrawFillAttribute(String drawFillValue) {
+		DrawFillAttribute attr = new DrawFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillColorAttribute</code> , See {@odf.attribute draw:fill-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillColorAttribute() {
+		DrawFillColorAttribute attr = (DrawFillColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillColorAttribute</code> , See {@odf.attribute draw:fill-color}
+	 *
+	 * @param drawFillColorValue   The type is <code>String</code>
+	 */
+	public void setDrawFillColorAttribute(String drawFillColorValue) {
+		DrawFillColorAttribute attr = new DrawFillColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillGradientNameAttribute</code> , See {@odf.attribute draw:fill-gradient-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillGradientNameAttribute() {
+		DrawFillGradientNameAttribute attr = (DrawFillGradientNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-gradient-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillGradientNameAttribute</code> , See {@odf.attribute draw:fill-gradient-name}
+	 *
+	 * @param drawFillGradientNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFillGradientNameAttribute(String drawFillGradientNameValue) {
+		DrawFillGradientNameAttribute attr = new DrawFillGradientNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillGradientNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillHatchNameAttribute</code> , See {@odf.attribute draw:fill-hatch-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillHatchNameAttribute() {
+		DrawFillHatchNameAttribute attr = (DrawFillHatchNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-hatch-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillHatchNameAttribute</code> , See {@odf.attribute draw:fill-hatch-name}
+	 *
+	 * @param drawFillHatchNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFillHatchNameAttribute(String drawFillHatchNameValue) {
+		DrawFillHatchNameAttribute attr = new DrawFillHatchNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillHatchNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillHatchSolidAttribute</code> , See {@odf.attribute draw:fill-hatch-solid}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawFillHatchSolidAttribute() {
+		DrawFillHatchSolidAttribute attr = (DrawFillHatchSolidAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-hatch-solid");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillHatchSolidAttribute</code> , See {@odf.attribute draw:fill-hatch-solid}
+	 *
+	 * @param drawFillHatchSolidValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawFillHatchSolidAttribute(Boolean drawFillHatchSolidValue) {
+		DrawFillHatchSolidAttribute attr = new DrawFillHatchSolidAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawFillHatchSolidValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageHeightAttribute</code> , See {@odf.attribute draw:fill-image-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageHeightAttribute() {
+		DrawFillImageHeightAttribute attr = (DrawFillImageHeightAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageHeightAttribute</code> , See {@odf.attribute draw:fill-image-height}
+	 *
+	 * @param drawFillImageHeightValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageHeightAttribute(String drawFillImageHeightValue) {
+		DrawFillImageHeightAttribute attr = new DrawFillImageHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageNameAttribute</code> , See {@odf.attribute draw:fill-image-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageNameAttribute() {
+		DrawFillImageNameAttribute attr = (DrawFillImageNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageNameAttribute</code> , See {@odf.attribute draw:fill-image-name}
+	 *
+	 * @param drawFillImageNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageNameAttribute(String drawFillImageNameValue) {
+		DrawFillImageNameAttribute attr = new DrawFillImageNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageRefPointAttribute</code> , See {@odf.attribute draw:fill-image-ref-point}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageRefPointAttribute() {
+		DrawFillImageRefPointAttribute attr = (DrawFillImageRefPointAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-ref-point");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageRefPointAttribute</code> , See {@odf.attribute draw:fill-image-ref-point}
+	 *
+	 * @param drawFillImageRefPointValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageRefPointAttribute(String drawFillImageRefPointValue) {
+		DrawFillImageRefPointAttribute attr = new DrawFillImageRefPointAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageRefPointValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageRefPointXAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageRefPointXAttribute() {
+		DrawFillImageRefPointXAttribute attr = (DrawFillImageRefPointXAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageRefPointXAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-x}
+	 *
+	 * @param drawFillImageRefPointXValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageRefPointXAttribute(String drawFillImageRefPointXValue) {
+		DrawFillImageRefPointXAttribute attr = new DrawFillImageRefPointXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageRefPointXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageRefPointYAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageRefPointYAttribute() {
+		DrawFillImageRefPointYAttribute attr = (DrawFillImageRefPointYAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageRefPointYAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-y}
+	 *
+	 * @param drawFillImageRefPointYValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageRefPointYAttribute(String drawFillImageRefPointYValue) {
+		DrawFillImageRefPointYAttribute attr = new DrawFillImageRefPointYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageRefPointYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageWidthAttribute</code> , See {@odf.attribute draw:fill-image-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageWidthAttribute() {
+		DrawFillImageWidthAttribute attr = (DrawFillImageWidthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageWidthAttribute</code> , See {@odf.attribute draw:fill-image-width}
+	 *
+	 * @param drawFillImageWidthValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageWidthAttribute(String drawFillImageWidthValue) {
+		DrawFillImageWidthAttribute attr = new DrawFillImageWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGradientStepCountAttribute</code> , See {@odf.attribute draw:gradient-step-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawGradientStepCountAttribute() {
+		DrawGradientStepCountAttribute attr = (DrawGradientStepCountAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "gradient-step-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGradientStepCountAttribute</code> , See {@odf.attribute draw:gradient-step-count}
+	 *
+	 * @param drawGradientStepCountValue   The type is <code>Integer</code>
+	 */
+	public void setDrawGradientStepCountAttribute(Integer drawGradientStepCountValue) {
+		DrawGradientStepCountAttribute attr = new DrawGradientStepCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawGradientStepCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawOpacityAttribute</code> , See {@odf.attribute draw:opacity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawOpacityAttribute() {
+		DrawOpacityAttribute attr = (DrawOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "opacity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawOpacityAttribute</code> , See {@odf.attribute draw:opacity}
+	 *
+	 * @param drawOpacityValue   The type is <code>String</code>
+	 */
+	public void setDrawOpacityAttribute(String drawOpacityValue) {
+		DrawOpacityAttribute attr = new DrawOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawOpacityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawOpacityNameAttribute</code> , See {@odf.attribute draw:opacity-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawOpacityNameAttribute() {
+		DrawOpacityNameAttribute attr = (DrawOpacityNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "opacity-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawOpacityNameAttribute</code> , See {@odf.attribute draw:opacity-name}
+	 *
+	 * @param drawOpacityNameValue   The type is <code>String</code>
+	 */
+	public void setDrawOpacityNameAttribute(String drawOpacityNameValue) {
+		DrawOpacityNameAttribute attr = new DrawOpacityNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawOpacityNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawSecondaryFillColorAttribute</code> , See {@odf.attribute draw:secondary-fill-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawSecondaryFillColorAttribute() {
+		DrawSecondaryFillColorAttribute attr = (DrawSecondaryFillColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "secondary-fill-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawSecondaryFillColorAttribute</code> , See {@odf.attribute draw:secondary-fill-color}
+	 *
+	 * @param drawSecondaryFillColorValue   The type is <code>String</code>
+	 */
+	public void setDrawSecondaryFillColorAttribute(String drawSecondaryFillColorValue) {
+		DrawSecondaryFillColorAttribute attr = new DrawSecondaryFillColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawSecondaryFillColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTileRepeatOffsetAttribute</code> , See {@odf.attribute draw:tile-repeat-offset}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTileRepeatOffsetAttribute() {
+		DrawTileRepeatOffsetAttribute attr = (DrawTileRepeatOffsetAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "tile-repeat-offset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTileRepeatOffsetAttribute</code> , See {@odf.attribute draw:tile-repeat-offset}
+	 *
+	 * @param drawTileRepeatOffsetValue   The type is <code>String</code>
+	 */
+	public void setDrawTileRepeatOffsetAttribute(String drawTileRepeatOffsetValue) {
+		DrawTileRepeatOffsetAttribute attr = new DrawTileRepeatOffsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTileRepeatOffsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationBackgroundObjectsVisibleAttribute</code> , See {@odf.attribute presentation:background-objects-visible}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationBackgroundObjectsVisibleAttribute() {
+		PresentationBackgroundObjectsVisibleAttribute attr = (PresentationBackgroundObjectsVisibleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "background-objects-visible");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationBackgroundObjectsVisibleAttribute</code> , See {@odf.attribute presentation:background-objects-visible}
+	 *
+	 * @param presentationBackgroundObjectsVisibleValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationBackgroundObjectsVisibleAttribute(Boolean presentationBackgroundObjectsVisibleValue) {
+		PresentationBackgroundObjectsVisibleAttribute attr = new PresentationBackgroundObjectsVisibleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationBackgroundObjectsVisibleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationBackgroundVisibleAttribute</code> , See {@odf.attribute presentation:background-visible}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationBackgroundVisibleAttribute() {
+		PresentationBackgroundVisibleAttribute attr = (PresentationBackgroundVisibleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "background-visible");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationBackgroundVisibleAttribute</code> , See {@odf.attribute presentation:background-visible}
+	 *
+	 * @param presentationBackgroundVisibleValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationBackgroundVisibleAttribute(Boolean presentationBackgroundVisibleValue) {
+		PresentationBackgroundVisibleAttribute attr = new PresentationBackgroundVisibleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationBackgroundVisibleValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDisplayDateTimeAttribute</code> , See {@odf.attribute presentation:display-date-time}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationDisplayDateTimeAttribute() {
+		PresentationDisplayDateTimeAttribute attr = (PresentationDisplayDateTimeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "display-date-time");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDisplayDateTimeAttribute</code> , See {@odf.attribute presentation:display-date-time}
+	 *
+	 * @param presentationDisplayDateTimeValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationDisplayDateTimeAttribute(Boolean presentationDisplayDateTimeValue) {
+		PresentationDisplayDateTimeAttribute attr = new PresentationDisplayDateTimeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationDisplayDateTimeValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDisplayFooterAttribute</code> , See {@odf.attribute presentation:display-footer}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationDisplayFooterAttribute() {
+		PresentationDisplayFooterAttribute attr = (PresentationDisplayFooterAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "display-footer");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDisplayFooterAttribute</code> , See {@odf.attribute presentation:display-footer}
+	 *
+	 * @param presentationDisplayFooterValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationDisplayFooterAttribute(Boolean presentationDisplayFooterValue) {
+		PresentationDisplayFooterAttribute attr = new PresentationDisplayFooterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationDisplayFooterValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDisplayHeaderAttribute</code> , See {@odf.attribute presentation:display-header}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationDisplayHeaderAttribute() {
+		PresentationDisplayHeaderAttribute attr = (PresentationDisplayHeaderAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "display-header");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDisplayHeaderAttribute</code> , See {@odf.attribute presentation:display-header}
+	 *
+	 * @param presentationDisplayHeaderValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationDisplayHeaderAttribute(Boolean presentationDisplayHeaderValue) {
+		PresentationDisplayHeaderAttribute attr = new PresentationDisplayHeaderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationDisplayHeaderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDisplayPageNumberAttribute</code> , See {@odf.attribute presentation:display-page-number}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getPresentationDisplayPageNumberAttribute() {
+		PresentationDisplayPageNumberAttribute attr = (PresentationDisplayPageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "display-page-number");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDisplayPageNumberAttribute</code> , See {@odf.attribute presentation:display-page-number}
+	 *
+	 * @param presentationDisplayPageNumberValue   The type is <code>Boolean</code>
+	 */
+	public void setPresentationDisplayPageNumberAttribute(Boolean presentationDisplayPageNumberValue) {
+		PresentationDisplayPageNumberAttribute attr = new PresentationDisplayPageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(presentationDisplayPageNumberValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationDurationAttribute</code> , See {@odf.attribute presentation:duration}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationDurationAttribute() {
+		PresentationDurationAttribute attr = (PresentationDurationAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "duration");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationDurationAttribute</code> , See {@odf.attribute presentation:duration}
+	 *
+	 * @param presentationDurationValue   The type is <code>String</code>
+	 */
+	public void setPresentationDurationAttribute(String presentationDurationValue) {
+		PresentationDurationAttribute attr = new PresentationDurationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationDurationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationTransitionSpeedAttribute</code> , See {@odf.attribute presentation:transition-speed}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationTransitionSpeedAttribute() {
+		PresentationTransitionSpeedAttribute attr = (PresentationTransitionSpeedAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "transition-speed");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationTransitionSpeedAttribute</code> , See {@odf.attribute presentation:transition-speed}
+	 *
+	 * @param presentationTransitionSpeedValue   The type is <code>String</code>
+	 */
+	public void setPresentationTransitionSpeedAttribute(String presentationTransitionSpeedValue) {
+		PresentationTransitionSpeedAttribute attr = new PresentationTransitionSpeedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationTransitionSpeedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationTransitionStyleAttribute</code> , See {@odf.attribute presentation:transition-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationTransitionStyleAttribute() {
+		PresentationTransitionStyleAttribute attr = (PresentationTransitionStyleAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "transition-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationTransitionStyleAttribute</code> , See {@odf.attribute presentation:transition-style}
+	 *
+	 * @param presentationTransitionStyleValue   The type is <code>String</code>
+	 */
+	public void setPresentationTransitionStyleAttribute(String presentationTransitionStyleValue) {
+		PresentationTransitionStyleAttribute attr = new PresentationTransitionStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationTransitionStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationTransitionTypeAttribute</code> , See {@odf.attribute presentation:transition-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationTransitionTypeAttribute() {
+		PresentationTransitionTypeAttribute attr = (PresentationTransitionTypeAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "transition-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationTransitionTypeAttribute</code> , See {@odf.attribute presentation:transition-type}
+	 *
+	 * @param presentationTransitionTypeValue   The type is <code>String</code>
+	 */
+	public void setPresentationTransitionTypeAttribute(String presentationTransitionTypeValue) {
+		PresentationTransitionTypeAttribute attr = new PresentationTransitionTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationTransitionTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationVisibilityAttribute</code> , See {@odf.attribute presentation:visibility}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationVisibilityAttribute() {
+		PresentationVisibilityAttribute attr = (PresentationVisibilityAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "visibility");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationVisibilityAttribute</code> , See {@odf.attribute presentation:visibility}
+	 *
+	 * @param presentationVisibilityValue   The type is <code>String</code>
+	 */
+	public void setPresentationVisibilityAttribute(String presentationVisibilityValue) {
+		PresentationVisibilityAttribute attr = new PresentationVisibilityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationVisibilityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilDirectionAttribute</code> , See {@odf.attribute smil:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilDirectionAttribute() {
+		SmilDirectionAttribute attr = (SmilDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilDirectionAttribute</code> , See {@odf.attribute smil:direction}
+	 *
+	 * @param smilDirectionValue   The type is <code>String</code>
+	 */
+	public void setSmilDirectionAttribute(String smilDirectionValue) {
+		SmilDirectionAttribute attr = new SmilDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilFadeColorAttribute</code> , See {@odf.attribute smil:fadeColor}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilFadeColorAttribute() {
+		SmilFadeColorAttribute attr = (SmilFadeColorAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "fadeColor");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SmilFadeColorAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilFadeColorAttribute</code> , See {@odf.attribute smil:fadeColor}
+	 *
+	 * @param smilFadeColorValue   The type is <code>String</code>
+	 */
+	public void setSmilFadeColorAttribute(String smilFadeColorValue) {
+		SmilFadeColorAttribute attr = new SmilFadeColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilFadeColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilSubtypeAttribute</code> , See {@odf.attribute smil:subtype}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilSubtypeAttribute() {
+		SmilSubtypeAttribute attr = (SmilSubtypeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "subtype");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilSubtypeAttribute</code> , See {@odf.attribute smil:subtype}
+	 *
+	 * @param smilSubtypeValue   The type is <code>String</code>
+	 */
+	public void setSmilSubtypeAttribute(String smilSubtypeValue) {
+		SmilSubtypeAttribute attr = new SmilSubtypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilSubtypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SmilTypeAttribute</code> , See {@odf.attribute smil:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSmilTypeAttribute() {
+		SmilTypeAttribute attr = (SmilTypeAttribute) getOdfAttribute(OdfDocumentNamespace.SMIL, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SmilTypeAttribute</code> , See {@odf.attribute smil:type}
+	 *
+	 * @param smilTypeValue   The type is <code>String</code>
+	 */
+	public void setSmilTypeAttribute(String smilTypeValue) {
+		SmilTypeAttribute attr = new SmilTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(smilTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRepeatAttribute</code> , See {@odf.attribute style:repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRepeatAttribute() {
+		StyleRepeatAttribute attr = (StyleRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRepeatAttribute</code> , See {@odf.attribute style:repeat}
+	 *
+	 * @param styleRepeatValue   The type is <code>String</code>
+	 */
+	public void setStyleRepeatAttribute(String styleRepeatValue) {
+		StyleRepeatAttribute attr = new StyleRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFillRuleAttribute</code> , See {@odf.attribute svg:fill-rule}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFillRuleAttribute() {
+		SvgFillRuleAttribute attr = (SvgFillRuleAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "fill-rule");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFillRuleAttribute</code> , See {@odf.attribute svg:fill-rule}
+	 *
+	 * @param svgFillRuleValue   The type is <code>String</code>
+	 */
+	public void setSvgFillRuleAttribute(String svgFillRuleValue) {
+		SvgFillRuleAttribute attr = new SvgFillRuleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFillRuleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:sound}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element presentation:sound}
+	 */
+	 public PresentationSoundElement newPresentationSoundElement(String xlinkHrefValue, String xlinkTypeValue) {
+		PresentationSoundElement presentationSound = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationSoundElement.class);
+		presentationSound.setXlinkHrefAttribute(xlinkHrefValue);
+		presentationSound.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(presentationSound);
+		return presentationSound;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDropCapElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDropCapElement.java
new file mode 100644
index 0000000..ee074d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleDropCapElement.java
@@ -0,0 +1,173 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:drop-cap}.
+ *
+ */
+public class StyleDropCapElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "drop-cap");
+
+	/**
+	 * Create the instance of <code>StyleDropCapElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleDropCapElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.STYLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:drop-cap}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDistanceAttribute</code> , See {@odf.attribute style:distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDistanceAttribute() {
+		StyleDistanceAttribute attr = (StyleDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleDistanceAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDistanceAttribute</code> , See {@odf.attribute style:distance}
+	 *
+	 * @param styleDistanceValue   The type is <code>String</code>
+	 */
+	public void setStyleDistanceAttribute(String styleDistanceValue) {
+		StyleDistanceAttribute attr = new StyleDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLengthAttribute</code> , See {@odf.attribute style:length}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleLengthAttribute() {
+		StyleLengthAttribute attr = (StyleLengthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "length");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(StyleLengthAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLengthAttribute</code> , See {@odf.attribute style:length}
+	 *
+	 * @param styleLengthValue   The type is <code>Integer</code>
+	 */
+	public void setStyleLengthAttribute(Integer styleLengthValue) {
+		StyleLengthAttribute attr = new StyleLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleLengthValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLinesAttribute</code> , See {@odf.attribute style:lines}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleLinesAttribute() {
+		StyleLinesAttribute attr = (StyleLinesAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "lines");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(StyleLinesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLinesAttribute</code> , See {@odf.attribute style:lines}
+	 *
+	 * @param styleLinesValue   The type is <code>Integer</code>
+	 */
+	public void setStyleLinesAttribute(Integer styleLinesValue) {
+		StyleLinesAttribute attr = new StyleLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleLinesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleStyleNameAttribute</code> , See {@odf.attribute style:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleStyleNameAttribute() {
+		StyleStyleNameAttribute attr = (StyleStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleStyleNameAttribute</code> , See {@odf.attribute style:style-name}
+	 *
+	 * @param styleStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleStyleNameAttribute(String styleStyleNameValue) {
+		StyleStyleNameAttribute attr = new StyleStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFontFaceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFontFaceElement.java
new file mode 100644
index 0000000..cd8fe9d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFontFaceElement.java
@@ -0,0 +1,1051 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDefinitionSrcElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgFontFaceSrcElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontAdornmentsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontCharsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontFamilyGenericAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontPitchAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgAccentHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgAlphabeticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgAscentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgBboxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCapHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgDescentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFontFamilyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFontSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFontStretchAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFontStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFontVariantAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFontWeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHangingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgIdeographicAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgMathematicalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgOverlinePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgOverlineThicknessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgPanose1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgSlopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStemhAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStemvAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStrikethroughPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStrikethroughThicknessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgUnderlinePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgUnderlineThicknessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgUnicodeRangeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgUnitsPerEmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgVAlphabeticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgVHangingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgVIdeographicAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgVMathematicalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXHeightAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:font-face}.
+ *
+ */
+public class StyleFontFaceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "font-face");
+
+	/**
+	 * Create the instance of <code>StyleFontFaceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleFontFaceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:font-face}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontAdornmentsAttribute</code> , See {@odf.attribute style:font-adornments}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontAdornmentsAttribute() {
+		StyleFontAdornmentsAttribute attr = (StyleFontAdornmentsAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-adornments");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontAdornmentsAttribute</code> , See {@odf.attribute style:font-adornments}
+	 *
+	 * @param styleFontAdornmentsValue   The type is <code>String</code>
+	 */
+	public void setStyleFontAdornmentsAttribute(String styleFontAdornmentsValue) {
+		StyleFontAdornmentsAttribute attr = new StyleFontAdornmentsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontAdornmentsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontCharsetAttribute</code> , See {@odf.attribute style:font-charset}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontCharsetAttribute() {
+		StyleFontCharsetAttribute attr = (StyleFontCharsetAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-charset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontCharsetAttribute</code> , See {@odf.attribute style:font-charset}
+	 *
+	 * @param styleFontCharsetValue   The type is <code>String</code>
+	 */
+	public void setStyleFontCharsetAttribute(String styleFontCharsetValue) {
+		StyleFontCharsetAttribute attr = new StyleFontCharsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontCharsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontFamilyGenericAttribute</code> , See {@odf.attribute style:font-family-generic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontFamilyGenericAttribute() {
+		StyleFontFamilyGenericAttribute attr = (StyleFontFamilyGenericAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-family-generic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontFamilyGenericAttribute</code> , See {@odf.attribute style:font-family-generic}
+	 *
+	 * @param styleFontFamilyGenericValue   The type is <code>String</code>
+	 */
+	public void setStyleFontFamilyGenericAttribute(String styleFontFamilyGenericValue) {
+		StyleFontFamilyGenericAttribute attr = new StyleFontFamilyGenericAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontFamilyGenericValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontPitchAttribute</code> , See {@odf.attribute style:font-pitch}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontPitchAttribute() {
+		StyleFontPitchAttribute attr = (StyleFontPitchAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-pitch");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontPitchAttribute</code> , See {@odf.attribute style:font-pitch}
+	 *
+	 * @param styleFontPitchValue   The type is <code>String</code>
+	 */
+	public void setStyleFontPitchAttribute(String styleFontPitchValue) {
+		StyleFontPitchAttribute attr = new StyleFontPitchAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontPitchValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgAccentHeightAttribute</code> , See {@odf.attribute svg:accent-height}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgAccentHeightAttribute() {
+		SvgAccentHeightAttribute attr = (SvgAccentHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "accent-height");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgAccentHeightAttribute</code> , See {@odf.attribute svg:accent-height}
+	 *
+	 * @param svgAccentHeightValue   The type is <code>Integer</code>
+	 */
+	public void setSvgAccentHeightAttribute(Integer svgAccentHeightValue) {
+		SvgAccentHeightAttribute attr = new SvgAccentHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgAccentHeightValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgAlphabeticAttribute</code> , See {@odf.attribute svg:alphabetic}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgAlphabeticAttribute() {
+		SvgAlphabeticAttribute attr = (SvgAlphabeticAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "alphabetic");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgAlphabeticAttribute</code> , See {@odf.attribute svg:alphabetic}
+	 *
+	 * @param svgAlphabeticValue   The type is <code>Integer</code>
+	 */
+	public void setSvgAlphabeticAttribute(Integer svgAlphabeticValue) {
+		SvgAlphabeticAttribute attr = new SvgAlphabeticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgAlphabeticValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgAscentAttribute</code> , See {@odf.attribute svg:ascent}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgAscentAttribute() {
+		SvgAscentAttribute attr = (SvgAscentAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "ascent");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgAscentAttribute</code> , See {@odf.attribute svg:ascent}
+	 *
+	 * @param svgAscentValue   The type is <code>Integer</code>
+	 */
+	public void setSvgAscentAttribute(Integer svgAscentValue) {
+		SvgAscentAttribute attr = new SvgAscentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgAscentValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgBboxAttribute</code> , See {@odf.attribute svg:bbox}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgBboxAttribute() {
+		SvgBboxAttribute attr = (SvgBboxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "bbox");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgBboxAttribute</code> , See {@odf.attribute svg:bbox}
+	 *
+	 * @param svgBboxValue   The type is <code>String</code>
+	 */
+	public void setSvgBboxAttribute(String svgBboxValue) {
+		SvgBboxAttribute attr = new SvgBboxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgBboxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCapHeightAttribute</code> , See {@odf.attribute svg:cap-height}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgCapHeightAttribute() {
+		SvgCapHeightAttribute attr = (SvgCapHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cap-height");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCapHeightAttribute</code> , See {@odf.attribute svg:cap-height}
+	 *
+	 * @param svgCapHeightValue   The type is <code>Integer</code>
+	 */
+	public void setSvgCapHeightAttribute(Integer svgCapHeightValue) {
+		SvgCapHeightAttribute attr = new SvgCapHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgCapHeightValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgDescentAttribute</code> , See {@odf.attribute svg:descent}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgDescentAttribute() {
+		SvgDescentAttribute attr = (SvgDescentAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "descent");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgDescentAttribute</code> , See {@odf.attribute svg:descent}
+	 *
+	 * @param svgDescentValue   The type is <code>Integer</code>
+	 */
+	public void setSvgDescentAttribute(Integer svgDescentValue) {
+		SvgDescentAttribute attr = new SvgDescentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgDescentValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFontFamilyAttribute</code> , See {@odf.attribute svg:font-family}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFontFamilyAttribute() {
+		SvgFontFamilyAttribute attr = (SvgFontFamilyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "font-family");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFontFamilyAttribute</code> , See {@odf.attribute svg:font-family}
+	 *
+	 * @param svgFontFamilyValue   The type is <code>String</code>
+	 */
+	public void setSvgFontFamilyAttribute(String svgFontFamilyValue) {
+		SvgFontFamilyAttribute attr = new SvgFontFamilyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFontFamilyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFontSizeAttribute</code> , See {@odf.attribute svg:font-size}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFontSizeAttribute() {
+		SvgFontSizeAttribute attr = (SvgFontSizeAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "font-size");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFontSizeAttribute</code> , See {@odf.attribute svg:font-size}
+	 *
+	 * @param svgFontSizeValue   The type is <code>String</code>
+	 */
+	public void setSvgFontSizeAttribute(String svgFontSizeValue) {
+		SvgFontSizeAttribute attr = new SvgFontSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFontSizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFontStretchAttribute</code> , See {@odf.attribute svg:font-stretch}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFontStretchAttribute() {
+		SvgFontStretchAttribute attr = (SvgFontStretchAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "font-stretch");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFontStretchAttribute</code> , See {@odf.attribute svg:font-stretch}
+	 *
+	 * @param svgFontStretchValue   The type is <code>String</code>
+	 */
+	public void setSvgFontStretchAttribute(String svgFontStretchValue) {
+		SvgFontStretchAttribute attr = new SvgFontStretchAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFontStretchValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFontStyleAttribute</code> , See {@odf.attribute svg:font-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFontStyleAttribute() {
+		SvgFontStyleAttribute attr = (SvgFontStyleAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "font-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFontStyleAttribute</code> , See {@odf.attribute svg:font-style}
+	 *
+	 * @param svgFontStyleValue   The type is <code>String</code>
+	 */
+	public void setSvgFontStyleAttribute(String svgFontStyleValue) {
+		SvgFontStyleAttribute attr = new SvgFontStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFontStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFontVariantAttribute</code> , See {@odf.attribute svg:font-variant}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFontVariantAttribute() {
+		SvgFontVariantAttribute attr = (SvgFontVariantAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "font-variant");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFontVariantAttribute</code> , See {@odf.attribute svg:font-variant}
+	 *
+	 * @param svgFontVariantValue   The type is <code>String</code>
+	 */
+	public void setSvgFontVariantAttribute(String svgFontVariantValue) {
+		SvgFontVariantAttribute attr = new SvgFontVariantAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFontVariantValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFontWeightAttribute</code> , See {@odf.attribute svg:font-weight}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFontWeightAttribute() {
+		SvgFontWeightAttribute attr = (SvgFontWeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "font-weight");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFontWeightAttribute</code> , See {@odf.attribute svg:font-weight}
+	 *
+	 * @param svgFontWeightValue   The type is <code>String</code>
+	 */
+	public void setSvgFontWeightAttribute(String svgFontWeightValue) {
+		SvgFontWeightAttribute attr = new SvgFontWeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFontWeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHangingAttribute</code> , See {@odf.attribute svg:hanging}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgHangingAttribute() {
+		SvgHangingAttribute attr = (SvgHangingAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "hanging");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHangingAttribute</code> , See {@odf.attribute svg:hanging}
+	 *
+	 * @param svgHangingValue   The type is <code>Integer</code>
+	 */
+	public void setSvgHangingAttribute(Integer svgHangingValue) {
+		SvgHangingAttribute attr = new SvgHangingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgHangingValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgIdeographicAttribute</code> , See {@odf.attribute svg:ideographic}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgIdeographicAttribute() {
+		SvgIdeographicAttribute attr = (SvgIdeographicAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "ideographic");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgIdeographicAttribute</code> , See {@odf.attribute svg:ideographic}
+	 *
+	 * @param svgIdeographicValue   The type is <code>Integer</code>
+	 */
+	public void setSvgIdeographicAttribute(Integer svgIdeographicValue) {
+		SvgIdeographicAttribute attr = new SvgIdeographicAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgIdeographicValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgMathematicalAttribute</code> , See {@odf.attribute svg:mathematical}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgMathematicalAttribute() {
+		SvgMathematicalAttribute attr = (SvgMathematicalAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "mathematical");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgMathematicalAttribute</code> , See {@odf.attribute svg:mathematical}
+	 *
+	 * @param svgMathematicalValue   The type is <code>Integer</code>
+	 */
+	public void setSvgMathematicalAttribute(Integer svgMathematicalValue) {
+		SvgMathematicalAttribute attr = new SvgMathematicalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgMathematicalValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgOverlinePositionAttribute</code> , See {@odf.attribute svg:overline-position}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgOverlinePositionAttribute() {
+		SvgOverlinePositionAttribute attr = (SvgOverlinePositionAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "overline-position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgOverlinePositionAttribute</code> , See {@odf.attribute svg:overline-position}
+	 *
+	 * @param svgOverlinePositionValue   The type is <code>Integer</code>
+	 */
+	public void setSvgOverlinePositionAttribute(Integer svgOverlinePositionValue) {
+		SvgOverlinePositionAttribute attr = new SvgOverlinePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgOverlinePositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgOverlineThicknessAttribute</code> , See {@odf.attribute svg:overline-thickness}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgOverlineThicknessAttribute() {
+		SvgOverlineThicknessAttribute attr = (SvgOverlineThicknessAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "overline-thickness");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgOverlineThicknessAttribute</code> , See {@odf.attribute svg:overline-thickness}
+	 *
+	 * @param svgOverlineThicknessValue   The type is <code>Integer</code>
+	 */
+	public void setSvgOverlineThicknessAttribute(Integer svgOverlineThicknessValue) {
+		SvgOverlineThicknessAttribute attr = new SvgOverlineThicknessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgOverlineThicknessValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgPanose1Attribute</code> , See {@odf.attribute svg:panose-1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgPanose1Attribute() {
+		SvgPanose1Attribute attr = (SvgPanose1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "panose-1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgPanose1Attribute</code> , See {@odf.attribute svg:panose-1}
+	 *
+	 * @param svgPanose1Value   The type is <code>String</code>
+	 */
+	public void setSvgPanose1Attribute(String svgPanose1Value) {
+		SvgPanose1Attribute attr = new SvgPanose1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgPanose1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgSlopeAttribute</code> , See {@odf.attribute svg:slope}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgSlopeAttribute() {
+		SvgSlopeAttribute attr = (SvgSlopeAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "slope");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgSlopeAttribute</code> , See {@odf.attribute svg:slope}
+	 *
+	 * @param svgSlopeValue   The type is <code>Integer</code>
+	 */
+	public void setSvgSlopeAttribute(Integer svgSlopeValue) {
+		SvgSlopeAttribute attr = new SvgSlopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgSlopeValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStemhAttribute</code> , See {@odf.attribute svg:stemh}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgStemhAttribute() {
+		SvgStemhAttribute attr = (SvgStemhAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stemh");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStemhAttribute</code> , See {@odf.attribute svg:stemh}
+	 *
+	 * @param svgStemhValue   The type is <code>Integer</code>
+	 */
+	public void setSvgStemhAttribute(Integer svgStemhValue) {
+		SvgStemhAttribute attr = new SvgStemhAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgStemhValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStemvAttribute</code> , See {@odf.attribute svg:stemv}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgStemvAttribute() {
+		SvgStemvAttribute attr = (SvgStemvAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stemv");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStemvAttribute</code> , See {@odf.attribute svg:stemv}
+	 *
+	 * @param svgStemvValue   The type is <code>Integer</code>
+	 */
+	public void setSvgStemvAttribute(Integer svgStemvValue) {
+		SvgStemvAttribute attr = new SvgStemvAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgStemvValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStrikethroughPositionAttribute</code> , See {@odf.attribute svg:strikethrough-position}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgStrikethroughPositionAttribute() {
+		SvgStrikethroughPositionAttribute attr = (SvgStrikethroughPositionAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "strikethrough-position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStrikethroughPositionAttribute</code> , See {@odf.attribute svg:strikethrough-position}
+	 *
+	 * @param svgStrikethroughPositionValue   The type is <code>Integer</code>
+	 */
+	public void setSvgStrikethroughPositionAttribute(Integer svgStrikethroughPositionValue) {
+		SvgStrikethroughPositionAttribute attr = new SvgStrikethroughPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgStrikethroughPositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStrikethroughThicknessAttribute</code> , See {@odf.attribute svg:strikethrough-thickness}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgStrikethroughThicknessAttribute() {
+		SvgStrikethroughThicknessAttribute attr = (SvgStrikethroughThicknessAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "strikethrough-thickness");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStrikethroughThicknessAttribute</code> , See {@odf.attribute svg:strikethrough-thickness}
+	 *
+	 * @param svgStrikethroughThicknessValue   The type is <code>Integer</code>
+	 */
+	public void setSvgStrikethroughThicknessAttribute(Integer svgStrikethroughThicknessValue) {
+		SvgStrikethroughThicknessAttribute attr = new SvgStrikethroughThicknessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgStrikethroughThicknessValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgUnderlinePositionAttribute</code> , See {@odf.attribute svg:underline-position}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgUnderlinePositionAttribute() {
+		SvgUnderlinePositionAttribute attr = (SvgUnderlinePositionAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "underline-position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgUnderlinePositionAttribute</code> , See {@odf.attribute svg:underline-position}
+	 *
+	 * @param svgUnderlinePositionValue   The type is <code>Integer</code>
+	 */
+	public void setSvgUnderlinePositionAttribute(Integer svgUnderlinePositionValue) {
+		SvgUnderlinePositionAttribute attr = new SvgUnderlinePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgUnderlinePositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgUnderlineThicknessAttribute</code> , See {@odf.attribute svg:underline-thickness}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgUnderlineThicknessAttribute() {
+		SvgUnderlineThicknessAttribute attr = (SvgUnderlineThicknessAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "underline-thickness");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgUnderlineThicknessAttribute</code> , See {@odf.attribute svg:underline-thickness}
+	 *
+	 * @param svgUnderlineThicknessValue   The type is <code>Integer</code>
+	 */
+	public void setSvgUnderlineThicknessAttribute(Integer svgUnderlineThicknessValue) {
+		SvgUnderlineThicknessAttribute attr = new SvgUnderlineThicknessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgUnderlineThicknessValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgUnicodeRangeAttribute</code> , See {@odf.attribute svg:unicode-range}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgUnicodeRangeAttribute() {
+		SvgUnicodeRangeAttribute attr = (SvgUnicodeRangeAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "unicode-range");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgUnicodeRangeAttribute</code> , See {@odf.attribute svg:unicode-range}
+	 *
+	 * @param svgUnicodeRangeValue   The type is <code>String</code>
+	 */
+	public void setSvgUnicodeRangeAttribute(String svgUnicodeRangeValue) {
+		SvgUnicodeRangeAttribute attr = new SvgUnicodeRangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgUnicodeRangeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgUnitsPerEmAttribute</code> , See {@odf.attribute svg:units-per-em}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgUnitsPerEmAttribute() {
+		SvgUnitsPerEmAttribute attr = (SvgUnitsPerEmAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "units-per-em");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgUnitsPerEmAttribute</code> , See {@odf.attribute svg:units-per-em}
+	 *
+	 * @param svgUnitsPerEmValue   The type is <code>Integer</code>
+	 */
+	public void setSvgUnitsPerEmAttribute(Integer svgUnitsPerEmValue) {
+		SvgUnitsPerEmAttribute attr = new SvgUnitsPerEmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgUnitsPerEmValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgVAlphabeticAttribute</code> , See {@odf.attribute svg:v-alphabetic}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgVAlphabeticAttribute() {
+		SvgVAlphabeticAttribute attr = (SvgVAlphabeticAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "v-alphabetic");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgVAlphabeticAttribute</code> , See {@odf.attribute svg:v-alphabetic}
+	 *
+	 * @param svgVAlphabeticValue   The type is <code>Integer</code>
+	 */
+	public void setSvgVAlphabeticAttribute(Integer svgVAlphabeticValue) {
+		SvgVAlphabeticAttribute attr = new SvgVAlphabeticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgVAlphabeticValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgVHangingAttribute</code> , See {@odf.attribute svg:v-hanging}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgVHangingAttribute() {
+		SvgVHangingAttribute attr = (SvgVHangingAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "v-hanging");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgVHangingAttribute</code> , See {@odf.attribute svg:v-hanging}
+	 *
+	 * @param svgVHangingValue   The type is <code>Integer</code>
+	 */
+	public void setSvgVHangingAttribute(Integer svgVHangingValue) {
+		SvgVHangingAttribute attr = new SvgVHangingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgVHangingValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgVIdeographicAttribute</code> , See {@odf.attribute svg:v-ideographic}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgVIdeographicAttribute() {
+		SvgVIdeographicAttribute attr = (SvgVIdeographicAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "v-ideographic");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgVIdeographicAttribute</code> , See {@odf.attribute svg:v-ideographic}
+	 *
+	 * @param svgVIdeographicValue   The type is <code>Integer</code>
+	 */
+	public void setSvgVIdeographicAttribute(Integer svgVIdeographicValue) {
+		SvgVIdeographicAttribute attr = new SvgVIdeographicAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgVIdeographicValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgVMathematicalAttribute</code> , See {@odf.attribute svg:v-mathematical}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgVMathematicalAttribute() {
+		SvgVMathematicalAttribute attr = (SvgVMathematicalAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "v-mathematical");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgVMathematicalAttribute</code> , See {@odf.attribute svg:v-mathematical}
+	 *
+	 * @param svgVMathematicalValue   The type is <code>Integer</code>
+	 */
+	public void setSvgVMathematicalAttribute(Integer svgVMathematicalValue) {
+		SvgVMathematicalAttribute attr = new SvgVMathematicalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgVMathematicalValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthsAttribute</code> , See {@odf.attribute svg:widths}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthsAttribute() {
+		SvgWidthsAttribute attr = (SvgWidthsAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "widths");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthsAttribute</code> , See {@odf.attribute svg:widths}
+	 *
+	 * @param svgWidthsValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthsAttribute(String svgWidthsValue) {
+		SvgWidthsAttribute attr = new SvgWidthsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXHeightAttribute</code> , See {@odf.attribute svg:x-height}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSvgXHeightAttribute() {
+		SvgXHeightAttribute attr = (SvgXHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x-height");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXHeightAttribute</code> , See {@odf.attribute svg:x-height}
+	 *
+	 * @param svgXHeightValue   The type is <code>Integer</code>
+	 */
+	public void setSvgXHeightAttribute(Integer svgXHeightValue) {
+		SvgXHeightAttribute attr = new SvgXHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(svgXHeightValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element svg:definition-src}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element svg:definition-src}
+	 */
+	 public SvgDefinitionSrcElement newSvgDefinitionSrcElement(String xlinkHrefValue, String xlinkTypeValue) {
+		SvgDefinitionSrcElement svgDefinitionSrc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgDefinitionSrcElement.class);
+		svgDefinitionSrc.setXlinkHrefAttribute(xlinkHrefValue);
+		svgDefinitionSrc.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(svgDefinitionSrc);
+		return svgDefinitionSrc;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:font-face-src}.
+	 *
+	 * @return the element {@odf.element svg:font-face-src}
+	 */
+	public SvgFontFaceSrcElement newSvgFontFaceSrcElement() {
+		SvgFontFaceSrcElement svgFontFaceSrc = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgFontFaceSrcElement.class);
+		this.appendChild(svgFontFaceSrc);
+		return svgFontFaceSrc;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterElement.java
new file mode 100644
index 0000000..d000c5f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:footer}.
+ *
+ */
+public class StyleFooterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "footer");
+
+	/**
+	 * Create the instance of <code>StyleFooterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleFooterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:footer}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleDisplayAttribute() {
+		StyleDisplayAttribute attr = (StyleDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(StyleDisplayAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @param styleDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleDisplayAttribute(Boolean styleDisplayValue) {
+		StyleDisplayAttribute attr = new StyleDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-center}.
+	 *
+	 * @return the element {@odf.element style:region-center}
+	 */
+	public StyleRegionCenterElement newStyleRegionCenterElement() {
+		StyleRegionCenterElement styleRegionCenter = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionCenterElement.class);
+		this.appendChild(styleRegionCenter);
+		return styleRegionCenter;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-left}.
+	 *
+	 * @return the element {@odf.element style:region-left}
+	 */
+	public StyleRegionLeftElement newStyleRegionLeftElement() {
+		StyleRegionLeftElement styleRegionLeft = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionLeftElement.class);
+		this.appendChild(styleRegionLeft);
+		return styleRegionLeft;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-right}.
+	 *
+	 * @return the element {@odf.element style:region-right}
+	 */
+	public StyleRegionRightElement newStyleRegionRightElement() {
+		StyleRegionRightElement styleRegionRight = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionRightElement.class);
+		this.appendChild(styleRegionRight);
+		return styleRegionRight;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:index-title}
+	 */
+	 public TextIndexTitleElement newTextIndexTitleElement(String textNameValue) {
+		TextIndexTitleElement textIndexTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleElement.class);
+		textIndexTitle.setTextNameAttribute(textNameValue);
+		this.appendChild(textIndexTitle);
+		return textIndexTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tracked-changes}.
+	 *
+	 * @return the element {@odf.element text:tracked-changes}
+	 */
+	public TextTrackedChangesElement newTextTrackedChangesElement() {
+		TextTrackedChangesElement textTrackedChanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTrackedChangesElement.class);
+		this.appendChild(textTrackedChanges);
+		return textTrackedChanges;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterLeftElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterLeftElement.java
new file mode 100644
index 0000000..9828fce
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterLeftElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:footer-left}.
+ *
+ */
+public class StyleFooterLeftElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "footer-left");
+
+	/**
+	 * Create the instance of <code>StyleFooterLeftElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleFooterLeftElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:footer-left}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleDisplayAttribute() {
+		StyleDisplayAttribute attr = (StyleDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(StyleDisplayAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @param styleDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleDisplayAttribute(Boolean styleDisplayValue) {
+		StyleDisplayAttribute attr = new StyleDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-center}.
+	 *
+	 * @return the element {@odf.element style:region-center}
+	 */
+	public StyleRegionCenterElement newStyleRegionCenterElement() {
+		StyleRegionCenterElement styleRegionCenter = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionCenterElement.class);
+		this.appendChild(styleRegionCenter);
+		return styleRegionCenter;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-left}.
+	 *
+	 * @return the element {@odf.element style:region-left}
+	 */
+	public StyleRegionLeftElement newStyleRegionLeftElement() {
+		StyleRegionLeftElement styleRegionLeft = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionLeftElement.class);
+		this.appendChild(styleRegionLeft);
+		return styleRegionLeft;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-right}.
+	 *
+	 * @return the element {@odf.element style:region-right}
+	 */
+	public StyleRegionRightElement newStyleRegionRightElement() {
+		StyleRegionRightElement styleRegionRight = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionRightElement.class);
+		this.appendChild(styleRegionRight);
+		return styleRegionRight;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:index-title}
+	 */
+	 public TextIndexTitleElement newTextIndexTitleElement(String textNameValue) {
+		TextIndexTitleElement textIndexTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleElement.class);
+		textIndexTitle.setTextNameAttribute(textNameValue);
+		this.appendChild(textIndexTitle);
+		return textIndexTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tracked-changes}.
+	 *
+	 * @return the element {@odf.element text:tracked-changes}
+	 */
+	public TextTrackedChangesElement newTextTrackedChangesElement() {
+		TextTrackedChangesElement textTrackedChanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTrackedChangesElement.class);
+		this.appendChild(textTrackedChanges);
+		return textTrackedChanges;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterStyleElement.java
new file mode 100644
index 0000000..7bf4c5c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFooterStyleElement.java
@@ -0,0 +1,82 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:footer-style}.
+ *
+ */
+public class StyleFooterStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "footer-style");
+
+	/**
+	 * Create the instance of <code>StyleFooterStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleFooterStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:footer-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element style:header-footer-properties}.
+	 *
+	 * @return the element {@odf.element style:header-footer-properties}
+	 */
+	public StyleHeaderFooterPropertiesElement newStyleHeaderFooterPropertiesElement() {
+		StyleHeaderFooterPropertiesElement styleHeaderFooterProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHeaderFooterPropertiesElement.class);
+		this.appendChild(styleHeaderFooterProperties);
+		return styleHeaderFooterProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFootnoteSepElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFootnoteSepElement.java
new file mode 100644
index 0000000..8bf01f6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleFootnoteSepElement.java
@@ -0,0 +1,246 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleAdjustmentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDistanceAfterSepAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDistanceBeforeSepAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLineStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWidthAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:footnote-sep}.
+ *
+ */
+public class StyleFootnoteSepElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "footnote-sep");
+
+	/**
+	 * Create the instance of <code>StyleFootnoteSepElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleFootnoteSepElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:footnote-sep}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleAdjustmentAttribute</code> , See {@odf.attribute style:adjustment}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleAdjustmentAttribute() {
+		StyleAdjustmentAttribute attr = (StyleAdjustmentAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "adjustment");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleAdjustmentAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleAdjustmentAttribute</code> , See {@odf.attribute style:adjustment}
+	 *
+	 * @param styleAdjustmentValue   The type is <code>String</code>
+	 */
+	public void setStyleAdjustmentAttribute(String styleAdjustmentValue) {
+		StyleAdjustmentAttribute attr = new StyleAdjustmentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleAdjustmentValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleColorAttribute</code> , See {@odf.attribute style:color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleColorAttribute() {
+		StyleColorAttribute attr = (StyleColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleColorAttribute</code> , See {@odf.attribute style:color}
+	 *
+	 * @param styleColorValue   The type is <code>String</code>
+	 */
+	public void setStyleColorAttribute(String styleColorValue) {
+		StyleColorAttribute attr = new StyleColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDistanceAfterSepAttribute</code> , See {@odf.attribute style:distance-after-sep}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDistanceAfterSepAttribute() {
+		StyleDistanceAfterSepAttribute attr = (StyleDistanceAfterSepAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "distance-after-sep");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDistanceAfterSepAttribute</code> , See {@odf.attribute style:distance-after-sep}
+	 *
+	 * @param styleDistanceAfterSepValue   The type is <code>String</code>
+	 */
+	public void setStyleDistanceAfterSepAttribute(String styleDistanceAfterSepValue) {
+		StyleDistanceAfterSepAttribute attr = new StyleDistanceAfterSepAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDistanceAfterSepValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDistanceBeforeSepAttribute</code> , See {@odf.attribute style:distance-before-sep}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDistanceBeforeSepAttribute() {
+		StyleDistanceBeforeSepAttribute attr = (StyleDistanceBeforeSepAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "distance-before-sep");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDistanceBeforeSepAttribute</code> , See {@odf.attribute style:distance-before-sep}
+	 *
+	 * @param styleDistanceBeforeSepValue   The type is <code>String</code>
+	 */
+	public void setStyleDistanceBeforeSepAttribute(String styleDistanceBeforeSepValue) {
+		StyleDistanceBeforeSepAttribute attr = new StyleDistanceBeforeSepAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDistanceBeforeSepValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLineStyleAttribute</code> , See {@odf.attribute style:line-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLineStyleAttribute() {
+		StyleLineStyleAttribute attr = (StyleLineStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "line-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLineStyleAttribute</code> , See {@odf.attribute style:line-style}
+	 *
+	 * @param styleLineStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleLineStyleAttribute(String styleLineStyleValue) {
+		StyleLineStyleAttribute attr = new StyleLineStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLineStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelWidthAttribute() {
+		StyleRelWidthAttribute attr = (StyleRelWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @param styleRelWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleRelWidthAttribute(String styleRelWidthValue) {
+		StyleRelWidthAttribute attr = new StyleRelWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWidthAttribute</code> , See {@odf.attribute style:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWidthAttribute() {
+		StyleWidthAttribute attr = (StyleWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWidthAttribute</code> , See {@odf.attribute style:width}
+	 *
+	 * @param styleWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleWidthAttribute(String styleWidthValue) {
+		StyleWidthAttribute attr = new StyleWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWidthValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleGraphicPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleGraphicPropertiesElement.java
new file mode 100644
index 0000000..678465c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleGraphicPropertiesElement.java
@@ -0,0 +1,4990 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextListStyleElement;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dAmbientColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dBackScaleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dBackfaceCullingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dCloseBackAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dCloseFrontAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dDepthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dDiffuseColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dEdgeRoundingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dEdgeRoundingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dEmissiveColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dEndAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dHorizontalSegmentsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dLightingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dNormalsDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dNormalsKindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShininessAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dSpecularColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTextureFilterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTextureGenerationModeXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTextureGenerationModeYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTextureKindAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dTextureModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dVerticalSegmentsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawAutoGrowHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawAutoGrowWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawBlueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionAngleTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionEscapeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionEscapeDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionFitLineLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionGapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionLineLengthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawCaptionTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawColorInversionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawColorModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawContrastAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDecimalPlacesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDrawAspectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndGuideAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndLineSpacingHorizontalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawEndLineSpacingVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillGradientNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillHatchNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillHatchSolidAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageRefPointAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageRefPointXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageRefPointYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFillImageWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFitToContourAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFitToSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFrameDisplayBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFrameDisplayScrollbarAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFrameMarginHorizontalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawFrameMarginVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGammaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGradientStepCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGreenAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGuideDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawGuideOverhangAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawImageOpacityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLineDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawLuminanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMarkerEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMarkerEndCenterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMarkerEndWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMarkerStartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMarkerStartCenterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMarkerStartWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMeasureAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawMeasureVerticalAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawOleDrawAspectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawOpacityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawOpacityNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawParallelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawPlacingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawRedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawSecondaryFillColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShadowColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShadowOffsetXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShadowOffsetYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShadowOpacityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawShowUnitAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartGuideAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartLineSpacingHorizontalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStartLineSpacingVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStrokeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStrokeDashAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStrokeDashNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStrokeLinejoinAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawSymbolColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextareaHorizontalAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTextareaVerticalAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawTileRepeatOffsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawUnitAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawVisibleAreaHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawVisibleAreaLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawVisibleAreaTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawVisibleAreaWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawWrapInfluenceOnPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoClipAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMaxHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMaxWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMinHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMinWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoWrapOptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBackgroundTransparencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleEditableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFlowWithTextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleHorizontalPosAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleHorizontalRelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleMirrorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumberWrappedParagraphsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleOverflowBehaviorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePrintContentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleProtectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRunThroughAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShrinkToFitAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalPosAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalRelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWrapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWrapContourAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWrapContourModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWrapDynamicThresholdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFillRuleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStrokeColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStrokeLinecapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStrokeOpacityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStrokeWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgXAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorPageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationRepeatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationStartInsideAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationStepsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnimationStopInsideAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:graphic-properties}.
+ *
+ */
+public class StyleGraphicPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "graphic-properties");
+
+	/**
+	 * Create the instance of <code>StyleGraphicPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleGraphicPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:graphic-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty AmbientColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "ambient-color"));
+
+	public final static OdfStyleProperty BackScale =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "back-scale"));
+
+	public final static OdfStyleProperty BackfaceCulling =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "backface-culling"));
+
+	public final static OdfStyleProperty CloseBack =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "close-back"));
+
+	public final static OdfStyleProperty CloseFront =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "close-front"));
+
+	public final static OdfStyleProperty Depth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "depth"));
+
+	public final static OdfStyleProperty DiffuseColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "diffuse-color"));
+
+	public final static OdfStyleProperty EdgeRounding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "edge-rounding"));
+
+	public final static OdfStyleProperty EdgeRoundingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "edge-rounding-mode"));
+
+	public final static OdfStyleProperty EmissiveColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "emissive-color"));
+
+	public final static OdfStyleProperty EndAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "end-angle"));
+
+	public final static OdfStyleProperty HorizontalSegments =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "horizontal-segments"));
+
+	public final static OdfStyleProperty LightingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "lighting-mode"));
+
+	public final static OdfStyleProperty NormalsDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "normals-direction"));
+
+	public final static OdfStyleProperty NormalsKind =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "normals-kind"));
+
+	public final static OdfStyleProperty Dr3dShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "shadow"));
+
+	public final static OdfStyleProperty Shininess =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "shininess"));
+
+	public final static OdfStyleProperty SpecularColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "specular-color"));
+
+	public final static OdfStyleProperty TextureFilter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-filter"));
+
+	public final static OdfStyleProperty TextureGenerationModeX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-generation-mode-x"));
+
+	public final static OdfStyleProperty TextureGenerationModeY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-generation-mode-y"));
+
+	public final static OdfStyleProperty TextureKind =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-kind"));
+
+	public final static OdfStyleProperty TextureMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-mode"));
+
+	public final static OdfStyleProperty VerticalSegments =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "vertical-segments"));
+
+	public final static OdfStyleProperty AutoGrowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "auto-grow-height"));
+
+	public final static OdfStyleProperty AutoGrowWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "auto-grow-width"));
+
+	public final static OdfStyleProperty Blue =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "blue"));
+
+	public final static OdfStyleProperty CaptionAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-angle"));
+
+	public final static OdfStyleProperty CaptionAngleType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-angle-type"));
+
+	public final static OdfStyleProperty CaptionEscape =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-escape"));
+
+	public final static OdfStyleProperty CaptionEscapeDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-escape-direction"));
+
+	public final static OdfStyleProperty CaptionFitLineLength =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-fit-line-length"));
+
+	public final static OdfStyleProperty CaptionGap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-gap"));
+
+	public final static OdfStyleProperty CaptionLineLength =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-line-length"));
+
+	public final static OdfStyleProperty CaptionType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-type"));
+
+	public final static OdfStyleProperty ColorInversion =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "color-inversion"));
+
+	public final static OdfStyleProperty ColorMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "color-mode"));
+
+	public final static OdfStyleProperty Contrast =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "contrast"));
+
+	public final static OdfStyleProperty DecimalPlaces =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "decimal-places"));
+
+	public final static OdfStyleProperty DrawAspect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "draw-aspect"));
+
+	public final static OdfStyleProperty EndGuide =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "end-guide"));
+
+	public final static OdfStyleProperty EndLineSpacingHorizontal =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "end-line-spacing-horizontal"));
+
+	public final static OdfStyleProperty EndLineSpacingVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "end-line-spacing-vertical"));
+
+	public final static OdfStyleProperty Fill =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill"));
+
+	public final static OdfStyleProperty FillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-color"));
+
+	public final static OdfStyleProperty FillGradientName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-gradient-name"));
+
+	public final static OdfStyleProperty FillHatchName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-name"));
+
+	public final static OdfStyleProperty FillHatchSolid =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-solid"));
+
+	public final static OdfStyleProperty FillImageHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-height"));
+
+	public final static OdfStyleProperty FillImageName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-name"));
+
+	public final static OdfStyleProperty FillImageRefPoint =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point"));
+
+	public final static OdfStyleProperty FillImageRefPointX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x"));
+
+	public final static OdfStyleProperty FillImageRefPointY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y"));
+
+	public final static OdfStyleProperty FillImageWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-width"));
+
+	public final static OdfStyleProperty FitToContour =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fit-to-contour"));
+
+	public final static OdfStyleProperty FitToSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fit-to-size"));
+
+	public final static OdfStyleProperty FrameDisplayBorder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-display-border"));
+
+	public final static OdfStyleProperty FrameDisplayScrollbar =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-display-scrollbar"));
+
+	public final static OdfStyleProperty FrameMarginHorizontal =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-margin-horizontal"));
+
+	public final static OdfStyleProperty FrameMarginVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-margin-vertical"));
+
+	public final static OdfStyleProperty Gamma =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "gamma"));
+
+	public final static OdfStyleProperty GradientStepCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "gradient-step-count"));
+
+	public final static OdfStyleProperty Green =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "green"));
+
+	public final static OdfStyleProperty GuideDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "guide-distance"));
+
+	public final static OdfStyleProperty GuideOverhang =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "guide-overhang"));
+
+	public final static OdfStyleProperty ImageOpacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "image-opacity"));
+
+	public final static OdfStyleProperty LineDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "line-distance"));
+
+	public final static OdfStyleProperty Luminance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "luminance"));
+
+	public final static OdfStyleProperty MarkerEnd =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end"));
+
+	public final static OdfStyleProperty MarkerEndCenter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end-center"));
+
+	public final static OdfStyleProperty MarkerEndWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end-width"));
+
+	public final static OdfStyleProperty MarkerStart =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start"));
+
+	public final static OdfStyleProperty MarkerStartCenter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start-center"));
+
+	public final static OdfStyleProperty MarkerStartWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start-width"));
+
+	public final static OdfStyleProperty MeasureAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "measure-align"));
+
+	public final static OdfStyleProperty MeasureVerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "measure-vertical-align"));
+
+	public final static OdfStyleProperty OleDrawAspect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "ole-draw-aspect"));
+
+	public final static OdfStyleProperty Opacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity"));
+
+	public final static OdfStyleProperty OpacityName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity-name"));
+
+	public final static OdfStyleProperty Parallel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "parallel"));
+
+	public final static OdfStyleProperty Placing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "placing"));
+
+	public final static OdfStyleProperty Red =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "red"));
+
+	public final static OdfStyleProperty SecondaryFillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "secondary-fill-color"));
+
+	public final static OdfStyleProperty DrawShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow"));
+
+	public final static OdfStyleProperty ShadowColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-color"));
+
+	public final static OdfStyleProperty ShadowOffsetX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-offset-x"));
+
+	public final static OdfStyleProperty ShadowOffsetY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-offset-y"));
+
+	public final static OdfStyleProperty ShadowOpacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-opacity"));
+
+	public final static OdfStyleProperty ShowUnit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "show-unit"));
+
+	public final static OdfStyleProperty StartGuide =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "start-guide"));
+
+	public final static OdfStyleProperty StartLineSpacingHorizontal =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "start-line-spacing-horizontal"));
+
+	public final static OdfStyleProperty StartLineSpacingVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "start-line-spacing-vertical"));
+
+	public final static OdfStyleProperty Stroke =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke"));
+
+	public final static OdfStyleProperty StrokeDash =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash"));
+
+	public final static OdfStyleProperty StrokeDashNames =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash-names"));
+
+	public final static OdfStyleProperty StrokeLinejoin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-linejoin"));
+
+	public final static OdfStyleProperty SymbolColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "symbol-color"));
+
+	public final static OdfStyleProperty TextareaHorizontalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "textarea-horizontal-align"));
+
+	public final static OdfStyleProperty TextareaVerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "textarea-vertical-align"));
+
+	public final static OdfStyleProperty TileRepeatOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "tile-repeat-offset"));
+
+	public final static OdfStyleProperty Unit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "unit"));
+
+	public final static OdfStyleProperty VisibleAreaHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-height"));
+
+	public final static OdfStyleProperty VisibleAreaLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-left"));
+
+	public final static OdfStyleProperty VisibleAreaTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-top"));
+
+	public final static OdfStyleProperty VisibleAreaWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-width"));
+
+	public final static OdfStyleProperty WrapInfluenceOnPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "wrap-influence-on-position"));
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+
+	public final static OdfStyleProperty Clip =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "clip"));
+
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+
+	public final static OdfStyleProperty MaxHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "max-height"));
+
+	public final static OdfStyleProperty MaxWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "max-width"));
+
+	public final static OdfStyleProperty MinHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "min-height"));
+
+	public final static OdfStyleProperty MinWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "min-width"));
+
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+
+	public final static OdfStyleProperty WrapOption =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "wrap-option"));
+
+	public final static OdfStyleProperty BackgroundTransparency =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "background-transparency"));
+
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+
+	public final static OdfStyleProperty Editable =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "editable"));
+
+	public final static OdfStyleProperty FlowWithText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "flow-with-text"));
+
+	public final static OdfStyleProperty HorizontalPos =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "horizontal-pos"));
+
+	public final static OdfStyleProperty HorizontalRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "horizontal-rel"));
+
+	public final static OdfStyleProperty Mirror =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "mirror"));
+
+	public final static OdfStyleProperty NumberWrappedParagraphs =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "number-wrapped-paragraphs"));
+
+	public final static OdfStyleProperty OverflowBehavior =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "overflow-behavior"));
+
+	public final static OdfStyleProperty PrintContent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-content"));
+
+	public final static OdfStyleProperty Protect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "protect"));
+
+	public final static OdfStyleProperty RelHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-height"));
+
+	public final static OdfStyleProperty RelWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-width"));
+
+	public final static OdfStyleProperty Repeat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "repeat"));
+
+	public final static OdfStyleProperty RunThrough =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "run-through"));
+
+	public final static OdfStyleProperty StyleShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+
+	public final static OdfStyleProperty ShrinkToFit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shrink-to-fit"));
+
+	public final static OdfStyleProperty VerticalPos =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-pos"));
+
+	public final static OdfStyleProperty VerticalRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-rel"));
+
+	public final static OdfStyleProperty Wrap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap"));
+
+	public final static OdfStyleProperty WrapContour =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-contour"));
+
+	public final static OdfStyleProperty WrapContourMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-contour-mode"));
+
+	public final static OdfStyleProperty WrapDynamicThreshold =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-dynamic-threshold"));
+
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+
+	public final static OdfStyleProperty FillRule =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "fill-rule"));
+
+	public final static OdfStyleProperty Height =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "height"));
+
+	public final static OdfStyleProperty StrokeColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-color"));
+
+	public final static OdfStyleProperty StrokeLinecap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-linecap"));
+
+	public final static OdfStyleProperty StrokeOpacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-opacity"));
+
+	public final static OdfStyleProperty StrokeWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-width"));
+
+	public final static OdfStyleProperty Width =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "width"));
+
+	public final static OdfStyleProperty X =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "x"));
+
+	public final static OdfStyleProperty Y =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "y"));
+
+	public final static OdfStyleProperty AnchorPageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "anchor-page-number"));
+
+	public final static OdfStyleProperty AnchorType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "anchor-type"));
+
+	public final static OdfStyleProperty Animation =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation"));
+
+	public final static OdfStyleProperty AnimationDelay =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-delay"));
+
+	public final static OdfStyleProperty AnimationDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-direction"));
+
+	public final static OdfStyleProperty AnimationRepeat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-repeat"));
+
+	public final static OdfStyleProperty AnimationStartInside =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-start-inside"));
+
+	public final static OdfStyleProperty AnimationSteps =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-steps"));
+
+	public final static OdfStyleProperty AnimationStopInside =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-stop-inside"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dAmbientColorAttribute</code> , See {@odf.attribute dr3d:ambient-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dAmbientColorAttribute() {
+		Dr3dAmbientColorAttribute attr = (Dr3dAmbientColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "ambient-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dAmbientColorAttribute</code> , See {@odf.attribute dr3d:ambient-color}
+	 *
+	 * @param dr3dAmbientColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dAmbientColorAttribute(String dr3dAmbientColorValue) {
+		Dr3dAmbientColorAttribute attr = new Dr3dAmbientColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dAmbientColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dBackScaleAttribute</code> , See {@odf.attribute dr3d:back-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dBackScaleAttribute() {
+		Dr3dBackScaleAttribute attr = (Dr3dBackScaleAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "back-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dBackScaleAttribute</code> , See {@odf.attribute dr3d:back-scale}
+	 *
+	 * @param dr3dBackScaleValue   The type is <code>String</code>
+	 */
+	public void setDr3dBackScaleAttribute(String dr3dBackScaleValue) {
+		Dr3dBackScaleAttribute attr = new Dr3dBackScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dBackScaleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dBackfaceCullingAttribute</code> , See {@odf.attribute dr3d:backface-culling}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dBackfaceCullingAttribute() {
+		Dr3dBackfaceCullingAttribute attr = (Dr3dBackfaceCullingAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "backface-culling");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dBackfaceCullingAttribute</code> , See {@odf.attribute dr3d:backface-culling}
+	 *
+	 * @param dr3dBackfaceCullingValue   The type is <code>String</code>
+	 */
+	public void setDr3dBackfaceCullingAttribute(String dr3dBackfaceCullingValue) {
+		Dr3dBackfaceCullingAttribute attr = new Dr3dBackfaceCullingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dBackfaceCullingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dCloseBackAttribute</code> , See {@odf.attribute dr3d:close-back}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDr3dCloseBackAttribute() {
+		Dr3dCloseBackAttribute attr = (Dr3dCloseBackAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "close-back");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dCloseBackAttribute</code> , See {@odf.attribute dr3d:close-back}
+	 *
+	 * @param dr3dCloseBackValue   The type is <code>Boolean</code>
+	 */
+	public void setDr3dCloseBackAttribute(Boolean dr3dCloseBackValue) {
+		Dr3dCloseBackAttribute attr = new Dr3dCloseBackAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dr3dCloseBackValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dCloseFrontAttribute</code> , See {@odf.attribute dr3d:close-front}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDr3dCloseFrontAttribute() {
+		Dr3dCloseFrontAttribute attr = (Dr3dCloseFrontAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "close-front");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dCloseFrontAttribute</code> , See {@odf.attribute dr3d:close-front}
+	 *
+	 * @param dr3dCloseFrontValue   The type is <code>Boolean</code>
+	 */
+	public void setDr3dCloseFrontAttribute(Boolean dr3dCloseFrontValue) {
+		Dr3dCloseFrontAttribute attr = new Dr3dCloseFrontAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(dr3dCloseFrontValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dDepthAttribute</code> , See {@odf.attribute dr3d:depth}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dDepthAttribute() {
+		Dr3dDepthAttribute attr = (Dr3dDepthAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "depth");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dDepthAttribute</code> , See {@odf.attribute dr3d:depth}
+	 *
+	 * @param dr3dDepthValue   The type is <code>String</code>
+	 */
+	public void setDr3dDepthAttribute(String dr3dDepthValue) {
+		Dr3dDepthAttribute attr = new Dr3dDepthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dDepthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dDiffuseColorAttribute</code> , See {@odf.attribute dr3d:diffuse-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dDiffuseColorAttribute() {
+		Dr3dDiffuseColorAttribute attr = (Dr3dDiffuseColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "diffuse-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dDiffuseColorAttribute</code> , See {@odf.attribute dr3d:diffuse-color}
+	 *
+	 * @param dr3dDiffuseColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dDiffuseColorAttribute(String dr3dDiffuseColorValue) {
+		Dr3dDiffuseColorAttribute attr = new Dr3dDiffuseColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dDiffuseColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dEdgeRoundingAttribute</code> , See {@odf.attribute dr3d:edge-rounding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dEdgeRoundingAttribute() {
+		Dr3dEdgeRoundingAttribute attr = (Dr3dEdgeRoundingAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "edge-rounding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dEdgeRoundingAttribute</code> , See {@odf.attribute dr3d:edge-rounding}
+	 *
+	 * @param dr3dEdgeRoundingValue   The type is <code>String</code>
+	 */
+	public void setDr3dEdgeRoundingAttribute(String dr3dEdgeRoundingValue) {
+		Dr3dEdgeRoundingAttribute attr = new Dr3dEdgeRoundingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dEdgeRoundingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dEdgeRoundingModeAttribute</code> , See {@odf.attribute dr3d:edge-rounding-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dEdgeRoundingModeAttribute() {
+		Dr3dEdgeRoundingModeAttribute attr = (Dr3dEdgeRoundingModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "edge-rounding-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dEdgeRoundingModeAttribute</code> , See {@odf.attribute dr3d:edge-rounding-mode}
+	 *
+	 * @param dr3dEdgeRoundingModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dEdgeRoundingModeAttribute(String dr3dEdgeRoundingModeValue) {
+		Dr3dEdgeRoundingModeAttribute attr = new Dr3dEdgeRoundingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dEdgeRoundingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dEmissiveColorAttribute</code> , See {@odf.attribute dr3d:emissive-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dEmissiveColorAttribute() {
+		Dr3dEmissiveColorAttribute attr = (Dr3dEmissiveColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "emissive-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dEmissiveColorAttribute</code> , See {@odf.attribute dr3d:emissive-color}
+	 *
+	 * @param dr3dEmissiveColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dEmissiveColorAttribute(String dr3dEmissiveColorValue) {
+		Dr3dEmissiveColorAttribute attr = new Dr3dEmissiveColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dEmissiveColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dEndAngleAttribute</code> , See {@odf.attribute dr3d:end-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dEndAngleAttribute() {
+		Dr3dEndAngleAttribute attr = (Dr3dEndAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "end-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dEndAngleAttribute</code> , See {@odf.attribute dr3d:end-angle}
+	 *
+	 * @param dr3dEndAngleValue   The type is <code>String</code>
+	 */
+	public void setDr3dEndAngleAttribute(String dr3dEndAngleValue) {
+		Dr3dEndAngleAttribute attr = new Dr3dEndAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dEndAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dHorizontalSegmentsAttribute</code> , See {@odf.attribute dr3d:horizontal-segments}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDr3dHorizontalSegmentsAttribute() {
+		Dr3dHorizontalSegmentsAttribute attr = (Dr3dHorizontalSegmentsAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "horizontal-segments");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dHorizontalSegmentsAttribute</code> , See {@odf.attribute dr3d:horizontal-segments}
+	 *
+	 * @param dr3dHorizontalSegmentsValue   The type is <code>Integer</code>
+	 */
+	public void setDr3dHorizontalSegmentsAttribute(Integer dr3dHorizontalSegmentsValue) {
+		Dr3dHorizontalSegmentsAttribute attr = new Dr3dHorizontalSegmentsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dr3dHorizontalSegmentsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dLightingModeAttribute</code> , See {@odf.attribute dr3d:lighting-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dLightingModeAttribute() {
+		Dr3dLightingModeAttribute attr = (Dr3dLightingModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "lighting-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dLightingModeAttribute</code> , See {@odf.attribute dr3d:lighting-mode}
+	 *
+	 * @param dr3dLightingModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dLightingModeAttribute(String dr3dLightingModeValue) {
+		Dr3dLightingModeAttribute attr = new Dr3dLightingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dLightingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dNormalsDirectionAttribute</code> , See {@odf.attribute dr3d:normals-direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dNormalsDirectionAttribute() {
+		Dr3dNormalsDirectionAttribute attr = (Dr3dNormalsDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "normals-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dNormalsDirectionAttribute</code> , See {@odf.attribute dr3d:normals-direction}
+	 *
+	 * @param dr3dNormalsDirectionValue   The type is <code>String</code>
+	 */
+	public void setDr3dNormalsDirectionAttribute(String dr3dNormalsDirectionValue) {
+		Dr3dNormalsDirectionAttribute attr = new Dr3dNormalsDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dNormalsDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dNormalsKindAttribute</code> , See {@odf.attribute dr3d:normals-kind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dNormalsKindAttribute() {
+		Dr3dNormalsKindAttribute attr = (Dr3dNormalsKindAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "normals-kind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dNormalsKindAttribute</code> , See {@odf.attribute dr3d:normals-kind}
+	 *
+	 * @param dr3dNormalsKindValue   The type is <code>String</code>
+	 */
+	public void setDr3dNormalsKindAttribute(String dr3dNormalsKindValue) {
+		Dr3dNormalsKindAttribute attr = new Dr3dNormalsKindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dNormalsKindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShadowAttribute</code> , See {@odf.attribute dr3d:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShadowAttribute() {
+		Dr3dShadowAttribute attr = (Dr3dShadowAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShadowAttribute</code> , See {@odf.attribute dr3d:shadow}
+	 *
+	 * @param dr3dShadowValue   The type is <code>String</code>
+	 */
+	public void setDr3dShadowAttribute(String dr3dShadowValue) {
+		Dr3dShadowAttribute attr = new Dr3dShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dShininessAttribute</code> , See {@odf.attribute dr3d:shininess}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dShininessAttribute() {
+		Dr3dShininessAttribute attr = (Dr3dShininessAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "shininess");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dShininessAttribute</code> , See {@odf.attribute dr3d:shininess}
+	 *
+	 * @param dr3dShininessValue   The type is <code>String</code>
+	 */
+	public void setDr3dShininessAttribute(String dr3dShininessValue) {
+		Dr3dShininessAttribute attr = new Dr3dShininessAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dShininessValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dSpecularColorAttribute</code> , See {@odf.attribute dr3d:specular-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dSpecularColorAttribute() {
+		Dr3dSpecularColorAttribute attr = (Dr3dSpecularColorAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "specular-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dSpecularColorAttribute</code> , See {@odf.attribute dr3d:specular-color}
+	 *
+	 * @param dr3dSpecularColorValue   The type is <code>String</code>
+	 */
+	public void setDr3dSpecularColorAttribute(String dr3dSpecularColorValue) {
+		Dr3dSpecularColorAttribute attr = new Dr3dSpecularColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dSpecularColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTextureFilterAttribute</code> , See {@odf.attribute dr3d:texture-filter}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTextureFilterAttribute() {
+		Dr3dTextureFilterAttribute attr = (Dr3dTextureFilterAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "texture-filter");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTextureFilterAttribute</code> , See {@odf.attribute dr3d:texture-filter}
+	 *
+	 * @param dr3dTextureFilterValue   The type is <code>String</code>
+	 */
+	public void setDr3dTextureFilterAttribute(String dr3dTextureFilterValue) {
+		Dr3dTextureFilterAttribute attr = new Dr3dTextureFilterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTextureFilterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTextureGenerationModeXAttribute</code> , See {@odf.attribute dr3d:texture-generation-mode-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTextureGenerationModeXAttribute() {
+		Dr3dTextureGenerationModeXAttribute attr = (Dr3dTextureGenerationModeXAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "texture-generation-mode-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTextureGenerationModeXAttribute</code> , See {@odf.attribute dr3d:texture-generation-mode-x}
+	 *
+	 * @param dr3dTextureGenerationModeXValue   The type is <code>String</code>
+	 */
+	public void setDr3dTextureGenerationModeXAttribute(String dr3dTextureGenerationModeXValue) {
+		Dr3dTextureGenerationModeXAttribute attr = new Dr3dTextureGenerationModeXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTextureGenerationModeXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTextureGenerationModeYAttribute</code> , See {@odf.attribute dr3d:texture-generation-mode-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTextureGenerationModeYAttribute() {
+		Dr3dTextureGenerationModeYAttribute attr = (Dr3dTextureGenerationModeYAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "texture-generation-mode-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTextureGenerationModeYAttribute</code> , See {@odf.attribute dr3d:texture-generation-mode-y}
+	 *
+	 * @param dr3dTextureGenerationModeYValue   The type is <code>String</code>
+	 */
+	public void setDr3dTextureGenerationModeYAttribute(String dr3dTextureGenerationModeYValue) {
+		Dr3dTextureGenerationModeYAttribute attr = new Dr3dTextureGenerationModeYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTextureGenerationModeYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTextureKindAttribute</code> , See {@odf.attribute dr3d:texture-kind}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTextureKindAttribute() {
+		Dr3dTextureKindAttribute attr = (Dr3dTextureKindAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "texture-kind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTextureKindAttribute</code> , See {@odf.attribute dr3d:texture-kind}
+	 *
+	 * @param dr3dTextureKindValue   The type is <code>String</code>
+	 */
+	public void setDr3dTextureKindAttribute(String dr3dTextureKindValue) {
+		Dr3dTextureKindAttribute attr = new Dr3dTextureKindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTextureKindValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dTextureModeAttribute</code> , See {@odf.attribute dr3d:texture-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDr3dTextureModeAttribute() {
+		Dr3dTextureModeAttribute attr = (Dr3dTextureModeAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "texture-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dTextureModeAttribute</code> , See {@odf.attribute dr3d:texture-mode}
+	 *
+	 * @param dr3dTextureModeValue   The type is <code>String</code>
+	 */
+	public void setDr3dTextureModeAttribute(String dr3dTextureModeValue) {
+		Dr3dTextureModeAttribute attr = new Dr3dTextureModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(dr3dTextureModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>Dr3dVerticalSegmentsAttribute</code> , See {@odf.attribute dr3d:vertical-segments}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDr3dVerticalSegmentsAttribute() {
+		Dr3dVerticalSegmentsAttribute attr = (Dr3dVerticalSegmentsAttribute) getOdfAttribute(OdfDocumentNamespace.DR3D, "vertical-segments");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>Dr3dVerticalSegmentsAttribute</code> , See {@odf.attribute dr3d:vertical-segments}
+	 *
+	 * @param dr3dVerticalSegmentsValue   The type is <code>Integer</code>
+	 */
+	public void setDr3dVerticalSegmentsAttribute(Integer dr3dVerticalSegmentsValue) {
+		Dr3dVerticalSegmentsAttribute attr = new Dr3dVerticalSegmentsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(dr3dVerticalSegmentsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawAutoGrowHeightAttribute</code> , See {@odf.attribute draw:auto-grow-height}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawAutoGrowHeightAttribute() {
+		DrawAutoGrowHeightAttribute attr = (DrawAutoGrowHeightAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "auto-grow-height");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawAutoGrowHeightAttribute</code> , See {@odf.attribute draw:auto-grow-height}
+	 *
+	 * @param drawAutoGrowHeightValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawAutoGrowHeightAttribute(Boolean drawAutoGrowHeightValue) {
+		DrawAutoGrowHeightAttribute attr = new DrawAutoGrowHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawAutoGrowHeightValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawAutoGrowWidthAttribute</code> , See {@odf.attribute draw:auto-grow-width}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawAutoGrowWidthAttribute() {
+		DrawAutoGrowWidthAttribute attr = (DrawAutoGrowWidthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "auto-grow-width");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawAutoGrowWidthAttribute</code> , See {@odf.attribute draw:auto-grow-width}
+	 *
+	 * @param drawAutoGrowWidthValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawAutoGrowWidthAttribute(Boolean drawAutoGrowWidthValue) {
+		DrawAutoGrowWidthAttribute attr = new DrawAutoGrowWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawAutoGrowWidthValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawBlueAttribute</code> , See {@odf.attribute draw:blue}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawBlueAttribute() {
+		DrawBlueAttribute attr = (DrawBlueAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "blue");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawBlueAttribute</code> , See {@odf.attribute draw:blue}
+	 *
+	 * @param drawBlueValue   The type is <code>String</code>
+	 */
+	public void setDrawBlueAttribute(String drawBlueValue) {
+		DrawBlueAttribute attr = new DrawBlueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawBlueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionAngleAttribute</code> , See {@odf.attribute draw:caption-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionAngleAttribute() {
+		DrawCaptionAngleAttribute attr = (DrawCaptionAngleAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionAngleAttribute</code> , See {@odf.attribute draw:caption-angle}
+	 *
+	 * @param drawCaptionAngleValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionAngleAttribute(String drawCaptionAngleValue) {
+		DrawCaptionAngleAttribute attr = new DrawCaptionAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionAngleTypeAttribute</code> , See {@odf.attribute draw:caption-angle-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionAngleTypeAttribute() {
+		DrawCaptionAngleTypeAttribute attr = (DrawCaptionAngleTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-angle-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionAngleTypeAttribute</code> , See {@odf.attribute draw:caption-angle-type}
+	 *
+	 * @param drawCaptionAngleTypeValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionAngleTypeAttribute(String drawCaptionAngleTypeValue) {
+		DrawCaptionAngleTypeAttribute attr = new DrawCaptionAngleTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionAngleTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionEscapeAttribute</code> , See {@odf.attribute draw:caption-escape}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionEscapeAttribute() {
+		DrawCaptionEscapeAttribute attr = (DrawCaptionEscapeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-escape");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionEscapeAttribute</code> , See {@odf.attribute draw:caption-escape}
+	 *
+	 * @param drawCaptionEscapeValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionEscapeAttribute(String drawCaptionEscapeValue) {
+		DrawCaptionEscapeAttribute attr = new DrawCaptionEscapeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionEscapeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionEscapeDirectionAttribute</code> , See {@odf.attribute draw:caption-escape-direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionEscapeDirectionAttribute() {
+		DrawCaptionEscapeDirectionAttribute attr = (DrawCaptionEscapeDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-escape-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionEscapeDirectionAttribute</code> , See {@odf.attribute draw:caption-escape-direction}
+	 *
+	 * @param drawCaptionEscapeDirectionValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionEscapeDirectionAttribute(String drawCaptionEscapeDirectionValue) {
+		DrawCaptionEscapeDirectionAttribute attr = new DrawCaptionEscapeDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionEscapeDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionFitLineLengthAttribute</code> , See {@odf.attribute draw:caption-fit-line-length}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawCaptionFitLineLengthAttribute() {
+		DrawCaptionFitLineLengthAttribute attr = (DrawCaptionFitLineLengthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-fit-line-length");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionFitLineLengthAttribute</code> , See {@odf.attribute draw:caption-fit-line-length}
+	 *
+	 * @param drawCaptionFitLineLengthValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawCaptionFitLineLengthAttribute(Boolean drawCaptionFitLineLengthValue) {
+		DrawCaptionFitLineLengthAttribute attr = new DrawCaptionFitLineLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawCaptionFitLineLengthValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionGapAttribute</code> , See {@odf.attribute draw:caption-gap}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionGapAttribute() {
+		DrawCaptionGapAttribute attr = (DrawCaptionGapAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-gap");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionGapAttribute</code> , See {@odf.attribute draw:caption-gap}
+	 *
+	 * @param drawCaptionGapValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionGapAttribute(String drawCaptionGapValue) {
+		DrawCaptionGapAttribute attr = new DrawCaptionGapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionGapValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionLineLengthAttribute</code> , See {@odf.attribute draw:caption-line-length}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionLineLengthAttribute() {
+		DrawCaptionLineLengthAttribute attr = (DrawCaptionLineLengthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-line-length");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionLineLengthAttribute</code> , See {@odf.attribute draw:caption-line-length}
+	 *
+	 * @param drawCaptionLineLengthValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionLineLengthAttribute(String drawCaptionLineLengthValue) {
+		DrawCaptionLineLengthAttribute attr = new DrawCaptionLineLengthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionLineLengthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawCaptionTypeAttribute</code> , See {@odf.attribute draw:caption-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawCaptionTypeAttribute() {
+		DrawCaptionTypeAttribute attr = (DrawCaptionTypeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "caption-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawCaptionTypeAttribute</code> , See {@odf.attribute draw:caption-type}
+	 *
+	 * @param drawCaptionTypeValue   The type is <code>String</code>
+	 */
+	public void setDrawCaptionTypeAttribute(String drawCaptionTypeValue) {
+		DrawCaptionTypeAttribute attr = new DrawCaptionTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawCaptionTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawColorInversionAttribute</code> , See {@odf.attribute draw:color-inversion}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawColorInversionAttribute() {
+		DrawColorInversionAttribute attr = (DrawColorInversionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "color-inversion");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawColorInversionAttribute</code> , See {@odf.attribute draw:color-inversion}
+	 *
+	 * @param drawColorInversionValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawColorInversionAttribute(Boolean drawColorInversionValue) {
+		DrawColorInversionAttribute attr = new DrawColorInversionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawColorInversionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawColorModeAttribute</code> , See {@odf.attribute draw:color-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawColorModeAttribute() {
+		DrawColorModeAttribute attr = (DrawColorModeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "color-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawColorModeAttribute</code> , See {@odf.attribute draw:color-mode}
+	 *
+	 * @param drawColorModeValue   The type is <code>String</code>
+	 */
+	public void setDrawColorModeAttribute(String drawColorModeValue) {
+		DrawColorModeAttribute attr = new DrawColorModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawColorModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawContrastAttribute</code> , See {@odf.attribute draw:contrast}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawContrastAttribute() {
+		DrawContrastAttribute attr = (DrawContrastAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "contrast");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawContrastAttribute</code> , See {@odf.attribute draw:contrast}
+	 *
+	 * @param drawContrastValue   The type is <code>String</code>
+	 */
+	public void setDrawContrastAttribute(String drawContrastValue) {
+		DrawContrastAttribute attr = new DrawContrastAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawContrastValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDecimalPlacesAttribute</code> , See {@odf.attribute draw:decimal-places}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawDecimalPlacesAttribute() {
+		DrawDecimalPlacesAttribute attr = (DrawDecimalPlacesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "decimal-places");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDecimalPlacesAttribute</code> , See {@odf.attribute draw:decimal-places}
+	 *
+	 * @param drawDecimalPlacesValue   The type is <code>Integer</code>
+	 */
+	public void setDrawDecimalPlacesAttribute(Integer drawDecimalPlacesValue) {
+		DrawDecimalPlacesAttribute attr = new DrawDecimalPlacesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawDecimalPlacesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDrawAspectAttribute</code> , See {@odf.attribute draw:draw-aspect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDrawAspectAttribute() {
+		DrawDrawAspectAttribute attr = (DrawDrawAspectAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "draw-aspect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDrawAspectAttribute</code> , See {@odf.attribute draw:draw-aspect}
+	 *
+	 * @param drawDrawAspectValue   The type is <code>String</code>
+	 */
+	public void setDrawDrawAspectAttribute(String drawDrawAspectValue) {
+		DrawDrawAspectAttribute attr = new DrawDrawAspectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDrawAspectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndGuideAttribute</code> , See {@odf.attribute draw:end-guide}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndGuideAttribute() {
+		DrawEndGuideAttribute attr = (DrawEndGuideAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-guide");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndGuideAttribute</code> , See {@odf.attribute draw:end-guide}
+	 *
+	 * @param drawEndGuideValue   The type is <code>String</code>
+	 */
+	public void setDrawEndGuideAttribute(String drawEndGuideValue) {
+		DrawEndGuideAttribute attr = new DrawEndGuideAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndGuideValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndLineSpacingHorizontalAttribute</code> , See {@odf.attribute draw:end-line-spacing-horizontal}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndLineSpacingHorizontalAttribute() {
+		DrawEndLineSpacingHorizontalAttribute attr = (DrawEndLineSpacingHorizontalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-line-spacing-horizontal");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndLineSpacingHorizontalAttribute</code> , See {@odf.attribute draw:end-line-spacing-horizontal}
+	 *
+	 * @param drawEndLineSpacingHorizontalValue   The type is <code>String</code>
+	 */
+	public void setDrawEndLineSpacingHorizontalAttribute(String drawEndLineSpacingHorizontalValue) {
+		DrawEndLineSpacingHorizontalAttribute attr = new DrawEndLineSpacingHorizontalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndLineSpacingHorizontalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawEndLineSpacingVerticalAttribute</code> , See {@odf.attribute draw:end-line-spacing-vertical}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawEndLineSpacingVerticalAttribute() {
+		DrawEndLineSpacingVerticalAttribute attr = (DrawEndLineSpacingVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "end-line-spacing-vertical");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawEndLineSpacingVerticalAttribute</code> , See {@odf.attribute draw:end-line-spacing-vertical}
+	 *
+	 * @param drawEndLineSpacingVerticalValue   The type is <code>String</code>
+	 */
+	public void setDrawEndLineSpacingVerticalAttribute(String drawEndLineSpacingVerticalValue) {
+		DrawEndLineSpacingVerticalAttribute attr = new DrawEndLineSpacingVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawEndLineSpacingVerticalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillAttribute</code> , See {@odf.attribute draw:fill}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillAttribute() {
+		DrawFillAttribute attr = (DrawFillAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillAttribute</code> , See {@odf.attribute draw:fill}
+	 *
+	 * @param drawFillValue   The type is <code>String</code>
+	 */
+	public void setDrawFillAttribute(String drawFillValue) {
+		DrawFillAttribute attr = new DrawFillAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillColorAttribute</code> , See {@odf.attribute draw:fill-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillColorAttribute() {
+		DrawFillColorAttribute attr = (DrawFillColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillColorAttribute</code> , See {@odf.attribute draw:fill-color}
+	 *
+	 * @param drawFillColorValue   The type is <code>String</code>
+	 */
+	public void setDrawFillColorAttribute(String drawFillColorValue) {
+		DrawFillColorAttribute attr = new DrawFillColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillGradientNameAttribute</code> , See {@odf.attribute draw:fill-gradient-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillGradientNameAttribute() {
+		DrawFillGradientNameAttribute attr = (DrawFillGradientNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-gradient-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillGradientNameAttribute</code> , See {@odf.attribute draw:fill-gradient-name}
+	 *
+	 * @param drawFillGradientNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFillGradientNameAttribute(String drawFillGradientNameValue) {
+		DrawFillGradientNameAttribute attr = new DrawFillGradientNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillGradientNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillHatchNameAttribute</code> , See {@odf.attribute draw:fill-hatch-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillHatchNameAttribute() {
+		DrawFillHatchNameAttribute attr = (DrawFillHatchNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-hatch-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillHatchNameAttribute</code> , See {@odf.attribute draw:fill-hatch-name}
+	 *
+	 * @param drawFillHatchNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFillHatchNameAttribute(String drawFillHatchNameValue) {
+		DrawFillHatchNameAttribute attr = new DrawFillHatchNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillHatchNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillHatchSolidAttribute</code> , See {@odf.attribute draw:fill-hatch-solid}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawFillHatchSolidAttribute() {
+		DrawFillHatchSolidAttribute attr = (DrawFillHatchSolidAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-hatch-solid");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillHatchSolidAttribute</code> , See {@odf.attribute draw:fill-hatch-solid}
+	 *
+	 * @param drawFillHatchSolidValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawFillHatchSolidAttribute(Boolean drawFillHatchSolidValue) {
+		DrawFillHatchSolidAttribute attr = new DrawFillHatchSolidAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawFillHatchSolidValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageHeightAttribute</code> , See {@odf.attribute draw:fill-image-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageHeightAttribute() {
+		DrawFillImageHeightAttribute attr = (DrawFillImageHeightAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageHeightAttribute</code> , See {@odf.attribute draw:fill-image-height}
+	 *
+	 * @param drawFillImageHeightValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageHeightAttribute(String drawFillImageHeightValue) {
+		DrawFillImageHeightAttribute attr = new DrawFillImageHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageNameAttribute</code> , See {@odf.attribute draw:fill-image-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageNameAttribute() {
+		DrawFillImageNameAttribute attr = (DrawFillImageNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageNameAttribute</code> , See {@odf.attribute draw:fill-image-name}
+	 *
+	 * @param drawFillImageNameValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageNameAttribute(String drawFillImageNameValue) {
+		DrawFillImageNameAttribute attr = new DrawFillImageNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageRefPointAttribute</code> , See {@odf.attribute draw:fill-image-ref-point}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageRefPointAttribute() {
+		DrawFillImageRefPointAttribute attr = (DrawFillImageRefPointAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-ref-point");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageRefPointAttribute</code> , See {@odf.attribute draw:fill-image-ref-point}
+	 *
+	 * @param drawFillImageRefPointValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageRefPointAttribute(String drawFillImageRefPointValue) {
+		DrawFillImageRefPointAttribute attr = new DrawFillImageRefPointAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageRefPointValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageRefPointXAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageRefPointXAttribute() {
+		DrawFillImageRefPointXAttribute attr = (DrawFillImageRefPointXAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageRefPointXAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-x}
+	 *
+	 * @param drawFillImageRefPointXValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageRefPointXAttribute(String drawFillImageRefPointXValue) {
+		DrawFillImageRefPointXAttribute attr = new DrawFillImageRefPointXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageRefPointXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageRefPointYAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageRefPointYAttribute() {
+		DrawFillImageRefPointYAttribute attr = (DrawFillImageRefPointYAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageRefPointYAttribute</code> , See {@odf.attribute draw:fill-image-ref-point-y}
+	 *
+	 * @param drawFillImageRefPointYValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageRefPointYAttribute(String drawFillImageRefPointYValue) {
+		DrawFillImageRefPointYAttribute attr = new DrawFillImageRefPointYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageRefPointYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFillImageWidthAttribute</code> , See {@odf.attribute draw:fill-image-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFillImageWidthAttribute() {
+		DrawFillImageWidthAttribute attr = (DrawFillImageWidthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fill-image-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFillImageWidthAttribute</code> , See {@odf.attribute draw:fill-image-width}
+	 *
+	 * @param drawFillImageWidthValue   The type is <code>String</code>
+	 */
+	public void setDrawFillImageWidthAttribute(String drawFillImageWidthValue) {
+		DrawFillImageWidthAttribute attr = new DrawFillImageWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFillImageWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFitToContourAttribute</code> , See {@odf.attribute draw:fit-to-contour}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawFitToContourAttribute() {
+		DrawFitToContourAttribute attr = (DrawFitToContourAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fit-to-contour");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFitToContourAttribute</code> , See {@odf.attribute draw:fit-to-contour}
+	 *
+	 * @param drawFitToContourValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawFitToContourAttribute(Boolean drawFitToContourValue) {
+		DrawFitToContourAttribute attr = new DrawFitToContourAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawFitToContourValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFitToSizeAttribute</code> , See {@odf.attribute draw:fit-to-size}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawFitToSizeAttribute() {
+		DrawFitToSizeAttribute attr = (DrawFitToSizeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "fit-to-size");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFitToSizeAttribute</code> , See {@odf.attribute draw:fit-to-size}
+	 *
+	 * @param drawFitToSizeValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawFitToSizeAttribute(Boolean drawFitToSizeValue) {
+		DrawFitToSizeAttribute attr = new DrawFitToSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawFitToSizeValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFrameDisplayBorderAttribute</code> , See {@odf.attribute draw:frame-display-border}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawFrameDisplayBorderAttribute() {
+		DrawFrameDisplayBorderAttribute attr = (DrawFrameDisplayBorderAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "frame-display-border");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFrameDisplayBorderAttribute</code> , See {@odf.attribute draw:frame-display-border}
+	 *
+	 * @param drawFrameDisplayBorderValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawFrameDisplayBorderAttribute(Boolean drawFrameDisplayBorderValue) {
+		DrawFrameDisplayBorderAttribute attr = new DrawFrameDisplayBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawFrameDisplayBorderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFrameDisplayScrollbarAttribute</code> , See {@odf.attribute draw:frame-display-scrollbar}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawFrameDisplayScrollbarAttribute() {
+		DrawFrameDisplayScrollbarAttribute attr = (DrawFrameDisplayScrollbarAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "frame-display-scrollbar");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFrameDisplayScrollbarAttribute</code> , See {@odf.attribute draw:frame-display-scrollbar}
+	 *
+	 * @param drawFrameDisplayScrollbarValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawFrameDisplayScrollbarAttribute(Boolean drawFrameDisplayScrollbarValue) {
+		DrawFrameDisplayScrollbarAttribute attr = new DrawFrameDisplayScrollbarAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawFrameDisplayScrollbarValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFrameMarginHorizontalAttribute</code> , See {@odf.attribute draw:frame-margin-horizontal}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFrameMarginHorizontalAttribute() {
+		DrawFrameMarginHorizontalAttribute attr = (DrawFrameMarginHorizontalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "frame-margin-horizontal");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFrameMarginHorizontalAttribute</code> , See {@odf.attribute draw:frame-margin-horizontal}
+	 *
+	 * @param drawFrameMarginHorizontalValue   The type is <code>String</code>
+	 */
+	public void setDrawFrameMarginHorizontalAttribute(String drawFrameMarginHorizontalValue) {
+		DrawFrameMarginHorizontalAttribute attr = new DrawFrameMarginHorizontalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFrameMarginHorizontalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawFrameMarginVerticalAttribute</code> , See {@odf.attribute draw:frame-margin-vertical}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawFrameMarginVerticalAttribute() {
+		DrawFrameMarginVerticalAttribute attr = (DrawFrameMarginVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "frame-margin-vertical");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawFrameMarginVerticalAttribute</code> , See {@odf.attribute draw:frame-margin-vertical}
+	 *
+	 * @param drawFrameMarginVerticalValue   The type is <code>String</code>
+	 */
+	public void setDrawFrameMarginVerticalAttribute(String drawFrameMarginVerticalValue) {
+		DrawFrameMarginVerticalAttribute attr = new DrawFrameMarginVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawFrameMarginVerticalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGammaAttribute</code> , See {@odf.attribute draw:gamma}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGammaAttribute() {
+		DrawGammaAttribute attr = (DrawGammaAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "gamma");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGammaAttribute</code> , See {@odf.attribute draw:gamma}
+	 *
+	 * @param drawGammaValue   The type is <code>String</code>
+	 */
+	public void setDrawGammaAttribute(String drawGammaValue) {
+		DrawGammaAttribute attr = new DrawGammaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGammaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGradientStepCountAttribute</code> , See {@odf.attribute draw:gradient-step-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawGradientStepCountAttribute() {
+		DrawGradientStepCountAttribute attr = (DrawGradientStepCountAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "gradient-step-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGradientStepCountAttribute</code> , See {@odf.attribute draw:gradient-step-count}
+	 *
+	 * @param drawGradientStepCountValue   The type is <code>Integer</code>
+	 */
+	public void setDrawGradientStepCountAttribute(Integer drawGradientStepCountValue) {
+		DrawGradientStepCountAttribute attr = new DrawGradientStepCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawGradientStepCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGreenAttribute</code> , See {@odf.attribute draw:green}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGreenAttribute() {
+		DrawGreenAttribute attr = (DrawGreenAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "green");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGreenAttribute</code> , See {@odf.attribute draw:green}
+	 *
+	 * @param drawGreenValue   The type is <code>String</code>
+	 */
+	public void setDrawGreenAttribute(String drawGreenValue) {
+		DrawGreenAttribute attr = new DrawGreenAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGreenValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGuideDistanceAttribute</code> , See {@odf.attribute draw:guide-distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGuideDistanceAttribute() {
+		DrawGuideDistanceAttribute attr = (DrawGuideDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "guide-distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGuideDistanceAttribute</code> , See {@odf.attribute draw:guide-distance}
+	 *
+	 * @param drawGuideDistanceValue   The type is <code>String</code>
+	 */
+	public void setDrawGuideDistanceAttribute(String drawGuideDistanceValue) {
+		DrawGuideDistanceAttribute attr = new DrawGuideDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGuideDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawGuideOverhangAttribute</code> , See {@odf.attribute draw:guide-overhang}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawGuideOverhangAttribute() {
+		DrawGuideOverhangAttribute attr = (DrawGuideOverhangAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "guide-overhang");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawGuideOverhangAttribute</code> , See {@odf.attribute draw:guide-overhang}
+	 *
+	 * @param drawGuideOverhangValue   The type is <code>String</code>
+	 */
+	public void setDrawGuideOverhangAttribute(String drawGuideOverhangValue) {
+		DrawGuideOverhangAttribute attr = new DrawGuideOverhangAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawGuideOverhangValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawImageOpacityAttribute</code> , See {@odf.attribute draw:image-opacity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawImageOpacityAttribute() {
+		DrawImageOpacityAttribute attr = (DrawImageOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "image-opacity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawImageOpacityAttribute</code> , See {@odf.attribute draw:image-opacity}
+	 *
+	 * @param drawImageOpacityValue   The type is <code>String</code>
+	 */
+	public void setDrawImageOpacityAttribute(String drawImageOpacityValue) {
+		DrawImageOpacityAttribute attr = new DrawImageOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawImageOpacityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLineDistanceAttribute</code> , See {@odf.attribute draw:line-distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLineDistanceAttribute() {
+		DrawLineDistanceAttribute attr = (DrawLineDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "line-distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLineDistanceAttribute</code> , See {@odf.attribute draw:line-distance}
+	 *
+	 * @param drawLineDistanceValue   The type is <code>String</code>
+	 */
+	public void setDrawLineDistanceAttribute(String drawLineDistanceValue) {
+		DrawLineDistanceAttribute attr = new DrawLineDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLineDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawLuminanceAttribute</code> , See {@odf.attribute draw:luminance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawLuminanceAttribute() {
+		DrawLuminanceAttribute attr = (DrawLuminanceAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "luminance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawLuminanceAttribute</code> , See {@odf.attribute draw:luminance}
+	 *
+	 * @param drawLuminanceValue   The type is <code>String</code>
+	 */
+	public void setDrawLuminanceAttribute(String drawLuminanceValue) {
+		DrawLuminanceAttribute attr = new DrawLuminanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawLuminanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMarkerEndAttribute</code> , See {@odf.attribute draw:marker-end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMarkerEndAttribute() {
+		DrawMarkerEndAttribute attr = (DrawMarkerEndAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "marker-end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMarkerEndAttribute</code> , See {@odf.attribute draw:marker-end}
+	 *
+	 * @param drawMarkerEndValue   The type is <code>String</code>
+	 */
+	public void setDrawMarkerEndAttribute(String drawMarkerEndValue) {
+		DrawMarkerEndAttribute attr = new DrawMarkerEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMarkerEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMarkerEndCenterAttribute</code> , See {@odf.attribute draw:marker-end-center}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawMarkerEndCenterAttribute() {
+		DrawMarkerEndCenterAttribute attr = (DrawMarkerEndCenterAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "marker-end-center");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMarkerEndCenterAttribute</code> , See {@odf.attribute draw:marker-end-center}
+	 *
+	 * @param drawMarkerEndCenterValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawMarkerEndCenterAttribute(Boolean drawMarkerEndCenterValue) {
+		DrawMarkerEndCenterAttribute attr = new DrawMarkerEndCenterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawMarkerEndCenterValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMarkerEndWidthAttribute</code> , See {@odf.attribute draw:marker-end-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMarkerEndWidthAttribute() {
+		DrawMarkerEndWidthAttribute attr = (DrawMarkerEndWidthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "marker-end-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMarkerEndWidthAttribute</code> , See {@odf.attribute draw:marker-end-width}
+	 *
+	 * @param drawMarkerEndWidthValue   The type is <code>String</code>
+	 */
+	public void setDrawMarkerEndWidthAttribute(String drawMarkerEndWidthValue) {
+		DrawMarkerEndWidthAttribute attr = new DrawMarkerEndWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMarkerEndWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMarkerStartAttribute</code> , See {@odf.attribute draw:marker-start}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMarkerStartAttribute() {
+		DrawMarkerStartAttribute attr = (DrawMarkerStartAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "marker-start");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMarkerStartAttribute</code> , See {@odf.attribute draw:marker-start}
+	 *
+	 * @param drawMarkerStartValue   The type is <code>String</code>
+	 */
+	public void setDrawMarkerStartAttribute(String drawMarkerStartValue) {
+		DrawMarkerStartAttribute attr = new DrawMarkerStartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMarkerStartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMarkerStartCenterAttribute</code> , See {@odf.attribute draw:marker-start-center}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawMarkerStartCenterAttribute() {
+		DrawMarkerStartCenterAttribute attr = (DrawMarkerStartCenterAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "marker-start-center");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMarkerStartCenterAttribute</code> , See {@odf.attribute draw:marker-start-center}
+	 *
+	 * @param drawMarkerStartCenterValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawMarkerStartCenterAttribute(Boolean drawMarkerStartCenterValue) {
+		DrawMarkerStartCenterAttribute attr = new DrawMarkerStartCenterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawMarkerStartCenterValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMarkerStartWidthAttribute</code> , See {@odf.attribute draw:marker-start-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMarkerStartWidthAttribute() {
+		DrawMarkerStartWidthAttribute attr = (DrawMarkerStartWidthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "marker-start-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMarkerStartWidthAttribute</code> , See {@odf.attribute draw:marker-start-width}
+	 *
+	 * @param drawMarkerStartWidthValue   The type is <code>String</code>
+	 */
+	public void setDrawMarkerStartWidthAttribute(String drawMarkerStartWidthValue) {
+		DrawMarkerStartWidthAttribute attr = new DrawMarkerStartWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMarkerStartWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMeasureAlignAttribute</code> , See {@odf.attribute draw:measure-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMeasureAlignAttribute() {
+		DrawMeasureAlignAttribute attr = (DrawMeasureAlignAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "measure-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMeasureAlignAttribute</code> , See {@odf.attribute draw:measure-align}
+	 *
+	 * @param drawMeasureAlignValue   The type is <code>String</code>
+	 */
+	public void setDrawMeasureAlignAttribute(String drawMeasureAlignValue) {
+		DrawMeasureAlignAttribute attr = new DrawMeasureAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMeasureAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawMeasureVerticalAlignAttribute</code> , See {@odf.attribute draw:measure-vertical-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawMeasureVerticalAlignAttribute() {
+		DrawMeasureVerticalAlignAttribute attr = (DrawMeasureVerticalAlignAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "measure-vertical-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawMeasureVerticalAlignAttribute</code> , See {@odf.attribute draw:measure-vertical-align}
+	 *
+	 * @param drawMeasureVerticalAlignValue   The type is <code>String</code>
+	 */
+	public void setDrawMeasureVerticalAlignAttribute(String drawMeasureVerticalAlignValue) {
+		DrawMeasureVerticalAlignAttribute attr = new DrawMeasureVerticalAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawMeasureVerticalAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawOleDrawAspectAttribute</code> , See {@odf.attribute draw:ole-draw-aspect}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawOleDrawAspectAttribute() {
+		DrawOleDrawAspectAttribute attr = (DrawOleDrawAspectAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "ole-draw-aspect");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawOleDrawAspectAttribute</code> , See {@odf.attribute draw:ole-draw-aspect}
+	 *
+	 * @param drawOleDrawAspectValue   The type is <code>Integer</code>
+	 */
+	public void setDrawOleDrawAspectAttribute(Integer drawOleDrawAspectValue) {
+		DrawOleDrawAspectAttribute attr = new DrawOleDrawAspectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(drawOleDrawAspectValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawOpacityAttribute</code> , See {@odf.attribute draw:opacity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawOpacityAttribute() {
+		DrawOpacityAttribute attr = (DrawOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "opacity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawOpacityAttribute</code> , See {@odf.attribute draw:opacity}
+	 *
+	 * @param drawOpacityValue   The type is <code>String</code>
+	 */
+	public void setDrawOpacityAttribute(String drawOpacityValue) {
+		DrawOpacityAttribute attr = new DrawOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawOpacityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawOpacityNameAttribute</code> , See {@odf.attribute draw:opacity-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawOpacityNameAttribute() {
+		DrawOpacityNameAttribute attr = (DrawOpacityNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "opacity-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawOpacityNameAttribute</code> , See {@odf.attribute draw:opacity-name}
+	 *
+	 * @param drawOpacityNameValue   The type is <code>String</code>
+	 */
+	public void setDrawOpacityNameAttribute(String drawOpacityNameValue) {
+		DrawOpacityNameAttribute attr = new DrawOpacityNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawOpacityNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawParallelAttribute</code> , See {@odf.attribute draw:parallel}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawParallelAttribute() {
+		DrawParallelAttribute attr = (DrawParallelAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "parallel");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawParallelAttribute</code> , See {@odf.attribute draw:parallel}
+	 *
+	 * @param drawParallelValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawParallelAttribute(Boolean drawParallelValue) {
+		DrawParallelAttribute attr = new DrawParallelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawParallelValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawPlacingAttribute</code> , See {@odf.attribute draw:placing}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawPlacingAttribute() {
+		DrawPlacingAttribute attr = (DrawPlacingAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "placing");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawPlacingAttribute</code> , See {@odf.attribute draw:placing}
+	 *
+	 * @param drawPlacingValue   The type is <code>String</code>
+	 */
+	public void setDrawPlacingAttribute(String drawPlacingValue) {
+		DrawPlacingAttribute attr = new DrawPlacingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawPlacingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawRedAttribute</code> , See {@odf.attribute draw:red}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawRedAttribute() {
+		DrawRedAttribute attr = (DrawRedAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "red");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawRedAttribute</code> , See {@odf.attribute draw:red}
+	 *
+	 * @param drawRedValue   The type is <code>String</code>
+	 */
+	public void setDrawRedAttribute(String drawRedValue) {
+		DrawRedAttribute attr = new DrawRedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawRedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawSecondaryFillColorAttribute</code> , See {@odf.attribute draw:secondary-fill-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawSecondaryFillColorAttribute() {
+		DrawSecondaryFillColorAttribute attr = (DrawSecondaryFillColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "secondary-fill-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawSecondaryFillColorAttribute</code> , See {@odf.attribute draw:secondary-fill-color}
+	 *
+	 * @param drawSecondaryFillColorValue   The type is <code>String</code>
+	 */
+	public void setDrawSecondaryFillColorAttribute(String drawSecondaryFillColorValue) {
+		DrawSecondaryFillColorAttribute attr = new DrawSecondaryFillColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawSecondaryFillColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShadowAttribute</code> , See {@odf.attribute draw:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShadowAttribute() {
+		DrawShadowAttribute attr = (DrawShadowAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShadowAttribute</code> , See {@odf.attribute draw:shadow}
+	 *
+	 * @param drawShadowValue   The type is <code>String</code>
+	 */
+	public void setDrawShadowAttribute(String drawShadowValue) {
+		DrawShadowAttribute attr = new DrawShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShadowColorAttribute</code> , See {@odf.attribute draw:shadow-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShadowColorAttribute() {
+		DrawShadowColorAttribute attr = (DrawShadowColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shadow-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShadowColorAttribute</code> , See {@odf.attribute draw:shadow-color}
+	 *
+	 * @param drawShadowColorValue   The type is <code>String</code>
+	 */
+	public void setDrawShadowColorAttribute(String drawShadowColorValue) {
+		DrawShadowColorAttribute attr = new DrawShadowColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShadowColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShadowOffsetXAttribute</code> , See {@odf.attribute draw:shadow-offset-x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShadowOffsetXAttribute() {
+		DrawShadowOffsetXAttribute attr = (DrawShadowOffsetXAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shadow-offset-x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShadowOffsetXAttribute</code> , See {@odf.attribute draw:shadow-offset-x}
+	 *
+	 * @param drawShadowOffsetXValue   The type is <code>String</code>
+	 */
+	public void setDrawShadowOffsetXAttribute(String drawShadowOffsetXValue) {
+		DrawShadowOffsetXAttribute attr = new DrawShadowOffsetXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShadowOffsetXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShadowOffsetYAttribute</code> , See {@odf.attribute draw:shadow-offset-y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShadowOffsetYAttribute() {
+		DrawShadowOffsetYAttribute attr = (DrawShadowOffsetYAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shadow-offset-y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShadowOffsetYAttribute</code> , See {@odf.attribute draw:shadow-offset-y}
+	 *
+	 * @param drawShadowOffsetYValue   The type is <code>String</code>
+	 */
+	public void setDrawShadowOffsetYAttribute(String drawShadowOffsetYValue) {
+		DrawShadowOffsetYAttribute attr = new DrawShadowOffsetYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShadowOffsetYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShadowOpacityAttribute</code> , See {@odf.attribute draw:shadow-opacity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawShadowOpacityAttribute() {
+		DrawShadowOpacityAttribute attr = (DrawShadowOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "shadow-opacity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShadowOpacityAttribute</code> , See {@odf.attribute draw:shadow-opacity}
+	 *
+	 * @param drawShadowOpacityValue   The type is <code>String</code>
+	 */
+	public void setDrawShadowOpacityAttribute(String drawShadowOpacityValue) {
+		DrawShadowOpacityAttribute attr = new DrawShadowOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawShadowOpacityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawShowUnitAttribute</code> , See {@odf.attribute draw:show-unit}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getDrawShowUnitAttribute() {
+		DrawShowUnitAttribute attr = (DrawShowUnitAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "show-unit");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawShowUnitAttribute</code> , See {@odf.attribute draw:show-unit}
+	 *
+	 * @param drawShowUnitValue   The type is <code>Boolean</code>
+	 */
+	public void setDrawShowUnitAttribute(Boolean drawShowUnitValue) {
+		DrawShowUnitAttribute attr = new DrawShowUnitAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(drawShowUnitValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartGuideAttribute</code> , See {@odf.attribute draw:start-guide}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartGuideAttribute() {
+		DrawStartGuideAttribute attr = (DrawStartGuideAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-guide");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartGuideAttribute</code> , See {@odf.attribute draw:start-guide}
+	 *
+	 * @param drawStartGuideValue   The type is <code>String</code>
+	 */
+	public void setDrawStartGuideAttribute(String drawStartGuideValue) {
+		DrawStartGuideAttribute attr = new DrawStartGuideAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartGuideValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartLineSpacingHorizontalAttribute</code> , See {@odf.attribute draw:start-line-spacing-horizontal}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartLineSpacingHorizontalAttribute() {
+		DrawStartLineSpacingHorizontalAttribute attr = (DrawStartLineSpacingHorizontalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-line-spacing-horizontal");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartLineSpacingHorizontalAttribute</code> , See {@odf.attribute draw:start-line-spacing-horizontal}
+	 *
+	 * @param drawStartLineSpacingHorizontalValue   The type is <code>String</code>
+	 */
+	public void setDrawStartLineSpacingHorizontalAttribute(String drawStartLineSpacingHorizontalValue) {
+		DrawStartLineSpacingHorizontalAttribute attr = new DrawStartLineSpacingHorizontalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartLineSpacingHorizontalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStartLineSpacingVerticalAttribute</code> , See {@odf.attribute draw:start-line-spacing-vertical}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStartLineSpacingVerticalAttribute() {
+		DrawStartLineSpacingVerticalAttribute attr = (DrawStartLineSpacingVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "start-line-spacing-vertical");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStartLineSpacingVerticalAttribute</code> , See {@odf.attribute draw:start-line-spacing-vertical}
+	 *
+	 * @param drawStartLineSpacingVerticalValue   The type is <code>String</code>
+	 */
+	public void setDrawStartLineSpacingVerticalAttribute(String drawStartLineSpacingVerticalValue) {
+		DrawStartLineSpacingVerticalAttribute attr = new DrawStartLineSpacingVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStartLineSpacingVerticalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStrokeAttribute</code> , See {@odf.attribute draw:stroke}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStrokeAttribute() {
+		DrawStrokeAttribute attr = (DrawStrokeAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "stroke");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStrokeAttribute</code> , See {@odf.attribute draw:stroke}
+	 *
+	 * @param drawStrokeValue   The type is <code>String</code>
+	 */
+	public void setDrawStrokeAttribute(String drawStrokeValue) {
+		DrawStrokeAttribute attr = new DrawStrokeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStrokeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStrokeDashAttribute</code> , See {@odf.attribute draw:stroke-dash}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStrokeDashAttribute() {
+		DrawStrokeDashAttribute attr = (DrawStrokeDashAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "stroke-dash");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStrokeDashAttribute</code> , See {@odf.attribute draw:stroke-dash}
+	 *
+	 * @param drawStrokeDashValue   The type is <code>String</code>
+	 */
+	public void setDrawStrokeDashAttribute(String drawStrokeDashValue) {
+		DrawStrokeDashAttribute attr = new DrawStrokeDashAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStrokeDashValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStrokeDashNamesAttribute</code> , See {@odf.attribute draw:stroke-dash-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStrokeDashNamesAttribute() {
+		DrawStrokeDashNamesAttribute attr = (DrawStrokeDashNamesAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "stroke-dash-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStrokeDashNamesAttribute</code> , See {@odf.attribute draw:stroke-dash-names}
+	 *
+	 * @param drawStrokeDashNamesValue   The type is <code>String</code>
+	 */
+	public void setDrawStrokeDashNamesAttribute(String drawStrokeDashNamesValue) {
+		DrawStrokeDashNamesAttribute attr = new DrawStrokeDashNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStrokeDashNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStrokeLinejoinAttribute</code> , See {@odf.attribute draw:stroke-linejoin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStrokeLinejoinAttribute() {
+		DrawStrokeLinejoinAttribute attr = (DrawStrokeLinejoinAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "stroke-linejoin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStrokeLinejoinAttribute</code> , See {@odf.attribute draw:stroke-linejoin}
+	 *
+	 * @param drawStrokeLinejoinValue   The type is <code>String</code>
+	 */
+	public void setDrawStrokeLinejoinAttribute(String drawStrokeLinejoinValue) {
+		DrawStrokeLinejoinAttribute attr = new DrawStrokeLinejoinAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStrokeLinejoinValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawSymbolColorAttribute</code> , See {@odf.attribute draw:symbol-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawSymbolColorAttribute() {
+		DrawSymbolColorAttribute attr = (DrawSymbolColorAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "symbol-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawSymbolColorAttribute</code> , See {@odf.attribute draw:symbol-color}
+	 *
+	 * @param drawSymbolColorValue   The type is <code>String</code>
+	 */
+	public void setDrawSymbolColorAttribute(String drawSymbolColorValue) {
+		DrawSymbolColorAttribute attr = new DrawSymbolColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawSymbolColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextareaHorizontalAlignAttribute</code> , See {@odf.attribute draw:textarea-horizontal-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextareaHorizontalAlignAttribute() {
+		DrawTextareaHorizontalAlignAttribute attr = (DrawTextareaHorizontalAlignAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "textarea-horizontal-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextareaHorizontalAlignAttribute</code> , See {@odf.attribute draw:textarea-horizontal-align}
+	 *
+	 * @param drawTextareaHorizontalAlignValue   The type is <code>String</code>
+	 */
+	public void setDrawTextareaHorizontalAlignAttribute(String drawTextareaHorizontalAlignValue) {
+		DrawTextareaHorizontalAlignAttribute attr = new DrawTextareaHorizontalAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextareaHorizontalAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTextareaVerticalAlignAttribute</code> , See {@odf.attribute draw:textarea-vertical-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTextareaVerticalAlignAttribute() {
+		DrawTextareaVerticalAlignAttribute attr = (DrawTextareaVerticalAlignAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "textarea-vertical-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTextareaVerticalAlignAttribute</code> , See {@odf.attribute draw:textarea-vertical-align}
+	 *
+	 * @param drawTextareaVerticalAlignValue   The type is <code>String</code>
+	 */
+	public void setDrawTextareaVerticalAlignAttribute(String drawTextareaVerticalAlignValue) {
+		DrawTextareaVerticalAlignAttribute attr = new DrawTextareaVerticalAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTextareaVerticalAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawTileRepeatOffsetAttribute</code> , See {@odf.attribute draw:tile-repeat-offset}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawTileRepeatOffsetAttribute() {
+		DrawTileRepeatOffsetAttribute attr = (DrawTileRepeatOffsetAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "tile-repeat-offset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawTileRepeatOffsetAttribute</code> , See {@odf.attribute draw:tile-repeat-offset}
+	 *
+	 * @param drawTileRepeatOffsetValue   The type is <code>String</code>
+	 */
+	public void setDrawTileRepeatOffsetAttribute(String drawTileRepeatOffsetValue) {
+		DrawTileRepeatOffsetAttribute attr = new DrawTileRepeatOffsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawTileRepeatOffsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawUnitAttribute</code> , See {@odf.attribute draw:unit}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawUnitAttribute() {
+		DrawUnitAttribute attr = (DrawUnitAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "unit");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawUnitAttribute</code> , See {@odf.attribute draw:unit}
+	 *
+	 * @param drawUnitValue   The type is <code>String</code>
+	 */
+	public void setDrawUnitAttribute(String drawUnitValue) {
+		DrawUnitAttribute attr = new DrawUnitAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawUnitValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawVisibleAreaHeightAttribute</code> , See {@odf.attribute draw:visible-area-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawVisibleAreaHeightAttribute() {
+		DrawVisibleAreaHeightAttribute attr = (DrawVisibleAreaHeightAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "visible-area-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawVisibleAreaHeightAttribute</code> , See {@odf.attribute draw:visible-area-height}
+	 *
+	 * @param drawVisibleAreaHeightValue   The type is <code>String</code>
+	 */
+	public void setDrawVisibleAreaHeightAttribute(String drawVisibleAreaHeightValue) {
+		DrawVisibleAreaHeightAttribute attr = new DrawVisibleAreaHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawVisibleAreaHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawVisibleAreaLeftAttribute</code> , See {@odf.attribute draw:visible-area-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawVisibleAreaLeftAttribute() {
+		DrawVisibleAreaLeftAttribute attr = (DrawVisibleAreaLeftAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "visible-area-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawVisibleAreaLeftAttribute</code> , See {@odf.attribute draw:visible-area-left}
+	 *
+	 * @param drawVisibleAreaLeftValue   The type is <code>String</code>
+	 */
+	public void setDrawVisibleAreaLeftAttribute(String drawVisibleAreaLeftValue) {
+		DrawVisibleAreaLeftAttribute attr = new DrawVisibleAreaLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawVisibleAreaLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawVisibleAreaTopAttribute</code> , See {@odf.attribute draw:visible-area-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawVisibleAreaTopAttribute() {
+		DrawVisibleAreaTopAttribute attr = (DrawVisibleAreaTopAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "visible-area-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawVisibleAreaTopAttribute</code> , See {@odf.attribute draw:visible-area-top}
+	 *
+	 * @param drawVisibleAreaTopValue   The type is <code>String</code>
+	 */
+	public void setDrawVisibleAreaTopAttribute(String drawVisibleAreaTopValue) {
+		DrawVisibleAreaTopAttribute attr = new DrawVisibleAreaTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawVisibleAreaTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawVisibleAreaWidthAttribute</code> , See {@odf.attribute draw:visible-area-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawVisibleAreaWidthAttribute() {
+		DrawVisibleAreaWidthAttribute attr = (DrawVisibleAreaWidthAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "visible-area-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawVisibleAreaWidthAttribute</code> , See {@odf.attribute draw:visible-area-width}
+	 *
+	 * @param drawVisibleAreaWidthValue   The type is <code>String</code>
+	 */
+	public void setDrawVisibleAreaWidthAttribute(String drawVisibleAreaWidthValue) {
+		DrawVisibleAreaWidthAttribute attr = new DrawVisibleAreaWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawVisibleAreaWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawWrapInfluenceOnPositionAttribute</code> , See {@odf.attribute draw:wrap-influence-on-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawWrapInfluenceOnPositionAttribute() {
+		DrawWrapInfluenceOnPositionAttribute attr = (DrawWrapInfluenceOnPositionAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "wrap-influence-on-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawWrapInfluenceOnPositionAttribute</code> , See {@odf.attribute draw:wrap-influence-on-position}
+	 *
+	 * @param drawWrapInfluenceOnPositionValue   The type is <code>String</code>
+	 */
+	public void setDrawWrapInfluenceOnPositionAttribute(String drawWrapInfluenceOnPositionValue) {
+		DrawWrapInfluenceOnPositionAttribute attr = new DrawWrapInfluenceOnPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawWrapInfluenceOnPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderAttribute() {
+		FoBorderAttribute attr = (FoBorderAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @param foBorderValue   The type is <code>String</code>
+	 */
+	public void setFoBorderAttribute(String foBorderValue) {
+		FoBorderAttribute attr = new FoBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderBottomAttribute() {
+		FoBorderBottomAttribute attr = (FoBorderBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @param foBorderBottomValue   The type is <code>String</code>
+	 */
+	public void setFoBorderBottomAttribute(String foBorderBottomValue) {
+		FoBorderBottomAttribute attr = new FoBorderBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderLeftAttribute() {
+		FoBorderLeftAttribute attr = (FoBorderLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @param foBorderLeftValue   The type is <code>String</code>
+	 */
+	public void setFoBorderLeftAttribute(String foBorderLeftValue) {
+		FoBorderLeftAttribute attr = new FoBorderLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderRightAttribute() {
+		FoBorderRightAttribute attr = (FoBorderRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @param foBorderRightValue   The type is <code>String</code>
+	 */
+	public void setFoBorderRightAttribute(String foBorderRightValue) {
+		FoBorderRightAttribute attr = new FoBorderRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderTopAttribute() {
+		FoBorderTopAttribute attr = (FoBorderTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @param foBorderTopValue   The type is <code>String</code>
+	 */
+	public void setFoBorderTopAttribute(String foBorderTopValue) {
+		FoBorderTopAttribute attr = new FoBorderTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoClipAttribute</code> , See {@odf.attribute fo:clip}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoClipAttribute() {
+		FoClipAttribute attr = (FoClipAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "clip");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoClipAttribute</code> , See {@odf.attribute fo:clip}
+	 *
+	 * @param foClipValue   The type is <code>String</code>
+	 */
+	public void setFoClipAttribute(String foClipValue) {
+		FoClipAttribute attr = new FoClipAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foClipValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginAttribute() {
+		FoMarginAttribute attr = (FoMarginAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @param foMarginValue   The type is <code>String</code>
+	 */
+	public void setFoMarginAttribute(String foMarginValue) {
+		FoMarginAttribute attr = new FoMarginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginBottomAttribute() {
+		FoMarginBottomAttribute attr = (FoMarginBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @param foMarginBottomValue   The type is <code>String</code>
+	 */
+	public void setFoMarginBottomAttribute(String foMarginBottomValue) {
+		FoMarginBottomAttribute attr = new FoMarginBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginRightAttribute() {
+		FoMarginRightAttribute attr = (FoMarginRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @param foMarginRightValue   The type is <code>String</code>
+	 */
+	public void setFoMarginRightAttribute(String foMarginRightValue) {
+		FoMarginRightAttribute attr = new FoMarginRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginTopAttribute() {
+		FoMarginTopAttribute attr = (FoMarginTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @param foMarginTopValue   The type is <code>String</code>
+	 */
+	public void setFoMarginTopAttribute(String foMarginTopValue) {
+		FoMarginTopAttribute attr = new FoMarginTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMaxHeightAttribute</code> , See {@odf.attribute fo:max-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMaxHeightAttribute() {
+		FoMaxHeightAttribute attr = (FoMaxHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "max-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMaxHeightAttribute</code> , See {@odf.attribute fo:max-height}
+	 *
+	 * @param foMaxHeightValue   The type is <code>String</code>
+	 */
+	public void setFoMaxHeightAttribute(String foMaxHeightValue) {
+		FoMaxHeightAttribute attr = new FoMaxHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMaxHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMaxWidthAttribute</code> , See {@odf.attribute fo:max-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMaxWidthAttribute() {
+		FoMaxWidthAttribute attr = (FoMaxWidthAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "max-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMaxWidthAttribute</code> , See {@odf.attribute fo:max-width}
+	 *
+	 * @param foMaxWidthValue   The type is <code>String</code>
+	 */
+	public void setFoMaxWidthAttribute(String foMaxWidthValue) {
+		FoMaxWidthAttribute attr = new FoMaxWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMaxWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMinHeightAttribute</code> , See {@odf.attribute fo:min-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMinHeightAttribute() {
+		FoMinHeightAttribute attr = (FoMinHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "min-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMinHeightAttribute</code> , See {@odf.attribute fo:min-height}
+	 *
+	 * @param foMinHeightValue   The type is <code>String</code>
+	 */
+	public void setFoMinHeightAttribute(String foMinHeightValue) {
+		FoMinHeightAttribute attr = new FoMinHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMinHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMinWidthAttribute</code> , See {@odf.attribute fo:min-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMinWidthAttribute() {
+		FoMinWidthAttribute attr = (FoMinWidthAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "min-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMinWidthAttribute</code> , See {@odf.attribute fo:min-width}
+	 *
+	 * @param foMinWidthValue   The type is <code>String</code>
+	 */
+	public void setFoMinWidthAttribute(String foMinWidthValue) {
+		FoMinWidthAttribute attr = new FoMinWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMinWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingAttribute() {
+		FoPaddingAttribute attr = (FoPaddingAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @param foPaddingValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingAttribute(String foPaddingValue) {
+		FoPaddingAttribute attr = new FoPaddingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingBottomAttribute() {
+		FoPaddingBottomAttribute attr = (FoPaddingBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @param foPaddingBottomValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingBottomAttribute(String foPaddingBottomValue) {
+		FoPaddingBottomAttribute attr = new FoPaddingBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingLeftAttribute() {
+		FoPaddingLeftAttribute attr = (FoPaddingLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @param foPaddingLeftValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingLeftAttribute(String foPaddingLeftValue) {
+		FoPaddingLeftAttribute attr = new FoPaddingLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingRightAttribute() {
+		FoPaddingRightAttribute attr = (FoPaddingRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @param foPaddingRightValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingRightAttribute(String foPaddingRightValue) {
+		FoPaddingRightAttribute attr = new FoPaddingRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingTopAttribute() {
+		FoPaddingTopAttribute attr = (FoPaddingTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @param foPaddingTopValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingTopAttribute(String foPaddingTopValue) {
+		FoPaddingTopAttribute attr = new FoPaddingTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoWrapOptionAttribute</code> , See {@odf.attribute fo:wrap-option}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoWrapOptionAttribute() {
+		FoWrapOptionAttribute attr = (FoWrapOptionAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "wrap-option");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoWrapOptionAttribute</code> , See {@odf.attribute fo:wrap-option}
+	 *
+	 * @param foWrapOptionValue   The type is <code>String</code>
+	 */
+	public void setFoWrapOptionAttribute(String foWrapOptionValue) {
+		FoWrapOptionAttribute attr = new FoWrapOptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foWrapOptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBackgroundTransparencyAttribute</code> , See {@odf.attribute style:background-transparency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBackgroundTransparencyAttribute() {
+		StyleBackgroundTransparencyAttribute attr = (StyleBackgroundTransparencyAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "background-transparency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBackgroundTransparencyAttribute</code> , See {@odf.attribute style:background-transparency}
+	 *
+	 * @param styleBackgroundTransparencyValue   The type is <code>String</code>
+	 */
+	public void setStyleBackgroundTransparencyAttribute(String styleBackgroundTransparencyValue) {
+		StyleBackgroundTransparencyAttribute attr = new StyleBackgroundTransparencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBackgroundTransparencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthAttribute() {
+		StyleBorderLineWidthAttribute attr = (StyleBorderLineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @param styleBorderLineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthAttribute(String styleBorderLineWidthValue) {
+		StyleBorderLineWidthAttribute attr = new StyleBorderLineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthBottomAttribute() {
+		StyleBorderLineWidthBottomAttribute attr = (StyleBorderLineWidthBottomAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @param styleBorderLineWidthBottomValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthBottomAttribute(String styleBorderLineWidthBottomValue) {
+		StyleBorderLineWidthBottomAttribute attr = new StyleBorderLineWidthBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthLeftAttribute() {
+		StyleBorderLineWidthLeftAttribute attr = (StyleBorderLineWidthLeftAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @param styleBorderLineWidthLeftValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthLeftAttribute(String styleBorderLineWidthLeftValue) {
+		StyleBorderLineWidthLeftAttribute attr = new StyleBorderLineWidthLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthRightAttribute() {
+		StyleBorderLineWidthRightAttribute attr = (StyleBorderLineWidthRightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @param styleBorderLineWidthRightValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthRightAttribute(String styleBorderLineWidthRightValue) {
+		StyleBorderLineWidthRightAttribute attr = new StyleBorderLineWidthRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthTopAttribute() {
+		StyleBorderLineWidthTopAttribute attr = (StyleBorderLineWidthTopAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @param styleBorderLineWidthTopValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthTopAttribute(String styleBorderLineWidthTopValue) {
+		StyleBorderLineWidthTopAttribute attr = new StyleBorderLineWidthTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleEditableAttribute</code> , See {@odf.attribute style:editable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleEditableAttribute() {
+		StyleEditableAttribute attr = (StyleEditableAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "editable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleEditableAttribute</code> , See {@odf.attribute style:editable}
+	 *
+	 * @param styleEditableValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleEditableAttribute(Boolean styleEditableValue) {
+		StyleEditableAttribute attr = new StyleEditableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleEditableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFlowWithTextAttribute</code> , See {@odf.attribute style:flow-with-text}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleFlowWithTextAttribute() {
+		StyleFlowWithTextAttribute attr = (StyleFlowWithTextAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "flow-with-text");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFlowWithTextAttribute</code> , See {@odf.attribute style:flow-with-text}
+	 *
+	 * @param styleFlowWithTextValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleFlowWithTextAttribute(Boolean styleFlowWithTextValue) {
+		StyleFlowWithTextAttribute attr = new StyleFlowWithTextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleFlowWithTextValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleHorizontalPosAttribute</code> , See {@odf.attribute style:horizontal-pos}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleHorizontalPosAttribute() {
+		StyleHorizontalPosAttribute attr = (StyleHorizontalPosAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "horizontal-pos");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleHorizontalPosAttribute</code> , See {@odf.attribute style:horizontal-pos}
+	 *
+	 * @param styleHorizontalPosValue   The type is <code>String</code>
+	 */
+	public void setStyleHorizontalPosAttribute(String styleHorizontalPosValue) {
+		StyleHorizontalPosAttribute attr = new StyleHorizontalPosAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleHorizontalPosValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleHorizontalRelAttribute</code> , See {@odf.attribute style:horizontal-rel}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleHorizontalRelAttribute() {
+		StyleHorizontalRelAttribute attr = (StyleHorizontalRelAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "horizontal-rel");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleHorizontalRelAttribute</code> , See {@odf.attribute style:horizontal-rel}
+	 *
+	 * @param styleHorizontalRelValue   The type is <code>String</code>
+	 */
+	public void setStyleHorizontalRelAttribute(String styleHorizontalRelValue) {
+		StyleHorizontalRelAttribute attr = new StyleHorizontalRelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleHorizontalRelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleMirrorAttribute</code> , See {@odf.attribute style:mirror}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleMirrorAttribute() {
+		StyleMirrorAttribute attr = (StyleMirrorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "mirror");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleMirrorAttribute</code> , See {@odf.attribute style:mirror}
+	 *
+	 * @param styleMirrorValue   The type is <code>String</code>
+	 */
+	public void setStyleMirrorAttribute(String styleMirrorValue) {
+		StyleMirrorAttribute attr = new StyleMirrorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleMirrorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumberWrappedParagraphsAttribute</code> , See {@odf.attribute style:number-wrapped-paragraphs}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleNumberWrappedParagraphsAttribute() {
+		StyleNumberWrappedParagraphsAttribute attr = (StyleNumberWrappedParagraphsAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "number-wrapped-paragraphs");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumberWrappedParagraphsAttribute</code> , See {@odf.attribute style:number-wrapped-paragraphs}
+	 *
+	 * @param styleNumberWrappedParagraphsValue   The type is <code>Integer</code>
+	 */
+	public void setStyleNumberWrappedParagraphsAttribute(Integer styleNumberWrappedParagraphsValue) {
+		StyleNumberWrappedParagraphsAttribute attr = new StyleNumberWrappedParagraphsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleNumberWrappedParagraphsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleOverflowBehaviorAttribute</code> , See {@odf.attribute style:overflow-behavior}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleOverflowBehaviorAttribute() {
+		StyleOverflowBehaviorAttribute attr = (StyleOverflowBehaviorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "overflow-behavior");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleOverflowBehaviorAttribute</code> , See {@odf.attribute style:overflow-behavior}
+	 *
+	 * @param styleOverflowBehaviorValue   The type is <code>String</code>
+	 */
+	public void setStyleOverflowBehaviorAttribute(String styleOverflowBehaviorValue) {
+		StyleOverflowBehaviorAttribute attr = new StyleOverflowBehaviorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleOverflowBehaviorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePrintContentAttribute</code> , See {@odf.attribute style:print-content}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStylePrintContentAttribute() {
+		StylePrintContentAttribute attr = (StylePrintContentAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "print-content");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePrintContentAttribute</code> , See {@odf.attribute style:print-content}
+	 *
+	 * @param stylePrintContentValue   The type is <code>Boolean</code>
+	 */
+	public void setStylePrintContentAttribute(Boolean stylePrintContentValue) {
+		StylePrintContentAttribute attr = new StylePrintContentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(stylePrintContentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleProtectAttribute</code> , See {@odf.attribute style:protect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleProtectAttribute() {
+		StyleProtectAttribute attr = (StyleProtectAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "protect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleProtectAttribute</code> , See {@odf.attribute style:protect}
+	 *
+	 * @param styleProtectValue   The type is <code>String</code>
+	 */
+	public void setStyleProtectAttribute(String styleProtectValue) {
+		StyleProtectAttribute attr = new StyleProtectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleProtectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelHeightAttribute</code> , See {@odf.attribute style:rel-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelHeightAttribute() {
+		StyleRelHeightAttribute attr = (StyleRelHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelHeightAttribute</code> , See {@odf.attribute style:rel-height}
+	 *
+	 * @param styleRelHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleRelHeightAttribute(String styleRelHeightValue) {
+		StyleRelHeightAttribute attr = new StyleRelHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelWidthAttribute() {
+		StyleRelWidthAttribute attr = (StyleRelWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @param styleRelWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleRelWidthAttribute(String styleRelWidthValue) {
+		StyleRelWidthAttribute attr = new StyleRelWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRepeatAttribute</code> , See {@odf.attribute style:repeat}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRepeatAttribute() {
+		StyleRepeatAttribute attr = (StyleRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "repeat");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRepeatAttribute</code> , See {@odf.attribute style:repeat}
+	 *
+	 * @param styleRepeatValue   The type is <code>String</code>
+	 */
+	public void setStyleRepeatAttribute(String styleRepeatValue) {
+		StyleRepeatAttribute attr = new StyleRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRepeatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRunThroughAttribute</code> , See {@odf.attribute style:run-through}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRunThroughAttribute() {
+		StyleRunThroughAttribute attr = (StyleRunThroughAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "run-through");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRunThroughAttribute</code> , See {@odf.attribute style:run-through}
+	 *
+	 * @param styleRunThroughValue   The type is <code>String</code>
+	 */
+	public void setStyleRunThroughAttribute(String styleRunThroughValue) {
+		StyleRunThroughAttribute attr = new StyleRunThroughAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRunThroughValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleShadowAttribute() {
+		StyleShadowAttribute attr = (StyleShadowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @param styleShadowValue   The type is <code>String</code>
+	 */
+	public void setStyleShadowAttribute(String styleShadowValue) {
+		StyleShadowAttribute attr = new StyleShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShrinkToFitAttribute</code> , See {@odf.attribute style:shrink-to-fit}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleShrinkToFitAttribute() {
+		StyleShrinkToFitAttribute attr = (StyleShrinkToFitAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shrink-to-fit");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShrinkToFitAttribute</code> , See {@odf.attribute style:shrink-to-fit}
+	 *
+	 * @param styleShrinkToFitValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleShrinkToFitAttribute(Boolean styleShrinkToFitValue) {
+		StyleShrinkToFitAttribute attr = new StyleShrinkToFitAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleShrinkToFitValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalPosAttribute</code> , See {@odf.attribute style:vertical-pos}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalPosAttribute() {
+		StyleVerticalPosAttribute attr = (StyleVerticalPosAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-pos");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalPosAttribute</code> , See {@odf.attribute style:vertical-pos}
+	 *
+	 * @param styleVerticalPosValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalPosAttribute(String styleVerticalPosValue) {
+		StyleVerticalPosAttribute attr = new StyleVerticalPosAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalPosValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalRelAttribute</code> , See {@odf.attribute style:vertical-rel}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalRelAttribute() {
+		StyleVerticalRelAttribute attr = (StyleVerticalRelAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-rel");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalRelAttribute</code> , See {@odf.attribute style:vertical-rel}
+	 *
+	 * @param styleVerticalRelValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalRelAttribute(String styleVerticalRelValue) {
+		StyleVerticalRelAttribute attr = new StyleVerticalRelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalRelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWrapAttribute</code> , See {@odf.attribute style:wrap}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWrapAttribute() {
+		StyleWrapAttribute attr = (StyleWrapAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "wrap");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWrapAttribute</code> , See {@odf.attribute style:wrap}
+	 *
+	 * @param styleWrapValue   The type is <code>String</code>
+	 */
+	public void setStyleWrapAttribute(String styleWrapValue) {
+		StyleWrapAttribute attr = new StyleWrapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWrapValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWrapContourAttribute</code> , See {@odf.attribute style:wrap-contour}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleWrapContourAttribute() {
+		StyleWrapContourAttribute attr = (StyleWrapContourAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "wrap-contour");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWrapContourAttribute</code> , See {@odf.attribute style:wrap-contour}
+	 *
+	 * @param styleWrapContourValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleWrapContourAttribute(Boolean styleWrapContourValue) {
+		StyleWrapContourAttribute attr = new StyleWrapContourAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleWrapContourValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWrapContourModeAttribute</code> , See {@odf.attribute style:wrap-contour-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWrapContourModeAttribute() {
+		StyleWrapContourModeAttribute attr = (StyleWrapContourModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "wrap-contour-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWrapContourModeAttribute</code> , See {@odf.attribute style:wrap-contour-mode}
+	 *
+	 * @param styleWrapContourModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWrapContourModeAttribute(String styleWrapContourModeValue) {
+		StyleWrapContourModeAttribute attr = new StyleWrapContourModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWrapContourModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWrapDynamicThresholdAttribute</code> , See {@odf.attribute style:wrap-dynamic-threshold}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWrapDynamicThresholdAttribute() {
+		StyleWrapDynamicThresholdAttribute attr = (StyleWrapDynamicThresholdAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "wrap-dynamic-threshold");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWrapDynamicThresholdAttribute</code> , See {@odf.attribute style:wrap-dynamic-threshold}
+	 *
+	 * @param styleWrapDynamicThresholdValue   The type is <code>String</code>
+	 */
+	public void setStyleWrapDynamicThresholdAttribute(String styleWrapDynamicThresholdValue) {
+		StyleWrapDynamicThresholdAttribute attr = new StyleWrapDynamicThresholdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWrapDynamicThresholdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWritingModeAttribute() {
+		StyleWritingModeAttribute attr = (StyleWritingModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @param styleWritingModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWritingModeAttribute(String styleWritingModeValue) {
+		StyleWritingModeAttribute attr = new StyleWritingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWritingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFillRuleAttribute</code> , See {@odf.attribute svg:fill-rule}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFillRuleAttribute() {
+		SvgFillRuleAttribute attr = (SvgFillRuleAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "fill-rule");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFillRuleAttribute</code> , See {@odf.attribute svg:fill-rule}
+	 *
+	 * @param svgFillRuleValue   The type is <code>String</code>
+	 */
+	public void setSvgFillRuleAttribute(String svgFillRuleValue) {
+		SvgFillRuleAttribute attr = new SvgFillRuleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFillRuleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStrokeColorAttribute</code> , See {@odf.attribute svg:stroke-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgStrokeColorAttribute() {
+		SvgStrokeColorAttribute attr = (SvgStrokeColorAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stroke-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStrokeColorAttribute</code> , See {@odf.attribute svg:stroke-color}
+	 *
+	 * @param svgStrokeColorValue   The type is <code>String</code>
+	 */
+	public void setSvgStrokeColorAttribute(String svgStrokeColorValue) {
+		SvgStrokeColorAttribute attr = new SvgStrokeColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgStrokeColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStrokeLinecapAttribute</code> , See {@odf.attribute svg:stroke-linecap}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgStrokeLinecapAttribute() {
+		SvgStrokeLinecapAttribute attr = (SvgStrokeLinecapAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stroke-linecap");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStrokeLinecapAttribute</code> , See {@odf.attribute svg:stroke-linecap}
+	 *
+	 * @param svgStrokeLinecapValue   The type is <code>String</code>
+	 */
+	public void setSvgStrokeLinecapAttribute(String svgStrokeLinecapValue) {
+		SvgStrokeLinecapAttribute attr = new SvgStrokeLinecapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgStrokeLinecapValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStrokeOpacityAttribute</code> , See {@odf.attribute svg:stroke-opacity}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgStrokeOpacityAttribute() {
+		SvgStrokeOpacityAttribute attr = (SvgStrokeOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stroke-opacity");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStrokeOpacityAttribute</code> , See {@odf.attribute svg:stroke-opacity}
+	 *
+	 * @param svgStrokeOpacityValue   The type is <code>String</code>
+	 */
+	public void setSvgStrokeOpacityAttribute(String svgStrokeOpacityValue) {
+		SvgStrokeOpacityAttribute attr = new SvgStrokeOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgStrokeOpacityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStrokeWidthAttribute</code> , See {@odf.attribute svg:stroke-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgStrokeWidthAttribute() {
+		SvgStrokeWidthAttribute attr = (SvgStrokeWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stroke-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStrokeWidthAttribute</code> , See {@odf.attribute svg:stroke-width}
+	 *
+	 * @param svgStrokeWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgStrokeWidthAttribute(String svgStrokeWidthValue) {
+		SvgStrokeWidthAttribute attr = new SvgStrokeWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgStrokeWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgWidthAttribute() {
+		SvgWidthAttribute attr = (SvgWidthAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgWidthAttribute</code> , See {@odf.attribute svg:width}
+	 *
+	 * @param svgWidthValue   The type is <code>String</code>
+	 */
+	public void setSvgWidthAttribute(String svgWidthValue) {
+		SvgWidthAttribute attr = new SvgWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgXAttribute() {
+		SvgXAttribute attr = (SvgXAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgXAttribute</code> , See {@odf.attribute svg:x}
+	 *
+	 * @param svgXValue   The type is <code>String</code>
+	 */
+	public void setSvgXAttribute(String svgXValue) {
+		SvgXAttribute attr = new SvgXAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgXValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnchorPageNumberAttribute</code> , See {@odf.attribute text:anchor-page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextAnchorPageNumberAttribute() {
+		TextAnchorPageNumberAttribute attr = (TextAnchorPageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "anchor-page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnchorPageNumberAttribute</code> , See {@odf.attribute text:anchor-page-number}
+	 *
+	 * @param textAnchorPageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTextAnchorPageNumberAttribute(Integer textAnchorPageNumberValue) {
+		TextAnchorPageNumberAttribute attr = new TextAnchorPageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textAnchorPageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnchorTypeAttribute</code> , See {@odf.attribute text:anchor-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnchorTypeAttribute() {
+		TextAnchorTypeAttribute attr = (TextAnchorTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "anchor-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnchorTypeAttribute</code> , See {@odf.attribute text:anchor-type}
+	 *
+	 * @param textAnchorTypeValue   The type is <code>String</code>
+	 */
+	public void setTextAnchorTypeAttribute(String textAnchorTypeValue) {
+		TextAnchorTypeAttribute attr = new TextAnchorTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnchorTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationAttribute</code> , See {@odf.attribute text:animation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnimationAttribute() {
+		TextAnimationAttribute attr = (TextAnimationAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationAttribute</code> , See {@odf.attribute text:animation}
+	 *
+	 * @param textAnimationValue   The type is <code>String</code>
+	 */
+	public void setTextAnimationAttribute(String textAnimationValue) {
+		TextAnimationAttribute attr = new TextAnimationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnimationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationDelayAttribute</code> , See {@odf.attribute text:animation-delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnimationDelayAttribute() {
+		TextAnimationDelayAttribute attr = (TextAnimationDelayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation-delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationDelayAttribute</code> , See {@odf.attribute text:animation-delay}
+	 *
+	 * @param textAnimationDelayValue   The type is <code>String</code>
+	 */
+	public void setTextAnimationDelayAttribute(String textAnimationDelayValue) {
+		TextAnimationDelayAttribute attr = new TextAnimationDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnimationDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationDirectionAttribute</code> , See {@odf.attribute text:animation-direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnimationDirectionAttribute() {
+		TextAnimationDirectionAttribute attr = (TextAnimationDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation-direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationDirectionAttribute</code> , See {@odf.attribute text:animation-direction}
+	 *
+	 * @param textAnimationDirectionValue   The type is <code>String</code>
+	 */
+	public void setTextAnimationDirectionAttribute(String textAnimationDirectionValue) {
+		TextAnimationDirectionAttribute attr = new TextAnimationDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnimationDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationRepeatAttribute</code> , See {@odf.attribute text:animation-repeat}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextAnimationRepeatAttribute() {
+		TextAnimationRepeatAttribute attr = (TextAnimationRepeatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation-repeat");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationRepeatAttribute</code> , See {@odf.attribute text:animation-repeat}
+	 *
+	 * @param textAnimationRepeatValue   The type is <code>Integer</code>
+	 */
+	public void setTextAnimationRepeatAttribute(Integer textAnimationRepeatValue) {
+		TextAnimationRepeatAttribute attr = new TextAnimationRepeatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textAnimationRepeatValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationStartInsideAttribute</code> , See {@odf.attribute text:animation-start-inside}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextAnimationStartInsideAttribute() {
+		TextAnimationStartInsideAttribute attr = (TextAnimationStartInsideAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation-start-inside");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationStartInsideAttribute</code> , See {@odf.attribute text:animation-start-inside}
+	 *
+	 * @param textAnimationStartInsideValue   The type is <code>Boolean</code>
+	 */
+	public void setTextAnimationStartInsideAttribute(Boolean textAnimationStartInsideValue) {
+		TextAnimationStartInsideAttribute attr = new TextAnimationStartInsideAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textAnimationStartInsideValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationStepsAttribute</code> , See {@odf.attribute text:animation-steps}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnimationStepsAttribute() {
+		TextAnimationStepsAttribute attr = (TextAnimationStepsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation-steps");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationStepsAttribute</code> , See {@odf.attribute text:animation-steps}
+	 *
+	 * @param textAnimationStepsValue   The type is <code>String</code>
+	 */
+	public void setTextAnimationStepsAttribute(String textAnimationStepsValue) {
+		TextAnimationStepsAttribute attr = new TextAnimationStepsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnimationStepsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnimationStopInsideAttribute</code> , See {@odf.attribute text:animation-stop-inside}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextAnimationStopInsideAttribute() {
+		TextAnimationStopInsideAttribute attr = (TextAnimationStopInsideAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "animation-stop-inside");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnimationStopInsideAttribute</code> , See {@odf.attribute text:animation-stop-inside}
+	 *
+	 * @param textAnimationStopInsideValue   The type is <code>Boolean</code>
+	 */
+	public void setTextAnimationStopInsideAttribute(Boolean textAnimationStopInsideValue) {
+		TextAnimationStopInsideAttribute attr = new TextAnimationStopInsideAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textAnimationStopInsideValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	/**
+	 * Create child element {@odf.element style:columns}.
+	 *
+	 * @param foColumnCountValue  the <code>Integer</code> value of <code>FoColumnCountAttribute</code>, see {@odf.attribute  fo:column-count} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:columns}
+	 */
+	 public StyleColumnsElement newStyleColumnsElement(int foColumnCountValue) {
+		StyleColumnsElement styleColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleColumnsElement.class);
+		styleColumns.setFoColumnCountAttribute(foColumnCountValue);
+		this.appendChild(styleColumns);
+		return styleColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-style}.
+	 *
+	 * @param styleNameValue  the <code>String</code> value of <code>StyleNameAttribute</code>, see {@odf.attribute  style:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:list-style}
+	 */
+	 public TextListStyleElement newTextListStyleElement(String styleNameValue) {
+		TextListStyleElement textListStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListStyleElement.class);
+		textListStyle.setStyleNameAttribute(styleNameValue);
+		this.appendChild(textListStyle);
+		return textListStyle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHandoutMasterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHandoutMasterElement.java
new file mode 100644
index 0000000..f9ed001
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHandoutMasterElement.java
@@ -0,0 +1,483 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationPresentationPageLayoutNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseDateTimeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseFooterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationUseHeaderNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePageLayoutNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:handout-master}.
+ *
+ */
+public class StyleHandoutMasterElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "handout-master");
+
+	/**
+	 * Create the instance of <code>StyleHandoutMasterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleHandoutMasterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.DrawingPage, OdfName.newName(OdfDocumentNamespace.STYLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:handout-master}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationPresentationPageLayoutNameAttribute</code> , See {@odf.attribute presentation:presentation-page-layout-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationPresentationPageLayoutNameAttribute() {
+		PresentationPresentationPageLayoutNameAttribute attr = (PresentationPresentationPageLayoutNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "presentation-page-layout-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationPresentationPageLayoutNameAttribute</code> , See {@odf.attribute presentation:presentation-page-layout-name}
+	 *
+	 * @param presentationPresentationPageLayoutNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationPresentationPageLayoutNameAttribute(String presentationPresentationPageLayoutNameValue) {
+		PresentationPresentationPageLayoutNameAttribute attr = new PresentationPresentationPageLayoutNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationPresentationPageLayoutNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseDateTimeNameAttribute</code> , See {@odf.attribute presentation:use-date-time-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseDateTimeNameAttribute() {
+		PresentationUseDateTimeNameAttribute attr = (PresentationUseDateTimeNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-date-time-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseDateTimeNameAttribute</code> , See {@odf.attribute presentation:use-date-time-name}
+	 *
+	 * @param presentationUseDateTimeNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseDateTimeNameAttribute(String presentationUseDateTimeNameValue) {
+		PresentationUseDateTimeNameAttribute attr = new PresentationUseDateTimeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseDateTimeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseFooterNameAttribute</code> , See {@odf.attribute presentation:use-footer-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseFooterNameAttribute() {
+		PresentationUseFooterNameAttribute attr = (PresentationUseFooterNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-footer-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseFooterNameAttribute</code> , See {@odf.attribute presentation:use-footer-name}
+	 *
+	 * @param presentationUseFooterNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseFooterNameAttribute(String presentationUseFooterNameValue) {
+		PresentationUseFooterNameAttribute attr = new PresentationUseFooterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseFooterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>PresentationUseHeaderNameAttribute</code> , See {@odf.attribute presentation:use-header-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getPresentationUseHeaderNameAttribute() {
+		PresentationUseHeaderNameAttribute attr = (PresentationUseHeaderNameAttribute) getOdfAttribute(OdfDocumentNamespace.PRESENTATION, "use-header-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>PresentationUseHeaderNameAttribute</code> , See {@odf.attribute presentation:use-header-name}
+	 *
+	 * @param presentationUseHeaderNameValue   The type is <code>String</code>
+	 */
+	public void setPresentationUseHeaderNameAttribute(String presentationUseHeaderNameValue) {
+		PresentationUseHeaderNameAttribute attr = new PresentationUseHeaderNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(presentationUseHeaderNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePageLayoutNameAttribute</code> , See {@odf.attribute style:page-layout-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePageLayoutNameAttribute() {
+		StylePageLayoutNameAttribute attr = (StylePageLayoutNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "page-layout-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePageLayoutNameAttribute</code> , See {@odf.attribute style:page-layout-name}
+	 *
+	 * @param stylePageLayoutNameValue   The type is <code>String</code>
+	 */
+	public void setStylePageLayoutNameAttribute(String stylePageLayoutNameValue) {
+		StylePageLayoutNameAttribute attr = new StylePageLayoutNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePageLayoutNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderElement.java
new file mode 100644
index 0000000..63673e0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:header}.
+ *
+ */
+public class StyleHeaderElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "header");
+
+	/**
+	 * Create the instance of <code>StyleHeaderElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleHeaderElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:header}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleDisplayAttribute() {
+		StyleDisplayAttribute attr = (StyleDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(StyleDisplayAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @param styleDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleDisplayAttribute(Boolean styleDisplayValue) {
+		StyleDisplayAttribute attr = new StyleDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-center}.
+	 *
+	 * @return the element {@odf.element style:region-center}
+	 */
+	public StyleRegionCenterElement newStyleRegionCenterElement() {
+		StyleRegionCenterElement styleRegionCenter = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionCenterElement.class);
+		this.appendChild(styleRegionCenter);
+		return styleRegionCenter;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-left}.
+	 *
+	 * @return the element {@odf.element style:region-left}
+	 */
+	public StyleRegionLeftElement newStyleRegionLeftElement() {
+		StyleRegionLeftElement styleRegionLeft = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionLeftElement.class);
+		this.appendChild(styleRegionLeft);
+		return styleRegionLeft;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-right}.
+	 *
+	 * @return the element {@odf.element style:region-right}
+	 */
+	public StyleRegionRightElement newStyleRegionRightElement() {
+		StyleRegionRightElement styleRegionRight = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionRightElement.class);
+		this.appendChild(styleRegionRight);
+		return styleRegionRight;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:index-title}
+	 */
+	 public TextIndexTitleElement newTextIndexTitleElement(String textNameValue) {
+		TextIndexTitleElement textIndexTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleElement.class);
+		textIndexTitle.setTextNameAttribute(textNameValue);
+		this.appendChild(textIndexTitle);
+		return textIndexTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tracked-changes}.
+	 *
+	 * @return the element {@odf.element text:tracked-changes}
+	 */
+	public TextTrackedChangesElement newTextTrackedChangesElement() {
+		TextTrackedChangesElement textTrackedChanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTrackedChangesElement.class);
+		this.appendChild(textTrackedChanges);
+		return textTrackedChanges;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderFooterPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderFooterPropertiesElement.java
new file mode 100644
index 0000000..f863aa3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderFooterPropertiesElement.java
@@ -0,0 +1,787 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMinHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDynamicSpacingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgHeightAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:header-footer-properties}.
+ *
+ */
+public class StyleHeaderFooterPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "header-footer-properties");
+
+	/**
+	 * Create the instance of <code>StyleHeaderFooterPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleHeaderFooterPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:header-footer-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+
+	public final static OdfStyleProperty MinHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "min-height"));
+
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+
+	public final static OdfStyleProperty DynamicSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "dynamic-spacing"));
+
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+
+	public final static OdfStyleProperty Height =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.SVG, "height"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderAttribute() {
+		FoBorderAttribute attr = (FoBorderAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @param foBorderValue   The type is <code>String</code>
+	 */
+	public void setFoBorderAttribute(String foBorderValue) {
+		FoBorderAttribute attr = new FoBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderBottomAttribute() {
+		FoBorderBottomAttribute attr = (FoBorderBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @param foBorderBottomValue   The type is <code>String</code>
+	 */
+	public void setFoBorderBottomAttribute(String foBorderBottomValue) {
+		FoBorderBottomAttribute attr = new FoBorderBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderLeftAttribute() {
+		FoBorderLeftAttribute attr = (FoBorderLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @param foBorderLeftValue   The type is <code>String</code>
+	 */
+	public void setFoBorderLeftAttribute(String foBorderLeftValue) {
+		FoBorderLeftAttribute attr = new FoBorderLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderRightAttribute() {
+		FoBorderRightAttribute attr = (FoBorderRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @param foBorderRightValue   The type is <code>String</code>
+	 */
+	public void setFoBorderRightAttribute(String foBorderRightValue) {
+		FoBorderRightAttribute attr = new FoBorderRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderTopAttribute() {
+		FoBorderTopAttribute attr = (FoBorderTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @param foBorderTopValue   The type is <code>String</code>
+	 */
+	public void setFoBorderTopAttribute(String foBorderTopValue) {
+		FoBorderTopAttribute attr = new FoBorderTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginAttribute() {
+		FoMarginAttribute attr = (FoMarginAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @param foMarginValue   The type is <code>String</code>
+	 */
+	public void setFoMarginAttribute(String foMarginValue) {
+		FoMarginAttribute attr = new FoMarginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginBottomAttribute() {
+		FoMarginBottomAttribute attr = (FoMarginBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @param foMarginBottomValue   The type is <code>String</code>
+	 */
+	public void setFoMarginBottomAttribute(String foMarginBottomValue) {
+		FoMarginBottomAttribute attr = new FoMarginBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginRightAttribute() {
+		FoMarginRightAttribute attr = (FoMarginRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @param foMarginRightValue   The type is <code>String</code>
+	 */
+	public void setFoMarginRightAttribute(String foMarginRightValue) {
+		FoMarginRightAttribute attr = new FoMarginRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginTopAttribute() {
+		FoMarginTopAttribute attr = (FoMarginTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @param foMarginTopValue   The type is <code>String</code>
+	 */
+	public void setFoMarginTopAttribute(String foMarginTopValue) {
+		FoMarginTopAttribute attr = new FoMarginTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMinHeightAttribute</code> , See {@odf.attribute fo:min-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMinHeightAttribute() {
+		FoMinHeightAttribute attr = (FoMinHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "min-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMinHeightAttribute</code> , See {@odf.attribute fo:min-height}
+	 *
+	 * @param foMinHeightValue   The type is <code>String</code>
+	 */
+	public void setFoMinHeightAttribute(String foMinHeightValue) {
+		FoMinHeightAttribute attr = new FoMinHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMinHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingAttribute() {
+		FoPaddingAttribute attr = (FoPaddingAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @param foPaddingValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingAttribute(String foPaddingValue) {
+		FoPaddingAttribute attr = new FoPaddingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingBottomAttribute() {
+		FoPaddingBottomAttribute attr = (FoPaddingBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @param foPaddingBottomValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingBottomAttribute(String foPaddingBottomValue) {
+		FoPaddingBottomAttribute attr = new FoPaddingBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingLeftAttribute() {
+		FoPaddingLeftAttribute attr = (FoPaddingLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @param foPaddingLeftValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingLeftAttribute(String foPaddingLeftValue) {
+		FoPaddingLeftAttribute attr = new FoPaddingLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingRightAttribute() {
+		FoPaddingRightAttribute attr = (FoPaddingRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @param foPaddingRightValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingRightAttribute(String foPaddingRightValue) {
+		FoPaddingRightAttribute attr = new FoPaddingRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingTopAttribute() {
+		FoPaddingTopAttribute attr = (FoPaddingTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @param foPaddingTopValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingTopAttribute(String foPaddingTopValue) {
+		FoPaddingTopAttribute attr = new FoPaddingTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthAttribute() {
+		StyleBorderLineWidthAttribute attr = (StyleBorderLineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @param styleBorderLineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthAttribute(String styleBorderLineWidthValue) {
+		StyleBorderLineWidthAttribute attr = new StyleBorderLineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthBottomAttribute() {
+		StyleBorderLineWidthBottomAttribute attr = (StyleBorderLineWidthBottomAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @param styleBorderLineWidthBottomValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthBottomAttribute(String styleBorderLineWidthBottomValue) {
+		StyleBorderLineWidthBottomAttribute attr = new StyleBorderLineWidthBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthLeftAttribute() {
+		StyleBorderLineWidthLeftAttribute attr = (StyleBorderLineWidthLeftAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @param styleBorderLineWidthLeftValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthLeftAttribute(String styleBorderLineWidthLeftValue) {
+		StyleBorderLineWidthLeftAttribute attr = new StyleBorderLineWidthLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthRightAttribute() {
+		StyleBorderLineWidthRightAttribute attr = (StyleBorderLineWidthRightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @param styleBorderLineWidthRightValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthRightAttribute(String styleBorderLineWidthRightValue) {
+		StyleBorderLineWidthRightAttribute attr = new StyleBorderLineWidthRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthTopAttribute() {
+		StyleBorderLineWidthTopAttribute attr = (StyleBorderLineWidthTopAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @param styleBorderLineWidthTopValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthTopAttribute(String styleBorderLineWidthTopValue) {
+		StyleBorderLineWidthTopAttribute attr = new StyleBorderLineWidthTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDynamicSpacingAttribute</code> , See {@odf.attribute style:dynamic-spacing}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleDynamicSpacingAttribute() {
+		StyleDynamicSpacingAttribute attr = (StyleDynamicSpacingAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "dynamic-spacing");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDynamicSpacingAttribute</code> , See {@odf.attribute style:dynamic-spacing}
+	 *
+	 * @param styleDynamicSpacingValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleDynamicSpacingAttribute(Boolean styleDynamicSpacingValue) {
+		StyleDynamicSpacingAttribute attr = new StyleDynamicSpacingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleDynamicSpacingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleShadowAttribute() {
+		StyleShadowAttribute attr = (StyleShadowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @param styleShadowValue   The type is <code>String</code>
+	 */
+	public void setStyleShadowAttribute(String styleShadowValue) {
+		StyleShadowAttribute attr = new StyleShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgHeightAttribute() {
+		SvgHeightAttribute attr = (SvgHeightAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgHeightAttribute</code> , See {@odf.attribute svg:height}
+	 *
+	 * @param svgHeightValue   The type is <code>String</code>
+	 */
+	public void setSvgHeightAttribute(String svgHeightValue) {
+		SvgHeightAttribute attr = new SvgHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgHeightValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderLeftElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderLeftElement.java
new file mode 100644
index 0000000..60afabb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderLeftElement.java
@@ -0,0 +1,425 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexAutoMarkFileElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDdeConnectionDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:header-left}.
+ *
+ */
+public class StyleHeaderLeftElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "header-left");
+
+	/**
+	 * Create the instance of <code>StyleHeaderLeftElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleHeaderLeftElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:header-left}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleDisplayAttribute() {
+		StyleDisplayAttribute attr = (StyleDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(StyleDisplayAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayAttribute</code> , See {@odf.attribute style:display}
+	 *
+	 * @param styleDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleDisplayAttribute(Boolean styleDisplayValue) {
+		StyleDisplayAttribute attr = new StyleDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-center}.
+	 *
+	 * @return the element {@odf.element style:region-center}
+	 */
+	public StyleRegionCenterElement newStyleRegionCenterElement() {
+		StyleRegionCenterElement styleRegionCenter = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionCenterElement.class);
+		this.appendChild(styleRegionCenter);
+		return styleRegionCenter;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-left}.
+	 *
+	 * @return the element {@odf.element style:region-left}
+	 */
+	public StyleRegionLeftElement newStyleRegionLeftElement() {
+		StyleRegionLeftElement styleRegionLeft = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionLeftElement.class);
+		this.appendChild(styleRegionLeft);
+		return styleRegionLeft;
+	}
+
+	/**
+	 * Create child element {@odf.element style:region-right}.
+	 *
+	 * @return the element {@odf.element style:region-right}
+	 */
+	public StyleRegionRightElement newStyleRegionRightElement() {
+		StyleRegionRightElement styleRegionRight = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRegionRightElement.class);
+		this.appendChild(styleRegionRight);
+		return styleRegionRight;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:alphabetical-index-auto-mark-file}
+	 */
+	 public TextAlphabeticalIndexAutoMarkFileElement newTextAlphabeticalIndexAutoMarkFileElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAlphabeticalIndexAutoMarkFileElement textAlphabeticalIndexAutoMarkFile = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexAutoMarkFileElement.class);
+		textAlphabeticalIndexAutoMarkFile.setXlinkHrefAttribute(xlinkHrefValue);
+		textAlphabeticalIndexAutoMarkFile.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textAlphabeticalIndexAutoMarkFile);
+		return textAlphabeticalIndexAutoMarkFile;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decls}.
+	 *
+	 * @return the element {@odf.element text:dde-connection-decls}
+	 */
+	public TextDdeConnectionDeclsElement newTextDdeConnectionDeclsElement() {
+		TextDdeConnectionDeclsElement textDdeConnectionDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclsElement.class);
+		this.appendChild(textDdeConnectionDecls);
+		return textDdeConnectionDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:index-title}
+	 */
+	 public TextIndexTitleElement newTextIndexTitleElement(String textNameValue) {
+		TextIndexTitleElement textIndexTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleElement.class);
+		textIndexTitle.setTextNameAttribute(textNameValue);
+		this.appendChild(textIndexTitle);
+		return textIndexTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decls}.
+	 *
+	 * @return the element {@odf.element text:sequence-decls}
+	 */
+	public TextSequenceDeclsElement newTextSequenceDeclsElement() {
+		TextSequenceDeclsElement textSequenceDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclsElement.class);
+		this.appendChild(textSequenceDecls);
+		return textSequenceDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tracked-changes}.
+	 *
+	 * @return the element {@odf.element text:tracked-changes}
+	 */
+	public TextTrackedChangesElement newTextTrackedChangesElement() {
+		TextTrackedChangesElement textTrackedChanges = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTrackedChangesElement.class);
+		this.appendChild(textTrackedChanges);
+		return textTrackedChanges;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decls}.
+	 *
+	 * @return the element {@odf.element text:user-field-decls}
+	 */
+	public TextUserFieldDeclsElement newTextUserFieldDeclsElement() {
+		TextUserFieldDeclsElement textUserFieldDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclsElement.class);
+		this.appendChild(textUserFieldDecls);
+		return textUserFieldDecls;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decls}.
+	 *
+	 * @return the element {@odf.element text:variable-decls}
+	 */
+	public TextVariableDeclsElement newTextVariableDeclsElement() {
+		TextVariableDeclsElement textVariableDecls = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclsElement.class);
+		this.appendChild(textVariableDecls);
+		return textVariableDecls;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderStyleElement.java
new file mode 100644
index 0000000..5dec9a2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleHeaderStyleElement.java
@@ -0,0 +1,82 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:header-style}.
+ *
+ */
+public class StyleHeaderStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "header-style");
+
+	/**
+	 * Create the instance of <code>StyleHeaderStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleHeaderStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:header-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element style:header-footer-properties}.
+	 *
+	 * @return the element {@odf.element style:header-footer-properties}
+	 */
+	public StyleHeaderFooterPropertiesElement newStyleHeaderFooterPropertiesElement() {
+		StyleHeaderFooterPropertiesElement styleHeaderFooterProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHeaderFooterPropertiesElement.class);
+		this.appendChild(styleHeaderFooterProperties);
+		return styleHeaderFooterProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleListLevelLabelAlignmentElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleListLevelLabelAlignmentElement.java
new file mode 100644
index 0000000..eda05e3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleListLevelLabelAlignmentElement.java
@@ -0,0 +1,173 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextIndentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLabelFollowedByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextListTabStopPositionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:list-level-label-alignment}.
+ *
+ */
+public class StyleListLevelLabelAlignmentElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "list-level-label-alignment");
+
+	/**
+	 * Create the instance of <code>StyleListLevelLabelAlignmentElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleListLevelLabelAlignmentElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:list-level-label-alignment}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextIndentAttribute</code> , See {@odf.attribute fo:text-indent}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextIndentAttribute() {
+		FoTextIndentAttribute attr = (FoTextIndentAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-indent");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextIndentAttribute</code> , See {@odf.attribute fo:text-indent}
+	 *
+	 * @param foTextIndentValue   The type is <code>String</code>
+	 */
+	public void setFoTextIndentAttribute(String foTextIndentValue) {
+		FoTextIndentAttribute attr = new FoTextIndentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextIndentValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLabelFollowedByAttribute</code> , See {@odf.attribute text:label-followed-by}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextLabelFollowedByAttribute() {
+		TextLabelFollowedByAttribute attr = (TextLabelFollowedByAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "label-followed-by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLabelFollowedByAttribute</code> , See {@odf.attribute text:label-followed-by}
+	 *
+	 * @param textLabelFollowedByValue   The type is <code>String</code>
+	 */
+	public void setTextLabelFollowedByAttribute(String textLabelFollowedByValue) {
+		TextLabelFollowedByAttribute attr = new TextLabelFollowedByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textLabelFollowedByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextListTabStopPositionAttribute</code> , See {@odf.attribute text:list-tab-stop-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextListTabStopPositionAttribute() {
+		TextListTabStopPositionAttribute attr = (TextListTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "list-tab-stop-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextListTabStopPositionAttribute</code> , See {@odf.attribute text:list-tab-stop-position}
+	 *
+	 * @param textListTabStopPositionValue   The type is <code>String</code>
+	 */
+	public void setTextListTabStopPositionAttribute(String textListTabStopPositionValue) {
+		TextListTabStopPositionAttribute attr = new TextListTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textListTabStopPositionValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleListLevelPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleListLevelPropertiesElement.java
new file mode 100644
index 0000000..5644065
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleListLevelPropertiesElement.java
@@ -0,0 +1,397 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalPosAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalRelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgYAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextListLevelPositionAndSpaceModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMinLabelDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMinLabelWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSpaceBeforeAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:list-level-properties}.
+ *
+ */
+public class StyleListLevelPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "list-level-properties");
+
+	/**
+	 * Create the instance of <code>StyleListLevelPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleListLevelPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:list-level-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty Height =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.FO, "height"));
+
+	public final static OdfStyleProperty TextAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-align"));
+
+	public final static OdfStyleProperty Width =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.FO, "width"));
+
+	public final static OdfStyleProperty FontName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name"));
+
+	public final static OdfStyleProperty VerticalPos =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-pos"));
+
+	public final static OdfStyleProperty VerticalRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-rel"));
+
+	public final static OdfStyleProperty Y =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.SVG, "y"));
+
+	public final static OdfStyleProperty ListLevelPositionAndSpaceMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "list-level-position-and-space-mode"));
+
+	public final static OdfStyleProperty MinLabelDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "min-label-distance"));
+
+	public final static OdfStyleProperty MinLabelWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "min-label-width"));
+
+	public final static OdfStyleProperty SpaceBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "space-before"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoHeightAttribute</code> , See {@odf.attribute fo:height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoHeightAttribute() {
+		FoHeightAttribute attr = (FoHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoHeightAttribute</code> , See {@odf.attribute fo:height}
+	 *
+	 * @param foHeightValue   The type is <code>String</code>
+	 */
+	public void setFoHeightAttribute(String foHeightValue) {
+		FoHeightAttribute attr = new FoHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextAlignAttribute</code> , See {@odf.attribute fo:text-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextAlignAttribute() {
+		FoTextAlignAttribute attr = (FoTextAlignAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextAlignAttribute</code> , See {@odf.attribute fo:text-align}
+	 *
+	 * @param foTextAlignValue   The type is <code>String</code>
+	 */
+	public void setFoTextAlignAttribute(String foTextAlignValue) {
+		FoTextAlignAttribute attr = new FoTextAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoWidthAttribute</code> , See {@odf.attribute fo:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoWidthAttribute() {
+		FoWidthAttribute attr = (FoWidthAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoWidthAttribute</code> , See {@odf.attribute fo:width}
+	 *
+	 * @param foWidthValue   The type is <code>String</code>
+	 */
+	public void setFoWidthAttribute(String foWidthValue) {
+		FoWidthAttribute attr = new FoWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontNameAttribute</code> , See {@odf.attribute style:font-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontNameAttribute() {
+		StyleFontNameAttribute attr = (StyleFontNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontNameAttribute</code> , See {@odf.attribute style:font-name}
+	 *
+	 * @param styleFontNameValue   The type is <code>String</code>
+	 */
+	public void setStyleFontNameAttribute(String styleFontNameValue) {
+		StyleFontNameAttribute attr = new StyleFontNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalPosAttribute</code> , See {@odf.attribute style:vertical-pos}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalPosAttribute() {
+		StyleVerticalPosAttribute attr = (StyleVerticalPosAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-pos");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalPosAttribute</code> , See {@odf.attribute style:vertical-pos}
+	 *
+	 * @param styleVerticalPosValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalPosAttribute(String styleVerticalPosValue) {
+		StyleVerticalPosAttribute attr = new StyleVerticalPosAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalPosValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalRelAttribute</code> , See {@odf.attribute style:vertical-rel}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalRelAttribute() {
+		StyleVerticalRelAttribute attr = (StyleVerticalRelAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-rel");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalRelAttribute</code> , See {@odf.attribute style:vertical-rel}
+	 *
+	 * @param styleVerticalRelValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalRelAttribute(String styleVerticalRelValue) {
+		StyleVerticalRelAttribute attr = new StyleVerticalRelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalRelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgYAttribute() {
+		SvgYAttribute attr = (SvgYAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgYAttribute</code> , See {@odf.attribute svg:y}
+	 *
+	 * @param svgYValue   The type is <code>String</code>
+	 */
+	public void setSvgYAttribute(String svgYValue) {
+		SvgYAttribute attr = new SvgYAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgYValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextListLevelPositionAndSpaceModeAttribute</code> , See {@odf.attribute text:list-level-position-and-space-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextListLevelPositionAndSpaceModeAttribute() {
+		TextListLevelPositionAndSpaceModeAttribute attr = (TextListLevelPositionAndSpaceModeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "list-level-position-and-space-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextListLevelPositionAndSpaceModeAttribute</code> , See {@odf.attribute text:list-level-position-and-space-mode}
+	 *
+	 * @param textListLevelPositionAndSpaceModeValue   The type is <code>String</code>
+	 */
+	public void setTextListLevelPositionAndSpaceModeAttribute(String textListLevelPositionAndSpaceModeValue) {
+		TextListLevelPositionAndSpaceModeAttribute attr = new TextListLevelPositionAndSpaceModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textListLevelPositionAndSpaceModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMinLabelDistanceAttribute</code> , See {@odf.attribute text:min-label-distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextMinLabelDistanceAttribute() {
+		TextMinLabelDistanceAttribute attr = (TextMinLabelDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "min-label-distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMinLabelDistanceAttribute</code> , See {@odf.attribute text:min-label-distance}
+	 *
+	 * @param textMinLabelDistanceValue   The type is <code>String</code>
+	 */
+	public void setTextMinLabelDistanceAttribute(String textMinLabelDistanceValue) {
+		TextMinLabelDistanceAttribute attr = new TextMinLabelDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textMinLabelDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMinLabelWidthAttribute</code> , See {@odf.attribute text:min-label-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextMinLabelWidthAttribute() {
+		TextMinLabelWidthAttribute attr = (TextMinLabelWidthAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "min-label-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMinLabelWidthAttribute</code> , See {@odf.attribute text:min-label-width}
+	 *
+	 * @param textMinLabelWidthValue   The type is <code>String</code>
+	 */
+	public void setTextMinLabelWidthAttribute(String textMinLabelWidthValue) {
+		TextMinLabelWidthAttribute attr = new TextMinLabelWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textMinLabelWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSpaceBeforeAttribute</code> , See {@odf.attribute text:space-before}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSpaceBeforeAttribute() {
+		TextSpaceBeforeAttribute attr = (TextSpaceBeforeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "space-before");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSpaceBeforeAttribute</code> , See {@odf.attribute text:space-before}
+	 *
+	 * @param textSpaceBeforeValue   The type is <code>String</code>
+	 */
+	public void setTextSpaceBeforeAttribute(String textSpaceBeforeValue) {
+		TextSpaceBeforeAttribute attr = new TextSpaceBeforeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSpaceBeforeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:list-level-label-alignment}.
+	 *
+	 * @param textLabelFollowedByValue  the <code>String</code> value of <code>TextLabelFollowedByAttribute</code>, see {@odf.attribute  text:label-followed-by} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:list-level-label-alignment}
+	 */
+	 public StyleListLevelLabelAlignmentElement newStyleListLevelLabelAlignmentElement(String textLabelFollowedByValue) {
+		StyleListLevelLabelAlignmentElement styleListLevelLabelAlignment = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleListLevelLabelAlignmentElement.class);
+		styleListLevelLabelAlignment.setTextLabelFollowedByAttribute(textLabelFollowedByValue);
+		this.appendChild(styleListLevelLabelAlignment);
+		return styleListLevelLabelAlignment;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleMapElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleMapElement.java
new file mode 100644
index 0000000..d0a56c6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleMapElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleApplyStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBaseCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleConditionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:map}.
+ *
+ */
+public class StyleMapElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "map");
+
+	/**
+	 * Create the instance of <code>StyleMapElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleMapElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:map}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleApplyStyleNameAttribute</code> , See {@odf.attribute style:apply-style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleApplyStyleNameAttribute() {
+		StyleApplyStyleNameAttribute attr = (StyleApplyStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "apply-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleApplyStyleNameAttribute</code> , See {@odf.attribute style:apply-style-name}
+	 *
+	 * @param styleApplyStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleApplyStyleNameAttribute(String styleApplyStyleNameValue) {
+		StyleApplyStyleNameAttribute attr = new StyleApplyStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleApplyStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBaseCellAddressAttribute</code> , See {@odf.attribute style:base-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBaseCellAddressAttribute() {
+		StyleBaseCellAddressAttribute attr = (StyleBaseCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "base-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBaseCellAddressAttribute</code> , See {@odf.attribute style:base-cell-address}
+	 *
+	 * @param styleBaseCellAddressValue   The type is <code>String</code>
+	 */
+	public void setStyleBaseCellAddressAttribute(String styleBaseCellAddressValue) {
+		StyleBaseCellAddressAttribute attr = new StyleBaseCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBaseCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleConditionAttribute</code> , See {@odf.attribute style:condition}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleConditionAttribute() {
+		StyleConditionAttribute attr = (StyleConditionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleConditionAttribute</code> , See {@odf.attribute style:condition}
+	 *
+	 * @param styleConditionValue   The type is <code>String</code>
+	 */
+	public void setStyleConditionAttribute(String styleConditionValue) {
+		StyleConditionAttribute attr = new StyleConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleConditionValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleMasterPageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleMasterPageElement.java
new file mode 100644
index 0000000..d75abdd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleMasterPageElement.java
@@ -0,0 +1,712 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateColorElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateMotionElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateTransformElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAudioElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimCommandElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimIterateElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimParElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimSeqElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimSetElement;
+import org.odftoolkit.odfdom.dom.element.anim.AnimTransitionFilterElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLayerSetElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePageLayoutNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:master-page}.
+ *
+ */
+public class StyleMasterPageElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "master-page");
+
+	/**
+	 * Create the instance of <code>StyleMasterPageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleMasterPageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.DrawingPage, OdfName.newName(OdfDocumentNamespace.STYLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:master-page}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawStyleNameAttribute() {
+		DrawStyleNameAttribute attr = (DrawStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawStyleNameAttribute</code> , See {@odf.attribute draw:style-name}
+	 *
+	 * @param drawStyleNameValue   The type is <code>String</code>
+	 */
+	public void setDrawStyleNameAttribute(String drawStyleNameValue) {
+		DrawStyleNameAttribute attr = new DrawStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNextStyleNameAttribute</code> , See {@odf.attribute style:next-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNextStyleNameAttribute() {
+		StyleNextStyleNameAttribute attr = (StyleNextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "next-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNextStyleNameAttribute</code> , See {@odf.attribute style:next-style-name}
+	 *
+	 * @param styleNextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNextStyleNameAttribute(String styleNextStyleNameValue) {
+		StyleNextStyleNameAttribute attr = new StyleNextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePageLayoutNameAttribute</code> , See {@odf.attribute style:page-layout-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePageLayoutNameAttribute() {
+		StylePageLayoutNameAttribute attr = (StylePageLayoutNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "page-layout-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePageLayoutNameAttribute</code> , See {@odf.attribute style:page-layout-name}
+	 *
+	 * @param stylePageLayoutNameValue   The type is <code>String</code>
+	 */
+	public void setStylePageLayoutNameAttribute(String stylePageLayoutNameValue) {
+		StylePageLayoutNameAttribute attr = new StylePageLayoutNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePageLayoutNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animate}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:animate}
+	 */
+	 public AnimAnimateElement newAnimAnimateElement(String smilAttributeNameValue) {
+		AnimAnimateElement animAnimate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateElement.class);
+		animAnimate.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimate);
+		return animAnimate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateColor}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:animateColor}
+	 */
+	 public AnimAnimateColorElement newAnimAnimateColorElement(String smilAttributeNameValue) {
+		AnimAnimateColorElement animAnimateColor = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateColorElement.class);
+		animAnimateColor.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateColor);
+		return animAnimateColor;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateMotion}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:animateMotion}
+	 */
+	 public AnimAnimateMotionElement newAnimAnimateMotionElement(String smilAttributeNameValue) {
+		AnimAnimateMotionElement animAnimateMotion = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateMotionElement.class);
+		animAnimateMotion.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animAnimateMotion);
+		return animAnimateMotion;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:animateTransform}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * @param svgTypeValue  the <code>String</code> value of <code>SvgTypeAttribute</code>, see {@odf.attribute  svg:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:animateTransform}
+	 */
+	 public AnimAnimateTransformElement newAnimAnimateTransformElement(String smilAttributeNameValue, String svgTypeValue) {
+		AnimAnimateTransformElement animAnimateTransform = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAnimateTransformElement.class);
+		animAnimateTransform.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		animAnimateTransform.setSvgTypeAttribute(svgTypeValue);
+		this.appendChild(animAnimateTransform);
+		return animAnimateTransform;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:audio}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:audio}
+	 */
+	public AnimAudioElement newAnimAudioElement() {
+		AnimAudioElement animAudio = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimAudioElement.class);
+		this.appendChild(animAudio);
+		return animAudio;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:command}.
+	 *
+	 * @param animCommandValue  the <code>String</code> value of <code>AnimCommandAttribute</code>, see {@odf.attribute  anim:command} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:command}
+	 */
+	 public AnimCommandElement newAnimCommandElement(String animCommandValue) {
+		AnimCommandElement animCommand = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimCommandElement.class);
+		animCommand.setAnimCommandAttribute(animCommandValue);
+		this.appendChild(animCommand);
+		return animCommand;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:iterate}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:iterate}
+	 */
+	public AnimIterateElement newAnimIterateElement() {
+		AnimIterateElement animIterate = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimIterateElement.class);
+		this.appendChild(animIterate);
+		return animIterate;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:par}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:par}
+	 */
+	public AnimParElement newAnimParElement() {
+		AnimParElement animPar = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimParElement.class);
+		this.appendChild(animPar);
+		return animPar;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:seq}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:seq}
+	 */
+	public AnimSeqElement newAnimSeqElement() {
+		AnimSeqElement animSeq = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSeqElement.class);
+		this.appendChild(animSeq);
+		return animSeq;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:set}.
+	 *
+	 * @param smilAttributeNameValue  the <code>String</code> value of <code>SmilAttributeNameAttribute</code>, see {@odf.attribute  smil:attributeName} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:set}
+	 */
+	 public AnimSetElement newAnimSetElement(String smilAttributeNameValue) {
+		AnimSetElement animSet = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimSetElement.class);
+		animSet.setSmilAttributeNameAttribute(smilAttributeNameValue);
+		this.appendChild(animSet);
+		return animSet;
+	}
+
+	/**
+	 * Create child element {@odf.element anim:transitionFilter}.
+	 *
+	 * @param smilTypeValue  the <code>String</code> value of <code>SmilTypeAttribute</code>, see {@odf.attribute  smil:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element anim:transitionFilter}
+	 */
+	 public AnimTransitionFilterElement newAnimTransitionFilterElement(String smilTypeValue) {
+		AnimTransitionFilterElement animTransitionFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(AnimTransitionFilterElement.class);
+		animTransitionFilter.setSmilTypeAttribute(smilTypeValue);
+		this.appendChild(animTransitionFilter);
+		return animTransitionFilter;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:layer-set}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:layer-set}
+	 */
+	public DrawLayerSetElement newDrawLayerSetElement() {
+		DrawLayerSetElement drawLayerSet = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLayerSetElement.class);
+		this.appendChild(drawLayerSet);
+		return drawLayerSet;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:forms}.
+	 *
+	 * @return the element {@odf.element office:forms}
+	 */
+	public OfficeFormsElement newOfficeFormsElement() {
+		OfficeFormsElement officeForms = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFormsElement.class);
+		this.appendChild(officeForms);
+		return officeForms;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:notes}.
+	 *
+	 * @return the element {@odf.element presentation:notes}
+	 */
+	public PresentationNotesElement newPresentationNotesElement() {
+		PresentationNotesElement presentationNotes = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationNotesElement.class);
+		this.appendChild(presentationNotes);
+		return presentationNotes;
+	}
+
+	/**
+	 * Create child element {@odf.element style:footer}.
+	 *
+	 * @return the element {@odf.element style:footer}
+	 */
+	public StyleFooterElement newStyleFooterElement() {
+		StyleFooterElement styleFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleFooterElement.class);
+		this.appendChild(styleFooter);
+		return styleFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element style:footer-left}.
+	 *
+	 * @return the element {@odf.element style:footer-left}
+	 */
+	public StyleFooterLeftElement newStyleFooterLeftElement() {
+		StyleFooterLeftElement styleFooterLeft = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleFooterLeftElement.class);
+		this.appendChild(styleFooterLeft);
+		return styleFooterLeft;
+	}
+
+	/**
+	 * Create child element {@odf.element style:header}.
+	 *
+	 * @return the element {@odf.element style:header}
+	 */
+	public StyleHeaderElement newStyleHeaderElement() {
+		StyleHeaderElement styleHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHeaderElement.class);
+		this.appendChild(styleHeader);
+		return styleHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element style:header-left}.
+	 *
+	 * @return the element {@odf.element style:header-left}
+	 */
+	public StyleHeaderLeftElement newStyleHeaderLeftElement() {
+		StyleHeaderLeftElement styleHeaderLeft = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHeaderLeftElement.class);
+		this.appendChild(styleHeaderLeft);
+		return styleHeaderLeft;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePageLayoutElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePageLayoutElement.java
new file mode 100644
index 0000000..6e2d099
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePageLayoutElement.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePageUsageAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:page-layout}.
+ *
+ */
+public class StylePageLayoutElement extends OdfStyleBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "page-layout");
+
+	/**
+	 * Create the instance of <code>StylePageLayoutElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StylePageLayoutElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:page-layout}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePageUsageAttribute</code> , See {@odf.attribute style:page-usage}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePageUsageAttribute() {
+		StylePageUsageAttribute attr = (StylePageUsageAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "page-usage");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StylePageUsageAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePageUsageAttribute</code> , See {@odf.attribute style:page-usage}
+	 *
+	 * @param stylePageUsageValue   The type is <code>String</code>
+	 */
+	public void setStylePageUsageAttribute(String stylePageUsageValue) {
+		StylePageUsageAttribute attr = new StylePageUsageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePageUsageValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:footer-style}.
+	 *
+	 * @return the element {@odf.element style:footer-style}
+	 */
+	public StyleFooterStyleElement newStyleFooterStyleElement() {
+		StyleFooterStyleElement styleFooterStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleFooterStyleElement.class);
+		this.appendChild(styleFooterStyle);
+		return styleFooterStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:header-style}.
+	 *
+	 * @return the element {@odf.element style:header-style}
+	 */
+	public StyleHeaderStyleElement newStyleHeaderStyleElement() {
+		StyleHeaderStyleElement styleHeaderStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleHeaderStyleElement.class);
+		this.appendChild(styleHeaderStyle);
+		return styleHeaderStyle;
+	}
+
+	/**
+	 * Create child element {@odf.element style:page-layout-properties}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element style:page-layout-properties}
+	 */
+	 public StylePageLayoutPropertiesElement newStylePageLayoutPropertiesElement(String styleNumFormatValue) {
+		StylePageLayoutPropertiesElement stylePageLayoutProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StylePageLayoutPropertiesElement.class);
+		stylePageLayoutProperties.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(stylePageLayoutProperties);
+		return stylePageLayoutProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePageLayoutPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePageLayoutPropertiesElement.java
new file mode 100644
index 0000000..f15c43e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePageLayoutPropertiesElement.java
@@ -0,0 +1,1517 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPageHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPageWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFirstPageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFootnoteMaxHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridBaseHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridBaseWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridLinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridPrintAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridRubyBelowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridRubyHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridSnapToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLayoutGridStandardModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumPrefixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumSuffixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePaperTrayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePrintAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePrintOrientationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePrintPageOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRegisterTruthRefStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleScaleToAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleScaleToPagesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTableCenteringAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:page-layout-properties}.
+ *
+ */
+public class StylePageLayoutPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "page-layout-properties");
+
+	/**
+	 * Create the instance of <code>StylePageLayoutPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StylePageLayoutPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:page-layout-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+
+	public final static OdfStyleProperty PageHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "page-height"));
+
+	public final static OdfStyleProperty PageWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "page-width"));
+
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+
+	public final static OdfStyleProperty FirstPageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "first-page-number"));
+
+	public final static OdfStyleProperty FootnoteMaxHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "footnote-max-height"));
+
+	public final static OdfStyleProperty LayoutGridBaseHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-base-height"));
+
+	public final static OdfStyleProperty LayoutGridBaseWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-base-width"));
+
+	public final static OdfStyleProperty LayoutGridColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-color"));
+
+	public final static OdfStyleProperty LayoutGridDisplay =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-display"));
+
+	public final static OdfStyleProperty LayoutGridLines =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-lines"));
+
+	public final static OdfStyleProperty LayoutGridMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-mode"));
+
+	public final static OdfStyleProperty LayoutGridPrint =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-print"));
+
+	public final static OdfStyleProperty LayoutGridRubyBelow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-ruby-below"));
+
+	public final static OdfStyleProperty LayoutGridRubyHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-ruby-height"));
+
+	public final static OdfStyleProperty LayoutGridSnapTo =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-snap-to"));
+
+	public final static OdfStyleProperty LayoutGridStandardMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-standard-mode"));
+
+	public final static OdfStyleProperty NumFormat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-format"));
+
+	public final static OdfStyleProperty NumLetterSync =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-letter-sync"));
+
+	public final static OdfStyleProperty NumPrefix =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-prefix"));
+
+	public final static OdfStyleProperty NumSuffix =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-suffix"));
+
+	public final static OdfStyleProperty PaperTrayName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "paper-tray-name"));
+
+	public final static OdfStyleProperty Print =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print"));
+
+	public final static OdfStyleProperty PrintOrientation =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-orientation"));
+
+	public final static OdfStyleProperty PrintPageOrder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-page-order"));
+
+	public final static OdfStyleProperty RegisterTruthRefStyleName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "register-truth-ref-style-name"));
+
+	public final static OdfStyleProperty ScaleTo =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "scale-to"));
+
+	public final static OdfStyleProperty ScaleToPages =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "scale-to-pages"));
+
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+
+	public final static OdfStyleProperty TableCentering =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "table-centering"));
+
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderAttribute() {
+		FoBorderAttribute attr = (FoBorderAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @param foBorderValue   The type is <code>String</code>
+	 */
+	public void setFoBorderAttribute(String foBorderValue) {
+		FoBorderAttribute attr = new FoBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderBottomAttribute() {
+		FoBorderBottomAttribute attr = (FoBorderBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @param foBorderBottomValue   The type is <code>String</code>
+	 */
+	public void setFoBorderBottomAttribute(String foBorderBottomValue) {
+		FoBorderBottomAttribute attr = new FoBorderBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderLeftAttribute() {
+		FoBorderLeftAttribute attr = (FoBorderLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @param foBorderLeftValue   The type is <code>String</code>
+	 */
+	public void setFoBorderLeftAttribute(String foBorderLeftValue) {
+		FoBorderLeftAttribute attr = new FoBorderLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderRightAttribute() {
+		FoBorderRightAttribute attr = (FoBorderRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @param foBorderRightValue   The type is <code>String</code>
+	 */
+	public void setFoBorderRightAttribute(String foBorderRightValue) {
+		FoBorderRightAttribute attr = new FoBorderRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderTopAttribute() {
+		FoBorderTopAttribute attr = (FoBorderTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @param foBorderTopValue   The type is <code>String</code>
+	 */
+	public void setFoBorderTopAttribute(String foBorderTopValue) {
+		FoBorderTopAttribute attr = new FoBorderTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginAttribute() {
+		FoMarginAttribute attr = (FoMarginAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @param foMarginValue   The type is <code>String</code>
+	 */
+	public void setFoMarginAttribute(String foMarginValue) {
+		FoMarginAttribute attr = new FoMarginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginBottomAttribute() {
+		FoMarginBottomAttribute attr = (FoMarginBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @param foMarginBottomValue   The type is <code>String</code>
+	 */
+	public void setFoMarginBottomAttribute(String foMarginBottomValue) {
+		FoMarginBottomAttribute attr = new FoMarginBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginRightAttribute() {
+		FoMarginRightAttribute attr = (FoMarginRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @param foMarginRightValue   The type is <code>String</code>
+	 */
+	public void setFoMarginRightAttribute(String foMarginRightValue) {
+		FoMarginRightAttribute attr = new FoMarginRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginTopAttribute() {
+		FoMarginTopAttribute attr = (FoMarginTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @param foMarginTopValue   The type is <code>String</code>
+	 */
+	public void setFoMarginTopAttribute(String foMarginTopValue) {
+		FoMarginTopAttribute attr = new FoMarginTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingAttribute() {
+		FoPaddingAttribute attr = (FoPaddingAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @param foPaddingValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingAttribute(String foPaddingValue) {
+		FoPaddingAttribute attr = new FoPaddingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingBottomAttribute() {
+		FoPaddingBottomAttribute attr = (FoPaddingBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @param foPaddingBottomValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingBottomAttribute(String foPaddingBottomValue) {
+		FoPaddingBottomAttribute attr = new FoPaddingBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingLeftAttribute() {
+		FoPaddingLeftAttribute attr = (FoPaddingLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @param foPaddingLeftValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingLeftAttribute(String foPaddingLeftValue) {
+		FoPaddingLeftAttribute attr = new FoPaddingLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingRightAttribute() {
+		FoPaddingRightAttribute attr = (FoPaddingRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @param foPaddingRightValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingRightAttribute(String foPaddingRightValue) {
+		FoPaddingRightAttribute attr = new FoPaddingRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingTopAttribute() {
+		FoPaddingTopAttribute attr = (FoPaddingTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @param foPaddingTopValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingTopAttribute(String foPaddingTopValue) {
+		FoPaddingTopAttribute attr = new FoPaddingTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPageHeightAttribute</code> , See {@odf.attribute fo:page-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPageHeightAttribute() {
+		FoPageHeightAttribute attr = (FoPageHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "page-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPageHeightAttribute</code> , See {@odf.attribute fo:page-height}
+	 *
+	 * @param foPageHeightValue   The type is <code>String</code>
+	 */
+	public void setFoPageHeightAttribute(String foPageHeightValue) {
+		FoPageHeightAttribute attr = new FoPageHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPageHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPageWidthAttribute</code> , See {@odf.attribute fo:page-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPageWidthAttribute() {
+		FoPageWidthAttribute attr = (FoPageWidthAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "page-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPageWidthAttribute</code> , See {@odf.attribute fo:page-width}
+	 *
+	 * @param foPageWidthValue   The type is <code>String</code>
+	 */
+	public void setFoPageWidthAttribute(String foPageWidthValue) {
+		FoPageWidthAttribute attr = new FoPageWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPageWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthAttribute() {
+		StyleBorderLineWidthAttribute attr = (StyleBorderLineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @param styleBorderLineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthAttribute(String styleBorderLineWidthValue) {
+		StyleBorderLineWidthAttribute attr = new StyleBorderLineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthBottomAttribute() {
+		StyleBorderLineWidthBottomAttribute attr = (StyleBorderLineWidthBottomAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @param styleBorderLineWidthBottomValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthBottomAttribute(String styleBorderLineWidthBottomValue) {
+		StyleBorderLineWidthBottomAttribute attr = new StyleBorderLineWidthBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthLeftAttribute() {
+		StyleBorderLineWidthLeftAttribute attr = (StyleBorderLineWidthLeftAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @param styleBorderLineWidthLeftValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthLeftAttribute(String styleBorderLineWidthLeftValue) {
+		StyleBorderLineWidthLeftAttribute attr = new StyleBorderLineWidthLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthRightAttribute() {
+		StyleBorderLineWidthRightAttribute attr = (StyleBorderLineWidthRightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @param styleBorderLineWidthRightValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthRightAttribute(String styleBorderLineWidthRightValue) {
+		StyleBorderLineWidthRightAttribute attr = new StyleBorderLineWidthRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthTopAttribute() {
+		StyleBorderLineWidthTopAttribute attr = (StyleBorderLineWidthTopAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @param styleBorderLineWidthTopValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthTopAttribute(String styleBorderLineWidthTopValue) {
+		StyleBorderLineWidthTopAttribute attr = new StyleBorderLineWidthTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFirstPageNumberAttribute</code> , See {@odf.attribute style:first-page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleFirstPageNumberAttribute() {
+		StyleFirstPageNumberAttribute attr = (StyleFirstPageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "first-page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFirstPageNumberAttribute</code> , See {@odf.attribute style:first-page-number}
+	 *
+	 * @param styleFirstPageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setStyleFirstPageNumberAttribute(Integer styleFirstPageNumberValue) {
+		StyleFirstPageNumberAttribute attr = new StyleFirstPageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleFirstPageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFootnoteMaxHeightAttribute</code> , See {@odf.attribute style:footnote-max-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFootnoteMaxHeightAttribute() {
+		StyleFootnoteMaxHeightAttribute attr = (StyleFootnoteMaxHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "footnote-max-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFootnoteMaxHeightAttribute</code> , See {@odf.attribute style:footnote-max-height}
+	 *
+	 * @param styleFootnoteMaxHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleFootnoteMaxHeightAttribute(String styleFootnoteMaxHeightValue) {
+		StyleFootnoteMaxHeightAttribute attr = new StyleFootnoteMaxHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFootnoteMaxHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridBaseHeightAttribute</code> , See {@odf.attribute style:layout-grid-base-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLayoutGridBaseHeightAttribute() {
+		StyleLayoutGridBaseHeightAttribute attr = (StyleLayoutGridBaseHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-base-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridBaseHeightAttribute</code> , See {@odf.attribute style:layout-grid-base-height}
+	 *
+	 * @param styleLayoutGridBaseHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleLayoutGridBaseHeightAttribute(String styleLayoutGridBaseHeightValue) {
+		StyleLayoutGridBaseHeightAttribute attr = new StyleLayoutGridBaseHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLayoutGridBaseHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridBaseWidthAttribute</code> , See {@odf.attribute style:layout-grid-base-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLayoutGridBaseWidthAttribute() {
+		StyleLayoutGridBaseWidthAttribute attr = (StyleLayoutGridBaseWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-base-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridBaseWidthAttribute</code> , See {@odf.attribute style:layout-grid-base-width}
+	 *
+	 * @param styleLayoutGridBaseWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleLayoutGridBaseWidthAttribute(String styleLayoutGridBaseWidthValue) {
+		StyleLayoutGridBaseWidthAttribute attr = new StyleLayoutGridBaseWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLayoutGridBaseWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridColorAttribute</code> , See {@odf.attribute style:layout-grid-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLayoutGridColorAttribute() {
+		StyleLayoutGridColorAttribute attr = (StyleLayoutGridColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridColorAttribute</code> , See {@odf.attribute style:layout-grid-color}
+	 *
+	 * @param styleLayoutGridColorValue   The type is <code>String</code>
+	 */
+	public void setStyleLayoutGridColorAttribute(String styleLayoutGridColorValue) {
+		StyleLayoutGridColorAttribute attr = new StyleLayoutGridColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLayoutGridColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridDisplayAttribute</code> , See {@odf.attribute style:layout-grid-display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleLayoutGridDisplayAttribute() {
+		StyleLayoutGridDisplayAttribute attr = (StyleLayoutGridDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridDisplayAttribute</code> , See {@odf.attribute style:layout-grid-display}
+	 *
+	 * @param styleLayoutGridDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleLayoutGridDisplayAttribute(Boolean styleLayoutGridDisplayValue) {
+		StyleLayoutGridDisplayAttribute attr = new StyleLayoutGridDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleLayoutGridDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridLinesAttribute</code> , See {@odf.attribute style:layout-grid-lines}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleLayoutGridLinesAttribute() {
+		StyleLayoutGridLinesAttribute attr = (StyleLayoutGridLinesAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-lines");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridLinesAttribute</code> , See {@odf.attribute style:layout-grid-lines}
+	 *
+	 * @param styleLayoutGridLinesValue   The type is <code>Integer</code>
+	 */
+	public void setStyleLayoutGridLinesAttribute(Integer styleLayoutGridLinesValue) {
+		StyleLayoutGridLinesAttribute attr = new StyleLayoutGridLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleLayoutGridLinesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridModeAttribute</code> , See {@odf.attribute style:layout-grid-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLayoutGridModeAttribute() {
+		StyleLayoutGridModeAttribute attr = (StyleLayoutGridModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridModeAttribute</code> , See {@odf.attribute style:layout-grid-mode}
+	 *
+	 * @param styleLayoutGridModeValue   The type is <code>String</code>
+	 */
+	public void setStyleLayoutGridModeAttribute(String styleLayoutGridModeValue) {
+		StyleLayoutGridModeAttribute attr = new StyleLayoutGridModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLayoutGridModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridPrintAttribute</code> , See {@odf.attribute style:layout-grid-print}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleLayoutGridPrintAttribute() {
+		StyleLayoutGridPrintAttribute attr = (StyleLayoutGridPrintAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-print");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridPrintAttribute</code> , See {@odf.attribute style:layout-grid-print}
+	 *
+	 * @param styleLayoutGridPrintValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleLayoutGridPrintAttribute(Boolean styleLayoutGridPrintValue) {
+		StyleLayoutGridPrintAttribute attr = new StyleLayoutGridPrintAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleLayoutGridPrintValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridRubyBelowAttribute</code> , See {@odf.attribute style:layout-grid-ruby-below}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleLayoutGridRubyBelowAttribute() {
+		StyleLayoutGridRubyBelowAttribute attr = (StyleLayoutGridRubyBelowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-ruby-below");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridRubyBelowAttribute</code> , See {@odf.attribute style:layout-grid-ruby-below}
+	 *
+	 * @param styleLayoutGridRubyBelowValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleLayoutGridRubyBelowAttribute(Boolean styleLayoutGridRubyBelowValue) {
+		StyleLayoutGridRubyBelowAttribute attr = new StyleLayoutGridRubyBelowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleLayoutGridRubyBelowValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridRubyHeightAttribute</code> , See {@odf.attribute style:layout-grid-ruby-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLayoutGridRubyHeightAttribute() {
+		StyleLayoutGridRubyHeightAttribute attr = (StyleLayoutGridRubyHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-ruby-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridRubyHeightAttribute</code> , See {@odf.attribute style:layout-grid-ruby-height}
+	 *
+	 * @param styleLayoutGridRubyHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleLayoutGridRubyHeightAttribute(String styleLayoutGridRubyHeightValue) {
+		StyleLayoutGridRubyHeightAttribute attr = new StyleLayoutGridRubyHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLayoutGridRubyHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridSnapToAttribute</code> , See {@odf.attribute style:layout-grid-snap-to}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleLayoutGridSnapToAttribute() {
+		StyleLayoutGridSnapToAttribute attr = (StyleLayoutGridSnapToAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-snap-to");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridSnapToAttribute</code> , See {@odf.attribute style:layout-grid-snap-to}
+	 *
+	 * @param styleLayoutGridSnapToValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleLayoutGridSnapToAttribute(Boolean styleLayoutGridSnapToValue) {
+		StyleLayoutGridSnapToAttribute attr = new StyleLayoutGridSnapToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleLayoutGridSnapToValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLayoutGridStandardModeAttribute</code> , See {@odf.attribute style:layout-grid-standard-mode}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleLayoutGridStandardModeAttribute() {
+		StyleLayoutGridStandardModeAttribute attr = (StyleLayoutGridStandardModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "layout-grid-standard-mode");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLayoutGridStandardModeAttribute</code> , See {@odf.attribute style:layout-grid-standard-mode}
+	 *
+	 * @param styleLayoutGridStandardModeValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleLayoutGridStandardModeAttribute(Boolean styleLayoutGridStandardModeValue) {
+		StyleLayoutGridStandardModeAttribute attr = new StyleLayoutGridStandardModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleLayoutGridStandardModeValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumPrefixAttribute() {
+		StyleNumPrefixAttribute attr = (StyleNumPrefixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-prefix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @param styleNumPrefixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumPrefixAttribute(String styleNumPrefixValue) {
+		StyleNumPrefixAttribute attr = new StyleNumPrefixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumPrefixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumSuffixAttribute() {
+		StyleNumSuffixAttribute attr = (StyleNumSuffixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-suffix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @param styleNumSuffixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumSuffixAttribute(String styleNumSuffixValue) {
+		StyleNumSuffixAttribute attr = new StyleNumSuffixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumSuffixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePaperTrayNameAttribute</code> , See {@odf.attribute style:paper-tray-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePaperTrayNameAttribute() {
+		StylePaperTrayNameAttribute attr = (StylePaperTrayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "paper-tray-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePaperTrayNameAttribute</code> , See {@odf.attribute style:paper-tray-name}
+	 *
+	 * @param stylePaperTrayNameValue   The type is <code>String</code>
+	 */
+	public void setStylePaperTrayNameAttribute(String stylePaperTrayNameValue) {
+		StylePaperTrayNameAttribute attr = new StylePaperTrayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePaperTrayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePrintAttribute</code> , See {@odf.attribute style:print}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePrintAttribute() {
+		StylePrintAttribute attr = (StylePrintAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "print");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePrintAttribute</code> , See {@odf.attribute style:print}
+	 *
+	 * @param stylePrintValue   The type is <code>String</code>
+	 */
+	public void setStylePrintAttribute(String stylePrintValue) {
+		StylePrintAttribute attr = new StylePrintAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePrintValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePrintOrientationAttribute</code> , See {@odf.attribute style:print-orientation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePrintOrientationAttribute() {
+		StylePrintOrientationAttribute attr = (StylePrintOrientationAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "print-orientation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePrintOrientationAttribute</code> , See {@odf.attribute style:print-orientation}
+	 *
+	 * @param stylePrintOrientationValue   The type is <code>String</code>
+	 */
+	public void setStylePrintOrientationAttribute(String stylePrintOrientationValue) {
+		StylePrintOrientationAttribute attr = new StylePrintOrientationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePrintOrientationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePrintPageOrderAttribute</code> , See {@odf.attribute style:print-page-order}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePrintPageOrderAttribute() {
+		StylePrintPageOrderAttribute attr = (StylePrintPageOrderAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "print-page-order");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePrintPageOrderAttribute</code> , See {@odf.attribute style:print-page-order}
+	 *
+	 * @param stylePrintPageOrderValue   The type is <code>String</code>
+	 */
+	public void setStylePrintPageOrderAttribute(String stylePrintPageOrderValue) {
+		StylePrintPageOrderAttribute attr = new StylePrintPageOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePrintPageOrderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRegisterTruthRefStyleNameAttribute</code> , See {@odf.attribute style:register-truth-ref-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRegisterTruthRefStyleNameAttribute() {
+		StyleRegisterTruthRefStyleNameAttribute attr = (StyleRegisterTruthRefStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "register-truth-ref-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRegisterTruthRefStyleNameAttribute</code> , See {@odf.attribute style:register-truth-ref-style-name}
+	 *
+	 * @param styleRegisterTruthRefStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleRegisterTruthRefStyleNameAttribute(String styleRegisterTruthRefStyleNameValue) {
+		StyleRegisterTruthRefStyleNameAttribute attr = new StyleRegisterTruthRefStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRegisterTruthRefStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleScaleToAttribute</code> , See {@odf.attribute style:scale-to}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleScaleToAttribute() {
+		StyleScaleToAttribute attr = (StyleScaleToAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "scale-to");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleScaleToAttribute</code> , See {@odf.attribute style:scale-to}
+	 *
+	 * @param styleScaleToValue   The type is <code>String</code>
+	 */
+	public void setStyleScaleToAttribute(String styleScaleToValue) {
+		StyleScaleToAttribute attr = new StyleScaleToAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleScaleToValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleScaleToPagesAttribute</code> , See {@odf.attribute style:scale-to-pages}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleScaleToPagesAttribute() {
+		StyleScaleToPagesAttribute attr = (StyleScaleToPagesAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "scale-to-pages");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleScaleToPagesAttribute</code> , See {@odf.attribute style:scale-to-pages}
+	 *
+	 * @param styleScaleToPagesValue   The type is <code>Integer</code>
+	 */
+	public void setStyleScaleToPagesAttribute(Integer styleScaleToPagesValue) {
+		StyleScaleToPagesAttribute attr = new StyleScaleToPagesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleScaleToPagesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleShadowAttribute() {
+		StyleShadowAttribute attr = (StyleShadowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @param styleShadowValue   The type is <code>String</code>
+	 */
+	public void setStyleShadowAttribute(String styleShadowValue) {
+		StyleShadowAttribute attr = new StyleShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTableCenteringAttribute</code> , See {@odf.attribute style:table-centering}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTableCenteringAttribute() {
+		StyleTableCenteringAttribute attr = (StyleTableCenteringAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "table-centering");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTableCenteringAttribute</code> , See {@odf.attribute style:table-centering}
+	 *
+	 * @param styleTableCenteringValue   The type is <code>String</code>
+	 */
+	public void setStyleTableCenteringAttribute(String styleTableCenteringValue) {
+		StyleTableCenteringAttribute attr = new StyleTableCenteringAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTableCenteringValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWritingModeAttribute() {
+		StyleWritingModeAttribute attr = (StyleWritingModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @param styleWritingModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWritingModeAttribute(String styleWritingModeValue) {
+		StyleWritingModeAttribute attr = new StyleWritingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWritingModeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	/**
+	 * Create child element {@odf.element style:columns}.
+	 *
+	 * @param foColumnCountValue  the <code>Integer</code> value of <code>FoColumnCountAttribute</code>, see {@odf.attribute  fo:column-count} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:columns}
+	 */
+	 public StyleColumnsElement newStyleColumnsElement(int foColumnCountValue) {
+		StyleColumnsElement styleColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleColumnsElement.class);
+		styleColumns.setFoColumnCountAttribute(foColumnCountValue);
+		this.appendChild(styleColumns);
+		return styleColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element style:footnote-sep}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:footnote-sep}
+	 */
+	public StyleFootnoteSepElement newStyleFootnoteSepElement() {
+		StyleFootnoteSepElement styleFootnoteSep = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleFootnoteSepElement.class);
+		this.appendChild(styleFootnoteSep);
+		return styleFootnoteSep;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleParagraphPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleParagraphPropertiesElement.java
new file mode 100644
index 0000000..ab96b84
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleParagraphPropertiesElement.java
@@ -0,0 +1,1597 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakAfterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakBeforeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoHyphenationKeepAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoHyphenationLadderCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoKeepTogetherAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoKeepWithNextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoLineHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoOrphansAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextAlignLastAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextIndentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoWidowsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleAutoTextIndentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBackgroundTransparencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontIndependentLineSpacingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleJoinBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleJustifySingleWordAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLineBreakAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLineHeightAtLeastAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLineSpacingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePunctuationWrapAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRegisterTrueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleSnapToLayoutGridAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTabStopDistanceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextAutospaceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAutomaticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLineNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNumberLinesAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:paragraph-properties}.
+ *
+ */
+public class StyleParagraphPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "paragraph-properties");
+
+	/**
+	 * Create the instance of <code>StyleParagraphPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleParagraphPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:paragraph-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+
+	public final static OdfStyleProperty HyphenationKeep =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-keep"));
+
+	public final static OdfStyleProperty HyphenationLadderCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-ladder-count"));
+
+	public final static OdfStyleProperty KeepTogether =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-together"));
+
+	public final static OdfStyleProperty KeepWithNext =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-with-next"));
+
+	public final static OdfStyleProperty LineHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "line-height"));
+
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+
+	public final static OdfStyleProperty Orphans =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "orphans"));
+
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+
+	public final static OdfStyleProperty TextAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-align"));
+
+	public final static OdfStyleProperty TextAlignLast =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-align-last"));
+
+	public final static OdfStyleProperty TextIndent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-indent"));
+
+	public final static OdfStyleProperty Widows =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "widows"));
+
+	public final static OdfStyleProperty AutoTextIndent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "auto-text-indent"));
+
+	public final static OdfStyleProperty BackgroundTransparency =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "background-transparency"));
+
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+
+	public final static OdfStyleProperty FontIndependentLineSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-independent-line-spacing"));
+
+	public final static OdfStyleProperty JoinBorder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "join-border"));
+
+	public final static OdfStyleProperty JustifySingleWord =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "justify-single-word"));
+
+	public final static OdfStyleProperty LineBreak =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "line-break"));
+
+	public final static OdfStyleProperty LineHeightAtLeast =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "line-height-at-least"));
+
+	public final static OdfStyleProperty LineSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "line-spacing"));
+
+	public final static OdfStyleProperty PageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "page-number"));
+
+	public final static OdfStyleProperty PunctuationWrap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "punctuation-wrap"));
+
+	public final static OdfStyleProperty RegisterTrue =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "register-true"));
+
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+
+	public final static OdfStyleProperty SnapToLayoutGrid =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "snap-to-layout-grid"));
+
+	public final static OdfStyleProperty TabStopDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "tab-stop-distance"));
+
+	public final static OdfStyleProperty TextAutospace =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-autospace"));
+
+	public final static OdfStyleProperty VerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+
+	public final static OdfStyleProperty WritingModeAutomatic =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode-automatic"));
+
+	public final static OdfStyleProperty LineNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "line-number"));
+
+	public final static OdfStyleProperty NumberLines =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "number-lines"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderAttribute() {
+		FoBorderAttribute attr = (FoBorderAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @param foBorderValue   The type is <code>String</code>
+	 */
+	public void setFoBorderAttribute(String foBorderValue) {
+		FoBorderAttribute attr = new FoBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderBottomAttribute() {
+		FoBorderBottomAttribute attr = (FoBorderBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @param foBorderBottomValue   The type is <code>String</code>
+	 */
+	public void setFoBorderBottomAttribute(String foBorderBottomValue) {
+		FoBorderBottomAttribute attr = new FoBorderBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderLeftAttribute() {
+		FoBorderLeftAttribute attr = (FoBorderLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @param foBorderLeftValue   The type is <code>String</code>
+	 */
+	public void setFoBorderLeftAttribute(String foBorderLeftValue) {
+		FoBorderLeftAttribute attr = new FoBorderLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderRightAttribute() {
+		FoBorderRightAttribute attr = (FoBorderRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @param foBorderRightValue   The type is <code>String</code>
+	 */
+	public void setFoBorderRightAttribute(String foBorderRightValue) {
+		FoBorderRightAttribute attr = new FoBorderRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderTopAttribute() {
+		FoBorderTopAttribute attr = (FoBorderTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @param foBorderTopValue   The type is <code>String</code>
+	 */
+	public void setFoBorderTopAttribute(String foBorderTopValue) {
+		FoBorderTopAttribute attr = new FoBorderTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakAfterAttribute() {
+		FoBreakAfterAttribute attr = (FoBreakAfterAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-after");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @param foBreakAfterValue   The type is <code>String</code>
+	 */
+	public void setFoBreakAfterAttribute(String foBreakAfterValue) {
+		FoBreakAfterAttribute attr = new FoBreakAfterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakAfterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakBeforeAttribute() {
+		FoBreakBeforeAttribute attr = (FoBreakBeforeAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-before");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @param foBreakBeforeValue   The type is <code>String</code>
+	 */
+	public void setFoBreakBeforeAttribute(String foBreakBeforeValue) {
+		FoBreakBeforeAttribute attr = new FoBreakBeforeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakBeforeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoHyphenationKeepAttribute</code> , See {@odf.attribute fo:hyphenation-keep}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoHyphenationKeepAttribute() {
+		FoHyphenationKeepAttribute attr = (FoHyphenationKeepAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "hyphenation-keep");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoHyphenationKeepAttribute</code> , See {@odf.attribute fo:hyphenation-keep}
+	 *
+	 * @param foHyphenationKeepValue   The type is <code>String</code>
+	 */
+	public void setFoHyphenationKeepAttribute(String foHyphenationKeepValue) {
+		FoHyphenationKeepAttribute attr = new FoHyphenationKeepAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foHyphenationKeepValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoHyphenationLadderCountAttribute</code> , See {@odf.attribute fo:hyphenation-ladder-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFoHyphenationLadderCountAttribute() {
+		FoHyphenationLadderCountAttribute attr = (FoHyphenationLadderCountAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "hyphenation-ladder-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoHyphenationLadderCountAttribute</code> , See {@odf.attribute fo:hyphenation-ladder-count}
+	 *
+	 * @param foHyphenationLadderCountValue   The type is <code>Integer</code>
+	 */
+	public void setFoHyphenationLadderCountAttribute(Integer foHyphenationLadderCountValue) {
+		FoHyphenationLadderCountAttribute attr = new FoHyphenationLadderCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(foHyphenationLadderCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoKeepTogetherAttribute</code> , See {@odf.attribute fo:keep-together}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoKeepTogetherAttribute() {
+		FoKeepTogetherAttribute attr = (FoKeepTogetherAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "keep-together");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoKeepTogetherAttribute</code> , See {@odf.attribute fo:keep-together}
+	 *
+	 * @param foKeepTogetherValue   The type is <code>String</code>
+	 */
+	public void setFoKeepTogetherAttribute(String foKeepTogetherValue) {
+		FoKeepTogetherAttribute attr = new FoKeepTogetherAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foKeepTogetherValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoKeepWithNextAttribute</code> , See {@odf.attribute fo:keep-with-next}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoKeepWithNextAttribute() {
+		FoKeepWithNextAttribute attr = (FoKeepWithNextAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "keep-with-next");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoKeepWithNextAttribute</code> , See {@odf.attribute fo:keep-with-next}
+	 *
+	 * @param foKeepWithNextValue   The type is <code>String</code>
+	 */
+	public void setFoKeepWithNextAttribute(String foKeepWithNextValue) {
+		FoKeepWithNextAttribute attr = new FoKeepWithNextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foKeepWithNextValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoLineHeightAttribute</code> , See {@odf.attribute fo:line-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoLineHeightAttribute() {
+		FoLineHeightAttribute attr = (FoLineHeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "line-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoLineHeightAttribute</code> , See {@odf.attribute fo:line-height}
+	 *
+	 * @param foLineHeightValue   The type is <code>String</code>
+	 */
+	public void setFoLineHeightAttribute(String foLineHeightValue) {
+		FoLineHeightAttribute attr = new FoLineHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foLineHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginAttribute() {
+		FoMarginAttribute attr = (FoMarginAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @param foMarginValue   The type is <code>String</code>
+	 */
+	public void setFoMarginAttribute(String foMarginValue) {
+		FoMarginAttribute attr = new FoMarginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginBottomAttribute() {
+		FoMarginBottomAttribute attr = (FoMarginBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @param foMarginBottomValue   The type is <code>String</code>
+	 */
+	public void setFoMarginBottomAttribute(String foMarginBottomValue) {
+		FoMarginBottomAttribute attr = new FoMarginBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginRightAttribute() {
+		FoMarginRightAttribute attr = (FoMarginRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @param foMarginRightValue   The type is <code>String</code>
+	 */
+	public void setFoMarginRightAttribute(String foMarginRightValue) {
+		FoMarginRightAttribute attr = new FoMarginRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginTopAttribute() {
+		FoMarginTopAttribute attr = (FoMarginTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @param foMarginTopValue   The type is <code>String</code>
+	 */
+	public void setFoMarginTopAttribute(String foMarginTopValue) {
+		FoMarginTopAttribute attr = new FoMarginTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoOrphansAttribute</code> , See {@odf.attribute fo:orphans}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFoOrphansAttribute() {
+		FoOrphansAttribute attr = (FoOrphansAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "orphans");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoOrphansAttribute</code> , See {@odf.attribute fo:orphans}
+	 *
+	 * @param foOrphansValue   The type is <code>Integer</code>
+	 */
+	public void setFoOrphansAttribute(Integer foOrphansValue) {
+		FoOrphansAttribute attr = new FoOrphansAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(foOrphansValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingAttribute() {
+		FoPaddingAttribute attr = (FoPaddingAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @param foPaddingValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingAttribute(String foPaddingValue) {
+		FoPaddingAttribute attr = new FoPaddingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingBottomAttribute() {
+		FoPaddingBottomAttribute attr = (FoPaddingBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @param foPaddingBottomValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingBottomAttribute(String foPaddingBottomValue) {
+		FoPaddingBottomAttribute attr = new FoPaddingBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingLeftAttribute() {
+		FoPaddingLeftAttribute attr = (FoPaddingLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @param foPaddingLeftValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingLeftAttribute(String foPaddingLeftValue) {
+		FoPaddingLeftAttribute attr = new FoPaddingLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingRightAttribute() {
+		FoPaddingRightAttribute attr = (FoPaddingRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @param foPaddingRightValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingRightAttribute(String foPaddingRightValue) {
+		FoPaddingRightAttribute attr = new FoPaddingRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingTopAttribute() {
+		FoPaddingTopAttribute attr = (FoPaddingTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @param foPaddingTopValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingTopAttribute(String foPaddingTopValue) {
+		FoPaddingTopAttribute attr = new FoPaddingTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextAlignAttribute</code> , See {@odf.attribute fo:text-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextAlignAttribute() {
+		FoTextAlignAttribute attr = (FoTextAlignAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextAlignAttribute</code> , See {@odf.attribute fo:text-align}
+	 *
+	 * @param foTextAlignValue   The type is <code>String</code>
+	 */
+	public void setFoTextAlignAttribute(String foTextAlignValue) {
+		FoTextAlignAttribute attr = new FoTextAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextAlignLastAttribute</code> , See {@odf.attribute fo:text-align-last}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextAlignLastAttribute() {
+		FoTextAlignLastAttribute attr = (FoTextAlignLastAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-align-last");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextAlignLastAttribute</code> , See {@odf.attribute fo:text-align-last}
+	 *
+	 * @param foTextAlignLastValue   The type is <code>String</code>
+	 */
+	public void setFoTextAlignLastAttribute(String foTextAlignLastValue) {
+		FoTextAlignLastAttribute attr = new FoTextAlignLastAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextAlignLastValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextIndentAttribute</code> , See {@odf.attribute fo:text-indent}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextIndentAttribute() {
+		FoTextIndentAttribute attr = (FoTextIndentAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-indent");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextIndentAttribute</code> , See {@odf.attribute fo:text-indent}
+	 *
+	 * @param foTextIndentValue   The type is <code>String</code>
+	 */
+	public void setFoTextIndentAttribute(String foTextIndentValue) {
+		FoTextIndentAttribute attr = new FoTextIndentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextIndentValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoWidowsAttribute</code> , See {@odf.attribute fo:widows}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFoWidowsAttribute() {
+		FoWidowsAttribute attr = (FoWidowsAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "widows");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoWidowsAttribute</code> , See {@odf.attribute fo:widows}
+	 *
+	 * @param foWidowsValue   The type is <code>Integer</code>
+	 */
+	public void setFoWidowsAttribute(Integer foWidowsValue) {
+		FoWidowsAttribute attr = new FoWidowsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(foWidowsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleAutoTextIndentAttribute</code> , See {@odf.attribute style:auto-text-indent}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleAutoTextIndentAttribute() {
+		StyleAutoTextIndentAttribute attr = (StyleAutoTextIndentAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "auto-text-indent");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleAutoTextIndentAttribute</code> , See {@odf.attribute style:auto-text-indent}
+	 *
+	 * @param styleAutoTextIndentValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleAutoTextIndentAttribute(Boolean styleAutoTextIndentValue) {
+		StyleAutoTextIndentAttribute attr = new StyleAutoTextIndentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleAutoTextIndentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBackgroundTransparencyAttribute</code> , See {@odf.attribute style:background-transparency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBackgroundTransparencyAttribute() {
+		StyleBackgroundTransparencyAttribute attr = (StyleBackgroundTransparencyAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "background-transparency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBackgroundTransparencyAttribute</code> , See {@odf.attribute style:background-transparency}
+	 *
+	 * @param styleBackgroundTransparencyValue   The type is <code>String</code>
+	 */
+	public void setStyleBackgroundTransparencyAttribute(String styleBackgroundTransparencyValue) {
+		StyleBackgroundTransparencyAttribute attr = new StyleBackgroundTransparencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBackgroundTransparencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthAttribute() {
+		StyleBorderLineWidthAttribute attr = (StyleBorderLineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @param styleBorderLineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthAttribute(String styleBorderLineWidthValue) {
+		StyleBorderLineWidthAttribute attr = new StyleBorderLineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthBottomAttribute() {
+		StyleBorderLineWidthBottomAttribute attr = (StyleBorderLineWidthBottomAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @param styleBorderLineWidthBottomValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthBottomAttribute(String styleBorderLineWidthBottomValue) {
+		StyleBorderLineWidthBottomAttribute attr = new StyleBorderLineWidthBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthLeftAttribute() {
+		StyleBorderLineWidthLeftAttribute attr = (StyleBorderLineWidthLeftAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @param styleBorderLineWidthLeftValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthLeftAttribute(String styleBorderLineWidthLeftValue) {
+		StyleBorderLineWidthLeftAttribute attr = new StyleBorderLineWidthLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthRightAttribute() {
+		StyleBorderLineWidthRightAttribute attr = (StyleBorderLineWidthRightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @param styleBorderLineWidthRightValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthRightAttribute(String styleBorderLineWidthRightValue) {
+		StyleBorderLineWidthRightAttribute attr = new StyleBorderLineWidthRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthTopAttribute() {
+		StyleBorderLineWidthTopAttribute attr = (StyleBorderLineWidthTopAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @param styleBorderLineWidthTopValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthTopAttribute(String styleBorderLineWidthTopValue) {
+		StyleBorderLineWidthTopAttribute attr = new StyleBorderLineWidthTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontIndependentLineSpacingAttribute</code> , See {@odf.attribute style:font-independent-line-spacing}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleFontIndependentLineSpacingAttribute() {
+		StyleFontIndependentLineSpacingAttribute attr = (StyleFontIndependentLineSpacingAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-independent-line-spacing");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontIndependentLineSpacingAttribute</code> , See {@odf.attribute style:font-independent-line-spacing}
+	 *
+	 * @param styleFontIndependentLineSpacingValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleFontIndependentLineSpacingAttribute(Boolean styleFontIndependentLineSpacingValue) {
+		StyleFontIndependentLineSpacingAttribute attr = new StyleFontIndependentLineSpacingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleFontIndependentLineSpacingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleJoinBorderAttribute</code> , See {@odf.attribute style:join-border}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleJoinBorderAttribute() {
+		StyleJoinBorderAttribute attr = (StyleJoinBorderAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "join-border");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleJoinBorderAttribute</code> , See {@odf.attribute style:join-border}
+	 *
+	 * @param styleJoinBorderValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleJoinBorderAttribute(Boolean styleJoinBorderValue) {
+		StyleJoinBorderAttribute attr = new StyleJoinBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleJoinBorderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleJustifySingleWordAttribute</code> , See {@odf.attribute style:justify-single-word}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleJustifySingleWordAttribute() {
+		StyleJustifySingleWordAttribute attr = (StyleJustifySingleWordAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "justify-single-word");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleJustifySingleWordAttribute</code> , See {@odf.attribute style:justify-single-word}
+	 *
+	 * @param styleJustifySingleWordValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleJustifySingleWordAttribute(Boolean styleJustifySingleWordValue) {
+		StyleJustifySingleWordAttribute attr = new StyleJustifySingleWordAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleJustifySingleWordValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLineBreakAttribute</code> , See {@odf.attribute style:line-break}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLineBreakAttribute() {
+		StyleLineBreakAttribute attr = (StyleLineBreakAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "line-break");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLineBreakAttribute</code> , See {@odf.attribute style:line-break}
+	 *
+	 * @param styleLineBreakValue   The type is <code>String</code>
+	 */
+	public void setStyleLineBreakAttribute(String styleLineBreakValue) {
+		StyleLineBreakAttribute attr = new StyleLineBreakAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLineBreakValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLineHeightAtLeastAttribute</code> , See {@odf.attribute style:line-height-at-least}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLineHeightAtLeastAttribute() {
+		StyleLineHeightAtLeastAttribute attr = (StyleLineHeightAtLeastAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "line-height-at-least");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLineHeightAtLeastAttribute</code> , See {@odf.attribute style:line-height-at-least}
+	 *
+	 * @param styleLineHeightAtLeastValue   The type is <code>String</code>
+	 */
+	public void setStyleLineHeightAtLeastAttribute(String styleLineHeightAtLeastValue) {
+		StyleLineHeightAtLeastAttribute attr = new StyleLineHeightAtLeastAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLineHeightAtLeastValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLineSpacingAttribute</code> , See {@odf.attribute style:line-spacing}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLineSpacingAttribute() {
+		StyleLineSpacingAttribute attr = (StyleLineSpacingAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "line-spacing");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLineSpacingAttribute</code> , See {@odf.attribute style:line-spacing}
+	 *
+	 * @param styleLineSpacingValue   The type is <code>String</code>
+	 */
+	public void setStyleLineSpacingAttribute(String styleLineSpacingValue) {
+		StyleLineSpacingAttribute attr = new StyleLineSpacingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLineSpacingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePageNumberAttribute</code> , See {@odf.attribute style:page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStylePageNumberAttribute() {
+		StylePageNumberAttribute attr = (StylePageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePageNumberAttribute</code> , See {@odf.attribute style:page-number}
+	 *
+	 * @param stylePageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setStylePageNumberAttribute(Integer stylePageNumberValue) {
+		StylePageNumberAttribute attr = new StylePageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(stylePageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePunctuationWrapAttribute</code> , See {@odf.attribute style:punctuation-wrap}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePunctuationWrapAttribute() {
+		StylePunctuationWrapAttribute attr = (StylePunctuationWrapAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "punctuation-wrap");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePunctuationWrapAttribute</code> , See {@odf.attribute style:punctuation-wrap}
+	 *
+	 * @param stylePunctuationWrapValue   The type is <code>String</code>
+	 */
+	public void setStylePunctuationWrapAttribute(String stylePunctuationWrapValue) {
+		StylePunctuationWrapAttribute attr = new StylePunctuationWrapAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePunctuationWrapValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRegisterTrueAttribute</code> , See {@odf.attribute style:register-true}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleRegisterTrueAttribute() {
+		StyleRegisterTrueAttribute attr = (StyleRegisterTrueAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "register-true");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRegisterTrueAttribute</code> , See {@odf.attribute style:register-true}
+	 *
+	 * @param styleRegisterTrueValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleRegisterTrueAttribute(Boolean styleRegisterTrueValue) {
+		StyleRegisterTrueAttribute attr = new StyleRegisterTrueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleRegisterTrueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleShadowAttribute() {
+		StyleShadowAttribute attr = (StyleShadowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @param styleShadowValue   The type is <code>String</code>
+	 */
+	public void setStyleShadowAttribute(String styleShadowValue) {
+		StyleShadowAttribute attr = new StyleShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleSnapToLayoutGridAttribute</code> , See {@odf.attribute style:snap-to-layout-grid}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleSnapToLayoutGridAttribute() {
+		StyleSnapToLayoutGridAttribute attr = (StyleSnapToLayoutGridAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "snap-to-layout-grid");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleSnapToLayoutGridAttribute</code> , See {@odf.attribute style:snap-to-layout-grid}
+	 *
+	 * @param styleSnapToLayoutGridValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleSnapToLayoutGridAttribute(Boolean styleSnapToLayoutGridValue) {
+		StyleSnapToLayoutGridAttribute attr = new StyleSnapToLayoutGridAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleSnapToLayoutGridValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTabStopDistanceAttribute</code> , See {@odf.attribute style:tab-stop-distance}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTabStopDistanceAttribute() {
+		StyleTabStopDistanceAttribute attr = (StyleTabStopDistanceAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "tab-stop-distance");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTabStopDistanceAttribute</code> , See {@odf.attribute style:tab-stop-distance}
+	 *
+	 * @param styleTabStopDistanceValue   The type is <code>String</code>
+	 */
+	public void setStyleTabStopDistanceAttribute(String styleTabStopDistanceValue) {
+		StyleTabStopDistanceAttribute attr = new StyleTabStopDistanceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTabStopDistanceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextAutospaceAttribute</code> , See {@odf.attribute style:text-autospace}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextAutospaceAttribute() {
+		StyleTextAutospaceAttribute attr = (StyleTextAutospaceAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-autospace");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextAutospaceAttribute</code> , See {@odf.attribute style:text-autospace}
+	 *
+	 * @param styleTextAutospaceValue   The type is <code>String</code>
+	 */
+	public void setStyleTextAutospaceAttribute(String styleTextAutospaceValue) {
+		StyleTextAutospaceAttribute attr = new StyleTextAutospaceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextAutospaceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalAlignAttribute</code> , See {@odf.attribute style:vertical-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalAlignAttribute() {
+		StyleVerticalAlignAttribute attr = (StyleVerticalAlignAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalAlignAttribute</code> , See {@odf.attribute style:vertical-align}
+	 *
+	 * @param styleVerticalAlignValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalAlignAttribute(String styleVerticalAlignValue) {
+		StyleVerticalAlignAttribute attr = new StyleVerticalAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWritingModeAttribute() {
+		StyleWritingModeAttribute attr = (StyleWritingModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @param styleWritingModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWritingModeAttribute(String styleWritingModeValue) {
+		StyleWritingModeAttribute attr = new StyleWritingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWritingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAutomaticAttribute</code> , See {@odf.attribute style:writing-mode-automatic}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleWritingModeAutomaticAttribute() {
+		StyleWritingModeAutomaticAttribute attr = (StyleWritingModeAutomaticAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode-automatic");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAutomaticAttribute</code> , See {@odf.attribute style:writing-mode-automatic}
+	 *
+	 * @param styleWritingModeAutomaticValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleWritingModeAutomaticAttribute(Boolean styleWritingModeAutomaticValue) {
+		StyleWritingModeAutomaticAttribute attr = new StyleWritingModeAutomaticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleWritingModeAutomaticValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLineNumberAttribute</code> , See {@odf.attribute text:line-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextLineNumberAttribute() {
+		TextLineNumberAttribute attr = (TextLineNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "line-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLineNumberAttribute</code> , See {@odf.attribute text:line-number}
+	 *
+	 * @param textLineNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTextLineNumberAttribute(Integer textLineNumberValue) {
+		TextLineNumberAttribute attr = new TextLineNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textLineNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNumberLinesAttribute</code> , See {@odf.attribute text:number-lines}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextNumberLinesAttribute() {
+		TextNumberLinesAttribute attr = (TextNumberLinesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "number-lines");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNumberLinesAttribute</code> , See {@odf.attribute text:number-lines}
+	 *
+	 * @param textNumberLinesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextNumberLinesAttribute(Boolean textNumberLinesValue) {
+		TextNumberLinesAttribute attr = new TextNumberLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textNumberLinesValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	/**
+	 * Create child element {@odf.element style:drop-cap}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:drop-cap}
+	 */
+	public StyleDropCapElement newStyleDropCapElement() {
+		StyleDropCapElement styleDropCap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleDropCapElement.class);
+		this.appendChild(styleDropCap);
+		return styleDropCap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:tab-stops}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:tab-stops}
+	 */
+	public StyleTabStopsElement newStyleTabStopsElement() {
+		StyleTabStopsElement styleTabStops = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTabStopsElement.class);
+		this.appendChild(styleTabStops);
+		return styleTabStops;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePresentationPageLayoutElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePresentationPageLayoutElement.java
new file mode 100644
index 0000000..55ef09e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StylePresentationPageLayoutElement.java
@@ -0,0 +1,145 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationPlaceholderElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:presentation-page-layout}.
+ *
+ */
+public class StylePresentationPageLayoutElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "presentation-page-layout");
+
+	/**
+	 * Create the instance of <code>StylePresentationPageLayoutElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StylePresentationPageLayoutElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:presentation-page-layout}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:placeholder}.
+	 *
+	 * @param presentationObjectValue  the <code>String</code> value of <code>PresentationObjectAttribute</code>, see {@odf.attribute  presentation:object} at specification
+	 * @param svgHeightValue  the <code>String</code> value of <code>SvgHeightAttribute</code>, see {@odf.attribute  svg:height} at specification
+	 * @param svgWidthValue  the <code>String</code> value of <code>SvgWidthAttribute</code>, see {@odf.attribute  svg:width} at specification
+	 * @param svgXValue  the <code>String</code> value of <code>SvgXAttribute</code>, see {@odf.attribute  svg:x} at specification
+	 * @param svgYValue  the <code>String</code> value of <code>SvgYAttribute</code>, see {@odf.attribute  svg:y} at specification
+	 * @return the element {@odf.element presentation:placeholder}
+	 */
+	 public PresentationPlaceholderElement newPresentationPlaceholderElement(String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue) {
+		PresentationPlaceholderElement presentationPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationPlaceholderElement.class);
+		presentationPlaceholder.setPresentationObjectAttribute(presentationObjectValue);
+		presentationPlaceholder.setSvgHeightAttribute(svgHeightValue);
+		presentationPlaceholder.setSvgWidthAttribute(svgWidthValue);
+		presentationPlaceholder.setSvgXAttribute(svgXValue);
+		presentationPlaceholder.setSvgYAttribute(svgYValue);
+		this.appendChild(presentationPlaceholder);
+		return presentationPlaceholder;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionCenterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionCenterElement.java
new file mode 100644
index 0000000..d721c82
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionCenterElement.java
@@ -0,0 +1,83 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:region-center}.
+ *
+ */
+public class StyleRegionCenterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "region-center");
+
+	/**
+	 * Create the instance of <code>StyleRegionCenterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleRegionCenterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:region-center}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionLeftElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionLeftElement.java
new file mode 100644
index 0000000..20f5e9c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionLeftElement.java
@@ -0,0 +1,83 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:region-left}.
+ *
+ */
+public class StyleRegionLeftElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "region-left");
+
+	/**
+	 * Create the instance of <code>StyleRegionLeftElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleRegionLeftElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:region-left}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionRightElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionRightElement.java
new file mode 100644
index 0000000..125a9d6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRegionRightElement.java
@@ -0,0 +1,83 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:region-right}.
+ *
+ */
+public class StyleRegionRightElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "region-right");
+
+	/**
+	 * Create the instance of <code>StyleRegionRightElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleRegionRightElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:region-right}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRubyPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRubyPropertiesElement.java
new file mode 100644
index 0000000..c490487
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleRubyPropertiesElement.java
@@ -0,0 +1,130 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRubyAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRubyPositionAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:ruby-properties}.
+ *
+ */
+public class StyleRubyPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-properties");
+
+	/**
+	 * Create the instance of <code>StyleRubyPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleRubyPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:ruby-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty RubyAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.RubyProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-align"));
+
+	public final static OdfStyleProperty RubyPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.RubyProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-position"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRubyAlignAttribute</code> , See {@odf.attribute style:ruby-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRubyAlignAttribute() {
+		StyleRubyAlignAttribute attr = (StyleRubyAlignAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "ruby-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRubyAlignAttribute</code> , See {@odf.attribute style:ruby-align}
+	 *
+	 * @param styleRubyAlignValue   The type is <code>String</code>
+	 */
+	public void setStyleRubyAlignAttribute(String styleRubyAlignValue) {
+		StyleRubyAlignAttribute attr = new StyleRubyAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRubyAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRubyPositionAttribute</code> , See {@odf.attribute style:ruby-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRubyPositionAttribute() {
+		StyleRubyPositionAttribute attr = (StyleRubyPositionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "ruby-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRubyPositionAttribute</code> , See {@odf.attribute style:ruby-position}
+	 *
+	 * @param styleRubyPositionValue   The type is <code>String</code>
+	 */
+	public void setStyleRubyPositionAttribute(String styleRubyPositionValue) {
+		StyleRubyPositionAttribute attr = new StyleRubyPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRubyPositionValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleSectionPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleSectionPropertiesElement.java
new file mode 100644
index 0000000..a2c7b5f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleSectionPropertiesElement.java
@@ -0,0 +1,316 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextNotesConfigurationElement;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleEditableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleProtectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDontBalanceTextColumnsAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:section-properties}.
+ *
+ */
+public class StyleSectionPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "section-properties");
+
+	/**
+	 * Create the instance of <code>StyleSectionPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleSectionPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:section-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+
+	public final static OdfStyleProperty Editable =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "editable"));
+
+	public final static OdfStyleProperty Protect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "protect"));
+
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+
+	public final static OdfStyleProperty DontBalanceTextColumns =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "dont-balance-text-columns"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginRightAttribute() {
+		FoMarginRightAttribute attr = (FoMarginRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @param foMarginRightValue   The type is <code>String</code>
+	 */
+	public void setFoMarginRightAttribute(String foMarginRightValue) {
+		FoMarginRightAttribute attr = new FoMarginRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleEditableAttribute</code> , See {@odf.attribute style:editable}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleEditableAttribute() {
+		StyleEditableAttribute attr = (StyleEditableAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "editable");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleEditableAttribute</code> , See {@odf.attribute style:editable}
+	 *
+	 * @param styleEditableValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleEditableAttribute(Boolean styleEditableValue) {
+		StyleEditableAttribute attr = new StyleEditableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleEditableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleProtectAttribute</code> , See {@odf.attribute style:protect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleProtectAttribute() {
+		StyleProtectAttribute attr = (StyleProtectAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "protect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleProtectAttribute</code> , See {@odf.attribute style:protect}
+	 *
+	 * @param styleProtectValue   The type is <code>String</code>
+	 */
+	public void setStyleProtectAttribute(String styleProtectValue) {
+		StyleProtectAttribute attr = new StyleProtectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleProtectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWritingModeAttribute() {
+		StyleWritingModeAttribute attr = (StyleWritingModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @param styleWritingModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWritingModeAttribute(String styleWritingModeValue) {
+		StyleWritingModeAttribute attr = new StyleWritingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWritingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDontBalanceTextColumnsAttribute</code> , See {@odf.attribute text:dont-balance-text-columns}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextDontBalanceTextColumnsAttribute() {
+		TextDontBalanceTextColumnsAttribute attr = (TextDontBalanceTextColumnsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "dont-balance-text-columns");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDontBalanceTextColumnsAttribute</code> , See {@odf.attribute text:dont-balance-text-columns}
+	 *
+	 * @param textDontBalanceTextColumnsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextDontBalanceTextColumnsAttribute(Boolean textDontBalanceTextColumnsValue) {
+		TextDontBalanceTextColumnsAttribute attr = new TextDontBalanceTextColumnsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textDontBalanceTextColumnsValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	/**
+	 * Create child element {@odf.element style:columns}.
+	 *
+	 * @param foColumnCountValue  the <code>Integer</code> value of <code>FoColumnCountAttribute</code>, see {@odf.attribute  fo:column-count} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:columns}
+	 */
+	 public StyleColumnsElement newStyleColumnsElement(int foColumnCountValue) {
+		StyleColumnsElement styleColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleColumnsElement.class);
+		styleColumns.setFoColumnCountAttribute(foColumnCountValue);
+		this.appendChild(styleColumns);
+		return styleColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element text:notes-configuration}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:notes-configuration}
+	 */
+	 public TextNotesConfigurationElement newTextNotesConfigurationElement(String styleNumFormatValue, String textNoteClassValue) {
+		TextNotesConfigurationElement textNotesConfiguration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNotesConfigurationElement.class);
+		textNotesConfiguration.setStyleNumFormatAttribute(styleNumFormatValue);
+		textNotesConfiguration.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNotesConfiguration);
+		return textNotesConfiguration;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleStyleElement.java
new file mode 100644
index 0000000..549dc29
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleStyleElement.java
@@ -0,0 +1,541 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleAutoUpdateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDefaultOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFamilyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleListLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleListStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleMasterPageNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleParentStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePercentageDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:style}.
+ *
+ */
+public class StyleStyleElement extends OdfStyleBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "style");
+
+	/**
+	 * Create the instance of <code>StyleStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleAutoUpdateAttribute</code> , See {@odf.attribute style:auto-update}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleAutoUpdateAttribute() {
+		StyleAutoUpdateAttribute attr = (StyleAutoUpdateAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "auto-update");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(StyleAutoUpdateAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleAutoUpdateAttribute</code> , See {@odf.attribute style:auto-update}
+	 *
+	 * @param styleAutoUpdateValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleAutoUpdateAttribute(Boolean styleAutoUpdateValue) {
+		StyleAutoUpdateAttribute attr = new StyleAutoUpdateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleAutoUpdateValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleClassAttribute</code> , See {@odf.attribute style:class}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleClassAttribute() {
+		StyleClassAttribute attr = (StyleClassAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleClassAttribute</code> , See {@odf.attribute style:class}
+	 *
+	 * @param styleClassValue   The type is <code>String</code>
+	 */
+	public void setStyleClassAttribute(String styleClassValue) {
+		StyleClassAttribute attr = new StyleClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDefaultOutlineLevelAttribute</code> , See {@odf.attribute style:default-outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleDefaultOutlineLevelAttribute() {
+		StyleDefaultOutlineLevelAttribute attr = (StyleDefaultOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "default-outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDefaultOutlineLevelAttribute</code> , See {@odf.attribute style:default-outline-level}
+	 *
+	 * @param styleDefaultOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setStyleDefaultOutlineLevelAttribute(Integer styleDefaultOutlineLevelValue) {
+		StyleDefaultOutlineLevelAttribute attr = new StyleDefaultOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleDefaultOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFamilyAttribute</code> , See {@odf.attribute style:family}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFamilyAttribute() {
+		StyleFamilyAttribute attr = (StyleFamilyAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "family");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFamilyAttribute</code> , See {@odf.attribute style:family}
+	 *
+	 * @param styleFamilyValue   The type is <code>String</code>
+	 */
+	public void setStyleFamilyAttribute(String styleFamilyValue) {
+		StyleFamilyAttribute attr = new StyleFamilyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFamilyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleListLevelAttribute</code> , See {@odf.attribute style:list-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleListLevelAttribute() {
+		StyleListLevelAttribute attr = (StyleListLevelAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "list-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleListLevelAttribute</code> , See {@odf.attribute style:list-level}
+	 *
+	 * @param styleListLevelValue   The type is <code>Integer</code>
+	 */
+	public void setStyleListLevelAttribute(Integer styleListLevelValue) {
+		StyleListLevelAttribute attr = new StyleListLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleListLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleListStyleNameAttribute</code> , See {@odf.attribute style:list-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleListStyleNameAttribute() {
+		StyleListStyleNameAttribute attr = (StyleListStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "list-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleListStyleNameAttribute</code> , See {@odf.attribute style:list-style-name}
+	 *
+	 * @param styleListStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleListStyleNameAttribute(String styleListStyleNameValue) {
+		StyleListStyleNameAttribute attr = new StyleListStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleListStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleMasterPageNameAttribute</code> , See {@odf.attribute style:master-page-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleMasterPageNameAttribute() {
+		StyleMasterPageNameAttribute attr = (StyleMasterPageNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "master-page-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleMasterPageNameAttribute</code> , See {@odf.attribute style:master-page-name}
+	 *
+	 * @param styleMasterPageNameValue   The type is <code>String</code>
+	 */
+	public void setStyleMasterPageNameAttribute(String styleMasterPageNameValue) {
+		StyleMasterPageNameAttribute attr = new StyleMasterPageNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleMasterPageNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNextStyleNameAttribute</code> , See {@odf.attribute style:next-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNextStyleNameAttribute() {
+		StyleNextStyleNameAttribute attr = (StyleNextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "next-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNextStyleNameAttribute</code> , See {@odf.attribute style:next-style-name}
+	 *
+	 * @param styleNextStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNextStyleNameAttribute(String styleNextStyleNameValue) {
+		StyleNextStyleNameAttribute attr = new StyleNextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNextStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleParentStyleNameAttribute</code> , See {@odf.attribute style:parent-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleParentStyleNameAttribute() {
+		StyleParentStyleNameAttribute attr = (StyleParentStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "parent-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleParentStyleNameAttribute</code> , See {@odf.attribute style:parent-style-name}
+	 *
+	 * @param styleParentStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleParentStyleNameAttribute(String styleParentStyleNameValue) {
+		StyleParentStyleNameAttribute attr = new StyleParentStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleParentStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePercentageDataStyleNameAttribute</code> , See {@odf.attribute style:percentage-data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePercentageDataStyleNameAttribute() {
+		StylePercentageDataStyleNameAttribute attr = (StylePercentageDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "percentage-data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePercentageDataStyleNameAttribute</code> , See {@odf.attribute style:percentage-data-style-name}
+	 *
+	 * @param stylePercentageDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStylePercentageDataStyleNameAttribute(String stylePercentageDataStyleNameValue) {
+		StylePercentageDataStyleNameAttribute attr = new StylePercentageDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePercentageDataStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:chart-properties}.
+	 *
+	 * @param chartSymbolTypeValue  the <code>String</code> value of <code>ChartSymbolTypeAttribute</code>, see {@odf.attribute  chart:symbol-type} at specification
+	 * @return the element {@odf.element style:chart-properties}
+	 */
+	 public StyleChartPropertiesElement newStyleChartPropertiesElement(String chartSymbolTypeValue) {
+		StyleChartPropertiesElement styleChartProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleChartPropertiesElement.class);
+		styleChartProperties.setChartSymbolTypeAttribute(chartSymbolTypeValue);
+		this.appendChild(styleChartProperties);
+		return styleChartProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:drawing-page-properties}.
+	 *
+	 * @return the element {@odf.element style:drawing-page-properties}
+	 */
+	public StyleDrawingPagePropertiesElement newStyleDrawingPagePropertiesElement() {
+		StyleDrawingPagePropertiesElement styleDrawingPageProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleDrawingPagePropertiesElement.class);
+		this.appendChild(styleDrawingPageProperties);
+		return styleDrawingPageProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:graphic-properties}.
+	 *
+	 * @return the element {@odf.element style:graphic-properties}
+	 */
+	public StyleGraphicPropertiesElement newStyleGraphicPropertiesElement() {
+		StyleGraphicPropertiesElement styleGraphicProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleGraphicPropertiesElement.class);
+		this.appendChild(styleGraphicProperties);
+		return styleGraphicProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:map}.
+	 *
+	 * @param styleApplyStyleNameValue  the <code>String</code> value of <code>StyleApplyStyleNameAttribute</code>, see {@odf.attribute  style:apply-style-name} at specification
+	 * @param styleConditionValue  the <code>String</code> value of <code>StyleConditionAttribute</code>, see {@odf.attribute  style:condition} at specification
+	 * @return the element {@odf.element style:map}
+	 */
+	 public StyleMapElement newStyleMapElement(String styleApplyStyleNameValue, String styleConditionValue) {
+		StyleMapElement styleMap = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleMapElement.class);
+		styleMap.setStyleApplyStyleNameAttribute(styleApplyStyleNameValue);
+		styleMap.setStyleConditionAttribute(styleConditionValue);
+		this.appendChild(styleMap);
+		return styleMap;
+	}
+
+	/**
+	 * Create child element {@odf.element style:paragraph-properties}.
+	 *
+	 * @return the element {@odf.element style:paragraph-properties}
+	 */
+	public StyleParagraphPropertiesElement newStyleParagraphPropertiesElement() {
+		StyleParagraphPropertiesElement styleParagraphProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleParagraphPropertiesElement.class);
+		this.appendChild(styleParagraphProperties);
+		return styleParagraphProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:ruby-properties}.
+	 *
+	 * @return the element {@odf.element style:ruby-properties}
+	 */
+	public StyleRubyPropertiesElement newStyleRubyPropertiesElement() {
+		StyleRubyPropertiesElement styleRubyProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleRubyPropertiesElement.class);
+		this.appendChild(styleRubyProperties);
+		return styleRubyProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:section-properties}.
+	 *
+	 * @return the element {@odf.element style:section-properties}
+	 */
+	public StyleSectionPropertiesElement newStyleSectionPropertiesElement() {
+		StyleSectionPropertiesElement styleSectionProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleSectionPropertiesElement.class);
+		this.appendChild(styleSectionProperties);
+		return styleSectionProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-cell-properties}.
+	 *
+	 * @return the element {@odf.element style:table-cell-properties}
+	 */
+	public StyleTableCellPropertiesElement newStyleTableCellPropertiesElement() {
+		StyleTableCellPropertiesElement styleTableCellProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTableCellPropertiesElement.class);
+		this.appendChild(styleTableCellProperties);
+		return styleTableCellProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-column-properties}.
+	 *
+	 * @return the element {@odf.element style:table-column-properties}
+	 */
+	public StyleTableColumnPropertiesElement newStyleTableColumnPropertiesElement() {
+		StyleTableColumnPropertiesElement styleTableColumnProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTableColumnPropertiesElement.class);
+		this.appendChild(styleTableColumnProperties);
+		return styleTableColumnProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-properties}.
+	 *
+	 * @return the element {@odf.element style:table-properties}
+	 */
+	public StyleTablePropertiesElement newStyleTablePropertiesElement() {
+		StyleTablePropertiesElement styleTableProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTablePropertiesElement.class);
+		this.appendChild(styleTableProperties);
+		return styleTableProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:table-row-properties}.
+	 *
+	 * @return the element {@odf.element style:table-row-properties}
+	 */
+	public StyleTableRowPropertiesElement newStyleTableRowPropertiesElement() {
+		StyleTableRowPropertiesElement styleTableRowProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTableRowPropertiesElement.class);
+		this.appendChild(styleTableRowProperties);
+		return styleTableRowProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTabStopElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTabStopElement.java
new file mode 100644
index 0000000..4bdf951
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTabStopElement.java
@@ -0,0 +1,300 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleCharAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderTextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderTextStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:tab-stop}.
+ *
+ */
+public class StyleTabStopElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "tab-stop");
+
+	/**
+	 * Create the instance of <code>StyleTabStopElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTabStopElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:tab-stop}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleCharAttribute</code> , See {@odf.attribute style:char}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleCharAttribute() {
+		StyleCharAttribute attr = (StyleCharAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "char");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleCharAttribute</code> , See {@odf.attribute style:char}
+	 *
+	 * @param styleCharValue   The type is <code>String</code>
+	 */
+	public void setStyleCharAttribute(String styleCharValue) {
+		StyleCharAttribute attr = new StyleCharAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleCharValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderColorAttribute</code> , See {@odf.attribute style:leader-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderColorAttribute() {
+		StyleLeaderColorAttribute attr = (StyleLeaderColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderColorAttribute</code> , See {@odf.attribute style:leader-color}
+	 *
+	 * @param styleLeaderColorValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderColorAttribute(String styleLeaderColorValue) {
+		StyleLeaderColorAttribute attr = new StyleLeaderColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderStyleAttribute</code> , See {@odf.attribute style:leader-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderStyleAttribute() {
+		StyleLeaderStyleAttribute attr = (StyleLeaderStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderStyleAttribute</code> , See {@odf.attribute style:leader-style}
+	 *
+	 * @param styleLeaderStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderStyleAttribute(String styleLeaderStyleValue) {
+		StyleLeaderStyleAttribute attr = new StyleLeaderStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderTextAttribute</code> , See {@odf.attribute style:leader-text}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderTextAttribute() {
+		StyleLeaderTextAttribute attr = (StyleLeaderTextAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-text");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleLeaderTextAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderTextAttribute</code> , See {@odf.attribute style:leader-text}
+	 *
+	 * @param styleLeaderTextValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderTextAttribute(String styleLeaderTextValue) {
+		StyleLeaderTextAttribute attr = new StyleLeaderTextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderTextValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderTextStyleAttribute</code> , See {@odf.attribute style:leader-text-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderTextStyleAttribute() {
+		StyleLeaderTextStyleAttribute attr = (StyleLeaderTextStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-text-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderTextStyleAttribute</code> , See {@odf.attribute style:leader-text-style}
+	 *
+	 * @param styleLeaderTextStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderTextStyleAttribute(String styleLeaderTextStyleValue) {
+		StyleLeaderTextStyleAttribute attr = new StyleLeaderTextStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderTextStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderTypeAttribute</code> , See {@odf.attribute style:leader-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderTypeAttribute() {
+		StyleLeaderTypeAttribute attr = (StyleLeaderTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderTypeAttribute</code> , See {@odf.attribute style:leader-type}
+	 *
+	 * @param styleLeaderTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderTypeAttribute(String styleLeaderTypeValue) {
+		StyleLeaderTypeAttribute attr = new StyleLeaderTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderWidthAttribute</code> , See {@odf.attribute style:leader-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderWidthAttribute() {
+		StyleLeaderWidthAttribute attr = (StyleLeaderWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderWidthAttribute</code> , See {@odf.attribute style:leader-width}
+	 *
+	 * @param styleLeaderWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderWidthAttribute(String styleLeaderWidthValue) {
+		StyleLeaderWidthAttribute attr = new StyleLeaderWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePositionAttribute</code> , See {@odf.attribute style:position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePositionAttribute() {
+		StylePositionAttribute attr = (StylePositionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePositionAttribute</code> , See {@odf.attribute style:position}
+	 *
+	 * @param stylePositionValue   The type is <code>String</code>
+	 */
+	public void setStylePositionAttribute(String stylePositionValue) {
+		StylePositionAttribute attr = new StylePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTypeAttribute</code> , See {@odf.attribute style:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTypeAttribute() {
+		StyleTypeAttribute attr = (StyleTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return StyleTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTypeAttribute</code> , See {@odf.attribute style:type}
+	 *
+	 * @param styleTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleTypeAttribute(String styleTypeValue) {
+		StyleTypeAttribute attr = new StyleTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTabStopsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTabStopsElement.java
new file mode 100644
index 0000000..0792ce6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTabStopsElement.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:tab-stops}.
+ *
+ */
+public class StyleTabStopsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "tab-stops");
+
+	/**
+	 * Create the instance of <code>StyleTabStopsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTabStopsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:tab-stops}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element style:tab-stop}.
+	 *
+	 * @param stylePositionValue  the <code>String</code> value of <code>StylePositionAttribute</code>, see {@odf.attribute  style:position} at specification
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:tab-stop}
+	 */
+	 public StyleTabStopElement newStyleTabStopElement(String stylePositionValue, String styleTypeValue) {
+		StyleTabStopElement styleTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTabStopElement.class);
+		styleTabStop.setStylePositionAttribute(stylePositionValue);
+		styleTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(styleTabStop);
+		return styleTabStop;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableCellPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableCellPropertiesElement.java
new file mode 100644
index 0000000..81b1546
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableCellPropertiesElement.java
@@ -0,0 +1,1039 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoPaddingTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoWrapOptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleCellProtectAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDecimalPlacesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalBlTrAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalBlTrWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalTlBrAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalTlBrWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleGlyphOrientationVerticalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePrintContentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRepeatContentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRotationAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRotationAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShrinkToFitAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextAlignSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:table-cell-properties}.
+ *
+ */
+public class StyleTableCellPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "table-cell-properties");
+
+	/**
+	 * Create the instance of <code>StyleTableCellPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTableCellPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:table-cell-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+
+	public final static OdfStyleProperty WrapOption =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "wrap-option"));
+
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+
+	public final static OdfStyleProperty CellProtect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "cell-protect"));
+
+	public final static OdfStyleProperty DecimalPlaces =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "decimal-places"));
+
+	public final static OdfStyleProperty DiagonalBlTr =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-bl-tr"));
+
+	public final static OdfStyleProperty DiagonalBlTrWidths =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-bl-tr-widths"));
+
+	public final static OdfStyleProperty DiagonalTlBr =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-tl-br"));
+
+	public final static OdfStyleProperty DiagonalTlBrWidths =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-tl-br-widths"));
+
+	public final static OdfStyleProperty Direction =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "direction"));
+
+	public final static OdfStyleProperty GlyphOrientationVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "glyph-orientation-vertical"));
+
+	public final static OdfStyleProperty PrintContent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-content"));
+
+	public final static OdfStyleProperty RepeatContent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "repeat-content"));
+
+	public final static OdfStyleProperty RotationAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-align"));
+
+	public final static OdfStyleProperty RotationAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-angle"));
+
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+
+	public final static OdfStyleProperty ShrinkToFit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shrink-to-fit"));
+
+	public final static OdfStyleProperty TextAlignSource =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-align-source"));
+
+	public final static OdfStyleProperty VerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderAttribute() {
+		FoBorderAttribute attr = (FoBorderAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderAttribute</code> , See {@odf.attribute fo:border}
+	 *
+	 * @param foBorderValue   The type is <code>String</code>
+	 */
+	public void setFoBorderAttribute(String foBorderValue) {
+		FoBorderAttribute attr = new FoBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderBottomAttribute() {
+		FoBorderBottomAttribute attr = (FoBorderBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderBottomAttribute</code> , See {@odf.attribute fo:border-bottom}
+	 *
+	 * @param foBorderBottomValue   The type is <code>String</code>
+	 */
+	public void setFoBorderBottomAttribute(String foBorderBottomValue) {
+		FoBorderBottomAttribute attr = new FoBorderBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderLeftAttribute() {
+		FoBorderLeftAttribute attr = (FoBorderLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderLeftAttribute</code> , See {@odf.attribute fo:border-left}
+	 *
+	 * @param foBorderLeftValue   The type is <code>String</code>
+	 */
+	public void setFoBorderLeftAttribute(String foBorderLeftValue) {
+		FoBorderLeftAttribute attr = new FoBorderLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderRightAttribute() {
+		FoBorderRightAttribute attr = (FoBorderRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderRightAttribute</code> , See {@odf.attribute fo:border-right}
+	 *
+	 * @param foBorderRightValue   The type is <code>String</code>
+	 */
+	public void setFoBorderRightAttribute(String foBorderRightValue) {
+		FoBorderRightAttribute attr = new FoBorderRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBorderTopAttribute() {
+		FoBorderTopAttribute attr = (FoBorderTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "border-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBorderTopAttribute</code> , See {@odf.attribute fo:border-top}
+	 *
+	 * @param foBorderTopValue   The type is <code>String</code>
+	 */
+	public void setFoBorderTopAttribute(String foBorderTopValue) {
+		FoBorderTopAttribute attr = new FoBorderTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBorderTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingAttribute() {
+		FoPaddingAttribute attr = (FoPaddingAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingAttribute</code> , See {@odf.attribute fo:padding}
+	 *
+	 * @param foPaddingValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingAttribute(String foPaddingValue) {
+		FoPaddingAttribute attr = new FoPaddingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingBottomAttribute() {
+		FoPaddingBottomAttribute attr = (FoPaddingBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingBottomAttribute</code> , See {@odf.attribute fo:padding-bottom}
+	 *
+	 * @param foPaddingBottomValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingBottomAttribute(String foPaddingBottomValue) {
+		FoPaddingBottomAttribute attr = new FoPaddingBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingLeftAttribute() {
+		FoPaddingLeftAttribute attr = (FoPaddingLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingLeftAttribute</code> , See {@odf.attribute fo:padding-left}
+	 *
+	 * @param foPaddingLeftValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingLeftAttribute(String foPaddingLeftValue) {
+		FoPaddingLeftAttribute attr = new FoPaddingLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingRightAttribute() {
+		FoPaddingRightAttribute attr = (FoPaddingRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingRightAttribute</code> , See {@odf.attribute fo:padding-right}
+	 *
+	 * @param foPaddingRightValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingRightAttribute(String foPaddingRightValue) {
+		FoPaddingRightAttribute attr = new FoPaddingRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoPaddingTopAttribute() {
+		FoPaddingTopAttribute attr = (FoPaddingTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "padding-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoPaddingTopAttribute</code> , See {@odf.attribute fo:padding-top}
+	 *
+	 * @param foPaddingTopValue   The type is <code>String</code>
+	 */
+	public void setFoPaddingTopAttribute(String foPaddingTopValue) {
+		FoPaddingTopAttribute attr = new FoPaddingTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foPaddingTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoWrapOptionAttribute</code> , See {@odf.attribute fo:wrap-option}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoWrapOptionAttribute() {
+		FoWrapOptionAttribute attr = (FoWrapOptionAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "wrap-option");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoWrapOptionAttribute</code> , See {@odf.attribute fo:wrap-option}
+	 *
+	 * @param foWrapOptionValue   The type is <code>String</code>
+	 */
+	public void setFoWrapOptionAttribute(String foWrapOptionValue) {
+		FoWrapOptionAttribute attr = new FoWrapOptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foWrapOptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthAttribute() {
+		StyleBorderLineWidthAttribute attr = (StyleBorderLineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthAttribute</code> , See {@odf.attribute style:border-line-width}
+	 *
+	 * @param styleBorderLineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthAttribute(String styleBorderLineWidthValue) {
+		StyleBorderLineWidthAttribute attr = new StyleBorderLineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthBottomAttribute() {
+		StyleBorderLineWidthBottomAttribute attr = (StyleBorderLineWidthBottomAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthBottomAttribute</code> , See {@odf.attribute style:border-line-width-bottom}
+	 *
+	 * @param styleBorderLineWidthBottomValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthBottomAttribute(String styleBorderLineWidthBottomValue) {
+		StyleBorderLineWidthBottomAttribute attr = new StyleBorderLineWidthBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthLeftAttribute() {
+		StyleBorderLineWidthLeftAttribute attr = (StyleBorderLineWidthLeftAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthLeftAttribute</code> , See {@odf.attribute style:border-line-width-left}
+	 *
+	 * @param styleBorderLineWidthLeftValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthLeftAttribute(String styleBorderLineWidthLeftValue) {
+		StyleBorderLineWidthLeftAttribute attr = new StyleBorderLineWidthLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthRightAttribute() {
+		StyleBorderLineWidthRightAttribute attr = (StyleBorderLineWidthRightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthRightAttribute</code> , See {@odf.attribute style:border-line-width-right}
+	 *
+	 * @param styleBorderLineWidthRightValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthRightAttribute(String styleBorderLineWidthRightValue) {
+		StyleBorderLineWidthRightAttribute attr = new StyleBorderLineWidthRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleBorderLineWidthTopAttribute() {
+		StyleBorderLineWidthTopAttribute attr = (StyleBorderLineWidthTopAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "border-line-width-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleBorderLineWidthTopAttribute</code> , See {@odf.attribute style:border-line-width-top}
+	 *
+	 * @param styleBorderLineWidthTopValue   The type is <code>String</code>
+	 */
+	public void setStyleBorderLineWidthTopAttribute(String styleBorderLineWidthTopValue) {
+		StyleBorderLineWidthTopAttribute attr = new StyleBorderLineWidthTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleBorderLineWidthTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleCellProtectAttribute</code> , See {@odf.attribute style:cell-protect}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleCellProtectAttribute() {
+		StyleCellProtectAttribute attr = (StyleCellProtectAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "cell-protect");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleCellProtectAttribute</code> , See {@odf.attribute style:cell-protect}
+	 *
+	 * @param styleCellProtectValue   The type is <code>String</code>
+	 */
+	public void setStyleCellProtectAttribute(String styleCellProtectValue) {
+		StyleCellProtectAttribute attr = new StyleCellProtectAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleCellProtectValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDecimalPlacesAttribute</code> , See {@odf.attribute style:decimal-places}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStyleDecimalPlacesAttribute() {
+		StyleDecimalPlacesAttribute attr = (StyleDecimalPlacesAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "decimal-places");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDecimalPlacesAttribute</code> , See {@odf.attribute style:decimal-places}
+	 *
+	 * @param styleDecimalPlacesValue   The type is <code>Integer</code>
+	 */
+	public void setStyleDecimalPlacesAttribute(Integer styleDecimalPlacesValue) {
+		StyleDecimalPlacesAttribute attr = new StyleDecimalPlacesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(styleDecimalPlacesValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDiagonalBlTrAttribute</code> , See {@odf.attribute style:diagonal-bl-tr}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDiagonalBlTrAttribute() {
+		StyleDiagonalBlTrAttribute attr = (StyleDiagonalBlTrAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "diagonal-bl-tr");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDiagonalBlTrAttribute</code> , See {@odf.attribute style:diagonal-bl-tr}
+	 *
+	 * @param styleDiagonalBlTrValue   The type is <code>String</code>
+	 */
+	public void setStyleDiagonalBlTrAttribute(String styleDiagonalBlTrValue) {
+		StyleDiagonalBlTrAttribute attr = new StyleDiagonalBlTrAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDiagonalBlTrValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDiagonalBlTrWidthsAttribute</code> , See {@odf.attribute style:diagonal-bl-tr-widths}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDiagonalBlTrWidthsAttribute() {
+		StyleDiagonalBlTrWidthsAttribute attr = (StyleDiagonalBlTrWidthsAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "diagonal-bl-tr-widths");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDiagonalBlTrWidthsAttribute</code> , See {@odf.attribute style:diagonal-bl-tr-widths}
+	 *
+	 * @param styleDiagonalBlTrWidthsValue   The type is <code>String</code>
+	 */
+	public void setStyleDiagonalBlTrWidthsAttribute(String styleDiagonalBlTrWidthsValue) {
+		StyleDiagonalBlTrWidthsAttribute attr = new StyleDiagonalBlTrWidthsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDiagonalBlTrWidthsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDiagonalTlBrAttribute</code> , See {@odf.attribute style:diagonal-tl-br}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDiagonalTlBrAttribute() {
+		StyleDiagonalTlBrAttribute attr = (StyleDiagonalTlBrAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "diagonal-tl-br");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDiagonalTlBrAttribute</code> , See {@odf.attribute style:diagonal-tl-br}
+	 *
+	 * @param styleDiagonalTlBrValue   The type is <code>String</code>
+	 */
+	public void setStyleDiagonalTlBrAttribute(String styleDiagonalTlBrValue) {
+		StyleDiagonalTlBrAttribute attr = new StyleDiagonalTlBrAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDiagonalTlBrValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDiagonalTlBrWidthsAttribute</code> , See {@odf.attribute style:diagonal-tl-br-widths}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDiagonalTlBrWidthsAttribute() {
+		StyleDiagonalTlBrWidthsAttribute attr = (StyleDiagonalTlBrWidthsAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "diagonal-tl-br-widths");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDiagonalTlBrWidthsAttribute</code> , See {@odf.attribute style:diagonal-tl-br-widths}
+	 *
+	 * @param styleDiagonalTlBrWidthsValue   The type is <code>String</code>
+	 */
+	public void setStyleDiagonalTlBrWidthsAttribute(String styleDiagonalTlBrWidthsValue) {
+		StyleDiagonalTlBrWidthsAttribute attr = new StyleDiagonalTlBrWidthsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDiagonalTlBrWidthsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDirectionAttribute</code> , See {@odf.attribute style:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDirectionAttribute() {
+		StyleDirectionAttribute attr = (StyleDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDirectionAttribute</code> , See {@odf.attribute style:direction}
+	 *
+	 * @param styleDirectionValue   The type is <code>String</code>
+	 */
+	public void setStyleDirectionAttribute(String styleDirectionValue) {
+		StyleDirectionAttribute attr = new StyleDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleGlyphOrientationVerticalAttribute</code> , See {@odf.attribute style:glyph-orientation-vertical}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleGlyphOrientationVerticalAttribute() {
+		StyleGlyphOrientationVerticalAttribute attr = (StyleGlyphOrientationVerticalAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "glyph-orientation-vertical");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleGlyphOrientationVerticalAttribute</code> , See {@odf.attribute style:glyph-orientation-vertical}
+	 *
+	 * @param styleGlyphOrientationVerticalValue   The type is <code>String</code>
+	 */
+	public void setStyleGlyphOrientationVerticalAttribute(String styleGlyphOrientationVerticalValue) {
+		StyleGlyphOrientationVerticalAttribute attr = new StyleGlyphOrientationVerticalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleGlyphOrientationVerticalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePrintContentAttribute</code> , See {@odf.attribute style:print-content}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStylePrintContentAttribute() {
+		StylePrintContentAttribute attr = (StylePrintContentAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "print-content");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePrintContentAttribute</code> , See {@odf.attribute style:print-content}
+	 *
+	 * @param stylePrintContentValue   The type is <code>Boolean</code>
+	 */
+	public void setStylePrintContentAttribute(Boolean stylePrintContentValue) {
+		StylePrintContentAttribute attr = new StylePrintContentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(stylePrintContentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRepeatContentAttribute</code> , See {@odf.attribute style:repeat-content}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleRepeatContentAttribute() {
+		StyleRepeatContentAttribute attr = (StyleRepeatContentAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "repeat-content");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRepeatContentAttribute</code> , See {@odf.attribute style:repeat-content}
+	 *
+	 * @param styleRepeatContentValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleRepeatContentAttribute(Boolean styleRepeatContentValue) {
+		StyleRepeatContentAttribute attr = new StyleRepeatContentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleRepeatContentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRotationAlignAttribute</code> , See {@odf.attribute style:rotation-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRotationAlignAttribute() {
+		StyleRotationAlignAttribute attr = (StyleRotationAlignAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rotation-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRotationAlignAttribute</code> , See {@odf.attribute style:rotation-align}
+	 *
+	 * @param styleRotationAlignValue   The type is <code>String</code>
+	 */
+	public void setStyleRotationAlignAttribute(String styleRotationAlignValue) {
+		StyleRotationAlignAttribute attr = new StyleRotationAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRotationAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRotationAngleAttribute</code> , See {@odf.attribute style:rotation-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRotationAngleAttribute() {
+		StyleRotationAngleAttribute attr = (StyleRotationAngleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rotation-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRotationAngleAttribute</code> , See {@odf.attribute style:rotation-angle}
+	 *
+	 * @param styleRotationAngleValue   The type is <code>String</code>
+	 */
+	public void setStyleRotationAngleAttribute(String styleRotationAngleValue) {
+		StyleRotationAngleAttribute attr = new StyleRotationAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRotationAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleShadowAttribute() {
+		StyleShadowAttribute attr = (StyleShadowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @param styleShadowValue   The type is <code>String</code>
+	 */
+	public void setStyleShadowAttribute(String styleShadowValue) {
+		StyleShadowAttribute attr = new StyleShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShrinkToFitAttribute</code> , See {@odf.attribute style:shrink-to-fit}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleShrinkToFitAttribute() {
+		StyleShrinkToFitAttribute attr = (StyleShrinkToFitAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shrink-to-fit");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShrinkToFitAttribute</code> , See {@odf.attribute style:shrink-to-fit}
+	 *
+	 * @param styleShrinkToFitValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleShrinkToFitAttribute(Boolean styleShrinkToFitValue) {
+		StyleShrinkToFitAttribute attr = new StyleShrinkToFitAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleShrinkToFitValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextAlignSourceAttribute</code> , See {@odf.attribute style:text-align-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextAlignSourceAttribute() {
+		StyleTextAlignSourceAttribute attr = (StyleTextAlignSourceAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-align-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextAlignSourceAttribute</code> , See {@odf.attribute style:text-align-source}
+	 *
+	 * @param styleTextAlignSourceValue   The type is <code>String</code>
+	 */
+	public void setStyleTextAlignSourceAttribute(String styleTextAlignSourceValue) {
+		StyleTextAlignSourceAttribute attr = new StyleTextAlignSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextAlignSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleVerticalAlignAttribute</code> , See {@odf.attribute style:vertical-align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleVerticalAlignAttribute() {
+		StyleVerticalAlignAttribute attr = (StyleVerticalAlignAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "vertical-align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleVerticalAlignAttribute</code> , See {@odf.attribute style:vertical-align}
+	 *
+	 * @param styleVerticalAlignValue   The type is <code>String</code>
+	 */
+	public void setStyleVerticalAlignAttribute(String styleVerticalAlignValue) {
+		StyleVerticalAlignAttribute attr = new StyleVerticalAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleVerticalAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWritingModeAttribute() {
+		StyleWritingModeAttribute attr = (StyleWritingModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @param styleWritingModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWritingModeAttribute(String styleWritingModeValue) {
+		StyleWritingModeAttribute attr = new StyleWritingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWritingModeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableColumnPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableColumnPropertiesElement.java
new file mode 100644
index 0000000..c7226c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableColumnPropertiesElement.java
@@ -0,0 +1,214 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakAfterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakBeforeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleColumnWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelColumnWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleUseOptimalColumnWidthAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:table-column-properties}.
+ *
+ */
+public class StyleTableColumnPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "table-column-properties");
+
+	/**
+	 * Create the instance of <code>StyleTableColumnPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTableColumnPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:table-column-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+
+	public final static OdfStyleProperty ColumnWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "column-width"));
+
+	public final static OdfStyleProperty RelColumnWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-column-width"));
+
+	public final static OdfStyleProperty UseOptimalColumnWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "use-optimal-column-width"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakAfterAttribute() {
+		FoBreakAfterAttribute attr = (FoBreakAfterAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-after");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @param foBreakAfterValue   The type is <code>String</code>
+	 */
+	public void setFoBreakAfterAttribute(String foBreakAfterValue) {
+		FoBreakAfterAttribute attr = new FoBreakAfterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakAfterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakBeforeAttribute() {
+		FoBreakBeforeAttribute attr = (FoBreakBeforeAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-before");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @param foBreakBeforeValue   The type is <code>String</code>
+	 */
+	public void setFoBreakBeforeAttribute(String foBreakBeforeValue) {
+		FoBreakBeforeAttribute attr = new FoBreakBeforeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakBeforeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleColumnWidthAttribute</code> , See {@odf.attribute style:column-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleColumnWidthAttribute() {
+		StyleColumnWidthAttribute attr = (StyleColumnWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "column-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleColumnWidthAttribute</code> , See {@odf.attribute style:column-width}
+	 *
+	 * @param styleColumnWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleColumnWidthAttribute(String styleColumnWidthValue) {
+		StyleColumnWidthAttribute attr = new StyleColumnWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleColumnWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelColumnWidthAttribute</code> , See {@odf.attribute style:rel-column-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelColumnWidthAttribute() {
+		StyleRelColumnWidthAttribute attr = (StyleRelColumnWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-column-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelColumnWidthAttribute</code> , See {@odf.attribute style:rel-column-width}
+	 *
+	 * @param styleRelColumnWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleRelColumnWidthAttribute(String styleRelColumnWidthValue) {
+		StyleRelColumnWidthAttribute attr = new StyleRelColumnWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelColumnWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleUseOptimalColumnWidthAttribute</code> , See {@odf.attribute style:use-optimal-column-width}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleUseOptimalColumnWidthAttribute() {
+		StyleUseOptimalColumnWidthAttribute attr = (StyleUseOptimalColumnWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "use-optimal-column-width");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleUseOptimalColumnWidthAttribute</code> , See {@odf.attribute style:use-optimal-column-width}
+	 *
+	 * @param styleUseOptimalColumnWidthValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleUseOptimalColumnWidthAttribute(Boolean styleUseOptimalColumnWidthValue) {
+		StyleUseOptimalColumnWidthAttribute attr = new StyleUseOptimalColumnWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleUseOptimalColumnWidthValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTablePropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTablePropertiesElement.java
new file mode 100644
index 0000000..0916c83
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTablePropertiesElement.java
@@ -0,0 +1,591 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakAfterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakBeforeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoKeepWithNextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleMayBreakBetweenRowsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePageNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleWritingModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBorderModelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:table-properties}.
+ *
+ */
+public class StyleTablePropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "table-properties");
+
+	/**
+	 * Create the instance of <code>StyleTablePropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTablePropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:table-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+
+	public final static OdfStyleProperty KeepWithNext =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-with-next"));
+
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+
+	public final static OdfStyleProperty MayBreakBetweenRows =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "may-break-between-rows"));
+
+	public final static OdfStyleProperty PageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "page-number"));
+
+	public final static OdfStyleProperty RelWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-width"));
+
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+
+	public final static OdfStyleProperty Width =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "width"));
+
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+
+	public final static OdfStyleProperty Align =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.TABLE, "align"));
+
+	public final static OdfStyleProperty BorderModel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.TABLE, "border-model"));
+
+	public final static OdfStyleProperty Display =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.TABLE, "display"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakAfterAttribute() {
+		FoBreakAfterAttribute attr = (FoBreakAfterAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-after");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @param foBreakAfterValue   The type is <code>String</code>
+	 */
+	public void setFoBreakAfterAttribute(String foBreakAfterValue) {
+		FoBreakAfterAttribute attr = new FoBreakAfterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakAfterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakBeforeAttribute() {
+		FoBreakBeforeAttribute attr = (FoBreakBeforeAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-before");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @param foBreakBeforeValue   The type is <code>String</code>
+	 */
+	public void setFoBreakBeforeAttribute(String foBreakBeforeValue) {
+		FoBreakBeforeAttribute attr = new FoBreakBeforeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakBeforeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoKeepWithNextAttribute</code> , See {@odf.attribute fo:keep-with-next}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoKeepWithNextAttribute() {
+		FoKeepWithNextAttribute attr = (FoKeepWithNextAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "keep-with-next");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoKeepWithNextAttribute</code> , See {@odf.attribute fo:keep-with-next}
+	 *
+	 * @param foKeepWithNextValue   The type is <code>String</code>
+	 */
+	public void setFoKeepWithNextAttribute(String foKeepWithNextValue) {
+		FoKeepWithNextAttribute attr = new FoKeepWithNextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foKeepWithNextValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginAttribute() {
+		FoMarginAttribute attr = (FoMarginAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginAttribute</code> , See {@odf.attribute fo:margin}
+	 *
+	 * @param foMarginValue   The type is <code>String</code>
+	 */
+	public void setFoMarginAttribute(String foMarginValue) {
+		FoMarginAttribute attr = new FoMarginAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginBottomAttribute() {
+		FoMarginBottomAttribute attr = (FoMarginBottomAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-bottom");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginBottomAttribute</code> , See {@odf.attribute fo:margin-bottom}
+	 *
+	 * @param foMarginBottomValue   The type is <code>String</code>
+	 */
+	public void setFoMarginBottomAttribute(String foMarginBottomValue) {
+		FoMarginBottomAttribute attr = new FoMarginBottomAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginBottomValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginLeftAttribute() {
+		FoMarginLeftAttribute attr = (FoMarginLeftAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-left");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginLeftAttribute</code> , See {@odf.attribute fo:margin-left}
+	 *
+	 * @param foMarginLeftValue   The type is <code>String</code>
+	 */
+	public void setFoMarginLeftAttribute(String foMarginLeftValue) {
+		FoMarginLeftAttribute attr = new FoMarginLeftAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginLeftValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginRightAttribute() {
+		FoMarginRightAttribute attr = (FoMarginRightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-right");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginRightAttribute</code> , See {@odf.attribute fo:margin-right}
+	 *
+	 * @param foMarginRightValue   The type is <code>String</code>
+	 */
+	public void setFoMarginRightAttribute(String foMarginRightValue) {
+		FoMarginRightAttribute attr = new FoMarginRightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginRightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoMarginTopAttribute() {
+		FoMarginTopAttribute attr = (FoMarginTopAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "margin-top");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoMarginTopAttribute</code> , See {@odf.attribute fo:margin-top}
+	 *
+	 * @param foMarginTopValue   The type is <code>String</code>
+	 */
+	public void setFoMarginTopAttribute(String foMarginTopValue) {
+		FoMarginTopAttribute attr = new FoMarginTopAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foMarginTopValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleMayBreakBetweenRowsAttribute</code> , See {@odf.attribute style:may-break-between-rows}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleMayBreakBetweenRowsAttribute() {
+		StyleMayBreakBetweenRowsAttribute attr = (StyleMayBreakBetweenRowsAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "may-break-between-rows");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleMayBreakBetweenRowsAttribute</code> , See {@odf.attribute style:may-break-between-rows}
+	 *
+	 * @param styleMayBreakBetweenRowsValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleMayBreakBetweenRowsAttribute(Boolean styleMayBreakBetweenRowsValue) {
+		StyleMayBreakBetweenRowsAttribute attr = new StyleMayBreakBetweenRowsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleMayBreakBetweenRowsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePageNumberAttribute</code> , See {@odf.attribute style:page-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getStylePageNumberAttribute() {
+		StylePageNumberAttribute attr = (StylePageNumberAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "page-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePageNumberAttribute</code> , See {@odf.attribute style:page-number}
+	 *
+	 * @param stylePageNumberValue   The type is <code>Integer</code>
+	 */
+	public void setStylePageNumberAttribute(Integer stylePageNumberValue) {
+		StylePageNumberAttribute attr = new StylePageNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(stylePageNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRelWidthAttribute() {
+		StyleRelWidthAttribute attr = (StyleRelWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rel-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRelWidthAttribute</code> , See {@odf.attribute style:rel-width}
+	 *
+	 * @param styleRelWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleRelWidthAttribute(String styleRelWidthValue) {
+		StyleRelWidthAttribute attr = new StyleRelWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRelWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleShadowAttribute() {
+		StyleShadowAttribute attr = (StyleShadowAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleShadowAttribute</code> , See {@odf.attribute style:shadow}
+	 *
+	 * @param styleShadowValue   The type is <code>String</code>
+	 */
+	public void setStyleShadowAttribute(String styleShadowValue) {
+		StyleShadowAttribute attr = new StyleShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWidthAttribute</code> , See {@odf.attribute style:width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWidthAttribute() {
+		StyleWidthAttribute attr = (StyleWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWidthAttribute</code> , See {@odf.attribute style:width}
+	 *
+	 * @param styleWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleWidthAttribute(String styleWidthValue) {
+		StyleWidthAttribute attr = new StyleWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleWritingModeAttribute() {
+		StyleWritingModeAttribute attr = (StyleWritingModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "writing-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleWritingModeAttribute</code> , See {@odf.attribute style:writing-mode}
+	 *
+	 * @param styleWritingModeValue   The type is <code>String</code>
+	 */
+	public void setStyleWritingModeAttribute(String styleWritingModeValue) {
+		StyleWritingModeAttribute attr = new StyleWritingModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleWritingModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAlignAttribute</code> , See {@odf.attribute table:align}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableAlignAttribute() {
+		TableAlignAttribute attr = (TableAlignAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "align");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAlignAttribute</code> , See {@odf.attribute table:align}
+	 *
+	 * @param tableAlignValue   The type is <code>String</code>
+	 */
+	public void setTableAlignAttribute(String tableAlignValue) {
+		TableAlignAttribute attr = new TableAlignAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableAlignValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBorderModelAttribute</code> , See {@odf.attribute table:border-model}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableBorderModelAttribute() {
+		TableBorderModelAttribute attr = (TableBorderModelAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "border-model");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBorderModelAttribute</code> , See {@odf.attribute table:border-model}
+	 *
+	 * @param tableBorderModelValue   The type is <code>String</code>
+	 */
+	public void setTableBorderModelAttribute(String tableBorderModelValue) {
+		TableBorderModelAttribute attr = new TableBorderModelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableBorderModelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayAttribute() {
+		TableDisplayAttribute attr = (TableDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @param tableDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayAttribute(Boolean tableDisplayValue) {
+		TableDisplayAttribute attr = new TableDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableRowPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableRowPropertiesElement.java
new file mode 100644
index 0000000..1789f87
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTableRowPropertiesElement.java
@@ -0,0 +1,283 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakAfterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakBeforeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoKeepTogetherAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleMinRowHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRowHeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleUseOptimalRowHeightAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:table-row-properties}.
+ *
+ */
+public class StyleTableRowPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "table-row-properties");
+
+	/**
+	 * Create the instance of <code>StyleTableRowPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTableRowPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:table-row-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+
+	public final static OdfStyleProperty KeepTogether =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-together"));
+
+	public final static OdfStyleProperty MinRowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "min-row-height"));
+
+	public final static OdfStyleProperty RowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "row-height"));
+
+	public final static OdfStyleProperty UseOptimalRowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "use-optimal-row-height"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakAfterAttribute() {
+		FoBreakAfterAttribute attr = (FoBreakAfterAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-after");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakAfterAttribute</code> , See {@odf.attribute fo:break-after}
+	 *
+	 * @param foBreakAfterValue   The type is <code>String</code>
+	 */
+	public void setFoBreakAfterAttribute(String foBreakAfterValue) {
+		FoBreakAfterAttribute attr = new FoBreakAfterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakAfterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBreakBeforeAttribute() {
+		FoBreakBeforeAttribute attr = (FoBreakBeforeAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "break-before");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBreakBeforeAttribute</code> , See {@odf.attribute fo:break-before}
+	 *
+	 * @param foBreakBeforeValue   The type is <code>String</code>
+	 */
+	public void setFoBreakBeforeAttribute(String foBreakBeforeValue) {
+		FoBreakBeforeAttribute attr = new FoBreakBeforeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBreakBeforeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoKeepTogetherAttribute</code> , See {@odf.attribute fo:keep-together}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoKeepTogetherAttribute() {
+		FoKeepTogetherAttribute attr = (FoKeepTogetherAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "keep-together");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoKeepTogetherAttribute</code> , See {@odf.attribute fo:keep-together}
+	 *
+	 * @param foKeepTogetherValue   The type is <code>String</code>
+	 */
+	public void setFoKeepTogetherAttribute(String foKeepTogetherValue) {
+		FoKeepTogetherAttribute attr = new FoKeepTogetherAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foKeepTogetherValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleMinRowHeightAttribute</code> , See {@odf.attribute style:min-row-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleMinRowHeightAttribute() {
+		StyleMinRowHeightAttribute attr = (StyleMinRowHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "min-row-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleMinRowHeightAttribute</code> , See {@odf.attribute style:min-row-height}
+	 *
+	 * @param styleMinRowHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleMinRowHeightAttribute(String styleMinRowHeightValue) {
+		StyleMinRowHeightAttribute attr = new StyleMinRowHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleMinRowHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRowHeightAttribute</code> , See {@odf.attribute style:row-height}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRowHeightAttribute() {
+		StyleRowHeightAttribute attr = (StyleRowHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "row-height");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRowHeightAttribute</code> , See {@odf.attribute style:row-height}
+	 *
+	 * @param styleRowHeightValue   The type is <code>String</code>
+	 */
+	public void setStyleRowHeightAttribute(String styleRowHeightValue) {
+		StyleRowHeightAttribute attr = new StyleRowHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRowHeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleUseOptimalRowHeightAttribute</code> , See {@odf.attribute style:use-optimal-row-height}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleUseOptimalRowHeightAttribute() {
+		StyleUseOptimalRowHeightAttribute attr = (StyleUseOptimalRowHeightAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "use-optimal-row-height");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleUseOptimalRowHeightAttribute</code> , See {@odf.attribute style:use-optimal-row-height}
+	 *
+	 * @param styleUseOptimalRowHeightValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleUseOptimalRowHeightAttribute(Boolean styleUseOptimalRowHeightValue) {
+		StyleUseOptimalRowHeightAttribute attr = new StyleUseOptimalRowHeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleUseOptimalRowHeightValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element style:background-image}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element style:background-image}
+	 */
+	public StyleBackgroundImageElement newStyleBackgroundImageElement() {
+		StyleBackgroundImageElement styleBackgroundImage = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleBackgroundImageElement.class);
+		this.appendChild(styleBackgroundImage);
+		return styleBackgroundImage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTextPropertiesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTextPropertiesElement.java
new file mode 100644
index 0000000..59e836e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/style/StyleTextPropertiesElement.java
@@ -0,0 +1,2428 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.style;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontFamilyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontVariantAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontWeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoHyphenateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoHyphenationPushCharCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoHyphenationRemainCharCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoLetterSpacingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextShadowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleCountryAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleCountryComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontCharsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontCharsetAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontCharsetComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontFamilyAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontFamilyComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontFamilyGenericAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontFamilyGenericAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontFamilyGenericComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontPitchAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontPitchAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontPitchComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontReliefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeRelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeRelAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeRelComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleNameAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleNameComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontWeightAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontWeightComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLanguageAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLanguageComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLetterKerningAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRfcLanguageTagAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRfcLanguageTagComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleScriptAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleScriptComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleScriptTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextBlinkingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextCombineAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextCombineEndCharAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextCombineStartCharAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextEmphasizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughTextAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughTextStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextOutlineAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextOverlineColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextOverlineModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextOverlineStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextOverlineTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextOverlineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextRotationAngleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextRotationScaleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextScaleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleUseWindowFontColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element style:text-properties}.
+ *
+ */
+public class StyleTextPropertiesElement extends OdfStylePropertiesBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.STYLE, "text-properties");
+
+	/**
+	 * Create the instance of <code>StyleTextPropertiesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public StyleTextPropertiesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element style:text-properties}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+
+	public final static OdfStyleProperty Color =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "color"));
+
+	public final static OdfStyleProperty Country =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "country"));
+
+	public final static OdfStyleProperty FontFamily =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-family"));
+
+	public final static OdfStyleProperty FontSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-size"));
+
+	public final static OdfStyleProperty FontStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-style"));
+
+	public final static OdfStyleProperty FontVariant =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-variant"));
+
+	public final static OdfStyleProperty FontWeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-weight"));
+
+	public final static OdfStyleProperty Hyphenate =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenate"));
+
+	public final static OdfStyleProperty HyphenationPushCharCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-push-char-count"));
+
+	public final static OdfStyleProperty HyphenationRemainCharCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-remain-char-count"));
+
+	public final static OdfStyleProperty Language =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "language"));
+
+	public final static OdfStyleProperty LetterSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "letter-spacing"));
+
+	public final static OdfStyleProperty Script =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "script"));
+
+	public final static OdfStyleProperty TextShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-shadow"));
+
+	public final static OdfStyleProperty TextTransform =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-transform"));
+
+	public final static OdfStyleProperty CountryAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "country-asian"));
+
+	public final static OdfStyleProperty CountryComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "country-complex"));
+
+	public final static OdfStyleProperty FontCharset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset"));
+
+	public final static OdfStyleProperty FontCharsetAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset-asian"));
+
+	public final static OdfStyleProperty FontCharsetComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset-complex"));
+
+	public final static OdfStyleProperty FontFamilyAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-asian"));
+
+	public final static OdfStyleProperty FontFamilyComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-complex"));
+
+	public final static OdfStyleProperty FontFamilyGeneric =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic"));
+
+	public final static OdfStyleProperty FontFamilyGenericAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic-asian"));
+
+	public final static OdfStyleProperty FontFamilyGenericComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic-complex"));
+
+	public final static OdfStyleProperty FontName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name"));
+
+	public final static OdfStyleProperty FontNameAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name-asian"));
+
+	public final static OdfStyleProperty FontNameComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name-complex"));
+
+	public final static OdfStyleProperty FontPitch =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch"));
+
+	public final static OdfStyleProperty FontPitchAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch-asian"));
+
+	public final static OdfStyleProperty FontPitchComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch-complex"));
+
+	public final static OdfStyleProperty FontRelief =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-relief"));
+
+	public final static OdfStyleProperty FontSizeAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-asian"));
+
+	public final static OdfStyleProperty FontSizeComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-complex"));
+
+	public final static OdfStyleProperty FontSizeRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel"));
+
+	public final static OdfStyleProperty FontSizeRelAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel-asian"));
+
+	public final static OdfStyleProperty FontSizeRelComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel-complex"));
+
+	public final static OdfStyleProperty FontStyleAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-asian"));
+
+	public final static OdfStyleProperty FontStyleComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-complex"));
+
+	public final static OdfStyleProperty FontStyleName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name"));
+
+	public final static OdfStyleProperty FontStyleNameAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name-asian"));
+
+	public final static OdfStyleProperty FontStyleNameComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name-complex"));
+
+	public final static OdfStyleProperty FontWeightAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-weight-asian"));
+
+	public final static OdfStyleProperty FontWeightComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-weight-complex"));
+
+	public final static OdfStyleProperty LanguageAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "language-asian"));
+
+	public final static OdfStyleProperty LanguageComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "language-complex"));
+
+	public final static OdfStyleProperty LetterKerning =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "letter-kerning"));
+
+	public final static OdfStyleProperty RfcLanguageTag =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag"));
+
+	public final static OdfStyleProperty RfcLanguageTagAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag-asian"));
+
+	public final static OdfStyleProperty RfcLanguageTagComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag-complex"));
+
+	public final static OdfStyleProperty ScriptAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "script-asian"));
+
+	public final static OdfStyleProperty ScriptComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "script-complex"));
+
+	public final static OdfStyleProperty ScriptType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "script-type"));
+
+	public final static OdfStyleProperty TextBlinking =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-blinking"));
+
+	public final static OdfStyleProperty TextCombine =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine"));
+
+	public final static OdfStyleProperty TextCombineEndChar =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine-end-char"));
+
+	public final static OdfStyleProperty TextCombineStartChar =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine-start-char"));
+
+	public final static OdfStyleProperty TextEmphasize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-emphasize"));
+
+	public final static OdfStyleProperty TextLineThroughColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-color"));
+
+	public final static OdfStyleProperty TextLineThroughMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-mode"));
+
+	public final static OdfStyleProperty TextLineThroughStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-style"));
+
+	public final static OdfStyleProperty TextLineThroughText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-text"));
+
+	public final static OdfStyleProperty TextLineThroughTextStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-text-style"));
+
+	public final static OdfStyleProperty TextLineThroughType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-type"));
+
+	public final static OdfStyleProperty TextLineThroughWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-width"));
+
+	public final static OdfStyleProperty TextOutline =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-outline"));
+
+	public final static OdfStyleProperty TextOverlineColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-color"));
+
+	public final static OdfStyleProperty TextOverlineMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-mode"));
+
+	public final static OdfStyleProperty TextOverlineStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-style"));
+
+	public final static OdfStyleProperty TextOverlineType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-type"));
+
+	public final static OdfStyleProperty TextOverlineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-width"));
+
+	public final static OdfStyleProperty TextPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-position"));
+
+	public final static OdfStyleProperty TextRotationAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-rotation-angle"));
+
+	public final static OdfStyleProperty TextRotationScale =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-rotation-scale"));
+
+	public final static OdfStyleProperty TextScale =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-scale"));
+
+	public final static OdfStyleProperty TextUnderlineColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-color"));
+
+	public final static OdfStyleProperty TextUnderlineMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-mode"));
+
+	public final static OdfStyleProperty TextUnderlineStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-style"));
+
+	public final static OdfStyleProperty TextUnderlineType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-type"));
+
+	public final static OdfStyleProperty TextUnderlineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-width"));
+
+	public final static OdfStyleProperty UseWindowFontColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "use-window-font-color"));
+
+	public final static OdfStyleProperty Condition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "condition"));
+
+	public final static OdfStyleProperty Display =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "display"));
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoBackgroundColorAttribute() {
+		FoBackgroundColorAttribute attr = (FoBackgroundColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "background-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoBackgroundColorAttribute</code> , See {@odf.attribute fo:background-color}
+	 *
+	 * @param foBackgroundColorValue   The type is <code>String</code>
+	 */
+	public void setFoBackgroundColorAttribute(String foBackgroundColorValue) {
+		FoBackgroundColorAttribute attr = new FoBackgroundColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foBackgroundColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoColorAttribute</code> , See {@odf.attribute fo:color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoColorAttribute() {
+		FoColorAttribute attr = (FoColorAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoColorAttribute</code> , See {@odf.attribute fo:color}
+	 *
+	 * @param foColorValue   The type is <code>String</code>
+	 */
+	public void setFoColorAttribute(String foColorValue) {
+		FoColorAttribute attr = new FoColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoCountryAttribute</code> , See {@odf.attribute fo:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoCountryAttribute() {
+		FoCountryAttribute attr = (FoCountryAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoCountryAttribute</code> , See {@odf.attribute fo:country}
+	 *
+	 * @param foCountryValue   The type is <code>String</code>
+	 */
+	public void setFoCountryAttribute(String foCountryValue) {
+		FoCountryAttribute attr = new FoCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoFontFamilyAttribute</code> , See {@odf.attribute fo:font-family}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoFontFamilyAttribute() {
+		FoFontFamilyAttribute attr = (FoFontFamilyAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "font-family");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoFontFamilyAttribute</code> , See {@odf.attribute fo:font-family}
+	 *
+	 * @param foFontFamilyValue   The type is <code>String</code>
+	 */
+	public void setFoFontFamilyAttribute(String foFontFamilyValue) {
+		FoFontFamilyAttribute attr = new FoFontFamilyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foFontFamilyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoFontSizeAttribute</code> , See {@odf.attribute fo:font-size}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoFontSizeAttribute() {
+		FoFontSizeAttribute attr = (FoFontSizeAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "font-size");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoFontSizeAttribute</code> , See {@odf.attribute fo:font-size}
+	 *
+	 * @param foFontSizeValue   The type is <code>String</code>
+	 */
+	public void setFoFontSizeAttribute(String foFontSizeValue) {
+		FoFontSizeAttribute attr = new FoFontSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foFontSizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoFontStyleAttribute</code> , See {@odf.attribute fo:font-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoFontStyleAttribute() {
+		FoFontStyleAttribute attr = (FoFontStyleAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "font-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoFontStyleAttribute</code> , See {@odf.attribute fo:font-style}
+	 *
+	 * @param foFontStyleValue   The type is <code>String</code>
+	 */
+	public void setFoFontStyleAttribute(String foFontStyleValue) {
+		FoFontStyleAttribute attr = new FoFontStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foFontStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoFontVariantAttribute</code> , See {@odf.attribute fo:font-variant}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoFontVariantAttribute() {
+		FoFontVariantAttribute attr = (FoFontVariantAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "font-variant");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoFontVariantAttribute</code> , See {@odf.attribute fo:font-variant}
+	 *
+	 * @param foFontVariantValue   The type is <code>String</code>
+	 */
+	public void setFoFontVariantAttribute(String foFontVariantValue) {
+		FoFontVariantAttribute attr = new FoFontVariantAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foFontVariantValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoFontWeightAttribute</code> , See {@odf.attribute fo:font-weight}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoFontWeightAttribute() {
+		FoFontWeightAttribute attr = (FoFontWeightAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "font-weight");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoFontWeightAttribute</code> , See {@odf.attribute fo:font-weight}
+	 *
+	 * @param foFontWeightValue   The type is <code>String</code>
+	 */
+	public void setFoFontWeightAttribute(String foFontWeightValue) {
+		FoFontWeightAttribute attr = new FoFontWeightAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foFontWeightValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoHyphenateAttribute</code> , See {@odf.attribute fo:hyphenate}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getFoHyphenateAttribute() {
+		FoHyphenateAttribute attr = (FoHyphenateAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "hyphenate");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoHyphenateAttribute</code> , See {@odf.attribute fo:hyphenate}
+	 *
+	 * @param foHyphenateValue   The type is <code>Boolean</code>
+	 */
+	public void setFoHyphenateAttribute(Boolean foHyphenateValue) {
+		FoHyphenateAttribute attr = new FoHyphenateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(foHyphenateValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoHyphenationPushCharCountAttribute</code> , See {@odf.attribute fo:hyphenation-push-char-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFoHyphenationPushCharCountAttribute() {
+		FoHyphenationPushCharCountAttribute attr = (FoHyphenationPushCharCountAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "hyphenation-push-char-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoHyphenationPushCharCountAttribute</code> , See {@odf.attribute fo:hyphenation-push-char-count}
+	 *
+	 * @param foHyphenationPushCharCountValue   The type is <code>Integer</code>
+	 */
+	public void setFoHyphenationPushCharCountAttribute(Integer foHyphenationPushCharCountValue) {
+		FoHyphenationPushCharCountAttribute attr = new FoHyphenationPushCharCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(foHyphenationPushCharCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoHyphenationRemainCharCountAttribute</code> , See {@odf.attribute fo:hyphenation-remain-char-count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFoHyphenationRemainCharCountAttribute() {
+		FoHyphenationRemainCharCountAttribute attr = (FoHyphenationRemainCharCountAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "hyphenation-remain-char-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoHyphenationRemainCharCountAttribute</code> , See {@odf.attribute fo:hyphenation-remain-char-count}
+	 *
+	 * @param foHyphenationRemainCharCountValue   The type is <code>Integer</code>
+	 */
+	public void setFoHyphenationRemainCharCountAttribute(Integer foHyphenationRemainCharCountValue) {
+		FoHyphenationRemainCharCountAttribute attr = new FoHyphenationRemainCharCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(foHyphenationRemainCharCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoLanguageAttribute</code> , See {@odf.attribute fo:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoLanguageAttribute() {
+		FoLanguageAttribute attr = (FoLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoLanguageAttribute</code> , See {@odf.attribute fo:language}
+	 *
+	 * @param foLanguageValue   The type is <code>String</code>
+	 */
+	public void setFoLanguageAttribute(String foLanguageValue) {
+		FoLanguageAttribute attr = new FoLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoLetterSpacingAttribute</code> , See {@odf.attribute fo:letter-spacing}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoLetterSpacingAttribute() {
+		FoLetterSpacingAttribute attr = (FoLetterSpacingAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "letter-spacing");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoLetterSpacingAttribute</code> , See {@odf.attribute fo:letter-spacing}
+	 *
+	 * @param foLetterSpacingValue   The type is <code>String</code>
+	 */
+	public void setFoLetterSpacingAttribute(String foLetterSpacingValue) {
+		FoLetterSpacingAttribute attr = new FoLetterSpacingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foLetterSpacingValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoScriptAttribute</code> , See {@odf.attribute fo:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoScriptAttribute() {
+		FoScriptAttribute attr = (FoScriptAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoScriptAttribute</code> , See {@odf.attribute fo:script}
+	 *
+	 * @param foScriptValue   The type is <code>String</code>
+	 */
+	public void setFoScriptAttribute(String foScriptValue) {
+		FoScriptAttribute attr = new FoScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextShadowAttribute</code> , See {@odf.attribute fo:text-shadow}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextShadowAttribute() {
+		FoTextShadowAttribute attr = (FoTextShadowAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-shadow");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextShadowAttribute</code> , See {@odf.attribute fo:text-shadow}
+	 *
+	 * @param foTextShadowValue   The type is <code>String</code>
+	 */
+	public void setFoTextShadowAttribute(String foTextShadowValue) {
+		FoTextShadowAttribute attr = new FoTextShadowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextShadowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoTextTransformAttribute</code> , See {@odf.attribute fo:text-transform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoTextTransformAttribute() {
+		FoTextTransformAttribute attr = (FoTextTransformAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "text-transform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoTextTransformAttribute</code> , See {@odf.attribute fo:text-transform}
+	 *
+	 * @param foTextTransformValue   The type is <code>String</code>
+	 */
+	public void setFoTextTransformAttribute(String foTextTransformValue) {
+		FoTextTransformAttribute attr = new FoTextTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foTextTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleCountryAsianAttribute</code> , See {@odf.attribute style:country-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleCountryAsianAttribute() {
+		StyleCountryAsianAttribute attr = (StyleCountryAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "country-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleCountryAsianAttribute</code> , See {@odf.attribute style:country-asian}
+	 *
+	 * @param styleCountryAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleCountryAsianAttribute(String styleCountryAsianValue) {
+		StyleCountryAsianAttribute attr = new StyleCountryAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleCountryAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleCountryComplexAttribute</code> , See {@odf.attribute style:country-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleCountryComplexAttribute() {
+		StyleCountryComplexAttribute attr = (StyleCountryComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "country-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleCountryComplexAttribute</code> , See {@odf.attribute style:country-complex}
+	 *
+	 * @param styleCountryComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleCountryComplexAttribute(String styleCountryComplexValue) {
+		StyleCountryComplexAttribute attr = new StyleCountryComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleCountryComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontCharsetAttribute</code> , See {@odf.attribute style:font-charset}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontCharsetAttribute() {
+		StyleFontCharsetAttribute attr = (StyleFontCharsetAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-charset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontCharsetAttribute</code> , See {@odf.attribute style:font-charset}
+	 *
+	 * @param styleFontCharsetValue   The type is <code>String</code>
+	 */
+	public void setStyleFontCharsetAttribute(String styleFontCharsetValue) {
+		StyleFontCharsetAttribute attr = new StyleFontCharsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontCharsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontCharsetAsianAttribute</code> , See {@odf.attribute style:font-charset-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontCharsetAsianAttribute() {
+		StyleFontCharsetAsianAttribute attr = (StyleFontCharsetAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-charset-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontCharsetAsianAttribute</code> , See {@odf.attribute style:font-charset-asian}
+	 *
+	 * @param styleFontCharsetAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontCharsetAsianAttribute(String styleFontCharsetAsianValue) {
+		StyleFontCharsetAsianAttribute attr = new StyleFontCharsetAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontCharsetAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontCharsetComplexAttribute</code> , See {@odf.attribute style:font-charset-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontCharsetComplexAttribute() {
+		StyleFontCharsetComplexAttribute attr = (StyleFontCharsetComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-charset-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontCharsetComplexAttribute</code> , See {@odf.attribute style:font-charset-complex}
+	 *
+	 * @param styleFontCharsetComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontCharsetComplexAttribute(String styleFontCharsetComplexValue) {
+		StyleFontCharsetComplexAttribute attr = new StyleFontCharsetComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontCharsetComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontFamilyAsianAttribute</code> , See {@odf.attribute style:font-family-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontFamilyAsianAttribute() {
+		StyleFontFamilyAsianAttribute attr = (StyleFontFamilyAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-family-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontFamilyAsianAttribute</code> , See {@odf.attribute style:font-family-asian}
+	 *
+	 * @param styleFontFamilyAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontFamilyAsianAttribute(String styleFontFamilyAsianValue) {
+		StyleFontFamilyAsianAttribute attr = new StyleFontFamilyAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontFamilyAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontFamilyComplexAttribute</code> , See {@odf.attribute style:font-family-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontFamilyComplexAttribute() {
+		StyleFontFamilyComplexAttribute attr = (StyleFontFamilyComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-family-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontFamilyComplexAttribute</code> , See {@odf.attribute style:font-family-complex}
+	 *
+	 * @param styleFontFamilyComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontFamilyComplexAttribute(String styleFontFamilyComplexValue) {
+		StyleFontFamilyComplexAttribute attr = new StyleFontFamilyComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontFamilyComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontFamilyGenericAttribute</code> , See {@odf.attribute style:font-family-generic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontFamilyGenericAttribute() {
+		StyleFontFamilyGenericAttribute attr = (StyleFontFamilyGenericAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-family-generic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontFamilyGenericAttribute</code> , See {@odf.attribute style:font-family-generic}
+	 *
+	 * @param styleFontFamilyGenericValue   The type is <code>String</code>
+	 */
+	public void setStyleFontFamilyGenericAttribute(String styleFontFamilyGenericValue) {
+		StyleFontFamilyGenericAttribute attr = new StyleFontFamilyGenericAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontFamilyGenericValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontFamilyGenericAsianAttribute</code> , See {@odf.attribute style:font-family-generic-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontFamilyGenericAsianAttribute() {
+		StyleFontFamilyGenericAsianAttribute attr = (StyleFontFamilyGenericAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-family-generic-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontFamilyGenericAsianAttribute</code> , See {@odf.attribute style:font-family-generic-asian}
+	 *
+	 * @param styleFontFamilyGenericAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontFamilyGenericAsianAttribute(String styleFontFamilyGenericAsianValue) {
+		StyleFontFamilyGenericAsianAttribute attr = new StyleFontFamilyGenericAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontFamilyGenericAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontFamilyGenericComplexAttribute</code> , See {@odf.attribute style:font-family-generic-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontFamilyGenericComplexAttribute() {
+		StyleFontFamilyGenericComplexAttribute attr = (StyleFontFamilyGenericComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-family-generic-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontFamilyGenericComplexAttribute</code> , See {@odf.attribute style:font-family-generic-complex}
+	 *
+	 * @param styleFontFamilyGenericComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontFamilyGenericComplexAttribute(String styleFontFamilyGenericComplexValue) {
+		StyleFontFamilyGenericComplexAttribute attr = new StyleFontFamilyGenericComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontFamilyGenericComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontNameAttribute</code> , See {@odf.attribute style:font-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontNameAttribute() {
+		StyleFontNameAttribute attr = (StyleFontNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontNameAttribute</code> , See {@odf.attribute style:font-name}
+	 *
+	 * @param styleFontNameValue   The type is <code>String</code>
+	 */
+	public void setStyleFontNameAttribute(String styleFontNameValue) {
+		StyleFontNameAttribute attr = new StyleFontNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontNameAsianAttribute</code> , See {@odf.attribute style:font-name-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontNameAsianAttribute() {
+		StyleFontNameAsianAttribute attr = (StyleFontNameAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-name-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontNameAsianAttribute</code> , See {@odf.attribute style:font-name-asian}
+	 *
+	 * @param styleFontNameAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontNameAsianAttribute(String styleFontNameAsianValue) {
+		StyleFontNameAsianAttribute attr = new StyleFontNameAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontNameAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontNameComplexAttribute</code> , See {@odf.attribute style:font-name-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontNameComplexAttribute() {
+		StyleFontNameComplexAttribute attr = (StyleFontNameComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-name-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontNameComplexAttribute</code> , See {@odf.attribute style:font-name-complex}
+	 *
+	 * @param styleFontNameComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontNameComplexAttribute(String styleFontNameComplexValue) {
+		StyleFontNameComplexAttribute attr = new StyleFontNameComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontNameComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontPitchAttribute</code> , See {@odf.attribute style:font-pitch}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontPitchAttribute() {
+		StyleFontPitchAttribute attr = (StyleFontPitchAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-pitch");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontPitchAttribute</code> , See {@odf.attribute style:font-pitch}
+	 *
+	 * @param styleFontPitchValue   The type is <code>String</code>
+	 */
+	public void setStyleFontPitchAttribute(String styleFontPitchValue) {
+		StyleFontPitchAttribute attr = new StyleFontPitchAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontPitchValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontPitchAsianAttribute</code> , See {@odf.attribute style:font-pitch-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontPitchAsianAttribute() {
+		StyleFontPitchAsianAttribute attr = (StyleFontPitchAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-pitch-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontPitchAsianAttribute</code> , See {@odf.attribute style:font-pitch-asian}
+	 *
+	 * @param styleFontPitchAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontPitchAsianAttribute(String styleFontPitchAsianValue) {
+		StyleFontPitchAsianAttribute attr = new StyleFontPitchAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontPitchAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontPitchComplexAttribute</code> , See {@odf.attribute style:font-pitch-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontPitchComplexAttribute() {
+		StyleFontPitchComplexAttribute attr = (StyleFontPitchComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-pitch-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontPitchComplexAttribute</code> , See {@odf.attribute style:font-pitch-complex}
+	 *
+	 * @param styleFontPitchComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontPitchComplexAttribute(String styleFontPitchComplexValue) {
+		StyleFontPitchComplexAttribute attr = new StyleFontPitchComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontPitchComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontReliefAttribute</code> , See {@odf.attribute style:font-relief}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontReliefAttribute() {
+		StyleFontReliefAttribute attr = (StyleFontReliefAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-relief");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontReliefAttribute</code> , See {@odf.attribute style:font-relief}
+	 *
+	 * @param styleFontReliefValue   The type is <code>String</code>
+	 */
+	public void setStyleFontReliefAttribute(String styleFontReliefValue) {
+		StyleFontReliefAttribute attr = new StyleFontReliefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontReliefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontSizeAsianAttribute</code> , See {@odf.attribute style:font-size-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontSizeAsianAttribute() {
+		StyleFontSizeAsianAttribute attr = (StyleFontSizeAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-size-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontSizeAsianAttribute</code> , See {@odf.attribute style:font-size-asian}
+	 *
+	 * @param styleFontSizeAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontSizeAsianAttribute(String styleFontSizeAsianValue) {
+		StyleFontSizeAsianAttribute attr = new StyleFontSizeAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontSizeAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontSizeComplexAttribute</code> , See {@odf.attribute style:font-size-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontSizeComplexAttribute() {
+		StyleFontSizeComplexAttribute attr = (StyleFontSizeComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-size-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontSizeComplexAttribute</code> , See {@odf.attribute style:font-size-complex}
+	 *
+	 * @param styleFontSizeComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontSizeComplexAttribute(String styleFontSizeComplexValue) {
+		StyleFontSizeComplexAttribute attr = new StyleFontSizeComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontSizeComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontSizeRelAttribute</code> , See {@odf.attribute style:font-size-rel}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontSizeRelAttribute() {
+		StyleFontSizeRelAttribute attr = (StyleFontSizeRelAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-size-rel");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontSizeRelAttribute</code> , See {@odf.attribute style:font-size-rel}
+	 *
+	 * @param styleFontSizeRelValue   The type is <code>String</code>
+	 */
+	public void setStyleFontSizeRelAttribute(String styleFontSizeRelValue) {
+		StyleFontSizeRelAttribute attr = new StyleFontSizeRelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontSizeRelValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontSizeRelAsianAttribute</code> , See {@odf.attribute style:font-size-rel-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontSizeRelAsianAttribute() {
+		StyleFontSizeRelAsianAttribute attr = (StyleFontSizeRelAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-size-rel-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontSizeRelAsianAttribute</code> , See {@odf.attribute style:font-size-rel-asian}
+	 *
+	 * @param styleFontSizeRelAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontSizeRelAsianAttribute(String styleFontSizeRelAsianValue) {
+		StyleFontSizeRelAsianAttribute attr = new StyleFontSizeRelAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontSizeRelAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontSizeRelComplexAttribute</code> , See {@odf.attribute style:font-size-rel-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontSizeRelComplexAttribute() {
+		StyleFontSizeRelComplexAttribute attr = (StyleFontSizeRelComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-size-rel-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontSizeRelComplexAttribute</code> , See {@odf.attribute style:font-size-rel-complex}
+	 *
+	 * @param styleFontSizeRelComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontSizeRelComplexAttribute(String styleFontSizeRelComplexValue) {
+		StyleFontSizeRelComplexAttribute attr = new StyleFontSizeRelComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontSizeRelComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontStyleAsianAttribute</code> , See {@odf.attribute style:font-style-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontStyleAsianAttribute() {
+		StyleFontStyleAsianAttribute attr = (StyleFontStyleAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-style-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontStyleAsianAttribute</code> , See {@odf.attribute style:font-style-asian}
+	 *
+	 * @param styleFontStyleAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontStyleAsianAttribute(String styleFontStyleAsianValue) {
+		StyleFontStyleAsianAttribute attr = new StyleFontStyleAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontStyleAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontStyleComplexAttribute</code> , See {@odf.attribute style:font-style-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontStyleComplexAttribute() {
+		StyleFontStyleComplexAttribute attr = (StyleFontStyleComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-style-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontStyleComplexAttribute</code> , See {@odf.attribute style:font-style-complex}
+	 *
+	 * @param styleFontStyleComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontStyleComplexAttribute(String styleFontStyleComplexValue) {
+		StyleFontStyleComplexAttribute attr = new StyleFontStyleComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontStyleComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontStyleNameAttribute</code> , See {@odf.attribute style:font-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontStyleNameAttribute() {
+		StyleFontStyleNameAttribute attr = (StyleFontStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontStyleNameAttribute</code> , See {@odf.attribute style:font-style-name}
+	 *
+	 * @param styleFontStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleFontStyleNameAttribute(String styleFontStyleNameValue) {
+		StyleFontStyleNameAttribute attr = new StyleFontStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontStyleNameAsianAttribute</code> , See {@odf.attribute style:font-style-name-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontStyleNameAsianAttribute() {
+		StyleFontStyleNameAsianAttribute attr = (StyleFontStyleNameAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-style-name-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontStyleNameAsianAttribute</code> , See {@odf.attribute style:font-style-name-asian}
+	 *
+	 * @param styleFontStyleNameAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontStyleNameAsianAttribute(String styleFontStyleNameAsianValue) {
+		StyleFontStyleNameAsianAttribute attr = new StyleFontStyleNameAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontStyleNameAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontStyleNameComplexAttribute</code> , See {@odf.attribute style:font-style-name-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontStyleNameComplexAttribute() {
+		StyleFontStyleNameComplexAttribute attr = (StyleFontStyleNameComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-style-name-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontStyleNameComplexAttribute</code> , See {@odf.attribute style:font-style-name-complex}
+	 *
+	 * @param styleFontStyleNameComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontStyleNameComplexAttribute(String styleFontStyleNameComplexValue) {
+		StyleFontStyleNameComplexAttribute attr = new StyleFontStyleNameComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontStyleNameComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontWeightAsianAttribute</code> , See {@odf.attribute style:font-weight-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontWeightAsianAttribute() {
+		StyleFontWeightAsianAttribute attr = (StyleFontWeightAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-weight-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontWeightAsianAttribute</code> , See {@odf.attribute style:font-weight-asian}
+	 *
+	 * @param styleFontWeightAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleFontWeightAsianAttribute(String styleFontWeightAsianValue) {
+		StyleFontWeightAsianAttribute attr = new StyleFontWeightAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontWeightAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleFontWeightComplexAttribute</code> , See {@odf.attribute style:font-weight-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleFontWeightComplexAttribute() {
+		StyleFontWeightComplexAttribute attr = (StyleFontWeightComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "font-weight-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleFontWeightComplexAttribute</code> , See {@odf.attribute style:font-weight-complex}
+	 *
+	 * @param styleFontWeightComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleFontWeightComplexAttribute(String styleFontWeightComplexValue) {
+		StyleFontWeightComplexAttribute attr = new StyleFontWeightComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleFontWeightComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLanguageAsianAttribute</code> , See {@odf.attribute style:language-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLanguageAsianAttribute() {
+		StyleLanguageAsianAttribute attr = (StyleLanguageAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "language-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLanguageAsianAttribute</code> , See {@odf.attribute style:language-asian}
+	 *
+	 * @param styleLanguageAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleLanguageAsianAttribute(String styleLanguageAsianValue) {
+		StyleLanguageAsianAttribute attr = new StyleLanguageAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLanguageAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLanguageComplexAttribute</code> , See {@odf.attribute style:language-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLanguageComplexAttribute() {
+		StyleLanguageComplexAttribute attr = (StyleLanguageComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "language-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLanguageComplexAttribute</code> , See {@odf.attribute style:language-complex}
+	 *
+	 * @param styleLanguageComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleLanguageComplexAttribute(String styleLanguageComplexValue) {
+		StyleLanguageComplexAttribute attr = new StyleLanguageComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLanguageComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLetterKerningAttribute</code> , See {@odf.attribute style:letter-kerning}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleLetterKerningAttribute() {
+		StyleLetterKerningAttribute attr = (StyleLetterKerningAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "letter-kerning");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLetterKerningAttribute</code> , See {@odf.attribute style:letter-kerning}
+	 *
+	 * @param styleLetterKerningValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleLetterKerningAttribute(Boolean styleLetterKerningValue) {
+		StyleLetterKerningAttribute attr = new StyleLetterKerningAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleLetterKerningValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRfcLanguageTagAttribute</code> , See {@odf.attribute style:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRfcLanguageTagAttribute() {
+		StyleRfcLanguageTagAttribute attr = (StyleRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRfcLanguageTagAttribute</code> , See {@odf.attribute style:rfc-language-tag}
+	 *
+	 * @param styleRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setStyleRfcLanguageTagAttribute(String styleRfcLanguageTagValue) {
+		StyleRfcLanguageTagAttribute attr = new StyleRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRfcLanguageTagAsianAttribute</code> , See {@odf.attribute style:rfc-language-tag-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRfcLanguageTagAsianAttribute() {
+		StyleRfcLanguageTagAsianAttribute attr = (StyleRfcLanguageTagAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rfc-language-tag-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRfcLanguageTagAsianAttribute</code> , See {@odf.attribute style:rfc-language-tag-asian}
+	 *
+	 * @param styleRfcLanguageTagAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleRfcLanguageTagAsianAttribute(String styleRfcLanguageTagAsianValue) {
+		StyleRfcLanguageTagAsianAttribute attr = new StyleRfcLanguageTagAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRfcLanguageTagAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRfcLanguageTagComplexAttribute</code> , See {@odf.attribute style:rfc-language-tag-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRfcLanguageTagComplexAttribute() {
+		StyleRfcLanguageTagComplexAttribute attr = (StyleRfcLanguageTagComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rfc-language-tag-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRfcLanguageTagComplexAttribute</code> , See {@odf.attribute style:rfc-language-tag-complex}
+	 *
+	 * @param styleRfcLanguageTagComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleRfcLanguageTagComplexAttribute(String styleRfcLanguageTagComplexValue) {
+		StyleRfcLanguageTagComplexAttribute attr = new StyleRfcLanguageTagComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRfcLanguageTagComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleScriptAsianAttribute</code> , See {@odf.attribute style:script-asian}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleScriptAsianAttribute() {
+		StyleScriptAsianAttribute attr = (StyleScriptAsianAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "script-asian");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleScriptAsianAttribute</code> , See {@odf.attribute style:script-asian}
+	 *
+	 * @param styleScriptAsianValue   The type is <code>String</code>
+	 */
+	public void setStyleScriptAsianAttribute(String styleScriptAsianValue) {
+		StyleScriptAsianAttribute attr = new StyleScriptAsianAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleScriptAsianValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleScriptComplexAttribute</code> , See {@odf.attribute style:script-complex}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleScriptComplexAttribute() {
+		StyleScriptComplexAttribute attr = (StyleScriptComplexAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "script-complex");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleScriptComplexAttribute</code> , See {@odf.attribute style:script-complex}
+	 *
+	 * @param styleScriptComplexValue   The type is <code>String</code>
+	 */
+	public void setStyleScriptComplexAttribute(String styleScriptComplexValue) {
+		StyleScriptComplexAttribute attr = new StyleScriptComplexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleScriptComplexValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleScriptTypeAttribute</code> , See {@odf.attribute style:script-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleScriptTypeAttribute() {
+		StyleScriptTypeAttribute attr = (StyleScriptTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "script-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleScriptTypeAttribute</code> , See {@odf.attribute style:script-type}
+	 *
+	 * @param styleScriptTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleScriptTypeAttribute(String styleScriptTypeValue) {
+		StyleScriptTypeAttribute attr = new StyleScriptTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleScriptTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextBlinkingAttribute</code> , See {@odf.attribute style:text-blinking}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleTextBlinkingAttribute() {
+		StyleTextBlinkingAttribute attr = (StyleTextBlinkingAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-blinking");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextBlinkingAttribute</code> , See {@odf.attribute style:text-blinking}
+	 *
+	 * @param styleTextBlinkingValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleTextBlinkingAttribute(Boolean styleTextBlinkingValue) {
+		StyleTextBlinkingAttribute attr = new StyleTextBlinkingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleTextBlinkingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextCombineAttribute</code> , See {@odf.attribute style:text-combine}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextCombineAttribute() {
+		StyleTextCombineAttribute attr = (StyleTextCombineAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-combine");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextCombineAttribute</code> , See {@odf.attribute style:text-combine}
+	 *
+	 * @param styleTextCombineValue   The type is <code>String</code>
+	 */
+	public void setStyleTextCombineAttribute(String styleTextCombineValue) {
+		StyleTextCombineAttribute attr = new StyleTextCombineAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextCombineValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextCombineEndCharAttribute</code> , See {@odf.attribute style:text-combine-end-char}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextCombineEndCharAttribute() {
+		StyleTextCombineEndCharAttribute attr = (StyleTextCombineEndCharAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-combine-end-char");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextCombineEndCharAttribute</code> , See {@odf.attribute style:text-combine-end-char}
+	 *
+	 * @param styleTextCombineEndCharValue   The type is <code>String</code>
+	 */
+	public void setStyleTextCombineEndCharAttribute(String styleTextCombineEndCharValue) {
+		StyleTextCombineEndCharAttribute attr = new StyleTextCombineEndCharAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextCombineEndCharValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextCombineStartCharAttribute</code> , See {@odf.attribute style:text-combine-start-char}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextCombineStartCharAttribute() {
+		StyleTextCombineStartCharAttribute attr = (StyleTextCombineStartCharAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-combine-start-char");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextCombineStartCharAttribute</code> , See {@odf.attribute style:text-combine-start-char}
+	 *
+	 * @param styleTextCombineStartCharValue   The type is <code>String</code>
+	 */
+	public void setStyleTextCombineStartCharAttribute(String styleTextCombineStartCharValue) {
+		StyleTextCombineStartCharAttribute attr = new StyleTextCombineStartCharAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextCombineStartCharValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextEmphasizeAttribute</code> , See {@odf.attribute style:text-emphasize}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextEmphasizeAttribute() {
+		StyleTextEmphasizeAttribute attr = (StyleTextEmphasizeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-emphasize");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextEmphasizeAttribute</code> , See {@odf.attribute style:text-emphasize}
+	 *
+	 * @param styleTextEmphasizeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextEmphasizeAttribute(String styleTextEmphasizeValue) {
+		StyleTextEmphasizeAttribute attr = new StyleTextEmphasizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextEmphasizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughColorAttribute</code> , See {@odf.attribute style:text-line-through-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughColorAttribute() {
+		StyleTextLineThroughColorAttribute attr = (StyleTextLineThroughColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughColorAttribute</code> , See {@odf.attribute style:text-line-through-color}
+	 *
+	 * @param styleTextLineThroughColorValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughColorAttribute(String styleTextLineThroughColorValue) {
+		StyleTextLineThroughColorAttribute attr = new StyleTextLineThroughColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughModeAttribute</code> , See {@odf.attribute style:text-line-through-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughModeAttribute() {
+		StyleTextLineThroughModeAttribute attr = (StyleTextLineThroughModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughModeAttribute</code> , See {@odf.attribute style:text-line-through-mode}
+	 *
+	 * @param styleTextLineThroughModeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughModeAttribute(String styleTextLineThroughModeValue) {
+		StyleTextLineThroughModeAttribute attr = new StyleTextLineThroughModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughStyleAttribute</code> , See {@odf.attribute style:text-line-through-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughStyleAttribute() {
+		StyleTextLineThroughStyleAttribute attr = (StyleTextLineThroughStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughStyleAttribute</code> , See {@odf.attribute style:text-line-through-style}
+	 *
+	 * @param styleTextLineThroughStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughStyleAttribute(String styleTextLineThroughStyleValue) {
+		StyleTextLineThroughStyleAttribute attr = new StyleTextLineThroughStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughTextAttribute</code> , See {@odf.attribute style:text-line-through-text}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughTextAttribute() {
+		StyleTextLineThroughTextAttribute attr = (StyleTextLineThroughTextAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-text");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughTextAttribute</code> , See {@odf.attribute style:text-line-through-text}
+	 *
+	 * @param styleTextLineThroughTextValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughTextAttribute(String styleTextLineThroughTextValue) {
+		StyleTextLineThroughTextAttribute attr = new StyleTextLineThroughTextAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughTextValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughTextStyleAttribute</code> , See {@odf.attribute style:text-line-through-text-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughTextStyleAttribute() {
+		StyleTextLineThroughTextStyleAttribute attr = (StyleTextLineThroughTextStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-text-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughTextStyleAttribute</code> , See {@odf.attribute style:text-line-through-text-style}
+	 *
+	 * @param styleTextLineThroughTextStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughTextStyleAttribute(String styleTextLineThroughTextStyleValue) {
+		StyleTextLineThroughTextStyleAttribute attr = new StyleTextLineThroughTextStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughTextStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughTypeAttribute</code> , See {@odf.attribute style:text-line-through-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughTypeAttribute() {
+		StyleTextLineThroughTypeAttribute attr = (StyleTextLineThroughTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughTypeAttribute</code> , See {@odf.attribute style:text-line-through-type}
+	 *
+	 * @param styleTextLineThroughTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughTypeAttribute(String styleTextLineThroughTypeValue) {
+		StyleTextLineThroughTypeAttribute attr = new StyleTextLineThroughTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextLineThroughWidthAttribute</code> , See {@odf.attribute style:text-line-through-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextLineThroughWidthAttribute() {
+		StyleTextLineThroughWidthAttribute attr = (StyleTextLineThroughWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-line-through-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextLineThroughWidthAttribute</code> , See {@odf.attribute style:text-line-through-width}
+	 *
+	 * @param styleTextLineThroughWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleTextLineThroughWidthAttribute(String styleTextLineThroughWidthValue) {
+		StyleTextLineThroughWidthAttribute attr = new StyleTextLineThroughWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextLineThroughWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextOutlineAttribute</code> , See {@odf.attribute style:text-outline}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleTextOutlineAttribute() {
+		StyleTextOutlineAttribute attr = (StyleTextOutlineAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-outline");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextOutlineAttribute</code> , See {@odf.attribute style:text-outline}
+	 *
+	 * @param styleTextOutlineValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleTextOutlineAttribute(Boolean styleTextOutlineValue) {
+		StyleTextOutlineAttribute attr = new StyleTextOutlineAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleTextOutlineValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextOverlineColorAttribute</code> , See {@odf.attribute style:text-overline-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextOverlineColorAttribute() {
+		StyleTextOverlineColorAttribute attr = (StyleTextOverlineColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-overline-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextOverlineColorAttribute</code> , See {@odf.attribute style:text-overline-color}
+	 *
+	 * @param styleTextOverlineColorValue   The type is <code>String</code>
+	 */
+	public void setStyleTextOverlineColorAttribute(String styleTextOverlineColorValue) {
+		StyleTextOverlineColorAttribute attr = new StyleTextOverlineColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextOverlineColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextOverlineModeAttribute</code> , See {@odf.attribute style:text-overline-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextOverlineModeAttribute() {
+		StyleTextOverlineModeAttribute attr = (StyleTextOverlineModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-overline-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextOverlineModeAttribute</code> , See {@odf.attribute style:text-overline-mode}
+	 *
+	 * @param styleTextOverlineModeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextOverlineModeAttribute(String styleTextOverlineModeValue) {
+		StyleTextOverlineModeAttribute attr = new StyleTextOverlineModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextOverlineModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextOverlineStyleAttribute</code> , See {@odf.attribute style:text-overline-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextOverlineStyleAttribute() {
+		StyleTextOverlineStyleAttribute attr = (StyleTextOverlineStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-overline-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextOverlineStyleAttribute</code> , See {@odf.attribute style:text-overline-style}
+	 *
+	 * @param styleTextOverlineStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextOverlineStyleAttribute(String styleTextOverlineStyleValue) {
+		StyleTextOverlineStyleAttribute attr = new StyleTextOverlineStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextOverlineStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextOverlineTypeAttribute</code> , See {@odf.attribute style:text-overline-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextOverlineTypeAttribute() {
+		StyleTextOverlineTypeAttribute attr = (StyleTextOverlineTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-overline-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextOverlineTypeAttribute</code> , See {@odf.attribute style:text-overline-type}
+	 *
+	 * @param styleTextOverlineTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextOverlineTypeAttribute(String styleTextOverlineTypeValue) {
+		StyleTextOverlineTypeAttribute attr = new StyleTextOverlineTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextOverlineTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextOverlineWidthAttribute</code> , See {@odf.attribute style:text-overline-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextOverlineWidthAttribute() {
+		StyleTextOverlineWidthAttribute attr = (StyleTextOverlineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-overline-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextOverlineWidthAttribute</code> , See {@odf.attribute style:text-overline-width}
+	 *
+	 * @param styleTextOverlineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleTextOverlineWidthAttribute(String styleTextOverlineWidthValue) {
+		StyleTextOverlineWidthAttribute attr = new StyleTextOverlineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextOverlineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextPositionAttribute</code> , See {@odf.attribute style:text-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextPositionAttribute() {
+		StyleTextPositionAttribute attr = (StyleTextPositionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextPositionAttribute</code> , See {@odf.attribute style:text-position}
+	 *
+	 * @param styleTextPositionValue   The type is <code>String</code>
+	 */
+	public void setStyleTextPositionAttribute(String styleTextPositionValue) {
+		StyleTextPositionAttribute attr = new StyleTextPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextRotationAngleAttribute</code> , See {@odf.attribute style:text-rotation-angle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextRotationAngleAttribute() {
+		StyleTextRotationAngleAttribute attr = (StyleTextRotationAngleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-rotation-angle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextRotationAngleAttribute</code> , See {@odf.attribute style:text-rotation-angle}
+	 *
+	 * @param styleTextRotationAngleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextRotationAngleAttribute(String styleTextRotationAngleValue) {
+		StyleTextRotationAngleAttribute attr = new StyleTextRotationAngleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextRotationAngleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextRotationScaleAttribute</code> , See {@odf.attribute style:text-rotation-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextRotationScaleAttribute() {
+		StyleTextRotationScaleAttribute attr = (StyleTextRotationScaleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-rotation-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextRotationScaleAttribute</code> , See {@odf.attribute style:text-rotation-scale}
+	 *
+	 * @param styleTextRotationScaleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextRotationScaleAttribute(String styleTextRotationScaleValue) {
+		StyleTextRotationScaleAttribute attr = new StyleTextRotationScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextRotationScaleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextScaleAttribute</code> , See {@odf.attribute style:text-scale}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextScaleAttribute() {
+		StyleTextScaleAttribute attr = (StyleTextScaleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-scale");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextScaleAttribute</code> , See {@odf.attribute style:text-scale}
+	 *
+	 * @param styleTextScaleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextScaleAttribute(String styleTextScaleValue) {
+		StyleTextScaleAttribute attr = new StyleTextScaleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextScaleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextUnderlineColorAttribute</code> , See {@odf.attribute style:text-underline-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextUnderlineColorAttribute() {
+		StyleTextUnderlineColorAttribute attr = (StyleTextUnderlineColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-underline-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextUnderlineColorAttribute</code> , See {@odf.attribute style:text-underline-color}
+	 *
+	 * @param styleTextUnderlineColorValue   The type is <code>String</code>
+	 */
+	public void setStyleTextUnderlineColorAttribute(String styleTextUnderlineColorValue) {
+		StyleTextUnderlineColorAttribute attr = new StyleTextUnderlineColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextUnderlineColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextUnderlineModeAttribute</code> , See {@odf.attribute style:text-underline-mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextUnderlineModeAttribute() {
+		StyleTextUnderlineModeAttribute attr = (StyleTextUnderlineModeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-underline-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextUnderlineModeAttribute</code> , See {@odf.attribute style:text-underline-mode}
+	 *
+	 * @param styleTextUnderlineModeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextUnderlineModeAttribute(String styleTextUnderlineModeValue) {
+		StyleTextUnderlineModeAttribute attr = new StyleTextUnderlineModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextUnderlineModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextUnderlineStyleAttribute</code> , See {@odf.attribute style:text-underline-style}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextUnderlineStyleAttribute() {
+		StyleTextUnderlineStyleAttribute attr = (StyleTextUnderlineStyleAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-underline-style");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextUnderlineStyleAttribute</code> , See {@odf.attribute style:text-underline-style}
+	 *
+	 * @param styleTextUnderlineStyleValue   The type is <code>String</code>
+	 */
+	public void setStyleTextUnderlineStyleAttribute(String styleTextUnderlineStyleValue) {
+		StyleTextUnderlineStyleAttribute attr = new StyleTextUnderlineStyleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextUnderlineStyleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextUnderlineTypeAttribute</code> , See {@odf.attribute style:text-underline-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextUnderlineTypeAttribute() {
+		StyleTextUnderlineTypeAttribute attr = (StyleTextUnderlineTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-underline-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextUnderlineTypeAttribute</code> , See {@odf.attribute style:text-underline-type}
+	 *
+	 * @param styleTextUnderlineTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleTextUnderlineTypeAttribute(String styleTextUnderlineTypeValue) {
+		StyleTextUnderlineTypeAttribute attr = new StyleTextUnderlineTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextUnderlineTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTextUnderlineWidthAttribute</code> , See {@odf.attribute style:text-underline-width}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTextUnderlineWidthAttribute() {
+		StyleTextUnderlineWidthAttribute attr = (StyleTextUnderlineWidthAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "text-underline-width");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTextUnderlineWidthAttribute</code> , See {@odf.attribute style:text-underline-width}
+	 *
+	 * @param styleTextUnderlineWidthValue   The type is <code>String</code>
+	 */
+	public void setStyleTextUnderlineWidthAttribute(String styleTextUnderlineWidthValue) {
+		StyleTextUnderlineWidthAttribute attr = new StyleTextUnderlineWidthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTextUnderlineWidthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleUseWindowFontColorAttribute</code> , See {@odf.attribute style:use-window-font-color}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleUseWindowFontColorAttribute() {
+		StyleUseWindowFontColorAttribute attr = (StyleUseWindowFontColorAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "use-window-font-color");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleUseWindowFontColorAttribute</code> , See {@odf.attribute style:use-window-font-color}
+	 *
+	 * @param styleUseWindowFontColorValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleUseWindowFontColorAttribute(Boolean styleUseWindowFontColorValue) {
+		StyleUseWindowFontColorAttribute attr = new StyleUseWindowFontColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleUseWindowFontColorValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgDefinitionSrcElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgDefinitionSrcElement.java
new file mode 100644
index 0000000..90620e9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgDefinitionSrcElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:definition-src}.
+ *
+ */
+public class SvgDefinitionSrcElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "definition-src");
+
+	/**
+	 * Create the instance of <code>SvgDefinitionSrcElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgDefinitionSrcElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:definition-src}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgDescElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgDescElement.java
new file mode 100644
index 0000000..a8e2d85
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgDescElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:desc}.
+ *
+ */
+public class SvgDescElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "desc");
+
+	/**
+	 * Create the instance of <code>SvgDescElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgDescElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:desc}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceFormatElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceFormatElement.java
new file mode 100644
index 0000000..b48aad3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceFormatElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStringAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:font-face-format}.
+ *
+ */
+public class SvgFontFaceFormatElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-face-format");
+
+	/**
+	 * Create the instance of <code>SvgFontFaceFormatElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontFaceFormatElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:font-face-format}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStringAttribute</code> , See {@odf.attribute svg:string}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgStringAttribute() {
+		SvgStringAttribute attr = (SvgStringAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "string");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStringAttribute</code> , See {@odf.attribute svg:string}
+	 *
+	 * @param svgStringValue   The type is <code>String</code>
+	 */
+	public void setSvgStringAttribute(String svgStringValue) {
+		SvgStringAttribute attr = new SvgStringAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgStringValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceNameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceNameElement.java
new file mode 100644
index 0000000..6b4b908
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceNameElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:font-face-name}.
+ *
+ */
+public class SvgFontFaceNameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-face-name");
+
+	/**
+	 * Create the instance of <code>SvgFontFaceNameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontFaceNameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:font-face-name}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgNameAttribute</code> , See {@odf.attribute svg:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgNameAttribute() {
+		SvgNameAttribute attr = (SvgNameAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgNameAttribute</code> , See {@odf.attribute svg:name}
+	 *
+	 * @param svgNameValue   The type is <code>String</code>
+	 */
+	public void setSvgNameAttribute(String svgNameValue) {
+		SvgNameAttribute attr = new SvgNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceSrcElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceSrcElement.java
new file mode 100644
index 0000000..dbd38d3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceSrcElement.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:font-face-src}.
+ *
+ */
+public class SvgFontFaceSrcElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-face-src");
+
+	/**
+	 * Create the instance of <code>SvgFontFaceSrcElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontFaceSrcElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:font-face-src}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:font-face-name}.
+	 *
+	 * @return the element {@odf.element svg:font-face-name}
+	 */
+	public SvgFontFaceNameElement newSvgFontFaceNameElement() {
+		SvgFontFaceNameElement svgFontFaceName = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgFontFaceNameElement.class);
+		this.appendChild(svgFontFaceName);
+		return svgFontFaceName;
+	}
+
+	/**
+	 * Create child element {@odf.element svg:font-face-uri}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element svg:font-face-uri}
+	 */
+	 public SvgFontFaceUriElement newSvgFontFaceUriElement(String xlinkHrefValue, String xlinkTypeValue) {
+		SvgFontFaceUriElement svgFontFaceUri = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgFontFaceUriElement.class);
+		svgFontFaceUri.setXlinkHrefAttribute(xlinkHrefValue);
+		svgFontFaceUri.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(svgFontFaceUri);
+		return svgFontFaceUri;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceUriElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceUriElement.java
new file mode 100644
index 0000000..5da877d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgFontFaceUriElement.java
@@ -0,0 +1,161 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:font-face-uri}.
+ *
+ */
+public class SvgFontFaceUriElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "font-face-uri");
+
+	/**
+	 * Create the instance of <code>SvgFontFaceUriElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgFontFaceUriElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:font-face-uri}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element svg:font-face-format}.
+	 *
+	 * @return the element {@odf.element svg:font-face-format}
+	 */
+	public SvgFontFaceFormatElement newSvgFontFaceFormatElement() {
+		SvgFontFaceFormatElement svgFontFaceFormat = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgFontFaceFormatElement.class);
+		this.appendChild(svgFontFaceFormat);
+		return svgFontFaceFormat;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgLinearGradientElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgLinearGradientElement.java
new file mode 100644
index 0000000..7f05a29
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgLinearGradientElement.java
@@ -0,0 +1,311 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgGradientTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgGradientUnitsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgSpreadMethodAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgX2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgY2Attribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:linearGradient}.
+ *
+ */
+public class SvgLinearGradientElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "linearGradient");
+
+	/**
+	 * Create the instance of <code>SvgLinearGradientElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgLinearGradientElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:linearGradient}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgGradientTransformAttribute</code> , See {@odf.attribute svg:gradientTransform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgGradientTransformAttribute() {
+		SvgGradientTransformAttribute attr = (SvgGradientTransformAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "gradientTransform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgGradientTransformAttribute</code> , See {@odf.attribute svg:gradientTransform}
+	 *
+	 * @param svgGradientTransformValue   The type is <code>String</code>
+	 */
+	public void setSvgGradientTransformAttribute(String svgGradientTransformValue) {
+		SvgGradientTransformAttribute attr = new SvgGradientTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgGradientTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgGradientUnitsAttribute</code> , See {@odf.attribute svg:gradientUnits}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgGradientUnitsAttribute() {
+		SvgGradientUnitsAttribute attr = (SvgGradientUnitsAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "gradientUnits");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgGradientUnitsAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgGradientUnitsAttribute</code> , See {@odf.attribute svg:gradientUnits}
+	 *
+	 * @param svgGradientUnitsValue   The type is <code>String</code>
+	 */
+	public void setSvgGradientUnitsAttribute(String svgGradientUnitsValue) {
+		SvgGradientUnitsAttribute attr = new SvgGradientUnitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgGradientUnitsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgSpreadMethodAttribute</code> , See {@odf.attribute svg:spreadMethod}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgSpreadMethodAttribute() {
+		SvgSpreadMethodAttribute attr = (SvgSpreadMethodAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "spreadMethod");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgSpreadMethodAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgSpreadMethodAttribute</code> , See {@odf.attribute svg:spreadMethod}
+	 *
+	 * @param svgSpreadMethodValue   The type is <code>String</code>
+	 */
+	public void setSvgSpreadMethodAttribute(String svgSpreadMethodValue) {
+		SvgSpreadMethodAttribute attr = new SvgSpreadMethodAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgSpreadMethodValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX1Attribute() {
+		SvgX1Attribute attr = (SvgX1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgX1Attribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX1Attribute</code> , See {@odf.attribute svg:x1}
+	 *
+	 * @param svgX1Value   The type is <code>String</code>
+	 */
+	public void setSvgX1Attribute(String svgX1Value) {
+		SvgX1Attribute attr = new SvgX1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgX2Attribute() {
+		SvgX2Attribute attr = (SvgX2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "x2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgX2Attribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgX2Attribute</code> , See {@odf.attribute svg:x2}
+	 *
+	 * @param svgX2Value   The type is <code>String</code>
+	 */
+	public void setSvgX2Attribute(String svgX2Value) {
+		SvgX2Attribute attr = new SvgX2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgX2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY1Attribute() {
+		SvgY1Attribute attr = (SvgY1Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgY1Attribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY1Attribute</code> , See {@odf.attribute svg:y1}
+	 *
+	 * @param svgY1Value   The type is <code>String</code>
+	 */
+	public void setSvgY1Attribute(String svgY1Value) {
+		SvgY1Attribute attr = new SvgY1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgY2Attribute() {
+		SvgY2Attribute attr = (SvgY2Attribute) getOdfAttribute(OdfDocumentNamespace.SVG, "y2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgY2Attribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgY2Attribute</code> , See {@odf.attribute svg:y2}
+	 *
+	 * @param svgY2Value   The type is <code>String</code>
+	 */
+	public void setSvgY2Attribute(String svgY2Value) {
+		SvgY2Attribute attr = new SvgY2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgY2Value);
+	}
+
+	/**
+	 * Create child element {@odf.element svg:stop}.
+	 *
+	 * @param svgOffsetValue  the <code>String</code> value of <code>SvgOffsetAttribute</code>, see {@odf.attribute  svg:offset} at specification
+	 * @return the element {@odf.element svg:stop}
+	 */
+	 public SvgStopElement newSvgStopElement(String svgOffsetValue) {
+		SvgStopElement svgStop = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgStopElement.class);
+		svgStop.setSvgOffsetAttribute(svgOffsetValue);
+		this.appendChild(svgStop);
+		return svgStop;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgRadialGradientElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgRadialGradientElement.java
new file mode 100644
index 0000000..eb91d70
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgRadialGradientElement.java
@@ -0,0 +1,336 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.draw.DrawNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgCyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFxAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgFyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgGradientTransformAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgGradientUnitsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgRAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgSpreadMethodAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:radialGradient}.
+ *
+ */
+public class SvgRadialGradientElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "radialGradient");
+
+	/**
+	 * Create the instance of <code>SvgRadialGradientElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgRadialGradientElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:radialGradient}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawDisplayNameAttribute() {
+		DrawDisplayNameAttribute attr = (DrawDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawDisplayNameAttribute</code> , See {@odf.attribute draw:display-name}
+	 *
+	 * @param drawDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setDrawDisplayNameAttribute(String drawDisplayNameValue) {
+		DrawDisplayNameAttribute attr = new DrawDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getDrawNameAttribute() {
+		DrawNameAttribute attr = (DrawNameAttribute) getOdfAttribute(OdfDocumentNamespace.DRAW, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>DrawNameAttribute</code> , See {@odf.attribute draw:name}
+	 *
+	 * @param drawNameValue   The type is <code>String</code>
+	 */
+	public void setDrawNameAttribute(String drawNameValue) {
+		DrawNameAttribute attr = new DrawNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(drawNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCxAttribute() {
+		SvgCxAttribute attr = (SvgCxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgCxAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCxAttribute</code> , See {@odf.attribute svg:cx}
+	 *
+	 * @param svgCxValue   The type is <code>String</code>
+	 */
+	public void setSvgCxAttribute(String svgCxValue) {
+		SvgCxAttribute attr = new SvgCxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgCyAttribute() {
+		SvgCyAttribute attr = (SvgCyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "cy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgCyAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgCyAttribute</code> , See {@odf.attribute svg:cy}
+	 *
+	 * @param svgCyValue   The type is <code>String</code>
+	 */
+	public void setSvgCyAttribute(String svgCyValue) {
+		SvgCyAttribute attr = new SvgCyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgCyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFxAttribute</code> , See {@odf.attribute svg:fx}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFxAttribute() {
+		SvgFxAttribute attr = (SvgFxAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "fx");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFxAttribute</code> , See {@odf.attribute svg:fx}
+	 *
+	 * @param svgFxValue   The type is <code>String</code>
+	 */
+	public void setSvgFxAttribute(String svgFxValue) {
+		SvgFxAttribute attr = new SvgFxAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFxValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgFyAttribute</code> , See {@odf.attribute svg:fy}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgFyAttribute() {
+		SvgFyAttribute attr = (SvgFyAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "fy");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgFyAttribute</code> , See {@odf.attribute svg:fy}
+	 *
+	 * @param svgFyValue   The type is <code>String</code>
+	 */
+	public void setSvgFyAttribute(String svgFyValue) {
+		SvgFyAttribute attr = new SvgFyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgFyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgGradientTransformAttribute</code> , See {@odf.attribute svg:gradientTransform}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgGradientTransformAttribute() {
+		SvgGradientTransformAttribute attr = (SvgGradientTransformAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "gradientTransform");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgGradientTransformAttribute</code> , See {@odf.attribute svg:gradientTransform}
+	 *
+	 * @param svgGradientTransformValue   The type is <code>String</code>
+	 */
+	public void setSvgGradientTransformAttribute(String svgGradientTransformValue) {
+		SvgGradientTransformAttribute attr = new SvgGradientTransformAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgGradientTransformValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgGradientUnitsAttribute</code> , See {@odf.attribute svg:gradientUnits}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgGradientUnitsAttribute() {
+		SvgGradientUnitsAttribute attr = (SvgGradientUnitsAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "gradientUnits");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgGradientUnitsAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgGradientUnitsAttribute</code> , See {@odf.attribute svg:gradientUnits}
+	 *
+	 * @param svgGradientUnitsValue   The type is <code>String</code>
+	 */
+	public void setSvgGradientUnitsAttribute(String svgGradientUnitsValue) {
+		SvgGradientUnitsAttribute attr = new SvgGradientUnitsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgGradientUnitsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgRAttribute</code> , See {@odf.attribute svg:r}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgRAttribute() {
+		SvgRAttribute attr = (SvgRAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "r");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgRAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgRAttribute</code> , See {@odf.attribute svg:r}
+	 *
+	 * @param svgRValue   The type is <code>String</code>
+	 */
+	public void setSvgRAttribute(String svgRValue) {
+		SvgRAttribute attr = new SvgRAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgRValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgSpreadMethodAttribute</code> , See {@odf.attribute svg:spreadMethod}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgSpreadMethodAttribute() {
+		SvgSpreadMethodAttribute attr = (SvgSpreadMethodAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "spreadMethod");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return SvgSpreadMethodAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgSpreadMethodAttribute</code> , See {@odf.attribute svg:spreadMethod}
+	 *
+	 * @param svgSpreadMethodValue   The type is <code>String</code>
+	 */
+	public void setSvgSpreadMethodAttribute(String svgSpreadMethodValue) {
+		SvgSpreadMethodAttribute attr = new SvgSpreadMethodAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgSpreadMethodValue);
+	}
+
+	/**
+	 * Create child element {@odf.element svg:stop}.
+	 *
+	 * @param svgOffsetValue  the <code>String</code> value of <code>SvgOffsetAttribute</code>, see {@odf.attribute  svg:offset} at specification
+	 * @return the element {@odf.element svg:stop}
+	 */
+	 public SvgStopElement newSvgStopElement(String svgOffsetValue) {
+		SvgStopElement svgStop = ((OdfFileDom) this.ownerDocument).newOdfElement(SvgStopElement.class);
+		svgStop.setSvgOffsetAttribute(svgOffsetValue);
+		this.appendChild(svgStop);
+		return svgStop;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgStopElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgStopElement.java
new file mode 100644
index 0000000..3a49442
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgStopElement.java
@@ -0,0 +1,148 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgOffsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStopColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.svg.SvgStopOpacityAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:stop}.
+ *
+ */
+public class SvgStopElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "stop");
+
+	/**
+	 * Create the instance of <code>SvgStopElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgStopElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:stop}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgOffsetAttribute</code> , See {@odf.attribute svg:offset}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgOffsetAttribute() {
+		SvgOffsetAttribute attr = (SvgOffsetAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "offset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgOffsetAttribute</code> , See {@odf.attribute svg:offset}
+	 *
+	 * @param svgOffsetValue   The type is <code>String</code>
+	 */
+	public void setSvgOffsetAttribute(String svgOffsetValue) {
+		SvgOffsetAttribute attr = new SvgOffsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgOffsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStopColorAttribute</code> , See {@odf.attribute svg:stop-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getSvgStopColorAttribute() {
+		SvgStopColorAttribute attr = (SvgStopColorAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stop-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStopColorAttribute</code> , See {@odf.attribute svg:stop-color}
+	 *
+	 * @param svgStopColorValue   The type is <code>String</code>
+	 */
+	public void setSvgStopColorAttribute(String svgStopColorValue) {
+		SvgStopColorAttribute attr = new SvgStopColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(svgStopColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>SvgStopOpacityAttribute</code> , See {@odf.attribute svg:stop-opacity}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getSvgStopOpacityAttribute() {
+		SvgStopOpacityAttribute attr = (SvgStopOpacityAttribute) getOdfAttribute(OdfDocumentNamespace.SVG, "stop-opacity");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>SvgStopOpacityAttribute</code> , See {@odf.attribute svg:stop-opacity}
+	 *
+	 * @param svgStopOpacityValue   The type is <code>Double</code>
+	 */
+	public void setSvgStopOpacityAttribute(Double svgStopOpacityValue) {
+		SvgStopOpacityAttribute attr = new SvgStopOpacityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(svgStopOpacityValue.doubleValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgTitleElement.java
new file mode 100644
index 0000000..193dee2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/svg/SvgTitleElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.svg;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element svg:title}.
+ *
+ */
+public class SvgTitleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.SVG, "title");
+
+	/**
+	 * Create the instance of <code>SvgTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public SvgTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element svg:title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableBackgroundElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableBackgroundElement.java
new file mode 100644
index 0000000..e04d1a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableBackgroundElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:background}.
+ *
+ */
+public class TableBackgroundElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "background");
+
+	/**
+	 * Create the instance of <code>TableBackgroundElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableBackgroundElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:background}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableBodyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableBodyElement.java
new file mode 100644
index 0000000..0a8fc8a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableBodyElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:body}.
+ *
+ */
+public class TableBodyElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "body");
+
+	/**
+	 * Create the instance of <code>TableBodyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableBodyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:body}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCalculationSettingsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCalculationSettingsElement.java
new file mode 100644
index 0000000..e27df01
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCalculationSettingsElement.java
@@ -0,0 +1,268 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAutomaticFindLabelsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCaseSensitiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNullYearAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePrecisionAsShownAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSearchCriteriaMustApplyToWholeCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseRegularExpressionsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseWildcardsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:calculation-settings}.
+ *
+ */
+public class TableCalculationSettingsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "calculation-settings");
+
+	/**
+	 * Create the instance of <code>TableCalculationSettingsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCalculationSettingsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:calculation-settings}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAutomaticFindLabelsAttribute</code> , See {@odf.attribute table:automatic-find-labels}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableAutomaticFindLabelsAttribute() {
+		TableAutomaticFindLabelsAttribute attr = (TableAutomaticFindLabelsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "automatic-find-labels");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableAutomaticFindLabelsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAutomaticFindLabelsAttribute</code> , See {@odf.attribute table:automatic-find-labels}
+	 *
+	 * @param tableAutomaticFindLabelsValue   The type is <code>Boolean</code>
+	 */
+	public void setTableAutomaticFindLabelsAttribute(Boolean tableAutomaticFindLabelsValue) {
+		TableAutomaticFindLabelsAttribute attr = new TableAutomaticFindLabelsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableAutomaticFindLabelsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCaseSensitiveAttribute() {
+		TableCaseSensitiveAttribute attr = (TableCaseSensitiveAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "case-sensitive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableCaseSensitiveAttribute.DEFAULT_VALUE_TRUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @param tableCaseSensitiveValue   The type is <code>String</code>
+	 */
+	public void setTableCaseSensitiveAttribute(String tableCaseSensitiveValue) {
+		TableCaseSensitiveAttribute attr = new TableCaseSensitiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCaseSensitiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNullYearAttribute</code> , See {@odf.attribute table:null-year}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNullYearAttribute() {
+		TableNullYearAttribute attr = (TableNullYearAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "null-year");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableNullYearAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNullYearAttribute</code> , See {@odf.attribute table:null-year}
+	 *
+	 * @param tableNullYearValue   The type is <code>Integer</code>
+	 */
+	public void setTableNullYearAttribute(Integer tableNullYearValue) {
+		TableNullYearAttribute attr = new TableNullYearAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNullYearValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePrecisionAsShownAttribute</code> , See {@odf.attribute table:precision-as-shown}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTablePrecisionAsShownAttribute() {
+		TablePrecisionAsShownAttribute attr = (TablePrecisionAsShownAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "precision-as-shown");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TablePrecisionAsShownAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePrecisionAsShownAttribute</code> , See {@odf.attribute table:precision-as-shown}
+	 *
+	 * @param tablePrecisionAsShownValue   The type is <code>Boolean</code>
+	 */
+	public void setTablePrecisionAsShownAttribute(Boolean tablePrecisionAsShownValue) {
+		TablePrecisionAsShownAttribute attr = new TablePrecisionAsShownAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tablePrecisionAsShownValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSearchCriteriaMustApplyToWholeCellAttribute</code> , See {@odf.attribute table:search-criteria-must-apply-to-whole-cell}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableSearchCriteriaMustApplyToWholeCellAttribute() {
+		TableSearchCriteriaMustApplyToWholeCellAttribute attr = (TableSearchCriteriaMustApplyToWholeCellAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "search-criteria-must-apply-to-whole-cell");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableSearchCriteriaMustApplyToWholeCellAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSearchCriteriaMustApplyToWholeCellAttribute</code> , See {@odf.attribute table:search-criteria-must-apply-to-whole-cell}
+	 *
+	 * @param tableSearchCriteriaMustApplyToWholeCellValue   The type is <code>Boolean</code>
+	 */
+	public void setTableSearchCriteriaMustApplyToWholeCellAttribute(Boolean tableSearchCriteriaMustApplyToWholeCellValue) {
+		TableSearchCriteriaMustApplyToWholeCellAttribute attr = new TableSearchCriteriaMustApplyToWholeCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableSearchCriteriaMustApplyToWholeCellValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseRegularExpressionsAttribute</code> , See {@odf.attribute table:use-regular-expressions}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseRegularExpressionsAttribute() {
+		TableUseRegularExpressionsAttribute attr = (TableUseRegularExpressionsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-regular-expressions");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseRegularExpressionsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseRegularExpressionsAttribute</code> , See {@odf.attribute table:use-regular-expressions}
+	 *
+	 * @param tableUseRegularExpressionsValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseRegularExpressionsAttribute(Boolean tableUseRegularExpressionsValue) {
+		TableUseRegularExpressionsAttribute attr = new TableUseRegularExpressionsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseRegularExpressionsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseWildcardsAttribute</code> , See {@odf.attribute table:use-wildcards}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseWildcardsAttribute() {
+		TableUseWildcardsAttribute attr = (TableUseWildcardsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-wildcards");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseWildcardsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseWildcardsAttribute</code> , See {@odf.attribute table:use-wildcards}
+	 *
+	 * @param tableUseWildcardsValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseWildcardsAttribute(Boolean tableUseWildcardsValue) {
+		TableUseWildcardsAttribute attr = new TableUseWildcardsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseWildcardsValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:iteration}.
+	 *
+	 * @return the element {@odf.element table:iteration}
+	 */
+	public TableIterationElement newTableIterationElement() {
+		TableIterationElement tableIteration = ((OdfFileDom) this.ownerDocument).newOdfElement(TableIterationElement.class);
+		this.appendChild(tableIteration);
+		return tableIteration;
+	}
+
+	/**
+	 * Create child element {@odf.element table:null-date}.
+	 *
+	 * @return the element {@odf.element table:null-date}
+	 */
+	public TableNullDateElement newTableNullDateElement() {
+		TableNullDateElement tableNullDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNullDateElement.class);
+		this.appendChild(tableNullDate);
+		return tableNullDate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellAddressElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellAddressElement.java
new file mode 100644
index 0000000..5762350
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellAddressElement.java
@@ -0,0 +1,152 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:cell-address}.
+ *
+ */
+public class TableCellAddressElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-address");
+
+	/**
+	 * Create the instance of <code>TableCellAddressElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCellAddressElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:cell-address}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableColumnAttribute</code> , See {@odf.attribute table:column}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableColumnAttribute() {
+		TableColumnAttribute attr = (TableColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableColumnAttribute</code> , See {@odf.attribute table:column}
+	 *
+	 * @param tableColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableColumnAttribute(Integer tableColumnValue) {
+		TableColumnAttribute attr = new TableColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRowAttribute</code> , See {@odf.attribute table:row}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableRowAttribute() {
+		TableRowAttribute attr = (TableRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRowAttribute</code> , See {@odf.attribute table:row}
+	 *
+	 * @param tableRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableRowAttribute(Integer tableRowValue) {
+		TableRowAttribute attr = new TableRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableTableAttribute() {
+		TableTableAttribute attr = (TableTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @param tableTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableTableAttribute(Integer tableTableValue) {
+		TableTableAttribute attr = new TableTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableTableValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellContentChangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellContentChangeElement.java
new file mode 100644
index 0000000..ac9ef4b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellContentChangeElement.java
@@ -0,0 +1,216 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAcceptanceStateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRejectingChangeIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:cell-content-change}.
+ *
+ */
+public class TableCellContentChangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-content-change");
+
+	/**
+	 * Create the instance of <code>TableCellContentChangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCellContentChangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:cell-content-change}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableAcceptanceStateAttribute() {
+		TableAcceptanceStateAttribute attr = (TableAcceptanceStateAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "acceptance-state");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableAcceptanceStateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @param tableAcceptanceStateValue   The type is <code>String</code>
+	 */
+	public void setTableAcceptanceStateAttribute(String tableAcceptanceStateValue) {
+		TableAcceptanceStateAttribute attr = new TableAcceptanceStateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableAcceptanceStateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRejectingChangeIdAttribute() {
+		TableRejectingChangeIdAttribute attr = (TableRejectingChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "rejecting-change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @param tableRejectingChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTableRejectingChangeIdAttribute(String tableRejectingChangeIdValue) {
+		TableRejectingChangeIdAttribute attr = new TableRejectingChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRejectingChangeIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:cell-address}.
+	 *
+	 * @param tableColumnValue  the <code>Integer</code> value of <code>TableColumnAttribute</code>, see {@odf.attribute  table:column} at specification
+	 * @param tableRowValue  the <code>Integer</code> value of <code>TableRowAttribute</code>, see {@odf.attribute  table:row} at specification
+	 * @param tableTableValue  the <code>Integer</code> value of <code>TableTableAttribute</code>, see {@odf.attribute  table:table} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:cell-address}
+	 */
+	 public TableCellAddressElement newTableCellAddressElement(int tableColumnValue, int tableRowValue, int tableTableValue) {
+		TableCellAddressElement tableCellAddress = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCellAddressElement.class);
+		tableCellAddress.setTableColumnAttribute(tableColumnValue);
+		tableCellAddress.setTableRowAttribute(tableRowValue);
+		tableCellAddress.setTableTableAttribute(tableTableValue);
+		this.appendChild(tableCellAddress);
+		return tableCellAddress;
+	}
+
+	/**
+	 * Create child element {@odf.element table:deletions}.
+	 *
+	 * @return the element {@odf.element table:deletions}
+	 */
+	public TableDeletionsElement newTableDeletionsElement() {
+		TableDeletionsElement tableDeletions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDeletionsElement.class);
+		this.appendChild(tableDeletions);
+		return tableDeletions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dependencies}.
+	 *
+	 * @return the element {@odf.element table:dependencies}
+	 */
+	public TableDependenciesElement newTableDependenciesElement() {
+		TableDependenciesElement tableDependencies = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDependenciesElement.class);
+		this.appendChild(tableDependencies);
+		return tableDependencies;
+	}
+
+	/**
+	 * Create child element {@odf.element table:previous}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:previous}
+	 */
+	public TablePreviousElement newTablePreviousElement() {
+		TablePreviousElement tablePrevious = ((OdfFileDom) this.ownerDocument).newOdfElement(TablePreviousElement.class);
+		this.appendChild(tablePrevious);
+		return tablePrevious;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellContentDeletionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellContentDeletionElement.java
new file mode 100644
index 0000000..6d6962f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellContentDeletionElement.java
@@ -0,0 +1,128 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:cell-content-deletion}.
+ *
+ */
+public class TableCellContentDeletionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-content-deletion");
+
+	/**
+	 * Create the instance of <code>TableCellContentDeletionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCellContentDeletionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:cell-content-deletion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:cell-address}.
+	 *
+	 * @param tableColumnValue  the <code>Integer</code> value of <code>TableColumnAttribute</code>, see {@odf.attribute  table:column} at specification
+	 * @param tableRowValue  the <code>Integer</code> value of <code>TableRowAttribute</code>, see {@odf.attribute  table:row} at specification
+	 * @param tableTableValue  the <code>Integer</code> value of <code>TableTableAttribute</code>, see {@odf.attribute  table:table} at specification
+	 * @return the element {@odf.element table:cell-address}
+	 */
+	 public TableCellAddressElement newTableCellAddressElement(int tableColumnValue, int tableRowValue, int tableTableValue) {
+		TableCellAddressElement tableCellAddress = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCellAddressElement.class);
+		tableCellAddress.setTableColumnAttribute(tableColumnValue);
+		tableCellAddress.setTableRowAttribute(tableRowValue);
+		tableCellAddress.setTableTableAttribute(tableTableValue);
+		this.appendChild(tableCellAddress);
+		return tableCellAddress;
+	}
+
+	/**
+	 * Create child element {@odf.element table:change-track-table-cell}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element table:change-track-table-cell}
+	 */
+	 public TableChangeTrackTableCellElement newTableChangeTrackTableCellElement(double officeValueValue, String officeValueTypeValue) {
+		TableChangeTrackTableCellElement tableChangeTrackTableCell = ((OdfFileDom) this.ownerDocument).newOdfElement(TableChangeTrackTableCellElement.class);
+		tableChangeTrackTableCell.setOfficeValueAttribute(officeValueValue);
+		tableChangeTrackTableCell.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(tableChangeTrackTableCell);
+		return tableChangeTrackTableCell;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellRangeSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellRangeSourceElement.java
new file mode 100644
index 0000000..cf1ab83
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCellRangeSourceElement.java
@@ -0,0 +1,306 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFilterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFilterOptionsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLastColumnSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLastRowSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRefreshDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:cell-range-source}.
+ *
+ */
+public class TableCellRangeSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cell-range-source");
+
+	/**
+	 * Create the instance of <code>TableCellRangeSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCellRangeSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:cell-range-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFilterNameAttribute</code> , See {@odf.attribute table:filter-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFilterNameAttribute() {
+		TableFilterNameAttribute attr = (TableFilterNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "filter-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFilterNameAttribute</code> , See {@odf.attribute table:filter-name}
+	 *
+	 * @param tableFilterNameValue   The type is <code>String</code>
+	 */
+	public void setTableFilterNameAttribute(String tableFilterNameValue) {
+		TableFilterNameAttribute attr = new TableFilterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFilterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFilterOptionsAttribute</code> , See {@odf.attribute table:filter-options}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFilterOptionsAttribute() {
+		TableFilterOptionsAttribute attr = (TableFilterOptionsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "filter-options");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFilterOptionsAttribute</code> , See {@odf.attribute table:filter-options}
+	 *
+	 * @param tableFilterOptionsValue   The type is <code>String</code>
+	 */
+	public void setTableFilterOptionsAttribute(String tableFilterOptionsValue) {
+		TableFilterOptionsAttribute attr = new TableFilterOptionsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFilterOptionsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLastColumnSpannedAttribute</code> , See {@odf.attribute table:last-column-spanned}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableLastColumnSpannedAttribute() {
+		TableLastColumnSpannedAttribute attr = (TableLastColumnSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "last-column-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLastColumnSpannedAttribute</code> , See {@odf.attribute table:last-column-spanned}
+	 *
+	 * @param tableLastColumnSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableLastColumnSpannedAttribute(Integer tableLastColumnSpannedValue) {
+		TableLastColumnSpannedAttribute attr = new TableLastColumnSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableLastColumnSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLastRowSpannedAttribute</code> , See {@odf.attribute table:last-row-spanned}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableLastRowSpannedAttribute() {
+		TableLastRowSpannedAttribute attr = (TableLastRowSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "last-row-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLastRowSpannedAttribute</code> , See {@odf.attribute table:last-row-spanned}
+	 *
+	 * @param tableLastRowSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableLastRowSpannedAttribute(Integer tableLastRowSpannedValue) {
+		TableLastRowSpannedAttribute attr = new TableLastRowSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableLastRowSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRefreshDelayAttribute</code> , See {@odf.attribute table:refresh-delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRefreshDelayAttribute() {
+		TableRefreshDelayAttribute attr = (TableRefreshDelayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "refresh-delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRefreshDelayAttribute</code> , See {@odf.attribute table:refresh-delay}
+	 *
+	 * @param tableRefreshDelayValue   The type is <code>String</code>
+	 */
+	public void setTableRefreshDelayAttribute(String tableRefreshDelayValue) {
+		TableRefreshDelayAttribute attr = new TableRefreshDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRefreshDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableChangeDeletionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableChangeDeletionElement.java
new file mode 100644
index 0000000..dc3c45a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableChangeDeletionElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:change-deletion}.
+ *
+ */
+public class TableChangeDeletionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "change-deletion");
+
+	/**
+	 * Create the instance of <code>TableChangeDeletionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableChangeDeletionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:change-deletion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableChangeTrackTableCellElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableChangeTrackTableCellElement.java
new file mode 100644
index 0000000..06e0271
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableChangeTrackTableCellElement.java
@@ -0,0 +1,387 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMatrixCoveredAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberMatrixColumnsSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberMatrixRowsSpannedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:change-track-table-cell}.
+ *
+ */
+public class TableChangeTrackTableCellElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "change-track-table-cell");
+
+	/**
+	 * Create the instance of <code>TableChangeTrackTableCellElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableChangeTrackTableCellElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:change-track-table-cell}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellAddressAttribute</code> , See {@odf.attribute table:cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellAddressAttribute() {
+		TableCellAddressAttribute attr = (TableCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellAddressAttribute</code> , See {@odf.attribute table:cell-address}
+	 *
+	 * @param tableCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellAddressAttribute(String tableCellAddressValue) {
+		TableCellAddressAttribute attr = new TableCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFormulaAttribute</code> , See {@odf.attribute table:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFormulaAttribute() {
+		TableFormulaAttribute attr = (TableFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFormulaAttribute</code> , See {@odf.attribute table:formula}
+	 *
+	 * @param tableFormulaValue   The type is <code>String</code>
+	 */
+	public void setTableFormulaAttribute(String tableFormulaValue) {
+		TableFormulaAttribute attr = new TableFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMatrixCoveredAttribute</code> , See {@odf.attribute table:matrix-covered}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableMatrixCoveredAttribute() {
+		TableMatrixCoveredAttribute attr = (TableMatrixCoveredAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "matrix-covered");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableMatrixCoveredAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMatrixCoveredAttribute</code> , See {@odf.attribute table:matrix-covered}
+	 *
+	 * @param tableMatrixCoveredValue   The type is <code>Boolean</code>
+	 */
+	public void setTableMatrixCoveredAttribute(Boolean tableMatrixCoveredValue) {
+		TableMatrixCoveredAttribute attr = new TableMatrixCoveredAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableMatrixCoveredValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberMatrixColumnsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-columns-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberMatrixColumnsSpannedAttribute() {
+		TableNumberMatrixColumnsSpannedAttribute attr = (TableNumberMatrixColumnsSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-matrix-columns-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberMatrixColumnsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-columns-spanned}
+	 *
+	 * @param tableNumberMatrixColumnsSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberMatrixColumnsSpannedAttribute(Integer tableNumberMatrixColumnsSpannedValue) {
+		TableNumberMatrixColumnsSpannedAttribute attr = new TableNumberMatrixColumnsSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberMatrixColumnsSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberMatrixRowsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-rows-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberMatrixRowsSpannedAttribute() {
+		TableNumberMatrixRowsSpannedAttribute attr = (TableNumberMatrixRowsSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-matrix-rows-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberMatrixRowsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-rows-spanned}
+	 *
+	 * @param tableNumberMatrixRowsSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberMatrixRowsSpannedAttribute(Integer tableNumberMatrixRowsSpannedValue) {
+		TableNumberMatrixRowsSpannedAttribute attr = new TableNumberMatrixRowsSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberMatrixRowsSpannedValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableConsolidationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableConsolidationElement.java
new file mode 100644
index 0000000..762b319
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableConsolidationElement.java
@@ -0,0 +1,202 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFunctionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLinkToSourceDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSourceCellRangeAddressesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTargetCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseLabelsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:consolidation}.
+ *
+ */
+public class TableConsolidationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "consolidation");
+
+	/**
+	 * Create the instance of <code>TableConsolidationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableConsolidationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:consolidation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFunctionAttribute() {
+		TableFunctionAttribute attr = (TableFunctionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "function");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * @param tableFunctionValue   The type is <code>String</code>
+	 */
+	public void setTableFunctionAttribute(String tableFunctionValue) {
+		TableFunctionAttribute attr = new TableFunctionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFunctionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLinkToSourceDataAttribute</code> , See {@odf.attribute table:link-to-source-data}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableLinkToSourceDataAttribute() {
+		TableLinkToSourceDataAttribute attr = (TableLinkToSourceDataAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "link-to-source-data");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableLinkToSourceDataAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLinkToSourceDataAttribute</code> , See {@odf.attribute table:link-to-source-data}
+	 *
+	 * @param tableLinkToSourceDataValue   The type is <code>Boolean</code>
+	 */
+	public void setTableLinkToSourceDataAttribute(Boolean tableLinkToSourceDataValue) {
+		TableLinkToSourceDataAttribute attr = new TableLinkToSourceDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableLinkToSourceDataValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSourceCellRangeAddressesAttribute</code> , See {@odf.attribute table:source-cell-range-addresses}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSourceCellRangeAddressesAttribute() {
+		TableSourceCellRangeAddressesAttribute attr = (TableSourceCellRangeAddressesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "source-cell-range-addresses");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSourceCellRangeAddressesAttribute</code> , See {@odf.attribute table:source-cell-range-addresses}
+	 *
+	 * @param tableSourceCellRangeAddressesValue   The type is <code>String</code>
+	 */
+	public void setTableSourceCellRangeAddressesAttribute(String tableSourceCellRangeAddressesValue) {
+		TableSourceCellRangeAddressesAttribute attr = new TableSourceCellRangeAddressesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSourceCellRangeAddressesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTargetCellAddressAttribute</code> , See {@odf.attribute table:target-cell-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTargetCellAddressAttribute() {
+		TableTargetCellAddressAttribute attr = (TableTargetCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "target-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTargetCellAddressAttribute</code> , See {@odf.attribute table:target-cell-address}
+	 *
+	 * @param tableTargetCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableTargetCellAddressAttribute(String tableTargetCellAddressValue) {
+		TableTargetCellAddressAttribute attr = new TableTargetCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTargetCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseLabelsAttribute</code> , See {@odf.attribute table:use-labels}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableUseLabelsAttribute() {
+		TableUseLabelsAttribute attr = (TableUseLabelsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-labels");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableUseLabelsAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseLabelsAttribute</code> , See {@odf.attribute table:use-labels}
+	 *
+	 * @param tableUseLabelsValue   The type is <code>String</code>
+	 */
+	public void setTableUseLabelsAttribute(String tableUseLabelsValue) {
+		TableUseLabelsAttribute attr = new TableUseLabelsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableUseLabelsValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableContentValidationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableContentValidationElement.java
new file mode 100644
index 0000000..ae9e84f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableContentValidationElement.java
@@ -0,0 +1,243 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAllowEmptyCellAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBaseCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayListAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:content-validation}.
+ *
+ */
+public class TableContentValidationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "content-validation");
+
+	/**
+	 * Create the instance of <code>TableContentValidationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableContentValidationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:content-validation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAllowEmptyCellAttribute</code> , See {@odf.attribute table:allow-empty-cell}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableAllowEmptyCellAttribute() {
+		TableAllowEmptyCellAttribute attr = (TableAllowEmptyCellAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "allow-empty-cell");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableAllowEmptyCellAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAllowEmptyCellAttribute</code> , See {@odf.attribute table:allow-empty-cell}
+	 *
+	 * @param tableAllowEmptyCellValue   The type is <code>Boolean</code>
+	 */
+	public void setTableAllowEmptyCellAttribute(Boolean tableAllowEmptyCellValue) {
+		TableAllowEmptyCellAttribute attr = new TableAllowEmptyCellAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableAllowEmptyCellValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBaseCellAddressAttribute</code> , See {@odf.attribute table:base-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableBaseCellAddressAttribute() {
+		TableBaseCellAddressAttribute attr = (TableBaseCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "base-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBaseCellAddressAttribute</code> , See {@odf.attribute table:base-cell-address}
+	 *
+	 * @param tableBaseCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableBaseCellAddressAttribute(String tableBaseCellAddressValue) {
+		TableBaseCellAddressAttribute attr = new TableBaseCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableBaseCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableConditionAttribute</code> , See {@odf.attribute table:condition}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableConditionAttribute() {
+		TableConditionAttribute attr = (TableConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableConditionAttribute</code> , See {@odf.attribute table:condition}
+	 *
+	 * @param tableConditionValue   The type is <code>String</code>
+	 */
+	public void setTableConditionAttribute(String tableConditionValue) {
+		TableConditionAttribute attr = new TableConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayListAttribute</code> , See {@odf.attribute table:display-list}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDisplayListAttribute() {
+		TableDisplayListAttribute attr = (TableDisplayListAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display-list");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableDisplayListAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayListAttribute</code> , See {@odf.attribute table:display-list}
+	 *
+	 * @param tableDisplayListValue   The type is <code>String</code>
+	 */
+	public void setTableDisplayListAttribute(String tableDisplayListValue) {
+		TableDisplayListAttribute attr = new TableDisplayListAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDisplayListValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element table:error-macro}.
+	 *
+	 * @return the element {@odf.element table:error-macro}
+	 */
+	public TableErrorMacroElement newTableErrorMacroElement() {
+		TableErrorMacroElement tableErrorMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TableErrorMacroElement.class);
+		this.appendChild(tableErrorMacro);
+		return tableErrorMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element table:error-message}.
+	 *
+	 * @return the element {@odf.element table:error-message}
+	 */
+	public TableErrorMessageElement newTableErrorMessageElement() {
+		TableErrorMessageElement tableErrorMessage = ((OdfFileDom) this.ownerDocument).newOdfElement(TableErrorMessageElement.class);
+		this.appendChild(tableErrorMessage);
+		return tableErrorMessage;
+	}
+
+	/**
+	 * Create child element {@odf.element table:help-message}.
+	 *
+	 * @return the element {@odf.element table:help-message}
+	 */
+	public TableHelpMessageElement newTableHelpMessageElement() {
+		TableHelpMessageElement tableHelpMessage = ((OdfFileDom) this.ownerDocument).newOdfElement(TableHelpMessageElement.class);
+		this.appendChild(tableHelpMessage);
+		return tableHelpMessage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableContentValidationsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableContentValidationsElement.java
new file mode 100644
index 0000000..65f7785
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableContentValidationsElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:content-validations}.
+ *
+ */
+public class TableContentValidationsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "content-validations");
+
+	/**
+	 * Create the instance of <code>TableContentValidationsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableContentValidationsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:content-validations}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:content-validation}.
+	 *
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:content-validation}
+	 */
+	 public TableContentValidationElement newTableContentValidationElement(String tableNameValue) {
+		TableContentValidationElement tableContentValidation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableContentValidationElement.class);
+		tableContentValidation.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableContentValidation);
+		return tableContentValidation;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCoveredTableCellElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCoveredTableCellElement.java
new file mode 100644
index 0000000..393f19b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCoveredTableCellElement.java
@@ -0,0 +1,604 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberedParagraphElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:covered-table-cell}.
+ *
+ */
+public class TableCoveredTableCellElement extends TableTableCellElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell");
+
+	/**
+	 * Create the instance of <code>TableCoveredTableCellElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCoveredTableCellElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:covered-table-cell}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:cell-range-source}.
+	 *
+	 * @param tableLastColumnSpannedValue  the <code>Integer</code> value of <code>TableLastColumnSpannedAttribute</code>, see {@odf.attribute  table:last-column-spanned} at specification
+	 * @param tableLastRowSpannedValue  the <code>Integer</code> value of <code>TableLastRowSpannedAttribute</code>, see {@odf.attribute  table:last-row-spanned} at specification
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element table:cell-range-source}
+	 */
+	 public TableCellRangeSourceElement newTableCellRangeSourceElement(int tableLastColumnSpannedValue, int tableLastRowSpannedValue, String tableNameValue, String xlinkHrefValue, String xlinkTypeValue) {
+		TableCellRangeSourceElement tableCellRangeSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCellRangeSourceElement.class);
+		tableCellRangeSource.setTableLastColumnSpannedAttribute(tableLastColumnSpannedValue);
+		tableCellRangeSource.setTableLastRowSpannedAttribute(tableLastRowSpannedValue);
+		tableCellRangeSource.setTableNameAttribute(tableNameValue);
+		tableCellRangeSource.setXlinkHrefAttribute(xlinkHrefValue);
+		tableCellRangeSource.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(tableCellRangeSource);
+		return tableCellRangeSource;
+	}
+
+	/**
+	 * Create child element {@odf.element table:detective}.
+	 *
+	 * @return the element {@odf.element table:detective}
+	 */
+	public TableDetectiveElement newTableDetectiveElement() {
+		TableDetectiveElement tableDetective = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDetectiveElement.class);
+		this.appendChild(tableDetective);
+		return tableDetective;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCutOffsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCutOffsElement.java
new file mode 100644
index 0000000..6efcd07
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableCutOffsElement.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:cut-offs}.
+ *
+ */
+public class TableCutOffsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "cut-offs");
+
+	/**
+	 * Create the instance of <code>TableCutOffsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableCutOffsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:cut-offs}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:insertion-cut-off}.
+	 *
+	 * @param tableIdValue  the <code>String</code> value of <code>TableIdAttribute</code>, see {@odf.attribute  table:id} at specification
+	 * @param tablePositionValue  the <code>Integer</code> value of <code>TablePositionAttribute</code>, see {@odf.attribute  table:position} at specification
+	 * @return the element {@odf.element table:insertion-cut-off}
+	 */
+	 public TableInsertionCutOffElement newTableInsertionCutOffElement(String tableIdValue, int tablePositionValue) {
+		TableInsertionCutOffElement tableInsertionCutOff = ((OdfFileDom) this.ownerDocument).newOdfElement(TableInsertionCutOffElement.class);
+		tableInsertionCutOff.setTableIdAttribute(tableIdValue);
+		tableInsertionCutOff.setTablePositionAttribute(tablePositionValue);
+		this.appendChild(tableInsertionCutOff);
+		return tableInsertionCutOff;
+	}
+
+	/**
+	 * Create child element {@odf.element table:movement-cut-off}.
+	 *
+	 * @return the element {@odf.element table:movement-cut-off}
+	 */
+	public TableMovementCutOffElement newTableMovementCutOffElement() {
+		TableMovementCutOffElement tableMovementCutOff = ((OdfFileDom) this.ownerDocument).newOdfElement(TableMovementCutOffElement.class);
+		this.appendChild(tableMovementCutOff);
+		return tableMovementCutOff;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotDisplayInfoElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotDisplayInfoElement.java
new file mode 100644
index 0000000..c5d822b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotDisplayInfoElement.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayMemberModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEnabledAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMemberCountAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-display-info}.
+ *
+ */
+public class TableDataPilotDisplayInfoElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-display-info");
+
+	/**
+	 * Create the instance of <code>TableDataPilotDisplayInfoElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotDisplayInfoElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-display-info}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDataFieldAttribute</code> , See {@odf.attribute table:data-field}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDataFieldAttribute() {
+		TableDataFieldAttribute attr = (TableDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDataFieldAttribute</code> , See {@odf.attribute table:data-field}
+	 *
+	 * @param tableDataFieldValue   The type is <code>String</code>
+	 */
+	public void setTableDataFieldAttribute(String tableDataFieldValue) {
+		TableDataFieldAttribute attr = new TableDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayMemberModeAttribute</code> , See {@odf.attribute table:display-member-mode}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDisplayMemberModeAttribute() {
+		TableDisplayMemberModeAttribute attr = (TableDisplayMemberModeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display-member-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayMemberModeAttribute</code> , See {@odf.attribute table:display-member-mode}
+	 *
+	 * @param tableDisplayMemberModeValue   The type is <code>String</code>
+	 */
+	public void setTableDisplayMemberModeAttribute(String tableDisplayMemberModeValue) {
+		TableDisplayMemberModeAttribute attr = new TableDisplayMemberModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDisplayMemberModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEnabledAttribute</code> , See {@odf.attribute table:enabled}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableEnabledAttribute() {
+		TableEnabledAttribute attr = (TableEnabledAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "enabled");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEnabledAttribute</code> , See {@odf.attribute table:enabled}
+	 *
+	 * @param tableEnabledValue   The type is <code>Boolean</code>
+	 */
+	public void setTableEnabledAttribute(Boolean tableEnabledValue) {
+		TableEnabledAttribute attr = new TableEnabledAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableEnabledValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMemberCountAttribute</code> , See {@odf.attribute table:member-count}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableMemberCountAttribute() {
+		TableMemberCountAttribute attr = (TableMemberCountAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "member-count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMemberCountAttribute</code> , See {@odf.attribute table:member-count}
+	 *
+	 * @param tableMemberCountValue   The type is <code>Integer</code>
+	 */
+	public void setTableMemberCountAttribute(Integer tableMemberCountValue) {
+		TableMemberCountAttribute attr = new TableMemberCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableMemberCountValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotFieldElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotFieldElement.java
new file mode 100644
index 0000000..01e7987
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotFieldElement.java
@@ -0,0 +1,270 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFunctionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIsDataLayoutFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOrientationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSelectedPageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSourceFieldNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUsedHierarchyAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-field}.
+ *
+ */
+public class TableDataPilotFieldElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-field");
+
+	/**
+	 * Create the instance of <code>TableDataPilotFieldElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotFieldElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-field}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFunctionAttribute() {
+		TableFunctionAttribute attr = (TableFunctionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "function");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * @param tableFunctionValue   The type is <code>String</code>
+	 */
+	public void setTableFunctionAttribute(String tableFunctionValue) {
+		TableFunctionAttribute attr = new TableFunctionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFunctionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIsDataLayoutFieldAttribute</code> , See {@odf.attribute table:is-data-layout-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIsDataLayoutFieldAttribute() {
+		TableIsDataLayoutFieldAttribute attr = (TableIsDataLayoutFieldAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "is-data-layout-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableIsDataLayoutFieldAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIsDataLayoutFieldAttribute</code> , See {@odf.attribute table:is-data-layout-field}
+	 *
+	 * @param tableIsDataLayoutFieldValue   The type is <code>String</code>
+	 */
+	public void setTableIsDataLayoutFieldAttribute(String tableIsDataLayoutFieldValue) {
+		TableIsDataLayoutFieldAttribute attr = new TableIsDataLayoutFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIsDataLayoutFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOrientationAttribute</code> , See {@odf.attribute table:orientation}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOrientationAttribute() {
+		TableOrientationAttribute attr = (TableOrientationAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "orientation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOrientationAttribute</code> , See {@odf.attribute table:orientation}
+	 *
+	 * @param tableOrientationValue   The type is <code>String</code>
+	 */
+	public void setTableOrientationAttribute(String tableOrientationValue) {
+		TableOrientationAttribute attr = new TableOrientationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOrientationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSelectedPageAttribute</code> , See {@odf.attribute table:selected-page}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSelectedPageAttribute() {
+		TableSelectedPageAttribute attr = (TableSelectedPageAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "selected-page");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSelectedPageAttribute</code> , See {@odf.attribute table:selected-page}
+	 *
+	 * @param tableSelectedPageValue   The type is <code>String</code>
+	 */
+	public void setTableSelectedPageAttribute(String tableSelectedPageValue) {
+		TableSelectedPageAttribute attr = new TableSelectedPageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSelectedPageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSourceFieldNameAttribute</code> , See {@odf.attribute table:source-field-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSourceFieldNameAttribute() {
+		TableSourceFieldNameAttribute attr = (TableSourceFieldNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "source-field-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSourceFieldNameAttribute</code> , See {@odf.attribute table:source-field-name}
+	 *
+	 * @param tableSourceFieldNameValue   The type is <code>String</code>
+	 */
+	public void setTableSourceFieldNameAttribute(String tableSourceFieldNameValue) {
+		TableSourceFieldNameAttribute attr = new TableSourceFieldNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSourceFieldNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUsedHierarchyAttribute</code> , See {@odf.attribute table:used-hierarchy}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableUsedHierarchyAttribute() {
+		TableUsedHierarchyAttribute attr = (TableUsedHierarchyAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "used-hierarchy");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableUsedHierarchyAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUsedHierarchyAttribute</code> , See {@odf.attribute table:used-hierarchy}
+	 *
+	 * @param tableUsedHierarchyValue   The type is <code>Integer</code>
+	 */
+	public void setTableUsedHierarchyAttribute(Integer tableUsedHierarchyValue) {
+		TableUsedHierarchyAttribute attr = new TableUsedHierarchyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableUsedHierarchyValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-field-reference}.
+	 *
+	 * @param tableFieldNameValue  the <code>String</code> value of <code>TableFieldNameAttribute</code>, see {@odf.attribute  table:field-name} at specification
+	 * @param tableMemberTypeValue  the <code>String</code> value of <code>TableMemberTypeAttribute</code>, see {@odf.attribute  table:member-type} at specification
+	 * @param tableTypeValue  the <code>String</code> value of <code>TableTypeAttribute</code>, see {@odf.attribute  table:type} at specification
+	 * @return the element {@odf.element table:data-pilot-field-reference}
+	 */
+	 public TableDataPilotFieldReferenceElement newTableDataPilotFieldReferenceElement(String tableFieldNameValue, String tableMemberTypeValue, String tableTypeValue) {
+		TableDataPilotFieldReferenceElement tableDataPilotFieldReference = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotFieldReferenceElement.class);
+		tableDataPilotFieldReference.setTableFieldNameAttribute(tableFieldNameValue);
+		tableDataPilotFieldReference.setTableMemberTypeAttribute(tableMemberTypeValue);
+		tableDataPilotFieldReference.setTableTypeAttribute(tableTypeValue);
+		this.appendChild(tableDataPilotFieldReference);
+		return tableDataPilotFieldReference;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-groups}.
+	 *
+	 * @param tableGroupedByValue  the <code>String</code> value of <code>TableGroupedByAttribute</code>, see {@odf.attribute  table:grouped-by} at specification
+	 * @param tableSourceFieldNameValue  the <code>String</code> value of <code>TableSourceFieldNameAttribute</code>, see {@odf.attribute  table:source-field-name} at specification
+	 * @param tableStepValue  the <code>Double</code> value of <code>TableStepAttribute</code>, see {@odf.attribute  table:step} at specification
+	 * @return the element {@odf.element table:data-pilot-groups}
+	 */
+	 public TableDataPilotGroupsElement newTableDataPilotGroupsElement(String tableGroupedByValue, String tableSourceFieldNameValue, double tableStepValue) {
+		TableDataPilotGroupsElement tableDataPilotGroups = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotGroupsElement.class);
+		tableDataPilotGroups.setTableGroupedByAttribute(tableGroupedByValue);
+		tableDataPilotGroups.setTableSourceFieldNameAttribute(tableSourceFieldNameValue);
+		tableDataPilotGroups.setTableStepAttribute(tableStepValue);
+		this.appendChild(tableDataPilotGroups);
+		return tableDataPilotGroups;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-level}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-level}
+	 */
+	public TableDataPilotLevelElement newTableDataPilotLevelElement() {
+		TableDataPilotLevelElement tableDataPilotLevel = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotLevelElement.class);
+		this.appendChild(tableDataPilotLevel);
+		return tableDataPilotLevel;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotFieldReferenceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotFieldReferenceElement.java
new file mode 100644
index 0000000..eb1f50c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotFieldReferenceElement.java
@@ -0,0 +1,177 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFieldNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMemberNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMemberTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-field-reference}.
+ *
+ */
+public class TableDataPilotFieldReferenceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-field-reference");
+
+	/**
+	 * Create the instance of <code>TableDataPilotFieldReferenceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotFieldReferenceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-field-reference}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFieldNameAttribute</code> , See {@odf.attribute table:field-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFieldNameAttribute() {
+		TableFieldNameAttribute attr = (TableFieldNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "field-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFieldNameAttribute</code> , See {@odf.attribute table:field-name}
+	 *
+	 * @param tableFieldNameValue   The type is <code>String</code>
+	 */
+	public void setTableFieldNameAttribute(String tableFieldNameValue) {
+		TableFieldNameAttribute attr = new TableFieldNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFieldNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMemberNameAttribute</code> , See {@odf.attribute table:member-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableMemberNameAttribute() {
+		TableMemberNameAttribute attr = (TableMemberNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "member-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMemberNameAttribute</code> , See {@odf.attribute table:member-name}
+	 *
+	 * @param tableMemberNameValue   The type is <code>String</code>
+	 */
+	public void setTableMemberNameAttribute(String tableMemberNameValue) {
+		TableMemberNameAttribute attr = new TableMemberNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableMemberNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMemberTypeAttribute</code> , See {@odf.attribute table:member-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableMemberTypeAttribute() {
+		TableMemberTypeAttribute attr = (TableMemberTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "member-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMemberTypeAttribute</code> , See {@odf.attribute table:member-type}
+	 *
+	 * @param tableMemberTypeValue   The type is <code>String</code>
+	 */
+	public void setTableMemberTypeAttribute(String tableMemberTypeValue) {
+		TableMemberTypeAttribute attr = new TableMemberTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableMemberTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTypeAttribute</code> , See {@odf.attribute table:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTypeAttribute() {
+		TableTypeAttribute attr = (TableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTypeAttribute</code> , See {@odf.attribute table:type}
+	 *
+	 * @param tableTypeValue   The type is <code>String</code>
+	 */
+	public void setTableTypeAttribute(String tableTypeValue) {
+		TableTypeAttribute attr = new TableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupElement.java
new file mode 100644
index 0000000..76d951c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupElement.java
@@ -0,0 +1,113 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-group}.
+ *
+ */
+public class TableDataPilotGroupElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-group");
+
+	/**
+	 * Create the instance of <code>TableDataPilotGroupElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotGroupElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-group}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-group-member}.
+	 *
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:data-pilot-group-member}
+	 */
+	 public TableDataPilotGroupMemberElement newTableDataPilotGroupMemberElement(String tableNameValue) {
+		TableDataPilotGroupMemberElement tableDataPilotGroupMember = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotGroupMemberElement.class);
+		tableDataPilotGroupMember.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableDataPilotGroupMember);
+		return tableDataPilotGroupMember;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupMemberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupMemberElement.java
new file mode 100644
index 0000000..ce727cf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupMemberElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-group-member}.
+ *
+ */
+public class TableDataPilotGroupMemberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-group-member");
+
+	/**
+	 * Create the instance of <code>TableDataPilotGroupMemberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotGroupMemberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-group-member}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupsElement.java
new file mode 100644
index 0000000..8174fc2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotGroupsElement.java
@@ -0,0 +1,267 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDateEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDateStartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableGroupedByAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSourceFieldNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStepAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-groups}.
+ *
+ */
+public class TableDataPilotGroupsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-groups");
+
+	/**
+	 * Create the instance of <code>TableDataPilotGroupsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotGroupsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-groups}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDateEndAttribute</code> , See {@odf.attribute table:date-end}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDateEndAttribute() {
+		TableDateEndAttribute attr = (TableDateEndAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "date-end");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDateEndAttribute</code> , See {@odf.attribute table:date-end}
+	 *
+	 * @param tableDateEndValue   The type is <code>String</code>
+	 */
+	public void setTableDateEndAttribute(String tableDateEndValue) {
+		TableDateEndAttribute attr = new TableDateEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDateEndValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDateStartAttribute</code> , See {@odf.attribute table:date-start}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDateStartAttribute() {
+		TableDateStartAttribute attr = (TableDateStartAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "date-start");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDateStartAttribute</code> , See {@odf.attribute table:date-start}
+	 *
+	 * @param tableDateStartValue   The type is <code>String</code>
+	 */
+	public void setTableDateStartAttribute(String tableDateStartValue) {
+		TableDateStartAttribute attr = new TableDateStartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDateStartValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndAttribute</code> , See {@odf.attribute table:end}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getTableEndAttribute() {
+		TableEndAttribute attr = (TableEndAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndAttribute</code> , See {@odf.attribute table:end}
+	 *
+	 * @param tableEndValue   The type is <code>Double</code>
+	 */
+	public void setTableEndAttribute(Double tableEndValue) {
+		TableEndAttribute attr = new TableEndAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(tableEndValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableGroupedByAttribute</code> , See {@odf.attribute table:grouped-by}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableGroupedByAttribute() {
+		TableGroupedByAttribute attr = (TableGroupedByAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "grouped-by");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableGroupedByAttribute</code> , See {@odf.attribute table:grouped-by}
+	 *
+	 * @param tableGroupedByValue   The type is <code>String</code>
+	 */
+	public void setTableGroupedByAttribute(String tableGroupedByValue) {
+		TableGroupedByAttribute attr = new TableGroupedByAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableGroupedByValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSourceFieldNameAttribute</code> , See {@odf.attribute table:source-field-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSourceFieldNameAttribute() {
+		TableSourceFieldNameAttribute attr = (TableSourceFieldNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "source-field-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSourceFieldNameAttribute</code> , See {@odf.attribute table:source-field-name}
+	 *
+	 * @param tableSourceFieldNameValue   The type is <code>String</code>
+	 */
+	public void setTableSourceFieldNameAttribute(String tableSourceFieldNameValue) {
+		TableSourceFieldNameAttribute attr = new TableSourceFieldNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSourceFieldNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartAttribute</code> , See {@odf.attribute table:start}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getTableStartAttribute() {
+		TableStartAttribute attr = (TableStartAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartAttribute</code> , See {@odf.attribute table:start}
+	 *
+	 * @param tableStartValue   The type is <code>Double</code>
+	 */
+	public void setTableStartAttribute(Double tableStartValue) {
+		TableStartAttribute attr = new TableStartAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(tableStartValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStepAttribute</code> , See {@odf.attribute table:step}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getTableStepAttribute() {
+		TableStepAttribute attr = (TableStepAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "step");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStepAttribute</code> , See {@odf.attribute table:step}
+	 *
+	 * @param tableStepValue   The type is <code>Double</code>
+	 */
+	public void setTableStepAttribute(Double tableStepValue) {
+		TableStepAttribute attr = new TableStepAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(tableStepValue.doubleValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-group}.
+	 *
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:data-pilot-group}
+	 */
+	 public TableDataPilotGroupElement newTableDataPilotGroupElement(String tableNameValue) {
+		TableDataPilotGroupElement tableDataPilotGroup = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotGroupElement.class);
+		tableDataPilotGroup.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableDataPilotGroup);
+		return tableDataPilotGroup;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotLayoutInfoElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotLayoutInfoElement.java
new file mode 100644
index 0000000..9d5c708
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotLayoutInfoElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAddEmptyLinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLayoutModeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-layout-info}.
+ *
+ */
+public class TableDataPilotLayoutInfoElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-layout-info");
+
+	/**
+	 * Create the instance of <code>TableDataPilotLayoutInfoElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotLayoutInfoElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-layout-info}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAddEmptyLinesAttribute</code> , See {@odf.attribute table:add-empty-lines}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableAddEmptyLinesAttribute() {
+		TableAddEmptyLinesAttribute attr = (TableAddEmptyLinesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "add-empty-lines");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAddEmptyLinesAttribute</code> , See {@odf.attribute table:add-empty-lines}
+	 *
+	 * @param tableAddEmptyLinesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableAddEmptyLinesAttribute(Boolean tableAddEmptyLinesValue) {
+		TableAddEmptyLinesAttribute attr = new TableAddEmptyLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableAddEmptyLinesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLayoutModeAttribute</code> , See {@odf.attribute table:layout-mode}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableLayoutModeAttribute() {
+		TableLayoutModeAttribute attr = (TableLayoutModeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "layout-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLayoutModeAttribute</code> , See {@odf.attribute table:layout-mode}
+	 *
+	 * @param tableLayoutModeValue   The type is <code>String</code>
+	 */
+	public void setTableLayoutModeAttribute(String tableLayoutModeValue) {
+		TableLayoutModeAttribute attr = new TableLayoutModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableLayoutModeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotLevelElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotLevelElement.java
new file mode 100644
index 0000000..5e50c1f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotLevelElement.java
@@ -0,0 +1,167 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableShowEmptyAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-level}.
+ *
+ */
+public class TableDataPilotLevelElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-level");
+
+	/**
+	 * Create the instance of <code>TableDataPilotLevelElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotLevelElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-level}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableShowEmptyAttribute</code> , See {@odf.attribute table:show-empty}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableShowEmptyAttribute() {
+		TableShowEmptyAttribute attr = (TableShowEmptyAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "show-empty");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableShowEmptyAttribute</code> , See {@odf.attribute table:show-empty}
+	 *
+	 * @param tableShowEmptyValue   The type is <code>Boolean</code>
+	 */
+	public void setTableShowEmptyAttribute(Boolean tableShowEmptyValue) {
+		TableShowEmptyAttribute attr = new TableShowEmptyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableShowEmptyValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-display-info}.
+	 *
+	 * @param tableDataFieldValue  the <code>String</code> value of <code>TableDataFieldAttribute</code>, see {@odf.attribute  table:data-field} at specification
+	 * @param tableDisplayMemberModeValue  the <code>String</code> value of <code>TableDisplayMemberModeAttribute</code>, see {@odf.attribute  table:display-member-mode} at specification
+	 * @param tableEnabledValue  the <code>Boolean</code> value of <code>TableEnabledAttribute</code>, see {@odf.attribute  table:enabled} at specification
+	 * @param tableMemberCountValue  the <code>Integer</code> value of <code>TableMemberCountAttribute</code>, see {@odf.attribute  table:member-count} at specification
+	 * @return the element {@odf.element table:data-pilot-display-info}
+	 */
+	 public TableDataPilotDisplayInfoElement newTableDataPilotDisplayInfoElement(String tableDataFieldValue, String tableDisplayMemberModeValue, boolean tableEnabledValue, int tableMemberCountValue) {
+		TableDataPilotDisplayInfoElement tableDataPilotDisplayInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotDisplayInfoElement.class);
+		tableDataPilotDisplayInfo.setTableDataFieldAttribute(tableDataFieldValue);
+		tableDataPilotDisplayInfo.setTableDisplayMemberModeAttribute(tableDisplayMemberModeValue);
+		tableDataPilotDisplayInfo.setTableEnabledAttribute(tableEnabledValue);
+		tableDataPilotDisplayInfo.setTableMemberCountAttribute(tableMemberCountValue);
+		this.appendChild(tableDataPilotDisplayInfo);
+		return tableDataPilotDisplayInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-layout-info}.
+	 *
+	 * @param tableAddEmptyLinesValue  the <code>Boolean</code> value of <code>TableAddEmptyLinesAttribute</code>, see {@odf.attribute  table:add-empty-lines} at specification
+	 * @param tableLayoutModeValue  the <code>String</code> value of <code>TableLayoutModeAttribute</code>, see {@odf.attribute  table:layout-mode} at specification
+	 * @return the element {@odf.element table:data-pilot-layout-info}
+	 */
+	 public TableDataPilotLayoutInfoElement newTableDataPilotLayoutInfoElement(boolean tableAddEmptyLinesValue, String tableLayoutModeValue) {
+		TableDataPilotLayoutInfoElement tableDataPilotLayoutInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotLayoutInfoElement.class);
+		tableDataPilotLayoutInfo.setTableAddEmptyLinesAttribute(tableAddEmptyLinesValue);
+		tableDataPilotLayoutInfo.setTableLayoutModeAttribute(tableLayoutModeValue);
+		this.appendChild(tableDataPilotLayoutInfo);
+		return tableDataPilotLayoutInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-members}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-members}
+	 */
+	public TableDataPilotMembersElement newTableDataPilotMembersElement() {
+		TableDataPilotMembersElement tableDataPilotMembers = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotMembersElement.class);
+		this.appendChild(tableDataPilotMembers);
+		return tableDataPilotMembers;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-sort-info}.
+	 *
+	 * @param tableOrderValue  the <code>String</code> value of <code>TableOrderAttribute</code>, see {@odf.attribute  table:order} at specification
+	 * @param tableSortModeValue  the <code>String</code> value of <code>TableSortModeAttribute</code>, see {@odf.attribute  table:sort-mode} at specification
+	 * @return the element {@odf.element table:data-pilot-sort-info}
+	 */
+	 public TableDataPilotSortInfoElement newTableDataPilotSortInfoElement(String tableOrderValue, String tableSortModeValue) {
+		TableDataPilotSortInfoElement tableDataPilotSortInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotSortInfoElement.class);
+		tableDataPilotSortInfo.setTableOrderAttribute(tableOrderValue);
+		tableDataPilotSortInfo.setTableSortModeAttribute(tableSortModeValue);
+		this.appendChild(tableDataPilotSortInfo);
+		return tableDataPilotSortInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-subtotals}.
+	 *
+	 * @return the element {@odf.element table:data-pilot-subtotals}
+	 */
+	public TableDataPilotSubtotalsElement newTableDataPilotSubtotalsElement() {
+		TableDataPilotSubtotalsElement tableDataPilotSubtotals = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotSubtotalsElement.class);
+		this.appendChild(tableDataPilotSubtotals);
+		return tableDataPilotSubtotals;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotMemberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotMemberElement.java
new file mode 100644
index 0000000..cf6d2ec
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotMemberElement.java
@@ -0,0 +1,148 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableShowDetailsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-member}.
+ *
+ */
+public class TableDataPilotMemberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-member");
+
+	/**
+	 * Create the instance of <code>TableDataPilotMemberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotMemberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-member}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayAttribute() {
+		TableDisplayAttribute attr = (TableDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @param tableDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayAttribute(Boolean tableDisplayValue) {
+		TableDisplayAttribute attr = new TableDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableShowDetailsAttribute</code> , See {@odf.attribute table:show-details}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableShowDetailsAttribute() {
+		TableShowDetailsAttribute attr = (TableShowDetailsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "show-details");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableShowDetailsAttribute</code> , See {@odf.attribute table:show-details}
+	 *
+	 * @param tableShowDetailsValue   The type is <code>Boolean</code>
+	 */
+	public void setTableShowDetailsAttribute(Boolean tableShowDetailsValue) {
+		TableShowDetailsAttribute attr = new TableShowDetailsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableShowDetailsValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotMembersElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotMembersElement.java
new file mode 100644
index 0000000..498c23b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotMembersElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-members}.
+ *
+ */
+public class TableDataPilotMembersElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-members");
+
+	/**
+	 * Create the instance of <code>TableDataPilotMembersElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotMembersElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-members}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-member}.
+	 *
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @return the element {@odf.element table:data-pilot-member}
+	 */
+	 public TableDataPilotMemberElement newTableDataPilotMemberElement(String tableNameValue) {
+		TableDataPilotMemberElement tableDataPilotMember = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotMemberElement.class);
+		tableDataPilotMember.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableDataPilotMember);
+		return tableDataPilotMember;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSortInfoElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSortInfoElement.java
new file mode 100644
index 0000000..efbfa11
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSortInfoElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOrderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSortModeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-sort-info}.
+ *
+ */
+public class TableDataPilotSortInfoElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-sort-info");
+
+	/**
+	 * Create the instance of <code>TableDataPilotSortInfoElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotSortInfoElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-sort-info}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDataFieldAttribute</code> , See {@odf.attribute table:data-field}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDataFieldAttribute() {
+		TableDataFieldAttribute attr = (TableDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDataFieldAttribute</code> , See {@odf.attribute table:data-field}
+	 *
+	 * @param tableDataFieldValue   The type is <code>String</code>
+	 */
+	public void setTableDataFieldAttribute(String tableDataFieldValue) {
+		TableDataFieldAttribute attr = new TableDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOrderAttribute</code> , See {@odf.attribute table:order}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOrderAttribute() {
+		TableOrderAttribute attr = (TableOrderAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "order");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOrderAttribute</code> , See {@odf.attribute table:order}
+	 *
+	 * @param tableOrderValue   The type is <code>String</code>
+	 */
+	public void setTableOrderAttribute(String tableOrderValue) {
+		TableOrderAttribute attr = new TableOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOrderValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSortModeAttribute</code> , See {@odf.attribute table:sort-mode}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSortModeAttribute() {
+		TableSortModeAttribute attr = (TableSortModeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "sort-mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSortModeAttribute</code> , See {@odf.attribute table:sort-mode}
+	 *
+	 * @param tableSortModeValue   The type is <code>String</code>
+	 */
+	public void setTableSortModeAttribute(String tableSortModeValue) {
+		TableSortModeAttribute attr = new TableSortModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSortModeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSubtotalElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSubtotalElement.java
new file mode 100644
index 0000000..957fbcd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSubtotalElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFunctionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-subtotal}.
+ *
+ */
+public class TableDataPilotSubtotalElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-subtotal");
+
+	/**
+	 * Create the instance of <code>TableDataPilotSubtotalElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotSubtotalElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-subtotal}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFunctionAttribute() {
+		TableFunctionAttribute attr = (TableFunctionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "function");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * @param tableFunctionValue   The type is <code>String</code>
+	 */
+	public void setTableFunctionAttribute(String tableFunctionValue) {
+		TableFunctionAttribute attr = new TableFunctionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFunctionValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSubtotalsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSubtotalsElement.java
new file mode 100644
index 0000000..0c183a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotSubtotalsElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-subtotals}.
+ *
+ */
+public class TableDataPilotSubtotalsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-subtotals");
+
+	/**
+	 * Create the instance of <code>TableDataPilotSubtotalsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotSubtotalsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-subtotals}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-subtotal}.
+	 *
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @return the element {@odf.element table:data-pilot-subtotal}
+	 */
+	 public TableDataPilotSubtotalElement newTableDataPilotSubtotalElement(String tableFunctionValue) {
+		TableDataPilotSubtotalElement tableDataPilotSubtotal = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotSubtotalElement.class);
+		tableDataPilotSubtotal.setTableFunctionAttribute(tableFunctionValue);
+		this.appendChild(tableDataPilotSubtotal);
+		return tableDataPilotSubtotal;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotTableElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotTableElement.java
new file mode 100644
index 0000000..4dd4aff
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotTableElement.java
@@ -0,0 +1,392 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableApplicationDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableButtonsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDrillDownOnDoubleClickAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableGrandTotalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdentifyCategoriesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIgnoreEmptyRowsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableShowFilterButtonAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTargetRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-table}.
+ *
+ */
+public class TableDataPilotTableElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-table");
+
+	/**
+	 * Create the instance of <code>TableDataPilotTableElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotTableElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-table}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableApplicationDataAttribute</code> , See {@odf.attribute table:application-data}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableApplicationDataAttribute() {
+		TableApplicationDataAttribute attr = (TableApplicationDataAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "application-data");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableApplicationDataAttribute</code> , See {@odf.attribute table:application-data}
+	 *
+	 * @param tableApplicationDataValue   The type is <code>String</code>
+	 */
+	public void setTableApplicationDataAttribute(String tableApplicationDataValue) {
+		TableApplicationDataAttribute attr = new TableApplicationDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableApplicationDataValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableButtonsAttribute</code> , See {@odf.attribute table:buttons}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableButtonsAttribute() {
+		TableButtonsAttribute attr = (TableButtonsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "buttons");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableButtonsAttribute</code> , See {@odf.attribute table:buttons}
+	 *
+	 * @param tableButtonsValue   The type is <code>String</code>
+	 */
+	public void setTableButtonsAttribute(String tableButtonsValue) {
+		TableButtonsAttribute attr = new TableButtonsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableButtonsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDrillDownOnDoubleClickAttribute</code> , See {@odf.attribute table:drill-down-on-double-click}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDrillDownOnDoubleClickAttribute() {
+		TableDrillDownOnDoubleClickAttribute attr = (TableDrillDownOnDoubleClickAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "drill-down-on-double-click");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDrillDownOnDoubleClickAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDrillDownOnDoubleClickAttribute</code> , See {@odf.attribute table:drill-down-on-double-click}
+	 *
+	 * @param tableDrillDownOnDoubleClickValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDrillDownOnDoubleClickAttribute(Boolean tableDrillDownOnDoubleClickValue) {
+		TableDrillDownOnDoubleClickAttribute attr = new TableDrillDownOnDoubleClickAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDrillDownOnDoubleClickValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableGrandTotalAttribute</code> , See {@odf.attribute table:grand-total}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableGrandTotalAttribute() {
+		TableGrandTotalAttribute attr = (TableGrandTotalAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "grand-total");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableGrandTotalAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableGrandTotalAttribute</code> , See {@odf.attribute table:grand-total}
+	 *
+	 * @param tableGrandTotalValue   The type is <code>String</code>
+	 */
+	public void setTableGrandTotalAttribute(String tableGrandTotalValue) {
+		TableGrandTotalAttribute attr = new TableGrandTotalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableGrandTotalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdentifyCategoriesAttribute</code> , See {@odf.attribute table:identify-categories}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableIdentifyCategoriesAttribute() {
+		TableIdentifyCategoriesAttribute attr = (TableIdentifyCategoriesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "identify-categories");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableIdentifyCategoriesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdentifyCategoriesAttribute</code> , See {@odf.attribute table:identify-categories}
+	 *
+	 * @param tableIdentifyCategoriesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableIdentifyCategoriesAttribute(Boolean tableIdentifyCategoriesValue) {
+		TableIdentifyCategoriesAttribute attr = new TableIdentifyCategoriesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableIdentifyCategoriesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIgnoreEmptyRowsAttribute</code> , See {@odf.attribute table:ignore-empty-rows}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableIgnoreEmptyRowsAttribute() {
+		TableIgnoreEmptyRowsAttribute attr = (TableIgnoreEmptyRowsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "ignore-empty-rows");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableIgnoreEmptyRowsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIgnoreEmptyRowsAttribute</code> , See {@odf.attribute table:ignore-empty-rows}
+	 *
+	 * @param tableIgnoreEmptyRowsValue   The type is <code>Boolean</code>
+	 */
+	public void setTableIgnoreEmptyRowsAttribute(Boolean tableIgnoreEmptyRowsValue) {
+		TableIgnoreEmptyRowsAttribute attr = new TableIgnoreEmptyRowsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableIgnoreEmptyRowsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableShowFilterButtonAttribute</code> , See {@odf.attribute table:show-filter-button}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableShowFilterButtonAttribute() {
+		TableShowFilterButtonAttribute attr = (TableShowFilterButtonAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "show-filter-button");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableShowFilterButtonAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableShowFilterButtonAttribute</code> , See {@odf.attribute table:show-filter-button}
+	 *
+	 * @param tableShowFilterButtonValue   The type is <code>Boolean</code>
+	 */
+	public void setTableShowFilterButtonAttribute(Boolean tableShowFilterButtonValue) {
+		TableShowFilterButtonAttribute attr = new TableShowFilterButtonAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableShowFilterButtonValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTargetRangeAddressAttribute() {
+		TableTargetRangeAddressAttribute attr = (TableTargetRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "target-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * @param tableTargetRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableTargetRangeAddressAttribute(String tableTargetRangeAddressValue) {
+		TableTargetRangeAddressAttribute attr = new TableTargetRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTargetRangeAddressValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-field}.
+	 *
+	 * @param tableOrientationValue  the <code>String</code> value of <code>TableOrientationAttribute</code>, see {@odf.attribute  table:orientation} at specification
+	 * @param tableSourceFieldNameValue  the <code>String</code> value of <code>TableSourceFieldNameAttribute</code>, see {@odf.attribute  table:source-field-name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:data-pilot-field}
+	 */
+	 public TableDataPilotFieldElement newTableDataPilotFieldElement(String tableOrientationValue, String tableSourceFieldNameValue) {
+		TableDataPilotFieldElement tableDataPilotField = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotFieldElement.class);
+		tableDataPilotField.setTableOrientationAttribute(tableOrientationValue);
+		tableDataPilotField.setTableSourceFieldNameAttribute(tableSourceFieldNameValue);
+		this.appendChild(tableDataPilotField);
+		return tableDataPilotField;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-source-query}.
+	 *
+	 * @param tableDatabaseNameValue  the <code>String</code> value of <code>TableDatabaseNameAttribute</code>, see {@odf.attribute  table:database-name} at specification
+	 * @param tableQueryNameValue  the <code>String</code> value of <code>TableQueryNameAttribute</code>, see {@odf.attribute  table:query-name} at specification
+	 * @return the element {@odf.element table:database-source-query}
+	 */
+	 public TableDatabaseSourceQueryElement newTableDatabaseSourceQueryElement(String tableDatabaseNameValue, String tableQueryNameValue) {
+		TableDatabaseSourceQueryElement tableDatabaseSourceQuery = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseSourceQueryElement.class);
+		tableDatabaseSourceQuery.setTableDatabaseNameAttribute(tableDatabaseNameValue);
+		tableDatabaseSourceQuery.setTableQueryNameAttribute(tableQueryNameValue);
+		this.appendChild(tableDatabaseSourceQuery);
+		return tableDatabaseSourceQuery;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-source-sql}.
+	 *
+	 * @param tableDatabaseNameValue  the <code>String</code> value of <code>TableDatabaseNameAttribute</code>, see {@odf.attribute  table:database-name} at specification
+	 * @param tableSqlStatementValue  the <code>String</code> value of <code>TableSqlStatementAttribute</code>, see {@odf.attribute  table:sql-statement} at specification
+	 * @return the element {@odf.element table:database-source-sql}
+	 */
+	 public TableDatabaseSourceSqlElement newTableDatabaseSourceSqlElement(String tableDatabaseNameValue, String tableSqlStatementValue) {
+		TableDatabaseSourceSqlElement tableDatabaseSourceSql = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseSourceSqlElement.class);
+		tableDatabaseSourceSql.setTableDatabaseNameAttribute(tableDatabaseNameValue);
+		tableDatabaseSourceSql.setTableSqlStatementAttribute(tableSqlStatementValue);
+		this.appendChild(tableDatabaseSourceSql);
+		return tableDatabaseSourceSql;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-source-table}.
+	 *
+	 * @param tableDatabaseNameValue  the <code>String</code> value of <code>TableDatabaseNameAttribute</code>, see {@odf.attribute  table:database-name} at specification
+	 * @param tableDatabaseTableNameValue  the <code>String</code> value of <code>TableDatabaseTableNameAttribute</code>, see {@odf.attribute  table:database-table-name} at specification
+	 * @return the element {@odf.element table:database-source-table}
+	 */
+	 public TableDatabaseSourceTableElement newTableDatabaseSourceTableElement(String tableDatabaseNameValue, String tableDatabaseTableNameValue) {
+		TableDatabaseSourceTableElement tableDatabaseSourceTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseSourceTableElement.class);
+		tableDatabaseSourceTable.setTableDatabaseNameAttribute(tableDatabaseNameValue);
+		tableDatabaseSourceTable.setTableDatabaseTableNameAttribute(tableDatabaseTableNameValue);
+		this.appendChild(tableDatabaseSourceTable);
+		return tableDatabaseSourceTable;
+	}
+
+	/**
+	 * Create child element {@odf.element table:source-cell-range}.
+	 *
+	 * @param tableCellRangeAddressValue  the <code>String</code> value of <code>TableCellRangeAddressAttribute</code>, see {@odf.attribute  table:cell-range-address} at specification
+	 * @return the element {@odf.element table:source-cell-range}
+	 */
+	 public TableSourceCellRangeElement newTableSourceCellRangeElement(String tableCellRangeAddressValue) {
+		TableSourceCellRangeElement tableSourceCellRange = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSourceCellRangeElement.class);
+		tableSourceCellRange.setTableCellRangeAddressAttribute(tableCellRangeAddressValue);
+		this.appendChild(tableSourceCellRange);
+		return tableSourceCellRange;
+	}
+
+	/**
+	 * Create child element {@odf.element table:source-service}.
+	 *
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @param tableObjectNameValue  the <code>String</code> value of <code>TableObjectNameAttribute</code>, see {@odf.attribute  table:object-name} at specification
+	 * @param tableSourceNameValue  the <code>String</code> value of <code>TableSourceNameAttribute</code>, see {@odf.attribute  table:source-name} at specification
+	 * @return the element {@odf.element table:source-service}
+	 */
+	 public TableSourceServiceElement newTableSourceServiceElement(String tableNameValue, String tableObjectNameValue, String tableSourceNameValue) {
+		TableSourceServiceElement tableSourceService = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSourceServiceElement.class);
+		tableSourceService.setTableNameAttribute(tableNameValue);
+		tableSourceService.setTableObjectNameAttribute(tableObjectNameValue);
+		tableSourceService.setTableSourceNameAttribute(tableSourceNameValue);
+		this.appendChild(tableSourceService);
+		return tableSourceService;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotTablesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotTablesElement.java
new file mode 100644
index 0000000..fe8762e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDataPilotTablesElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:data-pilot-tables}.
+ *
+ */
+public class TableDataPilotTablesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "data-pilot-tables");
+
+	/**
+	 * Create the instance of <code>TableDataPilotTablesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDataPilotTablesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:data-pilot-tables}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:data-pilot-table}.
+	 *
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @param tableTargetRangeAddressValue  the <code>String</code> value of <code>TableTargetRangeAddressAttribute</code>, see {@odf.attribute  table:target-range-address} at specification
+	 * @return the element {@odf.element table:data-pilot-table}
+	 */
+	 public TableDataPilotTableElement newTableDataPilotTableElement(String tableNameValue, String tableTargetRangeAddressValue) {
+		TableDataPilotTableElement tableDataPilotTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDataPilotTableElement.class);
+		tableDataPilotTable.setTableNameAttribute(tableNameValue);
+		tableDataPilotTable.setTableTargetRangeAddressAttribute(tableTargetRangeAddressValue);
+		this.appendChild(tableDataPilotTable);
+		return tableDataPilotTable;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseRangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseRangeElement.java
new file mode 100644
index 0000000..b061835
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseRangeElement.java
@@ -0,0 +1,401 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableContainsHeaderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayFilterButtonsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableHasPersistentDataAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIsSelectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOnUpdateKeepSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOnUpdateKeepStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOrientationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRefreshDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTargetRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:database-range}.
+ *
+ */
+public class TableDatabaseRangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-range");
+
+	/**
+	 * Create the instance of <code>TableDatabaseRangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseRangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:database-range}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableContainsHeaderAttribute</code> , See {@odf.attribute table:contains-header}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableContainsHeaderAttribute() {
+		TableContainsHeaderAttribute attr = (TableContainsHeaderAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "contains-header");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableContainsHeaderAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableContainsHeaderAttribute</code> , See {@odf.attribute table:contains-header}
+	 *
+	 * @param tableContainsHeaderValue   The type is <code>Boolean</code>
+	 */
+	public void setTableContainsHeaderAttribute(Boolean tableContainsHeaderValue) {
+		TableContainsHeaderAttribute attr = new TableContainsHeaderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableContainsHeaderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayFilterButtonsAttribute</code> , See {@odf.attribute table:display-filter-buttons}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayFilterButtonsAttribute() {
+		TableDisplayFilterButtonsAttribute attr = (TableDisplayFilterButtonsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display-filter-buttons");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayFilterButtonsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayFilterButtonsAttribute</code> , See {@odf.attribute table:display-filter-buttons}
+	 *
+	 * @param tableDisplayFilterButtonsValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayFilterButtonsAttribute(Boolean tableDisplayFilterButtonsValue) {
+		TableDisplayFilterButtonsAttribute attr = new TableDisplayFilterButtonsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayFilterButtonsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableHasPersistentDataAttribute</code> , See {@odf.attribute table:has-persistent-data}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableHasPersistentDataAttribute() {
+		TableHasPersistentDataAttribute attr = (TableHasPersistentDataAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "has-persistent-data");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableHasPersistentDataAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableHasPersistentDataAttribute</code> , See {@odf.attribute table:has-persistent-data}
+	 *
+	 * @param tableHasPersistentDataValue   The type is <code>Boolean</code>
+	 */
+	public void setTableHasPersistentDataAttribute(Boolean tableHasPersistentDataValue) {
+		TableHasPersistentDataAttribute attr = new TableHasPersistentDataAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableHasPersistentDataValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIsSelectionAttribute</code> , See {@odf.attribute table:is-selection}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableIsSelectionAttribute() {
+		TableIsSelectionAttribute attr = (TableIsSelectionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "is-selection");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableIsSelectionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIsSelectionAttribute</code> , See {@odf.attribute table:is-selection}
+	 *
+	 * @param tableIsSelectionValue   The type is <code>Boolean</code>
+	 */
+	public void setTableIsSelectionAttribute(Boolean tableIsSelectionValue) {
+		TableIsSelectionAttribute attr = new TableIsSelectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableIsSelectionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOnUpdateKeepSizeAttribute</code> , See {@odf.attribute table:on-update-keep-size}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableOnUpdateKeepSizeAttribute() {
+		TableOnUpdateKeepSizeAttribute attr = (TableOnUpdateKeepSizeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "on-update-keep-size");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableOnUpdateKeepSizeAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOnUpdateKeepSizeAttribute</code> , See {@odf.attribute table:on-update-keep-size}
+	 *
+	 * @param tableOnUpdateKeepSizeValue   The type is <code>Boolean</code>
+	 */
+	public void setTableOnUpdateKeepSizeAttribute(Boolean tableOnUpdateKeepSizeValue) {
+		TableOnUpdateKeepSizeAttribute attr = new TableOnUpdateKeepSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableOnUpdateKeepSizeValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOnUpdateKeepStylesAttribute</code> , See {@odf.attribute table:on-update-keep-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableOnUpdateKeepStylesAttribute() {
+		TableOnUpdateKeepStylesAttribute attr = (TableOnUpdateKeepStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "on-update-keep-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableOnUpdateKeepStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOnUpdateKeepStylesAttribute</code> , See {@odf.attribute table:on-update-keep-styles}
+	 *
+	 * @param tableOnUpdateKeepStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableOnUpdateKeepStylesAttribute(Boolean tableOnUpdateKeepStylesValue) {
+		TableOnUpdateKeepStylesAttribute attr = new TableOnUpdateKeepStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableOnUpdateKeepStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOrientationAttribute</code> , See {@odf.attribute table:orientation}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOrientationAttribute() {
+		TableOrientationAttribute attr = (TableOrientationAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "orientation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableOrientationAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOrientationAttribute</code> , See {@odf.attribute table:orientation}
+	 *
+	 * @param tableOrientationValue   The type is <code>String</code>
+	 */
+	public void setTableOrientationAttribute(String tableOrientationValue) {
+		TableOrientationAttribute attr = new TableOrientationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOrientationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRefreshDelayAttribute</code> , See {@odf.attribute table:refresh-delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRefreshDelayAttribute() {
+		TableRefreshDelayAttribute attr = (TableRefreshDelayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "refresh-delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRefreshDelayAttribute</code> , See {@odf.attribute table:refresh-delay}
+	 *
+	 * @param tableRefreshDelayValue   The type is <code>String</code>
+	 */
+	public void setTableRefreshDelayAttribute(String tableRefreshDelayValue) {
+		TableRefreshDelayAttribute attr = new TableRefreshDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRefreshDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTargetRangeAddressAttribute() {
+		TableTargetRangeAddressAttribute attr = (TableTargetRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "target-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * @param tableTargetRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableTargetRangeAddressAttribute(String tableTargetRangeAddressValue) {
+		TableTargetRangeAddressAttribute attr = new TableTargetRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTargetRangeAddressValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-source-query}.
+	 *
+	 * @param tableDatabaseNameValue  the <code>String</code> value of <code>TableDatabaseNameAttribute</code>, see {@odf.attribute  table:database-name} at specification
+	 * @param tableQueryNameValue  the <code>String</code> value of <code>TableQueryNameAttribute</code>, see {@odf.attribute  table:query-name} at specification
+	 * @return the element {@odf.element table:database-source-query}
+	 */
+	 public TableDatabaseSourceQueryElement newTableDatabaseSourceQueryElement(String tableDatabaseNameValue, String tableQueryNameValue) {
+		TableDatabaseSourceQueryElement tableDatabaseSourceQuery = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseSourceQueryElement.class);
+		tableDatabaseSourceQuery.setTableDatabaseNameAttribute(tableDatabaseNameValue);
+		tableDatabaseSourceQuery.setTableQueryNameAttribute(tableQueryNameValue);
+		this.appendChild(tableDatabaseSourceQuery);
+		return tableDatabaseSourceQuery;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-source-sql}.
+	 *
+	 * @param tableDatabaseNameValue  the <code>String</code> value of <code>TableDatabaseNameAttribute</code>, see {@odf.attribute  table:database-name} at specification
+	 * @param tableSqlStatementValue  the <code>String</code> value of <code>TableSqlStatementAttribute</code>, see {@odf.attribute  table:sql-statement} at specification
+	 * @return the element {@odf.element table:database-source-sql}
+	 */
+	 public TableDatabaseSourceSqlElement newTableDatabaseSourceSqlElement(String tableDatabaseNameValue, String tableSqlStatementValue) {
+		TableDatabaseSourceSqlElement tableDatabaseSourceSql = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseSourceSqlElement.class);
+		tableDatabaseSourceSql.setTableDatabaseNameAttribute(tableDatabaseNameValue);
+		tableDatabaseSourceSql.setTableSqlStatementAttribute(tableSqlStatementValue);
+		this.appendChild(tableDatabaseSourceSql);
+		return tableDatabaseSourceSql;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-source-table}.
+	 *
+	 * @param tableDatabaseNameValue  the <code>String</code> value of <code>TableDatabaseNameAttribute</code>, see {@odf.attribute  table:database-name} at specification
+	 * @param tableDatabaseTableNameValue  the <code>String</code> value of <code>TableDatabaseTableNameAttribute</code>, see {@odf.attribute  table:database-table-name} at specification
+	 * @return the element {@odf.element table:database-source-table}
+	 */
+	 public TableDatabaseSourceTableElement newTableDatabaseSourceTableElement(String tableDatabaseNameValue, String tableDatabaseTableNameValue) {
+		TableDatabaseSourceTableElement tableDatabaseSourceTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseSourceTableElement.class);
+		tableDatabaseSourceTable.setTableDatabaseNameAttribute(tableDatabaseNameValue);
+		tableDatabaseSourceTable.setTableDatabaseTableNameAttribute(tableDatabaseTableNameValue);
+		this.appendChild(tableDatabaseSourceTable);
+		return tableDatabaseSourceTable;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter}.
+	 *
+	 * @return the element {@odf.element table:filter}
+	 */
+	public TableFilterElement newTableFilterElement() {
+		TableFilterElement tableFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterElement.class);
+		this.appendChild(tableFilter);
+		return tableFilter;
+	}
+
+	/**
+	 * Create child element {@odf.element table:sort}.
+	 *
+	 * @return the element {@odf.element table:sort}
+	 */
+	public TableSortElement newTableSortElement() {
+		TableSortElement tableSort = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSortElement.class);
+		this.appendChild(tableSort);
+		return tableSort;
+	}
+
+	/**
+	 * Create child element {@odf.element table:subtotal-rules}.
+	 *
+	 * @return the element {@odf.element table:subtotal-rules}
+	 */
+	public TableSubtotalRulesElement newTableSubtotalRulesElement() {
+		TableSubtotalRulesElement tableSubtotalRules = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSubtotalRulesElement.class);
+		this.appendChild(tableSubtotalRules);
+		return tableSubtotalRules;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseRangesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseRangesElement.java
new file mode 100644
index 0000000..8c7afa6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseRangesElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:database-ranges}.
+ *
+ */
+public class TableDatabaseRangesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-ranges");
+
+	/**
+	 * Create the instance of <code>TableDatabaseRangesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseRangesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:database-ranges}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:database-range}.
+	 *
+	 * @param tableTargetRangeAddressValue  the <code>String</code> value of <code>TableTargetRangeAddressAttribute</code>, see {@odf.attribute  table:target-range-address} at specification
+	 * @return the element {@odf.element table:database-range}
+	 */
+	 public TableDatabaseRangeElement newTableDatabaseRangeElement(String tableTargetRangeAddressValue) {
+		TableDatabaseRangeElement tableDatabaseRange = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDatabaseRangeElement.class);
+		tableDatabaseRange.setTableTargetRangeAddressAttribute(tableTargetRangeAddressValue);
+		this.appendChild(tableDatabaseRange);
+		return tableDatabaseRange;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceQueryElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceQueryElement.java
new file mode 100644
index 0000000..6cfeeaa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceQueryElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableQueryNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:database-source-query}.
+ *
+ */
+public class TableDatabaseSourceQueryElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-source-query");
+
+	/**
+	 * Create the instance of <code>TableDatabaseSourceQueryElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseSourceQueryElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:database-source-query}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDatabaseNameAttribute</code> , See {@odf.attribute table:database-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDatabaseNameAttribute() {
+		TableDatabaseNameAttribute attr = (TableDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDatabaseNameAttribute</code> , See {@odf.attribute table:database-name}
+	 *
+	 * @param tableDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTableDatabaseNameAttribute(String tableDatabaseNameValue) {
+		TableDatabaseNameAttribute attr = new TableDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableQueryNameAttribute</code> , See {@odf.attribute table:query-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableQueryNameAttribute() {
+		TableQueryNameAttribute attr = (TableQueryNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "query-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableQueryNameAttribute</code> , See {@odf.attribute table:query-name}
+	 *
+	 * @param tableQueryNameValue   The type is <code>String</code>
+	 */
+	public void setTableQueryNameAttribute(String tableQueryNameValue) {
+		TableQueryNameAttribute attr = new TableQueryNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableQueryNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceSqlElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceSqlElement.java
new file mode 100644
index 0000000..5eada57
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceSqlElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParseSqlStatementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSqlStatementAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:database-source-sql}.
+ *
+ */
+public class TableDatabaseSourceSqlElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-source-sql");
+
+	/**
+	 * Create the instance of <code>TableDatabaseSourceSqlElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseSourceSqlElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:database-source-sql}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDatabaseNameAttribute</code> , See {@odf.attribute table:database-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDatabaseNameAttribute() {
+		TableDatabaseNameAttribute attr = (TableDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDatabaseNameAttribute</code> , See {@odf.attribute table:database-name}
+	 *
+	 * @param tableDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTableDatabaseNameAttribute(String tableDatabaseNameValue) {
+		TableDatabaseNameAttribute attr = new TableDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParseSqlStatementAttribute</code> , See {@odf.attribute table:parse-sql-statement}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableParseSqlStatementAttribute() {
+		TableParseSqlStatementAttribute attr = (TableParseSqlStatementAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "parse-sql-statement");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableParseSqlStatementAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParseSqlStatementAttribute</code> , See {@odf.attribute table:parse-sql-statement}
+	 *
+	 * @param tableParseSqlStatementValue   The type is <code>Boolean</code>
+	 */
+	public void setTableParseSqlStatementAttribute(Boolean tableParseSqlStatementValue) {
+		TableParseSqlStatementAttribute attr = new TableParseSqlStatementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableParseSqlStatementValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSqlStatementAttribute</code> , See {@odf.attribute table:sql-statement}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSqlStatementAttribute() {
+		TableSqlStatementAttribute attr = (TableSqlStatementAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "sql-statement");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSqlStatementAttribute</code> , See {@odf.attribute table:sql-statement}
+	 *
+	 * @param tableSqlStatementValue   The type is <code>String</code>
+	 */
+	public void setTableSqlStatementAttribute(String tableSqlStatementValue) {
+		TableSqlStatementAttribute attr = new TableSqlStatementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSqlStatementValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceTableElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceTableElement.java
new file mode 100644
index 0000000..be008cf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDatabaseSourceTableElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDatabaseTableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:database-source-table}.
+ *
+ */
+public class TableDatabaseSourceTableElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "database-source-table");
+
+	/**
+	 * Create the instance of <code>TableDatabaseSourceTableElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDatabaseSourceTableElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:database-source-table}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDatabaseNameAttribute</code> , See {@odf.attribute table:database-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDatabaseNameAttribute() {
+		TableDatabaseNameAttribute attr = (TableDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDatabaseNameAttribute</code> , See {@odf.attribute table:database-name}
+	 *
+	 * @param tableDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTableDatabaseNameAttribute(String tableDatabaseNameValue) {
+		TableDatabaseNameAttribute attr = new TableDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDatabaseTableNameAttribute</code> , See {@odf.attribute table:database-table-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDatabaseTableNameAttribute() {
+		TableDatabaseTableNameAttribute attr = (TableDatabaseTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "database-table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDatabaseTableNameAttribute</code> , See {@odf.attribute table:database-table-name}
+	 *
+	 * @param tableDatabaseTableNameValue   The type is <code>String</code>
+	 */
+	public void setTableDatabaseTableNameAttribute(String tableDatabaseTableNameValue) {
+		TableDatabaseTableNameAttribute attr = new TableDatabaseTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDatabaseTableNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDdeLinkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDdeLinkElement.java
new file mode 100644
index 0000000..28c36bc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDdeLinkElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDdeSourceElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:dde-link}.
+ *
+ */
+public class TableDdeLinkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "dde-link");
+
+	/**
+	 * Create the instance of <code>TableDdeLinkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDdeLinkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:dde-link}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element office:dde-source}.
+	 *
+	 * @param officeDdeApplicationValue  the <code>String</code> value of <code>OfficeDdeApplicationAttribute</code>, see {@odf.attribute  office:dde-application} at specification
+	 * @param officeDdeItemValue  the <code>String</code> value of <code>OfficeDdeItemAttribute</code>, see {@odf.attribute  office:dde-item} at specification
+	 * @param officeDdeTopicValue  the <code>String</code> value of <code>OfficeDdeTopicAttribute</code>, see {@odf.attribute  office:dde-topic} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:dde-source}
+	 */
+	 public OfficeDdeSourceElement newOfficeDdeSourceElement(String officeDdeApplicationValue, String officeDdeItemValue, String officeDdeTopicValue) {
+		OfficeDdeSourceElement officeDdeSource = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDdeSourceElement.class);
+		officeDdeSource.setOfficeDdeApplicationAttribute(officeDdeApplicationValue);
+		officeDdeSource.setOfficeDdeItemAttribute(officeDdeItemValue);
+		officeDdeSource.setOfficeDdeTopicAttribute(officeDdeTopicValue);
+		this.appendChild(officeDdeSource);
+		return officeDdeSource;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDdeLinksElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDdeLinksElement.java
new file mode 100644
index 0000000..345c389
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDdeLinksElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:dde-links}.
+ *
+ */
+public class TableDdeLinksElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "dde-links");
+
+	/**
+	 * Create the instance of <code>TableDdeLinksElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDdeLinksElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:dde-links}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dde-link}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:dde-link}
+	 */
+	public TableDdeLinkElement newTableDdeLinkElement() {
+		TableDdeLinkElement tableDdeLink = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDdeLinkElement.class);
+		this.appendChild(tableDdeLink);
+		return tableDdeLink;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDeletionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDeletionElement.java
new file mode 100644
index 0000000..19019a0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDeletionElement.java
@@ -0,0 +1,299 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAcceptanceStateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMultiDeletionSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRejectingChangeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:deletion}.
+ *
+ */
+public class TableDeletionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "deletion");
+
+	/**
+	 * Create the instance of <code>TableDeletionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDeletionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:deletion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableAcceptanceStateAttribute() {
+		TableAcceptanceStateAttribute attr = (TableAcceptanceStateAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "acceptance-state");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableAcceptanceStateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @param tableAcceptanceStateValue   The type is <code>String</code>
+	 */
+	public void setTableAcceptanceStateAttribute(String tableAcceptanceStateValue) {
+		TableAcceptanceStateAttribute attr = new TableAcceptanceStateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableAcceptanceStateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMultiDeletionSpannedAttribute</code> , See {@odf.attribute table:multi-deletion-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableMultiDeletionSpannedAttribute() {
+		TableMultiDeletionSpannedAttribute attr = (TableMultiDeletionSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "multi-deletion-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMultiDeletionSpannedAttribute</code> , See {@odf.attribute table:multi-deletion-spanned}
+	 *
+	 * @param tableMultiDeletionSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableMultiDeletionSpannedAttribute(Integer tableMultiDeletionSpannedValue) {
+		TableMultiDeletionSpannedAttribute attr = new TableMultiDeletionSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableMultiDeletionSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTablePositionAttribute() {
+		TablePositionAttribute attr = (TablePositionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * @param tablePositionValue   The type is <code>Integer</code>
+	 */
+	public void setTablePositionAttribute(Integer tablePositionValue) {
+		TablePositionAttribute attr = new TablePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tablePositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRejectingChangeIdAttribute() {
+		TableRejectingChangeIdAttribute attr = (TableRejectingChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "rejecting-change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @param tableRejectingChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTableRejectingChangeIdAttribute(String tableRejectingChangeIdValue) {
+		TableRejectingChangeIdAttribute attr = new TableRejectingChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRejectingChangeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableTableAttribute() {
+		TableTableAttribute attr = (TableTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @param tableTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableTableAttribute(Integer tableTableValue) {
+		TableTableAttribute attr = new TableTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableTableValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTypeAttribute</code> , See {@odf.attribute table:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTypeAttribute() {
+		TableTypeAttribute attr = (TableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTypeAttribute</code> , See {@odf.attribute table:type}
+	 *
+	 * @param tableTypeValue   The type is <code>String</code>
+	 */
+	public void setTableTypeAttribute(String tableTypeValue) {
+		TableTypeAttribute attr = new TableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:cut-offs}.
+	 *
+	 * @return the element {@odf.element table:cut-offs}
+	 */
+	public TableCutOffsElement newTableCutOffsElement() {
+		TableCutOffsElement tableCutOffs = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCutOffsElement.class);
+		this.appendChild(tableCutOffs);
+		return tableCutOffs;
+	}
+
+	/**
+	 * Create child element {@odf.element table:deletions}.
+	 *
+	 * @return the element {@odf.element table:deletions}
+	 */
+	public TableDeletionsElement newTableDeletionsElement() {
+		TableDeletionsElement tableDeletions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDeletionsElement.class);
+		this.appendChild(tableDeletions);
+		return tableDeletions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dependencies}.
+	 *
+	 * @return the element {@odf.element table:dependencies}
+	 */
+	public TableDependenciesElement newTableDependenciesElement() {
+		TableDependenciesElement tableDependencies = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDependenciesElement.class);
+		this.appendChild(tableDependencies);
+		return tableDependencies;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDeletionsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDeletionsElement.java
new file mode 100644
index 0000000..639ac6f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDeletionsElement.java
@@ -0,0 +1,93 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:deletions}.
+ *
+ */
+public class TableDeletionsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "deletions");
+
+	/**
+	 * Create the instance of <code>TableDeletionsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDeletionsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:deletions}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:cell-content-deletion}.
+	 *
+	 * @return the element {@odf.element table:cell-content-deletion}
+	 */
+	public TableCellContentDeletionElement newTableCellContentDeletionElement() {
+		TableCellContentDeletionElement tableCellContentDeletion = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCellContentDeletionElement.class);
+		this.appendChild(tableCellContentDeletion);
+		return tableCellContentDeletion;
+	}
+
+	/**
+	 * Create child element {@odf.element table:change-deletion}.
+	 *
+	 * @return the element {@odf.element table:change-deletion}
+	 */
+	public TableChangeDeletionElement newTableChangeDeletionElement() {
+		TableChangeDeletionElement tableChangeDeletion = ((OdfFileDom) this.ownerDocument).newOdfElement(TableChangeDeletionElement.class);
+		this.appendChild(tableChangeDeletion);
+		return tableChangeDeletion;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDependenciesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDependenciesElement.java
new file mode 100644
index 0000000..70e1484
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDependenciesElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:dependencies}.
+ *
+ */
+public class TableDependenciesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "dependencies");
+
+	/**
+	 * Create the instance of <code>TableDependenciesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDependenciesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:dependencies}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dependency}.
+	 *
+	 * @param tableIdValue  the <code>String</code> value of <code>TableIdAttribute</code>, see {@odf.attribute  table:id} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:dependency}
+	 */
+	 public TableDependencyElement newTableDependencyElement(String tableIdValue) {
+		TableDependencyElement tableDependency = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDependencyElement.class);
+		tableDependency.setTableIdAttribute(tableIdValue);
+		this.appendChild(tableDependency);
+		return tableDependency;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDependencyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDependencyElement.java
new file mode 100644
index 0000000..b7e3873
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDependencyElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:dependency}.
+ *
+ */
+public class TableDependencyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "dependency");
+
+	/**
+	 * Create the instance of <code>TableDependencyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDependencyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:dependency}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDescElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDescElement.java
new file mode 100644
index 0000000..e2cbba8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDescElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:desc}.
+ *
+ */
+public class TableDescElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "desc");
+
+	/**
+	 * Create the instance of <code>TableDescElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDescElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:desc}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDetectiveElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDetectiveElement.java
new file mode 100644
index 0000000..104e0a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableDetectiveElement.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:detective}.
+ *
+ */
+public class TableDetectiveElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "detective");
+
+	/**
+	 * Create the instance of <code>TableDetectiveElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableDetectiveElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:detective}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:highlighted-range}.
+	 *
+	 * @return the element {@odf.element table:highlighted-range}
+	 */
+	public TableHighlightedRangeElement newTableHighlightedRangeElement() {
+		TableHighlightedRangeElement tableHighlightedRange = ((OdfFileDom) this.ownerDocument).newOdfElement(TableHighlightedRangeElement.class);
+		this.appendChild(tableHighlightedRange);
+		return tableHighlightedRange;
+	}
+
+	/**
+	 * Create child element {@odf.element table:operation}.
+	 *
+	 * @param tableIndexValue  the <code>Integer</code> value of <code>TableIndexAttribute</code>, see {@odf.attribute  table:index} at specification
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @return the element {@odf.element table:operation}
+	 */
+	 public TableOperationElement newTableOperationElement(int tableIndexValue, String tableNameValue) {
+		TableOperationElement tableOperation = ((OdfFileDom) this.ownerDocument).newOdfElement(TableOperationElement.class);
+		tableOperation.setTableIndexAttribute(tableIndexValue);
+		tableOperation.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableOperation);
+		return tableOperation;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableErrorMacroElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableErrorMacroElement.java
new file mode 100644
index 0000000..bf6e868
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableErrorMacroElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableExecuteAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:error-macro}.
+ *
+ */
+public class TableErrorMacroElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "error-macro");
+
+	/**
+	 * Create the instance of <code>TableErrorMacroElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableErrorMacroElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:error-macro}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableExecuteAttribute</code> , See {@odf.attribute table:execute}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableExecuteAttribute() {
+		TableExecuteAttribute attr = (TableExecuteAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "execute");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableExecuteAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableExecuteAttribute</code> , See {@odf.attribute table:execute}
+	 *
+	 * @param tableExecuteValue   The type is <code>Boolean</code>
+	 */
+	public void setTableExecuteAttribute(Boolean tableExecuteValue) {
+		TableExecuteAttribute attr = new TableExecuteAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableExecuteValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableErrorMessageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableErrorMessageElement.java
new file mode 100644
index 0000000..6552b8d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableErrorMessageElement.java
@@ -0,0 +1,158 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMessageTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTitleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:error-message}.
+ *
+ */
+public class TableErrorMessageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "error-message");
+
+	/**
+	 * Create the instance of <code>TableErrorMessageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableErrorMessageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:error-message}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayAttribute() {
+		TableDisplayAttribute attr = (TableDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayAttribute.DEFAULT_VALUE_FALSE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @param tableDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayAttribute(Boolean tableDisplayValue) {
+		TableDisplayAttribute attr = new TableDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMessageTypeAttribute</code> , See {@odf.attribute table:message-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableMessageTypeAttribute() {
+		TableMessageTypeAttribute attr = (TableMessageTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "message-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableMessageTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMessageTypeAttribute</code> , See {@odf.attribute table:message-type}
+	 *
+	 * @param tableMessageTypeValue   The type is <code>String</code>
+	 */
+	public void setTableMessageTypeAttribute(String tableMessageTypeValue) {
+		TableMessageTypeAttribute attr = new TableMessageTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableMessageTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTitleAttribute</code> , See {@odf.attribute table:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTitleAttribute() {
+		TableTitleAttribute attr = (TableTitleAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTitleAttribute</code> , See {@odf.attribute table:title}
+	 *
+	 * @param tableTitleValue   The type is <code>String</code>
+	 */
+	public void setTableTitleAttribute(String tableTitleValue) {
+		TableTitleAttribute attr = new TableTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTitleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableEvenColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableEvenColumnsElement.java
new file mode 100644
index 0000000..f3dc402
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableEvenColumnsElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:even-columns}.
+ *
+ */
+public class TableEvenColumnsElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "even-columns");
+
+	/**
+	 * Create the instance of <code>TableEvenColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableEvenColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:even-columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableEvenRowsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableEvenRowsElement.java
new file mode 100644
index 0000000..1f43ec0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableEvenRowsElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:even-rows}.
+ *
+ */
+public class TableEvenRowsElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "even-rows");
+
+	/**
+	 * Create the instance of <code>TableEvenRowsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableEvenRowsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:even-rows}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterAndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterAndElement.java
new file mode 100644
index 0000000..8e96030
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterAndElement.java
@@ -0,0 +1,99 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:filter-and}.
+ *
+ */
+public class TableFilterAndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter-and");
+
+	/**
+	 * Create the instance of <code>TableFilterAndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterAndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:filter-and}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-condition}.
+	 *
+	 * @param tableFieldNumberValue  the <code>Integer</code> value of <code>TableFieldNumberAttribute</code>, see {@odf.attribute  table:field-number} at specification
+	 * @param tableOperatorValue  the <code>String</code> value of <code>TableOperatorAttribute</code>, see {@odf.attribute  table:operator} at specification
+	 * @param tableValueValue  the <code>String</code> value of <code>TableValueAttribute</code>, see {@odf.attribute  table:value} at specification
+	 * @return the element {@odf.element table:filter-condition}
+	 */
+	 public TableFilterConditionElement newTableFilterConditionElement(int tableFieldNumberValue, String tableOperatorValue, String tableValueValue) {
+		TableFilterConditionElement tableFilterCondition = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterConditionElement.class);
+		tableFilterCondition.setTableFieldNumberAttribute(tableFieldNumberValue);
+		tableFilterCondition.setTableOperatorAttribute(tableOperatorValue);
+		tableFilterCondition.setTableValueAttribute(tableValueValue);
+		this.appendChild(tableFilterCondition);
+		return tableFilterCondition;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-or}.
+	 *
+	 * @return the element {@odf.element table:filter-or}
+	 */
+	public TableFilterOrElement newTableFilterOrElement() {
+		TableFilterOrElement tableFilterOr = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterOrElement.class);
+		this.appendChild(tableFilterOr);
+		return tableFilterOr;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterConditionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterConditionElement.java
new file mode 100644
index 0000000..ef2fdc9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterConditionElement.java
@@ -0,0 +1,217 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCaseSensitiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDataTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFieldNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOperatorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:filter-condition}.
+ *
+ */
+public class TableFilterConditionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter-condition");
+
+	/**
+	 * Create the instance of <code>TableFilterConditionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterConditionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:filter-condition}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCaseSensitiveAttribute() {
+		TableCaseSensitiveAttribute attr = (TableCaseSensitiveAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "case-sensitive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableCaseSensitiveAttribute.DEFAULT_VALUE_FALSE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @param tableCaseSensitiveValue   The type is <code>String</code>
+	 */
+	public void setTableCaseSensitiveAttribute(String tableCaseSensitiveValue) {
+		TableCaseSensitiveAttribute attr = new TableCaseSensitiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCaseSensitiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDataTypeAttribute</code> , See {@odf.attribute table:data-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDataTypeAttribute() {
+		TableDataTypeAttribute attr = (TableDataTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "data-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableDataTypeAttribute.DEFAULT_VALUE_TEXT;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDataTypeAttribute</code> , See {@odf.attribute table:data-type}
+	 *
+	 * @param tableDataTypeValue   The type is <code>String</code>
+	 */
+	public void setTableDataTypeAttribute(String tableDataTypeValue) {
+		TableDataTypeAttribute attr = new TableDataTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDataTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFieldNumberAttribute</code> , See {@odf.attribute table:field-number}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableFieldNumberAttribute() {
+		TableFieldNumberAttribute attr = (TableFieldNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "field-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFieldNumberAttribute</code> , See {@odf.attribute table:field-number}
+	 *
+	 * @param tableFieldNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTableFieldNumberAttribute(Integer tableFieldNumberValue) {
+		TableFieldNumberAttribute attr = new TableFieldNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableFieldNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOperatorAttribute</code> , See {@odf.attribute table:operator}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOperatorAttribute() {
+		TableOperatorAttribute attr = (TableOperatorAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "operator");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOperatorAttribute</code> , See {@odf.attribute table:operator}
+	 *
+	 * @param tableOperatorValue   The type is <code>String</code>
+	 */
+	public void setTableOperatorAttribute(String tableOperatorValue) {
+		TableOperatorAttribute attr = new TableOperatorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOperatorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableValueAttribute</code> , See {@odf.attribute table:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableValueAttribute() {
+		TableValueAttribute attr = (TableValueAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableValueAttribute</code> , See {@odf.attribute table:value}
+	 *
+	 * @param tableValueValue   The type is <code>String</code>
+	 */
+	public void setTableValueAttribute(String tableValueValue) {
+		TableValueAttribute attr = new TableValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableValueValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-set-item}.
+	 *
+	 * @param tableValueValue  the <code>String</code> value of <code>TableValueAttribute</code>, see {@odf.attribute  table:value} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:filter-set-item}
+	 */
+	 public TableFilterSetItemElement newTableFilterSetItemElement(String tableValueValue) {
+		TableFilterSetItemElement tableFilterSetItem = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterSetItemElement.class);
+		tableFilterSetItem.setTableValueAttribute(tableValueValue);
+		this.appendChild(tableFilterSetItem);
+		return tableFilterSetItem;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterElement.java
new file mode 100644
index 0000000..0f31544
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterElement.java
@@ -0,0 +1,210 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableConditionSourceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableConditionSourceRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayDuplicatesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTargetRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:filter}.
+ *
+ */
+public class TableFilterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter");
+
+	/**
+	 * Create the instance of <code>TableFilterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:filter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableConditionSourceAttribute</code> , See {@odf.attribute table:condition-source}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableConditionSourceAttribute() {
+		TableConditionSourceAttribute attr = (TableConditionSourceAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "condition-source");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableConditionSourceAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableConditionSourceAttribute</code> , See {@odf.attribute table:condition-source}
+	 *
+	 * @param tableConditionSourceValue   The type is <code>String</code>
+	 */
+	public void setTableConditionSourceAttribute(String tableConditionSourceValue) {
+		TableConditionSourceAttribute attr = new TableConditionSourceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableConditionSourceValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableConditionSourceRangeAddressAttribute</code> , See {@odf.attribute table:condition-source-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableConditionSourceRangeAddressAttribute() {
+		TableConditionSourceRangeAddressAttribute attr = (TableConditionSourceRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "condition-source-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableConditionSourceRangeAddressAttribute</code> , See {@odf.attribute table:condition-source-range-address}
+	 *
+	 * @param tableConditionSourceRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableConditionSourceRangeAddressAttribute(String tableConditionSourceRangeAddressValue) {
+		TableConditionSourceRangeAddressAttribute attr = new TableConditionSourceRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableConditionSourceRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayDuplicatesAttribute</code> , See {@odf.attribute table:display-duplicates}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayDuplicatesAttribute() {
+		TableDisplayDuplicatesAttribute attr = (TableDisplayDuplicatesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display-duplicates");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayDuplicatesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayDuplicatesAttribute</code> , See {@odf.attribute table:display-duplicates}
+	 *
+	 * @param tableDisplayDuplicatesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayDuplicatesAttribute(Boolean tableDisplayDuplicatesValue) {
+		TableDisplayDuplicatesAttribute attr = new TableDisplayDuplicatesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayDuplicatesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTargetRangeAddressAttribute() {
+		TableTargetRangeAddressAttribute attr = (TableTargetRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "target-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * @param tableTargetRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableTargetRangeAddressAttribute(String tableTargetRangeAddressValue) {
+		TableTargetRangeAddressAttribute attr = new TableTargetRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTargetRangeAddressValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-and}.
+	 *
+	 * @return the element {@odf.element table:filter-and}
+	 */
+	public TableFilterAndElement newTableFilterAndElement() {
+		TableFilterAndElement tableFilterAnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterAndElement.class);
+		this.appendChild(tableFilterAnd);
+		return tableFilterAnd;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-condition}.
+	 *
+	 * @param tableFieldNumberValue  the <code>Integer</code> value of <code>TableFieldNumberAttribute</code>, see {@odf.attribute  table:field-number} at specification
+	 * @param tableOperatorValue  the <code>String</code> value of <code>TableOperatorAttribute</code>, see {@odf.attribute  table:operator} at specification
+	 * @param tableValueValue  the <code>String</code> value of <code>TableValueAttribute</code>, see {@odf.attribute  table:value} at specification
+	 * @return the element {@odf.element table:filter-condition}
+	 */
+	 public TableFilterConditionElement newTableFilterConditionElement(int tableFieldNumberValue, String tableOperatorValue, String tableValueValue) {
+		TableFilterConditionElement tableFilterCondition = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterConditionElement.class);
+		tableFilterCondition.setTableFieldNumberAttribute(tableFieldNumberValue);
+		tableFilterCondition.setTableOperatorAttribute(tableOperatorValue);
+		tableFilterCondition.setTableValueAttribute(tableValueValue);
+		this.appendChild(tableFilterCondition);
+		return tableFilterCondition;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-or}.
+	 *
+	 * @return the element {@odf.element table:filter-or}
+	 */
+	public TableFilterOrElement newTableFilterOrElement() {
+		TableFilterOrElement tableFilterOr = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterOrElement.class);
+		this.appendChild(tableFilterOr);
+		return tableFilterOr;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterOrElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterOrElement.java
new file mode 100644
index 0000000..2dbc04d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterOrElement.java
@@ -0,0 +1,99 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:filter-or}.
+ *
+ */
+public class TableFilterOrElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter-or");
+
+	/**
+	 * Create the instance of <code>TableFilterOrElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterOrElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:filter-or}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-and}.
+	 *
+	 * @return the element {@odf.element table:filter-and}
+	 */
+	public TableFilterAndElement newTableFilterAndElement() {
+		TableFilterAndElement tableFilterAnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterAndElement.class);
+		this.appendChild(tableFilterAnd);
+		return tableFilterAnd;
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter-condition}.
+	 *
+	 * @param tableFieldNumberValue  the <code>Integer</code> value of <code>TableFieldNumberAttribute</code>, see {@odf.attribute  table:field-number} at specification
+	 * @param tableOperatorValue  the <code>String</code> value of <code>TableOperatorAttribute</code>, see {@odf.attribute  table:operator} at specification
+	 * @param tableValueValue  the <code>String</code> value of <code>TableValueAttribute</code>, see {@odf.attribute  table:value} at specification
+	 * @return the element {@odf.element table:filter-condition}
+	 */
+	 public TableFilterConditionElement newTableFilterConditionElement(int tableFieldNumberValue, String tableOperatorValue, String tableValueValue) {
+		TableFilterConditionElement tableFilterCondition = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterConditionElement.class);
+		tableFilterCondition.setTableFieldNumberAttribute(tableFieldNumberValue);
+		tableFilterCondition.setTableOperatorAttribute(tableOperatorValue);
+		tableFilterCondition.setTableValueAttribute(tableValueValue);
+		this.appendChild(tableFilterCondition);
+		return tableFilterCondition;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterSetItemElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterSetItemElement.java
new file mode 100644
index 0000000..27aff14
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFilterSetItemElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:filter-set-item}.
+ *
+ */
+public class TableFilterSetItemElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "filter-set-item");
+
+	/**
+	 * Create the instance of <code>TableFilterSetItemElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFilterSetItemElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:filter-set-item}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableValueAttribute</code> , See {@odf.attribute table:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableValueAttribute() {
+		TableValueAttribute attr = (TableValueAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableValueAttribute</code> , See {@odf.attribute table:value}
+	 *
+	 * @param tableValueValue   The type is <code>String</code>
+	 */
+	public void setTableValueAttribute(String tableValueValue) {
+		TableValueAttribute attr = new TableValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFirstColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFirstColumnElement.java
new file mode 100644
index 0000000..d74b083
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFirstColumnElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:first-column}.
+ *
+ */
+public class TableFirstColumnElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "first-column");
+
+	/**
+	 * Create the instance of <code>TableFirstColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFirstColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:first-column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFirstRowElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFirstRowElement.java
new file mode 100644
index 0000000..1b10177
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableFirstRowElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:first-row}.
+ *
+ */
+public class TableFirstRowElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "first-row");
+
+	/**
+	 * Create the instance of <code>TableFirstRowElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableFirstRowElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:first-row}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableHelpMessageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableHelpMessageElement.java
new file mode 100644
index 0000000..cf2df07
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableHelpMessageElement.java
@@ -0,0 +1,133 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTitleAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:help-message}.
+ *
+ */
+public class TableHelpMessageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "help-message");
+
+	/**
+	 * Create the instance of <code>TableHelpMessageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableHelpMessageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:help-message}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayAttribute() {
+		TableDisplayAttribute attr = (TableDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayAttribute.DEFAULT_VALUE_FALSE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @param tableDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayAttribute(Boolean tableDisplayValue) {
+		TableDisplayAttribute attr = new TableDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTitleAttribute</code> , See {@odf.attribute table:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTitleAttribute() {
+		TableTitleAttribute attr = (TableTitleAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTitleAttribute</code> , See {@odf.attribute table:title}
+	 *
+	 * @param tableTitleValue   The type is <code>String</code>
+	 */
+	public void setTableTitleAttribute(String tableTitleValue) {
+		TableTitleAttribute attr = new TableTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTitleValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableHighlightedRangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableHighlightedRangeElement.java
new file mode 100644
index 0000000..ec17c81
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableHighlightedRangeElement.java
@@ -0,0 +1,171 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableContainsErrorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDirectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMarkedInvalidAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:highlighted-range}.
+ *
+ */
+public class TableHighlightedRangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "highlighted-range");
+
+	/**
+	 * Create the instance of <code>TableHighlightedRangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableHighlightedRangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:highlighted-range}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAddressAttribute() {
+		TableCellRangeAddressAttribute attr = (TableCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @param tableCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAddressAttribute(String tableCellRangeAddressValue) {
+		TableCellRangeAddressAttribute attr = new TableCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableContainsErrorAttribute</code> , See {@odf.attribute table:contains-error}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableContainsErrorAttribute() {
+		TableContainsErrorAttribute attr = (TableContainsErrorAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "contains-error");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableContainsErrorAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableContainsErrorAttribute</code> , See {@odf.attribute table:contains-error}
+	 *
+	 * @param tableContainsErrorValue   The type is <code>Boolean</code>
+	 */
+	public void setTableContainsErrorAttribute(Boolean tableContainsErrorValue) {
+		TableContainsErrorAttribute attr = new TableContainsErrorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableContainsErrorValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDirectionAttribute</code> , See {@odf.attribute table:direction}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDirectionAttribute() {
+		TableDirectionAttribute attr = (TableDirectionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "direction");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDirectionAttribute</code> , See {@odf.attribute table:direction}
+	 *
+	 * @param tableDirectionValue   The type is <code>String</code>
+	 */
+	public void setTableDirectionAttribute(String tableDirectionValue) {
+		TableDirectionAttribute attr = new TableDirectionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDirectionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMarkedInvalidAttribute</code> , See {@odf.attribute table:marked-invalid}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableMarkedInvalidAttribute() {
+		TableMarkedInvalidAttribute attr = (TableMarkedInvalidAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "marked-invalid");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMarkedInvalidAttribute</code> , See {@odf.attribute table:marked-invalid}
+	 *
+	 * @param tableMarkedInvalidValue   The type is <code>Boolean</code>
+	 */
+	public void setTableMarkedInvalidAttribute(Boolean tableMarkedInvalidValue) {
+		TableMarkedInvalidAttribute attr = new TableMarkedInvalidAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableMarkedInvalidValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableInsertionCutOffElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableInsertionCutOffElement.java
new file mode 100644
index 0000000..dea6884
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableInsertionCutOffElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePositionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:insertion-cut-off}.
+ *
+ */
+public class TableInsertionCutOffElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "insertion-cut-off");
+
+	/**
+	 * Create the instance of <code>TableInsertionCutOffElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableInsertionCutOffElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:insertion-cut-off}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTablePositionAttribute() {
+		TablePositionAttribute attr = (TablePositionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * @param tablePositionValue   The type is <code>Integer</code>
+	 */
+	public void setTablePositionAttribute(Integer tablePositionValue) {
+		TablePositionAttribute attr = new TablePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tablePositionValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableInsertionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableInsertionElement.java
new file mode 100644
index 0000000..868d823
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableInsertionElement.java
@@ -0,0 +1,288 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAcceptanceStateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCountAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRejectingChangeIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:insertion}.
+ *
+ */
+public class TableInsertionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "insertion");
+
+	/**
+	 * Create the instance of <code>TableInsertionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableInsertionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:insertion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableAcceptanceStateAttribute() {
+		TableAcceptanceStateAttribute attr = (TableAcceptanceStateAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "acceptance-state");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableAcceptanceStateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @param tableAcceptanceStateValue   The type is <code>String</code>
+	 */
+	public void setTableAcceptanceStateAttribute(String tableAcceptanceStateValue) {
+		TableAcceptanceStateAttribute attr = new TableAcceptanceStateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableAcceptanceStateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCountAttribute</code> , See {@odf.attribute table:count}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableCountAttribute() {
+		TableCountAttribute attr = (TableCountAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "count");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableCountAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCountAttribute</code> , See {@odf.attribute table:count}
+	 *
+	 * @param tableCountValue   The type is <code>Integer</code>
+	 */
+	public void setTableCountAttribute(Integer tableCountValue) {
+		TableCountAttribute attr = new TableCountAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableCountValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTablePositionAttribute() {
+		TablePositionAttribute attr = (TablePositionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * @param tablePositionValue   The type is <code>Integer</code>
+	 */
+	public void setTablePositionAttribute(Integer tablePositionValue) {
+		TablePositionAttribute attr = new TablePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tablePositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRejectingChangeIdAttribute() {
+		TableRejectingChangeIdAttribute attr = (TableRejectingChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "rejecting-change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @param tableRejectingChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTableRejectingChangeIdAttribute(String tableRejectingChangeIdValue) {
+		TableRejectingChangeIdAttribute attr = new TableRejectingChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRejectingChangeIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableTableAttribute() {
+		TableTableAttribute attr = (TableTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @param tableTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableTableAttribute(Integer tableTableValue) {
+		TableTableAttribute attr = new TableTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableTableValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTypeAttribute</code> , See {@odf.attribute table:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTypeAttribute() {
+		TableTypeAttribute attr = (TableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTypeAttribute</code> , See {@odf.attribute table:type}
+	 *
+	 * @param tableTypeValue   The type is <code>String</code>
+	 */
+	public void setTableTypeAttribute(String tableTypeValue) {
+		TableTypeAttribute attr = new TableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:deletions}.
+	 *
+	 * @return the element {@odf.element table:deletions}
+	 */
+	public TableDeletionsElement newTableDeletionsElement() {
+		TableDeletionsElement tableDeletions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDeletionsElement.class);
+		this.appendChild(tableDeletions);
+		return tableDeletions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dependencies}.
+	 *
+	 * @return the element {@odf.element table:dependencies}
+	 */
+	public TableDependenciesElement newTableDependenciesElement() {
+		TableDependenciesElement tableDependencies = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDependenciesElement.class);
+		this.appendChild(tableDependencies);
+		return tableDependencies;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableIterationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableIterationElement.java
new file mode 100644
index 0000000..f2c817b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableIterationElement.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableMaximumDifferenceAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStatusAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStepsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:iteration}.
+ *
+ */
+public class TableIterationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "iteration");
+
+	/**
+	 * Create the instance of <code>TableIterationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableIterationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:iteration}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableMaximumDifferenceAttribute</code> , See {@odf.attribute table:maximum-difference}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getTableMaximumDifferenceAttribute() {
+		TableMaximumDifferenceAttribute attr = (TableMaximumDifferenceAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "maximum-difference");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return Double.valueOf(TableMaximumDifferenceAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableMaximumDifferenceAttribute</code> , See {@odf.attribute table:maximum-difference}
+	 *
+	 * @param tableMaximumDifferenceValue   The type is <code>Double</code>
+	 */
+	public void setTableMaximumDifferenceAttribute(Double tableMaximumDifferenceValue) {
+		TableMaximumDifferenceAttribute attr = new TableMaximumDifferenceAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(tableMaximumDifferenceValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStatusAttribute</code> , See {@odf.attribute table:status}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStatusAttribute() {
+		TableStatusAttribute attr = (TableStatusAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "status");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableStatusAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStatusAttribute</code> , See {@odf.attribute table:status}
+	 *
+	 * @param tableStatusValue   The type is <code>String</code>
+	 */
+	public void setTableStatusAttribute(String tableStatusValue) {
+		TableStatusAttribute attr = new TableStatusAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStatusValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStepsAttribute</code> , See {@odf.attribute table:steps}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStepsAttribute() {
+		TableStepsAttribute attr = (TableStepsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "steps");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableStepsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStepsAttribute</code> , See {@odf.attribute table:steps}
+	 *
+	 * @param tableStepsValue   The type is <code>Integer</code>
+	 */
+	public void setTableStepsAttribute(Integer tableStepsValue) {
+		TableStepsAttribute attr = new TableStepsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStepsValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLabelRangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLabelRangeElement.java
new file mode 100644
index 0000000..ebc264d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLabelRangeElement.java
@@ -0,0 +1,152 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDataCellRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLabelCellRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOrientationAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:label-range}.
+ *
+ */
+public class TableLabelRangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "label-range");
+
+	/**
+	 * Create the instance of <code>TableLabelRangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableLabelRangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:label-range}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDataCellRangeAddressAttribute</code> , See {@odf.attribute table:data-cell-range-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDataCellRangeAddressAttribute() {
+		TableDataCellRangeAddressAttribute attr = (TableDataCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "data-cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDataCellRangeAddressAttribute</code> , See {@odf.attribute table:data-cell-range-address}
+	 *
+	 * @param tableDataCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableDataCellRangeAddressAttribute(String tableDataCellRangeAddressValue) {
+		TableDataCellRangeAddressAttribute attr = new TableDataCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDataCellRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLabelCellRangeAddressAttribute</code> , See {@odf.attribute table:label-cell-range-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableLabelCellRangeAddressAttribute() {
+		TableLabelCellRangeAddressAttribute attr = (TableLabelCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "label-cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLabelCellRangeAddressAttribute</code> , See {@odf.attribute table:label-cell-range-address}
+	 *
+	 * @param tableLabelCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableLabelCellRangeAddressAttribute(String tableLabelCellRangeAddressValue) {
+		TableLabelCellRangeAddressAttribute attr = new TableLabelCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableLabelCellRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOrientationAttribute</code> , See {@odf.attribute table:orientation}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOrientationAttribute() {
+		TableOrientationAttribute attr = (TableOrientationAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "orientation");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOrientationAttribute</code> , See {@odf.attribute table:orientation}
+	 *
+	 * @param tableOrientationValue   The type is <code>String</code>
+	 */
+	public void setTableOrientationAttribute(String tableOrientationValue) {
+		TableOrientationAttribute attr = new TableOrientationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOrientationValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLabelRangesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLabelRangesElement.java
new file mode 100644
index 0000000..1bd1fd4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLabelRangesElement.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:label-ranges}.
+ *
+ */
+public class TableLabelRangesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "label-ranges");
+
+	/**
+	 * Create the instance of <code>TableLabelRangesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableLabelRangesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:label-ranges}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:label-range}.
+	 *
+	 * @param tableDataCellRangeAddressValue  the <code>String</code> value of <code>TableDataCellRangeAddressAttribute</code>, see {@odf.attribute  table:data-cell-range-address} at specification
+	 * @param tableLabelCellRangeAddressValue  the <code>String</code> value of <code>TableLabelCellRangeAddressAttribute</code>, see {@odf.attribute  table:label-cell-range-address} at specification
+	 * @param tableOrientationValue  the <code>String</code> value of <code>TableOrientationAttribute</code>, see {@odf.attribute  table:orientation} at specification
+	 * @return the element {@odf.element table:label-range}
+	 */
+	 public TableLabelRangeElement newTableLabelRangeElement(String tableDataCellRangeAddressValue, String tableLabelCellRangeAddressValue, String tableOrientationValue) {
+		TableLabelRangeElement tableLabelRange = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLabelRangeElement.class);
+		tableLabelRange.setTableDataCellRangeAddressAttribute(tableDataCellRangeAddressValue);
+		tableLabelRange.setTableLabelCellRangeAddressAttribute(tableLabelCellRangeAddressValue);
+		tableLabelRange.setTableOrientationAttribute(tableOrientationValue);
+		this.appendChild(tableLabelRange);
+		return tableLabelRange;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLastColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLastColumnElement.java
new file mode 100644
index 0000000..6ba5427
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLastColumnElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:last-column}.
+ *
+ */
+public class TableLastColumnElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "last-column");
+
+	/**
+	 * Create the instance of <code>TableLastColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableLastColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:last-column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLastRowElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLastRowElement.java
new file mode 100644
index 0000000..fbb1f27
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableLastRowElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:last-row}.
+ *
+ */
+public class TableLastRowElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "last-row");
+
+	/**
+	 * Create the instance of <code>TableLastRowElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableLastRowElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:last-row}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableMovementCutOffElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableMovementCutOffElement.java
new file mode 100644
index 0000000..dcc4545
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableMovementCutOffElement.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartPositionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:movement-cut-off}.
+ *
+ */
+public class TableMovementCutOffElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "movement-cut-off");
+
+	/**
+	 * Create the instance of <code>TableMovementCutOffElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableMovementCutOffElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:movement-cut-off}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndPositionAttribute</code> , See {@odf.attribute table:end-position}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndPositionAttribute() {
+		TableEndPositionAttribute attr = (TableEndPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndPositionAttribute</code> , See {@odf.attribute table:end-position}
+	 *
+	 * @param tableEndPositionValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndPositionAttribute(Integer tableEndPositionValue) {
+		TableEndPositionAttribute attr = new TableEndPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndPositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTablePositionAttribute() {
+		TablePositionAttribute attr = (TablePositionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePositionAttribute</code> , See {@odf.attribute table:position}
+	 *
+	 * @param tablePositionValue   The type is <code>Integer</code>
+	 */
+	public void setTablePositionAttribute(Integer tablePositionValue) {
+		TablePositionAttribute attr = new TablePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tablePositionValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartPositionAttribute</code> , See {@odf.attribute table:start-position}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartPositionAttribute() {
+		TableStartPositionAttribute attr = (TableStartPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-position");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartPositionAttribute</code> , See {@odf.attribute table:start-position}
+	 *
+	 * @param tableStartPositionValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartPositionAttribute(Integer tableStartPositionValue) {
+		TableStartPositionAttribute attr = new TableStartPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartPositionValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableMovementElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableMovementElement.java
new file mode 100644
index 0000000..8f63eb9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableMovementElement.java
@@ -0,0 +1,210 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAcceptanceStateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRejectingChangeIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:movement}.
+ *
+ */
+public class TableMovementElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "movement");
+
+	/**
+	 * Create the instance of <code>TableMovementElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableMovementElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:movement}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableAcceptanceStateAttribute() {
+		TableAcceptanceStateAttribute attr = (TableAcceptanceStateAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "acceptance-state");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableAcceptanceStateAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAcceptanceStateAttribute</code> , See {@odf.attribute table:acceptance-state}
+	 *
+	 * @param tableAcceptanceStateValue   The type is <code>String</code>
+	 */
+	public void setTableAcceptanceStateAttribute(String tableAcceptanceStateValue) {
+		TableAcceptanceStateAttribute attr = new TableAcceptanceStateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableAcceptanceStateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRejectingChangeIdAttribute() {
+		TableRejectingChangeIdAttribute attr = (TableRejectingChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "rejecting-change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRejectingChangeIdAttribute</code> , See {@odf.attribute table:rejecting-change-id}
+	 *
+	 * @param tableRejectingChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTableRejectingChangeIdAttribute(String tableRejectingChangeIdValue) {
+		TableRejectingChangeIdAttribute attr = new TableRejectingChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRejectingChangeIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:deletions}.
+	 *
+	 * @return the element {@odf.element table:deletions}
+	 */
+	public TableDeletionsElement newTableDeletionsElement() {
+		TableDeletionsElement tableDeletions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDeletionsElement.class);
+		this.appendChild(tableDeletions);
+		return tableDeletions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:dependencies}.
+	 *
+	 * @return the element {@odf.element table:dependencies}
+	 */
+	public TableDependenciesElement newTableDependenciesElement() {
+		TableDependenciesElement tableDependencies = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDependenciesElement.class);
+		this.appendChild(tableDependencies);
+		return tableDependencies;
+	}
+
+	/**
+	 * Create child element {@odf.element table:source-range-address}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:source-range-address}
+	 */
+	public TableSourceRangeAddressElement newTableSourceRangeAddressElement() {
+		TableSourceRangeAddressElement tableSourceRangeAddress = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSourceRangeAddressElement.class);
+		this.appendChild(tableSourceRangeAddress);
+		return tableSourceRangeAddress;
+	}
+
+	/**
+	 * Create child element {@odf.element table:target-range-address}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:target-range-address}
+	 */
+	public TableTargetRangeAddressElement newTableTargetRangeAddressElement() {
+		TableTargetRangeAddressElement tableTargetRangeAddress = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTargetRangeAddressElement.class);
+		this.appendChild(tableTargetRangeAddress);
+		return tableTargetRangeAddress;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedExpressionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedExpressionElement.java
new file mode 100644
index 0000000..138947b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedExpressionElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBaseCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableExpressionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:named-expression}.
+ *
+ */
+public class TableNamedExpressionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "named-expression");
+
+	/**
+	 * Create the instance of <code>TableNamedExpressionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableNamedExpressionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:named-expression}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBaseCellAddressAttribute</code> , See {@odf.attribute table:base-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableBaseCellAddressAttribute() {
+		TableBaseCellAddressAttribute attr = (TableBaseCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "base-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBaseCellAddressAttribute</code> , See {@odf.attribute table:base-cell-address}
+	 *
+	 * @param tableBaseCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableBaseCellAddressAttribute(String tableBaseCellAddressValue) {
+		TableBaseCellAddressAttribute attr = new TableBaseCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableBaseCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableExpressionAttribute</code> , See {@odf.attribute table:expression}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableExpressionAttribute() {
+		TableExpressionAttribute attr = (TableExpressionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "expression");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableExpressionAttribute</code> , See {@odf.attribute table:expression}
+	 *
+	 * @param tableExpressionValue   The type is <code>String</code>
+	 */
+	public void setTableExpressionAttribute(String tableExpressionValue) {
+		TableExpressionAttribute attr = new TableExpressionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableExpressionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedExpressionsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedExpressionsElement.java
new file mode 100644
index 0000000..d66d03c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedExpressionsElement.java
@@ -0,0 +1,101 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:named-expressions}.
+ *
+ */
+public class TableNamedExpressionsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "named-expressions");
+
+	/**
+	 * Create the instance of <code>TableNamedExpressionsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableNamedExpressionsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:named-expressions}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expression}.
+	 *
+	 * @param tableExpressionValue  the <code>String</code> value of <code>TableExpressionAttribute</code>, see {@odf.attribute  table:expression} at specification
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @return the element {@odf.element table:named-expression}
+	 */
+	 public TableNamedExpressionElement newTableNamedExpressionElement(String tableExpressionValue, String tableNameValue) {
+		TableNamedExpressionElement tableNamedExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionElement.class);
+		tableNamedExpression.setTableExpressionAttribute(tableExpressionValue);
+		tableNamedExpression.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableNamedExpression);
+		return tableNamedExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-range}.
+	 *
+	 * @param tableCellRangeAddressValue  the <code>String</code> value of <code>TableCellRangeAddressAttribute</code>, see {@odf.attribute  table:cell-range-address} at specification
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @return the element {@odf.element table:named-range}
+	 */
+	 public TableNamedRangeElement newTableNamedRangeElement(String tableCellRangeAddressValue, String tableNameValue) {
+		TableNamedRangeElement tableNamedRange = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedRangeElement.class);
+		tableNamedRange.setTableCellRangeAddressAttribute(tableCellRangeAddressValue);
+		tableNamedRange.setTableNameAttribute(tableNameValue);
+		this.appendChild(tableNamedRange);
+		return tableNamedRange;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedRangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedRangeElement.java
new file mode 100644
index 0000000..2c414c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNamedRangeElement.java
@@ -0,0 +1,175 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBaseCellAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRangeUsableAsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:named-range}.
+ *
+ */
+public class TableNamedRangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "named-range");
+
+	/**
+	 * Create the instance of <code>TableNamedRangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableNamedRangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:named-range}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBaseCellAddressAttribute</code> , See {@odf.attribute table:base-cell-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableBaseCellAddressAttribute() {
+		TableBaseCellAddressAttribute attr = (TableBaseCellAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "base-cell-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBaseCellAddressAttribute</code> , See {@odf.attribute table:base-cell-address}
+	 *
+	 * @param tableBaseCellAddressValue   The type is <code>String</code>
+	 */
+	public void setTableBaseCellAddressAttribute(String tableBaseCellAddressValue) {
+		TableBaseCellAddressAttribute attr = new TableBaseCellAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableBaseCellAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAddressAttribute() {
+		TableCellRangeAddressAttribute attr = (TableCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @param tableCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAddressAttribute(String tableCellRangeAddressValue) {
+		TableCellRangeAddressAttribute attr = new TableCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRangeUsableAsAttribute</code> , See {@odf.attribute table:range-usable-as}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRangeUsableAsAttribute() {
+		TableRangeUsableAsAttribute attr = (TableRangeUsableAsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "range-usable-as");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableRangeUsableAsAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRangeUsableAsAttribute</code> , See {@odf.attribute table:range-usable-as}
+	 *
+	 * @param tableRangeUsableAsValue   The type is <code>String</code>
+	 */
+	public void setTableRangeUsableAsAttribute(String tableRangeUsableAsValue) {
+		TableRangeUsableAsAttribute attr = new TableRangeUsableAsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRangeUsableAsValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNullDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNullDateElement.java
new file mode 100644
index 0000000..cfe5f06
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableNullDateElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableValueTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:null-date}.
+ *
+ */
+public class TableNullDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "null-date");
+
+	/**
+	 * Create the instance of <code>TableNullDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableNullDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:null-date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDateValueAttribute</code> , See {@odf.attribute table:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDateValueAttribute() {
+		TableDateValueAttribute attr = (TableDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableDateValueAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDateValueAttribute</code> , See {@odf.attribute table:date-value}
+	 *
+	 * @param tableDateValueValue   The type is <code>String</code>
+	 */
+	public void setTableDateValueAttribute(String tableDateValueValue) {
+		TableDateValueAttribute attr = new TableDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableValueTypeAttribute</code> , See {@odf.attribute table:value-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableValueTypeAttribute() {
+		TableValueTypeAttribute attr = (TableValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableValueTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableValueTypeAttribute</code> , See {@odf.attribute table:value-type}
+	 *
+	 * @param tableValueTypeValue   The type is <code>String</code>
+	 */
+	public void setTableValueTypeAttribute(String tableValueTypeValue) {
+		TableValueTypeAttribute attr = new TableValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableValueTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOddColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOddColumnsElement.java
new file mode 100644
index 0000000..e517cb0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOddColumnsElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:odd-columns}.
+ *
+ */
+public class TableOddColumnsElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "odd-columns");
+
+	/**
+	 * Create the instance of <code>TableOddColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableOddColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:odd-columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOddRowsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOddRowsElement.java
new file mode 100644
index 0000000..31f31d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOddRowsElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableParagraphStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:odd-rows}.
+ *
+ */
+public class TableOddRowsElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "odd-rows");
+
+	/**
+	 * Create the instance of <code>TableOddRowsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableOddRowsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:odd-rows}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableParagraphStyleNameAttribute() {
+		TableParagraphStyleNameAttribute attr = (TableParagraphStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "paragraph-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableParagraphStyleNameAttribute</code> , See {@odf.attribute table:paragraph-style-name}
+	 *
+	 * @param tableParagraphStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableParagraphStyleNameAttribute(String tableParagraphStyleNameValue) {
+		TableParagraphStyleNameAttribute attr = new TableParagraphStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableParagraphStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOperationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOperationElement.java
new file mode 100644
index 0000000..937bfa3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableOperationElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIndexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:operation}.
+ *
+ */
+public class TableOperationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "operation");
+
+	/**
+	 * Create the instance of <code>TableOperationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableOperationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:operation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIndexAttribute</code> , See {@odf.attribute table:index}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableIndexAttribute() {
+		TableIndexAttribute attr = (TableIndexAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "index");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIndexAttribute</code> , See {@odf.attribute table:index}
+	 *
+	 * @param tableIndexValue   The type is <code>Integer</code>
+	 */
+	public void setTableIndexAttribute(Integer tableIndexValue) {
+		TableIndexAttribute attr = new TableIndexAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableIndexValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TablePreviousElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TablePreviousElement.java
new file mode 100644
index 0000000..7e728f9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TablePreviousElement.java
@@ -0,0 +1,113 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:previous}.
+ *
+ */
+public class TablePreviousElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "previous");
+
+	/**
+	 * Create the instance of <code>TablePreviousElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TablePreviousElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:previous}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableIdAttribute() {
+		TableIdAttribute attr = (TableIdAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIdAttribute</code> , See {@odf.attribute table:id}
+	 *
+	 * @param tableIdValue   The type is <code>String</code>
+	 */
+	public void setTableIdAttribute(String tableIdValue) {
+		TableIdAttribute attr = new TableIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:change-track-table-cell}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:change-track-table-cell}
+	 */
+	 public TableChangeTrackTableCellElement newTableChangeTrackTableCellElement(double officeValueValue, String officeValueTypeValue) {
+		TableChangeTrackTableCellElement tableChangeTrackTableCell = ((OdfFileDom) this.ownerDocument).newOdfElement(TableChangeTrackTableCellElement.class);
+		tableChangeTrackTableCell.setOfficeValueAttribute(officeValueValue);
+		tableChangeTrackTableCell.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(tableChangeTrackTableCell);
+		return tableChangeTrackTableCell;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableScenarioElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableScenarioElement.java
new file mode 100644
index 0000000..ce29995
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableScenarioElement.java
@@ -0,0 +1,300 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBorderColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCommentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCopyBackAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCopyFormulasAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCopyStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIsActiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableScenarioRangesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:scenario}.
+ *
+ */
+public class TableScenarioElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "scenario");
+
+	/**
+	 * Create the instance of <code>TableScenarioElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableScenarioElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:scenario}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBorderColorAttribute</code> , See {@odf.attribute table:border-color}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableBorderColorAttribute() {
+		TableBorderColorAttribute attr = (TableBorderColorAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "border-color");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBorderColorAttribute</code> , See {@odf.attribute table:border-color}
+	 *
+	 * @param tableBorderColorValue   The type is <code>String</code>
+	 */
+	public void setTableBorderColorAttribute(String tableBorderColorValue) {
+		TableBorderColorAttribute attr = new TableBorderColorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableBorderColorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCommentAttribute</code> , See {@odf.attribute table:comment}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCommentAttribute() {
+		TableCommentAttribute attr = (TableCommentAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "comment");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCommentAttribute</code> , See {@odf.attribute table:comment}
+	 *
+	 * @param tableCommentValue   The type is <code>String</code>
+	 */
+	public void setTableCommentAttribute(String tableCommentValue) {
+		TableCommentAttribute attr = new TableCommentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCommentValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCopyBackAttribute</code> , See {@odf.attribute table:copy-back}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableCopyBackAttribute() {
+		TableCopyBackAttribute attr = (TableCopyBackAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "copy-back");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableCopyBackAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCopyBackAttribute</code> , See {@odf.attribute table:copy-back}
+	 *
+	 * @param tableCopyBackValue   The type is <code>Boolean</code>
+	 */
+	public void setTableCopyBackAttribute(Boolean tableCopyBackValue) {
+		TableCopyBackAttribute attr = new TableCopyBackAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableCopyBackValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCopyFormulasAttribute</code> , See {@odf.attribute table:copy-formulas}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableCopyFormulasAttribute() {
+		TableCopyFormulasAttribute attr = (TableCopyFormulasAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "copy-formulas");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableCopyFormulasAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCopyFormulasAttribute</code> , See {@odf.attribute table:copy-formulas}
+	 *
+	 * @param tableCopyFormulasValue   The type is <code>Boolean</code>
+	 */
+	public void setTableCopyFormulasAttribute(Boolean tableCopyFormulasValue) {
+		TableCopyFormulasAttribute attr = new TableCopyFormulasAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableCopyFormulasValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCopyStylesAttribute</code> , See {@odf.attribute table:copy-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableCopyStylesAttribute() {
+		TableCopyStylesAttribute attr = (TableCopyStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "copy-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableCopyStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCopyStylesAttribute</code> , See {@odf.attribute table:copy-styles}
+	 *
+	 * @param tableCopyStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableCopyStylesAttribute(Boolean tableCopyStylesValue) {
+		TableCopyStylesAttribute attr = new TableCopyStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableCopyStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayBorderAttribute</code> , See {@odf.attribute table:display-border}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayBorderAttribute() {
+		TableDisplayBorderAttribute attr = (TableDisplayBorderAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display-border");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayBorderAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayBorderAttribute</code> , See {@odf.attribute table:display-border}
+	 *
+	 * @param tableDisplayBorderValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayBorderAttribute(Boolean tableDisplayBorderValue) {
+		TableDisplayBorderAttribute attr = new TableDisplayBorderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayBorderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIsActiveAttribute</code> , See {@odf.attribute table:is-active}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableIsActiveAttribute() {
+		TableIsActiveAttribute attr = (TableIsActiveAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "is-active");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIsActiveAttribute</code> , See {@odf.attribute table:is-active}
+	 *
+	 * @param tableIsActiveValue   The type is <code>Boolean</code>
+	 */
+	public void setTableIsActiveAttribute(Boolean tableIsActiveValue) {
+		TableIsActiveAttribute attr = new TableIsActiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableIsActiveValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectedAttribute</code> , See {@odf.attribute table:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableProtectedAttribute() {
+		TableProtectedAttribute attr = (TableProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableProtectedAttribute</code> , See {@odf.attribute table:protected}
+	 *
+	 * @param tableProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTableProtectedAttribute(Boolean tableProtectedValue) {
+		TableProtectedAttribute attr = new TableProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableScenarioRangesAttribute</code> , See {@odf.attribute table:scenario-ranges}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableScenarioRangesAttribute() {
+		TableScenarioRangesAttribute attr = (TableScenarioRangesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "scenario-ranges");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableScenarioRangesAttribute</code> , See {@odf.attribute table:scenario-ranges}
+	 *
+	 * @param tableScenarioRangesValue   The type is <code>String</code>
+	 */
+	public void setTableScenarioRangesAttribute(String tableScenarioRangesValue) {
+		TableScenarioRangesAttribute attr = new TableScenarioRangesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableScenarioRangesValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableShapesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableShapesElement.java
new file mode 100644
index 0000000..f643361
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableShapesElement.java
@@ -0,0 +1,329 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:shapes}.
+ *
+ */
+public class TableShapesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "shapes");
+
+	/**
+	 * Create the instance of <code>TableShapesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableShapesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:shapes}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortByElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortByElement.java
new file mode 100644
index 0000000..d1aef9b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortByElement.java
@@ -0,0 +1,148 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDataTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFieldNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOrderAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:sort-by}.
+ *
+ */
+public class TableSortByElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "sort-by");
+
+	/**
+	 * Create the instance of <code>TableSortByElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSortByElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:sort-by}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDataTypeAttribute</code> , See {@odf.attribute table:data-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDataTypeAttribute() {
+		TableDataTypeAttribute attr = (TableDataTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "data-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableDataTypeAttribute.DEFAULT_VALUE_AUTOMATIC;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDataTypeAttribute</code> , See {@odf.attribute table:data-type}
+	 *
+	 * @param tableDataTypeValue   The type is <code>String</code>
+	 */
+	public void setTableDataTypeAttribute(String tableDataTypeValue) {
+		TableDataTypeAttribute attr = new TableDataTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDataTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFieldNumberAttribute</code> , See {@odf.attribute table:field-number}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableFieldNumberAttribute() {
+		TableFieldNumberAttribute attr = (TableFieldNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "field-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFieldNumberAttribute</code> , See {@odf.attribute table:field-number}
+	 *
+	 * @param tableFieldNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTableFieldNumberAttribute(Integer tableFieldNumberValue) {
+		TableFieldNumberAttribute attr = new TableFieldNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableFieldNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOrderAttribute</code> , See {@odf.attribute table:order}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOrderAttribute() {
+		TableOrderAttribute attr = (TableOrderAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "order");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableOrderAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOrderAttribute</code> , See {@odf.attribute table:order}
+	 *
+	 * @param tableOrderValue   The type is <code>String</code>
+	 */
+	public void setTableOrderAttribute(String tableOrderValue) {
+		TableOrderAttribute attr = new TableOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOrderValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortElement.java
new file mode 100644
index 0000000..c939df3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortElement.java
@@ -0,0 +1,311 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBindStylesToContentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCaseSensitiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEmbeddedNumberBehaviorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTargetRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:sort}.
+ *
+ */
+public class TableSortElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "sort");
+
+	/**
+	 * Create the instance of <code>TableSortElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSortElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:sort}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableAlgorithmAttribute</code> , See {@odf.attribute table:algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableAlgorithmAttribute() {
+		TableAlgorithmAttribute attr = (TableAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableAlgorithmAttribute</code> , See {@odf.attribute table:algorithm}
+	 *
+	 * @param tableAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTableAlgorithmAttribute(String tableAlgorithmValue) {
+		TableAlgorithmAttribute attr = new TableAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBindStylesToContentAttribute</code> , See {@odf.attribute table:bind-styles-to-content}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableBindStylesToContentAttribute() {
+		TableBindStylesToContentAttribute attr = (TableBindStylesToContentAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "bind-styles-to-content");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableBindStylesToContentAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBindStylesToContentAttribute</code> , See {@odf.attribute table:bind-styles-to-content}
+	 *
+	 * @param tableBindStylesToContentValue   The type is <code>Boolean</code>
+	 */
+	public void setTableBindStylesToContentAttribute(Boolean tableBindStylesToContentValue) {
+		TableBindStylesToContentAttribute attr = new TableBindStylesToContentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableBindStylesToContentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCaseSensitiveAttribute() {
+		TableCaseSensitiveAttribute attr = (TableCaseSensitiveAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "case-sensitive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableCaseSensitiveAttribute.DEFAULT_VALUE_FALSE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @param tableCaseSensitiveValue   The type is <code>String</code>
+	 */
+	public void setTableCaseSensitiveAttribute(String tableCaseSensitiveValue) {
+		TableCaseSensitiveAttribute attr = new TableCaseSensitiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCaseSensitiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCountryAttribute</code> , See {@odf.attribute table:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCountryAttribute() {
+		TableCountryAttribute attr = (TableCountryAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCountryAttribute</code> , See {@odf.attribute table:country}
+	 *
+	 * @param tableCountryValue   The type is <code>String</code>
+	 */
+	public void setTableCountryAttribute(String tableCountryValue) {
+		TableCountryAttribute attr = new TableCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEmbeddedNumberBehaviorAttribute</code> , See {@odf.attribute table:embedded-number-behavior}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableEmbeddedNumberBehaviorAttribute() {
+		TableEmbeddedNumberBehaviorAttribute attr = (TableEmbeddedNumberBehaviorAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "embedded-number-behavior");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableEmbeddedNumberBehaviorAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEmbeddedNumberBehaviorAttribute</code> , See {@odf.attribute table:embedded-number-behavior}
+	 *
+	 * @param tableEmbeddedNumberBehaviorValue   The type is <code>String</code>
+	 */
+	public void setTableEmbeddedNumberBehaviorAttribute(String tableEmbeddedNumberBehaviorValue) {
+		TableEmbeddedNumberBehaviorAttribute attr = new TableEmbeddedNumberBehaviorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableEmbeddedNumberBehaviorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLanguageAttribute</code> , See {@odf.attribute table:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableLanguageAttribute() {
+		TableLanguageAttribute attr = (TableLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLanguageAttribute</code> , See {@odf.attribute table:language}
+	 *
+	 * @param tableLanguageValue   The type is <code>String</code>
+	 */
+	public void setTableLanguageAttribute(String tableLanguageValue) {
+		TableLanguageAttribute attr = new TableLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRfcLanguageTagAttribute</code> , See {@odf.attribute table:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRfcLanguageTagAttribute() {
+		TableRfcLanguageTagAttribute attr = (TableRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRfcLanguageTagAttribute</code> , See {@odf.attribute table:rfc-language-tag}
+	 *
+	 * @param tableRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setTableRfcLanguageTagAttribute(String tableRfcLanguageTagValue) {
+		TableRfcLanguageTagAttribute attr = new TableRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableScriptAttribute</code> , See {@odf.attribute table:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableScriptAttribute() {
+		TableScriptAttribute attr = (TableScriptAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableScriptAttribute</code> , See {@odf.attribute table:script}
+	 *
+	 * @param tableScriptValue   The type is <code>String</code>
+	 */
+	public void setTableScriptAttribute(String tableScriptValue) {
+		TableScriptAttribute attr = new TableScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTargetRangeAddressAttribute() {
+		TableTargetRangeAddressAttribute attr = (TableTargetRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "target-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTargetRangeAddressAttribute</code> , See {@odf.attribute table:target-range-address}
+	 *
+	 * @param tableTargetRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableTargetRangeAddressAttribute(String tableTargetRangeAddressValue) {
+		TableTargetRangeAddressAttribute attr = new TableTargetRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTargetRangeAddressValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:sort-by}.
+	 *
+	 * @param tableFieldNumberValue  the <code>Integer</code> value of <code>TableFieldNumberAttribute</code>, see {@odf.attribute  table:field-number} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:sort-by}
+	 */
+	 public TableSortByElement newTableSortByElement(int tableFieldNumberValue) {
+		TableSortByElement tableSortBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSortByElement.class);
+		tableSortBy.setTableFieldNumberAttribute(tableFieldNumberValue);
+		this.appendChild(tableSortBy);
+		return tableSortBy;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortGroupsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortGroupsElement.java
new file mode 100644
index 0000000..a75b747
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSortGroupsElement.java
@@ -0,0 +1,121 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDataTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableOrderAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:sort-groups}.
+ *
+ */
+public class TableSortGroupsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "sort-groups");
+
+	/**
+	 * Create the instance of <code>TableSortGroupsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSortGroupsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:sort-groups}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDataTypeAttribute</code> , See {@odf.attribute table:data-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDataTypeAttribute() {
+		TableDataTypeAttribute attr = (TableDataTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "data-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableDataTypeAttribute.DEFAULT_VALUE_AUTOMATIC;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDataTypeAttribute</code> , See {@odf.attribute table:data-type}
+	 *
+	 * @param tableDataTypeValue   The type is <code>String</code>
+	 */
+	public void setTableDataTypeAttribute(String tableDataTypeValue) {
+		TableDataTypeAttribute attr = new TableDataTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDataTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableOrderAttribute</code> , See {@odf.attribute table:order}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableOrderAttribute() {
+		TableOrderAttribute attr = (TableOrderAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "order");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableOrderAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableOrderAttribute</code> , See {@odf.attribute table:order}
+	 *
+	 * @param tableOrderValue   The type is <code>String</code>
+	 */
+	public void setTableOrderAttribute(String tableOrderValue) {
+		TableOrderAttribute attr = new TableOrderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableOrderValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceCellRangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceCellRangeElement.java
new file mode 100644
index 0000000..13c2d9f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceCellRangeElement.java
@@ -0,0 +1,109 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCellRangeAddressAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:source-cell-range}.
+ *
+ */
+public class TableSourceCellRangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "source-cell-range");
+
+	/**
+	 * Create the instance of <code>TableSourceCellRangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSourceCellRangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:source-cell-range}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCellRangeAddressAttribute() {
+		TableCellRangeAddressAttribute attr = (TableCellRangeAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "cell-range-address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCellRangeAddressAttribute</code> , See {@odf.attribute table:cell-range-address}
+	 *
+	 * @param tableCellRangeAddressValue   The type is <code>String</code>
+	 */
+	public void setTableCellRangeAddressAttribute(String tableCellRangeAddressValue) {
+		TableCellRangeAddressAttribute attr = new TableCellRangeAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCellRangeAddressValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:filter}.
+	 *
+	 * @return the element {@odf.element table:filter}
+	 */
+	public TableFilterElement newTableFilterElement() {
+		TableFilterElement tableFilter = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFilterElement.class);
+		this.appendChild(tableFilter);
+		return tableFilter;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceRangeAddressElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceRangeAddressElement.java
new file mode 100644
index 0000000..e85e323
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceRangeAddressElement.java
@@ -0,0 +1,296 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:source-range-address}.
+ *
+ */
+public class TableSourceRangeAddressElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "source-range-address");
+
+	/**
+	 * Create the instance of <code>TableSourceRangeAddressElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSourceRangeAddressElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:source-range-address}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableColumnAttribute</code> , See {@odf.attribute table:column}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableColumnAttribute() {
+		TableColumnAttribute attr = (TableColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableColumnAttribute</code> , See {@odf.attribute table:column}
+	 *
+	 * @param tableColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableColumnAttribute(Integer tableColumnValue) {
+		TableColumnAttribute attr = new TableColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndColumnAttribute</code> , See {@odf.attribute table:end-column}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndColumnAttribute() {
+		TableEndColumnAttribute attr = (TableEndColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndColumnAttribute</code> , See {@odf.attribute table:end-column}
+	 *
+	 * @param tableEndColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndColumnAttribute(Integer tableEndColumnValue) {
+		TableEndColumnAttribute attr = new TableEndColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndRowAttribute</code> , See {@odf.attribute table:end-row}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndRowAttribute() {
+		TableEndRowAttribute attr = (TableEndRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndRowAttribute</code> , See {@odf.attribute table:end-row}
+	 *
+	 * @param tableEndRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndRowAttribute(Integer tableEndRowValue) {
+		TableEndRowAttribute attr = new TableEndRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndTableAttribute</code> , See {@odf.attribute table:end-table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndTableAttribute() {
+		TableEndTableAttribute attr = (TableEndTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndTableAttribute</code> , See {@odf.attribute table:end-table}
+	 *
+	 * @param tableEndTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndTableAttribute(Integer tableEndTableValue) {
+		TableEndTableAttribute attr = new TableEndTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndTableValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRowAttribute</code> , See {@odf.attribute table:row}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableRowAttribute() {
+		TableRowAttribute attr = (TableRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRowAttribute</code> , See {@odf.attribute table:row}
+	 *
+	 * @param tableRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableRowAttribute(Integer tableRowValue) {
+		TableRowAttribute attr = new TableRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartColumnAttribute</code> , See {@odf.attribute table:start-column}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartColumnAttribute() {
+		TableStartColumnAttribute attr = (TableStartColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartColumnAttribute</code> , See {@odf.attribute table:start-column}
+	 *
+	 * @param tableStartColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartColumnAttribute(Integer tableStartColumnValue) {
+		TableStartColumnAttribute attr = new TableStartColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartRowAttribute</code> , See {@odf.attribute table:start-row}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartRowAttribute() {
+		TableStartRowAttribute attr = (TableStartRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartRowAttribute</code> , See {@odf.attribute table:start-row}
+	 *
+	 * @param tableStartRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartRowAttribute(Integer tableStartRowValue) {
+		TableStartRowAttribute attr = new TableStartRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartTableAttribute</code> , See {@odf.attribute table:start-table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartTableAttribute() {
+		TableStartTableAttribute attr = (TableStartTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartTableAttribute</code> , See {@odf.attribute table:start-table}
+	 *
+	 * @param tableStartTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartTableAttribute(Integer tableStartTableValue) {
+		TableStartTableAttribute attr = new TableStartTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartTableValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableTableAttribute() {
+		TableTableAttribute attr = (TableTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @param tableTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableTableAttribute(Integer tableTableValue) {
+		TableTableAttribute attr = new TableTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableTableValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceServiceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceServiceElement.java
new file mode 100644
index 0000000..8ff73df
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSourceServiceElement.java
@@ -0,0 +1,202 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableObjectNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePasswordAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableSourceNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUserNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:source-service}.
+ *
+ */
+public class TableSourceServiceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "source-service");
+
+	/**
+	 * Create the instance of <code>TableSourceServiceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSourceServiceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:source-service}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableObjectNameAttribute</code> , See {@odf.attribute table:object-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableObjectNameAttribute() {
+		TableObjectNameAttribute attr = (TableObjectNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "object-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableObjectNameAttribute</code> , See {@odf.attribute table:object-name}
+	 *
+	 * @param tableObjectNameValue   The type is <code>String</code>
+	 */
+	public void setTableObjectNameAttribute(String tableObjectNameValue) {
+		TableObjectNameAttribute attr = new TableObjectNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableObjectNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePasswordAttribute</code> , See {@odf.attribute table:password}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTablePasswordAttribute() {
+		TablePasswordAttribute attr = (TablePasswordAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "password");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePasswordAttribute</code> , See {@odf.attribute table:password}
+	 *
+	 * @param tablePasswordValue   The type is <code>String</code>
+	 */
+	public void setTablePasswordAttribute(String tablePasswordValue) {
+		TablePasswordAttribute attr = new TablePasswordAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tablePasswordValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableSourceNameAttribute</code> , See {@odf.attribute table:source-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableSourceNameAttribute() {
+		TableSourceNameAttribute attr = (TableSourceNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "source-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableSourceNameAttribute</code> , See {@odf.attribute table:source-name}
+	 *
+	 * @param tableSourceNameValue   The type is <code>String</code>
+	 */
+	public void setTableSourceNameAttribute(String tableSourceNameValue) {
+		TableSourceNameAttribute attr = new TableSourceNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableSourceNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUserNameAttribute</code> , See {@odf.attribute table:user-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableUserNameAttribute() {
+		TableUserNameAttribute attr = (TableUserNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "user-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUserNameAttribute</code> , See {@odf.attribute table:user-name}
+	 *
+	 * @param tableUserNameValue   The type is <code>String</code>
+	 */
+	public void setTableUserNameAttribute(String tableUserNameValue) {
+		TableUserNameAttribute attr = new TableUserNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableUserNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalFieldElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalFieldElement.java
new file mode 100644
index 0000000..9ee1135
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalFieldElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFieldNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFunctionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:subtotal-field}.
+ *
+ */
+public class TableSubtotalFieldElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "subtotal-field");
+
+	/**
+	 * Create the instance of <code>TableSubtotalFieldElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSubtotalFieldElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:subtotal-field}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFieldNumberAttribute</code> , See {@odf.attribute table:field-number}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableFieldNumberAttribute() {
+		TableFieldNumberAttribute attr = (TableFieldNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "field-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFieldNumberAttribute</code> , See {@odf.attribute table:field-number}
+	 *
+	 * @param tableFieldNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTableFieldNumberAttribute(Integer tableFieldNumberValue) {
+		TableFieldNumberAttribute attr = new TableFieldNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableFieldNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFunctionAttribute() {
+		TableFunctionAttribute attr = (TableFunctionAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "function");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFunctionAttribute</code> , See {@odf.attribute table:function}
+	 *
+	 * @param tableFunctionValue   The type is <code>String</code>
+	 */
+	public void setTableFunctionAttribute(String tableFunctionValue) {
+		TableFunctionAttribute attr = new TableFunctionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFunctionValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalRuleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalRuleElement.java
new file mode 100644
index 0000000..369bb5a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalRuleElement.java
@@ -0,0 +1,113 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableGroupByFieldNumberAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:subtotal-rule}.
+ *
+ */
+public class TableSubtotalRuleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "subtotal-rule");
+
+	/**
+	 * Create the instance of <code>TableSubtotalRuleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSubtotalRuleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:subtotal-rule}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableGroupByFieldNumberAttribute</code> , See {@odf.attribute table:group-by-field-number}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableGroupByFieldNumberAttribute() {
+		TableGroupByFieldNumberAttribute attr = (TableGroupByFieldNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "group-by-field-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableGroupByFieldNumberAttribute</code> , See {@odf.attribute table:group-by-field-number}
+	 *
+	 * @param tableGroupByFieldNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTableGroupByFieldNumberAttribute(Integer tableGroupByFieldNumberValue) {
+		TableGroupByFieldNumberAttribute attr = new TableGroupByFieldNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableGroupByFieldNumberValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:subtotal-field}.
+	 *
+	 * @param tableFieldNumberValue  the <code>Integer</code> value of <code>TableFieldNumberAttribute</code>, see {@odf.attribute  table:field-number} at specification
+	 * @param tableFunctionValue  the <code>String</code> value of <code>TableFunctionAttribute</code>, see {@odf.attribute  table:function} at specification
+	 * @return the element {@odf.element table:subtotal-field}
+	 */
+	 public TableSubtotalFieldElement newTableSubtotalFieldElement(int tableFieldNumberValue, String tableFunctionValue) {
+		TableSubtotalFieldElement tableSubtotalField = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSubtotalFieldElement.class);
+		tableSubtotalField.setTableFieldNumberAttribute(tableFieldNumberValue);
+		tableSubtotalField.setTableFunctionAttribute(tableFunctionValue);
+		this.appendChild(tableSubtotalField);
+		return tableSubtotalField;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalRulesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalRulesElement.java
new file mode 100644
index 0000000..b1b36f2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableSubtotalRulesElement.java
@@ -0,0 +1,170 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableBindStylesToContentAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableCaseSensitiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePageBreaksOnGroupChangeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:subtotal-rules}.
+ *
+ */
+public class TableSubtotalRulesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "subtotal-rules");
+
+	/**
+	 * Create the instance of <code>TableSubtotalRulesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableSubtotalRulesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:subtotal-rules}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableBindStylesToContentAttribute</code> , See {@odf.attribute table:bind-styles-to-content}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableBindStylesToContentAttribute() {
+		TableBindStylesToContentAttribute attr = (TableBindStylesToContentAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "bind-styles-to-content");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableBindStylesToContentAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableBindStylesToContentAttribute</code> , See {@odf.attribute table:bind-styles-to-content}
+	 *
+	 * @param tableBindStylesToContentValue   The type is <code>Boolean</code>
+	 */
+	public void setTableBindStylesToContentAttribute(Boolean tableBindStylesToContentValue) {
+		TableBindStylesToContentAttribute attr = new TableBindStylesToContentAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableBindStylesToContentValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableCaseSensitiveAttribute() {
+		TableCaseSensitiveAttribute attr = (TableCaseSensitiveAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "case-sensitive");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableCaseSensitiveAttribute.DEFAULT_VALUE_FALSE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableCaseSensitiveAttribute</code> , See {@odf.attribute table:case-sensitive}
+	 *
+	 * @param tableCaseSensitiveValue   The type is <code>String</code>
+	 */
+	public void setTableCaseSensitiveAttribute(String tableCaseSensitiveValue) {
+		TableCaseSensitiveAttribute attr = new TableCaseSensitiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableCaseSensitiveValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePageBreaksOnGroupChangeAttribute</code> , See {@odf.attribute table:page-breaks-on-group-change}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTablePageBreaksOnGroupChangeAttribute() {
+		TablePageBreaksOnGroupChangeAttribute attr = (TablePageBreaksOnGroupChangeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "page-breaks-on-group-change");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TablePageBreaksOnGroupChangeAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePageBreaksOnGroupChangeAttribute</code> , See {@odf.attribute table:page-breaks-on-group-change}
+	 *
+	 * @param tablePageBreaksOnGroupChangeValue   The type is <code>Boolean</code>
+	 */
+	public void setTablePageBreaksOnGroupChangeAttribute(Boolean tablePageBreaksOnGroupChangeValue) {
+		TablePageBreaksOnGroupChangeAttribute attr = new TablePageBreaksOnGroupChangeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tablePageBreaksOnGroupChangeValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:sort-groups}.
+	 *
+	 * @return the element {@odf.element table:sort-groups}
+	 */
+	public TableSortGroupsElement newTableSortGroupsElement() {
+		TableSortGroupsElement tableSortGroups = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSortGroupsElement.class);
+		this.appendChild(tableSortGroups);
+		return tableSortGroups;
+	}
+
+	/**
+	 * Create child element {@odf.element table:subtotal-rule}.
+	 *
+	 * @param tableGroupByFieldNumberValue  the <code>Integer</code> value of <code>TableGroupByFieldNumberAttribute</code>, see {@odf.attribute  table:group-by-field-number} at specification
+	 * @return the element {@odf.element table:subtotal-rule}
+	 */
+	 public TableSubtotalRuleElement newTableSubtotalRuleElement(int tableGroupByFieldNumberValue) {
+		TableSubtotalRuleElement tableSubtotalRule = ((OdfFileDom) this.ownerDocument).newOdfElement(TableSubtotalRuleElement.class);
+		tableSubtotalRule.setTableGroupByFieldNumberAttribute(tableGroupByFieldNumberValue);
+		this.appendChild(tableSubtotalRule);
+		return tableSubtotalRule;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableCellElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableCellElement.java
new file mode 100644
index 0000000..87a9d37
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableCellElement.java
@@ -0,0 +1,704 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAlphabeticalIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextBibliographyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChangeStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIllustrationIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberedParagraphElement;
+import org.odftoolkit.odfdom.dom.element.text.TextObjectIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableIndexElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserIndexElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberColumnsSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberMatrixColumnsSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberMatrixRowsSpannedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberRowsSpannedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-cell}.
+ *
+ */
+public class TableTableCellElement extends TableTableCellElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-cell");
+
+	/**
+	 * Create the instance of <code>TableTableCellElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableCellElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableCell, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-cell}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberColumnsSpannedAttribute</code> , See {@odf.attribute table:number-columns-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberColumnsSpannedAttribute() {
+		TableNumberColumnsSpannedAttribute attr = (TableNumberColumnsSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-columns-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableNumberColumnsSpannedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberColumnsSpannedAttribute</code> , See {@odf.attribute table:number-columns-spanned}
+	 *
+	 * @param tableNumberColumnsSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberColumnsSpannedAttribute(Integer tableNumberColumnsSpannedValue) {
+		TableNumberColumnsSpannedAttribute attr = new TableNumberColumnsSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberColumnsSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberMatrixColumnsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-columns-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberMatrixColumnsSpannedAttribute() {
+		TableNumberMatrixColumnsSpannedAttribute attr = (TableNumberMatrixColumnsSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-matrix-columns-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberMatrixColumnsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-columns-spanned}
+	 *
+	 * @param tableNumberMatrixColumnsSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberMatrixColumnsSpannedAttribute(Integer tableNumberMatrixColumnsSpannedValue) {
+		TableNumberMatrixColumnsSpannedAttribute attr = new TableNumberMatrixColumnsSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberMatrixColumnsSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberMatrixRowsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-rows-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberMatrixRowsSpannedAttribute() {
+		TableNumberMatrixRowsSpannedAttribute attr = (TableNumberMatrixRowsSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-matrix-rows-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberMatrixRowsSpannedAttribute</code> , See {@odf.attribute table:number-matrix-rows-spanned}
+	 *
+	 * @param tableNumberMatrixRowsSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberMatrixRowsSpannedAttribute(Integer tableNumberMatrixRowsSpannedValue) {
+		TableNumberMatrixRowsSpannedAttribute attr = new TableNumberMatrixRowsSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberMatrixRowsSpannedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberRowsSpannedAttribute</code> , See {@odf.attribute table:number-rows-spanned}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberRowsSpannedAttribute() {
+		TableNumberRowsSpannedAttribute attr = (TableNumberRowsSpannedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-rows-spanned");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableNumberRowsSpannedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberRowsSpannedAttribute</code> , See {@odf.attribute table:number-rows-spanned}
+	 *
+	 * @param tableNumberRowsSpannedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberRowsSpannedAttribute(Integer tableNumberRowsSpannedValue) {
+		TableNumberRowsSpannedAttribute attr = new TableNumberRowsSpannedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberRowsSpannedValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element table:cell-range-source}.
+	 *
+	 * @param tableLastColumnSpannedValue  the <code>Integer</code> value of <code>TableLastColumnSpannedAttribute</code>, see {@odf.attribute  table:last-column-spanned} at specification
+	 * @param tableLastRowSpannedValue  the <code>Integer</code> value of <code>TableLastRowSpannedAttribute</code>, see {@odf.attribute  table:last-row-spanned} at specification
+	 * @param tableNameValue  the <code>String</code> value of <code>TableNameAttribute</code>, see {@odf.attribute  table:name} at specification
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element table:cell-range-source}
+	 */
+	 public TableCellRangeSourceElement newTableCellRangeSourceElement(int tableLastColumnSpannedValue, int tableLastRowSpannedValue, String tableNameValue, String xlinkHrefValue, String xlinkTypeValue) {
+		TableCellRangeSourceElement tableCellRangeSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCellRangeSourceElement.class);
+		tableCellRangeSource.setTableLastColumnSpannedAttribute(tableLastColumnSpannedValue);
+		tableCellRangeSource.setTableLastRowSpannedAttribute(tableLastRowSpannedValue);
+		tableCellRangeSource.setTableNameAttribute(tableNameValue);
+		tableCellRangeSource.setXlinkHrefAttribute(xlinkHrefValue);
+		tableCellRangeSource.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(tableCellRangeSource);
+		return tableCellRangeSource;
+	}
+
+	/**
+	 * Create child element {@odf.element table:detective}.
+	 *
+	 * @return the element {@odf.element table:detective}
+	 */
+	public TableDetectiveElement newTableDetectiveElement() {
+		TableDetectiveElement tableDetective = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDetectiveElement.class);
+		this.appendChild(tableDetective);
+		return tableDetective;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableCellElementBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableCellElementBase.java
new file mode 100644
index 0000000..20ac6b2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableCellElementBase.java
@@ -0,0 +1,526 @@
+

+/************************************************************************

+ *

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

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.dom.element.table;

+

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;

+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;

+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;

+import org.odftoolkit.odfdom.dom.attribute.table.TableContentValidationNameAttribute;

+import org.odftoolkit.odfdom.dom.attribute.table.TableFormulaAttribute;

+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberColumnsRepeatedAttribute;

+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectAttribute;

+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectedAttribute;

+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlAboutAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlContentAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlDatatypeAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlPropertyAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;

+

+/**

+ * DOM implementation of OpenDocument base element

+ *

+ */

+public abstract class TableTableCellElementBase extends OdfStylableElement {

+

+	/**

+	 * Create the instance of <code>TableTableCellElementBase</code>

+	 *

+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>

+	 */

+	public TableTableCellElementBase(OdfFileDom ownerDoc, OdfName elementName, OdfStyleFamily styleFamily, OdfName styleAttrName) {

+		super(ownerDoc, elementName, styleFamily, styleAttrName);

+	}

+

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}

+	 *

+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Boolean getOfficeBooleanValueAttribute() {

+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");

+		if (attr != null) {

+			return Boolean.valueOf(attr.booleanValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}

+	 *

+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>

+	 */

+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {

+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getOfficeCurrencyAttribute() {

+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}

+	 *

+	 * @param officeCurrencyValue   The type is <code>String</code>

+	 */

+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {

+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(officeCurrencyValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getOfficeDateValueAttribute() {

+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}

+	 *

+	 * @param officeDateValueValue   The type is <code>String</code>

+	 */

+	public void setOfficeDateValueAttribute(String officeDateValueValue) {

+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(officeDateValueValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getOfficeStringValueAttribute() {

+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}

+	 *

+	 * @param officeStringValueValue   The type is <code>String</code>

+	 */

+	public void setOfficeStringValueAttribute(String officeStringValueValue) {

+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(officeStringValueValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getOfficeTimeValueAttribute() {

+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}

+	 *

+	 * @param officeTimeValueValue   The type is <code>String</code>

+	 */

+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {

+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(officeTimeValueValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}

+	 *

+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Double getOfficeValueAttribute() {

+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");

+		if (attr != null) {

+			return Double.valueOf(attr.doubleValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}

+	 *

+	 * @param officeValueValue   The type is <code>Double</code>

+	 */

+	public void setOfficeValueAttribute(Double officeValueValue) {

+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setDoubleValue(officeValueValue.doubleValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getOfficeValueTypeAttribute() {

+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}

+	 *

+	 * @param officeValueTypeValue   The type is <code>String</code>

+	 */

+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {

+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(officeValueTypeValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TableContentValidationNameAttribute</code> , See {@odf.attribute table:content-validation-name}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTableContentValidationNameAttribute() {

+		TableContentValidationNameAttribute attr = (TableContentValidationNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "content-validation-name");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TableContentValidationNameAttribute</code> , See {@odf.attribute table:content-validation-name}

+	 *

+	 * @param tableContentValidationNameValue   The type is <code>String</code>

+	 */

+	public void setTableContentValidationNameAttribute(String tableContentValidationNameValue) {

+		TableContentValidationNameAttribute attr = new TableContentValidationNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(tableContentValidationNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TableFormulaAttribute</code> , See {@odf.attribute table:formula}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTableFormulaAttribute() {

+		TableFormulaAttribute attr = (TableFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "formula");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TableFormulaAttribute</code> , See {@odf.attribute table:formula}

+	 *

+	 * @param tableFormulaValue   The type is <code>String</code>

+	 */

+	public void setTableFormulaAttribute(String tableFormulaValue) {

+		TableFormulaAttribute attr = new TableFormulaAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(tableFormulaValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberColumnsRepeatedAttribute</code> , See {@odf.attribute table:number-columns-repeated}

+	 *

+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Integer getTableNumberColumnsRepeatedAttribute() {

+		TableNumberColumnsRepeatedAttribute attr = (TableNumberColumnsRepeatedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-columns-repeated");

+		if (attr != null) {

+			return Integer.valueOf(attr.intValue());

+		}

+		return Integer.valueOf(TableNumberColumnsRepeatedAttribute.DEFAULT_VALUE);

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TableNumberColumnsRepeatedAttribute</code> , See {@odf.attribute table:number-columns-repeated}

+	 *

+	 * @param tableNumberColumnsRepeatedValue   The type is <code>Integer</code>

+	 */

+	public void setTableNumberColumnsRepeatedAttribute(Integer tableNumberColumnsRepeatedValue) {

+		TableNumberColumnsRepeatedAttribute attr = new TableNumberColumnsRepeatedAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setIntValue(tableNumberColumnsRepeatedValue.intValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectAttribute</code> , See {@odf.attribute table:protect}

+	 *

+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Boolean getTableProtectAttribute() {

+		TableProtectAttribute attr = (TableProtectAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protect");

+		if (attr != null) {

+			return Boolean.valueOf(attr.booleanValue());

+		}

+		return Boolean.valueOf(TableProtectAttribute.DEFAULT_VALUE);

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TableProtectAttribute</code> , See {@odf.attribute table:protect}

+	 *

+	 * @param tableProtectValue   The type is <code>Boolean</code>

+	 */

+	public void setTableProtectAttribute(Boolean tableProtectValue) {

+		TableProtectAttribute attr = new TableProtectAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setBooleanValue(tableProtectValue.booleanValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectedAttribute</code> , See {@odf.attribute table:protected}

+	 *

+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Boolean getTableProtectedAttribute() {

+		TableProtectedAttribute attr = (TableProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protected");

+		if (attr != null) {

+			return Boolean.valueOf(attr.booleanValue());

+		}

+		return Boolean.valueOf(TableProtectedAttribute.DEFAULT_VALUE);

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TableProtectedAttribute</code> , See {@odf.attribute table:protected}

+	 *

+	 * @param tableProtectedValue   The type is <code>Boolean</code>

+	 */

+	public void setTableProtectedAttribute(Boolean tableProtectedValue) {

+		TableProtectedAttribute attr = new TableProtectedAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setBooleanValue(tableProtectedValue.booleanValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTableStyleNameAttribute() {

+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}

+	 *

+	 * @param tableStyleNameValue   The type is <code>String</code>

+	 */

+	public void setTableStyleNameAttribute(String tableStyleNameValue) {

+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(tableStyleNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlAboutAttribute() {

+		XhtmlAboutAttribute attr = (XhtmlAboutAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "about");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @param xhtmlAboutValue   The type is <code>String</code>

+	 */

+	public void setXhtmlAboutAttribute(String xhtmlAboutValue) {

+		XhtmlAboutAttribute attr = new XhtmlAboutAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlAboutValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlContentAttribute() {

+		XhtmlContentAttribute attr = (XhtmlContentAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "content");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @param xhtmlContentValue   The type is <code>String</code>

+	 */

+	public void setXhtmlContentAttribute(String xhtmlContentValue) {

+		XhtmlContentAttribute attr = new XhtmlContentAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlContentValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlDatatypeAttribute() {

+		XhtmlDatatypeAttribute attr = (XhtmlDatatypeAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "datatype");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @param xhtmlDatatypeValue   The type is <code>String</code>

+	 */

+	public void setXhtmlDatatypeAttribute(String xhtmlDatatypeValue) {

+		XhtmlDatatypeAttribute attr = new XhtmlDatatypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlDatatypeValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlPropertyAttribute() {

+		XhtmlPropertyAttribute attr = (XhtmlPropertyAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "property");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @param xhtmlPropertyValue   The type is <code>String</code>

+	 */

+	public void setXhtmlPropertyAttribute(String xhtmlPropertyValue) {

+		XhtmlPropertyAttribute attr = new XhtmlPropertyAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlPropertyValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXmlIdAttribute() {

+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @param xmlIdValue   The type is <code>String</code>

+	 */

+	public void setXmlIdAttribute(String xmlIdValue) {

+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xmlIdValue);

+	}

+	

+	/**

+	* Set text content. Only elements which are allowed to have text content offer this method.

+	*/

+	public void setTextContent(String content){

+		super.setTextContent(content);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	protected void onRemoveNode() {

+		super.onRemoveNode();

+		((OdfFileDom) this.ownerDocument).getInContentMetadataCache().remove(this);

+	}

+

+	protected void onInsertNode() {

+		super.onInsertNode();

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnElement.java
new file mode 100644
index 0000000..4d0908b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnElement.java
@@ -0,0 +1,198 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDefaultCellStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberColumnsRepeatedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableVisibilityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-column}.
+ *
+ */
+public class TableTableColumnElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-column");
+
+	/**
+	 * Create the instance of <code>TableTableColumnElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableColumnElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableColumn, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-column}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDefaultCellStyleNameAttribute</code> , See {@odf.attribute table:default-cell-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDefaultCellStyleNameAttribute() {
+		TableDefaultCellStyleNameAttribute attr = (TableDefaultCellStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "default-cell-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDefaultCellStyleNameAttribute</code> , See {@odf.attribute table:default-cell-style-name}
+	 *
+	 * @param tableDefaultCellStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableDefaultCellStyleNameAttribute(String tableDefaultCellStyleNameValue) {
+		TableDefaultCellStyleNameAttribute attr = new TableDefaultCellStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDefaultCellStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberColumnsRepeatedAttribute</code> , See {@odf.attribute table:number-columns-repeated}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberColumnsRepeatedAttribute() {
+		TableNumberColumnsRepeatedAttribute attr = (TableNumberColumnsRepeatedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-columns-repeated");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableNumberColumnsRepeatedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberColumnsRepeatedAttribute</code> , See {@odf.attribute table:number-columns-repeated}
+	 *
+	 * @param tableNumberColumnsRepeatedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberColumnsRepeatedAttribute(Integer tableNumberColumnsRepeatedValue) {
+		TableNumberColumnsRepeatedAttribute attr = new TableNumberColumnsRepeatedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberColumnsRepeatedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableVisibilityAttribute</code> , See {@odf.attribute table:visibility}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableVisibilityAttribute() {
+		TableVisibilityAttribute attr = (TableVisibilityAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "visibility");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableVisibilityAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableVisibilityAttribute</code> , See {@odf.attribute table:visibility}
+	 *
+	 * @param tableVisibilityValue   The type is <code>String</code>
+	 */
+	public void setTableVisibilityAttribute(String tableVisibilityValue) {
+		TableVisibilityAttribute attr = new TableVisibilityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableVisibilityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnGroupElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnGroupElement.java
new file mode 100644
index 0000000..7fd7c21
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnGroupElement.java
@@ -0,0 +1,140 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-column-group}.
+ *
+ */
+public class TableTableColumnGroupElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-column-group");
+
+	/**
+	 * Create the instance of <code>TableTableColumnGroupElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableColumnGroupElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-column-group}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayAttribute() {
+		TableDisplayAttribute attr = (TableDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayAttribute.DEFAULT_VALUE_TRUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @param tableDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayAttribute(Boolean tableDisplayValue) {
+		TableDisplayAttribute attr = new TableDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-column}.
+	 *
+	 * @return the element {@odf.element table:table-column}
+	 */
+	public TableTableColumnElement newTableTableColumnElement() {
+		TableTableColumnElement tableTableColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnElement.class);
+		this.appendChild(tableTableColumn);
+		return tableTableColumn;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-column-group}.
+	 *
+	 * @return the element {@odf.element table:table-column-group}
+	 */
+	public TableTableColumnGroupElement newTableTableColumnGroupElement() {
+		TableTableColumnGroupElement tableTableColumnGroup = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnGroupElement.class);
+		this.appendChild(tableTableColumnGroup);
+		return tableTableColumnGroup;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-columns}.
+	 *
+	 * @return the element {@odf.element table:table-columns}
+	 */
+	public TableTableColumnsElement newTableTableColumnsElement() {
+		TableTableColumnsElement tableTableColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnsElement.class);
+		this.appendChild(tableTableColumns);
+		return tableTableColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-header-columns}.
+	 *
+	 * @return the element {@odf.element table:table-header-columns}
+	 */
+	public TableTableHeaderColumnsElement newTableTableHeaderColumnsElement() {
+		TableTableHeaderColumnsElement tableTableHeaderColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableHeaderColumnsElement.class);
+		this.appendChild(tableTableHeaderColumns);
+		return tableTableHeaderColumns;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnsElement.java
new file mode 100644
index 0000000..2a57e92
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableColumnsElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-columns}.
+ *
+ */
+public class TableTableColumnsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-columns");
+
+	/**
+	 * Create the instance of <code>TableTableColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-column}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:table-column}
+	 */
+	public TableTableColumnElement newTableTableColumnElement() {
+		TableTableColumnElement tableTableColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnElement.class);
+		this.appendChild(tableTableColumn);
+		return tableTableColumn;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableElement.java
new file mode 100644
index 0000000..8c346da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableElement.java
@@ -0,0 +1,683 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDdeSourceElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableIsSubTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePrintAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TablePrintRangesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTemplateNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseBandingColumnsStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseBandingRowsStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseFirstColumnStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseFirstRowStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseLastColumnStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableUseLastRowStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table}.
+ *
+ */
+public class TableTableElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table");
+
+	/**
+	 * Create the instance of <code>TableTableElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Table, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableIsSubTableAttribute</code> , See {@odf.attribute table:is-sub-table}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableIsSubTableAttribute() {
+		TableIsSubTableAttribute attr = (TableIsSubTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "is-sub-table");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableIsSubTableAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableIsSubTableAttribute</code> , See {@odf.attribute table:is-sub-table}
+	 *
+	 * @param tableIsSubTableValue   The type is <code>Boolean</code>
+	 */
+	public void setTableIsSubTableAttribute(Boolean tableIsSubTableValue) {
+		TableIsSubTableAttribute attr = new TableIsSubTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableIsSubTableValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePrintAttribute</code> , See {@odf.attribute table:print}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTablePrintAttribute() {
+		TablePrintAttribute attr = (TablePrintAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "print");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TablePrintAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePrintAttribute</code> , See {@odf.attribute table:print}
+	 *
+	 * @param tablePrintValue   The type is <code>Boolean</code>
+	 */
+	public void setTablePrintAttribute(Boolean tablePrintValue) {
+		TablePrintAttribute attr = new TablePrintAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tablePrintValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TablePrintRangesAttribute</code> , See {@odf.attribute table:print-ranges}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTablePrintRangesAttribute() {
+		TablePrintRangesAttribute attr = (TablePrintRangesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "print-ranges");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TablePrintRangesAttribute</code> , See {@odf.attribute table:print-ranges}
+	 *
+	 * @param tablePrintRangesValue   The type is <code>String</code>
+	 */
+	public void setTablePrintRangesAttribute(String tablePrintRangesValue) {
+		TablePrintRangesAttribute attr = new TablePrintRangesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tablePrintRangesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectedAttribute</code> , See {@odf.attribute table:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableProtectedAttribute() {
+		TableProtectedAttribute attr = (TableProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableProtectedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableProtectedAttribute</code> , See {@odf.attribute table:protected}
+	 *
+	 * @param tableProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTableProtectedAttribute(Boolean tableProtectedValue) {
+		TableProtectedAttribute attr = new TableProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectionKeyAttribute</code> , See {@odf.attribute table:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableProtectionKeyAttribute() {
+		TableProtectionKeyAttribute attr = (TableProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableProtectionKeyAttribute</code> , See {@odf.attribute table:protection-key}
+	 *
+	 * @param tableProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTableProtectionKeyAttribute(String tableProtectionKeyValue) {
+		TableProtectionKeyAttribute attr = new TableProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute table:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableProtectionKeyDigestAlgorithmAttribute() {
+		TableProtectionKeyDigestAlgorithmAttribute attr = (TableProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute table:protection-key-digest-algorithm}
+	 *
+	 * @param tableProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTableProtectionKeyDigestAlgorithmAttribute(String tableProtectionKeyDigestAlgorithmValue) {
+		TableProtectionKeyDigestAlgorithmAttribute attr = new TableProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTemplateNameAttribute</code> , See {@odf.attribute table:template-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTemplateNameAttribute() {
+		TableTemplateNameAttribute attr = (TableTemplateNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "template-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTemplateNameAttribute</code> , See {@odf.attribute table:template-name}
+	 *
+	 * @param tableTemplateNameValue   The type is <code>String</code>
+	 */
+	public void setTableTemplateNameAttribute(String tableTemplateNameValue) {
+		TableTemplateNameAttribute attr = new TableTemplateNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTemplateNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseBandingColumnsStylesAttribute</code> , See {@odf.attribute table:use-banding-columns-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseBandingColumnsStylesAttribute() {
+		TableUseBandingColumnsStylesAttribute attr = (TableUseBandingColumnsStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-banding-columns-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseBandingColumnsStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseBandingColumnsStylesAttribute</code> , See {@odf.attribute table:use-banding-columns-styles}
+	 *
+	 * @param tableUseBandingColumnsStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseBandingColumnsStylesAttribute(Boolean tableUseBandingColumnsStylesValue) {
+		TableUseBandingColumnsStylesAttribute attr = new TableUseBandingColumnsStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseBandingColumnsStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseBandingRowsStylesAttribute</code> , See {@odf.attribute table:use-banding-rows-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseBandingRowsStylesAttribute() {
+		TableUseBandingRowsStylesAttribute attr = (TableUseBandingRowsStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-banding-rows-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseBandingRowsStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseBandingRowsStylesAttribute</code> , See {@odf.attribute table:use-banding-rows-styles}
+	 *
+	 * @param tableUseBandingRowsStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseBandingRowsStylesAttribute(Boolean tableUseBandingRowsStylesValue) {
+		TableUseBandingRowsStylesAttribute attr = new TableUseBandingRowsStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseBandingRowsStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseFirstColumnStylesAttribute</code> , See {@odf.attribute table:use-first-column-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseFirstColumnStylesAttribute() {
+		TableUseFirstColumnStylesAttribute attr = (TableUseFirstColumnStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-first-column-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseFirstColumnStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseFirstColumnStylesAttribute</code> , See {@odf.attribute table:use-first-column-styles}
+	 *
+	 * @param tableUseFirstColumnStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseFirstColumnStylesAttribute(Boolean tableUseFirstColumnStylesValue) {
+		TableUseFirstColumnStylesAttribute attr = new TableUseFirstColumnStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseFirstColumnStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseFirstRowStylesAttribute</code> , See {@odf.attribute table:use-first-row-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseFirstRowStylesAttribute() {
+		TableUseFirstRowStylesAttribute attr = (TableUseFirstRowStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-first-row-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseFirstRowStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseFirstRowStylesAttribute</code> , See {@odf.attribute table:use-first-row-styles}
+	 *
+	 * @param tableUseFirstRowStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseFirstRowStylesAttribute(Boolean tableUseFirstRowStylesValue) {
+		TableUseFirstRowStylesAttribute attr = new TableUseFirstRowStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseFirstRowStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseLastColumnStylesAttribute</code> , See {@odf.attribute table:use-last-column-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseLastColumnStylesAttribute() {
+		TableUseLastColumnStylesAttribute attr = (TableUseLastColumnStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-last-column-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseLastColumnStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseLastColumnStylesAttribute</code> , See {@odf.attribute table:use-last-column-styles}
+	 *
+	 * @param tableUseLastColumnStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseLastColumnStylesAttribute(Boolean tableUseLastColumnStylesValue) {
+		TableUseLastColumnStylesAttribute attr = new TableUseLastColumnStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseLastColumnStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableUseLastRowStylesAttribute</code> , See {@odf.attribute table:use-last-row-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableUseLastRowStylesAttribute() {
+		TableUseLastRowStylesAttribute attr = (TableUseLastRowStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "use-last-row-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableUseLastRowStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableUseLastRowStylesAttribute</code> , See {@odf.attribute table:use-last-row-styles}
+	 *
+	 * @param tableUseLastRowStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableUseLastRowStylesAttribute(Boolean tableUseLastRowStylesValue) {
+		TableUseLastRowStylesAttribute attr = new TableUseLastRowStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableUseLastRowStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:dde-source}.
+	 *
+	 * @param officeDdeApplicationValue  the <code>String</code> value of <code>OfficeDdeApplicationAttribute</code>, see {@odf.attribute  office:dde-application} at specification
+	 * @param officeDdeItemValue  the <code>String</code> value of <code>OfficeDdeItemAttribute</code>, see {@odf.attribute  office:dde-item} at specification
+	 * @param officeDdeTopicValue  the <code>String</code> value of <code>OfficeDdeTopicAttribute</code>, see {@odf.attribute  office:dde-topic} at specification
+	 * @return the element {@odf.element office:dde-source}
+	 */
+	 public OfficeDdeSourceElement newOfficeDdeSourceElement(String officeDdeApplicationValue, String officeDdeItemValue, String officeDdeTopicValue) {
+		OfficeDdeSourceElement officeDdeSource = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDdeSourceElement.class);
+		officeDdeSource.setOfficeDdeApplicationAttribute(officeDdeApplicationValue);
+		officeDdeSource.setOfficeDdeItemAttribute(officeDdeItemValue);
+		officeDdeSource.setOfficeDdeTopicAttribute(officeDdeTopicValue);
+		this.appendChild(officeDdeSource);
+		return officeDdeSource;
+	}
+
+	/**
+	 * Create child element {@odf.element office:forms}.
+	 *
+	 * @return the element {@odf.element office:forms}
+	 */
+	public OfficeFormsElement newOfficeFormsElement() {
+		OfficeFormsElement officeForms = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeFormsElement.class);
+		this.appendChild(officeForms);
+		return officeForms;
+	}
+
+	/**
+	 * Create child element {@odf.element table:desc}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:desc}
+	 */
+	public TableDescElement newTableDescElement() {
+		TableDescElement tableDesc = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDescElement.class);
+		this.appendChild(tableDesc);
+		return tableDesc;
+	}
+
+	/**
+	 * Create child element {@odf.element table:named-expressions}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:named-expressions}
+	 */
+	public TableNamedExpressionsElement newTableNamedExpressionsElement() {
+		TableNamedExpressionsElement tableNamedExpressions = ((OdfFileDom) this.ownerDocument).newOdfElement(TableNamedExpressionsElement.class);
+		this.appendChild(tableNamedExpressions);
+		return tableNamedExpressions;
+	}
+
+	/**
+	 * Create child element {@odf.element table:scenario}.
+	 *
+	 * @param tableIsActiveValue  the <code>Boolean</code> value of <code>TableIsActiveAttribute</code>, see {@odf.attribute  table:is-active} at specification
+	 * @param tableScenarioRangesValue  the <code>String</code> value of <code>TableScenarioRangesAttribute</code>, see {@odf.attribute  table:scenario-ranges} at specification
+	 * @return the element {@odf.element table:scenario}
+	 */
+	 public TableScenarioElement newTableScenarioElement(boolean tableIsActiveValue, String tableScenarioRangesValue) {
+		TableScenarioElement tableScenario = ((OdfFileDom) this.ownerDocument).newOdfElement(TableScenarioElement.class);
+		tableScenario.setTableIsActiveAttribute(tableIsActiveValue);
+		tableScenario.setTableScenarioRangesAttribute(tableScenarioRangesValue);
+		this.appendChild(tableScenario);
+		return tableScenario;
+	}
+
+	/**
+	 * Create child element {@odf.element table:shapes}.
+	 *
+	 * @return the element {@odf.element table:shapes}
+	 */
+	public TableShapesElement newTableShapesElement() {
+		TableShapesElement tableShapes = ((OdfFileDom) this.ownerDocument).newOdfElement(TableShapesElement.class);
+		this.appendChild(tableShapes);
+		return tableShapes;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-column}.
+	 *
+	 * @return the element {@odf.element table:table-column}
+	 */
+	public TableTableColumnElement newTableTableColumnElement() {
+		TableTableColumnElement tableTableColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnElement.class);
+		this.appendChild(tableTableColumn);
+		return tableTableColumn;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-column-group}.
+	 *
+	 * @return the element {@odf.element table:table-column-group}
+	 */
+	public TableTableColumnGroupElement newTableTableColumnGroupElement() {
+		TableTableColumnGroupElement tableTableColumnGroup = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnGroupElement.class);
+		this.appendChild(tableTableColumnGroup);
+		return tableTableColumnGroup;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-columns}.
+	 *
+	 * @return the element {@odf.element table:table-columns}
+	 */
+	public TableTableColumnsElement newTableTableColumnsElement() {
+		TableTableColumnsElement tableTableColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnsElement.class);
+		this.appendChild(tableTableColumns);
+		return tableTableColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-header-columns}.
+	 *
+	 * @return the element {@odf.element table:table-header-columns}
+	 */
+	public TableTableHeaderColumnsElement newTableTableHeaderColumnsElement() {
+		TableTableHeaderColumnsElement tableTableHeaderColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableHeaderColumnsElement.class);
+		this.appendChild(tableTableHeaderColumns);
+		return tableTableHeaderColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-header-rows}.
+	 *
+	 * @return the element {@odf.element table:table-header-rows}
+	 */
+	public TableTableHeaderRowsElement newTableTableHeaderRowsElement() {
+		TableTableHeaderRowsElement tableTableHeaderRows = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableHeaderRowsElement.class);
+		this.appendChild(tableTableHeaderRows);
+		return tableTableHeaderRows;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-row}.
+	 *
+	 * @return the element {@odf.element table:table-row}
+	 */
+	public TableTableRowElement newTableTableRowElement() {
+		TableTableRowElement tableTableRow = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowElement.class);
+		this.appendChild(tableTableRow);
+		return tableTableRow;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-row-group}.
+	 *
+	 * @return the element {@odf.element table:table-row-group}
+	 */
+	public TableTableRowGroupElement newTableTableRowGroupElement() {
+		TableTableRowGroupElement tableTableRowGroup = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowGroupElement.class);
+		this.appendChild(tableTableRowGroup);
+		return tableTableRowGroup;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-rows}.
+	 *
+	 * @return the element {@odf.element table:table-rows}
+	 */
+	public TableTableRowsElement newTableTableRowsElement() {
+		TableTableRowsElement tableTableRows = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowsElement.class);
+		this.appendChild(tableTableRows);
+		return tableTableRows;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-source}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element table:table-source}
+	 */
+	 public TableTableSourceElement newTableTableSourceElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TableTableSourceElement tableTableSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableSourceElement.class);
+		tableTableSource.setXlinkHrefAttribute(xlinkHrefValue);
+		tableTableSource.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(tableTableSource);
+		return tableTableSource;
+	}
+
+	/**
+	 * Create child element {@odf.element table:title}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:title}
+	 */
+	public TableTitleElement newTableTitleElement() {
+		TableTitleElement tableTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTitleElement.class);
+		this.appendChild(tableTitle);
+		return tableTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableHeaderColumnsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableHeaderColumnsElement.java
new file mode 100644
index 0000000..574e441
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableHeaderColumnsElement.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-header-columns}.
+ *
+ */
+public class TableTableHeaderColumnsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-columns");
+
+	/**
+	 * Create the instance of <code>TableTableHeaderColumnsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableHeaderColumnsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-header-columns}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-column}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:table-column}
+	 */
+	public TableTableColumnElement newTableTableColumnElement() {
+		TableTableColumnElement tableTableColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableColumnElement.class);
+		this.appendChild(tableTableColumn);
+		return tableTableColumn;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableHeaderRowsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableHeaderRowsElement.java
new file mode 100644
index 0000000..a8e3546
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableHeaderRowsElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-header-rows}.
+ *
+ */
+public class TableTableHeaderRowsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-rows");
+
+	/**
+	 * Create the instance of <code>TableTableHeaderRowsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableHeaderRowsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-header-rows}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-row}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:table-row}
+	 */
+	public TableTableRowElement newTableTableRowElement() {
+		TableTableRowElement tableTableRow = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowElement.class);
+		this.appendChild(tableTableRow);
+		return tableTableRow;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowElement.java
new file mode 100644
index 0000000..1148a2a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowElement.java
@@ -0,0 +1,228 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDefaultCellStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNumberRowsRepeatedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableVisibilityAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-row}.
+ *
+ */
+public class TableTableRowElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-row");
+
+	/**
+	 * Create the instance of <code>TableTableRowElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableRowElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.TableRow, OdfName.newName(OdfDocumentNamespace.TABLE, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-row}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDefaultCellStyleNameAttribute</code> , See {@odf.attribute table:default-cell-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableDefaultCellStyleNameAttribute() {
+		TableDefaultCellStyleNameAttribute attr = (TableDefaultCellStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "default-cell-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDefaultCellStyleNameAttribute</code> , See {@odf.attribute table:default-cell-style-name}
+	 *
+	 * @param tableDefaultCellStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableDefaultCellStyleNameAttribute(String tableDefaultCellStyleNameValue) {
+		TableDefaultCellStyleNameAttribute attr = new TableDefaultCellStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableDefaultCellStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNumberRowsRepeatedAttribute</code> , See {@odf.attribute table:number-rows-repeated}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableNumberRowsRepeatedAttribute() {
+		TableNumberRowsRepeatedAttribute attr = (TableNumberRowsRepeatedAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "number-rows-repeated");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TableNumberRowsRepeatedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNumberRowsRepeatedAttribute</code> , See {@odf.attribute table:number-rows-repeated}
+	 *
+	 * @param tableNumberRowsRepeatedValue   The type is <code>Integer</code>
+	 */
+	public void setTableNumberRowsRepeatedAttribute(Integer tableNumberRowsRepeatedValue) {
+		TableNumberRowsRepeatedAttribute attr = new TableNumberRowsRepeatedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableNumberRowsRepeatedValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableStyleNameAttribute() {
+		TableStyleNameAttribute attr = (TableStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStyleNameAttribute</code> , See {@odf.attribute table:style-name}
+	 *
+	 * @param tableStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTableStyleNameAttribute(String tableStyleNameValue) {
+		TableStyleNameAttribute attr = new TableStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableVisibilityAttribute</code> , See {@odf.attribute table:visibility}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableVisibilityAttribute() {
+		TableVisibilityAttribute attr = (TableVisibilityAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "visibility");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableVisibilityAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableVisibilityAttribute</code> , See {@odf.attribute table:visibility}
+	 *
+	 * @param tableVisibilityValue   The type is <code>String</code>
+	 */
+	public void setTableVisibilityAttribute(String tableVisibilityValue) {
+		TableVisibilityAttribute attr = new TableVisibilityAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableVisibilityValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:covered-table-cell}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element table:covered-table-cell}
+	 */
+	 public TableCoveredTableCellElement newTableCoveredTableCellElement(double officeValueValue, String officeValueTypeValue) {
+		TableCoveredTableCellElement tableCoveredTableCell = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCoveredTableCellElement.class);
+		tableCoveredTableCell.setOfficeValueAttribute(officeValueValue);
+		tableCoveredTableCell.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(tableCoveredTableCell);
+		return tableCoveredTableCell;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-cell}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element table:table-cell}
+	 */
+	 public TableTableCellElement newTableTableCellElement(double officeValueValue, String officeValueTypeValue) {
+		TableTableCellElement tableTableCell = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableCellElement.class);
+		tableTableCell.setOfficeValueAttribute(officeValueValue);
+		tableTableCell.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(tableTableCell);
+		return tableTableCell;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowGroupElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowGroupElement.java
new file mode 100644
index 0000000..42e1801
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowGroupElement.java
@@ -0,0 +1,152 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.attribute.table.TableDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-row-group}.
+ *
+ */
+public class TableTableRowGroupElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-row-group");
+
+	/**
+	 * Create the instance of <code>TableTableRowGroupElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableRowGroupElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-row-group}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableDisplayAttribute() {
+		TableDisplayAttribute attr = (TableDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "display");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableDisplayAttribute.DEFAULT_VALUE_TRUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableDisplayAttribute</code> , See {@odf.attribute table:display}
+	 *
+	 * @param tableDisplayValue   The type is <code>Boolean</code>
+	 */
+	public void setTableDisplayAttribute(Boolean tableDisplayValue) {
+		TableDisplayAttribute attr = new TableDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableDisplayValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-header-rows}.
+	 *
+	 * @return the element {@odf.element table:table-header-rows}
+	 */
+	public TableTableHeaderRowsElement newTableTableHeaderRowsElement() {
+		TableTableHeaderRowsElement tableTableHeaderRows = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableHeaderRowsElement.class);
+		this.appendChild(tableTableHeaderRows);
+		return tableTableHeaderRows;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-row}.
+	 *
+	 * @return the element {@odf.element table:table-row}
+	 */
+	public TableTableRowElement newTableTableRowElement() {
+		TableTableRowElement tableTableRow = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowElement.class);
+		this.appendChild(tableTableRow);
+		return tableTableRow;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-row-group}.
+	 *
+	 * @return the element {@odf.element table:table-row-group}
+	 */
+	public TableTableRowGroupElement newTableTableRowGroupElement() {
+		TableTableRowGroupElement tableTableRowGroup = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowGroupElement.class);
+		this.appendChild(tableTableRowGroup);
+		return tableTableRowGroup;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-rows}.
+	 *
+	 * @return the element {@odf.element table:table-rows}
+	 */
+	public TableTableRowsElement newTableTableRowsElement() {
+		TableTableRowsElement tableTableRows = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowsElement.class);
+		this.appendChild(tableTableRows);
+		return tableTableRows;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowsElement.java
new file mode 100644
index 0000000..fb8d81d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableRowsElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-rows}.
+ *
+ */
+public class TableTableRowsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-rows");
+
+	/**
+	 * Create the instance of <code>TableTableRowsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableRowsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-rows}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table-row}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:table-row}
+	 */
+	public TableTableRowElement newTableTableRowElement() {
+		TableTableRowElement tableTableRow = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableRowElement.class);
+		this.appendChild(tableTableRow);
+		return tableTableRow;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableSourceElement.java
new file mode 100644
index 0000000..af3d9ee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableSourceElement.java
@@ -0,0 +1,275 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFilterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFilterOptionsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRefreshDelayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-source}.
+ *
+ */
+public class TableTableSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-source");
+
+	/**
+	 * Create the instance of <code>TableTableSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFilterNameAttribute</code> , See {@odf.attribute table:filter-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFilterNameAttribute() {
+		TableFilterNameAttribute attr = (TableFilterNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "filter-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFilterNameAttribute</code> , See {@odf.attribute table:filter-name}
+	 *
+	 * @param tableFilterNameValue   The type is <code>String</code>
+	 */
+	public void setTableFilterNameAttribute(String tableFilterNameValue) {
+		TableFilterNameAttribute attr = new TableFilterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFilterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFilterOptionsAttribute</code> , See {@odf.attribute table:filter-options}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFilterOptionsAttribute() {
+		TableFilterOptionsAttribute attr = (TableFilterOptionsAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "filter-options");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFilterOptionsAttribute</code> , See {@odf.attribute table:filter-options}
+	 *
+	 * @param tableFilterOptionsValue   The type is <code>String</code>
+	 */
+	public void setTableFilterOptionsAttribute(String tableFilterOptionsValue) {
+		TableFilterOptionsAttribute attr = new TableFilterOptionsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFilterOptionsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableModeAttribute</code> , See {@odf.attribute table:mode}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableModeAttribute() {
+		TableModeAttribute attr = (TableModeAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "mode");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TableModeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableModeAttribute</code> , See {@odf.attribute table:mode}
+	 *
+	 * @param tableModeValue   The type is <code>String</code>
+	 */
+	public void setTableModeAttribute(String tableModeValue) {
+		TableModeAttribute attr = new TableModeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableModeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRefreshDelayAttribute</code> , See {@odf.attribute table:refresh-delay}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableRefreshDelayAttribute() {
+		TableRefreshDelayAttribute attr = (TableRefreshDelayAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "refresh-delay");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRefreshDelayAttribute</code> , See {@odf.attribute table:refresh-delay}
+	 *
+	 * @param tableRefreshDelayValue   The type is <code>String</code>
+	 */
+	public void setTableRefreshDelayAttribute(String tableRefreshDelayValue) {
+		TableRefreshDelayAttribute attr = new TableRefreshDelayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableRefreshDelayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableNameAttribute</code> , See {@odf.attribute table:table-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableTableNameAttribute() {
+		TableTableNameAttribute attr = (TableTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableNameAttribute</code> , See {@odf.attribute table:table-name}
+	 *
+	 * @param tableTableNameValue   The type is <code>String</code>
+	 */
+	public void setTableTableNameAttribute(String tableTableNameValue) {
+		TableTableNameAttribute attr = new TableTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableTemplateElement.java
new file mode 100644
index 0000000..b46c0a8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTableTemplateElement.java
@@ -0,0 +1,358 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFirstRowEndColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableFirstRowStartColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLastRowEndColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableLastRowStartColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:table-template}.
+ *
+ */
+public class TableTableTemplateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "table-template");
+
+	/**
+	 * Create the instance of <code>TableTableTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTableTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:table-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFirstRowEndColumnAttribute</code> , See {@odf.attribute table:first-row-end-column}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFirstRowEndColumnAttribute() {
+		TableFirstRowEndColumnAttribute attr = (TableFirstRowEndColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "first-row-end-column");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFirstRowEndColumnAttribute</code> , See {@odf.attribute table:first-row-end-column}
+	 *
+	 * @param tableFirstRowEndColumnValue   The type is <code>String</code>
+	 */
+	public void setTableFirstRowEndColumnAttribute(String tableFirstRowEndColumnValue) {
+		TableFirstRowEndColumnAttribute attr = new TableFirstRowEndColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFirstRowEndColumnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableFirstRowStartColumnAttribute</code> , See {@odf.attribute table:first-row-start-column}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableFirstRowStartColumnAttribute() {
+		TableFirstRowStartColumnAttribute attr = (TableFirstRowStartColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "first-row-start-column");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableFirstRowStartColumnAttribute</code> , See {@odf.attribute table:first-row-start-column}
+	 *
+	 * @param tableFirstRowStartColumnValue   The type is <code>String</code>
+	 */
+	public void setTableFirstRowStartColumnAttribute(String tableFirstRowStartColumnValue) {
+		TableFirstRowStartColumnAttribute attr = new TableFirstRowStartColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableFirstRowStartColumnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLastRowEndColumnAttribute</code> , See {@odf.attribute table:last-row-end-column}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableLastRowEndColumnAttribute() {
+		TableLastRowEndColumnAttribute attr = (TableLastRowEndColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "last-row-end-column");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLastRowEndColumnAttribute</code> , See {@odf.attribute table:last-row-end-column}
+	 *
+	 * @param tableLastRowEndColumnValue   The type is <code>String</code>
+	 */
+	public void setTableLastRowEndColumnAttribute(String tableLastRowEndColumnValue) {
+		TableLastRowEndColumnAttribute attr = new TableLastRowEndColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableLastRowEndColumnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableLastRowStartColumnAttribute</code> , See {@odf.attribute table:last-row-start-column}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableLastRowStartColumnAttribute() {
+		TableLastRowStartColumnAttribute attr = (TableLastRowStartColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "last-row-start-column");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableLastRowStartColumnAttribute</code> , See {@odf.attribute table:last-row-start-column}
+	 *
+	 * @param tableLastRowStartColumnValue   The type is <code>String</code>
+	 */
+	public void setTableLastRowStartColumnAttribute(String tableLastRowStartColumnValue) {
+		TableLastRowStartColumnAttribute attr = new TableLastRowStartColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableLastRowStartColumnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTableNameAttribute() {
+		TableNameAttribute attr = (TableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableNameAttribute</code> , See {@odf.attribute table:name}
+	 *
+	 * @param tableNameValue   The type is <code>String</code>
+	 */
+	public void setTableNameAttribute(String tableNameValue) {
+		TableNameAttribute attr = new TableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(tableNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element table:background}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:background}
+	 */
+	 public TableBackgroundElement newTableBackgroundElement(String tableStyleNameValue) {
+		TableBackgroundElement tableBackground = ((OdfFileDom) this.ownerDocument).newOdfElement(TableBackgroundElement.class);
+		tableBackground.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableBackground);
+		return tableBackground;
+	}
+
+	/**
+	 * Create child element {@odf.element table:body}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element table:body}
+	 */
+	 public TableBodyElement newTableBodyElement(String tableStyleNameValue) {
+		TableBodyElement tableBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TableBodyElement.class);
+		tableBody.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableBody);
+		return tableBody;
+	}
+
+	/**
+	 * Create child element {@odf.element table:even-columns}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:even-columns}
+	 */
+	 public TableEvenColumnsElement newTableEvenColumnsElement(String tableStyleNameValue) {
+		TableEvenColumnsElement tableEvenColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(TableEvenColumnsElement.class);
+		tableEvenColumns.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableEvenColumns);
+		return tableEvenColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element table:even-rows}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:even-rows}
+	 */
+	 public TableEvenRowsElement newTableEvenRowsElement(String tableStyleNameValue) {
+		TableEvenRowsElement tableEvenRows = ((OdfFileDom) this.ownerDocument).newOdfElement(TableEvenRowsElement.class);
+		tableEvenRows.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableEvenRows);
+		return tableEvenRows;
+	}
+
+	/**
+	 * Create child element {@odf.element table:first-column}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:first-column}
+	 */
+	 public TableFirstColumnElement newTableFirstColumnElement(String tableStyleNameValue) {
+		TableFirstColumnElement tableFirstColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFirstColumnElement.class);
+		tableFirstColumn.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableFirstColumn);
+		return tableFirstColumn;
+	}
+
+	/**
+	 * Create child element {@odf.element table:first-row}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:first-row}
+	 */
+	 public TableFirstRowElement newTableFirstRowElement(String tableStyleNameValue) {
+		TableFirstRowElement tableFirstRow = ((OdfFileDom) this.ownerDocument).newOdfElement(TableFirstRowElement.class);
+		tableFirstRow.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableFirstRow);
+		return tableFirstRow;
+	}
+
+	/**
+	 * Create child element {@odf.element table:last-column}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:last-column}
+	 */
+	 public TableLastColumnElement newTableLastColumnElement(String tableStyleNameValue) {
+		TableLastColumnElement tableLastColumn = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLastColumnElement.class);
+		tableLastColumn.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableLastColumn);
+		return tableLastColumn;
+	}
+
+	/**
+	 * Create child element {@odf.element table:last-row}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:last-row}
+	 */
+	 public TableLastRowElement newTableLastRowElement(String tableStyleNameValue) {
+		TableLastRowElement tableLastRow = ((OdfFileDom) this.ownerDocument).newOdfElement(TableLastRowElement.class);
+		tableLastRow.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableLastRow);
+		return tableLastRow;
+	}
+
+	/**
+	 * Create child element {@odf.element table:odd-columns}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:odd-columns}
+	 */
+	 public TableOddColumnsElement newTableOddColumnsElement(String tableStyleNameValue) {
+		TableOddColumnsElement tableOddColumns = ((OdfFileDom) this.ownerDocument).newOdfElement(TableOddColumnsElement.class);
+		tableOddColumns.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableOddColumns);
+		return tableOddColumns;
+	}
+
+	/**
+	 * Create child element {@odf.element table:odd-rows}.
+	 *
+	 * @param tableStyleNameValue  the <code>String</code> value of <code>TableStyleNameAttribute</code>, see {@odf.attribute  table:style-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element table:odd-rows}
+	 */
+	 public TableOddRowsElement newTableOddRowsElement(String tableStyleNameValue) {
+		TableOddRowsElement tableOddRows = ((OdfFileDom) this.ownerDocument).newOdfElement(TableOddRowsElement.class);
+		tableOddRows.setTableStyleNameAttribute(tableStyleNameValue);
+		this.appendChild(tableOddRows);
+		return tableOddRows;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTargetRangeAddressElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTargetRangeAddressElement.java
new file mode 100644
index 0000000..2d96649
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTargetRangeAddressElement.java
@@ -0,0 +1,296 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableEndTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartColumnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartRowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableStartTableAttribute;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTableAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:target-range-address}.
+ *
+ */
+public class TableTargetRangeAddressElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "target-range-address");
+
+	/**
+	 * Create the instance of <code>TableTargetRangeAddressElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTargetRangeAddressElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:target-range-address}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableColumnAttribute</code> , See {@odf.attribute table:column}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableColumnAttribute() {
+		TableColumnAttribute attr = (TableColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableColumnAttribute</code> , See {@odf.attribute table:column}
+	 *
+	 * @param tableColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableColumnAttribute(Integer tableColumnValue) {
+		TableColumnAttribute attr = new TableColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndColumnAttribute</code> , See {@odf.attribute table:end-column}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndColumnAttribute() {
+		TableEndColumnAttribute attr = (TableEndColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndColumnAttribute</code> , See {@odf.attribute table:end-column}
+	 *
+	 * @param tableEndColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndColumnAttribute(Integer tableEndColumnValue) {
+		TableEndColumnAttribute attr = new TableEndColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndRowAttribute</code> , See {@odf.attribute table:end-row}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndRowAttribute() {
+		TableEndRowAttribute attr = (TableEndRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndRowAttribute</code> , See {@odf.attribute table:end-row}
+	 *
+	 * @param tableEndRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndRowAttribute(Integer tableEndRowValue) {
+		TableEndRowAttribute attr = new TableEndRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableEndTableAttribute</code> , See {@odf.attribute table:end-table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableEndTableAttribute() {
+		TableEndTableAttribute attr = (TableEndTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "end-table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableEndTableAttribute</code> , See {@odf.attribute table:end-table}
+	 *
+	 * @param tableEndTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableEndTableAttribute(Integer tableEndTableValue) {
+		TableEndTableAttribute attr = new TableEndTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableEndTableValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableRowAttribute</code> , See {@odf.attribute table:row}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableRowAttribute() {
+		TableRowAttribute attr = (TableRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableRowAttribute</code> , See {@odf.attribute table:row}
+	 *
+	 * @param tableRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableRowAttribute(Integer tableRowValue) {
+		TableRowAttribute attr = new TableRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartColumnAttribute</code> , See {@odf.attribute table:start-column}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartColumnAttribute() {
+		TableStartColumnAttribute attr = (TableStartColumnAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-column");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartColumnAttribute</code> , See {@odf.attribute table:start-column}
+	 *
+	 * @param tableStartColumnValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartColumnAttribute(Integer tableStartColumnValue) {
+		TableStartColumnAttribute attr = new TableStartColumnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartColumnValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartRowAttribute</code> , See {@odf.attribute table:start-row}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartRowAttribute() {
+		TableStartRowAttribute attr = (TableStartRowAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-row");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartRowAttribute</code> , See {@odf.attribute table:start-row}
+	 *
+	 * @param tableStartRowValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartRowAttribute(Integer tableStartRowValue) {
+		TableStartRowAttribute attr = new TableStartRowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartRowValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableStartTableAttribute</code> , See {@odf.attribute table:start-table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableStartTableAttribute() {
+		TableStartTableAttribute attr = (TableStartTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "start-table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableStartTableAttribute</code> , See {@odf.attribute table:start-table}
+	 *
+	 * @param tableStartTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableStartTableAttribute(Integer tableStartTableValue) {
+		TableStartTableAttribute attr = new TableStartTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableStartTableValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableTableAttribute() {
+		TableTableAttribute attr = (TableTableAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "table");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTableAttribute</code> , See {@odf.attribute table:table}
+	 *
+	 * @param tableTableValue   The type is <code>Integer</code>
+	 */
+	public void setTableTableAttribute(Integer tableTableValue) {
+		TableTableAttribute attr = new TableTableAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(tableTableValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTitleElement.java
new file mode 100644
index 0000000..267d0b2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTitleElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:title}.
+ *
+ */
+public class TableTitleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "title");
+
+	/**
+	 * Create the instance of <code>TableTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTrackedChangesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTrackedChangesElement.java
new file mode 100644
index 0000000..8d29b6b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/table/TableTrackedChangesElement.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.table;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.table.TableTrackChangesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element table:tracked-changes}.
+ *
+ */
+public class TableTrackedChangesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TABLE, "tracked-changes");
+
+	/**
+	 * Create the instance of <code>TableTrackedChangesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TableTrackedChangesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element table:tracked-changes}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TableTrackChangesAttribute</code> , See {@odf.attribute table:track-changes}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTableTrackChangesAttribute() {
+		TableTrackChangesAttribute attr = (TableTrackChangesAttribute) getOdfAttribute(OdfDocumentNamespace.TABLE, "track-changes");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TableTrackChangesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TableTrackChangesAttribute</code> , See {@odf.attribute table:track-changes}
+	 *
+	 * @param tableTrackChangesValue   The type is <code>Boolean</code>
+	 */
+	public void setTableTrackChangesAttribute(Boolean tableTrackChangesValue) {
+		TableTrackChangesAttribute attr = new TableTrackChangesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(tableTrackChangesValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element table:cell-content-change}.
+	 *
+	 * @param tableIdValue  the <code>String</code> value of <code>TableIdAttribute</code>, see {@odf.attribute  table:id} at specification
+	 * @return the element {@odf.element table:cell-content-change}
+	 */
+	 public TableCellContentChangeElement newTableCellContentChangeElement(String tableIdValue) {
+		TableCellContentChangeElement tableCellContentChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TableCellContentChangeElement.class);
+		tableCellContentChange.setTableIdAttribute(tableIdValue);
+		this.appendChild(tableCellContentChange);
+		return tableCellContentChange;
+	}
+
+	/**
+	 * Create child element {@odf.element table:deletion}.
+	 *
+	 * @param tableIdValue  the <code>String</code> value of <code>TableIdAttribute</code>, see {@odf.attribute  table:id} at specification
+	 * @param tablePositionValue  the <code>Integer</code> value of <code>TablePositionAttribute</code>, see {@odf.attribute  table:position} at specification
+	 * @param tableTypeValue  the <code>String</code> value of <code>TableTypeAttribute</code>, see {@odf.attribute  table:type} at specification
+	 * @return the element {@odf.element table:deletion}
+	 */
+	 public TableDeletionElement newTableDeletionElement(String tableIdValue, int tablePositionValue, String tableTypeValue) {
+		TableDeletionElement tableDeletion = ((OdfFileDom) this.ownerDocument).newOdfElement(TableDeletionElement.class);
+		tableDeletion.setTableIdAttribute(tableIdValue);
+		tableDeletion.setTablePositionAttribute(tablePositionValue);
+		tableDeletion.setTableTypeAttribute(tableTypeValue);
+		this.appendChild(tableDeletion);
+		return tableDeletion;
+	}
+
+	/**
+	 * Create child element {@odf.element table:insertion}.
+	 *
+	 * @param tableIdValue  the <code>String</code> value of <code>TableIdAttribute</code>, see {@odf.attribute  table:id} at specification
+	 * @param tablePositionValue  the <code>Integer</code> value of <code>TablePositionAttribute</code>, see {@odf.attribute  table:position} at specification
+	 * @param tableTypeValue  the <code>String</code> value of <code>TableTypeAttribute</code>, see {@odf.attribute  table:type} at specification
+	 * @return the element {@odf.element table:insertion}
+	 */
+	 public TableInsertionElement newTableInsertionElement(String tableIdValue, int tablePositionValue, String tableTypeValue) {
+		TableInsertionElement tableInsertion = ((OdfFileDom) this.ownerDocument).newOdfElement(TableInsertionElement.class);
+		tableInsertion.setTableIdAttribute(tableIdValue);
+		tableInsertion.setTablePositionAttribute(tablePositionValue);
+		tableInsertion.setTableTypeAttribute(tableTypeValue);
+		this.appendChild(tableInsertion);
+		return tableInsertion;
+	}
+
+	/**
+	 * Create child element {@odf.element table:movement}.
+	 *
+	 * @param tableIdValue  the <code>String</code> value of <code>TableIdAttribute</code>, see {@odf.attribute  table:id} at specification
+	 * @return the element {@odf.element table:movement}
+	 */
+	 public TableMovementElement newTableMovementElement(String tableIdValue) {
+		TableMovementElement tableMovement = ((OdfFileDom) this.ownerDocument).newOdfElement(TableMovementElement.class);
+		tableMovement.setTableIdAttribute(tableIdValue);
+		this.appendChild(tableMovement);
+		return tableMovement;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAElement.java
new file mode 100644
index 0000000..ad733a7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAElement.java
@@ -0,0 +1,1920 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTargetFrameNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextVisitedStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:a}.
+ *
+ */
+public class TextAElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "a");
+
+	/**
+	 * Create the instance of <code>TextAElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:a}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTargetFrameNameAttribute() {
+		OfficeTargetFrameNameAttribute attr = (OfficeTargetFrameNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "target-frame-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTargetFrameNameAttribute</code> , See {@odf.attribute office:target-frame-name}
+	 *
+	 * @param officeTargetFrameNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeTargetFrameNameAttribute(String officeTargetFrameNameValue) {
+		OfficeTargetFrameNameAttribute attr = new OfficeTargetFrameNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTargetFrameNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTitleAttribute</code> , See {@odf.attribute office:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTitleAttribute() {
+		OfficeTitleAttribute attr = (OfficeTitleAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTitleAttribute</code> , See {@odf.attribute office:title}
+	 *
+	 * @param officeTitleValue   The type is <code>String</code>
+	 */
+	public void setOfficeTitleAttribute(String officeTitleValue) {
+		OfficeTitleAttribute attr = new OfficeTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextVisitedStyleNameAttribute</code> , See {@odf.attribute text:visited-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextVisitedStyleNameAttribute() {
+		TextVisitedStyleNameAttribute attr = (TextVisitedStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "visited-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextVisitedStyleNameAttribute</code> , See {@odf.attribute text:visited-style-name}
+	 *
+	 * @param textVisitedStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextVisitedStyleNameAttribute(String textVisitedStyleNameValue) {
+		TextVisitedStyleNameAttribute attr = new TextVisitedStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textVisitedStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONREQUEST;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation-end}.
+	 *
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation-end}
+	 */
+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {
+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);
+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(officeAnnotationEnd);
+		return officeAnnotationEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time}.
+	 *
+	 * @return the element {@odf.element presentation:date-time}
+	 */
+	public PresentationDateTimeElement newPresentationDateTimeElement() {
+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);
+		this.appendChild(presentationDateTime);
+		return presentationDateTime;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer}.
+	 *
+	 * @return the element {@odf.element presentation:footer}
+	 */
+	public PresentationFooterElement newPresentationFooterElement() {
+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);
+		this.appendChild(presentationFooter);
+		return presentationFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header}.
+	 *
+	 * @return the element {@odf.element presentation:header}
+	 */
+	public PresentationHeaderElement newPresentationHeaderElement() {
+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);
+		this.appendChild(presentationHeader);
+		return presentationHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark}
+	 */
+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {
+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);
+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textAlphabeticalIndexMark);
+		return textAlphabeticalIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-end}
+	 */
+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {
+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);
+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkEnd);
+		return textAlphabeticalIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-start}
+	 */
+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {
+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);
+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkStart);
+		return textAlphabeticalIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-initials}.
+	 *
+	 * @return the element {@odf.element text:author-initials}
+	 */
+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {
+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);
+		this.appendChild(textAuthorInitials);
+		return textAuthorInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-name}.
+	 *
+	 * @return the element {@odf.element text:author-name}
+	 */
+	public TextAuthorNameElement newTextAuthorNameElement() {
+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);
+		this.appendChild(textAuthorName);
+		return textAuthorName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-mark}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * @return the element {@odf.element text:bibliography-mark}
+	 */
+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {
+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);
+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		this.appendChild(textBibliographyMark);
+		return textBibliographyMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark}
+	 */
+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {
+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);
+		textBookmark.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmark);
+		return textBookmark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-end}
+	 */
+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {
+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);
+		textBookmarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkEnd);
+		return textBookmarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-ref}.
+	 *
+	 * @return the element {@odf.element text:bookmark-ref}
+	 */
+	public TextBookmarkRefElement newTextBookmarkRefElement() {
+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);
+		this.appendChild(textBookmarkRef);
+		return textBookmarkRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-start}
+	 */
+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {
+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);
+		textBookmarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkStart);
+		return textBookmarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:chapter}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:chapter}
+	 */
+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {
+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);
+		textChapter.setTextDisplayAttribute(textDisplayValue);
+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textChapter);
+		return textChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:character-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:character-count}
+	 */
+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {
+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);
+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textCharacterCount);
+		return textCharacterCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:conditional-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification
+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification
+	 * @return the element {@odf.element text:conditional-text}
+	 */
+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {
+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);
+		textConditionalText.setTextConditionAttribute(textConditionValue);
+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);
+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);
+		this.appendChild(textConditionalText);
+		return textConditionalText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-date}.
+	 *
+	 * @return the element {@odf.element text:creation-date}
+	 */
+	public TextCreationDateElement newTextCreationDateElement() {
+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);
+		this.appendChild(textCreationDate);
+		return textCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-time}.
+	 *
+	 * @return the element {@odf.element text:creation-time}
+	 */
+	public TextCreationTimeElement newTextCreationTimeElement() {
+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);
+		this.appendChild(textCreationTime);
+		return textCreationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creator}.
+	 *
+	 * @return the element {@odf.element text:creator}
+	 */
+	public TextCreatorElement newTextCreatorElement() {
+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);
+		this.appendChild(textCreator);
+		return textCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-display}.
+	 *
+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-display}
+	 */
+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {
+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);
+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);
+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseDisplay);
+		return textDatabaseDisplay;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-name}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-name}
+	 */
+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {
+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);
+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseName);
+		return textDatabaseName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-next}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-next}
+	 */
+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {
+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);
+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseNext);
+		return textDatabaseNext;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-number}
+	 */
+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {
+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);
+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowNumber);
+		return textDatabaseRowNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-select}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-select}
+	 */
+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {
+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);
+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowSelect);
+		return textDatabaseRowSelect;
+	}
+
+	/**
+	 * Create child element {@odf.element text:date}.
+	 *
+	 * @return the element {@odf.element text:date}
+	 */
+	public TextDateElement newTextDateElement() {
+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);
+		this.appendChild(textDate);
+		return textDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection}.
+	 *
+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification
+	 * @return the element {@odf.element text:dde-connection}
+	 */
+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {
+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);
+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);
+		this.appendChild(textDdeConnection);
+		return textDdeConnection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:description}.
+	 *
+	 * @return the element {@odf.element text:description}
+	 */
+	public TextDescriptionElement newTextDescriptionElement() {
+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);
+		this.appendChild(textDescription);
+		return textDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-cycles}.
+	 *
+	 * @return the element {@odf.element text:editing-cycles}
+	 */
+	public TextEditingCyclesElement newTextEditingCyclesElement() {
+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);
+		this.appendChild(textEditingCycles);
+		return textEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-duration}.
+	 *
+	 * @return the element {@odf.element text:editing-duration}
+	 */
+	public TextEditingDurationElement newTextEditingDurationElement() {
+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);
+		this.appendChild(textEditingDuration);
+		return textEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:execute-macro}.
+	 *
+	 * @return the element {@odf.element text:execute-macro}
+	 */
+	public TextExecuteMacroElement newTextExecuteMacroElement() {
+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);
+		this.appendChild(textExecuteMacro);
+		return textExecuteMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element text:expression}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element text:expression}
+	 */
+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {
+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);
+		textExpression.setOfficeValueAttribute(officeValueValue);
+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(textExpression);
+		return textExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element text:file-name}.
+	 *
+	 * @return the element {@odf.element text:file-name}
+	 */
+	public TextFileNameElement newTextFileNameElement() {
+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);
+		this.appendChild(textFileName);
+		return textFileName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-paragraph}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @return the element {@odf.element text:hidden-paragraph}
+	 */
+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {
+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);
+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);
+		this.appendChild(textHiddenParagraph);
+		return textHiddenParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:hidden-text}
+	 */
+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {
+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);
+		textHiddenText.setTextConditionAttribute(textConditionValue);
+		textHiddenText.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textHiddenText);
+		return textHiddenText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:image-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:image-count}
+	 */
+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {
+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);
+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textImageCount);
+		return textImageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:initial-creator}.
+	 *
+	 * @return the element {@odf.element text:initial-creator}
+	 */
+	public TextInitialCreatorElement newTextInitialCreatorElement() {
+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);
+		this.appendChild(textInitialCreator);
+		return textInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:keywords}.
+	 *
+	 * @return the element {@odf.element text:keywords}
+	 */
+	public TextKeywordsElement newTextKeywordsElement() {
+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);
+		this.appendChild(textKeywords);
+		return textKeywords;
+	}
+
+	/**
+	 * Create child element {@odf.element text:line-break}.
+	 *
+	 * @return the element {@odf.element text:line-break}
+	 */
+	public TextLineBreakElement newTextLineBreakElement() {
+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);
+		this.appendChild(textLineBreak);
+		return textLineBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:measure}.
+	 *
+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification
+	 * @return the element {@odf.element text:measure}
+	 */
+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {
+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);
+		textMeasure.setTextKindAttribute(textKindValue);
+		this.appendChild(textMeasure);
+		return textMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta}
+	 */
+	public TextMetaElement newTextMetaElement() {
+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);
+		this.appendChild(textMeta);
+		return textMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta-field}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta-field}
+	 */
+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {
+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);
+		textMetaField.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textMetaField);
+		return textMetaField;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-date}.
+	 *
+	 * @return the element {@odf.element text:modification-date}
+	 */
+	public TextModificationDateElement newTextModificationDateElement() {
+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);
+		this.appendChild(textModificationDate);
+		return textModificationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-time}.
+	 *
+	 * @return the element {@odf.element text:modification-time}
+	 */
+	public TextModificationTimeElement newTextModificationTimeElement() {
+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);
+		this.appendChild(textModificationTime);
+		return textModificationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note}
+	 */
+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {
+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);
+		textNote.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNote);
+		return textNote;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-ref}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note-ref}
+	 */
+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {
+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);
+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNoteRef);
+		return textNoteRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:object-count}
+	 */
+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {
+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);
+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textObjectCount);
+		return textObjectCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-continuation}.
+	 *
+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification
+	 * @return the element {@odf.element text:page-continuation}
+	 */
+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {
+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);
+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);
+		this.appendChild(textPageContinuation);
+		return textPageContinuation;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-count}
+	 */
+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {
+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);
+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageCount);
+		return textPageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-number}
+	 */
+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {
+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);
+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageNumber);
+		return textPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-get}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-variable-get}
+	 */
+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {
+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);
+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageVariableGet);
+		return textPageVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-set}.
+	 *
+	 * @return the element {@odf.element text:page-variable-set}
+	 */
+	public TextPageVariableSetElement newTextPageVariableSetElement() {
+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);
+		this.appendChild(textPageVariableSet);
+		return textPageVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:paragraph-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:paragraph-count}
+	 */
+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {
+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);
+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textParagraphCount);
+		return textParagraphCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:placeholder}.
+	 *
+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification
+	 * @return the element {@odf.element text:placeholder}
+	 */
+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {
+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);
+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);
+		this.appendChild(textPlaceholder);
+		return textPlaceholder;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-date}.
+	 *
+	 * @return the element {@odf.element text:print-date}
+	 */
+	public TextPrintDateElement newTextPrintDateElement() {
+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);
+		this.appendChild(textPrintDate);
+		return textPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-time}.
+	 *
+	 * @return the element {@odf.element text:print-time}
+	 */
+	public TextPrintTimeElement newTextPrintTimeElement() {
+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);
+		this.appendChild(textPrintTime);
+		return textPrintTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:printed-by}.
+	 *
+	 * @return the element {@odf.element text:printed-by}
+	 */
+	public TextPrintedByElement newTextPrintedByElement() {
+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);
+		this.appendChild(textPrintedBy);
+		return textPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark}
+	 */
+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {
+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);
+		textReferenceMark.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMark);
+		return textReferenceMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-end}
+	 */
+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {
+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);
+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkEnd);
+		return textReferenceMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-start}
+	 */
+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {
+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);
+		textReferenceMarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkStart);
+		return textReferenceMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-ref}.
+	 *
+	 * @return the element {@odf.element text:reference-ref}
+	 */
+	public TextReferenceRefElement newTextReferenceRefElement() {
+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);
+		this.appendChild(textReferenceRef);
+		return textReferenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby}.
+	 *
+	 * @return the element {@odf.element text:ruby}
+	 */
+	public TextRubyElement newTextRubyElement() {
+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);
+		this.appendChild(textRuby);
+		return textRuby;
+	}
+
+	/**
+	 * Create child element {@odf.element text:s}.
+	 *
+	 * @return the element {@odf.element text:s}
+	 */
+	public TextSElement newTextSElement() {
+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);
+		this.appendChild(textS);
+		return textS;
+	}
+
+	/**
+	 * Create child element {@odf.element text:script}.
+	 *
+	 * @return the element {@odf.element text:script}
+	 */
+	public TextScriptElement newTextScriptElement() {
+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);
+		this.appendChild(textScript);
+		return textScript;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-city}.
+	 *
+	 * @return the element {@odf.element text:sender-city}
+	 */
+	public TextSenderCityElement newTextSenderCityElement() {
+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);
+		this.appendChild(textSenderCity);
+		return textSenderCity;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-company}.
+	 *
+	 * @return the element {@odf.element text:sender-company}
+	 */
+	public TextSenderCompanyElement newTextSenderCompanyElement() {
+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);
+		this.appendChild(textSenderCompany);
+		return textSenderCompany;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-country}.
+	 *
+	 * @return the element {@odf.element text:sender-country}
+	 */
+	public TextSenderCountryElement newTextSenderCountryElement() {
+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);
+		this.appendChild(textSenderCountry);
+		return textSenderCountry;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-email}.
+	 *
+	 * @return the element {@odf.element text:sender-email}
+	 */
+	public TextSenderEmailElement newTextSenderEmailElement() {
+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);
+		this.appendChild(textSenderEmail);
+		return textSenderEmail;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-fax}.
+	 *
+	 * @return the element {@odf.element text:sender-fax}
+	 */
+	public TextSenderFaxElement newTextSenderFaxElement() {
+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);
+		this.appendChild(textSenderFax);
+		return textSenderFax;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-firstname}.
+	 *
+	 * @return the element {@odf.element text:sender-firstname}
+	 */
+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {
+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);
+		this.appendChild(textSenderFirstname);
+		return textSenderFirstname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-initials}.
+	 *
+	 * @return the element {@odf.element text:sender-initials}
+	 */
+	public TextSenderInitialsElement newTextSenderInitialsElement() {
+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);
+		this.appendChild(textSenderInitials);
+		return textSenderInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-lastname}.
+	 *
+	 * @return the element {@odf.element text:sender-lastname}
+	 */
+	public TextSenderLastnameElement newTextSenderLastnameElement() {
+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);
+		this.appendChild(textSenderLastname);
+		return textSenderLastname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-private}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-private}
+	 */
+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {
+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);
+		this.appendChild(textSenderPhonePrivate);
+		return textSenderPhonePrivate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-work}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-work}
+	 */
+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {
+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);
+		this.appendChild(textSenderPhoneWork);
+		return textSenderPhoneWork;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-position}.
+	 *
+	 * @return the element {@odf.element text:sender-position}
+	 */
+	public TextSenderPositionElement newTextSenderPositionElement() {
+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);
+		this.appendChild(textSenderPosition);
+		return textSenderPosition;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-postal-code}.
+	 *
+	 * @return the element {@odf.element text:sender-postal-code}
+	 */
+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {
+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);
+		this.appendChild(textSenderPostalCode);
+		return textSenderPostalCode;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-state-or-province}.
+	 *
+	 * @return the element {@odf.element text:sender-state-or-province}
+	 */
+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {
+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);
+		this.appendChild(textSenderStateOrProvince);
+		return textSenderStateOrProvince;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-street}.
+	 *
+	 * @return the element {@odf.element text:sender-street}
+	 */
+	public TextSenderStreetElement newTextSenderStreetElement() {
+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);
+		this.appendChild(textSenderStreet);
+		return textSenderStreet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-title}.
+	 *
+	 * @return the element {@odf.element text:sender-title}
+	 */
+	public TextSenderTitleElement newTextSenderTitleElement() {
+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);
+		this.appendChild(textSenderTitle);
+		return textSenderTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:sequence}
+	 */
+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {
+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);
+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);
+		textSequence.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequence);
+		return textSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-ref}.
+	 *
+	 * @return the element {@odf.element text:sequence-ref}
+	 */
+	public TextSequenceRefElement newTextSequenceRefElement() {
+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);
+		this.appendChild(textSequenceRef);
+		return textSequenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sheet-name}.
+	 *
+	 * @return the element {@odf.element text:sheet-name}
+	 */
+	public TextSheetNameElement newTextSheetNameElement() {
+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);
+		this.appendChild(textSheetName);
+		return textSheetName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:span}.
+	 *
+	 * @return the element {@odf.element text:span}
+	 */
+	public TextSpanElement newTextSpanElement() {
+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);
+		this.appendChild(textSpan);
+		return textSpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:subject}.
+	 *
+	 * @return the element {@odf.element text:subject}
+	 */
+	public TextSubjectElement newTextSubjectElement() {
+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);
+		this.appendChild(textSubject);
+		return textSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tab}.
+	 *
+	 * @return the element {@odf.element text:tab}
+	 */
+	public TextTabElement newTextTabElement() {
+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);
+		this.appendChild(textTab);
+		return textTab;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:table-count}
+	 */
+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {
+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);
+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textTableCount);
+		return textTableCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-formula}.
+	 *
+	 * @return the element {@odf.element text:table-formula}
+	 */
+	public TextTableFormulaElement newTextTableFormulaElement() {
+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);
+		this.appendChild(textTableFormula);
+		return textTableFormula;
+	}
+
+	/**
+	 * Create child element {@odf.element text:template-name}.
+	 *
+	 * @return the element {@odf.element text:template-name}
+	 */
+	public TextTemplateNameElement newTextTemplateNameElement() {
+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);
+		this.appendChild(textTemplateName);
+		return textTemplateName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:text-input}.
+	 *
+	 * @return the element {@odf.element text:text-input}
+	 */
+	public TextTextInputElement newTextTextInputElement() {
+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);
+		this.appendChild(textTextInput);
+		return textTextInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:time}.
+	 *
+	 * @return the element {@odf.element text:time}
+	 */
+	public TextTimeElement newTextTimeElement() {
+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);
+		this.appendChild(textTime);
+		return textTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:title}.
+	 *
+	 * @return the element {@odf.element text:title}
+	 */
+	public TextTitleElement newTextTitleElement() {
+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);
+		this.appendChild(textTitle);
+		return textTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:toc-mark}
+	 */
+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {
+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);
+		textTocMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textTocMark);
+		return textTocMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-end}
+	 */
+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {
+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);
+		textTocMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkEnd);
+		return textTocMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-start}
+	 */
+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {
+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);
+		textTocMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkStart);
+		return textTocMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-defined}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-defined}
+	 */
+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {
+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);
+		textUserDefined.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserDefined);
+		return textUserDefined;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-get}
+	 */
+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {
+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);
+		textUserFieldGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldGet);
+		return textUserFieldGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-input}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-input}
+	 */
+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {
+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);
+		textUserFieldInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldInput);
+		return textUserFieldInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:user-index-mark}
+	 */
+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {
+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);
+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);
+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textUserIndexMark);
+		return textUserIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:user-index-mark-end}
+	 */
+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {
+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);
+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textUserIndexMarkEnd);
+		return textUserIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @return the element {@odf.element text:user-index-mark-start}
+	 */
+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {
+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);
+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);
+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexMarkStart);
+		return textUserIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-get}
+	 */
+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {
+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);
+		textVariableGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableGet);
+		return textVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-input}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-input}
+	 */
+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);
+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableInput);
+		return textVariableInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-set}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-set}
+	 */
+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);
+		textVariableSet.setOfficeValueAttribute(officeValueValue);
+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableSet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableSet);
+		return textVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:word-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:word-count}
+	 */
+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {
+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);
+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textWordCount);
+		return textWordCount;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexAutoMarkFileElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexAutoMarkFileElement.java
new file mode 100644
index 0000000..89d9732
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexAutoMarkFileElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index-auto-mark-file}.
+ *
+ */
+public class TextAlphabeticalIndexAutoMarkFileElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index-auto-mark-file");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexAutoMarkFileElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexAutoMarkFileElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index-auto-mark-file}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexElement.java
new file mode 100644
index 0000000..a589c14
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index}.
+ *
+ */
+public class TextAlphabeticalIndexElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-source}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:alphabetical-index-source}
+	 */
+	public TextAlphabeticalIndexSourceElement newTextAlphabeticalIndexSourceElement() {
+		TextAlphabeticalIndexSourceElement textAlphabeticalIndexSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexSourceElement.class);
+		this.appendChild(textAlphabeticalIndexSource);
+		return textAlphabeticalIndexSource;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexEntryTemplateElement.java
new file mode 100644
index 0000000..c2cdf48
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexEntryTemplateElement.java
@@ -0,0 +1,184 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index-entry-template}.
+ *
+ */
+public class TextAlphabeticalIndexEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index-entry-template");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-chapter}.
+	 *
+	 * @return the element {@odf.element text:index-entry-chapter}
+	 */
+	public TextIndexEntryChapterElement newTextIndexEntryChapterElement() {
+		TextIndexEntryChapterElement textIndexEntryChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryChapterElement.class);
+		this.appendChild(textIndexEntryChapter);
+		return textIndexEntryChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-page-number}.
+	 *
+	 * @return the element {@odf.element text:index-entry-page-number}
+	 */
+	public TextIndexEntryPageNumberElement newTextIndexEntryPageNumberElement() {
+		TextIndexEntryPageNumberElement textIndexEntryPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryPageNumberElement.class);
+		this.appendChild(textIndexEntryPageNumber);
+		return textIndexEntryPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-text}.
+	 *
+	 * @return the element {@odf.element text:index-entry-text}
+	 */
+	public TextIndexEntryTextElement newTextIndexEntryTextElement() {
+		TextIndexEntryTextElement textIndexEntryText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTextElement.class);
+		this.appendChild(textIndexEntryText);
+		return textIndexEntryText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkElement.java
new file mode 100644
index 0000000..98f630f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkElement.java
@@ -0,0 +1,248 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey1PhoneticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey2PhoneticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMainEntryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValuePhoneticAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index-mark}.
+ *
+ */
+public class TextAlphabeticalIndexMarkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index-mark");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexMarkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexMarkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index-mark}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey1Attribute</code> , See {@odf.attribute text:key1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey1Attribute() {
+		TextKey1Attribute attr = (TextKey1Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey1Attribute</code> , See {@odf.attribute text:key1}
+	 *
+	 * @param textKey1Value   The type is <code>String</code>
+	 */
+	public void setTextKey1Attribute(String textKey1Value) {
+		TextKey1Attribute attr = new TextKey1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey1PhoneticAttribute</code> , See {@odf.attribute text:key1-phonetic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey1PhoneticAttribute() {
+		TextKey1PhoneticAttribute attr = (TextKey1PhoneticAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key1-phonetic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey1PhoneticAttribute</code> , See {@odf.attribute text:key1-phonetic}
+	 *
+	 * @param textKey1PhoneticValue   The type is <code>String</code>
+	 */
+	public void setTextKey1PhoneticAttribute(String textKey1PhoneticValue) {
+		TextKey1PhoneticAttribute attr = new TextKey1PhoneticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey1PhoneticValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey2Attribute</code> , See {@odf.attribute text:key2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey2Attribute() {
+		TextKey2Attribute attr = (TextKey2Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey2Attribute</code> , See {@odf.attribute text:key2}
+	 *
+	 * @param textKey2Value   The type is <code>String</code>
+	 */
+	public void setTextKey2Attribute(String textKey2Value) {
+		TextKey2Attribute attr = new TextKey2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey2PhoneticAttribute</code> , See {@odf.attribute text:key2-phonetic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey2PhoneticAttribute() {
+		TextKey2PhoneticAttribute attr = (TextKey2PhoneticAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key2-phonetic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey2PhoneticAttribute</code> , See {@odf.attribute text:key2-phonetic}
+	 *
+	 * @param textKey2PhoneticValue   The type is <code>String</code>
+	 */
+	public void setTextKey2PhoneticAttribute(String textKey2PhoneticValue) {
+		TextKey2PhoneticAttribute attr = new TextKey2PhoneticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey2PhoneticValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMainEntryAttribute</code> , See {@odf.attribute text:main-entry}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextMainEntryAttribute() {
+		TextMainEntryAttribute attr = (TextMainEntryAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "main-entry");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextMainEntryAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMainEntryAttribute</code> , See {@odf.attribute text:main-entry}
+	 *
+	 * @param textMainEntryValue   The type is <code>Boolean</code>
+	 */
+	public void setTextMainEntryAttribute(Boolean textMainEntryValue) {
+		TextMainEntryAttribute attr = new TextMainEntryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textMainEntryValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueAttribute() {
+		TextStringValueAttribute attr = (TextStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * @param textStringValueValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueAttribute(String textStringValueValue) {
+		TextStringValueAttribute attr = new TextStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValuePhoneticAttribute</code> , See {@odf.attribute text:string-value-phonetic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValuePhoneticAttribute() {
+		TextStringValuePhoneticAttribute attr = (TextStringValuePhoneticAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value-phonetic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValuePhoneticAttribute</code> , See {@odf.attribute text:string-value-phonetic}
+	 *
+	 * @param textStringValuePhoneticValue   The type is <code>String</code>
+	 */
+	public void setTextStringValuePhoneticAttribute(String textStringValuePhoneticValue) {
+		TextStringValuePhoneticAttribute attr = new TextStringValuePhoneticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValuePhoneticValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkEndElement.java
new file mode 100644
index 0000000..1975840
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index-mark-end}.
+ *
+ */
+public class TextAlphabeticalIndexMarkEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index-mark-end");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexMarkEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexMarkEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index-mark-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkStartElement.java
new file mode 100644
index 0000000..5eabfaa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexMarkStartElement.java
@@ -0,0 +1,248 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey1PhoneticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKey2PhoneticAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMainEntryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValuePhoneticAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index-mark-start}.
+ *
+ */
+public class TextAlphabeticalIndexMarkStartElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index-mark-start");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexMarkStartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexMarkStartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index-mark-start}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey1Attribute</code> , See {@odf.attribute text:key1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey1Attribute() {
+		TextKey1Attribute attr = (TextKey1Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey1Attribute</code> , See {@odf.attribute text:key1}
+	 *
+	 * @param textKey1Value   The type is <code>String</code>
+	 */
+	public void setTextKey1Attribute(String textKey1Value) {
+		TextKey1Attribute attr = new TextKey1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey1PhoneticAttribute</code> , See {@odf.attribute text:key1-phonetic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey1PhoneticAttribute() {
+		TextKey1PhoneticAttribute attr = (TextKey1PhoneticAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key1-phonetic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey1PhoneticAttribute</code> , See {@odf.attribute text:key1-phonetic}
+	 *
+	 * @param textKey1PhoneticValue   The type is <code>String</code>
+	 */
+	public void setTextKey1PhoneticAttribute(String textKey1PhoneticValue) {
+		TextKey1PhoneticAttribute attr = new TextKey1PhoneticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey1PhoneticValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey2Attribute</code> , See {@odf.attribute text:key2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey2Attribute() {
+		TextKey2Attribute attr = (TextKey2Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey2Attribute</code> , See {@odf.attribute text:key2}
+	 *
+	 * @param textKey2Value   The type is <code>String</code>
+	 */
+	public void setTextKey2Attribute(String textKey2Value) {
+		TextKey2Attribute attr = new TextKey2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKey2PhoneticAttribute</code> , See {@odf.attribute text:key2-phonetic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKey2PhoneticAttribute() {
+		TextKey2PhoneticAttribute attr = (TextKey2PhoneticAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key2-phonetic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKey2PhoneticAttribute</code> , See {@odf.attribute text:key2-phonetic}
+	 *
+	 * @param textKey2PhoneticValue   The type is <code>String</code>
+	 */
+	public void setTextKey2PhoneticAttribute(String textKey2PhoneticValue) {
+		TextKey2PhoneticAttribute attr = new TextKey2PhoneticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKey2PhoneticValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMainEntryAttribute</code> , See {@odf.attribute text:main-entry}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextMainEntryAttribute() {
+		TextMainEntryAttribute attr = (TextMainEntryAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "main-entry");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextMainEntryAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMainEntryAttribute</code> , See {@odf.attribute text:main-entry}
+	 *
+	 * @param textMainEntryValue   The type is <code>Boolean</code>
+	 */
+	public void setTextMainEntryAttribute(Boolean textMainEntryValue) {
+		TextMainEntryAttribute attr = new TextMainEntryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textMainEntryValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValuePhoneticAttribute</code> , See {@odf.attribute text:string-value-phonetic}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValuePhoneticAttribute() {
+		TextStringValuePhoneticAttribute attr = (TextStringValuePhoneticAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value-phonetic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValuePhoneticAttribute</code> , See {@odf.attribute text:string-value-phonetic}
+	 *
+	 * @param textStringValuePhoneticValue   The type is <code>String</code>
+	 */
+	public void setTextStringValuePhoneticAttribute(String textStringValuePhoneticValue) {
+		TextStringValuePhoneticAttribute attr = new TextStringValuePhoneticAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValuePhoneticValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexSourceElement.java
new file mode 100644
index 0000000..57b577b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAlphabeticalIndexSourceElement.java
@@ -0,0 +1,497 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAlphabeticalSeparatorsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCapitalizeEntriesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCombineEntriesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCombineEntriesWithDashAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCombineEntriesWithPpAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCommaSeparatedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIgnoreCaseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexScopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMainEntryStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRelativeTabStopPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSortAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseKeysAsEntriesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:alphabetical-index-source}.
+ *
+ */
+public class TextAlphabeticalIndexSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "alphabetical-index-source");
+
+	/**
+	 * Create the instance of <code>TextAlphabeticalIndexSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAlphabeticalIndexSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:alphabetical-index-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoCountryAttribute</code> , See {@odf.attribute fo:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoCountryAttribute() {
+		FoCountryAttribute attr = (FoCountryAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoCountryAttribute</code> , See {@odf.attribute fo:country}
+	 *
+	 * @param foCountryValue   The type is <code>String</code>
+	 */
+	public void setFoCountryAttribute(String foCountryValue) {
+		FoCountryAttribute attr = new FoCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoLanguageAttribute</code> , See {@odf.attribute fo:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoLanguageAttribute() {
+		FoLanguageAttribute attr = (FoLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoLanguageAttribute</code> , See {@odf.attribute fo:language}
+	 *
+	 * @param foLanguageValue   The type is <code>String</code>
+	 */
+	public void setFoLanguageAttribute(String foLanguageValue) {
+		FoLanguageAttribute attr = new FoLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoScriptAttribute</code> , See {@odf.attribute fo:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoScriptAttribute() {
+		FoScriptAttribute attr = (FoScriptAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoScriptAttribute</code> , See {@odf.attribute fo:script}
+	 *
+	 * @param foScriptValue   The type is <code>String</code>
+	 */
+	public void setFoScriptAttribute(String foScriptValue) {
+		FoScriptAttribute attr = new FoScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRfcLanguageTagAttribute</code> , See {@odf.attribute style:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRfcLanguageTagAttribute() {
+		StyleRfcLanguageTagAttribute attr = (StyleRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRfcLanguageTagAttribute</code> , See {@odf.attribute style:rfc-language-tag}
+	 *
+	 * @param styleRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setStyleRfcLanguageTagAttribute(String styleRfcLanguageTagValue) {
+		StyleRfcLanguageTagAttribute attr = new StyleRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAlphabeticalSeparatorsAttribute</code> , See {@odf.attribute text:alphabetical-separators}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextAlphabeticalSeparatorsAttribute() {
+		TextAlphabeticalSeparatorsAttribute attr = (TextAlphabeticalSeparatorsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "alphabetical-separators");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextAlphabeticalSeparatorsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAlphabeticalSeparatorsAttribute</code> , See {@odf.attribute text:alphabetical-separators}
+	 *
+	 * @param textAlphabeticalSeparatorsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextAlphabeticalSeparatorsAttribute(Boolean textAlphabeticalSeparatorsValue) {
+		TextAlphabeticalSeparatorsAttribute attr = new TextAlphabeticalSeparatorsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textAlphabeticalSeparatorsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCapitalizeEntriesAttribute</code> , See {@odf.attribute text:capitalize-entries}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCapitalizeEntriesAttribute() {
+		TextCapitalizeEntriesAttribute attr = (TextCapitalizeEntriesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "capitalize-entries");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCapitalizeEntriesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCapitalizeEntriesAttribute</code> , See {@odf.attribute text:capitalize-entries}
+	 *
+	 * @param textCapitalizeEntriesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCapitalizeEntriesAttribute(Boolean textCapitalizeEntriesValue) {
+		TextCapitalizeEntriesAttribute attr = new TextCapitalizeEntriesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCapitalizeEntriesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCombineEntriesAttribute</code> , See {@odf.attribute text:combine-entries}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCombineEntriesAttribute() {
+		TextCombineEntriesAttribute attr = (TextCombineEntriesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "combine-entries");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCombineEntriesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCombineEntriesAttribute</code> , See {@odf.attribute text:combine-entries}
+	 *
+	 * @param textCombineEntriesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCombineEntriesAttribute(Boolean textCombineEntriesValue) {
+		TextCombineEntriesAttribute attr = new TextCombineEntriesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCombineEntriesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCombineEntriesWithDashAttribute</code> , See {@odf.attribute text:combine-entries-with-dash}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCombineEntriesWithDashAttribute() {
+		TextCombineEntriesWithDashAttribute attr = (TextCombineEntriesWithDashAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "combine-entries-with-dash");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCombineEntriesWithDashAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCombineEntriesWithDashAttribute</code> , See {@odf.attribute text:combine-entries-with-dash}
+	 *
+	 * @param textCombineEntriesWithDashValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCombineEntriesWithDashAttribute(Boolean textCombineEntriesWithDashValue) {
+		TextCombineEntriesWithDashAttribute attr = new TextCombineEntriesWithDashAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCombineEntriesWithDashValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCombineEntriesWithPpAttribute</code> , See {@odf.attribute text:combine-entries-with-pp}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCombineEntriesWithPpAttribute() {
+		TextCombineEntriesWithPpAttribute attr = (TextCombineEntriesWithPpAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "combine-entries-with-pp");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCombineEntriesWithPpAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCombineEntriesWithPpAttribute</code> , See {@odf.attribute text:combine-entries-with-pp}
+	 *
+	 * @param textCombineEntriesWithPpValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCombineEntriesWithPpAttribute(Boolean textCombineEntriesWithPpValue) {
+		TextCombineEntriesWithPpAttribute attr = new TextCombineEntriesWithPpAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCombineEntriesWithPpValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCommaSeparatedAttribute</code> , See {@odf.attribute text:comma-separated}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCommaSeparatedAttribute() {
+		TextCommaSeparatedAttribute attr = (TextCommaSeparatedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "comma-separated");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCommaSeparatedAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCommaSeparatedAttribute</code> , See {@odf.attribute text:comma-separated}
+	 *
+	 * @param textCommaSeparatedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCommaSeparatedAttribute(Boolean textCommaSeparatedValue) {
+		TextCommaSeparatedAttribute attr = new TextCommaSeparatedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCommaSeparatedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIgnoreCaseAttribute</code> , See {@odf.attribute text:ignore-case}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextIgnoreCaseAttribute() {
+		TextIgnoreCaseAttribute attr = (TextIgnoreCaseAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "ignore-case");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextIgnoreCaseAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIgnoreCaseAttribute</code> , See {@odf.attribute text:ignore-case}
+	 *
+	 * @param textIgnoreCaseValue   The type is <code>Boolean</code>
+	 */
+	public void setTextIgnoreCaseAttribute(Boolean textIgnoreCaseValue) {
+		TextIgnoreCaseAttribute attr = new TextIgnoreCaseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textIgnoreCaseValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexScopeAttribute() {
+		TextIndexScopeAttribute attr = (TextIndexScopeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-scope");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextIndexScopeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @param textIndexScopeValue   The type is <code>String</code>
+	 */
+	public void setTextIndexScopeAttribute(String textIndexScopeValue) {
+		TextIndexScopeAttribute attr = new TextIndexScopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexScopeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMainEntryStyleNameAttribute</code> , See {@odf.attribute text:main-entry-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextMainEntryStyleNameAttribute() {
+		TextMainEntryStyleNameAttribute attr = (TextMainEntryStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "main-entry-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMainEntryStyleNameAttribute</code> , See {@odf.attribute text:main-entry-style-name}
+	 *
+	 * @param textMainEntryStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextMainEntryStyleNameAttribute(String textMainEntryStyleNameValue) {
+		TextMainEntryStyleNameAttribute attr = new TextMainEntryStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textMainEntryStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRelativeTabStopPositionAttribute() {
+		TextRelativeTabStopPositionAttribute attr = (TextRelativeTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRelativeTabStopPositionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @param textRelativeTabStopPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRelativeTabStopPositionAttribute(Boolean textRelativeTabStopPositionValue) {
+		TextRelativeTabStopPositionAttribute attr = new TextRelativeTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRelativeTabStopPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSortAlgorithmAttribute</code> , See {@odf.attribute text:sort-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSortAlgorithmAttribute() {
+		TextSortAlgorithmAttribute attr = (TextSortAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "sort-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSortAlgorithmAttribute</code> , See {@odf.attribute text:sort-algorithm}
+	 *
+	 * @param textSortAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextSortAlgorithmAttribute(String textSortAlgorithmValue) {
+		TextSortAlgorithmAttribute attr = new TextSortAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSortAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseKeysAsEntriesAttribute</code> , See {@odf.attribute text:use-keys-as-entries}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseKeysAsEntriesAttribute() {
+		TextUseKeysAsEntriesAttribute attr = (TextUseKeysAsEntriesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-keys-as-entries");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseKeysAsEntriesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseKeysAsEntriesAttribute</code> , See {@odf.attribute text:use-keys-as-entries}
+	 *
+	 * @param textUseKeysAsEntriesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseKeysAsEntriesAttribute(Boolean textUseKeysAsEntriesValue) {
+		TextUseKeysAsEntriesAttribute attr = new TextUseKeysAsEntriesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseKeysAsEntriesValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-entry-template}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:alphabetical-index-entry-template}
+	 */
+	 public TextAlphabeticalIndexEntryTemplateElement newTextAlphabeticalIndexEntryTemplateElement(int textOutlineLevelValue, String textStyleNameValue) {
+		TextAlphabeticalIndexEntryTemplateElement textAlphabeticalIndexEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexEntryTemplateElement.class);
+		textAlphabeticalIndexEntryTemplate.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		textAlphabeticalIndexEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textAlphabeticalIndexEntryTemplate);
+		return textAlphabeticalIndexEntryTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAuthorInitialsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAuthorInitialsElement.java
new file mode 100644
index 0000000..fa40e8e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAuthorInitialsElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:author-initials}.
+ *
+ */
+public class TextAuthorInitialsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "author-initials");
+
+	/**
+	 * Create the instance of <code>TextAuthorInitialsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAuthorInitialsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:author-initials}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAuthorNameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAuthorNameElement.java
new file mode 100644
index 0000000..04086a3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextAuthorNameElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:author-name}.
+ *
+ */
+public class TextAuthorNameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "author-name");
+
+	/**
+	 * Create the instance of <code>TextAuthorNameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextAuthorNameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:author-name}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyConfigurationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyConfigurationElement.java
new file mode 100644
index 0000000..968aa6c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyConfigurationElement.java
@@ -0,0 +1,309 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoScriptAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRfcLanguageTagAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNumberedEntriesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextPrefixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSortAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSortByPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSuffixAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bibliography-configuration}.
+ *
+ */
+public class TextBibliographyConfigurationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography-configuration");
+
+	/**
+	 * Create the instance of <code>TextBibliographyConfigurationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographyConfigurationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bibliography-configuration}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoCountryAttribute</code> , See {@odf.attribute fo:country}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoCountryAttribute() {
+		FoCountryAttribute attr = (FoCountryAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "country");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoCountryAttribute</code> , See {@odf.attribute fo:country}
+	 *
+	 * @param foCountryValue   The type is <code>String</code>
+	 */
+	public void setFoCountryAttribute(String foCountryValue) {
+		FoCountryAttribute attr = new FoCountryAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foCountryValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoLanguageAttribute</code> , See {@odf.attribute fo:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoLanguageAttribute() {
+		FoLanguageAttribute attr = (FoLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoLanguageAttribute</code> , See {@odf.attribute fo:language}
+	 *
+	 * @param foLanguageValue   The type is <code>String</code>
+	 */
+	public void setFoLanguageAttribute(String foLanguageValue) {
+		FoLanguageAttribute attr = new FoLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>FoScriptAttribute</code> , See {@odf.attribute fo:script}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getFoScriptAttribute() {
+		FoScriptAttribute attr = (FoScriptAttribute) getOdfAttribute(OdfDocumentNamespace.FO, "script");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>FoScriptAttribute</code> , See {@odf.attribute fo:script}
+	 *
+	 * @param foScriptValue   The type is <code>String</code>
+	 */
+	public void setFoScriptAttribute(String foScriptValue) {
+		FoScriptAttribute attr = new FoScriptAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(foScriptValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleRfcLanguageTagAttribute</code> , See {@odf.attribute style:rfc-language-tag}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleRfcLanguageTagAttribute() {
+		StyleRfcLanguageTagAttribute attr = (StyleRfcLanguageTagAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "rfc-language-tag");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleRfcLanguageTagAttribute</code> , See {@odf.attribute style:rfc-language-tag}
+	 *
+	 * @param styleRfcLanguageTagValue   The type is <code>String</code>
+	 */
+	public void setStyleRfcLanguageTagAttribute(String styleRfcLanguageTagValue) {
+		StyleRfcLanguageTagAttribute attr = new StyleRfcLanguageTagAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleRfcLanguageTagValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNumberedEntriesAttribute</code> , See {@odf.attribute text:numbered-entries}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextNumberedEntriesAttribute() {
+		TextNumberedEntriesAttribute attr = (TextNumberedEntriesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "numbered-entries");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextNumberedEntriesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNumberedEntriesAttribute</code> , See {@odf.attribute text:numbered-entries}
+	 *
+	 * @param textNumberedEntriesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextNumberedEntriesAttribute(Boolean textNumberedEntriesValue) {
+		TextNumberedEntriesAttribute attr = new TextNumberedEntriesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textNumberedEntriesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextPrefixAttribute</code> , See {@odf.attribute text:prefix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextPrefixAttribute() {
+		TextPrefixAttribute attr = (TextPrefixAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "prefix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextPrefixAttribute</code> , See {@odf.attribute text:prefix}
+	 *
+	 * @param textPrefixValue   The type is <code>String</code>
+	 */
+	public void setTextPrefixAttribute(String textPrefixValue) {
+		TextPrefixAttribute attr = new TextPrefixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textPrefixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSortAlgorithmAttribute</code> , See {@odf.attribute text:sort-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSortAlgorithmAttribute() {
+		TextSortAlgorithmAttribute attr = (TextSortAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "sort-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSortAlgorithmAttribute</code> , See {@odf.attribute text:sort-algorithm}
+	 *
+	 * @param textSortAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextSortAlgorithmAttribute(String textSortAlgorithmValue) {
+		TextSortAlgorithmAttribute attr = new TextSortAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSortAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSortByPositionAttribute</code> , See {@odf.attribute text:sort-by-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextSortByPositionAttribute() {
+		TextSortByPositionAttribute attr = (TextSortByPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "sort-by-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextSortByPositionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSortByPositionAttribute</code> , See {@odf.attribute text:sort-by-position}
+	 *
+	 * @param textSortByPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextSortByPositionAttribute(Boolean textSortByPositionValue) {
+		TextSortByPositionAttribute attr = new TextSortByPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textSortByPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSuffixAttribute</code> , See {@odf.attribute text:suffix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSuffixAttribute() {
+		TextSuffixAttribute attr = (TextSuffixAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "suffix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSuffixAttribute</code> , See {@odf.attribute text:suffix}
+	 *
+	 * @param textSuffixValue   The type is <code>String</code>
+	 */
+	public void setTextSuffixAttribute(String textSuffixValue) {
+		TextSuffixAttribute attr = new TextSuffixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSuffixValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:sort-key}.
+	 *
+	 * @param textKeyValue  the <code>String</code> value of <code>TextKeyAttribute</code>, see {@odf.attribute  text:key} at specification
+	 * @return the element {@odf.element text:sort-key}
+	 */
+	 public TextSortKeyElement newTextSortKeyElement(String textKeyValue) {
+		TextSortKeyElement textSortKey = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSortKeyElement.class);
+		textSortKey.setTextKeyAttribute(textKeyValue);
+		this.appendChild(textSortKey);
+		return textSortKey;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyElement.java
new file mode 100644
index 0000000..8c6104f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bibliography}.
+ *
+ */
+public class TextBibliographyElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography");
+
+	/**
+	 * Create the instance of <code>TextBibliographyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bibliography}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-source}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:bibliography-source}
+	 */
+	public TextBibliographySourceElement newTextBibliographySourceElement() {
+		TextBibliographySourceElement textBibliographySource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographySourceElement.class);
+		this.appendChild(textBibliographySource);
+		return textBibliographySource;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyEntryTemplateElement.java
new file mode 100644
index 0000000..f2de44f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyEntryTemplateElement.java
@@ -0,0 +1,164 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextBibliographyTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bibliography-entry-template}.
+ *
+ */
+public class TextBibliographyEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography-entry-template");
+
+	/**
+	 * Create the instance of <code>TextBibliographyEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographyEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bibliography-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextBibliographyTypeAttribute</code> , See {@odf.attribute text:bibliography-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextBibliographyTypeAttribute() {
+		TextBibliographyTypeAttribute attr = (TextBibliographyTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "bibliography-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextBibliographyTypeAttribute</code> , See {@odf.attribute text:bibliography-type}
+	 *
+	 * @param textBibliographyTypeValue   The type is <code>String</code>
+	 */
+	public void setTextBibliographyTypeAttribute(String textBibliographyTypeValue) {
+		TextBibliographyTypeAttribute attr = new TextBibliographyTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textBibliographyTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-bibliography}.
+	 *
+	 * @param textBibliographyDataFieldValue  the <code>String</code> value of <code>TextBibliographyDataFieldAttribute</code>, see {@odf.attribute  text:bibliography-data-field} at specification
+	 * @return the element {@odf.element text:index-entry-bibliography}
+	 */
+	 public TextIndexEntryBibliographyElement newTextIndexEntryBibliographyElement(String textBibliographyDataFieldValue) {
+		TextIndexEntryBibliographyElement textIndexEntryBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryBibliographyElement.class);
+		textIndexEntryBibliography.setTextBibliographyDataFieldAttribute(textBibliographyDataFieldValue);
+		this.appendChild(textIndexEntryBibliography);
+		return textIndexEntryBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyMarkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyMarkElement.java
new file mode 100644
index 0000000..3d103d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographyMarkElement.java
@@ -0,0 +1,881 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAddressAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnnoteAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAuthorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextBibliographyTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextBooktitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextChapterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCustom1Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCustom2Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCustom3Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCustom4Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCustom5Attribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextEditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextEditorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextHowpublishedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdentifierAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextInstitutionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIsbnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIssnAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextJournalAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMonthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNoteAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOrganizationsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextPagesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextPublisherAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextReportTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSchoolAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSeriesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTitleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUrlAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextVolumeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextYearAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bibliography-mark}.
+ *
+ */
+public class TextBibliographyMarkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography-mark");
+
+	/**
+	 * Create the instance of <code>TextBibliographyMarkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographyMarkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bibliography-mark}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAddressAttribute</code> , See {@odf.attribute text:address}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAddressAttribute() {
+		TextAddressAttribute attr = (TextAddressAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "address");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAddressAttribute</code> , See {@odf.attribute text:address}
+	 *
+	 * @param textAddressValue   The type is <code>String</code>
+	 */
+	public void setTextAddressAttribute(String textAddressValue) {
+		TextAddressAttribute attr = new TextAddressAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAddressValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAnnoteAttribute</code> , See {@odf.attribute text:annote}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAnnoteAttribute() {
+		TextAnnoteAttribute attr = (TextAnnoteAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "annote");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAnnoteAttribute</code> , See {@odf.attribute text:annote}
+	 *
+	 * @param textAnnoteValue   The type is <code>String</code>
+	 */
+	public void setTextAnnoteAttribute(String textAnnoteValue) {
+		TextAnnoteAttribute attr = new TextAnnoteAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAnnoteValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextAuthorAttribute</code> , See {@odf.attribute text:author}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextAuthorAttribute() {
+		TextAuthorAttribute attr = (TextAuthorAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "author");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextAuthorAttribute</code> , See {@odf.attribute text:author}
+	 *
+	 * @param textAuthorValue   The type is <code>String</code>
+	 */
+	public void setTextAuthorAttribute(String textAuthorValue) {
+		TextAuthorAttribute attr = new TextAuthorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textAuthorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextBibliographyTypeAttribute</code> , See {@odf.attribute text:bibliography-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextBibliographyTypeAttribute() {
+		TextBibliographyTypeAttribute attr = (TextBibliographyTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "bibliography-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextBibliographyTypeAttribute</code> , See {@odf.attribute text:bibliography-type}
+	 *
+	 * @param textBibliographyTypeValue   The type is <code>String</code>
+	 */
+	public void setTextBibliographyTypeAttribute(String textBibliographyTypeValue) {
+		TextBibliographyTypeAttribute attr = new TextBibliographyTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textBibliographyTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextBooktitleAttribute</code> , See {@odf.attribute text:booktitle}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextBooktitleAttribute() {
+		TextBooktitleAttribute attr = (TextBooktitleAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "booktitle");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextBooktitleAttribute</code> , See {@odf.attribute text:booktitle}
+	 *
+	 * @param textBooktitleValue   The type is <code>String</code>
+	 */
+	public void setTextBooktitleAttribute(String textBooktitleValue) {
+		TextBooktitleAttribute attr = new TextBooktitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textBooktitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextChapterAttribute</code> , See {@odf.attribute text:chapter}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextChapterAttribute() {
+		TextChapterAttribute attr = (TextChapterAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "chapter");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextChapterAttribute</code> , See {@odf.attribute text:chapter}
+	 *
+	 * @param textChapterValue   The type is <code>String</code>
+	 */
+	public void setTextChapterAttribute(String textChapterValue) {
+		TextChapterAttribute attr = new TextChapterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textChapterValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCustom1Attribute</code> , See {@odf.attribute text:custom1}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCustom1Attribute() {
+		TextCustom1Attribute attr = (TextCustom1Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "custom1");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCustom1Attribute</code> , See {@odf.attribute text:custom1}
+	 *
+	 * @param textCustom1Value   The type is <code>String</code>
+	 */
+	public void setTextCustom1Attribute(String textCustom1Value) {
+		TextCustom1Attribute attr = new TextCustom1Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCustom1Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCustom2Attribute</code> , See {@odf.attribute text:custom2}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCustom2Attribute() {
+		TextCustom2Attribute attr = (TextCustom2Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "custom2");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCustom2Attribute</code> , See {@odf.attribute text:custom2}
+	 *
+	 * @param textCustom2Value   The type is <code>String</code>
+	 */
+	public void setTextCustom2Attribute(String textCustom2Value) {
+		TextCustom2Attribute attr = new TextCustom2Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCustom2Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCustom3Attribute</code> , See {@odf.attribute text:custom3}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCustom3Attribute() {
+		TextCustom3Attribute attr = (TextCustom3Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "custom3");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCustom3Attribute</code> , See {@odf.attribute text:custom3}
+	 *
+	 * @param textCustom3Value   The type is <code>String</code>
+	 */
+	public void setTextCustom3Attribute(String textCustom3Value) {
+		TextCustom3Attribute attr = new TextCustom3Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCustom3Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCustom4Attribute</code> , See {@odf.attribute text:custom4}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCustom4Attribute() {
+		TextCustom4Attribute attr = (TextCustom4Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "custom4");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCustom4Attribute</code> , See {@odf.attribute text:custom4}
+	 *
+	 * @param textCustom4Value   The type is <code>String</code>
+	 */
+	public void setTextCustom4Attribute(String textCustom4Value) {
+		TextCustom4Attribute attr = new TextCustom4Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCustom4Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCustom5Attribute</code> , See {@odf.attribute text:custom5}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCustom5Attribute() {
+		TextCustom5Attribute attr = (TextCustom5Attribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "custom5");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCustom5Attribute</code> , See {@odf.attribute text:custom5}
+	 *
+	 * @param textCustom5Value   The type is <code>String</code>
+	 */
+	public void setTextCustom5Attribute(String textCustom5Value) {
+		TextCustom5Attribute attr = new TextCustom5Attribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCustom5Value);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextEditionAttribute</code> , See {@odf.attribute text:edition}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextEditionAttribute() {
+		TextEditionAttribute attr = (TextEditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "edition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextEditionAttribute</code> , See {@odf.attribute text:edition}
+	 *
+	 * @param textEditionValue   The type is <code>String</code>
+	 */
+	public void setTextEditionAttribute(String textEditionValue) {
+		TextEditionAttribute attr = new TextEditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textEditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextEditorAttribute</code> , See {@odf.attribute text:editor}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextEditorAttribute() {
+		TextEditorAttribute attr = (TextEditorAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "editor");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextEditorAttribute</code> , See {@odf.attribute text:editor}
+	 *
+	 * @param textEditorValue   The type is <code>String</code>
+	 */
+	public void setTextEditorAttribute(String textEditorValue) {
+		TextEditorAttribute attr = new TextEditorAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textEditorValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextHowpublishedAttribute</code> , See {@odf.attribute text:howpublished}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextHowpublishedAttribute() {
+		TextHowpublishedAttribute attr = (TextHowpublishedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "howpublished");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextHowpublishedAttribute</code> , See {@odf.attribute text:howpublished}
+	 *
+	 * @param textHowpublishedValue   The type is <code>String</code>
+	 */
+	public void setTextHowpublishedAttribute(String textHowpublishedValue) {
+		TextHowpublishedAttribute attr = new TextHowpublishedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textHowpublishedValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdentifierAttribute</code> , See {@odf.attribute text:identifier}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdentifierAttribute() {
+		TextIdentifierAttribute attr = (TextIdentifierAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "identifier");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdentifierAttribute</code> , See {@odf.attribute text:identifier}
+	 *
+	 * @param textIdentifierValue   The type is <code>String</code>
+	 */
+	public void setTextIdentifierAttribute(String textIdentifierValue) {
+		TextIdentifierAttribute attr = new TextIdentifierAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdentifierValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextInstitutionAttribute</code> , See {@odf.attribute text:institution}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextInstitutionAttribute() {
+		TextInstitutionAttribute attr = (TextInstitutionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "institution");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextInstitutionAttribute</code> , See {@odf.attribute text:institution}
+	 *
+	 * @param textInstitutionValue   The type is <code>String</code>
+	 */
+	public void setTextInstitutionAttribute(String textInstitutionValue) {
+		TextInstitutionAttribute attr = new TextInstitutionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textInstitutionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIsbnAttribute</code> , See {@odf.attribute text:isbn}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIsbnAttribute() {
+		TextIsbnAttribute attr = (TextIsbnAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "isbn");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIsbnAttribute</code> , See {@odf.attribute text:isbn}
+	 *
+	 * @param textIsbnValue   The type is <code>String</code>
+	 */
+	public void setTextIsbnAttribute(String textIsbnValue) {
+		TextIsbnAttribute attr = new TextIsbnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIsbnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIssnAttribute</code> , See {@odf.attribute text:issn}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIssnAttribute() {
+		TextIssnAttribute attr = (TextIssnAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "issn");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIssnAttribute</code> , See {@odf.attribute text:issn}
+	 *
+	 * @param textIssnValue   The type is <code>String</code>
+	 */
+	public void setTextIssnAttribute(String textIssnValue) {
+		TextIssnAttribute attr = new TextIssnAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIssnValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextJournalAttribute</code> , See {@odf.attribute text:journal}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextJournalAttribute() {
+		TextJournalAttribute attr = (TextJournalAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "journal");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextJournalAttribute</code> , See {@odf.attribute text:journal}
+	 *
+	 * @param textJournalValue   The type is <code>String</code>
+	 */
+	public void setTextJournalAttribute(String textJournalValue) {
+		TextJournalAttribute attr = new TextJournalAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textJournalValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMonthAttribute</code> , See {@odf.attribute text:month}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextMonthAttribute() {
+		TextMonthAttribute attr = (TextMonthAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "month");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMonthAttribute</code> , See {@odf.attribute text:month}
+	 *
+	 * @param textMonthValue   The type is <code>String</code>
+	 */
+	public void setTextMonthAttribute(String textMonthValue) {
+		TextMonthAttribute attr = new TextMonthAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textMonthValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNoteAttribute</code> , See {@odf.attribute text:note}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNoteAttribute() {
+		TextNoteAttribute attr = (TextNoteAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "note");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNoteAttribute</code> , See {@odf.attribute text:note}
+	 *
+	 * @param textNoteValue   The type is <code>String</code>
+	 */
+	public void setTextNoteAttribute(String textNoteValue) {
+		TextNoteAttribute attr = new TextNoteAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNoteValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNumberAttribute</code> , See {@odf.attribute text:number}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNumberAttribute() {
+		TextNumberAttribute attr = (TextNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "number");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNumberAttribute</code> , See {@odf.attribute text:number}
+	 *
+	 * @param textNumberValue   The type is <code>String</code>
+	 */
+	public void setTextNumberAttribute(String textNumberValue) {
+		TextNumberAttribute attr = new TextNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNumberValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOrganizationsAttribute</code> , See {@odf.attribute text:organizations}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextOrganizationsAttribute() {
+		TextOrganizationsAttribute attr = (TextOrganizationsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "organizations");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOrganizationsAttribute</code> , See {@odf.attribute text:organizations}
+	 *
+	 * @param textOrganizationsValue   The type is <code>String</code>
+	 */
+	public void setTextOrganizationsAttribute(String textOrganizationsValue) {
+		TextOrganizationsAttribute attr = new TextOrganizationsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textOrganizationsValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextPagesAttribute</code> , See {@odf.attribute text:pages}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextPagesAttribute() {
+		TextPagesAttribute attr = (TextPagesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "pages");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextPagesAttribute</code> , See {@odf.attribute text:pages}
+	 *
+	 * @param textPagesValue   The type is <code>String</code>
+	 */
+	public void setTextPagesAttribute(String textPagesValue) {
+		TextPagesAttribute attr = new TextPagesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textPagesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextPublisherAttribute</code> , See {@odf.attribute text:publisher}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextPublisherAttribute() {
+		TextPublisherAttribute attr = (TextPublisherAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "publisher");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextPublisherAttribute</code> , See {@odf.attribute text:publisher}
+	 *
+	 * @param textPublisherValue   The type is <code>String</code>
+	 */
+	public void setTextPublisherAttribute(String textPublisherValue) {
+		TextPublisherAttribute attr = new TextPublisherAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textPublisherValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextReportTypeAttribute</code> , See {@odf.attribute text:report-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextReportTypeAttribute() {
+		TextReportTypeAttribute attr = (TextReportTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "report-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextReportTypeAttribute</code> , See {@odf.attribute text:report-type}
+	 *
+	 * @param textReportTypeValue   The type is <code>String</code>
+	 */
+	public void setTextReportTypeAttribute(String textReportTypeValue) {
+		TextReportTypeAttribute attr = new TextReportTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textReportTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSchoolAttribute</code> , See {@odf.attribute text:school}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSchoolAttribute() {
+		TextSchoolAttribute attr = (TextSchoolAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "school");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSchoolAttribute</code> , See {@odf.attribute text:school}
+	 *
+	 * @param textSchoolValue   The type is <code>String</code>
+	 */
+	public void setTextSchoolAttribute(String textSchoolValue) {
+		TextSchoolAttribute attr = new TextSchoolAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSchoolValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSeriesAttribute</code> , See {@odf.attribute text:series}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSeriesAttribute() {
+		TextSeriesAttribute attr = (TextSeriesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "series");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSeriesAttribute</code> , See {@odf.attribute text:series}
+	 *
+	 * @param textSeriesValue   The type is <code>String</code>
+	 */
+	public void setTextSeriesAttribute(String textSeriesValue) {
+		TextSeriesAttribute attr = new TextSeriesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSeriesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTitleAttribute</code> , See {@odf.attribute text:title}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTitleAttribute() {
+		TextTitleAttribute attr = (TextTitleAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "title");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTitleAttribute</code> , See {@odf.attribute text:title}
+	 *
+	 * @param textTitleValue   The type is <code>String</code>
+	 */
+	public void setTextTitleAttribute(String textTitleValue) {
+		TextTitleAttribute attr = new TextTitleAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTitleValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUrlAttribute</code> , See {@odf.attribute text:url}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextUrlAttribute() {
+		TextUrlAttribute attr = (TextUrlAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "url");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUrlAttribute</code> , See {@odf.attribute text:url}
+	 *
+	 * @param textUrlValue   The type is <code>String</code>
+	 */
+	public void setTextUrlAttribute(String textUrlValue) {
+		TextUrlAttribute attr = new TextUrlAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textUrlValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextVolumeAttribute</code> , See {@odf.attribute text:volume}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextVolumeAttribute() {
+		TextVolumeAttribute attr = (TextVolumeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "volume");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextVolumeAttribute</code> , See {@odf.attribute text:volume}
+	 *
+	 * @param textVolumeValue   The type is <code>String</code>
+	 */
+	public void setTextVolumeAttribute(String textVolumeValue) {
+		TextVolumeAttribute attr = new TextVolumeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textVolumeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextYearAttribute</code> , See {@odf.attribute text:year}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextYearAttribute() {
+		TextYearAttribute attr = (TextYearAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "year");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextYearAttribute</code> , See {@odf.attribute text:year}
+	 *
+	 * @param textYearValue   The type is <code>String</code>
+	 */
+	public void setTextYearAttribute(String textYearValue) {
+		TextYearAttribute attr = new TextYearAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textYearValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographySourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographySourceElement.java
new file mode 100644
index 0000000..065fe6d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBibliographySourceElement.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bibliography-source}.
+ *
+ */
+public class TextBibliographySourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bibliography-source");
+
+	/**
+	 * Create the instance of <code>TextBibliographySourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBibliographySourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bibliography-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-entry-template}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:bibliography-entry-template}
+	 */
+	 public TextBibliographyEntryTemplateElement newTextBibliographyEntryTemplateElement(String textBibliographyTypeValue, String textStyleNameValue) {
+		TextBibliographyEntryTemplateElement textBibliographyEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyEntryTemplateElement.class);
+		textBibliographyEntryTemplate.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		textBibliographyEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textBibliographyEntryTemplate);
+		return textBibliographyEntryTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkElement.java
new file mode 100644
index 0000000..6595773
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bookmark}.
+ *
+ */
+public class TextBookmarkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bookmark");
+
+	/**
+	 * Create the instance of <code>TextBookmarkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBookmarkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bookmark}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkEndElement.java
new file mode 100644
index 0000000..ab2fa13
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bookmark-end}.
+ *
+ */
+public class TextBookmarkEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bookmark-end");
+
+	/**
+	 * Create the instance of <code>TextBookmarkEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBookmarkEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bookmark-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkRefElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkRefElement.java
new file mode 100644
index 0000000..cf3ff8b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkRefElement.java
@@ -0,0 +1,129 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRefNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextReferenceFormatAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:bookmark-ref}.
+ *
+ */
+public class TextBookmarkRefElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bookmark-ref");
+
+	/**
+	 * Create the instance of <code>TextBookmarkRefElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextBookmarkRefElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bookmark-ref}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextRefNameAttribute() {
+		TextRefNameAttribute attr = (TextRefNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "ref-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @param textRefNameValue   The type is <code>String</code>
+	 */
+	public void setTextRefNameAttribute(String textRefNameValue) {
+		TextRefNameAttribute attr = new TextRefNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textRefNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextReferenceFormatAttribute() {
+		TextReferenceFormatAttribute attr = (TextReferenceFormatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "reference-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @param textReferenceFormatValue   The type is <code>String</code>
+	 */
+	public void setTextReferenceFormatAttribute(String textReferenceFormatValue) {
+		TextReferenceFormatAttribute attr = new TextReferenceFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textReferenceFormatValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkStartElement.java
new file mode 100644
index 0000000..fefd83b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextBookmarkStartElement.java
@@ -0,0 +1,232 @@
+/************************************************************************

+ *

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

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.dom.element.text;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlAboutAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlContentAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlDatatypeAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlPropertyAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;

+

+/**

+ * DOM implementation of OpenDocument element  {@odf.element text:bookmark-start}.

+ *

+ */

+public class TextBookmarkStartElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "bookmark-start");

+

+	/**

+	 * Create the instance of <code>TextBookmarkStartElement</code>

+	 *

+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>

+	 */

+	public TextBookmarkStartElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:bookmark-start}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTextNameAttribute() {

+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}

+	 *

+	 * @param textNameValue   The type is <code>String</code>

+	 */

+	public void setTextNameAttribute(String textNameValue) {

+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(textNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlAboutAttribute() {

+		XhtmlAboutAttribute attr = (XhtmlAboutAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "about");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @param xhtmlAboutValue   The type is <code>String</code>

+	 */

+	public void setXhtmlAboutAttribute(String xhtmlAboutValue) {

+		XhtmlAboutAttribute attr = new XhtmlAboutAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlAboutValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlContentAttribute() {

+		XhtmlContentAttribute attr = (XhtmlContentAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "content");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @param xhtmlContentValue   The type is <code>String</code>

+	 */

+	public void setXhtmlContentAttribute(String xhtmlContentValue) {

+		XhtmlContentAttribute attr = new XhtmlContentAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlContentValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlDatatypeAttribute() {

+		XhtmlDatatypeAttribute attr = (XhtmlDatatypeAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "datatype");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @param xhtmlDatatypeValue   The type is <code>String</code>

+	 */

+	public void setXhtmlDatatypeAttribute(String xhtmlDatatypeValue) {

+		XhtmlDatatypeAttribute attr = new XhtmlDatatypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlDatatypeValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlPropertyAttribute() {

+		XhtmlPropertyAttribute attr = (XhtmlPropertyAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "property");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @param xhtmlPropertyValue   The type is <code>String</code>

+	 */

+	public void setXhtmlPropertyAttribute(String xhtmlPropertyValue) {

+		XhtmlPropertyAttribute attr = new XhtmlPropertyAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlPropertyValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXmlIdAttribute() {

+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @param xmlIdValue   The type is <code>String</code>

+	 */

+	public void setXmlIdAttribute(String xmlIdValue) {

+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xmlIdValue);

+	}

+	/**

+	* Set text content. Only elements which are allowed to have text content offer this method.

+	*/

+	public void setTextContent(String content){

+		super.setTextContent(content);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+	

+	protected void onRemoveNode() {

+		super.onRemoveNode();

+		((OdfFileDom) this.ownerDocument).getInContentMetadataCache().remove(this);

+	}

+

+	protected void onInsertNode() {

+		super.onInsertNode();

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeElement.java
new file mode 100644
index 0000000..5e684f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextChangeIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:change}.
+ *
+ */
+public class TextChangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "change");
+
+	/**
+	 * Create the instance of <code>TextChangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextChangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:change}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextChangeIdAttribute</code> , See {@odf.attribute text:change-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextChangeIdAttribute() {
+		TextChangeIdAttribute attr = (TextChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextChangeIdAttribute</code> , See {@odf.attribute text:change-id}
+	 *
+	 * @param textChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTextChangeIdAttribute(String textChangeIdValue) {
+		TextChangeIdAttribute attr = new TextChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textChangeIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeEndElement.java
new file mode 100644
index 0000000..2461756
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextChangeIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:change-end}.
+ *
+ */
+public class TextChangeEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "change-end");
+
+	/**
+	 * Create the instance of <code>TextChangeEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextChangeEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:change-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextChangeIdAttribute</code> , See {@odf.attribute text:change-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextChangeIdAttribute() {
+		TextChangeIdAttribute attr = (TextChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextChangeIdAttribute</code> , See {@odf.attribute text:change-id}
+	 *
+	 * @param textChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTextChangeIdAttribute(String textChangeIdValue) {
+		TextChangeIdAttribute attr = new TextChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textChangeIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeStartElement.java
new file mode 100644
index 0000000..ea62837
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangeStartElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextChangeIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:change-start}.
+ *
+ */
+public class TextChangeStartElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "change-start");
+
+	/**
+	 * Create the instance of <code>TextChangeStartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextChangeStartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:change-start}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextChangeIdAttribute</code> , See {@odf.attribute text:change-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextChangeIdAttribute() {
+		TextChangeIdAttribute attr = (TextChangeIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "change-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextChangeIdAttribute</code> , See {@odf.attribute text:change-id}
+	 *
+	 * @param textChangeIdValue   The type is <code>String</code>
+	 */
+	public void setTextChangeIdAttribute(String textChangeIdValue) {
+		TextChangeIdAttribute attr = new TextChangeIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textChangeIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangedRegionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangedRegionElement.java
new file mode 100644
index 0000000..5828dc6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChangedRegionElement.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:changed-region}.
+ *
+ */
+public class TextChangedRegionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "changed-region");
+
+	/**
+	 * Create the instance of <code>TextChangedRegionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextChangedRegionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:changed-region}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:deletion}.
+	 *
+	 * @return the element {@odf.element text:deletion}
+	 */
+	public TextDeletionElement newTextDeletionElement() {
+		TextDeletionElement textDeletion = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDeletionElement.class);
+		this.appendChild(textDeletion);
+		return textDeletion;
+	}
+
+	/**
+	 * Create child element {@odf.element text:format-change}.
+	 *
+	 * @return the element {@odf.element text:format-change}
+	 */
+	public TextFormatChangeElement newTextFormatChangeElement() {
+		TextFormatChangeElement textFormatChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFormatChangeElement.class);
+		this.appendChild(textFormatChange);
+		return textFormatChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:insertion}.
+	 *
+	 * @return the element {@odf.element text:insertion}
+	 */
+	public TextInsertionElement newTextInsertionElement() {
+		TextInsertionElement textInsertion = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInsertionElement.class);
+		this.appendChild(textInsertion);
+		return textInsertion;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChapterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChapterElement.java
new file mode 100644
index 0000000..d9c5155
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextChapterElement.java
@@ -0,0 +1,133 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:chapter}.
+ *
+ */
+public class TextChapterElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "chapter");
+
+	/**
+	 * Create the instance of <code>TextChapterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextChapterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:chapter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCharacterCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCharacterCountElement.java
new file mode 100644
index 0000000..3674747
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCharacterCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:character-count}.
+ *
+ */
+public class TextCharacterCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "character-count");
+
+	/**
+	 * Create the instance of <code>TextCharacterCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextCharacterCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:character-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextConditionalTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextConditionalTextElement.java
new file mode 100644
index 0000000..7bcddc1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextConditionalTextElement.java
@@ -0,0 +1,185 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCurrentValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueIfFalseAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueIfTrueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:conditional-text}.
+ *
+ */
+public class TextConditionalTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "conditional-text");
+
+	/**
+	 * Create the instance of <code>TextConditionalTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextConditionalTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:conditional-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCurrentValueAttribute</code> , See {@odf.attribute text:current-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCurrentValueAttribute() {
+		TextCurrentValueAttribute attr = (TextCurrentValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "current-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCurrentValueAttribute</code> , See {@odf.attribute text:current-value}
+	 *
+	 * @param textCurrentValueValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCurrentValueAttribute(Boolean textCurrentValueValue) {
+		TextCurrentValueAttribute attr = new TextCurrentValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCurrentValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueIfFalseAttribute</code> , See {@odf.attribute text:string-value-if-false}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueIfFalseAttribute() {
+		TextStringValueIfFalseAttribute attr = (TextStringValueIfFalseAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value-if-false");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueIfFalseAttribute</code> , See {@odf.attribute text:string-value-if-false}
+	 *
+	 * @param textStringValueIfFalseValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueIfFalseAttribute(String textStringValueIfFalseValue) {
+		TextStringValueIfFalseAttribute attr = new TextStringValueIfFalseAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueIfFalseValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueIfTrueAttribute</code> , See {@odf.attribute text:string-value-if-true}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueIfTrueAttribute() {
+		TextStringValueIfTrueAttribute attr = (TextStringValueIfTrueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value-if-true");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueIfTrueAttribute</code> , See {@odf.attribute text:string-value-if-true}
+	 *
+	 * @param textStringValueIfTrueValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueIfTrueAttribute(String textStringValueIfTrueValue) {
+		TextStringValueIfTrueAttribute attr = new TextStringValueIfTrueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueIfTrueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreationDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreationDateElement.java
new file mode 100644
index 0000000..73e9e92
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreationDateElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:creation-date}.
+ *
+ */
+public class TextCreationDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "creation-date");
+
+	/**
+	 * Create the instance of <code>TextCreationDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextCreationDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:creation-date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDateValueAttribute() {
+		TextDateValueAttribute attr = (TextDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @param textDateValueValue   The type is <code>String</code>
+	 */
+	public void setTextDateValueAttribute(String textDateValueValue) {
+		TextDateValueAttribute attr = new TextDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreationTimeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreationTimeElement.java
new file mode 100644
index 0000000..5ccb1dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreationTimeElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTimeValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:creation-time}.
+ *
+ */
+public class TextCreationTimeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "creation-time");
+
+	/**
+	 * Create the instance of <code>TextCreationTimeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextCreationTimeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:creation-time}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTimeValueAttribute() {
+		TextTimeValueAttribute attr = (TextTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @param textTimeValueValue   The type is <code>String</code>
+	 */
+	public void setTextTimeValueAttribute(String textTimeValueValue) {
+		TextTimeValueAttribute attr = new TextTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTimeValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreatorElement.java
new file mode 100644
index 0000000..0705759
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextCreatorElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:creator}.
+ *
+ */
+public class TextCreatorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "creator");
+
+	/**
+	 * Create the instance of <code>TextCreatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextCreatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:creator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseDisplayElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseDisplayElement.java
new file mode 100644
index 0000000..e00107d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseDisplayElement.java
@@ -0,0 +1,222 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.form.FormConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextColumnNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:database-display}.
+ *
+ */
+public class TextDatabaseDisplayElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "database-display");
+
+	/**
+	 * Create the instance of <code>TextDatabaseDisplayElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDatabaseDisplayElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:database-display}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextColumnNameAttribute</code> , See {@odf.attribute text:column-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextColumnNameAttribute() {
+		TextColumnNameAttribute attr = (TextColumnNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "column-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextColumnNameAttribute</code> , See {@odf.attribute text:column-name}
+	 *
+	 * @param textColumnNameValue   The type is <code>String</code>
+	 */
+	public void setTextColumnNameAttribute(String textColumnNameValue) {
+		TextColumnNameAttribute attr = new TextColumnNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textColumnNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDatabaseNameAttribute() {
+		TextDatabaseNameAttribute attr = (TextDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @param textDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTextDatabaseNameAttribute(String textDatabaseNameValue) {
+		TextDatabaseNameAttribute attr = new TextDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableNameAttribute() {
+		TextTableNameAttribute attr = (TextTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * @param textTableNameValue   The type is <code>String</code>
+	 */
+	public void setTextTableNameAttribute(String textTableNameValue) {
+		TextTableNameAttribute attr = new TextTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableTypeAttribute() {
+		TextTableTypeAttribute attr = (TextTableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @param textTableTypeValue   The type is <code>String</code>
+	 */
+	public void setTextTableTypeAttribute(String textTableTypeValue) {
+		TextTableTypeAttribute attr = new TextTableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @return the element {@odf.element form:connection-resource}
+	 */
+	 public FormConnectionResourceElement newFormConnectionResourceElement(String xlinkHrefValue) {
+		FormConnectionResourceElement formConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(FormConnectionResourceElement.class);
+		formConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(formConnectionResource);
+		return formConnectionResource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseNameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseNameElement.java
new file mode 100644
index 0000000..705a246
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseNameElement.java
@@ -0,0 +1,170 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.form.FormConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:database-name}.
+ *
+ */
+public class TextDatabaseNameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "database-name");
+
+	/**
+	 * Create the instance of <code>TextDatabaseNameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDatabaseNameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:database-name}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDatabaseNameAttribute() {
+		TextDatabaseNameAttribute attr = (TextDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @param textDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTextDatabaseNameAttribute(String textDatabaseNameValue) {
+		TextDatabaseNameAttribute attr = new TextDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableNameAttribute() {
+		TextTableNameAttribute attr = (TextTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * @param textTableNameValue   The type is <code>String</code>
+	 */
+	public void setTextTableNameAttribute(String textTableNameValue) {
+		TextTableNameAttribute attr = new TextTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableTypeAttribute() {
+		TextTableTypeAttribute attr = (TextTableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @param textTableTypeValue   The type is <code>String</code>
+	 */
+	public void setTextTableTypeAttribute(String textTableTypeValue) {
+		TextTableTypeAttribute attr = new TextTableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @return the element {@odf.element form:connection-resource}
+	 */
+	 public FormConnectionResourceElement newFormConnectionResourceElement(String xlinkHrefValue) {
+		FormConnectionResourceElement formConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(FormConnectionResourceElement.class);
+		formConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(formConnectionResource);
+		return formConnectionResource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseNextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseNextElement.java
new file mode 100644
index 0000000..76a6d06
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseNextElement.java
@@ -0,0 +1,187 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.form.FormConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:database-next}.
+ *
+ */
+public class TextDatabaseNextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "database-next");
+
+	/**
+	 * Create the instance of <code>TextDatabaseNextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDatabaseNextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:database-next}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDatabaseNameAttribute() {
+		TextDatabaseNameAttribute attr = (TextDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @param textDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTextDatabaseNameAttribute(String textDatabaseNameValue) {
+		TextDatabaseNameAttribute attr = new TextDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableNameAttribute() {
+		TextTableNameAttribute attr = (TextTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * @param textTableNameValue   The type is <code>String</code>
+	 */
+	public void setTextTableNameAttribute(String textTableNameValue) {
+		TextTableNameAttribute attr = new TextTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableTypeAttribute() {
+		TextTableTypeAttribute attr = (TextTableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @param textTableTypeValue   The type is <code>String</code>
+	 */
+	public void setTextTableTypeAttribute(String textTableTypeValue) {
+		TextTableTypeAttribute attr = new TextTableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @return the element {@odf.element form:connection-resource}
+	 */
+	 public FormConnectionResourceElement newFormConnectionResourceElement(String xlinkHrefValue) {
+		FormConnectionResourceElement formConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(FormConnectionResourceElement.class);
+		formConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(formConnectionResource);
+		return formConnectionResource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseRowNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseRowNumberElement.java
new file mode 100644
index 0000000..ffe0d11
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseRowNumberElement.java
@@ -0,0 +1,247 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.form.FormConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:database-row-number}.
+ *
+ */
+public class TextDatabaseRowNumberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "database-row-number");
+
+	/**
+	 * Create the instance of <code>TextDatabaseRowNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDatabaseRowNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:database-row-number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDatabaseNameAttribute() {
+		TextDatabaseNameAttribute attr = (TextDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @param textDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTextDatabaseNameAttribute(String textDatabaseNameValue) {
+		TextDatabaseNameAttribute attr = new TextDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableNameAttribute() {
+		TextTableNameAttribute attr = (TextTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * @param textTableNameValue   The type is <code>String</code>
+	 */
+	public void setTextTableNameAttribute(String textTableNameValue) {
+		TextTableNameAttribute attr = new TextTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableTypeAttribute() {
+		TextTableTypeAttribute attr = (TextTableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @param textTableTypeValue   The type is <code>String</code>
+	 */
+	public void setTextTableTypeAttribute(String textTableTypeValue) {
+		TextTableTypeAttribute attr = new TextTableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextValueAttribute</code> , See {@odf.attribute text:value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextValueAttribute() {
+		TextValueAttribute attr = (TextValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextValueAttribute</code> , See {@odf.attribute text:value}
+	 *
+	 * @param textValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextValueAttribute(Integer textValueValue) {
+		TextValueAttribute attr = new TextValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textValueValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element form:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @return the element {@odf.element form:connection-resource}
+	 */
+	 public FormConnectionResourceElement newFormConnectionResourceElement(String xlinkHrefValue) {
+		FormConnectionResourceElement formConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(FormConnectionResourceElement.class);
+		formConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(formConnectionResource);
+		return formConnectionResource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseRowSelectElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseRowSelectElement.java
new file mode 100644
index 0000000..81d314e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDatabaseRowSelectElement.java
@@ -0,0 +1,212 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.form.FormConnectionResourceElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDatabaseNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRowNumberAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTableTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:database-row-select}.
+ *
+ */
+public class TextDatabaseRowSelectElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "database-row-select");
+
+	/**
+	 * Create the instance of <code>TextDatabaseRowSelectElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDatabaseRowSelectElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:database-row-select}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDatabaseNameAttribute() {
+		TextDatabaseNameAttribute attr = (TextDatabaseNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "database-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDatabaseNameAttribute</code> , See {@odf.attribute text:database-name}
+	 *
+	 * @param textDatabaseNameValue   The type is <code>String</code>
+	 */
+	public void setTextDatabaseNameAttribute(String textDatabaseNameValue) {
+		TextDatabaseNameAttribute attr = new TextDatabaseNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDatabaseNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRowNumberAttribute</code> , See {@odf.attribute text:row-number}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextRowNumberAttribute() {
+		TextRowNumberAttribute attr = (TextRowNumberAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "row-number");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRowNumberAttribute</code> , See {@odf.attribute text:row-number}
+	 *
+	 * @param textRowNumberValue   The type is <code>Integer</code>
+	 */
+	public void setTextRowNumberAttribute(Integer textRowNumberValue) {
+		TextRowNumberAttribute attr = new TextRowNumberAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textRowNumberValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableNameAttribute() {
+		TextTableNameAttribute attr = (TextTableNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableNameAttribute</code> , See {@odf.attribute text:table-name}
+	 *
+	 * @param textTableNameValue   The type is <code>String</code>
+	 */
+	public void setTextTableNameAttribute(String textTableNameValue) {
+		TextTableNameAttribute attr = new TextTableNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTableTypeAttribute() {
+		TextTableTypeAttribute attr = (TextTableTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "table-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTableTypeAttribute</code> , See {@odf.attribute text:table-type}
+	 *
+	 * @param textTableTypeValue   The type is <code>String</code>
+	 */
+	public void setTextTableTypeAttribute(String textTableTypeValue) {
+		TextTableTypeAttribute attr = new TextTableTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTableTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element form:connection-resource}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @return the element {@odf.element form:connection-resource}
+	 */
+	 public FormConnectionResourceElement newFormConnectionResourceElement(String xlinkHrefValue) {
+		FormConnectionResourceElement formConnectionResource = ((OdfFileDom) this.ownerDocument).newOdfElement(FormConnectionResourceElement.class);
+		formConnectionResource.setXlinkHrefAttribute(xlinkHrefValue);
+		this.appendChild(formConnectionResource);
+		return formConnectionResource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDateElement.java
new file mode 100644
index 0000000..020eb03
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDateElement.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDateAdjustAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:date}.
+ *
+ */
+public class TextDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "date");
+
+	/**
+	 * Create the instance of <code>TextDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDateAdjustAttribute</code> , See {@odf.attribute text:date-adjust}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDateAdjustAttribute() {
+		TextDateAdjustAttribute attr = (TextDateAdjustAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "date-adjust");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDateAdjustAttribute</code> , See {@odf.attribute text:date-adjust}
+	 *
+	 * @param textDateAdjustValue   The type is <code>String</code>
+	 */
+	public void setTextDateAdjustAttribute(String textDateAdjustValue) {
+		TextDateAdjustAttribute attr = new TextDateAdjustAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDateAdjustValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDateValueAttribute() {
+		TextDateValueAttribute attr = (TextDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @param textDateValueValue   The type is <code>String</code>
+	 */
+	public void setTextDateValueAttribute(String textDateValueValue) {
+		TextDateValueAttribute attr = new TextDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionDeclElement.java
new file mode 100644
index 0000000..837d80c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionDeclElement.java
@@ -0,0 +1,204 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeAutomaticUpdateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDdeApplicationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDdeItemAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDdeTopicAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:dde-connection-decl}.
+ *
+ */
+public class TextDdeConnectionDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "dde-connection-decl");
+
+	/**
+	 * Create the instance of <code>TextDdeConnectionDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDdeConnectionDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:dde-connection-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeAutomaticUpdateAttribute</code> , See {@odf.attribute office:automatic-update}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeAutomaticUpdateAttribute() {
+		OfficeAutomaticUpdateAttribute attr = (OfficeAutomaticUpdateAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "automatic-update");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(OfficeAutomaticUpdateAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeAutomaticUpdateAttribute</code> , See {@odf.attribute office:automatic-update}
+	 *
+	 * @param officeAutomaticUpdateValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeAutomaticUpdateAttribute(Boolean officeAutomaticUpdateValue) {
+		OfficeAutomaticUpdateAttribute attr = new OfficeAutomaticUpdateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeAutomaticUpdateValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDdeApplicationAttribute</code> , See {@odf.attribute office:dde-application}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDdeApplicationAttribute() {
+		OfficeDdeApplicationAttribute attr = (OfficeDdeApplicationAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "dde-application");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDdeApplicationAttribute</code> , See {@odf.attribute office:dde-application}
+	 *
+	 * @param officeDdeApplicationValue   The type is <code>String</code>
+	 */
+	public void setOfficeDdeApplicationAttribute(String officeDdeApplicationValue) {
+		OfficeDdeApplicationAttribute attr = new OfficeDdeApplicationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDdeApplicationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDdeItemAttribute</code> , See {@odf.attribute office:dde-item}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDdeItemAttribute() {
+		OfficeDdeItemAttribute attr = (OfficeDdeItemAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "dde-item");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDdeItemAttribute</code> , See {@odf.attribute office:dde-item}
+	 *
+	 * @param officeDdeItemValue   The type is <code>String</code>
+	 */
+	public void setOfficeDdeItemAttribute(String officeDdeItemValue) {
+		OfficeDdeItemAttribute attr = new OfficeDdeItemAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDdeItemValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDdeTopicAttribute</code> , See {@odf.attribute office:dde-topic}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDdeTopicAttribute() {
+		OfficeDdeTopicAttribute attr = (OfficeDdeTopicAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "dde-topic");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDdeTopicAttribute</code> , See {@odf.attribute office:dde-topic}
+	 *
+	 * @param officeDdeTopicValue   The type is <code>String</code>
+	 */
+	public void setOfficeDdeTopicAttribute(String officeDdeTopicValue) {
+		OfficeDdeTopicAttribute attr = new OfficeDdeTopicAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDdeTopicValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeNameAttribute() {
+		OfficeNameAttribute attr = (OfficeNameAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeNameAttribute</code> , See {@odf.attribute office:name}
+	 *
+	 * @param officeNameValue   The type is <code>String</code>
+	 */
+	public void setOfficeNameAttribute(String officeNameValue) {
+		OfficeNameAttribute attr = new OfficeNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionDeclsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionDeclsElement.java
new file mode 100644
index 0000000..b498124
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionDeclsElement.java
@@ -0,0 +1,90 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:dde-connection-decls}.
+ *
+ */
+public class TextDdeConnectionDeclsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "dde-connection-decls");
+
+	/**
+	 * Create the instance of <code>TextDdeConnectionDeclsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDdeConnectionDeclsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:dde-connection-decls}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection-decl}.
+	 *
+	 * @param officeDdeApplicationValue  the <code>String</code> value of <code>OfficeDdeApplicationAttribute</code>, see {@odf.attribute  office:dde-application} at specification
+	 * @param officeDdeItemValue  the <code>String</code> value of <code>OfficeDdeItemAttribute</code>, see {@odf.attribute  office:dde-item} at specification
+	 * @param officeDdeTopicValue  the <code>String</code> value of <code>OfficeDdeTopicAttribute</code>, see {@odf.attribute  office:dde-topic} at specification
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * @return the element {@odf.element text:dde-connection-decl}
+	 */
+	 public TextDdeConnectionDeclElement newTextDdeConnectionDeclElement(String officeDdeApplicationValue, String officeDdeItemValue, String officeDdeTopicValue, String officeNameValue) {
+		TextDdeConnectionDeclElement textDdeConnectionDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionDeclElement.class);
+		textDdeConnectionDecl.setOfficeDdeApplicationAttribute(officeDdeApplicationValue);
+		textDdeConnectionDecl.setOfficeDdeItemAttribute(officeDdeItemValue);
+		textDdeConnectionDecl.setOfficeDdeTopicAttribute(officeDdeTopicValue);
+		textDdeConnectionDecl.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(textDdeConnectionDecl);
+		return textDdeConnectionDecl;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionElement.java
new file mode 100644
index 0000000..943cc27
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDdeConnectionElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConnectionNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:dde-connection}.
+ *
+ */
+public class TextDdeConnectionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "dde-connection");
+
+	/**
+	 * Create the instance of <code>TextDdeConnectionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDdeConnectionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:dde-connection}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConnectionNameAttribute</code> , See {@odf.attribute text:connection-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConnectionNameAttribute() {
+		TextConnectionNameAttribute attr = (TextConnectionNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "connection-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConnectionNameAttribute</code> , See {@odf.attribute text:connection-name}
+	 *
+	 * @param textConnectionNameValue   The type is <code>String</code>
+	 */
+	public void setTextConnectionNameAttribute(String textConnectionNameValue) {
+		TextConnectionNameAttribute attr = new TextConnectionNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConnectionNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDeletionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDeletionElement.java
new file mode 100644
index 0000000..f37197a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDeletionElement.java
@@ -0,0 +1,557 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:deletion}.
+ *
+ */
+public class TextDeletionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "deletion");
+
+	/**
+	 * Create the instance of <code>TextDeletionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDeletionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:deletion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDescriptionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDescriptionElement.java
new file mode 100644
index 0000000..e4bff60
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextDescriptionElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:description}.
+ *
+ */
+public class TextDescriptionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "description");
+
+	/**
+	 * Create the instance of <code>TextDescriptionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextDescriptionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:description}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextEditingCyclesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextEditingCyclesElement.java
new file mode 100644
index 0000000..c800265
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextEditingCyclesElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:editing-cycles}.
+ *
+ */
+public class TextEditingCyclesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "editing-cycles");
+
+	/**
+	 * Create the instance of <code>TextEditingCyclesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextEditingCyclesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:editing-cycles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextEditingDurationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextEditingDurationElement.java
new file mode 100644
index 0000000..35f5f0c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextEditingDurationElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDurationAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:editing-duration}.
+ *
+ */
+public class TextEditingDurationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "editing-duration");
+
+	/**
+	 * Create the instance of <code>TextEditingDurationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextEditingDurationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:editing-duration}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDurationAttribute</code> , See {@odf.attribute text:duration}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDurationAttribute() {
+		TextDurationAttribute attr = (TextDurationAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "duration");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDurationAttribute</code> , See {@odf.attribute text:duration}
+	 *
+	 * @param textDurationValue   The type is <code>String</code>
+	 */
+	public void setTextDurationAttribute(String textDurationValue) {
+		TextDurationAttribute attr = new TextDurationAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDurationValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextExecuteMacroElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextExecuteMacroElement.java
new file mode 100644
index 0000000..91aa41c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextExecuteMacroElement.java
@@ -0,0 +1,116 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeEventListenersElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:execute-macro}.
+ *
+ */
+public class TextExecuteMacroElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "execute-macro");
+
+	/**
+	 * Create the instance of <code>TextExecuteMacroElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextExecuteMacroElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:execute-macro}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:event-listeners}.
+	 *
+	 * @return the element {@odf.element office:event-listeners}
+	 */
+	public OfficeEventListenersElement newOfficeEventListenersElement() {
+		OfficeEventListenersElement officeEventListeners = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeEventListenersElement.class);
+		this.appendChild(officeEventListeners);
+		return officeEventListeners;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextExpressionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextExpressionElement.java
new file mode 100644
index 0000000..c009e85
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextExpressionElement.java
@@ -0,0 +1,333 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFormulaAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:expression}.
+ *
+ */
+public class TextExpressionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "expression");
+
+	/**
+	 * Create the instance of <code>TextExpressionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextExpressionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:expression}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFormulaAttribute() {
+		TextFormulaAttribute attr = (TextFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @param textFormulaValue   The type is <code>String</code>
+	 */
+	public void setTextFormulaAttribute(String textFormulaValue) {
+		TextFormulaAttribute attr = new TextFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFormulaValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextFileNameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextFileNameElement.java
new file mode 100644
index 0000000..9ae6f81
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextFileNameElement.java
@@ -0,0 +1,129 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:file-name}.
+ *
+ */
+public class TextFileNameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "file-name");
+
+	/**
+	 * Create the instance of <code>TextFileNameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextFileNameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:file-name}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextFormatChangeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextFormatChangeElement.java
new file mode 100644
index 0000000..b76b0c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextFormatChangeElement.java
@@ -0,0 +1,85 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:format-change}.
+ *
+ */
+public class TextFormatChangeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "format-change");
+
+	/**
+	 * Create the instance of <code>TextFormatChangeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextFormatChangeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:format-change}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHElement.java
new file mode 100644
index 0000000..a72296d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHElement.java
@@ -0,0 +1,1807 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIsListHeaderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRestartNumberingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:h}.
+ *
+ */
+public class TextHElement extends TextParagraphElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "h");
+
+	/**
+	 * Create the instance of <code>TextHElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextHElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:h}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIsListHeaderAttribute</code> , See {@odf.attribute text:is-list-header}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextIsListHeaderAttribute() {
+		TextIsListHeaderAttribute attr = (TextIsListHeaderAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "is-list-header");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextIsListHeaderAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIsListHeaderAttribute</code> , See {@odf.attribute text:is-list-header}
+	 *
+	 * @param textIsListHeaderValue   The type is <code>Boolean</code>
+	 */
+	public void setTextIsListHeaderAttribute(Boolean textIsListHeaderValue) {
+		TextIsListHeaderAttribute attr = new TextIsListHeaderAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textIsListHeaderValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRestartNumberingAttribute</code> , See {@odf.attribute text:restart-numbering}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRestartNumberingAttribute() {
+		TextRestartNumberingAttribute attr = (TextRestartNumberingAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "restart-numbering");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRestartNumberingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRestartNumberingAttribute</code> , See {@odf.attribute text:restart-numbering}
+	 *
+	 * @param textRestartNumberingValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRestartNumberingAttribute(Boolean textRestartNumberingValue) {
+		TextRestartNumberingAttribute attr = new TextRestartNumberingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRestartNumberingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextStartValueAttribute() {
+		TextStartValueAttribute attr = (TextStartValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @param textStartValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextStartValueAttribute(Integer textStartValueValue) {
+		TextStartValueAttribute attr = new TextStartValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textStartValueValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation-end}.
+	 *
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation-end}
+	 */
+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {
+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);
+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(officeAnnotationEnd);
+		return officeAnnotationEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time}.
+	 *
+	 * @return the element {@odf.element presentation:date-time}
+	 */
+	public PresentationDateTimeElement newPresentationDateTimeElement() {
+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);
+		this.appendChild(presentationDateTime);
+		return presentationDateTime;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer}.
+	 *
+	 * @return the element {@odf.element presentation:footer}
+	 */
+	public PresentationFooterElement newPresentationFooterElement() {
+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);
+		this.appendChild(presentationFooter);
+		return presentationFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header}.
+	 *
+	 * @return the element {@odf.element presentation:header}
+	 */
+	public PresentationHeaderElement newPresentationHeaderElement() {
+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);
+		this.appendChild(presentationHeader);
+		return presentationHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:a}
+	 */
+	 public TextAElement newTextAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAElement textA = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAElement.class);
+		textA.setXlinkHrefAttribute(xlinkHrefValue);
+		textA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textA);
+		return textA;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark}
+	 */
+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {
+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);
+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textAlphabeticalIndexMark);
+		return textAlphabeticalIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-end}
+	 */
+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {
+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);
+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkEnd);
+		return textAlphabeticalIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-start}
+	 */
+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {
+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);
+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkStart);
+		return textAlphabeticalIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-initials}.
+	 *
+	 * @return the element {@odf.element text:author-initials}
+	 */
+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {
+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);
+		this.appendChild(textAuthorInitials);
+		return textAuthorInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-name}.
+	 *
+	 * @return the element {@odf.element text:author-name}
+	 */
+	public TextAuthorNameElement newTextAuthorNameElement() {
+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);
+		this.appendChild(textAuthorName);
+		return textAuthorName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-mark}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * @return the element {@odf.element text:bibliography-mark}
+	 */
+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {
+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);
+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		this.appendChild(textBibliographyMark);
+		return textBibliographyMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark}
+	 */
+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {
+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);
+		textBookmark.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmark);
+		return textBookmark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-end}
+	 */
+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {
+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);
+		textBookmarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkEnd);
+		return textBookmarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-ref}.
+	 *
+	 * @return the element {@odf.element text:bookmark-ref}
+	 */
+	public TextBookmarkRefElement newTextBookmarkRefElement() {
+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);
+		this.appendChild(textBookmarkRef);
+		return textBookmarkRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-start}
+	 */
+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {
+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);
+		textBookmarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkStart);
+		return textBookmarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:chapter}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:chapter}
+	 */
+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {
+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);
+		textChapter.setTextDisplayAttribute(textDisplayValue);
+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textChapter);
+		return textChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:character-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:character-count}
+	 */
+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {
+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);
+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textCharacterCount);
+		return textCharacterCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:conditional-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification
+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification
+	 * @return the element {@odf.element text:conditional-text}
+	 */
+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {
+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);
+		textConditionalText.setTextConditionAttribute(textConditionValue);
+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);
+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);
+		this.appendChild(textConditionalText);
+		return textConditionalText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-date}.
+	 *
+	 * @return the element {@odf.element text:creation-date}
+	 */
+	public TextCreationDateElement newTextCreationDateElement() {
+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);
+		this.appendChild(textCreationDate);
+		return textCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-time}.
+	 *
+	 * @return the element {@odf.element text:creation-time}
+	 */
+	public TextCreationTimeElement newTextCreationTimeElement() {
+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);
+		this.appendChild(textCreationTime);
+		return textCreationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creator}.
+	 *
+	 * @return the element {@odf.element text:creator}
+	 */
+	public TextCreatorElement newTextCreatorElement() {
+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);
+		this.appendChild(textCreator);
+		return textCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-display}.
+	 *
+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-display}
+	 */
+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {
+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);
+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);
+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseDisplay);
+		return textDatabaseDisplay;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-name}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-name}
+	 */
+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {
+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);
+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseName);
+		return textDatabaseName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-next}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-next}
+	 */
+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {
+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);
+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseNext);
+		return textDatabaseNext;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-number}
+	 */
+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {
+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);
+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowNumber);
+		return textDatabaseRowNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-select}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-select}
+	 */
+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {
+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);
+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowSelect);
+		return textDatabaseRowSelect;
+	}
+
+	/**
+	 * Create child element {@odf.element text:date}.
+	 *
+	 * @return the element {@odf.element text:date}
+	 */
+	public TextDateElement newTextDateElement() {
+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);
+		this.appendChild(textDate);
+		return textDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection}.
+	 *
+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification
+	 * @return the element {@odf.element text:dde-connection}
+	 */
+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {
+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);
+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);
+		this.appendChild(textDdeConnection);
+		return textDdeConnection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:description}.
+	 *
+	 * @return the element {@odf.element text:description}
+	 */
+	public TextDescriptionElement newTextDescriptionElement() {
+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);
+		this.appendChild(textDescription);
+		return textDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-cycles}.
+	 *
+	 * @return the element {@odf.element text:editing-cycles}
+	 */
+	public TextEditingCyclesElement newTextEditingCyclesElement() {
+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);
+		this.appendChild(textEditingCycles);
+		return textEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-duration}.
+	 *
+	 * @return the element {@odf.element text:editing-duration}
+	 */
+	public TextEditingDurationElement newTextEditingDurationElement() {
+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);
+		this.appendChild(textEditingDuration);
+		return textEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:execute-macro}.
+	 *
+	 * @return the element {@odf.element text:execute-macro}
+	 */
+	public TextExecuteMacroElement newTextExecuteMacroElement() {
+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);
+		this.appendChild(textExecuteMacro);
+		return textExecuteMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element text:expression}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element text:expression}
+	 */
+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {
+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);
+		textExpression.setOfficeValueAttribute(officeValueValue);
+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(textExpression);
+		return textExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element text:file-name}.
+	 *
+	 * @return the element {@odf.element text:file-name}
+	 */
+	public TextFileNameElement newTextFileNameElement() {
+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);
+		this.appendChild(textFileName);
+		return textFileName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-paragraph}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @return the element {@odf.element text:hidden-paragraph}
+	 */
+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {
+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);
+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);
+		this.appendChild(textHiddenParagraph);
+		return textHiddenParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:hidden-text}
+	 */
+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {
+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);
+		textHiddenText.setTextConditionAttribute(textConditionValue);
+		textHiddenText.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textHiddenText);
+		return textHiddenText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:image-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:image-count}
+	 */
+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {
+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);
+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textImageCount);
+		return textImageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:initial-creator}.
+	 *
+	 * @return the element {@odf.element text:initial-creator}
+	 */
+	public TextInitialCreatorElement newTextInitialCreatorElement() {
+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);
+		this.appendChild(textInitialCreator);
+		return textInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:keywords}.
+	 *
+	 * @return the element {@odf.element text:keywords}
+	 */
+	public TextKeywordsElement newTextKeywordsElement() {
+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);
+		this.appendChild(textKeywords);
+		return textKeywords;
+	}
+
+	/**
+	 * Create child element {@odf.element text:line-break}.
+	 *
+	 * @return the element {@odf.element text:line-break}
+	 */
+	public TextLineBreakElement newTextLineBreakElement() {
+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);
+		this.appendChild(textLineBreak);
+		return textLineBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:measure}.
+	 *
+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification
+	 * @return the element {@odf.element text:measure}
+	 */
+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {
+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);
+		textMeasure.setTextKindAttribute(textKindValue);
+		this.appendChild(textMeasure);
+		return textMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta}
+	 */
+	public TextMetaElement newTextMetaElement() {
+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);
+		this.appendChild(textMeta);
+		return textMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta-field}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta-field}
+	 */
+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {
+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);
+		textMetaField.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textMetaField);
+		return textMetaField;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-date}.
+	 *
+	 * @return the element {@odf.element text:modification-date}
+	 */
+	public TextModificationDateElement newTextModificationDateElement() {
+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);
+		this.appendChild(textModificationDate);
+		return textModificationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-time}.
+	 *
+	 * @return the element {@odf.element text:modification-time}
+	 */
+	public TextModificationTimeElement newTextModificationTimeElement() {
+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);
+		this.appendChild(textModificationTime);
+		return textModificationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note}
+	 */
+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {
+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);
+		textNote.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNote);
+		return textNote;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-ref}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note-ref}
+	 */
+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {
+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);
+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNoteRef);
+		return textNoteRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:number}.
+	 *
+	 * @return the element {@odf.element text:number}
+	 */
+	public TextNumberElement newTextNumberElement() {
+		TextNumberElement textNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberElement.class);
+		this.appendChild(textNumber);
+		return textNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:object-count}
+	 */
+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {
+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);
+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textObjectCount);
+		return textObjectCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-continuation}.
+	 *
+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification
+	 * @return the element {@odf.element text:page-continuation}
+	 */
+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {
+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);
+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);
+		this.appendChild(textPageContinuation);
+		return textPageContinuation;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-count}
+	 */
+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {
+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);
+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageCount);
+		return textPageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-number}
+	 */
+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {
+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);
+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageNumber);
+		return textPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-get}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-variable-get}
+	 */
+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {
+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);
+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageVariableGet);
+		return textPageVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-set}.
+	 *
+	 * @return the element {@odf.element text:page-variable-set}
+	 */
+	public TextPageVariableSetElement newTextPageVariableSetElement() {
+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);
+		this.appendChild(textPageVariableSet);
+		return textPageVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:paragraph-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:paragraph-count}
+	 */
+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {
+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);
+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textParagraphCount);
+		return textParagraphCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:placeholder}.
+	 *
+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification
+	 * @return the element {@odf.element text:placeholder}
+	 */
+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {
+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);
+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);
+		this.appendChild(textPlaceholder);
+		return textPlaceholder;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-date}.
+	 *
+	 * @return the element {@odf.element text:print-date}
+	 */
+	public TextPrintDateElement newTextPrintDateElement() {
+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);
+		this.appendChild(textPrintDate);
+		return textPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-time}.
+	 *
+	 * @return the element {@odf.element text:print-time}
+	 */
+	public TextPrintTimeElement newTextPrintTimeElement() {
+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);
+		this.appendChild(textPrintTime);
+		return textPrintTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:printed-by}.
+	 *
+	 * @return the element {@odf.element text:printed-by}
+	 */
+	public TextPrintedByElement newTextPrintedByElement() {
+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);
+		this.appendChild(textPrintedBy);
+		return textPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark}
+	 */
+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {
+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);
+		textReferenceMark.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMark);
+		return textReferenceMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-end}
+	 */
+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {
+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);
+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkEnd);
+		return textReferenceMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-start}
+	 */
+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {
+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);
+		textReferenceMarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkStart);
+		return textReferenceMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-ref}.
+	 *
+	 * @return the element {@odf.element text:reference-ref}
+	 */
+	public TextReferenceRefElement newTextReferenceRefElement() {
+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);
+		this.appendChild(textReferenceRef);
+		return textReferenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby}.
+	 *
+	 * @return the element {@odf.element text:ruby}
+	 */
+	public TextRubyElement newTextRubyElement() {
+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);
+		this.appendChild(textRuby);
+		return textRuby;
+	}
+
+	/**
+	 * Create child element {@odf.element text:s}.
+	 *
+	 * @return the element {@odf.element text:s}
+	 */
+	public TextSElement newTextSElement() {
+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);
+		this.appendChild(textS);
+		return textS;
+	}
+
+	/**
+	 * Create child element {@odf.element text:script}.
+	 *
+	 * @return the element {@odf.element text:script}
+	 */
+	public TextScriptElement newTextScriptElement() {
+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);
+		this.appendChild(textScript);
+		return textScript;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-city}.
+	 *
+	 * @return the element {@odf.element text:sender-city}
+	 */
+	public TextSenderCityElement newTextSenderCityElement() {
+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);
+		this.appendChild(textSenderCity);
+		return textSenderCity;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-company}.
+	 *
+	 * @return the element {@odf.element text:sender-company}
+	 */
+	public TextSenderCompanyElement newTextSenderCompanyElement() {
+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);
+		this.appendChild(textSenderCompany);
+		return textSenderCompany;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-country}.
+	 *
+	 * @return the element {@odf.element text:sender-country}
+	 */
+	public TextSenderCountryElement newTextSenderCountryElement() {
+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);
+		this.appendChild(textSenderCountry);
+		return textSenderCountry;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-email}.
+	 *
+	 * @return the element {@odf.element text:sender-email}
+	 */
+	public TextSenderEmailElement newTextSenderEmailElement() {
+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);
+		this.appendChild(textSenderEmail);
+		return textSenderEmail;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-fax}.
+	 *
+	 * @return the element {@odf.element text:sender-fax}
+	 */
+	public TextSenderFaxElement newTextSenderFaxElement() {
+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);
+		this.appendChild(textSenderFax);
+		return textSenderFax;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-firstname}.
+	 *
+	 * @return the element {@odf.element text:sender-firstname}
+	 */
+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {
+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);
+		this.appendChild(textSenderFirstname);
+		return textSenderFirstname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-initials}.
+	 *
+	 * @return the element {@odf.element text:sender-initials}
+	 */
+	public TextSenderInitialsElement newTextSenderInitialsElement() {
+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);
+		this.appendChild(textSenderInitials);
+		return textSenderInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-lastname}.
+	 *
+	 * @return the element {@odf.element text:sender-lastname}
+	 */
+	public TextSenderLastnameElement newTextSenderLastnameElement() {
+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);
+		this.appendChild(textSenderLastname);
+		return textSenderLastname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-private}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-private}
+	 */
+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {
+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);
+		this.appendChild(textSenderPhonePrivate);
+		return textSenderPhonePrivate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-work}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-work}
+	 */
+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {
+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);
+		this.appendChild(textSenderPhoneWork);
+		return textSenderPhoneWork;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-position}.
+	 *
+	 * @return the element {@odf.element text:sender-position}
+	 */
+	public TextSenderPositionElement newTextSenderPositionElement() {
+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);
+		this.appendChild(textSenderPosition);
+		return textSenderPosition;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-postal-code}.
+	 *
+	 * @return the element {@odf.element text:sender-postal-code}
+	 */
+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {
+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);
+		this.appendChild(textSenderPostalCode);
+		return textSenderPostalCode;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-state-or-province}.
+	 *
+	 * @return the element {@odf.element text:sender-state-or-province}
+	 */
+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {
+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);
+		this.appendChild(textSenderStateOrProvince);
+		return textSenderStateOrProvince;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-street}.
+	 *
+	 * @return the element {@odf.element text:sender-street}
+	 */
+	public TextSenderStreetElement newTextSenderStreetElement() {
+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);
+		this.appendChild(textSenderStreet);
+		return textSenderStreet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-title}.
+	 *
+	 * @return the element {@odf.element text:sender-title}
+	 */
+	public TextSenderTitleElement newTextSenderTitleElement() {
+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);
+		this.appendChild(textSenderTitle);
+		return textSenderTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:sequence}
+	 */
+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {
+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);
+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);
+		textSequence.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequence);
+		return textSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-ref}.
+	 *
+	 * @return the element {@odf.element text:sequence-ref}
+	 */
+	public TextSequenceRefElement newTextSequenceRefElement() {
+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);
+		this.appendChild(textSequenceRef);
+		return textSequenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sheet-name}.
+	 *
+	 * @return the element {@odf.element text:sheet-name}
+	 */
+	public TextSheetNameElement newTextSheetNameElement() {
+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);
+		this.appendChild(textSheetName);
+		return textSheetName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:span}.
+	 *
+	 * @return the element {@odf.element text:span}
+	 */
+	public TextSpanElement newTextSpanElement() {
+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);
+		this.appendChild(textSpan);
+		return textSpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:subject}.
+	 *
+	 * @return the element {@odf.element text:subject}
+	 */
+	public TextSubjectElement newTextSubjectElement() {
+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);
+		this.appendChild(textSubject);
+		return textSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tab}.
+	 *
+	 * @return the element {@odf.element text:tab}
+	 */
+	public TextTabElement newTextTabElement() {
+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);
+		this.appendChild(textTab);
+		return textTab;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:table-count}
+	 */
+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {
+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);
+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textTableCount);
+		return textTableCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-formula}.
+	 *
+	 * @return the element {@odf.element text:table-formula}
+	 */
+	public TextTableFormulaElement newTextTableFormulaElement() {
+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);
+		this.appendChild(textTableFormula);
+		return textTableFormula;
+	}
+
+	/**
+	 * Create child element {@odf.element text:template-name}.
+	 *
+	 * @return the element {@odf.element text:template-name}
+	 */
+	public TextTemplateNameElement newTextTemplateNameElement() {
+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);
+		this.appendChild(textTemplateName);
+		return textTemplateName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:text-input}.
+	 *
+	 * @return the element {@odf.element text:text-input}
+	 */
+	public TextTextInputElement newTextTextInputElement() {
+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);
+		this.appendChild(textTextInput);
+		return textTextInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:time}.
+	 *
+	 * @return the element {@odf.element text:time}
+	 */
+	public TextTimeElement newTextTimeElement() {
+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);
+		this.appendChild(textTime);
+		return textTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:title}.
+	 *
+	 * @return the element {@odf.element text:title}
+	 */
+	public TextTitleElement newTextTitleElement() {
+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);
+		this.appendChild(textTitle);
+		return textTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:toc-mark}
+	 */
+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {
+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);
+		textTocMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textTocMark);
+		return textTocMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-end}
+	 */
+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {
+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);
+		textTocMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkEnd);
+		return textTocMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-start}
+	 */
+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {
+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);
+		textTocMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkStart);
+		return textTocMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-defined}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-defined}
+	 */
+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {
+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);
+		textUserDefined.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserDefined);
+		return textUserDefined;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-get}
+	 */
+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {
+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);
+		textUserFieldGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldGet);
+		return textUserFieldGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-input}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-input}
+	 */
+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {
+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);
+		textUserFieldInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldInput);
+		return textUserFieldInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:user-index-mark}
+	 */
+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {
+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);
+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);
+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textUserIndexMark);
+		return textUserIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:user-index-mark-end}
+	 */
+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {
+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);
+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textUserIndexMarkEnd);
+		return textUserIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @return the element {@odf.element text:user-index-mark-start}
+	 */
+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {
+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);
+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);
+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexMarkStart);
+		return textUserIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-get}
+	 */
+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {
+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);
+		textVariableGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableGet);
+		return textVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-input}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-input}
+	 */
+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);
+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableInput);
+		return textVariableInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-set}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-set}
+	 */
+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);
+		textVariableSet.setOfficeValueAttribute(officeValueValue);
+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableSet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableSet);
+		return textVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:word-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:word-count}
+	 */
+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {
+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);
+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textWordCount);
+		return textWordCount;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHiddenParagraphElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHiddenParagraphElement.java
new file mode 100644
index 0000000..910ded1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHiddenParagraphElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIsHiddenAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:hidden-paragraph}.
+ *
+ */
+public class TextHiddenParagraphElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "hidden-paragraph");
+
+	/**
+	 * Create the instance of <code>TextHiddenParagraphElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextHiddenParagraphElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:hidden-paragraph}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIsHiddenAttribute</code> , See {@odf.attribute text:is-hidden}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextIsHiddenAttribute() {
+		TextIsHiddenAttribute attr = (TextIsHiddenAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "is-hidden");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIsHiddenAttribute</code> , See {@odf.attribute text:is-hidden}
+	 *
+	 * @param textIsHiddenValue   The type is <code>Boolean</code>
+	 */
+	public void setTextIsHiddenAttribute(Boolean textIsHiddenValue) {
+		TextIsHiddenAttribute attr = new TextIsHiddenAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textIsHiddenValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHiddenTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHiddenTextElement.java
new file mode 100644
index 0000000..dc845ba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextHiddenTextElement.java
@@ -0,0 +1,158 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIsHiddenAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:hidden-text}.
+ *
+ */
+public class TextHiddenTextElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "hidden-text");
+
+	/**
+	 * Create the instance of <code>TextHiddenTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextHiddenTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:hidden-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIsHiddenAttribute</code> , See {@odf.attribute text:is-hidden}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextIsHiddenAttribute() {
+		TextIsHiddenAttribute attr = (TextIsHiddenAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "is-hidden");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIsHiddenAttribute</code> , See {@odf.attribute text:is-hidden}
+	 *
+	 * @param textIsHiddenValue   The type is <code>Boolean</code>
+	 */
+	public void setTextIsHiddenAttribute(Boolean textIsHiddenValue) {
+		TextIsHiddenAttribute attr = new TextIsHiddenAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textIsHiddenValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueAttribute() {
+		TextStringValueAttribute attr = (TextStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * @param textStringValueValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueAttribute(String textStringValueValue) {
+		TextStringValueAttribute attr = new TextStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexElement.java
new file mode 100644
index 0000000..b48885e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:illustration-index}.
+ *
+ */
+public class TextIllustrationIndexElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "illustration-index");
+
+	/**
+	 * Create the instance of <code>TextIllustrationIndexElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIllustrationIndexElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:illustration-index}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index-source}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:illustration-index-source}
+	 */
+	public TextIllustrationIndexSourceElement newTextIllustrationIndexSourceElement() {
+		TextIllustrationIndexSourceElement textIllustrationIndexSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexSourceElement.class);
+		this.appendChild(textIllustrationIndexSource);
+		return textIllustrationIndexSource;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexEntryTemplateElement.java
new file mode 100644
index 0000000..19d65b4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexEntryTemplateElement.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:illustration-index-entry-template}.
+ *
+ */
+public class TextIllustrationIndexEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "illustration-index-entry-template");
+
+	/**
+	 * Create the instance of <code>TextIllustrationIndexEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIllustrationIndexEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:illustration-index-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-chapter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:index-entry-chapter}
+	 */
+	public TextIndexEntryChapterElement newTextIndexEntryChapterElement() {
+		TextIndexEntryChapterElement textIndexEntryChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryChapterElement.class);
+		this.appendChild(textIndexEntryChapter);
+		return textIndexEntryChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-page-number}.
+	 *
+	 * @return the element {@odf.element text:index-entry-page-number}
+	 */
+	public TextIndexEntryPageNumberElement newTextIndexEntryPageNumberElement() {
+		TextIndexEntryPageNumberElement textIndexEntryPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryPageNumberElement.class);
+		this.appendChild(textIndexEntryPageNumber);
+		return textIndexEntryPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-text}.
+	 *
+	 * @return the element {@odf.element text:index-entry-text}
+	 */
+	public TextIndexEntryTextElement newTextIndexEntryTextElement() {
+		TextIndexEntryTextElement textIndexEntryText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTextElement.class);
+		this.appendChild(textIndexEntryText);
+		return textIndexEntryText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexSourceElement.java
new file mode 100644
index 0000000..da2c282
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIllustrationIndexSourceElement.java
@@ -0,0 +1,220 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCaptionSequenceFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCaptionSequenceNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexScopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRelativeTabStopPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseCaptionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:illustration-index-source}.
+ *
+ */
+public class TextIllustrationIndexSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "illustration-index-source");
+
+	/**
+	 * Create the instance of <code>TextIllustrationIndexSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIllustrationIndexSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:illustration-index-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCaptionSequenceFormatAttribute</code> , See {@odf.attribute text:caption-sequence-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCaptionSequenceFormatAttribute() {
+		TextCaptionSequenceFormatAttribute attr = (TextCaptionSequenceFormatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "caption-sequence-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCaptionSequenceFormatAttribute</code> , See {@odf.attribute text:caption-sequence-format}
+	 *
+	 * @param textCaptionSequenceFormatValue   The type is <code>String</code>
+	 */
+	public void setTextCaptionSequenceFormatAttribute(String textCaptionSequenceFormatValue) {
+		TextCaptionSequenceFormatAttribute attr = new TextCaptionSequenceFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCaptionSequenceFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCaptionSequenceNameAttribute</code> , See {@odf.attribute text:caption-sequence-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCaptionSequenceNameAttribute() {
+		TextCaptionSequenceNameAttribute attr = (TextCaptionSequenceNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "caption-sequence-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCaptionSequenceNameAttribute</code> , See {@odf.attribute text:caption-sequence-name}
+	 *
+	 * @param textCaptionSequenceNameValue   The type is <code>String</code>
+	 */
+	public void setTextCaptionSequenceNameAttribute(String textCaptionSequenceNameValue) {
+		TextCaptionSequenceNameAttribute attr = new TextCaptionSequenceNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCaptionSequenceNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexScopeAttribute() {
+		TextIndexScopeAttribute attr = (TextIndexScopeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-scope");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextIndexScopeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @param textIndexScopeValue   The type is <code>String</code>
+	 */
+	public void setTextIndexScopeAttribute(String textIndexScopeValue) {
+		TextIndexScopeAttribute attr = new TextIndexScopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexScopeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRelativeTabStopPositionAttribute() {
+		TextRelativeTabStopPositionAttribute attr = (TextRelativeTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRelativeTabStopPositionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @param textRelativeTabStopPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRelativeTabStopPositionAttribute(Boolean textRelativeTabStopPositionValue) {
+		TextRelativeTabStopPositionAttribute attr = new TextRelativeTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRelativeTabStopPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseCaptionAttribute</code> , See {@odf.attribute text:use-caption}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseCaptionAttribute() {
+		TextUseCaptionAttribute attr = (TextUseCaptionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-caption");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseCaptionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseCaptionAttribute</code> , See {@odf.attribute text:use-caption}
+	 *
+	 * @param textUseCaptionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseCaptionAttribute(Boolean textUseCaptionValue) {
+		TextUseCaptionAttribute attr = new TextUseCaptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseCaptionValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index-entry-template}.
+	 *
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:illustration-index-entry-template}
+	 */
+	 public TextIllustrationIndexEntryTemplateElement newTextIllustrationIndexEntryTemplateElement(String textStyleNameValue) {
+		TextIllustrationIndexEntryTemplateElement textIllustrationIndexEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexEntryTemplateElement.class);
+		textIllustrationIndexEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textIllustrationIndexEntryTemplate);
+		return textIllustrationIndexEntryTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextImageCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextImageCountElement.java
new file mode 100644
index 0000000..9e2603c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextImageCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:image-count}.
+ *
+ */
+public class TextImageCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "image-count");
+
+	/**
+	 * Create the instance of <code>TextImageCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextImageCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:image-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexBodyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexBodyElement.java
new file mode 100644
index 0000000..655209a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexBodyElement.java
@@ -0,0 +1,556 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-body}.
+ *
+ */
+public class TextIndexBodyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-body");
+
+	/**
+	 * Create the instance of <code>TextIndexBodyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexBodyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-body}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:index-title}
+	 */
+	 public TextIndexTitleElement newTextIndexTitleElement(String textNameValue) {
+		TextIndexTitleElement textIndexTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleElement.class);
+		textIndexTitle.setTextNameAttribute(textNameValue);
+		this.appendChild(textIndexTitle);
+		return textIndexTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryBibliographyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryBibliographyElement.java
new file mode 100644
index 0000000..ed43536
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryBibliographyElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextBibliographyDataFieldAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-bibliography}.
+ *
+ */
+public class TextIndexEntryBibliographyElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-bibliography");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryBibliographyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryBibliographyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-bibliography}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextBibliographyDataFieldAttribute</code> , See {@odf.attribute text:bibliography-data-field}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextBibliographyDataFieldAttribute() {
+		TextBibliographyDataFieldAttribute attr = (TextBibliographyDataFieldAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "bibliography-data-field");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextBibliographyDataFieldAttribute</code> , See {@odf.attribute text:bibliography-data-field}
+	 *
+	 * @param textBibliographyDataFieldValue   The type is <code>String</code>
+	 */
+	public void setTextBibliographyDataFieldAttribute(String textBibliographyDataFieldValue) {
+		TextBibliographyDataFieldAttribute attr = new TextBibliographyDataFieldAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textBibliographyDataFieldValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryChapterElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryChapterElement.java
new file mode 100644
index 0000000..b530c4f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryChapterElement.java
@@ -0,0 +1,148 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-chapter}.
+ *
+ */
+public class TextIndexEntryChapterElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-chapter");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryChapterElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryChapterElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-chapter}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextDisplayAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryLinkEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryLinkEndElement.java
new file mode 100644
index 0000000..40467f1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryLinkEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-link-end}.
+ *
+ */
+public class TextIndexEntryLinkEndElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-link-end");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryLinkEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryLinkEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-link-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryLinkStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryLinkStartElement.java
new file mode 100644
index 0000000..c844001
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryLinkStartElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-link-start}.
+ *
+ */
+public class TextIndexEntryLinkStartElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-link-start");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryLinkStartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryLinkStartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-link-start}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryPageNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryPageNumberElement.java
new file mode 100644
index 0000000..53bfdcd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryPageNumberElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-page-number}.
+ *
+ */
+public class TextIndexEntryPageNumberElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-page-number");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryPageNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryPageNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-page-number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntrySpanElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntrySpanElement.java
new file mode 100644
index 0000000..9c503e0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntrySpanElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-span}.
+ *
+ */
+public class TextIndexEntrySpanElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-span");
+
+	/**
+	 * Create the instance of <code>TextIndexEntrySpanElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntrySpanElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-span}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryTabStopElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryTabStopElement.java
new file mode 100644
index 0000000..8583339
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryTabStopElement.java
@@ -0,0 +1,175 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLeaderCharAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StylePositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-tab-stop}.
+ *
+ */
+public class TextIndexEntryTabStopElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-tab-stop");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryTabStopElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryTabStopElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-tab-stop}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleLeaderCharAttribute</code> , See {@odf.attribute style:leader-char}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleLeaderCharAttribute() {
+		StyleLeaderCharAttribute attr = (StyleLeaderCharAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "leader-char");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleLeaderCharAttribute</code> , See {@odf.attribute style:leader-char}
+	 *
+	 * @param styleLeaderCharValue   The type is <code>String</code>
+	 */
+	public void setStyleLeaderCharAttribute(String styleLeaderCharValue) {
+		StyleLeaderCharAttribute attr = new StyleLeaderCharAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleLeaderCharValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StylePositionAttribute</code> , See {@odf.attribute style:position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStylePositionAttribute() {
+		StylePositionAttribute attr = (StylePositionAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StylePositionAttribute</code> , See {@odf.attribute style:position}
+	 *
+	 * @param stylePositionValue   The type is <code>String</code>
+	 */
+	public void setStylePositionAttribute(String stylePositionValue) {
+		StylePositionAttribute attr = new StylePositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(stylePositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleTypeAttribute</code> , See {@odf.attribute style:type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleTypeAttribute() {
+		StyleTypeAttribute attr = (StyleTypeAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleTypeAttribute</code> , See {@odf.attribute style:type}
+	 *
+	 * @param styleTypeValue   The type is <code>String</code>
+	 */
+	public void setStyleTypeAttribute(String styleTypeValue) {
+		StyleTypeAttribute attr = new StyleTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryTextElement.java
new file mode 100644
index 0000000..d602317
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexEntryTextElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-entry-text}.
+ *
+ */
+public class TextIndexEntryTextElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-entry-text");
+
+	/**
+	 * Create the instance of <code>TextIndexEntryTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexEntryTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-entry-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexSourceStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexSourceStyleElement.java
new file mode 100644
index 0000000..6331b0a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexSourceStyleElement.java
@@ -0,0 +1,100 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-source-style}.
+ *
+ */
+public class TextIndexSourceStyleElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-source-style");
+
+	/**
+	 * Create the instance of <code>TextIndexSourceStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexSourceStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-source-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexSourceStylesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexSourceStylesElement.java
new file mode 100644
index 0000000..03774a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexSourceStylesElement.java
@@ -0,0 +1,111 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-source-styles}.
+ *
+ */
+public class TextIndexSourceStylesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-source-styles");
+
+	/**
+	 * Create the instance of <code>TextIndexSourceStylesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexSourceStylesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-source-styles}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-source-style}.
+	 *
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:index-source-style}
+	 */
+	 public TextIndexSourceStyleElement newTextIndexSourceStyleElement(String textStyleNameValue) {
+		TextIndexSourceStyleElement textIndexSourceStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexSourceStyleElement.class);
+		textIndexSourceStyle.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textIndexSourceStyle);
+		return textIndexSourceStyle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexTitleElement.java
new file mode 100644
index 0000000..74b7c94
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexTitleElement.java
@@ -0,0 +1,710 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-title}.
+ *
+ */
+public class TextIndexTitleElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-title");
+
+	/**
+	 * Create the instance of <code>TextIndexTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:index-title}
+	 */
+	 public TextIndexTitleElement newTextIndexTitleElement(String textNameValue) {
+		TextIndexTitleElement textIndexTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleElement.class);
+		textIndexTitle.setTextNameAttribute(textNameValue);
+		this.appendChild(textIndexTitle);
+		return textIndexTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexTitleTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexTitleTemplateElement.java
new file mode 100644
index 0000000..b6efd05
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextIndexTitleTemplateElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:index-title-template}.
+ *
+ */
+public class TextIndexTitleTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "index-title-template");
+
+	/**
+	 * Create the instance of <code>TextIndexTitleTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextIndexTitleTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:index-title-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextInitialCreatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextInitialCreatorElement.java
new file mode 100644
index 0000000..93035dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextInitialCreatorElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:initial-creator}.
+ *
+ */
+public class TextInitialCreatorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "initial-creator");
+
+	/**
+	 * Create the instance of <code>TextInitialCreatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextInitialCreatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:initial-creator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextInsertionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextInsertionElement.java
new file mode 100644
index 0000000..af52684
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextInsertionElement.java
@@ -0,0 +1,85 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeChangeInfoElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:insertion}.
+ *
+ */
+public class TextInsertionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "insertion");
+
+	/**
+	 * Create the instance of <code>TextInsertionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextInsertionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:insertion}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element office:change-info}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element office:change-info}
+	 */
+	public OfficeChangeInfoElement newOfficeChangeInfoElement() {
+		OfficeChangeInfoElement officeChangeInfo = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeChangeInfoElement.class);
+		this.appendChild(officeChangeInfo);
+		return officeChangeInfo;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextKeywordsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextKeywordsElement.java
new file mode 100644
index 0000000..599ac521
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextKeywordsElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:keywords}.
+ *
+ */
+public class TextKeywordsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "keywords");
+
+	/**
+	 * Create the instance of <code>TextKeywordsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextKeywordsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:keywords}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLineBreakElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLineBreakElement.java
new file mode 100644
index 0000000..7bab270
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLineBreakElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:line-break}.
+ *
+ */
+public class TextLineBreakElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "line-break");
+
+	/**
+	 * Create the instance of <code>TextLineBreakElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextLineBreakElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:line-break}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLinenumberingConfigurationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLinenumberingConfigurationElement.java
new file mode 100644
index 0000000..f176ee3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLinenumberingConfigurationElement.java
@@ -0,0 +1,336 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCountEmptyLinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCountInTextBoxesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIncrementAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNumberLinesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNumberPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOffsetAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRestartOnPageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:linenumbering-configuration}.
+ *
+ */
+public class TextLinenumberingConfigurationElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "linenumbering-configuration");
+
+	/**
+	 * Create the instance of <code>TextLinenumberingConfigurationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextLinenumberingConfigurationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:linenumbering-configuration}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCountEmptyLinesAttribute</code> , See {@odf.attribute text:count-empty-lines}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCountEmptyLinesAttribute() {
+		TextCountEmptyLinesAttribute attr = (TextCountEmptyLinesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "count-empty-lines");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCountEmptyLinesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCountEmptyLinesAttribute</code> , See {@odf.attribute text:count-empty-lines}
+	 *
+	 * @param textCountEmptyLinesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCountEmptyLinesAttribute(Boolean textCountEmptyLinesValue) {
+		TextCountEmptyLinesAttribute attr = new TextCountEmptyLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCountEmptyLinesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCountInTextBoxesAttribute</code> , See {@odf.attribute text:count-in-text-boxes}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCountInTextBoxesAttribute() {
+		TextCountInTextBoxesAttribute attr = (TextCountInTextBoxesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "count-in-text-boxes");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCountInTextBoxesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCountInTextBoxesAttribute</code> , See {@odf.attribute text:count-in-text-boxes}
+	 *
+	 * @param textCountInTextBoxesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCountInTextBoxesAttribute(Boolean textCountInTextBoxesValue) {
+		TextCountInTextBoxesAttribute attr = new TextCountInTextBoxesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCountInTextBoxesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIncrementAttribute</code> , See {@odf.attribute text:increment}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextIncrementAttribute() {
+		TextIncrementAttribute attr = (TextIncrementAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "increment");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIncrementAttribute</code> , See {@odf.attribute text:increment}
+	 *
+	 * @param textIncrementValue   The type is <code>Integer</code>
+	 */
+	public void setTextIncrementAttribute(Integer textIncrementValue) {
+		TextIncrementAttribute attr = new TextIncrementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textIncrementValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNumberLinesAttribute</code> , See {@odf.attribute text:number-lines}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextNumberLinesAttribute() {
+		TextNumberLinesAttribute attr = (TextNumberLinesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "number-lines");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextNumberLinesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNumberLinesAttribute</code> , See {@odf.attribute text:number-lines}
+	 *
+	 * @param textNumberLinesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextNumberLinesAttribute(Boolean textNumberLinesValue) {
+		TextNumberLinesAttribute attr = new TextNumberLinesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textNumberLinesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNumberPositionAttribute</code> , See {@odf.attribute text:number-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNumberPositionAttribute() {
+		TextNumberPositionAttribute attr = (TextNumberPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "number-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextNumberPositionAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNumberPositionAttribute</code> , See {@odf.attribute text:number-position}
+	 *
+	 * @param textNumberPositionValue   The type is <code>String</code>
+	 */
+	public void setTextNumberPositionAttribute(String textNumberPositionValue) {
+		TextNumberPositionAttribute attr = new TextNumberPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNumberPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOffsetAttribute</code> , See {@odf.attribute text:offset}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextOffsetAttribute() {
+		TextOffsetAttribute attr = (TextOffsetAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "offset");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOffsetAttribute</code> , See {@odf.attribute text:offset}
+	 *
+	 * @param textOffsetValue   The type is <code>String</code>
+	 */
+	public void setTextOffsetAttribute(String textOffsetValue) {
+		TextOffsetAttribute attr = new TextOffsetAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textOffsetValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRestartOnPageAttribute</code> , See {@odf.attribute text:restart-on-page}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRestartOnPageAttribute() {
+		TextRestartOnPageAttribute attr = (TextRestartOnPageAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "restart-on-page");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRestartOnPageAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRestartOnPageAttribute</code> , See {@odf.attribute text:restart-on-page}
+	 *
+	 * @param textRestartOnPageValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRestartOnPageAttribute(Boolean textRestartOnPageValue) {
+		TextRestartOnPageAttribute attr = new TextRestartOnPageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRestartOnPageValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:linenumbering-separator}.
+	 *
+	 * @return the element {@odf.element text:linenumbering-separator}
+	 */
+	public TextLinenumberingSeparatorElement newTextLinenumberingSeparatorElement() {
+		TextLinenumberingSeparatorElement textLinenumberingSeparator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLinenumberingSeparatorElement.class);
+		this.appendChild(textLinenumberingSeparator);
+		return textLinenumberingSeparator;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLinenumberingSeparatorElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLinenumberingSeparatorElement.java
new file mode 100644
index 0000000..4991f3b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextLinenumberingSeparatorElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIncrementAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:linenumbering-separator}.
+ *
+ */
+public class TextLinenumberingSeparatorElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "linenumbering-separator");
+
+	/**
+	 * Create the instance of <code>TextLinenumberingSeparatorElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextLinenumberingSeparatorElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:linenumbering-separator}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIncrementAttribute</code> , See {@odf.attribute text:increment}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextIncrementAttribute() {
+		TextIncrementAttribute attr = (TextIncrementAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "increment");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIncrementAttribute</code> , See {@odf.attribute text:increment}
+	 *
+	 * @param textIncrementValue   The type is <code>Integer</code>
+	 */
+	public void setTextIncrementAttribute(Integer textIncrementValue) {
+		TextIncrementAttribute attr = new TextIncrementAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textIncrementValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListElement.java
new file mode 100644
index 0000000..449ec15
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListElement.java
@@ -0,0 +1,193 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextContinueListAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextContinueNumberingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list}.
+ *
+ */
+public class TextListElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list");
+
+	/**
+	 * Create the instance of <code>TextListElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextContinueListAttribute</code> , See {@odf.attribute text:continue-list}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextContinueListAttribute() {
+		TextContinueListAttribute attr = (TextContinueListAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "continue-list");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextContinueListAttribute</code> , See {@odf.attribute text:continue-list}
+	 *
+	 * @param textContinueListValue   The type is <code>String</code>
+	 */
+	public void setTextContinueListAttribute(String textContinueListValue) {
+		TextContinueListAttribute attr = new TextContinueListAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textContinueListValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextContinueNumberingAttribute</code> , See {@odf.attribute text:continue-numbering}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextContinueNumberingAttribute() {
+		TextContinueNumberingAttribute attr = (TextContinueNumberingAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "continue-numbering");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextContinueNumberingAttribute</code> , See {@odf.attribute text:continue-numbering}
+	 *
+	 * @param textContinueNumberingValue   The type is <code>Boolean</code>
+	 */
+	public void setTextContinueNumberingAttribute(Boolean textContinueNumberingValue) {
+		TextContinueNumberingAttribute attr = new TextContinueNumberingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textContinueNumberingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-header}.
+	 *
+	 * @return the element {@odf.element text:list-header}
+	 */
+	public TextListHeaderElement newTextListHeaderElement() {
+		TextListHeaderElement textListHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListHeaderElement.class);
+		this.appendChild(textListHeader);
+		return textListHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-item}.
+	 *
+	 * @return the element {@odf.element text:list-item}
+	 */
+	public TextListItemElement newTextListItemElement() {
+		TextListItemElement textListItem = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListItemElement.class);
+		this.appendChild(textListItem);
+		return textListItem;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListHeaderElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListHeaderElement.java
new file mode 100644
index 0000000..d98d240
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListHeaderElement.java
@@ -0,0 +1,153 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list-header}.
+ *
+ */
+public class TextListHeaderElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-header");
+
+	/**
+	 * Create the instance of <code>TextListHeaderElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListHeaderElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list-header}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:number}.
+	 *
+	 * @return the element {@odf.element text:number}
+	 */
+	public TextNumberElement newTextNumberElement() {
+		TextNumberElement textNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberElement.class);
+		this.appendChild(textNumber);
+		return textNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListItemElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListItemElement.java
new file mode 100644
index 0000000..3751506
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListItemElement.java
@@ -0,0 +1,203 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleOverrideAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list-item}.
+ *
+ */
+public class TextListItemElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-item");
+
+	/**
+	 * Create the instance of <code>TextListItemElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListItemElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list-item}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextStartValueAttribute() {
+		TextStartValueAttribute attr = (TextStartValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @param textStartValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextStartValueAttribute(Integer textStartValueValue) {
+		TextStartValueAttribute attr = new TextStartValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textStartValueValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleOverrideAttribute</code> , See {@odf.attribute text:style-override}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleOverrideAttribute() {
+		TextStyleOverrideAttribute attr = (TextStyleOverrideAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-override");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleOverrideAttribute</code> , See {@odf.attribute text:style-override}
+	 *
+	 * @param textStyleOverrideValue   The type is <code>String</code>
+	 */
+	public void setTextStyleOverrideAttribute(String textStyleOverrideValue) {
+		TextStyleOverrideAttribute attr = new TextStyleOverrideAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleOverrideValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:number}.
+	 *
+	 * @return the element {@odf.element text:number}
+	 */
+	public TextNumberElement newTextNumberElement() {
+		TextNumberElement textNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberElement.class);
+		this.appendChild(textNumber);
+		return textNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleBulletElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleBulletElement.java
new file mode 100644
index 0000000..3302634
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleBulletElement.java
@@ -0,0 +1,224 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumPrefixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumSuffixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextBulletCharAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextBulletRelativeSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list-level-style-bullet}.
+ *
+ */
+public class TextListLevelStyleBulletElement extends TextListLevelStyleElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-level-style-bullet");
+
+	/**
+	 * Create the instance of <code>TextListLevelStyleBulletElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListLevelStyleBulletElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list-level-style-bullet}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumPrefixAttribute() {
+		StyleNumPrefixAttribute attr = (StyleNumPrefixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-prefix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @param styleNumPrefixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumPrefixAttribute(String styleNumPrefixValue) {
+		StyleNumPrefixAttribute attr = new StyleNumPrefixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumPrefixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumSuffixAttribute() {
+		StyleNumSuffixAttribute attr = (StyleNumSuffixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-suffix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @param styleNumSuffixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumSuffixAttribute(String styleNumSuffixValue) {
+		StyleNumSuffixAttribute attr = new StyleNumSuffixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumSuffixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextBulletCharAttribute</code> , See {@odf.attribute text:bullet-char}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextBulletCharAttribute() {
+		TextBulletCharAttribute attr = (TextBulletCharAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "bullet-char");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextBulletCharAttribute</code> , See {@odf.attribute text:bullet-char}
+	 *
+	 * @param textBulletCharValue   The type is <code>String</code>
+	 */
+	public void setTextBulletCharAttribute(String textBulletCharValue) {
+		TextBulletCharAttribute attr = new TextBulletCharAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textBulletCharValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextBulletRelativeSizeAttribute</code> , See {@odf.attribute text:bullet-relative-size}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextBulletRelativeSizeAttribute() {
+		TextBulletRelativeSizeAttribute attr = (TextBulletRelativeSizeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "bullet-relative-size");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextBulletRelativeSizeAttribute</code> , See {@odf.attribute text:bullet-relative-size}
+	 *
+	 * @param textBulletRelativeSizeValue   The type is <code>String</code>
+	 */
+	public void setTextBulletRelativeSizeAttribute(String textBulletRelativeSizeValue) {
+		TextBulletRelativeSizeAttribute attr = new TextBulletRelativeSizeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textBulletRelativeSizeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:list-level-properties}.
+	 *
+	 * @return the element {@odf.element style:list-level-properties}
+	 */
+	public StyleListLevelPropertiesElement newStyleListLevelPropertiesElement() {
+		StyleListLevelPropertiesElement styleListLevelProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleListLevelPropertiesElement.class);
+		this.appendChild(styleListLevelProperties);
+		return styleListLevelProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleElementBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleElementBase.java
new file mode 100644
index 0000000..8e5a6da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleElementBase.java
@@ -0,0 +1,79 @@
+
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLevelAttribute;
+
+/**
+ * DOM implementation of OpenDocument base element
+ *
+ */
+public abstract class TextListLevelStyleElementBase extends OdfStyleBase {
+
+	/**
+	 * Create the instance of <code>TextListLevelStyleElementBase</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListLevelStyleElementBase(OdfFileDom ownerDoc, OdfName elementName) {
+		super(ownerDoc, elementName);
+	}
+
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLevelAttribute</code> , See {@odf.attribute text:level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextLevelAttribute() {
+		TextLevelAttribute attr = (TextLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLevelAttribute</code> , See {@odf.attribute text:level}
+	 *
+	 * @param textLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextLevelAttribute(Integer textLevelValue) {
+		TextLevelAttribute attr = new TextLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textLevelValue.intValue());
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleImageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleImageElement.java
new file mode 100644
index 0000000..bfe1e9b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleImageElement.java
@@ -0,0 +1,195 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBinaryDataElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkActuateAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list-level-style-image}.
+ *
+ */
+public class TextListLevelStyleImageElement extends TextListLevelStyleElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-level-style-image");
+
+	/**
+	 * Create the instance of <code>TextListLevelStyleImageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListLevelStyleImageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list-level-style-image}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkActuateAttribute() {
+		XlinkActuateAttribute attr = (XlinkActuateAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "actuate");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkActuateAttribute.DEFAULT_VALUE_ONLOAD;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkActuateAttribute</code> , See {@odf.attribute xlink:actuate}
+	 *
+	 * @param xlinkActuateValue   The type is <code>String</code>
+	 */
+	public void setXlinkActuateAttribute(String xlinkActuateValue) {
+		XlinkActuateAttribute attr = new XlinkActuateAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkActuateValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	/**
+	 * Create child element {@odf.element office:binary-data}.
+	 *
+	 * @return the element {@odf.element office:binary-data}
+	 */
+	public OfficeBinaryDataElement newOfficeBinaryDataElement() {
+		OfficeBinaryDataElement officeBinaryData = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeBinaryDataElement.class);
+		this.appendChild(officeBinaryData);
+		return officeBinaryData;
+	}
+
+	/**
+	 * Create child element {@odf.element style:list-level-properties}.
+	 *
+	 * @return the element {@odf.element style:list-level-properties}
+	 */
+	public StyleListLevelPropertiesElement newStyleListLevelPropertiesElement() {
+		StyleListLevelPropertiesElement styleListLevelProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleListLevelPropertiesElement.class);
+		this.appendChild(styleListLevelProperties);
+		return styleListLevelProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleNumberElement.java
new file mode 100644
index 0000000..41791a7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListLevelStyleNumberElement.java
@@ -0,0 +1,274 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumPrefixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumSuffixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayLevelsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list-level-style-number}.
+ *
+ */
+public class TextListLevelStyleNumberElement extends TextListLevelStyleElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-level-style-number");
+
+	/**
+	 * Create the instance of <code>TextListLevelStyleNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListLevelStyleNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list-level-style-number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumPrefixAttribute() {
+		StyleNumPrefixAttribute attr = (StyleNumPrefixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-prefix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @param styleNumPrefixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumPrefixAttribute(String styleNumPrefixValue) {
+		StyleNumPrefixAttribute attr = new StyleNumPrefixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumPrefixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumSuffixAttribute() {
+		StyleNumSuffixAttribute attr = (StyleNumSuffixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-suffix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @param styleNumSuffixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumSuffixAttribute(String styleNumSuffixValue) {
+		StyleNumSuffixAttribute attr = new StyleNumSuffixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumSuffixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayLevelsAttribute</code> , See {@odf.attribute text:display-levels}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextDisplayLevelsAttribute() {
+		TextDisplayLevelsAttribute attr = (TextDisplayLevelsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display-levels");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TextDisplayLevelsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayLevelsAttribute</code> , See {@odf.attribute text:display-levels}
+	 *
+	 * @param textDisplayLevelsValue   The type is <code>Integer</code>
+	 */
+	public void setTextDisplayLevelsAttribute(Integer textDisplayLevelsValue) {
+		TextDisplayLevelsAttribute attr = new TextDisplayLevelsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textDisplayLevelsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextStartValueAttribute() {
+		TextStartValueAttribute attr = (TextStartValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TextStartValueAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @param textStartValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextStartValueAttribute(Integer textStartValueValue) {
+		TextStartValueAttribute attr = new TextStartValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textStartValueValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:list-level-properties}.
+	 *
+	 * @return the element {@odf.element style:list-level-properties}
+	 */
+	public StyleListLevelPropertiesElement newStyleListLevelPropertiesElement() {
+		StyleListLevelPropertiesElement styleListLevelProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleListLevelPropertiesElement.class);
+		this.appendChild(styleListLevelProperties);
+		return styleListLevelProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListStyleElement.java
new file mode 100644
index 0000000..eaedd17
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextListStyleElement.java
@@ -0,0 +1,192 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDisplayNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConsecutiveNumberingAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:list-style}.
+ *
+ */
+public class TextListStyleElement extends OdfStyleBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "list-style");
+
+	/**
+	 * Create the instance of <code>TextListStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextListStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:list-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDisplayNameAttribute() {
+		StyleDisplayNameAttribute attr = (StyleDisplayNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "display-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDisplayNameAttribute</code> , See {@odf.attribute style:display-name}
+	 *
+	 * @param styleDisplayNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDisplayNameAttribute(String styleDisplayNameValue) {
+		StyleDisplayNameAttribute attr = new StyleDisplayNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDisplayNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConsecutiveNumberingAttribute</code> , See {@odf.attribute text:consecutive-numbering}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextConsecutiveNumberingAttribute() {
+		TextConsecutiveNumberingAttribute attr = (TextConsecutiveNumberingAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "consecutive-numbering");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextConsecutiveNumberingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConsecutiveNumberingAttribute</code> , See {@odf.attribute text:consecutive-numbering}
+	 *
+	 * @param textConsecutiveNumberingValue   The type is <code>Boolean</code>
+	 */
+	public void setTextConsecutiveNumberingAttribute(Boolean textConsecutiveNumberingValue) {
+		TextConsecutiveNumberingAttribute attr = new TextConsecutiveNumberingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textConsecutiveNumberingValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-level-style-bullet}.
+	 *
+	 * @param textBulletCharValue  the <code>String</code> value of <code>TextBulletCharAttribute</code>, see {@odf.attribute  text:bullet-char} at specification
+	 * @param textLevelValue  the <code>Integer</code> value of <code>TextLevelAttribute</code>, see {@odf.attribute  text:level} at specification
+	 * @return the element {@odf.element text:list-level-style-bullet}
+	 */
+	 public TextListLevelStyleBulletElement newTextListLevelStyleBulletElement(String textBulletCharValue, int textLevelValue) {
+		TextListLevelStyleBulletElement textListLevelStyleBullet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListLevelStyleBulletElement.class);
+		textListLevelStyleBullet.setTextBulletCharAttribute(textBulletCharValue);
+		textListLevelStyleBullet.setTextLevelAttribute(textLevelValue);
+		this.appendChild(textListLevelStyleBullet);
+		return textListLevelStyleBullet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-level-style-image}.
+	 *
+	 * @param textLevelValue  the <code>Integer</code> value of <code>TextLevelAttribute</code>, see {@odf.attribute  text:level} at specification
+	 * @return the element {@odf.element text:list-level-style-image}
+	 */
+	 public TextListLevelStyleImageElement newTextListLevelStyleImageElement(int textLevelValue) {
+		TextListLevelStyleImageElement textListLevelStyleImage = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListLevelStyleImageElement.class);
+		textListLevelStyleImage.setTextLevelAttribute(textLevelValue);
+		this.appendChild(textListLevelStyleImage);
+		return textListLevelStyleImage;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list-level-style-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textLevelValue  the <code>Integer</code> value of <code>TextLevelAttribute</code>, see {@odf.attribute  text:level} at specification
+	 * @return the element {@odf.element text:list-level-style-number}
+	 */
+	 public TextListLevelStyleNumberElement newTextListLevelStyleNumberElement(String styleNumFormatValue, int textLevelValue) {
+		TextListLevelStyleNumberElement textListLevelStyleNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListLevelStyleNumberElement.class);
+		textListLevelStyleNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textListLevelStyleNumber.setTextLevelAttribute(textLevelValue);
+		this.appendChild(textListLevelStyleNumber);
+		return textListLevelStyleNumber;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMeasureElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMeasureElement.java
new file mode 100644
index 0000000..8f29395
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMeasureElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKindAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:measure}.
+ *
+ */
+public class TextMeasureElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "measure");
+
+	/**
+	 * Create the instance of <code>TextMeasureElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextMeasureElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:measure}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKindAttribute</code> , See {@odf.attribute text:kind}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKindAttribute() {
+		TextKindAttribute attr = (TextKindAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "kind");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKindAttribute</code> , See {@odf.attribute text:kind}
+	 *
+	 * @param textKindValue   The type is <code>String</code>
+	 */
+	public void setTextKindAttribute(String textKindValue) {
+		TextKindAttribute attr = new TextKindAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKindValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMetaElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMetaElement.java
new file mode 100644
index 0000000..12f5ef0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMetaElement.java
@@ -0,0 +1,2079 @@
+/************************************************************************

+ *

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

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.dom.element.text;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;

+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;

+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;

+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;

+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlAboutAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlContentAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlDatatypeAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlPropertyAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;

+

+/**

+ * DOM implementation of OpenDocument element  {@odf.element text:meta}.

+ *

+ */

+public class TextMetaElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "meta");

+

+	/**

+	 * Create the instance of <code>TextMetaElement</code>

+	 *

+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>

+	 */

+	public TextMetaElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:meta}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlAboutAttribute() {

+		XhtmlAboutAttribute attr = (XhtmlAboutAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "about");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @param xhtmlAboutValue   The type is <code>String</code>

+	 */

+	public void setXhtmlAboutAttribute(String xhtmlAboutValue) {

+		XhtmlAboutAttribute attr = new XhtmlAboutAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlAboutValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlContentAttribute() {

+		XhtmlContentAttribute attr = (XhtmlContentAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "content");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @param xhtmlContentValue   The type is <code>String</code>

+	 */

+	public void setXhtmlContentAttribute(String xhtmlContentValue) {

+		XhtmlContentAttribute attr = new XhtmlContentAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlContentValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlDatatypeAttribute() {

+		XhtmlDatatypeAttribute attr = (XhtmlDatatypeAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "datatype");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @param xhtmlDatatypeValue   The type is <code>String</code>

+	 */

+	public void setXhtmlDatatypeAttribute(String xhtmlDatatypeValue) {

+		XhtmlDatatypeAttribute attr = new XhtmlDatatypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlDatatypeValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlPropertyAttribute() {

+		XhtmlPropertyAttribute attr = (XhtmlPropertyAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "property");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @param xhtmlPropertyValue   The type is <code>String</code>

+	 */

+	public void setXhtmlPropertyAttribute(String xhtmlPropertyValue) {

+		XhtmlPropertyAttribute attr = new XhtmlPropertyAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlPropertyValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXmlIdAttribute() {

+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @param xmlIdValue   The type is <code>String</code>

+	 */

+	public void setXmlIdAttribute(String xmlIdValue) {

+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xmlIdValue);

+	}

+

+	/**

+	 * Create child element {@odf.element dr3d:scene}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element dr3d:scene}

+	 */

+	public Dr3dSceneElement newDr3dSceneElement() {

+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);

+		this.appendChild(dr3dScene);

+		return dr3dScene;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:a}.

+	 *

+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification

+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:a}

+	 */

+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {

+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);

+		drawA.setXlinkHrefAttribute(xlinkHrefValue);

+		drawA.setXlinkTypeAttribute(xlinkTypeValue);

+		this.appendChild(drawA);

+		return drawA;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:caption}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:caption}

+	 */

+	public DrawCaptionElement newDrawCaptionElement() {

+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);

+		this.appendChild(drawCaption);

+		return drawCaption;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:circle}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:circle}

+	 */

+	public DrawCircleElement newDrawCircleElement() {

+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);

+		this.appendChild(drawCircle);

+		return drawCircle;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:connector}.

+	 *

+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:connector}

+	 */

+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {

+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);

+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);

+		this.appendChild(drawConnector);

+		return drawConnector;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:control}.

+	 *

+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:control}

+	 */

+	 public DrawControlElement newDrawControlElement(String drawControlValue) {

+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);

+		drawControl.setDrawControlAttribute(drawControlValue);

+		this.appendChild(drawControl);

+		return drawControl;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:custom-shape}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:custom-shape}

+	 */

+	public DrawCustomShapeElement newDrawCustomShapeElement() {

+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);

+		this.appendChild(drawCustomShape);

+		return drawCustomShape;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:ellipse}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:ellipse}

+	 */

+	public DrawEllipseElement newDrawEllipseElement() {

+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);

+		this.appendChild(drawEllipse);

+		return drawEllipse;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:frame}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:frame}

+	 */

+	public DrawFrameElement newDrawFrameElement() {

+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);

+		this.appendChild(drawFrame);

+		return drawFrame;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:g}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:g}

+	 */

+	public DrawGElement newDrawGElement() {

+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);

+		this.appendChild(drawG);

+		return drawG;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:line}.

+	 *

+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification

+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification

+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification

+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:line}

+	 */

+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {

+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);

+		drawLine.setSvgX1Attribute(svgX1Value);

+		drawLine.setSvgX2Attribute(svgX2Value);

+		drawLine.setSvgY1Attribute(svgY1Value);

+		drawLine.setSvgY2Attribute(svgY2Value);

+		this.appendChild(drawLine);

+		return drawLine;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:measure}.

+	 *

+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification

+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification

+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification

+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:measure}

+	 */

+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {

+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);

+		drawMeasure.setSvgX1Attribute(svgX1Value);

+		drawMeasure.setSvgX2Attribute(svgX2Value);

+		drawMeasure.setSvgY1Attribute(svgY1Value);

+		drawMeasure.setSvgY2Attribute(svgY2Value);

+		this.appendChild(drawMeasure);

+		return drawMeasure;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:page-thumbnail}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:page-thumbnail}

+	 */

+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {

+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);

+		this.appendChild(drawPageThumbnail);

+		return drawPageThumbnail;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:path}.

+	 *

+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification

+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:path}

+	 */

+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {

+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);

+		drawPath.setSvgDAttribute(svgDValue);

+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);

+		this.appendChild(drawPath);

+		return drawPath;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:polygon}.

+	 *

+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification

+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:polygon}

+	 */

+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {

+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);

+		drawPolygon.setDrawPointsAttribute(drawPointsValue);

+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);

+		this.appendChild(drawPolygon);

+		return drawPolygon;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:polyline}.

+	 *

+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification

+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:polyline}

+	 */

+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {

+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);

+		drawPolyline.setDrawPointsAttribute(drawPointsValue);

+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);

+		this.appendChild(drawPolyline);

+		return drawPolyline;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:rect}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:rect}

+	 */

+	public DrawRectElement newDrawRectElement() {

+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);

+		this.appendChild(drawRect);

+		return drawRect;

+	}

+

+	/**

+	 * Create child element {@odf.element draw:regular-polygon}.

+	 *

+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification

+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element draw:regular-polygon}

+	 */

+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {

+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);

+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);

+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);

+		this.appendChild(drawRegularPolygon);

+		return drawRegularPolygon;

+	}

+

+	/**

+	 * Create child element {@odf.element office:annotation}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element office:annotation}

+	 */

+	public OfficeAnnotationElement newOfficeAnnotationElement() {

+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);

+		this.appendChild(officeAnnotation);

+		return officeAnnotation;

+	}

+

+	/**

+	 * Create child element {@odf.element office:annotation-end}.

+	 *

+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element office:annotation-end}

+	 */

+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {

+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);

+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);

+		this.appendChild(officeAnnotationEnd);

+		return officeAnnotationEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element presentation:date-time}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element presentation:date-time}

+	 */

+	public PresentationDateTimeElement newPresentationDateTimeElement() {

+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);

+		this.appendChild(presentationDateTime);

+		return presentationDateTime;

+	}

+

+	/**

+	 * Create child element {@odf.element presentation:footer}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element presentation:footer}

+	 */

+	public PresentationFooterElement newPresentationFooterElement() {

+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);

+		this.appendChild(presentationFooter);

+		return presentationFooter;

+	}

+

+	/**

+	 * Create child element {@odf.element presentation:header}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element presentation:header}

+	 */

+	public PresentationHeaderElement newPresentationHeaderElement() {

+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);

+		this.appendChild(presentationHeader);

+		return presentationHeader;

+	}

+

+	/**

+	 * Create child element {@odf.element text:a}.

+	 *

+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification

+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:a}

+	 */

+	 public TextAElement newTextAElement(String xlinkHrefValue, String xlinkTypeValue) {

+		TextAElement textA = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAElement.class);

+		textA.setXlinkHrefAttribute(xlinkHrefValue);

+		textA.setXlinkTypeAttribute(xlinkTypeValue);

+		this.appendChild(textA);

+		return textA;

+	}

+

+	/**

+	 * Create child element {@odf.element text:alphabetical-index-mark}.

+	 *

+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:alphabetical-index-mark}

+	 */

+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {

+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);

+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);

+		this.appendChild(textAlphabeticalIndexMark);

+		return textAlphabeticalIndexMark;

+	}

+

+	/**

+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.

+	 *

+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:alphabetical-index-mark-end}

+	 */

+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {

+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);

+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);

+		this.appendChild(textAlphabeticalIndexMarkEnd);

+		return textAlphabeticalIndexMarkEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.

+	 *

+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:alphabetical-index-mark-start}

+	 */

+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {

+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);

+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);

+		this.appendChild(textAlphabeticalIndexMarkStart);

+		return textAlphabeticalIndexMarkStart;

+	}

+

+	/**

+	 * Create child element {@odf.element text:author-initials}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:author-initials}

+	 */

+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {

+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);

+		this.appendChild(textAuthorInitials);

+		return textAuthorInitials;

+	}

+

+	/**

+	 * Create child element {@odf.element text:author-name}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:author-name}

+	 */

+	public TextAuthorNameElement newTextAuthorNameElement() {

+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);

+		this.appendChild(textAuthorName);

+		return textAuthorName;

+	}

+

+	/**

+	 * Create child element {@odf.element text:bibliography-mark}.

+	 *

+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:bibliography-mark}

+	 */

+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {

+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);

+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);

+		this.appendChild(textBibliographyMark);

+		return textBibliographyMark;

+	}

+

+	/**

+	 * Create child element {@odf.element text:bookmark}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:bookmark}

+	 */

+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {

+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);

+		textBookmark.setTextNameAttribute(textNameValue);

+		this.appendChild(textBookmark);

+		return textBookmark;

+	}

+

+	/**

+	 * Create child element {@odf.element text:bookmark-end}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:bookmark-end}

+	 */

+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {

+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);

+		textBookmarkEnd.setTextNameAttribute(textNameValue);

+		this.appendChild(textBookmarkEnd);

+		return textBookmarkEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element text:bookmark-ref}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:bookmark-ref}

+	 */

+	public TextBookmarkRefElement newTextBookmarkRefElement() {

+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);

+		this.appendChild(textBookmarkRef);

+		return textBookmarkRef;

+	}

+

+	/**

+	 * Create child element {@odf.element text:bookmark-start}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:bookmark-start}

+	 */

+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {

+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);

+		textBookmarkStart.setTextNameAttribute(textNameValue);

+		this.appendChild(textBookmarkStart);

+		return textBookmarkStart;

+	}

+

+	/**

+	 * Create child element {@odf.element text:change}.

+	 *

+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:change}

+	 */

+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {

+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);

+		textChange.setTextChangeIdAttribute(textChangeIdValue);

+		this.appendChild(textChange);

+		return textChange;

+	}

+

+	/**

+	 * Create child element {@odf.element text:change-end}.

+	 *

+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:change-end}

+	 */

+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {

+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);

+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);

+		this.appendChild(textChangeEnd);

+		return textChangeEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element text:change-start}.

+	 *

+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:change-start}

+	 */

+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {

+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);

+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);

+		this.appendChild(textChangeStart);

+		return textChangeStart;

+	}

+

+	/**

+	 * Create child element {@odf.element text:chapter}.

+	 *

+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification

+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:chapter}

+	 */

+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {

+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);

+		textChapter.setTextDisplayAttribute(textDisplayValue);

+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);

+		this.appendChild(textChapter);

+		return textChapter;

+	}

+

+	/**

+	 * Create child element {@odf.element text:character-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:character-count}

+	 */

+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {

+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);

+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textCharacterCount);

+		return textCharacterCount;

+	}

+

+	/**

+	 * Create child element {@odf.element text:conditional-text}.

+	 *

+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification

+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification

+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:conditional-text}

+	 */

+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {

+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);

+		textConditionalText.setTextConditionAttribute(textConditionValue);

+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);

+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);

+		this.appendChild(textConditionalText);

+		return textConditionalText;

+	}

+

+	/**

+	 * Create child element {@odf.element text:creation-date}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:creation-date}

+	 */

+	public TextCreationDateElement newTextCreationDateElement() {

+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);

+		this.appendChild(textCreationDate);

+		return textCreationDate;

+	}

+

+	/**

+	 * Create child element {@odf.element text:creation-time}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:creation-time}

+	 */

+	public TextCreationTimeElement newTextCreationTimeElement() {

+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);

+		this.appendChild(textCreationTime);

+		return textCreationTime;

+	}

+

+	/**

+	 * Create child element {@odf.element text:creator}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:creator}

+	 */

+	public TextCreatorElement newTextCreatorElement() {

+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);

+		this.appendChild(textCreator);

+		return textCreator;

+	}

+

+	/**

+	 * Create child element {@odf.element text:database-display}.

+	 *

+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification

+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:database-display}

+	 */

+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {

+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);

+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);

+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);

+		this.appendChild(textDatabaseDisplay);

+		return textDatabaseDisplay;

+	}

+

+	/**

+	 * Create child element {@odf.element text:database-name}.

+	 *

+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:database-name}

+	 */

+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {

+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);

+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);

+		this.appendChild(textDatabaseName);

+		return textDatabaseName;

+	}

+

+	/**

+	 * Create child element {@odf.element text:database-next}.

+	 *

+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:database-next}

+	 */

+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {

+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);

+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);

+		this.appendChild(textDatabaseNext);

+		return textDatabaseNext;

+	}

+

+	/**

+	 * Create child element {@odf.element text:database-row-number}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:database-row-number}

+	 */

+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {

+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);

+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);

+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);

+		this.appendChild(textDatabaseRowNumber);

+		return textDatabaseRowNumber;

+	}

+

+	/**

+	 * Create child element {@odf.element text:database-row-select}.

+	 *

+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:database-row-select}

+	 */

+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {

+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);

+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);

+		this.appendChild(textDatabaseRowSelect);

+		return textDatabaseRowSelect;

+	}

+

+	/**

+	 * Create child element {@odf.element text:date}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:date}

+	 */

+	public TextDateElement newTextDateElement() {

+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);

+		this.appendChild(textDate);

+		return textDate;

+	}

+

+	/**

+	 * Create child element {@odf.element text:dde-connection}.

+	 *

+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:dde-connection}

+	 */

+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {

+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);

+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);

+		this.appendChild(textDdeConnection);

+		return textDdeConnection;

+	}

+

+	/**

+	 * Create child element {@odf.element text:description}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:description}

+	 */

+	public TextDescriptionElement newTextDescriptionElement() {

+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);

+		this.appendChild(textDescription);

+		return textDescription;

+	}

+

+	/**

+	 * Create child element {@odf.element text:editing-cycles}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:editing-cycles}

+	 */

+	public TextEditingCyclesElement newTextEditingCyclesElement() {

+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);

+		this.appendChild(textEditingCycles);

+		return textEditingCycles;

+	}

+

+	/**

+	 * Create child element {@odf.element text:editing-duration}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:editing-duration}

+	 */

+	public TextEditingDurationElement newTextEditingDurationElement() {

+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);

+		this.appendChild(textEditingDuration);

+		return textEditingDuration;

+	}

+

+	/**

+	 * Create child element {@odf.element text:execute-macro}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:execute-macro}

+	 */

+	public TextExecuteMacroElement newTextExecuteMacroElement() {

+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);

+		this.appendChild(textExecuteMacro);

+		return textExecuteMacro;

+	}

+

+	/**

+	 * Create child element {@odf.element text:expression}.

+	 *

+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification

+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:expression}

+	 */

+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {

+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);

+		textExpression.setOfficeValueAttribute(officeValueValue);

+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);

+		this.appendChild(textExpression);

+		return textExpression;

+	}

+

+	/**

+	 * Create child element {@odf.element text:file-name}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:file-name}

+	 */

+	public TextFileNameElement newTextFileNameElement() {

+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);

+		this.appendChild(textFileName);

+		return textFileName;

+	}

+

+	/**

+	 * Create child element {@odf.element text:hidden-paragraph}.

+	 *

+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:hidden-paragraph}

+	 */

+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {

+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);

+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);

+		this.appendChild(textHiddenParagraph);

+		return textHiddenParagraph;

+	}

+

+	/**

+	 * Create child element {@odf.element text:hidden-text}.

+	 *

+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification

+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:hidden-text}

+	 */

+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {

+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);

+		textHiddenText.setTextConditionAttribute(textConditionValue);

+		textHiddenText.setTextStringValueAttribute(textStringValueValue);

+		this.appendChild(textHiddenText);

+		return textHiddenText;

+	}

+

+	/**

+	 * Create child element {@odf.element text:image-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:image-count}

+	 */

+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {

+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);

+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textImageCount);

+		return textImageCount;

+	}

+

+	/**

+	 * Create child element {@odf.element text:initial-creator}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:initial-creator}

+	 */

+	public TextInitialCreatorElement newTextInitialCreatorElement() {

+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);

+		this.appendChild(textInitialCreator);

+		return textInitialCreator;

+	}

+

+	/**

+	 * Create child element {@odf.element text:keywords}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:keywords}

+	 */

+	public TextKeywordsElement newTextKeywordsElement() {

+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);

+		this.appendChild(textKeywords);

+		return textKeywords;

+	}

+

+	/**

+	 * Create child element {@odf.element text:line-break}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:line-break}

+	 */

+	public TextLineBreakElement newTextLineBreakElement() {

+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);

+		this.appendChild(textLineBreak);

+		return textLineBreak;

+	}

+

+	/**

+	 * Create child element {@odf.element text:measure}.

+	 *

+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:measure}

+	 */

+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {

+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);

+		textMeasure.setTextKindAttribute(textKindValue);

+		this.appendChild(textMeasure);

+		return textMeasure;

+	}

+

+	/**

+	 * Create child element {@odf.element text:meta}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:meta}

+	 */

+	public TextMetaElement newTextMetaElement() {

+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);

+		this.appendChild(textMeta);

+		return textMeta;

+	}

+

+	/**

+	 * Create child element {@odf.element text:meta-field}.

+	 *

+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:meta-field}

+	 */

+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {

+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);

+		textMetaField.setXmlIdAttribute(xmlIdValue);

+		this.appendChild(textMetaField);

+		return textMetaField;

+	}

+

+	/**

+	 * Create child element {@odf.element text:modification-date}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:modification-date}

+	 */

+	public TextModificationDateElement newTextModificationDateElement() {

+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);

+		this.appendChild(textModificationDate);

+		return textModificationDate;

+	}

+

+	/**

+	 * Create child element {@odf.element text:modification-time}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:modification-time}

+	 */

+	public TextModificationTimeElement newTextModificationTimeElement() {

+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);

+		this.appendChild(textModificationTime);

+		return textModificationTime;

+	}

+

+	/**

+	 * Create child element {@odf.element text:note}.

+	 *

+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:note}

+	 */

+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {

+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);

+		textNote.setTextNoteClassAttribute(textNoteClassValue);

+		this.appendChild(textNote);

+		return textNote;

+	}

+

+	/**

+	 * Create child element {@odf.element text:note-ref}.

+	 *

+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:note-ref}

+	 */

+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {

+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);

+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);

+		this.appendChild(textNoteRef);

+		return textNoteRef;

+	}

+

+	/**

+	 * Create child element {@odf.element text:object-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:object-count}

+	 */

+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {

+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);

+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textObjectCount);

+		return textObjectCount;

+	}

+

+	/**

+	 * Create child element {@odf.element text:page-continuation}.

+	 *

+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:page-continuation}

+	 */

+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {

+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);

+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);

+		this.appendChild(textPageContinuation);

+		return textPageContinuation;

+	}

+

+	/**

+	 * Create child element {@odf.element text:page-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:page-count}

+	 */

+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {

+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);

+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textPageCount);

+		return textPageCount;

+	}

+

+	/**

+	 * Create child element {@odf.element text:page-number}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:page-number}

+	 */

+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {

+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);

+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textPageNumber);

+		return textPageNumber;

+	}

+

+	/**

+	 * Create child element {@odf.element text:page-variable-get}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:page-variable-get}

+	 */

+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {

+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);

+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textPageVariableGet);

+		return textPageVariableGet;

+	}

+

+	/**

+	 * Create child element {@odf.element text:page-variable-set}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:page-variable-set}

+	 */

+	public TextPageVariableSetElement newTextPageVariableSetElement() {

+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);

+		this.appendChild(textPageVariableSet);

+		return textPageVariableSet;

+	}

+

+	/**

+	 * Create child element {@odf.element text:paragraph-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:paragraph-count}

+	 */

+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {

+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);

+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textParagraphCount);

+		return textParagraphCount;

+	}

+

+	/**

+	 * Create child element {@odf.element text:placeholder}.

+	 *

+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:placeholder}

+	 */

+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {

+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);

+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);

+		this.appendChild(textPlaceholder);

+		return textPlaceholder;

+	}

+

+	/**

+	 * Create child element {@odf.element text:print-date}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:print-date}

+	 */

+	public TextPrintDateElement newTextPrintDateElement() {

+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);

+		this.appendChild(textPrintDate);

+		return textPrintDate;

+	}

+

+	/**

+	 * Create child element {@odf.element text:print-time}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:print-time}

+	 */

+	public TextPrintTimeElement newTextPrintTimeElement() {

+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);

+		this.appendChild(textPrintTime);

+		return textPrintTime;

+	}

+

+	/**

+	 * Create child element {@odf.element text:printed-by}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:printed-by}

+	 */

+	public TextPrintedByElement newTextPrintedByElement() {

+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);

+		this.appendChild(textPrintedBy);

+		return textPrintedBy;

+	}

+

+	/**

+	 * Create child element {@odf.element text:reference-mark}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:reference-mark}

+	 */

+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {

+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);

+		textReferenceMark.setTextNameAttribute(textNameValue);

+		this.appendChild(textReferenceMark);

+		return textReferenceMark;

+	}

+

+	/**

+	 * Create child element {@odf.element text:reference-mark-end}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:reference-mark-end}

+	 */

+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {

+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);

+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);

+		this.appendChild(textReferenceMarkEnd);

+		return textReferenceMarkEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element text:reference-mark-start}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:reference-mark-start}

+	 */

+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {

+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);

+		textReferenceMarkStart.setTextNameAttribute(textNameValue);

+		this.appendChild(textReferenceMarkStart);

+		return textReferenceMarkStart;

+	}

+

+	/**

+	 * Create child element {@odf.element text:reference-ref}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:reference-ref}

+	 */

+	public TextReferenceRefElement newTextReferenceRefElement() {

+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);

+		this.appendChild(textReferenceRef);

+		return textReferenceRef;

+	}

+

+	/**

+	 * Create child element {@odf.element text:ruby}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:ruby}

+	 */

+	public TextRubyElement newTextRubyElement() {

+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);

+		this.appendChild(textRuby);

+		return textRuby;

+	}

+

+	/**

+	 * Create child element {@odf.element text:s}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:s}

+	 */

+	public TextSElement newTextSElement() {

+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);

+		this.appendChild(textS);

+		return textS;

+	}

+

+	/**

+	 * Create child element {@odf.element text:script}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:script}

+	 */

+	public TextScriptElement newTextScriptElement() {

+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);

+		this.appendChild(textScript);

+		return textScript;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-city}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-city}

+	 */

+	public TextSenderCityElement newTextSenderCityElement() {

+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);

+		this.appendChild(textSenderCity);

+		return textSenderCity;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-company}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-company}

+	 */

+	public TextSenderCompanyElement newTextSenderCompanyElement() {

+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);

+		this.appendChild(textSenderCompany);

+		return textSenderCompany;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-country}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-country}

+	 */

+	public TextSenderCountryElement newTextSenderCountryElement() {

+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);

+		this.appendChild(textSenderCountry);

+		return textSenderCountry;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-email}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-email}

+	 */

+	public TextSenderEmailElement newTextSenderEmailElement() {

+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);

+		this.appendChild(textSenderEmail);

+		return textSenderEmail;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-fax}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-fax}

+	 */

+	public TextSenderFaxElement newTextSenderFaxElement() {

+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);

+		this.appendChild(textSenderFax);

+		return textSenderFax;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-firstname}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-firstname}

+	 */

+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {

+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);

+		this.appendChild(textSenderFirstname);

+		return textSenderFirstname;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-initials}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-initials}

+	 */

+	public TextSenderInitialsElement newTextSenderInitialsElement() {

+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);

+		this.appendChild(textSenderInitials);

+		return textSenderInitials;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-lastname}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-lastname}

+	 */

+	public TextSenderLastnameElement newTextSenderLastnameElement() {

+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);

+		this.appendChild(textSenderLastname);

+		return textSenderLastname;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-phone-private}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-phone-private}

+	 */

+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {

+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);

+		this.appendChild(textSenderPhonePrivate);

+		return textSenderPhonePrivate;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-phone-work}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-phone-work}

+	 */

+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {

+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);

+		this.appendChild(textSenderPhoneWork);

+		return textSenderPhoneWork;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-position}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-position}

+	 */

+	public TextSenderPositionElement newTextSenderPositionElement() {

+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);

+		this.appendChild(textSenderPosition);

+		return textSenderPosition;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-postal-code}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-postal-code}

+	 */

+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {

+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);

+		this.appendChild(textSenderPostalCode);

+		return textSenderPostalCode;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-state-or-province}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-state-or-province}

+	 */

+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {

+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);

+		this.appendChild(textSenderStateOrProvince);

+		return textSenderStateOrProvince;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-street}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-street}

+	 */

+	public TextSenderStreetElement newTextSenderStreetElement() {

+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);

+		this.appendChild(textSenderStreet);

+		return textSenderStreet;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sender-title}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sender-title}

+	 */

+	public TextSenderTitleElement newTextSenderTitleElement() {

+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);

+		this.appendChild(textSenderTitle);

+		return textSenderTitle;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sequence}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sequence}

+	 */

+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {

+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);

+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);

+		textSequence.setTextNameAttribute(textNameValue);

+		this.appendChild(textSequence);

+		return textSequence;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sequence-ref}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sequence-ref}

+	 */

+	public TextSequenceRefElement newTextSequenceRefElement() {

+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);

+		this.appendChild(textSequenceRef);

+		return textSequenceRef;

+	}

+

+	/**

+	 * Create child element {@odf.element text:sheet-name}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:sheet-name}

+	 */

+	public TextSheetNameElement newTextSheetNameElement() {

+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);

+		this.appendChild(textSheetName);

+		return textSheetName;

+	}

+

+	/**

+	 * Create child element {@odf.element text:soft-page-break}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:soft-page-break}

+	 */

+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {

+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);

+		this.appendChild(textSoftPageBreak);

+		return textSoftPageBreak;

+	}

+

+	/**

+	 * Create child element {@odf.element text:span}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:span}

+	 */

+	public TextSpanElement newTextSpanElement() {

+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);

+		this.appendChild(textSpan);

+		return textSpan;

+	}

+

+	/**

+	 * Create child element {@odf.element text:subject}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:subject}

+	 */

+	public TextSubjectElement newTextSubjectElement() {

+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);

+		this.appendChild(textSubject);

+		return textSubject;

+	}

+

+	/**

+	 * Create child element {@odf.element text:tab}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:tab}

+	 */

+	public TextTabElement newTextTabElement() {

+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);

+		this.appendChild(textTab);

+		return textTab;

+	}

+

+	/**

+	 * Create child element {@odf.element text:table-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:table-count}

+	 */

+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {

+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);

+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textTableCount);

+		return textTableCount;

+	}

+

+	/**

+	 * Create child element {@odf.element text:table-formula}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:table-formula}

+	 */

+	public TextTableFormulaElement newTextTableFormulaElement() {

+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);

+		this.appendChild(textTableFormula);

+		return textTableFormula;

+	}

+

+	/**

+	 * Create child element {@odf.element text:template-name}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:template-name}

+	 */

+	public TextTemplateNameElement newTextTemplateNameElement() {

+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);

+		this.appendChild(textTemplateName);

+		return textTemplateName;

+	}

+

+	/**

+	 * Create child element {@odf.element text:text-input}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:text-input}

+	 */

+	public TextTextInputElement newTextTextInputElement() {

+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);

+		this.appendChild(textTextInput);

+		return textTextInput;

+	}

+

+	/**

+	 * Create child element {@odf.element text:time}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:time}

+	 */

+	public TextTimeElement newTextTimeElement() {

+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);

+		this.appendChild(textTime);

+		return textTime;

+	}

+

+	/**

+	 * Create child element {@odf.element text:title}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:title}

+	 */

+	public TextTitleElement newTextTitleElement() {

+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);

+		this.appendChild(textTitle);

+		return textTitle;

+	}

+

+	/**

+	 * Create child element {@odf.element text:toc-mark}.

+	 *

+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:toc-mark}

+	 */

+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {

+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);

+		textTocMark.setTextStringValueAttribute(textStringValueValue);

+		this.appendChild(textTocMark);

+		return textTocMark;

+	}

+

+	/**

+	 * Create child element {@odf.element text:toc-mark-end}.

+	 *

+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:toc-mark-end}

+	 */

+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {

+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);

+		textTocMarkEnd.setTextIdAttribute(textIdValue);

+		this.appendChild(textTocMarkEnd);

+		return textTocMarkEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element text:toc-mark-start}.

+	 *

+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:toc-mark-start}

+	 */

+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {

+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);

+		textTocMarkStart.setTextIdAttribute(textIdValue);

+		this.appendChild(textTocMarkStart);

+		return textTocMarkStart;

+	}

+

+	/**

+	 * Create child element {@odf.element text:user-defined}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:user-defined}

+	 */

+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {

+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);

+		textUserDefined.setTextNameAttribute(textNameValue);

+		this.appendChild(textUserDefined);

+		return textUserDefined;

+	}

+

+	/**

+	 * Create child element {@odf.element text:user-field-get}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:user-field-get}

+	 */

+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {

+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);

+		textUserFieldGet.setTextNameAttribute(textNameValue);

+		this.appendChild(textUserFieldGet);

+		return textUserFieldGet;

+	}

+

+	/**

+	 * Create child element {@odf.element text:user-field-input}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:user-field-input}

+	 */

+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {

+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);

+		textUserFieldInput.setTextNameAttribute(textNameValue);

+		this.appendChild(textUserFieldInput);

+		return textUserFieldInput;

+	}

+

+	/**

+	 * Create child element {@odf.element text:user-index-mark}.

+	 *

+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification

+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:user-index-mark}

+	 */

+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {

+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);

+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);

+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);

+		this.appendChild(textUserIndexMark);

+		return textUserIndexMark;

+	}

+

+	/**

+	 * Create child element {@odf.element text:user-index-mark-end}.

+	 *

+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:user-index-mark-end}

+	 */

+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {

+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);

+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);

+		this.appendChild(textUserIndexMarkEnd);

+		return textUserIndexMarkEnd;

+	}

+

+	/**

+	 * Create child element {@odf.element text:user-index-mark-start}.

+	 *

+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification

+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:user-index-mark-start}

+	 */

+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {

+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);

+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);

+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);

+		this.appendChild(textUserIndexMarkStart);

+		return textUserIndexMarkStart;

+	}

+

+	/**

+	 * Create child element {@odf.element text:variable-get}.

+	 *

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:variable-get}

+	 */

+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {

+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);

+		textVariableGet.setTextNameAttribute(textNameValue);

+		this.appendChild(textVariableGet);

+		return textVariableGet;

+	}

+

+	/**

+	 * Create child element {@odf.element text:variable-input}.

+	 *

+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:variable-input}

+	 */

+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {

+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);

+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);

+		textVariableInput.setTextNameAttribute(textNameValue);

+		this.appendChild(textVariableInput);

+		return textVariableInput;

+	}

+

+	/**

+	 * Create child element {@odf.element text:variable-set}.

+	 *

+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification

+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification

+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:variable-set}

+	 */

+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {

+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);

+		textVariableSet.setOfficeValueAttribute(officeValueValue);

+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);

+		textVariableSet.setTextNameAttribute(textNameValue);

+		this.appendChild(textVariableSet);

+		return textVariableSet;

+	}

+

+	/**

+	 * Create child element {@odf.element text:word-count}.

+	 *

+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element text:word-count}

+	 */

+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {

+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);

+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);

+		this.appendChild(textWordCount);

+		return textWordCount;

+	}

+

+	/**

+	 * Add text content. Only elements which are allowed to have text content offer this method.

+	 */

+	public void newTextNode(String content) {

+		if (content != null && !content.equals("")) {

+			this.appendChild(this.getOwnerDocument().createTextNode(content));

+		}

+	}

+	

+	/**

+	* Set text content. Only elements which are allowed to have text content offer this method.

+	*/

+	public void setTextContent(String content) {

+		super.setTextContent(content);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	protected void onRemoveNode() {

+		super.onRemoveNode();

+		((OdfFileDom) this.ownerDocument).getInContentMetadataCache().remove(this);

+	}

+

+	protected void onInsertNode() {

+		super.onInsertNode();

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMetaFieldElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMetaFieldElement.java
new file mode 100644
index 0000000..98f8922
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextMetaFieldElement.java
@@ -0,0 +1,1994 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:meta-field}.
+ *
+ */
+public class TextMetaFieldElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "meta-field");
+
+	/**
+	 * Create the instance of <code>TextMetaFieldElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextMetaFieldElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:meta-field}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation-end}.
+	 *
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation-end}
+	 */
+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {
+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);
+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(officeAnnotationEnd);
+		return officeAnnotationEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element presentation:date-time}
+	 */
+	public PresentationDateTimeElement newPresentationDateTimeElement() {
+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);
+		this.appendChild(presentationDateTime);
+		return presentationDateTime;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element presentation:footer}
+	 */
+	public PresentationFooterElement newPresentationFooterElement() {
+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);
+		this.appendChild(presentationFooter);
+		return presentationFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element presentation:header}
+	 */
+	public PresentationHeaderElement newPresentationHeaderElement() {
+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);
+		this.appendChild(presentationHeader);
+		return presentationHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:a}
+	 */
+	 public TextAElement newTextAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAElement textA = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAElement.class);
+		textA.setXlinkHrefAttribute(xlinkHrefValue);
+		textA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textA);
+		return textA;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:alphabetical-index-mark}
+	 */
+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {
+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);
+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textAlphabeticalIndexMark);
+		return textAlphabeticalIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:alphabetical-index-mark-end}
+	 */
+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {
+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);
+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkEnd);
+		return textAlphabeticalIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:alphabetical-index-mark-start}
+	 */
+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {
+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);
+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkStart);
+		return textAlphabeticalIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-initials}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:author-initials}
+	 */
+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {
+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);
+		this.appendChild(textAuthorInitials);
+		return textAuthorInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-name}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:author-name}
+	 */
+	public TextAuthorNameElement newTextAuthorNameElement() {
+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);
+		this.appendChild(textAuthorName);
+		return textAuthorName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-mark}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:bibliography-mark}
+	 */
+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {
+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);
+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		this.appendChild(textBibliographyMark);
+		return textBibliographyMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:bookmark}
+	 */
+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {
+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);
+		textBookmark.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmark);
+		return textBookmark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:bookmark-end}
+	 */
+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {
+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);
+		textBookmarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkEnd);
+		return textBookmarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-ref}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:bookmark-ref}
+	 */
+	public TextBookmarkRefElement newTextBookmarkRefElement() {
+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);
+		this.appendChild(textBookmarkRef);
+		return textBookmarkRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:bookmark-start}
+	 */
+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {
+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);
+		textBookmarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkStart);
+		return textBookmarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:chapter}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:chapter}
+	 */
+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {
+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);
+		textChapter.setTextDisplayAttribute(textDisplayValue);
+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textChapter);
+		return textChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:character-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:character-count}
+	 */
+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {
+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);
+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textCharacterCount);
+		return textCharacterCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:conditional-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification
+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:conditional-text}
+	 */
+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {
+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);
+		textConditionalText.setTextConditionAttribute(textConditionValue);
+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);
+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);
+		this.appendChild(textConditionalText);
+		return textConditionalText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:creation-date}
+	 */
+	public TextCreationDateElement newTextCreationDateElement() {
+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);
+		this.appendChild(textCreationDate);
+		return textCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-time}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:creation-time}
+	 */
+	public TextCreationTimeElement newTextCreationTimeElement() {
+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);
+		this.appendChild(textCreationTime);
+		return textCreationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creator}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:creator}
+	 */
+	public TextCreatorElement newTextCreatorElement() {
+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);
+		this.appendChild(textCreator);
+		return textCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-display}.
+	 *
+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:database-display}
+	 */
+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {
+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);
+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);
+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseDisplay);
+		return textDatabaseDisplay;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-name}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:database-name}
+	 */
+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {
+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);
+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseName);
+		return textDatabaseName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-next}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:database-next}
+	 */
+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {
+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);
+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseNext);
+		return textDatabaseNext;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:database-row-number}
+	 */
+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {
+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);
+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowNumber);
+		return textDatabaseRowNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-select}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:database-row-select}
+	 */
+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {
+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);
+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowSelect);
+		return textDatabaseRowSelect;
+	}
+
+	/**
+	 * Create child element {@odf.element text:date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:date}
+	 */
+	public TextDateElement newTextDateElement() {
+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);
+		this.appendChild(textDate);
+		return textDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection}.
+	 *
+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:dde-connection}
+	 */
+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {
+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);
+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);
+		this.appendChild(textDdeConnection);
+		return textDdeConnection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:description}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:description}
+	 */
+	public TextDescriptionElement newTextDescriptionElement() {
+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);
+		this.appendChild(textDescription);
+		return textDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-cycles}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:editing-cycles}
+	 */
+	public TextEditingCyclesElement newTextEditingCyclesElement() {
+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);
+		this.appendChild(textEditingCycles);
+		return textEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-duration}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:editing-duration}
+	 */
+	public TextEditingDurationElement newTextEditingDurationElement() {
+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);
+		this.appendChild(textEditingDuration);
+		return textEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:execute-macro}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:execute-macro}
+	 */
+	public TextExecuteMacroElement newTextExecuteMacroElement() {
+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);
+		this.appendChild(textExecuteMacro);
+		return textExecuteMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element text:expression}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:expression}
+	 */
+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {
+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);
+		textExpression.setOfficeValueAttribute(officeValueValue);
+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(textExpression);
+		return textExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element text:file-name}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:file-name}
+	 */
+	public TextFileNameElement newTextFileNameElement() {
+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);
+		this.appendChild(textFileName);
+		return textFileName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-paragraph}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:hidden-paragraph}
+	 */
+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {
+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);
+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);
+		this.appendChild(textHiddenParagraph);
+		return textHiddenParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:hidden-text}
+	 */
+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {
+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);
+		textHiddenText.setTextConditionAttribute(textConditionValue);
+		textHiddenText.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textHiddenText);
+		return textHiddenText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:image-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:image-count}
+	 */
+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {
+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);
+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textImageCount);
+		return textImageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:initial-creator}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:initial-creator}
+	 */
+	public TextInitialCreatorElement newTextInitialCreatorElement() {
+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);
+		this.appendChild(textInitialCreator);
+		return textInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:keywords}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:keywords}
+	 */
+	public TextKeywordsElement newTextKeywordsElement() {
+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);
+		this.appendChild(textKeywords);
+		return textKeywords;
+	}
+
+	/**
+	 * Create child element {@odf.element text:line-break}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:line-break}
+	 */
+	public TextLineBreakElement newTextLineBreakElement() {
+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);
+		this.appendChild(textLineBreak);
+		return textLineBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:measure}.
+	 *
+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:measure}
+	 */
+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {
+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);
+		textMeasure.setTextKindAttribute(textKindValue);
+		this.appendChild(textMeasure);
+		return textMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta}
+	 */
+	public TextMetaElement newTextMetaElement() {
+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);
+		this.appendChild(textMeta);
+		return textMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta-field}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta-field}
+	 */
+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {
+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);
+		textMetaField.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textMetaField);
+		return textMetaField;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:modification-date}
+	 */
+	public TextModificationDateElement newTextModificationDateElement() {
+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);
+		this.appendChild(textModificationDate);
+		return textModificationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-time}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:modification-time}
+	 */
+	public TextModificationTimeElement newTextModificationTimeElement() {
+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);
+		this.appendChild(textModificationTime);
+		return textModificationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:note}
+	 */
+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {
+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);
+		textNote.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNote);
+		return textNote;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-ref}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:note-ref}
+	 */
+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {
+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);
+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNoteRef);
+		return textNoteRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:object-count}
+	 */
+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {
+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);
+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textObjectCount);
+		return textObjectCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-continuation}.
+	 *
+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:page-continuation}
+	 */
+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {
+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);
+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);
+		this.appendChild(textPageContinuation);
+		return textPageContinuation;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:page-count}
+	 */
+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {
+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);
+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageCount);
+		return textPageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:page-number}
+	 */
+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {
+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);
+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageNumber);
+		return textPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-get}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:page-variable-get}
+	 */
+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {
+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);
+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageVariableGet);
+		return textPageVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-set}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:page-variable-set}
+	 */
+	public TextPageVariableSetElement newTextPageVariableSetElement() {
+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);
+		this.appendChild(textPageVariableSet);
+		return textPageVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:paragraph-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:paragraph-count}
+	 */
+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {
+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);
+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textParagraphCount);
+		return textParagraphCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:placeholder}.
+	 *
+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:placeholder}
+	 */
+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {
+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);
+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);
+		this.appendChild(textPlaceholder);
+		return textPlaceholder;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-date}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:print-date}
+	 */
+	public TextPrintDateElement newTextPrintDateElement() {
+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);
+		this.appendChild(textPrintDate);
+		return textPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-time}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:print-time}
+	 */
+	public TextPrintTimeElement newTextPrintTimeElement() {
+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);
+		this.appendChild(textPrintTime);
+		return textPrintTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:printed-by}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:printed-by}
+	 */
+	public TextPrintedByElement newTextPrintedByElement() {
+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);
+		this.appendChild(textPrintedBy);
+		return textPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:reference-mark}
+	 */
+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {
+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);
+		textReferenceMark.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMark);
+		return textReferenceMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:reference-mark-end}
+	 */
+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {
+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);
+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkEnd);
+		return textReferenceMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:reference-mark-start}
+	 */
+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {
+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);
+		textReferenceMarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkStart);
+		return textReferenceMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-ref}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:reference-ref}
+	 */
+	public TextReferenceRefElement newTextReferenceRefElement() {
+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);
+		this.appendChild(textReferenceRef);
+		return textReferenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:ruby}
+	 */
+	public TextRubyElement newTextRubyElement() {
+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);
+		this.appendChild(textRuby);
+		return textRuby;
+	}
+
+	/**
+	 * Create child element {@odf.element text:s}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:s}
+	 */
+	public TextSElement newTextSElement() {
+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);
+		this.appendChild(textS);
+		return textS;
+	}
+
+	/**
+	 * Create child element {@odf.element text:script}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:script}
+	 */
+	public TextScriptElement newTextScriptElement() {
+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);
+		this.appendChild(textScript);
+		return textScript;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-city}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-city}
+	 */
+	public TextSenderCityElement newTextSenderCityElement() {
+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);
+		this.appendChild(textSenderCity);
+		return textSenderCity;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-company}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-company}
+	 */
+	public TextSenderCompanyElement newTextSenderCompanyElement() {
+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);
+		this.appendChild(textSenderCompany);
+		return textSenderCompany;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-country}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-country}
+	 */
+	public TextSenderCountryElement newTextSenderCountryElement() {
+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);
+		this.appendChild(textSenderCountry);
+		return textSenderCountry;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-email}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-email}
+	 */
+	public TextSenderEmailElement newTextSenderEmailElement() {
+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);
+		this.appendChild(textSenderEmail);
+		return textSenderEmail;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-fax}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-fax}
+	 */
+	public TextSenderFaxElement newTextSenderFaxElement() {
+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);
+		this.appendChild(textSenderFax);
+		return textSenderFax;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-firstname}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-firstname}
+	 */
+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {
+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);
+		this.appendChild(textSenderFirstname);
+		return textSenderFirstname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-initials}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-initials}
+	 */
+	public TextSenderInitialsElement newTextSenderInitialsElement() {
+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);
+		this.appendChild(textSenderInitials);
+		return textSenderInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-lastname}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-lastname}
+	 */
+	public TextSenderLastnameElement newTextSenderLastnameElement() {
+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);
+		this.appendChild(textSenderLastname);
+		return textSenderLastname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-private}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-phone-private}
+	 */
+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {
+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);
+		this.appendChild(textSenderPhonePrivate);
+		return textSenderPhonePrivate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-work}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-phone-work}
+	 */
+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {
+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);
+		this.appendChild(textSenderPhoneWork);
+		return textSenderPhoneWork;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-position}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-position}
+	 */
+	public TextSenderPositionElement newTextSenderPositionElement() {
+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);
+		this.appendChild(textSenderPosition);
+		return textSenderPosition;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-postal-code}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-postal-code}
+	 */
+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {
+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);
+		this.appendChild(textSenderPostalCode);
+		return textSenderPostalCode;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-state-or-province}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-state-or-province}
+	 */
+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {
+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);
+		this.appendChild(textSenderStateOrProvince);
+		return textSenderStateOrProvince;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-street}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-street}
+	 */
+	public TextSenderStreetElement newTextSenderStreetElement() {
+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);
+		this.appendChild(textSenderStreet);
+		return textSenderStreet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-title}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sender-title}
+	 */
+	public TextSenderTitleElement newTextSenderTitleElement() {
+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);
+		this.appendChild(textSenderTitle);
+		return textSenderTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sequence}
+	 */
+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {
+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);
+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);
+		textSequence.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequence);
+		return textSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-ref}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sequence-ref}
+	 */
+	public TextSequenceRefElement newTextSequenceRefElement() {
+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);
+		this.appendChild(textSequenceRef);
+		return textSequenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sheet-name}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:sheet-name}
+	 */
+	public TextSheetNameElement newTextSheetNameElement() {
+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);
+		this.appendChild(textSheetName);
+		return textSheetName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:span}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:span}
+	 */
+	public TextSpanElement newTextSpanElement() {
+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);
+		this.appendChild(textSpan);
+		return textSpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:subject}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:subject}
+	 */
+	public TextSubjectElement newTextSubjectElement() {
+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);
+		this.appendChild(textSubject);
+		return textSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tab}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:tab}
+	 */
+	public TextTabElement newTextTabElement() {
+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);
+		this.appendChild(textTab);
+		return textTab;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:table-count}
+	 */
+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {
+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);
+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textTableCount);
+		return textTableCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-formula}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:table-formula}
+	 */
+	public TextTableFormulaElement newTextTableFormulaElement() {
+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);
+		this.appendChild(textTableFormula);
+		return textTableFormula;
+	}
+
+	/**
+	 * Create child element {@odf.element text:template-name}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:template-name}
+	 */
+	public TextTemplateNameElement newTextTemplateNameElement() {
+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);
+		this.appendChild(textTemplateName);
+		return textTemplateName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:text-input}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:text-input}
+	 */
+	public TextTextInputElement newTextTextInputElement() {
+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);
+		this.appendChild(textTextInput);
+		return textTextInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:time}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:time}
+	 */
+	public TextTimeElement newTextTimeElement() {
+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);
+		this.appendChild(textTime);
+		return textTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:title}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:title}
+	 */
+	public TextTitleElement newTextTitleElement() {
+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);
+		this.appendChild(textTitle);
+		return textTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:toc-mark}
+	 */
+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {
+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);
+		textTocMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textTocMark);
+		return textTocMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:toc-mark-end}
+	 */
+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {
+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);
+		textTocMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkEnd);
+		return textTocMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:toc-mark-start}
+	 */
+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {
+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);
+		textTocMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkStart);
+		return textTocMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-defined}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:user-defined}
+	 */
+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {
+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);
+		textUserDefined.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserDefined);
+		return textUserDefined;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:user-field-get}
+	 */
+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {
+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);
+		textUserFieldGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldGet);
+		return textUserFieldGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-input}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:user-field-input}
+	 */
+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {
+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);
+		textUserFieldInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldInput);
+		return textUserFieldInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:user-index-mark}
+	 */
+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {
+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);
+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);
+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textUserIndexMark);
+		return textUserIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:user-index-mark-end}
+	 */
+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {
+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);
+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textUserIndexMarkEnd);
+		return textUserIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:user-index-mark-start}
+	 */
+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {
+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);
+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);
+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexMarkStart);
+		return textUserIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:variable-get}
+	 */
+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {
+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);
+		textVariableGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableGet);
+		return textVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-input}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:variable-input}
+	 */
+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);
+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableInput);
+		return textVariableInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-set}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:variable-set}
+	 */
+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);
+		textVariableSet.setOfficeValueAttribute(officeValueValue);
+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableSet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableSet);
+		return textVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:word-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:word-count}
+	 */
+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {
+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);
+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textWordCount);
+		return textWordCount;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextModificationDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextModificationDateElement.java
new file mode 100644
index 0000000..a1c95ab
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextModificationDateElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:modification-date}.
+ *
+ */
+public class TextModificationDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "modification-date");
+
+	/**
+	 * Create the instance of <code>TextModificationDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextModificationDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:modification-date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDateValueAttribute() {
+		TextDateValueAttribute attr = (TextDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @param textDateValueValue   The type is <code>String</code>
+	 */
+	public void setTextDateValueAttribute(String textDateValueValue) {
+		TextDateValueAttribute attr = new TextDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextModificationTimeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextModificationTimeElement.java
new file mode 100644
index 0000000..328ade9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextModificationTimeElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTimeValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:modification-time}.
+ *
+ */
+public class TextModificationTimeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "modification-time");
+
+	/**
+	 * Create the instance of <code>TextModificationTimeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextModificationTimeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:modification-time}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTimeValueAttribute() {
+		TextTimeValueAttribute attr = (TextTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @param textTimeValueValue   The type is <code>String</code>
+	 */
+	public void setTextTimeValueAttribute(String textTimeValueValue) {
+		TextTimeValueAttribute attr = new TextTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTimeValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteBodyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteBodyElement.java
new file mode 100644
index 0000000..4819104
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteBodyElement.java
@@ -0,0 +1,543 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:note-body}.
+ *
+ */
+public class TextNoteBodyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note-body");
+
+	/**
+	 * Create the instance of <code>TextNoteBodyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteBodyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:note-body}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteCitationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteCitationElement.java
new file mode 100644
index 0000000..d462471
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteCitationElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLabelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:note-citation}.
+ *
+ */
+public class TextNoteCitationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note-citation");
+
+	/**
+	 * Create the instance of <code>TextNoteCitationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteCitationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:note-citation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLabelAttribute</code> , See {@odf.attribute text:label}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextLabelAttribute() {
+		TextLabelAttribute attr = (TextLabelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "label");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLabelAttribute</code> , See {@odf.attribute text:label}
+	 *
+	 * @param textLabelValue   The type is <code>String</code>
+	 */
+	public void setTextLabelAttribute(String textLabelValue) {
+		TextLabelAttribute attr = new TextLabelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textLabelValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteContinuationNoticeBackwardElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteContinuationNoticeBackwardElement.java
new file mode 100644
index 0000000..2b28d76
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteContinuationNoticeBackwardElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:note-continuation-notice-backward}.
+ *
+ */
+public class TextNoteContinuationNoticeBackwardElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note-continuation-notice-backward");
+
+	/**
+	 * Create the instance of <code>TextNoteContinuationNoticeBackwardElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteContinuationNoticeBackwardElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:note-continuation-notice-backward}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteContinuationNoticeForwardElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteContinuationNoticeForwardElement.java
new file mode 100644
index 0000000..3c864dc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteContinuationNoticeForwardElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:note-continuation-notice-forward}.
+ *
+ */
+public class TextNoteContinuationNoticeForwardElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note-continuation-notice-forward");
+
+	/**
+	 * Create the instance of <code>TextNoteContinuationNoticeForwardElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteContinuationNoticeForwardElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:note-continuation-notice-forward}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteElement.java
new file mode 100644
index 0000000..a841765
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteElement.java
@@ -0,0 +1,149 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNoteClassAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:note}.
+ *
+ */
+public class TextNoteElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note");
+
+	/**
+	 * Create the instance of <code>TextNoteElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:note}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNoteClassAttribute</code> , See {@odf.attribute text:note-class}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNoteClassAttribute() {
+		TextNoteClassAttribute attr = (TextNoteClassAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "note-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNoteClassAttribute</code> , See {@odf.attribute text:note-class}
+	 *
+	 * @param textNoteClassValue   The type is <code>String</code>
+	 */
+	public void setTextNoteClassAttribute(String textNoteClassValue) {
+		TextNoteClassAttribute attr = new TextNoteClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNoteClassValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:note-body}
+	 */
+	public TextNoteBodyElement newTextNoteBodyElement() {
+		TextNoteBodyElement textNoteBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteBodyElement.class);
+		this.appendChild(textNoteBody);
+		return textNoteBody;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-citation}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:note-citation}
+	 */
+	public TextNoteCitationElement newTextNoteCitationElement() {
+		TextNoteCitationElement textNoteCitation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteCitationElement.class);
+		this.appendChild(textNoteCitation);
+		return textNoteCitation;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteRefElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteRefElement.java
new file mode 100644
index 0000000..9a54b2d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNoteRefElement.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNoteClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRefNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextReferenceFormatAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:note-ref}.
+ *
+ */
+public class TextNoteRefElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "note-ref");
+
+	/**
+	 * Create the instance of <code>TextNoteRefElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNoteRefElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:note-ref}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNoteClassAttribute</code> , See {@odf.attribute text:note-class}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNoteClassAttribute() {
+		TextNoteClassAttribute attr = (TextNoteClassAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "note-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNoteClassAttribute</code> , See {@odf.attribute text:note-class}
+	 *
+	 * @param textNoteClassValue   The type is <code>String</code>
+	 */
+	public void setTextNoteClassAttribute(String textNoteClassValue) {
+		TextNoteClassAttribute attr = new TextNoteClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNoteClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextRefNameAttribute() {
+		TextRefNameAttribute attr = (TextRefNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "ref-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @param textRefNameValue   The type is <code>String</code>
+	 */
+	public void setTextRefNameAttribute(String textRefNameValue) {
+		TextRefNameAttribute attr = new TextRefNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textRefNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextReferenceFormatAttribute() {
+		TextReferenceFormatAttribute attr = (TextReferenceFormatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "reference-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @param textReferenceFormatValue   The type is <code>String</code>
+	 */
+	public void setTextReferenceFormatAttribute(String textReferenceFormatValue) {
+		TextReferenceFormatAttribute attr = new TextReferenceFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textReferenceFormatValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNotesConfigurationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNotesConfigurationElement.java
new file mode 100644
index 0000000..e0e227b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNotesConfigurationElement.java
@@ -0,0 +1,397 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumPrefixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumSuffixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCitationBodyStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCitationStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDefaultStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFootnotesPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMasterPageNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNoteClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartNumberingAtAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:notes-configuration}.
+ *
+ */
+public class TextNotesConfigurationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "notes-configuration");
+
+	/**
+	 * Create the instance of <code>TextNotesConfigurationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNotesConfigurationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:notes-configuration}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumPrefixAttribute() {
+		StyleNumPrefixAttribute attr = (StyleNumPrefixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-prefix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @param styleNumPrefixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumPrefixAttribute(String styleNumPrefixValue) {
+		StyleNumPrefixAttribute attr = new StyleNumPrefixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumPrefixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumSuffixAttribute() {
+		StyleNumSuffixAttribute attr = (StyleNumSuffixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-suffix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @param styleNumSuffixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumSuffixAttribute(String styleNumSuffixValue) {
+		StyleNumSuffixAttribute attr = new StyleNumSuffixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumSuffixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCitationBodyStyleNameAttribute</code> , See {@odf.attribute text:citation-body-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCitationBodyStyleNameAttribute() {
+		TextCitationBodyStyleNameAttribute attr = (TextCitationBodyStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "citation-body-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCitationBodyStyleNameAttribute</code> , See {@odf.attribute text:citation-body-style-name}
+	 *
+	 * @param textCitationBodyStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextCitationBodyStyleNameAttribute(String textCitationBodyStyleNameValue) {
+		TextCitationBodyStyleNameAttribute attr = new TextCitationBodyStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCitationBodyStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCitationStyleNameAttribute</code> , See {@odf.attribute text:citation-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCitationStyleNameAttribute() {
+		TextCitationStyleNameAttribute attr = (TextCitationStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "citation-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCitationStyleNameAttribute</code> , See {@odf.attribute text:citation-style-name}
+	 *
+	 * @param textCitationStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextCitationStyleNameAttribute(String textCitationStyleNameValue) {
+		TextCitationStyleNameAttribute attr = new TextCitationStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCitationStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDefaultStyleNameAttribute</code> , See {@odf.attribute text:default-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDefaultStyleNameAttribute() {
+		TextDefaultStyleNameAttribute attr = (TextDefaultStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "default-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDefaultStyleNameAttribute</code> , See {@odf.attribute text:default-style-name}
+	 *
+	 * @param textDefaultStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextDefaultStyleNameAttribute(String textDefaultStyleNameValue) {
+		TextDefaultStyleNameAttribute attr = new TextDefaultStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDefaultStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFootnotesPositionAttribute</code> , See {@odf.attribute text:footnotes-position}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFootnotesPositionAttribute() {
+		TextFootnotesPositionAttribute attr = (TextFootnotesPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "footnotes-position");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFootnotesPositionAttribute</code> , See {@odf.attribute text:footnotes-position}
+	 *
+	 * @param textFootnotesPositionValue   The type is <code>String</code>
+	 */
+	public void setTextFootnotesPositionAttribute(String textFootnotesPositionValue) {
+		TextFootnotesPositionAttribute attr = new TextFootnotesPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFootnotesPositionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMasterPageNameAttribute</code> , See {@odf.attribute text:master-page-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextMasterPageNameAttribute() {
+		TextMasterPageNameAttribute attr = (TextMasterPageNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "master-page-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMasterPageNameAttribute</code> , See {@odf.attribute text:master-page-name}
+	 *
+	 * @param textMasterPageNameValue   The type is <code>String</code>
+	 */
+	public void setTextMasterPageNameAttribute(String textMasterPageNameValue) {
+		TextMasterPageNameAttribute attr = new TextMasterPageNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textMasterPageNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNoteClassAttribute</code> , See {@odf.attribute text:note-class}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNoteClassAttribute() {
+		TextNoteClassAttribute attr = (TextNoteClassAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "note-class");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNoteClassAttribute</code> , See {@odf.attribute text:note-class}
+	 *
+	 * @param textNoteClassValue   The type is <code>String</code>
+	 */
+	public void setTextNoteClassAttribute(String textNoteClassValue) {
+		TextNoteClassAttribute attr = new TextNoteClassAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNoteClassValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartNumberingAtAttribute</code> , See {@odf.attribute text:start-numbering-at}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStartNumberingAtAttribute() {
+		TextStartNumberingAtAttribute attr = (TextStartNumberingAtAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-numbering-at");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartNumberingAtAttribute</code> , See {@odf.attribute text:start-numbering-at}
+	 *
+	 * @param textStartNumberingAtValue   The type is <code>String</code>
+	 */
+	public void setTextStartNumberingAtAttribute(String textStartNumberingAtValue) {
+		TextStartNumberingAtAttribute attr = new TextStartNumberingAtAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStartNumberingAtValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextStartValueAttribute() {
+		TextStartValueAttribute attr = (TextStartValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TextStartValueAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @param textStartValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextStartValueAttribute(Integer textStartValueValue) {
+		TextStartValueAttribute attr = new TextStartValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textStartValueValue.intValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-continuation-notice-backward}.
+	 *
+	 * @return the element {@odf.element text:note-continuation-notice-backward}
+	 */
+	public TextNoteContinuationNoticeBackwardElement newTextNoteContinuationNoticeBackwardElement() {
+		TextNoteContinuationNoticeBackwardElement textNoteContinuationNoticeBackward = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteContinuationNoticeBackwardElement.class);
+		this.appendChild(textNoteContinuationNoticeBackward);
+		return textNoteContinuationNoticeBackward;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-continuation-notice-forward}.
+	 *
+	 * @return the element {@odf.element text:note-continuation-notice-forward}
+	 */
+	public TextNoteContinuationNoticeForwardElement newTextNoteContinuationNoticeForwardElement() {
+		TextNoteContinuationNoticeForwardElement textNoteContinuationNoticeForward = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteContinuationNoticeForwardElement.class);
+		this.appendChild(textNoteContinuationNoticeForward);
+		return textNoteContinuationNoticeForward;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNumberElement.java
new file mode 100644
index 0000000..09b78bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNumberElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:number}.
+ *
+ */
+public class TextNumberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "number");
+
+	/**
+	 * Create the instance of <code>TextNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNumberedParagraphElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNumberedParagraphElement.java
new file mode 100644
index 0000000..2557eb0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextNumberedParagraphElement.java
@@ -0,0 +1,260 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextContinueNumberingAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextListIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:numbered-paragraph}.
+ *
+ */
+public class TextNumberedParagraphElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "numbered-paragraph");
+
+	/**
+	 * Create the instance of <code>TextNumberedParagraphElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextNumberedParagraphElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.List, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:numbered-paragraph}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextContinueNumberingAttribute</code> , See {@odf.attribute text:continue-numbering}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextContinueNumberingAttribute() {
+		TextContinueNumberingAttribute attr = (TextContinueNumberingAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "continue-numbering");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextContinueNumberingAttribute</code> , See {@odf.attribute text:continue-numbering}
+	 *
+	 * @param textContinueNumberingValue   The type is <code>Boolean</code>
+	 */
+	public void setTextContinueNumberingAttribute(Boolean textContinueNumberingValue) {
+		TextContinueNumberingAttribute attr = new TextContinueNumberingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textContinueNumberingValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLevelAttribute</code> , See {@odf.attribute text:level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextLevelAttribute() {
+		TextLevelAttribute attr = (TextLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TextLevelAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLevelAttribute</code> , See {@odf.attribute text:level}
+	 *
+	 * @param textLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextLevelAttribute(Integer textLevelValue) {
+		TextLevelAttribute attr = new TextLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextListIdAttribute</code> , See {@odf.attribute text:list-id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextListIdAttribute() {
+		TextListIdAttribute attr = (TextListIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "list-id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextListIdAttribute</code> , See {@odf.attribute text:list-id}
+	 *
+	 * @param textListIdValue   The type is <code>String</code>
+	 */
+	public void setTextListIdAttribute(String textListIdValue) {
+		TextListIdAttribute attr = new TextListIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textListIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextStartValueAttribute() {
+		TextStartValueAttribute attr = (TextStartValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @param textStartValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextStartValueAttribute(Integer textStartValueValue) {
+		TextStartValueAttribute attr = new TextStartValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textStartValueValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:number}.
+	 *
+	 * @return the element {@odf.element text:number}
+	 */
+	public TextNumberElement newTextNumberElement() {
+		TextNumberElement textNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberElement.class);
+		this.appendChild(textNumber);
+		return textNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectCountElement.java
new file mode 100644
index 0000000..0a56511
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:object-count}.
+ *
+ */
+public class TextObjectCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "object-count");
+
+	/**
+	 * Create the instance of <code>TextObjectCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextObjectCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:object-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexElement.java
new file mode 100644
index 0000000..8d8b8c5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:object-index}.
+ *
+ */
+public class TextObjectIndexElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "object-index");
+
+	/**
+	 * Create the instance of <code>TextObjectIndexElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextObjectIndexElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:object-index}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index-source}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:object-index-source}
+	 */
+	public TextObjectIndexSourceElement newTextObjectIndexSourceElement() {
+		TextObjectIndexSourceElement textObjectIndexSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexSourceElement.class);
+		this.appendChild(textObjectIndexSource);
+		return textObjectIndexSource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexEntryTemplateElement.java
new file mode 100644
index 0000000..e1781f0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexEntryTemplateElement.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:object-index-entry-template}.
+ *
+ */
+public class TextObjectIndexEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "object-index-entry-template");
+
+	/**
+	 * Create the instance of <code>TextObjectIndexEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextObjectIndexEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:object-index-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-chapter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:index-entry-chapter}
+	 */
+	public TextIndexEntryChapterElement newTextIndexEntryChapterElement() {
+		TextIndexEntryChapterElement textIndexEntryChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryChapterElement.class);
+		this.appendChild(textIndexEntryChapter);
+		return textIndexEntryChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-page-number}.
+	 *
+	 * @return the element {@odf.element text:index-entry-page-number}
+	 */
+	public TextIndexEntryPageNumberElement newTextIndexEntryPageNumberElement() {
+		TextIndexEntryPageNumberElement textIndexEntryPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryPageNumberElement.class);
+		this.appendChild(textIndexEntryPageNumber);
+		return textIndexEntryPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-text}.
+	 *
+	 * @return the element {@odf.element text:index-entry-text}
+	 */
+	public TextIndexEntryTextElement newTextIndexEntryTextElement() {
+		TextIndexEntryTextElement textIndexEntryText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTextElement.class);
+		this.appendChild(textIndexEntryText);
+		return textIndexEntryText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexSourceElement.java
new file mode 100644
index 0000000..8e0fd7a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextObjectIndexSourceElement.java
@@ -0,0 +1,270 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexScopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRelativeTabStopPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseChartObjectsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseDrawObjectsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseMathObjectsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseOtherObjectsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseSpreadsheetObjectsAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:object-index-source}.
+ *
+ */
+public class TextObjectIndexSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "object-index-source");
+
+	/**
+	 * Create the instance of <code>TextObjectIndexSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextObjectIndexSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:object-index-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexScopeAttribute() {
+		TextIndexScopeAttribute attr = (TextIndexScopeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-scope");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextIndexScopeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @param textIndexScopeValue   The type is <code>String</code>
+	 */
+	public void setTextIndexScopeAttribute(String textIndexScopeValue) {
+		TextIndexScopeAttribute attr = new TextIndexScopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexScopeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRelativeTabStopPositionAttribute() {
+		TextRelativeTabStopPositionAttribute attr = (TextRelativeTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRelativeTabStopPositionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @param textRelativeTabStopPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRelativeTabStopPositionAttribute(Boolean textRelativeTabStopPositionValue) {
+		TextRelativeTabStopPositionAttribute attr = new TextRelativeTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRelativeTabStopPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseChartObjectsAttribute</code> , See {@odf.attribute text:use-chart-objects}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseChartObjectsAttribute() {
+		TextUseChartObjectsAttribute attr = (TextUseChartObjectsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-chart-objects");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseChartObjectsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseChartObjectsAttribute</code> , See {@odf.attribute text:use-chart-objects}
+	 *
+	 * @param textUseChartObjectsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseChartObjectsAttribute(Boolean textUseChartObjectsValue) {
+		TextUseChartObjectsAttribute attr = new TextUseChartObjectsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseChartObjectsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseDrawObjectsAttribute</code> , See {@odf.attribute text:use-draw-objects}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseDrawObjectsAttribute() {
+		TextUseDrawObjectsAttribute attr = (TextUseDrawObjectsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-draw-objects");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseDrawObjectsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseDrawObjectsAttribute</code> , See {@odf.attribute text:use-draw-objects}
+	 *
+	 * @param textUseDrawObjectsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseDrawObjectsAttribute(Boolean textUseDrawObjectsValue) {
+		TextUseDrawObjectsAttribute attr = new TextUseDrawObjectsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseDrawObjectsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseMathObjectsAttribute</code> , See {@odf.attribute text:use-math-objects}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseMathObjectsAttribute() {
+		TextUseMathObjectsAttribute attr = (TextUseMathObjectsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-math-objects");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseMathObjectsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseMathObjectsAttribute</code> , See {@odf.attribute text:use-math-objects}
+	 *
+	 * @param textUseMathObjectsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseMathObjectsAttribute(Boolean textUseMathObjectsValue) {
+		TextUseMathObjectsAttribute attr = new TextUseMathObjectsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseMathObjectsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseOtherObjectsAttribute</code> , See {@odf.attribute text:use-other-objects}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseOtherObjectsAttribute() {
+		TextUseOtherObjectsAttribute attr = (TextUseOtherObjectsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-other-objects");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseOtherObjectsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseOtherObjectsAttribute</code> , See {@odf.attribute text:use-other-objects}
+	 *
+	 * @param textUseOtherObjectsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseOtherObjectsAttribute(Boolean textUseOtherObjectsValue) {
+		TextUseOtherObjectsAttribute attr = new TextUseOtherObjectsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseOtherObjectsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseSpreadsheetObjectsAttribute</code> , See {@odf.attribute text:use-spreadsheet-objects}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseSpreadsheetObjectsAttribute() {
+		TextUseSpreadsheetObjectsAttribute attr = (TextUseSpreadsheetObjectsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-spreadsheet-objects");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseSpreadsheetObjectsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseSpreadsheetObjectsAttribute</code> , See {@odf.attribute text:use-spreadsheet-objects}
+	 *
+	 * @param textUseSpreadsheetObjectsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseSpreadsheetObjectsAttribute(Boolean textUseSpreadsheetObjectsValue) {
+		TextUseSpreadsheetObjectsAttribute attr = new TextUseSpreadsheetObjectsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseSpreadsheetObjectsValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index-entry-template}.
+	 *
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:object-index-entry-template}
+	 */
+	 public TextObjectIndexEntryTemplateElement newTextObjectIndexEntryTemplateElement(String textStyleNameValue) {
+		TextObjectIndexEntryTemplateElement textObjectIndexEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexEntryTemplateElement.class);
+		textObjectIndexEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textObjectIndexEntryTemplate);
+		return textObjectIndexEntryTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextOutlineLevelStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextOutlineLevelStyleElement.java
new file mode 100644
index 0000000..ffcb9a6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextOutlineLevelStyleElement.java
@@ -0,0 +1,302 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumPrefixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumSuffixAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayLevelsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStartValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:outline-level-style}.
+ *
+ */
+public class TextOutlineLevelStyleElement extends OdfStyleBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "outline-level-style");
+
+	/**
+	 * Create the instance of <code>TextOutlineLevelStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextOutlineLevelStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:outline-level-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumPrefixAttribute() {
+		StyleNumPrefixAttribute attr = (StyleNumPrefixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-prefix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumPrefixAttribute</code> , See {@odf.attribute style:num-prefix}
+	 *
+	 * @param styleNumPrefixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumPrefixAttribute(String styleNumPrefixValue) {
+		StyleNumPrefixAttribute attr = new StyleNumPrefixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumPrefixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumSuffixAttribute() {
+		StyleNumSuffixAttribute attr = (StyleNumSuffixAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-suffix");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumSuffixAttribute</code> , See {@odf.attribute style:num-suffix}
+	 *
+	 * @param styleNumSuffixValue   The type is <code>String</code>
+	 */
+	public void setStyleNumSuffixAttribute(String styleNumSuffixValue) {
+		StyleNumSuffixAttribute attr = new StyleNumSuffixAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumSuffixValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayLevelsAttribute</code> , See {@odf.attribute text:display-levels}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextDisplayLevelsAttribute() {
+		TextDisplayLevelsAttribute attr = (TextDisplayLevelsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display-levels");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TextDisplayLevelsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayLevelsAttribute</code> , See {@odf.attribute text:display-levels}
+	 *
+	 * @param textDisplayLevelsValue   The type is <code>Integer</code>
+	 */
+	public void setTextDisplayLevelsAttribute(Integer textDisplayLevelsValue) {
+		TextDisplayLevelsAttribute attr = new TextDisplayLevelsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textDisplayLevelsValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextLevelAttribute</code> , See {@odf.attribute text:level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextLevelAttribute() {
+		TextLevelAttribute attr = (TextLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextLevelAttribute</code> , See {@odf.attribute text:level}
+	 *
+	 * @param textLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextLevelAttribute(Integer textLevelValue) {
+		TextLevelAttribute attr = new TextLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextStartValueAttribute() {
+		TextStartValueAttribute attr = (TextStartValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "start-value");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return Integer.valueOf(TextStartValueAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStartValueAttribute</code> , See {@odf.attribute text:start-value}
+	 *
+	 * @param textStartValueValue   The type is <code>Integer</code>
+	 */
+	public void setTextStartValueAttribute(Integer textStartValueValue) {
+		TextStartValueAttribute attr = new TextStartValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textStartValueValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element style:list-level-properties}.
+	 *
+	 * @return the element {@odf.element style:list-level-properties}
+	 */
+	public StyleListLevelPropertiesElement newStyleListLevelPropertiesElement() {
+		StyleListLevelPropertiesElement styleListLevelProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleListLevelPropertiesElement.class);
+		this.appendChild(styleListLevelProperties);
+		return styleListLevelProperties;
+	}
+
+	/**
+	 * Create child element {@odf.element style:text-properties}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @return the element {@odf.element style:text-properties}
+	 */
+	 public StyleTextPropertiesElement newStyleTextPropertiesElement(String textDisplayValue) {
+		StyleTextPropertiesElement styleTextProperties = ((OdfFileDom) this.ownerDocument).newOdfElement(StyleTextPropertiesElement.class);
+		styleTextProperties.setTextDisplayAttribute(textDisplayValue);
+		this.appendChild(styleTextProperties);
+		return styleTextProperties;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextOutlineStyleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextOutlineStyleElement.java
new file mode 100644
index 0000000..ef8c652
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextOutlineStyleElement.java
@@ -0,0 +1,115 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:outline-style}.
+ *
+ */
+public class TextOutlineStyleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "outline-style");
+
+	/**
+	 * Create the instance of <code>TextOutlineStyleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextOutlineStyleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:outline-style}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNameAttribute() {
+		StyleNameAttribute attr = (StyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNameAttribute</code> , See {@odf.attribute style:name}
+	 *
+	 * @param styleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleNameAttribute(String styleNameValue) {
+		StyleNameAttribute attr = new StyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:outline-level-style}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textLevelValue  the <code>Integer</code> value of <code>TextLevelAttribute</code>, see {@odf.attribute  text:level} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:outline-level-style}
+	 */
+	 public TextOutlineLevelStyleElement newTextOutlineLevelStyleElement(String styleNumFormatValue, int textLevelValue) {
+		TextOutlineLevelStyleElement textOutlineLevelStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextOutlineLevelStyleElement.class);
+		textOutlineLevelStyle.setStyleNumFormatAttribute(styleNumFormatValue);
+		textOutlineLevelStyle.setTextLevelAttribute(textLevelValue);
+		this.appendChild(textOutlineLevelStyle);
+		return textOutlineLevelStyle;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPElement.java
new file mode 100644
index 0000000..6ce506c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPElement.java
@@ -0,0 +1,1694 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:p}.
+ *
+ */
+public class TextPElement extends TextParagraphElementBase {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "p");
+
+	/**
+	 * Create the instance of <code>TextPElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:p}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation-end}.
+	 *
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation-end}
+	 */
+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {
+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);
+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(officeAnnotationEnd);
+		return officeAnnotationEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time}.
+	 *
+	 * @return the element {@odf.element presentation:date-time}
+	 */
+	public PresentationDateTimeElement newPresentationDateTimeElement() {
+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);
+		this.appendChild(presentationDateTime);
+		return presentationDateTime;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer}.
+	 *
+	 * @return the element {@odf.element presentation:footer}
+	 */
+	public PresentationFooterElement newPresentationFooterElement() {
+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);
+		this.appendChild(presentationFooter);
+		return presentationFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header}.
+	 *
+	 * @return the element {@odf.element presentation:header}
+	 */
+	public PresentationHeaderElement newPresentationHeaderElement() {
+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);
+		this.appendChild(presentationHeader);
+		return presentationHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:a}
+	 */
+	 public TextAElement newTextAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAElement textA = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAElement.class);
+		textA.setXlinkHrefAttribute(xlinkHrefValue);
+		textA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textA);
+		return textA;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark}
+	 */
+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {
+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);
+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textAlphabeticalIndexMark);
+		return textAlphabeticalIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-end}
+	 */
+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {
+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);
+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkEnd);
+		return textAlphabeticalIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-start}
+	 */
+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {
+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);
+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkStart);
+		return textAlphabeticalIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-initials}.
+	 *
+	 * @return the element {@odf.element text:author-initials}
+	 */
+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {
+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);
+		this.appendChild(textAuthorInitials);
+		return textAuthorInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-name}.
+	 *
+	 * @return the element {@odf.element text:author-name}
+	 */
+	public TextAuthorNameElement newTextAuthorNameElement() {
+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);
+		this.appendChild(textAuthorName);
+		return textAuthorName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-mark}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * @return the element {@odf.element text:bibliography-mark}
+	 */
+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {
+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);
+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		this.appendChild(textBibliographyMark);
+		return textBibliographyMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark}
+	 */
+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {
+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);
+		textBookmark.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmark);
+		return textBookmark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-end}
+	 */
+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {
+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);
+		textBookmarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkEnd);
+		return textBookmarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-ref}.
+	 *
+	 * @return the element {@odf.element text:bookmark-ref}
+	 */
+	public TextBookmarkRefElement newTextBookmarkRefElement() {
+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);
+		this.appendChild(textBookmarkRef);
+		return textBookmarkRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-start}
+	 */
+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {
+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);
+		textBookmarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkStart);
+		return textBookmarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:chapter}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:chapter}
+	 */
+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {
+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);
+		textChapter.setTextDisplayAttribute(textDisplayValue);
+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textChapter);
+		return textChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:character-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:character-count}
+	 */
+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {
+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);
+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textCharacterCount);
+		return textCharacterCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:conditional-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification
+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification
+	 * @return the element {@odf.element text:conditional-text}
+	 */
+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {
+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);
+		textConditionalText.setTextConditionAttribute(textConditionValue);
+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);
+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);
+		this.appendChild(textConditionalText);
+		return textConditionalText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-date}.
+	 *
+	 * @return the element {@odf.element text:creation-date}
+	 */
+	public TextCreationDateElement newTextCreationDateElement() {
+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);
+		this.appendChild(textCreationDate);
+		return textCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-time}.
+	 *
+	 * @return the element {@odf.element text:creation-time}
+	 */
+	public TextCreationTimeElement newTextCreationTimeElement() {
+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);
+		this.appendChild(textCreationTime);
+		return textCreationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creator}.
+	 *
+	 * @return the element {@odf.element text:creator}
+	 */
+	public TextCreatorElement newTextCreatorElement() {
+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);
+		this.appendChild(textCreator);
+		return textCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-display}.
+	 *
+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-display}
+	 */
+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {
+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);
+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);
+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseDisplay);
+		return textDatabaseDisplay;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-name}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-name}
+	 */
+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {
+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);
+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseName);
+		return textDatabaseName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-next}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-next}
+	 */
+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {
+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);
+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseNext);
+		return textDatabaseNext;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-number}
+	 */
+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {
+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);
+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowNumber);
+		return textDatabaseRowNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-select}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-select}
+	 */
+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {
+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);
+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowSelect);
+		return textDatabaseRowSelect;
+	}
+
+	/**
+	 * Create child element {@odf.element text:date}.
+	 *
+	 * @return the element {@odf.element text:date}
+	 */
+	public TextDateElement newTextDateElement() {
+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);
+		this.appendChild(textDate);
+		return textDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection}.
+	 *
+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification
+	 * @return the element {@odf.element text:dde-connection}
+	 */
+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {
+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);
+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);
+		this.appendChild(textDdeConnection);
+		return textDdeConnection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:description}.
+	 *
+	 * @return the element {@odf.element text:description}
+	 */
+	public TextDescriptionElement newTextDescriptionElement() {
+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);
+		this.appendChild(textDescription);
+		return textDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-cycles}.
+	 *
+	 * @return the element {@odf.element text:editing-cycles}
+	 */
+	public TextEditingCyclesElement newTextEditingCyclesElement() {
+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);
+		this.appendChild(textEditingCycles);
+		return textEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-duration}.
+	 *
+	 * @return the element {@odf.element text:editing-duration}
+	 */
+	public TextEditingDurationElement newTextEditingDurationElement() {
+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);
+		this.appendChild(textEditingDuration);
+		return textEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:execute-macro}.
+	 *
+	 * @return the element {@odf.element text:execute-macro}
+	 */
+	public TextExecuteMacroElement newTextExecuteMacroElement() {
+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);
+		this.appendChild(textExecuteMacro);
+		return textExecuteMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element text:expression}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element text:expression}
+	 */
+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {
+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);
+		textExpression.setOfficeValueAttribute(officeValueValue);
+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(textExpression);
+		return textExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element text:file-name}.
+	 *
+	 * @return the element {@odf.element text:file-name}
+	 */
+	public TextFileNameElement newTextFileNameElement() {
+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);
+		this.appendChild(textFileName);
+		return textFileName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-paragraph}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @return the element {@odf.element text:hidden-paragraph}
+	 */
+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {
+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);
+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);
+		this.appendChild(textHiddenParagraph);
+		return textHiddenParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:hidden-text}
+	 */
+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {
+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);
+		textHiddenText.setTextConditionAttribute(textConditionValue);
+		textHiddenText.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textHiddenText);
+		return textHiddenText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:image-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:image-count}
+	 */
+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {
+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);
+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textImageCount);
+		return textImageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:initial-creator}.
+	 *
+	 * @return the element {@odf.element text:initial-creator}
+	 */
+	public TextInitialCreatorElement newTextInitialCreatorElement() {
+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);
+		this.appendChild(textInitialCreator);
+		return textInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:keywords}.
+	 *
+	 * @return the element {@odf.element text:keywords}
+	 */
+	public TextKeywordsElement newTextKeywordsElement() {
+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);
+		this.appendChild(textKeywords);
+		return textKeywords;
+	}
+
+	/**
+	 * Create child element {@odf.element text:line-break}.
+	 *
+	 * @return the element {@odf.element text:line-break}
+	 */
+	public TextLineBreakElement newTextLineBreakElement() {
+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);
+		this.appendChild(textLineBreak);
+		return textLineBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:measure}.
+	 *
+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification
+	 * @return the element {@odf.element text:measure}
+	 */
+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {
+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);
+		textMeasure.setTextKindAttribute(textKindValue);
+		this.appendChild(textMeasure);
+		return textMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta}
+	 */
+	public TextMetaElement newTextMetaElement() {
+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);
+		this.appendChild(textMeta);
+		return textMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta-field}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta-field}
+	 */
+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {
+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);
+		textMetaField.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textMetaField);
+		return textMetaField;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-date}.
+	 *
+	 * @return the element {@odf.element text:modification-date}
+	 */
+	public TextModificationDateElement newTextModificationDateElement() {
+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);
+		this.appendChild(textModificationDate);
+		return textModificationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-time}.
+	 *
+	 * @return the element {@odf.element text:modification-time}
+	 */
+	public TextModificationTimeElement newTextModificationTimeElement() {
+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);
+		this.appendChild(textModificationTime);
+		return textModificationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note}
+	 */
+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {
+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);
+		textNote.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNote);
+		return textNote;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-ref}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note-ref}
+	 */
+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {
+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);
+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNoteRef);
+		return textNoteRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:object-count}
+	 */
+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {
+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);
+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textObjectCount);
+		return textObjectCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-continuation}.
+	 *
+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification
+	 * @return the element {@odf.element text:page-continuation}
+	 */
+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {
+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);
+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);
+		this.appendChild(textPageContinuation);
+		return textPageContinuation;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-count}
+	 */
+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {
+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);
+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageCount);
+		return textPageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-number}
+	 */
+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {
+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);
+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageNumber);
+		return textPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-get}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-variable-get}
+	 */
+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {
+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);
+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageVariableGet);
+		return textPageVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-set}.
+	 *
+	 * @return the element {@odf.element text:page-variable-set}
+	 */
+	public TextPageVariableSetElement newTextPageVariableSetElement() {
+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);
+		this.appendChild(textPageVariableSet);
+		return textPageVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:paragraph-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:paragraph-count}
+	 */
+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {
+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);
+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textParagraphCount);
+		return textParagraphCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:placeholder}.
+	 *
+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification
+	 * @return the element {@odf.element text:placeholder}
+	 */
+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {
+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);
+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);
+		this.appendChild(textPlaceholder);
+		return textPlaceholder;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-date}.
+	 *
+	 * @return the element {@odf.element text:print-date}
+	 */
+	public TextPrintDateElement newTextPrintDateElement() {
+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);
+		this.appendChild(textPrintDate);
+		return textPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-time}.
+	 *
+	 * @return the element {@odf.element text:print-time}
+	 */
+	public TextPrintTimeElement newTextPrintTimeElement() {
+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);
+		this.appendChild(textPrintTime);
+		return textPrintTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:printed-by}.
+	 *
+	 * @return the element {@odf.element text:printed-by}
+	 */
+	public TextPrintedByElement newTextPrintedByElement() {
+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);
+		this.appendChild(textPrintedBy);
+		return textPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark}
+	 */
+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {
+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);
+		textReferenceMark.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMark);
+		return textReferenceMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-end}
+	 */
+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {
+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);
+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkEnd);
+		return textReferenceMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-start}
+	 */
+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {
+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);
+		textReferenceMarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkStart);
+		return textReferenceMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-ref}.
+	 *
+	 * @return the element {@odf.element text:reference-ref}
+	 */
+	public TextReferenceRefElement newTextReferenceRefElement() {
+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);
+		this.appendChild(textReferenceRef);
+		return textReferenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby}.
+	 *
+	 * @return the element {@odf.element text:ruby}
+	 */
+	public TextRubyElement newTextRubyElement() {
+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);
+		this.appendChild(textRuby);
+		return textRuby;
+	}
+
+	/**
+	 * Create child element {@odf.element text:s}.
+	 *
+	 * @return the element {@odf.element text:s}
+	 */
+	public TextSElement newTextSElement() {
+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);
+		this.appendChild(textS);
+		return textS;
+	}
+
+	/**
+	 * Create child element {@odf.element text:script}.
+	 *
+	 * @return the element {@odf.element text:script}
+	 */
+	public TextScriptElement newTextScriptElement() {
+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);
+		this.appendChild(textScript);
+		return textScript;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-city}.
+	 *
+	 * @return the element {@odf.element text:sender-city}
+	 */
+	public TextSenderCityElement newTextSenderCityElement() {
+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);
+		this.appendChild(textSenderCity);
+		return textSenderCity;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-company}.
+	 *
+	 * @return the element {@odf.element text:sender-company}
+	 */
+	public TextSenderCompanyElement newTextSenderCompanyElement() {
+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);
+		this.appendChild(textSenderCompany);
+		return textSenderCompany;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-country}.
+	 *
+	 * @return the element {@odf.element text:sender-country}
+	 */
+	public TextSenderCountryElement newTextSenderCountryElement() {
+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);
+		this.appendChild(textSenderCountry);
+		return textSenderCountry;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-email}.
+	 *
+	 * @return the element {@odf.element text:sender-email}
+	 */
+	public TextSenderEmailElement newTextSenderEmailElement() {
+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);
+		this.appendChild(textSenderEmail);
+		return textSenderEmail;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-fax}.
+	 *
+	 * @return the element {@odf.element text:sender-fax}
+	 */
+	public TextSenderFaxElement newTextSenderFaxElement() {
+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);
+		this.appendChild(textSenderFax);
+		return textSenderFax;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-firstname}.
+	 *
+	 * @return the element {@odf.element text:sender-firstname}
+	 */
+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {
+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);
+		this.appendChild(textSenderFirstname);
+		return textSenderFirstname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-initials}.
+	 *
+	 * @return the element {@odf.element text:sender-initials}
+	 */
+	public TextSenderInitialsElement newTextSenderInitialsElement() {
+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);
+		this.appendChild(textSenderInitials);
+		return textSenderInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-lastname}.
+	 *
+	 * @return the element {@odf.element text:sender-lastname}
+	 */
+	public TextSenderLastnameElement newTextSenderLastnameElement() {
+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);
+		this.appendChild(textSenderLastname);
+		return textSenderLastname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-private}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-private}
+	 */
+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {
+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);
+		this.appendChild(textSenderPhonePrivate);
+		return textSenderPhonePrivate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-work}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-work}
+	 */
+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {
+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);
+		this.appendChild(textSenderPhoneWork);
+		return textSenderPhoneWork;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-position}.
+	 *
+	 * @return the element {@odf.element text:sender-position}
+	 */
+	public TextSenderPositionElement newTextSenderPositionElement() {
+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);
+		this.appendChild(textSenderPosition);
+		return textSenderPosition;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-postal-code}.
+	 *
+	 * @return the element {@odf.element text:sender-postal-code}
+	 */
+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {
+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);
+		this.appendChild(textSenderPostalCode);
+		return textSenderPostalCode;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-state-or-province}.
+	 *
+	 * @return the element {@odf.element text:sender-state-or-province}
+	 */
+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {
+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);
+		this.appendChild(textSenderStateOrProvince);
+		return textSenderStateOrProvince;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-street}.
+	 *
+	 * @return the element {@odf.element text:sender-street}
+	 */
+	public TextSenderStreetElement newTextSenderStreetElement() {
+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);
+		this.appendChild(textSenderStreet);
+		return textSenderStreet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-title}.
+	 *
+	 * @return the element {@odf.element text:sender-title}
+	 */
+	public TextSenderTitleElement newTextSenderTitleElement() {
+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);
+		this.appendChild(textSenderTitle);
+		return textSenderTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:sequence}
+	 */
+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {
+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);
+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);
+		textSequence.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequence);
+		return textSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-ref}.
+	 *
+	 * @return the element {@odf.element text:sequence-ref}
+	 */
+	public TextSequenceRefElement newTextSequenceRefElement() {
+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);
+		this.appendChild(textSequenceRef);
+		return textSequenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sheet-name}.
+	 *
+	 * @return the element {@odf.element text:sheet-name}
+	 */
+	public TextSheetNameElement newTextSheetNameElement() {
+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);
+		this.appendChild(textSheetName);
+		return textSheetName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:span}.
+	 *
+	 * @return the element {@odf.element text:span}
+	 */
+	public TextSpanElement newTextSpanElement() {
+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);
+		this.appendChild(textSpan);
+		return textSpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:subject}.
+	 *
+	 * @return the element {@odf.element text:subject}
+	 */
+	public TextSubjectElement newTextSubjectElement() {
+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);
+		this.appendChild(textSubject);
+		return textSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tab}.
+	 *
+	 * @return the element {@odf.element text:tab}
+	 */
+	public TextTabElement newTextTabElement() {
+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);
+		this.appendChild(textTab);
+		return textTab;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:table-count}
+	 */
+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {
+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);
+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textTableCount);
+		return textTableCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-formula}.
+	 *
+	 * @return the element {@odf.element text:table-formula}
+	 */
+	public TextTableFormulaElement newTextTableFormulaElement() {
+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);
+		this.appendChild(textTableFormula);
+		return textTableFormula;
+	}
+
+	/**
+	 * Create child element {@odf.element text:template-name}.
+	 *
+	 * @return the element {@odf.element text:template-name}
+	 */
+	public TextTemplateNameElement newTextTemplateNameElement() {
+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);
+		this.appendChild(textTemplateName);
+		return textTemplateName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:text-input}.
+	 *
+	 * @return the element {@odf.element text:text-input}
+	 */
+	public TextTextInputElement newTextTextInputElement() {
+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);
+		this.appendChild(textTextInput);
+		return textTextInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:time}.
+	 *
+	 * @return the element {@odf.element text:time}
+	 */
+	public TextTimeElement newTextTimeElement() {
+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);
+		this.appendChild(textTime);
+		return textTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:title}.
+	 *
+	 * @return the element {@odf.element text:title}
+	 */
+	public TextTitleElement newTextTitleElement() {
+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);
+		this.appendChild(textTitle);
+		return textTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:toc-mark}
+	 */
+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {
+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);
+		textTocMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textTocMark);
+		return textTocMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-end}
+	 */
+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {
+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);
+		textTocMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkEnd);
+		return textTocMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-start}
+	 */
+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {
+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);
+		textTocMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkStart);
+		return textTocMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-defined}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-defined}
+	 */
+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {
+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);
+		textUserDefined.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserDefined);
+		return textUserDefined;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-get}
+	 */
+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {
+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);
+		textUserFieldGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldGet);
+		return textUserFieldGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-input}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-input}
+	 */
+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {
+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);
+		textUserFieldInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldInput);
+		return textUserFieldInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:user-index-mark}
+	 */
+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {
+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);
+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);
+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textUserIndexMark);
+		return textUserIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:user-index-mark-end}
+	 */
+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {
+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);
+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textUserIndexMarkEnd);
+		return textUserIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @return the element {@odf.element text:user-index-mark-start}
+	 */
+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {
+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);
+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);
+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexMarkStart);
+		return textUserIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-get}
+	 */
+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {
+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);
+		textVariableGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableGet);
+		return textVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-input}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-input}
+	 */
+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);
+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableInput);
+		return textVariableInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-set}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-set}
+	 */
+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);
+		textVariableSet.setOfficeValueAttribute(officeValueValue);
+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableSet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableSet);
+		return textVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:word-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:word-count}
+	 */
+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {
+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);
+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textWordCount);
+		return textWordCount;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageContinuationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageContinuationElement.java
new file mode 100644
index 0000000..7ba6bd6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageContinuationElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSelectPageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page-continuation}.
+ *
+ */
+public class TextPageContinuationElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-continuation");
+
+	/**
+	 * Create the instance of <code>TextPageContinuationElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageContinuationElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page-continuation}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSelectPageAttribute</code> , See {@odf.attribute text:select-page}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSelectPageAttribute() {
+		TextSelectPageAttribute attr = (TextSelectPageAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "select-page");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSelectPageAttribute</code> , See {@odf.attribute text:select-page}
+	 *
+	 * @param textSelectPageValue   The type is <code>String</code>
+	 */
+	public void setTextSelectPageAttribute(String textSelectPageValue) {
+		TextSelectPageAttribute attr = new TextSelectPageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSelectPageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueAttribute() {
+		TextStringValueAttribute attr = (TextStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * @param textStringValueValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueAttribute(String textStringValueValue) {
+		TextStringValueAttribute attr = new TextStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageCountElement.java
new file mode 100644
index 0000000..7d85cc2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page-count}.
+ *
+ */
+public class TextPageCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-count");
+
+	/**
+	 * Create the instance of <code>TextPageCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageElement.java
new file mode 100644
index 0000000..e0a9c9e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextMasterPageNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page}.
+ *
+ */
+public class TextPageElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page");
+
+	/**
+	 * Create the instance of <code>TextPageElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextMasterPageNameAttribute</code> , See {@odf.attribute text:master-page-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextMasterPageNameAttribute() {
+		TextMasterPageNameAttribute attr = (TextMasterPageNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "master-page-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextMasterPageNameAttribute</code> , See {@odf.attribute text:master-page-name}
+	 *
+	 * @param textMasterPageNameValue   The type is <code>String</code>
+	 */
+	public void setTextMasterPageNameAttribute(String textMasterPageNameValue) {
+		TextMasterPageNameAttribute attr = new TextMasterPageNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textMasterPageNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageNumberElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageNumberElement.java
new file mode 100644
index 0000000..9e91472
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageNumberElement.java
@@ -0,0 +1,206 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextPageAdjustAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSelectPageAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page-number}.
+ *
+ */
+public class TextPageNumberElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-number");
+
+	/**
+	 * Create the instance of <code>TextPageNumberElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageNumberElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page-number}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextPageAdjustAttribute</code> , See {@odf.attribute text:page-adjust}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextPageAdjustAttribute() {
+		TextPageAdjustAttribute attr = (TextPageAdjustAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "page-adjust");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextPageAdjustAttribute</code> , See {@odf.attribute text:page-adjust}
+	 *
+	 * @param textPageAdjustValue   The type is <code>Integer</code>
+	 */
+	public void setTextPageAdjustAttribute(Integer textPageAdjustValue) {
+		TextPageAdjustAttribute attr = new TextPageAdjustAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textPageAdjustValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSelectPageAttribute</code> , See {@odf.attribute text:select-page}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSelectPageAttribute() {
+		TextSelectPageAttribute attr = (TextSelectPageAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "select-page");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSelectPageAttribute</code> , See {@odf.attribute text:select-page}
+	 *
+	 * @param textSelectPageValue   The type is <code>String</code>
+	 */
+	public void setTextSelectPageAttribute(String textSelectPageValue) {
+		TextSelectPageAttribute attr = new TextSelectPageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSelectPageValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageSequenceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageSequenceElement.java
new file mode 100644
index 0000000..6fc75f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageSequenceElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page-sequence}.
+ *
+ */
+public class TextPageSequenceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-sequence");
+
+	/**
+	 * Create the instance of <code>TextPageSequenceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageSequenceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page-sequence}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page}.
+	 *
+	 * @param textMasterPageNameValue  the <code>String</code> value of <code>TextMasterPageNameAttribute</code>, see {@odf.attribute  text:master-page-name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:page}
+	 */
+	 public TextPageElement newTextPageElement(String textMasterPageNameValue) {
+		TextPageElement textPage = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageElement.class);
+		textPage.setTextMasterPageNameAttribute(textMasterPageNameValue);
+		this.appendChild(textPage);
+		return textPage;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageVariableGetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageVariableGetElement.java
new file mode 100644
index 0000000..a0337c6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageVariableGetElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page-variable-get}.
+ *
+ */
+public class TextPageVariableGetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-variable-get");
+
+	/**
+	 * Create the instance of <code>TextPageVariableGetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageVariableGetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page-variable-get}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageVariableSetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageVariableSetElement.java
new file mode 100644
index 0000000..7da7557
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPageVariableSetElement.java
@@ -0,0 +1,129 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextActiveAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextPageAdjustAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:page-variable-set}.
+ *
+ */
+public class TextPageVariableSetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "page-variable-set");
+
+	/**
+	 * Create the instance of <code>TextPageVariableSetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPageVariableSetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:page-variable-set}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextActiveAttribute</code> , See {@odf.attribute text:active}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextActiveAttribute() {
+		TextActiveAttribute attr = (TextActiveAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "active");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextActiveAttribute</code> , See {@odf.attribute text:active}
+	 *
+	 * @param textActiveValue   The type is <code>Boolean</code>
+	 */
+	public void setTextActiveAttribute(Boolean textActiveValue) {
+		TextActiveAttribute attr = new TextActiveAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textActiveValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextPageAdjustAttribute</code> , See {@odf.attribute text:page-adjust}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextPageAdjustAttribute() {
+		TextPageAdjustAttribute attr = (TextPageAdjustAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "page-adjust");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextPageAdjustAttribute</code> , See {@odf.attribute text:page-adjust}
+	 *
+	 * @param textPageAdjustValue   The type is <code>Integer</code>
+	 */
+	public void setTextPageAdjustAttribute(Integer textPageAdjustValue) {
+		TextPageAdjustAttribute attr = new TextPageAdjustAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textPageAdjustValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextParagraphCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextParagraphCountElement.java
new file mode 100644
index 0000000..2da3b0e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextParagraphCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:paragraph-count}.
+ *
+ */
+public class TextParagraphCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "paragraph-count");
+
+	/**
+	 * Create the instance of <code>TextParagraphCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextParagraphCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:paragraph-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextParagraphElementBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextParagraphElementBase.java
new file mode 100644
index 0000000..ea2b950
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextParagraphElementBase.java
@@ -0,0 +1,302 @@
+

+/************************************************************************

+ *

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

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.dom.element.text;

+

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;

+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;

+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;

+import org.odftoolkit.odfdom.dom.attribute.text.TextClassNamesAttribute;

+import org.odftoolkit.odfdom.dom.attribute.text.TextCondStyleNameAttribute;

+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;

+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlAboutAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlContentAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlDatatypeAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xhtml.XhtmlPropertyAttribute;

+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;

+

+/**

+ * DOM implementation of OpenDocument base element

+ *

+ */

+public abstract class TextParagraphElementBase extends OdfStylableElement {

+

+	/**

+	 * Create the instance of <code>TextParagraphElementBase</code>

+	 *

+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>

+	 */

+	public TextParagraphElementBase(OdfFileDom ownerDoc, OdfName elementName, OdfStyleFamily styleFamily, OdfName styleAttrName) {

+		super(ownerDoc, elementName, styleFamily, styleAttrName);

+	}

+

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TextClassNamesAttribute</code> , See {@odf.attribute text:class-names}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTextClassNamesAttribute() {

+		TextClassNamesAttribute attr = (TextClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "class-names");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TextClassNamesAttribute</code> , See {@odf.attribute text:class-names}

+	 *

+	 * @param textClassNamesValue   The type is <code>String</code>

+	 */

+	public void setTextClassNamesAttribute(String textClassNamesValue) {

+		TextClassNamesAttribute attr = new TextClassNamesAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(textClassNamesValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TextCondStyleNameAttribute</code> , See {@odf.attribute text:cond-style-name}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTextCondStyleNameAttribute() {

+		TextCondStyleNameAttribute attr = (TextCondStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "cond-style-name");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TextCondStyleNameAttribute</code> , See {@odf.attribute text:cond-style-name}

+	 *

+	 * @param textCondStyleNameValue   The type is <code>String</code>

+	 */

+	public void setTextCondStyleNameAttribute(String textCondStyleNameValue) {

+		TextCondStyleNameAttribute attr = new TextCondStyleNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(textCondStyleNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTextIdAttribute() {

+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}

+	 *

+	 * @param textIdValue   The type is <code>String</code>

+	 */

+	public void setTextIdAttribute(String textIdValue) {

+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(textIdValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getTextStyleNameAttribute() {

+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}

+	 *

+	 * @param textStyleNameValue   The type is <code>String</code>

+	 */

+	public void setTextStyleNameAttribute(String textStyleNameValue) {

+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(textStyleNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlAboutAttribute() {

+		XhtmlAboutAttribute attr = (XhtmlAboutAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "about");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlAboutAttribute</code> , See {@odf.attribute xhtml:about}

+	 *

+	 * @param xhtmlAboutValue   The type is <code>String</code>

+	 */

+	public void setXhtmlAboutAttribute(String xhtmlAboutValue) {

+		XhtmlAboutAttribute attr = new XhtmlAboutAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlAboutValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlContentAttribute() {

+		XhtmlContentAttribute attr = (XhtmlContentAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "content");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlContentAttribute</code> , See {@odf.attribute xhtml:content}

+	 *

+	 * @param xhtmlContentValue   The type is <code>String</code>

+	 */

+	public void setXhtmlContentAttribute(String xhtmlContentValue) {

+		XhtmlContentAttribute attr = new XhtmlContentAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlContentValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlDatatypeAttribute() {

+		XhtmlDatatypeAttribute attr = (XhtmlDatatypeAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "datatype");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlDatatypeAttribute</code> , See {@odf.attribute xhtml:datatype}

+	 *

+	 * @param xhtmlDatatypeValue   The type is <code>String</code>

+	 */

+	public void setXhtmlDatatypeAttribute(String xhtmlDatatypeValue) {

+		XhtmlDatatypeAttribute attr = new XhtmlDatatypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlDatatypeValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXhtmlPropertyAttribute() {

+		XhtmlPropertyAttribute attr = (XhtmlPropertyAttribute) getOdfAttribute(OdfDocumentNamespace.XHTML, "property");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XhtmlPropertyAttribute</code> , See {@odf.attribute xhtml:property}

+	 *

+	 * @param xhtmlPropertyValue   The type is <code>String</code>

+	 */

+	public void setXhtmlPropertyAttribute(String xhtmlPropertyValue) {

+		XhtmlPropertyAttribute attr = new XhtmlPropertyAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xhtmlPropertyValue);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getXmlIdAttribute() {

+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}

+	 *

+	 * @param xmlIdValue   The type is <code>String</code>

+	 */

+	public void setXmlIdAttribute(String xmlIdValue) {

+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(xmlIdValue);

+	}

+	

+	/**

+	* Set text content. Only elements which are allowed to have text content offer this method.

+	*

+	*/

+	public void setTextContent(String content){

+		super.setTextContent(content);

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+

+	protected void onRemoveNode() {

+		super.onRemoveNode();

+		((OdfFileDom) this.ownerDocument).getInContentMetadataCache().remove(this);

+	}

+

+	protected void onInsertNode() {

+		super.onInsertNode();

+		((OdfFileDom) this.ownerDocument).updateInContentMetadataCache(this);

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPlaceholderElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPlaceholderElement.java
new file mode 100644
index 0000000..b45fd1c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPlaceholderElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextPlaceholderTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:placeholder}.
+ *
+ */
+public class TextPlaceholderElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "placeholder");
+
+	/**
+	 * Create the instance of <code>TextPlaceholderElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPlaceholderElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:placeholder}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDescriptionAttribute() {
+		TextDescriptionAttribute attr = (TextDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @param textDescriptionValue   The type is <code>String</code>
+	 */
+	public void setTextDescriptionAttribute(String textDescriptionValue) {
+		TextDescriptionAttribute attr = new TextDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextPlaceholderTypeAttribute</code> , See {@odf.attribute text:placeholder-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextPlaceholderTypeAttribute() {
+		TextPlaceholderTypeAttribute attr = (TextPlaceholderTypeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "placeholder-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextPlaceholderTypeAttribute</code> , See {@odf.attribute text:placeholder-type}
+	 *
+	 * @param textPlaceholderTypeValue   The type is <code>String</code>
+	 */
+	public void setTextPlaceholderTypeAttribute(String textPlaceholderTypeValue) {
+		TextPlaceholderTypeAttribute attr = new TextPlaceholderTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textPlaceholderTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintDateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintDateElement.java
new file mode 100644
index 0000000..f4e586a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintDateElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:print-date}.
+ *
+ */
+public class TextPrintDateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "print-date");
+
+	/**
+	 * Create the instance of <code>TextPrintDateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPrintDateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:print-date}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDateValueAttribute() {
+		TextDateValueAttribute attr = (TextDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDateValueAttribute</code> , See {@odf.attribute text:date-value}
+	 *
+	 * @param textDateValueValue   The type is <code>String</code>
+	 */
+	public void setTextDateValueAttribute(String textDateValueValue) {
+		TextDateValueAttribute attr = new TextDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintTimeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintTimeElement.java
new file mode 100644
index 0000000..826b9bb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintTimeElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTimeValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:print-time}.
+ *
+ */
+public class TextPrintTimeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "print-time");
+
+	/**
+	 * Create the instance of <code>TextPrintTimeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPrintTimeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:print-time}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTimeValueAttribute() {
+		TextTimeValueAttribute attr = (TextTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @param textTimeValueValue   The type is <code>String</code>
+	 */
+	public void setTextTimeValueAttribute(String textTimeValueValue) {
+		TextTimeValueAttribute attr = new TextTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTimeValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintedByElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintedByElement.java
new file mode 100644
index 0000000..c212b7c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextPrintedByElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:printed-by}.
+ *
+ */
+public class TextPrintedByElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "printed-by");
+
+	/**
+	 * Create the instance of <code>TextPrintedByElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextPrintedByElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:printed-by}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkElement.java
new file mode 100644
index 0000000..5d35ea6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:reference-mark}.
+ *
+ */
+public class TextReferenceMarkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "reference-mark");
+
+	/**
+	 * Create the instance of <code>TextReferenceMarkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextReferenceMarkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:reference-mark}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkEndElement.java
new file mode 100644
index 0000000..11bbc12
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:reference-mark-end}.
+ *
+ */
+public class TextReferenceMarkEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "reference-mark-end");
+
+	/**
+	 * Create the instance of <code>TextReferenceMarkEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextReferenceMarkEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:reference-mark-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkStartElement.java
new file mode 100644
index 0000000..84849fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceMarkStartElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:reference-mark-start}.
+ *
+ */
+public class TextReferenceMarkStartElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "reference-mark-start");
+
+	/**
+	 * Create the instance of <code>TextReferenceMarkStartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextReferenceMarkStartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:reference-mark-start}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceRefElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceRefElement.java
new file mode 100644
index 0000000..fbced5f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextReferenceRefElement.java
@@ -0,0 +1,129 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRefNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextReferenceFormatAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:reference-ref}.
+ *
+ */
+public class TextReferenceRefElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "reference-ref");
+
+	/**
+	 * Create the instance of <code>TextReferenceRefElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextReferenceRefElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:reference-ref}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextRefNameAttribute() {
+		TextRefNameAttribute attr = (TextRefNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "ref-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @param textRefNameValue   The type is <code>String</code>
+	 */
+	public void setTextRefNameAttribute(String textRefNameValue) {
+		TextRefNameAttribute attr = new TextRefNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textRefNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextReferenceFormatAttribute() {
+		TextReferenceFormatAttribute attr = (TextReferenceFormatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "reference-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @param textReferenceFormatValue   The type is <code>String</code>
+	 */
+	public void setTextReferenceFormatAttribute(String textReferenceFormatValue) {
+		TextReferenceFormatAttribute attr = new TextReferenceFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textReferenceFormatValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyBaseElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyBaseElement.java
new file mode 100644
index 0000000..6986df5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyBaseElement.java
@@ -0,0 +1,1692 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:ruby-base}.
+ *
+ */
+public class TextRubyBaseElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "ruby-base");
+
+	/**
+	 * Create the instance of <code>TextRubyBaseElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextRubyBaseElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:ruby-base}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation-end}.
+	 *
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation-end}
+	 */
+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {
+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);
+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(officeAnnotationEnd);
+		return officeAnnotationEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time}.
+	 *
+	 * @return the element {@odf.element presentation:date-time}
+	 */
+	public PresentationDateTimeElement newPresentationDateTimeElement() {
+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);
+		this.appendChild(presentationDateTime);
+		return presentationDateTime;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer}.
+	 *
+	 * @return the element {@odf.element presentation:footer}
+	 */
+	public PresentationFooterElement newPresentationFooterElement() {
+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);
+		this.appendChild(presentationFooter);
+		return presentationFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header}.
+	 *
+	 * @return the element {@odf.element presentation:header}
+	 */
+	public PresentationHeaderElement newPresentationHeaderElement() {
+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);
+		this.appendChild(presentationHeader);
+		return presentationHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:a}
+	 */
+	 public TextAElement newTextAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAElement textA = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAElement.class);
+		textA.setXlinkHrefAttribute(xlinkHrefValue);
+		textA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textA);
+		return textA;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark}
+	 */
+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {
+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);
+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textAlphabeticalIndexMark);
+		return textAlphabeticalIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-end}
+	 */
+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {
+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);
+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkEnd);
+		return textAlphabeticalIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-start}
+	 */
+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {
+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);
+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkStart);
+		return textAlphabeticalIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-initials}.
+	 *
+	 * @return the element {@odf.element text:author-initials}
+	 */
+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {
+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);
+		this.appendChild(textAuthorInitials);
+		return textAuthorInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-name}.
+	 *
+	 * @return the element {@odf.element text:author-name}
+	 */
+	public TextAuthorNameElement newTextAuthorNameElement() {
+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);
+		this.appendChild(textAuthorName);
+		return textAuthorName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-mark}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * @return the element {@odf.element text:bibliography-mark}
+	 */
+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {
+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);
+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		this.appendChild(textBibliographyMark);
+		return textBibliographyMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark}
+	 */
+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {
+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);
+		textBookmark.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmark);
+		return textBookmark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-end}
+	 */
+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {
+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);
+		textBookmarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkEnd);
+		return textBookmarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-ref}.
+	 *
+	 * @return the element {@odf.element text:bookmark-ref}
+	 */
+	public TextBookmarkRefElement newTextBookmarkRefElement() {
+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);
+		this.appendChild(textBookmarkRef);
+		return textBookmarkRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-start}
+	 */
+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {
+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);
+		textBookmarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkStart);
+		return textBookmarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:chapter}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:chapter}
+	 */
+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {
+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);
+		textChapter.setTextDisplayAttribute(textDisplayValue);
+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textChapter);
+		return textChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:character-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:character-count}
+	 */
+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {
+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);
+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textCharacterCount);
+		return textCharacterCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:conditional-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification
+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification
+	 * @return the element {@odf.element text:conditional-text}
+	 */
+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {
+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);
+		textConditionalText.setTextConditionAttribute(textConditionValue);
+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);
+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);
+		this.appendChild(textConditionalText);
+		return textConditionalText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-date}.
+	 *
+	 * @return the element {@odf.element text:creation-date}
+	 */
+	public TextCreationDateElement newTextCreationDateElement() {
+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);
+		this.appendChild(textCreationDate);
+		return textCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-time}.
+	 *
+	 * @return the element {@odf.element text:creation-time}
+	 */
+	public TextCreationTimeElement newTextCreationTimeElement() {
+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);
+		this.appendChild(textCreationTime);
+		return textCreationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creator}.
+	 *
+	 * @return the element {@odf.element text:creator}
+	 */
+	public TextCreatorElement newTextCreatorElement() {
+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);
+		this.appendChild(textCreator);
+		return textCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-display}.
+	 *
+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-display}
+	 */
+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {
+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);
+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);
+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseDisplay);
+		return textDatabaseDisplay;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-name}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-name}
+	 */
+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {
+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);
+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseName);
+		return textDatabaseName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-next}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-next}
+	 */
+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {
+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);
+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseNext);
+		return textDatabaseNext;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-number}
+	 */
+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {
+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);
+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowNumber);
+		return textDatabaseRowNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-select}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-select}
+	 */
+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {
+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);
+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowSelect);
+		return textDatabaseRowSelect;
+	}
+
+	/**
+	 * Create child element {@odf.element text:date}.
+	 *
+	 * @return the element {@odf.element text:date}
+	 */
+	public TextDateElement newTextDateElement() {
+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);
+		this.appendChild(textDate);
+		return textDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection}.
+	 *
+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification
+	 * @return the element {@odf.element text:dde-connection}
+	 */
+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {
+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);
+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);
+		this.appendChild(textDdeConnection);
+		return textDdeConnection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:description}.
+	 *
+	 * @return the element {@odf.element text:description}
+	 */
+	public TextDescriptionElement newTextDescriptionElement() {
+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);
+		this.appendChild(textDescription);
+		return textDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-cycles}.
+	 *
+	 * @return the element {@odf.element text:editing-cycles}
+	 */
+	public TextEditingCyclesElement newTextEditingCyclesElement() {
+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);
+		this.appendChild(textEditingCycles);
+		return textEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-duration}.
+	 *
+	 * @return the element {@odf.element text:editing-duration}
+	 */
+	public TextEditingDurationElement newTextEditingDurationElement() {
+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);
+		this.appendChild(textEditingDuration);
+		return textEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:execute-macro}.
+	 *
+	 * @return the element {@odf.element text:execute-macro}
+	 */
+	public TextExecuteMacroElement newTextExecuteMacroElement() {
+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);
+		this.appendChild(textExecuteMacro);
+		return textExecuteMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element text:expression}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element text:expression}
+	 */
+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {
+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);
+		textExpression.setOfficeValueAttribute(officeValueValue);
+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(textExpression);
+		return textExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element text:file-name}.
+	 *
+	 * @return the element {@odf.element text:file-name}
+	 */
+	public TextFileNameElement newTextFileNameElement() {
+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);
+		this.appendChild(textFileName);
+		return textFileName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-paragraph}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @return the element {@odf.element text:hidden-paragraph}
+	 */
+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {
+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);
+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);
+		this.appendChild(textHiddenParagraph);
+		return textHiddenParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:hidden-text}
+	 */
+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {
+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);
+		textHiddenText.setTextConditionAttribute(textConditionValue);
+		textHiddenText.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textHiddenText);
+		return textHiddenText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:image-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:image-count}
+	 */
+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {
+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);
+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textImageCount);
+		return textImageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:initial-creator}.
+	 *
+	 * @return the element {@odf.element text:initial-creator}
+	 */
+	public TextInitialCreatorElement newTextInitialCreatorElement() {
+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);
+		this.appendChild(textInitialCreator);
+		return textInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:keywords}.
+	 *
+	 * @return the element {@odf.element text:keywords}
+	 */
+	public TextKeywordsElement newTextKeywordsElement() {
+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);
+		this.appendChild(textKeywords);
+		return textKeywords;
+	}
+
+	/**
+	 * Create child element {@odf.element text:line-break}.
+	 *
+	 * @return the element {@odf.element text:line-break}
+	 */
+	public TextLineBreakElement newTextLineBreakElement() {
+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);
+		this.appendChild(textLineBreak);
+		return textLineBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:measure}.
+	 *
+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification
+	 * @return the element {@odf.element text:measure}
+	 */
+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {
+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);
+		textMeasure.setTextKindAttribute(textKindValue);
+		this.appendChild(textMeasure);
+		return textMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta}
+	 */
+	public TextMetaElement newTextMetaElement() {
+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);
+		this.appendChild(textMeta);
+		return textMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta-field}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta-field}
+	 */
+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {
+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);
+		textMetaField.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textMetaField);
+		return textMetaField;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-date}.
+	 *
+	 * @return the element {@odf.element text:modification-date}
+	 */
+	public TextModificationDateElement newTextModificationDateElement() {
+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);
+		this.appendChild(textModificationDate);
+		return textModificationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-time}.
+	 *
+	 * @return the element {@odf.element text:modification-time}
+	 */
+	public TextModificationTimeElement newTextModificationTimeElement() {
+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);
+		this.appendChild(textModificationTime);
+		return textModificationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note}
+	 */
+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {
+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);
+		textNote.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNote);
+		return textNote;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-ref}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note-ref}
+	 */
+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {
+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);
+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNoteRef);
+		return textNoteRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:object-count}
+	 */
+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {
+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);
+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textObjectCount);
+		return textObjectCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-continuation}.
+	 *
+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification
+	 * @return the element {@odf.element text:page-continuation}
+	 */
+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {
+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);
+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);
+		this.appendChild(textPageContinuation);
+		return textPageContinuation;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-count}
+	 */
+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {
+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);
+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageCount);
+		return textPageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-number}
+	 */
+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {
+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);
+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageNumber);
+		return textPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-get}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-variable-get}
+	 */
+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {
+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);
+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageVariableGet);
+		return textPageVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-set}.
+	 *
+	 * @return the element {@odf.element text:page-variable-set}
+	 */
+	public TextPageVariableSetElement newTextPageVariableSetElement() {
+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);
+		this.appendChild(textPageVariableSet);
+		return textPageVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:paragraph-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:paragraph-count}
+	 */
+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {
+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);
+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textParagraphCount);
+		return textParagraphCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:placeholder}.
+	 *
+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification
+	 * @return the element {@odf.element text:placeholder}
+	 */
+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {
+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);
+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);
+		this.appendChild(textPlaceholder);
+		return textPlaceholder;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-date}.
+	 *
+	 * @return the element {@odf.element text:print-date}
+	 */
+	public TextPrintDateElement newTextPrintDateElement() {
+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);
+		this.appendChild(textPrintDate);
+		return textPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-time}.
+	 *
+	 * @return the element {@odf.element text:print-time}
+	 */
+	public TextPrintTimeElement newTextPrintTimeElement() {
+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);
+		this.appendChild(textPrintTime);
+		return textPrintTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:printed-by}.
+	 *
+	 * @return the element {@odf.element text:printed-by}
+	 */
+	public TextPrintedByElement newTextPrintedByElement() {
+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);
+		this.appendChild(textPrintedBy);
+		return textPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark}
+	 */
+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {
+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);
+		textReferenceMark.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMark);
+		return textReferenceMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-end}
+	 */
+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {
+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);
+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkEnd);
+		return textReferenceMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-start}
+	 */
+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {
+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);
+		textReferenceMarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkStart);
+		return textReferenceMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-ref}.
+	 *
+	 * @return the element {@odf.element text:reference-ref}
+	 */
+	public TextReferenceRefElement newTextReferenceRefElement() {
+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);
+		this.appendChild(textReferenceRef);
+		return textReferenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby}.
+	 *
+	 * @return the element {@odf.element text:ruby}
+	 */
+	public TextRubyElement newTextRubyElement() {
+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);
+		this.appendChild(textRuby);
+		return textRuby;
+	}
+
+	/**
+	 * Create child element {@odf.element text:s}.
+	 *
+	 * @return the element {@odf.element text:s}
+	 */
+	public TextSElement newTextSElement() {
+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);
+		this.appendChild(textS);
+		return textS;
+	}
+
+	/**
+	 * Create child element {@odf.element text:script}.
+	 *
+	 * @return the element {@odf.element text:script}
+	 */
+	public TextScriptElement newTextScriptElement() {
+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);
+		this.appendChild(textScript);
+		return textScript;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-city}.
+	 *
+	 * @return the element {@odf.element text:sender-city}
+	 */
+	public TextSenderCityElement newTextSenderCityElement() {
+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);
+		this.appendChild(textSenderCity);
+		return textSenderCity;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-company}.
+	 *
+	 * @return the element {@odf.element text:sender-company}
+	 */
+	public TextSenderCompanyElement newTextSenderCompanyElement() {
+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);
+		this.appendChild(textSenderCompany);
+		return textSenderCompany;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-country}.
+	 *
+	 * @return the element {@odf.element text:sender-country}
+	 */
+	public TextSenderCountryElement newTextSenderCountryElement() {
+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);
+		this.appendChild(textSenderCountry);
+		return textSenderCountry;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-email}.
+	 *
+	 * @return the element {@odf.element text:sender-email}
+	 */
+	public TextSenderEmailElement newTextSenderEmailElement() {
+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);
+		this.appendChild(textSenderEmail);
+		return textSenderEmail;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-fax}.
+	 *
+	 * @return the element {@odf.element text:sender-fax}
+	 */
+	public TextSenderFaxElement newTextSenderFaxElement() {
+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);
+		this.appendChild(textSenderFax);
+		return textSenderFax;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-firstname}.
+	 *
+	 * @return the element {@odf.element text:sender-firstname}
+	 */
+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {
+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);
+		this.appendChild(textSenderFirstname);
+		return textSenderFirstname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-initials}.
+	 *
+	 * @return the element {@odf.element text:sender-initials}
+	 */
+	public TextSenderInitialsElement newTextSenderInitialsElement() {
+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);
+		this.appendChild(textSenderInitials);
+		return textSenderInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-lastname}.
+	 *
+	 * @return the element {@odf.element text:sender-lastname}
+	 */
+	public TextSenderLastnameElement newTextSenderLastnameElement() {
+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);
+		this.appendChild(textSenderLastname);
+		return textSenderLastname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-private}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-private}
+	 */
+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {
+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);
+		this.appendChild(textSenderPhonePrivate);
+		return textSenderPhonePrivate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-work}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-work}
+	 */
+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {
+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);
+		this.appendChild(textSenderPhoneWork);
+		return textSenderPhoneWork;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-position}.
+	 *
+	 * @return the element {@odf.element text:sender-position}
+	 */
+	public TextSenderPositionElement newTextSenderPositionElement() {
+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);
+		this.appendChild(textSenderPosition);
+		return textSenderPosition;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-postal-code}.
+	 *
+	 * @return the element {@odf.element text:sender-postal-code}
+	 */
+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {
+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);
+		this.appendChild(textSenderPostalCode);
+		return textSenderPostalCode;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-state-or-province}.
+	 *
+	 * @return the element {@odf.element text:sender-state-or-province}
+	 */
+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {
+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);
+		this.appendChild(textSenderStateOrProvince);
+		return textSenderStateOrProvince;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-street}.
+	 *
+	 * @return the element {@odf.element text:sender-street}
+	 */
+	public TextSenderStreetElement newTextSenderStreetElement() {
+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);
+		this.appendChild(textSenderStreet);
+		return textSenderStreet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-title}.
+	 *
+	 * @return the element {@odf.element text:sender-title}
+	 */
+	public TextSenderTitleElement newTextSenderTitleElement() {
+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);
+		this.appendChild(textSenderTitle);
+		return textSenderTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:sequence}
+	 */
+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {
+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);
+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);
+		textSequence.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequence);
+		return textSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-ref}.
+	 *
+	 * @return the element {@odf.element text:sequence-ref}
+	 */
+	public TextSequenceRefElement newTextSequenceRefElement() {
+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);
+		this.appendChild(textSequenceRef);
+		return textSequenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sheet-name}.
+	 *
+	 * @return the element {@odf.element text:sheet-name}
+	 */
+	public TextSheetNameElement newTextSheetNameElement() {
+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);
+		this.appendChild(textSheetName);
+		return textSheetName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:span}.
+	 *
+	 * @return the element {@odf.element text:span}
+	 */
+	public TextSpanElement newTextSpanElement() {
+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);
+		this.appendChild(textSpan);
+		return textSpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:subject}.
+	 *
+	 * @return the element {@odf.element text:subject}
+	 */
+	public TextSubjectElement newTextSubjectElement() {
+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);
+		this.appendChild(textSubject);
+		return textSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tab}.
+	 *
+	 * @return the element {@odf.element text:tab}
+	 */
+	public TextTabElement newTextTabElement() {
+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);
+		this.appendChild(textTab);
+		return textTab;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:table-count}
+	 */
+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {
+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);
+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textTableCount);
+		return textTableCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-formula}.
+	 *
+	 * @return the element {@odf.element text:table-formula}
+	 */
+	public TextTableFormulaElement newTextTableFormulaElement() {
+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);
+		this.appendChild(textTableFormula);
+		return textTableFormula;
+	}
+
+	/**
+	 * Create child element {@odf.element text:template-name}.
+	 *
+	 * @return the element {@odf.element text:template-name}
+	 */
+	public TextTemplateNameElement newTextTemplateNameElement() {
+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);
+		this.appendChild(textTemplateName);
+		return textTemplateName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:text-input}.
+	 *
+	 * @return the element {@odf.element text:text-input}
+	 */
+	public TextTextInputElement newTextTextInputElement() {
+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);
+		this.appendChild(textTextInput);
+		return textTextInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:time}.
+	 *
+	 * @return the element {@odf.element text:time}
+	 */
+	public TextTimeElement newTextTimeElement() {
+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);
+		this.appendChild(textTime);
+		return textTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:title}.
+	 *
+	 * @return the element {@odf.element text:title}
+	 */
+	public TextTitleElement newTextTitleElement() {
+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);
+		this.appendChild(textTitle);
+		return textTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:toc-mark}
+	 */
+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {
+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);
+		textTocMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textTocMark);
+		return textTocMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-end}
+	 */
+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {
+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);
+		textTocMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkEnd);
+		return textTocMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-start}
+	 */
+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {
+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);
+		textTocMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkStart);
+		return textTocMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-defined}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-defined}
+	 */
+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {
+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);
+		textUserDefined.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserDefined);
+		return textUserDefined;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-get}
+	 */
+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {
+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);
+		textUserFieldGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldGet);
+		return textUserFieldGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-input}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-input}
+	 */
+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {
+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);
+		textUserFieldInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldInput);
+		return textUserFieldInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:user-index-mark}
+	 */
+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {
+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);
+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);
+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textUserIndexMark);
+		return textUserIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:user-index-mark-end}
+	 */
+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {
+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);
+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textUserIndexMarkEnd);
+		return textUserIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @return the element {@odf.element text:user-index-mark-start}
+	 */
+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {
+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);
+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);
+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexMarkStart);
+		return textUserIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-get}
+	 */
+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {
+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);
+		textVariableGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableGet);
+		return textVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-input}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-input}
+	 */
+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);
+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableInput);
+		return textVariableInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-set}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-set}
+	 */
+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);
+		textVariableSet.setOfficeValueAttribute(officeValueValue);
+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableSet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableSet);
+		return textVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:word-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:word-count}
+	 */
+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {
+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);
+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textWordCount);
+		return textWordCount;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyElement.java
new file mode 100644
index 0000000..522f14a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyElement.java
@@ -0,0 +1,124 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:ruby}.
+ *
+ */
+public class TextRubyElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "ruby");
+
+	/**
+	 * Create the instance of <code>TextRubyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextRubyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Ruby, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:ruby}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby-base}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:ruby-base}
+	 */
+	public TextRubyBaseElement newTextRubyBaseElement() {
+		TextRubyBaseElement textRubyBase = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyBaseElement.class);
+		this.appendChild(textRubyBase);
+		return textRubyBase;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby-text}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:ruby-text}
+	 */
+	public TextRubyTextElement newTextRubyTextElement() {
+		TextRubyTextElement textRubyText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyTextElement.class);
+		this.appendChild(textRubyText);
+		return textRubyText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyTextElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyTextElement.java
new file mode 100644
index 0000000..8ffdcac
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextRubyTextElement.java
@@ -0,0 +1,106 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:ruby-text}.
+ *
+ */
+public class TextRubyTextElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "ruby-text");
+
+	/**
+	 * Create the instance of <code>TextRubyTextElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextRubyTextElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Ruby, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:ruby-text}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSElement.java
new file mode 100644
index 0000000..ee42d92
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:s}.
+ *
+ */
+public class TextSElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "s");
+
+	/**
+	 * Create the instance of <code>TextSElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:s}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCAttribute</code> , See {@odf.attribute text:c}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextCAttribute() {
+		TextCAttribute attr = (TextCAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "c");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCAttribute</code> , See {@odf.attribute text:c}
+	 *
+	 * @param textCValue   The type is <code>Integer</code>
+	 */
+	public void setTextCAttribute(Integer textCValue) {
+		TextCAttribute attr = new TextCAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textCValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextScriptElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextScriptElement.java
new file mode 100644
index 0000000..c727097
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextScriptElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.script.ScriptLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:script}.
+ *
+ */
+public class TextScriptElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "script");
+
+	/**
+	 * Create the instance of <code>TextScriptElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextScriptElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:script}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>ScriptLanguageAttribute</code> , See {@odf.attribute script:language}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getScriptLanguageAttribute() {
+		ScriptLanguageAttribute attr = (ScriptLanguageAttribute) getOdfAttribute(OdfDocumentNamespace.SCRIPT, "language");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>ScriptLanguageAttribute</code> , See {@odf.attribute script:language}
+	 *
+	 * @param scriptLanguageValue   The type is <code>String</code>
+	 */
+	public void setScriptLanguageAttribute(String scriptLanguageValue) {
+		ScriptLanguageAttribute attr = new ScriptLanguageAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(scriptLanguageValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSectionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSectionElement.java
new file mode 100644
index 0000000..f7343ee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSectionElement.java
@@ -0,0 +1,778 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDdeSourceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextConditionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:section}.
+ *
+ */
+public class TextSectionElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "section");
+
+	/**
+	 * Create the instance of <code>TextSectionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSectionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:section}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextConditionAttribute() {
+		TextConditionAttribute attr = (TextConditionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "condition");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextConditionAttribute</code> , See {@odf.attribute text:condition}
+	 *
+	 * @param textConditionValue   The type is <code>String</code>
+	 */
+	public void setTextConditionAttribute(String textConditionValue) {
+		TextConditionAttribute attr = new TextConditionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textConditionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:dde-source}.
+	 *
+	 * @param officeDdeApplicationValue  the <code>String</code> value of <code>OfficeDdeApplicationAttribute</code>, see {@odf.attribute  office:dde-application} at specification
+	 * @param officeDdeItemValue  the <code>String</code> value of <code>OfficeDdeItemAttribute</code>, see {@odf.attribute  office:dde-item} at specification
+	 * @param officeDdeTopicValue  the <code>String</code> value of <code>OfficeDdeTopicAttribute</code>, see {@odf.attribute  office:dde-topic} at specification
+	 * @return the element {@odf.element office:dde-source}
+	 */
+	 public OfficeDdeSourceElement newOfficeDdeSourceElement(String officeDdeApplicationValue, String officeDdeItemValue, String officeDdeTopicValue) {
+		OfficeDdeSourceElement officeDdeSource = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeDdeSourceElement.class);
+		officeDdeSource.setOfficeDdeApplicationAttribute(officeDdeApplicationValue);
+		officeDdeSource.setOfficeDdeItemAttribute(officeDdeItemValue);
+		officeDdeSource.setOfficeDdeTopicAttribute(officeDdeTopicValue);
+		this.appendChild(officeDdeSource);
+		return officeDdeSource;
+	}
+
+	/**
+	 * Create child element {@odf.element table:table}.
+	 *
+	 * @return the element {@odf.element table:table}
+	 */
+	public TableTableElement newTableTableElement() {
+		TableTableElement tableTable = ((OdfFileDom) this.ownerDocument).newOdfElement(TableTableElement.class);
+		this.appendChild(tableTable);
+		return tableTable;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:alphabetical-index}
+	 */
+	 public TextAlphabeticalIndexElement newTextAlphabeticalIndexElement(String textNameValue) {
+		TextAlphabeticalIndexElement textAlphabeticalIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexElement.class);
+		textAlphabeticalIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textAlphabeticalIndex);
+		return textAlphabeticalIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bibliography}
+	 */
+	 public TextBibliographyElement newTextBibliographyElement(String textNameValue) {
+		TextBibliographyElement textBibliography = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyElement.class);
+		textBibliography.setTextNameAttribute(textNameValue);
+		this.appendChild(textBibliography);
+		return textBibliography;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:h}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:h}
+	 */
+	 public TextHElement newTextHElement(int textOutlineLevelValue) {
+		TextHElement textH = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHElement.class);
+		textH.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textH);
+		return textH;
+	}
+
+	/**
+	 * Create child element {@odf.element text:illustration-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:illustration-index}
+	 */
+	 public TextIllustrationIndexElement newTextIllustrationIndexElement(String textNameValue) {
+		TextIllustrationIndexElement textIllustrationIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIllustrationIndexElement.class);
+		textIllustrationIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textIllustrationIndex);
+		return textIllustrationIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:list}.
+	 *
+	 * @return the element {@odf.element text:list}
+	 */
+	public TextListElement newTextListElement() {
+		TextListElement textList = ((OdfFileDom) this.ownerDocument).newOdfElement(TextListElement.class);
+		this.appendChild(textList);
+		return textList;
+	}
+
+	/**
+	 * Create child element {@odf.element text:numbered-paragraph}.
+	 *
+	 * @param textListIdValue  the <code>String</code> value of <code>TextListIdAttribute</code>, see {@odf.attribute  text:list-id} at specification
+	 * @return the element {@odf.element text:numbered-paragraph}
+	 */
+	 public TextNumberedParagraphElement newTextNumberedParagraphElement(String textListIdValue) {
+		TextNumberedParagraphElement textNumberedParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNumberedParagraphElement.class);
+		textNumberedParagraph.setTextListIdAttribute(textListIdValue);
+		this.appendChild(textNumberedParagraph);
+		return textNumberedParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:object-index}
+	 */
+	 public TextObjectIndexElement newTextObjectIndexElement(String textNameValue) {
+		TextObjectIndexElement textObjectIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectIndexElement.class);
+		textObjectIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textObjectIndex);
+		return textObjectIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:p}.
+	 *
+	 * @return the element {@odf.element text:p}
+	 */
+	public TextPElement newTextPElement() {
+		TextPElement textP = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPElement.class);
+		this.appendChild(textP);
+		return textP;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:section}
+	 */
+	 public TextSectionElement newTextSectionElement(String textDisplayValue, String textNameValue) {
+		TextSectionElement textSection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionElement.class);
+		textSection.setTextDisplayAttribute(textDisplayValue);
+		textSection.setTextNameAttribute(textNameValue);
+		this.appendChild(textSection);
+		return textSection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:section-source}.
+	 *
+	 * @return the element {@odf.element text:section-source}
+	 */
+	public TextSectionSourceElement newTextSectionSourceElement() {
+		TextSectionSourceElement textSectionSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSectionSourceElement.class);
+		this.appendChild(textSectionSource);
+		return textSectionSource;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-index}
+	 */
+	 public TextTableIndexElement newTextTableIndexElement(String textNameValue) {
+		TextTableIndexElement textTableIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexElement.class);
+		textTableIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableIndex);
+		return textTableIndex;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:table-of-content}
+	 */
+	 public TextTableOfContentElement newTextTableOfContentElement(String textNameValue) {
+		TextTableOfContentElement textTableOfContent = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentElement.class);
+		textTableOfContent.setTextNameAttribute(textNameValue);
+		this.appendChild(textTableOfContent);
+		return textTableOfContent;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-index}
+	 */
+	 public TextUserIndexElement newTextUserIndexElement(String textNameValue) {
+		TextUserIndexElement textUserIndex = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexElement.class);
+		textUserIndex.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserIndex);
+		return textUserIndex;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSectionSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSectionSourceElement.java
new file mode 100644
index 0000000..f137012
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSectionSourceElement.java
@@ -0,0 +1,196 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFilterNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSectionNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkHrefAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkShowAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xlink.XlinkTypeAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:section-source}.
+ *
+ */
+public class TextSectionSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "section-source");
+
+	/**
+	 * Create the instance of <code>TextSectionSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSectionSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:section-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFilterNameAttribute</code> , See {@odf.attribute text:filter-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFilterNameAttribute() {
+		TextFilterNameAttribute attr = (TextFilterNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "filter-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFilterNameAttribute</code> , See {@odf.attribute text:filter-name}
+	 *
+	 * @param textFilterNameValue   The type is <code>String</code>
+	 */
+	public void setTextFilterNameAttribute(String textFilterNameValue) {
+		TextFilterNameAttribute attr = new TextFilterNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFilterNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSectionNameAttribute</code> , See {@odf.attribute text:section-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSectionNameAttribute() {
+		TextSectionNameAttribute attr = (TextSectionNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "section-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSectionNameAttribute</code> , See {@odf.attribute text:section-name}
+	 *
+	 * @param textSectionNameValue   The type is <code>String</code>
+	 */
+	public void setTextSectionNameAttribute(String textSectionNameValue) {
+		TextSectionNameAttribute attr = new TextSectionNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSectionNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkHrefAttribute() {
+		XlinkHrefAttribute attr = (XlinkHrefAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "href");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkHrefAttribute</code> , See {@odf.attribute xlink:href}
+	 *
+	 * @param xlinkHrefValue   The type is <code>String</code>
+	 */
+	public void setXlinkHrefAttribute(String xlinkHrefValue) {
+		XlinkHrefAttribute attr = new XlinkHrefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkHrefValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkShowAttribute() {
+		XlinkShowAttribute attr = (XlinkShowAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "show");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkShowAttribute.DEFAULT_VALUE_EMBED;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkShowAttribute</code> , See {@odf.attribute xlink:show}
+	 *
+	 * @param xlinkShowValue   The type is <code>String</code>
+	 */
+	public void setXlinkShowAttribute(String xlinkShowValue) {
+		XlinkShowAttribute attr = new XlinkShowAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkShowValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXlinkTypeAttribute() {
+		XlinkTypeAttribute attr = (XlinkTypeAttribute) getOdfAttribute(OdfDocumentNamespace.XLINK, "type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return XlinkTypeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XlinkTypeAttribute</code> , See {@odf.attribute xlink:type}
+	 *
+	 * @param xlinkTypeValue   The type is <code>String</code>
+	 */
+	public void setXlinkTypeAttribute(String xlinkTypeValue) {
+		XlinkTypeAttribute attr = new XlinkTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xlinkTypeValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCityElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCityElement.java
new file mode 100644
index 0000000..27376aa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCityElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-city}.
+ *
+ */
+public class TextSenderCityElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-city");
+
+	/**
+	 * Create the instance of <code>TextSenderCityElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderCityElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-city}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCompanyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCompanyElement.java
new file mode 100644
index 0000000..71dcecf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCompanyElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-company}.
+ *
+ */
+public class TextSenderCompanyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-company");
+
+	/**
+	 * Create the instance of <code>TextSenderCompanyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderCompanyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-company}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCountryElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCountryElement.java
new file mode 100644
index 0000000..1bae595
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderCountryElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-country}.
+ *
+ */
+public class TextSenderCountryElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-country");
+
+	/**
+	 * Create the instance of <code>TextSenderCountryElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderCountryElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-country}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderEmailElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderEmailElement.java
new file mode 100644
index 0000000..f55b30d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderEmailElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-email}.
+ *
+ */
+public class TextSenderEmailElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-email");
+
+	/**
+	 * Create the instance of <code>TextSenderEmailElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderEmailElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-email}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderFaxElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderFaxElement.java
new file mode 100644
index 0000000..5811a7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderFaxElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-fax}.
+ *
+ */
+public class TextSenderFaxElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-fax");
+
+	/**
+	 * Create the instance of <code>TextSenderFaxElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderFaxElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-fax}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderFirstnameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderFirstnameElement.java
new file mode 100644
index 0000000..e320459
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderFirstnameElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-firstname}.
+ *
+ */
+public class TextSenderFirstnameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-firstname");
+
+	/**
+	 * Create the instance of <code>TextSenderFirstnameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderFirstnameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-firstname}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderInitialsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderInitialsElement.java
new file mode 100644
index 0000000..0debda1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderInitialsElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-initials}.
+ *
+ */
+public class TextSenderInitialsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-initials");
+
+	/**
+	 * Create the instance of <code>TextSenderInitialsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderInitialsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-initials}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderLastnameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderLastnameElement.java
new file mode 100644
index 0000000..1ba3e2d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderLastnameElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-lastname}.
+ *
+ */
+public class TextSenderLastnameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-lastname");
+
+	/**
+	 * Create the instance of <code>TextSenderLastnameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderLastnameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-lastname}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPhonePrivateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPhonePrivateElement.java
new file mode 100644
index 0000000..7c70b7b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPhonePrivateElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-phone-private}.
+ *
+ */
+public class TextSenderPhonePrivateElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-phone-private");
+
+	/**
+	 * Create the instance of <code>TextSenderPhonePrivateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderPhonePrivateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-phone-private}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPhoneWorkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPhoneWorkElement.java
new file mode 100644
index 0000000..b2f32dd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPhoneWorkElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-phone-work}.
+ *
+ */
+public class TextSenderPhoneWorkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-phone-work");
+
+	/**
+	 * Create the instance of <code>TextSenderPhoneWorkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderPhoneWorkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-phone-work}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPositionElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPositionElement.java
new file mode 100644
index 0000000..edf76e6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPositionElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-position}.
+ *
+ */
+public class TextSenderPositionElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-position");
+
+	/**
+	 * Create the instance of <code>TextSenderPositionElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderPositionElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-position}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPostalCodeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPostalCodeElement.java
new file mode 100644
index 0000000..7ed1a68
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderPostalCodeElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-postal-code}.
+ *
+ */
+public class TextSenderPostalCodeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-postal-code");
+
+	/**
+	 * Create the instance of <code>TextSenderPostalCodeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderPostalCodeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-postal-code}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderStateOrProvinceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderStateOrProvinceElement.java
new file mode 100644
index 0000000..82ff37e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderStateOrProvinceElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-state-or-province}.
+ *
+ */
+public class TextSenderStateOrProvinceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-state-or-province");
+
+	/**
+	 * Create the instance of <code>TextSenderStateOrProvinceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderStateOrProvinceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-state-or-province}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderStreetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderStreetElement.java
new file mode 100644
index 0000000..11d6826
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderStreetElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-street}.
+ *
+ */
+public class TextSenderStreetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-street");
+
+	/**
+	 * Create the instance of <code>TextSenderStreetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderStreetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-street}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderTitleElement.java
new file mode 100644
index 0000000..0c549e2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSenderTitleElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sender-title}.
+ *
+ */
+public class TextSenderTitleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sender-title");
+
+	/**
+	 * Create the instance of <code>TextSenderTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSenderTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sender-title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceDeclElement.java
new file mode 100644
index 0000000..8e1b26b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceDeclElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSeparationCharacterAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sequence-decl}.
+ *
+ */
+public class TextSequenceDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sequence-decl");
+
+	/**
+	 * Create the instance of <code>TextSequenceDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSequenceDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sequence-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayOutlineLevelAttribute</code> , See {@odf.attribute text:display-outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextDisplayOutlineLevelAttribute() {
+		TextDisplayOutlineLevelAttribute attr = (TextDisplayOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display-outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayOutlineLevelAttribute</code> , See {@odf.attribute text:display-outline-level}
+	 *
+	 * @param textDisplayOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextDisplayOutlineLevelAttribute(Integer textDisplayOutlineLevelValue) {
+		TextDisplayOutlineLevelAttribute attr = new TextDisplayOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textDisplayOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSeparationCharacterAttribute</code> , See {@odf.attribute text:separation-character}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextSeparationCharacterAttribute() {
+		TextSeparationCharacterAttribute attr = (TextSeparationCharacterAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "separation-character");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSeparationCharacterAttribute</code> , See {@odf.attribute text:separation-character}
+	 *
+	 * @param textSeparationCharacterValue   The type is <code>String</code>
+	 */
+	public void setTextSeparationCharacterAttribute(String textSeparationCharacterValue) {
+		TextSeparationCharacterAttribute attr = new TextSeparationCharacterAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textSeparationCharacterValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceDeclsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceDeclsElement.java
new file mode 100644
index 0000000..bfff366
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceDeclsElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sequence-decls}.
+ *
+ */
+public class TextSequenceDeclsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sequence-decls");
+
+	/**
+	 * Create the instance of <code>TextSequenceDeclsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSequenceDeclsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sequence-decls}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-decl}.
+	 *
+	 * @param textDisplayOutlineLevelValue  the <code>Integer</code> value of <code>TextDisplayOutlineLevelAttribute</code>, see {@odf.attribute  text:display-outline-level} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:sequence-decl}
+	 */
+	 public TextSequenceDeclElement newTextSequenceDeclElement(int textDisplayOutlineLevelValue, String textNameValue) {
+		TextSequenceDeclElement textSequenceDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceDeclElement.class);
+		textSequenceDecl.setTextDisplayOutlineLevelAttribute(textDisplayOutlineLevelValue);
+		textSequenceDecl.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequenceDecl);
+		return textSequenceDecl;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceElement.java
new file mode 100644
index 0000000..19b1426
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceElement.java
@@ -0,0 +1,208 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRefNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sequence}.
+ *
+ */
+public class TextSequenceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sequence");
+
+	/**
+	 * Create the instance of <code>TextSequenceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSequenceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sequence}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFormulaAttribute() {
+		TextFormulaAttribute attr = (TextFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @param textFormulaValue   The type is <code>String</code>
+	 */
+	public void setTextFormulaAttribute(String textFormulaValue) {
+		TextFormulaAttribute attr = new TextFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextRefNameAttribute() {
+		TextRefNameAttribute attr = (TextRefNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "ref-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @param textRefNameValue   The type is <code>String</code>
+	 */
+	public void setTextRefNameAttribute(String textRefNameValue) {
+		TextRefNameAttribute attr = new TextRefNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textRefNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceRefElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceRefElement.java
new file mode 100644
index 0000000..efbcb17
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSequenceRefElement.java
@@ -0,0 +1,129 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRefNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextReferenceFormatAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sequence-ref}.
+ *
+ */
+public class TextSequenceRefElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sequence-ref");
+
+	/**
+	 * Create the instance of <code>TextSequenceRefElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSequenceRefElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sequence-ref}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextRefNameAttribute() {
+		TextRefNameAttribute attr = (TextRefNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "ref-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRefNameAttribute</code> , See {@odf.attribute text:ref-name}
+	 *
+	 * @param textRefNameValue   The type is <code>String</code>
+	 */
+	public void setTextRefNameAttribute(String textRefNameValue) {
+		TextRefNameAttribute attr = new TextRefNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textRefNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextReferenceFormatAttribute() {
+		TextReferenceFormatAttribute attr = (TextReferenceFormatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "reference-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextReferenceFormatAttribute</code> , See {@odf.attribute text:reference-format}
+	 *
+	 * @param textReferenceFormatValue   The type is <code>String</code>
+	 */
+	public void setTextReferenceFormatAttribute(String textReferenceFormatValue) {
+		TextReferenceFormatAttribute attr = new TextReferenceFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textReferenceFormatValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSheetNameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSheetNameElement.java
new file mode 100644
index 0000000..75c9365
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSheetNameElement.java
@@ -0,0 +1,79 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sheet-name}.
+ *
+ */
+public class TextSheetNameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sheet-name");
+
+	/**
+	 * Create the instance of <code>TextSheetNameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSheetNameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sheet-name}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSoftPageBreakElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSoftPageBreakElement.java
new file mode 100644
index 0000000..56feefb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSoftPageBreakElement.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:soft-page-break}.
+ *
+ */
+public class TextSoftPageBreakElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "soft-page-break");
+
+	/**
+	 * Create the instance of <code>TextSoftPageBreakElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSoftPageBreakElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:soft-page-break}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSortKeyElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSortKeyElement.java
new file mode 100644
index 0000000..8bef7f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSortKeyElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextSortAscendingAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:sort-key}.
+ *
+ */
+public class TextSortKeyElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "sort-key");
+
+	/**
+	 * Create the instance of <code>TextSortKeyElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSortKeyElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:sort-key}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextKeyAttribute</code> , See {@odf.attribute text:key}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextKeyAttribute() {
+		TextKeyAttribute attr = (TextKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextKeyAttribute</code> , See {@odf.attribute text:key}
+	 *
+	 * @param textKeyValue   The type is <code>String</code>
+	 */
+	public void setTextKeyAttribute(String textKeyValue) {
+		TextKeyAttribute attr = new TextKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextSortAscendingAttribute</code> , See {@odf.attribute text:sort-ascending}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextSortAscendingAttribute() {
+		TextSortAscendingAttribute attr = (TextSortAscendingAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "sort-ascending");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextSortAscendingAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextSortAscendingAttribute</code> , See {@odf.attribute text:sort-ascending}
+	 *
+	 * @param textSortAscendingValue   The type is <code>Boolean</code>
+	 */
+	public void setTextSortAscendingAttribute(Boolean textSortAscendingValue) {
+		TextSortAscendingAttribute attr = new TextSortAscendingAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textSortAscendingValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSpanElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSpanElement.java
new file mode 100644
index 0000000..c59766b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSpanElement.java
@@ -0,0 +1,1744 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dSceneElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCaptionElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCircleElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawConnectorElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawCustomShapeElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawEllipseElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMeasureElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPathElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolygonElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPolylineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawRegularPolygonElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationEndElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationDateTimeElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationFooterElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationHeaderElement;
+import org.odftoolkit.odfdom.dom.attribute.text.TextClassNamesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:span}.
+ *
+ */
+public class TextSpanElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "span");
+
+	/**
+	 * Create the instance of <code>TextSpanElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSpanElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Text, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:span}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextClassNamesAttribute</code> , See {@odf.attribute text:class-names}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextClassNamesAttribute() {
+		TextClassNamesAttribute attr = (TextClassNamesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "class-names");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextClassNamesAttribute</code> , See {@odf.attribute text:class-names}
+	 *
+	 * @param textClassNamesValue   The type is <code>String</code>
+	 */
+	public void setTextClassNamesAttribute(String textClassNamesValue) {
+		TextClassNamesAttribute attr = new TextClassNamesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textClassNamesValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element dr3d:scene}.
+	 *
+	 * @return the element {@odf.element dr3d:scene}
+	 */
+	public Dr3dSceneElement newDr3dSceneElement() {
+		Dr3dSceneElement dr3dScene = ((OdfFileDom) this.ownerDocument).newOdfElement(Dr3dSceneElement.class);
+		this.appendChild(dr3dScene);
+		return dr3dScene;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element draw:a}
+	 */
+	 public DrawAElement newDrawAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		DrawAElement drawA = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawAElement.class);
+		drawA.setXlinkHrefAttribute(xlinkHrefValue);
+		drawA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(drawA);
+		return drawA;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:caption}.
+	 *
+	 * @return the element {@odf.element draw:caption}
+	 */
+	public DrawCaptionElement newDrawCaptionElement() {
+		DrawCaptionElement drawCaption = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCaptionElement.class);
+		this.appendChild(drawCaption);
+		return drawCaption;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:circle}.
+	 *
+	 * @return the element {@odf.element draw:circle}
+	 */
+	public DrawCircleElement newDrawCircleElement() {
+		DrawCircleElement drawCircle = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCircleElement.class);
+		this.appendChild(drawCircle);
+		return drawCircle;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:connector}.
+	 *
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:connector}
+	 */
+	 public DrawConnectorElement newDrawConnectorElement(int svgViewBoxValue) {
+		DrawConnectorElement drawConnector = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawConnectorElement.class);
+		drawConnector.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawConnector);
+		return drawConnector;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:control}.
+	 *
+	 * @param drawControlValue  the <code>String</code> value of <code>DrawControlAttribute</code>, see {@odf.attribute  draw:control} at specification
+	 * @return the element {@odf.element draw:control}
+	 */
+	 public DrawControlElement newDrawControlElement(String drawControlValue) {
+		DrawControlElement drawControl = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawControlElement.class);
+		drawControl.setDrawControlAttribute(drawControlValue);
+		this.appendChild(drawControl);
+		return drawControl;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:custom-shape}.
+	 *
+	 * @return the element {@odf.element draw:custom-shape}
+	 */
+	public DrawCustomShapeElement newDrawCustomShapeElement() {
+		DrawCustomShapeElement drawCustomShape = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawCustomShapeElement.class);
+		this.appendChild(drawCustomShape);
+		return drawCustomShape;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:ellipse}.
+	 *
+	 * @return the element {@odf.element draw:ellipse}
+	 */
+	public DrawEllipseElement newDrawEllipseElement() {
+		DrawEllipseElement drawEllipse = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawEllipseElement.class);
+		this.appendChild(drawEllipse);
+		return drawEllipse;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:frame}.
+	 *
+	 * @return the element {@odf.element draw:frame}
+	 */
+	public DrawFrameElement newDrawFrameElement() {
+		DrawFrameElement drawFrame = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawFrameElement.class);
+		this.appendChild(drawFrame);
+		return drawFrame;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:g}.
+	 *
+	 * @return the element {@odf.element draw:g}
+	 */
+	public DrawGElement newDrawGElement() {
+		DrawGElement drawG = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawGElement.class);
+		this.appendChild(drawG);
+		return drawG;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:line}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:line}
+	 */
+	 public DrawLineElement newDrawLineElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawLineElement drawLine = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawLineElement.class);
+		drawLine.setSvgX1Attribute(svgX1Value);
+		drawLine.setSvgX2Attribute(svgX2Value);
+		drawLine.setSvgY1Attribute(svgY1Value);
+		drawLine.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawLine);
+		return drawLine;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:measure}.
+	 *
+	 * @param svgX1Value  the <code>String</code> value of <code>SvgX1Attribute</code>, see {@odf.attribute  svg:x1} at specification
+	 * @param svgX2Value  the <code>String</code> value of <code>SvgX2Attribute</code>, see {@odf.attribute  svg:x2} at specification
+	 * @param svgY1Value  the <code>String</code> value of <code>SvgY1Attribute</code>, see {@odf.attribute  svg:y1} at specification
+	 * @param svgY2Value  the <code>String</code> value of <code>SvgY2Attribute</code>, see {@odf.attribute  svg:y2} at specification
+	 * @return the element {@odf.element draw:measure}
+	 */
+	 public DrawMeasureElement newDrawMeasureElement(String svgX1Value, String svgX2Value, String svgY1Value, String svgY2Value) {
+		DrawMeasureElement drawMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawMeasureElement.class);
+		drawMeasure.setSvgX1Attribute(svgX1Value);
+		drawMeasure.setSvgX2Attribute(svgX2Value);
+		drawMeasure.setSvgY1Attribute(svgY1Value);
+		drawMeasure.setSvgY2Attribute(svgY2Value);
+		this.appendChild(drawMeasure);
+		return drawMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:page-thumbnail}.
+	 *
+	 * @return the element {@odf.element draw:page-thumbnail}
+	 */
+	public DrawPageThumbnailElement newDrawPageThumbnailElement() {
+		DrawPageThumbnailElement drawPageThumbnail = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPageThumbnailElement.class);
+		this.appendChild(drawPageThumbnail);
+		return drawPageThumbnail;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:path}.
+	 *
+	 * @param svgDValue  the <code>String</code> value of <code>SvgDAttribute</code>, see {@odf.attribute  svg:d} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:path}
+	 */
+	 public DrawPathElement newDrawPathElement(String svgDValue, int svgViewBoxValue) {
+		DrawPathElement drawPath = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPathElement.class);
+		drawPath.setSvgDAttribute(svgDValue);
+		drawPath.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPath);
+		return drawPath;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polygon}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polygon}
+	 */
+	 public DrawPolygonElement newDrawPolygonElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolygonElement drawPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolygonElement.class);
+		drawPolygon.setDrawPointsAttribute(drawPointsValue);
+		drawPolygon.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolygon);
+		return drawPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:polyline}.
+	 *
+	 * @param drawPointsValue  the <code>String</code> value of <code>DrawPointsAttribute</code>, see {@odf.attribute  draw:points} at specification
+	 * @param svgViewBoxValue  the <code>Integer</code> value of <code>SvgViewBoxAttribute</code>, see {@odf.attribute  svg:viewBox} at specification
+	 * @return the element {@odf.element draw:polyline}
+	 */
+	 public DrawPolylineElement newDrawPolylineElement(String drawPointsValue, int svgViewBoxValue) {
+		DrawPolylineElement drawPolyline = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawPolylineElement.class);
+		drawPolyline.setDrawPointsAttribute(drawPointsValue);
+		drawPolyline.setSvgViewBoxAttribute(svgViewBoxValue);
+		this.appendChild(drawPolyline);
+		return drawPolyline;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:rect}.
+	 *
+	 * @return the element {@odf.element draw:rect}
+	 */
+	public DrawRectElement newDrawRectElement() {
+		DrawRectElement drawRect = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRectElement.class);
+		this.appendChild(drawRect);
+		return drawRect;
+	}
+
+	/**
+	 * Create child element {@odf.element draw:regular-polygon}.
+	 *
+	 * @param drawConcaveValue  the <code>Boolean</code> value of <code>DrawConcaveAttribute</code>, see {@odf.attribute  draw:concave} at specification
+	 * @param drawCornersValue  the <code>Integer</code> value of <code>DrawCornersAttribute</code>, see {@odf.attribute  draw:corners} at specification
+	 * @return the element {@odf.element draw:regular-polygon}
+	 */
+	 public DrawRegularPolygonElement newDrawRegularPolygonElement(boolean drawConcaveValue, int drawCornersValue) {
+		DrawRegularPolygonElement drawRegularPolygon = ((OdfFileDom) this.ownerDocument).newOdfElement(DrawRegularPolygonElement.class);
+		drawRegularPolygon.setDrawConcaveAttribute(drawConcaveValue);
+		drawRegularPolygon.setDrawCornersAttribute(drawCornersValue);
+		this.appendChild(drawRegularPolygon);
+		return drawRegularPolygon;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation}.
+	 *
+	 * @return the element {@odf.element office:annotation}
+	 */
+	public OfficeAnnotationElement newOfficeAnnotationElement() {
+		OfficeAnnotationElement officeAnnotation = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationElement.class);
+		this.appendChild(officeAnnotation);
+		return officeAnnotation;
+	}
+
+	/**
+	 * Create child element {@odf.element office:annotation-end}.
+	 *
+	 * @param officeNameValue  the <code>String</code> value of <code>OfficeNameAttribute</code>, see {@odf.attribute  office:name} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element office:annotation-end}
+	 */
+	 public OfficeAnnotationEndElement newOfficeAnnotationEndElement(String officeNameValue) {
+		OfficeAnnotationEndElement officeAnnotationEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(OfficeAnnotationEndElement.class);
+		officeAnnotationEnd.setOfficeNameAttribute(officeNameValue);
+		this.appendChild(officeAnnotationEnd);
+		return officeAnnotationEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:date-time}.
+	 *
+	 * @return the element {@odf.element presentation:date-time}
+	 */
+	public PresentationDateTimeElement newPresentationDateTimeElement() {
+		PresentationDateTimeElement presentationDateTime = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationDateTimeElement.class);
+		this.appendChild(presentationDateTime);
+		return presentationDateTime;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:footer}.
+	 *
+	 * @return the element {@odf.element presentation:footer}
+	 */
+	public PresentationFooterElement newPresentationFooterElement() {
+		PresentationFooterElement presentationFooter = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationFooterElement.class);
+		this.appendChild(presentationFooter);
+		return presentationFooter;
+	}
+
+	/**
+	 * Create child element {@odf.element presentation:header}.
+	 *
+	 * @return the element {@odf.element presentation:header}
+	 */
+	public PresentationHeaderElement newPresentationHeaderElement() {
+		PresentationHeaderElement presentationHeader = ((OdfFileDom) this.ownerDocument).newOdfElement(PresentationHeaderElement.class);
+		this.appendChild(presentationHeader);
+		return presentationHeader;
+	}
+
+	/**
+	 * Create child element {@odf.element text:a}.
+	 *
+	 * @param xlinkHrefValue  the <code>String</code> value of <code>XlinkHrefAttribute</code>, see {@odf.attribute  xlink:href} at specification
+	 * @param xlinkTypeValue  the <code>String</code> value of <code>XlinkTypeAttribute</code>, see {@odf.attribute  xlink:type} at specification
+	 * @return the element {@odf.element text:a}
+	 */
+	 public TextAElement newTextAElement(String xlinkHrefValue, String xlinkTypeValue) {
+		TextAElement textA = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAElement.class);
+		textA.setXlinkHrefAttribute(xlinkHrefValue);
+		textA.setXlinkTypeAttribute(xlinkTypeValue);
+		this.appendChild(textA);
+		return textA;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark}
+	 */
+	 public TextAlphabeticalIndexMarkElement newTextAlphabeticalIndexMarkElement(String textStringValueValue) {
+		TextAlphabeticalIndexMarkElement textAlphabeticalIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkElement.class);
+		textAlphabeticalIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textAlphabeticalIndexMark);
+		return textAlphabeticalIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-end}
+	 */
+	 public TextAlphabeticalIndexMarkEndElement newTextAlphabeticalIndexMarkEndElement(String textIdValue) {
+		TextAlphabeticalIndexMarkEndElement textAlphabeticalIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkEndElement.class);
+		textAlphabeticalIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkEnd);
+		return textAlphabeticalIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:alphabetical-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:alphabetical-index-mark-start}
+	 */
+	 public TextAlphabeticalIndexMarkStartElement newTextAlphabeticalIndexMarkStartElement(String textIdValue) {
+		TextAlphabeticalIndexMarkStartElement textAlphabeticalIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAlphabeticalIndexMarkStartElement.class);
+		textAlphabeticalIndexMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textAlphabeticalIndexMarkStart);
+		return textAlphabeticalIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-initials}.
+	 *
+	 * @return the element {@odf.element text:author-initials}
+	 */
+	public TextAuthorInitialsElement newTextAuthorInitialsElement() {
+		TextAuthorInitialsElement textAuthorInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorInitialsElement.class);
+		this.appendChild(textAuthorInitials);
+		return textAuthorInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:author-name}.
+	 *
+	 * @return the element {@odf.element text:author-name}
+	 */
+	public TextAuthorNameElement newTextAuthorNameElement() {
+		TextAuthorNameElement textAuthorName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextAuthorNameElement.class);
+		this.appendChild(textAuthorName);
+		return textAuthorName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bibliography-mark}.
+	 *
+	 * @param textBibliographyTypeValue  the <code>String</code> value of <code>TextBibliographyTypeAttribute</code>, see {@odf.attribute  text:bibliography-type} at specification
+	 * @return the element {@odf.element text:bibliography-mark}
+	 */
+	 public TextBibliographyMarkElement newTextBibliographyMarkElement(String textBibliographyTypeValue) {
+		TextBibliographyMarkElement textBibliographyMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBibliographyMarkElement.class);
+		textBibliographyMark.setTextBibliographyTypeAttribute(textBibliographyTypeValue);
+		this.appendChild(textBibliographyMark);
+		return textBibliographyMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark}
+	 */
+	 public TextBookmarkElement newTextBookmarkElement(String textNameValue) {
+		TextBookmarkElement textBookmark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkElement.class);
+		textBookmark.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmark);
+		return textBookmark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-end}
+	 */
+	 public TextBookmarkEndElement newTextBookmarkEndElement(String textNameValue) {
+		TextBookmarkEndElement textBookmarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkEndElement.class);
+		textBookmarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkEnd);
+		return textBookmarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-ref}.
+	 *
+	 * @return the element {@odf.element text:bookmark-ref}
+	 */
+	public TextBookmarkRefElement newTextBookmarkRefElement() {
+		TextBookmarkRefElement textBookmarkRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkRefElement.class);
+		this.appendChild(textBookmarkRef);
+		return textBookmarkRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:bookmark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:bookmark-start}
+	 */
+	 public TextBookmarkStartElement newTextBookmarkStartElement(String textNameValue) {
+		TextBookmarkStartElement textBookmarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextBookmarkStartElement.class);
+		textBookmarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textBookmarkStart);
+		return textBookmarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change}
+	 */
+	 public TextChangeElement newTextChangeElement(String textChangeIdValue) {
+		TextChangeElement textChange = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeElement.class);
+		textChange.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChange);
+		return textChange;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-end}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-end}
+	 */
+	 public TextChangeEndElement newTextChangeEndElement(String textChangeIdValue) {
+		TextChangeEndElement textChangeEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeEndElement.class);
+		textChangeEnd.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeEnd);
+		return textChangeEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:change-start}.
+	 *
+	 * @param textChangeIdValue  the <code>String</code> value of <code>TextChangeIdAttribute</code>, see {@odf.attribute  text:change-id} at specification
+	 * @return the element {@odf.element text:change-start}
+	 */
+	 public TextChangeStartElement newTextChangeStartElement(String textChangeIdValue) {
+		TextChangeStartElement textChangeStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangeStartElement.class);
+		textChangeStart.setTextChangeIdAttribute(textChangeIdValue);
+		this.appendChild(textChangeStart);
+		return textChangeStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:chapter}.
+	 *
+	 * @param textDisplayValue  the <code>String</code> value of <code>TextDisplayAttribute</code>, see {@odf.attribute  text:display} at specification
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:chapter}
+	 */
+	 public TextChapterElement newTextChapterElement(String textDisplayValue, int textOutlineLevelValue) {
+		TextChapterElement textChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChapterElement.class);
+		textChapter.setTextDisplayAttribute(textDisplayValue);
+		textChapter.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textChapter);
+		return textChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:character-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:character-count}
+	 */
+	 public TextCharacterCountElement newTextCharacterCountElement(String styleNumFormatValue) {
+		TextCharacterCountElement textCharacterCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCharacterCountElement.class);
+		textCharacterCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textCharacterCount);
+		return textCharacterCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:conditional-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueIfFalseValue  the <code>String</code> value of <code>TextStringValueIfFalseAttribute</code>, see {@odf.attribute  text:string-value-if-false} at specification
+	 * @param textStringValueIfTrueValue  the <code>String</code> value of <code>TextStringValueIfTrueAttribute</code>, see {@odf.attribute  text:string-value-if-true} at specification
+	 * @return the element {@odf.element text:conditional-text}
+	 */
+	 public TextConditionalTextElement newTextConditionalTextElement(String textConditionValue, String textStringValueIfFalseValue, String textStringValueIfTrueValue) {
+		TextConditionalTextElement textConditionalText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextConditionalTextElement.class);
+		textConditionalText.setTextConditionAttribute(textConditionValue);
+		textConditionalText.setTextStringValueIfFalseAttribute(textStringValueIfFalseValue);
+		textConditionalText.setTextStringValueIfTrueAttribute(textStringValueIfTrueValue);
+		this.appendChild(textConditionalText);
+		return textConditionalText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-date}.
+	 *
+	 * @return the element {@odf.element text:creation-date}
+	 */
+	public TextCreationDateElement newTextCreationDateElement() {
+		TextCreationDateElement textCreationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationDateElement.class);
+		this.appendChild(textCreationDate);
+		return textCreationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creation-time}.
+	 *
+	 * @return the element {@odf.element text:creation-time}
+	 */
+	public TextCreationTimeElement newTextCreationTimeElement() {
+		TextCreationTimeElement textCreationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreationTimeElement.class);
+		this.appendChild(textCreationTime);
+		return textCreationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:creator}.
+	 *
+	 * @return the element {@odf.element text:creator}
+	 */
+	public TextCreatorElement newTextCreatorElement() {
+		TextCreatorElement textCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextCreatorElement.class);
+		this.appendChild(textCreator);
+		return textCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-display}.
+	 *
+	 * @param textColumnNameValue  the <code>String</code> value of <code>TextColumnNameAttribute</code>, see {@odf.attribute  text:column-name} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-display}
+	 */
+	 public TextDatabaseDisplayElement newTextDatabaseDisplayElement(String textColumnNameValue, String textTableNameValue) {
+		TextDatabaseDisplayElement textDatabaseDisplay = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseDisplayElement.class);
+		textDatabaseDisplay.setTextColumnNameAttribute(textColumnNameValue);
+		textDatabaseDisplay.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseDisplay);
+		return textDatabaseDisplay;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-name}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-name}
+	 */
+	 public TextDatabaseNameElement newTextDatabaseNameElement(String textTableNameValue) {
+		TextDatabaseNameElement textDatabaseName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNameElement.class);
+		textDatabaseName.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseName);
+		return textDatabaseName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-next}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-next}
+	 */
+	 public TextDatabaseNextElement newTextDatabaseNextElement(String textTableNameValue) {
+		TextDatabaseNextElement textDatabaseNext = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseNextElement.class);
+		textDatabaseNext.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseNext);
+		return textDatabaseNext;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-number}
+	 */
+	 public TextDatabaseRowNumberElement newTextDatabaseRowNumberElement(String styleNumFormatValue, String textTableNameValue) {
+		TextDatabaseRowNumberElement textDatabaseRowNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowNumberElement.class);
+		textDatabaseRowNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		textDatabaseRowNumber.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowNumber);
+		return textDatabaseRowNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:database-row-select}.
+	 *
+	 * @param textTableNameValue  the <code>String</code> value of <code>TextTableNameAttribute</code>, see {@odf.attribute  text:table-name} at specification
+	 * @return the element {@odf.element text:database-row-select}
+	 */
+	 public TextDatabaseRowSelectElement newTextDatabaseRowSelectElement(String textTableNameValue) {
+		TextDatabaseRowSelectElement textDatabaseRowSelect = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDatabaseRowSelectElement.class);
+		textDatabaseRowSelect.setTextTableNameAttribute(textTableNameValue);
+		this.appendChild(textDatabaseRowSelect);
+		return textDatabaseRowSelect;
+	}
+
+	/**
+	 * Create child element {@odf.element text:date}.
+	 *
+	 * @return the element {@odf.element text:date}
+	 */
+	public TextDateElement newTextDateElement() {
+		TextDateElement textDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDateElement.class);
+		this.appendChild(textDate);
+		return textDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:dde-connection}.
+	 *
+	 * @param textConnectionNameValue  the <code>String</code> value of <code>TextConnectionNameAttribute</code>, see {@odf.attribute  text:connection-name} at specification
+	 * @return the element {@odf.element text:dde-connection}
+	 */
+	 public TextDdeConnectionElement newTextDdeConnectionElement(String textConnectionNameValue) {
+		TextDdeConnectionElement textDdeConnection = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDdeConnectionElement.class);
+		textDdeConnection.setTextConnectionNameAttribute(textConnectionNameValue);
+		this.appendChild(textDdeConnection);
+		return textDdeConnection;
+	}
+
+	/**
+	 * Create child element {@odf.element text:description}.
+	 *
+	 * @return the element {@odf.element text:description}
+	 */
+	public TextDescriptionElement newTextDescriptionElement() {
+		TextDescriptionElement textDescription = ((OdfFileDom) this.ownerDocument).newOdfElement(TextDescriptionElement.class);
+		this.appendChild(textDescription);
+		return textDescription;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-cycles}.
+	 *
+	 * @return the element {@odf.element text:editing-cycles}
+	 */
+	public TextEditingCyclesElement newTextEditingCyclesElement() {
+		TextEditingCyclesElement textEditingCycles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingCyclesElement.class);
+		this.appendChild(textEditingCycles);
+		return textEditingCycles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:editing-duration}.
+	 *
+	 * @return the element {@odf.element text:editing-duration}
+	 */
+	public TextEditingDurationElement newTextEditingDurationElement() {
+		TextEditingDurationElement textEditingDuration = ((OdfFileDom) this.ownerDocument).newOdfElement(TextEditingDurationElement.class);
+		this.appendChild(textEditingDuration);
+		return textEditingDuration;
+	}
+
+	/**
+	 * Create child element {@odf.element text:execute-macro}.
+	 *
+	 * @return the element {@odf.element text:execute-macro}
+	 */
+	public TextExecuteMacroElement newTextExecuteMacroElement() {
+		TextExecuteMacroElement textExecuteMacro = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExecuteMacroElement.class);
+		this.appendChild(textExecuteMacro);
+		return textExecuteMacro;
+	}
+
+	/**
+	 * Create child element {@odf.element text:expression}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @return the element {@odf.element text:expression}
+	 */
+	 public TextExpressionElement newTextExpressionElement(double officeValueValue, String officeValueTypeValue) {
+		TextExpressionElement textExpression = ((OdfFileDom) this.ownerDocument).newOdfElement(TextExpressionElement.class);
+		textExpression.setOfficeValueAttribute(officeValueValue);
+		textExpression.setOfficeValueTypeAttribute(officeValueTypeValue);
+		this.appendChild(textExpression);
+		return textExpression;
+	}
+
+	/**
+	 * Create child element {@odf.element text:file-name}.
+	 *
+	 * @return the element {@odf.element text:file-name}
+	 */
+	public TextFileNameElement newTextFileNameElement() {
+		TextFileNameElement textFileName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextFileNameElement.class);
+		this.appendChild(textFileName);
+		return textFileName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-paragraph}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @return the element {@odf.element text:hidden-paragraph}
+	 */
+	 public TextHiddenParagraphElement newTextHiddenParagraphElement(String textConditionValue) {
+		TextHiddenParagraphElement textHiddenParagraph = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenParagraphElement.class);
+		textHiddenParagraph.setTextConditionAttribute(textConditionValue);
+		this.appendChild(textHiddenParagraph);
+		return textHiddenParagraph;
+	}
+
+	/**
+	 * Create child element {@odf.element text:hidden-text}.
+	 *
+	 * @param textConditionValue  the <code>String</code> value of <code>TextConditionAttribute</code>, see {@odf.attribute  text:condition} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:hidden-text}
+	 */
+	 public TextHiddenTextElement newTextHiddenTextElement(String textConditionValue, String textStringValueValue) {
+		TextHiddenTextElement textHiddenText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextHiddenTextElement.class);
+		textHiddenText.setTextConditionAttribute(textConditionValue);
+		textHiddenText.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textHiddenText);
+		return textHiddenText;
+	}
+
+	/**
+	 * Create child element {@odf.element text:image-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:image-count}
+	 */
+	 public TextImageCountElement newTextImageCountElement(String styleNumFormatValue) {
+		TextImageCountElement textImageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextImageCountElement.class);
+		textImageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textImageCount);
+		return textImageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:initial-creator}.
+	 *
+	 * @return the element {@odf.element text:initial-creator}
+	 */
+	public TextInitialCreatorElement newTextInitialCreatorElement() {
+		TextInitialCreatorElement textInitialCreator = ((OdfFileDom) this.ownerDocument).newOdfElement(TextInitialCreatorElement.class);
+		this.appendChild(textInitialCreator);
+		return textInitialCreator;
+	}
+
+	/**
+	 * Create child element {@odf.element text:keywords}.
+	 *
+	 * @return the element {@odf.element text:keywords}
+	 */
+	public TextKeywordsElement newTextKeywordsElement() {
+		TextKeywordsElement textKeywords = ((OdfFileDom) this.ownerDocument).newOdfElement(TextKeywordsElement.class);
+		this.appendChild(textKeywords);
+		return textKeywords;
+	}
+
+	/**
+	 * Create child element {@odf.element text:line-break}.
+	 *
+	 * @return the element {@odf.element text:line-break}
+	 */
+	public TextLineBreakElement newTextLineBreakElement() {
+		TextLineBreakElement textLineBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextLineBreakElement.class);
+		this.appendChild(textLineBreak);
+		return textLineBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:measure}.
+	 *
+	 * @param textKindValue  the <code>String</code> value of <code>TextKindAttribute</code>, see {@odf.attribute  text:kind} at specification
+	 * @return the element {@odf.element text:measure}
+	 */
+	 public TextMeasureElement newTextMeasureElement(String textKindValue) {
+		TextMeasureElement textMeasure = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMeasureElement.class);
+		textMeasure.setTextKindAttribute(textKindValue);
+		this.appendChild(textMeasure);
+		return textMeasure;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta}
+	 */
+	public TextMetaElement newTextMetaElement() {
+		TextMetaElement textMeta = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaElement.class);
+		this.appendChild(textMeta);
+		return textMeta;
+	}
+
+	/**
+	 * Create child element {@odf.element text:meta-field}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:meta-field}
+	 */
+	 public TextMetaFieldElement newTextMetaFieldElement(String xmlIdValue) {
+		TextMetaFieldElement textMetaField = ((OdfFileDom) this.ownerDocument).newOdfElement(TextMetaFieldElement.class);
+		textMetaField.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textMetaField);
+		return textMetaField;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-date}.
+	 *
+	 * @return the element {@odf.element text:modification-date}
+	 */
+	public TextModificationDateElement newTextModificationDateElement() {
+		TextModificationDateElement textModificationDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationDateElement.class);
+		this.appendChild(textModificationDate);
+		return textModificationDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:modification-time}.
+	 *
+	 * @return the element {@odf.element text:modification-time}
+	 */
+	public TextModificationTimeElement newTextModificationTimeElement() {
+		TextModificationTimeElement textModificationTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextModificationTimeElement.class);
+		this.appendChild(textModificationTime);
+		return textModificationTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note}
+	 */
+	 public TextNoteElement newTextNoteElement(String textNoteClassValue) {
+		TextNoteElement textNote = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteElement.class);
+		textNote.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNote);
+		return textNote;
+	}
+
+	/**
+	 * Create child element {@odf.element text:note-ref}.
+	 *
+	 * @param textNoteClassValue  the <code>String</code> value of <code>TextNoteClassAttribute</code>, see {@odf.attribute  text:note-class} at specification
+	 * @return the element {@odf.element text:note-ref}
+	 */
+	 public TextNoteRefElement newTextNoteRefElement(String textNoteClassValue) {
+		TextNoteRefElement textNoteRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextNoteRefElement.class);
+		textNoteRef.setTextNoteClassAttribute(textNoteClassValue);
+		this.appendChild(textNoteRef);
+		return textNoteRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:object-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:object-count}
+	 */
+	 public TextObjectCountElement newTextObjectCountElement(String styleNumFormatValue) {
+		TextObjectCountElement textObjectCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextObjectCountElement.class);
+		textObjectCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textObjectCount);
+		return textObjectCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-continuation}.
+	 *
+	 * @param textSelectPageValue  the <code>String</code> value of <code>TextSelectPageAttribute</code>, see {@odf.attribute  text:select-page} at specification
+	 * @return the element {@odf.element text:page-continuation}
+	 */
+	 public TextPageContinuationElement newTextPageContinuationElement(String textSelectPageValue) {
+		TextPageContinuationElement textPageContinuation = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageContinuationElement.class);
+		textPageContinuation.setTextSelectPageAttribute(textSelectPageValue);
+		this.appendChild(textPageContinuation);
+		return textPageContinuation;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-count}
+	 */
+	 public TextPageCountElement newTextPageCountElement(String styleNumFormatValue) {
+		TextPageCountElement textPageCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageCountElement.class);
+		textPageCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageCount);
+		return textPageCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-number}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-number}
+	 */
+	 public TextPageNumberElement newTextPageNumberElement(String styleNumFormatValue) {
+		TextPageNumberElement textPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageNumberElement.class);
+		textPageNumber.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageNumber);
+		return textPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-get}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:page-variable-get}
+	 */
+	 public TextPageVariableGetElement newTextPageVariableGetElement(String styleNumFormatValue) {
+		TextPageVariableGetElement textPageVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableGetElement.class);
+		textPageVariableGet.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textPageVariableGet);
+		return textPageVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:page-variable-set}.
+	 *
+	 * @return the element {@odf.element text:page-variable-set}
+	 */
+	public TextPageVariableSetElement newTextPageVariableSetElement() {
+		TextPageVariableSetElement textPageVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPageVariableSetElement.class);
+		this.appendChild(textPageVariableSet);
+		return textPageVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:paragraph-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:paragraph-count}
+	 */
+	 public TextParagraphCountElement newTextParagraphCountElement(String styleNumFormatValue) {
+		TextParagraphCountElement textParagraphCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextParagraphCountElement.class);
+		textParagraphCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textParagraphCount);
+		return textParagraphCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:placeholder}.
+	 *
+	 * @param textPlaceholderTypeValue  the <code>String</code> value of <code>TextPlaceholderTypeAttribute</code>, see {@odf.attribute  text:placeholder-type} at specification
+	 * @return the element {@odf.element text:placeholder}
+	 */
+	 public TextPlaceholderElement newTextPlaceholderElement(String textPlaceholderTypeValue) {
+		TextPlaceholderElement textPlaceholder = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPlaceholderElement.class);
+		textPlaceholder.setTextPlaceholderTypeAttribute(textPlaceholderTypeValue);
+		this.appendChild(textPlaceholder);
+		return textPlaceholder;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-date}.
+	 *
+	 * @return the element {@odf.element text:print-date}
+	 */
+	public TextPrintDateElement newTextPrintDateElement() {
+		TextPrintDateElement textPrintDate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintDateElement.class);
+		this.appendChild(textPrintDate);
+		return textPrintDate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:print-time}.
+	 *
+	 * @return the element {@odf.element text:print-time}
+	 */
+	public TextPrintTimeElement newTextPrintTimeElement() {
+		TextPrintTimeElement textPrintTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintTimeElement.class);
+		this.appendChild(textPrintTime);
+		return textPrintTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:printed-by}.
+	 *
+	 * @return the element {@odf.element text:printed-by}
+	 */
+	public TextPrintedByElement newTextPrintedByElement() {
+		TextPrintedByElement textPrintedBy = ((OdfFileDom) this.ownerDocument).newOdfElement(TextPrintedByElement.class);
+		this.appendChild(textPrintedBy);
+		return textPrintedBy;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark}
+	 */
+	 public TextReferenceMarkElement newTextReferenceMarkElement(String textNameValue) {
+		TextReferenceMarkElement textReferenceMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkElement.class);
+		textReferenceMark.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMark);
+		return textReferenceMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-end}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-end}
+	 */
+	 public TextReferenceMarkEndElement newTextReferenceMarkEndElement(String textNameValue) {
+		TextReferenceMarkEndElement textReferenceMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkEndElement.class);
+		textReferenceMarkEnd.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkEnd);
+		return textReferenceMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-mark-start}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:reference-mark-start}
+	 */
+	 public TextReferenceMarkStartElement newTextReferenceMarkStartElement(String textNameValue) {
+		TextReferenceMarkStartElement textReferenceMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceMarkStartElement.class);
+		textReferenceMarkStart.setTextNameAttribute(textNameValue);
+		this.appendChild(textReferenceMarkStart);
+		return textReferenceMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:reference-ref}.
+	 *
+	 * @return the element {@odf.element text:reference-ref}
+	 */
+	public TextReferenceRefElement newTextReferenceRefElement() {
+		TextReferenceRefElement textReferenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextReferenceRefElement.class);
+		this.appendChild(textReferenceRef);
+		return textReferenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:ruby}.
+	 *
+	 * @return the element {@odf.element text:ruby}
+	 */
+	public TextRubyElement newTextRubyElement() {
+		TextRubyElement textRuby = ((OdfFileDom) this.ownerDocument).newOdfElement(TextRubyElement.class);
+		this.appendChild(textRuby);
+		return textRuby;
+	}
+
+	/**
+	 * Create child element {@odf.element text:s}.
+	 *
+	 * @return the element {@odf.element text:s}
+	 */
+	public TextSElement newTextSElement() {
+		TextSElement textS = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSElement.class);
+		this.appendChild(textS);
+		return textS;
+	}
+
+	/**
+	 * Create child element {@odf.element text:script}.
+	 *
+	 * @return the element {@odf.element text:script}
+	 */
+	public TextScriptElement newTextScriptElement() {
+		TextScriptElement textScript = ((OdfFileDom) this.ownerDocument).newOdfElement(TextScriptElement.class);
+		this.appendChild(textScript);
+		return textScript;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-city}.
+	 *
+	 * @return the element {@odf.element text:sender-city}
+	 */
+	public TextSenderCityElement newTextSenderCityElement() {
+		TextSenderCityElement textSenderCity = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCityElement.class);
+		this.appendChild(textSenderCity);
+		return textSenderCity;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-company}.
+	 *
+	 * @return the element {@odf.element text:sender-company}
+	 */
+	public TextSenderCompanyElement newTextSenderCompanyElement() {
+		TextSenderCompanyElement textSenderCompany = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCompanyElement.class);
+		this.appendChild(textSenderCompany);
+		return textSenderCompany;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-country}.
+	 *
+	 * @return the element {@odf.element text:sender-country}
+	 */
+	public TextSenderCountryElement newTextSenderCountryElement() {
+		TextSenderCountryElement textSenderCountry = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderCountryElement.class);
+		this.appendChild(textSenderCountry);
+		return textSenderCountry;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-email}.
+	 *
+	 * @return the element {@odf.element text:sender-email}
+	 */
+	public TextSenderEmailElement newTextSenderEmailElement() {
+		TextSenderEmailElement textSenderEmail = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderEmailElement.class);
+		this.appendChild(textSenderEmail);
+		return textSenderEmail;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-fax}.
+	 *
+	 * @return the element {@odf.element text:sender-fax}
+	 */
+	public TextSenderFaxElement newTextSenderFaxElement() {
+		TextSenderFaxElement textSenderFax = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFaxElement.class);
+		this.appendChild(textSenderFax);
+		return textSenderFax;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-firstname}.
+	 *
+	 * @return the element {@odf.element text:sender-firstname}
+	 */
+	public TextSenderFirstnameElement newTextSenderFirstnameElement() {
+		TextSenderFirstnameElement textSenderFirstname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderFirstnameElement.class);
+		this.appendChild(textSenderFirstname);
+		return textSenderFirstname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-initials}.
+	 *
+	 * @return the element {@odf.element text:sender-initials}
+	 */
+	public TextSenderInitialsElement newTextSenderInitialsElement() {
+		TextSenderInitialsElement textSenderInitials = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderInitialsElement.class);
+		this.appendChild(textSenderInitials);
+		return textSenderInitials;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-lastname}.
+	 *
+	 * @return the element {@odf.element text:sender-lastname}
+	 */
+	public TextSenderLastnameElement newTextSenderLastnameElement() {
+		TextSenderLastnameElement textSenderLastname = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderLastnameElement.class);
+		this.appendChild(textSenderLastname);
+		return textSenderLastname;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-private}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-private}
+	 */
+	public TextSenderPhonePrivateElement newTextSenderPhonePrivateElement() {
+		TextSenderPhonePrivateElement textSenderPhonePrivate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhonePrivateElement.class);
+		this.appendChild(textSenderPhonePrivate);
+		return textSenderPhonePrivate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-phone-work}.
+	 *
+	 * @return the element {@odf.element text:sender-phone-work}
+	 */
+	public TextSenderPhoneWorkElement newTextSenderPhoneWorkElement() {
+		TextSenderPhoneWorkElement textSenderPhoneWork = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPhoneWorkElement.class);
+		this.appendChild(textSenderPhoneWork);
+		return textSenderPhoneWork;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-position}.
+	 *
+	 * @return the element {@odf.element text:sender-position}
+	 */
+	public TextSenderPositionElement newTextSenderPositionElement() {
+		TextSenderPositionElement textSenderPosition = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPositionElement.class);
+		this.appendChild(textSenderPosition);
+		return textSenderPosition;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-postal-code}.
+	 *
+	 * @return the element {@odf.element text:sender-postal-code}
+	 */
+	public TextSenderPostalCodeElement newTextSenderPostalCodeElement() {
+		TextSenderPostalCodeElement textSenderPostalCode = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderPostalCodeElement.class);
+		this.appendChild(textSenderPostalCode);
+		return textSenderPostalCode;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-state-or-province}.
+	 *
+	 * @return the element {@odf.element text:sender-state-or-province}
+	 */
+	public TextSenderStateOrProvinceElement newTextSenderStateOrProvinceElement() {
+		TextSenderStateOrProvinceElement textSenderStateOrProvince = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStateOrProvinceElement.class);
+		this.appendChild(textSenderStateOrProvince);
+		return textSenderStateOrProvince;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-street}.
+	 *
+	 * @return the element {@odf.element text:sender-street}
+	 */
+	public TextSenderStreetElement newTextSenderStreetElement() {
+		TextSenderStreetElement textSenderStreet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderStreetElement.class);
+		this.appendChild(textSenderStreet);
+		return textSenderStreet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sender-title}.
+	 *
+	 * @return the element {@odf.element text:sender-title}
+	 */
+	public TextSenderTitleElement newTextSenderTitleElement() {
+		TextSenderTitleElement textSenderTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSenderTitleElement.class);
+		this.appendChild(textSenderTitle);
+		return textSenderTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:sequence}
+	 */
+	 public TextSequenceElement newTextSequenceElement(String styleNumFormatValue, String textNameValue) {
+		TextSequenceElement textSequence = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceElement.class);
+		textSequence.setStyleNumFormatAttribute(styleNumFormatValue);
+		textSequence.setTextNameAttribute(textNameValue);
+		this.appendChild(textSequence);
+		return textSequence;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sequence-ref}.
+	 *
+	 * @return the element {@odf.element text:sequence-ref}
+	 */
+	public TextSequenceRefElement newTextSequenceRefElement() {
+		TextSequenceRefElement textSequenceRef = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSequenceRefElement.class);
+		this.appendChild(textSequenceRef);
+		return textSequenceRef;
+	}
+
+	/**
+	 * Create child element {@odf.element text:sheet-name}.
+	 *
+	 * @return the element {@odf.element text:sheet-name}
+	 */
+	public TextSheetNameElement newTextSheetNameElement() {
+		TextSheetNameElement textSheetName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSheetNameElement.class);
+		this.appendChild(textSheetName);
+		return textSheetName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:soft-page-break}.
+	 *
+	 * @return the element {@odf.element text:soft-page-break}
+	 */
+	public TextSoftPageBreakElement newTextSoftPageBreakElement() {
+		TextSoftPageBreakElement textSoftPageBreak = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSoftPageBreakElement.class);
+		this.appendChild(textSoftPageBreak);
+		return textSoftPageBreak;
+	}
+
+	/**
+	 * Create child element {@odf.element text:span}.
+	 *
+	 * @return the element {@odf.element text:span}
+	 */
+	public TextSpanElement newTextSpanElement() {
+		TextSpanElement textSpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSpanElement.class);
+		this.appendChild(textSpan);
+		return textSpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:subject}.
+	 *
+	 * @return the element {@odf.element text:subject}
+	 */
+	public TextSubjectElement newTextSubjectElement() {
+		TextSubjectElement textSubject = ((OdfFileDom) this.ownerDocument).newOdfElement(TextSubjectElement.class);
+		this.appendChild(textSubject);
+		return textSubject;
+	}
+
+	/**
+	 * Create child element {@odf.element text:tab}.
+	 *
+	 * @return the element {@odf.element text:tab}
+	 */
+	public TextTabElement newTextTabElement() {
+		TextTabElement textTab = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTabElement.class);
+		this.appendChild(textTab);
+		return textTab;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:table-count}
+	 */
+	 public TextTableCountElement newTextTableCountElement(String styleNumFormatValue) {
+		TextTableCountElement textTableCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableCountElement.class);
+		textTableCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textTableCount);
+		return textTableCount;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-formula}.
+	 *
+	 * @return the element {@odf.element text:table-formula}
+	 */
+	public TextTableFormulaElement newTextTableFormulaElement() {
+		TextTableFormulaElement textTableFormula = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableFormulaElement.class);
+		this.appendChild(textTableFormula);
+		return textTableFormula;
+	}
+
+	/**
+	 * Create child element {@odf.element text:template-name}.
+	 *
+	 * @return the element {@odf.element text:template-name}
+	 */
+	public TextTemplateNameElement newTextTemplateNameElement() {
+		TextTemplateNameElement textTemplateName = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTemplateNameElement.class);
+		this.appendChild(textTemplateName);
+		return textTemplateName;
+	}
+
+	/**
+	 * Create child element {@odf.element text:text-input}.
+	 *
+	 * @return the element {@odf.element text:text-input}
+	 */
+	public TextTextInputElement newTextTextInputElement() {
+		TextTextInputElement textTextInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTextInputElement.class);
+		this.appendChild(textTextInput);
+		return textTextInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:time}.
+	 *
+	 * @return the element {@odf.element text:time}
+	 */
+	public TextTimeElement newTextTimeElement() {
+		TextTimeElement textTime = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTimeElement.class);
+		this.appendChild(textTime);
+		return textTime;
+	}
+
+	/**
+	 * Create child element {@odf.element text:title}.
+	 *
+	 * @return the element {@odf.element text:title}
+	 */
+	public TextTitleElement newTextTitleElement() {
+		TextTitleElement textTitle = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTitleElement.class);
+		this.appendChild(textTitle);
+		return textTitle;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark}.
+	 *
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:toc-mark}
+	 */
+	 public TextTocMarkElement newTextTocMarkElement(String textStringValueValue) {
+		TextTocMarkElement textTocMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkElement.class);
+		textTocMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textTocMark);
+		return textTocMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-end}
+	 */
+	 public TextTocMarkEndElement newTextTocMarkEndElement(String textIdValue) {
+		TextTocMarkEndElement textTocMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkEndElement.class);
+		textTocMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkEnd);
+		return textTocMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:toc-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:toc-mark-start}
+	 */
+	 public TextTocMarkStartElement newTextTocMarkStartElement(String textIdValue) {
+		TextTocMarkStartElement textTocMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTocMarkStartElement.class);
+		textTocMarkStart.setTextIdAttribute(textIdValue);
+		this.appendChild(textTocMarkStart);
+		return textTocMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-defined}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-defined}
+	 */
+	 public TextUserDefinedElement newTextUserDefinedElement(String textNameValue) {
+		TextUserDefinedElement textUserDefined = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserDefinedElement.class);
+		textUserDefined.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserDefined);
+		return textUserDefined;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-get}
+	 */
+	 public TextUserFieldGetElement newTextUserFieldGetElement(String textNameValue) {
+		TextUserFieldGetElement textUserFieldGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldGetElement.class);
+		textUserFieldGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldGet);
+		return textUserFieldGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-input}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-input}
+	 */
+	 public TextUserFieldInputElement newTextUserFieldInputElement(String textNameValue) {
+		TextUserFieldInputElement textUserFieldInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldInputElement.class);
+		textUserFieldInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldInput);
+		return textUserFieldInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @param textStringValueValue  the <code>String</code> value of <code>TextStringValueAttribute</code>, see {@odf.attribute  text:string-value} at specification
+	 * @return the element {@odf.element text:user-index-mark}
+	 */
+	 public TextUserIndexMarkElement newTextUserIndexMarkElement(String textIndexNameValue, String textStringValueValue) {
+		TextUserIndexMarkElement textUserIndexMark = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkElement.class);
+		textUserIndexMark.setTextIndexNameAttribute(textIndexNameValue);
+		textUserIndexMark.setTextStringValueAttribute(textStringValueValue);
+		this.appendChild(textUserIndexMark);
+		return textUserIndexMark;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-end}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @return the element {@odf.element text:user-index-mark-end}
+	 */
+	 public TextUserIndexMarkEndElement newTextUserIndexMarkEndElement(String textIdValue) {
+		TextUserIndexMarkEndElement textUserIndexMarkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkEndElement.class);
+		textUserIndexMarkEnd.setTextIdAttribute(textIdValue);
+		this.appendChild(textUserIndexMarkEnd);
+		return textUserIndexMarkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-mark-start}.
+	 *
+	 * @param textIdValue  the <code>String</code> value of <code>TextIdAttribute</code>, see {@odf.attribute  text:id} at specification
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * @return the element {@odf.element text:user-index-mark-start}
+	 */
+	 public TextUserIndexMarkStartElement newTextUserIndexMarkStartElement(String textIdValue, String textIndexNameValue) {
+		TextUserIndexMarkStartElement textUserIndexMarkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexMarkStartElement.class);
+		textUserIndexMarkStart.setTextIdAttribute(textIdValue);
+		textUserIndexMarkStart.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexMarkStart);
+		return textUserIndexMarkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-get}.
+	 *
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-get}
+	 */
+	 public TextVariableGetElement newTextVariableGetElement(String textNameValue) {
+		TextVariableGetElement textVariableGet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableGetElement.class);
+		textVariableGet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableGet);
+		return textVariableGet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-input}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-input}
+	 */
+	 public TextVariableInputElement newTextVariableInputElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableInputElement textVariableInput = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableInputElement.class);
+		textVariableInput.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableInput.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableInput);
+		return textVariableInput;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-set}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-set}
+	 */
+	 public TextVariableSetElement newTextVariableSetElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextVariableSetElement textVariableSet = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableSetElement.class);
+		textVariableSet.setOfficeValueAttribute(officeValueValue);
+		textVariableSet.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableSet.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableSet);
+		return textVariableSet;
+	}
+
+	/**
+	 * Create child element {@odf.element text:word-count}.
+	 *
+	 * @param styleNumFormatValue  the <code>String</code> value of <code>StyleNumFormatAttribute</code>, see {@odf.attribute  style:num-format} at specification
+	 * @return the element {@odf.element text:word-count}
+	 */
+	 public TextWordCountElement newTextWordCountElement(String styleNumFormatValue) {
+		TextWordCountElement textWordCount = ((OdfFileDom) this.ownerDocument).newOdfElement(TextWordCountElement.class);
+		textWordCount.setStyleNumFormatAttribute(styleNumFormatValue);
+		this.appendChild(textWordCount);
+		return textWordCount;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSubjectElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSubjectElement.java
new file mode 100644
index 0000000..220be22
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextSubjectElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:subject}.
+ *
+ */
+public class TextSubjectElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "subject");
+
+	/**
+	 * Create the instance of <code>TextSubjectElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextSubjectElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:subject}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTabElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTabElement.java
new file mode 100644
index 0000000..629048d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTabElement.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTabRefAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:tab}.
+ *
+ */
+public class TextTabElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "tab");
+
+	/**
+	 * Create the instance of <code>TextTabElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTabElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:tab}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTabRefAttribute</code> , See {@odf.attribute text:tab-ref}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextTabRefAttribute() {
+		TextTabRefAttribute attr = (TextTabRefAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "tab-ref");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTabRefAttribute</code> , See {@odf.attribute text:tab-ref}
+	 *
+	 * @param textTabRefValue   The type is <code>Integer</code>
+	 */
+	public void setTextTabRefAttribute(Integer textTabRefValue) {
+		TextTabRefAttribute attr = new TextTabRefAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textTabRefValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableCountElement.java
new file mode 100644
index 0000000..10bbc77
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-count}.
+ *
+ */
+public class TextTableCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-count");
+
+	/**
+	 * Create the instance of <code>TextTableCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableFormulaElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableFormulaElement.java
new file mode 100644
index 0000000..8a1d9d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableFormulaElement.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFormulaAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-formula}.
+ *
+ */
+public class TextTableFormulaElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-formula");
+
+	/**
+	 * Create the instance of <code>TextTableFormulaElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableFormulaElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-formula}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFormulaAttribute() {
+		TextFormulaAttribute attr = (TextFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @param textFormulaValue   The type is <code>String</code>
+	 */
+	public void setTextFormulaAttribute(String textFormulaValue) {
+		TextFormulaAttribute attr = new TextFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFormulaValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexElement.java
new file mode 100644
index 0000000..f176da9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-index}.
+ *
+ */
+public class TextTableIndexElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-index");
+
+	/**
+	 * Create the instance of <code>TextTableIndexElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableIndexElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-index}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index-source}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:table-index-source}
+	 */
+	public TextTableIndexSourceElement newTextTableIndexSourceElement() {
+		TextTableIndexSourceElement textTableIndexSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexSourceElement.class);
+		this.appendChild(textTableIndexSource);
+		return textTableIndexSource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexEntryTemplateElement.java
new file mode 100644
index 0000000..b37be24
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexEntryTemplateElement.java
@@ -0,0 +1,159 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-index-entry-template}.
+ *
+ */
+public class TextTableIndexEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-index-entry-template");
+
+	/**
+	 * Create the instance of <code>TextTableIndexEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableIndexEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-index-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-chapter}.
+	 *
+	 * Child element is new in Odf 1.2
+	 *
+	 * @return the element {@odf.element text:index-entry-chapter}
+	 */
+	public TextIndexEntryChapterElement newTextIndexEntryChapterElement() {
+		TextIndexEntryChapterElement textIndexEntryChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryChapterElement.class);
+		this.appendChild(textIndexEntryChapter);
+		return textIndexEntryChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-page-number}.
+	 *
+	 * @return the element {@odf.element text:index-entry-page-number}
+	 */
+	public TextIndexEntryPageNumberElement newTextIndexEntryPageNumberElement() {
+		TextIndexEntryPageNumberElement textIndexEntryPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryPageNumberElement.class);
+		this.appendChild(textIndexEntryPageNumber);
+		return textIndexEntryPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-text}.
+	 *
+	 * @return the element {@odf.element text:index-entry-text}
+	 */
+	public TextIndexEntryTextElement newTextIndexEntryTextElement() {
+		TextIndexEntryTextElement textIndexEntryText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTextElement.class);
+		this.appendChild(textIndexEntryText);
+		return textIndexEntryText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexSourceElement.java
new file mode 100644
index 0000000..9b2f87f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableIndexSourceElement.java
@@ -0,0 +1,220 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCaptionSequenceFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCaptionSequenceNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexScopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRelativeTabStopPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseCaptionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-index-source}.
+ *
+ */
+public class TextTableIndexSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-index-source");
+
+	/**
+	 * Create the instance of <code>TextTableIndexSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableIndexSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-index-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCaptionSequenceFormatAttribute</code> , See {@odf.attribute text:caption-sequence-format}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCaptionSequenceFormatAttribute() {
+		TextCaptionSequenceFormatAttribute attr = (TextCaptionSequenceFormatAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "caption-sequence-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCaptionSequenceFormatAttribute</code> , See {@odf.attribute text:caption-sequence-format}
+	 *
+	 * @param textCaptionSequenceFormatValue   The type is <code>String</code>
+	 */
+	public void setTextCaptionSequenceFormatAttribute(String textCaptionSequenceFormatValue) {
+		TextCaptionSequenceFormatAttribute attr = new TextCaptionSequenceFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCaptionSequenceFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCaptionSequenceNameAttribute</code> , See {@odf.attribute text:caption-sequence-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextCaptionSequenceNameAttribute() {
+		TextCaptionSequenceNameAttribute attr = (TextCaptionSequenceNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "caption-sequence-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCaptionSequenceNameAttribute</code> , See {@odf.attribute text:caption-sequence-name}
+	 *
+	 * @param textCaptionSequenceNameValue   The type is <code>String</code>
+	 */
+	public void setTextCaptionSequenceNameAttribute(String textCaptionSequenceNameValue) {
+		TextCaptionSequenceNameAttribute attr = new TextCaptionSequenceNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textCaptionSequenceNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexScopeAttribute() {
+		TextIndexScopeAttribute attr = (TextIndexScopeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-scope");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextIndexScopeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @param textIndexScopeValue   The type is <code>String</code>
+	 */
+	public void setTextIndexScopeAttribute(String textIndexScopeValue) {
+		TextIndexScopeAttribute attr = new TextIndexScopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexScopeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRelativeTabStopPositionAttribute() {
+		TextRelativeTabStopPositionAttribute attr = (TextRelativeTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRelativeTabStopPositionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @param textRelativeTabStopPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRelativeTabStopPositionAttribute(Boolean textRelativeTabStopPositionValue) {
+		TextRelativeTabStopPositionAttribute attr = new TextRelativeTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRelativeTabStopPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseCaptionAttribute</code> , See {@odf.attribute text:use-caption}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseCaptionAttribute() {
+		TextUseCaptionAttribute attr = (TextUseCaptionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-caption");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseCaptionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseCaptionAttribute</code> , See {@odf.attribute text:use-caption}
+	 *
+	 * @param textUseCaptionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseCaptionAttribute(Boolean textUseCaptionValue) {
+		TextUseCaptionAttribute attr = new TextUseCaptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseCaptionValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-index-entry-template}.
+	 *
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:table-index-entry-template}
+	 */
+	 public TextTableIndexEntryTemplateElement newTextTableIndexEntryTemplateElement(String textStyleNameValue) {
+		TextTableIndexEntryTemplateElement textTableIndexEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableIndexEntryTemplateElement.class);
+		textTableIndexEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textTableIndexEntryTemplate);
+		return textTableIndexEntryTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentElement.java
new file mode 100644
index 0000000..1bb7abb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentElement.java
@@ -0,0 +1,251 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-of-content}.
+ *
+ */
+public class TextTableOfContentElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-of-content");
+
+	/**
+	 * Create the instance of <code>TextTableOfContentElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableOfContentElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-of-content}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content-source}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:table-of-content-source}
+	 */
+	public TextTableOfContentSourceElement newTextTableOfContentSourceElement() {
+		TextTableOfContentSourceElement textTableOfContentSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentSourceElement.class);
+		this.appendChild(textTableOfContentSource);
+		return textTableOfContentSource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentEntryTemplateElement.java
new file mode 100644
index 0000000..58cec02
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentEntryTemplateElement.java
@@ -0,0 +1,206 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-of-content-entry-template}.
+ *
+ */
+public class TextTableOfContentEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-of-content-entry-template");
+
+	/**
+	 * Create the instance of <code>TextTableOfContentEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableOfContentEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-of-content-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-chapter}.
+	 *
+	 * @return the element {@odf.element text:index-entry-chapter}
+	 */
+	public TextIndexEntryChapterElement newTextIndexEntryChapterElement() {
+		TextIndexEntryChapterElement textIndexEntryChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryChapterElement.class);
+		this.appendChild(textIndexEntryChapter);
+		return textIndexEntryChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-link-end}.
+	 *
+	 * @return the element {@odf.element text:index-entry-link-end}
+	 */
+	public TextIndexEntryLinkEndElement newTextIndexEntryLinkEndElement() {
+		TextIndexEntryLinkEndElement textIndexEntryLinkEnd = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryLinkEndElement.class);
+		this.appendChild(textIndexEntryLinkEnd);
+		return textIndexEntryLinkEnd;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-link-start}.
+	 *
+	 * @return the element {@odf.element text:index-entry-link-start}
+	 */
+	public TextIndexEntryLinkStartElement newTextIndexEntryLinkStartElement() {
+		TextIndexEntryLinkStartElement textIndexEntryLinkStart = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryLinkStartElement.class);
+		this.appendChild(textIndexEntryLinkStart);
+		return textIndexEntryLinkStart;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-page-number}.
+	 *
+	 * @return the element {@odf.element text:index-entry-page-number}
+	 */
+	public TextIndexEntryPageNumberElement newTextIndexEntryPageNumberElement() {
+		TextIndexEntryPageNumberElement textIndexEntryPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryPageNumberElement.class);
+		this.appendChild(textIndexEntryPageNumber);
+		return textIndexEntryPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-text}.
+	 *
+	 * @return the element {@odf.element text:index-entry-text}
+	 */
+	public TextIndexEntryTextElement newTextIndexEntryTextElement() {
+		TextIndexEntryTextElement textIndexEntryText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTextElement.class);
+		this.appendChild(textIndexEntryText);
+		return textIndexEntryText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentSourceElement.java
new file mode 100644
index 0000000..67d027d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTableOfContentSourceElement.java
@@ -0,0 +1,260 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexScopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRelativeTabStopPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseIndexMarksAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseIndexSourceStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseOutlineLevelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:table-of-content-source}.
+ *
+ */
+public class TextTableOfContentSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "table-of-content-source");
+
+	/**
+	 * Create the instance of <code>TextTableOfContentSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTableOfContentSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:table-of-content-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexScopeAttribute() {
+		TextIndexScopeAttribute attr = (TextIndexScopeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-scope");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @param textIndexScopeValue   The type is <code>String</code>
+	 */
+	public void setTextIndexScopeAttribute(String textIndexScopeValue) {
+		TextIndexScopeAttribute attr = new TextIndexScopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexScopeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRelativeTabStopPositionAttribute() {
+		TextRelativeTabStopPositionAttribute attr = (TextRelativeTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @param textRelativeTabStopPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRelativeTabStopPositionAttribute(Boolean textRelativeTabStopPositionValue) {
+		TextRelativeTabStopPositionAttribute attr = new TextRelativeTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRelativeTabStopPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseIndexMarksAttribute</code> , See {@odf.attribute text:use-index-marks}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseIndexMarksAttribute() {
+		TextUseIndexMarksAttribute attr = (TextUseIndexMarksAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-index-marks");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseIndexMarksAttribute</code> , See {@odf.attribute text:use-index-marks}
+	 *
+	 * @param textUseIndexMarksValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseIndexMarksAttribute(Boolean textUseIndexMarksValue) {
+		TextUseIndexMarksAttribute attr = new TextUseIndexMarksAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseIndexMarksValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseIndexSourceStylesAttribute</code> , See {@odf.attribute text:use-index-source-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseIndexSourceStylesAttribute() {
+		TextUseIndexSourceStylesAttribute attr = (TextUseIndexSourceStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-index-source-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseIndexSourceStylesAttribute</code> , See {@odf.attribute text:use-index-source-styles}
+	 *
+	 * @param textUseIndexSourceStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseIndexSourceStylesAttribute(Boolean textUseIndexSourceStylesValue) {
+		TextUseIndexSourceStylesAttribute attr = new TextUseIndexSourceStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseIndexSourceStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseOutlineLevelAttribute</code> , See {@odf.attribute text:use-outline-level}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseOutlineLevelAttribute() {
+		TextUseOutlineLevelAttribute attr = (TextUseOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-outline-level");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseOutlineLevelAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseOutlineLevelAttribute</code> , See {@odf.attribute text:use-outline-level}
+	 *
+	 * @param textUseOutlineLevelValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseOutlineLevelAttribute(Boolean textUseOutlineLevelValue) {
+		TextUseOutlineLevelAttribute attr = new TextUseOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseOutlineLevelValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-source-styles}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:index-source-styles}
+	 */
+	 public TextIndexSourceStylesElement newTextIndexSourceStylesElement(int textOutlineLevelValue) {
+		TextIndexSourceStylesElement textIndexSourceStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexSourceStylesElement.class);
+		textIndexSourceStyles.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textIndexSourceStyles);
+		return textIndexSourceStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:table-of-content-entry-template}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:table-of-content-entry-template}
+	 */
+	 public TextTableOfContentEntryTemplateElement newTextTableOfContentEntryTemplateElement(int textOutlineLevelValue, String textStyleNameValue) {
+		TextTableOfContentEntryTemplateElement textTableOfContentEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextTableOfContentEntryTemplateElement.class);
+		textTableOfContentEntryTemplate.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		textTableOfContentEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textTableOfContentEntryTemplate);
+		return textTableOfContentEntryTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTemplateNameElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTemplateNameElement.java
new file mode 100644
index 0000000..3ba6180
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTemplateNameElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:template-name}.
+ *
+ */
+public class TextTemplateNameElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "template-name");
+
+	/**
+	 * Create the instance of <code>TextTemplateNameElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTemplateNameElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:template-name}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTextInputElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTextInputElement.java
new file mode 100644
index 0000000..e57fb87
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTextInputElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDescriptionAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:text-input}.
+ *
+ */
+public class TextTextInputElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "text-input");
+
+	/**
+	 * Create the instance of <code>TextTextInputElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTextInputElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:text-input}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDescriptionAttribute() {
+		TextDescriptionAttribute attr = (TextDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @param textDescriptionValue   The type is <code>String</code>
+	 */
+	public void setTextDescriptionAttribute(String textDescriptionValue) {
+		TextDescriptionAttribute attr = new TextDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDescriptionValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTimeElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTimeElement.java
new file mode 100644
index 0000000..7735d9e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTimeElement.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTimeAdjustAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTimeValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:time}.
+ *
+ */
+public class TextTimeElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "time");
+
+	/**
+	 * Create the instance of <code>TextTimeElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTimeElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:time}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTimeAdjustAttribute</code> , See {@odf.attribute text:time-adjust}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTimeAdjustAttribute() {
+		TextTimeAdjustAttribute attr = (TextTimeAdjustAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "time-adjust");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTimeAdjustAttribute</code> , See {@odf.attribute text:time-adjust}
+	 *
+	 * @param textTimeAdjustValue   The type is <code>String</code>
+	 */
+	public void setTextTimeAdjustAttribute(String textTimeAdjustValue) {
+		TextTimeAdjustAttribute attr = new TextTimeAdjustAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTimeAdjustValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextTimeValueAttribute() {
+		TextTimeValueAttribute attr = (TextTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTimeValueAttribute</code> , See {@odf.attribute text:time-value}
+	 *
+	 * @param textTimeValueValue   The type is <code>String</code>
+	 */
+	public void setTextTimeValueAttribute(String textTimeValueValue) {
+		TextTimeValueAttribute attr = new TextTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textTimeValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTitleElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTitleElement.java
new file mode 100644
index 0000000..f924405
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTitleElement.java
@@ -0,0 +1,104 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:title}.
+ *
+ */
+public class TextTitleElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "title");
+
+	/**
+	 * Create the instance of <code>TextTitleElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTitleElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:title}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkElement.java
new file mode 100644
index 0000000..913c699
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:toc-mark}.
+ *
+ */
+public class TextTocMarkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "toc-mark");
+
+	/**
+	 * Create the instance of <code>TextTocMarkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTocMarkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:toc-mark}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueAttribute() {
+		TextStringValueAttribute attr = (TextStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * @param textStringValueValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueAttribute(String textStringValueValue) {
+		TextStringValueAttribute attr = new TextStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkEndElement.java
new file mode 100644
index 0000000..87d910c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:toc-mark-end}.
+ *
+ */
+public class TextTocMarkEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "toc-mark-end");
+
+	/**
+	 * Create the instance of <code>TextTocMarkEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTocMarkEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:toc-mark-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkStartElement.java
new file mode 100644
index 0000000..1dcd9c1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTocMarkStartElement.java
@@ -0,0 +1,123 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:toc-mark-start}.
+ *
+ */
+public class TextTocMarkStartElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "toc-mark-start");
+
+	/**
+	 * Create the instance of <code>TextTocMarkStartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTocMarkStartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:toc-mark-start}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTrackedChangesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTrackedChangesElement.java
new file mode 100644
index 0000000..a83862b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextTrackedChangesElement.java
@@ -0,0 +1,109 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextTrackChangesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:tracked-changes}.
+ *
+ */
+public class TextTrackedChangesElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "tracked-changes");
+
+	/**
+	 * Create the instance of <code>TextTrackedChangesElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextTrackedChangesElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:tracked-changes}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextTrackChangesAttribute</code> , See {@odf.attribute text:track-changes}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextTrackChangesAttribute() {
+		TextTrackChangesAttribute attr = (TextTrackChangesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "track-changes");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextTrackChangesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextTrackChangesAttribute</code> , See {@odf.attribute text:track-changes}
+	 *
+	 * @param textTrackChangesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextTrackChangesAttribute(Boolean textTrackChangesValue) {
+		TextTrackChangesAttribute attr = new TextTrackChangesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textTrackChangesValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:changed-region}.
+	 *
+	 * @param xmlIdValue  the <code>String</code> value of <code>XmlIdAttribute</code>, see {@odf.attribute  xml:id} at specification
+	 * @return the element {@odf.element text:changed-region}
+	 */
+	 public TextChangedRegionElement newTextChangedRegionElement(String xmlIdValue) {
+		TextChangedRegionElement textChangedRegion = ((OdfFileDom) this.ownerDocument).newOdfElement(TextChangedRegionElement.class);
+		textChangedRegion.setXmlIdAttribute(xmlIdValue);
+		this.appendChild(textChangedRegion);
+		return textChangedRegion;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserDefinedElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserDefinedElement.java
new file mode 100644
index 0000000..d3091cb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserDefinedElement.java
@@ -0,0 +1,281 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFixedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-defined}.
+ *
+ */
+public class TextUserDefinedElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-defined");
+
+	/**
+	 * Create the instance of <code>TextUserDefinedElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserDefinedElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-defined}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextFixedAttribute() {
+		TextFixedAttribute attr = (TextFixedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "fixed");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFixedAttribute</code> , See {@odf.attribute text:fixed}
+	 *
+	 * @param textFixedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextFixedAttribute(Boolean textFixedValue) {
+		TextFixedAttribute attr = new TextFixedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textFixedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldDeclElement.java
new file mode 100644
index 0000000..88c5f8d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldDeclElement.java
@@ -0,0 +1,302 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-field-decl}.
+ *
+ */
+public class TextUserFieldDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-field-decl");
+
+	/**
+	 * Create the instance of <code>TextUserFieldDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserFieldDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-field-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFormulaAttribute() {
+		TextFormulaAttribute attr = (TextFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @param textFormulaValue   The type is <code>String</code>
+	 */
+	public void setTextFormulaAttribute(String textFormulaValue) {
+		TextFormulaAttribute attr = new TextFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldDeclsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldDeclsElement.java
new file mode 100644
index 0000000..138717f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldDeclsElement.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-field-decls}.
+ *
+ */
+public class TextUserFieldDeclsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-field-decls");
+
+	/**
+	 * Create the instance of <code>TextUserFieldDeclsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserFieldDeclsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-field-decls}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-field-decl}.
+	 *
+	 * @param officeValueValue  the <code>Double</code> value of <code>OfficeValueAttribute</code>, see {@odf.attribute  office:value} at specification
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:user-field-decl}
+	 */
+	 public TextUserFieldDeclElement newTextUserFieldDeclElement(double officeValueValue, String officeValueTypeValue, String textNameValue) {
+		TextUserFieldDeclElement textUserFieldDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserFieldDeclElement.class);
+		textUserFieldDecl.setOfficeValueAttribute(officeValueValue);
+		textUserFieldDecl.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textUserFieldDecl.setTextNameAttribute(textNameValue);
+		this.appendChild(textUserFieldDecl);
+		return textUserFieldDecl;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldGetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldGetElement.java
new file mode 100644
index 0000000..0b915ae
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldGetElement.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-field-get}.
+ *
+ */
+public class TextUserFieldGetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-field-get");
+
+	/**
+	 * Create the instance of <code>TextUserFieldGetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserFieldGetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-field-get}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldInputElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldInputElement.java
new file mode 100644
index 0000000..1da765b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserFieldInputElement.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-field-input}.
+ *
+ */
+public class TextUserFieldInputElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-field-input");
+
+	/**
+	 * Create the instance of <code>TextUserFieldInputElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserFieldInputElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-field-input}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDescriptionAttribute() {
+		TextDescriptionAttribute attr = (TextDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @param textDescriptionValue   The type is <code>String</code>
+	 */
+	public void setTextDescriptionAttribute(String textDescriptionValue) {
+		TextDescriptionAttribute attr = new TextDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexElement.java
new file mode 100644
index 0000000..035da7e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexElement.java
@@ -0,0 +1,253 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectedAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextProtectionKeyDigestAlgorithmAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.xml.XmlIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-index}.
+ *
+ */
+public class TextUserIndexElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-index");
+
+	/**
+	 * Create the instance of <code>TextUserIndexElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserIndexElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Section, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-index}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextProtectedAttribute() {
+		TextProtectedAttribute attr = (TextProtectedAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protected");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectedAttribute</code> , See {@odf.attribute text:protected}
+	 *
+	 * @param textProtectedValue   The type is <code>Boolean</code>
+	 */
+	public void setTextProtectedAttribute(Boolean textProtectedValue) {
+		TextProtectedAttribute attr = new TextProtectedAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textProtectedValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyAttribute() {
+		TextProtectionKeyAttribute attr = (TextProtectionKeyAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyAttribute</code> , See {@odf.attribute text:protection-key}
+	 *
+	 * @param textProtectionKeyValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyAttribute(String textProtectionKeyValue) {
+		TextProtectionKeyAttribute attr = new TextProtectionKeyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextProtectionKeyDigestAlgorithmAttribute() {
+		TextProtectionKeyDigestAlgorithmAttribute attr = (TextProtectionKeyDigestAlgorithmAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "protection-key-digest-algorithm");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextProtectionKeyDigestAlgorithmAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextProtectionKeyDigestAlgorithmAttribute</code> , See {@odf.attribute text:protection-key-digest-algorithm}
+	 *
+	 * @param textProtectionKeyDigestAlgorithmValue   The type is <code>String</code>
+	 */
+	public void setTextProtectionKeyDigestAlgorithmAttribute(String textProtectionKeyDigestAlgorithmValue) {
+		TextProtectionKeyDigestAlgorithmAttribute attr = new TextProtectionKeyDigestAlgorithmAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textProtectionKeyDigestAlgorithmValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getXmlIdAttribute() {
+		XmlIdAttribute attr = (XmlIdAttribute) getOdfAttribute(OdfDocumentNamespace.XML, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>XmlIdAttribute</code> , See {@odf.attribute xml:id}
+	 *
+	 * @param xmlIdValue   The type is <code>String</code>
+	 */
+	public void setXmlIdAttribute(String xmlIdValue) {
+		XmlIdAttribute attr = new XmlIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(xmlIdValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-body}.
+	 *
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:index-body}
+	 */
+	public TextIndexBodyElement newTextIndexBodyElement() {
+		TextIndexBodyElement textIndexBody = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexBodyElement.class);
+		this.appendChild(textIndexBody);
+		return textIndexBody;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-source}.
+	 *
+	 * @param textIndexNameValue  the <code>String</code> value of <code>TextIndexNameAttribute</code>, see {@odf.attribute  text:index-name} at specification
+	 * Child element is mandatory.
+	 *
+	 * @return the element {@odf.element text:user-index-source}
+	 */
+	 public TextUserIndexSourceElement newTextUserIndexSourceElement(String textIndexNameValue) {
+		TextUserIndexSourceElement textUserIndexSource = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexSourceElement.class);
+		textUserIndexSource.setTextIndexNameAttribute(textIndexNameValue);
+		this.appendChild(textUserIndexSource);
+		return textUserIndexSource;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexEntryTemplateElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexEntryTemplateElement.java
new file mode 100644
index 0000000..79f9a33
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexEntryTemplateElement.java
@@ -0,0 +1,184 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleableShapeElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStyleNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-index-entry-template}.
+ *
+ */
+public class TextUserIndexEntryTemplateElement extends OdfStylableElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-index-entry-template");
+
+	/**
+	 * Create the instance of <code>TextUserIndexEntryTemplateElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserIndexEntryTemplateElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME, OdfStyleFamily.Paragraph, OdfName.newName(OdfDocumentNamespace.TEXT, "style-name"));
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-index-entry-template}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStyleNameAttribute() {
+		TextStyleNameAttribute attr = (TextStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStyleNameAttribute</code> , See {@odf.attribute text:style-name}
+	 *
+	 * @param textStyleNameValue   The type is <code>String</code>
+	 */
+	public void setTextStyleNameAttribute(String textStyleNameValue) {
+		TextStyleNameAttribute attr = new TextStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStyleNameValue);
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-chapter}.
+	 *
+	 * @return the element {@odf.element text:index-entry-chapter}
+	 */
+	public TextIndexEntryChapterElement newTextIndexEntryChapterElement() {
+		TextIndexEntryChapterElement textIndexEntryChapter = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryChapterElement.class);
+		this.appendChild(textIndexEntryChapter);
+		return textIndexEntryChapter;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-page-number}.
+	 *
+	 * @return the element {@odf.element text:index-entry-page-number}
+	 */
+	public TextIndexEntryPageNumberElement newTextIndexEntryPageNumberElement() {
+		TextIndexEntryPageNumberElement textIndexEntryPageNumber = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryPageNumberElement.class);
+		this.appendChild(textIndexEntryPageNumber);
+		return textIndexEntryPageNumber;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-span}.
+	 *
+	 * @return the element {@odf.element text:index-entry-span}
+	 */
+	public TextIndexEntrySpanElement newTextIndexEntrySpanElement() {
+		TextIndexEntrySpanElement textIndexEntrySpan = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntrySpanElement.class);
+		this.appendChild(textIndexEntrySpan);
+		return textIndexEntrySpan;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-tab-stop}.
+	 *
+	 * @param styleTypeValue  the <code>String</code> value of <code>StyleTypeAttribute</code>, see {@odf.attribute  style:type} at specification
+	 * @return the element {@odf.element text:index-entry-tab-stop}
+	 */
+	 public TextIndexEntryTabStopElement newTextIndexEntryTabStopElement(String styleTypeValue) {
+		TextIndexEntryTabStopElement textIndexEntryTabStop = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTabStopElement.class);
+		textIndexEntryTabStop.setStyleTypeAttribute(styleTypeValue);
+		this.appendChild(textIndexEntryTabStop);
+		return textIndexEntryTabStop;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-entry-text}.
+	 *
+	 * @return the element {@odf.element text:index-entry-text}
+	 */
+	public TextIndexEntryTextElement newTextIndexEntryTextElement() {
+		TextIndexEntryTextElement textIndexEntryText = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexEntryTextElement.class);
+		this.appendChild(textIndexEntryText);
+		return textIndexEntryText;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkElement.java
new file mode 100644
index 0000000..a228deb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextStringValueAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-index-mark}.
+ *
+ */
+public class TextUserIndexMarkElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-index-mark");
+
+	/**
+	 * Create the instance of <code>TextUserIndexMarkElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserIndexMarkElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-index-mark}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexNameAttribute</code> , See {@odf.attribute text:index-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexNameAttribute() {
+		TextIndexNameAttribute attr = (TextIndexNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexNameAttribute</code> , See {@odf.attribute text:index-name}
+	 *
+	 * @param textIndexNameValue   The type is <code>String</code>
+	 */
+	public void setTextIndexNameAttribute(String textIndexNameValue) {
+		TextIndexNameAttribute attr = new TextIndexNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextStringValueAttribute() {
+		TextStringValueAttribute attr = (TextStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextStringValueAttribute</code> , See {@odf.attribute text:string-value}
+	 *
+	 * @param textStringValueValue   The type is <code>String</code>
+	 */
+	public void setTextStringValueAttribute(String textStringValueValue) {
+		TextStringValueAttribute attr = new TextStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textStringValueValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkEndElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkEndElement.java
new file mode 100644
index 0000000..6c70256
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkEndElement.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-index-mark-end}.
+ *
+ */
+public class TextUserIndexMarkEndElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-index-mark-end");
+
+	/**
+	 * Create the instance of <code>TextUserIndexMarkEndElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserIndexMarkEndElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-index-mark-end}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkStartElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkStartElement.java
new file mode 100644
index 0000000..c09aa5d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexMarkStartElement.java
@@ -0,0 +1,150 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIdAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextOutlineLevelAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-index-mark-start}.
+ *
+ */
+public class TextUserIndexMarkStartElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-index-mark-start");
+
+	/**
+	 * Create the instance of <code>TextUserIndexMarkStartElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserIndexMarkStartElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-index-mark-start}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIdAttribute() {
+		TextIdAttribute attr = (TextIdAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "id");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIdAttribute</code> , See {@odf.attribute text:id}
+	 *
+	 * @param textIdValue   The type is <code>String</code>
+	 */
+	public void setTextIdAttribute(String textIdValue) {
+		TextIdAttribute attr = new TextIdAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIdValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexNameAttribute</code> , See {@odf.attribute text:index-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexNameAttribute() {
+		TextIndexNameAttribute attr = (TextIndexNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexNameAttribute</code> , See {@odf.attribute text:index-name}
+	 *
+	 * @param textIndexNameValue   The type is <code>String</code>
+	 */
+	public void setTextIndexNameAttribute(String textIndexNameValue) {
+		TextIndexNameAttribute attr = new TextIndexNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTextOutlineLevelAttribute() {
+		TextOutlineLevelAttribute attr = (TextOutlineLevelAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "outline-level");
+		if (attr != null) {
+			return Integer.valueOf(attr.intValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextOutlineLevelAttribute</code> , See {@odf.attribute text:outline-level}
+	 *
+	 * @param textOutlineLevelValue   The type is <code>Integer</code>
+	 */
+	public void setTextOutlineLevelAttribute(Integer textOutlineLevelValue) {
+		TextOutlineLevelAttribute attr = new TextOutlineLevelAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setIntValue(textOutlineLevelValue.intValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexSourceElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexSourceElement.java
new file mode 100644
index 0000000..ac9205a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextUserIndexSourceElement.java
@@ -0,0 +1,362 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.text.TextCopyOutlineLevelsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextIndexScopeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextRelativeTabStopPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseFloatingFramesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseGraphicsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseIndexMarksAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseIndexSourceStylesAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseObjectsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextUseTablesAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:user-index-source}.
+ *
+ */
+public class TextUserIndexSourceElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "user-index-source");
+
+	/**
+	 * Create the instance of <code>TextUserIndexSourceElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextUserIndexSourceElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:user-index-source}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextCopyOutlineLevelsAttribute</code> , See {@odf.attribute text:copy-outline-levels}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextCopyOutlineLevelsAttribute() {
+		TextCopyOutlineLevelsAttribute attr = (TextCopyOutlineLevelsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "copy-outline-levels");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextCopyOutlineLevelsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextCopyOutlineLevelsAttribute</code> , See {@odf.attribute text:copy-outline-levels}
+	 *
+	 * @param textCopyOutlineLevelsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextCopyOutlineLevelsAttribute(Boolean textCopyOutlineLevelsValue) {
+		TextCopyOutlineLevelsAttribute attr = new TextCopyOutlineLevelsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textCopyOutlineLevelsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexNameAttribute</code> , See {@odf.attribute text:index-name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexNameAttribute() {
+		TextIndexNameAttribute attr = (TextIndexNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexNameAttribute</code> , See {@odf.attribute text:index-name}
+	 *
+	 * @param textIndexNameValue   The type is <code>String</code>
+	 */
+	public void setTextIndexNameAttribute(String textIndexNameValue) {
+		TextIndexNameAttribute attr = new TextIndexNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextIndexScopeAttribute() {
+		TextIndexScopeAttribute attr = (TextIndexScopeAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "index-scope");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return TextIndexScopeAttribute.DEFAULT_VALUE;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextIndexScopeAttribute</code> , See {@odf.attribute text:index-scope}
+	 *
+	 * @param textIndexScopeValue   The type is <code>String</code>
+	 */
+	public void setTextIndexScopeAttribute(String textIndexScopeValue) {
+		TextIndexScopeAttribute attr = new TextIndexScopeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textIndexScopeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextRelativeTabStopPositionAttribute() {
+		TextRelativeTabStopPositionAttribute attr = (TextRelativeTabStopPositionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "relative-tab-stop-position");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextRelativeTabStopPositionAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextRelativeTabStopPositionAttribute</code> , See {@odf.attribute text:relative-tab-stop-position}
+	 *
+	 * @param textRelativeTabStopPositionValue   The type is <code>Boolean</code>
+	 */
+	public void setTextRelativeTabStopPositionAttribute(Boolean textRelativeTabStopPositionValue) {
+		TextRelativeTabStopPositionAttribute attr = new TextRelativeTabStopPositionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textRelativeTabStopPositionValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseFloatingFramesAttribute</code> , See {@odf.attribute text:use-floating-frames}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseFloatingFramesAttribute() {
+		TextUseFloatingFramesAttribute attr = (TextUseFloatingFramesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-floating-frames");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseFloatingFramesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseFloatingFramesAttribute</code> , See {@odf.attribute text:use-floating-frames}
+	 *
+	 * @param textUseFloatingFramesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseFloatingFramesAttribute(Boolean textUseFloatingFramesValue) {
+		TextUseFloatingFramesAttribute attr = new TextUseFloatingFramesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseFloatingFramesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseGraphicsAttribute</code> , See {@odf.attribute text:use-graphics}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseGraphicsAttribute() {
+		TextUseGraphicsAttribute attr = (TextUseGraphicsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-graphics");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseGraphicsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseGraphicsAttribute</code> , See {@odf.attribute text:use-graphics}
+	 *
+	 * @param textUseGraphicsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseGraphicsAttribute(Boolean textUseGraphicsValue) {
+		TextUseGraphicsAttribute attr = new TextUseGraphicsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseGraphicsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseIndexMarksAttribute</code> , See {@odf.attribute text:use-index-marks}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseIndexMarksAttribute() {
+		TextUseIndexMarksAttribute attr = (TextUseIndexMarksAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-index-marks");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseIndexMarksAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseIndexMarksAttribute</code> , See {@odf.attribute text:use-index-marks}
+	 *
+	 * @param textUseIndexMarksValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseIndexMarksAttribute(Boolean textUseIndexMarksValue) {
+		TextUseIndexMarksAttribute attr = new TextUseIndexMarksAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseIndexMarksValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseIndexSourceStylesAttribute</code> , See {@odf.attribute text:use-index-source-styles}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseIndexSourceStylesAttribute() {
+		TextUseIndexSourceStylesAttribute attr = (TextUseIndexSourceStylesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-index-source-styles");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseIndexSourceStylesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseIndexSourceStylesAttribute</code> , See {@odf.attribute text:use-index-source-styles}
+	 *
+	 * @param textUseIndexSourceStylesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseIndexSourceStylesAttribute(Boolean textUseIndexSourceStylesValue) {
+		TextUseIndexSourceStylesAttribute attr = new TextUseIndexSourceStylesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseIndexSourceStylesValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseObjectsAttribute</code> , See {@odf.attribute text:use-objects}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseObjectsAttribute() {
+		TextUseObjectsAttribute attr = (TextUseObjectsAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-objects");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseObjectsAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseObjectsAttribute</code> , See {@odf.attribute text:use-objects}
+	 *
+	 * @param textUseObjectsValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseObjectsAttribute(Boolean textUseObjectsValue) {
+		TextUseObjectsAttribute attr = new TextUseObjectsAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseObjectsValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextUseTablesAttribute</code> , See {@odf.attribute text:use-tables}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getTextUseTablesAttribute() {
+		TextUseTablesAttribute attr = (TextUseTablesAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "use-tables");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return Boolean.valueOf(TextUseTablesAttribute.DEFAULT_VALUE);
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextUseTablesAttribute</code> , See {@odf.attribute text:use-tables}
+	 *
+	 * @param textUseTablesValue   The type is <code>Boolean</code>
+	 */
+	public void setTextUseTablesAttribute(Boolean textUseTablesValue) {
+		TextUseTablesAttribute attr = new TextUseTablesAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(textUseTablesValue.booleanValue());
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-source-styles}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @return the element {@odf.element text:index-source-styles}
+	 */
+	 public TextIndexSourceStylesElement newTextIndexSourceStylesElement(int textOutlineLevelValue) {
+		TextIndexSourceStylesElement textIndexSourceStyles = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexSourceStylesElement.class);
+		textIndexSourceStyles.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		this.appendChild(textIndexSourceStyles);
+		return textIndexSourceStyles;
+	}
+
+	/**
+	 * Create child element {@odf.element text:index-title-template}.
+	 *
+	 * @return the element {@odf.element text:index-title-template}
+	 */
+	public TextIndexTitleTemplateElement newTextIndexTitleTemplateElement() {
+		TextIndexTitleTemplateElement textIndexTitleTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextIndexTitleTemplateElement.class);
+		this.appendChild(textIndexTitleTemplate);
+		return textIndexTitleTemplate;
+	}
+
+	/**
+	 * Create child element {@odf.element text:user-index-entry-template}.
+	 *
+	 * @param textOutlineLevelValue  the <code>Integer</code> value of <code>TextOutlineLevelAttribute</code>, see {@odf.attribute  text:outline-level} at specification
+	 * @param textStyleNameValue  the <code>String</code> value of <code>TextStyleNameAttribute</code>, see {@odf.attribute  text:style-name} at specification
+	 * @return the element {@odf.element text:user-index-entry-template}
+	 */
+	 public TextUserIndexEntryTemplateElement newTextUserIndexEntryTemplateElement(int textOutlineLevelValue, String textStyleNameValue) {
+		TextUserIndexEntryTemplateElement textUserIndexEntryTemplate = ((OdfFileDom) this.ownerDocument).newOdfElement(TextUserIndexEntryTemplateElement.class);
+		textUserIndexEntryTemplate.setTextOutlineLevelAttribute(textOutlineLevelValue);
+		textUserIndexEntryTemplate.setTextStyleNameAttribute(textStyleNameValue);
+		this.appendChild(textUserIndexEntryTemplate);
+		return textUserIndexEntryTemplate;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableDeclElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableDeclElement.java
new file mode 100644
index 0000000..f6a75a5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableDeclElement.java
@@ -0,0 +1,125 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:variable-decl}.
+ *
+ */
+public class TextVariableDeclElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "variable-decl");
+
+	/**
+	 * Create the instance of <code>TextVariableDeclElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextVariableDeclElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:variable-decl}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableDeclsElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableDeclsElement.java
new file mode 100644
index 0000000..f3e639e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableDeclsElement.java
@@ -0,0 +1,86 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:variable-decls}.
+ *
+ */
+public class TextVariableDeclsElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "variable-decls");
+
+	/**
+	 * Create the instance of <code>TextVariableDeclsElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextVariableDeclsElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:variable-decls}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Create child element {@odf.element text:variable-decl}.
+	 *
+	 * @param officeValueTypeValue  the <code>String</code> value of <code>OfficeValueTypeAttribute</code>, see {@odf.attribute  office:value-type} at specification
+	 * @param textNameValue  the <code>String</code> value of <code>TextNameAttribute</code>, see {@odf.attribute  text:name} at specification
+	 * @return the element {@odf.element text:variable-decl}
+	 */
+	 public TextVariableDeclElement newTextVariableDeclElement(String officeValueTypeValue, String textNameValue) {
+		TextVariableDeclElement textVariableDecl = ((OdfFileDom) this.ownerDocument).newOdfElement(TextVariableDeclElement.class);
+		textVariableDecl.setOfficeValueTypeAttribute(officeValueTypeValue);
+		textVariableDecl.setTextNameAttribute(textNameValue);
+		this.appendChild(textVariableDecl);
+		return textVariableDecl;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableGetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableGetElement.java
new file mode 100644
index 0000000..312a8d0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableGetElement.java
@@ -0,0 +1,156 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:variable-get}.
+ *
+ */
+public class TextVariableGetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "variable-get");
+
+	/**
+	 * Create the instance of <code>TextVariableGetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextVariableGetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:variable-get}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableInputElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableInputElement.java
new file mode 100644
index 0000000..4849b91
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableInputElement.java
@@ -0,0 +1,208 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDescriptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:variable-input}.
+ *
+ */
+public class TextVariableInputElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "variable-input");
+
+	/**
+	 * Create the instance of <code>TextVariableInputElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextVariableInputElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:variable-input}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDescriptionAttribute() {
+		TextDescriptionAttribute attr = (TextDescriptionAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "description");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDescriptionAttribute</code> , See {@odf.attribute text:description}
+	 *
+	 * @param textDescriptionValue   The type is <code>String</code>
+	 */
+	public void setTextDescriptionAttribute(String textDescriptionValue) {
+		TextDescriptionAttribute attr = new TextDescriptionAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDescriptionValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableSetElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableSetElement.java
new file mode 100644
index 0000000..351bc52
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextVariableSetElement.java
@@ -0,0 +1,360 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeBooleanValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeCurrencyAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeDateValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeStringValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeTimeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDataStyleNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextDisplayAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextFormulaAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextNameAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:variable-set}.
+ *
+ */
+public class TextVariableSetElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "variable-set");
+
+	/**
+	 * Create the instance of <code>TextVariableSetElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextVariableSetElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:variable-set}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getOfficeBooleanValueAttribute() {
+		OfficeBooleanValueAttribute attr = (OfficeBooleanValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "boolean-value");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeBooleanValueAttribute</code> , See {@odf.attribute office:boolean-value}
+	 *
+	 * @param officeBooleanValueValue   The type is <code>Boolean</code>
+	 */
+	public void setOfficeBooleanValueAttribute(Boolean officeBooleanValueValue) {
+		OfficeBooleanValueAttribute attr = new OfficeBooleanValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(officeBooleanValueValue.booleanValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeCurrencyAttribute() {
+		OfficeCurrencyAttribute attr = (OfficeCurrencyAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "currency");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeCurrencyAttribute</code> , See {@odf.attribute office:currency}
+	 *
+	 * @param officeCurrencyValue   The type is <code>String</code>
+	 */
+	public void setOfficeCurrencyAttribute(String officeCurrencyValue) {
+		OfficeCurrencyAttribute attr = new OfficeCurrencyAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeCurrencyValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeDateValueAttribute() {
+		OfficeDateValueAttribute attr = (OfficeDateValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "date-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeDateValueAttribute</code> , See {@odf.attribute office:date-value}
+	 *
+	 * @param officeDateValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeDateValueAttribute(String officeDateValueValue) {
+		OfficeDateValueAttribute attr = new OfficeDateValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeDateValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeStringValueAttribute() {
+		OfficeStringValueAttribute attr = (OfficeStringValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "string-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeStringValueAttribute</code> , See {@odf.attribute office:string-value}
+	 *
+	 * @param officeStringValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeStringValueAttribute(String officeStringValueValue) {
+		OfficeStringValueAttribute attr = new OfficeStringValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeStringValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeTimeValueAttribute() {
+		OfficeTimeValueAttribute attr = (OfficeTimeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "time-value");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeTimeValueAttribute</code> , See {@odf.attribute office:time-value}
+	 *
+	 * @param officeTimeValueValue   The type is <code>String</code>
+	 */
+	public void setOfficeTimeValueAttribute(String officeTimeValueValue) {
+		OfficeTimeValueAttribute attr = new OfficeTimeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeTimeValueValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>Double</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Double getOfficeValueAttribute() {
+		OfficeValueAttribute attr = (OfficeValueAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value");
+		if (attr != null) {
+			return Double.valueOf(attr.doubleValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueAttribute</code> , See {@odf.attribute office:value}
+	 *
+	 * @param officeValueValue   The type is <code>Double</code>
+	 */
+	public void setOfficeValueAttribute(Double officeValueValue) {
+		OfficeValueAttribute attr = new OfficeValueAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setDoubleValue(officeValueValue.doubleValue());
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getOfficeValueTypeAttribute() {
+		OfficeValueTypeAttribute attr = (OfficeValueTypeAttribute) getOdfAttribute(OdfDocumentNamespace.OFFICE, "value-type");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>OfficeValueTypeAttribute</code> , See {@odf.attribute office:value-type}
+	 *
+	 * @param officeValueTypeValue   The type is <code>String</code>
+	 */
+	public void setOfficeValueTypeAttribute(String officeValueTypeValue) {
+		OfficeValueTypeAttribute attr = new OfficeValueTypeAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(officeValueTypeValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleDataStyleNameAttribute() {
+		StyleDataStyleNameAttribute attr = (StyleDataStyleNameAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "data-style-name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleDataStyleNameAttribute</code> , See {@odf.attribute style:data-style-name}
+	 *
+	 * @param styleDataStyleNameValue   The type is <code>String</code>
+	 */
+	public void setStyleDataStyleNameAttribute(String styleDataStyleNameValue) {
+		StyleDataStyleNameAttribute attr = new StyleDataStyleNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleDataStyleNameValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextDisplayAttribute() {
+		TextDisplayAttribute attr = (TextDisplayAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "display");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextDisplayAttribute</code> , See {@odf.attribute text:display}
+	 *
+	 * @param textDisplayValue   The type is <code>String</code>
+	 */
+	public void setTextDisplayAttribute(String textDisplayValue) {
+		TextDisplayAttribute attr = new TextDisplayAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textDisplayValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextFormulaAttribute() {
+		TextFormulaAttribute attr = (TextFormulaAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "formula");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextFormulaAttribute</code> , See {@odf.attribute text:formula}
+	 *
+	 * @param textFormulaValue   The type is <code>String</code>
+	 */
+	public void setTextFormulaAttribute(String textFormulaValue) {
+		TextFormulaAttribute attr = new TextFormulaAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textFormulaValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getTextNameAttribute() {
+		TextNameAttribute attr = (TextNameAttribute) getOdfAttribute(OdfDocumentNamespace.TEXT, "name");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>TextNameAttribute</code> , See {@odf.attribute text:name}
+	 *
+	 * @param textNameValue   The type is <code>String</code>
+	 */
+	public void setTextNameAttribute(String textNameValue) {
+		TextNameAttribute attr = new TextNameAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(textNameValue);
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextWordCountElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextWordCountElement.java
new file mode 100644
index 0000000..c36e352
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/text/TextWordCountElement.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.text;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumLetterSyncAttribute;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element text:word-count}.
+ *
+ */
+public class TextWordCountElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "word-count");
+
+	/**
+	 * Create the instance of <code>TextWordCountElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public TextWordCountElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element text:word-count}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * Attribute is mandatory.
+	 *
+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public String getStyleNumFormatAttribute() {
+		StyleNumFormatAttribute attr = (StyleNumFormatAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-format");
+		if (attr != null) {
+			return String.valueOf(attr.getValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumFormatAttribute</code> , See {@odf.attribute style:num-format}
+	 *
+	 * @param styleNumFormatValue   The type is <code>String</code>
+	 */
+	public void setStyleNumFormatAttribute(String styleNumFormatValue) {
+		StyleNumFormatAttribute attr = new StyleNumFormatAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setValue(styleNumFormatValue);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @return - the <code>Boolean</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Boolean getStyleNumLetterSyncAttribute() {
+		StyleNumLetterSyncAttribute attr = (StyleNumLetterSyncAttribute) getOdfAttribute(OdfDocumentNamespace.STYLE, "num-letter-sync");
+		if (attr != null) {
+			return Boolean.valueOf(attr.booleanValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation <code>StyleNumLetterSyncAttribute</code> , See {@odf.attribute style:num-letter-sync}
+	 *
+	 * @param styleNumLetterSyncValue   The type is <code>Boolean</code>
+	 */
+	public void setStyleNumLetterSyncAttribute(Boolean styleNumLetterSyncValue) {
+		StyleNumLetterSyncAttribute attr = new StyleNumLetterSyncAttribute((OdfFileDom) this.ownerDocument);
+		setOdfAttribute(attr);
+		attr.setBooleanValue(styleNumLetterSyncValue.booleanValue());
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+	/**
+	 * Add text content. Only elements which are allowed to have text content offer this method.
+	 */
+	public void newTextNode(String content) {
+		if (content != null && !content.equals("")) {
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/xforms/XformsModelElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/xforms/XformsModelElement.java
new file mode 100644
index 0000000..d8abd3a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/element/xforms/XformsModelElement.java
@@ -0,0 +1,73 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.element.xforms;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.ElementVisitor;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+
+/**
+ * DOM implementation of OpenDocument element  {@odf.element xforms:model}.
+ *
+ * This class can have any org.w3c.dom.Element child element.
+ * This class can have any org.w3c.dom.Attribute attribute.
+ */
+public class XformsModelElement extends OdfElement {
+
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.XFORMS, "model");
+
+	/**
+	 * Create the instance of <code>XformsModelElement</code>
+	 *
+	 * @param  ownerDoc     The type is <code>OdfFileDom</code>
+	 */
+	public XformsModelElement(OdfFileDom ownerDoc) {
+		super(ownerDoc, ELEMENT_NAME);
+	}
+
+	/**
+	 * Get the element name
+	 *
+	 * @return  return   <code>OdfName</code> the name of element {@odf.element xforms:model}.
+	 */
+	public OdfName getOdfName() {
+		return ELEMENT_NAME;
+	}
+
+	@Override
+	public void accept(ElementVisitor visitor) {
+		if (visitor instanceof DefaultElementVisitor) {
+			DefaultElementVisitor defaultVisitor = (DefaultElementVisitor) visitor;
+			defaultVisitor.visit(this);
+		} else {
+			visitor.visit(this);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/rdfa/BookmarkRDFMetadataExtractor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/rdfa/BookmarkRDFMetadataExtractor.java
new file mode 100644
index 0000000..475514c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/rdfa/BookmarkRDFMetadataExtractor.java
@@ -0,0 +1,320 @@
+/************************************************************************

+ *

+ * 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.dom.rdfa;

+

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+import java.util.Map.Entry;

+

+import javax.xml.stream.XMLEventFactory;

+import javax.xml.stream.events.Attribute;

+import javax.xml.stream.events.StartElement;

+

+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkEndElement;

+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkStartElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.rdfa.DOMAttributes;

+import org.odftoolkit.odfdom.pkg.rdfa.JenaSink;

+import org.w3c.dom.Node;

+import org.xml.sax.Attributes;

+

+import com.hp.hpl.jena.rdf.model.Model;

+import com.hp.hpl.jena.rdf.model.ModelFactory;

+import com.hp.hpl.jena.rdf.model.Property;

+import com.hp.hpl.jena.rdf.model.Resource;

+

+/**

+ * This is a sub class of <code>DefaultElementVisitor</code>, which is used to

+ * extract metadata from {@odf.element text:bookmark-start} to

+ * {@odf.element text:bookmark-end} pair.

+ */

+public class BookmarkRDFMetadataExtractor extends DefaultElementVisitor {

+

+	protected static final char NewLineChar = '\n';

+	protected static final char TabChar = '\t';

+	private TextBookmarkStartElement bookmarkstart;

+	private boolean found;

+	protected final Map<TextBookmarkStartElement, ExtractorStringBuilder> builderMap;

+	protected final Map<TextBookmarkStartElement, String> stringMap;

+

+	private XMLEventFactory eventFactory = XMLEventFactory.newInstance();

+

+	private JenaSink sink;

+

+	/**

+	 * This class is used to provide the string builder functions to extractor.

+	 * It will automatically process the last NewLineChar.

+	 * 

+	 * @since 0.3.5

+	 */

+	protected static class ExtractorStringBuilder {

+		private StringBuilder mBuilder;

+		private boolean lastAppendNewLine;

+

+		ExtractorStringBuilder() {

+			mBuilder = new StringBuilder();

+			lastAppendNewLine = false;

+		}

+

+		/**

+		 * Append a string

+		 * 

+		 * @param str

+		 *            - the string

+		 */

+		public void append(String str) {

+			mBuilder.append(str);

+		}

+

+		/**

+		 * Append a character

+		 * 

+		 * @param ch

+		 *            - the character

+		 */

+		public void append(char ch) {

+			mBuilder.append(ch);

+		}

+

+		/**

+		 * Append a new line character at the end

+		 */

+		public void appendLine() {

+			mBuilder.append(NewLineChar);

+			lastAppendNewLine = true;

+		}

+

+		/**

+		 * Return the string value.

+		 * <p>

+		 * If the last character is a new line character and is appended with

+		 * appendLine(), the last new line character will be removed.

+		 */

+		public String toString() {

+			if (lastAppendNewLine) {

+				mBuilder.deleteCharAt(mBuilder.length() - 1);

+			}

+			return mBuilder.toString();

+		}

+	}

+

+	/**

+	 * Create a BookmarkRDFMetadataExtractor instance, which RDF metadata

+	 * content of bookmarks can be extracted by

+	 * <code>getBookmarkRDFMetadata()</code>.

+	 * 

+	 * @param element

+	 *            the ODF element whose text will be extracted.

+	 * @return an instance of BookmarkRDFMetadataExtractor

+	 */

+	public static BookmarkRDFMetadataExtractor newBookmarkTextExtractor() {

+		return new BookmarkRDFMetadataExtractor();

+	}

+

+	/**

+	 * Return the RDF metadata of specified ODF element as a Jena Model.

+	 * 

+	 * @return the text content as a string

+	 */

+	public Model getBookmarkRDFMetadata(OdfFileDom dom) {

+		this.bookmarkstart = null;

+		this.found = false;

+		this.sink = dom.getSink();

+		visit(dom.getRootElement());

+		return getModel();

+	}

+

+	public Model getBookmarkRDFMetadata(TextBookmarkStartElement bookmarkstart) {

+		this.bookmarkstart = bookmarkstart;

+		this.found = false;

+		this.sink = ((OdfFileDom) bookmarkstart.getOwnerDocument()).getSink();

+		visit(((OdfFileDom) bookmarkstart.getOwnerDocument()).getRootElement());

+		return getModel();

+	}

+

+	private Model getModel() {

+		Model m = ModelFactory.createDefaultModel();

+		for (Entry<TextBookmarkStartElement, String> entry : stringMap

+				.entrySet()) {

+			String xhtmlAbout = entry.getKey().getXhtmlAboutAttribute();

+			String xhtmlProperty = entry.getKey().getXhtmlPropertyAttribute();

+			String xhtmlContent = entry.getKey().getXhtmlContentAttribute();

+			if (xhtmlAbout != null && xhtmlProperty != null) {

+				String qname = entry.getKey().getNodeName();

+				String namespaceURI = entry.getKey().getNamespaceURI();

+				String localname = entry.getKey().getLocalName();

+				String prefix = (qname.indexOf(':') == -1) ? "" : qname

+						.substring(0, qname.indexOf(':'));

+

+				StartElement e = eventFactory.createStartElement(prefix,

+						namespaceURI, localname,

+						fromAttributes(new DOMAttributes(entry.getKey()

+								.getAttributes())), null, sink.getContext());

+

+				xhtmlAbout = sink.getExtractor().expandSafeCURIE(e, xhtmlAbout,

+						sink.getContext());

+				xhtmlProperty = sink.getExtractor().expandCURIE(e,

+						xhtmlProperty, sink.getContext());

+				Resource s = m.createResource(xhtmlAbout);

+				Property p = m.createProperty(xhtmlProperty);

+				if (xhtmlContent != null) {

+					s.addLiteral(p, xhtmlContent);

+				} else {

+					s.addLiteral(p, entry.getValue());

+				}

+

+			}

+		}

+		return m;

+	}

+

+	private Iterator fromAttributes(Attributes attributes) {

+		List toReturn = new LinkedList();

+

+		for (int i = 0; i < attributes.getLength(); i++) {

+			String qname = attributes.getQName(i);

+			String prefix = qname.contains(":") ? qname.substring(0,

+					qname.indexOf(":")) : "";

+			Attribute attr = eventFactory.createAttribute(prefix,

+					attributes.getURI(i), attributes.getLocalName(i),

+					attributes.getValue(i));

+

+			if (!qname.equals("xmlns") && !qname.startsWith("xmlns:"))

+				toReturn.add(attr);

+		}

+

+		return toReturn.iterator();

+	}

+

+	/**

+	 * Constructor with an ODF element as parameter

+	 * 

+	 * @param element

+	 *            the ODF element whose text would be extracted.

+	 */

+	private BookmarkRDFMetadataExtractor() {

+		builderMap = new HashMap<TextBookmarkStartElement, ExtractorStringBuilder>();

+		stringMap = new HashMap<TextBookmarkStartElement, String>();

+	}

+

+	/**

+	 * The end users needn't to care of this method, if you don't want to

+	 * override the text content handling strategy of <code>OdfElement</code>.

+	 * 

+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.pkg.OdfElement)

+	 */

+	@Override

+	public void visit(OdfElement element) {

+		if (bookmarkstart != null && found) {

+			return;

+		}

+		if (this.bookmarkstart == null) {

+			if (element instanceof TextBookmarkStartElement) {

+				builderMap.put((TextBookmarkStartElement) element,

+						new ExtractorStringBuilder());

+			}

+

+		} else {

+			if (element == bookmarkstart) {

+				builderMap.put((TextBookmarkStartElement) element,

+						new ExtractorStringBuilder());

+			}

+		}

+		appendElementText(element);

+		if (element.getNamespaceURI()

+				.equals(OdfDocumentNamespace.META.getUri())

+				|| element.getNamespaceURI().equals(

+						OdfDocumentNamespace.DC.getUri())) {

+			// textBuilderAppendLine();

+		}

+	}

+

+	/**

+	 * Append the text content of this element to string buffer.

+	 * 

+	 * @param ele

+	 *            the ODF element whose text will be appended.

+	 */

+	private void appendElementText(OdfElement ele) {

+		Node node = ele.getFirstChild();

+		while (node != null) {

+			if (node.getNodeType() == Node.TEXT_NODE) {

+				textBuilderAppend(node.getNodeValue());

+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {

+				if (node instanceof TextBookmarkEndElement) {

+					TextBookmarkEndElement end = (TextBookmarkEndElement) node;

+					endBookmark(end);

+				}

+

+				OdfElement element = (OdfElement) node;

+				element.accept(this);

+			}

+			node = node.getNextSibling();

+		}

+	}

+

+	private void textBuilderAppendLine() {

+		for (Entry<TextBookmarkStartElement, ExtractorStringBuilder> entry : builderMap

+				.entrySet()) {

+			entry.getValue().appendLine();

+		}

+	}

+

+	private void textBuilderAppend(char ch) {

+		for (Entry<TextBookmarkStartElement, ExtractorStringBuilder> entry : builderMap

+				.entrySet()) {

+			entry.getValue().append(ch);

+		}

+	}

+

+	private void textBuilderAppend(String str) {

+		for (Entry<TextBookmarkStartElement, ExtractorStringBuilder> entry : builderMap

+				.entrySet()) {

+			entry.getValue().append(str);

+		}

+	}

+

+	private void endBookmark(TextBookmarkEndElement end) {

+		TextBookmarkStartElement start = null;

+		for (Entry<TextBookmarkStartElement, ExtractorStringBuilder> entry : builderMap

+				.entrySet()) {

+			if (entry.getKey().getTextNameAttribute()

+					.equals(end.getTextNameAttribute())) {

+				start = entry.getKey();

+				break;

+			}

+		}

+		if (start != null) {

+			stringMap.put(start, builderMap.get(start).toString());

+			builderMap.remove(start);

+			if (bookmarkstart != null) {

+				found = true;

+			}

+		}

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/OdfStyleFamily.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/OdfStyleFamily.java
new file mode 100644
index 0000000..912b818
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/OdfStyleFamily.java
@@ -0,0 +1,7672 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.dom.style;
+
+import java.util.Arrays;
+import java.util.Collections;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Map;
+import java.util.HashMap;
+import org.odftoolkit.odfdom.dom.element.style.StyleChartPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDrawingPagePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderFooterPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleRubyPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleSectionPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableRowPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+
+public class OdfStyleFamily implements Comparable<OdfStyleFamily> {
+
+	private String m_name;
+	private Set<OdfStyleProperty> m_properties = new TreeSet<OdfStyleProperty>();
+	private static Map<String, OdfStyleFamily> m_familyByName = new HashMap<String, OdfStyleFamily>();
+
+	public static OdfStyleFamily getByName(String name) {
+		return m_familyByName.get(name);
+	}
+
+	private OdfStyleFamily(String name, OdfStyleProperty[] props) {
+		m_name = name;
+		m_properties.addAll(Arrays.asList(props));
+		m_familyByName.put(name, this);
+	}
+
+	private OdfStyleFamily(String name) {
+		m_name = name;
+		m_familyByName.put(name, this);
+	}
+		
+	public String getName() {
+		return m_name;
+	}
+
+	public int compareTo(OdfStyleFamily o) {
+		return m_name.compareTo(o.toString());
+	}
+
+	public static OdfStyleFamily valueOf(String name) {
+		OdfStyleFamily family = getByName(name);
+		if (family == null) {
+			family = new OdfStyleFamily(name);
+		} 
+		return family;
+	}
+
+	public static String toString(OdfStyleFamily family) {
+		if (family != null) {
+			return family.toString();
+		}
+		else {
+			return new String();
+		}
+	}
+
+	@Override
+	public String toString() {
+		return m_name;
+	}
+
+	public Set<OdfStyleProperty> getProperties() {
+		return Collections.unmodifiableSet(m_properties);
+	}
+
+	public final static OdfStyleFamily Chart = new OdfStyleFamily("chart",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily DrawingPage = new OdfStyleFamily("drawing-page",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Graphic = new OdfStyleFamily("graphic",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Presentation = new OdfStyleFamily("presentation",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Table = new OdfStyleFamily("table",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily TableCell = new OdfStyleFamily("table-cell",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily TableColumn = new OdfStyleFamily("table-column",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily TableRow = new OdfStyleFamily("table-row",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily List = new OdfStyleFamily("list",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Paragraph = new OdfStyleFamily("paragraph",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Ruby = new OdfStyleFamily("ruby",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Section = new OdfStyleFamily("section",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+	public final static OdfStyleFamily Text = new OdfStyleFamily("text",
+			new OdfStyleProperty[]{
+	StyleChartPropertiesElement.AngleOffset,
+	StyleChartPropertiesElement.AutoPosition,
+	StyleChartPropertiesElement.AutoSize,
+	StyleChartPropertiesElement.AxisLabelPosition,
+	StyleChartPropertiesElement.AxisPosition,
+	StyleChartPropertiesElement.ConnectBars,
+	StyleChartPropertiesElement.DataLabelNumber,
+	StyleChartPropertiesElement.DataLabelSymbol,
+	StyleChartPropertiesElement.DataLabelText,
+	StyleChartPropertiesElement.Deep,
+	StyleChartPropertiesElement.DisplayLabel,
+	StyleChartPropertiesElement.ErrorCategory,
+	StyleChartPropertiesElement.ErrorLowerIndicator,
+	StyleChartPropertiesElement.ErrorLowerLimit,
+	StyleChartPropertiesElement.ErrorLowerRange,
+	StyleChartPropertiesElement.ErrorMargin,
+	StyleChartPropertiesElement.ErrorPercentage,
+	StyleChartPropertiesElement.ErrorUpperIndicator,
+	StyleChartPropertiesElement.ErrorUpperLimit,
+	StyleChartPropertiesElement.ErrorUpperRange,
+	StyleChartPropertiesElement.GapWidth,
+	StyleChartPropertiesElement.GroupBarsPerAxis,
+	StyleChartPropertiesElement.HoleSize,
+	StyleChartPropertiesElement.IncludeHiddenCells,
+	StyleChartPropertiesElement.Interpolation,
+	StyleChartPropertiesElement.IntervalMajor,
+	StyleChartPropertiesElement.IntervalMinorDivisor,
+	StyleChartPropertiesElement.JapaneseCandleStick,
+	StyleChartPropertiesElement.LabelArrangement,
+	StyleChartPropertiesElement.LabelPosition,
+	StyleChartPropertiesElement.LabelPositionNegative,
+	StyleChartPropertiesElement.Lines,
+	StyleChartPropertiesElement.LinkDataStyleToSource,
+	StyleChartPropertiesElement.Logarithmic,
+	StyleChartPropertiesElement.Maximum,
+	StyleChartPropertiesElement.MeanValue,
+	StyleChartPropertiesElement.Minimum,
+	StyleChartPropertiesElement.Origin,
+	StyleChartPropertiesElement.Overlap,
+	StyleChartPropertiesElement.Percentage,
+	StyleChartPropertiesElement.PieOffset,
+	StyleChartPropertiesElement.RegressionType,
+	StyleChartPropertiesElement.ReverseDirection,
+	StyleChartPropertiesElement.RightAngledAxes,
+	StyleChartPropertiesElement.ScaleText,
+	StyleChartPropertiesElement.SeriesSource,
+	StyleChartPropertiesElement.SolidType,
+	StyleChartPropertiesElement.SortByXValues,
+	StyleChartPropertiesElement.SplineOrder,
+	StyleChartPropertiesElement.SplineResolution,
+	StyleChartPropertiesElement.Stacked,
+	StyleChartPropertiesElement.SymbolHeight,
+	StyleChartPropertiesElement.SymbolName,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolType,
+	StyleChartPropertiesElement.SymbolWidth,
+	StyleChartPropertiesElement.TextOverlap,
+	StyleChartPropertiesElement.ThreeDimensional,
+	StyleChartPropertiesElement.TickMarkPosition,
+	StyleChartPropertiesElement.TickMarksMajorInner,
+	StyleChartPropertiesElement.TickMarksMajorOuter,
+	StyleChartPropertiesElement.TickMarksMinorInner,
+	StyleChartPropertiesElement.TickMarksMinorOuter,
+	StyleChartPropertiesElement.TreatEmptyCells,
+	StyleChartPropertiesElement.Vertical,
+	StyleChartPropertiesElement.Visible,
+	StyleChartPropertiesElement.Direction,
+	StyleChartPropertiesElement.RotationAngle,
+	StyleChartPropertiesElement.LineBreak,
+	StyleDrawingPagePropertiesElement.BackgroundSize,
+	StyleDrawingPagePropertiesElement.Fill,
+	StyleDrawingPagePropertiesElement.FillColor,
+	StyleDrawingPagePropertiesElement.FillGradientName,
+	StyleDrawingPagePropertiesElement.FillHatchName,
+	StyleDrawingPagePropertiesElement.FillHatchSolid,
+	StyleDrawingPagePropertiesElement.FillImageHeight,
+	StyleDrawingPagePropertiesElement.FillImageName,
+	StyleDrawingPagePropertiesElement.FillImageRefPoint,
+	StyleDrawingPagePropertiesElement.FillImageRefPointX,
+	StyleDrawingPagePropertiesElement.FillImageRefPointY,
+	StyleDrawingPagePropertiesElement.FillImageWidth,
+	StyleDrawingPagePropertiesElement.GradientStepCount,
+	StyleDrawingPagePropertiesElement.Opacity,
+	StyleDrawingPagePropertiesElement.OpacityName,
+	StyleDrawingPagePropertiesElement.SecondaryFillColor,
+	StyleDrawingPagePropertiesElement.TileRepeatOffset,
+	StyleDrawingPagePropertiesElement.BackgroundObjectsVisible,
+	StyleDrawingPagePropertiesElement.BackgroundVisible,
+	StyleDrawingPagePropertiesElement.DisplayDateTime,
+	StyleDrawingPagePropertiesElement.DisplayFooter,
+	StyleDrawingPagePropertiesElement.DisplayHeader,
+	StyleDrawingPagePropertiesElement.DisplayPageNumber,
+	StyleDrawingPagePropertiesElement.Duration,
+	StyleDrawingPagePropertiesElement.TransitionSpeed,
+	StyleDrawingPagePropertiesElement.TransitionStyle,
+	StyleDrawingPagePropertiesElement.TransitionType,
+	StyleDrawingPagePropertiesElement.Visibility,
+	StyleDrawingPagePropertiesElement.Direction,
+	StyleDrawingPagePropertiesElement.FadeColor,
+	StyleDrawingPagePropertiesElement.Subtype,
+	StyleDrawingPagePropertiesElement.Type,
+	StyleDrawingPagePropertiesElement.Repeat,
+	StyleDrawingPagePropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.AmbientColor,
+	StyleGraphicPropertiesElement.BackScale,
+	StyleGraphicPropertiesElement.BackfaceCulling,
+	StyleGraphicPropertiesElement.CloseBack,
+	StyleGraphicPropertiesElement.CloseFront,
+	StyleGraphicPropertiesElement.Depth,
+	StyleGraphicPropertiesElement.DiffuseColor,
+	StyleGraphicPropertiesElement.EdgeRounding,
+	StyleGraphicPropertiesElement.EdgeRoundingMode,
+	StyleGraphicPropertiesElement.EmissiveColor,
+	StyleGraphicPropertiesElement.EndAngle,
+	StyleGraphicPropertiesElement.HorizontalSegments,
+	StyleGraphicPropertiesElement.LightingMode,
+	StyleGraphicPropertiesElement.NormalsDirection,
+	StyleGraphicPropertiesElement.NormalsKind,
+	StyleGraphicPropertiesElement.Dr3dShadow,
+	StyleGraphicPropertiesElement.Shininess,
+	StyleGraphicPropertiesElement.SpecularColor,
+	StyleGraphicPropertiesElement.TextureFilter,
+	StyleGraphicPropertiesElement.TextureGenerationModeX,
+	StyleGraphicPropertiesElement.TextureGenerationModeY,
+	StyleGraphicPropertiesElement.TextureKind,
+	StyleGraphicPropertiesElement.TextureMode,
+	StyleGraphicPropertiesElement.VerticalSegments,
+	StyleGraphicPropertiesElement.AutoGrowHeight,
+	StyleGraphicPropertiesElement.AutoGrowWidth,
+	StyleGraphicPropertiesElement.Blue,
+	StyleGraphicPropertiesElement.CaptionAngle,
+	StyleGraphicPropertiesElement.CaptionAngleType,
+	StyleGraphicPropertiesElement.CaptionEscape,
+	StyleGraphicPropertiesElement.CaptionEscapeDirection,
+	StyleGraphicPropertiesElement.CaptionFitLineLength,
+	StyleGraphicPropertiesElement.CaptionGap,
+	StyleGraphicPropertiesElement.CaptionLineLength,
+	StyleGraphicPropertiesElement.CaptionType,
+	StyleGraphicPropertiesElement.ColorInversion,
+	StyleGraphicPropertiesElement.ColorMode,
+	StyleGraphicPropertiesElement.Contrast,
+	StyleGraphicPropertiesElement.DecimalPlaces,
+	StyleGraphicPropertiesElement.DrawAspect,
+	StyleGraphicPropertiesElement.EndGuide,
+	StyleGraphicPropertiesElement.EndLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.EndLineSpacingVertical,
+	StyleGraphicPropertiesElement.Fill,
+	StyleGraphicPropertiesElement.FillColor,
+	StyleGraphicPropertiesElement.FillGradientName,
+	StyleGraphicPropertiesElement.FillHatchName,
+	StyleGraphicPropertiesElement.FillHatchSolid,
+	StyleGraphicPropertiesElement.FillImageHeight,
+	StyleGraphicPropertiesElement.FillImageName,
+	StyleGraphicPropertiesElement.FillImageRefPoint,
+	StyleGraphicPropertiesElement.FillImageRefPointX,
+	StyleGraphicPropertiesElement.FillImageRefPointY,
+	StyleGraphicPropertiesElement.FillImageWidth,
+	StyleGraphicPropertiesElement.FitToContour,
+	StyleGraphicPropertiesElement.FitToSize,
+	StyleGraphicPropertiesElement.FrameDisplayBorder,
+	StyleGraphicPropertiesElement.FrameDisplayScrollbar,
+	StyleGraphicPropertiesElement.FrameMarginHorizontal,
+	StyleGraphicPropertiesElement.FrameMarginVertical,
+	StyleGraphicPropertiesElement.Gamma,
+	StyleGraphicPropertiesElement.GradientStepCount,
+	StyleGraphicPropertiesElement.Green,
+	StyleGraphicPropertiesElement.GuideDistance,
+	StyleGraphicPropertiesElement.GuideOverhang,
+	StyleGraphicPropertiesElement.ImageOpacity,
+	StyleGraphicPropertiesElement.LineDistance,
+	StyleGraphicPropertiesElement.Luminance,
+	StyleGraphicPropertiesElement.MarkerEnd,
+	StyleGraphicPropertiesElement.MarkerEndCenter,
+	StyleGraphicPropertiesElement.MarkerEndWidth,
+	StyleGraphicPropertiesElement.MarkerStart,
+	StyleGraphicPropertiesElement.MarkerStartCenter,
+	StyleGraphicPropertiesElement.MarkerStartWidth,
+	StyleGraphicPropertiesElement.MeasureAlign,
+	StyleGraphicPropertiesElement.MeasureVerticalAlign,
+	StyleGraphicPropertiesElement.OleDrawAspect,
+	StyleGraphicPropertiesElement.Opacity,
+	StyleGraphicPropertiesElement.OpacityName,
+	StyleGraphicPropertiesElement.Parallel,
+	StyleGraphicPropertiesElement.Placing,
+	StyleGraphicPropertiesElement.Red,
+	StyleGraphicPropertiesElement.SecondaryFillColor,
+	StyleGraphicPropertiesElement.DrawShadow,
+	StyleGraphicPropertiesElement.ShadowColor,
+	StyleGraphicPropertiesElement.ShadowOffsetX,
+	StyleGraphicPropertiesElement.ShadowOffsetY,
+	StyleGraphicPropertiesElement.ShadowOpacity,
+	StyleGraphicPropertiesElement.ShowUnit,
+	StyleGraphicPropertiesElement.StartGuide,
+	StyleGraphicPropertiesElement.StartLineSpacingHorizontal,
+	StyleGraphicPropertiesElement.StartLineSpacingVertical,
+	StyleGraphicPropertiesElement.Stroke,
+	StyleGraphicPropertiesElement.StrokeDash,
+	StyleGraphicPropertiesElement.StrokeDashNames,
+	StyleGraphicPropertiesElement.StrokeLinejoin,
+	StyleGraphicPropertiesElement.SymbolColor,
+	StyleGraphicPropertiesElement.TextareaHorizontalAlign,
+	StyleGraphicPropertiesElement.TextareaVerticalAlign,
+	StyleGraphicPropertiesElement.TileRepeatOffset,
+	StyleGraphicPropertiesElement.Unit,
+	StyleGraphicPropertiesElement.VisibleAreaHeight,
+	StyleGraphicPropertiesElement.VisibleAreaLeft,
+	StyleGraphicPropertiesElement.VisibleAreaTop,
+	StyleGraphicPropertiesElement.VisibleAreaWidth,
+	StyleGraphicPropertiesElement.WrapInfluenceOnPosition,
+	StyleGraphicPropertiesElement.BackgroundColor,
+	StyleGraphicPropertiesElement.Border,
+	StyleGraphicPropertiesElement.BorderBottom,
+	StyleGraphicPropertiesElement.BorderLeft,
+	StyleGraphicPropertiesElement.BorderRight,
+	StyleGraphicPropertiesElement.BorderTop,
+	StyleGraphicPropertiesElement.Clip,
+	StyleGraphicPropertiesElement.Margin,
+	StyleGraphicPropertiesElement.MarginBottom,
+	StyleGraphicPropertiesElement.MarginLeft,
+	StyleGraphicPropertiesElement.MarginRight,
+	StyleGraphicPropertiesElement.MarginTop,
+	StyleGraphicPropertiesElement.MaxHeight,
+	StyleGraphicPropertiesElement.MaxWidth,
+	StyleGraphicPropertiesElement.MinHeight,
+	StyleGraphicPropertiesElement.MinWidth,
+	StyleGraphicPropertiesElement.Padding,
+	StyleGraphicPropertiesElement.PaddingBottom,
+	StyleGraphicPropertiesElement.PaddingLeft,
+	StyleGraphicPropertiesElement.PaddingRight,
+	StyleGraphicPropertiesElement.PaddingTop,
+	StyleGraphicPropertiesElement.WrapOption,
+	StyleGraphicPropertiesElement.BackgroundTransparency,
+	StyleGraphicPropertiesElement.BorderLineWidth,
+	StyleGraphicPropertiesElement.BorderLineWidthBottom,
+	StyleGraphicPropertiesElement.BorderLineWidthLeft,
+	StyleGraphicPropertiesElement.BorderLineWidthRight,
+	StyleGraphicPropertiesElement.BorderLineWidthTop,
+	StyleGraphicPropertiesElement.Editable,
+	StyleGraphicPropertiesElement.FlowWithText,
+	StyleGraphicPropertiesElement.HorizontalPos,
+	StyleGraphicPropertiesElement.HorizontalRel,
+	StyleGraphicPropertiesElement.Mirror,
+	StyleGraphicPropertiesElement.NumberWrappedParagraphs,
+	StyleGraphicPropertiesElement.OverflowBehavior,
+	StyleGraphicPropertiesElement.PrintContent,
+	StyleGraphicPropertiesElement.Protect,
+	StyleGraphicPropertiesElement.RelHeight,
+	StyleGraphicPropertiesElement.RelWidth,
+	StyleGraphicPropertiesElement.Repeat,
+	StyleGraphicPropertiesElement.RunThrough,
+	StyleGraphicPropertiesElement.StyleShadow,
+	StyleGraphicPropertiesElement.ShrinkToFit,
+	StyleGraphicPropertiesElement.VerticalPos,
+	StyleGraphicPropertiesElement.VerticalRel,
+	StyleGraphicPropertiesElement.Wrap,
+	StyleGraphicPropertiesElement.WrapContour,
+	StyleGraphicPropertiesElement.WrapContourMode,
+	StyleGraphicPropertiesElement.WrapDynamicThreshold,
+	StyleGraphicPropertiesElement.WritingMode,
+	StyleGraphicPropertiesElement.FillRule,
+	StyleGraphicPropertiesElement.Height,
+	StyleGraphicPropertiesElement.StrokeColor,
+	StyleGraphicPropertiesElement.StrokeLinecap,
+	StyleGraphicPropertiesElement.StrokeOpacity,
+	StyleGraphicPropertiesElement.StrokeWidth,
+	StyleGraphicPropertiesElement.Width,
+	StyleGraphicPropertiesElement.X,
+	StyleGraphicPropertiesElement.Y,
+	StyleGraphicPropertiesElement.AnchorPageNumber,
+	StyleGraphicPropertiesElement.AnchorType,
+	StyleGraphicPropertiesElement.Animation,
+	StyleGraphicPropertiesElement.AnimationDelay,
+	StyleGraphicPropertiesElement.AnimationDirection,
+	StyleGraphicPropertiesElement.AnimationRepeat,
+	StyleGraphicPropertiesElement.AnimationStartInside,
+	StyleGraphicPropertiesElement.AnimationSteps,
+	StyleGraphicPropertiesElement.AnimationStopInside,
+	StyleHeaderFooterPropertiesElement.BackgroundColor,
+	StyleHeaderFooterPropertiesElement.Border,
+	StyleHeaderFooterPropertiesElement.BorderBottom,
+	StyleHeaderFooterPropertiesElement.BorderLeft,
+	StyleHeaderFooterPropertiesElement.BorderRight,
+	StyleHeaderFooterPropertiesElement.BorderTop,
+	StyleHeaderFooterPropertiesElement.Margin,
+	StyleHeaderFooterPropertiesElement.MarginBottom,
+	StyleHeaderFooterPropertiesElement.MarginLeft,
+	StyleHeaderFooterPropertiesElement.MarginRight,
+	StyleHeaderFooterPropertiesElement.MarginTop,
+	StyleHeaderFooterPropertiesElement.MinHeight,
+	StyleHeaderFooterPropertiesElement.Padding,
+	StyleHeaderFooterPropertiesElement.PaddingBottom,
+	StyleHeaderFooterPropertiesElement.PaddingLeft,
+	StyleHeaderFooterPropertiesElement.PaddingRight,
+	StyleHeaderFooterPropertiesElement.PaddingTop,
+	StyleHeaderFooterPropertiesElement.BorderLineWidth,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthBottom,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthLeft,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthRight,
+	StyleHeaderFooterPropertiesElement.BorderLineWidthTop,
+	StyleHeaderFooterPropertiesElement.DynamicSpacing,
+	StyleHeaderFooterPropertiesElement.Shadow,
+	StyleHeaderFooterPropertiesElement.Height,
+	StyleListLevelPropertiesElement.Height,
+	StyleListLevelPropertiesElement.TextAlign,
+	StyleListLevelPropertiesElement.Width,
+	StyleListLevelPropertiesElement.FontName,
+	StyleListLevelPropertiesElement.VerticalPos,
+	StyleListLevelPropertiesElement.VerticalRel,
+	StyleListLevelPropertiesElement.Y,
+	StyleListLevelPropertiesElement.ListLevelPositionAndSpaceMode,
+	StyleListLevelPropertiesElement.MinLabelDistance,
+	StyleListLevelPropertiesElement.MinLabelWidth,
+	StyleListLevelPropertiesElement.SpaceBefore,
+	StylePageLayoutPropertiesElement.BackgroundColor,
+	StylePageLayoutPropertiesElement.Border,
+	StylePageLayoutPropertiesElement.BorderBottom,
+	StylePageLayoutPropertiesElement.BorderLeft,
+	StylePageLayoutPropertiesElement.BorderRight,
+	StylePageLayoutPropertiesElement.BorderTop,
+	StylePageLayoutPropertiesElement.Margin,
+	StylePageLayoutPropertiesElement.MarginBottom,
+	StylePageLayoutPropertiesElement.MarginLeft,
+	StylePageLayoutPropertiesElement.MarginRight,
+	StylePageLayoutPropertiesElement.MarginTop,
+	StylePageLayoutPropertiesElement.Padding,
+	StylePageLayoutPropertiesElement.PaddingBottom,
+	StylePageLayoutPropertiesElement.PaddingLeft,
+	StylePageLayoutPropertiesElement.PaddingRight,
+	StylePageLayoutPropertiesElement.PaddingTop,
+	StylePageLayoutPropertiesElement.PageHeight,
+	StylePageLayoutPropertiesElement.PageWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidth,
+	StylePageLayoutPropertiesElement.BorderLineWidthBottom,
+	StylePageLayoutPropertiesElement.BorderLineWidthLeft,
+	StylePageLayoutPropertiesElement.BorderLineWidthRight,
+	StylePageLayoutPropertiesElement.BorderLineWidthTop,
+	StylePageLayoutPropertiesElement.FirstPageNumber,
+	StylePageLayoutPropertiesElement.FootnoteMaxHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseHeight,
+	StylePageLayoutPropertiesElement.LayoutGridBaseWidth,
+	StylePageLayoutPropertiesElement.LayoutGridColor,
+	StylePageLayoutPropertiesElement.LayoutGridDisplay,
+	StylePageLayoutPropertiesElement.LayoutGridLines,
+	StylePageLayoutPropertiesElement.LayoutGridMode,
+	StylePageLayoutPropertiesElement.LayoutGridPrint,
+	StylePageLayoutPropertiesElement.LayoutGridRubyBelow,
+	StylePageLayoutPropertiesElement.LayoutGridRubyHeight,
+	StylePageLayoutPropertiesElement.LayoutGridSnapTo,
+	StylePageLayoutPropertiesElement.LayoutGridStandardMode,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumFormat,
+	StylePageLayoutPropertiesElement.NumLetterSync,
+	StylePageLayoutPropertiesElement.NumPrefix,
+	StylePageLayoutPropertiesElement.NumSuffix,
+	StylePageLayoutPropertiesElement.PaperTrayName,
+	StylePageLayoutPropertiesElement.Print,
+	StylePageLayoutPropertiesElement.PrintOrientation,
+	StylePageLayoutPropertiesElement.PrintPageOrder,
+	StylePageLayoutPropertiesElement.RegisterTruthRefStyleName,
+	StylePageLayoutPropertiesElement.ScaleTo,
+	StylePageLayoutPropertiesElement.ScaleToPages,
+	StylePageLayoutPropertiesElement.Shadow,
+	StylePageLayoutPropertiesElement.TableCentering,
+	StylePageLayoutPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.BackgroundColor,
+	StyleParagraphPropertiesElement.Border,
+	StyleParagraphPropertiesElement.BorderBottom,
+	StyleParagraphPropertiesElement.BorderLeft,
+	StyleParagraphPropertiesElement.BorderRight,
+	StyleParagraphPropertiesElement.BorderTop,
+	StyleParagraphPropertiesElement.BreakAfter,
+	StyleParagraphPropertiesElement.BreakBefore,
+	StyleParagraphPropertiesElement.HyphenationKeep,
+	StyleParagraphPropertiesElement.HyphenationLadderCount,
+	StyleParagraphPropertiesElement.KeepTogether,
+	StyleParagraphPropertiesElement.KeepWithNext,
+	StyleParagraphPropertiesElement.LineHeight,
+	StyleParagraphPropertiesElement.Margin,
+	StyleParagraphPropertiesElement.MarginBottom,
+	StyleParagraphPropertiesElement.MarginLeft,
+	StyleParagraphPropertiesElement.MarginRight,
+	StyleParagraphPropertiesElement.MarginTop,
+	StyleParagraphPropertiesElement.Orphans,
+	StyleParagraphPropertiesElement.Padding,
+	StyleParagraphPropertiesElement.PaddingBottom,
+	StyleParagraphPropertiesElement.PaddingLeft,
+	StyleParagraphPropertiesElement.PaddingRight,
+	StyleParagraphPropertiesElement.PaddingTop,
+	StyleParagraphPropertiesElement.TextAlign,
+	StyleParagraphPropertiesElement.TextAlignLast,
+	StyleParagraphPropertiesElement.TextIndent,
+	StyleParagraphPropertiesElement.Widows,
+	StyleParagraphPropertiesElement.AutoTextIndent,
+	StyleParagraphPropertiesElement.BackgroundTransparency,
+	StyleParagraphPropertiesElement.BorderLineWidth,
+	StyleParagraphPropertiesElement.BorderLineWidthBottom,
+	StyleParagraphPropertiesElement.BorderLineWidthLeft,
+	StyleParagraphPropertiesElement.BorderLineWidthRight,
+	StyleParagraphPropertiesElement.BorderLineWidthTop,
+	StyleParagraphPropertiesElement.FontIndependentLineSpacing,
+	StyleParagraphPropertiesElement.JoinBorder,
+	StyleParagraphPropertiesElement.JustifySingleWord,
+	StyleParagraphPropertiesElement.LineBreak,
+	StyleParagraphPropertiesElement.LineHeightAtLeast,
+	StyleParagraphPropertiesElement.LineSpacing,
+	StyleParagraphPropertiesElement.PageNumber,
+	StyleParagraphPropertiesElement.PunctuationWrap,
+	StyleParagraphPropertiesElement.RegisterTrue,
+	StyleParagraphPropertiesElement.Shadow,
+	StyleParagraphPropertiesElement.SnapToLayoutGrid,
+	StyleParagraphPropertiesElement.TabStopDistance,
+	StyleParagraphPropertiesElement.TextAutospace,
+	StyleParagraphPropertiesElement.VerticalAlign,
+	StyleParagraphPropertiesElement.WritingMode,
+	StyleParagraphPropertiesElement.WritingModeAutomatic,
+	StyleParagraphPropertiesElement.LineNumber,
+	StyleParagraphPropertiesElement.NumberLines,
+	StyleRubyPropertiesElement.RubyAlign,
+	StyleRubyPropertiesElement.RubyPosition,
+	StyleSectionPropertiesElement.BackgroundColor,
+	StyleSectionPropertiesElement.MarginLeft,
+	StyleSectionPropertiesElement.MarginRight,
+	StyleSectionPropertiesElement.Editable,
+	StyleSectionPropertiesElement.Protect,
+	StyleSectionPropertiesElement.WritingMode,
+	StyleSectionPropertiesElement.DontBalanceTextColumns,
+	StyleTableCellPropertiesElement.BackgroundColor,
+	StyleTableCellPropertiesElement.Border,
+	StyleTableCellPropertiesElement.BorderBottom,
+	StyleTableCellPropertiesElement.BorderLeft,
+	StyleTableCellPropertiesElement.BorderRight,
+	StyleTableCellPropertiesElement.BorderTop,
+	StyleTableCellPropertiesElement.Padding,
+	StyleTableCellPropertiesElement.PaddingBottom,
+	StyleTableCellPropertiesElement.PaddingLeft,
+	StyleTableCellPropertiesElement.PaddingRight,
+	StyleTableCellPropertiesElement.PaddingTop,
+	StyleTableCellPropertiesElement.WrapOption,
+	StyleTableCellPropertiesElement.BorderLineWidth,
+	StyleTableCellPropertiesElement.BorderLineWidthBottom,
+	StyleTableCellPropertiesElement.BorderLineWidthLeft,
+	StyleTableCellPropertiesElement.BorderLineWidthRight,
+	StyleTableCellPropertiesElement.BorderLineWidthTop,
+	StyleTableCellPropertiesElement.CellProtect,
+	StyleTableCellPropertiesElement.DecimalPlaces,
+	StyleTableCellPropertiesElement.DiagonalBlTr,
+	StyleTableCellPropertiesElement.DiagonalBlTrWidths,
+	StyleTableCellPropertiesElement.DiagonalTlBr,
+	StyleTableCellPropertiesElement.DiagonalTlBrWidths,
+	StyleTableCellPropertiesElement.Direction,
+	StyleTableCellPropertiesElement.GlyphOrientationVertical,
+	StyleTableCellPropertiesElement.PrintContent,
+	StyleTableCellPropertiesElement.RepeatContent,
+	StyleTableCellPropertiesElement.RotationAlign,
+	StyleTableCellPropertiesElement.RotationAngle,
+	StyleTableCellPropertiesElement.Shadow,
+	StyleTableCellPropertiesElement.ShrinkToFit,
+	StyleTableCellPropertiesElement.TextAlignSource,
+	StyleTableCellPropertiesElement.VerticalAlign,
+	StyleTableCellPropertiesElement.WritingMode,
+	StyleTableColumnPropertiesElement.BreakAfter,
+	StyleTableColumnPropertiesElement.BreakBefore,
+	StyleTableColumnPropertiesElement.ColumnWidth,
+	StyleTableColumnPropertiesElement.RelColumnWidth,
+	StyleTableColumnPropertiesElement.UseOptimalColumnWidth,
+	StyleTablePropertiesElement.BackgroundColor,
+	StyleTablePropertiesElement.BreakAfter,
+	StyleTablePropertiesElement.BreakBefore,
+	StyleTablePropertiesElement.KeepWithNext,
+	StyleTablePropertiesElement.Margin,
+	StyleTablePropertiesElement.MarginBottom,
+	StyleTablePropertiesElement.MarginLeft,
+	StyleTablePropertiesElement.MarginRight,
+	StyleTablePropertiesElement.MarginTop,
+	StyleTablePropertiesElement.MayBreakBetweenRows,
+	StyleTablePropertiesElement.PageNumber,
+	StyleTablePropertiesElement.RelWidth,
+	StyleTablePropertiesElement.Shadow,
+	StyleTablePropertiesElement.Width,
+	StyleTablePropertiesElement.WritingMode,
+	StyleTablePropertiesElement.Align,
+	StyleTablePropertiesElement.BorderModel,
+	StyleTablePropertiesElement.Display,
+	StyleTableRowPropertiesElement.BackgroundColor,
+	StyleTableRowPropertiesElement.BreakAfter,
+	StyleTableRowPropertiesElement.BreakBefore,
+	StyleTableRowPropertiesElement.KeepTogether,
+	StyleTableRowPropertiesElement.MinRowHeight,
+	StyleTableRowPropertiesElement.RowHeight,
+	StyleTableRowPropertiesElement.UseOptimalRowHeight,
+	StyleTextPropertiesElement.BackgroundColor,
+	StyleTextPropertiesElement.Color,
+	StyleTextPropertiesElement.Country,
+	StyleTextPropertiesElement.FontFamily,
+	StyleTextPropertiesElement.FontSize,
+	StyleTextPropertiesElement.FontStyle,
+	StyleTextPropertiesElement.FontVariant,
+	StyleTextPropertiesElement.FontWeight,
+	StyleTextPropertiesElement.Hyphenate,
+	StyleTextPropertiesElement.HyphenationPushCharCount,
+	StyleTextPropertiesElement.HyphenationRemainCharCount,
+	StyleTextPropertiesElement.Language,
+	StyleTextPropertiesElement.LetterSpacing,
+	StyleTextPropertiesElement.Script,
+	StyleTextPropertiesElement.TextShadow,
+	StyleTextPropertiesElement.TextTransform,
+	StyleTextPropertiesElement.CountryAsian,
+	StyleTextPropertiesElement.CountryComplex,
+	StyleTextPropertiesElement.FontCharset,
+	StyleTextPropertiesElement.FontCharsetAsian,
+	StyleTextPropertiesElement.FontCharsetComplex,
+	StyleTextPropertiesElement.FontFamilyAsian,
+	StyleTextPropertiesElement.FontFamilyComplex,
+	StyleTextPropertiesElement.FontFamilyGeneric,
+	StyleTextPropertiesElement.FontFamilyGenericAsian,
+	StyleTextPropertiesElement.FontFamilyGenericComplex,
+	StyleTextPropertiesElement.FontName,
+	StyleTextPropertiesElement.FontNameAsian,
+	StyleTextPropertiesElement.FontNameComplex,
+	StyleTextPropertiesElement.FontPitch,
+	StyleTextPropertiesElement.FontPitchAsian,
+	StyleTextPropertiesElement.FontPitchComplex,
+	StyleTextPropertiesElement.FontRelief,
+	StyleTextPropertiesElement.FontSizeAsian,
+	StyleTextPropertiesElement.FontSizeComplex,
+	StyleTextPropertiesElement.FontSizeRel,
+	StyleTextPropertiesElement.FontSizeRelAsian,
+	StyleTextPropertiesElement.FontSizeRelComplex,
+	StyleTextPropertiesElement.FontStyleAsian,
+	StyleTextPropertiesElement.FontStyleComplex,
+	StyleTextPropertiesElement.FontStyleName,
+	StyleTextPropertiesElement.FontStyleNameAsian,
+	StyleTextPropertiesElement.FontStyleNameComplex,
+	StyleTextPropertiesElement.FontWeightAsian,
+	StyleTextPropertiesElement.FontWeightComplex,
+	StyleTextPropertiesElement.LanguageAsian,
+	StyleTextPropertiesElement.LanguageComplex,
+	StyleTextPropertiesElement.LetterKerning,
+	StyleTextPropertiesElement.RfcLanguageTag,
+	StyleTextPropertiesElement.RfcLanguageTagAsian,
+	StyleTextPropertiesElement.RfcLanguageTagComplex,
+	StyleTextPropertiesElement.ScriptAsian,
+	StyleTextPropertiesElement.ScriptComplex,
+	StyleTextPropertiesElement.ScriptType,
+	StyleTextPropertiesElement.TextBlinking,
+	StyleTextPropertiesElement.TextCombine,
+	StyleTextPropertiesElement.TextCombineEndChar,
+	StyleTextPropertiesElement.TextCombineStartChar,
+	StyleTextPropertiesElement.TextEmphasize,
+	StyleTextPropertiesElement.TextLineThroughColor,
+	StyleTextPropertiesElement.TextLineThroughMode,
+	StyleTextPropertiesElement.TextLineThroughStyle,
+	StyleTextPropertiesElement.TextLineThroughText,
+	StyleTextPropertiesElement.TextLineThroughTextStyle,
+	StyleTextPropertiesElement.TextLineThroughType,
+	StyleTextPropertiesElement.TextLineThroughWidth,
+	StyleTextPropertiesElement.TextOutline,
+	StyleTextPropertiesElement.TextOverlineColor,
+	StyleTextPropertiesElement.TextOverlineMode,
+	StyleTextPropertiesElement.TextOverlineStyle,
+	StyleTextPropertiesElement.TextOverlineType,
+	StyleTextPropertiesElement.TextOverlineWidth,
+	StyleTextPropertiesElement.TextPosition,
+	StyleTextPropertiesElement.TextRotationAngle,
+	StyleTextPropertiesElement.TextRotationScale,
+	StyleTextPropertiesElement.TextScale,
+	StyleTextPropertiesElement.TextUnderlineColor,
+	StyleTextPropertiesElement.TextUnderlineMode,
+	StyleTextPropertiesElement.TextUnderlineStyle,
+	StyleTextPropertiesElement.TextUnderlineType,
+	StyleTextPropertiesElement.TextUnderlineWidth,
+	StyleTextPropertiesElement.UseWindowFontColor,
+	StyleTextPropertiesElement.Condition,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	StyleTextPropertiesElement.Display,
+	});
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/OdfStylePropertySet.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/OdfStylePropertySet.java
new file mode 100644
index 0000000..576281e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/OdfStylePropertySet.java
@@ -0,0 +1,83 @@
+/************************************************************************
+ *
+ * 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.dom.style;
+
+import java.util.Map;
+
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+
+import java.util.Set;
+
+/**
+ *
+ */
+public interface OdfStylePropertySet
+{
+    /** checks if this styleable element or style has this property directly set.
+     * 
+     * @param property is the property to check.
+     * @return true if this property is directly set at this instance or false if not.
+     */
+    public boolean hasProperty( OdfStyleProperty property );
+
+    /** returns the given property from this styleable element or style.
+     * If it is not directly set, the value of this property from a parent style
+     * will be returned.
+     * 
+     * @param property is the property which value will be returned.
+     * @return the value of this property or null if it is not available in this
+     * set or this parents sets.
+     */
+    public String getProperty( OdfStyleProperty property );
+
+    /** removes the given property from this set
+     * 
+     * @param property is the property to be removed
+     */
+    public void removeProperty( OdfStyleProperty property );
+    
+    /** sets a single style property for this element.
+     * 
+     * @param property is the property that you want to set.
+     * @param value is the value the property is set to.
+     */
+    public void setProperty( OdfStyleProperty property, String value );
+
+    /** set more than one property at once.
+     * 
+     * @param properties is a map of properties with values that should be set.
+     */
+    public void setProperties( Map< OdfStyleProperty, String > properties );
+    
+    /** gets more than one property at once
+     * 
+     * @param properties is a set of all properties that should be returned.
+     * @return a map with all asked properties and theire value, if available.
+     */
+    public Map< OdfStyleProperty, String > getProperties( Set< OdfStyleProperty > properties );
+                                    
+    /** 
+     * @return a set with all properties which are specified in the strict odf format.
+     */
+    public Set< OdfStyleProperty > getStrictProperties();     
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfChartProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfChartProperties.java
new file mode 100644
index 0000000..92966d7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfChartProperties.java
@@ -0,0 +1,167 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfChartProperties {
+	public final static OdfStyleProperty AngleOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "angle-offset"));
+	public final static OdfStyleProperty AutoPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "auto-position"));
+	public final static OdfStyleProperty AutoSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "auto-size"));
+	public final static OdfStyleProperty AxisLabelPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "axis-label-position"));
+	public final static OdfStyleProperty AxisPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "axis-position"));
+	public final static OdfStyleProperty ConnectBars =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "connect-bars"));
+	public final static OdfStyleProperty DataLabelNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "data-label-number"));
+	public final static OdfStyleProperty DataLabelSymbol =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "data-label-symbol"));
+	public final static OdfStyleProperty DataLabelText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "data-label-text"));
+	public final static OdfStyleProperty Deep =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "deep"));
+	public final static OdfStyleProperty DisplayLabel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "display-label"));
+	public final static OdfStyleProperty ErrorCategory =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-category"));
+	public final static OdfStyleProperty ErrorLowerIndicator =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-indicator"));
+	public final static OdfStyleProperty ErrorLowerLimit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-limit"));
+	public final static OdfStyleProperty ErrorLowerRange =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-lower-range"));
+	public final static OdfStyleProperty ErrorMargin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-margin"));
+	public final static OdfStyleProperty ErrorPercentage =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-percentage"));
+	public final static OdfStyleProperty ErrorUpperIndicator =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-indicator"));
+	public final static OdfStyleProperty ErrorUpperLimit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-limit"));
+	public final static OdfStyleProperty ErrorUpperRange =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "error-upper-range"));
+	public final static OdfStyleProperty GapWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "gap-width"));
+	public final static OdfStyleProperty GroupBarsPerAxis =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "group-bars-per-axis"));
+	public final static OdfStyleProperty HoleSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "hole-size"));
+	public final static OdfStyleProperty IncludeHiddenCells =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "include-hidden-cells"));
+	public final static OdfStyleProperty Interpolation =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "interpolation"));
+	public final static OdfStyleProperty IntervalMajor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "interval-major"));
+	public final static OdfStyleProperty IntervalMinorDivisor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "interval-minor-divisor"));
+	public final static OdfStyleProperty JapaneseCandleStick =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "japanese-candle-stick"));
+	public final static OdfStyleProperty LabelArrangement =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "label-arrangement"));
+	public final static OdfStyleProperty LabelPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "label-position"));
+	public final static OdfStyleProperty LabelPositionNegative =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "label-position-negative"));
+	public final static OdfStyleProperty Lines =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "lines"));
+	public final static OdfStyleProperty LinkDataStyleToSource =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "link-data-style-to-source"));
+	public final static OdfStyleProperty Logarithmic =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "logarithmic"));
+	public final static OdfStyleProperty Maximum =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "maximum"));
+	public final static OdfStyleProperty MeanValue =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "mean-value"));
+	public final static OdfStyleProperty Minimum =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "minimum"));
+	public final static OdfStyleProperty Origin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "origin"));
+	public final static OdfStyleProperty Overlap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "overlap"));
+	public final static OdfStyleProperty Percentage =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "percentage"));
+	public final static OdfStyleProperty PieOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "pie-offset"));
+	public final static OdfStyleProperty RegressionType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "regression-type"));
+	public final static OdfStyleProperty ReverseDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "reverse-direction"));
+	public final static OdfStyleProperty RightAngledAxes =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "right-angled-axes"));
+	public final static OdfStyleProperty ScaleText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "scale-text"));
+	public final static OdfStyleProperty SeriesSource =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "series-source"));
+	public final static OdfStyleProperty SolidType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "solid-type"));
+	public final static OdfStyleProperty SortByXValues =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "sort-by-x-values"));
+	public final static OdfStyleProperty SplineOrder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "spline-order"));
+	public final static OdfStyleProperty SplineResolution =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "spline-resolution"));
+	public final static OdfStyleProperty Stacked =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "stacked"));
+	public final static OdfStyleProperty SymbolHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-height"));
+	public final static OdfStyleProperty SymbolName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-name"));
+	public final static OdfStyleProperty SymbolType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-type"));
+	public final static OdfStyleProperty SymbolWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "symbol-width"));
+	public final static OdfStyleProperty TextOverlap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "text-overlap"));
+	public final static OdfStyleProperty ThreeDimensional =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "three-dimensional"));
+	public final static OdfStyleProperty TickMarkPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-mark-position"));
+	public final static OdfStyleProperty TickMarksMajorInner =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-major-inner"));
+	public final static OdfStyleProperty TickMarksMajorOuter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-major-outer"));
+	public final static OdfStyleProperty TickMarksMinorInner =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-minor-inner"));
+	public final static OdfStyleProperty TickMarksMinorOuter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "tick-marks-minor-outer"));
+	public final static OdfStyleProperty TreatEmptyCells =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "treat-empty-cells"));
+	public final static OdfStyleProperty Vertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "vertical"));
+	public final static OdfStyleProperty Visible =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.CHART, "visible"));
+	public final static OdfStyleProperty Direction =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "direction"));
+	public final static OdfStyleProperty RotationAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-angle"));
+	public final static OdfStyleProperty LineBreak =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ChartProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "line-break"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfDrawingPageProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfDrawingPageProperties.java
new file mode 100644
index 0000000..b90c2b9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfDrawingPageProperties.java
@@ -0,0 +1,99 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfDrawingPageProperties {
+	public final static OdfStyleProperty BackgroundSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "background-size"));
+	public final static OdfStyleProperty Fill =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill"));
+	public final static OdfStyleProperty FillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-color"));
+	public final static OdfStyleProperty FillGradientName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-gradient-name"));
+	public final static OdfStyleProperty FillHatchName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-name"));
+	public final static OdfStyleProperty FillHatchSolid =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-solid"));
+	public final static OdfStyleProperty FillImageHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-height"));
+	public final static OdfStyleProperty FillImageName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-name"));
+	public final static OdfStyleProperty FillImageRefPoint =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point"));
+	public final static OdfStyleProperty FillImageRefPointX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x"));
+	public final static OdfStyleProperty FillImageRefPointY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y"));
+	public final static OdfStyleProperty FillImageWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-width"));
+	public final static OdfStyleProperty GradientStepCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "gradient-step-count"));
+	public final static OdfStyleProperty Opacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity"));
+	public final static OdfStyleProperty OpacityName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity-name"));
+	public final static OdfStyleProperty SecondaryFillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "secondary-fill-color"));
+	public final static OdfStyleProperty TileRepeatOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "tile-repeat-offset"));
+	public final static OdfStyleProperty BackgroundObjectsVisible =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "background-objects-visible"));
+	public final static OdfStyleProperty BackgroundVisible =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "background-visible"));
+	public final static OdfStyleProperty DisplayDateTime =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-date-time"));
+	public final static OdfStyleProperty DisplayFooter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-footer"));
+	public final static OdfStyleProperty DisplayHeader =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-header"));
+	public final static OdfStyleProperty DisplayPageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "display-page-number"));
+	public final static OdfStyleProperty Duration =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "duration"));
+	public final static OdfStyleProperty TransitionSpeed =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-speed"));
+	public final static OdfStyleProperty TransitionStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-style"));
+	public final static OdfStyleProperty TransitionType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "transition-type"));
+	public final static OdfStyleProperty Visibility =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.PRESENTATION, "visibility"));
+	public final static OdfStyleProperty Direction =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "direction"));
+	public final static OdfStyleProperty FadeColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "fadeColor"));
+	public final static OdfStyleProperty Subtype =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "subtype"));
+	public final static OdfStyleProperty Type =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SMIL, "type"));
+	public final static OdfStyleProperty Repeat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "repeat"));
+	public final static OdfStyleProperty FillRule =
+		OdfStyleProperty.get(OdfStylePropertiesSet.DrawingPageProperties, OdfName.newName(OdfDocumentNamespace.SVG, "fill-rule"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfGraphicProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfGraphicProperties.java
new file mode 100644
index 0000000..9b4301f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfGraphicProperties.java
@@ -0,0 +1,379 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfGraphicProperties {
+	public final static OdfStyleProperty AmbientColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "ambient-color"));
+	public final static OdfStyleProperty BackScale =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "back-scale"));
+	public final static OdfStyleProperty BackfaceCulling =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "backface-culling"));
+	public final static OdfStyleProperty CloseBack =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "close-back"));
+	public final static OdfStyleProperty CloseFront =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "close-front"));
+	public final static OdfStyleProperty Depth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "depth"));
+	public final static OdfStyleProperty DiffuseColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "diffuse-color"));
+	public final static OdfStyleProperty EdgeRounding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "edge-rounding"));
+	public final static OdfStyleProperty EdgeRoundingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "edge-rounding-mode"));
+	public final static OdfStyleProperty EmissiveColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "emissive-color"));
+	public final static OdfStyleProperty EndAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "end-angle"));
+	public final static OdfStyleProperty HorizontalSegments =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "horizontal-segments"));
+	public final static OdfStyleProperty LightingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "lighting-mode"));
+	public final static OdfStyleProperty NormalsDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "normals-direction"));
+	public final static OdfStyleProperty NormalsKind =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "normals-kind"));
+	public final static OdfStyleProperty Dr3dShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "shadow"));
+	public final static OdfStyleProperty Shininess =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "shininess"));
+	public final static OdfStyleProperty SpecularColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "specular-color"));
+	public final static OdfStyleProperty TextureFilter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-filter"));
+	public final static OdfStyleProperty TextureGenerationModeX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-generation-mode-x"));
+	public final static OdfStyleProperty TextureGenerationModeY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-generation-mode-y"));
+	public final static OdfStyleProperty TextureKind =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-kind"));
+	public final static OdfStyleProperty TextureMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "texture-mode"));
+	public final static OdfStyleProperty VerticalSegments =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DR3D, "vertical-segments"));
+	public final static OdfStyleProperty AutoGrowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "auto-grow-height"));
+	public final static OdfStyleProperty AutoGrowWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "auto-grow-width"));
+	public final static OdfStyleProperty Blue =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "blue"));
+	public final static OdfStyleProperty CaptionAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-angle"));
+	public final static OdfStyleProperty CaptionAngleType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-angle-type"));
+	public final static OdfStyleProperty CaptionEscape =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-escape"));
+	public final static OdfStyleProperty CaptionEscapeDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-escape-direction"));
+	public final static OdfStyleProperty CaptionFitLineLength =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-fit-line-length"));
+	public final static OdfStyleProperty CaptionGap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-gap"));
+	public final static OdfStyleProperty CaptionLineLength =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-line-length"));
+	public final static OdfStyleProperty CaptionType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "caption-type"));
+	public final static OdfStyleProperty ColorInversion =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "color-inversion"));
+	public final static OdfStyleProperty ColorMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "color-mode"));
+	public final static OdfStyleProperty Contrast =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "contrast"));
+	public final static OdfStyleProperty DecimalPlaces =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "decimal-places"));
+	public final static OdfStyleProperty DrawAspect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "draw-aspect"));
+	public final static OdfStyleProperty EndGuide =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "end-guide"));
+	public final static OdfStyleProperty EndLineSpacingHorizontal =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "end-line-spacing-horizontal"));
+	public final static OdfStyleProperty EndLineSpacingVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "end-line-spacing-vertical"));
+	public final static OdfStyleProperty Fill =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill"));
+	public final static OdfStyleProperty FillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-color"));
+	public final static OdfStyleProperty FillGradientName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-gradient-name"));
+	public final static OdfStyleProperty FillHatchName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-name"));
+	public final static OdfStyleProperty FillHatchSolid =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-hatch-solid"));
+	public final static OdfStyleProperty FillImageHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-height"));
+	public final static OdfStyleProperty FillImageName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-name"));
+	public final static OdfStyleProperty FillImageRefPoint =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point"));
+	public final static OdfStyleProperty FillImageRefPointX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-x"));
+	public final static OdfStyleProperty FillImageRefPointY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-ref-point-y"));
+	public final static OdfStyleProperty FillImageWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fill-image-width"));
+	public final static OdfStyleProperty FitToContour =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fit-to-contour"));
+	public final static OdfStyleProperty FitToSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "fit-to-size"));
+	public final static OdfStyleProperty FrameDisplayBorder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-display-border"));
+	public final static OdfStyleProperty FrameDisplayScrollbar =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-display-scrollbar"));
+	public final static OdfStyleProperty FrameMarginHorizontal =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-margin-horizontal"));
+	public final static OdfStyleProperty FrameMarginVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "frame-margin-vertical"));
+	public final static OdfStyleProperty Gamma =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "gamma"));
+	public final static OdfStyleProperty GradientStepCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "gradient-step-count"));
+	public final static OdfStyleProperty Green =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "green"));
+	public final static OdfStyleProperty GuideDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "guide-distance"));
+	public final static OdfStyleProperty GuideOverhang =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "guide-overhang"));
+	public final static OdfStyleProperty ImageOpacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "image-opacity"));
+	public final static OdfStyleProperty LineDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "line-distance"));
+	public final static OdfStyleProperty Luminance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "luminance"));
+	public final static OdfStyleProperty MarkerEnd =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end"));
+	public final static OdfStyleProperty MarkerEndCenter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end-center"));
+	public final static OdfStyleProperty MarkerEndWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-end-width"));
+	public final static OdfStyleProperty MarkerStart =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start"));
+	public final static OdfStyleProperty MarkerStartCenter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start-center"));
+	public final static OdfStyleProperty MarkerStartWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "marker-start-width"));
+	public final static OdfStyleProperty MeasureAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "measure-align"));
+	public final static OdfStyleProperty MeasureVerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "measure-vertical-align"));
+	public final static OdfStyleProperty OleDrawAspect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "ole-draw-aspect"));
+	public final static OdfStyleProperty Opacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity"));
+	public final static OdfStyleProperty OpacityName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "opacity-name"));
+	public final static OdfStyleProperty Parallel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "parallel"));
+	public final static OdfStyleProperty Placing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "placing"));
+	public final static OdfStyleProperty Red =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "red"));
+	public final static OdfStyleProperty SecondaryFillColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "secondary-fill-color"));
+	public final static OdfStyleProperty DrawShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow"));
+	public final static OdfStyleProperty ShadowColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-color"));
+	public final static OdfStyleProperty ShadowOffsetX =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-offset-x"));
+	public final static OdfStyleProperty ShadowOffsetY =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-offset-y"));
+	public final static OdfStyleProperty ShadowOpacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "shadow-opacity"));
+	public final static OdfStyleProperty ShowUnit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "show-unit"));
+	public final static OdfStyleProperty StartGuide =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "start-guide"));
+	public final static OdfStyleProperty StartLineSpacingHorizontal =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "start-line-spacing-horizontal"));
+	public final static OdfStyleProperty StartLineSpacingVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "start-line-spacing-vertical"));
+	public final static OdfStyleProperty Stroke =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke"));
+	public final static OdfStyleProperty StrokeDash =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash"));
+	public final static OdfStyleProperty StrokeDashNames =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-dash-names"));
+	public final static OdfStyleProperty StrokeLinejoin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "stroke-linejoin"));
+	public final static OdfStyleProperty SymbolColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "symbol-color"));
+	public final static OdfStyleProperty TextareaHorizontalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "textarea-horizontal-align"));
+	public final static OdfStyleProperty TextareaVerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "textarea-vertical-align"));
+	public final static OdfStyleProperty TileRepeatOffset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "tile-repeat-offset"));
+	public final static OdfStyleProperty Unit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "unit"));
+	public final static OdfStyleProperty VisibleAreaHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-height"));
+	public final static OdfStyleProperty VisibleAreaLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-left"));
+	public final static OdfStyleProperty VisibleAreaTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-top"));
+	public final static OdfStyleProperty VisibleAreaWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "visible-area-width"));
+	public final static OdfStyleProperty WrapInfluenceOnPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.DRAW, "wrap-influence-on-position"));
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+	public final static OdfStyleProperty Clip =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "clip"));
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+	public final static OdfStyleProperty MaxHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "max-height"));
+	public final static OdfStyleProperty MaxWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "max-width"));
+	public final static OdfStyleProperty MinHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "min-height"));
+	public final static OdfStyleProperty MinWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "min-width"));
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+	public final static OdfStyleProperty WrapOption =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.FO, "wrap-option"));
+	public final static OdfStyleProperty BackgroundTransparency =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "background-transparency"));
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+	public final static OdfStyleProperty Editable =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "editable"));
+	public final static OdfStyleProperty FlowWithText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "flow-with-text"));
+	public final static OdfStyleProperty HorizontalPos =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "horizontal-pos"));
+	public final static OdfStyleProperty HorizontalRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "horizontal-rel"));
+	public final static OdfStyleProperty Mirror =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "mirror"));
+	public final static OdfStyleProperty NumberWrappedParagraphs =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "number-wrapped-paragraphs"));
+	public final static OdfStyleProperty OverflowBehavior =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "overflow-behavior"));
+	public final static OdfStyleProperty PrintContent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-content"));
+	public final static OdfStyleProperty Protect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "protect"));
+	public final static OdfStyleProperty RelHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-height"));
+	public final static OdfStyleProperty RelWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-width"));
+	public final static OdfStyleProperty Repeat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "repeat"));
+	public final static OdfStyleProperty RunThrough =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "run-through"));
+	public final static OdfStyleProperty StyleShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+	public final static OdfStyleProperty ShrinkToFit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shrink-to-fit"));
+	public final static OdfStyleProperty VerticalPos =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-pos"));
+	public final static OdfStyleProperty VerticalRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-rel"));
+	public final static OdfStyleProperty Wrap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap"));
+	public final static OdfStyleProperty WrapContour =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-contour"));
+	public final static OdfStyleProperty WrapContourMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-contour-mode"));
+	public final static OdfStyleProperty WrapDynamicThreshold =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "wrap-dynamic-threshold"));
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+	public final static OdfStyleProperty FillRule =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "fill-rule"));
+	public final static OdfStyleProperty Height =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "height"));
+	public final static OdfStyleProperty StrokeColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-color"));
+	public final static OdfStyleProperty StrokeLinecap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-linecap"));
+	public final static OdfStyleProperty StrokeOpacity =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-opacity"));
+	public final static OdfStyleProperty StrokeWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "stroke-width"));
+	public final static OdfStyleProperty Width =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "width"));
+	public final static OdfStyleProperty X =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "x"));
+	public final static OdfStyleProperty Y =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.SVG, "y"));
+	public final static OdfStyleProperty AnchorPageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "anchor-page-number"));
+	public final static OdfStyleProperty AnchorType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "anchor-type"));
+	public final static OdfStyleProperty Animation =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation"));
+	public final static OdfStyleProperty AnimationDelay =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-delay"));
+	public final static OdfStyleProperty AnimationDirection =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-direction"));
+	public final static OdfStyleProperty AnimationRepeat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-repeat"));
+	public final static OdfStyleProperty AnimationStartInside =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-start-inside"));
+	public final static OdfStyleProperty AnimationSteps =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-steps"));
+	public final static OdfStyleProperty AnimationStopInside =
+		OdfStyleProperty.get(OdfStylePropertiesSet.GraphicProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "animation-stop-inside"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfHeaderFooterProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfHeaderFooterProperties.java
new file mode 100644
index 0000000..5cbe884
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfHeaderFooterProperties.java
@@ -0,0 +1,81 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfHeaderFooterProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+	public final static OdfStyleProperty MinHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "min-height"));
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+	public final static OdfStyleProperty DynamicSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "dynamic-spacing"));
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+	public final static OdfStyleProperty Height =
+		OdfStyleProperty.get(OdfStylePropertiesSet.HeaderFooterProperties, OdfName.newName(OdfDocumentNamespace.SVG, "height"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfListLevelProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfListLevelProperties.java
new file mode 100644
index 0000000..1dd8b88
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfListLevelProperties.java
@@ -0,0 +1,53 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfListLevelProperties {
+	public final static OdfStyleProperty Height =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.FO, "height"));
+	public final static OdfStyleProperty TextAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-align"));
+	public final static OdfStyleProperty Width =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.FO, "width"));
+	public final static OdfStyleProperty FontName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name"));
+	public final static OdfStyleProperty VerticalPos =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-pos"));
+	public final static OdfStyleProperty VerticalRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-rel"));
+	public final static OdfStyleProperty Y =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.SVG, "y"));
+	public final static OdfStyleProperty ListLevelPositionAndSpaceMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "list-level-position-and-space-mode"));
+	public final static OdfStyleProperty MinLabelDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "min-label-distance"));
+	public final static OdfStyleProperty MinLabelWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "min-label-width"));
+	public final static OdfStyleProperty SpaceBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ListLevelProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "space-before"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfPageLayoutProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfPageLayoutProperties.java
new file mode 100644
index 0000000..2b867a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfPageLayoutProperties.java
@@ -0,0 +1,131 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfPageLayoutProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+	public final static OdfStyleProperty PageHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "page-height"));
+	public final static OdfStyleProperty PageWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.FO, "page-width"));
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+	public final static OdfStyleProperty FirstPageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "first-page-number"));
+	public final static OdfStyleProperty FootnoteMaxHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "footnote-max-height"));
+	public final static OdfStyleProperty LayoutGridBaseHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-base-height"));
+	public final static OdfStyleProperty LayoutGridBaseWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-base-width"));
+	public final static OdfStyleProperty LayoutGridColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-color"));
+	public final static OdfStyleProperty LayoutGridDisplay =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-display"));
+	public final static OdfStyleProperty LayoutGridLines =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-lines"));
+	public final static OdfStyleProperty LayoutGridMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-mode"));
+	public final static OdfStyleProperty LayoutGridPrint =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-print"));
+	public final static OdfStyleProperty LayoutGridRubyBelow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-ruby-below"));
+	public final static OdfStyleProperty LayoutGridRubyHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-ruby-height"));
+	public final static OdfStyleProperty LayoutGridSnapTo =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-snap-to"));
+	public final static OdfStyleProperty LayoutGridStandardMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "layout-grid-standard-mode"));
+	public final static OdfStyleProperty NumFormat =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-format"));
+	public final static OdfStyleProperty NumLetterSync =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-letter-sync"));
+	public final static OdfStyleProperty NumPrefix =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-prefix"));
+	public final static OdfStyleProperty NumSuffix =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "num-suffix"));
+	public final static OdfStyleProperty PaperTrayName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "paper-tray-name"));
+	public final static OdfStyleProperty Print =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print"));
+	public final static OdfStyleProperty PrintOrientation =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-orientation"));
+	public final static OdfStyleProperty PrintPageOrder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-page-order"));
+	public final static OdfStyleProperty RegisterTruthRefStyleName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "register-truth-ref-style-name"));
+	public final static OdfStyleProperty ScaleTo =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "scale-to"));
+	public final static OdfStyleProperty ScaleToPages =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "scale-to-pages"));
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+	public final static OdfStyleProperty TableCentering =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "table-centering"));
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.PageLayoutProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfParagraphProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfParagraphProperties.java
new file mode 100644
index 0000000..ac5ce7f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfParagraphProperties.java
@@ -0,0 +1,137 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfParagraphProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+	public final static OdfStyleProperty HyphenationKeep =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-keep"));
+	public final static OdfStyleProperty HyphenationLadderCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-ladder-count"));
+	public final static OdfStyleProperty KeepTogether =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-together"));
+	public final static OdfStyleProperty KeepWithNext =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-with-next"));
+	public final static OdfStyleProperty LineHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "line-height"));
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+	public final static OdfStyleProperty Orphans =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "orphans"));
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+	public final static OdfStyleProperty TextAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-align"));
+	public final static OdfStyleProperty TextAlignLast =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-align-last"));
+	public final static OdfStyleProperty TextIndent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-indent"));
+	public final static OdfStyleProperty Widows =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.FO, "widows"));
+	public final static OdfStyleProperty AutoTextIndent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "auto-text-indent"));
+	public final static OdfStyleProperty BackgroundTransparency =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "background-transparency"));
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+	public final static OdfStyleProperty FontIndependentLineSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-independent-line-spacing"));
+	public final static OdfStyleProperty JoinBorder =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "join-border"));
+	public final static OdfStyleProperty JustifySingleWord =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "justify-single-word"));
+	public final static OdfStyleProperty LineBreak =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "line-break"));
+	public final static OdfStyleProperty LineHeightAtLeast =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "line-height-at-least"));
+	public final static OdfStyleProperty LineSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "line-spacing"));
+	public final static OdfStyleProperty PageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "page-number"));
+	public final static OdfStyleProperty PunctuationWrap =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "punctuation-wrap"));
+	public final static OdfStyleProperty RegisterTrue =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "register-true"));
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+	public final static OdfStyleProperty SnapToLayoutGrid =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "snap-to-layout-grid"));
+	public final static OdfStyleProperty TabStopDistance =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "tab-stop-distance"));
+	public final static OdfStyleProperty TextAutospace =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-autospace"));
+	public final static OdfStyleProperty VerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+	public final static OdfStyleProperty WritingModeAutomatic =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode-automatic"));
+	public final static OdfStyleProperty LineNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "line-number"));
+	public final static OdfStyleProperty NumberLines =
+		OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "number-lines"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfRubyProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfRubyProperties.java
new file mode 100644
index 0000000..2260d95
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfRubyProperties.java
@@ -0,0 +1,35 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfRubyProperties {
+	public final static OdfStyleProperty RubyAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.RubyProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-align"));
+	public final static OdfStyleProperty RubyPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.RubyProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-position"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfRubyStyleProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfRubyStyleProperties.java
new file mode 100644
index 0000000..b439c73
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfRubyStyleProperties.java
@@ -0,0 +1,34 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfRubyStyleProperties {
+    public final static OdfStyleProperty RubyAlign = 
+        OdfStyleProperty.get(OdfStylePropertiesSet.RubyProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-align"));
+    public final static OdfStyleProperty RubyPosition = 
+        OdfStyleProperty.get(OdfStylePropertiesSet.RubyProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "ruby-position"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfSectionProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfSectionProperties.java
new file mode 100644
index 0000000..579f258
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfSectionProperties.java
@@ -0,0 +1,45 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfSectionProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+	public final static OdfStyleProperty Editable =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "editable"));
+	public final static OdfStyleProperty Protect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "protect"));
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+	public final static OdfStyleProperty DontBalanceTextColumns =
+		OdfStyleProperty.get(OdfStylePropertiesSet.SectionProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "dont-balance-text-columns"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfStylePropertiesSet.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfStylePropertiesSet.java
new file mode 100644
index 0000000..b44b2b3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfStylePropertiesSet.java
@@ -0,0 +1,54 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE	CODE !!!
+package	org.odftoolkit.odfdom.dom.style.props;
+public enum	OdfStylePropertiesSet {
+	// style-chart-properties-attlist
+	ChartProperties,
+	// style-drawing-page-properties-attlist
+	DrawingPageProperties,
+	// style-graphic-properties-attlist
+	GraphicProperties,
+	// style-header-footer-properties-attlist
+	HeaderFooterProperties,
+	// style-list-level-properties-attlist
+	ListLevelProperties,
+	// style-page-layout-properties-attlist
+	PageLayoutProperties,
+	// style-paragraph-properties-attlist
+	ParagraphProperties,
+	// style-ruby-properties-attlist
+	RubyProperties,
+	// style-section-properties-attlist
+	SectionProperties,
+	// style-table-cell-properties-attlist
+	TableCellProperties,
+	// style-table-column-properties-attlist
+	TableColumnProperties,
+	// style-table-properties-attlist
+	TableProperties,
+	// style-table-row-properties-attlist
+	TableRowProperties,
+	// style-text-properties-attlist
+	TextProperties,
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfStyleProperty.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfStyleProperty.java
new file mode 100644
index 0000000..2b3d65a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfStyleProperty.java
@@ -0,0 +1,143 @@
+/************************************************************************
+ *
+ * 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.dom.style.props;
+
+import java.util.Iterator;
+import java.util.TreeSet;
+
+import org.odftoolkit.odfdom.pkg.OdfName;
+
+/**
+ * Class to represent a odf style attribut. Each instance has a name and belongs
+ * to an ODF style-properties element. 
+ */
+public class OdfStyleProperty implements Comparable<OdfStyleProperty> {
+
+    private OdfStylePropertiesSet m_propSet;
+    private OdfName m_name;
+
+    private OdfStyleProperty(OdfStylePropertiesSet propSet, OdfName name) {
+        m_propSet = propSet;
+        m_name = name;
+    }
+    private static TreeSet<OdfStyleProperty> m_styleProperties = new TreeSet<OdfStyleProperty>();
+
+    /**
+     * Looks if an OdfStyleProperty is already listed in the static sytleProperties set,
+     * otherwise creates a new one.
+     * @param propSet an OdfStylePropertiesSet member
+     * @param name
+     * @return new created or existing OdfStylePorperty
+     */
+     public static OdfStyleProperty get(OdfStylePropertiesSet propSet, OdfName name) {
+        OdfStyleProperty temp = new OdfStyleProperty(propSet, name);
+        //Replacement for (JDK1.6)
+        //OdfStyleProperty result = m_styleProperties.floor(temp);
+
+        Iterator<OdfStyleProperty> iter = m_styleProperties.iterator();
+        OdfStyleProperty result = null;
+
+        //check if key exists 
+        if (!m_styleProperties.contains(temp)) {
+            m_styleProperties.add(temp);
+            return temp;
+        }
+        while (iter.hasNext()) {
+            result = iter.next();
+            if (result.equals(temp)) {
+                return result;
+            }
+        }
+
+        m_styleProperties.add(temp);
+        return temp;
+        
+    }
+
+    /**
+     * 
+     * @return an OdfStylePropertiesSet member 
+     */
+    public OdfStylePropertiesSet getPropertySet() {
+        return m_propSet;
+    }
+
+    /**
+     * 
+     * @return name of OdfStyleProperty instance
+     */
+    public OdfName getName() {
+        return m_name;
+    }
+
+    /** 
+     * @inheritDoc
+     */
+    @Override
+    public String toString() {
+        return m_name.getQName();
+    }
+
+    public OdfStyleProperty copy() {
+        OdfStyleProperty clone = new OdfStyleProperty(m_propSet, m_name);
+        return clone;
+    }
+
+    /** 
+     * @inheritDoc
+     */
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 83 * hash + (this.m_propSet != null ? this.m_propSet.hashCode() : 0);
+        hash = 83 * hash + (this.m_name != null ? this.m_name.hashCode() : 0);
+        return hash;
+    }
+
+    /** 
+     * @inheritDoc
+     */
+    @Override
+    public boolean equals(Object o) {
+    	if (o instanceof OdfStyleProperty) {
+    		OdfStyleProperty sp = (OdfStyleProperty) o;
+    		return compareTo(sp) == 0;
+    	}
+        return false;
+    }
+
+    public int compareTo(OdfStyleProperty o) {
+        if (!(o instanceof OdfStyleProperty)) {
+            return -1;
+        }
+        OdfStyleProperty prop = o;
+        int c = 0;
+        if ((c = m_propSet.compareTo(prop.m_propSet)) != 0) {
+            return c;
+        }
+        if ((c = m_name.compareTo(prop.m_name)) != 0) {
+            return c;
+        }
+        // all is equal...
+        return 0;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableCellProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableCellProperties.java
new file mode 100644
index 0000000..3e5bd73
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableCellProperties.java
@@ -0,0 +1,99 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfTableCellProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty Border =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border"));
+	public final static OdfStyleProperty BorderBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-bottom"));
+	public final static OdfStyleProperty BorderLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-left"));
+	public final static OdfStyleProperty BorderRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-right"));
+	public final static OdfStyleProperty BorderTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "border-top"));
+	public final static OdfStyleProperty Padding =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding"));
+	public final static OdfStyleProperty PaddingBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-bottom"));
+	public final static OdfStyleProperty PaddingLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-left"));
+	public final static OdfStyleProperty PaddingRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-right"));
+	public final static OdfStyleProperty PaddingTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "padding-top"));
+	public final static OdfStyleProperty WrapOption =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.FO, "wrap-option"));
+	public final static OdfStyleProperty BorderLineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width"));
+	public final static OdfStyleProperty BorderLineWidthBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-bottom"));
+	public final static OdfStyleProperty BorderLineWidthLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-left"));
+	public final static OdfStyleProperty BorderLineWidthRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-right"));
+	public final static OdfStyleProperty BorderLineWidthTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "border-line-width-top"));
+	public final static OdfStyleProperty CellProtect =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "cell-protect"));
+	public final static OdfStyleProperty DecimalPlaces =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "decimal-places"));
+	public final static OdfStyleProperty DiagonalBlTr =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-bl-tr"));
+	public final static OdfStyleProperty DiagonalBlTrWidths =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-bl-tr-widths"));
+	public final static OdfStyleProperty DiagonalTlBr =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-tl-br"));
+	public final static OdfStyleProperty DiagonalTlBrWidths =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "diagonal-tl-br-widths"));
+	public final static OdfStyleProperty Direction =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "direction"));
+	public final static OdfStyleProperty GlyphOrientationVertical =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "glyph-orientation-vertical"));
+	public final static OdfStyleProperty PrintContent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "print-content"));
+	public final static OdfStyleProperty RepeatContent =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "repeat-content"));
+	public final static OdfStyleProperty RotationAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-align"));
+	public final static OdfStyleProperty RotationAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rotation-angle"));
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+	public final static OdfStyleProperty ShrinkToFit =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shrink-to-fit"));
+	public final static OdfStyleProperty TextAlignSource =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-align-source"));
+	public final static OdfStyleProperty VerticalAlign =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableColumnProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableColumnProperties.java
new file mode 100644
index 0000000..25d693c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableColumnProperties.java
@@ -0,0 +1,41 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfTableColumnProperties {
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+	public final static OdfStyleProperty ColumnWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "column-width"));
+	public final static OdfStyleProperty RelColumnWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-column-width"));
+	public final static OdfStyleProperty UseOptimalColumnWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableColumnProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "use-optimal-column-width"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableProperties.java
new file mode 100644
index 0000000..bd1553b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableProperties.java
@@ -0,0 +1,67 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfTableProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+	public final static OdfStyleProperty KeepWithNext =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-with-next"));
+	public final static OdfStyleProperty Margin =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin"));
+	public final static OdfStyleProperty MarginBottom =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-bottom"));
+	public final static OdfStyleProperty MarginLeft =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-left"));
+	public final static OdfStyleProperty MarginRight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-right"));
+	public final static OdfStyleProperty MarginTop =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.FO, "margin-top"));
+	public final static OdfStyleProperty MayBreakBetweenRows =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "may-break-between-rows"));
+	public final static OdfStyleProperty PageNumber =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "page-number"));
+	public final static OdfStyleProperty RelWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rel-width"));
+	public final static OdfStyleProperty Shadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "shadow"));
+	public final static OdfStyleProperty Width =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "width"));
+	public final static OdfStyleProperty WritingMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "writing-mode"));
+	public final static OdfStyleProperty Align =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.TABLE, "align"));
+	public final static OdfStyleProperty BorderModel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.TABLE, "border-model"));
+	public final static OdfStyleProperty Display =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableProperties, OdfName.newName(OdfDocumentNamespace.TABLE, "display"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableRowProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableRowProperties.java
new file mode 100644
index 0000000..6967460
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTableRowProperties.java
@@ -0,0 +1,45 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfTableRowProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty BreakAfter =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-after"));
+	public final static OdfStyleProperty BreakBefore =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "break-before"));
+	public final static OdfStyleProperty KeepTogether =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.FO, "keep-together"));
+	public final static OdfStyleProperty MinRowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "min-row-height"));
+	public final static OdfStyleProperty RowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "row-height"));
+	public final static OdfStyleProperty UseOptimalRowHeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TableRowProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "use-optimal-row-height"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTextProperties.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTextProperties.java
new file mode 100644
index 0000000..8f72aa4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/dom/style/props/OdfTextProperties.java
@@ -0,0 +1,199 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// !!! GENERATED SOURCE CODE !!!
+package org.odftoolkit.odfdom.dom.style.props;
+
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public interface OdfTextProperties {
+	public final static OdfStyleProperty BackgroundColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "background-color"));
+	public final static OdfStyleProperty Color =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "color"));
+	public final static OdfStyleProperty Country =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "country"));
+	public final static OdfStyleProperty FontFamily =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-family"));
+	public final static OdfStyleProperty FontSize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-size"));
+	public final static OdfStyleProperty FontStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-style"));
+	public final static OdfStyleProperty FontVariant =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-variant"));
+	public final static OdfStyleProperty FontWeight =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "font-weight"));
+	public final static OdfStyleProperty Hyphenate =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenate"));
+	public final static OdfStyleProperty HyphenationPushCharCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-push-char-count"));
+	public final static OdfStyleProperty HyphenationRemainCharCount =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "hyphenation-remain-char-count"));
+	public final static OdfStyleProperty Language =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "language"));
+	public final static OdfStyleProperty LetterSpacing =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "letter-spacing"));
+	public final static OdfStyleProperty Script =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "script"));
+	public final static OdfStyleProperty TextShadow =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-shadow"));
+	public final static OdfStyleProperty TextTransform =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.FO, "text-transform"));
+	public final static OdfStyleProperty CountryAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "country-asian"));
+	public final static OdfStyleProperty CountryComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "country-complex"));
+	public final static OdfStyleProperty FontCharset =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset"));
+	public final static OdfStyleProperty FontCharsetAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset-asian"));
+	public final static OdfStyleProperty FontCharsetComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-charset-complex"));
+	public final static OdfStyleProperty FontFamilyAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-asian"));
+	public final static OdfStyleProperty FontFamilyComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-complex"));
+	public final static OdfStyleProperty FontFamilyGeneric =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic"));
+	public final static OdfStyleProperty FontFamilyGenericAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic-asian"));
+	public final static OdfStyleProperty FontFamilyGenericComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-family-generic-complex"));
+	public final static OdfStyleProperty FontName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name"));
+	public final static OdfStyleProperty FontNameAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name-asian"));
+	public final static OdfStyleProperty FontNameComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-name-complex"));
+	public final static OdfStyleProperty FontPitch =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch"));
+	public final static OdfStyleProperty FontPitchAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch-asian"));
+	public final static OdfStyleProperty FontPitchComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-pitch-complex"));
+	public final static OdfStyleProperty FontRelief =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-relief"));
+	public final static OdfStyleProperty FontSizeAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-asian"));
+	public final static OdfStyleProperty FontSizeComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-complex"));
+	public final static OdfStyleProperty FontSizeRel =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel"));
+	public final static OdfStyleProperty FontSizeRelAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel-asian"));
+	public final static OdfStyleProperty FontSizeRelComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-size-rel-complex"));
+	public final static OdfStyleProperty FontStyleAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-asian"));
+	public final static OdfStyleProperty FontStyleComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-complex"));
+	public final static OdfStyleProperty FontStyleName =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name"));
+	public final static OdfStyleProperty FontStyleNameAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name-asian"));
+	public final static OdfStyleProperty FontStyleNameComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-style-name-complex"));
+	public final static OdfStyleProperty FontWeightAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-weight-asian"));
+	public final static OdfStyleProperty FontWeightComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "font-weight-complex"));
+	public final static OdfStyleProperty LanguageAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "language-asian"));
+	public final static OdfStyleProperty LanguageComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "language-complex"));
+	public final static OdfStyleProperty LetterKerning =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "letter-kerning"));
+	public final static OdfStyleProperty RfcLanguageTag =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag"));
+	public final static OdfStyleProperty RfcLanguageTagAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag-asian"));
+	public final static OdfStyleProperty RfcLanguageTagComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "rfc-language-tag-complex"));
+	public final static OdfStyleProperty ScriptAsian =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "script-asian"));
+	public final static OdfStyleProperty ScriptComplex =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "script-complex"));
+	public final static OdfStyleProperty ScriptType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "script-type"));
+	public final static OdfStyleProperty TextBlinking =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-blinking"));
+	public final static OdfStyleProperty TextCombine =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine"));
+	public final static OdfStyleProperty TextCombineEndChar =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine-end-char"));
+	public final static OdfStyleProperty TextCombineStartChar =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-combine-start-char"));
+	public final static OdfStyleProperty TextEmphasize =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-emphasize"));
+	public final static OdfStyleProperty TextLineThroughColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-color"));
+	public final static OdfStyleProperty TextLineThroughMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-mode"));
+	public final static OdfStyleProperty TextLineThroughStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-style"));
+	public final static OdfStyleProperty TextLineThroughText =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-text"));
+	public final static OdfStyleProperty TextLineThroughTextStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-text-style"));
+	public final static OdfStyleProperty TextLineThroughType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-type"));
+	public final static OdfStyleProperty TextLineThroughWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-line-through-width"));
+	public final static OdfStyleProperty TextOutline =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-outline"));
+	public final static OdfStyleProperty TextOverlineColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-color"));
+	public final static OdfStyleProperty TextOverlineMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-mode"));
+	public final static OdfStyleProperty TextOverlineStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-style"));
+	public final static OdfStyleProperty TextOverlineType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-type"));
+	public final static OdfStyleProperty TextOverlineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-overline-width"));
+	public final static OdfStyleProperty TextPosition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-position"));
+	public final static OdfStyleProperty TextRotationAngle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-rotation-angle"));
+	public final static OdfStyleProperty TextRotationScale =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-rotation-scale"));
+	public final static OdfStyleProperty TextScale =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-scale"));
+	public final static OdfStyleProperty TextUnderlineColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-color"));
+	public final static OdfStyleProperty TextUnderlineMode =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-mode"));
+	public final static OdfStyleProperty TextUnderlineStyle =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-style"));
+	public final static OdfStyleProperty TextUnderlineType =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-type"));
+	public final static OdfStyleProperty TextUnderlineWidth =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "text-underline-width"));
+	public final static OdfStyleProperty UseWindowFontColor =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.STYLE, "use-window-font-color"));
+	public final static OdfStyleProperty Condition =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "condition"));
+	public final static OdfStyleProperty Display =
+		OdfStyleProperty.get(OdfStylePropertiesSet.TextProperties, OdfName.newName(OdfDocumentNamespace.TEXT, "display"));
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/draw/OdfDrawFrame.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/draw/OdfDrawFrame.java
new file mode 100644
index 0000000..aa7537d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/draw/OdfDrawFrame.java
@@ -0,0 +1,49 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.draw.Frame} in Simple API.
+ */
+public class OdfDrawFrame extends DrawFrameElement
+{
+
+    // ToDo: OdfMeassure / OdfUnit
+
+	private static final long serialVersionUID = -2260696671403198845L;
+
+	// ToDo - What are mandatory ODF attributes, what are the OOo defaults?
+    // ToDo - mandatory attributes part of the constructor default values should always be set in constructor
+    /** Creates a new instance of this class */
+    public OdfDrawFrame(OdfFileDom ownerDoc) {
+        super(ownerDoc);
+        this.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+    }
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/draw/OdfDrawImage.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/draw/OdfDrawImage.java
new file mode 100644
index 0000000..69711c4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/draw/OdfDrawImage.java
@@ -0,0 +1,320 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.draw;
+
+import java.awt.image.BufferedImage;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.imageio.ImageIO;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.odfdom.type.AnyURI;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.w3c.dom.NodeList;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.draw.Image} in Simple API.
+ */
+public class OdfDrawImage extends DrawImageElement {
+
+	private static final long serialVersionUID = 8409319888919451149L;
+	private URI mImageURI;
+	// OdfPackage necessary to adapt the manifest referencing the image
+	private OdfPackage mOdfPackage;
+	private OdfSchemaDocument mOdfSchemaDocument;
+	private static final String SLASH = "/";
+
+	/** Creates a new instance of this class
+	 * @param ownerDoc The XML DOM containing the draw:image element
+	 */
+	public OdfDrawImage(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+		mOdfSchemaDocument = (OdfSchemaDocument) ownerDoc.getDocument();
+		mOdfPackage = mOdfSchemaDocument.getPackage();
+	}
+
+	/**
+	 * Return the URI for this image
+	 * @return   the URI of image
+	 */
+	public URI getImageUri() {
+		try {
+			if (mImageURI == null) {
+				mImageURI = new URI(AnyURI.encodePath(this.getXlinkHrefAttribute().toString()));
+			}
+		} catch (URISyntaxException ex) {
+			Logger.getLogger(OdfDrawImage.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return mImageURI;
+	}
+
+	/**
+	 * The image path will be stored as URI of the href attribute
+	 *
+	 * @param packagePath The relative path from the package root to the image
+	 */
+	public void setImagePath(String packagePath) {
+		try {			
+			packagePath = packagePath.replaceFirst(mOdfSchemaDocument.getDocumentPath(), "");
+			URI uri = new URI(AnyURI.encodePath(packagePath).toString());
+			this.setXlinkHrefAttribute(AnyURI.decodePath(uri.toString()));
+			mImageURI = uri;
+		} catch (URISyntaxException ex) {
+			Logger.getLogger(OdfDrawImage.class.getName()).log(Level.SEVERE, null, ex);
+		}
+	}
+
+	/* Helper method */
+	private String getPackagePath(String imageRef) {
+		if (imageRef.contains(SLASH)) {
+			imageRef = imageRef.substring(imageRef.lastIndexOf(SLASH) + 1, imageRef.length());
+		}
+		String packagePath = OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + imageRef;
+		return packagePath = mOdfSchemaDocument.getDocumentPath() + packagePath;
+	}
+
+	/* Helper method */
+	private void configureInsertedImage(String packagePath) throws Exception {
+		// Set path to image attribute
+		setImagePath(packagePath);
+		// Set mandatory attribute xlink:type
+		setXlinkTypeAttribute("simple");
+		// A draw:image is always embedded in a draw:frame
+		InputStream is = mOdfPackage.getInputStream(packagePath);
+		OdfDrawFrame odfFrame = (OdfDrawFrame) this.getParentNode();
+		if (odfFrame != null) {
+			BufferedImage image = ImageIO.read(is);
+			// some image formats like SVG might not be understood by ImageIO			
+			if (image != null)
+			{
+				int height = image.getHeight(null);
+				int width = image.getWidth(null);
+				odfFrame.setSvgHeightAttribute(Length.mapToUnit(String.valueOf(height) + "px", Unit.CENTIMETER));
+				odfFrame.setSvgWidthAttribute(Length.mapToUnit(String.valueOf(width) + "px", Unit.CENTIMETER));
+			}
+		}
+	}
+
+	/**
+	 * Inserts the image file from the URI to the ODF package named similar as in the URI.
+	 * The manifest is adapted using the media type according to the suffix. Existing images are replaced.
+	 * Note: Default image seize will only be set, if the draw:image had been added to its draw:frame prior.
+	 *
+	 * @param imageUri The URI of the image that will be added as stream to the package
+	 *                 in the 'Pictures/' graphic directory with the same image file name as in the URI.
+	 *                 If the imageURI is relativ first the user.dir is taken to make it absolute.
+	 * @return              Returns the package path of the image, which was created based on the given URI.
+	 * @throws Exception    If the image provided by the URI, could not be added as stream to the ODF package.
+	 *
+	 */
+	public String newImage(URI imageUri) throws Exception {
+		String imageRef = imageUri.toString();
+		String mediaType = OdfFileEntry.getMediaTypeString(imageRef);
+		String packagePath = getPackagePath(imageRef);
+		mOdfPackage.insert(imageUri, packagePath, mediaType);
+		configureInsertedImage(packagePath);
+		return packagePath;
+	}
+
+	/**
+	 *
+	 * Inserts the image file from the stream to the ODF package named similar as in the provided path..
+	 * The manifest is adapted using given media type. Existing images are replaced.
+	 * @param is            InputStream to be added to the ODF package
+	 * @param packagePath   Internal path of the image in the package
+	 * @param mediaType     The mediaType of the image.
+	 *                      Can be obtained by the OdfFileEntry class findMediaType(String fileRef).
+	 * @throws Exception    If the given stream could not be added to the ODF package at the packagePatch
+	 */
+	public void newImage(InputStream is, String packagePath, String mediaType) throws Exception {
+		mOdfPackage.insert(is, packagePath, mediaType);
+		configureInsertedImage(packagePath);
+	}
+
+	/**
+	 * The method returns the specific one or more images by image path since the image may be inserted to the document several times.
+	 * @param doc the document the image belongs to
+	 * @param imagePath	the internal package path of the image.
+	 * @return			an Image list that match the given image path
+	 *                  if no images is found under the given path, return an empty list.
+	 */
+	public static List<OdfDrawImage> getImageByPath(OdfSchemaDocument doc, String imagePath) {
+		ArrayList<OdfDrawImage> imageList = new ArrayList<OdfDrawImage>();
+
+		try {
+			NodeList imageNodes = doc.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "image");
+
+			for (int i = 0; i < imageNodes.getLength(); i++) {
+				OdfDrawImage image = (OdfDrawImage) imageNodes.item(i);
+				if (image.getXlinkHrefAttribute().equals(imagePath)) {
+					imageList.add(image);
+				}
+			}
+			if (imageList.size() > 0) {
+				return imageList;
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(OdfDrawImage.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		return imageList;
+	}
+
+	/**
+	 * The method deletes one or more images from image container by image path.
+	 * @param doc the document the image should be deleted from
+	 * @param imagePath	the internal package path of the image.
+	 */
+	public static void deleteImageByPath(OdfSchemaDocument doc, String imagePath) {
+		List<OdfDrawImage> imageList = getImageByPath(doc, imagePath);
+		if (imageList != null) {
+			Iterator<OdfDrawImage> it = imageList.iterator();
+			while (it.hasNext()) {
+				OdfDrawImage image = it.next();
+				//remove the inserted picture
+				String ref = image.getXlinkHrefAttribute().toString();
+				doc.getPackage().remove(ref);
+
+				//remove the draw:frame element in main document
+				if (image.getParentNode() instanceof OdfDrawFrame) {
+					OdfDrawFrame frame = (OdfDrawFrame) image.getParentNode();
+					if (frame.getChildNodes().getLength() == 1) {
+						frame.getParentNode().removeChild(frame);
+					} else {
+						image.getParentNode().removeChild(image);
+					}
+				} else {
+					image.getParentNode().removeChild(image);
+				}
+
+				//remove Pictures/ directory if container does not have images
+				if (getImageCount(doc) == 0) {
+					doc.getPackage().remove(OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH);
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * The method deletes the specified image from image container.
+	 * @param doc the document the image should be deleted from
+	 * @param image  the image which need to be deleted
+	 */
+	public static void deleteImage(OdfSchemaDocument doc, OdfDrawImage image) {
+
+
+		// remove the inserted picture if it does not have reference any more
+		String ref = image.getXlinkHrefAttribute().toString();
+		List<OdfDrawImage> imageList = getImageByPath(doc, ref);
+		if (imageList.size() == 1) {
+			doc.getPackage().remove(ref);
+		}
+
+		// remove the draw:frame element in main document
+		if (image.getParentNode() instanceof OdfDrawFrame) {
+			OdfDrawFrame frame = (OdfDrawFrame) image.getParentNode();
+			if (frame.getChildNodes().getLength() == 1) {
+				frame.getParentNode().removeChild(frame);
+			} else {
+				image.getParentNode().removeChild(image);
+			}
+		} else {
+			image.getParentNode().removeChild(image);
+		}
+
+		// remove Pictures/ directory if container does not have images
+		if (getImageCount(doc) == 0) {
+			doc.getPackage().remove(
+					OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH);
+		}
+
+	}
+
+	/**
+	 * Get the count of image objects in the image container.
+	 * @param doc the document the image should be counted from
+	 * @return			the number of image in this document
+	 *                  if no image is found, return zero
+	 */
+	public static int getImageCount(OdfSchemaDocument doc) {
+		try {
+			NodeList imageNodes = doc.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "image");
+			return imageNodes.getLength();
+		} catch (Exception ex) {
+			Logger.getLogger(OdfDrawImage.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		return 0;
+	}
+
+	/**
+	 * The method return the image list in the image container.
+	 * @param doc  the document the list of images should be returned from
+	 * @return			an image list in this document
+	 *                  if no images is found, return an empty list.
+	 */
+	public static List<OdfDrawImage> getImages(OdfSchemaDocument doc) {
+		ArrayList<OdfDrawImage> imageList = new ArrayList<OdfDrawImage>();
+		try {
+			NodeList imageNodes = doc.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "image");
+			for (int i = 0; i < imageNodes.getLength(); i++) {
+				OdfDrawImage image = (OdfDrawImage) imageNodes.item(i);
+				imageList.add(image);
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(OdfDrawImage.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		return imageList;
+	}
+
+	/**
+	 * The method return the set of all the image paths.
+	 * @param doc the document the image path set should be obtained from
+	 * @return			an image path set in this document
+	 */
+	public static Set<String> getImagePathSet(OdfSchemaDocument doc) {
+		Set<String> paths = new HashSet<String>();
+		List<OdfDrawImage> imageList = getImages(doc);
+		Iterator<OdfDrawImage> it = imageList.iterator();
+		while (it.hasNext()) {
+			OdfDrawImage image = it.next();
+			paths.add(image.getXlinkHrefAttribute().toString());
+		}
+		return paths;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberCurrencyStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberCurrencyStyle.java
new file mode 100644
index 0000000..56d297b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberCurrencyStyle.java
@@ -0,0 +1,314 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.number;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencyStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencySymbolElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfNumberCurrencyStyle extends NumberCurrencyStyleElement {
+
+	public OdfNumberCurrencyStyle(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+	}
+
+	public OdfNumberCurrencyStyle(OdfFileDom ownerDoc,
+			String currencySymbol, String format, String styleName) {
+		super(ownerDoc);
+		this.setStyleNameAttribute(styleName);
+		buildFromFormat(currencySymbol, format);
+	}
+
+	/**
+	 * Get the format string that represents this style.
+	 * @return the format string
+	 */
+	public String getFormat() {
+		String result = "";
+		Node m = getFirstChild();
+		while (m != null) {
+			if (m instanceof NumberCurrencySymbolElement) {
+				result += m.getTextContent();
+			} else if (m instanceof NumberNumberElement) {
+				result += getNumberFormat();
+			} else if (m instanceof NumberTextElement) {
+				String textcontent = m.getTextContent();
+				if (textcontent == null || textcontent.length() == 0) {
+					textcontent = " ";
+				}
+				result += textcontent;
+			}
+			m = m.getNextSibling();
+		}
+		return result;
+	}
+
+	public String getNumberFormat() {
+		String result = "";
+		NumberNumberElement number = OdfElement.findFirstChildNode(NumberNumberElement.class, this);
+		boolean isGroup = number.getNumberGroupingAttribute();
+		int decimalPos = (number.getNumberDecimalPlacesAttribute() == null) ? 0
+				: number.getNumberDecimalPlacesAttribute().intValue();
+		int minInt = (number.getNumberMinIntegerDigitsAttribute() == null) ? 1
+				: number.getNumberMinIntegerDigitsAttribute().intValue();
+
+		int i;
+		for (i = 0; i < minInt; i++) {
+			if (((i + 1) % 3) == 0 && isGroup) {
+				result = ",0" + result;
+			} else {
+				result = "0" + result;
+			}
+		}
+		while (isGroup && (result.indexOf(',') == -1)) {
+			if (((i + 1) % 3) == 0 && isGroup) {
+				result = ",#" + result;
+			} else {
+				result = "#" + result;
+			}
+			i++;
+		}
+
+		result = "#" + result;
+		if (decimalPos > 0) {
+			result += ".";
+			for (i = 0; i < decimalPos; i++) {
+				result += "0";
+			}
+		}
+		return result;
+	}
+
+	public String getConditionStyleName(double value) {
+		StyleMapElement map = OdfElement.findFirstChildNode(StyleMapElement.class, this);
+		while (map != null) {
+			String condition = map.getStyleConditionAttribute();
+			if (isTrue(condition, value)) {
+				return map.getStyleApplyStyleNameAttribute();
+			}
+			map = OdfElement.findNextChildNode(StyleMapElement.class, map);
+		}
+		return getStyleNameAttribute();
+	}
+
+	private boolean isTrue(String condition, double value) {
+		double rightOp = getLastNumber(condition);
+		if (condition.indexOf('>') != -1) {
+			if (value > rightOp) {
+				return true;
+			}
+		} else if (condition.indexOf('<') != -1) {
+			if (value < rightOp) {
+				return true;
+			}
+		}
+		if (condition.indexOf('!') != -1) {
+			if (value != rightOp) {
+				return true;
+			}
+		} else if (condition.indexOf('=') != -1) {
+			if (value == rightOp) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private Double getLastNumber(String condition) {
+		String results = "";
+		for (int i = condition.length() - 1; i >= 0; i--) {
+			if (condition.charAt(i) >= '0' && condition.charAt(i) <= '9') {
+				results += condition.charAt(i);
+			} else {
+				break;
+			}
+		}
+		return Double.parseDouble(results);
+	}
+
+	/**
+	 * Creates a &lt;number:date-style&gt; element based upon format.
+	 * @param currencySymbol the string to be placed as the currency symbol
+	 * @param format the currency format string
+	 */
+	public void buildFromFormat(String currencySymbol, String format) {
+		String preMatch;
+		String numberSpec;
+		String postMatch;
+		int pos;
+		char ch;
+		int nDigits;
+
+		Pattern p = Pattern.compile("[#0,.]+");
+		Matcher m;
+		NumberNumberElement number;
+
+		/*
+		 * If there is a numeric specifcation, then split the
+		 * string into the part before the specifier, the specifier
+		 * itself, and then part after the specifier. The parts
+		 * before and after are just text (which may contain the
+		 * currency symbol).
+		 */
+		m = p.matcher(format);
+		if (m.find()) {
+			preMatch = format.substring(0, m.start());
+			numberSpec = format.substring(m.start(), m.end());
+			postMatch = format.substring(m.end());
+
+			processText(preMatch, currencySymbol);
+
+			number = new NumberNumberElement((OdfFileDom) this.getOwnerDocument());
+
+			/* Process part before the decimal point (if any) */
+			nDigits = 0;
+			for (pos = 0; pos < numberSpec.length()
+					&& (ch = numberSpec.charAt(pos)) != '.'; pos++) {
+				if (ch == ',') {
+					number.setNumberGroupingAttribute(new Boolean(true));
+				} else if (ch == '0') {
+					nDigits++;
+				}
+			}
+			number.setNumberMinIntegerDigitsAttribute(nDigits);
+
+			/* Number of decimal places is the length after the decimal */
+			if (pos < numberSpec.length()) {
+				number.setNumberDecimalPlacesAttribute(numberSpec.length() - (pos + 1));
+			}
+			this.appendChild(number);
+
+			processText(postMatch, currencySymbol);
+		}
+	}
+
+	/**
+	 * Process text that may have a currency symbol ($) in it.
+	 * @param text string to be processed
+	 * @param currencySymbol the currency symbol under consideration
+	 */
+	private void processText(String text, String currencySymbol) {
+		OdfFileDom dom = (OdfFileDom) this.getOwnerDocument();
+		int currencyPos = text.indexOf(currencySymbol);
+		if (currencyPos >= 0) {
+			emitText(text.substring(0, currencyPos));
+			NumberCurrencySymbolElement cSymbol = new NumberCurrencySymbolElement(dom);
+			cSymbol.appendChild(dom.createTextNode(currencySymbol));
+			this.appendChild(cSymbol);
+			emitText(text.substring(currencyPos + currencySymbol.length()));
+		} else {
+			emitText(text);
+		}
+	}
+
+	/**
+	 *	Place pending text into a &lt;number:text&gt; element.
+	 * @param textBuffer pending text
+	 */
+	private void emitText(String textBuffer) {
+		NumberTextElement textElement;
+		if (!textBuffer.equals("")) {
+			textElement = new NumberTextElement((OdfFileDom) this.getOwnerDocument());
+			textElement.setTextContent(textBuffer);
+			this.appendChild(textElement);
+		}
+	}
+
+	/**
+	 * Get OdfCurrencySymbol element from this currency style.
+	 * Once you have it, you can add language and country.
+	 * @return an OdfCurrencySymbol element
+	 */
+	public NumberCurrencySymbolElement getCurrencySymbolElement() {
+		NumberCurrencySymbolElement cSymbol = null;
+		NodeList list = this.getElementsByTagNameNS(
+				OdfDocumentNamespace.NUMBER.getUri(), "currency-symbol");
+		if (list.getLength() > 0) {
+			cSymbol = (NumberCurrencySymbolElement) list.item(0);
+		}
+		return cSymbol;
+	}
+
+	/**
+	 * Set language and currency for the currency symbol.
+	 * @param language the language for the country
+	 * @param country the country name
+	 */
+	public void setCurrencyLocale(String language, String country) {
+		NumberCurrencySymbolElement cSymbol = getCurrencySymbolElement();
+		cSymbol.setNumberCountryAttribute(country);
+		cSymbol.setNumberLanguageAttribute(language);
+	}
+
+	/**
+	 * Set language and currency for the currency symbol.
+	 * Argument could be just a language like "el" or a
+	 * language and country like "en-US".
+	 * @param locale string in form language-country or language
+	 */
+	public void setCurrencyLocale(String locale) {
+		NumberCurrencySymbolElement cSymbol = getCurrencySymbolElement();
+		int pos = locale.indexOf('-');
+		if (pos >= 0) {
+			cSymbol.setNumberLanguageAttribute(locale.substring(0, pos));
+			cSymbol.setNumberCountryAttribute(locale.substring(pos + 1));
+		} else {
+			cSymbol.setNumberLanguageAttribute(locale);
+		}
+	}
+
+	/**
+	 * Set &lt;style:map&gt; for positive values to the given style .
+	 * @param mapName the style  to map to
+	 */
+	public void setMapPositive(String mapName) {
+		StyleMapElement map = new StyleMapElement((OdfFileDom) this.getOwnerDocument());
+		map.setStyleApplyStyleNameAttribute(mapName);
+		map.setStyleConditionAttribute("value()>0");
+		this.appendChild(map);
+	}
+
+	/**
+	 * Set &lt;style:map&gt; for negative values to the given style .
+	 * @param mapName the style  to map to
+	 */
+	public void setMapNegative(String mapName) {
+		StyleMapElement map = new StyleMapElement((OdfFileDom) this.getOwnerDocument());
+		map.setStyleApplyStyleNameAttribute(mapName);
+		map.setStyleConditionAttribute("value()<0");
+		this.appendChild(map);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberDateStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberDateStyle.java
new file mode 100644
index 0000000..2ced689
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberDateStyle.java
@@ -0,0 +1,396 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.number;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberFormatSourceAttribute;
+import org.odftoolkit.odfdom.dom.element.number.NumberAmPmElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDateStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDayElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberDayOfWeekElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberEraElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberHoursElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberMinutesElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberMonthElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberQuarterElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberSecondsElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberWeekOfYearElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberYearElement;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ * This class lets you create a date style from a format string.
+ * The format string is given in the same form as Java's
+ * SimpleDateFormat class.
+ *
+ * The characters used are:
+ * <pre>
+G  	Era designator       AD
+y 	Year                 1996; 96
+Q	Quarter in Year      2 -- not in Java; in ODF
+M 	Month in year        July; Jul; 07
+w 	Week in year         27
+W 	Week in month        -- not in ODF
+D 	Day in year          -- not in ODF
+d 	Day in month         10
+F 	Day of week in month -- not in ODF
+E 	Day in week          Tuesday; Tue
+a 	Am/pm marker         PM
+H 	Hour in day (0-23)   0
+k 	Hour in day (1-24)   -- not in ODF
+K 	Hour in am/pm (0-11) -- not in ODF
+h 	Hour in am/pm (1-12) -- depends on AM/PM marker
+m 	Minute in hour       30
+s 	Second in minute     55
+S 	Millisecond          -- not in ODF
+z 	Time zone            -- not in ODF
+Z 	Time zone RFC822     -- not in ODF
+ * </pre>
+ *  The G, E, and y specifiers are in long form if there are more then 3 in a row.
+ *  The Q specifier is in long form if there are more than 2 in a row.
+ *  The d, h, and m specifiers are in long form if there is more than one in a row.
+ */
+public class OdfNumberDateStyle extends NumberDateStyleElement {
+
+	private String styleName;
+	private String calendarName;
+
+	public OdfNumberDateStyle(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+	}
+
+	/** Creates a new instance of DateStyleFromFormat.
+	 * @param ownerDoc document that this format belongs to
+	 * @param format format string for the date/time
+	 * @param styleName name of this style
+	 */
+	public OdfNumberDateStyle(OdfFileDom ownerDoc, String format, String styleName) {
+		this(ownerDoc, format, styleName, null);
+	}
+
+	/** Creates a new instance of DateStyleFromFormat.
+	 * @param ownerDoc document that this format belongs to
+	 * @param format format string for the date/time
+	 * @param styleName name of this style
+	 * @param calendarName name of the calendar this date style belongs to
+	 */
+	public OdfNumberDateStyle(OdfFileDom ownerDoc, String format, String styleName,
+			String calendarName) {
+		super(ownerDoc);
+		this.styleName = styleName;
+		this.calendarName = calendarName;
+		buildFromFormat(format);
+	}
+
+	/**
+	 * Get the format string that represents this style.
+	 * @return the format string
+	 */
+	public String getFormat() {
+		String result = "";
+		NumberAmPmElement ampmEle = OdfElement.findFirstChildNode(NumberAmPmElement.class, this);
+		Node child = this.getFirstChild();
+		while (child != null) {
+			if (child instanceof OdfElement) {
+				if (child instanceof NumberDayElement) {
+					NumberDayElement ele = (NumberDayElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "dd";
+					} else {
+						result += "d";
+					}
+				} else if (child instanceof NumberMonthElement) {
+					NumberMonthElement ele = (NumberMonthElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if (ele.getNumberTextualAttribute().booleanValue()) {
+						if ((numberstyle != null) && numberstyle.equals("long")) {
+							result += "MMMM";
+						} else {
+							result += "MMM";
+						}
+					} else {
+						if ((numberstyle != null) && numberstyle.equals("long")) {
+							result += "MM";
+						} else {
+							result += "M";
+						}
+					}
+				} else if (child instanceof NumberYearElement) {
+					NumberYearElement ele = (NumberYearElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "yyyy";
+					} else {
+						result += "yy";
+					}
+				} else if (child instanceof NumberTextElement) {
+					String content = child.getTextContent();
+					if ((content == null) || (content.equals(""))) {
+						result += " ";
+					} else {
+						result += content;
+					}
+				} else if (child instanceof NumberEraElement) {
+					NumberEraElement ele = (NumberEraElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "GGGG";
+					} else {
+						result += "GG";
+					}
+				} else if (child instanceof NumberHoursElement) {
+					NumberHoursElement ele = (NumberHoursElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if (ampmEle != null) {
+						if ((numberstyle != null) && numberstyle.equals("long")) {
+							result += "hh";
+						} else {
+							result += "h";
+						}
+					} else {
+						if ((numberstyle != null) && numberstyle.equals("long")) {
+							result += "HH";
+						} else {
+							result += "H";
+						}
+					}
+				} else if (child instanceof NumberMinutesElement) {
+					NumberMinutesElement ele = (NumberMinutesElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "mm";
+					} else {
+						result += "m";
+					}
+				} else if (child instanceof NumberSecondsElement) {
+					NumberSecondsElement ele = (NumberSecondsElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "ss";
+					} else {
+						result += "s";
+					}
+				} else if (child instanceof NumberQuarterElement) {
+					NumberQuarterElement ele = (NumberQuarterElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "QQQ";
+					} else {
+						result += "Q";
+					}
+				} else if (child instanceof NumberDayOfWeekElement) {
+					NumberDayOfWeekElement ele = (NumberDayOfWeekElement) child;
+					String numberstyle = ele.getNumberStyleAttribute();
+					if ((numberstyle != null) && numberstyle.equals("long")) {
+						result += "EEEE";
+					} else {
+						result += "EEE";
+					}
+				} else if (child instanceof NumberAmPmElement) {
+					result += "a";
+				}
+			}
+			child = child.getNextSibling();
+		}
+		return result;
+	}
+
+	/**
+	 * Creates a &lt;number:date-style&gt; element based upon format.
+	 * @param format the format string
+	 */
+	public void buildFromFormat(String format) {
+		String actionChars = "GyQMwdEaHhms";
+		int actionCount = 0;
+
+		char ch;
+		String textBuffer = "";
+		boolean endQuote = false;
+
+		int i = 0;
+
+		this.setStyleNameAttribute(styleName);
+		this.setNumberFormatSourceAttribute(NumberFormatSourceAttribute.Value.LANGUAGE.toString());
+
+		while (i < format.length()) {
+			ch = format.charAt(i);
+			if (actionChars.indexOf(ch) >= 0) {
+				appendText(textBuffer);
+				textBuffer = "";
+				actionCount = 0;
+				while (i < format.length() && format.charAt(i) == ch) {
+					actionCount++;
+					i++;
+				}
+				processChar(ch, actionCount);
+			} else if (ch == '\'') {
+				endQuote = false;
+				i++;
+				while (i < format.length() && (!endQuote)) {
+					ch = format.charAt(i);
+					if (ch == '\'') // check to see if this is really the end
+					{
+						if (i + 1 < format.length() && format.charAt(i + 1) == '\'') {
+							i++;
+							textBuffer += "'";
+						} else {
+							endQuote = true;
+						}
+					} else {
+						textBuffer += ch;
+					}
+					i++;
+				}
+			} else {
+				textBuffer += ch;
+				i++;
+			}
+		}
+		appendText(textBuffer);
+	}
+
+	/**
+	 *	Place pending text into a &lt;number:text&gt; element.
+	 * @param textBuffer pending text
+	 */
+	private void appendText(String textBuffer) {
+		NumberTextElement textElement = null;
+		if (!textBuffer.equals("")) {
+			textElement = new NumberTextElement((OdfFileDom) this.getOwnerDocument());
+			textElement.setTextContent(textBuffer);
+			this.appendChild(textElement);
+		}
+	}
+
+	/**
+	 * Process a formatting character.
+	 * These elements are built "by hand" rather than
+	 * @param ch the formatting character to process
+	 * @param count the number of occurrences of this character
+	 */
+	private void processChar(char ch, int count) {
+		OdfFileDom ownerDoc = (OdfFileDom) this.getOwnerDocument();
+		switch (ch) {
+			case 'G':
+				NumberEraElement era =
+						new NumberEraElement(ownerDoc);
+				era.setNumberStyleAttribute(isLongIf(count > 3));
+				if (calendarName != null) {
+					era.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(era);
+				break;
+			case 'y':
+				NumberYearElement year =
+						new NumberYearElement(ownerDoc);
+				year.setNumberStyleAttribute(isLongIf(count > 3));
+				if (calendarName != null) {
+					year.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(year);
+				break;
+			case 'Q':
+				NumberQuarterElement quarter =
+						new NumberQuarterElement(ownerDoc);
+				quarter.setNumberStyleAttribute(isLongIf(count > 2));
+				if (calendarName != null) {
+					quarter.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(quarter);
+				break;
+			case 'M':
+				NumberMonthElement month =
+						new NumberMonthElement(ownerDoc);
+				month.setNumberTextualAttribute(count > 2);
+				month.setNumberStyleAttribute(isLongIf(count % 2 == 0));
+				if (calendarName != null) {
+					month.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(month);
+				break;
+			case 'w':
+				NumberWeekOfYearElement weekOfYear =
+						new NumberWeekOfYearElement(ownerDoc);
+				if (calendarName != null) {
+					weekOfYear.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(weekOfYear);
+				break;
+			case 'd':
+				NumberDayElement day =
+						new NumberDayElement(ownerDoc);
+				day.setNumberStyleAttribute(isLongIf(count > 1));
+				if (calendarName != null) {
+					day.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(day);
+				break;
+			case 'E':
+				NumberDayOfWeekElement dayOfWeek =
+						new NumberDayOfWeekElement(ownerDoc);
+				dayOfWeek.setNumberStyleAttribute(isLongIf(count > 3));
+				if (calendarName != null) {
+					dayOfWeek.setNumberCalendarAttribute(calendarName);
+				}
+				this.appendChild(dayOfWeek);
+				break;
+			case 'a':
+				NumberAmPmElement ampm =
+						new NumberAmPmElement(ownerDoc);
+				this.appendChild(ampm);
+				break;
+			case 'H':
+			case 'h':
+				NumberHoursElement hours =
+						new NumberHoursElement(ownerDoc);
+				hours.setNumberStyleAttribute(isLongIf(count > 1));
+				this.appendChild(hours);
+				break;
+			case 'm':
+				NumberMinutesElement minutes =
+						new NumberMinutesElement(ownerDoc);
+				minutes.setNumberStyleAttribute(isLongIf(count > 1));
+				this.appendChild(minutes);
+				break;
+			case 's':
+				NumberSecondsElement seconds =
+						new NumberSecondsElement(ownerDoc);
+				seconds.setNumberStyleAttribute(isLongIf(count > 1));
+				this.appendChild(seconds);
+				break;
+		}
+	}
+
+	/**
+	 * Add long or short style to an element.
+	 * @param isLong true if this is number:style="long"; false if number:style="short"
+	 * @return the string "long" or "short"
+	 */
+	private String isLongIf(boolean isLong) {
+		return ((isLong) ? "long" : "short");
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberPercentageStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberPercentageStyle.java
new file mode 100644
index 0000000..a743917
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberPercentageStyle.java
@@ -0,0 +1,210 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.number;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberPercentageStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfNumberPercentageStyle extends NumberPercentageStyleElement {
+
+	public OdfNumberPercentageStyle(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+	}
+
+	/**
+	 * Creates a new instance of OdfNumberPercentageStyle.
+	 * @param ownerDoc document that this format belongs to
+	 * @param format format string for the date/time
+	 * @param styleName name of this style
+	 */
+	public OdfNumberPercentageStyle(OdfFileDom ownerDoc, String format, String styleName) {
+		super(ownerDoc);
+		this.setStyleNameAttribute(styleName);
+		buildFromFormat(format);
+	}
+
+	/**
+	 * Get the format string that represents this style.
+	 * @return the format string
+	 */
+	public String getFormat() {
+		String result = "";
+		Node m = getFirstChild();
+		while (m != null) {
+			if (m instanceof NumberNumberElement) {
+				result += getNumberFormat();
+			} else if (m instanceof NumberTextElement) {
+				String textcontent = m.getTextContent();
+				if (textcontent == null || textcontent.length() == 0) {
+					textcontent = " ";
+				}
+				result += textcontent;
+			}
+			m = m.getNextSibling();
+		}
+		return result;
+	}
+
+	public String getNumberFormat() {
+		String result = "";
+		NumberNumberElement number = OdfElement.findFirstChildNode(NumberNumberElement.class, this);
+		boolean isGroup = number.getNumberGroupingAttribute();
+		int decimalPos = (number.getNumberDecimalPlacesAttribute() == null) ? 0
+				: number.getNumberDecimalPlacesAttribute().intValue();
+		int minInt = (number.getNumberMinIntegerDigitsAttribute() == null) ? 1
+				: number.getNumberMinIntegerDigitsAttribute().intValue();
+
+		int i;
+		for (i = 0; i < minInt; i++) {
+			if (((i + 1) % 3) == 0 && isGroup) {
+				result = ",0" + result;
+			} else {
+				result = "0" + result;
+			}
+		}
+		while (isGroup && (result.indexOf(',') == -1)) {
+			if (((i + 1) % 3) == 0 && isGroup) {
+				result = ",#" + result;
+			} else {
+				result = "#" + result;
+			}
+			i++;
+		}
+
+		result = "#" + result;
+		if (decimalPos > 0) {
+			result += ".";
+			for (i = 0; i < decimalPos; i++) {
+				result += "0";
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Creates a &lt;number:number-style&gt; element based upon format.
+	 * @param format the number format string
+	 */
+	public void buildFromFormat(String format) {
+		/*
+		 * Setting ownerDoc won't be necessary once this is folded into
+		 * OdfNumberStyle
+		 */
+		String preMatch;
+		String numberSpec;
+		String postMatch;
+		int pos;
+		char ch;
+		int nDigits;
+
+		Pattern p = Pattern.compile("[#0,.]+");
+		Matcher m;
+		NumberNumberElement number;
+
+		/*
+		 * If there is a numeric specifcation, then split the
+		 * string into the part before the specifier, the specifier
+		 * itself, and then part after the specifier. The parts
+		 * before and after are just text (which may contain the
+		 * currency symbol).
+		 */
+		if (format != null && !format.equals("")) {
+			m = p.matcher(format);
+			if (m.find()) {
+				preMatch = format.substring(0, m.start());
+				numberSpec = format.substring(m.start(), m.end());
+				postMatch = format.substring(m.end());
+
+				emitText(preMatch);
+
+				number = new NumberNumberElement((OdfFileDom) this.getOwnerDocument());
+
+				/* Process part before the decimal point (if any) */
+				nDigits = 0;
+				for (pos = 0; pos < numberSpec.length()
+						&& (ch = numberSpec.charAt(pos)) != '.'; pos++) {
+					if (ch == ',') {
+						number.setNumberGroupingAttribute(new Boolean(true));
+					} else if (ch == '0') {
+						nDigits++;
+					}
+				}
+				number.setNumberMinIntegerDigitsAttribute(nDigits);
+
+				/* Number of decimal places is the length after the decimal */
+				if (pos < numberSpec.length()) {
+					number.setNumberDecimalPlacesAttribute(numberSpec.length() - (pos + 1));
+				}
+				this.appendChild(number);
+
+				emitText(postMatch);
+			}
+		}
+	}
+
+	/**
+	 *	Place pending text into a &lt;number:text&gt; element.
+	 * @param textBuffer pending text
+	 */
+	private void emitText(String textBuffer) {
+		NumberTextElement textElement;
+		if (!textBuffer.equals("")) {
+			textElement = new NumberTextElement((OdfFileDom) this.getOwnerDocument());
+			textElement.setTextContent(textBuffer);
+			this.appendChild(textElement);
+		}
+	}
+
+	/**
+	 * Set &lt;style:map&gt; for positive values to the given style name.
+	 * @param mapName the style name to map to
+	 */
+	public void setMapPositive(String mapName) {
+		StyleMapElement map = new StyleMapElement((OdfFileDom) this.getOwnerDocument());
+		map.setStyleApplyStyleNameAttribute(mapName);
+		map.setStyleConditionAttribute("value()>0");
+		this.appendChild(map);
+	}
+
+	/**
+	 * Set &lt;style:map&gt; for negative values to the given style name.
+	 * @param mapName the style name to map to
+	 */
+	public void setMapNegative(String mapName) {
+		StyleMapElement map = new StyleMapElement((OdfFileDom) this.getOwnerDocument());
+		map.setStyleApplyStyleNameAttribute(mapName);
+		map.setStyleConditionAttribute("value()<0");
+		this.appendChild(map);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberStyle.java
new file mode 100644
index 0000000..f84dedc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberStyle.java
@@ -0,0 +1,211 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.number;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfNumberStyle extends NumberNumberStyleElement {
+
+	public OdfNumberStyle(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+	}
+
+	public OdfNumberStyle(OdfFileDom ownerDoc, String format, String styleName) {
+		super(ownerDoc);
+		this.setStyleNameAttribute(styleName);
+		buildFromFormat(format);
+	}
+
+	/**
+	 * Get the format string that represents this style.
+	 * @return the format string
+	 */
+	public String getFormat() {
+		String result = "";
+		Node m = getFirstChild();
+		while (m != null) {
+			if (m instanceof NumberNumberElement) {
+				result += getNumberFormat();
+			} else if (m instanceof NumberTextElement) {
+				String textcontent = m.getTextContent();
+				if (textcontent == null || textcontent.length() == 0) {
+					textcontent = " ";
+				}
+				result += textcontent;
+			}
+			m = m.getNextSibling();
+		}
+		return result;
+	}
+
+	private String getNumberFormat() {
+		String result = "";
+		NumberNumberElement number = OdfElement.findFirstChildNode(NumberNumberElement.class, this);
+		boolean isGroup = number.getNumberGroupingAttribute();
+		int decimalPos = (number.getNumberDecimalPlacesAttribute() == null) ? 0
+				: number.getNumberDecimalPlacesAttribute().intValue();
+		int minInt = (number.getNumberMinIntegerDigitsAttribute() == null) ? 1
+				: number.getNumberMinIntegerDigitsAttribute().intValue();
+
+		int i;
+		for (i = 0; i < minInt; i++) {
+			if (((i + 1) % 3) == 0 && isGroup) {
+				result = ",0" + result;
+			} else {
+				result = "0" + result;
+			}
+		}
+		while (isGroup && (result.indexOf(',') == -1)) {
+			if (((i + 1) % 3) == 0 && isGroup) {
+				result = ",#" + result;
+			} else {
+				result = "#" + result;
+			}
+			i++;
+		}
+
+		result = "#" + result;
+		if (decimalPos > 0) {
+			result += ".";
+			for (i = 0; i < decimalPos; i++) {
+				result += "0";
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Creates a &lt;number:number-style&gt; element based upon format.
+	 * @param format the number format string
+	 */
+	/**
+	 * Creates a &lt;number:number-style&gt; element based upon format.
+	 * @param format the number format string
+	 */
+	public void buildFromFormat(String format) {
+		/*
+		 * Setting ownerDoc won't be necessary once this is folded into
+		 * OdfNumberStyle
+		 */
+		String preMatch;
+		String numberSpec;
+		String postMatch;
+		int pos;
+		char ch;
+		int nDigits;
+
+		Pattern p = Pattern.compile("[#0,.]+");
+		Matcher m;
+		NumberNumberElement number;
+
+		/*
+		 * If there is a numeric specification, then split the
+		 * string into the part before the specifier, the specifier
+		 * itself, and then part after the specifier. The parts
+		 * before and after are just text (which may contain the
+		 * currency symbol).
+		 */
+		if (format != null && !format.equals("")) {
+			m = p.matcher(format);
+			if (m.find()) {
+				preMatch = format.substring(0, m.start());
+				numberSpec = format.substring(m.start(), m.end());
+				postMatch = format.substring(m.end());
+
+				emitText(preMatch);
+
+				number = new NumberNumberElement((OdfFileDom) this.getOwnerDocument());
+
+				/* Process part before the decimal point (if any) */
+				nDigits = 0;
+				for (pos = 0; pos < numberSpec.length()
+						&& (ch = numberSpec.charAt(pos)) != '.'; pos++) {
+					if (ch == ',') {
+						number.setNumberGroupingAttribute(new Boolean(true));
+					} else if (ch == '0') {
+						nDigits++;
+					}
+				}
+				number.setNumberMinIntegerDigitsAttribute(nDigits);
+
+				/* Number of decimal places is the length after the decimal */
+				if (pos < numberSpec.length()) {
+					number.setNumberDecimalPlacesAttribute(numberSpec.length() - (pos + 1));
+				}
+				if (pos == numberSpec.length()) {
+					number.setNumberDecimalPlacesAttribute(0);
+				}
+				this.appendChild(number);
+
+				emitText(postMatch);
+			}
+		}
+	}
+
+	/**
+	 *	Place pending text into a &lt;number:text&gt; element.
+	 * @param textBuffer pending text
+	 */
+	private void emitText(String textBuffer) {
+		NumberTextElement textElement;
+		if (!textBuffer.equals("")) {
+			textElement = new NumberTextElement((OdfFileDom) this.getOwnerDocument());
+			textElement.setTextContent(textBuffer);
+			this.appendChild(textElement);
+		}
+	}
+
+	/**
+	 * Set &lt;style:map&gt; for positive values to the given style name.
+	 * @param mapName the style name to map to
+	 */
+	public void setMapPositive(String mapName) {
+		StyleMapElement map = new StyleMapElement((OdfFileDom) this.getOwnerDocument());
+		map.setStyleApplyStyleNameAttribute(mapName);
+		map.setStyleConditionAttribute("value()>0");
+		this.appendChild(map);
+	}
+
+	/**
+	 * Set &lt;style:map&gt; for negative values to the given style name.
+	 * @param mapName the style name to map to
+	 */
+	public void setMapNegative(String mapName) {
+		StyleMapElement map = new StyleMapElement((OdfFileDom) this.getOwnerDocument());
+		map.setStyleApplyStyleNameAttribute(mapName);
+		map.setStyleConditionAttribute("value()<0");
+		this.appendChild(map);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberTimeStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberTimeStyle.java
new file mode 100644
index 0000000..9281d60
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/number/OdfNumberTimeStyle.java
@@ -0,0 +1,179 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.number;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.attribute.number.NumberFormatSourceAttribute;
+import org.odftoolkit.odfdom.dom.element.number.NumberAmPmElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberHoursElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberMinutesElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberSecondsElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTimeStyleElement;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ * This class lets you create a date style from a format string.
+ * The format string is given in the same form as Java's
+ * SimpleDateFormat class.
+ *
+ * The characters used are:
+ * <pre>
+a 	Am/pm marker         PM
+H 	Hour in day (0-23)   0
+k 	Hour in day (1-24)   -- not in ODF
+K 	Hour in am/pm (0-11) -- not in ODF
+h 	Hour in am/pm (1-12) -- depends on AM/PM marker
+m 	Minute in hour       30
+s 	Second in minute     55
+S 	Millisecond          -- not in ODF
+z 	Time zone            -- not in ODF
+Z 	Time zone RFC822     -- not in ODF
+ * </pre>
+ */
+public class OdfNumberTimeStyle extends NumberTimeStyleElement {
+
+    public OdfNumberTimeStyle(OdfFileDom ownerDoc) {
+        super(ownerDoc);
+    }
+    private String styleName;
+
+
+    /** Creates a new instance of OdfTimeStyle.
+     * @param ownerDoc document that this format belongs to
+     * @param format format string for the date/time
+     * @param styleName name of this style
+     */
+    public OdfNumberTimeStyle(OdfFileDom ownerDoc, String format, String styleName) {
+        super(ownerDoc);
+        this.styleName = styleName;
+        buildFromFormat(format);
+    }
+
+    /**
+     * Creates a <code>&lt;number:time-style&gt;</code> element based upon format.
+     * @param format the format for the time
+     */
+    public void buildFromFormat(String format) {
+        String actionChars = "GyQMwdEaHhms";
+        int actionCount = 0;
+
+        char ch;
+        String textBuffer = "";
+        boolean endQuote = false;
+
+        int i = 0;
+
+        this.setStyleNameAttribute(styleName);
+        this.setNumberFormatSourceAttribute(NumberFormatSourceAttribute.Value.LANGUAGE.toString());
+
+        while (i < format.length()) {
+            ch = format.charAt(i);
+            if (actionChars.indexOf(ch) >= 0) {
+                appendText(textBuffer);
+                textBuffer = "";
+                actionCount = 0;
+                while (i < format.length() && format.charAt(i) == ch) {
+                    actionCount++;
+                    i++;
+                }
+                processChar(ch, actionCount);
+            } else if (ch == '\'') {
+                endQuote = false;
+                i++;
+                while (i < format.length() && (!endQuote)) {
+                    ch = format.charAt(i);
+                    if (ch == '\'') // check to see if this is really the end
+                    {
+                        if (i + 1 < format.length() && format.charAt(i + 1) == '\'') {
+                            i++;
+                            textBuffer += "'";
+                        } else {
+                            endQuote = true;
+                        }
+                    } else {
+                        textBuffer += ch;
+                    }
+                    i++;
+                }
+            } else {
+                textBuffer += ch;
+                i++;
+            }
+        }
+        appendText(textBuffer);
+    }
+
+    /**
+     *	Place pending text into a &lt;number:text&gt; element.
+     * @param textBuffer pending text
+     */
+    private void appendText(String textBuffer) {
+        NumberTextElement textElement = null;
+        if (!textBuffer.equals("")) {
+            textElement = new NumberTextElement((OdfFileDom) this.getOwnerDocument());
+            textElement.setTextContent(textBuffer);
+            this.appendChild(textElement);
+        }
+    }
+
+    /**
+     * Process a formatting character.
+     * @param ch the formatting character to process
+     * @param count the number of occurrences of this character
+     */
+    private void processChar(char ch, int count) {
+        OdfFileDom ownerDoc = (OdfFileDom) this.getOwnerDocument();
+        switch (ch) {
+            case 'a':
+            	NumberAmPmElement ampm = new NumberAmPmElement(ownerDoc);
+                this.appendChild(ampm);
+                break;
+            case 'H':
+            case 'h':
+            	NumberHoursElement hours = new NumberHoursElement(ownerDoc);
+                hours.setNumberStyleAttribute(isLongIf(count > 1));
+                this.appendChild(hours);
+                break;
+            case 'm':
+                NumberMinutesElement minutes = new NumberMinutesElement(ownerDoc);
+                minutes.setNumberStyleAttribute(isLongIf(count > 1));
+                this.appendChild(minutes);
+                break;
+            case 's':
+                NumberSecondsElement seconds = new NumberSecondsElement(ownerDoc);
+                seconds.setNumberStyleAttribute(isLongIf(count > 1));
+                this.appendChild(seconds);
+                break;
+        }
+    }
+
+     /**
+     * Add long or short style to an element.
+     * @param isLong true if this is number:style="long"; false if number:style="short"
+     * @return the string "long" or "short"
+     */
+    private String isLongIf(boolean isLong) {
+        return ((isLong) ? "long" : "short");
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeAutomaticStyles.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeAutomaticStyles.java
new file mode 100644
index 0000000..f74557c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeAutomaticStyles.java
@@ -0,0 +1,405 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.office;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextStyleElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAutomaticStylesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberCurrencyStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfOfficeAutomaticStyles extends OfficeAutomaticStylesElement {
+
+	private static final long serialVersionUID = -2925910664631016175L;
+	// styles that are only in OdfAutomaticStyles
+	private HashMap<String, OdfStylePageLayout> mPageLayouts;
+	// styles that are common for OdfStyles and OdfAutomaticStyles
+	private OdfStylesBase mStylesBaseImpl;
+
+	public OdfOfficeAutomaticStyles(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+		mStylesBaseImpl = new OdfStylesBase();
+	}
+
+	/**
+	 * Create an <code>OdfStyle</code> element with style family
+	 *
+	 * @param styleFamily  The <code>OdfStyleFamily</code> element
+	 * @return an <code>OdfStyle</code> element
+	 */
+	public OdfStyle newStyle(OdfStyleFamily styleFamily) {
+		OdfFileDom dom = (OdfFileDom) this.ownerDocument;
+		OdfStyle newStyle = dom.newOdfElement(OdfStyle.class);
+		newStyle.setStyleFamilyAttribute(styleFamily.getName());
+
+		newStyle.setStyleNameAttribute(newUniqueStyleName(styleFamily));
+
+		this.appendChild(newStyle);
+
+		return newStyle;
+	}
+
+	/**
+	 * Create an <code>OdfTextListStyle</code> element
+	 *
+	 * @return an <code>OdfTextListStyle</code> element
+	 */
+	public OdfTextListStyle newListStyle() {
+		OdfFileDom dom = (OdfFileDom) this.ownerDocument;
+		OdfTextListStyle newStyle = dom.newOdfElement(OdfTextListStyle.class);
+
+		newStyle.setStyleNameAttribute(newUniqueStyleName(OdfStyleFamily.List));
+
+		this.appendChild(newStyle);
+
+		return newStyle;
+	}
+
+	/** Returns the <code>OdfStylePageLayout</code> element with the given name.
+	 *
+	 * @param name is the name of the page layout
+	 * @return the page layout or null if there is no such page layout
+	 */
+	public OdfStylePageLayout getPageLayout(String name) {
+		if (mPageLayouts != null) {
+			return mPageLayouts.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Returns the <code>OdfStyleStyle</code> element with the given name and family.
+	 *
+	 * @param name is the name of the style
+	 * @param familyType is the family of the style
+	 * @return the style or null if there is no such style
+	 */
+	public OdfStyle getStyle(String name, OdfStyleFamily familyType) {
+		return mStylesBaseImpl.getStyle(name, familyType);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfStyleStyle</code> elements for the given family.
+	 *
+	 * @param familyType
+	 * @return an iterator for all <code>OdfStyleStyle</code> elements for the given family
+	 */
+	public Iterable<OdfStyle> getStylesForFamily(OdfStyleFamily familyType) {
+		return mStylesBaseImpl.getStylesForFamily(familyType);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfStyleStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfStyleStyle</code> elements
+	 */
+	public Iterable<OdfStyle> getAllStyles() {
+		return mStylesBaseImpl.getAllOdfStyles();
+	}
+
+	/**
+	 * Returns the <code>OdfTextListStyle</code> element with the given name.
+	 *
+	 * @param name is the name of the list style
+	 * @return the list style or null if there is no such list style
+	 */
+	public OdfTextListStyle getListStyle(String name) {
+		return mStylesBaseImpl.getListStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfTextListStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfTextListStyle</code> elements
+	 */
+	public Iterable<OdfTextListStyle> getListStyles() {
+		return mStylesBaseImpl.getListStyles();
+	}
+
+	/**
+	 * Returns the <code>OdfNumberNumberStyle</code> element with the given name.
+	 *
+	 * @param name is the name of the number style
+	 * @return the number style or null if there is no such number style
+	 */
+	public OdfNumberStyle getNumberStyle(String name) {
+		return mStylesBaseImpl.getNumberStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfNumberNumberStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfNumberNumberStyle</code> elements
+	 */
+	public Iterable<OdfNumberStyle> getNumberStyles() {
+		return mStylesBaseImpl.getNumberStyles();
+	}
+
+	/**
+	 * Returns the <code>OdfNumberDateStyle</code> element with the given name.
+	 *
+	 * @param name is the name of the date style
+	 * @return the date style or null if there is no such date style
+	 */
+	public OdfNumberDateStyle getDateStyle(String name) {
+		return mStylesBaseImpl.getDateStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfNumberDateStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfNumberDateStyle</code> elements
+	 */
+	public Iterable<OdfNumberDateStyle> getDateStyles() {
+		return mStylesBaseImpl.getDateStyles();
+	}
+
+	/**
+	 * Returns the <code>OdfNumberPercentageStyle</code> element with the given name.
+	 *
+	 * @param name is the name of the percentage style
+	 * @return the percentage style null if there is no such percentage style
+	 */
+	public OdfNumberPercentageStyle getPercentageStyle(String name) {
+		return mStylesBaseImpl.getPercentageStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfNumberPercentageStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfNumberPercentageStyle</code> elements
+	 */
+	public Iterable<OdfNumberPercentageStyle> getPercentageStyles() {
+		return mStylesBaseImpl.getPercentageStyles();
+	}
+
+	/**
+	 * Returns the <code>OdfNumberCurrencyStyle</code> element with the given name.
+	 *
+	 * @param name is the name of the currency style
+	 * @return the currency style null if there is no such currency style
+	 */
+	public OdfNumberCurrencyStyle getCurrencyStyle(String name) {
+		return mStylesBaseImpl.getCurrencyStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfNumberCurrencyStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfNumberCurrencyStyle</code> elements
+	 */
+	public Iterable<OdfNumberCurrencyStyle> getCurrencyStyles() {
+		return mStylesBaseImpl.getCurrencyStyles();
+	}
+
+	/**
+	 * Returns the <code>OdfNumberTimeStyle</code> element with the given name.
+	 *
+	 * @param name is the name of the time style
+	 * @return the time style null if there is no such time style
+	 */
+	public OdfNumberTimeStyle getTimeStyle(String name) {
+		return mStylesBaseImpl.getTimeStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfNumberTimeStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfNumberTimeStyle</code> elements
+	 */
+	public Iterable<OdfNumberTimeStyle> getTimeStyles() {
+		return mStylesBaseImpl.getTimeStyles();
+	}
+
+	/**
+	 * Returns the <code>NumberBooleanStyleElement</code> element with the given name.
+	 *
+	 * @param name is the name of the boolean style
+	 * @return the boolean style null if there is no such boolean style
+	 */
+	public NumberBooleanStyleElement getBooleanStyle(String name) {
+		return mStylesBaseImpl.getBooleanStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>OdfNumberBooleanStyle</code> elements.
+	 *
+	 * @return an iterator for all <code>OdfNumberBooleanStyle</code> elements
+	 */
+	public Iterable<NumberBooleanStyleElement> getBooleanStyles() {
+		return mStylesBaseImpl.getBooleanStyles();
+	}
+
+	/**
+	 * Returns the <code>NumberTextStyleElement</code> element with the given name.
+	 *
+	 * @param name is the name of the text style
+	 * @return the text style null if there is no such text style
+	 */
+	public NumberTextStyleElement getTextStyle(String name) {
+		return mStylesBaseImpl.getTextStyle(name);
+	}
+
+	/**
+	 * Returns an iterator for all <code>NumberTextStyleElement</code> elements.
+	 *
+	 * @return an iterator for all <code>NumberTextStyleElement</code> elements
+	 */
+	public Iterable<NumberTextStyleElement> getTextStyles() {
+		return mStylesBaseImpl.getTextStyles();
+	}
+
+	@Override
+	protected void onOdfNodeInserted(OdfElement node, Node refNode) {
+		if (node instanceof OdfStylePageLayout) {
+			OdfStylePageLayout pageLayout = (OdfStylePageLayout) node;
+			if (mPageLayouts == null) {
+				mPageLayouts = new HashMap<String, OdfStylePageLayout>();
+			}
+
+			mPageLayouts.put(pageLayout.getStyleNameAttribute(), pageLayout);
+		} else {
+			mStylesBaseImpl.onOdfNodeInserted(node, refNode);
+		}
+	}
+
+	@Override
+	protected void onOdfNodeRemoved(OdfElement node) {
+		if (node instanceof OdfStylePageLayout) {
+			if (mPageLayouts != null) {
+				OdfStylePageLayout pageLayout = (OdfStylePageLayout) node;
+				mPageLayouts.remove(pageLayout.getStyleNameAttribute());
+			}
+		} else {
+			mStylesBaseImpl.onOdfNodeRemoved(node);
+		}
+	}
+
+	/**
+	 * This methods removes all automatic styles that are currently not used by
+	 * any styleable element. Additionally all duplicate automatic styles will
+	 * be removed.
+	 */
+	public void optimize() {
+		Iterator<OdfStyle> iter = mStylesBaseImpl.getAllOdfStyles().iterator();
+		SortedSet<OdfStyle> stylesSet = new TreeSet<OdfStyle>();
+		while (iter.hasNext()) {
+			OdfStyle cur = iter.next();
+
+			// skip styles which are not in use:
+			if (cur.getStyleUserCount() < 1) {
+				continue;
+			}
+
+			SortedSet<OdfStyle> tail = stylesSet.tailSet(cur);
+			OdfStyle found = tail.size() > 0 ? tail.first() : null;
+			if (found != null && found.equals(cur)) {
+				// cur already in set. Replace all usages of cur by found:
+				Iterator<OdfStylableElement> styleUsersIter = cur.getStyleUsers().iterator();
+				ArrayList<OdfStylableElement> styleUsers = new ArrayList<OdfStylableElement>();
+				while (styleUsersIter.hasNext()) {
+					styleUsers.add(styleUsersIter.next());
+				}
+				styleUsersIter = styleUsers.iterator();
+				while (styleUsersIter.hasNext()) {
+					OdfStylableElement elem = styleUsersIter.next();
+					OdfStyle autoStyle = elem.getAutomaticStyle();
+					if (autoStyle != null) {
+						elem.setStyleName(found.getStyleNameAttribute());
+					}
+				}
+			} else {
+				stylesSet.add(cur);
+			}
+		}
+
+		OdfStyle style = OdfElement.findFirstChildNode(OdfStyle.class, this);
+		while (style != null) {
+			OdfStyle nextStyle = OdfElement.findNextChildNode(OdfStyle.class, style);
+			if (style.getStyleUserCount() < 1) {
+				this.removeChild(style);
+			}
+
+			style = nextStyle;
+		}
+	}
+
+	/**
+	 * This method makes the style unique
+	 *
+	 * @param referenceStyle The reference <code>OdfStyle</code> element
+	 * @return an <code>OdfStyle</code> element
+	 */
+	public OdfStyle makeStyleUnique(OdfStyle referenceStyle) {
+		OdfStyle newStyle = null;
+
+		if (referenceStyle.getOwnerDocument() != this.getOwnerDocument()) {
+			// import style from a different dom
+			newStyle = (OdfStyle) this.getOwnerDocument().importNode(referenceStyle, true);
+		} else {
+			// just clone
+			newStyle = (OdfStyle) referenceStyle.cloneNode(true);
+		}
+
+		newStyle.setStyleNameAttribute(newUniqueStyleName(newStyle.getFamily()));
+		appendChild(newStyle);
+
+		return newStyle;
+	}
+
+	private String newUniqueStyleName(OdfStyleFamily styleFamily) {
+		String unique_name;
+
+		if (styleFamily.equals(OdfStyleFamily.List)) {
+			do {
+				unique_name = String.format("l%06x", (int) (Math.random() * 0xffffff));
+			} while (getListStyle(unique_name) != null);
+		} else {
+			do {
+				unique_name = String.format("a%06x", (int) (Math.random() * 0xffffff));
+			} while (getStyle(unique_name, styleFamily) != null);
+		}
+		return unique_name;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeMasterStyles.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeMasterStyles.java
new file mode 100644
index 0000000..57d0220
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeMasterStyles.java
@@ -0,0 +1,131 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.office;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLayerSetElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMasterStylesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHandoutMasterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfOfficeMasterStyles extends OfficeMasterStylesElement
+{
+    
+	private static final long serialVersionUID = 6598785919980862801L;
+	private DrawLayerSetElement mLayerSet;
+    private StyleHandoutMasterElement mHandoutMaster;
+    private HashMap< String, StyleMasterPageElement > mMasterPages;
+    
+    public OdfOfficeMasterStyles( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    public StyleHandoutMasterElement getHandoutMaster()
+    {
+        return mHandoutMaster;
+    }
+
+    public DrawLayerSetElement getLayerSet()
+    {
+        return mLayerSet;
+    }
+    
+    public StyleMasterPageElement getMasterPage( String name )
+    {
+        if( mMasterPages != null )
+            return mMasterPages.get(name);
+        else
+            return null;
+    }
+
+    public Iterator< StyleMasterPageElement > getMasterPages()
+    {
+        if( mMasterPages != null )
+            return mMasterPages.values().iterator();
+        else
+            return new ArrayList< StyleMasterPageElement >().iterator();
+    }            
+    
+    /** override this method to get notified about element insertion
+     */
+    @Override
+	protected void onOdfNodeInserted( OdfElement node, Node refNode )
+    {
+        if( node instanceof DrawLayerSetElement )
+        {
+            mLayerSet = (DrawLayerSetElement)node;
+        }
+        else if( node instanceof StyleHandoutMasterElement )
+        {
+            mHandoutMaster = (StyleHandoutMasterElement)node;
+        }
+        else if( node instanceof StyleMasterPageElement )
+        {
+            StyleMasterPageElement masterPage = (StyleMasterPageElement)node;
+            
+            if( mMasterPages == null )
+                mMasterPages = new HashMap< String, StyleMasterPageElement >();
+            
+            mMasterPages.put( masterPage.getStyleNameAttribute(), masterPage );
+        }
+    }
+            
+    /** override this method to get notified about element insertion
+     */
+    @Override
+	protected void onOdfNodeRemoved( OdfElement node )
+    {
+        if( node instanceof DrawLayerSetElement )
+        {
+            if( mLayerSet == (DrawLayerSetElement)node )
+                mLayerSet = null;
+        }
+        else if( node instanceof StyleHandoutMasterElement )
+        {
+            if( mHandoutMaster == (StyleHandoutMasterElement)node )
+                mHandoutMaster = null;
+        }
+        else if( node instanceof StyleMasterPageElement )
+        {
+            if( mMasterPages != null )
+            {
+                StyleMasterPageElement masterPage = (StyleMasterPageElement)node;
+                mMasterPages.remove( masterPage.getStyleNameAttribute() );            
+            }
+        }
+    }    
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeStyles.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeStyles.java
new file mode 100644
index 0000000..6b4a12f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfOfficeStyles.java
@@ -0,0 +1,526 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.office;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGradientElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawHatchElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMarkerElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextStyleElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeStylesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberCurrencyStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextOutlineStyle;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfOfficeStyles extends OfficeStylesElement {
+
+
+    private static final long serialVersionUID = 700763983193326060L;
+
+    // styles that are only in OdfOfficeStyles
+    private HashMap<OdfStyleFamily, OdfDefaultStyle> mDefaultStyles;
+    private HashMap<String, DrawMarkerElement> mMarker;
+    private HashMap<String, DrawGradientElement> mGradients;
+    private HashMap<String, DrawHatchElement> mHatches;
+    private HashMap<String, DrawFillImageElement> mFillImages;
+    private OdfTextOutlineStyle mOutlineStyle;
+    // styles that are common for OdfOfficeStyles and OdfOfficeAutomaticStyles
+    private OdfStylesBase mStylesBaseImpl;
+
+    public OdfOfficeStyles(OdfFileDom ownerDoc) {
+        super(ownerDoc);
+        mStylesBaseImpl = new OdfStylesBase();
+    }
+    
+    /**
+     * Create an ODF style with style name and family
+     * 
+     * @param name  The style name
+     * @param family The style family
+     * @return  The <code>OdfStyle</code> element
+     */
+    public OdfStyle newStyle(String name, OdfStyleFamily family) {
+        OdfStyle newStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(OdfStyle.class);
+        newStyle.setStyleNameAttribute(name);
+        newStyle.setStyleFamilyAttribute(family.getName());
+        this.appendChild(newStyle);
+        return newStyle;
+    }
+
+    /**
+     * Retrieve or create ODF default style
+     * 
+     * @param family The style family
+     * @return The code>OdfDefaultStyle</code> element
+     */
+    public OdfDefaultStyle getOrCreateDefaultStyle(OdfStyleFamily family) {
+        OdfDefaultStyle style = getDefaultStyle(family);
+        if (style == null) {
+            style = ((OdfFileDom) this.ownerDocument).newOdfElement(OdfDefaultStyle.class);
+            style.setStyleFamilyAttribute(family.getName());
+            this.appendChild(style);
+        }
+        return style;
+    }
+    
+    /**
+     * Create ODF TextListStyle 
+     * 
+     * @param name  The style name
+     * @return The code>OdfTextListStyle</code> element
+     */
+    public OdfTextListStyle newListStyle(String name) {
+        OdfTextListStyle newStyle = ((OdfFileDom) this.ownerDocument).newOdfElement(OdfTextListStyle.class);
+        newStyle.setStyleNameAttribute(name);
+        this.appendChild(newStyle);
+        return newStyle;
+    }
+
+    /**
+     * Retrieve or create ODF OutlineStyle
+     * 
+     * @return The code>OdfTextOutlineStyle</code> element
+     */
+    public OdfTextOutlineStyle getOrCreateOutlineStyle() {
+        if (mOutlineStyle == null) {
+            this.appendChild(((OdfFileDom) this.ownerDocument).newOdfElement(OdfTextOutlineStyle.class));
+        }
+
+        return mOutlineStyle;
+    }
+
+    /** 
+     * Returns the <code>OdfTextOutlineStyle</code> element.
+     *
+     * @return a pointer to the outline stye or null if there is no such element
+     */
+    public OdfTextOutlineStyle getOutlineStyle() {
+        return mOutlineStyle;
+    }
+
+    /** 
+     * Returns the <code>OdfStyleDefaultStyle</code>  element.
+     *
+     * @param familyType is the family for the default style
+     * @return the default style with the given family or null if there is no such default style
+     */
+    public OdfDefaultStyle getDefaultStyle(OdfStyleFamily familyType) {
+        if (mDefaultStyles != null) {
+            return mDefaultStyles.get(familyType);
+        } else {
+            return null;
+        }
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfStyleDefaultStyle</code> elements.
+     *
+     * @return iterator for all <code>OdfStyleDefaultStyle</code> elements
+     */
+    public Iterable<OdfDefaultStyle> getDefaultStyles() {
+        if (mDefaultStyles != null) {
+            return mDefaultStyles.values();
+        } else {
+            return new ArrayList<OdfDefaultStyle>();
+        }
+    }
+
+    /** 
+     * Returns the <code>DrawMarkerElement</code> element with the given name.
+     *
+     * @param name is the name of the marker
+     * @return the marker or null if there is no such marker
+     */
+    public DrawMarkerElement getMarker(String name) {
+        if (mMarker != null) {
+            return mMarker.get(name);
+        } else {
+            return null;
+        }
+    }
+
+    /** 
+     * Returns an iterator for all <code>DrawMarkerElement</code> elements.
+     *
+     * @return an iterator for all <code>DrawMarkerElement</code> elements
+     */
+    public Iterable<DrawMarkerElement> getMarker() {
+        if (mMarker != null) {
+            return mMarker.values();
+        } else {
+            return new ArrayList<DrawMarkerElement>();
+        }
+    }
+
+    /** 
+     * Returns the <code>DrawGradientElement</code> element with the given name.
+     *
+     * @param name is the name of the gradient
+     * @return the gradient or null if there is no such gradient
+     */
+    public DrawGradientElement getGradient(String name) {
+        if (mGradients != null) {
+            return mGradients.get(name);
+        } else {
+            return null;
+        }
+    }
+
+    /** 
+     * Returns an iterator for all <code>DrawGradientElement</code> elements.
+     *
+     * @return an iterator for all <code>DrawGradientElement</code> elements
+     */
+    public Iterable<DrawGradientElement> getGradients() {
+        if (mGradients != null) {
+            return mGradients.values();
+        } else {
+            return new ArrayList<DrawGradientElement>();
+        }
+    }
+
+    /** 
+     * Returns the <code>DrawHatchElement</code> element with the given name.
+     *
+     * @param name is the name of the hatch
+     * @return the hatch or null if there is no such hatch
+     */
+    public DrawHatchElement getHatch(String name) {
+        if (mHatches != null) {
+            return mHatches.get(name);
+        } else {
+            return null;
+        }
+    }
+
+    /** 
+     * Returns an iterator for all <code>DrawHatchElement</code> elements.
+     *
+     * @return an iterator for all <code>DrawHatchElement</code> elements
+     */
+    public Iterable<DrawHatchElement> getHatches() {
+        if (mHatches != null) {
+            return mHatches.values();
+        } else {
+            return new ArrayList<DrawHatchElement>();
+        }
+    }
+
+    /** 
+     * Returns the <code>DrawFillImageElement</code> element with the given name.
+     *
+     * @param name is the name of the fill image
+     * @return the fill image or null if there is no such fill image
+     */
+    public DrawFillImageElement getFillImage(String name) {
+        if (mFillImages != null) {
+            return mFillImages.get(name);
+        } else {
+            return null;
+        }
+    }
+
+    /** 
+     * Returns an iterator for all <code>DrawFillImageElement</code> elements.
+     *
+     * @return an iterator for all <code>DrawFillImageElement</code> elements
+     */
+    public Iterable<DrawFillImageElement> getFillImages() {
+        if (mFillImages != null) {
+            return mFillImages.values();
+        } else {
+            return new ArrayList<DrawFillImageElement>();
+        }
+    }
+
+    /** 
+     * Returns the <code>OdfStyle</code> element with the given name and family.
+     *
+     * @param name is the name of the style
+     * @param familyType is the family of the style
+     * @return the style or null if there is no such style
+     */
+    public OdfStyle getStyle(String name, OdfStyleFamily familyType) {
+        return mStylesBaseImpl.getStyle(name, familyType);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfStyle</code> elements for the given family.
+     *
+     * @param familyType
+     * @return an iterator for all <code>OdfStyle</code> elements for the given family
+     */
+    public Iterable<OdfStyle> getStylesForFamily(OdfStyleFamily familyType) {
+        return mStylesBaseImpl.getStylesForFamily(familyType);
+    }
+
+    /** 
+     * Returns the <code>OdfTextListStyle</code> element with the given name.
+     *
+     * @param name is the name of the list style
+     * @return the list style or null if there is no such list style
+     */
+    public OdfTextListStyle getListStyle(String name) {
+        return mStylesBaseImpl.getListStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfTextListStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfTextListStyle</code> elements
+     */
+    public Iterable<OdfTextListStyle> getListStyles() {
+        return mStylesBaseImpl.getListStyles();
+    }
+
+    /** 
+     * Returns the <code>OdfNumberNumberStyle</code> element with the given name.
+     *
+     * @param name is the name of the number style
+     * @return the number style or null if there is no such number style
+     */
+    public OdfNumberStyle getNumberStyle(String name) {
+        return mStylesBaseImpl.getNumberStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfNumberNumberStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfNumberNumberStyle</code> elements
+     */
+    public Iterable<OdfNumberStyle> getNumberStyles() {
+        return mStylesBaseImpl.getNumberStyles();
+    }
+
+    /** 
+     * Returns the <code>OdfNumberDateStyle</code> element with the given name.
+     *
+     * @param name is the name of the date style
+     * @return the date style or null if there is no such date style
+     */
+    public OdfNumberDateStyle getDateStyle(String name) {
+        return mStylesBaseImpl.getDateStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfNumberDateStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfNumberDateStyle</code> elements
+     */
+    public Iterable<OdfNumberDateStyle> getDateStyles() {
+        return mStylesBaseImpl.getDateStyles();
+    }
+
+    /** 
+     * Returns the <code>OdfNumberPercentageStyle</code> element with the given name.
+     *
+     * @param name is the name of the percentage style
+     * @return the percentage style null if there is no such percentage style
+     */
+    public OdfNumberPercentageStyle getPercentageStyle(String name) {
+        return mStylesBaseImpl.getPercentageStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfNumberPercentageStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfNumberPercentageStyle</code> elements
+     */
+    public Iterable<OdfNumberPercentageStyle> getPercentageStyles() {
+        return mStylesBaseImpl.getPercentageStyles();
+    }
+
+    /** 
+     * Returns the <code>OdfNumberCurrencyStyle</code> element with the given name.
+     *
+     * @param name is the name of the currency style
+     * @return the currency style null if there is no such currency style
+     */
+    public OdfNumberCurrencyStyle getCurrencyStyle(String name) {
+        return mStylesBaseImpl.getCurrencyStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfNumberCurrencyStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfNumberCurrencyStyle</code> elements
+     */
+    public Iterable<OdfNumberCurrencyStyle> getCurrencyStyles() {
+        return mStylesBaseImpl.getCurrencyStyles();
+    }
+
+    /** 
+     * Returns the <code>OdfNumberTimeStyle</code> element with the given name.
+     *
+     * @param name is the name of the time style
+     * @return the time style null if there is no such time style
+     */
+    public OdfNumberTimeStyle getTimeStyle(String name) {
+        return mStylesBaseImpl.getTimeStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfNumberTimeStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfNumberTimeStyle</code> elements
+     */
+    public Iterable<OdfNumberTimeStyle> getTimeStyles() {
+        return mStylesBaseImpl.getTimeStyles();
+    }
+
+    /** 
+     * Returns the <code>NumberBooleanStyleElement</code> element with the given name.
+     *
+     * @param name is the name of the boolean style
+     * @return the boolean style null if there is no such boolean style
+     */
+    public NumberBooleanStyleElement getBooleanStyle(String name) {
+        return mStylesBaseImpl.getBooleanStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>NumberBooleanStyleElement</code> elements.
+     *
+     * @return an iterator for all <code>NumberBooleanStyleElement</code> elements
+     */
+    public Iterable<NumberBooleanStyleElement> getBooleanStyles() {
+        return mStylesBaseImpl.getBooleanStyles();
+    }
+
+    /** 
+     * Returns the <code>OdfNumberTextStyle</code> element with the given name.
+     *
+     * @param name is the name of the text style
+     * @return the text style null if there is no such text style
+     */
+    public NumberTextStyleElement getTextStyle(String name) {
+        return mStylesBaseImpl.getTextStyle(name);
+    }
+
+    /** 
+     * Returns an iterator for all <code>OdfNumberTextStyle</code> elements.
+     *
+     * @return an iterator for all <code>OdfNumberTextStyle</code> elements
+     */
+    public Iterable<NumberTextStyleElement> getTextStyles() {
+        return mStylesBaseImpl.getTextStyles();
+    }
+
+    @Override
+    protected void onOdfNodeInserted(OdfElement node, Node refNode) {
+        if (node instanceof OdfDefaultStyle) {
+            OdfDefaultStyle defaultStyle = (OdfDefaultStyle) node;
+            if (mDefaultStyles == null) {
+                mDefaultStyles = new HashMap<OdfStyleFamily, OdfDefaultStyle>();
+            }
+
+            mDefaultStyles.put(defaultStyle.getFamily(), defaultStyle);
+        } else if (node instanceof DrawMarkerElement) {
+            DrawMarkerElement marker = (DrawMarkerElement) node;
+            if (mMarker == null) {
+                mMarker = new HashMap<String, DrawMarkerElement>();
+            }
+
+            mMarker.put(marker.getDrawNameAttribute(), marker);
+        } else if (node instanceof DrawGradientElement) {
+            DrawGradientElement gradient = (DrawGradientElement) node;
+            if (mGradients == null) {
+                mGradients = new HashMap<String, DrawGradientElement>();
+            }
+
+            mGradients.put(gradient.getDrawNameAttribute(), gradient);
+        } else if (node instanceof DrawHatchElement) {
+            DrawHatchElement hatch = (DrawHatchElement) node;
+            if (mHatches == null) {
+                mHatches = new HashMap<String, DrawHatchElement>();
+            }
+
+            mHatches.put(hatch.getDrawNameAttribute(), hatch);
+        } else if (node instanceof DrawFillImageElement) {
+            DrawFillImageElement fillImage = (DrawFillImageElement) node;
+
+            if (mFillImages == null) {
+                mFillImages = new HashMap<String, DrawFillImageElement>();
+            }
+
+            mFillImages.put(fillImage.getDrawNameAttribute(), fillImage);
+        } else if (node instanceof OdfTextOutlineStyle) {
+            mOutlineStyle = (OdfTextOutlineStyle) node;
+        } else {
+            mStylesBaseImpl.onOdfNodeInserted(node, refNode);
+        }
+    }
+
+    @Override
+    protected void onOdfNodeRemoved(OdfElement node) {
+        if (node instanceof OdfDefaultStyle) {
+            if (mDefaultStyles != null) {
+                OdfDefaultStyle defaultStyle = (OdfDefaultStyle) node;
+                mDefaultStyles.remove(defaultStyle.getFamily());
+            }
+        } else if (node instanceof DrawMarkerElement) {
+            if (mMarker != null) {
+                DrawMarkerElement marker = (DrawMarkerElement) node;
+                mMarker.remove(marker.getDrawNameAttribute());
+            }
+        } else if (node instanceof DrawGradientElement) {
+            if (mGradients != null) {
+                DrawGradientElement gradient = (DrawGradientElement) node;
+                mGradients.remove(gradient.getDrawNameAttribute());
+            }
+        } else if (node instanceof DrawHatchElement) {
+            if (mHatches != null) {
+                DrawHatchElement hatch = (DrawHatchElement) node;
+                mHatches.remove(hatch.getDrawNameAttribute());
+            }
+        } else if (node instanceof DrawFillImageElement) {
+            if (mFillImages != null) {
+                DrawFillImageElement fillImage = (DrawFillImageElement) node;
+                mFillImages.remove(fillImage.getDrawNameAttribute());
+            }
+        } else if (node instanceof OdfTextOutlineStyle) {
+            if (mOutlineStyle == (OdfTextOutlineStyle) node) {
+                mOutlineStyle = null;
+            }
+        } else {
+            mStylesBaseImpl.onOdfNodeRemoved(node);
+        }
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfStylesBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfStylesBase.java
new file mode 100644
index 0000000..dfd9cf0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/office/OdfStylesBase.java
@@ -0,0 +1,374 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.office;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberBooleanStyleElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextStyleElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberCurrencyStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.w3c.dom.Node;
+
+/**
+ * Implements shared functions for OdfAutomaticStyles and OdfStyles.
+ */
+class OdfStylesBase {
+
+	private HashMap<OdfStyleFamily, HashMap<String, OdfStyle>> mStyles;
+	private HashMap<String, OdfTextListStyle> mListStyles;
+	private HashMap<String, OdfNumberStyle> mNumberStyles;
+	private HashMap<String, OdfNumberDateStyle> mDateStyles;
+	private HashMap<String, OdfNumberPercentageStyle> mPercentageStyles;
+	private HashMap<String, OdfNumberCurrencyStyle> mCurrencyStyles;
+	private HashMap<String, OdfNumberTimeStyle> mTimeStyles;
+	private HashMap<String, NumberBooleanStyleElement> mBooleanStyles;
+	private HashMap<String, NumberTextStyleElement> mTextStyles;
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfStyle getStyle(String name, OdfStyleFamily familyType) {
+		if (mStyles != null) {
+			HashMap<String, OdfStyle> familyMap = mStyles.get(familyType);
+			if (familyMap != null) {
+				return familyMap.get(name);
+			}
+		}
+		return null;
+	}
+
+	/** Returns an iterator for all <code>OdfStyle</code> elements.
+	 *
+	 * @return iterator for all <code>OdfStyle</code> elements
+	 */
+	Iterable<OdfStyle> getAllOdfStyles() {
+		ArrayList<OdfStyle> allStyles = new ArrayList<OdfStyle>();
+		if (mStyles != null) {
+			for (OdfStyleFamily family : mStyles.keySet()) {
+				HashMap<String, OdfStyle> familySet = mStyles.get(family);
+				Collection<OdfStyle> familyStyles = familySet.values();
+				allStyles.addAll(familyStyles);
+			}
+		}
+		return allStyles;
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfStyle> getStylesForFamily(OdfStyleFamily familyType) {
+		if (mStyles != null) {
+			HashMap<String, OdfStyle> familyMap = mStyles.get(familyType);
+			if (familyMap != null) {
+				return familyMap.values();
+			}
+		}
+		return new ArrayList<OdfStyle>();
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfTextListStyle getListStyle(String name) {
+		if (mListStyles != null) {
+			return mListStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfTextListStyle> getListStyles() {
+		if (mListStyles != null) {
+			return mListStyles.values();
+		} else {
+			return new ArrayList<OdfTextListStyle>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfNumberStyle getNumberStyle(String name) {
+		if (mNumberStyles != null) {
+			return mNumberStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfNumberStyle> getNumberStyles() {
+		if (mNumberStyles != null) {
+			return mNumberStyles.values();
+		} else {
+			return new ArrayList<OdfNumberStyle>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfNumberDateStyle getDateStyle(String name) {
+		if (mDateStyles != null) {
+			return mDateStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfNumberDateStyle> getDateStyles() {
+		if (mDateStyles != null) {
+			return mDateStyles.values();
+		} else {
+			return new ArrayList<OdfNumberDateStyle>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfNumberPercentageStyle getPercentageStyle(String name) {
+		if (mPercentageStyles != null) {
+			return mPercentageStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfNumberPercentageStyle> getPercentageStyles() {
+		if (mPercentageStyles != null) {
+			return mPercentageStyles.values();
+		} else {
+			return new ArrayList<OdfNumberPercentageStyle>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfNumberCurrencyStyle getCurrencyStyle(String name) {
+		if (mCurrencyStyles != null) {
+			return mCurrencyStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfNumberCurrencyStyle> getCurrencyStyles() {
+		if (mCurrencyStyles != null) {
+			return mCurrencyStyles.values();
+		} else {
+			return new ArrayList<OdfNumberCurrencyStyle>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	OdfNumberTimeStyle getTimeStyle(String name) {
+		if (mTimeStyles != null) {
+			return mTimeStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<OdfNumberTimeStyle> getTimeStyles() {
+		if (mTimeStyles != null) {
+			return mTimeStyles.values();
+		} else {
+			return new ArrayList<OdfNumberTimeStyle>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	NumberBooleanStyleElement getBooleanStyle(String name) {
+		if (mBooleanStyles != null) {
+			return mBooleanStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<NumberBooleanStyleElement> getBooleanStyles() {
+		if (mBooleanStyles != null) {
+			return mBooleanStyles.values();
+		} else {
+			return new ArrayList<NumberBooleanStyleElement>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	NumberTextStyleElement getTextStyle(String name) {
+		if (mTextStyles != null) {
+			return mTextStyles.get(name);
+		} else {
+			return null;
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	Iterable<NumberTextStyleElement> getTextStyles() {
+		if (mTextStyles != null) {
+			return mTextStyles.values();
+		} else {
+			return new ArrayList<NumberTextStyleElement>();
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	void onOdfNodeInserted(OdfElement node, Node refNode) {
+		if (node instanceof OdfStyle) {
+			OdfStyle style = (OdfStyle) node;
+			if (mStyles == null) {
+				mStyles = new HashMap<OdfStyleFamily, HashMap<String, OdfStyle>>();
+			}
+
+			HashMap<String, OdfStyle> familyMap = mStyles.get(style.getFamily());
+			if (familyMap == null) {
+				familyMap = new HashMap<String, OdfStyle>();
+				mStyles.put(style.getFamily(), familyMap);
+			}
+
+			familyMap.put(style.getStyleNameAttribute(), style);
+		} else if (node instanceof OdfTextListStyle) {
+			OdfTextListStyle listStyle = (OdfTextListStyle) node;
+			if (mListStyles == null) {
+				mListStyles = new HashMap<String, OdfTextListStyle>();
+			}
+
+			mListStyles.put(listStyle.getStyleNameAttribute(), listStyle);
+		} else if (node instanceof OdfNumberStyle) {
+			OdfNumberStyle numberStyle = (OdfNumberStyle) node;
+
+			if (mNumberStyles == null) {
+				mNumberStyles = new HashMap<String, OdfNumberStyle>();
+			}
+
+			mNumberStyles.put(numberStyle.getStyleNameAttribute(), numberStyle);
+		} else if (node instanceof OdfNumberDateStyle) {
+			OdfNumberDateStyle dateStyle = (OdfNumberDateStyle) node;
+
+			if (mDateStyles == null) {
+				mDateStyles = new HashMap<String, OdfNumberDateStyle>();
+			}
+
+			mDateStyles.put(dateStyle.getStyleNameAttribute(), dateStyle);
+		} else if (node instanceof OdfNumberPercentageStyle) {
+			OdfNumberPercentageStyle percentageStyle = (OdfNumberPercentageStyle) node;
+
+			if (mPercentageStyles == null) {
+				mPercentageStyles = new HashMap<String, OdfNumberPercentageStyle>();
+			}
+
+			mPercentageStyles.put(percentageStyle.getStyleNameAttribute(), percentageStyle);
+		} else if (node instanceof OdfNumberCurrencyStyle) {
+			OdfNumberCurrencyStyle currencyStyle = (OdfNumberCurrencyStyle) node;
+
+			if (mCurrencyStyles == null) {
+				mCurrencyStyles = new HashMap<String, OdfNumberCurrencyStyle>();
+			}
+
+			mCurrencyStyles.put(currencyStyle.getStyleNameAttribute(), currencyStyle);
+		} else if (node instanceof OdfNumberTimeStyle) {
+			OdfNumberTimeStyle timeStyle = (OdfNumberTimeStyle) node;
+
+			if (mTimeStyles == null) {
+				mTimeStyles = new HashMap<String, OdfNumberTimeStyle>();
+			}
+
+			mTimeStyles.put(timeStyle.getStyleNameAttribute(), timeStyle);
+		} else if (node instanceof NumberBooleanStyleElement) {
+			NumberBooleanStyleElement booleanStyle = (NumberBooleanStyleElement) node;
+
+			if (mBooleanStyles == null) {
+				mBooleanStyles = new HashMap<String, NumberBooleanStyleElement>();
+			}
+
+			mBooleanStyles.put(booleanStyle.getStyleNameAttribute(), booleanStyle);
+		} else if (node instanceof NumberTextStyleElement) {
+			NumberTextStyleElement textStyle = (NumberTextStyleElement) node;
+
+			if (mTextStyles == null) {
+				mTextStyles = new HashMap<String, NumberTextStyleElement>();
+			}
+
+			mTextStyles.put(textStyle.getStyleNameAttribute(), textStyle);
+		}
+	}
+
+	// For documentation see OdfAutomaticStyles or OdfStyles.
+	void onOdfNodeRemoved(OdfElement node) {
+		if (node instanceof OdfStyle) {
+			if (mStyles != null) {
+				OdfStyle style = (OdfStyle) node;
+				HashMap<String, OdfStyle> familyMap = mStyles.get(style.getFamily());
+				if (familyMap != null) {
+					familyMap.remove(style.getStyleNameAttribute());
+					if (familyMap.isEmpty()) {
+						mStyles.remove(style.getFamily());
+					}
+				}
+			}
+		} else if (node instanceof OdfTextListStyle) {
+			if (mListStyles != null) {
+				OdfTextListStyle listStyle = (OdfTextListStyle) node;
+				mListStyles.remove(listStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof OdfNumberStyle) {
+			if (mNumberStyles != null) {
+				OdfNumberStyle numberStyle = (OdfNumberStyle) node;
+				mNumberStyles.remove(numberStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof OdfNumberDateStyle) {
+			if (mDateStyles != null) {
+				OdfNumberDateStyle dateStyle = (OdfNumberDateStyle) node;
+				mDateStyles.remove(dateStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof OdfNumberPercentageStyle) {
+			if (mPercentageStyles != null) {
+				OdfNumberPercentageStyle percentageStyle = (OdfNumberPercentageStyle) node;
+				mPercentageStyles.remove(percentageStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof OdfNumberCurrencyStyle) {
+			if (mCurrencyStyles != null) {
+				OdfNumberCurrencyStyle currencyStyle = (OdfNumberCurrencyStyle) node;
+				mCurrencyStyles.remove(currencyStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof OdfNumberTimeStyle) {
+			if (mTimeStyles != null) {
+				OdfNumberTimeStyle timeStyle = (OdfNumberTimeStyle) node;
+				mTimeStyles.remove(timeStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof NumberBooleanStyleElement) {
+			if (mBooleanStyles != null) {
+				NumberBooleanStyleElement booleanStyle = (NumberBooleanStyleElement) node;
+				mBooleanStyles.remove(booleanStyle.getStyleNameAttribute());
+			}
+		} else if (node instanceof NumberTextStyleElement) {
+			if (mTextStyles != null) {
+				NumberTextStyleElement textStyle = (NumberTextStyleElement) node;
+				mTextStyles.remove(textStyle.getStyleNameAttribute());
+			}
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfDefaultStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfDefaultStyle.java
new file mode 100644
index 0000000..5f567eb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfDefaultStyle.java
@@ -0,0 +1,60 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.style;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleDefaultStyleElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfDefaultStyle extends StyleDefaultStyleElement
+{
+
+	private static final long serialVersionUID = -8824457719103504447L;
+
+	public OdfDefaultStyle( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }
+
+	@Override
+	public OdfStyleFamily getFamily() {
+		String family = getStyleFamilyAttribute();
+		if(family!=null)
+		 return OdfStyleFamily.valueOf( family);
+		else 
+			return null;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfStyle.java
new file mode 100644
index 0000000..8a40069
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfStyle.java
@@ -0,0 +1,64 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.style;
+
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ * 
+ */
+public class OdfStyle extends StyleStyleElement {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1114614579014922410L;
+
+	public OdfStyle(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+	}
+
+	@Override
+	public OdfStyleBase getParentStyle() {
+		String parent = this.getStyleParentStyleNameAttribute();
+		if ((parent != null) && (parent.length() != 0)) {
+			return ((OdfSchemaDocument) mPackageDocument).getDocumentStyles().getStyle(parent, getFamily());
+		} else {
+			return ((OdfSchemaDocument) mPackageDocument).getDocumentStyles().getDefaultStyle(getFamily());
+		}
+	}
+
+	@Override
+	public OdfStyleFamily getFamily() {
+		String family = getStyleFamilyAttribute();
+		if (family != null) {
+			return OdfStyleFamily.valueOf(family);
+		} else {
+			return null;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfStylePageLayout.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfStylePageLayout.java
new file mode 100644
index 0000000..4de2a17
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/style/OdfStylePageLayout.java
@@ -0,0 +1,58 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.style;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfStylePageLayout extends StylePageLayoutElement
+{
+
+	private static final long serialVersionUID = 4753586841264363188L;
+
+	public OdfStylePageLayout( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }
+
+    @Override
+    public OdfStyleFamily getFamily()
+    {
+        return OdfStyleFamily.List;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfEditableTextExtractor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfEditableTextExtractor.java
new file mode 100644
index 0000000..43800d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfEditableTextExtractor.java
@@ -0,0 +1,197 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.doc.text;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+
+import org.odftoolkit.odfdom.doc.table.OdfTable;
+import org.odftoolkit.odfdom.doc.table.OdfTableRow;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfMetaDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.w3c.dom.NodeList;
+
+/**
+ * It's a sub class of OdfTextExtractor. It provides a method to return all the text 
+ * that the user can typically edit in a document, including text in cotent.xml, 
+ * header and footer in styles.xml, meta data in meta.xml. 
+ * 
+ * <p>This function can be used by search engine, and text analytic operations. </p> 
+ *
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.EditableTextExtractor} in Simple API.
+ */
+public class OdfEditableTextExtractor extends OdfTextExtractor {
+
+	OdfDocument mDocument = null;
+	OdfElement mElement = null;
+	boolean mIsDocumentExtractor = false;
+
+	/**
+	 * Constructor with an ODF document as a parameter
+	 * @param doc the ODF document whose editable text would be extracted. 
+	 */
+	private OdfEditableTextExtractor(OdfDocument doc) {
+		mTextBuilder = new StringBuilder();
+		mDocument = doc;
+		mIsDocumentExtractor = true;
+	}
+
+	/**
+	 * Constructor with an ODF element as parameter
+	 * @param element the ODF element whose editable text would be extracted. 
+	 */
+	private OdfEditableTextExtractor(OdfElement element) {
+		mTextBuilder = new StringBuilder();
+		mElement = element;
+		mIsDocumentExtractor = false;
+	}
+
+	/**
+	 * An instance of OdfEditableTextExtractor will be created to 
+	 * extract the editable text content of an ODF element.
+	 * @param doc the ODF document whose text will be extracted.
+	 * @return An instance of OdfEditableTextExtractor
+	 */
+	public static OdfEditableTextExtractor newOdfEditableTextExtractor(OdfDocument doc) {
+		return new OdfEditableTextExtractor(doc);
+	}
+
+	/**
+	 * An instance of OdfEditableTextExtractor will be created to 
+	 * extract the editable text content of an ODF element.
+	 * @param element the ODF element whose text will be extracted.
+	 * @return An instance of OdfEditableTextExtractor
+	 */
+	public static OdfEditableTextExtractor newOdfEditableTextExtractor(OdfElement element) {
+		return new OdfEditableTextExtractor(element);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement)
+	 */
+	@Override
+	public void visit(DrawObjectElement element) {
+		String embedDocPath = element.getXlinkHrefAttribute();
+		OdfDocument embedDoc = ((OdfDocument) (((OdfContentDom) element.getOwnerDocument()).getDocument())).loadSubDocument(embedDocPath);
+		if (embedDoc != null) {
+			try {
+				mTextBuilder.append(OdfEditableTextExtractor.newOdfEditableTextExtractor(embedDoc).getText());
+			} catch (Exception e) {
+				Logger.getLogger(OdfEditableTextExtractor.class.getName()).log(Level.SEVERE, null, e);
+			}
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement)
+	 */
+	@Override
+	public void visit(TextTrackedChangesElement ele) {
+		return;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextAElement)
+	 */
+	@Override
+	public void visit(TextAElement ele) {
+		String link = ele.getXlinkHrefAttribute();
+		mTextBuilder.append(link);
+		appendElementText(ele);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextTabElement)
+	 */
+	@Override
+	public void visit(TableTableElement ele) {
+		OdfTable table = OdfTable.getInstance(ele);
+		List<OdfTableRow> rowlist = table.getRowList();
+		for (int i = 0; i < rowlist.size(); i++) {
+			OdfTableRow row = rowlist.get(i);
+			for (int j = 0; j < row.getCellCount(); j++) {
+				mTextBuilder.append(row.getCellByIndex(j).getDisplayText()).append(TabChar);
+			}
+			mTextBuilder.append(NewLineChar);
+		}
+	}
+
+	/**
+	 * Return the editable text content as a string
+	 * @return the editable text content as a string
+	 */
+	@Override
+	public String getText() {
+		if (mIsDocumentExtractor) {
+			return getDocumentText();
+		} else {
+			visit(mElement);
+			return mTextBuilder.toString();
+		}
+	}
+
+	private String getDocumentText() {
+		StringBuilder builder = new StringBuilder();
+		try {
+			//Extract text from content.xml
+			OdfEditableTextExtractor contentDomExtractor = newOdfEditableTextExtractor(mDocument.getContentRoot());
+			builder.append(contentDomExtractor.getText());
+
+			//Extract text from style.xml
+			OdfStylesDom styleDom = mDocument.getStylesDom();
+			if (styleDom != null) {
+				StyleMasterPageElement masterpage = null;
+				NodeList list = styleDom.getElementsByTagName("style:master-page");
+				if (list.getLength() > 0) {
+					masterpage = (StyleMasterPageElement) list.item(0);
+				}
+				if (masterpage != null) {
+					builder.append(newOdfEditableTextExtractor(masterpage).getText());
+				}
+			}
+
+			//Extract text from meta.xml
+			OdfMetaDom metaDom = mDocument.getMetaDom();
+			if (metaDom != null) {
+				OdfElement root = metaDom.getRootElement();
+				OfficeMetaElement officemeta = OdfElement.findFirstChildNode(OfficeMetaElement.class, root);
+				if (officemeta != null) {
+					builder.append(newOdfEditableTextExtractor(officemeta).getText());
+				}
+			}
+
+			return builder.toString();
+		} catch (Exception e) {
+			Logger.getLogger(OdfEditableTextExtractor.class.getName()).severe(e.getMessage());
+			return builder.toString();
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextExtractor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextExtractor.java
new file mode 100644
index 0000000..7324e0c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextExtractor.java
@@ -0,0 +1,162 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.doc.text;
+
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.w3c.dom.Node;
+
+/**
+ * It's a sub class of DefaultElementVisitor. It provides a method to get the display text
+ * of a single element.
+ * <p> If you pass the content root as the parameter, the whole document content will be 
+ * returned, without any tag information.</p>
+ * <p> It implements part of white space handling fuctions: text:p, text:h, text:s, text:tab, text:linebreak are processed
+ * according to ODF specification.</p>
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.TextExtractor} in Simple API.
+ */
+public class OdfTextExtractor extends DefaultElementVisitor {
+
+	protected StringBuilder mTextBuilder;
+	OdfElement mElement;
+	protected static final char NewLineChar = '\r';
+	protected static final char TabChar = '\t';
+
+	/**
+	 * Default constructor
+	 */
+	protected OdfTextExtractor() {
+	}
+
+	/**
+	 * Constructor with an ODF element as paramter
+	 * @param element the ODF element whose text would be extracted. 
+	 */
+	protected OdfTextExtractor(OdfElement element) {
+		mTextBuilder = new StringBuilder();
+		mElement = element;
+	}
+
+	/**
+	 * Append the text content of this element to string buffer.
+	 * @param ele the ODF element whose text will be appended.
+	 */
+	protected void appendElementText(OdfElement ele) {
+		Node node = ele.getFirstChild();
+
+		while (node != null) {
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				mTextBuilder.append(node.getNodeValue());
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				OdfElement element = (OdfElement) node;
+				element.accept(this);
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/**
+	 * An instance of OdfTextExtractor will be created to 
+	 * extract the text content of an ODF element.
+	 * @param element the ODF element whose text will be extracted.
+	 * @return An instance of OdfTextExtractor
+	 */
+	public static OdfTextExtractor newOdfTextExtractor(OdfElement element) {
+		return new OdfTextExtractor(element);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.pkg.OdfElement)
+	 */
+	@Override
+	public void visit(OdfElement element) {
+		if (element.getNamespaceURI().equals(OdfDocumentNamespace.META.getUri())
+				|| element.getNamespaceURI().equals(OdfDocumentNamespace.DC.getUri())) {
+			mTextBuilder.append(NewLineChar);
+		}
+		appendElementText(element);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextPElement)
+	 */
+	@Override
+	public void visit(TextPElement ele) {
+		mTextBuilder.append(NewLineChar);
+		appendElementText(ele);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextHElement)
+	 */
+	@Override
+	public void visit(TextHElement ele) {
+		mTextBuilder.append(NewLineChar);
+		appendElementText(ele);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextSElement)
+	 */
+	@Override
+	public void visit(TextSElement ele) {
+		Integer count = ele.getTextCAttribute();
+		if (count == null) {
+			count = 1;
+		}
+		for (int i = 0; i < count; i++) {
+			mTextBuilder.append(' ');
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextTabElement)
+	 */
+	@Override
+	public void visit(TextTabElement ele) {
+		mTextBuilder.append(TabChar);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement)
+	 */
+	@Override
+	public void visit(TextLineBreakElement ele) {
+		mTextBuilder.append(NewLineChar);
+		appendElementText(ele);
+	}
+
+	/**
+	 * Return the text content as a string
+	 * @return the text content as a string
+	 */
+	public String getText() {
+		visit(mElement);
+		return mTextBuilder.toString();
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextHeading.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextHeading.java
new file mode 100644
index 0000000..e5c04e8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextHeading.java
@@ -0,0 +1,174 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.text.Paragraph} in Simple API.
+ */
+public class OdfTextHeading extends TextHElement
+{
+	public OdfTextHeading( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+	/** Creates a new instance of this class with the given style name.
+	 * If the style name is null or the null string, no style is added.
+	 */
+	public OdfTextHeading(OdfFileDom ownerDoc, String styleName)
+	{
+		super(ownerDoc);
+		if (styleName != null && (!(styleName.equals(""))))
+        {
+            this.setStyleName(styleName);
+}
+	}
+
+	/**
+	 * Creates an instance of this class with the given styleName and content.
+     * If the style name is null or the null string, no style is added.
+	 * If the content is null or the null string, no content is added.
+	 * @param ownerDoc the owner document DOM
+	 * @param styleName the style:style-name value
+	 * @param content the heading content
+	 */
+	public OdfTextHeading(OdfFileDom ownerDoc,
+			String styleName, String content)
+	{
+		super(ownerDoc);
+		this.addStyledContent(styleName, content);
+	}
+
+	/**
+	 * Add the given content to the paragraph.
+     * If the content is null or the null string, no content is added.
+	 * @param content the heading content
+	 * @return the heading object
+	 */
+	public OdfTextHeading addContent(String content)
+	{
+		if (content != null && !content.equals(""))
+		{
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+		return this;
+	}
+
+    /**
+	 * Add the given content to the heading.
+     * If the content is null or the null string, no content is added.
+	 * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+	 * elements, and multiple blanks to <code>&lt;text:s</code>
+	 * @param content the heading content
+	 * @return the heading object
+	 */
+	public OdfTextHeading addContentWhitespace(String content)
+	{
+		if (content != null && !content.equals(""))
+		{
+			new OdfWhitespaceProcessor().append(this, content);
+		}
+		return this;
+	}
+
+	/**
+	 * Set a heading to have the given styleName and add the given content.
+     * If the style name is null or the null string, no style is added.
+	 * @param styleName the style:style-name value
+	 * @param content the heading content
+	 * @return the heading object
+	 */
+	public OdfTextHeading addStyledContent(String styleName, String content)
+	{
+		if (styleName != null && (!(styleName.equals(""))))
+        {
+            setStyleName(styleName);
+        }
+		return addContent(content);
+	}
+
+	/**
+	 * Set a heading to have the given styleName and add the given content.
+     * If the style name is null or the null string, no style is added.
+	 * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+	 * elements, and multiple blanks to <code>&lt;text:s</code>
+	 * @param styleName the style:style-name value
+	 * @param content the heading content
+	 * @return the heading object
+	 */
+	public OdfTextHeading addStyledContentWhitespace(String styleName, String content)
+	{
+		if (styleName != null && (!(styleName.equals(""))))
+        {
+            setStyleName(styleName);
+        }
+		return addContentWhitespace(content);
+	}
+
+    /**
+	 * Add a span with the given styleName and content to this heading.
+	 * If the style name is null or the null string, no span is added.
+	 * If the content is null or the null string, no span is added.
+	 * @param styleName
+	 * @param content
+	 * @return the heading object
+	 */
+	public OdfTextHeading addStyledSpan(String styleName, String content)
+	{
+		if (styleName != null && !styleName.equals("") &&
+			content != null && !content.equals(""))
+		{
+			this.appendChild(new OdfTextSpan(
+				(OdfFileDom) this.getOwnerDocument(),
+				styleName, content));
+		}
+		return this;
+	}
+    
+	/**
+	 * Add a span with the given styleName and content to this paragraph.
+	 * If the style name is null or the null string, no span is added.
+	 * If the content is null or the null string, no span is added.
+	 * @param styleName
+	 * @param content
+	 * @return the heading object
+	 */
+	public OdfTextHeading addStyledSpanWhitespace(String styleName, String content)
+	{
+		OdfTextSpan span;
+		if (styleName != null && !styleName.equals("") &&
+			content != null && !content.equals(""))
+		{
+			span = new OdfTextSpan((OdfFileDom) this.getOwnerDocument());
+			span.addStyledContentWhitespace(styleName, content);
+			appendChild(span);
+		}
+		return this;
+	}
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextList.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextList.java
new file mode 100644
index 0000000..453f753
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextList.java
@@ -0,0 +1,235 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleElementBase;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.text.list.List} in Simple API.
+ */
+public class OdfTextList extends TextListElement {
+
+	/**
+	 * Creates a new instance of OdfList.
+	 * 
+	 * @param ownerDoc
+	 */
+	public OdfTextList(OdfFileDom ownerDoc) {
+		super(ownerDoc);
+	}
+
+	/**
+	 * Creates a new instance of OdfList.
+	 * 
+	 * @param ownerDoc
+	 *            The document to which the list belongs
+	 * @param itemList
+	 *            An array of the list items, each preceded by delimiters that
+	 *            indicate nesting level.
+	 * @param indentDelim
+	 *            The character used as level nesting delimiter.
+	 * @param listStyleName
+	 *            Name to be applied to each <code>text:list</code> element.
+	 */
+	public OdfTextList(OdfFileDom ownerDoc, String[] itemList,
+			char indentDelim, String listStyleName) {
+		super(ownerDoc);
+		OdfTextList[] listArray = new OdfTextList[10];
+		TextListItemElement listItem;
+		OdfTextParagraph para;
+		String item;
+		int level = 0;
+		int lastLevel = 0;
+		int lev; // loop counter
+
+		listArray[0] = this;
+		for (int i = 0; i < itemList.length; i++) {
+			level = 0;
+			item = itemList[i];
+
+			// determine level of indenting by counting delimiters,
+			// then get rid of the delimiters
+			while (level < item.length() && item.charAt(level) == indentDelim) {
+				level++;
+			}
+			item = item.substring(level);
+
+			if (level > lastLevel) // open the sub-levels
+			{
+				for (lev = lastLevel + 1; lev <= level; lev++) {
+					listArray[lev] = new OdfTextList(ownerDoc);
+					listArray[lev].setTextStyleNameAttribute(listStyleName);
+				}
+			} else if (level < lastLevel) // close off the intervening lists
+			{
+				closeLevels(ownerDoc, listArray, lastLevel, level);
+			}
+			// now that we are at the proper level, add the item.
+			listArray[level].setTextStyleNameAttribute(listStyleName);
+			listItem = new TextListItemElement(ownerDoc);
+			para = new OdfTextParagraph(ownerDoc);
+			para.setTextContent(item);
+			listItem.appendChild(para);
+			listArray[level].appendChild(listItem);
+			lastLevel = level;
+		}
+
+		// close off any remaining open lists
+		closeLevels(ownerDoc, listArray, lastLevel, 0);
+	}
+
+	private void closeLevels(OdfFileDom ownerDoc, OdfTextList[] listArray,
+			int fromLevel, int toLevel) {
+		for (int level = fromLevel; level > toLevel; level--) {
+			if (!listArray[level - 1].hasChildNodes()) {
+				/* Force a list item */
+				listArray[level - 1].appendChild(new TextListItemElement(
+						ownerDoc));
+			}
+			listArray[level - 1].getLastChild().appendChild(listArray[level]);
+		}
+	}
+
+	/**
+	 * Retrieves Odf Text List Style
+	 * 
+	 * @return the <code>OdfTextListStyle</code> element
+	 */
+	public OdfTextListStyle getListStyle() {
+		OdfTextListStyle style = null;
+
+		String listName = getTextStyleNameAttribute();
+		if (listName != null && listName.length() > 0) {
+			OdfFileDom fileDom = (OdfFileDom) this.ownerDocument;
+			OdfOfficeAutomaticStyles autoStyles = null;
+			if(fileDom instanceof OdfContentDom){
+				autoStyles = ((OdfContentDom) fileDom).getAutomaticStyles();
+			}else if(fileDom instanceof OdfStylesDom){
+				autoStyles = ((OdfStylesDom) fileDom).getAutomaticStyles();
+			}			
+			if (autoStyles != null) {
+				style = autoStyles.getListStyle(listName);
+			}
+			if (style == null) {
+				OdfOfficeStyles styles = ((OdfSchemaDocument) fileDom.getDocument()).getDocumentStyles();
+				if (styles != null) {
+					style = styles.getListStyle(listName);
+				}
+			}
+		} else {
+			// if no style is specified at this particular list element, we
+			// ask the parent list (if any)
+			OdfTextList parentList = getParentList();
+			if (parentList != null) {
+				style = parentList.getListStyle();
+			}
+		}
+
+		return style;
+	}
+
+	/**
+	 * Retrieves the list level count
+	 * 
+	 * @return the level count
+	 */
+	public int getListLevel() {
+		int level = 1;
+		Node parent = getParentNode();
+		while (parent != null) {
+			if (parent instanceof TextListElement) {
+				level++;
+			}
+			parent = parent.getParentNode();
+		}
+		return level;
+	}
+
+	/**
+	 * Retrieves the List Level Style
+	 * 
+	 * @return the <code>TextListLevelStyleElementBase</code>
+	 */
+	public TextListLevelStyleElementBase getListLevelStyle() {
+		TextListLevelStyleElementBase odfListLevelStyle = null;
+		OdfTextListStyle style = getListStyle();
+		int level = getListLevel();
+		if (style != null) {
+			odfListLevelStyle = style.getLevel(level);
+		} else {
+			Logger.getLogger(OdfTextList.class.getName()).warning(
+					"No ListLevelStyle found!");
+		}
+		return odfListLevelStyle;
+	}
+
+	/**
+	 * Retrieves or create local list style
+	 * 
+	 * @return the <code>OdfTextListStyle</code> element
+	 */
+	public OdfTextListStyle getOrCreateLocalListStyle() {
+		OdfTextListStyle listStyle = getListStyle();
+		if (listStyle == null) {
+			OdfOfficeAutomaticStyles autoStyles = null;
+			OdfFileDom fileDom = ((OdfFileDom) this.ownerDocument);
+			if(fileDom instanceof OdfContentDom){
+				autoStyles = ((OdfContentDom) fileDom).getOrCreateAutomaticStyles();
+			}else if(fileDom instanceof OdfStylesDom){
+				autoStyles = ((OdfStylesDom) fileDom).getOrCreateAutomaticStyles();
+			}	
+			if (autoStyles != null) {
+				listStyle = autoStyles.newListStyle();
+			}
+		}
+		return listStyle;
+	}
+
+	/**
+	 * Retrieves the parent list of text list
+	 * 
+	 * @return The <code>OdfTextList</code>
+	 */
+	public OdfTextList getParentList() {
+		Node parent = getParentNode();
+		while (parent != null) {
+			if (parent instanceof OdfTextList) {
+				return (OdfTextList) parent;
+			}
+			parent = parent.getParentNode();
+		}
+		return null;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleBullet.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleBullet.java
new file mode 100644
index 0000000..ea89fc6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleBullet.java
@@ -0,0 +1,54 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleBulletElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfTextListLevelStyleBullet extends TextListLevelStyleBulletElement
+{
+    
+	public OdfTextListLevelStyleBullet( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    @Override
+    public OdfStyleFamily getFamily()
+    {
+        return OdfStyleFamily.List;
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleImage.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleImage.java
new file mode 100644
index 0000000..84d2018
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleImage.java
@@ -0,0 +1,57 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleImageElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfTextListLevelStyleImage extends TextListLevelStyleImageElement
+{
+    
+	private static final long serialVersionUID = -4812791034437665408L;
+
+	public OdfTextListLevelStyleImage( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    @Override
+    public OdfStyleFamily getFamily()
+    {
+        return OdfStyleFamily.List;
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleNumber.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleNumber.java
new file mode 100644
index 0000000..10b3760
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListLevelStyleNumber.java
@@ -0,0 +1,57 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleNumberElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfTextListLevelStyleNumber extends TextListLevelStyleNumberElement
+{
+ 
+	private static final long serialVersionUID = 5198532536808129901L;
+
+	public OdfTextListLevelStyleNumber( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+    
+    @Override
+    public OdfStyleFamily getFamily()
+    {
+        return OdfStyleFamily.List;
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }    
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListStyle.java
new file mode 100644
index 0000000..b88d7bf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextListStyle.java
@@ -0,0 +1,266 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListStyleElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfListLevelProperties;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ * List styles require a lot of code to create one level at a time.
+ * This class contains constructors that create an entire OdfListStyle
+ * based on a delimited string or an array of strings.
+ * Each item in the string (or array) represents a list level
+ * style for levels 1-10.
+ *
+ * <p>If an item contains <code>1</code>, <code>I</code>,
+ * <code>i</code>, <code>A</code>, or <code>a</code>, then it is presumed
+ * to be a numbering style; otherwise it is a bulleted style.</p>
+ */
+public class OdfTextListStyle extends TextListStyleElement
+{
+   
+	private static final long serialVersionUID = -5493176392198676430L;
+
+	/** Maximum number of levels in a list. */
+	protected static final int MAX_LIST_LEVEL = 10;
+	/** List should show all levels of numbering. */
+	public static final boolean SHOW_ALL_LEVELS = true;
+	/** List should show only one level of numbering. */
+	public static final boolean SHOW_ONE_LEVEL = false;
+
+	public OdfTextListStyle( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+	/**
+	 * Creates an OdfListStyle.
+	 * @param ownerDoc the document that this list style belongs to.
+	 * @param name the name of this list style.
+	 * @param specifiers the string of level specifiers.
+	 * @param delim the delimiter for splitting the string into levels.
+	 * @param spacing a css "length" telling how far to indent each level; also min. label width
+	 * @param showAllLevels true if you want to display all levels of numbering, false otherwise.
+	*/
+	public OdfTextListStyle(OdfFileDom ownerDoc,
+		String name,
+		String specifiers, String delim, String spacing, boolean showAllLevels)
+	{
+		super(ownerDoc);
+		String[] specArray = specifiers.split(delim);
+		newListStyle(name, specArray, spacing, showAllLevels);
+	}
+
+	/**
+	 * Constructor for OdfEasyListStyle.
+	 * @param ownerDoc the document that this list style belongs to.
+	 * @param name the name of this list style.
+	 * @param specArray an array of strings of level specifications.
+	 * @param spacing a css "length" telling how far to indent each level; also min. label width
+	 * @param showAllLevels true if you want to display all levels of numbering, false otherwise.
+	*/
+	public OdfTextListStyle(OdfFileDom ownerDoc,
+		String name,
+		String[] specArray, String spacing, boolean showAllLevels)
+	{
+		super(ownerDoc);
+		newListStyle(name, specArray, spacing, showAllLevels);
+	}
+
+	/** returns the given level or null if it does not exist
+     * 
+     * @param level is the level number that should be returned
+     * @return an instance of TextListLevelStyleImageElement,
+     *         TextListLevelStyleBulletElement, TextListLevelStyleNumberElement or
+     *         null.
+     */
+    public TextListLevelStyleElementBase getLevel(int level )
+    {
+        Node levelElement = this.getFirstChild();
+        
+        while( levelElement != null )
+        {
+            if( levelElement instanceof TextListLevelStyleElementBase )
+            {
+                if( level == 1 ) {
+                    return (TextListLevelStyleElementBase) levelElement;
+                }
+                else {
+                    --level;
+                }
+                
+            }
+            levelElement = levelElement.getNextSibling();
+        }
+        return null;
+    }
+
+    /** always returns the given level with the given class. If that level does
+     *  not exist or has a different class than it is (re)created.
+     * 
+     * @param level is the level number that should be returned
+     * @param clazz is the class of the level, should be
+     *        TextListLevelStyleImageElement, TextListLevelStyleBulletElement or
+     *        TextListLevelStyleNumberElement.
+     * @return
+     *        a list level style with the given level and class
+     */
+    @SuppressWarnings("unchecked")
+    public TextListLevelStyleElementBase getOrCreateListLevel( int level, Class clazz )
+    {
+        TextListLevelStyleElementBase levelStyle = getLevel( level );
+        if( (levelStyle != null) && clazz.isInstance(levelStyle) ) {
+            return levelStyle;
+        }
+        
+        if( levelStyle != null ) {
+            removeChild(levelStyle);
+        }
+        
+        levelStyle = (TextListLevelStyleElementBase)
+                        ((OdfFileDom)this.ownerDocument).newOdfElement(clazz);
+        levelStyle.setTextLevelAttribute(level);
+        appendChild(levelStyle);
+        
+        return levelStyle;
+    }
+    
+    @Override
+    public OdfStyleFamily getFamily()
+    {
+        return OdfStyleFamily.List;
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }
+
+	/**
+	 * Creates the OdfTextListStyle element.
+	 * This is a utility routine called by the constructors.
+	 * @param name the <code>style:name</code> of this list style
+	 * @param specArray specifications for each level of the list
+	 * @param spacing a CSS length that gives the amount of space before
+	 * a label and the minimum label width
+	 * @param showAllLevels if true, display all levels of a numbered list item
+	 */
+	private void newListStyle(String name,
+		String[] specArray, String spacing,
+		boolean showAllLevels)
+	{
+		Pattern numFormatPattern = Pattern.compile("([1IiAa])");
+		Pattern cssLengthPattern = Pattern.compile("([^a-z]+)\\s*([a-z]+)?");
+		String numPrefix = "";
+		String numSuffix = "";
+		String numberFormat = "";
+		Matcher m;
+		double cssLengthNum;
+		String cssLengthUnits;
+		int displayLevels;
+
+		OdfTextListLevelStyleNumber number;
+		OdfTextListLevelStyleBullet bullet;
+		TextListLevelStyleElementBase styleItem;
+
+		this.setStyleNameAttribute(name);
+
+		// split up the spacing into length and units
+		m = cssLengthPattern.matcher(spacing);
+		if (m.find())
+		{
+			try
+			{
+				cssLengthNum = Double.parseDouble(m.group(1));
+			}
+			catch (NumberFormatException oops)
+			{
+				cssLengthNum = 0.0;
+			}
+			cssLengthUnits = (m.group(2) == null) ? "" : m.group(2);
+		}
+		else
+		{
+			cssLengthNum = 0;
+			cssLengthUnits = "";
+		}
+
+
+		for (int i = 0; i < Math.min(specArray.length, MAX_LIST_LEVEL); i++)
+		{
+			specArray[i] = specArray[i].trim();
+			m = numFormatPattern.matcher( specArray[i] );
+			if (m.find())	// if it has 1, I, i, A, or a, it's a numbering style
+			{
+				numberFormat = m.group(1);
+				numPrefix = specArray[i].substring( 0, m.start(1) );
+				numSuffix = specArray[i].substring( m.end(1) );
+				displayLevels = (showAllLevels) ? (i+1) : 1;
+				number = new OdfTextListLevelStyleNumber(
+					(OdfFileDom)this.ownerDocument);
+				number.setStyleNumPrefixAttribute(numPrefix);
+				number.setStyleNumFormatAttribute(numberFormat);
+				number.setStyleNumSuffixAttribute(numSuffix);
+				number.setTextDisplayLevelsAttribute( displayLevels );
+				styleItem = number;
+			}
+			else	// it's a bullet style
+			{
+				bullet = new OdfTextListLevelStyleBullet(
+					(OdfFileDom)this.ownerDocument);
+				bullet.setStyleNumPrefixAttribute("");
+				bullet.setStyleNumSuffixAttribute("");
+				if (!specArray[i].equals(""))
+				{
+					bullet.setTextBulletCharAttribute(specArray[i].substring(0,1));
+				}
+				else
+				{
+					bullet.setTextBulletCharAttribute("");
+				}
+				styleItem = bullet;
+			}
+
+			styleItem.setTextLevelAttribute(i+1);
+			styleItem.setProperty(OdfListLevelProperties.SpaceBefore,
+				Double.toString(cssLengthNum * (i+1)) + cssLengthUnits);
+			styleItem.setProperty(OdfListLevelProperties.MinLabelWidth,
+				Double.toString(cssLengthNum) + cssLengthUnits);
+			this.appendChild(styleItem);
+
+		}
+	}
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextOutlineLevelStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextOutlineLevelStyle.java
new file mode 100644
index 0000000..7be15bf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextOutlineLevelStyle.java
@@ -0,0 +1,56 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextOutlineLevelStyleElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfTextOutlineLevelStyle extends TextOutlineLevelStyleElement
+{
+	private static final long serialVersionUID = -4117353513688453621L;
+
+	public OdfTextOutlineLevelStyle( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    @Override
+    public OdfStyleFamily getFamily()
+    {
+        return OdfStyleFamily.List;
+    }
+
+    @Override
+    public OdfStyleBase getParentStyle()
+    {
+        return null;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextOutlineStyle.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextOutlineStyle.java
new file mode 100644
index 0000000..6e84d31
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextOutlineStyle.java
@@ -0,0 +1,85 @@
+
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.text.TextOutlineStyleElement;
+import org.w3c.dom.Node;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ */
+public class OdfTextOutlineStyle extends TextOutlineStyleElement
+{
+	private static final long serialVersionUID = -337172468409606629L;
+
+	public OdfTextOutlineStyle( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+    /**
+     * Retrieves the ODF TextOutlineLevelStyle with level count
+     * 
+     * @param level  The level count
+     * @return The <code>OdfTextOutlineLevelStyle</code>
+     */
+	public OdfTextOutlineLevelStyle getLevel(int level )
+    {
+        Node levelElement = this.getFirstChild();
+
+        while( levelElement != null )
+        {
+            if(levelElement instanceof OdfTextOutlineLevelStyle )
+            {
+                OdfTextOutlineLevelStyle levelStyle = (OdfTextOutlineLevelStyle)levelElement;
+                if( levelStyle.getTextLevelAttribute().intValue() == level ) {
+                    return levelStyle;
+                }
+            }
+            levelElement = levelElement.getNextSibling();
+        }
+        return null;
+    }
+    
+	/**
+	 * Retrieves or create the ODF TextOutlineLevelStyle with level count
+	 * 
+	 * @param level The level count
+	 * @return The <code>OdfTextOutlineLevelStyle</code>
+	 */
+    public OdfTextOutlineLevelStyle getOrCreateLevel(int level)
+    {
+        OdfTextOutlineLevelStyle style = getLevel(level);
+        if( style == null )
+        {
+            style = ((OdfFileDom)this.ownerDocument).newOdfElement(OdfTextOutlineLevelStyle.class);
+            style.setTextLevelAttribute(level);
+            this.appendChild(style);
+        }
+        return style;
+    }
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextParagraph.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextParagraph.java
new file mode 100644
index 0000000..9c6280b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextParagraph.java
@@ -0,0 +1,163 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ *
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.text.Paragraph} in Simple API.
+ */
+public class OdfTextParagraph extends TextPElement {
+
+    /** Creates a new instance of this class */
+    public OdfTextParagraph(OdfFileDom ownerDoc) {
+        super(ownerDoc);
+    }
+
+    /** Creates a new instance of this class with the given style name.
+     * If the style name is null or the null string, no style is added.
+     */
+    public OdfTextParagraph(OdfFileDom ownerDoc, String styleName) {
+        super(ownerDoc);
+        if (styleName != null && (!(styleName.equals("")))) {
+            this.setStyleName(styleName);
+        }
+    }
+
+    /**
+     * Creates an instance of this class with the given styleName and content.
+     * If the style name is null or the null string, no style is added.
+     * If the content is null or the null string, no content is added.
+     * @param ownerDoc the owner document DOM
+     * @param styleName the style:style-name value
+     * @param content the paragraph content
+     */
+    public OdfTextParagraph(OdfFileDom ownerDoc,
+        String styleName, String content) {
+        super(ownerDoc);
+        this.addStyledContent(styleName, content);
+    }
+
+    /**
+     * Add the given content to the paragraph.
+     * If the content is null or the null string, no content is added.
+     * @param content the paragraph content
+     * @return the paragraph object
+     */
+    public OdfTextParagraph addContent(String content) {
+        if (content != null && !content.equals("")) {
+            this.appendChild(this.getOwnerDocument().createTextNode(content));
+        }
+        return this;
+    }
+
+    /**
+     * Add the given content to the paragraph.
+     * If the content is null or the null string, no content is added.
+     * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+     * elements, and multiple blanks to <code>&lt;text:s</code>
+     * @param content the paragraph content
+     * @return the paragraph object
+     */
+    public OdfTextParagraph addContentWhitespace(String content) {
+        if (content != null && !content.equals("")) {
+            new OdfWhitespaceProcessor().append(this, content);
+        }
+        return this;
+    }
+
+    /**
+     * Set a paragraph to have the given styleName and add the given content.
+     * If the style name is null or the null string, no style is added.
+     * If the content is null or the null string, no content is added.
+     * @param styleName the style:style-name value
+     * @param content the paragraph content
+     * @return the paragraph object
+     */
+    public OdfTextParagraph addStyledContent(String styleName, String content) {
+        if (styleName != null && (!(styleName.equals("")))) {
+            setStyleName(styleName);
+        }
+        return addContent(content);
+    }
+
+    /**
+     * Set a paragraph to have the given styleName and add the given content.
+     * If the style name is null or the null string, no style is added.
+     * If the content is null or the null string, no content is added.
+     * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+     * elements, and multiple blanks to <code>&lt;text:s</code>
+     * @param styleName the style:style-name value
+     * @param content the paragraph content
+     * @return the paragraph object
+     */
+    public OdfTextParagraph addStyledContentWhitespace(String styleName,
+        String content) {
+        if (styleName != null && (!(styleName.equals("")))) {
+            setStyleName(styleName);
+        }
+        return addContentWhitespace(content);
+    }
+
+    /**
+     * Add a span with the given styleName and content to this paragraph.
+     * If the style name is null or the null string, no span is added.
+     * If the content is null or the null string, no span is added.
+     * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+     * elements, and multiple blanks to <code>&lt;text:s</code>
+     * @param styleName
+     * @param content
+     * @return the heading object
+     */
+    public OdfTextParagraph addStyledSpan(String styleName, String content) {
+        if (styleName != null && !styleName.equals("") &&
+            content != null && !content.equals("")) {
+            this.appendChild(new OdfTextSpan(
+                (OdfFileDom) this.getOwnerDocument(),
+                styleName, content));
+        }
+        return this;
+    }
+
+    /**
+     * Add a span with the given styleName and content to this paragraph.
+     * If the style name is null or the null string, no span is added.
+     * If the content is null or the null string, no span is added.
+     * @param styleName
+     * @param content
+     * @return the heading object
+     */
+    public OdfTextParagraph addStyledSpanWhitespace(String styleName,
+        String content) {
+        OdfTextSpan span;
+        if (styleName != null && !styleName.equals("") &&
+            content != null && !content.equals("")) {
+            span = new OdfTextSpan((OdfFileDom) this.getOwnerDocument());
+            span.addStyledContentWhitespace(styleName, content);
+            appendChild(span);
+        }
+        return this;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextSpan.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextSpan.java
new file mode 100644
index 0000000..1468946
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfTextSpan.java
@@ -0,0 +1,136 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+
+/**
+ * Convenient functionalty for the parent ODF OpenDocument element
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.text.Span} in Simple API.
+ */
+public class OdfTextSpan extends TextSpanElement
+{
+	public OdfTextSpan( OdfFileDom ownerDoc )
+    {
+        super( ownerDoc );
+    }
+
+	/** Creates a new instance of this class with the given style name.
+	 * If the style name is null or the null string, no style is added.
+     *
+     * @param ownerDoc the XML file the Span belongs to
+     * @param styleName the name of the style to be applied to the span
+     */
+	public OdfTextSpan(OdfFileDom ownerDoc, String styleName)
+	{
+		super(ownerDoc);
+		if (styleName != null && (!(styleName.equals(""))))
+        {
+            this.setStyleName(styleName);
+}
+	}
+
+	/**
+	 * Creates an instance of this class with the given styleName and content.
+     * If the style name is null or the null string, no style is added.
+	 * If the content is null or the null string, no content is added.
+	 * @param ownerDoc the owner document DOM
+	 * @param styleName the style:style-name value
+	 * @param content the span content
+	 */
+	public OdfTextSpan(OdfFileDom ownerDoc,
+			String styleName, String content)
+	{
+		super(ownerDoc);
+		this.addStyledContent(styleName, content);
+	}
+
+	/**
+	 * Add the given content to the paragraph.
+     * If the content is null or the null string, no content is added.
+	 * @param content the span content
+     * @return the span object
+	 */
+	public OdfTextSpan addContent(String content)
+	{
+		if (content != null && !content.equals(""))
+		{
+			this.appendChild(this.getOwnerDocument().createTextNode(content));
+		}
+		return this;
+	}
+
+   	/**
+	 * Add the given content to the paragraph.
+     * If the content is null or the null string, no content is added.
+	 * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+	 * elements, and multiple blanks to <code>&lt;text:s</code>
+	 * @param content the span content
+     * @return the span object
+	 */
+	public OdfTextSpan addContentWhitespace(String content)
+	{
+		if (content != null && !content.equals(""))
+		{
+			new OdfWhitespaceProcessor().append(this, content);
+		}
+		return this;
+	}
+
+	/**
+	 * Set a span to have the given styleName and add the given content.
+     * If the style name is null or the null string, no style is added.
+	 * @param styleName the style:style-name value
+	 * @param content the span content
+	 * @return the span object
+	 */
+	public OdfTextSpan addStyledContent(String styleName, String content)
+	{
+		if (styleName != null && (!(styleName.equals(""))))
+        {
+            setStyleName(styleName);
+        }
+		return addContent(content);
+	}
+    
+	/**
+	 * Set a span to have the given styleName and add the given content.
+     * If the style name is null or the null string, no style is added.
+	 * Embedded \n are converted to <code>&lt;text:line-break&gt;</code>
+	 * elements, and multiple blanks to <code>&lt;text:s</code>
+	 * @param styleName the style:style-name value
+	 * @param content the span content
+	 * @return the span object
+	 */
+	public OdfTextSpan addStyledContentWhitespace(String styleName, String content)
+	{
+		if (styleName != null && (!(styleName.equals(""))))
+        {
+            setStyleName(styleName);
+        }
+		return addContentWhitespace(content);
+	}
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfWhitespaceProcessor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfWhitespaceProcessor.java
new file mode 100644
index 0000000..f992e3d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/doc/text/OdfWhitespaceProcessor.java
@@ -0,0 +1,189 @@
+/************************************************************************
+ *
+ * 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.incubator.doc.text;
+
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * It's a tool class to help process white space.
+ * 
+ * @author J David Eisenberg
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.WhitespaceProcessor} in Simple API.
+ */
+public class OdfWhitespaceProcessor {
+	private int nSpaces;
+	private String partial;
+	private OdfFileDom owner;
+	private Element element;
+
+	public OdfWhitespaceProcessor() {
+
+	}
+
+    /**
+     * Add given text content to an element, handling multiple blanks,
+     * tabs, and newlines properly.
+     * @param element the element to which content is being added
+     * @param content text content including whitespace
+     */
+	public void append(Element element, String content)
+	{
+		int i = 0;
+		char ch;
+
+		this.element = element;
+		partial = "";
+		nSpaces = 0;
+		owner = (OdfFileDom) element.getOwnerDocument();
+
+		for (i = 0; i < content.length(); i++)
+		{
+			ch = content.charAt(i);
+			if (ch == ' ')
+			{
+				if (nSpaces == 0)
+				{
+					partial += " ";
+				}
+				nSpaces++;
+			}
+			else if (ch == '\n')
+			{
+				emitPartial();
+				element.appendChild(new TextLineBreakElement(owner));
+			}
+			else if (ch == '\t')
+			{
+				emitPartial();
+				element.appendChild(new TextTabElement(owner));
+			}
+			else if (ch != '\r')	// ignore DOS half of CR-LF
+			{
+				if (nSpaces > 1)
+				{
+					emitPartial();
+				}
+				partial += ch;
+				nSpaces = 0;
+			}
+		}
+		emitPartial();
+	}
+
+	/*
+	 * Send out any information that has been buffered
+	 */
+	private void emitPartial()
+	{
+		/* send out any partial text */
+		if (!partial.equals(""))
+		{
+			element.appendChild(owner.createTextNode(partial));
+		}
+		/* and any spaces if necessary */
+		if (nSpaces > 1)
+		{
+			TextSElement spaceElement = new TextSElement(owner);
+			spaceElement.setTextCAttribute(new Integer(nSpaces - 1));
+			element.appendChild(spaceElement);
+		}
+		/* and reset all the counters */
+		nSpaces = 0;
+		partial = "";
+	}
+
+    /**
+     * Retrieve the text content of an element.
+     * Recursively retrieves all the text nodes, expanding whitespace where
+     * necessary. Ignores any elements except <code>&lt;text:s&gt;</code>,
+     * <code>&lt;text:line-break&gt;</code> and <code>&lt;text:tab&gt</code>.
+     * @param element an element whose text you want to retrieve
+     * @return the element's text content, with whitespace expanded
+     */
+	public String getText(Node element)
+	{
+		String result = "";
+		int spaceCount;
+		Node node = element.getFirstChild();
+		while (node != null)
+		{
+			if (node.getNodeType() == Node.TEXT_NODE)
+			{
+				result += node.getNodeValue();
+			}
+			else if (node.getNodeType() == Node.ELEMENT_NODE)
+			{
+				if (node.getLocalName().equals("s")) // text:s
+				{
+					try
+					{
+						spaceCount = Integer.parseInt(
+							((Element) node).getAttributeNS(
+							OdfDocumentNamespace.TEXT.getUri(), "c"));
+					}
+					catch(Exception e)
+					{
+						spaceCount = 1;
+					}
+					for (int i = 0; i < spaceCount; i++)
+					{
+						result += " ";
+					}
+				}
+				else if (node.getLocalName().equals("line-break"))
+				{
+					result += "\n";
+				}
+				else if (node.getLocalName().equals("tab"))
+				{
+					result += "\t";
+				}
+				else
+				{
+					result = result + getText(node);
+				}
+			}
+			node = node.getNextSibling();
+		}
+		return result;
+	}
+
+    /**
+     * Append text content to a given element, handling whitespace properly.
+     * This is a static method that creates its own OdfWhitespaceProcessor,
+     * so that you don't have to.
+     * @param element the element to which content is being added
+     * @param content text content including whitespace
+     */
+	public static void appendText(Element element, String content)
+	{
+		OdfWhitespaceProcessor processor = new OdfWhitespaceProcessor();
+		processor.append(element, content);
+	}
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaAutoReload.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaAutoReload.java
new file mode 100644
index 0000000..21b2a21
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaAutoReload.java
@@ -0,0 +1,57 @@
+/************************************************************************
+ *
+ * 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.incubator.meta;
+
+import org.odftoolkit.odfdom.dom.element.meta.MetaAutoReloadElement;
+
+/**
+ * <code>OdfMetaAutoReload</code> feature specifies whether the document is
+ * reloaded or replaced by another document after a certain period of time has
+ * elapsed.
+ * 
+ */
+// TODO: the functions are not completed.
+public class OdfMetaAutoReload {
+
+	private MetaAutoReloadElement mMetaAutoReloadElement;
+
+	/**
+	 * Constructor of <code>OdfMetaAutoReload</code> feature.
+	 * 
+	 * @param element
+	 *            an instance of ODF Element <code>MetaAutoReloadElement</code>
+	 */
+	public OdfMetaAutoReload(MetaAutoReloadElement element) {
+		mMetaAutoReloadElement = element;
+	}
+
+	/**
+	 * Return the instance of ODF Element <codeMetaAutoReloadElement</code>
+	 * which represents this feature.
+	 * 
+	 * @return the instance of ODF Element <code>MetaAutoReloadElement</code>
+	 */
+	public MetaAutoReloadElement getMetaAutoReloadElement() {
+		return mMetaAutoReloadElement;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaDocumentStatistic.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaDocumentStatistic.java
new file mode 100644
index 0000000..3415524
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaDocumentStatistic.java
@@ -0,0 +1,435 @@
+/************************************************************************
+ *
+ * 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.incubator.meta;
+
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+
+/**
+ * <code>OdfMetaDocumentStatistic</code> feature specifies the statistics about
+ * the document.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.meta.DocumentStatistic} in Simple API.
+ */
+public class OdfMetaDocumentStatistic {
+
+	private MetaDocumentStatisticElement mDocStatistic;
+
+	/**
+	 * Constructor of <code>OdfMetaDocumentStatistic</code> feature.
+	 * 
+	 * @param docStatistic
+	 *            the <code>MetaDocumentStatisticElement</code> represent this
+	 *            feature
+	 */
+	public OdfMetaDocumentStatistic(MetaDocumentStatisticElement docStatistic) {
+		this.mDocStatistic = docStatistic;
+	}
+
+	/**
+	 * Get the instance of <code>MetaDocumentStatisticElement</code> which represents this
+	 * feature.
+	 * 
+	 * @return an instance of <code>MetaDocumentStatisticElement</code>
+	 */
+	private MetaDocumentStatisticElement getMetaDocumentStatisticElement() {
+		return mDocStatistic;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaCellCountAttribute</code> , See {@odf.attribute
+	 *  meta:cell-count}.
+	 * 
+	 * @return the number of table cells contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getCellCount() {
+		return mDocStatistic.getMetaCellCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaCellCountAttribute</code> , See {@odf.attribute
+	 *  meta:cell-count}.
+	 * 
+	 * @param cellCount	the number of table cells need to be set
+	 *            
+	 */
+	public void setCellCount(int cellCount) {
+		mDocStatistic.setMetaCellCountAttribute(cellCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaCharacterCountAttribute</code> , See {@odf.attribute
+	 *  meta:character-count}.
+	 * 
+	 * @return the number of characters contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getCharacterCount() {
+		return mDocStatistic.getMetaCharacterCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaCharacterCountAttribute</code> , See {@odf.attribute
+	 *  meta:character-count}.
+	 * 
+	 * @param characterCount	the number of characters need to set
+	 */
+	public void setCharacterCount(Integer characterCount) {
+		mDocStatistic.setMetaCharacterCountAttribute(characterCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaDrawCountAttribute</code> , See {@odf.attribute
+	 *  meta:draw-count}.
+	 * 
+	 * @return the number of all the graphic related element in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getDrawCount() {
+		return mDocStatistic.getMetaDrawCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaDrawCountAttribute</code> , See {@odf.attribute
+	 *  meta:draw-count}.
+	 * 
+	 * @param drawCount	the number of all the graphic related element need to set
+	 */
+	public void setDrawCount(Integer drawCount) {
+		mDocStatistic.setMetaDrawCountAttribute(drawCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaFrameCountAttribute</code> , See {@odf.attribute
+	 *  meta:frame-count}.
+	 * 
+	 * @return the number of <code><draw:frame></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getFrameCount() {
+		return mDocStatistic.getMetaFrameCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaFrameCountAttribute</code> , See {@odf.attribute
+	 *  meta:frame-count}.
+	 * 
+	 * @param frameCount the number of <code><draw:frame></code> element need to set
+	 */
+	public void setFrameCount(Integer frameCount) {
+		mDocStatistic.setMetaFrameCountAttribute(frameCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaImageCountAttribute</code> , See {@odf.attribute
+	 *  meta:image-count}.
+	 * 
+	 * @return the number of <code><draw:image></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getImageCount() {
+		return mDocStatistic.getMetaImageCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaImageCountAttribute</code> , See {@odf.attribute
+	 *  meta:image-count}.
+	 * 
+	 * @param imageCount the number of <code><draw:image></code> element need to set
+	 */
+	public void setImageCount(Integer imageCount) {
+		mDocStatistic.setMetaImageCountAttribute(imageCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaNonWhitespaceCharacterCountAttribute</code> , See
+	 * {@odf.attribute meta:non-whitespace-character-count}.
+	 * 
+	 * @return the number of non-whitespace characters contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getNonWhitespaceCharacterCount() {
+		return mDocStatistic.getMetaNonWhitespaceCharacterCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaNonWhitespaceCharacterCountAttribute</code> , See
+	 * {@odf.attribute meta:non-whitespace-character-count}.
+	 * 
+	 * @param nonWhitespaceCharacterCount	the number of non-whitespace characters need to set
+	 */
+	public void setNonWhitespaceCharacterCount(
+			Integer nonWhitespaceCharacterCount) {
+		mDocStatistic
+				.setMetaNonWhitespaceCharacterCountAttribute(nonWhitespaceCharacterCount);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaObjectCountAttribute</code> , See {@odf.attribute
+	 *  meta:object-count}
+	 * 
+	 * @return the number of <code><draw:object></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getObjectCount() {
+		return mDocStatistic.getMetaObjectCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaObjectCountAttribute</code> , See {@odf.attribute
+	 *  meta:object-count}.
+	 * 
+	 * @param objectCount the number of <code><draw:object></code> element need to set
+	 */
+	public void setObjectCount(Integer objectCount) {
+		mDocStatistic.setMetaObjectCountAttribute(objectCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaOleObjectCountAttribute</code> , See {@odf.attribute
+	 *  meta:ole-object-count}.
+	 * 
+	 * @return the number of <code><draw:object-ole></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getOleObjectCount() {
+		return mDocStatistic.getMetaOleObjectCountAttribute();
+
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaOleObjectCountAttribute</code> , See {@odf.attribute
+	 *  meta:ole-object-count}.
+	 * 
+	 * @param oleObjectCount the number of <code><draw:object-ole></code> element need to set
+	 */
+	public void setOleObjectCount(Integer oleObjectCount) {
+		mDocStatistic.setMetaOleObjectCountAttribute(oleObjectCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaPageCountAttribute</code> , See {@odf.attribute
+	 *  meta:page-count}.
+	 * 
+	 * @return the number of page count contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getPageCount() {
+		return mDocStatistic.getMetaPageCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaPageCountAttribute</code> , See {@odf.attribute
+	 *  meta:page-count}.
+	 * 
+	 * @param pageCount the number of page count need to set
+	 */
+	public void setPageCount(Integer pageCount) {
+		mDocStatistic.setMetaPageCountAttribute(pageCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaParagraphCountAttribute</code> , See {@odf.attribute
+	 *  meta:paragraph-count}.
+	 * 
+	 * @return the number of <code><text:p></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getParagraphCount() {
+		return mDocStatistic.getMetaParagraphCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaParagraphCountAttribute</code> , See {@odf.attribute
+	 *  meta:paragraph-count}.
+	 * 
+	 * @param paragraphCount the number of <code><text:p></code> element need to set
+	 */
+	public void setParagraphCount(Integer paragraphCount) {
+		mDocStatistic.setMetaParagraphCountAttribute(paragraphCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaRowCountAttribute</code> , See {@odf.attribute
+	 * meta:row-count}.
+	 * 
+	 * @return the number of lines contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getRowCount() {
+		return mDocStatistic.getMetaRowCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaRowCountAttribute</code> , See {@odf.attribute
+	 * meta:row-count}.
+	 * 
+	 * @param rowCount the number of lines need to set
+	 */
+	public void setRowCount(Integer rowCount) {
+		mDocStatistic.setMetaRowCountAttribute(rowCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaSentenceCountAttribute</code> , See {@odf.attribute
+	 *  meta:sentence-count}.
+	 * 
+	 * @return the number of sentences contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSentenceCount() {
+		return mDocStatistic.getMetaSentenceCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaSentenceCountAttribute</code> , See {@odf.attribute
+	 *  meta:sentence-count}.
+	 * 
+	 * @param sentenceCount the number of sentences need to set
+	 */
+	public void setSentenceCount(Integer sentenceCount) {
+		mDocStatistic.setMetaSentenceCountAttribute(sentenceCount);
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaSyllableCountAttribute</code> , See {@odf.attribute
+	 *  meta:syllable-count}.
+	 * 
+	 * @return the number of syllables contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getSyllableCount() {
+		return mDocStatistic.getMetaSyllableCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaSyllableCountAttribute</code> , See {@odf.attribute
+	 *  meta:syllable-count}.
+	 * 
+	 * @param syllableCount the number of syllables need to set
+	 */
+	public void setSyllableCount(Integer syllableCount) {
+		mDocStatistic.setMetaSyllableCountAttribute(syllableCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaTableCountAttribute</code> , See {@odf.attribute
+	 *  meta:table-count}.
+	 * 
+	 * @return the number of <code><table:table></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getTableCount() {
+		return mDocStatistic.getMetaTableCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaTableCountAttribute</code> , See {@odf.attribute
+	 *  meta:table-count}.
+	 * 
+	 * @param tableCount the number of <code><table:table></code> need to set
+	 */
+	public void setTableCount(Integer tableCount) {
+		mDocStatistic.setMetaTableCountAttribute(tableCount);
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM attribute representation
+	 * <code>MetaWordCountAttribute</code> , See {@odf.attribute
+	 *  meta:word-count}.
+	 * 
+	 * @return the number of words contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 */
+	public Integer getWordCount() {
+		return mDocStatistic.getMetaWordCountAttribute();
+	}
+
+	/**
+	 * Sets the value of ODFDOM attribute representation
+	 * <code>MetaWordCountAttribute</code> , See {@odf.attribute
+	 *  meta:word-count}.
+	 * 
+	 * @param wordCount the number of words need to set
+	 */
+	public void setWordCount(Integer wordCount) {
+		mDocStatistic.setMetaWordCountAttribute(wordCount);
+
+	}
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaHyperlinkBehaviour.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaHyperlinkBehaviour.java
new file mode 100644
index 0000000..a542172
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaHyperlinkBehaviour.java
@@ -0,0 +1,57 @@
+/************************************************************************
+ *
+ * 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.incubator.meta;
+
+import org.odftoolkit.odfdom.dom.element.meta.MetaHyperlinkBehaviourElement;
+
+/**
+ * <code>OdfMetaHyperlinkBehaviour</code> feature specifies default behavior of
+ * hyperlinks in the current document.
+ * 
+ */
+// TODO: the functions are not completed.
+public class OdfMetaHyperlinkBehaviour {
+	private MetaHyperlinkBehaviourElement mMetaHyperlinkBehaviourElement;
+
+	/**
+	 * Constructor of <code>OdfMetaHyperlinkBehaviour</code> feature.
+	 * 
+	 * @param element
+	 *            an instance of ODF Element
+	 *            <code>MetaHyperlinkBehaviourElement</code>.
+	 */
+	public OdfMetaHyperlinkBehaviour(MetaHyperlinkBehaviourElement element) {
+		mMetaHyperlinkBehaviourElement = element;
+	}
+
+	/**
+	 * Return the instance of ODF Element
+	 * <code>MetaHyperlinkBehaviourElement</code>. which represents this feature.
+	 * 
+	 * @return the instance of ODF Element
+	 *         <code>MetaHyperlinkBehaviourElement</code>.
+	 */
+	public MetaHyperlinkBehaviourElement getMetaHyperlinkBehaviourElement() {
+		return mMetaHyperlinkBehaviourElement;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaTemplate.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaTemplate.java
new file mode 100644
index 0000000..4cdac01
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfMetaTemplate.java
@@ -0,0 +1,57 @@
+/************************************************************************
+ *
+ * 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.incubator.meta;
+
+import org.odftoolkit.odfdom.dom.element.meta.MetaTemplateElement;
+
+/**
+ * <code>OdfMetaTemplate</code> feature specified the URL for the document that
+ * was used to create a document.
+ * 
+ */
+
+// TODO: the functions are not completed.
+public class OdfMetaTemplate {
+
+	private MetaTemplateElement mMetaTemplateElement;
+
+	/**
+	 * Constructor of <code>OdfMetaTemplate</code> feature.
+	 * 
+	 * @param element
+	 *            an instance of ODF Element <code>MetaTemplateElement</code>
+	 */
+	public OdfMetaTemplate(MetaTemplateElement element) {
+		mMetaTemplateElement = element;
+	}
+
+	/**
+	 * Return the instance of ODF Element <code>MetaTemplateElement</code> which
+	 * represents this feature.
+	 * 
+	 * @return the instance of ODF Element <code>MetaTemplateElement</code>
+	 */
+	public MetaTemplateElement getMetaTemplateElement() {
+		return mMetaTemplateElement;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfOfficeMeta.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfOfficeMeta.java
new file mode 100644
index 0000000..d4365db
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/meta/OdfOfficeMeta.java
@@ -0,0 +1,1000 @@
+/************************************************************************
+ *
+ * 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.incubator.meta;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDescriptionElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcLanguageElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcSubjectElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcTitleElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaAutoReloadElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaHyperlinkBehaviourElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaTemplateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentMetaElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.type.Duration;
+
+/**
+ * <code>OdfOfficeMeta</code> represent the meta data feature in the ODF document.
+ * <p>
+ * It provides convenient method to get meta data info.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.meta.Meta} in Simple API.
+ */
+public class OdfOfficeMeta {
+
+	private OfficeMetaElement mOfficeMetaElement;
+	private boolean mAutomaticUpdate = true;
+
+	/**
+	 * Constructor of <code>OdfOfficeMeta</code> feature.
+	 *
+	 * @param metaDom	the file DOM element of meta.xml
+	 */
+	public OdfOfficeMeta(OdfFileDom metaDom) {
+			OfficeDocumentMetaElement metaEle = OdfElement.findFirstChildNode(OfficeDocumentMetaElement.class, metaDom);
+			mOfficeMetaElement = OdfElement.findFirstChildNode(OfficeMetaElement.class, metaEle);
+	}
+
+	/**
+	 * Get the instance of <code>OfficeMetaElement</code> which represents this feature.
+	 * 
+	 * @return the instance of OfficeMetaElement
+	 */
+	public OfficeMetaElement getOfficeMetaElement() {
+		return mOfficeMetaElement;
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaGeneratorElement</code> , See {@odf.element
+	 * meta:generator}.
+	 * 
+	 * @return the generator info of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getGenerator() {
+		MetaGeneratorElement metaGenerator = OdfElement.findFirstChildNode(
+				MetaGeneratorElement.class, mOfficeMetaElement);
+		if (metaGenerator != null) {
+			return metaGenerator.getTextContent();
+		}
+		return null;
+
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaGeneratorElement</code> , See {@odf.element
+	 * meta:generator}.
+	 * 
+	 * @param generator	set the specified document generator. NULL will remove the element from the meta.xml.
+	 */
+	public void setGenerator(String generator) {
+		MetaGeneratorElement metaGeneratorEle = OdfElement.findFirstChildNode(
+				MetaGeneratorElement.class, mOfficeMetaElement);
+		if (generator == null) {
+			if (metaGeneratorEle != null) {
+				mOfficeMetaElement.removeChild(metaGeneratorEle);
+			}
+		} else {
+			if (metaGeneratorEle == null) {
+				metaGeneratorEle = mOfficeMetaElement.newMetaGeneratorElement();
+			}
+			metaGeneratorEle.setTextContent(generator);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>DcTitleElement</code> , See {@odf.element dc:title}.
+	 * 
+	 * @return the title of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getTitle() {
+
+		DcTitleElement titleEle = OdfElement.findFirstChildNode(
+				DcTitleElement.class, mOfficeMetaElement);
+		if (titleEle != null) {
+			return titleEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>DcTitleElement</code> , See {@odf.element dc:title}.
+	 * 
+	 * @param title set the specified document title. NULL will remove the element from the meta.xml.
+	 */
+	public void setTitle(String title) {
+		DcTitleElement titleEle = OdfElement.findFirstChildNode(
+				DcTitleElement.class, mOfficeMetaElement);
+		if (title == null) {
+			if (titleEle != null) {
+				mOfficeMetaElement.removeChild(titleEle);
+			}
+		} else {
+			if (titleEle == null) {
+				titleEle = mOfficeMetaElement.newDcTitleElement();
+			}
+			titleEle.setTextContent(title);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>DcDescriptionElement</code> , See {@odf.element
+	 * dc:description}.
+	 * 
+	 * @return the description of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getDescription() {
+		DcDescriptionElement descEle = OdfElement.findFirstChildNode(
+				DcDescriptionElement.class, mOfficeMetaElement);
+		if (descEle != null) {
+			return descEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>DcDescriptionElement</code> , See {@odf.element
+	 * dc:description}.
+	 * 
+	 * @param description set the specified document description. NULL will remove the element from the meta.xml.
+	 */
+	public void setDescription(String description) {
+		DcDescriptionElement descEle = OdfElement.findFirstChildNode(
+				DcDescriptionElement.class, mOfficeMetaElement);
+		if (description == null) {
+			if (descEle != null) {
+				mOfficeMetaElement.removeChild(descEle);
+			}
+		} else {
+			if (descEle == null) {
+				descEle = mOfficeMetaElement.newDcDescriptionElement();
+			}
+			descEle.setTextContent(description);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>DcSubjectElement</code> , See {@odf.element
+	 * dc:subject}.
+	 * 
+	 * @return the subject of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getSubject() {
+		DcSubjectElement subjectEle = OdfElement.findFirstChildNode(
+				DcSubjectElement.class, mOfficeMetaElement);
+		if (subjectEle != null) {
+			return subjectEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>DcSubjectElement</code> , See {@odf.element
+	 * dc:subject}.
+	 * 
+	 * @param subject set the specified document subject. NULL will remove the element from the meta.xml.
+	 */
+	public void setSubject(String subject) {
+		DcSubjectElement subjectEle = OdfElement.findFirstChildNode(
+				DcSubjectElement.class, mOfficeMetaElement);
+		if (subject == null) {
+			if (subjectEle != null) {
+				mOfficeMetaElement.removeChild(subjectEle);
+			}
+		} else {
+			if (subjectEle == null) {
+				subjectEle = mOfficeMetaElement.newDcSubjectElement();
+			}
+			subjectEle.setTextContent(subject);
+		}
+	}
+
+	/**
+	 * Receives the list value of the ODFDOM element representation
+	 * <code>MetaKeywordElement</code> , See {@odf.element
+	 * meta:keyword}.
+	 * 
+	 * @return the keywords of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public List<String> getKeywords() {
+		List<String> keywords = new ArrayList<String>();
+		MetaKeywordElement keywordEle = OdfElement.findFirstChildNode(
+				MetaKeywordElement.class, mOfficeMetaElement);
+		if (keywordEle != null) {
+			keywords.add(keywordEle.getTextContent());
+			MetaKeywordElement keywordNext;
+			while ((keywordNext = OdfElement.findNextChildNode(
+					MetaKeywordElement.class, keywordEle)) != null) {
+				keywords.add(keywordNext.getTextContent());
+				keywordEle = keywordNext;
+			}
+			return keywords;
+		} else {
+			return null;
+		}
+
+	}
+
+	/**
+	 * Sets the list value of the ODFDOM element representation
+	 * <code>MetaKeywordElement</code> , See {@odf.element
+	 * meta:keyword}.
+	 * 
+	 * @param keyList set the specified list of keywords
+	 */
+	public void setKeywords(List<String> keyList) {
+		MetaKeywordElement keywordEle = OdfElement.findFirstChildNode(
+				MetaKeywordElement.class, mOfficeMetaElement);
+		List<MetaKeywordElement> toBeDeleted = new ArrayList<MetaKeywordElement>();
+		if (keywordEle != null) {
+			MetaKeywordElement keywordTmp;
+			toBeDeleted.add(keywordEle);
+			while ((keywordTmp = OdfElement.findNextChildNode(
+					MetaKeywordElement.class, keywordEle)) != null) {
+				keywordEle = keywordTmp;
+				toBeDeleted.add(keywordTmp);
+			}
+
+		}
+
+		// remove the original
+		for (MetaKeywordElement keyele : toBeDeleted) {
+			mOfficeMetaElement.removeChild(keyele);
+		}
+		// add new
+		for (int i = 0; i < keyList.size(); i++) {
+			MetaKeywordElement keywordElement = mOfficeMetaElement.newMetaKeywordElement();
+			keywordElement.setTextContent(keyList.get(i));
+		}
+
+	}
+
+	/**
+	 * Add the keyword to the current document.
+	 * Create child element {@odf.element meta:keyword}.
+	 * 
+	 * @param keyword	the value of child element {@odf.element
+	 *            meta:keyword}.
+	 */
+	public void addKeyword(String keyword) {
+		MetaKeywordElement keywordElement = mOfficeMetaElement.newMetaKeywordElement();
+		keywordElement.setTextContent(keyword);
+	}
+
+	/**
+	 * Receives the list value of the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> , See {@odf.element
+	 * meta:user-defined}.
+	 * 
+	 * @return get the list of user-defined metadata names;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public List<String> getUserDefinedDataNames() {
+		List<String> definedNames = new ArrayList<String>();
+		MetaUserDefinedElement definedEle = OdfElement.findFirstChildNode(
+				MetaUserDefinedElement.class, mOfficeMetaElement);
+		if (definedEle != null) {
+
+			definedNames.add(definedEle.getMetaNameAttribute());
+			MetaUserDefinedElement definedNext;
+			while ((definedNext = OdfElement.findNextChildNode(
+					MetaUserDefinedElement.class, definedEle)) != null) {
+
+				definedNames.add(definedNext.getMetaNameAttribute());
+
+				definedEle = definedNext;
+			}
+			return definedNames;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name, See {@odf.element
+	 *  meta:user-defined}.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @return	the <code>MetaUserDefinedElement</code> which is identified by the specified name;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public MetaUserDefinedElement getUserDefinedElementByAttributeName(
+			String name) {
+		MetaUserDefinedElement definedEle = OdfElement.findFirstChildNode(
+				MetaUserDefinedElement.class, mOfficeMetaElement);
+		if (definedEle != null) {
+			if (definedEle.getMetaNameAttribute().equals(name)) {
+				return definedEle;
+			}
+			MetaUserDefinedElement definedNext;
+			while ((definedNext = OdfElement.findNextChildNode(
+					MetaUserDefinedElement.class, definedEle)) != null) {
+
+				if (definedNext.getMetaNameAttribute().equals(name)) {
+					return definedNext;
+				}
+
+				definedEle = definedNext;
+			}
+			return null;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name, See {@odf.element
+	 *  meta:user-defined}.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @return the value of the user-defined metadata with the specified name;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getUserDefinedDataValue(String name) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			return definedElement.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Receives the data type of the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name, See {@odf.element
+	 *  meta:user-defined}.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @return the data type of the user-defined metadata with the specified name;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getUserDefinedDataType(String name) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			return definedElement.getMetaValueTypeAttribute();
+		}
+		return null;
+	}
+
+	/**
+	 * Remove the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name, See {@odf.element
+	 *  meta:user-defined}.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 */
+	public void removeUserDefinedDataByName(String name) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			mOfficeMetaElement.removeChild(definedElement);
+		}
+
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name, See {@odf.element
+	 *  meta:user-defined}.
+	 * 
+	 * @param name	the name need to set for the user-defined metadata
+	 * @param value  the value need to set for the user-defined metadata
+	 */
+	public void setUserDefinedDataValue(String name, String value) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			definedElement.setTextContent(value);
+		}
+	}
+
+	/**
+	 * Sets the data type of the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name, See {@odf.element
+	 *  meta:user-defined}.
+	 * 
+	 * @param name	the name need to set for the user-defined metadata
+	 * @param value  the value need to set for the user-defined metadata
+	 */
+	public void setUserDefinedDataType(String name, String value) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			definedElement.setMetaValueTypeAttribute(value);
+		}
+
+	}
+
+	/**
+	 * Sets the ODFDOM element representation
+	 * <code>MetaUserDefinedElement</code> , See {@odf.element
+	 * meta:user-defined} if the element with the attribute name exists,then
+	 * update;or create a new element if type or value is null,the original will
+	 * not be updated.
+	 * 
+	 * @param name	the name need to set for the user-defined metadata
+	 * @param type	the data type need to set for the user-defined metadata
+	 * @param value	the value need to set for the user-defined metadata
+	 */
+	public void setUserDefinedData(String name, String type, String value) {
+		// test if name exists
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		// if exists, then update,if parameter is null, then don't change
+		if (definedElement != null) {
+			if (type != null) {
+				definedElement.setMetaValueTypeAttribute(type);
+			}
+			if (value != null) {
+				definedElement.setTextContent(value);
+			}
+		} else {
+			// if not exists, add
+			definedElement = mOfficeMetaElement.newMetaUserDefinedElement(name,
+					type);
+			definedElement.setTextContent(value);
+
+		}
+
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaInitialCreatorElement</code> , See {@odf.element
+	 * meta:initial-creator}.
+	 * 
+	 * @return get the initial creator of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getInitialCreator() {
+		MetaInitialCreatorElement iniCreatorEle = OdfElement.findFirstChildNode(MetaInitialCreatorElement.class,
+				mOfficeMetaElement);
+		if (iniCreatorEle != null) {
+			return iniCreatorEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaInitialCreatorElement</code> , See {@odf.element
+	 * meta:initial-creator}.
+	 * 
+	 * @param initialCreator set the specified initial creator. NULL will remove the element from the meta.xml.
+	 */
+	public void setInitialCreator(String initialCreator) {
+		MetaInitialCreatorElement initialCreatorEle = OdfElement.findFirstChildNode(MetaInitialCreatorElement.class,
+				mOfficeMetaElement);
+		if (initialCreator == null) {
+			if (initialCreatorEle != null) {
+				mOfficeMetaElement.removeChild(initialCreatorEle);
+			}
+		} else {
+			if (initialCreatorEle == null) {
+				initialCreatorEle = mOfficeMetaElement.newMetaInitialCreatorElement();
+			}
+			initialCreatorEle.setTextContent(initialCreator);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>DcCreatorElement</code> , See {@odf.element
+	 * dc:creator}
+	 * 
+	 * @return the creator of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getCreator() {
+		DcCreatorElement creatorEle = OdfElement.findFirstChildNode(
+				DcCreatorElement.class, mOfficeMetaElement);
+		if (creatorEle != null) {
+			return creatorEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>DcCreatorElement</code> , See {@odf.element
+	 * dc:creator}.
+	 * 
+	 * @param creator set the specified creator. NULL will remove the element from the meta.xml.
+	 */
+	public void setCreator(String creator) {
+		DcCreatorElement creatorEle = OdfElement.findFirstChildNode(
+				DcCreatorElement.class, mOfficeMetaElement);
+		if (creator == null) {
+			if (creatorEle != null) {
+				mOfficeMetaElement.removeChild(creatorEle);
+			}
+		} else {
+			if (creatorEle == null) {
+				creatorEle = mOfficeMetaElement.newDcCreatorElement();
+			}
+			creatorEle.setTextContent(creator);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaPrintedByElement</code> , See {@odf.element
+	 * meta:printed-by}
+	 * 
+	 * @return the name of the last person who printed the current document;
+	 * <p>
+	 * <code>null</code>, if element is not set
+	 */
+	public String getPrintedBy() {
+		MetaPrintedByElement printedByEle = OdfElement.findFirstChildNode(
+				MetaPrintedByElement.class, mOfficeMetaElement);
+		if (printedByEle != null) {
+			return printedByEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaPrintedByElement</code> , See {@odf.element
+	 * meta:printed-by}.
+	 * 
+	 * @param printedBy	the name need to set for the last person who printed the current document. NULL will remove the element from the meta.xml.
+	 */
+	public void setPrintedBy(String printedBy) {
+		MetaPrintedByElement printedByEle = OdfElement.findFirstChildNode(
+				MetaPrintedByElement.class, mOfficeMetaElement);
+		if (printedBy == null) {
+			if (printedByEle != null) {
+				mOfficeMetaElement.removeChild(printedByEle);
+			}
+		} else {
+			if (printedByEle == null) {
+				printedByEle = mOfficeMetaElement.newMetaPrintedByElement();
+			}
+			printedByEle.setTextContent(printedBy);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaCreationDateElement</code> , See {@odf.element
+	 * meta:creation-date}
+	 * 
+	 * @return the date and time when the document was created initially;
+	 * <p>
+	 * <code>null</code>, if element is not set
+	 */
+	public Calendar getCreationDate() {
+		MetaCreationDateElement creationDateEle = OdfElement.findFirstChildNode(MetaCreationDateElement.class,
+				mOfficeMetaElement);
+		if (creationDateEle != null) {
+			return stringToCalendar(creationDateEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaCreationDateElement</code> , See {@odf.element
+	 * meta:creation-date}.
+	 * 
+	 * @param creationDate	the date and time need to set. NULL will remove the element from the meta.xml.
+	 */
+	public void setCreationDate(Calendar creationDate) {
+		MetaCreationDateElement creationDateEle = OdfElement.findFirstChildNode(MetaCreationDateElement.class,
+				mOfficeMetaElement);
+		if (creationDate == null) {
+			if (creationDateEle != null) {
+				mOfficeMetaElement.removeChild(creationDateEle);
+			}
+		} else {
+			if (creationDateEle == null) {
+				creationDateEle = mOfficeMetaElement.newMetaCreationDateElement();
+			}
+			creationDateEle.setTextContent(calendarToString(creationDate));
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>DcDateElement</code> , See {@odf.element dc:date}.
+	 * 
+	 * @return the date and time when the document was last modified;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public Calendar getDate() {
+		DcDateElement dcDateEle = OdfElement.findFirstChildNode(
+				DcDateElement.class, mOfficeMetaElement);
+		if (dcDateEle != null) {
+			return stringToCalendar(dcDateEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>DcDateElement</code> , See {@odf.element dc:date}.
+	 * 
+	 * @param date	the date and time need to set. NULL will remove the element from the meta.xml.
+	 */
+	public void setDate(Calendar date) {
+		DcDateElement dcDateEle = OdfElement.findFirstChildNode(
+				DcDateElement.class, mOfficeMetaElement);
+		if (date == null) {
+			if (dcDateEle != null) {
+				mOfficeMetaElement.removeChild(dcDateEle);
+			}
+		} else {
+			if (dcDateEle == null) {
+				dcDateEle = mOfficeMetaElement.newDcDateElement();
+			}
+			dcDateEle.setTextContent(calendarToString(date));
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaPrintDateElement</code> , See {@odf.element
+	 * meta:print-date}.
+	 * 
+	 * @return the date and time when the document was last printed;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public Calendar getPrintDate() {
+		MetaPrintDateElement printDateEle = OdfElement.findFirstChildNode(
+				MetaPrintDateElement.class, mOfficeMetaElement);
+		if (printDateEle != null) {
+			return stringToCalendar(printDateEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaPrintDateElement</code> , See {@odf.element
+	 * meta:print-date}.
+	 * 
+	 * @param printDate	the date and time need to set. NULL will remove the element from the meta.xml.
+	 */
+	public void setPrintDate(Calendar printDate) {
+		MetaPrintDateElement printDateEle = OdfElement.findFirstChildNode(
+				MetaPrintDateElement.class, mOfficeMetaElement);
+		if (printDate == null) {
+			if (printDateEle != null) {
+				mOfficeMetaElement.removeChild(printDateEle);
+			}
+		} else {
+			if (printDateEle == null) {
+				printDateEle = mOfficeMetaElement.newMetaPrintDateElement();
+			}
+			printDateEle.setTextContent(calendarToString(printDate));
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>DcLanguageElement</code> , See {@odf.element
+	 * dc:language}.
+	 * 
+	 * @return the default language of the document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public String getLanguage() {
+		DcLanguageElement languageEle = OdfElement.findFirstChildNode(
+				DcLanguageElement.class, mOfficeMetaElement);
+		if (languageEle != null) {
+			return languageEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>DcLanguageElement</code> , See {@odf.element
+	 * dc:language}.
+	 * 
+	 * @param language the default language need to set fo the current document. NULL will remove the element from the meta.xml.
+	 */
+	public void setLanguage(String language) {
+		DcLanguageElement languageEle = OdfElement.findFirstChildNode(
+				DcLanguageElement.class, mOfficeMetaElement);
+		if (language == null) {
+			if (languageEle != null) {
+				mOfficeMetaElement.removeChild(languageEle);
+			}
+		} else {
+			if (languageEle == null) {
+				languageEle = mOfficeMetaElement.newDcLanguageElement();
+			}
+			languageEle.setTextContent(language);
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaEditingCyclesElement</code> , See {@odf.element
+	 * meta:editing-cycles}.
+	 * 
+	 * @return the number of times that the document has been edited;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public Integer getEditingCycles() {
+		MetaEditingCyclesElement editingCyclesEle = OdfElement.findFirstChildNode(MetaEditingCyclesElement.class,
+				mOfficeMetaElement);
+		if (editingCyclesEle != null) {
+			return Integer.valueOf(editingCyclesEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaEditingCyclesElement</code> , See {@odf.element
+	 * meta:editing-cycles}.
+	 * 
+	 * @param editingCycles	set the specified edit times. NULL will remove the element from the meta.xml.
+	 */
+	public void setEditingCycles(Integer editingCycles) {
+		MetaEditingCyclesElement editingCyclesEle = OdfElement.findFirstChildNode(MetaEditingCyclesElement.class,
+				mOfficeMetaElement);
+		if (editingCycles == null) {
+			if (editingCyclesEle != null) {
+				mOfficeMetaElement.removeChild(editingCyclesEle);
+			}
+		} else {
+			if (editingCyclesEle == null) {
+				editingCyclesEle = mOfficeMetaElement.newMetaEditingCyclesElement();
+			}
+			editingCyclesEle.setTextContent(String.valueOf(editingCycles));
+		}
+	}
+
+	/**
+	 * Receives the value of the ODFDOM element representation
+	 * <code>MetaEditingDurationElement</code> , See {@odf.element
+	 *  meta:editing-duration}.
+	 * 
+	 * @return the total time spent editing the document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 */
+	public Duration getEditingDuration() {
+		MetaEditingDurationElement editiingDurationEle = OdfElement.findFirstChildNode(MetaEditingDurationElement.class,
+				mOfficeMetaElement);
+		if (editiingDurationEle != null) {
+			return Duration.valueOf(editiingDurationEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the ODFDOM element representation
+	 * <code>MetaEditingDurationElement</code> , See {@odf.element
+	 *  meta:editing-duration}.
+	 * 
+	 * @param editingDuration the time need to set. NULL will remove the element from the meta.xml.
+	 */
+	public void setEditingDuration(Duration editingDuration) {
+		MetaEditingDurationElement editingDurationEle = OdfElement.findFirstChildNode(MetaEditingDurationElement.class,
+				mOfficeMetaElement);
+		if (editingDuration == null) {
+			if (editingDurationEle != null) {
+				mOfficeMetaElement.removeChild(editingDurationEle);
+			}
+		} else {
+			if (editingDurationEle == null) {
+				editingDurationEle = mOfficeMetaElement.newMetaEditingDurationElement();
+			}
+			editingDurationEle.setTextContent(editingDuration.toString());
+		}
+	}
+
+	/**
+	 * Receives the sub feature of OdfMetaDocumentStatistic.
+	 * 
+	 * @return the statistics about the document which can be represented by 
+	 * <code>OdfMetaDocumentStatistic</code> feature;
+	 * <p>
+	 * <code>null</code>, if the feature is not exist.
+	 */
+	public OdfMetaDocumentStatistic getDocumentStatistic() {
+		MetaDocumentStatisticElement element = getDocumentStatisticElement();
+		if (element != null) {
+			return new OdfMetaDocumentStatistic(element);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the OdfMetaHyperlinkBehaviour feature.
+	 * 
+	 * @return the default behavior of hyperlinks in the current document
+	 * which can be represented by <code>OdfMetaHyperlinkBehaviour</code> feature;
+	 * <p>
+	 * <code>null</code>, if the feature is not exist.
+	 */
+	public OdfMetaHyperlinkBehaviour getHyperlinkBehaviour() {
+		MetaHyperlinkBehaviourElement element = getHyperlinkBehaviourElement();
+		if (element != null) {
+			return new OdfMetaHyperlinkBehaviour(element);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the OdfMetaAutoReload feature.
+	 * 
+	 * @return the information whether the document is reloaded or replaced by another document
+	 * after a certain period of time has elapsed.
+	 * <p>
+	 * It can be represented by <code>OdfMetaAutoReload</code> feature;
+	 * <p>
+	 * <code>null</code>, if the feature is not exist.
+	 */
+	public OdfMetaAutoReload getAutoReload() {
+		MetaAutoReloadElement element = getAutoReloadElement();
+		if (element != null) {
+			return new OdfMetaAutoReload(element);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the OdfMetaTemplate feature.
+	 * 
+	 * @return the information specified the URL for the document that was used to create a document.
+	 * <p>
+	 * It can be represented by <code>OdfMetaTemplate</code> feature;
+	 * <p>
+	 * <code>null</code>, if the feature is not exist.
+	 */
+	public OdfMetaTemplate getTemplate() {
+		MetaTemplateElement element = getTemplateElement();
+		if (element != null) {
+			return new OdfMetaTemplate(element);
+		} else {
+			return null;
+		}
+	}
+
+	private MetaDocumentStatisticElement getDocumentStatisticElement() {
+		return OdfElement.findFirstChildNode(
+				MetaDocumentStatisticElement.class, mOfficeMetaElement);
+	}
+
+	private MetaHyperlinkBehaviourElement getHyperlinkBehaviourElement() {
+		return OdfElement.findFirstChildNode(
+				MetaHyperlinkBehaviourElement.class, mOfficeMetaElement);
+	}
+
+	private MetaAutoReloadElement getAutoReloadElement() {
+		return OdfElement.findFirstChildNode(MetaAutoReloadElement.class,
+				mOfficeMetaElement);
+	}
+
+	private MetaTemplateElement getTemplateElement() {
+		return OdfElement.findFirstChildNode(MetaTemplateElement.class,
+				mOfficeMetaElement);
+	}
+
+	/**
+	 * Change valid string of calendar to Calendar type.
+	 * 
+	 * @param baseDate the string of a calender
+	 * @return the object of Calender
+	 */
+	private Calendar stringToCalendar(String baseDate) {
+		// Calendar calendar=new GregorianCalendar();
+		Calendar calendar = Calendar.getInstance();
+		Date d1 = null;
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+
+		try {
+			d1 = sdf.parse(baseDate);
+		} catch (Exception e) {
+			// invalid format or null value in meta.xml
+			// d1=new Date();
+		}
+
+		calendar.setTime(d1);
+		return calendar;
+	}
+
+	/**
+	 * Convert a <code>Canlender</code> object to <code>String</code> object.
+	 * @param calendar an instanceof <code>Canlender</code>
+	 * @return the String format(yyyy-MM-dd'T'HH:mm:ss) of Calendar.
+	 */
+	private String calendarToString(Calendar calendar) {
+		return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(calendar.getTime());
+	}
+
+	/**@param enableAutomaticUpdate If the automatic update of metadata is enabled, metadata such as last modified data is set during saving the document.
+	The default is <code>true</code>, disabling the default allows to load and save a document without changing any data.
+	 */
+	public void setAutomaticUpdate(boolean enableAutomaticUpdate) {
+		mAutomaticUpdate = enableAutomaticUpdate;
+	}
+
+	/**@return If the automatic update of metadata is enabled, metadata such as last modified data is set during saving the document.
+	The default is <code>true</code>, disabling the default allows to load and save a document without changing any data. */
+	public boolean hasAutomaticUpdate() {
+		return mAutomaticUpdate;
+	}
+
+	@Override
+	public String toString() {
+		if (mOfficeMetaElement != null) {
+			return mOfficeMetaElement.toString();
+		} else {
+			return null;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/InvalidNavigationException.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/InvalidNavigationException.java
new file mode 100644
index 0000000..51af2b3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/InvalidNavigationException.java
@@ -0,0 +1,43 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+/**
+ * Thrown to indicate that the navigation operation can not be processed on
+ * selections
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.navigation.InvalidNavigationException} in Simple API.
+ */
+public class InvalidNavigationException extends Exception {
+
+	private static final long serialVersionUID = -6139894252732076102L;
+
+	/**
+	 * Constructs a <code>InvalidNavigateOperation</code> with the specified
+	 * detail message.
+	 * 
+	 * @param msg
+	 *            the detail message.
+	 */
+	public InvalidNavigationException(String msg) {
+		super(msg);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/Navigation.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/Navigation.java
new file mode 100644
index 0000000..aa3588b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/Navigation.java
@@ -0,0 +1,147 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import org.w3c.dom.Node;
+
+/**
+ * Abstract class Navigation used to navigate the document
+ * and find the matched element by the user defined conditions
+ *
+ *@deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.navigation.Navigation} in Simple API.
+ */
+public abstract class Navigation {
+
+	/**
+	 * Return true if document still has more matched Selection
+	 * when traversing the document(In other words return true
+	 * if getNextMatchElement() would return an element instance
+	 * rather than return null)
+	 * @return true if document still has more matched Selection,
+	 * and vice versa
+	 *
+	 */
+	abstract public boolean hasNext();
+	//abstract public void gotoPrevious();
+
+	/**
+	 * get the current Selection result
+	 * @return the current Selection result
+	 */
+	abstract public Selection getCurrentItem();
+
+	/**
+	 * check if the element match the user defined condition
+	 * @param element	navigate this element
+	 * @return true if the element match the user defined condition;
+	 * 		   false if not match
+	 *
+	 */
+	abstract public boolean match(Node element);
+
+	/**
+	 * get the next matched element in a whole dom tree
+	 * @param startpoint	navigate from the startpoint
+	 * @return	the next matched element
+	 */
+	protected Node getNextMatchElement(Node startpoint) {
+		Node matchedNode = null;
+		matchedNode = traverseTree(startpoint);
+
+		Node currentpoint = startpoint;
+		while ((matchedNode == null) && (currentpoint != null)) {
+			Node sibling = currentpoint.getNextSibling();
+			if ((sibling != null) &&
+					(sibling.getNodeType() == Node.TEXT_NODE || sibling.getNodeType() == Node.ELEMENT_NODE) && (match(sibling))) {
+				matchedNode = sibling;
+			}
+			while ((sibling != null) && (matchedNode == null)) {
+				if ((sibling.getNodeType() == Node.TEXT_NODE || sibling.getNodeType() == Node.ELEMENT_NODE)) {
+					matchedNode = traverseTree(sibling);
+				}
+				sibling = sibling.getNextSibling();
+				if (sibling != null && match(sibling)) {
+					matchedNode = sibling;
+				}
+			}
+			currentpoint = currentpoint.getParentNode();
+		}
+
+		return matchedNode;
+	}
+
+	/**
+	 * get the next matched element in a sub tree
+	 * @param startpoint	navigate from the startpoint
+	 * @param root			the root of the sub tree
+	 * @return	the next matched element
+	 */
+	protected Node getNextMatchElementInTree(Node startpoint, Node root) {
+		Node matchedNode = null;
+		matchedNode = traverseTree(startpoint);
+
+		Node currentpoint = startpoint;
+		while ((matchedNode == null) && (currentpoint != root)) {
+			Node sibling = currentpoint.getNextSibling();
+			if ((sibling != null) &&
+					(sibling.getNodeType() == Node.TEXT_NODE || sibling.getNodeType() == Node.ELEMENT_NODE) && (match(sibling))) {
+				matchedNode = sibling;
+			}
+			while ((sibling != null) && (matchedNode == null)) {
+				if ((sibling.getNodeType() == Node.TEXT_NODE || sibling.getNodeType() == Node.ELEMENT_NODE)) {
+					matchedNode = traverseTree(sibling);
+				}
+				sibling = sibling.getNextSibling();
+				if (sibling != null && match(sibling)) {
+					matchedNode = sibling;
+				}
+			}
+			currentpoint = currentpoint.getParentNode();
+		}
+
+		return matchedNode;
+	}
+
+	private Node traverseTree(Node root) {
+		Node matchedNode = null;
+		if (root == null) {
+			return null;
+		}
+		//if (match(root)) return root;
+
+		Node node = root.getFirstChild();
+		while (node != null) {
+			if ((node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.ELEMENT_NODE)) {
+				if (match(node) == true) {
+					matchedNode = node;
+					break;
+				} else {
+					matchedNode = traverseTree(node);
+					if (matchedNode != null) {
+						break;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+		return matchedNode;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/Selection.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/Selection.java
new file mode 100644
index 0000000..48a7cc5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/Selection.java
@@ -0,0 +1,225 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+
+/**
+ * Abstract class Selection describe one of the matched results The selection
+ * can be recognized by the container mElement, the start mIndex of the text
+ * content of this mElement and the text content.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.navigation.Selection} in Simple API.
+ */
+public abstract class Selection {
+
+	private OdfElement mElement;
+	private int mIndex;
+
+	/**
+	 * get the container mElement of this selection
+	 * @return the container mElement
+	 */
+	public OdfElement getElement() {
+		return mElement;
+	}
+
+	/**
+	 * get the start mIndex of the text content of the container mElement
+	 * this is only meaningful for TextSelection. other type Selection 
+	 * will return 0.
+	 * @return the start mIndex of the container mElement
+	 */
+	public int getIndex() {
+		return mIndex;
+	}
+
+	/**
+	 * cut the current selection
+	 * @throws InvalidNavigationException 
+	 */
+	abstract public void cut() throws InvalidNavigationException;
+
+	/**
+	 * paste the current selection at front of the specified position selection
+	 * @param positionitem	the position selection
+	 * @throws InvalidNavigationException 
+	 */
+	abstract public void pasteAtFrontOf(Selection positionitem) throws InvalidNavigationException;
+
+	/**
+	 * paste the current selection at end of the specified position selection
+	 * @param positionitem	the position selection
+	 * @throws InvalidNavigationException 
+	 */
+	abstract public void pasteAtEndOf(Selection positionitem) throws InvalidNavigationException;
+
+	/**
+	 * when a selected item has been delete, the selections after this deleted selection should be refresh
+	 * because these selections mIndex will be changed
+	 * @param deleteditem	the deleted selection
+	 */
+	abstract protected void refreshAfterFrontalDelete(Selection deleteditem);
+
+	/**
+	 * when a selected item has been inserted, the selection after the inserted item should be refresh
+	 * because these selections mIndex will be changed
+	 * @param inserteditem	the inserted selection
+	 */
+	abstract protected void refreshAfterFrontalInsert(Selection inserteditem);
+
+	/**
+	 * A quick method to update the mIndex of this selection
+	 * @param offset	the offset that the mIndex should be added
+	 */
+	abstract protected void refresh(int offset);
+
+	/**
+	 * SelectionManager can manage all the selections that are returned to end users.
+	 * This SelectionManager contains a repository of all selections, and will refresh the status/mIndex
+	 * of selections after certain operation.
+	 */
+	static class SelectionManager {
+
+		static private Hashtable<OdfElement, Vector<Selection>> repository = new Hashtable<OdfElement, Vector<Selection>>();
+
+		/**
+		 * Register the selection item
+		 * @param item	the selection item
+		 */
+		static public void registerItem(Selection item) {
+			OdfElement element = item.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				int i = 0;
+				while (i < selections.size()) {
+					if (selections.get(i).getIndex() > item.getIndex()) {
+						selections.insertElementAt(item, i);
+						break;
+					}
+					i++;
+				}
+				if (i == selections.size()) {
+					selections.add(item);
+				}
+			} else {
+				Vector<Selection> al = new Vector<Selection>();
+				al.add(item);
+				repository.put(element, al);
+			}
+		}
+
+		/**
+		 * Refresh the selections in repository after a item is cut.
+		 * @param cutItem	the cut item
+		 */
+		synchronized static public void refreshAfterCut(Selection cutItem) {
+			//travase the whole sub tree
+			OdfElement element = cutItem.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() > cutItem.getIndex()) {
+						selections.get(i).refreshAfterFrontalDelete(cutItem);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Refresh the selections in repository after a pastedAtFrontOf operation is called.
+		 * @param item	the pasted item
+		 * @param positionItem	the position item
+		 */
+		synchronized static public void refreshAfterPasteAtFrontOf(Selection item, Selection positionItem) {
+			//travase the whole sub tree
+			OdfElement element = positionItem.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() >= positionItem.getIndex()) {
+						selections.get(i).refreshAfterFrontalInsert(item);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Refresh the selections in repository after a pastedAtEndOf operation is called.
+		 * @param item	the pasted item
+		 * @param positionItem	the position item
+		 */
+		synchronized static public void refreshAfterPasteAtEndOf(Selection item, Selection positionItem) {
+			OdfElement element = positionItem.getElement();
+			int positionIndex;
+
+			if (positionItem instanceof TextSelection) {
+				positionIndex = positionItem.getIndex() + ((TextSelection) positionItem).getText().length();
+			} else {
+				positionIndex = positionItem.getIndex();
+			}
+
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() >= positionIndex) {
+						selections.get(i).refreshAfterFrontalInsert(item);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Remove the selection from repository.
+		 * @param item	selection item
+		 */
+		static public void unregisterItem(Selection item) {
+			OdfElement element = item.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				selections.remove(item);
+			}
+		}
+
+		/**
+		 * A direct method to update all the selections contained in a mElement after a certain position.
+		 * @param containerElement	the container mElement
+		 * @param offset	the offset
+		 * @param positionIndex	the mIndex of a certain position
+		 */
+		synchronized static public void refresh(OdfElement containerElement, int offset, int positionIndex) {
+			if (repository.containsKey(containerElement)) {
+				Vector<Selection> selections = repository.get(containerElement);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() >= positionIndex) {
+						selections.get(i).refresh(offset);
+					}
+				}
+			}
+		}
+
+		private SelectionManager() {
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextNavigation.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextNavigation.java
new file mode 100644
index 0000000..bf96bc8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextNavigation.java
@@ -0,0 +1,222 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfWhitespaceProcessor;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * A derived Navigation class used for navigate the text content
+ * it is used to search the document and find the matched text 
+ * and would return TextSelection instance
+ *
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.navigation.TextNavigation} in Simple API.
+ */
+public class TextNavigation extends Navigation {
+
+	private String mMatchedElementName = "text:p,text:h";
+	private String mPatternText;
+	private OdfTextDocument mTextDocument;
+	private TextSelection mCurrentSelectedItem;
+	private String mCurrentText;
+	private int mCurrentIndex;
+	private boolean mbFinishFindInHeaderFooter;
+
+	/**
+	 * Construct TextNavigation with matched condition and navigation scope
+	 * @param pattern	the matched pattern String
+	 * @param doc	the navigation scope
+	 */
+	public TextNavigation(String pattern, OdfTextDocument doc) {
+		this.mPatternText = pattern;
+		mTextDocument = doc;
+		mCurrentSelectedItem = null;
+		mbFinishFindInHeaderFooter = false;
+	}
+
+	//the matched text might exist in header/footer
+	private TextSelection findInHeaderFooter(TextSelection selected) {
+		OdfFileDom styledom = null;
+		OdfOfficeMasterStyles masterpage = null;
+		OdfElement element = null;
+
+		if (selected != null) {
+			OdfElement containerElement = selected.getContainerElement();
+			int index = selected.getIndex();
+			OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+			String content = textProcessor.getText(containerElement);
+
+			int nextIndex = -1;
+			Pattern pattern = Pattern.compile(mPatternText);
+			Matcher matcher = pattern.matcher(content);
+			//start from the end index of the selected item
+			if (matcher.find(index + selected.getText().length())) {
+				// here just consider \n\r\t occupy one char
+				nextIndex = matcher.start();
+				int eIndex = matcher.end();
+				mCurrentText = content.substring(nextIndex, eIndex);
+			}
+			if (nextIndex != -1) {
+				TextSelection item = new TextSelection(mCurrentText, selected.getContainerElement(), nextIndex);
+				return item;
+			}
+		}
+		try {
+			styledom = mTextDocument.getStylesDom();
+			NodeList list = styledom.getElementsByTagName("office:master-styles");
+			if (styledom == null) {
+				return null;
+			}
+			if (list.getLength() > 0) {
+				masterpage = (OdfOfficeMasterStyles) list.item(0);
+			} else {
+				return null;
+			}
+
+			if (selected == null) {
+				element = (OdfElement) getNextMatchElementInTree(masterpage, masterpage);
+			} else {
+				element = (OdfElement) getNextMatchElementInTree(selected.getContainerElement(), masterpage);
+			}
+
+			if (element != null) {
+				TextSelection item = new TextSelection(mCurrentText, element, mCurrentIndex);
+				return item;
+			} else {
+				return null;
+			}
+
+		} catch (Exception ex) {
+			Logger.getLogger(TextNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		return null;
+	}
+
+	//found the next selection start from the 'selected' TextSelection
+	private TextSelection findnext(TextSelection selected) {
+		if (!mbFinishFindInHeaderFooter) {
+			TextSelection styleselected = findInHeaderFooter(selected);
+			if (styleselected != null) {
+				return styleselected;
+			}
+			selected = null;
+			mbFinishFindInHeaderFooter = true;
+		}
+
+		if (selected == null) {
+			OdfElement element = null;
+			try {
+				element = (OdfElement) getNextMatchElement((Node) mTextDocument.getContentRoot());
+			} catch (Exception ex) {
+				Logger.getLogger(TextNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+
+			}
+			if (element != null) {
+				return new TextSelection(mCurrentText, element, mCurrentIndex);
+			} else {
+				return null;
+			}
+		}
+
+		OdfElement containerElement = selected.getContainerElement();
+		int index = selected.getIndex();
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+		String content = textProcessor.getText(containerElement);
+
+		int nextIndex = -1;
+		Pattern pattern = Pattern.compile(mPatternText);
+		Matcher matcher = pattern.matcher(content);
+		//start from the end index of the selected item
+		if (matcher.find(index + selected.getText().length())) {
+			// here just consider \n\r\t occupy one char
+			nextIndex = matcher.start();
+			int eIndex = matcher.end();
+			mCurrentText = content.substring(nextIndex, eIndex);
+		}
+		if (nextIndex != -1) {
+			TextSelection item = new TextSelection(mCurrentText, selected.getContainerElement(), nextIndex);
+			return item;
+		} else {
+			OdfElement element = (OdfElement) getNextMatchElement((Node) containerElement);
+			if (element != null) {
+				TextSelection item = new TextSelection(mCurrentText, element, mCurrentIndex);
+				return item;
+			} else {
+				return null;
+			}
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.incubator.search.Navigation#getCurrentItem()
+	 */
+	@Override
+	public Selection getCurrentItem() {
+		Selection.SelectionManager.registerItem(mCurrentSelectedItem);
+		return mCurrentSelectedItem;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.odfdom.incubator.search.Navigation#hasNext()
+	 */
+	@Override
+	public boolean hasNext() {
+		mCurrentSelectedItem = findnext(mCurrentSelectedItem);
+		return (mCurrentSelectedItem != null);
+	}
+
+	/**
+	 * check if the text content of element match the specified pattern string
+	 * @param element	navigate this element
+	 * @return true if the text content of this element match this pattern; 
+	 * 		   false if not match
+	 */
+	@Override
+	public boolean match(Node element) {
+		if (element instanceof OdfElement) {
+			if (mMatchedElementName.indexOf(element.getNodeName()) != -1) {
+				OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+				String content = textProcessor.getText(element);
+
+				Pattern pattern = Pattern.compile(mPatternText);
+				Matcher matcher = pattern.matcher(content);
+				while (matcher.find()) {
+					// here just consider \n\r\t occupy one char
+					mCurrentIndex = matcher.start();
+					int eIndex = matcher.end();
+					mCurrentText = content.substring(mCurrentIndex, eIndex);
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextSelection.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextSelection.java
new file mode 100644
index 0000000..217c160
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextSelection.java
@@ -0,0 +1,883 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.net.URL;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfWhitespaceProcessor;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * A TextSelection can describe a sub element in a mParagraph element or a mHeading element.
+ * it is recognized by the container element(which type should be OdfTextParagraph or
+ *  OdfTextHeadingt), the start index of the text content of the container element and 
+ *  the text content of this selection.
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.navigation.TextSelection} in Simple API.
+ */
+public class TextSelection extends Selection {
+
+	private String mMatchedText;
+	private OdfTextParagraph mParagraph;
+	private OdfTextHeading mHeading;
+	private int mIndexInContainer;
+	private boolean mIsInserted;
+
+	/**
+	 * Constructor of TextSelection
+	 * @param text				the text content of this TextSelection
+	 * @param containerElement	the mParagraph element or mHeading element that contain this TextSelection
+	 * @param index				the start index of the text content of the container element
+	 * 
+	 */
+	TextSelection(String text, OdfElement containerElement, int index) {
+		mMatchedText = text;
+		if (containerElement instanceof OdfTextParagraph) {
+			mParagraph = (OdfTextParagraph) containerElement;
+		} else if (containerElement instanceof OdfTextHeading) {
+			mHeading = (OdfTextHeading) containerElement;
+		}
+		mIndexInContainer = index;
+	}
+
+	/**
+	 * Get the mParagraph element or mHeading element that contain this TextSelection
+	 * @return OdfElement	the container element
+	 */
+	@Override
+	public OdfElement getElement() {
+		return getContainerElement();
+	}
+
+	/**
+	 * Get the mParagraph element or mHeading element that contain this text
+	 * @return OdfElement
+	 */
+	public OdfElement getContainerElement() {
+		if (mParagraph != null) {
+			return mParagraph;
+		} else {
+			return mHeading;
+		}
+	}
+
+	/**
+	 * Get the start index of the text content of its container element
+	 * @return index	the start index of the text content of its container element
+	 */
+	@Override
+	public int getIndex() {
+		return mIndexInContainer;
+	}
+
+	/**
+	 * Get the text content of this TextSelection 
+	 * @return text	the text content
+	 */
+	public String getText() {
+		return mMatchedText;
+	}
+
+	/*
+	 * Validate if the selection is still available.
+	 * @return true	if the selection is available; false if the selection is not available.
+	 */
+	private boolean validate() {
+		if (getContainerElement() == null) {
+			return false;
+		}
+		OdfElement container = getContainerElement();
+		if (container == null) {
+			return false;
+		}
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+		String content = textProcessor.getText(container);
+		if (content.indexOf(mMatchedText, mIndexInContainer) == mIndexInContainer) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Delete the selection from the document
+	 * the other matched selection in the same container element will be updated automatically
+	 * because the start index of the following selections will be changed when the previous 
+	 * selection has been deleted 
+	 * @throws InvalidNavigationException if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement container = getContainerElement();
+		delete(mIndexInContainer, mMatchedText.length(), container);
+		SelectionManager.refreshAfterCut(this);
+		mMatchedText = "";
+	}
+
+	/**
+	 * Apply a style to the selection so that the text style of this selection 
+	 * will append the specified style
+	 * @param style	the style can be from the current document or user defined
+	 * @throws InvalidNavigationException if the selection is unavailable.
+	 */
+	public void applyStyle(OdfStyleBase style) throws InvalidNavigationException {
+		//append the specified style to the selection
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement parentElement = getContainerElement();
+
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+
+		appendStyle(index, leftLength, parentElement, style);
+
+	}
+
+	/*
+	 * append specified style for a range text of pNode
+	 * from 'fromindex' and cover 'leftLength'
+	 */
+	private void appendStyle(int fromindex, int leftLength, Node pNode, OdfStyleBase style) {
+		if ((fromindex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+
+		while (node != null) {
+			if ((fromindex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				if (node.getLocalName().equals("s")) // text:s
+				{
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = textProcessor.getText((OdfElement) node).length();
+				}
+
+			}
+			if (nodeLength <= fromindex) {
+				fromindex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					node.setNodeValue(value.substring(0, fromindex));
+					int endLength = fromindex + leftLength;
+					int nextLength = value.length() - endLength;
+
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					// init text:a
+					OdfTextSpan textSpan = new OdfTextSpan(
+							(OdfFileDom) node.getOwnerDocument());
+					Node newNode = null;
+					if (nextLength >= 0) {
+						textSpan.setTextContent(value.substring(fromindex,
+								endLength));
+						newNode = node.cloneNode(true);
+						newNode.setNodeValue(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						textSpan.setTextContent(value.substring(fromindex,
+								value.length()));
+						leftLength = endLength - value.length();
+					}
+					textSpan.setProperties(style.getStyleProperties());
+
+					if (nextNode != null) {
+						parNode.insertBefore(textSpan, nextNode);
+						if (newNode != null) {
+							parNode.insertBefore(newNode, nextNode);
+						}
+					} else {
+						parNode.appendChild(textSpan);
+						if (newNode != null) {
+							parNode.appendChild(newNode);
+						}
+					}
+					fromindex = 0;
+					if (nextNode != null) {
+						node = nextNode;
+					} else {
+						node = textSpan;
+					}
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					if (node.getLocalName().equals("s")) // text:s
+					{
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(
+								nodeLength - fromindex));
+						leftLength = leftLength - (nodeLength - fromindex);
+						fromindex = 0;
+
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromindex = 0;
+						leftLength--;
+					} else {
+						appendStyle(fromindex, leftLength, node, style);
+						int length = (fromindex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromindex = 0;
+					}
+
+				}
+
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/**
+	 * Replace the text content of selection with a new string
+	 * 
+	 * @param newText	the replace text String
+	 * @throws InvalidNavigationException if the selection is unavailable.
+	 */
+	public void replaceWith(String newText) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+
+		OdfElement parentElement = getContainerElement();
+
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+		delete(index, leftLength, parentElement);
+		OdfTextSpan textSpan = new OdfTextSpan((OdfFileDom) parentElement.getOwnerDocument());
+		textSpan.addContentWhitespace(newText);
+		/*if (startElement instanceof OdfStyleBase)
+		textSpan.setProperties(((OdfStyleBase) startElement)
+		.getStyleProperties());*/
+		mIsInserted = false;
+		insertSpan(textSpan, index, parentElement);
+		// optimize the parent element
+		optimize(parentElement);
+		int offset = newText.length() - leftLength;
+		SelectionManager.refresh(this.getContainerElement(), offset, index + getText().length());
+		mMatchedText = newText;
+	}
+
+	/**
+	 * Paste this selection just before a specific selection.
+	 * @param positionItem	a selection that is used to point out the position
+	 * @throws InvalidNavigationException if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		int indexOfNew = 0;
+		OdfElement newElement = positionItem.getElement();
+		if (positionItem instanceof TextSelection) {
+			indexOfNew = ((TextSelection) positionItem).getIndex();
+			newElement = ((TextSelection) positionItem).getContainerElement();
+		}
+
+		OdfTextSpan textSpan = getSpan((OdfFileDom) positionItem.getElement().getOwnerDocument());
+		mIsInserted = false;
+		insertSpan(textSpan, indexOfNew, newElement);
+		adjustStyle(newElement, textSpan, null);
+		SelectionManager.refreshAfterPasteAtFrontOf(this, positionItem);
+	}
+
+	/**
+	 * Paste this selection just after a specific selection.
+	 * @param positionItem	a selection that is used to point out the position
+	 * @throws InvalidNavigationException if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		int indexOfNew = 0;//TODO: think about and test if searchitem is a element selection
+		OdfElement newElement = positionItem.getElement();
+		if (positionItem instanceof TextSelection) {
+			indexOfNew = ((TextSelection) positionItem).getIndex() + ((TextSelection) positionItem).getText().length();
+			newElement = ((TextSelection) positionItem).getContainerElement();
+		}
+
+		OdfTextSpan textSpan = getSpan((OdfFileDom) positionItem.getElement().getOwnerDocument());
+
+		mIsInserted = false;
+		insertSpan(textSpan, indexOfNew, newElement);
+		adjustStyle(newElement, textSpan, null);
+		SelectionManager.refreshAfterPasteAtEndOf(this, positionItem);
+	}
+
+	/**
+	 * Add a hypertext reference to the selection
+	 * 
+	 * @param url	the url of the hypertext reference
+	 * @throws InvalidNavigationException if the selection is unavailable.
+	 */
+	public void addHref(URL url) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement parentElement = getContainerElement();
+
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+
+		addHref(index, leftLength, parentElement, url.toString());
+	}
+
+	/*
+	 * add href for a range text of pNode from the 'fromindex' text, and the href will cover
+	 * 'leftLength' text
+	 * 
+	 */
+	private void addHref(int fromindex, int leftLength, Node pNode, String href) {
+		if ((fromindex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+
+		while (node != null) {
+			if ((fromindex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				if (node.getLocalName().equals("s")) // text:s
+				{
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = textProcessor.getText((OdfElement) node).length();
+				}
+
+			}
+			if (nodeLength <= fromindex) {
+				fromindex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					node.setNodeValue(value.substring(0, fromindex));
+					int endLength = fromindex + leftLength;
+					int nextLength = value.length() - endLength;
+
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					// init text:a
+					TextAElement textLink = new TextAElement(
+							(OdfFileDom) node.getOwnerDocument());
+					Node newNode = null;
+					if (nextLength >= 0) {
+						textLink.setTextContent(value.substring(fromindex,
+								endLength));
+						newNode = node.cloneNode(true);
+						newNode.setNodeValue(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						textLink.setTextContent(value.substring(fromindex,
+								value.length()));
+						leftLength = endLength - value.length();
+					}
+					textLink.setXlinkTypeAttribute("simple");
+					textLink.setXlinkHrefAttribute(href);
+
+					if (nextNode != null) {
+						parNode.insertBefore(textLink, nextNode);
+						if (newNode != null) {
+							parNode.insertBefore(newNode, nextNode);
+						}
+					} else {
+						parNode.appendChild(textLink);
+						if (newNode != null) {
+							parNode.appendChild(newNode);
+						}
+					}
+					fromindex = 0;
+					if (nextNode != null) {
+						node = nextNode;
+					} else {
+						node = textLink;
+					}
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					if (node.getLocalName().equals("s")) // text:s
+					{
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(
+								nodeLength - fromindex));
+						leftLength = leftLength - (nodeLength - fromindex);
+						fromindex = 0;
+
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromindex = 0;
+						leftLength--;
+					} else {
+						addHref(fromindex, leftLength, node, href);
+						int length = (fromindex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromindex = 0;
+					}
+
+				}
+
+			}
+			node = node.getNextSibling();
+		}
+	}
+	/*
+	 * delete the pNode from the fromindex text, and delete leftLength text
+	 */
+
+	private void delete(int fromindex, int leftLength, Node pNode) {
+		if ((fromindex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+
+		while (node != null) {
+			if ((fromindex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				if (node.getLocalName().equals("s")) // text:s
+				{
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = textProcessor.getText((OdfElement) node).length();
+				}
+
+			}
+			if (nodeLength <= fromindex) {
+				fromindex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromindex));
+					int endLength = fromindex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromindex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					if (node.getLocalName().equals("s")) // text:s
+					{
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(
+								nodeLength - fromindex));
+						leftLength = leftLength - (nodeLength - fromindex);
+						fromindex = 0;
+
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromindex = 0;
+						leftLength--;
+					} else {
+						delete(fromindex, leftLength, node);
+						int length = (fromindex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromindex = 0;
+					}
+
+				}
+
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	@Override
+	protected void refreshAfterFrontalDelete(Selection deleteItem) {
+		if (deleteItem instanceof TextSelection) {
+			mIndexInContainer -= ((TextSelection) deleteItem).getText().length();
+		}
+	}
+
+	@Override
+	protected void refreshAfterFrontalInsert(Selection pasteItem) {
+		if (pasteItem instanceof TextSelection) {
+			mIndexInContainer += ((TextSelection) pasteItem).getText().length();
+		}
+	}
+
+	@Override
+	protected void refresh(int offset) {
+		mIndexInContainer += offset;
+	}
+
+	/**
+	 * return a String Object representing this selection value
+	 * the text content of the selection, start index in the container element and the
+	 * text content of the container element will be provided
+	 * @return a String representation of the value of this TextSelection
+	 */
+	@Override
+	public String toString() {
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+
+		return "[" + mMatchedText + "] started from " + mIndexInContainer + " in paragraph:" + textProcessor.getText(getContainerElement());
+	}
+
+	// return a new span that cover this selection
+	// and keep the original style of this selection
+	private OdfTextSpan getSpan(OdfFileDom ownerDoc) {
+		OdfElement parentElement = getContainerElement();
+
+		if (parentElement != null) {
+			Node copyParentNode = parentElement.cloneNode(true);
+			if (ownerDoc != parentElement.getOwnerDocument()) {
+				copyParentNode = ownerDoc.adoptNode(copyParentNode);
+			}
+			OdfTextSpan textSpan = new OdfTextSpan(ownerDoc);
+			int sIndex = mIndexInContainer;
+			int eIndex = sIndex + mMatchedText.length();
+			// delete the content except the selection string
+			// delete from the end to start, so that the postion will not be
+			// impact by delete action
+			OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+			delete(eIndex, textProcessor.getText(copyParentNode).length() - eIndex, copyParentNode);
+			delete(0, sIndex, copyParentNode);
+			optimize(copyParentNode);
+			Node childNode = copyParentNode.getFirstChild();
+			while (childNode != null) {
+				textSpan.appendChild(childNode.cloneNode(true));
+				childNode = childNode.getNextSibling();
+			}
+			// apply text style for the textSpan
+			if (copyParentNode instanceof OdfStylableElement) {
+				applyTextStyleProperties(getTextStylePropertiesDeep((OdfStylableElement) copyParentNode),
+						textSpan);
+			}
+			return textSpan;
+		}
+		return null;
+	}
+
+	/*
+	 * optimize the text element by deleting the empty text node
+	 * 
+	 * @param element
+	 */
+	private void optimize(Node pNode) {
+		// check if the text:a can be optimized
+		OdfWhitespaceProcessor textProcess = new OdfWhitespaceProcessor();
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			Node nextNode = node.getNextSibling();
+			//if ((node.getNodeType() == Node.ELEMENT_NODE) && (node.getPrefix().equals("text"))) {
+			if (node instanceof OdfTextSpan) {
+				if (textProcess.getText(node).length() == 0) {
+					node.getParentNode().removeChild(node);
+				} else {
+					optimize(node);
+				}
+			}
+			node = nextNode;
+		}
+	}
+	
+	/*
+	 * apply the styleMap to the toElement
+	 * reserve the style property of toElement if it is also exist in styleMap
+	 */
+
+	private void applyTextStyleProperties(Map<OdfStyleProperty, String> styleMap,
+			OdfStylableElement toElement) {
+		if (styleMap != null) {
+			//preserve the style property of toElement if it is also exist in styleMap
+			OdfStyle resultStyleElement = toElement.getAutomaticStyles().newStyle(
+					OdfStyleFamily.Text);
+
+			for (Map.Entry<OdfStyleProperty, String> entry : styleMap.entrySet()) {
+				if (toElement.hasProperty(entry.getKey())) {
+					resultStyleElement.setProperty(entry.getKey(), toElement.getProperty(entry.getKey()));
+				} else {
+					resultStyleElement.setProperty(entry.getKey(), entry.getValue());
+				}
+			}
+			toElement.setStyleName(resultStyleElement.getStyleNameAttribute());
+		}
+	}
+
+	/*
+	 * insert textSpan into the from index of pNode
+	 */
+	private void insertSpan(OdfTextSpan textSpan, int fromindex, Node pNode) {
+		if (fromindex < 0) {
+			fromindex = 0;
+		}
+		if (fromindex == 0 && mIsInserted) {
+			return;
+		}
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if (fromindex <= 0 && mIsInserted) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+				if ((fromindex != 0) && (nodeLength < fromindex)) {
+					fromindex -= nodeLength;
+				} else {
+					// insert result after node, and insert an new text node
+					// after
+					// the result node
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromindex));
+					// insert the text span in appropriate position
+					node.setNodeValue(buffer.toString());
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+
+					Node newNode = node.cloneNode(true);
+					newNode.setNodeValue(value.substring(fromindex, value.length()));
+					if (nextNode != null) {
+						parNode.insertBefore(textSpan, nextNode);
+						parNode.insertBefore(newNode, nextNode);
+					} else {
+						parNode.appendChild(textSpan);
+						parNode.appendChild(newNode);
+					}
+					mIsInserted = true;
+					return;
+				}
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				if (node.getLocalName().equals("s")) // text:s
+				{
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+					fromindex -= nodeLength;
+
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+					fromindex--;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+					fromindex--;
+				} else {
+					nodeLength = textProcessor.getText(node).length();
+					insertSpan(textSpan, fromindex, node);
+					fromindex -= nodeLength;
+				}
+
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*
+	 * the textSpan must be the child element of parentNode
+	 * this method is used to keep the style of text span when it has been insert into the parentNode
+	 * if we don't deal with the style, the inserted span will also have the style of parentNode
+	 * 
+	 */
+	private void adjustStyle(Node parentNode, OdfTextSpan textSpan, Map<OdfStyleProperty, String> styleMap) {
+		if (parentNode instanceof OdfStylableElement) {
+			OdfStylableElement pStyleNode = (OdfStylableElement) parentNode;
+			if (styleMap == null) {
+				styleMap = getTextStylePropertiesDeep(pStyleNode);
+			}
+			Node node = parentNode.getFirstChild();
+			while (node != null) {
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					if (node.getTextContent().length() > 0) {
+						Node nextNode = node.getNextSibling();
+						OdfTextSpan span = new OdfTextSpan((OdfFileDom) node.getOwnerDocument());
+						span.appendChild(node);
+						if (nextNode != null) {
+							parentNode.insertBefore(span, nextNode);
+						} else {
+							parentNode.appendChild(span);
+						}
+						node = span;
+						applyTextStyleProperties(styleMap, (OdfStylableElement) node);
+					}
+				} else if ((node instanceof OdfStylableElement)) {
+					if (!node.equals(textSpan)) {
+						Map<OdfStyleProperty, String> styles = getTextStylePropertiesDeep(pStyleNode);
+						Map<OdfStyleProperty, String> styles1 = getTextStylePropertiesDeep((OdfStylableElement) node);
+						if (styles == null) {
+							styles = styles1;
+						} else if (styles1 != null) {
+							styles.putAll(styles1);
+						}
+						int comp = node.compareDocumentPosition(textSpan);
+						//if node contains textSpan, then recurse the node
+						if ((comp & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {
+							adjustStyle(node, textSpan, styles);
+						} else {
+							applyTextStyleProperties(styles, (OdfStylableElement) node);
+						}
+					}
+
+				}
+				node = node.getNextSibling();
+			}
+			//change the parentNode to default style
+			//here we don't know the default style name, so here just
+			//remove the text:style-name attribute
+			pStyleNode.removeAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "style-name");
+		}
+	}
+
+	/*
+	 * get a map containing text properties of the specified styleable element.
+	 * @return  a map of text properties.
+	 */
+	private Map<OdfStyleProperty, String> getTextStyleProperties(OdfStylableElement element) {
+		String styleName = element.getStyleName();
+		OdfStyleBase styleElement = element.getAutomaticStyles().getStyle(
+				styleName, element.getStyleFamily());
+
+		if (styleElement == null) {
+			styleElement = element.getDocumentStyle();
+		}
+		if (styleElement != null) {
+			//check if it is the style:defaut-style
+			if ((styleElement.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties) == null) &&
+					(styleElement.getPropertiesElement(OdfStylePropertiesSet.TextProperties) == null)) {
+				styleElement = ((OdfDocument) ((OdfFileDom) styleElement.getOwnerDocument()).getDocument()).getDocumentStyles().getDefaultStyle(styleElement.getFamily());
+			}
+			TreeMap<OdfStyleProperty, String> result = new TreeMap<OdfStyleProperty, String>();
+			OdfStyleFamily family = OdfStyleFamily.Text;
+			if (family != null) {
+				for (OdfStyleProperty property : family.getProperties()) {
+					if (styleElement.hasProperty(property)) {
+						result.put(property, styleElement.getProperty(property));
+					}
+				}
+			}
+			return result;
+		}
+		return null;
+	}
+
+	/*
+	 * get a map containing text properties of the specified styleable element.
+	 * The map will also include any properties set by parent styles
+	 * @return  a map of text properties.
+	 *
+	 */
+	private Map<OdfStyleProperty, String> getTextStylePropertiesDeep(OdfStylableElement element) {
+		String styleName = element.getStyleName();
+		OdfStyleBase styleElement = element.getAutomaticStyles().getStyle(
+				styleName, element.getStyleFamily());
+
+		if (styleElement == null) {
+			styleElement = element.getDocumentStyle();
+		}
+		TreeMap<OdfStyleProperty, String> result = new TreeMap<OdfStyleProperty, String>();
+		while (styleElement != null) {
+			//check if it is the style:defaut-style
+			if ((styleElement.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties) == null) &&
+					(styleElement.getPropertiesElement(OdfStylePropertiesSet.TextProperties) == null)) {
+				styleElement = ((OdfDocument) ((OdfFileDom) styleElement.getOwnerDocument()).getDocument()).getDocumentStyles().getDefaultStyle(styleElement.getFamily());
+			}
+			OdfStyleFamily family = OdfStyleFamily.Text;
+			if (family != null) {
+				for (OdfStyleProperty property : family.getProperties()) {
+					if (styleElement.hasProperty(property)) {
+						result.put(property, styleElement.getProperty(property));
+					}
+				}
+			}
+			styleElement = styleElement.getParentStyle();
+
+		}
+		return result;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextStyleNavigation.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextStyleNavigation.java
new file mode 100644
index 0000000..f875e32
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/incubator/search/TextStyleNavigation.java
@@ -0,0 +1,305 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * A derived Navigation class used for navigate the mText content it is used to
+ * search the document and find the matched style properties and would return
+ * TextSelection instance
+ * 
+ * @deprecated As of release 0.8.8, replaced by {@link org.odftoolkit.simple.common.navigation.TextStyleNavigation} in Simple API.
+ */
+public class TextStyleNavigation extends Navigation {
+
+	private OdfTextDocument mTextDocument;
+	private TextSelection mCurrentSelectedItem;
+	private int mCurrentIndex;
+	private Map<OdfStyleProperty, String> mProps;
+	private String mText;
+	private Node mPhNode;
+	private int mIndex;
+	private Node mNode;
+
+	/**
+	 * Construct TextStyleNavigation with style properties condition and navigation scope
+	 * @param props	the matched style properties conditions
+	 * @param doc	the navigation search scope
+	 */
+	public TextStyleNavigation(Map<OdfStyleProperty, String> props, OdfTextDocument doc) {
+		mTextDocument = doc;
+		mCurrentSelectedItem = null;
+		this.mProps = props;
+	}
+
+	/*
+	 * Find next TextSelection which match specified style
+	 */
+	private TextSelection findnext(TextSelection selected) {
+		OdfElement element = null;
+		if (selected == null) {
+
+			try {
+				mNode = getNextMatchElement((Node) mTextDocument.getContentRoot());
+			} catch (Exception ex) {
+				Logger.getLogger(TextStyleNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+			}
+		} else {
+			try {
+				mNode = getNextMatchElement(mNode);
+			} catch (Exception ex) {
+				Logger.getLogger(TextStyleNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+			}
+		}
+		if (mNode != null) {
+			element = (OdfElement) getPHElement(mNode);
+			TextSelection item = new TextSelection(mText, element, mCurrentIndex);
+			return item;
+		}
+		return null;
+	}
+
+	private Node getPHElement(Node node) {
+
+		//get paragraph or heading element
+		if (node instanceof OdfTextParagraph) {
+			mPhNode = node;
+		} else if (node instanceof OdfTextHeading) {
+			mPhNode = node;
+		} else {
+			getPHElement(node.getParentNode());
+		}
+		return mPhNode;
+	}
+
+	/* (non-Javadoc)
+	 * get current TextSelection
+	 * @see org.odftoolkit.odfdom.incubator.search.Navigation#getCurrentItem()
+	 */
+	@Override
+	public Selection getCurrentItem() {
+		Selection.SelectionManager.registerItem(mCurrentSelectedItem);
+		return mCurrentSelectedItem;
+	}
+
+	/* (non-Javadoc)
+	 * check if has next TextSelection with satisfied style
+	 * @see org.odftoolkit.odfdom.incubator.search.Navigation#hasNext()
+	 */
+	@Override
+	public boolean hasNext() {
+		mCurrentSelectedItem = findnext(mCurrentSelectedItem);
+		return (mCurrentSelectedItem != null);
+	}
+
+	/**
+	 * check if the element has the specified style properties
+	 * @param element	navigate this element
+	 * @return true if this element has the specified style properties
+	 * 		   false if not match
+	 */
+	@Override
+	public boolean match(Node element) {
+		boolean match = false;
+		if (element.getNodeType() == Node.TEXT_NODE && !element.getNodeValue().trim().equals("")) {
+			if (element.getParentNode() instanceof OdfStylableElement) {
+				OdfStylableElement parStyleElement = (OdfStylableElement) element.getParentNode();
+
+				String parStyleName = getStyleName(parStyleElement);
+
+				if (getMatchStyleNames().contains(parStyleName)) {
+					match = true;
+					mText = element.getNodeValue();
+					NodeList nodes = getPHElement(element.getParentNode()).getChildNodes();
+					mIndex = 0;
+					getIndex(nodes, element);
+				}
+			}
+		}
+		return match;
+	}
+
+	private void getIndex(NodeList nodes, Node element) {
+		for (int i = 0; i < nodes.getLength(); i++) {
+			Node node = nodes.item(i);
+			if (node == element) {
+				mCurrentIndex = mIndex;
+				break;
+			} else {
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					mIndex = mIndex + node.getNodeValue().length();
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					if (node.getLocalName().equals("s")) // mText:s
+					{
+						try {
+							mIndex = mIndex + Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "c"));
+						} catch (Exception e) {
+							mIndex++;
+						}
+
+					} else if (node.getLocalName().equals("line-break")) {
+						mIndex++;
+					} else if (node.getLocalName().equals("tab")) {
+						mIndex++;
+					} else {
+						getIndex(node.getChildNodes(), element);
+					}
+				}
+			}
+		}
+	}
+
+	private String getStyleName(OdfStylableElement element) {
+		String stylename = element.getStyleName();
+		if (stylename == null) {
+			if (element.getParentNode() instanceof OdfStylableElement) {
+				getStyleName((OdfStylableElement) element.getParentNode());
+			} else {
+				stylename = "defaultstyle";
+			}
+		}
+		return stylename;
+	}
+
+	private Set<String> getMatchStyleNames() {
+		Set<String> styleNames = new HashSet<String>();
+		String sname;
+		HashMap<String, OdfDefaultStyle> defaultStyles = new HashMap<String, OdfDefaultStyle>();
+		try {
+
+			NodeList defStyleList = mTextDocument.getDocumentStyles().getElementsByTagName("style:default-style");
+			for (int i = 0; i < defStyleList.getLength(); i++) {
+				OdfDefaultStyle defStyle = (OdfDefaultStyle) defStyleList.item(i);
+				defaultStyles.put(defStyle.getFamilyName(), defStyle);
+			}
+
+			NodeList styleList = mTextDocument.getDocumentStyles().getElementsByTagName("style:style");
+			for (int i = 0; i < styleList.getLength(); i++) {
+				OdfStyle sStyle = (OdfStyle) styleList.item(i);
+				//get default properties and style properties
+				Map<OdfStyleProperty, String> map = sStyle.getStylePropertiesDeep();
+				//check if properties include all search properties and value equal
+				Iterator<OdfStyleProperty> pIter = mProps.keySet().iterator();
+				boolean isStyle = false;
+				while (pIter.hasNext()) {
+					isStyle = false;
+					OdfStyleProperty p = pIter.next();
+					if (map.containsKey(p)) {
+						if (map.get(p).equals(mProps.get(p))) {
+							isStyle = true;
+						} else {
+							break;
+						}
+					} else {
+						break;
+					}
+				}
+				//put all match style names
+				if (isStyle) {
+					sname = sStyle.getStyleNameAttribute();
+					//if(sname.contains("default"))sname="defaultstyle";
+					styleNames.add(sname);
+				}
+			}
+			//get all automatic styles
+			Iterator<OdfStyle> cStyles = mTextDocument.getContentDom().getAutomaticStyles().getAllStyles().iterator();
+			while (cStyles.hasNext()) {
+				OdfStyle cStyle = cStyles.next();
+				//get default properties and style properties
+				Map<OdfStyleProperty, String> map = cStyle.getStylePropertiesDeep();
+
+				if (cStyle.getParentStyle() == null) {
+					if (cStyle.getFamilyName().equals("text")) {
+						if (defaultStyles.containsKey("text")) {
+							getTextDefaultProperties("text", defaultStyles, map);
+						} else {
+							getTextDefaultProperties("paragraph", defaultStyles, map);
+						}
+					}
+				}
+
+				//check if the search properties is in properties
+				Iterator<OdfStyleProperty> pIter = mProps.keySet().iterator();
+				boolean isStyle = false;
+				while (pIter.hasNext()) {
+					isStyle = false;
+					OdfStyleProperty p = pIter.next();
+					if (map.containsKey(p)) {
+						if (map.get(p).equals(mProps.get(p))) {
+							isStyle = true;
+						} else {
+							break;
+						}
+					} else {
+						break;
+					}
+				}
+				//put all match style names
+				if (isStyle) {
+					styleNames.add(cStyle.getStyleNameAttribute());
+				}
+			}
+
+		} catch (Exception e1) {
+			Logger.getLogger(TextStyleNavigation.class.getName()).log(Level.SEVERE, e1.getMessage(), e1);
+		}
+		return styleNames;
+	}
+
+	private void getTextDefaultProperties(
+			String familyName,
+			HashMap<String, OdfDefaultStyle> defaultStyles,
+			Map<OdfStyleProperty, String> map) {
+		OdfDefaultStyle defStyle = defaultStyles.get(familyName);
+		if (defStyle != null) {
+			OdfStyleFamily family = defStyle.getFamily();
+			if (family != null) {
+				for (OdfStyleProperty property : family.getProperties()) {
+					if (!map.containsKey(property) && defStyle.hasProperty(property)) {
+						map.put(property, defStyle.getProperty(property));
+					}
+				}
+			}
+		}
+
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/DefaultErrorHandler.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/DefaultErrorHandler.java
new file mode 100644
index 0000000..58f2055
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/DefaultErrorHandler.java
@@ -0,0 +1,52 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.logging.Logger;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+
+/** Default implementation of the SAX <code>ErrorHandler</code> interface. */
+class DefaultErrorHandler implements ErrorHandler {
+	private static final Logger LOG = Logger.getLogger(DefaultErrorHandler.class.getName());
+
+	/** Triggers an warning. In case an optional ODF conformance was not satisfied.
+	 *  Default handling is to write into Java log using warning level */
+	public void warning(SAXParseException exception) throws SAXException {		
+		LOG.warning(exception.getLocalizedMessage());
+	}
+
+	/** Triggers an error. In case a mandatory ODF conformance was not satisfied.
+	*  Default handling is to write into Java log using severe level */
+	public void error(SAXParseException exception) throws SAXException {		
+		LOG.severe(exception.getLocalizedMessage());
+	}
+	
+	/** Triggers a fatalError. The ODF document can not be loaded due to an error.	 *
+	 *   Default handling is to write into Java log using severe level and to throw a SAXException */
+	public void fatalError(SAXParseException exception) throws SAXException {		
+		LOG.severe(exception.getLocalizedMessage());
+		throw exception;
+	}	
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ElementVisitor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ElementVisitor.java
new file mode 100644
index 0000000..c8e4617
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ElementVisitor.java
@@ -0,0 +1,37 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+/**
+ * 
+ * An interface to visit every odf element, according to Visitor design pattern
+ *
+ */
+public interface ElementVisitor {
+
+	/**
+	 * Visit odf element and process some operations
+	 * 
+	 * @param element ODF element
+	 */
+	public void visit(OdfElement element);
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/MediaType.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/MediaType.java
new file mode 100644
index 0000000..5713639
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/MediaType.java
@@ -0,0 +1,40 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+/**
+ *
+ * MediaType represens the mediatype or MIMETYPE of the file/document.
+ *
+ */
+public interface MediaType {
+
+		/**
+		 * @return the mediatype String of this document
+		 */
+		public String getMediaTypeString();
+
+		/**
+		 * @return the filesuffix of this document
+		 */
+		public String getSuffix();
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/NamespaceName.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/NamespaceName.java
new file mode 100644
index 0000000..35f2e48
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/NamespaceName.java
@@ -0,0 +1,41 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.ed.
+ *
+ * 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.pkg;
+
+/**
+ * The NamespaceName interface is being used to provide an easy way to define Namespaces
+ * in a higher layer (e.g. via enum as OdfDocumentNamespace) and access them from a lower layer e.g. constructors of org.odftoolkit.odfdom.pkg.OdfNamespace.
+ */
+public interface NamespaceName {
+
+	/**
+	 * @return the prefix currently related to XML Namespace.
+	 * Note: Even in a single XML file, a user might assign different prefixes to a XML Namespace, different NamespaceNames might exist.
+	 */
+	public String getPrefix();
+
+	/**
+	 * @return the URI identifiying the XML Namespace.
+	 */
+	public String getUri();
+
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAlienAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAlienAttribute.java
new file mode 100644
index 0000000..99e71d2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAlienAttribute.java
@@ -0,0 +1,65 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.DOMException;
+
+/**
+ * Any attribute within the ODF package that is listed in the ODF schema.
+ * Note: Existence does not imply invalid ODF, as even namespace attributes are not
+ * listed and mapped to an OdfAlienAttribute.
+ */
+public class OdfAlienAttribute extends OdfAttribute {
+
+	private static final long serialVersionUID = 4210521398191729448L;
+
+	/**
+	 * Creates an alien attribute on the XML file
+	 *
+	 * @param ownerDocument the DOM of the XML file within the ODF package
+	 * @param name of the XML attribute to be created
+	 * @throws DOMException thrown for any problem during attribute creation
+	 */
+
+	public OdfAlienAttribute(OdfFileDom ownerDocument,
+            OdfName name) throws DOMException {
+        super(ownerDocument, name.getUri(), name.getQName());
+        ATTRIBUTE_NAME = name;
+    }
+    public final OdfName ATTRIBUTE_NAME;
+
+    @Override
+	public OdfName getOdfName() {
+        return ATTRIBUTE_NAME;
+    }
+
+	@Override
+	public String getDefault() {
+		return null;
+	}
+
+	@Override
+	public boolean hasDefault() {
+		return false;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAlienElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAlienElement.java
new file mode 100644
index 0000000..3f2b5ef
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAlienElement.java
@@ -0,0 +1,45 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.DOMException;
+
+/**
+ * Any element within the ODF package that is listed in the ODF schema.
+ */
+public class OdfAlienElement extends OdfElement {
+
+	private static final long serialVersionUID = 6693153432396354134L;
+
+	public OdfAlienElement(OdfFileDom ownerDocument,
+            OdfName name) throws DOMException {
+        super(ownerDocument, name.getUri(), name.getQName());
+        ELEMENT_NAME = name;
+    }
+    public final OdfName ELEMENT_NAME;
+
+    @Override
+	public OdfName getOdfName() {
+        return ELEMENT_NAME;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAttribute.java
new file mode 100644
index 0000000..c88444e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfAttribute.java
@@ -0,0 +1,75 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import org.apache.xerces.dom.AttrNSImpl;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.DOMException;
+
+/**
+ * Base class for all attributes of the OpenDocument format
+ */
+abstract public class OdfAttribute extends AttrNSImpl {
+
+   /**
+    * Returns the attribute name.
+    *
+    * @return the <code>OdfName</code> for the attribute.
+    */
+   abstract public OdfName getOdfName();
+
+   /** Creates a new instance of OdfAttribute
+    * @param ownerDocument - the document the attribute belongs to
+    * @param namespaceURI - The namespace URI of the attribute to create. When it is null or an empty string, this method behaves like createAttribute.
+    * @param qualifiedName - The qualified name of the attribute to instantiate.
+    * @throws DOMException - if the attribute could not be created
+    */
+   public OdfAttribute(OdfFileDom ownerDocument,
+           String namespaceURI,
+           String qualifiedName) throws DOMException {
+       super(ownerDocument, namespaceURI, qualifiedName);
+   }
+
+   /** Creates a new instance of OdfAttribute
+    * @param ownerDocument - the document the attribute belongs to
+    * @param name - the <code>OdfName</code> representation of the attribute name.
+    * @throws DOMException - if the attribute could not be created
+    */
+   public OdfAttribute(OdfFileDom ownerDocument,
+           OdfName name) throws DOMException {
+       super(ownerDocument, name.getUri(), name.getQName());
+   }
+   
+   /**
+	 * Returns the default value of {@odf.attribute table:number-columns-repeated}.
+	 * 
+	 * @return the default value as String
+	 */
+	abstract public String getDefault();
+
+	/**
+	 * Default value indicator
+	 * 
+	 * @return true if a default exists
+	 */
+	abstract public boolean hasDefault();
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfContainerElementBase.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfContainerElementBase.java
new file mode 100644
index 0000000..8c2f585
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfContainerElementBase.java
@@ -0,0 +1,102 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+//ToDo: Move into tooling package?
+package org.odftoolkit.odfdom.pkg;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+
+/**
+ * Overwriting the DOM methods for element access, whenever a new ODF element was added triggering
+ * <code>onOdfNodeInserted</code> and when removed a <code>onOdfNodeRemoved.</code>.
+ * Yet not overriding all DOM access methods, esp. not the access on key attributes, eg. @style-name.
+ */
+abstract public class OdfContainerElementBase extends OdfElement {
+
+	private static final long serialVersionUID = 6944696143015713668L;
+	// moved to this class as only used for style handling
+	protected OdfPackageDocument mPackageDocument;
+
+	/** Creates a new instance of OdfElement */
+	public OdfContainerElementBase(OdfFileDom ownerDocument,
+			String namespaceURI,
+			String qualifiedName) throws DOMException {
+		super(ownerDocument, namespaceURI, qualifiedName);
+		if (ownerDocument instanceof OdfContentDom) {
+			ownerDocument = (OdfContentDom) ownerDocument;
+		} else if (ownerDocument instanceof OdfStylesDom) {
+			ownerDocument = (OdfStylesDom) ownerDocument;
+		}
+		mPackageDocument = ownerDocument.getDocument();
+	}
+
+	/** Creates a new instance of OdfElement */
+	public OdfContainerElementBase(OdfFileDom ownerDocument,
+			OdfName aName) throws DOMException {
+		super(ownerDocument, aName.getUri(), aName.getQName());
+	}
+
+	/** override this method to get notified about element insertion
+	 */
+	protected void onOdfNodeInserted(OdfElement node, Node refChild) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	/** override this method to get notified about element insertion
+	 */
+	protected void onOdfNodeRemoved(OdfElement node) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	@Override
+	public Node insertBefore(Node newChild, Node refChild) throws DOMException {
+		Node ret = super.insertBefore(newChild, refChild);
+		if (newChild instanceof OdfElement) {
+			onOdfNodeInserted((OdfElement) newChild, refChild);
+		}
+		return ret;
+	}
+
+	@Override
+	public Node removeChild(Node oldChild) throws DOMException {
+		Node ret = super.removeChild(oldChild);
+		if (oldChild instanceof OdfElement) {
+			onOdfNodeRemoved((OdfElement) oldChild);
+		}
+		return ret;
+	}
+
+	@Override
+	public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
+		Node ret = super.replaceChild(newChild, oldChild);
+
+		if (newChild instanceof OdfElement) {
+			onOdfNodeInserted((OdfElement) newChild, oldChild);
+		}
+		if (oldChild instanceof OdfElement) {
+			onOdfNodeRemoved((OdfElement) oldChild);
+		}
+		return ret;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfDecryptedException.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfDecryptedException.java
new file mode 100644
index 0000000..b7af059
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfDecryptedException.java
@@ -0,0 +1,37 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * 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 regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ************************************************************************/
+package org.odftoolkit.odfdom.pkg;
+
+/**
+ * This ODF document decryption exception.
+ * 
+ * @since 0.8.9
+ * 
+ */
+public class OdfDecryptedException extends RuntimeException {
+
+	private static final long serialVersionUID = 7657277144612220943L;
+
+	public OdfDecryptedException(String message) {
+		super(message);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java
new file mode 100644
index 0000000..1195a4a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfElement.java
@@ -0,0 +1,515 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.ArrayList;
+
+import org.apache.xerces.dom.ElementNSImpl;
+import org.apache.xerces.dom.ParentNode;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+abstract public class OdfElement extends ElementNSImpl {
+
+	private static final long serialVersionUID = -4939293285696678939L;
+
+	/** Creates a new instance of OdfElement */
+	public OdfElement(OdfFileDom ownerDocument, String namespaceURI,
+			String qualifiedName) throws DOMException {
+		super(ownerDocument, namespaceURI, qualifiedName);
+	}
+
+	/** Creates a new instance of OdfElement */
+	public OdfElement(OdfFileDom ownerDocument, OdfName aName)
+			throws DOMException {
+		super(ownerDocument, aName.getUri(), aName.getQName());
+	}
+
+	abstract public OdfName getOdfName();
+
+	protected <T extends OdfElement> T getParentAs(Class<T> clazz) {
+		Node parent = getParentNode();
+		if (parent != null && clazz.isInstance(parent)) {
+			return clazz.cast(parent);
+		} else {
+			return null;
+		}
+	}
+
+	protected <T extends OdfElement> T getAncestorAs(Class<T> clazz) {
+		Node node = getParentNode();
+		while (node != null) {
+			if (clazz.isInstance(node)) {
+				return clazz.cast(node);
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	@Override
+	public String toString() {
+		return mapNode(this, new StringBuilder()).toString();
+	}
+
+	/** Only Siblings will be traversed by this method as Children */
+	static private StringBuilder mapNodeTree(Node node, StringBuilder xml) {
+		while (node != null) {
+			// mapping node and this mapping include always all descendants
+			xml = mapNode(node, xml);
+			// next sibling will be mapped to XML
+			node = node.getNextSibling();
+		}
+		return xml;
+	}
+
+	private static StringBuilder mapNode(Node node, StringBuilder xml) {
+		if (node instanceof Element) {
+			xml = mapElementNode(node, xml);
+		} else if (node instanceof Text) {
+			xml = mapTextNode(node, xml);
+		}
+		return xml;
+	}
+
+	private static StringBuilder mapTextNode(Node node, StringBuilder xml) {
+		if (node != null) {
+			xml = xml.append(node.getTextContent());
+		}
+		return xml;
+	}
+
+	private static StringBuilder mapElementNode(Node node, StringBuilder xml) {
+		if (node != null) {
+			xml = xml.append("<");
+			xml = xml.append(node.getNodeName());
+			xml = mapAttributeNode(node, xml);
+			xml = xml.append(">");
+			xml = mapNodeTree(node.getFirstChild(), xml);
+			xml = xml.append("</");
+			xml = xml.append(node.getNodeName());
+			xml = xml.append(">");
+		}
+		return xml;
+	}
+
+	private static StringBuilder mapAttributeNode(Node node, StringBuilder xml) {
+		NamedNodeMap attrs = null;
+		int length;
+		if ((attrs = node.getAttributes()) != null
+				&& (length = attrs.getLength()) > 0) {
+			for (int i = 0; length > i; i++) {
+				xml = xml.append(" ");
+				xml = xml.append(attrs.item(i).getNodeName());
+				xml = xml.append("=\"");
+				xml = xml.append(attrs.item(i).getNodeValue());
+				xml = xml.append("\"");
+			}
+		}
+		return xml;
+	}
+
+	/**
+	 * Set the value of an ODF attribute by <code>OdfName</code>.
+	 * 
+	 * @param name
+	 *            The qualified name of the ODF attribute.
+	 * @param value
+	 *            The value to be set in <code>String</code> form
+	 */
+	public void setOdfAttributeValue(OdfName name, String value) {
+		setAttributeNS(name.getUri(), name.getQName(), value);
+	}
+
+	/**
+	 * Set an ODF attribute to this element
+	 * 
+	 * @param attribute
+	 *            the attribute to be set
+	 */
+	public void setOdfAttribute(OdfAttribute attribute) {
+		setAttributeNodeNS(attribute);
+	}
+
+	/**
+	 * Retrieves a value of an ODF attribute by <code>OdfName</code>.
+	 * 
+	 * @param name
+	 *            The qualified name of the ODF attribute.
+	 * @return The value of the attribute as <code>String</code> or
+	 *         <code>null</code> if the attribute does not exist.
+	 */
+	public String getOdfAttributeValue(OdfName name) {
+		return getAttributeNS(name.getUri(), name.getLocalName());
+	}
+
+	/**
+	 * Retrieves an ODF attribute by <code>OdfName</code>.
+	 * 
+	 * @param name
+	 *            The qualified name of the ODF attribute.
+	 * @return The <code>OdfAttribute</code> or <code>null</code> if the
+	 *         attribute does not exist.
+	 */
+	public OdfAttribute getOdfAttribute(OdfName name) {
+		return (OdfAttribute) getAttributeNodeNS(name.getUri(), name.getLocalName());
+	}
+
+	/**
+	 * Retrieves an ODF attribute by <code>NamespaceName</code>, and local name.
+	 * 
+	 * @param namespace
+	 *            The namespace of the ODF attribute.
+	 * @param localname
+	 *            The local name of the ODF attribute.
+	 * @return The <code>OdfAttribute</code> or <code>null</code> if the
+	 *         attribute does not exist.
+	 */
+	public OdfAttribute getOdfAttribute(NamespaceName namespace, String localname) {
+		return (OdfAttribute) getAttributeNodeNS(namespace.getUri(),
+				localname);
+	}
+
+	/**
+	 * Determines if an ODF attribute exists.
+	 * 
+	 * @param name
+	 *            The qualified name of the ODF attribute.
+	 * @return True if the attribute exists.
+	 */
+	public boolean hasOdfAttribute(OdfName name) {
+		return hasAttributeNS(name.getUri(), name.getLocalName());
+	}
+
+	/**
+	 * returns the first child node that implements the given class.
+	 * 
+	 * @param <T>
+	 *            The type of the ODF element to be found.
+	 * @param clazz
+	 *            is a class that extends OdfElement.
+	 * @param parentNode
+	 *            is the parent O of the children to be found.
+	 * @return the first child node of the given parentNode that is a clazz or
+	 *         null if none is found.
+	 */
+	@SuppressWarnings("unchecked")
+	static public <T extends OdfElement> T findFirstChildNode(Class<T> clazz,
+			Node parentNode) {
+		if (parentNode != null && parentNode instanceof ParentNode) {
+			Node node = ((ParentNode) parentNode).getFirstChild();
+			while ((node != null) && !clazz.isInstance(node)) {
+				node = node.getNextSibling();
+			}
+
+			if (node != null) {
+				return (T) node;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * returns the first sibling after the given reference node that implements
+	 * the given class.
+	 * 
+	 * @param <T>
+	 *            The type of the ODF element to be found.
+	 * @param clazz
+	 *            is a class that extends OdfElement.
+	 * @param refNode
+	 *            the reference node of the siblings to be found.
+	 * @return the first sibbling of the given reference node that is a clazz or
+	 *         null if none is found.
+	 */
+	@SuppressWarnings("unchecked")
+	static public <T extends OdfElement> T findNextChildNode(Class<T> clazz,
+			Node refNode) {
+		if (refNode != null) {
+			Node node = refNode.getNextSibling();
+			while (node != null && !clazz.isInstance(node)) {
+				node = node.getNextSibling();
+			}
+
+			if (node != null) {
+				return (T) node;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * returns the first previous sibling before the given reference node that
+	 * implements the given class.
+	 * 
+	 * @param clazz
+	 *            is a class that extends OdfElement.
+	 * @param refNode
+	 *            the reference node which siblings are to be searched.
+	 * @return the first previous sibbling of the given reference node that is a
+	 *         clazz or null if none is found.
+	 */
+	@SuppressWarnings("unchecked")
+	static public <T extends OdfElement> T findPreviousChildNode(
+			Class<T> clazz, Node refNode) {
+		if (refNode != null) {
+			Node node = refNode.getPreviousSibling();
+			while (node != null && !clazz.isInstance(node)) {
+				node = node.getPreviousSibling();
+			}
+
+			if (node != null) {
+				return (T) node;
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Node cloneNode(boolean deep) {
+		OdfElement cloneElement = ((OdfFileDom) this.ownerDocument).newOdfElement(this.getClass());
+
+		if (attributes != null) {
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node item = attributes.item(i);
+				String qname = null;
+				String prefix = item.getPrefix();
+				if (prefix == null) {
+					qname = item.getLocalName();
+				} else {
+					qname = prefix + ":" + item.getLocalName();
+				}
+				cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
+			}
+		}
+
+		if (deep) {
+			Node childNode = getFirstChild();
+			while (childNode != null) {
+				cloneElement.appendChild(childNode.cloneNode(true));
+				childNode = childNode.getNextSibling();
+			}
+		}
+
+		return cloneElement;
+	}
+
+	/**
+	 * indicates if some other object is equal to this one.
+	 * 
+	 * @param obj
+	 *            - the reference object with which to compare.
+	 * @return true if this object is the same as the obj argument; false
+	 *         otherwise.
+	 */
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+
+		if ((obj == null) || !(obj instanceof OdfElement)) {
+			return false;
+		}
+
+		OdfElement compare = (OdfElement) obj;
+
+		// compare node name
+		if (!localName.equals(compare.localName)) {
+			return false;
+		}
+
+		if (!this.namespaceURI.equals(compare.namespaceURI)) {
+			return false;
+		}
+
+		// compare node attributes
+		if (attributes == compare.attributes) {
+			return true;
+		}
+
+		if ((attributes == null) || (compare.attributes == null)) {
+			return false;
+		}
+
+		int attr_count1 = attributes.getLength();
+		int attr_count2 = compare.attributes.getLength();
+
+		ArrayList<Node> attr1 = new ArrayList<Node>();
+		for (int i = 0; i < attr_count1; i++) {
+			Node node = attributes.item(i);
+			if (node.getNodeValue().length() == 0) {
+				continue;
+			}
+			attr1.add(node);
+		}
+
+		ArrayList<Node> attr2 = new ArrayList<Node>();
+		for (int i = 0; i < attr_count2; i++) {
+			Node node = compare.attributes.item(i);
+			if (node.getNodeValue().length() == 0) {
+				continue;
+			}
+			attr2.add(node);
+		}
+
+		if (attr1.size() != attr2.size()) {
+			return false;
+		}
+
+		for (int i = 0; i < attr1.size(); i++) {
+			Node n1 = attr1.get(i);
+			if (n1.getLocalName().equals("name")
+					&& n1.getNamespaceURI().equals(
+					OdfDocumentNamespace.STYLE.getUri())) {
+				continue; // do not compare style names
+			}
+			Node n2 = null;
+			int j = 0;
+			for (j = 0; j < attr2.size(); j++) {
+				n2 = attr2.get(j);
+				if (n1.getLocalName().equals(n2.getLocalName())
+						&& n1.getNamespaceURI().equals(n2.getNamespaceURI())) {
+					break;
+				}
+			}
+			if (j == attr2.size()) {
+				return false;
+			}
+
+			if (!n1.getTextContent().equals(n2.getTextContent())) {
+				return false;
+			}
+		}
+
+		// now compare child elements
+		NodeList childs1 = this.getChildNodes();
+		NodeList childs2 = compare.getChildNodes();
+
+		int child_count1 = childs1.getLength();
+		int child_count2 = childs2.getLength();
+		if ((child_count1 == 0) && (child_count2 == 0)) {
+			return true;
+		}
+
+		ArrayList<Node> nodes1 = new ArrayList<Node>();
+		for (int i = 0; i < child_count1; i++) {
+			Node node = childs1.item(i);
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				if (node.getNodeValue().trim().length() == 0) {
+					continue; // skip whitespace text nodes
+				}
+			}
+			nodes1.add(node);
+		}
+
+		ArrayList<Node> nodes2 = new ArrayList<Node>();
+		for (int i = 0; i < child_count2; i++) {
+			Node node = childs2.item(i);
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				if (node.getNodeValue().trim().length() == 0) {
+					continue; // skip whitespace text nodes
+				}
+			}
+			nodes2.add(node);
+		}
+
+		if (nodes1.size() != nodes2.size()) {
+			return false;
+		}
+
+		for (int i = 0; i < nodes1.size(); i++) {
+			Node n1 = nodes1.get(i);
+			Node n2 = nodes2.get(i);
+			if (!n1.equals(n2)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	protected void onRemoveNode(Node node) {
+		Node child = node.getFirstChild();
+		while (child != null) {
+			this.onRemoveNode(child);
+			child = child.getNextSibling();
+		}
+
+		if (OdfElement.class.isInstance(node)) {
+			((OdfElement) node).onRemoveNode();
+		}
+	}
+
+	protected void onInsertNode(Node node) {
+		Node child = node.getFirstChild();
+		while (child != null) {
+			this.onInsertNode(child);
+			child = child.getNextSibling();
+		}
+
+		if (OdfElement.class.isInstance(node)) {
+			((OdfElement) node).onInsertNode();
+		}
+	}
+
+	protected void onRemoveNode() {
+	}
+
+	protected void onInsertNode() {
+	}
+
+	@Override
+	public Node insertBefore(Node newChild, Node refChild) throws DOMException {
+		onInsertNode(newChild);
+		return super.insertBefore(newChild, refChild);
+	}
+
+	@Override
+	public Node removeChild(Node oldChild) throws DOMException {
+		onRemoveNode(oldChild);
+		return super.removeChild(oldChild);
+	}
+
+	@Override
+	public Node replaceChild(Node newChild, Node oldChild) throws DOMException {
+		onInsertNode(newChild);
+		onRemoveNode(oldChild);
+		return super.replaceChild(newChild, oldChild);
+	}
+
+	/**
+	 * Accept an visitor instance to allow the visitor to do some operations.
+	 * Refer to visitor design pattern to get a better understanding.
+	 * @param visitor	an instance of DefaultElementVisitor
+	 */
+	public void accept(ElementVisitor visitor) {
+		visitor.visit(this);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfFileDom.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfFileDom.java
new file mode 100644
index 0000000..32c7af2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfFileDom.java
@@ -0,0 +1,712 @@
+/************************************************************************

+ *

+ * 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.pkg;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.lang.reflect.Field;

+import java.util.HashMap;

+import java.util.HashSet;

+import java.util.IdentityHashMap;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.Set;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import javax.xml.XMLConstants;

+import javax.xml.namespace.NamespaceContext;

+import javax.xml.xpath.XPath;

+import javax.xml.xpath.XPathFactory;

+

+import org.apache.xerces.dom.DocumentImpl;

+import org.odftoolkit.odfdom.dom.OdfContentDom;

+import org.odftoolkit.odfdom.dom.OdfMetaDom;

+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;

+import org.odftoolkit.odfdom.dom.OdfSettingsDom;

+import org.odftoolkit.odfdom.dom.OdfStylesDom;

+import org.odftoolkit.odfdom.dom.rdfa.BookmarkRDFMetadataExtractor;

+import org.odftoolkit.odfdom.pkg.manifest.OdfManifestDom;

+import org.odftoolkit.odfdom.pkg.rdfa.DOMRDFaParser;

+import org.odftoolkit.odfdom.pkg.rdfa.JenaSink;

+import org.odftoolkit.odfdom.pkg.rdfa.MultiContentHandler;

+import org.odftoolkit.odfdom.pkg.rdfa.SAXRDFaParser;

+import org.odftoolkit.odfdom.pkg.rdfa.Util;

+import org.w3c.dom.DOMException;

+import org.w3c.dom.Document;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+import org.xml.sax.InputSource;

+import org.xml.sax.XMLReader;

+

+import com.hp.hpl.jena.rdf.model.Model;

+

+/**

+ * The DOM representation of an XML file within the ODF document.

+ */

+public class OdfFileDom extends DocumentImpl implements NamespaceContext {

+

+	private static final long serialVersionUID = 766167617530147000L;

+	protected String mPackagePath;

+	protected OdfPackageDocument mPackageDocument;

+	protected OdfPackage mPackage;

+	protected XPath mXPath;

+	protected Map<String, String> mUriByPrefix;

+	protected Map<String, String> mPrefixByUri;

+	/** Contains only the duplicate prefix. 

+	 * The primary hold by mPrefixByUri still have to be added

+	 */

+	protected Map<String, Set<String>> mDuplicatePrefixesByUri;

+	/**

+	* The cache of in content metadata: key: a Node in the dom ; value: the

+	* Jena RDF model of triples of the Node

+	*/

+	protected Map<Node, Model> inCententMetadataCache;

+

+	protected JenaSink sink;

+
+	/**
+	 * Creates the DOM representation of an XML file of an Odf document.
+	 * 
+	 * @param packageDocument
+	 *            the document the XML files belongs to
+	 * @param packagePath
+	 *            the internal package path to the XML file
+	 */
+	protected OdfFileDom(OdfPackageDocument packageDocument, String packagePath) {
+		super(false);
+		if (packageDocument != null && packagePath != null) {
+			mPackageDocument = packageDocument;
+			mPackage = packageDocument.getPackage();
+			mPackagePath = packagePath;
+			mUriByPrefix = new HashMap<String, String>();

+			mPrefixByUri = new HashMap<String, String>();

+			mDuplicatePrefixesByUri = new HashMap<String, Set<String>>();

+			inCententMetadataCache = new IdentityHashMap<Node, Model>();

+			initialize();

+			// Register every DOM to OdfPackage,

+			// so a package close might save this DOM (similar as OdfDocumentPackage)

+			this.addDomToCache(mPackage, packagePath);

+		} else {

+			throw new IllegalArgumentException("Arguments are not allowed to be NULL for OdfFileDom constructor!");

+		}

+	}

+

+	/**

+	* Creates the DOM representation of an XML file of an Odf document.

+	*

+	* @param pkg

+	* the package the XML files belongs to

+	* @param packagePath

+	* the internal package path to the XML file

+	*/

+	protected OdfFileDom(OdfPackage pkg, String packagePath) {

+		super(false);

+		if (pkg != null && packagePath != null) {

+			mPackageDocument = null;

+			mPackage = pkg;

+			mPackagePath = packagePath;

+			mUriByPrefix = new HashMap<String, String>();

+			mPrefixByUri = new HashMap<String, String>();

+			mDuplicatePrefixesByUri = new HashMap<String, Set<String>>();

+			inCententMetadataCache = new HashMap<Node, Model>();

+			initialize();

+			// Register every DOM to OdfPackage,

+			// so a package close might save this DOM (similar as

+			// OdfDocumentPackage)

+			addDomToCache(mPackage, packagePath);

+		} else {

+			throw new IllegalArgumentException("Arguments are not allowed to be NULL for OdfFileDom constructor!");

+		}

+	}

+

+	/** 

+	 *Adds the document to the pool of open documents of the package.

+	 *A document of a certain path is opened only once to avoid data duplication.

+	 */

+	private void addDomToCache(OdfPackage pkg, String internalPath) {

+		pkg.cacheDom(this, internalPath);

+	}

+

+	public static OdfFileDom newFileDom(OdfPackageDocument packageDocument, String packagePath) {

+		OdfFileDom newFileDom = null;

+		// before creating a new dom, make sure that there no DOM opened for this file already

+		Document existingDom = packageDocument.getPackage().getCachedDom(packagePath);

+		if (existingDom == null) {

+			// ToDo: bug 264 - register OdfFileDom to this class

+			if (packagePath.equals("content.xml") || packagePath.endsWith("/content.xml")) {

+				newFileDom = new OdfContentDom((OdfSchemaDocument) packageDocument, packagePath);

+			} else if (packagePath.equals("styles.xml") || packagePath.endsWith("/styles.xml")) {

+				newFileDom = new OdfStylesDom((OdfSchemaDocument) packageDocument, packagePath);

+			} else if (packagePath.equals("meta.xml") || packagePath.endsWith("/meta.xml")) {

+				newFileDom = new OdfMetaDom((OdfSchemaDocument) packageDocument, packagePath);
+			} else if (packagePath.equals("settings.xml") || packagePath.endsWith("/settings.xml")) {
+				newFileDom = new OdfSettingsDom((OdfSchemaDocument) packageDocument, packagePath);
+			} else if (packagePath.equals("META-INF/manifest.xml") || packagePath.endsWith("/META-INF/manifest.xml")) {
+				newFileDom = new OdfManifestDom((OdfSchemaDocument) packageDocument, packagePath);
+			} else {
+				newFileDom = new OdfFileDom(packageDocument, packagePath);
+			}
+		} else {

+			if (existingDom instanceof OdfFileDom) {

+				newFileDom = (OdfFileDom) existingDom;

+//ToDO: Issue 264 - Otherwise if NOT an OdfFileDom serialize old DOM AND CREATE A NEW ONE?!

+// Or shall we always reference to the dom, than we can not inherit from Document? Pro/Con?s

+//			}else{

+//				// Create an OdfFileDOM from an existing DOM

+//				newFileDom =

+			}

+

+		}

+		return newFileDom;
+	}
+
+	public static OdfFileDom newFileDom(OdfPackage pkg, String packagePath) {
+		OdfFileDom newFileDom = null;
+		// before creating a new dom, make sure that there no DOM opened for this file already
+		Document existingDom = pkg.getCachedDom(packagePath);
+		if (existingDom == null) {
+			if (packagePath.equals("META-INF/manifest.xml") || packagePath.endsWith("/META-INF/manifest.xml")) {
+				newFileDom = new OdfManifestDom(pkg, packagePath);
+			} else {
+				newFileDom = new OdfFileDom(pkg, packagePath);
+			}
+		} else {
+			if (existingDom instanceof OdfFileDom) {
+				newFileDom = (OdfFileDom) existingDom;
+//ToDO: Issue 264 - Otherwise if NOT an OdfFileDom serialize old DOM AND CREATE A NEW ONE?!
+// Or shall we always reference to the dom, than we can not inherit from Document? Pro/Con?s
+//			}else{
+//				// Create an OdfFileDOM from an existing DOM
+//				newFileDom =
+			}
+
+		}
+		return newFileDom;
+	}
+	
+	protected void initialize() {
+		InputStream fileStream = null;
+		try {
+			fileStream = mPackage.getInputStream(mPackagePath);

+			if (fileStream != null) {

+				XMLReader xmlReader = mPackage.getXMLReader();

+				OdfFileSaxHandler odf = new OdfFileSaxHandler(this);

+				String baseUri = Util.getRDFBaseUri(mPackage.getBaseURI(),mPackagePath);

+				sink = new JenaSink(this);

+				odf.setSink(sink);

+				SAXRDFaParser rdfa = SAXRDFaParser.createInstance(sink);

+				rdfa.setBase(baseUri);

+				// the file is parsed by ODF ContentHandler, and then RDFa ContentHandler

+				MultiContentHandler multi = new MultiContentHandler(odf, rdfa);

+				xmlReader.setContentHandler(multi);

+				InputSource xmlSource = new InputSource(fileStream);

+				xmlReader.parse(xmlSource);

+			}

+		} catch (Exception ex) {
+			Logger.getLogger(OdfFileDom.class.getName()).log(Level.SEVERE, null, ex);
+		} finally {
+			try {
+				if (fileStream != null) {
+					fileStream.close();
+				}
+			} catch (IOException ex) {
+				Logger.getLogger(OdfFileDom.class.getName()).log(Level.SEVERE, null, ex);
+			}
+		}

+	}

+

+	/**

+	 * Retrieves the <code>OdfPackageDocument</code> of the XML file.

+	 * A package document is usually represented as a directory with a mediatype.

+	 *

+	 * @return The document holding the XML file.

+	 *

+	 */

+	public OdfPackageDocument getDocument() {

+		return mPackageDocument;

+	}

+

+	/**

+	 * Retrieves the <code>String</code> of Package Path

+	 * 

+	 * @return The path of the XML file relative to the package root

+	 */

+	public String getPackagePath() {

+		return mPackagePath;

+	}

+

+	/**

+	 * Retrieves the ODF root element.

+	 *

+	 * @return The <code>OdfElement</code> being the root of the document.

+	 */

+	public OdfElement getRootElement() {

+		return (OdfElement) getDocumentElement();

+	}

+

+	/**

+	 * Create ODF element with namespace uri and qname

+	 *

+	 * @param name The element name

+	 *

+	 */

+	@Override

+	public OdfElement createElement(String name) throws DOMException {

+		return createElementNS(OdfName.newName(name));

+	}

+

+	/**

+	 * Create ODF element with namespace uri and qname

+	 *

+	 * @param nsuri The namespace uri

+	 * @param qname The element qname

+	 *

+	 */

+	@Override

+	public OdfElement createElementNS(String nsuri, String qname) throws DOMException {

+		return createElementNS(OdfName.newName(nsuri, qname));

+	}

+

+	/**

+	 * Create ODF element with ODF name

+	 * @param name The <code>OdfName</code>

+	 * @return The <code>OdfElement</code>

+	 * @throws DOMException

+	 */

+	public OdfElement createElementNS(OdfName name) throws DOMException {

+		return OdfXMLFactory.newOdfElement(this, name);

+	}

+

+	/**

+	 * Create the ODF attribute with its name

+	 *

+	 * @param name  the attribute qname

+	 * @return The <code>OdfAttribute</code>

+	 * @throws  DOMException

+	 */

+	@Override

+	public OdfAttribute createAttribute(String name) throws DOMException {

+		return createAttributeNS(OdfName.newName(name));

+	}

+

+	/**

+	 * Create the ODF attribute with namespace uri and qname

+	 * 

+	 * @param nsuri  The namespace uri

+	 * @param qname  the attribute qname

+	 * @return The <code>OdfAttribute</code>

+	 * @throws  DOMException

+	 */

+	@Override

+	public OdfAttribute createAttributeNS(String nsuri, String qname) throws DOMException {

+		return createAttributeNS(OdfName.newName(nsuri, qname));

+	}

+

+	/**

+	 * Create the ODF attribute with ODF name

+	 * @param name The <code>OdfName</code>

+	 * @return  The <code>OdfAttribute</code>

+	 * @throws DOMException

+	 */

+	public OdfAttribute createAttributeNS(OdfName name) throws DOMException {

+		return OdfXMLFactory.newOdfAttribute(this, name);

+	}

+

+	@SuppressWarnings("unchecked")

+	public <T extends OdfElement> T newOdfElement(Class<T> clazz) {

+		//return (T) OdfXMLFactory.getNodeFromClass(this, clazz);

+		try {

+			Field fname = clazz.getField("ELEMENT_NAME");

+			OdfName name = (OdfName) fname.get(null);

+			return (T) createElementNS(name);

+		} catch (Exception ex) {

+			if (ex instanceof RuntimeException) {

+				throw (RuntimeException) ex;

+			}

+			return null;

+		}

+	}

+

+	@Override

+	public String toString() {

+		return ((OdfElement) this.getDocumentElement()).toString();

+	}

+

+	// JDK Namespace handling

+	/**

+	 * Create an XPath instance to select one or more nodes from an ODF document.

+	 * Therefore the namespace context is set to the OdfNamespace

+	 * @return an XPath instance with namespace context set to include the standard

+	 * ODFDOM prefixes.

+	 */

+	public XPath getXPath() {

+		if (mXPath == null) {

+			mXPath = XPathFactory.newInstance().newXPath();

+		}

+		return mXPath;

+	}

+

+	/**

+	 * <p>Get Namespace URI bound to a prefix in the current scope (the XML file).</p>

+	 *

+	 * <p>When requesting a Namespace URI by prefix, the following

+	 * table describes the returned Namespace URI value for all

+	 * possible prefix values:</p>

+	 *

+	 * <table border="2" rules="all" cellpadding="4">

+	 *   <thead>

+	 *     <tr>

+	 *       <td align="center" colspan="2">

+	 *         <code>getNamespaceURI(prefix)</code>

+	 *         return value for specified prefixes

+	 *       </td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td>prefix parameter</td>

+	 *       <td>Namespace URI return value</td>

+	 *     </tr>

+	 *   </thead>

+	 *   <tbody>

+	 *     <tr>

+	 *       <td><code>DEFAULT_NS_PREFIX</code> ("")</td>

+	 *       <td>default Namespace URI in the current scope or

+	 *         <code>{@link

+	 *         javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI("")}

+	 *         </code>

+	 *         when there is no default Namespace URI in the current scope</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td>bound prefix</td>

+	 *       <td>Namespace URI bound to prefix in current scope</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td>unbound prefix</td>

+	 *       <td>

+	 *         <code>{@link

+	 *         javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI("")}

+	 *         </code>

+	 *       </td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>XMLConstants.XML_NS_PREFIX</code> ("xml")</td>

+	 *       <td><code>XMLConstants.XML_NS_URI</code>

+	 *           ("http://www.w3.org/XML/1998/namespace")</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns")</td>

+	 *       <td><code>XMLConstants.XMLNS_ATTRIBUTE_NS_URI</code>

+	 *         ("http://www.w3.org/2000/xmlns/")</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>null</code></td>

+	 *       <td><code>IllegalArgumentException</code> is thrown</td>

+	 *     </tr>

+	 *    </tbody>

+	 * </table>

+	 *

+	 * @param prefix prefix to look up

+	 *

+	 * @return Namespace URI bound to prefix in the current scope

+	 *

+	 * @throws IllegalArgumentException When <code>prefix</code> is

+	 *   <code>null</code>

+	 */

+	public String getNamespaceURI(String prefix) {

+		String nsURI = null;

+		nsURI = mUriByPrefix.get(prefix);

+		if (nsURI == null) {

+			// look in Duplicate URI prefixes

+			Set<String> urisWithDuplicatePrefixes = this.mDuplicatePrefixesByUri.keySet();

+			for (String aURI : urisWithDuplicatePrefixes) {

+				Set<String> prefixes = this.mDuplicatePrefixesByUri.get(aURI);

+				// check if requested prefix exists in hashset

+				if (prefixes.contains(prefix)) {

+					nsURI = aURI;

+					break;

+				}

+			}

+		}

+		// there is a possibility it still may be null - so we check

+		if (nsURI == null) {

+			nsURI = XMLConstants.NULL_NS_URI;

+		}

+		return nsURI;

+	}

+

+	/**

+	 * <p>Get prefix bound to Namespace URI in the current scope (the XML file).</p>

+	 * <p>Multiple prefixes bound to Namespace URI will be normalized to the first prefix defined.</p>

+	 *

+	 * <p>When requesting a prefix by Namespace URI, the following

+	 * table describes the returned prefix value for all Namespace URI

+	 * values:</p>

+	 *

+	 * <table border="2" rules="all" cellpadding="4">

+	 *   <thead>

+	 *     <tr>

+	 *       <th align="center" colspan="2">

+	 *         <code>getPrefix(namespaceURI)</code> return value for

+	 *         specified Namespace URIs

+	 *       </th>

+	 *     </tr>

+	 *     <tr>

+	 *       <th>Namespace URI parameter</th>

+	 *       <th>prefix value returned</th>

+	 *     </tr>

+	 *   </thead>

+	 *   <tbody>

+	 *     <tr>

+	 *       <td>&lt;default Namespace URI&gt;</td>

+	 *       <td><code>XMLConstants.DEFAULT_NS_PREFIX</code> ("")

+	 *       </td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td>bound Namespace URI</td>

+	 *       <td>prefix bound to Namespace URI in the current scope,

+	 *           if multiple prefixes are bound to the Namespace URI in

+	 *           the current scope, a single arbitrary prefix, whose

+	 *           choice is implementation dependent, is returned</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td>unbound Namespace URI</td>

+	 *       <td><code>null</code></td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>XMLConstants.XML_NS_URI</code>

+	 *           ("http://www.w3.org/XML/1998/namespace")</td>

+	 *       <td><code>XMLConstants.XML_NS_PREFIX</code> ("xml")</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>XMLConstants.XMLNS_ATTRIBUTE_NS_URI</code>

+	 *           ("http://www.w3.org/2000/xmlns/")</td>

+	 *       <td><code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns")</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>null</code></td>

+	 *       <td><code>IllegalArgumentException</code> is thrown</td>

+	 *     </tr>

+	 *   </tbody>

+	 * </table>

+	 *

+	 * @param namespaceURI URI of Namespace to lookup

+	 *

+	 * @return prefix bound to Namespace URI in current context

+	 *

+	 * @throws IllegalArgumentException When <code>namespaceURI</code> is

+	 *   <code>null</code>

+	 */

+	public String getPrefix(String namespaceURI) {

+		return mPrefixByUri.get(namespaceURI);

+	}

+

+	/**

+	 * <p>Get all prefixes bound to a Namespace URI in the current

+	 * scope. (the XML file)</p>

+	 * <p>NOTE: Multiple prefixes bound to a similar Namespace URI will be normalized to the first prefix defined.

+	 * Still the namespace attributes exist in the XML as inner value prefixes might be used.</p>

+	 *

+	 * <p><strong>The <code>Iterator</code> is

+	 * <em>not</em> modifiable.  e.g. the

+	 * <code>remove()</code> method will throw

+	 * <code>UnsupportedOperationException</code>.</strong></p>

+	 *

+	 * <p>When requesting prefixes by Namespace URI, the following

+	 * table describes the returned prefixes value for all Namespace

+	 * URI values:</p>

+	 *

+	 * <table border="2" rules="all" cellpadding="4">

+	 *   <thead>

+	 *     <tr>

+	 *       <th align="center" colspan="2"><code>

+	 *         getPrefixes(namespaceURI)</code> return value for

+	 *         specified Namespace URIs</th>

+	 *     </tr>

+	 *     <tr>

+	 *       <th>Namespace URI parameter</th>

+	 *       <th>prefixes value returned</th>

+	 *     </tr>

+	 *   </thead>

+	 *   <tbody>

+	 *     <tr>

+	 *       <td>bound Namespace URI,

+	 *         including the &lt;default Namespace URI&gt;</td>

+	 *       <td>

+	 *         <code>Iterator</code> over prefixes bound to Namespace URI in

+	 *         the current scope in an arbitrary,

+	 *         <strong>implementation dependent</strong>,

+	 *         order

+	 *       </td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td>unbound Namespace URI</td>

+	 *       <td>empty <code>Iterator</code></td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>XMLConstants.XML_NS_URI</code>

+	 *           ("http://www.w3.org/XML/1998/namespace")</td>

+	 *       <td><code>Iterator</code> with one element set to

+	 *         <code>XMLConstants.XML_NS_PREFIX</code> ("xml")</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>XMLConstants.XMLNS_ATTRIBUTE_NS_URI</code>

+	 *           ("http://www.w3.org/2000/xmlns/")</td>

+	 *       <td><code>Iterator</code> with one element set to

+	 *         <code>XMLConstants.XMLNS_ATTRIBUTE</code> ("xmlns")</td>

+	 *     </tr>

+	 *     <tr>

+	 *       <td><code>null</code></td>

+	 *       <td><code>IllegalArgumentException</code> is thrown</td>

+	 *     </tr>

+	 *   </tbody>

+	 * </table>

+	 *

+	 * @param namespaceURI URI of Namespace to lookup

+	 *

+	 * @return <code>Iterator</code> for all prefixes bound to the

+	 *   Namespace URI in the current scope

+	 *

+	 * @throws IllegalArgumentException When <code>namespaceURI</code> is

+	 *   <code>null</code>

+	 */

+	public Iterator<String> getPrefixes(String namespaceURI) {

+		Set<String> prefixes = mDuplicatePrefixesByUri.get(namespaceURI);

+		if (prefixes == null) {

+			prefixes = new HashSet<String>();

+		}

+		String givenPrefix = mPrefixByUri.get(namespaceURI);

+		if(givenPrefix != null){

+			prefixes.add(givenPrefix);

+		}

+		return prefixes.iterator();

+	}

+

+	/** @return a map of namespaces, where the URI is the key and the prefix is the value */

+	Map<String, String> getMapNamespacePrefixByUri() {

+		return mPrefixByUri;

+	}

+

+	/** Adds a new Namespace to the DOM. Making the prefix usable with JDK <code>XPath</code>.

+	 * All namespace attributes will be written to the root element during later serialization of the DOM by the <code>OdfPackage</code>.

+	 * @param prefix of the namespace to be set to this DOM

+	 * @param uri of the namespace to be set to this DOM

+	 * @return the namespace that was set. If an URI was registered before to the DOM, the previous prefix will be taken.

+	 * In case of a given prefix that was already registered, but related to a new URI, the prefix will be adapted.

+	 * The new prefix receives the suffix '__' plus integer, e.g. "__1" for the first duplicate and "__2" for the second.

+	 */

+	public OdfNamespace setNamespace(String prefix, String uri) {

+		//collision detection, when a new prefix/URI pair exists

+		OdfNamespace newNamespace = null;

+		//Scenario a) the URI already registered, use existing prefix

+		// but save all others for the getPrefixes function. There might be still some

+		// in attribute values using prefixes, that were not exchanged.

+		String existingPrefix = mPrefixByUri.get(uri);

+		if (existingPrefix != null) {

+			//Use the existing prefix of the used URL, neglect the given

+			newNamespace = OdfNamespace.newNamespace(existingPrefix, uri);

+

+			//Add the new prefix to the duplicate prefix map for getPrefixes(String uri)

+			Set<String> prefixes = mDuplicatePrefixesByUri.get(uri);

+			if (prefixes == null) {

+				prefixes = new HashSet<String>();

+				mDuplicatePrefixesByUri.put(uri, prefixes);

+			}

+			prefixes.add(prefix);

+		} else {

+			//Scenario b) the prefix already exists and the URI does not exist

+			String existingURI = mUriByPrefix.get(prefix);

+			if (existingURI != null && !existingURI.equals(uri)) {

+				//Change the prefix appending "__" plus counter.

+				int i = 1;

+				do {

+					int suffixStart = prefix.lastIndexOf("__");

+					if (suffixStart != -1) {

+						prefix = prefix.substring(0, suffixStart);

+					}

+					//users have to take care for their attribute values using namespace prefixes.

+					prefix = prefix + "__" + i;

+					i++;

+					existingURI = mUriByPrefix.get(prefix);

+				} while (existingURI != null && !existingURI.equals(uri));

+			}

+			newNamespace = OdfNamespace.newNamespace(prefix, uri);

+			mPrefixByUri.put(uri, prefix);

+			mUriByPrefix.put(prefix, uri);

+		}

+		// if the file Dom is already associated to parsed XML add the new namespace to the root element

+		Element root = getRootElement();

+		if (root != null) {

+			root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:" + prefix, uri);

+		}

+		return newNamespace;

+	}

+

+	/** Adds a new Namespace to the DOM. Making the prefix usable with JDK <code>XPath</code>.

+	 * All namespace attributes will be written to the root element during later serialization of the DOM by the <code>OdfPackage</code>.

+	 * @param name the namespace to be set

+	 * @return the namespace that was set. If an URI was registered before to the DOM, the previous prefix will be taken.

+	 * In case of a given prefix that was already registered, but related to a new URI, the prefix will be adapted.

+	 * The new prefix receives the suffix '__' plus integer, e.g. "__1" for the first duplicate and "__2" for the second.

+	 */

+	public OdfNamespace setNamespace(NamespaceName name) {

+		return setNamespace(name.getPrefix(), name.getUri());

+	}

+

+

+	/**

+	* Get in-content metadata cache model

+	*

+	* @return in-content metadata cache model

+	*/

+	public Map<Node, Model> getInContentMetadataCache() {

+		return this.inCententMetadataCache;

+	}

+

+	/**

+	* Update the in content metadata of the node. It should be called whenever

+	* the xhtml:xxx attrbutes values of the node are changed.

+	* @param the node, whose in content metadata will be updated

+	*/

+	public void updateInContentMetadataCache(Node node) {

+		this.getInContentMetadataCache().remove(node);

+		DOMRDFaParser parser = DOMRDFaParser.createInstance(this.sink);

+		String baseUri = Util.getRDFBaseUri(mPackage.getBaseURI(), mPackagePath);

+		parser.setBase(baseUri);

+		parser.parse(node);

+	}

+

+	/**

+	* @return the RDF metadata of all the bookmarks within the dom

+	*/

+	public Model getBookmarkRDFMetadata() {

+		return BookmarkRDFMetadataExtractor.newBookmarkTextExtractor().getBookmarkRDFMetadata(this);

+	}

+

+	/**

+	* The end users needn't to care of this method, which is used by

+	* BookmarkRDFMetadataExtractor

+	* @return the JenaSink

+	*/

+	public JenaSink getSink() {

+		return sink;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfFileSaxHandler.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfFileSaxHandler.java
new file mode 100644
index 0000000..4f4def8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfFileSaxHandler.java
@@ -0,0 +1,175 @@
+/************************************************************************

+ *

+ * 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.pkg;

+

+import java.io.IOException;

+import java.util.Stack;

+import org.odftoolkit.odfdom.pkg.rdfa.JenaSink;

+import org.w3c.dom.Element;

+import org.w3c.dom.Node;

+import org.w3c.dom.Text;

+import org.xml.sax.Attributes;

+import org.xml.sax.ContentHandler;

+import org.xml.sax.InputSource;

+import org.xml.sax.SAXException;

+import org.xml.sax.helpers.DefaultHandler;

+

+public class OdfFileSaxHandler extends DefaultHandler {

+

+	private static final String EMPTY_STRING = "";

+	// the empty XML file to which nodes will be added

+	private OdfFileDom mFileDom;

+	// the context node

+	private Node mNode;        // a stack of sub handlers. handlers will be pushed on the stack whenever

+	// they are required and must pop themselves from the stack when done

+	private Stack<ContentHandler> mHandlerStack = new Stack<ContentHandler>();

+	private StringBuilder mCharsForTextNode = new StringBuilder();

+	private JenaSink sink;

+	

+	OdfFileSaxHandler(Node rootNode) {

+		if (rootNode instanceof OdfFileDom) {

+			mFileDom = (OdfFileDom) rootNode;

+		} else {

+			mFileDom = (OdfFileDom) rootNode.getOwnerDocument();

+		}

+		mNode = rootNode;

+	}

+

+	@Override

+	public void startDocument() throws SAXException {

+	}

+

+	@Override

+	public void endDocument() throws SAXException {

+	}

+

+	@Override

+	public void endElement(String uri, String localName, String qName) throws SAXException {

+		flushTextNode();

+		// pop to the parent node

+		mNode = mNode.getParentNode();

+	}

+

+	@Override

+	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

+		flushTextNode();

+		// if there is a specilized handler on the stack, dispatch the event

+		Element element = null;

+		if (uri.equals(EMPTY_STRING) || qName.equals(EMPTY_STRING)) {

+			element = mFileDom.createElement(localName);

+		} else {

+			element = mFileDom.createElementNS(uri, qName);

+		}

+		String attrQname = null;

+		String attrURL = null;

+		OdfAttribute attr = null;

+		for (int i = 0; i < attributes.getLength(); i++) {

+			attrURL = attributes.getURI(i);

+			attrQname = attributes.getQName(i);

+			// if no namespace exists

+			if (attrURL.equals(EMPTY_STRING) || attrQname.equals(EMPTY_STRING)) {

+				// create attribute without prefix

+				attr = mFileDom.createAttribute(attributes.getLocalName(i));

+			} else {

+				if (attrQname.startsWith("xmlns:")) {

+					// in case of xmlns prefix we have to create a new OdfNamespace

+					OdfNamespace namespace = mFileDom.setNamespace(attributes.getLocalName(i), attributes.getValue(i));

+					// if the file Dom is already associated to parsed XML add the new namespace to the root element

+					Element root = mFileDom.getRootElement();

+					if (root == null) {

+						root = element;

+					}

+					root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:" + namespace.getPrefix(), namespace.getUri());

+				}

+				// create all attributes, even namespace attributes

+				attr = mFileDom.createAttributeNS(attrURL, attrQname);

+			}

+

+			// namespace attributes will not be created and return null

+			if (attr != null) {

+				element.setAttributeNodeNS(attr);

+				// don't exit because of invalid attribute values

+				try {

+					// set Value in the attribute to allow validation in the attribute

+					attr.setValue(attributes.getValue(i));

+				} // if we detect an attribute with invalid value: remove attribute node

+				catch (IllegalArgumentException e) {

+					element.removeAttributeNode(attr);

+				}

+			}

+		}

+		// add the new element as a child of the current context node

+		mNode.appendChild(element);

+		// push the new element as the context node...

+		mNode = element;

+		if (!localName.equals("bookmark-start")){

+			setContextNode(mNode);

+		}

+	}

+

+	/**

+	 * http://xerces.apache.org/xerces2-j/faq-sax.html#faq-2 :

+	 * SAX may deliver contiguous text as multiple calls to characters,

+	 * for reasons having to do with parser efficiency and input buffering.

+	 * It is the programmer's responsibility to deal with that appropriately,

+	 * e.g. by accumulating text until the next non-characters event.

+	 */

+	private void flushTextNode() {

+		if (mCharsForTextNode.length() > 0) {

+			Text text = mFileDom.createTextNode(mCharsForTextNode.toString());

+			mNode.appendChild(text);

+			mCharsForTextNode.setLength(0);

+		}

+	}

+

+	@Override

+	public void characters(char[] ch, int start, int length) throws SAXException {

+		if (!mHandlerStack.empty()) {

+			mHandlerStack.peek().characters(ch, start, length);

+		} else {

+			mCharsForTextNode.append(ch, start, length);

+		}

+	}

+

+	@Override

+	public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException {

+		return super.resolveEntity(publicId, systemId);

+	}

+	

+	/**

+	* Expose the current node to JenaSink to for caching the parsed RDF triples.

+	* @return

+	*/

+	private void setContextNode(Node node){

+		if (this.sink !=null){

+			sink.setContextNode(node);

+		}

+	}

+

+	/**

+	* Set the JenaSink object.

+	* @param sink

+	*/

+	public void setSink(JenaSink sink) {

+		this.sink = sink;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfManifestSaxHandler.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfManifestSaxHandler.java
new file mode 100644
index 0000000..92dad7a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfManifestSaxHandler.java
@@ -0,0 +1,181 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.Map;
+import org.odftoolkit.odfdom.pkg.manifest.Algorithm;
+import org.odftoolkit.odfdom.pkg.manifest.EncryptionData;
+import org.odftoolkit.odfdom.pkg.manifest.KeyDerivation;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+class OdfManifestSaxHandler implements ContentHandler {
+
+	private OdfFileEntry _currentFileEntry;
+	private EncryptionData _currentEncryptionData;
+	private OdfPackage mPackage;
+	private static final String EMPTY_STRING = "";
+
+	public OdfManifestSaxHandler(OdfPackage pkg) {
+		mPackage = pkg;
+	}
+
+	*//**
+	 * Receive an object for locating the origin of SAX document events.
+	 *//*
+	public void setDocumentLocator(Locator locator) {
+	}
+
+	*//**
+	 * Receive notification of the beginning of a document.
+	 *//*
+	public void startDocument() throws SAXException {
+	}
+
+	*//**
+	 * Receive notification of the end of a document.
+	 *//*
+	public void endDocument() throws SAXException {
+	}
+
+	*//**
+	 * Begin the scope of a prefix-URI Namespace mapping.
+	 *//*
+	public void startPrefixMapping(String prefix, String uri)
+			throws SAXException {
+	}
+
+	*//**
+	 * End the scope of a prefix-URI mapping.
+	 *//*
+	public void endPrefixMapping(String prefix) throws SAXException {
+	}
+
+	*//**
+	 * Receive notification of the beginning of an element.
+	 *//*
+	public void startElement(String namespaceURI, String localName,
+			String qName, Attributes atts) throws SAXException {
+		Map<String, OdfFileEntry> entries = mPackage.getManifestEntries();
+
+		if (localName.equals("file-entry")) {
+			String path = atts.getValue("manifest:full-path");
+			if (path.equals(EMPTY_STRING)) {
+				if(mPackage.getErrorHandler() != null){
+					mPackage.logValidationError(OdfPackageConstraint.MANIFEST_WITH_EMPTY_PATH, mPackage.getBaseURI());
+				}
+			} 
+			path = OdfPackage.normalizePath(path);
+			_currentFileEntry = entries.get(path);
+			if (_currentFileEntry == null) {
+				_currentFileEntry = new OdfFileEntry();
+			}
+			if (path != null) {
+				entries.put(path, _currentFileEntry);
+			}
+			_currentFileEntry.setPath(atts.getValue("manifest:full-path"));
+			_currentFileEntry.setMediaTypeString(atts.getValue("manifest:media-type"));
+			if (atts.getValue("manifest:size") != null) {
+				try {
+					_currentFileEntry.setSize(Integer.parseInt(atts.getValue("manifest:size")));
+				} catch (NumberFormatException nfe) {
+					throw new SAXException("not a number: "
+							+ atts.getValue("manifest:size") + nfe.getMessage());
+				}
+			}
+		} else if (localName.equals("encryption-data")) {
+			_currentEncryptionData = new EncryptionData();
+			if (_currentFileEntry != null) {
+				_currentEncryptionData.setChecksumType(atts.getValue("manifest:checksum-type"));
+				_currentEncryptionData.setChecksum(atts.getValue("manifest:checksum"));
+				_currentFileEntry.setEncryptionData(_currentEncryptionData);
+			}
+		} else if (localName.equals("algorithm")) {
+			Algorithm algorithm = new Algorithm();
+			algorithm.setName(atts.getValue("manifest:algorithm-name"));
+			algorithm.setInitializationVector(atts.getValue("manifest:initialization-vector"));
+			if (_currentEncryptionData != null) {
+				_currentEncryptionData.setAlgorithm(algorithm);
+			}
+		} else if (localName.equals("key-derivation")) {
+			KeyDerivation keyDerivation = new KeyDerivation();
+			keyDerivation.setName(atts.getValue("manifest:key-derivation-name"));
+			keyDerivation.setSalt(atts.getValue("manifest:salt"));
+			if (atts.getValue("manifest:iteration-count") != null) {
+				try {
+					keyDerivation.setIterationCount(Integer.parseInt(atts.getValue("manifest:iteration-count")));
+				} catch (NumberFormatException nfe) {
+					throw new SAXException("not a number: "
+							+ atts.getValue("manifest:iteration-count"));
+				}
+			}
+			if (_currentEncryptionData != null) {
+				_currentEncryptionData.setKeyDerivation(keyDerivation);
+			}
+		}else if (localName.equals("manifest")) {
+                     mPackage.setManifestVersion(atts.getValue("manifest:version"));
+                }
+
+	}
+
+	*//**
+	 * Receive notification of the end of an element.
+	 *//*
+	public void endElement(String namespaceURI, String localName,
+			String qName) throws SAXException {
+		//ToDo Issue 263: Parsing of Manifest.xml specific part to be added to parser
+		if (localName.equals("encryption-data")) {
+			_currentEncryptionData = null;
+		}
+	}
+
+	*//**
+	 * Receive notification of character data.
+	 *//*
+	public void characters(char[] ch, int start, int length)
+			throws SAXException {
+	}
+
+	*//**
+	 * Receive notification of ignorable whitespace in element content.
+	 *//*
+	public void ignorableWhitespace(char[] ch, int start, int length)
+			throws SAXException {
+	}
+
+	*//**
+	 * Receive notification of a processing instruction.
+	 *//*
+	public void processingInstruction(String target, String data)
+			throws SAXException {
+	}
+
+	*//**
+	 * Receive notification of a skipped entity.
+	 *//*
+	public void skippedEntity(String name) throws SAXException {
+	}
+}
+*/
\ No newline at end of file
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfName.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfName.java
new file mode 100644
index 0000000..91cfa55
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfName.java
@@ -0,0 +1,194 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.HashMap;
+
+/** The class provides a simplified interface for XML names.
+ *  The class defines a name for an XML node. It embraces XML NamespaceURI, XML prefix and XML localname. */
+public class OdfName implements Comparable<OdfName> {
+
+	private OdfNamespace mNS;
+	private String mLocalName;
+	private String mExpandedName; // i.e. {nsURI}localName
+	private static HashMap<String, OdfName> mOdfNames = new HashMap<String, OdfName>();
+
+	private OdfName(OdfNamespace ns, String localname, String expandedName) {
+		mNS = ns;
+		mLocalName = localname;
+		mExpandedName = expandedName;
+	}
+
+	/** Returns the OdfName for the given namespace and name.
+	 *  Creates a new one, if the OdfName was not asked before.
+	 * @param name of the XML node
+	 * @return the OdfName for the given OdfNamesapce and name.
+	 */
+	public static OdfName newName(String name) {
+		return createName(null, name);
+	}
+
+	/** Returns the OdfName for the given namespace and name.
+	 *  Creates a new one, if the OdfName was not asked before.
+	 * @param odfNamespace the namespace of the name to be created
+	 * @param name of the XML node. Can be both local or qualified name.
+	 * @return the OdfName for the given OdfNamesapce and name.
+	 */
+	public static OdfName newName(OdfNamespace odfNamespace, String name) {
+		return createName(odfNamespace, name);
+	}
+
+	/** Returns the OdfName for the given namespace and name.
+	 *  Creates a new one, if the OdfName was not asked before.
+	 * @param namespaceNamed represents a W3C Namespace Name. The interface <code>NamespaceName</code> is often implemented by an enum.
+	 * @param name of the XML node. Can be both local or qualified name.
+	 * @return the OdfName for the given OdfNamesapce and name.
+	 */
+	public static OdfName newName(NamespaceName namespaceNamed, String name) {
+		return createName(OdfNamespace.newNamespace(namespaceNamed), name);
+	}
+
+	public static OdfName newName(String uri, String qname) {
+		String prefix = OdfNamespace.getPrefixPart(qname);
+		String localName = OdfNamespace.getLocalPart(qname);
+		OdfNamespace ns = OdfNamespace.newNamespace(prefix, uri);
+		return createName(ns, localName);
+	}
+
+	private static OdfName createName(OdfNamespace odfNamespace, String name) {
+		int i = 0;
+		if ((i = name.indexOf(':')) >= 0) {
+			name = name.substring(i + 1);
+		}
+		String expandedName = null;
+		// ToDo: Is there need for the prefix? For instance during serialization?
+		if (odfNamespace != null) {
+			StringBuilder b = new StringBuilder();
+			b.append('{');
+			b.append(odfNamespace.toString());
+			b.append('}');
+			b.append(name);
+			expandedName = b.toString();
+		} else {
+			expandedName = name;
+		}
+		// return a similar OdfName if one was already created before..
+		OdfName odfName = mOdfNames.get(expandedName);
+		if (odfName != null) {
+			return odfName;
+		} else {
+			// otherwise create a new OdfName, store it in the map and return it..
+			odfName = new OdfName(odfNamespace, name, expandedName);
+			mOdfNames.put(expandedName, odfName);
+			return odfName;
+		}
+	}
+
+	/** 
+	 * @return the XML Namespace URI, for <text:p> it would be urn:oasis:names:tc:opendocument:xmlns:text:1.0
+	 */
+	public String getUri() {
+		if (mNS == null) {
+			return null;
+		} else {
+			return mNS.getUri();
+		}
+	}
+
+	/**
+	 * @return the XML localname, for <text:p> it would be p.
+	 */
+	public String getLocalName() {
+		return mLocalName;
+	}
+
+	/**
+	 * @return the XML prefix, for <text:p> it would be text.
+	 */
+	public String getPrefix() {
+		String prefix = null;
+		if (mNS != null) {
+			prefix = mNS.getPrefix();
+		}
+		return prefix;
+	}
+
+	/**
+	 * @return the XML QName, the qualified name e.g. for <text:p> it is text:p.
+	 */
+	public String getQName() {
+		if (mNS != null) {
+			return ((mNS.getPrefix() + ":" + mLocalName).intern());
+		} else {
+			return mLocalName;
+		}
+	}
+
+	/**
+	 * @return the OdfName as String, represented by a concatenation of
+	 * XML Namespace URI (within brackets) and local name, as for <text:p> it would be
+	 * {urn:oasis:names:tc:opendocument:xmlns:text:1.0}p
+	 */
+	@Override
+	public String toString() {
+		return mExpandedName;
+	}
+
+	@Override
+	@SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
+	public boolean equals(Object obj) {
+		if (obj != null) {
+			return toString().equals(obj.toString());
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * @param namespaceUri of the XML node to be compared.
+	 * @param name of the XML node to be compared. Can be qualifed name or localname.
+	 * @return true if the given OdfName has the same namespaceURI and localname.
+	 */
+	public boolean equals(String namespaceUri, String name) {
+		if (!mNS.getUri().equals(namespaceUri)) {
+			return false;
+		}
+
+		int beginIndex = name.indexOf(':');
+		if (beginIndex >= 0) {
+			return mLocalName.equals(name.substring(beginIndex + 1));
+		} else {
+			return mLocalName.equals(name);
+		}
+	}
+
+	@Override
+	/** Returns the hashcode of the OdfName */
+	public int hashCode() {
+		return toString().hashCode();
+	}
+
+	/** Compares the by parameter given OdfName with this OdfName  */
+	public int compareTo(OdfName o) {
+		return toString().compareTo(o.toString());
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfNamespace.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfNamespace.java
new file mode 100644
index 0000000..a9dae22
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfNamespace.java
@@ -0,0 +1,162 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Class wrapping the XML Namespace URI and XML Namespace prefix as a single entity.
+ */
+public class OdfNamespace implements Comparable<OdfNamespace>, NamespaceName {
+
+	private static Map<String, OdfNamespace> mNamespacesByURI = new HashMap<String, OdfNamespace>();
+	private String mUri;
+	private String mPrefix;
+
+	private OdfNamespace() {
+	}
+
+	private OdfNamespace(String prefix, String uri) {
+		mUri = uri;
+		mPrefix = prefix;
+	}
+
+	/** Returns the OdfNamespace for the given name.
+	 *  Creates a new one, if the name was not asked before.
+	 * @param name represents a W3C Namespace Name. The interface <code>NamespaceName</code> is often implemented by an enum.
+	 * @return the OdfNamespace for the given name.
+	 */
+	public static OdfNamespace newNamespace(NamespaceName name) {
+		OdfNamespace ns = null;
+		if (name != null) {
+			ns = newNamespace(name.getPrefix(), name.getUri());
+		}
+		return ns;
+	}
+
+	/** Returns the OdfNamespace for the given name.
+	 *  Creates a new one, if the name was not asked before.
+	 * @param uri identifying the namespace.
+	 * @return the namespace.
+	 */
+	public static OdfNamespace newNamespace(String prefix, String uri) {
+		OdfNamespace odfNamespace = null;
+		if (uri != null && uri.length() > 0
+				&& prefix != null && prefix.length() > 0) {
+			odfNamespace = mNamespacesByURI.get(uri);
+			if (odfNamespace == null) {
+				odfNamespace = new OdfNamespace(prefix, uri);
+				mNamespacesByURI.put(uri, odfNamespace);
+			} else {
+				// prefix will be adapted for all OdfNamespaces (last wins)
+				odfNamespace.mPrefix = prefix;
+			}
+		} 
+		return odfNamespace;
+	}
+
+	/** Returns the namespace for the given uri.
+	 * @param uri identifying the namespace.
+	 * @return the namespace identified by the given uri.
+	 */
+	public static OdfNamespace getNamespace(String uri) {
+		OdfNamespace ns = null;
+		if (uri != null) {
+			ns = mNamespacesByURI.get(uri);
+		}
+		return ns;
+	}
+
+	public String getPrefix() {
+		return mPrefix;
+	}
+
+	public String getUri() {
+		return mUri;
+	}
+
+	@Override
+	@SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
+	public boolean equals(Object obj) {
+		if (mUri != null) {
+			return mUri.equals(obj.toString());
+		} else {
+			return mUri == obj;
+		}
+	}
+
+	@Override
+	public int hashCode() {
+		if (mUri != null) {
+			return mUri.hashCode();
+		} else {
+			return 0;
+		}
+	}
+
+	@Override
+	public String toString() {
+		return mUri;
+	}
+
+	/** Splits the XML Qname into the local name and the prefix.
+	 *
+	 * @param qname is the qualified name to be splitted.
+	 * @return an array of two strings containing first the prefix and the second the local part.
+	 * @throws IllegalArgumentException if no qualified name was given.
+	 */
+	public static String[] splitQName(String qname) throws IllegalArgumentException {
+		String localpart = qname;
+		String prefix = null;
+		int colon = qname.indexOf(':');
+		if (colon > 0) {
+			localpart = qname.substring(colon + 1);
+			prefix = qname.substring(0, colon);
+		} else {
+			throw new IllegalArgumentException("A qualified name was required, but '" + qname + "' was given!");
+		}
+		return new String[]{prefix, localpart};
+	}
+
+	/** 
+	 * @param qname is the qualified name to be splitted.
+	 * @return the local name of the XML Qname.
+	 * @throws IllegalArgumentException if no qualified name was given.
+	 */
+	public static String getPrefixPart(String qname) {
+		return splitQName(qname)[0];
+	}
+
+	/**
+	 * @param qname is the qualified name to be splitted.
+	 * @return the prefix of the XML Qname.
+	 * @throws IllegalArgumentException if no qualified name was given.
+	 */
+	public static String getLocalPart(String qname) {
+		return splitQName(qname)[1];
+	}
+
+	public int compareTo(OdfNamespace namespace) {
+		return toString().compareTo(namespace.toString());
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
new file mode 100644
index 0000000..0435471
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
@@ -0,0 +1,2489 @@
+/************************************************************************

+ *

+ * 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.pkg;

+

+import java.io.BufferedInputStream;

+import java.io.BufferedOutputStream;

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.Closeable;

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.FileOutputStream;

+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;

+import java.security.InvalidKeyException;

+import java.security.MessageDigest;

+import java.security.NoSuchAlgorithmException;

+import java.security.SecureRandom;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.HashMap;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+import java.util.Map.Entry;

+import java.util.Set;

+import java.util.StringTokenizer;

+import java.util.TreeSet;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+import java.util.regex.Pattern;

+import java.util.zip.CRC32;

+import java.util.zip.Deflater;

+import java.util.zip.Inflater;

+import java.util.zip.ZipEntry;

+import java.util.zip.ZipException;

+import java.util.zip.ZipFile;

+import java.util.zip.ZipOutputStream;

+

+import javax.crypto.Cipher;

+import javax.crypto.Mac;

+import javax.crypto.spec.IvParameterSpec;

+import javax.crypto.spec.SecretKeySpec;

+import javax.xml.parsers.DocumentBuilder;

+import javax.xml.parsers.DocumentBuilderFactory;

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.parsers.SAXParser;

+import javax.xml.parsers.SAXParserFactory;

+import javax.xml.transform.TransformerConfigurationException;

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.URIResolver;

+

+import org.apache.xerces.dom.DOMXSImplementationSourceImpl;

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

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

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

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

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

+import org.odftoolkit.odfdom.pkg.manifest.KeyDerivationElement;

+import org.odftoolkit.odfdom.pkg.manifest.ManifestElement;

+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;

+import org.odftoolkit.odfdom.pkg.manifest.OdfManifestDom;

+import org.odftoolkit.odfdom.pkg.manifest.StartKeyGenerationElement;

+import org.odftoolkit.odfdom.pkg.rdfa.Util;

+import org.odftoolkit.odfdom.type.Base64Binary;

+import org.w3c.dom.Document;

+import org.w3c.dom.ls.DOMImplementationLS;

+import org.w3c.dom.ls.LSOutput;

+import org.w3c.dom.ls.LSSerializer;

+import org.xml.sax.EntityResolver;

+import org.xml.sax.ErrorHandler;

+import org.xml.sax.InputSource;

+import org.xml.sax.SAXException;

+import org.xml.sax.SAXParseException;

+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().

+ */

+public class OdfPackage implements Closeable {

+	

+	// Static parts of file references

+	private static final String DOUBLE_DOT = "..";

+	private static final String DOT = ".";

+	private static final String SLASH = "/";

+	private static final String COLON = ":";

+	private static final String ENCODED_APOSTROPHE = "&apos;";

+	private static final String ENCODED_QUOTATION = "&quot;";

+	private static final String EMPTY_STRING = "";

+	private static final String XML_MEDIA_TYPE = "text/xml";

+	// Search patterns to be used in RegEx expressions

+	private static final Pattern BACK_SLASH_PATTERN = Pattern.compile("\\\\");

+	private static final Pattern DOUBLE_SLASH_PATTERN = Pattern.compile("//");

+	private static final Pattern QUOTATION_PATTERN = Pattern.compile("\"");

+	private static final Pattern APOSTROPHE_PATTERN = Pattern.compile("'");

+	private static final Pattern CONTROL_CHAR_PATTERN = Pattern.compile("\\p{Cntrl}");

+	private static Set<String> mCompressedFileTypes;

+	// some well known streams inside ODF packages

+	private String mMediaType;

+	private String mBaseURI;

+	private ZipHelper mZipFile;

+	private Resolver mResolver;

+	private Map<String, ZipEntry> mZipEntries;

+	private HashMap<String, ZipEntry> mOriginalZipEntries;

+	private Map<String, OdfFileEntry> mManifestEntries;

+	// All opened documents from the same package are cached (including the root

+	// document)

+	private Map<String, OdfPackageDocument> mPkgDocuments;

+	// Three different incarnations of a package file/data

+	// save() will check 1) mPkgDoms, 2) if not check mMemoryFileCache

+	private HashMap<String, Document> mPkgDoms;

+	private HashMap<String, byte[]> mMemoryFileCache;

+	

+	private ErrorHandler mErrorHandler;

+	private String mManifestVersion;

+	private OdfManifestDom mManifestDom;

+	private String oldPwd;

+	private String newPwd;

+	

+	/* Commonly used files within the ODF Package */

+	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".

+		 */

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

+		 */

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

+		 */

+		MEDIA_TYPE("mimetype");

+		private final String internalPath;

+		

+		OdfFile(String internalPath) {

+			this.internalPath = internalPath;

+		}

+		

+		public String getPath() {

+			return internalPath;

+		}

+	}

+	

+	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" };

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

+	}

+	

+	/**

+	 * Creates the ODFPackage as an empty Package.

+	 */

+	private OdfPackage() {

+		mMediaType = null;

+		mResolver = null;

+		mPkgDocuments = new HashMap<String, OdfPackageDocument>();

+		mPkgDoms = new HashMap<String, Document>();

+		mMemoryFileCache = new HashMap<String, byte[]>();

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

+		// specify whether validation should be enabled and what SAX

+		// ErrorHandler should be used.

+		if (mErrorHandler == null) {

+			String errorHandlerProperty = System.getProperty("org.odftoolkit.odfdom.validation");

+			if (errorHandlerProperty != null) {

+				if (errorHandlerProperty.equalsIgnoreCase("true")) {

+					mErrorHandler = new DefaultErrorHandler();

+					Logger.getLogger(OdfPackage.class.getName()).info("Activated validation with default ErrorHandler!");

+				} else {

+					try {

+						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) {

+						Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, "Could not initiate validation with the given ErrorHandler: '" + errorHandlerProperty + "'", ex);

+					}

+				}

+			}

+		}

+	}

+	

+	/**

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

+	 * @see #getErrorHandler*

+	 */

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

+		this();

+		mBaseURI = getBaseURLFromFile(pkgFile);

+		mErrorHandler = errorHandler;

+		oldPwd = password;

+		newPwd = oldPwd;

+		mBaseURI = baseURI;

+		

+		InputStream packageStream = new FileInputStream(pkgFile);

+		try {

+			initializeZip(packageStream);

+		} 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.

+	 * </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

+	 * @see #getErrorHandler

+	 * @throws java.lang.Exception

+	 *             - if the package could not be created

+	 * @see #getErrorHandler*

+	 */

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

+		this(); // calling private constructor

+		mErrorHandler = errorHandler;

+		mBaseURI = baseURI;

+		oldPwd = password;

+		newPwd = oldPwd;

+		initializeZip(packageStream);

+	}

+	

+	/**

+	 * Loads an OdfPackage from the given documentURL.

+	 * <p>

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

+	 * @return the OpenDocument document represented as an OdfPackage

+	 * @throws java.lang.Exception

+	 *             - if the package could not be loaded

+	 */

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

+		File pkgFile = new File(path);

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

+	}

+	

+	/**

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

+	 * </p>

+	 * 

+	 * @param pkgFile

+	 *            - the ODF Package

+	 * @return the OpenDocument document represented as an OdfPackage

+	 * @throws java.lang.Exception

+	 *             - if the package could not be loaded

+	 */

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

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

+	 * </p>

+	 * 

+	 * @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

+	 */

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

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

+	 * </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

+	 * @see #getErrorHandler

+	 */

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

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

+	 * </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

+	 * @see #getErrorHandler

+	 */

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

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

+	 * </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

+	 * @see #getErrorHandler

+	 */

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

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

+	}

+	

+	// Initialize using memory

+	private void initializeZip(InputStream odfStream) throws Exception {

+		ByteArrayOutputStream tempBuf = new ByteArrayOutputStream();

+		StreamHelper.transformStream(odfStream, tempBuf);

+		byte[] mTempByteBuf = tempBuf.toByteArray();

+		tempBuf.close();

+		if (mTempByteBuf.length < 3) {

+			OdfValidationException ve = new OdfValidationException(OdfPackageConstraint.PACKAGE_IS_NO_ZIP, getBaseURI());

+			if (mErrorHandler != null) {

+				mErrorHandler.fatalError(ve);

+			}

+			throw new IllegalArgumentException(ve);

+		}

+		mZipFile = new ZipHelper(this, mTempByteBuf);

+		readZip();

+	}

+	

+	// // Initialize using ZipFile

+	// private void initializeZip(File pkgFile) throws Exception {

+	// try {

+	// mZipFile = new ZipHelper(this, new ZipFile(pkgFile));

+	// } catch (ZipException ze) {

+	// OdfValidationException ve = new

+	// OdfValidationException(OdfPackageConstraint.PACKAGE_IS_NO_ZIP,

+	// getBaseURI());

+	// if (mErrorHandler != null) {

+	// mErrorHandler.fatalError(ve);

+	// }

+	// throw new IllegalArgumentException(ve);

+	// }

+	// readZip();

+	// }

+	

+	private void readZip() throws Exception {

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

+		String firstEntryName = mZipFile.entriesToMap(mZipEntries);

+		if (mZipEntries.isEmpty()) {

+			OdfValidationException ve = new OdfValidationException(OdfPackageConstraint.PACKAGE_IS_NO_ZIP, getBaseURI());

+			if (mErrorHandler != null) {

+				mErrorHandler.fatalError(ve);

+			}

+			throw new IllegalArgumentException(ve);

+		} else {

+			// initialize the files of the package (fileEnties of Manifest)

+			parseManifest();

+			

+			// initialize the package media type

+			initializeMediaType(firstEntryName);

+			

+			// ToDo: Remove all META-INF/* files from the fileEntries of

+			// Manifest

+			mOriginalZipEntries = new HashMap<String, ZipEntry>();

+			mOriginalZipEntries.putAll(mZipEntries);

+			mZipEntries.remove(OdfPackage.OdfFile.MEDIA_TYPE.getPath());

+			mZipEntries.remove(OdfPackage.OdfFile.MANIFEST.getPath());

+			mZipEntries.remove("META-INF/");

+			if (mErrorHandler != null) {

+				validateManifest();

+			}

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

+			while (zipPaths.hasNext()) {

+				String internalPath = zipPaths.next();

+				// every resource aside the /META-INF/manifest.xml (and

+				// META-INF/ directory)

+				// and "mimetype" will be added as fileEntry

+				if (!internalPath.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && !internalPath.equals("META-INF/") && !internalPath.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {

+					// aside "mediatype" and "META-INF/manifest"

+					// add manifest entry as to be described by a

+					// <manifest:file-entry>

+					ensureFileEntryExistence(internalPath);

+				}

+			}

+		}

+	}

+	

+	/**

+	 * Validates if all file entries exist in the ZIP and vice versa

+	 * 

+	 * @throws SAXException

+	 */

+	private void validateManifest() throws SAXException {

+		Set zipPaths = mZipEntries.keySet();

+		Set 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();

+			String documentURL = getBaseURI();

+			String internalPath;

+			while (iter.hasNext()) {

+				internalPath = (String) iter.next();

+				if (!internalPath.endsWith(SLASH)) { // not for directories!

+					logValidationError(OdfPackageConstraint.MANIFEST_DOES_NOT_LIST_FILE, documentURL, internalPath);

+				}

+			}

+		}

+		if (sharedPaths.size() < manifestPaths.size()) {

+			Set<String> zipPathSubset = new HashSet<String>(mManifestEntries.keySet());

+			zipPathSubset.removeAll(sharedPaths);

+			// removing root directory

+			zipPathSubset.remove(SLASH);

+			

+			// No directory are listed in a ZIP removing all directory with

+			// content

+			Iterator<String> manifestOnlyPaths = zipPathSubset.iterator();

+			while (manifestOnlyPaths.hasNext()) {

+				String manifestOnlyPath = manifestOnlyPaths.next();

+				// assumption: all directories end with slash

+				if (manifestOnlyPath.endsWith(SLASH)) {

+					removeDirectory(manifestOnlyPath);

+				} else {

+					// if it is a nonexistent file

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

+					mManifestEntries.remove(manifestOnlyPath);

+				}

+			}

+		}

+		// remove none document directories

+		Iterator<String> sharedPathsIter = sharedPaths.iterator();

+		while (sharedPathsIter.hasNext()) {

+			String sharedPath = sharedPathsIter.next();

+			// assumption: all directories end with slash

+			if (sharedPath.endsWith(SLASH)) {

+				removeDirectory(sharedPath);

+			}

+		}

+	}

+	

+	/**

+	 * Removes directories without a mimetype (all none documents)

+	 * 

+	 * @throws SAXException

+	 */

+	private void removeDirectory(String path) throws SAXException {

+		if (path.endsWith(SLASH)) {

+			// Check if it is a sub-document?

+			// Our assumption: it is a document if it has a mimetype...

+			String dirMimeType = mManifestEntries.get(path).getMediaTypeString();

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

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

+				OdfFileEntry manifestEntry = mManifestEntries.remove(path);

+				FileEntryElement manifestEle = manifestEntry.getOdfElement();

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

+			}

+		}

+	}

+	

+	/**

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

+	 * media/mimte type

+	 * 

+	 * @throws SAXException

+	 */

+	private void initializeMediaType(String firstEntryName) throws SAXException {

+		ZipEntry mimetypeEntry = mZipEntries.get(OdfPackage.OdfFile.MEDIA_TYPE.getPath());

+		if (mimetypeEntry != null) {

+			if (mErrorHandler != null) {

+				validateMimeTypeEntry(mimetypeEntry, firstEntryName);

+			}

+			// get mediatype value of the root document/package from the

+			// mediatype file stream

+			String entryMediaType = getMediaTypeFromEntry(mimetypeEntry);

+			// get mediatype value of the root document/package from the

+			// manifest.xml

+			String manifestMediaType = getMediaTypeFromManifest();

+			// if a valid mediatype was set by the "mimetype" file

+			if (entryMediaType != null && !entryMediaType.equals(EMPTY_STRING)) {

+				// the root document's mediatype is taken from the "mimetype"

+				// file

+				mMediaType = entryMediaType;

+				if (mErrorHandler != null) {

+					// if the "mediatype" does exist, the

+					// "/META-INF/manifest.xml" have to contain a MIMETYPE for

+					// the root document);

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

+						// if the two media-types are inconsistent

+						if (!entryMediaType.equals(manifestMediaType)) {

+							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)

+						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

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

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

+					mMediaType = manifestMediaType;

+				}

+			}

+		} else {

+			String manifestMediaType = getMediaTypeFromManifest();

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

+				// if not mimetype file exists, the root document mediaType from

+				// the manifest.xml is taken

+				mMediaType = manifestMediaType;

+			}

+			if (mErrorHandler != null) {

+				logValidationWarning(OdfPackageConstraint.MIMETYPE_NOT_IN_PACKAGE, getBaseURI());

+			}

+		}

+	}

+	

+	private void validateMimeTypeEntry(ZipEntry mimetypeEntry, String firstEntryName) throws SAXException {

+		

+		if (mimetypeEntry.getMethod() != ZipEntry.STORED) {

+			logValidationError(OdfPackageConstraint.MIMETYPE_IS_COMPRESSED, getBaseURI());

+		}

+		if (mimetypeEntry.getExtra() != null) {

+			logValidationError(OdfPackageConstraint.MIMETYPE_HAS_EXTRA_FIELD, getBaseURI());

+		}

+		if (!OdfFile.MEDIA_TYPE.getPath().equals(firstEntryName)) {

+			logValidationError(OdfPackageConstraint.MIMETYPE_NOT_FIRST_IN_PACKAGE, getBaseURI());

+		}

+	}

+	

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

+	private String getMediaTypeFromManifest() {

+		OdfFileEntry rootDocumentEntry = mManifestEntries.get(SLASH);

+		if (rootDocumentEntry != null) {

+			return rootDocumentEntry.getMediaTypeString();

+		} else {

+			return null;

+		}

+	}

+	

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

+	private String getMediaTypeFromEntry(ZipEntry mimetypeEntry) {

+		String entryMediaType = null;

+		ByteArrayOutputStream out = new ByteArrayOutputStream();

+		try {

+			StreamHelper.transformStream(mZipFile.getInputStream(mimetypeEntry), out);

+			entryMediaType = new String(out.toByteArray(), 0, out.size(), "UTF-8");

+		} catch (Exception ex) {

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

+		} finally {

+			if (out != null) {

+				try {

+					out.close();

+				} catch (IOException ex) {

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

+				}

+				out = null;

+			}

+		}

+		return entryMediaType;

+	}

+	

+	/**

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

+	 */

+	void cacheDocument(OdfPackageDocument doc, String internalPath) {

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

+	 * 

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

+	 */

+	public String getBaseURI() {

+		return mBaseURI;

+	}

+	

+	/**

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

+	 */

+	public OdfPackageDocument loadDocument(String internalPath) {

+		OdfPackageDocument doc = getCachedDocument(internalPath);

+		if (doc == null) {

+			String mediaTypeString = getMediaTypeString();

+			// ToDo: Issue 265 - Remove dependency to higher layer by factory

+			OdfMediaType odfMediaType = OdfMediaType.getOdfMediaType(mediaTypeString);

+			if (odfMediaType == null) {

+				doc = new OdfPackageDocument(this, internalPath, mediaTypeString);

+			} else {

+				try {

+					String documentMediaType = getMediaTypeString(internalPath);

+					odfMediaType = OdfMediaType.getOdfMediaType(documentMediaType);

+					if (odfMediaType == null) {

+						return null;

+					}

+					// ToDo: Issue 265 - Remove dependency to higher layer by

+					// facotory

+					doc = OdfDocument.loadDocument(this, internalPath);

+				} catch (Exception ex) {

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

+				}

+			}

+		}

+		return doc;

+	}

+	

+	/**

+	 * @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

+	public OdfPackageDocument getCachedDocument(String internalPath) {

+		internalPath = normalizeDirectoryPath(internalPath);

+		return mPkgDocuments.get(internalPath);

+	}

+	

+	/**

+	 * @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) {

+		internalPath = normalizeFilePath(internalPath);

+		this.insert(dom, internalPath, null);

+	}

+	

+	/**

+	 * @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) {

+		internalPath = normalizeFilePath(internalPath);

+		return this.mPkgDoms.get(internalPath);

+	}

+	

+	/**

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

+	 * 

+	 * @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

+		internalPath = normalizeDirectoryPath(internalPath);

+		try {

+			// 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);

+			}

+		} catch (Exception ex) {

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

+		}

+		

+	}

+	

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

+	Set<String> getCachedPackageDocuments() {

+		return mPkgDocuments.keySet();

+	}

+	

+	public OdfPackageDocument getRootDocument() {

+		return mPkgDocuments.get(OdfPackageDocument.ROOT_DOCUMENT_PATH);

+	}

+	

+	public OdfManifestDom getManifestDom() {

+		return mManifestDom;

+	}

+	

+	/**

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

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

+	 */

+	public String getMediaTypeString(String internalPath) {

+		String mediaType = null;

+		if (internalPath != null) {

+			if (internalPath.equals(EMPTY_STRING) || internalPath.equals(SLASH)) {

+				return mMediaType;

+			} else {

+				mediaType = getMediaTypeFromEntry(normalizePath(internalPath));

+				// if no file was found, look for a normalized directory name

+				if (mediaType == null) {

+					mediaType = getMediaTypeFromEntry(normalizeDirectoryPath(internalPath));

+				}

+			}

+		}

+		return mediaType;

+	}

+	

+	private String getMediaTypeFromEntry(String internalPath) {

+		OdfFileEntry entry = getFileEntry(internalPath);

+		// if the document is not in the package, the return is NULL

+		if (entry != null) {

+			return entry.getMediaTypeString();

+		} else {

+			return null;

+		}

+	}

+	

+	/**

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

+	 * document)

+	 * 

+	 * @return the mediaType string of this ODF package

+	 */

+	public String getMediaTypeString() {

+		return mMediaType;

+	}

+	

+	/**

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

+	 * document)

+	 * 

+	 * @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

+	 * 

+	 * @param internalPath

+	 *            The relative package path within the ODF package

+	 * @return The manifest file entry will be returned.

+	 */

+	public OdfFileEntry getFileEntry(String internalPath) {

+		internalPath = normalizeFilePath(internalPath);

+		return mManifestEntries.get(internalPath);

+	}

+	

+	/**

+	 * Get a OdfFileEntries from the manifest file (i.e. /META/manifest.xml")

+	 * 

+	 * @return The paths of the manifest file entries will be returned.

+	 */

+	public Set<String> getFilePaths() {

+		return mManifestEntries.keySet();

+	}

+	

+	/**

+	 * Check existence of a file in the 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) {

+		internalPath = normalizeFilePath(internalPath);

+		return mManifestEntries.containsKey(internalPath);

+	}

+	

+	/**

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

+	 */

+	public void save(String odfPath) throws Exception {

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

+	 * 

+	 * @param pkgFile

+	 *            - the File to save the ODF package to

+	 * @throws java.lang.Exception

+	 *             - if the package could not be saved

+	 */

+	public void save(File pkgFile) throws Exception {

+		String baseURL = getBaseURLFromFile(pkgFile);

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

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

+		// // ToDo: (Issue 219 - PackageRefactoring) --maybe it's better to

+		// write to a new file and copy that

+		// // to the original one - would be less memory footprint

+		// cacheContent();

+		// }

+		FileOutputStream fos = new FileOutputStream(pkgFile);

+		save(fos, baseURL);

+	}

+	

+	public void save(OutputStream odfStream) throws Exception {

+		save(odfStream, null);

+	}

+	

+	/**

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

+	 * be encrypted when save.

+	 * 

+	 * @param password

+	 *            password

+	 * @since 0.8.9

+	 */

+	public void setPassword(String password) {

+		newPwd = password;

+	}

+	

+	/**

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

+	 */

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

+		// try {

+		mBaseURI = baseURL;

+		OdfFileEntry rootEntry = mManifestEntries.get(SLASH);

+		if (rootEntry == null) {

+			rootEntry = new OdfFileEntry(getManifestDom().getRootElement().newFileEntryElement(SLASH, mMediaType));

+			mManifestEntries.put(SLASH, rootEntry);

+		} else {

+			rootEntry.setMediaTypeString(mMediaType);

+		}

+		ZipOutputStream zos = new ZipOutputStream(odfStream);

+		try {

+			// remove mediatype path and use it as first

+			this.mManifestEntries.remove(OdfFile.MEDIA_TYPE.getPath());

+			Iterator<String> it = mManifestEntries.keySet().iterator();

+			String path = null;

+			boolean isFirstFile = true;

+			CRC32 crc = new CRC32();

+			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

+				if (isFirstFile) {

+					isFirstFile = false;

+					// create "mimetype" from current attribute value

+					data = mMediaType.getBytes("UTF-8");

+					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())) {

+						data = getBytes(path);

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

+					}

+				}

+				data = null;

+				// } catch (IOException ex) {

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

+				// null, ex);

+				// }

+			}

+			// Create "META-INF/" directory

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

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

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

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

+		} finally {

+			zos.close();

+		}

+		odfStream.flush();

+		// } catch (IOException ex) {

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

+		// ex);

+		// }

+	}

+	

+	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);

+		}

+		ze.setTime(modTime);

+		if (fileNeedsCompression(path)) {

+			ze.setMethod(ZipEntry.DEFLATED);

+		} else {

+			ze.setMethod(ZipEntry.STORED);

+		}

+		crc.reset();

+		if (data != null) {

+			OdfFileEntry fileEntry = mManifestEntries.get(path);

+			// encrypt file

+			if (data.length > 0 && fileNeedsEncryption(path)) {

+				data = encryptData(data, fileEntry);

+				// encrypted file entries shall be flagged as 'STORED'.

+				ze.setMethod(ZipEntry.STORED);

+				// the size of the encrypted file should replace the real

+				// size value.

+				ze.setCompressedSize(data.length);

+			} else {

+				if (fileEntry != null) {

+					fileEntry.setSize(null);

+					FileEntryElement fileEntryEle = fileEntry.getOdfElement();

+					EncryptionDataElement encryptionDataElement = OdfElement.findFirstChildNode(EncryptionDataElement.class, fileEntryEle);

+					while (encryptionDataElement != null) {

+						fileEntryEle.removeChild(encryptionDataElement);

+						encryptionDataElement = OdfElement.findFirstChildNode(EncryptionDataElement.class, fileEntryEle);

+					}

+				}

+				ze.setCompressedSize(-1);

+			}

+			ze.setSize(data.length);

+			crc.update(data);

+			ze.setCrc(crc.getValue());

+		} else {

+			ze.setSize(0);

+			ze.setCrc(0);

+			ze.setCompressedSize(-1);

+		}

+		zos.putNextEntry(ze);

+		if (data != null) {

+			zos.write(data, 0, data.length);

+		}

+		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

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

+	 */

+	private boolean fileNeedsEncryption(String internalPath) {

+		if (newPwd != null) {

+			// ODF spec does not allow encrytion of "./mimetype" file

+			if (internalPath.endsWith(SLASH) || OdfFile.MANIFEST.getPath().equals(internalPath) || OdfPackage.OdfFile.MEDIA_TYPE.getPath().equals(internalPath)) {

+				return false;

+			}

+			return fileNeedsCompression(internalPath);

+		} else {

+			return false;

+		}

+	}

+	

+	/**

+	 * Determines if a file have to be compressed.

+	 * 

+	 * @param internalPath

+	 *            the file location

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

+	 */

+	private boolean fileNeedsCompression(String internalPath) {

+		boolean result = true;

+		

+		// ODF spec does not allow compression of "./mimetype" file

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

+			return false;

+		}

+		// see if the file was already compressed

+		if (internalPath.lastIndexOf(".") > 0) {

+			String suffix = internalPath.substring(internalPath.lastIndexOf(".") + 1, internalPath.length());

+			if (mCompressedFileTypes.contains(suffix.toLowerCase())) {

+				result = false;

+			}

+		}

+		return result;

+	}

+	

+	private void close(Closeable closeable) throws SAXException, IOException {

+		if (closeable != null) {

+			try {

+				closeable.close();

+			} catch (IOException ioe) {

+				// Warning only. This is usually just logged.

+				// Allow user to throw an exception all the same

+				handleIOException(ioe, true);

+			}

+		}

+	}

+	

+	private void handleIOException(IOException ex, boolean warningOnly) throws SAXException, IOException {

+		if (mErrorHandler != null) {

+			SAXParseException se = new SAXParseException(ex.getMessage(), null, ex);

+			try {

+				if (warningOnly) {

+					mErrorHandler.warning(se);

+				} else {

+					mErrorHandler.error(se);

+				}

+			} catch (SAXException e1) {

+				if (e1 == se) {

+					throw ex;

+					// We re-throw the original exception if the error handler

+					// just threw the SAXException we gave it.

+				} else {

+					throw e1; // Throw what the error handler threw.

+				}

+			}

+		}

+		throw ex; // No error handler? Just throw the original IOException

+	}

+	

+	/**

+	 * 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) {

+			try {

+				mZipFile.close();

+			} catch (IOException ex) {

+				// log exception and continue

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

+			}

+		}

+		// release all stuff - this class is impossible to use afterwards

+		mZipFile = null;

+		mMediaType = null;

+		mZipEntries = null;

+		mPkgDoms = null;

+		mMemoryFileCache = null;

+		mManifestEntries = null;

+		mBaseURI = null;

+		mResolver = null;

+	}

+	

+	/**

+	 * 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 {

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

+		ManifestElement manifestEle = mManifestDom.getRootElement();

+		if (manifestEle != null) {

+			setManifestVersion(manifestEle.getVersionAttribute());

+		} else {

+			logValidationError(OdfPackageConstraint.MANIFEST_NOT_IN_PACKAGE, getBaseURI());

+		}

+		Map<String, OdfFileEntry> entries = getManifestEntries();

+		FileEntryElement fileEntryEle = OdfElement.findFirstChildNode(FileEntryElement.class, manifestEle);

+		while (fileEntryEle != null) {

+			String path = fileEntryEle.getFullPathAttribute();

+			if (path.equals(EMPTY_STRING)) {

+				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);

+			}

+			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 {

+		// create sax parser

+		SAXParserFactory saxFactory = new org.apache.xerces.jaxp.SAXParserFactoryImpl();

+		saxFactory.setNamespaceAware(true);

+		saxFactory.setValidating(false);

+		try {

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

+		} catch (Exception ex) {

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

+		}

+		

+		SAXParser parser = saxFactory.newSAXParser();

+		XMLReader xmlReader = parser.getXMLReader();

+		// 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

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

+		// More details at

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

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

+		return xmlReader;

+	}

+	

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

+	// to be written later to the manifest

+	private void createSubEntries(String internalPath) {

+		ManifestElement manifestEle = getManifestDom().getRootElement();

+		StringTokenizer tok = new StringTokenizer(internalPath, SLASH);

+		if (tok.countTokens() > 1) {

+			String path = EMPTY_STRING;

+			while (tok.hasMoreTokens()) {

+				String directory = tok.nextToken();

+				// it is a directory, if there are more token

+				if (tok.hasMoreTokens()) {

+					path = path + directory + SLASH;

+					OdfFileEntry fileEntry = mManifestEntries.get(path);

+					if (fileEntry == null) {

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

+					}

+				}

+			}

+		}

+	}

+	

+	/**

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

+	 */

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

+		internalPath = normalizeFilePath(internalPath);

+		if (mediaType == null) {

+			mediaType = XML_MEDIA_TYPE;

+		}

+		if (fileDOM == null) {

+			mPkgDoms.remove(internalPath);

+		} else {

+			mPkgDoms.put(internalPath, fileDOM);

+		}

+		if (!internalPath.endsWith(OdfFile.MANIFEST.internalPath)) {

+			updateFileEntry(ensureFileEntryExistence(internalPath), mediaType);

+		}

+		// remove byte array version of new DOM

+		mMemoryFileCache.remove(internalPath);

+	}

+	

+	/**

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

+	 */

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

+		internalPath = normalizeDirectoryPath(internalPath);

+		// 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;

+		if (sourceDocument.isRootDocument()) {

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

+		} else {

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

+		}

+		// 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;

+		}

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

+		for (String entryName : entryNameList) {

+			OdfFileEntry entry = entryMapToCopy.get(entryName);

+			if (entry != null) {

+				try {

+					// 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());

+						} else {

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

+						}

+					} else {

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

+						insert(sourceDocument.getPackage().getInputStream(entryName), 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.

+	 * 

+	 * @param parentDocument

+	 *            the document, which XML files shall be serialized

+	 */

+	void flushDoms(OdfPackageDocument parentDocument) {

+		OdfPackage pkg = parentDocument.getPackage();

+		if (parentDocument.isRootDocument()) {

+			// for every parsed XML file (DOM)

+			for (String xmlFilePath : pkg.getCachedDoms().keySet()) {

+				// insert it to the package (serializing and caching it till

+				// final save)

+				pkg.insert(pkg.getCachedDom(xmlFilePath), xmlFilePath, "text/xml");

+			}

+		} else {

+			// if not root document, check ..

+			String parentDocumentPath = parentDocument.getDocumentPath();

+			// for every parsed XML file (DOM)

+			for (String xmlFilePath : pkg.getCachedDoms().keySet()) {

+				// if the file is within the given document

+				if (xmlFilePath.startsWith(parentDocumentPath)) {

+					// insert it to the package (serializing and caching it till

+					// final save)

+					pkg.insert(pkg.getCachedDom(xmlFilePath), xmlFilePath, "text/xml");

+				}

+			}

+		}

+	}

+	

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

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

+		directory = normalizeDirectoryPath(directory);

+		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);

+			}

+		}

+		return subEntries;

+	}

+	

+	/**

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

+	 */

+	public Set<String> getDocumentPaths() {

+		return getDocumentPaths(null, null);

+	}

+	

+	/**

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

+	 */

+	public Set<String> getDocumentPaths(String mediaTypeString) {

+		return getDocumentPaths(mediaTypeString, null);

+	}

+	

+	/**

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

+	 */

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

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

+		Set<String> packageFilePaths = getFilePaths();

+		// check manifest for current embedded OdfPackageDocuments

+		for (String filePath : packageFilePaths) {

+			// check if a subdirectory was the criteria and if the files are

+			// beyond the given subdirectory

+			if (subDirectory == null || filePath.startsWith(subDirectory) && !filePath.equals(subDirectory)) {

+				// with documentURL is not empty and is a directory (ie. a

+				// potential document)

+				if (filePath.length() > 1 && filePath.endsWith(SLASH)) {

+					String fileMediaType = getFileEntry(filePath).getMediaTypeString();

+					if (fileMediaType != null && !fileMediaType.equals(EMPTY_STRING)) {

+						// check if a certain mediaType was the critera and was

+						// matched

+						if (mediaTypeString == null || mediaTypeString.equals(fileMediaType)) {

+							// only relative path is allowed as path

+							innerDocuments.add(filePath);

+						}

+					}

+				}

+			}

+		}

+		return innerDocuments;

+	}

+	

+	/**

+	 * 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 (mManifestEntries == null) {

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

+			}

+			fileEntry = mManifestEntries.get(internalPath);

+			// for every new file entry

+			if (fileEntry == null) {

+				ManifestElement manifestEle = getManifestDom().getRootElement();

+				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);

+			}

+		}

+		return fileEntry;

+	}

+	

+	/**

+	 * update file entry setting.

+	 */

+	private void updateFileEntry(OdfFileEntry fileEntry, String mediaType) {

+		// overwrite previous settings

+		fileEntry.setMediaTypeString(mediaType);

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

+		fileEntry.setEncryptionData(null);

+		// reset size to be unset

+		fileEntry.setSize(null);

+	}

+	

+	/**

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

+	 * 

+	 * @param internalPath

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

+	 * @return an org.w3c.dom.Document

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 */

+	public Document getDom(String internalPath) throws SAXException, ParserConfigurationException, IllegalArgumentException, TransformerConfigurationException, TransformerException, IOException {

+		

+		Document doc = mPkgDoms.get(internalPath);

+		if (doc != null) {

+			return doc;

+		}

+		

+		InputStream is = getInputStream(internalPath);

+		

+		// We depend on Xerces. So we just go ahead and create a Xerces DBF,

+		// without

+		// forcing everything else to do so.

+		DocumentBuilderFactory factory = new org.apache.xerces.jaxp.DocumentBuilderFactoryImpl();

+		factory.setNamespaceAware(true);

+		factory.setValidating(false);

+		

+		DocumentBuilder builder = factory.newDocumentBuilder();

+		builder.setEntityResolver(getEntityResolver());

+		

+		String uri = getBaseURI() + internalPath;

+		

+		if (mErrorHandler != null) {

+			builder.setErrorHandler(mErrorHandler);

+		}

+		

+		InputSource ins = new InputSource(is);

+		ins.setSystemId(uri);

+		

+		doc = builder.parse(ins);

+		

+		if (doc != null) {

+			mPkgDoms.put(internalPath, doc);

+			mMemoryFileCache.remove(internalPath);

+		}

+		return doc;

+	}

+	

+	/**

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

+	 */

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

+		InputStream is = null;

+		if (sourceURI.isAbsolute()) {

+			// if the URI is absolute it can be converted to URL

+			is = sourceURI.toURL().openStream();

+		} else {

+			// otherwise create a file class to open the stream

+			is = new FileInputStream(sourceURI.toString());

+		}

+		insert(is, internalPath, mediaType);

+	}

+	

+	/**

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

+	 */

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

+		internalPath = normalizeFilePath(internalPath);

+		if (fileStream == null) {

+			// adding a simple directory without MIMETYPE

+			insert((byte[]) null, internalPath, mediaType);

+		} else {

+			ByteArrayOutputStream baos = new ByteArrayOutputStream();

+			BufferedInputStream bis = null;

+			if (fileStream instanceof BufferedInputStream) {

+				bis = (BufferedInputStream) fileStream;

+			} else {

+				bis = new BufferedInputStream(fileStream);

+			}

+			StreamHelper.transformStream(bis, baos);

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

+			insert(data, internalPath, mediaType);

+		}

+	}

+	

+	/**

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

+	 */

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

+		internalPath = normalizeFilePath(internalPath);

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

+			try {

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

+			} catch (UnsupportedEncodingException useEx) {

+				Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, "ODF file could not be created as string!", useEx);

+			}

+			return;

+		}

+		if (fileBytes != null) {

+			mMemoryFileCache.put(internalPath, fileBytes);

+			// as DOM would overwrite data cache, any existing DOM cache will be

+			// deleted

+			if (mPkgDoms.containsKey(internalPath)) {

+				mPkgDoms.remove(internalPath);

+			}

+		}

+		updateFileEntry(ensureFileEntryExistence(internalPath), mediaTypeString);

+	}

+	

+	// changed to package access as the manifest interiors are an implementation

+	// detail

+	Map<String, OdfFileEntry> getManifestEntries() {

+		return mManifestEntries;

+	}

+	

+	/**

+	 * Get package (sub-) content as byte array

+	 * 

+	 * @param internalPath

+	 *            relative documentURL to the package content

+	 * @return the unzipped package content as byte array

+	 * @throws java.lang.Exception

+	 */

+	public byte[] getBytes(String internalPath) {

+		// if path is null or empty return null

+		if (internalPath == null || internalPath.equals(EMPTY_STRING)) {

+			return null;

+		}

+		internalPath = normalizeFilePath(internalPath);

+		byte[] data = null;

+		// if the file is "mimetype"

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

+			if (mMediaType == null) {

+				return null;

+			} else {

+				try {

+					data = mMediaType.getBytes("UTF-8");

+				} catch (UnsupportedEncodingException use) {

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

+					return null;

+				}

+			}

+		} else if (mPkgDoms.get(internalPath) != null) {

+			data = flushDom(mPkgDoms.get(internalPath));

+			mMemoryFileCache.put(internalPath, data);

+			// if the path's file was cached to memory (second high priority)

+		} else if (mManifestEntries.containsKey(internalPath) && mMemoryFileCache.get(internalPath) != null) {

+			data = mMemoryFileCache.get(internalPath);

+			

+			// if the path's file was cached to disc (lowest priority)

+		}

+		// if not available, check if file exists in ZIP

+		if (data == null) {

+			ZipEntry entry = null;

+			if ((entry = mZipEntries.get(internalPath)) != null) {

+				InputStream inputStream = null;

+				try {

+					inputStream = mZipFile.getInputStream(entry);

+					if (inputStream != null) {

+						ByteArrayOutputStream out = new ByteArrayOutputStream();

+						StreamHelper.transformStream(inputStream, out);

+						data = out.toByteArray();

+						// decrypt data as needed

+						if (!(internalPath.equals(OdfFile.MEDIA_TYPE.getPath()) || internalPath.equals(OdfFile.MANIFEST.getPath()))) {

+							OdfFileEntry manifestEntry = getManifestEntries().get(internalPath);

+							EncryptionDataElement encryptionDataElement = manifestEntry.getEncryptionData();

+							if (encryptionDataElement != null) {

+								data = decryptData(data, manifestEntry, encryptionDataElement);

+							}

+						}

+						// store for further usage; do not care about manifest:

+						// that is handled exclusively

+						mMemoryFileCache.put(internalPath, data);

+					}

+				} catch (IOException ex) {

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

+				} finally {

+					try {

+						if (inputStream != null) {

+							inputStream.close();

+						}

+					} catch (IOException ex) {

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

+					}

+				}

+			}

+		}

+		return data;

+	}

+	

+	// encrypt data and update manifest.

+	private byte[] encryptData(byte[] data, OdfFileEntry fileEntry) {

+		byte[] encryptedData = null;

+		try {

+			// 1.The original uncompressed, unencrypted size is

+			// contained in the manifest:size.

+			fileEntry.setSize(data.length);

+			

+			// 2.Compress with the "deflate" algorithm

+			Deflater compresser = new Deflater(Deflater.DEFLATED, true);

+			compresser.setInput(data);

+			compresser.finish();

+			byte[] compressedData = new byte[data.length];

+			int compressedDataLength = compresser.deflate(compressedData);

+			

+			// 3. The start key is generated: the byte sequence

+			// representing the password in UTF-8 is used to

+			// generate a 20-byte SHA1 digest.

+			byte[] passBytes = newPwd.getBytes("UTF-8");

+			MessageDigest md = MessageDigest.getInstance("SHA1");

+			passBytes = md.digest(passBytes);

+			// 4. Checksum specifies a digest in BASE64 encoding

+			// that can be used to detect password correctness. The

+			// digest is build from the compressed unencrypted file.

+			md.reset();

+			md.update(compressedData, 0, (compressedDataLength > 1024 ? 1024 : compressedDataLength));

+			byte[] checksumBytes = new byte[20];

+			md.digest(checksumBytes, 0, 20);

+			

+			// 5. For each file, a 16-byte salt is generated by a random

+			// generator.

+			// The salt is a BASE64 encoded binary sequence.

+			SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

+			byte[] salt = new byte[16];

+			secureRandom.nextBytes(salt);

+			

+			// char passChars[] = new String(passBytes, "UTF-8").toCharArray();

+			/*

+			 * char passChars[] = new char[20]; for (int i = 0; i <

+			 * passBytes.length; i++) { passChars[i] = (char)

+			 * ((passBytes[i]+256)%256);

+			 * //System.out.println("passChars[i]:"+passChars

+			 * [i]+", passBytes[i]"+passBytes[i]); } //char passChars[] =

+			 * getChars(passBytes); // 6. The PBKDF2 algorithm based on the

+			 * HMAC-SHA-1 function is used for the key derivation.

+			 * SecretKeyFactory factory =

+			 * SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); // 7. The

+			 * salt is used together with the start key to derive a unique

+			 * 128-bit key for each file. // The default iteration count for the

+			 * algorithm is 1024. KeySpec spec = new PBEKeySpec(passChars, salt,

+			 * 1024, 128); SecretKey skey = factory.generateSecret(spec); byte[]

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

+			// generator is used to generate the 8-byte initialization vector

+			// for the

+			// algorithm. The derived key is used together with the

+			// initialization

+			// vector to encrypt the file using the Blowfish algorithm in cipher

+			// feedback

+			// CFB mode.

+			Cipher cipher = Cipher.getInstance("Blowfish/CFB/NoPadding");

+			// initialisation-vector specifies the byte-sequence used

+			// as an initialization vector to a encryption algorithm. The

+			// initialization vector is a BASE64 encoded binary sequence.

+			byte[] iv = new byte[8];

+			secureRandom.nextBytes(iv);

+			IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);

+			cipher.init(Cipher.ENCRYPT_MODE, key, ivParameterSpec);

+			encryptedData = cipher.doFinal(compressedData, 0, compressedDataLength);

+			

+			// 9.update file entry encryption data.

+			String checksum = new Base64Binary(checksumBytes).toString();

+			FileEntryElement fileEntryElement = fileEntry.getOdfElement();

+			EncryptionDataElement encryptionDataElement = OdfElement.findFirstChildNode(EncryptionDataElement.class, fileEntryElement);

+			if (encryptionDataElement != null) {

+				fileEntryElement.removeChild(encryptionDataElement);

+			}

+			encryptionDataElement = fileEntryElement.newEncryptionDataElement(checksum, "SHA1/1K");

+			String initialisationVector = new Base64Binary(iv).toString();

+			AlgorithmElement algorithmElement = OdfElement.findFirstChildNode(AlgorithmElement.class, encryptionDataElement);

+			if (algorithmElement != null) {

+				encryptionDataElement.removeChild(algorithmElement);

+			}

+			algorithmElement = encryptionDataElement.newAlgorithmElement("Blowfish CFB", initialisationVector);

+			String saltStr = new Base64Binary(salt).toString();

+			KeyDerivationElement keyDerivationElement = OdfElement.findFirstChildNode(KeyDerivationElement.class, encryptionDataElement);

+			if (keyDerivationElement != null) {

+				encryptionDataElement.removeChild(keyDerivationElement);

+			}

+			keyDerivationElement = encryptionDataElement.newKeyDerivationElement(1024, "PBKDF2", saltStr);

+			StartKeyGenerationElement startKeyGenerationElement = OdfElement.findFirstChildNode(StartKeyGenerationElement.class, encryptionDataElement);

+			if (startKeyGenerationElement != null) {

+				encryptionDataElement.removeChild(startKeyGenerationElement);

+			}

+			encryptionDataElement.newStartKeyGenerationElement("SHA1").setKeySizeAttribute(20);

+			

+			// System.out.println("full-path=\""+ path +"\"");

+			// System.out.println("size=\""+ data.length +"\"");

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

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

+			

+		} catch (Exception e) {

+			// throws NoSuchAlgorithmException,

+			// InvalidKeySpecException, NoSuchPaddingException,

+			// InvalidKeyException,

+			// InvalidAlgorithmParameterException,

+			// IllegalBlockSizeException, BadPaddingException

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

+		}

+		return encryptedData;

+	}

+	

+	private byte[] decryptData(byte[] data, OdfFileEntry manifestEntry, EncryptionDataElement encryptionDataElement) {

+		byte[] decompressData = null;

+		try {

+			KeyDerivationElement keyDerivationElement = OdfElement.findFirstChildNode(KeyDerivationElement.class, encryptionDataElement);

+			AlgorithmElement algorithmElement = OdfElement.findFirstChildNode(AlgorithmElement.class, encryptionDataElement);

+			String saltStr = keyDerivationElement.getSaltAttribute();

+			String ivStr = algorithmElement.getInitialisationVectorAttribute();

+			String checksum = encryptionDataElement.getChecksumAttribute();

+			byte[] salt = Base64Binary.valueOf(saltStr).getBytes();

+			byte[] iv = Base64Binary.valueOf(ivStr).getBytes();

+			byte[] passBytes = oldPwd.getBytes("UTF-8");

+			MessageDigest md = MessageDigest.getInstance("SHA-1");

+			passBytes = md.digest(passBytes);

+			/*

+			 * char passChars[] = new char[passBytes.length]; for(int i = 0;

+			 * i<passBytes.length; i++){ passChars[i] =

+			 * (char)(passBytes[i]|0xFF); } KeySpec spec = new

+			 * PBEKeySpec(passChars, salt, 1024, 128); SecretKeyFactory factory

+			 * = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); SecretKey

+			 * skey = factory.generateSecret(spec); byte[] raw =

+			 * skey.getEncoded(); SecretKeySpec skeySpec = new

+			 * SecretKeySpec(raw, "Blowfish");

+			 */

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

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

+			

+			Cipher cipher = Cipher.getInstance("Blowfish/CFB/NoPadding");

+			IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);

+			cipher.init(Cipher.DECRYPT_MODE, key, ivParameterSpec);

+			byte[] decryptedData = cipher.doFinal(data);

+			

+			// valid checksum

+			md.reset();

+			md.update(decryptedData, 0, (decryptedData.length > 1024 ? 1024 : decryptedData.length));

+			byte[] checksumBytes = new byte[20];

+			md.digest(checksumBytes, 0, 20);

+			String newChecksum = new Base64Binary(checksumBytes).toString();

+			if (newChecksum.equals(checksum)) {

+				// decompress the bytes

+				Inflater decompresser = new Inflater(true);

+				decompresser.setInput(decryptedData);

+				decompressData = new byte[manifestEntry.getSize()];

+				decompresser.inflate(decompressData);

+				decompresser.end();

+			} else {

+				throw new OdfDecryptedException("The given password is wrong, please check it.");

+			}

+		} catch (Exception e) {

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

+		}

+		return decompressData;

+	}

+	

+	// derive PBKDF2Key (reference http://www.ietf.org/rfc/rfc2898.txt)

+	byte[] derivePBKDF2Key(byte[] password, byte[] salt, int iterationCount, int keyLength) throws NoSuchAlgorithmException, InvalidKeyException {

+		SecretKeySpec keyspec = new SecretKeySpec(password, "HmacSHA1");

+		Mac hmac = Mac.getInstance("HmacSHA1");

+		hmac.init(keyspec);

+		// length in octets of HmacSHA1 function output, a positive integer

+		int hmacLen = hmac.getMacLength();

+		// let l be the number of hLen-octet blocks in the derived key, rounding

+		// up,

+		// l = CEIL (dkLen / hLen) Here, CEIL (x) is the smallest integer

+		// greater than, or equal to, x.

+		int l = (keyLength % hmacLen > 0) ? (keyLength / hmacLen + 1) : (keyLength / hmacLen);

+		// let r be the number of octets in the last block: r = dkLen - (l - 1)

+		// * hLen .

+		int r = keyLength - (l - 1) * hmacLen;

+		byte T[] = new byte[l * hmacLen];

+		int offset = 0;

+		// For each block of the derived key apply the function F defined below

+		// to the password P, the salt S, the iteration count c, and

+		// the block index to compute the block:

+		for (int i = 1; i <= l; i++) {

+			byte Ur[] = new byte[hmacLen];

+			byte Ui[] = new byte[salt.length + 4];

+			System.arraycopy(salt, 0, Ui, 0, salt.length);

+			// Here, INT (i) is a four-octet encoding of the integer i, most

+			// significant octet first.

+			Ui[salt.length + 0] = (byte) (i >>> 24);

+			Ui[salt.length + 1] = (byte) (i >>> 16);

+			Ui[salt.length + 2] = (byte) (i >>> 8);

+			Ui[salt.length + 3] = (byte) (i);

+			// U_1 \xor U_2 \xor ... \xor U_c

+			for (int j = 0; j < iterationCount; j++) {

+				Ui = hmac.doFinal(Ui);

+				// XOR

+				for (int k = 0; k < T.length; k++) {

+					Ur[k] ^= Ui[k];

+				}

+			}

+			System.arraycopy(Ur, 0, T, offset, hmacLen);

+			offset += hmacLen;

+		}

+		if (r < hmacLen) {

+			byte DK[] = new byte[keyLength];

+			System.arraycopy(T, 0, DK, 0, keyLength);

+			return DK;

+		}

+		return T;

+	}

+	

+	// Serializes a DOM tree into a byte array.

+	// Providing the counterpart of the generic Namespace handling of

+	// OdfFileDom.

+	private byte[] flushDom(Document dom) {

+		// if it is one of our DOM files we may flush all collected namespaces

+		// to the root element

+		if (dom instanceof OdfFileDom) {

+			OdfFileDom odfDom = (OdfFileDom) dom;

+			Map<String, String> nsByUri = odfDom.getMapNamespacePrefixByUri();

+			OdfElement root = odfDom.getRootElement();

+			if (root != null) {

+				for (Entry<String, String> entry : nsByUri.entrySet()) {

+					root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:" + entry.getValue(), entry.getKey());

+				}

+			}

+		}

+		ByteArrayOutputStream baos = new ByteArrayOutputStream();

+		DOMXSImplementationSourceImpl dis = new org.apache.xerces.dom.DOMXSImplementationSourceImpl();

+		DOMImplementationLS impl = (DOMImplementationLS) dis.getDOMImplementation("LS");

+		LSSerializer writer = impl.createLSSerializer();

+		LSOutput output = impl.createLSOutput();

+		output.setByteStream(baos);

+		writer.write(dom, output);

+		return baos.toByteArray();

+	}

+	

+	/**

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

+	 */

+	public InputStream getInputStream(String internalPath) {

+		internalPath = normalizeFilePath(internalPath);

+		// else we always cache here and return a ByteArrayInputStream because

+		// if

+		// we would return ZipFile getInputStream(entry) we would not be

+		// able to read 2 Entries at the same time. This is a limitation of the

+		// ZipFile class.

+		// As it would be quite a common thing to read the content.xml and the

+		// styles.xml

+		// simultanously when using XSLT on OdfPackages we want to circumvent

+		// this limitation

+		byte[] data = getBytes(internalPath);

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

+			ByteArrayInputStream bais = new ByteArrayInputStream(data);

+			return bais;

+		}

+		return null;

+	}

+	

+	/**

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

+	 */

+	public InputStream getInputStream(String internalPath, boolean useOriginal) {

+		InputStream stream = null;

+		if (useOriginal) {

+			ZipEntry entry = mOriginalZipEntries.get(internalPath);

+			if (entry != null) {

+				try {

+					stream = mZipFile.getInputStream(entry);

+				} catch (IOException ex) {

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

+				}

+			}

+		} else {

+			stream = getInputStream(internalPath);

+		}

+		return stream;

+	}

+	

+	/**

+	 * Gets the InputStream containing whole OdfPackage.

+	 * 

+	 * @return the ODF package as input stream

+	 * @throws java.lang.Exception

+	 *             - 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;

+	}

+	

+	/**

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

+	 * @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

+	 */

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

+	 * 

+	 * @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

+	 */

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

+		internalPath = normalizeFilePath(internalPath);

+		final String fPath = internalPath;

+		final OdfFileEntry fFileEntry = getFileEntry(internalPath);

+		final String fMediaType = mediaType;

+		

+		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);

+				}

+			}

+		};

+		return baos;

+	}

+	

+	/**

+	 * Removes a single file from the package.

+	 * 

+	 * @param internalPath

+	 *            of the file relative to the package root

+	 */

+	public void remove(String internalPath) {

+		internalPath = normalizePath(internalPath);

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

+			mZipEntries.remove(internalPath);

+		}

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

+			OdfFileEntry manifestEntry = mManifestEntries.remove(internalPath);

+			FileEntryElement manifestEle = manifestEntry.getOdfElement();

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

+		}

+	}

+	

+	/**

+	 * Encoded XML Attributes

+	 */

+	private String encodeXMLAttributes(String attributeValue) {

+		String encodedValue = QUOTATION_PATTERN.matcher(attributeValue).replaceAll(ENCODED_QUOTATION);

+		encodedValue = APOSTROPHE_PATTERN.matcher(encodedValue).replaceAll(ENCODED_APOSTROPHE);

+		return encodedValue;

+	}

+	

+	/**

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

+	 * inside the OdfPackage

+	 * 

+	 * @return a SAX EntityResolver

+	 */

+	public EntityResolver getEntityResolver() {

+		if (mResolver == null) {

+			mResolver = new Resolver(this);

+		}

+		return mResolver;

+	}

+	

+	/**

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

+	 * content inside the OdfPackage

+	 * 

+	 * @return a TraX Resolver

+	 */

+	public URIResolver getURIResolver() {

+		if (mResolver == null) {

+			mResolver = new Resolver(this);

+		}

+		return mResolver;

+	}

+	

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

+		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

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

+	 * @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);

+		} 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.

+	 * 

+	 * @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;

+		}

+		return directoryPath;

+	}

+	

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

+	static String normalizePath(String path) {

+		if (path == null) {

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

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

+			throw new IllegalArgumentException(errMsg);

+		} else if (!mightBeExternalReference(path)) {

+			if (path.equals(EMPTY_STRING)) {

+				path = SLASH;

+			} else {

+				// exchange all backslash "\" with a slash "/"

+				if (path.indexOf('\\') != -1) {

+					path = BACK_SLASH_PATTERN.matcher(path).replaceAll(SLASH);

+				}

+				// exchange all double slash "//" with a slash "/"

+				while (path.indexOf("//") != -1) {

+					path = DOUBLE_SLASH_PATTERN.matcher(path).replaceAll(SLASH);

+				}

+				// if directory replacements (e.g. ..) exist, resolve and remove

+				// them

+				if (path.indexOf("/.") != -1 || path.indexOf("./") != -1) {

+					path = removeChangeDirectories(path);

+				}

+			}

+		}

+		return 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)) {

+			isExternalReference = true;

+		}

+		return isExternalReference;

+	}

+	

+	/**

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

+	 * "/"

+	 */

+	private static String removeChangeDirectories(String path) {

+		boolean isDirectory = path.endsWith(SLASH);

+		StringTokenizer tokenizer = new StringTokenizer(path, SLASH);

+		int tokenCount = tokenizer.countTokens();

+		List<String> tokenList = new ArrayList<String>(tokenCount);

+		// add all paths to a list

+		while (tokenizer.hasMoreTokens()) {

+			String token = tokenizer.nextToken();

+			tokenList.add(token);

+		}

+		if (!isDirectory) {

+			String lastPath = tokenList.get(tokenCount - 1);

+			if (lastPath.equals(DOT) || lastPath.equals(DOUBLE_DOT)) {

+				isDirectory = true;

+			}

+		}

+		String currentToken;

+		int removeDirLevel = 0;

+		StringBuilder out = new StringBuilder();

+		// work on the list from back to front

+		for (int i = tokenCount - 1; i >= 0; i--) {

+			currentToken = tokenList.get(i);

+			// every ".." will remove an upcoming path

+			if (currentToken.equals(DOUBLE_DOT)) {

+				removeDirLevel++;

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

+			} else {

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

+				if (removeDirLevel > 0) {

+					removeDirLevel--;

+				} else {

+					// add the path segment

+					out.insert(0, SLASH);

+					out.insert(0, currentToken);

+				}

+			}

+		}

+		if (removeDirLevel > 0) {

+			return EMPTY_STRING;

+		} else {

+			if (!isDirectory) {

+				// remove trailing slash /

+				out.deleteCharAt(out.length() - 1);

+			}

+			return out.toString();

+		}

+	}

+	

+	/**

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

+	 * ODF package

+	 * 

+	 * @param internalPath

+	 *            the file reference to be checked

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

+	 */

+	public static boolean isExternalReference(String internalPath) {

+		if (mightBeExternalReference(internalPath)) {

+			return true;

+		} else {

+			return mightBeExternalReference(normalizePath(internalPath));

+		}

+	}

+	

+	/**

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

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

+	 * </p>

+	 * 

+	 * @param handler

+	 *            The error handler.

+	 * @see #getErrorHandler

+	 */

+	public void setErrorHandler(ErrorHandler handler) {

+		mErrorHandler = handler;

+	}

+	

+	/**

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

+	 * @see #setErrorHandler

+	 */

+	public ErrorHandler getErrorHandler() {

+		return mErrorHandler;

+	}

+	

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

+		// try{

+		if (mErrorHandler == null) {

+			return;

+		}

+		int varCount = 0;

+		if (o != null) {

+			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;

+		}

+		// } 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;

+		}

+		int varCount = 0;

+		if (o != null) {

+			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;

+		}

+		// } catch (SAXException ex) {

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

+		// ex);

+		// }

+	}

+	

+	/**

+	 * @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

+	 */

+	String getManifestVersion() {

+		return mManifestVersion;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageConstraint.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageConstraint.java
new file mode 100644
index 0000000..fa1086b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageConstraint.java
@@ -0,0 +1,101 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import org.odftoolkit.odfdom.pkg.OdfPackage.OdfFile;
+
+/**
+ * This class is used for validation of the ODF Package.
+ * It contains the constraint messages are taken from the OASIS ODF 1.2 part 3, the ODF package specification.
+ * These messages are used by the <code>ValidationException</code> for ODF validation.
+ * The validation is enabled, when an <code>ErrorHandler</code> was provided to the <code>OdfPackage</code>.
+ */
+public enum OdfPackageConstraint implements ValidationConstraint {
+	// NOTE FOLLOWING CODE CONVENTION:
+	// The first parameter is ALWAYS the source path. The OdfValidationException adds a preceding whitespace in case the source is not null.
+
+	/** In case a ZIP entry is using neither STORED and DEFLATED as compression method.*/
+	PACKAGE_ENTRY_USING_INVALID_COMPRESSION("The compression method of the ZIP entry '%2$s' is not allowed within the%1$s ODF package file!"),
+	/** The ODF package shall contain the \"/META-INF/manifest.xml\" file. */
+	MANIFEST_NOT_IN_PACKAGE("The ODF package%1$s shall contain the '" + OdfFile.MANIFEST.getPath() + "' file!"),
+	/** A directory is not a sub-document and should not be listed in the \"/META-INF/manifest.xml\" file of ODF package. */
+	MANIFEST_LISTS_DIRECTORY("The directory '%2$s' is not a sub-document and should not be listed in the '" + OdfFile.MANIFEST.getPath() + "' file of ODF package%1$s!"),
+	/** A directory is a document and should be listed in the \"/META-INF/manifest.xml\" file of ODF package. */
+	MANIFEST_DOES_NOT_LIST_DIRECTORY("The directory of the sub-document '%2$s' should be listed in the '" + OdfFile.MANIFEST.getPath() + "' file of ODF package%1$s!"),
+	/** A file shall not be listed in the \"/META-INF/manifest.xml\" file as it does not exist in the ODF package. */
+	MANIFEST_LISTS_NONEXISTENT_FILE("The file '%2$s' shall not be listed in the '" + OdfFile.MANIFEST.getPath() + "' file as it does not exist in the ODF package%1$s!"),
+	/** A file shall be listed in the \"/META-INF/manifest.xml\" file as it exists in the ODF package. */
+	MANIFEST_DOES_NOT_LIST_FILE("The file '%2$s' shall be listed in the '" + OdfFile.MANIFEST.getPath() + "' file as it exists in the ODF package%1$s!"),	
+	/** The ODF package contains a \"mediatype\" file, which content differs from the mediatype of the root document!" */
+	MIMETYPE_DIFFERS_FROM_PACKAGE("The ODF package%1$s contains a '" + OdfFile.MEDIA_TYPE.getPath() + "' file containing '%2$s', which differs from the mediatype of the root document '%3$s'!"),
+	/** The ODF package contains a \"mediatype\" file, but no mediatype its root document in the \"/META-INF/manifest.xml\" file of ODF package! */
+	MIMETYPE_WITHOUT_MANIFEST_MEDIATYPE("The ODF package%1$s contains a '" + OdfFile.MEDIA_TYPE.getPath() + "' file containing '%2$s', but no mediatype for its root document in its '" + OdfFile.MANIFEST.getPath() + "'!"),
+	/** The root document shall be listed in the \"/META-INF/manifest.xml\" file using a '/' as path within the ODF package. */
+	MANIFEST_WITH_EMPTY_PATH("The root document shall be listed in the '" + OdfFile.MANIFEST.getPath() + "' file using a '/' as path within the ODF package%1$s!"),
+	/** There shall be no extra field for the \"mediatype\" file of ODF package. */
+	MIMETYPE_HAS_EXTRA_FIELD("There shall be no extra field for the '" + OdfFile.MEDIA_TYPE.getPath() + "' file of ODF package%1$s!"),
+	/** The file \"mediatype\" shall not be compressed in the ODF package. */
+	MIMETYPE_IS_COMPRESSED("The file '" + OdfFile.MEDIA_TYPE.getPath() + "' shall not be compressed in the ODF package%1$s!"),
+	/** The file \"mediatype\" is not the first file in the ODF package. */
+	MIMETYPE_NOT_FIRST_IN_PACKAGE("The file '" + OdfFile.MEDIA_TYPE.getPath() + "' is not the first file in the ODF package%1$s!"),
+	/** The ODF package contains no \"mediatype\" file. */
+	MIMETYPE_NOT_IN_PACKAGE("The ODF package%1$s contains no '" + OdfFile.MEDIA_TYPE.getPath() + "' file!"),
+	/** The ODF package shall be a ZIP file. */
+	PACKAGE_IS_NO_ZIP("The ODF package%1$s shall be a ZIP file!");
+	private final String mMessage;
+
+	/**
+	 * Creates a ODF Package constraint
+	 * @param message of the constraint */
+	OdfPackageConstraint(String message) {
+		mMessage = message;
+	}
+
+	/**
+	 * Creates a localized description of a Constraint.
+	 * Subclasses may override this method in order to produce a
+	 * locale-specific message.  For subclasses that do not override this
+	 * method, the default implementation returns the same result as
+	 * <code>getMessage()</code>.
+	 *
+	 * @return  The localized description of this constraint. */
+	public String getLocalizedMessage() {
+//    FUTURE FEATUE: LOCALIZATION:
+//    =============================
+//    There should be a property files e.g. OdfPackageConstraint_de_DE.properties Sourcecode:
+//    PACKAGE_IS_NO_ZIP=%s muß eine ZIP Datei sein, wie in [ZIP] definiert. Alle Dateien innerhalbe des ZIPS müssen entwder unkomprimiert (STORED) oder komprimiert sein (DEFLATED) und den DEFLATE aloritmus verwenden.
+//    MANIFEST_NOT_IN_PACKAGE=.....
+//    ResourceBundle bundle = ResourceBundle.getBundle(OdfPackageConstraint.class.getName());
+//    return bundle.getString(this.name());
+		return mMessage;
+	}
+
+	/**
+	 * Returns the detail message string of this Constraint.
+	 *
+	 * @return  the detail message string of this <tt>Constraint</tt> instance
+	 *          (which may be <tt>null</tt>).
+	 */
+	public String getMessage() {
+		return mMessage;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java
new file mode 100644
index 0000000..bf11a3c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackageDocument.java
@@ -0,0 +1,410 @@
+/**
+ * **********************************************************************
+ *
+ * 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.pkg;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.util.ResourceUtils;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerFactory;
+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;
+
+/**
+ *
+ * The package layer described by the ODF 1.2 Package specification is
+ * independent of the above ODF XML layer described by the ODF 1.2 XML Schema
+ * specification.
+ *
+ * Still the abstract concept of documents exist in the ODF Package layer.
+ */
+public class OdfPackageDocument implements Closeable {
+
+	private static final String TWO_DOTS = "..";
+	private static final String SLASH = "/";
+	private static final String COLON = ":";
+	private static final String EMPTY_STRING = "";
+	/**
+	 * The path of the root document
+	 */
+	protected static final String ROOT_DOCUMENT_PATH = EMPTY_STRING;
+	private Resolver mResolver;
+	/**
+	 * The ODF package containing the document
+	 */
+	protected OdfPackage mPackage;
+	/**
+	 * The internal path to the document relative to the ODF package
+	 */
+	protected String mDocumentPathInPackage;
+	/**
+	 * The mediatype of the ODF package document. Note: Not necessarily an ODF
+	 * XML mediatype as specified in ODF 1.2 part1
+	 */
+	protected String mDocumentMediaType;
+	private static Templates mRdfFileExtractionTemplate;
+
+	/**
+	 * Creates a new OdfPackageDocument.
+	 *
+	 * @param pkg - the ODF Package that contains the document. A baseURL is
+	 * being generated based on its location.
+	 * @param internalPath - the directory path within the package from where
+	 * the document should be loaded.
+	 * @param mediaTypeString - media type of stream. If unknown null can be
+	 * used.
+	 */
+	protected OdfPackageDocument(OdfPackage pkg, String internalPath, String mediaTypeString) {
+		if (pkg != null) {
+			mPackage = pkg;
+			mDocumentPathInPackage = internalPath;
+			this.setMediaTypeString(mediaTypeString);
+			pkg.cacheDocument(this, internalPath);
+		} else {
+			throw new IllegalArgumentException("No Package provided for new document!");
+		}
+	}
+
+	/**
+	 * Loads an OdfPackageDocument from the provided path.
+	 *
+	 * <p>OdfPackageDocument relies on the file being available for read access
+	 * over the whole lifecycle of OdfDocument.</p>
+	 *
+	 * @param documentPath - the path from where the document can be loaded
+	 * @return the OpenDocument from the given path or NULL if the media type is
+	 * not supported by ODFDOM.
+	 * @throws java.lang.Exception - if the document could not be created.
+	 */
+	public static OdfPackageDocument loadDocument(String documentPath) throws Exception {
+		OdfPackage pkg = OdfPackage.loadPackage(documentPath);
+		return pkg.loadDocument(ROOT_DOCUMENT_PATH);
+	}
+
+	/**
+	 * Returns an embedded OdfPackageDocument from the given package path.
+	 *
+	 * @param documentPath to the document within the package. The path is
+	 * relative the current document path.
+	 * @return an embedded OdfPackageDocument
+	 */
+	public OdfPackageDocument loadSubDocument(String documentPath) {
+		String internalPath = this.getDocumentPath() + documentPath;
+		internalPath = OdfPackage.normalizeDirectoryPath(internalPath);
+		return mPackage.loadDocument(internalPath);
+	}
+
+	/**
+	 * @return the mediatype of this document
+	 */
+	public String getMediaTypeString() {
+		return mDocumentMediaType;
+	}
+
+	/**
+	 * @param mediaTypeString for the mediatype of this document
+	 */
+	protected final void setMediaTypeString(String mediaTypeString) {
+		mDocumentMediaType = mediaTypeString;
+		if (isRootDocument()) {
+			mPackage.setMediaTypeString(mediaTypeString);
+		}
+	}
+
+	/**
+	 * Sets the OdfPackage that contains this OdfPackageDocument.
+	 *
+	 * @param pkg the OdfPackage that contains this OdfPackageDocument
+	 */
+	void setPackage(OdfPackage pkg) {
+		mPackage = pkg;
+	}
+
+	/**
+	 * Retreives the OdfPackage for this OdfPackageDocument.
+	 *
+	 * @return the OdfPackage that contains this OdfPackageDocument.
+	 */
+	public OdfPackage getPackage() {
+		return mPackage;
+	}
+
+	/**
+	 * Set the relative path for an embedded ODF document.
+	 *
+	 * @param path to directory of the embedded ODF document (relative to ODF
+	 * package root).
+	 */
+	String setDocumentPath(String path) {
+		mDocumentPathInPackage = normalizeDocumentPath(path);
+		return mDocumentPathInPackage;
+	}
+
+	/**
+	 * Get the relative path for an embedded ODF document.
+	 *
+	 * @return path to the directory of the embedded ODF document (relative to
+	 * ODF package root).
+	 */
+	public String getDocumentPath() {
+		return mDocumentPathInPackage;
+	}
+
+	/**
+	 * Removes an embedded ODF document from the ODF Package. All files within
+	 * the embedded document directory will be removed.
+	 *
+	 * @param internDocumentPath path to the directory of the embedded ODF
+	 * document (always relative to the package path of the current document).
+	 */
+	public void removeDocument(String internDocumentPath) {
+		mPackage.removeDocument(mDocumentPathInPackage + internDocumentPath);
+	}
+
+	/**
+	 * @return true if the document is at the root level of the package
+	 */
+	public boolean isRootDocument() {
+		if (getDocumentPath().equals(ROOT_DOCUMENT_PATH)) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Checks if the given reference is a reference, which points outside the
+	 * ODF package Only relative path are allowed with the exception of a single
+	 * slash '/' representing the root document.
+	 *
+	 * @param ref the file reference to be checked
+	 * @return true if the reference is an package external reference
+	 */
+	protected static boolean isExternalReference(String ref) {
+		boolean isExternalReference = false;
+		// if the reference is a external relative filePath..
+		if (ref.startsWith(TWO_DOTS)
+				|| // or absolute filePath AND not root document)
+				ref.startsWith(SLASH) && !ref.equals(SLASH)
+				|| // or absolute IRI
+				ref.contains(COLON)) {
+			isExternalReference = true;
+		}
+		return isExternalReference;
+	}
+
+	/**
+	 * Ensure the document path for is valid and gurantee unique encoding by
+	 * normalizing the path.
+	 *
+	 * @see OdfPackage#normalizeDirectoryPath(java.lang.String)
+	 * @param documentPath the destination directory of the document. The path
+	 * should end with a '/'.
+	 * @return the documentPath after normalization.
+	 */
+	protected static String normalizeDocumentPath(String documentPath) {
+		String dirPath = OdfPackage.normalizeDirectoryPath(documentPath);
+		//package path should not start with '/'.
+		if (dirPath.startsWith(SLASH) && !dirPath.equals(SLASH)) {
+			dirPath = dirPath.substring(1);
+		}
+		return dirPath;
+	}
+
+	/**
+	 * Save the document to given path.
+	 *
+	 * <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
+	 * package. If the embedded document is outside of the current document
+	 * directory, you have to embed it to the sub directory and refresh the link
+	 * of the embedded document. You should reload it from the given path to get
+	 * the saved embedded document.
+	 *
+	 * @param documentPath - the path to the package document
+	 * @throws java.lang.Exception if the document could not be saved
+	 */
+	public void save(String documentPath) throws Exception {
+		File f = new File(documentPath);
+		save(f);
+	}
+
+	/**
+	 * 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
+	 * embedded document is outside of the current document directory, you have
+	 * 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 if the document could not be saved
+	 */
+	public void save(File file) throws Exception {
+		mPackage.save(file);
+	}
+
+	/**
+	 * Flush the existing DOM to the document to get in advantage of the recent
+	 * changes from the DOM
+	 */
+	protected void flushDoms() {
+		mPackage.flushDoms(this);
+	}
+
+	/**
+	 * 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 newDocument the OdfPackageDocument to be embedded.
+	 * @param documentPath to the directory the ODF document should be inserted
+	 * (relative to the root of this document).
+	 */
+	public void insertDocument(OdfPackageDocument newDocument, String documentPath) {
+		newDocument.flushDoms();
+		mPackage.insertDocument(newDocument, mDocumentPathInPackage + documentPath);
+	}
+
+	/**
+	 * @param internalPath path to the XML file relative to package root
+	 * @return the typed DOM of the given file
+	 */
+	public OdfFileDom getFileDom(String internalPath) throws Exception {
+		String normalizeDocumentPath = getDocumentPath();
+		if (!isRootDocument()) {
+			normalizeDocumentPath = normalizeDocumentPath(normalizeDocumentPath);
+		}
+		return OdfFileDom.newFileDom(this, normalizeDocumentPath + internalPath);
+	}
+
+	/**
+	 * Get EntityResolver to be used in XML Parsers which can resolve content
+	 * inside the OdfPackage
+	 */
+	EntityResolver getEntityResolver() {
+		if (mResolver == null) {
+			mResolver = new Resolver(mPackage);
+		}
+		return mResolver;
+	}
+
+	/**
+	 * Get URIResolver to be used in XSL Transformations which can resolve
+	 * content inside the OdfPackage
+	 */
+	URIResolver getURIResolver() {
+		if (mResolver == null) {
+			mResolver = new Resolver(mPackage);
+		}
+		return mResolver;
+	}
+
+	/**
+	 * Close the OdfPackageDocument, its OdfPackage and release all temporary
+	 * created data. Acter execution of this method, this class is no longer
+	 * usable. Do this as the last action to free resources. Closing an already
+	 * closed document has no effect.
+	 */
+	public void close() {
+		mPackage.close();
+		// set all member variables explicit to null
+		mPackage = null;
+	}
+
+	/**
+	 * Helper class to receive an ODF document template for new documents from
+	 * the environment (ie. from the JAR via classloader)
+	 */
+	protected static class Resource {
+
+		private String name;
+
+		public Resource(String name) {
+			this.name = name;
+		}
+
+		public InputStream createInputStream() {
+			InputStream in = OdfPackageDocument.class.getResourceAsStream(this.name);
+			if (in == null) {
+				Logger.getLogger(OdfPackageDocument.class.getName()).log(Level.SEVERE, "Could not find resource: {0}", this.name);
+			}
+			return in;
+		}
+	}
+
+	/**
+	 * 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
+	 */
+	public Model getXMLFileMetadata(String internalPath) {
+		Model rdfModel = null;
+		try {
+			ByteArrayOutputStream out = new ByteArrayOutputStream();
+			OdfXMLHelper helper = new OdfXMLHelper();
+			if (mRdfFileExtractionTemplate == null) {
+				String filePath = "file:" + OdfPackageDocument.class.getClassLoader().getResource("grddl/odf2rdf.xsl").getPath();
+				URI uri = new URI(filePath);
+				InputSource inputSource = new InputSource(uri.toString());
+				mRdfFileExtractionTemplate = TransformerFactory.newInstance().newTemplates(new SAXSource(inputSource));
+			}
+			helper.transform(this.getPackage(), internalPath, mRdfFileExtractionTemplate, new StreamResult(out));
+			String RDFBaseUri = Util.getRDFBaseUri(this.getPackage().getBaseURI(), internalPath);
+			rdfModel = ModelFactory.createDefaultModel();
+			rdfModel.read(new InputStreamReader(new ByteArrayInputStream(out.toByteArray()), "utf-8"), RDFBaseUri);
+			// remove the last SLASH at the end of the RDFBaseUri:
+			// test_rdfmeta.odt/ --> test_rdfmeta.odt
+			ResourceUtils.renameResource(rdfModel.getResource(RDFBaseUri), RDFBaseUri.substring(0, RDFBaseUri.length() - 1));
+		} catch (Exception ex) {
+			Logger.getLogger(OdfPackageDocument.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return rdfModel;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfValidationException.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfValidationException.java
new file mode 100644
index 0000000..cfb3ddd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfValidationException.java
@@ -0,0 +1,134 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import org.xml.sax.SAXParseException;
+
+/**
+ * This ODF specific validation exception facilities the usage of a
+ * SAXParseException for none XML validation, used by an
+ * <code>ErrorHandler</code>.
+ */
+public class OdfValidationException extends SAXParseException {
+
+	private ValidationConstraint mConstraint;
+	private static final String NO_SOURCE = "";
+	private static final String SOURCE_PREFIX = " '";
+	private static final String SOURCE_SUFFIX = "'";
+
+	/**
+	 * An OdfValidationException should be used for any validation result
+	 * related to an ODF package. This constructor should only be used for
+	 * SaxParseExceptions unrelated to XML. This constructor sets the public and
+	 * system ID for XML and line and column number of the super class will be
+	 * set to be invalid.
+	 * 
+	 * @param constraint
+	 *            the predefined constant message
+	 */
+	public OdfValidationException(ValidationConstraint constraint) {
+		// The constraint convention is the first parameter to be the sourcePath of the ODF document/package causing the exception
+		super(String.format(constraint.getMessage(), NO_SOURCE), null, null, -1, -1);
+		mConstraint = constraint;
+	}
+
+	/**
+	 * An OdfValidationException should be used for any validation result
+	 * related to an ODF package. This constructor should only be used for
+	 * SaxParseExceptions unrelated to XML. This constructor sets the public and
+	 * system ID for XML and line and column number of the super class will be
+	 * set to be invalid.
+	 * 
+	 * @param constraint
+	 *            the predefined constaint message
+	 * @param sourcePath
+	 *            the source path of the exception. For instance, it might be an
+	 *            ODF package or ODF document.
+	 * @param messageParameters
+	 *            allow the customization of a constraint message with
+	 *            parameters.
+	 */
+	public OdfValidationException(ValidationConstraint constraint, String sourcePath, Object... messageParameters) {
+		// The constraint convention is the first parameter to be the sourcePath of the ODF document/package causing the exception
+		super(formatMessage(constraint, sourcePath, messageParameters), null, null, -1, -1);
+		mConstraint = constraint;
+	}
+
+	/**
+	 * An OdfValidationException should be used for any validation result
+	 * related to an ODF package. This constructor should only be used for
+	 * SaxParseExceptions unrelated to XML. This constructor sets the public and
+	 * system ID for XML and line and column number of the super class will be
+	 * set to be invalid.
+	 * 
+	 * @param e
+	 *            root exception to be embedded
+	 * @param constraint
+	 *            the predefined constant message
+	 * @param sourcePath
+	 *            the source path of the exception. For instance, it might be an
+	 *            ODF package or ODF document.
+	 * @param messageParameters
+	 *            allow the customization of a constraint message with
+	 *            parameters.
+	 */
+	public OdfValidationException(ValidationConstraint constraint, String sourcePath, Exception e, Object... messageParameters) {
+		// The constraint convention is the first parameter to be the sourcePath of the ODF document/package causing the exception
+		super(formatMessage(constraint, sourcePath, messageParameters), null, null, -1, -1, e);
+		mConstraint = constraint;
+	}
+
+	/** @return constraint belonging to this exception */
+	public ValidationConstraint getConstraint() {
+		return mConstraint;
+	}
+
+	private static String formatMessage(ValidationConstraint constraint, String sourcePath, Object... messageParameters) {
+		String formattedString = NO_SOURCE;
+		int varCount = 0;
+		if (messageParameters != null) {
+			varCount = messageParameters.length;
+		}
+		switch (varCount) {
+			case 0:
+				formattedString = String.format(constraint.getMessage(), sourcePath == null || sourcePath.equals(NO_SOURCE) ? NO_SOURCE : SOURCE_PREFIX + sourcePath + SOURCE_SUFFIX);
+				break;
+			case 1:
+				formattedString = String.format(constraint.getMessage(), sourcePath == null || sourcePath.equals(NO_SOURCE) ? NO_SOURCE : SOURCE_PREFIX + sourcePath + SOURCE_SUFFIX, messageParameters[0]);
+				break;
+			case 2:
+				formattedString = String.format(constraint.getMessage(), sourcePath == null || sourcePath.equals(NO_SOURCE) ? NO_SOURCE : SOURCE_PREFIX + sourcePath + SOURCE_SUFFIX, messageParameters[0], messageParameters[1]);
+				break;
+			case 3:
+				formattedString = String.format(constraint.getMessage(), sourcePath == null || sourcePath.equals(NO_SOURCE) ? NO_SOURCE : SOURCE_PREFIX + sourcePath + SOURCE_SUFFIX, messageParameters[0], messageParameters[1], messageParameters[2]);
+				break;
+			case 4:
+				formattedString = String.format(constraint.getMessage(), sourcePath == null || sourcePath.equals(NO_SOURCE) ? NO_SOURCE : SOURCE_PREFIX + sourcePath + SOURCE_SUFFIX, messageParameters[0], messageParameters[1], messageParameters[2], messageParameters[3]);
+				break;
+			case 5:
+				formattedString = String.format(constraint.getMessage(), sourcePath == null || sourcePath.equals(NO_SOURCE) ? NO_SOURCE : SOURCE_PREFIX + sourcePath + SOURCE_SUFFIX, messageParameters[0], messageParameters[1], messageParameters[2], messageParameters[3], messageParameters[4]);
+				break;
+		}
+		return formattedString;
+
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfXMLFactory.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfXMLFactory.java
new file mode 100644
index 0000000..730026a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfXMLFactory.java
@@ -0,0 +1,301 @@
+/************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+/*
+ * This file is automatically generated.
+ * Don't edit manually.
+ */
+package org.odftoolkit.odfdom.pkg;
+
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.w3c.dom.DOMException;
+
+/** This factory determines what elements are being used in the DOC layer
+ * (ie. the convenient layer).
+ *
+ *  The mapping of ODF element to convenient class can be changed from the user
+ *  during run time.
+ *
+ *  For example, a user might want to create a table always with a certain style or default data and
+ *  might want to overwrite the mapping for <code>{odf.element table:table}</code>, that a different
+ *  class instead of <code>OdfTable</code> is being used.
+ * 
+ */
+public class OdfXMLFactory {
+
+	private static Map<OdfName, Class> mElementTypes = new HashMap<OdfName, Class>();
+	private static Map<OdfName, Class> mAttributeTypes = new HashMap<OdfName, Class>();
+	private static Map<String, String> mElementRenames = new HashMap<String, String>();
+	//a set for the element which need to load class from incubator package.
+	private static Set<String> mIncubatorElements = new HashSet<String>();
+	private static final String LOCAL_NAME_DELIMITER = "-";
+	private static final String ELEMENT_NAME_DELIMITER = ":";
+	private static final String ELEMENT_PACKAGE_NAME = "element";
+	private static final String ATTRIBUTE_PACKAGE_NAME = "attribute";
+
+	static {
+		mElementRenames.put("text:h", "text:heading");
+		mElementRenames.put("text:p", "text:paragraph");
+
+		mIncubatorElements.add("draw:frame");
+		mIncubatorElements.add("draw:image");
+		mIncubatorElements.add("number:currency-style");
+		mIncubatorElements.add("number:date-style");
+		mIncubatorElements.add("number:percentage-style");
+		mIncubatorElements.add("number:number-style");
+		mIncubatorElements.add("number:time-style");
+		mIncubatorElements.add("office:automatic-styles");
+		mIncubatorElements.add("office:master-styles");
+		mIncubatorElements.add("office:styles");
+		mIncubatorElements.add("style:default-style");
+		mIncubatorElements.add("style:style");
+		mIncubatorElements.add("style:page-layout");
+		mIncubatorElements.add("text:h");
+		mIncubatorElements.add("text:list");
+		mIncubatorElements.add("text:list-level-style-bullet");
+		mIncubatorElements.add("text:list-level-style-image");
+		mIncubatorElements.add("text:list-level-style-number");
+		mIncubatorElements.add("text:list-style");
+		mIncubatorElements.add("text:outline-level-style");
+		mIncubatorElements.add("text:outline-style");
+		mIncubatorElements.add("text:p");
+		mIncubatorElements.add("text:span");
+	}
+
+	/** Mapping an ODF element to a new Java DOM element class.
+	 *  Note: There is a default class for each element being generated from the latest ODF schema 
+	 */
+	private static void setOdfElementClass(OdfName odfName, Class className) {
+		mElementTypes.put(odfName, className);
+	}
+
+	/** Mapping an ODF attribute to a new Java DOM attribute class.
+	 *  Note: There is a default class for each element being generated from the latest ODF schema. */
+	private static void setOdfAttributeClass(OdfName odfName, Class className) {
+		mAttributeTypes.put(odfName, className);
+	}
+
+	/**
+	 * @param odfName the name of the ODF attribute the desired DOM class should represent.
+	 * @return the Java DOM attribute class to be mapped to a certain ODF attribute. */
+	private static Class getOdfAttributeClass(OdfName odfName) {
+		return getOdfNodeClass(odfName, ATTRIBUTE_PACKAGE_NAME, mAttributeTypes);
+	}
+
+	/**
+	 * @param odfName the name of the ODF element the desired DOM class should represent.
+	 * @return the Java DOM element class to be mapped to a certain ODF element. */
+	private static Class getOdfElementClass(OdfName odfName) {
+		return getOdfNodeClass(odfName, ELEMENT_PACKAGE_NAME, mElementTypes);
+	}
+
+	private static Class getOdfNodeClass(OdfName odfName, String nodeType, Map<OdfName, Class> classCache) {
+		Class c = null;
+		String className = "";
+		c = classCache.get(odfName);
+		if (c == null) {
+			String prefix = odfName.getPrefix();
+			if (prefix != null && !(nodeType.equals(ATTRIBUTE_PACKAGE_NAME) && prefix.equals("xmlns"))) {
+				String qName = odfName.getQName();
+				String localName = odfName.getLocalName();
+				//judge whether the element need to load class from incubator package.
+				if (mIncubatorElements.contains(qName)) {
+					//judge whether the element need to rename before find class name.
+					if (mElementRenames.containsKey(qName)) {
+						String renameName = mElementRenames.get(qName);
+						StringTokenizer stok = new StringTokenizer(renameName, ELEMENT_NAME_DELIMITER);
+						prefix = stok.nextToken();
+						localName = stok.nextToken();
+					}
+					className = getOdfIncubatorNodeClassName(prefix, localName);
+				} else if ("manifest".equals(prefix)) {
+					className = getOdfPKGNodeClassName(prefix, localName, nodeType);
+				} else {
+					className = getOdfDOMNodeClassName(prefix, localName, nodeType);
+				}
+				try {
+					c = Class.forName(className);
+					classCache.put(odfName, c);
+				} catch (ClassNotFoundException ex) {
+					// all classes are first tring to load and warning is given later
+				} catch (NoClassDefFoundError dex) {
+					Logger.getLogger(OdfXMLFactory.class.getName()).log(Level.INFO, "NoClassDefFoundError: " + className, dex.getMessage());
+				}
+			}
+		}
+		return c;
+	}
+
+	private static String getOdfIncubatorNodeClassName(String prefix, String localName) {
+		boolean contains = false;
+		StringBuilder className = new StringBuilder();
+
+		if (localName.indexOf(LOCAL_NAME_DELIMITER) != -1) {
+			StringTokenizer stok = new StringTokenizer(localName, LOCAL_NAME_DELIMITER);
+			while (stok.hasMoreElements()) {
+				String substr = stok.nextToken();
+				if (substr.equals(prefix)) {
+					contains = true;
+				}
+				className = className.append(toUpperCaseFirstCharacter(substr));
+			}
+		} else {
+			className = className.append(toUpperCaseFirstCharacter(localName));
+		}
+		if (!((contains && !localName.endsWith("table"))
+				|| (localName.equals(prefix))
+				|| (localName.startsWith(prefix) && prefix.equals("anim")))) {
+			className = className.insert(0, toUpperCaseFirstCharacter(prefix));
+		}
+		className = className.insert(0, "org.odftoolkit.odfdom.incubator.doc." + prefix + "." + "Odf");
+
+		return className.toString();
+	}
+	
+	private static String getOdfPKGNodeClassName(String prefix, String localName, String nodeType) {
+		StringBuilder className = new StringBuilder("org.odftoolkit.odfdom.pkg." + prefix + ".");
+		if (localName.indexOf(LOCAL_NAME_DELIMITER) != -1) {
+			StringTokenizer stok = new StringTokenizer(localName, LOCAL_NAME_DELIMITER);
+			while (stok.hasMoreElements()) {
+				className = className.append(toUpperCaseFirstCharacter(stok.nextToken()));
+			}
+		} else {
+			className = className.append(toUpperCaseFirstCharacter(localName));
+		}
+		className.append(toUpperCaseFirstCharacter(nodeType));
+		return className.toString();
+	}
+	
+	private static String getOdfDOMNodeClassName(String prefix, String localName, String nodeType) {
+		StringBuilder className = new StringBuilder("org.odftoolkit.odfdom.dom." + nodeType + "." + prefix + ".");
+		className = className.append(toUpperCaseFirstCharacter(prefix));
+		if (localName.indexOf(LOCAL_NAME_DELIMITER) != -1) {
+			StringTokenizer stok = new StringTokenizer(localName, LOCAL_NAME_DELIMITER);
+			while (stok.hasMoreElements()) {
+				className = className.append(toUpperCaseFirstCharacter(stok.nextToken()));
+			}
+		} else {
+			className = className.append(toUpperCaseFirstCharacter(localName));
+		}
+		className.append(toUpperCaseFirstCharacter(nodeType));
+		return className.toString();
+	}
+
+	private static String toUpperCaseFirstCharacter(String token) {
+		return token.substring(0, 1).toUpperCase() + token.substring(1);
+	}
+
+	public static OdfElement newOdfElement(OdfFileDom dom, OdfName name) throws DOMException {
+		OdfElement element = null;
+
+		// lookup registered element class for qname
+		Class elementClass = getOdfElementClass(name);
+
+		// if a class was registered create an instance of that class
+		if (elementClass != null) {
+			element = (OdfElement) getNodeFromClass(dom, elementClass);
+		} else {
+			String oldPrefix = name.getPrefix();
+			if (oldPrefix != null) {
+				// check if the namespace prefix is correct or add potential namespace to DOM
+				OdfName adaptedName = addNamespaceToDom(name, dom);
+				String newPrefix = adaptedName.getPrefix();
+				// in case the prefix was changed as it existed before
+				if (oldPrefix != null && !oldPrefix.equals(newPrefix)
+						// "_1" is the suffix added by OdfFileDom to an existing Namespace
+						&& newPrefix.indexOf("__") == -1) {
+					// look up again if there is a class registered for this prefix
+					element = newOdfElement(dom, adaptedName);
+				} else {
+					element = (OdfElement) new OdfAlienElement(dom, adaptedName);
+					Logger.getLogger(OdfXMLFactory.class.getName()).log(Level.FINE, "None-ODF element created for {0}", adaptedName.getQName());
+				}
+			} else {
+				element = (OdfElement) new OdfAlienElement(dom, name);
+				Logger.getLogger(OdfXMLFactory.class.getName()).log(Level.FINE, "None-ODF element created for {0}", name.getQName());
+			}
+		}
+		return element;
+	}
+
+	public static OdfAttribute newOdfAttribute(OdfFileDom dom, OdfName name) throws DOMException {
+		OdfAttribute attr = null;
+
+		// lookup registered attribute class for qname
+		Class attributeClass = getOdfAttributeClass(name);
+
+		// if a class was registered create an instance of that class
+		if (attributeClass != null) {
+			attr = (OdfAttribute) getNodeFromClass(dom, attributeClass);
+		} else { // in case it is not a default ODF
+			// add a namespace unless it is a xmlns attribute (no attr value to set the uri)
+			String prefix = name.getPrefix();
+			if (prefix != null && !prefix.equals("xmlns")) {
+				// check if the namespace prefix is correct or add potential namespace to DOM
+				OdfName adaptedName = addNamespaceToDom(name, dom);
+				String newPrefix = adaptedName.getPrefix();
+				// in case the prefix was changed as it existed before
+				if (!prefix.equals(newPrefix) && newPrefix.indexOf("__") == -1) {
+					// look up again if there is a class registered for this prefix
+					attr = newOdfAttribute(dom, adaptedName);
+				} else {
+					attr = (OdfAttribute) new OdfAlienAttribute(dom, name);
+					Logger.getLogger(OdfXMLFactory.class.getName()).log(Level.FINE, "None-ODF attribute created for {0}", adaptedName.getQName());
+				}
+			} else {
+				// create an alien attribute for namespace attribute "xmlns:*"
+				attr = (OdfAttribute) new OdfAlienAttribute(dom, name);
+			}
+
+		}
+		return attr;
+	}
+
+	private static OdfName addNamespaceToDom(OdfName name, OdfFileDom dom) {
+		OdfNamespace newNS = dom.setNamespace(name.getPrefix(), name.getUri());
+		return OdfName.newName(newNS, name.getLocalName());
+	}
+
+	/**
+	 * @param dom the XML DOM file where the node should be created on.
+	 * @param nodeClass being an XMLNode the Java class of the instance to be created.
+	 * @return an object instance of the XML node class being provided (usally an attribute or element). */
+	static Object getNodeFromClass(OdfFileDom dom, Class nodeClass) {
+		Object o = null;
+		try {
+			Constructor ctor = nodeClass.getConstructor(new Class[]{OdfFileDom.class});
+			o = ctor.newInstance(new Object[]{dom});
+		} catch (Exception cause) {
+			// an exception at this point is a bug. Throw an Error
+			throw new Error("ODF DOM error in attribute factory", cause);
+		}
+		return o;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfXMLHelper.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfXMLHelper.java
new file mode 100644
index 0000000..9519c5a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfXMLHelper.java
@@ -0,0 +1,377 @@
+/************************************************************************

+ *

+ * 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.pkg;

+

+import java.io.ByteArrayOutputStream;

+import java.io.File;

+import java.io.IOException;

+import java.io.InputStream;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import javax.xml.parsers.ParserConfigurationException;

+import javax.xml.transform.Result;

+import javax.xml.transform.Source;

+import javax.xml.transform.Templates;

+import javax.xml.transform.Transformer;

+import javax.xml.transform.TransformerConfigurationException;

+import javax.xml.transform.TransformerException;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.dom.DOMSource;

+import javax.xml.transform.stream.StreamResult;

+import javax.xml.transform.stream.StreamSource;

+

+import org.odftoolkit.odfdom.pkg.rdfa.Util;

+import org.w3c.dom.Document;

+import org.w3c.dom.DocumentType;

+import org.xml.sax.ContentHandler;

+import org.xml.sax.ErrorHandler;

+import org.xml.sax.InputSource;

+import org.xml.sax.SAXException;

+import org.xml.sax.XMLReader;

+

+class OdfXMLHelper {

+

+	/**

+	 * create an XMLReader

+	 * with a Resolver set to parse content in a ODF Package

+	 *

+	 * @param pkg the ODF Package

+	 * @return a SAX XMLReader

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public XMLReader newXMLReader(OdfPackage pkg)

+			throws SAXException, ParserConfigurationException {

+		XMLReader xmlReader = pkg.getXMLReader();

+		xmlReader.setEntityResolver(pkg.getEntityResolver());

+		return xmlReader;

+	}

+

+	/**

+	 * use SAX parser to parse content of package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param contentHandler a SAX Content handler to receive SAX Events

+	 * @param errorHandler a SAX Error handler to be called on errors during parsing

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 */

+	public void parse(OdfPackage pkg, String path, ContentHandler contentHandler, ErrorHandler errorHandler)

+			throws SAXException, ParserConfigurationException, IOException, IllegalArgumentException, TransformerConfigurationException, TransformerException {

+

+		InputStream is = null;

+		try {

+			is = pkg.getInputStream(path);

+			XMLReader reader = newXMLReader(pkg);

+

+			String uri = pkg.getBaseURI() + path;

+

+			if (contentHandler != null) {

+				reader.setContentHandler(contentHandler);

+			}

+			if (errorHandler != null) {

+				reader.setErrorHandler(errorHandler);

+			}

+

+			InputSource ins = new InputSource(is);

+			ins.setSystemId(uri);

+

+			reader.parse(ins);

+		} catch (Exception ex) {

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

+		} finally {

+			try {

+				is.close();

+			} catch (IOException ex) {

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

+			}

+		}

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templatePath a path to a file in the filesystem containing an XSL Template

+	 * @param outPath a path in the filesystem for the output of the XSL Transformation

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, String templatePath, String outPath)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+

+		transform(pkg, path, new File(templatePath), new File(outPath));

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templateSource TraX Source of an XSL Transformation Template

+	 * @param outPath path to an output file for the XSL Transformation

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, Source templateSource, String outPath)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+

+		transform(pkg, path, templateSource, new File(outPath));

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templateSource TraX Source of an XSL Transformation

+	 * @param out an output File

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, Source templateSource, File out)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+

+		transform(pkg, path, templateSource, new StreamResult(out));

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * insert result back to package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templatePath path inside the filesystem to an XSL template file

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, String templatePath)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+		transform(pkg, path, new File(templatePath));

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param template File containing an XSLT Template

+	 * @param out File for the XSLT ouput

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, File template, File out)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+

+		TransformerFactory transformerfactory = TransformerFactory.newInstance();

+

+		Templates templates = transformerfactory.newTemplates(new StreamSource(template));

+		transform(pkg, path, templates, new StreamResult(out));

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * insert result back to package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param template a File containing an XSLT Template

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, File template)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+

+		TransformerFactory transformerfactory = TransformerFactory.newInstance();

+

+		Templates templates = transformerfactory.newTemplates(new StreamSource(template));

+		transform(pkg, path, templates);

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templateSource TraX Source of an XSLT Template

+	 * @param result TraX Result of XSL-Tranformation

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, Source templateSource, Result result)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException,

+			ParserConfigurationException {

+		TransformerFactory transformerfactory = TransformerFactory.newInstance();

+		transformerfactory.setURIResolver(pkg.getURIResolver());

+

+		Templates templates = transformerfactory.newTemplates(templateSource);

+		transform(pkg, path, templates, result);

+	}

+

+	/**

+	 * Does an XSL-Transformation on content contained in package.<br/><br/>

+	 *

+	 * There are three default parameters provided to the transformation:

+	 * There are three default parameters provided to the transformation:

+	 * <ol>

+	 * <li><b>sourceURL:</b> the URL of the source directory </li>

+	 * <li><b>sourceBaseURL:</b> baseURL of the source file (the package).

+	 * This URL necessary to access any content within the package from the XSLT scripts.

+	 * The relative package path will concatenated after the 'sourceBaseURL'.</li>

+	 * <li><b>targetURL:</b> the URL of the target directory</li>

+	 * <li><b>targetBaseURL:</b>the baseURL of the target file</li>

+	 * </ol>

+	 *

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templates TraX XSLT Template

+	 * @param result TraX XSLT Result

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, Templates templates, Result result)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException,

+			ParserConfigurationException {

+		try {

+

+			Source source = null;

+			String uri = pkg.getBaseURI() + path;

+			Document doc = pkg.getDom(path);

+			source = new DOMSource(doc);

+			Transformer transformer = templates.newTransformer();

+			transformer.setURIResolver(pkg.getURIResolver());

+

+			transformer.setParameter("sourceURL", uri);

+			// switch to this, for odf2rdf.xsl grddl transformation

+			transformer.setParameter("sourceBaseURL", Util.getRDFBaseUri(pkg.getBaseURI(), path));

+

+			uri = result.getSystemId();

+			if (uri != null) {

+				transformer.setParameter("targetURL", uri);

+				int i = uri.lastIndexOf('/');

+				if (i > 0) {

+					uri = uri.substring(0, i + 1);

+					transformer.setParameter("targetBaseURL", uri);

+				}

+			}

+			DocumentType doctype = doc.getDoctype();

+			if (doctype != null) {

+				if (doctype.getPublicId() != null) {

+					transformer.setParameter("publicType", doctype.getPublicId());

+				}

+				if (doctype.getSystemId() != null) {

+					transformer.setParameter("systemType", doctype.getSystemId());

+				}

+			}

+

+			transformer.transform(source, result);

+		} catch (Exception ex) {

+			Logger.getLogger(OdfXMLHelper.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);

+		}

+	}

+

+	/**

+	 * Do XSL-Transformation on content contained in package

+	 * and insert result back to package

+	 * @param pkg a OdfPackage

+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream

+	 * @param templates Trax XSLT Template

+	 * @throws TransformerConfigurationException

+	 * @throws TransformerException

+	 * @throws IOException

+	 * @throws IllegalArgumentException

+	 * @throws SAXException

+	 * @throws ParserConfigurationException

+	 */

+	public void transform(OdfPackage pkg, String path, Templates templates)

+			throws TransformerConfigurationException, TransformerException,

+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {

+

+		Result result = null;

+		ByteArrayOutputStream baos = null;

+

+//		if (pkg.isDomCached(path)) {

+//			result = new DOMResult();

+//		} else {

+			baos = new ByteArrayOutputStream();

+			result = new StreamResult(baos);

+//		}

+

+		transform(pkg, path, templates, result);

+

+//		if (pkg.isDomCached(path)) {

+//			try {

+//				pkg.insert((Document) ((DOMResult) result).getNode(), path, null);

+//			} catch (Exception ex) {

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

+//			}

+//		} else {

+			try {

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

+				pkg.insert(data, path, "text/xml");

+			} catch (Exception ex) {

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

+			}

+//		}

+

+	}

+}

+

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/Resolver.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/Resolver.java
new file mode 100644
index 0000000..9215348
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/Resolver.java
@@ -0,0 +1,171 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.JarURLConnection;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamSource;
+
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+/**
+ * resolve external entities
+ */
+class Resolver implements EntityResolver, URIResolver {
+
+	private final OdfPackage mPackage;
+
+	/**
+	 * Resolver constructor.
+	 */
+	public Resolver(OdfPackage pkg) {
+		super();
+		mPackage = pkg;
+	}
+
+	/**
+	 * Allow the application to resolve external entities.
+	 *
+	 * The Parser will call this method before opening any external entity except
+	 * the top-level document entity (including the external DTD subset,
+	 * external entities referenced within the DTD, and external entities referenced
+	 * within the document element): the application may request that the parser
+	 * resolve the entity itself, that it use an alternative URI,
+	 * or that it use an entirely different input source.
+	 */
+	public InputSource resolveEntity(String publicId, String systemId)
+			throws SAXException, IOException {
+		// this deactivates the attempt to load the none existent Math DTD once referenced from OOo files
+		if (publicId != null && publicId.startsWith("-//OpenOffice.org//DTD Modified W3C MathML")) {
+			return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
+		}
+		if (systemId != null) {
+			// if the entity to be resolved is the base URI return the package
+			if ((mPackage.getBaseURI() != null) && systemId.startsWith(mPackage.getBaseURI())) {
+				if (systemId.equals(mPackage.getBaseURI())) {
+					InputStream in = null;
+					try {
+						in = mPackage.getInputStream();
+					} catch (Exception e) {
+						throw new SAXException(e);
+					}
+					InputSource ins;
+					ins = new InputSource(in);
+
+					if (ins == null) {
+						return null;
+					}
+					ins.setSystemId(systemId);
+					return ins;
+				} else {
+					// if the reference points into the package (is larger than the base URI)
+					if (systemId.length() > mPackage.getBaseURI().length() + 1) {
+						InputStream in = null;
+						try {
+							String path = systemId.substring(mPackage.getBaseURI().length() + 1);
+							in = mPackage.getInputStream(path);
+							InputSource ins = new InputSource(in);
+							ins.setSystemId(systemId);
+							return ins;
+						} catch (Exception ex) {
+							Logger.getLogger(Resolver.class.getName()).log(Level.SEVERE, null, ex);
+						} finally {
+							try {
+								in.close();
+							} catch (IOException ex) {
+								Logger.getLogger(Resolver.class.getName()).log(Level.SEVERE, null, ex);
+							}
+						}
+					}
+					return null;
+				}
+			} else if (systemId.startsWith("resource:/")) {
+				int i = systemId.indexOf('/');
+				if ((i > 0) && systemId.length() > i + 1) {
+					String res = systemId.substring(i + 1);
+					ClassLoader cl = OdfPackage.class.getClassLoader();
+					InputStream in = cl.getResourceAsStream(res);
+					if (in != null) {
+						InputSource ins = new InputSource(in);
+						ins.setSystemId(systemId);
+						return ins;
+					}
+				}
+				return null;
+			} else if (systemId.startsWith("jar:")) {
+				try {
+					URL url = new URL(systemId);
+					JarURLConnection jarConn = (JarURLConnection) url.openConnection();
+					InputSource ins = new InputSource(jarConn.getInputStream());
+					ins.setSystemId(systemId);
+					return ins;
+				} catch (MalformedURLException ex) {
+					Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);
+				}
+			}
+		}
+		return null;
+	}
+
+	public Source resolve(String href, String base)
+			throws TransformerException {
+		try {
+			URI uri = null;
+			if (base != null) {
+				URI baseuri = new URI(base);
+				uri = baseuri.resolve(href);
+			} else {
+				uri = new URI(href);
+			}
+
+			InputSource ins = null;
+			try {
+				ins = resolveEntity(null, uri.toString());
+			} catch (Exception e) {
+				throw new TransformerException(e);
+			}
+			if (ins == null) {
+				return null;
+			}
+			InputStream in = ins.getByteStream();
+			StreamSource src = new StreamSource(in);
+			src.setSystemId(uri.toString());
+			return src;
+		} catch (URISyntaxException use) {
+			return null;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/StreamHelper.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/StreamHelper.java
new file mode 100644
index 0000000..d9ec77b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/StreamHelper.java
@@ -0,0 +1,81 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * This class reads from an InputStream and writes to an OutputStream.
+ * No streams will be closed - calling classes must do this.
+ */
+class StreamHelper {
+
+    // 4096 is thought to be the minimum page size for most systems;
+    // change this for optimization
+    public static final int PAGE_SIZE = 4096;
+    private InputStream in;
+    private OutputStream out;
+    private boolean mStreamed;
+
+    /**
+     * Read from the input stream and write to the output. This method
+     * does not close any stream; calling methods must take care of that.
+     * @throws IOException when io error happens
+     */
+    static void transformStream(InputStream in, OutputStream out) throws IOException {
+        StreamHelper s = new StreamHelper(in, out);
+        s.stream();
+    }
+
+    /**
+     * Create a new StreamHelper
+     * @param in the input stream used for reading
+     * @param out the output stream written to
+     */
+    StreamHelper(InputStream in, OutputStream out) {
+        this.in = in;
+        this.out = out;
+        mStreamed = false;
+    }
+
+    /**
+     * Read from the input stream and write to the output. This method can only
+     * be called once. A second call will result in an IOException. This method
+     * does not close any stream; calling methods must take care of that.
+     * @throws IOException when io error happens
+     */
+    void stream() throws IOException {
+        if (mStreamed) throw new IOException();
+        byte[] buf = new byte[PAGE_SIZE];
+        int r = 0;
+        // let npe happen if one of the streams is null
+        while ((r = in.read(buf, 0, PAGE_SIZE)) > -1) {
+            out.write(buf, 0, r);
+        }
+        // free the references
+        in = null;
+        out = null;
+        mStreamed = true;
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ValidationConstraint.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ValidationConstraint.java
new file mode 100644
index 0000000..b3eb571
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ValidationConstraint.java
@@ -0,0 +1,49 @@
+/************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ *
+ * Copyright 2010 Oracle and/or its affiliates. All rights reserved.ed.
+ *
+ * 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.pkg;
+
+/**
+ * A <code>ValidationConstraint</code> is used to collect validation conditions and their return messages in case not appliance (invalid condition).
+ */
+public interface ValidationConstraint {
+
+	 /**
+     * Creates a localized description of a Constraint.
+     * Subclasses may override this method in order to produce a
+     * locale-specific message.  For subclasses that do not override this
+     * method, the default implementation returns the same result as
+     * <code>getMessage()</code>.
+     *
+     * @return  The localized description of this constraint. */
+	
+	public String getLocalizedMessage();
+
+
+    /**
+     * Returns the detail message string of this Constraint.
+     *
+     * @return  the detail message string of this <tt>Constraint</tt> instance
+     *          (which may be <tt>null</tt>).
+     */
+	public String getMessage();
+}
+
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ZipHelper.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ZipHelper.java
new file mode 100644
index 0000000..e883150
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/ZipHelper.java
@@ -0,0 +1,154 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+
+class ZipHelper {
+
+	private ZipFile mZipFile = null;
+	private byte[] mZipBuffer = null;
+	private OdfPackage mPackage = null;
+
+	public ZipHelper(OdfPackage pkg, ZipFile zipFile) {
+		mZipFile = zipFile;
+		mZipBuffer = null;
+		mPackage = pkg;
+	}
+
+	public ZipHelper(OdfPackage pkg, byte[] buffer) {
+		mZipBuffer = buffer;
+		mZipFile = null;
+		mPackage = pkg;
+	}
+
+	String entriesToMap(Map<String, ZipEntry> zipEntries) throws IOException, SAXException {
+		String firstEntryName = null;
+		if (mZipFile != null) {
+			Enumeration<? extends ZipEntry> entries = mZipFile.entries();
+			if (entries.hasMoreElements()) {
+				ZipEntry zipEntry = entries.nextElement();
+				if (zipEntry != null) {
+					firstEntryName = zipEntry.getName();
+					addZipEntry(zipEntry, zipEntries);
+					while (entries.hasMoreElements()) {
+						zipEntry = entries.nextElement();
+						addZipEntry(zipEntry, zipEntries);
+					}
+				}
+			}
+		} else {
+			ZipInputStream inputStream = new ZipInputStream(new ByteArrayInputStream(mZipBuffer));
+			if (inputStream.available() == 0) {
+				throw new IllegalArgumentException("Could not unzip the given ODF package!");
+			} else {
+				ZipEntry zipEntry = inputStream.getNextEntry();
+				if (zipEntry != null) {
+					firstEntryName = zipEntry.getName();
+					addZipEntry(zipEntry, zipEntries);
+					while (zipEntry != null) {
+						addZipEntry(zipEntry, zipEntries);
+						try {
+							zipEntry = inputStream.getNextEntry();
+						} catch (java.util.zip.ZipException e) {
+							// JDK 6 -- the try/catch is workaround for a
+							// specific JDK 5 only problem
+							if (!e.getMessage().contains("missing entry name") && !System.getProperty("Java.version").equals("1.5.0")) {
+								Logger.getLogger(ZipHelper.class.getName()).info("ZIP ENTRY not found");
+								throw e;
+							}
+						}
+					}
+				}
+			}
+			inputStream.close();
+		}
+		return firstEntryName;
+	}
+
+	private void addZipEntry(ZipEntry zipEntry, Map<String, ZipEntry> zipEntries) {
+		String filePath = OdfPackage.normalizePath(zipEntry.getName());
+		ErrorHandler errorHandler = mPackage.getErrorHandler();
+		if (errorHandler != null) {
+			try {
+				int zipMethod = zipEntry.getMethod();
+				if (zipMethod != ZipEntry.STORED && zipMethod != ZipEntry.DEFLATED) {
+					mPackage.getErrorHandler().error(
+							new OdfValidationException(OdfPackageConstraint.PACKAGE_ENTRY_USING_INVALID_COMPRESSION, mPackage.getBaseURI(), filePath));
+				}
+			} catch (SAXException ex) {
+				Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null, ex);
+			}
+		}
+		zipEntries.put(filePath, zipEntry);
+	}
+
+	InputStream getInputStream(ZipEntry entry) throws IOException {
+		if (mZipFile != null) {
+			return mZipFile.getInputStream(entry);
+		} else {
+			ZipInputStream inputStream = new ZipInputStream(new ByteArrayInputStream(mZipBuffer));
+			ZipEntry zipEntry = inputStream.getNextEntry();
+			while (zipEntry != null) {
+				if (zipEntry.getName().equalsIgnoreCase(entry.getName())) {
+					return readAsInputStream(inputStream);
+				}
+				zipEntry = inputStream.getNextEntry();
+			}
+			return null;
+		}
+	}
+
+	private InputStream readAsInputStream(ZipInputStream inputStream) throws IOException {
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		if (outputStream != null) {
+			byte[] buf = new byte[4096];
+			int r = 0;
+			while ((r = inputStream.read(buf, 0, 4096)) > -1) {
+				outputStream.write(buf, 0, r);
+			}
+			inputStream.close();
+		}
+		return new ByteArrayInputStream(outputStream.toByteArray());
+
+	}
+
+	void close() throws IOException {
+		if (mZipFile != null) {
+			mZipFile.close();
+		} else {
+			mZipBuffer = null;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/DocumentSignaturesElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/DocumentSignaturesElement.java
new file mode 100644
index 0000000..9b4d949
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/DocumentSignaturesElement.java
@@ -0,0 +1,103 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+

+/**

+ * DOM implementation of OpenDocument element  {@odf.element dsig:document-signatures}.

+ *

+ */

+public class DocumentSignaturesElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0", "dsig:document-signatures");

+

+	/**

+	 * Create the instance of <code>DocumentSignaturesElement</code>

+	 *

+	 * @param  ownerDoc The type is <code>OdfFileDom</code>

+	 */

+	public DocumentSignaturesElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return <code>OdfName</code> the name of element {@odf.element dsig:document-signatures}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>VersionAttribute</code> , See {@odf.attribute dsig:version}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getVersionAttribute() {

+		VersionAttribute attr = (VersionAttribute) getOdfAttribute(VersionAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>VersionAttribute</code> , See {@odf.attribute dsig:version}

+	 *

+	 * @param versionValue   The type is <code>String</code>

+	 */

+	public void setVersionAttribute(String versionValue) {

+		VersionAttribute attr = new VersionAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(versionValue);

+	}

+

+	/**

+	 * Create child element {@odf.element ds:Signature}.

+	 *

+	 * Child element is new in Odf 1.2

+	 *

+	 * Child element is mandatory.

+	 *

+	 * @return the element {@odf.element ds:Signature}

+	 */

+	public SignatureElement newSignatureElement() {

+		SignatureElement signature = ((OdfFileDom) this.ownerDocument).newOdfElement(SignatureElement.class);

+		this.appendChild(signature);

+		return signature;

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/SignatureElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/SignatureElement.java
new file mode 100644
index 0000000..696ae4a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/SignatureElement.java
@@ -0,0 +1,70 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+

+/**

+ * DOM implementation of OpenDocument element  {@odf.element ds:Signature}.

+ *

+ */

+public class SignatureElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("http://www.w3.org/2000/09/xmldsig#", "ds:Signature");

+

+	/**

+	 * Create the instance of <code>SignatureElement</code>

+	 *

+	 * @param  ownerDoc The type is <code>OdfFileDom</code>

+	 */

+	public SignatureElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return <code>OdfName</code> the name of element {@odf.element ds:Signature}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Add text content. Only elements which are allowed to have text content offer this method.

+	 */

+	 public void newTextNode(String content) {

+		if (content != null && !content.equals("")) {

+			this.appendChild(this.getOwnerDocument().createTextNode(content));

+		}

+	 }

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/VersionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/VersionAttribute.java
new file mode 100644
index 0000000..32fed37
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/dsig/VersionAttribute.java
@@ -0,0 +1,165 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.dsig;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * DOM implementation of OpenDocument attribute  {@odf.attribute dsig:version}.

+ *

+ */

+public class VersionAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0", "dsig:version");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute dsig:version}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public VersionAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute dsig:version}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute dsig:version}.

+	 */

+	public enum Value {

+		_1_2("1.2") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(Value.enumValueOf(attrValue).toString());

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException(e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return Value.enumValueOf(super.getValue()).toString();

+		} catch (NullPointerException e) {

+			throw new IllegalArgumentException("the value of dsig:version is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute dsig:version}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute dsig:version} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/AlgorithmElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/AlgorithmElement.java
new file mode 100644
index 0000000..e70d8b0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/AlgorithmElement.java
@@ -0,0 +1,112 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:algorithm}.

+ *

+ */

+public class AlgorithmElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:algorithm");

+

+	/**

+	 * Create the instance of <code>AlgorithmElement</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public AlgorithmElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:algorithm}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>AlgorithmNameAttribute</code> , See {@odf.attribute manifest:algorithm-name}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getAlgorithmNameAttribute() {

+		AlgorithmNameAttribute attr = (AlgorithmNameAttribute) getOdfAttribute(AlgorithmNameAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>AlgorithmNameAttribute</code> , See {@odf.attribute manifest:algorithm-name}

+	 *

+	 * @param algorithmNameValue   The type is <code>String</code>

+	 */

+	public void setAlgorithmNameAttribute(String algorithmNameValue) {

+		AlgorithmNameAttribute attr = new AlgorithmNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(algorithmNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>InitialisationVectorAttribute</code> , See {@odf.attribute manifest:initialisation-vector}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getInitialisationVectorAttribute() {

+		InitialisationVectorAttribute attr = (InitialisationVectorAttribute) getOdfAttribute(InitialisationVectorAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>InitialisationVectorAttribute</code> , See {@odf.attribute manifest:initialisation-vector}

+	 *

+	 * @param initialisationVectorValue   The type is <code>String</code>

+	 */

+	public void setInitialisationVectorAttribute(String initialisationVectorValue) {

+		InitialisationVectorAttribute attr = new InitialisationVectorAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(initialisationVectorValue);

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/AlgorithmNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/AlgorithmNameAttribute.java
new file mode 100644
index 0000000..60c04a3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/AlgorithmNameAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:algorithm-name}.

+ *

+ */

+public class AlgorithmNameAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:algorithm-name");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:algorithm-name}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public AlgorithmNameAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:algorithm-name}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute manifest:algorithm-name}.

+	 */

+	public enum Value {

+		BLOWFISH_CFB("Blowfish CFB") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:algorithm-name}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:algorithm-name} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ChecksumAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ChecksumAttribute.java
new file mode 100644
index 0000000..159bf53
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ChecksumAttribute.java
@@ -0,0 +1,129 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:checksum}.

+ *

+ */

+public class ChecksumAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:checksum");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:checksum}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public ChecksumAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:checksum}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of checksum is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:checksum}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:checksum} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ChecksumTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ChecksumTypeAttribute.java
new file mode 100644
index 0000000..445b1f6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ChecksumTypeAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:checksum-type}.

+ *

+ */

+public class ChecksumTypeAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:checksum-type");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:checksum-type}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public ChecksumTypeAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:checksum-type}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute manifest:checksum-type}.

+	 */

+	public enum Value {

+		SHA1_1K("SHA1/1K") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:checksum-type}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:checksum-type} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/EncryptionDataElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/EncryptionDataElement.java
new file mode 100644
index 0000000..977bf9e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/EncryptionDataElement.java
@@ -0,0 +1,167 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:encryption-data}.

+ *

+ */

+public class EncryptionDataElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:encryption-data");

+

+	/**

+	 * Create the instance of <code>EncryptionDataElement</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public EncryptionDataElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:encryption-data}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>ChecksumAttribute</code> , See {@odf.attribute manifest:checksum}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getChecksumAttribute() {

+		ChecksumAttribute attr = (ChecksumAttribute) getOdfAttribute(ChecksumAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>ChecksumAttribute</code> , See {@odf.attribute manifest:checksum}

+	 *

+	 * @param checksumValue   The type is <code>String</code>

+	 */

+	public void setChecksumAttribute(String checksumValue) {

+		ChecksumAttribute attr = new ChecksumAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(checksumValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>ChecksumTypeAttribute</code> , See {@odf.attribute manifest:checksum-type}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getChecksumTypeAttribute() {

+		ChecksumTypeAttribute attr = (ChecksumTypeAttribute) getOdfAttribute(ChecksumTypeAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>ChecksumTypeAttribute</code> , See {@odf.attribute manifest:checksum-type}

+	 *

+	 * @param checksumTypeValue   The type is <code>String</code>

+	 */

+	public void setChecksumTypeAttribute(String checksumTypeValue) {

+		ChecksumTypeAttribute attr = new ChecksumTypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(checksumTypeValue);

+	}

+

+	/**

+	 * Create child element {@odf.element manifest:algorithm}.

+	 *

+	 * @param algorithmNameValue  the <code>String</code> value of <code>AlgorithmNameAttribute</code>, see {@odf.attribute  manifest:algorithm-name} at specification

+	 * @param initialisationVectorValue  the <code>String</code> value of <code>InitialisationVectorAttribute</code>, see {@odf.attribute  manifest:initialisation-vector} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * Child element is mandatory.

+	 *

+	 * @return the element {@odf.element manifest:algorithm}

+	 */

+	 public AlgorithmElement newAlgorithmElement(String algorithmNameValue, String initialisationVectorValue) {

+		AlgorithmElement algorithm = ((OdfFileDom) this.ownerDocument).newOdfElement(AlgorithmElement.class);

+		algorithm.setAlgorithmNameAttribute(algorithmNameValue);

+		algorithm.setInitialisationVectorAttribute(initialisationVectorValue);

+		this.appendChild(algorithm);

+		return algorithm;

+	}

+

+	/**

+	 * Create child element {@odf.element manifest:key-derivation}.

+	 *

+	 * @param iterationCountValue  the <code>Integer</code> value of <code>IterationCountAttribute</code>, see {@odf.attribute  manifest:iteration-count} at specification

+	 * @param keyDerivationNameValue  the <code>String</code> value of <code>KeyDerivationNameAttribute</code>, see {@odf.attribute  manifest:key-derivation-name} at specification

+	 * @param saltValue  the <code>String</code> value of <code>SaltAttribute</code>, see {@odf.attribute  manifest:salt} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * Child element is mandatory.

+	 *

+	 * @return the element {@odf.element manifest:key-derivation}

+	 */

+	 public KeyDerivationElement newKeyDerivationElement(int iterationCountValue, String keyDerivationNameValue, String saltValue) {

+		KeyDerivationElement keyDerivation = ((OdfFileDom) this.ownerDocument).newOdfElement(KeyDerivationElement.class);

+		keyDerivation.setIterationCountAttribute(iterationCountValue);

+		keyDerivation.setKeyDerivationNameAttribute(keyDerivationNameValue);

+		keyDerivation.setSaltAttribute(saltValue);

+		this.appendChild(keyDerivation);

+		return keyDerivation;

+	}

+

+	/**

+	 * Create child element {@odf.element manifest:start-key-generation}.

+	 *

+	 * @param startKeyGenerationNameValue  the <code>String</code> value of <code>StartKeyGenerationNameAttribute</code>, see {@odf.attribute  manifest:start-key-generation-name} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element manifest:start-key-generation}

+	 */

+	 public StartKeyGenerationElement newStartKeyGenerationElement(String startKeyGenerationNameValue) {

+		StartKeyGenerationElement startKeyGeneration = ((OdfFileDom) this.ownerDocument).newOdfElement(StartKeyGenerationElement.class);

+		startKeyGeneration.setStartKeyGenerationNameAttribute(startKeyGenerationNameValue);

+		this.appendChild(startKeyGeneration);

+		return startKeyGeneration;

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/FileEntryElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/FileEntryElement.java
new file mode 100644
index 0000000..0962b41
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/FileEntryElement.java
@@ -0,0 +1,201 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:file-entry}.

+ *

+ */

+public class FileEntryElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:file-entry");

+

+	/**

+	 * Create the instance of <code>FileEntryElement</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public FileEntryElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:file-entry}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>FullPathAttribute</code> , See {@odf.attribute manifest:full-path}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getFullPathAttribute() {

+		FullPathAttribute attr = (FullPathAttribute) getOdfAttribute(FullPathAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>FullPathAttribute</code> , See {@odf.attribute manifest:full-path}

+	 *

+	 * @param fullPathValue   The type is <code>String</code>

+	 */

+	public void setFullPathAttribute(String fullPathValue) {

+		FullPathAttribute attr = new FullPathAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(fullPathValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>MediaTypeAttribute</code> , See {@odf.attribute manifest:media-type}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getMediaTypeAttribute() {

+		MediaTypeAttribute attr = (MediaTypeAttribute) getOdfAttribute(MediaTypeAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>MediaTypeAttribute</code> , See {@odf.attribute manifest:media-type}

+	 *

+	 * @param mediaTypeValue   The type is <code>String</code>

+	 */

+	public void setMediaTypeAttribute(String mediaTypeValue) {

+		MediaTypeAttribute attr = new MediaTypeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(mediaTypeValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>PreferredViewModeAttribute</code> , See {@odf.attribute manifest:preferred-view-mode}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getPreferredViewModeAttribute() {

+		PreferredViewModeAttribute attr = (PreferredViewModeAttribute) getOdfAttribute(PreferredViewModeAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>PreferredViewModeAttribute</code> , See {@odf.attribute manifest:preferred-view-mode}

+	 *

+	 * @param preferredViewModeValue   The type is <code>String</code>

+	 */

+	public void setPreferredViewModeAttribute(String preferredViewModeValue) {

+		PreferredViewModeAttribute attr = new PreferredViewModeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(preferredViewModeValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>SizeAttribute</code> , See {@odf.attribute manifest:size}

+	 *

+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Integer getSizeAttribute() {

+		SizeAttribute attr = (SizeAttribute) getOdfAttribute(SizeAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return Integer.valueOf(attr.intValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>SizeAttribute</code> , See {@odf.attribute manifest:size}

+	 *

+	 * @param sizeValue   The type is <code>Integer</code>

+	 */

+	public void setSizeAttribute(Integer sizeValue) {

+		SizeAttribute attr = new SizeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setIntValue(sizeValue.intValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>VersionAttribute</code> , See {@odf.attribute manifest:version}

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getVersionAttribute() {

+		VersionAttribute attr = (VersionAttribute) getOdfAttribute(VersionAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>VersionAttribute</code> , See {@odf.attribute manifest:version}

+	 *

+	 * @param versionValue   The type is <code>String</code>

+	 */

+	public void setVersionAttribute(String versionValue) {

+		VersionAttribute attr = new VersionAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(versionValue);

+	}

+

+	/**

+	 * Create child element {@odf.element manifest:encryption-data}.

+	 *

+	 * @param checksumValue  the <code>String</code> value of <code>ChecksumAttribute</code>, see {@odf.attribute  manifest:checksum} at specification

+	 * @param checksumTypeValue  the <code>String</code> value of <code>ChecksumTypeAttribute</code>, see {@odf.attribute  manifest:checksum-type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * @return the element {@odf.element manifest:encryption-data}

+	 */

+	 public EncryptionDataElement newEncryptionDataElement(String checksumValue, String checksumTypeValue) {

+		EncryptionDataElement encryptionData = ((OdfFileDom) this.ownerDocument).newOdfElement(EncryptionDataElement.class);

+		encryptionData.setChecksumAttribute(checksumValue);

+		encryptionData.setChecksumTypeAttribute(checksumTypeValue);

+		this.appendChild(encryptionData);

+		return encryptionData;

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/FullPathAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/FullPathAttribute.java
new file mode 100644
index 0000000..e21a0f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/FullPathAttribute.java
@@ -0,0 +1,129 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:full-path}.

+ *

+ */

+public class FullPathAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:full-path");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:full-path}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public FullPathAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:full-path}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of full-path is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:full-path}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:full-path} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/InitialisationVectorAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/InitialisationVectorAttribute.java
new file mode 100644
index 0000000..525de5c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/InitialisationVectorAttribute.java
@@ -0,0 +1,129 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:initialisation-vector}.

+ *

+ */

+public class InitialisationVectorAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:initialisation-vector");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:initialisation-vector}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public InitialisationVectorAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:initialisation-vector}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of initialisation-vector is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:initialisation-vector}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:initialisation-vector} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/IterationCountAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/IterationCountAttribute.java
new file mode 100644
index 0000000..6a250b2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/IterationCountAttribute.java
@@ -0,0 +1,149 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:iteration-count}.

+ *

+ */

+public class IterationCountAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:iteration-count");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:iteration-count}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public IterationCountAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:iteration-count}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param value The <code>int</code> value of the attribute.

+	 */

+	public void setIntValue(int value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>int</code> value of the attribute

+	 */

+	public int intValue() {

+		String val = super.getValue();

+		try {

+			return Integer.parseInt(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of iteration-count is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:iteration-count}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:iteration-count} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeyDerivationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeyDerivationElement.java
new file mode 100644
index 0000000..c85ce80
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeyDerivationElement.java
@@ -0,0 +1,162 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:key-derivation}.

+ *

+ */

+public class KeyDerivationElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:key-derivation");

+

+	/**

+	 * Create the instance of <code>KeyDerivationElement</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public KeyDerivationElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:key-derivation}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>IterationCountAttribute</code> , See {@odf.attribute manifest:iteration-count}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Integer getIterationCountAttribute() {

+		IterationCountAttribute attr = (IterationCountAttribute) getOdfAttribute(IterationCountAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return Integer.valueOf(attr.intValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>IterationCountAttribute</code> , See {@odf.attribute manifest:iteration-count}

+	 *

+	 * @param iterationCountValue   The type is <code>Integer</code>

+	 */

+	public void setIterationCountAttribute(Integer iterationCountValue) {

+		IterationCountAttribute attr = new IterationCountAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setIntValue(iterationCountValue.intValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>KeyDerivationNameAttribute</code> , See {@odf.attribute manifest:key-derivation-name}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getKeyDerivationNameAttribute() {

+		KeyDerivationNameAttribute attr = (KeyDerivationNameAttribute) getOdfAttribute(KeyDerivationNameAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>KeyDerivationNameAttribute</code> , See {@odf.attribute manifest:key-derivation-name}

+	 *

+	 * @param keyDerivationNameValue   The type is <code>String</code>

+	 */

+	public void setKeyDerivationNameAttribute(String keyDerivationNameValue) {

+		KeyDerivationNameAttribute attr = new KeyDerivationNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(keyDerivationNameValue);

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>KeySizeAttribute</code> , See {@odf.attribute manifest:key-size}

+	 *

+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Integer getKeySizeAttribute() {

+		KeySizeAttribute attr = (KeySizeAttribute) getOdfAttribute(KeySizeAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return Integer.valueOf(attr.intValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>KeySizeAttribute</code> , See {@odf.attribute manifest:key-size}

+	 *

+	 * @param keySizeValue   The type is <code>Integer</code>

+	 */

+	public void setKeySizeAttribute(Integer keySizeValue) {

+		KeySizeAttribute attr = new KeySizeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setIntValue(keySizeValue.intValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>SaltAttribute</code> , See {@odf.attribute manifest:salt}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getSaltAttribute() {

+		SaltAttribute attr = (SaltAttribute) getOdfAttribute(SaltAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>SaltAttribute</code> , See {@odf.attribute manifest:salt}

+	 *

+	 * @param saltValue   The type is <code>String</code>

+	 */

+	public void setSaltAttribute(String saltValue) {

+		SaltAttribute attr = new SaltAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(saltValue);

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeyDerivationNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeyDerivationNameAttribute.java
new file mode 100644
index 0000000..c345d27
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeyDerivationNameAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:key-derivation-name}.

+ *

+ */

+public class KeyDerivationNameAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:key-derivation-name");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:key-derivation-name}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public KeyDerivationNameAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:key-derivation-name}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute manifest:key-derivation-name}.

+	 */

+	public enum Value {

+		PBKDF2("PBKDF2") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:key-derivation-name}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:key-derivation-name} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeySizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeySizeAttribute.java
new file mode 100644
index 0000000..2c1437a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/KeySizeAttribute.java
@@ -0,0 +1,149 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:key-size}.

+ *

+ */

+public class KeySizeAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:key-size");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:key-size}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public KeySizeAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:key-size}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param value The <code>int</code> value of the attribute.

+	 */

+	public void setIntValue(int value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>int</code> value of the attribute

+	 */

+	public int intValue() {

+		String val = super.getValue();

+		try {

+			return Integer.parseInt(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of key-size is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:key-size}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:key-size} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ManifestElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ManifestElement.java
new file mode 100644
index 0000000..e8ce4dc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/ManifestElement.java
@@ -0,0 +1,105 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:manifest}.

+ *

+ */

+public class ManifestElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:manifest");

+

+	/**

+	 * Create the instance of <code>ManifestElement</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public ManifestElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:manifest}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>VersionAttribute</code> , See {@odf.attribute manifest:version}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getVersionAttribute() {

+		VersionAttribute attr = (VersionAttribute) getOdfAttribute(VersionAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>VersionAttribute</code> , See {@odf.attribute manifest:version}

+	 *

+	 * @param versionValue   The type is <code>String</code>

+	 */

+	public void setVersionAttribute(String versionValue) {

+		VersionAttribute attr = new VersionAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(versionValue);

+	}

+

+	/**

+	 * Create child element {@odf.element manifest:file-entry}.

+	 *

+	 * @param fullPathValue  the <code>String</code> value of <code>FullPathAttribute</code>, see {@odf.attribute  manifest:full-path} at specification

+	 * @param mediaTypeValue  the <code>String</code> value of <code>MediaTypeAttribute</code>, see {@odf.attribute  manifest:media-type} at specification

+	 * Child element is new in Odf 1.2

+	 *

+	 * Child element is mandatory.

+	 *

+	 * @return the element {@odf.element manifest:file-entry}

+	 */

+	 public FileEntryElement newFileEntryElement(String fullPathValue, String mediaTypeValue) {

+		FileEntryElement fileEntry = ((OdfFileDom) this.ownerDocument).newOdfElement(FileEntryElement.class);

+		fileEntry.setFullPathAttribute(fullPathValue);

+		fileEntry.setMediaTypeAttribute(mediaTypeValue);

+		this.appendChild(fileEntry);

+		return fileEntry;

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/MediaTypeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/MediaTypeAttribute.java
new file mode 100644
index 0000000..c3aab9c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/MediaTypeAttribute.java
@@ -0,0 +1,129 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:media-type}.

+ *

+ */

+public class MediaTypeAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:media-type");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:media-type}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public MediaTypeAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:media-type}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of media-type is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:media-type}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:media-type} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java
new file mode 100644
index 0000000..30d336d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfFileEntry.java
@@ -0,0 +1,246 @@
+/************************************************************************
+ *
+ * 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.pkg.manifest;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+
+public class OdfFileEntry {
+
+	private FileEntryElement mFileEntryElement;
+
+	private static Map<String, String> MEDIA_TYPE_MAP = null;
+	private static final String EMPTY_STRING = "";
+	private static final String DEFAULT_TYPE = "application/octet-stream";
+	private static final String APPLICATION_POSTSCRIPT = "application/postscript";
+	private static final String APPLICATION_RTF = "application/rtf";
+	private static final String APPLICATION_X_TEX = "application/x-tex";
+	private static final String APPLICATION_X_TEXINFO = "application/x-texinfo";
+	private static final String APPLICATION_X_TROFF = "application/x-troff";
+	private static final String AUDIO_BASIC = "audio/basic";
+	private static final String AUDIO_MIDI = "audio/midi";
+	private static final String AUDIO_X_AIFC = "audio/x-aifc";
+	private static final String AUDIO_X_AIFF = "audio/x-aiff";
+	private static final String AUDIO_X_MPEG = "audio/x-mpeg";
+	private static final String AUDIO_X_WAV = "audio/x-wav";
+	private static final String IMAGE_GIF = "image/gif";
+	private static final String IMAGE_IEF = "image/ief";
+	private static final String IMAGE_JPEG = "image/jpeg";
+	private static final String IMAGE_PNG = "image/png";
+	private static final String IMAGE_TIFF = "image/tiff";
+	private static final String IMAGE_X_XWINDOWDUMP = "image/x-xwindowdump";
+	private static final String TEXT_HTML = "text/html";
+	private static final String TEXT_PLAIN = "text/plain";
+	private static final String TEXT_XML = "text/xml";
+	private static final String VIDEO_MEPG = "video/mpeg";
+	private static final String VIDEO_QUICKTIME = "video/quicktime";
+	private static final String VIDEO_X_MSVIDEO = "video/x-msvideo";
+
+	/**
+	 * @param fileEntryElement
+	 *            the OdfElement of the <manifest:file-entry>
+	 */
+	public OdfFileEntry(FileEntryElement fileEntryElement) {
+		mFileEntryElement = fileEntryElement;
+	}
+
+	public void setPath(String path) {
+		mFileEntryElement.setFullPathAttribute(path);
+	}
+
+	public String getPath() {
+		return mFileEntryElement.getFullPathAttribute();
+	}
+
+	/**
+	 * @param mediaType
+	 *            of the file. Use <code>null</code> or an empty string to unset
+	 *            the mediaType to an empty string.
+	 */
+	public void setMediaTypeString(String mediaType) {
+		if (mediaType != null) {
+			mFileEntryElement.setMediaTypeAttribute(mediaType);
+		} else {
+			mFileEntryElement.setMediaTypeAttribute(EMPTY_STRING);
+		}
+	}
+
+	/**
+	 * @return the mediatype of the mandatory &lt;manifest:file-entry&gt;
+	 *         attribute. If no mediatype exists an empty string is returned
+	 */
+	public String getMediaTypeString() {
+		return mFileEntryElement.getMediaTypeAttribute();
+	}
+
+	/**
+	 * 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) {
+		String mediaType = null;
+		try {
+			// use 'JavaBeans Activation Framework' if available (as library or
+			// as part of JDK 6)
+			Class<?> mimetypesClass = Class.forName("javax.activation.MimetypesFileTypeMap");
+			Method getContentTypeMethod = mimetypesClass.getMethod("getContentType", String.class);
+			mediaType = (String) getContentTypeMethod.invoke(getContentTypeMethod, fileRef);
+		} catch (Exception e) {
+			// otherwise (JDK 5 without library of 'JavaBeans Activation
+			// Framework')
+			// use local fallback implementation
+			// mLog.fine("Using own mediatype handling as 'JavaBeans Activation Framework' not found: "
+			// + e.getMessage());
+			mediaType = findMediaTypeString(fileRef);
+		}
+		return mediaType;
+	}
+
+	public void setSize(Integer size) {
+		if (size == null) {
+			mFileEntryElement.removeAttributeNS(SizeAttribute.ATTRIBUTE_NAME.getUri(),
+					SizeAttribute.ATTRIBUTE_NAME.getLocalName());
+		} else {
+			mFileEntryElement.setSizeAttribute(size);
+		}
+	}
+
+	/**
+	 * Get the size.
+	 */
+	public Integer getSize() {
+		return mFileEntryElement.getSizeAttribute();
+	}
+
+	public void setEncryptionData(EncryptionDataElement encryptionData) {
+		EncryptionDataElement encryptionDataEle = getEncryptionData();
+		if (encryptionData != null) {
+			if (encryptionDataEle != null) {
+				mFileEntryElement.replaceChild(encryptionData, encryptionDataEle);
+			} else {
+				mFileEntryElement.appendChild(encryptionData);
+			}
+		} else {
+			if (encryptionDataEle != null) {
+				mFileEntryElement.removeChild(encryptionDataEle);
+			}
+		}
+	}
+
+	/** @return null if no encryption data had been set */
+	public EncryptionDataElement getEncryptionData() {
+		return OdfElement.findFirstChildNode(EncryptionDataElement.class, mFileEntryElement);
+	}
+
+	/**
+	 * Gets the OdfElement of this OdfFileEntry.
+	 * 
+	 * @return the OdfElement of this OdfFileEntry.
+	 */
+	public FileEntryElement getOdfElement() {
+		return mFileEntryElement;
+	}
+
+	/**
+	 * Own mediatype functionality which can be removed as soon JDK 6 is base
+	 * line
+	 */
+	private static String findMediaTypeString(String fileRef) {
+		String fileSuffix = null;
+		String mediaType = null;
+
+		int suffixStart = fileRef.lastIndexOf(".");
+		// default mediatype, if no dot exists
+		if (suffixStart < 0) {
+			mediaType = DEFAULT_TYPE;
+		} else {
+			fileSuffix = fileRef.substring(suffixStart + 1);
+			// default mediattype, if the file ends with a dot, the suffix is
+			// empty
+			if (fileSuffix.length() == 0) {
+				mediaType = DEFAULT_TYPE;
+			} else {
+				if (MEDIA_TYPE_MAP == null) {
+					initializeMediaTypeMap();
+				}
+				mediaType = MEDIA_TYPE_MAP.get(fileSuffix.toLowerCase());
+				// default mediatype, if no mediatype for this suffix exists
+				if (mediaType == null) {
+					mediaType = DEFAULT_TYPE;
+				}
+			}
+		}
+		return mediaType;
+	}
+
+	// initializes Map for suffix to media type string mapping
+	private static void initializeMediaTypeMap() {
+		MEDIA_TYPE_MAP = new HashMap<String, String>(39);
+		MEDIA_TYPE_MAP.put("ai", APPLICATION_POSTSCRIPT);
+		MEDIA_TYPE_MAP.put("eps", APPLICATION_POSTSCRIPT);
+		MEDIA_TYPE_MAP.put("ps", APPLICATION_POSTSCRIPT);
+		MEDIA_TYPE_MAP.put("rtf", APPLICATION_RTF);
+		MEDIA_TYPE_MAP.put("tex", APPLICATION_X_TEX);
+		MEDIA_TYPE_MAP.put("texi", APPLICATION_X_TEXINFO);
+		MEDIA_TYPE_MAP.put("texinfo", APPLICATION_X_TEXINFO);
+		MEDIA_TYPE_MAP.put("t", APPLICATION_X_TROFF);
+		MEDIA_TYPE_MAP.put("tr", APPLICATION_X_TROFF);
+		MEDIA_TYPE_MAP.put("roff", APPLICATION_X_TROFF);
+		MEDIA_TYPE_MAP.put("au", AUDIO_BASIC);
+		MEDIA_TYPE_MAP.put("midi", AUDIO_MIDI);
+		MEDIA_TYPE_MAP.put("mid", AUDIO_MIDI);
+		MEDIA_TYPE_MAP.put("aifc", AUDIO_X_AIFC);
+		MEDIA_TYPE_MAP.put("aif", AUDIO_X_AIFF);
+		MEDIA_TYPE_MAP.put("aiff", AUDIO_X_AIFF);
+		MEDIA_TYPE_MAP.put("mpeg", AUDIO_X_MPEG);
+		MEDIA_TYPE_MAP.put("mpg", AUDIO_X_MPEG);
+		MEDIA_TYPE_MAP.put("wav", AUDIO_X_WAV);
+		MEDIA_TYPE_MAP.put("gif", IMAGE_GIF);
+		MEDIA_TYPE_MAP.put("ief", IMAGE_IEF);
+		MEDIA_TYPE_MAP.put("jpeg", IMAGE_JPEG);
+		MEDIA_TYPE_MAP.put("jpg", IMAGE_JPEG);
+		MEDIA_TYPE_MAP.put("jpe", IMAGE_JPEG);
+		MEDIA_TYPE_MAP.put("png", IMAGE_PNG);
+		MEDIA_TYPE_MAP.put("tiff", IMAGE_TIFF);
+		MEDIA_TYPE_MAP.put("tif", IMAGE_TIFF);
+		MEDIA_TYPE_MAP.put("xwd", IMAGE_X_XWINDOWDUMP);
+		MEDIA_TYPE_MAP.put("html", TEXT_HTML);
+		MEDIA_TYPE_MAP.put("htm", TEXT_HTML);
+		MEDIA_TYPE_MAP.put("xhtml", TEXT_HTML);
+		MEDIA_TYPE_MAP.put("txt", TEXT_PLAIN);
+		MEDIA_TYPE_MAP.put("text", TEXT_PLAIN);
+		MEDIA_TYPE_MAP.put("xml", TEXT_XML);
+		MEDIA_TYPE_MAP.put("mpeg", VIDEO_MEPG);
+		MEDIA_TYPE_MAP.put("mpg", VIDEO_MEPG);
+		MEDIA_TYPE_MAP.put("mpe", VIDEO_MEPG);
+		MEDIA_TYPE_MAP.put("qt", VIDEO_QUICKTIME);
+		MEDIA_TYPE_MAP.put("mov", VIDEO_QUICKTIME);
+		MEDIA_TYPE_MAP.put("avi", VIDEO_X_MSVIDEO);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfManifestDom.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfManifestDom.java
new file mode 100644
index 0000000..43d68d9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/OdfManifestDom.java
@@ -0,0 +1,104 @@
+/************************************************************************

+ *

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

+ *

+ * Use is subject to license terms.

+ *

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License. You may obtain a copy of the License at

+ *

+ * http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import javax.xml.xpath.XPath;

+import javax.xml.xpath.XPathFactory;

+

+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfPackage;

+

+/**

+ * The DOM representation of the ODF manifest.xml file of an ODF document.

+ * 

+ * @since 0.8.9

+ */

+public class OdfManifestDom extends OdfFileDom {

+	

+	private static final long serialVersionUID = 8149848234988627233L;

+	

+	/**

+	 * Creates the DOM representation of an XML file of an Odf document.

+	 * 

+	 * @param odfDocument

+	 *            the document the XML files belongs to

+	 * @param packagePath

+	 *            the internal package path to the XML file

+	 */

+	public OdfManifestDom(OdfSchemaDocument odfDocument, String packagePath) {

+		super(odfDocument, packagePath);

+	}

+	

+	/**

+	 * Creates the DOM representation of an XML file of an Odf document.

+	 * 

+	 * @param pkg

+	 *            the package the XML files belongs to

+	 * @param packagePath

+	 *            the internal package path to the XML file

+	 */

+	public OdfManifestDom(OdfPackage pkg, String packagePath) {

+		super(pkg, packagePath);

+	}

+	

+	/**

+	 * Might be used to initialize specific XML Namespace prefixes/URIs for this

+	 * XML file

+	 */

+	@Override

+	protected void initialize() {

+		mUriByPrefix.put("manifest", "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0");

+		mPrefixByUri.put("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest");

+		super.initialize();

+	}

+	

+	/**

+	 * @return The root element <manifest:manifest > of the manifest.xml file as

+	 *         <code>ManifestElement</code>.

+	 */

+	@Override

+	public ManifestElement getRootElement() {

+		return (ManifestElement) getDocumentElement();

+	}

+	

+	/**

+	 * Creates an JDK <code>XPath</code> instance. Initialized with ODF

+	 * namespaces from <code>OdfDocumentNamespace</code>. Updated with all

+	 * namespace of the XML file.

+	 * 

+	 * @return an XPath instance with namespace context set to include the

+	 *         standard ODFDOM prefixes.

+	 */

+	@Override

+	public XPath getXPath() {

+		if (mXPath == null) {

+			mXPath = XPathFactory.newInstance().newXPath();

+			mXPath.setNamespaceContext(this);

+			mUriByPrefix.put("manifest", "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0");

+			mPrefixByUri.put("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest");

+		}

+		return mXPath;

+	}

+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/PreferredViewModeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/PreferredViewModeAttribute.java
new file mode 100644
index 0000000..e6cb6af
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/PreferredViewModeAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:preferred-view-mode}.

+ *

+ */

+public class PreferredViewModeAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:preferred-view-mode");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:preferred-view-mode}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public PreferredViewModeAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:preferred-view-mode}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute manifest:preferred-view-mode}.

+	 */

+	public enum Value {

+		EDIT("edit"), PRESENTATION_SLIDE_SHOW("presentation-slide-show"), READ_ONLY("read-only") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:preferred-view-mode}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:preferred-view-mode} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/SaltAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/SaltAttribute.java
new file mode 100644
index 0000000..8dd6016
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/SaltAttribute.java
@@ -0,0 +1,129 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:salt}.

+ *

+ */

+public class SaltAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:salt");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:salt}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public SaltAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:salt}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of salt is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:salt}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:salt} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/SizeAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/SizeAttribute.java
new file mode 100644
index 0000000..529f033
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/SizeAttribute.java
@@ -0,0 +1,149 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:size}.

+ *

+ */

+public class SizeAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:size");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:size}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public SizeAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:size}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * @param value The <code>int</code> value of the attribute.

+	 */

+	public void setIntValue(int value) {

+		super.setValue(String.valueOf(value));

+	}

+

+	/**

+	 * @return Returns the <code>int</code> value of the attribute

+	 */

+	public int intValue() {

+		String val = super.getValue();

+		try {

+			return Integer.parseInt(val);

+		} catch (NumberFormatException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		try {

+			super.setValue(attrValue);

+		} catch (NullPointerException e) {

+			// TODO: validation handling/logging

+			throw new IllegalArgumentException(e);

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw (e);

+		}

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		try {

+			return super.getValue();

+		} catch (IllegalArgumentException e) {

+			// TODO: validation handling/logging

+			throw new NumberFormatException("the value of size is not valid");

+		}

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:size}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:size} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/StartKeyGenerationElement.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/StartKeyGenerationElement.java
new file mode 100644
index 0000000..5f37287
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/StartKeyGenerationElement.java
@@ -0,0 +1,110 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+/**

+ * Manifest implementation of OpenDocument element  {@odf.element manifest:start-key-generation}.

+ *

+ */

+public class StartKeyGenerationElement extends OdfElement {

+

+	public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:start-key-generation");

+

+	/**

+	 * Create the instance of <code>StartKeyGenerationElement</code>

+	 *

+	 * @param  ownerDoc  The type is <code>OdfFileDom</code>

+	 */

+	public StartKeyGenerationElement(OdfFileDom ownerDoc) {

+		super(ownerDoc, ELEMENT_NAME);

+	}

+

+	/**

+	 * Get the element name

+	 *

+	 * @return  return   <code>OdfName</code> the name of element {@odf.element manifest:start-key-generation}.

+	 */

+	public OdfName getOdfName() {

+		return ELEMENT_NAME;

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>KeySizeAttribute</code> , See {@odf.attribute manifest:key-size}

+	 *

+	 * @return - the <code>Integer</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public Integer getKeySizeAttribute() {

+		KeySizeAttribute attr = (KeySizeAttribute) getOdfAttribute(KeySizeAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return Integer.valueOf(attr.intValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>KeySizeAttribute</code> , See {@odf.attribute manifest:key-size}

+	 *

+	 * @param keySizeValue   The type is <code>Integer</code>

+	 */

+	public void setKeySizeAttribute(Integer keySizeValue) {

+		KeySizeAttribute attr = new KeySizeAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setIntValue(keySizeValue.intValue());

+	}

+

+	/**

+	 * Receives the value of the ODFDOM attribute representation <code>StartKeyGenerationNameAttribute</code> , See {@odf.attribute manifest:start-key-generation-name}

+	 *

+	 * Attribute is mandatory.

+	 *

+	 * @return - the <code>String</code> , the value or <code>null</code>, if the attribute is not set and no default value defined.

+	 */

+	public String getStartKeyGenerationNameAttribute() {

+		StartKeyGenerationNameAttribute attr = (StartKeyGenerationNameAttribute) getOdfAttribute(StartKeyGenerationNameAttribute.ATTRIBUTE_NAME);

+		if (attr != null) {

+			return String.valueOf(attr.getValue());

+		}

+		return null;

+	}

+

+	/**

+	 * Sets the value of ODFDOM attribute representation <code>StartKeyGenerationNameAttribute</code> , See {@odf.attribute manifest:start-key-generation-name}

+	 *

+	 * @param startKeyGenerationNameValue   The type is <code>String</code>

+	 */

+	public void setStartKeyGenerationNameAttribute(String startKeyGenerationNameValue) {

+		StartKeyGenerationNameAttribute attr = new StartKeyGenerationNameAttribute((OdfFileDom) this.ownerDocument);

+		setOdfAttribute(attr);

+		attr.setValue(startKeyGenerationNameValue);

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/StartKeyGenerationNameAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/StartKeyGenerationNameAttribute.java
new file mode 100644
index 0000000..4d4687c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/StartKeyGenerationNameAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:start-key-generation-name}.

+ *

+ */

+public class StartKeyGenerationNameAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:start-key-generation-name");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:start-key-generation-name}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public StartKeyGenerationNameAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:start-key-generation-name}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute manifest:start-key-generation-name}.

+	 */

+	public enum Value {

+		SHA1("SHA1") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:start-key-generation-name}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:start-key-generation-name} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/VersionAttribute.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/VersionAttribute.java
new file mode 100644
index 0000000..c14edde
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/manifest/VersionAttribute.java
@@ -0,0 +1,159 @@
+/************************************************************************

+ *

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

+ * 

+ * Use is subject to license terms.

+ * 

+ * 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 regarding copyright ownership.

+ * The ASF licenses this file to You under the Apache License, Version 2.0

+ * (the "License"); you may not use this file except in compliance with

+ * the License.  You may obtain a copy of the License at

+ *

+ *     http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ *

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ *

+ ************************************************************************/

+

+/*

+ * This file is automatically generated.

+ * Don't edit manually.

+ */

+package org.odftoolkit.odfdom.pkg.manifest;

+

+import org.odftoolkit.odfdom.pkg.OdfAttribute;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+

+/**

+ * Manifest implementation of OpenDocument attribute  {@odf.attribute manifest:version}.

+ *

+ */

+public class VersionAttribute extends OdfAttribute {

+

+	public static final OdfName ATTRIBUTE_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:version");

+

+	/**

+	 * Create the instance of OpenDocument attribute {@odf.attribute manifest:version}.

+	 *

+	 * @param ownerDocument       The type is <code>OdfFileDom</code>

+	 */

+	public VersionAttribute(OdfFileDom ownerDocument) {

+		super(ownerDocument, ATTRIBUTE_NAME);

+	}

+

+	/**

+	 * Returns the attribute name.

+	 *

+	 * @return the <code>OdfName</code> for {@odf.attribute manifest:version}.

+	 */

+	@Override

+	public OdfName getOdfName() {

+		return ATTRIBUTE_NAME;

+	}

+

+	/**

+	 * @return Returns the name of this attribute.

+	 */

+	@Override

+	public String getName() {

+		return ATTRIBUTE_NAME.getLocalName();

+	}

+

+	/**

+	 * The value set of {@odf.attribute manifest:version}.

+	 */

+	public enum Value {

+		_1_2("1.2") ;

+

+		private String mValue;

+

+		Value(String value) {

+			mValue = value;

+		}

+

+		@Override

+		public String toString() {

+			return mValue;

+		}

+

+		public static Value enumValueOf(String value) {

+			for(Value aIter : values()) {

+				if (value.equals(aIter.toString())) {

+				return aIter;

+				}

+			}

+			return null;

+		}

+	}

+

+	/**

+	 * @param attrValue The <code>Enum</code> value of the attribute.

+	 */

+	public void setEnumValue(Value attrValue) {

+		setValue(attrValue.toString());

+	}

+

+	/**

+	 * @return Returns the <code>Enum</code> value of the attribute

+	 */

+	public Value getEnumValue() {

+		return Value.enumValueOf(this.getValue());

+	}

+

+	/**

+	 * @param attrValue The <code>String</code> value of the attribute.

+	 * @throws IllegalArgumentException If the provided attribute value is invalid

+	 */

+	@Override

+	public void setValue(String attrValue) {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		super.setValue(attrValue);

+	}

+

+	/**

+	 * @return Returns the <code>String</code> value of the attribute

+	 */

+	@Override

+	public String getValue() {

+		// Since we have not only enumValues, but also a DataType, we use String as common base and don't validate.

+		return super.getValue();

+	}

+

+	/**

+	 * Returns the default value of {@odf.attribute manifest:version}.

+	 *

+	 * @return the default value as <code>String</code> dependent of its element name

+	 *         return <code>null</code> if the default value does not exist

+	 */

+	@Override

+	public String getDefault() {

+		return null;

+	}

+

+	/**

+	 * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists.

+	 *

+	 * @return <code>true</code> if {@odf.attribute manifest:version} has an element parent

+	 *         otherwise return <code>false</code> as undefined.

+	 */

+	@Override

+	public boolean hasDefault() {

+		return false;

+	}

+

+	/**

+	 * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?)

+	 */

+	@Override

+	public boolean isId() {

+		return false;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/DOMAttributes.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/DOMAttributes.java
new file mode 100644
index 0000000..70c2d70
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/DOMAttributes.java
@@ -0,0 +1,92 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import org.w3c.dom.NamedNodeMap;

+import org.xml.sax.Attributes;

+

+/**

+ * Simple wrapper class for NamedNodeMap as Attributes

+ */

+public class DOMAttributes implements Attributes{

+	

+	private NamedNodeMap attributes;

+

+	/**

+	 * Class constructor

+	 * 

+	 * @param attributes

+	 */

+	public DOMAttributes(NamedNodeMap attributes) {

+		this.attributes = attributes;

+	}

+	

+

+	public int getLength() {

+		return attributes.getLength();

+	}

+

+	public String getURI(int index) {

+		return attributes.item(index).getNamespaceURI();

+	}

+

+	public String getLocalName(int index) {

+		return attributes.item(index).getLocalName();

+	}

+

+	public String getQName(int index) {

+		return attributes.item(index).getNodeName();

+	}

+

+	public String getType(int index) {

+		throw new RuntimeException("DOMAttributes.getType() is not supported");

+	}

+

+	public String getValue(int index) {

+		return attributes.item(index).getNodeValue();

+	}

+

+	public int getIndex(String uri, String localName) {

+		throw new RuntimeException("DOMAttributes.getIndex(String uri, String localName) is not supported");

+	}

+

+	public int getIndex(String qName) {

+		throw new RuntimeException("DOMAttributes.getIndex(String qName) is not supported");

+	}

+

+	public String getType(String uri, String localName) {

+		throw new RuntimeException("DOMAttributes.getType(String uri, String localName) is not supported");

+	}

+

+	public String getType(String qName) {

+		throw new RuntimeException("DOMAttributes.getType(String qName) is not supported");

+	}

+

+	public String getValue(String uri, String localName) {

+		throw new RuntimeException("DOMAttributes.getValue(String uri, String localName) is not supported");

+	}

+

+	public String getValue(String qName) {

+		throw new RuntimeException("DOMAttributes.getValue(String qName) is not supported");

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/DOMRDFaParser.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/DOMRDFaParser.java
new file mode 100644
index 0000000..889a3d5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/DOMRDFaParser.java
@@ -0,0 +1,92 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import javax.xml.stream.XMLEventFactory;

+import javax.xml.stream.XMLOutputFactory;

+

+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkStartElement;

+import org.w3c.dom.Node;

+

+/**

+ * A RDFa parser for DOM

+ * 

+ */

+public class DOMRDFaParser extends RDFaParser {

+

+	public static DOMRDFaParser createInstance(JenaSink sink) {

+		sink.getExtractor().setForSAX(false);

+		return new DOMRDFaParser(sink, XMLOutputFactory.newInstance(),

+				XMLEventFactory.newInstance(), sink.getExtractor());

+	}

+

+	public DOMRDFaParser(JenaSink sink, XMLOutputFactory outputFactory,

+			XMLEventFactory eventFactory, URIExtractor extractor) {

+		super(sink, outputFactory, eventFactory, extractor);

+

+	}

+

+	/**

+	 * Parse the RDFa in-content metadata of the node.

+	 * 

+	 * @param node

+	 */

+	public void parse(Node node) {

+		process(node);

+	}

+

+	private void process(Node node) {

+

+		switch (node.getNodeType()) {

+		case Node.ELEMENT_NODE:

+			if (!(node instanceof TextBookmarkStartElement)) {

+				sink.setContextNode(node);

+			}

+			// Start element

+			beginRDFaElement(node.getNamespaceURI(), node.getLocalName(),

+					node.getNodeName(), new DOMAttributes(node.getAttributes()));

+			// Recurse to child

+//			if (node.hasChildNodes() == true) {

+//				process(node.getFirstChild());

+//			}

+			if (node.hasChildNodes() == true) {

+				Node n = node.getFirstChild();

+				process(n);

+				while (n.getNextSibling()!=null){

+					process(n.getNextSibling());

+					n= n.getNextSibling();

+				}

+			}

+

+			// End element

+			endRDFaElement(node.getNamespaceURI(), node.getLocalName(),

+					node.getNodeName());

+			break;

+		case Node.CDATA_SECTION_NODE:

+		case Node.TEXT_NODE:

+			// Text or CDATA

+			writeCharacters(node.getNodeValue());

+			break;

+		}

+

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/EvalContext.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/EvalContext.java
new file mode 100644
index 0000000..f8b13f8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/EvalContext.java
@@ -0,0 +1,198 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+import javax.xml.namespace.NamespaceContext;

+

+/**

+ * EvalContext modified from net.rootdev.javardfa.EvalContext

+ */

+final class EvalContext implements NamespaceContext {

+

+    EvalContext parent;

+    String base;

+    String parentSubject;

+    String parentObject;

+    String language;

+    String vocab;

+    List<String> forwardProperties;

+    List<String> backwardProperties;

+    Map<String, String> xmlnsMap = Collections.EMPTY_MAP;

+    Map<String, String> prefixMap = Collections.EMPTY_MAP;

+

+    protected EvalContext(String base) {

+        super();

+        this.base = base;

+        this.parentSubject = base;

+        this.forwardProperties = new LinkedList<String>();

+        this.backwardProperties = new LinkedList<String>();

+    }

+

+    public EvalContext(EvalContext toCopy) {

+        super();

+        this.base = toCopy.base;

+        this.parentSubject = toCopy.parentSubject;

+        this.parentObject = toCopy.parentObject;

+        this.language = toCopy.language;

+        this.forwardProperties = new LinkedList<String>(toCopy.forwardProperties);

+        this.backwardProperties = new LinkedList<String>(toCopy.backwardProperties);

+        this.parent = toCopy;

+        this.vocab = toCopy.vocab;

+    }

+

+    public void setBase(String abase) {

+        // This is very dodgy. We want to check if ps and po have been changed

+        // from their typical values (base).

+        // Base changing happens very late in the day when we're streaming, and

+        // it is very fiddly to handle

+        boolean setPS = parentSubject == base;

+        boolean setPO = parentObject == base;

+

+        if (abase.contains("#")) {

+            this.base = abase.substring(0, abase.indexOf("#"));

+        } else {

+            this.base = abase;

+        }

+

+        if (setPS) this.parentSubject = base;

+        if (setPO) this.parentObject = base;

+        

+        if (parent != null) {

+            parent.setBase(base);

+        }

+    }

+

+    @Override

+    public String toString() {

+        return

+            String.format("[\n\tBase: %s\n\tPS: %s\n\tPO: %s\n\tlang: %s\n\tIncomplete: -> %s <- %s\n]",

+                base, parentSubject, parentObject, language,

+                forwardProperties.size(), backwardProperties.size()

+                );

+    }

+

+    /**

+     * RDFa 1.1 prefix support

+     * @param prefix Prefix

+     * @param uri URI

+     */

+    public void setPrefix(String prefix, String uri) {

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

+            uri = base;

+        }

+        if (prefixMap == Collections.EMPTY_MAP) prefixMap = new HashMap<String, String>();

+        prefixMap.put(prefix, uri);

+    }

+

+    /**

+     * RDFa 1.1 prefix support.

+     * @param prefix

+     * @return

+     */

+    public String getURIForPrefix(String prefix) {

+        if (prefixMap.containsKey(prefix)) {

+            return prefixMap.get(prefix);

+        } else if (xmlnsMap.containsKey(prefix)) {

+            return xmlnsMap.get(prefix);

+        } else if (parent != null) {

+            return parent.getURIForPrefix(prefix);

+        } else {

+            return null;

+        }

+    }

+

+    // Namespace methods

+    public void setNamespaceURI(String prefix, String uri) {

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

+            uri = base;

+        }

+        if (xmlnsMap == Collections.EMPTY_MAP) xmlnsMap = new HashMap<String, String>();

+        xmlnsMap.put(prefix, uri);

+    }

+

+    public String getNamespaceURI(String prefix) {

+        if (xmlnsMap.containsKey(prefix)) {

+            return xmlnsMap.get(prefix);

+        } else if (parent != null) {

+            return parent.getNamespaceURI(prefix);

+        } else {

+            return null;

+        }

+    }

+

+    public String getPrefix(String uri) {

+        throw new UnsupportedOperationException("Not supported yet.");

+    }

+

+    public Iterator getPrefixes(String uri) {

+        throw new UnsupportedOperationException("Not supported yet.");

+    }

+    

+    // I'm not sure about this 1.1 term business. Reuse prefix map

+    public void setTerm(String term, String uri) {

+       setPrefix(term + ":", uri);

+    }

+

+    public String getURIForTerm(String term) {

+        return getURIForPrefix(term + ":");

+    }

+

+    public String getBase() {

+        return base;

+    }

+

+    public String getVocab() {

+        return vocab;

+    }

+}

+

+/*

+ * (c) Copyright 2009 University of Bristol All rights reserved.

+ * 

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions are met:

+ * 1. Redistributions of source code must retain the above copyright notice,

+ * this list of conditions and the following disclaimer. 2. Redistributions in

+ * binary form must reproduce the above copyright notice, this list of

+ * conditions and the following disclaimer in the documentation and/or other

+ * materials provided with the distribution. 3. The name of the author may not

+ * be used to endorse or promote products derived from this software without

+ * specific prior written permission.

+ * 

+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED

+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO

+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;

+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF

+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ */

+

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/JenaSink.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/JenaSink.java
new file mode 100644
index 0000000..6092cee
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/JenaSink.java
@@ -0,0 +1,165 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.Map;

+

+import net.rootdev.javardfa.StatementSink;

+

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfFileSaxHandler;

+import org.w3c.dom.Node;

+

+import com.hp.hpl.jena.rdf.model.Literal;

+import com.hp.hpl.jena.rdf.model.Model;

+import com.hp.hpl.jena.rdf.model.ModelFactory;

+import com.hp.hpl.jena.rdf.model.Property;

+import com.hp.hpl.jena.rdf.model.Resource;

+import com.hp.hpl.jena.shared.PrefixMapping.IllegalPrefixException;

+

+/**

+ * To cache the Jena RDF triples parsed from RDFaParser

+ *

+ */

+public class JenaSink implements StatementSink {

+

+//	private OdfFileSaxHandler odf;

+	private Node contextNode;

+	private OdfFileDom mFileDom;

+    private Map<String, Resource> bnodeLookup;

+    private URIExtractor extractor;

+    private EvalContext context;

+

+    public JenaSink(OdfFileDom mFileDom) {

+		this.mFileDom = mFileDom;

+		this.bnodeLookup = new HashMap<String, Resource>();

+    }

+

+    //@Override

+    public void start() {

+        bnodeLookup = new HashMap<String, Resource>();

+    }

+

+    //@Override

+    public void end() {

+        bnodeLookup = null;

+    }

+

+    //@Override

+    public void addObject(String subject, String predicate, String object) {

+    	Model model =getContextModel();

+        Resource s = getResource(model, subject.trim());

+        Property p = model.createProperty(predicate.trim());

+        Resource o = getResource(model, object.trim());

+        model.add(s, p, o);

+    }

+

+    //@Override

+    public void addLiteral(String subject, String predicate, String lex, String lang, String datatype) {

+    	if (lex.isEmpty()){

+    		return;

+    	}

+    	Model model =getContextModel();

+    	Resource s = getResource(model, subject.trim());

+        Property p = model.createProperty(predicate.trim());

+        Literal o;

+        if (lang == null && datatype == null) {

+            o = model.createLiteral(lex.trim());

+        } else if (lang != null) {

+            o = model.createLiteral(lex.trim(), lang.trim());

+        } else {

+            o = model.createTypedLiteral(lex.trim(), datatype.trim());

+        }

+        model.add(s, p, o);

+    }

+

+    private Resource getResource(Model model, String res) {

+        if (res.startsWith("_:")) {

+            if (bnodeLookup.containsKey(res)) {

+                return bnodeLookup.get(res);

+            }

+            Resource bnode = model.createResource();

+            bnodeLookup.put(res, bnode);

+            return bnode;

+        } else {

+            return model.createResource(res);

+        }

+    }

+

+    public void addPrefix(String prefix, String uri) {

+//    	Model model =getContextModel();

+//        try {

+//            model.setNsPrefix(prefix.trim(), uri.trim());

+//        } catch (IllegalPrefixException e) {

+//        }

+    }

+

+    public void setBase(String base) {}

+    

+	private Model getContextModel() {

+		Map<Node, Model> cache = this.mFileDom.getInContentMetadataCache();

+		Model model = cache.get(contextNode);

+		if (model == null) {

+			model = ModelFactory.createDefaultModel();

+			this.mFileDom.getInContentMetadataCache().put(

+					contextNode, model);

+		}

+		return model;

+	}

+

+	public Node getContextNode() {

+		return contextNode;

+	}

+

+	public void setContextNode(Node contextNode) {

+		this.contextNode = contextNode;

+	}

+

+	public URIExtractor getExtractor() {

+		return extractor;

+	}

+

+	public void setExtractor(URIExtractor extractor) {

+		this.extractor = extractor;

+	}

+

+	public EvalContext getContext() {

+		return context;

+	}

+

+	public void setContext(EvalContext context) {

+		this.context = context;

+	}

+		

+	

+//    // Namespace methods

+//    public void setNamespaceURI(String prefix, String uri) {

+//        if (uri.length() == 0) {

+//            uri = base;

+//        }

+//        if (xmlnsMap == Collections.EMPTY_MAP) xmlnsMap = new HashMap<String, String>();

+//        xmlnsMap.put(prefix, uri);

+//    }

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/MultiContentHandler.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/MultiContentHandler.java
new file mode 100644
index 0000000..186f0de
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/MultiContentHandler.java
@@ -0,0 +1,124 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.ArrayList;

+

+import org.xml.sax.Attributes;

+import org.xml.sax.ContentHandler;

+import org.xml.sax.Locator;

+import org.xml.sax.SAXException;

+

+/**

+ * A proxy for delegating the parsing events to its sub ContentHandler(s).

+ */

+public class MultiContentHandler implements ContentHandler {

+	ArrayList<ContentHandler> subContentHandlers;

+

+	public MultiContentHandler(ContentHandler... subs ) {

+		subContentHandlers = new ArrayList<ContentHandler>();

+		for(ContentHandler sub : subs){

+			subContentHandlers.add(sub);

+		}

+	}

+

+	public void setDocumentLocator(Locator locator) {

+		for(ContentHandler sub: subContentHandlers){

+			sub.setDocumentLocator(locator);

+		}

+

+	}

+

+	public void startDocument() throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.startDocument();

+		}

+

+	}

+

+	public void endDocument() throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.endDocument();

+		}

+

+	}

+

+	public void startPrefixMapping(String prefix, String uri)

+			throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.startPrefixMapping(prefix, uri);

+		}

+

+	}

+

+	public void endPrefixMapping(String prefix) throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.endPrefixMapping(prefix);

+		}

+

+	}

+

+	public void startElement(String uri, String localName, String qName,

+			Attributes atts) throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.startElement(uri, localName, qName, atts);

+		}

+	}

+

+	public void endElement(String uri, String localName, String qName)

+			throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.endElement(uri, localName, qName);

+		}

+

+	}

+

+	public void characters(char[] ch, int start, int length)

+			throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.characters(ch, start, length);

+		}

+

+	}

+

+	public void ignorableWhitespace(char[] ch, int start, int length)

+			throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.ignorableWhitespace(ch, start, length);

+		}

+

+	}

+

+	public void processingInstruction(String target, String data)

+			throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.processingInstruction(target, data);

+		}

+	}

+

+	public void skippedEntity(String name) throws SAXException {

+		for(ContentHandler sub: subContentHandlers){

+			sub.skippedEntity(name);

+		}

+	}

+

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/RDFaParser.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/RDFaParser.java
new file mode 100644
index 0000000..d280a1a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/RDFaParser.java
@@ -0,0 +1,443 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.EnumSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLEventFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.events.Attribute;

+import javax.xml.stream.events.StartElement;

+import javax.xml.stream.events.XMLEvent;

+

+import net.rootdev.javardfa.Constants;

+import net.rootdev.javardfa.Setting;

+import net.rootdev.javardfa.literal.LiteralCollector;

+

+import org.xml.sax.Attributes;

+import org.xml.sax.Locator;

+

+/**

+ * A RDFa Parser modified from net.rootdev.javardfa.Parser

+ *

+ */

+class RDFaParser extends net.rootdev.javardfa.Parser {

+	

+	boolean ignore = false;

+

+	protected XMLEventFactory eventFactory;

+	protected JenaSink sink;

+	protected Set<Setting> settings;

+	protected LiteralCollector literalCollector;

+	protected URIExtractor extractor;

+	protected Locator locator;

+	protected EvalContext context;

+

+	protected RDFaParser(JenaSink sink, XMLOutputFactory outputFactory,

+			XMLEventFactory eventFactory, URIExtractor extractor) {

+		super(sink);

+		this.sink = sink;

+		this.eventFactory = eventFactory;

+		this.settings = EnumSet.noneOf(Setting.class);

+		this.extractor = extractor;

+

+		this.literalCollector = new LiteralCollector(this, eventFactory,

+				outputFactory);

+

+		extractor.setSettings(settings);

+

+		// Important, although I guess the caller doesn't get total control

+		outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES,

+				true);

+	}

+

+	protected void beginRDFaElement(String arg0, String localname,

+			String qname, Attributes arg3) {

+		if (localname.equals("bookmark-start")) {

+			ignore = true;

+			return;

+		}

+		try {

+			// System.err.println("Start element: " + arg0 + " " + arg1 + " " +

+			// arg2);

+

+			// This is set very late in some html5 cases (not even ready by

+			// document start)

+			if (context == null) {

+				this.setBase(locator.getSystemId());

+			}

+

+			// Dammit, not quite the same as XMLEventFactory

+			String prefix = /* (localname.equals(qname)) */

+			(qname.indexOf(':') == -1) ? "" : qname.substring(0,

+					qname.indexOf(':'));

+			if (settings.contains(Setting.ManualNamespaces)) {

+				getNamespaces(arg3);

+				if (prefix.length() != 0) {

+					arg0 = context.getNamespaceURI(prefix);

+					localname = localname.substring(prefix.length() + 1);

+				}

+			}

+			StartElement e = eventFactory.createStartElement(prefix, arg0,

+					localname, fromAttributes(arg3), null, context);

+

+			if (literalCollector.isCollecting())

+				literalCollector.handleEvent(e);

+

+			// If we are gathering XML we stop parsing

+			if (!literalCollector.isCollectingXML())

+				context = parse(context, e);

+		} catch (XMLStreamException ex) {

+			throw new RuntimeException("Streaming issue", ex);

+		}

+	}

+	

+	protected void endRDFaElement(String arg0, String localname, String qname) {

+		if (localname.equals("bookmark-start")) {

+			ignore = false;

+			return;

+		}

+		if (literalCollector.isCollecting()) {

+			String prefix = (localname.equals(qname)) ? "" : qname.substring(0,

+					qname.indexOf(':'));

+			XMLEvent e = eventFactory.createEndElement(prefix, arg0, localname);

+			literalCollector.handleEvent(e);

+		}

+		// If we aren't collecting an XML literal keep parsing

+		if (!literalCollector.isCollectingXML())

+			context = context.parent;

+	}

+	

+	protected void writeCharacters(String value) {

+		if (!ignore) {

+			if (literalCollector.isCollecting()) {

+				XMLEvent e = eventFactory.createCharacters(value);

+				literalCollector.handleEvent(e);

+			}

+		}

+	}

+	

+	/** 

+	 * Set the base uri of the DOM.

+	 */

+	public void setBase(String base) {	

+		this.context = new EvalContext(base);

+		sink.setBase(context.getBase());

+	}

+

+	protected EvalContext parse(EvalContext context, StartElement element)

+			throws XMLStreamException {

+		boolean skipElement = false;

+		String newSubject = null;

+		String currentObject = null;

+		List<String> forwardProperties = new LinkedList();

+		List<String> backwardProperties = new LinkedList();

+		String currentLanguage = context.language;

+

+		if (settings.contains(Setting.OnePointOne)) {

+

+			if (getAttributeByName(element, Constants.vocab) != null) {

+				context.vocab = getAttributeByName(element, Constants.vocab)

+						.getValue().trim();

+			}

+

+			if (getAttributeByName(element, Constants.prefix) != null) {

+				parsePrefixes(getAttributeByName(element, Constants.prefix)

+						.getValue(), context);

+			}

+		}

+

+		// The xml / html namespace matching is a bit ropey. I wonder if the

+		// html 5

+		// parser has a setting for this?

+		if (settings.contains(Setting.ManualNamespaces)) {

+			if (getAttributeByName(element, Constants.xmllang) != null) {

+				currentLanguage = getAttributeByName(element, Constants.xmllang)

+						.getValue();

+				if (currentLanguage.length() == 0)

+					currentLanguage = null;

+			} else if (getAttributeByName(element, Constants.lang) != null) {

+				currentLanguage = getAttributeByName(element, Constants.lang)

+						.getValue();

+				if (currentLanguage.length() == 0)

+					currentLanguage = null;

+			}

+		} else if (getAttributeByName(element, Constants.xmllangNS) != null) {

+			currentLanguage = getAttributeByName(element, Constants.xmllangNS)

+					.getValue();

+			if (currentLanguage.length() == 0)

+				currentLanguage = null;

+		}

+

+		if (Constants.base.equals(element.getName())

+				&& getAttributeByName(element, Constants.href) != null) {

+			context.setBase(getAttributeByName(element, Constants.href)

+					.getValue());

+			sink.setBase(context.getBase());

+		}

+		if (getAttributeByName(element, Constants.rev) == null

+				&& getAttributeByName(element, Constants.rel) == null) {

+			Attribute nSubj = findAttribute(element, Constants.about);	

+			if (nSubj != null) {

+				newSubject = extractor.getURI(element, nSubj, context);

+			}

+			if (newSubject == null) {

+				if (Constants.body.equals(element.getName())

+						|| Constants.head.equals(element.getName())) {

+					newSubject = context.base;

+				} else if (getAttributeByName(element, Constants.typeof) != null) {

+					newSubject = createBNode();

+				} else {

+					if (context.parentObject != null) {

+						newSubject = context.parentObject;

+					}

+					if (getAttributeByName(element, Constants.property) == null) {

+						skipElement = true;

+					}

+				}

+			}

+		} else {

+			Attribute nSubj = findAttribute(element, Constants.about,

+					Constants.src);

+			if (nSubj != null) {

+				newSubject = extractor.getURI(element, nSubj, context);

+			}

+			if (newSubject == null) {

+				// if element is head or body assume about=""

+				if (Constants.head.equals(element.getName())

+						|| Constants.body.equals(element.getName())) {

+					newSubject = context.base;

+				} else if (getAttributeByName(element, Constants.typeof) != null) {

+					newSubject = createBNode();

+				} else if (context.parentObject != null) {

+					newSubject = context.parentObject;

+				}

+			}

+			Attribute cObj = findAttribute(element, Constants.resource,

+					Constants.href);

+			if (cObj != null) {

+				currentObject = extractor.getURI(element, cObj, context);

+			}

+		}

+

+		if (newSubject != null

+				&& getAttributeByName(element, Constants.typeof) != null) {

+			List<String> types = extractor.getURIs(element,

+					getAttributeByName(element, Constants.typeof), context);

+			for (String type : types) {

+				emitTriples(newSubject, Constants.rdfType, type);

+			}

+		}

+

+

+		if (currentObject != null) {

+			if (getAttributeByName(element, Constants.rel) != null) {

+				emitTriples(newSubject, extractor.getURIs(element,

+						getAttributeByName(element, Constants.rel), context),

+						currentObject);

+			}

+			if (getAttributeByName(element, Constants.rev) != null) {

+				emitTriples(currentObject, extractor.getURIs(element,

+						getAttributeByName(element, Constants.rev), context),

+						newSubject);

+			}

+		} else {

+			if (getAttributeByName(element, Constants.rel) != null) {

+				forwardProperties.addAll(extractor.getURIs(element,

+						getAttributeByName(element, Constants.rel), context));

+			}

+			if (getAttributeByName(element, Constants.rev) != null) {

+				backwardProperties.addAll(extractor.getURIs(element,

+						getAttributeByName(element, Constants.rev), context));

+			}

+			if (!forwardProperties.isEmpty() || !backwardProperties.isEmpty()) {

+				// if predicate present

+				currentObject = createBNode();

+			}

+		}

+

+		// Getting literal values. Complicated!

+		if (getAttributeByName(element, Constants.property) != null) {

+			List<String> props = extractor.getURIs(element,

+					getAttributeByName(element, Constants.property), context);

+			String dt = getDatatype(element);

+			if (getAttributeByName(element, Constants.content) != null) { // The

+																			// easy

+																			// bit

+				String lex = getAttributeByName(element, Constants.content)

+						.getValue();

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

+					emitTriplesPlainLiteral(newSubject, props, lex,

+							currentLanguage);

+				} else {

+					emitTriplesDatatypeLiteral(newSubject, props, lex, dt);

+				}

+			} else {

+				literalCollector

+						.collect(newSubject, props, dt, currentLanguage);

+			}

+		}

+

+		if (!skipElement && newSubject != null) {

+			emitTriples(context.parentSubject, context.forwardProperties,

+					newSubject);

+

+			emitTriples(newSubject, context.backwardProperties,

+					context.parentSubject);

+		}

+

+		EvalContext ec = new EvalContext(context);

+		if (skipElement) {

+			ec.language = currentLanguage;

+		} else {

+			if (newSubject != null) {

+				ec.parentSubject = newSubject;

+			} else {

+				ec.parentSubject = context.parentSubject;

+			}

+

+			if (currentObject != null) {

+				ec.parentObject = currentObject;

+			} else if (newSubject != null) {

+				ec.parentObject = newSubject;

+			} else {

+				ec.parentObject = context.parentSubject;

+			}

+

+			ec.language = currentLanguage;

+			ec.forwardProperties = forwardProperties;

+			ec.backwardProperties = backwardProperties;

+		}

+		return ec;

+	}

+

+	private void getNamespaces(Attributes attrs) {

+		for (int i = 0; i < attrs.getLength(); i++) {

+			String qname = attrs.getQName(i);

+			String prefix = getPrefix(qname);

+			if ("xmlns".equals(prefix)) {

+				String pre = getLocal(prefix, qname);

+				String uri = attrs.getValue(i);

+				if (!settings.contains(Setting.ManualNamespaces)

+						&& pre.contains("_"))

+					continue; // not permitted

+				context.setNamespaceURI(pre, uri);

+				extractor.setNamespaceURI(pre, uri);

+				sink.addPrefix(pre, uri);

+			}

+		}

+	}

+

+	private String getPrefix(String qname) {

+		if (!qname.contains(":")) {

+			return "";

+		}

+		return qname.substring(0, qname.indexOf(":"));

+	}

+

+	private String getLocal(String prefix, String qname) {

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

+			return qname;

+		}

+		return qname.substring(prefix.length() + 1);

+	}

+

+	private Iterator fromAttributes(Attributes attributes) {

+		List toReturn = new LinkedList();

+

+		for (int i = 0; i < attributes.getLength(); i++) {

+			String qname = attributes.getQName(i);

+			String prefix = qname.contains(":") ? qname.substring(0,

+					qname.indexOf(":")) : "";

+			Attribute attr = eventFactory.createAttribute(prefix,

+					attributes.getURI(i), attributes.getLocalName(i),

+					attributes.getValue(i));

+

+			if (!qname.equals("xmlns") && !qname.startsWith("xmlns:"))

+				toReturn.add(attr);

+		}

+

+		return toReturn.iterator();

+	}

+

+	private Attribute findAttribute(StartElement element, QName... names) {

+		for (QName aName : names) {

+			Attribute a = getAttributeByName(element, aName);

+			if (a != null) {

+				return a;

+			}

+		}

+		return null;

+	}

+

+	private void parsePrefixes(String value, EvalContext context) {

+		String[] parts = value.split("\\s+");

+		for (int i = 0; i < parts.length; i += 2) {

+			String prefix = parts[i];

+			if (i + 1 < parts.length && prefix.endsWith(":")) {

+				String prefixFix = prefix.substring(0, prefix.length() - 1);

+				context.setPrefix(prefixFix, parts[i + 1]);

+				sink.addPrefix(prefixFix, parts[i + 1]);

+			}

+		}

+	}

+

+	private Attribute getAttributeByName(StartElement element, QName name) {

+		if (name == null || element == null) {

+			return null;

+		}

+		Iterator it = element.getAttributes();

+		while (it.hasNext()) {

+			Attribute at = (Attribute) it.next();

+			if (Util.qNameEquals(at.getName(), name)) {

+				return at;

+			}

+		}

+		return null;

+	}

+

+	int bnodeId = 0;

+

+	private String createBNode() // TODO probably broken? Can you write bnodes

+									// in rdfa directly?

+	{

+		return "_:node" + (bnodeId++);

+	}

+

+	private String getDatatype(StartElement element) {

+		Attribute de = getAttributeByName(element, Constants.datatype);

+		if (de == null) {

+			return null;

+		}

+		String dt = de.getValue();

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

+			return dt;

+		}

+		return extractor.expandCURIE(element, dt, context);

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/SAXRDFaParser.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/SAXRDFaParser.java
new file mode 100644
index 0000000..afecfd0
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/SAXRDFaParser.java
@@ -0,0 +1,169 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.Collection;

+import java.util.EnumSet;

+import java.util.Iterator;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Set;

+

+import javax.xml.XMLConstants;

+import javax.xml.namespace.QName;

+import javax.xml.stream.XMLEventFactory;

+import javax.xml.stream.XMLOutputFactory;

+import javax.xml.stream.XMLStreamException;

+import javax.xml.stream.events.Attribute;

+import javax.xml.stream.events.StartElement;

+import javax.xml.stream.events.XMLEvent;

+

+import net.rootdev.javardfa.Constants;

+import net.rootdev.javardfa.Setting;

+import net.rootdev.javardfa.StatementSink;

+import net.rootdev.javardfa.literal.LiteralCollector;

+import net.rootdev.javardfa.uri.IRIResolver;

+

+import org.xml.sax.Attributes;

+import org.xml.sax.Locator;

+import org.xml.sax.SAXException;

+

+/**

+ * A RDFa parser for SAX

+ */

+public class SAXRDFaParser extends RDFaParser {

+	

+

+	public static SAXRDFaParser createInstance(JenaSink sink) {

+		URIExtractor extractor = new URIExtractorImpl(new IRIResolver(), true);

+		sink.setExtractor(extractor);

+		return new SAXRDFaParser(sink, XMLOutputFactory.newInstance(),

+				XMLEventFactory.newInstance(), extractor);

+	}

+

+	private SAXRDFaParser(JenaSink sink, XMLOutputFactory outputFactory,

+			XMLEventFactory eventFactory, URIExtractor extractor) {

+		super(sink, outputFactory, eventFactory, extractor);

+	}

+

+	public void emitTriples(String subj, Collection<String> props, String obj) {

+		for (String prop : props) {

+			sink.addObject(subj, prop, obj);

+		}

+	}

+

+	public void emitTriplesPlainLiteral(String subj, Collection<String> props,

+			String lex, String language) {

+		for (String prop : props) {

+			sink.addLiteral(subj, prop, lex, language, null);

+		}

+	}

+

+	public void emitTriplesDatatypeLiteral(String subj,

+			Collection<String> props, String lex, String datatype) {

+		for (String prop : props) {

+			sink.addLiteral(subj, prop, lex, null, datatype);

+		}

+	}

+

+	public void setDocumentLocator(Locator arg0) {

+		this.locator = arg0;

+		if (locator.getSystemId() != null)

+			this.setBase(arg0.getSystemId());

+	}

+

+	public void startDocument() throws SAXException {

+		sink.start();

+	}

+

+	public void endDocument() throws SAXException {

+		sink.end();

+		sink.setContext(context);

+	}

+

+	public void startPrefixMapping(String arg0, String arg1)

+			throws SAXException {

+		context.setNamespaceURI(arg0, arg1);

+		extractor.setNamespaceURI(arg0, arg1);

+		sink.addPrefix(arg0, arg1);

+	}

+

+	public void endPrefixMapping(String arg0) throws SAXException {

+	}

+

+	public void startElement(String arg0, String localname, String qname,

+			Attributes arg3) throws SAXException {

+		super.beginRDFaElement(arg0, localname, qname, arg3);

+	}

+

+	public void endElement(String arg0, String localname, String qname)

+			throws SAXException {

+		super.endRDFaElement(arg0, localname, qname);

+	}

+

+	public void characters(char[] arg0, int arg1, int arg2) throws SAXException {

+		super.writeCharacters(String.valueOf(arg0, arg1, arg2));

+	}

+

+	public void ignorableWhitespace(char[] arg0, int arg1, int arg2)

+			throws SAXException {

+		// System.err.println("Whitespace...");

+		if (literalCollector.isCollecting()) {

+			XMLEvent e = eventFactory.createIgnorableSpace(String.valueOf(arg0,

+					arg1, arg2));

+			literalCollector.handleEvent(e);

+		}

+	}

+

+	public void processingInstruction(String arg0, String arg1)

+			throws SAXException {

+	}

+

+	public void skippedEntity(String arg0) throws SAXException {

+	}

+

+}

+

+/*

+ * (c) Copyright 2009 University of Bristol All rights reserved.

+ * 

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions are met:

+ * 1. Redistributions of source code must retain the above copyright notice,

+ * this list of conditions and the following disclaimer. 2. Redistributions in

+ * binary form must reproduce the above copyright notice, this list of

+ * conditions and the following disclaimer in the documentation and/or other

+ * materials provided with the distribution. 3. The name of the author may not

+ * be used to endorse or promote products derived from this software without

+ * specific prior written permission.

+ * 

+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED

+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO

+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;

+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF

+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ */

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/URIExtractor.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/URIExtractor.java
new file mode 100644
index 0000000..8271488
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/URIExtractor.java
@@ -0,0 +1,77 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.List;

+import java.util.Set;

+

+import javax.xml.stream.events.Attribute;

+import javax.xml.stream.events.StartElement;

+

+import net.rootdev.javardfa.Setting;

+/**

+ * URIExtractor modified from net.rootdev.javardfa.uri.URIExtractor

+ */

+public interface URIExtractor {

+

+    void setSettings(Set<Setting> settings);

+

+    String expandCURIE(StartElement element, String value, EvalContext context);

+

+    String expandSafeCURIE(StartElement element, String value, EvalContext context);

+

+    String getURI(StartElement element, Attribute attr, EvalContext context);

+

+    List<String> getURIs(StartElement element, Attribute attr, EvalContext context);

+

+    String resolveURI(String uri, EvalContext context);

+    

+    void setForSAX(boolean isForSAX);

+    

+    void setNamespaceURI(String prefix, String namespaceURI);

+}

+

+/*

+ * (c) Copyright 2009 University of Bristol All rights reserved.

+ * 

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions are met:

+ * 1. Redistributions of source code must retain the above copyright notice,

+ * this list of conditions and the following disclaimer. 2. Redistributions in

+ * binary form must reproduce the above copyright notice, this list of

+ * conditions and the following disclaimer in the documentation and/or other

+ * materials provided with the distribution. 3. The name of the author may not

+ * be used to endorse or promote products derived from this software without

+ * specific prior written permission.

+ * 

+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED

+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO

+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;

+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF

+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ */

+

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/URIExtractorImpl.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/URIExtractorImpl.java
new file mode 100644
index 0000000..8d1e2c5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/URIExtractorImpl.java
@@ -0,0 +1,217 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+

+import javax.xml.namespace.QName;

+import javax.xml.stream.events.Attribute;

+import javax.xml.stream.events.StartElement;

+

+import net.rootdev.javardfa.Constants;

+import net.rootdev.javardfa.Resolver;

+import net.rootdev.javardfa.Setting;

+

+import org.apache.commons.validator.routines.UrlValidator;

+

+/**

+ * URIExtractorImpl modified from net.rootdev.javardfa.uri.URIExtractor10

+ */

+class URIExtractorImpl implements URIExtractor {

+	private Set<Setting> settings;

+	private final Resolver resolver;

+	private Map<String, String> xmlnsMap = Collections.EMPTY_MAP;

+	private boolean isForSAX;

+	private UrlValidator urlValidator;

+

+	public URIExtractorImpl(Resolver resolver, boolean isForSAX) {

+		this.resolver = resolver;

+		this.isForSAX = isForSAX;

+		this.urlValidator = new UrlValidator();

+	}

+

+	public void setForSAX(boolean isForSAX) {

+		this.isForSAX = isForSAX;

+	}

+

+	public void setSettings(Set<Setting> settings) {

+		this.settings = settings;

+	}

+

+	public String getURI(StartElement element, Attribute attr,

+			EvalContext context) {

+		QName attrName = attr.getName();

+		if (Util.qNameEquals(attrName, Constants.about)) // Safe CURIE or URI

+		{

+			return expandSafeCURIE(element, attr.getValue(), context);

+		}

+		if (Util.qNameEquals(attrName, Constants.datatype)) // A CURIE

+		{

+			return expandCURIE(element, attr.getValue(), context);

+		}

+		throw new RuntimeException("Unexpected attribute: " + attr);

+	}

+

+	private boolean isValidURI(String uri){

+		return this.urlValidator.isValid(uri);

+	}

+	

+	public List<String> getURIs(StartElement element, Attribute attr,

+			EvalContext context) {

+			

+		List<String> uris = new LinkedList<String>();	

+		

+		String[] curies = attr.getValue().split("\\s+");

+		boolean permitReserved = Util

+				.qNameEquals(Constants.rel, attr.getName())

+				|| Util.qNameEquals(Constants.rev, attr.getName());

+		for (String curie : curies) {

+			if (Constants.SpecialRels.contains(curie.toLowerCase())) {

+				if (permitReserved)

+					uris.add("http://www.w3.org/1999/xhtml/vocab#"

+							+ curie.toLowerCase());

+			} else {

+				String uri = expandCURIE(element, curie, context);

+				if (uri != null) {

+					uris.add(uri);

+				}

+			}

+		}

+		return uris;

+	}

+

+	public String expandCURIE(StartElement element, String value,

+			EvalContext context) {

+		

+		if (value.startsWith("_:")) {

+			if (!settings.contains(Setting.ManualNamespaces))

+				return value;

+			if (element.getNamespaceURI("_") == null)

+				return value;

+		}

+		if (settings.contains(Setting.FormMode) && // variable

+				value.startsWith("?")) {

+			return value;

+		}

+		int offset = value.indexOf(":") + 1;

+		if (offset == 0) {

+			return null;

+		}

+		String prefix = value.substring(0, offset - 1);

+		

+

+		// Apparently these are not allowed to expand

+		if ("xml".equals(prefix) || "xmlns".equals(prefix))

+			return null;

+

+		String namespaceURI = null;

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

+			namespaceURI = "http://www.w3.org/1999/xhtml/vocab#";

+		} else {

+			namespaceURI = element.getNamespaceURI(prefix);

+			if (isForSAX) {

+				if (namespaceURI != null) {

+					if (xmlnsMap == Collections.EMPTY_MAP)

+						xmlnsMap = new HashMap<String, String>();

+					xmlnsMap.put(prefix, namespaceURI);

+				}

+			} else {

+				if (namespaceURI == null) {

+					namespaceURI = xmlnsMap.get(prefix);

+				}

+			}

+		}

+		if (namespaceURI == null) {

+			return null;

+			// throw new RuntimeException("Unknown prefix: " + prefix);

+		}

+

+		return namespaceURI + value.substring(offset);

+	}

+

+	public String expandSafeCURIE(StartElement element, String value,

+			EvalContext context) {

+		if (value.startsWith("[") && value.endsWith("]")) {

+			return expandCURIE(element, value.substring(1, value.length() - 1),

+					context);

+		} else {

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

+				return context.getBase();

+			}

+

+			if (settings.contains(Setting.FormMode) && value.startsWith("?")) {

+				return value;

+			}

+

+			return resolver.resolve(context.getBase(), value);

+		}

+	}

+

+	public String resolveURI(String uri, EvalContext context) {

+		return resolver.resolve(context.getBase(), uri);

+	}

+

+	public String getNamespaceURI(String prefix) {

+		if (xmlnsMap.containsKey(prefix)) {

+			return xmlnsMap.get(prefix);

+		} else {

+			return null;

+		}

+	}

+	

+	public void setNamespaceURI(String prefix, String namespaceURI){

+		if (xmlnsMap == Collections.EMPTY_MAP)

+			xmlnsMap = new HashMap<String, String>();

+		xmlnsMap.put(prefix, namespaceURI);

+	}

+

+}

+

+/*

+ * (c) Copyright 2009 University of Bristol All rights reserved.

+ * 

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions are met:

+ * 1. Redistributions of source code must retain the above copyright notice,

+ * this list of conditions and the following disclaimer. 2. Redistributions in

+ * binary form must reproduce the above copyright notice, this list of

+ * conditions and the following disclaimer in the documentation and/or other

+ * materials provided with the distribution. 3. The name of the author may not

+ * be used to endorse or promote products derived from this software without

+ * specific prior written permission.

+ * 

+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED

+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO

+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;

+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF

+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ */

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java
new file mode 100644
index 0000000..4381fbd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/rdfa/Util.java
@@ -0,0 +1,140 @@
+/************************************************************************

+ *

+ * 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.pkg.rdfa;

+

+import java.net.URI;

+import java.net.URISyntaxException;

+

+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

+	 *            , the QName to be compared

+	 * @return

+	 */

+	public static boolean qNameEquals(QName at, QName name) {

+		if (!name.getNamespaceURI().equals(XMLConstants.DEFAULT_NS_PREFIX)) {

+			if (at.equals(name)) {

+				return true;

+			}

+		} else if (at.getLocalPart().equals(name.getLocalPart())) {

+			return true;

+		}

+		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

+	 *            , the internalPath relative to the root document

+	 * @return

+	 */

+	public static String getRDFBaseUri(String pkgBaseUri, String internalPath) {

+		String subDirectory = internalPath.lastIndexOf(SLASH) == -1 ? "" : SLASH + internalPath.substring(0, internalPath.lastIndexOf(SLASH));

+		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

+	 *            , an internal path in the ODF package

+	 * @return

+	 */

+	public static boolean isSubPathOf(String subPath, String superPath) {

+		if (superPath == null || subPath == null) {

+			return false;

+		}

+		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 {

+		StringBuilder sb = new StringBuilder();

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

+			sb.append(u.getScheme());

+			sb.append(':');

+		}

+		if (u.isOpaque()) {

+			sb.append(u.getSchemeSpecificPart());

+		} else {

+			if (u.getHost() != null) {

+				sb.append("//");

+				if (u.getUserInfo() != null) {

+					sb.append(u.getUserInfo());

+					sb.append('@');

+				}

+				boolean needBrackets = ((u.getHost().indexOf(':') >= 0) && !u.getHost().startsWith("[") && !u.getHost().endsWith("]"));

+				if (needBrackets)

+					sb.append('[');

+				sb.append(u.getHost());

+				if (needBrackets)

+					sb.append(']');

+				if (u.getPort() != -1) {

+					sb.append(':');

+					sb.append(u.getPort());

+				}

+			} else if (u.getRawAuthority() != null) {

+				sb.append("//");

+				sb.append(u.getRawAuthority());

+			} else {

+				sb.append("//");

+			}

+			if (u.getRawPath() != null)

+				sb.append(u.getRawPath());

+			if (u.getRawQuery() != null) {

+				sb.append('?');

+				sb.append(u.getRawQuery());

+			}

+		}

+		if (u.getFragment() != null) {

+			sb.append('#');

+			sb.append(u.getFragment());

+		}		

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

+		return ret;

+	}

+}

diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/AnyURI.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/AnyURI.java
new file mode 100644
index 0000000..4ae483e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/AnyURI.java
@@ -0,0 +1,160 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype anyURI} 
+ */
+public class AnyURI implements OdfDataType {
+
+	private URI mURI;
+
+	/**
+	 * Construct an newly AnyURI object that represents the specified URI value
+	 *
+	 * @param uri
+	 *            the value to be represented by the AnyURI Object
+	 * @throws IllegalArgumentException if the given argument is not a valid AnyURI
+	 */
+	public AnyURI(URI uri) throws IllegalArgumentException {
+		if (uri == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for AnyURI");
+		}
+
+		// validate 'anyURI' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#anyURI
+		if (!W3CSchemaType.isValid("anyURI", URITransformer.decodePath(uri.toString()))) {
+			Logger.getLogger(AnyURI.class.getName()).log(Level.SEVERE, "parameter is invalid for datatype AnyURI");
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype anyURI");
+		}
+		mURI = uri;
+	}
+
+	/**
+	 * Returns a String Object representing this AnyURI's value
+	 *
+	 * @return return a string representation of the value of this AnyURI object
+	 */
+	@Override
+	public String toString() {
+		return URITransformer.decodePath(mURI.toString());
+	}
+
+	/**
+	 * Returns an AnyURI instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return an AnyURI instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid AnyURI
+	 */
+	public static AnyURI valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if (stringValue == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for AnyURI");
+		}
+		try {
+			URI uri = new URI(URITransformer.encodePath(stringValue).toString());
+			return new AnyURI(uri);
+		} catch (URISyntaxException ex) {
+			Logger.getLogger(AnyURI.class.getName()).log(Level.SEVERE,
+					"parameter is invalid for datatype anyURI", ex);
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype anyURI");
+		}
+	}
+
+	/**
+	 * get java.net.URI from AnyURI
+	 *
+	 * @return java.net.URI returned from this AnyURI
+	 */
+	public URI getURI() {
+		return mURI;
+	}
+
+	/**
+	 * check if the specified URI instance is a valid {@odf.datatype anyURI} data type
+	 *
+	 * @param uri
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype anyURI} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(URI uri) {
+		boolean isValid = false;
+		if (uri != null) {
+			isValid = W3CSchemaType.isValid("anyURI", uri.toString());
+		}
+		return isValid;
+	}
+
+    /**
+     * Encode path to be used as path component segments in URI.
+     *
+     * <p>Creates a String that can be used as a sequence of one or more
+     * path components in an URI from a path that uses a slash
+     * character as a path separator and where the segements do not use
+     * any URI encoding rules.</p>
+     *
+     * <p>The <b>/</b> characters (delimiting the individual path_segments)
+     * are left unchanged.</p>
+     *
+     * @param path A path that is not using URI encoding rules.
+     * @return A path that is using URI encoding rules.
+     *
+     * @see #decodePath(String)
+     */
+    public static String encodePath(String path) {
+        return URITransformer.encodePath(path);
+    }
+
+    /**
+     * Decode path component segments in URI.
+     *
+     * <p>Creates a path that uses a slash character as a path separator
+     * and where the segments do not use any URI encoding
+     * from a String that is used as a sequence of one or more
+     * path components in an URI where the path segments do use
+     * URI encoding rules.</p>
+     *
+     * <p>The <b>/</b> characters (delimiting the individual path_segments)
+     * are left unchanged.</p>
+     *
+     * @param path A path that is using URI encoding rules.
+     * @return A path that is not using URI encoding rules.
+     *
+     * @see #encodePath(String)
+     *
+     */
+    public static String decodePath(String path) {
+        return URITransformer.decodePath(path);
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Base64Binary.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Base64Binary.java
new file mode 100644
index 0000000..a374563
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Base64Binary.java
@@ -0,0 +1,106 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import org.apache.xerces.impl.dv.util.Base64;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype base64Binary}
+ */
+public class Base64Binary implements OdfDataType {
+
+	private byte[] mByteList;
+
+	/**
+	 * Construct an newly Base64Binary object that represents the specified
+	 * byte[] value
+	 *
+	 * @param bytes
+	 *            the value to be represented by the Base64Binary Object
+	 * @throws NumberFormatException If the parameter is not a valid Base64Binary.
+	 *
+	 */
+	public Base64Binary(byte[] bytes) throws NumberFormatException {
+		if (bytes == null) {
+			throw new NumberFormatException("parameter can not be null for Base64Binary");
+		}
+
+		// validate 'base64Binary' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#base64Binary
+		if (!W3CSchemaType.isValid("base64Binary", Base64.encode(bytes))) {
+			throw new NumberFormatException("parameter is invalid for datatype base64Binary");
+		}
+		mByteList = bytes;
+	}
+
+	/**
+	 * Returns a String Object representing this Base64Binary's value
+	 *
+	 * @return return a string representation of the value of this Base64Binary
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return Base64.encode(mByteList);
+	}
+
+	/**
+	 * Returns a Base64Binary instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Base64Binary instance representing stringValue
+	 * @throws NumberFormatException If the parameter is not a valid Base64Binary.
+	 */
+	public static Base64Binary valueOf(String stringValue)
+			throws NumberFormatException {
+		if (stringValue == null) {
+			throw new NumberFormatException(
+					"parameter can not be null for Base64Binary");
+		}
+		return new Base64Binary(Base64.decode(stringValue));
+	}
+
+	/**
+	 * get byte[] from Base64Binary
+	 *
+	 * @return byte[] returned from this Base64Binary instance
+	 */
+	public byte[] getBytes() {
+		return mByteList;
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype base64Binary} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype base64Binary} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		} else {
+			return W3CSchemaType.isValid("base64Binary", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CURIE.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CURIE.java
new file mode 100644
index 0000000..1733798
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CURIE.java
@@ -0,0 +1,85 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype CURIE}
+ */
+public class CURIE implements OdfDataType {
+
+	private String mCURIE;
+	private static final Pattern curiePattern = Pattern.compile("^(([\\i-[:]][\\c-[:]]*)?:)?.+$");
+	
+	/**
+	 * Construct CURIE by the parsing the given string
+	 *
+	 * @param curie
+	 *            The String to be parsed into CURIE
+	 * @throws IllegalArgumentException if the given argument is not a valid CURIE
+	 */
+	public CURIE(String curie) throws IllegalArgumentException {
+		if (!isValid(curie)){
+			throw new IllegalArgumentException("parameter is invalid for datatype CURIE");
+		}
+		mCURIE = curie;
+	}
+
+	/**
+	 * Returns a String Object representing this CURIE's value
+	 *
+	 * @return return a string representation of the value of this CURIE object
+	 */
+	@Override
+	public String toString() {
+		return mCURIE;
+	}
+
+	/**
+	 * Returns a CURIE instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a CURIE instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid CURIE
+	 */
+	public static CURIE valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new CURIE(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype CURIE} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype CURIE} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!curiePattern.matcher(stringValue).matches() || stringValue.length() < 1)) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CURIEs.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CURIEs.java
new file mode 100644
index 0000000..852a93b
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CURIEs.java
@@ -0,0 +1,128 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype CURIEs}
+ */
+public class CURIEs implements OdfDataType {
+
+	private String mCURIEs;
+
+	/**
+	 * Construct CURIEs by the parsing the given string
+	 *
+	 * @param curies
+	 *            The String to be parsed into CURIEs
+	 * @throws IllegalArgumentException if the given argument is not a valid CURIEs
+	 */
+	public CURIEs(List<CURIE> curies) throws IllegalArgumentException {
+		if ((curies == null) || (curies.size() == 0)) {
+			throw new IllegalArgumentException("parameter can not be null for CURIEs");
+		}
+		StringBuffer aRet = new StringBuffer();
+		Iterator<CURIE> aIter = curies.iterator();
+		while (aIter.hasNext()) {
+			if (aRet.length() > 0) {
+				aRet.append(' ');
+			}
+			String aCurie = aIter.next().toString();
+			aRet.append(aCurie);
+		}
+		mCURIEs = aRet.toString();
+	}
+
+	/**
+	 * Returns a space separated String Object representing this CURIEs's value
+	 *
+	 * @return return a string representation of the value of this CURIEs object
+	 */
+	@Override
+	public String toString() {
+		return mCURIEs;
+	}
+
+	/**
+	 * Returns a CURIEs instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a CURIEs instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid CURIEs
+	 */
+	public static CURIEs valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if ((stringValue == null) || (stringValue.length() == 0)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype CURIEs");
+		}
+
+		List<CURIE> aRet = new ArrayList<CURIE>();
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			aRet.add(new CURIE(names[i]));
+		}
+		return new CURIEs(aRet);
+	}
+
+	/**
+	 * Returns a list of CURIE from the CURIEs Object
+	 *
+	 * @return a list of CURIE
+	 */
+	public List<CURIE> getCURIEList() {
+		List<CURIE> aRet = new ArrayList<CURIE>();
+		String[] names = mCURIEs.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			aRet.add(new CURIE(names[i]));
+		}
+		return aRet;
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype CURIEs} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype CURIEs} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+		if (stringValue.length() == 0) {
+			return false;
+		}
+
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			if (!CURIE.isValid(names[i])) {
+				return false;
+			}
+		}
+		return true;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellAddress.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellAddress.java
new file mode 100644
index 0000000..6bc0804
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellAddress.java
@@ -0,0 +1,89 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype cellAddress}
+ */
+public class CellAddress implements OdfDataType {
+
+	private String mCellAddress;
+	private static final Pattern cellAddressPattern = Pattern.compile("^(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[A-Z]+\\$?[0-9]+$");
+	/**
+	 * Construct CellAddress by the parsing the given string
+	 *
+	 * @param cellAddress
+	 *            The String to be parsed into CellAddress
+	 * @throws IllegalArgumentException if the given argument is not a valid CellAddress
+	 */
+	public CellAddress(String cellAddress) throws IllegalArgumentException {
+		if (!isValid(cellAddress)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype CellAddress");
+		}
+		mCellAddress = cellAddress;
+	}
+
+	// TODO: Should a cell address stay a string?
+	/**
+	 * Returns a String Object representing this CellAddress's value
+	 *
+	 * @return return a string representation of the value of this CellAddress
+	 *         object
+	 */
+	@Override
+	public String toString() {
+
+		return mCellAddress;
+	}
+
+	/**
+	 * Returns a CellAddress instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a CellAddress instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid CellAddress
+	 */
+	public static CellAddress valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new CellAddress(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype cellAddress} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype cellAddress} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!cellAddressPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellRangeAddress.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellRangeAddress.java
new file mode 100644
index 0000000..3385224
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellRangeAddress.java
@@ -0,0 +1,93 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype cellRangeAddress}
+ */
+public class CellRangeAddress implements OdfDataType {
+
+	private String mCellRangeAddress;
+	private static final Pattern cellRangeAddressPattern1 = Pattern.compile("^(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[A-Z]+\\$?[0-9]+(:(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[A-Z]+\\$?[0-9]+)?$");
+	private static final Pattern cellRangeAddressPattern2 = Pattern.compile("^(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[0-9]+:(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[0-9]+$");
+	private static final Pattern cellRangeAddressPattern3 = Pattern.compile("^(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[A-Z]+:(\\$?([^\\. ']+|'([^']|'')+'))?\\.\\$?[A-Z]+$");
+	
+	/**
+	 * Construct CellRangeAddress by the parsing the given string
+	 *
+	 * @param cellRangeAddress
+	 *            The String to be parsed into CellRangeAddress
+	 * @throws IllegalArgumentException if the given argument is not a valid CellRangeAddress
+	 */
+	public CellRangeAddress(String cellRangeAddress)
+			throws IllegalArgumentException {
+		if (!isValid(cellRangeAddress)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype CellRangeAddress");
+		}
+		mCellRangeAddress = cellRangeAddress;
+	}
+
+	// TODO: Should a cell address stay a string?
+	/**
+	 * Returns a String Object representing this CellRangeAddress's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         CellRangeAddress object
+	 */
+	@Override
+	public String toString() {
+		return mCellRangeAddress;
+	}
+
+	/**
+	 * Returns a CellRangeAddress instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a CellRangeAddress instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid CellRangeAddress
+	 */
+	public static CellRangeAddress valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new CellRangeAddress(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype cellRangeAddress} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype cellRangeAddress} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!(cellRangeAddressPattern1.matcher(stringValue).matches() || cellRangeAddressPattern2.matcher(stringValue).matches() ||cellRangeAddressPattern3.matcher(stringValue).matches()))) {
+				return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellRangeAddressList.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellRangeAddressList.java
new file mode 100644
index 0000000..4ec9f61
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CellRangeAddressList.java
@@ -0,0 +1,126 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype cellRangeAddressList}
+ */
+public class CellRangeAddressList implements OdfDataType {
+
+	private String mCellRangeAddressList;
+
+	/**
+	 * Construct CellRangeAddressList by the parsing the given string
+	 *
+	 * @param cellRangeAddressList The String to be parsed into CellRangeAddressList
+	 * @throws IllegalArgumentException if the given argument is not a valid CellRangeAddressList
+	 */
+	public CellRangeAddressList(List<CellRangeAddress> cellRangeAddressList)
+			throws IllegalArgumentException {
+		if (cellRangeAddressList == null) {
+			throw new IllegalArgumentException("parameter can not be null for CellRangeAddressList");
+		}
+
+		StringBuffer aRet = new StringBuffer();
+		Iterator<CellRangeAddress> aIter = cellRangeAddressList.iterator();
+		while (aIter.hasNext()) {
+			if (aRet.length() > 0) {
+				aRet.append(' ');
+			}
+			String aAddress = aIter.next().toString();
+			aRet.append(aAddress);
+		}
+		mCellRangeAddressList = aRet.toString();
+	}
+
+	// TODO: Should a cell address stay a string?
+	/**
+	 * Returns a space separated String Object representing this CellRangeAddressList's value
+	 *
+	 * @return return a string representation of the value of this CellRangeAddressList object
+	 */
+	@Override
+	public String toString() {
+		return mCellRangeAddressList;
+	}
+
+	/**
+	 * Returns a CellRangeAddressList instance representing the specified String value
+	 *
+	 * @param stringValue a String value
+	 * @return return a CellRangeAddressList instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid CellRangeAddressList
+	 */
+	public static CellRangeAddressList valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if (stringValue == null) {
+			throw new IllegalArgumentException("parameter is invalid for datatype CellRangeAddressList");
+		}
+
+		List<CellRangeAddress> aRet = new ArrayList<CellRangeAddress>();
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			aRet.add(new CellRangeAddress(names[i]));
+		}
+		return new CellRangeAddressList(aRet);
+	}
+
+	/**
+	 * Returns a list of CellRangeAddress from the CellRangeAddressList Object
+	 * @return a list of CellRangeAddress
+	 */
+	public List<CellRangeAddress> getCellRangesAddressList() {
+		List<CellRangeAddress> aRet = new ArrayList<CellRangeAddress>();
+		String[] names = mCellRangeAddressList.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			aRet.add(new CellRangeAddress(names[i]));
+		}
+		return aRet;
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype cellRangeAddressList} data type
+	 * @param stringValue the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype cellRangeAddressList} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+		if (stringValue.length() == 0) {
+			return true;
+		}
+
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			if (!CellRangeAddress.isValid(names[i])) {
+				return false;
+			}
+		}
+		return true;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ClipShape.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ClipShape.java
new file mode 100644
index 0000000..2060f2c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ClipShape.java
@@ -0,0 +1,87 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype clipShape}
+ */
+public class ClipShape implements OdfDataType {
+
+	private String mClipShape;
+	private static final Pattern clipShapePattern = Pattern.compile("^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}[ ]*\\)$");
+	
+	/**
+	 * Construct ClipShape by the parsing the given string
+	 *
+	 * @param clipShape
+	 *            The String to be parsed into ClipShape
+	 * @throws IllegalArgumentException if the given argument is not a valid ClipShape
+	 */
+	public ClipShape(String clipShape) throws IllegalArgumentException {
+		if (!isValid(clipShape)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype ClipShape");
+		}
+		mClipShape = clipShape;
+	}
+
+	/**
+	 * Returns a String Object representing this ClipShape's value
+	 *
+	 * @return return a string representation of the value of this ClipShape
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mClipShape;
+	}
+
+	/**
+	 * Returns a ClipShape instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a ClipShape instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid ClipShape
+	 */
+	public static ClipShape valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new ClipShape(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype clipShape} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype clipShape} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!clipShapePattern.matcher(stringValue).matches())) {
+				return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Color.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Color.java
new file mode 100644
index 0000000..8dc3ce5
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Color.java
@@ -0,0 +1,438 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype color}
+ * See <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">W3C CSS specification</a> for further details.
+ */
+public class Color implements OdfDataType {
+
+	private static final Pattern sixHexRGBPattern = Pattern.compile("^#[0-9a-fA-F]{6}$");
+	private static final Pattern threeHexRGBPattern = Pattern.compile("^#[0-9a-fA-F]{3}$");
+	private static final Map<String, String> labeledColors = new HashMap<String, String>();
+	static {
+		labeledColors.put("aqua", "#00ffff");
+		labeledColors.put("black", "#000000");
+		labeledColors.put("blue", "#0000ff");
+		labeledColors.put("fuchsia", "#ff00ff");
+		labeledColors.put("gray", "#808080");
+		labeledColors.put("green", "#008000");
+		labeledColors.put("lime", "#00ff00");
+		labeledColors.put("maroon", "#800000");
+		labeledColors.put("navy", "#000080");
+		labeledColors.put("olive", "#808000");
+		labeledColors.put("orange", "#ffA500");
+		labeledColors.put("purple", "#800080");
+		labeledColors.put("red", "#ff0000");
+		labeledColors.put("silver", "#c0c0c0");
+		labeledColors.put("teal", "#008080");
+		labeledColors.put("white", "#ffffff");
+		labeledColors.put("yellow", "#ffff00");
+	}
+	private static final String COLOR_PREFIX = "#";
+	
+	private final String mColorAsSixHexRGB;
+	
+	/**
+	* The color aqua in sRGB space.
+	*/
+	public static final Color AQUA = new Color("#00ffff");
+
+
+	/**
+	* The color black in sRGB space.
+	*/
+	public static final Color BLACK = new Color("#000000");
+
+
+	/**
+	* The color blue in sRGB space.
+	*/
+	public static final Color BLUE = new Color("#0000ff");
+
+
+	/**
+	* The color fuchsia in sRGB space.
+	*/
+	public static final Color FUCHSIA = new Color("#ff00ff");
+
+
+	/**
+	* The color gray in sRGB space.
+	*/
+	public static final Color GRAY = new Color("#808080");
+
+
+	/**
+	* The color green in sRGB space.
+	*/
+	public static final Color GREEN = new Color("#008000");
+
+
+	/**
+	* The color lime in sRGB space.
+	*/
+	public static final Color LIME = new Color("#00ff00");
+
+
+	/**
+	* The color maroon in sRGB space.
+	*/
+	public static final Color MAROON = new Color("#800000");
+
+
+	/**
+	* The color navy in sRGB space.
+	*/
+	public static final Color NAVY = new Color("#000080");
+
+
+	/**
+	* The color olive in sRGB space.
+	*/
+	public static final Color OLIVE = new Color("#808000");
+
+
+	/**
+	* The color orange in sRGB space.
+	*/
+	public static final Color ORANGE = new Color("#ffA500");
+
+
+	/**
+	* The color purple in sRGB space.
+	*/
+	public static final Color PURPLE = new Color("#800080");
+
+
+	/**
+	* The color red in sRGB space.
+	*/
+	public static final Color RED = new Color("#ff0000");
+
+
+	/**
+	* The color silver in sRGB space.
+	*/
+	public static final Color SILVER = new Color("#c0c0c0");
+
+
+	/**
+	* The color teal in sRGB space.
+	*/
+	public static final Color TEAL = new Color("#008080");
+
+
+	/**
+	* The color white in sRGB space.
+	*/
+	public static final Color WHITE = new Color("#ffffff");
+
+
+	/**
+	* The color yellow in sRGB space.
+	*/
+	public static final Color YELLOW = new Color("#ffff00");
+
+	
+	/**
+	 * Construct Color by the parsing the given string. The string should be observed sRGB color standard 
+	 * which starts with "#" and following with six numbers or three numbers in Hex format.
+	 * For example, "#FFFFFF" is a valid argument and white color will be constructed. 
+	 * <p>
+	 * For further information on sRGB,
+	 * see <A href="http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html">
+	 * http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html
+	 * </A>.
+	 * 
+	 * @param color  represented using the 3 or 6 HEX sRGB notation.
+	 * @throws IllegalArgumentException  if the given argument is not a valid Color in sRGB HEX notation.
+	 */
+	public Color(String color) {
+		if(!isValid(color)){
+			throw new IllegalArgumentException("parameter is invalid for datatype Color");
+		}
+		if(color.length()==4){
+			mColorAsSixHexRGB = mapColorFromThreeToSixHex(color);
+		}else{
+			mColorAsSixHexRGB = color;
+		}
+	}
+
+	/**
+	 * Construct Color using the specified red, green and blue values in the range (0 - 255).
+	 * 
+	 * @param red  the red component.
+	 * @param green  the green component.
+	 * @param blue  the blue component.
+	 * @throws IllegalArgumentException  if <code>red</code>, <code>green</code> or <code>blue</code> 
+	 *         are outside of the range 0 to 255, inclusive.
+	 */
+	public Color(int red, int green, int blue) {
+		this(mapColorIntegerToString(red, green, blue));
+	}
+	
+	/**
+	 * Construct Color using the specified red, green, and blue values in the range (0.0 - 1.0).
+	 * 
+	 * @param red  the red component
+	 * @param green  the green component
+	 * @param blue  the blue component
+	 * @throws IllegalArgumentException  if <code>red</code>, <code>green</code> or <code>blue</code> are
+	 *             outside of the range 0.0 to 1.0, inclusive.
+	 */
+	public Color(float red, float green, float blue) {
+		this((int) (red * 255 + 0.5), (int) (green * 255 + 0.5), (int) (blue * 255 + 0.5));
+	}
+
+	/**
+	 * Construct Color using {@link java.awt.Color <code>java.awt.Color</code>}.
+	 * 
+	 * @param color the specified {@link java.awt.Color <code>java.awt.Color</code>}.
+	 * @throws IllegalArgumentException  if the given argument is not a valid Color.
+	 * @see java.awt.Color
+	 */
+	public Color(java.awt.Color color) {
+		this(color.getRed(),color.getGreen(),color.getBlue());
+	}
+
+	/**
+	 * Returns the Color in six HEX sRGB notation.
+	 * format.
+	 * 
+	 * @return a six number hexadecimal string representation of the Color
+	 */
+	@Override
+	public String toString() {
+		return mColorAsSixHexRGB;
+	}
+
+	/**
+	 * Returns a Color instance representing the specified String value.
+	 * 
+	 * @param colorValue a six (or three) number hexadecimal string representation of the Color
+	 * @return return a Color instance representing <code>stringValue</code>.
+	 * @throws IllegalArgumentException  if the given argument is not a valid Color.
+	 */
+	public static Color valueOf(String colorValue) {
+		return new Color(colorValue);
+	}
+
+	/**
+	 * Check if the specified String is a valid {@odf.datatype color} data type.
+	 * 
+	 * @param colorValue  a six (or three) number hexadecimal string representation of the Color
+	 * @return true if the value of argument is valid for{@odf.datatype color} data type false otherwise.
+	 */
+	public static boolean isValid(String colorValue) {
+		if ((colorValue == null) || !(threeHexRGBPattern.matcher(colorValue).matches() || sixHexRGBPattern.matcher(colorValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	/**
+	 * Convert RGB color formats to six-digit hex RGB format. 
+	 * 
+	 * The RGB mapping works as follows:	 
+	 * rgb(110%, 0%, 0%)----clipped to rgb(100%,0%,0%), return #ff0000  
+	 * maroon----one of the seventeen fixed labeled numbers, return #800000  
+	 * #ff0000----six-digit notation #rrggbb, returns the input
+	 * #f00----three-digit notation #rgb, return #ff0000
+	 * rgb(255,0,0)----integer range 0 - 255, return #ff0000
+	 * rgb(300,0,0)----clipped to rgb(255,0,0), return #ff0000
+	 * rgb(255,-10,0)----clipped to rgb(255,0,0), return #ff0000 
+	 * 
+	 * @param colorValue  The sRGB color value to be converted.
+	 * @return the converted color.
+	 */
+	public static String toSixDigitHexRGB(String colorValue){
+		if (colorValue == null) {
+			throw new IllegalArgumentException("parameter should not be null.");
+		} else {
+			colorValue = colorValue.toLowerCase().trim();
+			if (sixHexRGBPattern.matcher(colorValue).matches()) {
+				// 6-digit notation #rrggbb - return itself.
+				return colorValue;
+			} else if (threeHexRGBPattern.matcher(colorValue).matches()) {
+				// convert 3-digit notation #rgb.
+				return mapColorFromThreeToSixHex(colorValue);
+			} else if (colorValue.startsWith("rgb")) {
+				colorValue = colorValue.substring(3);
+				colorValue = colorValue.substring(colorValue.indexOf("(") + 1,
+						colorValue.indexOf(")"));
+				String[] rgbValues = colorValue.split(",");
+				if (rgbValues.length == 3) {
+					int r = mapColorValueToInteger(rgbValues[0].trim());
+					int g = mapColorValueToInteger(rgbValues[1].trim());
+					int b = mapColorValueToInteger(rgbValues[2].trim());
+					String rs = Integer.toHexString(r);
+					String gs = Integer.toHexString(g);
+					String bs = Integer.toHexString(b);
+					String hexColor = COLOR_PREFIX;
+					if (r < 16) {
+						hexColor += "0";
+					}
+					hexColor += rs;
+					if (g < 16) {
+						hexColor += "0";
+					}
+					hexColor += gs;
+					if (b < 16) {
+						hexColor += "0";
+					}
+					hexColor += bs;
+					return hexColor;
+				}else{
+					throw new IllegalArgumentException("parameter: "+ colorValue + " can't be converted six-digit hex RGB.");
+				}
+			} else {
+				// convert the seventeen fixed labeled numbers.
+				String hexColor = labeledColors.get(colorValue);
+				if (hexColor != null) {
+					return hexColor;
+				} else {
+					throw new IllegalArgumentException("parameter: "+ colorValue + " can't be converted six-digit hex RGB.");
+				}
+			}
+		}
+	}
+
+	/**
+	 * Return the corresponding {@link java.awt.Color <code>java.awt.Color</code>} instance of the Color data type.
+	 * 
+	 * @return the converted {@link java.awt.Color <code>java.awt.Color</code>} instance..
+	 */
+	public java.awt.Color getAWTColor(){
+		return mapColorToAWTColor(this);
+	}
+	
+	/**
+	 * Map a Color data type to {@link java.awt.Color <code>java.awt.Color</code>}. 
+	 * 
+	 * @param color  The color data type to be mapped..
+	 * @return the converted {@link java.awt.Color <code>java.awt.Color</code>} instance.
+	 */
+	public static java.awt.Color mapColorToAWTColor(Color color) {
+		int rgb = Integer.decode("0x" + color.mColorAsSixHexRGB.substring(1));
+		return new java.awt.Color(rgb);
+	}
+	
+	/**
+	 * Converts Color expressed by red, green and blue values in the range (0 - 255) to 
+	 * a string format which is used in {@odf.datatype color}.
+	 * 
+	 * @param red  the red component.
+	 * @param green  the green component.
+	 * @param blue  the blue component.
+	 * @return the string format color.
+	 */
+	private static String mapColorIntegerToString(int red, int green, int blue) {
+		String rs = Integer.toHexString(red);
+		String gs = Integer.toHexString(green);
+		String bs = Integer.toHexString(blue);
+		String hexColor = COLOR_PREFIX;
+		if (red < 16) {
+			hexColor += "0";
+		}
+		hexColor += rs;
+		if (green < 16) {
+			hexColor += "0";
+		}
+		hexColor += gs;
+		if (blue < 16) {
+			hexColor += "0";
+		}
+		hexColor += bs;
+		return hexColor;
+	}
+	
+	/**
+	 * Converts Color from three-digit to six-digit form. The three-digit (#rgb) is converted into six-digit form (#rrggbb) by replicating digits, 
+	 * not by adding zeros. For example, #fb0 expands to #ffbb00. 
+	 * 	 * 
+	 * @param threeDigitcColor  the three-digit color form.
+	 * @return the six-digit color form.
+	 */
+	private static String mapColorFromThreeToSixHex(String threeDigitcColor) {
+		char[] colorData = threeDigitcColor.toCharArray();
+		char[] sixDigitColor = new char[7];
+		for (int i = 0; i < 7; i++) {
+			sixDigitColor[i] = colorData[(i + 1) / 2];
+		}
+		return new String(sixDigitColor);
+	}
+
+	/** Convert percent string and integer string to integer.
+		value range will be checked and adapted to border (error correction) */
+	private static int mapColorValueToInteger(String colorValue) {
+		if (colorValue.endsWith("%")) {
+			colorValue = colorValue.substring(0, colorValue.indexOf("%"));
+			int value = Integer.parseInt(colorValue);
+			if (value < 0) {
+				value = 0;
+			}
+			if (value > 100) {
+				value = 100;
+			}
+			return 255 * value / 100;
+		} else {
+			int value = Integer.parseInt(colorValue);
+			if (value < 0) {
+				value = 0;
+			}
+			if (value > 255) {
+				value = 255;
+			}
+			return value;
+		}
+	}
+
+        
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Color other = (Color) obj;
+        if ((this.mColorAsSixHexRGB == null) ? (other.mColorAsSixHexRGB != null) : !this.mColorAsSixHexRGB.equals(other.mColorAsSixHexRGB)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 97 * hash + (this.mColorAsSixHexRGB != null ? this.mColorAsSixHexRGB.hashCode() : 0);
+        return hash;
+    }
+        
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Coordinate.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Coordinate.java
new file mode 100644
index 0000000..9038a6a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Coordinate.java
@@ -0,0 +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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype coordinate}
+ */
+public class Coordinate extends Length {
+
+	public Coordinate(String length) {
+		super(length);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CountryCode.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CountryCode.java
new file mode 100644
index 0000000..a6105c3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/CountryCode.java
@@ -0,0 +1,91 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype countryCode}
+ */
+public class CountryCode implements OdfDataType {
+
+	private String mCountryCode;
+	private static final Pattern countryCodePattern = Pattern.compile("^[A-Za-z0-9]{1,8}$");
+	
+	/**
+	 * Construct CountryCode by the parsing the given string
+	 *
+	 * @param countryCode
+	 *            The String to be parsed into CountryCode
+	 * @throws IllegalArgumentException if the given argument is not a valid CountryCode
+	 */
+	public CountryCode(String countryCode) throws IllegalArgumentException {
+		if (!isValid(countryCode)) {
+			throw new IllegalArgumentException("parameter is invalid for datatype CountryCode");
+		}
+		// validate 'token' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#token
+		if (!W3CSchemaType.isValid("token", countryCode)) {
+			throw new IllegalArgumentException("parameter is invalid for datatype CountryCode");
+		}
+		mCountryCode = countryCode;
+	}
+
+	/**
+	 * Returns a String Object representing this CountryCode's value
+	 *
+	 * @return return a string representation of the value of this CountryCode
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mCountryCode;
+	}
+
+	/**
+	 * Returns a CountryCode instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a CountryCode instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid CountryCode
+	 */
+	public static CountryCode valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new CountryCode(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype countryCode} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype countryCode} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null || !countryCodePattern.matcher(stringValue).matches()) {
+			return false;
+		} else {
+			return W3CSchemaType.isValid("token", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Date.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Date.java
new file mode 100644
index 0000000..cb614df
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Date.java
@@ -0,0 +1,110 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype date}
+ * Details of the type can be found in the <a href="http://www.w3.org/TR/xmlschema-2/#date">W3C XML Schema specification</a>.
+ */
+public class Date implements OdfFieldDataType, OdfDataType {
+
+	private XMLGregorianCalendar mDate;
+
+	/**
+	 * Construct an newly Date object that represents the specified
+	 * XMLGregorianCalendar value
+	 *
+	 * @param date
+	 *            the value to be represented by the Date Object
+	 * @throws IllegalArgumentException if the given argument is not a valid Date
+	 *
+	 */
+	public Date(XMLGregorianCalendar date) throws IllegalArgumentException {
+		if (date == null) {
+			throw new IllegalArgumentException("parameter can not be null for date");
+		}
+		// validate 'date' type which is defined in W3C schema
+		// see http://www.w3.org/TR/xmlschema-2/#date
+		if (!W3CSchemaType.isValid("date", date.toXMLFormat())) {
+			throw new IllegalArgumentException("parameter is invalid for datatype date");
+		}
+		mDate = date;
+	}
+
+	/**
+	 * Returns a String Object representing this Date value
+	 *
+	 * @return return a string representation of the value of this Date object
+	 */
+	@Override
+	public String toString() {
+		return mDate.toXMLFormat();
+	}
+
+	/**
+	 * Returns a Date instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Date instance representing stringValue
+	 * @throws IllegalArgumentException If the stringValue is not a date
+	 */
+	public static Date valueOf(String stringValue) throws IllegalArgumentException {
+		Date date = null;
+		try {
+			DatatypeFactory aFactory = new org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl();
+			date = new Date(aFactory.newXMLGregorianCalendar(stringValue));
+		} catch (Throwable t) {
+			throw new IllegalArgumentException(t);
+		}
+		return date;
+	}
+
+	/**
+	 * Returns the value of this Date object as an XMLGregorianCalendar
+	 *
+	 * @return the XMLGregorianCalendar value of this Date object.
+	 */
+	public XMLGregorianCalendar getXMLGregorianCalendar() {
+		return mDate;
+	}
+
+	/**
+	 * check if the specified XMLGregorianCalendar instance is a valid {@odf.datatype date} data
+	 * type
+	 *
+	 * @param date
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype date} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(XMLGregorianCalendar date) {
+		boolean isDate = false;
+		if (date != null) {
+			isDate = W3CSchemaType.isValid("date", date.toXMLFormat());
+		}
+		return isDate;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/DateOrDateTime.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/DateOrDateTime.java
new file mode 100644
index 0000000..8a6c1c8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/DateOrDateTime.java
@@ -0,0 +1,108 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype dateOrDateTime}
+ */
+public class DateOrDateTime implements OdfDataType {
+
+	private XMLGregorianCalendar mDateOrDateTime;
+
+	/**
+	 * Construct an newly DateOrDateTime object that represents the specified
+	 * XMLGregorianCalendar value
+	 *
+	 * @param dateOrDateTime
+	 *            the value to be represented by the DateOrDateTime Object
+	 * @throws IllegalArgumentException if the given argument is not a valid DateOrDateTime
+	 */
+	public DateOrDateTime(XMLGregorianCalendar dateOrDateTime)
+			throws IllegalArgumentException {
+		if (DateOrDateTime.isValid(dateOrDateTime)) {
+			mDateOrDateTime = dateOrDateTime;
+		} else {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype DateOrDateTime");
+		}
+	}
+
+	/**
+	 * Returns a String Object representing this DateOrDateTime value
+	 *
+	 * @return return a string representation of the value of this
+	 *         DateOrDateTime object
+	 */
+	@Override
+	public String toString() {
+		return mDateOrDateTime.toXMLFormat();
+	}
+
+	/**
+	 * Returns a DateOrDateTime instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a DateOrDateTime instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid DateOrDateTime
+	 */
+	public static DateOrDateTime valueOf(String stringValue)
+			throws IllegalArgumentException {
+		try {
+			DatatypeFactory aFactory = new org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl();
+			return new DateOrDateTime(aFactory.newXMLGregorianCalendar(stringValue));
+		} catch (IllegalArgumentException ex) {
+			Logger.getLogger(DateOrDateTime.class.getName()).log(Level.SEVERE,
+					"parameter is invalid for datatype DateOrDateTime", ex);
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype DateOrDateTime");
+		}
+	}
+
+	/**
+	 * Returns the value of this DateOrDateTime object as an
+	 * XMLGregorianCalendar
+	 *
+	 * @return the XMLGregorianCalendar value of this DateOrDateTime object.
+	 */
+	public XMLGregorianCalendar getXMLGregorianCalendar() {
+		return mDateOrDateTime;
+	}
+
+	/**
+	 * check if the specified XMLGregorianCalendar instance is a valid
+	 * {@odf.datatype dateOrDateTime} data type
+	 *
+	 * @param dateOrDateTime
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype dateOrDateTime} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(XMLGregorianCalendar dateOrDateTime) {
+		return (Date.isValid(dateOrDateTime) || DateTime.isValid(dateOrDateTime));
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/DateTime.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/DateTime.java
new file mode 100644
index 0000000..826a380
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/DateTime.java
@@ -0,0 +1,112 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype dateTime}
+ */
+public class DateTime implements OdfDataType {
+
+	private XMLGregorianCalendar mDateTime;
+
+	/**
+	 * Construct an newly DateTime object that represents the specified
+	 * XMLGregorianCalendar value
+	 *
+	 * @param dateTime
+	 *            the value to be represented by the DateTime Object
+	 * @throws IllegalArgumentException if the given argument is not a valid DateTime
+	 */
+	public DateTime(XMLGregorianCalendar dateTime) throws IllegalArgumentException {
+		if (dateTime == null) {
+			throw new IllegalArgumentException("parameter can not be null for DateTime");
+		}
+		// validate 'dateTime' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#dateTime
+		if (!W3CSchemaType.isValid("dateTime", dateTime.toXMLFormat())) {
+			throw new IllegalArgumentException("parameter is invalid for datatype dateTime");
+		}
+		mDateTime = dateTime;
+	}
+
+	/**
+	 * Returns a String Object representing this DateTime value
+	 *
+	 * @return return a string representation of the value of this DateTime
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mDateTime.toXMLFormat();
+	}
+
+	/**
+	 * Returns a DateTime instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a DateTime instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid DateTime
+	 */
+	public static DateTime valueOf(String stringValue) throws IllegalArgumentException {
+		try {
+			DatatypeFactory aFactory = new org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl();
+			return new DateTime(aFactory.newXMLGregorianCalendar(stringValue));
+		} catch (IllegalArgumentException ex) {
+			Logger.getLogger(DateTime.class.getName()).log(Level.SEVERE,
+					"parameter is invalid for datatype DateTime", ex);
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype DateTime");
+		}
+	}
+
+	/**
+	 * Returns the value of this DateTime object as an XMLGregorianCalendar
+	 *
+	 * @return the XMLGregorianCalendar value of this DateTime object.
+	 */
+	public XMLGregorianCalendar getXMLGregorianCalendar() {
+		return mDateTime;
+	}
+
+	/**
+	 * check if the specified XMLGregorianCalendar instance is a valid {@odf.datatype dateTime} data
+	 * type
+	 *
+	 * @param date
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype dateTime} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(XMLGregorianCalendar date) {
+		if (date == null) {
+			return false;
+		} else {
+			return W3CSchemaType.isValid("dateTime", date.toString());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Distance.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Distance.java
new file mode 100644
index 0000000..988c6fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Distance.java
@@ -0,0 +1,31 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype distance}
+ */
+public class Distance extends Length {
+
+	public Distance(String length) {
+		super(length);
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Duration.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Duration.java
new file mode 100644
index 0000000..fc99691
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Duration.java
@@ -0,0 +1,122 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype duration}
+ */
+public class Duration implements OdfFieldDataType, OdfDataType {
+
+	private javax.xml.datatype.Duration mDurationType;
+
+	/**
+	 * Construct DurationType by the parsing the given string
+	 *
+	 * @param duration	The String to be parsed into DurationType
+	 * @throws IllegalArgumentException if the given argument is not a valid Duration
+	 */
+	public Duration(javax.xml.datatype.Duration duration) throws IllegalArgumentException {
+		if (duration == null) {
+			throw new IllegalArgumentException("parameter can not be null for duration");
+		}
+
+		// validate 'duration' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#duration
+		if (!W3CSchemaType.isValid("duration", duration.toString())) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype duration");
+		}
+		mDurationType = duration;
+	}
+
+	/**
+	 * Returns a String Object representing this DurationType's value
+	 *
+	 * @return return a string representation of the value of this DurationType
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mDurationType.toString();
+	}
+
+	/**
+	 * Returns a DurationType instance representing the specified String value
+	 *
+	 * @param stringValue  a String value
+	 *
+	 * @return return a DurationType instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Duration
+	 */
+	public static Duration valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if (stringValue == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for Duration");
+		}
+
+		try {
+			DatatypeFactory aFactory = DatatypeFactory.newInstance();
+			return new Duration(aFactory.newDuration(stringValue));
+		} catch (DatatypeConfigurationException ex1) {
+			Logger.getLogger(Duration.class.getName()).log(Level.SEVERE,
+					"DatatypeFactory can not be instanced", ex1);
+			return null;
+		} catch (IllegalArgumentException ex2) {
+			Logger.getLogger(Duration.class.getName()).log(Level.SEVERE,
+					"parameter is invalid for datatype Duration", ex2);
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype Duration");
+		}
+	}
+
+	/**
+	 * Returns the value of this DurationType object as an Duration
+	 *
+	 * @return the Duration value of this DurationType object.
+	 */
+	public javax.xml.datatype.Duration getValue() {
+		return mDurationType;
+	}
+
+	/**
+	 * check if the specified Duration instance is a valid {@odf.datatype duration} data type
+	 *
+	 * @param duration  the value to be tested
+	 *
+	 * @return true if the value of argument is valid for {@odf.datatype duration} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(javax.xml.datatype.Duration duration) {
+		boolean isDuration = false;
+		if (duration != null) {
+			isDuration = W3CSchemaType.isValid("duration", duration.toString());
+		}
+		return isDuration;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Formula.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Formula.java
new file mode 100644
index 0000000..b00c988
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Formula.java
@@ -0,0 +1,81 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype formula}
+ */
+public class Formula implements OdfDataType {
+
+	private String mFormula;
+
+	/**
+	 * Construct Formula by the parsing the given string
+	 *
+	 * @param formula  The String to be parsed into Formula
+	 * @throws IllegalArgumentException if the given argument is not a valid Formula
+	 */
+	public Formula(String formula) throws IllegalArgumentException {
+		if (formula == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for Formula");
+		}
+		mFormula = formula;
+	}
+
+	/**
+	 * Returns a String Object representing this Formula's value
+	 *
+	 * @return return a string representation of the value of this Formula
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mFormula;
+	}
+
+	/**
+	 * Returns a Formula instance representing the specified String value
+	 *
+	 * @param stringValue   a String value
+	 * @return return a Formula instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Formula
+	 */
+	public static Formula valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new Formula(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype formula} data type
+	 *
+	 * @param stringValue   the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype formula} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+
+		return true;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ID.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ID.java
new file mode 100644
index 0000000..d2e58f7
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ID.java
@@ -0,0 +1,87 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype ID}
+ */
+public class ID implements OdfDataType {
+
+	private String mId;
+
+	/**
+	 * Construct ID by the parsing the given string
+	 *
+	 * @param id    The String to be parsed into ID
+	 * @throws IllegalArgumentException if the given argument is not a valid ID
+	 */
+	public ID(String id) throws IllegalArgumentException {
+		if (id == null) {
+			throw new IllegalArgumentException("parameter can not be null for ID");
+		}
+
+		// validate 'ID' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#ID
+		if (!W3CSchemaType.isValid("ID", id)) {
+			throw new IllegalArgumentException("parameter is invalid for datatype ID");
+		}
+		mId = id;
+	}
+
+	/**
+	 * Returns a String Object representing this ID's value
+	 *
+	 * @return return a string representation of the value of this ID object
+	 */
+	@Override
+	public String toString() {
+		return mId;
+	}
+
+	/**
+	 * Returns an ID instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return an ID instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid ID
+	 */
+	public static ID valueOf(String stringValue) throws IllegalArgumentException {
+		return new ID(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype ID} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype ID} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return true;
+		} else {
+			return W3CSchemaType.isValid("ID", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/IDREF.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/IDREF.java
new file mode 100644
index 0000000..2eb6dbf
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/IDREF.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype IDREF}
+ */
+public class IDREF implements OdfDataType {
+
+	private String mIdRef;
+
+	/**
+	 * Construct IDREF by the parsing the given string
+	 *
+	 * @param idRef The String to be parsed into IDREF
+	 * @throws IllegalArgumentException if the given argument is not a valid IDREF
+	 */
+	public IDREF(String idRef) throws IllegalArgumentException {
+		if (idRef == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for IDREF");
+		}
+		// validate 'IDREF' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#IDREF
+		if (!W3CSchemaType.isValid("IDREF", idRef)) {
+			throw new IllegalArgumentException("parameter is invalid for datatype IDREF");
+
+		}
+		mIdRef = idRef;
+	}
+
+	/**
+	 * Returns a String Object representing this IDREF's value
+	 *
+	 * @return return a string representation of the value of this IDREF object
+	 */
+	@Override
+	public String toString() {
+		return mIdRef;
+	}
+
+	/**
+	 * Returns an IDREF instance representing the specified String value
+	 *
+	 * @param stringValue a String value
+	 * @throws IllegalArgumentException if the given argument is not a valid IDREF
+	 * @return return an IDREF instance representing stringValue
+	 */
+	public static IDREF valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new IDREF(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype IDREF} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype IDREF} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return true;
+		} else {
+			return W3CSchemaType.isValid("IDREF", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/IDREFS.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/IDREFS.java
new file mode 100644
index 0000000..91dcc06
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/IDREFS.java
@@ -0,0 +1,130 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype IDREFS}
+ */
+public class IDREFS implements OdfDataType {
+
+	private String mIdRefs;
+
+	/**
+	 * Construct IDREFS by the parsing the given IDREF list
+	 *
+	 * @param idRefList
+	 *            The String to be parsed into IDREFS
+	 * @throws IllegalArgumentException if the given argument is not a valid IDREFS
+	 */
+	public IDREFS(List<IDREF> idRefList) throws IllegalArgumentException {
+		if ((idRefList == null) || (idRefList.size() == 0)) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for IDREFS");
+		}
+		StringBuffer aRet = new StringBuffer();
+		Iterator<IDREF> aIter = idRefList.iterator();
+		while (aIter.hasNext()) {
+			if (aRet.length() > 0) {
+				aRet.append(' ');
+			}
+			String styleName = aIter.next().toString();
+			aRet.append(styleName);
+		}
+		mIdRefs = aRet.toString();
+	}
+
+	/**
+	 * Returns a String Object representing this IDREFS's value
+	 *
+	 * @return return a string representation of the value of this IDREFS object
+	 */
+	@Override
+	public String toString() {
+		return mIdRefs;
+	}
+
+	/**
+	 * Returns an IDREFS instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return an IDREFS instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid IDREFS
+	 */
+	public static IDREFS valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if ((stringValue == null) || (stringValue.length() == 0)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype IDREFS");
+		}
+
+		List<IDREF> aRet = new ArrayList<IDREF>();
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			aRet.add(new IDREF(names[i]));
+		}
+		return new IDREFS(aRet);
+	}
+
+	/**
+	 * Returns a list of IDREF from the IDREFS Object
+	 *
+	 * @return a list of IDREF
+	 */
+	public List<IDREF> getIDREFList() {
+		List<IDREF> aRet = new ArrayList<IDREF>();
+		String[] names = mIdRefs.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			aRet.add(new IDREF(names[i]));
+		}
+		return aRet;
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype IDREFS} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype IDREFS} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+		if (stringValue.length() == 0) {
+			return false;
+		}
+
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			if (!IDREF.isValid(names[i])) {
+				return false;
+			}
+		}
+		return true;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Language.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Language.java
new file mode 100644
index 0000000..c71ed1d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Language.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype language}
+ */
+public class Language implements OdfDataType {
+
+	private String mLanguage;
+
+	/**
+	 * Construct Language by the parsing the given string
+	 *
+	 * @param language
+	 *            The String to be parsed into Language
+	 * @throws IllegalArgumentException if the given argument is not a valid Language
+	 */
+	public Language(String language) throws IllegalArgumentException {
+		if (language == null) {
+			throw new IllegalArgumentException("parameter can not be null for Language");
+		}
+		if (!W3CSchemaType.isValid("language", language)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype Language");
+		}
+		mLanguage = language;
+	}
+
+	/**
+	 * Returns a String Object representing this Language's value
+	 *
+	 * @return return a string representation of the value of this Language
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mLanguage;
+	}
+
+	/**
+	 * Returns a Language instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Language instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Language
+	 */
+	public static Language valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new Language(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype language} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype language} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return true;
+		} else {
+			return W3CSchemaType.isValid("language", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/LanguageCode.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/LanguageCode.java
new file mode 100644
index 0000000..2d3b87a
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/LanguageCode.java
@@ -0,0 +1,94 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype languageCode}
+ */
+public class LanguageCode implements OdfDataType {
+
+	private String mLanguageCode;
+	private static final Pattern languageCodePattern = Pattern.compile("^[A-Za-z]{1,8}$");
+	
+	/**
+	 * Construct LanguageCode by the parsing the given string
+	 *
+	 * @param languageCode The String to be parsed into LanguageCode
+	 * @throws IllegalArgumentException if the given argument is not a valid langageCode
+	 */
+	public LanguageCode(String languageCode) throws IllegalArgumentException {
+		if (!isValid(languageCode)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype LanguageCode");
+		}
+
+		// validate 'LanguageCode' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#token
+		if (!W3CSchemaType.isValid("token", languageCode)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype LanguageCode");
+		}
+		mLanguageCode = languageCode;
+	}
+
+	/**
+	 * Returns a String Object representing this LanguageCode's value
+	 *
+	 * @return return a string representation of the value of this LanguageCode
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mLanguageCode;
+	}
+
+	/**
+	 * Returns a LanguageCode instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a LanguageCode instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid LanguageCode
+	 */
+	public static LanguageCode valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new LanguageCode(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype languageCode} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype languageCode} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null || !languageCodePattern.matcher(stringValue).matches()) {
+			return true;
+		} else {
+			return W3CSchemaType.isValid("token", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Length.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Length.java
new file mode 100644
index 0000000..7625e39
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Length.java
@@ -0,0 +1,284 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.logging.Logger;
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype length}
+ */
+public class Length implements OdfDataType {
+
+	private static final Logger LOG = Logger.getLogger(Length.class.getName());
+
+	/** Measurement units for ODF datatype length
+	 */
+	public enum Unit {
+//		TWIP(0.0176389241667372, "twip"), // TWentieth of an Inch Point
+
+		POINT(0.352777778, "pt"), // Pica Point
+		PIXEL(0.28, "px"), // Pixel (see http://www.w3.org/TR/2001/REC-xsl-20011015/slice5.html#pixels)
+		//		DIDOT_POINT(0.375972222, "dpt"), // Didot point (or Point typographique) after the French typographer Firmin Didot (1764-1836).
+		MILLIMETER(1.0, "mm"), // see http://www.w3.org/TR/2001/REC-xsl-20011015/sliceD.html#ISO31
+		PICA(4.2176, "pc"), // 1 Inch = 6 Pica = 72 Pica Point
+		CENTIMETER(10.0, "cm"), // see http://www.w3.org/TR/2001/REC-xsl-20011015/sliceD.html#ISO31
+		INCH(25.399, "in");
+//		FEET(304.8, "ft"),
+//		METER(1000.0, "m"),
+//		KILOMETER(1000000.0, "km"),
+//		MILES(1609344.0, "mi");
+		private final double mUnitInMillimiter;
+		private final String mUnitAbbreviation;
+
+		Unit(double unitInMillimiter, String unitAbbreviation) {
+			this.mUnitInMillimiter = unitInMillimiter;
+			this.mUnitAbbreviation = unitAbbreviation;
+		}
+
+		/** 
+		 * @return the lenght of the Unit in Millimeter
+		 */
+		public double unitInMillimiter() {
+			return mUnitInMillimiter;
+		}
+
+		/** @return the abbreviation of the Unit (e.g. cm for Centimeter) */
+		public String abbr() {
+			return mUnitAbbreviation;
+		}
+	}
+	private String mLengthString = null;
+	private static final Pattern lengthPattern = Pattern.compile("^-?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))$");
+	
+	/**
+	 * Construct Length by the parsing the given string
+	 *
+	 * @param length
+	 *            The String to be parsed into Length
+	 * @throws NumberFormatException if the given argument is not a valid Length
+	 */
+	public Length(String length) throws NumberFormatException {
+		if (!isValid(length)) {
+			throw new NumberFormatException("parameter is invalid for datatype Length");
+		}
+		mLengthString = length;
+	}
+
+	/**
+	 * Check if the specified String instance is a valid {@odf.datatype length} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype length} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!lengthPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	/**
+	 * Returns the Unit of the given length.
+	 * @param length the <code>Unit</code> should be obtained from
+	 * @return Returns a <code>Unit</code> object representing the specified Length unit.
+	 */
+	public static Unit parseUnit(String length) {
+		Unit lengthUnit = null;
+		if (length == null) {
+			throw new NumberFormatException("The input length should not be null!");
+		} else {
+			boolean identifiedInput = false;
+			for (Unit unit : Unit.values()) {
+				if (length.contains(unit.abbr())) {
+					lengthUnit = unit;
+					identifiedInput = true;
+					break;
+				}
+			}
+			if (!identifiedInput) {
+				throw new NumberFormatException("The input length " + length + " has no valid Unit!");
+			}
+		}
+		return lengthUnit;
+	}
+
+	/**
+	 * Returns the value of the given length as int.
+	 * @param length the <code>int</code> value should be obtained from
+	 * @return Returns a <code>int</code> value representing the specified Length value.
+	 */
+	public static int parseInt(String length) {
+		return (int) parseDouble(length, null);
+	}
+
+	/**
+	 * Returns the value of the given length as int.
+	 * @param length the <code>int</code> value should be obtained from
+	 * @param destinationUnit    The unit to be converted to
+	 * @return Returns a <code>int</code> value representing the specified Length value.
+	 */
+	public static int parseInt(String length, Unit destinationUnit) {
+		return (int) parseDouble(length, destinationUnit);
+	}
+
+	/**
+	 * Returns the value of the given length as long.
+	 * @param length the <code>long</code> value should be obtained from
+	 * @return Returns a <code>long</code> value representing the specified Length value.
+	 */
+	public static long parseLong(String length) {
+		return (long) parseDouble(length, null);
+	}
+
+	/**
+	 * Maps the a length string to a different unit
+	 *
+	 * @param length		     The value to be mapped
+	 * @param destinationUnit    The unit to be converted to
+	 * @return The converted value without unit suffix as Double
+	 */
+	public static long parseLong(String length, Unit destinationUnit) {
+		return (long) parseDouble(length, destinationUnit);
+	}
+
+	/**
+	 * Returns the value of the given length as double.
+	 * @param length the <code>double</code> value should be obtained from
+	 * @return Returns a <code>double</code> value representing the specified Length value.
+	 */
+	public static double parseDouble(String length) {
+		return parseDouble(length, null);
+	}
+
+
+	/**
+	 * Maps the a length string to a different unit
+	 *
+	 * @param length		     The value to be mapped
+	 * @param destinationUnit    The unit to be converted to
+	 * @return The converted value without unit suffix as double
+	 */
+	public static double parseDouble(String length, Unit destinationUnit) {
+		double newValue = 0;
+		if (length != null) {			
+			double roundingFactor = 10000.0;
+			boolean identifiedInput = false;
+
+			for (Unit unit : Unit.values()) {
+				if (length.contains(unit.abbr())) {
+					Double value = Double.valueOf(length.substring(0, length.indexOf(unit.abbr())));
+					// if no destination unit was given the unit remains the same
+					if (destinationUnit != null) {
+						// using roundfactor proved to be more precise when used with Java XSLT processor
+						newValue = Math.round(roundingFactor * value / destinationUnit.unitInMillimiter() * unit.mUnitInMillimiter) / roundingFactor;
+					}else{
+						destinationUnit = unit;
+					}
+					identifiedInput = true;
+					break;
+				}
+			}
+			if (!identifiedInput) {
+				LOG.warning("The unit " + length + " could not be transformed to " + destinationUnit.toString() + "!");
+			}
+		} else {
+			LOG.warning("The input length should not be null!");
+		}
+		return newValue;
+	}
+
+
+	/**
+	 * @param destinationUnit    The unit to be converted to
+	 * @return  The converted value as result
+	 */
+	public String mapToUnit(Unit destinationUnit) {
+		return mapToUnit(mLengthString, destinationUnit);
+	}
+
+	/**
+	 * Maps the a length string to a different unit
+	 *
+	 * @param length		     The value to be mapped
+	 * @param destinationUnit    The unit to be converted to
+	 * @return The converted value with unit suffix as String
+	 */
+	public static String mapToUnit(String length, Unit destinationUnit) {
+	    String newLength = null;
+		double newValue = 0;
+		if (length != null) {
+			double roundingFactor = 10000.0;
+			boolean identifiedInput = false;
+
+			for (Unit unit : Unit.values()) {
+				if (length.contains(unit.abbr())) {
+					Double value = Double.valueOf(length.substring(0, length.indexOf(unit.abbr())));
+					// if no destination unit was given the unit remains the same
+					if (destinationUnit != null) {
+						// using roundfactor proved to be more precise when used with Java XSLT processor
+						newValue = Math.round(roundingFactor * value / destinationUnit.unitInMillimiter() * unit.mUnitInMillimiter) / roundingFactor;
+					}else{
+						destinationUnit = unit;
+					}
+					newLength = String.valueOf(newValue) + destinationUnit.abbr();
+					identifiedInput = true;
+					break;
+				}
+			}
+			if (!identifiedInput) {
+				LOG.warning("The unit " + length + " could not be transformed to " + destinationUnit.toString() + "!");
+			}
+		} else {
+			LOG.warning("The input length should not be null!");
+		}
+		return newLength;
+	}
+
+
+
+	/**
+	 * Returns a Length instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Length instance representing stringValue
+	 * @throws NumberFormatException if the given argument is not a valid Length
+	 */
+	public static Length valueOf(String stringValue)
+			throws NumberFormatException {
+		return new Length(stringValue);
+	}
+
+	/**
+	 * Returns a String Object representing this Length's value
+	 *
+	 * @return return a string representation of the value of this Length object
+	 */
+	@Override
+	public String toString() {
+		return mLengthString;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NCName.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NCName.java
new file mode 100644
index 0000000..eb943da
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NCName.java
@@ -0,0 +1,88 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype NCName}
+ */
+public class NCName implements OdfDataType {
+
+	private String mName;
+
+	/**
+	 * Construct NCName by the parsing the given string
+	 *
+	 * @param name The String to be parsed into NCName
+	 *
+	 * @throws IllegalArgumentException if the given argument is not a valid NCName
+	 */
+	public NCName(String name) throws IllegalArgumentException {
+		if (name == null) {
+			throw new IllegalArgumentException("parameter can not be null for NCName");
+		}
+		// validate 'NCName' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#NCName
+		if (!W3CSchemaType.isValid("NCName", name)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype NCName");
+		}
+		mName = name;
+	}
+
+	/**
+	 * Returns a String Object representing this NCName value
+	 *
+	 * @return return a string representation of the value of this NCName object
+	 */
+	@Override
+	public String toString() {
+		return mName;
+	}
+
+	/**
+	 * Returns a NCName instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a NCName instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid NCName
+	 */
+	public static NCName valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new NCName(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype NCName} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype NCName} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return true;
+		} else {
+			return W3CSchemaType.isValid("NCName", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NamespacedToken.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NamespacedToken.java
new file mode 100644
index 0000000..b2e04d8
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NamespacedToken.java
@@ -0,0 +1,90 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype namespacedToken}
+ */
+public class NamespacedToken implements OdfDataType {
+
+	private String mNamespacedToken;
+	private static final Pattern namespacedTokenPattern = Pattern.compile("^[0-9a-zA-Z_]+:[0-9a-zA-Z._\\-]+$");
+	
+	/**
+	 * Construct NamespacedToken by the parsing the given string
+	 *
+	 * @param namespacedToken
+	 *            The String to be parsed into NamespacedToken
+	 * @throws IllegalArgumentException if the given argument is not a valid NamespacedToken
+	 */
+	public NamespacedToken(String namespacedToken) throws IllegalArgumentException {
+		if (!isValid(namespacedToken)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype NamespacedToken");
+		}
+		mNamespacedToken = namespacedToken;
+	}
+
+	/**
+	 * Returns a String Object representing this NamespacedToken's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         NamespacedToken object
+	 */
+	@Override
+	public String toString() {
+		return mNamespacedToken;
+	}
+
+	/**
+	 * Returns a NamespacedToken instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a NamespacedToken instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid NamespacedToken
+	 */
+	public static NamespacedToken valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new NamespacedToken(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype namespacedToken} data
+	 * type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype namespacedToken} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!namespacedTokenPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeDecimal.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeDecimal.java
new file mode 100644
index 0000000..9da45bc
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeDecimal.java
@@ -0,0 +1,95 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.odfdom.type;
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype nonNegativeDecimal}
+ */
+public class NonNegativeDecimal implements OdfDataType {
+	private double mN;
+
+	/**
+	 * Allocates a NonNegativeDecimal object representing the n argument
+	 * 
+	 * @param n
+	 *            the value of the NonNegativeDecimal
+	 * @throws IllegalArgumentException
+	 *             if the given argument is not a valid NonNegativeDecimal
+	 */
+	public NonNegativeDecimal(double n) throws IllegalArgumentException {
+		if (n < 0)
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype NonNegativeDecimal");
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this NonNegativeDecimal's value
+	 * 
+	 * @return return a string representation of the value of this
+	 *         NonNegativeDecimal object
+	 */
+	@Override
+	public String toString() {
+		return Double.toString(mN);
+	}
+
+	/**
+	 * Returns a NonNegativeDecimal instance representing the specified String
+	 * value
+	 * 
+	 * @param stringValue
+	 *            a String value
+	 * @return return a NonNegativeDecimal instance representing stringValue
+	 * @throws IllegalArgumentException
+	 *             if the given argument is not a valid NonNegativeDecimal
+	 */
+	public static NonNegativeDecimal valueOf(String stringValue)
+			throws IllegalArgumentException {
+		String aTmp = stringValue.trim();
+		double n = Double.valueOf(aTmp);
+		return new NonNegativeDecimal(n);
+	}
+
+	/**
+	 * Returns the value of this NonNegativeDecimal object as a double primitive
+	 * 
+	 * @return the primitive double value of this NonNegativeDecimal object.
+	 */
+	public double doubleValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Double instance is a valid {@odf.datatype nonNegativeDecimal} data
+	 * type
+	 * 
+	 * @param doubleValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype nonNegativeDecimal}
+	 *         data type false otherwise
+	 */
+	public static boolean isValid(Double doubleValue) {
+		if ((doubleValue != null) && (doubleValue.doubleValue() >= 0)) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeInteger.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeInteger.java
new file mode 100644
index 0000000..794f404
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeInteger.java
@@ -0,0 +1,100 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype nonNegativeInteger}
+ */
+public class NonNegativeInteger implements OdfDataType {
+
+	private int mN;
+
+	/**
+	 * Allocates a NonNegativeInteger object representing the n argument
+	 *
+	 * @param n
+	 *            the value of the NonNegativeInteger
+	 * @throws NumberFormatException if the given argument is not a valid NonNegativeInteger
+	 */
+	public NonNegativeInteger(int n) throws NumberFormatException {
+		if (n < 0) {
+			throw new NumberFormatException("parameter is invalid for datatype NonNegativeInteger");
+		}
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this NonNegativeInteger's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         NonNegativeInteger object
+	 */
+	@Override
+	public String toString() {
+		return Integer.toString(mN);
+	}
+
+	/**
+	 * Returns a NonNegativeInteger instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a NonNegativeInteger instance representing stringValue
+	 * @throws NumberFormatException if the given argument is not a valid NonNegativeInteger
+	 */
+	public static NonNegativeInteger valueOf(String stringValue)
+			throws NumberFormatException {
+		String aTmp = stringValue.trim();
+		int n = Integer.valueOf(aTmp);
+		return new NonNegativeInteger(n);
+	}
+
+	/**
+	 * Returns the value of this NonNegativeInteger object as a int primitive
+	 *
+	 * @return the primitive int value of this NonNegativeInteger object.
+	 */
+	public int intValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Integer instance is a valid {@odf.datatype nonNegativeInteger}
+	 * data type
+	 *
+	 * @param integerValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype nonNegativeInteger}
+	 *         data type false otherwise
+	 */
+	public static boolean isValid(Integer integerValue) {
+		if (integerValue == null) {
+			return false;
+		}
+		if (integerValue.intValue() < 0) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeLength.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeLength.java
new file mode 100644
index 0000000..577e936
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativeLength.java
@@ -0,0 +1,78 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype nonNegativeLength}
+ */
+public class NonNegativeLength extends Length {
+
+
+	private static final Pattern nonNegativeLengthPattern = Pattern.compile("^?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))$");
+	/**
+	 * Construct NonNegativeLength by the parsing the given string
+	 *
+	 * @param length
+	 *            The String to be parsed into NonNegativeLength
+	 * @throws NumberFormatException if the given argument is not a valid NonNegativeLength
+	 */
+	public NonNegativeLength(String length) throws NumberFormatException {
+		super(length);
+		if (!isValid(length)){
+			throw new NumberFormatException(
+					"parameter is invalid for datatype NonNegativeLength");
+		}
+	}
+
+	/**
+	 * Returns a NonNegativeLength instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a NonNegativeLength instance representing stringValue
+	 * @throws NumberFormatException if the given argument is not a valid NonNegativeLength
+	 */
+	public static NonNegativeLength valueOf(String stringValue)
+			throws NumberFormatException {
+		return new NonNegativeLength(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype nonNegativeLength} data
+	 * type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype nonNegativeLength} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!nonNegativeLengthPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativePixelLength.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativePixelLength.java
new file mode 100644
index 0000000..7612de3
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/NonNegativePixelLength.java
@@ -0,0 +1,88 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype nonNegativePixelLength}
+ */
+public class NonNegativePixelLength extends Length {
+
+	private String mLength;
+	private static final Pattern pixelLengthPattern = Pattern.compile("^([0-9]+(\\.[0-9]*)?|\\.[0-9]+)(px)$");
+
+	/**
+	 * Construct NonNegativePixelLength by the parsing the given string
+	 *
+	 * @param pixelLength
+	 *            The String to be parsed into NonNegativePixelLength
+	 * @throws NumberFormatException if the given argument is not a valid NonNegativePixelLength
+	 */
+	public NonNegativePixelLength(String pixelLength) throws NumberFormatException {
+		super(pixelLength);
+		if (!isValid(pixelLength)) {
+			throw new NumberFormatException("parameter is invalid for datatype NonNegativePixelLength");
+		}
+	}
+
+	/**
+	 * Returns a String Object representing this NonNegativePixelLength's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         NonNegativePixelLength object
+	 */
+	@Override
+	public String toString() {
+		return mLength;
+	}
+
+	/**
+	 * Returns a NonNegativePixelLength instance representing the specified
+	 * String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a NonNegativePixelLength instance representing stringValue
+	 * @throws NumberFormatException if the given argument is not a valid NonNegativePixelLength
+	 */
+	public static NonNegativePixelLength valueOf(String stringValue)
+			throws NumberFormatException {
+		return new NonNegativePixelLength(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype nonNegativePixelLength}
+	 * data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype nonNegativePixelLength}
+	 *         data type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!pixelLengthPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/OdfDataType.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/OdfDataType.java
new file mode 100644
index 0000000..15a534f
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/OdfDataType.java
@@ -0,0 +1,30 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.odftoolkit.odfdom.type;
+
+/**
+ * An interface marking a data type to be used as an ODF datatype
+ */
+public interface OdfDataType {
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/OdfFieldDataType.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/OdfFieldDataType.java
new file mode 100644
index 0000000..acef160
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/OdfFieldDataType.java
@@ -0,0 +1,30 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.odftoolkit.odfdom.type;
+
+/**
+ * An interface marking a data type to be used in an ODF field
+ */
+public interface OdfFieldDataType extends OdfDataType {
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Percent.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Percent.java
new file mode 100644
index 0000000..108b1f4
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Percent.java
@@ -0,0 +1,118 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype percent}
+ */
+public class Percent implements OdfFieldDataType, OdfDataType {
+
+	private double mN;
+	private static final Pattern percentPattern = Pattern.compile("^-?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)%$");
+	
+	/**
+	 * Allocates a Percent object representing the n argument
+	 *
+	 * @param n
+	 *            the value of the Percent
+	 * @throws IllegalArgumentException if the given argument is not a valid Percent
+	 */
+	public Percent(double n) throws IllegalArgumentException {
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this Percent's value
+	 *
+	 * @return return a string representation of the value of this Percent
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return Double.toString(mN * 100) + "%";
+	}
+
+	/**
+	 * Returns a Percent instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Percent instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Percent
+	 */
+	public static Percent valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if ((stringValue == null) || (stringValue.length() == 0)) {
+			return new Percent(0.0);
+		}
+
+		int n = stringValue.indexOf("%");
+		if (n != -1) {
+			return new Percent(Double.valueOf(stringValue.substring(0, n)).doubleValue() / 100);
+		} else {
+			throw new IllegalArgumentException("parameter is invalid for datatype Percent");
+		}
+	}
+
+	/**
+	 * Returns the value of this Percent object as a double primitive
+	 *
+	 * @return the primitive double value of this Percent object.
+	 */
+	public double doubleValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Double instance is a valid {@odf.datatype percent} data type
+	 *
+	 * @param doubleValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype percent} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(Double doubleValue) {
+		if (doubleValue == null) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+	
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype percent} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype percent} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!percentPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Point3D.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Point3D.java
new file mode 100644
index 0000000..527c328
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Point3D.java
@@ -0,0 +1,87 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype point3D}
+ */
+public class Point3D implements OdfDataType {
+
+	private String mPoint3D;
+	private static final Pattern point3DPattern = Pattern.compile("^\\([ ]*-?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\\)$");
+	
+
+	/**
+	 * Construct Point3D by the parsing the given string
+	 *
+	 * @param point3D
+	 *            The String to be parsed into Point3D
+	 * @throws IllegalArgumentException if the given argument is not a valid Point3D
+	 */
+	public Point3D(String point3D) throws IllegalArgumentException {
+		if (!isValid(point3D)) {
+			throw new IllegalArgumentException("parameter is invalid for datatype Point3D");
+		}
+		mPoint3D = point3D;
+	}
+
+	/**
+	 * Returns a String Object representing this Point3D's value
+	 *
+	 * @return return a string representation of the value of this Point3D
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mPoint3D;
+	}
+
+	/**
+	 * Returns a Point3D instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Point3D instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Point3D
+	 */
+	public static Point3D valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new Point3D(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype point3D} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype point3D} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!point3DPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Points.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Points.java
new file mode 100644
index 0000000..36e59fd
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Points.java
@@ -0,0 +1,85 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype points}
+ */
+public class Points implements OdfDataType {
+
+	private String mPoints;
+	private static final Pattern pointsPattern = Pattern.compile("^-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*$");
+	
+	/**
+	 * Construct Points by the parsing the given string
+	 *
+	 * @param points The String to be parsed into Points
+	 *
+	 * @throws IllegalArgumentException if the given argument is not a valid Pointes
+	 */
+	public Points(String points) throws IllegalArgumentException {
+		if (!isValid(points)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype Points");
+		}
+		mPoints = points;
+	}
+
+	/**
+	 * Returns a String Object representing this Points's value
+	 *
+	 * @return return a string representation of the value of this Points object
+	 */
+	@Override
+	public String toString() {
+		return mPoints;
+	}
+
+	/**
+	 * Returns a Points instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Points instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Pointes
+	 */
+	public static Points valueOf(String stringValue) throws IllegalArgumentException {
+		return new Points(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype points} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype points} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!pointsPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/PositiveInteger.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/PositiveInteger.java
new file mode 100644
index 0000000..08a38db
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/PositiveInteger.java
@@ -0,0 +1,101 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype positiveInteger}
+ */
+public class PositiveInteger implements OdfDataType {
+
+	int mN;
+
+	/**
+	 * Allocates a PositiveInteger object representing the n argument
+	 *
+	 * @param n
+	 *            the value of the PositiveInteger
+	 * @throws NumberFormatException if the given argument is not a valid PostitiveLength
+	 */
+	public PositiveInteger(int n) throws NumberFormatException {
+		if (n < 1) {
+			throw new NumberFormatException(
+					"parameter is invalid for datatype PositiveInteger");
+		}
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this PositiveInteger's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         PositiveInteger object
+	 */
+	@Override
+	public String toString() {
+		return Integer.toString(mN);
+	}
+
+	/**
+	 * Returns a PositiveInteger instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a PositiveInteger instance representing stringValue
+	 * @throws NumberFormatException if the given argument is not a valid PostitiveLength
+	 */
+	public static PositiveInteger valueOf(String stringValue)
+			throws NumberFormatException {
+		String aTmp = stringValue.trim();
+		int n = Integer.valueOf(aTmp);
+		return new PositiveInteger(n);
+	}
+
+	/**
+	 * Returns the value of this PositiveInteger object as a int primitive
+	 *
+	 * @return the primitive int value of this PositiveInteger object.
+	 */
+	public int intValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Integer instance is a valid {@odf.datatype positiveInteger} data
+	 * type
+	 *
+	 * @param integerValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype positiveInteger} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(Integer integerValue) {
+		if (integerValue == null) {
+			return false;
+		}
+		if (integerValue.intValue() < 1) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/PositiveLength.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/PositiveLength.java
new file mode 100644
index 0000000..fc6da11
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/PositiveLength.java
@@ -0,0 +1,76 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype positiveLength}
+ */
+public class PositiveLength extends Length {
+	private static final Pattern positiveLengthPattern = Pattern.compile("^([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))$");
+	
+	/**
+	 * Construct PositiveLength by the parsing the given string
+	 *
+	 * @param length
+	 *            The String to be parsed into PositiveLength
+	 * @throws NumberFormatException if the given argument is not a valid PostitiveLength
+	 */
+	public PositiveLength(String length) throws NumberFormatException {
+		super(length);
+		if (!isValid(length)) {
+			throw new NumberFormatException(
+					"parameter is invalid for datatype PositiveLength");
+		}
+	}
+
+
+	/**
+	 * Returns a PositiveLength instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a PositiveLength instance representing stringValue
+	 * @throws NumberFormatException if the given argument is not a valid PostitiveLength
+	 */
+	public static PositiveLength valueOf(String stringValue)
+			throws NumberFormatException {
+		return new PositiveLength(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype positiveLength} data
+	 * type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype positiveLength} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!positiveLengthPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/RelativeLength.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/RelativeLength.java
new file mode 100644
index 0000000..fd307a9
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/RelativeLength.java
@@ -0,0 +1,89 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype relativeLength}
+ */
+public class RelativeLength implements OdfDataType {
+
+	private String mLength;
+	private static final Pattern relativeLengthPattern = Pattern.compile("^[0-9]+\\*$");
+	
+	/**
+	 * Construct RelativeLength by the parsing the given string
+	 *
+	 * @param length
+	 *            The String to be parsed into RelativeLength
+	 * @throws NumberFormatException if the given argument is not a valid RelativeLength
+	 */
+	public RelativeLength(String length) throws NumberFormatException {
+		if (!isValid(length)) {
+			throw new NumberFormatException(
+					"parameter is invalid for datatype RelativeLength");
+		}
+		mLength = length;
+	}
+
+	/**
+	 * Returns a String Object representing this RelativeLength's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         RelativeLength object
+	 */
+	@Override
+	public String toString() {
+		return mLength;
+	}
+
+	/**
+	 * Returns an RelativeLength instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return an RelativeLength instance representing stringValue
+	 */
+	public static RelativeLength valueOf(String stringValue)
+			throws NumberFormatException {
+		return new RelativeLength(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype relativeLength} data
+	 * type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype relativeLength} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!relativeLengthPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/SafeCURIE.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/SafeCURIE.java
new file mode 100644
index 0000000..4992acb
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/SafeCURIE.java
@@ -0,0 +1,86 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype SafeCURIE}
+ */
+public class SafeCURIE implements OdfDataType {
+
+	private String mCURIE;
+	private static final Pattern safeCURIEPattern = Pattern.compile("^\\[(([\\i-[:]][\\c-[:]]*)?:)?.+\\]$");
+	
+	/**
+	 * Construct SafeCURIE by the parsing the given string
+	 *
+	 * @param curie
+	 *            The String to be parsed into SafeCURIE
+	 * @throws IllegalArgumentException if the given argument is not a valid SafeCURIE
+	 */
+	public SafeCURIE(String curie) throws IllegalArgumentException {
+		if (!isValid(curie)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype SafeCURIE");
+		}
+		mCURIE = curie;
+	}
+
+	/**
+	 * Returns a String Object representing this SafeCURIE's value
+	 *
+	 * @return return a string representation of the value of this SafeCURIE
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mCURIE;
+	}
+
+	/**
+	 * Returns a SafeCURIE instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a SafeCURIE instance representing stringValue
+	 */
+	public static SafeCURIE valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new SafeCURIE(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype SafeCURIE} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype SafeCURIE} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!safeCURIEPattern.matcher(stringValue).matches() || stringValue.length() < 3)) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ScriptCode.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ScriptCode.java
new file mode 100644
index 0000000..8bd1c3d
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ScriptCode.java
@@ -0,0 +1,93 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype scriptCode}
+ */
+public class ScriptCode implements OdfDataType {
+
+    private String mScriptCode;
+    private static final Pattern scriptCodePattern = Pattern.compile("^[A-Za-z0-9]{1,8}$");
+	
+    /**
+     * Construct ScriptCode by the parsing the given string
+     *
+     * @param scriptCode
+     *            The String to be parsed into ScriptCode
+     * @throws IllegalArgumentException if the given argument is not a valid ScriptCode
+     */
+    public ScriptCode(String scriptCode) throws IllegalArgumentException {
+        if (!isValid(scriptCode)) {
+            throw new IllegalArgumentException(
+                    "parameter can not be null for ScriptCode");
+        }
+        // validate 'token' type which is defined in W3C schema
+        // http://www.w3.org/TR/xmlschema-2/#token
+        if (!W3CSchemaType.isValid("token", scriptCode)) {
+            throw new IllegalArgumentException(
+                    "parameter is invalid for datatype ScriptCode");
+        }
+        mScriptCode = scriptCode;
+    }
+
+    /**
+     * Returns a String Object representing this ScriptCode's value
+     *
+     * @return return a string representation of the value of this ScriptCode
+     *         object
+     */
+    @Override
+    public String toString() {
+        return mScriptCode;
+    }
+
+    /**
+     * Returns a ScriptCode instance representing the specified String value
+     *
+     * @param stringValue
+     *            a String value
+     * @return return a ScriptCode instance representing stringValue
+     * @throws IllegalArgumentException if the given argument is not a valid ScriptCode
+     */
+    public static ScriptCode valueOf(String stringValue)
+            throws IllegalArgumentException {
+        return new ScriptCode(stringValue);
+    }
+
+    /**
+     * check if the specified String instance is a valid {@odf.datatype scriptCode} data type
+     *
+     * @param stringValue
+     *            the value to be tested
+     * @return true if the value of argument is valid for {@odf.datatype scriptCode} data type
+     *         false otherwise
+     */
+    public static boolean isValid(String stringValue) {
+        if (stringValue == null || !scriptCodePattern.matcher(stringValue).matches()) {
+            return false;
+        } else {
+            return W3CSchemaType.isValid("token", stringValue);
+        }
+    }
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/SignedZeroToHundredPercent.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/SignedZeroToHundredPercent.java
new file mode 100644
index 0000000..639e66e
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/SignedZeroToHundredPercent.java
@@ -0,0 +1,117 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype signedZeroToHundredPercent}
+ */
+public class SignedZeroToHundredPercent implements OdfDataType{
+	private double mN;
+	private static final Pattern signedZeroToHundredPercentPattern = Pattern.compile("^-?([0-9]?[0-9](\\.[0-9]*)?|100(\\.0*)?|\\.[0-9]+)%$");
+	
+	/**
+	 * Allocates a SignedZeroToHundredPercent object representing the n argument
+	 *
+	 * @param n
+	 *            the value of the SignedZeroToHundredPercent
+	 * @throws IllegalArgumentException if the given argument is not a valid SignedZeroToHundredPercent
+	 */
+	public SignedZeroToHundredPercent(double n) throws IllegalArgumentException {
+		if( n > 1 || n < -1)
+			throw new IllegalArgumentException("parameter is invalid for datatype SignedZeroToHundredPercent");
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this SignedZeroToHundredPercent's value
+	 *
+	 * @return return a string representation of the value of this SignedZeroToHundredPercent
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return Double.toString(mN * 100) + "%";
+	}
+
+	/**
+	 * Returns a SignedZeroToHundredPercent instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a SignedZeroToHundredPercent instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid SignedZeroToHundredPercent
+	 */
+	public static SignedZeroToHundredPercent valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if ((stringValue == null) || (stringValue.length() == 0)) {
+			return new SignedZeroToHundredPercent(0.0);
+		}
+
+		int n = stringValue.indexOf("%");
+		if (n != -1) {
+			return new SignedZeroToHundredPercent(Double.valueOf(stringValue.substring(0, n)).doubleValue() / 100);
+		} else {
+			throw new IllegalArgumentException("parameter is invalid for datatype SignedZeroToHundredPercent");
+		}
+	}
+
+	/**
+	 * Returns the value of this SignedZeroToHundredPercent object as a double primitive
+	 *
+	 * @return the primitive double value of this SignedZeroToHundredPercent object.
+	 */
+	public double doubleValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Double instance is a valid {@odf.datatype signedZeroToHundredPercent} data type
+	 *
+	 * @param doubleValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype signedZeroToHundredPercent} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(Double doubleValue) {
+		if ( (doubleValue != null) && (doubleValue.doubleValue() <= 1) && 
+				(doubleValue.doubleValue() >= -1)) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype 'signedZeroToHundredPercent'} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype 'signedZeroToHundredPercent'} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!signedZeroToHundredPercentPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleName.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleName.java
new file mode 100644
index 0000000..107bc11
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleName.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype styleName}
+ */
+public class StyleName implements OdfDataType {
+
+	private String mStyleName;
+
+	/**
+	 * Construct StyleName by the parsing the given string
+	 *
+	 * @param styleName The String to be parsed into StyleName
+	 * @throws IllegalArgumentException If the given StyleName is null or not valid.
+	 */
+	public StyleName(String styleName) throws IllegalArgumentException {
+		if (styleName == null) {
+			throw new IllegalArgumentException("A StyleName have to be set and can not be 'null'!");
+		}
+
+		// validate 'NCName' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#NCName
+		if (W3CSchemaType.isValid("NCName", styleName)) {
+			mStyleName = styleName;
+		} else {
+			throw new IllegalArgumentException("The given StyleName " + styleName + " is invalid!");
+		}
+	}
+
+	/**
+	 * Returns a String Object representing this StyleName's value
+	 *
+	 * @return a string representation of the value of this StyleName object
+	 */
+	@Override
+	public String toString() {
+		return mStyleName;
+	}
+
+	/**
+	 * Returns StyleName which is represented by the specified String value
+	 *
+	 * @param styleName a String value which can construct an StyleName
+	 * @return a String representation of an StyleName instance constructed by
+	 *         styleName
+	 * @throws IllegalArgumentException If the given StyleName is null or not valid.
+	 */
+	public static StyleName valueOf(String styleName) throws IllegalArgumentException {
+		return new StyleName(styleName);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype styleName} data type
+	 *
+	 * @param styleName
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype styleName} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String styleName) {
+		if (styleName == null) {
+			return false;
+		} else {
+			return W3CSchemaType.isValid("NCName", styleName);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleNameRef.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleNameRef.java
new file mode 100644
index 0000000..1e5e368
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleNameRef.java
@@ -0,0 +1,95 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype styleNameRef}
+ */
+public class StyleNameRef implements OdfDataType {
+
+	String mStyleNameRef;
+
+	/**
+	 * Construct StyleNameRef by the parsing the given string
+	 *
+	 * @param styleNameRef The String to be parsed into StyleNameRef
+	 * @throws IllegalArgumentException if the given argument is not a valid StyleNameRef
+	 */
+	public StyleNameRef(String styleNameRef) throws IllegalArgumentException {
+
+		if (styleNameRef == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for StyleNameRef");
+		}
+		if (styleNameRef.length() == 0) {
+			mStyleNameRef = styleNameRef;
+			return;
+		}
+		// validate 'NCName' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#NCName
+		if (!W3CSchemaType.isValid("NCName", styleNameRef)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype StyleNameRef");
+		}
+		mStyleNameRef = styleNameRef;
+	}
+
+	/**
+	 * Returns a String Object representing this StyleNameRef's value
+	 *
+	 * @return return a string representation of the value of this StyleNameRef
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mStyleNameRef;
+	}
+
+	/**
+	 * Returns a StyleNameRef instance representing the specified String value
+	 *
+	 * @param stringValue a String value which can construct an OdfStyleNameRef
+	 * @return a StyleNameRef instance representing stringValue
+	 * @throws IllegalArgumentException
+	 */
+	public static StyleNameRef valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new StyleNameRef(stringValue);
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype styleNameRef} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype styleNameRef} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		} else if (stringValue.length() == 0) {
+			return true;
+		} else {
+			return W3CSchemaType.isValid("NCName", stringValue);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleNameRefs.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleNameRefs.java
new file mode 100644
index 0000000..a4aadba
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/StyleNameRefs.java
@@ -0,0 +1,132 @@
+/************************************************************************
+ *
+ * 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.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype styleNameRefs}
+ */
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class StyleNameRefs implements OdfDataType {
+
+	private String mStyleNames;
+
+	/**
+	 * Construct StyleNameRefs by the parsing the given StyleName list
+	 *
+	 * @param styleNames The String to be parsed into StyleNameRefs
+	 *
+	 * @throws IllegalArgumentException if the given argument is not a valid StyleNameRefs
+	 */
+	public StyleNameRefs(List<StyleName> styleNames) throws IllegalArgumentException {
+		if (styleNames == null) {
+			throw new IllegalArgumentException("parameter can not be null for StyleNameRefs");
+		}
+		StringBuffer aRet = new StringBuffer();
+		Iterator<StyleName> aIter = styleNames.iterator();
+		while (aIter.hasNext()) {
+			if (aRet.length() > 0) {
+				aRet.append(' ');
+			}
+			String aStyleName = aIter.next().toString();
+			aRet.append(aStyleName);
+		}
+		mStyleNames = aRet.toString();
+	}
+
+	/**
+	 * Returns a String Object representing this StyleNameRefs's value
+	 *
+	 * @return return a string representation of the value of this StyleNameRefs
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mStyleNames;
+	}
+
+	/**
+	 * Returns a StyleNameRefs instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a StyleNameRefs instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid StyleNameRefs
+	 */
+	public static StyleNameRefs valueOf(String stringValue) throws IllegalArgumentException {
+		if (stringValue == null) {
+			throw new IllegalArgumentException("parameter is invalid for datatype StyleNameRefs");
+		}
+
+		List<StyleName> aRet = new ArrayList<StyleName>();
+		if (stringValue.length() > 0) {
+			String[] names = stringValue.split(" ");
+			for (int i = 0; i < names.length; i++) {
+				aRet.add(new StyleName(names[i]));
+			}
+		}
+		return new StyleNameRefs(aRet);
+	}
+
+	/**
+	 * Returns a list of StyleNameRef from the StyleNameRefs Object
+	 *
+	 * @return a list of StyleNameRef
+	 */
+	public List<StyleName> getStyleNameRefList() {
+		List<StyleName> aRet = new ArrayList<StyleName>();
+		if (mStyleNames.length() > 0) {
+			String[] names = mStyleNames.split(" ");
+			for (int i = 0; i < names.length; i++) {
+				aRet.add(new StyleName(names[i]));
+			}
+		}
+		return aRet;
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype styleNameRefs} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype styleNameRefs} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+		if (stringValue.length() == 0) {
+			return true;
+		}
+
+		String[] names = stringValue.split(" ");
+		for (int i = 0; i < names.length; i++) {
+			if (!StyleNameRef.isValid(names[i])) {
+				return false;
+			}
+		}
+		return true;
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TargetFrameName.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TargetFrameName.java
new file mode 100644
index 0000000..e27cd01
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TargetFrameName.java
@@ -0,0 +1,92 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+/**
+ *This class represents the in OpenDocument format used data type {@odf.datatype targetFrameName}
+ * 
+ */
+public enum TargetFrameName implements OdfDataType {
+
+	_SELF("_self"), _BLANK("_blank"), _PARENT("_parent"), _TOP("_top");
+	private String mValue;
+
+	TargetFrameName(String aValue) {
+		mValue = aValue;
+	}
+
+	/**
+	 *gets the name of this enum.
+	 *
+	 *@return return the name of TargetFrameNameType
+	 */
+	@Override
+	public String toString() {
+		return mValue;
+	}
+
+	/**
+	 *enum to String, gets the name of this enum constant as a string.
+	 *
+	 *@param aEnum
+	 *            the constant of TargetFrameName
+	 *@return return the name of TargetFrameName
+	 */
+	public static String toString(TargetFrameName aEnum) {
+		return aEnum.toString();
+	}
+
+	/**
+	 *String to enum, turns a String into its corresponding enum constant
+	 *
+	 *@param stringValue
+	 *            the name of OdfTargetFrameNameType
+	 *@return return the constant of OdfTargetFrameNameType
+	 */
+	public static TargetFrameName enumValueOf(String stringValue) {
+		for (TargetFrameName aIter : values()) {
+			if (stringValue.equals(aIter.toString())) {
+				return aIter;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype targetFrameName} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype targetFrameName} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+
+		if (TargetFrameName.enumValueOf(stringValue) != null) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TextEncoding.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TextEncoding.java
new file mode 100644
index 0000000..f59a293
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TextEncoding.java
@@ -0,0 +1,87 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype textEncoding}
+ */
+public class TextEncoding implements OdfDataType {
+
+	private String mTextEncoding;
+	private static final Pattern textEncodingPattern = Pattern.compile("^[A-Za-z][A-Za-z0-9._\\-]*$");
+	
+	/**
+	 * Construct TextEncoding by the parsing the given string
+	 *
+	 * @param textEncoding
+	 *            The String to be parsed into TextEncoding
+	 * @throws IllegalArgumentException if the given argument is not a valid TextEncoding
+	 */
+	public TextEncoding(String textEncoding) throws IllegalArgumentException {
+		if (!isValid(textEncoding)) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype TextEncoding");
+		}
+		mTextEncoding = textEncoding;
+	}
+
+	/**
+	 * Returns a String Object representing this TextEncoding's value
+	 *
+	 * @return return a string representation of the value of this TextEncoding
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mTextEncoding;
+	}
+
+	/**
+	 * Returns a TextEncoding instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a TextEncoding instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid TextEncoding
+	 */
+	public static TextEncoding valueOf(String stringValue)
+			throws IllegalArgumentException {
+		return new TextEncoding(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype textEncoding} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype textEncoding} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!textEncodingPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Time.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Time.java
new file mode 100644
index 0000000..89dd18c
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Time.java
@@ -0,0 +1,114 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype time}
+ */
+public class Time implements OdfDataType {
+
+	private XMLGregorianCalendar mTime;
+
+	/**
+	 * Construct an newly Time object that represents the specified
+	 * XMLGregorianCalendar value
+	 *
+	 * @param time
+	 *            the value to be represented by the Time Object
+	 * @throws IllegalArgumentException if the given argument is not a valid Time
+	 */
+	public Time(XMLGregorianCalendar time) throws IllegalArgumentException {
+		if (time == null) {
+			throw new IllegalArgumentException(
+					"parameter can not be null for Time");
+		}
+
+		// validate 'time' type which is defined in W3C schema
+		// http://www.w3.org/TR/xmlschema-2/#time
+		if (!W3CSchemaType.isValid("time", time.toXMLFormat())) {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype Time");
+		}
+		mTime = time;
+	}
+
+	/**
+	 * Returns a String Object representing this Time value
+	 *
+	 * @return return a string representation of the value of this Time object
+	 */
+	@Override
+	public String toString() {
+		return mTime.toXMLFormat();
+	}
+
+	/**
+	 * Returns a Time instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Time instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid Time
+	 */
+	public static Time valueOf(String stringValue) throws IllegalArgumentException {
+		try {
+			DatatypeFactory aFactory = new org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl();
+			return new Time(aFactory.newXMLGregorianCalendar(stringValue));
+		} catch (IllegalArgumentException ex) {
+			Logger.getLogger(Time.class.getName()).log(Level.SEVERE,
+					"parameter is invalid for datatype Time", ex);
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype Time");
+		}
+	}
+
+	/**
+	 * Returns the value of this Time object as an XMLGregorianCalendar
+	 *
+	 * @return the XMLGregorianCalendar value of this Time object.
+	 */
+	public XMLGregorianCalendar getXMLGregorianCalendar() {
+		return mTime;
+	}
+
+	/**
+	 * check if the specified XMLGregorianCalendar instance is a valid {@odf.datatype time} data
+	 * type
+	 *
+	 * @param time
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype time} data type false
+	 *         otherwise
+	 */
+	public static boolean isValid(XMLGregorianCalendar time) {
+		if (time == null) {
+			return false;
+		} else {
+			return W3CSchemaType.isValid("time", time.toXMLFormat());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TimeOrDateTime.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TimeOrDateTime.java
new file mode 100644
index 0000000..abd77e1
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/TimeOrDateTime.java
@@ -0,0 +1,109 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype timeOrDateTime}
+ */
+public class TimeOrDateTime implements OdfDataType {
+
+	private XMLGregorianCalendar mTimeOrDateTime;
+
+	/**
+	 * Construct an newly TimeOrDateTime object that represents the specified
+	 * XMLGregorianCalendar value
+	 *
+	 * @param timeOrDateTime
+	 *            the value to be represented by the TimeOrDateTime Object
+	 * @throws IllegalArgumentException if the given argument is not a valid TimeOrDateTime
+	 *
+	 */
+	public TimeOrDateTime(XMLGregorianCalendar timeOrDateTime)
+			throws IllegalArgumentException {
+		if (TimeOrDateTime.isValid(timeOrDateTime)) {
+			mTimeOrDateTime = timeOrDateTime;
+		} else {
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype TimeorDateTime");
+		}
+	}
+
+	/**
+	 * Returns a String Object representing this TimeOrDateTime value
+	 *
+	 * @return return a string representation of the value of this
+	 *         TimeOrDateTime object
+	 */
+	@Override
+	public String toString() {
+		return mTimeOrDateTime.toXMLFormat();
+	}
+
+	/**
+	 * Returns a TimeOrDateTime instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a TimeOrDateTime instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid TimeOrDateTime
+	 */
+	public static TimeOrDateTime valueOf(String stringValue)
+			throws IllegalArgumentException {
+		try {
+			DatatypeFactory aFactory = new org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl();
+			return new TimeOrDateTime(aFactory.newXMLGregorianCalendar(stringValue));
+		} catch (IllegalArgumentException ex) {
+			Logger.getLogger(TimeOrDateTime.class.getName()).log(Level.SEVERE,
+					"parameter is invalid for datatype TimeOrDateTime", ex);
+			throw new IllegalArgumentException(
+					"parameter is invalid for datatype TimeOrDateTime");
+		}
+	}
+
+	/**
+	 * Returns the value of this TimeOrDateTime object as an
+	 * XMLGregorianCalendar
+	 *
+	 * @return the XMLGregorianCalendar value of this TimeOrDateTime object.
+	 */
+	public XMLGregorianCalendar getXMLGregorianCalendar() {
+		return mTimeOrDateTime;
+	}
+
+	/**
+	 * check if the specified XMLGregorianCalendar instance is a valid
+	 * {@odf.datatype timeOrDateTime} data type
+	 *
+	 * @param timeOrDateTime
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype timeOrDateTime} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(XMLGregorianCalendar timeOrDateTime) {
+		return (Time.isValid(timeOrDateTime) || DateTime.isValid(timeOrDateTime));
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/URITransformer.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/URITransformer.java
new file mode 100644
index 0000000..72aeefa
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/URITransformer.java
@@ -0,0 +1,565 @@
+/************************************************************************
+ *
+ * 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.type;
+
+import java.io.UnsupportedEncodingException;
+import java.util.BitSet;
+import java.io.ByteArrayOutputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Transformations for transporting URIs in URLs.
+ *
+ * <h4> URIs, URLs, and URNs </h4>
+ *
+ * A URI is a uniform resource <i>identifier</i> while a URL is a uniform
+ * resource <i>locator</i>.  Hence every URL is a URI, abstractly speaking, but
+ * not every URI is a URL.  This is because there is another subcategory of
+ * URIs, uniform resource <i>names</i> (URNs), which name resources but do not
+ * specify how to locate them.  The <tt>mailto</tt>, <tt>news</tt>, and
+ * <tt>isbn</tt> URIs shown above are examples of URNs.
+ *
+ *
+ * <h4>URI syntax and components</h4>
+ *
+ * At the highest level a URI reference (hereinafter simply "URI") in string
+ * form has the syntax
+ *
+ * <blockquote>
+ * [<i>scheme</i><tt><b>:</b></tt><i></i>]<i>scheme-specific-part</i>[<tt><b>#</b></tt><i>fragment</i>]
+ * </blockquote>
+ *
+ * where square brackets [...] delineate optional components and the characters
+ * <tt><b>:</b></tt> and <tt><b>#</b></tt> stand for themselves.
+ *
+ * <p> An <i>absolute</i> URI specifies a scheme; a URI that is not absolute is
+ * said to be <i>relative</i>.  URIs are also classified according to whether
+ * they are <i>opaque</i> or <i>hierarchical</i>.
+ *
+ * <p> An <i>opaque</i> URI is an absolute URI whose scheme-specific part does
+ * not begin with a slash character (<tt>'/'</tt>).  Opaque URIs are not
+ * subject to further parsing.  Some examples of opaque URIs are:
+ *
+ * <blockquote><table cellpadding=0 cellspacing=0>
+ * <tr><td><tt>mailto:java-net@java.sun.com</tt><td></tr>
+ * <tr><td><tt>news:comp.lang.java</tt><td></tr>
+ * <tr><td><tt>urn:isbn:096139210x</td></tr>
+ * </table></blockquote>
+ *
+ * <p> A <i>hierarchical</i> URI is either an absolute URI whose
+ * scheme-specific part begins with a slash character, or a relative URI, that
+ * is, a URI that does not specify a scheme.  Some examples of hierarchical
+ * URIs are:
+ *
+ * <blockquote>
+ * <tt>http://java.sun.com/j2se/1.3/</tt><br>
+ * <tt>docs/guide/collections/designfaq.html#28</tt></br>
+ * <tt>../../../demo/jfc/SwingSet2/src/SwingSet2.java</tt></br>
+ * <tt>file:///~/calendar</tt>
+ * </blockquote>
+ *
+ * <p> A hierarchical URI is subject to further parsing according to the syntax
+ *
+ * <blockquote>
+ * [<i>scheme</i><tt><b>:</b></tt>][<tt><b>//</b></tt><i>authority</i>][<i>path</i>][<tt><b>?</b></tt><i>query</i>][<tt><b>#</b></tt><i>fragment</i>]
+ * </blockquote>
+ *
+ * where the characters <tt><b>:</b></tt>, <tt><b>/</b></tt>,
+ * <tt><b>?</b></tt>, and <tt><b>#</b></tt> stand for themselves.  The
+ * scheme-specific part of a hierarchical URI consists of the characters
+ * between the scheme and fragment components.
+ *
+ * <p> The authority component of a hierarchical URI is, if specified, either
+ * <i>server-based</i> or <i>registry-based</i>.  A server-based authority
+ * parses according to the familiar syntax
+ *
+ * <blockquote>
+ * [<i>user-info</i><tt><b>@</b></tt>]<i>host</i>[<tt><b>:</b></tt><i>port</i>]
+ * </blockquote>
+ *
+ * where the characters <tt><b>@</b></tt> and <tt><b>:</b></tt> stand for
+ * themselves.  Nearly all URI schemes currently in use are server-based.  An
+ * authority component that does not parse in this way is considered to be
+ * registry-based.
+ *
+ * <p> The path component of a hierarchical URI is itself said to be absolute
+ * if it begins with a slash character (<tt>'/'</tt>); otherwise it is
+ * relative.  The path of a hierarchical URI that is either absolute or
+ * specifies an authority is always absolute.
+ *
+ * <p> All told, then, a URI instance has the following nine components:
+ *
+ * <blockquote><table>
+ * <tr><td><i>Component</i></td><td><i>Type</i></td></tr>
+ * <tr><td>scheme</td><td><tt>String</tt></td></tr>
+ * <tr><td>scheme-specific-part&nbsp;&nbsp;&nbsp;&nbsp;</td><td><tt>String</tt></td></tr>
+ * <tr><td>authority</td><td><tt>String</tt></td></tr>
+ * <tr><td>user-info</td><td><tt>String</tt></td></tr>
+ * <tr><td>host</td><td><tt>String</tt></td></tr>
+ * <tr><td>port</td><td><tt>int</tt></td></tr>
+ * <tr><td>path</td><td><tt>String</tt></td></tr>
+ * <tr><td>query</td><td><tt>String</tt></td></tr>
+ * <tr><td>fragment</td><td><tt>String</tt></td></tr>
+ * </table></blockquote>
+ *
+ * In a given instance any particular component is either <i>undefined</i> or
+ * <i>defined</i> with a distinct value.  Undefined string components are
+ * represented by <tt>null</tt>, while undefined integer components are
+ * represented by <tt>-1</tt>.  A string component may be defined to have the
+ * empty string as its value; this is not equivalent to that component being
+ * undefined.
+ *
+ * <p> Whether a particular component is or is not defined in an instance
+ * depends upon the type of the URI being represented.  An absolute URI has a
+ * scheme component.  An opaque URI has a scheme, a scheme-specific part, and
+ * possibly a fragment, but has no other components.  A hierarchical URI always
+ * has a path (though it may be empty) and a scheme-specific-part (which at
+ * least contains the path), and may have any of the other components.  If the
+ * authority component is present and is server-based then the host component
+ * will be defined and the user-information and port components may be defined.
+ * 
+ * See <a href="http://www.isi.edu/in-notes/rfc2396.txt""><i>RFC&nbsp;2396:
+ * Uniform Resource Identifiers (URI): Generic Syntax</i></a>
+ *
+ */
+class URITransformer {
+
+	/**
+	 * Array containing the safe characters set for encoding.
+	 * <p>
+	 * Only the following characters are not encoded:<br>
+	 * A-Z a-z 0-9 : @ & $ - _ . + ! * ' ( ) ,
+	 * </p>
+	 */
+	protected static BitSet safeCharacters;
+
+	static {
+		safeCharacters = new BitSet(256);
+		int i;
+		for (i = 'a'; i <= 'z'; i++) {
+			safeCharacters.set(i);
+		}
+		for (i = 'A'; i <= 'Z'; i++) {
+			safeCharacters.set(i);
+		}
+		for (i = '0'; i <= '9'; i++) {
+			safeCharacters.set(i);
+		}
+		safeCharacters.set('=');
+		safeCharacters.set(':');
+		safeCharacters.set('@');
+		safeCharacters.set('&');
+		safeCharacters.set('$');
+		safeCharacters.set('-');
+		safeCharacters.set('_');
+		safeCharacters.set('.');
+		safeCharacters.set('+');
+		safeCharacters.set('!');
+		safeCharacters.set('*');
+		safeCharacters.set('\'');
+		safeCharacters.set('(');
+		safeCharacters.set(')');
+		safeCharacters.set(',');
+	}
+
+	/**
+	 * Encode path to be used as path component segments in URI.
+	 *
+	 * <p>Creates a String that can be used as a sequence of one or more
+	 * path components in an URI from a path that uses a slash
+	 * character as a path separator and where the segements do not use
+	 * any URI encoding rules.</p>
+	 *
+	 * <p>The <b>/</b> characters (delimiting the individual path_segments)
+	 * are left unchanged.</p>
+	 *
+	 * @param path A path that is not using URI encoding rules.
+	 * @return A path that is using URI encoding rules.
+	 *
+	 * @see #decodePath(String)
+	 */
+	public static String encodePath(String path) {
+		try {
+			StringBuilder pathc = new StringBuilder();
+			byte[] bytes = null;
+			bytes = path.getBytes("UTF-8");
+			for (int i = 0; i < bytes.length; i++) {
+				int v = bytes[i];
+				if (v < 0) {
+					v += 256;
+				}
+				if (v > 0 && v < 256 && safeCharacters.get(v)) {
+					pathc.append((char) v);
+				} else if ((char) v == '/') {
+					pathc.append((char) v);
+				} else {
+					pathc.append("%" + Integer.toHexString(v));
+				}
+			}
+			path = pathc.toString();
+		} catch (UnsupportedEncodingException ex) {
+			Logger.getLogger(URITransformer.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return path;
+	}
+
+	/**
+	 * Decode path component segments in URI.
+	 *
+	 * <p>Creates a path that uses a slash character as a path separator
+	 * and where the segments do not use any URI encoding
+	 * from a String that is used as a sequence of one or more
+	 * path components in an URI where the path segments do use
+	 * URI encoding rules.</p>
+	 *
+	 * <p>The <b>/</b> characters (delimiting the individual path_segments)
+	 * are left unchanged.</p>
+	 *
+	 * @param path A path that is using URI encoding rules.
+	 * @return A path that is not using URI encoding rules.
+	 *
+	 * @see #encodePath(String)
+	 *
+	 */
+	public static String decodePath(String path) {
+		String pathc = path;
+		StringBuilder uri = new StringBuilder();
+
+		int j = pathc.indexOf('%', 0);
+		int l = pathc.length();
+
+		ByteArrayOutputStream ba = new ByteArrayOutputStream();
+		byte[] b = {0};
+		while (j != -1) {
+			if (j + 3 <= l) {
+				try {
+					b = pathc.substring(0, j).getBytes("UTF-8");
+					ba.write(b, 0, b.length);
+				} catch (java.io.UnsupportedEncodingException e) {
+				}
+				String hex = pathc.substring(j + 1, j + 3);
+				try {
+					int n = Integer.parseInt(hex, 16);
+					ba.write(n);
+				} catch (NumberFormatException e) {
+					String tmp = "=" + hex;
+					try {
+						b = tmp.getBytes("UTF-8");
+					} catch (java.io.UnsupportedEncodingException e2) {
+					}
+					ba.write(b, 0, b.length);
+				}
+				pathc = pathc.substring(j + 3);
+				l = pathc.length();
+				j = pathc.indexOf('%', 0);
+			} else {
+				j = -1;
+			}
+		}
+		try {
+			uri.append(new String(ba.toByteArray(), "UTF-8"));
+		} catch (java.io.UnsupportedEncodingException e2) {
+		}
+
+		uri.append(pathc);
+
+		return uri.toString();
+	}
+
+	/**
+	 * Extract URI from a path.
+	 *
+	 * <p>Transforms a path that was created with the
+	 * {@link #uri2path(String)} method back to an URI.</p>
+	 *
+	 * <p>This method does try to cope with an erroneous
+	 * input parameter but the result returned in such a case is not
+	 * guaranteed to be a valid URI.</p>
+	 *
+	 * @param path the path that contains the URI information
+	 * @return a String representing a URI
+	 *
+	 * @see #uri2path(String)
+	 */
+	public static String path2uri(String path) {
+
+		if (path == null) {
+			return null;
+		}
+		StringBuilder uri = new StringBuilder();
+		String npath;
+		// ignore leading slash
+		if (path.startsWith("/")) {
+			npath = path.substring(1);
+		} else {
+			npath = path;
+		}
+
+		int l = npath.length();
+
+		int i = npath.indexOf('/');
+		if (i == -1) {
+			if (npath.equals("")) {
+				return npath;
+			}
+			return npath + "://";
+		}
+
+		String rpath = "";
+		boolean bauth = true;
+
+		if (i == 0) {
+			uri.append("/");
+		} else {
+
+			String scheme;
+			if (i == l) {
+				return npath + "://";
+			}
+			scheme = npath.substring(0, i) + ":";
+			if (i + 4 <= l) {
+				String hier = npath.substring(i + 1, i + 4);
+				if (hier.startsWith("==0/")) {
+					i += 5;
+				} else if (hier.startsWith("==0")) {
+					i += 4;
+				} else if (hier.startsWith("==1")) {
+					bauth = false;
+					scheme += "";
+					i += 3;
+				} else if (hier.startsWith("==2")) {
+					scheme += "//";
+					i += 3;
+					bauth = false;
+				} else {
+					scheme += "//";
+				}
+
+			}
+			uri.append(scheme);
+		}
+
+
+		int j = -1;
+		String auth = "";
+
+		if (bauth) {
+			if (rpath.equals("")) {
+				if (i + 1 <= l) {
+					j = npath.indexOf('/', i + 1);
+				}
+
+				if (j == -1) {
+					j = l;
+				} else {
+					rpath = npath.substring(j);
+				}
+				if (i + 1 <= l) {
+					auth = npath.substring(i + 1, j);
+				} else {
+					auth = "";
+				}
+			} else {
+				if (i + 1 <= l) {
+					rpath = rpath + npath.substring(i + 1);
+				} else {
+					rpath = "";
+				}
+			}
+
+			j = auth.indexOf('=', 0);
+			l = auth.length();
+
+			ByteArrayOutputStream ba = new ByteArrayOutputStream();
+			byte[] b = {0};
+			while (j != -1) {
+				if (j + 3 <= l) {
+					try {
+						b = auth.substring(0, j).getBytes("UTF-8");
+						ba.write(b, 0, b.length);
+					} catch (java.io.UnsupportedEncodingException e) {
+					}
+					String hex = auth.substring(j + 1, j + 3);
+					try {
+						int n = Integer.parseInt(hex, 16);
+						ba.write(n);
+					} catch (NumberFormatException e) {
+						String tmp = "=" + hex;
+						try {
+							b = tmp.getBytes("UTF-8");
+						} catch (java.io.UnsupportedEncodingException e2) {
+						}
+						ba.write(b, 0, b.length);
+					}
+					auth = auth.substring(j + 3);
+					l = auth.length();
+					j = auth.indexOf('=', 0);
+				} else {
+					j = -1;
+				}
+			}
+			try {
+				uri.append(new String(ba.toByteArray(), "UTF-8"));
+			} catch (java.io.UnsupportedEncodingException e2) {
+			}
+			uri.append(auth);
+
+		} else {
+			if (i + 1 <= l) {
+				rpath = npath.substring(i + 1); // empty authority
+			} else {
+				rpath = "";
+			}
+		}
+
+		uri.append(encodePath(rpath));
+
+		return uri.toString();
+	}
+
+	/**
+	 * Embed URI into path.
+	 *
+	 * <h4>Opaque URIs</h4>
+	 *
+	 * Opaque URIs are mapped to a <i>path</i> of the form
+	 * &lt;<b>/</b> <i>scheme</i> <b>/==0/</b> <i>opaque_part'</i>&gt;.</p>
+	 * </p>
+	 * <p>The mapping from <i>opaque_part</i> to <i>opaque_part'</i>
+	 * works as follows:(*)<p>
+	 *
+	 * <p>Octets from the set <b>A-Z a-z 0-9 : @ & $ - _ . + ! * ' ( ) ,</b>
+	 * are left unchanged.</p>
+	 *
+	 * <p>Other octest are replaced with <b>=</b> followed by two hex digits
+	 * that represent the octet's numerical value.</p>
+	 *
+	 * <h4>Hierarchical URIs without an <i>authority</i> component</h4>
+	 *
+	 * <p>Hierarchical URIs without an <i>authority</i> component
+	 * are mapped to a <i>path</i> of the form
+	 * &lt;<b>/</b> <i>scheme</i> <b>/==1</b> <i>abs_path</i>' [<b>?</b>
+	 * <i>query</i>]&gt;.</p>
+	 *
+	 * <p>If <i>abs_path</i> is empty, it is left unchanged.</p>
+	 *
+	 * <p>If <i>abs_path</i> is non-empty, it is decoded with
+	 * the {@link #decodePath(String)} method.</p>
+	 *
+	 * <p>A non-empty path_segment is left unchanged.</p>
+	 *
+	 * <h4>Hierarchical URIs with an <i>authority</i> component</h4>
+	 * <p>Hierarchical URIs with an <i>authority</i> component
+	 * <b>?</b> query]&gt; are mapped to a <i>path</i> of the
+	 * form &lt;<b>/</b> <i>scheme</i> <b>/</b> <i>authority'</i>
+	 * <i>abs_path'</i> [<b>?</b><i>query</i>]&gt;.</p>
+	 *
+	 * <p>If <i>authority</i> is empty, it is mapped to
+	 * <b>==2</b>. This eliminates
+	 * problems if the servlet container drops final slashes
+	 * from <i>paths</i> or cannot handle empty segments
+	 * within <i>paths.</i></p>
+	 *
+	 * <p>The mapping from <i>abs_path</i> to <i>abs_path'</i>
+	 * works as follows:</p>
+	 *
+	 * </p>
+	 * <p>If <i>authority</i> is non-empty, it is mapped as described
+	 * for the <i>opaque_part</i> above.</p>
+	 *
+	 * <p>The mapping from <i>abs_path</i> to <i>abs_path'</i>
+	 * works as follows:</p>
+	 *
+	 * <p>If <i>abs_path</i> is empty, it is left unchanged.</p>
+	 *
+	 * <p>If <i>abs_path</i> is non-empty, it is decoded with
+	 * the {@link #decodePath(String)} method.</p>
+	 *
+	 * @see #path2uri(String)
+	 */
+	public static String uri2path(String uri) {
+		if (uri == null) {
+			return null;
+		}
+		StringBuilder path = new StringBuilder();
+		int i = uri.indexOf(":");
+		if (i == -1) {
+			return uri;
+		}
+		int l = uri.length();
+
+		path.append(uri.substring(0, i)).append("/");
+
+		int sc = 0;
+		if ((i + 3 <= l) && uri.substring(i + 1, i + 3).equals("//")) {
+			i += 3;
+			sc = 2;
+		} else if ((i + 2 <= l) && uri.substring(i + 1, i + 2).equals("/")) {
+			i += 2;
+			sc = 1;
+		} else {
+			i++;
+		}
+
+		int j = uri.indexOf('/', i);
+		String ruri = "";
+		if (j == -1) {
+			j = l;
+			ruri = "";
+		} else {
+			ruri = uri.substring(j);
+		}
+		String auth = uri.substring(i, j);
+
+		if (sc == 2 && auth.length() == 0) {
+			path.append("==2");
+		} else if (sc == 1) {
+			path.append("==1/");
+		} else if (sc == 0) {
+			path.append("==0/");
+		}
+
+		byte[] bytes = null;
+		try {
+			bytes = auth.getBytes("UTF-8");
+		} catch (java.io.UnsupportedEncodingException e) {
+		}
+		for (i = 0; i < bytes.length; i++) {
+			int v = bytes[i];
+			if (v < 0) {
+				v += 256;
+			}
+			if (v > 0 && v < 256 && safeCharacters.get(v)) {
+				path.append((char) v);
+			} else {
+				path.append("=" + Integer.toHexString(v));
+			}
+		}
+
+		path.append(decodePath(ruri));
+		return path.toString();
+	}
+
+	private URITransformer() {
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/URIorSafeCURIE.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/URIorSafeCURIE.java
new file mode 100644
index 0000000..cf80107
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/URIorSafeCURIE.java
@@ -0,0 +1,178 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.net.URI;
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype URIorSafeCURIE}
+ *  This value type stores either an anyURI or a SafeCURIE
+ */
+public class URIorSafeCURIE implements OdfDataType {
+
+	private String mURIorSafeCURIE;
+	private Object mValue;
+	private static final Pattern uRIorSafeCURIEPattern = Pattern.compile("^\\[(([\\i-[:]][\\c-[:]]*)?:)?.+\\]$");
+	
+	/**
+	 * Construct URIorSafeCURIE without the initialized value
+	 */
+	public URIorSafeCURIE() {
+		mValue = null;
+	}
+
+	/**
+	 * Copy Construct URIorSafeCURIE with the same value of val
+	 *
+	 * @param val
+	 *            the copied URIorSafeCURIE object
+	 * @throws IllegalArgumentException if the given argument is not a valid URIorSaveCURIE
+	 */
+	public URIorSafeCURIE(URIorSafeCURIE val) {
+		if (val == null) {
+			throw new IllegalArgumentException("parameter can not be null for URIorSafeCURIE");
+		}
+
+		if (val.isSafeCURIE()) {
+			mURIorSafeCURIE = val.getSafeCURIE();
+		} else {
+			mURIorSafeCURIE = (new AnyURI(val.getAnyURI())).toString();
+		}
+	}
+
+	/**
+	 * set uri value for URIorSafeCURIE Object
+	 *
+	 * @param uri
+	 *            the anyURI value which is set to URIorSafeCURIE Object
+	 */
+	public void setAnyURI(URI uri) {
+		mValue = new AnyURI(uri);
+	}
+
+	/**
+	 * set String value for URIorSafeCURIE Object
+	 *
+	 * @param curie
+	 *            the SafeCURIE value which is set to URIorSafeCURIE Object
+	 */
+	public void setSafeCURIE(String curie) {
+		mValue = new SafeCURIE(curie);
+	}
+
+	/**
+	 * get the internal value type of URIorSafeCURIE Object
+	 *
+	 * @return true if the internal value type is anyURI false if the internal
+	 *         value type is SafeCURIE
+	 */
+	public boolean isSafeCURIE() {
+		return (mValue != null) && mValue instanceof SafeCURIE;
+	}
+
+	/**
+	 * get the anyURI value of this URIorSafeCURIE Object
+	 *
+	 * @return the anyURI value of this URIorSafeCURIE Object
+	 */
+	public URI getAnyURI() {
+		if (isSafeCURIE()) {
+			throw new IllegalArgumentException("I do not have a AnyURI value");
+		} else if (mValue != null) {
+			return ((AnyURI) mValue).getURI();
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * get the SafeCURIE value of this URIorSafeCURIE Object
+	 *
+	 * @return the SafeCURIE value of this URIorSafeCURIE Object
+	 */
+	public String getSafeCURIE() {
+		if (isSafeCURIE()) {
+			return ((SafeCURIE) mValue).toString();
+		} else {
+			throw new IllegalArgumentException(
+					"I do not have a SafeCURIE value");
+		}
+	}
+
+	/**
+	 * Returns a String Object representing this URIorSafeCURIE's value
+	 *
+	 * @return return a string representation of the value of this
+	 *         URIorSafeCURIE object
+	 */
+	@Override
+	public String toString() {
+		return mURIorSafeCURIE;
+	}
+
+	/**
+	 * Returns an URIorSafeCURIE instance representing the specified String
+	 * value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return an URIorSafeCURIE instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid URIorSaveCURIE
+	 */
+	public static URIorSafeCURIE valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if (stringValue == null) {
+			throw new IllegalArgumentException("parameter can not be null for URIorSafeCURIE");
+		}
+		URIorSafeCURIE aRet = new URIorSafeCURIE();
+		if ((uRIorSafeCURIEPattern.matcher(stringValue).matches()) && (stringValue.length() >= 3)) {
+			aRet.setSafeCURIE(stringValue);
+		} else {
+			AnyURI aAnyURI = AnyURI.valueOf(stringValue);
+			if (aAnyURI != null) {
+				aRet.setAnyURI(aAnyURI.getURI());
+			} else {
+				throw new IllegalArgumentException("parameter is invalid for datatype URIorSafeCURIE");
+			}
+		}
+		return aRet;
+	}
+
+	/**
+	 * check if the specified XMLGregorianCalendar {@odf.datatype URIorSafeCURIE} is a valid
+	 * URIorSafeCURIE data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype URIorSafeCURIE} data
+	 *         type false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (SafeCURIE.isValid(stringValue)) {
+			return true;
+		} else if (AnyURI.valueOf(stringValue) != null) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ValueType.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ValueType.java
new file mode 100644
index 0000000..3527278
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ValueType.java
@@ -0,0 +1,92 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype valueType}
+ * 
+ */
+public enum ValueType implements OdfDataType {
+
+	STRING("string"), TIME("time"), CURRENCY("currency"), FLOAT("float"), DATE(
+	"date"), BOOLEAN("boolean"), PERCENTAGE("percentage");
+	private String mValue;
+
+	ValueType(String aValue) {
+		mValue = aValue;
+	}
+
+	/**
+	 *gets the name of this enum.
+	 *
+	 *@return return the name of ValueType
+	 */
+	@Override
+	public String toString() {
+		return mValue;
+	}
+
+	/**
+	 *enum to String, gets the name of this enum constant as a string.
+	 *
+	 *@param aEnum  the constant of ValueType
+	 *@return return the name of ValueType
+	 */
+	public static String toString(ValueType aEnum) {
+		return aEnum.toString();
+	}
+
+	/**
+	 *String to enum, turns a String into its corresponding enum constant
+	 *
+	 *@param stringValue
+	 *            the name of ValueType
+	 *@return return the constant of ValueType
+	 */
+	public static ValueType enumValueOf(String stringValue) {
+		for (ValueType aIter : values()) {
+			if (stringValue.equals(aIter.toString())) {
+				return aIter;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * check if the specified String is a valid {@odf.datatype valueType} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype valueType} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if (stringValue == null) {
+			return false;
+		}
+
+		if (ValueType.enumValueOf(stringValue) != null) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Vector3D.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Vector3D.java
new file mode 100644
index 0000000..bf12575
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/Vector3D.java
@@ -0,0 +1,83 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype vector3D}
+ */
+public class Vector3D implements OdfDataType {
+
+	private String mVector3D;
+	private static final Pattern vector3DPattern = Pattern.compile("^\\([ ]*-?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([ ]+-?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)){2}[ ]*\\)$");
+	
+	/**
+	 * Construct Vector3D by the parsing the given string
+	 *
+	 * @param vector3D
+	 *            The String to be parsed into Vector3D
+	 */
+	public Vector3D(String vector3D) {
+		if (!isValid(vector3D)) {
+			throw new IllegalArgumentException("parameter is invalid for datatype Vector3D");
+		}
+		mVector3D = vector3D;
+	}
+
+	/**
+	 * Returns a String Object representing this Vector3D's value
+	 *
+	 * @return return a string representation of the value of this Vector3D
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return mVector3D;
+	}
+
+	/**
+	 * Returns a Vector3D instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a Vector3D instance representing stringValue
+	 */
+	public static Vector3D valueOf(String stringValue) {
+		return new Vector3D(stringValue);
+	}
+
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype vector3D} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype vector3D} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!vector3DPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/W3CSchemaType.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/W3CSchemaType.java
new file mode 100644
index 0000000..cc6e3c6
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/W3CSchemaType.java
@@ -0,0 +1,57 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.xerces.impl.dv.InvalidDatatypeValueException;
+import org.apache.xerces.impl.dv.SchemaDVFactory;
+import org.apache.xerces.impl.dv.ValidatedInfo;
+import org.apache.xerces.impl.dv.XSSimpleType;
+import org.apache.xerces.impl.validation.ValidationState;
+
+/** This class validates string to be valid W3C schema data types.
+In general it takes advantage of already existing underlying parser functionality and encapsulates it */
+class W3CSchemaType {
+	// validate the content by the dataType which is defined in XML schema
+
+	static boolean isValid(String dataType, String content) {
+		boolean isValid = false;
+		try {
+			// SchemaDVFactory / Enumeration Dataype
+			XSSimpleType simpleType = SchemaDVFactory.getInstance().getBuiltInType(dataType);
+			if (simpleType != null) {
+				simpleType.validate(content, new ValidationState(), new ValidatedInfo());
+				isValid = true; //Xerces docu is a little weak, we assume it works this way
+			} else {
+				throw new IllegalArgumentException("Datatype " + dataType + " does not exist!");
+			}
+		} catch (InvalidDatatypeValueException e) {
+			isValid = false;
+			Logger.getLogger(W3CSchemaType.class.getName()).log(Level.FINE, content + "is not of datatype " + dataType + "!", e);
+		}
+		return isValid;
+	}
+
+	private W3CSchemaType() {
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ZeroToHundredPercent.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ZeroToHundredPercent.java
new file mode 100644
index 0000000..e264d59
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ZeroToHundredPercent.java
@@ -0,0 +1,117 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+package org.odftoolkit.odfdom.type;
+
+import java.util.regex.Pattern;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype zeroToHundredPercent}
+ */
+public class ZeroToHundredPercent implements OdfDataType{
+	private double mN;
+	private static final Pattern zeroToHundredPercentPattern = Pattern.compile("^([0-9]?[0-9](\\.[0-9]*)?|100(\\.0*)?|\\.[0-9]+)%$");
+	
+	/**
+	 * Allocates a ZeroToHundredPercent object representing the n argument
+	 *
+	 * @param n
+	 *            the value of the ZeroToHundredPercent
+	 * @throws IllegalArgumentException if the given argument is not a valid ZeroToHundredPercent
+	 */
+	public ZeroToHundredPercent(double n) throws IllegalArgumentException {
+		if( n > 1 || n < 0)
+			throw new IllegalArgumentException("parameter is invalid for datatype ZeroToHundredPercent");
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this ZeroToHundredPercent's value
+	 *
+	 * @return return a string representation of the value of this ZeroToHundredPercent
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return Double.toString(mN * 100) + "%";
+	}
+
+	/**
+	 * Returns a ZeroToHundredPercent instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a ZeroToHundredPercent instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid ZeroToHundredPercent
+	 */
+	public static ZeroToHundredPercent valueOf(String stringValue)
+			throws IllegalArgumentException {
+		if ((stringValue == null) || (stringValue.length() == 0)) {
+			return new ZeroToHundredPercent(0.0);
+		}
+
+		int n = stringValue.indexOf("%");
+		if (n != -1) {
+			return new ZeroToHundredPercent(Double.valueOf(stringValue.substring(0, n)).doubleValue() / 100);
+		} else {
+			throw new IllegalArgumentException("parameter is invalid for datatype ZeroToHundredPercent");
+		}
+	}
+
+	/**
+	 * Returns the value of this ZeroToHundredPercent object as a double primitive
+	 *
+	 * @return the primitive double value of this ZeroToHundredPercent object.
+	 */
+	public double doubleValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Double instance is a valid {@odf.datatype zeroToHundredPercent} data type
+	 *
+	 * @param doubleValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype zeroToHundredPercent} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(Double doubleValue) {
+		if ( (doubleValue != null) && (doubleValue.doubleValue() <= 1) && 
+				(doubleValue.doubleValue() >= 0)) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
+	/**
+	 * check if the specified String instance is a valid {@odf.datatype zeroToHundredPercent} data type
+	 *
+	 * @param stringValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype zeroToHundredPercent} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(String stringValue) {
+		if ((stringValue == null) || (!zeroToHundredPercentPattern.matcher(stringValue).matches())) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ZeroToOneDecimal.java b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ZeroToOneDecimal.java
new file mode 100644
index 0000000..41272e2
--- /dev/null
+++ b/trunk/odfdom/src/main/java/org/odftoolkit/odfdom/type/ZeroToOneDecimal.java
@@ -0,0 +1,91 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+package org.odftoolkit.odfdom.type;
+
+/**
+ * This class represents the in OpenDocument format used data type {@odf.datatype zeroToOneDecimal}
+ */
+public class ZeroToOneDecimal implements OdfDataType{
+	private double mN;
+	
+	/**
+	 * Allocates a ZeroToOneDecimal object representing the n argument
+	 *
+	 * @param n
+	 *            the value of the ZeroToOneDecimal
+	 * @throws IllegalArgumentException if the given argument is not a valid ZeroToOneDecimal
+	 */
+	public ZeroToOneDecimal(double n) throws IllegalArgumentException {
+		if( n > 1 || n < 0)
+			throw new IllegalArgumentException("parameter is invalid for datatype ZeroToOneDecimal");
+		mN = n;
+	}
+
+	/**
+	 * Returns a String Object representing this ZeroToOneDecimal's value
+	 *
+	 * @return return a string representation of the value of this ZeroToOneDecimal
+	 *         object
+	 */
+	@Override
+	public String toString() {
+		return Double.toString(mN);
+	}
+
+	/**
+	 * Returns a ZeroToOneDecimal instance representing the specified String value
+	 *
+	 * @param stringValue
+	 *            a String value
+	 * @return return a ZeroToOneDecimal instance representing stringValue
+	 * @throws IllegalArgumentException if the given argument is not a valid ZeroToOneDecimal
+	 */
+	public static ZeroToOneDecimal valueOf(String stringValue)
+			throws IllegalArgumentException {
+		String aTmp = stringValue.trim();
+		double n = Double.valueOf(aTmp);
+		return new ZeroToOneDecimal(n);
+	}
+
+	/**
+	 * Returns the value of this ZeroToOneDecimal object as a double primitive
+	 *
+	 * @return the primitive double value of this ZeroToOneDecimal object.
+	 */
+	public double doubleValue() {
+		return mN;
+	}
+
+	/**
+	 * check if the specified Double instance is a valid {@odf.datatype zeroToOneDecimal} data type
+	 *
+	 * @param doubleValue
+	 *            the value to be tested
+	 * @return true if the value of argument is valid for {@odf.datatype zeroToOneDecimal} data type
+	 *         false otherwise
+	 */
+	public static boolean isValid(Double doubleValue) {
+		if ( (doubleValue != null) && (doubleValue.doubleValue() <= 1) && 
+				(doubleValue.doubleValue() >= 0)) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A0000009122A8E996.png b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A0000009122A8E996.png
new file mode 100644
index 0000000..d7b8534
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A0000009122A8E996.png
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A03132DB2D.png b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A03132DB2D.png
new file mode 100644
index 0000000..1b52f58
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A03132DB2D.png
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A052ACB0F4.png b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A052ACB0F4.png
new file mode 100644
index 0000000..a746b17
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A052ACB0F4.png
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A0BDF285E0.png b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A0BDF285E0.png
new file mode 100644
index 0000000..8726748
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/100000000000009A000000A0BDF285E0.png
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/100000000000011C0000004AA64D38BB.gif b/trunk/odfdom/src/main/javadoc/doc-files/100000000000011C0000004AA64D38BB.gif
new file mode 100644
index 0000000..338ec1f
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/100000000000011C0000004AA64D38BB.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000000000001D800000075C6C51876.png b/trunk/odfdom/src/main/javadoc/doc-files/10000000000001D800000075C6C51876.png
new file mode 100644
index 0000000..db98b35
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000000000001D800000075C6C51876.png
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/100002000000000A0000000ADDA84F49.gif b/trunk/odfdom/src/main/javadoc/doc-files/100002000000000A0000000ADDA84F49.gif
new file mode 100644
index 0000000..dc7c020
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/100002000000000A0000000ADDA84F49.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BD000000BD0362D7E7.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BD000000BD0362D7E7.gif
new file mode 100644
index 0000000..520b12e
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BD000000BD0362D7E7.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BD000000BDC014E7D1.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BD000000BDC014E7D1.gif
new file mode 100644
index 0000000..d89a33f
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BD000000BDC014E7D1.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE145B66A3.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE145B66A3.gif
new file mode 100644
index 0000000..c0712f3
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE145B66A3.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE25E7F573.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE25E7F573.gif
new file mode 100644
index 0000000..7155d81
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE25E7F573.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE348BB081.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE348BB081.gif
new file mode 100644
index 0000000..50ba350
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE348BB081.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE4F61FAAA.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE4F61FAAA.gif
new file mode 100644
index 0000000..1afb656
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE4F61FAAA.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE99314183.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE99314183.gif
new file mode 100644
index 0000000..744d026
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BE99314183.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEB3958805.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEB3958805.gif
new file mode 100644
index 0000000..48d53f3
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEB3958805.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEC7C6AB3C.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEC7C6AB3C.gif
new file mode 100644
index 0000000..f6be897
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEC7C6AB3C.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BED3754382.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BED3754382.gif
new file mode 100644
index 0000000..f51175f
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BED3754382.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEE615D9E6.gif b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEE615D9E6.gif
new file mode 100644
index 0000000..6ed8a9a
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/10000200000000BE000000BEE615D9E6.gif
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/800px-Table_fruits_diagramm.jpg b/trunk/odfdom/src/main/javadoc/doc-files/800px-Table_fruits_diagramm.jpg
new file mode 100644
index 0000000..cc5ee10
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/800px-Table_fruits_diagramm.jpg
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/FruitTable_code.jpg b/trunk/odfdom/src/main/javadoc/doc-files/FruitTable_code.jpg
new file mode 100644
index 0000000..a336dd1
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/FruitTable_code.jpg
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/ODFDOM-Layered-Model.png b/trunk/odfdom/src/main/javadoc/doc-files/ODFDOM-Layered-Model.png
new file mode 100644
index 0000000..c604de3
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/ODFDOM-Layered-Model.png
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/ODF_Package.jpg b/trunk/odfdom/src/main/javadoc/doc-files/ODF_Package.jpg
new file mode 100644
index 0000000..3ff19a7
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/ODF_Package.jpg
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/OpenDocument-v1.2-part1.html b/trunk/odfdom/src/main/javadoc/doc-files/OpenDocument-v1.2-part1.html
new file mode 100644
index 0000000..f2f9370
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/OpenDocument-v1.2-part1.html
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by OpenOffice.org - see http://xml.openoffice.org/odf2xhtml for more info.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><base href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html" /><title xml:lang="en-US">OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema</title><meta name="DCTERMS.title" content="OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.issued" content="2003-02-05T12:39:40" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.contributor" content="Paul Knight"/><meta name="DCTERMS.modified" content="2011-06-09T14:00:54.45" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="Printed by &#34;Patrick Durusau&#34;[dc:publisher] on &#34;2010-05-10T17:30:54&#34;[dc:date] in &#34;en-US&#34;[dc:language]" xml:lang="en-US"/><meta name="DCTERMS.subject" content=", OASIS, OpenDocument, ODF" xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><style type="text/css">
+	@page {  }
+	table { border-collapse:collapse; border-spacing:0; empty-cells:show }
+	td, th { vertical-align:top; font-size:12pt;}
+	h1, h2, h3, h4, h5, h6 { clear:both }
+	ol, ul { margin:0; padding:0;}
+	li { list-style: none; margin:0; padding:0;}
+	<!-- "li span.odfLiEnd" - IE 7 issue-->
+	li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
+	span.footnodeNumber { padding-right:1em; }
+	span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000;  margin:0; border:0; padding:0;  }
+	* { margin:0;}
+	.Formula { font-size:12pt; writing-mode:lr-tb; vertical-align:top; }
+	.fr1 { font-size:12pt; text-align:center; vertical-align:top; writing-mode:lr-tb; }
+	.fr2 { font-size:12pt; text-align:right; vertical-align:top; writing-mode:lr-tb; margin-left:0.0783in; margin-right:0.0783in; margin-top:0.0783in; margin-bottom:0.0783in; padding:0in; border-style:none; }
+	.fr3 { font-size:12pt; text-align:right; vertical-align:top; writing-mode:lr-tb; margin-left:0.0783in; margin-right:0.0783in; margin-top:0.0783in; margin-bottom:0.0783in; }
+	.fr4 { font-size:12pt; text-align:left; vertical-align:top; writing-mode:lr-tb; }
+	.fr5 { font-size:12pt; text-align:center; vertical-align:top; writing-mode:lr-tb; }
+	.fr6 { font-size:12pt; vertical-align:top; writing-mode:lr-tb; margin-left:0in; margin-right:0in; margin-top:0in; margin-bottom:0in; padding:0in; border-style:none; }
+	.fr7 { font-size:12pt; vertical-align:middle; writing-mode:lr-tb; }
+	.gr1 { font-size:12pt; writing-mode:lr-tb; vertical-align:middle; }
+	.gr2 { font-size:12pt; writing-mode:lr-tb; vertical-align:middle; }
+	.Appendix_20_Heading_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1945in; padding-left:0in; padding-right:0in; padding-top:0.0835in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in;  border-bottom-style:none; }
+	.Appendix_20_Heading { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; padding-top:0.1945in;  border-top-style:none; border-bottom-style:none; }
+	.Appendix_20_Heading_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.1945in; margin-left:0in; margin-right:0in; padding-bottom:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1945in;  border-top-style:none;}
+	.Appendix_20_Heading_20_1_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1945in; padding-left:0in; padding-right:0in; padding-top:0.0835in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in;  border-bottom-style:none; }
+	.Appendix_20_Heading_20_1 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; padding-top:0.1945in;  border-top-style:none; border-bottom-style:none; }
+	.Appendix_20_Heading_20_1_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.1945in; margin-left:0in; margin-right:0in; padding-bottom:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1945in;  border-top-style:none;}
+	.Appendix_20_Heading_20_2_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Appendix_20_Heading_20_2 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Appendix_20_Heading_20_2_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Appendix_20_Heading_20_3 { color:#000099; font-size:13pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; margin-top:0.1665in; text-indent:0in; font-family:Arial; writing-mode:page; }
+	.Attribute_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Attribute_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Attribute_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Attribute_20_Value_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Attribute_20_Value_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Attribute_20_Value_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Bibliography_20_1_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; background-color:transparent; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Bibliography_20_1 { font-size:10pt; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; background-color:transparent; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Bibliography_20_1_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; background-color:transparent; padding-top:0.0555in;  border-top-style:none;}
+	.Child_20_Element_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Child_20_Element_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Child_20_Element_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Code_borderStart { font-size:9pt; margin-top:0in; font-family:Courier New; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; background-color:#d9d9d9; padding-left:0in; padding-right:0in; padding-top:0.0417in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; padding-bottom:0in;  border-bottom-style:none; }
+	.Code { font-size:9pt; font-family:Courier New; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; background-color:#d9d9d9; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; padding-bottom:0in; padding-top:0in;  border-top-style:none; border-bottom-style:none; }
+	.Code_borderEnd { font-size:9pt; margin-bottom:0in; font-family:Courier New; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; background-color:#d9d9d9; padding-left:0in; padding-right:0in; padding-bottom:0.0417in; border-left-style:none; border-right-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; padding-top:0in;  border-top-style:none;}
+	.Contents_20_1 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; }
+	.Contents_20_10 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.7689in; margin-right:0in; text-indent:0in; }
+	.Contents_20_2 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; margin-left:0.1665in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_3 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; margin-left:0.3335in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_4 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.5in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Contents_20_5 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.6665in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Contents_20_6 { font-size:9pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0.8335in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_7 { font-size:10pt; margin-bottom:0.0835in; margin-top:0in; font-family:Arial; writing-mode:page; margin-left:1in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_8 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.3756in; margin-right:0in; text-indent:0in; }
+	.Contents_20_9 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.572in; margin-right:0in; text-indent:0in; }
+	.Contents_20_Heading { color:#000099; font-size:16pt; font-weight:bold; margin-bottom:0.0835in; margin-top:0.1665in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; }
+	.Contributor { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Default_20_Value_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:transparent; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Default_20_Value { font-size:10pt; font-family:Arial; writing-mode:page; background-color:transparent; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Default_20_Value_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:transparent; padding-top:0.0555in;  border-top-style:none;}
+	.Example_borderStart { background-color:#e6e6e6; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; font-size:9pt; margin-left:0.3937in; margin-right:0in; margin-top:0in; padding-left:0in; padding-right:0in; padding-top:0.0417in; text-indent:0in; font-family:Courier New; writing-mode:page; padding:0.0193in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0in;  border-bottom-style:none; }
+	.Example { background-color:#e6e6e6; border-left-style:none; border-right-style:none; font-size:9pt; margin-left:0.3937in; margin-right:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Courier New; writing-mode:page; padding:0.0193in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0in; padding-top:0in;  border-top-style:none; border-bottom-style:none; }
+	.Example_borderEnd { background-color:#e6e6e6; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; border-left-style:none; border-right-style:none; font-size:9pt; margin-bottom:0in; margin-left:0.3937in; margin-right:0in; padding-bottom:0.0417in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Courier New; writing-mode:page; padding:0.0193in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0in;  border-top-style:none;}
+	.Example_20_Text_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:transparent; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Example_20_Text { font-size:10pt; font-family:Arial; writing-mode:page; background-color:transparent; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Example_20_Text_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:transparent; padding-top:0.0555in;  border-top-style:none;}
+	.Figure { font-size:10pt; font-style:italic; margin-bottom:0.0835in; margin-top:0.0835in; text-align:center ! important; font-family:Arial; writing-mode:page; }
+	.Heading_20_1_borderStart { color:#000099; font-size:18pt; font-weight:bold; margin-top:0.3335in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-left:0in; padding-right:0in; padding-top:0.0835in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Heading_20_1 { color:#000099; font-size:18pt; font-weight:bold; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; padding-bottom:0.0835in; padding-top:0.3335in;  border-top-style:none; border-bottom-style:none; }
+	.Heading_20_1_borderEnd { color:#000099; font-size:18pt; font-weight:bold; margin-bottom:0.0835in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-left:0in; padding-right:0in; padding-bottom:0in; border-left-style:none; border-right-style:none; border-bottom-style:none; padding-top:0.3335in;  border-top-style:none;}
+	.Heading_20_2_borderStart { color:#000099; font-size:14pt; font-weight:bold; margin-top:0.1665in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding:0in; border-style:none; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Heading_20_2 { color:#000099; font-size:14pt; font-weight:bold; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding:0in; border-style:none; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Heading_20_2_borderEnd { color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding:0in; border-style:none; padding-top:0.1665in;  border-top-style:none;}
+	.Heading_20_3 { color:#000099; font-size:13pt; font-weight:bold; margin-bottom:0.0835in; margin-top:0.1665in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; }
+	.Heading_20_4 { color:#000099; font-size:12pt; font-weight:bold; margin-bottom:0.0835in; margin-top:0.1665in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; }
+	.Note { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P1_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in;  border-bottom-style:none; }
+	.P1 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.P1_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.P10 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; }
+	.P11 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P12 { color:#000000; font-size:10pt; font-weight:bold; margin-bottom:0.0555in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; letter-spacing:normal; font-style:normal; }
+	.P13 { color:#333399; font-size:12pt; font-weight:bold; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; }
+	.P14 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P15 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P16 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P17 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P18 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P19 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P2_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in;  border-bottom-style:none; }
+	.P2 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.P2_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.P20 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:center ! important; }
+	.P21 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:left ! important; }
+	.P22 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:center ! important; font-style:italic; }
+	.P23 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; font-style:normal; }
+	.P24 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0.0327in; margin-right:0in; text-indent:0in; }
+	.P25 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P26 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P27 { font-size:24pt; font-family:Thorndale; writing-mode:page; margin-left:0in; margin-right:0in; margin-top:0in; margin-bottom:0in; line-height:100%; text-align:center ! important; text-indent:0in; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
+	.P3 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0547in; margin-left:0in; margin-right:0in; margin-top:0.0547in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P4 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-left:0.7457in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P5 { color:#333399; font-size:10pt; font-weight:bold; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; margin-left:0.7457in; margin-right:0in; text-indent:0.0008in; }
+	.P6_borderStart { background-color:transparent; font-size:10pt; margin-left:0in; margin-right:0in; margin-top:0.0555in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.P6 { background-color:transparent; font-size:10pt; margin-left:0in; margin-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.P6_borderEnd { background-color:transparent; font-size:10pt; margin-bottom:0.0555in; margin-left:0in; margin-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.0555in;  border-top-style:none;}
+	.P7 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.5in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P8 { font-size:10pt; margin-bottom:0.0417in; margin-left:0.3335in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P9 { font-size:10pt; margin-bottom:0.0417in; margin-left:0.1665in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Parent_20_Element_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Parent_20_Element_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Parent_20_Element_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Standard { font-size:10pt; font-family:Arial; writing-mode:page; margin-top:0.0555in; margin-bottom:0.0555in; }
+	.Subtitle_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in;  border-bottom-style:none; }
+	.Subtitle { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Subtitle_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Table { font-size:10pt; font-style:italic; margin-bottom:0.0835in; margin-top:0.0835in; text-align:center ! important; font-family:Arial; writing-mode:page; }
+	.Table_20_Contents { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.Table_20_Contents_20_Centered { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:center ! important; }
+	.Table_20_Heading { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:center ! important; font-style:italic; font-weight:bold; }
+	.Text_20_body { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.Title_borderStart { font-size:24pt; margin-top:0.1665in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-top:0.0138in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-weight:bold; padding-bottom:0.1665in;  border-bottom-style:none; }
+	.Title { font-size:24pt; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; color:#333399; font-weight:bold; padding-bottom:0.1665in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Title_borderEnd { font-size:24pt; margin-bottom:0.1665in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-bottom:0in; border-left-style:none; border-right-style:none; border-bottom-style:none; color:#333399; font-weight:bold; padding-top:0.1665in;  border-top-style:none;}
+	.Title_20_page_20_info { font-size:10pt; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; color:#333399; font-weight:bold; }
+	.Title_20_page_20_info_20_description { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-top:0in; font-family:Arial; writing-mode:page; margin-left:0.5in; margin-right:0in; text-indent:0.0008in; }
+	.Sect1 { background-color:transparent; }
+	.ChartClassExamples { width:6.0014in; float:none; }
+	.FormControlEventNames { width:6in; float:none; }
+	.NamespaceTable { width:6in; float:none; }
+	.NamespaceTable2 { width:6.0104in; margin-left:-0.0097in; margin-right:0.0007in; float:none; }
+	.RecommendedMIMETypes { width:6in; float:none; }
+	.RegisteredMIMETypes { width:6in; float:none; }
+	.SpecialUnicodeharacters { width:3.6771in; float:none; }
+	.Tabelle1 { width:5.984in; margin-left:0in; margin-right:0.0174in; float:none; }
+	.Table1 { width:6in; margin-top:0in; margin-bottom:0.0549in; float:none; }
+	.Table10 { width:6in; float:none; }
+	.Table11 { width:6in; float:none; }
+	.Table12 { width:6.0014in; float:none; }
+	.Table13 { width:6in; float:none; }
+	.Table14 { width:6in; float:none; }
+	.Table15 { width:6in; float:none; }
+	.Table16 { width:6in; float:none; }
+	.Table17 { width:4.7208in; margin-top:0in; margin-bottom:0.0514in; float:none; }
+	.Table18 { width:6in; float:none; }
+	.Table19 { width:6in; float:none; }
+	.Table2 { width:4.7208in; margin-top:0in; margin-bottom:0.0514in; float:none; }
+	.Table3 { width:4.9688in; float:none; }
+	.Table4 { width:6in; float:none; }
+	.Table5 { width:6in; float:none; }
+	.Table6 { width:6in; float:none; }
+	.Table7 { width:6in; float:none; }
+	.Table8 { width:6in; float:none; background-color:transparent; }
+	.Table9 { width:6in; float:none; }
+	.ChartClassExamples_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.ChartClassExamples_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.ChartClassExamples_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.ChartClassExamples_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.FormControlEventNames_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.FormControlEventNames_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.FormControlEventNames_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.FormControlEventNames_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.NamespaceTable_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable2_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable2_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable2_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.NamespaceTable2_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.RecommendedMIMETypes_A1 { padding:0.0201in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.RecommendedMIMETypes_A2 { padding:0.0201in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.RecommendedMIMETypes_C1 { padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.RecommendedMIMETypes_C2 { padding:0.0201in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.RegisteredMIMETypes_A1 { padding:0.0201in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.RegisteredMIMETypes_A2 { padding:0.0201in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.RegisteredMIMETypes_C1 { padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.RegisteredMIMETypes_C2 { padding:0.0201in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.SpecialUnicodeharacters_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.SpecialUnicodeharacters_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.SpecialUnicodeharacters_B1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.SpecialUnicodeharacters_B2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Tabelle1_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Tabelle1_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Tabelle1_B1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Tabelle1_B2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table1_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table1_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table1_D1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table1_D2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table10_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table10_B1_1_1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table10_B1_1_2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table10_B1_5_2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table11_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table11_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table11_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table11_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table12_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table12_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table12_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table12_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table12_C4 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table12_C8 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table13_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table13_B1_1_1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table13_B1_1_2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table13_B1_5_2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table14_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table14_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table14_I1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table14_I2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table15_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table15_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table15_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table15_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table16_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table16_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table16_D1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table16_D2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table17_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table17_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table17_B1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table17_B2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table18_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table18_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table18_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table18_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table19_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table19_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table19_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table19_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table2_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table2_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table2_B1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table2_B2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table3_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table3_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table3_B1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table3_B2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table4_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table4_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table4_D1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table4_D2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table5_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table5_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table5_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table5_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table6_A1 { padding:0.0417in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table6_A2 { padding:0.0417in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table6_D1 { padding:0.0417in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table6_D2 { padding:0.0417in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table7_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table7_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table7_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table7_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table8_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table8_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table8_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table8_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table9_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table9_B1_1_1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table9_B1_1_2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table9_B1_5_2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.ChartClassExamples_A { width:2.0007in; }
+	.FormControlEventNames_A { width:1.8118in; }
+	.FormControlEventNames_B { width:1.2188in; }
+	.FormControlEventNames_C { width:2.9694in; }
+	.NamespaceTable_A { width:0.8632in; }
+	.NamespaceTable_B { width:2.4382in; }
+	.NamespaceTable_C { width:2.6986in; }
+	.NamespaceTable2_A { width:0.875in; }
+	.NamespaceTable2_B { width:2.4375in; }
+	.NamespaceTable2_C { width:2.6979in; }
+	.RecommendedMIMETypes_A { width:3.8632in; }
+	.RecommendedMIMETypes_B { width:0.3243in; }
+	.RecommendedMIMETypes_C { width:1.8125in; }
+	.RegisteredMIMETypes_A { width:3.8743in; }
+	.RegisteredMIMETypes_B { width:0.3236in; }
+	.RegisteredMIMETypes_C { width:1.8021in; }
+	.SpecialUnicodeharacters_A { width:2.2in; }
+	.SpecialUnicodeharacters_B { width:1.4771in; }
+	.Tabelle1_A { width:5.0535in; }
+	.Tabelle1_B { width:0.9306in; }
+	.Table1_A { width:0.7813in; }
+	.Table1_B { width:0.7063in; }
+	.Table1_C { width:1.5722in; }
+	.Table1_D { width:2.9403in; }
+	.Table10_A { width:1.2354in; }
+	.Table10_B { width:0.9535in; }
+	.Table10_F { width:0.9507in; }
+	.Table11_A { width:1.3785in; }
+	.Table11_B { width:2.0201in; }
+	.Table11_C { width:2.6014in; }
+	.Table12_A { width:2in; }
+	.Table12_B { width:2.0014in; }
+	.Table12_C { width:2in; }
+	.Table13_A { width:1.2604in; }
+	.Table13_B { width:0.9278in; }
+	.Table13_C { width:0.9528in; }
+	.Table13_F { width:0.9535in; }
+	.Table14_A { width:2.3313in; }
+	.Table14_B { width:0.4715in; }
+	.Table14_C { width:0.4035in; }
+	.Table14_I { width:0.4361in; }
+	.Table15_A { width:0.8632in; }
+	.Table15_B { width:2.4382in; }
+	.Table15_C { width:2.6986in; }
+	.Table16_A { width:1.2431in; }
+	.Table16_B { width:1.7361in; }
+	.Table16_C { width:1.7069in; }
+	.Table16_D { width:1.3139in; }
+	.Table17_A { width:0.709in; }
+	.Table17_B { width:4.0118in; }
+	.Table18_A { width:0.8646in; }
+	.Table18_B { width:2.4368in; }
+	.Table18_C { width:2.6986in; }
+	.Table19_A { width:0.8632in; }
+	.Table19_B { width:2.4382in; }
+	.Table19_C { width:2.6986in; }
+	.Table2_A { width:0.709in; }
+	.Table2_B { width:4.0118in; }
+	.Table3_A { width:0.7285in; }
+	.Table3_B { width:4.2403in; }
+	.Table4_A { width:1.2431in; }
+	.Table4_B { width:1.7361in; }
+	.Table4_C { width:1.7069in; }
+	.Table4_D { width:1.3139in; }
+	.Table5_A { width:0.8646in; }
+	.Table5_B { width:2.4368in; }
+	.Table5_C { width:2.6986in; }
+	.Table6_A { width:0.9174in; }
+	.Table6_B { width:1.759in; }
+	.Table6_C { width:2.1569in; }
+	.Table6_D { width:1.1667in; }
+	.Table7_A { width:1.8014in; }
+	.Table7_B { width:1.2188in; }
+	.Table7_C { width:2.9799in; }
+	.Table8_A { width:0.7799in; }
+	.Table8_B { width:0.6139in; }
+	.Table8_C { width:4.6063in; }
+	.Table9_A { width:1.2354in; }
+	.Table9_B { width:0.9535in; }
+	.Table9_F { width:0.9507in; }
+	.Alien_20_Attribute { font-family:Courier New; background-color:transparent; }
+	.Alien_20_Attribute_20_Value { font-family:Courier New; }
+	.Alien_20_Element { font-family:Courier New; background-color:transparent; }
+	.Attribute { font-family:Courier New; font-size:10pt; background-color:transparent; }
+	.Attribute_20_Value { font-family:Courier New; font-size:10pt; background-color:transparent; }
+	.Attribute_20_Value_20_Fragment { font-family:Courier New; background-color:transparent; }
+	.Attribute_20_Value_20_Instance { font-family:Courier New; }
+	.Attribute_20_Value_20_Param { background-color:transparent; font-size:10pt; font-family:Courier New; font-style:italic; }
+	.Datatype { font-family:Courier New; }
+	.Def { font-style:italic; background-color:transparent; }
+	.Element { font-family:Courier New; font-size:10pt; background-color:transparent; }
+	.Emphasis { font-style:italic; background-color:transparent; }
+	.Example { font-family:Courier New; font-weight:normal; }
+	.Example_20_Label { background-color:transparent; font-weight:bold; }
+	.Formula { font-style:italic; }
+	.Formula_20_Super { font-style:italic; vertical-align:super; font-size:58%;}
+	.Furmula_20_Sub { font-style:italic; vertical-align:sub; font-size:58%;}
+	.ISO_20_Keyword { background-color:transparent; }
+	.Keyword { background-color:transparent; font-size:10pt; font-family:Courier New; }
+	.Label { font-weight:bold; background-color:transparent; }
+	.Misc_20_Source { font-family:Courier New; background-color:transparent; }
+	.Note_20_Label { background-color:transparent; font-weight:bold; }
+	.OWL_20_Class { font-family:Courier New; }
+	.OWL_20_Property { font-family:Courier New; }
+	.Source_20_Text { font-family:Courier New; }
+	.Strong_20_Emphasis { font-weight:bold; background-color:transparent; }
+	.T1 { font-family:Courier New; font-size:10pt; }
+	.T2 { font-family:Arial; font-size:10pt; }
+	.T3 { font-style:italic; }
+	.T4 { font-style:normal; }
+	.T5 { font-weight:normal; }
+	.T6 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:normal; font-weight:normal; }
+	.T7 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:normal; font-weight:normal; }
+	.T8 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:italic; font-weight:normal; }
+	.T9 { color:#0000ff; font-family:Arial; letter-spacing:normal; font-style:normal; text-decoration:none ! important; font-weight:normal; }
+	<!-- ODF styles with no properties representable as CSS -->
+	.Sect2 .SpecialUnicodeharacters.1 .Definition { }
+	</style></head><body dir="ltr" style="max-width:8.5in;margin-top:1in; margin-bottom:0.4925in; margin-left:1.2492in; margin-right:1.2492in; "><div class="P3"><!--Next 'div' is a draw:frame.--><div style="height:0.628in;width:2.4075in; padding:0; " class="fr4" id="OASISLogo"><img style="height:1.5951cm;width:6.1151cm;" alt="" src="./Pictures/100000000000011C0000004AA64D38BB.gif"/></div></div><p class="Title_borderStart">Open Document Format for Office Applications (OpenDocument) Version 1.2</p><p class="Subtitle">Part 1: OpenDocument Schema</p><p class="Subtitle">OASIS Standard</p><p class="Subtitle_borderEnd">29 September 2011</p><p class="P13">Specification URIs:</p><p class="Title_20_page_20_info">This version:</p><p class="Title_20_page_20_info_20_description"><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.odt">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.odt</a> (Authoritative)<br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.pdf">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.pdf</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html</a></p><p class="Title_20_page_20_info">Previous version:</p><p class="Title_20_page_20_info_20_description"><a href="http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part1.odt">http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part1.odt</a>       (Authoritative)<br/><a href="http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part1.pdf">http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part1.pdf</a><br/><a href="http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part1.html">http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part1.html</a></p><p class="Title_20_page_20_info">Latest version:</p><p class="Title_20_page_20_info_20_description"><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.odt">http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.odt</a> (Authoritative)<a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html"><br/></a><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.pdf">http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.pdf</a><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html"><br/></a><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html">http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html</a></p><p class="Title_20_page_20_info">Technical Committee:</p><p class="Title_20_page_20_info_20_description"><a href="http://www.oasis-open.org/committees/office/">OASIS Open Document Format for Office Applications (OpenDocument) TC</a></p><p class="Title_20_page_20_info">Chairs:</p><p class="Title_20_page_20_info_20_description"><a href="mailto:robert_weir@us.ibm.com">Rob Weir</a>, <a href="http://www.ibm.com/">IBM</a><br/><a href="mailto:michael.brauer@oracle.com">Michael Brauer</a>, <a href="http://www.oracle.com/">Oracle Corporation</a></p><p class="Title_20_page_20_info">Editors:</p><p class="Contributor"><a href="mailto:patrick@durusau.net">Patrick Durusau</a> </p><p class="Contributor"><a href="mailto:michael.brauer@oracle.com">Michael Brauer</a>, <a href="http://www.oracle.com/">Oracle Corporation</a></p><p class="Title_20_page_20_info"><a id="Related_Work"/>Related work:</p><p class="Title_20_page_20_info_20_description">This document is part of the <a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os.odt">OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 </a>specification.</p><p class="Title_20_page_20_info_20_description">The OpenDocument v1.2 specification has these parts:</p><p class="P4"><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.odt">OpenDocument v1.2 part 1: OpenDocument Schema (this part)</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part2.odt">OpenDocument v1.2 part 2: Recalculated Formula (OpenFormula) Format</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.odt">OpenDocument v1.2 part 3: Packages</a></p><p class="Title_20_page_20_info_20_description">OpenDocument v1.2 part 1 defines these schemas and ontologies:</p><p class="P5"><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-schema.rng"><span class="T5">OpenDocument v1.2 Relax NG Schema</span></a><span class="T5"><br/></span><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-metadata.owl"><span class="T5">OpenDocument v1.2 Metadata Manifest Ontology</span></a></p><p class="Title_20_page_20_info">Declared XML namespaces:</p><p class="Title_20_page_20_info_20_description">urn:oasis:names:tc:opendocument:xmlns:animation:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:chart:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:config:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:database:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:drawing:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:form:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:manifest:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:meta:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:data style:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:office:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:presentation:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:script:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:table:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:text:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:style:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:of:1.2<br/><a href="http://docs.oasis-open.org/ns/office/1.2/meta/odf#">http://docs.oasis-open.org/ns/office/1.2/meta/odf#</a></p><p class="Title_20_page_20_info">Abstract:</p><p class="Title_20_page_20_info_20_description">This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.2 specification.</p><p class="Title_20_page_20_info_20_description">It defines an XML schema for office applications and its semantics. The schema is suitable for office documents, including text documents, spreadsheets, charts and graphical documents like drawings or presentations, but is not restricted to these kinds of documents.</p><p class="Title_20_page_20_info">Status:</p><p class="P11">This document was last revised or approved by the OASIS Open Document Format for Office Applications (OpenDocument) TC on the above date. The level of approval is also listed above. Check the "Latest version" location noted above for possible later revisions of this document.</p><p class="Title_20_page_20_info_20_description"><span class="T6">Technical Committee members should send comments on this specification to the Technical Committee’s email list. Others should send comments to the Technical Committee by using the “</span><a href="http://www.oasis-open.org/committees/comments/form.php?wg_abbrev=office"><span class="T9">Send A Comment</span></a><span class="T6">” button on the Technical Committee’s web page at </span><a href="http://www.oasis-open.org/committees/office/"><span class="T9">http://www.oasis-open.org/committees/office/</span></a><span class="T6">.</span></p><p class="Title_20_page_20_info_20_description"><span class="T6">For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to </span><span class="T6">the Intellectual Property Rights section of the Technical Committee web page (</span><a href="http://www.oasis-open.org/committees/office/ipr.php"><span class="T9">http://www.oasis-open.org/committees/office/ipr.php</span></a><span class="T6">).</span></p><p class="Title_20_page_20_info">Citation format:</p><p class="Title_20_page_20_info_20_description">When referencing this specification the following citation format should be used:</p><p class="P12">OpenDocument-v1.2-part1</p><p class="Title_20_page_20_info_20_description"><span class="T8">Open Document Format for Office Applications (</span><span class="T8">OpenDocument</span><span class="T8">) Version </span><span class="T8">1.2</span><span class="T8"/><span class="T8"> Part </span><span class="T8">1</span><span class="T8">: </span><span class="T8">OpenDocument</span><span class="T8"> Schema. </span><span class="T7">29 September 2011. OASIS Standard. </span><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html</a></p><p class="P2">Notices</p><p class="Text_20_body">Copyright © OASIS Open 2002–2011. All Rights Reserved.</p><p class="Text_20_body">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 <a href="http://www.oasis-open.org/who/intellectualproperty.php">Policy</a> may be found at the OASIS website.</p><p class="Text_20_body">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.</p><p class="Text_20_body">The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.</p><p class="Text_20_body">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.</p><p class="Text_20_body">OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.</p><p class="Text_20_body">OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.</p><p class="Text_20_body">OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.</p><p class="Text_20_body">The names "OASIS", “OpenDocument”, “Open Document Format”, and “ODF” are trademarks of <a href="http://www.oasis-open.org/">OASIS</a>, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see <a href="http://www.oasis-open.org/who/trademark.php">http://www.oasis-open.org/who/trademark.php</a> for above guidance.</p><p class="P1">Table of Contents</p><table border="0" cellspacing="0" cellpadding="0" class="Sect1"><colgroup/><tr><td><p class="P10"><a href="#__RefHeading__1414978_253892949">1 Introduction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1414980_253892949">1.1 Introduction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1414982_253892949">1.2 Terminology</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1414984_253892949">1.3 Normative References</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1414986_253892949">1.4 Non Normative References</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1414988_253892949">1.5 Namespaces</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__440342_826425813">2 OpenDocument Documents, Consumers and Producers</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1718302_1219268628">2.1 Introduction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__440344_826425813">2.2 Documents</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440346_826425813">2.2.1 OpenDocument Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440348_826425813">2.2.2 OpenDocument Extended Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440350_826425813">2.2.3 OpenDocument Text Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440352_826425813">2.2.4 OpenDocument Spreadsheet Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440354_826425813">2.2.5 OpenDocument Drawing Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440356_826425813">2.2.6 OpenDocument Presentation Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440358_826425813">2.2.7 OpenDocument Chart Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440360_826425813">2.2.8 OpenDocument Image Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440362_826425813">2.2.9 OpenDocument Formula Document</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440364_826425813">2.2.10 OpenDocument Database Front End Document</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420376_2538929491">2.3 Producers</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440366_826425813">2.3.1 OpenDocument Producer</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__440368_826425813">2.3.2 OpenDocument Extended Producer</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420382_2538929491">2.4 Consumer</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__440370_826425813">3 Document Structure</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1414994_253892949">3.1 Document Representation </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1414996_253892949">3.1.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1414998_253892949">3.1.2 &lt;office:document&gt;(Single OpenDocument XML Files)</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415000_253892949">3.1.3 Package OpenDocument Files</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415002_253892949">3.1.3.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415004_253892949">3.1.3.2 &lt;office:document-content&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415006_253892949">3.1.3.3 &lt;office:document-styles&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415008_253892949">3.1.3.4 &lt;office:document-meta&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415010_253892949">3.1.3.5 &lt;office:document-settings&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415012_253892949">3.1.4 Summary of Document Representation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415014_253892949">3.2 &lt;office:meta&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415016_253892949">3.3 &lt;office:body&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415018_253892949">3.4 &lt;office:text&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415020_253892949">3.5 &lt;office:drawing&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415022_253892949">3.6 &lt;office:presentation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415024_253892949">3.7 &lt;office:spreadsheet&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415026_253892949">3.8 &lt;office:chart&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415028_253892949">3.9 &lt;office:image&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415030_253892949">3.10 &lt;office:settings&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415032_253892949">3.10.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415034_253892949">3.10.2 &lt;config:config-item-set&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415036_253892949">3.10.3 &lt;config:config-item&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415038_253892949">3.10.4 &lt;config:config-item-map-indexed&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415040_253892949">3.10.5 &lt;config:config-item-map-entry&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415042_253892949">3.10.6 &lt;config:config-item-map-named&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415044_253892949">3.11 Cursor Position Setting</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415046_253892949">3.12 &lt;office:scripts&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415048_253892949">3.13 &lt;office:script&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415050_253892949">3.14 &lt;office:font-face-decls&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415052_253892949">3.15 Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415054_253892949">3.15.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415056_253892949">3.15.2 &lt;office:styles&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415058_253892949">3.15.3 &lt;office:automatic-styles&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415060_253892949">3.15.4 &lt;office:master-styles&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415062_253892949">3.16 Document Signatures</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__440372_826425813">3.17 Foreign Elements and Attributes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420346_2538929491">3.18 White Space Processing and EOL Handling</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420348_2538929491">3.19 MIME Types and File Name Extensions</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415064_253892949">4 Metadata</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415066_253892949">4.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415068_253892949">4.2 RDF Metadata</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415070_253892949">4.2.1 In Content Metadata (RDFa)</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415072_253892949">4.2.2 manifest.rdf</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415074_253892949">4.2.2.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415076_253892949">4.2.2.2 odf:ContentFile</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415078_253892949">4.2.2.3 odf:StylesFile</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415080_253892949">4.2.2.4 odf:Element</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415082_253892949">4.2.2.5 odf:prefix</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415084_253892949">4.2.2.6 odf:suffix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415086_253892949">4.3 Non-RDF Metadata</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415088_253892949">4.3.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415090_253892949">4.3.2 Pre-Defined Metadata Elements</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415092_253892949">4.3.2.1 &lt;meta:generator&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415094_253892949">4.3.2.2 &lt;dc:title&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415096_253892949">4.3.2.3 &lt;dc:description&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415098_253892949">4.3.2.4 &lt;dc:subject&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415100_253892949">4.3.2.5 &lt;meta:keyword&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415102_253892949">4.3.2.6 &lt;meta:initial-creator&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415104_253892949">4.3.2.7 &lt;dc:creator&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415106_253892949">4.3.2.8 &lt;meta:printed-by&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415108_253892949">4.3.2.9 &lt;meta:creation-date&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415110_253892949">4.3.2.10 &lt;dc:date&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415112_253892949">4.3.2.11 &lt;meta:print-date&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415114_253892949">4.3.2.12 &lt;meta:template&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415116_253892949">4.3.2.13 &lt;meta:auto-reload&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415118_253892949">4.3.2.14 &lt;meta:hyperlink-behaviour&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415120_253892949">4.3.2.15 &lt;dc:language&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415122_253892949">4.3.2.16 &lt;meta:editing-cycles&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415124_253892949">4.3.2.17 &lt;meta:editing-duration&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415126_253892949">4.3.2.18 &lt;meta:document-statistic&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415128_253892949">4.3.3 &lt;meta:user-defined&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415130_253892949">5 Text Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415132_253892949">5.1 Headings, Paragraphs and Basic Text Structure</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415134_253892949">5.1.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415136_253892949">5.1.2 &lt;text:h&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415138_253892949">5.1.3 &lt;text:p&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415140_253892949">5.2 &lt;text:page-sequence&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415142_253892949">5.2.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415144_253892949">5.2.2 &lt;text:page&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415146_253892949">5.3 Lists</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415148_253892949">5.3.1 &lt;text:list&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415150_253892949">5.3.2 Default List Style </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415152_253892949">5.3.3 &lt;text:list-header&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415154_253892949">5.3.4 &lt;text:list-item&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415156_253892949">5.3.5 List Item Style Rules</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415158_253892949">5.3.6 &lt;text:numbered-paragraph&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415160_253892949">5.3.7 Numbered Paragraph Style Rules</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415162_253892949">5.4 &lt;text:section&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415164_253892949">5.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415166_253892949">5.4.2 &lt;text:section-source&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415168_253892949">5.5 Change Tracking</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415170_253892949">5.5.1 &lt;text:tracked-changes&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415172_253892949">5.5.2 &lt;text:changed-region&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415174_253892949">5.5.3 &lt;text:insertion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415176_253892949">5.5.4 &lt;text:deletion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415178_253892949">5.5.5 &lt;text:format-change&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415180_253892949">5.5.6 &lt;office:change-info&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415182_253892949">5.5.7 Change Marks</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__440374_826425813">5.5.7.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415184_253892949">5.5.7.2 &lt;text:change-start&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415186_253892949">5.5.7.3 &lt;text:change-end&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415188_253892949">5.5.7.4 &lt;text:change&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415190_253892949">5.6 &lt;text:soft-page-break&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415192_253892949">5.7 Document Declarations</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415194_253892949">6 Paragraph Elements Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415196_253892949">6.1 Basic Text Content</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415198_253892949">6.1.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415200_253892949">6.1.2 White Space Characters</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415202_253892949">6.1.3 &lt;text:s&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415204_253892949">6.1.4 &lt;text:tab&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415206_253892949">6.1.5 &lt;text:line-break&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415208_253892949">6.1.6 Soft Hyphens, Hyphens, and Non-breaking Spaces</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415210_253892949">6.1.7 &lt;text:span&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415212_253892949">6.1.8 &lt;text:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415214_253892949">6.1.9 &lt;text:meta&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415216_253892949">6.1.10 &lt;text:number&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415218_253892949">6.2 Bookmarks and References</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415220_253892949">6.2.1 Bookmarks</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415222_253892949">6.2.1.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415224_253892949">6.2.1.2 &lt;text:bookmark&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415226_253892949">6.2.1.3 &lt;text:bookmark-start&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415228_253892949">6.2.1.4 &lt;text:bookmark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415230_253892949">6.2.2 References</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415232_253892949">6.2.2.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415234_253892949">6.2.2.2 &lt;text:reference-mark&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415236_253892949">6.2.2.3 &lt;text:reference-mark-start&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415238_253892949">6.2.2.4 &lt;text:reference-mark-end&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415240_253892949">6.3 Notes</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415242_253892949">6.3.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415244_253892949">6.3.2 &lt;text:note&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415246_253892949">6.3.3 &lt;text:note-citation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415248_253892949">6.3.4 &lt;text:note-body&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415250_253892949">6.4 &lt;text:ruby&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415252_253892949">6.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415254_253892949">6.4.2 &lt;text:ruby-base&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415256_253892949">6.4.3 &lt;text:ruby-text&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415258_253892949">7 Text Fields</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415260_253892949">7.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415262_253892949">7.2 Common Characteristics of Field Elements</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415264_253892949">7.3 Document Fields</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415266_253892949">7.3.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415268_253892949">7.3.2 &lt;text:date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415270_253892949">7.3.3 &lt;text:time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415272_253892949">7.3.4 &lt;text:page-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415274_253892949">7.3.5 &lt;text:page-continuation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415276_253892949">7.3.6 Subsequent Author Fields</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415278_253892949">7.3.6.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415280_253892949">7.3.6.2 &lt;text:sender-firstname&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415282_253892949">7.3.6.3 &lt;text:sender-lastname&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415284_253892949">7.3.6.4 &lt;text:sender-initials&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415286_253892949">7.3.6.5 &lt;text:sender-title&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415288_253892949">7.3.6.6 &lt;text:sender-position&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415290_253892949">7.3.6.7 &lt;text:sender-email&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415292_253892949">7.3.6.8 &lt;text:sender-phone-private&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415294_253892949">7.3.6.9 &lt;text:sender-fax&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415296_253892949">7.3.6.10 &lt;text:sender-company&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415298_253892949">7.3.6.11 &lt;text:sender-phone-work&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415300_253892949">7.3.6.12 &lt;text:sender-street&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415302_253892949">7.3.6.13 &lt;text:sender-city&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415304_253892949">7.3.6.14 &lt;text:sender-postal-code&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415306_253892949">7.3.6.15 &lt;text:sender-country&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415308_253892949">7.3.6.16 &lt;text:sender-state-or-province&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415310_253892949">7.3.7 Author Fields</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415312_253892949">7.3.7.1 &lt;text:author-name&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415314_253892949">7.3.7.2 &lt;text:author-initials&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415316_253892949">7.3.8 &lt;text:chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415318_253892949">7.3.9 &lt;text:file-name&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415320_253892949">7.3.10 &lt;text:template-name&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415322_253892949">7.3.11 &lt;text:sheet-name&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415324_253892949">7.4 Variable Fields</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415326_253892949">7.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415328_253892949">7.4.2 &lt;text:variable-decls&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415330_253892949">7.4.3 &lt;text:variable-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415332_253892949">7.4.4 &lt;text:variable-set&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415334_253892949">7.4.5 &lt;text:variable-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415336_253892949">7.4.6 &lt;text:variable-input&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415338_253892949">7.4.7 &lt;text:user-field-decls&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415340_253892949">7.4.8 &lt;text:user-field-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415342_253892949">7.4.9 &lt;text:user-field-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415344_253892949">7.4.10 &lt;text:user-field-input&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415346_253892949">7.4.11 &lt;text:sequence-decls&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415348_253892949">7.4.12 &lt;text:sequence-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415350_253892949">7.4.13 &lt;text:sequence&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415352_253892949">7.4.14 &lt;text:expression&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415354_253892949">7.4.15 &lt;text:text-input&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415356_253892949">7.5 Metadata Fields</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415358_253892949">7.5.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415360_253892949">7.5.2 &lt;text:initial-creator&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415362_253892949">7.5.3 &lt;text:creation-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415364_253892949">7.5.4 &lt;text:creation-time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415366_253892949">7.5.5 &lt;text:description&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415368_253892949">7.5.6 &lt;text:user-defined&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415370_253892949">7.5.7 &lt;text:print-time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415372_253892949">7.5.8 &lt;text:print-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415374_253892949">7.5.9 &lt;text:printed-by&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415376_253892949">7.5.10 &lt;text:title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415378_253892949">7.5.11 &lt;text:subject&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415380_253892949">7.5.12 &lt;text:keywords&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415382_253892949">7.5.13 &lt;text:editing-cycles&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415384_253892949">7.5.14 &lt;text:editing-duration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415386_253892949">7.5.15 &lt;text:modification-time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415388_253892949">7.5.16 &lt;text:modification-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415390_253892949">7.5.17 &lt;text:creator&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415392_253892949">7.5.18 Document Statistics Fields</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415394_253892949">7.5.18.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415396_253892949">7.5.18.2 &lt;text:page-count&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415398_253892949">7.5.18.3 &lt;text:paragraph-count&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415400_253892949">7.5.18.4 &lt;text:word-count&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415402_253892949">7.5.18.5 &lt;text:character-count&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415404_253892949">7.5.18.6 &lt;text:table-count&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415406_253892949">7.5.18.7 &lt;text:image-count&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415408_253892949">7.5.18.8 &lt;text:object-count&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415410_253892949">7.5.19 &lt;text:meta-field&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415412_253892949">7.6 Database Fields</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415414_253892949">7.6.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415416_253892949">7.6.2 &lt;form:connection-resource&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415418_253892949">7.6.3 &lt;text:database-display&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415420_253892949">7.6.4 &lt;text:database-next&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415422_253892949">7.6.5 &lt;text:database-row-select&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415424_253892949">7.6.6 &lt;text:database-row-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415426_253892949">7.6.7 &lt;text:database-name&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415428_253892949">7.7 More Fields</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415430_253892949">7.7.1 Page Variable Fields</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415432_253892949">7.7.1.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415434_253892949">7.7.1.2 &lt;text:page-variable-set&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415436_253892949">7.7.1.3 &lt;text:page-variable-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415438_253892949">7.7.2 &lt;text:placeholder&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415440_253892949">7.7.3 &lt;text:conditional-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415442_253892949">7.7.4 &lt;text:hidden-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415444_253892949">7.7.5 &lt;text:reference-ref&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415446_253892949">7.7.6 &lt;text:bookmark-ref&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415448_253892949">7.7.7 &lt;text:note-ref&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415450_253892949">7.7.8 &lt;text:sequence-ref&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415452_253892949">7.7.9 &lt;text:script&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415454_253892949">7.7.10 &lt;text:execute-macro&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415456_253892949">7.7.11 &lt;text:hidden-paragraph&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415458_253892949">7.7.12 &lt;text:dde-connection&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415460_253892949">7.7.13 &lt;text:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415462_253892949">7.7.14 &lt;text:table-formula&gt; (deprecated)</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415464_253892949">8 Text Indexes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415466_253892949">8.1 Index Marks</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415468_253892949">8.1.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415470_253892949">8.1.2 &lt;text:toc-mark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415472_253892949">8.1.3 &lt;text:toc-mark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415474_253892949">8.1.4 &lt;text:toc-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415476_253892949">8.1.5 &lt;text:user-index-mark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415478_253892949">8.1.6 &lt;text:user-index-mark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415480_253892949">8.1.7 &lt;text:user-index-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415482_253892949">8.1.8 &lt;text:alphabetical-index-mark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415484_253892949">8.1.9 &lt;text:alphabetical-index-mark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415486_253892949">8.1.10 &lt;text:alphabetical-index-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415488_253892949">8.1.11 &lt;text:bibliography-mark&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415490_253892949">8.2 Index Structure</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415492_253892949">8.2.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415494_253892949">8.2.2 &lt;text:index-body&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415496_253892949">8.2.3 &lt;text:index-title&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415498_253892949">8.3 &lt;text:table-of-content&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415500_253892949">8.3.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415502_253892949">8.3.2 &lt;text:table-of-content-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415504_253892949">8.3.3 &lt;text:table-of-content-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415506_253892949">8.4 &lt;text:illustration-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415508_253892949">8.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415510_253892949">8.4.2 &lt;text:illustration-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415512_253892949">8.4.3 &lt;text:illustration-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415514_253892949">8.5 &lt;text:table-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415516_253892949">8.5.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415518_253892949">8.5.2 &lt;text:table-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415520_253892949">8.5.3 &lt;text:table-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415522_253892949">8.6 &lt;text:object-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415524_253892949">8.6.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415526_253892949">8.6.2 &lt;text:object-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415528_253892949">8.6.3 &lt;text:object-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415530_253892949">8.7 &lt;text:user-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415532_253892949">8.7.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415534_253892949">8.7.2 &lt;text:user-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415536_253892949">8.7.3 &lt;text:user-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415538_253892949">8.8 &lt;text:alphabetical-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415540_253892949">8.8.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415542_253892949">8.8.2 &lt;text:alphabetical-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415544_253892949">8.8.3 &lt;text:alphabetical-index-auto-mark-file&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415546_253892949">8.8.4 &lt;text:alphabetical-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415548_253892949">8.9 &lt;text:bibliography&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415550_253892949">8.9.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415552_253892949">8.9.2 &lt;text:bibliography-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415554_253892949">8.9.3 &lt;text:bibliography-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415556_253892949">8.10 &lt;text:index-source-styles&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415558_253892949">8.11 &lt;text:index-source-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415560_253892949">8.12 &lt;text:index-title-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415562_253892949">8.13 Index Template Entries</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415564_253892949">8.13.1 &lt;text:index-entry-chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415566_253892949">8.13.2 &lt;text:index-entry-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415568_253892949">8.13.3 &lt;text:index-entry-page-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415570_253892949">8.13.4 &lt;text:index-entry-span&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415572_253892949">8.13.5 &lt;text:index-entry-bibliography&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415574_253892949">8.13.6 &lt;text:index-entry-tab-stop&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415576_253892949">8.13.7 &lt;text:index-entry-link-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415578_253892949">8.13.8 &lt;text:index-entry-link-end&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415580_253892949">9 Tables</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415582_253892949">9.1 Basic Tables</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415584_253892949">9.1.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415586_253892949">9.1.2 &lt;table:table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415588_253892949">9.1.3 &lt;table:table-row&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415590_253892949">9.1.4 &lt;table:table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415592_253892949">9.1.5 &lt;table:covered-table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415594_253892949">9.1.6 &lt;table:table-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415596_253892949">9.1.7 &lt;table:table-header-rows&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415598_253892949">9.1.8 &lt;table:table-rows&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415600_253892949">9.1.9 &lt;table:table-row-group&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415602_253892949">9.1.10 &lt;table:table-column-group&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415604_253892949">9.1.11 &lt;table:table-header-columns&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415606_253892949">9.1.12 &lt;table:table-columns&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415608_253892949">9.1.13 &lt;table:title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415610_253892949">9.1.14 &lt;table:desc&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415612_253892949">9.2 Advanced Tables</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415614_253892949">9.2.1 Referencing Table Cells</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415616_253892949">9.2.2 Absolute and relative cell addressing</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415618_253892949">9.2.3 Cell Range Address</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415620_253892949">9.2.4 Column and Row Range Addresses</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415622_253892949">9.2.5 Cell Range Address List</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415624_253892949">9.2.6 &lt;table:table-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415626_253892949">9.2.7 &lt;table:scenario&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415628_253892949">9.2.8 &lt;table:shapes&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415630_253892949">9.3 Advanced Table Cells</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415632_253892949">9.3.1 &lt;table:cell-range-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415634_253892949">9.3.2 &lt;table:detective&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415636_253892949">9.3.3 &lt;table:operation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415638_253892949">9.3.4 &lt;table:highlighted-range&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415640_253892949">9.4 Spreadsheet Document Content</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415642_253892949">9.4.1 &lt;table:calculation-settings&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415644_253892949">9.4.2 &lt;table:null-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415646_253892949">9.4.3 &lt;table:iteration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415648_253892949">9.4.4 &lt;table:content-validations&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415650_253892949">9.4.5 &lt;table:content-validation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415652_253892949">9.4.6 &lt;table:help-message&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415654_253892949">9.4.7 &lt;table:error-message&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415656_253892949">9.4.8 &lt;table:error-macro&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415658_253892949">9.4.9 &lt;table:label-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415660_253892949">9.4.10 &lt;table:label-ranges&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415662_253892949">9.4.11 &lt;table:named-expressions&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415664_253892949">9.4.12 &lt;table:named-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415666_253892949">9.4.13 &lt;table:named-expression&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415668_253892949">9.4.14 &lt;table:database-ranges&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415670_253892949">9.4.15 &lt;table:database-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415672_253892949">9.4.16 &lt;table:database-source-sql&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415674_253892949">9.4.17 &lt;table:database-source-table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415676_253892949">9.4.18 &lt;table:database-source-query&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415678_253892949">9.4.19 &lt;table:sort&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415680_253892949">9.4.20 &lt;table:sort-by&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415682_253892949">9.4.21 &lt;table:subtotal-rules&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415684_253892949">9.4.22 &lt;table:sort-groups&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415686_253892949">9.4.23 &lt;table:subtotal-rule&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415688_253892949">9.4.24 &lt;table:subtotal-field&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415690_253892949">9.5 Filters</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415692_253892949">9.5.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415694_253892949">9.5.2 &lt;table:filter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415696_253892949">9.5.3 &lt;table:filter-and&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415698_253892949">9.5.4 &lt;table:filter-or&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415700_253892949">9.5.5 &lt;table:filter-condition&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415702_253892949">9.5.6 &lt;table:filter-set-item&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415704_253892949">9.6 Data Pilot Tables</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415706_253892949">9.6.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415708_253892949">9.6.2 &lt;table:data-pilot-tables&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415710_253892949">9.6.3 &lt;table:data-pilot-table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415712_253892949">9.6.4 Data Pilot Table Source</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415714_253892949">9.6.5 &lt;table:source-cell-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415716_253892949">9.6.6 &lt;table:source-service&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415718_253892949">9.6.7 &lt;table:data-pilot-field&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415720_253892949">9.6.8 &lt;table:data-pilot-level&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415722_253892949">9.6.9 &lt;table:data-pilot-subtotals&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415724_253892949">9.6.10 &lt;table:data-pilot-subtotal&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415726_253892949">9.6.11 &lt;table:data-pilot-members&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415728_253892949">9.6.12 &lt;table:data-pilot-member&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415730_253892949">9.6.13 &lt;table:data-pilot-display-info&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415732_253892949">9.6.14 &lt;table:data-pilot-sort-info&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415734_253892949">9.6.15 &lt;table:data-pilot-layout-info&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415736_253892949">9.6.16 &lt;table:data-pilot-field-reference&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415738_253892949">9.6.17 &lt;table:data-pilot-groups&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415740_253892949">9.6.18 &lt;table:data-pilot-group&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415742_253892949">9.6.19 &lt;table:data-pilot-group-member&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415744_253892949">9.7 &lt;table:consolidation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415746_253892949">9.8 &lt;table:dde-links&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415748_253892949">9.9 Change Tracking in Spreadsheets</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415750_253892949">9.9.1 General </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415752_253892949">9.9.2 &lt;table:tracked-changes&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415754_253892949">9.9.3 &lt;table:insertion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415756_253892949">9.9.4 &lt;table:dependencies&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415758_253892949">9.9.5 &lt;table:dependency&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415760_253892949">9.9.6 &lt;table:deletions&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415762_253892949">9.9.7 &lt;table:cell-content-deletion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415764_253892949">9.9.8 &lt;table:change-deletion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415766_253892949">9.9.9 &lt;table:deletion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415768_253892949">9.9.10 &lt;table:cut-offs&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415770_253892949">9.9.11 &lt;table:insertion-cut-off&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415772_253892949">9.9.12 &lt;table:movement-cut-off&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415774_253892949">9.9.13 &lt;table:movement&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415776_253892949">9.9.14 &lt;table:source-range-address&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415778_253892949">9.9.15 &lt;table:target-range-address&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415780_253892949">9.9.16 &lt;table:change-track-table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415782_253892949">9.9.17 &lt;table:cell-content-change&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415784_253892949">9.9.18 &lt;table:cell-address&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415786_253892949">9.9.19 &lt;table:previous&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415788_253892949">10 Graphic Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415790_253892949">10.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415792_253892949">10.2 Enhanced Page Features for Graphical Applications</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415794_253892949">10.2.1 &lt;style:handout-master&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415796_253892949">10.2.2 &lt;draw:layer-set&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415798_253892949">10.2.3 &lt;draw:layer&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415800_253892949">10.2.4 &lt;draw:page&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415802_253892949">10.2.5 &lt;draw:equation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415804_253892949">10.3 Drawing Shapes</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415806_253892949">10.3.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415808_253892949">10.3.2 &lt;draw:rect&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415810_253892949">10.3.3 &lt;draw:line&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415812_253892949">10.3.4 &lt;draw:polyline&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415814_253892949">10.3.5 &lt;draw:polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415816_253892949">10.3.6 &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415818_253892949">10.3.7 &lt;draw:path&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415820_253892949">10.3.8 &lt;draw:circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415822_253892949">10.3.9 &lt;draw:ellipse&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415824_253892949">10.3.10 &lt;draw:connector&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415826_253892949">10.3.11 &lt;draw:caption&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415828_253892949">10.3.12 &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415830_253892949">10.3.13 &lt;draw:control&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415832_253892949">10.3.14 &lt;draw:page-thumbnail&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415834_253892949">10.3.15 &lt;draw:g&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415836_253892949">10.3.16 &lt;draw:glue-point&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415838_253892949">10.3.17 &lt;svg:title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415840_253892949">10.3.18 &lt;svg:desc&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415842_253892949">10.3.19 &lt;office:event-listeners&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415844_253892949">10.4 Frames</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415846_253892949">10.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415848_253892949">10.4.2 &lt;draw:frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415850_253892949">10.4.3 &lt;draw:text-box&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415852_253892949">10.4.4 &lt;draw:image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415854_253892949">10.4.5 &lt;office:binary-data&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415856_253892949">10.4.6 Objects</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415858_253892949">10.4.6.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415860_253892949">10.4.6.2 &lt;draw:object&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415862_253892949">10.4.6.3 &lt;draw:object-ole&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415864_253892949">10.4.7 &lt;draw:applet&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415866_253892949">10.4.8 &lt;draw:plugin&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415868_253892949">10.4.9 &lt;draw:param&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415870_253892949">10.4.10 &lt;draw:floating-frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415872_253892949">10.4.11 Contours</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415874_253892949">10.4.11.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415876_253892949">10.4.11.2 &lt;draw:contour-polygon&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415878_253892949">10.4.11.3 &lt;draw:contour-path&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415880_253892949">10.4.12 &lt;draw:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415882_253892949">10.4.13 Client Side Image Maps</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415884_253892949">10.4.13.1 General</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415886_253892949">10.4.13.2 &lt;draw:image-map&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415888_253892949">10.4.13.3 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415890_253892949">10.4.13.4 &lt;draw:area-circle&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415892_253892949">10.4.13.5 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415894_253892949">10.5 3D Shapes</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718304_1219268628">10.5.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415896_253892949">10.5.2 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415898_253892949">10.5.3 &lt;dr3d:light&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415900_253892949">10.5.4 &lt;dr3d:cube&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415902_253892949">10.5.5 &lt;dr3d:sphere&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415904_253892949">10.5.6 &lt;dr3d:extrude&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415906_253892949">10.5.7 &lt;dr3d:rotate&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415908_253892949">10.6 Custom Shape</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415910_253892949">10.6.1 &lt;draw:custom-shape&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415912_253892949">10.6.2 &lt;draw:enhanced-geometry&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415914_253892949">10.6.3 &lt;draw:handle&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415916_253892949">10.7 Presentation Shapes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415918_253892949">10.8 Presentation Animations</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415920_253892949">10.8.1 &lt;presentation:animations&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415922_253892949">10.8.2 &lt;presentation:sound&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415924_253892949">10.8.3 &lt;presentation:show-shape&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415926_253892949">10.8.4 &lt;presentation:show-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415928_253892949">10.8.5 &lt;presentation:hide-shape&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415930_253892949">10.8.6 &lt;presentation:hide-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415932_253892949">10.8.7 &lt;presentation:dim&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415934_253892949">10.8.8 &lt;presentation:play&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415936_253892949">10.8.9 &lt;presentation:animation-group&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415938_253892949">10.9 SMIL Presentation Animations</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415940_253892949">10.9.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415942_253892949">10.9.2 &lt;presentation:event-listener&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415944_253892949">10.9.3 Presentation Document Content</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415946_253892949">10.9.3.1 &lt;presentation:header&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415948_253892949">10.9.3.2 &lt;presentation:header-decl&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415950_253892949">10.9.3.3 &lt;presentation:footer&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415952_253892949">10.9.3.4 &lt;presentation:footer-decl&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415954_253892949">10.9.3.5 &lt;presentation:date-time&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415956_253892949">10.9.3.6 &lt;presentation:date-time-decl&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415958_253892949">10.9.3.7 &lt;presentation:settings&gt;</a></p></td></tr><tr><td><p class="P7"><a href="#__RefHeading__1415960_253892949">10.9.3.8 &lt;presentation:show&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1415962_253892949">11 Chart Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415964_253892949">11.1 &lt;chart:chart&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415966_253892949">11.2 Title, Subtitle and Footer</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415968_253892949">11.2.1 &lt;chart:title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415970_253892949">11.2.2 &lt;chart:subtitle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1415972_253892949">11.2.3 &lt;chart:footer&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415974_253892949">11.3 &lt;chart:legend&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415976_253892949">11.4 &lt;chart:plot-area&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415978_253892949">11.5 3D Plot Area</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415980_253892949">11.6 &lt;chart:wall&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415982_253892949">11.7 &lt;chart:floor&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415984_253892949">11.8 &lt;chart:axis&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415986_253892949">11.9 &lt;chart:categories&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415988_253892949">11.10 &lt;chart:grid&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415990_253892949">11.11 &lt;chart:series&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415992_253892949">11.12 &lt;chart:domain&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415994_253892949">11.13 &lt;chart:data-point&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415996_253892949">11.14 &lt;chart:data-label&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1415998_253892949">11.15 &lt;chart:mean-value&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416000_253892949">11.16 &lt;chart:error-indicator&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416002_253892949">11.17 &lt;chart:regression-curve&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416004_253892949">11.18 &lt;chart:equation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416006_253892949">11.19 &lt;chart:stock-gain-marker&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416008_253892949">11.20 &lt;chart:stock-loss-marker&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416010_253892949">11.21 &lt;chart:stock-range-line&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416012_253892949">12 Database Front-end Document Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416014_253892949">12.1 &lt;office:database&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416016_253892949">12.2 &lt;db:data-source&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416018_253892949">12.3 &lt;db:connection-data&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416020_253892949">12.4 &lt;db:database-description&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416022_253892949">12.5 &lt;db:file-based-database&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416024_253892949">12.6 &lt;db:server-database&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416026_253892949">12.7 &lt;db:connection-resource&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416028_253892949">12.8 &lt;db:login&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416030_253892949">12.9 &lt;db:driver-settings&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416032_253892949">12.10 &lt;db:auto-increment&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416034_253892949">12.11 &lt;db:delimiter&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416036_253892949">12.12 &lt;db:character-set&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416038_253892949">12.13 &lt;db:table-settings&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416040_253892949">12.14 &lt;db:table-setting&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416042_253892949">12.15 &lt;db:application-connection-settings&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416044_253892949">12.16 &lt;db:table-filter&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416046_253892949">12.17 &lt;db:table-include-filter&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416048_253892949">12.18 &lt;db:table-exclude-filter&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416050_253892949">12.19 &lt;db:table-filter-pattern&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416052_253892949">12.20 &lt;db:table-type-filter&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416054_253892949">12.21 &lt;db:table-type&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416056_253892949">12.22 &lt;db:data-source-settings&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416058_253892949">12.23 &lt;db:data-source-setting&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416060_253892949">12.24 &lt;db:data-source-setting-value&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416062_253892949">12.25 Forms and Reports</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416064_253892949">12.25.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416066_253892949">12.25.2 &lt;db:forms&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416068_253892949">12.25.3 &lt;db:reports&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416070_253892949">12.25.4 &lt;db:component-collection&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416072_253892949">12.25.5 &lt;db:component&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416074_253892949">12.26 &lt;db:queries&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416076_253892949">12.27 &lt;db:query-collection&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416078_253892949">12.28 &lt;db:query&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416080_253892949">12.29 &lt;db:order-statement&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416082_253892949">12.30 &lt;db:filter-statement&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416084_253892949">12.31 &lt;db:update-table&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416086_253892949">12.32 &lt;db:table-representations&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416088_253892949">12.33 &lt;db:table-representation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416090_253892949">12.34 &lt;db:columns&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416092_253892949">12.35 &lt;db:column&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416094_253892949">12.36 &lt;db:schema-definition&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416096_253892949">12.37 &lt;db:table-definitions&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416098_253892949">12.38 &lt;db:table-definition&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416100_253892949">12.39 &lt;db:column-definitions&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416102_253892949">12.40 &lt;db:column-definition&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416104_253892949">12.41 &lt;db:keys&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416106_253892949">12.42 &lt;db:key&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416108_253892949">12.43 &lt;db:key-columns&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416110_253892949">12.44 &lt;db:key-column&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416112_253892949">12.45 &lt;db:indices&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416114_253892949">12.46 &lt;db:index&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416116_253892949">12.47 &lt;db:index-columns&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416118_253892949">12.48 &lt;db:index-column&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416120_253892949">13 Form Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416122_253892949">13.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416124_253892949">13.2 &lt;office:forms&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416126_253892949">13.3 &lt;form:form&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416128_253892949">13.4 &lt;xforms:model&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416130_253892949">13.5 Controls</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416132_253892949">13.5.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416134_253892949">13.5.2 &lt;form:text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416136_253892949">13.5.3 &lt;form:textarea&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416138_253892949">13.5.4 &lt;form:password&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416140_253892949">13.5.5 &lt;form:file&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416142_253892949">13.5.6 &lt;form:formatted-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416144_253892949">13.5.7 &lt;form:number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416146_253892949">13.5.8 &lt;form:date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416148_253892949">13.5.9 &lt;form:time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416150_253892949">13.5.10 &lt;form:fixed-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416152_253892949">13.5.11 &lt;form:combobox&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416154_253892949">13.5.12 &lt;form:item&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416156_253892949">13.5.13 &lt;form:listbox&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416158_253892949">13.5.14 &lt;form:option&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416160_253892949">13.5.15 &lt;form:button&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416162_253892949">13.5.16 &lt;form:image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416164_253892949">13.5.17 &lt;form:checkbox&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416166_253892949">13.5.18 &lt;form:radio&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416168_253892949">13.5.19 &lt;form:frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416170_253892949">13.5.20 &lt;form:image-frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416172_253892949">13.5.21 &lt;form:hidden&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416174_253892949">13.5.22 &lt;form:grid&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416176_253892949">13.5.23 &lt;form:column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416178_253892949">13.5.24 &lt;form:value-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416180_253892949">13.5.25 &lt;form:generic-control&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416182_253892949">13.6 Event Listeners</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416184_253892949">13.7 &lt;form:properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416186_253892949">13.8 &lt;form:property&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416188_253892949">13.9 &lt;form:list-property&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416190_253892949">13.10 &lt;form:list-value&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416192_253892949">14 Common Content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416194_253892949">14.1 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416196_253892949">14.2 &lt;office:annotation-end&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416198_253892949">14.3 &lt;meta:date-string&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416202_253892949">14.4 Event Listener Tables</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416204_253892949">14.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416206_253892949">14.4.2 &lt;script:event-listener&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416208_253892949">14.4.3 Event Types</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416210_253892949">14.4.4 Macro Name and Location</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416212_253892949">14.5 &lt;math:math&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416214_253892949">14.6 DDE Connections</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416216_253892949">14.6.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416220_253892949">14.6.2 &lt;text:dde-connection-decls&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416222_253892949">14.6.3 &lt;text:dde-connection-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416224_253892949">14.6.4 &lt;table:dde-link&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416226_253892949">14.6.5 &lt;office:dde-source&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416228_253892949">15 SMIL Animations</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416230_253892949">15.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416232_253892949">15.2 Basic Animation Elements</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416234_253892949">15.2.1 General </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416236_253892949">15.2.2 &lt;anim:animate&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416238_253892949">15.2.3 &lt;anim:animateTransform&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416240_253892949">15.2.4 &lt;anim:set&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416242_253892949">15.2.5 &lt;anim:animateMotion&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416244_253892949">15.2.6 &lt;anim:animateColor&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416246_253892949">15.2.7 &lt;anim:transitionFilter&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416248_253892949">15.3 Animation Model Attributes</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416250_253892949">15.3.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416252_253892949">15.3.2 Simple Animation Functions</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416254_253892949">15.4 Animation Timing</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416256_253892949">15.4.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416258_253892949">15.4.2 &lt;anim:par&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416260_253892949">15.4.3 &lt;anim:seq&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416262_253892949">15.4.4 &lt;anim:iterate&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416264_253892949">15.5 &lt;anim:audio&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416266_253892949">15.6 Animation Command Elements</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416268_253892949">15.6.1 &lt;anim:command&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416270_253892949">15.6.2 &lt;anim:param&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416272_253892949">16 Styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416274_253892949">16.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416276_253892949">16.2 &lt;style:style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416278_253892949">16.3 &lt;style:map&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416280_253892949">16.4 &lt;style:default-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416282_253892949">16.5 &lt;style:page-layout&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416284_253892949">16.6 &lt;style:header-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416286_253892949">16.7 &lt;style:footer-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416288_253892949">16.8 &lt;style:default-page-layout&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416290_253892949">16.9 &lt;style:master-page&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416292_253892949">16.10 &lt;style:header&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416294_253892949">16.11 &lt;style:footer&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416296_253892949">16.12 &lt;style:header-left&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416298_253892949">16.13 &lt;style:footer-left&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416300_253892949">16.14 &lt;style:region-left&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416302_253892949">16.15 &lt;style:region-center&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416304_253892949">16.16 &lt;style:region-right&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416306_253892949">16.17 &lt;presentation:notes&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416308_253892949">16.18 &lt;table:table-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416310_253892949">16.19 Cell Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416312_253892949">16.19.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416314_253892949">16.19.2 &lt;table:first-row&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416316_253892949">16.19.3 &lt;table:last-row&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416318_253892949">16.19.4 &lt;table:first-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416320_253892949">16.19.5 &lt;table:last-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416322_253892949">16.19.6 &lt;table:body&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416324_253892949">16.19.7 &lt;table:even-rows&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416326_253892949">16.19.8 &lt;table:odd-rows&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416328_253892949">16.19.9 &lt;table:even-columns&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416330_253892949">16.19.10 &lt;table:odd-columns&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416332_253892949">16.20 &lt;table:background&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416334_253892949">16.21 &lt;style:font-face&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416336_253892949">16.22 &lt;svg:font-face-src&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416338_253892949">16.23 &lt;svg:font-face-name&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416340_253892949">16.24 &lt;svg:font-face-uri&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416342_253892949">16.25 &lt;svg:definition-src&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416344_253892949">16.26 &lt;svg:font-face-format&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416346_253892949">16.27 Data Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416348_253892949">16.27.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416350_253892949">16.27.2 &lt;number:number-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416352_253892949">16.27.3 &lt;number:number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416354_253892949">16.27.4 &lt;number:embedded-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416356_253892949">16.27.5 &lt;number:scientific-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416358_253892949">16.27.6 &lt;number:fraction&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416360_253892949">16.27.7 &lt;number:currency-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416362_253892949">16.27.8 &lt;number:currency-symbol&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416364_253892949">16.27.9 &lt;number:percentage-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416366_253892949">16.27.10 &lt;number:date-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416368_253892949">16.27.11 &lt;number:day&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416370_253892949">16.27.12 &lt;number:month&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416372_253892949">16.27.13 &lt;number:year&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416374_253892949">16.27.14 &lt;number:era&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416376_253892949">16.27.15 &lt;number:day-of-week&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416378_253892949">16.27.16 &lt;number:week-of-year&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416380_253892949">16.27.17 &lt;number:quarter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416382_253892949">16.27.18 &lt;number:time-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416384_253892949">16.27.19 &lt;number:hours&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416386_253892949">16.27.20 &lt;number:minutes&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416388_253892949">16.27.21 &lt;number:seconds&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416390_253892949">16.27.22 &lt;number:am-pm&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416392_253892949">16.27.23 &lt;number:boolean-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416394_253892949">16.27.24 &lt;number:boolean&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416396_253892949">16.27.25 &lt;number:text-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416398_253892949">16.27.26 &lt;number:text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416400_253892949">16.27.27 &lt;number:text-content&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416402_253892949">16.27.28 &lt;style:text-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416404_253892949">16.28 Text Style Families</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416406_253892949">16.28.1 Text Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416408_253892949">16.28.2 Paragraph Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416410_253892949">16.28.3 Section Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416412_253892949">16.28.4 Ruby Styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416414_253892949">16.29 Enhanced Text Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416416_253892949">16.29.1 &lt;text:linenumbering-configuration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416418_253892949">16.29.2 &lt;text:linenumbering-separator&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416420_253892949">16.29.3 &lt;text:notes-configuration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416422_253892949">16.29.4 &lt;text:note-continuation-notice-forward&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416424_253892949">16.29.5 &lt;text:note-continuation-notice-backward&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416426_253892949">16.29.6 &lt;text:bibliography-configuration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416428_253892949">16.29.7 &lt;text:sort-key&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416430_253892949">16.30 &lt;text:list-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416432_253892949">16.31 &lt;text:list-level-style-bullet&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416434_253892949">16.32 &lt;text:list-level-style-number&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416436_253892949">16.33 &lt;text:list-level-style-image&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416438_253892949">16.34 &lt;text:outline-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416440_253892949">16.35 &lt;text:outline-level-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416442_253892949">16.36 Table Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416444_253892949">16.36.1 Table Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416446_253892949">16.36.2 Table Column Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416448_253892949">16.36.3 Table Row Styles</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416450_253892949">16.36.4 Table Cell Styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416452_253892949">16.37 Graphic Styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416454_253892949">16.38 Presentation Styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416456_253892949">16.39 Drawing Page Style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416458_253892949">16.40 Enhanced Graphic Style Elements</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416460_253892949">16.40.1 &lt;draw:gradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416462_253892949">16.40.2 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416464_253892949">16.40.3 &lt;svg:radialGradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416466_253892949">16.40.4 &lt;svg:stop&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416468_253892949">16.40.5 &lt;draw:hatch&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416470_253892949">16.40.6 &lt;draw:fill-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416472_253892949">16.40.7 &lt;draw:opacity&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416474_253892949">16.40.8 &lt;draw:marker&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416476_253892949">16.40.9 &lt;draw:stroke-dash&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416478_253892949">16.41 &lt;style:presentation-page-layout&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416480_253892949">16.42 &lt;presentation:placeholder&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416482_253892949">16.43 Chart Styles</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__35406978">17 Formatting Elements</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416484_253892949">17.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416486_253892949">17.2 &lt;style:page-layout-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416488_253892949">17.3 &lt;style:background-image&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416490_253892949">17.4 &lt;style:footnote-sep&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416492_253892949">17.5 &lt;style:header-footer-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416494_253892949">17.6 &lt;style:paragraph-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416496_253892949">17.7 &lt;style:tab-stops&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416498_253892949">17.8 &lt;style:tab-stop&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416500_253892949">17.9 &lt;style:drop-cap&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416502_253892949">17.10 &lt;style:ruby-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416504_253892949">17.11 &lt;style:section-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416506_253892949">17.12 &lt;style:columns&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416508_253892949">17.13 &lt;style:column&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416510_253892949">17.14 &lt;style:column-sep&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416512_253892949">17.15 &lt;style:table-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416514_253892949">17.16 &lt;style:table-column-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416516_253892949">17.17 &lt;style:table-row-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416518_253892949">17.18 &lt;style:table-cell-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416520_253892949">17.19 &lt;style:list-level-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416522_253892949">17.20 &lt;style:list-level-label-alignment&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416524_253892949">17.21 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416526_253892949">17.22 &lt;style:chart-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416528_253892949">17.23 &lt;chart:symbol-image&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416530_253892949">17.24 &lt;chart:label-separator&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416532_253892949">17.25 &lt;style:drawing-page-properties&gt;</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416534_253892949">18 Datatypes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416536_253892949">18.1 Introduction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__30241806">18.2 W3C Schema Datatypes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416538_253892949">18.3 Other Datatypes</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416540_253892949">18.3.1 angle</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718306_1219268628">18.3.2 anyIRI </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416542_253892949">18.3.3 boolean</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416544_253892949">18.3.4 cellAddress</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416546_253892949">18.3.5 cellRangeAddress</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416548_253892949">18.3.6 cellRangeAddressList</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416550_253892949">18.3.7 character</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416552_253892949">18.3.8 clipShape</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416554_253892949">18.3.9 color</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416556_253892949">18.3.10 coordinate</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416558_253892949">18.3.11 countryCode</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416560_253892949">18.3.12 CURIE</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416562_253892949">18.3.13 CURIEs</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416564_253892949">18.3.14 dateOrDateTime</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416566_253892949">18.3.15 distance</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416570_253892949">18.3.16 language</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416572_253892949">18.3.17 languageCode</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416574_253892949">18.3.18 length</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416576_253892949">18.3.19 namespacedToken</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416578_253892949">18.3.20 nonNegativeLength</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416580_253892949">18.3.21 nonNegativePixelLength</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416582_253892949">18.3.22 pathData</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416584_253892949">18.3.23 percent</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416586_253892949">18.3.24 point3D</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416588_253892949">18.3.25 points</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416590_253892949">18.3.26 positiveLength</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416592_253892949">18.3.27 relativeLength</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416594_253892949">18.3.28 safeCURIE</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416596_253892949">18.3.29 scriptCode</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416598_253892949">18.3.30 signedZeroToHundredPercent</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416600_253892949">18.3.31 styleName</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416602_253892949">18.3.32 styleNameRef</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416604_253892949">18.3.33 styleNameRefs</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416606_253892949">18.3.34 targetFrameName</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416608_253892949">18.3.35 textEncoding</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416610_253892949">18.3.36 timeOrDateTime</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416612_253892949">18.3.37 URIorSafeCURIE</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416614_253892949">18.3.38 valueType</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416616_253892949">18.3.39 variableName</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416618_253892949">18.3.40 vector3D</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416620_253892949">18.3.41 zeroToHundredPercent</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1416622_253892949">19 General Attributes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416624_253892949">19.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416626_253892949">19.2 anim:color-interpolation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416628_253892949">19.3 anim:color-interpolation-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416630_253892949">19.4 anim:audio-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416632_253892949">19.5 anim:command</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416634_253892949">19.6 anim:formula</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416636_253892949">19.7 anim:id (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416638_253892949">19.8 anim:iterate-interval</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416640_253892949">19.9 anim:iterate-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416642_253892949">19.10 anim:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416644_253892949">19.11 anim:sub-item</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416646_253892949">19.12 anim:value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416648_253892949">19.13 chart:attached-axis</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416650_253892949">19.14 chart:automatic-content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416652_253892949">19.15 chart:class</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416654_253892949">19.15.1 &lt;chart:chart&gt;, &lt;chart:series&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416656_253892949">19.15.2 &lt;chart:grid&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416658_253892949">19.16 chart:column-mapping (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416660_253892949">19.17 chart:data-source-has-labels (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416662_253892949">19.18 chart:dimension</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416664_253892949">19.19 chart:display-equation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416666_253892949">19.20 chart:display-r-square</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416672_253892949">19.21 chart:label-cell-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416674_253892949">19.22 chart:legend-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416676_253892949">19.23 chart:legend-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416678_253892949">19.24 chart:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416680_253892949">19.25 chart:repeated</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416682_253892949">19.26 chart:row-mapping (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416684_253892949">19.27 chart:style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416686_253892949">19.28 chart:values-cell-range-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416688_253892949">19.29 config:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416690_253892949">19.30 config:type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416692_253892949">19.31 db:additional-column-statement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416694_253892949">19.32 db:append-table-alias-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416696_253892949">19.33 db:apply-command</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416698_253892949">19.34 db:as-template</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416700_253892949">19.35 db:base-dn</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416702_253892949">19.36 db:boolean-comparison-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416704_253892949">19.37 db:catalog-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416706_253892949">19.38 db:command</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416708_253892949">19.39 db:data-source-setting-is-list</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416710_253892949">19.40 db:data-source-setting-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416712_253892949">19.41 db:data-source-setting-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416714_253892949">19.42 db:data-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416716_253892949">19.43 db:database-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416718_253892949">19.44 db:decimal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416720_253892949">19.45 db:default-cell-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416722_253892949">19.46 db:default-row-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416724_253892949">19.47 db:delete-rule</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416726_253892949">19.48 db:description</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416728_253892949">19.49 db:enable-sql92-check</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416730_253892949">19.50 db:encoding</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416732_253892949">19.51 db:escape-processing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416734_253892949">19.52 db:extension</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416736_253892949">19.53 db:field</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416738_253892949">19.54 db:hostname</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416740_253892949">19.55 db:ignore-driver-privileges</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416742_253892949">19.56 db:is-ascending</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416744_253892949">19.57 db:is-autoincrement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416746_253892949">19.58 db:is-clustered</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416748_253892949">19.59 db:is-empty-allowed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416750_253892949">19.60 db:is-first-row-header-line</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416752_253892949">19.61 db:login-timeout</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416754_253892949">19.62 db:is-nullable</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416756_253892949">19.63 db:is-password-required</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416758_253892949">19.64 db:is-unique</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416760_253892949">19.65 db:precision</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416762_253892949">19.66 db:is-table-name-length-limited</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416764_253892949">19.67 db:local-socket</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416766_253892949">19.68 db:max-row-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416768_253892949">19.69 db:media-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416770_253892949">19.70 db:name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416772_253892949">19.70.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416774_253892949">19.70.2 &lt;db:column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416776_253892949">19.70.3 &lt;db:column-definition&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416778_253892949">19.70.4 &lt;db:component&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416780_253892949">19.70.5 &lt;db:component-collection&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416782_253892949">19.70.6 &lt;db:index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416784_253892949">19.70.7 &lt;db:index-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416786_253892949">19.70.8 &lt;db:key&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416788_253892949">19.70.9 &lt;db:key-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416790_253892949">19.70.10 &lt;db:query&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416792_253892949">19.70.11 &lt;db:query-collection&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416794_253892949">19.70.12 &lt;db:table-definition&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416796_253892949">19.70.13 &lt;db:table-representation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416798_253892949">19.70.14 &lt;db:update-table&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416800_253892949">19.71 db:parameter-name-substitution</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416802_253892949">19.72 db:port</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416804_253892949">19.73 db:referenced-table-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416806_253892949">19.74 db:related-column-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416808_253892949">19.75 db:row-retrieving-statement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416810_253892949">19.76 db:scale</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416812_253892949">19.77 db:schema-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416814_253892949">19.78 db:show-deleted</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416816_253892949">19.79 db:string</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416818_253892949">19.80 db:style-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416820_253892949">19.80.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416822_253892949">19.80.2 &lt;db:column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416824_253892949">19.80.3 &lt;db:query&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416826_253892949">19.80.4 &lt;db:table-representation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416828_253892949">19.81 db:suppress-version-columns</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416830_253892949">19.82 db:system-driver-settings</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416832_253892949">19.83 db:thousand</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416834_253892949">19.84 db:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416836_253892949">19.85 db:type</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416838_253892949">19.85.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416840_253892949">19.85.2 &lt;db:key&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416842_253892949">19.85.3 &lt;db:server-database&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416844_253892949">19.85.4 &lt;db:table-definition&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416846_253892949">19.86 db:type-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416848_253892949">19.87 db:update-rule</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416850_253892949">19.88 db:use-catalog</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416852_253892949">19.89 db:use-system-user</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416854_253892949">19.90 db:user-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416856_253892949">19.91 db:visible</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416858_253892949">19.92 dr3d:ambient-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416860_253892949">19.93 dr3d:center</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416862_253892949">19.94 dr3d:diffuse-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416864_253892949">19.95 dr3d:direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416866_253892949">19.96 dr3d:distance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416868_253892949">19.97 dr3d:enabled</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416870_253892949">19.98 dr3d:focal-length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416872_253892949">19.99 dr3d:lighting-mode</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416874_253892949">19.99.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416876_253892949">19.99.2 &lt;chart:plot-area&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416878_253892949">19.99.3 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416880_253892949">19.100 dr3d:max-edge </a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416882_253892949">19.101 dr3d:min-edge</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416884_253892949">19.102 dr3d:projection</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416886_253892949">19.103 dr3d:shade-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416888_253892949">19.104 dr3d:shadow-slant</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416890_253892949">19.105 dr3d:size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416892_253892949">19.106 dr3d:specular</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416894_253892949">19.107 dr3d:transform</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416896_253892949">19.108 dr3d:vpn</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416898_253892949">19.109 dr3d:vrp</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416900_253892949">19.110 dr3d:vup</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416902_253892949">19.111 draw:align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416904_253892949">19.112 draw:angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416906_253892949">19.113 draw:archive</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416908_253892949">19.114 draw:border</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416910_253892949">19.115 draw:caption-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416912_253892949">19.116 draw:caption-point-x</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416914_253892949">19.117 draw:caption-point-y</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416916_253892949">19.118 draw:chain-next-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416918_253892949">19.119 draw:class-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416920_253892949">19.120 draw:class-names</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416922_253892949">19.121 draw:code</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416924_253892949">19.122 draw:color</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416926_253892949">19.122.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416928_253892949">19.122.2 &lt;draw:hatch&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416930_253892949">19.122.3 &lt;presentation:dim&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416932_253892949">19.123 draw:concave</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416934_253892949">19.124 draw:concentric-gradient-fill-allowed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416936_253892949">19.125 draw:control</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416938_253892949">19.126 draw:copy-of</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416940_253892949">19.127 draw:corner-radius</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416942_253892949">19.128 draw:corners</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416944_253892949">19.129 draw:cx</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416946_253892949">19.130 draw:cy</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416948_253892949">19.131 draw:data</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416950_253892949">19.132 draw:display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416952_253892949">19.133 draw:display-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416954_253892949">19.133.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416956_253892949">19.133.2 &lt;draw:fill-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416958_253892949">19.133.3 &lt;draw:gradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416960_253892949">19.133.4 &lt;draw:hatch&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416962_253892949">19.133.5 &lt;draw:marker&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416964_253892949">19.133.6 &lt;draw:opacity&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416966_253892949">19.133.7 &lt;draw:stroke-dash&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416968_253892949">19.133.8 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416970_253892949">19.133.9 &lt;svg:radialGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416972_253892949">19.134 draw:distance</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416974_253892949">19.134.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416976_253892949">19.134.2 &lt;draw:hatch&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1416978_253892949">19.134.3 &lt;draw:stroke-dash&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416980_253892949">19.135 draw:dots1</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416982_253892949">19.136 draw:dots1-length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416984_253892949">19.137 draw:dots2</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416986_253892949">19.138 draw:dots2-length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416988_253892949">19.139 draw:end</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416990_253892949">19.140 draw:end-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416992_253892949">19.141 draw:end-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416994_253892949">19.142 draw:end-glue-point</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416996_253892949">19.143 draw:end-intensity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1416998_253892949">19.144 draw:end-shape</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417000_253892949">19.145 draw:enhanced-path</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417002_253892949">19.146 draw:engine</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417004_253892949">19.147 draw:escape-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417006_253892949">19.148 draw:extrusion</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417008_253892949">19.149 draw:extrusion-allowed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417010_253892949">19.150 draw:extrusion-brightness</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417012_253892949">19.151 draw:extrusion-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417014_253892949">19.152 draw:extrusion-depth</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417016_253892949">19.153 draw:extrusion-diffusion</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417018_253892949">19.154 draw:extrusion-first-light-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417020_253892949">19.155 draw:extrusion-first-light-harsh</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417022_253892949">19.156 draw:extrusion-first-light-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417024_253892949">19.157 draw:extrusion-light-face</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417026_253892949">19.158 draw:extrusion-metal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417028_253892949">19.159 draw:extrusion-number-of-line-segments</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417030_253892949">19.160 draw:extrusion-origin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417032_253892949">19.161 draw:extrusion-rotation-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417034_253892949">19.162 draw:extrusion-rotation-center</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417036_253892949">19.163 draw:extrusion-second-light-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417038_253892949">19.164 draw:extrusion-second-light-harsh</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417040_253892949">19.165 draw:extrusion-second-light-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417042_253892949">19.166 draw:extrusion-shininess</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417044_253892949">19.167 draw:extrusion-skew</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417046_253892949">19.168 draw:extrusion-specularity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417048_253892949">19.169 draw:extrusion-viewpoint</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417050_253892949">19.170 draw:filter-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417052_253892949">19.171 draw:formula</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417054_253892949">19.172 draw:frame-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417056_253892949">19.173 draw:glue-point-leaving-directions</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417058_253892949">19.174 draw:glue-point-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417060_253892949">19.175 draw:glue-points</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417062_253892949">19.176 draw:handle-mirror-horizontal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417064_253892949">19.177 draw:handle-mirror-vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417066_253892949">19.178 draw:handle-polar</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417068_253892949">19.179 draw:handle-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417070_253892949">19.180 draw:handle-radius-range-maximum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417072_253892949">19.181 draw:handle-radius-range-minimum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417074_253892949">19.182 draw:handle-range-x-maximum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417076_253892949">19.183 draw:handle-range-x-minimum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417078_253892949">19.184 draw:handle-range-y-maximum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417080_253892949">19.185 draw:handle-range-y-minimum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417082_253892949">19.186 draw:handle-switched</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417084_253892949">19.187 draw:id</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417086_253892949">19.187.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417088_253892949">19.187.2 &lt;draw:glue-point&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417090_253892949">19.187.3 &lt;dr3d:cube&gt;, &lt;dr3d:extrude&gt;, &lt;dr3d:rotate&gt;, &lt;dr3d:scene&gt;, &lt;dr3d:sphere&gt;, &lt;draw:caption&gt;, &lt;draw:circle&gt;, &lt;draw:connector&gt;, &lt;draw:control&gt;, &lt;draw:custom-shape&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:g&gt;, &lt;draw:line&gt;, &lt;draw:measure&gt;, &lt;draw:page&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:rect&gt;, &lt;draw:regular-polygon&gt; and &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417092_253892949">19.188 draw:kind</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417094_253892949">19.189 draw:layer</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417096_253892949">19.190 draw:line-skew</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417098_253892949">19.191 draw:mime-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417100_253892949">19.192 draw:mirror-horizontal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417102_253892949">19.193 draw:mirror-vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417104_253892949">19.194 draw:master-page-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417106_253892949">19.195 draw:may-script</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417108_253892949">19.196 draw:modifiers</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417110_253892949">19.197 draw:name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417112_253892949">19.197.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417114_253892949">19.197.2 &lt;draw:caption&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417116_253892949">19.197.3 &lt;draw:circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417118_253892949">19.197.4 &lt;draw:connector&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417120_253892949">19.197.5 &lt;draw:control&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417122_253892949">19.197.6 &lt;draw:custom-shape&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417124_253892949">19.197.7 &lt;draw:ellipse&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417126_253892949">19.197.8 &lt;draw:equation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417128_253892949">19.197.9 &lt;draw:fill-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417130_253892949">19.197.10 &lt;draw:frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417132_253892949">19.197.11 &lt;draw:g&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417134_253892949">19.197.12 &lt;draw:gradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417136_253892949">19.197.13 &lt;draw:hatch&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417138_253892949">19.197.14 &lt;draw:layer&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417140_253892949">19.197.15 &lt;draw:line&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417142_253892949">19.197.16 &lt;draw:marker&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417144_253892949">19.197.17 &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417146_253892949">19.197.18 &lt;draw:opacity&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417148_253892949">19.197.19 &lt;draw:page&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417150_253892949">19.197.20 &lt;draw:page-thumbnail&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417152_253892949">19.197.21 &lt;draw:param&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417154_253892949">19.197.22 &lt;draw:path&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417156_253892949">19.197.23 &lt;draw:polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417158_253892949">19.197.24 &lt;draw:polyline&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417160_253892949">19.197.25 &lt;draw:rect&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417162_253892949">19.197.26 &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417164_253892949">19.197.27 &lt;draw:stroke-dash&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417166_253892949">19.197.28 &lt;office:annotation&gt; (deprecated)</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417168_253892949">19.197.29 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417170_253892949">19.197.30 &lt;svg:radialGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417172_253892949">19.198 draw:nav-order</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417174_253892949">19.199 draw:nohref</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417176_253892949">19.200 draw:notify-on-update-of-ranges</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417178_253892949">19.201 draw:object</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417180_253892949">19.202 draw:opacity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417182_253892949">19.203 draw:page-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417184_253892949">19.204 draw:path-stretchpoint-x</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417186_253892949">19.205 draw:path-stretchpoint-y</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417188_253892949">19.206 draw:points</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417190_253892949">19.207 draw:protected</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417192_253892949">19.208 draw:recreate-on-edit</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417194_253892949">19.209 draw:rotation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417196_253892949">19.210 draw:shape-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417198_253892949">19.211 draw:sharpness</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417200_253892949">19.212 draw:start</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417202_253892949">19.213 draw:start-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417204_253892949">19.214 draw:start-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417206_253892949">19.215 draw:start-glue-point</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417208_253892949">19.216 draw:start-intensity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417210_253892949">19.217 draw:start-shape</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417212_253892949">19.218 draw:style</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417214_253892949">19.218.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417216_253892949">19.218.2 &lt;draw:gradient&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417218_253892949">19.218.3 &lt;draw:hatch&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417220_253892949">19.218.4 &lt;draw:opacity&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417222_253892949">19.218.5 &lt;draw:stroke-dash&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417224_253892949">19.219 draw:style-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417226_253892949">19.219.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417228_253892949">19.219.2 &lt;dr3d:cube&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417230_253892949">19.219.3 &lt;dr3d:extrude&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417232_253892949">19.219.4 &lt;dr3d:rotate&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417234_253892949">19.219.5 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417236_253892949">19.219.6 &lt;dr3d:sphere&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417238_253892949">19.219.7 &lt;draw:caption&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417240_253892949">19.219.8 &lt;draw:circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417242_253892949">19.219.9 &lt;draw:connector&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417244_253892949">19.219.10 &lt;draw:control&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417246_253892949">19.219.11 &lt;draw:custom-shape&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417248_253892949">19.219.12 &lt;draw:ellipse&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417250_253892949">19.219.13 &lt;draw:frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417252_253892949">19.219.14 &lt;draw:g&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417254_253892949">19.219.15 &lt;draw:line&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417256_253892949">19.219.16 &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417258_253892949">19.219.17 &lt;draw:page&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417260_253892949">19.219.18 &lt;draw:page-thumbnail&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417262_253892949">19.219.19 &lt;draw:path&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417264_253892949">19.219.20 &lt;draw:polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417266_253892949">19.219.21 &lt;draw:polyline&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417268_253892949">19.219.22 &lt;draw:rect&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417270_253892949">19.219.23 &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417272_253892949">19.219.24 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417274_253892949">19.219.25 &lt;presentation:notes&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417276_253892949">19.219.26 &lt;style:handout-master&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417278_253892949">19.219.27 &lt;style:master-page&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417280_253892949">19.220 draw:text-areas</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417282_253892949">19.221 draw:text-path</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417284_253892949">19.222 draw:text-path-allowed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417286_253892949">19.223 draw:text-path-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417288_253892949">19.224 draw:text-path-same-letter-heights</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417290_253892949">19.225 draw:text-path-scale</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417292_253892949">19.226 draw:text-rotate-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417294_253892949">19.227 draw:text-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417296_253892949">19.228 draw:transform</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417298_253892949">19.229 draw:type</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417300_253892949">19.229.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417302_253892949">19.229.2 &lt;draw:connector&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417304_253892949">19.229.3 &lt;draw:enhanced-geometry&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417306_253892949">19.230 draw:value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417308_253892949">19.231 draw:z-index</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417310_253892949">19.232 fo:column-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417312_253892949">19.233 fo:column-gap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417314_253892949">19.234 fo:country</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417316_253892949">19.234.1 &lt;text:alphabetical-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417318_253892949">19.234.2 &lt;text:bibliography-configuration&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417320_253892949">19.235 fo:end-indent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417322_253892949">19.236 fo:language</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417324_253892949">19.236.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417326_253892949">19.236.2 &lt;text:alphabetical-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417328_253892949">19.236.3 &lt;text:bibliography-configuration&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417330_253892949">19.237 fo:margin-left</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417332_253892949">19.238 fo:max-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417334_253892949">19.239 fo:max-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417336_253892949">19.240 fo:min-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417338_253892949">19.241 fo:min-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417340_253892949">19.242 fo:script</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417342_253892949">19.242.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417344_253892949">19.242.2 &lt;text:alphabetical-index-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417346_253892949">19.242.3 &lt;text:bibliography-configuration&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417348_253892949">19.243 fo:space-after</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417350_253892949">19.244 fo:space-before</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417352_253892949">19.245 fo:start-indent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417354_253892949">19.246 fo:text-indent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417356_253892949">19.247 form:allow-deletes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417358_253892949">19.248 form:allow-inserts</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417360_253892949">19.249 form:allow-updates</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417362_253892949">19.250 form:apply-design-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417364_253892949">19.251 form:apply-filter</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417366_253892949">19.252 form:auto-complete</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417368_253892949">19.253 form:automatic-focus</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417370_253892949">19.254 form:bound-column</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417372_253892949">19.255 form:button-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417374_253892949">19.256 form:command</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417376_253892949">19.257 form:command-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417378_253892949">19.258 form:control-implementation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417380_253892949">19.259 form:convert-empty-to-null</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417382_253892949">19.260 form:current-selected</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417384_253892949">19.261 form:current-state</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417386_253892949">19.262 form:current-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417388_253892949">19.263 form:data-field</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417390_253892949">19.264 form:datasource</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417392_253892949">19.265 form:default-button</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417394_253892949">19.266 form:delay-for-repeat</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417396_253892949">19.267 form:detail-fields</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417398_253892949">19.268 form:disabled</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417400_253892949">19.269 form:dropdown</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417402_253892949">19.270 form:echo-char</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417404_253892949">19.271 form:enctype</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417406_253892949">19.272 form:escape-processing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417408_253892949">19.273 form:filter</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417410_253892949">19.274 form:focus-on-click</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417412_253892949">19.275 form:for</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417414_253892949">19.276 form:id (deprecated) </a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417416_253892949">19.277 form:ignore-result</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417418_253892949">19.278 form:image-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417420_253892949">19.279 form:image-data</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417422_253892949">19.280 form:image-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417424_253892949">19.281 form:is-tristate</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417426_253892949">19.282 form:label</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417428_253892949">19.283 form:linked-cell</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417430_253892949">19.284 form:list-linkage-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417432_253892949">19.285 form:list-source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417434_253892949">19.286 form:list-source-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417436_253892949">19.287 form:master-fields</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417438_253892949">19.288 form:max-length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417440_253892949">19.289 form:max-value</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718308_1219268628">19.289.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718310_1219268628">19.289.2 &lt;form:date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718312_1219268628">19.289.3 &lt;form:formatted-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718314_1219268628">19.289.4 &lt;form:number&gt; and &lt;form:value-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718316_1219268628">19.289.5 &lt;form:time&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417442_253892949">19.290 form:min-value</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718318_1219268628">19.290.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718320_1219268628">19.290.2 &lt;form:date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718322_1219268628">19.290.3 &lt;form:formatted-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718324_1219268628">19.290.4 &lt;form:number&gt; and &lt;form:value-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718326_1219268628">19.290.5 &lt;form:time&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417444_253892949">19.291 form:method</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417446_253892949">19.292 form:multi-line</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417448_253892949">19.293 form:multiple</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417450_253892949">19.294 form:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417452_253892949">19.295 form:navigation-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417454_253892949">19.296 form:order</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417456_253892949">19.297 form:orientation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417458_253892949">19.298 form:page-step-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417460_253892949">19.299 form:printable</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417462_253892949">19.300 form:property-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417464_253892949">19.301 form:readonly</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417466_253892949">19.302 form:repeat</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417468_253892949">19.303 form:selected</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417470_253892949">19.304 form:size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417472_253892949">19.305 form:source-cell-range</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417474_253892949">19.306 form:spin-button</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417476_253892949">19.307 form:state</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417478_253892949">19.308 form:step-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417480_253892949">19.309 form:tab-cycle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417482_253892949">19.310 form:tab-index</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417484_253892949">19.311 form:tab-stop</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417486_253892949">19.312 form:text-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417488_253892949">19.313 form:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417490_253892949">19.314 form:toggle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417492_253892949">19.315 form:validation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417494_253892949">19.316 form:value</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718328_1219268628">19.316.1 General </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718330_1219268628">19.316.2 &lt;form:button&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718332_1219268628">19.316.3 &lt;form:date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718334_1219268628">19.316.4 &lt;form:number&gt; and &lt;form:value-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718336_1219268628">19.316.5 &lt;form:checkbox&gt;, &lt;form:combobox&gt;, &lt;form:file&gt;, &lt;form:formatted-text&gt;, &lt;form:hidden&gt;, &lt;form:image&gt;, &lt;form:option&gt;, &lt;form:password&gt;, &lt;form:radio&gt;, &lt;form:text&gt;, &lt;form:textarea&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718338_1219268628">19.316.6 &lt;form:time&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417496_253892949">19.317 form:visual-effect</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417498_253892949">19.318 form:xforms-list-source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417500_253892949">19.319 form:xforms-submission</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417502_253892949">19.320 grddl:transformation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417504_253892949">19.321 meta:cell-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417506_253892949">19.322 meta:character-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417508_253892949">19.323 meta:date</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417510_253892949">19.324 meta:delay</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417512_253892949">19.325 meta:draw-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417514_253892949">19.326 meta:frame-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417516_253892949">19.327 meta:image-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417518_253892949">19.328 meta:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417520_253892949">19.329 meta:non-whitespace-character-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417522_253892949">19.330 meta:object-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417524_253892949">19.331 meta:ole-object-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417526_253892949">19.332 meta:page-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417528_253892949">19.333 meta:paragraph-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417530_253892949">19.334 meta:row-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417532_253892949">19.335 meta:sentence-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417534_253892949">19.336 meta:syllable-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417536_253892949">19.337 meta:table-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417538_253892949">19.338 meta:value-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417540_253892949">19.339 meta:word-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417542_253892949">19.340 number:automatic-order</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417544_253892949">19.341 number:calendar</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417546_253892949">19.342 number:country</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417548_253892949">19.343 number:decimal-places</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417550_253892949">19.343.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417552_253892949">19.343.2 &lt;number:number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417554_253892949">19.343.3 &lt;number:seconds&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417556_253892949">19.343.4 &lt;number:scientific-number&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417558_253892949">19.344 number:decimal-replacement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417560_253892949">19.345 number:denominator-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417562_253892949">19.346 number:display-factor</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417564_253892949">19.347 number:format-source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417566_253892949">19.348 number:grouping</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417568_253892949">19.349 number:language</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417570_253892949">19.350 number:min-denominator-digits</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417572_253892949">19.351 number:min-exponent-digits</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417574_253892949">19.352 number:min-integer-digits</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417576_253892949">19.353 number:min-numerator-digits</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417578_253892949">19.354 number:position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417580_253892949">19.355 number:possessive-form</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417582_253892949">19.356 number:rfc-language-tag</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417584_253892949">19.357 number:script</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417586_253892949">19.358 number:style</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417588_253892949">19.358.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417590_253892949">19.358.2 &lt;number:day&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417592_253892949">19.358.3 &lt;number:day-of-week&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417594_253892949">19.358.4 &lt;number:era&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417596_253892949">19.358.5 &lt;number:hours&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417598_253892949">19.358.6 &lt;number:minutes&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417600_253892949">19.358.7 &lt;number:month&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417602_253892949">19.358.8 &lt;number:quarter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417604_253892949">19.358.9 &lt;number:seconds&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417606_253892949">19.358.10 &lt;number:year&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417608_253892949">19.359 number:textual</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417610_253892949">19.360 number:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417612_253892949">19.361 number:transliteration-country</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417614_253892949">19.362 number:transliteration-format</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417616_253892949">19.363 number:transliteration-language</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417618_253892949">19.364 number:transliteration-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417620_253892949">19.365 number:truncate-on-overflow</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417622_253892949">19.366 office:automatic-update</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417624_253892949">19.367 office:boolean-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417626_253892949">19.368 office:conversion-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417628_253892949">19.369 office:currency</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417630_253892949">19.370 office:date-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417632_253892949">19.371 office:dde-application</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417634_253892949">19.372 office:dde-item</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417636_253892949">19.373 office:dde-topic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417638_253892949">19.374 office:display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417640_253892949">19.375 office:mimetype</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417642_253892949">19.376 office:name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417644_253892949">19.376.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417646_253892949">19.376.2 &lt;draw:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417648_253892949">19.376.3 &lt;draw:area-circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417650_253892949">19.376.4 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417652_253892949">19.376.5 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417654_253892949">19.376.6 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417656_253892949">19.376.7 &lt;office:annotation-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417658_253892949">19.376.8 &lt;office:dde-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417660_253892949">19.376.9 &lt;text:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417662_253892949">19.376.10 &lt;text:dde-connection-decl&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417664_253892949">19.377 office:process-content (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417666_253892949">19.378 office:server-map</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417668_253892949">19.379 office:string-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417670_253892949">19.380 office:target-frame</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417672_253892949">19.381 office:target-frame-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417674_253892949">19.382 office:time-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417676_253892949">19.383 office:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417678_253892949">19.384 office:value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417680_253892949">19.385 office:value-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417682_253892949">19.386 office:version</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417684_253892949">19.387 presentation:action</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417686_253892949">19.388 presentation:animations</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417688_253892949">19.389 presentation:class</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417690_253892949">19.390 presentation:class-names</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417692_253892949">19.391 presentation:delay</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417694_253892949">19.392 presentation:direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417696_253892949">19.393 presentation:endless</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417698_253892949">19.394 presentation:effect</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417700_253892949">19.395 presentation:force-manual</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417702_253892949">19.396 presentation:full-screen</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417704_253892949">19.397 presentation:group-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417706_253892949">19.398 presentation:master-element</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417708_253892949">19.399 presentation:mouse-as-pen</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417710_253892949">19.400 presentation:mouse-visible</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417712_253892949">19.401 presentation:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417714_253892949">19.402 presentation:node-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417716_253892949">19.403 presentation:object</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417718_253892949">19.404 presentation:pages</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417720_253892949">19.405 presentation:path-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417722_253892949">19.406 presentation:pause</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417724_253892949">19.407 presentation:placeholder</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417726_253892949">19.408 presentation:play-full</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417728_253892949">19.409 presentation:presentation-page-layout-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417730_253892949">19.410 presentation:preset-class</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417732_253892949">19.411 presentation:preset-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417734_253892949">19.412 presentation:preset-sub-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417736_253892949">19.413 presentation:show</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417738_253892949">19.414 presentation:show-end-of-presentation-slide</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417740_253892949">19.415 presentation:show-logo</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417742_253892949">19.416 presentation:source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417744_253892949">19.417 presentation:speed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417746_253892949">19.418 presentation:start-scale</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417748_253892949">19.419 presentation:start-page</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417750_253892949">19.420 presentation:start-with-navigator</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417752_253892949">19.421 presentation:stay-on-top</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417754_253892949">19.422 presentation:style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417756_253892949">19.423 presentation:transition-on-click</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417758_253892949">19.424 presentation:use-date-time-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417760_253892949">19.425 presentation:use-footer-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417762_253892949">19.426 presentation:use-header-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417764_253892949">19.427 presentation:user-transformed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417766_253892949">19.428 presentation:verb</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417768_253892949">19.429 script:event-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417770_253892949">19.430 script:language</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417772_253892949">19.431 script:macro-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417774_253892949">19.432 smil:accelerate</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417776_253892949">19.433 smil:accumulate</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417778_253892949">19.434 smil:additive</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417780_253892949">19.435 smil:attributeName</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417782_253892949">19.436 smil:autoReverse</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417784_253892949">19.437 smil:begin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417786_253892949">19.438 smil:by</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417788_253892949">19.439 smil:calcMode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417790_253892949">19.440 smil:decelerate</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417792_253892949">19.441 smil:direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417794_253892949">19.442 smil:dur</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417796_253892949">19.443 smil:end</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417798_253892949">19.444 smil:endsync</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417800_253892949">19.445 smil:fadeColor</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417802_253892949">19.446 smil:fill</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417804_253892949">19.447 smil:fillDefault</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417806_253892949">19.448 smil:from</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417808_253892949">19.449 smil:keySplines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417810_253892949">19.450 smil:keyTimes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417812_253892949">19.451 smil:mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417814_253892949">19.452 smil:repeatCount</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417816_253892949">19.453 smil:repeatDur</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417818_253892949">19.454 smil:restart</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417820_253892949">19.455 smil:restartDefault</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417822_253892949">19.456 smil:subtype</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417824_253892949">19.457 smil:targetElement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417826_253892949">19.458 smil:to</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417828_253892949">19.459 smil:type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417830_253892949">19.460 smil:values</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417832_253892949">19.461 style:adjustment</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417834_253892949">19.462 style:apply-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417836_253892949">19.463 style:auto-update</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417838_253892949">19.464 style:base-cell-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417840_253892949">19.465 style:char</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417842_253892949">19.466 style:class</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417844_253892949">19.467 style:color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417846_253892949">19.468 style:condition</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417848_253892949">19.469 style:data-style-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417850_253892949">19.469.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417852_253892949">19.469.2 &lt;presentation:date-time-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417854_253892949">19.469.3 &lt;style:style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417856_253892949">19.469.4 &lt;text:creation-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417858_253892949">19.469.5 &lt;text:creation-time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417860_253892949">19.469.6 &lt;text:database-display&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417862_253892949">19.469.7 &lt;text:date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417864_253892949">19.469.8 &lt;text:editing-duration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417866_253892949">19.469.9 &lt;text:expression&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417868_253892949">19.469.10 &lt;text:meta-field&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417870_253892949">19.469.11 &lt;text:modification-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417872_253892949">19.469.12 &lt;text:modification-time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417874_253892949">19.469.13 &lt;text:print-date&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417876_253892949">19.469.14 &lt;text:print-time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417878_253892949">19.469.15 &lt;text:table-formula&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417880_253892949">19.469.16 &lt;text:time&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417882_253892949">19.469.17 &lt;text:user-defined&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417884_253892949">19.469.18 &lt;text:user-field-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417886_253892949">19.469.19 &lt;text:user-field-input&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417888_253892949">19.469.20 &lt;text:variable-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417890_253892949">19.469.21 &lt;text:variable-input&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417892_253892949">19.469.22 &lt;text:variable-set&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417894_253892949">19.470 style:default-outline-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417896_253892949">19.471 style:display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417898_253892949">19.472 style:display-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417900_253892949">19.473 style:distance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417902_253892949">19.474 style:distance-before-sep</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417904_253892949">19.475 style:distance-after-sep</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417906_253892949">19.476 style:family</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417908_253892949">19.477 style:filter-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417910_253892949">19.478 style:font-adornments</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417912_253892949">19.479 style:font-charset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417914_253892949">19.480 style:font-family-generic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417916_253892949">19.481 style:font-pitch</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417918_253892949">19.482 style:height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417920_253892949">19.483 style:leader-char</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417922_253892949">19.484 style:leader-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417924_253892949">19.485 style:leader-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417926_253892949">19.486 style:leader-text</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417928_253892949">19.487 style:leader-text-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417930_253892949">19.488 style:leader-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417932_253892949">19.489 style:leader-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417934_253892949">19.490 style:legend-expansion</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417936_253892949">19.491 style:legend-expansion-aspect-ratio</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417938_253892949">19.492 style:length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417940_253892949">19.493 style:line-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417942_253892949">19.494 style:lines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417944_253892949">19.495 style:list-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417946_253892949">19.496 style:list-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417948_253892949">19.497 style:master-page-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417950_253892949">19.498 style:name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417952_253892949">19.498.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417954_253892949">19.498.2 &lt;number:boolean-style&gt;, &lt;number:currency-style&gt;, &lt;number:date-style&gt;, &lt;number:number-style&gt;, &lt;number:percentage-style&gt;, &lt;number:text-style&gt;, &lt;number:time-style&gt;, &lt;style:master-page&gt;, &lt;style:page-layout&gt;, &lt;style:presentation-page-layout&gt;, &lt;style:style&gt;, &lt;text:list-style&gt;, &lt;text:outline-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417956_253892949">19.498.3 &lt;style:font-face&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417958_253892949">19.499 style:next-style-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417960_253892949">19.499.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417962_253892949">19.499.2 &lt;style:master-page&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417964_253892949">19.499.3 &lt;style:style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417966_253892949">19.500 style:num-format</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417968_253892949">19.501 style:num-letter-sync</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417970_253892949">19.502 style:num-prefix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417972_253892949">19.503 style:num-suffix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417974_253892949">19.504 style:page-layout-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417976_253892949">19.505 style:page-usage</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417978_253892949">19.506 style:parent-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417980_253892949">19.507 style:percentage-data-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417982_253892949">19.508 style:position</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417984_253892949">19.508.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417986_253892949">19.508.2 &lt;style:background-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417988_253892949">19.508.3 &lt;style:tab-stop&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417990_253892949">19.508.4 &lt;text:index-entry-tab-stop&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417992_253892949">19.509 style:rel-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1417994_253892949">19.510 style:rel-width</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417996_253892949">19.510.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1417998_253892949">19.510.2 &lt;draw:frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418000_253892949">19.510.3 &lt;style:column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418002_253892949">19.510.4 &lt;style:footnote-sep&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418004_253892949">19.511 style:repeat</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418006_253892949">19.512 style:rfc-language-tag</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418008_253892949">19.513 style:style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418010_253892949">19.514 style:style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418012_253892949">19.515 style:type</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418014_253892949">19.515.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418016_253892949">19.515.2 &lt;text:index-entry-tab-stop&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418018_253892949">19.515.3 &lt;style:tab-stop&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418020_253892949">19.516 style:vertical-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418022_253892949">19.517 style:volatile</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418024_253892949">19.518 style:width</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418026_253892949">19.518.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418028_253892949">19.518.2 &lt;style:column-sep&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418030_253892949">19.518.3 &lt;style:footnote-sep&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418032_253892949">19.519 svg:accent-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418034_253892949">19.520 svg:alphabetic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418036_253892949">19.521 svg:ascent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418038_253892949">19.522 svg:bbox</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418040_253892949">19.523 svg:cap-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418042_253892949">19.524 svg:cx</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418044_253892949">19.524.1 &lt;draw:area-circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418046_253892949">19.524.2 &lt;draw:circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418048_253892949">19.524.3 &lt;draw:ellipse&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418050_253892949">19.524.4 &lt;svg:radialGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418052_253892949">19.525 svg:cy</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418054_253892949">19.525.1 &lt;draw:area-circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418056_253892949">19.525.2 &lt;draw:circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418058_253892949">19.525.3 &lt;draw:ellipse&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418060_253892949">19.525.4 &lt;svg:radialGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418062_253892949">19.526 svg:d</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418064_253892949">19.527 svg:descent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418066_253892949">19.528 svg:font-family</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418068_253892949">19.529 svg:font-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418070_253892949">19.530 svg:font-stretch</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418072_253892949">19.531 svg:font-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418074_253892949">19.532 svg:font-variant</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418076_253892949">19.533 svg:font-weight</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418078_253892949">19.534 svg:fx</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418080_253892949">19.535 svg:fy</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418082_253892949">19.536 svg:gradientTransform</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418084_253892949">19.537 svg:gradientUnits</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418086_253892949">19.538 svg:hanging</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418088_253892949">19.539 svg:height</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418090_253892949">19.539.1 &lt;chart:chart&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418092_253892949">19.539.2 &lt;chart:plot-area&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418094_253892949">19.539.3 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418096_253892949">19.539.4 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418098_253892949">19.539.5 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418100_253892949">19.539.6 &lt;draw:contour-polygon&gt;, &lt;draw:contour-path&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418102_253892949">19.539.7 &lt;draw:fill-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418104_253892949">19.539.8 &lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418106_253892949">19.539.9 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418108_253892949">19.539.10 &lt;presentation:placeholder&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418110_253892949">19.540 svg:ideographic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418112_253892949">19.541 svg:mathematical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418114_253892949">19.542 svg:name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418116_253892949">19.543 svg:offset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418118_253892949">19.544 svg:origin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418120_253892949">19.545 svg:overline-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418122_253892949">19.546 svg:overline-thickness</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418124_253892949">19.547 svg:panose-1</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418126_253892949">19.548 svg:path</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418128_253892949">19.549 svg:r</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418130_253892949">19.549.1 &lt;draw:area-circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418132_253892949">19.549.2 &lt;draw:circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418134_253892949">19.549.3 &lt;svg:radialGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418136_253892949">19.550 svg:rx</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418138_253892949">19.551 svg:ry</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418140_253892949">19.552 svg:slope</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418142_253892949">19.553 svg:spreadMethod</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418144_253892949">19.554 svg:stemh</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418146_253892949">19.555 svg:stemv</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418148_253892949">19.556 svg:stop-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418150_253892949">19.557 svg:stop-opacity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418152_253892949">19.558 svg:strikethrough-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418154_253892949">19.559 svg:strikethrough-thickness</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418156_253892949">19.560 svg:string</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418158_253892949">19.561 svg:type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418160_253892949">19.562 svg:underline-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418162_253892949">19.563 svg:underline-thickness</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418164_253892949">19.564 svg:unicode-range</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418166_253892949">19.565 svg:units-per-em</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418168_253892949">19.566 svg:v-alphabetic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418170_253892949">19.567 svg:v-hanging</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418172_253892949">19.568 svg:v-ideographic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418174_253892949">19.569 svg:v-mathematical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418176_253892949">19.570 svg:viewBox</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418178_253892949">19.571 svg:width</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418180_253892949">19.571.1 &lt;chart:chart&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418182_253892949">19.571.2 &lt;chart:floor&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418184_253892949">19.571.3 &lt;chart:plot-area&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418186_253892949">19.571.4 &lt;chart:wall&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418188_253892949">19.571.5 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418190_253892949">19.571.6 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418192_253892949">19.571.7 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418194_253892949">19.571.8 &lt;draw:contour-polygon&gt;, &lt;draw:contour-path&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418196_253892949">19.571.9 &lt;draw:fill-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418198_253892949">19.571.10 &lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418200_253892949">19.571.11 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418202_253892949">19.571.12 &lt;presentation:placeholder&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418204_253892949">19.572 svg:widths</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418206_253892949">19.573 svg:x</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418208_253892949">19.573.1 &lt;chart:data-label&gt;, &lt;chart:equation&gt;, &lt;chart:footer&gt;, &lt;chart:legend&gt;, &lt;chart:plot-area&gt;, &lt;chart:subtitle&gt;, &lt;chart:title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418210_253892949">19.573.2 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418212_253892949">19.573.3 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418214_253892949">19.573.4 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418216_253892949">19.573.5 &lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418218_253892949">19.573.6 &lt;draw:glue-point&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418220_253892949">19.573.7 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418222_253892949">19.573.8 &lt;presentation:placeholder&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418224_253892949">19.574 svg:x1</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418226_253892949">19.574.1 &lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418228_253892949">19.574.2 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418230_253892949">19.575 svg:x2 </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418232_253892949">19.575.1 &lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418234_253892949">19.575.2 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418236_253892949">19.576 svg:x-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418238_253892949">19.577 svg:y</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418240_253892949">19.577.1 &lt;chart:data-label&gt;, &lt;chart:equation&gt;, &lt;chart:footer&gt;, &lt;chart:legend&gt;, &lt;chart:plot-area&gt;, &lt;chart:subtitle&gt;, &lt;chart:title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418242_253892949">19.577.2 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418244_253892949">19.577.3 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418246_253892949">19.577.4 &lt;dr3d:scene&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418248_253892949">19.577.5 &lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:g&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418250_253892949">19.577.6 &lt;draw:glue-point&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418252_253892949">19.577.7 &lt;office:annotation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418254_253892949">19.577.8 &lt;presentation:placeholder&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418256_253892949">19.578 svg:y1</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418258_253892949">19.578.1 &lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418260_253892949">19.578.2 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418262_253892949">19.579 svg:y2</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418264_253892949">19.579.1 &lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418266_253892949">19.579.2 &lt;svg:linearGradient&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418268_253892949">19.580 table:acceptance-state</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418270_253892949">19.581 table:algorithm</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418272_253892949">19.582 table:add-empty-lines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418274_253892949">19.583 table:allow-empty-cell</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418276_253892949">19.584 table:application-data</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418278_253892949">19.585 table:automatic-find-labels</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418280_253892949">19.586 table:base-cell-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418282_253892949">19.587 table:bind-styles-to-content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418284_253892949">19.588 table:border-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418286_253892949">19.589 table:buttons</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418288_253892949">19.590 table:case-sensitive</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418290_253892949">19.591 table:cell-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418292_253892949">19.592 table:cell-range</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418294_253892949">19.593 table:cell-range-address</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418296_253892949">19.593.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418298_253892949">19.593.2 &lt;chart:categories&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418300_253892949">19.593.3 &lt;chart:domain&gt; - bubble</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418302_253892949">19.593.4 &lt;chart:domain&gt;- scatter</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1718340_1219268628">19.593.5 &lt;chart:domain&gt; - surface</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418304_253892949">19.593.6 &lt;chart:plot-area&gt; (deprecated)</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418306_253892949">19.593.7 &lt;table:highlighted-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418308_253892949">19.593.8 &lt;table:named-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418310_253892949">19.593.9 &lt;table:source-cell-range&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418312_253892949">19.594 table:column</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418314_253892949">19.595 table:comment</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418316_253892949">19.596 table:condition</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418318_253892949">19.597 table:condition-source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418320_253892949">19.598 table:condition-source-range-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418322_253892949">19.599 table:contains-error</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418324_253892949">19.600 table:contains-header</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418326_253892949">19.601 table:content-validation-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418328_253892949">19.602 table:copy-back</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418330_253892949">19.603 table:copy-formulas</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418332_253892949">19.604 table:copy-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418334_253892949">19.605 table:count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418336_253892949">19.606 table:country</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418338_253892949">19.607 table:data-field</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418340_253892949">19.608 table:data-cell-range-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418342_253892949">19.609 table:database-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418344_253892949">19.610 table:database-table-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418346_253892949">19.611 table:data-type</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418348_253892949">19.611.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418350_253892949">19.611.2 &lt;table:filter-condition&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418352_253892949">19.611.3 &lt;table:sort-by&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418354_253892949">19.611.4 &lt;table:sort-groups&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418356_253892949">19.612 table:date-end</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418358_253892949">19.613 table:date-start</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418360_253892949">19.614 table:date-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418362_253892949">19.615 table:default-cell-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418364_253892949">19.616 table:direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418366_253892949">19.617 table:display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418368_253892949">19.618 table:display-border</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418370_253892949">19.619 table:display-duplicates</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418372_253892949">19.620 table:display-filter-buttons</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418374_253892949">19.621 table:display-list</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418376_253892949">19.622 table:display-member-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418378_253892949">19.623 table:drill-down-on-double-click</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418380_253892949">19.624 table:embedded-number-behavior</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418382_253892949">19.625 table:enabled</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418384_253892949">19.626 table:end</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418386_253892949">19.627 table:end-cell-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418388_253892949">19.628 table:end-column</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418390_253892949">19.629 table:end-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418392_253892949">19.630 table:end-row</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418394_253892949">19.631 table:end-table</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418396_253892949">19.632 table:end-x </a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418398_253892949">19.633 table:end-y</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418400_253892949">19.634 table:execute</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418402_253892949">19.635 table:expression</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418404_253892949">19.636 table:field-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418406_253892949">19.637 table:field-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418408_253892949">19.638 table:filter-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418410_253892949">19.639 table:filter-options</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418412_253892949">19.640 table:first-row-end-column (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418414_253892949">19.641 table:first-row-start-column (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418416_253892949">19.642 table:formula</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418418_253892949">19.643 table:function</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418420_253892949">19.643.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418422_253892949">19.643.2 &lt;table:consolidation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418424_253892949">19.643.3 &lt;table:data-pilot-field&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418426_253892949">19.643.4 &lt;table:data-pilot-subtotal&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418428_253892949">19.643.5 &lt;table:subtotal-field&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418430_253892949">19.644 table:grand-total</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418432_253892949">19.645 table:group-by-field-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418434_253892949">19.646 table:grouped-by</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418436_253892949">19.647 table:has-persistent-data</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418438_253892949">19.648 table:id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418440_253892949">19.649 table:identify-categories</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418442_253892949">19.650 table:ignore-empty-rows</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418444_253892949">19.651 table:index</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418446_253892949">19.652 table:is-active</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418448_253892949">19.653 table:is-data-layout-field</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418450_253892949">19.654 table:is-selection</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418452_253892949">19.655 table:is-sub-table</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418454_253892949">19.656 table:label-cell-range-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418456_253892949">19.657 table:language</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418458_253892949">19.658 table:last-column-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418460_253892949">19.659 table:last-row-end-column (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418462_253892949">19.660 table:last-row-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418464_253892949">19.661 table:last-row-start-column (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418466_253892949">19.662 table:layout-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418468_253892949">19.663 table:link-to-source-data</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418470_253892949">19.664 table:marked-invalid</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418472_253892949">19.665 table:matrix-covered</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418474_253892949">19.666 table:maximum-difference</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418476_253892949">19.667 table:member-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418478_253892949">19.668 table:member-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418480_253892949">19.669 table:member-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418482_253892949">19.670 table:message-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418484_253892949">19.671 table:mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418486_253892949">19.672 table:multi-deletion-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418488_253892949">19.673 table:name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418490_253892949">19.673.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418492_253892949">19.673.2 &lt;table:cell-range-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418494_253892949">19.673.3 &lt;table:content-validation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418496_253892949">19.673.4 &lt;table:data-pilot-group&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418498_253892949">19.673.5 &lt;table:data-pilot-group-member&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418500_253892949">19.673.6 &lt;table:data-pilot-member&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418502_253892949">19.673.7 &lt;table:data-pilot-table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418504_253892949">19.673.8 &lt;table:database-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418506_253892949">19.673.9 &lt;table:named-expression&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418508_253892949">19.673.10 &lt;table:named-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418510_253892949">19.673.11 &lt;table:operation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418512_253892949">19.673.12 &lt;table:source-service&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418514_253892949">19.673.13 &lt;table:table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418516_253892949">19.673.14 &lt;table:table-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418518_253892949">19.674 table:null-year</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418520_253892949">19.675 table:number-columns-repeated</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418522_253892949">19.675.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418524_253892949">19.675.2 &lt;table:covered-table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418526_253892949">19.675.3 &lt;table:table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418528_253892949">19.675.4 &lt;table:table-column&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418530_253892949">19.676 table:number-columns-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418532_253892949">19.677 table:number-rows-repeated</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418534_253892949">19.678 table:number-rows-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418536_253892949">19.679 table:number-matrix-columns-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418538_253892949">19.680 table:number-matrix-rows-spanned</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418540_253892949">19.681 table:object-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418542_253892949">19.682 table:on-update-keep-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418544_253892949">19.683 table:on-update-keep-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418546_253892949">19.684 table:operator</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418548_253892949">19.685 table:order</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418550_253892949">19.686 table:orientation</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418552_253892949">19.686.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418554_253892949">19.686.2 &lt;table:data-pilot-field&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418556_253892949">19.686.3 &lt;table:database-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418558_253892949">19.686.4 &lt;table:label-range&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418560_253892949">19.687 table:page-breaks-on-group-change</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418562_253892949">19.688 table:paragraph-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418564_253892949">19.689 table:parse-sql-statement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418566_253892949">19.690 table:password</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418568_253892949">19.691 table:position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418570_253892949">19.692 table:precision-as-shown</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418572_253892949">19.693 table:print</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418574_253892949">19.694 table:print-ranges</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418576_253892949">19.695 table:protect (deprecated) </a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418578_253892949">19.696 table:protected</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418580_253892949">19.696.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418582_253892949">19.696.2 &lt;table:covered-table-cell&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418584_253892949">19.696.3 &lt;table:scenario&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418586_253892949">19.696.4 &lt;table:table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418588_253892949">19.696.5 &lt;table:table-cell&gt; </a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418590_253892949">19.697 table:protection-key</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418592_253892949">19.698 table:protection-key-digest-algorithm</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418594_253892949">19.699 table:query-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418596_253892949">19.700 table:range-usable-as</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418598_253892949">19.701 table:refresh-delay</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418600_253892949">19.702 table:rejecting-change-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418602_253892949">19.703 table:rfc-language-tag</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418604_253892949">19.704 table:row</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418606_253892949">19.705 table:scenario-ranges</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418608_253892949">19.706 table:script</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418610_253892949">19.707 table:search-criteria-must-apply-to-whole-cell</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418612_253892949">19.708 table:selected-page</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418614_253892949">19.709 table:show-details</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418616_253892949">19.710 table:show-empty</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418618_253892949">19.711 table:show-filter-button</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418620_253892949">19.712 table:sort-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418622_253892949">19.713 table:source-cell-range-addresses</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418624_253892949">19.714 table:source-field-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418626_253892949">19.715 table:source-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418628_253892949">19.716 table:sql-statement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418630_253892949">19.717 table:start</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418632_253892949">19.718 table:start-column</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418634_253892949">19.719 table:start-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418636_253892949">19.720 table:start-row</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418638_253892949">19.721 table:start-table</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418640_253892949">19.722 table:status</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418642_253892949">19.723 table:step</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418644_253892949">19.724 table:steps</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418646_253892949">19.725 table:structure-protected</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418648_253892949">19.726 table:style-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418650_253892949">19.726.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418652_253892949">19.726.2 &lt;table:background&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418654_253892949">19.726.3 &lt;table:body&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418656_253892949">19.726.4 &lt;table:covered-table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418658_253892949">19.726.5 &lt;table:even-columns&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418660_253892949">19.726.6 &lt;table:even-rows&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418662_253892949">19.726.7 &lt;table:first-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418664_253892949">19.726.8 &lt;table:first-row&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418666_253892949">19.726.9 &lt;table:last-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418668_253892949">19.726.10 &lt;table:last-row&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418670_253892949">19.726.11 &lt;table:odd-columns&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418672_253892949">19.726.12 &lt;table:odd-rows&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418674_253892949">19.726.13 &lt;table:table-cell&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418676_253892949">19.726.14 &lt;table:table-column&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418678_253892949">19.726.15 &lt;table:table-row&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418680_253892949">19.726.16 &lt;table:table&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418682_253892949">19.727 table:table</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418684_253892949">19.728 table:table-background</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418686_253892949">19.729 table:table-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418688_253892949">19.730 table:target-cell-address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418690_253892949">19.731 table:target-range-address</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418692_253892949">19.731.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418694_253892949">19.731.2 &lt;table:data-pilot-table&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418696_253892949">19.731.3 &lt;table:database-range&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418698_253892949">19.731.4 &lt;table:filter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418700_253892949">19.731.5 &lt;table:sort&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418702_253892949">19.732 table:template-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418704_253892949">19.733 table:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418706_253892949">19.734 table:track-changes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418708_253892949">19.735 table:type</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418710_253892949">19.735.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418712_253892949">19.735.2 &lt;table:data-pilot-field-reference&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418714_253892949">19.735.3 &lt;table:deletion&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418716_253892949">19.735.4 &lt;table:insertion&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418718_253892949">19.736 table:use-banding-columns-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418720_253892949">19.737 table:use-banding-rows-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418722_253892949">19.738 table:use-first-column-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418724_253892949">19.739 table:use-first-row-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418726_253892949">19.740 table:use-last-column-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418728_253892949">19.741 table:use-last-row-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418730_253892949">19.742 table:use-labels</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418732_253892949">19.743 table:use-regular-expressions</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418734_253892949">19.744 table:use-wildcards</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418736_253892949">19.745 table:used-hierarchy</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418738_253892949">19.746 table:user-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418740_253892949">19.747 table:value</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418742_253892949">19.747.1 &lt;table:filter-condition&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418744_253892949">19.747.2 &lt;table:filter-set-item&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418746_253892949">19.748 table:value-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418748_253892949">19.749 table:visibility</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418750_253892949">19.750 text:active</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418752_253892949">19.751 text:address</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418754_253892949">19.752 text:alphabetical-separators</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418756_253892949">19.753 text:anchor-page-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418758_253892949">19.754 text:anchor-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418760_253892949">19.755 text:annote</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418762_253892949">19.756 text:author</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418764_253892949">19.757 text:bibliography-data-field</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418766_253892949">19.758 text:bibliography-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418768_253892949">19.759 text:booktitle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418770_253892949">19.760 text:bullet-char</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418772_253892949">19.761 text:bullet-relative-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418774_253892949">19.762 text:capitalize-entries</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418776_253892949">19.763 text:c</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418778_253892949">19.764 text:caption-sequence-format</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418780_253892949">19.765 text:caption-sequence-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418782_253892949">19.766 text:change-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418784_253892949">19.767 text:chapter</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418786_253892949">19.768 text:citation-body-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418788_253892949">19.769 text:citation-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418790_253892949">19.770 text:class-names</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418792_253892949">19.770.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418794_253892949">19.770.2 &lt;text:h&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418796_253892949">19.770.3 &lt;text:p&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418798_253892949">19.770.4 &lt;text:span&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418800_253892949">19.771 text:column-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418802_253892949">19.772 text:combine-entries</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418804_253892949">19.773 text:combine-entries-with-dash</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418806_253892949">19.774 text:combine-entries-with-pp</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418808_253892949">19.775 text:comma-separated</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418810_253892949">19.776 text:cond-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418812_253892949">19.777 text:condition</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418814_253892949">19.777.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418816_253892949">19.777.2 &lt;text:conditional-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418818_253892949">19.777.3 &lt;text:database-next&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418820_253892949">19.777.4 &lt;text:database-row-select&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418822_253892949">19.777.5 &lt;text:hidden-paragraph&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418824_253892949">19.777.6 &lt;text:hidden-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418826_253892949">19.777.7 &lt;text:section&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418828_253892949">19.778 text:connection-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418830_253892949">19.779 text:consecutive-numbering</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418832_253892949">19.780 text:continue-list</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418834_253892949">19.781 text:continue-numbering</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418836_253892949">19.782 text:copy-outline-levels</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418838_253892949">19.783 text:count-empty-lines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418840_253892949">19.784 text:count-in-text-boxes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418842_253892949">19.785 text:current-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418844_253892949">19.786 text:custom1</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418846_253892949">19.787 text:custom2</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418848_253892949">19.788 text:custom3</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418850_253892949">19.789 text:custom4</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418852_253892949">19.790 text:custom5</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418854_253892949">19.791 text:database-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418856_253892949">19.792 text:date-adjust</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418858_253892949">19.793 text:date-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418860_253892949">19.794 text:default-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418862_253892949">19.795 text:description</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418864_253892949">19.796 text:display</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418866_253892949">19.796.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418868_253892949">19.796.2 &lt;text:chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418870_253892949">19.796.3 &lt;text:expression&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418872_253892949">19.796.4 &lt;text:file-name&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418874_253892949">19.796.5 &lt;text:index-entry-chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418876_253892949">19.796.6 &lt;text:section&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418878_253892949">19.796.7 &lt;text:table-formula&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418880_253892949">19.796.8 &lt;text:template-name&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418882_253892949">19.796.9 &lt;text:user-field-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418884_253892949">19.796.10 &lt;text:variable-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418886_253892949">19.796.11 &lt;text:variable-input&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418888_253892949">19.796.12 &lt;text:variable-set&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418890_253892949">19.797 text:display-levels</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418892_253892949">19.798 text:display-outline-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418894_253892949">19.799 text:duration</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418896_253892949">19.800 text:edition</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418898_253892949">19.801 text:editor</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418900_253892949">19.802 text:filter-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418902_253892949">19.803 text:fixed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418904_253892949">19.804 text:footnotes-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418906_253892949">19.805 text:formula</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418908_253892949">19.806 text:global (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418910_253892949">19.807 text:howpublished</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418912_253892949">19.808 text:increment</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418914_253892949">19.809 text:id</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418916_253892949">19.809.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418918_253892949">19.809.2 &lt;draw:text-box&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418920_253892949">19.809.3 &lt;text:alphabetical-index-mark-end&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418922_253892949">19.809.4 &lt;text:alphabetical-index-mark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418924_253892949">19.809.5 &lt;text:changed-region&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418926_253892949">19.809.6 &lt;text:h&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418928_253892949">19.809.7 &lt;text:note&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418930_253892949">19.809.8 &lt;text:p&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418932_253892949">19.809.9 &lt;text:toc-mark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418934_253892949">19.809.10 &lt;text:toc-mark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418936_253892949">19.809.11 &lt;text:user-index-mark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418938_253892949">19.809.12 &lt;text:user-index-mark-start&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418940_253892949">19.810 text:identifier</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418942_253892949">19.811 text:index-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418944_253892949">19.812 text:index-scope</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418946_253892949">19.813 text:ignore-case</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418948_253892949">19.814 text:institution</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418950_253892949">19.815 text:is-hidden</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418952_253892949">19.816 text:is-list-header</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418954_253892949">19.817 text:isbn</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418956_253892949">19.818 text:issn</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418958_253892949">19.819 text:journal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418960_253892949">19.820 text:key</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418962_253892949">19.821 text:key1</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418964_253892949">19.822 text:key2</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418966_253892949">19.823 text:key1-phonetic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418968_253892949">19.824 text:key2-phonetic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418970_253892949">19.825 text:kind</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418972_253892949">19.826 text:label</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418974_253892949">19.827 text:label-followed-by</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418976_253892949">19.828 text:level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418978_253892949">19.829 text:list-id</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418980_253892949">19.830 text:list-tab-stop-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418982_253892949">19.831 text:main-entry</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418984_253892949">19.832 text:main-entry-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418986_253892949">19.833 text:master-page-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418988_253892949">19.834 text:month</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1418990_253892949">19.835 text:name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418992_253892949">19.835.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418994_253892949">19.835.2 &lt;text:alphabetical-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418996_253892949">19.835.3 &lt;text:bibliography&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1418998_253892949">19.835.4 &lt;text:bookmark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419000_253892949">19.835.5 &lt;text:bookmark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419002_253892949">19.835.6 &lt;text:bookmark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419004_253892949">19.835.7 &lt;text:execute-macro&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419006_253892949">19.835.8 &lt;text:illustration-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419008_253892949">19.835.9 &lt;text:index-title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419010_253892949">19.835.10 &lt;text:object-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419012_253892949">19.835.11 &lt;text:reference-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419014_253892949">19.835.12 &lt;text:reference-mark-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419016_253892949">19.835.13 &lt;text:reference-mark-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419018_253892949">19.835.14 &lt;text:section&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419020_253892949">19.835.15 &lt;text:sequence&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419022_253892949">19.835.16 &lt;text:sequence-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419024_253892949">19.835.17 &lt;text:table-of-content&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419026_253892949">19.835.18 &lt;text:table-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419028_253892949">19.835.19 &lt;text:user-defined&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419030_253892949">19.835.20 &lt;text:user-field-decl&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419032_253892949">19.835.21 &lt;text:user-field-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419034_253892949">19.835.22 &lt;text:user-field-input&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419036_253892949">19.835.23 &lt;text:user-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419038_253892949">19.835.24 &lt;text:variable-set&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419040_253892949">19.835.25 &lt;text:variable-decl&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419042_253892949">19.835.26 &lt;text:variable-get&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419044_253892949">19.835.27 &lt;text:variable-input&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419046_253892949">19.836 text:note</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419048_253892949">19.837 text:note-class</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419050_253892949">19.838 text:number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419052_253892949">19.839 text:number-lines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419054_253892949">19.840 text:number-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419056_253892949">19.841 text:numbered-entries</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419058_253892949">19.842 text:offset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419060_253892949">19.843 text:organizations</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419062_253892949">19.844 text:outline-level</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419064_253892949">19.844.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419066_253892949">19.844.2 &lt;text:alphabetical-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419068_253892949">19.844.3 &lt;text:chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419070_253892949">19.844.4 &lt;text:h&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419072_253892949">19.844.5 &lt;text:index-entry-chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419074_253892949">19.844.6 &lt;text:index-source-styles&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419076_253892949">19.844.7 &lt;text:user-index-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419078_253892949">19.844.8 &lt;text:table-of-content-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419080_253892949">19.844.9 &lt;text:table-of-content-source&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419082_253892949">19.844.10 &lt;text:toc-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419084_253892949">19.844.11 &lt;text:toc-mark-start&gt; </a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419086_253892949">19.844.12 &lt;text:user-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419088_253892949">19.844.13 &lt;text:user-index-mark-start&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419090_253892949">19.845 text:page-adjust</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419092_253892949">19.845.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419094_253892949">19.845.2 &lt;text:page-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419096_253892949">19.845.3 &lt;text:page-variable-set&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419098_253892949">19.846 text:pages</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419100_253892949">19.847 text:placeholder-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419102_253892949">19.848 text:prefix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419104_253892949">19.849 text:protected</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419106_253892949">19.850 text:protection-key</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419108_253892949">19.851 text:protection-key-digest-algorithm</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419110_253892949">19.852 text:publisher</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419112_253892949">19.853 text:ref-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419114_253892949">19.853.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419116_253892949">19.853.2 &lt;text:bookmark-ref&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419118_253892949">19.853.3 &lt;text:note-ref&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419120_253892949">19.853.4 &lt;text:reference-ref&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419122_253892949">19.853.5 &lt;text:sequence&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419124_253892949">19.853.6 &lt;text:sequence-ref&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419126_253892949">19.854 text:reference-format</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419128_253892949">19.855 text:relative-tab-stop-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419130_253892949">19.856 text:report-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419132_253892949">19.857 text:restart-numbering</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419134_253892949">19.858 text:restart-on-page</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419136_253892949">19.859 text:row-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419138_253892949">19.860 text:school</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419140_253892949">19.861 text:section-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419142_253892949">19.862 text:series</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419144_253892949">19.863 text:select-page</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419146_253892949">19.863.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419148_253892949">19.863.2 &lt;text:page-continuation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419150_253892949">19.863.3 &lt;text:page-number&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419152_253892949">19.864 text:separation-character</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419154_253892949">19.865 text:sort-algorithm</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419156_253892949">19.866 text:sort-ascending</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419158_253892949">19.867 text:sort-by-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419160_253892949">19.868 text:start-value</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419162_253892949">19.868.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419164_253892949">19.868.2 &lt;text:h&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419166_253892949">19.868.3 &lt;text:list-item&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419168_253892949">19.868.4 &lt;text:list-level-style-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419170_253892949">19.868.5 &lt;text:notes-configuration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419172_253892949">19.868.6 &lt;text:numbered-paragraph&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419174_253892949">19.868.7 &lt;text:outline-level-style&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419176_253892949">19.869 text:start-numbering-at</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419178_253892949">19.870 text:string-value-phonetic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419180_253892949">19.871 text:string-value</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419182_253892949">19.871.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419184_253892949">19.871.2 &lt;text:alphabetical-index-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419186_253892949">19.871.3 &lt;text:hidden-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419188_253892949">19.871.4 &lt;text:page-continuation&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419190_253892949">19.871.5 &lt;text:toc-mark&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419192_253892949">19.871.6 &lt;text:user-index-mark&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419194_253892949">19.872 text:string-value-if-false</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419196_253892949">19.873 text:string-value-if-true</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419198_253892949">19.874 text:style-name</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419200_253892949">19.874.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419202_253892949">19.874.2 &lt;text:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419204_253892949">19.874.3 &lt;text:alphabetical-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419206_253892949">19.874.4 &lt;text:alphabetical-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419208_253892949">19.874.5 &lt;text:bibliography&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419210_253892949">19.874.6 &lt;text:bibliography-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419212_253892949">19.874.7 &lt;text:h&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419214_253892949">19.874.8 &lt;text:illustration-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419216_253892949">19.874.9 &lt;text:illustration-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419218_253892949">19.874.10 &lt;text:index-entry-bibliography&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419220_253892949">19.874.11 &lt;text:index-entry-chapter&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419222_253892949">19.874.12 &lt;text:index-entry-link-end&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419224_253892949">19.874.13 &lt;text:index-entry-link-start&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419226_253892949">19.874.14 &lt;text:index-entry-page-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419228_253892949">19.874.15 &lt;text:index-entry-span&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419230_253892949">19.874.16 &lt;text:index-entry-tab-stop&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419232_253892949">19.874.17 &lt;text:index-entry-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419234_253892949">19.874.18 &lt;text:index-source-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419236_253892949">19.874.19 &lt;text:index-title&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419238_253892949">19.874.20 &lt;text:index-title-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419240_253892949">19.874.21 &lt;text:linenumbering-configuration&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419242_253892949">19.874.22 &lt;text:list&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419244_253892949">19.874.23 &lt;text:list-level-style-number&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419246_253892949">19.874.24 &lt;text:list-level-style-bullet&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419248_253892949">19.874.25 &lt;text:numbered-paragraph&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419250_253892949">19.874.26 &lt;text:object-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419252_253892949">19.874.27 &lt;text:object-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419254_253892949">19.874.28 &lt;text:outline-level-style&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419256_253892949">19.874.29 &lt;text:p&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419258_253892949">19.874.30 &lt;text:ruby&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419260_253892949">19.874.31 &lt;text:ruby-text&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419262_253892949">19.874.32 &lt;text:section&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419264_253892949">19.874.33 &lt;text:span&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419266_253892949">19.874.34 &lt;text:table-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419268_253892949">19.874.35 &lt;text:table-of-content&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419270_253892949">19.874.36 &lt;text:table-of-content-entry-template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419272_253892949">19.874.37 &lt;text:table-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419274_253892949">19.874.38 &lt;text:user-index&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419276_253892949">19.874.39 &lt;text:user-index-entry-template&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419278_253892949">19.875 text:style-override</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419280_253892949">19.876 text:suffix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419282_253892949">19.877 text:tab-ref</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419284_253892949">19.878 text:table-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419286_253892949">19.879 text:table-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419288_253892949">19.880 text:time-adjust</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419290_253892949">19.881 text:time-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419292_253892949">19.882 text:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419294_253892949">19.883 text:track-changes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419296_253892949">19.884 text:url</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419298_253892949">19.885 text:use-caption</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419300_253892949">19.886 text:use-chart-objects</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419302_253892949">19.887 text:use-draw-objects</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419304_253892949">19.888 text:use-floating-frames</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419306_253892949">19.889 text:use-graphics</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419308_253892949">19.890 text:use-index-marks</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419310_253892949">19.891 text:use-index-source-styles</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419312_253892949">19.892 text:use-keys-as-entries</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419314_253892949">19.893 text:use-math-objects</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419316_253892949">19.894 text:use-objects</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419318_253892949">19.895 text:use-other-objects</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419320_253892949">19.896 text:use-outline-level</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419322_253892949">19.897 text:use-soft-page-breaks</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419324_253892949">19.898 text:use-spreadsheet-objects</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419326_253892949">19.899 text:use-tables</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419328_253892949">19.900 text:value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419330_253892949">19.901 text:visited-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419332_253892949">19.902 text:volume</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419334_253892949">19.903 text:year</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419336_253892949">19.904 xforms:bind</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419338_253892949">19.905 xhtml:about</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419340_253892949">19.906 xhtml:content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419342_253892949">19.907 xhtml:datatype</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419344_253892949">19.908 xhtml:property</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419346_253892949">19.909 xlink:actuate</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419348_253892949">19.910 xlink:href</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419350_253892949">19.910.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419352_253892949">19.910.2 &lt;anim:audio&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419354_253892949">19.910.3 &lt;chart:chart&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419356_253892949">19.910.4 &lt;chart:symbol-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419358_253892949">19.910.5 &lt;db:component&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419360_253892949">19.910.6 &lt;db:connection-resource&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419362_253892949">19.910.7 &lt;db:file-based-database&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419364_253892949">19.910.8 &lt;draw:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419366_253892949">19.910.9 &lt;draw:applet&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419368_253892949">19.910.10 &lt;draw:area-circle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419370_253892949">19.910.11 &lt;draw:area-polygon&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419372_253892949">19.910.12 &lt;draw:area-rectangle&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419374_253892949">19.910.13 &lt;draw:fill-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419376_253892949">19.910.14 &lt;draw:floating-frame&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419378_253892949">19.910.15 &lt;draw:image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419380_253892949">19.910.16 &lt;draw:object&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419382_253892949">19.910.17 &lt;draw:object-ole&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419384_253892949">19.910.18 &lt;draw:plugin&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419386_253892949">19.910.19 &lt;form:button&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419388_253892949">19.910.20 &lt;form:connection-resource&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419390_253892949">19.910.21 &lt;form:image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419392_253892949">19.910.22 &lt;form:form&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419394_253892949">19.910.23 &lt;meta:auto-reload&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419396_253892949">19.910.24 &lt;meta:template&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419398_253892949">19.910.25 &lt;presentation:event-listener&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419400_253892949">19.910.26 &lt;presentation:sound&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419402_253892949">19.910.27 &lt;script:event-listener&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419404_253892949">19.910.28 &lt;style:background-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419406_253892949">19.910.29 &lt;svg:definition-src&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419408_253892949">19.910.30 &lt;svg:font-face-uri&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419410_253892949">19.910.31 &lt;table:cell-range-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419412_253892949">19.910.32 &lt;table:table-source&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419414_253892949">19.910.33 &lt;text:a&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419416_253892949">19.910.34 &lt;text:alphabetical-index-auto-mark-file&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419418_253892949">19.910.35 &lt;text:list-level-style-image&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419420_253892949">19.910.36 &lt;text:script&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419422_253892949">19.910.37 &lt;text:section-source&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419424_253892949">19.911 xlink:show</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419426_253892949">19.912 xlink:title</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419428_253892949">19.913 xlink:type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419430_253892949">19.914 xml:id</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1419432_253892949">20 Formatting Attributes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419434_253892949">20.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419436_253892949">20.2 chart:angle-offset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419438_253892949">20.3 chart:auto-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419440_253892949">20.4 chart:auto-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419442_253892949">20.5 chart:axis-label-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419444_253892949">20.6 chart:axis-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419446_253892949">20.7 chart:connect-bars</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419448_253892949">20.8 chart:data-label-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419450_253892949">20.9 chart:data-label-symbol</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419452_253892949">20.10 chart:data-label-text</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419454_253892949">20.11 chart:deep</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419456_253892949">20.12 chart:display-label</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419458_253892949">20.13 chart:error-category</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419460_253892949">20.14 chart:error-lower-indicator</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419462_253892949">20.15 chart:error-lower-limit</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1718342_1219268628">20.16 chart:error-lower-range</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419464_253892949">20.17 chart:error-margin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419466_253892949">20.18 chart:error-percentage</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419468_253892949">20.19 chart:error-upper-indicator</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419470_253892949">20.20 chart:error-upper-limit</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1718344_1219268628">20.21 chart:error-upper-range</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419472_253892949">20.22 chart:gap-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419474_253892949">20.23 chart:group-bars-per-axis</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419476_253892949">20.24 chart:hole-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419478_253892949">20.25 chart:include-hidden-cells</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419480_253892949">20.26 chart:interpolation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419482_253892949">20.27 chart:interval-major</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419484_253892949">20.28 chart:interval-minor-divisor</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419486_253892949">20.29 chart:japanese-candle-stick</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419488_253892949">20.30 chart:label-arrangement</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419490_253892949">20.31 chart:label-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419492_253892949">20.32 chart:label-position-negative</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419494_253892949">20.33 chart:lines (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419496_253892949">20.34 chart:link-data-style-to-source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419498_253892949">20.35 chart:logarithmic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419500_253892949">20.36 chart:maximum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419502_253892949">20.37 chart:mean-value</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419504_253892949">20.38 chart:minimum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419506_253892949">20.39 chart:origin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419508_253892949">20.40 chart:overlap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419510_253892949">20.41 chart:pie-offset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419512_253892949">20.42 chart:percentage</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419514_253892949">20.43 chart:regression-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419516_253892949">20.44 chart:reverse-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419518_253892949">20.45 chart:right-angled-axes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419520_253892949">20.46 chart:scale-text</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419522_253892949">20.47 chart:series-source (deprecated)</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419524_253892949">20.48 chart:sort-by-x-values</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419526_253892949">20.49 chart:solid-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419528_253892949">20.50 chart:spline-order</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419530_253892949">20.51 chart:spline-resolution</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419532_253892949">20.52 chart:stacked</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419534_253892949">20.53 chart:symbol-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419536_253892949">20.54 chart:symbol-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419538_253892949">20.55 chart:symbol-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419540_253892949">20.56 chart:symbol-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419542_253892949">20.57 chart:text-overlap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419544_253892949">20.58 chart:three-dimensional</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419546_253892949">20.59 chart:tick-marks-major-inner</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419548_253892949">20.60 chart:tick-marks-major-outer</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419550_253892949">20.61 chart:tick-marks-minor-inner</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419552_253892949">20.62 chart:tick-marks-minor-outer</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419554_253892949">20.63 chart:tick-mark-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419556_253892949">20.64 chart:treat-empty-cells</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419558_253892949">20.65 chart:vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419560_253892949">20.66 chart:visible</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419562_253892949">20.67 dr3d:ambient-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419564_253892949">20.68 dr3d:back-scale</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419566_253892949">20.69 dr3d:backface-culling</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419568_253892949">20.70 dr3d:close-back</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419570_253892949">20.71 dr3d:close-front</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419572_253892949">20.72 dr3d:depth</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419574_253892949">20.73 dr3d:diffuse-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419576_253892949">20.74 dr3d:edge-rounding</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419578_253892949">20.75 dr3d:edge-rounding-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419580_253892949">20.76 dr3d:emissive-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419582_253892949">20.77 dr3d:end-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419584_253892949">20.78 dr3d:horizontal-segments</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419586_253892949">20.79 dr3d:lighting-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419588_253892949">20.80 dr3d:normals-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419590_253892949">20.81 dr3d:normals-kind</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419592_253892949">20.82 dr3d:shadow</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419594_253892949">20.83 dr3d:shininess</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419596_253892949">20.84 dr3d:specular-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419598_253892949">20.85 dr3d:texture-filter</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419600_253892949">20.86 dr3d:texture-kind</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419602_253892949">20.87 dr3d:texture-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419604_253892949">20.88 dr3d:texture-generation-mode-x</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419606_253892949">20.89 dr3d:texture-generation-mode-y</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419608_253892949">20.90 dr3d:vertical-segments</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419610_253892949">20.91 draw:auto-grow-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419612_253892949">20.92 draw:auto-grow-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419614_253892949">20.93 draw:background-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419616_253892949">20.94 draw:blue</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419618_253892949">20.95 draw:caption-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419620_253892949">20.96 draw:caption-angle-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419622_253892949">20.97 draw:caption-escape</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419624_253892949">20.98 draw:caption-escape-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419626_253892949">20.99 draw:caption-fit-line-length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419628_253892949">20.100 draw:caption-gap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419630_253892949">20.101 draw:caption-line-length</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419632_253892949">20.102 draw:caption-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419634_253892949">20.103 draw:color-inversion</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419636_253892949">20.104 draw:color-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419638_253892949">20.105 draw:contrast</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419640_253892949">20.106 draw:decimal-places</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419642_253892949">20.107 draw:draw-aspect</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419644_253892949">20.108 draw:end-guide</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419646_253892949">20.109 draw:end-line-spacing-horizontal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419648_253892949">20.110 draw:end-line-spacing-vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419650_253892949">20.111 draw:fill</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419652_253892949">20.112 draw:fill-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419654_253892949">20.113 draw:fill-gradient-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419656_253892949">20.114 draw:fill-hatch-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419658_253892949">20.115 draw:fill-hatch-solid</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419660_253892949">20.116 draw:fill-image-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419662_253892949">20.117 draw:fill-image-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419664_253892949">20.118 draw:fill-image-ref-point</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419666_253892949">20.119 draw:fill-image-ref-point-x</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419668_253892949">20.120 draw:fill-image-ref-point-y</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419670_253892949">20.121 draw:fill-image-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419672_253892949">20.122 draw:fit-to-contour</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419674_253892949">20.123 draw:fit-to-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419676_253892949">20.124 draw:frame-display-border</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419678_253892949">20.125 draw:frame-margin-horizontal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419680_253892949">20.126 draw:frame-display-scrollbar</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419682_253892949">20.127 draw:frame-margin-vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419684_253892949">20.128 draw:gamma</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419686_253892949">20.129 draw:green</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419688_253892949">20.130 draw:gradient-step-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419690_253892949">20.131 draw:guide-distance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419692_253892949">20.132 draw:guide-overhang</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419694_253892949">20.133 draw:image-opacity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419696_253892949">20.134 draw:line-distance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419698_253892949">20.135 draw:luminance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419700_253892949">20.136 draw:marker-end</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419702_253892949">20.137 draw:marker-end-center</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419704_253892949">20.138 draw:marker-end-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419706_253892949">20.139 draw:marker-start</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419708_253892949">20.140 draw:marker-start-center</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419710_253892949">20.141 draw:marker-start-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419712_253892949">20.142 draw:measure-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419714_253892949">20.143 draw:measure-vertical-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419716_253892949">20.144 draw:ole-draw-aspect (deprecated) </a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419718_253892949">20.145 draw:opacity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419720_253892949">20.146 draw:opacity-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419722_253892949">20.147 draw:parallel</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419724_253892949">20.148 draw:placing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419726_253892949">20.149 draw:red</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419728_253892949">20.150 draw:secondary-fill-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419730_253892949">20.151 draw:shadow</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419732_253892949">20.152 draw:shadow-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419734_253892949">20.153 draw:shadow-offset-x</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419736_253892949">20.154 draw:shadow-offset-y</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419738_253892949">20.155 draw:shadow-opacity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419740_253892949">20.156 draw:show-unit</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419742_253892949">20.157 draw:start-guide</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419744_253892949">20.158 draw:start-line-spacing-horizontal</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419746_253892949">20.159 draw:start-line-spacing-vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419748_253892949">20.160 draw:stroke</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419750_253892949">20.161 draw:stroke-dash</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419752_253892949">20.162 draw:stroke-dash-names</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419754_253892949">20.163 draw:stroke-linejoin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419756_253892949">20.164 svg:stroke-linecap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419758_253892949">20.165 draw:symbol-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419760_253892949">20.166 draw:textarea-horizontal-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419762_253892949">20.167 draw:textarea-vertical-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419764_253892949">20.168 draw:tile-repeat-offset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419766_253892949">20.169 draw:visible-area-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419768_253892949">20.170 draw:visible-area-left</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419770_253892949">20.171 draw:visible-area-top</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419772_253892949">20.172 draw:visible-area-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419774_253892949">20.173 draw:unit</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419776_253892949">20.174 draw:wrap-influence-on-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419778_253892949">20.175 fo:background-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419780_253892949">20.176 fo Border Properties</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419782_253892949">20.176.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419784_253892949">20.176.2 fo:border</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419786_253892949">20.176.3 fo:border-bottom</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419788_253892949">20.176.4 fo:border-left</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419790_253892949">20.176.5 fo:border-right</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419792_253892949">20.176.6 fo:border-top</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419794_253892949">20.177 fo:break-after</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419796_253892949">20.178 fo:break-before</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419798_253892949">20.179 fo:clip</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419800_253892949">20.180 fo:color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419802_253892949">20.181 fo:country</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419804_253892949">20.182 fo:font-family</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419806_253892949">20.183 fo:font-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419808_253892949">20.184 fo:font-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419810_253892949">20.185 fo:font-variant</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419812_253892949">20.186 fo:font-weight</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419814_253892949">20.187 fo:height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419816_253892949">20.188 fo:hyphenate</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419818_253892949">20.189 fo:hyphenation-keep</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419820_253892949">20.190 fo:hyphenation-ladder-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419822_253892949">20.191 fo:hyphenation-push-char-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419824_253892949">20.192 fo:hyphenation-remain-char-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419826_253892949">20.193 fo:keep-together</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419828_253892949">20.194 fo:keep-with-next</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419830_253892949">20.195 fo:language</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419832_253892949">20.196 fo:letter-spacing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419834_253892949">20.197 fo:line-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419836_253892949">20.198 fo:margin</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419838_253892949">20.199 fo:margin-bottom</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419840_253892949">20.200 fo:margin-left</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419842_253892949">20.201 fo:margin-right</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419844_253892949">20.202 fo:margin-top</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419846_253892949">20.203 fo:max-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419848_253892949">20.204 fo:max-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419850_253892949">20.205 fo:min-height</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419852_253892949">20.205.1 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419854_253892949">20.205.2 &lt;style:header-footer-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419856_253892949">20.206 fo:min-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419858_253892949">20.207 fo:orphans</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419860_253892949">20.208 fo:page-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419862_253892949">20.209 fo:page-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419864_253892949">20.210 fo:padding</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419866_253892949">20.211 fo:padding-bottom</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419868_253892949">20.212 fo:padding-left</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419870_253892949">20.213 fo:padding-right</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419872_253892949">20.214 fo:padding-top</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419874_253892949">20.215 fo:script</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419876_253892949">20.216 fo:text-align</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419878_253892949">20.216.1 &lt;style:paragraph-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1419880_253892949">20.216.2 &lt;style:list-level-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419882_253892949">20.217 fo:text-align-last</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419884_253892949">20.218 fo:text-indent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419886_253892949">20.219 fo:text-shadow</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419888_253892949">20.220 fo:text-transform</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419890_253892949">20.221 fo:widows</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419892_253892949">20.222 fo:width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419894_253892949">20.223 fo:wrap-option</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419896_253892949">20.224 presentation:background-objects-visible</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419898_253892949">20.225 presentation:background-visible</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419900_253892949">20.226 presentation:display-date-time</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419902_253892949">20.227 presentation:display-footer</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419904_253892949">20.228 presentation:display-header</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419906_253892949">20.229 presentation:display-page-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419908_253892949">20.230 presentation:duration</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419910_253892949">20.231 presentation:transition-speed</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419912_253892949">20.232 presentation:transition-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419914_253892949">20.233 presentation:transition-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419916_253892949">20.234 presentation:visibility</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419918_253892949">20.235 smil:direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419920_253892949">20.236 smil:fadeColor</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419922_253892949">20.237 smil:subtype</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419924_253892949">20.238 smil:type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419926_253892949">20.239 style:auto-text-indent</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419928_253892949">20.240 style:background-transparency</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419930_253892949">20.241 style:border-line-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419932_253892949">20.242 style:border-line-width-bottom</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419934_253892949">20.243 style:border-line-width-left</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419936_253892949">20.244 style:border-line-width-right</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419938_253892949">20.245 style:border-line-width-top</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419940_253892949">20.246 style:cell-protect</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419942_253892949">20.247 style:column-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419944_253892949">20.248 style:country-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419946_253892949">20.249 style:country-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419948_253892949">20.250 style:decimal-places</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419950_253892949">20.251 style:diagonal-bl-tr</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419952_253892949">20.252 style:diagonal-bl-tr-widths</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419954_253892949">20.253 style:diagonal-tl-br</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419956_253892949">20.254 style:diagonal-tl-br-widths</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419958_253892949">20.255 style:direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419960_253892949">20.256 style:dynamic-spacing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419962_253892949">20.257 style:editable</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419964_253892949">20.258 style:first-page-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419966_253892949">20.259 style:flow-with-text</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419968_253892949">20.260 style:font-charset</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419970_253892949">20.261 style:font-charset-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419972_253892949">20.262 style:font-charset-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419974_253892949">20.263 style:font-family-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419976_253892949">20.264 style:font-family-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419978_253892949">20.265 style:font-family-generic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419980_253892949">20.266 style:font-family-generic-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419982_253892949">20.267 style:font-family-generic-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419984_253892949">20.268 style:font-independent-line-spacing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419986_253892949">20.269 style:font-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419988_253892949">20.270 style:font-name-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419990_253892949">20.271 style:font-name-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419992_253892949">20.272 style:font-pitch</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419994_253892949">20.273 style:font-pitch-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419996_253892949">20.274 style:font-pitch-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1419998_253892949">20.275 style:font-relief</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420000_253892949">20.276 style:font-size-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420002_253892949">20.277 style:font-size-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420004_253892949">20.278 style:font-size-rel</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420006_253892949">20.279 style:font-size-rel-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420008_253892949">20.280 style:font-size-rel-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420010_253892949">20.281 style:font-style-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420012_253892949">20.282 style:font-style-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420014_253892949">20.283 style:font-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420016_253892949">20.284 style:font-style-name-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420018_253892949">20.285 style:font-style-name-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420020_253892949">20.286 style:font-weight-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420022_253892949">20.287 style:font-weight-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420024_253892949">20.288 style:footnote-max-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420026_253892949">20.289 style:glyph-orientation-vertical</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420028_253892949">20.290 style:horizontal-pos</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420030_253892949">20.291 style:horizontal-rel</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420032_253892949">20.292 style:join-border</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420034_253892949">20.293 style:justify-single-word</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420036_253892949">20.294 style:language-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420038_253892949">20.295 style:language-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420040_253892949">20.296 style:layout-grid-base-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420042_253892949">20.297 style:layout-grid-base-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420044_253892949">20.298 style:layout-grid-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420046_253892949">20.299 style:layout-grid-display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420048_253892949">20.300 style:layout-grid-lines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420050_253892949">20.301 style:layout-grid-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420052_253892949">20.302 style:layout-grid-print</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420054_253892949">20.303 style:layout-grid-ruby-below</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420056_253892949">20.304 style:layout-grid-ruby-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420058_253892949">20.305 style:layout-grid-snap-to</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420060_253892949">20.306 style:layout-grid-standard-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420062_253892949">20.307 style:line-break</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420064_253892949">20.308 style:letter-kerning</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420066_253892949">20.309 style:line-height-at-least</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420068_253892949">20.310 style:line-spacing</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420070_253892949">20.311 style:may-break-between-rows</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420072_253892949">20.312 style:min-row-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420074_253892949">20.313 style:mirror</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420076_253892949">20.314 style:num-format</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420078_253892949">20.315 style:num-letter-sync</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420080_253892949">20.316 style:num-prefix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420082_253892949">20.317 style:num-suffix</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420084_253892949">20.318 style:number-wrapped-paragraphs</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420086_253892949">20.319 style:overflow-behavior</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420088_253892949">20.320 style:page-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420090_253892949">20.321 style:paper-tray-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420092_253892949">20.322 style:print</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420094_253892949">20.323 style:print-content</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420096_253892949">20.323.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420098_253892949">20.323.2 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420100_253892949">20.323.3 &lt;style:table-cell-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420102_253892949">20.324 style:print-page-order</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420104_253892949">20.325 style:print-orientation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420106_253892949">20.326 style:protect</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420108_253892949">20.326.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420110_253892949">20.326.2 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420112_253892949">20.326.3 &lt;style:section-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420114_253892949">20.327 style:punctuation-wrap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420116_253892949">20.328 style:register-true</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420118_253892949">20.329 style:register-truth-ref-style-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420120_253892949">20.330 style:rel-column-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420122_253892949">20.331 style:rel-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420124_253892949">20.332 style:rel-width</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420126_253892949">20.332.1 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420128_253892949">20.332.2 &lt;style:table-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420130_253892949">20.333 style:repeat</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420132_253892949">20.334 style:repeat-content</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420134_253892949">20.335 style:rfc-language-tag</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420136_253892949">20.336 style:rfc-language-tag-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420138_253892949">20.337 style:rfc-language-tag-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420140_253892949">20.338 style:rotation-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420142_253892949">20.339 style:rotation-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420144_253892949">20.340 style:row-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420146_253892949">20.341 style:ruby-align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420148_253892949">20.342 style:ruby-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420150_253892949">20.343 style:run-through</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420152_253892949">20.344 style:scale-to</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420154_253892949">20.345 style:scale-to-pages</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420156_253892949">20.346 style:script-asian</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420158_253892949">20.347 style:script-complex</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420160_253892949">20.348 style:script-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420162_253892949">20.349 style:shadow</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420164_253892949">20.350 style:shrink-to-fit</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420166_253892949">20.351 style:snap-to-layout-grid</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420168_253892949">20.352 style:tab-stop-distance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420170_253892949">20.353 style:table-centering</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420172_253892949">20.354 style:text-align-source</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420174_253892949">20.355 style:text-autospace</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420176_253892949">20.356 style:text-blinking</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420178_253892949">20.357 style:text-combine</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420180_253892949">20.358 style:text-combine-start-char</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420182_253892949">20.359 style:text-combine-end-char</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420184_253892949">20.360 style:text-emphasize</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420186_253892949">20.361 style:text-line-through-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420188_253892949">20.362 style:text-line-through-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420190_253892949">20.363 style:text-line-through-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420192_253892949">20.364 style:text-line-through-text</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420194_253892949">20.365 style:text-line-through-text-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420196_253892949">20.366 style:text-line-through-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420198_253892949">20.367 style:text-line-through-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420200_253892949">20.368 style:text-outline</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420202_253892949">20.369 style:text-overline-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420204_253892949">20.370 style:text-overline-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420206_253892949">20.371 style:text-overline-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420208_253892949">20.372 style:text-overline-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420210_253892949">20.373 style:text-overline-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420212_253892949">20.374 style:text-position</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420214_253892949">20.375 style:text-rotation-angle</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420216_253892949">20.376 style:text-rotation-scale</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420218_253892949">20.377 style:text-scale</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420220_253892949">20.378 style:text-underline-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420222_253892949">20.379 style:text-underline-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420224_253892949">20.380 style:text-underline-style</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420226_253892949">20.381 style:text-underline-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420228_253892949">20.382 style:text-underline-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420230_253892949">20.383 style:use-optimal-column-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420232_253892949">20.384 style:use-optimal-row-height</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420234_253892949">20.385 style:use-window-font-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420236_253892949">20.386 style:vertical-align</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420238_253892949">20.386.1 &lt;style:paragraph-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420240_253892949">20.386.2 &lt;style:table-cell-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420242_253892949">20.387 style:vertical-pos</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420244_253892949">20.388 style:vertical-rel</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420246_253892949">20.389 style:width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420248_253892949">20.390 style:wrap</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420250_253892949">20.391 style:wrap-contour</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420252_253892949">20.392 style:wrap-contour-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420254_253892949">20.393 style:wrap-dynamic-threshold</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420256_253892949">20.394 style:writing-mode</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420258_253892949">20.394.1 General</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420260_253892949">20.394.2 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420262_253892949">20.394.3 &lt;style:page-layout-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420264_253892949">20.394.4 &lt;style:paragraph-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420266_253892949">20.394.5 &lt;style:section-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420268_253892949">20.394.6 &lt;style:table-cell-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420270_253892949">20.394.7 &lt;style:table-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420272_253892949">20.395 style:writing-mode-automatic</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420274_253892949">20.396 svg:fill-rule</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420276_253892949">20.397 svg:height</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420278_253892949">20.397.1 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420280_253892949">20.397.2 &lt;style:header-footer-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420282_253892949">20.398 svg:stroke-color</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420284_253892949">20.399 svg:stroke-opacity</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420286_253892949">20.400 svg:stroke-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420288_253892949">20.401 svg:x</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420290_253892949">20.402 svg:y</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420292_253892949">20.402.1 &lt;style:graphic-properties&gt;</a></p></td></tr><tr><td><p class="P8"><a href="#__RefHeading__1420294_253892949">20.402.2 &lt;style:list-level-properties&gt;</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420296_253892949">20.403 svg:width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420298_253892949">20.404 table:align</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420300_253892949">20.405 table:border-model</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420302_253892949">20.406 table:display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420304_253892949">20.407 text:anchor-page-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420306_253892949">20.408 text:anchor-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420308_253892949">20.409 text:animation</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420310_253892949">20.410 text:animation-delay</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420312_253892949">20.411 text:animation-direction</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420314_253892949">20.412 text:animation-repeat</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420316_253892949">20.413 text:animation-start-inside</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420318_253892949">20.414 text:animation-steps</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420320_253892949">20.415 text:animation-stop-inside</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420322_253892949">20.416 text:condition</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420324_253892949">20.417 text:display</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420326_253892949">20.418 text:dont-balance-text-columns</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420328_253892949">20.419 text:line-break</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420330_253892949">20.420 text:line-number</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420332_253892949">20.421 text:list-level-position-and-space-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420334_253892949">20.422 text:min-label-distance</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420336_253892949">20.423 text:min-label-width</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420338_253892949">20.424 text:number-lines</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__1420340_253892949">20.425 text:space-before</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420384_253892949">Appendix A. OpenDocument Relax NG Schema</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420386_253892949">Appendix B. OpenDocument Metadata Manifest Ontology</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420388_253892949">Appendix C. MIME Types and File Name Extensions (Non Normative)</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__440376_826425813">Appendix D. Accessibility Guidelines (Non Normative)</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420390_253892949">D.1. Title, Description and Caption of Graphical Elements</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420392_253892949">D.1.1. Guidance for authors</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420394_253892949">D.1.2. Authoring tool responsibility for presenting and prompting for the &lt;svg:title&gt; and &lt;svg:desc&gt; elements</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420396_253892949">D.2. Hyperlink Titles</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420398_253892949">D.3. Tables in Presentations</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420400_253892949">D.4. Further Guidelines</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420402_253892949">Appendix E. Bidirectional (BiDi) Scripts,Numeric Digits Presentation and Calendars (Non Normative)</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420404_253892949">E.1. Paragraph and Layout Direction</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420406_253892949">E.2. Numeric Digits Presentation and Calendars</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420408_253892949">Appendix F. Recommended Usage of SMIL</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420410_253892949">F.1. Slide Animation</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420412_253892949">F.2. Main Sequence</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420414_253892949">F.3. Interactive Sequence</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420416_253892949">Appendix G. Changes From Previous Specification Versions (Non Normative)</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__1420418_253892949">G.1. Changes from “Open Document Format for Office Applications (OpenDocument) v1.1”</a></p></td></tr></table><h1 class="Heading_20_1"><a id="a1Introduction"><span style="margin-right:0.127cm;">1</span></a><a id="__RefHeading__1414978_253892949"/><a id="Introduction"/>Introduction</h1><h2 class="Heading_20_2"><a id="a1_1Introduction"><span style="margin-right:0.127cm;">1.1</span></a><a id="__RefHeading__1414980_253892949"/>Introduction</h2><p class="Text_20_body">This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.2 specification. It defines an XML schema for office documents. Office documents includes text documents, spreadsheets, charts and graphical documents like drawings or presentations, but is not restricted to these kinds of documents.</p><p class="Text_20_body">The XML schema for OpenDocument is designed so that documents valid to it can be transformed using XSLT and processing with XML-based tools.</p><h2 class="Heading_20_2"><a id="a1_2Terminology"><span style="margin-right:0.127cm;">1.2</span></a><a id="__RefHeading__1414982_253892949"/>Terminology</h2><p class="Text_20_body">All text is normative unless otherwise labeled.</p><p class="Text_20_body">Text with a gray background color which is contained in boxes is informative. It lists the XML element-element and element-attribute relations for cross reference purposes.</p><p class="Text_20_body">Within the normative text of this specification, the terms "<span class="ISO_20_Keyword">shall</span>", "<span class="ISO_20_Keyword">shall not</span>", "<span class="ISO_20_Keyword">should</span>", "<span class="ISO_20_Keyword">should not</span>", "<span class="ISO_20_Keyword">may</span>" and “need not” are to be interpreted as described in Annex H of <a title="Rules for the structure and drafting of International Standards">[ISO/IEC Directives]</a>.</p><p class="Text_20_body">Within this specification,  attributes and elements are marked as deprecated. Attributes and elements marked as deprecated should not be used any longer, and may be removed from future versions of the specification.</p><p class="Text_20_body">XML Element, attribute names, attribute value types, and attribute values appear in <span class="Source_20_Text">monospace</span> font.</p><p class="Text_20_body">This standard, for illustrative purposes, describes functionality using terminology common in desktop computing environments that contain a display terminal, keyboard and mouse, attached to a computer hosting an operating system with a graphical user interface which includes user interface controls such as input controls, command buttons, selection boxes, etc.</p><p class="Text_20_body">This standard is not limited to such environments. This format can be used by alternative computing environments, with other form factors, non-GUI consumers and producers, assistive technologies, using analogous user interface operations.</p><p class="Text_20_body">Implementation-defined is used in this standard for values or processing that may differ between ODF implementations, but is required to be specified by the implementor for each particular ODF-implementation. </p><p class="Text_20_body">Implementation-dependent is used in this standard for values or processing that may differ between ODF implementations, but is not required to be specified by the implementor for each particular ODF-implementation. </p><h2 class="Heading_20_2"><a id="a1_3Normative_References"><span style="margin-right:0.127cm;">1.3</span></a><a id="__RefHeading__1414984_253892949"/>Normative References</h2><p class="P6_borderStart">[<span class="Strong_20_Emphasis">CSS2</span>]        Bert Bos, Håkon Wium Lie, Chris Lilley, Ian Jacobs, <span class="Emphasis">Cascading Style Sheets, level 2</span>, <a href="http://www.w3.org/TR/1998/REC-CSS2-19980512">http://www.w3.org/TR/1998/REC-CSS2-19980512</a>, W3C, 1998.</p><p class="P6">[<span class="Strong_20_Emphasis">DCMI</span>]        <span class="Emphasis">Dublin Core Metadata Element Set, Version 1.1: Reference Description</span>, <a href="http://www.dublincore.org/documents/2008/01/14/dces/">http://www.dublincore.org/documents/2008/01/14/dces/</a>, Dublin Core Metadata Initiative, 2003.</p><p class="P6">[<span class="Strong_20_Emphasis">DOMEvents2</span>]        Tom Pixley, <span class="Emphasis">Document Object Model (DOM) Level 2 Events Specification</span>, <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113">http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113</a>, W3C, 2000.</p><p class="P6">[<span class="Strong_20_Emphasis">GRDDL</span>]        Don Conolly, <span class="Emphasis">Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</span>, <a href="http://www.w3.org/TR/2007/REC-grddl-20070911/">http://www.w3.org/TR/2007/REC-grddl-20070911/</a>, W3C, 2007.</p><p class="P6">[<span class="Strong_20_Emphasis">HTML4</span>]        Dave Raggett, Arnaud Le Hors, Ian Jacobs, <span class="Emphasis">HTML 4.01 Specification</span>, <a href="http://www.w3.org/TR/1999/REC-html401-19991224">http://www.w3.org/TR/1999/REC-html401-19991224</a>, W3C, 1999.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO/IEC Directives</span>]        ISO/IEC Directives, Part 2 (Fifth Edition) <span class="Emphasis">Rules for the structure and drafting of International Standards</span>, International Organization for Standardization and International Electrotechnical Commission, 2004.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO15924</span>]        ISO 15924:2004 <span class="Emphasis">Information and documentation -- Codes for the representation of names of scripts</span>, International Organization for Standardization and International Electrotechnical Commission, 2004.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO3166-1</span>]        ISO 3166-1:2006/Cor 1:2007   <span class="Emphasis">Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes</span>, International Organization for Standardization and International Electrotechnical Commission, 2007.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO3166-2</span>]        ISO 3166-2:2007 <span class="Emphasis">Codes for the representation of names of countries and their subdivisions -- Part 2: Country subdivision code</span>, International Organization for Standardization and International Electrotechnical Commission, 2007.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO3166-3</span>]        ISO 3166-3:1999 <span class="Emphasis">Codes for the representation of names of countries and their subdivisions -- Part 3: Code for formerly used names of countries</span>, International Organization for Standardization and International Electrotechnical Commission, 1999.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO639-1</span>]        ISO 639-1:2002 <span class="Emphasis">Codes for the representation of names of languages -- Part 1: Alpha-2 code</span>, International Organization for Standardization and International Electrotechnical Commission, 2002.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO639-2</span>]        ISO 639-2:1998 <span class="Emphasis">Codes for the representation of names of languages -- Part 2: Alpha-3 code</span>, International Organization for Standardization and International Electrotechnical Commission, 1998.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO639-3</span>]        ISO 639-3:2007 <span class="Emphasis">Codes for the representation of names of languages -- Part 3: Alpha-3 code for comprehensive coverage of languages</span>, International Organization for Standardization and International Electrotechnical Commission, 2007.</p><p class="P6">[<span class="Strong_20_Emphasis">ISO8601</span>]        ISO 8601:2004 <span class="Emphasis">Data elements and interchange formats -- Information interchange -- Representation of dates and times</span>, International Organization for Standardization and International Electrotechnical Commission, 2004.</p><p class="P6">[<span class="Strong_20_Emphasis">JIS X 0301</span>]        JIS X 0301:2002 <span class="Emphasis">Data elements and interchange formats -- Information interchange -- Representation of dates and times</span>, Japanese Standards Association, 2002.</p><p class="P6">[<span class="Strong_20_Emphasis">MathML</span>]        David Carlisle, Patrick Ion, Robert Miner, Nico Poppelier, <span class="Emphasis">Mathematical Markup Language (MathML) Version 2.0 (Second Edition)</span>, <a href="http://www.w3.org/TR/2003/REC-MathML2-20031021/">http://www.w3.org/TR/2003/REC-MathML2-20031021/</a>, W3C, 2003.</p><p class="P6">[<span class="Strong_20_Emphasis">OLE</span>]         Kraig Brockschmidt, Inside OLE, Microsoft Press, 1995, ISBN: 1-55615-843-2</p><p class="P6">[<span class="Strong_20_Emphasis">OWL</span>]        Deborah L. McGuinness, Frank van Harmelen, <span class="Emphasis">OWL Web Ontology Language Overview</span>, <a href="http://www.w3.org/TR/2004/REC-owl-features-20040210/">http://www.w3.org/TR/2004/REC-owl-features-20040210/</a>, W3C, 2004.</p><p class="P6">[<span class="Strong_20_Emphasis">RDF-CONCEPTS</span>]        Graham Klyne, Jeremy J. Carroll, Brian McBride, <span class="Emphasis">Resource Description Framework (RDF): Concepts and Abstract Syntax</span>, <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/</a>, W3C, 2004.</p><p class="P6">[<span class="Strong_20_Emphasis">RDFa</span>]        Ben Adida, Mark Birbeck, Shane McCarron, Steven Pemberton, <span class="Emphasis">RDFa in XHTML: Syntax and Processing</span>, <a href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014</a>, W3C, 2008.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC2045</span>]        N. Freed and N. Borenstein, <span class="Emphasis">Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</span>, <a href="http://www.ietf.org/rfc/rfc2045.txt">http://www.ietf.org/rfc/rfc2045.txt</a>, IETF, 1996.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC2616</span>]        R. Fielding, et al., <span class="Emphasis"> Hypertext Transfer Protocol -- HTTP/1.1</span>, <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>, IETF, 1999.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC3987</span>]        M. Duerst, M. Suignard, <span class="Emphasis">Internationalized Resource Identifiers (IRIs)</span>, <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>, IETF, 2005.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC4288</span>]        N. Freed, J. Klensin, <span class="Emphasis">Media Type Specifications and Registration Procedures</span>, <a href="http://www.ietf.org/rfc/rfc4288.txt">http://www.ietf.org/rfc/rfc4288.txt</a>, IETF, 2005.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC4514</span>]        K. Zeilenga, <span class="Emphasis">Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names</span>, <a href="http://tools.ietf.org/html/rfc4514">http://tools.ietf.org/html/rfc4514</a>, IETF, 2006.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC5646</span>]        A. Phillips, M. Davis, <span class="Emphasis">Tags for Identifying Languages</span>, <a href="http://www.ietf.org/rfc/rfc5646.txt">http://www.ietf.org/rfc/rfc5646.txt</a>, IETF, 2009.</p><p class="P6">[<span class="Strong_20_Emphasis">RNG</span>]        ISO/IEC 19757-2 <span class="Emphasis">Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG</span>, International Organization for Standardization and International Electrotechnical Commission, 2003.</p><p class="P6">[<span class="Strong_20_Emphasis">SMIL20</span>]        Jeff Ayars, etc al., <span class="Emphasis">Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]</span>, <a href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">http://www.w3.org/TR/2005/REC-SMIL2-20050107/</a>, W3C, 2001.</p><p class="P6">[<span class="Strong_20_Emphasis">SQL</span>]        ISO/IEC 9075-1:2008 <span class="Emphasis">Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)</span>, International Organization for Standardization and International Electrotechnical Commission, 2008.</p><p class="P6">[<span class="Strong_20_Emphasis">SVG</span>]        Jon Ferraiolo, è—€æČą æ·ł (FUJISAWA Jun), Dean Jackson, <span class="Emphasis">Scalable Vector Graphics (SVG) 1.1</span>, <a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">http://www.w3.org/TR/2003/REC-SVG11-20030114/</a>, W3C, 2003.</p><p class="P6">[<span class="Strong_20_Emphasis">UNICODE</span>]        The Unicode Consortium. The Unicode Standard, Version 5.2.0, defined by: <span class="Emphasis">The Unicode Standard, Version 5.2</span> (Boston, MA, Addison-Wesley, 2009. ISBN 978-1-936213-00-9).</p><p class="P6">[<span class="Strong_20_Emphasis">UTR18</span>]<span class="Emphasis">        </span> Mark Davis, Andy Heninger, <span class="Emphasis">Unicode Regular Expressions</span>, Unicode Technical Report #18, <a href="http://www.unicode.org/reports/tr18/tr18-13.html">http://www.unicode.org/reports/tr18/tr18-13.html</a>, 2008.</p><p class="P6">[<span class="Strong_20_Emphasis">Variability</span>]        Dominique Hazaël-Massieux, Lynne Rosenthal, <span class="Emphasis">Variability in Specifications</span>, <a href="http://www.w3.org/TR/2005/NOTE-spec-variability-20050831/">http://www.w3.org/TR/2005/NOTE-spec-variability-20050831/</a>, W3C, 2005.</p><p class="P6">[<span class="Strong_20_Emphasis">XForms</span>]        John M. Boyer, <span class="Emphasis">XForms 1.0 (Third Edition)</span>, <a href="http://www.w3.org/TR/2007/REC-xforms-20071029/">http://www.w3.org/TR/2007/REC-xforms-20071029/</a>, W3C, 2007.</p><p class="P6">[<span class="Strong_20_Emphasis">XLink</span>]        Steve DeRose, Eve Maler, David Orchard, <span class="Emphasis">XML Linking Language (XLink) Version 1.0</span>, <a href="http://www.w3.org/TR/2001/REC-xlink-20010627/">http://www.w3.org/TR/2001/REC-xlink-20010627/</a>, W3C, 2001.</p><p class="P6">[<span class="Strong_20_Emphasis">XML-ID</span>]        Jonathan Marsh, Daniel Veillard, Norman Walsh, <span class="Emphasis">xml:id Version 1.0</span>, <a href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">http://www.w3.org/TR/2005/REC-xml-id-20050909/</a>, W3C, 2005.</p><p class="P6">[<span class="Strong_20_Emphasis">xml-names</span>]        Tim Bray rt al., <span class="Emphasis">Namespaces in XML 1.0 (Second Edition)</span>, <a href="http://www.w3.org/TR/2006/REC-xml-names-20060816">http://www.w3.org/TR/2006/REC-xml-names-20060816</a>, W3C, 2006.</p><p class="P6">[<span class="Strong_20_Emphasis">XML1.0</span>]        Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, François Yergeau , <span class="Emphasis">Extensible Markup Language (XML) 1.0 (Fourth Edition)</span>, <a href="http://www.w3.org/TR/2006/REC-xml-20060816/">http://www.w3.org/TR/2006/REC-xml-20060816/</a>, W3C, 2006.</p><p class="P6">[<span class="Strong_20_Emphasis">xmlenc-core</span>]        Donald Eastlake, Joseph Reagle, <span class="Emphasis">XML Encryption Syntax and Processing</span>, <a href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/</a>, W3C, 2002.</p><p class="P6">[<span class="Strong_20_Emphasis">xmlschema-2</span>]        Paul V. Biron, Ashok Malhotra, <span class="Emphasis">XML Schema Part 2: Datatypes Second Edition</span>, <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</a>, W3C, 2004.</p><p class="P6">[<span class="Strong_20_Emphasis">XPath</span>]        James Clark, Steve DeRose, <span class="Emphasis">XML Path Language (XPath) Version 1.0</span>, <a href="http://www.w3.org/TR/1999/REC-xpath-19991116">http://www.w3.org/TR/1999/REC-xpath-19991116</a>, W3C, 1999.</p><p class="P6_borderEnd">[<span class="Strong_20_Emphasis">XSL</span>]        Sharon Adler, et al., <span class="Emphasis">Extensible Stylesheet Language (XSL)</span>, <a href="http://www.w3.org/TR/2001/REC-xsl-20011015/">http://www.w3.org/TR/2001/REC-xsl-20011015/</a>, W3C, 2001.</p><h2 class="Heading_20_2"><a id="a1_4Non_Normative_References"><span style="margin-right:0.127cm;">1.4</span></a><a id="__RefHeading__1414986_253892949"/>Non Normative References</h2><p class="P6_borderStart"><span class="Strong_20_Emphasis">[BibTeXing]</span>        Oren Patashnik, <span class="Emphasis">BIBT E Xing</span>, <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.6093">http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.6093</a>, 1988</p><p class="P6">[<span class="Strong_20_Emphasis">CSS3Text</span>]        Michel Suignard, <span class="Emphasis">CSS3 Text Module</span>, <a href="http://www.w3.org/TR/2003/CR-css3-text-20030514">http://www.w3.org/TR/2003/CR-css3-text-20030514</a>, W3C, 2003.</p><p class="P6">[<span class="Strong_20_Emphasis">DAISY</span>]        <span class="Emphasis">ANSI/NISO Z39.86-2005 Specifications for the Digital Talking Book</span>, <a href="http://www.niso.org/standards/resources/Z39-86-2005.html">http://www.niso.org/standards/resources/Z39-86-2005.html</a>, 2005.</p><p class="P6">[<span class="Strong_20_Emphasis">MIMETYPES</span>]        <span class="Emphasis">MIME Media Types</span>, <a href="http://www.iana.org/assignments/media-types/">http://www.iana.org/assignments/media-types/</a>, IANA.</p><p class="P6">[<span class="Strong_20_Emphasis">ODF10</span>]        OASIS Standard, <span class="Emphasis">Open Document Format for Office Applications (OpenDocument) v1.0</span>, May 2005, <a href="http://docs.oasis-open.org/office/v1.0/OpenDocument-v1.0-os.pdf">http://docs.oasis-open.org/office/v1.0/OpenDocument-v1.0-os.pdf</a>.</p><p class="P6">[<span class="Strong_20_Emphasis">ODF11</span>]        OASIS Standard, <span class="Emphasis">Open Document Format for Office Applications (OpenDocument) v1.1</span>, February 2007, <a href="http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf">http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf</a>.</p><p class="P6">[<span class="Strong_20_Emphasis">PNG</span>]        David Duce, <span class="Emphasis">Portable Network Graphics (PNG) Specification (Second Edition)</span>, <a href="http://www.w3.org/TR/2003/REC-PNG-20031110">http://www.w3.org/TR/2003/REC-PNG-20031110</a>, W3C, 2003.</p><p class="P6">[<span class="Strong_20_Emphasis">RFC3066</span>]        H. Alvestrand, <span class="Emphasis">Tags for the Identification of Languages</span>, <a href="http://www.ietf.org/rfc/rfc3066.txt">http://www.ietf.org/rfc/rfc3066.txt</a>, IETF, 2001.</p><p class="P6">[<span class="Strong_20_Emphasis">UAX9</span>]<span class="Emphasis">        </span>Mark Davis, <span class="Emphasis">The Bidirectional Algorithm</span>, Unicode Standard Annex #9, <a href="http://www.unicode.org/reports/tr9/tr9-15.html">http://www.unicode.org/reports/tr9/tr9-15.html</a>, 2005.</p><p class="P6">[<span class="Strong_20_Emphasis">UTR20</span>]<span class="Emphasis">        </span>Martin Dürst and Asmus Freytag, <span class="Emphasis">Unicode in XML and other Markup Languages</span>, Unicode Technical Report #20, <a href="http://www.unicode.org/reports/tr20/tr20-7.html">http://www.unicode.org/reports/tr20/tr20-7.html</a>, 2003.</p><p class="P6_borderEnd">[<span class="Strong_20_Emphasis">XSLT</span>]        James Clark, <span class="Emphasis">XSL Transformations (XSLT) Version 1.0</span>, <a href="http://www.w3.org/TR/1999/REC-xslt-19991116">http://www.w3.org/TR/1999/REC-xslt-19991116</a>, W3C, 1999.</p><h2 class="Heading_20_2"><a id="a1_5Namespaces"><span style="margin-right:0.127cm;">1.5</span></a><a id="__RefHeading__1414988_253892949"/><a id="Namespaces"/>Namespaces</h2><p class="Text_20_body">The namespaces used or defined by OpenDocument are listed in tables 1-4. </p><p class="Note"><span class="Note_20_Label">Note:</span> The defined XML namespaces conform to the <span class="Emphasis">Namespaces in XML</span> specification <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.</p><p class="Text_20_body">This specification uses the prefixes defined in tables 1 and 2 when referring to elements and attributes in this specification. However, implementors may use any prefix, provided that there is a namespace declaration that binds the prefix to the IRI of the corresponding namespace.</p><p class="Table">Table <a id="refTable0"/>1 - XML Namespaces defined by the OpenDocument schema</p><table border="0" cellspacing="0" cellpadding="0" class="NamespaceTable"><colgroup><col width="96"/><col width="271"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Text_20_body">anim</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Text_20_body">Elements and attributes that describe animation content.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>animation:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">chart</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe chart content.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>chart:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">config</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe application specific settings.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>config:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Text_20_body">db</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Text_20_body">For elements and attributes that describe database specific objects.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>database:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">dr3d</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe 3D graphic content.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>dr3d:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">draw</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe graphic content.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>drawing:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">form</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe forms and controls.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>form:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">manifest</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attribute contained in the package manifest.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>manifest:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">meta</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe meta information.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>meta:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">number</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe data style information.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>datastyle:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">office</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">All common pieces of information that are not contained in another, more specific namespace.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>office:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">presentation</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe presentation content.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>presentation:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">script</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that represent scripts or events.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>script:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">table</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that may occur within spreadsheets or within table definitions of a text document.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>table:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">text</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that may occur within text documents and text parts of other document types.,</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>text:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">style</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attributes that describe the style and inheritance model used by the OpenDocument format. </p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>style:1.0</p></td></tr></table><p class="Table">Table <a id="refTable1"/>2 - XML Namespaces defined by the OpenDocument metadata manifest ontology</p><table border="0" cellspacing="0" cellpadding="0" class="Table15"><colgroup><col width="96"/><col width="271"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8632in; " class="Table15_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4382in; " class="Table15_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="Table15_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="Table15_A2"><p class="Table_20_Contents">odf</p></td><td style="text-align:left;width:2.4382in; " class="Table15_A2"><p class="Table_20_Contents">RDF node property and node elements for OpenDocument package entities</p></td><td style="text-align:left;width:2.6986in; " class="Table15_C2"><p class="Text_20_body">http://docs.oasis-open.org/ns/office/1.2/meta/odf#</p></td></tr></table><p class="Table">Table <a id="refTable2"/>3 - XML Namespaces defined by the OpenDocument schema that include elements and attributes that are compatible to elements and attributes of other standards.</p><table border="0" cellspacing="0" cellpadding="0" class="NamespaceTable2"><colgroup><col width="97"/><col width="271"/><col width="299"/></colgroup><tr><td style="text-align:left;width:0.875in; " class="NamespaceTable2_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4375in; " class="NamespaceTable2_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6979in; " class="NamespaceTable2_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.875in; " class="NamespaceTable2_A2"><p class="Table_20_Contents">fo</p></td><td style="text-align:left;width:2.4375in; " class="NamespaceTable2_A2"><p class="Table_20_Contents">Attributes that are compatible to attributes defined in <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p></td><td style="text-align:left;width:2.6979in; " class="NamespaceTable2_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>xsl-fo-compatible:1.0</p></td></tr><tr><td style="text-align:left;width:0.875in; " class="NamespaceTable2_A2"><p class="Table_20_Contents">svg</p></td><td style="text-align:left;width:2.4375in; " class="NamespaceTable2_A2"><p class="Table_20_Contents">Elements and attributes that are compatible to elements or attributes defined in <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p></td><td style="text-align:left;width:2.6979in; " class="NamespaceTable2_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>svg-compatible:1.0</p></td></tr><tr><td style="text-align:left;width:0.875in; " class="NamespaceTable2_A2"><p class="Text_20_body">smil</p></td><td style="text-align:left;width:2.4375in; " class="NamespaceTable2_A2"><p class="Text_20_body">Attributes that are compatible to attributes defined in <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p></td><td style="text-align:left;width:2.6979in; " class="NamespaceTable2_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>smil-compatible:1.0</p></td></tr></table><p class="Table">Table <a id="refTable3"/>4 - XML Namespaces used by the OpenDocument schema</p><table border="0" cellspacing="0" cellpadding="0" class="Table5"><colgroup><col width="96"/><col width="270"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8646in; " class="Table5_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4368in; " class="Table5_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table5_A2"><p class="Table_20_Contents">dc</p></td><td style="text-align:left;width:2.4368in; " class="Table5_A2"><p class="Table_20_Contents">The Dublin Core Namespace (see <a title="Dublin Core Metadata Element Set, Version 1.1: Reference Description" href="http://www.dublincore.org/documents/2008/01/14/dces/">[DCMI]</a>).</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C2"><p class="Table_20_Contents">http://purl.org/dc/elements/1.1/</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table5_A2"><p class="Table_20_Contents">math</p></td><td style="text-align:left;width:2.4368in; " class="Table5_A2"><p class="Table_20_Contents">MathML Namespace (see <a title="Mathematical Markup Language (MathML) Version 2.0 (Second Edition)" href="http://www.w3.org/TR/2003/REC-MathML2-20031021/">[MathML]</a>)</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C2"><p class="Table_20_Contents">http://www.w3.org/1998/Math/MathML</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table5_A2"><p class="Text_20_body">xforms</p></td><td style="text-align:left;width:2.4368in; " class="Table5_A2"><p class="Text_20_body">The XForms namespace (see <a title="XForms 1.0 (Third Edition)" href="http://www.w3.org/TR/2007/REC-xforms-20071029/">[XForms]</a>).</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C2"><p class="Text_20_body">http://www.w3.org/2002/xforms</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table5_A2"><p class="Table_20_Contents">xlink</p></td><td style="text-align:left;width:2.4368in; " class="Table5_A2"><p class="Table_20_Contents">The XLink namespace (see <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a>).</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C2"><p class="Table_20_Contents">http://www.w3.org/1999/xlink</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table5_A2"><p class="Text_20_body">xhtml</p></td><td style="text-align:left;width:2.4368in; " class="Table5_A2"><p class="Text_20_body">RDFa attributes (see <a title="RDFa in XHTML: Syntax and Processing" href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">[RDFa]</a>).</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C2"><p class="Text_20_body">http://www.w3.org/1999/xhtml</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table5_A2"><p class="Text_20_body">grddl </p></td><td style="text-align:left;width:2.4368in; " class="Table5_A2"><p class="Text_20_body">GRDDL attributes (see <a title="Gleaning Resource Descriptions from Dialects of Languages (GRDDL)" href="http://www.w3.org/TR/2007/REC-grddl-20070911/">[GRDDL]</a>)</p></td><td style="text-align:left;width:2.6986in; " class="Table5_C2"><p class="Text_20_body">http://www.w3.org/2003/g/data-view# </p></td></tr></table><p class="Table">Table <a id="refTable4"/>5 - XML Namespaces defined by the OpenDocument metadata manifest ontology</p><table border="0" cellspacing="0" cellpadding="0" class="Table19"><colgroup><col width="96"/><col width="271"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8632in; " class="Table19_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4382in; " class="Table19_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="Table19_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="Table19_A2"><p class="Table_20_Contents">pkg</p></td><td style="text-align:left;width:2.4382in; " class="Table19_A2"><p class="Table_20_Contents">OWL classes and properties contained in metadata manifest files.</p></td><td style="text-align:left;width:2.6986in; " class="Table19_C2"><p class="Text_20_body">http://docs.oasis-open.org/ns/office/1.2/meta/pkg#</p></td></tr></table><p class="Table">Table <a id="refTable5"/>6 - Other XML Namespaces defined by this specification</p><table border="0" cellspacing="0" cellpadding="0" class="Table18"><colgroup><col width="96"/><col width="270"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8646in; " class="Table18_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4368in; " class="Table18_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="Table18_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table18_A2"><p class="Table_20_Contents">of</p></td><td style="text-align:left;width:2.4368in; " class="Table18_A2"><p class="Table_20_Contents">Namespace for formulas defined by part 2 of this specification that occur in attribute values. </p></td><td style="text-align:left;width:2.6986in; " class="Table18_C2"><p class="Table_20_Contents">urn:oasis:names:tc:opendocument:xmlns:of:1.2 </p></td></tr></table><h1 class="Heading_20_1"><a id="a2OpenDocument_Documents__Consumers_and_Producers"><span style="margin-right:0.127cm;">2</span></a><a id="__RefHeading__440342_826425813"/>OpenDocument Documents, Consumers and Producers</h1><h2 class="Heading_20_2"><a id="a2_1Introduction"><span style="margin-right:0.127cm;">2.1</span></a><a id="__RefHeading__1718302_1219268628"/>Introduction</h2><p class="Text_20_body">The OpenDocument specification defines conformance for documents, consumers, and producers, with two conformance classes called conforming and extended conforming. It further defines conforming text, spreadsheet, drawing, presentation, chart, image, formula and database front end documents. This chapter defines the basic requirements for the individual conformance targets. </p><h2 class="Heading_20_2"><a id="a2_2Documents"><span style="margin-right:0.127cm;">2.2</span></a><a id="__RefHeading__440344_826425813"/>Documents</h2><h3 class="Heading_20_3"><a id="a2_2_1OpenDocument_Document"><span style="margin-right:0.127cm;">2.2.1</span></a><a id="__RefHeading__440346_826425813"/><a id="OpenDocument_Document"/>OpenDocument Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument</span><span class="Definition"> </span><span class="Def">document</span> <span class="ISO_20_Keyword">shall</span> meet the following requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>If the document is an OpenDocument package, then <span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">A.1)</span>it <span class="ISO_20_Keyword">shall</span> be a conforming OpenDocument package (C19), and<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">A.2)</span>the package <span class="ISO_20_Keyword">shall</span> contain at least one of the following files: content.xml and styles.xml. It <span class="ISO_20_Keyword">may</span> contain additional files, including files named settings.xml and meta.xml.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package, then the following requirements <span class="ISO_20_Keyword">shall</span> be met for its contained files named content.xml, styles.xml, settings.xml and meta.xml, if present:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.1)</span>The files <span class="ISO_20_Keyword">shall</span> be well formed XML documents with respect to the XML 1.0 <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a> specification.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2)</span>The XML root elements of the files <span class="ISO_20_Keyword">shall</span> be <span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:1cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2.1)</span><span class="Element">&lt;office:document-content&gt;</span> or <span class="Element">&lt;math:math&gt;</span> for files named content.xml,<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:1cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2.2)</span><span class="Element">&lt;office:document-styles&gt;</span> for files named styles.xml,<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:1cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2.3)</span><span class="Element">&lt;office:document-meta&gt;</span> for files named meta.xml,<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:1cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2.4)</span><span class="Element">&lt;office:document-settings&gt;</span> for files named settings.xml.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.3)</span>If the XML root element of a file is <span class="Element">&lt;office:document-content&gt;</span>, <span class="Element">&lt;office:document-styles&gt;</span>, <span class="Element">&lt;office:document-meta&gt;</span> or <span class="Element">&lt;office:document-settings&gt;</span>, then the XML file <span class="ISO_20_Keyword">shall</span> be valid with respect to the schema defined in appendix A.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.4)</span>If the XML root element of a file is <span class="Element">&lt;math:math&gt;</span>, then the XML file <span class="ISO_20_Keyword">shall </span>be valid with respect to the MathML 2.0 <a title="Mathematical Markup Language (MathML) Version 2.0 (Second Edition)" href="http://www.w3.org/TR/2003/REC-MathML2-20031021/">[MathML]</a> schema.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>If the document is a single XML file, then <span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">C.1)</span>the file <span class="ISO_20_Keyword">shall</span> be a well formed XML document with respect to the XML 1.0 <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a> specification<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">C.2)</span>the XML root element of the file <span class="ISO_20_Keyword">shall</span> be <span class="Element">&lt;office:document&gt;</span>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">C.3)</span>the XML file <span class="ISO_20_Keyword">shall</span> be valid with respect to the schema defined in appendix A.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">D)</span><a id="__DdeLink__219857_16104159831"/>The files contained in a package listed in B) or the single file listed in C) meet the following requirements:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">D.1)</span>They <span class="ISO_20_Keyword">shall</span> be namespace-well-formed with regard to the XML Namespaces specification <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">D.2)</span>They <span class="ISO_20_Keyword">shall</span> conform to the xml-id specification <a title="xml:id Version 1.0" href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">[XML-ID]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">D.3)</span>If a <span class="Attribute">style:condition</span>, <span class="Attribute">table:condition</span>, <span class="Attribute">table:expression</span>, <span class="Attribute">table:formula</span> or <span class="Attribute">text:formula</span> attribute value begins with a namespace prefix bound to namespace "urn:oasis:names:tc:opendocument:xmlns:of:1.2," the syntax and semantics of the attribute value portions that are expressions determined by the prefix shall conform to part 2 of this specification. If a namespace prefix is omitted at the beginning of the attribute value, the attribute value portions that are expressions determined by a prefix shall conform as if there were a prefix bound to namespace "urn:oasis:names:tc:opendocument:xmlns:of:1.2".<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">E)</span>It shall conform to one of: (C3) OpenDocument Text Document, (C4) OpenDocument Spreadsheet Document, (C5) OpenDocument Drawing Document, (C6) OpenDocument Presentation Document, (C7) OpenDocument Chart Document, (C8) OpenDocument Image Document, (C9) OpenDocument Formula Document, (C10) OpenDocument Database Front End Document. <span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_2OpenDocument_Extended_Document"><span style="margin-right:0.127cm;">2.2.2</span></a><a id="__RefHeading__440348_826425813"/>OpenDocument Extended Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument extended document</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a conforming document listed in <a href="#OpenDocument_Document">2.2.1</a> except A.1), B.3), C.3) and E) and <span class="ISO_20_Keyword">shall</span> meet the following requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>If the document is an OpenDocument package, then it shall be a conforming ODF extended package (C20) <span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package, then the following requirement <span class="ISO_20_Keyword">shall</span> be met for its contained files named content.xml, styles.xml, settings.xml and meta.xml, if present:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.1)</span>If the XML root element of a file is <span class="Element">&lt;office:document-content&gt;</span>, <span class="Element">&lt;office:document-styles&gt;</span>, <span class="Element">&lt;office:document-meta&gt;</span> or <span class="Element">&lt;office:document-settings&gt;</span>, then the XML file <span class="ISO_20_Keyword">shall</span> be valid with respect to the schema defined in appendix A, after the following processing of foreign elements has taken place:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:1cm;"><span style="display:block;float:left;min-width:0.1011cm">B.1.1)</span>Foreign elements and attributes, as defined in section 3.17 have been removed.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:1cm;"><span style="display:block;float:left;min-width:0.1011cm">B.1.2)</span>The content of foreign elements has been processed as defined in section 3.17.<span class="odfLiEnd"/> </p></li></ol></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>If the document is a single XML file, then the XML files <span class="ISO_20_Keyword">shall</span> be valid with respect to the schema defined in appendix A, after processing of foreign elements as defined in B1) has taken place.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_3OpenDocument_Text_Document"><span style="margin-right:0.127cm;">2.2.3</span></a><a id="__RefHeading__440350_826425813"/>OpenDocument Text Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Text document</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element <span class="ISO_20_Keyword">shall</span> have an <span class="Attribute">office:mimetype</span> attribute with one of these values: "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.text-template" or "application/vnd.oasis.opendocument.text-master".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it <span class="ISO_20_Keyword">shall</span> contain a file named mimetype containing one of these strings: "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.text-template" or "application/vnd.oasis.opendocument.text-master".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element <span class="ISO_20_Keyword">shall</span> have the child element <span class="Element">&lt;office:text&gt;</span>.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_4OpenDocument_Spreadsheet_Document"><span style="margin-right:0.127cm;">2.2.4</span></a><a id="__RefHeading__440352_826425813"/>OpenDocument Spreadsheet Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Spreadsheet document</span> shall meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element <span class="ISO_20_Keyword">shall</span> have an <span class="Attribute">office:mimetype</span> attribute with one of these values: "application/vnd.oasis.opendocument.spreadsheet" or "application/vnd.oasis.opendocument.spreadsheet-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it <span class="ISO_20_Keyword">shall</span> contain a file named mimetype containing one of these strings: "application/vnd.oasis.opendocument.spreadsheet" or "application/vnd.oasis.opendocument.spreadsheet-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element <span class="ISO_20_Keyword">shall</span> have the child element <span class="Element">&lt;office:spreadsheet&gt;</span>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">D)</span>All namespace prefixes used in the values of <span class="Attribute">table:formula</span> attributes values <span class="ISO_20_Keyword">shall</span> be bound to the "urn:oasis:names:tc:opendocument:xmlns:of:1.2 " namespace.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">E)</span>All <span class="Attribute">table:formula</span> attribute values <span class="ISO_20_Keyword">shall</span> be a conforming OpenDocument Formula expression (C15).<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_5OpenDocument_Drawing_Document"><span style="margin-right:0.127cm;">2.2.5</span></a><a id="__RefHeading__440354_826425813"/>OpenDocument Drawing Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Drawing document</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element shall have an <span class="Attribute">office:mimetype</span> attribute with one of these values: "application.vnd.oasis.opendocument.graphics" or "application/vnd.oasis.opendocument.graphic-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it <span class="ISO_20_Keyword">shall</span> contain a file named mimetype containing one of these strings: "application.vnd.oasis.opendocument.graphics" or "application/vnd.oasis.opendocument.graphic-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element shall have the child element <span class="Element">&lt;office:drawing&gt;</span>.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_6OpenDocument_Presentation_Document"><span style="margin-right:0.127cm;">2.2.6</span></a><a id="__RefHeading__440356_826425813"/>OpenDocument Presentation Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Presentation document</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element <span class="ISO_20_Keyword">shall</span> have an <span class="Attribute">office:mimetype</span> attribute with one of these values: "application/vnd.oasis.opendocument.presentation" or "application/vnd.oasis.opendocument.presentation-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it <span class="ISO_20_Keyword">shall</span> contain a file named mimetype containing one of these strings: "application/vnd.oasis.opendocument.presentation" or "application/vnd.oasis.opendocument.presentation-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element <span class="ISO_20_Keyword">shall</span> have the child element <span class="Element">&lt;office:presentation&gt;</span>.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_7OpenDocument_Chart_Document"><span style="margin-right:0.127cm;">2.2.7</span></a><a id="__RefHeading__440358_826425813"/>OpenDocument Chart Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Chart document</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element <span class="ISO_20_Keyword">shall</span> have an <span class="Attribute">office:mimetype</span> attribute with one of these values: "application/vnd.oasis.opendocument.chart" or "application/vnd.oasis.opendocument.chart-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it <span class="ISO_20_Keyword">shall</span> contain a file named mimetype containing one of these strings: "application/vnd.oasis.opendocument.chart" or "application/vnd.oasis.opendocument.chart-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element <span class="ISO_20_Keyword">shall</span> have the child element <span class="Element">&lt;office:chart&gt;</span>.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_8OpenDocument_Image_Document"><span style="margin-right:0.127cm;">2.2.8</span></a><a id="__RefHeading__440360_826425813"/>OpenDocument Image Document</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Image document</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element <span class="ISO_20_Keyword">shall</span> have an <span class="Attribute">office:mimetype</span> attribute with one of these values: "application/vnd.oasis.opendocument.image" or "application/vnd.oasis.opendocument.image-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it <span class="ISO_20_Keyword">shall</span> contain a file named mimetype containing one of these strings: "application/vnd.oasis.opendocument.image" or "application/vnd.oasis.opendocument.image-template".<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element <span class="ISO_20_Keyword">shall</span> have the child element <span class="Element">&lt;office:image&gt;</span>.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_9OpenDocument_Formula_Document"><span style="margin-right:0.127cm;">2.2.9</span></a><a id="__RefHeading__440362_826425813"/>OpenDocument Formula Document</h3><p class="Text_20_body">An <span class="Def">OpenDocument Formula document</span> shall meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements: </p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>If the document is an OpenDocument package. The OpenDocument package shall contain a file named mimetype with content being the string "application/vnd.oasis.opendocument.formula". <span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>The package "content.xml" file shall have a <span class="Element">&lt;math:math&gt;</span> root element. <span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_2_10OpenDocument_Database_Front_End_Document"><span style="margin-right:0.127cm;">2.2.10</span></a><a id="__RefHeading__440364_826425813"/>OpenDocument Database Front End Document</h3><p class="Text_20_body">An <span class="Def">OpenDocument Database Front End document</span> shall meet all requirements of a Conforming OpenDocument Document, as well as the following additional requirements: </p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>The <span class="Element">&lt;office:document&gt;</span> element shall have an <span class="Attribute">office:mimetype</span> attribute with the value "application/vnd.oasis.opendocument.base". <span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>If the document is an OpenDocument package then it shall contain a file named mimetype containing the string " application/vnd.oasis.opendocument.base". <span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>The <span class="Element">&lt;office:body&gt;</span> element shall have the child element <span class="Element">&lt;office:database&gt;</span>. <span class="odfLiEnd"/> </p></li></ol><h2 class="Heading_20_2"><a id="a2_3Producers"><span style="margin-right:0.127cm;">2.3</span></a><a id="__RefHeading__1420376_2538929491"/>Producers</h2><h3 class="Heading_20_3"><a id="a2_3_1OpenDocument_Producer"><span style="margin-right:0.127cm;">2.3.1</span></a><a id="__RefHeading__440366_826425813"/>OpenDocument Producer</h3><p class="Text_20_body">An<span class="Def"> </span><span class="Def">OpenDocument producer</span> is a program that creates at least one conforming OpenDocument document, and that meets the following additional requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>It <span class="ISO_20_Keyword">may</span> produce conforming OpenDocument extended documents, but it <span class="ISO_20_Keyword">shall</span> have a mode of operation where all OpenDocument documents that are created are conforming OpenDocument documents.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>It <span class="ISO_20_Keyword">shall</span> be accompanied by a document that defines all implementation-defined values used by the OpenDocument producer.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_3_2OpenDocument_Extended_Producer"><span style="margin-right:0.127cm;">2.3.2</span></a><a id="__RefHeading__440368_826425813"/>OpenDocument Extended Producer</h3><p class="Text_20_body">An<span class="Def"> OpenDocument extended producer</span> is a program that creates at least one conforming OpenDocument extended document, and that meets the following additional requirements:</p><ol><li><p class="P15" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>It <span class="ISO_20_Keyword">shall</span> be accompanied by a document that defines all implementation-defined values used by the OpenDocument extended producer.<span class="odfLiEnd"/> </p></li><li><p class="P15" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>It <span class="ISO_20_Keyword">should</span> be accompanied by a document that defines all foreign elements and attributes used by the OpenDocument extended producer.<span class="odfLiEnd"/> </p></li></ol><h2 class="Heading_20_2"><a id="a2_4Consumer"><span style="margin-right:0.127cm;">2.4</span></a><a id="__RefHeading__1420382_2538929491"/>Consumer</h2><p class="Text_20_body">An <span class="Def">OpenDocument consumer</span> is a program that can parse and interpret OpenDocument documents according to the semantics defined by this specification, and that meets the following additional requirements:</p><ol><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>It <span class="ISO_20_Keyword">shall</span> be able to parse and interpret OpenDocument documents of one or more of the document types defined by this specification (see <a href="#element-office_body">3.3</a>) any of which are represented in packages, but it <span class="ISO_20_Keyword">need not</span> interpret the semantics of all elements, attributes and attribute values.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>It <span class="ISO_20_Keyword">may</span> be able to parse and interpret OpenDocument documents stored as single XML document, but it <span class="ISO_20_Keyword">need not</span> interpret the semantics of all elements, attributes and attribute values.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>It <span class="ISO_20_Keyword">shall</span> interpret those elements and attributes it does interpret consistent with the semantics defined for the element or attribute by this specification.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">D)</span>It <span class="ISO_20_Keyword">should</span> be able to parse and interpret conforming OpenDocument extended documents, but it <span class="ISO_20_Keyword">need not</span> interpret the semantics of all elements, attributes and attribute values.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">E)</span>The XML parser used to parse the files contained in a package listed in <a href="#OpenDocument_Document">2.2.1</a>, item B) or the single document listed in <a href="#OpenDocument_Document">2.2.1</a>, item C) meets the following requirements:<span class="odfLiEnd"/> </p><ol><li><p class="P16" style="margin-left:0.635cm;"><span style="display:block;float:left;min-width:0.1011cm">E.1)</span>It <span class="ISO_20_Keyword">shall </span>be a nonvalidating XML processor with regard to the XML 1.0 specification <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0.635cm;"><span style="display:block;float:left;min-width:0.1011cm">E.2)</span>It <span class="ISO_20_Keyword">shall </span>be and be a conforming processor with regard to the XML Namespaces specification <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0.635cm;"><span style="display:block;float:left;min-width:0.1011cm">E.3)</span>It <span class="ISO_20_Keyword">shall</span> conform to the xml-id specification <a title="xml:id Version 1.0" href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">[XML-ID]</a>.<span class="odfLiEnd"/> </p></li></ol></li></ol><h1 class="Heading_20_1"><a id="a3Document_Structure"><span style="margin-right:0.127cm;">3</span></a><a id="__RefHeading__440370_826425813"/><a id="Document_Structure"/>Document Structure</h1><h2 class="Heading_20_2"><a id="a3_1Document_Representation"><span style="margin-right:0.127cm;">3.1</span></a><a id="__RefHeading__1414994_253892949"/>Document Representation </h2><h3 class="Heading_20_3"><a id="a3_1_1General"><span style="margin-right:0.127cm;">3.1.1</span></a><a id="__RefHeading__1414996_253892949"/>General</h3><p class="Text_20_body">OpenDocument defines two methods of document representation:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A single XML document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A collection of files within a package (see OpenDocument specification part 3), each of which stores a part of a complete document.<span class="odfLiEnd"/> </p></li></ul><h3 class="Heading_20_3"><a id="a3_1_2_office_document__Single_OpenDocument_XML_Files_"><span style="margin-right:0.127cm;">3.1.2</span></a><a id="__RefHeading__1414998_253892949"/><a id="element-office_document"/>&lt;office:document&gt;(Single OpenDocument XML Files)</h3><p class="Text_20_body">The <span class="Element">&lt;office:document&gt;</span> element is the root element of a document in OpenDocument format which is represented as a single XML document. It contains the entire document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:document&gt;</span> element is a root element.</p><p class="Parent_20_Element_20_List">The <span class="Element">&lt;office:document&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a> and <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:document&gt;</span> element has the following attributes: <span class="Attribute">grddl:transformation</span> <a href="#attribute-grddl_transformation">19.320</a>, <span class="Attribute">office:mimetype</span> <a href="#attribute-office_mimetype">19.375</a> and <span class="Attribute">office:version</span> <a href="#attribute-office_version">19.386</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:document&gt;</span> element has the following child elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a>, <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>, <span class="Element">&lt;office:font-face-decls&gt;</span> <a href="#element-office_font-face-decls">3.14</a>, <span class="Element">&lt;office:master-styles&gt;</span> <a href="#element-office_master-styles">3.15.4</a>, <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>, <span class="Element">&lt;office:scripts&gt;</span> <a href="#element-office_scripts">3.12</a>, <span class="Element">&lt;office:settings&gt;</span> <a href="#element-office_settings">3.10</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><h3 class="Heading_20_3"><a id="a3_1_3Package_OpenDocument_Files"><span style="margin-right:0.127cm;">3.1.3</span></a><a id="__RefHeading__1415000_253892949"/><a id="Package_OpenDocument_Files"/>Package OpenDocument Files</h3><h4 class="Heading_20_4"><a id="a3_1_3_1General"><span style="margin-right:0.127cm;">3.1.3.1</span></a><a id="__RefHeading__1415002_253892949"/>General</h4><p class="Text_20_body">When an OpenDocument document is represented as a package, there are four root elements, <span class="Element">&lt;office:document-content&gt;</span>, <span class="Element">&lt;office:document-styles&gt;</span>, <span class="Element">&lt;office:document-meta&gt;</span>, and, <span class="Element">&lt;office:document-settings&gt;</span>, each stored as a separate file.</p><p class="Text_20_body">A package may also contain image files, embedded objects and implementation-dependent files.</p><h4 class="Heading_20_4"><a id="a3_1_3_2_office_document-content_"><span style="margin-right:0.127cm;">3.1.3.2</span></a><a id="__RefHeading__1415004_253892949"/><a id="element-office_document-content"/>&lt;office:document-content&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;office:document-content&gt;</span> root element contains document content and automatic styles used in a document. The file within the package for the <span class="Element">&lt;office:document-content&gt;</span> element is content.xml. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:document-content&gt;</span> element is a root element.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:document-content&gt;</span> element has the following attributes: <span class="Attribute">grddl:transformation</span> <a href="#attribute-grddl_transformation">19.320</a> and <span class="Attribute">office:version</span> <a href="#attribute-office_version">19.386</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:document-content&gt;</span> element has the following child elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a>, <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>, <span class="Element">&lt;office:font-face-decls&gt;</span> <a href="#element-office_font-face-decls">3.14</a> and <span class="Element">&lt;office:scripts&gt;</span> <a href="#element-office_scripts">3.12</a>.</p><h4 class="Heading_20_4"><a id="a3_1_3_3_office_document-styles_"><span style="margin-right:0.127cm;">3.1.3.3</span></a><a id="__RefHeading__1415006_253892949"/><a id="element-office_document-styles"/>&lt;office:document-styles&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;office:document-styles&gt;</span> root element contains styles used in document content and automatic styles used in styles. The file within the package for the <span class="Element">&lt;office:document-styles&gt;</span> element is styles.xml.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:document-styles&gt;</span> element is a root element.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:document-styles&gt;</span> element has the following attributes: <span class="Attribute">grddl:transformation</span> <a href="#attribute-grddl_transformation">19.320</a> and <span class="Attribute">office:version</span> <a href="#attribute-office_version">19.386</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:document-styles&gt;</span> element has the following child elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a>, <span class="Element">&lt;office:font-face-decls&gt;</span> <a href="#element-office_font-face-decls">3.14</a>, <span class="Element">&lt;office:master-styles&gt;</span> <a href="#element-office_master-styles">3.15.4</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><h4 class="Heading_20_4"><a id="a3_1_3_4_office_document-meta_"><span style="margin-right:0.127cm;">3.1.3.4</span></a><a id="__RefHeading__1415008_253892949"/><a id="element-office_document-meta"/>&lt;office:document-meta&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;office:document-meta&gt;</span> root element contains document metadata elements. The file within the package for the <span class="Element">&lt;office:document-meta&gt;</span> element is meta.xml.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:document-meta&gt;</span> element is a root element.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:document-meta&gt;</span> element has the following attributes: <span class="Attribute">grddl:transformation</span> <a href="#attribute-grddl_transformation">19.320</a> and <span class="Attribute">office:version</span> <a href="#attribute-office_version">19.386</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:document-meta&gt;</span> element has the following child element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><h4 class="Heading_20_4"><a id="a3_1_3_5_office_document-settings_"><span style="margin-right:0.127cm;">3.1.3.5</span></a><a id="__RefHeading__1415010_253892949"/><a id="element-office_document-settings"/>&lt;office:document-settings&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;office:document-settings&gt;</span> root element contains implementation-dependent settings. The file within the package for the <span class="Element">&lt;office:document-settings&gt;</span> element is settings.xml. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:document-settings&gt;</span> element is a root element.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:document-settings&gt;</span> element has the following attributes: <span class="Attribute">grddl:transformation</span> <a href="#attribute-grddl_transformation">19.320</a> and <span class="Attribute">office:version</span> <a href="#attribute-office_version">19.386</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:document-settings&gt;</span> element has the following child element: <span class="Element">&lt;office:settings&gt;</span> <a href="#element-office_settings">3.10</a>.</p><h3 class="Heading_20_3"><a id="a3_1_4Summary_of_Document_Representation"><span style="margin-right:0.127cm;">3.1.4</span></a><a id="__RefHeading__1415012_253892949"/>Summary of Document Representation</h3><p class="Text_20_body">The models for representing an OpenDocument file are summarized in Table <a href="#refTable6">7</a>. </p><p class="Table">Table <a id="refTable6"/>7 - Root element content models</p><table border="0" cellspacing="0" cellpadding="0" class="Table14"><colgroup><col width="259"/><col width="52"/><col width="45"/><col width="52"/><col width="52"/><col width="52"/><col width="52"/><col width="52"/><col width="48"/></colgroup><tr><td style="text-align:left;width:2.3313in; " class="Table14_A1"><p class="Table_20_Heading">Root Element</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:meta&gt;</span></p></td><td style="text-align:left;width:0.4035in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:settings&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:scripts&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:font-face-decls&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:styles&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:automatic-styles&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A1"><p class="Table_20_Heading"><span class="Element">&lt;office:master-styles&gt;</span></p></td><td style="text-align:left;width:0.4361in; " class="Table14_I1"><p class="Table_20_Heading"><span class="Element">&lt;office:body&gt;</span></p></td></tr><tr><td style="text-align:left;width:2.3313in; " class="Table14_A2"><p class="Table_20_Contents"><span class="Element">&lt;office:document&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4035in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4361in; " class="Table14_I2"><p class="Table_20_Contents_20_Centered">X</p></td></tr><tr><td style="text-align:left;width:2.3313in; " class="Table14_A2"><p class="Table_20_Contents"><span class="Element">&lt;office:document-content&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4035in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4361in; " class="Table14_I2"><p class="Table_20_Contents_20_Centered">X</p></td></tr><tr><td style="text-align:left;width:2.3313in; " class="Table14_A2"><p class="Table_20_Contents"><span class="Element">&lt;office:document-styles&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4035in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4361in; " class="Table14_I2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:2.3313in; " class="Table14_A2"><p class="Table_20_Contents"><span class="Element">&lt;office:document-meta&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4035in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4361in; " class="Table14_I2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:2.3313in; " class="Table14_A2"><p class="Table_20_Contents"><span class="Element">&lt;office:document-settings&gt;</span></p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4035in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4715in; " class="Table14_A2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.4361in; " class="Table14_I2"><p class="Table_20_Contents_20_Centered"> </p></td></tr></table><h2 class="Heading_20_2"><a id="a3_2_office_meta_"><span style="margin-right:0.127cm;">3.2</span></a><a id="__RefHeading__1415014_253892949"/><a id="element-office_meta"/>&lt;office:meta&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:meta&gt;</span> element contains metadata elements for a document that are not specified by a manifest.rdf file. <a href="#manifest_rdf">4.2.2</a></p><p class="Text_20_body">All the child elements of an <span class="Element">&lt;office:meta&gt;</span> element contain metadata about a document as a whole.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:meta&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a> and <span class="Element">&lt;office:document-meta&gt;</span> <a href="#element-office_document-meta">3.1.3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:meta&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:meta&gt;</span> element has the following child elements: <span class="Element">&lt;dc:creator&gt;</span> <a href="#element-dc_creator">4.3.2.7</a>, <span class="Element">&lt;dc:date&gt;</span> <a href="#element-dc_date">4.3.2.10</a>, <span class="Element">&lt;dc:description&gt;</span> <a href="#element-dc_description">4.3.2.3</a>, <span class="Element">&lt;dc:language&gt;</span> <a href="#element-dc_language">4.3.2.15</a>, <span class="Element">&lt;dc:subject&gt;</span> <a href="#element-dc_subject">4.3.2.4</a>, <span class="Element">&lt;dc:title&gt;</span> <a href="#element-dc_title">4.3.2.2</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;meta:creation-date&gt;</span> <a href="#element-meta_creation-date">4.3.2.9</a>, <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>, <span class="Element">&lt;meta:editing-cycles&gt;</span> <a href="#element-meta_editing-cycles">4.3.2.16</a>, <span class="Element">&lt;meta:editing-duration&gt;</span> <a href="#element-meta_editing-duration">4.3.2.17</a>, <span class="Element">&lt;meta:generator&gt;</span> <a href="#element-meta_generator">4.3.2.1</a>, <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> <a href="#element-meta_hyperlink-behaviour">4.3.2.14</a>, <span class="Element">&lt;meta:initial-creator&gt;</span> <a href="#element-meta_initial-creator">4.3.2.6</a>, <span class="Element">&lt;meta:keyword&gt;</span> <a href="#element-meta_keyword">4.3.2.5</a>, <span class="Element">&lt;meta:print-date&gt;</span> <a href="#element-meta_print-date">4.3.2.11</a>, <span class="Element">&lt;meta:printed-by&gt;</span> <a href="#element-meta_printed-by">4.3.2.8</a>, <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a> and <span class="Element">&lt;meta:user-defined&gt;</span> <a href="#element-meta_user-defined">4.3.3</a>.</p><h2 class="Heading_20_2"><a id="a3_3_office_body_"><span style="margin-right:0.127cm;">3.3</span></a><a id="__RefHeading__1415016_253892949"/><a id="element-office_body"/>&lt;office:body&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:body&gt;</span> element contains the elements that represent the content of a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:body&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a> and <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:body&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:body&gt;</span> element has the following child elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:image&gt;</span> <a href="#element-office_image">3.9</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><h2 class="Heading_20_2"><a id="a3_4_office_text_"><span style="margin-right:0.127cm;">3.4</span></a><a id="__RefHeading__1415018_253892949"/><a id="element-office_text"/>&lt;office:text&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:text&gt;</span> element represents the content of a text document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:text&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:text&gt;</span> element has the following attributes: <span class="Attribute">text:global</span> <a href="#attribute-text_global">19.806</a> and <span class="Attribute">text:use-soft-page-breaks</span> <a href="#attribute-text_use-soft-page-breaks">19.897</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:text&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>, <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>, <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>, <span class="Element">&lt;table:content-validations&gt;</span> <a href="#element-table_content-validations">9.4.4</a>, <span class="Element">&lt;table:database-ranges&gt;</span> <a href="#element-table_database-ranges">9.4.14</a>, <span class="Element">&lt;table:data-pilot-tables&gt;</span> <a href="#element-table_data-pilot-tables">9.6.2</a>, <span class="Element">&lt;table:dde-links&gt;</span> <a href="#element-table_dde-links">9.8</a>, <span class="Element">&lt;table:label-ranges&gt;</span> <a href="#element-table_label-ranges">9.4.10</a>, <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:page-sequence&gt;</span> <a href="#element-text_page-sequence">5.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>, <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a>, <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a3_5_office_drawing_"><span style="margin-right:0.127cm;">3.5</span></a><a id="__RefHeading__1415020_253892949"/><a id="element-office_drawing"/>&lt;office:drawing&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:drawing&gt;</span> element represents a drawing document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:drawing&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:drawing&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:drawing&gt;</span> element has the following child elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>, <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>, <span class="Element">&lt;table:content-validations&gt;</span> <a href="#element-table_content-validations">9.4.4</a>, <span class="Element">&lt;table:database-ranges&gt;</span> <a href="#element-table_database-ranges">9.4.14</a>, <span class="Element">&lt;table:data-pilot-tables&gt;</span> <a href="#element-table_data-pilot-tables">9.6.2</a>, <span class="Element">&lt;table:dde-links&gt;</span> <a href="#element-table_dde-links">9.8</a>, <span class="Element">&lt;table:label-ranges&gt;</span> <a href="#element-table_label-ranges">9.4.10</a>, <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a3_6_office_presentation_"><span style="margin-right:0.127cm;">3.6</span></a><a id="__RefHeading__1415022_253892949"/><a id="element-office_presentation"/>&lt;office:presentation&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:presentation&gt;</span> element represents a presentation document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:presentation&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:presentation&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:presentation&gt;</span> element has the following child elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;presentation:date-time-decl&gt;</span> <a href="#element-presentation_date-time-decl">10.9.3.6</a>, <span class="Element">&lt;presentation:footer-decl&gt;</span> <a href="#element-presentation_footer-decl">10.9.3.4</a>, <span class="Element">&lt;presentation:header-decl&gt;</span> <a href="#element-presentation_header-decl">10.9.3.2</a>, <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>, <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>, <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>, <span class="Element">&lt;table:content-validations&gt;</span> <a href="#element-table_content-validations">9.4.4</a>, <span class="Element">&lt;table:database-ranges&gt;</span> <a href="#element-table_database-ranges">9.4.14</a>, <span class="Element">&lt;table:data-pilot-tables&gt;</span> <a href="#element-table_data-pilot-tables">9.6.2</a>, <span class="Element">&lt;table:dde-links&gt;</span> <a href="#element-table_dde-links">9.8</a>, <span class="Element">&lt;table:label-ranges&gt;</span> <a href="#element-table_label-ranges">9.4.10</a>, <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a3_7_office_spreadsheet_"><span style="margin-right:0.127cm;">3.7</span></a><a id="__RefHeading__1415024_253892949"/><a id="element-office_spreadsheet"/>&lt;office:spreadsheet&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:spreadsheet&gt;</span> element represents a spreadsheet document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:spreadsheet&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:spreadsheet&gt;</span> element has the following attributes: <span class="Attribute">table:protection-key</span> <a href="#attribute-table_protection-key">19.697</a>, <span class="Attribute">table:protection-key-digest-algorithm</span> <a href="#attribute-table_protection-key-digest-algorithm">19.698</a> and <span class="Attribute">table:structure-protected</span> <a href="#attribute-table_structure-protected">19.725</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:spreadsheet&gt;</span> element has the following child elements: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>, <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>, <span class="Element">&lt;table:content-validations&gt;</span> <a href="#element-table_content-validations">9.4.4</a>, <span class="Element">&lt;table:database-ranges&gt;</span> <a href="#element-table_database-ranges">9.4.14</a>, <span class="Element">&lt;table:data-pilot-tables&gt;</span> <a href="#element-table_data-pilot-tables">9.6.2</a>, <span class="Element">&lt;table:dde-links&gt;</span> <a href="#element-table_dde-links">9.8</a>, <span class="Element">&lt;table:label-ranges&gt;</span> <a href="#element-table_label-ranges">9.4.10</a>, <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;table:tracked-changes&gt;</span> <a href="#element-table_tracked-changes">9.9.2</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a3_8_office_chart_"><span style="margin-right:0.127cm;">3.8</span></a><a id="__RefHeading__1415026_253892949"/><a id="element-office_chart"/>&lt;office:chart&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:chart&gt;</span> element represents a chart document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:chart&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:chart&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:chart&gt;</span> element has the following child elements: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>, <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>, <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>, <span class="Element">&lt;table:content-validations&gt;</span> <a href="#element-table_content-validations">9.4.4</a>, <span class="Element">&lt;table:database-ranges&gt;</span> <a href="#element-table_database-ranges">9.4.14</a>, <span class="Element">&lt;table:data-pilot-tables&gt;</span> <a href="#element-table_data-pilot-tables">9.6.2</a>, <span class="Element">&lt;table:dde-links&gt;</span> <a href="#element-table_dde-links">9.8</a>, <span class="Element">&lt;table:label-ranges&gt;</span> <a href="#element-table_label-ranges">9.4.10</a>, <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a3_9_office_image_"><span style="margin-right:0.127cm;">3.9</span></a><a id="__RefHeading__1415028_253892949"/><a id="element-office_image"/>&lt;office:image&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:image&gt;</span> element represents an image document. </p><p class="Text_20_body">The <span class="Element">&lt;office:image&gt;</span> element contains a <span class="Element">&lt;draw:frame&gt;</span> element which shall contain a single <span class="Element">&lt;draw:image&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:image&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:image&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:image&gt;</span> element has the following child element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><h2 class="Heading_20_2"><a id="a3_10_office_settings_"><span style="margin-right:0.127cm;">3.10</span></a><a id="__RefHeading__1415030_253892949"/><a id="element-office_settings"/>&lt;office:settings&gt;</h2><h3 class="Heading_20_3"><a id="a3_10_1General"><span style="margin-right:0.127cm;">3.10.1</span></a><a id="__RefHeading__1415032_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;office:settings&gt;</span> element contains one or more <span class="Element">&lt;config:config-item-set&gt;</span> elements, each of which represents a set of application settings.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:settings&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a> and <span class="Element">&lt;office:document-settings&gt;</span> <a href="#element-office_document-settings">3.1.3.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:settings&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:settings&gt;</span> element has the following child element: <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><h3 class="Heading_20_3"><a id="a3_10_2_config_config-item-set_"><span style="margin-right:0.127cm;">3.10.2</span></a><a id="__RefHeading__1415034_253892949"/><a id="element-config_config-item-set"/>&lt;config:config-item-set&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;config:config-item-set&gt;</span> element is a container element for application setting elements. Setting child elements may occur in any order.</p><p class="Text_20_body">An ODF Consumer shall use application settings to alter application behavior only within the dimensions of variability permitted by this standard.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;config:config-item-set&gt;</span> element is usable within the following elements: <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a>, <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a> and <span class="Element">&lt;office:settings&gt;</span> <a href="#element-office_settings">3.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;config:config-item-set&gt;</span> element has the following attribute: <span class="Attribute">config:name</span> <a href="#attribute-config_name">19.29</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;config:config-item-set&gt;</span> element has the following child elements: <span class="Element">&lt;config:config-item&gt;</span> <a href="#element-config_config-item">3.10.3</a>, <span class="Element">&lt;config:config-item-map-indexed&gt;</span> <a href="#element-config_config-item-map-indexed">3.10.4</a>, <span class="Element">&lt;config:config-item-map-named&gt;</span> <a href="#element-config_config-item-map-named">3.10.6</a> and <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><h3 class="Heading_20_3"><a id="a3_10_3_config_config-item_"><span style="margin-right:0.127cm;">3.10.3</span></a><a id="__RefHeading__1415036_253892949"/><a id="element-config_config-item"/>&lt;config:config-item&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;config:config-item&gt;</span> element contains the value of an application setting whose name is specified by its <span class="Attribute">config:name</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;config:config-item&gt;</span> element is usable within the following elements: <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a> and <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;config:config-item&gt;</span> element has the following attributes: <span class="Attribute">config:name</span> <a href="#attribute-config_name">19.29</a> and <span class="Attribute">config:type</span> <a href="#attribute-config_type">19.30</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;config:config-item&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;config:config-item&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a3_10_4_config_config-item-map-indexed_"><span style="margin-right:0.127cm;">3.10.4</span></a><a id="__RefHeading__1415038_253892949"/><a id="element-config_config-item-map-indexed"/>&lt;config:config-item-map-indexed&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;config:config-item-map-indexed&gt;</span> element is a container element for ordered sequences of application settings. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;config:config-item-map-indexed&gt;</span> element is usable within the following elements: <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a> and <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;config:config-item-map-indexed&gt;</span> element has the following attribute: <span class="Attribute">config:name</span> <a href="#attribute-config_name">19.29</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;config:config-item-map-indexed&gt;</span> element has the following child element: <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a>.</p><h3 class="Heading_20_3"><a id="a3_10_5_config_config-item-map-entry_"><span style="margin-right:0.127cm;">3.10.5</span></a><a id="__RefHeading__1415040_253892949"/><a id="element-config_config-item-map-entry"/>&lt;config:config-item-map-entry&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;config:config-item-map-entry&gt;</span> element represents a single setting in a sequence of settings. The setting itself is defined by the child element of <span class="Element">&lt;config:config-item-map-entry&gt;</span>, and may be a single value, a set of settings, or a sequence of settings. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;config:config-item-map-entry&gt;</span> element is usable within the following elements: <span class="Element">&lt;config:config-item-map-indexed&gt;</span> <a href="#element-config_config-item-map-indexed">3.10.4</a> and <span class="Element">&lt;config:config-item-map-named&gt;</span> <a href="#element-config_config-item-map-named">3.10.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;config:config-item-map-entry&gt;</span> element has the following attribute: <span class="Attribute">config:name</span> <a href="#attribute-config_name">19.29</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;config:config-item-map-entry&gt;</span> element has the following child elements: <span class="Element">&lt;config:config-item&gt;</span> <a href="#element-config_config-item">3.10.3</a>, <span class="Element">&lt;config:config-item-map-indexed&gt;</span> <a href="#element-config_config-item-map-indexed">3.10.4</a>, <span class="Element">&lt;config:config-item-map-named&gt;</span> <a href="#element-config_config-item-map-named">3.10.6</a> and <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><h3 class="Heading_20_3"><a id="a3_10_6_config_config-item-map-named_"><span style="margin-right:0.127cm;">3.10.6</span></a><a id="__RefHeading__1415042_253892949"/><a id="element-config_config-item-map-named"/>&lt;config:config-item-map-named&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;config:config-item-map-named&gt;</span> element contains a sequence of application setting elements. Each sequence is identified by the value of its <span class="Attribute">config:name</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;config:config-item-map-named&gt;</span> element is usable within the following elements: <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a> and <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;config:config-item-map-named&gt;</span> element has the following attribute: <span class="Attribute">config:name</span> <a href="#attribute-config_name">19.29</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;config:config-item-map-named&gt;</span> element has the following child element: <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a>.</p><h2 class="Heading_20_2"><a id="a3_11Cursor_Position_Setting"><span style="margin-right:0.127cm;">3.11</span></a><a id="__RefHeading__1415044_253892949"/>Cursor Position Setting</h2><p class="Text_20_body">To represent a text cursor position within a document, a processing instruction with <span class="Misc_20_Source">PITarget</span> <span class="Misc_20_Source">opendocument</span> (see §2.6 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>) <span class="ISO_20_Keyword">should</span> be used. The name of the cursor position processing instruction, <span class="Misc_20_Source">cursor-position</span>, <span class="ISO_20_Keyword">shall</span> follow the <span class="Misc_20_Source">PITarget</span> <span class="Misc_20_Source">opendocument</span>. The processing instruction may have arbitrary implementation-defined attributes.</p><p class="Note"><span class="Note_20_Label">Note:</span> Where a text cursor position is not sufficient to recreate a document view, producers may use arbitrary document specific settings in addition to a cursor position processing instruction. </p><h2 class="Heading_20_2"><a id="a3_12_office_scripts_"><span style="margin-right:0.127cm;">3.12</span></a><a id="__RefHeading__1415046_253892949"/><a id="element-office_scripts"/>&lt;office:scripts&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:scripts&gt;</span> element contains all the <span class="Element">&lt;office:script&gt;</span> elements for a document. </p><p class="Text_20_body">Each <span class="Element">&lt;office:script&gt;</span> element contains a script. A document may contain scripts in different scripting languages.</p><p class="Note"><span class="Note_20_Label">Note:</span> Scripts need not use XML document models.</p><p class="Text_20_body">The <span class="Element">&lt;office:scripts&gt;</span> element may also contain <span class="Element">&lt;office:event-listeners&gt;</span> elements which contain the events assigned to the document itself. <a href="#element-script_event-listener">14.4.2</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:scripts&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a> and <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:scripts&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:scripts&gt;</span> element has the following child elements: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a> and <span class="Element">&lt;office:script&gt;</span> <a href="#element-office_script">3.13</a>.</p><h2 class="Heading_20_2"><a id="a3_13_office_script_"><span style="margin-right:0.127cm;">3.13</span></a><a id="__RefHeading__1415048_253892949"/><a id="element-office_script"/>&lt;office:script&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:script&gt;</span> element contains a script.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:script&gt;</span> element is usable within the following element: <span class="Element">&lt;office:scripts&gt;</span> <a href="#element-office_scripts">3.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:script&gt;</span> element has the following attribute: <span class="Attribute">script:language</span> <a href="#attribute-script_language">19.430</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:script&gt;</span> element has mixed content where arbitrary child elements are permitted.</p><p class="Note"><span class="Note_20_Label">Note:</span> In most situations, the element contains the source code of the script, but it may also contain a compiled version of the script or a link to external script code.</p><h2 class="Heading_20_2"><a id="a3_14_office_font-face-decls_"><span style="margin-right:0.127cm;">3.14</span></a><a id="__RefHeading__1415050_253892949"/><a id="element-office_font-face-decls"/>&lt;office:font-face-decls&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:font-face-decls&gt;</span> element contains all the font face declarations (<span class="Element">&lt;style:font-face&gt;</span> elements) for a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:font-face-decls&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>, <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:font-face-decls&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:font-face-decls&gt;</span> element has the following child element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><h2 class="Heading_20_2"><a id="a3_15Styles"><span style="margin-right:0.127cm;">3.15</span></a><a id="__RefHeading__1415052_253892949"/>Styles</h2><h3 class="Heading_20_3"><a id="a3_15_1General"><span style="margin-right:0.127cm;">3.15.1</span></a><a id="__RefHeading__1415054_253892949"/>General</h3><p class="Text_20_body">Styles for a document are defined in container elements according to their type: common, automatic and master. </p><p class="Text_20_body">Page layouts and styles are defined by <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout-properties">17.2</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a> elements, respectively. </p><h3 class="Heading_20_3"><a id="a3_15_2_office_styles_"><span style="margin-right:0.127cm;">3.15.2</span></a><a id="__RefHeading__1415056_253892949"/><a id="element-office_styles"/>&lt;office:styles&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:styles&gt;</span> element contains common styles used in a document. A common style is a style chosen by a user for a document or portion thereof.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:styles&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:styles&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:styles&gt;</span> element has the following child elements: <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>, <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>, <span class="Element">&lt;draw:marker&gt;</span> <a href="#element-draw_marker">16.40.8</a>, <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>, <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>, <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>, <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>, <span class="Element">&lt;style:default-page-layout&gt;</span> <a href="#element-style_default-page-layout">16.8</a>, <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a>, <span class="Element">&lt;style:presentation-page-layout&gt;</span> <a href="#element-style_presentation-page-layout">16.41</a>, <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>, <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>, <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>, <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>, <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>, <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>, <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>, <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a> and <span class="Element">&lt;text:outline-style&gt;</span> <a href="#element-text_outline-style">16.34</a>.</p><h3 class="Heading_20_3"><a id="a3_15_3_office_automatic-styles_"><span style="margin-right:0.127cm;">3.15.3</span></a><a id="__RefHeading__1415058_253892949"/><a id="element-office_automatic-styles"/>&lt;office:automatic-styles&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:automatic-styles&gt;</span> element contains automatic styles used in a document. </p><p class="Text_20_body">An automatic style is one contains formatting properties that are considered to be properties of the object to which the style is assigned. </p><p class="Note"><span class="Note_20_Label">Note:</span> Common and automatic styles behave differently in OpenDocument editing consumers. Common styles are presented to the user as a named set of formatting properties. The formatting properties of an automatic style are presented to a user as properties of the object to which the style is applied. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:automatic-styles&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>, <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:automatic-styles&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:automatic-styles&gt;</span> element has the following child elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>, <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>, <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout">16.5</a>, <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a> and <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><h3 class="Heading_20_3"><a id="a3_15_4_office_master-styles_"><span style="margin-right:0.127cm;">3.15.4</span></a><a id="__RefHeading__1415060_253892949"/><a id="element-office_master-styles"/>&lt;office:master-styles&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:master-styles&gt;</span> element contains master styles that are used in a document. A master style contains formatting and other content that is displayed with document content when the style is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:master-styles&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:master-styles&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:master-styles&gt;</span> element has the following child elements: <span class="Element">&lt;draw:layer-set&gt;</span> <a href="#element-draw_layer-set">10.2.2</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><h2 class="Heading_20_2"><a id="a3_16Document_Signatures"><span style="margin-right:0.127cm;">3.16</span></a><a id="__RefHeading__1415062_253892949"/>Document Signatures</h2><p class="Text_20_body">An OpenDocument document that is stored in a package may have one or more digital signatures applied to the package.</p><p class="Text_20_body">Document signatures shall be stored in a file called META-INF/documentsignatures.xml in the package as described in section 3.5 of the OpenDocument specification part 3. Document signatures shall contain a <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element for each file within the package, with the exception that <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> elements for the META-INF/documentsignatures.xml file containing the signature, and any files contained in the package whose relative path starts with "external-data/" should be omitted.</p><p class="Text_20_body">Signatures other than document signatures are implementation-defined.</p><p class="Text_20_body"> </p><h2 class="Heading_20_2"><a id="a3_17Foreign_Elements_and_Attributes"><span style="margin-right:0.127cm;">3.17</span></a><a id="__RefNumPara__623372_981565270"/><a id="__RefHeading__440372_826425813"/><a id="ForeignElementsAndAttributes"/>Foreign Elements and Attributes</h2><p class="Text_20_body">OpenDocument extended documents <span class="ISO_20_Keyword">may</span> contain elements and attributes not defined by the OpenDocument schema. Elements and attributes not defined by the OpenDocument schema are called <span class="Def">foreign elements</span> and <span class="Def">attributes</span>. Foreign elements and attributes <span class="ISO_20_Keyword">shall</span> not be associated with a namespace that is listed in tables 1, 2 or 3 of section <a href="#Namespaces">1.5</a>.</p><p class="Text_20_body">If a foreign element has a <span class="Element">&lt;text:h&gt;</span> or <span class="Element">&lt;text:p&gt;</span> ancestor element, and is a child element of an element for which the OpenDocument schema permits the inclusion of character data, and if the OpenDocument schema permits the inclusion of character data for all its ancestors up to the <span class="Element">&lt;text:p&gt;</span> or <span class="Element">&lt;text:h&gt;</span> element ancestor element, then the element's content <span class="ISO_20_Keyword">may</span> be interpreted by conforming OpenDocument consumers, and the document itself <span class="ISO_20_Keyword">shall</span> be valid against the OpenDocument schema as if the foreign element's start- and end-tags or its empty-element-tag are removed.</p><p class="Text_20_body">For a foreign element that occurs at another location, conforming consumers <span class="ISO_20_Keyword">should not</span> interpret the element's content, but <span class="ISO_20_Keyword">may</span> preserve its content.</p><p class="Text_20_body">Foreign elements may have an <span class="Attribute">office:process-content</span> attribute <a href="#attribute-office_process-content">19.377</a> attached which controls the processing of the element content. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> In OpenDocument 1.0 and 1.1, the content of foreign elements should be processed unless there was an <span class="Attribute">office:process-content</span> attribute with value <span class="Attribute_20_Value">false</span>.</p><p class="Text_20_body">Conforming extended producers <span class="ISO_20_Keyword">should</span> <span class="ISO_20_Keyword">not</span> use foreign elements and attributes for features defined in the OpenDocument specification.</p><p class="Text_20_body">A conforming consumer that encounters an OpenDocument defined attribute that has a value that is not defined by OpenDocument, then it should: </p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>If the attribute has a specified default value, use its default value, or <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>If the attribute does not have a specified default value, ignore the attribute. <span class="odfLiEnd"/> </p></li></ol><h2 class="Heading_20_2"><a id="a3_18White_Space_Processing_and_EOL_Handling"><span style="margin-right:0.127cm;">3.18</span></a><a id="__RefHeading__1420346_2538929491"/>White Space Processing and EOL Handling</h2><p class="Text_20_body">ODF processing of whitespace characters is in conformance with the provisions of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>.</p><p class="Text_20_body">In addition, OpenDocument Consumers shall ignore all element children (<a title="Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG" href="http://oasis-open.org/committees/relax-ng/spec-20011203.html">[RNG]</a> section 5, Data Model) of elements defined in this specification that are strings consisting entirely of whitespace characters and which do not satisfy a pattern of the OpenDocument schema definition for the element.</p><p class="Text_20_body">Additional treatment of occurrences of whitespace characters depends on the provisions for specific elements, attributes, and their datatypes in this specification. </p><p class="Note"><span class="Note_20_Label">Note</span>: There are special OpenDocument rules for the reduction of whitespace sequences to single space characters in the text obtained from <span class="Element">&lt;text:p&gt;</span>, <span class="Element">&lt;text:h&gt;</span> and their element children. <a href="#White-space_Characters">6.1.2</a></p><h2 class="Heading_20_2"><a id="a3_19MIME_Types_and_File_Name_Extensions"><span style="margin-right:0.127cm;">3.19</span></a><a id="__RefHeading__1420348_2538929491"/>MIME Types and File Name Extensions</h2><p class="Text_20_body">Appendix C contains a list of MIME types and file name extensions to be used for office documents that conform to this specification and that are contained in a package. See <a href="#Package_OpenDocument_Files">3.1.3</a>.</p><p class="Text_20_body">Office documents that conform to this specification but are not contained in a package <span class="ISO_20_Keyword">should</span> use the MIME type <span class="Source_20_Text">text/xml</span>.</p><p class="Text_20_body">Only MIME types and extensions that have been registered according to <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a> <span class="ISO_20_Keyword">should</span> used for office documents that conform to this specification. The MIME types and extensions listed in appendix C <span class="ISO_20_Keyword">should</span> be used where appropriate.</p><h1 class="Heading_20_1"><a id="a4Metadata"><span style="margin-right:0.127cm;">4</span></a><a id="__RefHeading__1415064_253892949"/>Metadata</h1><h2 class="Heading_20_2"><a id="a4_1General"><span style="margin-right:0.127cm;">4.1</span></a><a id="__RefHeading__1415066_253892949"/>General</h2><p class="Text_20_body">Metadata is general information about a document or its content.</p><p class="Text_20_body">OpenDocument supports five types of metadata:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>RDF metadata describing documents or the content of identifiable OpenDocument elements. <a href="#manifest_rdf">4.2.2</a><span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>Text content being used as RDF metadata. <a href="#InContentMetadata">4.2.1</a> <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">3)</span>Pre-defined metadata (meta.xml). <a href="#Pre-DefinedMetadata">4.3.2</a><span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">4)</span>User-defined metadata (using the <span class="Element">&lt;meta:user-defined&gt;</span> element). <a href="#UserDefinedMetadata">4.3.3</a><span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">5)</span>Custom metadata (custom XML elements within meta.xml). <a href="#CustomMetadataElements">4.3.1</a><span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">Pre-defined and user-defined metadata are both stored in the metadata <span class="Element">&lt;office:meta&gt;</span> element. The elements representing this metadata may be omitted or occur multiple times. The updating of multiple instances of the same metadata elements is implementation-dependent.</p><h2 class="Heading_20_2"><a id="a4_2RDF_Metadata"><span style="margin-right:0.127cm;">4.2</span></a><a id="__RefHeading__1415068_253892949"/><a id="RDFMetadata"/>RDF Metadata</h2><h3 class="Heading_20_3"><a id="a4_2_1In_Content_Metadata__RDFa_"><span style="margin-right:0.127cm;">4.2.1</span></a><a id="__RefHeading__1415070_253892949"/><a id="InContentMetadata"/>In Content Metadata (RDFa)</h3><p class="Text_20_body">Metadata in OpenDocument documents may be expressed using the model of the W3C Resource Description Framework <a title="Resource Description Framework (RDF): Concepts and Abstract Syntax" href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">[RDF-CONCEPTS]</a>.</p><p class="Text_20_body">In addition to the mechanism defined in Part 3 of this specification RDF metadata can be attached to elements in the "content.xml" and "styles.xml" file. Elements supporting this type of metadata have the following attributes: <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, and <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>. When metadata is added using these attributes, it is referred to as in content metadata. If "content.xml" and "styles.xml" files contain in content metadata they shall be listed in the package's "manifest.rdf" file. </p><h3 class="Heading_20_3"><a id="a4_2_2manifest_rdf"><span style="margin-right:0.127cm;">4.2.2</span></a><a id="__RefHeading__1415072_253892949"/><a id="manifest_rdf"/>manifest.rdf</h3><h4 class="Heading_20_4"><a id="a4_2_2_1General"><span style="margin-right:0.127cm;">4.2.2.1</span></a><a id="__RefHeading__1415074_253892949"/>General</h4><p class="Text_20_body">The OpenDocument document contains a metadata manifest, as defined in Part 3 of this specification. The <a title="OWL Web Ontology Language Overview" href="http://www.w3.org/TR/2004/REC-owl-features-20040210/">[OWL]</a> Metadata Manifest Description ontology defined in Part <a id="DDE_LINK110"/>3 is extended with additional properties and classes in appendix B. The following OWL classes and properties are defined.</p><h4 class="Heading_20_4"><a id="a4_2_2_2odf_ContentFile"><span style="margin-right:0.127cm;">4.2.2.2</span></a><a id="__RefHeading__1415076_253892949"/>odf:ContentFile</h4><p class="Text_20_body">An instance of the <span class="OWL_20_Class">odf:ContentFile</span> class represents a content.xml file.</p><p class="Text_20_body">The <span class="OWL_20_Class">odf:ContentFile</span> class is a subclass of <span class="OWL_20_Class">pkg:File</span>.</p><h4 class="Heading_20_4"><a id="a4_2_2_3odf_StylesFile"><span style="margin-right:0.127cm;">4.2.2.3</span></a><a id="__RefHeading__1415078_253892949"/>odf:StylesFile</h4><p class="Text_20_body">An instance of the <span class="OWL_20_Class">odf:StylesFile</span> class represents a styles.xml file.</p><p class="Text_20_body">The <span class="OWL_20_Class">odf:StylesFile</span> class is a subclass of <span class="OWL_20_Class">pkg:File</span></p><h4 class="Heading_20_4"><a id="a4_2_2_4odf_Element"><span style="margin-right:0.127cm;">4.2.2.4</span></a><a id="__RefHeading__1415080_253892949"/><a id="owlclass-odf_Element"/>odf:Element</h4><p class="Text_20_body">An instance of the <span class="OWL_20_Class">odf:Element</span> class represents an OpenDocument XML element in a content.xml or styles.xml file. It is a subclass of the <span class="OWL_20_Class">pkg:Element</span> class, which represents any XML element in the OpenDocument package.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> One or more <span class="OWL_20_Property">rdf:type</span> properties specify the metadata type of an <span class="OWL_20_Class">odf:Element</span>.</p><p class="Text_20_body">Every XML element that is defined by this specification and has an attribute of type ID may be described using an OWL class. The IRI of an OWL class for an element is the concatenation of the element's QName namespace IRI and its local name part. These classes are subclasses of <span class="OWL_20_Class">odf:Element</span>. </p><p class="Text_20_body">The following properties are defined for the subclass describing a <span class="Element">&lt;text:meta-field&gt;</span> element (<span class="OWL_20_Class">urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field</span>) : <span class="OWL_20_Property">odf:prefix</span> <a href="#owlproperty-odf_prefix">4.2.2.5</a> and <span class="OWL_20_Property">odf:suffix</span> <a href="#owlproperty-odf_suffix">4.2.2.6</a>.</p><h4 class="Heading_20_4"><a id="a4_2_2_5odf_prefix"><span style="margin-right:0.127cm;">4.2.2.5</span></a><a id="__RefHeading__1415082_253892949"/><a id="owlproperty-odf_prefix"/>odf:prefix</h4><p class="Text_20_body">The <span class="OWL_20_Property">odf:prefix</span> property defines the prefix content of a <span class="Element">&lt;text:meta-field&gt;</span> field<a id="DDE_LINK16"/> <a href="#element-text_meta-field">7.5.19</a>.</p><p class="Text_20_body">This property can be used with the following class: <span class="OWL_20_Class">urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field</span> <a href="#owlclass-odf_Element">4.2.2.4</a>.</p><h4 class="Heading_20_4"><a id="a4_2_2_6odf_suffix"><span style="margin-right:0.127cm;">4.2.2.6</span></a><a id="__RefHeading__1415084_253892949"/><a id="owlproperty-odf_suffix"/>odf:suffix</h4><p class="Text_20_body">The <span class="OWL_20_Property">odf:suffix</span> property defines the suffix content of a <span class="Element">&lt;text:meta-field&gt;</span> field <a href="#element-text_meta-field">7.5.19</a>.</p><p class="Text_20_body">This property can be used with the following class: <span class="OWL_20_Class">urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field</span> <a href="#owlclass-odf_Element">4.2.2.4</a>.</p><h2 class="Heading_20_2"><a id="a4_3Non-RDF_Metadata"><span style="margin-right:0.127cm;">4.3</span></a><a id="__RefHeading__1415086_253892949"/>Non-RDF Metadata</h2><h3 class="Heading_20_3"><a id="a4_3_1General"><span style="margin-right:0.127cm;">4.3.1</span></a><a id="__RefHeading__1415088_253892949"/><a id="CustomMetadataElements"/>General</h3><p class="Text_20_body">Non-RDF metadata in OpenDocument is composed of pre-defined metadata elements, user defined metadata elements, and custom metadata elements.</p><p class="Text_20_body">The pre-defined metadata elements have defined semantics. They <span class="ISO_20_Keyword">should</span> be processed by consumers and updated by producers. They can be referenced from within the document using text fields.</p><p class="Text_20_body">The pre-defined metadata elements borrow heavily upon the metadata standards developed by the Dublin Core Metadata Initiative (http://www.dublincore.org). Metadata elements drawn directly from the Dublin Core work are in the http://purl.org/dc/elements/1.1 namespace.   “</p><p class="Text_20_body">User-defined metadata specifies a triplet of name, type, and value. Consumers can present these values to the user. </p><p class="Text_20_body">Custom metadata elements are arbitrary elements inside an <span class="Element">&lt;office:meta&gt;</span> element. The semantics of custom metadata elements is implementation-defined.</p><p class="Text_20_body">Custom metadata elements shall only occur in OpenDocument extended documents. The use of custom metadata is deprecated in favor of RDF/XML based metadata.</p><p class="Note"><span class="Note_20_Label">Note:</span> Consumers need not process custom metadata other than to preserve it when editing a document. </p><h3 class="Heading_20_3"><a id="a4_3_2Pre-Defined_Metadata_Elements"><span style="margin-right:0.127cm;">4.3.2</span></a><a id="__RefHeading__1415090_253892949"/><a id="Pre-DefinedMetadata"/>Pre-Defined Metadata Elements</h3><h4 class="Heading_20_4"><a id="a4_3_2_1_meta_generator_"><span style="margin-right:0.127cm;">4.3.2.1</span></a><a id="__RefHeading__1415092_253892949"/><a id="element-meta_generator"/>&lt;meta:generator&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:generator&gt;</span> element contains a string that identifies the OpenDocument producer that was used to create or last modify the document. This string <span class="ISO_20_Keyword">should</span> match the definition for user-agents in the HTTP protocol as specified in section 14.43 of <a title=" Hypertext Transfer Protocol -- HTTP/1.1" href="http://www.ietf.org/rfc/rfc2616.txt">[RFC2616]</a>. The generator string <span class="ISO_20_Keyword">should</span> allow OpenDocument consumers to distinguish between all released versions of a producer.</p><p class="Note"><span class="Note_20_Label">Note:</span> Release versions of a producer could be distinguished based on build ids or patch level information.</p><p class="Text_20_body">If an OpenDocument producer that creates a document cannot provide an identifier string, the producer <span class="ISO_20_Keyword">shall not </span>export this element. If a producer stores a modified document created by another producer cannot provide a unique identifier, it <span class="ISO_20_Keyword">shall not</span> export the original identifier belonging to the producer that created the document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:generator&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:generator&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:generator&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:generator&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_2_dc_title_"><span style="margin-right:0.127cm;">4.3.2.2</span></a><a id="__RefHeading__1415094_253892949"/><a id="element-dc_title"/>&lt;dc:title&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;dc:title&gt;</span> element specifies the title of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dc:title&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dc:title&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;dc:title&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dc:title&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_3_dc_description_"><span style="margin-right:0.127cm;">4.3.2.3</span></a><a id="__RefHeading__1415096_253892949"/><a id="element-dc_description"/>&lt;dc:description&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;dc:description&gt;</span> element contains a description of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dc:description&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dc:description&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;dc:description&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dc:description&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_4_dc_subject_"><span style="margin-right:0.127cm;">4.3.2.4</span></a><a id="__RefHeading__1415098_253892949"/><a id="element-dc_subject"/>&lt;dc:subject&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;dc:subject&gt;</span> element specifies the subject of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dc:subject&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dc:subject&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;dc:subject&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dc:subject&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_5_meta_keyword_"><span style="margin-right:0.127cm;">4.3.2.5</span></a><a id="__RefHeading__1415100_253892949"/><a id="element-meta_keyword"/>&lt;meta:keyword&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:keyword&gt;</span> element contains a keyword pertaining to a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:keyword&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:keyword&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:keyword&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:keyword&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_6_meta_initial-creator_"><span style="margin-right:0.127cm;">4.3.2.6</span></a><a id="__RefHeading__1415102_253892949"/><a id="element-meta_initial-creator"/>&lt;meta:initial-creator&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:initial-creator&gt;</span> element specifies the name of the initial creator of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:initial-creator&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:initial-creator&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:initial-creator&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:initial-creator&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_7_dc_creator_"><span style="margin-right:0.127cm;">4.3.2.7</span></a><a id="__RefHeading__1415104_253892949"/><a id="element-dc_creator"/>&lt;dc:creator&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;dc:creator&gt;</span> element specifies the name of the person who last modified a document (<span class="Element">&lt;office:meta&gt;</span>), who created an annotation (<span class="Element">&lt;office:annotation&gt;</span>), who authored a change (<span class="Element">&lt;office:change-info&gt;</span>). </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dc:creator&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a> and <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dc:creator&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;dc:creator&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dc:creator&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_8_meta_printed-by_"><span style="margin-right:0.127cm;">4.3.2.8</span></a><a id="__RefHeading__1415106_253892949"/><a id="element-meta_printed-by"/>&lt;meta:printed-by&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:printed-by&gt;</span> element specifies the name of the last person who printed a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:printed-by&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:printed-by&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:printed-by&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:printed-by&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_9_meta_creation-date_"><span style="margin-right:0.127cm;">4.3.2.9</span></a><a id="__RefHeading__1415108_253892949"/><a id="element-meta_creation-date"/>&lt;meta:creation-date&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:creation-date&gt;</span> element specifies the date and time when a document was created.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:creation-date&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:creation-date&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:creation-date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:creation-date&gt;</span> element has content of data type <span class="Datatype">dateTime</span> <a href="#datatype-dateTime">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_10_dc_date_"><span style="margin-right:0.127cm;">4.3.2.10</span></a><a id="__RefHeading__1415110_253892949"/><a id="element-dc_date"/>&lt;dc:date&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;dc:date&gt;</span> element specifies the date and time when the document was last modified (<span class="Element">&lt;office:meta&gt;</span>), when an annotation was created (<span class="Element">&lt;office:annotation&gt;</span>), when a change was made (<span class="Element">&lt;office:change-info&gt;</span>).</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dc:date&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a> and <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dc:date&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;dc:date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dc:date&gt;</span> element has content of data type <span class="Datatype">dateTime</span> <a href="#datatype-dateTime">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_11_meta_print-date_"><span style="margin-right:0.127cm;">4.3.2.11</span></a><a id="__RefHeading__1415112_253892949"/><a id="element-meta_print-date"/>&lt;meta:print-date&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:print-date&gt;</span> element specifies the date and time when a document was last printed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:print-date&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:print-date&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:print-date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:print-date&gt;</span> element has content of data type <span class="Datatype">dateTime</span> <a href="#datatype-dateTime">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_12_meta_template_"><span style="margin-right:0.127cm;">4.3.2.12</span></a><a id="__RefHeading__1415114_253892949"/><a id="element-meta_template"/>&lt;meta:template&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:template&gt;</span> element specifies a IRI for the document template that was used to create a document. The IRI is specified as an Xlink. See <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:template&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:template&gt;</span> element has the following attributes: <span class="Attribute">meta:date</span> <a href="#attribute-meta_date">19.323</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-meta_template">19.910.24</a>, <span class="Attribute">xlink:title</span> <a href="#attribute-xlink_title">19.912</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:template&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a4_3_2_13_meta_auto-reload_"><span style="margin-right:0.127cm;">4.3.2.13</span></a><a id="__RefHeading__1415116_253892949"/><a id="element-meta_auto-reload"/>&lt;meta:auto-reload&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:auto-reload&gt;</span> element specifies whether a document is reloaded or replaced by another document after a specified period of time has elapsed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:auto-reload&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:auto-reload&gt;</span> element has the following attributes: <span class="Attribute">meta:delay</span> <a href="#attribute-meta_delay">19.324</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-meta_auto-reload">19.910.23</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:auto-reload&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a4_3_2_14_meta_hyperlink-behaviour_"><span style="margin-right:0.127cm;">4.3.2.14</span></a><a id="__RefHeading__1415118_253892949"/><a id="element-meta_hyperlink-behaviour"/>&lt;meta:hyperlink-behaviour&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> element specifies the default behavior for hyperlinks in a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> element has the following attributes: <span class="Attribute">office:target-frame-name</span> <a href="#attribute-office_target-frame-name">19.381</a> and <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a4_3_2_15_dc_language_"><span style="margin-right:0.127cm;">4.3.2.15</span></a><a id="__RefHeading__1415120_253892949"/><a id="element-dc_language"/>&lt;dc:language&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;dc:language&gt;</span> element specifies the default language of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dc:language&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dc:language&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;dc:language&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dc:language&gt;</span> element has content of data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_16_meta_editing-cycles_"><span style="margin-right:0.127cm;">4.3.2.16</span></a><a id="__RefHeading__1415122_253892949"/><a id="element-meta_editing-cycles"/>&lt;meta:editing-cycles&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:editing-cycles&gt;</span> element specifies the number of times a document has been edited. When a document is created, this value is set to 1. Each time a document is saved, the editing-cycles number is incremented by 1.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:editing-cycles&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:editing-cycles&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:editing-cycles&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:editing-cycles&gt;</span> element has content of data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_17_meta_editing-duration_"><span style="margin-right:0.127cm;">4.3.2.17</span></a><a id="__RefHeading__1415124_253892949"/><a id="element-meta_editing-duration"/>&lt;meta:editing-duration&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:editing-duration&gt;</span> element specifies the total time spent editing a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:editing-duration&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:editing-duration&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:editing-duration&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:editing-duration&gt;</span> element has content of data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h4 class="Heading_20_4"><a id="a4_3_2_18_meta_document-statistic_"><span style="margin-right:0.127cm;">4.3.2.18</span></a><a id="__RefHeading__1415126_253892949"/><a id="element-meta_document-statistic"/>&lt;meta:document-statistic&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;meta:document-statistic&gt;</span> element represents statistics about a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:document-statistic&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:document-statistic&gt;</span> element has the following attributes: <span class="Attribute">meta:cell-count</span> <a href="#attribute-meta_cell-count">19.321</a>, <span class="Attribute">meta:character-count</span> <a href="#attribute-meta_character-count">19.322</a>, <span class="Attribute">meta:draw-count</span> <a href="#attribute-meta_draw-count">19.325</a>, <span class="Attribute">meta:frame-count</span> <a href="#attribute-meta_frame-count">19.326</a>, <span class="Attribute">meta:image-count</span> <a href="#attribute-meta_image-count">19.327</a>, <span class="Attribute">meta:non-whitespace-character-count</span> <a href="#attribute-meta_non-whitespace-character-count">19.329</a>, <span class="Attribute">meta:object-count</span> <a href="#attribute-meta_object-count">19.330</a>, <span class="Attribute">meta:ole-object-count</span> <a href="#attribute-meta_ole-object-count">19.331</a>, <span class="Attribute">meta:page-count</span> <a href="#attribute-meta_page-count">19.332</a>, <span class="Attribute">meta:paragraph-count</span> <a href="#attribute-meta_paragraph-count">19.333</a>, <span class="Attribute">meta:row-count</span> <a href="#attribute-meta_row-count">19.334</a>, <span class="Attribute">meta:sentence-count</span> <a href="#attribute-meta_sentence-count">19.335</a>, <span class="Attribute">meta:syllable-count</span> <a href="#attribute-meta_syllable-count">19.336</a>, <span class="Attribute">meta:table-count</span> <a href="#attribute-meta_table-count">19.337</a> and <span class="Attribute">meta:word-count</span> <a href="#attribute-meta_word-count">19.339</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:document-statistic&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a4_3_3_meta_user-defined_"><span style="margin-right:0.127cm;">4.3.3</span></a><a id="__RefHeading__1415128_253892949"/><a id="element-meta_user-defined"/><a id="UserDefinedMetadata"/>&lt;meta:user-defined&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;meta:user-defined&gt;</span> element specifies any additional user-defined metadata for a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:user-defined&gt;</span> element is usable within the following element: <span class="Element">&lt;office:meta&gt;</span> <a href="#element-office_meta">3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:user-defined&gt;</span> element has the following attributes: <span class="Attribute">meta:name</span> <a href="#attribute-meta_name">19.328</a>, <span class="Attribute">meta:value-type</span> <a href="#attribute-meta_value-type">19.338</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:user-defined&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:user-defined&gt;</span> element has character data content, or depending on the value of the <span class="Attribute">meta:value-type</span> attribute content of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>, <span class="Datatype">date</span> <a href="#datatype-date">18.2</a>, <span class="Datatype">dateTime</span> <a href="#datatype-dateTime">18.2</a>, <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>, <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a> or <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h1 class="Heading_20_1"><a id="a5Text_Content"><span style="margin-right:0.127cm;">5</span></a><a id="__RefHeading__1415130_253892949"/><a id="Text_Content"/>Text Content</h1><h2 class="Heading_20_2"><a id="a5_1Headings__Paragraphs_and_Basic_Text_Structure"><span style="margin-right:0.127cm;">5.1</span></a><a id="__RefHeading__1415132_253892949"/>Headings, Paragraphs and Basic Text Structure</h2><h3 class="Heading_20_3"><a id="a5_1_1General"><span style="margin-right:0.127cm;">5.1.1</span></a><a id="__RefHeading__1415134_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:h&gt;</span> and <span class="Element">&lt;text:p&gt;</span> elements represent headings and paragraphs, respectively. </p><p class="Text_20_body">Headings and paragraphs are collectively referred to as <span class="Def">paragraph elements</span>.</p><h3 class="Heading_20_3"><a id="a5_1_2_text_h_"><span style="margin-right:0.127cm;">5.1.2</span></a><a id="__RefHeading__1415136_253892949"/><a id="element-text_h"/>&lt;text:h&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:h&gt;</span> element represents a heading in a document. Headings define the division structure for a document. A chapter or section begins with a heading and extends to the next heading at the same or higher level.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:h&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a>, <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:h&gt;</span> element has the following attributes: <span class="Attribute">text:class-names</span> <a href="#attribute-text_class-names_element-text_h">19.770.2</a>, <span class="Attribute">text:cond-style-name</span> <a href="#attribute-text_cond-style-name">19.776</a>, <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_h">19.809.6</a>, <span class="Attribute">text:is-list-header</span> <a href="#attribute-text_is-list-header">19.816</a>, <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_h">19.844.4</a>, <span class="Attribute">text:restart-numbering</span> <a href="#attribute-text_restart-numbering">19.857</a>, <span class="Attribute">text:start-value</span> <a href="#attribute-text_start-value_element-text_h">19.868.2</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_h">19.874.7</a>, <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:h&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;presentation:date-time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-</span><span class="Element">macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-</span><span class="Element">paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:number&gt;</span> <a href="#element-text_number">6.1.10</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:h&gt;</span> element has mixed content.</p><h3 class="Heading_20_3"><a id="a5_1_3_text_p_"><span style="margin-right:0.127cm;">5.1.3</span></a><a id="__RefHeading__1415138_253892949"/><a id="element-text_p"/>&lt;text:p&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:p&gt;</span> element represents a paragraph, which is the basic unit of text in an OpenDocument file.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:p&gt;</span> element is usable within the following elements: <span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a>, <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>, <span class="Element">&lt;chart:footer&gt;</span> <a href="#element-chart_footer">11.2.3</a>, <span class="Element">&lt;chart:label-separator&gt;</span> <a href="#element-chart_label-separator">17.24</a>, <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>, <span class="Element">&lt;chart:subtitle&gt;</span> <a href="#element-chart_subtitle">11.2.2</a>, <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;style:region-center&gt;</span> <a href="#element-style_region-center">16.15</a>, <span class="Element">&lt;style:region-left&gt;</span> <a href="#element-style_region-left">16.14</a>, <span class="Element">&lt;style:region-right&gt;</span> <a href="#element-style_region-right">16.16</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:error-message&gt;</span> <a href="#element-table_error-message">9.4.7</a>, <span class="Element">&lt;table:help-message&gt;</span> <a href="#element-table_help-message">9.4.6</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a>, <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:p&gt;</span> element has the following attributes: <span class="Attribute">text:class-names</span> <a href="#attribute-text_class-names_element-text_p">19.770.3</a>, <span class="Attribute">text:cond-style-name</span> <a href="#attribute-text_cond-style-name">19.776</a>, <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_p">19.809.8</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_p">19.874.29</a>, <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:p&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;presentation:date-time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:p&gt;</span> element has mixed content.</p><h2 class="Heading_20_2"><a id="a5_2_text_page-sequence_"><span style="margin-right:0.127cm;">5.2</span></a><a id="__RefHeading__1415140_253892949"/><a id="element-text_page-sequence"/>&lt;text:page-sequence&gt;</h2><h3 class="Heading_20_3"><a id="a5_2_1General"><span style="margin-right:0.127cm;">5.2.1</span></a><a id="__RefHeading__1415142_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:page-sequence&gt;</span> element contains at least one <span class="Element">&lt;text:page&gt;</span> element. If there is more than one <span class="Element">&lt;text:page&gt;</span> element, the <span class="Attribute">text:master-page-name</span> attribute of the first <span class="Element">&lt;text:page&gt;</span> element specifies the default master style for a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page-sequence&gt;</span> element is usable within the following element: <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page-sequence&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page-sequence&gt;</span> element has the following child element: <span class="Element">&lt;text:page&gt;</span> <a href="#element-text_page">5.2.2</a>.</p><h3 class="Heading_20_3"><a id="a5_2_2_text_page_"><span style="margin-right:0.127cm;">5.2.2</span></a><a id="__RefHeading__1415144_253892949"/><a id="element-text_page"/>&lt;text:page&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:page&gt;</span> element represents a page in a <span class="Element">&lt;text:page-sequence&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page&gt;</span> element is usable within the following element: <span class="Element">&lt;text:page-sequence&gt;</span> <a href="#element-text_page-sequence">5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page&gt;</span> element has the following attribute: <span class="Attribute">text:master-page-name</span> <a href="#attribute-text_master-page-name">19.833</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a5_3Lists"><span style="margin-right:0.127cm;">5.3</span></a><a id="__RefHeading__1415146_253892949"/><a id="List"/>Lists</h2><h3 class="Heading_20_3"><a id="a5_3_1_text_list_"><span style="margin-right:0.127cm;">5.3.1</span></a><a id="__RefHeading__1415148_253892949"/><a id="element-text_list"/>&lt;text:list&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:list&gt;</span> element represents a list. It may contain a <span class="Element">&lt;text:list-header&gt;</span> element, followed by any number of <span class="Element">&lt;text:list-item&gt;</span> elements. </p><p class="Text_20_body">Lists may be numbered. The numbering may be restarted with a specific numbering at each list item. Lists may also continue numbering from other lists in order to merge lists into a single, discontinuous list. Whether list numbering is displayed or not depends on the list style being used.</p><p class="Text_20_body">Every list has a list level, which is determined by the nesting of the <span class="Element">&lt;text:list&gt;</span> element that represents that list. If a list is not contained in another list, its list level is 1. If a list is contained within another list, the list level of the contained list is the list level of the list in which it is contained incremented by one. If a list is contained in a table cell or text box, its list level returns to 1, even if the table or text box is nested in another list. </p><p class="Text_20_body">Every list with a list level of 1 defines a list and the counter domain for its list items and any sub list of that list. Each sub list starts a counter for its list items and any sub list it may contain. </p><p class="Text_20_body">Every list, including sub lists, may have a list style which is applied to its list items and sub lists. A list style specified for a sub list overrides the list style specified for the list in which the sub list is contained.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a>, <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list&gt;</span> element has the following attributes: <span class="Attribute">text:continue-list</span> <a href="#attribute-text_continue-list">19.780</a>, <span class="Attribute">text:continue-numbering</span> <a href="#attribute-text_continue-numbering">19.781</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_list">19.874.22</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list&gt;</span> element has the following child elements: <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a> and <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>.</p><h3 class="Heading_20_3"><a id="a5_3_2Default_List_Style"><span style="margin-right:0.127cm;">5.3.2</span></a><a id="__RefHeading__1415150_253892949"/><a id="ListDefaultStyle"/>Default List Style </h3><p class="Text_20_body">If a list does not have a <span class="Attribute">style:name</span> attribute and therefore no list style is specified, one of the following actions is taken:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the list is contained in another list, the list style defaults to the style of the surrounding list.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If there is no list style specified for the surrounding list, but the list contains paragraphs that have paragraph styles attached that specify a list style, that list style is used. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>An implementation-dependent default is applied to the list. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">To determine which formatting properties are applied to a list, the list level and its style name are taken into account. <a href="#element-text_list-style">16.30</a>.</p><h3 class="Heading_20_3"><a id="a5_3_3_text_list-header_"><span style="margin-right:0.127cm;">5.3.3</span></a><a id="__RefHeading__1415152_253892949"/><a id="element-text_list-header"/>&lt;text:list-header&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:list-header&gt;</span> element represents a list header and is a type of list item. It contains one or more paragraphs that are displayed before a list. The paragraphs are formatted as list items but they do not have a preceding number or bullet.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list-header&gt;</span> element is usable within the following element: <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list-header&gt;</span> element has the following attribute: <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list-header&gt;</span> element has the following child elements: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:number&gt;</span> <a href="#element-text_number">6.1.10</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a> and <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>.</p><h3 class="Heading_20_3"><a id="a5_3_4_text_list-item_"><span style="margin-right:0.127cm;">5.3.4</span></a><a id="__RefHeading__1415154_253892949"/><a id="element-text_list-item"/>&lt;text:list-item&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:list-item&gt;</span> element represents an item in a list.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list-item&gt;</span> element is usable within the following element: <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list-item&gt;</span> element has the following attributes: <span class="Attribute">text:start-value</span> <a href="#attribute-text_start-value_element-text_list-item">19.868.3</a>, <span class="Attribute">text:style-override</span> <a href="#attribute-text_style-override">19.875</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list-item&gt;</span> element has the following child elements: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:number&gt;</span> <a href="#element-text_number">6.1.10</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a> and <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>.</p><h3 class="Heading_20_3"><a id="a5_3_5List_Item_Style_Rules"><span style="margin-right:0.127cm;">5.3.5</span></a><a id="__RefHeading__1415156_253892949"/><a id="ListItemStyleRules"/>List Item Style Rules</h3><p class="Text_20_body">The first line in a list item is preceded by a bullet or number, depending on the list style assigned to the list. If a list item starts another list and does not contain any text, no bullet or number is displayed.</p><p class="Text_20_body">The list style which is applied to a list need not contain a list level style for the list level the list item specifies. The following rules are applied to determine the list level style in this case</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the list is contained in another list, the list level style defined in the list style which is applied to the surrounding list for the level of the item is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the list is not contained in another list or if no list level style is not defined by any of the list styles assigned to surrounding lists, the list level style defined by the default list style is used See <a href="#ListDefaultStyle">5.3.2</a>.<span class="odfLiEnd"/> </p></li></ul><h3 class="Heading_20_3"><a id="a5_3_6_text_numbered-paragraph_"><span style="margin-right:0.127cm;">5.3.6</span></a><a id="__RefHeading__1415158_253892949"/><a id="element-text_numbered-paragraph"/>&lt;text:numbered-paragraph&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:numbered-paragraph&gt;</span> element numbers an individual paragraph, as if it was part of a list at a specified level.</p><p class="Note"><span class="Note_20_Label">Note: </span>Numbered paragraphs form an equivalent, alternative way of specifying lists. A list in <span class="Element">&lt;text:list&gt;</span> representation can be converted into a list in <span class="Element">&lt;text:numbered-paragraph&gt;</span> representation and vice versa.</p><p class="Text_20_body">A numbered paragraph can be assigned a list level. A numbered paragraph is equivalent to a list nested to the given level, containing one list item with one paragraph. If no level is given, the numbered paragraph is interpreted as being on level 1.</p><p class="Text_20_body">If a list style is not specified for a numbered paragraph, the list style of the previous numbered paragraph in the same sublist is used. If this paragraph is the first in the sublist, the list style of the previous paragraph in the higher list level is used. If there is no specified list style, the default list style is applied. <a href="#ListDefaultStyle">5.3.2</a></p><p class="Text_20_body">If a list level style is missing in the applied list style of a numbered paragraph, the same rules are applied to determine this list level style as for list items.</p><p class="Text_20_body">The text of a formatted number can be included in a <span class="Element">&lt;text:number&gt;</span> element.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> This text can be used by consumers that do not support numbering.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:numbered-paragraph&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:numbered-paragraph&gt;</span> element has the following attributes: <span class="Attribute">text:continue-numbering</span> <a href="#attribute-text_continue-numbering">19.781</a>, <span class="Attribute">text:level</span> <a href="#attribute-text_level">19.828</a>, <span class="Attribute">text:list-id</span> <a href="#attribute-text_list-id">19.829</a>, <span class="Attribute">text:start-value</span> <a href="#attribute-text_start-value_element-text_numbered-paragraph">19.868.6</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_numbered-paragraph">19.874.25</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:numbered-paragraph&gt;</span> element has the following child elements: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:number&gt;</span> <a href="#element-text_number">6.1.10</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a5_3_7Numbered_Paragraph_Style_Rules"><span style="margin-right:0.127cm;">5.3.7</span></a><a id="__RefHeading__1415160_253892949"/>Numbered Paragraph Style Rules</h3><p class="Text_20_body">If a list style is not specified for a numbered paragraph, the list style of the previous numbered paragraph in the same list is used. If this paragraph is the first in the list, the list style of the previous numbered paragraph in a higher list level is used. If there is no specified style available, the default style is applied. <a href="#ListDefaultStyle">5.3.2</a></p><p class="Text_20_body">If a list level style is missing in the applied list style of a numbered paragraph, the rules for styles on list items are applied. <a href="#ListItemStyleRules">5.3.5</a></p><h2 class="Heading_20_2"><a id="a5_4_text_section_"><span style="margin-right:0.127cm;">5.4</span></a><a id="__RefHeading__1415162_253892949"/><a id="element-text_section"/>&lt;text:section&gt;</h2><h3 class="Heading_20_3"><a id="a5_4_1General"><span style="margin-right:0.127cm;">5.4.1</span></a><a id="__RefHeading__1415164_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:section&gt;</span> element represents a named region of content in a document. </p><p class="Text_20_body">Sections specify formatting properties for a region of text or  text that is automatically acquired from an external data source or document, or another text section.</p><p class="Text_20_body">Sections support two ways of linking to external content. If a section is linked to another document, the link can be through one of the following:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A resource identified by an XLink, represented by a <span class="Element">&lt;text:section-source&gt;</span> element<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Dynamic Data Exchange (DDE), represented by a <span class="Element">&lt;office:dde-source&gt;</span> element<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Element">&lt;text:section-source&gt;</span> or <span class="Element">&lt;office:dde-source&gt;</span> elements occur only in the alternative and then as the first child element of a <span class="Element">&lt;text:section&gt;</span> element. </p><p class="Text_20_body">A section that links to external content should contain a full representation of the external content that appears in the section. </p><p class="Text_20_body">Linked external content may have an arbitrary file format. Consumers may process links to external content *and the external content itself to update the content that appears in a section. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:section&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:section&gt;</span> element has the following attributes: <span class="Attribute">text:condition</span> <a href="#attribute-text_condition_element-text_section">19.777.7</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_section">19.796.6</a>, <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_section">19.835.14</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_section">19.874.32</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:section&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a>, <span class="Element">&lt;text:soft-</span><span class="Element">page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h3 class="Heading_20_3"><a id="a5_4_2_text_section-source_"><span style="margin-right:0.127cm;">5.4.2</span></a><a id="__RefHeading__1415166_253892949"/><a id="element-text_section-source"/>&lt;text:section-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:section-source&gt;</span> element indicates that a section is a linked section.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:section-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:section-source&gt;</span> element has the following attributes: <span class="Attribute">text:filter-name</span> <a href="#attribute-text_filter-name">19.802</a>, <span class="Attribute">text:section-name</span> <a href="#attribute-text_section-name">19.861</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-text_section-source">19.910.37</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:section-source&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a5_5Change_Tracking"><span style="margin-right:0.127cm;">5.5</span></a><a id="__RefHeading__1415168_253892949"/><a id="TextChangeTracking"/>Change Tracking</h2><h3 class="Heading_20_3"><a id="a5_5_1_text_tracked-changes_"><span style="margin-right:0.127cm;">5.5.1</span></a><a id="__RefHeading__1415170_253892949"/><a id="element-text_tracked-changes"/>&lt;text:tracked-changes&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:tracked-changes&gt;</span> element acts as a container for <span class="Element">&lt;text:changed-region&gt;</span> elements that represent changes in a certain scope of an OpenDocument document. This scope is the element in which the <span class="Element">&lt;text:tracked-changes&gt;</span> element occurs. Changes in this scope shall be tracked by <span class="Element">&lt;text:changed-region&gt;</span> elements contained in the <span class="Element">&lt;text:tracked-changes&gt;</span> element in this scope.</p><p class="Text_20_body">If a <span class="Element">&lt;text:tracked-changes&gt;</span> element is absent, there are no tracked changes in the corresponding scope. In this case, all change mark elements (<a href="#a_5_5_7change-marks">5.5.7</a>) in this scope shall be ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:tracked-changes&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:tracked-changes&gt;</span> element has the following attribute: <span class="Attribute">text:track-changes</span> <a href="#attribute-text_track-changes">19.883</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:tracked-changes&gt;</span> element has the following child element: <span class="Element">&lt;text:changed-region&gt;</span> <a href="#element-text_changed-region">5.5.2</a>.</p><h3 class="Heading_20_3"><a id="a5_5_2_text_changed-region_"><span style="margin-right:0.127cm;">5.5.2</span></a><a id="__RefHeading__1415172_253892949"/><a id="element-text_changed-region"/>&lt;text:changed-region&gt;</h3><p class="Text_20_body">Each <span class="Element">&lt;text:changed-region&gt;</span> element contains a single element, one of <span class="Element">&lt;text:insertion&gt;</span>, <span class="Element">&lt;text:deletion&gt;</span>, or <span class="Element">&lt;text:format-change&gt;</span> that corresponds to a change being tracked within the scope of the <span class="Element">&lt;text:tracked-changes&gt;</span> element that contains the <span class="Element">&lt;text:changed-region&gt;</span> instance. </p><p class="Text_20_body">The <span class="Attribute">xml:id</span> attribute of the <span class="Element">&lt;text:changed-region&gt;</span> is referenced from the <span class="Element">&lt;text:change&gt;</span>, <span class="Element">&lt;text:change-start&gt;</span> and <span class="Element">&lt;text:change-end&gt;</span> elements that identify where the change applies to markup in the scope of the <span class="Element">&lt;text:tracked-changes&gt;</span> element.</p><p class="Text_20_body">A <span class="Element">&lt;text:changed-region&gt;</span> can be referenced by more than one change, but the corresponding referencing change mark elements shall be of the same change type - insertion, format change or deletion.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:changed-region&gt;</span> element is usable within the following element: <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:changed-region&gt;</span> element has the following attributes: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_changed-region">19.809.5</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:changed-region&gt;</span> element has the following child elements: <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:format-change&gt;</span> <a href="#element-text_format-change">5.5.5</a> and <span class="Element">&lt;text:insertion&gt;</span> <a href="#element-text_insertion">5.5.3</a>.</p><h3 class="Heading_20_3"><a id="a5_5_3_text_insertion_"><span style="margin-right:0.127cm;">5.5.3</span></a><a id="__RefHeading__1415174_253892949"/><a id="element-text_insertion"/>&lt;text:insertion&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:insertion&gt;</span> element contains the information that identifies the person responsible for a change and the date of that change. This information may also contain one or more <span class="Element">&lt;text:p&gt;</span> elements which contains a comment on the insertion. </p><p class="Text_20_body">The <span class="Element">&lt;text:insertion&gt;</span> element's parent <span class="Element">&lt;text:changed-region&gt;</span> element has an <span class="Attribute">xml:id</span> or <span class="Attribute">text:id</span> attribute, the value of which binds that parent element to the <span class="Attribute">text:change-id</span> attribute on the <span class="Element">&lt;text:change-start&gt;</span> and <span class="Element">&lt;text:change-end&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:insertion&gt;</span> element is usable within the following element: <span class="Element">&lt;text:changed-region&gt;</span> <a href="#element-text_changed-region">5.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:insertion&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:insertion&gt;</span> element has the following child element: <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>.</p><h3 class="Heading_20_3"><a id="a5_5_4_text_deletion_"><span style="margin-right:0.127cm;">5.5.4</span></a><a id="__RefHeading__1415176_253892949"/><a id="element-text_deletion"/>&lt;text:deletion&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:deletion&gt;</span> element contains information that identifies the person responsible for a deletion and the date of that deletion. This information may also contain one or more <span class="Element">&lt;text:p&gt;</span> elements which contains a comment on the deletion. The <span class="Element">&lt;text:deletion&gt;</span> element may also contain content that was deleted while change tracking was enabled. The position where the text was deleted is marked by a <span class="Element">&lt;text:change&gt;</span> element.</p><p class="Text_20_body">Deleted text is contained in a paragraph element. To reconstruct the original text, the paragraph containing the deleted text is merged with its surrounding paragraph or heading element.</p><p class="Text_20_body">To reconstruct the text before a deletion took place:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the change mark is inside a paragraph, insert the content that was deleted, but remove all leading start tags up to and including the first <span class="Element">&lt;text:p&gt;</span> element and all trailing end tags up to and including the last <span class="Source_20_Text">&lt;/text:p&gt;</span> or <span class="Source_20_Text">&lt;/text:h&gt;</span> element. If the last trailing element is a <span class="Source_20_Text">&lt;/text:h&gt;</span>, change the end tag <span class="Source_20_Text">&lt;/text:p&gt;</span> following this insertion to a <span class="Source_20_Text">&lt;/text:h&gt;</span> element. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the change mark is inside a heading, insert the content that was deleted, but remove all leading start tags up to and including the first <span class="Element">&lt;text:h&gt;</span> element and all trailing end tags up to and including the last <span class="Source_20_Text">&lt;/text:h&gt;</span> or <span class="Source_20_Text">&lt;/text:p&gt;</span> element. If the last trailing element is a <span class="Source_20_Text">&lt;/text:p&gt;</span>, change the end tag <span class="Source_20_Text">&lt;/text:h&gt;</span> following this insertion to a <span class="Source_20_Text">&lt;/text:p&gt;</span> element. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Otherwise, copy the text content of the <span class="Element">&lt;text:deletion&gt;</span> element in place of the change mark.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:deletion&gt;</span> element is usable within the following element: <span class="Element">&lt;text:changed-region&gt;</span> <a href="#element-text_changed-region">5.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:deletion&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:deletion&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h3 class="Heading_20_3"><a id="a5_5_5_text_format-change_"><span style="margin-right:0.127cm;">5.5.5</span></a><a id="__RefHeading__1415178_253892949"/><a id="element-text_format-change"/>&lt;text:format-change&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:format-change&gt;</span> element represents any change in formatting attributes. The region where the change took place is marked by <span class="Element">&lt;text:change-start&gt;</span>, <span class="Element">&lt;text:change-end&gt;</span> or <span class="Element">&lt;text:change&gt;</span> elements. </p><p class="Note"><span class="Note_20_Label">Note:</span> This element does not contain formatting changes that have taken place.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:format-change&gt;</span> element is usable within the following element: <span class="Element">&lt;text:changed-region&gt;</span> <a href="#element-text_changed-region">5.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:format-change&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:format-change&gt;</span> element has the following child element: <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>.</p><h3 class="Heading_20_3"><a id="a5_5_6_office_change-info_"><span style="margin-right:0.127cm;">5.5.6</span></a><a id="__RefHeading__1415180_253892949"/><a id="element-office_change-info"/>&lt;office:change-info&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:change-info&gt;</span> element represents who made a change and when. It may also contain a comment (one or more <span class="Element">&lt;text:p&gt;</span> elements) on the change.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:change-info&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a>, <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:format-change&gt;</span> <a href="#element-text_format-change">5.5.5</a> and <span class="Element">&lt;text:insertion&gt;</span> <a href="#element-text_insertion">5.5.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:change-info&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:change-info&gt;</span> element has the following child elements: <span class="Element">&lt;dc:creator&gt;</span> <a href="#element-dc_creator">4.3.2.7</a>, <span class="Element">&lt;dc:date&gt;</span> <a href="#element-dc_date">4.3.2.10</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a5_5_7Change_Marks"><span style="margin-right:0.127cm;">5.5.7</span></a><a id="__RefHeading__1415182_253892949"/><a id="a_5_5_7change-marks"/>Change Marks</h3><h4 class="Heading_20_4"><a id="a5_5_7_1General"><span style="margin-right:0.127cm;">5.5.7.1</span></a><a id="__RefHeading__440374_826425813"/>General</h4><p class="Text_20_body">The change mark elements mark start, end and positions in a text where a change has occurred. </p><p class="Text_20_body">These elements use the <span class="Attribute">text:change-id</span> attribute to link to <span class="Element">&lt;text:changed-region&gt;</span> elements that contain the change information. </p><h4 class="Heading_20_4"><a id="a5_5_7_2_text_change-start_"><span style="margin-right:0.127cm;">5.5.7.2</span></a><a id="__RefHeading__1415184_253892949"/><a id="element-text_change-start"/>&lt;text:change-start&gt;</h4><p class="Text_20_body"> The <span class="Element">&lt;text:change-start&gt;</span> element marks the start of a region with content where text has been inserted or the format has been changed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:change-start&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:change-start&gt;</span> element has the following attribute: <span class="Attribute">text:change-id</span> <a href="#attribute-text_change-id">19.766</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:change-start&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a5_5_7_3_text_change-end_"><span style="margin-right:0.127cm;">5.5.7.3</span></a><a id="__RefHeading__1415186_253892949"/><a id="element-text_change-end"/>&lt;text:change-end&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:change-end&gt;</span> element marks the end of a region with content where text has been inserted or the format has been changed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:change-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:change-end&gt;</span> element has the following attribute: <span class="Attribute">text:change-id</span> <a href="#attribute-text_change-id">19.766</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:change-end&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a5_5_7_4_text_change_"><span style="margin-right:0.127cm;">5.5.7.4</span></a><a id="__RefHeading__1415188_253892949"/><a id="element-text_change"/>&lt;text:change&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:change&gt;</span> element marks a position in an empty region where text has been deleted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:change&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:change&gt;</span> element has the following attribute: <span class="Attribute">text:change-id</span> <a href="#attribute-text_change-id">19.766</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:change&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a5_6_text_soft-page-break_"><span style="margin-right:0.127cm;">5.6</span></a><a id="__RefHeading__1415190_253892949"/><a id="element-text_soft-page-break"/>&lt;text:soft-page-break&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:soft-page-break&gt;</span> element represents a soft page break within or between paragraph elements.</p><p class="Text_20_body">As a child element of a <span class="Element">&lt;table:table&gt;</span> element it represents a soft page break between two table rows. It may appear in front of a <span class="Element">&lt;table:table-row&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:soft-page-break&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;table:table-header-rows&gt;</span> <a href="#element-table_table-header-rows">9.1.7</a>, <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>, <span class="Element">&lt;table:table-rows&gt;</span> <a href="#element-table_table-rows">9.1.8</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a>, <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:soft-page-break&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:soft-page-break&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a5_7Document_Declarations"><span style="margin-right:0.127cm;">5.7</span></a><a id="__RefHeading__1415192_253892949"/>Document Declarations</h2><p class="Text_20_body">The following declaration elements appear before the main content element of a document: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:variable-decl&gt;</span> – declarations for variable fields. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:user-field-decl&gt;</span> – declarations for user-defined fields. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:sequence-decl&gt;</span> – declarations for sequence fields.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:dde-connection&gt;</span> – declarations for DDE fields and DDE sections.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> – declaration for generation of alphabetical indexes. <span class="odfLiEnd"/> </p></li></ul><h1 class="Heading_20_1"><a id="a6Paragraph_Elements_Content"><span style="margin-right:0.127cm;">6</span></a><a id="__RefHeading__1415194_253892949"/><a id="Paragarph_Content"/>Paragraph Elements Content</h1><h2 class="Heading_20_2"><a id="a6_1Basic_Text_Content"><span style="margin-right:0.127cm;">6.1</span></a><a id="__RefHeading__1415196_253892949"/>Basic Text Content</h2><h3 class="Heading_20_3"><a id="a6_1_1General"><span style="margin-right:0.127cm;">6.1.1</span></a><a id="__RefHeading__1415198_253892949"/><a id="character-content"/>General</h3><p class="Text_20_body">The paragraph elements <span class="Element">&lt;text:p&gt;</span> and <span class="Element">&lt;text:h&gt;</span> and their descendant elements contain the text content of any document. The <span class="Def">character content</span> of a paragraph consists of the character data of the paragraph element and the character data of its descendant elements concatenated in document order, with the following exceptions:</p><p class="Text_20_body"> Character data contained in the following elements or their descendant elements are not included in the character content of a paragraph:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:note-body&gt;</span>. <a href="#element-text_note-body">6.3.4</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:ruby-text&gt;</span>. <a href="#element-text_meta-field">7.5.19</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;office:annotation&gt;</span>. <a href="#element-office_annotation">14.1</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Drawing shape and frame elements defined in sections <a href="#drawing_shapes_section">10.3</a>, <a href="#Frames">10.4</a>, <a href="#a_3D_Shapes">10.5</a> and <a href="#Custom_Shape">10.6</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"><span class="Note_20_Label">Note:</span> This should significantly ease transformations into other formats, since transformations need not interpret most of the descendant elements of a paragraph element to obtain the character content of a paragraph.</p><p class="Text_20_body">The phrase "document order" when used with reference to an OpenDocument document instance is defined by Section 5.0 Data Model <a title="XML Path Language (XPath) Version 1.0" href="http://www.w3.org/TR/1999/REC-xpath-19991116">[XPath]</a>. </p><h3 class="Heading_20_3"><a id="a6_1_2White_Space_Characters"><span style="margin-right:0.127cm;">6.1.2</span></a><a id="__RefHeading__1415200_253892949"/><a id="White-space_Characters"/>White Space Characters</h3><p class="Text_20_body">Consumers shall collapse white space characters that occur in </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a <span class="Element">&lt;text:p&gt;</span> or <span class="Element">&lt;text:h&gt;</span> element (so called paragraph elements), and <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>in their descendant elements, if the OpenDocument schema permits the inclusion of character data for the element itself and all its ancestor elements up to the paragraph element.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Collapsing white space characters is defined by the following algorithm:</p><ol><li><p class="P19" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">1)</span>The following <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters are replaced by a “ “ (U+0020, SPACE) character:<span class="odfLiEnd"/> </p><ul><li><p class="P19" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:1cm"></span>HORIZONTAL TABULATION (U+0009)<span class="odfLiEnd"/> </p></li><li><p class="P19" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:1cm"></span>CARRIAGE RETURN (U+000D)<span class="odfLiEnd"/> </p></li><li><p class="P19" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:1cm"></span>LINE FEED (U+000A)<span class="odfLiEnd"/> </p></li></ul></li><li><p class="P19" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">2)</span>The character data of the paragraph element and of all descendant elements for which the OpenDocument schema permits the inclusion of character data for the element itself and all its ancestor elements up to the paragraph element, is concatenated in document order.<span class="odfLiEnd"/> </p></li><li><p class="P19" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">3)</span>Leading “ “ (U+0020, SPACE) characters at the start of the resulting text and trailing SPACE characters at the end of the resulting text are removed.<span class="odfLiEnd"/> </p></li><li><p class="P19" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">4)</span>Sequences of “ “ (U+0020, SPACE) characters are replaced by a single “ “ (U+0020, SPACE) character. <span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a6_1_3_text_s_"><span style="margin-right:0.127cm;">6.1.3</span></a><a id="__RefHeading__1415202_253892949"/><a id="element-text_s"/>&lt;text:s&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:s&gt;</span> element is used to represent the <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character “ “ (U+0020, SPACE).</p><p class="Text_20_body">This element shall be used to represent the second and all following “ “ (U+0020, SPACE) characters in a sequence of “ “ (U+0020, SPACE) characters.</p><p class="Note"><span class="Note_20_Label">Note:</span> It is not an error if the character preceding the element is not a white space character, but it is good practice to use this element only for the second and all following “ “ (U+0020, SPACE) characters in a sequence. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:s&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:s&gt;</span> element has the following attribute: <span class="Attribute">text:c</span> <a href="#attribute-text_c">19.763</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:s&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a6_1_4_text_tab_"><span style="margin-right:0.127cm;">6.1.4</span></a><a id="__RefHeading__1415204_253892949"/><a id="element-text_tab"/><a id="Tab_Character"/>&lt;text:tab&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:tab&gt;</span> element represents the <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> tab character (HORIZONTAL TABULATION, U+0009). A <span class="Element">&lt;text:tab&gt;</span> element specifies that content immediately following it should begin at the next tab stop.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:tab&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:tab&gt;</span> element has the following attribute: <span class="Attribute">text:tab-ref</span> <a href="#attribute-text_tab-ref">19.877</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:tab&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a6_1_5_text_line-break_"><span style="margin-right:0.127cm;">6.1.5</span></a><a id="__RefHeading__1415206_253892949"/><a id="element-text_line-break"/>&lt;text:line-break&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:line-break&gt;</span> element represents a line break.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:line-break&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:line-break&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:line-break&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a6_1_6Soft_Hyphens__Hyphens__and_Non-breaking_Spaces"><span style="margin-right:0.127cm;">6.1.6</span></a><a id="__RefHeading__1415208_253892949"/>Soft Hyphens, Hyphens, and Non-breaking Spaces</h3><p class="Text_20_body">Soft hyphens, hyphens, and non-breaking blanks are represented by <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters.</p><p class="Table">Table <a id="refTable7"/>8 - Unicode characters</p><table border="0" cellspacing="0" cellpadding="0" class="SpecialUnicodeharacters"><colgroup><col width="244"/><col width="164"/></colgroup><tr class="SpecialUnicodeharacters1"><td style="text-align:left;width:2.2in; " class="SpecialUnicodeharacters_A1"><p class="Table_20_Heading">The <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character...</p></td><td style="text-align:left;width:1.4771in; " class="SpecialUnicodeharacters_B1"><p class="Table_20_Heading">Represents...</p></td></tr><tr><td style="text-align:left;width:2.2in; " class="SpecialUnicodeharacters_A2"><p class="Table_20_Contents">SOFT HYPHEN (U+00AD)</p></td><td style="text-align:left;width:1.4771in; " class="SpecialUnicodeharacters_B2"><p class="Table_20_Contents">soft hyphens</p></td></tr><tr class="SpecialUnicodeharacters1"><td style="text-align:left;width:2.2in; " class="SpecialUnicodeharacters_A2"><p class="Table_20_Contents">NON-BREAKING HYPHEN (U+2011)</p></td><td style="text-align:left;width:1.4771in; " class="SpecialUnicodeharacters_B2"><p class="Table_20_Contents">non-breaking hyphens</p></td></tr><tr class="SpecialUnicodeharacters1"><td style="text-align:left;width:2.2in; " class="SpecialUnicodeharacters_A2"><p class="Table_20_Contents">NO-BREAK SPACE (U+00A0)</p></td><td style="text-align:left;width:1.4771in; " class="SpecialUnicodeharacters_B2"><p class="Table_20_Contents">non-breaking spaces</p></td></tr></table><h3 class="Heading_20_3"><a id="a6_1_7_text_span_"><span style="margin-right:0.127cm;">6.1.7</span></a><a id="__RefHeading__1415210_253892949"/><a id="element-text_span"/>&lt;text:span&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:span&gt;</span> element represents the application of a style to the character data of a portion of text. The content of this element is the text which uses that text style.</p><p class="Text_20_body">The <span class="Element">&lt;text:span&gt;</span> element can be nested.</p><p class="Text_20_body">White space characters contained in this element are collapsed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:span&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:span&gt;</span> element has the following attributes: <span class="Attribute">text:class-names</span> <a href="#attribute-text_class-names_element-text_span">19.770.4</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_span">19.874.33</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:span&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;presentation:date-time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-</span><span class="Element">country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:span&gt;</span> element has mixed content.</p><h3 class="Heading_20_3"><a id="a6_1_8_text_a_"><span style="margin-right:0.127cm;">6.1.8</span></a><a id="__RefHeading__1415212_253892949"/><a id="element-text_a"/>&lt;text:a&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:a&gt;</span> element represents a hyperlink.</p><p class="Text_20_body">The anchor of a hyperlink is composed of the character data contained by the <span class="Element">&lt;text:a&gt;</span> element and any of its descendant elements which constitute the character data of the paragraph which contains the <span class="Element">&lt;text:a&gt;</span> element. <a href="#character-content">6.1.1</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:a&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:a&gt;</span> element has the following attributes: <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-text_a">19.376.9</a>, <span class="Attribute">office:target-frame-name</span> <a href="#attribute-office_target-frame-name">19.381</a>, <span class="Attribute">office:title</span> <a href="#attribute-office_title">19.383</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_a">19.874.2</a>, <span class="Attribute">text:visited-style-name</span> <a href="#attribute-text_visited-style-name">19.901</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-text_a">19.910.33</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:a&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;presentation:date-time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-</span><span class="Element">next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-</span><span class="Element">macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-</span><span class="Element">paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:a&gt;</span> element has mixed content.</p><h3 class="Heading_20_3"><a id="a6_1_9_text_meta_"><span style="margin-right:0.127cm;">6.1.9</span></a><a id="__RefHeading__1415214_253892949"/><a id="element-text_meta"/>&lt;text:meta&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:meta&gt;</span> element represents portions of text that have in content metadata attached. See <a href="#attribute-xhtml_about">19.905</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:meta&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:meta&gt;</span> element has the following attributes: <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:meta&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;presentation:date-</span><span class="Element">time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:meta&gt;</span> element has mixed content.</p><h3 class="Heading_20_3"><a id="a6_1_10_text_number_"><span style="margin-right:0.127cm;">6.1.10</span></a><a id="__RefHeading__1415216_253892949"/><a id="element-text_number"/>&lt;text:number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:number&gt;</span> element contains the text of a formatted number which is present when a list style is applied to an element whose corresponding list level style specifies that the list label is a number. This text may be used by consumers that do not support the automatic generation of numbering but should be ignored by consumers that do support it. </p><p class="Text_20_body">This element has no attributes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:number&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a>, <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a> and <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:number&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:number&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:number&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a6_2Bookmarks_and_References"><span style="margin-right:0.127cm;">6.2</span></a><a id="__RefHeading__1415218_253892949"/>Bookmarks and References</h2><h3 class="Heading_20_3"><a id="a6_2_1Bookmarks"><span style="margin-right:0.127cm;">6.2.1</span></a><a id="__RefHeading__1415220_253892949"/>Bookmarks</h3><h4 class="Heading_20_4"><a id="a6_2_1_1General"><span style="margin-right:0.127cm;">6.2.1.1</span></a><a id="__RefHeading__1415222_253892949"/>General</h4><p class="Text_20_body">Bookmarks can either mark a text position or a text range. A text position is a position inside the text content of a document. A text range starts at any text position and ends at another text position.</p><p class="Text_20_body">Bookmarks which mark a text range support overlapping references. </p><h4 class="Heading_20_4"><a id="a6_2_1_2_text_bookmark_"><span style="margin-right:0.127cm;">6.2.1.2</span></a><a id="__RefHeading__1415224_253892949"/><a id="element-text_bookmark"/>&lt;text:bookmark&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:bookmark&gt;</span> element marks a text position. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bookmark&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bookmark&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_bookmark">19.835.4</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bookmark&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a6_2_1_3_text_bookmark-start_"><span style="margin-right:0.127cm;">6.2.1.3</span></a><a id="__RefHeading__1415226_253892949"/><a id="element-text_bookmark-start"/>&lt;text:bookmark-start&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:bookmark-start&gt;</span> element marks the start position of a bookmark in a text range.</p><p class="Text_20_body">For every <span class="Element">&lt;text:bookmark-start&gt;</span> element, there shall be a <span class="Element">&lt;text:bookmark-end&gt;</span> element in the same document using the same value for the <span class="Attribute">text:name</span> attribute. Every <span class="Element">&lt;text:bookmark-start&gt;</span> element shall precede the <span class="Element">&lt;text:bookmark-end&gt;</span> element with the same value for its <span class="Attribute">text:name</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bookmark-start&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bookmark-start&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_bookmark-start">19.835.6</a>, <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bookmark-start&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a6_2_1_4_text_bookmark-end_"><span style="margin-right:0.127cm;">6.2.1.4</span></a><a id="__RefHeading__1415228_253892949"/><a id="element-text_bookmark-end"/>&lt;text:bookmark-end&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:bookmark-end&gt;</span> element marks the end position of a bookmark in a text range.</p><p class="Text_20_body">For every <span class="Element">&lt;text:bookmark-end&gt;</span> element, there shall be a preceding <span class="Element">&lt;text:bookmark-start&gt;</span> element in the same document using the same value for the <span class="Attribute">text:name</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bookmark-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bookmark-end&gt;</span> element has the following attribute: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_bookmark-end">19.835.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bookmark-end&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a6_2_2References"><span style="margin-right:0.127cm;">6.2.2</span></a><a id="__RefHeading__1415230_253892949"/><a id="Reference_Marks"/>References</h3><h4 class="Heading_20_4"><a id="a6_2_2_1General"><span style="margin-right:0.127cm;">6.2.2.1</span></a><a id="__RefHeading__1415232_253892949"/>General</h4><p class="Text_20_body">There are two types of reference marks:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A point reference<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>A point reference marks a position in text and is represented by a single <span class="Element">&lt;text:reference-mark&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A range reference<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>A range reference marks a range of characters in text and is represented by two elements; a <span class="Element">&lt;text:reference-mark-start&gt;</span> element to mark the start of the range and a following <span class="Element">&lt;text:reference-mark-end&gt;</span> element to mark the end of the range.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Every reference is identified by the value of its <span class="Attribute">text:name</span> attribute, which shall be unique. In a range reference, the start and end elements shall use the same attribute value.</p><p class="Text_20_body">Range references support overlapping references. </p><h4 class="Heading_20_4"><a id="a6_2_2_2_text_reference-mark_"><span style="margin-right:0.127cm;">6.2.2.2</span></a><a id="__RefHeading__1415234_253892949"/><a id="element-text_reference-mark"/>&lt;text:reference-mark&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:reference-mark&gt;</span> element represents a point reference.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:reference-mark&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:reference-mark&gt;</span> element has the following attribute: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_reference-mark">19.835.11</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:reference-mark&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a6_2_2_3_text_reference-mark-start_"><span style="margin-right:0.127cm;">6.2.2.3</span></a><a id="__RefHeading__1415236_253892949"/><a id="element-text_reference-mark-start"/>&lt;text:reference-mark-start&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:reference-mark-start&gt;</span> element represent the start of a range reference.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:reference-mark-start&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:reference-mark-start&gt;</span> element has the following attribute: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_reference-mark-start">19.835.13</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:reference-mark-start&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a6_2_2_4_text_reference-mark-end_"><span style="margin-right:0.127cm;">6.2.2.4</span></a><a id="__RefHeading__1415238_253892949"/><a id="element-text_reference-mark-end"/>&lt;text:reference-mark-end&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:reference-mark-end&gt;</span> element represent the end of a range reference.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:reference-mark-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:reference-mark-end&gt;</span> element has the following attribute: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_reference-mark-end">19.835.12</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:reference-mark-end&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a6_3Notes"><span style="margin-right:0.127cm;">6.3</span></a><a id="__RefHeading__1415240_253892949"/><a id="text-notes"/>Notes</h2><h3 class="Heading_20_3"><a id="a6_3_1General"><span style="margin-right:0.127cm;">6.3.1</span></a><a id="__RefHeading__1415242_253892949"/>General</h3><p class="Text_20_body">Notes consist of a <span class="Element">&lt;text:note&gt;</span> element which occurs in the text stream at the position to which the note is anchored. The numbering and rendering of notes is specified by a <span class="Element">&lt;text:notes-configuration&gt;</span> element, which occurs inside an <span class="Element">&lt;office:styles&gt;</span> element.</p><h3 class="Heading_20_3"><a id="a6_3_2_text_note_"><span style="margin-right:0.127cm;">6.3.2</span></a><a id="__RefHeading__1415244_253892949"/><a id="element-text_note"/>&lt;text:note&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:note&gt;</span> element represents text notes which are attached to a text position.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:note&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:note&gt;</span> element has the following attributes: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_note">19.809.7</a> and <span class="Attribute">text:note-class</span> <a href="#attribute-text_note-class">19.837</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:note&gt;</span> element has the following child elements: <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:note-citation&gt;</span> <a href="#element-text_note-citation">6.3.3</a>.</p><h3 class="Heading_20_3"><a id="a6_3_3_text_note-citation_"><span style="margin-right:0.127cm;">6.3.3</span></a><a id="__RefHeading__1415246_253892949"/><a id="element-text_note-citation"/>&lt;text:note-citation&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:note-citation&gt;</span> element contains a citation, either as a formatted number or a string.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:note-citation&gt;</span> element is usable within the following element: <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:note-citation&gt;</span> element has the following attribute: <span class="Attribute">text:label</span> <a href="#attribute-text_label">19.826</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:note-citation&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:note-citation&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a6_3_4_text_note-body_"><span style="margin-right:0.127cm;">6.3.4</span></a><a id="__RefHeading__1415248_253892949"/><a id="element-text_note-body"/>&lt;text:note-body&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:note-body&gt;</span> element contains the content of a note. It does not have any attributes.</p><p class="Note"><span class="Note_20_Label">Note:</span> The schema allows for the inclusion of notes into the note body. While this may be reasonable for note types, it is not reasonable for footnotes and endnotes. Conforming consumers need not support notes inside notes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:note-body&gt;</span> element is usable within the following element: <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:note-body&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:note-body&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h2 class="Heading_20_2"><a id="a6_4_text_ruby_"><span style="margin-right:0.127cm;">6.4</span></a><a id="__RefHeading__1415250_253892949"/><a id="element-text_ruby"/>&lt;text:ruby&gt;</h2><h3 class="Heading_20_3"><a id="a6_4_1General"><span style="margin-right:0.127cm;">6.4.1</span></a><a id="__RefHeading__1415252_253892949"/>General</h3><p class="Text_20_body">A ruby is additional text that is displayed above or below a base text. The purpose of a ruby is to annotate a base text or provide information about its pronunciation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:ruby&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:ruby&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_ruby">19.874.30</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:ruby&gt;</span> element has the following child elements: <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:ruby-text&gt;</span> <a href="#element-text_ruby-text">6.4.3</a>.</p><h3 class="Heading_20_3"><a id="a6_4_2_text_ruby-base_"><span style="margin-right:0.127cm;">6.4.2</span></a><a id="__RefHeading__1415254_253892949"/><a id="element-text_ruby-base"/>&lt;text:ruby-base&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:ruby-base&gt;</span> element contains the text that is to be annotated. It contains any paragraph element content, like text spans. The element's <span class="Attribute">text:style-name</span> attribute references a ruby style that specifies formatting attributes of the ruby.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:ruby-base&gt;</span> element is usable within the following element: <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:ruby-base&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:ruby-base&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;presentation:date-time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:ruby-base&gt;</span> element has mixed content.</p><h3 class="Heading_20_3"><a id="a6_4_3_text_ruby-text_"><span style="margin-right:0.127cm;">6.4.3</span></a><a id="__RefHeading__1415256_253892949"/><a id="element-text_ruby-text"/>&lt;text:ruby-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:ruby-text&gt;</span> element contains an annotation text. It may contain only plain text. The element's <span class="Attribute">text:style-name</span> attribute references a text style that specifies further formatting attributes used for the annotation text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:ruby-text&gt;</span> element is usable within the following element: <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:ruby-text&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_ruby-text">19.874.31</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:ruby-text&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:ruby-text&gt;</span> element has character data content.</p><h1 class="Heading_20_1"><a id="a7Text_Fields"><span style="margin-right:0.127cm;">7</span></a><a id="__RefHeading__1415258_253892949"/><a id="Text_Fields"/>Text Fields</h1><h2 class="Heading_20_2"><a id="a7_1General"><span style="margin-right:0.127cm;">7.1</span></a><a id="__RefHeading__1415260_253892949"/>General</h2><p class="Text_20_body">OpenDocument text documents or OpenDocument text content embedded in other types of documents may contain variable text elements called fields. Fields are commonly used for:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Page numbers<br/><span style="margin-left:0.6401cm"/>A page number field displays the number of the page on which it appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Creation dates<br/><span style="margin-left:0.6401cm"/>A creation date field displays the date on which a document was created.<span class="odfLiEnd"/> </p></li></ul><h2 class="Heading_20_2"><a id="a7_2Common_Characteristics_of_Field_Elements"><span style="margin-right:0.127cm;">7.2</span></a><a id="__RefHeading__1415262_253892949"/>Common Characteristics of Field Elements</h2><p class="Text_20_body">Each field type is represented by a corresponding element type. The content of an element is a textual representation of the current field value as it would be displayed or printed. </p><p class="Text_20_body">The value of a field is stored in an attribute. Storage of the value enables recalculation of the presentation of a field. </p><p class="Note"><span class="Note_20_Label">Note</span>: For string values, if a value is identical to a presentation, the value attribute can be omitted to avoid duplicate storage of information.</p><p class="Text_20_body">The presentation of information in a field is determined by the style applied to the field. </p><h2 class="Heading_20_2"><a id="a7_3Document_Fields"><span style="margin-right:0.127cm;">7.3</span></a><a id="__RefHeading__1415264_253892949"/>Document Fields</h2><h3 class="Heading_20_3"><a id="a7_3_1General"><span style="margin-right:0.127cm;">7.3.1</span></a><a id="__RefHeading__1415266_253892949"/>General</h3><p class="Text_20_body">OpenDocument fields display information about the current document or about a specific part of the current document.,</p><h3 class="Heading_20_3"><a id="a7_3_2_text_date_"><span style="margin-right:0.127cm;">7.3.2</span></a><a id="__RefHeading__1415268_253892949"/><a id="element-text_date"/>&lt;text:date&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:date&gt;</span> element displays a date, by default this is the current date. The date can be adjusted to display a date other than the current date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:date&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:date&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_date">19.469.7</a>, <span class="Attribute">text:date-adjust</span> <a href="#attribute-text_date-adjust">19.792</a>, <span class="Attribute">text:date-value</span> <a href="#attribute-text_date-value">19.793</a> and <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:date&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_3_text_time_"><span style="margin-right:0.127cm;">7.3.3</span></a><a id="__RefHeading__1415270_253892949"/><a id="element-text_time"/>&lt;text:time&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:time&gt;</span> element displays a time, by default this is the current time.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:time&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:time&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_time">19.469.16</a>, <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>, <span class="Attribute">text:time-adjust</span> <a href="#attribute-text_time-adjust">19.880</a> and <span class="Attribute">text:time-value</span> <a href="#attribute-text_time-value">19.881</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:time&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:time&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_4_text_page-number_"><span style="margin-right:0.127cm;">7.3.4</span></a><a id="__RefHeading__1415272_253892949"/><a id="element-text_page-number"/>&lt;text:page-number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:page-number&gt;</span> element displays the current page number.</p><p class="Text_20_body">If a number style is not specified for page numbers, the default is the number style of the current page style. </p><p class="Note"><span class="Note_20_Label">Note:</span> The <span class="Element">&lt;text:page-count&gt;</span> element displays the total number of pages in a document. <a href="#element-text_page-count">7.5.18.2</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page-number&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page-number&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>, <span class="Attribute">text:page-adjust</span> <a href="#attribute-text_page-adjust_element-text_page-number">19.845.2</a> and <span class="Attribute">text:select-page</span> <a href="#attribute-text_select-page_element-text_page-number">19.863.3</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:page-number&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page-number&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_5_text_page-continuation_"><span style="margin-right:0.127cm;">7.3.5</span></a><a id="__RefHeading__1415274_253892949"/><a id="element-text_page-continuation"/>&lt;text:page-continuation&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:page-continuation&gt;</span> element displays a continuation reminder printed at the bottom of the page in addition to the page number.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page-continuation&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page-continuation&gt;</span> element has the following attributes: <span class="Attribute">text:select-page</span> <a href="#attribute-text_select-page_element-text_page-continuation">19.863.2</a> and <span class="Attribute">text:string-value</span> <a href="#attribute-text_string-value_element-text_page-continuation">19.871.4</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:page-continuation&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page-continuation&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_6Subsequent_Author_Fields"><span style="margin-right:0.127cm;">7.3.6</span></a><a id="__RefHeading__1415276_253892949"/>Subsequent Author Fields</h3><h4 class="Heading_20_4"><a id="a7_3_6_1General"><span style="margin-right:0.127cm;">7.3.6.1</span></a><a id="__RefHeading__1415278_253892949"/>General</h4><p class="Text_20_body">Subsequent author fields capture information about second and following authors for a document. </p><p class="Note"><span class="Note_20_Label">Note:</span> In OpenDocument 1.0/1.1, these fields were referenced as “sender” fields and that terminology still appears in the names of these elements. </p><p class="Text_20_body">If a subsequent author field is marked fixed using the <span class="Attribute">text:fixed</span> attribute, the original information in that field is preserved. <a href="#attribute-text_fixed">19.803</a> Otherwise, the information is updated each time the file is edited.</p><h4 class="Heading_20_4"><a id="a7_3_6_2_text_sender-firstname_"><span style="margin-right:0.127cm;">7.3.6.2</span></a><a id="__RefHeading__1415280_253892949"/><a id="element-text_sender-firstname"/>&lt;text:sender-firstname&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-firstname&gt;</span> element represents the first name of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-firstname&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-firstname&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-firstname&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-firstname&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_3_text_sender-lastname_"><span style="margin-right:0.127cm;">7.3.6.3</span></a><a id="__RefHeading__1415282_253892949"/><a id="element-text_sender-lastname"/>&lt;text:sender-lastname&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-lastname&gt;</span> element represents the last name of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-lastname&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-lastname&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-lastname&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-lastname&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_4_text_sender-initials_"><span style="margin-right:0.127cm;">7.3.6.4</span></a><a id="__RefHeading__1415284_253892949"/><a id="element-text_sender-initials"/>&lt;text:sender-initials&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-initials&gt;</span> element represents the initials of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-initials&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-initials&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-initials&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-initials&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_5_text_sender-title_"><span style="margin-right:0.127cm;">7.3.6.5</span></a><a id="__RefHeading__1415286_253892949"/><a id="element-text_sender-title"/>&lt;text:sender-title&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-title&gt;</span> element represents the title of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-title&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-title&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-title&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-title&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_6_text_sender-position_"><span style="margin-right:0.127cm;">7.3.6.6</span></a><a id="__RefHeading__1415288_253892949"/><a id="element-text_sender-position"/>&lt;text:sender-position&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-position&gt;</span> element represents the position of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-position&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-position&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-position&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-position&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_7_text_sender-email_"><span style="margin-right:0.127cm;">7.3.6.7</span></a><a id="__RefHeading__1415290_253892949"/><a id="element-text_sender-email"/>&lt;text:sender-email&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-email&gt;</span> element represents the email address of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-email&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-email&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-email&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-email&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_8_text_sender-phone-private_"><span style="margin-right:0.127cm;">7.3.6.8</span></a><a id="__RefHeading__1415292_253892949"/><a id="element-text_sender-phone-private"/>&lt;text:sender-phone-private&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-phone-private&gt;</span> element represents the private telephone number of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-phone-private&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-phone-private&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-phone-private&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-phone-private&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_9_text_sender-fax_"><span style="margin-right:0.127cm;">7.3.6.9</span></a><a id="__RefHeading__1415294_253892949"/><a id="element-text_sender-fax"/>&lt;text:sender-fax&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-fax&gt;</span> element represents the facsimile number of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-fax&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-fax&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-fax&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-fax&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_10_text_sender-company_"><span style="margin-right:0.127cm;">7.3.6.10</span></a><a id="__RefHeading__1415296_253892949"/><a id="element-text_sender-company"/>&lt;text:sender-company&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-company&gt;</span> element represents the name of the company that employs a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-company&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-company&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-company&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-company&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_11_text_sender-phone-work_"><span style="margin-right:0.127cm;">7.3.6.11</span></a><a id="__RefHeading__1415298_253892949"/><a id="element-text_sender-phone-work"/>&lt;text:sender-phone-work&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-phone-work&gt;</span> element represents the office telephone number of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-phone-work&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-phone-work&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-phone-work&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-phone-work&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_12_text_sender-street_"><span style="margin-right:0.127cm;">7.3.6.12</span></a><a id="__RefHeading__1415300_253892949"/><a id="element-text_sender-street"/>&lt;text:sender-street&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-street&gt;</span> element represents the street address of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-street&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-street&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-street&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-street&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_13_text_sender-city_"><span style="margin-right:0.127cm;">7.3.6.13</span></a><a id="__RefHeading__1415302_253892949"/><a id="element-text_sender-city"/>&lt;text:sender-city&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-city&gt;</span> element represents the city name of the address of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-city&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-city&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-city&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-city&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_14_text_sender-postal-code_"><span style="margin-right:0.127cm;">7.3.6.14</span></a><a id="__RefHeading__1415304_253892949"/><a id="element-text_sender-postal-code"/>&lt;text:sender-postal-code&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-postal-code&gt;</span> element represents the postal code of the address of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-postal-code&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-postal-code&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-postal-code&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-postal-code&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_15_text_sender-country_"><span style="margin-right:0.127cm;">7.3.6.15</span></a><a id="__RefHeading__1415306_253892949"/><a id="element-text_sender-country"/>&lt;text:sender-country&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-country&gt;</span> element represents the country name of the address of a subsequent author.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-country&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-country&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-country&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-country&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_6_16_text_sender-state-or-province_"><span style="margin-right:0.127cm;">7.3.6.16</span></a><a id="__RefHeading__1415308_253892949"/><a id="element-text_sender-state-or-province"/>&lt;text:sender-state-or-province&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:sender-state-or-province&gt;</span> element represents the state or province name of the address of a subsequent author, if applicable.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sender-state-or-province&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sender-state-or-province&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sender-state-or-province&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sender-state-or-province&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_7Author_Fields"><span style="margin-right:0.127cm;">7.3.7</span></a><a id="__RefHeading__1415310_253892949"/>Author Fields</h3><h4 class="Heading_20_4"><a id="a7_3_7_1_text_author-name_"><span style="margin-right:0.127cm;">7.3.7.1</span></a><a id="__RefHeading__1415312_253892949"/><a id="element-text_author-name"/>&lt;text:author-name&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:author-name&gt;</span> element represents the full name of the author of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:author-name&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:author-name&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:author-name&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:author-name&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_3_7_2_text_author-initials_"><span style="margin-right:0.127cm;">7.3.7.2</span></a><a id="__RefHeading__1415314_253892949"/><a id="element-text_author-initials"/>&lt;text:author-initials&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:author-initials&gt;</span> element represents the initials of the author of a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:author-initials&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:author-initials&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:author-initials&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:author-initials&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_8_text_chapter_"><span style="margin-right:0.127cm;">7.3.8</span></a><a id="__RefHeading__1415316_253892949"/><a id="element-text_chapter"/>&lt;text:chapter&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:chapter&gt;</span> element represents a field that displays one of the following:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The name of the current chapter<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The number of the current chapter<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Both the name and number of the current chapter<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If this element is placed inside a header or footer, it displays the current chapter name or number on every page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:chapter&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:chapter&gt;</span> element has the following attributes: <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_chapter">19.796.2</a> and <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_chapter">19.844.3</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:chapter&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:chapter&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_9_text_file-name_"><span style="margin-right:0.127cm;">7.3.9</span></a><a id="__RefHeading__1415318_253892949"/><a id="element-text_file-name"/>&lt;text:file-name&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:file-name&gt;</span> element represents a field that displays the name of a file that is being edited.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:file-name&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:file-name&gt;</span> element has the following attributes: <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_file-name">19.796.4</a> and <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:file-name&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:file-name&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_10_text_template-name_"><span style="margin-right:0.127cm;">7.3.10</span></a><a id="__RefHeading__1415320_253892949"/><a id="element-text_template-name"/>&lt;text:template-name&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:template-name&gt;</span> element represents a field that displays information about the document template in use.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:template-name&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:template-name&gt;</span> element has the following attribute: <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_template-name">19.796.8</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:template-name&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:template-name&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_3_11_text_sheet-name_"><span style="margin-right:0.127cm;">7.3.11</span></a><a id="__RefHeading__1415322_253892949"/><a id="element-text_sheet-name"/>&lt;text:sheet-name&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:sheet-name&gt;</span> element displays represents the name of a sheet that is currently being edited in a Spreadsheet document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sheet-name&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sheet-name&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sheet-name&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sheet-name&gt;</span> element has character data content.</p><h2 class="Heading_20_2"><a id="a7_4Variable_Fields"><span style="margin-right:0.127cm;">7.4</span></a><a id="__RefHeading__1415324_253892949"/>Variable Fields</h2><h3 class="Heading_20_3"><a id="a7_4_1General"><span style="margin-right:0.127cm;">7.4.1</span></a><a id="__RefHeading__1415326_253892949"/>General</h3><p class="Text_20_body">OpenDocument documents can contain variables, which are processed or displayed using variable fields. In an OpenDocument file, variable declarations shall precede in document order any use of those variable declarations. </p><p class="Text_20_body">There are three types of variables:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Strong_20_Emphasis">Simple variables</span><span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Simple variables, or variables, can take different values at different positions in a document. Simple variables can be set using either setter or input fields. Setter fields contain an expression, which is used to compute the new value of the variable. Input fields prompt the user for the new value. <span class="odfLiEnd"/> </p><p class="P25" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span><span class="Note_20_Label">Note: </span>Simple variables can be used to display different text in recurring elements, such as headers or footers.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Strong_20_Emphasis">User variables</span><span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span> If a user variable is set anywhere within the document, all fields in a document that display that user variable have the same value.  The value of the user variable can only be set after the variable is declared.<span class="odfLiEnd"/> </p><p class="P25" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span><span class="Note_20_Label">Note:</span> In a consumer's user interface, a user variable can be set at any occurrence of a user field, or by using user variable input fields.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Strong_20_Emphasis">Sequence variables</span><span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Sequence variables are used to number items in an OpenDocument text document<span class="odfLiEnd"/> </p><p class="P25" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span><span class="Note_20_Label">Note:</span> Sequence variables can be used to number images or tables in a text.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value of a sequence variable is initialized to 0 (zero) by its declaration. </p><p class="Text_20_body">Variables shall be declared before they can be used. The OpenDocument elements for declaring variables are described in sections <a href="#element-text_variable-decl">7.4.3</a>, <a href="#element-text_user-field-decl">7.4.8</a> and <a href="#element-text_sequence-decl">7.4.12</a>.</p><p class="Text_20_body">The display of variables is determined by styles which are specified by the element that defines the variable.</p><h3 class="Heading_20_3"><a id="a7_4_2_text_variable-decls_"><span style="margin-right:0.127cm;">7.4.2</span></a><a id="__RefHeading__1415328_253892949"/><a id="element-text_variable-decls"/>&lt;text:variable-decls&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:variable-decls&gt;</span> element is a container for <span class="Element">&lt;text:variable-decl&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:variable-decls&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:variable-decls&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:variable-decls&gt;</span> element has the following child element: <span class="Element">&lt;text:variable-decl&gt;</span> <a href="#element-text_variable-decl">7.4.3</a>.</p><h3 class="Heading_20_3"><a id="a7_4_3_text_variable-decl_"><span style="margin-right:0.127cm;">7.4.3</span></a><a id="__RefHeading__1415330_253892949"/><a id="element-text_variable-decl"/>&lt;text:variable-decl&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:variable-decl&gt;</span> element is used to declare simple variables. This element specifies the name and the value type of a variable.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:variable-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:variable-decl&gt;</span> element has the following attributes: <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_variable-decl">19.835.25</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:variable-decl&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a7_4_4_text_variable-set_"><span style="margin-right:0.127cm;">7.4.4</span></a><a id="__RefHeading__1415332_253892949"/><a id="element-text_variable-set"/>&lt;text:variable-set&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:variable-set&gt;</span> element represents a simple variable. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:variable-set&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:variable-set&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_variable-set">19.469.22</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_variable-set">19.796.12</a>, <span class="Attribute">text:formula</span> <a href="#attribute-text_formula">19.805</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_variable-set">19.835.24</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:variable-set&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:variable-set&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_5_text_variable-get_"><span style="margin-right:0.127cm;">7.4.5</span></a><a id="__RefHeading__1415334_253892949"/><a id="element-text_variable-get"/>&lt;text:variable-get&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:variable-get&gt;</span> element sets the display of the value of a simple variable. The value of this element is the value of the last preceding <span class="Element">&lt;text:variable-set&gt;</span> element with an identical value for its <span class="Attribute">text:name</span> attribute.</p><p class="Text_20_body">If there is no preceding <span class="Element">&lt;text:variable-set&gt;</span> element with an identical value for its <span class="Attribute">text:name</span> attribute the value of a <span class="Element">&lt;text:variable-get&gt;</span> field is undefined. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:variable-get&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:variable-get&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_variable-get">19.469.20</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_variable-get">19.796.10</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_variable-get">19.835.26</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:variable-get&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:variable-get&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_6_text_variable-input_"><span style="margin-right:0.127cm;">7.4.6</span></a><a id="__RefHeading__1415336_253892949"/><a id="element-text_variable-input"/>&lt;text:variable-input&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:variable-input&gt;</span> element represents user supplied variable values. This element can be empty if its <span class="Attribute">text:display</span> attribute is set to <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:variable-input&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:variable-input&gt;</span> element has the following attributes: <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_variable-input">19.469.21</a>, <span class="Attribute">text:description</span> <a href="#attribute-text_description">19.795</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_variable-input">19.796.11</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_variable-input">19.835.27</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:variable-input&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:variable-input&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_7_text_user-field-decls_"><span style="margin-right:0.127cm;">7.4.7</span></a><a id="__RefHeading__1415338_253892949"/><a id="element-text_user-field-decls"/>&lt;text:user-field-decls&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-field-decls&gt;</span> element is a container for <span class="Element">&lt;text:user-field-decl&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-field-decls&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-field-decls&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-field-decls&gt;</span> element has the following child element: <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a>.</p><h3 class="Heading_20_3"><a id="a7_4_8_text_user-field-decl_"><span style="margin-right:0.127cm;">7.4.8</span></a><a id="__RefHeading__1415340_253892949"/><a id="element-text_user-field-decl"/>&lt;text:user-field-decl&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-field-decl&gt;</span> element is used to specify user variable values that are displayed using the <span class="Element">&lt;text:user-field-get&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-field-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-field-decl&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">text:formula</span> <a href="#attribute-text_formula">19.805</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_user-field-decl">19.835.20</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-field-decl&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a7_4_9_text_user-field-get_"><span style="margin-right:0.127cm;">7.4.9</span></a><a id="__RefHeading__1415342_253892949"/><a id="element-text_user-field-get"/>&lt;text:user-field-get&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-field-get&gt;</span> element displays the content of a user variable. The value of this element is the value of a <span class="Element">&lt;text:user-field-decl&gt;</span> element with a <span class="Attribute">text:name</span> attribute value that matches the <span class="Attribute">text:name</span> attribute of this element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-field-get&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-field-get&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_user-field-get">19.469.18</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_user-field-get">19.796.9</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_user-field-get">19.835.21</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:user-field-get&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-field-get&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_10_text_user-field-input_"><span style="margin-right:0.127cm;">7.4.10</span></a><a id="__RefHeading__1415344_253892949"/><a id="element-text_user-field-input"/>&lt;text:user-field-input&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-field-input&gt;</span> element is an alternative method of displaying user variables. The value of this element is the value of a <span class="Element">&lt;text:user-field-decl&gt;</span> element with a <span class="Attribute">text:name</span> attribute value that matches the <span class="Attribute">text:name</span> attribute of this element.</p><p class="Text_20_body">This element can be empty if the <span class="Attribute">text:display</span> attribute is set to <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-field-input&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-field-input&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_user-field-input">19.469.19</a>, <span class="Attribute">text:description</span> <a href="#attribute-text_description">19.795</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_user-field-input">19.835.22</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:user-field-input&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-field-input&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_11_text_sequence-decls_"><span style="margin-right:0.127cm;">7.4.11</span></a><a id="__RefHeading__1415346_253892949"/><a id="element-text_sequence-decls"/>&lt;text:sequence-decls&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:sequence-decls&gt;</span> element is a container for <span class="Element">&lt;text:sequence-decl&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sequence-decls&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sequence-decls&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sequence-decls&gt;</span> element has the following child element: <span class="Element">&lt;text:sequence-decl&gt;</span> <a href="#element-text_sequence-decl">7.4.12</a>.</p><h3 class="Heading_20_3"><a id="a7_4_12_text_sequence-decl_"><span style="margin-right:0.127cm;">7.4.12</span></a><a id="__RefHeading__1415348_253892949"/><a id="element-text_sequence-decl"/>&lt;text:sequence-decl&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:sequence-decl&gt;</span> element is used to declare sequence variables used to number items within an OpenDocument text document. </p><p class="Note"><span class="Note_20_Label">Note: </span>Sequence variables are commonly used for sequential numbering. However, expression formulas can be included in sequence fields to support more advanced sequences.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sequence-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sequence-decl&gt;</span> element has the following attributes: <span class="Attribute">text:display-outline-level</span> <a href="#attribute-text_display-outline-level">19.798</a>, <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_sequence-decl">19.835.16</a> and <span class="Attribute">text:separation-character</span> <a href="#attribute-text_separation-character">19.864</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sequence-decl&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a7_4_13_text_sequence_"><span style="margin-right:0.127cm;">7.4.13</span></a><a id="__RefHeading__1415350_253892949"/><a id="element-text_sequence"/>&lt;text:sequence&gt;</h3><p class="Text_20_body">A <span class="Element">&lt;text:sequence&gt;</span> element specifies a sequence field.</p><p class="Text_20_body">A sequence field changes the value of a sequence variable by a specified formula and displays the changed value of the sequence variable in a specified format. </p><p class="Note"><span class="Note_20_Label">Note:</span> Sequence variables and fields are used to number repeating document elements such as pages, tables or images. In such cases, the formula could be: "sequenceVariableName + 1." A sequence variable can be set to a specific value or not changed at all.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sequence&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sequence&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">text:formula</span> <a href="#attribute-text_formula">19.805</a>, <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_sequence">19.835.15</a> and <span class="Attribute">text:ref-name</span> <a href="#attribute-text_ref-name_element-text_sequence">19.853.5</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sequence&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sequence&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_14_text_expression_"><span style="margin-right:0.127cm;">7.4.14</span></a><a id="__RefHeading__1415352_253892949"/><a id="element-text_expression"/>&lt;text:expression&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:expression&gt;</span> element represents expressions that are evaluated and the resulting value displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:expression&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:expression&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_expression">19.469.9</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_expression">19.796.3</a> and <span class="Attribute">text:formula</span> <a href="#attribute-text_formula">19.805</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:expression&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:expression&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_4_15_text_text-input_"><span style="margin-right:0.127cm;">7.4.15</span></a><a id="__RefHeading__1415354_253892949"/><a id="element-text_text-input"/>&lt;text:text-input&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:text-input&gt;</span> element is a text input field. A text input field is used in a user interface to prompt a user to input text. This text is stored and displayed as the content of this element until it is replaced by a user.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:text-input&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:text-input&gt;</span> element has the following attribute: <span class="Attribute">text:description</span> <a href="#attribute-text_description">19.795</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:text-input&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:text-input&gt;</span> element has character data content.</p><h2 class="Heading_20_2"><a id="a7_5Metadata_Fields"><span style="margin-right:0.127cm;">7.5</span></a><a id="__RefHeading__1415356_253892949"/>Metadata Fields</h2><h3 class="Heading_20_3"><a id="a7_5_1General"><span style="margin-right:0.127cm;">7.5.1</span></a><a id="__RefHeading__1415358_253892949"/>General</h3><p class="Text_20_body">Metadata field elements display meta information about a document.</p><p class="Text_20_body">All metadata field elements can be marked as fixed using the <span class="Attribute">text:fixed</span> attribute. <a href="#attribute-text_fixed">19.803</a></p><h3 class="Heading_20_3"><a id="a7_5_2_text_initial-creator_"><span style="margin-right:0.127cm;">7.5.2</span></a><a id="__RefHeading__1415360_253892949"/><a id="element-text_initial-creator"/>&lt;text:initial-creator&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:initial-creator&gt;</span> element displays the value contained by the <span class="Element">&lt;meta:initial-creator&gt;</span> element of a document. <a href="#element-meta_initial-creator">4.3.2.6</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:initial-creator&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:initial-creator&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:initial-creator&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:initial-creator&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_3_text_creation-date_"><span style="margin-right:0.127cm;">7.5.3</span></a><a id="__RefHeading__1415362_253892949"/><a id="element-text_creation-date"/>&lt;text:creation-date&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:creation-date&gt;</span> element displays the value contained by the <span class="Element">&lt;meta:creation-date&gt;</span> element of a document. <a href="#element-meta_creation-date">4.3.2.9</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:creation-date&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:creation-date&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_creation-date">19.469.4</a>, <span class="Attribute">text:date-value</span> <a href="#attribute-text_date-value">19.793</a> and <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:creation-date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:creation-date&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_4_text_creation-time_"><span style="margin-right:0.127cm;">7.5.4</span></a><a id="__RefHeading__1415364_253892949"/><a id="element-text_creation-time"/>&lt;text:creation-time&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:creation-time&gt;</span> element represents the time at which a document was created.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:creation-time&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:creation-time&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_creation-time">19.469.5</a>, <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a> and <span class="Attribute">text:time-value</span> <a href="#attribute-text_time-value">19.881</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:creation-time&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:creation-time&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_5_text_description_"><span style="margin-right:0.127cm;">7.5.5</span></a><a id="__RefHeading__1415366_253892949"/><a id="element-text_description"/>&lt;text:description&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:description&gt;</span> element displays the content contained by the <span class="Element">&lt;dc:description&gt;</span> element of a document. <a href="#element-dc_description">4.3.2.3</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:description&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:description&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:description&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:description&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_6_text_user-defined_"><span style="margin-right:0.127cm;">7.5.6</span></a><a id="__RefHeading__1415368_253892949"/><a id="element-text_user-defined"/>&lt;text:user-defined&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-defined&gt;</span> element displays the value contained by a <span class="Element">&lt;meta:user-defined&gt;</span> element of a document. <a href="#element-meta_user-defined">4.3.3</a></p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The link between a <span class="Element">&lt;text:user-defined&gt;</span> element and a <span class="Element">&lt;meta:user-defined&gt;</span> element is established by the <span class="Attribute">text:name</span> and <span class="Attribute">meta:name</span> attributes, respectively, containing the same value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-defined&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-defined&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_user-defined">19.469.17</a>, <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a> and <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_user-defined">19.835.19</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:user-defined&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-defined&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_7_text_print-time_"><span style="margin-right:0.127cm;">7.5.7</span></a><a id="__RefHeading__1415370_253892949"/><a id="element-text_print-time"/>&lt;text:print-time&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:print-time&gt;</span> element represents the time at which a document was last printed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:print-time&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:print-time&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_print-time">19.469.14</a>, <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a> and <span class="Attribute">text:time-value</span> <a href="#attribute-text_time-value">19.881</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:print-time&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:print-time&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_8_text_print-date_"><span style="margin-right:0.127cm;">7.5.8</span></a><a id="__RefHeading__1415372_253892949"/><a id="element-text_print-date"/>&lt;text:print-date&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:print-date&gt;</span> element displays the value contained by the <span class="Element">&lt;meta:print-date&gt;</span> element of a document. <a href="#element-meta_print-date">4.3.2.11</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:print-date&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:print-date&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_print-date">19.469.13</a>, <span class="Attribute">text:date-value</span> <a href="#attribute-text_date-value">19.793</a> and <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:print-date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:print-date&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_9_text_printed-by_"><span style="margin-right:0.127cm;">7.5.9</span></a><a id="__RefHeading__1415374_253892949"/><a id="element-text_printed-by"/>&lt;text:printed-by&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:printed-by&gt;</span> element displays the value contained by the <span class="Element">&lt;meta:printed-by&gt;</span> element of a document. <a href="#element-meta_printed-by">4.3.2.8</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:printed-by&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:printed-by&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:printed-by&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:printed-by&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_10_text_title_"><span style="margin-right:0.127cm;">7.5.10</span></a><a id="__RefHeading__1415376_253892949"/><a id="element-text_title"/>&lt;text:title&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:title&gt;</span> element displays the value contained by the <span class="Element">&lt;dc:title&gt;</span> element of a document. <a href="#element-dc_title">4.3.2.2</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:title&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:title&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:title&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:title&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_11_text_subject_"><span style="margin-right:0.127cm;">7.5.11</span></a><a id="__RefHeading__1415378_253892949"/><a id="element-text_subject"/>&lt;text:subject&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:subject&gt;</span> element displays the values contained by the <span class="Element">&lt;dc:subject&gt;</span> element of a document. <a href="#element-dc_subject">4.3.2.4</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:subject&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:subject&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:subject&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:subject&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_12_text_keywords_"><span style="margin-right:0.127cm;">7.5.12</span></a><a id="__RefHeading__1415380_253892949"/><a id="element-text_keywords"/>&lt;text:keywords&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:keywords&gt;</span> element displays a list of keywords contained in the <span class="Element">&lt;meta:keyword&gt;</span> elements of a document. </p><p class="Text_20_body">The format of a list of keywords is implementation-dependent. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:keywords&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:keywords&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:keywords&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:keywords&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_13_text_editing-cycles_"><span style="margin-right:0.127cm;">7.5.13</span></a><a id="__RefHeading__1415382_253892949"/><a id="element-text_editing-cycles"/>&lt;text:editing-cycles&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:editing-cycles&gt;</span> element displays the value contained by the <span class="Element">&lt;meta:editing-cycles&gt;</span> element of a document. <a href="#element-meta_editing-cycles">4.3.2.16</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:editing-cycles&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:editing-cycles&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:editing-cycles&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:editing-cycles&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_14_text_editing-duration_"><span style="margin-right:0.127cm;">7.5.14</span></a><a id="__RefHeading__1415384_253892949"/><a id="element-text_editing-duration"/>&lt;text:editing-duration&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:editing-duration&gt;</span> element displays the value contained by the <span class="Element">&lt;meta:editing-duration&gt;</span> element of a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:editing-duration&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:editing-duration&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_editing-duration">19.469.8</a>, <span class="Attribute">text:duration</span> <a href="#attribute-text_duration">19.799</a> and <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:editing-duration&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:editing-duration&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_15_text_modification-time_"><span style="margin-right:0.127cm;">7.5.15</span></a><a id="__RefHeading__1415386_253892949"/><a id="element-text_modification-time"/>&lt;text:modification-time&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:modification-time&gt;</span> element represents the time at which a document was last modified.</p><p class="Text_20_body">This element displays the time information portion of the value of the <span class="Element">&lt;dc:date&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:modification-time&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:modification-time&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_modification-time">19.469.12</a>, <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a> and <span class="Attribute">text:time-value</span> <a href="#attribute-text_time-value">19.881</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:modification-time&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:modification-time&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_16_text_modification-date_"><span style="margin-right:0.127cm;">7.5.16</span></a><a id="__RefHeading__1415388_253892949"/><a id="element-text_modification-date"/>&lt;text:modification-date&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:modification-date&gt;</span> element displays the value contained by the <span class="Element">&lt;dc:date&gt;</span> element of a document. <a href="#element-dc_date">4.3.2.10</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:modification-date&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:modification-date&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_modification-date">19.469.11</a>, <span class="Attribute">text:date-value</span> <a href="#attribute-text_date-value">19.793</a> and <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:modification-date&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:modification-date&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_17_text_creator_"><span style="margin-right:0.127cm;">7.5.17</span></a><a id="__RefHeading__1415390_253892949"/><a id="element-text_creator"/>&lt;text:creator&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:creator&gt;</span> element displays the value contained by the <span class="Element">&lt;dc:creator&gt;</span> element of a document. <a href="#element-dc_creator">4.3.2.7</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:creator&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:creator&gt;</span> element has the following attribute: <span class="Attribute">text:fixed</span> <a href="#attribute-text_fixed">19.803</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:creator&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:creator&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_18Document_Statistics_Fields"><span style="margin-right:0.127cm;">7.5.18</span></a><a id="__RefHeading__1415392_253892949"/><a id="Document_Statistics_Fields"/>Document Statistics Fields</h3><h4 class="Heading_20_4"><a id="a7_5_18_1General"><span style="margin-right:0.127cm;">7.5.18.1</span></a><a id="__RefHeading__1415394_253892949"/>General</h4><p class="Text_20_body">The contents of <span class="Element">&lt;text:word-count&gt;</span> and <span class="Element">&lt;text:character-count&gt;</span> elements are locale specific and are not defined by OpenDocument. </p><h4 class="Heading_20_4"><a id="a7_5_18_2_text_page-count_"><span style="margin-right:0.127cm;">7.5.18.2</span></a><a id="__RefHeading__1415396_253892949"/><a id="element-text_page-count"/>&lt;text:page-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:page-count&gt;</span> element displays the value of the <span class="Attribute">meta:page-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_page-count">19.332</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:page-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page-count&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_5_18_3_text_paragraph-count_"><span style="margin-right:0.127cm;">7.5.18.3</span></a><a id="__RefHeading__1415398_253892949"/><a id="element-text_paragraph-count"/>&lt;text:paragraph-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:paragraph-count&gt;</span> element displays the value of the <span class="Attribute">meta:paragraph-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_paragraph-count">19.333</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:paragraph-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:paragraph-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:paragraph-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:paragraph-count&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_5_18_4_text_word-count_"><span style="margin-right:0.127cm;">7.5.18.4</span></a><a id="__RefHeading__1415400_253892949"/><a id="element-text_word-count"/>&lt;text:word-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:word-count&gt;</span> element displays the value of the <span class="Attribute">meta:word-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_word-count">19.339</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:word-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:word-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:word-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:word-count&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_5_18_5_text_character-count_"><span style="margin-right:0.127cm;">7.5.18.5</span></a><a id="__RefHeading__1415402_253892949"/><a id="element-text_character-count"/>&lt;text:character-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:character-count&gt;</span> element displays the value of the <span class="Attribute">meta:character-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_character-count">19.322</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:character-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:character-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:character-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:character-count&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_5_18_6_text_table-count_"><span style="margin-right:0.127cm;">7.5.18.6</span></a><a id="__RefHeading__1415404_253892949"/><a id="element-text_table-count"/>&lt;text:table-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:table-count&gt;</span> element displays the value of the <span class="Attribute">meta:table-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_table-count">19.337</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:table-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-count&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_5_18_7_text_image-count_"><span style="margin-right:0.127cm;">7.5.18.7</span></a><a id="__RefHeading__1415406_253892949"/><a id="element-text_image-count"/>&lt;text:image-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:image-count&gt;</span> element displays the value of the <span class="Attribute">meta:image-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_image-count">19.327</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:image-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:image-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:image-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:image-count&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_5_18_8_text_object-count_"><span style="margin-right:0.127cm;">7.5.18.8</span></a><a id="__RefHeading__1415408_253892949"/><a id="element-text_object-count"/>&lt;text:object-count&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:object-count&gt;</span> element displays the value of the <span class="Attribute">meta:object-count</span> attribute of the <span class="Element">&lt;meta:document-statistic&gt;</span> element of a document. <a href="#attribute-meta_object-count">19.330</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:object-count&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:object-count&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:object-count&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:object-count&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_5_19_text_meta-field_"><span style="margin-right:0.127cm;">7.5.19</span></a><a id="__RefHeading__1415410_253892949"/><a id="element-text_meta-field"/>&lt;text:meta-field&gt;</h3><p class="Text_20_body"> </p><p class="Text_20_body">The <span class="Element">&lt;text:meta-field&gt;</span> element represents content from a metadata source. The mixed content of this element should be generated from the metadata source. The source of the metadata and the means of generation of the mixed content is implementation-dependent. The <span class="Element">&lt;text:meta-field&gt;</span> element may contain any paragraph content. </p><p class="Note"><span class="Note_20_Label">Note</span>: Alterations of the element's mixed content may be lost if the mixed content is subsequently refreshed from a metadata source.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:meta-field&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:meta-field&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_meta-field">19.469.10</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:meta-field&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>, <span class="Element">&lt;presentation:date-time&gt;</span> <a href="#element-presentation_date-time">10.9.3.5</a>, <span class="Element">&lt;presentation:footer&gt;</span> <a href="#element-presentation_footer">10.9.3.3</a>, <span class="Element">&lt;presentation:header&gt;</span> <a href="#element-presentation_header">10.9.3.1</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>, <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>, <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>, <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>, <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>, <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:line-break&gt;</span> <a href="#element-text_line-break">6.1.5</a>, <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>, <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>, <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>, <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>, <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-</span><span class="Element">country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-</span><span class="Element">work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>, <span class="Element">&lt;text:sheet-name&gt;</span> <a href="#element-text_sheet-name">7.3.11</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a>, <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>, <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>, <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>, <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>, <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>, <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:meta-field&gt;</span> element has mixed content.</p><h2 class="Heading_20_2"><a id="a7_6Database_Fields"><span style="margin-right:0.127cm;">7.6</span></a><a id="__RefHeading__1415412_253892949"/>Database Fields</h2><h3 class="Heading_20_3"><a id="a7_6_1General"><span style="margin-right:0.127cm;">7.6.1</span></a><a id="__RefHeading__1415414_253892949"/>General</h3><p class="Text_20_body">Documents can reference databases and display database information as text content. To display database information, the OpenDocument schema uses a group of text fields, collectively called database fields. Consumers may use database tables from SQL servers, therefore database fields can be used to access any SQL database, provided that the appropriate drivers are available.</p><p class="Text_20_body">A database may contain the following components:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Tables, which store data.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Queries, which extract a subset of data from one or more tables.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Forms, which present data. <a href="#element-db_forms">12.25.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Reports, which summarize database content. <a href="#element-db_reports">12.25.3</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Database fields operate on a set of database rows, the so called <span class="Def">current selection</span>, which is either a database table, or the result of a database query. The current selection is determined by the data source information that is contained in database fields. The current selection is retrieved once per document and data source, regardless of the number of database fields that are associated with a data source.</p><p class="Text_20_body">Database fields display data contained in a particular database row within the current selection. The row within the current selection is controlled by database fields and is known as the current row.</p><h3 class="Heading_20_3"><a id="a7_6_2_form_connection-resource_"><span style="margin-right:0.127cm;">7.6.2</span></a><a id="__RefHeading__1415416_253892949"/><a id="element-form_connection-resource"/>&lt;form:connection-resource&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:connection-resource&gt;</span> element specifies a source database.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:connection-resource&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a> and <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:connection-resource&gt;</span> element has the following attribute: <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-form_connection-resource">19.910.20</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:connection-resource&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a7_6_3_text_database-display_"><span style="margin-right:0.127cm;">7.6.3</span></a><a id="__RefHeading__1415418_253892949"/><a id="element-text_database-display"/>&lt;text:database-display&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:database-display&gt;</span> element represents data from the current database row.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:database-display&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:database-display&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_database-display">19.469.6</a>, <span class="Attribute">text:column-name</span> <a href="#attribute-text_column-name">19.771</a>, <span class="Attribute">text:database-name</span> <a href="#attribute-text_database-name">19.791</a>, <span class="Attribute">text:table-name</span> <a href="#attribute-text_table-name">19.878</a> and <span class="Attribute">text:table-type</span> <a href="#attribute-text_table-type">19.879</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:database-display&gt;</span> element has the following child element: <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:database-display&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_6_4_text_database-next_"><span style="margin-right:0.127cm;">7.6.4</span></a><a id="__RefHeading__1415420_253892949"/><a id="element-text_database-next"/>&lt;text:database-next&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:database-next&gt;</span> element selects the database row following the one currently displayed in a <span class="Element">&lt;text:database-display&gt;</span> field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:database-next&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:database-next&gt;</span> element has the following attributes: <span class="Attribute">text:condition</span> <a href="#attribute-text_condition_element-text_database-next">19.777.3</a>, <span class="Attribute">text:database-name</span> <a href="#attribute-text_database-name">19.791</a>, <span class="Attribute">text:table-name</span> <a href="#attribute-text_table-name">19.878</a> and <span class="Attribute">text:table-type</span> <a href="#attribute-text_table-type">19.879</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:database-next&gt;</span> element has the following child element: <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>.</p><h3 class="Heading_20_3"><a id="a7_6_5_text_database-row-select_"><span style="margin-right:0.127cm;">7.6.5</span></a><a id="__RefHeading__1415422_253892949"/><a id="element-text_database-row-select"/>&lt;text:database-row-select&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:database-row-select&gt;</span> element selects a specific row from a current selection.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:database-row-select&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:database-row-select&gt;</span> element has the following attributes: <span class="Attribute">text:condition</span> <a href="#attribute-text_condition_element-text_database-row-select">19.777.4</a>, <span class="Attribute">text:database-name</span> <a href="#attribute-text_database-name">19.791</a>, <span class="Attribute">text:row-number</span> <a href="#attribute-text_row-number">19.859</a>, <span class="Attribute">text:table-name</span> <a href="#attribute-text_table-name">19.878</a> and <span class="Attribute">text:table-type</span> <a href="#attribute-text_table-type">19.879</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:database-row-select&gt;</span> element has the following child element: <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>.</p><h3 class="Heading_20_3"><a id="a7_6_6_text_database-row-number_"><span style="margin-right:0.127cm;">7.6.6</span></a><a id="__RefHeading__1415424_253892949"/><a id="element-text_database-row-number"/>&lt;text:database-row-number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:database-row-number&gt;</span> element displays the current row number for a given table. The element displays the row number from a database and not the row number of a current selection that is used as an attribute value in the <span class="Element">&lt;text:database-row-select&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:database-row-number&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:database-row-number&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">text:database-name</span> <a href="#attribute-text_database-name">19.791</a>, <span class="Attribute">text:table-name</span> <a href="#attribute-text_table-name">19.878</a>, <span class="Attribute">text:table-type</span> <a href="#attribute-text_table-type">19.879</a> and <span class="Attribute">text:value</span> <a href="#attribute-text_value">19.900</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:database-row-number&gt;</span> element has the following child element: <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:database-row-number&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_6_7_text_database-name_"><span style="margin-right:0.127cm;">7.6.7</span></a><a id="__RefHeading__1415426_253892949"/><a id="element-text_database-name"/>&lt;text:database-name&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:database-name&gt;</span> element displays the database and table name of the last used table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:database-name&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:database-name&gt;</span> element has the following attributes: <span class="Attribute">text:database-name</span> <a href="#attribute-text_database-name">19.791</a>, <span class="Attribute">text:table-name</span> <a href="#attribute-text_table-name">19.878</a> and <span class="Attribute">text:table-type</span> <a href="#attribute-text_table-type">19.879</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:database-name&gt;</span> element has the following child element: <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:database-name&gt;</span> element has character data content.</p><h2 class="Heading_20_2"><a id="a7_7More_Fields"><span style="margin-right:0.127cm;">7.7</span></a><a id="__RefHeading__1415428_253892949"/>More Fields</h2><h3 class="Heading_20_3"><a id="a7_7_1Page_Variable_Fields"><span style="margin-right:0.127cm;">7.7.1</span></a><a id="__RefHeading__1415430_253892949"/>Page Variable Fields</h3><h4 class="Heading_20_4"><a id="a7_7_1_1General"><span style="margin-right:0.127cm;">7.7.1.1</span></a><a id="__RefHeading__1415432_253892949"/>General</h4><p class="Text_20_body">Page variables enable an alternative page numbering to be defined for documents. There is only one page variable, and it is set by any set page variable field in the document. The calculation of a page variable is controlled by the <span class="Attribute">text:active</span> attribute</p><h4 class="Heading_20_4"><a id="a7_7_1_2_text_page-variable-set_"><span style="margin-right:0.127cm;">7.7.1.2</span></a><a id="__RefHeading__1415434_253892949"/><a id="element-text_page-variable-set"/>&lt;text:page-variable-set&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:page-variable-set&gt;</span> element is used to set a page variable.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page-variable-set&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page-variable-set&gt;</span> element has the following attributes: <span class="Attribute">text:active</span> <a href="#attribute-text_active">19.750</a> and <span class="Attribute">text:page-adjust</span> <a href="#attribute-text_page-adjust_element-text_page-variable-set">19.845.3</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:page-variable-set&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page-variable-set&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a7_7_1_3_text_page-variable-get_"><span style="margin-right:0.127cm;">7.7.1.3</span></a><a id="__RefHeading__1415436_253892949"/><a id="element-text_page-variable-get"/>&lt;text:page-variable-get&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;text:page-variable-get&gt;</span> element displays the value of a page variable.</p><p class="Text_20_body">If the <span class="Attribute">text:active</span> attribute <a href="#attribute-text_active">19.750</a>, has the value of <span class="Attribute_20_Value">false</span>, the <span class="Element">&lt;text:page-variable-get&gt;</span> element will have no display for that page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:page-variable-get&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:page-variable-get&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a> and <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:page-variable-get&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:page-variable-get&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_2_text_placeholder_"><span style="margin-right:0.127cm;">7.7.2</span></a><a id="__RefHeading__1415438_253892949"/><a id="element-text_placeholder"/>&lt;text:placeholder&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:placeholder&gt;</span> element is a placeholder  for replacement by content of a particular type as specified in the mandatory <span class="Attribute">text:placeholder-type</span> attribute.</p><p class="Text_20_body">OpenDocument Consumers that support the <span class="Element">&lt;text:placeholder&gt;</span> element shall use the <span class="Attribute">text:description</span> attribute value in presenting the placeholder with its text content and in a manner that indicates it is for replacement by content of the specified type.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:placeholder&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:placeholder&gt;</span> element has the following attributes: <span class="Attribute">text:description</span> <a href="#attribute-text_description">19.795</a> and <span class="Attribute">text:placeholder-type</span> <a href="#attribute-text_placeholder-type">19.847</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:placeholder&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:placeholder&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_3_text_conditional-text_"><span style="margin-right:0.127cm;">7.7.3</span></a><a id="__RefHeading__1415440_253892949"/><a id="element-text_conditional-text"/>&lt;text:conditional-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:conditional-text&gt;</span> element specifies a condition for display of one text string or another. If the condition is <span class="Attribute_20_Value">true</span>, one of the text strings is displayed. If the condition is <span class="Attribute_20_Value">false</span>, the other text string is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:conditional-text&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:conditional-text&gt;</span> element has the following attributes: <span class="Attribute">text:condition</span> <a href="#attribute-text_condition_element-text_conditional-text">19.777.2</a>, <span class="Attribute">text:current-value</span> <a href="#attribute-text_current-value">19.785</a>, <span class="Attribute">text:string-value-if-false</span> <a href="#attribute-text_string-value-if-false">19.872</a> and <span class="Attribute">text:string-value-if-true</span> <a href="#attribute-text_string-value-if-true">19.873</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:conditional-text&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:conditional-text&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_4_text_hidden-text_"><span style="margin-right:0.127cm;">7.7.4</span></a><a id="__RefHeading__1415442_253892949"/><a id="element-text_hidden-text"/>&lt;text:hidden-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:hidden-text&gt;</span> element hides the text it contains when a specified condition is true. If its <span class="Attribute">text:condition</span> attribute is missing or evaluates to false, the text content is displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:hidden-text&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:hidden-text&gt;</span> element has the following attributes: <span class="Attribute">text:condition</span> <a href="#attribute-text_condition_element-text_hidden-text">19.777.6</a>, <span class="Attribute">text:is-hidden</span> <a href="#attribute-text_is-hidden">19.815</a> and <span class="Attribute">text:string-value</span> <a href="#attribute-text_string-value_element-text_hidden-text">19.871.3</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:hidden-text&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:hidden-text&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_5_text_reference-ref_"><span style="margin-right:0.127cm;">7.7.5</span></a><a id="__RefHeading__1415444_253892949"/><a id="element-text_reference-ref"/><a id="Reference_Fields"/>&lt;text:reference-ref&gt; </h3><p class="Text_20_body">The <span class="Element">&lt;text:reference-ref&gt;</span> element represents a field that references a <span class="Element">&lt;text:reference-mark-start&gt;</span> or <span class="Element">&lt;text:reference-mark&gt;</span> element. Its <span class="Attribute">text:reference-format</span> attribute specifies what is displayed from the referenced element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:reference-ref&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:reference-ref&gt;</span> element has the following attributes: <span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> and <span class="Attribute">text:ref-name</span> <a href="#attribute-text_ref-name_element-text_reference-ref">19.853.4</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:reference-ref&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:reference-ref&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_6_text_bookmark-ref_"><span style="margin-right:0.127cm;">7.7.6</span></a><a id="__RefHeading__1415446_253892949"/><a id="element-text_bookmark-ref"/>&lt;text:bookmark-ref&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:bookmark-ref&gt;</span> element represents a field that references a <span class="Element">&lt;text:bookmark-start&gt;</span> or <span class="Element">&lt;text:bookmark&gt;</span> element. Its <span class="Attribute">text:reference-format</span> attribute specifies what is displayed from the referenced element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bookmark-ref&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bookmark-ref&gt;</span> element has the following attributes: <span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> and <span class="Attribute">text:ref-name</span> <a href="#attribute-text_ref-name_element-text_bookmark-ref">19.853.2</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:bookmark-ref&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bookmark-ref&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_7_text_note-ref_"><span style="margin-right:0.127cm;">7.7.7</span></a><a id="__RefHeading__1415448_253892949"/><a id="element-text_note-ref"/>&lt;text:note-ref&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:note-ref&gt;</span> element represents a field that references a <span class="Element">&lt;text:note&gt;</span> element. Its <span class="Attribute">text:reference-format</span> attribute specifies what is displayed from the referenced element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:note-ref&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:note-ref&gt;</span> element has the following attributes: <span class="Attribute">text:note-class</span> <a href="#attribute-text_note-class">19.837</a>, <span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> and <span class="Attribute">text:ref-name</span> <a href="#attribute-text_ref-name_element-text_note-ref">19.853.3</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:note-ref&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:note-ref&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_8_text_sequence-ref_"><span style="margin-right:0.127cm;">7.7.8</span></a><a id="__RefHeading__1415450_253892949"/><a id="element-text_sequence-ref"/>&lt;text:sequence-ref&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:sequence-ref&gt;</span> element represents a field that references a <span class="Element">&lt;text:sequence&gt;</span> element. Its <span class="Attribute">text:reference-format</span> attribute specifies what is displayed from the referenced element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sequence-ref&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sequence-ref&gt;</span> element has the following attributes: <span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> and <span class="Attribute">text:ref-name</span> <a href="#attribute-text_ref-name_element-text_sequence-ref">19.853.6</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:sequence-ref&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sequence-ref&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_9_text_script_"><span style="margin-right:0.127cm;">7.7.9</span></a><a id="__RefHeading__1415452_253892949"/><a id="element-text_script"/>&lt;text:script&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:script&gt;</span> element represents a field that stores scripts or sections of scripts.</p><p class="Note"><span class="Note_20_Label">Note:</span> The primary purpose of this field is to provide an equivalent to the <span class="Source_20_Text">&lt;script&gt;</span> element in <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>, so that the content of a <span class="Source_20_Text">&lt;script&gt;</span> element in HTML can be imported, edited, and exported using office application software.</p><p class="Text_20_body">The source code for the script can be stored in one of the following ways:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The <span class="Element">&lt;text:script&gt;</span> element contains the source code.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The source code is stored in an external file. The <span class="Attribute">xlink:href</span> attribute specifies the location of the source file.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The element shall have either an <span class="Attribute">xlink:href</span> attribute or content, but not both.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:script&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:script&gt;</span> element has the following attributes: <span class="Attribute">script:language</span> <a href="#attribute-script_language">19.430</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-text_script">19.910.36</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:script&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:script&gt;</span> element has character data content. Character data content is only permitted if a <span class="Attribute">xlink:href</span> attribute is not present.</p><h3 class="Heading_20_3"><a id="a7_7_10_text_execute-macro_"><span style="margin-right:0.127cm;">7.7.10</span></a><a id="__RefHeading__1415454_253892949"/><a id="element-text_execute-macro"/>&lt;text:execute-macro&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:execute-macro&gt;</span> element represents a field that contains the name of a macro that is executed when the field is activated. The element may contain a text description of the macro. The name of the macro to be executed is specified by the <span class="Attribute">text:name</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:execute-macro&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:execute-macro&gt;</span> element has the following attribute: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_execute-macro">19.835.7</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:execute-macro&gt;</span> element has the following child element: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:execute-macro&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_11_text_hidden-paragraph_"><span style="margin-right:0.127cm;">7.7.11</span></a><a id="__RefHeading__1415456_253892949"/><a id="element-text_hidden-paragraph"/>&lt;text:hidden-paragraph&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:hidden-paragraph&gt;</span> element is a field that represents a condition. If the condition evaluates to <span class="Datatype">false</span>, the paragraph where this element appears is displayed unless the paragraph is enclosed in any other hiding element. If the condition evaluates to <span class="Datatype">true</span>, the paragraph is hidden unless the paragraph contains another <span class="Element">&lt;text:hidden-paragraph&gt;</span> element whose condition evaluates to <span class="Datatype">false</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:hidden-paragraph&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:hidden-paragraph&gt;</span> element has the following attributes: <span class="Attribute">text:condition</span> <a href="#attribute-text_condition_element-text_hidden-paragraph">19.777.5</a> and <span class="Attribute">text:is-hidden</span> <a href="#attribute-text_is-hidden">19.815</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:hidden-paragraph&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:hidden-paragraph&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_12_text_dde-connection_"><span style="margin-right:0.127cm;">7.7.12</span></a><a id="__RefHeading__1415458_253892949"/><a id="element-text_dde-connection"/>&lt;text:dde-connection&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:dde-connection&gt;</span> element represents a field that is information from a DDE connection. The content of this field is the last data that was received from a DDE connection. This is used as the content of this field if the DDE connection cannot be accessed.</p><p class="Text_20_body">See <a href="#DDE_Connections">14.6</a> for the use of DDE connections.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:dde-connection&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:dde-connection&gt;</span> element has the following attribute: <span class="Attribute">text:connection-name</span> <a href="#attribute-text_connection-name">19.778</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:dde-connection&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:dde-connection&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_13_text_measure_"><span style="margin-right:0.127cm;">7.7.13</span></a><a id="__RefHeading__1415460_253892949"/><a id="element-text_measure"/>&lt;text:measure&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:measure&gt;</span> element represents a field that displays measure text. It can only be used within text that is contained in measure drawing objects.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:measure&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:measure&gt;</span> element has the following attribute: <span class="Attribute">text:kind</span> <a href="#attribute-text_kind">19.825</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:measure&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:measure&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a7_7_14_text_table-formula___deprecated_"><span style="margin-right:0.127cm;">7.7.14</span></a><a id="__RefHeading__1415462_253892949"/><a id="element-text_table-formula"/>&lt;text:table-formula&gt; (deprecated)</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-formula&gt;</span> element field is deprecated. It stores a formula to be used in tables.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-formula&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-formula&gt;</span> element has the following attributes: <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-text_table-formula">19.469.15</a>, <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_table-formula">19.796.7</a> and <span class="Attribute">text:formula</span> <a href="#attribute-text_formula">19.805</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:table-formula&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-formula&gt;</span> element has character data content.</p><h1 class="Heading_20_1"><a id="a8Text_Indexes"><span style="margin-right:0.127cm;">8</span></a><a id="__RefHeading__1415464_253892949"/><a id="Text_Indices"/>Text Indexes</h1><h2 class="Heading_20_2"><a id="a8_1Index_Marks"><span style="margin-right:0.127cm;">8.1</span></a><a id="__RefHeading__1415466_253892949"/>Index Marks</h2><h3 class="Heading_20_3"><a id="a8_1_1General"><span style="margin-right:0.127cm;">8.1.1</span></a><a id="__RefHeading__1415468_253892949"/>General</h3><p class="Text_20_body">OpenDocument text documents may contain automatically generated indexes. An index contains a sorted list of items of a specified type, where the sorting and the type of items are determined by the type of index.</p><p class="Text_20_body">There are three types of index marks that correspond to the three types of index that make use of index marks. The three types of index marks are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Table of contents index marks<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>User-defined index marks<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Alphabetical index marks<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The rules for index marks are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Index marks are represented by start and end elements or by non-enclosing index point elements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Start and end index elements use the <span class="Attribute">text:id</span> attribute to match start and end elements for an index mark.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Start and end index elements shall be contained in the same paragraph, with the start element occurring first in document order.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The attributes associated with an index mark are attached to the start element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The text between the start and end index elements is the text of the index entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Index marks can overlap.<span class="odfLiEnd"/> </p></li></ul><h3 class="Heading_20_3"><a id="a8_1_2_text_toc-mark-start_"><span style="margin-right:0.127cm;">8.1.2</span></a><a id="__RefHeading__1415470_253892949"/><a id="element-text_toc-mark-start"/>&lt;text:toc-mark-start&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:toc-mark-start&gt;</span> element marks the start of a table of contents index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:toc-mark-start&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:toc-mark-start&gt;</span> element has the following attributes: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_toc-mark-start">19.809.10</a> and <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_toc-mark-start">19.844.11</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:toc-mark-start&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_3_text_toc-mark-end_"><span style="margin-right:0.127cm;">8.1.3</span></a><a id="__RefHeading__1415472_253892949"/><a id="element-text_toc-mark-end"/>&lt;text:toc-mark-end&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:toc-mark-end&gt;</span> element marks the end of a table of contents index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:toc-mark-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:toc-mark-end&gt;</span> element has the following attribute: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_toc-mark-end">19.809.9</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:toc-mark-end&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_4_text_toc-mark_"><span style="margin-right:0.127cm;">8.1.4</span></a><a id="__RefHeading__1415474_253892949"/><a id="element-text_toc-mark"/>&lt;text:toc-mark&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:toc-mark&gt;</span> element represents a table of content index mark that does not enclose content. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:toc-mark&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:toc-mark&gt;</span> element has the following attributes: <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_toc-mark">19.844.10</a> and <span class="Attribute">text:string-value</span> <a href="#attribute-text_string-value_element-text_toc-mark">19.871.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:toc-mark&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_5_text_user-index-mark-start_"><span style="margin-right:0.127cm;">8.1.5</span></a><a id="__RefHeading__1415476_253892949"/><a id="element-text_user-index-mark-start"/>&lt;text:user-index-mark-start&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index-mark-start&gt;</span> element marks the start of a user-defined index entry. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-index-mark-start&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-index-mark-start&gt;</span> element has the following attributes: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_user-index-mark-start">19.809.12</a>, <span class="Attribute">text:index-name</span> <a href="#attribute-text_index-name">19.811</a> and <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_user-index-mark-start">19.844.13</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-index-mark-start&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_6_text_user-index-mark-end_"><span style="margin-right:0.127cm;">8.1.6</span></a><a id="__RefHeading__1415478_253892949"/><a id="element-text_user-index-mark-end"/>&lt;text:user-index-mark-end&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index-mark-end&gt;</span> element marks the end of the user-defined index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-index-mark-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-index-mark-end&gt;</span> element has the following attribute: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_user-index-mark-end">19.809.11</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-index-mark-end&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_7_text_user-index-mark_"><span style="margin-right:0.127cm;">8.1.7</span></a><a id="__RefHeading__1415480_253892949"/><a id="element-text_user-index-mark"/>&lt;text:user-index-mark&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index-mark&gt;</span> element represents a user defined index mark that does not enclose content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-index-mark&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-index-mark&gt;</span> element has the following attributes: <span class="Attribute">text:index-name</span> <a href="#attribute-text_index-name">19.811</a>, <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_user-index-mark">19.844.7</a> and <span class="Attribute">text:string-value</span> <a href="#attribute-text_string-value_element-text_user-index-mark">19.871.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-index-mark&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_8_text_alphabetical-index-mark-start_"><span style="margin-right:0.127cm;">8.1.8</span></a><a id="__RefHeading__1415482_253892949"/><a id="element-text_alphabetical-index-mark-start"/>&lt;text:alphabetical-index-mark-start&gt;</h3><p class="Text_20_body">The <a id="__DdeLink__648046_1871070752"/><span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> element marks the start of an alphabetical index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> element has the following attributes: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_alphabetical-index-mark-start">19.809.4</a>, <span class="Attribute">text:key1</span> <a href="#attribute-text_key1">19.821</a>, <span class="Attribute">text:key1-phonetic</span> <a href="#attribute-text_key1-phonetic">19.823</a>, <span class="Attribute">text:key2</span> <a href="#attribute-text_key2">19.822</a>, <span class="Attribute">text:key2-phonetic</span> <a href="#attribute-text_key2-phonetic">19.824</a>, <span class="Attribute">text:main-entry</span> <a href="#attribute-text_main-entry">19.831</a> and <span class="Attribute">text:string-value-phonetic</span> <a href="#attribute-text_string-value-phonetic">19.870</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_9_text_alphabetical-index-mark-end_"><span style="margin-right:0.127cm;">8.1.9</span></a><a id="__RefHeading__1415484_253892949"/><a id="element-text_alphabetical-index-mark-end"/>&lt;text:alphabetical-index-mark-end&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> element marks the end of an alphabetical index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> element has the following attribute: <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-text_alphabetical-index-mark-end">19.809.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_10_text_alphabetical-index-mark_"><span style="margin-right:0.127cm;">8.1.10</span></a><a id="__RefHeading__1415486_253892949"/><a id="element-text_alphabetical-index-mark"/>&lt;text:alphabetical-index-mark&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index-mark&gt;</span> element represents a user defined index mark that does not enclose content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> element has the following attributes: <span class="Attribute">text:key1</span> <a href="#attribute-text_key1">19.821</a>, <span class="Attribute">text:key1-phonetic</span> <a href="#attribute-text_key1-phonetic">19.823</a>, <span class="Attribute">text:key2</span> <a href="#attribute-text_key2">19.822</a>, <span class="Attribute">text:key2-phonetic</span> <a href="#attribute-text_key2-phonetic">19.824</a>, <span class="Attribute">text:main-entry</span> <a href="#attribute-text_main-entry">19.831</a>, <span class="Attribute">text:string-value</span> <a href="#attribute-text_string-value_element-text_alphabetical-index-mark">19.871.2</a> and <span class="Attribute">text:string-value-phonetic</span> <a href="#attribute-text_string-value-phonetic">19.870</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_1_11_text_bibliography-mark_"><span style="margin-right:0.127cm;">8.1.11</span></a><a id="__RefHeading__1415488_253892949"/><a id="element-text_bibliography-mark"/>&lt;text:bibliography-mark&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:bibliography-mark&gt;</span> element contains the text and information for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bibliography-mark&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bibliography-mark&gt;</span> element has the following attributes: <span class="Attribute">text:address</span> <a href="#attribute-text_address">19.751</a>, <span class="Attribute">text:annote</span> <a href="#attribute-text_annote">19.755</a>, <span class="Attribute">text:author</span> <a href="#attribute-text_author">19.756</a>, <span class="Attribute">text:bibliography-type</span> <a href="#attribute-text_bibliography-type">19.758</a>, <span class="Attribute">text:booktitle</span> <a href="#attribute-text_booktitle">19.759</a>, <span class="Attribute">text:chapter</span> <a href="#attribute-text_chapter">19.767</a>, <span class="Attribute">text:custom1</span> <a href="#attribute-text_custom1">19.786</a>, <span class="Attribute">text:custom2</span> <a href="#attribute-text_custom2">19.787</a>, <span class="Attribute">text:custom3</span> <a href="#attribute-text_custom3">19.788</a>, <span class="Attribute">text:custom4</span> <a href="#attribute-text_custom4">19.789</a>, <span class="Attribute">text:custom5</span> <a href="#attribute-text_custom5">19.790</a>, <span class="Attribute">text:edition</span> <a href="#attribute-text_edition">19.800</a>, <span class="Attribute">text:editor</span> <a href="#attribute-text_editor">19.801</a>, <span class="Attribute">text:howpublished</span> <a href="#attribute-text_howpublished">19.807</a>, <span class="Attribute">text:identifier</span> <a href="#attribute-text_identifier">19.810</a>, <span class="Attribute">text:institution</span> <a href="#attribute-text_institution">19.814</a>, <span class="Attribute">text:isbn</span> <a href="#attribute-text_isbn">19.817</a>, <span class="Attribute">text:issn</span> <a href="#attribute-text_issn">19.818</a>, <span class="Attribute">text:journal</span> <a href="#attribute-text_journal">19.819</a>, <span class="Attribute">text:month</span> <a href="#attribute-text_month">19.834</a>, <span class="Attribute">text:note</span> <a href="#attribute-text_note">19.836</a>, <span class="Attribute">text:number</span> <a href="#attribute-text_number">19.838</a>, <span class="Attribute">text:organizations</span> <a href="#attribute-text_organizations">19.843</a>, <span class="Attribute">text:pages</span> <a href="#attribute-text_pages">19.846</a>, <span class="Attribute">text:publisher</span> <a href="#attribute-text_publisher">19.852</a>, <span class="Attribute">text:report-type</span> <a href="#attribute-text_report-type">19.856</a>, <span class="Attribute">text:school</span> <a href="#attribute-text_school">19.860</a>, <span class="Attribute">text:series</span> <a href="#attribute-text_series">19.862</a>, <span class="Attribute">text:title</span> <a href="#attribute-text_title">19.882</a>, <span class="Attribute">text:url</span> <a href="#attribute-text_url">19.884</a>, <span class="Attribute">text:volume</span> <a href="#attribute-text_volume">19.902</a> and <span class="Attribute">text:year</span> <a href="#attribute-text_year">19.903</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:bibliography-mark&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bibliography-mark&gt;</span> element has character data content.</p><h2 class="Heading_20_2"><a id="a8_2Index_Structure"><span style="margin-right:0.127cm;">8.2</span></a><a id="__RefHeading__1415490_253892949"/>Index Structure</h2><h3 class="Heading_20_3"><a id="a8_2_1General"><span style="margin-right:0.127cm;">8.2.1</span></a><a id="__RefHeading__1415492_253892949"/>General</h3><p class="Text_20_body">An index consists of two parts: the index source, and the index body. </p><p class="Text_20_body">The index source is specific to the type of index it is being used for. It contains the information necessary to generate the index content. </p><h3 class="Heading_20_3"><a id="a8_2_2_text_index-body_"><span style="margin-right:0.127cm;">8.2.2</span></a><a id="__RefHeading__1415494_253892949"/><a id="element-text_index-body"/>&lt;text:index-body&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-body&gt;</span> element contains an index.</p><p class="Text_20_body">The <span class="Element">&lt;text:index-body&gt;</span> element is used for all types of indexes. It contains the index content generated to form the index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-body&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-body&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-body&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h3 class="Heading_20_3"><a id="a8_2_3_text_index-title_"><span style="margin-right:0.127cm;">8.2.3</span></a><a id="__RefHeading__1415496_253892949"/><a id="element-text_index-title"/>&lt;text:index-title&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-title&gt;</span> element contains the title of an index. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-title&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a> and <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-title&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_index-title">19.835.9</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-title">19.874.19</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-title&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h2 class="Heading_20_2"><a id="a8_3_text_table-of-content_"><span style="margin-right:0.127cm;">8.3</span></a><a id="__RefHeading__1415498_253892949"/><a id="element-text_table-of-content"/>&lt;text:table-of-content&gt;</h2><h3 class="Heading_20_3"><a id="a8_3_1General"><span style="margin-right:0.127cm;">8.3.1</span></a><a id="__RefHeading__1415500_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-of-content&gt;</span> element represents a table of contents for a document. </p><p class="Text_20_body">The items that can be listed in a table of contents are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Headings (as defined by the outline structure of the document), up to a selected level.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Table of contents index marks.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Paragraphs formatted with specified paragraph styles.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note</span>: Paragraphs may be selected for inclusion in a table of contents based on their styles. Selection is based on a paragraph's style matching a style specified by the <span class="Element">&lt;text:index-source-styles&gt;</span> child element of a <span class="Element">&lt;text:table-of-content-source&gt;</span> child element of a <span class="Element">&lt;text:table-of-content&gt;</span> element, when the <span class="Attribute">text:use-index-source-styles</span> attribute of the child <span class="Element">&lt;text:index-source-styles&gt;</span> element has the value <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-of-content&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-</span><span class="Element">left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-of-content&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_table-of-content">19.835.17</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_table-of-content">19.874.35</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-of-content&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a> and <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a>.</p><h3 class="Heading_20_3"><a id="a8_3_2_text_table-of-content-source_"><span style="margin-right:0.127cm;">8.3.2</span></a><a id="__RefHeading__1415502_253892949"/><a id="element-text_table-of-content-source"/>&lt;text:table-of-content-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-of-content-source&gt;</span> element specifies how a table of contents is generated. It also specifies the styles to be applied to index entries.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-of-content-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-of-content-source&gt;</span> element has the following attributes: <span class="Attribute">text:index-scope</span> <a href="#attribute-text_index-scope">19.812</a>, <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_table-of-content-source">19.844.9</a>, <span class="Attribute">text:relative-tab-stop-position</span> <a href="#attribute-text_relative-tab-stop-position">19.855</a>, <span class="Attribute">text:use-index-marks</span> <a href="#attribute-text_use-index-marks">19.890</a>, <span class="Attribute">text:use-index-source-styles</span> <a href="#attribute-text_use-index-source-styles">19.891</a> and <span class="Attribute">text:use-outline-level</span> <a href="#attribute-text_use-outline-level">19.896</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-of-content-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-source-styles&gt;</span> <a href="#element-text_index-source-styles">8.10</a>, <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a> and <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a>.</p><h3 class="Heading_20_3"><a id="a8_3_3_text_table-of-content-entry-template_"><span style="margin-right:0.127cm;">8.3.3</span></a><a id="__RefHeading__1415504_253892949"/><a id="element-text_table-of-content-entry-template"/>&lt;text:table-of-content-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> element specifies the format of an index entry for a specified outline level. </p><p class="Text_20_body">For each <span class="Element">&lt;text:table-of-content-source&gt;</span> element, there shall not be more than one <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> for a specified outline level. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> element has the following attributes: <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_table-of-content-entry-template">19.844.8</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_table-of-content-entry-template">19.874.36</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>, <span class="Element">&lt;text:index-entry-link-end&gt;</span> <a href="#element-text_index-entry-link-end">8.13.8</a>, <span class="Element">&lt;text:index-entry-link-start&gt;</span> <a href="#element-text_index-entry-link-start">8.13.7</a>, <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>, <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a> and <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><h2 class="Heading_20_2"><a id="a8_4_text_illustration-index_"><span style="margin-right:0.127cm;">8.4</span></a><a id="__RefHeading__1415506_253892949"/><a id="element-text_illustration-index"/>&lt;text:illustration-index&gt;</h2><h3 class="Heading_20_3"><a id="a8_4_1General"><span style="margin-right:0.127cm;">8.4.1</span></a><a id="__RefHeading__1415508_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:illustration-index&gt;</span> element represents an index of the images and graphics in a current document or chapter. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:illustration-index&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:illustration-index&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_illustration-index">19.835.8</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_illustration-index">19.874.8</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:illustration-index&gt;</span> element has the following child elements: <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a> and <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>.</p><h3 class="Heading_20_3"><a id="a8_4_2_text_illustration-index-source_"><span style="margin-right:0.127cm;">8.4.2</span></a><a id="__RefHeading__1415510_253892949"/><a id="element-text_illustration-index-source"/>&lt;text:illustration-index-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:illustration-index-source&gt;</span> element specifies how an index of illustrations is generated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:illustration-index-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:illustration-index-source&gt;</span> element has the following attributes: <span class="Attribute">text:caption-sequence-format</span> <a href="#attribute-text_caption-sequence-format">19.764</a>, <span class="Attribute">text:caption-sequence-name</span> <a href="#attribute-text_caption-sequence-name">19.765</a>, <span class="Attribute">text:index-scope</span> <a href="#attribute-text_index-scope">19.812</a>, <span class="Attribute">text:relative-tab-stop-position</span> <a href="#attribute-text_relative-tab-stop-position">19.855</a> and <span class="Attribute">text:use-caption</span> <a href="#attribute-text_use-caption">19.885</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:illustration-index-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a> and <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a>.</p><h3 class="Heading_20_3"><a id="a8_4_3_text_illustration-index-entry-template_"><span style="margin-right:0.127cm;">8.4.3</span></a><a id="__RefHeading__1415512_253892949"/><a id="element-text_illustration-index-entry-template"/>&lt;text:illustration-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> element specifies the format of an index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_illustration-index-entry-template">19.874.9</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>, <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>, <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a> and <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><h2 class="Heading_20_2"><a id="a8_5_text_table-index_"><span style="margin-right:0.127cm;">8.5</span></a><a id="__RefHeading__1415514_253892949"/><a id="element-text_table-index"/>&lt;text:table-index&gt;</h2><h3 class="Heading_20_3"><a id="a8_5_1General"><span style="margin-right:0.127cm;">8.5.1</span></a><a id="__RefHeading__1415516_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-index&gt;</span> element represents an index of the tables in a document or chapter.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-index&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-index&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_table-index">19.835.18</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_table-index">19.874.37</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-index&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a> and <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>.</p><h3 class="Heading_20_3"><a id="a8_5_2_text_table-index-source_"><span style="margin-right:0.127cm;">8.5.2</span></a><a id="__RefHeading__1415518_253892949"/><a id="element-text_table-index-source"/>&lt;text:table-index-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-index-source&gt;</span> element specifies how an index of tables is generated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-index-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-index-source&gt;</span> element has the following attributes: <span class="Attribute">text:caption-sequence-format</span> <a href="#attribute-text_caption-sequence-format">19.764</a>, <span class="Attribute">text:caption-sequence-name</span> <a href="#attribute-text_caption-sequence-name">19.765</a>, <span class="Attribute">text:index-scope</span> <a href="#attribute-text_index-scope">19.812</a>, <span class="Attribute">text:relative-tab-stop-position</span> <a href="#attribute-text_relative-tab-stop-position">19.855</a> and <span class="Attribute">text:use-caption</span> <a href="#attribute-text_use-caption">19.885</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-index-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a> and <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>.</p><h3 class="Heading_20_3"><a id="a8_5_3_text_table-index-entry-template_"><span style="margin-right:0.127cm;">8.5.3</span></a><a id="__RefHeading__1415520_253892949"/><a id="element-text_table-index-entry-template"/>&lt;text:table-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:table-index-entry-template&gt;</span> element specifies the format of an index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:table-index-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:table-index-entry-template&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_table-index-entry-template">19.874.34</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:table-index-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>, <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>, <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a> and <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><h2 class="Heading_20_2"><a id="a8_6_text_object-index_"><span style="margin-right:0.127cm;">8.6</span></a><a id="__RefHeading__1415522_253892949"/><a id="element-text_object-index"/>&lt;text:object-index&gt;</h2><h3 class="Heading_20_3"><a id="a8_6_1General"><span style="margin-right:0.127cm;">8.6.1</span></a><a id="__RefHeading__1415524_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:object-index&gt;</span> element represents an index of the objects in a document or chapter. The types of objects that should be included in the index are defined by the <span class="Element">&lt;text:object-index-source&gt;</span> element. <a href="#element-text_object-index-source">8.6.2</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:object-index&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:object-index&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_object-index">19.835.10</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_object-index">19.874.26</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:object-index&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a> and <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><h3 class="Heading_20_3"><a id="a8_6_2_text_object-index-source_"><span style="margin-right:0.127cm;">8.6.2</span></a><a id="__RefHeading__1415526_253892949"/><a id="element-text_object-index-source"/>&lt;text:object-index-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:object-index-source&gt;</span> element specifies which object types to include in the index of objects. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:object-index-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:object-index-source&gt;</span> element has the following attributes: <span class="Attribute">text:index-scope</span> <a href="#attribute-text_index-scope">19.812</a>, <span class="Attribute">text:relative-tab-stop-position</span> <a href="#attribute-text_relative-tab-stop-position">19.855</a>, <span class="Attribute">text:use-chart-objects</span> <a href="#attribute-text_use-chart-objects">19.886</a>, <span class="Attribute">text:use-draw-objects</span> <a href="#attribute-text_use-draw-objects">19.887</a>, <span class="Attribute">text:use-math-objects</span> <a href="#attribute-text_use-math-objects">19.893</a>, <span class="Attribute">text:use-other-objects</span> <a href="#attribute-text_use-other-objects">19.895</a> and <span class="Attribute">text:use-spreadsheet-objects</span> <a href="#attribute-text_use-spreadsheet-objects">19.898</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:object-index-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a> and <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>.</p><h3 class="Heading_20_3"><a id="a8_6_3_text_object-index-entry-template_"><span style="margin-right:0.127cm;">8.6.3</span></a><a id="__RefHeading__1415528_253892949"/><a id="element-text_object-index-entry-template"/>&lt;text:object-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:object-index-entry-template&gt;</span> element specifies the format of an index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:object-index-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:object-index-entry-template&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_object-index-entry-template">19.874.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:object-index-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>, <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>, <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a> and <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><h2 class="Heading_20_2"><a id="a8_7_text_user-index_"><span style="margin-right:0.127cm;">8.7</span></a><a id="__RefHeading__1415530_253892949"/><a id="element-text_user-index"/>&lt;text:user-index&gt;</h2><h3 class="Heading_20_3"><a id="a8_7_1General"><span style="margin-right:0.127cm;">8.7.1</span></a><a id="__RefHeading__1415532_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index&gt;</span> element represents a user-defined index. A user-defined index may include entries from the following sources:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Index marks<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Paragraphs formatted using specified paragraph styles<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Tables, images, or objects<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Text frames<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-index&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-index&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_user-index">19.835.23</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_user-index">19.874.38</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-index&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><h3 class="Heading_20_3"><a id="a8_7_2_text_user-index-source_"><span style="margin-right:0.127cm;">8.7.2</span></a><a id="__RefHeading__1415534_253892949"/><a id="element-text_user-index-source"/>&lt;text:user-index-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index-source&gt;</span> element defines the generation of user defined indexes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-index-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-index-source&gt;</span> element has the following attributes: <span class="Attribute">text:copy-outline-levels</span> <a href="#attribute-text_copy-outline-levels">19.782</a>, <span class="Attribute">text:index-name</span> <a href="#attribute-text_index-name">19.811</a>, <span class="Attribute">text:index-scope</span> <a href="#attribute-text_index-scope">19.812</a>, <span class="Attribute">text:relative-tab-stop-position</span> <a href="#attribute-text_relative-tab-stop-position">19.855</a>, <span class="Attribute">text:use-floating-frames</span> <a href="#attribute-text_use-floating-frames">19.888</a>, <span class="Attribute">text:use-graphics</span> <a href="#attribute-text_use-graphics">19.889</a>, <span class="Attribute">text:use-index-marks</span> <a href="#attribute-text_use-index-marks">19.890</a>, <span class="Attribute">text:use-index-source-styles</span> <a href="#attribute-text_use-index-source-styles">19.891</a>, <span class="Attribute">text:use-objects</span> <a href="#attribute-text_use-objects">19.894</a> and <span class="Attribute">text:use-tables</span> <a href="#attribute-text_use-tables">19.899</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-index-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-source-styles&gt;</span> <a href="#element-text_index-source-styles">8.10</a>, <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a> and <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><h3 class="Heading_20_3"><a id="a8_7_3_text_user-index-entry-template_"><span style="margin-right:0.127cm;">8.7.3</span></a><a id="__RefHeading__1415536_253892949"/><a id="element-text_user-index-entry-template"/>&lt;text:user-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:user-index-entry-template&gt;</span> element contains entry elements for chapter number, page number, entry text, text spans, and tab stops.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:user-index-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:user-index-entry-template&gt;</span> element has the following attributes: <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_user-index-entry-template">19.844.12</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_user-index-entry-template">19.874.39</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:user-index-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>, <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>, <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a> and <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><h2 class="Heading_20_2"><a id="a8_8_text_alphabetical-index_"><span style="margin-right:0.127cm;">8.8</span></a><a id="__RefHeading__1415538_253892949"/><a id="element-text_alphabetical-index"/>&lt;text:alphabetical-index&gt;</h2><h3 class="Heading_20_3"><a id="a8_8_1General"><span style="margin-right:0.127cm;">8.8.1</span></a><a id="__RefHeading__1415540_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:alphabetical-index&gt;</span> element represents an index which is based on alphabetical index marks. The entries in an alphabetical index are sorted.</p><p class="Note"><span class="Note_20_Label">Note:</span> Sort orders are locale specific.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-</span><span class="Element">body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_alphabetical-index">19.835.2</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_alphabetical-index">19.874.3</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index&gt;</span> element has the following child elements: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a> and <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>.</p><h3 class="Heading_20_3"><a id="a8_8_2_text_alphabetical-index-source_"><span style="margin-right:0.127cm;">8.8.2</span></a><a id="__RefHeading__1415542_253892949"/><a id="element-text_alphabetical-index-source"/>&lt;text:alphabetical-index-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:alphabetical-index-source&gt;</span> element specifies how an alphabetical index is generated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index-source&gt;</span> element has the following attributes: <span class="Attribute">fo:country</span> <a href="#attribute-fo_country_element-text_alphabetical-index-source">19.234.1</a>, <span class="Attribute">fo:language</span> <a href="#attribute-fo_language_element-text_alphabetical-index-source">19.236.2</a>, <span class="Attribute">fo:script</span> <a href="#attribute-fo_script_element-text_alphabetical-index-source">19.242.2</a>, <span class="Attribute">style:rfc-language-tag</span> <a href="#attribute-style_rfc-language-tag">19.512</a>, <span class="Attribute">text:alphabetical-separators</span> <a href="#attribute-text_alphabetical-separators">19.752</a>, <span class="Attribute">text:capitalize-entries</span> <a href="#attribute-text_capitalize-entries">19.762</a>, <span class="Attribute">text:combine-entries</span> <a href="#attribute-text_combine-entries">19.772</a>, <span class="Attribute">text:combine-entries-with-dash</span> <a href="#attribute-text_combine-entries-with-dash">19.773</a>, <span class="Attribute">text:combine-entries-with-pp</span> <a href="#attribute-text_combine-entries-with-pp">19.774</a>, <span class="Attribute">text:comma-separated</span> <a href="#attribute-text_comma-separated">19.775</a>, <span class="Attribute">text:ignore-case</span> <a href="#attribute-text_ignore-case">19.813</a>, <span class="Attribute">text:index-scope</span> <a href="#attribute-text_index-scope">19.812</a>, <span class="Attribute">text:main-entry-style-name</span> <a href="#attribute-text_main-entry-style-name">19.832</a>, <span class="Attribute">text:relative-tab-stop-position</span> <a href="#attribute-text_relative-tab-stop-position">19.855</a>, <span class="Attribute">text:sort-algorithm</span> <a href="#attribute-text_sort-algorithm">19.865</a> and <span class="Attribute">text:use-keys-as-entries</span> <a href="#attribute-text_use-keys-as-entries">19.892</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a> and <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a>.</p><h3 class="Heading_20_3"><a id="a8_8_3_text_alphabetical-index-auto-mark-file_"><span style="margin-right:0.127cm;">8.8.3</span></a><a id="__RefHeading__1415544_253892949"/><a id="element-text_alphabetical-index-auto-mark-file"/>&lt;text:alphabetical-index-auto-mark-file&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> element specifies an auto mark file. An auto mark file is a file that defines a list of terms that may be used by consumers to automatically insert alphabetical index marks (see <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>, <a href="#element-text_alphabetical-index-mark">8.1.10</a>).</p><p class="Text_20_body">The format of an index mark file is implementation-defined. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> element has the following attributes: <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-text_alphabetical-index-auto-mark-file">19.910.34</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_8_4_text_alphabetical-index-entry-template_"><span style="margin-right:0.127cm;">8.8.4</span></a><a id="__RefHeading__1415546_253892949"/><a id="element-text_alphabetical-index-entry-template"/>&lt;text:alphabetical-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> element specifies the format of an alphabetical index entry. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> element has the following attributes: <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_alphabetical-index-entry-template">19.844.2</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_alphabetical-index-entry-template">19.874.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>, <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>, <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a> and <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><h2 class="Heading_20_2"><a id="a8_9_text_bibliography_"><span style="margin-right:0.127cm;">8.9</span></a><a id="__RefHeading__1415548_253892949"/><a id="element-text_bibliography"/>&lt;text:bibliography&gt;</h2><h3 class="Heading_20_3"><a id="a8_9_1General"><span style="margin-right:0.127cm;">8.9.1</span></a><a id="__RefHeading__1415550_253892949"/>General</h3><p class="Text_20_body">The <span class="Element">&lt;text:bibliography&gt;</span> element represents a bibliography constructed from bibliography index marks.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bibliography&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bibliography&gt;</span> element has the following attributes: <span class="Attribute">text:name</span> <a href="#attribute-text_name_element-text_bibliography">19.835.3</a>, <span class="Attribute">text:protected</span> <a href="#attribute-text_protected">19.849</a>, <span class="Attribute">text:protection-key</span> <a href="#attribute-text_protection-key">19.850</a>, <span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>, <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_bibliography">19.874.5</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bibliography&gt;</span> element has the following child elements: <span class="Element">&lt;text:bibliography-source&gt;</span> <a href="#element-text_bibliography-source">8.9.2</a> and <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>.</p><h3 class="Heading_20_3"><a id="a8_9_2_text_bibliography-source_"><span style="margin-right:0.127cm;">8.9.2</span></a><a id="__RefHeading__1415552_253892949"/><a id="element-text_bibliography-source"/>&lt;text:bibliography-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:bibliography-source&gt;</span> element specifies how a bibliography is generated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bibliography-source&gt;</span> element is usable within the following element: <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bibliography-source&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bibliography-source&gt;</span> element has the following child elements: <span class="Element">&lt;text:bibliography-entry-template&gt;</span> <a href="#element-text_bibliography-entry-template">8.9.3</a> and <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a>.</p><h3 class="Heading_20_3"><a id="a8_9_3_text_bibliography-entry-template_"><span style="margin-right:0.127cm;">8.9.3</span></a><a id="__RefHeading__1415554_253892949"/><a id="element-text_bibliography-entry-template"/>&lt;text:bibliography-entry-template&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:bibliography-entry-template&gt;</span> element specifies the formatting for a bibliographic entry. </p><p class="Text_20_body">There shall be no more than one <span class="Element">&lt;text:bibliography-entry-template&gt;</span> element for each type of entry within any <span class="Element">&lt;text:bibliography-source&gt;</span> element. <a href="#element-text_bibliography-source">8.9.2</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bibliography-entry-template&gt;</span> element is usable within the following element: <span class="Element">&lt;text:bibliography-source&gt;</span> <a href="#element-text_bibliography-source">8.9.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bibliography-entry-template&gt;</span> element has the following attributes: <span class="Attribute">text:bibliography-type</span> <a href="#attribute-text_bibliography-type">19.758</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_bibliography-entry-template">19.874.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bibliography-entry-template&gt;</span> element has the following child elements: <span class="Element">&lt;text:index-entry-bibliography&gt;</span> <a href="#element-text_index-entry-bibliography">8.13.5</a>, <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a> and <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a>.</p><h2 class="Heading_20_2"><a id="a8_10_text_index-source-styles_"><span style="margin-right:0.127cm;">8.10</span></a><a id="__RefHeading__1415556_253892949"/><a id="element-text_index-source-styles"/>&lt;text:index-source-styles&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:index-source-styles&gt;</span> element contains all of the <span class="Element">&lt;text:index-source-style&gt;</span> elements for a specified outline level. There can only be one <span class="Element">&lt;text:index-source-styles&gt;</span> element for each outline level.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-source-styles&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-source-styles&gt;</span> element has the following attribute: <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_index-source-styles">19.844.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-source-styles&gt;</span> element has the following child element: <span class="Element">&lt;text:index-source-style&gt;</span> <a href="#element-text_index-source-style">8.11</a>.</p><h2 class="Heading_20_2"><a id="a8_11_text_index-source-style_"><span style="margin-right:0.127cm;">8.11</span></a><a id="__RefHeading__1415558_253892949"/><a id="element-text_index-source-style"/>&lt;text:index-source-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:index-source-style&gt;</span> element specifies the name of a style or a class. Paragraphs formatted using that style or class are included in the index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-source-style&gt;</span> element is usable within the following element: <span class="Element">&lt;text:index-source-styles&gt;</span> <a href="#element-text_index-source-styles">8.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-source-style&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-source-style">19.874.18</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-source-style&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a8_12_text_index-title-template_"><span style="margin-right:0.127cm;">8.12</span></a><a id="__RefHeading__1415560_253892949"/><a id="element-text_index-title-template"/>&lt;text:index-title-template&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:index-title-template&gt;</span> element specifies the style and content of the index title. There can only be one <span class="Element">&lt;text:index-title-template&gt;</span> element contained in a <span class="Element">&lt;text:table-of-content-source&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-title-template&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>, <span class="Element">&lt;text:bibliography-source&gt;</span> <a href="#element-text_bibliography-source">8.9.2</a>, <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a>, <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>, <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>, <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-title-template&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-title-template">19.874.20</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:index-title-template&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-title-template&gt;</span> element has character data content.</p><h2 class="Heading_20_2"><a id="a8_13Index_Template_Entries"><span style="margin-right:0.127cm;">8.13</span></a><a id="__RefHeading__1415562_253892949"/><a id="Index_Template_Entries"/>Index Template Entries</h2><h3 class="Heading_20_3"><a id="a8_13_1_text_index-entry-chapter_"><span style="margin-right:0.127cm;">8.13.1</span></a><a id="__RefHeading__1415564_253892949"/><a id="element-text_index-entry-chapter"/>&lt;text:index-entry-chapter&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-chapter&gt;</span> element represents the chapter number where an index entry is located. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-chapter&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>, <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a>, <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>, <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>, <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a> and <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-chapter&gt;</span> element has the following attributes: <span class="Attribute">text:display</span> <a href="#attribute-text_display_element-text_index-entry-chapter">19.796.5</a>, <span class="Attribute">text:outline-level</span> <a href="#attribute-text_outline-level_element-text_index-entry-chapter">19.844.5</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-chapter">19.874.11</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-chapter&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_13_2_text_index-entry-text_"><span style="margin-right:0.127cm;">8.13.2</span></a><a id="__RefHeading__1415566_253892949"/><a id="element-text_index-entry-text"/>&lt;text:index-entry-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-text&gt;</span> element contains the text of an index entry. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-text&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>, <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a>, <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>, <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>, <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a> and <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-text&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-text">19.874.17</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-text&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_13_3_text_index-entry-page-number_"><span style="margin-right:0.127cm;">8.13.3</span></a><a id="__RefHeading__1415568_253892949"/><a id="element-text_index-entry-page-number"/>&lt;text:index-entry-page-number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-page-number&gt;</span> element represents the number of the chapter where an index entry is located. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-page-number&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>, <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a>, <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>, <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>, <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a> and <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-page-number&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-page-number">19.874.14</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-page-number&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_13_4_text_index-entry-span_"><span style="margin-right:0.127cm;">8.13.4</span></a><a id="__RefHeading__1415570_253892949"/><a id="element-text_index-entry-span"/>&lt;text:index-entry-span&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-span&gt;</span> element represents a fixed string within an index entry. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-span&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>, <span class="Element">&lt;text:bibliography-entry-</span><span class="Element">template&gt;</span> <a href="#element-text_bibliography-entry-template">8.9.3</a>, <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a>, <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>, <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>, <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a> and <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-span&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-span">19.874.15</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:index-entry-span&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-span&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a8_13_5_text_index-entry-bibliography_"><span style="margin-right:0.127cm;">8.13.5</span></a><a id="__RefHeading__1415572_253892949"/><a id="element-text_index-entry-bibliography"/>&lt;text:index-entry-bibliography&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-bibliography&gt;</span> element specifies the field of a bibliographic entry that will be displayed in an index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-bibliography&gt;</span> element is usable within the following element: <span class="Element">&lt;text:bibliography-entry-template&gt;</span> <a href="#element-text_bibliography-entry-template">8.9.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-bibliography&gt;</span> element has the following attributes: <span class="Attribute">text:bibliography-data-field</span> <a href="#attribute-text_bibliography-data-field">19.757</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-bibliography">19.874.10</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-bibliography&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_13_6_text_index-entry-tab-stop_"><span style="margin-right:0.127cm;">8.13.6</span></a><a id="__RefHeading__1415574_253892949"/><a id="element-text_index-entry-tab-stop"/>&lt;text:index-entry-tab-stop&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> element represents a tab stop within an index entry. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>, <span class="Element">&lt;text:bibliography-entry-template&gt;</span> <a href="#element-text_bibliography-entry-template">8.9.3</a>, <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a>, <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>, <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>, <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a> and <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> element has the following attributes: <span class="Attribute">style:leader-char</span> <a href="#attribute-style_leader-char">19.483</a>, <span class="Attribute">style:position</span> <a href="#attribute-style_position_element-text_index-entry-tab-stop">19.508.4</a>, <span class="Attribute">style:type</span> <a href="#attribute-style_type_element-text_index-entry-tab-stop">19.515.2</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-tab-stop">19.874.16</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_13_7_text_index-entry-link-start_"><span style="margin-right:0.127cm;">8.13.7</span></a><a id="__RefHeading__1415576_253892949"/><a id="element-text_index-entry-link-start"/>&lt;text:index-entry-link-start&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-link-start&gt;</span> element represents the start of a hyperlink index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-link-start&gt;</span> element is usable within the following element: <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-link-start&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-link-start">19.874.13</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-link-start&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a8_13_8_text_index-entry-link-end_"><span style="margin-right:0.127cm;">8.13.8</span></a><a id="__RefHeading__1415578_253892949"/><a id="element-text_index-entry-link-end"/>&lt;text:index-entry-link-end&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:index-entry-link-end&gt;</span> element represents the end of a hyperlink index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:index-entry-link-end&gt;</span> element is usable within the following element: <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:index-entry-link-end&gt;</span> element has the following attribute: <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_index-entry-link-end">19.874.12</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:index-entry-link-end&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a9Tables"><span style="margin-right:0.127cm;">9</span></a><a id="__RefHeading__1415580_253892949"/><a id="Table_Content"/>Tables</h1><h2 class="Heading_20_2"><a id="a9_1Basic_Tables"><span style="margin-right:0.127cm;">9.1</span></a><a id="__RefHeading__1415582_253892949"/>Basic Tables</h2><h3 class="Heading_20_3"><a id="a9_1_1General"><span style="margin-right:0.127cm;">9.1.1</span></a><a id="__RefHeading__1415584_253892949"/>General</h3><p class="Text_20_body">The representation of tables is based on the concept of grids of rows and columns. In markup, rows are partitioned into table cells. Columns are implied by taking together all cells with the same position within the rows. </p><p class="Text_20_body">Rows and columns appear in <span class="Def">row groups</span> and <span class="Def">column groups</span>. These groups specify whether to repeat a row or column on the next page.</p><p class="Note"><span class="Note_20_Label">Note:</span> There is only one model for tables, although tables, such as for spreadsheets, may have additional capabilities when compared to tables in text documents.</p><p class="Text_20_body">Tables may be nested, that is, tables may occur within tables.</p><h3 class="Heading_20_3"><a id="a9_1_2_table_table_"><span style="margin-right:0.127cm;">9.1.2</span></a><a id="__RefHeading__1415586_253892949"/><a id="element-table_table"/>&lt;table:table&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table&gt;</span> element is the root element for a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table&gt;</span> element is usable within the following elements: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a>, <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:dde-link&gt;</span> <a href="#element-table_dde-link">14.6.4</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table&gt;</span> element has the following attributes: <span class="Attribute">table:is-sub-table</span> <a href="#attribute-table_is-sub-table">19.655</a>, <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_table">19.673.13</a>, <span class="Attribute">table:print</span> <a href="#attribute-table_print">19.693</a>, <span class="Attribute">table:print-ranges</span> <a href="#attribute-table_print-ranges">19.694</a>, <span class="Attribute">table:protected</span> <a href="#attribute-table_protected_element-table_table">19.696.4</a>, <span class="Attribute">table:protection-key</span> <a href="#attribute-table_protection-key">19.697</a>, <span class="Attribute">table:protection-key-digest-algorithm</span> <a href="#attribute-table_protection-key-digest-algorithm">19.698</a>, <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_table">19.726.16</a>, <span class="Attribute">table:template-name</span> <a href="#attribute-table_template-name">19.732</a>, <span class="Attribute">table:use-banding-columns-styles</span> <a href="#attribute-table_use-banding-columns-styles">19.736</a>, <span class="Attribute">table:use-banding-rows-styles</span> <a href="#attribute-table_use-banding-rows-styles">19.737</a>, <span class="Attribute">table:use-first-column-styles</span> <a href="#attribute-table_use-first-column-styles">19.738</a>, <span class="Attribute">table:use-first-row-styles</span> <a href="#attribute-table_use-first-row-styles">19.739</a>, <span class="Attribute">table:use-last-column-styles</span> <a href="#attribute-table_use-last-column-styles">19.740</a>, <span class="Attribute">table:use-last-row-styles</span> <a href="#attribute-table_use-last-row-styles">19.741</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table&gt;</span> element has the following child elements: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a>, <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>, <span class="Element">&lt;table:desc&gt;</span> <a href="#element-table_desc">9.1.14</a>, <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>, <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>, <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a>, <span class="Element">&lt;table:table-columns&gt;</span> <a href="#element-table_table-columns">9.1.12</a>, <span class="Element">&lt;table:table-header-columns&gt;</span> <a href="#element-table_table-header-columns">9.1.11</a>, <span class="Element">&lt;table:table-header-rows&gt;</span> <a href="#element-table_table-header-rows">9.1.7</a>, <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>, <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>, <span class="Element">&lt;table:table-rows&gt;</span> <a href="#element-table_table-rows">9.1.8</a>, <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>, <span class="Element">&lt;table:title&gt;</span> <a href="#element-table_title">9.1.13</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>.</p><h3 class="Heading_20_3"><a id="a9_1_3_table_table-row_"><span style="margin-right:0.127cm;">9.1.3</span></a><a id="__RefHeading__1415588_253892949"/><a id="element-table_table-row"/>&lt;table:table-row&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-row&gt;</span> element represents a row in a table. It contains elements that specify the cells of the table row.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-row&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;table:table-header-rows&gt;</span> <a href="#element-table_table-header-rows">9.1.7</a>, <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a> and <span class="Element">&lt;table:table-rows&gt;</span> <a href="#element-table_table-rows">9.1.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-row&gt;</span> element has the following attributes: <span class="Attribute">table:default-cell-style-name</span> <a href="#attribute-table_default-cell-style-name">19.615</a>, <span class="Attribute">table:number-rows-repeated</span> <a href="#attribute-table_number-rows-repeated">19.677</a>, <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_table-row">19.726.15</a>, <span class="Attribute">table:visibility</span> <a href="#attribute-table_visibility">19.749</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-row&gt;</span> element has the following child elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><h3 class="Heading_20_3"><a id="a9_1_4_table_table-cell_"><span style="margin-right:0.127cm;">9.1.4</span></a><a id="__RefHeading__1415590_253892949"/><a id="element-table_table-cell"/>&lt;table:table-cell&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-cell&gt;</span> element represents a table cell. It is contained in a table row element. A table cell can contain paragraphs and other text content as well as sub tables. Table cells may span multiple columns and rows. Table cells may be empty.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-cell&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-cell&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">table:content-validation-name</span> <a href="#attribute-table_content-validation-name">19.601</a>, <span class="Attribute">table:formula</span> <a href="#attribute-table_formula">19.642</a>, <span class="Attribute">table:number-columns-repeated</span> <a href="#attribute-table_number-columns-repeated_element-table_table-cell">19.675.3</a>, <span class="Attribute">table:number-columns-spanned</span> <a href="#attribute-table_number-columns-spanned">19.676</a>, <span class="Attribute">table:number-matrix-columns-spanned</span> <a href="#attribute-table_number-matrix-columns-spanned">19.679</a>, <span class="Attribute">table:number-matrix-rows-spanned</span> <a href="#attribute-table_number-matrix-rows-spanned">19.680</a>, <span class="Attribute">table:number-rows-spanned</span> <a href="#attribute-table_number-rows-spanned">19.678</a>, <span class="Attribute">table:protect</span> <a href="#attribute-table_protect">19.695</a>, <span class="Attribute">table:protected</span> <a href="#attribute-table_protected_element-table_table-cell">19.696.5</a>, <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_table-cell">19.726.13</a>, <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-cell&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:detective&gt;</span> <a href="#element-table_detective">9.3.2</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h3 class="Heading_20_3"><a id="a9_1_5_table_covered-table-cell_"><span style="margin-right:0.127cm;">9.1.5</span></a><a id="__RefHeading__1415592_253892949"/><a id="element-table_covered-table-cell"/>&lt;table:covered-table-cell&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:covered-table-cell&gt;</span> element represents cells that are covered by a <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a> element that spans multiple columns or rows. The <span class="Element">&lt;table:covered-table-cell&gt;</span> elements occupy the same position in document order as the cells spanned. There is one <span class="Element">&lt;table:covered-table-cell&gt;</span> element for each cell that is spanned. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:covered-table-cell&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:covered-table-cell&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">table:content-validation-name</span> <a href="#attribute-table_content-validation-name">19.601</a>, <span class="Attribute">table:formula</span> <a href="#attribute-table_formula">19.642</a>, <span class="Attribute">table:number-columns-repeated</span> <a href="#attribute-table_number-columns-repeated_element-table_covered-table-cell">19.675.2</a>, <span class="Attribute">table:protect</span> <a href="#attribute-table_protect">19.695</a>, <span class="Attribute">table:protected</span> <a href="#attribute-table_protected_element-table_covered-table-cell">19.696.2</a>, <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_covered-table-cell">19.726.4</a>, <span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a>, <span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a>, <span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a>, <span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:covered-table-cell&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:detective&gt;</span> <a href="#element-table_detective">9.3.2</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h3 class="Heading_20_3"><a id="a9_1_6_table_table-column_"><span style="margin-right:0.127cm;">9.1.6</span></a><a id="__RefHeading__1415594_253892949"/><a id="element-table_table-column"/>&lt;table:table-column&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-column&gt;</span> element specifies properties for one or more adjacent columns in a table. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-column&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a>, <span class="Element">&lt;table:table-columns&gt;</span> <a href="#element-table_table-columns">9.1.12</a> and <span class="Element">&lt;table:table-header-columns&gt;</span> <a href="#element-table_table-header-columns">9.1.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-column&gt;</span> element has the following attributes: <span class="Attribute">table:default-cell-style-name</span> <a href="#attribute-table_default-cell-style-name">19.615</a>, <span class="Attribute">table:number-columns-repeated</span> <a href="#attribute-table_number-columns-repeated_element-table_table-column">19.675.4</a>, <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_table-column">19.726.14</a>, <span class="Attribute">table:visibility</span> <a href="#attribute-table_visibility">19.749</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-column&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_1_7_table_table-header-rows_"><span style="margin-right:0.127cm;">9.1.7</span></a><a id="__RefHeading__1415596_253892949"/><a id="element-table_table-header-rows"/>&lt;table:table-header-rows&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-header-rows&gt;</span> element represents row headers in a table. It is composed of adjacent <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a> elements. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Use of the <span class="Element">&lt;table:table-header-rows&gt;</span> element increases accessibility. The use of styles to designate row headers diminishes accessibility. </p><p class="Text_20_body">If a table does not fit on a single page, table rows that are included in a <span class="Element">&lt;table:table-header-rows&gt;</span> element are automatically repeated on every page. </p><p class="Text_20_body">A table shall not contain more than one <span class="Element">&lt;table:table-header-rows&gt;</span> element, except that the table contains grouped rows defined by one or more <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a> elements. In this case, the table and each distinct group may contain one <span class="Element">&lt;table:table-header-rows&gt;</span> element, if and only if the table rows contained in the <span class="Element">&lt;table:table-header-rows&gt;</span> elements are adjacent.</p><p class="Text_20_body">Consumers that do not support header rows shall process header rows as non-header rows.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-header-rows&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-header-rows&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-header-rows&gt;</span> element has the following child elements: <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a> and <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>.</p><h3 class="Heading_20_3"><a id="a9_1_8_table_table-rows_"><span style="margin-right:0.127cm;">9.1.8</span></a><a id="__RefHeading__1415598_253892949"/><a id="element-table_table-rows"/>&lt;table:table-rows&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-rows&gt;</span> element contains groups of <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a> elements that do not repeat when a table spans more than one page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-rows&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-rows&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-rows&gt;</span> element has the following child elements: <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a> and <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>.</p><h3 class="Heading_20_3"><a id="a9_1_9_table_table-row-group_"><span style="margin-right:0.127cm;">9.1.9</span></a><a id="__RefHeading__1415600_253892949"/><a id="element-table_table-row-group"/>&lt;table:table-row-group&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-row-group&gt;</span> element groups adjacent table rows that do not appear as table headers. Every group can contain a new group, rows, and row headers. A row group can be visible or hidden. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-row-group&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-row-group&gt;</span> element has the following attribute: <span class="Attribute">table:display</span> <a href="#attribute-table_display">19.617</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-row-group&gt;</span> element has the following child elements: <span class="Element">&lt;table:table-header-rows&gt;</span> <a href="#element-table_table-header-rows">9.1.7</a>, <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>, <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>, <span class="Element">&lt;table:table-rows&gt;</span> <a href="#element-table_table-rows">9.1.8</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>.</p><h3 class="Heading_20_3"><a id="a9_1_10_table_table-column-group_"><span style="margin-right:0.127cm;">9.1.10</span></a><a id="__RefHeading__1415602_253892949"/><a id="element-table_table-column-group"/>&lt;table:table-column-group&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-column-group&gt;</span> element groups adjacent table columns. Every group can contain a new group, columns, and column headers. A column group can be visible or hidden. </p><p class="Text_20_body">If a set of header columns and a column group overlap, the header column group breaks the column header set. That is, the <span class="Element">&lt;table:table-column-group&gt;</span> may contain <span class="Element">&lt;table:table-header-columns&gt;</span> elements, but not vice versa.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-column-group&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-column-group&gt;</span> element has the following attribute: <span class="Attribute">table:display</span> <a href="#attribute-table_display">19.617</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-column-group&gt;</span> element has the following child elements: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>, <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a>, <span class="Element">&lt;table:table-columns&gt;</span> <a href="#element-table_table-columns">9.1.12</a>, <span class="Element">&lt;table:table-header-columns&gt;</span> <a href="#element-table_table-header-columns">9.1.11</a>.</p><h3 class="Heading_20_3"><a id="a9_1_11_table_table-header-columns_"><span style="margin-right:0.127cm;">9.1.11</span></a><a id="__RefHeading__1415604_253892949"/><a id="element-table_table-header-columns"/>&lt;table:table-header-columns&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-header-columns&gt;</span> element represents column headers in a table. It is composed of adjacent <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a> elements.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Use of the <span class="Element">&lt;table:table-header-columns&gt;</span> element increases accessibility The use of styles to designate column headers diminishes accessibility.</p><p class="Text_20_body">If a table does not fit on a single page, table columns that are included in a <span class="Element">&lt;table:table-header-columns&gt;</span> element are automatically repeated on every page. </p><p class="Text_20_body">A table shall not contain more than one <span class="Element">&lt;table:table-header-columns&gt;</span> element, except that the table contains grouped rows defined by one or more <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a> elements. In this case, the table and each distinct group may contain one <span class="Element">&lt;table:table-header-columns&gt;</span> element, if and only if the table columns contained in the <span class="Element">&lt;table:table-header-columns&gt;</span> elements are adjacent. </p><p class="Text_20_body">Consumers that do not support header columns shall process header column as non header columns .</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-header-columns&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-header-columns&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-header-columns&gt;</span> element has the following child element: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>.</p><h3 class="Heading_20_3"><a id="a9_1_12_table_table-columns_"><span style="margin-right:0.127cm;">9.1.12</span></a><a id="__RefHeading__1415606_253892949"/><a id="element-table_table-columns"/>&lt;table:table-columns&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-columns&gt;</span> element contains groups of <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a> elements that do not repeat when a table spans more than one page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-columns&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-columns&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-columns&gt;</span> element has the following child element: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>.</p><h3 class="Heading_20_3"><a id="a9_1_13_table_title_"><span style="margin-right:0.127cm;">9.1.13</span></a><a id="__RefHeading__1415608_253892949"/><a id="element-table_title"/>&lt;table:title&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:title&gt;</span> element specifies a title for a table. The element <span class="ISO_20_Keyword">shall not</span> be used if the parent <span class="Element">&lt;table:table&gt;</span> element is contained within a <span class="Element">&lt;draw:frame&gt;</span> element. In that case, the table's title is specified the by <span class="Element">&lt;svg:title&gt;</span> child element of <span class="Element">&lt;draw:frame&gt;</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:title&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:title&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;table:title&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:title&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a9_1_14_table_desc_"><span style="margin-right:0.127cm;">9.1.14</span></a><a id="__RefHeading__1415610_253892949"/><a id="element-table_desc"/>&lt;table:desc&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:desc&gt;</span> element specifies a prose description of a table that may be used to support accessibility. See appendix D The element <span class="ISO_20_Keyword">shall not</span> be used if the parent <span class="Element">&lt;table:table&gt;</span> element is contained within a <span class="Element">&lt;draw:frame&gt;</span> element. In that case, the table's description is specified the by <span class="Element">&lt;svg:desc&gt;</span> child element of <span class="Element">&lt;draw:frame&gt;</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:desc&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:desc&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;table:desc&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:desc&gt;</span> element has character data content.</p><h2 class="Heading_20_2"><a id="a9_2Advanced_Tables"><span style="margin-right:0.127cm;">9.2</span></a><a id="__RefHeading__1415612_253892949"/>Advanced Tables</h2><h3 class="Heading_20_3"><a id="a9_2_1Referencing_Table_Cells"><span style="margin-right:0.127cm;">9.2.1</span></a><a id="__RefHeading__1415614_253892949"/><a id="Referencing_Table_Cells"/>Referencing Table Cells</h3><p class="Text_20_body">To reference cells in a table, cell addresses are used. Cell addresses are constructed as follows:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>The name of the table.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>A dot “.” (U+002E, FULL STOP).<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">3)</span>An alphabetic value representing the column. The letter A represents column 1, B represents column 2, and so on. AA represents column 27, AB represents column 28, and so on.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">4)</span>A numeric value representing the row. The number 1 represents the first row, the number 2 represents the second row, and so on.<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">This means that A1 represents the cell in column 1 and row 1. B1 represents the cell in column 2 and row 1. A2 represents the cell in column 1 and row 2.</p><p class="Text_20_body">The structure of the address of a cell in a subtable is as follows:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>The address of the cell that contains the subtable.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>A dot “.” (U+002E, FULL STOP).<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">3)</span>The address of the cell in the subtable.<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">If the name of the table contains blanks, dots “.” (U+002E, FULL STOP) or apostrophes “'” (U+0027, APOSTROPHE), the name shall be quoted with apostrophes “'” (U+0027, APOSTROPHE). Any apostrophes in the name shall be escaped by doubling the”'”( U+0027, APOSTROPHE) character.</p><p class="Text_20_body">The behavior of a consumer when a cell is referenced but not declared is implementation-dependent <a id="DDE_LINK99"/></p><h3 class="Heading_20_3"><a id="a9_2_2Absolute_and_relative_cell_addressing"><span style="margin-right:0.127cm;">9.2.2</span></a><a id="__RefHeading__1415616_253892949"/><a id="Cell_address"/>Absolute and relative cell addressing</h3><p class="Text_20_body">Cells can be referenced by using either absolute addresses or relative addresses. When an operation is performed on a table cell absolute cell references do not change. Relative cell references are adapted to the address of the target cell of a copy operation.</p><p class="Text_20_body">To create an absolute address, a dollar sign “$” (U+0024, DOLLAR SIGN) shall be placed before each table name, column reference, and row reference. Absolute and relative references may be mixed within a single cell address. Absolute addresses shall contain a table name. </p><p class="Text_20_body">When differentiation between absolute and relative addresses is not necessary, the dollar signs in absolute addresses may be omitted.</p><h3 class="Heading_20_3"><a id="a9_2_3Cell_Range_Address"><span style="margin-right:0.127cm;">9.2.3</span></a><a id="__RefHeading__1415618_253892949"/><a id="CellRangeAddress"/>Cell Range Address</h3><p class="Text_20_body">A cell range is a number of adjacent cells forming a rectangular shape. The rectangle stretches from the cell on the logical top left to the cell on the logical bottom right. </p><p class="Text_20_body">A cell range address references a cell range. A cell range address consists of:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>The address of the cell at the top left of the range.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>A colon “:” (U+003A, COLON).<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">3)</span>The address of the cell at the bottom right of the range.<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The smallest range is a single cell. The range address of a single cell is the same as the cell address.</p><h3 class="Heading_20_3"><a id="a9_2_4Column_and_Row_Range_Addresses"><span style="margin-right:0.127cm;">9.2.4</span></a><a id="__RefHeading__1415620_253892949"/>Column and Row Range Addresses</h3><p class="Text_20_body">Column and row addresses are cell range addresses that reference entire rows or columns. </p><p class="Text_20_body">The syntax of a row address is the same as a cell address, except the alphabetic values that indicate the column are omitted. </p><p class="Text_20_body">The syntax of a column address is the same as a cell address, except the numeric values that indicate the row are omitted.</p><h3 class="Heading_20_3"><a id="a9_2_5Cell_Range_Address_List"><span style="margin-right:0.127cm;">9.2.5</span></a><a id="__RefHeading__1415622_253892949"/><a id="CellRangeAddressList"/>Cell Range Address List</h3><p class="Text_20_body">A cell range address list is a list of cell range addresses and cell addresses. Each item in the list is separated by white space. If any table name used in the list contains a “ “ (U+0020, SPACE) character, the table name is quoted within apostrophes “'” ( U+0027, APOSTROPHE).</p><h3 class="Heading_20_3"><a id="a9_2_6_table_table-source_"><span style="margin-right:0.127cm;">9.2.6</span></a><a id="__RefHeading__1415624_253892949"/><a id="element-table_table-source"/>&lt;table:table-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:table-source&gt;</span> element represents a link to a table that provides a source for a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-source&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-source&gt;</span> element has the following attributes: <span class="Attribute">table:filter-name</span> <a href="#attribute-table_filter-name">19.638</a>, <span class="Attribute">table:filter-options</span> <a href="#attribute-table_filter-options">19.639</a>, <span class="Attribute">table:mode</span> <a href="#attribute-table_mode">19.671</a>, <span class="Attribute">table:refresh-delay</span> <a href="#attribute-table_refresh-delay">19.701</a>, <span class="Attribute">table:table-name</span> <a href="#attribute-table_table-name">19.729</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-table_table-source">19.910.32</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-source&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_2_7_table_scenario_"><span style="margin-right:0.127cm;">9.2.7</span></a><a id="__RefHeading__1415626_253892949"/><a id="element-table_scenario"/>&lt;table:scenario&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:scenario&gt;</span> element defines a scenario for display on a table. A table represented by a <span class="Element">&lt;table:table&gt;</span> element which contains a <span class="Element">&lt;table:scenario&gt;</span> child element is called a scenario table. </p><p class="Text_20_body">A scenario is one or more cell ranges of a table whose contents replaces the contents of the cell ranges in the nearest non-scenario table preceding the scenario table in document order. If multiple scenarios are defined for a cell range, an user may choose between the scenarios. The names of the scenarios are the same as the names of tables which contain the <span class="Element">&lt;table:scenario&gt;</span> elements. </p><p class="Text_20_body">Display of the border of a scenario table is controlled by its <span class="Attribute">table:display-border</span> attribute.<a href="#attribute-table_display-border">19.618</a> </p><p class="Note"><span class="Note_20_Label">Note:</span> Display of the border of a scenario is the only visible indication that the displayed data is the result of the application of a scenario to the data in the table.</p><p class="Text_20_body">Only one scenario table can be applied to a range at one time.</p><p class="Note"><span class="Note_20_Label">Note:</span> A table can have multiple scenarios applied to it so long as the ranges of application do not overlap.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:scenario&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:scenario&gt;</span> element has the following attributes: <span class="Attribute">table:border-color</span> <a href="#attribute-table_border-color">19.588</a>, <span class="Attribute">table:comment</span> <a href="#attribute-table_comment">19.595</a>, <span class="Attribute">table:copy-back</span> <a href="#attribute-table_copy-back">19.602</a>, <span class="Attribute">table:copy-formulas</span> <a href="#attribute-table_copy-formulas">19.603</a>, <span class="Attribute">table:copy-styles</span> <a href="#attribute-table_copy-styles">19.604</a>, <span class="Attribute">table:display-border</span> <a href="#attribute-table_display-border">19.618</a>, <span class="Attribute">table:is-active</span> <a href="#attribute-table_is-active">19.652</a>, <span class="Attribute">table:protected</span> <a href="#attribute-table_protected_element-table_scenario">19.696.3</a> and <span class="Attribute">table:scenario-ranges</span> <a href="#attribute-table_scenario-ranges">19.705</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:scenario&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_2_8_table_shapes_"><span style="margin-right:0.127cm;">9.2.8</span></a><a id="__RefHeading__1415628_253892949"/><a id="element-table_shapes"/>&lt;table:shapes&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:shapes&gt;</span> element contains all the elements that represent graphic shapes that are anchored on a table where this element occurs.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:shapes&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:shapes&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:shapes&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><h2 class="Heading_20_2"><a id="a9_3Advanced_Table_Cells"><span style="margin-right:0.127cm;">9.3</span></a><a id="__RefHeading__1415630_253892949"/>Advanced Table Cells</h2><h3 class="Heading_20_3"><a id="a9_3_1_table_cell-range-source_"><span style="margin-right:0.127cm;">9.3.1</span></a><a id="__RefHeading__1415632_253892949"/><a id="element-table_cell-range-source"/>&lt;table:cell-range-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:cell-range-source&gt;</span> element represents a database range or named range of another file in a cell range. The first cell in the cell range contains this element. A cell range can be linked to a database range or named range of another file.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:cell-range-source&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:cell-range-source&gt;</span> element has the following attributes: <span class="Attribute">table:filter-name</span> <a href="#attribute-table_filter-name">19.638</a>, <span class="Attribute">table:filter-options</span> <a href="#attribute-table_filter-options">19.639</a>, <span class="Attribute">table:last-column-spanned</span> <a href="#attribute-table_last-column-spanned">19.658</a>, <span class="Attribute">table:last-row-spanned</span> <a href="#attribute-table_last-row-spanned">19.660</a>, <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_cell-range-source">19.673.2</a>, <span class="Attribute">table:refresh-delay</span> <a href="#attribute-table_refresh-delay">19.701</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-table_cell-range-source">19.910.31</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:cell-range-source&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_3_2_table_detective_"><span style="margin-right:0.127cm;">9.3.2</span></a><a id="__RefHeading__1415634_253892949"/><a id="element-table_detective"/>&lt;table:detective&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:detective&gt;</span> element is a container for <span class="Element">&lt;table:operation&gt;</span> <a href="#element-table_operation">9.3.3</a> and <span class="Element">&lt;table:highlighted-range&gt;</span> <a href="#element-table_highlighted-range">9.3.4</a> elements, providing information about what relationships between the current cell and other cells are revealed in the presentation of the table.  </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:detective&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:detective&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:detective&gt;</span> element has the following child elements: <span class="Element">&lt;table:highlighted-range&gt;</span> <a href="#element-table_highlighted-range">9.3.4</a> and <span class="Element">&lt;table:operation&gt;</span> <a href="#element-table_operation">9.3.3</a>.</p><h3 class="Heading_20_3"><a id="a9_3_3_table_operation_"><span style="margin-right:0.127cm;">9.3.3</span></a><a id="__RefHeading__1415636_253892949"/><a id="element-table_operation"/>&lt;table:operation&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:operation&gt;</span> element specifies the name of a detective operation that leads to the discovery of relationships between cells (<span class="Attribute">table:name</span>, <a href="#attribute-table_name">19.673</a>) and the order in which those operations are applied (<span class="Attribute">table:index</span>, <a href="#attribute-table_index">19.651</a>).Once relationships between cells have been discovered, those cells are highlighted to show those relationships.</p><p class="Note"><span class="Note_20_Label">Note: </span>A single cell may be the subject of one or more detective operations.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:operation&gt;</span> element is usable within the following element: <span class="Element">&lt;table:detective&gt;</span> <a href="#element-table_detective">9.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:operation&gt;</span> element has the following attributes: <span class="Attribute">table:index</span> <a href="#attribute-table_index">19.651</a> and <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_operation">19.673.11</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:operation&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_3_4_table_highlighted-range_"><span style="margin-right:0.127cm;">9.3.4</span></a><a id="__RefHeading__1415638_253892949"/><a id="element-table_highlighted-range"/>&lt;table:highlighted-range&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:highlighted-range&gt;</span> element specifies a cell range that is highlighted in the UI either because of detective operations defined by a <span class="Element">&lt;table:operation&gt;</span> element or because it contains an error or invalid data.</p><p class="Text_20_body">The nature of the highlighting is implementation dependent.</p><p class="Text_20_body"> This element represents the state of the document at the time the detective operations or error conditions were calculated. It need not accurately represent the current state of the document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:highlighted-range&gt;</span> element is usable within the following element: <span class="Element">&lt;table:detective&gt;</span> <a href="#element-table_detective">9.3.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:highlighted-range&gt;</span> element has the following attributes: <span class="Attribute">table:cell-range-address</span> <a href="#attribute-table_cell-range-address_element-table_highlighted-range">19.593.7</a>, <span class="Attribute">table:contains-error</span> <a href="#attribute-table_contains-error">19.599</a>, <span class="Attribute">table:direction</span> <a href="#attribute-table_direction">19.616</a> and <span class="Attribute">table:marked-invalid</span> <a href="#attribute-table_marked-invalid">19.664</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:highlighted-range&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a9_4Spreadsheet_Document_Content"><span style="margin-right:0.127cm;">9.4</span></a><a id="__RefHeading__1415640_253892949"/><a id="Columns__new_ref_"/>Spreadsheet Document Content</h2><h3 class="Heading_20_3"><a id="a9_4_1_table_calculation-settings_"><span style="margin-right:0.127cm;">9.4.1</span></a><a id="__RefHeading__1415642_253892949"/><a id="element-table_calculation-settings"/>&lt;table:calculation-settings&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:calculation-settings&gt;</span> element is a container for settings that affect the calculation of formula.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:calculation-settings&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:calculation-settings&gt;</span> element has the following attributes: <span class="Attribute">table:automatic-find-labels</span> <a href="#attribute-table_automatic-find-labels">19.585</a>, <span class="Attribute">table:case-sensitive</span> <a href="#attribute-table_case-sensitive">19.590</a>, <span class="Attribute">table:null-year</span> <a href="#attribute-table_null-year">19.674</a>, <span class="Attribute">table:precision-as-shown</span> <a href="#attribute-table_precision-as-shown">19.692</a>, <span class="Attribute">table:search-criteria-must-apply-to-whole-cell</span> <a href="#attribute-table_search-criteria-must-apply-to-whole-cell">19.707</a>, <span class="Attribute">table:use-regular-expressions</span> <a href="#attribute-table_use-regular-expressions">19.743</a> and <span class="Attribute">table:use-wildcards</span> <a href="#attribute-table_use-wildcards">19.744</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:calculation-settings&gt;</span> element has the following child elements: <span class="Element">&lt;table:iteration&gt;</span> <a href="#element-table_iteration">9.4.3</a> and <span class="Element">&lt;table:null-date&gt;</span> <a href="#element-table_null-date">9.4.2</a>.</p><h3 class="Heading_20_3"><a id="a9_4_2_table_null-date_"><span style="margin-right:0.127cm;">9.4.2</span></a><a id="__RefHeading__1415644_253892949"/><a id="element-table_null-date"/>&lt;table:null-date&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:null-date&gt;</span> element specifies the null date for a spreadsheet document. The null date is the date that results in the value “0” if a date value is converted into a numeric value. The null date is specified in the element's <span class="Attribute">table:date-value</span> attribute. </p><p class="Note"><span class="Note_20_Label">Note: </span>Commonly used values are <span class="Attribute_20_Value_20_Instance">1899-12-30</span>, <span class="Attribute_20_Value_20_Instance">1900-01-01</span>, and <span class="Attribute_20_Value_20_Instance">1904-01-01</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:null-date&gt;</span> element is usable within the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:null-date&gt;</span> element has the following attributes: <span class="Attribute">table:date-value</span> <a href="#attribute-table_date-value">19.614</a> and <span class="Attribute">table:value-type</span> <a href="#attribute-table_value-type">19.748</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:null-date&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_3_table_iteration_"><span style="margin-right:0.127cm;">9.4.3</span></a><a id="__RefHeading__1415646_253892949"/><a id="element-table_iteration"/>&lt;table:iteration&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:iteration&gt;</span> element enables formulas with iterative (or cyclic) references to be calculated after a specific number of iterations. If iterative calculations are not enabled, a formula expression containing a cyclic cell reference returns an error. </p><p class="Text_20_body">If the <span class="Attribute">table:status</span> attribute has the value <span class="Attribute_20_Value">enable</span> and iterating through the cyclic dependencies does not deliver a result that satisfies the condition specified by the <span class="Attribute">table:maximum-</span><span class="Attribute">difference</span> attribute within a number of iterations specified by the <span class="Attribute">table:steps</span> attribute for all cells in the cyclic dependencies, an error is returned. </p><p class="Text_20_body"> </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:iteration&gt;</span> element is usable within the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:iteration&gt;</span> element has the following attributes: <span class="Attribute">table:maximum-difference</span> <a href="#attribute-table_maximum-difference">19.666</a>, <span class="Attribute">table:status</span> <a href="#attribute-table_status">19.722</a> and <span class="Attribute">table:steps</span> <a href="#attribute-table_steps">19.724</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:iteration&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_4_table_content-validations_"><span style="margin-right:0.127cm;">9.4.4</span></a><a id="__RefHeading__1415648_253892949"/><a id="element-table_content-validations"/>&lt;table:content-validations&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:content-validations&gt;</span> element contains all the validation rules for the content of table cells.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:content-validations&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:content-validations&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:content-validations&gt;</span> element has the following child element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><h3 class="Heading_20_3"><a id="a9_4_5_table_content-validation_"><span style="margin-right:0.127cm;">9.4.5</span></a><a id="__RefHeading__1415650_253892949"/><a id="element-table_content-validation"/>&lt;table:content-validation&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:content-validation&gt;</span> element specifies a validation rule for table cell content. </p><p class="Text_20_body">The names of validation rules are stored in the <span class="Attribute">table:name</span> attribute of a <span class="Element">&lt;table:content-validation&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:content-validation&gt;</span> element is usable within the following element: <span class="Element">&lt;table:content-validations&gt;</span> <a href="#element-table_content-validations">9.4.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:content-validation&gt;</span> element has the following attributes: <span class="Attribute">table:allow-empty-cell</span> <a href="#attribute-table_allow-empty-cell">19.583</a>, <span class="Attribute">table:base-cell-address</span> <a href="#attribute-table_base-cell-address">19.586</a>, <span class="Attribute">table:condition</span> <a href="#attribute-table_condition">19.596</a>, <span class="Attribute">table:display-list</span> <a href="#attribute-table_display-list">19.621</a> and <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_content-validation">19.673.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:content-validation&gt;</span> element has the following child elements: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;table:error-macro&gt;</span> <a href="#element-table_error-macro">9.4.8</a>, <span class="Element">&lt;table:error-message&gt;</span> <a href="#element-table_error-message">9.4.7</a> and <span class="Element">&lt;table:help-message&gt;</span> <a href="#element-table_help-message">9.4.6</a>.</p><h3 class="Heading_20_3"><a id="a9_4_6_table_help-message_"><span style="margin-right:0.127cm;">9.4.6</span></a><a id="__RefHeading__1415652_253892949"/><a id="element-table_help-message"/>&lt;table:help-message&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:help-message&gt;</span> element specifies a message to display if a user selects a cell.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:help-message&gt;</span> element is usable within the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:help-message&gt;</span> element has the following attributes: <span class="Attribute">table:display</span> <a href="#attribute-table_display">19.617</a> and <span class="Attribute">table:title</span> <a href="#attribute-table_title">19.733</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:help-message&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a9_4_7_table_error-message_"><span style="margin-right:0.127cm;">9.4.7</span></a><a id="__RefHeading__1415654_253892949"/><a id="element-table_error-message"/>&lt;table:error-message&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:error-message&gt;</span> element specifies a message to display if a user tries to enter invalid content into a cell. That is when a validation rule's condition evaluates to “false” on the content the user attempts to enter.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:error-message&gt;</span> element is usable within the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:error-message&gt;</span> element has the following attributes: <span class="Attribute">table:display</span> <a href="#attribute-table_display">19.617</a>, <span class="Attribute">table:message-type</span> <a href="#attribute-table_message-type">19.670</a> and <span class="Attribute">table:title</span> <a href="#attribute-table_title">19.733</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:error-message&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a9_4_8_table_error-macro_"><span style="margin-right:0.127cm;">9.4.8</span></a><a id="__RefHeading__1415656_253892949"/><a id="element-table_error-macro"/>&lt;table:error-macro&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:error-macro&gt;</span> element specifies if a macro should be executed upon an attempt to enter invalid content. </p><p class="Text_20_body">A macro is specified by an <span class="Element">&lt;office:event-listeners&gt;</span> element. <a href="#Event_Tables">14.4</a> The event name shall be one that specifies an event that is called on invalid user input.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:error-macro&gt;</span> element is usable within the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:error-macro&gt;</span> element has the following attribute: <span class="Attribute">table:execute</span> <a href="#attribute-table_execute">19.634</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:error-macro&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_9_table_label-range_"><span style="margin-right:0.127cm;">9.4.9</span></a><a id="__RefHeading__1415658_253892949"/><a id="element-table_label-range"/>&lt;table:label-range&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:label-range&gt;</span> element specifies a label cell range which contain labels, and a data cell range which specifies the rows or columns whose content is referenced by the labels. </p><p class="Text_20_body">There are two types of label ranges: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Label ranges for columns.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Label ranges for rows.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Data and label ranges should match in both height and vertical position for row orientation, or in both width and horizontal position for column orientation. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:label-range&gt;</span> element is usable within the following element: <span class="Element">&lt;table:label-ranges&gt;</span> <a href="#element-table_label-ranges">9.4.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:label-range&gt;</span> element has the following attributes: <span class="Attribute">table:data-cell-range-address</span> <a href="#attribute-table_data-cell-range-address">19.608</a>, <span class="Attribute">table:label-cell-range-address</span> <a href="#attribute-table_label-cell-range-address">19.656</a> and <span class="Attribute">table:orientation</span> <a href="#attribute-table_orientation_element-table_label-range">19.686.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:label-range&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_10_table_label-ranges_"><span style="margin-right:0.127cm;">9.4.10</span></a><a id="__RefHeading__1415660_253892949"/><a id="element-table_label-ranges"/>&lt;table:label-ranges&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:label-ranges&gt;</span> element contains all the <span class="Element">&lt;table:label-range&gt;</span> elements in a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:label-ranges&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:label-ranges&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:label-ranges&gt;</span> element has the following child element: <span class="Element">&lt;table:label-range&gt;</span> <a href="#element-table_label-range">9.4.9</a>.</p><h3 class="Heading_20_3"><a id="a9_4_11_table_named-expressions_"><span style="margin-right:0.127cm;">9.4.11</span></a><a id="__RefHeading__1415662_253892949"/><a id="element-table_named-expressions"/>&lt;table:named-expressions&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:named-expressions&gt;</span> element contains assignments of names to expressions.</p><p class="Text_20_body">The following expressions may have names:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>cell ranges.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Other expressions.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If the <span class="Element">&lt;table:named-expressions&gt;</span> element is used with a <span class="Element">&lt;table:table&gt;</span> element, the scope of the named expressions are local to that table element.  </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:named-expressions&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:named-expressions&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:named-expressions&gt;</span> element has the following child elements: <span class="Element">&lt;table:named-expression&gt;</span> <a href="#element-table_named-expression">9.4.13</a> and <span class="Element">&lt;table:named-range&gt;</span> <a href="#element-table_named-range">9.4.12</a>.</p><h3 class="Heading_20_3"><a id="a9_4_12_table_named-range_"><span style="margin-right:0.127cm;">9.4.12</span></a><a id="__RefHeading__1415664_253892949"/><a id="element-table_named-range"/>&lt;table:named-range&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:named-range&gt;</span> element specifies a cell range that has a name assigned. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:named-range&gt;</span> element is usable within the following element: <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:named-range&gt;</span> element has the following attributes: <span class="Attribute">table:base-cell-address</span> <a href="#attribute-table_base-cell-address">19.586</a>, <span class="Attribute">table:cell-range-address</span> <a href="#attribute-table_cell-range-address_element-table_named-range">19.593.8</a>, <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_named-range">19.673.10</a> and <span class="Attribute">table:range-usable-as</span> <a href="#attribute-table_range-usable-as">19.700</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:named-range&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_13_table_named-expression_"><span style="margin-right:0.127cm;">9.4.13</span></a><a id="__RefHeading__1415666_253892949"/><a id="element-table_named-expression"/>&lt;table:named-expression&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:named-expression&gt;</span> element represents an expression with a name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:named-expression&gt;</span> element is usable within the following element: <span class="Element">&lt;table:named-expressions&gt;</span> <a href="#element-table_named-expressions">9.4.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:named-expression&gt;</span> element has the following attributes: <span class="Attribute">table:base-cell-address</span> <a href="#attribute-table_base-cell-address">19.586</a>, <span class="Attribute">table:expression</span> <a href="#attribute-table_expression">19.635</a> and <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_named-expression">19.673.9</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:named-expression&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_14_table_database-ranges_"><span style="margin-right:0.127cm;">9.4.14</span></a><a id="__RefHeading__1415668_253892949"/><a id="element-table_database-ranges"/>&lt;table:database-ranges&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:database-ranges&gt;</span> element contains all the <span class="Element">&lt;table:database-range&gt;</span> elements in a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:database-ranges&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:database-ranges&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:database-ranges&gt;</span> element has the following child element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><h3 class="Heading_20_3"><a id="a9_4_15_table_database-range_"><span style="margin-right:0.127cm;">9.4.15</span></a><a id="__RefHeading__1415670_253892949"/><a id="element-table_database-range"/>&lt;table:database-range&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:database-range&gt;</span> element defines a single database range. A database range is a named area in a table upon which database operations are performed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:database-range&gt;</span> element is usable within the following element: <span class="Element">&lt;table:database-ranges&gt;</span> <a href="#element-table_database-ranges">9.4.14</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:database-range&gt;</span> element has the following attributes: <span class="Attribute">table:contains-header</span> <a href="#attribute-table_contains-header">19.600</a>, <span class="Attribute">table:display-filter-buttons</span> <a href="#attribute-table_display-filter-buttons">19.620</a>, <span class="Attribute">table:has-persistent-data</span> <a href="#attribute-table_has-persistent-data">19.647</a>, <span class="Attribute">table:is-selection</span> <a href="#attribute-table_is-selection">19.654</a>, <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_database-range">19.673.8</a>, <span class="Attribute">table:on-update-keep-size</span> <a href="#attribute-table_on-update-keep-size">19.682</a>, <span class="Attribute">table:on-update-keep-styles</span> <a href="#attribute-table_on-update-keep-styles">19.683</a>, <span class="Attribute">table:orientation</span> <a href="#attribute-table_orientation_element-table_database-range">19.686.3</a>, <span class="Attribute">table:refresh-delay</span> <a href="#attribute-table_refresh-delay">19.701</a> and <span class="Attribute">table:target-range-address</span> <a href="#attribute-table_target-range-address_element-table_database-range">19.731.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:database-range&gt;</span> element has the following child elements: <span class="Element">&lt;table:database-source-query&gt;</span> <a href="#element-table_database-source-query">9.4.18</a>, <span class="Element">&lt;table:database-source-sql&gt;</span> <a href="#element-table_database-source-sql">9.4.16</a>, <span class="Element">&lt;table:database-source-table&gt;</span> <a href="#element-table_database-source-table">9.4.17</a>, <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>, <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a> and <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a>.</p><h3 class="Heading_20_3"><a id="a9_4_16_table_database-source-sql_"><span style="margin-right:0.127cm;">9.4.16</span></a><a id="__RefHeading__1415672_253892949"/><a id="element-table_database-source-sql"/>&lt;table:database-source-sql&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:database-source-sql&gt;</span> element specifies an <a title="Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">[SQL]</a> database that contains the source data of a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:database-source-sql&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a> and <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:database-source-sql&gt;</span> element has the following attributes: <span class="Attribute">table:database-name</span> <a href="#attribute-table_database-name">19.609</a>, <span class="Attribute">table:parse-sql-statement</span> <a href="#attribute-table_parse-sql-statement">19.689</a> and <span class="Attribute">table:sql-statement</span> <a href="#attribute-table_sql-statement">19.716</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:database-source-sql&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_17_table_database-source-table_"><span style="margin-right:0.127cm;">9.4.17</span></a><a id="__RefHeading__1415674_253892949"/><a id="element-table_database-source-table"/>&lt;table:database-source-table&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:database-source-table&gt;</span> element specifies the database and table that acts as the source data for a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:database-source-table&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a> and <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:database-source-table&gt;</span> element has the following attributes: <span class="Attribute">table:database-name</span> <a href="#attribute-table_database-name">19.609</a> and <span class="Attribute">table:database-table-name</span> <a href="#attribute-table_database-table-name">19.610</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:database-source-table&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_18_table_database-source-query_"><span style="margin-right:0.127cm;">9.4.18</span></a><a id="__RefHeading__1415676_253892949"/><a id="element-table_database-source-query"/>&lt;table:database-source-query&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:database-source-query&gt;</span> element specifies the query that produces the source data for a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:database-source-query&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a> and <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:database-source-query&gt;</span> element has the following attributes: <span class="Attribute">table:database-name</span> <a href="#attribute-table_database-name">19.609</a> and <span class="Attribute">table:query-name</span> <a href="#attribute-table_query-name">19.699</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:database-source-query&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_19_table_sort_"><span style="margin-right:0.127cm;">9.4.19</span></a><a id="__RefHeading__1415678_253892949"/><a id="element-table_sort"/>&lt;table:sort&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:sort&gt;</span> element <span class="Element">&lt;table:sort&gt;</span> specifies the sort keys to be applied to a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:sort&gt;</span> element is usable within the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:sort&gt;</span> element has the following attributes: <span class="Attribute">table:algorithm</span> <a href="#attribute-table_algorithm">19.581</a>, <span class="Attribute">table:bind-styles-to-content</span> <a href="#attribute-table_bind-styles-to-content">19.587</a>, <span class="Attribute">table:case-sensitive</span> <a href="#attribute-table_case-sensitive">19.590</a>, <span class="Attribute">table:country</span> <a href="#attribute-table_country">19.606</a>, <span class="Attribute">table:embedded-number-behavior</span> <a href="#attribute-table_embedded-number-behavior">19.624</a>, <span class="Attribute">table:language</span> <a href="#attribute-table_language">19.657</a>, <span class="Attribute">table:rfc-language-tag</span> <a href="#attribute-table_rfc-language-tag">19.703</a>, <span class="Attribute">table:script</span> <a href="#attribute-table_script">19.706</a> and <span class="Attribute">table:target-range-address</span> <a href="#attribute-table_target-range-address_element-table_sort">19.731.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:sort&gt;</span> element has the following child element: <span class="Element">&lt;table:sort-by&gt;</span> <a href="#element-table_sort-by">9.4.20</a>.</p><h3 class="Heading_20_3"><a id="a9_4_20_table_sort-by_"><span style="margin-right:0.127cm;">9.4.20</span></a><a id="__RefHeading__1415680_253892949"/><a id="element-table_sort-by"/>&lt;table:sort-by&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:sort-by&gt;</span> element specifies a key or field to sort, the data type of this field, and how to sort it for a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:sort-by&gt;</span> element is usable within the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:sort-by&gt;</span> element has the following attributes: <span class="Attribute">table:data-type</span> <a href="#attribute-table_data-type_element-table_sort-by">19.611.3</a>, <span class="Attribute">table:field-number</span> <a href="#attribute-table_field-number">19.637</a> and <span class="Attribute">table:order</span> <a href="#attribute-table_order">19.685</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:sort-by&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_21_table_subtotal-rules_"><span style="margin-right:0.127cm;">9.4.21</span></a><a id="__RefHeading__1415682_253892949"/><a id="element-table_subtotal-rules"/>&lt;table:subtotal-rules&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:subtotal-rules&gt;</span> element is a container for <span class="Element">&lt;table:subtotal-rule&gt;</span> elements which specify the calculation of provisional results (called subtotals) for a database range. Cells of the same field form a group. A provisional result is calculated and display at the end of each group. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:subtotal-rules&gt;</span> element is usable within the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:subtotal-rules&gt;</span> element has the following attributes: <span class="Attribute">table:bind-styles-to-content</span> <a href="#attribute-table_bind-styles-to-content">19.587</a>, <span class="Attribute">table:case-sensitive</span> <a href="#attribute-table_case-sensitive">19.590</a> and <span class="Attribute">table:page-breaks-on-group-change</span> <a href="#attribute-table_page-breaks-on-group-change">19.687</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:subtotal-rules&gt;</span> element has the following child elements: <span class="Element">&lt;table:sort-groups&gt;</span> <a href="#element-table_sort-groups">9.4.22</a> and <span class="Element">&lt;table:subtotal-rule&gt;</span> <a href="#element-table_subtotal-rule">9.4.23</a>.</p><h3 class="Heading_20_3"><a id="a9_4_22_table_sort-groups_"><span style="margin-right:0.127cm;">9.4.22</span></a><a id="__RefHeading__1415684_253892949"/><a id="element-table_sort-groups"/>&lt;table:sort-groups&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:sort-groups&gt;</span> element specifies a sort order for columns or rows of a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:sort-groups&gt;</span> element is usable within the following element: <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:sort-groups&gt;</span> element has the following attributes: <span class="Attribute">table:data-type</span> <a href="#attribute-table_data-type_element-table_sort-groups">19.611.4</a> and <span class="Attribute">table:order</span> <a href="#attribute-table_order">19.685</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:sort-groups&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_4_23_table_subtotal-rule_"><span style="margin-right:0.127cm;">9.4.23</span></a><a id="__RefHeading__1415686_253892949"/><a id="element-table_subtotal-rule"/>&lt;table:subtotal-rule&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:subtotal-rule&gt;</span> element specifies the calculation of subtotals for a row or column. As the container element for <span class="Element">&lt;table:subtotal-field&gt;</span>, the calculation specified by this element may use provisional results in its calculation. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:subtotal-rule&gt;</span> element is usable within the following element: <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:subtotal-rule&gt;</span> element has the following attribute: <span class="Attribute">table:group-by-field-number</span> <a href="#attribute-table_group-by-field-number">19.645</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:subtotal-rule&gt;</span> element has the following child element: <span class="Element">&lt;table:subtotal-field&gt;</span> <a href="#element-table_subtotal-field">9.4.24</a>.</p><h3 class="Heading_20_3"><a id="a9_4_24_table_subtotal-field_"><span style="margin-right:0.127cm;">9.4.24</span></a><a id="__RefHeading__1415688_253892949"/><a id="element-table_subtotal-field"/>&lt;table:subtotal-field&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:subtotal-field&gt;</span> element specifies the field number and the function that is applied to the content of that field to calculate a provisional result.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:subtotal-field&gt;</span> element is usable within the following element: <span class="Element">&lt;table:subtotal-rule&gt;</span> <a href="#element-table_subtotal-rule">9.4.23</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:subtotal-field&gt;</span> element has the following attributes: <span class="Attribute">table:field-number</span> <a href="#attribute-table_field-number">19.637</a> and <span class="Attribute">table:function</span> <a href="#attribute-table_function_element-table_subtotal-field">19.643.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:subtotal-field&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a9_5Filters"><span style="margin-right:0.127cm;">9.5</span></a><a id="__RefHeading__1415690_253892949"/><a id="Database_Ranges"/>Filters</h2><h3 class="Heading_20_3"><a id="a9_5_1General"><span style="margin-right:0.127cm;">9.5.1</span></a><a id="__RefHeading__1415692_253892949"/>General</h3><p class="Text_20_body">Filter element specify conditions that if not met, render portions of a table invisible. </p><h3 class="Heading_20_3"><a id="a9_5_2_table_filter_"><span style="margin-right:0.127cm;">9.5.2</span></a><a id="__RefHeading__1415694_253892949"/><a id="element-table_filter"/>&lt;table:filter&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:filter&gt;</span> element is a container for elements that specify filters for data contained in database ranges or data pilot tables. The filters are applied to all rows in the database range or the data pilot table. Rows where one or more filter conditions do not evaluate to <span class="Attribute_20_Value">true</span> are made invisible.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:filter&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a> and <span class="Element">&lt;table:source-cell-range&gt;</span> <a href="#element-table_source-cell-range">9.6.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:filter&gt;</span> element has the following attributes: <span class="Attribute">table:condition-source</span> <a href="#attribute-table_condition-source">19.597</a>, <span class="Attribute">table:condition-source-range-address</span> <a href="#attribute-table_condition-source-range-address">19.598</a>, <span class="Attribute">table:display-duplicates</span> <a href="#attribute-table_display-duplicates">19.619</a> and <span class="Attribute">table:target-range-address</span> <a href="#attribute-table_target-range-address_element-table_filter">19.731.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:filter&gt;</span> element has the following child elements: <span class="Element">&lt;table:filter-and&gt;</span> <a href="#element-table_filter-and">9.5.3</a>, <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a> and <span class="Element">&lt;table:filter-or&gt;</span> <a href="#element-table_filter-or">9.5.4</a>.</p><h3 class="Heading_20_3"><a id="a9_5_3_table_filter-and_"><span style="margin-right:0.127cm;">9.5.3</span></a><a id="__RefHeading__1415696_253892949"/><a id="element-table_filter-and"/>&lt;table:filter-and&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:filter-and&gt;</span> element specifies that the logical operator AND is applied to conditions specified by the child elements of this element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:filter-and&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a> and <span class="Element">&lt;table:filter-or&gt;</span> <a href="#element-table_filter-or">9.5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:filter-and&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:filter-and&gt;</span> element has the following child elements: <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a> and <span class="Element">&lt;table:filter-or&gt;</span> <a href="#element-table_filter-or">9.5.4</a>.</p><h3 class="Heading_20_3"><a id="a9_5_4_table_filter-or_"><span style="margin-right:0.127cm;">9.5.4</span></a><a id="__RefHeading__1415698_253892949"/><a id="element-table_filter-or"/>&lt;table:filter-or&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:filter-or&gt;</span> element specifies that the logical operator OR is applied to conditions specified by the child elements of this element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:filter-or&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a> and <span class="Element">&lt;table:filter-and&gt;</span> <a href="#element-table_filter-and">9.5.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:filter-or&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:filter-or&gt;</span> element has the following child elements: <span class="Element">&lt;table:filter-and&gt;</span> <a href="#element-table_filter-and">9.5.3</a> and <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>.</p><h3 class="Heading_20_3"><a id="a9_5_5_table_filter-condition_"><span style="margin-right:0.127cm;">9.5.5</span></a><a id="__RefHeading__1415700_253892949"/><a id="element-table_filter-condition"/>&lt;table:filter-condition&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:filter-condition&gt;</span> element specifies a single condition to apply in a filter operation.</p><p class="Text_20_body">The filter condition is either specified</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>by the <span class="Attribute">table:operator</span> <a href="#attribute-table_operator">19.684</a>, <span class="Attribute">table:value</span> <a href="#attribute-table_value">19.747</a> and <span class="Attribute">table:data-type</span> <a href="#attribute-table_data-type">19.611</a> attributes or<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a set of <span class="Element">&lt;table:filter-set-item&gt;</span> <a href="#element-table_filter-set-item">9.5.6</a> child elements as a set of values. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If one or more of <span class="Element">&lt;table:filter-set-item&gt;</span> elements are present as children of the <span class="Element">&lt;table:filter-condition&gt;</span> element, the <span class="Attribute">table:operator</span>, <span class="Attribute">table:value</span> and <span class="Attribute">table:data-type</span> attributes are ignored.</p><p class="Text_20_body"><span class="Label">Note:</span> To improve backward compatibility with OpenDocument 1.1 documents, the following attributes should have these values if <span class="Element">&lt;table:filter-set-item&gt;</span> elements are included: <span class="Attribute">table:operator</span>: "<span class="Attribute_20_Value_20_Instance">=</span>", <span class="Attribute">table:value</span>: value of the first <span class="Element">&lt;table:filter-set-item&gt;</span> child element, <span class="Attribute">table:data-type</span>: "<span class="Attribute_20_Value">text</span>".</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:filter-condition&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>, <span class="Element">&lt;table:filter-and&gt;</span> <a href="#element-table_filter-and">9.5.3</a> and <span class="Element">&lt;table:filter-or&gt;</span> <a href="#element-table_filter-or">9.5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:filter-condition&gt;</span> element has the following attributes: <span class="Attribute">table:case-sensitive</span> <a href="#attribute-table_case-sensitive">19.590</a>, <span class="Attribute">table:data-type</span> <a href="#attribute-table_data-type_element-table_filter-condition">19.611.2</a>, <span class="Attribute">table:field-number</span> <a href="#attribute-table_field-number">19.637</a>, <span class="Attribute">table:operator</span> <a href="#attribute-table_operator">19.684</a> and <span class="Attribute">table:value</span> <a href="#attribute-table_value_element-table_filter-condition">19.747.1</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:filter-condition&gt;</span> element has the following child element: <span class="Element">&lt;table:filter-set-item&gt;</span> <a href="#element-table_filter-set-item">9.5.6</a>.</p><h3 class="Heading_20_3"><a id="a9_5_6_table_filter-set-item_"><span style="margin-right:0.127cm;">9.5.6</span></a><a id="__RefHeading__1415702_253892949"/><a id="element-table_filter-set-item"/>&lt;table:filter-set-item&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:filter-set-item&gt;</span> element specifies a single value used in a filter condition where the <span class="Attribute">table:operator</span> attribute is set to "<span class="Attribute_20_Value_20_Instance">=</span>", and the <span class="Attribute">table:data-type</span> attribute to <span class="Attribute_20_Value">text</span>. The filter sub condition in which the element is included evaluates to true for a specified cell, if, and only if, the value of the cell is equal to one of the values in the set specified by be <span class="Element">&lt;table:filter&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:filter-set-item&gt;</span> element is usable within the following element: <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:filter-set-item&gt;</span> element has the following attribute: <span class="Attribute">table:value</span> <a href="#attribute-table_value_element-table_filter-set-item">19.747.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:filter-set-item&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a9_6Data_Pilot_Tables"><span style="margin-right:0.127cm;">9.6</span></a><a id="__RefHeading__1415704_253892949"/>Data Pilot Tables</h2><h3 class="Heading_20_3"><a id="a9_6_1General"><span style="margin-right:0.127cm;">9.6.1</span></a><a id="__RefHeading__1415706_253892949"/>General</h3><p class="Text_20_body">Data pilot tables enable users to rearrange data from data sources so as to create new relationships between data elements or to view data from a variety of perspectives. This is in contrast to scenario tables <a href="#element-table_scenario">9.2.7</a>, where the data elements remain fixed but the values and operations on them are varied to illustrate different outcomes.</p><p class="Text_20_body">The behavior of a data pilot table is specified by fields, where each field has a name and an orientation. The category columns are specified by fields with the orientation “row” or “column” and data columns are specified by fields that have the orientation “data”.</p><p class="Text_20_body">A third type of fields are data layout fields. Data layout fields are not connected to a column in the source table, but are used to change the layout of the data pilot table.</p><p class="Text_20_body">The order in which fields are specified determines the order in which the data of category columns are grouped and results are displayed.</p><h3 class="Heading_20_3"><a id="a9_6_2_table_data-pilot-tables_"><span style="margin-right:0.127cm;">9.6.2</span></a><a id="__RefHeading__1415708_253892949"/><a id="element-table_data-pilot-tables"/>&lt;table:data-pilot-tables&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-tables&gt;</span> element contains all the data pilot tables within a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-tables&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-tables&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-tables&gt;</span> element has the following child element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><h3 class="Heading_20_3"><a id="a9_6_3_table_data-pilot-table_"><span style="margin-right:0.127cm;">9.6.3</span></a><a id="__RefHeading__1415710_253892949"/><a id="element-table_data-pilot-table"/>&lt;table:data-pilot-table&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-table&gt;</span> element contains the elements that define the sources of a data pilot table. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-table&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-tables&gt;</span> <a href="#element-table_data-pilot-tables">9.6.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-table&gt;</span> element has the following attributes: <span class="Attribute">table:application-data</span> <a href="#attribute-table_application-data">19.584</a>, <span class="Attribute">table:buttons</span> <a href="#attribute-table_buttons">19.589</a>, <span class="Attribute">table:drill-down-on-double-click</span> <a href="#attribute-table_drill-down-on-double-click">19.623</a>, <span class="Attribute">table:grand-total</span> <a href="#attribute-table_grand-total">19.644</a>, <span class="Attribute">table:identify-categories</span> <a href="#attribute-table_identify-categories">19.649</a>, <span class="Attribute">table:ignore-empty-rows</span> <a href="#attribute-table_ignore-empty-rows">19.650</a>, <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_data-pilot-table">19.673.7</a>, <span class="Attribute">table:show-filter-button</span> <a href="#attribute-table_show-filter-button">19.711</a> and <span class="Attribute">table:target-range-address</span> <a href="#attribute-table_target-range-address_element-table_data-pilot-table">19.731.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-table&gt;</span> element has the following child elements: <span class="Element">&lt;table:database-source-query&gt;</span> <a href="#element-table_database-source-query">9.4.18</a>, <span class="Element">&lt;table:database-source-sql&gt;</span> <a href="#element-table_database-source-sql">9.4.16</a>, <span class="Element">&lt;table:database-source-table&gt;</span> <a href="#element-table_database-source-table">9.4.17</a>, <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>, <span class="Element">&lt;table:source-cell-range&gt;</span> <a href="#element-table_source-cell-range">9.6.5</a> and <span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a>.</p><h3 class="Heading_20_3"><a id="a9_6_4Data_Pilot_Table_Source"><span style="margin-right:0.127cm;">9.6.4</span></a><a id="__RefHeading__1415712_253892949"/>Data Pilot Table Source</h3><p class="Text_20_body">The source of a data pilot table is specified by one of the following elements: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:database-source-query&gt;</span> <a href="#element-table_database-source-query">9.4.18</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:database-source-sql&gt;</span> <a href="#element-table_database-source-sql">9.4.16</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:database-source-table&gt;</span> <a href="#element-table_database-source-table">9.4.17</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:source-cell-range&gt;</span> <a href="#element-table_source-cell-range">9.6.5</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a><span class="odfLiEnd"/> </p></li></ul><h3 class="Heading_20_3"><a id="a9_6_5_table_source-cell-range_"><span style="margin-right:0.127cm;">9.6.5</span></a><a id="__RefHeading__1415714_253892949"/><a id="element-table_source-cell-range"/>&lt;table:source-cell-range&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:source-cell-range&gt;</span> element specifies a cell range as a source of data for a data pilot table. A filter may be specified by a <span class="Element">&lt;table:filter&gt;</span> child element that is applied prior to return of data to a data pilot table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:source-cell-range&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:source-cell-range&gt;</span> element has the following attribute: <span class="Attribute">table:cell-range-address</span> <a href="#attribute-table_cell-range-address_element-table_source-cell-range">19.593.9</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:source-cell-range&gt;</span> element has the following child element: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>.</p><h3 class="Heading_20_3"><a id="a9_6_6_table_source-service_"><span style="margin-right:0.127cm;">9.6.6</span></a><a id="__RefHeading__1415716_253892949"/><a id="element-table_source-service"/>&lt;table:source-service&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:source-service&gt;</span> element specifies a service that returns data to a data pilot table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:source-service&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:source-service&gt;</span> element has the following attributes: <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_source-service">19.673.12</a>, <span class="Attribute">table:object-name</span> <a href="#attribute-table_object-name">19.681</a>, <span class="Attribute">table:password</span> <a href="#attribute-table_password">19.690</a>, <span class="Attribute">table:source-name</span> <a href="#attribute-table_source-name">19.715</a> and <span class="Attribute">table:user-name</span> <a href="#attribute-table_user-name">19.746</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:source-service&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_7_table_data-pilot-field_"><span style="margin-right:0.127cm;">9.6.7</span></a><a id="__RefHeading__1415718_253892949"/><a id="element-table_data-pilot-field"/>&lt;table:data-pilot-field&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-field&gt;</span> element specifies a field for a data pilot table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-field&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-field&gt;</span> element has the following attributes: <span class="Attribute">table:function</span> <a href="#attribute-table_function_element-table_data-pilot-field">19.643.3</a>, <span class="Attribute">table:is-data-layout-field</span> <a href="#attribute-table_is-data-layout-field">19.653</a>, <span class="Attribute">table:orientation</span> <a href="#attribute-table_orientation_element-table_data-pilot-field">19.686.2</a>, <span class="Attribute">table:selected-page</span> <a href="#attribute-table_selected-page">19.708</a>, <span class="Attribute">table:source-field-name</span> <a href="#attribute-table_source-field-name">19.714</a> and <span class="Attribute">table:used-hierarchy</span> <a href="#attribute-table_used-hierarchy">19.745</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-field&gt;</span> element has the following child elements: <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> <a href="#element-table_data-pilot-field-reference">9.6.16</a>, <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a> and <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><h3 class="Heading_20_3"><a id="a9_6_8_table_data-pilot-level_"><span style="margin-right:0.127cm;">9.6.8</span></a><a id="__RefHeading__1415720_253892949"/><a id="element-table_data-pilot-level"/>&lt;table:data-pilot-level&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-level&gt;</span> element acts as a container for elements that specify addition information about a data pilot field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-level&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-level&gt;</span> element has the following attribute: <span class="Attribute">table:show-empty</span> <a href="#attribute-table_show-empty">19.710</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-level&gt;</span> element has the following child elements: <span class="Element">&lt;table:data-pilot-display-info&gt;</span> <a href="#element-table_data-pilot-display-info">9.6.13</a>, <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> <a href="#element-table_data-pilot-layout-info">9.6.15</a>, <span class="Element">&lt;table:data-pilot-members&gt;</span> <a href="#element-table_data-pilot-members">9.6.11</a>, <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> <a href="#element-table_data-pilot-sort-info">9.6.14</a> and <span class="Element">&lt;table:data-pilot-subtotals&gt;</span> <a href="#element-table_data-pilot-subtotals">9.6.9</a>.</p><h3 class="Heading_20_3"><a id="a9_6_9_table_data-pilot-subtotals_"><span style="margin-right:0.127cm;">9.6.9</span></a><a id="__RefHeading__1415722_253892949"/><a id="element-table_data-pilot-subtotals"/>&lt;table:data-pilot-subtotals&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-subtotals&gt;</span> element contains the <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> elements for a data pilot table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-subtotals&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-subtotals&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-subtotals&gt;</span> element has the following child element: <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> <a href="#element-table_data-pilot-subtotal">9.6.10</a>.</p><h3 class="Heading_20_3"><a id="a9_6_10_table_data-pilot-subtotal_"><span style="margin-right:0.127cm;">9.6.10</span></a><a id="__RefHeading__1415724_253892949"/><a id="element-table_data-pilot-subtotal"/>&lt;table:data-pilot-subtotal&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> element contains the results of a single subtotal calculation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-subtotals&gt;</span> <a href="#element-table_data-pilot-subtotals">9.6.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> element has the following attribute: <span class="Attribute">table:function</span> <a href="#attribute-table_function_element-table_data-pilot-subtotal">19.643.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_11_table_data-pilot-members_"><span style="margin-right:0.127cm;">9.6.11</span></a><a id="__RefHeading__1415726_253892949"/><a id="element-table_data-pilot-members"/>&lt;table:data-pilot-members&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-members&gt;</span> element specifies whether category columns in data pilot tables or information for category columns is displayed or not.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-members&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-members&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-members&gt;</span> element has the following child element: <span class="Element">&lt;table:data-pilot-member&gt;</span> <a href="#element-table_data-pilot-member">9.6.12</a>.</p><h3 class="Heading_20_3"><a id="a9_6_12_table_data-pilot-member_"><span style="margin-right:0.127cm;">9.6.12</span></a><a id="__RefHeading__1415728_253892949"/><a id="element-table_data-pilot-member"/>&lt;table:data-pilot-member&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-member&gt;</span> element specifies what information is displayed for a member.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-member&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-members&gt;</span> <a href="#element-table_data-pilot-members">9.6.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-member&gt;</span> element has the following attributes: <span class="Attribute">table:display</span> <a href="#attribute-table_display">19.617</a>, <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_data-pilot-member">19.673.6</a> and <span class="Attribute">table:show-details</span> <a href="#attribute-table_show-details">19.709</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-member&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_13_table_data-pilot-display-info_"><span style="margin-right:0.127cm;">9.6.13</span></a><a id="__RefHeading__1415730_253892949"/><a id="element-table_data-pilot-display-info"/>&lt;table:data-pilot-display-info&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element restricts the number rows that are displayed for a category column to a specific number of values of a data field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element has the following attributes: <span class="Attribute">table:data-field</span> <a href="#attribute-table_data-field">19.607</a>, <span class="Attribute">table:display-member-mode</span> <a href="#attribute-table_display-member-mode">19.622</a>, <span class="Attribute">table:enabled</span> <a href="#attribute-table_enabled">19.625</a> and <span class="Attribute">table:member-count</span> <a href="#attribute-table_member-count">19.667</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_14_table_data-pilot-sort-info_"><span style="margin-right:0.127cm;">9.6.14</span></a><a id="__RefHeading__1415732_253892949"/><a id="element-table_data-pilot-sort-info"/>&lt;table:data-pilot-sort-info&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> element specifies how the members of a category column are sorted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> element has the following attributes: <span class="Attribute">table:data-field</span> <a href="#attribute-table_data-field">19.607</a>, <span class="Attribute">table:order</span> <a href="#attribute-table_order">19.685</a>, <span class="Attribute">table:sort-mode</span> <a href="#attribute-table_sort-mode">19.712</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_15_table_data-pilot-layout-info_"><span style="margin-right:0.127cm;">9.6.15</span></a><a id="__RefHeading__1415734_253892949"/><a id="element-table_data-pilot-layout-info"/>&lt;table:data-pilot-layout-info&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> element specifies how to layout a field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> element has the following attributes: <span class="Attribute">table:add-empty-lines</span> <a href="#attribute-table_add-empty-lines">19.582</a> and <span class="Attribute">table:layout-mode</span> <a href="#attribute-table_layout-mode">19.662</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_16_table_data-pilot-field-reference_"><span style="margin-right:0.127cm;">9.6.16</span></a><a id="__RefHeading__1415736_253892949"/><a id="element-table_data-pilot-field-reference"/>&lt;table:data-pilot-field-reference&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> element specifies data which can be used to modify the displayed values of data fields.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> element has the following attributes: <span class="Attribute">table:field-name</span> <a href="#attribute-table_field-name">19.636</a>, <span class="Attribute">table:member-name</span> <a href="#attribute-table_member-name">19.668</a>, <span class="Attribute">table:member-type</span> <a href="#attribute-table_member-type">19.669</a> and <span class="Attribute">table:type</span> <a href="#attribute-table_type_element-table_data-pilot-field-reference">19.735.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_6_17_table_data-pilot-groups_"><span style="margin-right:0.127cm;">9.6.17</span></a><a id="__RefHeading__1415738_253892949"/><a id="element-table_data-pilot-groups"/>&lt;table:data-pilot-groups&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-groups&gt;</span> element specifies that a data pilot field is a group field. A group field allows grouping of other fields.</p><p class="Text_20_body">Grouping may also take place for numeric or date values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-groups&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-groups&gt;</span> element has the following attributes: <span class="Attribute">table:date-end</span> <a href="#attribute-table_date-end">19.612</a>, <span class="Attribute">table:date-start</span> <a href="#attribute-table_date-start">19.613</a>, <span class="Attribute">table:end</span> <a href="#attribute-table_end">19.626</a>, <span class="Attribute">table:grouped-by</span> <a href="#attribute-table_grouped-by">19.646</a>, <span class="Attribute">table:source-field-name</span> <a href="#attribute-table_source-field-name">19.714</a>, <span class="Attribute">table:start</span> <a href="#attribute-table_start">19.717</a> and <span class="Attribute">table:step</span> <a href="#attribute-table_step">19.723</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-groups&gt;</span> element has the following child element: <span class="Element">&lt;table:data-pilot-group&gt;</span> <a href="#element-table_data-pilot-group">9.6.18</a>.</p><h3 class="Heading_20_3"><a id="a9_6_18_table_data-pilot-group_"><span style="margin-right:0.127cm;">9.6.18</span></a><a id="__RefHeading__1415740_253892949"/><a id="element-table_data-pilot-group"/>&lt;table:data-pilot-group&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-group&gt;</span> element specifies names of groups if grouping takes place by specifying the member names.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-group&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-group&gt;</span> element has the following attribute: <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_data-pilot-group">19.673.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-group&gt;</span> element has the following child element: <span class="Element">&lt;table:data-pilot-group-member&gt;</span> <a href="#element-table_data-pilot-group-member">9.6.19</a>.</p><h3 class="Heading_20_3"><a id="a9_6_19_table_data-pilot-group-member_"><span style="margin-right:0.127cm;">9.6.19</span></a><a id="__RefHeading__1415742_253892949"/><a id="element-table_data-pilot-group-member"/>&lt;table:data-pilot-group-member&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:data-pilot-group-member&gt;</span> element specifies the name of a single group member.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:data-pilot-group-member&gt;</span> element is usable within the following element: <span class="Element">&lt;table:data-pilot-group&gt;</span> <a href="#element-table_data-pilot-group">9.6.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:data-pilot-group-member&gt;</span> element has the following attribute: <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_data-pilot-group-member">19.673.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:data-pilot-group-member&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a9_7_table_consolidation_"><span style="margin-right:0.127cm;">9.7</span></a><a id="__RefHeading__1415744_253892949"/><a id="element-table_consolidation"/>&lt;table:consolidation&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;table:consolidation&gt;</span> element defines the consolidation of data from multiple table ranges. Consolidation means that a new table range is filled with values calculated by applying a mathematical function to all cells in the source table ranges that have the same relative address within these ranges. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:consolidation&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:consolidation&gt;</span> element has the following attributes: <span class="Attribute">table:function</span> <a href="#attribute-table_function_element-table_consolidation">19.643.2</a>, <span class="Attribute">table:link-to-source-data</span> <a href="#attribute-table_link-to-source-data">19.663</a>, <span class="Attribute">table:source-cell-range-addresses</span> <a href="#attribute-table_source-cell-range-addresses">19.713</a>, <span class="Attribute">table:target-cell-address</span> <a href="#attribute-table_target-cell-address">19.730</a> and <span class="Attribute">table:use-labels</span> <a href="#attribute-table_use-labels">19.742</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:consolidation&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a9_8_table_dde-links_"><span style="margin-right:0.127cm;">9.8</span></a><a id="__RefHeading__1415746_253892949"/><a id="element-table_dde-links"/>&lt;table:dde-links&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;table:dde-links&gt;</span> container element stores all DDE links for use in spreadsheet formulas. Every link contains the DDE Source and the data of the last connection.</p><p class="Text_20_body">See <a href="#DDE_Connections">14.6</a> for the use of DDE connections.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:dde-links&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:dde-links&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:dde-links&gt;</span> element has the following child element: <span class="Element">&lt;table:dde-link&gt;</span> <a href="#element-table_dde-link">14.6.4</a>.</p><h2 class="Heading_20_2"><a id="a9_9Change_Tracking_in_Spreadsheets"><span style="margin-right:0.127cm;">9.9</span></a><a id="__RefHeading__1415748_253892949"/>Change Tracking in Spreadsheets</h2><h3 class="Heading_20_3"><a id="a9_9_1General"><span style="margin-right:0.127cm;">9.9.1</span></a><a id="__RefHeading__1415750_253892949"/>General </h3><p class="Text_20_body">All changes that have been applied to a spreadsheet document are stored in a list. The list contains an element for each change made to the table. </p><h3 class="Heading_20_3"><a id="a9_9_2_table_tracked-changes_"><span style="margin-right:0.127cm;">9.9.2</span></a><a id="__RefHeading__1415752_253892949"/><a id="element-table_tracked-changes"/>&lt;table:tracked-changes&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:tracked-changes&gt;</span> element is a container for tracked changes of a spreadsheet. Its presence further enables change tracking for a spreadsheet.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:tracked-changes&gt;</span> element is usable within the following element: <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:tracked-changes&gt;</span> element has the following attribute: <span class="Attribute">table:track-changes</span> <a href="#attribute-table_track-changes">19.734</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:tracked-changes&gt;</span> element has the following child elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a> and <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><h3 class="Heading_20_3"><a id="a9_9_3_table_insertion_"><span style="margin-right:0.127cm;">9.9.3</span></a><a id="__RefHeading__1415754_253892949"/><a id="element-table_insertion"/>&lt;table:insertion&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:insertion&gt;</span> element contains the information that identifies any insertion of content. This content can be one or more rows, one or more columns, or a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:insertion&gt;</span> element is usable within the following element: <span class="Element">&lt;table:tracked-changes&gt;</span> <a href="#element-table_tracked-changes">9.9.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:insertion&gt;</span> element has the following attributes: <span class="Attribute">table:acceptance-state</span> <a href="#attribute-table_acceptance-state">19.580</a>, <span class="Attribute">table:count</span> <a href="#attribute-table_count">19.605</a>, <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a>, <span class="Attribute">table:position</span> <a href="#attribute-table_position">19.691</a>, <span class="Attribute">table:rejecting-change-id</span> <a href="#attribute-table_rejecting-change-id">19.702</a>, <span class="Attribute">table:table</span> <a href="#attribute-table_table">19.727</a> and <span class="Attribute">table:type</span> <a href="#attribute-table_type_element-table_insertion">19.735.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:insertion&gt;</span> element has the following child elements: <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>, <span class="Element">&lt;table:deletions&gt;</span> <a href="#element-table_deletions">9.9.6</a> and <span class="Element">&lt;table:dependencies&gt;</span> <a href="#element-table_dependencies">9.9.4</a>.</p><h3 class="Heading_20_3"><a id="a9_9_4_table_dependencies_"><span style="margin-right:0.127cm;">9.9.4</span></a><a id="__RefHeading__1415756_253892949"/><a id="element-table_dependencies"/>&lt;table:dependencies&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:dependencies&gt;</span> element contains the information on which other tracked changes a tracked change depends. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:dependencies&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a> and <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:dependencies&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:dependencies&gt;</span> element has the following child element: <span class="Element">&lt;table:dependency&gt;</span> <a href="#element-table_dependency">9.9.5</a>.</p><h3 class="Heading_20_3"><a id="a9_9_5_table_dependency_"><span style="margin-right:0.127cm;">9.9.5</span></a><a id="__RefHeading__1415758_253892949"/><a id="element-table_dependency"/>&lt;table:dependency&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:dependency&gt;</span> element contains the information about one change action on which its parent element depends. The change action on which the current change depends is referenced by its <span class="Attribute">table:id</span> attribute</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:dependency&gt;</span> element is usable within the following element: <span class="Element">&lt;table:dependencies&gt;</span> <a href="#element-table_dependencies">9.9.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:dependency&gt;</span> element has the following attribute: <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:dependency&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_6_table_deletions_"><span style="margin-right:0.127cm;">9.9.6</span></a><a id="__RefHeading__1415760_253892949"/><a id="element-table_deletions"/>&lt;table:deletions&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:deletions&gt;</span> element contains all deletions which are performed while tracking a single change to a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:deletions&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a> and <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:deletions&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:deletions&gt;</span> element has the following child elements: <span class="Element">&lt;table:cell-content-deletion&gt;</span> <a href="#element-table_cell-content-deletion">9.9.7</a> and <span class="Element">&lt;table:change-deletion&gt;</span> <a href="#element-table_change-deletion">9.9.8</a>.</p><h3 class="Heading_20_3"><a id="a9_9_7_table_cell-content-deletion_"><span style="margin-right:0.127cm;">9.9.7</span></a><a id="__RefHeading__1415762_253892949"/><a id="element-table_cell-content-deletion"/>&lt;table:cell-content-deletion&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:cell-content-deletion&gt;</span> element specifies that a cell content has been deleted. It contains the address of the effected cell and its former content. If a <span class="Attribute">table:id</span> attribute is present, it specifies the id of a previously tracked change for the cell that gets deleted by the current change.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:cell-content-deletion&gt;</span> element is usable within the following element: <span class="Element">&lt;table:deletions&gt;</span> <a href="#element-table_deletions">9.9.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:cell-content-deletion&gt;</span> element has the following attribute: <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:cell-content-deletion&gt;</span> element has the following child elements: <span class="Element">&lt;table:cell-address&gt;</span> <a href="#element-table_cell-address">9.9.18</a> and <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>.</p><h3 class="Heading_20_3"><a id="a9_9_8_table_change-deletion_"><span style="margin-right:0.127cm;">9.9.8</span></a><a id="__RefHeading__1415764_253892949"/><a id="element-table_change-deletion"/>&lt;table:change-deletion&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:change-deletion&gt;</span> element specifies the value of the <span class="Attribute">table:id</span> of a previously tracked change that is deleted by the current change.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:change-deletion&gt;</span> element is usable within the following element: <span class="Element">&lt;table:deletions&gt;</span> <a href="#element-table_deletions">9.9.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:change-deletion&gt;</span> element has the following attribute: <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:change-deletion&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_9_table_deletion_"><span style="margin-right:0.127cm;">9.9.9</span></a><a id="__RefHeading__1415766_253892949"/><a id="element-table_deletion"/>&lt;table:deletion&gt;</h3><p class="Text_20_body">A <span class="Element">&lt;table:deletion&gt;</span> element contains content that was deleted while change tracking was enabled. The content of a cell that was deleted is contained in either a <span class="Element">&lt;table:dependencies&gt;</span>, or a <span class="Element">&lt;table:deletions&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:deletion&gt;</span> element is usable within the following element: <span class="Element">&lt;table:tracked-changes&gt;</span> <a href="#element-table_tracked-changes">9.9.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:deletion&gt;</span> element has the following attributes: <span class="Attribute">table:acceptance-state</span> <a href="#attribute-table_acceptance-state">19.580</a>, <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a>, <span class="Attribute">table:multi-deletion-spanned</span> <a href="#attribute-table_multi-deletion-spanned">19.672</a>, <span class="Attribute">table:position</span> <a href="#attribute-table_position">19.691</a>, <span class="Attribute">table:rejecting-change-id</span> <a href="#attribute-table_rejecting-change-id">19.702</a>, <span class="Attribute">table:table</span> <a href="#attribute-table_table">19.727</a> and <span class="Attribute">table:type</span> <a href="#attribute-table_type_element-table_deletion">19.735.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:deletion&gt;</span> element has the following child elements: <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>, <span class="Element">&lt;table:cut-offs&gt;</span> <a href="#element-table_cut-offs">9.9.10</a>, <span class="Element">&lt;table:deletions&gt;</span> <a href="#element-table_deletions">9.9.6</a> and <span class="Element">&lt;table:dependencies&gt;</span> <a href="#element-table_dependencies">9.9.4</a>.</p><h3 class="Heading_20_3"><a id="a9_9_10_table_cut-offs_"><span style="margin-right:0.127cm;">9.9.10</span></a><a id="__RefHeading__1415768_253892949"/><a id="element-table_cut-offs"/>&lt;table:cut-offs&gt;</h3><p class="Text_20_body">A <span class="Element">&lt;table:cut-offs&gt;</span> element contains elements that specify the location of tracked but deleted insertions or movements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:cut-offs&gt;</span> element is usable within the following element: <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:cut-offs&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:cut-offs&gt;</span> element has the following child elements: <span class="Element">&lt;table:insertion-cut-off&gt;</span> <a href="#element-table_insertion-cut-off">9.9.11</a>, <span class="Element">&lt;table:movement-cut-off&gt;</span> <a href="#element-table_movement-cut-off">9.9.12</a>.</p><h3 class="Heading_20_3"><a id="a9_9_11_table_insertion-cut-off_"><span style="margin-right:0.127cm;">9.9.11</span></a><a id="__RefHeading__1415770_253892949"/><a id="element-table_insertion-cut-off"/>&lt;table:insertion-cut-off&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:insertion-cut-off&gt;</span> element specifies where an insertion was deleted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:insertion-cut-off&gt;</span> element is usable within the following element: <span class="Element">&lt;table:cut-offs&gt;</span> <a href="#element-table_cut-offs">9.9.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:insertion-cut-off&gt;</span> element has the following attributes: <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a> and <span class="Attribute">table:position</span> <a href="#attribute-table_position">19.691</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:insertion-cut-off&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_12_table_movement-cut-off_"><span style="margin-right:0.127cm;">9.9.12</span></a><a id="__RefHeading__1415772_253892949"/><a id="element-table_movement-cut-off"/>&lt;table:movement-cut-off&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:movement-cut-off&gt;</span> element specifies the deletion of a movement.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:movement-cut-off&gt;</span> element is usable within the following element: <span class="Element">&lt;table:cut-offs&gt;</span> <a href="#element-table_cut-offs">9.9.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:movement-cut-off&gt;</span> element has the following attributes: <span class="Attribute">table:end-position</span> <a href="#attribute-table_end-position">19.629</a>, <span class="Attribute">table:position</span> <a href="#attribute-table_position">19.691</a> and <span class="Attribute">table:start-position</span> <a href="#attribute-table_start-position">19.719</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:movement-cut-off&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_13_table_movement_"><span style="margin-right:0.127cm;">9.9.13</span></a><a id="__RefHeading__1415774_253892949"/><a id="element-table_movement"/>&lt;table:movement&gt;</h3><p class="Text_20_body">A <span class="Element">&lt;table:movement&gt;</span> element specifies the information that identifies movement of content. This content can be a cell content or a cell range content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:movement&gt;</span> element is usable within the following element: <span class="Element">&lt;table:tracked-changes&gt;</span> <a href="#element-table_tracked-changes">9.9.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:movement&gt;</span> element has the following attributes: <span class="Attribute">table:acceptance-state</span> <a href="#attribute-table_acceptance-state">19.580</a>, <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a> and <span class="Attribute">table:rejecting-change-id</span> <a href="#attribute-table_rejecting-change-id">19.702</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:movement&gt;</span> element has the following child elements: <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>, <span class="Element">&lt;table:deletions&gt;</span> <a href="#element-table_deletions">9.9.6</a>, <span class="Element">&lt;table:dependencies&gt;</span> <a href="#element-table_dependencies">9.9.4</a>, <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><h3 class="Heading_20_3"><a id="a9_9_14_table_source-range-address_"><span style="margin-right:0.127cm;">9.9.14</span></a><a id="__RefHeading__1415776_253892949"/><a id="element-table_source-range-address"/>&lt;table:source-range-address&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:source-range-address&gt;</span> element specifies the source or cell range address of a movement.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:source-range-address&gt;</span> element is usable within the following element: <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:source-range-address&gt;</span> element has the following attributes: <span class="Attribute">table:column</span> <a href="#attribute-table_column">19.594</a>, <span class="Attribute">table:end-column</span> <a href="#attribute-table_end-column">19.628</a>, <span class="Attribute">table:end-row</span> <a href="#attribute-table_end-row">19.630</a>, <span class="Attribute">table:end-table</span> <a href="#attribute-table_end-table">19.631</a>, <span class="Attribute">table:row</span> <a href="#attribute-table_row">19.704</a>, <span class="Attribute">table:start-column</span> <a href="#attribute-table_start-column">19.718</a>, <span class="Attribute">table:start-row</span> <a href="#attribute-table_start-row">19.720</a>, <span class="Attribute">table:start-table</span> <a href="#attribute-table_start-table">19.721</a> and <span class="Attribute">table:table</span> <a href="#attribute-table_table">19.727</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:source-range-address&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_15_table_target-range-address_"><span style="margin-right:0.127cm;">9.9.15</span></a><a id="__RefHeading__1415778_253892949"/><a id="element-table_target-range-address"/>&lt;table:target-range-address&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:target-range-address&gt;</span> element specifies the target cell address or cell range address of a movement.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:target-range-address&gt;</span> element is usable within the following element: <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:target-range-address&gt;</span> element has the following attributes: <span class="Attribute">table:column</span> <a href="#attribute-table_column">19.594</a>, <span class="Attribute">table:end-column</span> <a href="#attribute-table_end-column">19.628</a>, <span class="Attribute">table:end-row</span> <a href="#attribute-table_end-row">19.630</a>, <span class="Attribute">table:end-table</span> <a href="#attribute-table_end-table">19.631</a>, <span class="Attribute">table:row</span> <a href="#attribute-table_row">19.704</a>, <span class="Attribute">table:start-column</span> <a href="#attribute-table_start-column">19.718</a>, <span class="Attribute">table:start-row</span> <a href="#attribute-table_start-row">19.720</a>, <span class="Attribute">table:start-table</span> <a href="#attribute-table_start-table">19.721</a> and <span class="Attribute">table:table</span> <a href="#attribute-table_table">19.727</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:target-range-address&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_16_table_change-track-table-cell_"><span style="margin-right:0.127cm;">9.9.16</span></a><a id="__RefHeading__1415780_253892949"/><a id="element-table_change-track-table-cell"/>&lt;table:change-track-table-cell&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:change-track-table-cell&gt;</span> element specifies the information that tracks changes to a table cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:change-track-table-cell&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:cell-content-deletion&gt;</span> <a href="#element-table_cell-content-deletion">9.9.7</a> and <span class="Element">&lt;table:previous&gt;</span> <a href="#element-table_previous">9.9.19</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:change-track-table-cell&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>, <span class="Attribute">table:cell-address</span> <a href="#attribute-table_cell-address">19.591</a>, <span class="Attribute">table:formula</span> <a href="#attribute-table_formula">19.642</a>, <span class="Attribute">table:matrix-covered</span> <a href="#attribute-table_matrix-covered">19.665</a>, <span class="Attribute">table:number-matrix-columns-spanned</span> <a href="#attribute-table_number-matrix-columns-spanned">19.679</a> and <span class="Attribute">table:number-matrix-rows-spanned</span> <a href="#attribute-table_number-matrix-rows-spanned">19.680</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:change-track-table-cell&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a9_9_17_table_cell-content-change_"><span style="margin-right:0.127cm;">9.9.17</span></a><a id="__RefHeading__1415782_253892949"/><a id="element-table_cell-content-change"/>&lt;table:cell-content-change&gt;</h3><p class="Text_20_body">A <span class="Element">&lt;table:cell-content-change&gt;</span> element specifies the information that identifies changes of the cell content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:cell-content-change&gt;</span> element is usable within the following element: <span class="Element">&lt;table:tracked-changes&gt;</span> <a href="#element-table_tracked-changes">9.9.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:cell-content-change&gt;</span> element has the following attributes: <span class="Attribute">table:acceptance-state</span> <a href="#attribute-table_acceptance-state">19.580</a>, <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a> and <span class="Attribute">table:rejecting-change-id</span> <a href="#attribute-table_rejecting-change-id">19.702</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:cell-content-change&gt;</span> element has the following child elements: <span class="Element">&lt;office:change-info&gt;</span> <a href="#element-office_change-info">5.5.6</a>, <span class="Element">&lt;table:cell-address&gt;</span> <a href="#element-table_cell-address">9.9.18</a>, <span class="Element">&lt;table:deletions&gt;</span> <a href="#element-table_deletions">9.9.6</a>, <span class="Element">&lt;table:dependencies&gt;</span> <a href="#element-table_dependencies">9.9.4</a> and <span class="Element">&lt;table:previous&gt;</span> <a href="#element-table_previous">9.9.19</a>.</p><h3 class="Heading_20_3"><a id="a9_9_18_table_cell-address_"><span style="margin-right:0.127cm;">9.9.18</span></a><a id="__RefHeading__1415784_253892949"/><a id="element-table_cell-address"/>&lt;table:cell-address&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:cell-address&gt;</span> element contains the address of a cell that has changed. Unlike other cell addresses, the cell address consists of the row, column and table number of the cell. This allows specifying addresses that are outside a valid cell address range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:cell-address&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a> and <span class="Element">&lt;table:cell-content-deletion&gt;</span> <a href="#element-table_cell-content-deletion">9.9.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:cell-address&gt;</span> element has the following attributes: <span class="Attribute">table:column</span> <a href="#attribute-table_column">19.594</a>, <span class="Attribute">table:row</span> <a href="#attribute-table_row">19.704</a> and <span class="Attribute">table:table</span> <a href="#attribute-table_table">19.727</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:cell-address&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a9_9_19_table_previous_"><span style="margin-right:0.127cm;">9.9.19</span></a><a id="__RefHeading__1415786_253892949"/><a id="element-table_previous"/>&lt;table:previous&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:previous&gt;</span> element contains the previous cell content which is overwritten by the current change. If a <span class="Attribute">table:id</span> attribute is present, it specifies the id of a previously tracked change for the cell that is changed again by the current change.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:previous&gt;</span> element is usable within the following element: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:previous&gt;</span> element has the following attribute: <span class="Attribute">table:id</span> <a href="#attribute-table_id">19.648</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:previous&gt;</span> element has the following child element: <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>.</p><h1 class="Heading_20_1"><a id="a10Graphic_Content"><span style="margin-right:0.127cm;">10</span></a><a id="__RefHeading__1415788_253892949"/><a id="Graphic_Content_Content"/>Graphic Content</h1><h2 class="Heading_20_2"><a id="a10_1General"><span style="margin-right:0.127cm;">10.1</span></a><a id="__RefHeading__1415790_253892949"/>General</h2><p class="Text_20_body">This chapter specifies the elements that represent graphic objects and elements used in the representation of graphical objects. </p><h2 class="Heading_20_2"><a id="a10_2Enhanced_Page_Features_for_Graphical_Applications"><span style="margin-right:0.127cm;">10.2</span></a><a id="__RefHeading__1415792_253892949"/>Enhanced Page Features for Graphical Applications</h2><h3 class="Heading_20_3"><a id="a10_2_1_style_handout-master_"><span style="margin-right:0.127cm;">10.2.1</span></a><a id="__RefHeading__1415794_253892949"/><a id="element-style_handout-master"/>&lt;style:handout-master&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;style:handout-master&gt;</span> element represents a template for the generation of handout pages.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:handout-master&gt;</span> element is usable within the following element: <span class="Element">&lt;office:master-styles&gt;</span> <a href="#element-office_master-styles">3.15.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:handout-master&gt;</span> element has the following attributes: <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-style_handout-master">19.219.26</a>, <span class="Attribute">presentation:presentation-page-layout-name</span> <a href="#attribute-presentation_presentation-page-layout-name">19.409</a>, <span class="Attribute">presentation:use-date-time-name</span> <a href="#attribute-presentation_use-date-time-name">19.424</a>, <span class="Attribute">presentation:use-footer-name</span> <a href="#attribute-presentation_use-footer-name">19.425</a>, <span class="Attribute">presentation:use-header-name</span> <a href="#attribute-presentation_use-header-name">19.426</a> and <span class="Attribute">style:page-layout-name</span> <a href="#attribute-style_page-layout-name">19.504</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:handout-master&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><h3 class="Heading_20_3"><a id="a10_2_2_draw_layer-set_"><span style="margin-right:0.127cm;">10.2.2</span></a><a id="__RefHeading__1415796_253892949"/><a id="element-draw_layer-set"/>&lt;draw:layer-set&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:layer-set&gt;</span> element defines a set of layers. If placed inside a <span class="Element">&lt;style:master-page&gt;</span> or <span class="Element">&lt;draw:page&gt;</span> element it defines a set of layers for that page. If placed inside the <span class="Element">&lt;office:master-styles&gt;</span> element it defines a set of layers for all pages that do not have their own set of layers.</p><p class="Text_20_body">Layers group drawing objects. Assigning a shape to a layer does not change its rendering order as defined by its <span class="Attribute">draw:z-index</span> attribute. <a href="#attribute-draw_z-index">19.231</a></p><p class="Text_20_body">The <span class="Element">&lt;draw:layer-set&gt;</span> schema element contains a set of <span class="Element">&lt;draw:layer&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:layer-set&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;office:master-styles&gt;</span> <a href="#element-office_master-styles">3.15.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:layer-set&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:layer-set&gt;</span> element has the following child element: <span class="Element">&lt;draw:layer&gt;</span> <a href="#element-draw_layer">10.2.3</a>.</p><h3 class="Heading_20_3"><a id="a10_2_3_draw_layer_"><span style="margin-right:0.127cm;">10.2.3</span></a><a id="__RefHeading__1415798_253892949"/><a id="element-draw_layer"/>&lt;draw:layer&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:layer&gt;</span> element defines a single layer. Layers group drawing objects. </p><p class="Text_20_body"> Each drawing object inside a drawing or presentation document can be assigned to a layer. Each object that is assigned to a layer inherits the settings of that layer. Drawing objects may be assigned to these layers by the value of their <span class="Attribute">draw:layer</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:layer&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:layer-set&gt;</span> <a href="#element-draw_layer-set">10.2.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:layer&gt;</span> element has the following attributes: <span class="Attribute">draw:display</span> <a href="#attribute-draw_display">19.132</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_layer">19.197.14</a> and <span class="Attribute">draw:protected</span> <a href="#attribute-draw_protected">19.207</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:layer&gt;</span> element has the following child elements: <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h3 class="Heading_20_3"><a id="a10_2_4_draw_page_"><span style="margin-right:0.127cm;">10.2.4</span></a><a id="__RefHeading__1415800_253892949"/><a id="element-draw_page"/>&lt;draw:page&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:page&gt;</span> element is a container for content in a drawing or presentation document. This element is used for the following:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Layers <a href="#element-draw_layer-set">10.2.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Forms <a href="#element-office_forms">13.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Drawing Objects <a href="#drawing_shapes_section">10.3</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Frames <a href="#Frames">10.4</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Presentation Animations <a href="#SMIL_Pres_Anim">10.9</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Presentation Notes <a href="#element-presentation_notes">16.17</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:page&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a> and <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:page&gt;</span> element has the following attributes: <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_page">19.187.3</a>, <span class="Attribute">draw:master-page-name</span> <a href="#attribute-draw_master-page-name">19.194</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_page">19.197.19</a>, <span class="Attribute">draw:nav-order</span> <a href="#attribute-draw_nav-order">19.198</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_page">19.219.17</a>, <span class="Attribute">presentation:presentation-page-layout-name</span> <a href="#attribute-presentation_presentation-page-layout-name">19.409</a>, <span class="Attribute">presentation:use-date-time-name</span> <a href="#attribute-presentation_use-date-time-name">19.424</a>, <span class="Attribute">presentation:use-footer-name</span> <a href="#attribute-presentation_use-footer-name">19.425</a>, <span class="Attribute">presentation:use-header-name</span> <a href="#attribute-presentation_use-header-name">19.426</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:page&gt;</span> element has the following child elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a>, <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:layer-set&gt;</span> <a href="#element-draw_layer-set">10.2.2</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>, <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h3 class="Heading_20_3"><a id="a10_2_5_draw_equation_"><span style="margin-right:0.127cm;">10.2.5</span></a><a id="__RefHeading__1415802_253892949"/><a id="element-draw_equation"/>&lt;draw:equation&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:equation&gt;</span> element specifies a formula for the calculation of a value and the name by which that formula can be referenced.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:equation&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:equation&gt;</span> element has the following attributes: <span class="Attribute">draw:formula</span> <a href="#attribute-draw_formula">19.171</a> and <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_equation">19.197.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:equation&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a10_3Drawing_Shapes"><span style="margin-right:0.127cm;">10.3</span></a><a id="__RefHeading__1415804_253892949"/><a id="drawing_shapes_section"/>Drawing Shapes</h2><h3 class="Heading_20_3"><a id="a10_3_1General"><span style="margin-right:0.127cm;">10.3.1</span></a><a id="__RefHeading__1415806_253892949"/>General</h3><p class="Text_20_body">This section defines graphical objects that may occur within all types of documents.</p><h3 class="Heading_20_3"><a id="a10_3_2_draw_rect_"><span style="margin-right:0.127cm;">10.3.2</span></a><a id="__RefHeading__1415808_253892949"/><a id="element-draw_rect"/>&lt;draw:rect&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:rect&gt;</span> element represents a rectangular drawing shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:rect&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:rect&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:corner-radius</span> <a href="#attribute-draw_corner-radius">19.127</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_rect">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_rect">19.197.25</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_rect">19.219.22</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_rect">19.539.8</a>, <span class="Attribute">svg:rx</span> <a href="#attribute-svg_rx">19.550</a>, <span class="Attribute">svg:ry</span> <a href="#attribute-svg_ry">19.551</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_rect">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_rect">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_rect">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:rect&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_3_draw_line_"><span style="margin-right:0.127cm;">10.3.3</span></a><a id="__RefHeading__1415810_253892949"/><a id="element-draw_line"/>&lt;draw:line&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:line&gt;</span> element represents a line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:line&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-</span><span class="Element">page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:line&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_line">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_line">19.197.15</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_line">19.219.15</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:x1</span> <a href="#attribute-svg_x1_element-draw_line">19.574.1</a>, <span class="Attribute">svg:x2</span> <a href="#attribute-svg_x2_element-draw_line">19.575.1</a>, <span class="Attribute">svg:y1</span> <a href="#attribute-svg_y1_element-draw_line">19.578.1</a>, <span class="Attribute">svg:y2</span> <a href="#attribute-svg_y2_element-draw_line">19.579.1</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:line&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_4_draw_polyline_"><span style="margin-right:0.127cm;">10.3.4</span></a><a id="__RefHeading__1415812_253892949"/><a id="element-draw_polyline"/>&lt;draw:polyline&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:polyline&gt;</span> element represents a polyline drawing shape.</p><p class="Text_20_body">Consumers may ignore <span class="Attribute">svg:height</span> and <span class="Attribute">svg:width</span> attributes, and determine the size of a shape from the polygon vertices.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:polyline&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:polyline&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_polyline">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_polyline">19.197.24</a>, <span class="Attribute">draw:points</span> <a href="#attribute-draw_points">19.206</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_polyline">19.219.21</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_polyline">19.539.8</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_polyline">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_polyline">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_polyline">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:polyline&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_5_draw_polygon_"><span style="margin-right:0.127cm;">10.3.5</span></a><a id="__RefHeading__1415814_253892949"/><a id="element-draw_polygon"/>&lt;draw:polygon&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:polygon&gt;</span> element represents a polygon. A polygon is a closed set of straight lines.</p><p class="Text_20_body">Consumers may ignore <span class="Attribute">svg:height</span> and <span class="Attribute">svg:width</span> attributes, and determine the size of a shape from the polygon vertices.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:polygon&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:polygon&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_polygon">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_polygon">19.197.23</a>, <span class="Attribute">draw:points</span> <a href="#attribute-draw_points">19.206</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_polygon">19.219.20</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_polygon">19.539.8</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_polygon">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_polygon">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_polygon">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:polygon&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_6_draw_regular-polygon_"><span style="margin-right:0.127cm;">10.3.6</span></a><a id="__RefHeading__1415816_253892949"/><a id="element-draw_regular-polygon"/>&lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:regular-polygon&gt;</span> element represents a regular polygon. A regular polygon is a polygon that is specified by its number of edges (that is equal to the number of its corners), rather than by arbitrary points.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:regular-polygon&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:regular-polygon&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:concave</span> <a href="#attribute-draw_concave">19.123</a>, <span class="Attribute">draw:corners</span> <a href="#attribute-draw_corners">19.128</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_regular-polygon">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_regular-polygon">19.197.26</a>, <span class="Attribute">draw:sharpness</span> <a href="#attribute-draw_sharpness">19.211</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_regular-polygon">19.219.23</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_regular-polygon">19.539.8</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_regular-polygon">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_regular-polygon">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_regular-polygon">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:regular-polygon&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_7_draw_path_"><span style="margin-right:0.127cm;">10.3.7</span></a><a id="__RefHeading__1415818_253892949"/><a id="element-draw_path"/>&lt;draw:path&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:path&gt;</span> element represents a path. A path is a shape with a user-defined outline. The outline is defined by the <span class="Attribute">svg:d</span> attribute. <a href="#attribute-svg_d">19.526</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:path&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:path&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_path">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_path">19.197.22</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_path">19.219.19</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_path">19.539.8</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_path">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_path">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_path">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:path&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_8_draw_circle_"><span style="margin-right:0.127cm;">10.3.8</span></a><a id="__RefHeading__1415820_253892949"/><a id="element-draw_circle"/>&lt;draw:circle&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:circle&gt;</span> element represents a circular drawing shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:circle&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:circle&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:end-angle</span> <a href="#attribute-draw_end-angle">19.140</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_circle">19.187.3</a>, <span class="Attribute">draw:kind</span> <a href="#attribute-draw_kind">19.188</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_circle">19.197.3</a>, <span class="Attribute">draw:start-angle</span> <a href="#attribute-draw_start-angle">19.213</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_circle">19.219.8</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:cx</span> <a href="#attribute-svg_cx_element-draw_circle">19.524.2</a>, <span class="Attribute">svg:cy</span> <a href="#attribute-svg_cy_element-draw_circle">19.525.2</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_circle">19.539.8</a>, <span class="Attribute">svg:r</span> <a href="#attribute-svg_r_element-draw_circle">19.549.2</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_circle">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_circle">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_circle">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:circle&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_9_draw_ellipse_"><span style="margin-right:0.127cm;">10.3.9</span></a><a id="__RefHeading__1415822_253892949"/><a id="element-draw_ellipse"/>&lt;draw:ellipse&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:ellipse&gt;</span> element represents an ellipse.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:ellipse&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:ellipse&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:end-angle</span> <a href="#attribute-draw_end-angle">19.140</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_ellipse">19.187.3</a>, <span class="Attribute">draw:kind</span> <a href="#attribute-draw_kind">19.188</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_ellipse">19.197.7</a>, <span class="Attribute">draw:start-angle</span> <a href="#attribute-draw_start-angle">19.213</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_ellipse">19.219.12</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:cx</span> <a href="#attribute-svg_cx_element-draw_ellipse">19.524.3</a>, <span class="Attribute">svg:cy</span> <a href="#attribute-svg_cy_element-draw_ellipse">19.525.3</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_ellipse">19.539.8</a>, <span class="Attribute">svg:rx</span> <a href="#attribute-svg_rx">19.550</a>, <span class="Attribute">svg:ry</span> <a href="#attribute-svg_ry">19.551</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_ellipse">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_ellipse">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_ellipse">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:ellipse&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_10_draw_connector_"><span style="margin-right:0.127cm;">10.3.10</span></a><a id="__RefHeading__1415824_253892949"/><a id="element-draw_connector"/>&lt;draw:connector&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:connector&gt;</span> element represents a connected set of one or more lines that visually connects a start and an end point. </p><p class="Text_20_body">Start and/or end points can be defined by references to glue points <a href="#element-draw_glue-point">10.3.16</a> or as absolute positions.  The connector's geometric path is defined by the <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a> attribute. Consumers may also compute the connector's geometric path considering the <span class="Attribute">draw:type</span> <a href="#attribute-draw_type_element-draw_connector">19.229.2</a> and <span class="Attribute">draw:line-skew</span> <a href="#attribute-draw_line-skew">19.190</a> attributes, and the formatting properties defined for connectors.</p><p class="Note">If the <span class="Attribute">svg:d</span> attribute is not present, the connector's geometric path is implementation-dependent. Producers should export the connector's geometric path using the <span class="Attribute">svg:d</span> attribute.</p><p class="Note"><span class="Note_20_Label">Note:</span> This assists consumers that are not capable of computing a connector path.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:connector&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:connector&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:end-glue-point</span> <a href="#attribute-draw_end-glue-point">19.142</a>, <span class="Attribute">draw:end-shape</span> <a href="#attribute-draw_end-shape">19.144</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_connector">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:line-skew</span> <a href="#attribute-draw_line-skew">19.190</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_connector">19.197.4</a>, <span class="Attribute">draw:start-glue-point</span> <a href="#attribute-draw_start-glue-point">19.215</a>, <span class="Attribute">draw:start-shape</span> <a href="#attribute-draw_start-shape">19.217</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_connector">19.219.9</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:type</span> <a href="#attribute-draw_type_element-draw_connector">19.229.2</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>, <span class="Attribute">svg:x1</span> <a href="#attribute-svg_x1_element-draw_connector">19.574.1</a>, <span class="Attribute">svg:x2</span> <a href="#attribute-svg_x2_element-draw_connector">19.575.1</a>, <span class="Attribute">svg:y1</span> <a href="#attribute-svg_y1_element-draw_connector">19.578.1</a>, <span class="Attribute">svg:y2</span> <a href="#attribute-svg_y2_element-draw_connector">19.579.1</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:connector&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_11_draw_caption_"><span style="margin-right:0.127cm;">10.3.11</span></a><a id="__RefHeading__1415826_253892949"/><a id="element-draw_caption"/>&lt;draw:caption&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:caption&gt;</span> element represents a description attached to a fixed point. It consists of rectangular drawing shape with an additional set of connected lines that connect the rectangle with the fixed point.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:caption&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:caption&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:caption-point-x</span> <a href="#attribute-draw_caption-point-x">19.116</a>, <span class="Attribute">draw:caption-point-y</span> <a href="#attribute-draw_caption-point-y">19.117</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:corner-radius</span> <a href="#attribute-draw_corner-radius">19.127</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_caption">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_caption">19.197.2</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_caption">19.219.7</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_caption">19.539.8</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_caption">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_caption">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_caption">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:caption&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_12_draw_measure_"><span style="margin-right:0.127cm;">10.3.12</span></a><a id="__RefHeading__1415828_253892949"/><a id="element-draw_measure"/>&lt;draw:measure&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:measure&gt;</span> element represents a shape that is used to measure distances in drawings.</p><p class="Text_20_body">A measure shape consists of two parallel lines, called <span class="Def">extension lines</span>, and a line perpendicular to the extension lines, called a <span class="Def">dimension line</span>. The dimension line has arrows at its endpoints. It is displayed between the extension lines and terminated by them. </p><p class="Text_20_body">The positions of extension lines and the dimension line are determined by two reference points, called <span class="Def">start</span> and <span class="Def">end reference points</span>.</p><p class="Text_20_body">The <span class="Attribute">draw:line-distance</span> style attribute defines the distance between the (virtual) line between the reference points, called <span class="Def">reference line</span>, and the dimension line. The <span class="Attribute">draw:placing</span> style attributes defines if the measure shape is placed above or below the reference line.</p><p class="Text_20_body">The start reference point is defined by the attributes <span class="Attribute">svg:x1</span> and <span class="Attribute">svg:y1</span> </p><p class="Text_20_body">The first extension line is drawn on a line as defined by the vector from the start reference point to the start point of the dimension line. The extension line will start along this vector at a distance from the start reference point that is defined by the <span class="Attribute">draw:guide-distance</span> style attribute minus the value of <span class="Attribute">draw:start-guide</span> style attribute.</p><p class="Text_20_body">The end reference point is defined by the attributes <span class="Attribute">svg:x2</span>, and <span class="Attribute">svg:y2</span>. </p><p class="Text_20_body">The second extension line is drawn on a line as defined by the vector from the end reference point to the end point of the dimension line. The extension line will start along this vector at the distance from the end reference point that is defined by the <span class="Attribute">draw:guide-distance</span> style attribute minus the value of <span class="Attribute">draw:end-guide</span> style attribute.</p><p class="Text_20_body">The end points of the extension lines are at the distance defined by the <span class="Attribute">draw:guide-overhang</span> style attribute after the intersection with the dimension line. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:measure&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:measure&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_measure">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_measure">19.197.17</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_measure">19.219.16</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:x1</span> <a href="#attribute-svg_x1_element-draw_measure">19.574.1</a>, <span class="Attribute">svg:x2</span> <a href="#attribute-svg_x2_element-draw_measure">19.575.1</a>, <span class="Attribute">svg:y1</span> <a href="#attribute-svg_y1_element-draw_measure">19.578.1</a>, <span class="Attribute">svg:y2</span> <a href="#attribute-svg_y2_element-draw_measure">19.579.1</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:measure&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_3_13_draw_control_"><span style="margin-right:0.127cm;">10.3.13</span></a><a id="__RefHeading__1415830_253892949"/><a id="element-draw_control"/>&lt;draw:control&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:control&gt;</span> element represents a shape that is linked to a control inside an <span class="Element">&lt;office:forms&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:control&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:control&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:control</span> <a href="#attribute-draw_control">19.125</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_control">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_control">19.197.5</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_control">19.219.10</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_control">19.539.8</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_control">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_control">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_control">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:control&gt;</span> element has the following child elements: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h3 class="Heading_20_3"><a id="a10_3_14_draw_page-thumbnail_"><span style="margin-right:0.127cm;">10.3.14</span></a><a id="__RefHeading__1415832_253892949"/><a id="element-draw_page-thumbnail"/>&lt;draw:page-thumbnail&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:page-thumbnail&gt;</span> element represents a rectangular area that displays the thumbnail of a drawing page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:page-thumbnail&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:page-thumbnail&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_page-thumbnail">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_page-thumbnail">19.197.20</a>, <span class="Attribute">draw:page-number</span> <a href="#attribute-draw_page-number">19.203</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_page-thumbnail">19.219.18</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class</span> <a href="#attribute-presentation_class">19.389</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:placeholder</span> <a href="#attribute-presentation_placeholder">19.407</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">presentation:user-transformed</span> <a href="#attribute-presentation_user-transformed">19.427</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_page-thumbnail">19.539.8</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_page-thumbnail">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_page-thumbnail">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_page-thumbnail">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:page-thumbnail&gt;</span> element has the following child elements: <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h3 class="Heading_20_3"><a id="a10_3_15_draw_g_"><span style="margin-right:0.127cm;">10.3.15</span></a><a id="__RefHeading__1415834_253892949"/><a id="element-draw_g"/>&lt;draw:g&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:g&gt;</span> element represents a group of drawing shapes.</p><p class="Text_20_body">Drawing shapes contained by a <span class="Element">&lt;draw:g&gt;</span> element that is itself contained by a <span class="Element">&lt;draw:a&gt;</span> element, act as hyperlinks using the <span class="Attribute">xlink:href</span> attribute of the containing <span class="Element">&lt;draw:a&gt;</span> element. If the included drawing shapes are themselves contained within <span class="Element">&lt;draw:a&gt;</span> elements, then the <span class="Attribute">xlink:href</span> attributes of those <span class="Element">&lt;draw:a&gt;</span> elements act as the hyperlink information for the shapes they contain.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:g&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:g&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_g">19.187.3</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_g">19.197.11</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_g">19.219.14</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_g">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:g&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h3 class="Heading_20_3"><a id="a10_3_16_draw_glue-point_"><span style="margin-right:0.127cm;">10.3.16</span></a><a id="__RefHeading__1415836_253892949"/><a id="element-draw_glue-point"/>&lt;draw:glue-point&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:glue-point&gt;</span> element specifies a point in the area of a drawing object to which a connector shape can connect. All drawing objects have four standard glue points located at the center of the four edges of the object's bounding box. Additional glue points may be added to a drawing object by inserting one or more <span class="Element">&lt;draw:glue-point&gt;</span> elements into a drawing object element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:glue-point&gt;</span> element is usable within the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:glue-point&gt;</span> element has the following attributes: <span class="Attribute">draw:align</span> <a href="#attribute-draw_align">19.111</a>, <span class="Attribute">draw:escape-direction</span> <a href="#attribute-draw_escape-direction">19.147</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_glue-point">19.187.2</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_glue-point">19.573.6</a> and <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_glue-point">19.577.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:glue-point&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_3_17_svg_title_"><span style="margin-right:0.127cm;">10.3.17</span></a><a id="__RefHeading__1415838_253892949"/><a id="element-svg_title"/>&lt;svg:title&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;svg:title&gt;</span> element specifies a name for a graphic object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:title&gt;</span> element is usable within the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:layer&gt;</span> <a href="#element-draw_layer">10.2.3</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:page-</span><span class="Element">thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:title&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;svg:title&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:title&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a10_3_18_svg_desc_"><span style="margin-right:0.127cm;">10.3.18</span></a><a id="__RefHeading__1415840_253892949"/><a id="element-svg_desc"/>&lt;svg:desc&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;svg:desc&gt;</span> element specifies a prose description of a graphic object that may be used to support accessibility. See appendix D.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:desc&gt;</span> element is usable within the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:layer&gt;</span> <a href="#element-draw_layer">10.2.3</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:desc&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;svg:desc&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:desc&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a10_3_19_office_event-listeners_"><span style="margin-right:0.127cm;">10.3.19</span></a><a id="__RefHeading__1415842_253892949"/><a id="element-office_event-listeners"/>&lt;office:event-listeners&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:event-listeners&gt;</span> element represents the attachment of an event listener to a drawing shape. See <a href="#Event_Tables">14.4</a>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:event-listeners&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>, <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>, <span class="Element">&lt;office:scripts&gt;</span> <a href="#element-office_scripts">3.12</a>, <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a> and <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:event-listeners&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:event-listeners&gt;</span> element has the following child elements: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a> and <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>.</p><h2 class="Heading_20_2"><a id="a10_4Frames"><span style="margin-right:0.127cm;">10.4</span></a><a id="__RefHeading__1415844_253892949"/><a id="Frames"/>Frames</h2><h3 class="Heading_20_3"><a id="a10_4_1General"><span style="margin-right:0.127cm;">10.4.1</span></a><a id="__RefHeading__1415846_253892949"/>General</h3><p class="Text_20_body">A frame is a container for enhanced content like text boxes, images or objects. A frame may contain multiple renditions of content. A consumer may choose the representation that it supports best.</p><p class="Text_20_body">Multiple representations may share <span class="Element">&lt;svg:desc&gt;</span> and <span class="Element">&lt;svg:title&gt;</span> elements.</p><p class="Text_20_body">Each child element of a frame is a different representation of the same content. The order of content elements reflects the document author's preference for rendering, with the first child element being preferred. That means that consumers should render the first child element that they support. A frame may contain multiple content elements, but shall contain at least one content element. </p><p class="Text_20_body">Within text documents, frames are also used to position content outside the default text flow of a document.</p><h3 class="Heading_20_3"><a id="a10_4_2_draw_frame_"><span style="margin-right:0.127cm;">10.4.2</span></a><a id="__RefHeading__1415848_253892949"/><a id="element-draw_frame"/>&lt;draw:frame&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:frame&gt;</span> element represents a frame and serves as the container for elements that may occur in a frame. </p><p class="Text_20_body">Frame formatting properties are stored in styles belonging to the <span class="Attribute_20_Value">graphic</span> family.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:frame&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:image&gt;</span> <a href="#element-office_image">3.9</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:frame&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:copy-of</span> <a href="#attribute-draw_copy-of">19.126</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_frame">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_frame">19.197.10</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_frame">19.219.13</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class</span> <a href="#attribute-presentation_class">19.389</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:placeholder</span> <a href="#attribute-presentation_placeholder">19.407</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">presentation:user-transformed</span> <a href="#attribute-presentation_user-transformed">19.427</a>, <span class="Attribute">style:rel-height</span> <a href="#attribute-style_rel-height">19.509</a>, <span class="Attribute">style:rel-width</span> <a href="#attribute-style_rel-width_element-draw_frame">19.510.2</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_frame">19.539.8</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_frame">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_frame">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_frame">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:frame&gt;</span> element has the following child elements: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:contour-path&gt;</span> <a href="#element-draw_contour-path">10.4.11.3</a>, <span class="Element">&lt;draw:contour-polygon&gt;</span> <a href="#element-draw_contour-polygon">10.4.11.2</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:image-map&gt;</span> <a href="#element-draw_image-map">10.4.13.2</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><h3 class="Heading_20_3"><a id="a10_4_3_draw_text-box_"><span style="margin-right:0.127cm;">10.4.3</span></a><a id="__RefHeading__1415850_253892949"/><a id="element-draw_text-box"/>&lt;draw:text-box&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:text-box&gt;</span> element represents a text box. This element may be used to place text in a container that is outside of the flow of the document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:text-box&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:text-box&gt;</span> element has the following attributes: <span class="Attribute">draw:chain-next-name</span> <a href="#attribute-draw_chain-next-name">19.118</a>, <span class="Attribute">draw:corner-radius</span> <a href="#attribute-draw_corner-radius">19.127</a>, <span class="Attribute">fo:max-height</span> <a href="#attribute-fo_max-height">19.238</a>, <span class="Attribute">fo:max-width</span> <a href="#attribute-fo_max-width">19.239</a>, <span class="Attribute">fo:min-height</span> <a href="#attribute-fo_min-height">19.240</a>, <span class="Attribute">fo:min-width</span> <a href="#attribute-fo_min-width">19.241</a>, <span class="Attribute">text:id</span> <a href="#attribute-text_id_element-draw_text-box">19.809.2</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:text-box&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:soft-page-break&gt;</span> <a href="#element-text_soft-page-break">5.6</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><h3 class="Heading_20_3"><a id="a10_4_4_draw_image_"><span style="margin-right:0.127cm;">10.4.4</span></a><a id="__RefHeading__1415852_253892949"/><a id="element-draw_image"/>&lt;draw:image&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:image&gt;</span> element represents an image. An image can be either:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A link to an external resource<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">or</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Embedded in the document<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> While the image data may have an arbitrary format, vector graphics should be stored in the <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> format and bitmap graphics in the <a title="Portable Network Graphics (PNG) Specification (Second Edition)" href="http://www.w3.org/TR/2003/REC-PNG-20031110">[PNG]</a> format.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:image&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:image&gt;</span> element has the following attributes: <span class="Attribute">draw:filter-name</span> <a href="#attribute-draw_filter-name">19.170</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_image">19.910.15</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:image&gt;</span> element has the following child elements: <span class="Element">&lt;office:binary-data&gt;</span> <a href="#element-office_binary-data">10.4.5</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_4_5_office_binary-data_"><span style="margin-right:0.127cm;">10.4.5</span></a><a id="__RefHeading__1415854_253892949"/><a id="element-office_binary-data"/>&lt;office:binary-data&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:binary-data&gt;</span> element contains image data in BASE64 encoding (as defined in <a title="Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies" href="http://www.ietf.org/rfc/rfc2045.txt">[RFC2045]</a>). If this element is present, an <span class="Attribute">xlink:href</span> attribute in its parent element shall be ignored. </p><p class="Note"><span class="Note_20_Label">Note</span>: The image data may be in an arbitrary data format. Consumers have to analyze the image data to determine the data format that is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:binary-data&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a> and <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:binary-data&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;office:binary-data&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:binary-data&gt;</span> element has content of data type <span class="Datatype">base64Binary</span> <a href="#datatype-base64Binary">18.2</a>.</p><h3 class="Heading_20_3"><a id="a10_4_6Objects"><span style="margin-right:0.127cm;">10.4.6</span></a><a id="__RefHeading__1415856_253892949"/>Objects</h3><h4 class="Heading_20_4"><a id="a10_4_6_1General"><span style="margin-right:0.127cm;">10.4.6.1</span></a><a id="__RefHeading__1415858_253892949"/>General</h4><p class="Text_20_body">A document in OpenDocument format can contain two types of embedded objects, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Objects that have an OpenDocument representation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Objects that do not have an OpenDocument representation.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"><span class="Example_20_Label">Note:</span> OLE objects are an example of objects without an OpenDocument representation. See <a title="Inside OLE">[OLE]</a>.</p><h4 class="Heading_20_4"><a id="a10_4_6_2_draw_object_"><span style="margin-right:0.127cm;">10.4.6.2</span></a><a id="__RefHeading__1415860_253892949"/><a id="element-draw_object"/>&lt;draw:object&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:object&gt;</span> element represents objects that have a OpenDocument representation.</p><p class="Text_20_body">Objects with an OpenDocument representation can either be: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in the same package as a document, in which case the Object is a sub document within the package. The <span class="Attribute">xlink:href</span> attribute of this element references that folder. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in a separate OpenDocument document instance. The <span class="Attribute">xlink:href</span> attribute of this element references that document's package. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in a child <span class="Element">&lt;office:document&gt;</span> element of this element. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in a child <span class="Element">&lt;math:math&gt;</span> element of this element. <span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> An image representation of an object should be included in a frame in addition to the object itself.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:object&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:object&gt;</span> element has the following attributes: <span class="Attribute">draw:notify-on-update-of-ranges</span> <a href="#attribute-draw_notify-on-update-of-ranges">19.200</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_object">19.910.16</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:object&gt;</span> element has the following child elements: <span class="Element">&lt;math:math&gt;</span> <a href="#element-math_math">14.5</a> and <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>.</p><h4 class="Heading_20_4"><a id="a10_4_6_3_draw_object-ole_"><span style="margin-right:0.127cm;">10.4.6.3</span></a><a id="__RefHeading__1415862_253892949"/><a id="element-draw_object-ole"/>&lt;draw:object-ole&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:object-ole&gt;</span> element represents objects that do not have an OpenDocument representation. </p><p class="Text_20_body">Objects without an OpenDocument representation can either be: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in the same package as a document, in which case it is contained in a file within the package. The <span class="Attribute">xlink:href</span> attribute of this element references that file. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in a separate file. The <span class="Attribute">xlink:href</span> attribute of this element references that file.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Contained in a child <span class="Element">&lt;office:binary-data&gt;</span> element of this element. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:object-ole&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:object-ole&gt;</span> element has the following attributes: <span class="Attribute">draw:class-id</span> <a href="#attribute-draw_class-id">19.119</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_object-ole">19.910.17</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:object-ole&gt;</span> element has the following child element: <span class="Element">&lt;office:binary-data&gt;</span> <a href="#element-office_binary-data">10.4.5</a>.</p><h3 class="Heading_20_3"><a id="a10_4_7_draw_applet_"><span style="margin-right:0.127cm;">10.4.7</span></a><a id="__RefHeading__1415864_253892949"/><a id="element-draw_applet"/>&lt;draw:applet&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:applet&gt;</span> element represents an applet that is embedded in a document. Its semantics are the same as the <span class="Alien_20_Element">&lt;applet&gt;</span> element in HTML. §13.4 of <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>. This element shall have either a <span class="Attribute">draw:code</span> or <span class="Attribute">draw:object</span> attribute.</p><p class="Text_20_body">The applet name, width, height, margins, title and description are specified by the <span class="Element">&lt;draw:applet&gt;</span> element's <span class="Element">&lt;draw:frame&gt;</span> parent element. The <span class="Element">&lt;draw:applet&gt;</span> element does not support character data content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:applet&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:applet&gt;</span> element has the following attributes: <span class="Attribute">draw:archive</span> <a href="#attribute-draw_archive">19.113</a>, <span class="Attribute">draw:code</span> <a href="#attribute-draw_code">19.121</a>, <span class="Attribute">draw:may-script</span> <a href="#attribute-draw_may-script">19.195</a>, <span class="Attribute">draw:object</span> <a href="#attribute-draw_object">19.201</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_applet">19.910.9</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:applet&gt;</span> element has the following child element: <span class="Element">&lt;draw:param&gt;</span> <a href="#element-draw_param">10.4.9</a>.</p><h3 class="Heading_20_3"><a id="a10_4_8_draw_plugin_"><span style="margin-right:0.127cm;">10.4.8</span></a><a id="__RefHeading__1415866_253892949"/><a id="element-draw_plugin"/>&lt;draw:plugin&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:plugin&gt;</span> element represents an external application that processes data with a specified media-type.</p><p class="Text_20_body">How OpenDocument consumers interact with external applications is not defined by this specification.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Consumers are responsible for any and all security issues that may arise from interaction with an external application referenced by a <span class="Element">&lt;draw:plugin&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:plugin&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:plugin&gt;</span> element has the following attributes: <span class="Attribute">draw:mime-type</span> <a href="#attribute-draw_mime-type">19.191</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_plugin">19.910.18</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:plugin&gt;</span> element has the following child element: <span class="Element">&lt;draw:param&gt;</span> <a href="#element-draw_param">10.4.9</a>.</p><h3 class="Heading_20_3"><a id="a10_4_9_draw_param_"><span style="margin-right:0.127cm;">10.4.9</span></a><a id="__RefHeading__1415868_253892949"/><a id="element-draw_param"/>&lt;draw:param&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:param&gt;</span> element contains parameters that are passed to an applet or plugin when they are initialized.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:param&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a> and <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:param&gt;</span> element has the following attributes: <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_param">19.197.21</a> and <span class="Attribute">draw:value</span> <a href="#attribute-draw_value">19.230</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:param&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_4_10_draw_floating-frame_"><span style="margin-right:0.127cm;">10.4.10</span></a><a id="__RefHeading__1415870_253892949"/><a id="element-draw_floating-frame"/>&lt;draw:floating-frame&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:floating-frame&gt;</span> element represents a frame that is embedded in a document.</p><p class="Text_20_body">Floating frames cannot be transformed as described in section <a href="#attribute-draw_transform">19.228</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:floating-frame&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:floating-frame&gt;</span> element has the following attributes: <span class="Attribute">draw:frame-name</span> <a href="#attribute-draw_frame-name">19.172</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_floating-frame">19.910.14</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:floating-frame&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_4_11Contours"><span style="margin-right:0.127cm;">10.4.11</span></a><a id="__RefHeading__1415872_253892949"/><a id="draw-contours"/>Contours</h3><h4 class="Heading_20_4"><a id="a10_4_11_1General"><span style="margin-right:0.127cm;">10.4.11.1</span></a><a id="__RefHeading__1415874_253892949"/>General</h4><p class="Text_20_body">The <span class="Element">&lt;draw:contour-polygon&gt;</span> and <span class="Element">&lt;draw:contour-path&gt;</span> elements are used to specify contours to be applied to object or images.</p><p class="Text_20_body">Consumers should support pixel lengths for the <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attributes of the <span class="Element">&lt;draw:contour-polygon&gt;</span> and <span class="Element">&lt;draw:contour-path&gt;</span> elements.</p><p class="Note"><span class="Note_20_Label">Note</span>: A contour of an object or image establishes an outer boundary around an object or image. One use would be the wrapping of text around a contour specified for an image, if <span class="Attribute">style:wrap-contour</span>=”<span class="Attribute_20_Value">true</span>” and a contour is specified.</p><h4 class="Heading_20_4"><a id="a10_4_11_2_draw_contour-polygon_"><span style="margin-right:0.127cm;">10.4.11.2</span></a><a id="__RefHeading__1415876_253892949"/><a id="element-draw_contour-polygon"/>&lt;draw:contour-polygon&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:contour-polygon&gt;</span> element specifies a contour using a polygon. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:contour-polygon&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:contour-polygon&gt;</span> element has the following attributes: <span class="Attribute">draw:points</span> <a href="#attribute-draw_points">19.206</a>, <span class="Attribute">draw:recreate-on-edit</span> <a href="#attribute-draw_recreate-on-edit">19.208</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_contour-polygon">19.539.6</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a> and <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_contour-polygon">19.571.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:contour-polygon&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a10_4_11_3_draw_contour-path_"><span style="margin-right:0.127cm;">10.4.11.3</span></a><a id="__RefHeading__1415878_253892949"/><a id="element-draw_contour-path"/>&lt;draw:contour-path&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:contour-path&gt;</span> element specifies a contour using a path. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:contour-path&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:contour-path&gt;</span> element has the following attributes: <span class="Attribute">draw:recreate-on-edit</span> <a href="#attribute-draw_recreate-on-edit">19.208</a>, <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_contour-path">19.539.6</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a> and <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_contour-path">19.571.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:contour-path&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_4_12_draw_a_"><span style="margin-right:0.127cm;">10.4.12</span></a><a id="__RefHeading__1415880_253892949"/><a id="element-draw_a"/>&lt;draw:a&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:a&gt;</span> element enables both frames and drawing shapes to act as hyperlinks. </p><p class="Text_20_body">The <span class="Element">&lt;draw:a&gt;</span> element contains a drawing shape that should behave as a hyperlink.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:a&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:a&gt;</span> element has the following attributes: <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-draw_a">19.376.2</a>, <span class="Attribute">office:server-map</span> <a href="#attribute-office_server-map">19.378</a>, <span class="Attribute">office:target-frame-name</span> <a href="#attribute-office_target-frame-name">19.381</a>, <span class="Attribute">office:title</span> <a href="#attribute-office_title">19.383</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_a">19.910.8</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:a&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><h3 class="Heading_20_3"><a id="a10_4_13Client_Side_Image_Maps"><span style="margin-right:0.127cm;">10.4.13</span></a><a id="__RefHeading__1415882_253892949"/><a id="Image_Map"/>Client Side Image Maps</h3><h4 class="Heading_20_4"><a id="a10_4_13_1General"><span style="margin-right:0.127cm;">10.4.13.1</span></a><a id="__RefHeading__1415884_253892949"/>General</h4><p class="Text_20_body">An client side image map is a collection of hyperlinks that are associated with graphic elements. The image map is a sequence of image map elements. Each image map element associates a hyperlink with an area. The area can be a rectangle, circle or polygon.</p><h4 class="Heading_20_4"><a id="a10_4_13_2_draw_image-map_"><span style="margin-right:0.127cm;">10.4.13.2</span></a><a id="__RefHeading__1415886_253892949"/><a id="element-draw_image-map"/>&lt;draw:image-map&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:image-map&gt;</span> element represents an image map.</p><p class="Text_20_body">Image map elements are specified as absolute positions relative to the original size of its associated graphical element. OpenDocument consumer shall scale the image map to match the current size of the image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:image-map&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:image-map&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:image-map&gt;</span> element has the following child elements: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a> and <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><h4 class="Heading_20_4"><a id="a10_4_13_3_draw_area-rectangle_"><span style="margin-right:0.127cm;">10.4.13.3</span></a><a id="__RefHeading__1415888_253892949"/><a id="element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:area-rectangle&gt;</span> element specifies a rectangular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:area-rectangle&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:image-map&gt;</span> <a href="#element-draw_image-map">10.4.13.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:area-rectangle&gt;</span> element has the following attributes: <span class="Attribute">draw:nohref</span> <a href="#attribute-draw_nohref">19.199</a>, <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-draw_area-rectangle">19.376.4</a>, <span class="Attribute">office:target-frame-name</span> <a href="#attribute-office_target-frame-name">19.381</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_area-rectangle">19.539.5</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_area-rectangle">19.571.7</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_area-rectangle">19.573.3</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_area-rectangle">19.577.3</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_area-rectangle">19.910.12</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:area-rectangle&gt;</span> element has the following child elements: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h4 class="Heading_20_4"><a id="a10_4_13_4_draw_area-circle_"><span style="margin-right:0.127cm;">10.4.13.4</span></a><a id="__RefHeading__1415890_253892949"/><a id="element-draw_area-circle"/>&lt;draw:area-circle&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:area-circle&gt;</span> element represents a circular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:area-circle&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:image-map&gt;</span> <a href="#element-draw_image-map">10.4.13.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:area-circle&gt;</span> element has the following attributes: <span class="Attribute">draw:nohref</span> <a href="#attribute-draw_nohref">19.199</a>, <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-draw_area-circle">19.376.3</a>, <span class="Attribute">office:target-frame-name</span> <a href="#attribute-office_target-frame-name">19.381</a>, <span class="Attribute">svg:cx</span> <a href="#attribute-svg_cx_element-draw_area-circle">19.524.1</a>, <span class="Attribute">svg:cy</span> <a href="#attribute-svg_cy_element-draw_area-circle">19.525.1</a>, <span class="Attribute">svg:r</span> <a href="#attribute-svg_r_element-draw_area-circle">19.549.1</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_area-circle">19.910.10</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:area-circle&gt;</span> element has the following child elements: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h4 class="Heading_20_4"><a id="a10_4_13_5_draw_area-polygon_"><span style="margin-right:0.127cm;">10.4.13.5</span></a><a id="__RefHeading__1415892_253892949"/><a id="element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;draw:area-polygon&gt;</span> element specifies a polygonal image map area. A polygonal image map area has the following components:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A bounding box.<br/><span style="margin-left:0.6401cm"/>The bounding box establishes the reference frame for the view box and the polygon point sequence. The reference frame enables the coordinates to be translated into absolute coordinates.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A view box.<br/><span style="margin-left:0.6401cm"/>The view box attribute establishes a coordinate system for the point sequence. The view box avoids the need to record every point of the point sequence as absolute coordinates with length and unit of measurement.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A sequence of points in view box-coordinates in the <span class="Attribute">draw:points</span> attribute.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> For more information about how to represent polygons, see <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:area-polygon&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:image-map&gt;</span> <a href="#element-draw_image-map">10.4.13.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:area-polygon&gt;</span> element has the following attributes: <span class="Attribute">draw:nohref</span> <a href="#attribute-draw_nohref">19.199</a>, <span class="Attribute">draw:points</span> <a href="#attribute-draw_points">19.206</a>, <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-draw_area-polygon">19.376.5</a>, <span class="Attribute">office:target-frame-name</span> <a href="#attribute-office_target-frame-name">19.381</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_area-polygon">19.539.4</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_area-polygon">19.571.6</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_area-polygon">19.573.2</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_area-polygon">19.577.2</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_area-polygon">19.910.11</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:area-polygon&gt;</span> element has the following child elements: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h2 class="Heading_20_2"><a id="a10_53D_Shapes"><span style="margin-right:0.127cm;">10.5</span></a><a id="__RefHeading__1415894_253892949"/><a id="a_3D_Shapes"/>3D Shapes</h2><h3 class="Heading_20_3"><a id="a10_5_1General"><span style="margin-right:0.127cm;">10.5.1</span></a><a id="__RefHeading__1718304_1219268628"/>General</h3><p class="Standard">3D shapes are used to define three-dimensional coordinate systems and geometrical figures within them. All OpenDocument 3D coordinate systems are right-handed. Geometry is represented by a tree of scenes. Each scene may contain zero or more 3D shapes, with a scene being a special case of shape. The root scene defines the world coordinate system. Each 3D shape may define a local coordinate system relative to its parent 3D scene.</p><h3 class="Heading_20_3"><a id="a10_5_2_dr3d_scene_"><span style="margin-right:0.127cm;">10.5.2</span></a><a id="__RefHeading__1415896_253892949"/><a id="element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;dr3d:scene&gt;</span> element is the only element that can contain three-dimensional shapes. Like the <span class="Element">&lt;draw:g&gt;</span> element it groups shapes, but it also defines the projection, lighting, and other rendering details for the shapes inside the scene.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dr3d:scene&gt;</span> element is usable within the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dr3d:scene&gt;</span> element has the following attributes: <span class="Attribute">dr3d:ambient-color</span> <a href="#attribute-dr3d_ambient-color">19.92</a>, <span class="Attribute">dr3d:distance</span> <a href="#attribute-dr3d_distance">19.96</a>, <span class="Attribute">dr3d:focal-length</span> <a href="#attribute-dr3d_focal-length">19.98</a>, <span class="Attribute">dr3d:lighting-mode</span> <a href="#attribute-dr3d_lighting-mode_element-dr3d_scene">19.99.3</a>, <span class="Attribute">dr3d:projection</span> <a href="#attribute-dr3d_projection">19.102</a>, <span class="Attribute">dr3d:shade-mode</span> <a href="#attribute-dr3d_shade-mode">19.103</a>, <span class="Attribute">dr3d:shadow-slant</span> <a href="#attribute-dr3d_shadow-slant">19.104</a>, <span class="Attribute">dr3d:transform</span> <a href="#attribute-dr3d_transform">19.107</a>, <span class="Attribute">dr3d:vpn</span> <a href="#attribute-dr3d_vpn">19.108</a>, <span class="Attribute">dr3d:vrp</span> <a href="#attribute-dr3d_vrp">19.109</a>, <span class="Attribute">dr3d:vup</span> <a href="#attribute-dr3d_vup">19.110</a>, <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-dr3d_scene">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-dr3d_scene">19.219.5</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-dr3d_scene">19.539.3</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-dr3d_scene">19.571.5</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-dr3d_scene">19.573.4</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-dr3d_scene">19.577.4</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dr3d:scene&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:light&gt;</span> <a href="#element-dr3d_light">10.5.3</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a> and <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>.</p><h3 class="Heading_20_3"><a id="a10_5_3_dr3d_light_"><span style="margin-right:0.127cm;">10.5.3</span></a><a id="__RefHeading__1415898_253892949"/><a id="element-dr3d_light"/>&lt;dr3d:light&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;dr3d:light&gt;</span> element represents a light inside a scene.</p><p class="Note"><span class="Note_20_Label">Note:</span> There may be several lights, but consumers may limit the number of lights per scene to 8. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dr3d:light&gt;</span> element is usable within the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dr3d:light&gt;</span> element has the following attributes: <span class="Attribute">dr3d:diffuse-color</span> <a href="#attribute-dr3d_diffuse-color">19.94</a>, <span class="Attribute">dr3d:direction</span> <a href="#attribute-dr3d_direction">19.95</a>, <span class="Attribute">dr3d:enabled</span> <a href="#attribute-dr3d_enabled">19.97</a> and <span class="Attribute">dr3d:specular</span> <a href="#attribute-dr3d_specular">19.106</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dr3d:light&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_5_4_dr3d_cube_"><span style="margin-right:0.127cm;">10.5.4</span></a><a id="__RefHeading__1415900_253892949"/><a id="element-dr3d_cube"/>&lt;dr3d:cube&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;dr3d:cube&gt;</span> element represents a three-dimensional cube shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dr3d:cube&gt;</span> element is usable within the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dr3d:cube&gt;</span> element has the following attributes: <span class="Attribute">dr3d:max-edge</span> <a href="#attribute-dr3d_max-edge">19.100</a>, <span class="Attribute">dr3d:min-edge</span> <a href="#attribute-dr3d_min-edge">19.101</a>, <span class="Attribute">dr3d:transform</span> <a href="#attribute-dr3d_transform">19.107</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-dr3d_cube">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-dr3d_cube">19.219.2</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dr3d:cube&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_5_5_dr3d_sphere_"><span style="margin-right:0.127cm;">10.5.5</span></a><a id="__RefHeading__1415902_253892949"/><a id="element-dr3d_sphere"/>&lt;dr3d:sphere&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;dr3d:sphere&gt;</span> element represents a three-dimensional sphere shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dr3d:sphere&gt;</span> element is usable within the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dr3d:sphere&gt;</span> element has the following attributes: <span class="Attribute">dr3d:center</span> <a href="#attribute-dr3d_center">19.93</a>, <span class="Attribute">dr3d:size</span> <a href="#attribute-dr3d_size">19.105</a>, <span class="Attribute">dr3d:transform</span> <a href="#attribute-dr3d_transform">19.107</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-dr3d_sphere">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-dr3d_sphere">19.219.6</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dr3d:sphere&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_5_6_dr3d_extrude_"><span style="margin-right:0.127cm;">10.5.6</span></a><a id="__RefHeading__1415904_253892949"/><a id="element-dr3d_extrude"/>&lt;dr3d:extrude&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;dr3d:extrude&gt;</span> element represents a three-dimensional extruded object based on the given polygon. The 3D geometry is formed by extruding a polygon perpendicular to the plane of the given polygon by a depth (see <span class="Attribute">dr3d:depth</span>, <a href="#property-dr3d_depth">20.72</a>), creating a front face, a back face and side faces. The side faces are formed by connecting all corresponding single edges of the front and back faces. When no depth is given, the polygon forms a shape without depth. The closing of the front face depends on the value of the <span class="Attribute">dr3d:close-front</span> attribute <a href="#property-dr3d_close-front">20.71</a>. The closing of the back face depends on the value of the <span class="Attribute">dr3d:close-back</span> attribute <a href="#property-dr3d_close-back">20.70</a>. The size of the back face can be relative to the size of the front face when the <span class="Attribute">dr3d:back-scale</span> attribute is used. The side faces defined by the extrusion of the shape are always closed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dr3d:extrude&gt;</span> element is usable within the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dr3d:extrude&gt;</span> element has the following attributes: <span class="Attribute">dr3d:transform</span> <a href="#attribute-dr3d_transform">19.107</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-dr3d_extrude">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-dr3d_extrude">19.219.3</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dr3d:extrude&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_5_7_dr3d_rotate_"><span style="margin-right:0.127cm;">10.5.7</span></a><a id="__RefHeading__1415906_253892949"/><a id="element-dr3d_rotate"/>&lt;dr3d:rotate&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;dr3d:rotate&gt;</span> element represents a three-dimensional rotation shape based on the given polygon. The 3D geometry is defined by rotating the XY-plane with the polygon around the Y-axis of the local coordinate system.  This rotation is linearly interpolated in the given number of steps (<span class="Attribute">dr3d:horizontal-segments</span> <a href="#property-dr3d_horizontal-segments">20.78</a>) around the given angle (<span class="Attribute">dr3d:end-angle</span> <a href="#property-dr3d_end-angle">20.77</a>). The side faces are formed by connecting all corresponding single edges of a neighboring pairs of rotated polygons. By default, the rotation uses a full rotation (360 degrees, <span class="Attribute">dr3d:end-angle</span> attribute <a href="#property-dr3d_end-angle">20.77</a>). In that case the 3D geometry is implicitly closed and no front face or back face is created (unless they are of different sizes). If the rotation is different, a front face is created using the first, unrotated polygon and a back face is created using the last rotated polygon. The closing of a front face also depends on the value of the <span class="Attribute">dr3d:close-front</span> attribute <a href="#property-dr3d_close-front">20.71</a> and the closing of a back face on the value of the <span class="Attribute">dr3d:close-back</span> <a href="#property-dr3d_close-back">20.70</a> attribute. The size of the back face can be different than the size of the front face when the <span class="Attribute">dr3d:back-scale</span> attribute <a href="#property-dr3d_back-scale">20.68</a> is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;dr3d:rotate&gt;</span> element is usable within the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;dr3d:rotate&gt;</span> element has the following attributes: <span class="Attribute">dr3d:transform</span> <a href="#attribute-dr3d_transform">19.107</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-dr3d_rotate">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-dr3d_rotate">19.219.4</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a>, <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;dr3d:rotate&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a10_6Custom_Shape"><span style="margin-right:0.127cm;">10.6</span></a><a id="__RefHeading__1415908_253892949"/><a id="Custom_Shape"/>Custom Shape</h2><h3 class="Heading_20_3"><a id="a10_6_1_draw_custom-shape_"><span style="margin-right:0.127cm;">10.6.1</span></a><a id="__RefHeading__1415910_253892949"/><a id="element-draw_custom-shape"/>&lt;draw:custom-shape&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:custom-shape&gt;</span> element represents a complex figure. It supports font geometry effects and extrusion. A custom shape may have a geometry that influences its shape. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:custom-shape&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:shapes&gt;</span> <a href="#element-table_shapes">9.2.8</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:deletion&gt;</span> <a href="#element-text_deletion">5.5.4</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:index-body&gt;</span> <a href="#element-text_index-body">8.2.2</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:note-body&gt;</span> <a href="#element-text_note-body">6.3.4</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:custom-shape&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-id</span> <a href="#attribute-draw_caption-id">19.115</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:data</span> <a href="#attribute-draw_data">19.131</a>, <span class="Attribute">draw:engine</span> <a href="#attribute-draw_engine">19.146</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-draw_custom-shape">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_custom-shape">19.197.6</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-draw_custom-shape">19.219.11</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_custom-shape">19.539.8</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_custom-shape">19.571.10</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-draw_custom-shape">19.573.5</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-draw_custom-shape">19.577.5</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:custom-shape&gt;</span> element has the following child elements: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>, <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>, <span class="Element">&lt;svg:desc&gt;</span> <a href="#element-svg_desc">10.3.18</a>, <span class="Element">&lt;svg:title&gt;</span> <a href="#element-svg_title">10.3.17</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a10_6_2_draw_enhanced-geometry_"><span style="margin-right:0.127cm;">10.6.2</span></a><a id="__RefHeading__1415912_253892949"/><a id="element-draw_enhanced-geometry"/>&lt;draw:enhanced-geometry&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:enhanced-geometry&gt;</span> element contains the geometry for a <span class="Element">&lt;draw:custom-shape&gt;</span> element if its <span class="Attribute">draw:engine</span> attribute has been omitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:enhanced-geometry&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:enhanced-geometry&gt;</span> element has the following attributes: <span class="Attribute">dr3d:projection</span> <a href="#attribute-dr3d_projection">19.102</a>, <span class="Attribute">dr3d:shade-mode</span> <a href="#attribute-dr3d_shade-mode">19.103</a>, <span class="Attribute">draw:concentric-gradient-fill-allowed</span> <a href="#attribute-draw_concentric-gradient-fill-allowed">19.124</a>, <span class="Attribute">draw:enhanced-path</span> <a href="#attribute-draw_enhanced-path">19.145</a>, <span class="Attribute">draw:extrusion</span> <a href="#attribute-draw_extrusion">19.148</a>, <span class="Attribute">draw:extrusion-allowed</span> <a href="#attribute-draw_extrusion-allowed">19.149</a>, <span class="Attribute">draw:extrusion-brightness</span> <a href="#attribute-draw_extrusion-brightness">19.150</a>, <span class="Attribute">draw:extrusion-color</span> <a href="#attribute-draw_extrusion-color">19.151</a>, <span class="Attribute">draw:extrusion-depth</span> <a href="#attribute-draw_extrusion-depth">19.152</a>, <span class="Attribute">draw:extrusion-diffusion</span> <a href="#attribute-draw_extrusion-diffusion">19.153</a>, <span class="Attribute">draw:extrusion-first-light-direction</span> <a href="#attribute-draw_extrusion-first-light-direction">19.154</a>, <span class="Attribute">draw:extrusion-first-light-harsh</span> <a href="#attribute-draw_extrusion-first-light-harsh">19.155</a>, <span class="Attribute">draw:extrusion-first-light-level</span> <a href="#attribute-draw_extrusion-first-light-level">19.156</a>, <span class="Attribute">draw:extrusion-light-face</span> <a href="#attribute-draw_extrusion-light-face">19.157</a>, <span class="Attribute">draw:extrusion-metal</span> <a href="#attribute-draw_extrusion-metal">19.158</a>, <span class="Attribute">draw:extrusion-number-of-line-</span><span class="Attribute">segments</span> <a href="#attribute-draw_extrusion-number-of-line-segments">19.159</a>, <span class="Attribute">draw:extrusion-origin</span> <a href="#attribute-draw_extrusion-origin">19.160</a>, <span class="Attribute">draw:extrusion-rotation-angle</span> <a href="#attribute-draw_extrusion-rotation-angle">19.161</a>, <span class="Attribute">draw:extrusion-rotation-center</span> <a href="#attribute-draw_extrusion-rotation-center">19.162</a>, <span class="Attribute">draw:extrusion-second-light-direction</span> <a href="#attribute-draw_extrusion-second-light-direction">19.163</a>, <span class="Attribute">draw:extrusion-second-light-harsh</span> <a href="#attribute-draw_extrusion-second-light-harsh">19.164</a>, <span class="Attribute">draw:extrusion-second-light-level</span> <a href="#attribute-draw_extrusion-second-light-level">19.165</a>, <span class="Attribute">draw:extrusion-shininess</span> <a href="#attribute-draw_extrusion-shininess">19.166</a>, <span class="Attribute">draw:extrusion-skew</span> <a href="#attribute-draw_extrusion-skew">19.167</a>, <span class="Attribute">draw:extrusion-specularity</span> <a href="#attribute-draw_extrusion-specularity">19.168</a>, <span class="Attribute">draw:extrusion-viewpoint</span> <a href="#attribute-draw_extrusion-viewpoint">19.169</a>, <span class="Attribute">draw:glue-point-leaving-directions</span> <a href="#attribute-draw_glue-point-leaving-directions">19.173</a>, <span class="Attribute">draw:glue-points</span> <a href="#attribute-draw_glue-points">19.175</a>, <span class="Attribute">draw:glue-point-type</span> <a href="#attribute-draw_glue-point-type">19.174</a>, <span class="Attribute">draw:mirror-horizontal</span> <a href="#attribute-draw_mirror-horizontal">19.192</a>, <span class="Attribute">draw:mirror-vertical</span> <a href="#attribute-draw_mirror-vertical">19.193</a>, <span class="Attribute">draw:modifiers</span> <a href="#attribute-draw_modifiers">19.196</a>, <span class="Attribute">draw:path-stretchpoint-x</span> <a href="#attribute-draw_path-stretchpoint-x">19.204</a>, <span class="Attribute">draw:path-stretchpoint-y</span> <a href="#attribute-draw_path-stretchpoint-y">19.205</a>, <span class="Attribute">draw:text-areas</span> <a href="#attribute-draw_text-areas">19.220</a>, <span class="Attribute">draw:text-path</span> <a href="#attribute-draw_text-path">19.221</a>, <span class="Attribute">draw:text-path-allowed</span> <a href="#attribute-draw_text-path-allowed">19.222</a>, <span class="Attribute">draw:text-path-mode</span> <a href="#attribute-draw_text-path-mode">19.223</a>, <span class="Attribute">draw:text-path-same-letter-heights</span> <a href="#attribute-draw_text-path-same-letter-heights">19.224</a>, <span class="Attribute">draw:text-path-scale</span> <a href="#attribute-draw_text-path-scale">19.225</a>, <span class="Attribute">draw:text-rotate-angle</span> <a href="#attribute-draw_text-rotate-angle">19.226</a>, <span class="Attribute">draw:type</span> <a href="#attribute-draw_type_element-draw_enhanced-geometry">19.229.3</a> and <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:enhanced-geometry&gt;</span> element has the following child elements: <span class="Element">&lt;draw:equation&gt;</span> <a href="#element-draw_equation">10.2.5</a> and <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><h3 class="Heading_20_3"><a id="a10_6_3_draw_handle_"><span style="margin-right:0.127cm;">10.6.3</span></a><a id="__RefHeading__1415914_253892949"/><a id="element-draw_handle"/>&lt;draw:handle&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:handle&gt;</span> element represents a single interaction handle for a drawing shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:handle&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:handle&gt;</span> element has the following attributes: <span class="Attribute">draw:handle-mirror-horizontal</span> <a href="#attribute-draw_handle-mirror-horizontal">19.176</a>, <span class="Attribute">draw:handle-mirror-vertical</span> <a href="#attribute-draw_handle-mirror-vertical">19.177</a>, <span class="Attribute">draw:handle-polar</span> <a href="#attribute-draw_handle-polar">19.178</a>, <span class="Attribute">draw:handle-position</span> <a href="#attribute-draw_handle-position">19.179</a>, <span class="Attribute">draw:handle-radius-range-maximum</span> <a href="#attribute-draw_handle-radius-range-maximum">19.180</a>, <span class="Attribute">draw:handle-radius-range-minimum</span> <a href="#attribute-draw_handle-radius-range-minimum">19.181</a>, <span class="Attribute">draw:handle-range-x-maximum</span> <a href="#attribute-draw_handle-range-x-maximum">19.182</a>, <span class="Attribute">draw:handle-range-x-minimum</span> <a href="#attribute-draw_handle-range-x-minimum">19.183</a>, <span class="Attribute">draw:handle-range-y-maximum</span> <a href="#attribute-draw_handle-range-y-maximum">19.184</a>, <span class="Attribute">draw:handle-range-y-minimum</span> <a href="#attribute-draw_handle-range-y-minimum">19.185</a> and <span class="Attribute">draw:handle-switched</span> <a href="#attribute-draw_handle-switched">19.186</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:handle&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a10_7Presentation_Shapes"><span style="margin-right:0.127cm;">10.7</span></a><a id="__RefHeading__1415916_253892949"/>Presentation Shapes</h2><p class="Text_20_body">Presentation shapes are shapes on a draw page that are part of a presentation page layout.<a href="#element-style_presentation-page-layout">16.41</a> They use styles with a style family value of <span class="Attribute_20_Value">presentation</span>, unlike drawing shapes which use styles with a style family value of <span class="Attribute_20_Value">graphic</span>. Presentation shapes can be empty, acting only as placeholders. If a draw page's presentation layout is changed, all presentation shapes contained in that draw page are adapted automatically.</p><p class="Text_20_body">Standard drawing shapes can also be used in presentations. The <span class="Attribute">presentation:class</span> attribute distinguishes presentation shapes from drawing shapes. Unlike presentation shapes, standard drawing shapes are not adapted if the presentation page layout is changed.</p><h2 class="Heading_20_2"><a id="a10_8Presentation_Animations"><span style="margin-right:0.127cm;">10.8</span></a><a id="__RefHeading__1415918_253892949"/>Presentation Animations</h2><h3 class="Heading_20_3"><a id="a10_8_1_presentation_animations_"><span style="margin-right:0.127cm;">10.8.1</span></a><a id="__RefHeading__1415920_253892949"/><a id="element-presentation_animations"/>&lt;presentation:animations&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:animations&gt;</span> element is a container for animation effects. Animation effects are executed when a page represented by a <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> element containing this element is displayed.</p><p class="Text_20_body">A single shape may be the subject of multiple effects. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:animations&gt;</span> element is usable within the following element: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:animations&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:animations&gt;</span> element has the following child elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a>, <span class="Element">&lt;presentation:dim&gt;</span> <a href="#element-presentation_dim">10.8.7</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:play&gt;</span> <a href="#element-presentation_play">10.8.8</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><h3 class="Heading_20_3"><a id="a10_8_2_presentation_sound_"><span style="margin-right:0.127cm;">10.8.2</span></a><a id="__RefHeading__1415922_253892949"/><a id="element-presentation_sound"/>&lt;presentation:sound&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:sound&gt;</span> element represents a sound.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:sound&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:dim&gt;</span> <a href="#element-presentation_dim">10.8.7</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a>, <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a> and <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:sound&gt;</span> element has the following attributes: <span class="Attribute">presentation:play-full</span> <a href="#attribute-presentation_play-full">19.408</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-presentation_sound">19.910.26</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:sound&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_8_3_presentation_show-shape_"><span style="margin-right:0.127cm;">10.8.3</span></a><a id="__RefHeading__1415924_253892949"/><a id="element-presentation_show-shape"/>&lt;presentation:show-shape&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:show-shape&gt;</span> element specifies when and how a shape becomes visible. Prior to execution of the effect defined by this element the shape containing it is invisible.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:show-shape&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a> and <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:show-shape&gt;</span> element has the following attributes: <span class="Attribute">draw:shape-id</span> <a href="#attribute-draw_shape-id">19.210</a>, <span class="Attribute">presentation:delay</span> <a href="#attribute-presentation_delay">19.391</a>, <span class="Attribute">presentation:direction</span> <a href="#attribute-presentation_direction">19.392</a>, <span class="Attribute">presentation:effect</span> <a href="#attribute-presentation_effect">19.394</a>, <span class="Attribute">presentation:path-id</span> <a href="#attribute-presentation_path-id">19.405</a>, <span class="Attribute">presentation:speed</span> <a href="#attribute-presentation_speed">19.417</a> and <span class="Attribute">presentation:start-scale</span> <a href="#attribute-presentation_start-scale">19.418</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:show-shape&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h3 class="Heading_20_3"><a id="a10_8_4_presentation_show-text_"><span style="margin-right:0.127cm;">10.8.4</span></a><a id="__RefHeading__1415926_253892949"/><a id="element-presentation_show-text"/>&lt;presentation:show-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:show-text&gt;</span> element defines an effect that makes text within a shape visible. Prior to execution of the effect defined by this element the shape and the text it contains are invisible. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:show-text&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a> and <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:show-text&gt;</span> element has the following attributes: <span class="Attribute">draw:shape-id</span> <a href="#attribute-draw_shape-id">19.210</a>, <span class="Attribute">presentation:delay</span> <a href="#attribute-presentation_delay">19.391</a>, <span class="Attribute">presentation:direction</span> <a href="#attribute-presentation_direction">19.392</a>, <span class="Attribute">presentation:effect</span> <a href="#attribute-presentation_effect">19.394</a>, <span class="Attribute">presentation:path-id</span> <a href="#attribute-presentation_path-id">19.405</a>, <span class="Attribute">presentation:speed</span> <a href="#attribute-presentation_speed">19.417</a> and <span class="Attribute">presentation:start-scale</span> <a href="#attribute-presentation_start-scale">19.418</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:show-text&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h3 class="Heading_20_3"><a id="a10_8_5_presentation_hide-shape_"><span style="margin-right:0.127cm;">10.8.5</span></a><a id="__RefHeading__1415928_253892949"/><a id="element-presentation_hide-shape"/>&lt;presentation:hide-shape&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:hide-shape&gt;</span> element specifies that a shape is invisible.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:hide-shape&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a> and <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:hide-shape&gt;</span> element has the following attributes: <span class="Attribute">draw:shape-id</span> <a href="#attribute-draw_shape-id">19.210</a>, <span class="Attribute">presentation:delay</span> <a href="#attribute-presentation_delay">19.391</a>, <span class="Attribute">presentation:direction</span> <a href="#attribute-presentation_direction">19.392</a>, <span class="Attribute">presentation:effect</span> <a href="#attribute-presentation_effect">19.394</a>, <span class="Attribute">presentation:path-id</span> <a href="#attribute-presentation_path-id">19.405</a>, <span class="Attribute">presentation:speed</span> <a href="#attribute-presentation_speed">19.417</a> and <span class="Attribute">presentation:start-scale</span> <a href="#attribute-presentation_start-scale">19.418</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:hide-shape&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h3 class="Heading_20_3"><a id="a10_8_6_presentation_hide-text_"><span style="margin-right:0.127cm;">10.8.6</span></a><a id="__RefHeading__1415930_253892949"/><a id="element-presentation_hide-text"/>&lt;presentation:hide-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:hide-text&gt;</span> element specifies an effect that makes text within a shape visible. Prior to execution of the effect specified by this element, the text contained inside a shape is invisible. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:hide-text&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a> and <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:hide-text&gt;</span> element has the following attributes: <span class="Attribute">draw:shape-id</span> <a href="#attribute-draw_shape-id">19.210</a>, <span class="Attribute">presentation:delay</span> <a href="#attribute-presentation_delay">19.391</a>, <span class="Attribute">presentation:direction</span> <a href="#attribute-presentation_direction">19.392</a>, <span class="Attribute">presentation:effect</span> <a href="#attribute-presentation_effect">19.394</a>, <span class="Attribute">presentation:path-id</span> <a href="#attribute-presentation_path-id">19.405</a>, <span class="Attribute">presentation:speed</span> <a href="#attribute-presentation_speed">19.417</a> and <span class="Attribute">presentation:start-scale</span> <a href="#attribute-presentation_start-scale">19.418</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:hide-text&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h3 class="Heading_20_3"><a id="a10_8_7_presentation_dim_"><span style="margin-right:0.127cm;">10.8.7</span></a><a id="__RefHeading__1415932_253892949"/><a id="element-presentation_dim"/>&lt;presentation:dim&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:dim&gt;</span> element specifies a fill color for a shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:dim&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a> and <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:dim&gt;</span> element has the following attributes: <span class="Attribute">draw:color</span> <a href="#attribute-draw_color_element-presentation_dim">19.122.3</a> and <span class="Attribute">draw:shape-id</span> <a href="#attribute-draw_shape-id">19.210</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:dim&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h3 class="Heading_20_3"><a id="a10_8_8_presentation_play_"><span style="margin-right:0.127cm;">10.8.8</span></a><a id="__RefHeading__1415934_253892949"/><a id="element-presentation_play"/>&lt;presentation:play&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:play&gt;</span> element specifies the presentation speed of animation of a shape. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:play&gt;</span> element is usable within the following elements: <span class="Element">&lt;presentation:animation-group&gt;</span> <a href="#element-presentation_animation-group">10.8.9</a> and <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:play&gt;</span> element has the following attributes: <span class="Attribute">draw:shape-id</span> <a href="#attribute-draw_shape-id">19.210</a> and <span class="Attribute">presentation:speed</span> <a href="#attribute-presentation_speed">19.417</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:play&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a10_8_9_presentation_animation-group_"><span style="margin-right:0.127cm;">10.8.9</span></a><a id="__RefHeading__1415936_253892949"/><a id="element-presentation_animation-group"/>&lt;presentation:animation-group&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;presentation:animation-group&gt;</span> element contains elements that specify multiple animation effects. Containment results in all effects occurring at the same time. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:animation-group&gt;</span> element is usable within the following element: <span class="Element">&lt;presentation:animations&gt;</span> <a href="#element-presentation_animations">10.8.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:animation-group&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:animation-group&gt;</span> element has the following child elements: <span class="Element">&lt;presentation:dim&gt;</span> <a href="#element-presentation_dim">10.8.7</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:play&gt;</span> <a href="#element-presentation_play">10.8.8</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><h2 class="Heading_20_2"><a id="a10_9SMIL_Presentation_Animations"><span style="margin-right:0.127cm;">10.9</span></a><a id="__RefHeading__1415938_253892949"/><a id="SMIL_Pres_Anim"/>SMIL Presentation Animations</h2><h3 class="Heading_20_3"><a id="a10_9_1General"><span style="margin-right:0.127cm;">10.9.1</span></a><a id="__RefHeading__1415940_253892949"/>General</h3><p class="Text_20_body">SMIL based shape animations are specified for presentation documents. This type of animation can be used instead of that specified by <span class="Element">&lt;presentation:animations&gt;</span> elements if one of the following items is required:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Multiple animations per shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A mixture of animations starting on user interaction and starting automatically per page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Multiple animations running at the same time.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Additional effects ”programmed” in XML by combining animation elements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Document transformations to SVG.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">An <span class="Def">effect</span> is a combination of one or more animation elements that animate a single shape and or a shape's paragraphs.</p><h3 class="Heading_20_3"><a id="a10_9_2_presentation_event-listener_"><span style="margin-right:0.127cm;">10.9.2</span></a><a id="__RefHeading__1415942_253892949"/><a id="element-presentation_event-listener"/>&lt;presentation:event-listener&gt; </h3><p class="Text_20_body">The <span class="Element">&lt;presentation:event-listener&gt;</span> element defines the trigger for a presentation event.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:event-listener&gt;</span> element is usable within the following element: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:event-listener&gt;</span> element has the following attributes: <span class="Attribute">presentation:action</span> <a href="#attribute-presentation_action">19.387</a>, <span class="Attribute">presentation:direction</span> <a href="#attribute-presentation_direction">19.392</a>, <span class="Attribute">presentation:effect</span> <a href="#attribute-presentation_effect">19.394</a>, <span class="Attribute">presentation:speed</span> <a href="#attribute-presentation_speed">19.417</a>, <span class="Attribute">presentation:start-scale</span> <a href="#attribute-presentation_start-scale">19.418</a>, <span class="Attribute">presentation:verb</span> <a href="#attribute-presentation_verb">19.428</a>, <span class="Attribute">script:event-name</span> <a href="#attribute-script_event-name">19.429</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-presentation_event-listener">19.910.25</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:event-listener&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h3 class="Heading_20_3"><a id="a10_9_3Presentation_Document_Content"><span style="margin-right:0.127cm;">10.9.3</span></a><a id="__RefHeading__1415944_253892949"/>Presentation Document Content</h3><h4 class="Heading_20_4"><a id="a10_9_3_1_presentation_header_"><span style="margin-right:0.127cm;">10.9.3.1</span></a><a id="__RefHeading__1415946_253892949"/><a id="element-presentation_header"/>&lt;presentation:header&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:header&gt;</span> element defines a field that contains a header for a presentation. Which header field declaration is used is specified by the <span class="Attribute">presentation:use-header-name</span> attribute of the draw page where the field occurs. In a presentation shape inside a master page <a href="#attribute-presentation_class">19.389</a>, the <span class="Attribute">presentation:use-header-name</span> attribute of the <span class="Element">&lt;draw:page&gt;</span> element for which the drawing shape is displayed is used. </p><p class="Note"><span class="Note_20_Label">Note: </span>This field is mainly used inside master pages. Since its value may differ for the individual drawing pages that make use of a master page, the current field value is not available.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:header&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:header&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:header&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a10_9_3_2_presentation_header-decl_"><span style="margin-right:0.127cm;">10.9.3.2</span></a><a id="__RefHeading__1415948_253892949"/><a id="element-presentation_header-decl"/>&lt;presentation:header-decl&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:header-decl&gt;</span> element specifies the text of a header field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:header-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:header-decl&gt;</span> element has the following attribute: <span class="Attribute">presentation:name</span> <a href="#attribute-presentation_name">19.401</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;presentation:header-decl&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:header-decl&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a10_9_3_3_presentation_footer_"><span style="margin-right:0.127cm;">10.9.3.3</span></a><a id="__RefHeading__1415950_253892949"/><a id="element-presentation_footer"/>&lt;presentation:footer&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:footer&gt;</span> element defines a field that contains a footer for a presentation. Footer fields display a footer text specified in a footer field declaration. See <a href="#element-presentation_footer-decl">10.9.3.4</a>. Which footer field declaration is used is specified by the <span class="Attribute">presentation:use-footer-name</span> attribute of the draw page where the field occurs. In a presentation drawing shape inside a master page <a href="#attribute-presentation_class">19.389</a>, the <span class="Attribute">presentation:use-footer-name</span> attribute of the <span class="Element">&lt;draw:page&gt;</span> for which the drawing shape is displayed is used.</p><p class="Note"><span class="Note_20_Label">Note:</span> This field is mainly used inside master pages. Since its value may differ for the individual drawing pages that make use of a master page, the current field value is not available.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:footer&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:footer&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:footer&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a10_9_3_4_presentation_footer-decl_"><span style="margin-right:0.127cm;">10.9.3.4</span></a><a id="__RefHeading__1415952_253892949"/><a id="element-presentation_footer-decl"/>&lt;presentation:footer-decl&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:footer-decl&gt;</span> element specifies the text of a footer field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:footer-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:footer-decl&gt;</span> element has the following attribute: <span class="Attribute">presentation:name</span> <a href="#attribute-presentation_name">19.401</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;presentation:footer-decl&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:footer-decl&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a10_9_3_5_presentation_date-time_"><span style="margin-right:0.127cm;">10.9.3.5</span></a><a id="__RefHeading__1415954_253892949"/><a id="element-presentation_date-time"/>&lt;presentation:date-time&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:date-time&gt;</span> element defines a field that contains the date/time text for a presentation. Date and time fields display a date/time text as specified in the date/time field declaration. See <a href="#element-presentation_date-time-decl">10.9.3.6</a>. Which date-time field declaration is used is specified by the <span class="Attribute">presentation:use-date-time-name</span> attribute of the draw page where the field occurs. In a presentation drawing shape inside a master page <a href="#attribute-presentation_class">19.389</a>, the <span class="Attribute">presentation:use-date-time-name</span> attribute of the drawing page for which the drawing shape is displayed is used. </p><p class="Note"><span class="Note_20_Label">Note:</span> This field is mainly used inside master pages. Since its value may differ for the individual drawing pages that make use of a master page, the current field value is not available.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:date-time&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:date-time&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:date-time&gt;</span> element has no child elements.</p><h4 class="Heading_20_4"><a id="a10_9_3_6_presentation_date-time-decl_"><span style="margin-right:0.127cm;">10.9.3.6</span></a><a id="__RefHeading__1415956_253892949"/><a id="element-presentation_date-time-decl"/>&lt;presentation:date-time-decl&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:date-time-decl&gt;</span> element specifies the text of a date-time field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:date-time-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:date-time-decl&gt;</span> element has the following attributes: <span class="Attribute">presentation:name</span> <a href="#attribute-presentation_name">19.401</a>, <span class="Attribute">presentation:source</span> <a href="#attribute-presentation_source">19.416</a> and <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-presentation_date-time-decl">19.469.2</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;presentation:date-time-decl&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:date-time-decl&gt;</span> element has character data content.</p><h4 class="Heading_20_4"><a id="a10_9_3_7_presentation_settings_"><span style="margin-right:0.127cm;">10.9.3.7</span></a><a id="__RefHeading__1415958_253892949"/><a id="element-presentation_settings"/>&lt;presentation:settings&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:settings&gt;</span> element is a container for the settings for a presentation in a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:settings&gt;</span> element is usable within the following element: <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:settings&gt;</span> element has the following attributes: <span class="Attribute">presentation:animations</span> <a href="#attribute-presentation_animations">19.388</a>, <span class="Attribute">presentation:endless</span> <a href="#attribute-presentation_endless">19.393</a>, <span class="Attribute">presentation:force-manual</span> <a href="#attribute-presentation_force-manual">19.395</a>, <span class="Attribute">presentation:full-screen</span> <a href="#attribute-presentation_full-screen">19.396</a>, <span class="Attribute">presentation:mouse-as-pen</span> <a href="#attribute-presentation_mouse-as-pen">19.399</a>, <span class="Attribute">presentation:mouse-visible</span> <a href="#attribute-presentation_mouse-visible">19.400</a>, <span class="Attribute">presentation:pause</span> <a href="#attribute-presentation_pause">19.406</a>, <span class="Attribute">presentation:show</span> <a href="#attribute-presentation_show">19.413</a>, <span class="Attribute">presentation:show-end-of-presentation-slide</span> <a href="#attribute-presentation_show-end-of-presentation-slide">19.414</a>, <span class="Attribute">presentation:show-logo</span> <a href="#attribute-presentation_show-logo">19.415</a>, <span class="Attribute">presentation:start-page</span> <a href="#attribute-presentation_start-page">19.419</a>, <span class="Attribute">presentation:start-with-navigator</span> <a href="#attribute-presentation_start-with-navigator">19.420</a>, <span class="Attribute">presentation:stay-on-top</span> <a href="#attribute-presentation_stay-on-top">19.421</a> and <span class="Attribute">presentation:transition-on-click</span> <a href="#attribute-presentation_transition-on-click">19.423</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:settings&gt;</span> element has the following child element: <span class="Element">&lt;presentation:show&gt;</span> <a href="#element-presentation_show">10.9.3.8</a>.</p><h4 class="Heading_20_4"><a id="a10_9_3_8_presentation_show_"><span style="margin-right:0.127cm;">10.9.3.8</span></a><a id="__RefHeading__1415960_253892949"/><a id="element-presentation_show"/>&lt;presentation:show&gt;</h4><p class="Text_20_body">The <span class="Element">&lt;presentation:show&gt;</span> element specifies the order in which pages are displayed during a presentation. </p><p class="Note"><span class="Note_20_Label">Note:</span> The order of pages can be used to omit or repeat pages in a presentation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:show&gt;</span> element is usable within the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:show&gt;</span> element has the following attributes: <span class="Attribute">presentation:name</span> <a href="#attribute-presentation_name">19.401</a> and <span class="Attribute">presentation:pages</span> <a href="#attribute-presentation_pages">19.404</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:show&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a11Chart_Content"><span style="margin-right:0.127cm;">11</span></a><a id="__RefHeading__1415962_253892949"/><a id="Chart_Content"/>Chart Content</h1><h2 class="Heading_20_2"><a id="a11_1_chart_chart_"><span style="margin-right:0.127cm;">11.1</span></a><a id="__RefHeading__1415964_253892949"/><a id="element-chart_chart"/>&lt;chart:chart&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:chart&gt;</span> element represents a chart. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:chart&gt;</span> element is usable within the following element: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:chart&gt;</span> element has the following attributes: <span class="Attribute">chart:class</span> <a href="#attribute-chart_class_element-chart_chart">19.15.1</a>, <span class="Attribute">chart:column-mapping</span> <a href="#attribute-chart_column-mapping">19.16</a>, <span class="Attribute">chart:row-mapping</span> <a href="#attribute-chart_row-mapping">19.26</a>, <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-chart_chart">19.539.1</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-chart_chart">19.571.1</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-chart_chart">19.910.3</a>, <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:chart&gt;</span> element has the following child elements: <span class="Element">&lt;chart:footer&gt;</span> <a href="#element-chart_footer">11.2.3</a>, <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>, <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;chart:subtitle&gt;</span> <a href="#element-chart_subtitle">11.2.2</a>, <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><h2 class="Heading_20_2"><a id="a11_2Title__Subtitle_and_Footer"><span style="margin-right:0.127cm;">11.2</span></a><a id="__RefHeading__1415966_253892949"/>Title, Subtitle and Footer</h2><h3 class="Heading_20_3"><a id="a11_2_1_chart_title_"><span style="margin-right:0.127cm;">11.2.1</span></a><a id="__RefHeading__1415968_253892949"/><a id="element-chart_title"/>&lt;chart:title&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;chart:title&gt;</span> element represents a title in a chart document. </p><p class="Text_20_body">The text of a title is specified by a child <span class="Element">&lt;text:p&gt;</span> element or a <span class="Attribute">table:cell-range</span> attribute. If a child <span class="Element">&lt;text:p&gt;</span> element and a <span class="Attribute">table:cell-range</span> attribute are both present, the text specified by the <span class="Attribute">table:cell-range</span> attribute is used as the title. By default, the content of a child <span class="Element">&lt;text:p&gt;</span> element is displayed as the title. </p><p class="Text_20_body">This element can also be a sub-element of <span class="Element">&lt;chart:axis&gt;</span>. <a href="#element-chart_axis">11.8</a> In that case the title is displayed beside the axis specified by the <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:title&gt;</span> element is usable within the following elements: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a> and <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:title&gt;</span> element has the following attributes: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_title">19.573.1</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_title">19.577.1</a> and <span class="Attribute">table:cell-range</span> <a href="#attribute-table_cell-range">19.592</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:title&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a11_2_2_chart_subtitle_"><span style="margin-right:0.127cm;">11.2.2</span></a><a id="__RefHeading__1415970_253892949"/><a id="element-chart_subtitle"/>&lt;chart:subtitle&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;chart:subtitle&gt;</span> element represents a subtitle for a chart.</p><p class="Text_20_body">The text of a subtitle is specified by a child <span class="Element">&lt;text:p&gt;</span> element or a <span class="Attribute">table:cell-range</span> attribute. If a child <span class="Element">&lt;text:p&gt;</span> element and a <span class="Attribute">table:cell-range</span> attribute are both present, the text specified by the <span class="Attribute">table:cell-range</span> attribute is used as the subtitle. By default, the content of a child <span class="Element">&lt;text:p&gt;</span> element is displayed as the title. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:subtitle&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:subtitle&gt;</span> element has the following attributes: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_subtitle">19.573.1</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_subtitle">19.577.1</a> and <span class="Attribute">table:cell-range</span> <a href="#attribute-table_cell-range">19.592</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:subtitle&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a11_2_3_chart_footer_"><span style="margin-right:0.127cm;">11.2.3</span></a><a id="__RefHeading__1415972_253892949"/><a id="element-chart_footer"/>&lt;chart:footer&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;chart:footer&gt;</span> element represents a footer below a chart's plot area.</p><p class="Text_20_body">The text of a footer is specified by a child <span class="Element">&lt;text:p&gt;</span> element or a <span class="Attribute">table:cell-range</span> attribute. If a child <span class="Element">&lt;text:p&gt;</span> element and a <span class="Attribute">table:cell-range</span> attribute are both present, the text specified by the <span class="Attribute">table:cell-range</span> attribute is used as the footer. By default, the content of a child <span class="Element">&lt;text:p&gt;</span> element is displayed as the footer. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:footer&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:footer&gt;</span> element has the following attributes: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_footer">19.573.1</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_footer">19.577.1</a> and <span class="Attribute">table:cell-range</span> <a href="#attribute-table_cell-range">19.592</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:footer&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a11_3_chart_legend_"><span style="margin-right:0.127cm;">11.3</span></a><a id="__RefHeading__1415974_253892949"/><a id="element-chart_legend"/>&lt;chart:legend&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:legend&gt;</span> element represents a legend for a chart. If there is no <span class="Element">&lt;chart:legend&gt;</span> element for a chart, no legend is displayed. </p><p class="Text_20_body">A legend contains a list of legend entries. Each entry consists of a graphical entry key and an entry text. </p><p class="Text_20_body">For circle and ring charts each legend entry represents an individual data point of the first series. The graphical entry key represents the visual appearance of a data point while the entry text is the category of the point.</p><p class="Text_20_body"> The categories to use are given as a list of labels defined by the <span class="Element">&lt;chart:categories&gt;</span> element at the x-axis. They are paired with matching data points in the order in which they appear. </p><p class="Text_20_body">For surface charts each graphic entry key represents the graphical appearance of the surface within a major interval of the altitude axis and the entry text represents the value range of that interval.</p><p class="Text_20_body">For all other chart types the legend entries represent the series of the chart. The graphical entry keys represent the visual appearance of each series while the entry texts contain the names of the series. </p><p class="Text_20_body">The legend may include additional entries for regression-curves and mean-value lines. </p><p class="Text_20_body">The <span class="Element">&lt;chart:legend&gt;</span> element may contain a <span class="Element">&lt;text:p&gt;</span> element. If present, it defines a title for the legend.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:legend&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:legend&gt;</span> element has the following attributes: <span class="Attribute">chart:legend-align</span> <a href="#attribute-chart_legend-align">19.22</a>, <span class="Attribute">chart:legend-position</span> <a href="#attribute-chart_legend-position">19.23</a>, <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">style:legend-expansion</span> <a href="#attribute-style_legend-expansion">19.490</a>, <span class="Attribute">style:legend-expansion-aspect-ratio</span> <a href="#attribute-style_legend-expansion-aspect-ratio">19.491</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_legend">19.573.1</a> and <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_legend">19.577.1</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:legend&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a11_4_chart_plot-area_"><span style="margin-right:0.127cm;">11.4</span></a><a id="__RefHeading__1415976_253892949"/><a id="element-chart_plot-area"/>&lt;chart:plot-area&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:plot-area&gt;</span> element represents a coordinate system in which data is plotted including defined axes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:plot-area&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:plot-area&gt;</span> element has the following attributes: <span class="Attribute">chart:data-source-has-labels</span> <a href="#attribute-chart_data-source-has-labels">19.17</a>, <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">dr3d:ambient-color</span> <a href="#attribute-dr3d_ambient-color">19.92</a>, <span class="Attribute">dr3d:distance</span> <a href="#attribute-dr3d_distance">19.96</a>, <span class="Attribute">dr3d:focal-length</span> <a href="#attribute-dr3d_focal-length">19.98</a>, <span class="Attribute">dr3d:lighting-mode</span> <a href="#attribute-dr3d_lighting-mode_element-chart_plot-area">19.99.2</a>, <span class="Attribute">dr3d:projection</span> <a href="#attribute-dr3d_projection">19.102</a>, <span class="Attribute">dr3d:shade-mode</span> <a href="#attribute-dr3d_shade-mode">19.103</a>, <span class="Attribute">dr3d:shadow-slant</span> <a href="#attribute-dr3d_shadow-slant">19.104</a>, <span class="Attribute">dr3d:transform</span> <a href="#attribute-dr3d_transform">19.107</a>, <span class="Attribute">dr3d:vpn</span> <a href="#attribute-dr3d_vpn">19.108</a>, <span class="Attribute">dr3d:vrp</span> <a href="#attribute-dr3d_vrp">19.109</a>, <span class="Attribute">dr3d:vup</span> <a href="#attribute-dr3d_vup">19.110</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-chart_plot-area">19.539.2</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-chart_plot-area">19.571.3</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_plot-area">19.573.1</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_plot-area">19.577.1</a>, <span class="Attribute">table:cell-range-address</span> <a href="#attribute-table_cell-range-address_element-chart_plot-area">19.593.6</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:plot-area&gt;</span> element has the following child elements: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a>, <span class="Element">&lt;chart:floor&gt;</span> <a href="#element-chart_floor">11.7</a>, <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>, <span class="Element">&lt;chart:stock-gain-marker&gt;</span> <a href="#element-chart_stock-gain-marker">11.19</a>, <span class="Element">&lt;chart:stock-loss-marker&gt;</span> <a href="#element-chart_stock-loss-marker">11.20</a>, <span class="Element">&lt;chart:stock-range-line&gt;</span> <a href="#element-chart_stock-range-line">11.21</a>, <span class="Element">&lt;chart:wall&gt;</span> <a href="#element-chart_wall">11.6</a> and <span class="Element">&lt;dr3d:light&gt;</span> <a href="#element-dr3d_light">10.5.3</a>.</p><h2 class="Heading_20_2"><a id="a11_53D_Plot_Area"><span style="margin-right:0.127cm;">11.5</span></a><a id="__RefHeading__1415978_253892949"/>3D Plot Area</h2><p class="Text_20_body">The plot area may be displayed as an 3D scene as specified in section <a href="#element-dr3d_scene">10.5.2</a>. All 3D attributes that can be applied to the <span class="Element">&lt;dr3d:scene&gt;</span> element can be applied to the <span class="Element">&lt;chart:plot-area&gt;</span> element. This includes the <span class="Attribute">dr3d:transform</span> attribute that specifies the rotation of the three-dimensional plot area. <a href="#element-dr3d_scene">10.5.2</a> The <span class="Element">&lt;chart:plot-area&gt;</span> element may contain a <span class="Element">&lt;dr3d:light&gt;</span> element as specified in section <a href="#element-dr3d_light">10.5.3</a>.</p><h2 class="Heading_20_2"><a id="a11_6_chart_wall_"><span style="margin-right:0.127cm;">11.6</span></a><a id="__RefHeading__1415980_253892949"/><a id="element-chart_wall"/>&lt;chart:wall&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:wall&gt;</span> element specifies the wall of a chart. For two-dimensional charts, the wall spans the entire plot area. For three-dimensional charts, the wall consists of two perpendicular rectangles.</p><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute specifies the thickness of a wall for three-dimensional charts.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:wall&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:wall&gt;</span> element has the following attributes: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a> and <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-chart_wall">19.571.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:wall&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_7_chart_floor_"><span style="margin-right:0.127cm;">11.7</span></a><a id="__RefHeading__1415982_253892949"/><a id="element-chart_floor"/>&lt;chart:floor&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:floor&gt;</span> element specifies the floor of a chart. For three-dimensional charts, the <span class="Element">&lt;chart:floor&gt;</span> element shall be present in addition to the <span class="Element">&lt;chart:wall&gt;</span> element. </p><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute specifies the thickness of the floor.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:floor&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:floor&gt;</span> element has the following attributes: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a> and <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-chart_floor">19.571.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:floor&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_8_chart_axis_"><span style="margin-right:0.127cm;">11.8</span></a><a id="__RefHeading__1415984_253892949"/><a id="element-chart_axis"/>&lt;chart:axis&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:axis&gt;</span> element specifies an axis for a chart.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:axis&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:axis&gt;</span> element has the following attributes: <span class="Attribute">chart:dimension</span> <a href="#attribute-chart_dimension">19.18</a>, <span class="Attribute">chart:name</span> <a href="#attribute-chart_name">19.24</a> and <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:axis&gt;</span> element has the following child elements: <span class="Element">&lt;chart:categories&gt;</span> <a href="#element-chart_categories">11.9</a>, <span class="Element">&lt;chart:grid&gt;</span> <a href="#element-chart_grid">11.10</a> and <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a>.</p><h2 class="Heading_20_2"><a id="a11_9_chart_categories_"><span style="margin-right:0.127cm;">11.9</span></a><a id="__RefHeading__1415986_253892949"/><a id="element-chart_categories"/>&lt;chart:categories&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:categories&gt;</span> element represents labels that are displayed on a category-axis.</p><p class="Text_20_body">This element may have a <span class="Attribute">table:cell-range-address</span> attribute that specifies a range from which category labels are taken. If this attribute or the <span class="Element">&lt;chart:categories&gt;</span> element itself is omitted, the <span class="Attribute">chart:data-source-has-labels</span> attribute of the <span class="Element">&lt;chart:plot-area&gt;</span> element should be evaluated for labels to display on a category-axis.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:categories&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:categories&gt;</span> element has the following attribute: <span class="Attribute">table:cell-range-address</span> <a href="#attribute-table_cell-range-address_element-chart_categories">19.593.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:categories&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_10_chart_grid_"><span style="margin-right:0.127cm;">11.10</span></a><a id="__RefHeading__1415988_253892949"/><a id="element-chart_grid"/>&lt;chart:grid&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:grid&gt;</span> element specifies a grid for an axis. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:grid&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:grid&gt;</span> element has the following attributes: <span class="Attribute">chart:class</span> <a href="#attribute-chart_class_element-chart_grid">19.15.2</a> and <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:grid&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_11_chart_series_"><span style="margin-right:0.127cm;">11.11</span></a><a id="__RefHeading__1415990_253892949"/><a id="element-chart_series"/>&lt;chart:series&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:series&gt;</span> element represents a data series in a chart. If the chart requires more input data, like it is the case for scatter and bubble charts, <span class="Element">&lt;chart:domain&gt;</span> sub-elements shall be defined that contain the cell range addresses of the corresponding data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:series&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:series&gt;</span> element has the following attributes: <span class="Attribute">chart:attached-axis</span> <a href="#attribute-chart_attached-axis">19.13</a>, <span class="Attribute">chart:class</span> <a href="#attribute-chart_class_element-chart_series">19.15.1</a>, <span class="Attribute">chart:label-cell-address</span> <a href="#attribute-chart_label-cell-address">19.21</a>, <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">chart:values-cell-range-address</span> <a href="#attribute-chart_values-cell-range-address">19.28</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:series&gt;</span> element has the following child elements: <span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a>, <span class="Element">&lt;chart:data-point&gt;</span> <a href="#element-chart_data-point">11.13</a>, <span class="Element">&lt;chart:domain&gt;</span> <a href="#element-chart_domain">11.12</a>, <span class="Element">&lt;chart:error-indicator&gt;</span> <a href="#element-chart_error-indicator">11.16</a>, <span class="Element">&lt;chart:mean-value&gt;</span> <a href="#element-chart_mean-value">11.15</a> and <span class="Element">&lt;chart:regression-curve&gt;</span> <a href="#element-chart_regression-curve">11.17</a>.</p><h2 class="Heading_20_2"><a id="a11_12_chart_domain_"><span style="margin-right:0.127cm;">11.12</span></a><a id="__RefHeading__1415992_253892949"/><a id="element-chart_domain"/>&lt;chart:domain&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:domain&gt;</span> element specifies coordinate values required by particular chart types.</p><p class="Text_20_body">For scatter charts, one <span class="Element">&lt;chart:domain&gt;</span> element shall exist. Its <span class="Attribute">table:cell-range-address</span> attribute references the x-coordinate values for the scatter chart.</p><p class="Text_20_body">For bubble charts, two <span class="Element">&lt;chart:domain&gt;</span> elements shall exist. The values for the y-coordinates are given by the first <span class="Element">&lt;chart:domain&gt;</span> element. The values for the x-coordinates are given by the second <span class="Element">&lt;chart:domain&gt;</span> element.</p><p class="Text_20_body">For surface charts, up to two <span class="Element">&lt;chart:domain&gt;</span> elements are allowed to exist. The values for the y-coordinates are given by the first <span class="Element">&lt;chart:domain&gt;</span> element. The values for the x-coordinates are given by the second <span class="Element">&lt;chart:domain&gt;</span> element. </p><p class="Text_20_body">At least one <span class="Element">&lt;chart:series&gt;</span> element of a given <span class="Attribute">chart:class</span> shall have the necessary number of <span class="Element">&lt;chart:domain&gt;</span> sub-elements. All other <span class="Element">&lt;chart:series&gt;</span> elements with the same <span class="Attribute">chart:class</span> may omit the <span class="Element">&lt;chart:domain&gt;</span> sub-elements and use the previously defined values for that type of chart. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:domain&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:domain&gt;</span> element has the following attribute: <span class="Attribute">table:cell-range-address</span> <a href="#attribute-table_cell-range-address_element-chart_domain">19.593.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:domain&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_13_chart_data-point_"><span style="margin-right:0.127cm;">11.13</span></a><a id="__RefHeading__1415994_253892949"/><a id="element-chart_data-point"/>&lt;chart:data-point&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:data-point&gt;</span> element specifies a style for a single data point in a data series.</p><p class="Note"><span class="Note_20_Label">Note:</span> This element can be used if a single data point has a special or distinct appearance.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:data-point&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:data-point&gt;</span> element has the following attributes: <span class="Attribute">chart:repeated</span> <a href="#attribute-chart_repeated">19.25</a>, <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:data-point&gt;</span> element has the following child element: <span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a>.</p><h2 class="Heading_20_2"><a id="a11_14_chart_data-label_"><span style="margin-right:0.127cm;">11.14</span></a><a id="__RefHeading__1415996_253892949"/><a id="element-chart_data-label"/>&lt;chart:data-label&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:data-label&gt;</span> element represents the data label of a data point. </p><p class="Text_20_body">The <span class="Element">&lt;chart:data-label&gt;</span> element can also be a sub-element of a data series. In that case, the data label serves as default for all the data points of this series.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:data-label&gt;</span> element is usable within the following elements: <span class="Element">&lt;chart:data-point&gt;</span> <a href="#element-chart_data-point">11.13</a> and <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:data-label&gt;</span> element has the following attributes: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_data-label">19.573.1</a> and <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_data-label">19.577.1</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:data-label&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a11_15_chart_mean-value_"><span style="margin-right:0.127cm;">11.15</span></a><a id="__RefHeading__1415998_253892949"/><a id="element-chart_mean-value"/>&lt;chart:mean-value&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:mean-value&gt;</span> element specifies a style for a mean-value line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:mean-value&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:mean-value&gt;</span> element has the following attribute: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:mean-value&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_16_chart_error-indicator_"><span style="margin-right:0.127cm;">11.16</span></a><a id="__RefHeading__1416000_253892949"/><a id="element-chart_error-indicator"/>&lt;chart:error-indicator&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:error-indicator&gt;</span> element specifies a style for error-indicators.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:error-indicator&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:error-indicator&gt;</span> element has the following attributes: <span class="Attribute">chart:dimension</span> <a href="#attribute-chart_dimension">19.18</a> and <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:error-indicator&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_17_chart_regression-curve_"><span style="margin-right:0.127cm;">11.17</span></a><a id="__RefHeading__1416002_253892949"/><a id="element-chart_regression-curve"/>&lt;chart:regression-curve&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:regression-curve&gt;</span> element specifies the properties of regression-lines.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:regression-curve&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:regression-curve&gt;</span> element has the following attribute: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:regression-curve&gt;</span> element has the following child element: <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>.</p><h2 class="Heading_20_2"><a id="a11_18_chart_equation_"><span style="margin-right:0.127cm;">11.18</span></a><a id="__RefHeading__1416004_253892949"/><a id="element-chart_equation"/>&lt;chart:equation&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:equation&gt;</span> element represents the equation for a containing regression curve. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:equation&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:regression-curve&gt;</span> <a href="#element-chart_regression-curve">11.17</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:equation&gt;</span> element has the following attributes: <span class="Attribute">chart:automatic-content</span> <a href="#attribute-chart_automatic-content">19.14</a>, <span class="Attribute">chart:display-equation</span> <a href="#attribute-chart_display-equation">19.19</a>, <span class="Attribute">chart:display-r-square</span> <a href="#attribute-chart_display-r-square">19.20</a>, <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-chart_equation">19.573.1</a> and <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-chart_equation">19.577.1</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:equation&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a11_19_chart_stock-gain-marker_"><span style="margin-right:0.127cm;">11.19</span></a><a id="__RefHeading__1416006_253892949"/><a id="element-chart_stock-gain-marker"/>&lt;chart:stock-gain-marker&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:stock-gain-marker&gt;</span> element specifies a style for candlestick-bars in a stock chart that have a higher closing value than opening value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:stock-gain-marker&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:stock-gain-marker&gt;</span> element has the following attribute: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:stock-gain-marker&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_20_chart_stock-loss-marker_"><span style="margin-right:0.127cm;">11.20</span></a><a id="__RefHeading__1416008_253892949"/><a id="element-chart_stock-loss-marker"/>&lt;chart:stock-loss-marker&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:stock-loss-marker&gt;</span> element specifies the style for candlestick-bars in a stock chart that have a lower closing value than opening value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:stock-loss-marker&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:stock-loss-marker&gt;</span> element has the following attribute: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:stock-loss-marker&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a11_21_chart_stock-range-line_"><span style="margin-right:0.127cm;">11.21</span></a><a id="__RefHeading__1416010_253892949"/><a id="element-chart_stock-range-line"/>&lt;chart:stock-range-line&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:stock-range-line&gt;</span> element specifies a style for the range-lines in a stock chart. A range-line is a line connecting the minimum value with the maximum value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:stock-range-line&gt;</span> element is usable within the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:stock-range-line&gt;</span> element has the following attribute: <span class="Attribute">chart:style-name</span> <a href="#attribute-chart_style-name">19.27</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:stock-range-line&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a12Database_Front-end_Document_Content"><span style="margin-right:0.127cm;">12</span></a><a id="__RefHeading__1416012_253892949"/>Database Front-end Document Content</h1><h2 class="Heading_20_2"><a id="a12_1_office_database_"><span style="margin-right:0.127cm;">12.1</span></a><a id="__RefHeading__1416014_253892949"/><a id="element-office_database"/>&lt;office:database&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;office:database&gt;</span> element is a container of database elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:database&gt;</span> element is usable within the following element: <span class="Element">&lt;office:body&gt;</span> <a href="#element-office_body">3.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:database&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:database&gt;</span> element has the following child elements: <span class="Element">&lt;db:data-source&gt;</span> <a href="#element-db_data-source">12.2</a>, <span class="Element">&lt;db:forms&gt;</span> <a href="#element-db_forms">12.25.2</a>, <span class="Element">&lt;db:queries&gt;</span> <a href="#element-db_queries">12.26</a>, <span class="Element">&lt;db:reports&gt;</span> <a href="#element-db_reports">12.25.3</a>, <span class="Element">&lt;db:schema-definition&gt;</span> <a href="#element-db_schema-definition">12.36</a> and <span class="Element">&lt;db:table-representations&gt;</span> <a href="#element-db_table-representations">12.32</a>.</p><h2 class="Heading_20_2"><a id="a12_2_db_data-source_"><span style="margin-right:0.127cm;">12.2</span></a><a id="__RefHeading__1416016_253892949"/><a id="element-db_data-source"/>&lt;db:data-source&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;db:data-source&gt;</span> element is a container for data source specific elements that are needed to create a connection to a database.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:data-source&gt;</span> element is usable within the following element: <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:data-source&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:data-source&gt;</span> element has the following child elements: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>, <span class="Element">&lt;db:connection-data&gt;</span> <a href="#element-db_connection-data">12.3</a> and <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a>.</p><h2 class="Heading_20_2"><a id="a12_3_db_connection-data_"><span style="margin-right:0.127cm;">12.3</span></a><a id="__RefHeading__1416018_253892949"/><a id="element-db_connection-data"/>&lt;db:connection-data&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:connection-data&gt;</span> element specifies the information necessary to connect to a database.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:connection-data&gt;</span> element is usable within the following element: <span class="Element">&lt;db:data-source&gt;</span> <a href="#element-db_data-source">12.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:connection-data&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:connection-data&gt;</span> element has the following child elements: <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;db:database-description&gt;</span> <a href="#element-db_database-description">12.4</a> and <span class="Element">&lt;db:login&gt;</span> <a href="#element-db_login">12.8</a>.</p><h2 class="Heading_20_2"><a id="a12_4_db_database-description_"><span style="margin-right:0.127cm;">12.4</span></a><a id="__RefHeading__1416020_253892949"/><a id="element-db_database-description"/>&lt;db:database-description&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:database-description&gt;</span> element specifies a database resource by its type and access parameters.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:database-description&gt;</span> element is usable within the following element: <span class="Element">&lt;db:connection-data&gt;</span> <a href="#element-db_connection-data">12.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:database-description&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:database-description&gt;</span> element has the following child elements: <span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a> and <span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a>.</p><h2 class="Heading_20_2"><a id="a12_5_db_file-based-database_"><span style="margin-right:0.127cm;">12.5</span></a><a id="__RefHeading__1416022_253892949"/><a id="element-db_file-based-database"/>&lt;db:file-based-database&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:file-based-database&gt;</span> element specifies a database which is composed of one or more files in an arbitrary file system.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:file-based-database&gt;</span> element is usable within the following element: <span class="Element">&lt;db:database-description&gt;</span> <a href="#element-db_database-description">12.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:file-based-database&gt;</span> element has the following attributes: <span class="Attribute">db:extension</span> <a href="#attribute-db_extension">19.52</a>, <span class="Attribute">db:media-type</span> <a href="#attribute-db_media-type">19.69</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-db_file-based-database">19.910.7</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:file-based-database&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_6_db_server-database_"><span style="margin-right:0.127cm;">12.6</span></a><a id="__RefHeading__1416024_253892949"/><a id="element-db_server-database"/>&lt;db:server-database&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:server-database&gt;</span> element specifies connection information for a server-based database. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:server-database&gt;</span> element is usable within the following element: <span class="Element">&lt;db:database-description&gt;</span> <a href="#element-db_database-description">12.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:server-database&gt;</span> element has the following attributes: <span class="Attribute">db:database-name</span> <a href="#attribute-db_database-name">19.43</a>, <span class="Attribute">db:hostname</span> <a href="#attribute-db_hostname">19.54</a>, <span class="Attribute">db:local-socket</span> <a href="#attribute-db_local-socket">19.67</a>, <span class="Attribute">db:port</span> <a href="#attribute-db_port">19.72</a> and <span class="Attribute">db:type</span> <a href="#attribute-db_type_element-db_server-database">19.85.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:server-database&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_7_db_connection-resource_"><span style="margin-right:0.127cm;">12.7</span></a><a id="__RefHeading__1416026_253892949"/><a id="element-db_connection-resource"/>&lt;db:connection-resource&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:connection-resource&gt;</span> element specifies a database connection by an IRI.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:connection-resource&gt;</span> element is usable within the following element: <span class="Element">&lt;db:connection-data&gt;</span> <a href="#element-db_connection-data">12.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:connection-resource&gt;</span> element has the following attributes: <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-db_connection-resource">19.910.6</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:connection-resource&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_8_db_login_"><span style="margin-right:0.127cm;">12.8</span></a><a id="__RefHeading__1416028_253892949"/><a id="element-db_login"/>&lt;db:login&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:login&gt;</span> element specifies the information needed to establish a connection to a database.</p><p class="Note"><span class="Note_20_Label">Note:</span> For security reasons, the <span class="Element">&lt;db:login&gt;</span> element does not have an attribute to store a password that may be required to establish a connection. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:login&gt;</span> element is usable within the following element: <span class="Element">&lt;db:connection-data&gt;</span> <a href="#element-db_connection-data">12.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:login&gt;</span> element has the following attributes: <span class="Attribute">db:is-password-required</span> <a href="#attribute-db_is-password-required">19.63</a>, <span class="Attribute">db:login-timeout</span> <a href="#attribute-db_login-timeout">19.61</a>, <span class="Attribute">db:user-name</span> <a href="#attribute-db_user-name">19.90</a> and <span class="Attribute">db:use-system-user</span> <a href="#attribute-db_use-system-user">19.89</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:login&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_9_db_driver-settings_"><span style="margin-right:0.127cm;">12.9</span></a><a id="__RefHeading__1416030_253892949"/><a id="element-db_driver-settings"/>&lt;db:driver-settings&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:driver-settings&gt;</span> element specifies settings for a driver establishing the database connection.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:driver-settings&gt;</span> element is usable within the following element: <span class="Element">&lt;db:data-source&gt;</span> <a href="#element-db_data-source">12.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:driver-settings&gt;</span> element has the following attributes: <span class="Attribute">db:base-dn</span> <a href="#attribute-db_base-dn">19.35</a>, <span class="Attribute">db:is-first-row-header-line</span> <a href="#attribute-db_is-first-row-header-line">19.60</a>, <span class="Attribute">db:parameter-name-substitution</span> <a href="#attribute-db_parameter-name-substitution">19.71</a>, <span class="Attribute">db:show-deleted</span> <a href="#attribute-db_show-deleted">19.78</a> and <span class="Attribute">db:system-driver-settings</span> <a href="#attribute-db_system-driver-settings">19.82</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:driver-settings&gt;</span> element has the following child elements: <span class="Element">&lt;db:auto-increment&gt;</span> <a href="#element-db_auto-increment">12.10</a>, <span class="Element">&lt;db:character-set&gt;</span> <a href="#element-db_character-set">12.12</a>, <span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a> and <span class="Element">&lt;db:table-settings&gt;</span> <a href="#element-db_table-settings">12.13</a>.</p><h2 class="Heading_20_2"><a id="a12_10_db_auto-increment_"><span style="margin-right:0.127cm;">12.10</span></a><a id="__RefHeading__1416032_253892949"/><a id="element-db_auto-increment"/>&lt;db:auto-increment&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:auto-increment&gt;</span> element specifies SQL statements to retrieve auto-generated row values and to set AUTO_INCREMENT values for columns. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:auto-increment&gt;</span> element is usable within the following element: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:auto-increment&gt;</span> element has the following attributes: <span class="Attribute">db:additional-column-statement</span> <a href="#attribute-db_additional-column-statement">19.31</a> and <span class="Attribute">db:row-retrieving-statement</span> <a href="#attribute-db_row-retrieving-statement">19.75</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:auto-increment&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_11_db_delimiter_"><span style="margin-right:0.127cm;">12.11</span></a><a id="__RefHeading__1416034_253892949"/><a id="element-db_delimiter"/>&lt;db:delimiter&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:delimiter&gt;</span> element defines a delimiter for parsing data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:delimiter&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a> and <span class="Element">&lt;db:table-setting&gt;</span> <a href="#element-db_table-setting">12.14</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:delimiter&gt;</span> element has the following attributes: <span class="Attribute">db:decimal</span> <a href="#attribute-db_decimal">19.44</a>, <span class="Attribute">db:field</span> <a href="#attribute-db_field">19.53</a>, <span class="Attribute">db:string</span> <a href="#attribute-db_string">19.79</a> and <span class="Attribute">db:thousand</span> <a href="#attribute-db_thousand">19.83</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:delimiter&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_12_db_character-set_"><span style="margin-right:0.127cm;">12.12</span></a><a id="__RefHeading__1416036_253892949"/><a id="element-db_character-set"/>&lt;db:character-set&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:character-set&gt;</span> element defines the text encoding that is used to transform string data obtained from a database.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:character-set&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a> and <span class="Element">&lt;db:table-setting&gt;</span> <a href="#element-db_table-setting">12.14</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:character-set&gt;</span> element has the following attribute: <span class="Attribute">db:encoding</span> <a href="#attribute-db_encoding">19.50</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:character-set&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_13_db_table-settings_"><span style="margin-right:0.127cm;">12.13</span></a><a id="__RefHeading__1416038_253892949"/><a id="element-db_table-settings"/>&lt;db:table-settings&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-settings&gt;</span> element is a container for <span class="Element">&lt;db:table-setting&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-settings&gt;</span> element is usable within the following element: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-settings&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-settings&gt;</span> element has the following child element: <span class="Element">&lt;db:table-setting&gt;</span> <a href="#element-db_table-setting">12.14</a>.</p><h2 class="Heading_20_2"><a id="a12_14_db_table-setting_"><span style="margin-right:0.127cm;">12.14</span></a><a id="__RefHeading__1416040_253892949"/><a id="element-db_table-setting"/>&lt;db:table-setting&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-setting&gt;</span> element specifies driver-level settings which are used by a database driver for defining a single database table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-setting&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-settings&gt;</span> <a href="#element-db_table-settings">12.13</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-setting&gt;</span> element has the following attributes: <span class="Attribute">db:is-first-row-header-line</span> <a href="#attribute-db_is-first-row-header-line">19.60</a> and <span class="Attribute">db:show-deleted</span> <a href="#attribute-db_show-deleted">19.78</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-setting&gt;</span> element has the following child elements: <span class="Element">&lt;db:character-set&gt;</span> <a href="#element-db_character-set">12.12</a> and <span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a>.</p><h2 class="Heading_20_2"><a id="a12_15_db_application-connection-settings_"><span style="margin-right:0.127cm;">12.15</span></a><a id="__RefHeading__1416042_253892949"/><a id="element-db_application-connection-settings"/>&lt;db:application-connection-settings&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:application-connection-settings&gt;</span> element specifies settings which define how a consumer uses a database connection.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:application-connection-settings&gt;</span> element is usable within the following element: <span class="Element">&lt;db:data-source&gt;</span> <a href="#element-db_data-source">12.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:application-connection-settings&gt;</span> element has the following attributes: <span class="Attribute">db:append-table-alias-name</span> <a href="#attribute-db_append-table-alias-name">19.32</a>, <span class="Attribute">db:boolean-comparison-mode</span> <a href="#attribute-db_boolean-comparison-mode">19.36</a>, <span class="Attribute">db:enable-sql92-check</span> <a href="#attribute-db_enable-sql92-check">19.49</a>, <span class="Attribute">db:ignore-driver-privileges</span> <a href="#attribute-db_ignore-driver-privileges">19.55</a>, <span class="Attribute">db:is-table-name-length-limited</span> <a href="#attribute-db_is-table-name-length-limited">19.66</a>, <span class="Attribute">db:max-row-count</span> <a href="#attribute-db_max-row-count">19.68</a>, <span class="Attribute">db:suppress-version-columns</span> <a href="#attribute-db_suppress-version-columns">19.81</a> and <span class="Attribute">db:use-catalog</span> <a href="#attribute-db_use-catalog">19.88</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:application-connection-settings&gt;</span> element has the following child elements: <span class="Element">&lt;db:data-source-settings&gt;</span> <a href="#element-db_data-source-settings">12.22</a>, <span class="Element">&lt;db:table-filter&gt;</span> <a href="#element-db_table-filter">12.16</a> and <span class="Element">&lt;db:table-type-filter&gt;</span> <a href="#element-db_table-type-filter">12.20</a>.</p><h2 class="Heading_20_2"><a id="a12_16_db_table-filter_"><span style="margin-right:0.127cm;">12.16</span></a><a id="__RefHeading__1416044_253892949"/><a id="element-db_table-filter"/>&lt;db:table-filter&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;db:table-filter&gt;</span> element defines a list of filter patterns which are applied on the table names returned by a database. Only tables which match at least one include filter, and do not match any exclude filter, will be displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-filter&gt;</span> element is usable within the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-filter&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-filter&gt;</span> element has the following child elements: <span class="Element">&lt;db:table-exclude-filter&gt;</span> <a href="#element-db_table-exclude-filter">12.18</a> and <span class="Element">&lt;db:table-include-filter&gt;</span> <a href="#element-db_table-include-filter">12.17</a>.</p><h2 class="Heading_20_2"><a id="a12_17_db_table-include-filter_"><span style="margin-right:0.127cm;">12.17</span></a><a id="__RefHeading__1416046_253892949"/><a id="element-db_table-include-filter"/>&lt;db:table-include-filter&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-include-filter&gt;</span> element specifies a list of filter patterns which determine inclusion of tables in a consumer's table display.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-include-filter&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-filter&gt;</span> <a href="#element-db_table-filter">12.16</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-include-filter&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-include-filter&gt;</span> element has the following child element: <span class="Element">&lt;db:table-filter-pattern&gt;</span> <a href="#element-db_table-filter-pattern">12.19</a>.</p><h2 class="Heading_20_2"><a id="a12_18_db_table-exclude-filter_"><span style="margin-right:0.127cm;">12.18</span></a><a id="__RefHeading__1416048_253892949"/><a id="element-db_table-exclude-filter"/>&lt;db:table-exclude-filter&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-exclude-filter&gt;</span> element specifies a list of filter patterns which determine exclusion of tables in a consumer's table display.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-exclude-filter&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-filter&gt;</span> <a href="#element-db_table-filter">12.16</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-exclude-filter&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-exclude-filter&gt;</span> element has the following child element: <span class="Element">&lt;db:table-filter-pattern&gt;</span> <a href="#element-db_table-filter-pattern">12.19</a>.</p><h2 class="Heading_20_2"><a id="a12_19_db_table-filter-pattern_"><span style="margin-right:0.127cm;">12.19</span></a><a id="__RefHeading__1416050_253892949"/><a id="element-db_table-filter-pattern"/>&lt;db:table-filter-pattern&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-filter-pattern&gt;</span> element specifies a filter pattern. </p><p class="Text_20_body"><span class="Note_20_Label">T</span>he “%” (U+0025. PERCENT SIGN) character is used as wildcard.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-filter-pattern&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:table-exclude-filter&gt;</span> <a href="#element-db_table-exclude-filter">12.18</a> and <span class="Element">&lt;db:table-include-filter&gt;</span> <a href="#element-db_table-include-filter">12.17</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-filter-pattern&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;db:table-filter-pattern&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-filter-pattern&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a12_20_db_table-type-filter_"><span style="margin-right:0.127cm;">12.20</span></a><a id="__RefHeading__1416052_253892949"/><a id="element-db_table-type-filter"/>&lt;db:table-type-filter&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;db:table-type-filter&gt;</span> element defines a list of table types which a database uses to filter tables. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-type-filter&gt;</span> element is usable within the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-type-filter&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-type-filter&gt;</span> element has the following child element: <span class="Element">&lt;db:table-type&gt;</span> <a href="#element-db_table-type">12.21</a>.</p><h2 class="Heading_20_2"><a id="a12_21_db_table-type_"><span style="margin-right:0.127cm;">12.21</span></a><a id="__RefHeading__1416054_253892949"/><a id="element-db_table-type"/>&lt;db:table-type&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-type&gt;</span> element specifies a table type. </p><p class="Note"><span class="Note_20_Label">Note: </span>Table types are database specific.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-type&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-type-filter&gt;</span> <a href="#element-db_table-type-filter">12.20</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-type&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;db:table-type&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-type&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a12_22_db_data-source-settings_"><span style="margin-right:0.127cm;">12.22</span></a><a id="__RefHeading__1416056_253892949"/><a id="element-db_data-source-settings"/>&lt;db:data-source-settings&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:data-source-settings&gt;</span> element is a container element for <span class="Element">&lt;db:data-source-setting&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:data-source-settings&gt;</span> element is usable within the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:data-source-settings&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:data-source-settings&gt;</span> element has the following child element: <span class="Element">&lt;db:data-source-setting&gt;</span> <a href="#element-db_data-source-setting">12.23</a>.</p><h2 class="Heading_20_2"><a id="a12_23_db_data-source-setting_"><span style="margin-right:0.127cm;">12.23</span></a><a id="__RefHeading__1416058_253892949"/><a id="element-db_data-source-setting"/>&lt;db:data-source-setting&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:data-source-setting&gt;</span> element specifies the name of a data-source-setting, a data-source-setting type, and whether a data-source-setting contains a list of data or single data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:data-source-setting&gt;</span> element is usable within the following element: <span class="Element">&lt;db:data-source-settings&gt;</span> <a href="#element-db_data-source-settings">12.22</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:data-source-setting&gt;</span> element has the following attributes: <span class="Attribute">db:data-source-setting-is-list</span> <a href="#attribute-db_data-source-setting-is-list">19.39</a>, <span class="Attribute">db:data-source-setting-name</span> <a href="#attribute-db_data-source-setting-name">19.40</a> and <span class="Attribute">db:data-source-setting-type</span> <a href="#attribute-db_data-source-setting-type">19.41</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:data-source-setting&gt;</span> element has the following child element: <span class="Element">&lt;db:data-source-setting-value&gt;</span> <a href="#element-db_data-source-setting-value">12.24</a>.</p><h2 class="Heading_20_2"><a id="a12_24_db_data-source-setting-value_"><span style="margin-right:0.127cm;">12.24</span></a><a id="__RefHeading__1416060_253892949"/><a id="element-db_data-source-setting-value"/>&lt;db:data-source-setting-value&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:data-source-setting-value&gt;</span> element specifies the content of a data-source-setting.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:data-source-setting-value&gt;</span> element is usable within the following element: <span class="Element">&lt;db:data-source-setting&gt;</span> <a href="#element-db_data-source-setting">12.23</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:data-source-setting-value&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;db:data-source-setting-value&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:data-source-setting-value&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a12_25Forms_and_Reports"><span style="margin-right:0.127cm;">12.25</span></a><a id="__RefHeading__1416062_253892949"/>Forms and Reports</h2><h3 class="Heading_20_3"><a id="a12_25_1General"><span style="margin-right:0.127cm;">12.25.1</span></a><a id="__RefHeading__1416064_253892949"/>General</h3><p class="Text_20_body">Database documents can contain forms and reports as sub documents. They're included in database front end documents by XLinks. Alternatively, the content of sub documents may be included in the <span class="Element">&lt;db:component&gt;</span> elements as child elements.</p><h3 class="Heading_20_3"><a id="a12_25_2_db_forms_"><span style="margin-right:0.127cm;">12.25.2</span></a><a id="__RefHeading__1416066_253892949"/><a id="element-db_forms"/>&lt;db:forms&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;db:forms&gt;</span> element may contain <span class="Element">&lt;db:component&gt;</span> or <span class="Element">&lt;db:component-collection&gt;</span> elements or both. It specifies a list of form documents and sub collections. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:forms&gt;</span> element is usable within the following element: <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:forms&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:forms&gt;</span> element has the following child elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a> and <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>.</p><h3 class="Heading_20_3"><a id="a12_25_3_db_reports_"><span style="margin-right:0.127cm;">12.25.3</span></a><a id="__RefHeading__1416068_253892949"/><a id="element-db_reports"/>&lt;db:reports&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;db:reports&gt;</span> element may contain <span class="Element">&lt;db:component&gt;</span> or <span class="Element">&lt;db:component-collection&gt;</span> elements or both.  It specifies a list of report documents and sub collections. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:reports&gt;</span> element is usable within the following element: <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:reports&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:reports&gt;</span> element has the following child elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a> and <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>.</p><h3 class="Heading_20_3"><a id="a12_25_4_db_component-collection_"><span style="margin-right:0.127cm;">12.25.4</span></a><a id="__RefHeading__1416070_253892949"/><a id="element-db_component-collection"/>&lt;db:component-collection&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;db:component-collection&gt;</span> element specifies a collection of <span class="Element">&lt;db:component&gt;</span> elements and <span class="Element">&lt;db:component-collection&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:component-collection&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>, <span class="Element">&lt;db:forms&gt;</span> <a href="#element-db_forms">12.25.2</a> and <span class="Element">&lt;db:reports&gt;</span> <a href="#element-db_reports">12.25.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:component-collection&gt;</span> element has the following attributes: <span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_component-collection">19.70.5</a> and <span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:component-collection&gt;</span> element has the following child elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a> and <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>.</p><h3 class="Heading_20_3"><a id="a12_25_5_db_component_"><span style="margin-right:0.127cm;">12.25.5</span></a><a id="__RefHeading__1416072_253892949"/><a id="element-db_component"/>&lt;db:component&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;db:component&gt;</span> element specifies a database component which can be either a form or a report.</p><p class="Text_20_body">A database component is either referenced using the <span class="Attribute">xlink:href</span> attribute or it is contained in a child <span class="Element">&lt;office:document&gt;</span> or <span class="Element">&lt;math:math&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:component&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>, <span class="Element">&lt;db:forms&gt;</span> <a href="#element-db_forms">12.25.2</a> and <span class="Element">&lt;db:reports&gt;</span> <a href="#element-db_reports">12.25.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:component&gt;</span> element has the following attributes: <span class="Attribute">db:as-template</span> <a href="#attribute-db_as-template">19.34</a>, <span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_component">19.70.4</a>, <span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-db_component">19.910.5</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:component&gt;</span> element has the following child elements: <span class="Element">&lt;math:math&gt;</span> <a href="#element-math_math">14.5</a> and <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>.</p><h2 class="Heading_20_2"><a id="a12_26_db_queries_"><span style="margin-right:0.127cm;">12.26</span></a><a id="__RefHeading__1416074_253892949"/><a id="element-db_queries"/>&lt;db:queries&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:queries&gt;</span> element may contain <span class="Element">&lt;db:query&gt;</span> or <span class="Element">&lt;db:query-collection&gt;</span> elements or both.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:queries&gt;</span> element is usable within the following element: <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:queries&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:queries&gt;</span> element has the following child elements: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a> and <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a>.</p><h2 class="Heading_20_2"><a id="a12_27_db_query-collection_"><span style="margin-right:0.127cm;">12.27</span></a><a id="__RefHeading__1416076_253892949"/><a id="element-db_query-collection"/>&lt;db:query-collection&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:query-collection&gt;</span> element may contain <span class="Element">&lt;db:query&gt;</span> or <span class="Element">&lt;db:query-collection&gt;</span> elements or both.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:query-collection&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:queries&gt;</span> <a href="#element-db_queries">12.26</a> and <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:query-collection&gt;</span> element has the following attributes: <span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_query-collection">19.70.11</a> and <span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:query-collection&gt;</span> element has the following child elements: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a> and <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a>.</p><h2 class="Heading_20_2"><a id="a12_28_db_query_"><span style="margin-right:0.127cm;">12.28</span></a><a id="__RefHeading__1416078_253892949"/><a id="element-db_query"/>&lt;db:query&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:query&gt;</span> element specifies a database query.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:query&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:queries&gt;</span> <a href="#element-db_queries">12.26</a> and <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:query&gt;</span> element has the following attributes: <span class="Attribute">db:command</span> <a href="#attribute-db_command">19.38</a>, <span class="Attribute">db:default-row-style-name</span> <a href="#attribute-db_default-row-style-name">19.46</a>, <span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a>, <span class="Attribute">db:escape-processing</span> <a href="#attribute-db_escape-processing">19.51</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_query">19.70.10</a>, <span class="Attribute">db:style-name</span> <a href="#attribute-db_style-name_element-db_query">19.80.3</a> and <span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:query&gt;</span> element has the following child elements: <span class="Element">&lt;db:columns&gt;</span> <a href="#element-db_columns">12.34</a>, <span class="Element">&lt;db:filter-statement&gt;</span> <a href="#element-db_filter-statement">12.30</a>, <span class="Element">&lt;db:order-statement&gt;</span> <a href="#element-db_order-statement">12.29</a> and <span class="Element">&lt;db:update-table&gt;</span> <a href="#element-db_update-table">12.31</a>.</p><h2 class="Heading_20_2"><a id="a12_29_db_order-statement_"><span style="margin-right:0.127cm;">12.29</span></a><a id="__RefHeading__1416080_253892949"/><a id="element-db_order-statement"/>&lt;db:order-statement&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:order-statement&gt;</span> element specifies a sort ("ORDER BY") SQL clause which is to be applied on top of another SQL statement producing a result set.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:order-statement&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a> and <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:order-statement&gt;</span> element has the following attributes: <span class="Attribute">db:apply-command</span> <a href="#attribute-db_apply-command">19.33</a> and <span class="Attribute">db:command</span> <a href="#attribute-db_command">19.38</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:order-statement&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_30_db_filter-statement_"><span style="margin-right:0.127cm;">12.30</span></a><a id="__RefHeading__1416082_253892949"/><a id="element-db_filter-statement"/>&lt;db:filter-statement&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:filter-statement&gt;</span> element specifies a filter ("WHERE") SQL clause which is to be applied on top of another SQL-statement producing a result set.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:filter-statement&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a> and <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:filter-statement&gt;</span> element has the following attributes: <span class="Attribute">db:apply-command</span> <a href="#attribute-db_apply-command">19.33</a> and <span class="Attribute">db:command</span> <a href="#attribute-db_command">19.38</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:filter-statement&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_31_db_update-table_"><span style="margin-right:0.127cm;">12.31</span></a><a id="__RefHeading__1416084_253892949"/><a id="element-db_update-table"/>&lt;db:update-table&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:update-table&gt;</span> element specifies the name of the table which will be updated when an UPDATE, INSERT or DELETE SQL statement is executed. It defines the table which should be updated when the select statement contains more than one table. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:update-table&gt;</span> element is usable within the following element: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:update-table&gt;</span> element has the following attributes: <span class="Attribute">db:catalog-name</span> <a href="#attribute-db_catalog-name">19.37</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_update-table">19.70.14</a> and <span class="Attribute">db:schema-name</span> <a href="#attribute-db_schema-name">19.77</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:update-table&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_32_db_table-representations_"><span style="margin-right:0.127cm;">12.32</span></a><a id="__RefHeading__1416086_253892949"/><a id="element-db_table-representations"/>&lt;db:table-representations&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-representations&gt;</span> element specifies a collection of tables.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-representations&gt;</span> element is usable within the following element: <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-representations&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-representations&gt;</span> element has the following child element: <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><h2 class="Heading_20_2"><a id="a12_33_db_table-representation_"><span style="margin-right:0.127cm;">12.33</span></a><a id="__RefHeading__1416088_253892949"/><a id="element-db_table-representation"/>&lt;db:table-representation&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;db:table-representation&gt;</span> element specifies how a consumer displays a table to the user.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-representation&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-representations&gt;</span> <a href="#element-db_table-representations">12.32</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-representation&gt;</span> element has the following attributes: <span class="Attribute">db:catalog-name</span> <a href="#attribute-db_catalog-name">19.37</a>, <span class="Attribute">db:default-row-style-name</span> <a href="#attribute-db_default-row-style-name">19.46</a>, <span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_table-representation">19.70.13</a>, <span class="Attribute">db:schema-name</span> <a href="#attribute-db_schema-name">19.77</a>, <span class="Attribute">db:style-name</span> <a href="#attribute-db_style-name_element-db_table-representation">19.80.4</a> and <span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-representation&gt;</span> element has the following child elements: <span class="Element">&lt;db:columns&gt;</span> <a href="#element-db_columns">12.34</a>, <span class="Element">&lt;db:filter-statement&gt;</span> <a href="#element-db_filter-statement">12.30</a> and <span class="Element">&lt;db:order-statement&gt;</span> <a href="#element-db_order-statement">12.29</a>.</p><h2 class="Heading_20_2"><a id="a12_34_db_columns_"><span style="margin-right:0.127cm;">12.34</span></a><a id="__RefHeading__1416090_253892949"/><a id="element-db_columns"/>&lt;db:columns&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:columns&gt;</span> element is a collection of <span class="Element">&lt;db:column&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:columns&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a> and <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:columns&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:columns&gt;</span> element has the following child element: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>.</p><h2 class="Heading_20_2"><a id="a12_35_db_column_"><span style="margin-right:0.127cm;">12.35</span></a><a id="__RefHeading__1416092_253892949"/><a id="element-db_column"/>&lt;db:column&gt;</h2><p class="Text_20_body"><a id="__DdeLink__280214_1363921367"/>The <span class="Element">&lt;db:column&gt;</span> element specifies settings for a column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:column&gt;</span> element is usable within the following element: <span class="Element">&lt;db:columns&gt;</span> <a href="#element-db_columns">12.34</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:column&gt;</span> element has the following attributes: <span class="Attribute">db:default-cell-style-name</span> <a href="#attribute-db_default-cell-style-name">19.45</a>, <span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_column">19.70.2</a>, <span class="Attribute">db:style-name</span> <a href="#attribute-db_style-name_element-db_column">19.80.2</a>, <span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a>, <span class="Attribute">db:visible</span> <a href="#attribute-db_visible">19.91</a>, <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:column&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_36_db_schema-definition_"><span style="margin-right:0.127cm;">12.36</span></a><a id="__RefHeading__1416094_253892949"/><a id="element-db_schema-definition"/>&lt;db:schema-definition&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:schema-definition&gt;</span> element specifies a database schema. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:schema-definition&gt;</span> element is usable within the following element: <span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:schema-definition&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:schema-definition&gt;</span> element has the following child element: <span class="Element">&lt;db:table-definitions&gt;</span> <a href="#element-db_table-definitions">12.37</a>.</p><h2 class="Heading_20_2"><a id="a12_37_db_table-definitions_"><span style="margin-right:0.127cm;">12.37</span></a><a id="__RefHeading__1416096_253892949"/><a id="element-db_table-definitions"/>&lt;db:table-definitions&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-definitions&gt;</span> element is a container for multiple <span class="Element">&lt;db:table-definition&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-definitions&gt;</span> element is usable within the following element: <span class="Element">&lt;db:schema-definition&gt;</span> <a href="#element-db_schema-definition">12.36</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-definitions&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-definitions&gt;</span> element has the following child element: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>.</p><h2 class="Heading_20_2"><a id="a12_38_db_table-definition_"><span style="margin-right:0.127cm;">12.38</span></a><a id="__RefHeading__1416098_253892949"/><a id="element-db_table-definition"/>&lt;db:table-definition&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:table-definition&gt;</span> element specifies the schema of a single table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:table-definition&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-definitions&gt;</span> <a href="#element-db_table-definitions">12.37</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:table-definition&gt;</span> element has the following attributes: <span class="Attribute">db:catalog-name</span> <a href="#attribute-db_catalog-name">19.37</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_table-definition">19.70.12</a>, <span class="Attribute">db:schema-name</span> <a href="#attribute-db_schema-name">19.77</a> and <span class="Attribute">db:type</span> <a href="#attribute-db_type_element-db_table-definition">19.85.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:table-definition&gt;</span> element has the following child elements: <span class="Element">&lt;db:column-definitions&gt;</span> <a href="#element-db_column-definitions">12.39</a>, <span class="Element">&lt;db:indices&gt;</span> <a href="#element-db_indices">12.45</a> and <span class="Element">&lt;db:keys&gt;</span> <a href="#element-db_keys">12.41</a>.</p><h2 class="Heading_20_2"><a id="a12_39_db_column-definitions_"><span style="margin-right:0.127cm;">12.39</span></a><a id="__RefHeading__1416100_253892949"/><a id="element-db_column-definitions"/>&lt;db:column-definitions&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:column-definitions&gt;</span> element is a container for <span class="Element">&lt;db:column-definition&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:column-definitions&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:column-definitions&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:column-definitions&gt;</span> element has the following child element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><h2 class="Heading_20_2"><a id="a12_40_db_column-definition_"><span style="margin-right:0.127cm;">12.40</span></a><a id="__RefHeading__1416102_253892949"/><a id="element-db_column-definition"/>&lt;db:column-definition&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:column-definition&gt;</span> element defines a table column. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:column-definition&gt;</span> element is usable within the following element: <span class="Element">&lt;db:column-definitions&gt;</span> <a href="#element-db_column-definitions">12.39</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:column-definition&gt;</span> element has the following attributes: <span class="Attribute">db:data-type</span> <a href="#attribute-db_data-type">19.42</a>, <span class="Attribute">db:is-autoincrement</span> <a href="#attribute-db_is-autoincrement">19.57</a>, <span class="Attribute">db:is-empty-allowed</span> <a href="#attribute-db_is-empty-allowed">19.59</a>, <span class="Attribute">db:is-nullable</span> <a href="#attribute-db_is-nullable">19.62</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_column-definition">19.70.3</a>, <span class="Attribute">db:precision</span> <a href="#attribute-db_precision">19.65</a>, <span class="Attribute">db:scale</span> <a href="#attribute-db_scale">19.76</a>, <span class="Attribute">db:type-name</span> <a href="#attribute-db_type-name">19.86</a>, <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:column-definition&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_41_db_keys_"><span style="margin-right:0.127cm;">12.41</span></a><a id="__RefHeading__1416104_253892949"/><a id="element-db_keys"/>&lt;db:keys&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:keys&gt;</span> element is a container for one or more <span class="Element">&lt;db:key&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:keys&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:keys&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:keys&gt;</span> element has the following child element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><h2 class="Heading_20_2"><a id="a12_42_db_key_"><span style="margin-right:0.127cm;">12.42</span></a><a id="__RefHeading__1416106_253892949"/><a id="element-db_key"/>&lt;db:key&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:key&gt;</span> element specifies a key for a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:key&gt;</span> element is usable within the following element: <span class="Element">&lt;db:keys&gt;</span> <a href="#element-db_keys">12.41</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:key&gt;</span> element has the following attributes: <span class="Attribute">db:delete-rule</span> <a href="#attribute-db_delete-rule">19.47</a>, <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_key">19.70.8</a>, <span class="Attribute">db:referenced-table-name</span> <a href="#attribute-db_referenced-table-name">19.73</a>, <span class="Attribute">db:type</span> <a href="#attribute-db_type_element-db_key">19.85.2</a> and <span class="Attribute">db:update-rule</span> <a href="#attribute-db_update-rule">19.87</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:key&gt;</span> element has the following child element: <span class="Element">&lt;db:key-columns&gt;</span> <a href="#element-db_key-columns">12.43</a>.</p><h2 class="Heading_20_2"><a id="a12_43_db_key-columns_"><span style="margin-right:0.127cm;">12.43</span></a><a id="__RefHeading__1416108_253892949"/><a id="element-db_key-columns"/>&lt;db:key-columns&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:key-columns&gt;</span> element specifies the columns of a key.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:key-columns&gt;</span> element is usable within the following element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:key-columns&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:key-columns&gt;</span> element has the following child element: <span class="Element">&lt;db:key-column&gt;</span> <a href="#element-db_key-column">12.44</a>.</p><h2 class="Heading_20_2"><a id="a12_44_db_key-column_"><span style="margin-right:0.127cm;">12.44</span></a><a id="__RefHeading__1416110_253892949"/><a id="element-db_key-column"/>&lt;db:key-column&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:key-column&gt;</span> element specifies a description of a column of a table key</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:key-column&gt;</span> element is usable within the following element: <span class="Element">&lt;db:key-columns&gt;</span> <a href="#element-db_key-columns">12.43</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:key-column&gt;</span> element has the following attributes: <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_key-column">19.70.9</a> and <span class="Attribute">db:related-column-name</span> <a href="#attribute-db_related-column-name">19.74</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:key-column&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a12_45_db_indices_"><span style="margin-right:0.127cm;">12.45</span></a><a id="__RefHeading__1416112_253892949"/><a id="element-db_indices"/>&lt;db:indices&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:indices&gt;</span> element defines the indexes of a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:indices&gt;</span> element is usable within the following element: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:indices&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:indices&gt;</span> element has the following child element: <span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a>.</p><h2 class="Heading_20_2"><a id="a12_46_db_index_"><span style="margin-right:0.127cm;">12.46</span></a><a id="__RefHeading__1416114_253892949"/><a id="element-db_index"/>&lt;db:index&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:index&gt;</span> element defines the types of indexes of a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:index&gt;</span> element is usable within the following element: <span class="Element">&lt;db:indices&gt;</span> <a href="#element-db_indices">12.45</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:index&gt;</span> element has the following attributes: <span class="Attribute">db:catalog-name</span> <a href="#attribute-db_catalog-name">19.37</a>, <span class="Attribute">db:is-clustered</span> <a href="#attribute-db_is-clustered">19.58</a>, <span class="Attribute">db:is-unique</span> <a href="#attribute-db_is-unique">19.64</a> and <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_index">19.70.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:index&gt;</span> element has the following child element: <span class="Element">&lt;db:index-columns&gt;</span> <a href="#element-db_index-columns">12.47</a>.</p><h2 class="Heading_20_2"><a id="a12_47_db_index-columns_"><span style="margin-right:0.127cm;">12.47</span></a><a id="__RefHeading__1416116_253892949"/><a id="element-db_index-columns"/>&lt;db:index-columns&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:index-columns&gt;</span> element specifies the columns of an index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:index-columns&gt;</span> element is usable within the following element: <span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:index-columns&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:index-columns&gt;</span> element has the following child element: <span class="Element">&lt;db:index-column&gt;</span> <a href="#element-db_index-column">12.48</a>.</p><h2 class="Heading_20_2"><a id="a12_48_db_index-column_"><span style="margin-right:0.127cm;">12.48</span></a><a id="__RefHeading__1416118_253892949"/><a id="element-db_index-column"/>&lt;db:index-column&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;db:index-column&gt;</span> element specifies the description of a column of a table index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;db:index-column&gt;</span> element is usable within the following element: <span class="Element">&lt;db:index-columns&gt;</span> <a href="#element-db_index-columns">12.47</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;db:index-column&gt;</span> element has the following attributes: <span class="Attribute">db:is-ascending</span> <a href="#attribute-db_is-ascending">19.56</a> and <span class="Attribute">db:name</span> <a href="#attribute-db_name_element-db_index-column">19.70.7</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;db:index-column&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a13Form_Content"><span style="margin-right:0.127cm;">13</span></a><a id="__RefHeading__1416120_253892949"/><a id="Form_Content"/>Form Content</h1><h2 class="Heading_20_2"><a id="a13_1General"><span style="margin-right:0.127cm;">13.1</span></a><a id="__RefHeading__1416122_253892949"/><a id="data-aware"/>General</h2><p class="Text_20_body">A form is a container for user interface controls. </p><p class="Note"><span class="Note_20_Label">Note: </span>Buttons, text boxes, check boxes, and drop-down lists are user interface controls that can be contained in a form. </p><p class="Text_20_body">In the OpenDocument format, the following rules apply to user interface controls and forms:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>All controls shall be located in a form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>All controls that are not hidden are assigned an absolute or relative position. These visual aspects of a control are represented by drawing shapes that contain a reference to the control.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Forms may be nested. The containing form provides a context for the contained form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Forms are not connected with the text flow and layout of a document. This does not apply to controls.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Forms can be data-aware. A form is data-aware if the values subject to its controls are populated from and updated to a database.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Form behavior is defined for submission and connection to a data source only for forms defined by a <span class="Element">&lt;form:form&gt;</span> element.</p><p class="Text_20_body">The result set of values subject to the controls of the form is defined by the <span class="Attribute">form:datasource</span>, <span class="Attribute">form:command</span>, and <span class="Attribute">form:command-type</span> attributes. At any point in time, only one row of the result set is subject to the forms controls. </p><p class="Text_20_body">Form behavior is not defined for forms defined by a <span class="Element">&lt;xforms:model&gt;</span> element.</p><h2 class="Heading_20_2"><a id="a13_2_office_forms_"><span style="margin-right:0.127cm;">13.2</span></a><a id="__RefHeading__1416124_253892949"/><a id="element-office_forms"/>&lt;office:forms&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:forms&gt;</span> element is a container for <span class="Element">&lt;form:form&gt;</span> or <span class="Element">&lt;xforms:model&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:forms&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:forms&gt;</span> element has the following attributes: <span class="Attribute">form:apply-design-mode</span> <a href="#attribute-form_apply-design-mode">19.250</a> and <span class="Attribute">form:automatic-focus</span> <a href="#attribute-form_automatic-focus">19.253</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:forms&gt;</span> element has the following child elements: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a> and <span class="Element">&lt;xforms:model&gt;</span> <a href="#element-xforms_model">13.4</a>.</p><h2 class="Heading_20_2"><a id="a13_3_form_form_"><span style="margin-right:0.127cm;">13.3</span></a><a id="__RefHeading__1416126_253892949"/><a id="element-form_form"/>&lt;form:form&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;form:form&gt;</span> element specifies a user interface form and defines the contents and properties of the form.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:form&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a> and <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:form&gt;</span> element has the following attributes: <span class="Attribute">form:allow-deletes</span> <a href="#attribute-form_allow-deletes">19.247</a>, <span class="Attribute">form:allow-inserts</span> <a href="#attribute-form_allow-inserts">19.248</a>, <span class="Attribute">form:allow-updates</span> <a href="#attribute-form_allow-updates">19.249</a>, <span class="Attribute">form:apply-filter</span> <a href="#attribute-form_apply-filter">19.251</a>, <span class="Attribute">form:command</span> <a href="#attribute-form_command">19.256</a>, <span class="Attribute">form:command-type</span> <a href="#attribute-form_command-type">19.257</a>, <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:datasource</span> <a href="#attribute-form_datasource">19.264</a>, <span class="Attribute">form:detail-fields</span> <a href="#attribute-form_detail-fields">19.267</a>, <span class="Attribute">form:enctype</span> <a href="#attribute-form_enctype">19.271</a>, <span class="Attribute">form:escape-processing</span> <a href="#attribute-form_escape-processing">19.272</a>, <span class="Attribute">form:filter</span> <a href="#attribute-form_filter">19.273</a>, <span class="Attribute">form:ignore-result</span> <a href="#attribute-form_ignore-result">19.277</a>, <span class="Attribute">form:master-fields</span> <a href="#attribute-form_master-fields">19.287</a>, <span class="Attribute">form:method</span> <a href="#attribute-form_method">19.291</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:navigation-mode</span> <a href="#attribute-form_navigation-mode">19.295</a>, <span class="Attribute">form:order</span> <a href="#attribute-form_order">19.296</a>, <span class="Attribute">form:tab-cycle</span> <a href="#attribute-form_tab-cycle">19.309</a>, <span class="Attribute">office:target-frame</span> <a href="#attribute-office_target-frame">19.380</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-form_form">19.910.22</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:form&gt;</span> element has the following child elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>, <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h2 class="Heading_20_2"><a id="a13_4_xforms_model_"><span style="margin-right:0.127cm;">13.4</span></a><a id="__RefHeading__1416128_253892949"/><a id="XForms_Model"/><a id="XForms"/><a id="element-xforms_model"/>&lt;xforms:model&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;xforms:model&gt;</span> element is imported from <a title="XForms 1.0 (Third Edition)" href="http://www.w3.org/TR/2007/REC-xforms-20071029/">[XForms]</a> and is embedded in the <span class="Element">&lt;office:forms&gt;</span> element. XForms consists of two major parts, the XForms model which contains the form logic plus form data, and XForms controls, which can be bound to a data model. </p><p class="Text_20_body">Controls defined by OpenDocument (see <a href="#Controls">13.5</a>) may be bound to an XForms model by an <span class="Attribute">xforms:bind</span> attribute.</p><p class="Text_20_body">The <span class="Element">&lt;xforms:model</span><span class="Element">&gt;</span> element has the attributes and content defined in §3.3.1 of <a title="XForms 1.0 (Third Edition)" href="http://www.w3.org/TR/2007/REC-xforms-20071029/">[XForms]</a>.</p><p class="Parent_20_Element_20_List">The <span class="Element">&lt;xforms:model&gt;</span> element is usable within the following element: <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>.</p><h2 class="Heading_20_2"><a id="a13_5Controls"><span style="margin-right:0.127cm;">13.5</span></a><a id="__RefHeading__1416130_253892949"/><a id="Controls"/>Controls</h2><h3 class="Heading_20_3"><a id="a13_5_1General"><span style="margin-right:0.127cm;">13.5.1</span></a><a id="__RefHeading__1416132_253892949"/>General</h3><p class="Text_20_body">Controls are used to interact with forms. Each control in a form is identified by a name. The name of a control need not be unique in a form.</p><p class="Text_20_body">Controls are connected to the surrounding document (and its text flow, if applicable) by binding them to a shape that acts as a placeholder for the control. <a href="#element-draw_control">10.3.13</a></p><p class="Text_20_body">In addition to the attributes defined in this standard, controls may have implementation-dependent attributes. Those attributes are stored in a <span class="Element">&lt;form:properties&gt;</span> element in each control. Control events are specified in a <span class="Element">&lt;office:event-listeners&gt;</span> element.</p><h3 class="Heading_20_3"><a id="a13_5_2_form_text_"><span style="margin-right:0.127cm;">13.5.2</span></a><a id="__RefHeading__1416134_253892949"/><a id="element-form_text"/>&lt;form:text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:text&gt;</span> element defines a control for displaying and inputting text on a single line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:text&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:text&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_text">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:text&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_3_form_textarea_"><span style="margin-right:0.127cm;">13.5.3</span></a><a id="__RefHeading__1416136_253892949"/><a id="element-form_textarea"/>&lt;form:textarea&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:textarea&gt;</span> element defines a control for displaying and inputting text on multiple lines.</p><p class="Text_20_body">The <span class="Element">&lt;form:textarea&gt;</span> element may be used with plain text values (specified by the <span class="Attribute">form:current-value</span> attribute) as well as with formatted text (specified as paragraph content). If both a <span class="Attribute">form:current-value</span> attribute and one or more <span class="Element">&lt;text:p&gt;</span> elements are present,  , it is implementation dependent which text is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:textarea&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:textarea&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_textarea">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:textarea&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a>, <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h3 class="Heading_20_3"><a id="a13_5_4_form_password_"><span style="margin-right:0.127cm;">13.5.4</span></a><a id="__RefHeading__1416138_253892949"/><a id="element-form_password"/>&lt;form:password&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:password&gt;</span> element defines a control that hides text a user inputs using an echo character.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:password&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:password&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:echo-char</span> <a href="#attribute-form_echo-char">19.270</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_password">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:password&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_5_form_file_"><span style="margin-right:0.127cm;">13.5.5</span></a><a id="__RefHeading__1416140_253892949"/><a id="element-form_file"/>&lt;form:file&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:file&gt;</span> element defines a control for selecting a file.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:file&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:file&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_file">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:file&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_6_form_formatted-text_"><span style="margin-right:0.127cm;">13.5.6</span></a><a id="__RefHeading__1416142_253892949"/><a id="element-form_formatted-text"/>&lt;form:formatted-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:formatted-text&gt;</span> element defines a control for inputting text, which follows the format defined by a data style that is assigned to the control's graphical shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:formatted-text&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:formatted-text&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:delay-for-repeat</span> <a href="#attribute-form_delay-for-repeat">19.266</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:max-value</span> <a href="#attribute-form_max-value_element-form_formatted-text">19.289.3</a>, <span class="Attribute">form:min-value</span> <a href="#attribute-form_min-value_element-form_formatted-text">19.290.3</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a>, <span class="Attribute">form:spin-button</span> <a href="#attribute-form_spin-button">19.306</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:validation</span> <a href="#attribute-form_validation">19.315</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_formatted-text">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:formatted-text&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_7_form_number_"><span style="margin-right:0.127cm;">13.5.7</span></a><a id="__RefHeading__1416144_253892949"/><a id="element-form_number"/>&lt;form:number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:number&gt;</span> element defines a control which allows the user to enter a floating point number. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:number&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:number&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:delay-for-repeat</span> <a href="#attribute-form_delay-for-repeat">19.266</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:max-value</span> <a href="#attribute-form_max-value_element-form_number">19.289.4</a>, <span class="Attribute">form:min-value</span> <a href="#attribute-form_min-value_element-form_number">19.290.4</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a>, <span class="Attribute">form:spin-button</span> <a href="#attribute-form_spin-button">19.306</a>, <span class="Attribute">form:tab-</span><span class="Attribute">index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_number">19.316.4</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:number&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_8_form_date_"><span style="margin-right:0.127cm;">13.5.8</span></a><a id="__RefHeading__1416146_253892949"/><a id="element-form_date"/>&lt;form:date&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:date&gt;</span> element defines a control for inputting date data. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:date&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:date&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:delay-for-repeat</span> <a href="#attribute-form_delay-for-repeat">19.266</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:max-value</span> <a href="#attribute-form_max-value_element-form_date">19.289.2</a>, <span class="Attribute">form:min-value</span> <a href="#attribute-form_min-value_element-form_date">19.290.2</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a>, <span class="Attribute">form:spin-button</span> <a href="#attribute-form_spin-button">19.306</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_date">19.316.3</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:date&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_9_form_time_"><span style="margin-right:0.127cm;">13.5.9</span></a><a id="__RefHeading__1416148_253892949"/><a id="element-form_time"/>&lt;form:time&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:time&gt;</span> element defines a control for inputting time data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:time&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:time&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:delay-for-repeat</span> <a href="#attribute-form_delay-for-repeat">19.266</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:max-value</span> <a href="#attribute-form_max-value_element-form_time">19.289.5</a>, <span class="Attribute">form:min-value</span> <a href="#attribute-form_min-value_element-form_time">19.290.5</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a>, <span class="Attribute">form:spin-button</span> <a href="#attribute-form_spin-button">19.306</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_time">19.316.6</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:time&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_10_form_fixed-text_"><span style="margin-right:0.127cm;">13.5.10</span></a><a id="__RefHeading__1416150_253892949"/><a id="element-form_fixed-text"/>&lt;form:fixed-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:fixed-text&gt;</span> element defines a control which attaches additional information to controls, or displays information. Only one label may be associated with a control.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:fixed-text&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:fixed-text&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:for</span> <a href="#attribute-form_for">19.275</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:multi-line</span> <a href="#attribute-form_multi-line">19.292</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:fixed-text&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_11_form_combobox_"><span style="margin-right:0.127cm;">13.5.11</span></a><a id="__RefHeading__1416152_253892949"/><a id="element-form_combobox"/>&lt;form:combobox&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:combobox&gt;</span> element defines a control which allows displaying and editing of text, and contains a list of possible values for that text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:combobox&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:combobox&gt;</span> element has the following attributes: <span class="Attribute">form:auto-complete</span> <a href="#attribute-form_auto-complete">19.252</a>, <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:convert-empty-to-null</span> <a href="#attribute-form_convert-empty-to-null">19.259</a>, <span class="Attribute">form:current-value</span> <a href="#attribute-form_current-value">19.262</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:dropdown</span> <a href="#attribute-form_dropdown">19.269</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:list-source</span> <a href="#attribute-form_list-source">19.285</a>, <span class="Attribute">form:list-source-type</span> <a href="#attribute-form_list-source-type">19.286</a>, <span class="Attribute">form:max-length</span> <a href="#attribute-form_max-length">19.288</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:size</span> <a href="#attribute-form_size">19.304</a>, <span class="Attribute">form:source-cell-range</span> <a href="#attribute-form_source-cell-range">19.305</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_combobox">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:combobox&gt;</span> element has the following child elements: <span class="Element">&lt;form:item&gt;</span> <a href="#element-form_item">13.5.12</a>, <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_12_form_item_"><span style="margin-right:0.127cm;">13.5.12</span></a><a id="__RefHeading__1416154_253892949"/><a id="element-form_item"/>&lt;form:item&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:item&gt;</span> element defines a list item for a <span class="Element">&lt;form:combobox&gt;</span> control.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:item&gt;</span> element is usable within the following element: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:item&gt;</span> element has the following attribute: <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;form:item&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:item&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a13_5_13_form_listbox_"><span style="margin-right:0.127cm;">13.5.13</span></a><a id="__RefHeading__1416156_253892949"/><a id="element-form_listbox"/>&lt;form:listbox&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:listbox&gt;</span> element defines an input control that allows a user to select one or more items from a list. It is an alternative representation for a group of radio buttons.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:listbox&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:listbox&gt;</span> element has the following attributes: <span class="Attribute">form:bound-column</span> <a href="#attribute-form_bound-column">19.254</a>, <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:dropdown</span> <a href="#attribute-form_dropdown">19.269</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:list-linkage-type</span> <a href="#attribute-form_list-linkage-type">19.284</a>, <span class="Attribute">form:list-source</span> <a href="#attribute-form_list-source">19.285</a>, <span class="Attribute">form:list-source-type</span> <a href="#attribute-form_list-source-type">19.286</a>, <span class="Attribute">form:multiple</span> <a href="#attribute-form_multiple">19.293</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:size</span> <a href="#attribute-form_size">19.304</a>, <span class="Attribute">form:source-cell-range</span> <a href="#attribute-form_source-cell-range">19.305</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:xforms-list-source</span> <a href="#attribute-form_xforms-list-source">19.318</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:listbox&gt;</span> element has the following child elements: <span class="Element">&lt;form:option&gt;</span> <a href="#element-form_option">13.5.14</a>, <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_14_form_option_"><span style="margin-right:0.127cm;">13.5.14</span></a><a id="__RefHeading__1416158_253892949"/><a id="element-form_option"/>&lt;form:option&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:option&gt;</span> element defines a list item for a <span class="Element">&lt;form:listbox&gt;</span> control.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:option&gt;</span> element is usable within the following element: <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:option&gt;</span> element has the following attributes: <span class="Attribute">form:current-selected</span> <a href="#attribute-form_current-selected">19.260</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:selected</span> <a href="#attribute-form_selected">19.303</a> and <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_option">19.316.5</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;form:option&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:option&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a13_5_15_form_button_"><span style="margin-right:0.127cm;">13.5.15</span></a><a id="__RefHeading__1416160_253892949"/><a id="element-form_button"/>&lt;form:button&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:button&gt;</span> element defines a button.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:button&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:button&gt;</span> element has the following attributes: <span class="Attribute">form:button-type</span> <a href="#attribute-form_button-type">19.255</a>, <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:default-button</span> <a href="#attribute-form_default-button">19.265</a>, <span class="Attribute">form:delay-for-repeat</span> <a href="#attribute-form_delay-for-repeat">19.266</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:focus-on-click</span> <a href="#attribute-form_focus-on-click">19.274</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:image-align</span> <a href="#attribute-form_image-align">19.278</a>, <span class="Attribute">form:image-data</span> <a href="#attribute-form_image-data">19.279</a>, <span class="Attribute">form:image-position</span> <a href="#attribute-form_image-position">19.280</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:toggle</span> <a href="#attribute-form_toggle">19.314</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_button">19.316.2</a>, <span class="Attribute">form:xforms-submission</span> <a href="#attribute-form_xforms-submission">19.319</a>, <span class="Attribute">office:target-frame</span> <a href="#attribute-office_target-frame">19.380</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-form_button">19.910.19</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:button&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_16_form_image_"><span style="margin-right:0.127cm;">13.5.16</span></a><a id="__RefHeading__1416162_253892949"/><a id="element-form_image"/>&lt;form:image&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:image&gt;</span> element defines a graphical button control.</p><p class="Note"><span class="Note_20_Label">Note:</span> HTML 4.01 only allows the button type to be “submit” for an image button. In OpenDocument, an image button can be of any type.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:image&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:image&gt;</span> element has the following attributes: <span class="Attribute">form:button-type</span> <a href="#attribute-form_button-type">19.255</a>, <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:image-data</span> <a href="#attribute-form_image-data">19.279</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_image">19.316.5</a>, <span class="Attribute">office:target-frame</span> <a href="#attribute-office_target-frame">19.380</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-form_image">19.910.21</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:image&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_17_form_checkbox_"><span style="margin-right:0.127cm;">13.5.17</span></a><a id="__RefHeading__1416164_253892949"/><a id="element-form_checkbox"/>&lt;form:checkbox&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:checkbox&gt;</span> element defines an on/off control. The control is on when the value of the <span class="Attribute">form:current-state</span> attribute associated with the control element is <span class="Attribute_20_Value">checked</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:checkbox&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a> and <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:checkbox&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:current-state</span> <a href="#attribute-form_current-state">19.261</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:image-align</span> <a href="#attribute-form_image-align">19.278</a>, <span class="Attribute">form:image-position</span> <a href="#attribute-form_image-position">19.280</a>, <span class="Attribute">form:is-tristate</span> <a href="#attribute-form_is-tristate">19.281</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:state</span> <a href="#attribute-form_state">19.307</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_checkbox">19.316.5</a>, <span class="Attribute">form:visual-effect</span> <a href="#attribute-form_visual-effect">19.317</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:checkbox&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_18_form_radio_"><span style="margin-right:0.127cm;">13.5.18</span></a><a id="__RefHeading__1416166_253892949"/><a id="element-form_radio"/>&lt;form:radio&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:radio&gt;</span> element defines a control which acts like a check box except that when multiple radio buttons belong to the same group they are mutually exclusive. When one button is on, all of the other buttons with the same name are off. If no radio button is defined to be initially on, it is undefined which radio button is initially on.</p><p class="Text_20_body">Radio buttons are defined to belong to the same group if they have the same control name, as specified by their <span class="Attribute">form:name</span> attribute. </p><p class="Text_20_body">If a group of radio buttons is bound to one database field, and a user selects any given button, the reference value of the selected radio button is written into its database field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:radio&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:radio&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:current-selected</span> <a href="#attribute-form_current-selected">19.260</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:image-align</span> <a href="#attribute-form_image-align">19.278</a>, <span class="Attribute">form:image-position</span> <a href="#attribute-form_image-position">19.280</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:selected</span> <a href="#attribute-form_selected">19.303</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_radio">19.316.5</a>, <span class="Attribute">form:visual-effect</span> <a href="#attribute-form_visual-effect">19.317</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:radio&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_19_form_frame_"><span style="margin-right:0.127cm;">13.5.19</span></a><a id="__RefHeading__1416168_253892949"/><a id="element-form_frame"/>&lt;form:frame&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:frame&gt;</span> element defines a frame in which controls may be visually arranged.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:frame&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:frame&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:for</span> <a href="#attribute-form_for">19.275</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:frame&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_20_form_image-frame_"><span style="margin-right:0.127cm;">13.5.20</span></a><a id="__RefHeading__1416170_253892949"/><a id="element-form_image-frame"/>&lt;form:image-frame&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:image-frame&gt;</span> element defines a graphical control. The control displays an image, whose location is described in the control.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:image-frame&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:image-frame&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:data-field</span> <a href="#attribute-form_data-field">19.263</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:image-data</span> <a href="#attribute-form_image-data">19.279</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:readonly</span> <a href="#attribute-form_readonly">19.301</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:image-frame&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_21_form_hidden_"><span style="margin-right:0.127cm;">13.5.21</span></a><a id="__RefHeading__1416172_253892949"/><a id="element-form_hidden"/>&lt;form:hidden&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:hidden&gt;</span> element defines a control that does not have a visual representation. </p><p class="Note"><span class="Note_20_Label">Note:</span> A control without visual representation can be used for information not displayed to the user but is submitted as part of a form.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:hidden&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:hidden&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_hidden">19.316.5</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:hidden&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_22_form_grid_"><span style="margin-right:0.127cm;">13.5.22</span></a><a id="__RefHeading__1416174_253892949"/><a id="element-form_grid"/>&lt;form:grid&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:grid&gt;</span> element defines a control that displays table data.</p><p class="Text_20_body">Each column in the grid is specified by a <span class="Element">&lt;form:column&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:grid&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:grid&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:grid&gt;</span> element has the following child elements: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a>, <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_23_form_column_"><span style="margin-right:0.127cm;">13.5.23</span></a><a id="__RefHeading__1416176_253892949"/><a id="element-form_column"/>&lt;form:column&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:column&gt;</span> element defines a column in a grid control.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:column&gt;</span> element is usable within the following element: <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:column&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:label</span> <a href="#attribute-form_label">19.282</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a> and <span class="Attribute">form:text-style-name</span> <a href="#attribute-form_text-style-name">19.312</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:column&gt;</span> element has the following child elements: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><h3 class="Heading_20_3"><a id="a13_5_24_form_value-range_"><span style="margin-right:0.127cm;">13.5.24</span></a><a id="__RefHeading__1416178_253892949"/><a id="element-form_value-range"/>&lt;form:value-range&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:value-range&gt;</span> element defines a control which allows the user to select a value from a number range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:value-range&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:value-range&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:delay-for-repeat</span> <a href="#attribute-form_delay-for-repeat">19.266</a>, <span class="Attribute">form:disabled</span> <a href="#attribute-form_disabled">19.268</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a>, <span class="Attribute">form:max-value</span> <a href="#attribute-form_max-value_element-form_value-range">19.289.4</a>, <span class="Attribute">form:min-value</span> <a href="#attribute-form_min-value_element-form_value-range">19.290.4</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">form:orientation</span> <a href="#attribute-form_orientation">19.297</a>, <span class="Attribute">form:page-step-size</span> <a href="#attribute-form_page-step-size">19.298</a>, <span class="Attribute">form:printable</span> <a href="#attribute-form_printable">19.299</a>, <span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a>, <span class="Attribute">form:step-size</span> <a href="#attribute-form_step-size">19.308</a>, <span class="Attribute">form:tab-index</span> <a href="#attribute-form_tab-index">19.310</a>, <span class="Attribute">form:tab-stop</span> <a href="#attribute-form_tab-stop">19.311</a>, <span class="Attribute">form:title</span> <a href="#attribute-form_title">19.313</a>, <span class="Attribute">form:value</span> <a href="#attribute-form_value_element-form_value-range">19.316.4</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:value-range&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h3 class="Heading_20_3"><a id="a13_5_25_form_generic-control_"><span style="margin-right:0.127cm;">13.5.25</span></a><a id="__RefHeading__1416180_253892949"/><a id="element-form_generic-control"/>&lt;form:generic-control&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;form:generic-control&gt;</span> element defines an implementation-defined placeholder for a generic control. The generic control can contain any properties and any events.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:generic-control&gt;</span> element is usable within the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:generic-control&gt;</span> element has the following attributes: <span class="Attribute">form:control-implementation</span> <a href="#attribute-form_control-implementation">19.258</a>, <span class="Attribute">form:id</span> <a href="#attribute-form_id">19.276</a>, <span class="Attribute">form:name</span> <a href="#attribute-form_name">19.294</a>, <span class="Attribute">xforms:bind</span> <a href="#attribute-xforms_bind">19.904</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:generic-control&gt;</span> element has the following child elements: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a> and <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><h2 class="Heading_20_2"><a id="a13_6Event_Listeners"><span style="margin-right:0.127cm;">13.6</span></a><a id="__RefHeading__1416182_253892949"/><a id="Events_section"/>Event Listeners</h2><p class="Text_20_body">Forms and form controls may have event listeners attached. The event listeners that are attached to a control are represented by an event listener element as described in section <a href="#Event_Tables">14.4</a>. This element is contained within form or form control elements.,</p><p class="Text_20_body">Section <a href="#attribute-script_event-name">19.429</a> contains guidelines for event names that may be used within forms and form controls. In addition to those, the events listed in Table <a href="#refTable8">9</a> may be used in forms and form controls.</p><p class="Table">Table <a id="refTable8"/>9 - Form control event names</p><table border="0" cellspacing="0" cellpadding="0" class="FormControlEventNames"><colgroup><col width="201"/><col width="135"/><col width="330"/></colgroup><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A1"><p class="Table_20_Heading">Value of <span class="Attribute">script:event-name</span> Attribute</p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A1"><p class="Table_20_Heading">Applies To</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C1"><p class="Table_20_Heading">Description of Event</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:approveaction</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Button or image.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs before an “on perform action” event takes place. Allows a user to veto an action.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:performaction</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Button or image.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when the control action is to be performed. The common interpretation of this event is “pressing the button”.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:textchange</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">All controls that allow text input.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a user changes the text in a control.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:itemstatechange</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Check box or radio button.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when the state of a check box or radio button changes.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:mousedrag</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">All controls.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a user presses and holds one of the mouse buttons and moves the mouse pointer onto a control.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:approvereset</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">same objects as for <span class="Attribute_20_Value_20_Instance">form:on-reset</span></p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs before an “on-reset” event takes place. Allows a user to veto a reset event.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:approveupdate</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">All controls that can be bound to a database field, that is controls that contain the data-field attribute.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs before an “on update” event takes place. Allows a user to veto an update.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:update</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">All controls that can be bound to a database field, that is controls that contain the data-field attribute.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when the content of a control that is bound to a database field is committed.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:load</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a form establishes a connection to the data source.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:startreload</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a form is about to refresh a data source connection.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:reload</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a form has refreshed a data source connection.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:startunload</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a form is about to drop a data source connection.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:unload</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a form has dropped a data source connection.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:confirmdelete</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a user is about to delete a record.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:approverowchang</span><span class="Attribute_20_Value_20_Instance">e</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs before an “on row change” event takes place. Allows a user to veto a change.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:rowchange</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs after changes to a row are complete.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:approvecursormove</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs before a form is moved to another row. Allows a user to veto a move.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:cursormove</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs after a form is moved to another row.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:supplyparameter</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a form asks for parameters to connect to a data source.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">form:error</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Table_20_Contents">Forms, combo boxes and list boxes.</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Table_20_Contents">Occurs when a database-related error occurs.</p></td></tr><tr><td style="text-align:left;width:1.8118in; " class="FormControlEventNames_A2"><p class="Text_20_body"><span class="Attribute_20_Value_20_Instance">form:adjust</span></p></td><td style="text-align:left;width:1.2188in; " class="FormControlEventNames_A2"><p class="Text_20_body">Value Range</p></td><td style="text-align:left;width:2.9694in; " class="FormControlEventNames_C2"><p class="Text_20_body">Occurs when the value of a Value Range element has been adjusted.</p></td></tr></table><h2 class="Heading_20_2"><a id="a13_7_form_properties_"><span style="margin-right:0.127cm;">13.7</span></a><a id="__RefHeading__1416184_253892949"/><a id="element-form_properties"/>&lt;form:properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;form:properties&gt;</span> element is a container for <span class="Element">&lt;form:property&gt;</span> and <span class="Element">&lt;form:list-property&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:properties&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:properties&gt;</span> element has the following child elements: <span class="Element">&lt;form:list-property&gt;</span> <a href="#element-form_list-property">13.9</a> and <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>.</p><h2 class="Heading_20_2"><a id="a13_8_form_property_"><span style="margin-right:0.127cm;">13.8</span></a><a id="__RefHeading__1416186_253892949"/><a id="element-form_property"/>&lt;form:property&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;form:property&gt;</span> element defines the name, type and value of a property.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:property&gt;</span> element is usable within the following element: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:property&gt;</span> element has the following attributes: <span class="Attribute">form:property-name</span> <a href="#attribute-form_property-name">19.300</a>, <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:property&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a13_9_form_list-property_"><span style="margin-right:0.127cm;">13.9</span></a><a id="__RefHeading__1416188_253892949"/><a id="element-form_list-property"/>&lt;form:list-property&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;form:list-property&gt;</span> element container for <span class="Element">&lt;form:list-value&gt;</span> elements. </p><p class="Text_20_body">The <span class="Element">&lt;form:list-property&gt;</span> element has an <span class="Attribute">office:value-type</span> attribute (<a href="#attribute-office_value-type">19.385</a>) that acts as a constraint on the attributes that may appear on its child <span class="Element">&lt;form:list-value&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:list-property&gt;</span> element is usable within the following element: <span class="Element">&lt;form:properties&gt;</span> <a href="#element-form_properties">13.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:list-property&gt;</span> element has the following attributes: <span class="Attribute">form:property-name</span> <a href="#attribute-form_property-name">19.300</a>, <span class="Attribute">office:value-type</span> <a href="#attribute-office_value-type">19.385</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:list-property&gt;</span> element has the following child elements: <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>.</p><h2 class="Heading_20_2"><a id="a13_10_form_list-value_"><span style="margin-right:0.127cm;">13.10</span></a><a id="__RefHeading__1416190_253892949"/><a id="element-form_list-value"/>&lt;form:list-value&gt;</h2><p class="Text_20_body">The list value element contains value attributes for the value type given in the containing <span class="Element">&lt;form:list-property&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;form:list-value&gt;</span> element is usable within the following element: <span class="Element">&lt;form:list-property&gt;</span> <a href="#element-form_list-property">13.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;form:list-value&gt;</span> element has the following attributes: <span class="Attribute">office:boolean-value</span> <a href="#attribute-office_boolean-value">19.367</a>, <span class="Attribute">office:currency</span> <a href="#attribute-office_currency">19.369</a>, <span class="Attribute">office:date-value</span> <a href="#attribute-office_date-value">19.370</a>, <span class="Attribute">office:string-value</span> <a href="#attribute-office_string-value">19.379</a>, <span class="Attribute">office:time-value</span> <a href="#attribute-office_time-value">19.382</a>, <span class="Attribute">office:value</span> <a href="#attribute-office_value">19.384</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;form:list-value&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a14Common_Content"><span style="margin-right:0.127cm;">14</span></a><a id="__RefHeading__1416192_253892949"/><a id="Common_Content"/>Common Content</h1><h2 class="Heading_20_2"><a id="a14_1_office_annotation_"><span style="margin-right:0.127cm;">14.1</span></a><a id="__RefHeading__1416194_253892949"/><a id="element-office_annotation"/>&lt;office:annotation&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:annotation&gt;</span> element specifies an OpenDocument annotation. The annotation's text is contained in <span class="Element">&lt;text:p&gt;</span> and <span class="Element">&lt;text:list&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:annotation&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:annotation&gt;</span> element has the following attributes: <span class="Attribute">draw:caption-point-x</span> <a href="#attribute-draw_caption-point-x">19.116</a>, <span class="Attribute">draw:caption-point-y</span> <a href="#attribute-draw_caption-point-y">19.117</a>, <span class="Attribute">draw:class-names</span> <a href="#attribute-draw_class-names">19.120</a>, <span class="Attribute">draw:corner-radius</span> <a href="#attribute-draw_corner-radius">19.127</a>, <span class="Attribute">draw:id</span> <a href="#attribute-draw_id_element-office_annotation">19.187.3</a>, <span class="Attribute">draw:layer</span> <a href="#attribute-draw_layer">19.189</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-office_annotation">19.197.28</a>, <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-office_annotation">19.219.24</a>, <span class="Attribute">draw:text-style-name</span> <a href="#attribute-draw_text-style-name">19.227</a>, <span class="Attribute">draw:transform</span> <a href="#attribute-draw_transform">19.228</a>, <span class="Attribute">draw:z-index</span> <a href="#attribute-draw_z-index">19.231</a>, <span class="Attribute">office:display</span> <a href="#attribute-office_display">19.374</a>, <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-office_annotation">19.376.6</a>, <span class="Attribute">presentation:class-names</span> <a href="#attribute-presentation_class-names">19.390</a>, <span class="Attribute">presentation:style-name</span> <a href="#attribute-presentation_style-name">19.422</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-office_annotation">19.539.9</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-office_annotation">19.571.11</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-office_annotation">19.573.7</a>, <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-office_annotation">19.577.7</a>, <span class="Attribute">table:end-cell-address</span> <a href="#attribute-table_end-cell-address">19.627</a>, <span class="Attribute">table:end-x</span> <a href="#attribute-table_end-x">19.632</a>, <span class="Attribute">table:end-y</span> <a href="#attribute-table_end-y">19.633</a>, <span class="Attribute">table:table-background</span> <a href="#attribute-table_table-background">19.728</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#attribute-text_anchor-page-number">19.753</a>, <span class="Attribute">text:anchor-type</span> <a href="#attribute-text_anchor-type">19.754</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:annotation&gt;</span> element has the following child elements: <span class="Element">&lt;dc:creator&gt;</span> <a href="#element-dc_creator">4.3.2.7</a>, <span class="Element">&lt;dc:date&gt;</span> <a href="#element-dc_date">4.3.2.10</a>, <span class="Element">&lt;meta:date-string&gt;</span> <a href="#element-meta_date-string">14.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a14_2_office_annotation-end_"><span style="margin-right:0.127cm;">14.2</span></a><a id="__RefHeading__1416196_253892949"/><a id="element-office_annotation-end"/>&lt;office:annotation-end&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;office:annotation-end&gt;</span> element may be used to define the end of a text range of document content that spans element boundaries. In that case, an <span class="Element">&lt;office:annotation&gt;</span> element shall precede the <span class="Element">&lt;office:annotation-end&gt;</span> element. Both elements shall have the same value for their <span class="Attribute">office:name</span> attribute.</p><p class="Text_20_body">The <span class="Element">&lt;office:annotation-end&gt;</span> element shall be preceded by an <span class="Element">&lt;office:annotation&gt;</span> element that has the same value for its <span class="Attribute">office:name</span> attribute as the <span class="Element">&lt;office:annotation-end&gt;</span> element.</p><p class="Text_20_body">An <span class="Element">&lt;office:annotation-end&gt;</span> element without a preceding <span class="Element">&lt;office:annotation&gt;</span> element that has the same name assigned is ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:annotation-end&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:ruby-base&gt;</span> <a href="#element-text_ruby-base">6.4.2</a> and <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:annotation-end&gt;</span> element has the following attribute: <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-office_annotation-end">19.376.7</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:annotation-end&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a14_3_meta_date-string_"><span style="margin-right:0.127cm;">14.3</span></a><a id="__RefHeading__1416198_253892949"/><a id="element-meta_date-string"/>&lt;meta:date-string&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;meta:date-string&gt;</span> element contains a date that is of type string and not a date type. This value is used only for display as entered. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;meta:date-string&gt;</span> element is usable within the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;meta:date-string&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;meta:date-string&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;meta:date-string&gt;</span> element has content of data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a14_4Event_Listener_Tables"><span style="margin-right:0.127cm;">14.4</span></a><a id="__RefHeading__1416202_253892949"/><a id="Event_Tables"/>Event Listener Tables</h2><h3 class="Heading_20_3"><a id="a14_4_1General"><span style="margin-right:0.127cm;">14.4.1</span></a><a id="__RefHeading__1416204_253892949"/>General</h3><p class="Text_20_body">Controls, images, text boxes, or an entire document can support events. An event binds the occurrence of a condition to an action that is executed if the condition arises.</p><p class="Text_20_body">Events are represented as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>All of the event elements that are associated with an object are located in an <span class="Element">&lt;office:event-listeners&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Each event-to-action association is recorded in one child element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Depending on the type of action that the event triggers, the following child elements are used:<span class="odfLiEnd"/> </p><ul><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a> element represents events that are bound to a macro or script.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a> element represents events that are bound to an action that is specific to a presentation.<span class="odfLiEnd"/> </p></li></ul></li></ul><h3 class="Heading_20_3"><a id="a14_4_2_script_event-listener_"><span style="margin-right:0.127cm;">14.4.2</span></a><a id="__RefHeading__1416206_253892949"/><a id="element-script_event-listener"/>&lt;script:event-listener&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;script:event-listener&gt;</span> element binds an event to a macro.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;script:event-listener&gt;</span> element is usable within the following element: <span class="Element">&lt;office:event-listeners&gt;</span> <a href="#element-office_event-listeners">10.3.19</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;script:event-listener&gt;</span> element has the following attributes: <span class="Attribute">script:event-name</span> <a href="#attribute-script_event-name">19.429</a>, <span class="Attribute">script:language</span> <a href="#attribute-script_language">19.430</a>, <span class="Attribute">script:macro-name</span> <a href="#attribute-script_macro-name">19.431</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-script_event-listener">19.910.27</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;script:event-listener&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a14_4_3Event_Types"><span style="margin-right:0.127cm;">14.4.3</span></a><a id="__RefHeading__1416208_253892949"/>Event Types</h3><p class="Text_20_body">Event types are implementation-defined. See <a href="#attribute-script_event-name">19.429</a>.</p><h3 class="Heading_20_3"><a id="a14_4_4Macro_Name_and_Location"><span style="margin-right:0.127cm;">14.4.4</span></a><a id="__RefHeading__1416210_253892949"/>Macro Name and Location</h3><p class="Text_20_body">Macro code for an event may be specified by either an <span class="Attribute">xlink:href</span> attribute as an IRI, or a <span class="Attribute">script:macro-name</span> attribute by name. Macro names and applicable IRI schemes are script language dependent. </p><h2 class="Heading_20_2"><a id="a14_5_math_math_"><span style="margin-right:0.127cm;">14.5</span></a><a id="__RefHeading__1416212_253892949"/><a id="element-math_math"/><a id="math_math"/>&lt;math:math&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;math:math&gt;</span> element serves as a container for content defined by the MathML 2.0 standard. See <a title="Mathematical Markup Language (MathML) Version 2.0 (Second Edition)" href="http://www.w3.org/TR/2003/REC-MathML2-20031021/">[MathML]</a>.</p><p class="Parent_20_Element_20_List">The <span class="Element">&lt;math:math&gt;</span> element is usable within the following elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a> and <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>.</p><h2 class="Heading_20_2"><a id="a14_6DDE_Connections"><span style="margin-right:0.127cm;">14.6</span></a><a id="__RefHeading__1416214_253892949"/><a id="DDE_Connections"/>DDE Connections</h2><h3 class="Heading_20_3"><a id="a14_6_1General"><span style="margin-right:0.127cm;">14.6.1</span></a><a id="__RefHeading__1416216_253892949"/>General</h3><p class="Text_20_body">A Dynamic Data Exchange (DDE) connection consists of parameters for a DDE target application, a file name, and a command string. A DDE connection also takes a parameter that specifies whether it will be updated automatically or only on the user's request. Every DDE connection shall be named.</p><p class="Text_20_body">All elements making use of DDE connections shall contain their content (or its presentation), so that documents using DDE can still be properly displayed on machines which do not support the DDE mechanism, or where the DDE target is not available. Consumers should preserve the DDE connection information even if they cannot make use of it.</p><p class="Note"><span class="Note_20_Label">Note:</span> DDE only is available on some operating systems. In order to create portable documents, authors are advised to use this feature in their documents with great care.</p><h3 class="Heading_20_3"><a id="a14_6_2_text_dde-connection-decls_"><span style="margin-right:0.127cm;">14.6.2</span></a><a id="__RefHeading__1416220_253892949"/><a id="element-text_dde-connection-decls"/>&lt;text:dde-connection-decls&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:dde-connection-decls&gt;</span> element is a container element for <span class="Element">&lt;text:dde-connection-decl&gt;</span> elements in text documents.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:dde-connection-decls&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:chart&gt;</span> <a href="#element-office_chart">3.8</a>, <span class="Element">&lt;office:drawing&gt;</span> <a href="#element-office_drawing">3.5</a>, <span class="Element">&lt;office:presentation&gt;</span> <a href="#element-office_presentation">3.6</a>, <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>, <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:dde-connection-decls&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:dde-connection-decls&gt;</span> element has the following child element: <span class="Element">&lt;text:dde-connection-decl&gt;</span> <a href="#element-text_dde-connection-decl">14.6.3</a>.</p><h3 class="Heading_20_3"><a id="a14_6_3_text_dde-connection-decl_"><span style="margin-right:0.127cm;">14.6.3</span></a><a id="__RefHeading__1416222_253892949"/><a id="element-text_dde-connection-decl"/>&lt;text:dde-connection-decl&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:dde-connection-decl&gt;</span> element defines a DDE connection for use in DDE text fields. Multiple DDE fields can refer to one DDE connection by using the same name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:dde-connection-decl&gt;</span> element is usable within the following element: <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:dde-connection-decl&gt;</span> element has the following attributes: <span class="Attribute">office:automatic-update</span> <a href="#attribute-office_automatic-update">19.366</a>, <span class="Attribute">office:dde-application</span> <a href="#attribute-office_dde-application">19.371</a>, <span class="Attribute">office:dde-item</span> <a href="#attribute-office_dde-item">19.372</a>, <span class="Attribute">office:dde-topic</span> <a href="#attribute-office_dde-topic">19.373</a> and <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-text_dde-connection-decl">19.376.10</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:dde-connection-decl&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a14_6_4_table_dde-link_"><span style="margin-right:0.127cm;">14.6.4</span></a><a id="__RefHeading__1416224_253892949"/><a id="element-table_dde-link"/>&lt;table:dde-link&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:dde-link&gt;</span> element contains DDE source data for use in spreadsheet formulas. It contains a <span class="Element">&lt;office:dde-source&gt;</span> element and a simple table element that may be used to cache the data of a DDE source. The table does not need a name and does not contain style information. Only the data contained in the cell attributes is used. The cells themselves remain empty.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:dde-link&gt;</span> element is usable within the following element: <span class="Element">&lt;table:dde-links&gt;</span> <a href="#element-table_dde-links">9.8</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:dde-link&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:dde-link&gt;</span> element has the following child elements: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><h3 class="Heading_20_3"><a id="a14_6_5_office_dde-source_"><span style="margin-right:0.127cm;">14.6.5</span></a><a id="__RefHeading__1416226_253892949"/><a id="element-office_dde-source"/>&lt;office:dde-source&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;office:dde-source&gt;</span> element defines a DDE connection. </p><p class="Text_20_body">If the element is a child element of a <span class="Element">&lt;table:table&gt;</span> element, the <span class="Element">&lt;office:dde-source&gt;</span> element specifies that the table is linked through DDE along the connection data. </p><p class="Text_20_body">If the element is a child element of a <span class="Element">&lt;text:section&gt;</span> element, the <span class="Element">&lt;office:dde-source&gt;</span> element specifies that the text section is linked through DDE along the connection data. </p><p class="Text_20_body">If the element is a child element of a <span class="Element">&lt;table:dde-link&gt;</span> element, the <span class="Element">&lt;office:dde-source&gt;</span> element specifies the connection data for a DDE link that can be used in spreadsheet formulas. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;office:dde-source&gt;</span> element is usable within the following elements: <span class="Element">&lt;table:dde-link&gt;</span> <a href="#element-table_dde-link">14.6.4</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> and <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;office:dde-source&gt;</span> element has the following attributes: <span class="Attribute">office:automatic-update</span> <a href="#attribute-office_automatic-update">19.366</a>, <span class="Attribute">office:conversion-mode</span> <a href="#attribute-office_conversion-mode">19.368</a>, <span class="Attribute">office:dde-application</span> <a href="#attribute-office_dde-application">19.371</a>, <span class="Attribute">office:dde-item</span> <a href="#attribute-office_dde-item">19.372</a>, <span class="Attribute">office:dde-topic</span> <a href="#attribute-office_dde-topic">19.373</a> and <span class="Attribute">office:name</span> <a href="#attribute-office_name_element-office_dde-source">19.376.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;office:dde-source&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a15SMIL_Animations"><span style="margin-right:0.127cm;">15</span></a><a id="__RefHeading__1416228_253892949"/><a id="SMIL_Animations"/>SMIL Animations</h1><h2 class="Heading_20_2"><a id="a15_1General"><span style="margin-right:0.127cm;">15.1</span></a><a id="__RefHeading__1416230_253892949"/>General</h2><p class="Text_20_body">This section specifies <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> based elements and attributes that can be used within the OpenDocument format for animation effects.</p><h2 class="Heading_20_2"><a id="a15_2Basic_Animation_Elements"><span style="margin-right:0.127cm;">15.2</span></a><a id="__RefHeading__1416232_253892949"/><a id="Basic_Animation_Elements"/>Basic Animation Elements</h2><h3 class="Heading_20_3"><a id="a15_2_1General"><span style="margin-right:0.127cm;">15.2.1</span></a><a id="__RefHeading__1416234_253892949"/>General </h3><p class="Text_20_body">The animation elements are based upon §3.5 and §12.5 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>, and section §19.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><h3 class="Heading_20_3"><a id="a15_2_2_anim_animate_"><span style="margin-right:0.127cm;">15.2.2</span></a><a id="__RefHeading__1416236_253892949"/><a id="element-anim_animate"/>&lt;anim:animate&gt;</h3><p class="Text_20_body"> See §3.5.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:animate&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:animate&gt;</span> element has the following attributes: <span class="Attribute">anim:formula</span> <a href="#attribute-anim_formula">19.6</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:accumulate</span> <a href="#attribute-smil_accumulate">19.433</a>, <span class="Attribute">smil:additive</span> <a href="#attribute-smil_additive">19.434</a>, <span class="Attribute">smil:attributeName</span> <a href="#attribute-smil_attributeName">19.435</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:by</span> <a href="#attribute-smil_by">19.438</a>, <span class="Attribute">smil:calcMode</span> <a href="#attribute-smil_calcMode">19.439</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:from</span> <a href="#attribute-smil_from">19.448</a>, <span class="Attribute">smil:keySplines</span> <a href="#attribute-smil_keySplines">19.449</a>, <span class="Attribute">smil:keyTimes</span> <a href="#attribute-smil_keyTimes">19.450</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a>, <span class="Attribute">smil:to</span> <a href="#attribute-smil_to">19.458</a> and <span class="Attribute">smil:values</span> <a href="#attribute-smil_values">19.460</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:animate&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a15_2_3_anim_animateTransform_"><span style="margin-right:0.127cm;">15.2.3</span></a><a id="__RefHeading__1416238_253892949"/><a id="element-anim_animateTransform"/>&lt;anim:animateTransform&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:animateTransform&gt;</span> element defines the transformation of an animation. It is based on the <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> <span class="Alien_20_Element">&lt;svg:animateTransform&gt;</span> element. See §19.2.14 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:animateTransform&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:animateTransform&gt;</span> element has the following attributes: <span class="Attribute">anim:formula</span> <a href="#attribute-anim_formula">19.6</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:accumulate</span> <a href="#attribute-smil_accumulate">19.433</a>, <span class="Attribute">smil:additive</span> <a href="#attribute-smil_additive">19.434</a>, <span class="Attribute">smil:attributeName</span> <a href="#attribute-smil_attributeName">19.435</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:by</span> <a href="#attribute-smil_by">19.438</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:from</span> <a href="#attribute-smil_from">19.448</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a>, <span class="Attribute">smil:to</span> <a href="#attribute-smil_to">19.458</a>, <span class="Attribute">smil:values</span> <a href="#attribute-smil_values">19.460</a> and <span class="Attribute">svg:type</span> <a href="#attribute-svg_type">19.561</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:animateTransform&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a15_2_4_anim_set_"><span style="margin-right:0.127cm;">15.2.4</span></a><a id="__RefHeading__1416240_253892949"/><a id="element-anim_set"/>&lt;anim:set&gt;</h3><p class="Text_20_body">See §3.5.2 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:set&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:set&gt;</span> element has the following attributes: <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:accumulate</span> <a href="#attribute-smil_accumulate">19.433</a>, <span class="Attribute">smil:additive</span> <a href="#attribute-smil_additive">19.434</a>, <span class="Attribute">smil:attributeName</span> <a href="#attribute-smil_attributeName">19.435</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a> and <span class="Attribute">smil:to</span> <a href="#attribute-smil_to">19.458</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:set&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a15_2_5_anim_animateMotion_"><span style="margin-right:0.127cm;">15.2.5</span></a><a id="__RefHeading__1416242_253892949"/><a id="element-anim_animateMotion"/>&lt;anim:animateMotion&gt;</h3><p class="Text_20_body"> See §19.2.12 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> and §3.5.3 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:animateMotion&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:animateMotion&gt;</span> element has the following attributes: <span class="Attribute">anim:formula</span> <a href="#attribute-anim_formula">19.6</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:accumulate</span> <a href="#attribute-smil_accumulate">19.433</a>, <span class="Attribute">smil:additive</span> <a href="#attribute-smil_additive">19.434</a>, <span class="Attribute">smil:attributeName</span> <a href="#attribute-smil_attributeName">19.435</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:by</span> <a href="#attribute-smil_by">19.438</a>, <span class="Attribute">smil:calcMode</span> <a href="#attribute-smil_calcMode">19.439</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:from</span> <a href="#attribute-smil_from">19.448</a>, <span class="Attribute">smil:keySplines</span> <a href="#attribute-smil_keySplines">19.449</a>, <span class="Attribute">smil:keyTimes</span> <a href="#attribute-smil_keyTimes">19.450</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a>, <span class="Attribute">smil:to</span> <a href="#attribute-smil_to">19.458</a>, <span class="Attribute">smil:values</span> <a href="#attribute-smil_values">19.460</a>, <span class="Attribute">svg:origin</span> <a href="#attribute-svg_origin">19.544</a> and <span class="Attribute">svg:path</span> <a href="#attribute-svg_path">19.548</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:animateMotion&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a15_2_6_anim_animateColor_"><span style="margin-right:0.127cm;">15.2.6</span></a><a id="__RefHeading__1416244_253892949"/><a id="element-anim_animateColor"/>&lt;anim:animateColor&gt;</h3><p class="Text_20_body">See §3.5.4 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:animateColor&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:animateColor&gt;</span> element has the following attributes: <span class="Attribute">anim:color-interpolation</span> <a href="#attribute-anim_color-interpolation">19.2</a>, <span class="Attribute">anim:color-interpolation-direction</span> <a href="#attribute-anim_color-interpolation-direction">19.3</a>, <span class="Attribute">anim:formula</span> <a href="#attribute-anim_formula">19.6</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:accumulate</span> <a href="#attribute-smil_accumulate">19.433</a>, <span class="Attribute">smil:additive</span> <a href="#attribute-smil_additive">19.434</a>, <span class="Attribute">smil:attributeName</span> <a href="#attribute-smil_attributeName">19.435</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:by</span> <a href="#attribute-smil_by">19.438</a>, <span class="Attribute">smil:calcMode</span> <a href="#attribute-smil_calcMode">19.439</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:from</span> <a href="#attribute-smil_from">19.448</a>, <span class="Attribute">smil:keySplines</span> <a href="#attribute-smil_keySplines">19.449</a>, <span class="Attribute">smil:keyTimes</span> <a href="#attribute-smil_keyTimes">19.450</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a>, <span class="Attribute">smil:to</span> <a href="#attribute-smil_to">19.458</a> and <span class="Attribute">smil:values</span> <a href="#attribute-smil_values">19.460</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:animateColor&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a15_2_7_anim_transitionFilter_"><span style="margin-right:0.127cm;">15.2.7</span></a><a id="__RefHeading__1416246_253892949"/><a id="element-anim_transitionFilter"/>&lt;anim:transitionFilter&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:transitionFilter&gt;</span> element is based on the <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> <span class="Alien_20_Element">&lt;smil:transitionFilter&gt;</span> element. See §12.5.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:transitionFilter&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:transitionFilter&gt;</span> element has the following attributes: <span class="Attribute">anim:formula</span> <a href="#attribute-anim_formula">19.6</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:accumulate</span> <a href="#attribute-smil_accumulate">19.433</a>, <span class="Attribute">smil:additive</span> <a href="#attribute-smil_additive">19.434</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:by</span> <a href="#attribute-smil_by">19.438</a>, <span class="Attribute">smil:calcMode</span> <a href="#attribute-smil_calcMode">19.439</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:direction</span> <a href="#attribute-smil_direction">19.441</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fadeColor</span> <a href="#attribute-smil_fadeColor">19.445</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:from</span> <a href="#attribute-smil_from">19.448</a>, <span class="Attribute">smil:mode</span> <a href="#attribute-smil_mode">19.451</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:subtype</span> <a href="#attribute-smil_subtype">19.456</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a>, <span class="Attribute">smil:to</span> <a href="#attribute-smil_to">19.458</a>, <span class="Attribute">smil:type</span> <a href="#attribute-smil_type">19.459</a> and <span class="Attribute">smil:values</span> <a href="#attribute-smil_values">19.460</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:transitionFilter&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a15_3Animation_Model_Attributes"><span style="margin-right:0.127cm;">15.3</span></a><a id="__RefHeading__1416248_253892949"/>Animation Model Attributes</h2><h3 class="Heading_20_3"><a id="a15_3_1General"><span style="margin-right:0.127cm;">15.3.1</span></a><a id="__RefHeading__1416250_253892949"/>General</h3><p class="Text_20_body">The animation model uses the same concepts and syntax as specified in §3 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><h3 class="Heading_20_3"><a id="a15_3_2Simple_Animation_Functions"><span style="margin-right:0.127cm;">15.3.2</span></a><a id="__RefHeading__1416252_253892949"/><a id="Simple_Animation_Functions"/>Simple Animation Functions</h3><p class="Text_20_body">Simplified animations can be specified using the <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> <span class="Attribute">smil:from</span>, <span class="Attribute">smil:to</span> and <span class="Attribute">smil:by</span> attributes. See §3.4.4 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><h2 class="Heading_20_2"><a id="a15_4Animation_Timing"><span style="margin-right:0.127cm;">15.4</span></a><a id="__RefHeading__1416254_253892949"/><a id="SMIL_Timing"/>Animation Timing</h2><h3 class="Heading_20_3"><a id="a15_4_1General"><span style="margin-right:0.127cm;">15.4.1</span></a><a id="__RefHeading__1416256_253892949"/>General</h3><p class="Text_20_body">Animation timing uses the same concepts and syntax as specified in §10 and §11 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><h3 class="Heading_20_3"><a id="a15_4_2_anim_par_"><span style="margin-right:0.127cm;">15.4.2</span></a><a id="__RefHeading__1416258_253892949"/><a id="element-anim_par"/>&lt;anim:par&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:par&gt;</span> element is a container of child animation nodes that have a common starting point.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:par&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:par&gt;</span> element has the following attributes: <span class="Attribute">anim:id</span> <a href="#attribute-anim_id">19.7</a>, <span class="Attribute">presentation:group-id</span> <a href="#attribute-presentation_group-id">19.397</a>, <span class="Attribute">presentation:master-element</span> <a href="#attribute-presentation_master-element">19.398</a>, <span class="Attribute">presentation:node-type</span> <a href="#attribute-presentation_node-type">19.402</a>, <span class="Attribute">presentation:preset-class</span> <a href="#attribute-presentation_preset-class">19.410</a>, <span class="Attribute">presentation:preset-id</span> <a href="#attribute-presentation_preset-id">19.411</a>, <span class="Attribute">presentation:preset-sub-type</span> <a href="#attribute-presentation_preset-sub-type">19.412</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:endsync</span> <a href="#attribute-smil_endsync">19.444</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:par&gt;</span> element has the following child elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><h3 class="Heading_20_3"><a id="a15_4_3_anim_seq_"><span style="margin-right:0.127cm;">15.4.3</span></a><a id="__RefHeading__1416260_253892949"/><a id="element-anim_seq"/>&lt;anim:seq&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:seq&gt;</span> element is a container for child animation nodes that start in a sequential fashion.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:seq&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:seq&gt;</span> element has the following attributes: <span class="Attribute">anim:id</span> <a href="#attribute-anim_id">19.7</a>, <span class="Attribute">presentation:group-id</span> <a href="#attribute-presentation_group-id">19.397</a>, <span class="Attribute">presentation:master-element</span> <a href="#attribute-presentation_master-element">19.398</a>, <span class="Attribute">presentation:node-type</span> <a href="#attribute-presentation_node-type">19.402</a>, <span class="Attribute">presentation:preset-class</span> <a href="#attribute-presentation_preset-class">19.410</a>, <span class="Attribute">presentation:preset-id</span> <a href="#attribute-presentation_preset-id">19.411</a>, <span class="Attribute">presentation:preset-sub-type</span> <a href="#attribute-presentation_preset-sub-type">19.412</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:endsync</span> <a href="#attribute-smil_endsync">19.444</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:seq&gt;</span> element has the following child elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><h3 class="Heading_20_3"><a id="a15_4_4_anim_iterate_"><span style="margin-right:0.127cm;">15.4.4</span></a><a id="__RefHeading__1416262_253892949"/><a id="element-anim_iterate"/>&lt;anim:iterate&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:iterate&gt;</span> element defines a parallel time container. The animation effects are applied to the child objects of the target element. The effects for each child object are started one after another, where the delay between the start of the effects of two subsequent children is specified by the <span class="Attribute">anim:iterate-interval</span> attribute. <a href="#attribute-anim_iterate-interval">19.8</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:iterate&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:iterate&gt;</span> element has the following attributes: <span class="Attribute">anim:id</span> <a href="#attribute-anim_id">19.7</a>, <span class="Attribute">anim:iterate-interval</span> <a href="#attribute-anim_iterate-interval">19.8</a>, <span class="Attribute">anim:iterate-type</span> <a href="#attribute-anim_iterate-type">19.9</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">presentation:group-id</span> <a href="#attribute-presentation_group-id">19.397</a>, <span class="Attribute">presentation:master-element</span> <a href="#attribute-presentation_master-element">19.398</a>, <span class="Attribute">presentation:node-type</span> <a href="#attribute-presentation_node-type">19.402</a>, <span class="Attribute">presentation:preset-class</span> <a href="#attribute-presentation_preset-class">19.410</a>, <span class="Attribute">presentation:preset-id</span> <a href="#attribute-presentation_preset-id">19.411</a>, <span class="Attribute">presentation:preset-sub-type</span> <a href="#attribute-presentation_preset-sub-type">19.412</a>, <span class="Attribute">smil:accelerate</span> <a href="#attribute-smil_accelerate">19.432</a>, <span class="Attribute">smil:autoReverse</span> <a href="#attribute-smil_autoReverse">19.436</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:decelerate</span> <a href="#attribute-smil_decelerate">19.440</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:endsync</span> <a href="#attribute-smil_endsync">19.444</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:iterate&gt;</span> element has the following child elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><h2 class="Heading_20_2"><a id="a15_5_anim_audio_"><span style="margin-right:0.127cm;">15.5</span></a><a id="__RefHeading__1416264_253892949"/><a id="element-anim_audio"/>&lt;anim:audio&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;anim:audio&gt;</span> element is based on the <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> <span class="Alien_20_Element">&lt;smil:audio&gt;</span> element. It specifies the playback of audio streams during an animation. See §7.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:audio&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:audio&gt;</span> element has the following attributes: <span class="Attribute">anim:audio-level</span> <a href="#attribute-anim_audio-level">19.4</a>, <span class="Attribute">anim:id</span> <a href="#attribute-anim_id">19.7</a>, <span class="Attribute">presentation:group-id</span> <a href="#attribute-presentation_group-id">19.397</a>, <span class="Attribute">presentation:master-element</span> <a href="#attribute-presentation_master-element">19.398</a>, <span class="Attribute">presentation:node-type</span> <a href="#attribute-presentation_node-type">19.402</a>, <span class="Attribute">presentation:preset-class</span> <a href="#attribute-presentation_preset-class">19.410</a>, <span class="Attribute">presentation:preset-id</span> <a href="#attribute-presentation_preset-id">19.411</a>, <span class="Attribute">presentation:preset-sub-type</span> <a href="#attribute-presentation_preset-sub-type">19.412</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:dur</span> <a href="#attribute-smil_dur">19.442</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:fill</span> <a href="#attribute-smil_fill">19.446</a>, <span class="Attribute">smil:fillDefault</span> <a href="#attribute-smil_fillDefault">19.447</a>, <span class="Attribute">smil:repeatCount</span> <a href="#attribute-smil_repeatCount">19.452</a>, <span class="Attribute">smil:repeatDur</span> <a href="#attribute-smil_repeatDur">19.453</a>, <span class="Attribute">smil:restart</span> <a href="#attribute-smil_restart">19.454</a>, <span class="Attribute">smil:restartDefault</span> <a href="#attribute-smil_restartDefault">19.455</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-anim_audio">19.910.2</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:audio&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a15_6Animation_Command_Elements"><span style="margin-right:0.127cm;">15.6</span></a><a id="__RefHeading__1416266_253892949"/><a id="SMIL_Special"/>Animation Command Elements</h2><h3 class="Heading_20_3"><a id="a15_6_1_anim_command_"><span style="margin-right:0.127cm;">15.6.1</span></a><a id="__RefHeading__1416268_253892949"/><a id="element-anim_command"/>&lt;anim:command&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:command&gt;</span> element specifies an animation command. </p><p class="Note"><span class="Note_20_Label">Note:</span> See <a href="#attribute-anim_command">19.5</a> for details about the element's usage in presentation documents.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:command&gt;</span> element is usable within the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:command&gt;</span> element has the following attributes: <span class="Attribute">anim:command</span> <a href="#attribute-anim_command">19.5</a>, <span class="Attribute">anim:id</span> <a href="#attribute-anim_id">19.7</a>, <span class="Attribute">anim:sub-item</span> <a href="#attribute-anim_sub-item">19.11</a>, <span class="Attribute">presentation:group-id</span> <a href="#attribute-presentation_group-id">19.397</a>, <span class="Attribute">presentation:master-element</span> <a href="#attribute-presentation_master-element">19.398</a>, <span class="Attribute">presentation:node-type</span> <a href="#attribute-presentation_node-type">19.402</a>, <span class="Attribute">presentation:preset-class</span> <a href="#attribute-presentation_preset-class">19.410</a>, <span class="Attribute">presentation:preset-id</span> <a href="#attribute-presentation_preset-id">19.411</a>, <span class="Attribute">presentation:preset-sub-type</span> <a href="#attribute-presentation_preset-sub-type">19.412</a>, <span class="Attribute">smil:begin</span> <a href="#attribute-smil_begin">19.437</a>, <span class="Attribute">smil:end</span> <a href="#attribute-smil_end">19.443</a>, <span class="Attribute">smil:targetElement</span> <a href="#attribute-smil_targetElement">19.457</a> and <span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:command&gt;</span> element has the following child element: <span class="Element">&lt;anim:param&gt;</span> <a href="#element-anim_param">15.6.2</a>.</p><h3 class="Heading_20_3"><a id="a15_6_2_anim_param_"><span style="margin-right:0.127cm;">15.6.2</span></a><a id="__RefHeading__1416270_253892949"/><a id="element-anim_param"/>&lt;anim:param&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;anim:param&gt;</span> element specifies a parameter for an <span class="Element">&lt;anim:command&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;anim:param&gt;</span> element is usable within the following element: <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;anim:param&gt;</span> element has the following attributes: <span class="Attribute">anim:name</span> <a href="#attribute-anim_name">19.10</a> and <span class="Attribute">anim:value</span> <a href="#attribute-anim_value">19.12</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;anim:param&gt;</span> element has no child elements.</p><h1 class="Heading_20_1"><a id="a16Styles"><span style="margin-right:0.127cm;">16</span></a><a id="__RefHeading__1416272_253892949"/><a id="Styles"/>Styles</h1><h2 class="Heading_20_2"><a id="a16_1General"><span style="margin-right:0.127cm;">16.1</span></a><a id="__RefHeading__1416274_253892949"/>General</h2><p class="Text_20_body">Objects in an office document may have formatting properties. A formatting property influences the visual representation of an object.</p><p class="Text_20_body">In the OpenDocument format, formatting properties are stored in styles. </p><p class="Text_20_body">There are two reasons for using styles to store formatting properties:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>Format information is separated from document content.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>Styles enable consistent formatting and changing of formatting for objects subject to styles. <span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">Styles and font face declarations are referenced by their <span class="Attribute">style:name</span> attribute. A referenced style or font face declaration should be defined in the same file as the reference, or in styles.xml. </p><h2 class="Heading_20_2"><a id="a16_2_style_style_"><span style="margin-right:0.127cm;">16.2</span></a><a id="__RefHeading__1416276_253892949"/><a id="element-style_style"/>&lt;style:style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:style&gt;</span> element represents styles.</p><p class="Text_20_body">Styles defined by the <span class="Element">&lt;style:style&gt;</span> element use a hierarchical style model. The <span class="Element">&lt;style:style&gt;</span> element supports inheritance of formatting properties by a style from its parent style. A parent style is specified by the <span class="Attribute">style:parent-style-name</span> attribute on a <span class="Element">&lt;style:style&gt;</span> element. </p><p class="Text_20_body">The determination of the value of a formatting property begins with any style that is specified by an element. If the formatting property is present in that style, its value is used.</p><p class="Text_20_body">If that style does not specify a value for that formatting property and it has a parent style, the value of the formatting element is taken from the parent style, if present.</p><p class="Text_20_body">If the parent style does not have a value for the formatting property, the search for the formatting property value continues up parent styles until either the formatting property has been found or a style is found with no parent style.</p><p class="Text_20_body">If a search of the parent styles of a style does not result in a value for a formatting property, the determination of its value depends on the style family and the element to which a style is applied.</p><p class="Text_20_body">For styles with family <span class="Attribute_20_Value">text</span> which are applied to elements which are contained in another element that specifies a style with family <span class="Attribute_20_Value">text</span>, the search continues within the <span class="Attribute_20_Value">text</span> style that is applied to the nearest ancestor element that specifies a style with family <span class="Attribute_20_Value">text</span>, and continues in its parent styles. </p><p class="Text_20_body">For styles with family <span class="Attribute_20_Value">text</span> which are applied to elements which are contained in a paragraph element <a href="#character-content">6.1.1</a>, the search continues within the <span class="Attribute_20_Value">paragraph</span> style that is applied to the paragraph element, and continues in its parent styles. </p><p class="Text_20_body">For styles with family <span class="Attribute_20_Value">paragraph</span> which are applied to paragraph elements which are contained in a drawing shape or a chart element, the search continues within the <span class="Attribute_20_Value">graphic</span>, <span class="Attribute_20_Value">presentation</span> or <span class="Attribute_20_Value">chart</span> style that is applied to the drawing object or chart element, and continues in its parent styles.</p><p class="Text_20_body">For styles with family <span class="Attribute_20_Value">paragraph</span> which are applied to paragraph elements which are contained in a table cell, the search continues within the <span class="Attribute_20_Value">table-cell</span> style that is applied to the table-cell, and continues in its parent  styles. If a value for the formatting property has not been found, the search continues as defined for styles with family <span class="Attribute_20_Value">table-cell</span>. </p><p class="Text_20_body">For styles with family <span class="Attribute_20_Value">table-cell</span> which are applied to a table cell, the search continues with the style specified by the <span class="Attribute">table:default-cell-style-name</span> attribute <a href="#attribute-table_default-cell-style-name">19.615</a> of the table cell's <span class="Element">&lt;table:table-row&gt;</span> parent element, if present, and then with the style specified by the <span class="Attribute">table:default-cell-style-name</span> attribute of the <span class="Element">&lt;table:table-column&gt;</span> element associated with the table cell. </p><p class="Text_20_body">In all other cases, or if a value for the formatting property has not been found by any of the family specific rules, a default style <a href="#element-style_default-style">16.4</a> that has the same family as the style initially declared sets the value. If there is no value specified in that default style, an implementation-dependent value is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:style&gt;</span> element has the following attributes: <span class="Attribute">style:auto-update</span> <a href="#attribute-style_auto-update">19.463</a>, <span class="Attribute">style:class</span> <a href="#attribute-style_class">19.466</a>, <span class="Attribute">style:data-style-name</span> <a href="#attribute-style_data-style-name_element-style_style">19.469.3</a>, <span class="Attribute">style:default-outline-level</span> <a href="#attribute-style_default-outline-level">19.470</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:family</span> <a href="#attribute-style_family">19.476</a>, <span class="Attribute">style:list-level</span> <a href="#attribute-style_list-level">19.495</a>, <span class="Attribute">style:list-style-name</span> <a href="#attribute-style_list-style-name">19.496</a>, <span class="Attribute">style:master-page-name</span> <a href="#attribute-style_master-page-name">19.497</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-style_style">19.498.2</a>, <span class="Attribute">style:next-style-name</span> <a href="#attribute-style_next-style-name_element-style_style">19.499.3</a>, <span class="Attribute">style:parent-style-name</span> <a href="#attribute-style_parent-style-name">19.506</a> and <span class="Attribute">style:percentage-data-style-name</span> <a href="#attribute-style_percentage-data-style-name">19.507</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:style&gt;</span> element has the following child elements: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>, <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>, <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:ruby-properties&gt;</span> <a href="#element-style_ruby-properties">17.10</a>, <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>, <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>, <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>, <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>, <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>, <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h2 class="Heading_20_2"><a id="a16_3_style_map_"><span style="margin-right:0.127cm;">16.3</span></a><a id="__RefHeading__1416278_253892949"/><a id="element-style_map"/>&lt;style:map&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:map&gt;</span> element represents a condition, which if met, results in the mapping of a style. A style that contains one or more mappings is called a conditional style. Each condition is represented by a unique <span class="Element">&lt;style:map&gt;</span> element.</p><p class="Text_20_body">Conditional styles are supported by:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>paragraph styles contained in text documents<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>table cell styles contained in spreadsheets<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>data styles<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:map&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>, <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:map&gt;</span> element has the following attributes: <span class="Attribute">style:apply-style-name</span> <a href="#attribute-style_apply-style-name">19.462</a>, <span class="Attribute">style:base-cell-address</span> <a href="#attribute-style_base-cell-address">19.464</a> and <span class="Attribute">style:condition</span> <a href="#attribute-style_condition">19.468</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:map&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_4_style_default-style_"><span style="margin-right:0.127cm;">16.4</span></a><a id="__RefHeading__1416280_253892949"/><a id="element-style_default-style"/>&lt;style:default-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:default-style&gt;</span> element represents default styles. A default style specifies default formatting properties for a style family. These defaults are used if a formatting property is neither specified by an automatic nor a common style. Default styles exist for all style families that are represented by the <span class="Element">&lt;style:style&gt;</span> element specified by the <span class="Attribute">style:family</span> attribute <a href="#attribute-style_family">19.476</a>.</p><p class="Text_20_body">An OpenDocument document should contain the default styles of the style families for which are used in common or automatic styles in the document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:default-style&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:default-style&gt;</span> element has the following attributes: <span class="Attribute">style:family</span> <a href="#attribute-style_family">19.476</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:default-style&gt;</span> element has the following child elements: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>, <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>, <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:ruby-properties&gt;</span> <a href="#element-style_ruby-properties">17.10</a>, <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>, <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>, <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>, <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>, <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>, <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h2 class="Heading_20_2"><a id="a16_5_style_page-layout_"><span style="margin-right:0.127cm;">16.5</span></a><a id="__RefHeading__1416282_253892949"/><a id="element-style_page-layout"/>&lt;style:page-layout&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:page-layout&gt;</span> element represents the styles that specify the formatting properties of a page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:page-layout&gt;</span> element is usable within the following element: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:page-layout&gt;</span> element has the following attributes: <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-style_page-layout">19.498.2</a> and <span class="Attribute">style:page-usage</span> <a href="#attribute-style_page-usage">19.505</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:page-layout&gt;</span> element has the following child elements: <span class="Element">&lt;style:footer-style&gt;</span> <a href="#element-style_footer-style">16.7</a>, <span class="Element">&lt;style:header-style&gt;</span> <a href="#element-style_header-style">16.6</a> and <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><h2 class="Heading_20_2"><a id="a16_6_style_header-style_"><span style="margin-right:0.127cm;">16.6</span></a><a id="__RefHeading__1416284_253892949"/><a id="element-style_header-style"/>&lt;style:header-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:header-style&gt;</span> element specifies the formatting properties for a header element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:header-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-page-layout&gt;</span> <a href="#element-style_default-page-layout">16.8</a> and <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout">16.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:header-style&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:header-style&gt;</span> element has the following child element: <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>.</p><h2 class="Heading_20_2"><a id="a16_7_style_footer-style_"><span style="margin-right:0.127cm;">16.7</span></a><a id="__RefHeading__1416286_253892949"/><a id="element-style_footer-style"/>&lt;style:footer-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:footer-style&gt;</span> element specifies the formatting properties for a footer element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:footer-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-page-layout&gt;</span> <a href="#element-style_default-page-layout">16.8</a> and <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout">16.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:footer-style&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:footer-style&gt;</span> element has the following child element: <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>.</p><h2 class="Heading_20_2"><a id="a16_8_style_default-page-layout_"><span style="margin-right:0.127cm;">16.8</span></a><a id="__RefHeading__1416288_253892949"/><a id="element-style_default-page-layout"/>&lt;style:default-page-layout&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:default-page-layout&gt;</span> element specifies default formatting properties for page layouts. These defaults are used if a formatting property is not specified in a <span class="Element">&lt;style:page-layout-properties&gt;</span> element. <a href="#element-style_page-layout-properties">17.2</a> </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:default-page-layout&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:default-page-layout&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:default-page-layout&gt;</span> element has the following child elements: <span class="Element">&lt;style:footer-style&gt;</span> <a href="#element-style_footer-style">16.7</a>, <span class="Element">&lt;style:header-style&gt;</span> <a href="#element-style_header-style">16.6</a> and <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><h2 class="Heading_20_2"><a id="a16_9_style_master-page_"><span style="margin-right:0.127cm;">16.9</span></a><a id="__RefHeading__1416290_253892949"/><a id="element-style_master-page"/>&lt;style:master-page&gt;</h2><p class="Text_20_body">In text and spreadsheet documents, the <span class="Element">&lt;style:master-page&gt;</span> element contains the content of headers and footers. For these types of documents, consumers may generate a sequence of pages by making use of a single master page or a set of master pages.</p><p class="Text_20_body">In drawing and presentation documents, the <span class="Element">&lt;style:master-page&gt;</span> element is used to define master pages as common backgrounds for drawing pages. Each drawing page is directly linked to one master page, which is specified by the <span class="Attribute">draw:master-page-name</span> attribute of the drawing pages style.</p><p class="Text_20_body">Master pages are contained in the <span class="Element">&lt;office:master-styles&gt;</span> element.</p><p class="Text_20_body">All documents shall contain at least one master page element.</p><p class="Text_20_body">If a text or spreadsheet document is displayed in a paged layout, master pages are used to generate a sequence of pages containing the document content. When a page is created, an empty page is generated with the properties of the master page and the static content of the master page. The body of the page is then filled with content. A single master pages can be used to created multiple pages within a document.</p><p class="Text_20_body">In text and spreadsheet documents, a master page can be assigned to paragraph and table styles using a <span class="Attribute">style:master-page-name</span> attribute. Each time the paragraph or table style is applied to text, a page break is inserted before the paragraph or table. A page that starts at the page break position uses the specified master page.</p><p class="Text_20_body">In drawings and presentations, master pages can be assigned to drawing pages using a <span class="Attribute">style:parent-style-name</span> attribute.</p><p class="Note"><span class="Note_20_Label">Note:</span> The OpenDocument paging methodology differs significantly from the methodology used in <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. In XSL, headers and footers are contained within page sequences that also contain the document content. In the OpenDocument format, headers and footers are contained in page styles. With either approach, the content of headers and footers can be changed or omitted without affecting the document content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:master-page&gt;</span> element is usable within the following element: <span class="Element">&lt;office:master-styles&gt;</span> <a href="#element-office_master-styles">3.15.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:master-page&gt;</span> element has the following attributes: <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-style_master-page">19.219.27</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-style_master-page">19.498.2</a>, <span class="Attribute">style:next-style-name</span> <a href="#attribute-style_next-style-name_element-style_master-page">19.499.2</a> and <span class="Attribute">style:page-layout-name</span> <a href="#attribute-style_page-layout-name">19.504</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:master-page&gt;</span> element has the following child elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a>, <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:layer-set&gt;</span> <a href="#element-draw_layer-set">10.2.2</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><h2 class="Heading_20_2"><a id="a16_10_style_header_"><span style="margin-right:0.127cm;">16.10</span></a><a id="__RefHeading__1416292_253892949"/><a id="element-style_header"/>&lt;style:header&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:header&gt;</span> element represents the content of a header in a <span class="Element">&lt;style:master-page&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:header&gt;</span> element is usable within the following element: <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:header&gt;</span> element has the following attribute: <span class="Attribute">style:display</span> <a href="#attribute-style_display">19.471</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:header&gt;</span> element has the following child elements: <span class="Element">&lt;style:region-center&gt;</span> <a href="#element-style_region-center">16.15</a>, <span class="Element">&lt;style:region-left&gt;</span> <a href="#element-style_region-left">16.14</a>, <span class="Element">&lt;style:region-right&gt;</span> <a href="#element-style_region-right">16.16</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>, <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a>, <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a16_11_style_footer_"><span style="margin-right:0.127cm;">16.11</span></a><a id="__RefHeading__1416294_253892949"/><a id="element-style_footer"/>&lt;style:footer&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:footer&gt;</span> element represents the content of a footer in a <span class="Element">&lt;style:master-page&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:footer&gt;</span> element is usable within the following element: <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:footer&gt;</span> element has the following attribute: <span class="Attribute">style:display</span> <a href="#attribute-style_display">19.471</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:footer&gt;</span> element has the following child elements: <span class="Element">&lt;style:region-center&gt;</span> <a href="#element-style_region-center">16.15</a>, <span class="Element">&lt;style:region-left&gt;</span> <a href="#element-style_region-left">16.14</a>, <span class="Element">&lt;style:region-right&gt;</span> <a href="#element-style_region-right">16.16</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-</span><span class="Element">file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>, <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a>, <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a16_12_style_header-left_"><span style="margin-right:0.127cm;">16.12</span></a><a id="__RefHeading__1416296_253892949"/><a id="element-style_header-left"/>&lt;style:header-left&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:header-left&gt;</span> element represents the content for a header for a left page, if different from the right page in a <span class="Element">&lt;style:master-page&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:header-left&gt;</span> element is usable within the following element: <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:header-left&gt;</span> element has the following attribute: <span class="Attribute">style:display</span> <a href="#attribute-style_display">19.471</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:header-left&gt;</span> element has the following child elements: <span class="Element">&lt;style:region-center&gt;</span> <a href="#element-style_region-center">16.15</a>, <span class="Element">&lt;style:region-left&gt;</span> <a href="#element-style_region-left">16.14</a>, <span class="Element">&lt;style:region-right&gt;</span> <a href="#element-style_region-right">16.16</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>, <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a>, <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a16_13_style_footer-left_"><span style="margin-right:0.127cm;">16.13</span></a><a id="__RefHeading__1416298_253892949"/><a id="element-style_footer-left"/>&lt;style:footer-left&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:footer-left&gt;</span> element represents the content for a footer for a left page, if different from the right page for a <span class="Element">&lt;style:master-page&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:footer-left&gt;</span> element is usable within the following element: <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:footer-left&gt;</span> element has the following attribute: <span class="Attribute">style:display</span> <a href="#attribute-style_display">19.471</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:footer-left&gt;</span> element has the following child elements: <span class="Element">&lt;style:region-center&gt;</span> <a href="#element-style_region-center">16.15</a>, <span class="Element">&lt;style:region-left&gt;</span> <a href="#element-style_region-left">16.14</a>, <span class="Element">&lt;style:region-right&gt;</span> <a href="#element-style_region-right">16.16</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a>, <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>, <span class="Element">&lt;text:dde-connection-decls&gt;</span> <a href="#element-text_dde-connection-decls">14.6.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:sequence-decls&gt;</span> <a href="#element-text_sequence-decls">7.4.11</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>, <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>, <span class="Element">&lt;text:user-field-decls&gt;</span> <a href="#element-text_user-field-decls">7.4.7</a>, <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a> and <span class="Element">&lt;text:variable-decls&gt;</span> <a href="#element-text_variable-decls">7.4.2</a>.</p><h2 class="Heading_20_2"><a id="a16_14_style_region-left_"><span style="margin-right:0.127cm;">16.14</span></a><a id="__RefHeading__1416300_253892949"/><a id="element-style_region-left"/>&lt;style:region-left&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:region-left&gt;</span> element specifies a left-aligned portion of a header or footer. That region may contain a sequence of <span class="Element">&lt;text:p&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:region-left&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:region-left&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:region-left&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a16_15_style_region-center_"><span style="margin-right:0.127cm;">16.15</span></a><a id="__RefHeading__1416302_253892949"/><a id="element-style_region-center"/>&lt;style:region-center&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:region-center&gt;</span> element specifies a center-aligned portion of a header or footer. That region may contain a sequence of <span class="Element">&lt;text:p&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:region-center&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:region-center&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:region-center&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a16_16_style_region-right_"><span style="margin-right:0.127cm;">16.16</span></a><a id="__RefHeading__1416304_253892949"/><a id="element-style_region-right"/>&lt;style:region-right&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:region-right&gt;</span> element specifies a right-aligned portion of a header or footer. That region may contain a sequence of <span class="Element">&lt;text:p&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:region-right&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:region-right&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:region-right&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a16_17_presentation_notes_"><span style="margin-right:0.127cm;">16.17</span></a><a id="__RefHeading__1416306_253892949"/><a id="element-presentation_notes"/>&lt;presentation:notes&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;presentation:notes&gt;</span> element defines a notes page. A notes page contains a preview of a drawing page and additional graphic shapes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:notes&gt;</span> element is usable within the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:notes&gt;</span> element has the following attributes: <span class="Attribute">draw:style-name</span> <a href="#attribute-draw_style-name_element-presentation_notes">19.219.25</a>, <span class="Attribute">presentation:use-date-time-name</span> <a href="#attribute-presentation_use-date-time-name">19.424</a>, <span class="Attribute">presentation:use-footer-</span><span class="Attribute">name</span> <a href="#attribute-presentation_use-footer-name">19.425</a>, <span class="Attribute">presentation:use-header-name</span> <a href="#attribute-presentation_use-header-name">19.426</a> and <span class="Attribute">style:page-layout-name</span> <a href="#attribute-style_page-layout-name">19.504</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:notes&gt;</span> element has the following child elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>.</p><h2 class="Heading_20_2"><a id="a16_18_table_table-template_"><span style="margin-right:0.127cm;">16.18</span></a><a id="__RefHeading__1416308_253892949"/><a id="element-table_table-template"/>&lt;table:table-template&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;table:table-template&gt;</span> element represents a set of references to table cell styles that specify the formatting to be used when creating a table.</p><p class="Text_20_body">If more than one table cell style reference is applicable to a cell, the first style that is applicable is chosen in the following order:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>First Column <span class="Element">&lt;table:first-column&gt;</span> <a href="#element-table_first-column">16.19.4</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Last Column <span class="Element">&lt;</span><span class="Element">table:last-column&gt;</span> <a href="#element-table_last-column">16.19.5</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>First Row <span class="Element">&lt;table:first-row&gt;</span> <a href="#element-table_first-row">16.19.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Last Row <span class="Element">&lt;table:last-row&gt;</span> <a href="#element-table_last-row">16.19.3</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Even rows <span class="Element">&lt;table:even-rows&gt;</span> <a href="#element-table_even-rows">16.19.7</a>, odd rows <span class="Element">&lt;table:odd-rows&gt;</span> <a href="#element-table_odd-rows">16.19.8</a> (Banded Rows)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Even columns <span class="Element">&lt;table:even-columns&gt;</span> <a href="#element-table_even-columns">16.19.9</a>, odd columns <span class="Element">&lt;table:odd-columns&gt;</span> <a href="#element-table_odd-columns">16.19.10</a> (Banded Columns)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Body <span class="Element">&lt;table:body&gt;</span> <a href="#element-table_body">16.19.6</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Table templates are contained in a <span class="Element">&lt;office:styles&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:table-template&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:table-template&gt;</span> element has the following attributes: <span class="Attribute">table:first-row-end-column</span> <a href="#attribute-table_first-row-end-column">19.640</a>, <span class="Attribute">table:first-row-start-column</span> <a href="#attribute-table_first-row-start-column">19.641</a>, <span class="Attribute">table:last-row-end-column</span> <a href="#attribute-table_last-row-end-column">19.659</a>, <span class="Attribute">table:last-row-start-column</span> <a href="#attribute-table_last-row-start-column">19.661</a> and <span class="Attribute">table:name</span> <a href="#attribute-table_name_element-table_table-template">19.673.14</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:table-template&gt;</span> element has the following child elements: <span class="Element">&lt;table:background&gt;</span> <a href="#element-table_background">16.20</a>, <span class="Element">&lt;table:body&gt;</span> <a href="#element-table_body">16.19.6</a>, <span class="Element">&lt;table:even-columns&gt;</span> <a href="#element-table_even-columns">16.19.9</a>, <span class="Element">&lt;table:even-rows&gt;</span> <a href="#element-table_even-rows">16.19.7</a>, <span class="Element">&lt;table:first-column&gt;</span> <a href="#element-table_first-column">16.19.4</a>, <span class="Element">&lt;table:first-row&gt;</span> <a href="#element-table_first-row">16.19.2</a>, <span class="Element">&lt;table:last-column&gt;</span> <a href="#element-table_last-column">16.19.5</a>, <span class="Element">&lt;table:last-row&gt;</span> <a href="#element-table_last-row">16.19.3</a>, <span class="Element">&lt;table:odd-columns&gt;</span> <a href="#element-table_odd-columns">16.19.10</a> and <span class="Element">&lt;table:odd-rows&gt;</span> <a href="#element-table_odd-rows">16.19.8</a>.</p><h2 class="Heading_20_2"><a id="a16_19Cell_Styles"><span style="margin-right:0.127cm;">16.19</span></a><a id="__RefHeading__1416310_253892949"/>Cell Styles</h2><h3 class="Heading_20_3"><a id="a16_19_1General"><span style="margin-right:0.127cm;">16.19.1</span></a><a id="__RefHeading__1416312_253892949"/>General</h3><p class="Text_20_body">The cell styles applied in a table are based on the position of cells in a table. </p><h3 class="Heading_20_3"><a id="a16_19_2_table_first-row_"><span style="margin-right:0.127cm;">16.19.2</span></a><a id="__RefHeading__1416314_253892949"/><a id="element-table_first-row"/><a id="table_template_row_and_column_styles"/>&lt;table:first-row&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:first-row&gt;</span> element specifies a cell style that shall be applied to the first row of a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:first-row&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:first-row&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_first-row">19.726.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:first-row&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_3_table_last-row_"><span style="margin-right:0.127cm;">16.19.3</span></a><a id="__RefHeading__1416316_253892949"/><a id="element-table_last-row"/>&lt;table:last-row&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:last-row&gt;</span> element specifies a cell style that shall be applied to the last row of a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:last-row&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:last-row&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_last-row">19.726.10</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:last-row&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_4_table_first-column_"><span style="margin-right:0.127cm;">16.19.4</span></a><a id="__RefHeading__1416318_253892949"/><a id="element-table_first-column"/>&lt;table:first-column&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:first-column&gt;</span> element specifies a cell style that shall be applied to the first table column in a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:first-column&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:first-column&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_first-column">19.726.7</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:first-column&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_5_table_last-column_"><span style="margin-right:0.127cm;">16.19.5</span></a><a id="__RefHeading__1416320_253892949"/><a id="element-table_last-column"/>&lt;table:last-column&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:last-column&gt;</span> element specifies a cell style that shall be applied to the last table column in a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:last-column&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:last-column&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_last-column">19.726.9</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:last-column&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_6_table_body_"><span style="margin-right:0.127cm;">16.19.6</span></a><a id="__RefHeading__1416322_253892949"/><a id="element-table_body"/>&lt;table:body&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:body&gt;</span> element specifies styles for cells that are not governed by other specified styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:body&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:body&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_body">19.726.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:body&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_7_table_even-rows_"><span style="margin-right:0.127cm;">16.19.7</span></a><a id="__RefHeading__1416324_253892949"/><a id="element-table_even-rows"/>&lt;table:even-rows&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:even-rows&gt;</span> element specifies styles to be applied to even rows in a table. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:even-rows&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:even-rows&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_even-rows">19.726.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:even-rows&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_8_table_odd-rows_"><span style="margin-right:0.127cm;">16.19.8</span></a><a id="__RefHeading__1416326_253892949"/><a id="element-table_odd-rows"/>&lt;table:odd-rows&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:odd-rows&gt;</span> element specifies styles to be applied to odd rows in a table. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:odd-rows&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:odd-rows&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_odd-rows">19.726.12</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:odd-rows&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_9_table_even-columns_"><span style="margin-right:0.127cm;">16.19.9</span></a><a id="__RefHeading__1416328_253892949"/><a id="element-table_even-columns"/>&lt;table:even-columns&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:even-columns&gt;</span> element specifies styles to be applied to even columns in a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:even-columns&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:even-columns&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_even-columns">19.726.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:even-columns&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_19_10_table_odd-columns_"><span style="margin-right:0.127cm;">16.19.10</span></a><a id="__RefHeading__1416330_253892949"/><a id="element-table_odd-columns"/>&lt;table:odd-columns&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;table:odd-columns&gt;</span> element specifies styles to be applied to odd columns in a table. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:odd-columns&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:odd-columns&gt;</span> element has the following attributes: <span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a> and <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_odd-columns">19.726.11</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:odd-columns&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_20_table_background_"><span style="margin-right:0.127cm;">16.20</span></a><a id="__RefHeading__1416332_253892949"/><a id="element-table_background"/>&lt;table:background&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;table:background&gt;</span> element specifies a table style that provides a background to a table that is visible if all or part of the table is transparent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;table:background&gt;</span> element is usable within the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;table:background&gt;</span> element has the following attribute: <span class="Attribute">table:style-name</span> <a href="#attribute-table_style-name_element-table_background">19.726.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;table:background&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_21_style_font-face_"><span style="margin-right:0.127cm;">16.21</span></a><a id="__RefHeading__1416334_253892949"/><a id="element-style_font-face"/>&lt;style:font-face&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:font-face&gt;</span> element represents a font face declaration which documents the properties of a font used in a document.</p><p class="Text_20_body">OpenDocument font face declarations directly correspond to the <span class="Misc_20_Source">@font-face</span> font description of <a title="Cascading Style Sheets, level 2" href="http://www.w3.org/TR/1998/REC-CSS2-19980512">[CSS2]</a> (see §15.3.1) and the <span class="Alien_20_Element">&lt;font-face&gt;</span> element of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> (see §20.8.3).</p><p class="Text_20_body">OpenDocument font face declarations may have an unique name. This name can be used inside styles (as an attribute of <span class="Element">&lt;style:text-properties&gt;</span> element) as value of the <span class="Attribute">style:font-name</span> attribute to select a font face declaration. If a font face declaration is referenced by name, the font matching algorithms for selecting a font declaration based on the font-family, font-style, font-variant, font-weight and font-size descriptors are not used but the referenced font face declaration is used directly. (See §15.5 <a title="Cascading Style Sheets, level 2" href="http://www.w3.org/TR/1998/REC-CSS2-19980512">[CSS2]</a>)</p><p class="Text_20_body">Consumers should implement the CSS2 font matching algorithm with the OpenDocument font face extensions. They may implement variations of the CSS2 font matching algorithm. They may implement a font matching based only on the font face declarations, that is, a font matching that is not applied to every character independently but only once for each font face declaration. (See §15.5 <a title="Cascading Style Sheets, level 2" href="http://www.w3.org/TR/1998/REC-CSS2-19980512">[CSS2]</a>)</p><p class="Text_20_body">Font face declarations support the font descriptor attributes and elements described in §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:font-face&gt;</span> element is usable within the following element: <span class="Element">&lt;office:font-face-decls&gt;</span> <a href="#element-office_font-face-decls">3.14</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:font-face&gt;</span> element has the following attributes: <span class="Attribute">style:font-adornments</span> <a href="#attribute-style_font-adornments">19.478</a>, <span class="Attribute">style:font-charset</span> <a href="#attribute-style_font-charset">19.479</a>, <span class="Attribute">style:font-family-generic</span> <a href="#attribute-style_font-family-generic">19.480</a>, <span class="Attribute">style:font-pitch</span> <a href="#attribute-style_font-pitch">19.481</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-style_font-face">19.498.3</a>, <span class="Attribute">svg:accent-height</span> <a href="#attribute-svg_accent-height">19.519</a>, <span class="Attribute">svg:alphabetic</span> <a href="#attribute-svg_alphabetic">19.520</a>, <span class="Attribute">svg:ascent</span> <a href="#attribute-svg_ascent">19.521</a>, <span class="Attribute">svg:bbox</span> <a href="#attribute-svg_bbox">19.522</a>, <span class="Attribute">svg:cap-height</span> <a href="#attribute-svg_cap-height">19.523</a>, <span class="Attribute">svg:descent</span> <a href="#attribute-svg_descent">19.527</a>, <span class="Attribute">svg:font-family</span> <a href="#attribute-svg_font-family">19.528</a>, <span class="Attribute">svg:font-size</span> <a href="#attribute-svg_font-size">19.529</a>, <span class="Attribute">svg:font-stretch</span> <a href="#attribute-svg_font-stretch">19.530</a>, <span class="Attribute">svg:font-style</span> <a href="#attribute-svg_font-style">19.531</a>, <span class="Attribute">svg:font-variant</span> <a href="#attribute-svg_font-variant">19.532</a>, <span class="Attribute">svg:font-weight</span> <a href="#attribute-svg_font-weight">19.533</a>, <span class="Attribute">svg:hanging</span> <a href="#attribute-svg_hanging">19.538</a>, <span class="Attribute">svg:ideographic</span> <a href="#attribute-svg_ideographic">19.540</a>, <span class="Attribute">svg:mathematical</span> <a href="#attribute-svg_mathematical">19.541</a>, <span class="Attribute">svg:overline-position</span> <a href="#attribute-svg_overline-position">19.545</a>, <span class="Attribute">svg:overline-</span><span class="Attribute">thickness</span> <a href="#attribute-svg_overline-thickness">19.546</a>, <span class="Attribute">svg:panose-1</span> <a href="#attribute-svg_panose-1">19.547</a>, <span class="Attribute">svg:slope</span> <a href="#attribute-svg_slope">19.552</a>, <span class="Attribute">svg:stemh</span> <a href="#attribute-svg_stemh">19.554</a>, <span class="Attribute">svg:stemv</span> <a href="#attribute-svg_stemv">19.555</a>, <span class="Attribute">svg:strikethrough-position</span> <a href="#attribute-svg_strikethrough-position">19.558</a>, <span class="Attribute">svg:strikethrough-thickness</span> <a href="#attribute-svg_strikethrough-thickness">19.559</a>, <span class="Attribute">svg:underline-position</span> <a href="#attribute-svg_underline-position">19.562</a>, <span class="Attribute">svg:underline-thickness</span> <a href="#attribute-svg_underline-thickness">19.563</a>, <span class="Attribute">svg:unicode-range</span> <a href="#attribute-svg_unicode-range">19.564</a>, <span class="Attribute">svg:units-per-em</span> <a href="#attribute-svg_units-per-em">19.565</a>, <span class="Attribute">svg:v-alphabetic</span> <a href="#attribute-svg_v-alphabetic">19.566</a>, <span class="Attribute">svg:v-hanging</span> <a href="#attribute-svg_v-hanging">19.567</a>, <span class="Attribute">svg:v-ideographic</span> <a href="#attribute-svg_v-ideographic">19.568</a>, <span class="Attribute">svg:v-mathematical</span> <a href="#attribute-svg_v-mathematical">19.569</a>, <span class="Attribute">svg:widths</span> <a href="#attribute-svg_widths">19.572</a> and <span class="Attribute">svg:x-height</span> <a href="#attribute-svg_x-height">19.576</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:font-face&gt;</span> element has the following child elements: <span class="Element">&lt;svg:definition-src&gt;</span> <a href="#element-svg_definition-src">16.25</a> and <span class="Element">&lt;svg:font-face-src&gt;</span> <a href="#element-svg_font-face-src">16.22</a>.</p><h2 class="Heading_20_2"><a id="a16_22_svg_font-face-src_"><span style="margin-right:0.127cm;">16.22</span></a><a id="__RefHeading__1416336_253892949"/><a id="element-svg_font-face-src"/>&lt;svg:font-face-src&gt;</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:font-face-src&gt;</span> element is usable within the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:font-face-src&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:font-face-src&gt;</span> element has the following child elements: <span class="Element">&lt;svg:font-face-name&gt;</span> <a href="#element-svg_font-face-name">16.23</a> and <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>.</p><h2 class="Heading_20_2"><a id="a16_23_svg_font-face-name_"><span style="margin-right:0.127cm;">16.23</span></a><a id="__RefHeading__1416338_253892949"/><a id="element-svg_font-face-name"/>&lt;svg:font-face-name&gt;</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:font-face-name&gt;</span> element is usable within the following element: <span class="Element">&lt;svg:font-face-src&gt;</span> <a href="#element-svg_font-face-src">16.22</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:font-face-name&gt;</span> element has the following attribute: <span class="Attribute">svg:name</span> <a href="#attribute-svg_name">19.542</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:font-face-name&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_24_svg_font-face-uri_"><span style="margin-right:0.127cm;">16.24</span></a><a id="__RefHeading__1416340_253892949"/><a id="element-svg_font-face-uri"/>&lt;svg:font-face-uri&gt;</h2><p class="Text_20_body">See § 20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:font-face-uri&gt;</span> element is usable within the following element: <span class="Element">&lt;svg:font-face-src&gt;</span> <a href="#element-svg_font-face-src">16.22</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:font-face-uri&gt;</span> element has the following attributes: <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-svg_font-face-uri">19.910.30</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:font-face-uri&gt;</span> element has the following child element: <span class="Element">&lt;svg:font-face-format&gt;</span> <a href="#element-svg_font-face-format">16.26</a>.</p><h2 class="Heading_20_2"><a id="a16_25_svg_definition-src_"><span style="margin-right:0.127cm;">16.25</span></a><a id="__RefHeading__1416342_253892949"/><a id="element-svg_definition-src"/>&lt;svg:definition-src&gt;</h2><p class="Text_20_body">See § 20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:definition-src&gt;</span> element is usable within the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:definition-src&gt;</span> element has the following attributes: <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-svg_definition-src">19.910.29</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:definition-src&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_26_svg_font-face-format_"><span style="margin-right:0.127cm;">16.26</span></a><a id="__RefHeading__1416344_253892949"/><a id="element-svg_font-face-format"/>&lt;svg:font-face-format&gt;</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:font-face-format&gt;</span> element is usable within the following element: <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:font-face-format&gt;</span> element has the following attribute: <span class="Attribute">svg:string</span> <a href="#attribute-svg_string">19.560</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:font-face-format&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_27Data_Styles"><span style="margin-right:0.127cm;">16.27</span></a><a id="__RefHeading__1416346_253892949"/><a id="Data_Style"/>Data Styles</h2><h3 class="Heading_20_3"><a id="a16_27_1General"><span style="margin-right:0.127cm;">16.27.1</span></a><a id="__RefHeading__1416348_253892949"/>General</h3><p class="Text_20_body">Data styles specify the styles to be applied to defined data types for display.</p><p class="Text_20_body">Data styles shall not specify two <span class="Element">&lt;number:text&gt;</span> elements in sequence as part of a data style.</p><h3 class="Heading_20_3"><a id="a16_27_2_number_number-style_"><span style="margin-right:0.127cm;">16.27.2</span></a><a id="__RefHeading__1416350_253892949"/><a id="element-number_number-style"/>&lt;number:number-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:number-style&gt;</span> element is a container for elements that define a style for decimal numbers.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:number-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:number-style&gt;</span> element has the following attributes: <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_number-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:number-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:fraction&gt;</span> <a href="#element-number_fraction">16.27.6</a>, <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>, <span class="Element">&lt;number:scientific-number&gt;</span> <a href="#element-number_scientific-number">16.27.5</a>, <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_3_number_number_"><span style="margin-right:0.127cm;">16.27.3</span></a><a id="__RefHeading__1416352_253892949"/><a id="element-number_number"/>&lt;number:number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:number&gt;</span> element specifies the display formatting properties for a decimal number.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:number&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a> and <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:number&gt;</span> element has the following attributes: <span class="Attribute">number:decimal-places</span> <a href="#attribute-number_decimal-places_element-number_number">19.343.2</a>, <span class="Attribute">number:decimal-replacement</span> <a href="#attribute-number_decimal-replacement">19.344</a>, <span class="Attribute">number:display-factor</span> <a href="#attribute-number_display-factor">19.346</a>, <span class="Attribute">number:grouping</span> <a href="#attribute-number_grouping">19.348</a> and <span class="Attribute">number:min-integer-digits</span> <a href="#attribute-number_min-integer-digits">19.352</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:number&gt;</span> element has the following child element: <span class="Element">&lt;number:embedded-text&gt;</span> <a href="#element-number_embedded-text">16.27.4</a>.</p><h3 class="Heading_20_3"><a id="a16_27_4_number_embedded-text_"><span style="margin-right:0.127cm;">16.27.4</span></a><a id="__RefHeading__1416354_253892949"/><a id="element-number_embedded-text"/>&lt;number:embedded-text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:embedded-text&gt;</span> element specifies text that is displayed at one specific position within a number.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:embedded-text&gt;</span> element is usable within the following element: <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:embedded-text&gt;</span> element has the following attribute: <span class="Attribute">number:position</span> <a href="#attribute-number_position">19.354</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;number:embedded-text&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:embedded-text&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a16_27_5_number_scientific-number_"><span style="margin-right:0.127cm;">16.27.5</span></a><a id="__RefHeading__1416356_253892949"/><a id="element-number_scientific-number"/>&lt;number:scientific-number&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:scientific-number&gt;</span> element specifies the display formatting properties for a number style that should be displayed in scientific format.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:scientific-number&gt;</span> element is usable within the following element: <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:scientific-number&gt;</span> element has the following attributes: <span class="Attribute">number:decimal-places</span> <a href="#attribute-number_decimal-places_element-number_scientific-number">19.343.4</a>, <span class="Attribute">number:grouping</span> <a href="#attribute-number_grouping">19.348</a>, <span class="Attribute">number:min-exponent-digits</span> <a href="#attribute-number_min-exponent-digits">19.351</a> and <span class="Attribute">number:min-integer-digits</span> <a href="#attribute-number_min-integer-digits">19.352</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:scientific-number&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_6_number_fraction_"><span style="margin-right:0.127cm;">16.27.6</span></a><a id="__RefHeading__1416358_253892949"/><a id="element-number_fraction"/>&lt;number:fraction&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:fraction&gt;</span> element specifies the display formatting properties for a number style that should be displayed as a fraction.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:fraction&gt;</span> element is usable within the following element: <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:fraction&gt;</span> element has the following attributes: <span class="Attribute">number:denominator-value</span> <a href="#attribute-number_denominator-value">19.345</a>, <span class="Attribute">number:grouping</span> <a href="#attribute-number_grouping">19.348</a>, <span class="Attribute">number:min-denominator-digits</span> <a href="#attribute-number_min-denominator-digits">19.350</a>, <span class="Attribute">number:min-integer-digits</span> <a href="#attribute-number_min-integer-digits">19.352</a> and <span class="Attribute">number:min-numerator-digits</span> <a href="#attribute-number_min-numerator-digits">19.353</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:fraction&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_7_number_currency-style_"><span style="margin-right:0.127cm;">16.27.7</span></a><a id="__RefHeading__1416360_253892949"/><a id="element-number_currency-style"/>&lt;number:currency-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:currency-style&gt;</span> element specifies the style for currency values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:currency-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:currency-style&gt;</span> element has the following attributes: <span class="Attribute">number:automatic-order</span> <a href="#attribute-number_automatic-order">19.340</a>, <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_currency-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:currency-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:currency-symbol&gt;</span> <a href="#element-number_currency-symbol">16.27.8</a>, <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>, <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_8_number_currency-symbol_"><span style="margin-right:0.127cm;">16.27.8</span></a><a id="__RefHeading__1416362_253892949"/><a id="element-number_currency-symbol"/>&lt;number:currency-symbol&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:currency-symbol&gt;</span> element specifies whether a currency symbol is displayed in a currency style.</p><p class="Text_20_body">The content of this element is the text that is displayed as the currency symbol. If the element is empty or contains white space characters only, the default currency symbol for the currency style or the language and country of the currency style is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:currency-symbol&gt;</span> element is usable within the following element: <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:currency-symbol&gt;</span> element has the following attributes: <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a> and <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;number:currency-symbol&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:currency-symbol&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a16_27_9_number_percentage-style_"><span style="margin-right:0.127cm;">16.27.9</span></a><a id="__RefHeading__1416364_253892949"/><a id="element-number_percentage-style"/>&lt;number:percentage-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:percentage-style&gt;</span> element specifies the style for percentage values.</p><p class="Text_20_body">A <span class="Element">&lt;number:percentage-style&gt;</span> element should have <span class="Element">&lt;number:text&gt;</span> child element whose character data contains a “%” (U+0025, PERCENT SIGN) character.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:percentage-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:percentage-style&gt;</span> element has the following attributes: <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_percentage-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:percentage-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>, <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_10_number_date-style_"><span style="margin-right:0.127cm;">16.27.10</span></a><a id="__RefHeading__1416366_253892949"/><a id="element-number_date-style"/>&lt;number:date-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:date-style&gt;</span> element specifies a style for date values.</p><p class="Text_20_body">This element can contain <span class="Emphasis">one</span> instance of each of the following elements: <span class="Element">&lt;number:day&gt;</span>, <span class="Element">&lt;number:month&gt;</span>, <span class="Element">&lt;number:year&gt;</span>, <span class="Element">&lt;number:era&gt;</span>, <span class="Element">&lt;number:day-of-week&gt;</span>, <span class="Element">&lt;number:week-of-year&gt;</span>, <span class="Element">&lt;number:quarter&gt;</span>, <span class="Element">&lt;number:hours&gt;</span>, <span class="Element">&lt;number:minutes&gt;</span>, <span class="Element">&lt;number:seconds&gt;</span>, and <span class="Element">&lt;number:am-pm&gt;</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:date-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:date-style&gt;</span> element has the following attributes: <span class="Attribute">number:automatic-order</span> <a href="#attribute-number_automatic-order">19.340</a>, <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:format-source</span> <a href="#attribute-number_format-source">19.347</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_date-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:date-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:am-pm&gt;</span> <a href="#element-number_am-pm">16.27.22</a>, <span class="Element">&lt;number:day&gt;</span> <a href="#element-number_day">16.27.11</a>, <span class="Element">&lt;number:day-of-week&gt;</span> <a href="#element-number_day-of-week">16.27.15</a>, <span class="Element">&lt;number:era&gt;</span> <a href="#element-number_era">16.27.14</a>, <span class="Element">&lt;number:hours&gt;</span> <a href="#element-number_hours">16.27.19</a>, <span class="Element">&lt;number:minutes&gt;</span> <a href="#element-number_minutes">16.27.20</a>, <span class="Element">&lt;number:month&gt;</span> <a href="#element-number_month">16.27.12</a>, <span class="Element">&lt;number:quarter&gt;</span> <a href="#element-number_quarter">16.27.17</a>, <span class="Element">&lt;number:seconds&gt;</span> <a href="#element-number_seconds">16.27.21</a>, <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;number:week-of-year&gt;</span> <a href="#element-number_week-of-year">16.27.16</a>, <span class="Element">&lt;number:year&gt;</span> <a href="#element-number_year">16.27.13</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_11_number_day_"><span style="margin-right:0.127cm;">16.27.11</span></a><a id="__RefHeading__1416368_253892949"/><a id="element-number_day"/>&lt;number:day&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:day&gt;</span> element specifies a day of a month in a date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:day&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:day&gt;</span> element has the following attributes: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a> and <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_day">19.358.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:day&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_12_number_month_"><span style="margin-right:0.127cm;">16.27.12</span></a><a id="__RefHeading__1416370_253892949"/><a id="element-number_month"/>&lt;number:month&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:month&gt;</span> element specifies a month in a date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:month&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:month&gt;</span> element has the following attributes: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a>, <span class="Attribute">number:possessive-form</span> <a href="#attribute-number_possessive-form">19.355</a>, <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_month">19.358.7</a> and <span class="Attribute">number:textual</span> <a href="#attribute-number_textual">19.359</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:month&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_13_number_year_"><span style="margin-right:0.127cm;">16.27.13</span></a><a id="__RefHeading__1416372_253892949"/><a id="element-number_year"/>&lt;number:year&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:year&gt;</span> element specifies a year in a date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:year&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:year&gt;</span> element has the following attributes: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a> and <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_year">19.358.10</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:year&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_14_number_era_"><span style="margin-right:0.127cm;">16.27.14</span></a><a id="__RefHeading__1416374_253892949"/><a id="element-number_era"/>&lt;number:era&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:era&gt;</span> element specifies an era in which a year is counted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:era&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:era&gt;</span> element has the following attributes: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a> and <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_era">19.358.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:era&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_15_number_day-of-week_"><span style="margin-right:0.127cm;">16.27.15</span></a><a id="__RefHeading__1416376_253892949"/><a id="element-number_day-of-week"/>&lt;number:day-of-week&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:day-of-week&gt;</span> element specifies a day of a week in a date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:day-of-week&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:day-of-week&gt;</span> element has the following attributes: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a> and <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_day-of-week">19.358.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:day-of-week&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_16_number_week-of-year_"><span style="margin-right:0.127cm;">16.27.16</span></a><a id="__RefHeading__1416378_253892949"/><a id="element-number_week-of-year"/>&lt;number:week-of-year&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:week-of-year&gt;</span> element specifies a week of a year in a date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:week-of-year&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:week-of-year&gt;</span> element has the following attribute: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:week-of-year&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_17_number_quarter_"><span style="margin-right:0.127cm;">16.27.17</span></a><a id="__RefHeading__1416380_253892949"/><a id="element-number_quarter"/>&lt;number:quarter&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:quarter&gt;</span> element specifies a quarter of the year in a date.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:quarter&gt;</span> element is usable within the following element: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:quarter&gt;</span> element has the following attributes: <span class="Attribute">number:calendar</span> <a href="#attribute-number_calendar">19.341</a> and <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_quarter">19.358.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:quarter&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_18_number_time-style_"><span style="margin-right:0.127cm;">16.27.18</span></a><a id="__RefHeading__1416382_253892949"/><a id="element-number_time-style"/>&lt;number:time-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:time-style&gt;</span> element specifies a style for time values.</p><p class="Text_20_body">This element can contain <span class="Emphasis">one</span> instance of any of the following elements: <span class="Element">&lt;number:hours&gt;</span>, <span class="Element">&lt;number:minutes&gt;</span>, <span class="Element">&lt;number:seconds&gt;</span> and <span class="Element">&lt;number:am-pm&gt;</span>.</p><p class="Text_20_body">The <span class="Element">&lt;number:time-style&gt;</span> element can also contain <span class="Element">&lt;number:text&gt;</span> elements, which display additional text. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:time-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:time-style&gt;</span> element has the following attributes: <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:format-source</span> <a href="#attribute-number_format-source">19.347</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">number:truncate-on-overflow</span> <a href="#attribute-number_truncate-on-overflow">19.365</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_time-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:time-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:am-pm&gt;</span> <a href="#element-number_am-pm">16.27.22</a>, <span class="Element">&lt;number:hours&gt;</span> <a href="#element-number_hours">16.27.19</a>, <span class="Element">&lt;number:minutes&gt;</span> <a href="#element-number_minutes">16.27.20</a>, <span class="Element">&lt;number:seconds&gt;</span> <a href="#element-number_seconds">16.27.21</a>, <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_19_number_hours_"><span style="margin-right:0.127cm;">16.27.19</span></a><a id="__RefHeading__1416384_253892949"/><a id="element-number_hours"/>&lt;number:hours&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:hours&gt;</span> element specifies whether hours are displayed as part of a date or time.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:hours&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:hours&gt;</span> element has the following attribute: <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_hours">19.358.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:hours&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_20_number_minutes_"><span style="margin-right:0.127cm;">16.27.20</span></a><a id="__RefHeading__1416386_253892949"/><a id="element-number_minutes"/>&lt;number:minutes&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:minutes&gt;</span> element specifies whether minutes are displayed as part of a date or time.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:minutes&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:minutes&gt;</span> element has the following attribute: <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_minutes">19.358.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:minutes&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_21_number_seconds_"><span style="margin-right:0.127cm;">16.27.21</span></a><a id="__RefHeading__1416388_253892949"/><a id="element-number_seconds"/>&lt;number:seconds&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:seconds&gt;</span> element specifies whether seconds are displayed as part of a date or time.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:seconds&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:seconds&gt;</span> element has the following attributes: <span class="Attribute">number:decimal-places</span> <a href="#attribute-number_decimal-places_element-number_seconds">19.343.3</a> and <span class="Attribute">number:style</span> <a href="#attribute-number_style_element-number_seconds">19.358.9</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:seconds&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_22_number_am-pm_"><span style="margin-right:0.127cm;">16.27.22</span></a><a id="__RefHeading__1416390_253892949"/><a id="element-number_am-pm"/>&lt;number:am-pm&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:am-pm&gt;</span> element specifies whether AM/PM is included as part of a date or time.</p><p class="Text_20_body">If a <span class="Element">&lt;number:am-pm&gt;</span> element is contained in a date or time style, hours are displayed using values from <span class="Attribute_20_Value_20_Instance">1</span> to <span class="Attribute_20_Value_20_Instance">12</span> only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:am-pm&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:am-pm&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:am-pm&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_23_number_boolean-style_"><span style="margin-right:0.127cm;">16.27.23</span></a><a id="__RefHeading__1416392_253892949"/><a id="element-number_boolean-style"/>&lt;number:boolean-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:boolean-style&gt;</span> element defines a style for Boolean values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:boolean-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:boolean-style&gt;</span> element has the following attributes: <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_boolean-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:boolean-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:boolean&gt;</span> <a href="#element-number_boolean">16.27.24</a>, <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_24_number_boolean_"><span style="margin-right:0.127cm;">16.27.24</span></a><a id="__RefHeading__1416394_253892949"/><a id="element-number_boolean"/>&lt;number:boolean&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:boolean&gt;</span> element marks the position of the Boolean value of a Boolean style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:boolean&gt;</span> element is usable within the following element: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:boolean&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:boolean&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_25_number_text-style_"><span style="margin-right:0.127cm;">16.27.25</span></a><a id="__RefHeading__1416396_253892949"/><a id="element-number_text-style"/>&lt;number:text-style&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:text-style&gt;</span> element defines a style for displaying text.</p><p class="Text_20_body">It can also contain <span class="Element">&lt;number:text&gt;</span> elements, which display additional text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:text-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:text-style&gt;</span> element has the following attributes: <span class="Attribute">number:country</span> <a href="#attribute-number_country">19.342</a>, <span class="Attribute">number:language</span> <a href="#attribute-number_language">19.349</a>, <span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a>, <span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a>, <span class="Attribute">number:title</span> <a href="#attribute-number_title">19.360</a>, <span class="Attribute">number:transliteration-country</span> <a href="#attribute-number_transliteration-country">19.361</a>, <span class="Attribute">number:transliteration-format</span> <a href="#attribute-number_transliteration-format">19.362</a>, <span class="Attribute">number:transliteration-language</span> <a href="#attribute-number_transliteration-language">19.363</a>, <span class="Attribute">number:transliteration-style</span> <a href="#attribute-number_transliteration-style">19.364</a>, <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-number_text-style">19.498.2</a> and <span class="Attribute">style:volatile</span> <a href="#attribute-style_volatile">19.517</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:text-style&gt;</span> element has the following child elements: <span class="Element">&lt;number:text&gt;</span> <a href="#element-number_text">16.27.26</a>, <span class="Element">&lt;number:text-content&gt;</span> <a href="#element-number_text-content">16.27.27</a>, <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h3 class="Heading_20_3"><a id="a16_27_26_number_text_"><span style="margin-right:0.127cm;">16.27.26</span></a><a id="__RefHeading__1416398_253892949"/><a id="element-number_text"/>&lt;number:text&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:text&gt;</span> element contains any fixed text for a data style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:text&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:text&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;number:text&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:text&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a16_27_27_number_text-content_"><span style="margin-right:0.127cm;">16.27.27</span></a><a id="__RefHeading__1416400_253892949"/><a id="element-number_text-content"/>&lt;number:text-content&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;number:text-content&gt;</span> element marks the position of variable text content of a text style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;number:text-content&gt;</span> element is usable within the following element: <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;number:text-content&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;number:text-content&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_27_28_style_text-properties_"><span style="margin-right:0.127cm;">16.27.28</span></a><a id="__RefHeading__1416402_253892949"/><a id="element-style_text-properties"/>&lt;style:text-properties&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;style:text-properties&gt;</span> element specifies formatting properties for text.</p><p class="Text_20_body">It also specifies the formatting properties for a section. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:text-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>, <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>, <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a>, <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>, <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>, <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a> and <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:text-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:color</span> <a href="#property-fo_color">20.180</a>, <span class="Attribute">fo:country</span> <a href="#property-fo_country">20.181</a>, <span class="Attribute">fo:font-family</span> <a href="#property-fo_font-family">20.182</a>, <span class="Attribute">fo:font-size</span> <a href="#property-fo_font-size">20.183</a>, <span class="Attribute">fo:font-style</span> <a href="#property-fo_font-style">20.184</a>, <span class="Attribute">fo:font-variant</span> <a href="#property-fo_font-variant">20.185</a>, <span class="Attribute">fo:font-weight</span> <a href="#property-fo_font-weight">20.186</a>, <span class="Attribute">fo:hyphenate</span> <a href="#property-fo_hyphenate">20.188</a>, <span class="Attribute">fo:hyphenation-push-char-count</span> <a href="#property-fo_hyphenation-push-char-count">20.191</a>, <span class="Attribute">fo:hyphenation-remain-char-count</span> <a href="#property-fo_hyphenation-remain-char-count">20.192</a>, <span class="Attribute">fo:language</span> <a href="#property-fo_language">20.195</a>, <span class="Attribute">fo:letter-spacing</span> <a href="#property-fo_letter-spacing">20.196</a>, <span class="Attribute">fo:script</span> <a href="#property-fo_script">20.215</a>, <span class="Attribute">fo:text-shadow</span> <a href="#property-fo_text-shadow">20.219</a>, <span class="Attribute">fo:text-transform</span> <a href="#property-fo_text-transform">20.220</a>, <span class="Attribute">style:country-asian</span> <a href="#property-style_country-asian">20.248</a>, <span class="Attribute">style:country-complex</span> <a href="#property-style_country-complex">20.249</a>, <span class="Attribute">style:font-charset</span> <a href="#property-style_font-charset">20.260</a>, <span class="Attribute">style:font-charset-asian</span> <a href="#property-style_font-charset-asian">20.261</a>, <span class="Attribute">style:font-charset-complex</span> <a href="#property-style_font-charset-complex">20.262</a>, <span class="Attribute">style:font-family-asian</span> <a href="#property-style_font-family-asian">20.263</a>, <span class="Attribute">style:font-family-complex</span> <a href="#property-style_font-family-complex">20.264</a>, <span class="Attribute">style:font-family-generic</span> <a href="#property-style_font-family-generic">20.265</a>, <span class="Attribute">style:font-family-generic-asian</span> <a href="#property-style_font-family-generic-asian">20.266</a>, <span class="Attribute">style:font-family-generic-complex</span> <a href="#property-style_font-family-generic-complex">20.267</a>, <span class="Attribute">style:font-name</span> <a href="#property-style_font-name">20.269</a>, <span class="Attribute">style:font-name-asian</span> <a href="#property-style_font-name-asian">20.270</a>, <span class="Attribute">style:font-name-complex</span> <a href="#property-style_font-name-complex">20.271</a>, <span class="Attribute">style:font-pitch</span> <a href="#property-style_font-pitch">20.272</a>, <span class="Attribute">style:font-pitch-asian</span> <a href="#property-style_font-pitch-asian">20.273</a>, <span class="Attribute">style:font-pitch-complex</span> <a href="#property-style_font-pitch-complex">20.274</a>, <span class="Attribute">style:font-relief</span> <a href="#property-style_font-relief">20.275</a>, <span class="Attribute">style:font-size-asian</span> <a href="#property-style_font-size-asian">20.276</a>, <span class="Attribute">style:font-size-complex</span> <a href="#property-style_font-size-complex">20.277</a>, <span class="Attribute">style:font-size-rel</span> <a href="#property-style_font-size-rel">20.278</a>, <span class="Attribute">style:font-size-rel-asian</span> <a href="#property-style_font-size-rel-asian">20.279</a>, <span class="Attribute">style:font-size-rel-complex</span> <a href="#property-style_font-size-rel-complex">20.280</a>, <span class="Attribute">style:font-style-asian</span> <a href="#property-style_font-style-asian">20.281</a>, <span class="Attribute">style:font-style-complex</span> <a href="#property-style_font-style-complex">20.282</a>, <span class="Attribute">style:font-style-name</span> <a href="#property-style_font-style-name">20.283</a>, <span class="Attribute">style:font-style-name-asian</span> <a href="#property-style_font-style-name-asian">20.284</a>, <span class="Attribute">style:font-style-name-complex</span> <a href="#property-style_font-style-name-complex">20.285</a>, <span class="Attribute">style:font-weight-asian</span> <a href="#property-style_font-weight-asian">20.286</a>, <span class="Attribute">style:font-weight-complex</span> <a href="#property-style_font-weight-complex">20.287</a>, <span class="Attribute">style:language-asian</span> <a href="#property-style_language-asian">20.294</a>, <span class="Attribute">style:language-complex</span> <a href="#property-style_language-complex">20.295</a>, <span class="Attribute">style:letter-kerning</span> <a href="#property-style_letter-kerning">20.308</a>, <span class="Attribute">style:rfc-language-tag</span> <a href="#property-style_rfc-language-tag">20.335</a>, <span class="Attribute">style:rfc-language-tag-asian</span> <a href="#property-style_rfc-language-tag-asian">20.336</a>, <span class="Attribute">style:rfc-language-tag-complex</span> <a href="#property-style_rfc-language-tag-complex">20.337</a>, <span class="Attribute">style:script-asian</span> <a href="#property-style_script-asian">20.346</a>, <span class="Attribute">style:script-complex</span> <a href="#property-style_script-complex">20.347</a>, <span class="Attribute">style:script-type</span> <a href="#property-style_script-type">20.348</a>, <span class="Attribute">style:text-blinking</span> <a href="#property-style_text-blinking">20.356</a>, <span class="Attribute">style:text-combine</span> <a href="#property-style_text-combine">20.357</a>, <span class="Attribute">style:text-combine-end-char</span> <a href="#property-style_text-combine-end-char">20.359</a>, <span class="Attribute">style:text-combine-start-char</span> <a href="#property-style_text-combine-start-char">20.358</a>, <span class="Attribute">style:text-emphasize</span> <a href="#property-style_text-emphasize">20.360</a>, <span class="Attribute">style:text-line-through-color</span> <a href="#property-style_text-line-through-color">20.361</a>, <span class="Attribute">style:text-line-through-mode</span> <a href="#property-style_text-line-through-mode">20.362</a>, <span class="Attribute">style:text-line-through-style</span> <a href="#property-style_text-line-through-style">20.363</a>, <span class="Attribute">style:text-line-through-text</span> <a href="#property-style_text-line-through-text">20.364</a>, <span class="Attribute">style:text-line-through-text-style</span> <a href="#property-style_text-line-through-text-style">20.365</a>, <span class="Attribute">style:text-line-through-type</span> <a href="#property-style_text-line-through-type">20.366</a>, <span class="Attribute">style:text-line-through-width</span> <a href="#property-style_text-line-through-width">20.367</a>, <span class="Attribute">style:text-outline</span> <a href="#property-style_text-outline">20.368</a>, <span class="Attribute">style:text-overline-color</span> <a href="#property-style_text-overline-color">20.369</a>, <span class="Attribute">style:text-overline-mode</span> <a href="#property-style_text-overline-mode">20.370</a>, <span class="Attribute">style:text-overline-style</span> <a href="#property-style_text-overline-style">20.371</a>, <span class="Attribute">style:text-overline-type</span> <a href="#property-style_text-overline-type">20.372</a>, <span class="Attribute">style:text-overline-width</span> <a href="#property-style_text-overline-width">20.373</a>, <span class="Attribute">style:text-position</span> <a href="#property-style_text-position">20.374</a>, <span class="Attribute">style:text-rotation-angle</span> <a href="#property-style_text-rotation-angle">20.375</a>, <span class="Attribute">style:text-rotation-scale</span> <a href="#property-style_text-rotation-scale">20.376</a>, <span class="Attribute">style:text-scale</span> <a href="#property-style_text-scale">20.377</a>, <span class="Attribute">style:text-underline-color</span> <a href="#property-style_text-underline-color">20.378</a>, <span class="Attribute">style:text-underline-mode</span> <a href="#property-style_text-underline-mode">20.379</a>, <span class="Attribute">style:text-underline-style</span> <a href="#property-style_text-underline-style">20.380</a>, <span class="Attribute">style:text-underline-type</span> <a href="#property-style_text-underline-type">20.381</a>, <span class="Attribute">style:text-underline-width</span> <a href="#property-style_text-underline-width">20.382</a>, <span class="Attribute">style:use-window-font-color</span> <a href="#property-style_use-window-font-color">20.385</a>, <span class="Attribute">text:condition</span> <a href="#property-text_condition">20.416</a>, <span class="Attribute">text:display</span> <a href="#property-text_display">20.417</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:text-properties&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_28Text_Style_Families"><span style="margin-right:0.127cm;">16.28</span></a><a id="__RefHeading__1416404_253892949"/>Text Style Families</h2><h3 class="Heading_20_3"><a id="a16_28_1Text_Styles"><span style="margin-right:0.127cm;">16.28.1</span></a><a id="__RefHeading__1416406_253892949"/>Text Styles</h3><p class="Text_20_body">Text styles are represented by <span class="Element">&lt;style:style&gt;</span> elements whose <span class="Attribute">style:family</span> attribute has the value <span class="Attribute_20_Value">text</span>. </p><h3 class="Heading_20_3"><a id="a16_28_2Paragraph_Styles"><span style="margin-right:0.127cm;">16.28.2</span></a><a id="__RefHeading__1416408_253892949"/>Paragraph Styles</h3><p class="Text_20_body">Paragraph styles are represented by <span class="Element">&lt;style:style&gt;</span> elements whose <span class="Attribute">style:family</span> attribute has the value <span class="Attribute_20_Value">paragraph</span>. </p><p class="Text_20_body">In addition to paragraph properties, paragraph styles may define text properties. These are applied to the character content of the paragraph unless they are overwritten by a text style that is specified by any of the descendant elements of the paragraph element.</p><h3 class="Heading_20_3"><a id="a16_28_3Section_Styles"><span style="margin-right:0.127cm;">16.28.3</span></a><a id="__RefHeading__1416410_253892949"/>Section Styles</h3><p class="Text_20_body">Section styles are represented by <span class="Element">&lt;style:style&gt;</span> elements whose <span class="Attribute">style:family</span> attribute has the value <span class="Attribute_20_Value">section</span>. </p><h3 class="Heading_20_3"><a id="a16_28_4Ruby_Styles"><span style="margin-right:0.127cm;">16.28.4</span></a><a id="__RefHeading__1416412_253892949"/>Ruby Styles</h3><p class="Text_20_body">Ruby styles are represented by <span class="Element">&lt;style:style&gt;</span> elements whose <span class="Attribute">style:family</span> attribute has the value <span class="Attribute_20_Value">ruby</span>. </p><h2 class="Heading_20_2"><a id="a16_29Enhanced_Text_Styles"><span style="margin-right:0.127cm;">16.29</span></a><a id="__RefHeading__1416414_253892949"/>Enhanced Text Styles</h2><h3 class="Heading_20_3"><a id="a16_29_1_text_linenumbering-configuration_"><span style="margin-right:0.127cm;">16.29.1</span></a><a id="__RefHeading__1416416_253892949"/><a id="element-text_linenumbering-configuration"/>&lt;text:linenumbering-configuration&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:linenumbering-configuration&gt;</span> element specifies line numbering within the <span class="Element">&lt;office:styles&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:linenumbering-configuration&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:linenumbering-configuration&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">text:count-empty-lines</span> <a href="#attribute-text_count-empty-lines">19.783</a>, <span class="Attribute">text:count-in-text-boxes</span> <a href="#attribute-text_count-in-text-boxes">19.784</a>, <span class="Attribute">text:increment</span> <a href="#attribute-text_increment">19.808</a>, <span class="Attribute">text:number-lines</span> <a href="#attribute-text_number-lines">19.839</a>, <span class="Attribute">text:number-position</span> <a href="#attribute-text_number-position">19.840</a>, <span class="Attribute">text:offset</span> <a href="#attribute-text_offset">19.842</a>, <span class="Attribute">text:restart-on-page</span> <a href="#attribute-text_restart-on-page">19.858</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_linenumbering-configuration">19.874.21</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:linenumbering-configuration&gt;</span> element has the following child element: <span class="Element">&lt;text:linenumbering-separator&gt;</span> <a href="#element-text_linenumbering-separator">16.29.2</a>.</p><h3 class="Heading_20_3"><a id="a16_29_2_text_linenumbering-separator_"><span style="margin-right:0.127cm;">16.29.2</span></a><a id="__RefHeading__1416418_253892949"/><a id="element-text_linenumbering-separator"/>&lt;text:linenumbering-separator&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:linenumbering-separator&gt;</span> element contains the text that is displayed as a separator. A separator is text that is displayed instead of a line number for lines where no number is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:linenumbering-separator&gt;</span> element is usable within the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:linenumbering-separator&gt;</span> element has the following attribute: <span class="Attribute">text:increment</span> <a href="#attribute-text_increment">19.808</a>.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:linenumbering-separator&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:linenumbering-separator&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a16_29_3_text_notes-configuration_"><span style="margin-right:0.127cm;">16.29.3</span></a><a id="__RefHeading__1416420_253892949"/><a id="element-text_notes-configuration"/>&lt;text:notes-configuration&gt;</h3><p class="Text_20_body">A <span class="Element">&lt;text:notes-configuration&gt;</span> element specifies values for each note class used in a document. If there is no note configuration element, an implementation-defined default note configuration is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:notes-configuration&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a> and <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:notes-configuration&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a>, <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, <span class="Attribute">text:citation-body-style-name</span> <a href="#attribute-text_citation-body-style-name">19.768</a>, <span class="Attribute">text:citation-style-name</span> <a href="#attribute-text_citation-style-name">19.769</a>, <span class="Attribute">text:default-style-name</span> <a href="#attribute-text_default-style-name">19.794</a>, <span class="Attribute">text:footnotes-position</span> <a href="#attribute-text_footnotes-position">19.804</a>, <span class="Attribute">text:master-page-name</span> <a href="#attribute-text_master-page-name">19.833</a>, <span class="Attribute">text:note-class</span> <a href="#attribute-text_note-class">19.837</a>, <span class="Attribute">text:start-numbering-at</span> <a href="#attribute-text_start-numbering-at">19.869</a> and <span class="Attribute">text:start-value</span> <a href="#attribute-text_start-value_element-text_notes-configuration">19.868.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:notes-configuration&gt;</span> element has the following child elements: <span class="Element">&lt;text:note-continuation-notice-backward&gt;</span> <a href="#element-text_note-continuation-notice-backward">16.29.5</a> and <span class="Element">&lt;text:note-continuation-notice-forward&gt;</span> <a href="#element-text_note-continuation-notice-forward">16.29.4</a>.</p><h3 class="Heading_20_3"><a id="a16_29_4_text_note-continuation-notice-forward_"><span style="margin-right:0.127cm;">16.29.4</span></a><a id="__RefHeading__1416422_253892949"/><a id="element-text_note-continuation-notice-forward"/>&lt;text:note-continuation-notice-forward&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:note-continuation-notice-forward&gt;</span> elements specifies the text that is displayed at the end of a footnote that is continued on the next page</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:note-continuation-notice-forward&gt;</span> element is usable within the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:note-continuation-notice-forward&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:note-continuation-notice-forward&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:note-continuation-notice-forward&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a16_29_5_text_note-continuation-notice-backward_"><span style="margin-right:0.127cm;">16.29.5</span></a><a id="__RefHeading__1416424_253892949"/><a id="element-text_note-continuation-notice-backward"/>&lt;text:note-continuation-notice-backward&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:note-continuation-notice-backward&gt;</span> elements specifies the text that is displayed before continued text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:note-continuation-notice-backward&gt;</span> element is usable within the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:note-continuation-notice-backward&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List">The <span class="Element">&lt;text:note-continuation-notice-backward&gt;</span> element has no child elements.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:note-continuation-notice-backward&gt;</span> element has character data content.</p><h3 class="Heading_20_3"><a id="a16_29_6_text_bibliography-configuration_"><span style="margin-right:0.127cm;">16.29.6</span></a><a id="__RefHeading__1416426_253892949"/><a id="element-text_bibliography-configuration"/>&lt;text:bibliography-configuration&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:bibliography-configuration&gt;</span> element specifies how bibliography entries are displayed in-line, and how they are displayed in a bibliography index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:bibliography-configuration&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:bibliography-configuration&gt;</span> element has the following attributes: <span class="Attribute">fo:country</span> <a href="#attribute-fo_country_element-text_bibliography-configuration">19.234.2</a>, <span class="Attribute">fo:language</span> <a href="#attribute-fo_language_element-text_bibliography-configuration">19.236.3</a>, <span class="Attribute">fo:script</span> <a href="#attribute-fo_script_element-text_bibliography-configuration">19.242.3</a>, <span class="Attribute">style:rfc-language-tag</span> <a href="#attribute-style_rfc-language-tag">19.512</a>, <span class="Attribute">text:numbered-entries</span> <a href="#attribute-text_numbered-entries">19.841</a>, <span class="Attribute">text:prefix</span> <a href="#attribute-text_prefix">19.848</a>, <span class="Attribute">text:sort-algorithm</span> <a href="#attribute-text_sort-algorithm">19.865</a>, <span class="Attribute">text:sort-by-position</span> <a href="#attribute-text_sort-by-position">19.867</a> and <span class="Attribute">text:suffix</span> <a href="#attribute-text_suffix">19.876</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:bibliography-configuration&gt;</span> element has the following child element: <span class="Element">&lt;text:sort-key&gt;</span> <a href="#element-text_sort-key">16.29.7</a>.</p><h3 class="Heading_20_3"><a id="a16_29_7_text_sort-key_"><span style="margin-right:0.127cm;">16.29.7</span></a><a id="__RefHeading__1416428_253892949"/><a id="element-text_sort-key"/>&lt;text:sort-key&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;text:sort-key&gt;</span> element specifies a single sort key if bibliography entries are not displayed in document order.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:sort-key&gt;</span> element is usable within the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:sort-key&gt;</span> element has the following attributes: <span class="Attribute">text:key</span> <a href="#attribute-text_key">19.820</a> and <span class="Attribute">text:sort-ascending</span> <a href="#attribute-text_sort-ascending">19.866</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:sort-key&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_30_text_list-style_"><span style="margin-right:0.127cm;">16.30</span></a><a id="__RefHeading__1416430_253892949"/><a id="element-text_list-style"/>&lt;text:list-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:list-style&gt;</span> element contains a set of style elements for each list level, which are called <span class="Def">list level styles</span>. There are three different list level style elements, depending on whether a list level is to have a list label containing the list numbering, a bullet, or an image.</p><p class="Text_20_body">If a list style is applied to a list but does not contain a list level specification for a specific level, the list level style of the next lower level is used. If no specific list level style has been defined, an implementation-dependent default style is used.</p><p class="Text_20_body"><span class="Element">&lt;text:list-style&gt;</span> elements may occur in the <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a> and <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a> elements, but they may also occur within the <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.elements of graphic styles.</p><p class="Text_20_body">Including a list style element into a graphic style has the same semantics as adding a <span class="Attribute">style:list-style-name</span> attribute ( <a href="#attribute-style_list-style-name">19.496</a>) to the style that references a list style that is declared outside a graphic style. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The inclusion of a list style element is needed in cases where a common graphic style should be associated with an automatic list style.</p><p class="Text_20_body">List styles contained in a graphic style can be referenced by other graphic styles using the <span class="Attribute">style:list-style-name</span> attribute. Their names are not displayed in the user interface, even if the graphic style that contains it is a common style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list-style&gt;</span> element is usable within the following elements: <span class="Element">&lt;office:automatic-styles&gt;</span> <a href="#element-office_automatic-styles">3.15.3</a>, <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list-style&gt;</span> element has the following attributes: <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a>, <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-text_list-style">19.498.2</a> and <span class="Attribute">text:consecutive-numbering</span> <a href="#attribute-text_consecutive-numbering">19.779</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list-style&gt;</span> element has the following child elements: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a> and <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>.</p><h2 class="Heading_20_2"><a id="a16_31_text_list-level-style-bullet_"><span style="margin-right:0.127cm;">16.31</span></a><a id="__RefHeading__1416432_253892949"/><a id="element-text_list-level-style-bullet"/>&lt;text:list-level-style-bullet&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;text:list-level-style-bullet&gt;</span> element specifies a list style where list items are preceded by bullets.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list-level-style-bullet&gt;</span> element is usable within the following element: <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list-level-style-bullet&gt;</span> element has the following attributes: <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a>, <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, <span class="Attribute">text:bullet-char</span> <a href="#attribute-text_bullet-char">19.760</a>, <span class="Attribute">text:bullet-relative-size</span> <a href="#attribute-text_bullet-relative-size">19.761</a>, <span class="Attribute">text:level</span> <a href="#attribute-text_level">19.828</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_list-level-style-bullet">19.874.24</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list-level-style-bullet&gt;</span> element has the following child elements: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h2 class="Heading_20_2"><a id="a16_32_text_list-level-style-number_"><span style="margin-right:0.127cm;">16.32</span></a><a id="__RefHeading__1416434_253892949"/><a id="element-text_list-level-style-number"/>&lt;text:list-level-style-number&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;text:list-level-style-number&gt;</span> specifies a list style where list items are preceded by numbers.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list-level-style-number&gt;</span> element is usable within the following element: <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list-level-style-number&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a>, <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, <span class="Attribute">text:display-levels</span> <a href="#attribute-text_display-levels">19.797</a>, <span class="Attribute">text:level</span> <a href="#attribute-text_level">19.828</a>, <span class="Attribute">text:start-value</span> <a href="#attribute-text_start-value_element-text_list-level-style-number">19.868.4</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_list-level-style-number">19.874.23</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list-level-style-number&gt;</span> element has the following child elements: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h2 class="Heading_20_2"><a id="a16_33_text_list-level-style-image_"><span style="margin-right:0.127cm;">16.33</span></a><a id="__RefHeading__1416436_253892949"/><a id="element-text_list-level-style-image"/>&lt;text:list-level-style-image&gt;</h2><p class="Text_20_body">A <span class="Element">&lt;text:list-level-style-image&gt;</span> specifies a list style where list items are preceded by images. This element can be an <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a> and can only be contained in list style elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:list-level-style-image&gt;</span> element is usable within the following element: <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:list-level-style-image&gt;</span> element has the following attributes: <span class="Attribute">text:level</span> <a href="#attribute-text_level">19.828</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-text_list-level-style-image">19.910.35</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:list-level-style-image&gt;</span> element has the following child elements: <span class="Element">&lt;office:binary-data&gt;</span> <a href="#element-office_binary-data">10.4.5</a> and <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><h2 class="Heading_20_2"><a id="a16_34_text_outline-style_"><span style="margin-right:0.127cm;">16.34</span></a><a id="__RefHeading__1416438_253892949"/><a id="element-text_outline-style"/>&lt;text:outline-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:outline-style&gt;</span> element contains the elements that specify a style for each outline level.</p><p class="Text_20_body">An outline style is a list style that is applied to all headings within a text document where the heading's paragraph style does not define a list style to use itself.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:outline-style&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:outline-style&gt;</span> element has the following attribute: <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-text_outline-style">19.498.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:outline-style&gt;</span> element has the following child element: <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><h2 class="Heading_20_2"><a id="a16_35_text_outline-level-style_"><span style="margin-right:0.127cm;">16.35</span></a><a id="__RefHeading__1416440_253892949"/><a id="element-text_outline-level-style"/>&lt;text:outline-level-style&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;text:outline-level-style&gt;</span> element specifies a style for each outline level.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;text:outline-level-style&gt;</span> element is usable within the following element: <span class="Element">&lt;text:outline-style&gt;</span> <a href="#element-text_outline-style">16.34</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;text:outline-level-style&gt;</span> element has the following attributes: <span class="Attribute">style:num-format</span> <a href="#attribute-style_num-format">19.500</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#attribute-style_num-letter-sync">19.501</a>, <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a>, <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, <span class="Attribute">text:display-levels</span> <a href="#attribute-text_display-levels">19.797</a>, <span class="Attribute">text:level</span> <a href="#attribute-text_level">19.828</a>, <span class="Attribute">text:start-value</span> <a href="#attribute-text_start-value_element-text_outline-level-style">19.868.7</a> and <span class="Attribute">text:style-name</span> <a href="#attribute-text_style-name_element-text_outline-level-style">19.874.28</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;text:outline-level-style&gt;</span> element has the following child elements: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><h2 class="Heading_20_2"><a id="a16_36Table_Styles"><span style="margin-right:0.127cm;">16.36</span></a><a id="__RefHeading__1416442_253892949"/>Table Styles</h2><h3 class="Heading_20_3"><a id="a16_36_1Table_Styles"><span style="margin-right:0.127cm;">16.36.1</span></a><a id="__RefHeading__1416444_253892949"/><a id="Table_Styles"/>Table Styles</h3><p class="Text_20_body">Table styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">table</span>. </p><h3 class="Heading_20_3"><a id="a16_36_2Table_Column_Styles"><span style="margin-right:0.127cm;">16.36.2</span></a><a id="__RefHeading__1416446_253892949"/><a id="Table_Column_Styles"/>Table Column Styles</h3><p class="Text_20_body">Table column styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">table-column</span>. </p><h3 class="Heading_20_3"><a id="a16_36_3Table_Row_Styles"><span style="margin-right:0.127cm;">16.36.3</span></a><a id="__RefHeading__1416448_253892949"/><a id="Table_Row_Styles"/>Table Row Styles</h3><p class="Text_20_body">Table row styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">table-row</span>. </p><h3 class="Heading_20_3"><a id="a16_36_4Table_Cell_Styles"><span style="margin-right:0.127cm;">16.36.4</span></a><a id="__RefHeading__1416450_253892949"/><a id="Table_Cell_Styles"/>Table Cell Styles</h3><p class="Text_20_body">Table cell styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">table-cell</span>.</p><p class="Text_20_body">In addition to table cell properties, table cell styles may define paragraph and text properties. These are applied to paragraphs contained in a table cell unless they are overwritten by paragraph styles that are specified by the paragraph elements themselves. </p><h2 class="Heading_20_2"><a id="a16_37Graphic_Styles"><span style="margin-right:0.127cm;">16.37</span></a><a id="__RefHeading__1416452_253892949"/>Graphic Styles</h2><p class="Text_20_body">Graphic styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">graphic</span>.</p><p class="Text_20_body">In addition to graphic properties, graphic styles may define paragraph and text properties. These are applied to paragraphs contained in drawing objects unless they are overwritten by paragraph styles that are specified by the paragraph elements themselves. </p><h2 class="Heading_20_2"><a id="a16_38Presentation_Styles"><span style="margin-right:0.127cm;">16.38</span></a><a id="__RefHeading__1416454_253892949"/>Presentation Styles</h2><p class="Text_20_body">Presentation styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">presentation</span>.</p><p class="Text_20_body">In addition to graphic properties, presentation styles may define paragraph and text properties. These are applied to paragraphs contained in drawing objects unless they are overwritten by paragraph styles that are specified by the paragraph elements themselves. </p><h2 class="Heading_20_2"><a id="a16_39Drawing_Page_Style"><span style="margin-right:0.127cm;">16.39</span></a><a id="__RefHeading__1416456_253892949"/><a id="Drawing_Page_Style"/>Drawing Page Style</h2><p class="Text_20_body">A drawing page style is a <span class="Element">&lt;style:style&gt;</span> element with family <span class="Attribute_20_Value">drawing-page</span>. </p><p class="Text_20_body">Within drawing and presentation documents, drawing page styles can be used to change the background of a draw page. If a background is set with the help of a drawing page style, it overrides the background of the master page that is assigned to the draw page, but not the shapes that are on the master page.</p><p class="Text_20_body">Within presentation documents, the draw page style may contain presentation formatting properties.</p><h2 class="Heading_20_2"><a id="a16_40Enhanced_Graphic_Style_Elements"><span style="margin-right:0.127cm;">16.40</span></a><a id="__RefHeading__1416458_253892949"/>Enhanced Graphic Style Elements</h2><h3 class="Heading_20_3"><a id="a16_40_1_draw_gradient_"><span style="margin-right:0.127cm;">16.40.1</span></a><a id="__RefHeading__1416460_253892949"/><a id="element-draw_gradient"/>&lt;draw:gradient&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:gradient&gt;</span> element defines a gradient for filling a drawing object. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:gradient&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:gradient&gt;</span> element has the following attributes: <span class="Attribute">draw:angle</span> <a href="#attribute-draw_angle">19.112</a>, <span class="Attribute">draw:border</span> <a href="#attribute-draw_border">19.114</a>, <span class="Attribute">draw:cx</span> <a href="#attribute-draw_cx">19.129</a>, <span class="Attribute">draw:cy</span> <a href="#attribute-draw_cy">19.130</a>, <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-draw_gradient">19.133.3</a>, <span class="Attribute">draw:end-color</span> <a href="#attribute-draw_end-color">19.141</a>, <span class="Attribute">draw:end-intensity</span> <a href="#attribute-draw_end-intensity">19.143</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_gradient">19.197.12</a>, <span class="Attribute">draw:start-color</span> <a href="#attribute-draw_start-color">19.214</a>, <span class="Attribute">draw:start-intensity</span> <a href="#attribute-draw_start-intensity">19.216</a> and <span class="Attribute">draw:style</span> <a href="#attribute-draw_style_element-draw_gradient">19.218.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:gradient&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_40_2_svg_linearGradient_"><span style="margin-right:0.127cm;">16.40.2</span></a><a id="__RefHeading__1416462_253892949"/><a id="element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;svg:linearGradient&gt;</span> element as specified in §13.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> can used in documents in OpenDocument format subject to the following rules:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The gradient shall have a name. It is specified by the <span class="Attribute">draw:name</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Only the <span class="Attribute">svg:gradientTransform</span>, <span class="Attribute">svg:x1</span>, <span class="Attribute">svg:y1</span>, <span class="Attribute">svg:x2</span>, <span class="Attribute">svg:y2</span> and <span class="Attribute">svg:spreadMethod</span> attributes are evaluated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The gradient shall be calculated as having a <span class="Attribute">svg:gradientUnits</span> attribute of <span class="Attribute_20_Value">objectBoundingBox</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The only child element that is evaluated is <span class="Element">&lt;svg:stop&gt;</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>For <span class="Element">&lt;svg:stop&gt;</span>, only the <span class="Attribute">svg:offset</span>, <span class="Attribute">svg:stop-color</span> and <span class="Attribute">svg:stop-opacity</span> attributes are evaluated.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:linearGradient&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:linearGradient&gt;</span> element has the following attributes: <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-svg_linearGradient">19.133.8</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-svg_linearGradient">19.197.29</a>, <span class="Attribute">svg:gradientTransform</span> <a href="#attribute-svg_gradientTransform">19.536</a>, <span class="Attribute">svg:gradientUnits</span> <a href="#attribute-svg_gradientUnits">19.537</a>, <span class="Attribute">svg:spreadMethod</span> <a href="#attribute-svg_spreadMethod">19.553</a>, <span class="Attribute">svg:x1</span> <a href="#attribute-svg_x1_element-svg_linearGradient">19.574.2</a>, <span class="Attribute">svg:x2</span> <a href="#attribute-svg_x2_element-svg_linearGradient">19.575.2</a>, <span class="Attribute">svg:y1</span> <a href="#attribute-svg_y1_element-svg_linearGradient">19.578.2</a> and <span class="Attribute">svg:y2</span> <a href="#attribute-svg_y2_element-svg_linearGradient">19.579.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:linearGradient&gt;</span> element has the following child element: <span class="Element">&lt;svg:stop&gt;</span> <a href="#element-svg_stop">16.40.4</a>.</p><h3 class="Heading_20_3"><a id="a16_40_3_svg_radialGradient_"><span style="margin-right:0.127cm;">16.40.3</span></a><a id="__RefHeading__1416464_253892949"/><a id="element-svg_radialGradient"/>&lt;svg:radialGradient&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;svg:radialGradient&gt;</span> element as specified in §13.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> can used in documents in OpenDocument format subject to the following rules:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The gradient shall have a name. It is specified by the <span class="Attribute">draw:name</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>For <span class="Element">&lt;svg:radialGradient&gt;</span>, only the <span class="Attribute">svg:gradientTransform</span>, <span class="Attribute">svg:cx</span>, <span class="Attribute">svg:cy</span>, <span class="Attribute">svg:r</span>, <span class="Attribute">svg:fx</span>, <span class="Attribute">svg:fy</span> and <span class="Attribute">svg:spreadMethod</span> attributes are evaluated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The gradient shall be calculated as having a <span class="Attribute">svg:gradientUnits</span> attribute of <span class="Attribute_20_Value">objectBoundingBox</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The only child element that is evaluated is <span class="Element">&lt;svg:stop&gt;</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>For <span class="Element">&lt;svg:stop&gt;</span>, only the <span class="Attribute">svg:offset</span>, <span class="Attribute">svg:stop-color</span> and <span class="Attribute">svg:stop-opacity</span> attributes are evaluated.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:radialGradient&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:radialGradient&gt;</span> element has the following attributes: <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-svg_radialGradient">19.133.9</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-svg_radialGradient">19.197.30</a>, <span class="Attribute">svg:cx</span> <a href="#attribute-svg_cx_element-svg_radialGradient">19.524.4</a>, <span class="Attribute">svg:cy</span> <a href="#attribute-svg_cy_element-svg_radialGradient">19.525.4</a>, <span class="Attribute">svg:fx</span> <a href="#attribute-svg_fx">19.534</a>, <span class="Attribute">svg:fy</span> <a href="#attribute-svg_fy">19.535</a>, <span class="Attribute">svg:gradientTransform</span> <a href="#attribute-svg_gradientTransform">19.536</a>, <span class="Attribute">svg:gradientUnits</span> <a href="#attribute-svg_gradientUnits">19.537</a>, <span class="Attribute">svg:r</span> <a href="#attribute-svg_r_element-svg_radialGradient">19.549.3</a> and <span class="Attribute">svg:spreadMethod</span> <a href="#attribute-svg_spreadMethod">19.553</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:radialGradient&gt;</span> element has the following child element: <span class="Element">&lt;svg:stop&gt;</span> <a href="#element-svg_stop">16.40.4</a>.</p><h3 class="Heading_20_3"><a id="a16_40_4_svg_stop_"><span style="margin-right:0.127cm;">16.40.4</span></a><a id="__RefHeading__1416466_253892949"/><a id="element-svg_stop"/>&lt;svg:stop&gt;</h3><p class="Text_20_body">See §13.2.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;svg:stop&gt;</span> element is usable within the following elements: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> and <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;svg:stop&gt;</span> element has the following attributes: <span class="Attribute">svg:offset</span> <a href="#attribute-svg_offset">19.543</a>, <span class="Attribute">svg:stop-color</span> <a href="#attribute-svg_stop-color">19.556</a> and <span class="Attribute">svg:stop-opacity</span> <a href="#attribute-svg_stop-opacity">19.557</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;svg:stop&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_40_5_draw_hatch_"><span style="margin-right:0.127cm;">16.40.5</span></a><a id="__RefHeading__1416468_253892949"/><a id="element-draw_hatch"/>&lt;draw:hatch&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:hatch&gt;</span> element defines a hatch for filling graphic objects. A hatch is a simple pattern of straight lines that is repeated in the fill area. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:hatch&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:hatch&gt;</span> element has the following attributes: <span class="Attribute">draw:color</span> <a href="#attribute-draw_color_element-draw_hatch">19.122.2</a>, <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-draw_hatch">19.133.4</a>, <span class="Attribute">draw:distance</span> <a href="#attribute-draw_distance_element-draw_hatch">19.134.2</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_hatch">19.197.13</a>, <span class="Attribute">draw:rotation</span> <a href="#attribute-draw_rotation">19.209</a> and <span class="Attribute">draw:style</span> <a href="#attribute-draw_style_element-draw_hatch">19.218.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:hatch&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_40_6_draw_fill-image_"><span style="margin-right:0.127cm;">16.40.6</span></a><a id="__RefHeading__1416470_253892949"/><a id="element-draw_fill-image"/>&lt;draw:fill-image&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:fill-image&gt;</span> element specifies a link to a bitmap resource. Fill image are not available as automatic styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:fill-image&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:fill-image&gt;</span> element has the following attributes: <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-draw_fill-image">19.133.2</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_fill-image">19.197.9</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-draw_fill-image">19.539.7</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-draw_fill-image">19.571.9</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-draw_fill-image">19.910.13</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:fill-image&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_40_7_draw_opacity_"><span style="margin-right:0.127cm;">16.40.7</span></a><a id="__RefHeading__1416472_253892949"/><a id="element-draw_opacity"/>&lt;draw:opacity&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:opacity&gt;</span> element specifies an opacity gradient for a graphic object. An opacity gradient interpolates opacity. Opacity gradients are not available as automatic styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:opacity&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:opacity&gt;</span> element has the following attributes: <span class="Attribute">draw:angle</span> <a href="#attribute-draw_angle">19.112</a>, <span class="Attribute">draw:border</span> <a href="#attribute-draw_border">19.114</a>, <span class="Attribute">draw:cx</span> <a href="#attribute-draw_cx">19.129</a>, <span class="Attribute">draw:cy</span> <a href="#attribute-draw_cy">19.130</a>, <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-draw_opacity">19.133.6</a>, <span class="Attribute">draw:end</span> <a href="#attribute-draw_end">19.139</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_opacity">19.197.18</a>, <span class="Attribute">draw:start</span> <a href="#attribute-draw_start">19.212</a> and <span class="Attribute">draw:style</span> <a href="#attribute-draw_style_element-draw_opacity">19.218.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:opacity&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_40_8_draw_marker_"><span style="margin-right:0.127cm;">16.40.8</span></a><a id="__RefHeading__1416474_253892949"/><a id="element-draw_marker"/>&lt;draw:marker&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:marker&gt;</span> element represents a marker, which is used to draw polygons at the start or end point of a stroke depending on whether it is referenced by a <span class="Attribute">draw:marker-start</span> or <span class="Attribute">draw:marker-end</span> attribute. </p><p class="Text_20_body">Marker geometry is defined by a <span class="Attribute">svg:d</span> attribute. </p><p class="Note"><span class="Note_20_Label">Note</span>: The marker geometry could be imagined as an arrow whose vertex points upwards. </p><p class="Text_20_body">When the marker is painted, its geometry is first mapped to the stroke start or end point as follows: </p><p class="Text_20_body">If a marker is referenced by a <span class="Attribute">draw:marker-start</span> attribute, the marker geometry is scaled so that its width equals the width specified by <span class="Attribute">draw:marker-start-width</span> attribute. If the marker is referenced by a <span class="Attribute">draw:marker-end</span> attribute, the marker geometry is scaled so that its width equals the width specified by <span class="Attribute">draw:marker-end-width</span> attribute. The aspect ratio of the geometry is in both cases kept. </p><p class="Text_20_body">The geometry is horizontally centered. It is vertically positioned relative to an offset value which is specified by a <span class="Attribute">draw:marker-start-center</span> attribute for markers referenced by a <span class="Attribute">draw:marker-start</span> attribute, and by the <span class="Attribute">draw:marker-end-center</span> attribute for markers referenced by a <span class="Attribute">draw:marker-end</span> attribute. The attribute value <span class="Attribute_20_Value">true</span> defines an offset of 0.5 and the attribute value <span class="Attribute_20_Value">false</span> defines an offset of 0.3, which is also the default value. The offset specifies the marker's vertical position in a range from 0.0 to 1.0, where the value 0.0 means the geometry's bottom bound is aligned to the X axis of the local coordinate system of the marker geometry, and where the value 1.0 means the top bound to be aligned to the X axis of the local coordinate system of the marker geometry. </p><p class="Text_20_body">If the marker referenced by a <span class="Attribute">draw:marker-start</span> attribute, the marker geometry is then rotated so that the Y axis is aligned with the direction of the stroke in the start/end point direction. It is painted to the stroke so that the origin of the coordinate system of the mapped marker geometry is positioned at the start point's position.</p><p class="Text_20_body">If the marker is referenced by a <span class="Attribute">draw:marker-end</span> attribute, the marker geometry is then rotated so that the X axis is aligned with the direction of the stroke in the end/start point direction. It is pointed to the stroke so that the origin of the coordinate system of the mapped marker geometry is positioned at the end point's position.</p><p class="Text_20_body">Markers are not available as automatic styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:marker&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:marker&gt;</span> element has the following attributes: <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-draw_marker">19.133.5</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_marker">19.197.16</a>, <span class="Attribute">svg:d</span> <a href="#attribute-svg_d">19.526</a> and <span class="Attribute">svg:viewBox</span> <a href="#attribute-svg_viewBox">19.570</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:marker&gt;</span> element has no child elements.</p><h3 class="Heading_20_3"><a id="a16_40_9_draw_stroke-dash_"><span style="margin-right:0.127cm;">16.40.9</span></a><a id="__RefHeading__1416476_253892949"/><a id="element-draw_stroke-dash"/>&lt;draw:stroke-dash&gt;</h3><p class="Text_20_body">The <span class="Element">&lt;draw:stroke-dash&gt;</span> element represents a dash style that can be used to render strokes of shapes. Dash styles are not available as automatic styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;draw:stroke-dash&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;draw:stroke-dash&gt;</span> element has the following attributes: <span class="Attribute">draw:display-name</span> <a href="#attribute-draw_display-name_element-draw_stroke-dash">19.133.7</a>, <span class="Attribute">draw:distance</span> <a href="#attribute-draw_distance_element-draw_stroke-dash">19.134.3</a>, <span class="Attribute">draw:dots1</span> <a href="#attribute-draw_dots1">19.135</a>, <span class="Attribute">draw:dots1-length</span> <a href="#attribute-draw_dots1-length">19.136</a>, <span class="Attribute">draw:dots2</span> <a href="#attribute-draw_dots2">19.137</a>, <span class="Attribute">draw:dots2-length</span> <a href="#attribute-draw_dots2-length">19.138</a>, <span class="Attribute">draw:name</span> <a href="#attribute-draw_name_element-draw_stroke-dash">19.197.27</a> and <span class="Attribute">draw:style</span> <a href="#attribute-draw_style_element-draw_stroke-dash">19.218.5</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;draw:stroke-dash&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_41_style_presentation-page-layout_"><span style="margin-right:0.127cm;">16.41</span></a><a id="__RefHeading__1416478_253892949"/><a id="element-style_presentation-page-layout"/>&lt;style:presentation-page-layout&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:presentation-page-layout&gt;</span> element is a container <span class="Element">&lt;presentation:placeholder&gt;</span> elements. These placeholders are used as templates for creating new presentation objects and to mark the size and position of an object if the presentation page layout of a drawing page is changed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:presentation-page-layout&gt;</span> element is usable within the following element: <span class="Element">&lt;office:styles&gt;</span> <a href="#element-office_styles">3.15.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:presentation-page-layout&gt;</span> element has the following attributes: <span class="Attribute">style:display-name</span> <a href="#attribute-style_display-name">19.472</a> and <span class="Attribute">style:name</span> <a href="#attribute-style_name_element-style_presentation-page-layout">19.498.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:presentation-page-layout&gt;</span> element has the following child element: <span class="Element">&lt;presentation:placeholder&gt;</span> <a href="#element-presentation_placeholder">16.42</a>.</p><h2 class="Heading_20_2"><a id="a16_42_presentation_placeholder_"><span style="margin-right:0.127cm;">16.42</span></a><a id="__RefHeading__1416480_253892949"/><a id="element-presentation_placeholder"/>&lt;presentation:placeholder&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;presentation:placeholder&gt;</span> element specifies a placeholder for presentation objects.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;presentation:placeholder&gt;</span> element is usable within the following element: <span class="Element">&lt;style:presentation-page-layout&gt;</span> <a href="#element-style_presentation-page-layout">16.41</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;presentation:placeholder&gt;</span> element has the following attributes: <span class="Attribute">presentation:object</span> <a href="#attribute-presentation_object">19.403</a>, <span class="Attribute">svg:height</span> <a href="#attribute-svg_height_element-presentation_placeholder">19.539.10</a>, <span class="Attribute">svg:width</span> <a href="#attribute-svg_width_element-presentation_placeholder">19.571.12</a>, <span class="Attribute">svg:x</span> <a href="#attribute-svg_x_element-presentation_placeholder">19.573.8</a> and <span class="Attribute">svg:y</span> <a href="#attribute-svg_y_element-presentation_placeholder">19.577.8</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;presentation:placeholder&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a16_43Chart_Styles"><span style="margin-right:0.127cm;">16.43</span></a><a id="__RefHeading__1416482_253892949"/><a id="Chart_Styles"/>Chart Styles</h2><p class="Text_20_body">Chart styles are <span class="Element">&lt;style:style&gt;</span> elements that have the family <span class="Attribute_20_Value">chart</span>.</p><p class="Text_20_body">There are two style inheritance models at work with chart styles. The first model, is standard style inheritance as described in <span class="Element">&lt;style:style&gt;</span>. <a href="#element-style_style">16.2</a> The second model is inheritance between elements representing parts of a chart.</p><p class="Text_20_body">If an attribute is not specified with a chart style on a <span class="Element">&lt;chart:data-point&gt;</span> element, the specification of that attribute on its parent <span class="Element">&lt;chart:series&gt;</span> element is used. If the attribute is not specified on the parent <span class="Element">&lt;chart:series&gt;</span> element, then the specification of that attribute on its ancestor <span class="Element">&lt;chart:plot-area&gt;</span> element is used. </p><p class="Text_20_body">Chart styles may define paragraph and text properties. These are applied to paragraphs contained in chart elements unless they are over-ridden by paragraph styles that are specified by the paragraph elements themselves. </p><h1 class="Heading_20_1"><a id="a17Formatting_Elements"><span style="margin-right:0.127cm;">17</span></a><a id="__RefHeading__35406978"/><a id="Formatting_Properties"/>Formatting Elements</h1><h2 class="Heading_20_2"><a id="a17_1General"><span style="margin-right:0.127cm;">17.1</span></a><a id="__RefHeading__1416484_253892949"/>General</h2><p class="Text_20_body">A document can contain multiple style elements. Formatting properties are attributes and child elements of formatting properties elements, which are described in this chapter, and which are child elements of style elements. This container relationship means:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Formatting properties can be addressed by <a title="Cascading Style Sheets, level 2" href="http://www.w3.org/TR/1998/REC-CSS2-19980512">[CSS2]</a> or <a title="XSL Transformations (XSLT) Version 1.0" href="http://www.w3.org/TR/1999/REC-xslt-19991116">[XSLT]</a> stylesheets regardless of the style type.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Styles may contain additional information that is not defined by formatting properties.<span class="odfLiEnd"/> </p></li></ul><h2 class="Heading_20_2"><a id="a17_2_style_page-layout-properties_"><span style="margin-right:0.127cm;">17.2</span></a><a id="__RefHeading__1416486_253892949"/><a id="element-style_page-layout-properties"/>&lt;style:page-layout-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:page-layout-properties&gt;</span> element acts as a container for attributes and elements that define a page layout.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:page-layout-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-page-layout&gt;</span> <a href="#element-style_default-page-layout">16.8</a> and <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout">16.5</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:page-layout-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:border</span> <a href="#property-fo_border">20.176.2</a>, <span class="Attribute">fo:border-bottom</span> <a href="#property-fo_border-bottom">20.176.3</a>, <span class="Attribute">fo:border-left</span> <a href="#property-fo_border-left">20.176.4</a>, <span class="Attribute">fo:border-right</span> <a href="#property-fo_border-right">20.176.5</a>, <span class="Attribute">fo:border-top</span> <a href="#property-fo_border-top">20.176.6</a>, <span class="Attribute">fo:margin</span> <a href="#property-fo_margin">20.198</a>, <span class="Attribute">fo:margin-bottom</span> <a href="#property-fo_margin-bottom">20.199</a>, <span class="Attribute">fo:margin-left</span> <a href="#property-fo_margin-left">20.200</a>, <span class="Attribute">fo:margin-right</span> <a href="#property-fo_margin-right">20.201</a>, <span class="Attribute">fo:margin-top</span> <a href="#property-fo_margin-top">20.202</a>, <span class="Attribute">fo:padding</span> <a href="#property-fo_padding">20.210</a>, <span class="Attribute">fo:padding-bottom</span> <a href="#property-fo_padding-bottom">20.211</a>, <span class="Attribute">fo:padding-left</span> <a href="#property-fo_padding-left">20.212</a>, <span class="Attribute">fo:padding-right</span> <a href="#property-fo_padding-right">20.213</a>, <span class="Attribute">fo:padding-top</span> <a href="#property-fo_padding-top">20.214</a>, <span class="Attribute">fo:page-height</span> <a href="#property-fo_page-height">20.208</a>, <span class="Attribute">fo:page-width</span> <a href="#property-fo_page-width">20.209</a>, <span class="Attribute">style:border-line-width</span> <a href="#property-style_border-line-width">20.241</a>, <span class="Attribute">style:border-line-width-bottom</span> <a href="#property-style_border-line-width-bottom">20.242</a>, <span class="Attribute">style:border-line-width-left</span> <a href="#property-style_border-line-width-left">20.243</a>, <span class="Attribute">style:border-line-width-right</span> <a href="#property-style_border-line-width-right">20.244</a>, <span class="Attribute">style:border-line-width-top</span> <a href="#property-style_border-line-width-top">20.245</a>, <span class="Attribute">style:first-page-number</span> <a href="#property-style_first-page-number">20.258</a>, <span class="Attribute">style:footnote-max-height</span> <a href="#property-style_footnote-max-height">20.288</a>, <span class="Attribute">style:layout-grid-base-height</span> <a href="#property-style_layout-grid-base-height">20.296</a>, <span class="Attribute">style:layout-grid-base-width</span> <a href="#property-style_layout-grid-base-width">20.297</a>, <span class="Attribute">style:layout-grid-color</span> <a href="#property-style_layout-grid-color">20.298</a>, <span class="Attribute">style:layout-grid-display</span> <a href="#property-style_layout-grid-display">20.299</a>, <span class="Attribute">style:layout-grid-lines</span> <a href="#property-style_layout-grid-lines">20.300</a>, <span class="Attribute">style:layout-grid-mode</span> <a href="#property-style_layout-grid-mode">20.301</a>, <span class="Attribute">style:layout-grid-print</span> <a href="#property-style_layout-grid-print">20.302</a>, <span class="Attribute">style:layout-grid-ruby-below</span> <a href="#property-style_layout-grid-ruby-below">20.303</a>, <span class="Attribute">style:layout-grid-ruby-height</span> <a href="#property-style_layout-grid-ruby-height">20.304</a>, <span class="Attribute">style:layout-grid-snap-to</span> <a href="#property-style_layout-grid-snap-to">20.305</a>, <span class="Attribute">style:layout-grid-standard-mode</span> <a href="#property-style_layout-grid-standard-mode">20.306</a>, <span class="Attribute">style:num-format</span> <a href="#property-style_num-format">20.314</a>, <span class="Attribute">style:num-letter-sync</span> <a href="#property-style_num-letter-sync">20.315</a>, <span class="Attribute">style:num-prefix</span> <a href="#property-style_num-prefix">20.316</a>, <span class="Attribute">style:num-suffix</span> <a href="#property-style_num-suffix">20.317</a>, <span class="Attribute">style:paper-tray-name</span> <a href="#property-style_paper-tray-name">20.321</a>, <span class="Attribute">style:print</span> <a href="#property-style_print">20.322</a>, <span class="Attribute">style:print-orientation</span> <a href="#property-style_print-orientation">20.325</a>, <span class="Attribute">style:print-page-order</span> <a href="#property-style_print-page-order">20.324</a>, <span class="Attribute">style:register-truth-ref-style-name</span> <a href="#property-style_register-truth-ref-style-name">20.329</a>, <span class="Attribute">style:scale-to</span> <a href="#property-style_scale-to">20.344</a>, <span class="Attribute">style:scale-to-pages</span> <a href="#property-style_scale-to-pages">20.345</a>, <span class="Attribute">style:shadow</span> <a href="#property-style_shadow">20.349</a>, <span class="Attribute">style:table-centering</span> <a href="#property-style_table-centering">20.353</a> and <span class="Attribute">style:writing-mode</span> <a href="#property-style_writing-mode_element-style_page-layout-properties">20.394.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:page-layout-properties&gt;</span> element has the following child elements: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a> and <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><h2 class="Heading_20_2"><a id="a17_3_style_background-image_"><span style="margin-right:0.127cm;">17.3</span></a><a id="__RefHeading__1416488_253892949"/><a id="element-style_background-image"/>&lt;style:background-image&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:background-image&gt;</span> element specifies an image as a background.</p><p class="Text_20_body">If the <span class="Element">&lt;style:background-image&gt;</span> element is empty and if there is no color specified by an <span class="Attribute">fo:background-color</span> element in the same formatting properties element, the background color is set to transparent.</p><p class="Note"><span class="Note_20_Label">Note:</span> The <span class="Attribute">fo:background</span><span class="Attribute">-color</span> property also sets a background attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:background-image&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>, <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>, <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a> and <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:background-image&gt;</span> element has the following attributes: <span class="Attribute">draw:opacity</span> <a href="#attribute-draw_opacity">19.202</a>, <span class="Attribute">style:filter-name</span> <a href="#attribute-style_filter-name">19.477</a>, <span class="Attribute">style:position</span> <a href="#attribute-style_position_element-style_background-image">19.508.2</a>, <span class="Attribute">style:repeat</span> <a href="#attribute-style_repeat">19.511</a>, <span class="Attribute">xlink:actuate</span> <a href="#attribute-xlink_actuate">19.909</a>, <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-style_background-image">19.910.28</a>, <span class="Attribute">xlink:show</span> <a href="#attribute-xlink_show">19.911</a> and <span class="Attribute">xlink:type</span> <a href="#attribute-xlink_type">19.913</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:background-image&gt;</span> element has the following child element: <span class="Element">&lt;office:binary-data&gt;</span> <a href="#element-office_binary-data">10.4.5</a>.</p><h2 class="Heading_20_2"><a id="a17_4_style_footnote-sep_"><span style="margin-right:0.127cm;">17.4</span></a><a id="__RefHeading__1416490_253892949"/><a id="element-style_footnote-sep"/>&lt;style:footnote-sep&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:footnote-sep&gt;</span> element specifies the line that separates a footnote area from a body text area on a page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:footnote-sep&gt;</span> element is usable within the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:footnote-sep&gt;</span> element has the following attributes: <span class="Attribute">style:adjustment</span> <a href="#attribute-style_adjustment">19.461</a>, <span class="Attribute">style:color</span> <a href="#attribute-style_color">19.467</a>, <span class="Attribute">style:distance-after-sep</span> <a href="#attribute-style_distance-after-sep">19.475</a>, <span class="Attribute">style:distance-before-sep</span> <a href="#attribute-style_distance-before-sep">19.474</a>, <span class="Attribute">style:line-style</span> <a href="#attribute-style_line-style">19.493</a>, <span class="Attribute">style:rel-width</span> <a href="#attribute-style_rel-width_element-style_footnote-sep">19.510.4</a> and <span class="Attribute">style:width</span> <a href="#attribute-style_width_element-style_footnote-sep">19.518.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:footnote-sep&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_5_style_header-footer-properties_"><span style="margin-right:0.127cm;">17.5</span></a><a id="__RefHeading__1416492_253892949"/><a id="element-style_header-footer-properties"/>&lt;style:header-footer-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:header-footer-properties&gt;</span> element specifies formatting properties for both headers and footers.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:header-footer-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:footer-style&gt;</span> <a href="#element-style_footer-style">16.7</a> and <span class="Element">&lt;style:header-style&gt;</span> <a href="#element-style_header-style">16.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:header-footer-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:border</span> <a href="#property-fo_border">20.176.2</a>, <span class="Attribute">fo:border-bottom</span> <a href="#property-fo_border-bottom">20.176.3</a>, <span class="Attribute">fo:border-left</span> <a href="#property-fo_border-left">20.176.4</a>, <span class="Attribute">fo:border-right</span> <a href="#property-fo_border-right">20.176.5</a>, <span class="Attribute">fo:border-top</span> <a href="#property-fo_border-top">20.176.6</a>, <span class="Attribute">fo:margin</span> <a href="#property-fo_margin">20.198</a>, <span class="Attribute">fo:margin-bottom</span> <a href="#property-fo_margin-bottom">20.199</a>, <span class="Attribute">fo:margin-left</span> <a href="#property-fo_margin-left">20.200</a>, <span class="Attribute">fo:margin-right</span> <a href="#property-fo_margin-right">20.201</a>, <span class="Attribute">fo:margin-top</span> <a href="#property-fo_margin-top">20.202</a>, <span class="Attribute">fo:min-height</span> <a href="#property-fo_min-height_element-style_header-footer-properties">20.205.2</a>, <span class="Attribute">fo:padding</span> <a href="#property-fo_padding">20.210</a>, <span class="Attribute">fo:padding-bottom</span> <a href="#property-fo_padding-bottom">20.211</a>, <span class="Attribute">fo:padding-left</span> <a href="#property-fo_padding-left">20.212</a>, <span class="Attribute">fo:padding-right</span> <a href="#property-fo_padding-right">20.213</a>, <span class="Attribute">fo:padding-top</span> <a href="#property-fo_padding-top">20.214</a>, <span class="Attribute">style:border-line-width</span> <a href="#property-style_border-line-width">20.241</a>, <span class="Attribute">style:border-line-width-bottom</span> <a href="#property-style_border-line-width-bottom">20.242</a>, <span class="Attribute">style:border-line-width-left</span> <a href="#property-style_border-line-width-left">20.243</a>, <span class="Attribute">style:border-line-width-right</span> <a href="#property-style_border-line-width-right">20.244</a>, <span class="Attribute">style:border-line-width-top</span> <a href="#property-style_border-line-width-top">20.245</a>, <span class="Attribute">style:dynamic-spacing</span> <a href="#property-style_dynamic-spacing">20.256</a>, <span class="Attribute">style:shadow</span> <a href="#property-style_shadow">20.349</a> and <span class="Attribute">svg:height</span> <a href="#property-svg_height_element-style_header-footer-properties">20.397.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:header-footer-properties&gt;</span> element has the following child element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><h2 class="Heading_20_2"><a id="a17_6_style_paragraph-properties_"><span style="margin-right:0.127cm;">17.6</span></a><a id="__RefHeading__1416494_253892949"/><a id="element-style_paragraph-properties"/>&lt;style:paragraph-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:paragraph-properties&gt;</span> element specifies formatting properties for paragraphs.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:paragraph-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:paragraph-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:border</span> <a href="#property-fo_border">20.176.2</a>, <span class="Attribute">fo:border-bottom</span> <a href="#property-fo_border-bottom">20.176.3</a>, <span class="Attribute">fo:border-left</span> <a href="#property-fo_border-left">20.176.4</a>, <span class="Attribute">fo:border-right</span> <a href="#property-fo_border-right">20.176.5</a>, <span class="Attribute">fo:border-top</span> <a href="#property-fo_border-top">20.176.6</a>, <span class="Attribute">fo:break-after</span> <a href="#property-fo_break-after">20.177</a>, <span class="Attribute">fo:break-before</span> <a href="#property-fo_break-before">20.178</a>, <span class="Attribute">fo:hyphenation-keep</span> <a href="#property-fo_hyphenation-keep">20.189</a>, <span class="Attribute">fo:hyphenation-ladder-count</span> <a href="#property-fo_hyphenation-ladder-count">20.190</a>, <span class="Attribute">fo:keep-together</span> <a href="#property-fo_keep-together">20.193</a>, <span class="Attribute">fo:keep-with-next</span> <a href="#property-fo_keep-with-next">20.194</a>, <span class="Attribute">fo:line-height</span> <a href="#property-fo_line-height">20.197</a>, <span class="Attribute">fo:margin</span> <a href="#property-fo_margin">20.198</a>, <span class="Attribute">fo:margin-bottom</span> <a href="#property-fo_margin-bottom">20.199</a>, <span class="Attribute">fo:margin-left</span> <a href="#property-fo_margin-left">20.200</a>, <span class="Attribute">fo:margin-right</span> <a href="#property-fo_margin-right">20.201</a>, <span class="Attribute">fo:margin-top</span> <a href="#property-fo_margin-top">20.202</a>, <span class="Attribute">fo:orphans</span> <a href="#property-fo_orphans">20.207</a>, <span class="Attribute">fo:padding</span> <a href="#property-fo_padding">20.210</a>, <span class="Attribute">fo:padding-bottom</span> <a href="#property-fo_padding-bottom">20.211</a>, <span class="Attribute">fo:padding-left</span> <a href="#property-fo_padding-left">20.212</a>, <span class="Attribute">fo:padding-right</span> <a href="#property-fo_padding-right">20.213</a>, <span class="Attribute">fo:padding-top</span> <a href="#property-fo_padding-top">20.214</a>, <span class="Attribute">fo:text-align</span> <a href="#property-fo_text-align_element-style_paragraph-properties">20.216.1</a>, <span class="Attribute">fo:text-align-last</span> <a href="#property-fo_text-align-last">20.217</a>, <span class="Attribute">fo:text-indent</span> <a href="#property-fo_text-indent">20.218</a>, <span class="Attribute">fo:widows</span> <a href="#property-fo_widows">20.221</a>, <span class="Attribute">style:auto-text-indent</span> <a href="#property-style_auto-text-indent">20.239</a>, <span class="Attribute">style:background-transparency</span> <a href="#property-style_background-transparency">20.240</a>, <span class="Attribute">style:border-line-width</span> <a href="#property-style_border-line-width">20.241</a>, <span class="Attribute">style:border-line-width-bottom</span> <a href="#property-style_border-line-width-bottom">20.242</a>, <span class="Attribute">style:border-line-width-left</span> <a href="#property-style_border-line-width-left">20.243</a>, <span class="Attribute">style:border-line-width-right</span> <a href="#property-style_border-line-width-right">20.244</a>, <span class="Attribute">style:border-line-width-top</span> <a href="#property-style_border-line-width-top">20.245</a>, <span class="Attribute">style:font-independent-line-spacing</span> <a href="#property-style_font-independent-line-spacing">20.268</a>, <span class="Attribute">style:join-border</span> <a href="#property-style_join-border">20.292</a>, <span class="Attribute">style:justify-single-word</span> <a href="#property-style_justify-single-word">20.293</a>, <span class="Attribute">style:line-break</span> <a href="#property-style_line-break">20.307</a>, <span class="Attribute">style:line-height-at-least</span> <a href="#property-style_line-height-at-least">20.309</a>, <span class="Attribute">style:line-spacing</span> <a href="#property-style_line-spacing">20.310</a>, <span class="Attribute">style:page-number</span> <a href="#property-style_page-number">20.320</a>, <span class="Attribute">style:punctuation-wrap</span> <a href="#property-style_punctuation-wrap">20.327</a>, <span class="Attribute">style:register-true</span> <a href="#property-style_register-true">20.328</a>, <span class="Attribute">style:shadow</span> <a href="#property-style_shadow">20.349</a>, <span class="Attribute">style:snap-to-layout-grid</span> <a href="#property-style_snap-to-layout-grid">20.351</a>, <span class="Attribute">style:tab-stop-distance</span> <a href="#property-style_tab-stop-distance">20.352</a>, <span class="Attribute">style:text-autospace</span> <a href="#property-style_text-autospace">20.355</a>, <span class="Attribute">style:vertical-align</span> <a href="#property-style_vertical-align_element-style_paragraph-properties">20.386.1</a>, <span class="Attribute">style:writing-mode</span> <a href="#property-style_writing-mode_element-style_paragraph-properties">20.394.4</a>, <span class="Attribute">style:writing-mode-automatic</span> <a href="#property-style_writing-mode-automatic">20.395</a>, <span class="Attribute">text:line-number</span> <a href="#property-text_line-number">20.420</a> and <span class="Attribute">text:number-lines</span> <a href="#property-text_number-lines">20.424</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:paragraph-properties&gt;</span> element has the following child elements: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;style:drop-cap&gt;</span> <a href="#element-style_drop-cap">17.9</a> and <span class="Element">&lt;style:tab-stops&gt;</span> <a href="#element-style_tab-stops">17.7</a>.</p><h2 class="Heading_20_2"><a id="a17_7_style_tab-stops_"><span style="margin-right:0.127cm;">17.7</span></a><a id="__RefHeading__1416496_253892949"/><a id="element-style_tab-stops"/>&lt;style:tab-stops&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:tab-stops&gt;</span> element is a container for <span class="Element">&lt;style:tab-stop&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:tab-stops&gt;</span> element is usable within the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:tab-stops&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:tab-stops&gt;</span> element has the following child element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><h2 class="Heading_20_2"><a id="a17_8_style_tab-stop_"><span style="margin-right:0.127cm;">17.8</span></a><a id="__RefHeading__1416498_253892949"/><a id="element-style_tab-stop"/>&lt;style:tab-stop&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:tab-stop&gt;</span> element defines a tab stop.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:tab-stop&gt;</span> element is usable within the following element: <span class="Element">&lt;style:tab-stops&gt;</span> <a href="#element-style_tab-stops">17.7</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:tab-stop&gt;</span> element has the following attributes: <span class="Attribute">style:char</span> <a href="#attribute-style_char">19.465</a>, <span class="Attribute">style:leader-color</span> <a href="#attribute-style_leader-color">19.484</a>, <span class="Attribute">style:leader-style</span> <a href="#attribute-style_leader-style">19.485</a>, <span class="Attribute">style:leader-text</span> <a href="#attribute-style_leader-text">19.486</a>, <span class="Attribute">style:leader-text-style</span> <a href="#attribute-style_leader-text-style">19.487</a>, <span class="Attribute">style:leader-type</span> <a href="#attribute-style_leader-type">19.488</a>, <span class="Attribute">style:leader-width</span> <a href="#attribute-style_leader-width">19.489</a>, <span class="Attribute">style:position</span> <a href="#attribute-style_position_element-style_tab-stop">19.508.3</a>, <span class="Attribute">style:type</span> <a href="#attribute-style_type_element-style_tab-stop">19.515.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:tab-stop&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_9_style_drop-cap_"><span style="margin-right:0.127cm;">17.9</span></a><a id="__RefHeading__1416500_253892949"/><a id="element-style_drop-cap"/>&lt;style:drop-cap&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:drop-cap&gt;</span> element specifies if the first character or more of a paragraph is displayed in a larger font, that spans multiple lines. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:drop-cap&gt;</span> element is usable within the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:drop-cap&gt;</span> element has the following attributes: <span class="Attribute">style:distance</span> <a href="#attribute-style_distance">19.473</a>, <span class="Attribute">style:length</span> <a href="#attribute-style_length">19.492</a>, <span class="Attribute">style:lines</span> <a href="#attribute-style_lines">19.494</a> and <span class="Attribute">style:style-name</span> <a href="#attribute-style_style-name">19.514</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:drop-cap&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_10_style_ruby-properties_"><span style="margin-right:0.127cm;">17.10</span></a><a id="__RefHeading__1416502_253892949"/><a id="element-style_ruby-properties"/>&lt;style:ruby-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:ruby-properties&gt;</span> element specifies formatting properties for ruby elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:ruby-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:ruby-properties&gt;</span> element has the following attributes: <span class="Attribute">style:ruby-align</span> <a href="#property-style_ruby-align">20.341</a> and <span class="Attribute">style:ruby-position</span> <a href="#property-style_ruby-position">20.342</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:ruby-properties&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_11_style_section-properties_"><span style="margin-right:0.127cm;">17.11</span></a><a id="__RefHeading__1416504_253892949"/><a id="element-style_section-properties"/>&lt;style:section-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:section-properties&gt;</span> element defined the formatting properties used by section styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:section-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:section-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:margin-left</span> <a href="#property-fo_margin-left">20.200</a>, <span class="Attribute">fo:margin-right</span> <a href="#property-fo_margin-right">20.201</a>, <span class="Attribute">style:editable</span> <a href="#property-style_editable">20.257</a>, <span class="Attribute">style:protect</span> <a href="#property-style_protect_element-style_section-properties">20.326.3</a>, <span class="Attribute">style:writing-mode</span> <a href="#property-style_writing-mode_element-style_section-properties">20.394.5</a> and <span class="Attribute">text:dont-balance-text-columns</span> <a href="#property-text_dont-balance-text-columns">20.418</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:section-properties&gt;</span> element has the following child elements: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a> and <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><h2 class="Heading_20_2"><a id="a17_12_style_columns_"><span style="margin-right:0.127cm;">17.12</span></a><a id="__RefHeading__1416506_253892949"/><a id="element-style_columns"/>&lt;style:columns&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:columns&gt;</span> element specifies the formatting properties of columns by its attributes and its child elements. If it does not contain any column formatting properties, all columns are assigned the same width.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:columns&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a> and <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:columns&gt;</span> element has the following attributes: <span class="Attribute">fo:column-count</span> <a href="#attribute-fo_column-count">19.232</a> and <span class="Attribute">fo:column-gap</span> <a href="#attribute-fo_column-gap">19.233</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:columns&gt;</span> element has the following child elements: <span class="Element">&lt;style:column&gt;</span> <a href="#element-style_column">17.13</a> and <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a>.</p><h2 class="Heading_20_2"><a id="a17_13_style_column_"><span style="margin-right:0.127cm;">17.13</span></a><a id="__RefHeading__1416508_253892949"/><a id="element-style_column"/>&lt;style:column&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:column&gt;</span> element specifies formatting properties for a column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:column&gt;</span> element is usable within the following element: <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:column&gt;</span> element has the following attributes: <span class="Attribute">fo:end-indent</span> <a href="#attribute-fo_end-indent">19.235</a>, <span class="Attribute">fo:space-after</span> <a href="#attribute-fo_space-after">19.243</a>, <span class="Attribute">fo:space-before</span> <a href="#attribute-fo_space-before">19.244</a>, <span class="Attribute">fo:start-indent</span> <a href="#attribute-fo_start-indent">19.245</a> and <span class="Attribute">style:rel-width</span> <a href="#attribute-style_rel-width_element-style_column">19.510.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:column&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_14_style_column-sep_"><span style="margin-right:0.127cm;">17.14</span></a><a id="__RefHeading__1416510_253892949"/><a id="element-style_column-sep"/>&lt;style:column-sep&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:column-sep&gt;</span> element specifies a separator line between columns. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:column-sep&gt;</span> element is usable within the following element: <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:column-sep&gt;</span> element has the following attributes: <span class="Attribute">style:color</span> <a href="#attribute-style_color">19.467</a>, <span class="Attribute">style:height</span> <a href="#attribute-style_height">19.482</a>, <span class="Attribute">style:style</span> <a href="#attribute-style_style">19.513</a>, <span class="Attribute">style:vertical-align</span> <a href="#attribute-style_vertical-align">19.516</a> and <span class="Attribute">style:width</span> <a href="#attribute-style_width_element-style_column-sep">19.518.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:column-sep&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_15_style_table-properties_"><span style="margin-right:0.127cm;">17.15</span></a><a id="__RefHeading__1416512_253892949"/><a id="element-style_table-properties"/><a id="Table_Formatting_Properties"/>&lt;style:table-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:table-properties&gt;</span> element specifies formatting properties for tables. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:table-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:table-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:break-after</span> <a href="#property-fo_break-after">20.177</a>, <span class="Attribute">fo:break-before</span> <a href="#property-fo_break-before">20.178</a>, <span class="Attribute">fo:keep-with-next</span> <a href="#property-fo_keep-with-next">20.194</a>, <span class="Attribute">fo:margin</span> <a href="#property-fo_margin">20.198</a>, <span class="Attribute">fo:margin-bottom</span> <a href="#property-fo_margin-bottom">20.199</a>, <span class="Attribute">fo:margin-left</span> <a href="#property-fo_margin-left">20.200</a>, <span class="Attribute">fo:margin-right</span> <a href="#property-fo_margin-right">20.201</a>, <span class="Attribute">fo:margin-top</span> <a href="#property-fo_margin-top">20.202</a>, <span class="Attribute">style:may-break-between-rows</span> <a href="#property-style_may-break-between-rows">20.311</a>, <span class="Attribute">style:page-number</span> <a href="#property-style_page-number">20.320</a>, <span class="Attribute">style:rel-width</span> <a href="#property-style_rel-width_element-style_table-properties">20.332.2</a>, <span class="Attribute">style:shadow</span> <a href="#property-style_shadow">20.349</a>, <span class="Attribute">style:width</span> <a href="#property-style_width">20.389</a>, <span class="Attribute">style:writing-mode</span> <a href="#property-style_writing-mode_element-style_table-properties">20.394.7</a>, <span class="Attribute">table:align</span> <a href="#property-table_align">20.404</a>, <span class="Attribute">table:border-model</span> <a href="#property-table_border-model">20.405</a> and <span class="Attribute">table:display</span> <a href="#property-table_display">20.406</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:table-properties&gt;</span> element has the following child element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><h2 class="Heading_20_2"><a id="a17_16_style_table-column-properties_"><span style="margin-right:0.127cm;">17.16</span></a><a id="__RefHeading__1416514_253892949"/><a id="element-style_table-column-properties"/>&lt;style:table-column-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:table-column-properties&gt;</span> element specifies formatting properties for table columns.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:table-column-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:table-column-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:break-after</span> <a href="#property-fo_break-after">20.177</a>, <span class="Attribute">fo:break-before</span> <a href="#property-fo_break-before">20.178</a>, <span class="Attribute">style:column-width</span> <a href="#property-style_column-width">20.247</a>, <span class="Attribute">style:rel-column-width</span> <a href="#property-style_rel-column-width">20.330</a> and <span class="Attribute">style:use-optimal-column-width</span> <a href="#property-style_use-optimal-column-width">20.383</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:table-column-properties&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_17_style_table-row-properties_"><span style="margin-right:0.127cm;">17.17</span></a><a id="__RefHeading__1416516_253892949"/><a id="element-style_table-row-properties"/>&lt;style:table-row-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:table-row-properties&gt;</span> element specifies formatting properties for table rows.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:table-row-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:table-row-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:break-after</span> <a href="#property-fo_break-after">20.177</a>, <span class="Attribute">fo:break-before</span> <a href="#property-fo_break-before">20.178</a>, <span class="Attribute">fo:keep-together</span> <a href="#property-fo_keep-together">20.193</a>, <span class="Attribute">style:min-row-height</span> <a href="#property-style_min-row-height">20.312</a>, <span class="Attribute">style:row-height</span> <a href="#property-style_row-height">20.340</a> and <span class="Attribute">style:use-optimal-row-height</span> <a href="#property-style_use-optimal-row-height">20.384</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:table-row-properties&gt;</span> element has the following child element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><h2 class="Heading_20_2"><a id="a17_18_style_table-cell-properties_"><span style="margin-right:0.127cm;">17.18</span></a><a id="__RefHeading__1416518_253892949"/><a id="element-style_table-cell-properties"/>&lt;style:table-cell-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:table-cell-properties&gt;</span> element specifies formatting properties for cells.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:table-cell-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:table-cell-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:border</span> <a href="#property-fo_border">20.176.2</a>, <span class="Attribute">fo:border-bottom</span> <a href="#property-fo_border-bottom">20.176.3</a>, <span class="Attribute">fo:border-left</span> <a href="#property-fo_border-left">20.176.4</a>, <span class="Attribute">fo:border-right</span> <a href="#property-fo_border-right">20.176.5</a>, <span class="Attribute">fo:border-top</span> <a href="#property-fo_border-top">20.176.6</a>, <span class="Attribute">fo:padding</span> <a href="#property-fo_padding">20.210</a>, <span class="Attribute">fo:padding-bottom</span> <a href="#property-fo_padding-bottom">20.211</a>, <span class="Attribute">fo:padding-left</span> <a href="#property-fo_padding-left">20.212</a>, <span class="Attribute">fo:padding-right</span> <a href="#property-fo_padding-right">20.213</a>, <span class="Attribute">fo:padding-top</span> <a href="#property-fo_padding-top">20.214</a>, <span class="Attribute">fo:wrap-option</span> <a href="#property-fo_wrap-option">20.223</a>, <span class="Attribute">style:border-line-width</span> <a href="#property-style_border-line-width">20.241</a>, <span class="Attribute">style:border-line-width-bottom</span> <a href="#property-style_border-line-width-bottom">20.242</a>, <span class="Attribute">style:border-line-width-left</span> <a href="#property-style_border-line-width-left">20.243</a>, <span class="Attribute">style:border-line-width-right</span> <a href="#property-style_border-line-width-right">20.244</a>, <span class="Attribute">style:border-line-width-top</span> <a href="#property-style_border-line-width-top">20.245</a>, <span class="Attribute">style:cell-protect</span> <a href="#property-style_cell-protect">20.246</a>, <span class="Attribute">style:decimal-places</span> <a href="#property-style_decimal-places">20.250</a>, <span class="Attribute">style:diagonal-bl-tr</span> <a href="#property-style_diagonal-bl-tr">20.251</a>, <span class="Attribute">style:diagonal-bl-tr-widths</span> <a href="#property-style_diagonal-bl-tr-widths">20.252</a>, <span class="Attribute">style:diagonal-tl-br</span> <a href="#property-style_diagonal-tl-br">20.253</a>, <span class="Attribute">style:diagonal-tl-br-widths</span> <a href="#property-style_diagonal-tl-br-widths">20.254</a>, <span class="Attribute">style:direction</span> <a href="#property-style_direction">20.255</a>, <span class="Attribute">style:glyph-orientation-vertical</span> <a href="#property-style_glyph-orientation-vertical">20.289</a>, <span class="Attribute">style:print-content</span> <a href="#property-style_print-content_element-style_table-cell-properties">20.323.3</a>, <span class="Attribute">style:repeat-content</span> <a href="#property-style_repeat-content">20.334</a>, <span class="Attribute">style:rotation-</span><span class="Attribute">align</span> <a href="#property-style_rotation-align">20.338</a>, <span class="Attribute">style:rotation-angle</span> <a href="#property-style_rotation-angle">20.339</a>, <span class="Attribute">style:shadow</span> <a href="#property-style_shadow">20.349</a>, <span class="Attribute">style:shrink-to-fit</span> <a href="#property-style_shrink-to-fit">20.350</a>, <span class="Attribute">style:text-align-source</span> <a href="#property-style_text-align-source">20.354</a>, <span class="Attribute">style:vertical-align</span> <a href="#property-style_vertical-align_element-style_table-cell-properties">20.386.2</a> and <span class="Attribute">style:writing-mode</span> <a href="#property-style_writing-mode_element-style_table-cell-properties">20.394.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:table-cell-properties&gt;</span> element has the following child element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><h2 class="Heading_20_2"><a id="a17_19_style_list-level-properties_"><span style="margin-right:0.127cm;">17.19</span></a><a id="__RefHeading__1416520_253892949"/><a id="element-style_list-level-properties"/><a id="List_Level_Style_Properties"/>&lt;style:list-level-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:list-level-properties&gt;</span> element specifies formatting properties for a list level.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:list-level-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>, <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a> and <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:list-level-properties&gt;</span> element has the following attributes: <span class="Attribute">fo:height</span> <a href="#property-fo_height">20.187</a>, <span class="Attribute">fo:text-align</span> <a href="#property-fo_text-align_element-style_list-level-properties">20.216.2</a>, <span class="Attribute">fo:width</span> <a href="#property-fo_width">20.222</a>, <span class="Attribute">style:font-name</span> <a href="#property-style_font-name">20.269</a>, <span class="Attribute">style:vertical-pos</span> <a href="#property-style_vertical-pos">20.387</a>, <span class="Attribute">style:vertical-rel</span> <a href="#property-style_vertical-rel">20.388</a>, <span class="Attribute">svg:y</span> <a href="#property-svg_y_element-style_list-level-properties">20.402.2</a>, <span class="Attribute">text:list-level-position-and-space-mode</span> <a href="#property-text_list-level-position-and-space-mode">20.421</a>, <span class="Attribute">text:min-label-distance</span> <a href="#property-text_min-label-distance">20.422</a>, <span class="Attribute">text:min-label-width</span> <a href="#property-text_min-label-width">20.423</a> and <span class="Attribute">text:space-before</span> <a href="#property-text_space-before">20.425</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:list-level-properties&gt;</span> element has the following child element: <span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a>.</p><h2 class="Heading_20_2"><a id="a17_20_style_list-level-label-alignment_"><span style="margin-right:0.127cm;">17.20</span></a><a id="__RefHeading__1416522_253892949"/><a id="element-style_list-level-label-alignment"/>&lt;style:list-level-label-alignment&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:list-level-label-alignment&gt;</span> element specifies the position and spacing of a list label and its list item.</p><p class="Text_20_body">The element will be evaluated only if the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute has the value <span class="Attribute_20_Value">label-alignment</span>. </p><p class="Text_20_body">The <span class="Attribute">fo:text-indent</span> and <span class="Attribute">fo:margin-left</span> attributes specify the indent and margin for the text lines of a list item. The text lines of a list item contains the list level properties specific content and the text of the paragraph inside the list item. The value <span class="Attribute">fo:text-indent</span> + <span class="Attribute">fo:margin-left</span> specifies the indent of the first text line of the list item. This position is also the alignment position for the list label, because the value of <span class="Attribute">text:min-label-width</span> is treated as 0. <a href="#attribute-fo_text-indent">19.246</a>, <a href="#property-text_list-level-position-and-space-mode">20.421</a></p><p class="Text_20_body">The <span class="Attribute">fo:text-indent</span> and <span class="Attribute">fo:margin-left</span> attributes are evaluated only for paragraphs inside list items whose paragraph styles do not specify them. If one of the two properties, or both, are specified by the paragraph style, the text indent and/or left margin are taken from the paragraph style. In this case the paragraph style's properties are used to determine the indent and margin for the text lines and thus also the alignment position.</p><p class="Text_20_body">  </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:list-level-label-alignment&gt;</span> element is usable within the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:list-level-label-alignment&gt;</span> element has the following attributes: <span class="Attribute">fo:margin-left</span> <a href="#attribute-fo_margin-left">19.237</a>, <span class="Attribute">fo:text-indent</span> <a href="#attribute-fo_text-indent">19.246</a>, <span class="Attribute">text:label-followed-by</span> <a href="#attribute-text_label-followed-by">19.827</a> and <span class="Attribute">text:list-tab-stop-position</span> <a href="#attribute-text_list-tab-stop-position">19.830</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:list-level-label-alignment&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_21_style_graphic-properties_"><span style="margin-right:0.127cm;">17.21</span></a><a id="__RefHeading__1416524_253892949"/><a id="element-style_graphic-properties"/><a id="DDE_LINK11"/>&lt;style:graphic-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:graphic-properties&gt;</span> element specifies formatting properties for chart, draw, graphic, and frame elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:graphic-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:graphic-properties&gt;</span> element has the following attributes: <span class="Attribute">dr3d:ambient-color</span> <a href="#property-dr3d_ambient-color">20.67</a>, <span class="Attribute">dr3d:backface-culling</span> <a href="#property-dr3d_backface-culling">20.69</a>, <span class="Attribute">dr3d:back-scale</span> <a href="#property-dr3d_back-scale">20.68</a>, <span class="Attribute">dr3d:close-back</span> <a href="#property-dr3d_close-back">20.70</a>, <span class="Attribute">dr3d:close-front</span> <a href="#property-dr3d_close-front">20.71</a>, <span class="Attribute">dr3d:depth</span> <a href="#property-dr3d_depth">20.72</a>, <span class="Attribute">dr3d:diffuse-color</span> <a href="#property-dr3d_diffuse-color">20.73</a>, <span class="Attribute">dr3d:edge-rounding</span> <a href="#property-dr3d_edge-rounding">20.74</a>, <span class="Attribute">dr3d:edge-rounding-mode</span> <a href="#property-dr3d_edge-rounding-mode">20.75</a>, <span class="Attribute">dr3d:emissive-color</span> <a href="#property-dr3d_emissive-color">20.76</a>, <span class="Attribute">dr3d:end-angle</span> <a href="#property-dr3d_end-angle">20.77</a>, <span class="Attribute">dr3d:horizontal-segments</span> <a href="#property-dr3d_horizontal-segments">20.78</a>, <span class="Attribute">dr3d:lighting-mode</span> <a href="#property-dr3d_lighting-mode">20.79</a>, <span class="Attribute">dr3d:normals-direction</span> <a href="#property-dr3d_normals-direction">20.80</a>, <span class="Attribute">dr3d:normals-kind</span> <a href="#property-dr3d_normals-kind">20.81</a>, <span class="Attribute">dr3d:shadow</span> <a href="#property-dr3d_shadow">20.82</a>, <span class="Attribute">dr3d:shininess</span> <a href="#property-dr3d_shininess">20.83</a>, <span class="Attribute">dr3d:specular-color</span> <a href="#property-dr3d_specular-color">20.84</a>, <span class="Attribute">dr3d:texture-filter</span> <a href="#property-dr3d_texture-filter">20.85</a>, <span class="Attribute">dr3d:texture-generation-mode-x</span> <a href="#property-dr3d_texture-generation-mode-x">20.88</a>, <span class="Attribute">dr3d:texture-generation-mode-y</span> <a href="#property-dr3d_texture-generation-mode-y">20.89</a>, <span class="Attribute">dr3d:texture-kind</span> <a href="#property-dr3d_texture-kind">20.86</a>, <span class="Attribute">dr3d:texture-mode</span> <a href="#property-dr3d_texture-mode">20.87</a>, <span class="Attribute">dr3d:vertical-segments</span> <a href="#property-dr3d_vertical-segments">20.90</a>, <span class="Attribute">draw:auto-grow-height</span> <a href="#property-draw_auto-grow-height">20.91</a>, <span class="Attribute">draw:auto-grow-width</span> <a href="#property-draw_auto-grow-width">20.92</a>, <span class="Attribute">draw:blue</span> <a href="#property-draw_blue">20.94</a>, <span class="Attribute">draw:caption-angle</span> <a href="#property-draw_caption-angle">20.95</a>, <span class="Attribute">draw:caption-angle-type</span> <a href="#property-draw_caption-angle-type">20.96</a>, <span class="Attribute">draw:caption-escape</span> <a href="#property-draw_caption-escape">20.97</a>, <span class="Attribute">draw:caption-escape-direction</span> <a href="#property-draw_caption-escape-direction">20.98</a>, <span class="Attribute">draw:caption-fit-line-length</span> <a href="#property-draw_caption-fit-line-length">20.99</a>, <span class="Attribute">draw:caption-gap</span> <a href="#property-draw_caption-gap">20.100</a>, <span class="Attribute">draw:caption-line-length</span> <a href="#property-draw_caption-line-length">20.101</a>, <span class="Attribute">draw:caption-type</span> <a href="#property-draw_caption-type">20.102</a>, <span class="Attribute">draw:color-inversion</span> <a href="#property-draw_color-inversion">20.103</a>, <span class="Attribute">draw:color-mode</span> <a href="#property-draw_color-mode">20.104</a>, <span class="Attribute">draw:contrast</span> <a href="#property-draw_contrast">20.105</a>, <span class="Attribute">draw:decimal-places</span> <a href="#property-draw_decimal-places">20.106</a>, <span class="Attribute">draw:draw-aspect</span> <a href="#property-draw_draw-aspect">20.107</a>, <span class="Attribute">draw:end-guide</span> <a href="#property-draw_end-guide">20.108</a>, <span class="Attribute">draw:end-line-spacing-horizontal</span> <a href="#property-draw_end-line-spacing-horizontal">20.109</a>, <span class="Attribute">draw:end-line-spacing-vertical</span> <a href="#property-draw_end-line-spacing-vertical">20.110</a>, <span class="Attribute">draw:fill</span> <a href="#property-draw_fill">20.111</a>, <span class="Attribute">draw:fill-color</span> <a href="#property-draw_fill-color">20.112</a>, <span class="Attribute">draw:fill-gradient-name</span> <a href="#property-draw_fill-gradient-name">20.113</a>, <span class="Attribute">draw:fill-hatch-name</span> <a href="#property-draw_fill-hatch-name">20.114</a>, <span class="Attribute">draw:fill-hatch-solid</span> <a href="#property-draw_fill-hatch-solid">20.115</a>, <span class="Attribute">draw:fill-image-height</span> <a href="#property-draw_fill-image-height">20.116</a>, <span class="Attribute">draw:fill-image-name</span> <a href="#property-draw_fill-image-name">20.117</a>, <span class="Attribute">draw:fill-image-ref-point</span> <a href="#property-draw_fill-image-ref-point">20.118</a>, <span class="Attribute">draw:fill-image-ref-point-x</span> <a href="#property-draw_fill-image-ref-point-x">20.119</a>, <span class="Attribute">draw:fill-image-ref-point-y</span> <a href="#property-draw_fill-image-ref-point-y">20.120</a>, <span class="Attribute">draw:fill-image-width</span> <a href="#property-draw_fill-image-width">20.121</a>, <span class="Attribute">draw:fit-to-contour</span> <a href="#property-draw_fit-to-contour">20.122</a>, <span class="Attribute">draw:fit-to-size</span> <a href="#property-draw_fit-to-size">20.123</a>, <span class="Attribute">draw:frame-display-border</span> <a href="#property-draw_frame-display-border">20.124</a>, <span class="Attribute">draw:frame-display-scrollbar</span> <a href="#property-draw_frame-display-scrollbar">20.126</a>, <span class="Attribute">draw:frame-margin-horizontal</span> <a href="#property-draw_frame-margin-horizontal">20.125</a>, <span class="Attribute">draw:frame-margin-vertical</span> <a href="#property-draw_frame-margin-vertical">20.127</a>, <span class="Attribute">draw:gamma</span> <a href="#property-draw_gamma">20.128</a>, <span class="Attribute">draw:gradient-step-count</span> <a href="#property-draw_gradient-step-count">20.130</a>, <span class="Attribute">draw:green</span> <a href="#property-draw_green">20.129</a>, <span class="Attribute">draw:guide-distance</span> <a href="#property-draw_guide-distance">20.131</a>, <span class="Attribute">draw:guide-overhang</span> <a href="#property-draw_guide-overhang">20.132</a>, <span class="Attribute">draw:image-opacity</span> <a href="#property-draw_image-opacity">20.133</a>, <span class="Attribute">draw:line-distance</span> <a href="#property-draw_line-distance">20.134</a>, <span class="Attribute">draw:luminance</span> <a href="#property-draw_luminance">20.135</a>, <span class="Attribute">draw:marker-end</span> <a href="#property-draw_marker-end">20.136</a>, <span class="Attribute">draw:marker-end-center</span> <a href="#property-draw_marker-end-center">20.137</a>, <span class="Attribute">draw:marker-end-width</span> <a href="#property-draw_marker-end-width">20.138</a>, <span class="Attribute">draw:marker-start</span> <a href="#property-draw_marker-start">20.139</a>, <span class="Attribute">draw:marker-start-center</span> <a href="#property-draw_marker-start-center">20.140</a>, <span class="Attribute">draw:marker-start-width</span> <a href="#property-draw_marker-start-width">20.141</a>, <span class="Attribute">draw:measure-align</span> <a href="#property-draw_measure-align">20.142</a>, <span class="Attribute">draw:measure-vertical-align</span> <a href="#property-draw_measure-vertical-align">20.143</a>, <span class="Attribute">draw:ole-draw-aspect</span> <a href="#property-draw_ole-draw-aspect">20.144</a>, <span class="Attribute">draw:opacity</span> <a href="#property-draw_opacity">20.145</a>, <span class="Attribute">draw:opacity-name</span> <a href="#property-draw_opacity-name">20.146</a>, <span class="Attribute">draw:parallel</span> <a href="#property-draw_parallel">20.147</a>, <span class="Attribute">draw:placing</span> <a href="#property-draw_placing">20.148</a>, <span class="Attribute">draw:red</span> <a href="#property-draw_red">20.149</a>, <span class="Attribute">draw:secondary-fill-color</span> <a href="#property-draw_secondary-fill-color">20.150</a>, <span class="Attribute">draw:shadow</span> <a href="#property-draw_shadow">20.151</a>, <span class="Attribute">draw:shadow-color</span> <a href="#property-draw_shadow-color">20.152</a>, <span class="Attribute">draw:shadow-offset-x</span> <a href="#property-draw_shadow-offset-x">20.153</a>, <span class="Attribute">draw:shadow-offset-y</span> <a href="#property-draw_shadow-offset-y">20.154</a>, <span class="Attribute">draw:shadow-opacity</span> <a href="#property-draw_shadow-opacity">20.155</a>, <span class="Attribute">draw:show-unit</span> <a href="#property-draw_show-unit">20.156</a>, <span class="Attribute">draw:start-guide</span> <a href="#property-draw_start-guide">20.157</a>, <span class="Attribute">draw:start-line-spacing-horizontal</span> <a href="#property-draw_start-line-spacing-horizontal">20.158</a>, <span class="Attribute">draw:start-line-spacing-vertical</span> <a href="#property-draw_start-line-spacing-vertical">20.159</a>, <span class="Attribute">draw:stroke</span> <a href="#property-draw_stroke">20.160</a>, <span class="Attribute">draw:stroke-dash</span> <a href="#property-draw_stroke-dash">20.161</a>, <span class="Attribute">draw:stroke-dash-names</span> <a href="#property-draw_stroke-dash-names">20.162</a>, <span class="Attribute">draw:stroke-linejoin</span> <a href="#property-draw_stroke-linejoin">20.163</a>, <span class="Attribute">draw:symbol-color</span> <a href="#property-draw_symbol-color">20.165</a>, <span class="Attribute">draw:textarea-horizontal-align</span> <a href="#property-draw_textarea-horizontal-align">20.166</a>, <span class="Attribute">draw:textarea-vertical-align</span> <a href="#property-draw_textarea-vertical-align">20.167</a>, <span class="Attribute">draw:tile-repeat-offset</span> <a href="#property-draw_tile-repeat-offset">20.168</a>, <span class="Attribute">draw:unit</span> <a href="#property-draw_unit">20.173</a>, <span class="Attribute">draw:visible-area-height</span> <a href="#property-draw_visible-area-height">20.169</a>, <span class="Attribute">draw:visible-area-left</span> <a href="#property-draw_visible-area-left">20.170</a>, <span class="Attribute">draw:visible-area-top</span> <a href="#property-draw_visible-area-top">20.171</a>, <span class="Attribute">draw:visible-area-width</span> <a href="#property-draw_visible-area-width">20.172</a>, <span class="Attribute">draw:wrap-influence-on-position</span> <a href="#property-draw_wrap-influence-on-position">20.174</a>, <span class="Attribute">fo:background-color</span> <a href="#property-fo_background-color">20.175</a>, <span class="Attribute">fo:border</span> <a href="#property-fo_border">20.176.2</a>, <span class="Attribute">fo:border-bottom</span> <a href="#property-fo_border-bottom">20.176.3</a>, <span class="Attribute">fo:border-left</span> <a href="#property-fo_border-left">20.176.4</a>, <span class="Attribute">fo:border-right</span> <a href="#property-fo_border-right">20.176.5</a>, <span class="Attribute">fo:border-top</span> <a href="#property-fo_border-top">20.176.6</a>, <span class="Attribute">fo:clip</span> <a href="#property-fo_clip">20.179</a>, <span class="Attribute">fo:margin</span> <a href="#property-fo_margin">20.198</a>, <span class="Attribute">fo:margin-bottom</span> <a href="#property-fo_margin-bottom">20.199</a>, <span class="Attribute">fo:margin-left</span> <a href="#property-fo_margin-left">20.200</a>, <span class="Attribute">fo:margin-</span><span class="Attribute">right</span> <a href="#property-fo_margin-right">20.201</a>, <span class="Attribute">fo:margin-top</span> <a href="#property-fo_margin-top">20.202</a>, <span class="Attribute">fo:max-height</span> <a href="#property-fo_max-height">20.203</a>, <span class="Attribute">fo:max-width</span> <a href="#property-fo_max-width">20.204</a>, <span class="Attribute">fo:min-height</span> <a href="#property-fo_min-height_element-style_graphic-properties">20.205.1</a>, <span class="Attribute">fo:min-width</span> <a href="#property-fo_min-width">20.206</a>, <span class="Attribute">fo:padding</span> <a href="#property-fo_padding">20.210</a>, <span class="Attribute">fo:padding-bottom</span> <a href="#property-fo_padding-bottom">20.211</a>, <span class="Attribute">fo:padding-left</span> <a href="#property-fo_padding-left">20.212</a>, <span class="Attribute">fo:padding-right</span> <a href="#property-fo_padding-right">20.213</a>, <span class="Attribute">fo:padding-top</span> <a href="#property-fo_padding-top">20.214</a>, <span class="Attribute">fo:wrap-option</span> <a href="#property-fo_wrap-option">20.223</a>, <span class="Attribute">style:background-transparency</span> <a href="#property-style_background-transparency">20.240</a>, <span class="Attribute">style:border-line-width</span> <a href="#property-style_border-line-width">20.241</a>, <span class="Attribute">style:border-line-width-bottom</span> <a href="#property-style_border-line-width-bottom">20.242</a>, <span class="Attribute">style:border-line-width-left</span> <a href="#property-style_border-line-width-left">20.243</a>, <span class="Attribute">style:border-line-width-right</span> <a href="#property-style_border-line-width-right">20.244</a>, <span class="Attribute">style:border-line-width-top</span> <a href="#property-style_border-line-width-top">20.245</a>, <span class="Attribute">style:editable</span> <a href="#property-style_editable">20.257</a>, <span class="Attribute">style:flow-with-text</span> <a href="#property-style_flow-with-text">20.259</a>, <span class="Attribute">style:horizontal-pos</span> <a href="#property-style_horizontal-pos">20.290</a>, <span class="Attribute">style:horizontal-rel</span> <a href="#property-style_horizontal-rel">20.291</a>, <span class="Attribute">style:mirror</span> <a href="#property-style_mirror">20.313</a>, <span class="Attribute">style:number-wrapped-paragraphs</span> <a href="#property-style_number-wrapped-paragraphs">20.318</a>, <span class="Attribute">style:overflow-behavior</span> <a href="#property-style_overflow-behavior">20.319</a>, <span class="Attribute">style:print-content</span> <a href="#property-style_print-content_element-style_graphic-properties">20.323.2</a>, <span class="Attribute">style:protect</span> <a href="#property-style_protect_element-style_graphic-properties">20.326.2</a>, <span class="Attribute">style:rel-height</span> <a href="#property-style_rel-height">20.331</a>, <span class="Attribute">style:rel-width</span> <a href="#property-style_rel-width_element-style_graphic-properties">20.332.1</a>, <span class="Attribute">style:repeat</span> <a href="#property-style_repeat">20.333</a>, <span class="Attribute">style:run-through</span> <a href="#property-style_run-through">20.343</a>, <span class="Attribute">style:shadow</span> <a href="#property-style_shadow">20.349</a>, <span class="Attribute">style:shrink-to-fit</span> <a href="#property-style_shrink-to-fit">20.350</a>, <span class="Attribute">style:vertical-pos</span> <a href="#property-style_vertical-pos">20.387</a>, <span class="Attribute">style:vertical-rel</span> <a href="#property-style_vertical-rel">20.388</a>, <span class="Attribute">style:wrap</span> <a href="#property-style_wrap">20.390</a>, <span class="Attribute">style:wrap-contour</span> <a href="#property-style_wrap-contour">20.391</a>, <span class="Attribute">style:wrap-contour-mode</span> <a href="#property-style_wrap-contour-mode">20.392</a>, <span class="Attribute">style:wrap-dynamic-threshold</span> <a href="#property-style_wrap-dynamic-threshold">20.393</a>, <span class="Attribute">style:writing-mode</span> <a href="#property-style_writing-mode_element-style_graphic-properties">20.394.2</a>, <span class="Attribute">svg:fill-rule</span> <a href="#property-svg_fill-rule">20.396</a>, <span class="Attribute">svg:height</span> <a href="#property-svg_height_element-style_graphic-properties">20.397.1</a>, <span class="Attribute">svg:stroke-color</span> <a href="#property-svg_stroke-color">20.398</a>, <span class="Attribute">svg:stroke-linecap</span> <a href="#property-svg_stroke-linecap">20.164</a>, <span class="Attribute">svg:stroke-opacity</span> <a href="#property-svg_stroke-opacity">20.399</a>, <span class="Attribute">svg:stroke-width</span> <a href="#property-svg_stroke-width">20.400</a>, <span class="Attribute">svg:width</span> <a href="#property-svg_width">20.403</a>, <span class="Attribute">svg:x</span> <a href="#property-svg_x">20.401</a>, <span class="Attribute">svg:y</span> <a href="#property-svg_y_element-style_graphic-properties">20.402.1</a>, <span class="Attribute">text:anchor-page-number</span> <a href="#property-text_anchor-page-number">20.407</a>, <span class="Attribute">text:anchor-type</span> <a href="#property-text_anchor-type">20.408</a>, <span class="Attribute">text:animation</span> <a href="#property-text_animation">20.409</a>, <span class="Attribute">text:animation-delay</span> <a href="#property-text_animation-delay">20.410</a>, <span class="Attribute">text:animation-direction</span> <a href="#property-text_animation-direction">20.411</a>, <span class="Attribute">text:animation-repeat</span> <a href="#property-text_animation-repeat">20.412</a>, <span class="Attribute">text:animation-start-inside</span> <a href="#property-text_animation-start-inside">20.413</a>, <span class="Attribute">text:animation-steps</span> <a href="#property-text_animation-steps">20.414</a> and <span class="Attribute">text:animation-stop-inside</span> <a href="#property-text_animation-stop-inside">20.415</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:graphic-properties&gt;</span> element has the following child elements: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a> and <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><h2 class="Heading_20_2"><a id="a17_22_style_chart-properties_"><span style="margin-right:0.127cm;">17.22</span></a><a id="__RefHeading__1416526_253892949"/><a id="element-style_chart-properties"/><a id="Chart_Properties"/>&lt;style:chart-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:chart-properties&gt;</span> element specifies formatting properties for charts.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:chart-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:chart-properties&gt;</span> element has the following attributes: <span class="Attribute">chart:angle-offset</span> <a href="#property-chart_angle-offset">20.2</a>, <span class="Attribute">chart:auto-position</span> <a href="#property-chart_auto-position">20.3</a>, <span class="Attribute">chart:auto-size</span> <a href="#property-chart_auto-size">20.4</a>, <span class="Attribute">chart:axis-label-position</span> <a href="#property-chart_axis-label-position">20.5</a>, <span class="Attribute">chart:axis-position</span> <a href="#property-chart_axis-position">20.6</a>, <span class="Attribute">chart:connect-bars</span> <a href="#property-chart_connect-bars">20.7</a>, <span class="Attribute">chart:data-label-number</span> <a href="#property-chart_data-label-number">20.8</a>, <span class="Attribute">chart:data-label-symbol</span> <a href="#property-chart_data-label-symbol">20.9</a>, <span class="Attribute">chart:data-label-text</span> <a href="#property-chart_data-label-text">20.10</a>, <span class="Attribute">chart:deep</span> <a href="#property-chart_deep">20.11</a>, <span class="Attribute">chart:display-label</span> <a href="#property-chart_display-label">20.12</a>, <span class="Attribute">chart:error-category</span> <a href="#property-chart_error-category">20.13</a>, <span class="Attribute">chart:error-lower-indicator</span> <a href="#property-chart_error-lower-indicator">20.14</a>, <span class="Attribute">chart:error-lower-limit</span> <a href="#property-chart_error-lower-limit">20.15</a>, <span class="Attribute">chart:error-lower-range</span> <a href="#property-chart_error-lower-range">20.16</a>, <span class="Attribute">chart:error-margin</span> <a href="#property-chart_error-margin">20.17</a>, <span class="Attribute">chart:error-percentage</span> <a href="#property-chart_error-percentage">20.18</a>, <span class="Attribute">chart:error-upper-indicator</span> <a href="#property-chart_error-upper-indicator">20.19</a>, <span class="Attribute">chart:error-upper-limit</span> <a href="#property-chart_error-upper-limit">20.20</a>, <span class="Attribute">chart:error-upper-range</span> <a href="#property-chart_error-upper-range">20.21</a>, <span class="Attribute">chart:gap-width</span> <a href="#property-chart_gap-width">20.22</a>, <span class="Attribute">chart:group-bars-per-axis</span> <a href="#property-chart_group-bars-per-axis">20.23</a>, <span class="Attribute">chart:hole-size</span> <a href="#property-chart_hole-size">20.24</a>, <span class="Attribute">chart:include-hidden-cells</span> <a href="#property-chart_include-hidden-cells">20.25</a>, <span class="Attribute">chart:interpolation</span> <a href="#property-chart_interpolation">20.26</a>, <span class="Attribute">chart:interval-major</span> <a href="#property-chart_interval-major">20.27</a>, <span class="Attribute">chart:interval-minor-divisor</span> <a href="#property-chart_interval-minor-divisor">20.28</a>, <span class="Attribute">chart:japanese-candle-stick</span> <a href="#property-chart_japanese-candle-stick">20.29</a>, <span class="Attribute">chart:label-arrangement</span> <a href="#property-chart_label-arrangement">20.30</a>, <span class="Attribute">chart:label-position</span> <a href="#property-chart_label-position">20.31</a>, <span class="Attribute">chart:label-position-negative</span> <a href="#property-chart_label-position-negative">20.32</a>, <span class="Attribute">chart:lines</span> <a href="#property-chart_lines">20.33</a>, <span class="Attribute">chart:link-data-style-to-source</span> <a href="#property-chart_link-data-style-to-source">20.34</a>, <span class="Attribute">chart:logarithmic</span> <a href="#property-chart_logarithmic">20.35</a>, <span class="Attribute">chart:maximum</span> <a href="#property-chart_maximum">20.36</a>, <span class="Attribute">chart:mean-value</span> <a href="#property-chart_mean-value">20.37</a>, <span class="Attribute">chart:minimum</span> <a href="#property-chart_minimum">20.38</a>, <span class="Attribute">chart:origin</span> <a href="#property-chart_origin">20.39</a>, <span class="Attribute">chart:overlap</span> <a href="#property-chart_overlap">20.40</a>, <span class="Attribute">chart:percentage</span> <a href="#property-chart_percentage">20.42</a>, <span class="Attribute">chart:pie-offset</span> <a href="#property-chart_pie-offset">20.41</a>, <span class="Attribute">chart:regression-type</span> <a href="#property-chart_regression-type">20.43</a>, <span class="Attribute">chart:reverse-direction</span> <a href="#property-chart_reverse-direction">20.44</a>, <span class="Attribute">chart:right-angled-axes</span> <a href="#property-chart_right-angled-axes">20.45</a>, <span class="Attribute">chart:scale-text</span> <a href="#property-chart_scale-text">20.46</a>, <span class="Attribute">chart:series-source</span> <a href="#property-chart_series-source">20.47</a>, <span class="Attribute">chart:solid-type</span> <a href="#property-chart_solid-type">20.49</a>, <span class="Attribute">chart:sort-by-x-values</span> <a href="#property-chart_sort-by-x-values">20.48</a>, <span class="Attribute">chart:spline-order</span> <a href="#property-chart_spline-order">20.50</a>, <span class="Attribute">chart:spline-resolution</span> <a href="#property-chart_spline-resolution">20.51</a>, <span class="Attribute">chart:stacked</span> <a href="#property-chart_stacked">20.52</a>, <span class="Attribute">chart:symbol-</span><span class="Attribute">height</span> <a href="#property-chart_symbol-height">20.53</a>, <span class="Attribute">chart:symbol-name</span> <a href="#property-chart_symbol-name">20.54</a>, <span class="Attribute">chart:symbol-type</span> <a href="#property-chart_symbol-type">20.55</a>, <span class="Attribute">chart:symbol-width</span> <a href="#property-chart_symbol-width">20.56</a>, <span class="Attribute">chart:text-overlap</span> <a href="#property-chart_text-overlap">20.57</a>, <span class="Attribute">chart:three-dimensional</span> <a href="#property-chart_three-dimensional">20.58</a>, <span class="Attribute">chart:tick-mark-position</span> <a href="#property-chart_tick-mark-position">20.63</a>, <span class="Attribute">chart:tick-marks-major-inner</span> <a href="#property-chart_tick-marks-major-inner">20.59</a>, <span class="Attribute">chart:tick-marks-major-outer</span> <a href="#property-chart_tick-marks-major-outer">20.60</a>, <span class="Attribute">chart:tick-marks-minor-inner</span> <a href="#property-chart_tick-marks-minor-inner">20.61</a>, <span class="Attribute">chart:tick-marks-minor-outer</span> <a href="#property-chart_tick-marks-minor-outer">20.62</a>, <span class="Attribute">chart:treat-empty-cells</span> <a href="#property-chart_treat-empty-cells">20.64</a>, <span class="Attribute">chart:vertical</span> <a href="#property-chart_vertical">20.65</a>, <span class="Attribute">chart:visible</span> <a href="#property-chart_visible">20.66</a>, <span class="Attribute">style:direction</span> <a href="#property-style_direction">20.255</a>, <span class="Attribute">style:rotation-angle</span> <a href="#property-style_rotation-angle">20.339</a> and <span class="Attribute">text:line-break</span> <a href="#property-text_line-break">20.419</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:chart-properties&gt;</span> element has the following child elements: <span class="Element">&lt;chart:label-separator&gt;</span> <a href="#element-chart_label-separator">17.24</a> and <span class="Element">&lt;chart:symbol-image&gt;</span> <a href="#element-chart_symbol-image">17.23</a>.</p><h2 class="Heading_20_2"><a id="a17_23_chart_symbol-image_"><span style="margin-right:0.127cm;">17.23</span></a><a id="__RefHeading__1416528_253892949"/><a id="element-chart_symbol-image"/>&lt;chart:symbol-image&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:symbol-image&gt;</span> element specifies an image to be used for a data point in a chart.</p><p class="Text_20_body">This element should be used only together with a <span class="Attribute">chart:symbol-type</span> attribute and only when that attribute has the value <span class="Attribute_20_Value">image</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:symbol-image&gt;</span> element is usable within the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:symbol-image&gt;</span> element has the following attribute: <span class="Attribute">xlink:href</span> <a href="#attribute-xlink_href_element-chart_symbol-image">19.910.4</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:symbol-image&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a17_24_chart_label-separator_"><span style="margin-right:0.127cm;">17.24</span></a><a id="__RefHeading__1416530_253892949"/><a id="element-chart_label-separator"/>&lt;chart:label-separator&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;chart:label-separator&gt;</span> element specifies text that is used for separating different parts of a textual data label. These parts can be the value as number, the value as a percentage (<a href="#property-chart_data-label-number">20.8</a>), and the label text (<a href="#property-chart_data-label-text">20.10</a>).</p><p class="Text_20_body">If the <span class="Element">&lt;chart:label-separator&gt;</span> element is omitted, the default value is a space character “ “ (U+0020, SPACE).</p><p class="Text_20_body">This element should be used within chart styles that are applied to <span class="Element">&lt;chart:data-label&gt;</span>, <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Text_20_body">If a separator is not specified by this element in a chart style applied to a <span class="Element">&lt;chart:data-label&gt;</span> element, the separator specified with a chart style applied to a parent element is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;chart:label-separator&gt;</span> element is usable within the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;chart:label-separator&gt;</span> element has no attributes.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;chart:label-separator&gt;</span> element has the following child element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><h2 class="Heading_20_2"><a id="a17_25_style_drawing-page-properties_"><span style="margin-right:0.127cm;">17.25</span></a><a id="__RefHeading__1416532_253892949"/><a id="Presentation_Page_Attributes"/><a id="element-style_drawing-page-properties"/>&lt;style:drawing-page-properties&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;style:drawing-page-properties&gt;</span> element specifies formatting that can be applied to a <span class="Element">&lt;draw:page&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;style:drawing-page-properties&gt;</span> element is usable within the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;style:drawing-page-properties&gt;</span> element has the following attributes: <span class="Attribute">draw:background-size</span> <a href="#property-draw_background-size">20.93</a>, <span class="Attribute">draw:fill</span> <a href="#property-draw_fill">20.111</a>, <span class="Attribute">draw:fill-color</span> <a href="#property-draw_fill-color">20.112</a>, <span class="Attribute">draw:fill-gradient-name</span> <a href="#property-draw_fill-gradient-name">20.113</a>, <span class="Attribute">draw:fill-hatch-name</span> <a href="#property-draw_fill-hatch-name">20.114</a>, <span class="Attribute">draw:fill-hatch-solid</span> <a href="#property-draw_fill-hatch-solid">20.115</a>, <span class="Attribute">draw:fill-image-height</span> <a href="#property-draw_fill-image-height">20.116</a>, <span class="Attribute">draw:fill-image-name</span> <a href="#property-draw_fill-image-name">20.117</a>, <span class="Attribute">draw:fill-image-ref-point</span> <a href="#property-draw_fill-image-ref-point">20.118</a>, <span class="Attribute">draw:fill-image-ref-point-x</span> <a href="#property-draw_fill-image-ref-point-x">20.119</a>, <span class="Attribute">draw:fill-image-ref-point-y</span> <a href="#property-draw_fill-image-ref-point-y">20.120</a>, <span class="Attribute">draw:fill-image-width</span> <a href="#property-draw_fill-image-width">20.121</a>, <span class="Attribute">draw:gradient-step-count</span> <a href="#property-draw_gradient-step-count">20.130</a>, <span class="Attribute">draw:opacity</span> <a href="#property-draw_opacity">20.145</a>, <span class="Attribute">draw:opacity-name</span> <a href="#property-draw_opacity-name">20.146</a>, <span class="Attribute">draw:secondary-fill-color</span> <a href="#property-draw_secondary-fill-color">20.150</a>, <span class="Attribute">draw:tile-repeat-offset</span> <a href="#property-draw_tile-repeat-offset">20.168</a>, <span class="Attribute">presentation:background-objects-visible</span> <a href="#property-presentation_background-objects-visible">20.224</a>, <span class="Attribute">presentation:background-visible</span> <a href="#property-presentation_background-visible">20.225</a>, <span class="Attribute">presentation:display-date-time</span> <a href="#property-presentation_display-date-time">20.226</a>, <span class="Attribute">presentation:display-footer</span> <a href="#property-presentation_display-footer">20.227</a>, <span class="Attribute">presentation:display-header</span> <a href="#property-presentation_display-header">20.228</a>, <span class="Attribute">presentation:display-page-number</span> <a href="#property-presentation_display-page-number">20.229</a>, <span class="Attribute">presentation:duration</span> <a href="#property-presentation_duration">20.230</a>, <span class="Attribute">presentation:transition-speed</span> <a href="#property-presentation_transition-speed">20.231</a>, <span class="Attribute">presentation:transition-style</span> <a href="#property-presentation_transition-style">20.232</a>, <span class="Attribute">presentation:transition-</span><span class="Attribute">type</span> <a href="#property-presentation_transition-type">20.233</a>, <span class="Attribute">presentation:visibility</span> <a href="#property-presentation_visibility">20.234</a>, <span class="Attribute">smil:direction</span> <a href="#property-smil_direction">20.235</a>, <span class="Attribute">smil:fadeColor</span> <a href="#property-smil_fadeColor">20.236</a>, <span class="Attribute">smil:subtype</span> <a href="#property-smil_subtype">20.237</a>, <span class="Attribute">smil:type</span> <a href="#property-smil_type">20.238</a>, <span class="Attribute">style:repeat</span> <a href="#property-style_repeat">20.333</a> and <span class="Attribute">svg:fill-rule</span> <a href="#property-svg_fill-rule">20.396</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;style:drawing-page-properties&gt;</span> element has the following child element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><h1 class="Heading_20_1"><a id="a18Datatypes"><span style="margin-right:0.127cm;">18</span></a><a id="__RefHeading__1416534_253892949"/>Datatypes</h1><h2 class="Heading_20_2"><a id="a18_1Introduction"><span style="margin-right:0.127cm;">18.1</span></a><a id="__RefHeading__1416536_253892949"/>Introduction</h2><p class="Text_20_body">The values of attributes and elements have datatypes. This specification defines datatypes for values of elements and attributes of OpenDocument documents. </p><p class="Note"><span class="Note_20_Label">Note:</span> This specification and the schema make reference to other specifications for some datatype definitions. Some datatypes introduced here may be specializations of other datatypes defined here or in other specifications. </p><p class="Text_20_body"> </p><h2 class="Heading_20_2"><a id="a18_2W3C_Schema_Datatypes"><span style="margin-right:0.127cm;">18.2</span></a><a id="__RefHeading__30241806"/>W3C Schema Datatypes</h2><p class="Text_20_body">The following <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> datatypes are used in this specification:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-string"/>string<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-date"/>date<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-time"/>time<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-dateTime"/>dateTime<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-decimal"/>decimal<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-duration"/>duration<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-int"/>int <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-integer"/>integer<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-nonNegativeInteger"/>nonNegativeInteger<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-positiveInteger"/>positiveInteger<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-double"/>double<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-long"/>long<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-short"/>short<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-base64Binary"/>base64Binary<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-ID"/>ID<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-IDREF"/>IDREF<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-IDREFS"/>IDREFS<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="datatype-NCName"/>NCName<span class="odfLiEnd"/> </p></li></ul><h2 class="Heading_20_2"><a id="a18_3Other_Datatypes"><span style="margin-right:0.127cm;">18.3</span></a><a id="__RefHeading__1416538_253892949"/>Other Datatypes</h2><h3 class="Heading_20_3"><a id="a18_3_1angle"><span style="margin-right:0.127cm;">18.3.1</span></a><a id="__RefHeading__1416540_253892949"/><a id="datatype-angle"/>angle</h3><p class="Text_20_body">An angle, as defined in §4.1 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. An angle is a double value that may be followed immediately by one of the following angle unit identifiers: <span class="Attribute_20_Value_20_Fragment">deg</span> (degrees), <span class="Attribute_20_Value_20_Fragment">grad</span> (gradiants) or <span class="Attribute_20_Value_20_Fragment">rad</span> (radians). If no unit identifier is specified, the value is assumed to be in degrees.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> OpenDocument v1.1 did not support angle specifications that contain an angle unit identifier.  Angle unit identifiers should be omitted for compatibility with OpenDocument v1.1.</p><h3 class="Heading_20_3"><a id="a18_3_2anyIRI"><span style="margin-right:0.127cm;">18.3.2</span></a><a id="__RefHeading__1718306_1219268628"/><a id="datatype-anyIRI"/>anyIRI </h3><p class="Text_20_body">An IRI-reference as defined in <a title="Internationalized Resource Identifiers (IRIs)" href="http://www.ietf.org/rfc/rfc3987.txt">[RFC3987]</a>, expressed in an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> anyURI. </p><p class="Note"><span class="Note_20_Label">Note</span>: The procedure for resolution of anyIRI values that are not IRI values is undefined.</p><h3 class="Heading_20_3"><a id="a18_3_3boolean"><span style="margin-right:0.127cm;">18.3.3</span></a><a id="__RefHeading__1416542_253892949"/><a id="datatype-boolean"/>boolean</h3><p class="Text_20_body">A Boolean value may have either of the values <span class="Source_20_Text">true</span> or <span class="Source_20_Text">false</span>.</p><h3 class="Heading_20_3"><a id="a18_3_4cellAddress"><span style="margin-right:0.127cm;">18.3.4</span></a><a id="__RefHeading__1416544_253892949"/><a id="datatype-cellAddress"/>cellAddress</h3><p class="Text_20_body">A cell address as specified in <a href="#Referencing_Table_Cells">9.2.1</a>.</p><h3 class="Heading_20_3"><a id="a18_3_5cellRangeAddress"><span style="margin-right:0.127cm;">18.3.5</span></a><a id="__RefHeading__1416546_253892949"/><a id="datatype-cellRangeAddress"/>cellRangeAddress</h3><p class="Text_20_body">A cell range address as specified in <a href="#CellRangeAddress">9.2.3</a>.</p><h3 class="Heading_20_3"><a id="a18_3_6cellRangeAddressList"><span style="margin-right:0.127cm;">18.3.6</span></a><a id="__RefHeading__1416548_253892949"/><a id="datatype-cellRangeAddressList"/>cellRangeAddressList</h3><p class="Text_20_body">A cell range address list as specified in <a href="#CellRangeAddressList">9.2.5</a>.</p><h3 class="Heading_20_3"><a id="a18_3_7character"><span style="margin-right:0.127cm;">18.3.7</span></a><a id="__RefHeading__1416550_253892949"/><a id="datatype-character"/>character</h3><p class="Text_20_body">A character value is a string with only one character.</p><h3 class="Heading_20_3"><a id="a18_3_8clipShape"><span style="margin-right:0.127cm;">18.3.8</span></a><a id="__RefHeading__1416552_253892949"/><a id="datatype-clipShape"/>clipShape</h3><p class="Text_20_body">A clip shape as defined in §7.20.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. Offsets shall not be specified using the units <span class="Attribute_20_Value_20_Fragment">em</span> and <span class="Attribute_20_Value_20_Fragment">px</span>. </p><h3 class="Heading_20_3"><a id="a18_3_9color"><span style="margin-right:0.127cm;">18.3.9</span></a><a id="__RefHeading__1416554_253892949"/><a id="datatype-color"/>color</h3><p class="Text_20_body">A RGB color in conformance with §5.9.11 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>, that is a RGB color in notation “#rrggbb”, where rr, gg and bb are 8-bit hexadecimal digits.</p><h3 class="Heading_20_3"><a id="a18_3_10coordinate"><span style="margin-right:0.127cm;">18.3.10</span></a><a id="__RefHeading__1416556_253892949"/><a id="datatype-coordinate"/>coordinate</h3><p class="Text_20_body">A coordinate represents a length in a coordinate system. It specifies the distance from the origin of the coordinate system along the relevant axis.</p><h3 class="Heading_20_3"><a id="a18_3_11countryCode"><span style="margin-right:0.127cm;">18.3.11</span></a><a id="__RefHeading__1416558_253892949"/><a id="datatype-countryCode"/>countryCode</h3><p class="Text_20_body">A country code is a value that conforms to ISO 3166 (<a title="Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes" href="International Organization for Standardization">[ISO3166-1]</a>, <a title="Codes for the representation of names of countries and their subdivisions -- Part 2: Country subdivision code" href="International Organization for Standardization">[ISO3166-2]</a>, <a title="Codes for the representation of names of countries and their subdivisions -- Part 3: Code for formerly used names of countries" href="International Organization for Standardization">[ISO3166-3]</a>, or their successors, and further parts). </p><p class="Text_20_body">See §2.2.4 Region Subtag of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><h3 class="Heading_20_3"><a id="a18_3_12CURIE"><span style="margin-right:0.127cm;">18.3.12</span></a><a id="__RefHeading__1416560_253892949"/><a id="datatype-CURIE"/>CURIE</h3><p class="Text_20_body">A CURIE, as described in §7 of <a title="RDFa in XHTML: Syntax and Processing" href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">[RDFa]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_13CURIEs"><span style="margin-right:0.127cm;">18.3.13</span></a><a id="__RefHeading__1416562_253892949"/><a id="datatype-CURIEs"/>CURIEs</h3><p class="Text_20_body">A list of CURIEs, as described in §7 of <a title="RDFa in XHTML: Syntax and Processing" href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">[RDFa]</a>, separated by whitespaces.</p><h3 class="Heading_20_3"><a id="a18_3_14dateOrDateTime"><span style="margin-right:0.127cm;">18.3.14</span></a><a id="__RefHeading__1416564_253892949"/><a id="datatype-dateOrDateTime"/>dateOrDateTime</h3><p class="Text_20_body">A dateOrDateTime value is either an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> date value or an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> dateTime value.</p><h3 class="Heading_20_3"><a id="a18_3_15distance"><span style="margin-right:0.127cm;">18.3.15</span></a><a id="__RefHeading__1416566_253892949"/><a id="datatype-distance"/>distance</h3><p class="Text_20_body">The length between two points.</p><h3 class="Heading_20_3"><a id="a18_3_16language"><span style="margin-right:0.127cm;">18.3.16</span></a><a id="__RefHeading__1416570_253892949"/><a id="datatype-language"/>language</h3><p class="Text_20_body">A language is a natural language identifier as defined by <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successor. The lexical space is the same as the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> language data type.</p><p class="Text_20_body"><span class="Note_20_Label">Note 1:</span> The language datatype is the same as the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> language datatype, except that its value range is not restricted to values of <a title="Tags for the Identification of Languages" href="http://www.ietf.org/rfc/rfc3066.txt">[RFC3066]</a>, but follows the syntax of the <span class="Alien_20_Attribute">xml:lang</span> attribute. See §2.12 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_17languageCode"><span style="margin-right:0.127cm;">18.3.17</span></a><a id="__RefHeading__1416572_253892949"/><a id="datatype-languageCode"/>languageCode</h3><p class="Text_20_body">A language code is a value that conforms to ISO 639 (<a title="Codes for the representation of names of languages -- Part 1: Alpha-2 code" href="International Organization for Standardization">[ISO639-1]</a>, <a title="Codes for the representation of names of languages -- Part 2: Alpha-3 code" href="International Organization for Standardization">[ISO639-2]</a>, <a title="Codes for the representation of names of languages -- Part 3: Alpha-3 code for comprehensive coverage of languages" href="International Organization for Standardization">[ISO639-3]</a> or their successors, and further parts). </p><p class="Text_20_body">See §2.2.1 Primary Language Subtag of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><h3 class="Heading_20_3"><a id="a18_3_18length"><span style="margin-right:0.127cm;">18.3.18</span></a><a id="__RefHeading__1416574_253892949"/><a id="datatype-length"/>length</h3><p class="Text_20_body">A (positive or negative) length, consisting of magnitude and unit, in conformance with the Units of Measure defined in §5.9.13 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. </p><h3 class="Heading_20_3"><a id="a18_3_19namespacedToken"><span style="margin-right:0.127cm;">18.3.19</span></a><a id="__RefHeading__1416576_253892949"/><a id="datatype-namespacedToken"/>namespacedToken</h3><p class="Text_20_body">A namespaced token is an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> QName that matches the definition of PrefixedName in §4 of <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_20nonNegativeLength"><span style="margin-right:0.127cm;">18.3.20</span></a><a id="__RefHeading__1416578_253892949"/><a id="datatype-nonNegativeLength"/>nonNegativeLength</h3><p class="Text_20_body">A measurement with a value that shall be zero or positive.</p><h3 class="Heading_20_3"><a id="a18_3_21nonNegativePixelLength"><span style="margin-right:0.127cm;">18.3.21</span></a><a id="__RefHeading__1416580_253892949"/><a id="datatype-nonNegativePixelLength"/><a id="DDE_LINK2311"/>nonNegativePixelLength</h3><p class="Text_20_body">A non-negative measurement that shall have the unit <span class="Attribute_20_Value_20_Fragment">px</span> (pixels).</p><h3 class="Heading_20_3"><a id="a18_3_22pathData"><span style="margin-right:0.127cm;">18.3.22</span></a><a id="__RefHeading__1416582_253892949"/><a id="datatype-pathData"/>pathData</h3><p class="Text_20_body">Path data as described in §8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. Attribute values of this data type <span class="ISO_20_Keyword">shall</span> match the BNF grammar for SVG path data in §8.3.9 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_23percent"><span style="margin-right:0.127cm;">18.3.23</span></a><a id="__RefHeading__1416584_253892949"/><a id="datatype-percent"/>percent</h3><p class="Text_20_body">(Positive or negative) percentage values in conformance with §5.9.11 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_24point3D"><span style="margin-right:0.127cm;">18.3.24</span></a><a id="__RefHeading__1416586_253892949"/><a id="datatype-point3D"/>point3D</h3><p class="Text_20_body">A 3D point. The syntax of a 3D point is the same as that of a <span class="Misc_20_Source">vector3D</span>, except that each coordinate is shall be followed by a unit.</p><h3 class="Heading_20_3"><a id="a18_3_25points"><span style="margin-right:0.127cm;">18.3.25</span></a><a id="__RefHeading__1416588_253892949"/><a id="datatype-points"/>points</h3><p class="Text_20_body">A sequence of points. Each point consists of two integer coordinates separated by a comma “,” (U+002C, COMMA). The points are separated by white space.</p><h3 class="Heading_20_3"><a id="a18_3_26positiveLength"><span style="margin-right:0.127cm;">18.3.26</span></a><a id="__RefHeading__1416590_253892949"/><a id="datatype-positiveLength"/>positiveLength</h3><p class="Text_20_body">A measurement with a value that shall be positive.</p><h3 class="Heading_20_3"><a id="a18_3_27relativeLength"><span style="margin-right:0.127cm;">18.3.27</span></a><a id="__RefHeading__1416592_253892949"/><a id="datatype-relativeLength"/>relativeLength</h3><p class="Text_20_body">A relative length is a positive integer, followed by a ”*” (U+002A, ASTERISK) character.</p><h3 class="Heading_20_3"><a id="a18_3_28safeCURIE"><span style="margin-right:0.127cm;">18.3.28</span></a><a id="__RefHeading__1416594_253892949"/><a id="datatype-safeCURIE"/>safeCURIE</h3><p class="Text_20_body">A safe CURIE, as described in §7 of <a title="RDFa in XHTML: Syntax and Processing" href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">[RDFa]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_29scriptCode"><span style="margin-right:0.127cm;">18.3.29</span></a><a id="__RefHeading__1416596_253892949"/><a id="datatype-scriptCode"/>scriptCode</h3><p class="Text_20_body">A script code conforming to <a title="Information and documentation -- Codes for the representation of names of scripts" href="International Organization for Standardization">[ISO15924]</a>, or its successors. See §2.2.3 Script Subtag of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><h3 class="Heading_20_3"><a id="a18_3_30signedZeroToHundredPercent"><span style="margin-right:0.127cm;">18.3.30</span></a><a id="__RefHeading__1416598_253892949"/><a id="datatype-signedZeroToHundredPercent"/>signedZeroToHundredPercent</h3><p class="Text_20_body">Percentage values in the range [-100%,100%] in conformance with §5.9.11 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. </p><h3 class="Heading_20_3"><a id="a18_3_31styleName"><span style="margin-right:0.127cm;">18.3.31</span></a><a id="__RefHeading__1416600_253892949"/><a id="datatype-styleName"/>styleName</h3><p class="Text_20_body">A NCName as specified in <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> that is the name of a style.</p><h3 class="Heading_20_3"><a id="a18_3_32styleNameRef"><span style="margin-right:0.127cm;">18.3.32</span></a><a id="__RefHeading__1416602_253892949"/><a id="datatype-styleNameRef"/>styleNameRef</h3><p class="Text_20_body">A NCName as specified in <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> that is the name of a referenced style, or an empty value.</p><h3 class="Heading_20_3"><a id="a18_3_33styleNameRefs"><span style="margin-right:0.127cm;">18.3.33</span></a><a id="__RefHeading__1416604_253892949"/><a id="datatype-styleNameRefs"/>styleNameRefs</h3><p class="Text_20_body">A white space separated list of NCNames as specified in <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> that are the names of a styles.</p><h3 class="Heading_20_3"><a id="a18_3_34targetFrameName"><span style="margin-right:0.127cm;">18.3.34</span></a><a id="__RefHeading__1416606_253892949"/><a id="datatype-targetFrameName"/>targetFrameName</h3><p class="Text_20_body">The name of a target frame in conformance with §6.16 of <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_35textEncoding"><span style="margin-right:0.127cm;">18.3.35</span></a><a id="__RefHeading__1416608_253892949"/><a id="datatype-textEncoding"/>textEncoding</h3><p class="Text_20_body">A character encoding in the notation described in the §4.3.3 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>, or the value <span class="Attribute_20_Value_20_Instance">x-symbol</span>. The value is <span class="Attribute_20_Value_20_Instance">x-symbol</span> means that the character encoding is not enumerated by §4.3.3 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_36timeOrDateTime"><span style="margin-right:0.127cm;">18.3.36</span></a><a id="__RefHeading__1416610_253892949"/><a id="datatype-timeOrDateTime"/>timeOrDateTime</h3><p class="Text_20_body">A timeOrDateTime value is either an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> time or an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> dateTime value.</p><h3 class="Heading_20_3"><a id="a18_3_37URIorSafeCURIE"><span style="margin-right:0.127cm;">18.3.37</span></a><a id="__RefHeading__1416612_253892949"/><a id="datatype-URIorSafeCURIE"/>URIorSafeCURIE</h3><p class="Text_20_body">An IRI or a safe CURIE, as described in §7 of <a title="RDFa in XHTML: Syntax and Processing" href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">[RDFa]</a>.</p><h3 class="Heading_20_3"><a id="a18_3_38valueType"><span style="margin-right:0.127cm;">18.3.38</span></a><a id="__RefHeading__1416614_253892949"/><a id="datatype-valueType"/>valueType</h3><p class="Text_20_body">A list of value types.,</p><h3 class="Heading_20_3"><a id="a18_3_39variableName"><span style="margin-right:0.127cm;">18.3.39</span></a><a id="__RefHeading__1416616_253892949"/><a id="datatype-variableName"/>variableName</h3><p class="Text_20_body">A string specifying the name of a variable</p><h3 class="Heading_20_3"><a id="a18_3_40vector3D"><span style="margin-right:0.127cm;">18.3.40</span></a><a id="__RefHeading__1416618_253892949"/><a id="datatype-vector3D"/>vector3D</h3><p class="Text_20_body">A 3-element vector that is represented by floating point x, y, z coordinates. The format of a vector3D value is whitespace separated tokens in the order x, y, and z, and that expression starts with "(" (LEFT PARENTHESIS U+0028) and ends with ")" (RIGHT PARENTHESIS U+0029). If this value represents a normal, then it should be normalized.</p><h3 class="Heading_20_3"><a id="a18_3_41zeroToHundredPercent"><span style="margin-right:0.127cm;">18.3.41</span></a><a id="__RefHeading__1416620_253892949"/><a id="datatype-zeroToHundredPercent"/>zeroToHundredPercent</h3><p class="Text_20_body">Percentage values in the range [0%,100%] in conformance with §5.9.11 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><h1 class="Heading_20_1"><a id="a19General_Attributes"><span style="margin-right:0.127cm;">19</span></a><a id="__RefHeading__1416622_253892949"/><a id="General_Attributes"/>General Attributes</h1><h2 class="Heading_20_2"><a id="a19_1General"><span style="margin-right:0.127cm;">19.1</span></a><a id="__RefHeading__1416624_253892949"/>General</h2><p class="Text_20_body">Attributes for elements defined by OpenDocument are divided between those used by structural elements (<a href="#General_Attributes">19</a>) versus those used by <span class="Alien_20_Element">&lt;style:*-properties&gt;</span> elements (<a href="#Formatting_Attributes">20</a>).</p><p class="Text_20_body">Attributes have <span class="Def">default values</span> defined by this standard. When any element appears in a document instance without such an attribute, consumers <span class="ISO_20_Keyword">should</span> behave as if the attribute is present with the defined default value.</p><h2 class="Heading_20_2"><a id="a19_2anim_color-interpolation"><span style="margin-right:0.127cm;">19.2</span></a><a id="__RefHeading__1416626_253892949"/><a id="attribute-anim_color-interpolation"/>anim:color-interpolation</h2><p class="Text_20_body">The <span class="Attribute">anim:color-interpolation</span> attribute specifies the color space that is used for color interpolation.</p><p class="Text_20_body">The defined values for the <span class="Attribute">anim:color-interpolation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hsl</span>: HSL (hue, saturation, lightness) color model.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">gb</span>: RGB (red, green, blue) color model.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">rgb</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">anim:color-interpolation</span> attribute is usable with the following element: <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">anim:color-interpolation</span> attribute are <span class="Attribute_20_Value">rgb</span> or <span class="Attribute_20_Value">hsl</span>.</p><h2 class="Heading_20_2"><a id="a19_3anim_color-interpolation-direction"><span style="margin-right:0.127cm;">19.3</span></a><a id="__RefHeading__1416628_253892949"/><a id="attribute-anim_color-interpolation-direction"/>anim:color-interpolation-direction</h2><p class="Text_20_body">The <span class="Attribute">anim:color-interpolation-direction</span> attribute specifies the direction that is used for color interpolation. This is only valid for the HSL color space.</p><p class="Text_20_body">The defined values for the <span class="Attribute">anim:color-interpolation-direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">clockwise</span>: color interpolation proceeds in a clockwise direction.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">ounterclockwise</span>: color interpolation proceeds in a counterclockwise direction.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">clockwise</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">anim:color-interpolation-direction</span> attribute is usable with the following element: <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">anim:color-interpolation-direction</span> attribute are <span class="Attribute_20_Value">clockwise</span> or <span class="Attribute_20_Value">counter-clockwise</span>.</p><h2 class="Heading_20_2"><a id="a19_4anim_audio-level"><span style="margin-right:0.127cm;">19.4</span></a><a id="__RefHeading__1416630_253892949"/><a id="attribute-anim_audio-level"/>anim:audio-level</h2><p class="Text_20_body">The <span class="Attribute">anim:audio-level</span> attribute specifies the audio volume during a playback. </p><p class="Text_20_body">The defined value range for the <span class="Attribute">anim:audio-level</span> attribute is a rational number between <span class="Attribute_20_Value_20_Instance">0</span> (inaudible) and <span class="Attribute_20_Value_20_Instance">1</span> (system volume), inclusive. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:audio-level</span> attribute is usable with the following element: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:audio-level</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_5anim_command"><span style="margin-right:0.127cm;">19.5</span></a><a id="__RefHeading__1416632_253892949"/><a id="attribute-anim_command"/>anim:command</h2><p class="Text_20_body">The <span class="Attribute">anim:command</span> attribute specifies an animation command.</p><p class="Text_20_body">The defined values for the <span class="Attribute">anim:command</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">custom</span>: the command is user defined.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">verb</span>: the command targets an embedded <a title="Inside OLE">[OLE]</a> object. <a href="#element-draw_object-ole">10.4.6.3</a>. The parameter <span class="Attribute_20_Value_20_Instance">verb</span> is the verb number executed at the embedded object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">play</span>: the command targets a media shape and starts its playback. The parameter <span class="Attribute_20_Value_20_Instance">media-time</span> defines the playback start time in seconds. If this parameter is not set, playback starts at the last position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">toggle-pause</span>: the command targets a media shape and toggles its playback state from play to paused or from paused to play.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">stop</span>: the command targets a media shape and stops its playback.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">stop-audio</span>: the command has no target and stops all running audio playback.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If the value of the <span class="Attribute">anim:command</span> attribute is <span class="Attribute_20_Value_20_Instance">custom</span>, then there shall be a <span class="Element">&lt;anim:param&gt;</span> child element whose <span class="Attribute">anim:name</span> attribute and <span class="Attribute">anim:value</span> attribute values are user defined.</p><p class="Text_20_body">If the value of the <span class="Attribute">anim:command</span> attribute is <span class="Attribute_20_Value_20_Instance">verb</span>, then there shall be a <span class="Element">&lt;anim:param&gt;</span> child element whose <span class="Attribute">anim:name</span> attribute value is <span class="Attribute_20_Value_20_Instance">verb</span> and whose <span class="Attribute">anim:value</span> attribute value contains the verb number. </p><p class="Text_20_body">If the value of the <span class="Attribute">anim:command</span> attribute is <span class="Attribute_20_Value_20_Instance">play</span>, then there shall be a <span class="Element">&lt;anim:param&gt;</span> child element whose <span class="Attribute">anim:name</span> attribute value is <span class="Attribute_20_Value_20_Instance">play</span> and whose <span class="Attribute">anim:value</span> attribute value contains a value expressed in seconds. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:command</span> attribute is usable with the following element: <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:command</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_6anim_formula"><span style="margin-right:0.127cm;">19.6</span></a><a id="__RefHeading__1416634_253892949"/><a id="attribute-anim_formula"/>anim:formula</h2><p class="Text_20_body">The <span class="Attribute">anim:formula</span> attribute specifies a formula used in an animation function. </p><p class="Text_20_body">The following is the minimum supported grammar:</p><p class="Code_borderStart">formula::= additive_expression</p><p class="Code"/><p class="Code">identifier::= '$' | 'pi' | 'e' | 'x' | 'y' | 'width' | 'height'</p><p class="Code">function::= 'abs'|'sqrt'|'sin'|'cos'|'tan'|'atan'|'acos'|'asin'|'exp'|'log'</p><p class="Code">binary_function::= 'min'|'max'</p><p class="Code">basic_expression::= number</p><p class="Code">    | identifier</p><p class="Code">    | unary_function S* '(' S* additive_expression S* ')'</p><p class="Code">    | binary_function S* '(' S* additive_expression S* ','     S*additive_expression S* ')'</p><p class="Code">    | '(' S* additive_expression S* ')'</p><p class="Code"/><p class="Code">unary_expression::= '-' S* basic_expression | basic_expression</p><p class="Code">multiplicative_expression::= unary_expression ( ( S* '*' S* unary_expression )</p><p class="Code">    | ( S* '/' S* unary_expression ) )*</p><p class="Code">additive_expression::= multiplicative_expression ( ( S* '+' S* multiplicative_expression )</p><p class="Code">    | ( S* '-' S* multiplicative_expression ) )*</p><p class="Code">number::= sign? integer | sign? Floating-point-constant</p><p class="Code">floating-point-constant::= fractional-constant exponent? | integer exponent</p><p class="Code">fractional-constant::= integer? '.' integer | integer '.'</p><p class="Code">exponent::= ( 'e' | 'E' ) sign? Integer</p><p class="Code">sign::= '+' | '-'</p><p class="Code">integer::= [0-9]+</p><p class="Code_borderEnd">S::= (#x20 | #x9)</p><p class="Text_20_body">The defined identifiers for the <span class="Attribute">anim:formula</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">"$"</span> (U+0024, DOLLAR SIGN): The identifier ”$” is replaced by a value between 0 and 1 (inclusive) that represents a proportional offset into an animation element's duration. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">pi</span>: The Pi constant. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">When the <span class="Attribute">anim:formula</span> attribute appears on a descendant element of <span class="Element">&lt;office:presentation&gt;</span>, it may use the following additional identifiers:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">e</span>: the Euler constant.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">x</span>: the animated elements left edge in screen space where 0 is the left edge of the screen and 1 is the right edge.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">y</span>: the animated elements top edge in screen space, where 0 is the top edge of the screen and 1 is the bottom edge.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">width</span>: the animated elements width in screen space, where 0 is no width and 1 is the screen's width.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">height</span>: the animated elements height in screen space, where 0 is no height and 1 is the screen's height.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If an <span class="Attribute">anim:formula</span> attribute is given, it overrides the <span class="Attribute">smil:values</span>, <span class="Attribute">smil:to</span>, <span class="Attribute">smil:from</span> and <span class="Attribute">smil:by</span> attributes as specified in <a href="#Simple_Animation_Functions">15.3.2</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:formula</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:formula</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_7anim_id__deprecated_"><span style="margin-right:0.127cm;">19.7</span></a><a id="__RefHeading__1416636_253892949"/><a id="attribute-anim_id"/>anim:id (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">anim:id</span> attribute specifies an identifier to an animation element.</p><p class="Text_20_body">OpenDocument consumers shall ignore an <span class="Attribute">anim:id</span> attribute if it occurs on an element with an <span class="Attribute">xml:id</span> attribute value. </p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">anim:id</span> attributes for elements in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body"> The value of an <span class="Attribute">anim:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same element. </p><p class="Text_20_body">The <span class="Attribute">anim:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:id</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_8anim_iterate-interval"><span style="margin-right:0.127cm;">19.8</span></a><a id="__RefHeading__1416638_253892949"/><a id="attribute-anim_iterate-interval"/>anim:iterate-interval</h2><p class="Text_20_body">The <span class="Attribute">anim:iterate-interval</span> attribute specifies the time interval between effects that are children of <span class="Element">&lt;anim:iterate&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:iterate-interval</span> attribute is usable with the following element: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:iterate-interval</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_9anim_iterate-type"><span style="margin-right:0.127cm;">19.9</span></a><a id="__RefHeading__1416640_253892949"/><a id="attribute-anim_iterate-type"/>anim:iterate-type</h2><p class="Text_20_body">The <span class="Attribute">anim:iterate-type</span> attribute of a <span class="Element">&lt;anim:iterate&gt;</span> element specifies the iteration of child elements.</p><p class="Text_20_body">The defined values for the <span class="Attribute">anim:iterate-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">by-letter</span>: the target shape or paragraph is iterated by letters.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">by-paragraph</span>: the target shape is iterated by paragraphs.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">by-word</span>: the target shape or paragraph is iterated by words.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:iterate-type</span> attribute is usable with the following element: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:iterate-type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_10anim_name"><span style="margin-right:0.127cm;">19.10</span></a><a id="__RefHeading__1416642_253892949"/><a id="attribute-anim_name"/>anim:name</h2><p class="Text_20_body">The <span class="Attribute">anim:name</span> attribute specifies the name of a parameter for an <span class="Element">&lt;anim:command&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:name</span> attribute is usable with the following element: <span class="Element">&lt;anim:param&gt;</span> <a href="#element-anim_param">15.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_11anim_sub-item"><span style="margin-right:0.127cm;">19.11</span></a><a id="__RefHeading__1416644_253892949"/><a id="attribute-anim_sub-item"/>anim:sub-item</h2><p class="Text_20_body">The <span class="Attribute">anim:sub-item</span> attribute specifies components of a target element for application of animation effects. </p><p class="Text_20_body">The defined values for the <span class="Attribute">anim:sub-item</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">background</span>: animates only a shape's background and not its text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">text</span>: animates only the text of a shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">whole</span>: animates both a shape and its text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:sub-item</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:sub-item</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_12anim_value"><span style="margin-right:0.127cm;">19.12</span></a><a id="__RefHeading__1416646_253892949"/><a id="attribute-anim_value"/>anim:value</h2><p class="Text_20_body">The <span class="Attribute">anim:value</span> attribute specifies the value of a parameter for an <span class="Element">&lt;anim:command&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">anim:value</span> attribute is usable with the following element: <span class="Element">&lt;anim:param&gt;</span> <a href="#element-anim_param">15.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">anim:value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_13chart_attached-axis"><span style="margin-right:0.127cm;">19.13</span></a><a id="__RefHeading__1416648_253892949"/><a id="attribute-chart_attached-axis"/>chart:attached-axis</h2><p class="Text_20_body">The <span class="Attribute">chart:attached-axis</span> attribute specifies an axis to be used with a series. The value shall be the name of an axis as defined with the <span class="Attribute">chart:name</span> attribute on a <span class="Element">&lt;chart:axis&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:attached-axis</span> attribute is usable with the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:attached-axis</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_14chart_automatic-content"><span style="margin-right:0.127cm;">19.14</span></a><a id="__RefHeading__1416650_253892949"/><a id="attribute-chart_automatic-content"/>chart:automatic-content</h2><p class="Text_20_body">The <span class="Attribute">chart:automatic-content</span> attribute specifies if an equation to be displayed should be calculated automatically or if text given within a <span class="Element">&lt;text:p&gt;</span> element should be used instead.</p><p class="Text_20_body">If no <span class="Element">&lt;text:p&gt;</span> element is provided, the <span class="Attribute">chart:automatic-content</span> attribute is assumed to be <span class="Attribute_20_Value">true</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:automatic-content</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the text within a <span class="Element">&lt;text:p&gt;</span> element is displayed. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: an equation is calculated and displayed automatically.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">chart:automatic-content</span> attribute is usable with the following element: <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:automatic-content</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_15chart_class"><span style="margin-right:0.127cm;">19.15</span></a><a id="__RefHeading__1416652_253892949"/><a id="attribute-chart_class"/>chart:class</h2><h3 class="Heading_20_3"><a id="a19_15_1_chart_chart____chart_series_"><span style="margin-right:0.127cm;">19.15.1</span></a><a id="__RefHeading__1416654_253892949"/><a id="attribute-chart_class_element-chart_chart"/><a id="attribute-chart_class_element-chart_series"/>&lt;chart:chart&gt;, &lt;chart:series&gt;</h3><p class="Text_20_body">The <span class="Attribute">chart:class</span> attribute specifies a chart type. The value is a namespaced token. The values for the predefined chart types are defined within the chart namespace ( urn:oasis:names:tc:opendocument:xmlns:chart:1.0).</p><p class="Text_20_body">The term <span class="Def">line attributes</span> is used in defining <span class="Attribute">chart:class</span> values to refer to the attributes of the <span class="Element">&lt;style:graphic-properties&gt;</span> element within a chart style: <span class="Attribute">draw:stroke</span>, <span class="Attribute">svg:stroke-color</span>, <span class="Attribute">svg:stroke-width</span>, <span class="Attribute">svg:stroke-opacity</span>, <span class="Attribute">draw:stroke-dash</span> and <span class="Attribute">draw:stroke-linejoin</span>.</p><p class="Text_20_body">The term <span class="Def">fill attributes</span> is used in defining <span class="Attribute">chart:class</span> values to refer to the attributes of the <span class="Element">&lt;style:graphic-properties&gt;</span> element within a chart style: <span class="Attribute">draw:fill</span>, <span class="Attribute">draw:fill-color</span>, <span class="Attribute">draw:fill-gradient-name</span>, <span class="Attribute">draw:gradient-step-count</span>, <span class="Attribute">draw:fill-hatch-name</span>, <span class="Attribute">draw:fill-hatch-solid</span>, <span class="Attribute">draw:fill-image-name</span>, <span class="Attribute">style:repeat</span>, <span class="Attribute">draw:fill-image-height</span>, <span class="Attribute">draw:fill-image-width</span>, <span class="Attribute">draw:fill-image-ref-point</span>, <span class="Attribute">draw:fill-image-ref-point-x</span>, <span class="Attribute">draw:fill-image-ref-point-y</span>, <span class="Attribute">draw:tile-repeat-offset</span>, <span class="Attribute">draw:opacity</span> and <span class="Attribute">draw:opacity-name</span>. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:class</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:area</span> –The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as y-coordinates within a Cartesian coordinate system with horizontal x-axis and vertical y-axis. The accessory x-coordinates are generated from the positions in the y-value sequence starting with 1.0. The first y value gets an x value 1.0. The second y value is associated with an x value of 2.0 and so forth. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" a left handed three-dimensional Cartesian coordinate system is used with horizontal x-axis and vertical y-axis (prior to any 3D scene transformations). <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:deep</span>="<span class="Attribute_20_Value">true</span>" the z-coordinates are generated from the order of the series elements starting with 1.0. The first series has an associated z-coordinate of 1.0. The second series has a z-coordinate 2.0 and so forth. The series names are used as labels at the z-axis.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The area in the xy-pane between the data points and the x-axis is filled (chart:origin <a href="#property-chart_origin">20.39</a>). <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:stacked</span>="<span class="Attribute_20_Value">true</span>" the area between a series and the previous series is filled. The filling is done as indicated by the fill attributes of the series. A border is drawn as specified by the line attributes of the series. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:bar</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as y-coordinates within a Cartesian coordinate system with horizontal x-axis and vertical y-axis. The accessory x-coordinates are generated from the positions in the y-value sequence starting with 1.0. The first y value gets an x value 1.0. The second y value is associated with an x value of 2.0 and so forth. The <span class="Element">&lt;chart:categories&gt;</span> element&gt; can be used to define labels for the x-axis. Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" a left handed three-dimensional Cartesian coordinate system is used with horizontal x-axis and vertical y-axis (prior to any 3D scene transformations).<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:deep</span>="<span class="Attribute_20_Value">true</span>" the z-coordinates are generated from the order of the series elements starting with 1.0. The first series has an associated z-coordinate of 1.0. The second series has a z-coordinate 2.0 and so forth. The series names are used as labels at the z-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Bars are displayed for each data point starting at the x-axis and ending at the indicated y-coordinate (see <span class="Attribute">chart:origin</span> for more details). In case of <span class="Attribute">chart:stacked</span>="<span class="Attribute_20_Value">true</span>" the bar starts at the previous series instead of the x-axis. The width and exact position of the bars along the x-axis is influenced by the attributes <span class="Attribute">chart:gap-width</span>, <span class="Attribute">chart:overlap</span>, <span class="Attribute">chart:group-bars-per-axis</span>, <span class="Attribute">chart:stacked</span> and <span class="Attribute">chart:percentage</span>. In case of <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">false</span>" the bars are simple rectangles. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" the shape of the bars are defined by a <span class="Attribute">chart:solid-type</span> attribute. A <span class="Attribute">chart:vertical</span> attribute indicates whether the positions of x- and y-axis should be swapped, resulting in a horizontal y-axis and vertical x-axis. The bars are filled as indicated by the fill attributes of the series and points. A border is drawn as specified by the line attributes. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:bubble</span> – Circles(bubbles) with different sizes are displayed in a Cartesian coordinate system with horizontal x-axis and vertical y-axis. The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as relative bubble area. The values for the y-coordinates are given by the first <span class="Element">&lt;chart:domain&gt;</span> element. The values for the x-coordinates are given by the second <span class="Element">&lt;chart:domain&gt;</span> element. The bubbles are filled as indicated by the fill attributes of the series and points. A border is drawn as specified by the line attributes. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:circle</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are displayed as pie chart. For a value sequence a circle is divided into sectors, the angle of a sector represents the relative weight of a value. Only one series can be displayed with this chart type. By default, the segments are arranged counter clockwise starting at 12 o'clock. To arrange the segments in clockwise order the attribute <span class="Attribute">chart:reverse-direction</span> at the y-axis is set to true. The <span class="Attribute">chart:angle-offset</span> attribute is used to rotate the pie. The <span class="Element">&lt;chart:categories&gt;</span> element at the x-axis can be used to define categories for the data points. The segments are filled as indicated by the fill attributes of the series and points. A border is drawn as specified by the line attributes. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:filled-radar</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as radius-coordinates within a counter clockwise polar coordinate system. The angle axis starts at 12 o'clock. The axis element with <span class="Attribute">chart:dimension</span>="<span class="Attribute_20_Value">y</span>" is interpreted as radius axis. The axis element with <span class="Attribute">chart:dimension</span>="<span class="Attribute_20_Value">x</span>" is interpreted as angle axis. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. The x-coordinates are generated from the positions in the value sequence starting with 1.0. First value gets an x value 1.0. The second value is associated with an x value of 2.0 and so forth. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The area surrounded by the data points is filled as indicated by the fill attributes of the series. In case of <span class="Attribute">chart:stacked</span>="<span class="Attribute_20_Value">true</span>" the area between a series and the previous series is filled instead. A border is drawn as specified by the line attributes. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:gantt</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute of two <span class="Element">&lt;chart:series&gt;</span> (marked as being of type <span class="Attribute_20_Value_20_Instance">chart:gantt</span>) are interpreted <br/><span style="margin-left:0.6401cm"/>together to form the start and end values (in this order) in a gantt chart. Start and end values are displayed at the y-axis in a Cartesian coordinate system with horizontal x-axis and vertical y-axis. The accessory x-coordinates are generated from the positions in the y-value sequence starting with 1.0. The first y value gets an x value 1.0. The second y value is associated with an x value of 2.0 and so forth. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>For each x-coordinate, a bar is displayed, starting at the start value and ending at the end value. The fill and line attributes of the series and points specify how the bars are to be displayed. If the end value is greater than or equal to the start value the style of the first series, shall be used. If the end value is smaller than the start value, the styles of the second series shall be used. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:line</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as y-coordinates within a Cartesian coordinate system with horizontal x-axis and vertical y-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The accessory x-coordinates are generated from the positions in the y-value sequence starting with 1.0. The first y value gets an x value 1.0. The second y value is associated with an x value of 2.0 and so forth. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" a left handed three-dimensional Cartesian coordinate system is used with horizontal x-axis and vertical y-axis (prior to any 3D scene transformations). <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:deep</span>="<span class="Attribute_20_Value">true</span>" the z-coordinates are generated from the order of the series elements starting with 1.0. The first series has an associated z-coordinate of 1.0. The second series has a z-coordinate 2.0 and so forth. The series names are used as labels at the z-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">false</span>" the data points are connected with a line as specified by the line attributes of the series. By default a solid line is drawn. If symbols should be used for the data points this shall be specified with the <span class="Attribute">chart:symbol-type</span> attribute. The fill attributes of the series and data points specify how the symbols are filled. By default. the symbols are filled solid with the same color as the connecting line. In case no line color is given but a fill color, the line uses the fill color. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" no symbols are shown. The data points are connected with a line that is extruded in z direction. The extruded line is filled as specified by the fill attributes of the series. A border is drawn as specified by the line attributes. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The attribute <span class="Attribute">chart:interpolation</span> within the chart style at the plot-area specifies which type of interpolation is used while connecting the points with lines. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:radar</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as radius-coordinates within a counter clockwise polar coordinate system. The angle axis starts at 12 o'clock. The axis element with <span class="Attribute">chart:dimension</span>="<span class="Attribute_20_Value">y</span>" is interpreted as radius axis. The axis element with <span class="Attribute">chart:dimension</span>="<span class="Attribute_20_Value">x</span>" is interpreted as angle axis. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. The x-coordinates are generated from the positions in the value sequence starting with 1.0. First value gets an x value 1.0. The second value is associated with an x value of 2.0 and so forth. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The data points are connected with a line as specified by the line attributes of the series. By default a solid line is drawn. If symbols should be used for the data points this shall be specified with the <span class="Attribute">chart:symbol-type</span> attribute. The fill attributes of the series and data points specify how the symbols are filled. By default, the symbols are filled solid with the same color as the connecting line. In case no line color is given but a fill color, the line uses the fill color. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:ring</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are displayed as one ring in a donut chart. For a given value sequence, the ring is divided into sectors, the angle of a sector represents the relative weight of a value. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>By default, segments are arranged counter clockwise starting at 12 o'clock. To arrange the segments in clockwise order the attribute <span class="Attribute">chart:reverse-direction</span> at the y-axis is set to "<span class="Attribute_20_Value">true</span>". The <span class="Attribute">chart:angle-offset</span> attribute is used to rotate the donut. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>By default, the first series of class ring forms the inner ring and the last series forms the outermost ring. To arrange the rings in opposite order the attribute <span class="Attribute">chart:reverse-direction</span> is set to "<span class="Attribute_20_Value">true</span>" at the x-axis. The attribute <span class="Attribute">chart:hole-size</span> is used to influence the inner hole size. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The <span class="Element">&lt;chart:categories&gt;</span> element at the x-axis can be used to define categories for the data points. The segments are filled as specified by the fill attributes of the series and points. A border is drawn around a segment as specified by the line attributes. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:scatter</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on a <span class="Element">&lt;chart:series&gt;</span> element are interpreted as y-coordinates within a Cartesian coordinate system with horizontal x-axis and vertical y-axis. The values for the x-coordinates are given by the first <span class="Element">&lt;chart:domain&gt;</span> element. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" a left handed three-dimensional Cartesian coordinate system is used with horizontal x-axis and vertical y-axis (prior to any 3D scene transformations). <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:deep</span>="<span class="Attribute_20_Value">true</span>" the z-coordinates are generated from the order of the series elements starting with 1.0. The first series has an associated z-coordinate of 1.0. The second series has a z-coordinate 2.0 and so forth. The series names are used as labels at the z-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">false</span>" the data points are connected with a line as specified by the line attributes of the series. By default a solid line is drawn. If symbols should be used for the data points this shall be specified with the <span class="Attribute">chart:symbol-type</span> attribute. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The fill attributes of the series and data points specify how the symbols are filled. By default the symbols are filled solid with the same color as the connecting line. In case no line color is given but a fill color, the line uses the fill color. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" no symbols are shown. The data points are connected with a line that is extruded in z direction. The extruded line is filled as specified by the fill attributes of the series. A border is drawn as specified by the line attributes. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The attribute <span class="Attribute">chart:interpolation</span> within the chart style at the plot-area specifies which type of interpolation is used while connecting the points with lines. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:stock</span> – The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on up to four <span class="Element">&lt;chart:series&gt;</span> (marked as being of type <span class="Attribute_20_Value_20_Instance">chart:stock</span>) are interpreted together to form the opening, minimum, maximum and closing (in this order) values of a stock symbol displayed at the y scale in a Cartesian coordinate system with horizontal x-axis and vertical y-axis. If only three series are given, the values are interpreted as minimum, maximum and closing values (in this order). The accessory x-coordinates are generated from the positions in the y-value sequence starting with 1.0. The first y value gets an x value 1.0. The second y value is associated with an x value of 2.0 and so forth. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>For each x-coordinate, the minimum and maximum y-values are connected with a line. The line style is specified with element <span class="Element">&lt;chart:stock-range-line&gt;</span>. The <span class="Attribute">chart:japanese-candle-stick</span> attribute specifies the display of opening and closing values in a stock chart. In case of <span class="Attribute">chart:japanese-candle-stick</span>="<span class="Attribute_20_Value">false</span>" opening and closing values are displayed as left and right tick-lines in the same style as the line connecting minimum and maximum value. This is the default. Only in case of <span class="Attribute">chart:japanese-candle-stick</span>="<span class="Attribute_20_Value">true</span>" a bar is drawn from opening to closing value. The styles to use for those bars are defined with elements <span class="Element">&lt;chart:stock-gain-marker&gt;</span> and <span class="Element">&lt;chart:stock-loss-marker&gt;</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">chart:surface</span> – Depending on the size of the range specified by <span class="Attribute">chart:values-cell-range-address</span> attribute of the first <span class="Element">&lt;chart:series&gt;</span> element one of two types of surfaces is rendered:<span class="odfLiEnd"/> </p><ul><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the <span class="Attribute">chart:value</span><span class="Attribute">s</span><span class="Attribute">-cell-range-address</span> attribute of the first <span class="Element">&lt;char</span><span class="Element">t:series&gt;</span> element specifies a range with more than one row and more than one column, the first version of a surface chart is rendered:<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The value in the ith column and jth row of the cell range given by the <span class="Attribute">chart:values-cell-range-address</span> attribute of the <span class="Element">&lt;chart:series&gt;</span> element (marked as being of type <span class="Attribute_20_Value_20_Instance">chart:surface</span>) is the altitude corresponding to the x-value i and the y-value j unless <span class="Element">&lt;chart:domain&gt;</span> elements are contained in the <span class="Element">&lt;chart:series&gt;</span> element. <span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>If <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" a surface chart is displayed in a right-handed three-dimensional Cartesian coordinate system with horizontal x-axis (from left to right), a perspective y-axis running from the front to the right rear and a vertical z-axis (prior to any 3D scene transformation). The altitude values are displayed on the z-axis in this case. The surface is displayed as specified by the line and fill attributes of the first series. Furthermore the <span class="Element">&lt;chart:data-point&gt;</span> elements of the series can be used to specify differing fill and line styles for the different altitude intervals. The surface within the first major interval (starting at lower values) is displayed with the line and fill attributes of the first data-point, within the second major interval the surface is displayed with the line and fill attributes of the second data-point and so on.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">false</span>" a contour plot is displayed in a 2 dimensional Cartesian coordinate system with horizontal x-axis and vertical y-axis. An axis element with <span class="Attribute">chart:dimension</span>="<span class="Attribute_20_Value">z</span>" is used to define the range and segmentation of the displayed altitude values. Contour lines are drawn along lines of equal altitude specified by the major interval of the z-axis. The area between the contour lines can be filled. The line and fill style is specified by the line and fill attributes of the series. Furthermore the <span class="Element">&lt;chart:data-point&gt;</span> elements of the series can be used to specify differing line and fill attributes for the different altitude intervals. The contour line and area belonging to the first major interval is displayed with the line and fill attributes of the first data-point, the contour line and area belonging to the second interval is displayed as specified by the line and fill attributes of the second data-point and so on.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>In both cases two <span class="Element">&lt;chart:domain&gt;</span> elements may be used to specify the y-values and x-values to be used (<a href="#attribute-table_cell-range-address_element-chart_domain_value_chart_surface">19.593.5</a>). In this case the jth value of the <span class="Attribute">table:cell-range-address</span> attribute of the first <span class="Element">&lt;chart:domain&gt;</span> element specifies the y-values used for the values in the jth row of the cell range given by the <span class="Attribute">chart:values-cell-range-address</span> attribute of the <span class="Element">&lt;chart:series&gt;</span> element and the ith value of the <span class="Attribute">table:cell-range-address</span> attribute of the second <span class="Element">&lt;chart:domain&gt;</span> element specifies the x-values used for the values in the ith column.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The attribute <span class="Attribute">chart:deep</span> shall be false. Multiple <span class="Element">&lt;chart:series&gt;</span> elements of type <span class="Attribute_20_Value_20_Instance">chart:surface</span> will result in multiple surfaces being rendered. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the <span class="Attribute">chart:values-cell-range-address</span> attribute of the first <span class="Element">&lt;chart:series&gt;</span> element specifies a range with a single row or with a single column the second version of a surface chart is rendered:<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The values given by a <span class="Attribute">chart:values-cell-range-address</span> attribute on multiple <span class="Element">&lt;chart:series&gt;</span> elements (marked as being of type <span class="Attribute_20_Value_20_Instance">chart:surface</span>) are interpreted as altitudes at specific grid locations.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">true</span>" a surface chart is displayed in a left handed three-dimensional Cartesian coordinate system with horizontal x-axis and vertical y-axis (prior to any 3D scene transformation). The altitude values are displayed on the y-axis in this case. The attribute <span class="Attribute">chart:deep</span> shall be true. The accessory x-coordinates are generated from the positions in the altitude -value sequence starting with 1.0. The first altitude value in each series gets an x value 1.0. The second altitude value is associated with an x value of 2.0 and so forth. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. The z-coordinates are generated from the order of the series elements starting with 1.0. The first series marked as being of type surface gets an associated z-coordinate of 1.0. The second series marked as being of type surface gets a z-coordinate 2.0 and so forth. The series names are used as labels at the z-axis. The surface is displayed as specified by the line and fill attributes of the first series. Furthermore the <span class="Element">&lt;chart:data-point&gt;</span> elements of the first series can be used to specify differing fill and line styles for the different altitude intervals. The surface within the first major interval (starting at lower values) is displayed with the line and fill attributes of the first data-point, within the second major interval the surface is displayed with the line and fill attributes of the second data-point and so on.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Where <span class="Attribute">chart:three-dimensional</span>="<span class="Attribute_20_Value">false</span>" a contour plot is displayed in a 2 dimensional Cartesian coordinate system with horizontal x-axis and vertical y-axis. The x-coordinates are generated from the positions in the altitude -value sequence starting with 1.0. The <span class="Element">&lt;chart:categories&gt;</span> element can be used to define labels for the x-axis. The y-coordinates are generated from the order of the series elements starting with 1.0. The series names are used as labels at the y-axis. A third axis element with <span class="Attribute">chart:dimension</span>="<span class="Attribute_20_Value">z</span>" is used to define the range and segmentation of the displayed altitude values. Contour lines are drawn along lines of equal altitude specified by the major interval of the z-axis. The area between the contour lines can be filled. The line and fill style is specified by the line and fill attributes of the first series. Furthermore the <span class="Element">&lt;chart:data-point&gt;</span> elements of the first series can be used to specify differing line and fill attributes for the different altitude intervals. The contour line and area belonging to the first major interval is displayed with the line and fill attributes of the first data-point, the contour line and area belonging to the second interval is displayed as specified by the line and fill attributes of the second data-point and so on. <span class="odfLiEnd"/> </p></li></ul></li></ul><p class="Text_20_body">Additional chart types may be supported by using a different namespace.</p><p class="Text_20_body">A <span class="Attribute">chart:class</span> attribute for a <span class="Element">&lt;chart:series&gt;</span> element overrides the <span class="Attribute">chart:class</span> attribute for the entire chart. </p><p class="Note"><span class="Note_20_Label">Note:</span> The following table shows examples for the pre-defined chart types. Those charts that use one or two data series use two data series with the values 1;2;3;4 and 1;4;9;16 and the labels a;b;c;d. Those chart types that use more than two data series (stock and bubble) use the data series 1;2;3;4 and multiples thereof. The radar chart uses two data series with five data points.</p><table border="0" cellspacing="0" cellpadding="0" class="ChartClassExamples"><colgroup><col width="222"/><col width="222"/><col width="222"/></colgroup><tr><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A1"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik2"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BEB3958805.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:line</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A1"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik21"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BE348BB081.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:area</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_C1"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.9228in;width:1.9228in; padding:0; " class="fr5" id="Grafik3"><img style="height:4.8839cm;width:4.8839cm;" alt="" src="./Pictures/10000200000000BE000000BE25E7F573.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:circle</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td></tr><tr><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik4"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BE4F61FAAA.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:ring</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik5"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BED3754382.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:scatter</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_C2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.9228in;width:1.9228in; padding:0; " class="fr5" id="Grafik6"><img style="height:4.8839cm;width:4.8839cm;" alt="" src="./Pictures/10000200000000BE000000BEC7C6AB3C.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:radar</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td></tr><tr><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik7"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BE99314183.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:bar</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik8"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BE145B66A3.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:stock</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_C2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.9228in;width:1.9228in; padding:0; " class="fr5" id="Grafik9"><img style="height:4.8839cm;width:4.8839cm;" alt="" src="./Pictures/10000200000000BD000000BDC014E7D1.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:bubble</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td></tr><tr><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik10"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BD000000BD0362D7E7.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:surface</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_A2"><!--Next 'div' was a 'text:p'.--><div class="Note"> <!--Next 'div' is a draw:frame.--><div style="height:1.922in;width:1.922in; padding:0; " class="fr5" id="Grafik11"><img style="height:4.8819cm;width:4.8819cm;" alt="" src="./Pictures/10000200000000BE000000BEE615D9E6.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"><span class="Strong_20_Emphasis">chart:gantt</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></td><td style="text-align:left;width:2.0007in; " class="ChartClassExamples_C2"><p class="Note"><span class="Strong_20_Emphasis"/></p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:class</span> attribute is usable with the following elements: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a> and <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:class</span> attribute has the data type <span class="Datatype">namespacedToken</span> <a href="#datatype-namespacedToken">18.3.19</a>.</p><h3 class="Heading_20_3"><a id="a19_15_2_chart_grid_"><span style="margin-right:0.127cm;">19.15.2</span></a><a id="__RefHeading__1416656_253892949"/><a id="attribute-chart_class_element-chart_grid"/>&lt;chart:grid&gt;</h3><p class="Text_20_body">The <span class="Attribute">chart:class</span> attribute of a <span class="Element">&lt;chart:grid&gt;</span> element specifies whether major or minor tick marks are used on a grid. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:class</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">major</span>: major tick marks are extended to grid lines.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">minor</span>: minor tick marks are extended to grid lines.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;chart:grid&gt;</span> <a href="#element-chart_grid">11.10</a> element the default value for this attribute is <span class="Attribute_20_Value">major</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">chart:class</span> attribute is usable with the following element: <span class="Element">&lt;chart:grid&gt;</span> <a href="#element-chart_grid">11.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:class</span> attribute are <span class="Attribute_20_Value">major</span> or <span class="Attribute_20_Value">minor</span>.</p><h2 class="Heading_20_2"><a id="a19_16chart_column-mapping__deprecated_"><span style="margin-right:0.127cm;">19.16</span></a><a id="__RefHeading__1416658_253892949"/><a id="attribute-chart_column-mapping"/>chart:column-mapping (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">chart:column-mapping</span> attribute is deprecated. It specifies a list of indexes of series. The numbers define a reordering of data that comes from a container document that provides the data for the chart. The numbering begins with 1. A list of ascending numbers beginning with 1 has no effect. To exchange two series, their numbers shall be exchanged in the list.</p><p class="Text_20_body">The <span class="Attribute">chart:column-mapping</span> and <span class="Attribute">chart:row-mapping</span> <a href="#attribute-chart_row-mapping">19.26</a> attributes shall not be used simultaneously.</p><p class="Note"><span class="Note_20_Label">Note:</span> Instead of using the deprecated <span class="Attribute">chart:column-mapping</span> attribute, <span class="Element">&lt;chart:series&gt;</span> elements may be reordered and specific cell ranges may be assigned to them using the <span class="Attribute">chart:values-cell-range-address</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:column-mapping</span> attribute is usable with the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:column-mapping</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_17chart_data-source-has-labels__deprecated_"><span style="margin-right:0.127cm;">19.17</span></a><a id="__RefHeading__1416660_253892949"/><a id="attribute-chart_data-source-has-labels"/>chart:data-source-has-labels (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">chart:data-source-has-labels</span> attribute specifies whether a chart's source range (as given within <span class="Attribute">table:cell-range-address</span> attribute on a <span class="Element">&lt;chart:plot-area&gt;</span> element) contain labels.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:data-source-has-labels</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">both</span>: first row and column of a chart's source range both contain labels.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: first column of a chart's source range contains labels.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: neither the first row nor the first column of a chart's source range contains labels.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: first row of a chart's source range contains labels.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">chart:data-source-has-labels</span> attribute is usable with the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:data-source-has-labels</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">row</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">both</span>.</p><h2 class="Heading_20_2"><a id="a19_18chart_dimension"><span style="margin-right:0.127cm;">19.18</span></a><a id="__RefHeading__1416662_253892949"/><a id="attribute-chart_dimension"/>chart:dimension</h2><p class="Text_20_body">The <span class="Attribute">chart:dimension</span> attribute specifies a dimension in a coordinate system.</p><p class="Text_20_body">For charts with less than three axes the <span class="Attribute">chart:dimension</span> attribute may appear with values for the x-axis and y-axis only. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:dimension</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">x</span>: dimension represented by the x-axis of a chart.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">y</span>: dimension represented by the y-axis of a chart.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">z</span>: dimension represented by the z-axis of a chart. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:dimension</span> attribute is usable with the following elements: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a> and <span class="Element">&lt;chart:error-indicator&gt;</span> <a href="#element-chart_error-indicator">11.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:dimension</span> attribute are <span class="Attribute_20_Value">x</span>, <span class="Attribute_20_Value">y</span> or <span class="Attribute_20_Value">z</span>.</p><h2 class="Heading_20_2"><a id="a19_19chart_display-equation"><span style="margin-right:0.127cm;">19.19</span></a><a id="__RefHeading__1416664_253892949"/><a id="attribute-chart_display-equation"/>chart:display-equation</h2><p class="Text_20_body">The <span class="Attribute">chart:display-equation</span> attribute specifies whether the equation itself should be displayed or not. It is only evaluated if the value of the <span class="Attribute">chart:automatic-content</span> attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:display-equation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the equation is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the equation is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">chart:display-equation</span> attribute is usable with the following element: <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:display-equation</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_20chart_display-r-square"><span style="margin-right:0.127cm;">19.20</span></a><a id="__RefHeading__1416666_253892949"/><a id="attribute-chart_display-r-square"/>chart:display-r-square</h2><p class="Text_20_body">The <span class="Attribute">chart:display-r-square</span> attribute specifies whether an R-square value should be displayed or not. It is only evaluated if the value of the <span class="Attribute">chart:automatic-content</span> attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:display-r-square</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: R-square value is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: R-square value is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">chart:display-r-square</span> attribute is usable with the following element: <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:display-r-square</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_21chart_label-cell-address"><span style="margin-right:0.127cm;">19.21</span></a><a id="__RefHeading__1416672_253892949"/><a id="attribute-chart_label-cell-address"/>chart:label-cell-address</h2><p class="Text_20_body">The <span class="Attribute">chart:label-cell-address</span> attribute specifies a cell range list that contains the name for a series.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:label-cell-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:label-cell-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_22chart_legend-align"><span style="margin-right:0.127cm;">19.22</span></a><a id="__RefHeading__1416674_253892949"/><a id="attribute-chart_legend-align"/>chart:legend-align</h2><p class="Text_20_body">The <span class="Attribute">chart:legend-align</span> attribute specifies the alignment of a legend with the plot area. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:legend-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: legend is aligned at the center of the plot-area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">end</span>: legend is aligned at the end of the plot-area (which is right or bottom).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">start</span>: legend is aligned at the beginning of the plot-area (which is left or top).<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> This attribute can be used when the <span class="Attribute">chart:legend-position</span> attribute has one of the following values: start, end, top, bottom.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:legend-align</span> attribute is usable with the following element: <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:legend-align</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">end</span>.</p><h2 class="Heading_20_2"><a id="a19_23chart_legend-position"><span style="margin-right:0.127cm;">19.23</span></a><a id="__RefHeading__1416676_253892949"/><a id="attribute-chart_legend-position"/>chart:legend-position</h2><p class="Text_20_body">The <span class="Attribute">chart:legend-position</span> attribute specifies the placement of a legend.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:legend-position</span> attribute to specify the location of a legend in one of the corners of a chart outside the plot area are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-end</span>: place legend in the bottom right corner.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-start</span>: place the legend in the bottom left corner.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top-end</span>: place legend in the top right corner.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top-start</span>: place legend in the top left corner.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The defined values for the <span class="Attribute">chart:legend-position</span> attribute to specify the location of a legend next to the plot area are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: place legend below the plot area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">end</span>: place legend on the right side of the plot area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">start</span>: place legend on the left side of the plot area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: place legend above the plot area.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The legend position can also be given in absolute coordinates with <span class="Attribute">svg:x</span> and <span class="Attribute">svg:y</span> attributes, as with any drawing object. If both absolute coordinates and the legend-position attribute are given, the legend-position attribute shall be used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:legend-position</span> attribute is usable with the following element: <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:legend-position</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">end</span>, <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">bottom</span>, <span class="Attribute_20_Value">top-start</span>, <span class="Attribute_20_Value">bottom-start</span>, <span class="Attribute_20_Value">top-end</span> or <span class="Attribute_20_Value">bottom-end</span>.</p><h2 class="Heading_20_2"><a id="a19_24chart_name"><span style="margin-right:0.127cm;">19.24</span></a><a id="__RefHeading__1416678_253892949"/><a id="attribute-chart_name"/>chart:name</h2><p class="Text_20_body">The <span class="Attribute">chart:name</span> attribute specifies a name for an axis.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The value of a <span class="Attribute">chart:name</span> attribute can be used to reference an axis.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:name</span> attribute is usable with the following element: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_25chart_repeated"><span style="margin-right:0.127cm;">19.25</span></a><a id="__RefHeading__1416680_253892949"/><a id="attribute-chart_repeated"/>chart:repeated</h2><p class="Text_20_body">The <span class="Attribute">chart:repeated</span> attribute specifies how many consecutive data points have the same style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:repeated</span> attribute is usable with the following element: <span class="Element">&lt;chart:data-point&gt;</span> <a href="#element-chart_data-point">11.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:repeated</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_26chart_row-mapping__deprecated_"><span style="margin-right:0.127cm;">19.26</span></a><a id="__RefHeading__1416682_253892949"/><a id="attribute-chart_row-mapping"/>chart:row-mapping (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">chart:row-mapping</span> attribute specifies a list of indexes of series. The numbers define a reordering of data that comes from a container document that provides the data for the chart. The numbering begins with 1. A list of ascending numbers beginning with 1 has no effect. To exchange two series, their numbers shall be exchanged in the list.</p><p class="Text_20_body">The <span class="Attribute">chart:row-mapping</span> and <span class="Attribute">chart:column-mapping</span> <a href="#attribute-chart_column-mapping">19.16</a> attributes shall not be used simultaneously.</p><p class="Note"><span class="Note_20_Label">Note:</span> Instead of using the deprecated <span class="Attribute">chart:row-mapping</span> attribute, <span class="Element">&lt;chart:series&gt;</span> elements may be reordered and specific cell ranges may be assigned to them using the <span class="Attribute">chart:values-cell-range-address</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:row-mapping</span> attribute is usable with the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:row-mapping</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_27chart_style-name"><span style="margin-right:0.127cm;">19.27</span></a><a id="__RefHeading__1416684_253892949"/><a id="attribute-chart_style-name"/>chart:style-name</h2><p class="Text_20_body">The <span class="Attribute">chart:style-name</span> attribute references a chart style by its name.<a href="#attribute-style_name">19.498</a> </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:style-name</span> attribute is usable with the following elements: <span class="Element">&lt;chart:axis&gt;</span> <a href="#element-chart_axis">11.8</a>, <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>, <span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a>, <span class="Element">&lt;chart:data-point&gt;</span> <a href="#element-chart_data-point">11.13</a>, <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>, <span class="Element">&lt;chart:error-indicator&gt;</span> <a href="#element-chart_error-indicator">11.16</a>, <span class="Element">&lt;chart:floor&gt;</span> <a href="#element-chart_floor">11.7</a>, <span class="Element">&lt;chart:footer&gt;</span> <a href="#element-chart_footer">11.2.3</a>, <span class="Element">&lt;chart:grid&gt;</span> <a href="#element-chart_grid">11.10</a>, <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>, <span class="Element">&lt;chart:mean-value&gt;</span> <a href="#element-chart_mean-value">11.15</a>, <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;chart:regression-curve&gt;</span> <a href="#element-chart_regression-curve">11.17</a>, <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>, <span class="Element">&lt;chart:stock-gain-marker&gt;</span> <a href="#element-chart_stock-gain-marker">11.19</a>, <span class="Element">&lt;chart:stock-loss-marker&gt;</span> <a href="#element-chart_stock-loss-marker">11.20</a>, <span class="Element">&lt;chart:stock-range-line&gt;</span> <a href="#element-chart_stock-range-line">11.21</a>, <span class="Element">&lt;chart:subtitle&gt;</span> <a href="#element-chart_subtitle">11.2.2</a>, <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a> and <span class="Element">&lt;chart:wall&gt;</span> <a href="#element-chart_wall">11.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_28chart_values-cell-range-address"><span style="margin-right:0.127cm;">19.28</span></a><a id="__RefHeading__1416686_253892949"/><a id="attribute-chart_values-cell-range-address"/>chart:values-cell-range-address</h2><p class="Text_20_body"> The <span class="Attribute">chart:values-cell-range-address</span> attribute specifies a cell range that contains the values for a data series. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:values-cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:values-cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_29config_name"><span style="margin-right:0.127cm;">19.29</span></a><a id="__RefHeading__1416688_253892949"/><a id="attribute-config_name"/>config:name</h2><p class="Text_20_body">The <span class="Attribute">config:name</span> attribute specifies a name of an application setting, an application setting sequence, or an application setting container.</p><p class="Text_20_body">For <span class="Element">&lt;config:config-item-set&gt;</span> elements that are children of <span class="Element">&lt;office:settings&gt;</span> elements, the name shall begin with a namespace prefix followed by a “:” (U+003A, COLON). The XML namespace bound to the prefix identifies the implementation that defines the name of a setting.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">config:name</span> attribute is usable with the following elements: <span class="Element">&lt;config:config-item&gt;</span> <a href="#element-config_config-item">3.10.3</a>, <span class="Element">&lt;config:config-item-map-entry&gt;</span> <a href="#element-config_config-item-map-entry">3.10.5</a>, <span class="Element">&lt;config:config-item-map-indexed&gt;</span> <a href="#element-config_config-item-map-indexed">3.10.4</a>, <span class="Element">&lt;config:config-item-map-named&gt;</span> <a href="#element-config_config-item-map-named">3.10.6</a> and <span class="Element">&lt;config:config-item-set&gt;</span> <a href="#element-config_config-item-set">3.10.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">config:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_30config_type"><span style="margin-right:0.127cm;">19.30</span></a><a id="__RefHeading__1416690_253892949"/><a id="attribute-config_type"/>config:type</h2><p class="Text_20_body">The <span class="Attribute">config:type</span> attribute specifies a data type for a setting.</p><p class="Text_20_body">The defined values for the <span class="Attribute">config:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">base64Binary</span>: <a href="#datatype-base64Binary">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">boolean</span>: <a href="#datatype-boolean">18.3.3</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">datetime</span>: <a href="#datatype-dateTime">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: <a href="#datatype-double">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">int</span>: <a href="#datatype-integer">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: <a href="#datatype-long">18.2</a> .<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: <a href="#datatype-short">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">string</span>: <a href="#datatype-string">18.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">config:type</span> attribute is usable with the following element: <span class="Element">&lt;config:config-item&gt;</span> <a href="#element-config_config-item">3.10.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">config:type</span> attribute are <span class="Attribute_20_Value">boolean</span>, <span class="Attribute_20_Value">short</span>, <span class="Attribute_20_Value">int</span>, <span class="Attribute_20_Value">long</span>, <span class="Attribute_20_Value">double</span>, <span class="Attribute_20_Value">string</span>, <span class="Attribute_20_Value">datetime</span> or <span class="Attribute_20_Value">base64Binary</span>.</p><h2 class="Heading_20_2"><a id="a19_31db_additional-column-statement"><span style="margin-right:0.127cm;">19.31</span></a><a id="__RefHeading__1416692_253892949"/><a id="attribute-db_additional-column-statement"/>db:additional-column-statement</h2><p class="Text_20_body">The <span class="Attribute">db:additional-column-statement</span> attribute specifies the auto-increment keyword of an SQL create statement and any start value. </p><p class="Note"><span class="Note_20_Label">Note:</span> The auto increment keyword, optional start value and the format of the string specifying them are database specific. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:additional-column-statement</span> attribute is usable with the following element: <span class="Element">&lt;db:auto-increment&gt;</span> <a href="#element-db_auto-increment">12.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:additional-column-statement</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_32db_append-table-alias-name"><span style="margin-right:0.127cm;">19.32</span></a><a id="__RefHeading__1416694_253892949"/><a id="attribute-db_append-table-alias-name"/>db:append-table-alias-name</h2><p class="Text_20_body">The <span class="Attribute">db:append-table-alias-name</span> attribute specifies that a table alias name should be appended when creating an SQL query.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:append-table-alias-name</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table alias name is not appended to a query when creating an SQL query.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table alias name is appended to a query when creating an SQL query.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:append-table-alias-name</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:append-table-alias-name</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_33db_apply-command"><span style="margin-right:0.127cm;">19.33</span></a><a id="__RefHeading__1416696_253892949"/><a id="attribute-db_apply-command"/>db:apply-command</h2><p class="Text_20_body">The <span class="Attribute">db:apply-command</span> attribute specifies whether an SQL clause specified by a <span class="Attribute">db:command</span> attribute should be appended to an underlying statement.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:apply-command</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: an SQL clause specified by a <span class="Attribute">db:command</span> will not be appended to an underlying statement.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: an SQL clause specified by a <span class="Attribute">db:command</span> attribute will be appended to an underlying statement.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:apply-command</span> attribute is usable with the following elements: <span class="Element">&lt;db:filter-statement&gt;</span> <a href="#element-db_filter-statement">12.30</a> and <span class="Element">&lt;db:order-statement&gt;</span> <a href="#element-db_order-statement">12.29</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:apply-command</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_34db_as-template"><span style="margin-right:0.127cm;">19.34</span></a><a id="__RefHeading__1416698_253892949"/><a id="attribute-db_as-template"/>db:as-template</h2><p class="Text_20_body">The <span class="Attribute">db:as-template</span> attribute specifies that a document is used as a template for a table structure to be created inside a database.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:as-template</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: document is not used as a template.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: document is used as a template.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:as-template</span> attribute is usable with the following element: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:as-template</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_35db_base-dn"><span style="margin-right:0.127cm;">19.35</span></a><a id="__RefHeading__1416700_253892949"/><a id="attribute-db_base-dn"/>db:base-dn</h2><p class="Text_20_body">The <span class="Attribute">db:base-dn</span> attribute specifies a base DN for data that is retrieved using LDAP. <a title="Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names" href="http://tools.ietf.org/html/rfc4514">[RFC4514]</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:base-dn</span> attribute is usable with the following element: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:base-dn</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_36db_boolean-comparison-mode"><span style="margin-right:0.127cm;">19.36</span></a><a id="__RefHeading__1416702_253892949"/><a id="attribute-db_boolean-comparison-mode"/>db:boolean-comparison-mode</h2><p class="Text_20_body">The <span class="Attribute">db:boolean-comparison-mode</span> attribute specifies a comparison mode used for Boolean values in SQL SELECT statements. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:boolean-comparison-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">equal-boolean</span>: “= TRUE" will be used for true and “= FALSE" for false.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">qual-integer</span>: “= 1" will be used for true and “= 0" for false.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">qual-use-only-zero</span>: “NOT ($value = 0 or $value IS NULL)" will be used for true and “= 0" for false.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span><span class="Attribute_20_Value">s-boolean</span>: “IS TRUE" will be used for true and “IS FALSE" for false.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">equal-integer</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:boolean-comparison-mode</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:boolean-comparison-mode</span> attribute are <span class="Attribute_20_Value">equal-integer</span>, <span class="Attribute_20_Value">is-boolean</span>, <span class="Attribute_20_Value">equal-boolean</span> or <span class="Attribute_20_Value">equal-use-only-zero</span>.</p><h2 class="Heading_20_2"><a id="a19_37db_catalog-name"><span style="margin-right:0.127cm;">19.37</span></a><a id="__RefHeading__1416704_253892949"/><a id="attribute-db_catalog-name"/>db:catalog-name</h2><p class="Text_20_body">The <span class="Attribute">db:catalog-name</span> attribute specifies the catalog part of a full qualified SQL table name or index name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:catalog-name</span> attribute is usable with the following elements: <span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a>, <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>, <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a> and <span class="Element">&lt;db:update-table&gt;</span> <a href="#element-db_update-table">12.31</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:catalog-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_38db_command"><span style="margin-right:0.127cm;">19.38</span></a><a id="__RefHeading__1416706_253892949"/><a id="attribute-db_command"/>db:command</h2><p class="Text_20_body">The <span class="Attribute">db:command</span> attribute specifies an SQL select, order or filter clause that is used as part of a SELECT statement.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:command</span> attribute is usable with the following elements: <span class="Element">&lt;db:filter-statement&gt;</span> <a href="#element-db_filter-statement">12.30</a>, <span class="Element">&lt;db:order-statement&gt;</span> <a href="#element-db_order-statement">12.29</a> and <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:command</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_39db_data-source-setting-is-list"><span style="margin-right:0.127cm;">19.39</span></a><a id="__RefHeading__1416708_253892949"/><a id="attribute-db_data-source-setting-is-list"/>db:data-source-setting-is-list</h2><p class="Text_20_body">The <span class="Attribute">db:data-source-setting-is-list</span> attribute specifies whether a <span class="Element">&lt;db:data-source-setting&gt;</span> element contains a list of <span class="Element">&lt;db:data-source-setting-value&gt;</span> elements.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:data-source-setting-is-list</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: <span class="Element">&lt;db:data-source-settings&gt;</span> element should not contain a list of <span class="Element">&lt;db:data-source-setting-value&gt;</span> elements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: <span class="Element">&lt;db:data-source-settings&gt;</span> element should contain a list of <span class="Element">&lt;db:data-source-setting-value&gt;</span> elements.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:data-source-setting-is-list</span> attribute is usable with the following element: <span class="Element">&lt;db:data-source-setting&gt;</span> <a href="#element-db_data-source-setting">12.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:data-source-setting-is-list</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_40db_data-source-setting-name"><span style="margin-right:0.127cm;">19.40</span></a><a id="__RefHeading__1416710_253892949"/><a id="attribute-db_data-source-setting-name"/>db:data-source-setting-name</h2><p class="Text_20_body">The <span class="Attribute">db:data-source-setting-name</span> attribute specifies a name for a <span class="Element">&lt;db:data-source-setting&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:data-source-setting-name</span> attribute is usable with the following element: <span class="Element">&lt;db:data-source-setting&gt;</span> <a href="#element-db_data-source-setting">12.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:data-source-setting-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_41db_data-source-setting-type"><span style="margin-right:0.127cm;">19.41</span></a><a id="__RefHeading__1416712_253892949"/><a id="attribute-db_data-source-setting-type"/>db:data-source-setting-type</h2><p class="Text_20_body">The <span class="Attribute">db:data-source-setting-type</span> attribute specifies a data type for a data-source-setting value.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:data-source-setting-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">boolean</span>: <a href="#datatype-boolean">18.3.3</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: <a href="#datatype-double">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">int</span>: <a href="#datatype-integer">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: defined by <a title="Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">[SQL]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">string</span>: <a href="#datatype-string">18.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:data-source-setting-type</span> attribute is usable with the following element: <span class="Element">&lt;db:data-source-setting&gt;</span> <a href="#element-db_data-source-setting">12.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:data-source-setting-type</span> attribute are <span class="Attribute_20_Value">boolean</span>, <span class="Attribute_20_Value">short</span>, <span class="Attribute_20_Value">int</span>, <span class="Attribute_20_Value">long</span>, <span class="Attribute_20_Value">double</span> or <span class="Attribute_20_Value">string</span>.</p><h2 class="Heading_20_2"><a id="a19_42db_data-type"><span style="margin-right:0.127cm;">19.42</span></a><a id="__RefHeading__1416714_253892949"/><a id="attribute-db_data-type"/>db:data-type</h2><p class="Text_20_body">The <span class="Attribute">db:data-type</span> attribute specifies an SQL data type for a column.</p><p class="Text_20_body">The values accepted by <span class="Attribute">db:data-type</span> are defined by <a title="Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">[SQL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:data-type</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:data-type</span> attribute are <span class="Attribute_20_Value">bit</span>, <span class="Attribute_20_Value">boolean</span>, <span class="Attribute_20_Value">tinyint</span>, <span class="Attribute_20_Value">smallint</span>, <span class="Attribute_20_Value">integer</span>, <span class="Attribute_20_Value">bigint</span>, <span class="Attribute_20_Value">float</span>, <span class="Attribute_20_Value">real</span>, <span class="Attribute_20_Value">double</span>, <span class="Attribute_20_Value">numeric</span>, <span class="Attribute_20_Value">decimal</span>, <span class="Attribute_20_Value">char</span>, <span class="Attribute_20_Value">varchar</span>, <span class="Attribute_20_Value">longvarchar</span>, <span class="Attribute_20_Value">date</span>, <span class="Attribute_20_Value">time</span>, <span class="Attribute_20_Value">timestmp</span>, <span class="Attribute_20_Value">binary</span>, <span class="Attribute_20_Value">varbinary</span>, <span class="Attribute_20_Value">longvarbinary</span>, <span class="Attribute_20_Value">sqlnull</span>, <span class="Attribute_20_Value">other</span>, <span class="Attribute_20_Value">object</span>, <span class="Attribute_20_Value">distinct</span>, <span class="Attribute_20_Value">struct</span>, <span class="Attribute_20_Value">array</span>, <span class="Attribute_20_Value">blob</span>, <span class="Attribute_20_Value">clob</span> or <span class="Attribute_20_Value">ref</span>.</p><h2 class="Heading_20_2"><a id="a19_43db_database-name"><span style="margin-right:0.127cm;">19.43</span></a><a id="__RefHeading__1416716_253892949"/><a id="attribute-db_database-name"/>db:database-name</h2><p class="Text_20_body">The <span class="Attribute">db:database-name</span> attribute specifies the database for a connection if the database type supports multiple logical databases per server.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:database-name</span> attribute is usable with the following element: <span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:database-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_44db_decimal"><span style="margin-right:0.127cm;">19.44</span></a><a id="__RefHeading__1416718_253892949"/><a id="attribute-db_decimal"/>db:decimal</h2><p class="Text_20_body">The <span class="Attribute">db:decimal</span> attribute specifies a decimal separator for numeric fields.</p><p class="Default_20_Value_borderStart">The default value for this attribute is “<span class="Attribute_20_Value_20_Instance">.</span>” (U+002E, FULL STOP).</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:decimal</span> attribute is usable with the following element: <span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:decimal</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_45db_default-cell-style-name"><span style="margin-right:0.127cm;">19.45</span></a><a id="__RefHeading__1416720_253892949"/><a id="attribute-db_default-cell-style-name"/>db:default-cell-style-name</h2><p class="Text_20_body">The <span class="Attribute">db:default-cell-style-name</span> attribute specifies a default cell style. This style is applied to all cells in a column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:default-cell-style-name</span> attribute is usable with the following element: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:default-cell-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_46db_default-row-style-name"><span style="margin-right:0.127cm;">19.46</span></a><a id="__RefHeading__1416722_253892949"/><a id="attribute-db_default-row-style-name"/>db:default-row-style-name</h2><p class="Text_20_body">The <span class="Attribute">db:default-row-style-name</span> attribute specifies a default row style. This style is applied to all rows in a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:default-row-style-name</span> attribute is usable with the following elements: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a> and <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:default-row-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_47db_delete-rule"><span style="margin-right:0.127cm;">19.47</span></a><a id="__RefHeading__1416724_253892949"/><a id="attribute-db_delete-rule"/>db:delete-rule</h2><p class="Text_20_body">The <span class="Attribute">db:delete-rule</span> attribute specifies a rule that is applied for deleting records from a table. It is used only with foreign keys.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:delete-rule</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cascade</span>: when the primary key is deleted, rows that imported that key are deleted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no-action</span>: indicates that if the primary key has been imported, it cannot be deleted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">restrict</span>: a primary key shall not be deleted if it has been imported by another table as a foreign key.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">set-default</span>: when the primary key is deleted, the foreign key (imported key) is set to the default value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">set-null</span>: when the primary key is deleted, the foreign key (imported key) is changed to NULL.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">no-action</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:delete-rule</span> attribute is usable with the following element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:delete-rule</span> attribute are <span class="Attribute_20_Value">cascade</span>, <span class="Attribute_20_Value">restrict</span>, <span class="Attribute_20_Value">set-null</span>, <span class="Attribute_20_Value">no-action</span> or <span class="Attribute_20_Value">set-default</span>.</p><h2 class="Heading_20_2"><a id="a19_48db_description"><span style="margin-right:0.127cm;">19.48</span></a><a id="__RefHeading__1416726_253892949"/><a id="attribute-db_description"/>db:description</h2><p class="Text_20_body">The <span class="Attribute">db:description</span> attribute specifies a description of a database object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:description</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>, <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>, <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>, <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a> and <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:description</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_49db_enable-sql92-check"><span style="margin-right:0.127cm;">19.49</span></a><a id="__RefHeading__1416728_253892949"/><a id="attribute-db_enable-sql92-check"/>db:enable-sql92-check</h2><p class="Text_20_body">The <span class="Attribute">db:enable-sql92-check</span> attribute specifies whether the names of tables, views, columns, and queries may contain characters defined by the <a title="Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">[SQL]</a> feature F392.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:enable-sql92-check</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumers should permit characters defined by the <a title="Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">[SQL]</a> feature F392 for new or changed names of tables, views, columns, and queries. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumers should not permit characters defined by the <a title="Information Technology -- Database Language -- SQL -- Part 2: Foundation (SQL/Foundation)" href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38640">[SQL]</a> feature F392 for new or changed names of tables, views, columns, and queries. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:enable-sql92-check</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:enable-sql92-check</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_50db_encoding"><span style="margin-right:0.127cm;">19.50</span></a><a id="__RefHeading__1416730_253892949"/><a id="attribute-db_encoding"/>db:encoding</h2><p class="Text_20_body">The <span class="Attribute">db:encoding</span> attribute specifies a text encoding for string data.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">utf-8</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:encoding</span> attribute is usable with the following element: <span class="Element">&lt;db:character-set&gt;</span> <a href="#element-db_character-set">12.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:encoding</span> attribute has the data type <span class="Datatype">textEncoding</span> <a href="#datatype-textEncoding">18.3.35</a>.</p><h2 class="Heading_20_2"><a id="a19_51db_escape-processing"><span style="margin-right:0.127cm;">19.51</span></a><a id="__RefHeading__1416732_253892949"/><a id="attribute-db_escape-processing"/>db:escape-processing</h2><p class="Text_20_body">The <span class="Attribute">db:escape-processing</span> attribute specifies whether escape processing for a query is used or not. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:escape-processing</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumer should pass a query statement to the database driver without interpreting it itself.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumer may pass a query statement to a database driver after interpreting it itself. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:escape-processing</span> attribute is usable with the following element: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:escape-processing</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_52db_extension"><span style="margin-right:0.127cm;">19.52</span></a><a id="__RefHeading__1416734_253892949"/><a id="attribute-db_extension"/>db:extension</h2><p class="Text_20_body">The <span class="Attribute">db:extension</span> attribute of a <span class="Element">&lt;db:file-based-database&gt;</span> element specifies a file name extension for files which are used as tables.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:extension</span> attribute is usable with the following element: <span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:extension</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_53db_field"><span style="margin-right:0.127cm;">19.53</span></a><a id="__RefHeading__1416736_253892949"/><a id="attribute-db_field"/>db:field</h2><p class="Text_20_body">The <span class="Attribute">db:field</span> attribute specifies a separator for database fields.</p><p class="Default_20_Value_borderStart">The default value for this attribute is “<span class="Attribute_20_Value_20_Instance">;</span>” (U+003B, SEMICOLON).</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:field</span> attribute is usable with the following element: <span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:field</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_54db_hostname"><span style="margin-right:0.127cm;">19.54</span></a><a id="__RefHeading__1416738_253892949"/><a id="attribute-db_hostname"/>db:hostname</h2><p class="Text_20_body">The <span class="Attribute">db:hostname</span> attribute specifies the name of a server for a server-based database. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:hostname</span> attribute is usable with the following element: <span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:hostname</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_55db_ignore-driver-privileges"><span style="margin-right:0.127cm;">19.55</span></a><a id="__RefHeading__1416740_253892949"/><a id="attribute-db_ignore-driver-privileges"/>db:ignore-driver-privileges</h2><p class="Text_20_body">The <span class="Attribute">db:ignore-driver-privileges</span> attribute specifies whether privileges returned by a database driver should be ignored. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:ignore-driver-privileges</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: privileges returned by a database driver should not be ignored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: privileges returned by a database driver should be ignored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:ignore-driver-privileges</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:ignore-driver-privileges</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_56db_is-ascending"><span style="margin-right:0.127cm;">19.56</span></a><a id="__RefHeading__1416742_253892949"/><a id="attribute-db_is-ascending"/>db:is-ascending</h2><p class="Text_20_body">The <span class="Attribute">db:is-ascending</span> attribute specifies that a column is to be sorted in ascending order. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-ascending</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: column is not sorted in ascending order.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: column is sorted in ascending order.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:is-ascending</span> attribute is usable with the following element: <span class="Element">&lt;db:index-column&gt;</span> <a href="#element-db_index-column">12.48</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-ascending</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_57db_is-autoincrement"><span style="margin-right:0.127cm;">19.57</span></a><a id="__RefHeading__1416744_253892949"/><a id="attribute-db_is-autoincrement"/>db:is-autoincrement</h2><p class="Text_20_body">The <span class="Attribute">db:is-autoincrement</span> attribute specifies whether a column is automatically numbered.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-autoincrement</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: column is not automatically numbered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: column is automatically numbered.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:is-autoincrement</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-autoincrement</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_58db_is-clustered"><span style="margin-right:0.127cm;">19.58</span></a><a id="__RefHeading__1416746_253892949"/><a id="attribute-db_is-clustered"/>db:is-clustered</h2><p class="Text_20_body">The <span class="Attribute">db:is-clustered</span> attribute specifies that an index is clustered.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-clustered</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: index is not clustered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: index is clustered.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:is-clustered</span> attribute is usable with the following element: <span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-clustered</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_59db_is-empty-allowed"><span style="margin-right:0.127cm;">19.59</span></a><a id="__RefHeading__1416748_253892949"/><a id="attribute-db_is-empty-allowed"/>db:is-empty-allowed</h2><p class="Text_20_body">The <span class="Attribute">db:is-empty-allowed</span> attribute specifies whether a column may contain empty values. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-empty-allowed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: column shall not contain empty values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: column may contain empty values.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:is-empty-allowed</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-empty-allowed</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_60db_is-first-row-header-line"><span style="margin-right:0.127cm;">19.60</span></a><a id="__RefHeading__1416750_253892949"/><a id="attribute-db_is-first-row-header-line"/>db:is-first-row-header-line</h2><p class="Text_20_body">The <span class="Attribute">db:is-first-row-header-line</span> attribute specifies whether the first row in a text file, which is interpreted as table of a file-based database, is used to define the columns of a table.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-first-row-header-line</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: first row of text file does not define columns of a table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: first row of text file does define columns of a table.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:is-first-row-header-line</span> attribute is usable with the following elements: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a> and <span class="Element">&lt;db:table-setting&gt;</span> <a href="#element-db_table-setting">12.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-first-row-header-line</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_61db_login-timeout"><span style="margin-right:0.127cm;">19.61</span></a><a id="__RefHeading__1416752_253892949"/><a id="attribute-db_login-timeout"/>db:login-timeout</h2><p class="Text_20_body">The <span class="Attribute">db:login-timeout</span> attribute indicates a default time-out to be used when establishing a connection for this data source. If the attribute is not present, then default time-out is specified by the database server. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:login-timeout</span> attribute is usable with the following element: <span class="Element">&lt;db:login&gt;</span> <a href="#element-db_login">12.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:login-timeout</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_62db_is-nullable"><span style="margin-right:0.127cm;">19.62</span></a><a id="__RefHeading__1416754_253892949"/><a id="attribute-db_is-nullable"/>db:is-nullable</h2><p class="Text_20_body">The <span class="Attribute">db:is-nullable</span> attribute specifies the nullability of values in a column.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-nullable</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no-nulls</span>: null values should not appear in a column.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">nullable</span>: null values may appear in a column.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:is-nullable</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:is-nullable</span> attribute are <span class="Attribute_20_Value">no-nulls</span> or <span class="Attribute_20_Value">nullable</span>.</p><h2 class="Heading_20_2"><a id="a19_63db_is-password-required"><span style="margin-right:0.127cm;">19.63</span></a><a id="__RefHeading__1416756_253892949"/><a id="attribute-db_is-password-required"/>db:is-password-required</h2><p class="Text_20_body">The <span class="Attribute">db:is-password-required</span> attribute specifies if a password is always necessary when establishing a connection for a data source.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-password-required</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: password should not be required for a connection to data source.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: password should be required for a connection to data source.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:is-password-required</span> attribute is usable with the following element: <span class="Element">&lt;db:login&gt;</span> <a href="#element-db_login">12.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-password-required</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_64db_is-unique"><span style="margin-right:0.127cm;">19.64</span></a><a id="__RefHeading__1416758_253892949"/><a id="attribute-db_is-unique"/>db:is-unique</h2><p class="Text_20_body">The <span class="Attribute">db:is-unique</span> attribute specifies an index shall have unique values.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-unique</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: index should not require unique values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: index shall have unique values.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:is-unique</span> attribute is usable with the following element: <span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-unique</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_65db_precision"><span style="margin-right:0.127cm;">19.65</span></a><a id="__RefHeading__1416760_253892949"/><a id="attribute-db_precision"/>db:precision</h2><p class="Text_20_body">The <span class="Attribute">db:precision</span> attribute specifies a column's number of decimal digits.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:precision</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:precision</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_66db_is-table-name-length-limited"><span style="margin-right:0.127cm;">19.66</span></a><a id="__RefHeading__1416762_253892949"/><a id="attribute-db_is-table-name-length-limited"/>db:is-table-name-length-limited</h2><p class="Text_20_body">The <span class="Attribute">db:is-table-name-length-limited</span> attribute specifies whether table names are limited to eight characters or fewer characters.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:is-table-name-length-limited</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: tables names may exceed eight characters in length.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table names shall not be greater than eight characters in length.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:is-table-name-length-limited</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:is-table-name-length-limited</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_67db_local-socket"><span style="margin-right:0.127cm;">19.67</span></a><a id="__RefHeading__1416764_253892949"/><a id="attribute-db_local-socket"/>db:local-socket</h2><p class="Text_20_body">The <span class="Attribute">db:local-socket</span> attribute specifies local socket on which a server database is running and accepting connections. The server's local socket filename is used for connecting to a server database when it is running locally. </p><p class="Text_20_body">If <span class="Attribute">db:local-socket</span> is present but empty, consumers should use the default local socket for the database type in question.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:local-socket</span> attribute is usable with the following element: <span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:local-socket</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_68db_max-row-count"><span style="margin-right:0.127cm;">19.68</span></a><a id="__RefHeading__1416766_253892949"/><a id="attribute-db_max-row-count"/>db:max-row-count</h2><p class="Text_20_body">The <span class="Attribute">db:max-row-count</span> attribute specifies the maximum number of rows that should be returned in a result set.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:max-row-count</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:max-row-count</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_69db_media-type"><span style="margin-right:0.127cm;">19.69</span></a><a id="__RefHeading__1416768_253892949"/><a id="attribute-db_media-type"/>db:media-type</h2><p class="Text_20_body">The <span class="Attribute">db:media-type</span> attribute of a <span class="Element">&lt;db:file-based-database&gt;</span> element specifies the type of the file(s) that comprise a database. If the database consists of multiple files of different types which all are required for it to be operational, this attribute specifies the type of the file l to by the <span class="Attribute">xlink:href</span> attribute on the <span class="Element">&lt;db:file-based-database&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:media-type</span> attribute is usable with the following element: <span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:media-type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_70db_name"><span style="margin-right:0.127cm;">19.70</span></a><a id="__RefHeading__1416770_253892949"/><a id="attribute-db_name"/>db:name</h2><h3 class="Heading_20_3"><a id="a19_70_1General"><span style="margin-right:0.127cm;">19.70.1</span></a><a id="__RefHeading__1416772_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies a name of a database or component of a database.</p><h3 class="Heading_20_3"><a id="a19_70_2_db_column_"><span style="margin-right:0.127cm;">19.70.2</span></a><a id="__RefHeading__1416774_253892949"/><a id="attribute-db_name_element-db_column"/>&lt;db:column&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute value specifies the name of a column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_3_db_column-definition_"><span style="margin-right:0.127cm;">19.70.3</span></a><a id="__RefHeading__1416776_253892949"/><a id="attribute-db_name_element-db_column-definition"/>&lt;db:column-definition&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_4_db_component_"><span style="margin-right:0.127cm;">19.70.4</span></a><a id="__RefHeading__1416778_253892949"/><a id="attribute-db_name_element-db_component"/>&lt;db:component&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a database component.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_5_db_component-collection_"><span style="margin-right:0.127cm;">19.70.5</span></a><a id="__RefHeading__1416780_253892949"/><a id="attribute-db_name_element-db_component-collection"/>&lt;db:component-collection&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a collection of <span class="Element">&lt;db:component&gt;</span> and <span class="Element">&lt;db:component-collection&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_6_db_index_"><span style="margin-right:0.127cm;">19.70.6</span></a><a id="__RefHeading__1416782_253892949"/><a id="attribute-db_name_element-db_index"/>&lt;db:index&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute value specifies the name of an index. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_7_db_index-column_"><span style="margin-right:0.127cm;">19.70.7</span></a><a id="__RefHeading__1416784_253892949"/><a id="attribute-db_name_element-db_index-column"/>&lt;db:index-column&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute value specifies the name of an index column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:index-column&gt;</span> <a href="#element-db_index-column">12.48</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_8_db_key_"><span style="margin-right:0.127cm;">19.70.8</span></a><a id="__RefHeading__1416786_253892949"/><a id="attribute-db_name_element-db_key"/>&lt;db:key&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute value specifies the name of a key. If the key is not a primary key, the <span class="Attribute">db:name</span> attribute with a value shall appear on the <span class="Element">&lt;db:key&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_9_db_key-column_"><span style="margin-right:0.127cm;">19.70.9</span></a><a id="__RefHeading__1416788_253892949"/><a id="attribute-db_name_element-db_key-column"/>&lt;db:key-column&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a <span class="Element">&lt;db:key-column&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:key-column&gt;</span> <a href="#element-db_key-column">12.44</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_10_db_query_"><span style="margin-right:0.127cm;">19.70.10</span></a><a id="__RefHeading__1416790_253892949"/><a id="attribute-db_name_element-db_query"/>&lt;db:query&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a <span class="Element">&lt;db:query&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_11_db_query-collection_"><span style="margin-right:0.127cm;">19.70.11</span></a><a id="__RefHeading__1416792_253892949"/><a id="attribute-db_name_element-db_query-collection"/>&lt;db:query-collection&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a collection of <span class="Element">&lt;db:query&gt;</span> and <span class="Element">&lt;db:query-collection&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_12_db_table-definition_"><span style="margin-right:0.127cm;">19.70.12</span></a><a id="__RefHeading__1416794_253892949"/><a id="attribute-db_name_element-db_table-definition"/>&lt;db:table-definition&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a schema for a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_13_db_table-representation_"><span style="margin-right:0.127cm;">19.70.13</span></a><a id="__RefHeading__1416796_253892949"/><a id="attribute-db_name_element-db_table-representation"/>&lt;db:table-representation&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute value specifies the name of a table. Fully identifying a table in a database may require values from the <span class="Attribute">db:catalog-name</span> and <span class="Attribute">db:schema-name</span> attributes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_70_14_db_update-table_"><span style="margin-right:0.127cm;">19.70.14</span></a><a id="__RefHeading__1416798_253892949"/><a id="attribute-db_name_element-db_update-table"/>&lt;db:update-table&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:name</span> attribute specifies the name of a <span class="Element">&lt;db:update-table&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:name</span> attribute is usable with the following element: <span class="Element">&lt;db:update-table&gt;</span> <a href="#element-db_update-table">12.31</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_71db_parameter-name-substitution"><span style="margin-right:0.127cm;">19.71</span></a><a id="__RefHeading__1416800_253892949"/><a id="attribute-db_parameter-name-substitution"/>db:parameter-name-substitution</h2><p class="Text_20_body">The <span class="Attribute">db:parameter-name-substitution</span> attribute specifies that parameter names shall be replaced with a ”?” (U+003F, QUESTION MARK). </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:parameter-name-substitution</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: parameters names may be replaced by a ”?”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: parameters names shall be replaced by a “?”.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:parameter-name-substitution</span> attribute is usable with the following element: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:parameter-name-substitution</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_72db_port"><span style="margin-right:0.127cm;">19.72</span></a><a id="__RefHeading__1416802_253892949"/><a id="attribute-db_port"/>db:port</h2><p class="Text_20_body">The <span class="Attribute">db:port</span> attribute specifies the port on which a server database is accepting connections. If no port is present, consumers should use the default port for the database type in question.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:port</span> attribute is usable with the following element: <span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:port</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_73db_referenced-table-name"><span style="margin-right:0.127cm;">19.73</span></a><a id="__RefHeading__1416804_253892949"/><a id="attribute-db_referenced-table-name"/>db:referenced-table-name</h2><p class="Text_20_body">The <span class="Attribute">db:referenced-table-name</span> attribute specifies the name of a referenced table. It is only used with foreign keys.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:referenced-table-name</span> attribute is usable with the following element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:referenced-table-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_74db_related-column-name"><span style="margin-right:0.127cm;">19.74</span></a><a id="__RefHeading__1416806_253892949"/><a id="attribute-db_related-column-name"/>db:related-column-name</h2><p class="Text_20_body">The <span class="Attribute">db:related-column-name</span> attribute specifies the name of a reference column out of the referenced table. It is used only with foreign keys.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:related-column-name</span> attribute is usable with the following element: <span class="Element">&lt;db:key-column&gt;</span> <a href="#element-db_key-column">12.44</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:related-column-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_75db_row-retrieving-statement"><span style="margin-right:0.127cm;">19.75</span></a><a id="__RefHeading__1416808_253892949"/><a id="attribute-db_row-retrieving-statement"/>db:row-retrieving-statement</h2><p class="Text_20_body">The <span class="Attribute">db:row-retrieving-statement</span> attribute specifies an SQL statement, which is executed to retrieve auto generated values after inserting a new row.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:row-retrieving-statement</span> attribute is usable with the following element: <span class="Element">&lt;db:auto-increment&gt;</span> <a href="#element-db_auto-increment">12.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:row-retrieving-statement</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_76db_scale"><span style="margin-right:0.127cm;">19.76</span></a><a id="__RefHeading__1416810_253892949"/><a id="attribute-db_scale"/>db:scale</h2><p class="Text_20_body">The <span class="Attribute">db:scale</span> attribute specifies a column's number of digits to the right of the decimal point.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:scale</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:scale</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_77db_schema-name"><span style="margin-right:0.127cm;">19.77</span></a><a id="__RefHeading__1416812_253892949"/><a id="attribute-db_schema-name"/>db:schema-name</h2><p class="Text_20_body">The <span class="Attribute">db:schema-name</span> attribute specifies the name of a schema.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:schema-name</span> attribute is usable with the following elements: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>, <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a> and <span class="Element">&lt;db:update-table&gt;</span> <a href="#element-db_update-table">12.31</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:schema-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_78db_show-deleted"><span style="margin-right:0.127cm;">19.78</span></a><a id="__RefHeading__1416814_253892949"/><a id="attribute-db_show-deleted"/>db:show-deleted</h2><p class="Text_20_body">The <span class="Attribute">db:show-deleted</span> attribute specifies that deleted records should be included in result sets.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:show-deleted</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: deleted records not included in result sets.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: deleted records included in result sets. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:show-deleted</span> attribute is usable with the following elements: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a> and <span class="Element">&lt;db:table-setting&gt;</span> <a href="#element-db_table-setting">12.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:show-deleted</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_79db_string"><span style="margin-right:0.127cm;">19.79</span></a><a id="__RefHeading__1416816_253892949"/><a id="attribute-db_string"/>db:string</h2><p class="Text_20_body">The <span class="Attribute">db:string</span> attribute specifies a separator for strings.</p><p class="Default_20_Value_borderStart">The default value for this attribute is "<span class="Attribute_20_Value_20_Instance">.</span>" (U+002E, FULL STOP).</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:string</span> attribute is usable with the following element: <span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:string</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_80db_style-name"><span style="margin-right:0.127cm;">19.80</span></a><a id="__RefHeading__1416818_253892949"/><a id="attribute-db_style-name"/>db:style-name</h2><h3 class="Heading_20_3"><a id="a19_80_1General"><span style="margin-right:0.127cm;">19.80.1</span></a><a id="__RefHeading__1416820_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">db:style-name</span> attribute specifies a style name of a style family for the element upon which it appears. </p><h3 class="Heading_20_3"><a id="a19_80_2_db_column_"><span style="margin-right:0.127cm;">19.80.2</span></a><a id="__RefHeading__1416822_253892949"/><a id="attribute-db_style-name_element-db_column"/>&lt;db:column&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:style-name</span> attribute value specifies the name of a style of the family <span class="Attribute_20_Value">table-column</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:style-name</span> attribute is usable with the following element: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_80_3_db_query_"><span style="margin-right:0.127cm;">19.80.3</span></a><a id="__RefHeading__1416824_253892949"/><a id="attribute-db_style-name_element-db_query"/>&lt;db:query&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:style-name</span> attribute value specifies the name of a style of the family <span class="Attribute_20_Value">table</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:style-name</span> attribute is usable with the following element: <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_80_4_db_table-representation_"><span style="margin-right:0.127cm;">19.80.4</span></a><a id="__RefHeading__1416826_253892949"/><a id="attribute-db_style-name_element-db_table-representation"/>&lt;db:table-representation&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:style-name</span> attribute value specifies the name of a style of the family <span class="Attribute_20_Value">table</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:style-name</span> attribute is usable with the following element: <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_81db_suppress-version-columns"><span style="margin-right:0.127cm;">19.81</span></a><a id="__RefHeading__1416828_253892949"/><a id="attribute-db_suppress-version-columns"/>db:suppress-version-columns</h2><p class="Text_20_body">The <span class="Attribute">db:suppress-version-columns</span> attribute specifies that version columns, columns that are used for versioning row content, should be suppressed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:suppress-version-columns</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: version columns are not suppressed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: version columns should be suppressed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:suppress-version-columns</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:suppress-version-columns</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_82db_system-driver-settings"><span style="margin-right:0.127cm;">19.82</span></a><a id="__RefHeading__1416830_253892949"/><a id="attribute-db_system-driver-settings"/>db:system-driver-settings</h2><p class="Text_20_body">The <span class="Attribute">db:system-driver-settings</span> attribute specifies system specific options for a connection.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:system-driver-settings</span> attribute is usable with the following element: <span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:system-driver-settings</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_83db_thousand"><span style="margin-right:0.127cm;">19.83</span></a><a id="__RefHeading__1416832_253892949"/><a id="attribute-db_thousand"/>db:thousand</h2><p class="Text_20_body">The <span class="Attribute">db:thousand</span> attribute specifies a thousand separator of numeric fields.</p><p class="Default_20_Value_borderStart">The default value for this attribute is “<span class="Attribute_20_Value_20_Instance">,</span>” (U+002C, COMMA).</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:thousand</span> attribute is usable with the following element: <span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:thousand</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_84db_title"><span style="margin-right:0.127cm;">19.84</span></a><a id="__RefHeading__1416834_253892949"/><a id="attribute-db_title"/>db:title</h2><p class="Text_20_body">The <span class="Attribute">db:title</span> attribute specifies a human-readable title of an object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:title</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>, <span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a>, <span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a>, <span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a> and <span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_85db_type"><span style="margin-right:0.127cm;">19.85</span></a><a id="__RefHeading__1416836_253892949"/><a id="attribute-db_type"/>db:type</h2><h3 class="Heading_20_3"><a id="a19_85_1General"><span style="margin-right:0.127cm;">19.85.1</span></a><a id="__RefHeading__1416838_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">db:type</span> attribute specifies a type for keys, databases, or tables, depending upon the element where it occurs.</p><h3 class="Heading_20_3"><a id="a19_85_2_db_key_"><span style="margin-right:0.127cm;">19.85.2</span></a><a id="__RefHeading__1416840_253892949"/><a id="attribute-db_type_element-db_key"/>&lt;db:key&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:type</span> attribute specifies the type of a key. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">foreign</span>: a foreign key is a tuple of values in a database record that points to a key of a record in another table. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">primary</span>: a primary key is a tuple of values that can be used to identify a row in a table. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unique</span>: a unique key specifies that the value of the key is unique but may be the NULL value.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:type</span> attribute is usable with the following element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:type</span> attribute are <span class="Attribute_20_Value">primary</span>, <span class="Attribute_20_Value">unique</span> or <span class="Attribute_20_Value">foreign</span>.</p><h3 class="Heading_20_3"><a id="a19_85_3_db_server-database_"><span style="margin-right:0.127cm;">19.85.3</span></a><a id="__RefHeading__1416842_253892949"/><a id="attribute-db_type_element-db_server-database"/>&lt;db:server-database&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:type</span> attribute specifies the type of a database. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:type</span> attribute is usable with the following element: <span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:type</span> attribute has the data type <span class="Datatype">namespacedToken</span> <a href="#datatype-namespacedToken">18.3.19</a>.</p><h3 class="Heading_20_3"><a id="a19_85_4_db_table-definition_"><span style="margin-right:0.127cm;">19.85.4</span></a><a id="__RefHeading__1416844_253892949"/><a id="attribute-db_type_element-db_table-definition"/>&lt;db:table-definition&gt;</h3><p class="Text_20_body">The <span class="Attribute">db:type</span> attribute specifies the type of a table. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">system table</span>: a table used by a database for administration.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">table</span>: a table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">view</span>: a table that is a view of another table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Implementation-defined values<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:type</span> attribute is usable with the following element: <span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_86db_type-name"><span style="margin-right:0.127cm;">19.86</span></a><a id="__RefHeading__1416846_253892949"/><a id="attribute-db_type-name"/>db:type-name</h2><p class="Text_20_body">The <span class="Attribute">db:type-name</span> attribute specifies a database dependent type name of a database column. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:type-name</span> attribute is usable with the following element: <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:type-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_87db_update-rule"><span style="margin-right:0.127cm;">19.87</span></a><a id="__RefHeading__1416848_253892949"/><a id="attribute-db_update-rule"/>db:update-rule</h2><p class="Text_20_body">The <span class="Attribute">db:update-rule</span> attribute specifies a rule that is applied for updating records in a table. It is only used for foreign keys. </p><p class="Text_20_body">The defined values for the <span class="Attribute">db:update-rule</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cascade</span>: when the primary key is updated, the foreign key (imported key) is changed to the same value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">restrict</span>: a primary key shall not be updated if it has been imported by another table as a foreign key.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no-action</span>: if the primary key has been imported, it cannot be updated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">set-default</span>: when the primary key is updated, the foreign key (imported key) is set to the default value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">set-null</span>: when the primary key is updated, the foreign key (imported key) is changed to NULL.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">no-action</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:update-rule</span> attribute is usable with the following element: <span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">db:update-rule</span> attribute are <span class="Attribute_20_Value">cascade</span>, <span class="Attribute_20_Value">restrict</span>, <span class="Attribute_20_Value">set-null</span>, <span class="Attribute_20_Value">no-action</span> or <span class="Attribute_20_Value">set-default</span>.</p><h2 class="Heading_20_2"><a id="a19_88db_use-catalog"><span style="margin-right:0.127cm;">19.88</span></a><a id="__RefHeading__1416850_253892949"/><a id="attribute-db_use-catalog"/>db:use-catalog</h2><p class="Text_20_body">The <span class="Attribute">db:use-catalog</span> attribute specifies that a catalog name should be used to reference a table in SQL statements.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:use-catalog</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: catalog name is not use to reference a table in SQL statements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: catalog name should be used to reference a table in SQL statements.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:use-catalog</span> attribute is usable with the following element: <span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:use-catalog</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_89db_use-system-user"><span style="margin-right:0.127cm;">19.89</span></a><a id="__RefHeading__1416852_253892949"/><a id="attribute-db_use-system-user"/>db:use-system-user</h2><p class="Text_20_body">The <span class="Attribute">db:use-system-user</span> attribute specifies that the name of a user as logged in to the client operating system is used.</p><p class="Text_20_body">If <span class="Attribute">db:use-system-user</span> and <span class="Attribute">db:user-name</span> attributes are omitted and the server requires a user name, the user is prompted to enter a name.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:use-system-user</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: name of user logged into client operating system is not used for login.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: name of user logged into client operating system is used for login.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:use-system-user</span> attribute is usable with the following element: <span class="Element">&lt;db:login&gt;</span> <a href="#element-db_login">12.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:use-system-user</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_90db_user-name"><span style="margin-right:0.127cm;">19.90</span></a><a id="__RefHeading__1416854_253892949"/><a id="attribute-db_user-name"/>db:user-name</h2><p class="Text_20_body">The <span class="Attribute">db:user-name</span> attribute specifies a user name for authentication upon creating a connection to a database.</p><p class="Text_20_body">If <span class="Attribute">db:user-name</span> and <span class="Attribute">db:use-system-user</span> attributes are omitted and the server requires a user name, the user is prompted to enter a name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">db:user-name</span> attribute is usable with the following element: <span class="Element">&lt;db:login&gt;</span> <a href="#element-db_login">12.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:user-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_91db_visible"><span style="margin-right:0.127cm;">19.91</span></a><a id="__RefHeading__1416856_253892949"/><a id="attribute-db_visible"/>db:visible</h2><p class="Text_20_body">The <span class="Attribute">db:visible</span> attribute specifies whether a column appears in a table grid view.</p><p class="Text_20_body">The defined values for the <span class="Attribute">db:visible</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: column does not appear in a table grid view.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: column appears in a table grid view.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">db:visible</span> attribute is usable with the following element: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">db:visible</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_92dr3d_ambient-color"><span style="margin-right:0.127cm;">19.92</span></a><a id="__RefHeading__1416858_253892949"/><a id="attribute-dr3d_ambient-color"/>dr3d:ambient-color</h2><p class="Text_20_body">The <span class="Attribute">dr3d:ambient-color</span> attribute specifies a color for ambient light. </p><p class="Note"><span class="Note_20_Label">Note: </span>Ambient light is light that seems to come from all directions.</p><p class="Text_20_body">The <span class="Attribute">dr3d:ambient-color</span> attribute, along with dr3d:diffuse-color, <span class="Attribute">dr3d:emissive-color</span>, and <span class="Attribute">dr3d:specular-color</span> specifies the four colors that define the color of a material.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:ambient-color</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:ambient-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_93dr3d_center"><span style="margin-right:0.127cm;">19.93</span></a><a id="__RefHeading__1416860_253892949"/><a id="attribute-dr3d_center"/>dr3d:center</h2><p class="Text_20_body">The <span class="Attribute">dr3d:center</span> attribute specifies the center of a sphere in a three-dimensional space.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:center</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:center</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_94dr3d_diffuse-color"><span style="margin-right:0.127cm;">19.94</span></a><a id="__RefHeading__1416862_253892949"/><a id="attribute-dr3d_diffuse-color"/>dr3d:diffuse-color</h2><p class="Text_20_body">The <span class="Attribute">dr3d:diffuse-color</span> attribute specifies the base color that a light is emitting.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:diffuse-color</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:light&gt;</span> <a href="#element-dr3d_light">10.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:diffuse-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_95dr3d_direction"><span style="margin-right:0.127cm;">19.95</span></a><a id="__RefHeading__1416864_253892949"/><a id="attribute-dr3d_direction"/>dr3d:direction</h2><p class="Text_20_body">The <span class="Attribute">dr3d:direction</span> attribute specifies the direction in which light is emitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:direction</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:light&gt;</span> <a href="#element-dr3d_light">10.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:direction</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_96dr3d_distance"><span style="margin-right:0.127cm;">19.96</span></a><a id="__RefHeading__1416866_253892949"/><a id="attribute-dr3d_distance"/>dr3d:distance</h2><p class="Text_20_body">The <span class="Attribute">dr3d:distance</span> attribute specifies the distance between a camera and an object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:distance</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:distance</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_97dr3d_enabled"><span style="margin-right:0.127cm;">19.97</span></a><a id="__RefHeading__1416868_253892949"/><a id="attribute-dr3d_enabled"/>dr3d:enabled</h2><p class="Text_20_body">The <span class="Attribute">dr3d:enabled</span> attribute specifies if a light is enabled. If a light is not enabled, it does not emit any light.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:enabled</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: light is not enabled.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: light is enabled.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:enabled</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:light&gt;</span> <a href="#element-dr3d_light">10.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:enabled</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_98dr3d_focal-length"><span style="margin-right:0.127cm;">19.98</span></a><a id="__RefHeading__1416870_253892949"/><a id="attribute-dr3d_focal-length"/>dr3d:focal-length</h2><p class="Text_20_body">The <span class="Attribute">dr3d:focal-length</span> attribute specifies the focal length of a virtual camera in a scene.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:focal-length</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:focal-length</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_99dr3d_lighting-mode"><span style="margin-right:0.127cm;">19.99</span></a><a id="__RefHeading__1416872_253892949"/><a id="attribute-dr3d_lighting-mode"/>dr3d:lighting-mode</h2><h3 class="Heading_20_3"><a id="a19_99_1General"><span style="margin-right:0.127cm;">19.99.1</span></a><a id="__RefHeading__1416874_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">dr3d:lighting-mode</span> attribute specifies the use of lighting in three-dimensional scenes</p><p class="Note"><span class="Note_20_Label">Note</span>: The <span class="Attribute">dr3d:lighting-mode</span> attribute is also defined for 3D objects. <a href="#property-dr3d_lighting-mode">20.79</a></p><h3 class="Heading_20_3"><a id="a19_99_2_chart_plot-area_"><span style="margin-right:0.127cm;">19.99.2</span></a><a id="__RefHeading__1416876_253892949"/><a id="attribute-dr3d_lighting-mode_element-chart_plot-area"/>&lt;chart:plot-area&gt;</h3><p class="Text_20_body">The <span class="Attribute">dr3d:lighting-mode</span> attribute specifies whether lighting is used in a three-dimensional chart.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:lighting-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: lighting is not used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: lighting is used.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:lighting-mode</span> attribute is usable with the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:lighting-mode</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h3 class="Heading_20_3"><a id="a19_99_3_dr3d_scene_"><span style="margin-right:0.127cm;">19.99.3</span></a><a id="__RefHeading__1416878_253892949"/><a id="attribute-dr3d_lighting-mode_element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">The <span class="Attribute">dr3d:lighting-mode</span> attribute specifies whether lighting is used in a three-dimensional scene.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:lighting-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: lighting is not used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: lighting is used.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:lighting-mode</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:lighting-mode</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_100dr3d_max-edge"><span style="margin-right:0.127cm;">19.100</span></a><a id="__RefHeading__1416880_253892949"/><a id="attribute-dr3d_max-edge"/>dr3d:max-edge </h2><p class="Text_20_body">The <span class="Attribute">dr3d:max-edge</span> attribute specifies the maximum x, y and z coordinate values for a cube. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:max-edge</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:max-edge</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_101dr3d_min-edge"><span style="margin-right:0.127cm;">19.101</span></a><a id="__RefHeading__1416882_253892949"/><a id="attribute-dr3d_min-edge"/>dr3d:min-edge</h2><p class="Text_20_body">The <span class="Attribute">dr3d:min-edge</span> attribute specifies the minimum x, y and z coordinate values for a cube. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:min-edge</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:min-edge</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_102dr3d_projection"><span style="margin-right:0.127cm;">19.102</span></a><a id="__RefHeading__1416884_253892949"/><a id="attribute-dr3d_projection"/>dr3d:projection</h2><p class="Text_20_body">The <span class="Attribute">dr3d:projection</span> attribute specifies a projection mode.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:projection</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">parallel</span>: distance from the center of projection to the projection plane is infinite.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">erspective</span>: distance from the center of projection to the projection plane is finite.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a> element the default value for this attribute is <span class="Attribute_20_Value">parallel</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">dr3d:projection</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a> and <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:projection</span> attribute are <span class="Attribute_20_Value">parallel</span> or <span class="Attribute_20_Value">perspective</span>.</p><h2 class="Heading_20_2"><a id="a19_103dr3d_shade-mode"><span style="margin-right:0.127cm;">19.103</span></a><a id="__RefHeading__1416886_253892949"/><a id="attribute-dr3d_shade-mode"/>dr3d:shade-mode</h2><p class="Text_20_body">The <span class="Attribute">dr3d:shade-mode</span> attribute specifies how lighting is calculated for rendered surfaces.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:shade-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">draft</span>: surfaces are not lit and drawn as wireframe only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">flat</span>: lighting is calculated by one surface normal.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">gouraud</span>: lighting is calculated by interpolating the color calculated with the surface normals at each edge.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">phong</span>: lighting is calculated by interpolating the surface normals over the surface.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a> element the default value for this attribute is <span class="Attribute_20_Value">flat</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">dr3d:shade-mode</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a> and <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:shade-mode</span> attribute are <span class="Attribute_20_Value">flat</span>, <span class="Attribute_20_Value">phong</span>, <span class="Attribute_20_Value">gouraud</span> or <span class="Attribute_20_Value">draft</span>.</p><h2 class="Heading_20_2"><a id="a19_104dr3d_shadow-slant"><span style="margin-right:0.127cm;">19.104</span></a><a id="__RefHeading__1416888_253892949"/><a id="attribute-dr3d_shadow-slant"/>dr3d:shadow-slant</h2><p class="Text_20_body">The <span class="Attribute">dr3d:shadow-slant</span> attribute specifies an angle from a three-dimensional scene to a virtual paper on which a shadow is cast. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:shadow-slant</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:shadow-slant</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_105dr3d_size"><span style="margin-right:0.127cm;">19.105</span></a><a id="__RefHeading__1416890_253892949"/><a id="attribute-dr3d_size"/>dr3d:size</h2><p class="Text_20_body">The <span class="Attribute">dr3d:size</span> attribute specifies the size of a sphere in a three-dimensional space.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:size</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:size</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_106dr3d_specular"><span style="margin-right:0.127cm;">19.106</span></a><a id="__RefHeading__1416892_253892949"/><a id="attribute-dr3d_specular"/>dr3d:specular</h2><p class="Text_20_body">The <span class="Attribute">dr3d:specular</span> attribute specifies whether a light causes a specular reflection on objects. consumers may evaluate this attribute only for the first light in a scene.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:specular</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: light does not cause specular reflection.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: light does cause specular reflection.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:specular</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:light&gt;</span> <a href="#element-dr3d_light">10.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:specular</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_107dr3d_transform"><span style="margin-right:0.127cm;">19.107</span></a><a id="__RefHeading__1416894_253892949"/><a id="attribute-dr3d_transform"/>dr3d:transform</h2><p class="Text_20_body">The <span class="Attribute">dr3d:transform</span> attribute specifies a list of transform definitions, which are applied in the order provided. The individual transform definitions are separated by white space. </p><p class="Text_20_body">The defined transforms are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">matrix(</span><span class="Attribute_20_Value_20_Param">&lt;a&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;b&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;c&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;d&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;e&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;f&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;g&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;h&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;i&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;j&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;k&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;l&gt;</span><span class="Attribute_20_Value_20_Instance">)</span>: specifies a transformation in the form of a transformation matrix of twelve values. The values describe a standard 4x3 homogeneous transformation matrix in column-major order, where the right column (&lt;j&gt;, &lt;k&gt;, &lt;l&gt;) describes the translation. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">rotatex(</span><span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span><span class="Attribute_20_Value_20_Instance">)</span>: specifies a rotation by <span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span> degrees along the x-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">rotatey(</span><span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span><span class="Attribute_20_Value_20_Instance">)</span>: specifies a rotation by <span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span> degrees along the y-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">rotatez(</span><span class="Attribute_20_Value_20_Param">&lt;rotate-angle</span>&gt;<span class="Attribute_20_Value_20_Instance">)</span>: specifies a rotation by <span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span> degrees along the z-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">scale(</span><span class="Attribute_20_Value_20_Param">&lt;sx&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;sy&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;sz&gt;</span><span class="Attribute_20_Value_20_Instance">)</span>: specifies a scale operation by <span class="Attribute_20_Value_20_Param">sx</span>, <span class="Attribute_20_Value_20_Param">sy</span> and <span class="Attribute_20_Value_20_Param">sz</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">translate(</span><span class="Attribute_20_Value_20_Param">&lt;tx&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;ty&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;tz</span>&gt;<span class="Attribute_20_Value_20_Instance">)</span>: specifies a translation by <span class="Attribute_20_Value_20_Param">tx</span>, <span class="Attribute_20_Value_20_Param">ty</span> and <span class="Attribute_20_Value_20_Param">tz</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:transform</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a> and <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:transform</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_108dr3d_vpn"><span style="margin-right:0.127cm;">19.108</span></a><a id="__RefHeading__1416896_253892949"/><a id="attribute-dr3d_vpn"/>dr3d:vpn</h2><p class="Text_20_body">The <span class="Attribute">dr3d:vpn</span> attribute specifies a pointer towards projected objects.</p><p class="Text_20_body">With the <span class="Attribute">dr3d:vrp</span> and <span class="Attribute">dr3d:vup</span> attributes, the <span class="Attribute">dr3d:vpn</span> attribute specifies a viewing volume. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:vpn</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:vpn</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_109dr3d_vrp"><span style="margin-right:0.127cm;">19.109</span></a><a id="__RefHeading__1416898_253892949"/><a id="attribute-dr3d_vrp"/>dr3d:vrp</h2><p class="Text_20_body">The <span class="Attribute">dr3d:vrp</span> attribute specifies an origin.</p><p class="Text_20_body">With the <span class="Attribute">dr3d:vpn</span> and <span class="Attribute">dr3d:vup</span> attributes, the <span class="Attribute">dr3d:vrp</span> attribute specifies a viewing volume.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:vrp</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:vrp</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_110dr3d_vup"><span style="margin-right:0.127cm;">19.110</span></a><a id="__RefHeading__1416900_253892949"/><a id="attribute-dr3d_vup"/>dr3d:vup</h2><p class="Text_20_body">The <span class="Attribute">dr3d:vup</span> attribute specifies an up vector. </p><p class="Text_20_body">With the <span class="Attribute">dr3d:vpn</span> and <span class="Attribute">dr3d:vrp</span> attributes, the <span class="Attribute">dr3d:vup</span> attribute specifies a viewing volume.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:vup</span> attribute is usable with the following elements: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a> and <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:vup</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_111draw_align"><span style="margin-right:0.127cm;">19.111</span></a><a id="__RefHeading__1416902_253892949"/><a id="attribute-draw_align"/>draw:align</h2><p class="Text_20_body">The <span class="Attribute">draw:align</span> attribute specifies the shape edge where a glue point is positioned.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-left</span>: The position of the glue point is specified relative to the bottom-left corner of the shape's bounding box. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">ottom-right</span>: The position of the glue point is specified relative to the bottom-right corner of the shape's bounding box. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">enter</span>: The position of the glue point is specified relative to the center of the shape's bounding box. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: The position of the glue point is specified relative to the right of the shape's bounding box. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op</span>: The position of the glue point is specified relative to the top of the shape's bounding box. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op-right</span>: The position of the glue point is specified relative to the top-right corner of the shape's bounding box. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op-left</span>: The position of the glue point is specified relative to the top-left corner of the shape's bounding box. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:align</span> attribute is usable with the following element: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:align</span> attribute are <span class="Attribute_20_Value">top-left</span>, <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">top-right</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">bottom-left</span> or <span class="Attribute_20_Value">bottom-right</span>.</p><h2 class="Heading_20_2"><a id="a19_112draw_angle"><span style="margin-right:0.127cm;">19.112</span></a><a id="__RefHeading__1416904_253892949"/><a id="attribute-draw_angle"/>draw:angle</h2><p class="Text_20_body">The <span class="Attribute">draw:angle</span> attribute specifies an angle that rotates the axis at which the gradient values are interpolated. This attribute is ignored for radial style gradients. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:angle</span> attribute is usable with the following elements: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a> and <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_113draw_archive"><span style="margin-right:0.127cm;">19.113</span></a><a id="__RefHeading__1416906_253892949"/><a id="attribute-draw_archive"/>draw:archive</h2><p class="Text_20_body">The <span class="Attribute">draw:archive</span> attribute is equivalent to the archive attribute of an <span class="Alien_20_Element">&lt;applet&gt;</span> element in HTML. See. §13.4 of <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:archive</span> attribute is usable with the following element: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:archive</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_114draw_border"><span style="margin-right:0.127cm;">19.114</span></a><a id="__RefHeading__1416908_253892949"/><a id="attribute-draw_border"/>draw:border</h2><p class="Text_20_body">The <span class="Attribute">draw:border</span> attribute specifies a percentage value that is used to scale a border area which is filled by a solid color. </p><p class="Text_20_body">For linear, square, rectangle, radial and elliptical gradients the start color is used. For axial gradients, the end color is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:border</span> attribute is usable with the following elements: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a> and <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:border</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_115draw_caption-id"><span style="margin-right:0.127cm;">19.115</span></a><a id="__RefHeading__1416910_253892949"/><a id="attribute-draw_caption-id"/>draw:caption-id</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-id</span> attribute establishes a relationship between a drawing shape and its caption. It takes a value of type IDREF. The value for the <span class="Attribute">draw:caption-id</span> attribute is the target ID assigned to the <span class="Element">&lt;draw:text-box&gt;</span> element (see <a href="#element-draw_text-box">10.4.3</a>) that contains the caption.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> When a caption is assigned to a drawing shape, an id shall be assigned to the element containing the text used to caption a drawing shape. Removing the caption should result in removing the <span class="Attribute">draw:caption-id</span> attribute of the drawing shape that was being captioned.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-id</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-id</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_116draw_caption-point-x"><span style="margin-right:0.127cm;">19.116</span></a><a id="__RefHeading__1416912_253892949"/><a id="attribute-draw_caption-point-x"/>draw:caption-point-x</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-point-x</span> attribute, along with the <span class="Attribute">draw:caption-point-y</span> specifies the position of a point that is captioned. A set of lines are rendered to that point from the caption area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-point-x</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-point-x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h2 class="Heading_20_2"><a id="a19_117draw_caption-point-y"><span style="margin-right:0.127cm;">19.117</span></a><a id="__RefHeading__1416914_253892949"/><a id="attribute-draw_caption-point-y"/>draw:caption-point-y</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-point-y</span> attribute, along with the <span class="Attribute">draw:caption-point-x</span> specifies the position of a point that is captioned. A set of lines are rendered to that point from the caption area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-point-y</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-point-y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h2 class="Heading_20_2"><a id="a19_118draw_chain-next-name"><span style="margin-right:0.127cm;">19.118</span></a><a id="__RefHeading__1416916_253892949"/><a id="attribute-draw_chain-next-name"/>draw:chain-next-name</h2><p class="Text_20_body">The <span class="Attribute">draw:chain-next-name</span> attribute specifies a name that is used to chain text boxes together for cases where the content of a text box exceeds its capacity. The content flows into the next text box in the chain. The value of this attribute is the name of the next text box in the chain.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:chain-next-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:chain-next-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_119draw_class-id"><span style="margin-right:0.127cm;">19.119</span></a><a id="__RefHeading__1416918_253892949"/><a id="attribute-draw_class-id"/>draw:class-id</h2><p class="Text_20_body">The <span class="Attribute">draw:class-id</span> attribute specifies the OLE class id of an object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:class-id</span> attribute is usable with the following element: <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:class-id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_120draw_class-names"><span style="margin-right:0.127cm;">19.120</span></a><a id="__RefHeading__1416920_253892949"/><a id="attribute-draw_class-names"/>draw:class-names</h2><p class="Text_20_body">The <span class="Attribute">draw:class-names</span> attribute specifies a white space separated list of styles with the family value of graphic. The referenced styles are applied in the order they are contained in the list. </p><p class="Text_20_body">If both <span class="Attribute">draw:style-name</span> and <span class="Attribute">draw:class-names</span> are present, the style referenced by the <span class="Attribute">draw:style-name</span> attribute is applied before the styles referenced by the <span class="Attribute">draw:class-names</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:class-names</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:class-names</span> attribute has the data type <span class="Datatype">styleNameRefs</span> <a href="#datatype-styleNameRefs">18.3.33</a>.</p><h2 class="Heading_20_2"><a id="a19_121draw_code"><span style="margin-right:0.127cm;">19.121</span></a><a id="__RefHeading__1416922_253892949"/><a id="attribute-draw_code"/>draw:code</h2><p class="Text_20_body">The <span class="Attribute">draw:code</span> attribute is equivalent to the code attribute of an <span class="Alien_20_Element">&lt;applet&gt;</span> element in HTML. See. §13.4 of <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:code</span> attribute is usable with the following element: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:code</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_122draw_color"><span style="margin-right:0.127cm;">19.122</span></a><a id="__RefHeading__1416924_253892949"/><a id="attribute-draw_color"/>draw:color</h2><h3 class="Heading_20_3"><a id="a19_122_1General"><span style="margin-right:0.127cm;">19.122.1</span></a><a id="__RefHeading__1416926_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:color</span> attribute specifies different colors depending upon the element where it appears. </p><h3 class="Heading_20_3"><a id="a19_122_2_draw_hatch_"><span style="margin-right:0.127cm;">19.122.2</span></a><a id="__RefHeading__1416928_253892949"/><a id="attribute-draw_color_element-draw_hatch"/>&lt;draw:hatch&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:color</span> attribute specifies the color of hatch lines.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:color</span> attribute is usable with the following element: <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h3 class="Heading_20_3"><a id="a19_122_3_presentation_dim_"><span style="margin-right:0.127cm;">19.122.3</span></a><a id="__RefHeading__1416930_253892949"/><a id="attribute-draw_color_element-presentation_dim"/>&lt;presentation:dim&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:color</span> attribute specifies the color of that is used to fill a shape when the shape is dimmed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:color</span> attribute is usable with the following element: <span class="Element">&lt;presentation:dim&gt;</span> <a href="#element-presentation_dim">10.8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_123draw_concave"><span style="margin-right:0.127cm;">19.123</span></a><a id="__RefHeading__1416932_253892949"/><a id="attribute-draw_concave"/>draw:concave</h2><p class="Text_20_body">The <span class="Attribute">draw:concave</span> attribute specifies whether a regular polygon is convex or concave.  For a concave regular polygon the <span class="Attribute">draw:sharpness</span> attribute shall be specified in addition to the <span class="Attribute">draw:concave</span> attribute. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:concave</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: polygon is convex.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: polygon is concave.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:concave</span> attribute is usable with the following element: <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:concave</span> attribute are <span class="Attribute_20_Value">false</span> or <span class="Attribute_20_Value">true</span>.</p><h2 class="Heading_20_2"><a id="a19_124draw_concentric-gradient-fill-allowed"><span style="margin-right:0.127cm;">19.124</span></a><a id="__RefHeading__1416934_253892949"/><a id="attribute-draw_concentric-gradient-fill-allowed"/>draw:concentric-gradient-fill-allowed</h2><p class="Text_20_body">The <span class="Source_20_Text">draw:concentric-gradient-fill-allowed</span> attribute specifies the rendering of a shape with a concentric gradient that uses a custom shape path. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:concentric-gradient-fill-allowed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the rendering of a shape with a concentric gradient that does not use a custom shape path. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the rendering of a shape with a concentric gradient that does use a custom shape path. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:concentric-gradient-fill-allowed</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:concentric-gradient-fill-allowed</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_125draw_control"><span style="margin-right:0.127cm;">19.125</span></a><a id="__RefHeading__1416936_253892949"/><a id="attribute-draw_control"/>draw:control</h2><p class="Text_20_body">The <span class="Attribute">draw:control</span> attribute specifies a control within a form that is linked to the control shape by its ID.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:control</span> attribute is usable with the following element: <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:control</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_126draw_copy-of"><span style="margin-right:0.127cm;">19.126</span></a><a id="__RefHeading__1416938_253892949"/><a id="attribute-draw_copy-of"/>draw:copy-of</h2><p class="Text_20_body">The <span class="Attribute">draw:copy-of</span> attribute specifies that a frame displays the contents of another frame. This does not effect style and position information. The style and position information of the frame with the <span class="Attribute">draw:copy-of</span> attribute is used to render the copied contents.</p><p class="Note"><span class="Note_20_Label">Note:</span> Multiple frames can be set to display the exact same underlying data: for instance for a company logo, that shall appear somewhere on every page, without being part of a header or footer.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:copy-of</span> attribute is usable with the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:copy-of</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_127draw_corner-radius"><span style="margin-right:0.127cm;">19.127</span></a><a id="__RefHeading__1416940_253892949"/><a id="attribute-draw_corner-radius"/>draw:corner-radius</h2><p class="Text_20_body">The <span class="Attribute">draw:corner-radius</span> attribute specifies the radius of the circle used to round off the corners of a caption <span class="Element">&lt;draw:caption&gt;</span>, rectangle <span class="Element">&lt;draw:rect&gt;</span>, or a text-box <span class="Element">&lt;draw:text-box&gt;</span>.</p><p class="Text_20_body">The <span class="Attribute">svg:rx</span> and <span class="Attribute">svg:ry</span> attributes can also be used to round off the corners of a rectangle <span class="Element">&lt;draw:rect&gt;</span>.</p><p class="Text_20_body">If <span class="Attribute">svg:rx</span> and/or <span class="Attribute">svg:ry</span> and draw:corner-radius attributes are present on an element, the <span class="Attribute">svg:rx</span> and <span class="Attribute">svg:ry</span> attributes control the rounding applied to the shape defined by the element. If one or both of <span class="Attribute">svg:rx</span> and <span class="Attribute">svg:ry</span> attributes are present, any <span class="Attribute">draw:corner-radius</span> attribute is ignored. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:corner-radius</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:corner-radius</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a19_128draw_corners"><span style="margin-right:0.127cm;">19.128</span></a><a id="__RefHeading__1416942_253892949"/><a id="attribute-draw_corners"/>draw:corners</h2><p class="Text_20_body">The <span class="Attribute">draw:corners</span> attribute specifies the number of polygon corners on a polygon shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:corners</span> attribute is usable with the following element: <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:corners</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_129draw_cx"><span style="margin-right:0.127cm;">19.129</span></a><a id="__RefHeading__1416944_253892949"/><a id="attribute-draw_cx"/>draw:cx</h2><p class="Text_20_body">The <span class="Attribute">draw:cx</span> attribute, along with the <span class="Attribute">draw:cy</span> attribute, specifies the center of the geometry that is used for a gradient, if the gradient style is <span class="Attribute_20_Value">ellipsoid</span>, <span class="Attribute_20_Value">radial</span>, <span class="Attribute_20_Value">rectangular</span>, or <span class="Attribute_20_Value">square</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:cx</span> attribute is usable with the following elements: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a> and <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:cx</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_130draw_cy"><span style="margin-right:0.127cm;">19.130</span></a><a id="__RefHeading__1416946_253892949"/><a id="attribute-draw_cy"/>draw:cy</h2><p class="Text_20_body">The <span class="Attribute">draw:cy</span> attribute, along with the <span class="Attribute">draw:cx</span> attribute, specifies the center of the geometry that is used for a gradient, if the gradient style is <span class="Attribute_20_Value">ellipsoid</span>, <span class="Attribute_20_Value">radial</span>, <span class="Attribute_20_Value">rectangular</span>, or <span class="Attribute_20_Value">square</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:cy</span> attribute is usable with the following elements: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a> and <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:cy</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_131draw_data"><span style="margin-right:0.127cm;">19.131</span></a><a id="__RefHeading__1416948_253892949"/><a id="attribute-draw_data"/>draw:data</h2><p class="Text_20_body">The <span class="Attribute">draw:data</span> attribute specifies rendering engine specific data for a custom shape. This attribute is only evaluated if a rendering engine is specified by the <span class="Attribute">draw:engine</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:data</span> attribute is usable with the following element: <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:data</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_132draw_display"><span style="margin-right:0.127cm;">19.132</span></a><a id="__RefHeading__1416950_253892949"/><a id="attribute-draw_display"/>draw:display</h2><p class="Text_20_body">The <span class="Attribute">draw:display</span> attribute specifies the visibility of drawing objects contained in a layer for display or printing.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">always</span>: drawing objects are visible on screen and in printed output.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: drawing objects are not visible on screen or in printed output.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">printer</span>: drawing objects are visible in printed output but not on screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">screen</span>: drawing objects are visible on screen but not in printed output.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">always</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:display</span> attribute is usable with the following element: <span class="Element">&lt;draw:layer&gt;</span> <a href="#element-draw_layer">10.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:display</span> attribute are <span class="Attribute_20_Value">always</span>, <span class="Attribute_20_Value">screen</span>, <span class="Attribute_20_Value">printer</span> or <span class="Attribute_20_Value">none</span>.</p><h2 class="Heading_20_2"><a id="a19_133draw_display-name"><span style="margin-right:0.127cm;">19.133</span></a><a id="__RefHeading__1416952_253892949"/><a id="attribute-draw_display-name"/>draw:display-name</h2><h3 class="Heading_20_3"><a id="a19_133_1General"><span style="margin-right:0.127cm;">19.133.1</span></a><a id="__RefHeading__1416954_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies a name as it should appear in the user interface.  If this attribute is not present, the display name is the same as the internal name.</p><h3 class="Heading_20_3"><a id="a19_133_2_draw_fill-image_"><span style="margin-right:0.127cm;">19.133.2</span></a><a id="__RefHeading__1416956_253892949"/><a id="attribute-draw_display-name_element-draw_fill-image"/>&lt;draw:fill-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a fill image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_3_draw_gradient_"><span style="margin-right:0.127cm;">19.133.3</span></a><a id="__RefHeading__1416958_253892949"/><a id="attribute-draw_display-name_element-draw_gradient"/>&lt;draw:gradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a gradient.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_4_draw_hatch_"><span style="margin-right:0.127cm;">19.133.4</span></a><a id="__RefHeading__1416960_253892949"/><a id="attribute-draw_display-name_element-draw_hatch"/>&lt;draw:hatch&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a hatch style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_5_draw_marker_"><span style="margin-right:0.127cm;">19.133.5</span></a><a id="__RefHeading__1416962_253892949"/><a id="attribute-draw_display-name_element-draw_marker"/>&lt;draw:marker&gt; </h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a marker.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:marker&gt;</span> <a href="#element-draw_marker">16.40.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_6_draw_opacity_"><span style="margin-right:0.127cm;">19.133.6</span></a><a id="__RefHeading__1416964_253892949"/><a id="attribute-draw_display-name_element-draw_opacity"/>&lt;draw:opacity&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of an opacity gradient.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_7_draw_stroke-dash_"><span style="margin-right:0.127cm;">19.133.7</span></a><a id="__RefHeading__1416966_253892949"/><a id="attribute-draw_display-name_element-draw_stroke-dash"/>&lt;draw:stroke-dash&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a dash style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_8_svg_linearGradient_"><span style="margin-right:0.127cm;">19.133.8</span></a><a id="__RefHeading__1416968_253892949"/><a id="attribute-draw_display-name_element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a gradient. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_133_9_svg_radialGradient_"><span style="margin-right:0.127cm;">19.133.9</span></a><a id="__RefHeading__1416970_253892949"/><a id="attribute-draw_display-name_element-svg_radialGradient"/>&lt;svg:radialGradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:display-name</span> attribute specifies the name of a gradient. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:display-name</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_134draw_distance"><span style="margin-right:0.127cm;">19.134</span></a><a id="__RefHeading__1416972_253892949"/><a id="attribute-draw_distance"/>draw:distance</h2><h3 class="Heading_20_3"><a id="a19_134_1General"><span style="margin-right:0.127cm;">19.134.1</span></a><a id="__RefHeading__1416974_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:distance</span> attribute specifies distances.</p><h3 class="Heading_20_3"><a id="a19_134_2_draw_hatch_"><span style="margin-right:0.127cm;">19.134.2</span></a><a id="__RefHeading__1416976_253892949"/><a id="attribute-draw_distance_element-draw_hatch"/>&lt;draw:hatch&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:distance</span> attribute specifies the distance between two hatch lines. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:distance</span> attribute is usable with the following element: <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:distance</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_134_3_draw_stroke-dash_"><span style="margin-right:0.127cm;">19.134.3</span></a><a id="__RefHeading__1416978_253892949"/><a id="attribute-draw_distance_element-draw_stroke-dash"/>&lt;draw:stroke-dash&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:distance</span> attribute specifies the distance between the dashes of a stroke. </p><p class="Text_20_body">The value of the attribute may be an absolute length or a percentage value. Percentage values are relative to the width of the stroke as defined by the <span class="Attribute">svg:stroke-width</span> attribute. <a id="DDE_LINK22"/><a href="#property-svg_stroke-width">20.400</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:distance</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:distance</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_135draw_dots1"><span style="margin-right:0.127cm;">19.135</span></a><a id="__RefHeading__1416980_253892949"/><a id="attribute-draw_dots1"/>draw:dots1</h2><p class="Text_20_body">The <span class="Attribute">draw:dots1</span> attribute specifies the number of dashes for the first sequence in an alternating sequence of dots. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:dots1</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:dots1</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_136draw_dots1-length"><span style="margin-right:0.127cm;">19.136</span></a><a id="__RefHeading__1416982_253892949"/><a id="attribute-draw_dots1-length"/>draw:dots1-length</h2><p class="Text_20_body">The <span class="Attribute">draw:dots1-length</span> attributes specifies the length of the dashes in the sequence specified by <span class="Attribute">draw:dots1</span>. </p><p class="Text_20_body">The value of the attribute may be an absolute length or a percentage value. Percentage values are relative to the width of the stroke as defined by the <span class="Attribute">svg:stroke-width</span> attribute. <a href="#property-svg_stroke-width">20.400</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:dots1-length</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:dots1-length</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_137draw_dots2"><span style="margin-right:0.127cm;">19.137</span></a><a id="__RefHeading__1416984_253892949"/><a id="attribute-draw_dots2"/>draw:dots2</h2><p class="Text_20_body">The <span class="Attribute">draw:dots2</span> attribute specifies the number of dashes for the second sequence in an alternating sequence of dots. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:dots2</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:dots2</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_138draw_dots2-length"><span style="margin-right:0.127cm;">19.138</span></a><a id="__RefHeading__1416986_253892949"/><a id="attribute-draw_dots2-length"/>draw:dots2-length</h2><p class="Text_20_body">The <span class="Attribute">draw:dots2-length</span> attributes specifies the length of the dashes in the sequence specified by <span class="Attribute">draw:dots2</span>. </p><p class="Text_20_body">The value of the attribute may be an absolute length or a percentage value. Percentage values relative to the width of the stroke as defined by the <span class="Attribute">svg:stroke-width</span> attribute. <a href="#property-svg_stroke-width">20.400</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:dots2-length</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:dots2-length</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_139draw_end"><span style="margin-right:0.127cm;">19.139</span></a><a id="__RefHeading__1416988_253892949"/><a id="attribute-draw_end"/>draw:end</h2><p class="Text_20_body">The <span class="Attribute">draw:end</span> attributes specifies the end value for the <span class="Element">&lt;draw:opacity&gt;</span> element, which interpolates between the value of this attribute and <span class="Attribute">draw:start</span>. The defined value range for the <span class="Attribute">draw:end</span> attribute is 0% to 100%, where 0% is transparent and 100% is opaque.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end</span> attribute is usable with the following element: <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_140draw_end-angle"><span style="margin-right:0.127cm;">19.140</span></a><a id="__RefHeading__1416990_253892949"/><a id="attribute-draw_end-angle"/>draw:end-angle</h2><p class="Text_20_body">The <span class="Attribute">draw:end-angle</span> attribute specifies the end angle of an arc, cut, or section for circles where the <span class="Attribute">draw:kind</span> attribute value is <span class="Attribute_20_Value">arc</span>, <span class="Attribute_20_Value">cut</span>, or <span class="Attribute_20_Value">section</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-angle</span> attribute is usable with the following elements: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a> and <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_141draw_end-color"><span style="margin-right:0.127cm;">19.141</span></a><a id="__RefHeading__1416992_253892949"/><a id="attribute-draw_end-color"/>draw:end-color</h2><p class="Text_20_body">The <span class="Attribute">draw:end-color</span> attribute specifies the end value for the <span class="Element">&lt;draw:gradient&gt;</span> element, which interpolates between the value of this attribute and <span class="Attribute">draw:start-color</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-color</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_142draw_end-glue-point"><span style="margin-right:0.127cm;">19.142</span></a><a id="__RefHeading__1416994_253892949"/><a id="attribute-draw_end-glue-point"/>draw:end-glue-point</h2><p class="Text_20_body">The <span class="Attribute">draw:end-glue-point</span> attribute identifies the glue point in a shape where a connector ends by its number. See <a href="#element-draw_glue-point">10.3.16</a>. Glue point numbers are defined by the <span class="Attribute">draw:id</span> attributes of the glue point elements <span class="Element">&lt;draw:glue-point&gt;</span>. See <a href="#attribute-draw_id">19.187</a>.</p><p class="Text_20_body">If the connector is not connected to a shape, this attribute is ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-glue-point</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-glue-point</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_143draw_end-intensity"><span style="margin-right:0.127cm;">19.143</span></a><a id="__RefHeading__1416996_253892949"/><a id="attribute-draw_end-intensity"/>draw:end-intensity</h2><p class="Text_20_body">The <span class="Attribute">draw:end-intensity</span> attribute specifies the intensity of the gradient's end color as a percentage value. If it is not specified, the color is used at 100% intensity. The defined value range for the <span class="Attribute">draw:end-intensity</span> attribute is 0% to 100%, </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-intensity</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-intensity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_144draw_end-shape"><span style="margin-right:0.127cm;">19.144</span></a><a id="__RefHeading__1416998_253892949"/><a id="attribute-draw_end-shape"/>draw:end-shape</h2><p class="Text_20_body">The <span class="Attribute">draw:end-shape</span> attribute specifies a drawing shape to which the end of a connector is connected by its ID.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-shape</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-shape</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_145draw_enhanced-path"><span style="margin-right:0.127cm;">19.145</span></a><a id="__RefHeading__1417000_253892949"/><a id="attribute-draw_enhanced-path"/>draw:enhanced-path</h2><p class="Text_20_body">The <span class="Attribute">draw:enhanced-path</span> attribute specifies a path that is the outline of a shape. </p><p class="Text_20_body">The syntax of a value for a <span class="Attribute">draw:enhanced-path</span> attribute is defined as:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Commands are expressed as one character. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Commands are followed by parameters.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Commands and parameters are delimited by white space characters. Parameters may also be delimited by comma “,” (U+002C, COMMA) characters.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>White space and commas may be eliminated if they are not necessary to identify individual commands or parameters. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If a command is repeated multiple times, all repeated command characters except the first one may be omitted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The decimal delimiter is the ”.” (U+002E, FULL STOP) character. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">A parameter in the value of a <span class="Attribute">draw:enhanced-path</span> attribute may be:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>An integer value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>An integer value preceded by a “$” (U+0024, DOLLAR SIGN) character. Such a value is an index to a <span class="Attribute">draw:modifiers</span> attribute on the element where the <span class="Attribute">draw:enhanced-path</span> attribute appears. The corresponding modifier value is used as a parameter value. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A floating point value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A formula name, preceded by a “?” (U+003F, QUESTION MARK) character. The result of the value of the <span class="Attribute">draw:formula</span> attribute of the <span class="Element">&lt;draw:equation&gt;</span> child element of the <span class="Element">&lt;draw:enhanced-geometry&gt;</span> element on which the <span class="Attribute">draw:enhanced-path</span> attribute appears is used as the parameter value. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The syntax used in Table <a href="#refTable9">10</a> for parameters is: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>(): grouping of parameters.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>+: 1 or more of the given parameter(s) shall be present.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The following commands are defined:</p><p class="Table">Table <a id="refTable9"/>10 - Enhanced path commands</p><table border="0" cellspacing="0" cellpadding="0" class="Table1"><colgroup><col width="87"/><col width="78"/><col width="175"/><col width="326"/></colgroup><tr><td style="text-align:left;width:0.7813in; " class="Table1_A1"><p class="Table_20_Heading">Command</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A1"><p class="Table_20_Heading">Name</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A1"><p class="Table_20_Heading">Parameters</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D1"><p class="Table_20_Heading">Description</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">A</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">arcto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x1 y1 x2 y2 x3 y3 x4 y4) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">(x1, y1) and (x2, y2) define the bounding box of a ellipse. A line is then drawn from the current point to the start angle of the arc that is specified by the radial vector of point (x3, y3) and then counter clockwise to the end-angle that is specified by point (x4, y4).</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">B</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">arc</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x1 y1 x2 y2 x3 y3 x4 y4) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">The same as the “A” command, except that a implied moveto to the starting point is done.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">C</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">curveto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x1 y1 x2 y2 x y) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Draws a cubic Bézier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">F</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">nofill</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(none)</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Specifies that the current set of sub-paths will not be filled.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">L</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">lineto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x y) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Draws a line from the current point to (x, y). If followed by multiple coordinate pairs, they are all interpreted as lineto.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">M</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">moveto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x y) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Start a new sub-path at the given (x,y) coordinate. If a moveto is followed by multiple pairs of coordinates, they are treated as lineto.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">N</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">endpath</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(none)</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Ends the current set of sub-paths. The sub-paths will be filled by using the “even-odd” filling rule. Other following subpaths will be filled independently.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">Q</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">quadratic­curveto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x1 y1 x y)+</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Draws a quadratic Bézier curve from the current point to (x, y) using (x1, y1) as the control point. (x, y) becomes the new current point at the end of the command.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">S</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">nostroke</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(none)</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Specifies that the current set of sub-paths will not be stroked.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">T</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">angle­ellipseto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x y w h t0 t1) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Draws a segment of an ellipse. The ellipse is specified by the center(x, y), the size(w, h) and the start-angle t0 in degrees and end-angle t1 in degrees. The segment is drawn clockwise.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">U</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">angle­ellipse</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x y w h t0 t1) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">The same as the “T” command, except that a implied moveto to the starting point is done.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">V</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">clockwise­arc</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x1 y1 x2 y2 x3 y3 x y)+</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">The same as the “A” command, except that a implied moveto to the starting point is done and the arc is drawn clockwise.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">W</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">clockwise­arcto</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x1 y1 x2 y2 x3 y3 x y) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">The same as the “A” command except, that the arc is drawn clockwise.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">X</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">elliptical­quatrantx</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x y) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Draws a quarter ellipse, whose initial segment is tangential to the x-axis from the current point to (x, y). For each additional quarter ellipse command, the axis to which the segment is tangential to switches from x to y and from y to x.</p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">Y</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">elliptical­quadranty</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(x y) +</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Draws a quarter ellipse, whose initial segment is tangential to the y-axis from the current point to (x, y). For each additional quarter ellipse command, the axis to which the segment is tangential to switches from y to x and from x to y </p></td></tr><tr><td style="text-align:left;width:0.7813in; " class="Table1_A2"><p class="Table_20_Contents">Z</p></td><td style="text-align:left;width:0.7063in; " class="Table1_A2"><p class="Table_20_Contents">closepath</p></td><td style="text-align:left;width:1.5722in; " class="Table1_A2"><p class="Table_20_Contents">(none)</p></td><td style="text-align:left;width:2.9403in; " class="Table1_D2"><p class="Table_20_Contents">Close the current sub-path by drawing a straight line from the current point to current sub-path's initial point.</p></td></tr></table><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The value of the <span class="Attribute">draw:enhanced-path</span> attribute is based upon <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> §8.3.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:enhanced-path</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:enhanced-path</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_146draw_engine"><span style="margin-right:0.127cm;">19.146</span></a><a id="__RefHeading__1417002_253892949"/><a id="attribute-draw_engine"/>draw:engine</h2><p class="Text_20_body">The <span class="Attribute">draw:engine</span> attribute specifies the name of a specific rendering engine that can be used to render a custom shape. </p><p class="Text_20_body">The value of the <span class="Attribute">draw:engine</span> attribute shall not influence the geometry of a shape. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:engine</span> attribute is usable with the following element: <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:engine</span> attribute has the data type <span class="Datatype">namespacedToken</span> <a href="#datatype-namespacedToken">18.3.19</a>.</p><h2 class="Heading_20_2"><a id="a19_147draw_escape-direction"><span style="margin-right:0.127cm;">19.147</span></a><a id="__RefHeading__1417004_253892949"/><a id="attribute-draw_escape-direction"/>draw:escape-direction</h2><p class="Text_20_body">The <span class="Attribute">draw:escape-direction</span> attribute specifies the direction in which a connection line leaves a drawing object if a connector connects to a glue point. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:escape-direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the connection line may leave in all four directions from a drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">down</span>: the connection line leave down from a drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal</span>: the connection line may leave to the left or to the right of a drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: the connection line leaves to the left of a drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: the connection line leaves to the right of a drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">up</span>: the connection line leaves up from a drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: the connection line may leave up or down from a drawing object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:escape-direction</span> attribute is usable with the following element: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:escape-direction</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">up</span>, <span class="Attribute_20_Value">down</span>, <span class="Attribute_20_Value">horizontal</span> or <span class="Attribute_20_Value">vertical</span>.</p><h2 class="Heading_20_2"><a id="a19_148draw_extrusion"><span style="margin-right:0.127cm;">19.148</span></a><a id="__RefHeading__1417006_253892949"/><a id="attribute-draw_extrusion"/>draw:extrusion</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion</span> attribute specifies if an extrusion is displayed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: extrusion is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: extrusion is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_149draw_extrusion-allowed"><span style="margin-right:0.127cm;">19.149</span></a><a id="__RefHeading__1417008_253892949"/><a id="attribute-draw_extrusion-allowed"/>draw:extrusion-allowed</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-allowed</span> attribute specifies whether a shape can be rendered as extrusion object.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion-allowed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: shape is cannot be rendered as an extrusion object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: shape can be rendered as an extrusion object.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-allowed</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-allowed</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_150draw_extrusion-brightness"><span style="margin-right:0.127cm;">19.150</span></a><a id="__RefHeading__1417010_253892949"/><a id="attribute-draw_extrusion-brightness"/>draw:extrusion-brightness</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-brightness</span> attribute specifies the brightness of a scene.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">33%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-brightness</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-brightness</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_151draw_extrusion-color"><span style="margin-right:0.127cm;">19.151</span></a><a id="__RefHeading__1417012_253892949"/><a id="attribute-draw_extrusion-color"/>draw:extrusion-color</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-color</span> attribute specifies if an extrusion color is used. The extrusion color is defined by the <span class="Attribute">draw:secondary-fill-color</span> attribute specified in a custom shape's graphic style.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion-color</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: extrusion color is not used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: extrusion color is used.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-color</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-color</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_152draw_extrusion-depth"><span style="margin-right:0.127cm;">19.152</span></a><a id="__RefHeading__1417014_253892949"/><a id="attribute-draw_extrusion-depth"/>draw:extrusion-depth</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-depth</span> attribute specifies the depth of an extrusion. It takes two white space separated values. The first value specifies the depth of the extrusion in units, the second value specifies the fraction of the extrusion that lies before a shape. The second value shall be in the range [0,1]. A value of 0 is the default.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">36pt 0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-depth</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-depth</span> attribute has two white space separated values. The first value is of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>. The second value is of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_153draw_extrusion-diffusion"><span style="margin-right:0.127cm;">19.153</span></a><a id="__RefHeading__1417016_253892949"/><a id="attribute-draw_extrusion-diffusion"/>draw:extrusion-diffusion</h2><p class="Text_20_body"> The <span class="Attribute">draw:extrusion-diffusion</span> attribute specifies the amount of diffusion reflected by a shape.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-diffusion</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-diffusion</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_154draw_extrusion-first-light-direction"><span style="margin-right:0.127cm;">19.154</span></a><a id="__RefHeading__1417018_253892949"/><a id="attribute-draw_extrusion-first-light-direction"/>draw:extrusion-first-light-direction</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-first-light-direction</span> attribute specifies the direction of the first light.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">(5 0 1)</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-first-light-direction</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-first-light-direction</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_155draw_extrusion-first-light-harsh"><span style="margin-right:0.127cm;">19.155</span></a><a id="__RefHeading__1417020_253892949"/><a id="attribute-draw_extrusion-first-light-harsh"/>draw:extrusion-first-light-harsh</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-first-light-harsh</span> attribute specifies if the first light is harsh.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion-first-light-harsh</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the light is not harsh. The means by which the light is softened is implementation-defined.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the light is harsh. The light is an undiffused point source.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-first-light-harsh</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-first-light-harsh</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_156draw_extrusion-first-light-level"><span style="margin-right:0.127cm;">19.156</span></a><a id="__RefHeading__1417022_253892949"/><a id="attribute-draw_extrusion-first-light-level"/>draw:extrusion-first-light-level</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-first-light-level</span> attribute specifies the intensity of the first light.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">66%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-first-light-level</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-first-light-level</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_157draw_extrusion-light-face"><span style="margin-right:0.127cm;">19.157</span></a><a id="__RefHeading__1417024_253892949"/><a id="attribute-draw_extrusion-light-face"/>draw:extrusion-light-face</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-light-face</span> attribute specifies if the front face of an extrusion responds to lighting changes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion-light-face</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: front face of extrusion does not respond to lighting changes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: front face of extrusion responds to lighting changes.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-light-face</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-light-face</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_158draw_extrusion-metal"><span style="margin-right:0.127cm;">19.158</span></a><a id="__RefHeading__1417026_253892949"/><a id="attribute-draw_extrusion-metal"/>draw:extrusion-metal</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-metal</span> attribute specifies the shading of an extruded shape.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion-metal</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the specular color for the shading of an extruded shape is white.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the specular color for the shading of an extruded shape is gray (red green and blue value of 200) instead of white and 15% is added to the specularity.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-metal</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-metal</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_159draw_extrusion-number-of-line-segments"><span style="margin-right:0.127cm;">19.159</span></a><a id="__RefHeading__1417028_253892949"/><a id="attribute-draw_extrusion-number-of-line-segments"/>draw:extrusion-number-of-line-segments</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-number-of-line-segments</span> attribute specifies the number of line segments that should be used to display curved surfaces.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">30</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-number-of-line-segments</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-number-of-line-segments</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_160draw_extrusion-origin"><span style="margin-right:0.127cm;">19.160</span></a><a id="__RefHeading__1417030_253892949"/><a id="attribute-draw_extrusion-origin"/>draw:extrusion-origin</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-origin</span> attribute specifies the point of origin of a shape within its bounding box in shape size fractions. The value of the <span class="Attribute">draw:extrusion-origin</span> attribute consists of two parameters separated by white space.</p><p class="Text_20_body">The first parameter represents the horizontal origin of a shape. </p><p class="Text_20_body">The defined values for the first parameter of the <span class="Attribute">draw:extrusion-origin</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">-0.5</span>: represents the left side of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">0</span>: represents the center of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">0.5</span>: represents the right side of the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The second parameter represents the vertical origin of a shape. </p><p class="Text_20_body">The defined values for the second parameter of the <span class="Attribute">draw:extrusion-origin</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">-0.5</span>: represents the top side of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">0</span>: represents the center of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">0.5</span>: represents the bottom side of the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0.5 -0.5</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-origin</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-origin</span> attribute has two white space separated values. The first value is a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a> in the range [<span class="Attribute_20_Value">-0.5</span>,<span class="Attribute_20_Value">0.5</span>]. The second value is a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a> in the range [<span class="Attribute_20_Value">-0.5</span>,<span class="Attribute_20_Value">0.5</span>].</p><h2 class="Heading_20_2"><a id="a19_161draw_extrusion-rotation-angle"><span style="margin-right:0.127cm;">19.161</span></a><a id="__RefHeading__1417032_253892949"/><a id="attribute-draw_extrusion-rotation-angle"/>draw:extrusion-rotation-angle</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-rotation-angle</span> attribute specifies rotation about an x-axis and y-axis. The values are separated by a white space. The first angle specifies rotation on the x-axis and the second angle specifies rotation on the y-axis. z-axis is specified by the <span class="Attribute">draw:transform</span> attribute on the <span class="Element">&lt;draw:custom-shape&gt;</span> element.</p><p class="Text_20_body">The order of the rotation is: z-axis, y-axis and then x-axis.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0 0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-rotation-angle</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-rotation-angle</span> attribute has two white space separated values. The first value is of type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>. The second value is of type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_162draw_extrusion-rotation-center"><span style="margin-right:0.127cm;">19.162</span></a><a id="__RefHeading__1417034_253892949"/><a id="attribute-draw_extrusion-rotation-center"/>draw:extrusion-rotation-center</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-rotation-center</span> attribute specifies the position of a rotation center in shape size fractions. If the <span class="Attribute">draw:extrusion-rotation-center</span> attribute is omitted, the geometric center of the shape is used as the rotation center.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:extrusion-rotation-center</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-rotation-center</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_163draw_extrusion-second-light-direction"><span style="margin-right:0.127cm;">19.163</span></a><a id="__RefHeading__1417036_253892949"/><a id="attribute-draw_extrusion-second-light-direction"/>draw:extrusion-second-light-direction</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-second-light-direction</span> attribute specifies the direction of a second light.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">(-5 0 1)</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-second-light-direction</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-second-light-direction</span> attribute has the data type <span class="Datatype">vector3D</span> <a href="#datatype-vector3D">18.3.40</a>.</p><h2 class="Heading_20_2"><a id="a19_164draw_extrusion-second-light-harsh"><span style="margin-right:0.127cm;">19.164</span></a><a id="__RefHeading__1417038_253892949"/><a id="attribute-draw_extrusion-second-light-harsh"/>draw:extrusion-second-light-harsh</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-second-light-harsh</span> attribute specifies if a second light is harsh.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:extrusion-second-light-harsh</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the light is not harsh. The means by which the light is softened is implementation-defined.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the light is harsh. The light is an undiffused point source.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-second-light-harsh</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-second-light-harsh</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_165draw_extrusion-second-light-level"><span style="margin-right:0.127cm;">19.165</span></a><a id="__RefHeading__1417040_253892949"/><a id="attribute-draw_extrusion-second-light-level"/>draw:extrusion-second-light-level</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-second-light-level</span> attribute specifies the intensity of a second light.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">66%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-second-light-level</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-second-light-level</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_166draw_extrusion-shininess"><span style="margin-right:0.127cm;">19.166</span></a><a id="__RefHeading__1417042_253892949"/><a id="attribute-draw_extrusion-shininess"/>draw:extrusion-shininess</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-shininess</span> attribute specifies the reflectivity of a mirror.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">50%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-shininess</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-shininess</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_167draw_extrusion-skew"><span style="margin-right:0.127cm;">19.167</span></a><a id="__RefHeading__1417044_253892949"/><a id="attribute-draw_extrusion-skew"/>draw:extrusion-skew</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-skew</span> attribute specifies the skew amount and skew angle of an extrusion. Skew settings are only applied if the <span class="Attribute">dr3d:projection</span> attribute on the same element has the value <span class="Attribute_20_Value">parallel</span>.</p><p class="Text_20_body">The attribute value is a white space separated number and angle. The first value defines the skew amount in percent, the second value defines the skew angle.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">50 45</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-skew</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-skew</span> attribute has two white space separated values. The first value is of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>. The second value is of type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_168draw_extrusion-specularity"><span style="margin-right:0.127cm;">19.168</span></a><a id="__RefHeading__1417046_253892949"/><a id="attribute-draw_extrusion-specularity"/>draw:extrusion-specularity</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-specularity</span> attribute specifies the specularity of an extrusion object.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-specularity</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-specularity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_169draw_extrusion-viewpoint"><span style="margin-right:0.127cm;">19.169</span></a><a id="__RefHeading__1417048_253892949"/><a id="attribute-draw_extrusion-viewpoint"/>draw:extrusion-viewpoint</h2><p class="Text_20_body">The <span class="Attribute">draw:extrusion-viewpoint</span> attribute specifies the viewpoint of an observer as an 3D point. </p><p class="Default_20_Value_borderStart">The default value for this attribute is (<span class="Attribute_20_Value_20_Instance">3.5cm -3.5cm 25cm</span><span class="Attribute_20_Value_20_Instance">)</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:extrusion-viewpoint</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:extrusion-viewpoint</span> attribute has the data type <span class="Datatype">point3D</span> <a href="#datatype-point3D">18.3.24</a>.</p><h2 class="Heading_20_2"><a id="a19_170draw_filter-name"><span style="margin-right:0.127cm;">19.170</span></a><a id="__RefHeading__1417050_253892949"/><a id="attribute-draw_filter-name"/>draw:filter-name</h2><p class="Text_20_body">The <span class="Attribute">draw:filter-name</span> attribute specifies the implementation-dependent filter name that has been used to load an image into the document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:filter-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:filter-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_171draw_formula"><span style="margin-right:0.127cm;">19.171</span></a><a id="__RefHeading__1417052_253892949"/><a id="attribute-draw_formula"/>draw:formula</h2><p class="Text_20_body">The <span class="Attribute">draw:formula</span> attribute specifies an equation that should be used to evaluate a value. A formula can make use of other formulas or modifier values by function and or modifier reference.</p><p class="Text_20_body">The value of a <span class="Attribute">draw:formula</span> attribute can have one of the following parameters:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A "?" (U+003F, QUESTION MARK) is used to mark the beginning of a formula name. The result of the <span class="Element">&lt;draw:equation&gt;</span> element's <span class="Attribute">draw:formula</span> attribute whose <span class="Attribute">draw:name</span> attribute is the formula name used as the value. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If ”$” (U+0024) precedes an integer value, the value is an index to a <span class="Attribute">draw:modifiers</span> attribute. The corresponding modifier value is used as value. <span class="odfLiEnd"/> </p></li></ul><p class="Code_borderStart">formula::=additive_expression</p><p class="Code"/><p class="Code">identifier::= 'pi' | 'left' | 'top' | 'right' | 'bottom' | 'xstretch'</p><p class="Code">    | 'ystretch' | 'hasstroke' | 'hasfill' | 'width' | 'height' | 'logwidth'</p><p class="Code">    | 'logheight'</p><p class="Code">unary_function::= 'abs' | 'sqrt' | 'sin' | 'cos' | 'tan' | 'atan'</p><p class="Code">binary_function::= 'min' | 'max' | 'atan2'</p><p class="Code">ternary_function::= 'if'</p><p class="Code">basic_expression::= number</p><p class="Code">    | identifier</p><p class="Code">    | function_reference</p><p class="Code">    | modifier_reference</p><p class="Code">    | unary_function S* '(' S* additive_expression S* ')'</p><p class="Code">    | binary_function S* '(' S* additive_expression S* ',' S*</p><p class="Code">        additive_expression S* ')'</p><p class="Code">    | ternary_function S* '(' S* additive_expression S* ',' S*</p><p class="Code">        additive_expression S* ',' S* additive_expression S* ')'</p><p class="Code">    | '(' S* additive_expression S* ')'</p><p class="Code">unary_expression::= '-' S* basic_expression | basic_expression</p><p class="Code">multiplicative_expression::= unary_expression     ( ( S* '*' S* unary_expression )</p><p class="Code">    | ( S* '/' S* unary_expression ) )*</p><p class="Code">additive_expression::= multiplicative_expression</p><p class="Code">    ( ( S* '+' S* multiplicative_expression )</p><p class="Code">    | ( S* '-' S* multiplicative_expression ) )*</p><p class="Code">number::= sign? Integer | sign? Floating-point-constant</p><p class="Code">function_reference::= "?" name</p><p class="Code">modifier_reference::= "$" integer</p><p class="Code">floating-point-constant::= fractional-constant exponent? | integer exponent</p><p class="Code">fractional-constant::= integer? '.' integer | integer '.'</p><p class="Code">exponent::= ( 'e' | 'E' ) sign? Integer</p><p class="Code">sign::= '+' | '-'</p><p class="Code">name::= [^#x20#x9]+</p><p class="Code">integer::= [0-9]+</p><p class="Code_borderEnd">S::= (#x20 | #x9)</p><p class="Table">Table <a id="refTable10"/>11 - Enhanced geometry equation identifiers</p><table border="0" cellspacing="0" cellpadding="0" class="Table2"><colgroup><col width="79"/><col width="445"/></colgroup><tr><td style="text-align:left;width:0.709in; " class="Table2_A1"><p class="Table_20_Heading">Identifier</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B1"><p class="Table_20_Heading">Description</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">bottom</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The bottom position the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">hasfill</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">If the shape has a fill style, a value of 1 is used.If the shape has a fill style, a value of 1 is used. If the shape has no fill style, a value of 0 is used. </p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">hasstroke</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">If the shape has a line style, a value of 1 is used. If the shape has a line style, a value of 1 is used. If the shape has no line style, a value of 0 is used. </p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">height</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The height of the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">left</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The left position of the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">logheight</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The height of the <span class="Attribute">svg:viewBox</span> attribute in 1/100th mm is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">logwidth</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The width of the <span class="Attribute">svg:viewBox</span> attribute in 1/100th mm is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">right</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The right position the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">top</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The top position the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">width</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The width of the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">xstretch</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The value of the <span class="Attribute">draw:path-stretchpoint-x</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table2_A2"><p class="Table_20_Contents">ystretch</p></td><td style="text-align:left;width:4.0118in; " class="Table2_B2"><p class="Text_20_body">The value of the <span class="Attribute">draw:path-stretchpoint-y</span> attribute is used.</p></td></tr></table><p class="Table">Table <a id="refTable11"/>12 - Functions Used in <span class="Attribute">draw:formula</span></p><table border="0" cellspacing="0" cellpadding="0" class="Table17"><colgroup><col width="79"/><col width="445"/></colgroup><tr><td style="text-align:left;width:0.709in; " class="Table17_A1"><p class="Table_20_Heading">Function </p></td><td style="text-align:left;width:4.0118in; " class="Table17_B1"><p class="Table_20_Heading">Description</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">abs(n)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the absolute value of n</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">sqrt(n)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the positive square root of n</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">sin(n)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the trigonometric sine of n, where n is an angle specified in degrees</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">cos(n)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the trigonometric cosine of n, where n is an angle specified in degrees</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">tan(n)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the trigonometric tangent of n, where n is an angle specified in degrees</p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">atan(n)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the arc tangent of n in degrees </p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">min(x,y)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the smaller of two values </p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">max(x,y)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the greater of two values </p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">atan2(x,y)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">returns the angle in degrees of the vector (x,y) with the x-axis </p></td></tr><tr><td style="text-align:left;width:0.709in; " class="Table17_A2"><p class="Table_20_Contents">if(c,x,y)</p></td><td style="text-align:left;width:4.0118in; " class="Table17_B2"><p class="Text_20_body">conditional testing: if c is greater than zero then the result of evaluating x is returned, otherwise the result of evaluating y is returned. </p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:formula</span> attribute is usable with the following element: <span class="Element">&lt;draw:equation&gt;</span> <a href="#element-draw_equation">10.2.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:formula</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_172draw_frame-name"><span style="margin-right:0.127cm;">19.172</span></a><a id="__RefHeading__1417054_253892949"/><a id="attribute-draw_frame-name"/>draw:frame-name</h2><p class="Text_20_body">The <span class="Attribute">draw:frame-name</span> attribute specifies the name of a frame. The name of a frame can be used as a target by hyperlinks.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:frame-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:frame-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_173draw_glue-point-leaving-directions"><span style="margin-right:0.127cm;">19.173</span></a><a id="__RefHeading__1417056_253892949"/><a id="attribute-draw_glue-point-leaving-directions"/>draw:glue-point-leaving-directions</h2><p class="Text_20_body">The <span class="Attribute">draw:glue-point-leaving-directions</span> attribute specifies a comma “,” (U+002C, COMMA) separated list of angles. The angles are listed in the same order as the glue-points specified in the <span class="Attribute">draw:glue-points</span> attribute. <a href="#attribute-draw_glue-points">19.175</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:glue-point-leaving-directions</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:glue-point-leaving-directions</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_174draw_glue-point-type"><span style="margin-right:0.127cm;">19.174</span></a><a id="__RefHeading__1417058_253892949"/><a id="attribute-draw_glue-point-type"/>draw:glue-point-type</h2><p class="Text_20_body">The <span class="Attribute">draw:glue-point-type</span> attribute specifies a glue-point type. If the <span class="Attribute">draw:glue-points</span> attribute has a value, this attribute is ignored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:</span><span class="Attribute">glue-point-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: there are no glue points, including default glue points.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">rectangle</span>: the middle of each side of the shape bound rectangle specifies an object specific glue point<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">segments</span>: a connector will connect with each point of the <span class="Attribute">draw:enhanced-path</span> attribute.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:glue-point-type</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:glue-point-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">segments</span> or <span class="Attribute_20_Value">rectangle</span>.</p><h2 class="Heading_20_2"><a id="a19_175draw_glue-points"><span style="margin-right:0.127cm;">19.175</span></a><a id="__RefHeading__1417060_253892949"/><a id="attribute-draw_glue-points"/>draw:glue-points</h2><p class="Text_20_body">The <span class="Attribute">draw:glue-points</span> attribute specifies a list of object defined glue points. Unlike the user defined glue points which are defined by the <span class="Element">&lt;draw:glue-point&gt;</span> sub-element, the position of an object defined glue point can be defined using equations and modifiers.</p><p class="Text_20_body">The first parameter specifies the horizontal position of the glue point.</p><p class="Text_20_body">The second parameter specifies the vertical position of the glue point.</p><p class="Text_20_body">Each parameter can be a float, or it can also have one of the following enhancements:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A “?” (U+003F, QUESTION MARK) is used to mark the beginning of a formula name. The result of the <span class="Element">&lt;draw:equation&gt;</span> element's <span class="Attribute">draw:formula</span> attribute whose <span class="Attribute">draw:name</span> attribute is the formula name that is used as the value. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If “$” (U+0024, DOLLAR SIGN) precedes an integer value, the value is an index to a <span class="Attribute">draw:modifiers</span> attribute. The corresponding modifier value is used as parameter value.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value of a <span class="Attribute">draw:glue-points</span> attribute is formally defined as:</p><p class="Code_borderStart">gluepoints::= gluepointsequence? <br/>gluepointsequence::= gluepoint ( ' '+ gluepointsequence )* <br/>glue-point::= position ' '+ position <br/>position::= formula | modifier | number <br/>formula::= '?' name <br/>modifier::= '$' integer <br/>number::= sign? float | sign? integer <br/>float::= fractional exponent? | integer exponent <br/>fractional::= integer? '.' integer | integer '.' <br/>exponent::= ( 'e' | 'E' ) sign? integer <br/>sign::= '+'| '-' <br/>integer::= [0-9]+ <br/>name ::= [^ ]+ </p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:glue-points</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:glue-points</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_176draw_handle-mirror-horizontal"><span style="margin-right:0.127cm;">19.176</span></a><a id="__RefHeading__1417062_253892949"/><a id="attribute-draw_handle-mirror-horizontal"/>draw:handle-mirror-horizontal</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-mirror-horizontal</span> attribute specifies if the y position of a handle is mirrored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:handle-mirror-horizontal</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the y position of a handle is not mirrored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the y position of a handle is mirrored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:handle-mirror-horizontal</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-mirror-horizontal</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_177draw_handle-mirror-vertical"><span style="margin-right:0.127cm;">19.177</span></a><a id="__RefHeading__1417064_253892949"/><a id="attribute-draw_handle-mirror-vertical"/>draw:handle-mirror-vertical</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-mirror-vertical</span> attribute specifies if the x position of a handle is mirrored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:handle-mirror-vertical</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the x position of a handle is not mirrored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the x position of a handle is mirrored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:handle-mirror-vertical</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-mirror-vertical</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_178draw_handle-polar"><span style="margin-right:0.127cm;">19.178</span></a><a id="__RefHeading__1417066_253892949"/><a id="attribute-draw_handle-polar"/>draw:handle-polar</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-polar</span> attribute specifies that a handle is a polar handle. The syntax for this attribute is the same as for the <span class="Attribute">draw:handle-position</span> attribute. The first parameter specifies the horizontal center position, the vertical center position is specified by the second parameter. If this attribute is set, the <span class="Attribute">draw:handle-range-x-minimum</span>, <span class="Attribute">draw:handle-range-x-maximum</span>, <span class="Attribute">draw:handle-range-y-minimum</span> and <span class="Attribute">draw:handle-range-y-maximum</span> attributes are ignored, and the <span class="Attribute">draw:handle-radius-range-minimum</span> and <span class="Attribute">draw:handle-radius-range-maximum</span> attributes are used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-polar</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-polar</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_179draw_handle-position"><span style="margin-right:0.127cm;">19.179</span></a><a id="__RefHeading__1417068_253892949"/><a id="attribute-draw_handle-position"/>draw:handle-position</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-position</span> attribute specifies the position of a handle and consists of two values.</p><p class="Text_20_body">Each value can be a float or it can have one of the following enhancements:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A “?” (U+003F, QUESTION MARK) is used to mark the beginning of a formula name. The result of the <span class="Element">&lt;draw:equation&gt;</span> element's <span class="Attribute">draw:formula</span> attribute whose <span class="Attribute">draw:name</span> attribute is the formula name that is used as the value. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If “$” (U+0024, DOLLAR SIGN) precedes an integer value, the value is an index to a <span class="Attribute">draw:modifiers</span> attribute. The corresponding modifier value is used as parameter value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Instead of a number a value can also be one of the following constants:<span class="odfLiEnd"/> </p></li></ul><p class="Table">Table <a id="refTable12"/>13 - Handle position constants</p><table border="0" cellspacing="0" cellpadding="0" class="Table3"><colgroup><col width="81"/><col width="471"/></colgroup><tr><td style="text-align:left;width:0.7285in; " class="Table3_A1"><p class="Table_20_Heading">Constant</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B1"><p class="Table_20_Heading">Description</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">bottom</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body"><a id="DDE_LINK8"/>The bottom coordinate of the view box as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">hasfill</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">If the shape has a fill style, a value of 1 is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">hasstroke</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">If the shape has a line style, a value of 1 is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">height</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The view box height as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">logheight</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The view box height in 1/100th mm as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">logwidth</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The view box width in 1/100th mm as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">left</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The left coordinate of the view box as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">right</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The right coordinate of the view box as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">top</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The top coordinate of the view box as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">width</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The view box width as specified by the <span class="Attribute">svg:viewBox</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">xstretch</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The value of the <span class="Attribute">draw:path-stretchpoint-x</span> attribute is used.</p></td></tr><tr><td style="text-align:left;width:0.7285in; " class="Table3_A2"><p class="Table_20_Contents">ystretch</p></td><td style="text-align:left;width:4.2403in; " class="Table3_B2"><p class="Text_20_body">The value of the <span class="Attribute">draw:path-stretchpoint-y</span> attribute is used.</p></td></tr></table><p class="Text_20_body">If the <span class="Attribute">draw:handle-polar</span> attribute is not set, the first parameter of the <span class="Attribute">draw:handle-position</span> attribute specifies the horizontal handle position, the vertical handle position is described by the second parameter. If the <span class="Attribute">draw:handle-polar</span> attribute is set, then a handle is a polar handle and the first parameter of the <span class="Attribute">draw:handle-position</span> attribute specifies the angle (as defined in <a href="#datatype-angle">18.3.1</a>), the handle radius is specified by the second parameter.</p><p class="Text_20_body">The value of a <span class="Attribute">draw:handle-position</span> attribute is formally defined as:</p><p class="Code_borderStart">handleposition ::= position ' '+ position <br/>position::= formula | modifier | constant | number <br/>formula::= '?' name <br/>modifier::= '$' integer <br/>constant::= 'left' | 'top' | 'right' | 'bottom' | <br/>'xstretch' | 'ystretch' | 'hasstroke' | 'hasfill ' | <br/>'width' | 'height' | 'logwidth' | 'logheight' <br/>number::=sign? float | sign? integer <br/>float::= fractional exponent? | integer exponent <br/>fractional::= integer? '.' integer | integer '.' <br/>exponent::= ( 'e' | 'E' ) sign? integer <br/>sign::= '+'| '-' <br/>integer::= [0-9]+ <br/>name ::= [^ ]+ </p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:handle-position</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-position</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_180draw_handle-radius-range-maximum"><span style="margin-right:0.127cm;">19.180</span></a><a id="__RefHeading__1417070_253892949"/><a id="attribute-draw_handle-radius-range-maximum"/>draw:handle-radius-range-maximum</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-radius-range-maximum</span> attribute specifies the maximum radius range for a polar handle. The syntax for the value of the <span class="Attribute">draw:handle-radius-range-maximum</span> attribute is the same as the <span class="Attribute">draw:handle-position</span> attribute, except that only the first parameter is used. <a href="#attribute-draw_handle-position">19.179</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-radius-range-maximum</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-radius-range-maximum</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_181draw_handle-radius-range-minimum"><span style="margin-right:0.127cm;">19.181</span></a><a id="__RefHeading__1417072_253892949"/><a id="attribute-draw_handle-radius-range-minimum"/>draw:handle-radius-range-minimum</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-radius-range-minimum</span> attribute specifies the minimum radius range for a polar handle. The syntax for the value of the <span class="Attribute">draw:handle-radius-range-minimum</span> attribute is the same as the <span class="Attribute">draw:handle-position</span> attribute, except that only the first parameter is used. <a href="#attribute-draw_handle-position">19.179</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-radius-range-minimum</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-radius-range-minimum</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_182draw_handle-range-x-maximum"><span style="margin-right:0.127cm;">19.182</span></a><a id="__RefHeading__1417074_253892949"/><a id="attribute-draw_handle-range-x-maximum"/>draw:handle-range-x-maximum</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-range-x-maximum</span> attribute specifies the horizontal maximum value of the range for movement of a handle. The syntax for the value of the <span class="Attribute">draw:handle-range-x-maximum</span> attribute is the same as the <span class="Attribute">draw:handle-position</span> attribute, except that only the first parameter is used. <a href="#attribute-draw_handle-position">19.179</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-range-x-maximum</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-range-x-maximum</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_183draw_handle-range-x-minimum"><span style="margin-right:0.127cm;">19.183</span></a><a id="__RefHeading__1417076_253892949"/><a id="attribute-draw_handle-range-x-minimum"/>draw:handle-range-x-minimum</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-range-x-minimum</span> attribute specifies the horizontal minimum value of the range of movement of a handle. The syntax for the value of the <span class="Attribute">draw:handle-range-x-minimum</span> attribute is the same as the <span class="Attribute">draw:handle-position</span> attribute, except that only the first parameter is used. <a href="#attribute-draw_handle-position">19.179</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-range-x-minimum</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-range-x-minimum</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_184draw_handle-range-y-maximum"><span style="margin-right:0.127cm;">19.184</span></a><a id="__RefHeading__1417078_253892949"/><a id="attribute-draw_handle-range-y-maximum"/>draw:handle-range-y-maximum</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-range-y-maximum</span> attribute specifies the vertical maximum value of the range for movement of a handle. The syntax for the value of the <span class="Attribute">draw:handle-range-y-maximum</span> attribute is the same as the <span class="Attribute">draw:handle-position</span> attribute, except that only the first parameter is used. <a href="#attribute-draw_handle-position">19.179</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-range-y-maximum</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-range-y-maximum</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_185draw_handle-range-y-minimum"><span style="margin-right:0.127cm;">19.185</span></a><a id="__RefHeading__1417080_253892949"/><a id="attribute-draw_handle-range-y-minimum"/>draw:handle-range-y-minimum</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-range-y-minimum</span> attribute specifies the vertical minimum value of the range of movement of a handle. The syntax for the value of the <span class="Attribute">draw:handle-range-y-minimum</span> attribute is the same as the <span class="Attribute">draw:handle-position</span> attribute, except that only the first parameter is used. <a href="#attribute-draw_handle-position">19.179</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:handle-range-y-minimum</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-range-y-minimum</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_186draw_handle-switched"><span style="margin-right:0.127cm;">19.186</span></a><a id="__RefHeading__1417082_253892949"/><a id="attribute-draw_handle-switched"/>draw:handle-switched</h2><p class="Text_20_body">The <span class="Attribute">draw:handle-switched</span> attribute specifies if handle directions are swapped if shape height exceeds shape width.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:handle-switched</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: handle directions are not switched if a shape's height exceeds its width.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: handle directions are switched if a shape's height exceeds it width.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:handle-switched</span> attribute is usable with the following element: <span class="Element">&lt;draw:handle&gt;</span> <a href="#element-draw_handle">10.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:handle-switched</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_187draw_id"><span style="margin-right:0.127cm;">19.187</span></a><a id="__RefHeading__1417084_253892949"/><a id="attribute-draw_id"/>draw:id</h2><h3 class="Heading_20_3"><a id="a19_187_1General"><span style="margin-right:0.127cm;">19.187.1</span></a><a id="__RefHeading__1417086_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:id</span> attribute specifies an identifier for an element.</p><h3 class="Heading_20_3"><a id="a19_187_2_draw_glue-point_"><span style="margin-right:0.127cm;">19.187.2</span></a><a id="__RefHeading__1417088_253892949"/><a id="attribute-draw_id_element-draw_glue-point"/>&lt;draw:glue-point&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:id</span> attribute specifies an identifier for a glue point. See <a href="#element-draw_glue-point">10.3.16</a>. The ids 0 to 3 are reserved for the 4 standard glue points of drawing objects. The glue points are numbered clockwise, starting at the top left corner edge of the shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:id</span> attribute is usable with the following element: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:id</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_187_3_dr3d_cube____dr3d_extrude____dr3d_rotate____dr3d_scene____dr3d_sphere____draw_caption____draw_circle____draw_connector____draw_control____draw_custom-shape____draw_ellipse____draw_frame____draw_g____draw_line____draw_measure____draw_page____draw_page-thumbnail____draw_path____draw_polygon____draw_polyline____draw_rect____draw_regular-polygon__and__office_annotation_"><span style="margin-right:0.127cm;">19.187.3</span></a><a id="__RefHeading__1417090_253892949"/><a id="attribute-draw_id_element-draw_polygon"/><a id="attribute-draw_id_element-draw_polyline"/><a id="attribute-draw_id_element-draw_rect"/><a id="attribute-draw_id_element-draw_regular-polygon"/><a id="attribute-draw_id_element-office_annotation"/><a id="attribute-draw_id_element-dr3d_cube"/><a id="attribute-draw_id_element-dr3d_extrude"/><a id="attribute-draw_id_element-dr3d_rotate"/><a id="attribute-draw_id_element-dr3d_scene"/><a id="attribute-draw_id_element-dr3d_sphere"/><a id="attribute-draw_id_element-draw_caption"/><a id="attribute-draw_id_element-draw_circle"/><a id="attribute-draw_id_element-draw_connector"/><a id="attribute-draw_id_element-draw_control"/><a id="attribute-draw_id_element-draw_custom-shape"/><a id="attribute-draw_id_element-draw_ellipse"/><a id="attribute-draw_id_element-draw_frame"/><a id="attribute-draw_id_element-draw_g"/><a id="attribute-draw_id_element-draw_line"/><a id="attribute-draw_id_element-draw_measure"/><a id="attribute-draw_id_element-draw_page"/><a id="attribute-draw_id_element-draw_page-thumbnail"/><a id="attribute-draw_id_element-draw_path"/>&lt;dr3d:cube&gt;, &lt;dr3d:extrude&gt;, &lt;dr3d:rotate&gt;, &lt;dr3d:scene&gt;, &lt;dr3d:sphere&gt;, &lt;draw:caption&gt;, &lt;draw:circle&gt;, &lt;draw:connector&gt;, &lt;draw:control&gt;, &lt;draw:custom-shape&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:g&gt;, &lt;draw:line&gt;, &lt;draw:measure&gt;, &lt;draw:page&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:rect&gt;, &lt;draw:regular-polygon&gt; and &lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:id</span> attribute specifies identifiers for draw elements other than <span class="Element">&lt;draw:glue-point&gt;</span>.</p><p class="Text_20_body">OpenDocument consumers shall ignore a <span class="Attribute">draw:id</span> attribute if it occurs on a draw element with an <span class="Attribute">xml:id</span> attribute value.  </p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">draw:id</span> attributes for any draw element in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body"> The value of a <span class="Attribute">draw:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same element. </p><p class="Text_20_body">The <span class="Attribute">draw:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:id</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_188draw_kind"><span style="margin-right:0.127cm;">19.188</span></a><a id="__RefHeading__1417092_253892949"/><a id="attribute-draw_kind"/>draw:kind</h2><p class="Text_20_body">The <span class="Attribute">draw:kind</span> attribute specifies the appearance of a circle.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:kind</span> attribute are:</p><ul><li><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">arc</span>: specifies a circle or ellipse arc, like <p> </p>.<span class="odfLiEnd"/> </div></li><li><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cut</span>: specifies a circle or ellipse with a cut, like <p> </p>.<span class="odfLiEnd"/> </div></li><li><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">full</span>: specifies a full circle or ellipse, like <p> </p>.<span class="odfLiEnd"/> </div></li><li><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">section</span>: specifies a section of a circle or ellipse, like <p> </p>.<span class="odfLiEnd"/> </div></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">full</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:kind</span> attribute is usable with the following elements: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a> and <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:kind</span> attribute are <span class="Attribute_20_Value">full</span>, <span class="Attribute_20_Value">section</span>, <span class="Attribute_20_Value">cut</span> or <span class="Attribute_20_Value">arc</span>.</p><h2 class="Heading_20_2"><a id="a19_189draw_layer"><span style="margin-right:0.127cm;">19.189</span></a><a id="__RefHeading__1417094_253892949"/><a id="attribute-draw_layer"/>draw:layer</h2><p class="Text_20_body">The <span class="Attribute">draw:layer</span> attribute specifies the name of a layer in the layer-set of a document. </p><p class="Note"><span class="Note_20_Label">Note:</span> The effect of this attribute is to assign a shape to a particular layer.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:layer</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:layer</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_190draw_line-skew"><span style="margin-right:0.127cm;">19.190</span></a><a id="__RefHeading__1417096_253892949"/><a id="attribute-draw_line-skew"/>draw:line-skew</h2><p class="Text_20_body">The <span class="Attribute">draw:line-skew</span> attribute specifies a list of offsets for the placements of connector lines if the connector is of type <span class="Attribute_20_Value">standard</span>. The offsets are relative to the default position of the connector, that is, the position the lines get if the <span class="Attribute">draw:line-skew</span> attribute is not present. The offsets are applied in the order from the connector's start to its end shape. The first offset is applied to the line that follows the line that is connected to the start shape. The last line to which an offset is applied is the line that precedes the line that is connected to the end shape.</p><p class="Text_20_body">For the application of the offsets the connector lines are interpreted as vectors from their start to their end point. Positive values move a line to the right, while negative values move it to the left. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:line-skew</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:line-skew</span> attribute are one, two or three white space separated values of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_191draw_mime-type"><span style="margin-right:0.127cm;">19.191</span></a><a id="__RefHeading__1417098_253892949"/><a id="attribute-draw_mime-type"/>draw:mime-type</h2><p class="Text_20_body">The <span class="Attribute">draw:mime-type</span> attribute specifies the MIME type of the media-type which a plugin processes. Valid values for this attribute are those defined in accordance with §3.7 of <a title=" Hypertext Transfer Protocol -- HTTP/1.1" href="http://www.ietf.org/rfc/rfc2616.txt">[RFC2616]</a>, or registered in accordance with <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a>. </p><p class="Text_20_body"><span class="Note_20_Label">Note: </span>Additional information on MIME media types can be found at <a title="MIME Media Types" href="http://www.iana.org/assignments/media-types/">[MIMETYPES]</a>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:mime-type</span> attribute is usable with the following element: <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:mime-type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_192draw_mirror-horizontal"><span style="margin-right:0.127cm;">19.192</span></a><a id="__RefHeading__1417100_253892949"/><a id="attribute-draw_mirror-horizontal"/>draw:mirror-horizontal</h2><p class="Text_20_body">The <span class="Attribute">draw:mirror-horizontal</span> attribute specifies if the horizontal geometry of a shape is to be mirrored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:mirror-horizontal</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: horizontal geometry of a shape is not mirrored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: horizontal geometry of a shape is mirrored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:mirror-horizontal</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:mirror-horizontal</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_193draw_mirror-vertical"><span style="margin-right:0.127cm;">19.193</span></a><a id="__RefHeading__1417102_253892949"/><a id="attribute-draw_mirror-vertical"/>draw:mirror-vertical</h2><p class="Text_20_body">The <span class="Attribute">draw:mirror-vertical</span> attribute specifies if the vertical geometry of a shape is to be mirrored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:mirror-vertical</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: vertical geometry of a shape is not mirrored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: vertical geometry of a shape is mirrored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:mirror-vertical</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:mirror-vertical</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_194draw_master-page-name"><span style="margin-right:0.127cm;">19.194</span></a><a id="__RefHeading__1417104_253892949"/><a id="attribute-draw_master-page-name"/>draw:master-page-name</h2><p class="Text_20_body">The <span class="Attribute">draw:master-page-name</span> attribute specifies the name of a master page assigned to a drawing page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:master-page-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:master-page-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_195draw_may-script"><span style="margin-right:0.127cm;">19.195</span></a><a id="__RefHeading__1417106_253892949"/><a id="attribute-draw_may-script"/>draw:may-script</h2><p class="Text_20_body">The <span class="Attribute">draw:may-script</span> attribute specifies whether an applet can be modified by scripts. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:may-script</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: applet cannot be modified by scripts.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: applet can be modified by scripts.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:may-script</span> attribute is usable with the following element: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:may-script</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_196draw_modifiers"><span style="margin-right:0.127cm;">19.196</span></a><a id="__RefHeading__1417108_253892949"/><a id="attribute-draw_modifiers"/>draw:modifiers</h2><p class="Text_20_body">The <span class="Attribute">draw:modifiers</span> attribute contains list of modifier values. </p><p class="Text_20_body">The value of a <span class="Attribute">draw:modifiers</span> attribute is formally defined as:</p><p class="Code_borderStart">modifiers::= numbersequence? <br/>numbersequence::= number ( ' '+ numbersequence )* <br/>number::= sign? float | sign? integer <br/>float::= fractional exponent? | integer exponent <br/>fractional::= integer? '.' integer | integer '.' <br/>exponent::= ( 'e' | 'E' ) sign? integer <br/>sign::= '+'| '-' <br/>integer::= [0-9]+ </p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:modifiers</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:modifiers</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_197draw_name"><span style="margin-right:0.127cm;">19.197</span></a><a id="__RefHeading__1417110_253892949"/><a id="attribute-draw_name"/>draw:name</h2><h3 class="Heading_20_3"><a id="a19_197_1General"><span style="margin-right:0.127cm;">19.197.1</span></a><a id="__RefHeading__1417112_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies names that are used for referencing graphical elements. </p><h3 class="Heading_20_3"><a id="a19_197_2_draw_caption_"><span style="margin-right:0.127cm;">19.197.2</span></a><a id="__RefHeading__1417114_253892949"/><a id="attribute-draw_name_element-draw_caption"/>&lt;draw:caption&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:caption&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_3_draw_circle_"><span style="margin-right:0.127cm;">19.197.3</span></a><a id="__RefHeading__1417116_253892949"/><a id="attribute-draw_name_element-draw_circle"/>&lt;draw:circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:circle&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_4_draw_connector_"><span style="margin-right:0.127cm;">19.197.4</span></a><a id="__RefHeading__1417118_253892949"/><a id="attribute-draw_name_element-draw_connector"/>&lt;draw:connector&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:connector&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_5_draw_control_"><span style="margin-right:0.127cm;">19.197.5</span></a><a id="__RefHeading__1417120_253892949"/><a id="attribute-draw_name_element-draw_control"/>&lt;draw:control&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:control&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_6_draw_custom-shape_"><span style="margin-right:0.127cm;">19.197.6</span></a><a id="__RefHeading__1417122_253892949"/><a id="attribute-draw_name_element-draw_custom-shape"/>&lt;draw:custom-shape&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:custom-shape&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_7_draw_ellipse_"><span style="margin-right:0.127cm;">19.197.7</span></a><a id="__RefHeading__1417124_253892949"/><a id="attribute-draw_name_element-draw_ellipse"/>&lt;draw:ellipse&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:ellipse&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_8_draw_equation_"><span style="margin-right:0.127cm;">19.197.8</span></a><a id="__RefHeading__1417126_253892949"/><a id="attribute-draw_name_element-draw_equation"/>&lt;draw:equation&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:equation&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:equation&gt;</span> <a href="#element-draw_equation">10.2.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_9_draw_fill-image_"><span style="margin-right:0.127cm;">19.197.9</span></a><a id="__RefHeading__1417128_253892949"/><a id="attribute-draw_name_element-draw_fill-image"/>&lt;draw:fill-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:fill-image&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_10_draw_frame_"><span style="margin-right:0.127cm;">19.197.10</span></a><a id="__RefHeading__1417130_253892949"/><a id="attribute-draw_name_element-draw_frame"/>&lt;draw:frame&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:frame&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_11_draw_g_"><span style="margin-right:0.127cm;">19.197.11</span></a><a id="__RefHeading__1417132_253892949"/><a id="attribute-draw_name_element-draw_g"/>&lt;draw:g&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:g&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_12_draw_gradient_"><span style="margin-right:0.127cm;">19.197.12</span></a><a id="__RefHeading__1417134_253892949"/><a id="attribute-draw_name_element-draw_gradient"/>&lt;draw:gradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:gradient&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_13_draw_hatch_"><span style="margin-right:0.127cm;">19.197.13</span></a><a id="__RefHeading__1417136_253892949"/><a id="attribute-draw_name_element-draw_hatch"/>&lt;draw:hatch&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:hatch&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_14_draw_layer_"><span style="margin-right:0.127cm;">19.197.14</span></a><a id="__RefHeading__1417138_253892949"/><a id="attribute-draw_name_element-draw_layer"/>&lt;draw:layer&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:layer&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:layer&gt;</span> <a href="#element-draw_layer">10.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_15_draw_line_"><span style="margin-right:0.127cm;">19.197.15</span></a><a id="__RefHeading__1417140_253892949"/><a id="attribute-draw_name_element-draw_line"/>&lt;draw:line&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:line&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_16_draw_marker_"><span style="margin-right:0.127cm;">19.197.16</span></a><a id="__RefHeading__1417142_253892949"/><a id="attribute-draw_name_element-draw_marker"/>&lt;draw:marker&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:marker&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:marker&gt;</span> <a href="#element-draw_marker">16.40.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_17_draw_measure_"><span style="margin-right:0.127cm;">19.197.17</span></a><a id="__RefHeading__1417144_253892949"/><a id="attribute-draw_name_element-draw_measure"/>&lt;draw:measure&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:measure&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_18_draw_opacity_"><span style="margin-right:0.127cm;">19.197.18</span></a><a id="__RefHeading__1417146_253892949"/><a id="attribute-draw_name_element-draw_opacity"/>&lt;draw:opacity&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:opacity&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_19_draw_page_"><span style="margin-right:0.127cm;">19.197.19</span></a><a id="__RefHeading__1417148_253892949"/><a id="attribute-draw_name_element-draw_page"/>&lt;draw:page&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:page&gt;</span> element can be referenced. The name shall be unique within the document instance. If the attribute is not present, a consumer may generate a unique name. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_20_draw_page-thumbnail_"><span style="margin-right:0.127cm;">19.197.20</span></a><a id="__RefHeading__1417150_253892949"/><a id="attribute-draw_name_element-draw_page-thumbnail"/>&lt;draw:page-thumbnail&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:page-thumbnail&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_21_draw_param_"><span style="margin-right:0.127cm;">19.197.21</span></a><a id="__RefHeading__1417152_253892949"/><a id="attribute-draw_name_element-draw_param"/>&lt;draw:param&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies the name of a runtime parameter. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:param&gt;</span> <a href="#element-draw_param">10.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_22_draw_path_"><span style="margin-right:0.127cm;">19.197.22</span></a><a id="__RefHeading__1417154_253892949"/><a id="attribute-draw_name_element-draw_path"/>&lt;draw:path&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:path&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_23_draw_polygon_"><span style="margin-right:0.127cm;">19.197.23</span></a><a id="__RefHeading__1417156_253892949"/><a id="attribute-draw_name_element-draw_polygon"/>&lt;draw:polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:polygon&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_24_draw_polyline_"><span style="margin-right:0.127cm;">19.197.24</span></a><a id="__RefHeading__1417158_253892949"/><a id="attribute-draw_name_element-draw_polyline"/>&lt;draw:polyline&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:polyline&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_25_draw_rect_"><span style="margin-right:0.127cm;">19.197.25</span></a><a id="__RefHeading__1417160_253892949"/><a id="attribute-draw_name_element-draw_rect"/>&lt;draw:rect&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:rect&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_26_draw_regular-polygon_"><span style="margin-right:0.127cm;">19.197.26</span></a><a id="__RefHeading__1417162_253892949"/><a id="attribute-draw_name_element-draw_regular-polygon"/>&lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:regular-polygon&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_27_draw_stroke-dash_"><span style="margin-right:0.127cm;">19.197.27</span></a><a id="__RefHeading__1417164_253892949"/><a id="attribute-draw_name_element-draw_stroke-dash"/>&lt;draw:stroke-dash&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;draw:stroke-dash&gt;</span> element can be referenced. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_28_office_annotation___deprecated_"><span style="margin-right:0.127cm;">19.197.28</span></a><a id="__RefHeading__1417166_253892949"/><a id="attribute-draw_name_element-office_annotation"/>&lt;office:annotation&gt; (deprecated)</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name for an <span class="Element">&lt;office:annotation&gt;</span> element.</p><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute has been deprecated in favor of the <span class="Attribute">office:name</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_197_29_svg_linearGradient_"><span style="margin-right:0.127cm;">19.197.29</span></a><a id="__RefHeading__1417168_253892949"/><a id="attribute-draw_name_element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;svg:linearGradient&gt;</span> element can be referenced. </p><p class="Text_20_body">SVG gradients are referenced by the name assigned to them by use of the <span class="Attribute">draw:fill-gradient-name</span> attribute within a graphic style. SVG gradients cannot be referenced by a <span class="Attribute">draw:opacity-name</span> attribute. The result of referencing a SVG gradient with a <span class="Attribute">draw:fill-</span><span class="Attribute">gradient-name</span> attribute and an opacity gradient with a <span class="Attribute">draw:opacity-name</span> attribute at the same time is unspecified.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_197_30_svg_radialGradient_"><span style="margin-right:0.127cm;">19.197.30</span></a><a id="__RefHeading__1417170_253892949"/><a id="attribute-draw_name_element-svg_radialGradient"/>&lt;svg:radialGradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:name</span> attribute specifies a name by which a <span class="Element">&lt;svg:radialGradient&gt;</span> element can be referenced. </p><p class="Text_20_body">SVG gradients are referenced by the name assigned to them by use of the <span class="Attribute">draw:fill-gradient-name</span> attribute within a graphic style. SVG gradients cannot be referenced by a <span class="Attribute">draw:opacity-name</span> attribute. The result of referencing a SVG gradient with a <span class="Attribute">draw:fill-</span><span class="Attribute">gradient-name</span> attribute and an opacity gradient with a <span class="Attribute">draw:opacity-name</span> attribute at the same time is unspecified.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:name</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h2 class="Heading_20_2"><a id="a19_198draw_nav-order"><span style="margin-right:0.127cm;">19.198</span></a><a id="__RefHeading__1417172_253892949"/><a id="attribute-draw_nav-order"/>draw:nav-order</h2><p class="Text_20_body">The <span class="Attribute">draw:nav-order</span> attribute defines a navigation sequence for the graphical elements included in a <span class="Element">&lt;draw:page&gt;</span> element. Its value is a sequence of IDREFs. It shall include all graphic elements in the page that are not contained within a <span class="Element">&lt;draw:g&gt;</span> element. Any <span class="Element">&lt;draw:g&gt;</span> elements are included in that list as a single graphical element. </p><p class="Text_20_body">The value of this attribute is the ordering of graphics as set by the document author.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The ordering within any <span class="Element">&lt;draw:g&gt;</span> element is set by the value of its <span class="Attribute">draw:z-index</span> attribute. <a href="#attribute-draw_z-index">19.231</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:nav-order</span> attribute is usable with the following element: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:nav-order</span> attribute has the data type <span class="Datatype">IDREFS</span> <a href="#datatype-IDREFS">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_199draw_nohref"><span style="margin-right:0.127cm;">19.199</span></a><a id="__RefHeading__1417174_253892949"/><a id="attribute-draw_nohref"/>draw:nohref</h2><p class="Text_20_body">The <span class="Attribute">draw:nohref</span> attribute specifies that an image map element and its associated area are inactive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:nohref</span> attribute is usable with the following elements: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a> and <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The only value of the <span class="Attribute">draw:nohref</span> attribute is <span class="Attribute_20_Value">nohref</span>.</p><h2 class="Heading_20_2"><a id="a19_200draw_notify-on-update-of-ranges"><span style="margin-right:0.127cm;">19.200</span></a><a id="__RefHeading__1417176_253892949"/><a id="attribute-draw_notify-on-update-of-ranges"/>draw:notify-on-update-of-ranges</h2><p class="Text_20_body">The <span class="Attribute">draw:notify-on-update-of-ranges</span> attribute specifies that a <span class="Element">&lt;draw:object&gt;</span> will be notified if content within a given ranges changes. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:notify-on-update-of-ranges</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a list of cell ranges.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a table name.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If a table name is specified, the <span class="Element">&lt;draw:object&gt;</span> element is notified if any of the table's cells change. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:notify-on-update-of-ranges</span> attribute is usable with the following element: <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:notify-on-update-of-ranges</span> attribute are a value of type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_201draw_object"><span style="margin-right:0.127cm;">19.201</span></a><a id="__RefHeading__1417178_253892949"/><a id="attribute-draw_object"/>draw:object</h2><p class="Text_20_body">The <span class="Attribute">draw:object</span> attribute is equivalent to the object attribute of an <span class="Alien_20_Element">&lt;applet&gt;</span> element in HTML. See. §13.4 of <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:object</span> attribute is usable with the following element: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:object</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_202draw_opacity"><span style="margin-right:0.127cm;">19.202</span></a><a id="__RefHeading__1417180_253892949"/><a id="attribute-draw_opacity"/>draw:opacity</h2><p class="Text_20_body">The <span class="Attribute">draw:opacity</span> attribute specifies the opacity for an image or graphic object. The defined value range for the <span class="Attribute">draw:opacity</span> attribute is 0% to 100%, where 0% is fully transparent and 100% is fully opaque.</p><p class="Text_20_body">Use of the <span class="Attribute">draw:opacity</span> attribute disables any transparency effect and set the opacity for the fill area of a graphic object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:opacity</span> attribute is usable with the following element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:opacity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_203draw_page-number"><span style="margin-right:0.127cm;">19.203</span></a><a id="__RefHeading__1417182_253892949"/><a id="attribute-draw_page-number"/>draw:page-number</h2><p class="Text_20_body">The <span class="Attribute">draw:page-number</span> attribute specifies the number of a page that is displayed as a thumbnail. For thumbnails on notes pages, the value of this attribute is fixed to the drawing page of a notes page. For thumbnails on handout master pages, the value of this attribute is the order in which the pages are previewed on the handout.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:page-number</span> attribute is usable with the following element: <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:page-number</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_204draw_path-stretchpoint-x"><span style="margin-right:0.127cm;">19.204</span></a><a id="__RefHeading__1417184_253892949"/><a id="attribute-draw_path-stretchpoint-x"/>draw:path-stretchpoint-x</h2><p class="Text_20_body">The <span class="Attribute">draw:path-stretchpoint-x</span> attribute specifies that a drawing shape is stretched horizontally. </p><p class="Text_20_body">If specified, and if the x/y aspect ratio of the <span class="Attribute">svg:viewBox</span> is lower than the x/y aspect ratio of the shape size then the whole path is stretched horizontally at <span class="Attribute">draw:path-stretchpoint-x</span>. </p><p class="Text_20_body">Stretching is done by:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>intersecting the path vertically at <span class="Attribute">draw:path-stretchpoint-x</span>.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>moving the right path fragments to the right border of the drawing shape, using its original aspect ratio.The left path fragment remains unmodified at the left border of drawing the shape <span class="odfLiEnd"/> </p></li></ol><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:path-stretchpoint-x</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:path-stretchpoint-x</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_205draw_path-stretchpoint-y"><span style="margin-right:0.127cm;">19.205</span></a><a id="__RefHeading__1417186_253892949"/><a id="attribute-draw_path-stretchpoint-y"/>draw:path-stretchpoint-y</h2><p class="Text_20_body">The <span class="Attribute">draw:path-stretchpoint-y</span> attribute specifies that a drawing shape is stretched vertically.If the x/y aspect ratio of the <span class="Attribute">svg:viewBox</span> is greater than the x/y aspect ratio of the shape size then the whole path is stretched vertically at <span class="Attribute">draw:path-stretchpoint-y</span>. </p><p class="Text_20_body">Stretching is done by: </p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>intersecting the path horizontally at <span class="Attribute">draw:path-stretchpoint-y</span>. <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>moving the bottom path fragments to the bottom border of the drawing shape, using its original aspect ratio. <span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The top path fragment remains unmodified at the top border of drawing the shape </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:path-stretchpoint-y</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:path-stretchpoint-y</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_206draw_points"><span style="margin-right:0.127cm;">19.206</span></a><a id="__RefHeading__1417188_253892949"/><a id="attribute-draw_points"/>draw:points</h2><p class="Text_20_body">The <span class="Attribute">draw:points</span> attribute stores a sequence of points, which are connected by straight lines. Each point consists of two coordinates. The coordinates are separated by a comma “,” (U+002C, COMMA) and the points are separated by white spaces. The coordinates are relative to the coordinate system established by the <span class="Attribute">svg:viewBox</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:points</span> attribute is usable with the following elements: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:contour-polygon&gt;</span> <a href="#element-draw_contour-polygon">10.4.11.2</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a> and <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:points</span> attribute has the data type <span class="Datatype">points</span> <a href="#datatype-points">18.3.25</a>.</p><h2 class="Heading_20_2"><a id="a19_207draw_protected"><span style="margin-right:0.127cm;">19.207</span></a><a id="__RefHeading__1417190_253892949"/><a id="attribute-draw_protected"/>draw:protected</h2><p class="Text_20_body">The <span class="Attribute">draw:protected</span> attribute specifies if drawing objects in a layer are protected from modification.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:protected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: objects in a layer are not protected from modification.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: objects in a layer are protected from modification.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:protected</span> attribute is usable with the following element: <span class="Element">&lt;draw:layer&gt;</span> <a href="#element-draw_layer">10.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_208draw_recreate-on-edit"><span style="margin-right:0.127cm;">19.208</span></a><a id="__RefHeading__1417192_253892949"/><a id="attribute-draw_recreate-on-edit"/>draw:recreate-on-edit</h2><p class="Text_20_body">The <span class="Attribute">draw:recreate-on-edit</span> attribute specifies if the contour of an image or object should be recreated automatically if the image or object is edited.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:recreate-on-edit</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the contour of an image or object is not recreated automatically if the image or object is edited.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the contour of an image or object is recreated automatically if the image or object is edited.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:recreate-on-edit</span> attribute is usable with the following elements: <span class="Element">&lt;draw:contour-path&gt;</span> <a href="#element-draw_contour-path">10.4.11.3</a> and <span class="Element">&lt;draw:contour-polygon&gt;</span> <a href="#element-draw_contour-polygon">10.4.11.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:recreate-on-edit</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_209draw_rotation"><span style="margin-right:0.127cm;">19.209</span></a><a id="__RefHeading__1417194_253892949"/><a id="attribute-draw_rotation"/>draw:rotation</h2><p class="Text_20_body">The <span class="Attribute">draw:rotation</span> attribute specifies the rotation angle of a hatch axis. The direction is clockwise, 0 degrees is the vertical axis. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:rotation</span> attribute is usable with the following element: <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:rotation</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_210draw_shape-id"><span style="margin-right:0.127cm;">19.210</span></a><a id="__RefHeading__1417196_253892949"/><a id="attribute-draw_shape-id"/>draw:shape-id</h2><p class="Text_20_body">The <span class="Attribute">draw:shape-id</span> attribute identifies the shape to which an effect defined by a presentation shape effect element is applied.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:shape-id</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:dim&gt;</span> <a href="#element-presentation_dim">10.8.7</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:play&gt;</span> <a href="#element-presentation_play">10.8.8</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:shape-id</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_211draw_sharpness"><span style="margin-right:0.127cm;">19.211</span></a><a id="__RefHeading__1417198_253892949"/><a id="attribute-draw_sharpness"/>draw:sharpness</h2><p class="Text_20_body">The <span class="Attribute">draw:sharpness</span> attribute specifies the radius of the ellipse on which inner polygon corners are located. The value is a percentage, where 0% means that all corners are located on a single ellipse, while 100% means that the inner corners are located at the center point of the polygon. If <span class="Formula">r</span> is the radius of the polygon, and <span class="Formula">s</span> is the sharpness, the inner corners are located on a ellipse whose radius is <span class="Formula">r(100-s)/100</span>.</p><p class="Note"><span class="Note_20_Label">Note:</span> This attribute is only meaningful only with a <span class="Attribute">draw:concave</span> attribute with the value <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:sharpness</span> attribute is usable with the following element: <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:sharpness</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_212draw_start"><span style="margin-right:0.127cm;">19.212</span></a><a id="__RefHeading__1417200_253892949"/><a id="attribute-draw_start"/>draw:start</h2><p class="Text_20_body">The <span class="Attribute">draw:start</span> attribute specifies the start value for the <span class="Element">&lt;draw:opacity&gt;</span> element, which interpolates between the value of this attribute and <span class="Attribute">draw:end</span>. The defined value range for the <span class="Attribute">draw:start</span> attribute is 0% to 100%, where 0% is transparent and 100% is opaque.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start</span> attribute is usable with the following element: <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_213draw_start-angle"><span style="margin-right:0.127cm;">19.213</span></a><a id="__RefHeading__1417202_253892949"/><a id="attribute-draw_start-angle"/>draw:start-angle</h2><p class="Text_20_body">The <span class="Attribute">draw:start-angle</span> attribute specifies the start angle of a section, cut, or arc for circles where the <span class="Attribute">draw:kind</span> attribute value is <span class="Attribute_20_Value">section</span>, <span class="Attribute_20_Value">cut</span> or <span class="Attribute_20_Value">arc</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-angle</span> attribute is usable with the following elements: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a> and <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_214draw_start-color"><span style="margin-right:0.127cm;">19.214</span></a><a id="__RefHeading__1417204_253892949"/><a id="attribute-draw_start-color"/>draw:start-color</h2><p class="Text_20_body">The <span class="Attribute">draw:start-color</span> attributes specifies the start value for the <span class="Element">&lt;draw:gradient&gt;</span> element, which interpolates between the value of this attribute and <span class="Attribute">draw:end-color</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-color</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_215draw_start-glue-point"><span style="margin-right:0.127cm;">19.215</span></a><a id="__RefHeading__1417206_253892949"/><a id="attribute-draw_start-glue-point"/>draw:start-glue-point</h2><p class="Text_20_body">The <span class="Attribute">draw:start-glue-point</span> attribute identifies the glue point in a shape where a connector starts by its number. See <a href="#element-draw_glue-point">10.3.16</a>. Glue point numbers are defined by the <span class="Attribute">draw:id</span> attributes of the glue point elements <span class="Element">&lt;draw:glue-point&gt;</span>. See <a href="#attribute-draw_id">19.187</a>.</p><p class="Text_20_body">If the connector is not connected to a shape, this attribute is ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-glue-point</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-glue-point</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_216draw_start-intensity"><span style="margin-right:0.127cm;">19.216</span></a><a id="__RefHeading__1417208_253892949"/><a id="attribute-draw_start-intensity"/>draw:start-intensity</h2><p class="Text_20_body">The <span class="Attribute">draw:start-intensity</span> attribute specifies the intensity of the gradient's start color as a percentage value. If it is not specified, the color is used at 100% intensity. The defined value range for the <span class="Attribute">draw:start-intensity</span> attribute is 0% to 100%.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-intensity</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-intensity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_217draw_start-shape"><span style="margin-right:0.127cm;">19.217</span></a><a id="__RefHeading__1417210_253892949"/><a id="attribute-draw_start-shape"/>draw:start-shape</h2><p class="Text_20_body">The <span class="Attribute">draw:start-shape</span> attribute specifies a drawing shape to which the start of a connector is connected by its ID.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-shape</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-shape</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_218draw_style"><span style="margin-right:0.127cm;">19.218</span></a><a id="__RefHeading__1417212_253892949"/><a id="attribute-draw_style"/>draw:style</h2><h3 class="Heading_20_3"><a id="a19_218_1General"><span style="margin-right:0.127cm;">19.218.1</span></a><a id="__RefHeading__1417214_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:style</span> attribute specifies the rendering of graphic objects. </p><h3 class="Heading_20_3"><a id="a19_218_2_draw_gradient_"><span style="margin-right:0.127cm;">19.218.2</span></a><a id="__RefHeading__1417216_253892949"/><a id="attribute-draw_style_element-draw_gradient"/>&lt;draw:gradient&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style</span> attribute specifies a rendering for a gradient. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:style</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">axial</span>: defines a bi-linear gradient that is also known as reflected gradient or mirrored linear gradient. It is created as a linear gradient that is mirrored (or reflected) along its axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ellipsoid</span>: defines a gradient where the colors are blend along the radius from the center of an ellipsoid as defined with the <span class="Attribute">draw:cx</span> and <span class="Attribute">draw:cy</span> attributes. The length of the semi major-axis is the width of the filled area and the length of the semi-minor axis is the height of the filled area. The area outside the ellipse is filled with the end color. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">Linear</span>:  defines a gradient where the colors blend along the linear axis of the gradient. The axis of the gradient is specified with the <span class="Attribute">draw:angle</span> attribute clockwise to the vertical axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">radial</span>: defines a gradient where the colors are blend along the radius from the center of a circle as defined with the <span class="Attribute">draw:cx</span> and <span class="Attribute">draw:cy</span> attributes. The outside of the circle is filled with the end color.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">rectangle</span>: defines a gradient that produces a rectangular blend from the center of the rectangle to the shortest of the 4 borders. The center of the rectangle is defined with the attributes <span class="Attribute">draw:cx</span> and <span class="Attribute">draw:cy</span>. The width of the rectangle is the width of the filled area, the height of the rectangle is the height of the filled area. The outside of the square is filled with the end color. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">square</span>: defines a gradient that produces a square blend, imitating the visual perspective in a corridor or the aerial view of a pyramid. Also known as "box gradient" and "pyramidal gradient". The center of the square is defined with the <span class="Attribute">draw:cx</span> and <span class="Attribute">draw:cy</span> attributes. The width and height of the square is the minimum value of either the width or the height of the filled area. The outside of the square is filled with the end color. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style</span> attribute is usable with the following element: <span class="Element">&lt;draw:gradient&gt;</span> <a href="#element-draw_gradient">16.40.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:style</span> attribute are <span class="Attribute_20_Value">linear</span>, <span class="Attribute_20_Value">axial</span>, <span class="Attribute_20_Value">radial</span>, <span class="Attribute_20_Value">ellipsoid</span>, <span class="Attribute_20_Value">square</span> or <span class="Attribute_20_Value">rectangular</span>.</p><h3 class="Heading_20_3"><a id="a19_218_3_draw_hatch_"><span style="margin-right:0.127cm;">19.218.3</span></a><a id="__RefHeading__1417218_253892949"/><a id="attribute-draw_style_element-draw_hatch"/>&lt;draw:hatch&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style</span> attribute specifies a rendering for a hatch. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:style</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: defines a hatch that is made of a set of parallel lines along the axis of the hatch and a set of parallel lines perpendicular to the axis of the hatch. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">single</span>: defines a hatch that is made of parallel lines along the axis of the hatch. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">triple</span>: defines a hatch that is made of a set of parallel lines along the axis of the hatch, a set of parallel lines perpendicular to the axis of the hatch and a set of lines along 45 degree clockwise to the axis of the hatch. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style</span> attribute is usable with the following element: <span class="Element">&lt;draw:hatch&gt;</span> <a href="#element-draw_hatch">16.40.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:style</span> attribute are <span class="Attribute_20_Value">single</span>, <span class="Attribute_20_Value">double</span> or <span class="Attribute_20_Value">triple</span>.</p><h3 class="Heading_20_3"><a id="a19_218_4_draw_opacity_"><span style="margin-right:0.127cm;">19.218.4</span></a><a id="__RefHeading__1417220_253892949"/><a id="attribute-draw_style_element-draw_opacity"/>&lt;draw:opacity&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style</span> attribute specifies the transparency of a graphic object.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:style</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">axial</span>: <a href="#attribute-draw_style_element-draw_gradient">19.218.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ellipsoid</span>: <a href="#attribute-draw_style_element-draw_gradient">19.218.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">linear</span>: <a href="#attribute-draw_style_element-draw_gradient">19.218.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">rectangle</span>: <a id="DDE_LINK23"/><a href="#attribute-draw_style_element-draw_gradient">19.218.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">square</span>: <a href="#attribute-draw_style_element-draw_gradient">19.218.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The transparency of an object is blended in contrast to the blending of colors described for <span class="Attribute">draw:style</span> on <span class="Element">&lt;draw:gradient&gt;</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style</span> attribute is usable with the following element: <span class="Element">&lt;draw:opacity&gt;</span> <a href="#element-draw_opacity">16.40.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:style</span> attribute are <span class="Attribute_20_Value">linear</span>, <span class="Attribute_20_Value">axial</span>, <span class="Attribute_20_Value">radial</span>, <span class="Attribute_20_Value">ellipsoid</span>, <span class="Attribute_20_Value">square</span> or <span class="Attribute_20_Value">rectangular</span>.</p><h3 class="Heading_20_3"><a id="a19_218_5_draw_stroke-dash_"><span style="margin-right:0.127cm;">19.218.5</span></a><a id="__RefHeading__1417222_253892949"/><a id="attribute-draw_style_element-draw_stroke-dash"/>&lt;draw:stroke-dash&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style</span> attribute specifies a rendering for a stroke-dash. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:style</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">rect</span>: dash has a rectangular shape. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">round</span>: dash has a round shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style</span> attribute is usable with the following element: <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:style</span> attribute are <span class="Attribute_20_Value">rect</span> or <span class="Attribute_20_Value">round</span>.</p><h2 class="Heading_20_2"><a id="a19_219draw_style-name"><span style="margin-right:0.127cm;">19.219</span></a><a id="__RefHeading__1417224_253892949"/><a id="attribute-draw_style-name"/>draw:style-name</h2><h3 class="Heading_20_3"><a id="a19_219_1General"><span style="margin-right:0.127cm;">19.219.1</span></a><a id="__RefHeading__1417226_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element whose family varies depending upon the element where it appears. </p><h3 class="Heading_20_3"><a id="a19_219_2_dr3d_cube_"><span style="margin-right:0.127cm;">19.219.2</span></a><a id="__RefHeading__1417228_253892949"/><a id="attribute-draw_style-name_element-dr3d_cube"/>&lt;dr3d:cube&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_3_dr3d_extrude_"><span style="margin-right:0.127cm;">19.219.3</span></a><a id="__RefHeading__1417230_253892949"/><a id="attribute-draw_style-name_element-dr3d_extrude"/>&lt;dr3d:extrude&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_4_dr3d_rotate_"><span style="margin-right:0.127cm;">19.219.4</span></a><a id="__RefHeading__1417232_253892949"/><a id="attribute-draw_style-name_element-dr3d_rotate"/>&lt;dr3d:rotate&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_5_dr3d_scene_"><span style="margin-right:0.127cm;">19.219.5</span></a><a id="__RefHeading__1417234_253892949"/><a id="attribute-draw_style-name_element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_6_dr3d_sphere_"><span style="margin-right:0.127cm;">19.219.6</span></a><a id="__RefHeading__1417236_253892949"/><a id="attribute-draw_style-name_element-dr3d_sphere"/>&lt;dr3d:sphere&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_7_draw_caption_"><span style="margin-right:0.127cm;">19.219.7</span></a><a id="__RefHeading__1417238_253892949"/><a id="attribute-draw_style-name_element-draw_caption"/>&lt;draw:caption&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_8_draw_circle_"><span style="margin-right:0.127cm;">19.219.8</span></a><a id="__RefHeading__1417240_253892949"/><a id="attribute-draw_style-name_element-draw_circle"/>&lt;draw:circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_9_draw_connector_"><span style="margin-right:0.127cm;">19.219.9</span></a><a id="__RefHeading__1417242_253892949"/><a id="attribute-draw_style-name_element-draw_connector"/>&lt;draw:connector&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_10_draw_control_"><span style="margin-right:0.127cm;">19.219.10</span></a><a id="__RefHeading__1417244_253892949"/><a id="attribute-draw_style-name_element-draw_control"/>&lt;draw:control&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_11_draw_custom-shape_"><span style="margin-right:0.127cm;">19.219.11</span></a><a id="__RefHeading__1417246_253892949"/><a id="attribute-draw_style-name_element-draw_custom-shape"/>&lt;draw:custom-shape&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_12_draw_ellipse_"><span style="margin-right:0.127cm;">19.219.12</span></a><a id="__RefHeading__1417248_253892949"/><a id="attribute-draw_style-name_element-draw_ellipse"/>&lt;draw:ellipse&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_13_draw_frame_"><span style="margin-right:0.127cm;">19.219.13</span></a><a id="__RefHeading__1417250_253892949"/><a id="attribute-draw_style-name_element-draw_frame"/>&lt;draw:frame&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_14_draw_g_"><span style="margin-right:0.127cm;">19.219.14</span></a><a id="__RefHeading__1417252_253892949"/><a id="attribute-draw_style-name_element-draw_g"/>&lt;draw:g&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_15_draw_line_"><span style="margin-right:0.127cm;">19.219.15</span></a><a id="__RefHeading__1417254_253892949"/><a id="attribute-draw_style-name_element-draw_line"/>&lt;draw:line&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_16_draw_measure_"><span style="margin-right:0.127cm;">19.219.16</span></a><a id="__RefHeading__1417256_253892949"/><a id="attribute-draw_style-name_element-draw_measure"/>&lt;draw:measure&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_17_draw_page_"><span style="margin-right:0.127cm;">19.219.17</span></a><a id="__RefHeading__1417258_253892949"/><a id="attribute-draw_style-name_element-draw_page"/>&lt;draw:page&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">drawing-page</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_18_draw_page-thumbnail_"><span style="margin-right:0.127cm;">19.219.18</span></a><a id="__RefHeading__1417260_253892949"/><a id="attribute-draw_style-name_element-draw_page-thumbnail"/>&lt;draw:page-thumbnail&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_19_draw_path_"><span style="margin-right:0.127cm;">19.219.19</span></a><a id="__RefHeading__1417262_253892949"/><a id="attribute-draw_style-name_element-draw_path"/>&lt;draw:path&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_20_draw_polygon_"><span style="margin-right:0.127cm;">19.219.20</span></a><a id="__RefHeading__1417264_253892949"/><a id="attribute-draw_style-name_element-draw_polygon"/>&lt;draw:polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_21_draw_polyline_"><span style="margin-right:0.127cm;">19.219.21</span></a><a id="__RefHeading__1417266_253892949"/><a id="attribute-draw_style-name_element-draw_polyline"/>&lt;draw:polyline&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_22_draw_rect_"><span style="margin-right:0.127cm;">19.219.22</span></a><a id="__RefHeading__1417268_253892949"/><a id="attribute-draw_style-name_element-draw_rect"/>&lt;draw:rect&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_23_draw_regular-polygon_"><span style="margin-right:0.127cm;">19.219.23</span></a><a id="__RefHeading__1417270_253892949"/><a id="attribute-draw_style-name_element-draw_regular-polygon"/>&lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_24_office_annotation_"><span style="margin-right:0.127cm;">19.219.24</span></a><a id="__RefHeading__1417272_253892949"/><a id="attribute-draw_style-name_element-office_annotation"/>&lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">graphic</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_25_presentation_notes_"><span style="margin-right:0.127cm;">19.219.25</span></a><a id="__RefHeading__1417274_253892949"/><a id="attribute-draw_style-name_element-presentation_notes"/>&lt;presentation:notes&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">drawing-page</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_26_style_handout-master_"><span style="margin-right:0.127cm;">19.219.26</span></a><a id="__RefHeading__1417276_253892949"/><a id="attribute-draw_style-name_element-style_handout-master"/>&lt;style:handout-master&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">drawing-page</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_219_27_style_master-page_"><span style="margin-right:0.127cm;">19.219.27</span></a><a id="__RefHeading__1417278_253892949"/><a id="attribute-draw_style-name_element-style_master-page"/>&lt;style:master-page&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:style-name</span> attribute specifies the name of a <span class="Element">&lt;style:style&gt;</span> element that defines a style with the family value of <span class="Attribute_20_Value">drawing-page</span>. </p><p class="Text_20_body">In drawing and presentation documents, additional drawing page attributes may be assigned to a drawing page using the <span class="Attribute">draw:style-name</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_220draw_text-areas"><span style="margin-right:0.127cm;">19.220</span></a><a id="__RefHeading__1417280_253892949"/><a id="attribute-draw_text-areas"/>draw:text-areas</h2><p class="Text_20_body">The <span class="Attribute">draw:text-areas</span> attribute specifies up to two text areas. If the attribute specifies one text area, this text area is used to position and align the text. If the attribute specifies two text areas, the second text area is used if a style that is assigned to the text has a <span class="Attribute">style:writing-mode</span> attribute with value <span class="Attribute_20_Value">tb-rl</span> or <span class="Attribute_20_Value">tb</span>. Otherwise, the first text area is used. If the draw:text-areas attribute is omitted, the entire area of the shape is used to position and align the text. </p><p class="Text_20_body">An area consists of four parameters:</p><p class="Text_20_body">The first parameter specifies the left side of a text area.</p><p class="Text_20_body">The second parameter specifies the top side of a text area.</p><p class="Text_20_body">The third parameter specifies the right side of a text area.</p><p class="Text_20_body">The fourth parameter specifies the bottom side of a text area.</p><p class="Text_20_body">A parameter can also have one of the following enhancements:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A “?” (U+003F, QUESTION MARK) is used to mark the beginning of a formula name. The result of the <span class="Element">&lt;draw:equation&gt;</span> element's <span class="Attribute">draw:formula</span> attribute whose <span class="Attribute">draw:name</span> attribute is the formula name that is used as the value. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If “$” (U+0024, DOLLAR SIGN) precedes an integer value, the value is an index to a <span class="Attribute">draw:modifiers</span> attribute. The corresponding modifier value is used as parameter value.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value of a <span class="Attribute">draw:text-areas</span> attribute is formally defined as:</p><p class="Code_borderStart">textareas::= textareasequence <br/>textareasequence ::= textarea ( ' '+ textarea )? <br/>textarea::= position ' '+ position ' '+ position ' '+ position <br/>position::= formula | modifier | number <br/>formula::= '?' name <br/>modifier::= '$' integer <br/>number::= sign? float | sign? integer <br/>float::= fractional exponent? | integer exponent <br/>fractional::= integer? '.' integer | integer '.' <br/>exponent::= ( 'e' | 'E' ) sign? integer <br/>sign::= '+'| '-' <br/>integer::= [0-9]+ <br/>name ::= [^ ]+ </p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-areas</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:text-areas</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_221draw_text-path"><span style="margin-right:0.127cm;">19.221</span></a><a id="__RefHeading__1417282_253892949"/><a id="attribute-draw_text-path"/>draw:text-path</h2><p class="Text_20_body">The <span class="Attribute">draw:text-path</span> attribute specifies if text is displayed on a text path.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:text-path</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text is not displayed on a text path.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text is displayed on a text path.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-path</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:text-path</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_222draw_text-path-allowed"><span style="margin-right:0.127cm;">19.222</span></a><a id="__RefHeading__1417284_253892949"/><a id="attribute-draw_text-path-allowed"/>draw:text-path-allowed</h2><p class="Text_20_body">The <span class="Attribute">draw:text-path-allowed</span> attribute specifies whether the user interface of a consumer that supports the <span class="Attribute">draw:text-path</span> attribute should allow modification of the value of the <span class="Attribute">draw:text-path</span> attribute. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:text-path-allowed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the value of the <span class="Attribute">draw:text-path</span> attribute should not be modifiable by the user interface.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the value of the <span class="Attribute">draw:text-path</span> attribute should be modifiable by the user interface.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-path-allowed</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:text-path-allowed</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_223draw_text-path-mode"><span style="margin-right:0.127cm;">19.223</span></a><a id="__RefHeading__1417286_253892949"/><a id="attribute-draw_text-path-mode"/>draw:text-path-mode</h2><p class="Text_20_body">The <span class="Attribute">draw:text-path-mode</span> attribute specifies how text is drawn on a path.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:text-path-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">normal</span>: text is drawn along the path without scaling;<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">path</span>: text is fitted to a path;<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">shape</span>: text is fitted to the bounding box of a shape.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">normal</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-path-mode</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:text-path-mode</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">path</span> or <span class="Attribute_20_Value">shape</span>.</p><h2 class="Heading_20_2"><a id="a19_224draw_text-path-same-letter-heights"><span style="margin-right:0.127cm;">19.224</span></a><a id="__RefHeading__1417288_253892949"/><a id="attribute-draw_text-path-same-letter-heights"/>draw:text-path-same-letter-heights</h2><p class="Text_20_body">The <span class="Attribute">draw:text-path-same-letter-heights</span> attribute specifies if all letters in a custom shape have the same height.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:text-path-same-letter-heights</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: letters in a custom shape need not have the same height.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: letters in a custom shape have the same height.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-path-same-letter-heights</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:text-path-same-letter-heights</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_225draw_text-path-scale"><span style="margin-right:0.127cm;">19.225</span></a><a id="__RefHeading__1417290_253892949"/><a id="attribute-draw_text-path-scale"/>draw:text-path-scale</h2><p class="Text_20_body">The <span class="Attribute">draw:text-path-scale</span> attribute specifies the scaling of a text path.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:text-path-scale</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">path</span>: text scaling is determined by the length of the path from the <span class="Attribute">draw:enhanced-path</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">shape</span>: text scaling is determined by the width of a shape.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">path</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-path-scale</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:text-path-scale</span> attribute are <span class="Attribute_20_Value">path</span> or <span class="Attribute_20_Value">shape</span>.</p><h2 class="Heading_20_2"><a id="a19_226draw_text-rotate-angle"><span style="margin-right:0.127cm;">19.226</span></a><a id="__RefHeading__1417292_253892949"/><a id="attribute-draw_text-rotate-angle"/>draw:text-rotate-angle</h2><p class="Text_20_body">The <span class="Attribute">draw:text-rotate-angle</span> attribute specifies the angle by which text within a custom shape is rotated in addition to the rotation included in the shape's <span class="Attribute">draw:transform</span> attribute. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:text-rotate-angle</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:text-rotate-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a19_227draw_text-style-name"><span style="margin-right:0.127cm;">19.227</span></a><a id="__RefHeading__1417294_253892949"/><a id="attribute-draw_text-style-name"/>draw:text-style-name</h2><p class="Text_20_body">The <span class="Attribute">draw:text-style-name</span> attribute specifies a style for formatting of text in a shape.</p><p class="Text_20_body">The value of this attribute is the name of a <span class="Element">&lt;style:style&gt;</span> element with a family value of <span class="Attribute_20_Value">paragraph</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:text-style-name</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:text-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_228draw_transform"><span style="margin-right:0.127cm;">19.228</span></a><a id="__RefHeading__1417296_253892949"/><a id="attribute-draw_transform"/>draw:transform</h2><p class="Text_20_body">The <span class="Attribute">draw:transform</span> attribute specifies a list of transformations that can be applied to a drawing shape. </p><p class="Text_20_body">The value of this attribute is a list of transform definitions, which are applied to the drawing shape in the order in which they are listed. The transform definitions in the list shall be separated by a white space and/or a comma “,” (U+002C, COMMA). Unless otherwise stated, the parameters of the transform definitions are double values (<a href="#datatype-double">18.2</a>) </p><p class="Text_20_body">The defined transforms are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">matrix(</span><span class="Attribute_20_Value_20_Param">&lt;a&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;b&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;c&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;d&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;e&gt;</span><span class="Attribute_20_Value_20_Instance"> </span><span class="Attribute_20_Value_20_Param">&lt;f&gt;</span><span class="Attribute_20_Value_20_Instance">)</span>, specifies a transformation in the form of a transformation matrix of six values. "The values describe a standard 3x2 homogeneous transformation matrix in column-major order, where the right column (<span class="Attribute_20_Value_20_Param">&lt;e&gt;</span>, <span class="Attribute_20_Value_20_Param">&lt;f&gt;</span>) describes the translation. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">rotate(</span><span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span><span class="Attribute_20_Value_20_Fragment">)</span>, specifies a rotation by <span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span> degrees about the origin of the shapes coordinate system.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">scale(</span><span class="Attribute_20_Value_20_Param">&lt;sx&gt;</span><span class="Attribute_20_Value_20_Fragment"> [</span><span class="Attribute_20_Value_20_Param">&lt;sy&gt;</span><span class="Attribute_20_Value_20_Fragment">])</span>, specifies a scale operation by <span class="Attribute_20_Value_20_Param">sx</span> and <span class="Attribute_20_Value_20_Param">sy</span>. If <span class="Attribute_20_Value_20_Param">&lt;sy&gt;</span> is not provided, it is assumed to be equal to <span class="Attribute_20_Value_20_Param">&lt;sx&gt;</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">skewX(&lt;</span><span class="Attribute_20_Value_20_Param">skew-angle&gt;</span><span class="Attribute_20_Value_20_Fragment">)</span>, specifies a skew transformation by <span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span> degrees along the x-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">skewY(</span><span class="Attribute_20_Value_20_Param">&lt;skew-angle&gt;</span><span class="Attribute_20_Value_20_Fragment">)</span>, specifies a skew transformation by <span class="Attribute_20_Value_20_Param">&lt;rotate-angle&gt;</span> degrees along the y-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">translate(</span><span class="Attribute_20_Value_20_Param">&lt;tx&gt;</span><span class="Attribute_20_Value_20_Fragment"> [</span><span class="Attribute_20_Value_20_Param">&lt;ty&gt;</span><span class="Attribute_20_Value_20_Fragment">])</span>, specifies a translation by <span class="Attribute_20_Value_20_Param">tx</span> and <span class="Attribute_20_Value_20_Param">ty,</span> where tx and ty are lengths (<a href="#datatype-length">18.3.18</a>). If <span class="Attribute_20_Value_20_Param">ty</span> is not provided, it is assumed to be zero.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:transform</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:transform</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_229draw_type"><span style="margin-right:0.127cm;">19.229</span></a><a id="__RefHeading__1417298_253892949"/><a id="attribute-draw_type"/>draw:type</h2><h3 class="Heading_20_3"><a id="a19_229_1General"><span style="margin-right:0.127cm;">19.229.1</span></a><a id="__RefHeading__1417300_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">draw:type</span> attribute specifies a drawing type. </p><h3 class="Heading_20_3"><a id="a19_229_2_draw_connector_"><span style="margin-right:0.127cm;">19.229.2</span></a><a id="__RefHeading__1417302_253892949"/><a id="attribute-draw_type_element-draw_connector"/>&lt;draw:connector&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:type</span> attribute specifies the line or series of lines that connect two glue points.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">curve</span>: a curve connector draws a single curved line between the two glue points of connected objects<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">line</span>: a line connector draws one straight line between the two glue points of connected objects<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">lines</span>: a lines connector leaves two connecting objects with straight lines and connects them with a straight (not necessarily perpendicular) line<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">standard</span>: a standard connector leaves two connecting objects with straight lines and connects them with one or more straight perpendicular lines that do not intersect the connected shapes' bounding boxes<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a> element the default value for this attribute is <span class="Attribute_20_Value">standard</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:type</span> attribute is usable with the following element: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:type</span> attribute are <span class="Attribute_20_Value">standard</span>, <span class="Attribute_20_Value">lines</span>, <span class="Attribute_20_Value">line</span> or <span class="Attribute_20_Value">curve</span>.</p><h3 class="Heading_20_3"><a id="a19_229_3_draw_enhanced-geometry_"><span style="margin-right:0.127cm;">19.229.3</span></a><a id="__RefHeading__1417304_253892949"/><a id="attribute-draw_type_element-draw_enhanced-geometry"/>&lt;draw:enhanced-geometry&gt;</h3><p class="Text_20_body">The <span class="Attribute">draw:type</span> attribute specifies the name of a shape type that is rendering engine dependent. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">non-primitive</span>: no shape type is available.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type string: a rendering engine specific name of a shape.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value of this attribute shall not influence the geometry of the shape.</p><p class="Note"><span class="Note_20_Label">Note:</span> The shape type can be used to offer specialized user interfaces for classes of shapes, like for arrows, smileys, etc.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a> element the default value for this attribute is <span class="Attribute_20_Value">non-primitive</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">draw:type</span> attribute is usable with the following element: <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:type</span> attribute are <span class="Attribute_20_Value">non-primitive</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_230draw_value"><span style="margin-right:0.127cm;">19.230</span></a><a id="__RefHeading__1417306_253892949"/><a id="attribute-draw_value"/>draw:value</h2><p class="Text_20_body">The <span class="Attribute">draw:value</span> attribute specifies the value of a runtime parameter specified by a <span class="Attribute">draw:name</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:value</span> attribute is usable with the following element: <span class="Element">&lt;draw:param&gt;</span> <a href="#element-draw_param">10.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_231draw_z-index"><span style="margin-right:0.127cm;">19.231</span></a><a id="__RefHeading__1417308_253892949"/><a id="attribute-draw_z-index"/>draw:z-index</h2><p class="Text_20_body">The <span class="Attribute">draw:z-index</span> attribute defines a rendering order for shapes in a document instance. Shapes are rendered in the order in which they appear in the document in the absence of this attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:z-index</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:z-index</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_232fo_column-count"><span style="margin-right:0.127cm;">19.232</span></a><a id="__RefHeading__1417310_253892949"/><a id="attribute-fo_column-count"/>fo:column-count</h2><p class="Text_20_body">The <span class="Attribute">fo:column-count</span> attribute specifies the number of columns in a section.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:column-count</span> attribute is usable with the following element: <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:column-count</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_233fo_column-gap"><span style="margin-right:0.127cm;">19.233</span></a><a id="__RefHeading__1417312_253892949"/><a id="attribute-fo_column-gap"/>fo:column-gap</h2><p class="Text_20_body">The <span class="Attribute">fo:column-gap</span> attribute specifies the gap between columns for <span class="Element">&lt;style:columns&gt;</span> elements that do not contain individual <span class="Element">&lt;style:column&gt;</span> elements. </p><p class="Note"><span class="Note_20_Label">Note:</span> This attribute has the same name as an <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> property but it is attached to a different element.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:column-gap</span> attribute does not support <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">percentage</span> values. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:column-gap</span> attribute is usable with the following element: <span class="Element">&lt;style:columns&gt;</span> <a href="#element-style_columns">17.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:column-gap</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_234fo_country"><span style="margin-right:0.127cm;">19.234</span></a><a id="__RefHeading__1417314_253892949"/><a id="attribute-fo_country"/>fo:country</h2><h3 class="Heading_20_3"><a id="a19_234_1_text_alphabetical-index-source_"><span style="margin-right:0.127cm;">19.234.1</span></a><a id="__RefHeading__1417316_253892949"/><a id="attribute-fo_country_element-text_alphabetical-index-source"/>&lt;text:alphabetical-index-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:country</span> attribute specifies the country code used for sorting an alphabetical index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:country</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:country</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h3 class="Heading_20_3"><a id="a19_234_2_text_bibliography-configuration_"><span style="margin-right:0.127cm;">19.234.2</span></a><a id="__RefHeading__1417318_253892949"/><a id="attribute-fo_country_element-text_bibliography-configuration"/>&lt;text:bibliography-configuration&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:country</span> attribute specifies the country code used for sorting a bibliographic index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:country</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:country</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a19_235fo_end-indent"><span style="margin-right:0.127cm;">19.235</span></a><a id="__RefHeading__1417320_253892949"/><a id="attribute-fo_end-indent"/>fo:end-indent</h2><p class="Text_20_body">The <span class="Attribute">fo:end-indent</span> attribute specifies the right space of a column. Together with the <span class="Attribute">fo:start-indent</span> attribute of an immediately adjacent and following column, it establishes the gap between the columns. <a href="#attribute-fo_start-indent">19.245</a></p><p class="Text_20_body">See §7.10.8 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:end-indent</span> attribute does not support <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">percentage</span> values. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0cm</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">fo:end-indent</span> attribute is usable with the following element: <span class="Element">&lt;style:column&gt;</span> <a href="#element-style_column">17.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:end-indent</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_236fo_language"><span style="margin-right:0.127cm;">19.236</span></a><a id="__RefHeading__1417322_253892949"/><a id="attribute-fo_language"/>fo:language</h2><h3 class="Heading_20_3"><a id="a19_236_1General"><span style="margin-right:0.127cm;">19.236.1</span></a><a id="__RefHeading__1417324_253892949"/><a id="DDE_LINK21"/>General</h3><p class="Text_20_body">See §7.9.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. Compared to the XSL language attribute, the value range of this attribute is extended to additional parts of ISO 639. </p><p class="Text_20_body">This attribute may be ignored if it is not specified together with a <span class="Attribute">fo:country</span> attribute.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:language</span> attribute does not support <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">none</span> values. </p><h3 class="Heading_20_3"><a id="a19_236_2_text_alphabetical-index-source_"><span style="margin-right:0.127cm;">19.236.2</span></a><a id="__RefHeading__1417326_253892949"/><a id="attribute-fo_language_element-text_alphabetical-index-source"/>&lt;text:alphabetical-index-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:language</span> attribute specifies the language code used for sorting an alphabetical index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:language</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:language</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h3 class="Heading_20_3"><a id="a19_236_3_text_bibliography-configuration_"><span style="margin-right:0.127cm;">19.236.3</span></a><a id="__RefHeading__1417328_253892949"/><a id="attribute-fo_language_element-text_bibliography-configuration"/>&lt;text:bibliography-configuration&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:language</span> attribute specifies the language code used for sorting a bibliographic index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:language</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:language</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h2 class="Heading_20_2"><a id="a19_237fo_margin-left"><span style="margin-right:0.127cm;">19.237</span></a><a id="__RefHeading__1417330_253892949"/><a id="attribute-fo_margin-left"/>fo:margin-left</h2><p class="Text_20_body">See §7.10.3 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:margin-left</span> attribute specifies the left margins for the text lines of a list item. The attribute has the same meaning as the formatting property attribute <span class="Attribute">fo:margin-left</span>. <a href="#property-fo_margin-left">20.200</a> Its value is only considered for paragraphs inside a list item those paragraph styles do not specify a <span class="Attribute">fo:text-indent</span> attribute or a <span class="Attribute">fo:margin-left</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:margin-left</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:margin-left</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_238fo_max-height"><span style="margin-right:0.127cm;">19.238</span></a><a id="__RefHeading__1417332_253892949"/><a id="attribute-fo_max-height"/>fo:max-height</h2><p class="Text_20_body">See §7.14.6 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:max-height</span> attribute specifies the maximum height of a text box when the minimum height has been set using the <span class="Attribute">fo:min-height</span> attribute. When this maximum value is reached, the text box stops increasing in height. The units of measure for this attribute shall match those used for the corresponding <span class="Attribute">fo:min-height</span> attribute.</p><p class="Text_20_body">If the anchor for the text box is in a table cell, a percentage value is relative to the size of the surrounding table cell. If the anchor for the text box is in a text box, a percentage value is relative to the size of the surrounding text box. In other cases, percentage values are relative to the width or height of the page or window.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:max-height</span> attribute does not support the <span class="Attribute_20_Value">none</span> value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:max-height</span> attribute is usable with the following element: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:max-height</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_239fo_max-width"><span style="margin-right:0.127cm;">19.239</span></a><a id="__RefHeading__1417334_253892949"/><a id="attribute-fo_max-width"/>fo:max-width</h2><p class="Text_20_body">See §7.14.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:max-width</span> attribute specifies the maximum width of a text box when the minimum width have been set using the <span class="Attribute">fo:min-width</span> attribute. When this maximum value is reached, the text box stops increasing in width. The units of measure for this attribute shall match those used for the corresponding <span class="Attribute">fo:min-width</span> attribute.</p><p class="Text_20_body">If the anchor for the text box is in a table cell, a percentage value is relative to the size of the surrounding table cell. If the anchor for the text box is in a text box, a percentage value is relative to the size of the surrounding text box. In other cases, percentage values are relative to the width or height of the page or window.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:max-width</span> attribute is usable with the following element: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:max-width</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_240fo_min-height"><span style="margin-right:0.127cm;">19.240</span></a><a id="__RefHeading__1417336_253892949"/><a id="attribute-fo_min-height"/>fo:min-height</h2><p class="Text_20_body">See §7.14.8 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If set, it overrides the height or width of a text box specified by the <span class="Attribute">svg:height</span> attribute of the surrounding <span class="Element">&lt;draw:frame&gt;</span> element. </p><p class="Text_20_body">If the anchor for a text box is in a table cell, a percentage value is relative to the surrounding table box. If the anchor for the text box is in a text box, a percentage value is relative to the surrounding text box. In other cases, percentage values are relative to the height of the page or window.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:min-height</span> attribute is usable with the following element: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:min-height</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_241fo_min-width"><span style="margin-right:0.127cm;">19.241</span></a><a id="__RefHeading__1417338_253892949"/><a id="attribute-fo_min-width"/>fo:min-width</h2><p class="Text_20_body">See §7.14.9 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If set, it overrides the width of a text box specified by the <span class="Attribute">svg:width</span> attribute of the surrounding <span class="Element">&lt;draw:frame&gt;</span> element. </p><p class="Text_20_body">If the anchor for a text box is in a table cell, a percentage value is relative to the surrounding table box. If the anchor for a text box is in a text box, a percentage value is relative to the surrounding text box. In other cases, percentage values are relative to the height of the page or window.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:min-width</span> attribute is usable with the following element: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:min-width</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_242fo_script"><span style="margin-right:0.127cm;">19.242</span></a><a id="__RefHeading__1417340_253892949"/><a id="attribute-fo_script"/>fo:script</h2><h3 class="Heading_20_3"><a id="a19_242_1General"><span style="margin-right:0.127cm;">19.242.1</span></a><a id="__RefHeading__1417342_253892949"/>General</h3><p class="Text_20_body">See §7.9.3 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">It may be ignored if it is not specified together with a <span class="Attribute">fo:language</span> attribute.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:script</span> attribute does not support <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">none</span> values. </p><h3 class="Heading_20_3"><a id="a19_242_2_text_alphabetical-index-source_"><span style="margin-right:0.127cm;">19.242.2</span></a><a id="__RefHeading__1417344_253892949"/><a id="attribute-fo_script_element-text_alphabetical-index-source"/>&lt;text:alphabetical-index-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:script</span> attribute specifies the script code used for sorting an alphabetical index. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:script</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:script</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h3 class="Heading_20_3"><a id="a19_242_3_text_bibliography-configuration_"><span style="margin-right:0.127cm;">19.242.3</span></a><a id="__RefHeading__1417346_253892949"/><a id="attribute-fo_script_element-text_bibliography-configuration"/>&lt;text:bibliography-configuration&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:script</span> attribute specifies the script code used for sorting a bibliographic index. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:script</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:script</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h2 class="Heading_20_2"><a id="a19_243fo_space-after"><span style="margin-right:0.127cm;">19.243</span></a><a id="__RefHeading__1417348_253892949"/><a id="attribute-fo_space-after"/>fo:space-after</h2><p class="Text_20_body">See §7.10.6 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0cm</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">fo:space-after</span> attribute is usable with the following element: <span class="Element">&lt;style:column&gt;</span> <a href="#element-style_column">17.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:space-after</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_244fo_space-before"><span style="margin-right:0.127cm;">19.244</span></a><a id="__RefHeading__1417350_253892949"/><a id="attribute-fo_space-before"/>fo:space-before</h2><p class="Text_20_body">See §7.10.5 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0cm</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">fo:space-before</span> attribute is usable with the following element: <span class="Element">&lt;style:column&gt;</span> <a href="#element-style_column">17.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:space-before</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_245fo_start-indent"><span style="margin-right:0.127cm;">19.245</span></a><a id="__RefHeading__1417352_253892949"/><a id="attribute-fo_start-indent"/>fo:start-indent</h2><p class="Text_20_body">See §7.10.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0cm</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">fo:start-indent</span> attribute is usable with the following element: <span class="Element">&lt;style:column&gt;</span> <a href="#element-style_column">17.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:start-indent</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_246fo_text-indent"><span style="margin-right:0.127cm;">19.246</span></a><a id="__RefHeading__1417354_253892949"/><a id="attribute-fo_text-indent"/>fo:text-indent</h2><p class="Text_20_body">The <span class="Attribute">fo:text-indent</span> attribute specifies the indent for the text lines of a list item. The attribute has the same meaning as the formatting property attribute <span class="Attribute">fo:text-indent</span>. See <a href="#property-fo_text-indent">20.218</a> It is used for paragraphs inside list items whose paragraph styles do not specify an <span class="Attribute">fo:text-indent</span> or <span class="Attribute">fo:margin-left</span> attribute. </p><p class="Text_20_body">The value <span class="Attribute">fo:text-indent</span> + <span class="Attribute">fo:margin-left</span> specifies the indent of the first text line of the list item. This position is also the alignment position for the list label, because the value of <span class="Attribute">text:min-label-width</span> is treated as 0. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-indent</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:text-indent</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_247form_allow-deletes"><span style="margin-right:0.127cm;">19.247</span></a><a id="__RefHeading__1417356_253892949"/><a id="attribute-form_allow-deletes"/>form:allow-deletes</h2><p class="Text_20_body">The <span class="Attribute">form:allow-deletes</span> attribute specifies whether data records can be deleted by a form. It applies only if a form is data-aware.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:allow-deletes</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: records cannot be deleted by a form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: records can be deleted by a form.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:allow-deletes</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:allow-deletes</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_248form_allow-inserts"><span style="margin-right:0.127cm;">19.248</span></a><a id="__RefHeading__1417358_253892949"/><a id="attribute-form_allow-inserts"/>form:allow-inserts</h2><p class="Text_20_body">The <span class="Attribute">form:allow-inserts</span> attribute specifies whether new data records can be inserted by a form. It applies only if the form is data-aware.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:allow-inserts</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: records cannot be inserted by a form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: records can be inserted by a form.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:allow-inserts</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:allow-inserts</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_249form_allow-updates"><span style="margin-right:0.127cm;">19.249</span></a><a id="__RefHeading__1417360_253892949"/><a id="attribute-form_allow-updates"/>form:allow-updates</h2><p class="Text_20_body">The <span class="Attribute">form:allow-updates</span> attribute specifies whether data records in the form can be updated. It applies only if the form is data-aware.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:allow-updates</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: records cannot be updated by a form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: records can be updated by a form.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:allow-updates</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:allow-updates</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_250form_apply-design-mode"><span style="margin-right:0.127cm;">19.250</span></a><a id="__RefHeading__1417362_253892949"/><a id="attribute-form_apply-design-mode"/>form:apply-design-mode</h2><p class="Text_20_body">The <span class="Attribute">form:apply-design-mode</span> attribute specifies whether forms are presented in editable or non-editable state.</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: forms in document presented in completed state <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: forms in document presented in editable state <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:apply-design-mode</span> attribute is usable with the following element: <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:apply-design-mode</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_251form_apply-filter"><span style="margin-right:0.127cm;">19.251</span></a><a id="__RefHeading__1417364_253892949"/><a id="attribute-form_apply-filter"/>form:apply-filter</h2><p class="Text_20_body">The <span class="Attribute">form:apply-filter</span> attribute specifies whether the filter clause specified by the <span class="Attribute">form:filter</span> attribute is applied to the SQL command constituting the form's result set. <a href="#attribute-form_filter">19.273</a></p><p class="Text_20_body">The defined values for the <span class="Attribute">form:apply-filter</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the filter clause specified by the <span class="Attribute">form:filter</span> attribute is not applied to the SQL command constituting the form's result set.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the filter clause specified by the <span class="Attribute">form:filter</span> attribute is applied to the SQL command constituting the form's result set.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:apply-filter</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:apply-filter</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_252form_auto-complete"><span style="margin-right:0.127cm;">19.252</span></a><a id="__RefHeading__1417366_253892949"/><a id="attribute-form_auto-complete"/>form:auto-complete</h2><p class="Text_20_body">The <span class="Attribute">form:auto-complete</span> attribute specifies whether, when the user enters text in the combobox that matches the beginning of a list item in the combobox, the consumer completes the text with the matched item. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:auto-complete</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: completion of text is not enabled.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: completion of text is enabled.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:auto-complete</span> attribute is usable with the following element: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:auto-complete</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_253form_automatic-focus"><span style="margin-right:0.127cm;">19.253</span></a><a id="__RefHeading__1417368_253892949"/><a id="attribute-form_automatic-focus"/>form:automatic-focus</h2><p class="Text_20_body">The <span class="Attribute">form:automatic-focus</span> attribute specifies whether the consumer loading the document should set the focus to a form control.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:automatic-focus</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the consumer does not set the focus to a form control, but to the document view. In this case, the user can start editing the document content. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the consumer sets the focus to a form control after loading the document. In this case, the user can immediately start editing the form control content. <span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> Which form control is chosen to be focused is not defined. It may be the first control in the logical order defined by the <span class="Element">&lt;</span><span class="Element">office:forms</span><span class="Element">&gt;</span> elements and its sub elements, it may be the top-most form control of the document view, or any other control. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:automatic-focus</span> attribute is usable with the following element: <span class="Element">&lt;office:forms&gt;</span> <a href="#element-office_forms">13.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:automatic-focus</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_254form_bound-column"><span style="margin-right:0.127cm;">19.254</span></a><a id="__RefHeading__1417370_253892949"/><a id="attribute-form_bound-column"/>form:bound-column</h2><p class="Text_20_body">The <span class="Attribute">form:bound-column</span> attribute specifies the column values of the list source result set that are used to fill the data field values. </p><p class="Text_20_body">The <span class="Attribute">form:list-source</span> and <span class="Attribute">form:list-source-type</span> attributes together define an SQL command to execute against the database to which the control's form is bound. The result set of the execution of this SQL command is the list source result set. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:bound-column</span> attribute is usable with the following element: <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:bound-column</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_255form_button-type"><span style="margin-right:0.127cm;">19.255</span></a><a id="__RefHeading__1417372_253892949"/><a id="attribute-form_button-type"/>form:button-type</h2><p class="Text_20_body">The <span class="Attribute">form:button-type</span> attribute specifies the type of a button. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:button-type</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">push</span>: pressing the button does not perform any action by default. A user can add scripts to a button and the script will run when the button is pressed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">reset</span>: pressing the button resets every control in the form to its default value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">submit</span>: pressing the button submits the form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">url</span>: pressing the button loads the IRI that is specified in the <span class="Attribute">xlink:href</span> attribute.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">push</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:button-type</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a> and <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:button-type</span> attribute are <span class="Attribute_20_Value">submit</span>, <span class="Attribute_20_Value">reset</span>, <span class="Attribute_20_Value">push</span> or <span class="Attribute_20_Value">url</span>.</p><h2 class="Heading_20_2"><a id="a19_256form_command"><span style="margin-right:0.127cm;">19.256</span></a><a id="__RefHeading__1417374_253892949"/><a id="attribute-form_command"/>form:command</h2><p class="Text_20_body">The <span class="Attribute">form:command</span> attribute specifies a command to execute on a data source.</p><p class="Text_20_body">The value is interpreted differently, depending to the value of the <span class="Attribute">form:command-type</span> attribute of the form. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:command</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:command</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_257form_command-type"><span style="margin-right:0.127cm;">19.257</span></a><a id="__RefHeading__1417376_253892949"/><a id="attribute-form_command-type"/>form:command-type</h2><p class="Text_20_body">The <span class="Attribute">form:command-type</span> attribute specifies the type of command to execute on a data source. </p><p class="Text_20_body">The defined values of the <span class="Attribute">form:command-type</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">command</span>: the command contains an SQL statement. The form executes the SQL statement.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">query</span>: the command contains the name of query. The form retrieves the query and executes its SQL statement.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">table</span>: the command contains a table name. The form executes an SQL statement that retrieves all of the data in the table.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note: </span>The attribute value <span class="Attribute_20_Value">query</span> is only meaningful if the <span class="Attribute">form:datasource</span> attribute specifies a data source name or a database front-end document. .</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">command</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:command-type</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:command-type</span> attribute are <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">query</span> or <span class="Attribute_20_Value">command</span>.</p><h2 class="Heading_20_2"><a id="a19_258form_control-implementation"><span style="margin-right:0.127cm;">19.258</span></a><a id="__RefHeading__1417378_253892949"/><a id="attribute-form_control-implementation"/>form:control-implementation</h2><p class="Text_20_body">The <span class="Attribute">form:control-implementation</span> attribute specifies a \rendition or implementation of a control that should be created. If the consumer supports the form element this attribute is used with, but does not support the specific concrete rendition or implementation, the consumer shall ignore the <span class="Attribute">form:control-implementation</span> attribute and use its own rendition of the form element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:control-implementation</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:control-implementation</span> attribute has the data type <span class="Datatype">namespacedToken</span> <a href="#datatype-namespacedToken">18.3.19</a>.</p><h2 class="Heading_20_2"><a id="a19_259form_convert-empty-to-null"><span style="margin-right:0.127cm;">19.259</span></a><a id="__RefHeading__1417380_253892949"/><a id="attribute-form_convert-empty-to-null"/>form:convert-empty-to-null</h2><p class="Text_20_body">The <span class="Attribute">form:convert-empty-to-null</span> attribute specifies whether empty current values are treated as NULL.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:convert-empty-to-null</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: an empty string in the control is treated as an empty string.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: an empty string in the control is treated as a NULL value. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:convert-empty-to-null</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:convert-empty-to-null</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_260form_current-selected"><span style="margin-right:0.127cm;">19.260</span></a><a id="__RefHeading__1417382_253892949"/><a id="attribute-form_current-selected"/>form:current-selected</h2><p class="Text_20_body">The <span class="Attribute">form:current-selected</span> attribute specifies the state of a radio button or option element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:current-selected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: radio button or option element is not selected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: radio button or option element is selected. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:current-selected</span> attribute is usable with the following elements: <span class="Element">&lt;form:option&gt;</span> <a href="#element-form_option">13.5.14</a> and <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:current-selected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_261form_current-state"><span style="margin-right:0.127cm;">19.261</span></a><a id="__RefHeading__1417384_253892949"/><a id="attribute-form_current-state"/>form:current-state</h2><p class="Text_20_body">The <span class="Attribute">form:current-state</span> attribute specifies the state of a check box control.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:current-state</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">checked</span>: The check box is checked. The value of the control is submitted with the form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unchecked</span>: The check box is not checked.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unknown</span>: This value is available only if the <span class="Attribute">form:is-tristate</span> attribute for a <span class="Element">&lt;form:checkbox&gt;</span> element is true. It indicates that a check box control is neither checked nor unchecked.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:current-state</span> attribute is usable with the following element: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:current-state</span> attribute are <span class="Attribute_20_Value">unchecked</span>, <span class="Attribute_20_Value">checked</span> or <span class="Attribute_20_Value">unknown</span>.</p><h2 class="Heading_20_2"><a id="a19_262form_current-value"><span style="margin-right:0.127cm;">19.262</span></a><a id="__RefHeading__1417386_253892949"/><a id="attribute-form_current-value"/>form:current-value</h2><p class="Text_20_body">The <span class="Attribute">form:current-value</span> attribute specifies the current status of an input control. It overrides the value of a <span class="Attribute">form:value</span> attribute, if one is present.</p><p class="Text_20_body">The defined value types for <span class="Attribute">form:current-value</span> attribute values are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>: <span class="Datatype">string</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>: <span class="Datatype">date</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>: <span class="Datatype">string</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>: <span class="Datatype">string</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>: <span class="Datatype">double</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>: <span class="Datatype">string</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>: <span class="Datatype">string</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>: <span class="Datatype">time</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:current-value</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:current-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_263form_data-field"><span style="margin-right:0.127cm;">19.263</span></a><a id="__RefHeading__1417388_253892949"/><a id="attribute-form_data-field"/>form:data-field</h2><p class="Text_20_body">The <span class="Attribute">form:data-field</span> attribute specifies the name of a column in the result set defined by a (data-aware) form. A control interchanges content with its column when: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>the current row of a form changes, the control is initialized with the value from its column. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>the user changes the content of a control, this changed value is written back to its column.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> consumers may delay this write-back, for instance until the control loses the focus, instead of updating the column value with every change in the control. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:data-field</span> attribute is usable with the following elements: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:data-field</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_264form_datasource"><span style="margin-right:0.127cm;">19.264</span></a><a id="__RefHeading__1417390_253892949"/><a id="attribute-form_datasource"/>form:datasource</h2><p class="Text_20_body">The <span class="Attribute">form:datasource</span> attribute specifies the name of a data source to use for a form.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:datasource</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>An IRI specifying a database connection.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A data source name that a consumer can use to establish a database connection.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The IRI of an OpenDocument database front-end document.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note</span>: The data source name is a programmatic name for a database front end document which allows it to reference data sources regardless of their real location. The mapping from data source names to specific instances of database front end documents is implementation-defined. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:datasource</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:datasource</span> attribute are a value of type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_265form_default-button"><span style="margin-right:0.127cm;">19.265</span></a><a id="__RefHeading__1417392_253892949"/><a id="attribute-form_default-button"/>form:default-button</h2><p class="Text_20_body">The <span class="Attribute">form:default-button</span> attribute specifies whether a button is the default button on a form. If a user clicks the default button or presses Return while an input control is focused, the consumer takes the same action.</p><p class="Text_20_body">If multiple buttons with <span class="Attribute">form:default-button</span> attributes with values of true are present in a form, it is implementation-defined which button is the default for the form.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:default-button</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: button is not the default button for a form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: button is the default button for a form. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:default-button</span> attribute is usable with the following element: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:default-button</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_266form_delay-for-repeat"><span style="margin-right:0.127cm;">19.266</span></a><a id="__RefHeading__1417394_253892949"/><a id="attribute-form_delay-for-repeat"/>form:delay-for-repeat</h2><p class="Text_20_body">The <span class="Attribute">form:delay-for-repeat</span> attribute specifies a time-out to be used before a pressed mouse button results in repeating an action. The <span class="Attribute">form:delay-for-repeat</span> attribute is ignored unless a <span class="Attribute">form:repeat</span> attribute is present, and evaluates to <span class="Attribute_20_Value">true</span>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">PT0.050S</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:delay-for-repeat</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:delay-for-repeat</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_267form_detail-fields"><span style="margin-right:0.127cm;">19.267</span></a><a id="__RefHeading__1417396_253892949"/><a id="attribute-form_detail-fields"/>form:detail-fields</h2><p class="Text_20_body">The <span class="Attribute">form:detail-fields</span> attribute specifies the names of the columns in contained forms that are related to columns in the containing form. The columns are used as parameters in the command for the contained form to retrieve the details from its containing form. </p><p class="Text_20_body">This attribute contains a comma “,” (U+002C, COMMA) separated list of field names.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:detail-fields</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:detail-fields</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_268form_disabled"><span style="margin-right:0.127cm;">19.268</span></a><a id="__RefHeading__1417398_253892949"/><a id="attribute-form_disabled"/>form:disabled</h2><p class="Text_20_body">The <span class="Attribute">form:disabled</span> attribute specifies whether a control can accept user input. </p><p class="Text_20_body">Controls that are disabled are not included in the tabbing navigation sequence and cannot be focused.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:disabled</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a control cannot accept user input.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a control can accept user input. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:disabled</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:disabled</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_269form_dropdown"><span style="margin-right:0.127cm;">19.269</span></a><a id="__RefHeading__1417400_253892949"/><a id="attribute-form_dropdown"/>form:dropdown</h2><p class="Text_20_body">The <span class="Attribute">form:dropdown</span> attribute specifies whether a list in a <span class="Element">&lt;form:combobox&gt;</span> or <span class="Element">&lt;form:listbox&gt;</span> element is always visible or is only visible when the user clicks the drop-down button. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:dropdown</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: list is visible only when a user selects a drop-down button.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: list is always visible. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:dropdown</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a> and <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:dropdown</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_270form_echo-char"><span style="margin-right:0.127cm;">19.270</span></a><a id="__RefHeading__1417402_253892949"/><a id="attribute-form_echo-char"/>form:echo-char</h2><p class="Text_20_body">The <span class="Attribute">form:echo-char</span> attribute specifies the character that a form uses to mask text that a user inputs in a password control.</p><p class="Default_20_Value_borderStart">The default value for this attribute is "*" (U+002A, ASTERISK).</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:echo-char</span> attribute is usable with the following element: <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:echo-char</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a19_271form_enctype"><span style="margin-right:0.127cm;">19.271</span></a><a id="__RefHeading__1417404_253892949"/><a id="attribute-form_enctype"/>form:enctype</h2><p class="Text_20_body">The <span class="Attribute">form:enctype</span> attribute, when the value of the <span class="Attribute">form:method</span> attribute is <span class="Attribute_20_Value">post</span>, specifies the content type used to submit the form to the server.  Other MIME types may be acceptable. See §17.3.4 of <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">application/x-www-form-urlencoded</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:enctype</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:enctype</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_272form_escape-processing"><span style="margin-right:0.127cm;">19.272</span></a><a id="__RefHeading__1417406_253892949"/><a id="attribute-form_escape-processing"/>form:escape-processing</h2><p class="Text_20_body">The <span class="Attribute">form:escape-processing</span> attribute, when the value of the <span class="Attribute">form:command-type</span> attribute is <span class="Attribute_20_Value">command</span>, specifies whether the consumer processes the command before passing it to a database driver.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:escape-processing</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumer does not process commands before passing them to a database driver.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumer does process commands before passing them to a database driver. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:escape-processing</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:escape-processing</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_273form_filter"><span style="margin-right:0.127cm;">19.273</span></a><a id="__RefHeading__1417408_253892949"/><a id="attribute-form_filter"/>form:filter</h2><p class="Text_20_body">The <span class="Attribute">form:filter</span> attribute specifies a filter for the SQL clause determined by the <span class="Attribute">form:command-type</span> and <span class="Attribute">form:command</span> attributes. If that SQL statement contains a filter (WHERE clause), the filter specified by the attribute value is conjunctively added to the existing filter.</p><p class="Text_20_body">The filter is only applied if the <span class="Attribute">form:apply-filter</span> attribute has the value true. <a href="#attribute-form_apply-filter">19.251</a>.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> This allows OpenDocument consumers to toggle a filter on and off without losing the content of the <span class="Attribute">form:filter</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:filter</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:filter</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_274form_focus-on-click"><span style="margin-right:0.127cm;">19.274</span></a><a id="__RefHeading__1417410_253892949"/><a id="attribute-form_focus-on-click"/>form:focus-on-click</h2><p class="Text_20_body">The <span class="Attribute">form:focus-on-click</span> attribute specifies if a <span class="Element">&lt;form:button&gt;</span> element is given the focus in a form when the form button control for that element is operated.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:focus-on-click</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: element not given focus.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: element given focus.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:focus-on-click</span> attribute is usable with the following element: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:focus-on-click</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_275form_for"><span style="margin-right:0.127cm;">19.275</span></a><a id="__RefHeading__1417412_253892949"/><a id="attribute-form_for"/>form:for</h2><p class="Text_20_body">The <span class="Attribute">form:for</span> attribute specifies a comma “,” (U+002C, COMMA) separated list of <span class="Attribute">xml:id</span>s of control elements that are the targets of the elements where this attribute appears. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:for</span> attribute is usable with the following elements: <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a> and <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:for</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_276form_id__deprecated_"><span style="margin-right:0.127cm;">19.276</span></a><a id="__RefHeading__1417414_253892949"/><a id="attribute-form_id"/>form:id (deprecated) </h2><p class="Text_20_body">The <span class="Attribute">form:id</span> attribute specifies an identifier for a control element.</p><p class="Text_20_body">OpenDocument consumers shall ignore a <span class="Attribute">form:id</span> attribute if it occurs on an element with an <span class="Attribute">xml:id</span> attribute value. </p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">form:id</span> attributes for elements in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body"> The value of a <span class="Attribute">form:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same element. </p><p class="Text_20_body">The <span class="Attribute">form:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:id</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_277form_ignore-result"><span style="margin-right:0.127cm;">19.277</span></a><a id="__RefHeading__1417416_253892949"/><a id="attribute-form_ignore-result"/>form:ignore-result</h2><p class="Text_20_body">The <span class="Attribute">form:ignore-result</span> attribute specifies whether to discard all results that are retrieved from an underlying data source. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:ignore-result</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data from query of data source not discarded.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data from query of data source is discarded. Only new data can be inserted into a data source.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:ignore-result</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:ignore-result</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_278form_image-align"><span style="margin-right:0.127cm;">19.278</span></a><a id="__RefHeading__1417418_253892949"/><a id="attribute-form_image-align"/>form:image-align</h2><p class="Text_20_body">The <span class="Attribute">form:image-align</span> attribute specifies which border (<span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">end</span>) or axis (<span class="Attribute_20_Value">center</span>) of an image and a text are to be aligned.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:image-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: image and text are centered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">end</span>: image and text are aligned on the end of the image.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">start</span>: image and text are aligned on the start of the image.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If a <span class="Attribute">form:image-align</span> attribute is not present, it is assumed to be <span class="Attribute_20_Value">center</span>. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">center</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:image-align</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a> and <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:image-align</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">end</span>.</p><h2 class="Heading_20_2"><a id="a19_279form_image-data"><span style="margin-right:0.127cm;">19.279</span></a><a id="__RefHeading__1417420_253892949"/><a id="attribute-form_image-data"/>form:image-data</h2><p class="Text_20_body">The <span class="Attribute">form:image-data</span> attribute specifies the location of a file containing image data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:image-data</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a> and <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:image-data</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h2 class="Heading_20_2"><a id="a19_280form_image-position"><span style="margin-right:0.127cm;">19.280</span></a><a id="__RefHeading__1417422_253892949"/><a id="attribute-form_image-position"/>form:image-position</h2><p class="Text_20_body">If the <span class="Attribute">form:image-position</span> attribute specifies the location of an image relative to the text of a control. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:image-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: image is placed below the text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: image centered relative to the text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">end</span>: image is placed after the text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">start</span>: image is placed before the text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: image is placed above the text.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">center</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:image-position</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a> and <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:image-position</span> attribute are <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">end</span>, <span class="Attribute_20_Value">top</span> or <span class="Attribute_20_Value">bottom</span>.</p><h2 class="Heading_20_2"><a id="a19_281form_is-tristate"><span style="margin-right:0.127cm;">19.281</span></a><a id="__RefHeading__1417424_253892949"/><a id="attribute-form_is-tristate"/>form:is-tristate</h2><p class="Text_20_body">The <span class="Attribute">form:is-tristate</span> attribute specifies a check box can have the values of <span class="Attribute_20_Value">checked</span>, <span class="Attribute_20_Value">unchecked</span> and <span class="Attribute_20_Value">unknown</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:is-tristate</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a check box can only have the values of checked and unchecked.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a check box can have the values of checked, unchecked and unknown. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:is-tristate</span> attribute is usable with the following element: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:is-tristate</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_282form_label"><span style="margin-right:0.127cm;">19.282</span></a><a id="__RefHeading__1417426_253892949"/><a id="attribute-form_label"/>form:label</h2><p class="Text_20_body">The <span class="Attribute">form:label</span> attribute specifies the text for a control.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:label</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:item&gt;</span> <a href="#element-form_item">13.5.12</a>, <span class="Element">&lt;form:option&gt;</span> <a href="#element-form_option">13.5.14</a> and <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:label</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_283form_linked-cell"><span style="margin-right:0.127cm;">19.283</span></a><a id="__RefHeading__1417428_253892949"/><a id="attribute-form_linked-cell"/>form:linked-cell</h2><p class="Text_20_body">The <span class="Attribute">form:linked-cell</span> attribute specifies a table cell to which the form control content should be linked. Linking means that the cell value and control content are equal at all times.</p><p class="Text_20_body">The table cell to link the control to can be specified as a <span class="Keyword">cellAddress</span>, or as a named cell range. In the latter case, if the named range contains more than one cell, the cell in the first row and first column of the range is linked to the form control.</p><p class="Text_20_body">If the attribute value matches the name of a named range as well as a cell address, it is interpreted as the name of a named range. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:linked-cell</span> attribute is usable with the following elements: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:linked-cell</span> attribute are a value of type <span class="Datatype">cellAddress</span> <a href="#datatype-cellAddress">18.3.4</a> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_284form_list-linkage-type"><span style="margin-right:0.127cm;">19.284</span></a><a id="__RefHeading__1417430_253892949"/><a id="attribute-form_list-linkage-type"/>form:list-linkage-type</h2><p class="Text_20_body">The <span class="Attribute">form:list-linkage-type</span> attribute specifies how a control defined by a <span class="Element">&lt;form:listbox&gt;</span> elements interacts with a linked table cell.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:list-linkage-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">selection</span>: The text selected in the control is propagated to its linked cell. If text is entered into a cell linked to a <span class="Element">&lt;form:listbox&gt;</span> element, the list item whose label matches the cell text is selected, or all items are deselected if no such item exists.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">selection-indices</span>: If a list item is selected in the control, its index value on a 1-based index is propagated to its its linked cell. If the value in the linked cell changes, the control should select the list item with the index described by the cell value, or deselect all items if the cell value cannot be interpreted as integer value, or does not specify a valid list index item.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:list-linkage-type</span> attribute is usable with the following element: <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:list-linkage-type</span> attribute are <span class="Attribute_20_Value">selection</span> or <span class="Attribute_20_Value">selection-indices</span>.</p><h2 class="Heading_20_2"><a id="a19_285form_list-source"><span style="margin-right:0.127cm;">19.285</span></a><a id="__RefHeading__1417432_253892949"/><a id="attribute-form_list-source"/>form:list-source</h2><p class="Text_20_body">The <span class="Attribute">form:list-source</span> attribute specifies a source for the list entries in a list or combo box.</p><p class="Text_20_body">Obtaining those list entries is may be a multi-step process. The process depends upon the value of the <span class="Attribute">form:list-source-type</span> attribute on the same element.</p><p class="Text_20_body">If the <span class="Attribute">form:list-source-type</span> attribute has the value <span class="Attribute_20_Value">value-list</span>, the content of the <span class="Attribute">form:list-source</span> attribute is ignored.</p><p class="Text_20_body">In all other cases, the content of the <span class="Attribute">form:list-source</span> attribute is resolved relative to a database connection or database front-end document. The <span class="Element">&lt;form:form&gt;</span> element containing the control defines this database connection or document by its <span class="Attribute">form:datasource</span> attribute.</p><p class="Text_20_body">For retrieving the list entries depending on the <span class="Attribute">form:list-source-type</span> attribute, the following algorithms are to be used: </p><p class="Text_20_body">If the <span class="Attribute">form:list-source-type</span> attribute has the value <span class="Attribute_20_Value">table-fields</span>, the <span class="Attribute">form:list-source</span> attribute specifies the name of a database table. The names of the columns of this table, in the order as returned by the database driver, are used as list entries.</p><p class="Text_20_body">For all other values of <span class="Attribute">form:list-source-type</span>, the value of the <span class="Attribute">form:list-source</span> attribute is used to create a result set. For this, the first step is to transform the value of the <span class="Attribute">form:list-source</span> attribute into an SQL command as follows: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sql</span>, <span class="Attribute_20_Value">sql-pass-through</span>: The SQL command is the content of the <span class="Attribute">form:list-source</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">query</span>: The <span class="Attribute">form:list-source</span> attribute specifies the name of a query object in the database, whose underlying SQL command is to be used. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">table</span>: The <span class="Attribute">form:list-source</span> attribute specifies the name of a database table, and the SQL command is the default SQL command to select all data from that table. This is "SELECT * FROM &lt;table_name&gt;", but consumers may find it necessary to add escape characters to a table name, if required by the database driver.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">In a next step, the obtained SQL command is executed against the database. If the <span class="Attribute">form:list-source-type</span> attribute has the value <span class="Attribute_20_Value">sql-pass-through</span> or <span class="Attribute_20_Value">query</span>, and if the <span class="Attribute">db:escape-processing</span> attribute of the referred query has the value <span class="Attribute_20_Value">false</span>, then the SQL command shall be passed directly to the database driver, without being interpreted and modified or normalized by the consumer.</p><p class="Text_20_body">This execution produces a two-dimensional homogeneous result set, whose first-column-values form the entry list to be used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:list-source</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a> and <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:list-source</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_286form_list-source-type"><span style="margin-right:0.127cm;">19.286</span></a><a id="__RefHeading__1417434_253892949"/><a id="attribute-form_list-source-type"/>form:list-source-type</h2><p class="Text_20_body">The <span class="Attribute">form:list-source-type</span> attribute specifies how to populate the entry list in a combo box or list box control.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:list-source-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">query</span>: evaluated against the database front-end document or database connection defined by the <span class="Element">&lt;form:form&gt;</span> element which the control belongs to. The <span class="Attribute">form:list-source</span> attribute defines that evaluation. <a href="#attribute-form_list-source">19.285</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sql</span>: evaluated against the database front-end document or database connection defined by the <span class="Element">&lt;form:form&gt;</span> element which the control belongs to. The <span class="Attribute">form:list-source</span> attribute defines that evaluation. <a href="#attribute-form_list-source">19.285</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sql-pass-through</span>: evaluated against the database front-end document or database connection defined by the <span class="Element">&lt;form:form&gt;</span> element which the control belongs to. The <span class="Attribute">form:list-source</span> attribute defines that evaluation. <a href="#attribute-form_list-source">19.285</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">table</span>: evaluated against the database front-end document or database connection defined by the <span class="Element">&lt;form:form&gt;</span> element which the control belongs to. The <span class="Attribute">form:list-source</span> attribute defines that evaluation. <a href="#attribute-form_list-source">19.285</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">table-fields</span>: evaluated against the database front-end document or database connection defined by the <span class="Element">&lt;form:form&gt;</span> element which the control belongs to. The <span class="Attribute">form:list-source</span> attribute defines that evaluation. <a href="#attribute-form_list-source">19.285</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value-list</span>: entry list populated by values specified by the <span class="Attribute">form:value</span> attributes of <span class="Element">&lt;form:option&gt;</span> child elements. This value is applicable to list boxes only. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:list-source-type</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a> and <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:list-source-type</span> attribute are <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">query</span>, <span class="Attribute_20_Value">sql</span>, <span class="Attribute_20_Value">sql-pass-through</span>, <span class="Attribute_20_Value">value-list</span> or <span class="Attribute_20_Value">table-fields</span>.</p><h2 class="Heading_20_2"><a id="a19_287form_master-fields"><span style="margin-right:0.127cm;">19.287</span></a><a id="__RefHeading__1417436_253892949"/><a id="attribute-form_master-fields"/>form:master-fields</h2><p class="Text_20_body">The <span class="Attribute">form:master-fields</span> attribute specifies the names of the columns in the result set represented by a parent form. Each time the parent form changes the current row, the nested form queries the database again based on the values of the master fields. </p><p class="Text_20_body">The attribute contains a comma “,” (U+002C, COMMA) separated list of field names.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:master-fields</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:master-fields</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_288form_max-length"><span style="margin-right:0.127cm;">19.288</span></a><a id="__RefHeading__1417438_253892949"/><a id="attribute-form_max-length"/>form:max-length</h2><p class="Text_20_body">The <span class="Attribute">form:max-length</span> attribute specifies the maximum number of characters that a user can enter in an input control. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:max-length</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:max-length</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_289form_max-value"><span style="margin-right:0.127cm;">19.289</span></a><a id="__RefHeading__1417440_253892949"/><a id="attribute-form_max-value"/>form:max-value</h2><h3 class="Heading_20_3"><a id="a19_289_1General"><span style="margin-right:0.127cm;">19.289.1</span></a><a id="__RefHeading__1718308_1219268628"/>General</h3><p class="Text_20_body">The <span class="Attribute">form:max-value</span> attribute specifies the maximum value that a user can enter.</p><h3 class="Heading_20_3"><a id="a19_289_2_form_date_"><span style="margin-right:0.127cm;">19.289.2</span></a><a id="__RefHeading__1718310_1219268628"/><a id="attribute-form_max-value_element-form_date"/>&lt;form:date&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:max-value</span> attribute is <span class="Datatype">date</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:max-value</span> attribute is usable with the following element: <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:max-value</span> attribute has the data type <span class="Datatype">date</span> <a href="#datatype-date">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_289_3_form_formatted-text_"><span style="margin-right:0.127cm;">19.289.3</span></a><a id="__RefHeading__1718312_1219268628"/><a id="attribute-form_max-value_element-form_formatted-text"/>&lt;form:formatted-text&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:max-value</span> attribute is <span class="Datatype">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:max-value</span> attribute is usable with the following element: <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:max-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_289_4_form_number__and__form_value-range_"><span style="margin-right:0.127cm;">19.289.4</span></a><a id="__RefHeading__1718314_1219268628"/><a id="attribute-form_max-value_element-form_value-range"/><a id="attribute-form_max-value_element-form_number"/>&lt;form:number&gt; and &lt;form:value-range&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:max-value</span> attribute is <span class="Datatype">double</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:max-value</span> attribute is usable with the following elements: <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:max-value</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_289_5_form_time_"><span style="margin-right:0.127cm;">19.289.5</span></a><a id="__RefHeading__1718316_1219268628"/><a id="attribute-form_max-value_element-form_time"/>&lt;form:time&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:max-value</span> attribute is <span class="Datatype">time</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:max-value</span> attribute is usable with the following element: <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:max-value</span> attribute has the data type <span class="Datatype">time</span> <a href="#datatype-time">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_290form_min-value"><span style="margin-right:0.127cm;">19.290</span></a><a id="__RefHeading__1417442_253892949"/><a id="attribute-form_min-value"/>form:min-value</h2><h3 class="Heading_20_3"><a id="a19_290_1General"><span style="margin-right:0.127cm;">19.290.1</span></a><a id="__RefHeading__1718318_1219268628"/>General</h3><p class="Text_20_body">The <span class="Attribute">form:min-value</span> attribute specifies the minimum value that a user can enter.</p><h3 class="Heading_20_3"><a id="a19_290_2_form_date_"><span style="margin-right:0.127cm;">19.290.2</span></a><a id="__RefHeading__1718320_1219268628"/><a id="attribute-form_min-value_element-form_date"/>&lt;form:date&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:min-value</span> attribute is <span class="Datatype">date</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:min-value</span> attribute is usable with the following element: <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:min-value</span> attribute has the data type <span class="Datatype">date</span> <a href="#datatype-date">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_290_3_form_formatted-text_"><span style="margin-right:0.127cm;">19.290.3</span></a><a id="__RefHeading__1718322_1219268628"/><a id="attribute-form_min-value_element-form_formatted-text"/>&lt;form:formatted-text&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:min-value</span> attribute is <span class="Datatype">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:min-value</span> attribute is usable with the following element: <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:min-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_290_4_form_number__and__form_value-range_"><span style="margin-right:0.127cm;">19.290.4</span></a><a id="__RefHeading__1718324_1219268628"/><a id="attribute-form_min-value_element-form_number"/><a id="attribute-form_min-value_element-form_value-range"/>&lt;form:number&gt; and &lt;form:value-range&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:min-value</span> attribute is <span class="Datatype">double</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:min-value</span> attribute is usable with the following elements: <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:min-value</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_290_5_form_time_"><span style="margin-right:0.127cm;">19.290.5</span></a><a id="__RefHeading__1718326_1219268628"/><a id="attribute-form_min-value_element-form_time"/>&lt;form:time&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:min-value</span> attribute is <span class="Datatype">time</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:min-value</span> attribute is usable with the following element: <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:min-value</span> attribute has the data type <span class="Datatype">time</span> <a href="#datatype-time">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_291form_method"><span style="margin-right:0.127cm;">19.291</span></a><a id="__RefHeading__1417444_253892949"/><a id="attribute-form_method"/>form:method</h2><p class="Text_20_body">The <span class="Attribute">form:method</span> attribute specifies the HTTP method used to submit data in a form to a server. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:list-source-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">get</span>: HTTP get method.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">ost</span>: HTTP post method.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type string<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">These values are not case sensitive.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">get</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:method</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:method</span> attribute are <span class="Attribute_20_Value">get</span>, <span class="Attribute_20_Value">post</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_292form_multi-line"><span style="margin-right:0.127cm;">19.292</span></a><a id="__RefHeading__1417446_253892949"/><a id="attribute-form_multi-line"/>form:multi-line</h2><p class="Text_20_body">The <span class="Attribute">form:multi-line</span> attribute specifies whether a label is displayed on multiple lines.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:multi-line</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: label is not displayed over multiple lines.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: label is displayed over multiple lines.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:multi-line</span> attribute is usable with the following element: <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:multi-line</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_293form_multiple"><span style="margin-right:0.127cm;">19.293</span></a><a id="__RefHeading__1417448_253892949"/><a id="attribute-form_multiple"/>form:multiple</h2><p class="Text_20_body">The <span class="Attribute">form:multiple</span> attribute specifies whether a user can select multiple items from a list box.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:multiple</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: multiple items cannot be selected from a list box.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: multiple items can be selected from a list box.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:multiple</span> attribute is usable with the following element: <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:multiple</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_294form_name"><span style="margin-right:0.127cm;">19.294</span></a><a id="__RefHeading__1417450_253892949"/><a id="attribute-form_name"/>form:name</h2><p class="Text_20_body">The <span class="Attribute">form:name</span> attribute specifies the name of a form or control element. </p><p class="Note"><span class="Note_20_Label">Note: </span>This may be used to give a form or control element an identity, which is can be used for scripting or for submitting the content of controls.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:name</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_295form_navigation-mode"><span style="margin-right:0.127cm;">19.295</span></a><a id="__RefHeading__1417452_253892949"/><a id="attribute-form_navigation-mode"/>form:navigation-mode</h2><p class="Text_20_body">The <span class="Attribute">form:navigation-mode</span> attribute specifies methods for navigation of a database aware form. </p><p class="Text_20_body">The defined values of the <span class="Attribute">form:navigation-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">current</span>: An user interface is provided and the navigation is performed on the current form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: a user interface is not provided, but the form may be navigated using the TAB and SHIFT/TAB keys on the keyboard.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">parent</span>: a user interface is provided and the navigation is performed on the parent form of the current form.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:navigation-mode</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:navigation-mode</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">current</span> or <span class="Attribute_20_Value">parent</span>.</p><h2 class="Heading_20_2"><a id="a19_296form_order"><span style="margin-right:0.127cm;">19.296</span></a><a id="__RefHeading__1417454_253892949"/><a id="attribute-form_order"/>form:order</h2><p class="Text_20_body">The <span class="Attribute">form:order</span> attribute specifies a sort criteria for a command. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:order</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:order</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_297form_orientation"><span style="margin-right:0.127cm;">19.297</span></a><a id="__RefHeading__1417456_253892949"/><a id="attribute-form_orientation"/>form:orientation</h2><p class="Text_20_body">The <span class="Attribute">form:orientation</span> attribute specifies the orientation of a control,</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:orientation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal</span>: control is oriented horizontally.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: control is oriented vertically.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:orientation</span> attribute is usable with the following element: <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:orientation</span> attribute are <span class="Attribute_20_Value">horizontal</span> or <span class="Attribute_20_Value">vertical</span>.</p><h2 class="Heading_20_2"><a id="a19_298form_page-step-size"><span style="margin-right:0.127cm;">19.298</span></a><a id="__RefHeading__1417458_253892949"/><a id="attribute-form_page-step-size"/>form:page-step-size</h2><p class="Text_20_body">The <span class="Attribute">form:page-step-size</span> attribute specifies the preferred major value change offered through a UI (if applicable for the control used). </p><p class="Text_20_body">The value of a <span class="Attribute">form:page-step-size</span> attribute shall be positive. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:page-step-size</span> attribute is usable with the following element: <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:page-step-size</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_299form_printable"><span style="margin-right:0.127cm;">19.299</span></a><a id="__RefHeading__1417460_253892949"/><a id="attribute-form_printable"/>form:printable</h2><p class="Text_20_body">The <span class="Attribute">form:printable</span> attribute specifies whether a control is printed when a user prints a document in which the control is contained. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:printable</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: control not printed when a document containing the control is printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: control printed when a document containing the control is printed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:printable</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:printable</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_300form_property-name"><span style="margin-right:0.127cm;">19.300</span></a><a id="__RefHeading__1417462_253892949"/><a id="attribute-form_property-name"/>form:property-name</h2><p class="Text_20_body">The <span class="Attribute">form:property-name</span> attribute specifies the name of a property element. The name is unique within all <span class="Element">&lt;form:property&gt;</span> and <span class="Element">&lt;form:list-property&gt;</span> child elements of a &lt;form:properties&gt; element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:property-name</span> attribute is usable with the following elements: <span class="Element">&lt;form:list-property&gt;</span> <a href="#element-form_list-property">13.9</a> and <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:property-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_301form_readonly"><span style="margin-right:0.127cm;">19.301</span></a><a id="__RefHeading__1417464_253892949"/><a id="attribute-form_readonly"/>form:readonly</h2><p class="Text_20_body">The <span class="Attribute">form:readonly</span> attribute specifies whether a user can modify the value of a control. </p><p class="Text_20_body">Read-only controls are included in a tabbing navigation sequence.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:readonly</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a user cannot modify the value of a control. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a user can modify the value of a control.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:readonly</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:readonly</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_302form_repeat"><span style="margin-right:0.127cm;">19.302</span></a><a id="__RefHeading__1417466_253892949"/><a id="attribute-form_repeat"/>form:repeat</h2><p class="Text_20_body">The <span class="Attribute">form:repeat</span> attribute specifies whether a form control, or a part of a form control repeats a defined action in response a continuous action by a user.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:repeat</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: continuous action results in one defined action.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: continuous action results in repeating the defined action.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> Pressing and holding any key is an example of continuing a single act. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:repeat</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:repeat</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_303form_selected"><span style="margin-right:0.127cm;">19.303</span></a><a id="__RefHeading__1417468_253892949"/><a id="attribute-form_selected"/>form:selected</h2><p class="Text_20_body">The <span class="Attribute">form:selected</span> attribute specifies the default state of a radio button or option. A control initializes to the default state specified by this attribute. </p><p class="Text_20_body">In a group of radio buttons that share the same name, only one radio button can have a <span class="Attribute">form:selected</span> attribute set to true.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:selected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: not the default state of a radio button or option. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: default state of a radio button or option.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:selected</span> attribute is usable with the following elements: <span class="Element">&lt;form:option&gt;</span> <a href="#element-form_option">13.5.14</a> and <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:selected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_304form_size"><span style="margin-right:0.127cm;">19.304</span></a><a id="__RefHeading__1417470_253892949"/><a id="attribute-form_size"/>form:size</h2><p class="Text_20_body">The <span class="Attribute">form:size</span> attribute specifies the number of rows that are visible at a time in a combo box list or a list box list.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:size</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a> and <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:size</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_305form_source-cell-range"><span style="margin-right:0.127cm;">19.305</span></a><a id="__RefHeading__1417472_253892949"/><a id="attribute-form_source-cell-range"/>form:source-cell-range</h2><p class="Text_20_body">The <span class="Attribute">form:source-cell-range</span> attribute specifies a rectangular cell range, whose content should be synchronized with a form controls item list. The form control reacts to changes in the cell range, that is, it adjusts its item list as cell range's content changes.</p><p class="Text_20_body">Specify a cell range using cellRangeAddress or as a name of a named cell range. Display the left most columns of a range if the range contains more columns than a form control can display. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:source-cell-range</span> attribute is usable with the following elements: <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a> and <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:source-cell-range</span> attribute are a value of type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_306form_spin-button"><span style="margin-right:0.127cm;">19.306</span></a><a id="__RefHeading__1417474_253892949"/><a id="attribute-form_spin-button"/>form:spin-button</h2><p class="Text_20_body">The <span class="Attribute">form:spin-button</span> attribute specifies whether a form control for input has spin buttons. Spin buttons are used to increment or decrement all or part of an input value.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:spin-button</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: form control does not have spin buttons. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: form control has spin buttons. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:spin-button</span> attribute is usable with the following elements: <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a> and <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:spin-button</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_307form_state"><span style="margin-right:0.127cm;">19.307</span></a><a id="__RefHeading__1417476_253892949"/><a id="attribute-form_state"/>form:state</h2><p class="Text_20_body">The <span class="Attribute">form:state</span> attribute specifies the default state of a check box control. A check box control initializes to the default state specified by this attribute. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:state</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">checked</span>: default state of a check box control. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unchecked</span>: check box control has no default state.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unknown</span>: state of check box control is not known.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">unchecked</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:state</span> attribute is usable with the following element: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:state</span> attribute are <span class="Attribute_20_Value">unchecked</span>, <span class="Attribute_20_Value">checked</span> or <span class="Attribute_20_Value">unknown</span>.</p><h2 class="Heading_20_2"><a id="a19_308form_step-size"><span style="margin-right:0.127cm;">19.308</span></a><a id="__RefHeading__1417478_253892949"/><a id="attribute-form_step-size"/>form:step-size</h2><p class="Text_20_body">The <span class="Attribute">form:step-size</span> attribute specifies the preferred minor value change offered through a UI (if applicable for the control used).</p><p class="Text_20_body">The value of a <span class="Attribute">form:step-size</span> attribute shall be positive.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:step-size</span> attribute is usable with the following element: <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:step-size</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_309form_tab-cycle"><span style="margin-right:0.127cm;">19.309</span></a><a id="__RefHeading__1417480_253892949"/><a id="attribute-form_tab-cycle"/>form:tab-cycle</h2><p class="Text_20_body">The <span class="Attribute">form:tab-cycle</span> attribute specifies how the consumer responds when the user presses the TAB key in the controls in a form. The behavior of the consumer depends on whether the form is bound to a data source.</p><p class="Text_20_body">The defined values for the <span class="Attribute">form:tab-cycle</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">current</span>: If a user presses the TAB key in the last control of the form, the focus moves to the first control specified in the tab order of the same form. If the form is data aware (<a href="#data-aware">13.1</a>), then the current row of the result set subject to the form is not changed. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">page</span>: If a user presses the TAB key in the last control of a form, the focus moves to the first control specified in the tab order for the next form.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">records</span>: If a user presses the TAB key in the last control of the form, the focus moves to the first control specified in the tab order of the same form. If the form is data aware (<a href="#data-aware"/><a href="#data-aware"/><a href="#data-aware">13.1</a>), then the current row of the result set subject to the form moves to the next row. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:tab-cycle</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:tab-cycle</span> attribute are <span class="Attribute_20_Value">records</span>, <span class="Attribute_20_Value">current</span> or <span class="Attribute_20_Value">page</span>.</p><h2 class="Heading_20_2"><a id="a19_310form_tab-index"><span style="margin-right:0.127cm;">19.310</span></a><a id="__RefHeading__1417482_253892949"/><a id="attribute-form_tab-index"/>form:tab-index</h2><p class="Text_20_body">The <span class="Attribute">form:tab-index</span> attribute specifies the tabbing navigation order of controls within a form. <a id="didx-tabbing_order"/>Tabbing order is the order of focus on controls when a user navigates the form using the TAB key on the keyboard. Elements within other elements can be included in a tabbing order. Values do not have to be sequential and they do not have to begin with a particular value. </p><p class="Text_20_body">The rules of tab navigation are: </p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>Controls that have the <span class="Attribute">form:disabled</span> attribute set to true are not included in the navigation, independent of their <span class="Attribute">form:tab-index</span> value. <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>Controls that have the same values for the <span class="Attribute">form:tab-index</span> attribute are navigated in order of their position in the form. <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">3)</span>The navigation starts with the controls with lowest non-zero <span class="Attribute">form:tab-index</span> value. <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">4)</span>When the controls with a certain <span class="Attribute">form:tab-index</span> value have been navigated, navigation continues with the controls with the next highest value. <span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">5)</span>After the controls with the highest value have been navigated, navigation continues with the controls that do not contain the <span class="Attribute">form:tab-index</span> attribute or contain the attribute with a value of 0. <span class="odfLiEnd"/> </p></li></ol><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:tab-index</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:tab-index</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_311form_tab-stop"><span style="margin-right:0.127cm;">19.311</span></a><a id="__RefHeading__1417484_253892949"/><a id="attribute-form_tab-stop"/>form:tab-stop</h2><p class="Text_20_body">The <span class="Attribute">form:tab-stop</span> attribute specifies whether a control is included in the tabbing navigation order. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:tab-stop</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: control is not included in tabbing navigation order. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: control is included in tabbing navigation order.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:tab-stop</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:tab-stop</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_312form_text-style-name"><span style="margin-right:0.127cm;">19.312</span></a><a id="__RefHeading__1417486_253892949"/><a id="attribute-form_text-style-name"/>form:text-style-name</h2><p class="Text_20_body">The <span class="Attribute">form:text-style-name</span> attribute specifies paragraph style that is applied to all controls for a column. Unlike other paragraph styles, this style may reference a data style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:text-style-name</span> attribute is usable with the following element: <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:text-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_313form_title"><span style="margin-right:0.127cm;">19.313</span></a><a id="__RefHeading__1417488_253892949"/><a id="attribute-form_title"/>form:title</h2><p class="Text_20_body">The <span class="Attribute">form:title</span> attribute contains additional information about a control. The value of the attribute may be used as a "tool tip" (a short message that appears when the pointing device pauses over the form element). Audio user agents may speak the title information in a similar context. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:title</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_314form_toggle"><span style="margin-right:0.127cm;">19.314</span></a><a id="__RefHeading__1417490_253892949"/><a id="attribute-form_toggle"/>form:toggle</h2><p class="Text_20_body">The <span class="Attribute">form:toggle</span> attribute specifies whether a form button control acts as push button or as toggle button. </p><p class="Note"><span class="Note_20_Label">Note: </span>A toggle button is similar to a check box (in fact, it could be considered a different visual representation of a check box), in that operating it once, by either mouse or keyboard, toggles its state between "pressed" and "not pressed". </p><p class="Text_20_body">A push button triggers an action, which happens every time the user operates the button. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:toggle</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: form button control acts as push button. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: form button control acts as a toggle button.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:toggle</span> attribute is usable with the following element: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:toggle</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_315form_validation"><span style="margin-right:0.127cm;">19.315</span></a><a id="__RefHeading__1417492_253892949"/><a id="attribute-form_validation"/>form:validation</h2><p class="Text_20_body">The <span class="Attribute">form:validation</span> attribute specifies whether the text that the user enters is validated during input against the input format associated with the control. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:validation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: invalid content is detected during input.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: invalid content is not detected during input.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">form:validation</span> attribute is usable with the following element: <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:validation</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_316form_value"><span style="margin-right:0.127cm;">19.316</span></a><a id="__RefHeading__1417494_253892949"/><a id="attribute-form_value"/>form:value</h2><h3 class="Heading_20_3"><a id="a19_316_1General"><span style="margin-right:0.127cm;">19.316.1</span></a><a id="__RefHeading__1718328_1219268628"/>General </h3><p class="Text_20_body">The <span class="Attribute">form:value</span> attribute specifies the default value of an input control. </p><h3 class="Heading_20_3"><a id="a19_316_2_form_button_"><span style="margin-right:0.127cm;">19.316.2</span></a><a id="__RefHeading__1718330_1219268628"/><a id="attribute-form_value_element-form_button"/>&lt;form:button&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:</span><span class="Attribute">v</span><span class="Attribute">alue</span> attribute is <span class="Datatype">boole</span><span class="Datatype">an</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:value</span> attribute is usable with the following element: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_316_3_form_date_"><span style="margin-right:0.127cm;">19.316.3</span></a><a id="__RefHeading__1718332_1219268628"/><a id="attribute-form_value_element-form_date"/>&lt;form:date&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:</span><span class="Attribute">value</span> attribute is <span class="Datatype">date</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:value</span> attribute is usable with the following element: <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:value</span> attribute has the data type <span class="Datatype">date</span> <a href="#datatype-date">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_316_4_form_number__and__form_value-range_"><span style="margin-right:0.127cm;">19.316.4</span></a><a id="__RefHeading__1718334_1219268628"/><a id="attribute-form_value_element-form_number"/><a id="attribute-form_value_element-form_value-range"/>&lt;form:number&gt; and &lt;form:value-range&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:value</span> attribute is <span class="Datatype">number</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:value</span> attribute is usable with the following elements: <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:value</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_316_5_form_checkbox____form_combobox____form_file____form_formatted-text____form_hidden____form_image____form_option____form_password____form_radio____form_text____form_textarea_"><span style="margin-right:0.127cm;">19.316.5</span></a><a id="__RefHeading__1718336_1219268628"/><a id="attribute-form_value_element-form_image"/><a id="attribute-form_value_element-form_option"/><a id="attribute-form_value_element-form_password"/><a id="attribute-form_value_element-form_radio"/><a id="attribute-form_value_element-form_text"/><a id="attribute-form_value_element-form_textarea"/><a id="attribute-form_value_element-form_checkbox"/><a id="attribute-form_value_element-form_combobox"/><a id="attribute-form_value_element-form_file"/><a id="attribute-form_value_element-form_formatted-text"/><a id="attribute-form_value_element-form_hidden"/>&lt;form:checkbox&gt;, &lt;form:combobox&gt;, &lt;form:file&gt;, &lt;form:formatted-text&gt;, &lt;form:hidden&gt;, &lt;form:image&gt;, &lt;form:option&gt;, &lt;form:password&gt;, &lt;form:radio&gt;, &lt;form:text&gt;, &lt;form:textarea&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:value</span> attribute is <span class="Datatype">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:value</span> attribute is usable with the following elements: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:option&gt;</span> <a href="#element-form_option">13.5.14</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a> and <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_316_6_form_time_"><span style="margin-right:0.127cm;">19.316.6</span></a><a id="__RefHeading__1718338_1219268628"/><a id="attribute-form_value_element-form_time"/>&lt;form:time&gt;</h3><p class="Text_20_body">The value type of the <span class="Attribute">form:value</span> attribute is <span class="Datatype">time</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:value</span> attribute is usable with the following element: <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:value</span> attribute has the data type <span class="Datatype">time</span> <a href="#datatype-time">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_317form_visual-effect"><span style="margin-right:0.127cm;">19.317</span></a><a id="__RefHeading__1417496_253892949"/><a id="attribute-form_visual-effect"/>form:visual-effect</h2><p class="Text_20_body">The <span class="Attribute">form:visual-effect</span> attributes specifies a visual effect to apply to a control. </p><p class="Text_20_body">The defined values for the <span class="Attribute">form:visual-effect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">3d</span>: 3D visual effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">flat</span>: flat visual effect.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:visual-effect</span> attribute is usable with the following elements: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a> and <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">form:visual-effect</span> attribute are <span class="Attribute_20_Value">flat</span> or <span class="Attribute_20_Value">3d</span>.</p><h2 class="Heading_20_2"><a id="a19_318form_xforms-list-source"><span style="margin-right:0.127cm;">19.318</span></a><a id="__RefHeading__1417498_253892949"/><a id="attribute-form_xforms-list-source"/>form:xforms-list-source</h2><p class="Text_20_body">The <span class="Attribute">form:xforms-list-source</span> attribute specifies a reference to an <span class="Alien_20_Element">&lt;xforms:bind&gt;</span> element, and creates a list entry for each node in the node-set defined by that attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:xforms-list-source</span> attribute is usable with the following element: <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:xforms-list-source</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_319form_xforms-submission"><span style="margin-right:0.127cm;">19.319</span></a><a id="__RefHeading__1417500_253892949"/><a id="attribute-form_xforms-submission"/>form:xforms-submission</h2><p class="Text_20_body">The <span class="Attribute">form:xforms-submission</span> attribute specifies the name of an <span class="Alien_20_Element">&lt;xforms:submission&gt;</span> element for a <span class="Element">&lt;form:button&gt;</span> control. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">form:xforms-submission</span> attribute is usable with the following element: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">form:xforms-submission</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_320grddl_transformation"><span style="margin-right:0.127cm;">19.320</span></a><a id="__RefHeading__1417502_253892949"/><a id="attribute-grddl_transformation"/>grddl:transformation</h2><p class="Text_20_body">The <span class="Attribute">grddl:transformation</span> attributes link to a transformation for extracting RDF data from the document. See <a title="Gleaning Resource Descriptions from Dialects of Languages (GRDDL)" href="http://www.w3.org/TR/2007/REC-grddl-20070911/">[GRDDL]</a>.</p><p class="Note"><a id="line-401"/><span class="Note_20_Label">Note:</span> This transformation is intended to be interpreted by consumers that do not support OpenDocument. </p><p class="Text_20_body">The referenced transformations should map OpenDocument elements that are children of the <span class="Element">&lt;office:meta&gt;</span> element to RDF. They should also extract the RDF triples stored as RDFa attributes in the document content and styles. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Please check the <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office">OASIS Open Document Format for Office Applications (OpenDocument) TC's</a> web site for GRDDL transformations provided by the OASIS Open Document Format for Office Applications (OpenDocument) TC. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">grddl:transformation</span> attribute is usable with the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>, <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a>, <span class="Element">&lt;office:document-meta&gt;</span> <a href="#element-office_document-meta">3.1.3.4</a>, <span class="Element">&lt;office:document-settings&gt;</span> <a href="#element-office_document-settings">3.1.3.5</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The value of the <span class="Attribute">grddl:transformation</span> attribute is a white space separated lists of values of type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>, including the empty list.</p><h2 class="Heading_20_2"><a id="a19_321meta_cell-count"><span style="margin-right:0.127cm;">19.321</span></a><a id="__RefHeading__1417504_253892949"/><a id="attribute-meta_cell-count"/>meta:cell-count</h2><p class="Text_20_body">The <span class="Attribute">meta:cell-count</span> attribute specifies the number of table cells that an OpenDocument producer has counted for a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:cell-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:cell-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_322meta_character-count"><span style="margin-right:0.127cm;">19.322</span></a><a id="__RefHeading__1417506_253892949"/><a id="attribute-meta_character-count"/>meta:character-count</h2><p class="Text_20_body">The <span class="Attribute">meta:character-count</span> attribute specifies the number of characters that an OpenDocument producer has counted for a document. </p><p class="Text_20_body"><a id="__DdeLink__488020_1816664164"/>The value of the <span class="Attribute">meta:character-count</span> attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:character-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:character-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_323meta_date"><span style="margin-right:0.127cm;">19.323</span></a><a id="__RefHeading__1417508_253892949"/><a id="attribute-meta_date"/>meta:date</h2><p class="Text_20_body">The <span class="Attribute">meta:date</span> attribute specifies the date and time when a template was last modified, prior to being used to create the current document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:date</span> attribute is usable with the following element: <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:date</span> attribute has the data type <span class="Datatype">dateTime</span> <a href="#datatype-dateTime">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_324meta_delay"><span style="margin-right:0.127cm;">19.324</span></a><a id="__RefHeading__1417510_253892949"/><a id="attribute-meta_delay"/>meta:delay</h2><p class="Text_20_body">The <span class="Attribute">meta:delay</span> attribute specifies a reload delay.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:delay</span> attribute is usable with the following element: <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:delay</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_325meta_draw-count"><span style="margin-right:0.127cm;">19.325</span></a><a id="__RefHeading__1417512_253892949"/><a id="attribute-meta_draw-count"/>meta:draw-count</h2><p class="Text_20_body">The <span class="Attribute">meta:draw-count</span> attribute specifies the number of drawing-shapes that an OpenDocument producer has counted for a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:draw-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:draw-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_326meta_frame-count"><span style="margin-right:0.127cm;">19.326</span></a><a id="__RefHeading__1417514_253892949"/><a id="attribute-meta_frame-count"/>meta:frame-count</h2><p class="Text_20_body">The <span class="Attribute">meta:frame-count</span> attribute specifies the number of text-boxes that an OpenDocument producer has counted for a document. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:frame-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:frame-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_327meta_image-count"><span style="margin-right:0.127cm;">19.327</span></a><a id="__RefHeading__1417516_253892949"/><a id="attribute-meta_image-count"/>meta:image-count</h2><p class="Text_20_body">The <span class="Attribute">meta:image-count</span> attribute specifies the number of images that an OpenDocument producer has counted for a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:image-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:image-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_328meta_name"><span style="margin-right:0.127cm;">19.328</span></a><a id="__RefHeading__1417518_253892949"/><a id="attribute-meta_name"/>meta:name</h2><p class="Text_20_body">The <span class="Attribute">meta:name</span> attribute specifies the name of a metadata element. The name shall be unique within the domain of <span class="Element">&lt;meta:user-defined&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:name</span> attribute is usable with the following element: <span class="Element">&lt;meta:user-defined&gt;</span> <a href="#element-meta_user-defined">4.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_329meta_non-whitespace-character-count"><span style="margin-right:0.127cm;">19.329</span></a><a id="__RefHeading__1417520_253892949"/><a id="attribute-meta_non-whitespace-character-count"/>meta:non-whitespace-character-count</h2><p class="Text_20_body">The <span class="Attribute">meta:non-whitespace-character-count</span> attribute specifies the number of non-white space characters that an OpenDocument producer has counted for a document.</p><p class="Text_20_body">The value of the <span class="Attribute">meta:non-whitespace-character-count</span> attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:non-whitespace-character-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:non-whitespace-character-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_330meta_object-count"><span style="margin-right:0.127cm;">19.330</span></a><a id="__RefHeading__1417522_253892949"/><a id="attribute-meta_object-count"/>meta:object-count</h2><p class="Text_20_body">The <span class="Attribute">meta:object-count</span> attribute specifies the number of embedded objects stored in OpenDocument format that the OpenDocument producer has counted for the document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:object-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:object-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_331meta_ole-object-count"><span style="margin-right:0.127cm;">19.331</span></a><a id="__RefHeading__1417524_253892949"/><a id="attribute-meta_ole-object-count"/>meta:ole-object-count</h2><p class="Text_20_body">The <span class="Attribute">meta:ole-object-count</span> attribute specifies the number of embedded objects stored in a different format than OpenDocument that the OpenDocument producer has counted for the document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:ole-object-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:ole-object-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_332meta_page-count"><span style="margin-right:0.127cm;">19.332</span></a><a id="__RefHeading__1417526_253892949"/><a id="attribute-meta_page-count"/>meta:page-count</h2><p class="Text_20_body">The <span class="Attribute">meta:page-count</span> attribute specifies the number of pages that an OpenDocument producer has calculated for a document.</p><p class="Text_20_body">The value of the <span class="Attribute">meta:page-count</span> attribute is implementation-dependent. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:page-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:page-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_333meta_paragraph-count"><span style="margin-right:0.127cm;">19.333</span></a><a id="__RefHeading__1417528_253892949"/><a id="attribute-meta_paragraph-count"/>meta:paragraph-count</h2><p class="Text_20_body">The <span class="Attribute">meta:paragraph-count</span> attribute specifies the number of paragraphs that an OpenDocument producer has counted for a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:paragraph-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:paragraph-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_334meta_row-count"><span style="margin-right:0.127cm;">19.334</span></a><a id="__RefHeading__1417530_253892949"/><a id="attribute-meta_row-count"/>meta:row-count</h2><p class="Text_20_body">The <span class="Attribute">meta:row-count</span> attribute specifies the number of lines contained in a document instance. </p><p class="Text_20_body">The value of the <span class="Attribute">meta:row-count</span> attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:row-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:row-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_335meta_sentence-count"><span style="margin-right:0.127cm;">19.335</span></a><a id="__RefHeading__1417532_253892949"/><a id="attribute-meta_sentence-count"/>meta:sentence-count</h2><p class="Text_20_body">The <span class="Attribute">meta:sentence-count</span> attribute specifies the number of sentences that an OpenDocument producer has counted for a document.</p><p class="Text_20_body">The value of the <span class="Attribute">meta:sentence-count</span> attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:sentence-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:sentence-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_336meta_syllable-count"><span style="margin-right:0.127cm;">19.336</span></a><a id="__RefHeading__1417534_253892949"/><a id="attribute-meta_syllable-count"/>meta:syllable-count</h2><p class="Text_20_body">The <span class="Attribute">meta:syllable-count</span> attribute specifies the number of syllables that an OpenDocument producer has counted for a document.</p><p class="Text_20_body">The value of the <span class="Attribute">meta:syllable-count</span> attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:syllable-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:syllable-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_337meta_table-count"><span style="margin-right:0.127cm;">19.337</span></a><a id="__RefHeading__1417536_253892949"/><a id="attribute-meta_table-count"/>meta:table-count</h2><p class="Text_20_body">The <span class="Attribute">meta:table-count</span> attribute specifies the number of <span class="Element">&lt;table:table&gt;</span> elements contained in a document instance. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:table-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:table-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_338meta_value-type"><span style="margin-right:0.127cm;">19.338</span></a><a id="__RefHeading__1417538_253892949"/><a id="attribute-meta_value-type"/>meta:value-type</h2><p class="Text_20_body">The <span class="Attribute">meta:value-type</span> attribute specifies the type of a metadata element. </p><p class="Text_20_body">The defined values for the <span class="Attribute">meta:value-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">boolean</span>: <a href="#datatype-boolean">18.3.3</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">date</span>: <a href="#datatype-date">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">float</span>: <a href="#datatype-double">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">time</span>: <a href="#datatype-time">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">string</span>: <a href="#datatype-string">18.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default type for meta-data elements is <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:value-type</span> attribute is usable with the following element: <span class="Element">&lt;meta:user-defined&gt;</span> <a href="#element-meta_user-defined">4.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">meta:value-type</span> attribute are <span class="Attribute_20_Value">float</span>, <span class="Attribute_20_Value">date</span>, <span class="Attribute_20_Value">time</span>, <span class="Attribute_20_Value">boolean</span> or <span class="Attribute_20_Value">string</span>.</p><h2 class="Heading_20_2"><a id="a19_339meta_word-count"><span style="margin-right:0.127cm;">19.339</span></a><a id="__RefHeading__1417540_253892949"/><a id="attribute-meta_word-count"/>meta:word-count</h2><p class="Text_20_body">The <span class="Attribute">meta:word-count</span> attribute specifies the number of words that an OpenDocument producer has counted for a document. </p><p class="Text_20_body">The value of the <span class="Attribute">meta:word-count</span> attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">meta:word-count</span> attribute is usable with the following element: <span class="Element">&lt;meta:document-statistic&gt;</span> <a href="#element-meta_document-statistic">4.3.2.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">meta:word-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_340number_automatic-order"><span style="margin-right:0.127cm;">19.340</span></a><a id="__RefHeading__1417542_253892949"/><a id="attribute-number_automatic-order"/>number:automatic-order</h2><p class="Text_20_body">The <a id="DDE_LINK13"/><span class="Attribute">number:automatic-order</span> attribute specifies whether data is ordered to match the default order for the language and country of a data style. </p><p class="Text_20_body">The defined values for the <span class="Attribute">number:automatic-order</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data is not ordered to match the default order for the language and country of a data style.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data is ordered to match the default order for the language and country of a data style.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:automatic-order</span> attribute is usable with the following elements: <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a> and <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:automatic-order</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_341number_calendar"><span style="margin-right:0.127cm;">19.341</span></a><a id="__RefHeading__1417544_253892949"/><a id="attribute-number_calendar"/>number:calendar</h2><p class="Text_20_body">The <span class="Attribute">number:calendar</span> attribute specifies the calendar system used to extract parts of a date. </p><p class="Text_20_body">The defined values for the <span class="Attribute">number:calendar</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">buddhist</span>: Buddhist calendar, identical to Gregorian calendar but offset by -543 years. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">gengou</span>: Japanese Gengou calendar, Emperor eras. Identical to Gregorian calendar but with different eras for each emperor. Consumers may implement only the modern eras starting 1868, Meiji, Taisho, Showa and Heisei. Earlier dates are then displayed using the Gregorian calendar <a title="Data elements and interchange formats -- Information interchange -- Representation of dates and times">[JIS X 0301]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">gregorian</span>: Gregorian calendar with cut-off date 1582-10-04, 1582-10-15 following. Dates before cut-off date are calculated in Julian proleptic calendar <a title="Data elements and interchange formats -- Information interchange -- Representation of dates and times">[ISO8601]</a>, Section 2.4.1.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hanja</span>: Additional Gregorian calendar in Korean locales, uses differently localized day and month names. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hanja_yoil</span>: Legacy alias for <span class="Attribute_20_Value">hanja</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hijri</span>: Islamic Hijri lunar calendar (religious, non-civil). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">jewish</span>: Jewish lunisolar calendar. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ROC</span>: Taiwanese Minguo calendar, identical to Gregorian calendar offset by -1911 years. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The attribute value may also be a string value. If this attribute is not specified, the default calendar system for the locale of the data style is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:calendar</span> attribute is usable with the following elements: <span class="Element">&lt;number:day&gt;</span> <a href="#element-number_day">16.27.11</a>, <span class="Element">&lt;number:day-of-week&gt;</span> <a href="#element-number_day-of-week">16.27.15</a>, <span class="Element">&lt;number:era&gt;</span> <a href="#element-number_era">16.27.14</a>, <span class="Element">&lt;number:month&gt;</span> <a href="#element-number_month">16.27.12</a>, <span class="Element">&lt;number:quarter&gt;</span> <a href="#element-number_quarter">16.27.17</a>, <span class="Element">&lt;number:week-of-year&gt;</span> <a href="#element-number_week-of-year">16.27.16</a> and <span class="Element">&lt;number:year&gt;</span> <a href="#element-number_year">16.27.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:calendar</span> attribute are <span class="Attribute_20_Value">gregorian</span>, <span class="Attribute_20_Value">gengou</span>, <span class="Attribute_20_Value">ROC</span>, <span class="Attribute_20_Value">hanja_yoil</span>, <span class="Attribute_20_Value">hanja</span>, <span class="Attribute_20_Value">hijri</span>, <span class="Attribute_20_Value">jewish</span>, <span class="Attribute_20_Value">buddhist</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_342number_country"><span style="margin-right:0.127cm;">19.342</span></a><a id="__RefHeading__1417546_253892949"/><a id="attribute-number_country"/>number:country</h2><p class="Text_20_body">The <span class="Attribute">number:country</span> attribute specifies a country code for a data style. The country code is used for formatting properties whose evaluation is locale dependent.</p><p class="Text_20_body">If a country is not specified, the system settings are used. </p><p class="Text_20_body">The <span class="Attribute">number:country</span> attribute on a <span class="Element">&lt;number:currency-symbol&gt;</span> element, specifies the country of a currency symbol. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:country</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:currency-symbol&gt;</span> <a href="#element-number_currency-symbol">16.27.8</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:country</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a19_343number_decimal-places"><span style="margin-right:0.127cm;">19.343</span></a><a id="__RefHeading__1417548_253892949"/><a id="attribute-number_decimal-places"/>number:decimal-places</h2><h3 class="Heading_20_3"><a id="a19_343_1General"><span style="margin-right:0.127cm;">19.343.1</span></a><a id="__RefHeading__1417550_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">number:decimal-places</span> attribute specifies the number of decimal places to display. </p><h3 class="Heading_20_3"><a id="a19_343_2_number_number_"><span style="margin-right:0.127cm;">19.343.2</span></a><a id="__RefHeading__1417552_253892949"/><a id="attribute-number_decimal-places_element-number_number"/>&lt;number:number&gt;</h3><p class="Text_20_body">If the <span class="Attribute">number:decimal-places</span> attribute is not specified, the number of decimal places specified by the default table cell style is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:decimal-places</span> attribute is usable with the following element: <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:decimal-places</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_343_3_number_seconds_"><span style="margin-right:0.127cm;">19.343.3</span></a><a id="__RefHeading__1417554_253892949"/><a id="attribute-number_decimal-places_element-number_seconds"/>&lt;number:seconds&gt; </h3><p class="Text_20_body">If the <span class="Attribute">number:decimal-places</span> attribute  is not specified or if the value of the attribute is <span class="Attribute_20_Value_20_Instance">0</span>, seconds are not displayed.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;number:seconds&gt;</span> <a href="#element-number_seconds">16.27.21</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:decimal-places</span> attribute is usable with the following element: <span class="Element">&lt;number:seconds&gt;</span> <a href="#element-number_seconds">16.27.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:decimal-places</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_343_4_number_scientific-number_"><span style="margin-right:0.127cm;">19.343.4</span></a><a id="__RefHeading__1417556_253892949"/><a id="attribute-number_decimal-places_element-number_scientific-number"/>&lt;number:scientific-number&gt;</h3><p class="Text_20_body">The <span class="Attribute">number:decimal-places</span> attribute specifies the number of decimal places to display.</p><p class="Text_20_body">If the <span class="Attribute">number:decimal-places</span> attribute is not specified, the number of decimal places specified by the default table cell style is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:decimal-places</span> attribute is usable with the following element: <span class="Element">&lt;number:scientific-number&gt;</span> <a href="#element-number_scientific-number">16.27.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:decimal-places</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_344number_decimal-replacement"><span style="margin-right:0.127cm;">19.344</span></a><a id="__RefHeading__1417558_253892949"/><a id="attribute-number_decimal-replacement"/>number:decimal-replacement</h2><p class="Text_20_body">The <span class="Attribute">number:decimal-replacement</span> attribute specifies a replacement text for decimal places if a number style specifies that decimal places are used but the number displayed is an integer. </p><p class="Note"><span class="Note_20_Label">Note: </span>What replacement text is supported is implementation-dependent. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:decimal-replacement</span> attribute is usable with the following element: <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:decimal-replacement</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_345number_denominator-value"><span style="margin-right:0.127cm;">19.345</span></a><a id="__RefHeading__1417560_253892949"/><a id="attribute-number_denominator-value"/>number:denominator-value</h2><p class="Text_20_body">The <span class="Attribute">number:denominator-value</span> attribute specifies an integer value that is used as denominator of a fraction. If this attribute is not present, a denominator that is appropriate for displaying the number is used.</p><p class="Text_20_body"><span class="Note_20_Label">Note</span>: The <span class="Attribute">number:denominator-value</span> attribute is used with <span class="Attribute">number:grouping</span> <a href="#attribute-number_grouping">19.348</a>, <span class="Attribute">number:min-denominator-digits</span> <a href="#attribute-number_min-denominator-digits">19.350</a>, <span class="Attribute">number:min-integer-digits</span> <a href="#attribute-number_min-integer-digits">19.352</a> and <span class="Attribute">number:min-numerator-digits</span> <a href="#attribute-number_min-numerator-digits">19.353</a> to define the display of a floating point number as a fraction. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:denominator-value</span> attribute is usable with the following element: <span class="Element">&lt;number:fraction&gt;</span> <a href="#element-number_fraction">16.27.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:denominator-value</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_346number_display-factor"><span style="margin-right:0.127cm;">19.346</span></a><a id="__RefHeading__1417562_253892949"/><a id="attribute-number_display-factor"/>number:display-factor</h2><p class="Text_20_body">The <span class="Attribute">number:display-factor</span> attribute specifies a factor by which each number is scaled (divided) before displaying.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:display-factor</span> attribute is usable with the following element: <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:display-factor</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_347number_format-source"><span style="margin-right:0.127cm;">19.347</span></a><a id="__RefHeading__1417564_253892949"/><a id="attribute-number_format-source"/>number:format-source</h2><p class="Text_20_body">The <span class="Attribute">number:format-source</span> attribute specifies the source of definitions of the <span class="Attribute_20_Value">short</span> and <span class="Attribute_20_Value">long</span> display formats. </p><p class="Text_20_body">The defined values for the <span class="Attribute">number:format-source</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: the values <span class="Attribute_20_Value">short</span> and <span class="Attribute_20_Value">long</span> of the <span class="Attribute">number:style</span> attribute are defined by this standard. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">language</span>: the meaning of the values <span class="Attribute_20_Value">long</span> and <span class="Attribute_20_Value">short</span> of the <span class="Attribute">number:style</span> attribute depend upon the <span class="Attribute">number:language</span> and <span class="Attribute">number:country</span> attributes of the date style. If neither of those attributes are specified, consumers should use their default locale for short and long date and time formats.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">fixed</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:format-source</span> attribute is usable with the following elements: <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:format-source</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">language</span>.</p><h2 class="Heading_20_2"><a id="a19_348number_grouping"><span style="margin-right:0.127cm;">19.348</span></a><a id="__RefHeading__1417566_253892949"/><a id="attribute-number_grouping"/>number:grouping</h2><p class="Text_20_body">The <span class="Attribute">number:grouping</span> attribute specifies whether the integer digits of a number should be grouped using a separator character. </p><p class="Text_20_body">The grouping character that is used and the number of digits that are grouped together depends on the language and country of the style.</p><p class="Text_20_body">The defined values for the <span class="Attribute">number:grouping</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: integer digits of a number are note grouped using a separator character.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: integer digits of a number should be grouped by a separator character.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:grouping</span> attribute is usable with the following elements: <span class="Element">&lt;number:fraction&gt;</span> <a href="#element-number_fraction">16.27.6</a>, <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a> and <span class="Element">&lt;number:scientific-number&gt;</span> <a href="#element-number_scientific-number">16.27.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:grouping</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_349number_language"><span style="margin-right:0.127cm;">19.349</span></a><a id="__RefHeading__1417568_253892949"/><a id="attribute-number_language"/>number:language</h2><p class="Text_20_body">The <span class="Attribute">number:language</span> attribute specifies a language code. The country code is used for formatting properties whose evaluation is locale dependent.</p><p class="Text_20_body">If a language code is not specified, either the system settings or the setting for the system's language are used, depending on the property whose value should be evaluated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:language</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:currency-symbol&gt;</span> <a href="#element-number_currency-symbol">16.27.8</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:language</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h2 class="Heading_20_2"><a id="a19_350number_min-denominator-digits"><span style="margin-right:0.127cm;">19.350</span></a><a id="__RefHeading__1417570_253892949"/><a id="attribute-number_min-denominator-digits"/>number:min-denominator-digits</h2><p class="Text_20_body">The <span class="Attribute">number:min-denominator-digits</span> attribute specifies the minimum number of digits to use to display the denominator of a fraction.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:min-denominator-digits</span> attribute is usable with the following element: <span class="Element">&lt;number:fraction&gt;</span> <a href="#element-number_fraction">16.27.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:min-denominator-digits</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_351number_min-exponent-digits"><span style="margin-right:0.127cm;">19.351</span></a><a id="__RefHeading__1417572_253892949"/><a id="attribute-number_min-exponent-digits"/>number:min-exponent-digits</h2><p class="Text_20_body">The <span class="Attribute">number:min-exponent-digits</span> attribute specifies the minimum number of digits to use to display an exponent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:min-exponent-digits</span> attribute is usable with the following element: <span class="Element">&lt;number:scientific-number&gt;</span> <a href="#element-number_scientific-number">16.27.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:min-exponent-digits</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_352number_min-integer-digits"><span style="margin-right:0.127cm;">19.352</span></a><a id="__RefHeading__1417574_253892949"/><a id="attribute-number_min-integer-digits"/>number:min-integer-digits</h2><p class="Text_20_body">The <span class="Attribute">number:min-integer-digits</span> attribute specifies the minimum number of integer digits to display in a number, a scientific number, or a fraction. </p><p class="Text_20_body">For a <span class="Element">&lt;number:fraction&gt;</span> element, if the <span class="Attribute">number:min-integer-digits</span> attribute is not present, no integer portion is displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:min-integer-digits</span> attribute is usable with the following elements: <span class="Element">&lt;number:fraction&gt;</span> <a href="#element-number_fraction">16.27.6</a>, <span class="Element">&lt;number:number&gt;</span> <a href="#element-number_number">16.27.3</a> and <span class="Element">&lt;number:scientific-number&gt;</span> <a href="#element-number_scientific-number">16.27.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:min-integer-digits</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_353number_min-numerator-digits"><span style="margin-right:0.127cm;">19.353</span></a><a id="__RefHeading__1417576_253892949"/><a id="attribute-number_min-numerator-digits"/>number:min-numerator-digits</h2><p class="Text_20_body">The <span class="Attribute">number:min-numerator-digits</span> attribute specifies the minimum number of digits to use to display the numerator in a fraction.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:min-numerator-digits</span> attribute is usable with the following element: <span class="Element">&lt;number:fraction&gt;</span> <a href="#element-number_fraction">16.27.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:min-numerator-digits</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_354number_position"><span style="margin-right:0.127cm;">19.354</span></a><a id="__RefHeading__1417578_253892949"/><a id="attribute-number_position"/>number:position</h2><p class="Text_20_body">The <span class="Attribute">number:position</span> attribute specifies the position where text appears.</p><p class="Text_20_body">The index of a position starts with 1 and is counted by digits from right to left in the integer part of a number, starting left from a decimal separator if one exists, or from the last digit of the number. Text is inserted before the digit at the specified position. If the value of <span class="Attribute">number:position</span> attribute is greater than the value of <span class="Attribute">number:min-integer-digits</span> and greater than the number of integer digits in the number, text is prepended to the number.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:position</span> attribute is usable with the following element: <span class="Element">&lt;number:embedded-text&gt;</span> <a href="#element-number_embedded-text">16.27.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_355number_possessive-form"><span style="margin-right:0.127cm;">19.355</span></a><a id="__RefHeading__1417580_253892949"/><a id="attribute-number_possessive-form"/>number:possessive-form</h2><p class="Text_20_body">The <span class="Attribute">number:possessive-form</span> attribute specifies whether the month is displayed as a noun or using the possessive form. </p><p class="Text_20_body">The <span class="Attribute">number:possessive-form</span> attribute is only applied when a <span class="Attribute">number:textual</span> attribute on the same <span class="Element">&lt;number:month&gt;</span> element has the value of true.</p><p class="Text_20_body">The defined values for the <span class="Attribute">number:possessive-form</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the name of the month is displayed in nominative form. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the name of the month is displayed in possessive form. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:possessive-form</span> attribute is usable with the following element: <span class="Element">&lt;number:month&gt;</span> <a href="#element-number_month">16.27.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:possessive-form</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_356number_rfc-language-tag"><span style="margin-right:0.127cm;">19.356</span></a><a id="__RefHeading__1417582_253892949"/><a id="attribute-number_rfc-language-tag"/>number:rfc-language-tag</h2><p class="Text_20_body">The <span class="Attribute">number:rfc-language-tag</span> attribute specifies a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors. </p><p class="Text_20_body">It shall only be used if its value can not be expressed as a valid combination of the <span class="Attribute">number:language</span>, <span class="Attribute">number:script</span> and <span class="Attribute">number:country</span> attributes. </p><p class="Text_20_body">Producers may add support for consumers that don't support the <span class="Attribute">number:rfc-language-tag</span> attribute by specifying <span class="Attribute">number:language</span>, <span class="Attribute">number:script</span> and <span class="Attribute">number:country</span> attributes with values as close as possible to the actual value of the <span class="Attribute">number:rfc-language-tag</span> attribute. Producers shall not use values for these attributes that contradict the value of the <span class="Attribute">table:rfc-language-tag</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:rfc-language-tag</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:currency-symbol&gt;</span> <a href="#element-number_currency-symbol">16.27.8</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:rfc-language-tag</span> attribute has the data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h2 class="Heading_20_2"><a id="a19_357number_script"><span style="margin-right:0.127cm;">19.357</span></a><a id="__RefHeading__1417584_253892949"/><a id="attribute-number_script"/>number:script</h2><p class="Text_20_body">The <span class="Attribute">number:script</span> attribute specifies a script code. The script code is used for formatting properties whose evaluation is locale dependent. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:script</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:currency-symbol&gt;</span> <a href="#element-number_currency-symbol">16.27.8</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:script</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h2 class="Heading_20_2"><a id="a19_358number_style"><span style="margin-right:0.127cm;">19.358</span></a><a id="__RefHeading__1417586_253892949"/><a id="attribute-number_style"/>number:style</h2><h3 class="Heading_20_3"><a id="a19_358_1General"><span style="margin-right:0.127cm;">19.358.1</span></a><a id="__RefHeading__1417588_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">number:style</span> attribute specifies whether the content of a time element is displayed in short or long format. The value of this attribute can be <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>. The meaning of these values depends on the value of the <span class="Attribute">number:format-source</span> attribute that is attached to a date or time style.</p><h3 class="Heading_20_3"><a id="a19_358_2_number_day_"><span style="margin-right:0.127cm;">19.358.2</span></a><a id="__RefHeading__1417590_253892949"/><a id="attribute-number_style_element-number_day"/>&lt;number:day&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: the day of month is displayed using one or two digits.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: the day of month is displayed using two digits.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:day&gt;</span> <a href="#element-number_day">16.27.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_3_number_day-of-week_"><span style="margin-right:0.127cm;">19.358.3</span></a><a id="__RefHeading__1417592_253892949"/><a id="attribute-number_style_element-number_day-of-week"/>&lt;number:day-of-week&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: abbreviated name of the day is displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: full name of the day is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:day-of-week&gt;</span> <a href="#element-number_day-of-week">16.27.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_4_number_era_"><span style="margin-right:0.127cm;">19.358.4</span></a><a id="__RefHeading__1417594_253892949"/><a id="attribute-number_style_element-number_era"/>&lt;number:era&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: abbreviated era name is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: full era name is used.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:era&gt;</span> <a href="#element-number_era">16.27.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_5_number_hours_"><span style="margin-right:0.127cm;">19.358.5</span></a><a id="__RefHeading__1417596_253892949"/><a id="attribute-number_style_element-number_hours"/>&lt;number:hours&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: hours are displayed using at least one digit.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: hours are displayed using at least two digits.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:hours&gt;</span> <a href="#element-number_hours">16.27.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_6_number_minutes_"><span style="margin-right:0.127cm;">19.358.6</span></a><a id="__RefHeading__1417598_253892949"/><a id="attribute-number_style_element-number_minutes"/>&lt;number:minutes&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: minutes are displayed using at least one digit.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: minutes are displayed using at least two digits.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:minutes&gt;</span> <a href="#element-number_minutes">16.27.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_7_number_month_"><span style="margin-right:0.127cm;">19.358.7</span></a><a id="__RefHeading__1417600_253892949"/><a id="attribute-number_style_element-number_month"/>&lt;number:month&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: abbreviated name of the month is displayed or the month is displayed using one or two digits.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: full name of the month is displayed or the month is displayed using two digits.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:month&gt;</span> <a href="#element-number_month">16.27.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_8_number_quarter_"><span style="margin-right:0.127cm;">19.358.8</span></a><a id="__RefHeading__1417602_253892949"/><a id="attribute-number_style_element-number_quarter"/>&lt;number:quarter&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: abbreviated name of the quarter is displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: full name of the quarter is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:quarter&gt;</span> <a href="#element-number_quarter">16.27.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_9_number_seconds_"><span style="margin-right:0.127cm;">19.358.9</span></a><a id="__RefHeading__1417604_253892949"/><a id="attribute-number_style_element-number_seconds"/>&lt;number:seconds&gt;</h3><p class="Text_20_body">if the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: seconds are displayed using at least one digit.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: seconds are displayed using at least two digits.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:seconds&gt;</span> <a href="#element-number_seconds">16.27.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h3 class="Heading_20_3"><a id="a19_358_10_number_year_"><span style="margin-right:0.127cm;">19.358.10</span></a><a id="__RefHeading__1417606_253892949"/><a id="attribute-number_style_element-number_year"/>&lt;number:year&gt;</h3><p class="Text_20_body">If the value of the <span class="Attribute">number:format-source</span> attribute is <span class="Attribute_20_Value">fixed</span> the <span class="Attribute">number:style</span> attribute on the same element has the defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">short</span>: year is displayed using two digits.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long</span>: year is displayed using four digits.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:style</span> attribute is usable with the following element: <span class="Element">&lt;number:year&gt;</span> <a href="#element-number_year">16.27.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:style</span> attribute are <span class="Attribute_20_Value">short</span> or <span class="Attribute_20_Value">long</span>.</p><h2 class="Heading_20_2"><a id="a19_359number_textual"><span style="margin-right:0.127cm;">19.359</span></a><a id="__RefHeading__1417608_253892949"/><a id="attribute-number_textual"/>number:textual</h2><p class="Text_20_body">The <span class="Attribute">number:textual</span> attribute specifies whether the name or number of a month is displayed in the month element of a date. </p><p class="Text_20_body">The defined values for the <span class="Attribute">number:textual</span> element are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the number of the month is displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the name of the month is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The name or number of a month is defined by the <span class="Attribute">number:calendar</span> attribute on the same parent element as the <span class="Attribute">number:textual</span> attribute. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:textual</span> attribute is usable with the following element: <span class="Element">&lt;number:month&gt;</span> <a href="#element-number_month">16.27.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:textual</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_360number_title"><span style="margin-right:0.127cm;">19.360</span></a><a id="__RefHeading__1417610_253892949"/><a id="attribute-number_title"/>number:title</h2><p class="Text_20_body">The <span class="Attribute">number:title</span> attribute specifies the title of a data style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:title</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_361number_transliteration-country"><span style="margin-right:0.127cm;">19.361</span></a><a id="__RefHeading__1417612_253892949"/><a id="attribute-number_transliteration-country"/>number:transliteration-country</h2><p class="Text_20_body">The <span class="Attribute">number:transliteration-country</span> attribute specifies a country code in conformance with <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>.</p><p class="Text_20_body">If no language/country (locale) combination is specified the locale of the data style is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:transliteration-country</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:transliteration-country</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a19_362number_transliteration-format"><span style="margin-right:0.127cm;">19.362</span></a><a id="__RefHeading__1417614_253892949"/><a id="attribute-number_transliteration-format"/>number:transliteration-format</h2><p class="Text_20_body">The <span class="Attribute">number:transliteration-format</span> attribute specifies which number characters to use. </p><p class="Text_20_body">The value of the <span class="Attribute">number:transliteration-format</span> attribute shall be a decimal "DIGIT ONE" character with numeric value 1 as listed in the Unicode Character Database file UnicodeData.txt with value 'Nd' (Numeric decimal digit) in the General_Category/Numeric_Type property field 6 and value '1' in the Numeric_Value fields 7 and 8, respectively as listed in DerivedNumericValues.txt</p><p class="Text_20_body">If no format is specified the default ASCII representation of Latin-Indic digits is used, other transliteration attributes present in that case are ignored.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:transliteration-format</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:transliteration-format</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_363number_transliteration-language"><span style="margin-right:0.127cm;">19.363</span></a><a id="__RefHeading__1417616_253892949"/><a id="attribute-number_transliteration-language"/>number:transliteration-language</h2><p class="Text_20_body">The <span class="Attribute">number:transliteration-language</span> attribute specifies a language code in conformance with <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>.</p><p class="Text_20_body">If no language/country (locale) combination is specified the locale of the data style is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">number:transliteration-language</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:transliteration-language</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a19_364number_transliteration-style"><span style="margin-right:0.127cm;">19.364</span></a><a id="__RefHeading__1417618_253892949"/><a id="attribute-number_transliteration-style"/>number:transliteration-style</h2><p class="Text_20_body">The <span class="Attribute">number:transliteration-style</span> attribute specifies the transliteration-format of a number system.</p><p class="Text_20_body">The semantics of the values of the <span class="Attribute">number:transliteration-style</span> attribute are locale and implementation-dependent. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">short</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:transliteration-style</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">number:transliteration-style</span> attribute are <span class="Attribute_20_Value">short</span>, <span class="Attribute_20_Value">medium</span> or <span class="Attribute_20_Value">long</span>.</p><h2 class="Heading_20_2"><a id="a19_365number_truncate-on-overflow"><span style="margin-right:0.127cm;">19.365</span></a><a id="__RefHeading__1417620_253892949"/><a id="attribute-number_truncate-on-overflow"/>number:truncate-on-overflow</h2><p class="Text_20_body">The <span class="Attribute">number:truncate-on-overflow</span> attribute specifies if a time or duration for which the value to be displayed by the largest time component specified in the style is too large to be displayed using the value range for <span class="Element">&lt;number:hours&gt;</span> (0 to 23), or <span class="Element">&lt;number:minutes&gt;</span> or <span class="Element">&lt;number:seconds&gt;</span> (0 to 59) is truncated or if the value range of this component is extended. The largest time component is those for which a value of "1" represents the longest period of time.</p><p class="Text_20_body">If a value gets truncated, then its value is displayed modulo 24 (for <span class="Element">&lt;number:hours&gt;</span>) or modulo 60 (for <span class="Element">&lt;number:minutes&gt;</span> and <span class="Element">&lt;number:seconds&gt;</span>). </p><p class="Text_20_body">If the value range of a component get extended, then values larger than 23 or 59 are displayed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">number:truncate-on-overflow</span> element are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the value range of the component is extended.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the value range of the component is not extended.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">number:truncate-on-overflow</span> attribute is usable with the following element: <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">number:truncate-on-overflow</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_366office_automatic-update"><span style="margin-right:0.127cm;">19.366</span></a><a id="__RefHeading__1417622_253892949"/><a id="attribute-office_automatic-update"/>office:automatic-update</h2><p class="Text_20_body">The <span class="Attribute">office:automatic-update</span> attribute specifies if DDE links are automatically updated or only upon user request. </p><p class="Text_20_body">The defined values for the <span class="Attribute">office:automatic-update</span> element are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: DDE links are updated on user request only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: DDE links are updated automatically.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">office:automatic-update</span> attribute is usable with the following elements: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a> and <span class="Element">&lt;text:dde-connection-decl&gt;</span> <a href="#element-text_dde-connection-decl">14.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:automatic-update</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_367office_boolean-value"><span style="margin-right:0.127cm;">19.367</span></a><a id="__RefHeading__1417624_253892949"/><a id="attribute-office_boolean-value"/>office:boolean-value</h2><p class="Text_20_body">The <span class="Attribute">office:boolean-value</span> attribute specifies the Boolean value for a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>, <span class="Element">&lt;text:user-defined&gt;</span>, <span class="Element">&lt;text:user-field-decl&gt;</span> and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default value for database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>). </p><p class="Text_20_body">For <span class="Element">&lt;text:user-defined&gt;</span> elements, this attribute is only evaluated if the corresponding <span class="Element">&lt;meta:user-defined&gt;</span> element has attribute <span class="Attribute">meta:value-type</span>="<span class="Attribute_20_Value">boolean</span>". </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:boolean-value</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:boolean-value</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_368office_conversion-mode"><span style="margin-right:0.127cm;">19.368</span></a><a id="__RefHeading__1417626_253892949"/><a id="attribute-office_conversion-mode"/>office:conversion-mode</h2><p class="Text_20_body">The <span class="Attribute">office:conversion-mode</span> attribute specifies the method by which the DDE server converts its data into numbers. </p><p class="Text_20_body">The defined values for the <span class="Attribute">office:conversion-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">into-default-style-data-style</span>: numbers are converted into the data style which is set on the default style.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">into-english-number</span>: numbers are converted into the English default format.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">keep-text</span>: numbers are not converted. They are treated as text.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">into-default-style-data-style</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">office:conversion-mode</span> attribute is usable with the following element: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">office:conversion-mode</span> attribute are <span class="Attribute_20_Value">into-default-style-data-style</span>, <span class="Attribute_20_Value">into-english-number</span> or <span class="Attribute_20_Value">keep-text</span>.</p><h2 class="Heading_20_2"><a id="a19_369office_currency"><span style="margin-right:0.127cm;">19.369</span></a><a id="__RefHeading__1417628_253892949"/><a id="attribute-office_currency"/>office:currency</h2><p class="Text_20_body">The <span class="Attribute">office:currency</span> attribute specifies the currency for a value of a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>,  <span class="Element">&lt;text:user-field-decl&gt;</span> and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default currency for database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>).</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:currency</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:currency</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_370office_date-value"><span style="margin-right:0.127cm;">19.370</span></a><a id="__RefHeading__1417630_253892949"/><a id="attribute-office_date-value"/>office:date-value</h2><p class="Text_20_body">The <span class="Attribute">office:date-value</span> attribute specifies the date or date-time value for a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>, <span class="Element">&lt;text:user-defined&gt;</span>, <span class="Element">&lt;text:user-field-decl&gt;</span> and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default value for database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>). </p><p class="Text_20_body">For <span class="Element">&lt;text:user-defined&gt;</span> elements, this attribute is only evaluated if the corresponding <span class="Element">&lt;meta:user-defined&gt;</span> element has attribute <span class="Attribute">meta:value-type</span>="<span class="Attribute_20_Value">date</span>". </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:date-value</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:date-value</span> attribute has the data type <span class="Datatype">dateOrDateTime</span> <a href="#datatype-dateOrDateTime">18.3.14</a>.</p><h2 class="Heading_20_2"><a id="a19_371office_dde-application"><span style="margin-right:0.127cm;">19.371</span></a><a id="__RefHeading__1417632_253892949"/><a id="attribute-office_dde-application"/>office:dde-application</h2><p class="Text_20_body">The <span class="Attribute">office:dde-application</span> attribute specifies the name of the target application to use for the DDE connection.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:dde-application</span> attribute is usable with the following elements: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a> and <span class="Element">&lt;text:dde-connection-decl&gt;</span> <a href="#element-text_dde-connection-decl">14.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:dde-application</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_372office_dde-item"><span style="margin-right:0.127cm;">19.372</span></a><a id="__RefHeading__1417634_253892949"/><a id="attribute-office_dde-item"/>office:dde-item</h2><p class="Text_20_body">The <span class="Attribute">office:dde-item</span> attribute specifies which information the target application should deliver.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:dde-item</span> attribute is usable with the following elements: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a> and <span class="Element">&lt;text:dde-connection-decl&gt;</span> <a href="#element-text_dde-connection-decl">14.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:dde-item</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_373office_dde-topic"><span style="margin-right:0.127cm;">19.373</span></a><a id="__RefHeading__1417636_253892949"/><a id="attribute-office_dde-topic"/>office:dde-topic</h2><p class="Text_20_body">The <span class="Attribute">office:dde-topic</span> attribute specifies the name of the topic to use for the DDE connection.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:dde-topic</span> attribute is usable with the following elements: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a> and <span class="Element">&lt;text:dde-connection-decl&gt;</span> <a href="#element-text_dde-connection-decl">14.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:dde-topic</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_374office_display"><span style="margin-right:0.127cm;">19.374</span></a><a id="__RefHeading__1417638_253892949"/><a id="attribute-office_display"/>office:display</h2><p class="Text_20_body">The <span class="Attribute">office:display</span> attribute specifies whether an annotation is visible.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:display</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:display</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_375office_mimetype"><span style="margin-right:0.127cm;">19.375</span></a><a id="__RefHeading__1417640_253892949"/><a id="attribute-office_mimetype"/>office:mimetype</h2><p class="Text_20_body">The <span class="Attribute">office:mimetype</span> attribute specifies the document type for a document that is contained in a single XML file. Its values are the MIME types that are used for the packaged variant of office documents.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:mimetype</span> attribute is usable with the following element: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:mimetype</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_376office_name"><span style="margin-right:0.127cm;">19.376</span></a><a id="__RefHeading__1417642_253892949"/><a id="attribute-office_name"/>office:name</h2><h3 class="Heading_20_3"><a id="a19_376_1General"><span style="margin-right:0.127cm;">19.376.1</span></a><a id="__RefHeading__1417644_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name. The use of that name is specified for each element on which it appears. </p><h3 class="Heading_20_3"><a id="a19_376_2_draw_a_"><span style="margin-right:0.127cm;">19.376.2</span></a><a id="__RefHeading__1417646_253892949"/><a id="attribute-office_name_element-draw_a"/>&lt;draw:a&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for a link. The name can serve as a target for other hyperlinks. The name does not have to be unique.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_3_draw_area-circle_"><span style="margin-right:0.127cm;">19.376.3</span></a><a id="__RefHeading__1417648_253892949"/><a id="attribute-office_name_element-draw_area-circle"/>&lt;draw:area-circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for a shape represented by this element. The name does not have to be unique.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_4_draw_area-rectangle_"><span style="margin-right:0.127cm;">19.376.4</span></a><a id="__RefHeading__1417650_253892949"/><a id="attribute-office_name_element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for a shape represented by this element. The name does not have to be unique.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_5_draw_area-polygon_"><span style="margin-right:0.127cm;">19.376.5</span></a><a id="__RefHeading__1417652_253892949"/><a id="attribute-office_name_element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for an image map. The name does not have to be unique.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_6_office_annotation_"><span style="margin-right:0.127cm;">19.376.6</span></a><a id="__RefHeading__1417654_253892949"/><a id="attribute-office_name_element-office_annotation"/>&lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for an annotation. It is used to match <span class="Element">&lt;office:annotation&gt;</span> elements with the corresponding <span class="Element">&lt;office:annotation-end&gt;</span> elements.</p><p class="Text_20_body">The name that appears in the <span class="Attribute">office:name</span> attribute of any <span class="Element">&lt;office:annotation&gt;</span>, <span class="Element">&lt;office:annotation-end&gt;</span> pair shall be unique to that pair of elements in a document instance.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_7_office_annotation-end_"><span style="margin-right:0.127cm;">19.376.7</span></a><a id="__RefHeading__1417656_253892949"/><a id="attribute-office_name_element-office_annotation-end"/>&lt;office:annotation-end&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for an annotation. It is used to match <span class="Element">&lt;office:annotation-end&gt;</span> elements with the corresponding <span class="Element">&lt;office:annotation&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_8_office_dde-source_"><span style="margin-right:0.127cm;">19.376.8</span></a><a id="__RefHeading__1417658_253892949"/><a id="attribute-office_name_element-office_dde-source"/>&lt;office:dde-source&gt;</h3><p class="Text_20_body"><a id="DDE_LINK111"/>The <span class="Attribute">office:name</span> attribute specifies the name by which a connection can be referred.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;office:dde-source&gt;</span> <a href="#element-office_dde-source">14.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_9_text_a_"><span style="margin-right:0.127cm;">19.376.9</span></a><a id="__RefHeading__1417660_253892949"/><a id="attribute-office_name_element-text_a"/>&lt;text:a&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name for a hyperlink. The name serves as a target for other hyperlinks and need not be unique. </p><p class="Note"><span class="Note_20_Label">Note: </span>This attribute is specified for compatibility with <a title="HTML 4.01 Specification" href="http://www.w3.org/TR/1999/REC-html401-19991224">[HTML4]</a> only, where an <span class="Alien_20_Element">&lt;a&gt;</span> element may serve as a link source and target simultaneously. This attribute should not be used for any purpose other than to represent links that came from a HTML document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_376_10_text_dde-connection-decl_"><span style="margin-right:0.127cm;">19.376.10</span></a><a id="__RefHeading__1417662_253892949"/><a id="attribute-office_name_element-text_dde-connection-decl"/>&lt;text:dde-connection-decl&gt;</h3><p class="Text_20_body">The <span class="Attribute">office:name</span> attribute specifies a name by which a connection can be referenced.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:name</span> attribute is usable with the following element: <span class="Element">&lt;text:dde-connection-decl&gt;</span> <a href="#element-text_dde-connection-decl">14.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_377office_process-content__deprecated_"><span style="margin-right:0.127cm;">19.377</span></a><a id="__RefHeading__1417664_253892949"/><a id="attribute-office_process-content"/>office:process-content (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">office:process-content</span> attribute specifies the processing to be performed on foreign elements.</p><p class="Text_20_body">The defined values of the <span class="Attribute">office:process-content</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: conforming consumers should not interpret a foreign element's content, but may preserve its content, regardless of the foreign element's ancestor elements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: conforming consumers may interpret a foreign element's content without regard to its ancestor elements. <span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> The <span class="Attribute">office:process-content</span> attribute has been deprecated in favor of simpler rules regarding the processing of foreign elements. <a href="#ForeignElementsAndAttributes">3.17</a></p><h2 class="Heading_20_2"><a id="a19_378office_server-map"><span style="margin-right:0.127cm;">19.378</span></a><a id="__RefHeading__1417666_253892949"/><a id="attribute-office_server-map"/>office:server-map</h2><p class="Text_20_body">The <span class="Attribute">office:server-map</span> attribute specifies that a link returns data to a server side image map. The mouse coordinates of the click position of the graphic shape are appended to the IRI of the link. The coordinates are be used by the server to determine which link to activate within the image map.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">office:server-map</span> attribute is usable with the following element: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:server-map</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_379office_string-value"><span style="margin-right:0.127cm;">19.379</span></a><a id="__RefHeading__1417668_253892949"/><a id="attribute-office_string-value"/>office:string-value</h2><p class="Text_20_body">The <span class="Attribute">office:string-value</span> attribute specifies the string-value for a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>, <span class="Element">&lt;text:user-defined&gt;</span>, <span class="Element">&lt;text:user-field-decl&gt;</span> and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default value for database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>).</p><p class="Text_20_body">For <span class="Element">&lt;text:user-defined&gt;</span> elements, this attribute is only evaluated if the corresponding <span class="Element">&lt;meta:user-defined&gt;</span> element has (default) attribute <span class="Attribute">meta:value-type</span>="<span class="Attribute_20_Value">string</span>". </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:string-value</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:string-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_380office_target-frame"><span style="margin-right:0.127cm;">19.380</span></a><a id="__RefHeading__1417670_253892949"/><a id="attribute-office_target-frame"/>office:target-frame</h2><p class="Text_20_body">The <span class="Attribute">office:target-frame</span> attribute specifies a target frame.</p><p class="Text_20_body">The defined values for the <span class="Attribute">office:target-frame</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_blank</span>: The referenced document is displayed in a new frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_parent</span>: The referenced document is displayed in the parent frame of the current frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_self</span>: The referenced document replaces the content of the current frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_top</span>: The referenced document is displayed in the topmost frame, that is the frame that contains the current frame as a child or descendant but is not contained within another frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A frame name : The referenced document is displayed in the named frame. If the named frame does not exist, a new frame with that name is created.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">_blank</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">office:target-frame</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a> and <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:target-frame</span> attribute has the data type <span class="Datatype">targetFrameName</span> <a href="#datatype-targetFrameName">18.3.34</a>.</p><h2 class="Heading_20_2"><a id="a19_381office_target-frame-name"><span style="margin-right:0.127cm;">19.381</span></a><a id="__RefHeading__1417672_253892949"/><a id="attribute-office_target-frame-name"/>office:target-frame-name</h2><p class="Text_20_body">The <span class="Attribute">office:target-frame-name</span> attribute. specifies the name of a target frame.</p><p class="Text_20_body">The defined values for the <span class="Attribute">office:target-frame-name</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_blank</span>: The referenced document is displayed in a new frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_parent</span>: The referenced document is displayed in the parent frame of the current frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_self</span>: The referenced document replaces the content of the current frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">_top</span>: The referenced document is displayed in the topmost frame, that is the frame that contains the current frame as a child or descendant but is not contained within another frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A frame name: The referenced document is displayed in the named frame. If the named frame does not exist, a new frame with that name is created.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">office:target-frame-name</span> attribute may be used together with an <span class="Attribute">xlink:show</span> attribute. In that case, if the value of the attribute is <span class="Attribute_20_Value">_blank</span>, the <span class="Attribute">xlink:show</span> attribute value should be <span class="Attribute_20_Value">new</span>. If the value of the attribute is any of the other value options, the value of the <span class="Attribute">xlink:show</span> attribute should be <span class="Attribute_20_Value">replace</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:target-frame-name</span> attribute is usable with the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> <a href="#element-meta_hyperlink-behaviour">4.3.2.14</a> and <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:target-frame-name</span> attribute has the data type <span class="Datatype">targetFrameName</span> <a href="#datatype-targetFrameName">18.3.34</a>.</p><h2 class="Heading_20_2"><a id="a19_382office_time-value"><span style="margin-right:0.127cm;">19.382</span></a><a id="__RefHeading__1417674_253892949"/><a id="attribute-office_time-value"/>office:time-value</h2><p class="Text_20_body">The <span class="Attribute">office:time-value</span> attribute specifies the time value for a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>, <span class="Element">&lt;text:user-defined&gt;</span>, <span class="Element">&lt;text:user-field-decl&gt;</span> and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default value for database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>).</p><p class="Text_20_body">For <span class="Element">&lt;text:user-defined&gt;</span> elements, this attribute is only evaluated if the corresponding <span class="Element">&lt;meta:user-defined&gt;</span> element has attribute <span class="Attribute">meta:value-type</span>="<span class="Attribute_20_Value">time</span>".</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:time-value</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:time-value</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_383office_title"><span style="margin-right:0.127cm;">19.383</span></a><a id="__RefHeading__1417676_253892949"/><a id="attribute-office_title"/>office:title</h2><p class="Text_20_body">The <span class="Attribute">office:title</span> attribute specifies a short accessible description. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> See appendix D for guidelines on using this attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:title</span> attribute is usable with the following elements: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a> and <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_384office_value"><span style="margin-right:0.127cm;">19.384</span></a><a id="__RefHeading__1417678_253892949"/><a id="attribute-office_value"/>office:value</h2><p class="Text_20_body">The <span class="Attribute">office:value</span> attribute specifies the currency, float or percentage value for a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>, <span class="Element">&lt;text:user-defined&gt;</span>, <span class="Element">&lt;text:user-field-decl&gt;</span> and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default value for database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>). </p><p class="Text_20_body">For <span class="Element">&lt;text:user-defined&gt;</span> elements, this attribute is only interpreted if the corresponding <span class="Element">&lt;meta:user-defined&gt;</span> element has attribute <span class="Attribute">meta:value-type</span>="<span class="Attribute_20_Value">float</span>". </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:value</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-value&gt;</span> <a href="#element-form_list-value">13.10</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:value</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_385office_value-type"><span style="margin-right:0.127cm;">19.385</span></a><a id="__RefHeading__1417680_253892949"/><a id="attribute-office_value-type"/>office:value-type</h2><p class="Text_20_body">The <span class="Alien_20_Element">office:value-type</span> attribute specifies the value-type of a table cell (<span class="Element">&lt;table:change-track-table-cell&gt;</span>, <span class="Element">&lt;table:covered-table-cell&gt;</span> and <span class="Element">&lt;table:table-cell&gt;</span>), a text field (<span class="Element">&lt;text:expression&gt;</span>, <span class="Element">&lt;text:user-field-decl&gt;</span>, <span class="Element">&lt;text:variable-decl&gt;</span>, <span class="Element">&lt;text:variable-input&gt;</span>and <span class="Element">&lt;text:variable-set&gt;</span>), or a form property (<span class="Element">&lt;form:list-value&gt;</span> and <span class="Element">&lt;form:property&gt;</span>). </p><p class="Text_20_body">It specifies a default value type of database columns and database column definitions (<span class="Element">&lt;db:column&gt;</span> and <span class="Element">&lt;db:column-definition&gt;</span>). </p><p class="Text_20_body">If the value type is not <span class="Datatype">string</span>, the corresponding Value Attribute(s) (<a href="#refTable13">Table 14 - Value attributes</a>) shall contain the value(s) of the element. </p><p class="Text_20_body">Each of these elements has a value type that shall be specified. The defined value types, their respective value attributes, and how the values are encoded are described in <a href="#refTable13">Table 14 - Value attributes</a>.</p><p class="Table">Table <a id="refTable13"/>14 - Value attributes</p><table border="0" cellspacing="0" cellpadding="0" class="Table6"><colgroup><col width="102"/><col width="195"/><col width="239"/><col width="130"/></colgroup><tr><td style="text-align:left;width:0.9174in; " class="Table6_A1"><p class="Table_20_Heading">Value Type</p></td><td style="text-align:left;width:1.759in; " class="Table6_A1"><p class="Table_20_Heading">Value Attribute(s)</p></td><td style="text-align:left;width:2.1569in; " class="Table6_A1"><p class="Table_20_Heading">Encoded as...</p></td><td style="text-align:left;width:1.1667in; " class="Table6_D1"><p class="Table_20_Heading">Example</p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">boolean</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:boolean-value</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">true</span> or <span class="Source_20_Text">false</span></p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"true"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">currency</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:value</span> and<br/><span class="Source_20_Text">office:currency</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Table_20_Contents">Numeric value and<br/>currency symbol</p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"100"<br/></span><span class="Source_20_Text">"USD"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">date</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:date-value</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Text_20_body">Date value as specified in §3.2.9 of <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a>, or date and time value as specified in §3.2.7 of <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a></p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"2003-04-17"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">float</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:value</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Table_20_Contents">Numeric value</p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"12.345"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">percentage</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:value</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Table_20_Contents">Numeric value</p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"0.50"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">string</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:string-value</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Table_20_Contents">Strings</p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"abc def"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">time</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">office:time-value</span></p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Text_20_body">Duration, as specified in §3.2.6 of <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a></p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"><span class="Source_20_Text">"PT03H30M00S"</span></p></td></tr><tr><td style="text-align:left;width:0.9174in; " class="Table6_A2"><p class="Table_20_Contents"><span class="Source_20_Text">void</span></p></td><td style="text-align:left;width:1.759in; " class="Table6_A2"><p class="Table_20_Contents">none</p></td><td style="text-align:left;width:2.1569in; " class="Table6_A2"><p class="Text_20_body"> </p></td><td style="text-align:left;width:1.1667in; " class="Table6_D2"><p class="Table_20_Contents"> </p></td></tr></table><p class="Text_20_body">If the value type is string and the <span class="Attribute">office:string-value</span> attribute is not present, the element content defines the value. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The OpenDocument concept of field values and value types and their encoding in XML is also modeled on the corresponding XML for table cell attributes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:value-type</span> attribute is usable with the following elements: <span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a>, <span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a>, <span class="Element">&lt;form:list-property&gt;</span> <a href="#element-form_list-property">13.9</a>, <span class="Element">&lt;form:property&gt;</span> <a href="#element-form_property">13.8</a>, <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a>, <span class="Element">&lt;text:variable-decl&gt;</span> <a href="#element-text_variable-decl">7.4.3</a>, <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">office:value-type</span> attribute has the data type <span class="Datatype">valueType</span> <a href="#datatype-valueType">18.3.38</a>.</p><h2 class="Heading_20_2"><a id="a19_386office_version"><span style="margin-right:0.127cm;">19.386</span></a><a id="__RefHeading__1417682_253892949"/><a id="attribute-office_version"/>office:version</h2><p class="Text_20_body">The <span class="Attribute">office:version</span> attribute identifies the version of the OpenDocument specification that defines the associated element, its schema, its complete content, and its interpretation. <a id="line-651"/><a id="line-64"/></p><p class="Text_20_body">The <span class="Attribute">office:version</span> attribute <span class="ISO_20_Keyword">shall</span> be present in each and every <span class="Element">&lt;office:document&gt;</span>, <span class="Element">&lt;office:document-content&gt;</span>, <span class="Element">&lt;office:document-styles&gt;</span>, <span class="Element">&lt;office:document-meta&gt;</span>, and <span class="Element">&lt;office:document-settings&gt;</span> element in the XML documents that comprise an OpenDocument 1.2 document. The value of the <span class="Attribute">office:version</span> attribute <span class="ISO_20_Keyword">shall</span> be "<span class="Attribute_20_Value">1.2</span>". </p><p class="Text_20_body"><span class="Note_20_Label">Note 1:</span> When an <span class="Attribute">office:version</span>-requiring element has <span class="Attribute">office:version</span>="<span class="Alien_20_Attribute_20_Value">1.1</span>" the element and its content are based on the OpenDocument v1.1 specification <a title="Open Document Format for Office Applications (OpenDocument) v1.1" href="http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf">[ODF11]</a>. For <span class="Attribute">office:version</span>="<span class="Alien_20_Attribute_20_Value">1.0</span>" the element and its content are based on the OpenDocument v1.0 specification <a title="Open Document Format for Office Applications (OpenDocument) v1.0" href="http://docs.oasis-open.org/office/v1.0/OpenDocument-v1.0-os.pdf">[ODF10]</a>. When an <span class="Attribute">office:version</span>-requiring element has <span class="Attribute">office:version</span> omitted, the element is based on a version of the OpenDocument specification earlier than v1.2. </p><p class="Text_20_body"><span class="Note_20_Label">Note 2:</span>An OpenDocument 1.2 document that relies solely on features of a previous OpenDocument specification that are upward-compatible with OpenDocument 1.2, can be interpreted correctly under that earlier specification by treating the office:version=""1.2" attribute as omitted or as identifying the earlier version.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">office:version</span> attribute is usable with the following elements: <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>, <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a>, <span class="Element">&lt;office:document-meta&gt;</span> <a href="#element-office_document-meta">3.1.3.4</a>, <span class="Element">&lt;office:document-settings&gt;</span> <a href="#element-office_document-settings">3.1.3.5</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The only value of the <span class="Attribute">office:version</span> attribute is <span class="Attribute_20_Value">1.2</span>.</p><h2 class="Heading_20_2"><a id="a19_387presentation_action"><span style="margin-right:0.127cm;">19.387</span></a><a id="__RefHeading__1417684_253892949"/><a id="attribute-presentation_action"/>presentation:action</h2><p class="Text_20_body">The <span class="Attribute">presentation:action</span> attribute specifies the type of action that is executed when an event is triggered. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:action</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">execute</span>: another application is launched when this event is triggered. The application is specified with the <span class="Attribute">xlink:href</span> attribute on the same <span class="Element">&lt;presentation:event-listener&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-out</span>: the object that contains this event is faded out when this event is triggered. The attributes <span class="Attribute">presentation:effect</span>, <span class="Attribute">presentation:direction</span>, <span class="Attribute">presentation:speed</span> and <span class="Attribute">presentation:start-scale</span> can be used to set the effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">first-page</span>: the presentation jumps to the first page of the current document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hide</span>: the object that contains this event is hidden if the event is triggered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">last-page</span>: the presentation jumps to the last page of the current document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">last-visited-page</span>: the presentation jumps to the page that was displayed before the current page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">next-page</span>: the presentation jumps to the next page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no action is performed when this event is triggered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">previous-page</span>: the presentation jumps to the previous page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">show</span>: the target of an IRI is opened when this event is triggered. The IRI is specified with the <span class="Attribute">xlink:href</span> attribute on the same <span class="Element">&lt;presentation:event-listener&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sound</span>: an audio effect is started when the effect is triggered. The audio effect is described by a <span class="Element">&lt;presentation:sound&gt;</span> child element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stop</span>: if a slide show is active, it will be stopped.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">verb</span>: if the object that contains this event supports the execution of <a title="Inside OLE">[OLE]</a> verbs, the verb with the id set in the <span class="Attribute">presentation:verb</span> attribute is executed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:action</span> attribute is usable with the following element: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:action</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">previous-page</span>, <span class="Attribute_20_Value">next-page</span>, <span class="Attribute_20_Value">first-page</span>, <span class="Attribute_20_Value">last-page</span>, <span class="Attribute_20_Value">hide</span>, <span class="Attribute_20_Value">stop</span>, <span class="Attribute_20_Value">execute</span>, <span class="Attribute_20_Value">show</span>, <span class="Attribute_20_Value">verb</span>, <span class="Attribute_20_Value">fade-out</span>, <span class="Attribute_20_Value">sound</span> or <span class="Attribute_20_Value">last-visited-page</span>.</p><h2 class="Heading_20_2"><a id="a19_388presentation_animations"><span style="margin-right:0.127cm;">19.388</span></a><a id="__RefHeading__1417686_253892949"/><a id="attribute-presentation_animations"/>presentation:animations</h2><p class="Text_20_body">The <span class="Attribute">presentation:animations</span> attribute enables or disables the playback of animations that are specified within embedded or linked images during a presentation. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:animations</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">disabled</span>: image animations cannot be played during a presentation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">enabled</span>: image animations can be played during a presentation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">enabled</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:animations</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:animations</span> attribute are <span class="Attribute_20_Value">enabled</span> or <span class="Attribute_20_Value">disabled</span>.</p><h2 class="Heading_20_2"><a id="a19_389presentation_class"><span style="margin-right:0.127cm;">19.389</span></a><a id="__RefHeading__1417688_253892949"/><a id="attribute-presentation_class"/>presentation:class</h2><p class="Text_20_body">The <span class="Attribute">presentation:class</span> attribute classifies presentation shapes by their usage within a draw page. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:class</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chart</span>: presentation charts are standard object shapes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">graphic</span>: presentation graphics are standard graphic shapes<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">handout</span>: presentation handouts are placeholder for the drawing page in a handout page<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">notes</span>: presentation notes are used on notes pages<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">object</span>: presentation objects are standard object shapes<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">orgchart</span>: presentation organization charts are standard object shapes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outline</span>: outlines are standard text shapes<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">page</span>: presentation pages are used on notes pages<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">subtitle</span>: subtitles are standard text shapes<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">table</span>: presentation tables are standard object shapes<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">text</span>: presentation texts are standard text shapes<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">title</span>: titles are standard text shapes<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute_20_Value">date-time</span>, <span class="Attribute_20_Value">footer</span>, <span class="Attribute_20_Value">header</span>, and <span class="Attribute_20_Value">page-number</span> classes can be used only for drawing shapes that are contained in master pages. Depending on the settings of the <span class="Element">&lt;style:master-page&gt;</span> element, they are displayed automatically on drawing pages that use the master page.</p><p class="Text_20_body">When used with drawing shapes contained in master pages, the defined values for the <span class="Attribute">presentation:class</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">date-time</span>: drawing shape is used as a date and/or time shape. Date and Time shapes are standard text shapes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">footer</span>: drawing shape is used as a footer. Footer shapes are standard text shapes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">header</span>: drawing shape is used as a header. Header shapes are standard text shapes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">page-number</span>: drawing shape is used as a page number shape. Page Number shapes are standard text shapes.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:class</span> attribute is usable with the following elements: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a> and <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:class</span> attribute are <span class="Attribute_20_Value">title</span>, <span class="Attribute_20_Value">outline</span>, <span class="Attribute_20_Value">subtitle</span>, <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">graphic</span>, <span class="Attribute_20_Value">object</span>, <span class="Attribute_20_Value">chart</span>, <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">orgchart</span>, <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">notes</span>, <span class="Attribute_20_Value">handout</span>, <span class="Attribute_20_Value">header</span>, <span class="Attribute_20_Value">footer</span>, <span class="Attribute_20_Value">date-time</span> or <span class="Attribute_20_Value">page-number</span>.</p><h2 class="Heading_20_2"><a id="a19_390presentation_class-names"><span style="margin-right:0.127cm;">19.390</span></a><a id="__RefHeading__1417690_253892949"/><a id="attribute-presentation_class-names"/>presentation:class-names</h2><p class="Text_20_body">The <span class="Attribute">presentation:class-names</span> attribute specifies a white space separated list of styles with the family value of <span class="Attribute_20_Value">presentation</span>. The referenced styles are applied in the order they are contained in the list. </p><p class="Text_20_body">If both <span class="Attribute">presentation:style-name</span> and <span class="Attribute">presentation:class-names</span> are present, the style referenced by the <span class="Attribute">presentation:style-name</span> attribute is applied before the styles referenced by the <span class="Attribute">presentation:class-names</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:class-names</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:class-names</span> attribute has the data type <span class="Datatype">styleNameRefs</span> <a href="#datatype-styleNameRefs">18.3.33</a>.</p><h2 class="Heading_20_2"><a id="a19_391presentation_delay"><span style="margin-right:0.127cm;">19.391</span></a><a id="__RefHeading__1417692_253892949"/><a id="attribute-presentation_delay"/>presentation:delay</h2><p class="Text_20_body">The <span class="Attribute">presentation:delay</span> attribute specifies the delay before a presentation effect starts after the previous one has finished.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:delay</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:delay</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_392presentation_direction"><span style="margin-right:0.127cm;">19.392</span></a><a id="__RefHeading__1417694_253892949"/><a id="attribute-presentation_direction"/>presentation:direction</h2><p class="Text_20_body">The <span class="Attribute">presentation:direction</span> attribute specifies the direction of an effect. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">clockwise</span>: effect moves in a clockwise direction.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">counter-clockwise</span>: effect moves in a counter-clockwise direction.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-bottom</span>: effect moves from the bottom of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-center</span>: effect moves from the center of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-left</span>: effect moves from the left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-right</span>: effect moves from the right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-top</span>: effect moves from the top of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-lower-left</span>: effect moves from the lower-left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-lower-right</span>: effect moves from the lower-right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-upper-left</span>: effect moves from the upper-left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-upper-right</span>: effect moves from the upper-right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal</span>: effect moves from the bottom of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no presentation effect direction<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">path</span>: effect moves from the bottom of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiral-inward-left</span>: effect spirals inward from the left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiral-inward-right</span>: effect spirals inward from the right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiral-outward-left</span>: effect spirals outward to the left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiral-outward-right</span>: effect spirals outward to the right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-left</span>: effect moves to the left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-top</span>: effect moves to the top of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-right</span>: effect moves to the right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-bottom</span>: effect moves to the bottom of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-center</span>: effect moves from the center of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-lower-left</span>: effect moves to the lower-left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-upper-left</span>: effect moves to the upper-left of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-lower-right</span>: effect moves to the lower-right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">to-upper-right</span>: effect moves to the upper-right of the presentation area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: effect moves vertically in the presentation area.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:direction</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:direction</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">from-left</span>, <span class="Attribute_20_Value">from-top</span>, <span class="Attribute_20_Value">from-right</span>, <span class="Attribute_20_Value">from-bottom</span>, <span class="Attribute_20_Value">from-center</span>, <span class="Attribute_20_Value">from-upper-left</span>, <span class="Attribute_20_Value">from-upper-right</span>, <span class="Attribute_20_Value">from-lower-left</span>, <span class="Attribute_20_Value">from-lower-right</span>, <span class="Attribute_20_Value">to-left</span>, <span class="Attribute_20_Value">to-top</span>, <span class="Attribute_20_Value">to-right</span>, <span class="Attribute_20_Value">to-bottom</span>, <span class="Attribute_20_Value">to-upper-left</span>, <span class="Attribute_20_Value">to-upper-right</span>, <span class="Attribute_20_Value">to-lower-right</span>, <span class="Attribute_20_Value">to-lower-left</span>, <span class="Attribute_20_Value">path</span>, <span class="Attribute_20_Value">spiral-inward-left</span>, <span class="Attribute_20_Value">spiral-inward-right</span>, <span class="Attribute_20_Value">spiral-outward-left</span>, <span class="Attribute_20_Value">spiral-outward-right</span>, <span class="Attribute_20_Value">vertical</span>, <span class="Attribute_20_Value">horizontal</span>, <span class="Attribute_20_Value">to-center</span>, <span class="Attribute_20_Value">clockwise</span> or <span class="Attribute_20_Value">counter-clockwise</span>.</p><h2 class="Heading_20_2"><a id="a19_393presentation_endless"><span style="margin-right:0.127cm;">19.393</span></a><a id="__RefHeading__1417696_253892949"/><a id="attribute-presentation_endless"/>presentation:endless</h2><p class="Text_20_body">The <span class="Attribute">presentation:endless</span> attribute specifies is a presentation repeats indefinitely or not.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:endless</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: presentation does not repeat indefinitely.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: presentation repeats indefinitely.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:endless</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:endless</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_394presentation_effect"><span style="margin-right:0.127cm;">19.394</span></a><a id="__RefHeading__1417698_253892949"/><a id="attribute-presentation_effect"/>presentation:effect</h2><p class="Text_20_body">The <span class="Attribute">presentation:effect</span> attribute specifies the type of an effect.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:effect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">appear</span>: the shape is faded in by just switching its state from invisible to visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">checkerboard</span>: the shape is faded in or out by drawing or removing checkerboard like blocks that increase in size over time.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">close</span>: the shape is drawn or removed line by line, either horizontally or vertically, starting at the edge of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dissolve</span>: the shape is faded in or out by drawing or removing small blocks in a random fashion.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade</span>: the shape fades from its visible or hidden state to a hidden or visible state.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hide</span>: the shape is faded out by just switching its state from visible to invisible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">laser</span>: this effect is only available for text shapes; the characters of the text are moved one by one from the top edge of the screen to their final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">lines</span>: the shape is faded in and out by drawing or removing line by line, either horizontally or vertically, in a random fashion.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move</span>: the shape moves from or to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-short</span>: like the move effect, but the moving shape is clipped to its final bounding rectangle during fade.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no effect is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">open</span>: the shape is drawn or removed line by line, either horizontally or vertically, starting at the center of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">random</span>: an effect is chosen at random to fade the shape in or out.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">rotate</span>: the shape rotates horizontally or vertically for a short amount of time during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch</span>: the shape is faded in or out by changing its size during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stripes</span>: the shape is faded in or out by drawing or removing horizontal or vertical stripes that change their size.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wavyline</span>: the shape is faded in and out by drawing or removing small blocks in a snake like fashion.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:effect</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:effect</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">fade</span>, <span class="Attribute_20_Value">move</span>, <span class="Attribute_20_Value">stripes</span>, <span class="Attribute_20_Value">open</span>, <span class="Attribute_20_Value">close</span>, <span class="Attribute_20_Value">dissolve</span>, <span class="Attribute_20_Value">wavyline</span>, <span class="Attribute_20_Value">random</span>, <span class="Attribute_20_Value">lines</span>, <span class="Attribute_20_Value">laser</span>, <span class="Attribute_20_Value">appear</span>, <span class="Attribute_20_Value">hide</span>, <span class="Attribute_20_Value">move-short</span>, <span class="Attribute_20_Value">checkerboard</span>, <span class="Attribute_20_Value">rotate</span> or <span class="Attribute_20_Value">stretch</span>.</p><h2 class="Heading_20_2"><a id="a19_395presentation_force-manual"><span style="margin-right:0.127cm;">19.395</span></a><a id="__RefHeading__1417700_253892949"/><a id="attribute-presentation_force-manual"/>presentation:force-manual</h2><p class="Text_20_body">The <span class="Attribute">presentation:force-manual</span> attribute specifies that the value of the <span class="Attribute">presentation:transition-type</span> attribute is set to <span class="Attribute_20_Value">manual</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:force-manual</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: <span class="Attribute">presentation:transition-type</span> attribute is not set to manual.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: <span class="Attribute">presentation:</span><span class="Attribute">transition-type</span> attribute is set to manual.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:force-manual</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:force-manual</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_396presentation_full-screen"><span style="margin-right:0.127cm;">19.396</span></a><a id="__RefHeading__1417702_253892949"/><a id="attribute-presentation_full-screen"/>presentation:full-screen</h2><p class="Text_20_body">The <span class="Attribute">presentation:full-screen</span> attribute specifies whether the presentation is displayed in full screen mode or in a window.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:full-screen</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: presentation is displayed in a window.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: presentation is displayed in full screen mode.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:full-screen</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:full-screen</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_397presentation_group-id"><span style="margin-right:0.127cm;">19.397</span></a><a id="__RefHeading__1417704_253892949"/><a id="attribute-presentation_group-id"/>presentation:group-id</h2><p class="Text_20_body">The <span class="Attribute">presentation:group-id</span> attribute specifies a group id. This id can be used to group animation elements within a user interface, where a group consists of all animation elements that have the same group id.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:group-id</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:group-id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_398presentation_master-element"><span style="margin-right:0.127cm;">19.398</span></a><a id="__RefHeading__1417706_253892949"/><a id="attribute-presentation_master-element"/>presentation:master-element</h2><p class="Text_20_body">The <span class="Attribute">presentation:master-element</span> attribute specifies the id of an animation element.</p><p class="Note"><span class="Note_20_Label">Note:</span> Consumer user interfaces may consider animation elements that have a <span class="Attribute">presentation:master-element</span> attribute to be a part of the animation element that is referenced, and may therefore exclude them from any lists of defined animations. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:master-element</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:master-element</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_399presentation_mouse-as-pen"><span style="margin-right:0.127cm;">19.399</span></a><a id="__RefHeading__1417708_253892949"/><a id="attribute-presentation_mouse-as-pen"/>presentation:mouse-as-pen</h2><p class="Text_20_body">The <span class="Attribute">presentation:mouse-as-pen</span> attribute specifies if a mouse pointer is displayed as a pen or a pointer. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:mouse-as-pen</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: mouse pointer is used as a pointer.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: mouse pointer is used for drawing.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:mouse-as-pen</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:mouse-as-pen</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_400presentation_mouse-visible"><span style="margin-right:0.127cm;">19.400</span></a><a id="__RefHeading__1417710_253892949"/><a id="attribute-presentation_mouse-visible"/>presentation:mouse-visible</h2><p class="Text_20_body">The <span class="Attribute">presentation:mouse-visible</span> attribute specifies whether a mouse pointer is visible during a presentation.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:mouse-visible</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: mouse not visible during presentation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: mouse visible during presentation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:mouse-visible</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:mouse-visible</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_401presentation_name"><span style="margin-right:0.127cm;">19.401</span></a><a id="__RefHeading__1417712_253892949"/><a id="attribute-presentation_name"/>presentation:name</h2><p class="Text_20_body">The <span class="Attribute">presentation:name</span> attribute identifies the element on which it appears inside a presentation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:name</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:date-time-decl&gt;</span> <a href="#element-presentation_date-time-decl">10.9.3.6</a>, <span class="Element">&lt;presentation:footer-decl&gt;</span> <a href="#element-presentation_footer-decl">10.9.3.4</a>, <span class="Element">&lt;presentation:header-decl&gt;</span> <a href="#element-presentation_header-decl">10.9.3.2</a> and <span class="Element">&lt;presentation:show&gt;</span> <a href="#element-presentation_show">10.9.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_402presentation_node-type"><span style="margin-right:0.127cm;">19.402</span></a><a id="__RefHeading__1417714_253892949"/><a id="attribute-presentation_node-type"/>presentation:node-type</h2><p class="Text_20_body">The <span class="Attribute">presentation:node-type</span> attribute specifies a node type for an animation element. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:node-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">after-previous</span>: this animation element is the root element of an effect that starts after the previous effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">default</span>: no node type is defined. This is the default setting.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">interactive-sequence</span>: this animation element is the root element for a sequence of effects that are started when the user selects an element inside a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">main-sequence</span>: this animation element is the root element for the main sequence of effects of a page<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">on-click</span>: this animation element is the root element of an effect that starts with a user click.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">timing-root</span>: this animation element is the root element for the animation of a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">with-previous</span>: this animation element is the root element of an effect that starts with the previous effect.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> Click is the action of a computer user moving a cursor or focus to a location on a screen (point) and then pressing a mouse button, usually the left button(click), or other pointing device. A click can be used with any number of input devices varying from mice, touch pads, keyboards, joysticks, scroll buttons, and roller balls. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">default</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:node-type</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:node-type</span> attribute are <span class="Attribute_20_Value">default</span>, <span class="Attribute_20_Value">on-click</span>, <span class="Attribute_20_Value">with-previous</span>, <span class="Attribute_20_Value">after-previous</span>, <span class="Attribute_20_Value">timing-root</span>, <span class="Attribute_20_Value">main-sequence</span> or <span class="Attribute_20_Value">interactive-sequence</span>.</p><h2 class="Heading_20_2"><a id="a19_403presentation_object"><span style="margin-right:0.127cm;">19.403</span></a><a id="__RefHeading__1417716_253892949"/><a id="attribute-presentation_object"/>presentation:object</h2><p class="Text_20_body">The <span class="Attribute">presentation:object</span> attribute specifies the type of object that a <span class="Element">&lt;presentation:placeholder&gt;</span> element represents. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:object</span> attribute are the same as those defined for the <span class="Attribute">presentation:class</span> attribute. <a href="#attribute-presentation_class">19.389</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:object</span> attribute is usable with the following element: <span class="Element">&lt;presentation:placeholder&gt;</span> <a href="#element-presentation_placeholder">16.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:object</span> attribute are <span class="Attribute_20_Value">title</span>, <span class="Attribute_20_Value">outline</span>, <span class="Attribute_20_Value">subtitle</span>, <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">graphic</span>, <span class="Attribute_20_Value">object</span>, <span class="Attribute_20_Value">chart</span>, <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">orgchart</span>, <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">notes</span>, <span class="Attribute_20_Value">handout</span>, <span class="Attribute_20_Value">header</span>, <span class="Attribute_20_Value">footer</span>, <span class="Attribute_20_Value">date-time</span> or <span class="Attribute_20_Value">page-number</span>.</p><h2 class="Heading_20_2"><a id="a19_404presentation_pages"><span style="margin-right:0.127cm;">19.404</span></a><a id="__RefHeading__1417718_253892949"/><a id="attribute-presentation_pages"/>presentation:pages</h2><p class="Text_20_body">The <span class="Attribute">presentation:pages</span> attribute specifies a comma “,” (U+002C, COMMA) separated list of page names as given by <span class="Attribute">draw:name</span> attributes on <span class="Element">&lt;draw:page&gt;</span> elements. The pages are displayed in the order in which they are listed during a presentation that uses this show. Pages can be included more than once.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:pages</span> attribute is usable with the following element: <span class="Element">&lt;presentation:show&gt;</span> <a href="#element-presentation_show">10.9.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:pages</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_405presentation_path-id"><span style="margin-right:0.127cm;">19.405</span></a><a id="__RefHeading__1417720_253892949"/><a id="attribute-presentation_path-id"/>presentation:path-id</h2><p class="Text_20_body">The <span class="Attribute">presentation:path-id</span> attribute specifies a polygon shape by the value of its <span class="Attribute">draw:shape-id</span> attribute. An effect moves along the lines of the specified polygon. The referenced polygon is not visible during the presentation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:path-id</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:path-id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_406presentation_pause"><span style="margin-right:0.127cm;">19.406</span></a><a id="__RefHeading__1417722_253892949"/><a id="attribute-presentation_pause"/>presentation:pause</h2><p class="Text_20_body">The <span class="Attribute">presentation:pause</span> attribute specifies a time duration for displaying a pause screen before the presentation is played again if the presentation is to be repeated indefinitely. If this attribute is not set or has a value of <span class="Attribute_20_Value_20_Instance">P0s</span>, a pause screen is not displayed in endless mode.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:pause</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:pause</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_407presentation_placeholder"><span style="margin-right:0.127cm;">19.407</span></a><a id="__RefHeading__1417724_253892949"/><a id="attribute-presentation_placeholder"/>presentation:placeholder</h2><p class="Text_20_body">The <span class="Attribute">presentation:placeholder</span> attribute specifies if a shape is a placeholder or a presentation object with content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:placeholder</span> attribute is usable with the following elements: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a> and <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:placeholder</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_408presentation_play-full"><span style="margin-right:0.127cm;">19.408</span></a><a id="__RefHeading__1417726_253892949"/><a id="attribute-presentation_play-full"/>presentation:play-full</h2><p class="Text_20_body">The <span class="Attribute">presentation:play-full</span> attribute specifies when an effect starts.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:play-full</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: effect starts after current effect ends.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: effect starts after the sound specified by its parent <span class="Element">&lt;presentation:sound&gt;</span> element ends.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:play-full</span> attribute is usable with the following element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:play-full</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_409presentation_presentation-page-layout-name"><span style="margin-right:0.127cm;">19.409</span></a><a id="__RefHeading__1417728_253892949"/><a id="attribute-presentation_presentation-page-layout-name"/>presentation:presentation-page-layout-name</h2><p class="Text_20_body">The <span class="Attribute">presentation:presentation-page-layout-name</span> attribute references the <span class="Attribute">style:name</span> attribute of a <span class="Element">&lt;style:presentation-page-layout&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:presentation-page-layout-name</span> attribute is usable with the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a> and <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:presentation-page-layout-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_410presentation_preset-class"><span style="margin-right:0.127cm;">19.410</span></a><a id="__RefHeading__1417730_253892949"/><a id="attribute-presentation_preset-class"/>presentation:preset-class</h2><p class="Text_20_body">The <span class="Attribute">presentation:preset-class</span> attribute specifies the class of the preset that was used to create an animation element. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:preset-class</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom</span>: the preset was a user defined one. This is the default setting.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">entrance</span>: the preset was an entrance effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">exit</span>: the preset was an exit effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">emphasis</span>: the preset was an emphasis effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">motion-path</span>: the preset was a motion path.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ole-action</span>: the preset was an ole action.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">media-call</span>: the preset was a media call.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">custom</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:preset-class</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:preset-class</span> attribute are <span class="Attribute_20_Value">custom</span>, <span class="Attribute_20_Value">entrance</span>, <span class="Attribute_20_Value">exit</span>, <span class="Attribute_20_Value">emphasis</span>, <span class="Attribute_20_Value">motion-path</span>, <span class="Attribute_20_Value">ole-action</span> or <span class="Attribute_20_Value">media-call</span>.</p><h2 class="Heading_20_2"><a id="a19_411presentation_preset-id"><span style="margin-right:0.127cm;">19.411</span></a><a id="__RefHeading__1417732_253892949"/><a id="attribute-presentation_preset-id"/>presentation:preset-id</h2><p class="Text_20_body">The <span class="Attribute">presentation:preset-id</span> attribute specifies the name of the preset that was used to create an animation element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:preset-id</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:preset-id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_412presentation_preset-sub-type"><span style="margin-right:0.127cm;">19.412</span></a><a id="__RefHeading__1417734_253892949"/><a id="attribute-presentation_preset-sub-type"/>presentation:preset-sub-type</h2><p class="Text_20_body">The <span class="Attribute">presentation:preset-sub-type</span> attribute specifies the sub type of the preset that was used to create an animation element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:preset-sub-type</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:preset-sub-type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_413presentation_show"><span style="margin-right:0.127cm;">19.413</span></a><a id="__RefHeading__1417736_253892949"/><a id="attribute-presentation_show"/>presentation:show</h2><p class="Text_20_body">The <span class="Attribute">presentation:show</span> attribute specifies the name of a <span class="Element">&lt;presentation:show&gt;</span> element that is used for the presentation. If the <span class="Attribute">presentation:start-page</span> attribute is set, it overrides the value of this attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:show</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:show</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_414presentation_show-end-of-presentation-slide"><span style="margin-right:0.127cm;">19.414</span></a><a id="__RefHeading__1417738_253892949"/><a id="attribute-presentation_show-end-of-presentation-slide"/>presentation:show-end-of-presentation-slide</h2><p class="Text_20_body">The <span class="Attribute">presentation:show-end-of-presentation-slide</span> attribute specifies whether an additional slide should be shown at the end of the presentation, indicating the presentation is finished.</p><p class="Text_20_body">The slide content is not defined within the document, but is implementation-defined.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:show-end-of-presentation-slide</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: end of presentation slide not shown at end of presentation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: end of presentation slide shown at end of presentation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:show-end-of-presentation-slide</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:show-end-of-presentation-slide</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_415presentation_show-logo"><span style="margin-right:0.127cm;">19.415</span></a><a id="__RefHeading__1417740_253892949"/><a id="attribute-presentation_show-logo"/>presentation:show-logo</h2><p class="Text_20_body">The <span class="Attribute">presentation:show-logo</span> attribute specifies whether an implementation-defined logo is shown on a pause screen.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:show-logo</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: logo not shown on pause screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: logo shown on pause screen.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:show-logo</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:show-logo</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_416presentation_source"><span style="margin-right:0.127cm;">19.416</span></a><a id="__RefHeading__1417742_253892949"/><a id="attribute-presentation_source"/>presentation:source</h2><p class="Text_20_body">The <span class="Attribute">presentation:source</span> attribute specifies whether the current date/time or the fixed content of the field declaration is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:source</span> attribute is usable with the following element: <span class="Element">&lt;presentation:date-time-decl&gt;</span> <a href="#element-presentation_date-time-decl">10.9.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:source</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">current-date</span>.</p><h2 class="Heading_20_2"><a id="a19_417presentation_speed"><span style="margin-right:0.127cm;">19.417</span></a><a id="__RefHeading__1417744_253892949"/><a id="attribute-presentation_speed"/>presentation:speed</h2><p class="Text_20_body">The <span class="Attribute">presentation:speed</span> attribute specifies the speed of an effect.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:speed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fast</span>: An implementation-defined speed. The <span class="Attribute_20_Value">fast</span> speed should be faster than the speed the implementation chooses for the values <span class="Attribute_20_Value">medium</span> and <span class="Attribute_20_Value">slow</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">medium</span>: An implementation-defined speed. The <span class="Attribute_20_Value">medium</span> speed should be faster than the speed the implementation chooses for the value <span class="Attribute_20_Value">slow</span>, and slower than the speed the implementation chooses for the value <span class="Attribute_20_Value">fast</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">slow</span>: An implementation-defined speed. The <span class="Attribute_20_Value">slow</span> speed should be slower than the speed the implementation chooses for the values <span class="Attribute_20_Value">medium</span> and <span class="Attribute_20_Value">fast</span>. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The rates specified by these values are implementation-defined.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">medium</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:speed</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:play&gt;</span> <a href="#element-presentation_play">10.8.8</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:speed</span> attribute are <span class="Attribute_20_Value">slow</span>, <span class="Attribute_20_Value">medium</span> or <span class="Attribute_20_Value">fast</span>.</p><h2 class="Heading_20_2"><a id="a19_418presentation_start-scale"><span style="margin-right:0.127cm;">19.418</span></a><a id="__RefHeading__1417746_253892949"/><a id="attribute-presentation_start-scale"/>presentation:start-scale</h2><p class="Text_20_body">The <span class="Attribute">presentation:start-scale</span> attribute specifies the start size of a shape as a percentage of its original size. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">100%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:start-scale</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:hide-shape&gt;</span> <a href="#element-presentation_hide-shape">10.8.5</a>, <span class="Element">&lt;presentation:hide-text&gt;</span> <a href="#element-presentation_hide-text">10.8.6</a>, <span class="Element">&lt;presentation:show-shape&gt;</span> <a href="#element-presentation_show-shape">10.8.3</a> and <span class="Element">&lt;presentation:show-text&gt;</span> <a href="#element-presentation_show-text">10.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:start-scale</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_419presentation_start-page"><span style="margin-right:0.127cm;">19.419</span></a><a id="__RefHeading__1417748_253892949"/><a id="attribute-presentation_start-page"/>presentation:start-page</h2><p class="Text_20_body">The <span class="Attribute">presentation:start-page</span> attribute specifies the name of the page on which the presentation starts. If this attribute is set, it overrides the <span class="Attribute">presentation:show</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:start-page</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:start-page</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_420presentation_start-with-navigator"><span style="margin-right:0.127cm;">19.420</span></a><a id="__RefHeading__1417750_253892949"/><a id="attribute-presentation_start-with-navigator"/>presentation:start-with-navigator</h2><p class="Text_20_body">The <span class="Attribute">presentation:start-with-navigator</span> attribute specifies whether a navigator window is initially displayed during a presentation.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:start-with-navigator</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: navigator window not displayed initially during a presentation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: navigator window displayed initially during a presentation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:start-with-navigator</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:start-with-navigator</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_421presentation_stay-on-top"><span style="margin-right:0.127cm;">19.421</span></a><a id="__RefHeading__1417752_253892949"/><a id="attribute-presentation_stay-on-top"/>presentation:stay-on-top</h2><p class="Text_20_body">The <span class="Attribute">presentation:stay-on-top</span> attribute specifies whether a presentation window is displayed on top of other windows during a presentation.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:stay-on-top</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: presentation window need not be displayed on top of other windows during a presentation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: presentation window displayed on top of other windows during a presentation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:stay-on-top</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:stay-on-top</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_422presentation_style-name"><span style="margin-right:0.127cm;">19.422</span></a><a id="__RefHeading__1417754_253892949"/><a id="attribute-presentation_style-name"/>presentation:style-name</h2><p class="Text_20_body">The <span class="Attribute">presentation:style-name</span> attribute specifies a style for a presentation shape. </p><p class="Text_20_body">The value of the attribute is the name of a <span class="Element">&lt;style:style&gt;</span> element that has a family value of <span class="Attribute_20_Value">presentation</span>. The formatting properties of the specified style and its parent styles are used to format the shape.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:style-name</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_423presentation_transition-on-click"><span style="margin-right:0.127cm;">19.423</span></a><a id="__RefHeading__1417756_253892949"/><a id="attribute-presentation_transition-on-click"/>presentation:transition-on-click</h2><p class="Text_20_body">The <span class="Attribute">presentation:transition-on-click</span> attributes specifies whether a mouse click on a slide during a presentation triggers a transition. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:transition-on-click</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">disabled</span>: mouse click on a slide during a presentation does not trigger a transition.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">nabled</span>: mouse click on a slide during a presentation triggers a transition. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">enabled</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">presentation:transition-on-click</span> attribute is usable with the following element: <span class="Element">&lt;presentation:settings&gt;</span> <a href="#element-presentation_settings">10.9.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:transition-on-click</span> attribute are <span class="Attribute_20_Value">enabled</span> or <span class="Attribute_20_Value">disabled</span>.</p><h2 class="Heading_20_2"><a id="a19_424presentation_use-date-time-name"><span style="margin-right:0.127cm;">19.424</span></a><a id="__RefHeading__1417758_253892949"/><a id="attribute-presentation_use-date-time-name"/>presentation:use-date-time-name</h2><p class="Text_20_body">The <span class="Attribute">presentation:use-date-time-name</span> attribute specifies the name of the <span class="Element">&lt;presentation:date-time-decl&gt;</span> that is used for all <span class="Element">&lt;presentation:date-time&gt;</span> elements that are displayed on a page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:use-date-time-name</span> attribute is usable with the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a> and <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:use-date-time-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_425presentation_use-footer-name"><span style="margin-right:0.127cm;">19.425</span></a><a id="__RefHeading__1417760_253892949"/><a id="attribute-presentation_use-footer-name"/>presentation:use-footer-name</h2><p class="Text_20_body">The <span class="Attribute">presentation:use-footer-name</span> attribute specifies the name of the <span class="Element">&lt;presentation:footer-decl&gt;</span> element that is used for all <span class="Element">&lt;presentation:footer&gt;</span> elements that are displayed on a page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:use-footer-name</span> attribute is usable with the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a> and <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:use-footer-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_426presentation_use-header-name"><span style="margin-right:0.127cm;">19.426</span></a><a id="__RefHeading__1417762_253892949"/><a id="attribute-presentation_use-header-name"/>presentation:use-header-name</h2><p class="Text_20_body">The <span class="Attribute">presentation:use-header-name</span> attribute specifies the name of the <span class="Element">&lt;presentation:header-decl&gt;</span> element that is used for all <span class="Element">&lt;presentation:header&gt;</span> elements that are displayed on a page.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:use-header-name</span> attribute is usable with the following elements: <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a> and <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:use-header-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_427presentation_user-transformed"><span style="margin-right:0.127cm;">19.427</span></a><a id="__RefHeading__1417764_253892949"/><a id="attribute-presentation_user-transformed"/>presentation:user-transformed</h2><p class="Text_20_body">The <span class="Attribute">presentation:user-transformed</span> attribute specifies whether the size and position of the shape is set by the user or is set by the corresponding presentation shape on the master page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:user-transformed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: size and position of shape set by corresponding presentation shape on master page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: size and position of shape set by user. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:user-transformed</span> attribute is usable with the following elements: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a> and <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:user-transformed</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_428presentation_verb"><span style="margin-right:0.127cm;">19.428</span></a><a id="__RefHeading__1417766_253892949"/><a id="attribute-presentation_verb"/>presentation:verb</h2><p class="Text_20_body">The <span class="Attribute">presentation:verb</span> attribute specifies the <a title="Inside OLE">[OLE]</a> verb that is executed for event listeners of type <span class="Attribute_20_Value">verb</span> at the object that contains this event.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:verb</span> attribute is usable with the following element: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:verb</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_429script_event-name"><span style="margin-right:0.127cm;">19.429</span></a><a id="__RefHeading__1417768_253892949"/><a id="attribute-script_event-name"/>script:event-name</h2><p class="Text_20_body">The <span class="Attribute">script:event-name</span> attribute specifies the name of an event. </p><p class="Text_20_body">Event names should begin with a namespace prefix followed by a “:” (U+003A, COLON).</p><p class="Text_20_body">Where appropriate, producers should use the event names described in <a title="Document Object Model (DOM) Level 2 Events Specification" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113">[DOMEvents2]</a>. The corresponding namespace is “http://www.w3.org/2001/xml-events”.</p><p class="Note"><span class="Note_20_Label">Note:</span> Event names defined in <a title="Document Object Model (DOM) Level 2 Events Specification" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113">[DOMEvents2]</a> are not namespaced. If used in OpenDocument, they should be preceded by a namespace prefix as described above</p><p class="Text_20_body">Table <a href="#refTable14">15</a> specifies events defined in <a title="Document Object Model (DOM) Level 2 Events Specification" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113">[DOMEvents2]</a> that have an equivalent event in HTML. The namespace used for these events is “http://www.w3.org/2001/xml-events”“. The namespace prefix used in this specification is “dom”.</p><p class="Table">Table  <a id="refTable14"/>15 Script Events</p><table border="0" cellspacing="0" cellpadding="0" class="Table7"><colgroup><col width="200"/><col width="135"/><col width="331"/></colgroup><tr><td style="text-align:left;width:1.8014in; " class="Table7_A1"><p class="Table_20_Heading">Value of <span class="Attribute">script:event-name</span> Attribute</p></td><td style="text-align:left;width:1.2188in; " class="Table7_A1"><p class="Table_20_Heading">Equivalent HTML Event</p></td><td style="text-align:left;width:2.9799in; " class="Table7_C1"><p class="Table_20_Heading">Description of Event</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:change</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onchange</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a control is no longer focused and the value of the control was modified since it was given focus.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:DOMFocusIn</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onfocus</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a control is given focus using the mouse or the TAB key.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:DOMFocusOut</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onblur</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a control is no longer focused as a result of moving the mouse or by tabbing navigation. It may be used with the same elements as <span class="Attribute_20_Value_20_Instance">form:on-focus</span>.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:</span><span class="Source_20_Text">mousedown</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onmousedown</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a mouse button is pressed on a control.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:</span><span class="Source_20_Text">mousemove</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onmousemove</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when the mouse pointer is moved onto a control.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:</span><span class="Source_20_Text">mouseover</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onmouseover</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when the mouse pointer is moved over the control.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:</span><span class="Source_20_Text">mouseup</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onmouseup</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a mouse button is released on a control.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:mouseout</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onmouseout</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when the mouse pointer is moved away from a control.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:</span><span class="Source_20_Text">reset</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onreset</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a form is reset.</p></td></tr><tr><td style="text-align:left;width:1.8014in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">dom:</span><span class="Source_20_Text">submit</span></p></td><td style="text-align:left;width:1.2188in; " class="Table7_A2"><p class="Table_20_Contents"><span class="Source_20_Text">onsubmit</span></p></td><td style="text-align:left;width:2.9799in; " class="Table7_C2"><p class="Table_20_Contents">Occurs when a form is submitted.</p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">script:event-name</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a> and <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">script:event-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_430script_language"><span style="margin-right:0.127cm;">19.430</span></a><a id="__RefHeading__1417770_253892949"/><a id="attribute-script_language"/>script:language</h2><p class="Text_20_body">The attribute <span class="Attribute">script:language</span> specifies the name of a script. Script language names are implementation-dependent. The names identifying script languages should begin with by a namespace prefix, followed by a ":" (U+003A, COLON) separator. If a namespace prefix is present, the local name of the attribute value is considered to be a name in the XML namespace bound to the namespace prefix.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">script:language</span> attribute is usable with the following elements: <span class="Element">&lt;office:script&gt;</span> <a href="#element-office_script">3.13</a>, <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a> and <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">script:language</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_431script_macro-name"><span style="margin-right:0.127cm;">19.431</span></a><a id="__RefHeading__1417772_253892949"/><a id="attribute-script_macro-name"/>script:macro-name</h2><p class="Text_20_body">The <span class="Attribute">script:macro-name</span> attribute specifies the name of a macro. The interpretation of the name is script language dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">script:macro-name</span> attribute is usable with the following element: <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">script:macro-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_432smil_accelerate"><span style="margin-right:0.127cm;">19.432</span></a><a id="__RefHeading__1417774_253892949"/><a id="attribute-smil_accelerate"/>smil:accelerate</h2><p class="Text_20_body">See §11.1.2 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body">The defined range for the <span class="Attribute">smil:accelerate</span> attribute is 0 to 1, inclusive. The default value for a <span class="Attribute">smil:accelerate</span> attribute is 0.0, meaning no acceleration. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0.0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:accelerate</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:accelerate</span> attribute has values of type <span class="Datatype">decimal</span> <a href="#datatype-decimal">18.2</a> in the range [<span class="Attribute_20_Value">0</span>,<span class="Attribute_20_Value">1</span>].</p><h2 class="Heading_20_2"><a id="a19_433smil_accumulate"><span style="margin-right:0.127cm;">19.433</span></a><a id="__RefHeading__1417776_253892949"/><a id="attribute-smil_accumulate"/>smil:accumulate</h2><p class="Text_20_body">See $3.4.3 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:accumulate</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:accumulate</span> attribute are <span class="Attribute_20_Value">none</span> or <span class="Attribute_20_Value">sum</span>.</p><h2 class="Heading_20_2"><a id="a19_434smil_additive"><span style="margin-right:0.127cm;">19.434</span></a><a id="__RefHeading__1417778_253892949"/><a id="attribute-smil_additive"/>smil:additive</h2><p class="Text_20_body">See $3.4.3 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:additive</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:additive</span> attribute are <span class="Attribute_20_Value">replace</span> or <span class="Attribute_20_Value">sum</span>.</p><h2 class="Heading_20_2"><a id="a19_435smil_attributeName"><span style="margin-right:0.127cm;">19.435</span></a><a id="__RefHeading__1417780_253892949"/><a id="attribute-smil_attributeName"/>smil:attributeName</h2><p class="Text_20_body">See §3.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">smil:attributeName</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">charColor</span>: animates the <span class="T2">element's</span> char color.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">charFontName</span>: animates the <span class="T2">element's</span> text font.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">charHeight</span>: animates the <span class="T2">element's</span> text height.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">charPosture</span>: animates the <span class="T2">element's</span> text posture.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">charUnderline</span>: animates the <span class="T2">element's</span> text underline.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">charWeight</span>: animates the <span class="T2">element's</span> text weight.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">color</span>: animates the <span class="T2">element's</span> color, this animates both fill,line and char color. Values can be RGB or HSL.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">fillColor</span>: animates the <span class="T2">element's</span> fill color.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">fillStyle</span>: animates the <span class="T2">element's</span> fill style.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">height</span>: animates the <span class="T2">element's</span> height, values are given in screen space where 0 is no height and 1 is the same height as the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">lineColor</span>: animates the <span class="T2">element's</span> line color.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">lineStyle</span>: animates the <span class="T2">element's</span> line style.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">opacity</span>: animates the <span class="T2">element's</span> opacity.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">rotate</span>: animates the <span class="T2">element's</span> rotation, this animates both the shapes and text animation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">skewX</span>: animates the <span class="T2">element's</span> horizontal skew.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">visibility</span>: animates the <span class="T2">element's</span> visibility.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">width</span>: animates the <span class="T2">element's</span> width, values are given in screen space where 0 is no width and 1 is the same width as the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">x</span>: animates the <span class="T2">element's</span> x position, values are given in screen space where 0 is the left edge and 1 is the right edge.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">y</span>: animates the <span class="T2">element's</span> y position, values are given in screen space where 0 is the top and 1 is the bottom.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:attributeName</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a> and <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:attributeName</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_436smil_autoReverse"><span style="margin-right:0.127cm;">19.436</span></a><a id="__RefHeading__1417782_253892949"/><a id="attribute-smil_autoReverse"/>smil:autoReverse</h2><p class="Text_20_body">See §11.1.2 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:autoReverse</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:autoReverse</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_437smil_begin"><span style="margin-right:0.127cm;">19.437</span></a><a id="__RefHeading__1417784_253892949"/><a id="attribute-smil_begin"/>smil:begin</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:begin</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:begin</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_438smil_by"><span style="margin-right:0.127cm;">19.438</span></a><a id="__RefHeading__1417786_253892949"/><a id="attribute-smil_by"/>smil:by</h2><p class="Text_20_body">See §3.4.4 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:by</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:by</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_439smil_calcMode"><span style="margin-right:0.127cm;">19.439</span></a><a id="__RefHeading__1417788_253892949"/><a id="attribute-smil_calcMode"/>smil:calcMode</h2><p class="Text_20_body">See §3.4.2 and §3.7.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">For <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a> and <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a> elements the default value for this attribute is <span class="Attribute_20_Value">discrete</span>.</p><p class="Default_20_Value">For a <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a> element the default value for this attribute is <span class="Attribute_20_Value">paced</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:calcMode</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:calcMode</span> attribute are <span class="Attribute_20_Value">discrete</span>, <span class="Attribute_20_Value">linear</span>, <span class="Attribute_20_Value">paced</span> or <span class="Attribute_20_Value">spline</span>.</p><h2 class="Heading_20_2"><a id="a19_440smil_decelerate"><span style="margin-right:0.127cm;">19.440</span></a><a id="__RefHeading__1417790_253892949"/><a id="attribute-smil_decelerate"/>smil:decelerate</h2><p class="Text_20_body">See §11.1.2 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body"><a id="tab11"/><a id="rowForcustomfield_10001"/>The defined range for the <span class="Attribute">smil:decelerate</span> attribute is <span class="Attribute_20_Value_20_Instance">0</span> to <span class="Attribute_20_Value_20_Instance">1</span>, inclusive. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0.0</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:decelerate</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:decelerate</span> attribute has values of type <span class="Datatype">decimal</span> <a href="#datatype-decimal">18.2</a> in the range [<span class="Attribute_20_Value">0</span>,<span class="Attribute_20_Value">1</span>].</p><h2 class="Heading_20_2"><a id="a19_441smil_direction"><span style="margin-right:0.127cm;">19.441</span></a><a id="__RefHeading__1417792_253892949"/><a id="attribute-smil_direction"/>smil:direction</h2><p class="Text_20_body">See §12.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a> element the default value for this attribute is <span class="Attribute_20_Value">forward</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:direction</span> attribute is usable with the following element: <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:direction</span> attribute are <span class="Attribute_20_Value">forward</span> or <span class="Attribute_20_Value">reverse</span>.</p><h2 class="Heading_20_2"><a id="a19_442smil_dur"><span style="margin-right:0.127cm;">19.442</span></a><a id="__RefHeading__1417794_253892949"/><a id="attribute-smil_dur"/>smil:dur</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:dur</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:dur</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_443smil_end"><span style="margin-right:0.127cm;">19.443</span></a><a id="__RefHeading__1417796_253892949"/><a id="attribute-smil_end"/>smil:end</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:end</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:end</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_444smil_endsync"><span style="margin-right:0.127cm;">19.444</span></a><a id="__RefHeading__1417798_253892949"/><a id="attribute-smil_endsync"/>smil:endsync</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:endsync</span> attribute is usable with the following elements: <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:endsync</span> attribute are <span class="Attribute_20_Value">first</span>, <span class="Attribute_20_Value">last</span>, <span class="Attribute_20_Value">all</span>, <span class="Attribute_20_Value">media</span> or a value of type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_445smil_fadeColor"><span style="margin-right:0.127cm;">19.445</span></a><a id="__RefHeading__1417800_253892949"/><a id="attribute-smil_fadeColor"/>smil:fadeColor</h2><p class="Text_20_body">See §12.5.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is #000000.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:fadeColor</span> attribute is usable with the following element: <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:fadeColor</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_446smil_fill"><span style="margin-right:0.127cm;">19.446</span></a><a id="__RefHeading__1417802_253892949"/><a id="attribute-smil_fill"/>smil:fill</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:fill</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:fill</span> attribute are <span class="Attribute_20_Value">remove</span>, <span class="Attribute_20_Value">freeze</span>, <span class="Attribute_20_Value">hold</span>, <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">default</span> or <span class="Attribute_20_Value">transition</span>.</p><h2 class="Heading_20_2"><a id="a19_447smil_fillDefault"><span style="margin-right:0.127cm;">19.447</span></a><a id="__RefHeading__1417804_253892949"/><a id="attribute-smil_fillDefault"/>smil:fillDefault</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:fillDefault</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:fillDefault</span> attribute are <span class="Attribute_20_Value">remove</span>, <span class="Attribute_20_Value">freeze</span>, <span class="Attribute_20_Value">hold</span>, <span class="Attribute_20_Value">transition</span>, <span class="Attribute_20_Value">auto</span> or <span class="Attribute_20_Value">inherit</span>.</p><h2 class="Heading_20_2"><a id="a19_448smil_from"><span style="margin-right:0.127cm;">19.448</span></a><a id="__RefHeading__1417806_253892949"/><a id="attribute-smil_from"/>smil:from</h2><p class="Text_20_body">See §3.4.4 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:from</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:from</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_449smil_keySplines"><span style="margin-right:0.127cm;">19.449</span></a><a id="__RefHeading__1417808_253892949"/><a id="attribute-smil_keySplines"/>smil:keySplines</h2><p class="Text_20_body">See $3.7.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:keySplines</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a> and <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:keySplines</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_450smil_keyTimes"><span style="margin-right:0.127cm;">19.450</span></a><a id="__RefHeading__1417810_253892949"/><a id="attribute-smil_keyTimes"/>smil:keyTimes</h2><p class="Text_20_body">See $3.7.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:keyTimes</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a> and <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:keyTimes</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_451smil_mode"><span style="margin-right:0.127cm;">19.451</span></a><a id="__RefHeading__1417812_253892949"/><a id="attribute-smil_mode"/>smil:mode</h2><p class="Text_20_body">See §12.5.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">in</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:mode</span> attribute is usable with the following element: <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:mode</span> attribute are <span class="Attribute_20_Value">in</span> or <span class="Attribute_20_Value">out</span>.</p><h2 class="Heading_20_2"><a id="a19_452smil_repeatCount"><span style="margin-right:0.127cm;">19.452</span></a><a id="__RefHeading__1417814_253892949"/><a id="attribute-smil_repeatCount"/>smil:repeatCount</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:repeatCount</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:repeatCount</span> attribute are a non negative value of type <span class="Datatype">decimal</span> <a href="#datatype-decimal">18.2</a> or <span class="Attribute_20_Value">indefinite</span>.</p><h2 class="Heading_20_2"><a id="a19_453smil_repeatDur"><span style="margin-right:0.127cm;">19.453</span></a><a id="__RefHeading__1417816_253892949"/><a id="attribute-smil_repeatDur"/>smil:repeatDur</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body">The value of the <span class="Attribute">smil:repeatDur</span> attribute can be <span class="Attribute_20_Value">indefinite</span>, or a clock-value as defined in $10.3.1 of SMIL</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:repeatDur</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:repeatDur</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_454smil_restart"><span style="margin-right:0.127cm;">19.454</span></a><a id="__RefHeading__1417818_253892949"/><a id="attribute-smil_restart"/>smil:restart</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">default</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:restart</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:restart</span> attribute are <span class="Attribute_20_Value">never</span>, <span class="Attribute_20_Value">always</span>, <span class="Attribute_20_Value">whenNotActive</span> or <span class="Attribute_20_Value">default</span>.</p><h2 class="Heading_20_2"><a id="a19_455smil_restartDefault"><span style="margin-right:0.127cm;">19.455</span></a><a id="__RefHeading__1417820_253892949"/><a id="attribute-smil_restartDefault"/>smil:restartDefault</h2><p class="Text_20_body">See §10.3.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">inherit</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">smil:restartDefault</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:restartDefault</span> attribute are <span class="Attribute_20_Value">never</span>, <span class="Attribute_20_Value">always</span>, <span class="Attribute_20_Value">whenNotActive</span> or <span class="Attribute_20_Value">inherit</span>.</p><h2 class="Heading_20_2"><a id="a19_456smil_subtype"><span style="margin-right:0.127cm;">19.456</span></a><a id="__RefHeading__1417822_253892949"/><a id="attribute-smil_subtype"/>smil:subtype</h2><p class="Text_20_body">See §12.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body"><span class="Note_20_Label">Note: </span>See §12.8 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> for a list of supported subtypes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:subtype</span> attribute is usable with the following element: <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:subtype</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_457smil_targetElement"><span style="margin-right:0.127cm;">19.457</span></a><a id="__RefHeading__1417824_253892949"/><a id="attribute-smil_targetElement"/>smil:targetElement</h2><p class="Text_20_body">See §3.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body">Drawing shapes are specified by their <span class="Attribute">xml:id</span> or <span class="Attribute">draw:id</span> attribute values and paragraphs by their <span class="Attribute">xml:id</span> or <span class="Attribute">text:id</span> attribute values.</p><p class="Text_20_body">If the <span class="Attribute">anim:sub-item</span> attribute of a <span class="Element">&lt;anim:iterate&gt;</span> element has the value <span class="Attribute_20_Value_20_Instance">whole</span>, the iteration includes the drawing shape's background and its text. If the <span class="Attribute">anim:sub-item</span> attribute value is <span class="Attribute_20_Value_20_Instance">text</span>, only the shape's text is iterated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:targetElement</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:targetElement</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_458smil_to"><span style="margin-right:0.127cm;">19.458</span></a><a id="__RefHeading__1417826_253892949"/><a id="attribute-smil_to"/>smil:to</h2><p class="Text_20_body">See §3.4.4 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:to</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>, <span class="Element">&lt;anim:set&gt;</span> <a href="#element-anim_set">15.2.4</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:to</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_459smil_type"><span style="margin-right:0.127cm;">19.459</span></a><a id="__RefHeading__1417828_253892949"/><a id="attribute-smil_type"/>smil:type</h2><p class="Text_20_body">The <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> <span class="Attribute">smil:type</span> attribute specifies a transition type or family.</p><p class="Text_20_body">See §12.8 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> for a list of supported types.</p><p class="Text_20_body">If this attribute is present, the attributes <span class="Attribute">presentation:transition-type</span> and <span class="Attribute">presentation:transition-style</span> attributes should be ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:type</span> attribute is usable with the following element: <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_460smil_values"><span style="margin-right:0.127cm;">19.460</span></a><a id="__RefHeading__1417830_253892949"/><a id="attribute-smil_values"/>smil:values</h2><p class="Text_20_body">See $3.4.2 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:values</span> attribute is usable with the following elements: <span class="Element">&lt;anim:animate&gt;</span> <a href="#element-anim_animate">15.2.2</a>, <span class="Element">&lt;anim:animateColor&gt;</span> <a href="#element-anim_animateColor">15.2.6</a>, <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>, <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a> and <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:values</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_461style_adjustment"><span style="margin-right:0.127cm;">19.461</span></a><a id="__RefHeading__1417832_253892949"/><a id="attribute-style_adjustment"/>style:adjustment</h2><p class="Text_20_body">The <span class="Attribute">style:adjustment</span> attribute specifies how a footnote separator line is aligned on a page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:adjustment</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: footnote separator line centered on page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">eft</span>: footnote separator line aligned to left on page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ight</span>: footnote separator line aligned to right on page.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">left</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:adjustment</span> attribute is usable with the following element: <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:adjustment</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">right</span>.</p><h2 class="Heading_20_2"><a id="a19_462style_apply-style-name"><span style="margin-right:0.127cm;">19.462</span></a><a id="__RefHeading__1417834_253892949"/><a id="attribute-style_apply-style-name"/>style:apply-style-name</h2><p class="Text_20_body">The <span class="Attribute">style:apply-style-name</span> attribute specifies the style to apply when the condition specified by the <span class="Attribute">style:condition</span> attribute is <span class="Attribute_20_Value">true</span>. If the referenced style is undefined or is an automatic style, an error occurs.</p><p class="Text_20_body">The referenced style shall be defined by the same type of element as the conditional style that contains the condition. If the referenced style element has a <span class="Attribute">style:family</span> attribute, its value further shall be equal the value of the <span class="Attribute">style:family</span> attribute of the conditional style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:apply-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:apply-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_463style_auto-update"><span style="margin-right:0.127cm;">19.463</span></a><a id="__RefHeading__1417836_253892949"/><a id="attribute-style_auto-update"/>style:auto-update</h2><p class="Text_20_body">The <span class="Attribute">style:auto-update</span> attribute specifies whether styles are automatically updated when the formatting properties of an object that has the style assigned to it are changed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:auto-update</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a change to a formatting property is applied for the object where the change was made. If necessary, a new automatic style will be created which is applied to the object where the change was made.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a change to a formatting property results in the updating of the common style that is applied to an object. The formatting change is applied to all objects subject to the common style where the change was made. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:auto-update</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:auto-update</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_464style_base-cell-address"><span style="margin-right:0.127cm;">19.464</span></a><a id="__RefHeading__1417838_253892949"/><a id="attribute-style_base-cell-address"/>style:base-cell-address</h2><p class="Text_20_body">The <span class="Attribute">style:base-cell-address</span> attribute specifies as an absolute cell address with a table name the base cell for relative addresses in formulas. This attribute applies only to cell styles where the condition contains a formula.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:base-cell-address</span> attribute is usable with the following element: <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:base-cell-address</span> attribute has the data type <span class="Datatype">cellAddress</span> <a href="#datatype-cellAddress">18.3.4</a>.</p><h2 class="Heading_20_2"><a id="a19_465style_char"><span style="margin-right:0.127cm;">19.465</span></a><a id="__RefHeading__1417840_253892949"/><a id="attribute-style_char"/>style:char</h2><p class="Text_20_body">The <span class="Attribute">style:char</span> attribute specifies the delimiter character for tab stops of type <span class="Attribute_20_Value">char</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:char</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:char</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a19_466style_class"><span style="margin-right:0.127cm;">19.466</span></a><a id="__RefHeading__1417842_253892949"/><a id="attribute-style_class"/>style:class</h2><p class="Text_20_body">The <span class="Attribute">style:class</span> attribute specifies a style class name. A style class name is a string and any style may belong to any  number of classes. A style may belong to any class of styles. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:class</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:class</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_467style_color"><span style="margin-right:0.127cm;">19.467</span></a><a id="__RefHeading__1417844_253892949"/><a id="attribute-style_color"/>style:color</h2><p class="Text_20_body">The <span class="Attribute">style:color</span> attribute specifies the color of a column or footnote separator line.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">#000000</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:color</span> attribute is usable with the following elements: <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a> and <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_468style_condition"><span style="margin-right:0.127cm;">19.468</span></a><a id="__RefHeading__1417846_253892949"/><a id="attribute-style_condition"/>style:condition</h2><p class="Text_20_body">The <span class="Attribute">style:condition</span> attribute specifies a condition that triggers a style map.</p><p class="Text_20_body">The value of this attribute should be a namespace prefix, followed by a ":" (U+003A, COLON), followed by one of the defined conditions. If the namespace prefix is missing it defaults to the "urn:oasis:names:tc:opendocument:xmlns:of:1.2" namespace. The XML namespace that applies to the <span class="Attribute">style:condition</span> attribute specifies the syntax and semantics of any <span class="Attribute_20_Value">expression</span> occurrences in the <span class="Attribute">style:condition</span> syntax.</p><p class="Text_20_body">If a consumer does not recognize a condition, it shall ignore the <span class="Element">&lt;style:map&gt;</span> element containing the condition.</p><p class="Text_20_body">The defined conditions that may be used by paragraph styles are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">footnote()</span> and <span class="Attribute_20_Value_20_Fragment">endnote()</span>: true if the style is applied to a paragraph or heading that is contained in a footnote or endnote.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">header()</span> and <span class="Attribute_20_Value_20_Fragment">footer()</span>: True if the style is applied to a paragraph or heading that is contained in a page header or footer.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">list-level()=</span><span class="Attribute_20_Value_20_Param">n</span>, where <span class="Attribute_20_Value_20_Param">n</span> is a number: true if the style is applied to a paragraph or heading that is contained in a list on level <span class="Attribute_20_Value_20_Param">n</span>, or to a numbered paragraph on level <span class="Attribute_20_Value_20_Param">n</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">outline-level()=</span><span class="Attribute_20_Value_20_Param">n</span>, where <span class="Attribute_20_Value_20_Param">n</span> is a number: true if the if the style is applied to a heading on level <span class="Attribute_20_Value_20_Fragment">n</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">section()</span>: true if the style is applied to a paragraph or heading that is contained in a text section.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">table()</span> and <span class="Attribute_20_Value_20_Fragment">table-header()</span>: true if the style is applied to a paragraph or heading that is contained in a table cell or table header cell.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Within paragraph style conditions <span class="Attribute_20_Value_20_Param">n</span> is a positive integer in the lexical form of the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> positiveInteger datatype.</p><p class="Text_20_body">The defined conditions that may be used by table cell styles are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content() </span><a id="DDE_LINK271"/><span class="Attribute_20_Value_20_Param">op</span><span class="Attribute_20_Value_20_Fragment"> </span><span class="Attribute_20_Value_20_Param">value</span>: where <span class="Attribute_20_Value_20_Param">op</span> is one of the relational operators ”<span class="Attribute_20_Value_20_Fragment">&lt;</span>”, ”<span class="Attribute_20_Value_20_Fragment">&gt;</span>”, ”<span class="Attribute_20_Value_20_Fragment">&lt;=</span>”, ”<span class="Attribute_20_Value_20_Fragment">&gt;=</span>”, ”<span class="Attribute_20_Value_20_Fragment">=</span>” or ”<span class="Attribute_20_Value_20_Fragment">!=</span>”: true if the style is applied to a table cell where the cell's value compared to the value specified in the condition by <span class="Attribute_20_Value_20_Param">value</span> using the relational operator <span class="Attribute_20_Value_20_Param">op</span> evaluates to true.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-between(</span><span class="Attribute_20_Value_20_Param">value1</span><span class="Attribute_20_Value_20_Fragment">, </span><span class="Attribute_20_Value_20_Param">value2</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if the style is applied to a table cell whose value is between <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-not-between(</span><span class="Attribute_20_Value_20_Param">value</span><span class="Attribute_20_Value_20_Fragment">, </span><span class="Attribute_20_Value_20_Param">value</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if the style is applied to a table cell whose value is not between <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">is-true-formula(</span><span class="Attribute_20_Value_20_Param">expression</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if the style is applied to a table cell for which formula evaluates true.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"> Within table cell style conditions:</p><ul><li><ul><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">value</span>, <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span> are a <span class="Attribute_20_Value_20_Param">numberValue</span>, a <span class="Attribute_20_Value_20_Param">string</span> or an <span class="Attribute_20_Value_20_Param">expression</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">numberValue</span> is a whole or decimal number in the lexical form of the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a>  decimal datatype.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">string</span> expresses a value of the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> string datatype by surrounding the sequence of string characters in quotation marks (U+0022, QUOTATION MARK). A quotation mark within the string itself is expressed with two consecutive quotation marks. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0.6411cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">expression</span> is a lexical form that is neither <span class="Attribute_20_Value_20_Param">numberValue</span> nor <span class="Attribute_20_Value_20_Param">string</span> and that is a well-formed expression determined by the namespace applicable to the <span class="Attribute">style:condition</span> attribute value.<span class="odfLiEnd"/> </p></li></ul></li></ul><p class="Text_20_body">The defined condition that may be used by data styles is:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">value() </span><span class="Attribute_20_Value_20_Param">op</span><span class="Attribute_20_Value_20_Fragment"> </span><span class="Attribute_20_Value_20_Param">n</span>, where, <span class="Attribute_20_Value_20_Param">op</span> is one of the relational operators ”<span class="Attribute_20_Value_20_Fragment">&lt;</span>”, ”<span class="Attribute_20_Value_20_Fragment">&gt;</span>”, ”<span class="Attribute_20_Value_20_Fragment">&lt;=</span>”, ”<span class="Attribute_20_Value_20_Fragment">&gt;=</span>”, “<span class="Attribute_20_Value_20_Fragment">=</span>” or ”<span class="Attribute_20_Value_20_Fragment">!=</span>”, and <span class="Attribute_20_Value_20_Param">n</span> is a number for non-Boolean data styles and <span class="Attribute_20_Value_20_Fragment">true</span> or <span class="Attribute_20_Value_20_Fragment">false</span> for Boolean data styles: true if the style is applied to a table cell where the cell's value compared to the value specified in the condition by <span class="Attribute_20_Value_20_Param">n</span> using the relational operator <span class="Attribute_20_Value_20_Param">op</span> evaluates to true.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Relative cell range addresses that occur in a condition for a table cell style define an offset which shall be interpreted relative to the cell for which a condition is calculated. The offset is the same as the offsets between the table cell addressed by the relative cell range address and the table cell specified by the <span class="Attribute">style:base-cell-address</span> attribute. </p><p class="Text_20_body">An OpenDocument Consumer when hosting a formula evaluator makes available the host-dependent properties defined by table <a href="#refTable11">12</a> in 19.644.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:condition</span> attribute is usable with the following element: <span class="Element">&lt;style:map&gt;</span> <a href="#element-style_map">16.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_469style_data-style-name"><span style="margin-right:0.127cm;">19.469</span></a><a id="__RefHeading__1417848_253892949"/><a id="attribute-style_data-style-name"/>style:data-style-name</h2><h3 class="Heading_20_3"><a id="a19_469_1General"><span style="margin-right:0.127cm;">19.469.1</span></a><a id="__RefHeading__1417850_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies the name of a data style. </p><h3 class="Heading_20_3"><a id="a19_469_2_presentation_date-time-decl_"><span style="margin-right:0.127cm;">19.469.2</span></a><a id="__RefHeading__1417852_253892949"/><a id="attribute-style_data-style-name_element-presentation_date-time-decl"/>&lt;presentation:date-time-decl&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a date and time. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;presentation:date-time-decl&gt;</span> <a href="#element-presentation_date-time-decl">10.9.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_3_style_style_"><span style="margin-right:0.127cm;">19.469.3</span></a><a id="__RefHeading__1417854_253892949"/><a id="attribute-style_data-style-name_element-style_style"/>&lt;style:style&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style for a <span class="Element">&lt;style:style&gt;</span> element that defines the styles for table cell styles and chart styles. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_4_text_creation-date_"><span style="margin-right:0.127cm;">19.469.4</span></a><a id="__RefHeading__1417856_253892949"/><a id="attribute-style_data-style-name_element-text_creation-date"/>&lt;text:creation-date&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_5_text_creation-time_"><span style="margin-right:0.127cm;">19.469.5</span></a><a id="__RefHeading__1417858_253892949"/><a id="attribute-style_data-style-name_element-text_creation-time"/>&lt;text:creation-time&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_6_text_database-display_"><span style="margin-right:0.127cm;">19.469.6</span></a><a id="__RefHeading__1417860_253892949"/><a id="attribute-style_data-style-name_element-text_database-display"/>&lt;text:database-display&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_7_text_date_"><span style="margin-right:0.127cm;">19.469.7</span></a><a id="__RefHeading__1417862_253892949"/><a id="attribute-style_data-style-name_element-text_date"/>&lt;text:date&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_8_text_editing-duration_"><span style="margin-right:0.127cm;">19.469.8</span></a><a id="__RefHeading__1417864_253892949"/><a id="attribute-style_data-style-name_element-text_editing-duration"/>&lt;text:editing-duration&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_9_text_expression_"><span style="margin-right:0.127cm;">19.469.9</span></a><a id="__RefHeading__1417866_253892949"/><a id="attribute-style_data-style-name_element-text_expression"/>&lt;text:expression&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_10_text_meta-field_"><span style="margin-right:0.127cm;">19.469.10</span></a><a id="__RefHeading__1417868_253892949"/><a id="attribute-style_data-style-name_element-text_meta-field"/>&lt;text:meta-field&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_11_text_modification-date_"><span style="margin-right:0.127cm;">19.469.11</span></a><a id="__RefHeading__1417870_253892949"/><a id="attribute-style_data-style-name_element-text_modification-date"/>&lt;text:modification-date&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_12_text_modification-time_"><span style="margin-right:0.127cm;">19.469.12</span></a><a id="__RefHeading__1417872_253892949"/><a id="attribute-style_data-style-name_element-text_modification-time"/>&lt;text:modification-time&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_13_text_print-date_"><span style="margin-right:0.127cm;">19.469.13</span></a><a id="__RefHeading__1417874_253892949"/><a id="attribute-style_data-style-name_element-text_print-date"/>&lt;text:print-date&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_14_text_print-time_"><span style="margin-right:0.127cm;">19.469.14</span></a><a id="__RefHeading__1417876_253892949"/><a id="attribute-style_data-style-name_element-text_print-time"/>&lt;text:print-time&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_15_text_table-formula_"><span style="margin-right:0.127cm;">19.469.15</span></a><a id="__RefHeading__1417878_253892949"/><a id="attribute-style_data-style-name_element-text_table-formula"/>&lt;text:table-formula&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_16_text_time_"><span style="margin-right:0.127cm;">19.469.16</span></a><a id="__RefHeading__1417880_253892949"/><a id="attribute-style_data-style-name_element-text_time"/>&lt;text:time&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a numeric value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_17_text_user-defined_"><span style="margin-right:0.127cm;">19.469.17</span></a><a id="__RefHeading__1417882_253892949"/><a id="attribute-style_data-style-name_element-text_user-defined"/>&lt;text:user-defined&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_18_text_user-field-get_"><span style="margin-right:0.127cm;">19.469.18</span></a><a id="__RefHeading__1417884_253892949"/><a id="attribute-style_data-style-name_element-text_user-field-get"/>&lt;text:user-field-get&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_19_text_user-field-input_"><span style="margin-right:0.127cm;">19.469.19</span></a><a id="__RefHeading__1417886_253892949"/><a id="attribute-style_data-style-name_element-text_user-field-input"/>&lt;text:user-field-input&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_20_text_variable-get_"><span style="margin-right:0.127cm;">19.469.20</span></a><a id="__RefHeading__1417888_253892949"/><a id="attribute-style_data-style-name_element-text_variable-get"/>&lt;text:variable-get&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_21_text_variable-input_"><span style="margin-right:0.127cm;">19.469.21</span></a><a id="__RefHeading__1417890_253892949"/><a id="attribute-style_data-style-name_element-text_variable-input"/>&lt;text:variable-input&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_469_22_text_variable-set_"><span style="margin-right:0.127cm;">19.469.22</span></a><a id="__RefHeading__1417892_253892949"/><a id="attribute-style_data-style-name_element-text_variable-set"/>&lt;text:variable-set&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute specifies a data style to format a field value. This attribute shall be omitted for fields whose value type is <span class="Attribute_20_Value">string</span>. It shall be present for fields whose value type is not <span class="Attribute_20_Value">string</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_470style_default-outline-level"><span style="margin-right:0.127cm;">19.470</span></a><a id="__RefHeading__1417894_253892949"/><a id="attribute-style_default-outline-level"/>style:default-outline-level</h2><p class="Text_20_body">The <span class="Attribute">style:default-outline-level</span> attribute specifies a default outline level for a style with the family <span class="Attribute_20_Value">paragraph</span>. </p><p class="Text_20_body">If the <span class="Attribute">style:default-outline-level</span> attribute is present in a paragraph style, and if this paragraph style is assigned to a paragraph or heading by user action, then the consumer should replace the paragraph or heading with a heading of the specified level, which has the same content and attributes as the original paragraph or heading. </p><p class="Note"><span class="Note_20_Label">Note:</span> This attribute does not modify the behavior of <span class="Element">&lt;text:p&gt;</span> or <span class="Element">&lt;text:h&gt;</span> elements, but only instructs a consumer to create one or the other when assigning a paragraph style as a result of user interface action while the document is edited.</p><p class="Text_20_body">The <span class="Attribute">style:default-outline-level</span> attribute value can be empty. If empty, this attribute does not inherit a list style value from a parent style. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:default-outline-level</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:default-outline-level</span> attribute are a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a> or an empty string.</p><h2 class="Heading_20_2"><a id="a19_471style_display"><span style="margin-right:0.127cm;">19.471</span></a><a id="__RefHeading__1417896_253892949"/><a id="attribute-style_display"/>style:display</h2><p class="Text_20_body">The <span class="Attribute">style:display</span> attribute specifies whether the header or footer is displayed or not. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: header or footer is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: header or footer is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:display</span> attribute is usable with the following elements: <span class="Element">&lt;style:footer&gt;</span> <a href="#element-style_footer">16.11</a>, <span class="Element">&lt;style:footer-left&gt;</span> <a href="#element-style_footer-left">16.13</a>, <span class="Element">&lt;style:header&gt;</span> <a href="#element-style_header">16.10</a> and <span class="Element">&lt;style:header-left&gt;</span> <a href="#element-style_header-left">16.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:display</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_472style_display-name"><span style="margin-right:0.127cm;">19.472</span></a><a id="__RefHeading__1417898_253892949"/><a id="attribute-style_display-name"/>style:display-name</h2><p class="Text_20_body">The <span class="Attribute">style:display-name</span> attribute specifies the name of a style as it should appear in the user interface. If this attribute is not present, the display name is the same as the style name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:display-name</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>, <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;style:presentation-page-layout&gt;</span> <a href="#element-style_presentation-page-layout">16.41</a>, <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a> and <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:display-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_473style_distance"><span style="margin-right:0.127cm;">19.473</span></a><a id="__RefHeading__1417900_253892949"/><a id="attribute-style_distance"/>style:distance</h2><p class="Text_20_body">The <span class="Attribute">style:distance</span> attribute specifies the distance between the last of the characters using the larger font and the first of the remaining characters of each line.</p><p class="Note"><span class="Note_20_Label">Note: </span>If the leading characters for a paragraph span the line size of a portion of the remaining text of a paragraph, the <span class="Attribute">style:distance</span> attribute specifies the distance between the end of the text written in the larger font and the smaller text of any lines that it spans. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0cm</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:distance</span> attribute is usable with the following element: <span class="Element">&lt;style:drop-cap&gt;</span> <a href="#element-style_drop-cap">17.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:distance</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_474style_distance-before-sep"><span style="margin-right:0.127cm;">19.474</span></a><a id="__RefHeading__1417902_253892949"/><a id="attribute-style_distance-before-sep"/>style:distance-before-sep</h2><p class="Text_20_body">The <span class="Attribute">style:distance-before-sep</span> attribute specifies the space between the body text area and a footnote separator line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:distance-before-sep</span> attribute is usable with the following element: <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:distance-before-sep</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_475style_distance-after-sep"><span style="margin-right:0.127cm;">19.475</span></a><a id="__RefHeading__1417904_253892949"/><a id="attribute-style_distance-after-sep"/>style:distance-after-sep</h2><p class="Text_20_body">The <span class="Attribute">style:distance-after-sep</span> attribute specifies the space between a footnote separator line and the footnote text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:distance-after-sep</span> attribute is usable with the following element: <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:distance-after-sep</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_476style_family"><span style="margin-right:0.127cm;">19.476</span></a><a id="__RefHeading__1417906_253892949"/><a id="attribute-style_family"/>style:family</h2><p class="Text_20_body">The <span class="Attribute">style:family</span> attribute specifies the family of a style. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:family</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chart</span>: family name of styles for charts.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">d</span><span class="Attribute_20_Value">rawing-page</span>: family name of styles for drawing pages.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">g</span><span class="Attribute_20_Value">raphic</span>: family name of styles for graphic elements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">paragraph</span>: family name of styles for paragraphs.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">presentation</span>: family name of styles for presentations.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">uby</span>: family name of styles for ruby text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able</span>: family name of styles for tables.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able-cell</span>: family name of styles for table cells.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able-column</span>: family name of styles for table columns.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able-row</span>: family name of styles for table rows.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext</span>: family name of styles for text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:family</span> attribute is usable with the following elements: <span class="Element">&lt;style:default-style&gt;</span> <a href="#element-style_default-style">16.4</a> and <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:family</span> attribute are <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">paragraph</span>, <span class="Attribute_20_Value">section</span>, <span class="Attribute_20_Value">ruby</span>, <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">table-column</span>, <span class="Attribute_20_Value">table-row</span>, <span class="Attribute_20_Value">table-cell</span>, <span class="Attribute_20_Value">graphic</span>, <span class="Attribute_20_Value">presentation</span>, <span class="Attribute_20_Value">drawing-page</span> or <span class="Attribute_20_Value">chart</span>.</p><h2 class="Heading_20_2"><a id="a19_477style_filter-name"><span style="margin-right:0.127cm;">19.477</span></a><a id="__RefHeading__1417908_253892949"/><a id="attribute-style_filter-name"/>style:filter-name</h2><p class="Text_20_body">The <span class="Attribute">style:filter-name</span> attribute specifies the implementation-dependent filter name that has been used to load an image into the document.</p><p class="Text_20_body">This attribute is attached to a <span class="Element">&lt;style:background-image&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:filter-name</span> attribute is usable with the following element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:filter-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_478style_font-adornments"><span style="margin-right:0.127cm;">19.478</span></a><a id="__RefHeading__1417910_253892949"/><a id="attribute-style_font-adornments"/>style:font-adornments</h2><p class="Text_20_body">The <span class="Attribute">style:font-adornments</span> attributes specifies a characteristic of a font.</p><p class="Text_20_body"><span class="Note_20_Label">Note: </span>A font characteristic includes bold or italic, which when used with a font family name, specifies a font. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-adornments</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-adornments</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_479style_font-charset"><span style="margin-right:0.127cm;">19.479</span></a><a id="__RefHeading__1417912_253892949"/><a id="attribute-style_font-charset"/>style:font-charset</h2><p class="Text_20_body">The <span class="Attribute">style:font-charset</span> attribute specifies whether a font defines glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> or not.</p><p class="Text_20_body">The value of this attributes can be <span class="Attribute_20_Value_20_Instance">x-symbol</span> or a character encoding in the notation described in the §4.3.3 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>. If the value is <span class="Attribute_20_Value_20_Instance">x-symbol</span>, the font does not define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. If the value is one of the encodings or transformations of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>, the font does define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. The use of other values is deprecated.</p><p class="Note"><span class="Note_20_Label">Note:</span> Fonts for which the attribute has the value <span class="Attribute_20_Value_20_Instance">x-symbol</span> may define glyphs for code points in the private use area of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-charset</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-charset</span> attribute has the data type <span class="Datatype">textEncoding</span> <a href="#datatype-textEncoding">18.3.35</a>.</p><h2 class="Heading_20_2"><a id="a19_480style_font-family-generic"><span style="margin-right:0.127cm;">19.480</span></a><a id="__RefHeading__1417914_253892949"/><a id="attribute-style_font-family-generic"/>style:font-family-generic</h2><p class="Text_20_body">The <span class="Attribute">style:font-family-generic</span> attribute specifies a generic font family name.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-family-generic</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">decorative</span>: the family of decorative fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">modern</span>: the family of modern fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roman</span>: the family roman fonts (with serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">script</span>: the family of script fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">swiss</span>: the family roman fonts (without serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">system</span>: the family system fonts. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-family-generic</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-family-generic</span> attribute are <span class="Attribute_20_Value">roman</span>, <span class="Attribute_20_Value">swiss</span>, <span class="Attribute_20_Value">modern</span>, <span class="Attribute_20_Value">decorative</span>, <span class="Attribute_20_Value">script</span> or <span class="Attribute_20_Value">system</span>.</p><h2 class="Heading_20_2"><a id="a19_481style_font-pitch"><span style="margin-right:0.127cm;">19.481</span></a><a id="__RefHeading__1417916_253892949"/><a id="attribute-style_font-pitch"/>style:font-pitch</h2><p class="Text_20_body">The <span class="Attribute">style:font-pitch</span> attribute specifies whether a font has a fixed or variable width.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-pitch</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: font has a fixed width.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">variable</span>: font has a variable width.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-pitch</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-pitch</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">variable</span>.</p><h2 class="Heading_20_2"><a id="a19_482style_height"><span style="margin-right:0.127cm;">19.482</span></a><a id="__RefHeading__1417918_253892949"/><a id="attribute-style_height"/>style:height</h2><p class="Text_20_body">The <span class="Attribute">style:height</span> attribute specifies the height of a column separator line. The value of this attribute is a percentage of the height of the columned area.</p><p class="Text_20_body">The defined value range for the <span class="Attribute">style:height</span> attribute is 0% to 100%, inclusive.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">100%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:height</span> attribute is usable with the following element: <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:height</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a19_483style_leader-char"><span style="margin-right:0.127cm;">19.483</span></a><a id="__RefHeading__1417920_253892949"/><a id="attribute-style_leader-char"/>style:leader-char</h2><p class="Text_20_body">The <span class="Attribute">style:leader-char</span> attribute specifies a leader character.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:leader-char</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:leader-char</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a19_484style_leader-color"><span style="margin-right:0.127cm;">19.484</span></a><a id="__RefHeading__1417922_253892949"/><a id="attribute-style_leader-color"/>style:leader-color</h2><p class="Text_20_body">The <span class="Attribute">style:leader-color</span> attribute specifies the color of a leader line. The value of this attribute is either <span class="Attribute_20_Value">font-color</span> or a color. If the value is <span class="Attribute_20_Value">font-color</span>, the current text color is used for the leader line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:leader-color</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:leader-color</span> attribute are <span class="Attribute_20_Value">font-color</span> or a value of type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_485style_leader-style"><span style="margin-right:0.127cm;">19.485</span></a><a id="__RefHeading__1417924_253892949"/><a id="attribute-style_leader-style"/>style:leader-style</h2><p class="Text_20_body">The <span class="Attribute">style:leader-style</span> attribute specifies a style for a leader line. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:leader-style</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: tab stop has no leader line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dash</span>: tab stop has a dashed leader line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dash</span>: tab stop has a leader line whose repeating pattern is a dot followed by a dash.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dot-dash</span>: tab stop has a leader line whose repeating pattern has two dots followed by a dash. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dotted</span>: tab stop has a dotted leader line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long-dash</span>: tab stop has a dashed leader line whose dashes are longer than the ones from the dashed line for value dash.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: tab stop has a solid leader line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wave</span>: tab stop has a wavy leader line.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"><span class="Note_20_Label">Note: </span>The definitions of the values of the <span class="Attribute">style:leader-style</span> attribute are based on the text decoration style 'text-underline-style' from <a title="CSS3 Text Module" href="http://www.w3.org/TR/2003/CR-css3-text-20030514">[CSS3Text]</a>, §9.2.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:leader-style</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:leader-style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">long-dash</span>, <span class="Attribute_20_Value">dot-dash</span>, <span class="Attribute_20_Value">dot-dot-dash</span> or <span class="Attribute_20_Value">wave</span>.</p><h2 class="Heading_20_2"><a id="a19_486style_leader-text"><span style="margin-right:0.127cm;">19.486</span></a><a id="__RefHeading__1417926_253892949"/><a id="attribute-style_leader-text"/>style:leader-text</h2><p class="Text_20_body">The <span class="Attribute">style:leader-text</span> attribute specifies a single Unicode character for use as leader text for tab stops.</p><p class="Text_20_body">An consumer may support only specific characters as textual leaders. If a character that is not supported by a consumer is specified by this attribute, the consumer should display a leader character that it supports instead of the one specified by this attribute. </p><p class="Text_20_body">If both <span class="Attribute">style:leader-text</span> and <span class="Attribute">style:leader-style</span> attributes are specified, the value of the <span class="Attribute">style:leader-text</span> sets the leader text for tab stops.</p><p class="Default_20_Value_borderStart">The default value for this attribute is “ “ (U+0020, SPACE).</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:leader-text</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:leader-text</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a19_487style_leader-text-style"><span style="margin-right:0.127cm;">19.487</span></a><a id="__RefHeading__1417928_253892949"/><a id="attribute-style_leader-text-style"/>style:leader-text-style</h2><p class="Text_20_body">The <span class="Attribute">style:leader-text-style</span> specifies a text style that is applied to a textual leader. It is not applied to leader lines. If the attribute appears in an automatic style, it may reference either an automatic text style or a common style. If the attribute appears in a common style, it may reference a common style only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:leader-text-style</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:leader-text-style</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_488style_leader-type"><span style="margin-right:0.127cm;">19.488</span></a><a id="__RefHeading__1417930_253892949"/><a id="attribute-style_leader-type"/>style:leader-type</h2><p class="Text_20_body">The <span class="Attribute">style:leader-type</span> attribute specifies whether a leader line should be drawn, and if so, whether a single or double line will be used.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:leader-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: a double line is drawn.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: no line is drawn.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">ingle</span>: a single line is drawn.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:leader-type</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:leader-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">single</span> or <span class="Attribute_20_Value">double</span>.</p><h2 class="Heading_20_2"><a id="a19_489style_leader-width"><span style="margin-right:0.127cm;">19.489</span></a><a id="__RefHeading__1417932_253892949"/><a id="attribute-style_leader-width"/>style:leader-width</h2><p class="Text_20_body">The <span class="Attribute">style:leader-width</span> attribute specifies the width of a leader line.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:leader-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the width of a leader line should be calculated from the font size of the text where the leader line will appear. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bold</span>: the width of a leader line should be calculated from the font size of the text where the leader line will appear but is wider than for the value of auto. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The line widths referenced by the values <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">thick</span> and <span class="Attribute_20_Value">thin</span> are implementation-defined. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:leader-width</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:leader-width</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">thin</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span>, a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>, a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a> or a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a19_490style_legend-expansion"><span style="margin-right:0.127cm;">19.490</span></a><a id="__RefHeading__1417934_253892949"/><a id="attribute-style_legend-expansion"/>style:legend-expansion</h2><p class="Text_20_body">The <span class="Attribute">style:legend-expansion</span> attribute specifies the direction in which a legend expands . </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:legend-expansion</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">balanced</span>: legend expands horizontally and vertically.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom</span>: with a <span class="Attribute">style:legend-expansion-aspect-ratio</span> attribute legend expands according to the specified ratio.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">high</span>: legend expands vertically. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wide</span>: legend expands horizontally.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:legend-expansion</span> attribute is usable with the following element: <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:legend-expansion</span> attribute are <span class="Attribute_20_Value">wide</span>, <span class="Attribute_20_Value">high</span>, <span class="Attribute_20_Value">balanced</span> or <span class="Attribute_20_Value">custom</span>.</p><h2 class="Heading_20_2"><a id="a19_491style_legend-expansion-aspect-ratio"><span style="margin-right:0.127cm;">19.491</span></a><a id="__RefHeading__1417936_253892949"/><a id="attribute-style_legend-expansion-aspect-ratio"/>style:legend-expansion-aspect-ratio</h2><p class="Text_20_body">The <span class="Attribute">style:legend-expansion-aspect-ratio</span> attribute specifies the ratio between width and height for a <span class="Attribute">style:legend-expansion</span> attribute with value <span class="Source_20_Text">custom</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:legend-expansion-aspect-ratio</span> attribute is usable with the following element: <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:legend-expansion-aspect-ratio</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_492style_length"><span style="margin-right:0.127cm;">19.492</span></a><a id="__RefHeading__1417938_253892949"/><a id="attribute-style_length"/>style:length</h2><p class="Text_20_body">The <span class="Attribute">style:length</span> attribute specifies the number of characters that are displayed in a larger font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:length</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">word</span>: specifies a set of characters to be displayed in a larger font.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> What will be treated as a “word” by a consumer is locale specific. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:length</span> attribute is usable with the following element: <span class="Element">&lt;style:drop-cap&gt;</span> <a href="#element-style_drop-cap">17.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:length</span> attribute are <span class="Attribute_20_Value">word</span> or a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_493style_line-style"><span style="margin-right:0.127cm;">19.493</span></a><a id="__RefHeading__1417940_253892949"/><a id="attribute-style_line-style"/>style:line-style</h2><p class="Text_20_body">The <span class="Attribute">style:line-style</span> attribute specifies the style of a footnote separator line.</p><p class="Text_20_body">The defined value for the <span class="Attribute">style:line-style</span> attribute is <span class="Attribute_20_Value">none</span>: no footnote separator line is drawn.</p><p class="Text_20_body">The footnote separator components referenced by the values <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">dot-dash</span>, <span class="Attribute_20_Value">dot-dot-dash</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">long-dash</span>, <span class="Attribute_20_Value">solid</span> and <span class="Attribute_20_Value">wave</span>, are implementation-defined.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:line-style</span> attribute is usable with the following element: <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:line-style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">long-dash</span>, <span class="Attribute_20_Value">dot-dash</span>, <span class="Attribute_20_Value">dot-dot-dash</span> or <span class="Attribute_20_Value">wave</span>.</p><h2 class="Heading_20_2"><a id="a19_494style_lines"><span style="margin-right:0.127cm;">19.494</span></a><a id="__RefHeading__1417942_253892949"/><a id="attribute-style_lines"/>style:lines</h2><p class="Text_20_body">The <span class="Attribute">style:lines</span> attribute specifies the number of text lines which a font spans. If the value of this attribute is <span class="Attribute_20_Value_20_Instance">1</span>, <span class="Element">&lt;style:drop-cap&gt;</span> is disabled.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:lines</span> attribute is usable with the following element: <span class="Element">&lt;style:drop-cap&gt;</span> <a href="#element-style_drop-cap">17.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:lines</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_495style_list-level"><span style="margin-right:0.127cm;">19.495</span></a><a id="__RefHeading__1417944_253892949"/><a id="attribute-style_list-level"/>style:list-level</h2><p class="Text_20_body">The <span class="Attribute">style:list-level</span> attribute specifies the list level value of a list style that may be applied to any paragraph style. It does not directly specify the paragraph's list level value, but consumers can change the paragraph's list level value to the specified value when the paragraph style is applied. It is valid only if the <span class="Attribute">style:list-style-name</span> attribute is specified and is not empty, and if the <span class="Attribute">style:family</span> attribute has the value <span class="Attribute_20_Value">paragraph</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:list-level</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:list-level</span> attribute are a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a> or an empty string.</p><h2 class="Heading_20_2"><a id="a19_496style_list-style-name"><span style="margin-right:0.127cm;">19.496</span></a><a id="__RefHeading__1417946_253892949"/><a id="attribute-style_list-style-name"/>style:list-style-name</h2><p class="Text_20_body">The <span class="Attribute">style:list-style-name</span> attribute specifies a list style for style families with paragraph formatting properties. This applies to automatic and common styles.</p><p class="Text_20_body">The list style specified by this attribute is applied to headings and paragraphs that are contained in a list, where the list does not specify a list style itself, and the list has no list style specification for any of its parents.</p><p class="Text_20_body">The <span class="Attribute">style:list-style-name</span> attribute value can be empty. If empty, this attribute does not inherit a list style value from a parent style. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:list-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:list-style-name</span> attribute are a value of type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a> or an empty string.</p><h2 class="Heading_20_2"><a id="a19_497style_master-page-name"><span style="margin-right:0.127cm;">19.497</span></a><a id="__RefHeading__1417948_253892949"/><a id="attribute-style_master-page-name"/>style:master-page-name</h2><p class="Text_20_body">The <span class="Attribute">style:master-page-name</span> attribute defines a master page for a paragraph or table style. This applies to automatic and common styles. </p><p class="Text_20_body">If this attribute is associated with a style, a page break is inserted when the style is applied and the specified master page is applied to the resulting page.</p><p class="Text_20_body">This attribute is ignored if it is associated with a paragraph style that is applied to a paragraph within a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:master-page-name</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:master-page-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_498style_name"><span style="margin-right:0.127cm;">19.498</span></a><a id="__RefHeading__1417950_253892949"/><a id="attribute-style_name"/>style:name</h2><h3 class="Heading_20_3"><a id="a19_498_1General"><span style="margin-right:0.127cm;">19.498.1</span></a><a id="__RefHeading__1417952_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:name</span> attribute specifies names that reference style mechanisms.</p><h3 class="Heading_20_3"><a id="a19_498_2_number_boolean-style____number_currency-style____number_date-style____number_number-style____number_percentage-style____number_text-style____number_time-style____style_master-page____style_page-layout____style_presentation-page-layout____style_style____text_list-style____text_outline-style_"><span style="margin-right:0.127cm;">19.498.2</span></a><a id="__RefHeading__1417954_253892949"/><a id="attribute-style_name_element-number_currency-style"/><a id="attribute-style_name_element-number_date-style"/><a id="attribute-style_name_element-number_number-style"/><a id="attribute-style_name_element-number_percentage-style"/><a id="attribute-style_name_element-number_text-style"/><a id="attribute-style_name_element-number_time-style"/><a id="attribute-style_name_element-style_master-page"/><a id="attribute-style_name_element-style_page-layout"/><a id="attribute-style_name_element-style_presentation-page-layout"/><a id="attribute-style_name_element-style_style"/><a id="attribute-style_name_element-text_list-style"/><a id="attribute-style_name_element-text_outline-style"/><a id="attribute-style_name_element-number_boolean-style"/>&lt;number:boolean-style&gt;, &lt;number:currency-style&gt;, &lt;number:date-style&gt;, &lt;number:number-style&gt;, &lt;number:percentage-style&gt;, &lt;number:text-style&gt;, &lt;number:time-style&gt;, &lt;style:master-page&gt;, &lt;style:page-layout&gt;, &lt;style:presentation-page-layout&gt;, &lt;style:style&gt;, &lt;text:list-style&gt;, &lt;text:outline-style&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:name</span> attribute specifies the name of a:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>data style - It can be used with all data style elements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>list style<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>master page - Each master page is referenced using the page name. The name specified shall be unique to the document instance.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>outline style - The outline style as a list style can be referenced by the <span class="Attribute">style:list-style-name</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>page layout <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>style – With the <span class="Attribute">style:family</span> attribute, the <span class="Attribute">style:name</span> attribute uniquely identifies a style. The <span class="Element">&lt;office:styles&gt;</span>, <span class="Element">&lt;office:automatic-styles&gt;</span> and <span class="Element">&lt;office:master-</span><span class="Element">styles&gt;</span> elements each shall not contain two styles with the same family and the same name.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">For automatic styles, the name may be generated by OpenDocument producers. For each style family or style element, producers should generate distinct sets of names for automatic styles stored in the content.xml <a href="#element-office_document-content">3.1.3.2</a> and styles.xml <a href="#element-office_document-styles">3.1.3.3</a> files. The names should also be distinct from the names used in the <span class="Element">&lt;office:styles&gt;</span> element inside the styles.xml files.</p><p class="Note"><span class="Note_20_Label">Note:</span> If the document is produced multiple times, it cannot be assumed that the same name is generated each time. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:name</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a>, <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>, <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>, <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout">16.5</a>, <span class="Element">&lt;style:presentation-page-layout&gt;</span> <a href="#element-style_presentation-page-layout">16.41</a>, <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>, <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a> and <span class="Element">&lt;text:outline-style&gt;</span> <a href="#element-text_outline-style">16.34</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_498_3_style_font-face_"><span style="margin-right:0.127cm;">19.498.3</span></a><a id="__RefHeading__1417956_253892949"/><a id="attribute-style_name_element-style_font-face"/>&lt;style:font-face&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:name</span> attribute specifies a unique name for a font declaration. This name can be used inside styles as an attribute of the <span class="Element">&lt;style:text-properties&gt;</span> element) as the value of a <span class="Attribute">style:font-name</span> attribute to immediately select a font face declaration.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:name</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_499style_next-style-name"><span style="margin-right:0.127cm;">19.499</span></a><a id="__RefHeading__1417958_253892949"/><a id="attribute-style_next-style-name"/>style:next-style-name</h2><h3 class="Heading_20_3"><a id="a19_499_1General"><span style="margin-right:0.127cm;">19.499.1</span></a><a id="__RefHeading__1417960_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:next-style-name</span> attribute specifies a style to be used with pages and paragraphs.</p><h3 class="Heading_20_3"><a id="a19_499_2_style_master-page_"><span style="margin-right:0.127cm;">19.499.2</span></a><a id="__RefHeading__1417962_253892949"/><a id="attribute-style_next-style-name_element-style_master-page"/>&lt;style:master-page&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:next-style-name</span> attribute specifies the name of the master page that is used for the next page if the current page is entirely filled. If the next style name is not specified, the current master page is used for the next page. The value of this attribute shall be the name of a <span class="Element">&lt;style:master-page&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:next-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:next-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_499_3_style_style_"><span style="margin-right:0.127cm;">19.499.3</span></a><a id="__RefHeading__1417964_253892949"/><a id="attribute-style_next-style-name_element-style_style"/>&lt;style:style&gt;</h3><p class="Text_20_body">Within styles for paragraphs, <span class="Attribute">style:next-style-name</span> attribute specifies the style to be used for the next paragraph if a paragraph break is inserted in the user interface. By default, the current style is used as the next style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:next-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:next-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_500style_num-format"><span style="margin-right:0.127cm;">19.500</span></a><a id="__RefHeading__1417966_253892949"/><a id="attribute-style_num-format"/>style:num-format</h2><p class="Text_20_body">The <span class="Attribute">style:num-format</span> attribute specifies a numbering sequence. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:num-format</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">1</span>: Hindu-Arabic number sequence starts with 1.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">a</span>: number sequence of lowercase Modern Latin basic alphabet characters starts with “a”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">A</span>: number sequence of uppercase Modern Latin basic alphabet characters starts with “A”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span>: number sequence of lowercase Roman numerals starts with “i”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">I</span>: number sequence of uppercase Roman numerals start with “I”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>an empty string: no number sequence displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If no value is given, no number sequence is displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-format</span> attribute is usable with the following elements: <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>, <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>, <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:num-format</span> attribute are <span class="Attribute_20_Value">1</span>, <span class="Attribute_20_Value">i</span>, <span class="Attribute_20_Value">I</span>, a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>, an empty string, <span class="Attribute_20_Value">a</span> or <span class="Attribute_20_Value">A</span>.</p><h2 class="Heading_20_2"><a id="a19_501style_num-letter-sync"><span style="margin-right:0.127cm;">19.501</span></a><a id="__RefHeading__1417968_253892949"/><a id="attribute-style_num-letter-sync"/>style:num-letter-sync</h2><p class="Text_20_body">The <span class="Attribute">style:num-letter-sync</span> attribute specifies whether letter synchronization shall take place. If letters are used in alphabetical order for numbering, there are two ways to process overflows within a digit, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: A new digit is inserted that always has the same value as the following digit. The numbering sequence (for lower case numberings) in that case is a, b, c, ..., z, aa, bb, cc, ..., zz, aaa, ..., and so on.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: A new digit is inserted. Its start value is ”a” or ”A”, and it is incremented every time an overflow occurs in the following digit. The numbering sequence (for lower case numberings) in that case is a,b,c, ..., z, aa, ab, ac, ...,az, ba, ..., and so on. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-letter-sync</span> attribute is usable with the following elements: <span class="Element">&lt;text:character-count&gt;</span> <a href="#element-text_character-count">7.5.18.5</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>, <span class="Element">&lt;text:image-count&gt;</span> <a href="#element-text_image-count">7.5.18.7</a>, <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>, <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>, <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>, <span class="Element">&lt;text:object-count&gt;</span> <a href="#element-text_object-count">7.5.18.8</a>, <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>, <span class="Element">&lt;text:page-count&gt;</span> <a href="#element-text_page-count">7.5.18.2</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:page-variable-get&gt;</span> <a href="#element-text_page-variable-get">7.7.1.3</a>, <span class="Element">&lt;text:paragraph-count&gt;</span> <a href="#element-text_paragraph-count">7.5.18.3</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:table-count&gt;</span> <a href="#element-text_table-count">7.5.18.6</a> and <span class="Element">&lt;text:word-count&gt;</span> <a href="#element-text_word-count">7.5.18.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:num-letter-sync</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_502style_num-prefix"><span style="margin-right:0.127cm;">19.502</span></a><a id="__RefHeading__1417970_253892949"/><a id="attribute-style_num-prefix"/>style:num-prefix</h2><p class="Text_20_body">The <span class="Attribute">style:num-prefix</span> attribute specifies what to display before a number.</p><p class="Text_20_body">If the <span class="Attribute">style:num-prefix</span> and <span class="Attribute">style:num-suffix</span> values do not contain any character that has a Unicode category of Nd, Nl, No, Lu, Ll, Lt, Lm or Lo, an <a title="XSL Transformations (XSLT) Version 1.0" href="http://www.w3.org/TR/1999/REC-xslt-19991116">[XSLT]</a> <span class="Alien_20_Attribute">format</span> attribute can be created from the OpenDocument attributes by concatenating the values of the <span class="Attribute">style:num-prefix</span>, <span class="Attribute">style:num-format</span>, and <span class="Attribute">style:num-suffix</span> attributes.</p><p class="Text_20_body">The <span class="Attribute">style:num-prefix</span> attribute can also specify a character before the value of a <span class="Attribute">text:bullet-char</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-prefix</span> attribute is usable with the following elements: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>, <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>, <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a> and <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:num-prefix</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_503style_num-suffix"><span style="margin-right:0.127cm;">19.503</span></a><a id="__RefHeading__1417972_253892949"/><a id="attribute-style_num-suffix"/>style:num-suffix</h2><p class="Text_20_body">The <span class="Attribute">style:num-prefix</span> and <span class="Attribute">style:num-suffix</span> attributes specify what to display before and after the number.</p><p class="Text_20_body">If the <span class="Attribute">style:num-prefix</span> and <span class="Attribute">style:num-suffix</span> values do not contain any character that has a Unicode category of Nd, Nl, No, Lu, Ll, Lt, Lm or Lo, an <a title="XSL Transformations (XSLT) Version 1.0" href="http://www.w3.org/TR/1999/REC-xslt-19991116">[XSLT]</a> <span class="Alien_20_Attribute">format</span> attribute can be created from the OpenDocument attributes by concatenating the values of the <span class="Attribute">style:num-prefix</span>, <span class="Attribute">style:num-format</span>, and <span class="Attribute">style:num-suffix</span> attributes.</p><p class="Text_20_body">The <span class="Attribute">style:num-suffix</span> attribute can also specify a character after the value of a <span class="Attribute">text:bullet-char</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-suffix</span> attribute is usable with the following elements: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>, <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>, <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a> and <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:num-suffix</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_504style_page-layout-name"><span style="margin-right:0.127cm;">19.504</span></a><a id="__RefHeading__1417974_253892949"/><a id="attribute-style_page-layout-name"/>style:page-layout-name</h2><p class="Text_20_body">The <span class="Attribute">style:page-layout-name</span> attribute specifies a page layout style that contains sizes, border and orientation attributes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:page-layout-name</span> attribute is usable with the following elements: <span class="Element">&lt;presentation:notes&gt;</span> <a href="#element-presentation_notes">16.17</a>, <span class="Element">&lt;style:handout-master&gt;</span> <a href="#element-style_handout-master">10.2.1</a> and <span class="Element">&lt;style:master-page&gt;</span> <a href="#element-style_master-page">16.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:page-layout-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_505style_page-usage"><span style="margin-right:0.127cm;">19.505</span></a><a id="__RefHeading__1417976_253892949"/><a id="attribute-style_page-usage"/>style:page-usage</h2><p class="Text_20_body">The <span class="Attribute">style:page-usage</span> attribute specifies the type of pages that a page master should generate.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:page-usage</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">all</span>: if there are no <span class="Element">&lt;style:header-left&gt;</span> or <span class="Element">&lt;style:footer-left&gt;</span> elements, the header and footer content is the same for left and right pages.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: <span class="Element">&lt;style:header-left&gt;</span> or <span class="Element">&lt;style:footer-left&gt;</span> elements are ignored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">mirrored</span>: if there are no <span class="Element">&lt;style:header-left&gt;</span> or <span class="Element">&lt;style:footer-left&gt;</span> elements, the header and footer content is the same for left and right pages.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: <span class="Element">&lt;style:header-left&gt;</span> or <span class="Element">&lt;style:footer-left&gt;</span> elements are ignored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">all</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:page-usage</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout&gt;</span> <a href="#element-style_page-layout">16.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:page-usage</span> attribute are <span class="Attribute_20_Value">all</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span> or <span class="Attribute_20_Value">mirrored</span>.</p><h2 class="Heading_20_2"><a id="a19_506style_parent-style-name"><span style="margin-right:0.127cm;">19.506</span></a><a id="__RefHeading__1417978_253892949"/><a id="attribute-style_parent-style-name"/>style:parent-style-name</h2><p class="Text_20_body">The <span class="Attribute">style:parent-style-name</span> attribute specifies the name of a parent style. The parent style cannot be an automatic style and shall exist.</p><p class="Text_20_body">If a parent style is not specified, the default style which has the same family as the current style is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:parent-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:parent-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_507style_percentage-data-style-name"><span style="margin-right:0.127cm;">19.507</span></a><a id="__RefHeading__1417980_253892949"/><a id="attribute-style_percentage-data-style-name"/>style:percentage-data-style-name</h2><p class="Text_20_body">The <span class="Attribute">style:percentage-data-style-name</span> attribute references the name of a percentage data style.</p><p class="Text_20_body">This attribute should be used together with <span class="Attribute">chart:data-label-number</span> attribute when the <span class="Attribute">chart:data-label-number</span> attribute has the value <span class="Attribute_20_Value">percentage</span> or the value <span class="Attribute_20_Value">value-and-percentage</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:percentage-data-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:style&gt;</span> <a href="#element-style_style">16.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:percentage-data-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_508style_position"><span style="margin-right:0.127cm;">19.508</span></a><a id="__RefHeading__1417982_253892949"/><a id="attribute-style_position"/>style:position</h2><h3 class="Heading_20_3"><a id="a19_508_1General"><span style="margin-right:0.127cm;">19.508.1</span></a><a id="__RefHeading__1417984_253892949"/>General</h3><p class="Text_20_body">This attribute defines a position.</p><h3 class="Heading_20_3"><a id="a19_508_2_style_background-image_"><span style="margin-right:0.127cm;">19.508.2</span></a><a id="__RefHeading__1417986_253892949"/><a id="attribute-style_position_element-style_background-image"/>&lt;style:background-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:position</span> attribute specifies the position of a background image. Its value can be a space separated combination of <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">bottom</span> for the vertical position and <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">right</span> for the horizontal position. The vertical and horizontal positions can be specified in any order. If one position is specified, the other position defaults to <span class="Attribute_20_Value">center</span>. </p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a> element the default value for this attribute is <span class="Attribute_20_Value">center</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:position</span> attribute is usable with the following element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:position</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">bottom</span>, or two white space separated values, that may appear in any order. One of these values is one of: <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">right</span>. The other value is one of: <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">bottom</span>.</p><h3 class="Heading_20_3"><a id="a19_508_3_style_tab-stop_"><span style="margin-right:0.127cm;">19.508.3</span></a><a id="__RefHeading__1417988_253892949"/><a id="attribute-style_position_element-style_tab-stop"/>&lt;style:tab-stop&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:position</span> attribute specifies the position of a tab stop. Depending on the value of the <span class="Attribute">text:relative-tab-stop-position</span> attribute in the <span class="Element">&lt;text:table-of-content-source&gt;</span>, <span class="Element">&lt;text:illustration-index-source&gt;</span>, <span class="Element">&lt;text:object-index-source&gt;</span>, <span class="Element">&lt;text:user-index-source&gt;</span> or <span class="Element">&lt;text:alphabetical-index-source&gt;</span> parent element, the position of the tab is interpreted as being relative to the left margin or the left indent. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:position</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:position</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_508_4_text_index-entry-tab-stop_"><span style="margin-right:0.127cm;">19.508.4</span></a><a id="__RefHeading__1417990_253892949"/><a id="attribute-style_position_element-text_index-entry-tab-stop"/>&lt;text:index-entry-tab-stop&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:position</span> attribute specifies the position of a tab stop. If the value of the <span class="Attribute">style:type</span> attribute is <span class="Attribute_20_Value">left</span>, then this attribute shall be present. Otherwise, it shall be omitted. </p><p class="Text_20_body">Depending on the value of the <span class="Attribute">text:relative-tab-stop-position</span> attribute in the <span class="Element">&lt;text:table-of-content-source&gt;</span>, <span class="Element">&lt;text:illustration-index-source&gt;</span>, <span class="Element">&lt;text:object-index-source&gt;</span>, <span class="Element">&lt;text:user-index-source&gt;</span> or <span class="Element">&lt;text:alphabetical-index-source&gt;</span> parent element, the position of the tab is interpreted as being relative to the left margin or the left indent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:position</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:position</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_509style_rel-height"><span style="margin-right:0.127cm;">19.509</span></a><a id="__RefHeading__1417992_253892949"/><a id="attribute-style_rel-height"/>style:rel-height</h2><p class="Text_20_body">The <span class="Attribute">style:rel-height</span> attribute specifies height of a drawing object as a relative value within a frame. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:rel-height</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale</span>: the height should be calculated depending on the width, so that the ratio of width and height of the original image or object size is preserved.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale-min</span>: the height should be calculated as for value <span class="Attribute_20_Value">scale</span>, but the calculated height is a minimum height rather than an absolute one.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The interpretation of percentage values depends on the anchor of the drawing object. If the anchor for the drawing object is in a table cell, the percentage value is relative to the surrounding table box. If the anchor for the drawing object is in a text box, the percentage value is relative to the surrounding text box. In other cases, the percentage values is relative to the width of the page or window.</p><p class="Text_20_body">To support consumers that do not support relative width and heights, producers should also provide the height in <span class="Attribute">svg:height</span> and <span class="Attribute">fo:min-height</span> attributes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-height</span> attribute is usable with the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:rel-height</span> attribute are a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>, <span class="Attribute_20_Value">scale</span> or <span class="Attribute_20_Value">scale-min</span>.</p><h2 class="Heading_20_2"><a id="a19_510style_rel-width"><span style="margin-right:0.127cm;">19.510</span></a><a id="__RefHeading__1417994_253892949"/><a id="attribute-style_rel-width"/>style:rel-width</h2><h3 class="Heading_20_3"><a id="a19_510_1General"><span style="margin-right:0.127cm;">19.510.1</span></a><a id="__RefHeading__1417996_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:rel-width</span> attribute specifies widths.</p><h3 class="Heading_20_3"><a id="a19_510_2_draw_frame_"><span style="margin-right:0.127cm;">19.510.2</span></a><a id="__RefHeading__1417998_253892949"/><a id="attribute-style_rel-width_element-draw_frame"/>&lt;draw:frame&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:rel-width</span> attribute specifies the width of a drawing object as a relative value within a frame. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:rel-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale</span>:the width should be calculated depending on the height, so that the ratio of width and height of the original image or object size is preserved.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale-min</span>: the width should be calculated as for value <span class="Attribute_20_Value">scale</span>, but the calculated width is a minimum width rather than an absolute one.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The interpretation of percentage values depends on the anchor of the drawing object. If the anchor for the drawing object is in a table cell, the percentage value is relative to the surrounding table box. If the anchor for the drawing object is in a text box, the percentage value is relative to the surrounding text box. In other cases, the percentage values is relative to the width of the page or window.</p><p class="Text_20_body">To support consumers that do not support relative width, producers should also provide the width and heights in the <span class="Attribute">svg:width</span> and <span class="Attribute">fo:min-width</span> attributes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-width</span> attribute is usable with the following element: <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:rel-width</span> attribute are a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>, <span class="Attribute_20_Value">scale</span> or <span class="Attribute_20_Value">scale-min</span>.</p><h3 class="Heading_20_3"><a id="a19_510_3_style_column_"><span style="margin-right:0.127cm;">19.510.3</span></a><a id="__RefHeading__1418000_253892949"/><a id="attribute-style_rel-width_element-style_column"/>&lt;style:column&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:rel-width</span> attribute specifies the width of a column. </p><p class="Text_20_body"> Column widths are specified as relative widths, that is, a number followed by a "*" (U+002A, ASTERISK) character. The total space available for the entire table is distributed among its columns according to its relative width. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-width</span> attribute is usable with the following element: <span class="Element">&lt;style:column&gt;</span> <a href="#element-style_column">17.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rel-width</span> attribute has the data type <span class="Datatype">relativeLength</span> <a href="#datatype-relativeLength">18.3.27</a>.</p><h3 class="Heading_20_3"><a id="a19_510_4_style_footnote-sep_"><span style="margin-right:0.127cm;">19.510.4</span></a><a id="__RefHeading__1418002_253892949"/><a id="attribute-style_rel-width_element-style_footnote-sep"/>&lt;style:footnote-sep&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:rel-width</span> attribute specifies the length of the footnote separator line as a percentage of the body text area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-width</span> attribute is usable with the following element: <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rel-width</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_511style_repeat"><span style="margin-right:0.127cm;">19.511</span></a><a id="__RefHeading__1418004_253892949"/><a id="attribute-style_repeat"/>style:repeat</h2><p class="Text_20_body">The <span class="Attribute">style:repeat</span> attribute specifies if an image can be repeated or stretched over an area. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:repeat</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no-repeat</span>: image should not be repeated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">epeat</span>: image should be repeated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch</span>: image should be stretched over an area.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a> element the default value for this attribute is <span class="Attribute_20_Value">repeat</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:repeat</span> attribute is usable with the following element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:repeat</span> attribute are <span class="Attribute_20_Value">no-repeat</span>, <span class="Attribute_20_Value">repeat</span> or <span class="Attribute_20_Value">stretch</span>.</p><h2 class="Heading_20_2"><a id="a19_512style_rfc-language-tag"><span style="margin-right:0.127cm;">19.512</span></a><a id="__RefHeading__1418006_253892949"/><a id="attribute-style_rfc-language-tag"/>style:rfc-language-tag</h2><p class="Text_20_body">The <span class="Attribute">style:rfc-language-tag</span> attribute specifies a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">It shall only be used if its value can not be expressed as a valid combination of the <span class="Attribute">fo:language</span>, <span class="Attribute">fo:script</span> and <span class="Attribute">fo:country</span> attributes.</p><p class="Text_20_body">Producers may add support for consumers that don't support the <span class="Attribute">style:rfc-language-tag</span> attribute by specifying <span class="Attribute">fo:language</span>, <span class="Attribute">fo:script</span> and <span class="Attribute">fo:country</span> attributes with values that are implementation-dependent. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rfc-language-tag</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a> and <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rfc-language-tag</span> attribute has the data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h2 class="Heading_20_2"><a id="a19_513style_style"><span style="margin-right:0.127cm;">19.513</span></a><a id="__RefHeading__1418008_253892949"/><a id="attribute-style_style"/>style:style</h2><p class="Text_20_body">The <span class="Attribute">style:style</span> attribute specifies the line style of a column separator line.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:style</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no separator line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dashed</span>: dashed separator line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dashed</span>: separator line whose repeating pattern is a dot followed by a dash.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dotted</span>: dotted separator line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: solid separator line.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">solid</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:style</span> attribute is usable with the following element: <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">dashed</span> or <span class="Attribute_20_Value">dot-dashed</span>.</p><h2 class="Heading_20_2"><a id="a19_514style_style-name"><span style="margin-right:0.127cm;">19.514</span></a><a id="__RefHeading__1418010_253892949"/><a id="attribute-style_style-name"/>style:style-name</h2><p class="Text_20_body">The <span class="Attribute">style:style-name</span> attribute specifies the text style to apply to characters specified by a <span class="Element">&lt;style:drop-cap&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:drop-cap&gt;</span> <a href="#element-style_drop-cap">17.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_515style_type"><span style="margin-right:0.127cm;">19.515</span></a><a id="__RefHeading__1418012_253892949"/><a id="attribute-style_type"/>style:type</h2><h3 class="Heading_20_3"><a id="a19_515_1General"><span style="margin-right:0.127cm;">19.515.1</span></a><a id="__RefHeading__1418014_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:type</span> attribute specifies a tab stop type.</p><h3 class="Heading_20_3"><a id="a19_515_2_text_index-entry-tab-stop_"><span style="margin-right:0.127cm;">19.515.2</span></a><a id="__RefHeading__1418016_253892949"/><a id="attribute-style_type_element-text_index-entry-tab-stop"/>&lt;text:index-entry-tab-stop&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:type</span> attribute specifies the type of a tab stop. If the value of this attribute is <span class="Attribute_20_Value">left</span>, the <span class="Attribute">style:position</span> attribute shall also be present. Otherwise, this attribute shall be omitted.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: text is left aligned with a tab stop.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: text is right aligned with a tab stop.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:type</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:type</span> attribute are <span class="Attribute_20_Value">right</span> or <span class="Attribute_20_Value">left</span>.</p><h3 class="Heading_20_3"><a id="a19_515_3_style_tab-stop_"><span style="margin-right:0.127cm;">19.515.3</span></a><a id="__RefHeading__1418018_253892949"/><a id="attribute-style_type_element-style_tab-stop"/>&lt;style:tab-stop&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:type</span> attribute specifies the type of a tab stop. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: text is centered on a tab stop.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">har</span>: character appears at a tab stop position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: text is left aligned with a tab stop.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ight</span>: text is right aligned with a tab stop.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:type</span> attribute is usable with the following element: <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a>.</p><p class="Attribute_20_Value_20_List">The values of the <span class="Attribute">style:type</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span> or <span class="Attribute_20_Value">char</span>.</p><p class="Default_20_Value_borderEnd">For a <span class="Element">&lt;style:tab-stop&gt;</span> <a href="#element-style_tab-stop">17.8</a> element the default value for this attribute is <span class="Attribute_20_Value">left</span>.</p><h2 class="Heading_20_2"><a id="a19_516style_vertical-align"><span style="margin-right:0.127cm;">19.516</span></a><a id="__RefHeading__1418020_253892949"/><a id="attribute-style_vertical-align"/>style:vertical-align</h2><p class="Text_20_body">The <span class="Attribute">style:vertical-align</span> attribute specifies how to vertically align a line that is less than 100% of its height within the columned area. The value of this attribute can be either <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">middle</span>, or <span class="Attribute_20_Value">bottom</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:vertical-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: line is aligned with the bottom of a columned area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">middle</span>: line is aligned with the middle of a columned area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: line is aligned with the top of a columned area.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a> element the default value for this attribute is <span class="Attribute_20_Value">top</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">style:vertical-align</span> attribute is usable with the following element: <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:vertical-align</span> attribute are <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">middle</span> or <span class="Attribute_20_Value">bottom</span>.</p><h2 class="Heading_20_2"><a id="a19_517style_volatile"><span style="margin-right:0.127cm;">19.517</span></a><a id="__RefHeading__1418022_253892949"/><a id="attribute-style_volatile"/>style:volatile</h2><p class="Text_20_body">The <span class="Attribute">style:volatile</span> attribute specifies whether unused style in a document are retained or discarded by consumers.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:volatile</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumers should discard the unused styles.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumers should keep unused styles.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:volatile</span> attribute is usable with the following elements: <span class="Element">&lt;number:boolean-style&gt;</span> <a href="#element-number_boolean-style">16.27.23</a>, <span class="Element">&lt;number:currency-style&gt;</span> <a href="#element-number_currency-style">16.27.7</a>, <span class="Element">&lt;number:date-style&gt;</span> <a href="#element-number_date-style">16.27.10</a>, <span class="Element">&lt;number:number-style&gt;</span> <a href="#element-number_number-style">16.27.2</a>, <span class="Element">&lt;number:percentage-style&gt;</span> <a href="#element-number_percentage-style">16.27.9</a>, <span class="Element">&lt;number:text-style&gt;</span> <a href="#element-number_text-style">16.27.25</a> and <span class="Element">&lt;number:time-style&gt;</span> <a href="#element-number_time-style">16.27.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:volatile</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_518style_width"><span style="margin-right:0.127cm;">19.518</span></a><a id="__RefHeading__1418024_253892949"/><a id="attribute-style_width"/>style:width</h2><h3 class="Heading_20_3"><a id="a19_518_1General"><span style="margin-right:0.127cm;">19.518.1</span></a><a id="__RefHeading__1418026_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:width</span> attribute specifies a width. </p><h3 class="Heading_20_3"><a id="a19_518_2_style_column-sep_"><span style="margin-right:0.127cm;">19.518.2</span></a><a id="__RefHeading__1418028_253892949"/><a id="attribute-style_width_element-style_column-sep"/>&lt;style:column-sep&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:width</span> attribute specifies the width of a column separation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:width</span> attribute is usable with the following element: <span class="Element">&lt;style:column-sep&gt;</span> <a href="#element-style_column-sep">17.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_518_3_style_footnote-sep_"><span style="margin-right:0.127cm;">19.518.3</span></a><a id="__RefHeading__1418030_253892949"/><a id="attribute-style_width_element-style_footnote-sep"/>&lt;style:footnote-sep&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:width</span> attribute width or thickness of a line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:width</span> attribute is usable with the following element: <span class="Element">&lt;style:footnote-sep&gt;</span> <a href="#element-style_footnote-sep">17.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_519svg_accent-height"><span style="margin-right:0.127cm;">19.519</span></a><a id="__RefHeading__1418032_253892949"/><a id="attribute-svg_accent-height"/>svg:accent-height</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:accent-height</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:accent-height</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_520svg_alphabetic"><span style="margin-right:0.127cm;">19.520</span></a><a id="__RefHeading__1418034_253892949"/><a id="attribute-svg_alphabetic"/>svg:alphabetic</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:alphabetic</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:alphabetic</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_521svg_ascent"><span style="margin-right:0.127cm;">19.521</span></a><a id="__RefHeading__1418036_253892949"/><a id="attribute-svg_ascent"/>svg:ascent</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:ascent</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:ascent</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_522svg_bbox"><span style="margin-right:0.127cm;">19.522</span></a><a id="__RefHeading__1418038_253892949"/><a id="attribute-svg_bbox"/>svg:bbox</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:bbox</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:bbox</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_523svg_cap-height"><span style="margin-right:0.127cm;">19.523</span></a><a id="__RefHeading__1418040_253892949"/><a id="attribute-svg_cap-height"/>svg:cap-height</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cap-height</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cap-height</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_524svg_cx"><span style="margin-right:0.127cm;">19.524</span></a><a id="__RefHeading__1418042_253892949"/><a id="attribute-svg_cx"/>svg:cx</h2><h3 class="Heading_20_3"><a id="a19_524_1_draw_area-circle_"><span style="margin-right:0.127cm;">19.524.1</span></a><a id="__RefHeading__1418044_253892949"/><a id="attribute-svg_cx_element-draw_area-circle"/>&lt;draw:area-circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:cx</span> attribute defines the x-axis coordinate of the center of a circular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cx</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cx</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_524_2_draw_circle_"><span style="margin-right:0.127cm;">19.524.2</span></a><a id="__RefHeading__1418046_253892949"/><a id="attribute-svg_cx_element-draw_circle"/>&lt;draw:circle&gt;</h3><p class="Text_20_body">See §9.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cx</span> attribute is usable with the following element: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cx</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_524_3_draw_ellipse_"><span style="margin-right:0.127cm;">19.524.3</span></a><a id="__RefHeading__1418048_253892949"/><a id="attribute-svg_cx_element-draw_ellipse"/>&lt;draw:ellipse&gt;</h3><p class="Text_20_body">See §9.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cx</span> attribute is usable with the following element: <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cx</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_524_4_svg_radialGradient_"><span style="margin-right:0.127cm;">19.524.4</span></a><a id="__RefHeading__1418050_253892949"/><a id="attribute-svg_cx_element-svg_radialGradient"/>&lt;svg:radialGradient&gt;</h3><p class="Text_20_body">See §13.3.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">50%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:cx</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:cx</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_525svg_cy"><span style="margin-right:0.127cm;">19.525</span></a><a id="__RefHeading__1418052_253892949"/><a id="attribute-svg_cy"/>svg:cy</h2><h3 class="Heading_20_3"><a id="a19_525_1_draw_area-circle_"><span style="margin-right:0.127cm;">19.525.1</span></a><a id="__RefHeading__1418054_253892949"/><a id="attribute-svg_cy_element-draw_area-circle"/>&lt;draw:area-circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:cy</span> attribute defines the y-axis coordinate of the center of a circular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cy</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cy</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_525_2_draw_circle_"><span style="margin-right:0.127cm;">19.525.2</span></a><a id="__RefHeading__1418056_253892949"/><a id="attribute-svg_cy_element-draw_circle"/>&lt;draw:circle&gt;</h3><p class="Text_20_body">See §9.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cy</span> attribute is usable with the following element: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cy</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_525_3_draw_ellipse_"><span style="margin-right:0.127cm;">19.525.3</span></a><a id="__RefHeading__1418058_253892949"/><a id="attribute-svg_cy_element-draw_ellipse"/>&lt;draw:ellipse&gt;</h3><p class="Text_20_body">See §9.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:cy</span> attribute is usable with the following element: <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:cy</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_525_4_svg_radialGradient_"><span style="margin-right:0.127cm;">19.525.4</span></a><a id="__RefHeading__1418060_253892949"/><a id="attribute-svg_cy_element-svg_radialGradient"/>&lt;svg:radialGradient&gt;</h3><p class="Text_20_body">See §13.3.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">50%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:cy</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:cy</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_526svg_d"><span style="margin-right:0.127cm;">19.526</span></a><a id="__RefHeading__1418062_253892949"/><a id="attribute-svg_d"/>svg:d</h2><p class="Text_20_body">See §8 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:d</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:contour-path&gt;</span> <a href="#element-draw_contour-path">10.4.11.3</a>, <span class="Element">&lt;draw:marker&gt;</span> <a href="#element-draw_marker">16.40.8</a> and <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:d</span> attribute has the data type <span class="Datatype">pathData</span> <a href="#datatype-pathData">18.3.22</a>.</p><h2 class="Heading_20_2"><a id="a19_527svg_descent"><span style="margin-right:0.127cm;">19.527</span></a><a id="__RefHeading__1418064_253892949"/><a id="attribute-svg_descent"/>svg:descent</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:descent</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:descent</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_528svg_font-family"><span style="margin-right:0.127cm;">19.528</span></a><a id="__RefHeading__1418066_253892949"/><a id="attribute-svg_font-family"/>svg:font-family</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:font-family</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:font-family</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_529svg_font-size"><span style="margin-right:0.127cm;">19.529</span></a><a id="__RefHeading__1418068_253892949"/><a id="attribute-svg_font-size"/>svg:font-size</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:font-size</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:font-size</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a19_530svg_font-stretch"><span style="margin-right:0.127cm;">19.530</span></a><a id="__RefHeading__1418070_253892949"/><a id="attribute-svg_font-stretch"/>svg:font-stretch</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:font-stretch</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:font-stretch</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">ultra-condensed</span>, <span class="Attribute_20_Value">extra-condensed</span>, <span class="Attribute_20_Value">condensed</span>, <span class="Attribute_20_Value">semi-condensed</span>, <span class="Attribute_20_Value">semi-expanded</span>, <span class="Attribute_20_Value">expanded</span>, <span class="Attribute_20_Value">extra-expanded</span> or <span class="Attribute_20_Value">ultra-expanded</span>.</p><h2 class="Heading_20_2"><a id="a19_531svg_font-style"><span style="margin-right:0.127cm;">19.531</span></a><a id="__RefHeading__1418072_253892949"/><a id="attribute-svg_font-style"/>svg:font-style</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:font-style</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:font-style</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">italic</span> or <span class="Attribute_20_Value">oblique</span>.</p><h2 class="Heading_20_2"><a id="a19_532svg_font-variant"><span style="margin-right:0.127cm;">19.532</span></a><a id="__RefHeading__1418074_253892949"/><a id="attribute-svg_font-variant"/>svg:font-variant</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:font-variant</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:font-variant</span> attribute are <span class="Attribute_20_Value">normal</span> or <span class="Attribute_20_Value">small-caps</span>.</p><h2 class="Heading_20_2"><a id="a19_533svg_font-weight"><span style="margin-right:0.127cm;">19.533</span></a><a id="__RefHeading__1418076_253892949"/><a id="attribute-svg_font-weight"/>svg:font-weight</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:font-weight</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:font-weight</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">100</span>, <span class="Attribute_20_Value">200</span>, <span class="Attribute_20_Value">300</span>, <span class="Attribute_20_Value">400</span>, <span class="Attribute_20_Value">500</span>, <span class="Attribute_20_Value">600</span>, <span class="Attribute_20_Value">700</span>, <span class="Attribute_20_Value">800</span> or <span class="Attribute_20_Value">900</span>.</p><h2 class="Heading_20_2"><a id="a19_534svg_fx"><span style="margin-right:0.127cm;">19.534</span></a><a id="__RefHeading__1418078_253892949"/><a id="attribute-svg_fx"/>svg:fx</h2><p class="Text_20_body">See §13.2.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:fx</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:fx</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_535svg_fy"><span style="margin-right:0.127cm;">19.535</span></a><a id="__RefHeading__1418080_253892949"/><a id="attribute-svg_fy"/>svg:fy</h2><p class="Text_20_body">See §13.2.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:fy</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:fy</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_536svg_gradientTransform"><span style="margin-right:0.127cm;">19.536</span></a><a id="__RefHeading__1418082_253892949"/><a id="attribute-svg_gradientTransform"/>svg:gradientTransform</h2><p class="Text_20_body">See §13.2.2 and §13.2.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:gradientTransform</span> attribute is usable with the following elements: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> and <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:gradientTransform</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_537svg_gradientUnits"><span style="margin-right:0.127cm;">19.537</span></a><a id="__RefHeading__1418084_253892949"/><a id="attribute-svg_gradientUnits"/>svg:gradientUnits</h2><p class="Text_20_body">See §13.2.2 and §13.2.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">objectBoundingBox</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:gradientUnits</span> attribute is usable with the following elements: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> and <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The only value of the <span class="Attribute">svg:gradientUnits</span> attribute is <span class="Attribute_20_Value">objectBoundingBox</span>.</p><h2 class="Heading_20_2"><a id="a19_538svg_hanging"><span style="margin-right:0.127cm;">19.538</span></a><a id="__RefHeading__1418086_253892949"/><a id="attribute-svg_hanging"/>svg:hanging</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:hanging</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:hanging</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_539svg_height"><span style="margin-right:0.127cm;">19.539</span></a><a id="__RefHeading__1418088_253892949"/><a id="attribute-svg_height"/>svg:height</h2><h3 class="Heading_20_3"><a id="a19_539_1_chart_chart_"><span style="margin-right:0.127cm;">19.539.1</span></a><a id="__RefHeading__1418090_253892949"/><a id="attribute-svg_height_element-chart_chart"/>&lt;chart:chart&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute defines the height of the entire chart. If it is omitted, the size of the chart is determined by the size of the window in which the chart is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_2_chart_plot-area_"><span style="margin-right:0.127cm;">19.539.2</span></a><a id="__RefHeading__1418092_253892949"/><a id="attribute-svg_height_element-chart_plot-area"/>&lt;chart:plot-area&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute defines the height of the plot-area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_3_dr3d_scene_"><span style="margin-right:0.127cm;">19.539.3</span></a><a id="__RefHeading__1418094_253892949"/><a id="attribute-svg_height_element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_height_element-draw_caption">19.539.8</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_4_draw_area-polygon_"><span style="margin-right:0.127cm;">19.539.4</span></a><a id="__RefHeading__1418096_253892949"/><a id="attribute-svg_height_element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute defines the height of a polygonal image map area's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_5_draw_area-rectangle_"><span style="margin-right:0.127cm;">19.539.5</span></a><a id="__RefHeading__1418098_253892949"/><a id="attribute-svg_height_element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:</span><span class="Attribute">height</span> attribute defines the height of a rectangular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_6_draw_contour-polygon____draw_contour-path_"><span style="margin-right:0.127cm;">19.539.6</span></a><a id="__RefHeading__1418100_253892949"/><a id="attribute-svg_height_element-draw_contour-polygon"/><a id="attribute-svg_height_element-draw_contour-path"/>&lt;draw:contour-polygon&gt;, &lt;draw:contour-path&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:</span><span class="Attribute">height</span> attribute defines the height of a contour's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following elements: <span class="Element">&lt;draw:contour-path&gt;</span> <a href="#element-draw_contour-path">10.4.11.3</a> and <span class="Element">&lt;draw:contour-polygon&gt;</span> <a href="#element-draw_contour-polygon">10.4.11.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_7_draw_fill-image_"><span style="margin-right:0.127cm;">19.539.7</span></a><a id="__RefHeading__1418102_253892949"/><a id="attribute-svg_height_element-draw_fill-image"/>&lt;draw:fill-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute may be used to specify the height of a linked image. Its value is overridden by the height of the linked image resource.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> This attribute can be used to estimate the size of a fill image without loading the image data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_8_draw_caption____draw_custom-shape____draw_circle____draw_control____draw_ellipse____draw_frame____draw_rect____draw_page-thumbnail____draw_path____draw_polygon____draw_polyline____draw_regular-polygon_"><span style="margin-right:0.127cm;">19.539.8</span></a><a id="__RefHeading__1418104_253892949"/><a id="attribute-svg_height_element-draw_caption"/><a id="attribute-svg_height_element-draw_custom-shape"/><a id="attribute-svg_height_element-draw_circle"/><a id="attribute-svg_height_element-draw_control"/><a id="attribute-svg_height_element-draw_ellipse"/><a id="attribute-svg_height_element-draw_frame"/><a id="attribute-svg_height_element-draw_rect"/><a id="attribute-svg_height_element-draw_page-thumbnail"/><a id="attribute-svg_height_element-draw_path"/><a id="attribute-svg_height_element-draw_polygon"/><a id="attribute-svg_height_element-draw_polyline"/><a id="attribute-svg_height_element-draw_regular-polygon"/>&lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">See §5.1.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. For drawing shapes that have a non rectangular shape, the length refers to the drawing shape's bounding box.</p><p class="Text_20_body">If the <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attributes specify different values for a <span class="Element">&lt;draw:circle&gt;</span> element, the radius of the circle is derived from the smaller of the two values, and the circle is centered within the bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_9_office_annotation_"><span style="margin-right:0.127cm;">19.539.9</span></a><a id="__RefHeading__1418106_253892949"/><a id="attribute-svg_height_element-office_annotation"/>&lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute specifies the height of the rectangular which displays the annotation. Its meaning is the same as for a <span class="Element">&lt;draw:caption&gt;</span> element. See <a href="#attribute-svg_width_element-draw_caption">19.571.10</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_539_10_presentation_placeholder_"><span style="margin-right:0.127cm;">19.539.10</span></a><a id="__RefHeading__1418108_253892949"/><a id="attribute-svg_height_element-presentation_placeholder"/>&lt;presentation:placeholder&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_width_element-draw_caption">19.571.10</a>. Percentage values are relative to the height of the drawing page. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;presentation:placeholder&gt;</span> <a href="#element-presentation_placeholder">16.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:height</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_540svg_ideographic"><span style="margin-right:0.127cm;">19.540</span></a><a id="__RefHeading__1418110_253892949"/><a id="attribute-svg_ideographic"/>svg:ideographic</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:ideographic</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:ideographic</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_541svg_mathematical"><span style="margin-right:0.127cm;">19.541</span></a><a id="__RefHeading__1418112_253892949"/><a id="attribute-svg_mathematical"/>svg:mathematical</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:mathematical</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:mathematical</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_542svg_name"><span style="margin-right:0.127cm;">19.542</span></a><a id="__RefHeading__1418114_253892949"/><a id="attribute-svg_name"/>svg:name</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:name</span> attribute is usable with the following element: <span class="Element">&lt;svg:font-face-name&gt;</span> <a href="#element-svg_font-face-name">16.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_543svg_offset"><span style="margin-right:0.127cm;">19.543</span></a><a id="__RefHeading__1418116_253892949"/><a id="attribute-svg_offset"/>svg:offset</h2><p class="Text_20_body">See §13.2.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:offset</span> attribute is usable with the following element: <span class="Element">&lt;svg:stop&gt;</span> <a href="#element-svg_stop">16.40.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:offset</span> attribute are a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_544svg_origin"><span style="margin-right:0.127cm;">19.544</span></a><a id="__RefHeading__1418118_253892949"/><a id="attribute-svg_origin"/>svg:origin</h2><p class="Text_20_body">See §19.2.12 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Note"><span class="Note_20_Label">Note:</span> SVG relies upon the definition of origin in SMIL, see: <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#MotionOriginAttribute">http://www.w3.org/TR/2001/REC-smil-animation-20010904/#MotionOriginAttribute</a>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:origin</span> attribute is usable with the following element: <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:origin</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_545svg_overline-position"><span style="margin-right:0.127cm;">19.545</span></a><a id="__RefHeading__1418120_253892949"/><a id="attribute-svg_overline-position"/>svg:overline-position</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:overline-position</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:overline-position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_546svg_overline-thickness"><span style="margin-right:0.127cm;">19.546</span></a><a id="__RefHeading__1418122_253892949"/><a id="attribute-svg_overline-thickness"/>svg:overline-thickness</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:overline-thickness</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:overline-thickness</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_547svg_panose-1"><span style="margin-right:0.127cm;">19.547</span></a><a id="__RefHeading__1418124_253892949"/><a id="attribute-svg_panose-1"/>svg:panose-1</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:panose-1</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:panose-1</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_548svg_path"><span style="margin-right:0.127cm;">19.548</span></a><a id="__RefHeading__1418126_253892949"/><a id="attribute-svg_path"/>svg:path</h2><p class="Text_20_body">See §19.2.12 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:path</span> attribute is usable with the following element: <span class="Element">&lt;anim:animateMotion&gt;</span> <a href="#element-anim_animateMotion">15.2.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:path</span> attribute has the data type <span class="Datatype">pathData</span> <a href="#datatype-pathData">18.3.22</a>.</p><h2 class="Heading_20_2"><a id="a19_549svg_r"><span style="margin-right:0.127cm;">19.549</span></a><a id="__RefHeading__1418128_253892949"/><a id="attribute-svg_r"/>svg:r</h2><h3 class="Heading_20_3"><a id="a19_549_1_draw_area-circle_"><span style="margin-right:0.127cm;">19.549.1</span></a><a id="__RefHeading__1418130_253892949"/><a id="attribute-svg_r_element-draw_area-circle"/>&lt;draw:area-circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:r</span> attribute defines the radius of a circular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:r</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:r</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_549_2_draw_circle_"><span style="margin-right:0.127cm;">19.549.2</span></a><a id="__RefHeading__1418132_253892949"/><a id="attribute-svg_r_element-draw_circle"/>&lt;draw:circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:r</span> attribute defines the radius of a circle. The use of this attribute is defined by §9.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Note"><span class="Note_20_Label">Note:</span> If a <span class="Element">&lt;draw:circle&gt;</span> element does not have a value for the <span class="Attribute">svg:r</span> attribute, then its <span class="Attribute">svg:x</span>, <span class="Attribute">svg:y</span>, <span class="Attribute">svg:height</span>, and <span class="Attribute">svg:width</span> attributes can be used to define the geometry of a circle.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:r</span> attribute is usable with the following element: <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:r</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_549_3_svg_radialGradient_"><span style="margin-right:0.127cm;">19.549.3</span></a><a id="__RefHeading__1418134_253892949"/><a id="attribute-svg_r_element-svg_radialGradient"/>&lt;svg:radialGradient&gt;</h3><p class="Text_20_body">See §13.2.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">50%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:r</span> attribute is usable with the following element: <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:r</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_550svg_rx"><span style="margin-right:0.127cm;">19.550</span></a><a id="__RefHeading__1418136_253892949"/><a id="attribute-svg_rx"/>svg:rx</h2><p class="Text_20_body">See §9.4 of<a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. </p><p class="Text_20_body">The <span class="Attribute">svg:rx</span> and <span class="Attribute">svg:ry</span> attributes can be used to round off the corners of a rectangle. The <span class="Attribute">svg:rx</span> attribute specifies the x-axis radius of the ellipse used to round off the corners of a rectangle. The <span class="Attribute">svg:ry</span> attribute specifies the y-axis radius of that ellipse. If only the <span class="Attribute">svg:rx</span> attribute is present then its value will be used for <span class="Attribute">svg:ry</span>. If only a <span class="Attribute">svg:ry</span> attribute is present then its value will be used for <span class="Attribute">svg:rx</span>.</p><p class="Text_20_body">For use of this attribute with <span class="Element">&lt;draw:rect&gt;</span> see §9.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. </p><p class="Text_20_body">For use of this attribute with <span class="Element">&lt;draw:ellipse&gt;</span> see §9.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:rx</span> attribute is usable with the following elements: <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a> and <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:rx</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a19_551svg_ry"><span style="margin-right:0.127cm;">19.551</span></a><a id="__RefHeading__1418138_253892949"/><a id="attribute-svg_ry"/>svg:ry</h2><p class="Text_20_body">See §9.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. </p><p class="Text_20_body">The <span class="Attribute">svg:rx</span> and <span class="Attribute">svg:ry</span> attributes can be used to round off the corners of a rectangle. The <span class="Attribute">svg:rx</span> attribute specifies the x-axis radius of the ellipse used to round off the corners of a rectangle. The <span class="Attribute">svg:ry</span> attribute specifies the y-axis radius of that ellipse. If only the <span class="Attribute">svg:rx</span> attribute is present then its value will be used for <span class="Attribute">svg:ry</span>. If only a <span class="Attribute">svg:ry</span> attribute is present then its value will be used for <span class="Attribute">svg:rx</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:ry</span> attribute is usable with the following elements: <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a> and <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:ry</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a19_552svg_slope"><span style="margin-right:0.127cm;">19.552</span></a><a id="__RefHeading__1418140_253892949"/><a id="attribute-svg_slope"/>svg:slope</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:slope</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:slope</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_553svg_spreadMethod"><span style="margin-right:0.127cm;">19.553</span></a><a id="__RefHeading__1418142_253892949"/><a id="attribute-svg_spreadMethod"/>svg:spreadMethod</h2><p class="Text_20_body">See §13.2.2 and §13.2.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">pad</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:spreadMethod</span> attribute is usable with the following elements: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> and <span class="Element">&lt;svg:radialGradient&gt;</span> <a href="#element-svg_radialGradient">16.40.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:spreadMethod</span> attribute are <span class="Attribute_20_Value">pad</span>, <span class="Attribute_20_Value">reflect</span> or <span class="Attribute_20_Value">repeat</span>.</p><h2 class="Heading_20_2"><a id="a19_554svg_stemh"><span style="margin-right:0.127cm;">19.554</span></a><a id="__RefHeading__1418144_253892949"/><a id="attribute-svg_stemh"/>svg:stemh</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stemh</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:stemh</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_555svg_stemv"><span style="margin-right:0.127cm;">19.555</span></a><a id="__RefHeading__1418146_253892949"/><a id="attribute-svg_stemv"/>svg:stemv</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stemv</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:stemv</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_556svg_stop-color"><span style="margin-right:0.127cm;">19.556</span></a><a id="__RefHeading__1418148_253892949"/><a id="attribute-svg_stop-color"/>svg:stop-color</h2><p class="Text_20_body">See §13.2.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stop-color</span> attribute is usable with the following element: <span class="Element">&lt;svg:stop&gt;</span> <a href="#element-svg_stop">16.40.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:stop-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_557svg_stop-opacity"><span style="margin-right:0.127cm;">19.557</span></a><a id="__RefHeading__1418150_253892949"/><a id="attribute-svg_stop-opacity"/>svg:stop-opacity</h2><p class="Text_20_body">See §13.2.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stop-opacity</span> attribute is usable with the following element: <span class="Element">&lt;svg:stop&gt;</span> <a href="#element-svg_stop">16.40.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:stop-opacity</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_558svg_strikethrough-position"><span style="margin-right:0.127cm;">19.558</span></a><a id="__RefHeading__1418152_253892949"/><a id="attribute-svg_strikethrough-position"/>svg:strikethrough-position</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:strikethrough-position</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:strikethrough-position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_559svg_strikethrough-thickness"><span style="margin-right:0.127cm;">19.559</span></a><a id="__RefHeading__1418154_253892949"/><a id="attribute-svg_strikethrough-thickness"/>svg:strikethrough-thickness</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:strikethrough-thickness</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:strikethrough-thickness</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_560svg_string"><span style="margin-right:0.127cm;">19.560</span></a><a id="__RefHeading__1418156_253892949"/><a id="attribute-svg_string"/>svg:string</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:string</span> attribute is usable with the following element: <span class="Element">&lt;svg:font-face-format&gt;</span> <a href="#element-svg_font-face-format">16.26</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:string</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_561svg_type"><span style="margin-right:0.127cm;">19.561</span></a><a id="__RefHeading__1418158_253892949"/><a id="attribute-svg_type"/>svg:type</h2><p class="Text_20_body">See §19.2.14 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:type</span> attribute is usable with the following element: <span class="Element">&lt;anim:animateTransform&gt;</span> <a href="#element-anim_animateTransform">15.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:type</span> attribute are <span class="Attribute_20_Value">translate</span>, <span class="Attribute_20_Value">scale</span>, <span class="Attribute_20_Value">rotate</span>, <span class="Attribute_20_Value">skewX</span> or <span class="Attribute_20_Value">skewY</span>.</p><h2 class="Heading_20_2"><a id="a19_562svg_underline-position"><span style="margin-right:0.127cm;">19.562</span></a><a id="__RefHeading__1418160_253892949"/><a id="attribute-svg_underline-position"/>svg:underline-position</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:underline-position</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:underline-position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_563svg_underline-thickness"><span style="margin-right:0.127cm;">19.563</span></a><a id="__RefHeading__1418162_253892949"/><a id="attribute-svg_underline-thickness"/>svg:underline-thickness</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:underline-thickness</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:underline-thickness</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_564svg_unicode-range"><span style="margin-right:0.127cm;">19.564</span></a><a id="__RefHeading__1418164_253892949"/><a id="attribute-svg_unicode-range"/>svg:unicode-range</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:unicode-range</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:unicode-range</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_565svg_units-per-em"><span style="margin-right:0.127cm;">19.565</span></a><a id="__RefHeading__1418166_253892949"/><a id="attribute-svg_units-per-em"/>svg:units-per-em</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:units-per-em</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:units-per-em</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_566svg_v-alphabetic"><span style="margin-right:0.127cm;">19.566</span></a><a id="__RefHeading__1418168_253892949"/><a id="attribute-svg_v-alphabetic"/>svg:v-alphabetic</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:v-alphabetic</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:v-alphabetic</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_567svg_v-hanging"><span style="margin-right:0.127cm;">19.567</span></a><a id="__RefHeading__1418170_253892949"/><a id="attribute-svg_v-hanging"/>svg:v-hanging</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:v-hanging</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:v-hanging</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_568svg_v-ideographic"><span style="margin-right:0.127cm;">19.568</span></a><a id="__RefHeading__1418172_253892949"/><a id="attribute-svg_v-ideographic"/>svg:v-ideographic</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:v-ideographic</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:v-ideographic</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_569svg_v-mathematical"><span style="margin-right:0.127cm;">19.569</span></a><a id="__RefHeading__1418174_253892949"/><a id="attribute-svg_v-mathematical"/>svg:v-mathematical</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:v-mathematical</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:v-mathematical</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_570svg_viewBox"><span style="margin-right:0.127cm;">19.570</span></a><a id="__RefHeading__1418176_253892949"/><a id="attribute-svg_viewBox"/>svg:viewBox</h2><p class="Text_20_body">The <span class="Attribute">svg:viewBox</span> attribute establishes a user coordinate system inside the coordinate system of the shape specified by the position and size attributes. This user coordinate system is used by the <span class="Attribute">draw:points</span> and <span class="Attribute">svg:d</span> attributes, as well as by the attributes of <span class="Element">&lt;draw:enhanced-geometry&gt;</span> element and its child elements which specify coordinates.</p><p class="Text_20_body">The syntax for using this attribute is the same as the <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a> syntax. The value of the attribute are four numbers separated by white spaces, which define the left, top, right, and bottom dimensions of the user coordinate system.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:viewBox</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:contour-path&gt;</span> <a href="#element-draw_contour-path">10.4.11.3</a>, <span class="Element">&lt;draw:contour-polygon&gt;</span> <a href="#element-draw_contour-polygon">10.4.11.2</a>, <span class="Element">&lt;draw:enhanced-geometry&gt;</span> <a href="#element-draw_enhanced-geometry">10.6.2</a>, <span class="Element">&lt;draw:marker&gt;</span> <a href="#element-draw_marker">16.40.8</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a> and <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:viewBox</span> attribute are four white space separated values of type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_571svg_width"><span style="margin-right:0.127cm;">19.571</span></a><a id="__RefHeading__1418178_253892949"/><a id="attribute-svg_width"/>svg:width</h2><h3 class="Heading_20_3"><a id="a19_571_1_chart_chart_"><span style="margin-right:0.127cm;">19.571.1</span></a><a id="__RefHeading__1418180_253892949"/><a id="attribute-svg_width_element-chart_chart"/>&lt;chart:chart&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute defines the width of a chart. If it is omitted, the size of a chart is determined by the size of the window in which the chart is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_2_chart_floor_"><span style="margin-right:0.127cm;">19.571.2</span></a><a id="__RefHeading__1418182_253892949"/><a id="attribute-svg_width_element-chart_floor"/>&lt;chart:floor&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute defines the thickness of a floor.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;chart:floor&gt;</span> <a href="#element-chart_floor">11.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_3_chart_plot-area_"><span style="margin-right:0.127cm;">19.571.3</span></a><a id="__RefHeading__1418184_253892949"/><a id="attribute-svg_width_element-chart_plot-area"/>&lt;chart:plot-area&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute defines the width of a plot-area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_4_chart_wall_"><span style="margin-right:0.127cm;">19.571.4</span></a><a id="__RefHeading__1418186_253892949"/><a id="attribute-svg_width_element-chart_wall"/>&lt;chart:wall&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute specifies the thickness of a wall for three-dimensional charts.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;chart:wall&gt;</span> <a href="#element-chart_wall">11.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_5_dr3d_scene_"><span style="margin-right:0.127cm;">19.571.5</span></a><a id="__RefHeading__1418188_253892949"/><a id="attribute-svg_width_element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_width_element-draw_caption">19.571.10</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_6_draw_area-polygon_"><span style="margin-right:0.127cm;">19.571.6</span></a><a id="__RefHeading__1418190_253892949"/><a id="attribute-svg_width_element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute defines the width of a polygonal image map area's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_7_draw_area-rectangle_"><span style="margin-right:0.127cm;">19.571.7</span></a><a id="__RefHeading__1418192_253892949"/><a id="attribute-svg_width_element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute defines the width of a rectangular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_8_draw_contour-polygon____draw_contour-path_"><span style="margin-right:0.127cm;">19.571.8</span></a><a id="__RefHeading__1418194_253892949"/><a id="attribute-svg_width_element-draw_contour-polygon"/><a id="attribute-svg_width_element-draw_contour-path"/>&lt;draw:contour-polygon&gt;, &lt;draw:contour-path&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute defines the width of a contour's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following elements: <span class="Element">&lt;draw:contour-path&gt;</span> <a href="#element-draw_contour-path">10.4.11.3</a> and <span class="Element">&lt;draw:contour-polygon&gt;</span> <a href="#element-draw_contour-polygon">10.4.11.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_9_draw_fill-image_"><span style="margin-right:0.127cm;">19.571.9</span></a><a id="__RefHeading__1418196_253892949"/><a id="attribute-svg_width_element-draw_fill-image"/>&lt;draw:fill-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute may be used to specify the width of a linked image. Its value is overridden by the width of the linked image resource.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> This attribute can be used to estimate the size of a fill image without loading the image data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_10_draw_caption____draw_custom-shape____draw_circle____draw_control____draw_ellipse____draw_frame____draw_rect____draw_page-thumbnail____draw_path____draw_polygon____draw_polyline____draw_regular-polygon_"><span style="margin-right:0.127cm;">19.571.10</span></a><a id="__RefHeading__1418198_253892949"/><a id="attribute-svg_width_element-draw_caption"/><a id="attribute-svg_width_element-draw_custom-shape"/><a id="attribute-svg_width_element-draw_circle"/><a id="attribute-svg_width_element-draw_control"/><a id="attribute-svg_width_element-draw_ellipse"/><a id="attribute-svg_width_element-draw_frame"/><a id="attribute-svg_width_element-draw_rect"/><a id="attribute-svg_width_element-draw_page-thumbnail"/><a id="attribute-svg_width_element-draw_path"/><a id="attribute-svg_width_element-draw_polygon"/><a id="attribute-svg_width_element-draw_polyline"/><a id="attribute-svg_width_element-draw_regular-polygon"/>&lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">See §5.1.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. For drawing shapes that have a non rectangular shape, the length refers to the drawing shape's bounding box.</p><p class="Text_20_body">If the <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attributes specify different values for a <span class="Element">&lt;draw:circle&gt;</span> element, the radius of the circle is derived from the smaller of the two values, and the circle is centered within the bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_11_office_annotation_"><span style="margin-right:0.127cm;">19.571.11</span></a><a id="__RefHeading__1418200_253892949"/><a id="attribute-svg_width_element-office_annotation"/>&lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute specifies the width of the rectangular which displays the annotation. Its meaning is the same as for a <span class="Element">&lt;draw:caption&gt;</span> element. See <a href="#attribute-svg_width_element-draw_caption">19.571.10</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a19_571_12_presentation_placeholder_"><span style="margin-right:0.127cm;">19.571.12</span></a><a id="__RefHeading__1418202_253892949"/><a id="attribute-svg_width_element-presentation_placeholder"/>&lt;presentation:placeholder&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_width_element-draw_caption">19.571.10</a>. Percentage values are relative to the width of the drawing page. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;presentation:placeholder&gt;</span> <a href="#element-presentation_placeholder">16.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:width</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_572svg_widths"><span style="margin-right:0.127cm;">19.572</span></a><a id="__RefHeading__1418204_253892949"/><a id="attribute-svg_widths"/>svg:widths</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:widths</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:widths</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_573svg_x"><span style="margin-right:0.127cm;">19.573</span></a><a id="__RefHeading__1418206_253892949"/><a id="attribute-svg_x"/>svg:x</h2><h3 class="Heading_20_3"><a id="a19_573_1_chart_data-label____chart_equation____chart_footer____chart_legend____chart_plot-area____chart_subtitle____chart_title_"><span style="margin-right:0.127cm;">19.573.1</span></a><a id="__RefHeading__1418208_253892949"/><a id="attribute-svg_x_element-chart_subtitle"/><a id="attribute-svg_x_element-chart_title"/><a id="attribute-svg_x_element-chart_data-label"/><a id="attribute-svg_x_element-chart_equation"/><a id="attribute-svg_x_element-chart_footer"/><a id="attribute-svg_x_element-chart_legend"/><a id="attribute-svg_x_element-chart_plot-area"/>&lt;chart:data-label&gt;, &lt;chart:equation&gt;, &lt;chart:footer&gt;, &lt;chart:legend&gt;, &lt;chart:plot-area&gt;, &lt;chart:subtitle&gt;, &lt;chart:title&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:x</span> attribute specifies the horizontal distance of the upper left corner of the given element from the upper left corner of the <span class="Element">&lt;chart:chart&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following elements: <span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a>, <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>, <span class="Element">&lt;chart:footer&gt;</span> <a href="#element-chart_footer">11.2.3</a>, <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>, <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;chart:subtitle&gt;</span> <a href="#element-chart_subtitle">11.2.2</a> and <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_573_2_draw_area-polygon_"><span style="margin-right:0.127cm;">19.573.2</span></a><a id="__RefHeading__1418210_253892949"/><a id="attribute-svg_x_element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:x</span> attribute defines the x-axis coordinate of a polygonal image map area's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_573_3_draw_area-rectangle_"><span style="margin-right:0.127cm;">19.573.3</span></a><a id="__RefHeading__1418212_253892949"/><a id="attribute-svg_x_element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:x</span> attribute defines the x-axis coordinate of a rectangular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_573_4_dr3d_scene_"><span style="margin-right:0.127cm;">19.573.4</span></a><a id="__RefHeading__1418214_253892949"/><a id="attribute-svg_x_element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_x_element-draw_caption">19.573.5</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_573_5_draw_caption____draw_custom-shape____draw_circle____draw_control____draw_ellipse____draw_frame____draw_rect____draw_page-thumbnail____draw_path____draw_polygon____draw_polyline____draw_regular-polygon_"><span style="margin-right:0.127cm;">19.573.5</span></a><a id="__RefHeading__1418216_253892949"/><a id="attribute-svg_x_element-draw_ellipse"/><a id="attribute-svg_x_element-draw_frame"/><a id="attribute-svg_x_element-draw_rect"/><a id="attribute-svg_x_element-draw_page-thumbnail"/><a id="attribute-svg_x_element-draw_path"/><a id="attribute-svg_x_element-draw_polygon"/><a id="attribute-svg_x_element-draw_polyline"/><a id="attribute-svg_x_element-draw_regular-polygon"/><a id="attribute-svg_x_element-draw_caption"/><a id="attribute-svg_x_element-draw_custom-shape"/><a id="attribute-svg_x_element-draw_circle"/><a id="attribute-svg_x_element-draw_control"/>&lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">See §5.1.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. For drawing shapes that have a non rectangular shape, the coordinate refers to the drawing shape's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_573_6_draw_glue-point_"><span style="margin-right:0.127cm;">19.573.6</span></a><a id="__RefHeading__1418218_253892949"/><a id="attribute-svg_x_element-draw_glue-point"/>&lt;draw:glue-point&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:x</span> attribute specifies the horizontal position of the glue point. The coordinate is either a percentage value relative to the drawing shape's center in horizontal direction, or, if the <span class="Attribute">draw:align</span> attribute is also specified, an absolute distance value relative to the edge specified by the <span class="Attribute">draw:align</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:x</span> attribute are a value of type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h3 class="Heading_20_3"><a id="a19_573_7_office_annotation_"><span style="margin-right:0.127cm;">19.573.7</span></a><a id="__RefHeading__1418220_253892949"/><a id="attribute-svg_x_element-office_annotation"/>&lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:x</span> attribute specifies the horizontal position of an annotation. Its meaning is the same as for a <span class="Element">&lt;draw:caption&gt;</span> element. See <a href="#attribute-svg_x_element-draw_caption">19.573.5</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_573_8_presentation_placeholder_"><span style="margin-right:0.127cm;">19.573.8</span></a><a id="__RefHeading__1418222_253892949"/><a id="attribute-svg_x_element-presentation_placeholder"/>&lt;presentation:placeholder&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_x_element-draw_caption">19.573.5</a>. Percentage values are relative to the height of the drawing page. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;presentation:placeholder&gt;</span> <a href="#element-presentation_placeholder">16.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:x</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_574svg_x1"><span style="margin-right:0.127cm;">19.574</span></a><a id="__RefHeading__1418224_253892949"/><a id="attribute-svg_x1"/>svg:x1</h2><h3 class="Heading_20_3"><a id="a19_574_1_draw_connector____draw_line__and__draw_measure_"><span style="margin-right:0.127cm;">19.574.1</span></a><a id="__RefHeading__1418226_253892949"/><a id="attribute-svg_x1_element-draw_line"/><a id="attribute-svg_x1_element-draw_measure"/><a id="attribute-svg_x1_element-draw_connector"/>&lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</h3><p class="Text_20_body">See §9.5 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Text_20_body">The <span class="Attribute">svg:x1</span> attribute may be omitted on <span class="Element">&lt;draw:connector&gt;</span> elements when the connector is connected to a shape by a <span class="Attribute">draw:start-shape</span> attribute. The start position then is the position of the glue point to which the connector is connected.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x1</span> attribute is usable with the following elements: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a> and <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x1</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_574_2_svg_linearGradient_"><span style="margin-right:0.127cm;">19.574.2</span></a><a id="__RefHeading__1418228_253892949"/><a id="attribute-svg_x1_element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">See §13.3.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">0%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:x1</span> attribute is usable with the following element: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:x1</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_575svg_x2"><span style="margin-right:0.127cm;">19.575</span></a><a id="__RefHeading__1418230_253892949"/><a id="attribute-svg_x2"/>svg:x2 </h2><h3 class="Heading_20_3"><a id="a19_575_1_draw_connector____draw_line__and__draw_measure_"><span style="margin-right:0.127cm;">19.575.1</span></a><a id="__RefHeading__1418232_253892949"/><a id="attribute-svg_x2_element-draw_connector"/><a id="attribute-svg_x2_element-draw_line"/><a id="attribute-svg_x2_element-draw_measure"/>&lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</h3><p class="Text_20_body">See §9.5 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Text_20_body">The <span class="Attribute">svg:x2</span> attribute may be omitted on <span class="Element">&lt;draw:connector&gt;</span> elements when the connector is connected to a shape by a <span class="Attribute">draw:end-shape</span> attribute. The end position then is the position of the glue point to which the connector is connected.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x2</span> attribute is usable with the following elements: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a> and <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x2</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_575_2_svg_linearGradient_"><span style="margin-right:0.127cm;">19.575.2</span></a><a id="__RefHeading__1418234_253892949"/><a id="attribute-svg_x2_element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">See §13.3.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">100%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:x2</span> attribute is usable with the following element: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:x2</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_576svg_x-height"><span style="margin-right:0.127cm;">19.576</span></a><a id="__RefHeading__1418236_253892949"/><a id="attribute-svg_x-height"/>svg:x-height</h2><p class="Text_20_body">See §20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x-height</span> attribute is usable with the following element: <span class="Element">&lt;style:font-face&gt;</span> <a href="#element-style_font-face">16.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x-height</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_577svg_y"><span style="margin-right:0.127cm;">19.577</span></a><a id="__RefHeading__1418238_253892949"/><a id="attribute-svg_y"/>svg:y</h2><h3 class="Heading_20_3"><a id="a19_577_1_chart_data-label____chart_equation____chart_footer____chart_legend____chart_plot-area____chart_subtitle____chart_title_"><span style="margin-right:0.127cm;">19.577.1</span></a><a id="__RefHeading__1418240_253892949"/><a id="attribute-svg_y_element-chart_data-label"/><a id="attribute-svg_y_element-chart_equation"/><a id="attribute-svg_y_element-chart_footer"/><a id="attribute-svg_y_element-chart_legend"/><a id="attribute-svg_y_element-chart_plot-area"/><a id="attribute-svg_y_element-chart_subtitle"/><a id="attribute-svg_y_element-chart_title"/>&lt;chart:data-label&gt;, &lt;chart:equation&gt;, &lt;chart:footer&gt;, &lt;chart:legend&gt;, &lt;chart:plot-area&gt;, &lt;chart:subtitle&gt;, &lt;chart:title&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attribute specifies the vertical distance of the upper left corner of the given element from the upper left corner of the <span class="Element">&lt;chart:chart&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following elements: <span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a>, <span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a>, <span class="Element">&lt;chart:footer&gt;</span> <a href="#element-chart_footer">11.2.3</a>, <span class="Element">&lt;chart:legend&gt;</span> <a href="#element-chart_legend">11.3</a>, <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;chart:subtitle&gt;</span> <a href="#element-chart_subtitle">11.2.2</a> and <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_577_2_draw_area-polygon_"><span style="margin-right:0.127cm;">19.577.2</span></a><a id="__RefHeading__1418242_253892949"/><a id="attribute-svg_y_element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attribute defines the y-axis coordinate of a polygonal image map area's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_577_3_draw_area-rectangle_"><span style="margin-right:0.127cm;">19.577.3</span></a><a id="__RefHeading__1418244_253892949"/><a id="attribute-svg_y_element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attributes defines the y-axis coordinate of a rectangular image map area.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_577_4_dr3d_scene_"><span style="margin-right:0.127cm;">19.577.4</span></a><a id="__RefHeading__1418246_253892949"/><a id="attribute-svg_y_element-dr3d_scene"/>&lt;dr3d:scene&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_y_element-draw_caption">19.577.5</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_577_5_draw_caption____draw_custom-shape____draw_circle____draw_control____draw_ellipse____draw_frame____draw_g____draw_rect____draw_page-thumbnail____draw_path____draw_polygon____draw_polyline____draw_regular-polygon_"><span style="margin-right:0.127cm;">19.577.5</span></a><a id="__RefHeading__1418248_253892949"/><a id="attribute-svg_y_element-draw_caption"/><a id="attribute-svg_y_element-draw_custom-shape"/><a id="attribute-svg_y_element-draw_circle"/><a id="attribute-svg_y_element-draw_control"/><a id="attribute-svg_y_element-draw_ellipse"/><a id="attribute-svg_y_element-draw_frame"/><a id="attribute-svg_y_element-draw_g"/><a id="attribute-svg_y_element-draw_rect"/><a id="attribute-svg_y_element-draw_page-thumbnail"/><a id="attribute-svg_y_element-draw_path"/><a id="attribute-svg_y_element-draw_polygon"/><a id="attribute-svg_y_element-draw_polyline"/><a id="attribute-svg_y_element-draw_regular-polygon"/>&lt;draw:caption&gt;, &lt;draw:custom-shape&gt;, &lt;draw:circle&gt;, &lt;draw:control&gt;, &lt;draw:ellipse&gt;, &lt;draw:frame&gt;, &lt;draw:g&gt;, &lt;draw:rect&gt;, &lt;draw:page-thumbnail&gt;, &lt;draw:path&gt;, &lt;draw:polygon&gt;, &lt;draw:polyline&gt;, &lt;draw:regular-polygon&gt;</h3><p class="Text_20_body">See §5.1.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. For drawing shapes that have a non rectangular shape, the coordinate refers to the drawing shape's bounding box.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following elements: <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a> and <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_577_6_draw_glue-point_"><span style="margin-right:0.127cm;">19.577.6</span></a><a id="__RefHeading__1418250_253892949"/><a id="attribute-svg_y_element-draw_glue-point"/>&lt;draw:glue-point&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attribute specifies the vertical position of the glue point. The coordinate is either a percentage value relative to the drawing shape's center in vertical direction, or, if the <span class="Attribute">draw:align</span> attribute is also specified, an absolute distance value relative to the edge specified by the <span class="Attribute">draw:align</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;draw:glue-point&gt;</span> <a href="#element-draw_glue-point">10.3.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:y</span> attribute are a value of type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h3 class="Heading_20_3"><a id="a19_577_7_office_annotation_"><span style="margin-right:0.127cm;">19.577.7</span></a><a id="__RefHeading__1418252_253892949"/><a id="attribute-svg_y_element-office_annotation"/>&lt;office:annotation&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attribute specifies the position where the annotation is displayed. Its meaning is the same as for a <span class="Element">&lt;draw:caption&gt;</span> element. See <a href="#attribute-svg_x_element-draw_caption">19.573.5</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_577_8_presentation_placeholder_"><span style="margin-right:0.127cm;">19.577.8</span></a><a id="__RefHeading__1418254_253892949"/><a id="attribute-svg_y_element-presentation_placeholder"/>&lt;presentation:placeholder&gt;</h3><p class="Text_20_body">See <a href="#attribute-svg_y_element-draw_caption">19.577.5</a>. Percentage values are relative to the height of the drawing page. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;presentation:placeholder&gt;</span> <a href="#element-presentation_placeholder">16.42</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:y</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_578svg_y1"><span style="margin-right:0.127cm;">19.578</span></a><a id="__RefHeading__1418256_253892949"/><a id="attribute-svg_y1"/>svg:y1</h2><h3 class="Heading_20_3"><a id="a19_578_1_draw_connector____draw_line__and__draw_measure_"><span style="margin-right:0.127cm;">19.578.1</span></a><a id="__RefHeading__1418258_253892949"/><a id="attribute-svg_y1_element-draw_connector"/><a id="attribute-svg_y1_element-draw_line"/><a id="attribute-svg_y1_element-draw_measure"/>&lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</h3><p class="Text_20_body">See §9.5 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Text_20_body">The <span class="Attribute">svg:y1</span> attribute may be omitted on <span class="Element">&lt;draw:connector&gt;</span> elements when the connector is connected to a shape by a <span class="Attribute">draw:start-shape</span> attribute. The start position then is the position of the glue point to which the connector is connected.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y1</span> attribute is usable with the following elements: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a> and <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y1</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_578_2_svg_linearGradient_"><span style="margin-right:0.127cm;">19.578.2</span></a><a id="__RefHeading__1418260_253892949"/><a id="attribute-svg_y1_element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">See §13.3.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">0%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:y1</span> attribute is usable with the following element: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:y1</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_579svg_y2"><span style="margin-right:0.127cm;">19.579</span></a><a id="__RefHeading__1418262_253892949"/><a id="attribute-svg_y2"/>svg:y2</h2><h3 class="Heading_20_3"><a id="a19_579_1_draw_connector____draw_line__and__draw_measure_"><span style="margin-right:0.127cm;">19.579.1</span></a><a id="__RefHeading__1418264_253892949"/><a id="attribute-svg_y2_element-draw_connector"/><a id="attribute-svg_y2_element-draw_line"/><a id="attribute-svg_y2_element-draw_measure"/>&lt;draw:connector&gt;, &lt;draw:line&gt; and &lt;draw:measure&gt;</h3><p class="Text_20_body">See §9.5 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Text_20_body">The <span class="Attribute">svg:y2</span> attribute may be omitted on <span class="Element">&lt;draw:connector&gt;</span> elements when the connector is connected to a shape by a <span class="Attribute">draw:end-shape</span> attribute. The end position then is the position of the glue point to which the connector is connected.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y2</span> attribute is usable with the following elements: <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a> and <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y2</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a19_579_2_svg_linearGradient_"><span style="margin-right:0.127cm;">19.579.2</span></a><a id="__RefHeading__1418266_253892949"/><a id="attribute-svg_y2_element-svg_linearGradient"/>&lt;svg:linearGradient&gt;</h3><p class="Text_20_body">See §13.3.2 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">100%</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">svg:y2</span> attribute is usable with the following element: <span class="Element">&lt;svg:linearGradient&gt;</span> <a href="#element-svg_linearGradient">16.40.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:y2</span> attribute are a value of type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_580table_acceptance-state"><span style="margin-right:0.127cm;">19.580</span></a><a id="__RefHeading__1418268_253892949"/><a id="attribute-table_acceptance-state"/>table:acceptance-state</h2><p class="Text_20_body">The <span class="Attribute">table:acceptance-state</span> attribute specifies whether a tracked change has been accepted or rejected already, or whether an acceptance or rejection is still pending.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:acceptance-state</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">accepted</span>: a tracked change has been accepted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">ending</span>: a tracked change is pending approval or rejection.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ejected</span>: a tracked change has been rejected.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">pending</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:acceptance-state</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a> and <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:acceptance-state</span> attribute are <span class="Attribute_20_Value">accepted</span>, <span class="Attribute_20_Value">rejected</span> or <span class="Attribute_20_Value">pending</span>.</p><h2 class="Heading_20_2"><a id="a19_581table_algorithm"><span style="margin-right:0.127cm;">19.581</span></a><a id="__RefHeading__1418270_253892949"/><a id="attribute-table_algorithm"/>table:algorithm</h2><p class="Text_20_body">The <span class="Attribute">table:algorithm</span> attribute specifies the algorithm used to compare sort keys. To avoid name conflicts between different consumers, the name of the algorithm should begin with a namespace prefix, followed by a “:” (U+003A, COLON) separator. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:algorithm</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:algorithm</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_582table_add-empty-lines"><span style="margin-right:0.127cm;">19.582</span></a><a id="__RefHeading__1418272_253892949"/><a id="attribute-table_add-empty-lines"/>table:add-empty-lines</h2><p class="Text_20_body">The <span class="Attribute">table:add-empty-lines</span> attribute specifies whether an empty row is inserted in the data pilot table after the data (including the subtotals) for each member of the field.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:add-empty-lines</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: an empty line should not be inserted after the data for a member, including any subtotal of that member.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: an empty line should not be inserted after the data for a member, including any subtotal of that member.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:add-empty-lines</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> <a href="#element-table_data-pilot-layout-info">9.6.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:add-empty-lines</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_583table_allow-empty-cell"><span style="margin-right:0.127cm;">19.583</span></a><a id="__RefHeading__1418274_253892949"/><a id="attribute-table_allow-empty-cell"/>table:allow-empty-cell</h2><p class="Text_20_body">The <span class="Attribute">table:allow-empty-cell</span> attribute specifies whether a cell can be empty.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:allow-empty-cell</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cell cannot be empty.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cell can be empty.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:allow-empty-cell</span> attribute is usable with the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:allow-empty-cell</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_584table_application-data"><span style="margin-right:0.127cm;">19.584</span></a><a id="__RefHeading__1418276_253892949"/><a id="attribute-table_application-data"/>table:application-data</h2><p class="Text_20_body">The <span class="Attribute">table:application-data</span> attribute specifies extra information about a data pilot table, which can be used by the consumer. This data shall not influence the behavior of the data pilot.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:application-data</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:application-data</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_585table_automatic-find-labels"><span style="margin-right:0.127cm;">19.585</span></a><a id="__RefHeading__1418278_253892949"/><a id="attribute-table_automatic-find-labels"/>table:automatic-find-labels</h2><p class="Text_20_body">The <span class="Attribute">table:automatic-find-labels</span> attribute specifies whether a consumer should attempt to find labels of rows and columns. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:automatic-find-labels</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumers should not attempt to find labels of rows and columns.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumers should attempt find labels of rows and columns.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note</span>: The <span class="Attribute">table:automatic-find-labels</span> attribute enables the use of the automatic lookup of labels capability defined by OpenFormula. OpenFormula, 5.10.2. (*update*)</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:automatic-find-labels</span> attribute is usable with the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:automatic-find-labels</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_586table_base-cell-address"><span style="margin-right:0.127cm;">19.586</span></a><a id="__RefHeading__1418280_253892949"/><a id="attribute-table_base-cell-address"/>table:base-cell-address</h2><p class="Text_20_body">The <span class="Attribute">table:base-cell-address</span> attribute specifies the address of the base cell for relative addresses in formulas that occur within a condition. This attribute is only necessary when the condition contains a formula. The value of this attribute shall be an absolute cell address that contains a table name. The dollar signs “$” (U+0024, DOLLAR SIGN) that indicate an absolute address may be omitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:base-cell-address</span> attribute is usable with the following elements: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>, <span class="Element">&lt;table:named-expression&gt;</span> <a href="#element-table_named-expression">9.4.13</a> and <span class="Element">&lt;table:named-range&gt;</span> <a href="#element-table_named-range">9.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:base-cell-address</span> attribute has the data type <span class="Datatype">cellAddress</span> <a href="#datatype-cellAddress">18.3.4</a>.</p><h2 class="Heading_20_2"><a id="a19_587table_bind-styles-to-content"><span style="margin-right:0.127cm;">19.587</span></a><a id="__RefHeading__1418282_253892949"/><a id="attribute-table_bind-styles-to-content"/>table:bind-styles-to-content</h2><p class="Text_20_body">The <span class="Attribute">table:bind-styles-to-content</span> attribute specifies whether cells retain their style after a subtotal calculation. This attribute is only evaluated if a <span class="Element">&lt;table:sort-groups&gt;</span> element is present.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:bind-styles-to-content</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells need not retain their style after a subtotal calculation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells should retain their style after a subtotal calculation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:bind-styles-to-content</span> attribute is usable with the following elements: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a> and <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:bind-styles-to-content</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_588table_border-color"><span style="margin-right:0.127cm;">19.588</span></a><a id="__RefHeading__1418284_253892949"/><a id="attribute-table_border-color"/>table:border-color</h2><p class="Text_20_body">The <span class="Attribute">table:border-color</span> attribute specifies the color of a border that is displayed around a scenario that belongs to a scenario table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:border-color</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:border-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a19_589table_buttons"><span style="margin-right:0.127cm;">19.589</span></a><a id="__RefHeading__1418286_253892949"/><a id="attribute-table_buttons"/>table:buttons</h2><p class="Text_20_body">The <span class="Attribute">table:buttons</span> attribute specifies the cells in a data pilot table that should be displayed as buttons to trigger interactive operations on the table like changing the order of columns. Its value is a list of white space separated cell-addresses. The value of this attribute shall be an absolute cell address that contains a table name. The dollar signs “$” (U+0024, DOLLAR SIGN) that indicate an absolute address may be omitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:buttons</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:buttons</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_590table_case-sensitive"><span style="margin-right:0.127cm;">19.590</span></a><a id="__RefHeading__1418288_253892949"/><a id="attribute-table_case-sensitive"/>table:case-sensitive</h2><p class="Text_20_body">The <span class="Attribute">table:case-sensitive</span> attribute specifies whether to distinguish between upper and lower case when comparing, sorting or filtering content.</p><p class="Text_20_body">That attribute is only evaluated if the operations take place on strings. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:case-sensitive</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: upper and lower case are not distinguished when comparing, sorting or filtering content.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: upper and lower case are distinguished when comparing, sorting or filtering content.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a> element the default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Default_20_Value">For <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>, <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a> and <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a> elements the default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:case-sensitive</span> attribute is usable with the following elements: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>, <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>, <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a> and <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:case-sensitive</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_591table_cell-address"><span style="margin-right:0.127cm;">19.591</span></a><a id="__RefHeading__1418290_253892949"/><a id="attribute-table_cell-address"/>table:cell-address</h2><p class="Text_20_body">The <span class="Attribute">table:cell-address</span> attribute specifies the original address of a cell used in a calculation.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-address</span> attribute is usable with the following element: <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-address</span> attribute has the data type <span class="Datatype">cellAddress</span> <a href="#datatype-cellAddress">18.3.4</a>.</p><h2 class="Heading_20_2"><a id="a19_592table_cell-range"><span style="margin-right:0.127cm;">19.592</span></a><a id="__RefHeading__1418292_253892949"/><a id="attribute-table_cell-range"/>table:cell-range</h2><p class="Text_20_body">The <span class="Attribute">table:cell-range</span> attribute specifies a list of ranges of cells.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range</span> attribute is usable with the following elements: <span class="Element">&lt;chart:footer&gt;</span> <a href="#element-chart_footer">11.2.3</a>, <span class="Element">&lt;chart:subtitle&gt;</span> <a href="#element-chart_subtitle">11.2.2</a> and <span class="Element">&lt;chart:title&gt;</span> <a href="#element-chart_title">11.2.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_593table_cell-range-address"><span style="margin-right:0.127cm;">19.593</span></a><a id="__RefHeading__1418294_253892949"/><a id="attribute-table_cell-range-address"/>table:cell-range-address</h2><h3 class="Heading_20_3"><a id="a19_593_1General"><span style="margin-right:0.127cm;">19.593.1</span></a><a id="__RefHeading__1418296_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies specifies a range of cells or a list of ranges of cells.</p><h3 class="Heading_20_3"><a id="a19_593_2_chart_categories_"><span style="margin-right:0.127cm;">19.593.2</span></a><a id="__RefHeading__1418298_253892949"/><a id="attribute-table_cell-range-address_element-chart_categories"/>&lt;chart:categories&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the region from which the category labels are taken. If this attribute or the <span class="Element">&lt;chart:categories&gt;</span> element is omitted the <span class="Attribute">chart:data-source-has-labels</span> attribute of the <span class="Element">&lt;chart:plot-area&gt;</span> element should be evaluated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:categories&gt;</span> <a href="#element-chart_categories">11.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h3 class="Heading_20_3"><a id="a19_593_3_chart_domain__-_bubble"><span style="margin-right:0.127cm;">19.593.3</span></a><a id="__RefHeading__1418300_253892949"/><a id="attribute-table_cell-range-address_element-chart_domain"/>&lt;chart:domain&gt; - bubble</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the x and y-coordinate values for bubble charts when the <span class="Attribute">chart:class</span> attribute of its parent <span class="Element">&lt;chart:series&gt;</span> element has the value <span class="Attribute_20_Value_20_Instance">chart:bubble</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:domain&gt;</span> <a href="#element-chart_domain">11.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h3 class="Heading_20_3"><a id="a19_593_4_chart_domain_-_scatter"><span style="margin-right:0.127cm;">19.593.4</span></a><a id="__RefHeading__1418302_253892949"/><a id="attribute-table_cell-range-address_element-chart_domain"/>&lt;chart:domain&gt;- scatter</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the x-coordinate values for scatter charts when the <span class="Attribute">chart:class</span> attribute of its parent <span class="Element">&lt;chart:series&gt;</span> element has the value <span class="Attribute_20_Value_20_Instance">chart:scatter</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:domain&gt;</span> <a href="#element-chart_domain">11.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h3 class="Heading_20_3"><a id="a19_593_5_chart_domain__-_surface"><span style="margin-right:0.127cm;">19.593.5</span></a><a id="__RefHeading__1718340_1219268628"/><a id="attribute-table_cell-range-address_element-chart_domain"/><a id="attribute-table_cell-range-address_element-chart_domain_value_chart_surface"/>&lt;chart:domain&gt; - surface</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute of the first <span class="Element">&lt;chart:domain&gt;</span> element specifies the y-coordinate values and the <span class="Attribute">table:cell-range-address</span> attribute of the second <span class="Element">&lt;chart:domain&gt;</span> element specifies the x-coordinate values for surface charts when the <span class="Attribute">chart:class</span> attribute of its parent <span class="Element">&lt;chart:series&gt;</span> element has the value <span class="Attribute_20_Value_20_Instance">chart:surface</span> and the <span class="Attribute">chart:values-cell-range-address</span> attribute of this <span class="Element">&lt;chart:series&gt;</span> element specifies a range with more than one row and more than one column. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:domain&gt;</span> <a href="#element-chart_domain">11.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h3 class="Heading_20_3"><a id="a19_593_6_chart_plot-area___deprecated_"><span style="margin-right:0.127cm;">19.593.6</span></a><a id="__RefHeading__1418304_253892949"/><a id="attribute-table_cell-range-address_element-chart_plot-area"/>&lt;chart:plot-area&gt; (deprecated)</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the ranges of data for a chart. </p><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute at the <span class="Element">&lt;chart:plot-area&gt;</span> element has no effect in case the data is assigned to the <span class="Element">&lt;chart:series&gt;</span> elements directly by <span class="Attribute">chart:values-cell-range-address</span> attributes.</p><p class="Text_20_body">The use of the <span class="Attribute">table:cell-range-address</span> attribute is deprecated in favor of the <span class="Attribute">chart:values-cell-range-address</span> attributes of <span class="Element">&lt;chart:series&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h3 class="Heading_20_3"><a id="a19_593_7_table_highlighted-range_"><span style="margin-right:0.127cm;">19.593.7</span></a><a id="__RefHeading__1418306_253892949"/><a id="attribute-table_cell-range-address_element-table_highlighted-range"/>&lt;table:highlighted-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the address of a range that is highlighted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:highlighted-range&gt;</span> <a href="#element-table_highlighted-range">9.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h3 class="Heading_20_3"><a id="a19_593_8_table_named-range_"><span style="margin-right:0.127cm;">19.593.8</span></a><a id="__RefHeading__1418308_253892949"/><a id="attribute-table_cell-range-address_element-table_named-range"/>&lt;table:named-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the address of a named range. The address can be either absolute or relative. If the cell range address is relative, the parent &lt;table:named-range&gt; element shall have a table:base-cell-address attribute with a value. A relative cell address defines an offset which shall be interpreted relative to the cell where the named range is used. The offset is the same as the offsets between the table cell addressed by the relative cell range address and the table cell specified by the <span class="Attribute">table:base-cell-address</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:named-range&gt;</span> <a href="#element-table_named-range">9.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h3 class="Heading_20_3"><a id="a19_593_9_table_source-cell-range_"><span style="margin-right:0.127cm;">19.593.9</span></a><a id="__RefHeading__1418310_253892949"/><a id="attribute-table_cell-range-address_element-table_source-cell-range"/>&lt;table:source-cell-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:cell-range-address</span> attribute specifies the cell range containing the source data. The value of this attribute shall be an absolute cell address that contains a table name. The dollar signs “$” (U+0024, DOLLAR SIGN) that indicate an absolute address may be omitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:source-cell-range&gt;</span> <a href="#element-table_source-cell-range">9.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h2 class="Heading_20_2"><a id="a19_594table_column"><span style="margin-right:0.127cm;">19.594</span></a><a id="__RefHeading__1418312_253892949"/><a id="attribute-table_column"/>table:column</h2><p class="Text_20_body">The <span class="Attribute">table:column</span> attribute specifies the column number of a cell.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:column</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-address&gt;</span> <a href="#element-table_cell-address">9.9.18</a>, <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:column</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_595table_comment"><span style="margin-right:0.127cm;">19.595</span></a><a id="__RefHeading__1418314_253892949"/><a id="attribute-table_comment"/>table:comment</h2><p class="Text_20_body">The <span class="Attribute">table:comment</span> attribute specifies a comment about a scenario.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:comment</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:comment</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_596table_condition"><span style="margin-right:0.127cm;">19.596</span></a><a id="__RefHeading__1418316_253892949"/><a id="attribute-table_condition"/>table:condition</h2><p class="Text_20_body">The <span class="Attribute">table:condition</span> attribute specifies a condition that applies to the value of a table cell that references a <span class="Element">&lt;table:content-validation&gt;</span> element having the table:condition attribute. When evaluation of the condition results in "false", any action taken is determine by the other attributes and child elements of the <span class="Element">&lt;table:content-validation&gt;</span> element. </p><p class="Note"><span class="Note_20_Label">Note</span>: Possible actions include presentation of a message, triggering an event, and performance of a script, with or without invalidating the value. The <span class="Attribute">table:allow-empty-cell</span> attribute value influences whether the <span class="Attribute">table:condition</span> is applicable.</p><p class="Text_20_body"> The value of this attribute should be a namespace prefix, followed by a ":" (U+003A, COLON), followed by Boolean expression. If the namespace prefix is missing it defaults to the "urn:oasis:names:tc:opendocument:xmlns:of:1.2" namespace. The XML namespace that applies to the <span class="Attribute">table:condition</span> attribute specifies the syntax and semantics of the <span class="Attribute_20_Value_20_Param">expression</span> occurrences in the table:condition syntax. </p><p class="Text_20_body"><span class="Note_20_Label">Note</span>: The value of the <span class="Element">&lt;table:content-validation&gt;</span> <span class="Attribute">table:base-cell-address</span> can influence how references are resolved in an <span class="Def">expression</span> anywhere within the defined conditions.</p><p class="Text_20_body">An OpenDocument Consumer when hosting a formula evaluator makes available the host-dependent properties defined by table <a href="#refTable11">12</a> in 19.644.</p><p class="Text_20_body">The defined conditions are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-text-length() </span><span class="Attribute_20_Value_20_Param">op</span><span class="Attribute_20_Value_20_Fragment"> </span><span class="Attribute_20_Value_20_Param">value</span>, where <span class="Attribute_20_Value_20_Param">op</span> is one of the relational operators ””&lt;”,“&gt;”, ”&lt;=”, ”&gt;=”, ”=” or “!=”: true if the length of the cell's text compared to the value specified in the condition by <span class="Attribute_20_Value_20_Param">value</span> using the relational operator <span class="Attribute_20_Value_20_Param">op</span> evaluates to true. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-text-length-is-between(value1, value2)</span>: true if the length of the cell's text is between value1 and value2. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-text-length-is-not-between(</span><span class="Attribute_20_Value_20_Param">value1</span><span class="Attribute_20_Value_20_Fragment">, </span><span class="Attribute_20_Value_20_Param">value2</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if the length of the cell's text is not between <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-in-list(</span><span class="Attribute_20_Value_20_Param">list</span><span class="Attribute_20_Value_20_Fragment">)</span>, where <span class="Attribute_20_Value_20_Param">list</span> is one or more string entries, separated by ”;” (U+003B, SEMICOLON), or an <span class="Attribute_20_Value_20_Param">expression</span>: true if the cell's content is in <span class="Attribute_20_Value_20_Param">list</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-decimal-number() and </span><span class="Attribute_20_Value_20_Param">condition</span>, where <span class="Attribute_20_Value_20_Param">condition</span> is one of the value conditions below: true if the cell has a numeric value and <span class="Attribute_20_Value_20_Param">condition</span> is true. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-whole-number() and </span><span class="Attribute_20_Value_20_Param">condition</span>, where <span class="Attribute_20_Value_20_Param">condition</span> is one of the value conditions below: true if the cell's cell has a whole value and <span class="Attribute_20_Value_20_Param">condition</span> is true.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-date() and </span><span class="Attribute_20_Value_20_Param">condition</span>, where <span class="Attribute_20_Value_20_Param">condition</span> is one of the value conditions below: true if the cell has a date value and <span class="Attribute_20_Value_20_Param">condition</span> is true. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-time() and </span><span class="Attribute_20_Value_20_Param">condition</span>, where <span class="Attribute_20_Value_20_Param">condition</span> is one of the value conditions below: true if the cell has a time value and <span class="Attribute_20_Value_20_Param">condition</span> is true. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">is-true-formula(</span><span class="Attribute_20_Value_20_Param">expression</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if evaluation of the <span class="Attribute_20_Value_20_Param">expression</span> yields a value that converts to logical type value true in the semantics for the <span class="Attribute_20_Value_20_Param">expression</span>; false otherwise. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The defined value conditions are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content() </span><span class="Attribute_20_Value_20_Param">op</span><span class="Attribute_20_Value_20_Fragment"> </span><span class="Attribute_20_Value_20_Param">value</span>, where <span class="Attribute_20_Value_20_Param">op</span> is one of the relational operators ”&lt;”, ”&gt;”, ”&lt;=”, ”&gt;=”, ”=” or ”!=”: true if the cell's value compared to the value specified in the condition by <span class="Attribute_20_Value_20_Param">value</span> using the relational operator <span class="Attribute_20_Value_20_Param">op</span> evaluates to true. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-between(</span><span class="Attribute_20_Value_20_Param">value1</span><span class="Attribute_20_Value_20_Fragment">, </span><span class="Attribute_20_Value_20_Param">value2</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if the cell's value is between <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">cell-content-is-not-between(</span><span class="Attribute_20_Value_20_Param">value1</span><span class="Attribute_20_Value_20_Fragment">, </span><span class="Attribute_20_Value_20_Param">value2</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if the cell's value is not between <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">is-true-formula(</span><span class="Attribute_20_Value_20_Param">expression</span><span class="Attribute_20_Value_20_Fragment">)</span>: true if evaluation of the <span class="Attribute_20_Value_20_Param">expression</span> yields a value that converts to logical value true in the semantics for the <span class="Attribute_20_Value_20_Param">expression</span>; false otherwise. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Within the conditions: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">value</span>, <span class="Attribute_20_Value_20_Param">value1</span> and <span class="Attribute_20_Value_20_Param">value2</span> are a <span class="Attribute_20_Value_20_Param">numberValue</span>, a <span class="Attribute_20_Value_20_Param">string</span> or an <span class="Attribute_20_Value_20_Param">expression</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">numberValue</span> is a whole or decimal number in the lexical form of the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> decimal datatype. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">string</span> expresses a value of the <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> string datatype by surrounding the sequence of string characters in quotation marks (U+0022, QUOTATION MARK). A quotation mark within the string itself is expressed with two consecutive quotation marks. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Param">expression</span> is a lexical form that is neither numberValue nor string and that is a well-formed expression determined by the namespace applicable to the table:condition value.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:condition</span> attribute is usable with the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_597table_condition-source"><span style="margin-right:0.127cm;">19.597</span></a><a id="__RefHeading__1418318_253892949"/><a id="attribute-table_condition-source"/>table:condition-source</h2><p class="Text_20_body">The <span class="Attribute">table:condition-source</span> attribute specifies whether the condition is contained in a filter or encoded in a cell range.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:condition-source</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cell-range</span>: condition encoded into the cell range specified by a <span class="Attribute">table:condition-source-range</span><span class="Attribute">-address</span> attribute. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">self</span>: condition specified by <span class="Element">&lt;table:filter&gt;</span> element's child elements.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">self</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:condition-source</span> attribute is usable with the following element: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:condition-source</span> attribute are <span class="Attribute_20_Value">self</span> or <span class="Attribute_20_Value">cell-range</span>.</p><h2 class="Heading_20_2"><a id="a19_598table_condition-source-range-address"><span style="margin-right:0.127cm;">19.598</span></a><a id="__RefHeading__1418320_253892949"/><a id="attribute-table_condition-source-range-address"/>table:condition-source-range-address</h2><p class="Text_20_body">The <span class="Attribute">table:condition-source-range-address</span> attribute specifies a cell range that contains encoded conditions. The first row of the cell range shall contain the labels of the columns whose content should be filtered. The following rows contain conditions that have to evaluate to true for the cells contained in the columns. The conditions in each row are connected by an “and” operation, while the rows are connected by an “or” operation. This means that a row is of the source table is displayed if there is at least one row in the condition range where all conditions evaluate to true if they are applied to the columns specified in the first row of the condition range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:condition-source-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:condition-source-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h2 class="Heading_20_2"><a id="a19_599table_contains-error"><span style="margin-right:0.127cm;">19.599</span></a><a id="__RefHeading__1418322_253892949"/><a id="attribute-table_contains-error"/>table:contains-error</h2><p class="Text_20_body">The <span class="Attribute">table:contains-error</span> attribute specifies whether a cell range contained an error at the point of evaluation.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:contains-error</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cell range contains no error at point of evaluation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cell range contains an error at point of evaluation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:contains-error</span> attribute is usable with the following element: <span class="Element">&lt;table:highlighted-range&gt;</span> <a href="#element-table_highlighted-range">9.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:contains-error</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_600table_contains-header"><span style="margin-right:0.127cm;">19.600</span></a><a id="__RefHeading__1418324_253892949"/><a id="attribute-table_contains-header"/>table:contains-header</h2><p class="Text_20_body">The <span class="Attribute">table:contains-header</span> attribute specifies whether the content of the database range's first row or column defines labels which may be used to reference a whole row or column. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:contains-header</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the first row or column of the database range does not define labels.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the first row or column of the database range defines labels.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:contains-header</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:contains-header</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_601table_content-validation-name"><span style="margin-right:0.127cm;">19.601</span></a><a id="__RefHeading__1418326_253892949"/><a id="attribute-table_content-validation-name"/>table:content-validation-name</h2><p class="Text_20_body">The <span class="Attribute">table:content-validation-name</span> attribute specifies the name of a validity check. </p><p class="Text_20_body">The value of this attribute is a name found in the <span class="Attribute">table:name</span> attribute of a <span class="Element">&lt;table:content-validation&gt;</span> element. <a href="#element-table_content-validation">9.4.5</a> If this attribute is not present, a cell may have arbitrary content.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:content-validation-name</span> attribute is usable with the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:content-validation-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_602table_copy-back"><span style="margin-right:0.127cm;">19.602</span></a><a id="__RefHeading__1418328_253892949"/><a id="attribute-table_copy-back"/>table:copy-back</h2><p class="Text_20_body">The <span class="Attribute">table:copy-back</span> attribute specifies whether data is copied back into a scenario table if another scenario is activated.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:copy-back</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data is not copied back into a scenario table if another scenario is activated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data copied back into a scenario table if another scenario is activated.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:copy-back</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:copy-back</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_603table_copy-formulas"><span style="margin-right:0.127cm;">19.603</span></a><a id="__RefHeading__1418330_253892949"/><a id="attribute-table_copy-formulas"/>table:copy-formulas</h2><p class="Text_20_body">The <span class="Attribute">table:copy-formulas</span> attribute specifies whether formulas are copied from a scenario table to a destination table. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:copy-formulas</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: only values resulting from formulas are copied.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: formulas are copied.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:copy-formulas</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:copy-formulas</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_604table_copy-styles"><span style="margin-right:0.127cm;">19.604</span></a><a id="__RefHeading__1418332_253892949"/><a id="attribute-table_copy-styles"/>table:copy-styles</h2><p class="Text_20_body">The <span class="Attribute">table:copy-styles</span> attribute specifies whether styles are copied from a scenario table to a destination table together with the data.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:copy-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: styles are not copied with data.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: styles are copied with data.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:copy-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:copy-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_605table_count"><span style="margin-right:0.127cm;">19.605</span></a><a id="__RefHeading__1418334_253892949"/><a id="attribute-table_count"/>table:count</h2><p class="Text_20_body">The <span class="Attribute">table:count</span> attribute specifies the count of inserted rows, columns or tables.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:count</span> attribute is usable with the following element: <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:count</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_606table_country"><span style="margin-right:0.127cm;">19.606</span></a><a id="__RefHeading__1418336_253892949"/><a id="attribute-table_country"/>table:country</h2><p class="Text_20_body">The <span class="Attribute">table:country</span> attribute specifies the country information for the natural language in which comparisons will occur.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:country</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:country</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a19_607table_data-field"><span style="margin-right:0.127cm;">19.607</span></a><a id="__RefHeading__1418338_253892949"/><a id="attribute-table_data-field"/>table:data-field</h2><p class="Text_20_body">The <span class="Attribute">table:data-field</span> attribute specifies the data field whose values are taken into account.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:data-field</span> attribute is usable with the following elements: <span class="Element">&lt;table:data-pilot-display-info&gt;</span> <a href="#element-table_data-pilot-display-info">9.6.13</a> and <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> <a href="#element-table_data-pilot-sort-info">9.6.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:data-field</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_608table_data-cell-range-address"><span style="margin-right:0.127cm;">19.608</span></a><a id="__RefHeading__1418340_253892949"/><a id="attribute-table_data-cell-range-address"/>table:data-cell-range-address</h2><p class="Text_20_body">The <span class="Attribute">table:data-cell-range-address</span> attribute specifies the cell range address of data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:data-cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:label-range&gt;</span> <a href="#element-table_label-range">9.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:data-cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h2 class="Heading_20_2"><a id="a19_609table_database-name"><span style="margin-right:0.127cm;">19.609</span></a><a id="__RefHeading__1418342_253892949"/><a id="attribute-table_database-name"/>table:database-name</h2><p class="Text_20_body">A <span class="Attribute">table:database-name</span> attribute specifies the name of an SQL database for the importation of data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:database-name</span> attribute is usable with the following elements: <span class="Element">&lt;table:database-source-query&gt;</span> <a href="#element-table_database-source-query">9.4.18</a>, <span class="Element">&lt;table:database-source-sql&gt;</span> <a href="#element-table_database-source-sql">9.4.16</a> and <span class="Element">&lt;table:database-source-table&gt;</span> <a href="#element-table_database-source-table">9.4.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:database-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_610table_database-table-name"><span style="margin-right:0.127cm;">19.610</span></a><a id="__RefHeading__1418344_253892949"/><a id="attribute-table_database-table-name"/>table:database-table-name</h2><p class="Text_20_body">A <span class="Attribute">table:database-table-name</span> attribute specifies a database table for the importation of data.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:database-table-name</span> attribute is usable with the following element: <span class="Element">&lt;table:database-source-table&gt;</span> <a href="#element-table_database-source-table">9.4.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:database-table-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_611table_data-type"><span style="margin-right:0.127cm;">19.611</span></a><a id="__RefHeading__1418346_253892949"/><a id="attribute-table_data-type"/>table:data-type</h2><h3 class="Heading_20_3"><a id="a19_611_1General"><span style="margin-right:0.127cm;">19.611.1</span></a><a id="__RefHeading__1418348_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:data-type</span> attribute specifies a data type for tables.</p><h3 class="Heading_20_3"><a id="a19_611_2_table_filter-condition_"><span style="margin-right:0.127cm;">19.611.2</span></a><a id="__RefHeading__1418350_253892949"/><a id="attribute-table_data-type_element-table_filter-condition"/>&lt;table:filter-condition&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:data-type</span> attribute specifies whether a comparison shall take place as text or as numeric values.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:data-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number</span>: comparison as numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext</span>: comparison as text values.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a> element the default value for this attribute is <span class="Attribute_20_Value">text</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:data-type</span> attribute is usable with the following element: <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:data-type</span> attribute are <span class="Attribute_20_Value">text</span> or <span class="Attribute_20_Value">number</span>.</p><h3 class="Heading_20_3"><a id="a19_611_3_table_sort-by_"><span style="margin-right:0.127cm;">19.611.3</span></a><a id="__RefHeading__1418352_253892949"/><a id="attribute-table_data-type_element-table_sort-by"/>&lt;table:sort-by&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:data-type</span> attribute specifies the data type of a field to be sorted. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:data-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: consumer determines the type of data in a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">umber</span>: numeric data type.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext</span>: text data type.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">string</span> (name of a user defined sort order, implementation-dependent)<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:sort-by&gt;</span> <a href="#element-table_sort-by">9.4.20</a> element the default value for this attribute is <span class="Attribute_20_Value">automatic</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:data-type</span> attribute is usable with the following element: <span class="Element">&lt;table:sort-by&gt;</span> <a href="#element-table_sort-by">9.4.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:data-type</span> attribute are <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">number</span>, <span class="Attribute_20_Value">automatic</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_611_4_table_sort-groups_"><span style="margin-right:0.127cm;">19.611.4</span></a><a id="__RefHeading__1418354_253892949"/><a id="attribute-table_data-type_element-table_sort-groups"/>&lt;table:sort-groups&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:data-type</span> attribute specifies the data type of a field to be sorted. </p><p class="Text_20_body">If the attribute value is <span class="Attribute_20_Value">automatic</span>, the consumer shall determine what type of data is in the field. User defined sort orders are implementation specific.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:data-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: consumer determines the type of data in a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">umber</span>: numeric data type.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext</span>: text data type.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">string</span> (name of a user defined sort order, implementation-dependent)<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:sort-groups&gt;</span> <a href="#element-table_sort-groups">9.4.22</a> element the default value for this attribute is <span class="Attribute_20_Value">automatic</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:data-type</span> attribute is usable with the following element: <span class="Element">&lt;table:sort-groups&gt;</span> <a href="#element-table_sort-groups">9.4.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:data-type</span> attribute are <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">number</span>, <span class="Attribute_20_Value">automatic</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_612table_date-end"><span style="margin-right:0.127cm;">19.612</span></a><a id="__RefHeading__1418356_253892949"/><a id="attribute-table_date-end"/>table:date-end</h2><p class="Text_20_body">The <span class="Attribute">table:date-end</span> attribute specifies the end value for a grouping of date values. </p><p class="Text_20_body">All values that are higher than the end value are contained in a single group, while values that are equal to or lower than the end value are grouped as specified by the <span class="Attribute">table:grouped-by</span> and <span class="Attribute">table:step</span> attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:date-end</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the highest value of the field is taken as the end value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">dateOrDateTime</span>: <span class="Datatype"><a href="#datatype-dateOrDateTime">18.3.14</a></span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:date-end</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:date-end</span> attribute are a value of type <span class="Datatype">dateOrDateTime</span> <a href="#datatype-dateOrDateTime">18.3.14</a> or <span class="Attribute_20_Value">auto</span>.</p><h2 class="Heading_20_2"><a id="a19_613table_date-start"><span style="margin-right:0.127cm;">19.613</span></a><a id="__RefHeading__1418358_253892949"/><a id="attribute-table_date-start"/>table:date-start</h2><p class="Text_20_body">The <span class="Attribute">table:date-start</span> attribute specifies the start value for a grouping of date values. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:date-start</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the lowest value of the field is used as the start value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">dateOrDateTime</span>: <span class="Datatype"><a href="#datatype-dateOrDateTime">18.3.14</a></span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:date-start</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:date-start</span> attribute are a value of type <span class="Datatype">dateOrDateTime</span> <a href="#datatype-dateOrDateTime">18.3.14</a> or <span class="Attribute_20_Value">auto</span>.</p><h2 class="Heading_20_2"><a id="a19_614table_date-value"><span style="margin-right:0.127cm;">19.614</span></a><a id="__RefHeading__1418360_253892949"/><a id="attribute-table_date-value"/>table:date-value</h2><p class="Text_20_body">The <span class="Attribute">table:date-value</span> attribute specifies the null date. The null date is the date that results in the value “0” if a date value is converted into a numeric value. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1899-12-30</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:date-value</span> attribute is usable with the following element: <span class="Element">&lt;table:null-date&gt;</span> <a href="#element-table_null-date">9.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:date-value</span> attribute has the data type <span class="Datatype">date</span> <a href="#datatype-date">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_615table_default-cell-style-name"><span style="margin-right:0.127cm;">19.615</span></a><a id="__RefHeading__1418362_253892949"/><a id="attribute-table_default-cell-style-name"/>table:default-cell-style-name</h2><p class="Text_20_body">The <span class="Attribute">table:default-cell-style-name</span> attribute specifies a default cell style. Cells defined by a <span class="Element">&lt;table:table-cell&gt;</span> element that do not have a <span class="Attribute">table:style-name</span> attribute value use the specified default cell style.</p><p class="Text_20_body">If an individual cell has a default style specified by a <span class="Attribute">table:default-cell-style-name</span> attribute on a <span class="Element">&lt;table:table-column&gt;</span> element and by a style:default-cell-style-name on a <span class="Element">&lt;table:table-row&gt;</span> element, the default style specified by the <span class="Element">&lt;table:table-row&gt;</span> element shall be applied to the cell and the default style specified by the &lt;table:table-column element shall be ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:default-cell-style-name</span> attribute is usable with the following elements: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a> and <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:default-cell-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_616table_direction"><span style="margin-right:0.127cm;">19.616</span></a><a id="__RefHeading__1418364_253892949"/><a id="attribute-table_direction"/>table:direction</h2><p class="Text_20_body">The <span class="Attribute">table:direction</span> attribute specifies the direction of a relation between a cell and a highlighted range. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-another-table</span>: relationship begins at another table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rom-same-table</span>: relationship begins at the same table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">o-another-table</span>: relationship ends at another table.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:direction</span> attribute is usable with the following element: <span class="Element">&lt;table:highlighted-range&gt;</span> <a href="#element-table_highlighted-range">9.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:direction</span> attribute are <span class="Attribute_20_Value">from-another-table</span>, <span class="Attribute_20_Value">to-another-table</span> or <span class="Attribute_20_Value">from-same-table</span>.</p><h2 class="Heading_20_2"><a id="a19_617table_display"><span style="margin-right:0.127cm;">19.617</span></a><a id="__RefHeading__1418366_253892949"/><a id="attribute-table_display"/>table:display</h2><p class="Text_20_body">The <span class="Attribute">table:display</span> attribute specifies whether a table is displayed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a> and <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a> elements the default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Default_20_Value">For <span class="Element">&lt;table:error-message&gt;</span> <a href="#element-table_error-message">9.4.7</a> and <span class="Element">&lt;table:help-message&gt;</span> <a href="#element-table_help-message">9.4.6</a> elements the default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:display</span> attribute is usable with the following elements: <span class="Element">&lt;table:data-pilot-member&gt;</span> <a href="#element-table_data-pilot-member">9.6.12</a>, <span class="Element">&lt;table:error-message&gt;</span> <a href="#element-table_error-message">9.4.7</a>, <span class="Element">&lt;table:help-message&gt;</span> <a href="#element-table_help-message">9.4.6</a>, <span class="Element">&lt;table:table-column-group&gt;</span> <a href="#element-table_table-column-group">9.1.10</a> and <span class="Element">&lt;table:table-row-group&gt;</span> <a href="#element-table_table-row-group">9.1.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:display</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_618table_display-border"><span style="margin-right:0.127cm;">19.618</span></a><a id="__RefHeading__1418368_253892949"/><a id="attribute-table_display-border"/>table:display-border</h2><p class="Text_20_body">The <span class="Attribute">table:display-border</span> attribute specifies whether to display a border around a scenario that belongs to a scenario table.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display-border</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: border is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: border is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:display-border</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:display-border</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_619table_display-duplicates"><span style="margin-right:0.127cm;">19.619</span></a><a id="__RefHeading__1418370_253892949"/><a id="attribute-table_display-duplicates"/>table:display-duplicates</h2><p class="Text_20_body">The <span class="Attribute">table:display-duplicates</span> attribute specifies whether to display duplicate matches in a result.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display-duplicates</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: duplicate matches not displayed in results.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: duplicate matches displayed in results.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:display-duplicates</span> attribute is usable with the following element: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:display-duplicates</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_620table_display-filter-buttons"><span style="margin-right:0.127cm;">19.620</span></a><a id="__RefHeading__1418372_253892949"/><a id="attribute-table_display-filter-buttons"/>table:display-filter-buttons</h2><p class="Text_20_body">The <span class="Attribute">table:display-filter-buttons</span> attribute specifies whether to display filter buttons. Filter buttons are list box controls displayed in the label cells whose list entries are the values that exist in the labeled row or column. Selecting one of these entries is the equivalent of applying a filter to the database range that selects all row or columns where the cells in the labeled row or column have the selected value.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display-filter-buttons</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: filter buttons are not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: filter buttons are displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:display-filter-buttons</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:display-filter-buttons</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_621table_display-list"><span style="margin-right:0.127cm;">19.621</span></a><a id="__RefHeading__1418374_253892949"/><a id="attribute-table_display-list"/>table:display-list</h2><p class="Text_20_body">The <span class="Attribute">table:display-list</span> attribute specifies whether a list of values that occurs within a condition is displayed in a UI when a user is entering a cell value. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display-list</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: the list values are not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sort-ascending</span>: the list values are displayed in ascending order.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unsorted</span>: the list values are displayed in the order they occur in the condition.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">unsorted</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:display-list</span> attribute is usable with the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:display-list</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">unsorted</span> or <span class="Attribute_20_Value">sort-ascending</span>.</p><h2 class="Heading_20_2"><a id="a19_622table_display-member-mode"><span style="margin-right:0.127cm;">19.622</span></a><a id="__RefHeading__1418376_253892949"/><a id="attribute-table_display-member-mode"/>table:display-member-mode</h2><p class="Text_20_body">The <span class="Attribute">table:display-member-mode</span> attribute specifies whether the value count specified by <span class="Attribute">table:member-count</span> attribute should be taken from the top or from the bottom of a data field's column. <a href="#attribute-table_member-count">19.667</a></p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display-member-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-bottom</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-top</span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:display-member-mode</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-display-info&gt;</span> <a href="#element-table_data-pilot-display-info">9.6.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:display-member-mode</span> attribute are <span class="Attribute_20_Value">from-top</span> or <span class="Attribute_20_Value">from-bottom</span>.</p><h2 class="Heading_20_2"><a id="a19_623table_drill-down-on-double-click"><span style="margin-right:0.127cm;">19.623</span></a><a id="__RefHeading__1418378_253892949"/><a id="attribute-table_drill-down-on-double-click"/>table:drill-down-on-double-click</h2><p class="Text_20_body">The <span class="Attribute">table:drill-down-on-double-click</span> attribute specifies how the data pilot table reacts on a double click in the data pilot table. A double click other than as specified in a data pilot table has no effect.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:drill-down-on-double-click</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a double click on a member label or the empty area next to it starts the edit mode of the table cell, like for cells outside of the data pilot table. <span class="odfLiEnd"/> </p><p class="P25" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span><span class="Note_20_Label">Note:</span> This can be used to rename group fields or members. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a double click on a member label or the empty area next to it shows or hides details for that member.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:drill-down-on-double-click</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:drill-down-on-double-click</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_624table_embedded-number-behavior"><span style="margin-right:0.127cm;">19.624</span></a><a id="__RefHeading__1418380_253892949"/><a id="attribute-table_embedded-number-behavior"/>table:embedded-number-behavior</h2><p class="Text_20_body">The <span class="Attribute">table:embedded-number-behavior</span> attribute specifies how string values that contain digits are sorted. If the value is <span class="Attribute_20_Value">alpha-numeric</span>, string comparison as specified by the other attributes of <span class="Element">&lt;table:sort&gt;</span> element is used for sorting.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:embedded-number-behavior</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">alpha-numeric</span>: other attributes are used to specify <span class="T2">the</span> string comparison for sorting.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: string values are compared as defined below <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">integer</span>: string values are compared as defined below <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"><span class="Note_20_Label">Note: </span>If the attribute value is <span class="Attribute_20_Value">integer</span> or <span class="Attribute_20_Value">double</span>, string-prefixed numbers will be sorted in a "natural", number-aware way, i.e. A1, A2, A3, ... , A19, A20, instead of the normal, alpha-numeric behavior, i.e. A1, A10, A11, A12, ... ,A19, A2, A20, A3, A4, ... , A8, A9.</p><p class="Text_20_body">The following illustrates how two strings shall be compared if the attribute value is <span class="Attribute_20_Value">integer</span> or <span class="Attribute_20_Value">double</span>.</p><p class="Text_20_body">In the following, the term "alpha-numeric comparison" means the string comparison that would be used if the <span class="Attribute">table:embedded-number-behavior</span> attribute would have the value <span class="Attribute_20_Value">alpha-numeric</span>.</p><p class="Text_20_body">Step 1: The two strings are compared by using the alpha-numeric comparison to test whether they are equal.  If they are equal, the comparison will stop immediately returning an equality as result.</p><p class="Text_20_body">Step 2:.The prefix substrings of the two strings are determined by locating the first occurrence of a digit character in the two strings; the substrings from the very first characters through the characters preceding the first digits are the prefix substrings. If a string starts with a digit, the prefix substring of this string is empty. If there is no digit in either one of the compared strings, the natural sort process will end and the alpha-numeric comparison will be performed instead. </p><p class="Text_20_body">Step 3: After the prefix substrings have been determined for both strings, an alpha-numeric comparison is performed on the two prefix substrings. If they differ, the result is returned and the process will end.</p><p class="Text_20_body">Step 4. The numeric substrings are determined by locating the first occurrences of a non-digit character after the first digit characters; the substrings from the first digit characters through the characters preceding the first non-digit character are the numeric substrings. These substrings are converted into double-precision values. The converted values are compared by numeric comparison. If these values differ, then the result will be returned and the process will end.</p><p class="Text_20_body">Step 5. The suffix substrings, which are the strings that start after the last digits of the numeric substring, will be determined. This suffix substrings replace the original strings, and the whole process will start again with step 1.</p><p class="Text_20_body">Decimal separators are treated as follows: If the attribute value is <span class="Attribute_20_Value">integer</span>, then a decimal separator is not considered as a digit. If the attribute value is <span class="Attribute_20_Value">double</span>, the treatment of a decimal separator is context-dependent: If a decimal separator occurs adjacent to one or two digit characters, it is considered a digit character as long as it is the only occurrence in that given numeric substring. In other words, a second occurrence of a decimal separator in sequence of digits and decimal separators is treated as a non-digit character. Therefore the character immediately preceding the separator becomes the last character of the numeric substring, while the separator itself becomes the first character of the suffix substring.</p><p class="Text_20_body">This sorting process is illustrated by the following figure:</p><!--Next 'div' was a 'text:p'.--><div class="Text_20_body"> <!--Next 'div' is a draw:frame.--><div style="width:4.9165in; padding:0; " class="fr1" id="Frame8"><!--Next 'div' was a 'draw:text-box'.--><div style="min-height:1.2189in;"><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is emulating the top hight of a draw:frame.--><div style="height:0.002cm;"> </div><!--Next 'div' is a draw:frame.--><div style="height:1.2189in;width:4.9165in; padding:0;  float:left; position:relative; left:0.0041cm; " class="fr6" id="graphics1"><img style="height:3.096cm;width:12.4879cm;" alt="" src="./Pictures/10000000000001D800000075C6C51876.png"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0.0041cm;">Figure <a id="refFigure0"/>1 - Natural sort</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></div></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">alpha-numeric</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:embedded-number-behavior</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:embedded-number-behavior</span> attribute are <span class="Attribute_20_Value">alpha-numeric</span>, <span class="Attribute_20_Value">integer</span> or <span class="Attribute_20_Value">double</span>.</p><h2 class="Heading_20_2"><a id="a19_625table_enabled"><span style="margin-right:0.127cm;">19.625</span></a><a id="__RefHeading__1418382_253892949"/><a id="attribute-table_enabled"/>table:enabled</h2><p class="Text_20_body">The <span class="Attribute">table:enabled</span> attribute specifies whether the <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element is evaluated or not.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:enabled</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element is not evaluated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the <span class="Element">&lt;table:data-pilot-display-info&gt;</span> element is evaluated.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:enabled</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-display-info&gt;</span> <a href="#element-table_data-pilot-display-info">9.6.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:enabled</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_626table_end"><span style="margin-right:0.127cm;">19.626</span></a><a id="__RefHeading__1418384_253892949"/><a id="attribute-table_end"/>table:end</h2><p class="Text_20_body">The <span class="Attribute">table:end</span> attribute specifies the end value for a grouping of numeric values. All values that are higher than the end value are contained in a single group, while values that are equal to or lower than the end value are grouped as specified by <span class="Attribute">table:grouped-by</span> and <span class="Attribute">table:step</span> attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:end</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the highest value of the field is taken as the end value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">double</span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:end</span> attribute are a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a> or <span class="Attribute_20_Value">auto</span>.</p><h2 class="Heading_20_2"><a id="a19_627table_end-cell-address"><span style="margin-right:0.127cm;">19.627</span></a><a id="__RefHeading__1418386_253892949"/><a id="attribute-table_end-cell-address"/>table:end-cell-address</h2><p class="Text_20_body">The <span class="Attribute">table:end-cell-address</span> attribute specifies specify end position of the shape if it is included in a spreadsheet document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-cell-address</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-cell-address</span> attribute has the data type <span class="Datatype">cellAddress</span> <a href="#datatype-cellAddress">18.3.4</a>.</p><h2 class="Heading_20_2"><a id="a19_628table_end-column"><span style="margin-right:0.127cm;">19.628</span></a><a id="__RefHeading__1418388_253892949"/><a id="attribute-table_end-column"/>table:end-column</h2><p class="Text_20_body">The <span class="Attribute">table:end-column</span> attribute specifies the end column of a range if the range address is a cell range address. The value of a <span class="Attribute">table:end-column</span> attribute is inclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-column</span> attribute is usable with the following elements: <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-column</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_629table_end-position"><span style="margin-right:0.127cm;">19.629</span></a><a id="__RefHeading__1418390_253892949"/><a id="attribute-table_end-position"/>table:end-position</h2><p class="Text_20_body">The <span class="Attribute">table:end-position</span> attribute specifies the number of the last deleted row or column. The value of a <span class="Attribute">table:end-position</span> attribute is exclusive. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-position</span> attribute is usable with the following element: <span class="Element">&lt;table:movement-cut-off&gt;</span> <a href="#element-table_movement-cut-off">9.9.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_630table_end-row"><span style="margin-right:0.127cm;">19.630</span></a><a id="__RefHeading__1418392_253892949"/><a id="attribute-table_end-row"/>table:end-row</h2><p class="Text_20_body">The <span class="Attribute">table:end-row</span> attribute specifies the end row of a range if the range address is a cell range address. The value of a <span class="Attribute">table:end-row</span> attribute is inclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-row</span> attribute is usable with the following elements: <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-row</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_631table_end-table"><span style="margin-right:0.127cm;">19.631</span></a><a id="__RefHeading__1418394_253892949"/><a id="attribute-table_end-table"/>table:end-table</h2><p class="Text_20_body">The <span class="Attribute">table:end-table</span> attribute specifies the end table of a range if the range address is a cell range address. The value of a <span class="Attribute">table:end-table</span> attribute is inclusive. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-table</span> attribute is usable with the following elements: <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-table</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_632table_end-x"><span style="margin-right:0.127cm;">19.632</span></a><a id="__RefHeading__1418396_253892949"/><a id="attribute-table_end-x"/>table:end-x </h2><p class="Text_20_body">The <span class="Attribute">table:end-x</span> attribute specifies the x-coordinate of the end position of a shape relative to the top left edge of a cell. The size attributes of the shape are ignored. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-x</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h2 class="Heading_20_2"><a id="a19_633table_end-y"><span style="margin-right:0.127cm;">19.633</span></a><a id="__RefHeading__1418398_253892949"/><a id="attribute-table_end-y"/>table:end-y</h2><p class="Text_20_body">The <span class="Attribute">table:end-y</span> attribute specifies the y-coordinate of the end position of a shape relative to the top left edge of a cell. The size attributes of the shape are ignored. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:end-y</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:end-y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h2 class="Heading_20_2"><a id="a19_634table_execute"><span style="margin-right:0.127cm;">19.634</span></a><a id="__RefHeading__1418400_253892949"/><a id="attribute-table_execute"/>table:execute</h2><p class="Text_20_body">The <span class="Attribute">table:execute</span> attribute specifies whether a macro should be executed or not.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:execute</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: macro is not executed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: macro is executed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:execute</span> attribute is usable with the following element: <span class="Element">&lt;table:error-macro&gt;</span> <a href="#element-table_error-macro">9.4.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:execute</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_635table_expression"><span style="margin-right:0.127cm;">19.635</span></a><a id="__RefHeading__1418402_253892949"/><a id="attribute-table_expression"/>table:expression</h2><p class="Text_20_body">The <span class="Attribute">table:expression</span> attribute specifies an expression. If the expression contains a named range or another named expression, the named range or named expression shall be specified first, before the containing expression. If the expression contains a relative cell range address, a <span class="Attribute">table:base-cell-address</span> attribute shall also appear on the <span class="Element">&lt;table:named-expression&gt;</span> element. </p><p class="Text_20_body">Relative cell range addresses that occur in an expression define an offset which shall be interpreted relative to the cell where a named expression is used. The offset is the same as the offsets between the table cell addressed by the relative cell range address and the table cell specified by the <span class="Attribute">table:base-cell-address</span> attribute. </p><p class="Text_20_body">The value of this attribute may have a namespace prefix, followed by a ":" (U+003A, COLON), followed by an expression. If the namespace prefix is missing it defaults to the "urn:oasis:names:tc:opendocument:xmlns:of:1.2" namespace. If a namespace prefix is present, the expression shall start with an '=' equal sign. If no namespace prefix is present, the '=' equal sign may be omitted. The XML namespace name bound to the namespace prefix specifies the syntax and semantics of the formulas and values occurring within the condition.</p><p class="Text_20_body">An OpenDocument Consumer when hosting a formula evaluator makes available the host-dependent properties defined by table <a href="#refTable11">12</a> in 19.644.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:expression</span> attribute is usable with the following element: <span class="Element">&lt;table:named-expression&gt;</span> <a href="#element-table_named-expression">9.4.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:expression</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_636table_field-name"><span style="margin-right:0.127cm;">19.636</span></a><a id="__RefHeading__1418404_253892949"/><a id="attribute-table_field-name"/>table:field-name</h2><p class="Text_20_body">The <span class="Attribute">table:field-name</span> attribute specifies a category column whose members' values are used in operations defined by a <span class="Attribute">table:type</span> attribute that determines the display of values of the data field of which the <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> element is a part. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:field-name</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> <a href="#element-table_data-pilot-field-reference">9.6.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:field-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_637table_field-number"><span style="margin-right:0.127cm;">19.637</span></a><a id="__RefHeading__1418406_253892949"/><a id="attribute-table_field-number"/>table:field-number</h2><p class="Text_20_body">The <span class="Attribute">table:field-number</span> number attribute specifies a row or column number to sort, subtotal or filter. It is the number of a row or column within a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:field-number</span> attribute is usable with the following elements: <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>, <span class="Element">&lt;table:sort-by&gt;</span> <a href="#element-table_sort-by">9.4.20</a> and <span class="Element">&lt;table:subtotal-field&gt;</span> <a href="#element-table_subtotal-field">9.4.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:field-number</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_638table_filter-name"><span style="margin-right:0.127cm;">19.638</span></a><a id="__RefHeading__1418408_253892949"/><a id="attribute-table_filter-name"/>table:filter-name</h2><p class="Text_20_body">The <span class="Attribute">table:filter-name</span> attribute specifies the file type of the document containing the original table. The value of this attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:filter-name</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a> and <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:filter-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_639table_filter-options"><span style="margin-right:0.127cm;">19.639</span></a><a id="__RefHeading__1418410_253892949"/><a id="attribute-table_filter-options"/>table:filter-options</h2><p class="Text_20_body">The <span class="Attribute">table:filter-options</span> attribute specifies implementation-dependent settings for a file type.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:filter-options</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a> and <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:filter-options</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_640table_first-row-end-column__deprecated_"><span style="margin-right:0.127cm;">19.640</span></a><a id="__RefHeading__1418412_253892949"/><a id="attribute-table_first-row-end-column"/>table:first-row-end-column (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">table:first-row-end-column</span> attribute specifies the whether the cell in the first row, end column gets its style from its row or column. </p><p class="Text_20_body">The use of this attribute is deprecated. The <span class="Attribute">table:use-first-row-styles</span> or <span class="Attribute">table:use-last-column-styles</span> attributes should be used instead. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:first-row-end-column</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: cell in first row, end column should inherit its style from the column where it appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: cell in first row, end column should inherit its style from the row where it appears.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:first-row-end-column</span> attribute is usable with the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:first-row-end-column</span> attribute are <span class="Attribute_20_Value">row</span> or <span class="Attribute_20_Value">column</span>.</p><h2 class="Heading_20_2"><a id="a19_641table_first-row-start-column__deprecated_"><span style="margin-right:0.127cm;">19.641</span></a><a id="__RefHeading__1418414_253892949"/><a id="attribute-table_first-row-start-column"/>table:first-row-start-column (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">table:first-row-start-column</span> attribute specifies the whether the cell in the first row, start column gets its style from its row or column. </p><p class="Text_20_body">The use of this attribute is deprecated. The <span class="Attribute">table:use-first-row-styles</span> or <span class="Attribute">table:use-first-column-styles</span> attributes should be used instead. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:first-row-start-column</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: cell in first row, start column should inherit its style from the column where it appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: cell in first row, start column should inherit its style from the row where it appears.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:first-row-start-column</span> attribute is usable with the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:first-row-start-column</span> attribute are <span class="Attribute_20_Value">row</span> or <span class="Attribute_20_Value">column</span>.</p><h2 class="Heading_20_2"><a id="a19_642table_formula"><span style="margin-right:0.127cm;">19.642</span></a><a id="__RefHeading__1418416_253892949"/><a id="attribute-table_formula"/>table:formula</h2><p class="Text_20_body">The <span class="Attribute">table:formula</span> attribute specifies a formula for a table cell.</p><p class="Text_20_body">Formulas specify calculations to be performed within table cells. The attribute value should begin with a namespace prefix followed by ":" (U+003A, COLON), followed by the text of the formula. The namespace bound to the prefix determines the syntax and semantics of the formula. </p><p class="Text_20_body">Whenever the initial text of a formula has the appearance of an NCName followed by ":" (U+003A, COLON), an OpenDocument producer shall provide a valid namespace prefix and separating ":" (U+003A, COLON) separator before the text of the formula in order to eliminate any ambiguity. </p><p class="Text_20_body">If a namespace prefix is not specified, it defaults to the "urn:oasis:names:tc:opendocument:xmlns:of:1.2" namespace. </p><p class="Text_20_body">An OpenDocument Consumer when hosting a formula evaluator has the host-dependent properties specified in Table <a href="#refTable15">16</a>.</p><p class="Table">Table  <a id="refTable15"/>16 Host-dependent Properties</p><table border="0" cellspacing="0" cellpadding="0" class="Table12"><colgroup><col width="222"/><col width="222"/><col width="222"/></colgroup><tr><td style="text-align:left;width:2in; " class="Table12_A1"><p class="Table_20_Heading">Property</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A1"><p class="Table_20_Heading">Attribute</p></td><td style="text-align:left;width:2in; " class="Table12_C1"><p class="Table_20_Heading">Default Value </p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-CASE-SENSITIVE</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">table:case-sensitive</span></p></td><td style="text-align:right; width:2in; " class="Table12_C2"><p class="Table_20_Contents"><span class="Attribute_20_Value">true</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-PRECISION-AS-SHOWN</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">table:precision-as-shown</span></p></td><td style="text-align:right; width:2in; " class="Table12_C2"><p class="Table_20_Contents"><span class="Attribute_20_Value">false</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-SEARCH-CRITERIA-MUST-APPLY-TO-WHOLE-CELL</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">t</span><span class="Attribute">able:search-criteria-must-apply-to-whole-</span><span class="Attribute">cell</span></p></td><td style="text-align:left;width:2in; " class="Table12_C4"><p class="Table_20_Contents"><span class="Attribute_20_Value">true</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-AUTOMATIC-FIND-LABELS</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">t</span><span class="Attribute">able:automatic-find-labels</span></p></td><td style="text-align:left;width:2in; " class="Table12_C4"><p class="Table_20_Contents"><span class="Attribute_20_Value">true</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-USE-REGULAR-EXPRESSIONS</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">t</span><span class="Attribute">able:use-regular-</span><span class="Attribute">expressions</span></p></td><td style="text-align:right; width:2in; " class="Table12_C2"><p class="Table_20_Contents"><span class="Attribute_20_Value">true</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-USE-WILDCARDS</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">t</span><span class="Attribute">able:use-wildcards</span></p></td><td style="text-align:right; width:2in; " class="Table12_C2"><p class="Table_20_Contents"><span class="Attribute_20_Value">false</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-NULL-YEAR</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">t</span><span class="Attribute">able:null-year</span></p></td><td style="text-align:right; width:2in; " class="Table12_C8"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">1930</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-NULL-DATE</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">t</span><span class="Attribute">able:null-date</span></p></td><td style="text-align:left;width:2in; " class="Table12_C4"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">1899-12-30</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-LOCALE</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents">N/A</p></td><td style="text-align:left;width:2in; " class="Table12_C4"><p class="Table_20_Contents">Implementation-defined</p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-ITERATION-STATUS</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">table:status</span></p></td><td style="text-align:left;width:2in; " class="Table12_C4"><p class="Table_20_Contents">disable </p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-ITERATION-MAXIMUM-DIFFERENCE</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">table:maximum-</span><span class="Attribute">difference</span></p></td><td style="text-align:right; width:2in; " class="Table12_C8"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">0</span></p></td></tr><tr><td style="text-align:left;width:2in; " class="Table12_A2"><p class="Table_20_Contents">HOST-ITERATION-STEPS</p></td><td style="text-align:left;width:2.0014in; " class="Table12_A2"><p class="Table_20_Contents"><span class="Attribute">table:steps</span></p></td><td style="text-align:right; width:2in; " class="Table12_C8"><p class="Table_20_Contents"><span class="Attribute_20_Value_20_Instance">100</span></p></td></tr></table><p class="Text_20_body"><span class="Note_20_Label">Note</span>: Host-dependent properties are applicable to <span class="Attribute">style:condition</span> (<a href="#attribute-style_condition">19.468</a>), <span class="Attribute">table:condition</span> (<a href="#attribute-table_condition">19.596</a>) and, <span class="Attribute">table:expression</span> (<a href="#attribute-table_expression">19.635</a>) attributes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:formula</span> attribute is usable with the following elements: <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:formula</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_643table_function"><span style="margin-right:0.127cm;">19.643</span></a><a id="__RefHeading__1418418_253892949"/><a id="attribute-table_function"/>table:function</h2><h3 class="Heading_20_3"><a id="a19_643_1General"><span style="margin-right:0.127cm;">19.643.1</span></a><a id="__RefHeading__1418420_253892949"/><a id="table_function-General"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:function</span> attribute specifies functions that are applied to tables.</p><p class="Text_20_body">The <span class="Attribute">table:function</span> attribute on all elements has the following defined values:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">average</span>: the average of all numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">count</span>: the count of all non-empty values, including text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">countnums</span>: the count of all numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">max</span>: the maximum of all numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">min</span>: the minimum of all numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">product</span>: the product of all numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stdev</span>: the standard deviation, treating all numeric values as a sample from a population.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stdevp</span>: the standard deviation, treating all numeric values as a whole population.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sum</span>: the sum of all numeric values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">var</span>: the variance, treating all numeric values as a sample from a population.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">varp</span>: the variance, treating all numeric values as a whole population. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">string</span>: an implementation-dependent function name.<span class="odfLiEnd"/> </p></li></ul><h3 class="Heading_20_3"><a id="a19_643_2_table_consolidation_"><span style="margin-right:0.127cm;">19.643.2</span></a><a id="__RefHeading__1418422_253892949"/><a id="attribute-table_function_element-table_consolidation"/>&lt;table:consolidation&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:function</span> attribute specifies functions. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:function</span> attribute is usable with the following element: <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:function</span> attribute are <span class="Attribute_20_Value">average</span>, <span class="Attribute_20_Value">count</span>, <span class="Attribute_20_Value">countnums</span>, <span class="Attribute_20_Value">max</span>, <span class="Attribute_20_Value">min</span>, <span class="Attribute_20_Value">product</span>, <span class="Attribute_20_Value">stdev</span>, <span class="Attribute_20_Value">stdevp</span>, <span class="Attribute_20_Value">sum</span>, <span class="Attribute_20_Value">var</span>, <span class="Attribute_20_Value">varp</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_643_3_table_data-pilot-field_"><span style="margin-right:0.127cm;">19.643.3</span></a><a id="__RefHeading__1418424_253892949"/><a id="attribute-table_function_element-table_data-pilot-field"/>&lt;table:data-pilot-field&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:function</span> attribute specifies specifies the function which is applied to the cell values of data columns.</p><p class="Text_20_body">For <span class="Element">&lt;table:data-pilot-field&gt;</span> elements whose <span class="Attribute">table:orientation</span> attribute has the value <span class="Attribute_20_Value">data</span>, the defined values for the <span class="Attribute">table:function</span> attribute are those defined in <a href="#table_function-General">19.643.1</a>.</p><p class="Text_20_body">For <span class="Element">&lt;table:data-pilot-field&gt;</span> elements whose <span class="Attribute">table:orientation</span> attribute has the value <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">row</span>, the only defined value for the <span class="Attribute">table:function</span> attribute is:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: no function is applied to that category field. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:function</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:function</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">average</span>, <span class="Attribute_20_Value">count</span>, <span class="Attribute_20_Value">countnums</span>, <span class="Attribute_20_Value">max</span>, <span class="Attribute_20_Value">min</span>, <span class="Attribute_20_Value">product</span>, <span class="Attribute_20_Value">stdev</span>, <span class="Attribute_20_Value">stdevp</span>, <span class="Attribute_20_Value">sum</span>, <span class="Attribute_20_Value">var</span>, <span class="Attribute_20_Value">varp</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_643_4_table_data-pilot-subtotal_"><span style="margin-right:0.127cm;">19.643.4</span></a><a id="__RefHeading__1418426_253892949"/><a id="attribute-table_function_element-table_data-pilot-subtotal"/>&lt;table:data-pilot-subtotal&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:function</span> attribute specifies the type of subtotals to calculate. </p><p class="Text_20_body">The addition to the values defined in <a href="#table_function-General">19.643.1</a> the <span class="T2">following</span> value is defined:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: specifies that subtotals shall use the same function(s) that are used to calculate the <span class="Element">&lt;table:data-pilot-field&gt;</span> elements with <span class="Attribute">table:orientation</span>="<span class="Attribute_20_Value">data</span>". <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:function</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-subtotal&gt;</span> <a href="#element-table_data-pilot-subtotal">9.6.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:function</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">average</span>, <span class="Attribute_20_Value">count</span>, <span class="Attribute_20_Value">countnums</span>, <span class="Attribute_20_Value">max</span>, <span class="Attribute_20_Value">min</span>, <span class="Attribute_20_Value">product</span>, <span class="Attribute_20_Value">stdev</span>, <span class="Attribute_20_Value">stdevp</span>, <span class="Attribute_20_Value">sum</span>, <span class="Attribute_20_Value">var</span>, <span class="Attribute_20_Value">varp</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_643_5_table_subtotal-field_"><span style="margin-right:0.127cm;">19.643.5</span></a><a id="__RefHeading__1418428_253892949"/><a id="attribute-table_function_element-table_subtotal-field"/>&lt;table:subtotal-field&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:function</span> attribute specifies the type of subtotals to calculate. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:function</span> attribute is usable with the following element: <span class="Element">&lt;table:subtotal-field&gt;</span> <a href="#element-table_subtotal-field">9.4.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:function</span> attribute are <span class="Attribute_20_Value">average</span>, <span class="Attribute_20_Value">count</span>, <span class="Attribute_20_Value">countnums</span>, <span class="Attribute_20_Value">max</span>, <span class="Attribute_20_Value">min</span>, <span class="Attribute_20_Value">product</span>, <span class="Attribute_20_Value">stdev</span>, <span class="Attribute_20_Value">stdevp</span>, <span class="Attribute_20_Value">sum</span>, <span class="Attribute_20_Value">var</span>, <span class="Attribute_20_Value">varp</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_644table_grand-total"><span style="margin-right:0.127cm;">19.644</span></a><a id="__RefHeading__1418430_253892949"/><a id="attribute-table_grand-total"/>table:grand-total</h2><p class="Text_20_body">The <span class="Attribute">table:grand-total</span> attribute specifies whether a grand total column, row, or both should be displayed in addition to values calculated for each combination of values in the category columns.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:grand-total</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">both</span>: grand totals for rows and columns are displayed in addition to values calculated for other combinations of values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">olumn</span>: grand totals for columns are displayed in addition to values calculated for other combinations of values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: grand totals for rows and columns are not displayed in addition to values calculated for other combinations of values.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">row</span>: grand totals for rows are displayed in addition to values calculated for other combinations of values.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">both</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:grand-total</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:grand-total</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">row</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">both</span>.</p><h2 class="Heading_20_2"><a id="a19_645table_group-by-field-number"><span style="margin-right:0.127cm;">19.645</span></a><a id="__RefHeading__1418432_253892949"/><a id="attribute-table_group-by-field-number"/>table:group-by-field-number</h2><p class="Text_20_body">The <span class="Attribute">table:group-by-field-number</span> attribute specifies a field, that is to be grouped. It is the number of a row or column within a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:group-by-field-number</span> attribute is usable with the following element: <span class="Element">&lt;table:subtotal-rule&gt;</span> <a href="#element-table_subtotal-rule">9.4.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:group-by-field-number</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_646table_grouped-by"><span style="margin-right:0.127cm;">19.646</span></a><a id="__RefHeading__1418434_253892949"/><a id="attribute-table_grouped-by"/>table:grouped-by</h2><p class="Text_20_body">The <span class="Attribute">table:grouped-by</span> attribute specifies the grouping of the date values. Date values can be grouped by seconds, minutes, hours, days, months, quarters or years. </p><p class="Note"><span class="Note_20_Label">Note:</span> If date values are for instance grouped by minutes, all dates or times that are within the same minute are within one group. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:grouped-by</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">seconds</span>: a value expressed as seconds.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">minutes</span>: a value expressed as minutes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hours</span>: a value expressed as hours.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">days</span>: a value expressed as days.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">months</span>: a value expressed as months.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">quarters</span>: a value expressed as quarters (4 equal 3 month segments).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">years</span>: a value expressed as years.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:grouped-by</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:grouped-by</span> attribute are <span class="Attribute_20_Value">seconds</span>, <span class="Attribute_20_Value">minutes</span>, <span class="Attribute_20_Value">hours</span>, <span class="Attribute_20_Value">days</span>, <span class="Attribute_20_Value">months</span>, <span class="Attribute_20_Value">quarters</span> or <span class="Attribute_20_Value">years</span>.</p><h2 class="Heading_20_2"><a id="a19_647table_has-persistent-data"><span style="margin-right:0.127cm;">19.647</span></a><a id="__RefHeading__1418436_253892949"/><a id="attribute-table_has-persistent-data"/>table:has-persistent-data</h2><p class="Text_20_body">The <span class="Attribute">table:has-persistent-data</span> attribute specifies whether the current data in a database range is saved when the document itself is saved.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:has-persistent-data</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data in a database range is not saved when the document itself is saved.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data in a database range is saved when the document itself is saved.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:has-persistent-data</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:has-persistent-data</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_648table_id"><span style="margin-right:0.127cm;">19.648</span></a><a id="__RefHeading__1418438_253892949"/><a id="attribute-table_id"/>table:id</h2><p class="Text_20_body">The <span class="Attribute">table:id</span> attribute specifies the id of an insertion or tracked change.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:id</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:cell-content-deletion&gt;</span> <a href="#element-table_cell-content-deletion">9.9.7</a>, <span class="Element">&lt;table:change-deletion&gt;</span> <a href="#element-table_change-deletion">9.9.8</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:dependency&gt;</span> <a href="#element-table_dependency">9.9.5</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a>, <span class="Element">&lt;table:insertion-cut-off&gt;</span> <a href="#element-table_insertion-cut-off">9.9.11</a>, <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a> and <span class="Element">&lt;table:previous&gt;</span> <a href="#element-table_previous">9.9.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_649table_identify-categories"><span style="margin-right:0.127cm;">19.649</span></a><a id="__RefHeading__1418440_253892949"/><a id="attribute-table_identify-categories"/>table:identify-categories</h2><p class="Text_20_body">The <span class="Attribute">table:identify-categories</span> attribute specifies whether rows that do not contain a value in one of the category columns should use the value of the nearest ancestor row that has a value, or  should be moved into a group (or category) of its own. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:identify-categories</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: empty rows form a group or category.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: empty rows use the value of the nearest ancestor row that has a value for classification into a group or category.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:identify-categories</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:identify-categories</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_650table_ignore-empty-rows"><span style="margin-right:0.127cm;">19.650</span></a><a id="__RefHeading__1418442_253892949"/><a id="attribute-table_ignore-empty-rows"/>table:ignore-empty-rows</h2><p class="Text_20_body">The <span class="Attribute">table:ignore-empty-rows</span> attribute specifies whether empty rows in a source range should be ignored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:ignore-empty-rows</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: empty rows in a source range are not ignored.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: empty rows in a source range are ignored.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:ignore-empty-rows</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:ignore-empty-rows</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_651table_index"><span style="margin-right:0.127cm;">19.651</span></a><a id="__RefHeading__1418444_253892949"/><a id="attribute-table_index"/>table:index</h2><p class="Text_20_body">The <span class="Attribute">table:index</span> attribute specifies for the <span class="Element">&lt;table:operation&gt;</span> element on which it appears, its order in a series of <span class="Element">&lt;table:operation&gt;</span> elements under a <span class="Element">&lt;table:detective&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:index</span> attribute is usable with the following element: <span class="Element">&lt;table:operation&gt;</span> <a href="#element-table_operation">9.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:index</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_652table_is-active"><span style="margin-right:0.127cm;">19.652</span></a><a id="__RefHeading__1418446_253892949"/><a id="attribute-table_is-active"/>table:is-active</h2><p class="Text_20_body">The <span class="Attribute">table:is-active</span> attribute specifies whether a scenario that belongs to a scenario table is active.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:is-active</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: scenario that belongs to a scenario table is inactive.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: scenario that belongs to a scenario table is active.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:is-active</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:is-active</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_653table_is-data-layout-field"><span style="margin-right:0.127cm;">19.653</span></a><a id="__RefHeading__1418448_253892949"/><a id="attribute-table_is-data-layout-field"/>table:is-data-layout-field</h2><p class="Text_20_body">The <span class="Attribute">table:is-data-layout-field</span> attribute specifies whether a field is a data layout field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:is-data-layout-field</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: field is not a data layout field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: field is a data layout field.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:is-data-layout-field</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:is-data-layout-field</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_654table_is-selection"><span style="margin-right:0.127cm;">19.654</span></a><a id="__RefHeading__1418450_253892949"/><a id="attribute-table_is-selection"/>table:is-selection</h2><p class="Text_20_body">The <span class="Attribute">table:is-selection</span> attribute specifies whether the database range includes a complete database, or a selection of records from a database only.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:is-selection</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: database range includes a section of records from a database.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: database range includes a complete database.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:is-selection</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:is-selection</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_655table_is-sub-table"><span style="margin-right:0.127cm;">19.655</span></a><a id="__RefHeading__1418452_253892949"/><a id="attribute-table_is-sub-table"/>table:is-sub-table</h2><p class="Text_20_body">The <span class="Attribute">table:is-sub-table</span> attribute specifies if a nested table is a subtable. </p><p class="Text_20_body">If a table cell only contains a single table but no paragraphs or other content, the table can be specified as subtable. It occupies the whole cell and no other content can appear in the cell.</p><p class="Text_20_body">The borders of a subtable merge with the borders of the cell where it is specified. A subtable does not have its own style. </p><p class="Text_20_body">A nested table that is not specified to be a subtable appears as a table within a table, that is, it has borders distinct from those of the parent cell and respects the padding of the parent cell.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:is-sub-table</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: nested table is not a subtable.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: nested table is a subtable.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:is-sub-table</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:is-sub-table</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_656table_label-cell-range-address"><span style="margin-right:0.127cm;">19.656</span></a><a id="__RefHeading__1418454_253892949"/><a id="attribute-table_label-cell-range-address"/>table:label-cell-range-address</h2><p class="Text_20_body">The <span class="Attribute">table:label-cell-range-address</span> attribute specifies a cell range address for labels.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:label-cell-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:label-range&gt;</span> <a href="#element-table_label-range">9.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:label-cell-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h2 class="Heading_20_2"><a id="a19_657table_language"><span style="margin-right:0.127cm;">19.657</span></a><a id="__RefHeading__1418456_253892949"/><a id="attribute-table_language"/>table:language</h2><p class="Text_20_body">The <span class="Attribute">table:language</span> attribute specifies the natural language in which a comparison will occur.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:language</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:language</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h2 class="Heading_20_2"><a id="a19_658table_last-column-spanned"><span style="margin-right:0.127cm;">19.658</span></a><a id="__RefHeading__1418458_253892949"/><a id="attribute-table_last-column-spanned"/>table:last-column-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:last-column-spanned</span> attribute together with the <span class="Attribute">table:last-row-spanned</span> attribute specifies the last known size of a range. If the size of the range has changed since the determination of its size, the value of these attributes will be incorrect. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:last-column-spanned</span> attribute is usable with the following element: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:last-column-spanned</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_659table_last-row-end-column__deprecated_"><span style="margin-right:0.127cm;">19.659</span></a><a id="__RefHeading__1418460_253892949"/><a id="attribute-table_last-row-end-column"/>table:last-row-end-column (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">table:last-row-end-column</span> attribute specifies the whether the cell in the last row, end column gets its style from its row or column. </p><p class="Text_20_body">The use of this attribute is deprecated. The <span class="Attribute">table:use-last-row-styles</span> or <span class="Attribute">table:use-last-column-styles</span> attributes should be used instead. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:last-row-end-column</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: cell in last row, end column should inherit its style from the column where it appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: cell in last row, end column should inherit its style from the column where it appears.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:last-row-end-column</span> attribute is usable with the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:last-row-end-column</span> attribute are <span class="Attribute_20_Value">row</span> or <span class="Attribute_20_Value">column</span>.</p><h2 class="Heading_20_2"><a id="a19_660table_last-row-spanned"><span style="margin-right:0.127cm;">19.660</span></a><a id="__RefHeading__1418462_253892949"/><a id="attribute-table_last-row-spanned"/>table:last-row-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:last-row-spanned</span> attribute together with the <span class="Attribute">table:last-column-spanned</span> attribute specifies the last known size of a range. If the size of the range has changed since the determination of its size, the value of these attributes will be incorrect.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:last-row-spanned</span> attribute is usable with the following element: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:last-row-spanned</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_661table_last-row-start-column__deprecated_"><span style="margin-right:0.127cm;">19.661</span></a><a id="__RefHeading__1418464_253892949"/><a id="attribute-table_last-row-start-column"/>table:last-row-start-column (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">table:last-row-start-column</span> attribute specifies the whether the cell in the last row, start column gets its style from its row or column. </p><p class="Text_20_body">The use of this attribute is deprecated. The <span class="Attribute">table:use-last-row-styles</span> or <span class="Attribute">table:use-first-column-styles</span> attributes should be used instead. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:last-row-start-column</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: cell in last row, start column should inherit its style from the column where it appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">row</span>: cell in last row, start column should inherit its style from the column where it appears.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:last-row-start-column</span> attribute is usable with the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:last-row-start-column</span> attribute are <span class="Attribute_20_Value">row</span> or <span class="Attribute_20_Value">column</span>.</p><h2 class="Heading_20_2"><a id="a19_662table_layout-mode"><span style="margin-right:0.127cm;">19.662</span></a><a id="__RefHeading__1418466_253892949"/><a id="attribute-table_layout-mode"/>table:layout-mode</h2><p class="Text_20_body">The <span class="Attribute">table:layout-mode</span> attribute specifies how to layout a field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:layout-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outline-subtotals-bottom</span>: Like <span class="Attribute_20_Value">outline-subtotals-top</span>, except that subtotals are shown at the bottom (below the member's data, as in tabular layout mode).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outline-subtotals-top</span>: In outline layout mode, the members from the following field start in the row below a member's name. Subtotals are shown at the top (in the same row as the member's name). When the subtotals take up more than one row (manually selected, or because there are multiple data fields), they are always shown below the member's data, regardless of the setting.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">tabular-layout</span>: Tabular layout mode is the layout, where each member's name is on the same row as the first member from the following field. Subtotals are always shown below a member's data in this mode.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:layout-mode</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-layout-info&gt;</span> <a href="#element-table_data-pilot-layout-info">9.6.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:layout-mode</span> attribute are <span class="Attribute_20_Value">tabular-layout</span>, <span class="Attribute_20_Value">outline-subtotals-top</span> or <span class="Attribute_20_Value">outline-subtotals-bottom</span>.</p><h2 class="Heading_20_2"><a id="a19_663table_link-to-source-data"><span style="margin-right:0.127cm;">19.663</span></a><a id="__RefHeading__1418468_253892949"/><a id="attribute-table_link-to-source-data"/>table:link-to-source-data</h2><p class="Text_20_body">The <span class="Attribute">table:link-to-source-data</span> attribute specifies whether the data in a consolidation table range should be linked to the source data, so that it is automatically updated if any changes are made to the source data.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:link-to-source-data</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data in consolidated table range not linked to source data.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data in consolidated table range is linked to source data.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:link-to-source-data</span> attribute is usable with the following element: <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:link-to-source-data</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_664table_marked-invalid"><span style="margin-right:0.127cm;">19.664</span></a><a id="__RefHeading__1418470_253892949"/><a id="attribute-table_marked-invalid"/>table:marked-invalid</h2><p class="Text_20_body">The <span class="Attribute">table:marked-invalid</span> attribute specifies whether the current cell is marked invalid. This attribute cannot be used together with any other attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:marked-invalid</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: current cell not marked invalid.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: current cell marked invalid.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:marked-invalid</span> attribute is usable with the following element: <span class="Element">&lt;table:highlighted-range&gt;</span> <a href="#element-table_highlighted-range">9.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:marked-invalid</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_665table_matrix-covered"><span style="margin-right:0.127cm;">19.665</span></a><a id="__RefHeading__1418472_253892949"/><a id="attribute-table_matrix-covered"/>table:matrix-covered</h2><p class="Text_20_body">The <span class="Attribute">table:matrix-covered</span> attribute specifies if a cell is contained in a matrix. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:matrix-covered</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cell is not included in a matrix.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cell is included in a matrix.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:matrix-covered</span> attribute is usable with the following element: <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:matrix-covered</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_666table_maximum-difference"><span style="margin-right:0.127cm;">19.666</span></a><a id="__RefHeading__1418474_253892949"/><a id="attribute-table_maximum-difference"/>table:maximum-difference</h2><p class="Text_20_body">The <span class="Attribute">table:maximum-difference</span> attribute specifies the maximum difference between two iterative calculation results. The iteration is stopped if the result is less than the value of this attribute. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">0.001</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:maximum-difference</span> attribute is usable with the following element: <span class="Element">&lt;table:iteration&gt;</span> <a href="#element-table_iteration">9.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:maximum-difference</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_667table_member-count"><span style="margin-right:0.127cm;">19.667</span></a><a id="__RefHeading__1418476_253892949"/><a id="attribute-table_member-count"/>table:member-count</h2><p class="Text_20_body">The <span class="Attribute">table:member-count</span> attribute specifies the number of values from the top or from the bottom of a data field's column are shown.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:member-count</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-display-info&gt;</span> <a href="#element-table_data-pilot-display-info">9.6.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:member-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_668table_member-name"><span style="margin-right:0.127cm;">19.668</span></a><a id="__RefHeading__1418478_253892949"/><a id="attribute-table_member-name"/>table:member-name</h2><p class="Text_20_body">The <span class="Attribute">table:member-name</span> attribute specifies the value of a data pilot member.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:member-name</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> <a href="#element-table_data-pilot-field-reference">9.6.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:member-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_669table_member-type"><span style="margin-right:0.127cm;">19.669</span></a><a id="__RefHeading__1418480_253892949"/><a id="attribute-table_member-type"/>table:member-type</h2><p class="Text_20_body">The <span class="Attribute">table:member-type</span> attribute specifies the member of the referenced category column, whose value within the current data field is taken into account. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:member-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">named</span>: the <span class="Attribute">table:member-name</span> attribute on the same <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> element specifies the member whose value within the data field is taken into account.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">next</span>: the value of the data field for the next visible member of the referenced category column is taken into account. Empty members are skipped.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">previous</span>: the value of the data field for the next visible member of the referenced category column is taken into account. Empty members are skipped.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:member-type</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> <a href="#element-table_data-pilot-field-reference">9.6.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:member-type</span> attribute are <span class="Attribute_20_Value">named</span>, <span class="Attribute_20_Value">previous</span> or <span class="Attribute_20_Value">next</span>.</p><h2 class="Heading_20_2"><a id="a19_670table_message-type"><span style="margin-right:0.127cm;">19.670</span></a><a id="__RefHeading__1418482_253892949"/><a id="attribute-table_message-type"/>table:message-type</h2><p class="Text_20_body">The <span class="Attribute">table:message-type</span> attribute specifies the display of messages.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:message-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">information</span>: message is displayed as information only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stop</span>: message is displayed as an error and the operation that caused the validation check is stopped.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">warning</span>: message is displayed as a warning.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">stop</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:message-type</span> attribute is usable with the following element: <span class="Element">&lt;table:error-message&gt;</span> <a href="#element-table_error-message">9.4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:message-type</span> attribute are <span class="Attribute_20_Value">stop</span>, <span class="Attribute_20_Value">warning</span> or <span class="Attribute_20_Value">information</span>.</p><h2 class="Heading_20_2"><a id="a19_671table_mode"><span style="margin-right:0.127cm;">19.671</span></a><a id="__RefHeading__1418484_253892949"/><a id="attribute-table_mode"/>table:mode</h2><p class="Text_20_body">The <span class="Attribute">table:mode</span> attribute specifies what data should be copied from a source table to a destination table. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">copy-all</span>: formulas and styles are copied.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">co</span><span class="Attribute_20_Value">py-results-only</span>: only formula results and non-calculated cell content are copied.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">copy-all</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:mode</span> attribute is usable with the following element: <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:mode</span> attribute are <span class="Attribute_20_Value">copy-all</span> or <span class="Attribute_20_Value">copy-results-only</span>.</p><h2 class="Heading_20_2"><a id="a19_672table_multi-deletion-spanned"><span style="margin-right:0.127cm;">19.672</span></a><a id="__RefHeading__1418486_253892949"/><a id="attribute-table_multi-deletion-spanned"/>table:multi-deletion-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:multi-deletion-spanned</span> attribute specifies the total number of deleted rows or columns when multiple columns or rows were deleted simultaneously. Each deleted row or column is represented by a <span class="Element">&lt;table:deletion&gt;</span> element. The first &lt;table:deletion element in a set representing a simultaneous deletion, shall carry a <span class="Attribute">table:multi-deletion-spanned</span> attribute that specifies the total number of deleted rows or columns.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:multi-deletion-spanned</span> attribute is usable with the following element: <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:multi-deletion-spanned</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_673table_name"><span style="margin-right:0.127cm;">19.673</span></a><a id="__RefHeading__1418488_253892949"/><a id="attribute-table_name"/>table:name</h2><h3 class="Heading_20_3"><a id="a19_673_1General"><span style="margin-right:0.127cm;">19.673.1</span></a><a id="__RefHeading__1418490_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies a name.</p><h3 class="Heading_20_3"><a id="a19_673_2_table_cell-range-source_"><span style="margin-right:0.127cm;">19.673.2</span></a><a id="__RefHeading__1418492_253892949"/><a id="attribute-table_name_element-table_cell-range-source"/>&lt;table:cell-range-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a source database range or named range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_3_table_content-validation_"><span style="margin-right:0.127cm;">19.673.3</span></a><a id="__RefHeading__1418494_253892949"/><a id="attribute-table_name_element-table_content-validation"/>&lt;table:content-validation&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a content validation rule. It is used to reference the validation rule from the cell the rule should applied. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:content-validation&gt;</span> <a href="#element-table_content-validation">9.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_4_table_data-pilot-group_"><span style="margin-right:0.127cm;">19.673.4</span></a><a id="__RefHeading__1418496_253892949"/><a id="attribute-table_name_element-table_data-pilot-group"/>&lt;table:data-pilot-group&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a group.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-group&gt;</span> <a href="#element-table_data-pilot-group">9.6.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_5_table_data-pilot-group-member_"><span style="margin-right:0.127cm;">19.673.5</span></a><a id="__RefHeading__1418498_253892949"/><a id="attribute-table_name_element-table_data-pilot-group-member"/>&lt;table:data-pilot-group-member&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a member.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-group-member&gt;</span> <a href="#element-table_data-pilot-group-member">9.6.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_6_table_data-pilot-member_"><span style="margin-right:0.127cm;">19.673.6</span></a><a id="__RefHeading__1418500_253892949"/><a id="attribute-table_name_element-table_data-pilot-member"/>&lt;table:data-pilot-member&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the value for which display information is specified.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-member&gt;</span> <a href="#element-table_data-pilot-member">9.6.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_7_table_data-pilot-table_"><span style="margin-right:0.127cm;">19.673.7</span></a><a id="__RefHeading__1418502_253892949"/><a id="attribute-table_name_element-table_data-pilot-table"/>&lt;table:data-pilot-table&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a data pilot table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_8_table_database-range_"><span style="margin-right:0.127cm;">19.673.8</span></a><a id="__RefHeading__1418504_253892949"/><a id="attribute-table_name_element-table_database-range"/>&lt;table:database-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a database range on which to perform operations. Within a single document, only one database range may have no name. This database range is created by the consumer and is used to filter or sort data in a cell ranges without the user creating a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_9_table_named-expression_"><span style="margin-right:0.127cm;">19.673.9</span></a><a id="__RefHeading__1418506_253892949"/><a id="attribute-table_name_element-table_named-expression"/>&lt;table:named-expression&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of an expression.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:named-expression&gt;</span> <a href="#element-table_named-expression">9.4.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_10_table_named-range_"><span style="margin-right:0.127cm;">19.673.10</span></a><a id="__RefHeading__1418508_253892949"/><a id="attribute-table_name_element-table_named-range"/>&lt;table:named-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a database range on which to perform operations. Within a single document, only one database range may have no name. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:named-range&gt;</span> <a href="#element-table_named-range">9.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_11_table_operation_"><span style="margin-right:0.127cm;">19.673.11</span></a><a id="__RefHeading__1418510_253892949"/><a id="attribute-table_name_element-table_operation"/>&lt;table:operation&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a detective operation. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:name</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">remove-dependents</span>: removes highlighting from cells that use the value of the current cell in their formula.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">remove-precedents</span>: removes highlighting from cells whose values are use in the formula of the current cell.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">trace-dependents</span>: highlights cells that use the value of the current cell in their formula.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">trace-errors</span>: highlights cells that cause an error while calculating the result of the current cell's formula.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">trace-precedents</span>: highlights cells whose values are use in the formula of the current cell.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The nature of the highlighting imposed or removed from cells as the result of detective operations is implementation-defined.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:operation&gt;</span> <a href="#element-table_operation">9.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:name</span> attribute are <span class="Attribute_20_Value">trace-dependents</span>, <span class="Attribute_20_Value">remove-dependents</span>, <span class="Attribute_20_Value">trace-precedents</span>, <span class="Attribute_20_Value">remove-precedents</span> or <span class="Attribute_20_Value">trace-errors</span>.</p><h3 class="Heading_20_3"><a id="a19_673_12_table_source-service_"><span style="margin-right:0.127cm;">19.673.12</span></a><a id="__RefHeading__1418512_253892949"/><a id="attribute-table_name_element-table_source-service"/>&lt;table:source-service&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a service. The value of this attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_13_table_table_"><span style="margin-right:0.127cm;">19.673.13</span></a><a id="__RefHeading__1418514_253892949"/><a id="attribute-table_name_element-table_table"/>&lt;table:table&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_673_14_table_table-template_"><span style="margin-right:0.127cm;">19.673.14</span></a><a id="__RefHeading__1418516_253892949"/><a id="attribute-table_name_element-table_table-template"/>&lt;table:table-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:name</span> attribute specifies the name of a table template.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:name</span> attribute is usable with the following element: <span class="Element">&lt;table:table-template&gt;</span> <a href="#element-table_table-template">16.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_674table_null-year"><span style="margin-right:0.127cm;">19.674</span></a><a id="__RefHeading__1418518_253892949"/><a id="attribute-table_null-year"/>table:null-year</h2><p class="Text_20_body">The <span class="Attribute">table:null-year</span> attribute specifies the start year for year values that contain only two digits. All two digit year values are interpreted as a year that is the same as or follows the start year.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1930</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:null-year</span> attribute is usable with the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:null-year</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_675table_number-columns-repeated"><span style="margin-right:0.127cm;">19.675</span></a><a id="__RefHeading__1418520_253892949"/><a id="attribute-table_number-columns-repeated"/>table:number-columns-repeated</h2><h3 class="Heading_20_3"><a id="a19_675_1General"><span style="margin-right:0.127cm;">19.675.1</span></a><a id="__RefHeading__1418522_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:number-columns-repeated</span> attribute specifies the repetition of columns.</p><h3 class="Heading_20_3"><a id="a19_675_2_table_covered-table-cell_"><span style="margin-right:0.127cm;">19.675.2</span></a><a id="__RefHeading__1418524_253892949"/><a id="attribute-table_number-columns-repeated_element-table_covered-table-cell"/>&lt;table:covered-table-cell&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:number-columns-repeated</span> attribute specifies the number of successive columns in which a cell is repeated. It may be used to describe two or more adjoining cells with a single cell element, if they meet the following conditions:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The cells contain the same content and style.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The cells are not merged horizontally or vertically.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:number-columns-repeated</span> attribute is usable with the following element: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-columns-repeated</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_675_3_table_table-cell_"><span style="margin-right:0.127cm;">19.675.3</span></a><a id="__RefHeading__1418526_253892949"/><a id="attribute-table_number-columns-repeated_element-table_table-cell"/>&lt;table:table-cell&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:number-columns-repeated</span> attribute specifies the number of successive columns in which a cell is repeated. It may be used to describe two or more adjoining cells with a single cell element, if they meet the following conditions:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The cells contain the same content and style.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The cells are not merged horizontally or vertically.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:number-columns-repeated</span> attribute is usable with the following element: <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-columns-repeated</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_675_4_table_table-column_"><span style="margin-right:0.127cm;">19.675.4</span></a><a id="__RefHeading__1418528_253892949"/><a id="attribute-table_number-columns-repeated_element-table_table-column"/>&lt;table:table-column&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:number-columns-repeated</span> attribute specifies the number of columns to which a column description applies. If two or more columns are adjoining, and have the same style, this attribute may be used to describe them with a single <span class="Element">&lt;table:table-column&gt;</span> element.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:number-columns-repeated</span> attribute is usable with the following element: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-columns-repeated</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_676table_number-columns-spanned"><span style="margin-right:0.127cm;">19.676</span></a><a id="__RefHeading__1418530_253892949"/><a id="attribute-table_number-columns-spanned"/>table:number-columns-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:number-columns-spanned</span> attribute specifies the number of columns that a cell spans.</p><p class="Text_20_body">When a cell covers another cell because of a column or row span value greater than one, a <span class="Element">&lt;table:covered-table-cell&gt;</span> element shall appear in the table to represent the covered cell.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:number-columns-spanned</span> attribute is usable with the following element: <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-columns-spanned</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_677table_number-rows-repeated"><span style="margin-right:0.127cm;">19.677</span></a><a id="__RefHeading__1418532_253892949"/><a id="attribute-table_number-rows-repeated"/>table:number-rows-repeated</h2><p class="Text_20_body">The <span class="Attribute">table:number-rows-repeated</span> attribute specifies the number of rows to which a row element applies. If two or more rows are adjoining, and have the same content and style, and do not contain vertically merged cells, they may be described by a single <span class="Element">&lt;table:table-row&gt;</span> element that has a <span class="Attribute">table:number-rows-repeated</span> attribute with a value greater than 1.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:number-rows-repeated</span> attribute is usable with the following element: <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-rows-repeated</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_678table_number-rows-spanned"><span style="margin-right:0.127cm;">19.678</span></a><a id="__RefHeading__1418534_253892949"/><a id="attribute-table_number-rows-spanned"/>table:number-rows-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:number-rows-spanned</span> attribute specifies the number of columns that a cell spans.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:number-rows-spanned</span> attribute is usable with the following element: <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-rows-spanned</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_679table_number-matrix-columns-spanned"><span style="margin-right:0.127cm;">19.679</span></a><a id="__RefHeading__1418536_253892949"/><a id="attribute-table_number-matrix-columns-spanned"/>table:number-matrix-columns-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:number-matrix-columns-spanned</span> attribute specifies the number of rows spanned by a matrix.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:number-matrix-columns-spanned</span> attribute is usable with the following elements: <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-matrix-columns-spanned</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_680table_number-matrix-rows-spanned"><span style="margin-right:0.127cm;">19.680</span></a><a id="__RefHeading__1418538_253892949"/><a id="attribute-table_number-matrix-rows-spanned"/>table:number-matrix-rows-spanned</h2><p class="Text_20_body">The <span class="Attribute">table:number-matrix-rows-spanned</span> attribute specifies the number of rows spanned by a matrix.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:number-matrix-rows-spanned</span> attribute is usable with the following elements: <span class="Element">&lt;table:change-track-table-cell&gt;</span> <a href="#element-table_change-track-table-cell">9.9.16</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:number-matrix-rows-spanned</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_681table_object-name"><span style="margin-right:0.127cm;">19.681</span></a><a id="__RefHeading__1418540_253892949"/><a id="attribute-table_object-name"/>table:object-name</h2><p class="Text_20_body">The <span class="Attribute">table:object-name</span> attribute specifies the name of the object in the source which contains the data and is passed to the service implementation. Its value is implementation-dependent and service specific.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:object-name</span> attribute is usable with the following element: <span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:object-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_682table_on-update-keep-size"><span style="margin-right:0.127cm;">19.682</span></a><a id="__RefHeading__1418542_253892949"/><a id="attribute-table_on-update-keep-size"/>table:on-update-keep-size</h2><p class="Text_20_body">The <span class="Attribute">table:on-update-keep-size</span> attribute specifies the behavior of a database range if the size of the data in the data source changes. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:on-update-keep-size</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: range does not retain its size.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: range retains its size.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:on-update-keep-size</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:on-update-keep-size</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_683table_on-update-keep-styles"><span style="margin-right:0.127cm;">19.683</span></a><a id="__RefHeading__1418544_253892949"/><a id="attribute-table_on-update-keep-styles"/>table:on-update-keep-styles</h2><p class="Text_20_body">The <span class="Attribute">table:on-update-keep-styles</span> attribute specifies the behavior if the database range is updated. If the attribute value is “true”, the cell styles that are assigned to the cells in the first non-label row of the database range are used for all rows with in the database range. If the attribute value is “false”, all cells in the database range get the default cell style of the document assigned.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:on-update-keep-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: all cells in the database range get the default cell style of the document assigned.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cell styles that are assigned to the cells in the first non-label row of the database range are used for all rows with in the database range.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:on-update-keep-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:on-update-keep-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_684table_operator"><span style="margin-right:0.127cm;">19.684</span></a><a id="__RefHeading__1418546_253892949"/><a id="attribute-table_operator"/>table:operator</h2><p class="Text_20_body">The <span class="Attribute">table:operator</span> attribute specifies the operator to use in a filter condition. Each cell contained in columns specified by a field number (<span class="Attribute">table:field-number</span> attribute) is compared to a value (<span class="Attribute">table:value</span> attribute) using the specified operator. The result of this comparison is the result of the filter sub-conditions specified by a <span class="Element">&lt;table:filter-condition&gt;</span> element.</p><p class="Text_20_body">The defined operators that use regular expressions are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">match</span> (matches)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Instance">!match</span> (does not match)<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">table:value</span> attribute contains the regular expression. </p><p class="Text_20_body">Regular expressions are implementation-dependent expressions that, at a minimum, conform to the requirements of Conformance Clause C1 of <a title="Unicode Regular Expressions" href="http://www.unicode.org/reports/tr18/tr18-13.html">[UTR18]</a>.</p><p class="Text_20_body">The defined operators that do not use regular expressions are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">=</span> (Equal to)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">!=</span> (Not equal to)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">&lt;</span> (Less than)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">&gt;</span> (Greater than)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">&lt;=</span> (Less than or equal to)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">&gt;=</span> (Greater than or equal to)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">begins</span> (begins with)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">contains</span> (contains)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">!contains</span> (does not contain)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">ends</span> (ends with)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">!begins</span> (does not begin with)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">!ends</span> (does not end with)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">bottom percent</span> (like <span class="Attribute_20_Value_20_Fragment">bottom values</span>, except that the <span class="Attribute">office:value</span> attribute specifies the number of cells for which the condition is true as a percentage)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">bottom values</span> (true for the <span class="Formula">n</span> cells that have the smallest value, where <span class="Formula">n</span> is the value of the <span class="Attribute">office:value</span> attribute)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">empty</span> (<span class="Attribute_20_Value_20_Fragment">true</span> for empty cells)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">!empty</span> (<span class="Attribute_20_Value_20_Fragment">true</span> for non-empty cells)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">top percent</span> (like <span class="Attribute_20_Value_20_Fragment">bottom percent</span>, but for the largest values)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value_20_Fragment">top values</span> (like <span class="Attribute_20_Value_20_Fragment">bottom values</span>, but for the largest values)<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Depending on the value of the <span class="Attribute">table:data-type</span> attribute, all operations take place on string or numeric values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:operator</span> attribute is usable with the following element: <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:operator</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_685table_order"><span style="margin-right:0.127cm;">19.685</span></a><a id="__RefHeading__1418548_253892949"/><a id="attribute-table_order"/>table:order</h2><p class="Text_20_body">The <span class="Attribute">table:order</span> attribute specifies a sort order should be in ascending or descending order.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:order</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ascending</span>: sorting of values should be in ascending order.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">d</span><span class="Attribute_20_Value">escending</span>: sorting of values should be in descending order.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note</span>: Sorting is locale and implementation-dependent.</p><p class="Default_20_Value_borderStart">For <span class="Element">&lt;table:sort-by&gt;</span> <a href="#element-table_sort-by">9.4.20</a> and <span class="Element">&lt;table:sort-groups&gt;</span> <a href="#element-table_sort-groups">9.4.22</a> elements the default value for this attribute is <span class="Attribute_20_Value">ascending</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:order</span> attribute is usable with the following elements: <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> <a href="#element-table_data-pilot-sort-info">9.6.14</a>, <span class="Element">&lt;table:sort-by&gt;</span> <a href="#element-table_sort-by">9.4.20</a> and <span class="Element">&lt;table:sort-groups&gt;</span> <a href="#element-table_sort-groups">9.4.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:order</span> attribute are <span class="Attribute_20_Value">ascending</span> or <span class="Attribute_20_Value">descending</span>.</p><h2 class="Heading_20_2"><a id="a19_686table_orientation"><span style="margin-right:0.127cm;">19.686</span></a><a id="__RefHeading__1418550_253892949"/><a id="attribute-table_orientation"/>table:orientation</h2><h3 class="Heading_20_3"><a id="a19_686_1General"><span style="margin-right:0.127cm;">19.686.1</span></a><a id="__RefHeading__1418552_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:orientation</span> attribute specifies the sorting of tables.</p><h3 class="Heading_20_3"><a id="a19_686_2_table_data-pilot-field_"><span style="margin-right:0.127cm;">19.686.2</span></a><a id="__RefHeading__1418554_253892949"/><a id="attribute-table_orientation_element-table_data-pilot-field"/>&lt;table:data-pilot-field&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:orientation</span> attribute specifies the orientation of a source field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:orientation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: field specifies a category column<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">data</span>: field specifies a data column<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hidden</span>: field has a corresponding column in a data pilot's source but are not visible in the data pilot table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">page</span>: specifies that an automatic filter (one that allows to choose one of the values that are contained in the column) should be generated for the corresponding column. In that case, an additional field with row, column or data orientation shall exist for the column. The <span class="Attribute">table:selected-page</span> attribute specifies which value is selected for the filter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">row</span>: specifies a category column<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:orientation</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:orientation</span> attribute are <span class="Attribute_20_Value">row</span>, <span class="Attribute_20_Value">column</span>, <span class="Attribute_20_Value">data</span>, <span class="Attribute_20_Value">hidden</span> or <span class="Attribute_20_Value">page</span>.</p><h3 class="Heading_20_3"><a id="a19_686_3_table_database-range_"><span style="margin-right:0.127cm;">19.686.3</span></a><a id="__RefHeading__1418556_253892949"/><a id="attribute-table_orientation_element-table_database-range"/>&lt;table:database-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:orientation</span> attribute specifies whether data fields are organized in row or columns.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:orientation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: organization is by columns<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">row</span>: organization is by rows<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a> element the default value for this attribute is <span class="Attribute_20_Value">row</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:orientation</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:orientation</span> attribute are <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">row</span>.</p><h3 class="Heading_20_3"><a id="a19_686_4_table_label-range_"><span style="margin-right:0.127cm;">19.686.4</span></a><a id="__RefHeading__1418558_253892949"/><a id="attribute-table_orientation_element-table_label-range"/>&lt;table:label-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:orientation</span> attribute specifies whether labels label rows or columns. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:orientation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: label range oriented by column<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">row</span>: label range oriented by row<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:orientation</span> attribute is usable with the following element: <span class="Element">&lt;table:label-range&gt;</span> <a href="#element-table_label-range">9.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:orientation</span> attribute are <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">row</span>.</p><h2 class="Heading_20_2"><a id="a19_687table_page-breaks-on-group-change"><span style="margin-right:0.127cm;">19.687</span></a><a id="__RefHeading__1418560_253892949"/><a id="attribute-table_page-breaks-on-group-change"/>table:page-breaks-on-group-change</h2><p class="Text_20_body">The <span class="Attribute">table:page-breaks-on-group-change</span> attribute specifies whether to insert a page break after the subtotal for each group.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:page-breaks-on-group-change</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: page breaks are not inserted after subtotals for a group.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: page breaks are inserted after subtotals for a group.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:page-breaks-on-group-change</span> attribute is usable with the following element: <span class="Element">&lt;table:subtotal-rules&gt;</span> <a href="#element-table_subtotal-rules">9.4.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:page-breaks-on-group-change</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_688table_paragraph-style-name"><span style="margin-right:0.127cm;">19.688</span></a><a id="__RefHeading__1418562_253892949"/><a id="attribute-table_paragraph-style-name"/>table:paragraph-style-name</h2><p class="Text_20_body">The <span class="Attribute">table:paragraph-style-name</span> attribute specifies the paragraph style which should be applied to the empty paragraphs created in cells for tables created from a template.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:paragraph-style-name</span> attribute is usable with the following elements: <span class="Element">&lt;table:body&gt;</span> <a href="#element-table_body">16.19.6</a>, <span class="Element">&lt;table:even-columns&gt;</span> <a href="#element-table_even-columns">16.19.9</a>, <span class="Element">&lt;table:even-rows&gt;</span> <a href="#element-table_even-rows">16.19.7</a>, <span class="Element">&lt;table:first-column&gt;</span> <a href="#element-table_first-column">16.19.4</a>, <span class="Element">&lt;table:first-row&gt;</span> <a href="#element-table_first-row">16.19.2</a>, <span class="Element">&lt;table:last-column&gt;</span> <a href="#element-table_last-column">16.19.5</a>, <span class="Element">&lt;table:last-row&gt;</span> <a href="#element-table_last-row">16.19.3</a>, <span class="Element">&lt;table:odd-columns&gt;</span> <a href="#element-table_odd-columns">16.19.10</a> and <span class="Element">&lt;table:odd-rows&gt;</span> <a href="#element-table_odd-rows">16.19.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:paragraph-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_689table_parse-sql-statement"><span style="margin-right:0.127cm;">19.689</span></a><a id="__RefHeading__1418564_253892949"/><a id="attribute-table_parse-sql-statement"/>table:parse-sql-statement</h2><p class="Text_20_body">A <span class="Attribute">table:parse-sql-statement</span> attribute specifies whether the consumer will parse SQL statements.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:parse-sql-statement</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumer does not parse SQL statements.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumer parses SQL statements.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:parse-sql-statement</span> attribute is usable with the following element: <span class="Element">&lt;table:database-source-sql&gt;</span> <a href="#element-table_database-source-sql">9.4.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:parse-sql-statement</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_690table_password"><span style="margin-right:0.127cm;">19.690</span></a><a id="__RefHeading__1418566_253892949"/><a id="attribute-table_password"/>table:password</h2><p class="Text_20_body">The <span class="Attribute">table:password</span> attribute specifies the password needed to access the source. It is passed to the service implementation. Its value is implementation-dependent and service specific.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:password</span> attribute is usable with the following element: <span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:password</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_691table_position"><span style="margin-right:0.127cm;">19.691</span></a><a id="__RefHeading__1418568_253892949"/><a id="attribute-table_position"/>table:position</h2><p class="Text_20_body">The <span class="Attribute">table:position</span> attribute specifies the position where an insertion or deletion was made in a table. Depending on the type of insertion or deletion, the value is the number of a row, a column or a table.</p><p class="Text_20_body">If multiple rows or columns get deleted, the <span class="Attribute">table:start-position</span> and <span class="Attribute">table:end-position</span> attributes contain the number of the first (inclusive) and last (exclusive) deleted rows or columns.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:position</span> attribute is usable with the following elements: <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a>, <span class="Element">&lt;table:insertion-cut-off&gt;</span> <a href="#element-table_insertion-cut-off">9.9.11</a> and <span class="Element">&lt;table:movement-cut-off&gt;</span> <a href="#element-table_movement-cut-off">9.9.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_692table_precision-as-shown"><span style="margin-right:0.127cm;">19.692</span></a><a id="__RefHeading__1418570_253892949"/><a id="attribute-table_precision-as-shown"/>table:precision-as-shown</h2><p class="Text_20_body">The <span class="Attribute">table:precision-as-shown</span> attribute specifies whether to perform a calculation using the rounded values displayed in the spreadsheet or using all of the digits in a value. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:precision-as-shown</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: calculations are performed using all of the digits in values, but the result is displayed as a rounded number.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: calculations are performed using the rounded values displayed in the spreadsheet.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:precision-as-shown</span> attribute is usable with the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:precision-as-shown</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_693table_print"><span style="margin-right:0.127cm;">19.693</span></a><a id="__RefHeading__1418572_253892949"/><a id="attribute-table_print"/>table:print</h2><p class="Text_20_body">The <span class="Attribute">table:print</span> attribute specifies if a table will be printed. The <span class="Attribute">table:print</span> attribute value is overridden by the <span class="Attribute">table:display</span> attribute. If the table is not displayed, it will also not be printed.</p><p class="Text_20_body">If a table is printed, the table range printed can be specified by the <span class="Attribute">table:print-ranges</span> attribute. If there is no <span class="Attribute">table:print-ranges</span> attribute or it has no value specified, the non-empty portion of a table will be printed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:print</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table can not be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table can be printed.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:print</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:print</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_694table_print-ranges"><span style="margin-right:0.127cm;">19.694</span></a><a id="__RefHeading__1418574_253892949"/><a id="attribute-table_print-ranges"/>table:print-ranges</h2><p class="Text_20_body">The <span class="Attribute">table:print-ranges</span> attribute specifies print ranges of a table. Print ranges define the cells that will be printed. It contains a list of cell addresses or cell range addresses.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:print-ranges</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:print-ranges</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_695table_protect__deprecated_"><span style="margin-right:0.127cm;">19.695</span></a><a id="__RefHeading__1418576_253892949"/><a id="attribute-table_protect"/>table:protect (deprecated) </h2><p class="Text_20_body">The <span class="Attribute">table:protect</span> attribute specifies whether a table cell is protected. Users can not edit the content of a cell that is marked as protected.</p><p class="Text_20_body">This attribute is deprecated in favor of the <span class="Attribute">table:protected</span> attribute. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:protect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cell is not protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cell is protected.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:protect</span> attribute is usable with the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> and <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:protect</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_696table_protected"><span style="margin-right:0.127cm;">19.696</span></a><a id="__RefHeading__1418578_253892949"/><a id="attribute-table_protected"/>table:protected</h2><h3 class="Heading_20_3"><a id="a19_696_1General"><span style="margin-right:0.127cm;">19.696.1</span></a><a id="__RefHeading__1418580_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:protected</span> attribute specifies protection for tables.</p><h3 class="Heading_20_3"><a id="a19_696_2_table_covered-table-cell_"><span style="margin-right:0.127cm;">19.696.2</span></a><a id="__RefHeading__1418582_253892949"/><a id="DDE_LINK17"/><a id="line-2411"/><a id="line-2511"/><a id="line-261"/><a id="line-271"/><a id="attribute-table_protected_element-table_covered-table-cell"/>&lt;table:covered-table-cell&gt; </h3><p class="Text_20_body">The <span class="Attribute">table:protected</span> attribute specifies whether a table cell is protected. Users can not edit the content of a cell that is marked as protected. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:protected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cell is not protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="line-291"/><a id="line-281"/><span class="Attribute_20_Value">true</span>: cell is protected.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a> element the default value for this attribute is <span class="Attribute_20_Value">false</span>. <a id="line-3111"/><a id="line-3011"/></p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:protected</span> attribute is usable with the following element: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h3 class="Heading_20_3"><a id="a19_696_3_table_scenario_"><span style="margin-right:0.127cm;">19.696.3</span></a><a id="__RefHeading__1418584_253892949"/><a id="attribute-table_protected_element-table_scenario"/>&lt;table:scenario&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:protected</span> attribute specifies specifies whether the data that is displayed within the scenario is protected from being edited. The attribute is only evaluated if the table on which the scenario displayed is also protected. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:protected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data is not protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data is protected.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:protected</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h3 class="Heading_20_3"><a id="a19_696_4_table_table_"><span style="margin-right:0.127cm;">19.696.4</span></a><a id="__RefHeading__1418586_253892949"/><a id="attribute-table_protected_element-table_table"/>&lt;table:table&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:protected</span> attribute specifies whether a table is protected from editing. If the table is protected, the <span class="Attribute">table:protection-key</span> attribute can specify an authorization requirement for resetting the protection to enable editing. <a href="#attribute-table_protection-key">19.697</a> For a protected table, the protection of table cells may be controlled individually by the <span class="Attribute">style:cell-protect</span> attribute. <a href="#property-style_cell-protect">20.246</a> Table cells are protected only if they have a table cell style assigned whose <span class="Attribute">style:cell-protect</span> attribute value is different than <span class="Attribute_20_Value">none</span>. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:protected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table is not protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table is protected.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:protected</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List">The <span class="Attribute">table:protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><p class="Default_20_Value_borderEnd">For a <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a> element the default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><h3 class="Heading_20_3"><a id="a19_696_5_table_table-cell_"><span style="margin-right:0.127cm;">19.696.5</span></a><a id="__RefHeading__1418588_253892949"/><a id="attribute-table_protected_element-table_table-cell"/><a id="line-241"/><a id="line-251"/><a id="line-26"/><a id="line-27"/>&lt;table:table-cell&gt; </h3><p class="Text_20_body">The <span class="Attribute">table:protected</span> attribute specifies whether a table cell is protected. Users can not edit the content of a cell that is marked as protected. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:protected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cell is not protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="line-29"/><a id="line-28"/><span class="Attribute_20_Value">true</span>: cell is protected.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a> element the default value for this attribute is <span class="Attribute_20_Value">false</span>. <a id="line-311"/><a id="line-301"/></p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:protected</span> attribute is usable with the following element: <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_697table_protection-key"><span style="margin-right:0.127cm;">19.697</span></a><a id="__RefHeading__1418590_253892949"/><a id="attribute-table_protection-key"/>table:protection-key</h2><p class="Text_20_body">The <span class="Attribute">table:protection-key</span> attribute, when present, specifies that an authorization is required for removing the protection of a table, table cell or scenario. The authentication procedure is identified by the <span class="Attribute">table:protection-key-digest-algorithm</span> attribute. <a href="#attribute-table_protection-key-digest-algorithm">19.698</a> The attribute value is binary data that may be used by the authentication procedure.</p><p class="Text_20_body">The password shall be provided as a sequence of bytes in UTF-8 encoding. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:protection-key</span> attribute is usable with the following elements: <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:protection-key</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_698table_protection-key-digest-algorithm"><span style="margin-right:0.127cm;">19.698</span></a><a id="__RefHeading__1418592_253892949"/><a id="attribute-table_protection-key-digest-algorithm"/>table:protection-key-digest-algorithm</h2><p class="Text_20_body">The <span class="Attribute">table:protection-key-digest-algorithm</span> attribute value is an IRI that identifies an authentication procedure for removing a protection.</p><p class="Text_20_body">If the IRI identifies a message-digest algorithm specified in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a>, the value of <span class="Attribute">table:protection-key</span> attribute shall be the hash value of the password that is required to authorize removal of the protection. The password shall be provided as a sequence of bytes in UTF-8 encoding. </p><p class="Text_20_body">Any other procedures, their identifying IRIs, and their application of <span class="Attribute">table:protection-key</span> values are implementation-defined.</p><p class="Text_20_body">Consumers shall support http://www.w3.org/2000/09/xmldsig#sha1<a href="http://www.w3.org/2000/09/xmldsig#sha1,">,</a> which is the default, and http://www.w3.org/2000/09/xmldsig#sha256. They may support other algorithms described in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a> or alternative procedures. Producers should use http://www.w3.org/2000/09/xmldsig#sha256. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">http://www.w3.org/2000/09/xmldsig#sha1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:protection-key-digest-algorithm</span> attribute is usable with the following elements: <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a> and <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:protection-key-digest-algorithm</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h2 class="Heading_20_2"><a id="a19_699table_query-name"><span style="margin-right:0.127cm;">19.699</span></a><a id="__RefHeading__1418594_253892949"/><a id="attribute-table_query-name"/>table:query-name</h2><p class="Text_20_body">A <span class="Attribute">table:query-name</span> attribute specifies a query to perform on a database whose data is being imported.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:query-name</span> attribute is usable with the following element: <span class="Element">&lt;table:database-source-query&gt;</span> <a href="#element-table_database-source-query">9.4.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:query-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_700table_range-usable-as"><span style="margin-right:0.127cm;">19.700</span></a><a id="__RefHeading__1418596_253892949"/><a id="attribute-table_range-usable-as"/>table:range-usable-as</h2><p class="Text_20_body">The <span class="Attribute">table:range-usable-as</span> attribute specifies whether the name of the range can be used within the specification of a print range, a filter, a repeating row, or a repeat column. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:range-usable-as</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a white space-separated list that consists of any of the values <span class="Attribute_20_Value">print-range</span>, <span class="Attribute_20_Value">filter</span>, <span class="Attribute_20_Value">repeat-row</span> or <span class="Attribute_20_Value">repeat-column</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:range-usable-as</span> attribute is usable with the following element: <span class="Element">&lt;table:named-range&gt;</span> <a href="#element-table_named-range">9.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:range-usable-as</span> attribute are <span class="Attribute_20_Value">none</span>, or white space separated non-empty lists of one of these values: <span class="Attribute_20_Value">print-range</span>, <span class="Attribute_20_Value">filter</span>, <span class="Attribute_20_Value">repeat-row</span>, or <span class="Attribute_20_Value">repeat-column</span>..</p><h2 class="Heading_20_2"><a id="a19_701table_refresh-delay"><span style="margin-right:0.127cm;">19.701</span></a><a id="__RefHeading__1418598_253892949"/><a id="attribute-table_refresh-delay"/>table:refresh-delay</h2><p class="Text_20_body">The <span class="Attribute">table:refresh-delay</span> attribute specifies a time delay between automatic refresh actions.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:refresh-delay</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a> and <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:refresh-delay</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_702table_rejecting-change-id"><span style="margin-right:0.127cm;">19.702</span></a><a id="__RefHeading__1418600_253892949"/><a id="attribute-table_rejecting-change-id"/>table:rejecting-change-id</h2><p class="Text_20_body">The <span class="Attribute">table:rejecting-change-id</span> attribute specifies the id of a previously tracked change that has been rejected. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:rejecting-change-id</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-content-change&gt;</span> <a href="#element-table_cell-content-change">9.9.17</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a> and <span class="Element">&lt;table:movement&gt;</span> <a href="#element-table_movement">9.9.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:rejecting-change-id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_703table_rfc-language-tag"><span style="margin-right:0.127cm;">19.703</span></a><a id="__RefHeading__1418602_253892949"/><a id="attribute-table_rfc-language-tag"/>table:rfc-language-tag</h2><p class="Text_20_body">The <span class="Attribute">table:rfc-language-tag</span> attribute specifies a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">It shall only be used if its value can not be expressed as a valid combination of the <span class="Attribute">table:language</span>, <span class="Attribute">table:script</span> and <span class="Attribute">table:country</span> attributes.</p><p class="Text_20_body">Producers may add support for consumers that don't support the <span class="Attribute">table:rfc-language-tag</span> attribute by specifying <span class="Attribute">table:language</span>, <span class="Attribute">table:script</span> and <span class="Attribute">table:country</span> attributes with values that are implementation-dependent. </p><p class="Text_20_body">The <span class="Attribute">table:rfc-language-tag</span> attribute augments the <span class="Attribute">table:language</span>, <span class="Attribute">table:script</span> and <span class="Attribute">table:country</span> attributes. It shall only be used if its value could not be expressed as a valid combination of those. The value shall be a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors. If a fall-back is provided for consumers that do not support the <span class="Attribute">table:rfc-language-tag</span> attribute, producers should add <span class="Attribute">table:language</span>, <span class="Attribute">table:script</span> and <span class="Attribute">table:country</span> attributes whose values are as close as possible to the value of the <span class="Attribute">table:rfc-language-tag</span> attribute. Producers shall not use values for these attributes that contradict the value of the <span class="Attribute">table:rfc-language-tag</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:rfc-language-tag</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:rfc-language-tag</span> attribute has the data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h2 class="Heading_20_2"><a id="a19_704table_row"><span style="margin-right:0.127cm;">19.704</span></a><a id="__RefHeading__1418604_253892949"/><a id="attribute-table_row"/>table:row</h2><p class="Text_20_body">The <span class="Attribute">table:row</span> attribute specifies the row number of a cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:row</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-address&gt;</span> <a href="#element-table_cell-address">9.9.18</a>, <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:row</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_705table_scenario-ranges"><span style="margin-right:0.127cm;">19.705</span></a><a id="__RefHeading__1418606_253892949"/><a id="attribute-table_scenario-ranges"/>table:scenario-ranges</h2><p class="Text_20_body">The <span class="Attribute">table:scenario-ranges</span> attribute specifies the table range that is displayed as a scenario. The value of this attribute is a white space separated list of cell range addresses.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:scenario-ranges</span> attribute is usable with the following element: <span class="Element">&lt;table:scenario&gt;</span> <a href="#element-table_scenario">9.2.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:scenario-ranges</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_706table_script"><span style="margin-right:0.127cm;">19.706</span></a><a id="__RefHeading__1418608_253892949"/><a id="attribute-table_script"/>table:script</h2><p class="Text_20_body">The <span class="Attribute">table:script</span> attribute specifies the script information for the natural language in which comparisons will occur. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:script</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:script</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h2 class="Heading_20_2"><a id="a19_707table_search-criteria-must-apply-to-whole-cell"><span style="margin-right:0.127cm;">19.707</span></a><a id="__RefHeading__1418610_253892949"/><a id="attribute-table_search-criteria-must-apply-to-whole-cell"/>table:search-criteria-must-apply-to-whole-cell</h2><p class="Text_20_body">The <span class="Attribute">table:search-criteria-must-apply-to-whole-cell</span> attribute specifies whether a search pattern matches the entire content of a cell.</p><p class="Note"><span class="Note_20_Label">Note:</span> The <span class="Attribute">table:search-criteria-must-apply-to-whole-cell</span> is used with the <span class="Element">&lt;table:filter-condition&gt;</span> element when the <span class="Attribute">table:data-type</span> attribute has the value <span class="Attribute_20_Value">text</span> and the <span class="Attribute">table:operator</span> attribute has a value of: <span class="Attribute_20_Value_20_Fragment">match</span>, <span class="Attribute_20_Value_20_Fragment">!match</span>, <span class="Attribute_20_Value_20_Fragment">=</span>, or <span class="Attribute_20_Value_20_Fragment">!=</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:search-criteria-must-apply-to-whole-cell</span> are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: search pattern can match a substring at any position within a cell. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: search pattern must match entire content of a cell. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:search-criteria-must-apply-to-whole-cell</span> attribute is usable with the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:search-criteria-must-apply-to-whole-cell</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_708table_selected-page"><span style="margin-right:0.127cm;">19.708</span></a><a id="__RefHeading__1418612_253892949"/><a id="attribute-table_selected-page"/>table:selected-page</h2><p class="Text_20_body">The <span class="Attribute">table:selected-page</span> attribute specifies which value is selected for an automatic filter.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:selected-page</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:selected-page</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_709table_show-details"><span style="margin-right:0.127cm;">19.709</span></a><a id="__RefHeading__1418614_253892949"/><a id="attribute-table_show-details"/>table:show-details</h2><p class="Text_20_body">The <span class="Attribute">table:show-details</span> attribute specifies whether additional fields are displayed for a member. This attribute changes the behavior of a data pilot only if there are multiple fields with the orientation row or column.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:show-details</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: field with a row or column orientation that is not the last field with this orientation, no members are displayed for following fields with the same orientation. Data displayed for these fields is summarized using a function specified by the data pilot's function attribute. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: field with a row or column orientation that is not the last field with this orientation, members are displayed for following fields with the same orientation.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:show-details</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-member&gt;</span> <a href="#element-table_data-pilot-member">9.6.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:show-details</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_710table_show-empty"><span style="margin-right:0.127cm;">19.710</span></a><a id="__RefHeading__1418616_253892949"/><a id="attribute-table_show-empty"/>table:show-empty</h2><p class="Text_20_body">The <span class="Attribute">table:show-empty</span> attribute specifies whether fields that do not have any members should be displayed. If this attribute is not present, it is implementation-defined whether fields without members are displayed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:show-details</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: fields without members are not displayed. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: fields without members are displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:show-empty</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-level&gt;</span> <a href="#element-table_data-pilot-level">9.6.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:show-empty</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_711table_show-filter-button"><span style="margin-right:0.127cm;">19.711</span></a><a id="__RefHeading__1418618_253892949"/><a id="attribute-table_show-filter-button"/>table:show-filter-button</h2><p class="Text_20_body">The <span class="Attribute">table:show-filter-button</span> attribute specifies whether a filter button is shown in the UI for a data pilot table. A filter button displays a user interface for a filter if pushed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:show-filter-button</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: filter button is not shown in UI. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: filter button is shown in UI.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:show-filter-button</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:show-filter-button</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_712table_sort-mode"><span style="margin-right:0.127cm;">19.712</span></a><a id="__RefHeading__1418620_253892949"/><a id="attribute-table_sort-mode"/>table:sort-mode</h2><p class="Text_20_body">The <span class="Attribute">table:sort-mode</span> attribute specifies how to sort the members of a single data pilot field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:sort-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">data</span>: fields are sorted by values in the data field specified by a <span class="Attribute">table:data-field</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">manual</span>: fields are sorted by a user<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name</span>: fields are sorted by name of the field<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: fields are not sorted.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:sort-mode</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-sort-info&gt;</span> <a href="#element-table_data-pilot-sort-info">9.6.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:sort-mode</span> attribute are <span class="Attribute_20_Value">data</span>, <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">manual</span> or <span class="Attribute_20_Value">name</span>.</p><h2 class="Heading_20_2"><a id="a19_713table_source-cell-range-addresses"><span style="margin-right:0.127cm;">19.713</span></a><a id="__RefHeading__1418622_253892949"/><a id="attribute-table_source-cell-range-addresses"/>table:source-cell-range-addresses</h2><p class="Text_20_body">The <span class="Attribute">table:source-cell-range-addresses</span> attribute specifies source cell ranges.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:source-cell-range-addresses</span> attribute is usable with the following element: <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:source-cell-range-addresses</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a19_714table_source-field-name"><span style="margin-right:0.127cm;">19.714</span></a><a id="__RefHeading__1418624_253892949"/><a id="attribute-table_source-field-name"/>table:source-field-name</h2><p class="Text_20_body">The <span class="Attribute">table:source-field-name</span> attribute specifies the name or label of a column that connects to a field.</p><p class="Text_20_body">There can be multiple <span class="Element">&lt;table:data-pilot-field&gt;</span> elements with the same value for this attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:source-field-name</span> attribute is usable with the following elements: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a> and <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:source-field-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_715table_source-name"><span style="margin-right:0.127cm;">19.715</span></a><a id="__RefHeading__1418626_253892949"/><a id="attribute-table_source-name"/>table:source-name</h2><p class="Text_20_body">The <span class="Attribute">table:source-name</span> attribute specifies a source name that is passed to the service implementation. Its value is implementation-dependent and service specific.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:source-name</span> attribute is usable with the following element: <span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:source-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_716table_sql-statement"><span style="margin-right:0.127cm;">19.716</span></a><a id="__RefHeading__1418628_253892949"/><a id="attribute-table_sql-statement"/>table:sql-statement</h2><p class="Text_20_body">An <span class="Attribute">table:sql-statement</span> attribute specifies the SQL statement to use when importing data from an SQL database.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:sql-statement</span> attribute is usable with the following element: <span class="Element">&lt;table:database-source-sql&gt;</span> <a href="#element-table_database-source-sql">9.4.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:sql-statement</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_717table_start"><span style="margin-right:0.127cm;">19.717</span></a><a id="__RefHeading__1418630_253892949"/><a id="attribute-table_start"/>table:start</h2><p class="Text_20_body">The <span class="Attribute">table:start</span> attribute specifies the start value for a grouping of numeric values. All values that are lower than the start value are contained in a single group, while values that are equal to or higher than the start value are grouped as specified by the <span class="Attribute">table:grouped-by</span> and <span class="Attribute">table:step</span> attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:start</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the lowest value of the field is used as the start value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">double</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:start</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:start</span> attribute are a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a> or <span class="Attribute_20_Value">auto</span>.</p><h2 class="Heading_20_2"><a id="a19_718table_start-column"><span style="margin-right:0.127cm;">19.718</span></a><a id="__RefHeading__1418632_253892949"/><a id="attribute-table_start-column"/>table:start-column</h2><p class="Text_20_body">The <span class="Attribute">table:start-column</span> attribute specifies the start-column for a cell range address. The value of a <span class="Attribute">table:start-column</span> attribute is inclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:start-column</span> attribute is usable with the following elements: <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:start-column</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_719table_start-position"><span style="margin-right:0.127cm;">19.719</span></a><a id="__RefHeading__1418634_253892949"/><a id="attribute-table_start-position"/>table:start-position</h2><p class="Text_20_body">The <span class="Attribute">table:start-position</span> attribute specifies the number of the first deleted row or column if multiple rows or columns are deleted. The value of a <span class="Attribute">table:start-position</span> attribute is inclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:start-position</span> attribute is usable with the following element: <span class="Element">&lt;table:movement-cut-off&gt;</span> <a href="#element-table_movement-cut-off">9.9.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:start-position</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_720table_start-row"><span style="margin-right:0.127cm;">19.720</span></a><a id="__RefHeading__1418636_253892949"/><a id="attribute-table_start-row"/>table:start-row</h2><p class="Text_20_body">The <span class="Attribute">table:start-row</span> attribute specifies the start-row for a cell range address. The value of a <span class="Attribute">table:start-row</span> attribute is inclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:start-row</span> attribute is usable with the following elements: <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:start-row</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_721table_start-table"><span style="margin-right:0.127cm;">19.721</span></a><a id="__RefHeading__1418638_253892949"/><a id="attribute-table_start-table"/>table:start-table</h2><p class="Text_20_body">The <span class="Attribute">table:start-table</span> attribute specifies the start-table for a cell range address. The value of a <span class="Attribute">table:start-table</span> attribute is inclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:start-table</span> attribute is usable with the following elements: <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:start-table</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_722table_status"><span style="margin-right:0.127cm;">19.722</span></a><a id="__RefHeading__1418640_253892949"/><a id="attribute-table_status"/>table:status</h2><p class="Text_20_body">The <span class="Attribute">table:status</span> attribute specifies whether iterative calculations are enabled.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:status</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">enable</span>: iterative calculations will occur.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">disable</span>: iterative calculations will not occur.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">disable</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:status</span> attribute is usable with the following element: <span class="Element">&lt;table:iteration&gt;</span> <a href="#element-table_iteration">9.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:status</span> attribute are <span class="Attribute_20_Value">enable</span> or <span class="Attribute_20_Value">disable</span>.</p><h2 class="Heading_20_2"><a id="a19_723table_step"><span style="margin-right:0.127cm;">19.723</span></a><a id="__RefHeading__1418642_253892949"/><a id="attribute-table_step"/>table:step</h2><p class="Text_20_body">The <span class="Attribute">table:step</span> attribute specifies the grouping of numeric values, by specifying the distance between the groups.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:step</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-groups&gt;</span> <a href="#element-table_data-pilot-groups">9.6.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:step</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_724table_steps"><span style="margin-right:0.127cm;">19.724</span></a><a id="__RefHeading__1418644_253892949"/><a id="attribute-table_steps"/>table:steps</h2><p class="Text_20_body">The <span class="Attribute">table:steps</span> attributes specifies the maximum number of iterative calculations. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">100</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:steps</span> attribute is usable with the following element: <span class="Element">&lt;table:iteration&gt;</span> <a href="#element-table_iteration">9.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:steps</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_725table_structure-protected"><span style="margin-right:0.127cm;">19.725</span></a><a id="__RefHeading__1418646_253892949"/><a id="attribute-table_structure-protected"/>table:structure-protected</h2><p class="Text_20_body">The <span class="Attribute">table:structure-protected</span> attribute specifies whether a table is protected from the insertion, deletion, moving or renaming of tables in the document. If the table structure is protected and the <span class="Attribute">table:protection-key</span> attribute is present, an authorization is required for resetting the protection to enable editing.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:show-details</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table is not protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table is protected.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:structure-protected</span> attribute is usable with the following element: <span class="Element">&lt;office:spreadsheet&gt;</span> <a href="#element-office_spreadsheet">3.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:structure-protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_726table_style-name"><span style="margin-right:0.127cm;">19.726</span></a><a id="__RefHeading__1418648_253892949"/><a id="attribute-table_style-name"/>table:style-name</h2><h3 class="Heading_20_3"><a id="a19_726_1General"><span style="margin-right:0.127cm;">19.726.1</span></a><a id="__RefHeading__1418650_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies styles that are assigned to elements. The style can be either an automatic or common style.</p><h3 class="Heading_20_3"><a id="a19_726_2_table_background_"><span style="margin-right:0.127cm;">19.726.2</span></a><a id="__RefHeading__1418652_253892949"/><a id="attribute-table_style-name_element-table_background"/>&lt;table:background&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element for the table. The style specified by the <span class="Element">&lt;style:style&gt;</span> element is of the table family.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:background&gt;</span> <a href="#element-table_background">16.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_3_table_body_"><span style="margin-right:0.127cm;">19.726.3</span></a><a id="__RefHeading__1418654_253892949"/><a id="attribute-table_style-name_element-table_body"/>&lt;table:body&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:body&gt;</span> <a href="#element-table_body">16.19.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_4_table_covered-table-cell_"><span style="margin-right:0.127cm;">19.726.4</span></a><a id="__RefHeading__1418656_253892949"/><a id="attribute-table_style-name_element-table_covered-table-cell"/>&lt;table:covered-table-cell&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Text_20_body">If a cell does not have a cell style assigned, then the <span class="Attribute">table:default-cell-style-name</span> attribute of the table row specifies the cell style. If that does not exist, the <span class="Attribute">table:default-cell-</span><span class="Attribute">style-name</span> attribute of the table column specifies the cell style. If that does not exist, the default style with family <span class="Attribute_20_Value">table-cell</span> specifies the style for the cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_5_table_even-columns_"><span style="margin-right:0.127cm;">19.726.5</span></a><a id="__RefHeading__1418658_253892949"/><a id="attribute-table_style-name_element-table_even-columns"/>&lt;table:even-columns&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:even-columns&gt;</span> <a href="#element-table_even-columns">16.19.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_6_table_even-rows_"><span style="margin-right:0.127cm;">19.726.6</span></a><a id="__RefHeading__1418660_253892949"/><a id="attribute-table_style-name_element-table_even-rows"/>&lt;table:even-rows&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:even-rows&gt;</span> <a href="#element-table_even-rows">16.19.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_7_table_first-column_"><span style="margin-right:0.127cm;">19.726.7</span></a><a id="__RefHeading__1418662_253892949"/><a id="attribute-table_style-name_element-table_first-column"/>&lt;table:first-column&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:first-column&gt;</span> <a href="#element-table_first-column">16.19.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_8_table_first-row_"><span style="margin-right:0.127cm;">19.726.8</span></a><a id="__RefHeading__1418664_253892949"/><a id="attribute-table_style-name_element-table_first-row"/>&lt;table:first-row&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:first-row&gt;</span> <a href="#element-table_first-row">16.19.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_9_table_last-column_"><span style="margin-right:0.127cm;">19.726.9</span></a><a id="__RefHeading__1418666_253892949"/><a id="attribute-table_style-name_element-table_last-column"/>&lt;table:last-column&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:last-column&gt;</span> <a href="#element-table_last-column">16.19.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_10_table_last-row_"><span style="margin-right:0.127cm;">19.726.10</span></a><a id="__RefHeading__1418668_253892949"/><a id="attribute-table_style-name_element-table_last-row"/>&lt;table:last-row&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:last-row&gt;</span> <a href="#element-table_last-row">16.19.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_11_table_odd-columns_"><span style="margin-right:0.127cm;">19.726.11</span></a><a id="__RefHeading__1418670_253892949"/><a id="attribute-table_style-name_element-table_odd-columns"/>&lt;table:odd-columns&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:odd-columns&gt;</span> <a href="#element-table_odd-columns">16.19.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_12_table_odd-rows_"><span style="margin-right:0.127cm;">19.726.12</span></a><a id="__RefHeading__1418672_253892949"/><a id="attribute-table_style-name_element-table_odd-rows"/>&lt;table:odd-rows&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:odd-rows&gt;</span> <a href="#element-table_odd-rows">16.19.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_13_table_table-cell_"><span style="margin-right:0.127cm;">19.726.13</span></a><a id="__RefHeading__1418674_253892949"/><a id="attribute-table_style-name_element-table_table-cell"/>&lt;table:table-cell&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-cell</span>.</p><p class="Text_20_body">If a cell does not have a cell style assigned, then the <span class="Attribute">table:default-cell-style-name</span> attribute of the table row specifies the cell style. If that does not exist, the <span class="Attribute">table:default-</span><span class="Attribute">cell-style-name</span> attribute of the table column specifies the cell style. If that does not exist, the default style with family table-cell specifies the style for the cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_14_table_table-column_"><span style="margin-right:0.127cm;">19.726.14</span></a><a id="__RefHeading__1418676_253892949"/><a id="attribute-table_style-name_element-table_table-column"/>&lt;table:table-column&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-column</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_15_table_table-row_"><span style="margin-right:0.127cm;">19.726.15</span></a><a id="__RefHeading__1418678_253892949"/><a id="attribute-table_style-name_element-table_table-row"/>&lt;table:table-row&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table-row</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_726_16_table_table_"><span style="margin-right:0.127cm;">19.726.16</span></a><a id="__RefHeading__1418680_253892949"/><a id="attribute-table_style-name_element-table_table"/>&lt;table:table&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:style-name</span> attribute specifies a <span class="Element">&lt;style:style&gt;</span> element of type <span class="Attribute_20_Value">table</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:style-name</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_727table_table"><span style="margin-right:0.127cm;">19.727</span></a><a id="__RefHeading__1418682_253892949"/><a id="attribute-table_table"/>table:table</h2><p class="Text_20_body">The <span class="Attribute">table:table</span> attribute specifies a table number for insertions, deletions and for table cells. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:table</span> attribute is usable with the following elements: <span class="Element">&lt;table:cell-address&gt;</span> <a href="#element-table_cell-address">9.9.18</a>, <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>, <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a>, <span class="Element">&lt;table:source-range-address&gt;</span> <a href="#element-table_source-range-address">9.9.14</a> and <span class="Element">&lt;table:target-range-address&gt;</span> <a href="#element-table_target-range-address">9.9.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:table</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_728table_table-background"><span style="margin-right:0.127cm;">19.728</span></a><a id="__RefHeading__1418684_253892949"/><a id="attribute-table_table-background"/>table:table-background</h2><p class="Text_20_body">The <span class="Attribute">table:table-background</span> attribute specifies whether a shape is in the table background if the drawing shape is included in a spreadsheet document. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:show-details</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: shape is included in foreground of a table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: shape is included in background of a table.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:table-background</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:table-background</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_729table_table-name"><span style="margin-right:0.127cm;">19.729</span></a><a id="__RefHeading__1418686_253892949"/><a id="attribute-table_table-name"/>table:table-name</h2><p class="Text_20_body">The <span class="Attribute">table:table-name</span> attribute specifies the name of the table in the source document to which the current table is linked. If the attribute is omitted, the current table is linked to the first table in the source document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:table-name</span> attribute is usable with the following element: <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:table-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_730table_target-cell-address"><span style="margin-right:0.127cm;">19.730</span></a><a id="__RefHeading__1418688_253892949"/><a id="attribute-table_target-cell-address"/>table:target-cell-address</h2><p class="Text_20_body">The <span class="Attribute">table:target-cell-address</span> attribute specifies a target cell address.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:target-cell-address</span> attribute is usable with the following element: <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:target-cell-address</span> attribute has the data type <span class="Datatype">cellAddress</span> <a href="#datatype-cellAddress">18.3.4</a>.</p><h2 class="Heading_20_2"><a id="a19_731table_target-range-address"><span style="margin-right:0.127cm;">19.731</span></a><a id="__RefHeading__1418690_253892949"/><a id="attribute-table_target-range-address"/>table:target-range-address</h2><h3 class="Heading_20_3"><a id="a19_731_1General"><span style="margin-right:0.127cm;">19.731.1</span></a><a id="__RefHeading__1418692_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:target-range-address</span> attribute specifies a cell range address. The value of this attribute shall be an absolute cell address that contains a table name. The dollar signs “$” (U+0024, DOLLAR SIGN) that indicate an absolute address may be omitted.</p><h3 class="Heading_20_3"><a id="a19_731_2_table_data-pilot-table_"><span style="margin-right:0.127cm;">19.731.2</span></a><a id="__RefHeading__1418694_253892949"/><a id="attribute-table_target-range-address_element-table_data-pilot-table"/>&lt;table:data-pilot-table&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:target-range-address</span> attribute specifies the cell range where a data pilot table will be displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:target-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-table&gt;</span> <a href="#element-table_data-pilot-table">9.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:target-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h3 class="Heading_20_3"><a id="a19_731_3_table_database-range_"><span style="margin-right:0.127cm;">19.731.3</span></a><a id="__RefHeading__1418696_253892949"/><a id="attribute-table_target-range-address_element-table_database-range"/>&lt;table:database-range&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:target-range-address</span> attribute specifies the cell range address of a database range.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:target-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:database-range&gt;</span> <a href="#element-table_database-range">9.4.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:target-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h3 class="Heading_20_3"><a id="a19_731_4_table_filter_"><span style="margin-right:0.127cm;">19.731.4</span></a><a id="__RefHeading__1418698_253892949"/><a id="attribute-table_target-range-address_element-table_filter"/>&lt;table:filter&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:target-range-address</span> attribute specifies the cell range for the result of a filter operation, but all table rows remain visible. If the attribute is not present, the rows that do not match the filter conditions are not displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:target-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:filter&gt;</span> <a href="#element-table_filter">9.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:target-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h3 class="Heading_20_3"><a id="a19_731_5_table_sort_"><span style="margin-right:0.127cm;">19.731.5</span></a><a id="__RefHeading__1418700_253892949"/><a id="attribute-table_target-range-address_element-table_sort"/>&lt;table:sort&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:target-range-address</span> attribute specifies the cell range for the result of a sort operation. If the attribute is not present, the cell range for the result is identical to the cell range of the database range. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:target-range-address</span> attribute is usable with the following element: <span class="Element">&lt;table:sort&gt;</span> <a href="#element-table_sort">9.4.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:target-range-address</span> attribute has the data type <span class="Datatype">cellRangeAddress</span> <a href="#datatype-cellRangeAddress">18.3.5</a>.</p><h2 class="Heading_20_2"><a id="a19_732table_template-name"><span style="margin-right:0.127cm;">19.732</span></a><a id="__RefHeading__1418702_253892949"/><a id="attribute-table_template-name"/>table:template-name</h2><p class="Text_20_body">The <span class="Attribute">table:template-name</span> attribute specifies a table template by name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:template-name</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:template-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_733table_title"><span style="margin-right:0.127cm;">19.733</span></a><a id="__RefHeading__1418704_253892949"/><a id="attribute-table_title"/>table:title</h2><p class="Text_20_body">The <span class="Attribute">table:title</span> attribute that specifies a title of a help or error message.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:title</span> attribute is usable with the following elements: <span class="Element">&lt;table:error-message&gt;</span> <a href="#element-table_error-message">9.4.7</a> and <span class="Element">&lt;table:help-message&gt;</span> <a href="#element-table_help-message">9.4.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_734table_track-changes"><span style="margin-right:0.127cm;">19.734</span></a><a id="__RefHeading__1418706_253892949"/><a id="attribute-table_track-changes"/>table:track-changes</h2><p class="Text_20_body">The <span class="Attribute">table:track-changes</span> attribute specifies whether change tracking is enabled.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:track-changes</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: changes are not tracked.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: changes are tracked.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:track-changes</span> attribute is usable with the following element: <span class="Element">&lt;table:tracked-changes&gt;</span> <a href="#element-table_tracked-changes">9.9.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:track-changes</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_735table_type"><span style="margin-right:0.127cm;">19.735</span></a><a id="__RefHeading__1418708_253892949"/><a id="attribute-table_type"/>table:type</h2><h3 class="Heading_20_3"><a id="a19_735_1General"><span style="margin-right:0.127cm;">19.735.1</span></a><a id="__RefHeading__1418710_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">table:type</span> attribute specifies a type for a table. </p><h3 class="Heading_20_3"><a id="a19_735_2_table_data-pilot-field-reference_"><span style="margin-right:0.127cm;">19.735.2</span></a><a id="__RefHeading__1418712_253892949"/><a id="attribute-table_type_element-table_data-pilot-field-reference"/>&lt;table:data-pilot-field-reference&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:type</span> attribute specifies the processing of a referenced category column for display.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column-percentage</span>: Same as <span class="Attribute_20_Value">row-percentage</span>, but the total for the result's column is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">index</span>: The row and column totals and the grand total are calculated as described for <span class="Attribute_20_Value">row-percentage</span>, and then are used to calculate the following expression: (original result * grand total ) / ( row total * column total ). Division by zero results in an error.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">member-difference</span>: From each result, the value calculated for the category column member specified by the <span class="Attribute">table:member-type</span> and <span class="Attribute">table:member-name</span> attributes is subtracted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">member-percentage</span>: Each result is divided by the value calculated for the category column member specified by the <span class="Attribute">table:member-type</span> and <span class="Attribute">table:member-name</span> attributes. Division by zero results in an error. Empty results are shown as “0”. If the <span class="Attribute">table:member-</span><span class="Attribute">type</span> attribute has the value <span class="Attribute_20_Value">previous</span>, “1” is displayed as first value. If the <span class="Attribute">table:member-type</span> attribute has the value <span class="Attribute_20_Value">next</span>, “1” is displayed as last value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">member-percentage-difference</span>: From each result, the value calculated for the category column member specified by the <span class="Attribute">table:member-type</span> and <span class="Attribute">table:member-</span><span class="Attribute">name</span> attributes is subtracted, and the result is divided by this value again. Division by zero results in an error. Otherwise, the rules for <span class="Attribute_20_Value">member-difference</span> apply.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: This value means that the results in the data fields are displayed unmodified.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">row-percentage</span>: Each result is divided by the total result for its row in the data pilot table. If there are multiple data fields, the total for the result's data field is used. If there are subtotals with manually selected summary functions, the total is calculated with the data field's summary function. Division by zero results in an error.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">running-total</span>: Each result is added to the sum of the results for preceding members in the referenced category column, in the reference field's sort order, and the total sum is shown.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">total-percentage</span>: Same as <span class="Attribute_20_Value">row-percentage</span>, but the grand total for the result's data field is used.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:type</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field-reference&gt;</span> <a href="#element-table_data-pilot-field-reference">9.6.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">member-difference</span>, <span class="Attribute_20_Value">member-percentage</span>, <span class="Attribute_20_Value">member-percentage-difference</span>, <span class="Attribute_20_Value">running-total</span>, <span class="Attribute_20_Value">row-percentage</span>, <span class="Attribute_20_Value">column-percentage</span>, <span class="Attribute_20_Value">total-percentage</span> or <span class="Attribute_20_Value">index</span>.</p><h3 class="Heading_20_3"><a id="a19_735_3_table_deletion_"><span style="margin-right:0.127cm;">19.735.3</span></a><a id="__RefHeading__1418714_253892949"/><a id="attribute-table_type_element-table_deletion"/>&lt;table:deletion&gt; </h3><p class="Text_20_body">The <span class="Attribute">table:type</span> attribute specifies the type of a deletion. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: column deleted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: row deleted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able</span>: table deleted.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:type</span> attribute is usable with the following element: <span class="Element">&lt;table:deletion&gt;</span> <a href="#element-table_deletion">9.9.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:type</span> attribute are <span class="Attribute_20_Value">row</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">table</span>.</p><h3 class="Heading_20_3"><a id="a19_735_4_table_insertion_"><span style="margin-right:0.127cm;">19.735.4</span></a><a id="__RefHeading__1418716_253892949"/><a id="attribute-table_type_element-table_insertion"/>&lt;table:insertion&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:type</span> attribute specifies the type of an insertion. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">column</span>: column inserted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: row inserted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able</span>: table inserted.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:type</span> attribute is usable with the following element: <span class="Element">&lt;table:insertion&gt;</span> <a href="#element-table_insertion">9.9.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:type</span> attribute are <span class="Attribute_20_Value">row</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">table</span>.</p><h2 class="Heading_20_2"><a id="a19_736table_use-banding-columns-styles"><span style="margin-right:0.127cm;">19.736</span></a><a id="__RefHeading__1418718_253892949"/><a id="attribute-table_use-banding-columns-styles"/>table:use-banding-columns-styles</h2><p class="Text_20_body">The <span class="Attribute">table:use-banding-columns-styles</span> attribute specifies if the styles referenced by the <span class="Element">&lt;table:even-columns&gt;</span> and <span class="Element">&lt;table:odd-columns&gt;</span> elements of a table template referenced by the <span class="Attribute">table:template-name</span> attribute are used for cells that are contained in even and odd columns.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-banding-columns-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells are not styled based on even or odd column location.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells are styled based on even or odd column location.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-banding-columns-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-banding-columns-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_737table_use-banding-rows-styles"><span style="margin-right:0.127cm;">19.737</span></a><a id="__RefHeading__1418720_253892949"/><a id="attribute-table_use-banding-rows-styles"/>table:use-banding-rows-styles</h2><p class="Text_20_body">The <span class="Attribute">table:use-banding-rows-styles</span> attribute specifies if the styles referenced by the <span class="Element">&lt;table:even-rows&gt;</span> and <span class="Element">&lt;table:odd-rows&gt;</span> elements of a table template referenced by the table:template-name attribute are used for cells that are contained in even and odd rows.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-banding-rows-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells not styled based on even or odd row location.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells styled based on even or odd row location.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-banding-rows-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-banding-rows-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_738table_use-first-column-styles"><span style="margin-right:0.127cm;">19.738</span></a><a id="__RefHeading__1418722_253892949"/><a id="attribute-table_use-first-column-styles"/>table:use-first-column-styles</h2><p class="Text_20_body">The <span class="Attribute">table:use-first-column-styles</span> attribute specifies if the styles referenced by the <span class="Element">&lt;table:first-column&gt;</span> element of the table template referenced by the <span class="Attribute">table:template-name</span> attribute are used for cells that are contained in the table's first column. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-first-column-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells not styled based on first column location.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells styled based on first column location.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-first-column-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-first-column-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_739table_use-first-row-styles"><span style="margin-right:0.127cm;">19.739</span></a><a id="__RefHeading__1418724_253892949"/><a id="attribute-table_use-first-row-styles"/>table:use-first-row-styles</h2><p class="Text_20_body">The <span class="Attribute">table:use-first-row-styles</span> attribute specifies if the styles referenced by the <span class="Element">&lt;table:first-row&gt;</span> element of the table template referenced by the <span class="Attribute">table:template-name</span> attribute are used for cells that are contained in the table's first row.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-first-row-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells not styled based on first row location.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells styled based on first row location.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-first-row-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-first-row-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_740table_use-last-column-styles"><span style="margin-right:0.127cm;">19.740</span></a><a id="__RefHeading__1418726_253892949"/><a id="attribute-table_use-last-column-styles"/>table:use-last-column-styles</h2><p class="Text_20_body">The <span class="Attribute">table:use-last-column-styles</span> attribute specifies if the styles referenced by the <span class="Element">&lt;table:last-column&gt;</span> element of the table template referenced by the <span class="Attribute">table:template-name</span> attribute are used for cells that are contained in the table's last column. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-last-column-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells not styled based on last column location.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells styled based on last column location.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-last-column-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-last-column-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_741table_use-last-row-styles"><span style="margin-right:0.127cm;">19.741</span></a><a id="__RefHeading__1418728_253892949"/><a id="attribute-table_use-last-row-styles"/>table:use-last-row-styles</h2><p class="Text_20_body">The <span class="Attribute">table:use-last-row-styles</span> attribute specifies if the styles referenced by the <span class="Element">&lt;table:last-row&gt;</span> element of the table template referenced by the <span class="Attribute">table:template-name</span> attribute are used for cells that are contained in the table's last row. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-last-row-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: cells not styled based on last row location.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: cells styled based on last row location.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-last-row-styles</span> attribute is usable with the following element: <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-last-row-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_742table_use-labels"><span style="margin-right:0.127cm;">19.742</span></a><a id="__RefHeading__1418730_253892949"/><a id="attribute-table_use-labels"/>table:use-labels</h2><p class="Text_20_body">The <span class="Attribute">table:use-labels</span> attribute specifies whether labels should be used by the consolidation for rows, columns or both. If labels are used for rows or columns, mathematical functions are applied to cells with equally labeled rows or columns rather than to cells with the same relative cell address.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">both</span>: column and row labels used for consolidation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">olumn</span>: column labels used for consolidation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: labels not used for consolidation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ow</span>: row labels used for consolidation.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-labels</span> attribute is usable with the following element: <span class="Element">&lt;table:consolidation&gt;</span> <a href="#element-table_consolidation">9.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:use-labels</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">row</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">both</span>.</p><h2 class="Heading_20_2"><a id="a19_743table_use-regular-expressions"><span style="margin-right:0.127cm;">19.743</span></a><a id="__RefHeading__1418732_253892949"/><a id="attribute-table_use-regular-expressions"/>table:use-regular-expressions</h2><p class="Text_20_body">The <span class="Attribute">table:use-regular-expressions</span> attribute specifies whether regular expressions are enabled for character string comparisons and when searching.</p><p class="Text_20_body">Regular expressions are implementation-dependent expressions that, at a minimum, conform to the requirements of Conformance Clause C1 of <a title="Unicode Regular Expressions" href="http://www.unicode.org/reports/tr18/tr18-13.html">[UTR18]</a>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-regular-expressions</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: regular expressions not enabled for string comparisons and searches.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: regular expressions enabled for string comparisons and searches.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-regular-expressions</span> attribute is usable with the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-regular-expressions</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_744table_use-wildcards"><span style="margin-right:0.127cm;">19.744</span></a><a id="__RefHeading__1418734_253892949"/><a id="attribute-table_use-wildcards"/>table:use-wildcards</h2><p class="Text_20_body">The <span class="Attribute">table:use-wildcards</span> attribute specifies whether wildcards are enabled for character string comparisons and when searching.</p><p class="Text_20_body">If enabled, in a query or search string of a function, the “?” (U+003F, QUESTION MARK), “<span class="Misc_20_Source">*"</span> (U+002A, ASTERISK), and “<span class="Misc_20_Source">~"</span> (U+007E, TILDE) are defined as:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Misc_20_Source">"?"</span> (U+003F, QUESTION MARK): matches any single character;<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Misc_20_Source">"*"</span> (U+002A, ASTERISK): matches any sequence of characters, including an empty string;<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Misc_20_Source">"~"</span> (U+007E, TILDE): escapes the special meaning of a QUESTION MARK, ASTERISK or TILDE character that follows immediately after the TILDE character.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">table:use-regular-expressions</span> attribute and the <span class="Attribute">table:use-wildcards</span> attribute are mutually exclusive. The attribute values cannot be <span class="Attribute_20_Value">true</span> for both attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:use-wildcards</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: wildcards are not enabled for character string comparisons and searching.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: wildcards are enabled for character string comparisons and searching.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:use-wildcards</span> attribute is usable with the following element: <span class="Element">&lt;table:calculation-settings&gt;</span> <a href="#element-table_calculation-settings">9.4.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:use-wildcards</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_745table_used-hierarchy"><span style="margin-right:0.127cm;">19.745</span></a><a id="__RefHeading__1418736_253892949"/><a id="attribute-table_used-hierarchy"/>table:used-hierarchy</h2><p class="Text_20_body">The <span class="Attribute">table:used-hierarchy</span> attribute specifies a unique number assigned by an external component to select the hierarchy that should be applied to a source field. </p><p class="Text_20_body">If the data pilot source is provided by an external component or service, the data contained within category columns may be grouped by its value and it may be further divided into sub-groups or hierarchies. If an external component supports hierarchies, it shall assign unique numbers to those hierarchies. </p><p class="Text_20_body">The default value -1 means that no hierarchy should be applied to a source field.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">-1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:used-hierarchy</span> attribute is usable with the following element: <span class="Element">&lt;table:data-pilot-field&gt;</span> <a href="#element-table_data-pilot-field">9.6.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:used-hierarchy</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_746table_user-name"><span style="margin-right:0.127cm;">19.746</span></a><a id="__RefHeading__1418738_253892949"/><a id="attribute-table_user-name"/>table:user-name</h2><p class="Text_20_body">The <span class="Attribute">table:user-name</span> attribute specifies the user name needed to access a source. It is passed to a service implementation. Its value is implementation-dependent and service specific.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:user-name</span> attribute is usable with the following element: <span class="Element">&lt;table:source-service&gt;</span> <a href="#element-table_source-service">9.6.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:user-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_747table_value"><span style="margin-right:0.127cm;">19.747</span></a><a id="__RefHeading__1418740_253892949"/><a id="attribute-table_value"/>table:value</h2><h3 class="Heading_20_3"><a id="a19_747_1_table_filter-condition_"><span style="margin-right:0.127cm;">19.747.1</span></a><a id="__RefHeading__1418742_253892949"/><a id="attribute-table_value_element-table_filter-condition"/>&lt;table:filter-condition&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:value</span> attribute specifies a value for the filter condition.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:value</span> attribute is usable with the following element: <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:value</span> attribute are a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a> or a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_747_2_table_filter-set-item_"><span style="margin-right:0.127cm;">19.747.2</span></a><a id="__RefHeading__1418744_253892949"/><a id="attribute-table_value_element-table_filter-set-item"/>&lt;table:filter-set-item&gt;</h3><p class="Text_20_body">The <span class="Attribute">table:value</span> attribute specifies a single value within a set of filter values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:value</span> attribute is usable with the following element: <span class="Element">&lt;table:filter-set-item&gt;</span> <a href="#element-table_filter-set-item">9.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_748table_value-type"><span style="margin-right:0.127cm;">19.748</span></a><a id="__RefHeading__1418746_253892949"/><a id="attribute-table_value-type"/>table:value-type</h2><p class="Text_20_body">The <span class="Attribute">table:value-type</span> attribute specifies the value type of a null date. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">date</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:value-type</span> attribute is usable with the following element: <span class="Element">&lt;table:null-date&gt;</span> <a href="#element-table_null-date">9.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The only value of the <span class="Attribute">table:value-type</span> attribute is <span class="Attribute_20_Value">date</span>.</p><h2 class="Heading_20_2"><a id="a19_749table_visibility"><span style="margin-right:0.127cm;">19.749</span></a><a id="__RefHeading__1418748_253892949"/><a id="attribute-table_visibility"/>table:visibility</h2><p class="Text_20_body">The <span class="Attribute">table:visibility</span> attribute specifies whether a row or column is visible.,</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:visibility</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">collapse</span>: a row or column is not visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">filter</span>: a row or column is not visible as the result of applying a filter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">visible</span>: a row or column is visible.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">visible</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">table:visibility</span> attribute is usable with the following elements: <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a> and <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:visibility</span> attribute are <span class="Attribute_20_Value">visible</span>, <span class="Attribute_20_Value">collapse</span> or <span class="Attribute_20_Value">filter</span>.</p><h2 class="Heading_20_2"><a id="a19_750text_active"><span style="margin-right:0.127cm;">19.750</span></a><a id="__RefHeading__1418750_253892949"/><a id="attribute-text_active"/>text:active</h2><p class="Text_20_body">The <span class="Attribute">text:active</span> attribute specifies the setting of the page variable.</p><p class="Text_20_body">The value of an active page variable is increased on each page.</p><p class="Text_20_body">An inactive page variable is not incremented between pages. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:active</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: page variable is turned off.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: page variable is turned on.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default value for this attribute is false.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:active</span> attribute is usable with the following element: <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:active</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_751text_address"><span style="margin-right:0.127cm;">19.751</span></a><a id="__RefHeading__1418752_253892949"/><a id="attribute-text_address"/>text:address</h2><p class="Text_20_body">The <span class="Attribute">text:address</span> attribute specifies the address for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:address</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:address</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_752text_alphabetical-separators"><span style="margin-right:0.127cm;">19.752</span></a><a id="__RefHeading__1418754_253892949"/><a id="attribute-text_alphabetical-separators"/>text:alphabetical-separators</h2><p class="Text_20_body">The <span class="Attribute">text:alphabetical-separators</span> attribute specifies whether entries beginning with the same letter are grouped and separated from the entries beginning with the next letter.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:alphabetical-separators</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: entries beginning with the same letter are not grouped together and separated from entries beginning with the next letter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: entries beginning with the same letter are grouped together and separated from entries beginning with the next letter.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:alphabetical-separators</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:alphabetical-separators</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_753text_anchor-page-number"><span style="margin-right:0.127cm;">19.753</span></a><a id="__RefHeading__1418756_253892949"/><a id="attribute-text_anchor-page-number"/>text:anchor-page-number</h2><p class="Text_20_body">The <span class="Attribute">text:anchor-page-number</span> attribute specifies the physical page number of an anchor if the drawing object is bound to a page within a text document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:anchor-page-number</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:anchor-page-number</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_754text_anchor-type"><span style="margin-right:0.127cm;">19.754</span></a><a id="__RefHeading__1418758_253892949"/><a id="attribute-text_anchor-type"/>text:anchor-type</h2><p class="Text_20_body">The <span class="Attribute">text:anchor-type</span> attribute specifies how a frame is bound to a text document. The anchor position is the point at which a frame is bound to a text document. The defined values for the <span class="Attribute">text:anchor-type</span> attribute are shown in Table <a href="#refTable16">17</a>.</p><p class="Table">Table <a id="refTable16"/>17 - Text anchor positions</p><table border="0" cellspacing="0" cellpadding="0" class="Table4"><colgroup><col width="138"/><col width="193"/><col width="189"/><col width="146"/></colgroup><tr><td style="text-align:left;width:1.2431in; " class="Table4_A1"><p class="Table_20_Heading">If the value of the <span class="Attribute">text:anchor-type</span> attribute is ...</p></td><td style="text-align:left;width:1.7361in; " class="Table4_A1"><p class="Table_20_Heading">The anchor position is...</p></td><td style="text-align:left;width:1.7069in; " class="Table4_A1"><p class="Table_20_Heading">The drawing shape element appears ...</p></td><td style="text-align:left;width:1.3139in; " class="Table4_D1"><p class="Table_20_Heading">Notes</p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table4_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">as-char</span></p></td><td style="text-align:left;width:1.7361in; " class="Table4_A2"><p class="Table_20_Contents">There is no anchor position. The drawing shape behaves like a character.</p></td><td style="text-align:left;width:1.7069in; " class="Table4_A2"><p class="Table_20_Contents">At the position where the character appears in the document.</p></td><td style="text-align:left;width:1.3139in; " class="Table4_D2"><p class="Table_20_Contents"> </p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table4_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">char</span></p></td><td style="text-align:left;width:1.7361in; " class="Table4_A2"><p class="Table_20_Contents">The character after the drawing shape element.</p></td><td style="text-align:left;width:1.7069in; " class="Table4_A2"><p class="Table_20_Contents">Just before the character.</p></td><td style="text-align:left;width:1.3139in; " class="Table4_D2"><p class="Table_20_Contents"> </p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table4_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame</span></p></td><td style="text-align:left;width:1.7361in; " class="Table4_A2"><p class="Table_20_Contents">The parent text box that the current drawing shape element is contained in.</p></td><td style="text-align:left;width:1.7069in; " class="Table4_A2"><p class="Table_20_Contents">In the element representing the text box to which the drawing object is bound.</p><p class="Text_20_body">If an image is bound to a text box, the image element is located in the text box element.</p></td><td style="text-align:left;width:1.3139in; " class="Table4_D2"><p class="Table_20_Contents"> </p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table4_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page</span></p></td><td style="text-align:left;width:1.7361in; " class="Table4_A2"><p class="Table_20_Contents">The page that has the same physical page number as the value of the <span class="Attribute">text:anchor-page-number</span> attribute that is attached to the drawing shape element. If no <span class="Attribute">text:anchor-page-</span><span class="Attribute">number</span> attribute is given, the anchor position is the page at which the character behind the drawing object element appears.</p></td><td style="text-align:left;width:1.7069in; " class="Table4_A2"><p class="Table_20_Contents">Either</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>At the start of the document body, outside any paragraph or frame, provided a <span class="Attribute">text:anchor-page-number</span> attribute is given.<span class="odfLiEnd"/> </p></li></ul><p class="Table_20_Contents">Or</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Inside any paragraph element that is not contained in a header, footer, footnote, or text box, if a <span class="Attribute">text:anchor-</span><span class="Attribute">page-number</span> attribute is not given.<span class="odfLiEnd"/> </p></li></ul></td><td style="text-align:left;width:1.3139in; " class="Table4_D2"><p class="Table_20_Contents">The physical page number is the number assigned to the page if all pages in the document are counted starting with page 1.</p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table4_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph</span></p></td><td style="text-align:left;width:1.7361in; " class="Table4_A2"><p class="Table_20_Contents">The paragraph that the current drawing shape element is contained in.</p></td><td style="text-align:left;width:1.7069in; " class="Table4_A2"><p class="Table_20_Contents">At the start of the paragraph element.</p></td><td style="text-align:left;width:1.3139in; " class="Table4_D2"><p class="Table_20_Contents"> </p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:anchor-type</span> attribute is usable with the following elements: <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a> and <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:anchor-type</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">frame</span>, <span class="Attribute_20_Value">paragraph</span>, <span class="Attribute_20_Value">char</span> or <span class="Attribute_20_Value">as-char</span>.</p><h2 class="Heading_20_2"><a id="a19_755text_annote"><span style="margin-right:0.127cm;">19.755</span></a><a id="__RefHeading__1418760_253892949"/><a id="attribute-text_annote"/>text:annote</h2><p class="Text_20_body">The <span class="Attribute">text:annote</span> attribute specifies the annotation for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:annote</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:annote</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_756text_author"><span style="margin-right:0.127cm;">19.756</span></a><a id="__RefHeading__1418762_253892949"/><a id="attribute-text_author"/>text:author</h2><p class="Text_20_body">The <span class="Attribute">text:author</span> attribute specifies the author or authors for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:author</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:author</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_757text_bibliography-data-field"><span style="margin-right:0.127cm;">19.757</span></a><a id="__RefHeading__1418764_253892949"/><a id="attribute-text_bibliography-data-field"/>text:bibliography-data-field</h2><p class="Text_20_body">The <span class="Attribute">text:bibliography-data-field</span> attribute specifies which part of a bibliography data field will be displayed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:bibliography-data-field</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">address</span>: <a href="#attribute-text_address">19.751</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">annote</span>: <a href="#attribute-text_annote">19.755</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">author</span>: <a href="#attribute-text_author">19.756</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bibliography-type</span>: <a href="#attribute-text_bibliography-type">19.758</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">booktitle</span>: <a href="#attribute-text_booktitle">19.759</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chapter</span>: <a href="#attribute-text_chapter">19.767</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom1</span>: <a href="#attribute-text_custom1">19.786</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom2</span>: <a href="#attribute-text_custom2">19.787</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom3</span>: <a href="#attribute-text_custom3">19.788</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom4</span>: <a href="#attribute-text_custom4">19.789</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom5</span>: <a href="#attribute-text_custom5">19.790</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">edition</span>: <a href="#attribute-text_edition">19.800</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">editor</span>: <a href="#attribute-text_editor">19.801</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">howpublished</span>: <a href="#attribute-text_howpublished">19.807</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">identifier</span>: <a href="#attribute-text_identifier">19.810</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">institution</span>: <a href="#attribute-text_institution">19.814</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">isbn</span>: <a href="#attribute-text_isbn">19.817</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">issn</span>: <a href="#attribute-text_issn">19.818</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">journal</span>: <a href="#attribute-text_journal">19.819</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">month</span>: <a href="#attribute-text_month">19.834</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">note</span>: <a href="#attribute-text_note">19.836</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number</span>: <a href="#attribute-text_number">19.838</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">organizations</span>: <a href="#attribute-text_organizations">19.843</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">pages</span>: <a href="#attribute-text_pages">19.846</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">publisher</span>: <a href="#attribute-text_publisher">19.852</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">report-type</span>: <a href="#attribute-text_report-type">19.856</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">school</span>: <a href="#attribute-text_school">19.860</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">series</span>: <a href="#attribute-text_series">19.862</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">title</span>: <a href="#attribute-text_title">19.882</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">url</span>: <a href="#attribute-text_url">19.884</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">volume</span>: <a href="#attribute-text_volume">19.902</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">year</span>: <a href="#attribute-text_year">19.903</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:bibliography-data-field</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-bibliography&gt;</span> <a href="#element-text_index-entry-bibliography">8.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:bibliography-data-field</span> attribute are <span class="Attribute_20_Value">address</span>, <span class="Attribute_20_Value">annote</span>, <span class="Attribute_20_Value">author</span>, <span class="Attribute_20_Value">bibliography-type</span>, <span class="Attribute_20_Value">booktitle</span>, <span class="Attribute_20_Value">chapter</span>, <span class="Attribute_20_Value">custom1</span>, <span class="Attribute_20_Value">custom2</span>, <span class="Attribute_20_Value">custom3</span>, <span class="Attribute_20_Value">custom4</span>, <span class="Attribute_20_Value">custom5</span>, <span class="Attribute_20_Value">edition</span>, <span class="Attribute_20_Value">editor</span>, <span class="Attribute_20_Value">howpublished</span>, <span class="Attribute_20_Value">identifier</span>, <span class="Attribute_20_Value">institution</span>, <span class="Attribute_20_Value">isbn</span>, <span class="Attribute_20_Value">issn</span>, <span class="Attribute_20_Value">journal</span>, <span class="Attribute_20_Value">month</span>, <span class="Attribute_20_Value">note</span>, <span class="Attribute_20_Value">number</span>, <span class="Attribute_20_Value">organizations</span>, <span class="Attribute_20_Value">pages</span>, <span class="Attribute_20_Value">publisher</span>, <span class="Attribute_20_Value">report-type</span>, <span class="Attribute_20_Value">school</span>, <span class="Attribute_20_Value">series</span>, <span class="Attribute_20_Value">title</span>, <span class="Attribute_20_Value">url</span>, <span class="Attribute_20_Value">volume</span> or <span class="Attribute_20_Value">year</span>.</p><h2 class="Heading_20_2"><a id="a19_758text_bibliography-type"><span style="margin-right:0.127cm;">19.758</span></a><a id="__RefHeading__1418766_253892949"/><a id="attribute-text_bibliography-type"/>text:bibliography-type</h2><p class="Text_20_body">The <span class="Attribute">text:bibliography-type</span> attribute specifies to which type of bibliographical entry a template applies.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:bibliography-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">article</span>: an article in a journal or magazine.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">book</span>: a book with a named publisher.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">ooklet</span>: a work that is printed and bound, but without a named publisher or sponsoring institution.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">onference</span>: an article in conference proceedings.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">ustom1</span>: the first of five user defined fields for a bibliographic entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">ustom2</span>: the second of five user defined fields for a bibliographic entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">ustom3</span>: the third of five user defined fields for a bibliographic entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">ustom4</span>: the fourth of five user defined fields for a bibliographic entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">ustom5</span>: the fifth of five user defined fields for a bibliographic entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">mail</span>: email address.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inbook</span>: a part of a book that can be identified.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span><span class="Attribute_20_Value">ncollection</span>: a part of a book that has its own title.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span><span class="Attribute_20_Value">nproceedings</span>: a paper in conference proceedings.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">j</span><span class="Attribute_20_Value">ournal</span>: a journal name.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span><span class="Attribute_20_Value">anual</span>: technical documentation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span><span class="Attribute_20_Value">astersthesis</span>: a masters thesis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span><span class="Attribute_20_Value">isc</span>: a type classification when more specific values are not appropriate.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">phdthesis</span>: a PhD thesis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">roceedings</span>: the proceedings of a conference.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">echreport</span>: a report published by a school or other institution. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">u</span><span class="Attribute_20_Value">npublished</span>: a document with an author and title but not formally published.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">w</span><span class="Attribute_20_Value">ww</span>: the IRI for a document.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The definitions for article, book, booklet, inbook, incollection, in proceedings, journal, manual, mastersthesis, misc, phdthesis, proceedings, techreport, and unpublished are based on <a title="BIBT E Xing" href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.6093">[BibTeXing]</a>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:bibliography-type</span> attribute is usable with the following elements: <span class="Element">&lt;text:bibliography-entry-template&gt;</span> <a href="#element-text_bibliography-entry-template">8.9.3</a> and <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:bibliography-type</span> attribute are <span class="Attribute_20_Value">article</span>, <span class="Attribute_20_Value">book</span>, <span class="Attribute_20_Value">booklet</span>, <span class="Attribute_20_Value">conference</span>, <span class="Attribute_20_Value">custom1</span>, <span class="Attribute_20_Value">custom2</span>, <span class="Attribute_20_Value">custom3</span>, <span class="Attribute_20_Value">custom4</span>, <span class="Attribute_20_Value">custom5</span>, <span class="Attribute_20_Value">email</span>, <span class="Attribute_20_Value">inbook</span>, <span class="Attribute_20_Value">incollection</span>, <span class="Attribute_20_Value">inproceedings</span>, <span class="Attribute_20_Value">journal</span>, <span class="Attribute_20_Value">manual</span>, <span class="Attribute_20_Value">mastersthesis</span>, <span class="Attribute_20_Value">misc</span>, <span class="Attribute_20_Value">phdthesis</span>, <span class="Attribute_20_Value">proceedings</span>, <span class="Attribute_20_Value">techreport</span>, <span class="Attribute_20_Value">unpublished</span> or <span class="Attribute_20_Value">www</span>.</p><h2 class="Heading_20_2"><a id="a19_759text_booktitle"><span style="margin-right:0.127cm;">19.759</span></a><a id="__RefHeading__1418768_253892949"/><a id="attribute-text_booktitle"/>text:booktitle</h2><p class="Text_20_body">The <span class="Attribute">text:booktitle</span> attribute specifies the book title for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:booktitle</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:booktitle</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_760text_bullet-char"><span style="margin-right:0.127cm;">19.760</span></a><a id="__RefHeading__1418770_253892949"/><a id="attribute-text_bullet-char"/>text:bullet-char</h2><p class="Text_20_body">The <span class="Attribute">text:bullet-char</span> attribute specifies the <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character to use as the bullet in a bullet level style.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:bullet-char</span> attribute are shown in Table <a href="#refTable17">18</a>:</p><p class="Table">Table <a id="refTable17"/>18 - Typical bullet characters</p><table border="0" cellspacing="0" cellpadding="0" class="Table8"><colgroup><col width="87"/><col width="68"/><col width="511"/></colgroup><tr><td style="text-align:left;width:0.7799in; " class="Table8_A1"><p class="Table_20_Heading">UNICODE Character Code</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A1"><p class="Table_20_Heading">Typical Shape</p></td><td style="text-align:left;width:4.6063in; " class="Table8_C1"><p class="Table_20_Heading">UNICODE Character Name</p></td></tr><tr><td style="text-align:left;width:0.7799in; " class="Table8_A2"><p class="Table_20_Contents">U+2022</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A2"><p class="Table_20_Contents">•</p></td><td style="text-align:left;width:4.6063in; " class="Table8_C2"><p class="Table_20_Contents">BULLET</p></td></tr><tr><td style="text-align:left;width:0.7799in; " class="Table8_A2"><p class="Table_20_Contents">U+25CF</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A2"><p class="Table_20_Contents">●</p></td><td style="text-align:left;width:4.6063in; " class="Table8_C2"><p class="Table_20_Contents">BLACK CIRCLE</p></td></tr><tr><td style="text-align:left;width:0.7799in; " class="Table8_A2"><p class="Table_20_Contents">U+2714</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A2"><p class="Table_20_Contents">✔</p></td><td style="text-align:left;width:4.6063in; " class="Table8_A2"><p class="Table_20_Contents">HEAVY CHECK MARK</p></td></tr><tr><td style="text-align:left;width:0.7799in; " class="Table8_A2"><p class="Table_20_Contents">U+2717</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A2"><p class="Table_20_Contents">✗</p></td><td style="text-align:left;width:4.6063in; " class="Table8_A2"><p class="Table_20_Contents">BALLOT X</p></td></tr><tr><td style="text-align:left;width:0.7799in; " class="Table8_A2"><p class="Table_20_Contents">U+2794</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A2"><p class="Table_20_Contents">➔</p></td><td style="text-align:left;width:4.6063in; " class="Table8_A2"><p class="Table_20_Contents">HEAVY WIDE-HEADED RIGHTWARDS ARROW</p></td></tr><tr><td style="text-align:left;width:0.7799in; " class="Table8_A2"><p class="Table_20_Contents">U+27A2</p></td><td style="text-align:left;width:0.6139in; " class="Table8_A2"><p class="Table_20_Contents">➱</p></td><td style="text-align:left;width:4.6063in; " class="Table8_A2"><p class="Table_20_Contents">THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD</p></td></tr></table><p class="Note"><span class="Note_20_Label">Note</span>: These characters need not be available in all fonts.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:bullet-char</span> attribute is usable with the following element: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:bullet-char</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a19_761text_bullet-relative-size"><span style="margin-right:0.127cm;">19.761</span></a><a id="__RefHeading__1418772_253892949"/><a id="attribute-text_bullet-relative-size"/>text:bullet-relative-size</h2><p class="Text_20_body">The <span class="Attribute">text:bullet-relative-size</span> attribute specifies a percentage value for the bullet size relative to the font size of the paragraphs in the bullet list.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:bullet-relative-size</span> attribute is usable with the following element: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:bullet-relative-size</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a19_762text_capitalize-entries"><span style="margin-right:0.127cm;">19.762</span></a><a id="__RefHeading__1418774_253892949"/><a id="attribute-text_capitalize-entries"/>text:capitalize-entries</h2><p class="Text_20_body">The <span class="Attribute">text:capitalize-entries</span> attribute specifies whether the entries in an index are capitalized.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:capitalize-entries</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the case of entries in an index should not change. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the entries in an index should be capitalized. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">text:capitalize-entries</span> attribute controls capitalization of index entries during the generation of indexes. Index entries may be entered in either upper or lower case, without regard to the <span class="Attribute">text:capitalize-entries</span> attribute. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:capitalize-entries</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:capitalize-entries</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_763text_c"><span style="margin-right:0.127cm;">19.763</span></a><a id="__RefHeading__1418776_253892949"/><a id="attribute-text_c"/>text:c</h2><p class="Text_20_body">The <span class="Attribute">text:c</span> attribute specifies the number of “ “ (U+0020, SPACE) characters that a <span class="Element">&lt;text:s&gt;</span> element represents. A missing <span class="Attribute">text:c</span> attribute is interpreted as a single “ “ (U+0020, SPACE) character. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:c</span> attribute is usable with the following element: <span class="Element">&lt;text:s&gt;</span> <a href="#element-text_s">6.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:c</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_764text_caption-sequence-format"><span style="margin-right:0.127cm;">19.764</span></a><a id="__RefHeading__1418778_253892949"/><a id="attribute-text_caption-sequence-format"/>text:caption-sequence-format</h2><p class="Text_20_body">The <span class="Attribute">text:caption-sequence-format</span> attribute specifies the format of entries for an index of illustrations obtained from image captions. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:caption-sequence-format</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">caption</span>: text of the caption in which the referenced sequence field is included (without sequence number and value).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">category-and-value</span>: displays the name and value of the referenced sequence field. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">text</span>: displays the value of the referenced sequence field. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:caption-sequence-format</span> attribute is usable with the following elements: <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a> and <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:caption-sequence-format</span> attribute are <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">category-and-value</span> or <span class="Attribute_20_Value">caption</span>.</p><h2 class="Heading_20_2"><a id="a19_765text_caption-sequence-name"><span style="margin-right:0.127cm;">19.765</span></a><a id="__RefHeading__1418780_253892949"/><a id="attribute-text_caption-sequence-name"/>text:caption-sequence-name</h2><p class="Text_20_body">The <span class="Attribute">text:caption-sequence-name</span> attribute specifies the sequence by which captions are identified.</p><p class="Text_20_body">If the <span class="Attribute">text:use-caption</span> attribute is set to <span class="Attribute_20_Value">true</span>, this attribute shall be present.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Illustration captions are regular paragraphs. For index generation, a paragraph is considered to be a caption if it contains the sequence variable with the name specified by the <span class="Attribute">text:caption-sequence-name</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:caption-sequence-name</span> attribute is usable with the following elements: <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a> and <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:caption-sequence-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_766text_change-id"><span style="margin-right:0.127cm;">19.766</span></a><a id="__RefHeading__1418782_253892949"/><a id="attribute-text_change-id"/>text:change-id</h2><p class="Text_20_body">The <span class="Attribute">text:change-id</span> attribute specifies the id that links <span class="Element">&lt;text:change-start&gt;</span>, <span class="Element">&lt;text:change-end&gt;</span>, and <span class="Element">&lt;text:change&gt;</span> elements to the <span class="Element">&lt;text:changed-region&gt;</span> element that contains change information. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:change-id</span> attribute is usable with the following elements: <span class="Element">&lt;text:change&gt;</span> <a href="#element-text_change">5.5.7.4</a>, <span class="Element">&lt;text:change-end&gt;</span> <a href="#element-text_change-end">5.5.7.3</a> and <span class="Element">&lt;text:change-start&gt;</span> <a href="#element-text_change-start">5.5.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:change-id</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_767text_chapter"><span style="margin-right:0.127cm;">19.767</span></a><a id="__RefHeading__1418784_253892949"/><a id="attribute-text_chapter"/>text:chapter</h2><p class="Text_20_body">The <span class="Attribute">text:chapter</span> attribute specifies the chapter reference for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:chapter</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:chapter</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_768text_citation-body-style-name"><span style="margin-right:0.127cm;">19.768</span></a><a id="__RefHeading__1418786_253892949"/><a id="attribute-text_citation-body-style-name"/>text:citation-body-style-name</h2><p class="Text_20_body">The <span class="Attribute">text:citation-body-style-name</span> attribute specifies the text style to use for a note citation in the text flow.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:citation-body-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:citation-body-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_769text_citation-style-name"><span style="margin-right:0.127cm;">19.769</span></a><a id="__RefHeading__1418788_253892949"/><a id="attribute-text_citation-style-name"/>text:citation-style-name</h2><p class="Text_20_body">The <span class="Attribute">text:citation-style-name</span> attribute specifies the text style to use for a note citation within the footnote.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:citation-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:citation-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_770text_class-names"><span style="margin-right:0.127cm;">19.770</span></a><a id="__RefHeading__1418790_253892949"/><a id="attribute-text_class-names"/>text:class-names</h2><h3 class="Heading_20_3"><a id="a19_770_1General"><span style="margin-right:0.127cm;">19.770.1</span></a><a id="__RefHeading__1418792_253892949"/>General</h3><p class="Text_20_body">A <span class="Attribute">text:class-names</span> attribute specifies a white space separated list of style names. The referenced styles are applied in the order they are contained in the list. </p><p class="Text_20_body">If both <span class="Attribute">text:style-name</span> and <span class="Attribute">text:class-names</span> are present, the style referenced by the <span class="Attribute">text:style-name</span> attribute is applied before the styles referenced by <span class="Attribute">text:class-names</span> attribute. If a conditional style is specified together with a <span class="Attribute">text:class-names</span> attribute, but without a <span class="Attribute">text:style-name</span> attribute, the text:style-name attribute is assumed to have the value of the first style name in the list defined by the text:class-name attribute. </p><h3 class="Heading_20_3"><a id="a19_770_2_text_h_"><span style="margin-right:0.127cm;">19.770.2</span></a><a id="__RefHeading__1418794_253892949"/><a id="attribute-text_class-names_element-text_h"/>&lt;text:h&gt;</h3><p class="Text_20_body">A <span class="Attribute">text:class-names</span> attribute specifies a white space separated list of <span class="Attribute_20_Value">paragraph</span> style names.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:class-names</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:class-names</span> attribute has the data type <span class="Datatype">styleNameRefs</span> <a href="#datatype-styleNameRefs">18.3.33</a>.</p><h3 class="Heading_20_3"><a id="a19_770_3_text_p_"><span style="margin-right:0.127cm;">19.770.3</span></a><a id="__RefHeading__1418796_253892949"/><a id="attribute-text_class-names_element-text_p"/>&lt;text:p&gt;</h3><p class="Text_20_body">A <span class="Attribute">text:class-names</span> attribute specifies a white space separated list of <span class="Attribute_20_Value">paragraph</span> style names.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:class-names</span> attribute is usable with the following element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:class-names</span> attribute has the data type <span class="Datatype">styleNameRefs</span> <a href="#datatype-styleNameRefs">18.3.33</a>.</p><h3 class="Heading_20_3"><a id="a19_770_4_text_span_"><span style="margin-right:0.127cm;">19.770.4</span></a><a id="__RefHeading__1418798_253892949"/><a id="attribute-text_class-names_element-text_span"/>&lt;text:span&gt;</h3><p class="Text_20_body">A <span class="Attribute">text:class-names</span> attribute specifies a white space separated list of text style names.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:class-names</span> attribute is usable with the following element: <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:class-names</span> attribute has the data type <span class="Datatype">styleNameRefs</span> <a href="#datatype-styleNameRefs">18.3.33</a>.</p><h2 class="Heading_20_2"><a id="a19_771text_column-name"><span style="margin-right:0.127cm;">19.771</span></a><a id="__RefHeading__1418800_253892949"/><a id="attribute-text_column-name"/>text:column-name</h2><p class="Text_20_body">The <span class="Attribute">text:column-name</span> attribute specifies the name of the column from which data is displayed. The value of this attribute shall be a column name contained in the current selection as specified by the data source.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:column-name</span> attribute is usable with the following element: <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:column-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_772text_combine-entries"><span style="margin-right:0.127cm;">19.772</span></a><a id="__RefHeading__1418802_253892949"/><a id="attribute-text_combine-entries"/>text:combine-entries</h2><p class="Text_20_body">The <span class="Attribute">text:combine-entries</span> attribute specifies whether multiple entries for a single word should be combined into a single entry.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:combine-entries</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: multiple entries for a single word should not be combined into a single entry. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: multiple entries for a single word should be combined into a single entry. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:combine-entries</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:combine-entries</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_773text_combine-entries-with-dash"><span style="margin-right:0.127cm;">19.773</span></a><a id="__RefHeading__1418804_253892949"/><a id="attribute-text_combine-entries-with-dash"/>text:combine-entries-with-dash</h2><p class="Text_20_body">The <span class="Attribute">text:combine-entries-with-dash</span> attributes specifies that multiple entries for a single word that should be displayed as a single entry, as per a <span class="Attribute">text:combine-entries</span> attribute, should be displayed as a range of numbers separated by a dash.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:combine-entries-with-dash</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: multiple entries for a single word should not be displayed as a range of numbers separated by a dash. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: multiple entries for a single word should be displayed as a range of numbers separated by a dash. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:combine-entries-with-dash</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:combine-entries-with-dash</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_774text_combine-entries-with-pp"><span style="margin-right:0.127cm;">19.774</span></a><a id="__RefHeading__1418806_253892949"/><a id="attribute-text_combine-entries-with-pp"/>text:combine-entries-with-pp</h2><p class="Text_20_body">The <span class="Attribute">text:combine-entries-with-pp</span> attributes specifies that multiple entries for a single word that should be displayed as a single entry, as per a <span class="Attribute">text:combine-entries</span> attribute, should be displayed as the start page number, followed by a "<span class="Attribute_20_Value_20_Fragment">ff</span>", or the appropriate label for the chosen language.</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: multiple entries for a single word are should not be displayed as the start page number, followed by a "<span class="Attribute_20_Value_20_Fragment">ff</span>", or the appropriate label for the chosen language. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: multiple entries for a single word are should be displayed as the start page number, followed by a "<span class="Attribute_20_Value_20_Fragment">ff</span>", or the appropriate label for the chosen language. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:combine-entries-with-pp</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:combine-entries-with-pp</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_775text_comma-separated"><span style="margin-right:0.127cm;">19.775</span></a><a id="__RefHeading__1418808_253892949"/><a id="attribute-text_comma-separated"/>text:comma-separated</h2><p class="Text_20_body">The <span class="Attribute">text:comma-separated</span> attribute specifies how to treat multiple index entries. Instead of listing each index entry on a separate line, multiple entries can be listed on a single line separated by a comma “,” (U+002C, COMMA). If the value of this attribute is <span class="Source_20_Text">true</span>, multiple entries are listed on a single line separated by a comma. By default, the value of this attribute is <span class="Attribute_20_Value">false</span> and each index entry is displayed on a separate line.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:comma-separated</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: each index entry for a word is displayed on a separate line. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: each index entry for a word is listed on a single line separated by a comma “,” (U+002C, COMMA). <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:comma-separated</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:comma-separated</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_776text_cond-style-name"><span style="margin-right:0.127cm;">19.776</span></a><a id="__RefHeading__1418810_253892949"/><a id="attribute-text_cond-style-name"/>text:cond-style-name</h2><p class="Text_20_body">The <span class="Attribute">text:cond-style-name</span> attribute specifies a conditional-style, that is, a style that contains conditions and maps to other styles. The styles referenced shall be a paragraph style. <a href="#element-style_map">16.3</a></p><p class="Text_20_body">If a conditional style is applied to a paragraph, the <span class="Attribute">text:style-name</span> attribute should contain the name of the style that was the result of the conditional style evaluation, while the conditional style name itself is the value of the <span class="Attribute">text:cond-style-name</span> attribute. The referenced style can be a common style or an automatic style. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:cond-style-name</span> attribute is usable with the following elements: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:cond-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_777text_condition"><span style="margin-right:0.127cm;">19.777</span></a><a id="__RefHeading__1418812_253892949"/><a id="attribute-text_condition"/>text:condition</h2><h3 class="Heading_20_3"><a id="a19_777_1General"><span style="margin-right:0.127cm;">19.777.1</span></a><a id="__RefHeading__1418814_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies a condition. Conditions do not have a predefined syntax, but the attribute value should begin with a namespace prefix, followed by a ":" (U+003A, COLON) separator, followed by the text of a formula. The namespace bound to the prefix determines the syntax and semantics of the formula. </p><h3 class="Heading_20_3"><a id="a19_777_2_text_conditional-text_"><span style="margin-right:0.127cm;">19.777.2</span></a><a id="__RefHeading__1418816_253892949"/><a id="attribute-text_condition_element-text_conditional-text"/>&lt;text:conditional-text&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies the condition that determines which of the two text strings of an <span class="Element">&lt;text:conditional-text&gt;</span> text field is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_777_3_text_database-next_"><span style="margin-right:0.127cm;">19.777.3</span></a><a id="__RefHeading__1418818_253892949"/><a id="attribute-text_condition_element-text_database-next"/>&lt;text:database-next&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies a condition expression. The expression is evaluated and if the result interpreted as a Boolean value is true, the next row is used as the new current row. </p><p class="Text_20_body">If the <span class="Element">&lt;text:database-next&gt;</span> element has no text:condition attribute, the next available row is selected. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_777_4_text_database-row-select_"><span style="margin-right:0.127cm;">19.777.4</span></a><a id="__RefHeading__1418820_253892949"/><a id="attribute-text_condition_element-text_database-row-select"/>&lt;text:database-row-select&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies a condition for selecting a row. If the attribute is present, a new row will be selected only if the condition evaluates to a value interpreted as true.</p><p class="Text_20_body">If a <span class="Element">&lt;text:database-row-select&gt;</span> element has no <span class="Attribute">text:condition</span> attribute, the next row is selected.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_777_5_text_hidden-paragraph_"><span style="margin-right:0.127cm;">19.777.5</span></a><a id="__RefHeading__1418822_253892949"/><a id="attribute-text_condition_element-text_hidden-paragraph"/>&lt;text:hidden-paragraph&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies a Boolean expression. If the expression evaluates to <span class="Attribute_20_Value">true</span>, the paragraph is hidden. If the expression evaluates to false, the paragraph is displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_777_6_text_hidden-text_"><span style="margin-right:0.127cm;">19.777.6</span></a><a id="__RefHeading__1418824_253892949"/><a id="attribute-text_condition_element-text_hidden-text"/>&lt;text:hidden-text&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies a Boolean expression. If the expression evaluates to <span class="Attribute_20_Value">true</span>, the text is hidden. If the expression evaluates to false, the text is displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_777_7_text_section_"><span style="margin-right:0.127cm;">19.777.7</span></a><a id="__RefHeading__1418826_253892949"/><a id="attribute-text_condition_element-text_section"/>&lt;text:section&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies the condition under which a section is hidden. The condition is encoded as a string. If the value of <span class="Attribute">text:display</span> is <span class="Source_20_Text">condition</span>, the <span class="Attribute">text:condition</span> attribute shall be present.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:condition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_778text_connection-name"><span style="margin-right:0.127cm;">19.778</span></a><a id="__RefHeading__1418828_253892949"/><a id="attribute-text_connection-name"/>text:connection-name</h2><p class="Text_20_body">The <span class="Attribute">text:connection-name</span> attribute specifies the name of the DDE connection to which a field refers.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:connection-name</span> attribute is usable with the following element: <span class="Element">&lt;text:dde-connection&gt;</span> <a href="#element-text_dde-connection">7.7.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:connection-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_779text_consecutive-numbering"><span style="margin-right:0.127cm;">19.779</span></a><a id="__RefHeading__1418830_253892949"/><a id="attribute-text_consecutive-numbering"/>text:consecutive-numbering</h2><p class="Text_20_body">The <span class="Attribute">text:consecutive-numbering</span> attribute specifies whether the style uses consecutive numbering for all list levels or whether each list level restarts the numbering.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:consecutive-numbering</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: each list level restarts numbering. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consecutive numbering is used for all list levels. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:consecutive-numbering</span> attribute is usable with the following element: <span class="Element">&lt;text:list-style&gt;</span> <a href="#element-text_list-style">16.30</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:consecutive-numbering</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_780text_continue-list"><span style="margin-right:0.127cm;">19.780</span></a><a id="__RefHeading__1418832_253892949"/><a id="attribute-text_continue-list"/>text:continue-list</h2><p class="Text_20_body">The <span class="Attribute">text:continue-list</span> attribute specifies the <span class="Attribute">xml:id</span> value of a list that is to be continued.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:continue-list</span> attribute is usable with the following element: <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:continue-list</span> attribute has the data type <span class="Datatype">IDREF</span> <a href="#datatype-IDREF">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_781text_continue-numbering"><span style="margin-right:0.127cm;">19.781</span></a><a id="__RefHeading__1418834_253892949"/><a id="attribute-text_continue-numbering"/>text:continue-numbering</h2><p class="Text_20_body">The <span class="Attribute">text:continue-numbering</span> attribute specifies, if the numbering of the preceding list is continued or not. This attribute is ignored, if attribute <span class="Attribute">text:continue-list</span> <a href="#attribute-text_continue-list">19.780</a> is present. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:continue-numbering</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: if <span class="Attribute">text:continue-list</span> attribute is not present and the numbering style of the preceding list is the same as the current list, the number of the first list item in the current list is the number of the last item in the preceding list incremented by one. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: if the <span class="Attribute">text:continue-list</span> attribute is not present, the numbering of the preceding list is not continued.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The use of the <span class="Attribute">text:continue-numbering</span> attribute with the <span class="Element">&lt;text:numbered-paragraph&gt;</span> element has been deprecated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:continue-numbering</span> attribute is usable with the following elements: <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a> and <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:continue-numbering</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_782text_copy-outline-levels"><span style="margin-right:0.127cm;">19.782</span></a><a id="__RefHeading__1418836_253892949"/><a id="attribute-text_copy-outline-levels"/>text:copy-outline-levels</h2><p class="Text_20_body">The <span class="Attribute">text:copy-outline-levels</span> attribute specifies whether index entries are indented according to the outline level of their source. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:copy-outline-levels</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: no indentation is added.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: index entries are indented according to the outline level of their source. <span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:copy-outline-levels</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:copy-outline-levels</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_783text_count-empty-lines"><span style="margin-right:0.127cm;">19.783</span></a><a id="__RefHeading__1418838_253892949"/><a id="attribute-text_count-empty-lines"/>text:count-empty-lines</h2><p class="Text_20_body">The <span class="Attribute">text:count-empty-lines</span> attribute specifies whether empty lines are included in the line count. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:count-empty-lines</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: empty lines are not included in a line count.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: empty lines are included in a line count.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:count-empty-lines</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:count-empty-lines</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_784text_count-in-text-boxes"><span style="margin-right:0.127cm;">19.784</span></a><a id="__RefHeading__1418840_253892949"/><a id="attribute-text_count-in-text-boxes"/>text:count-in-text-boxes</h2><p class="Text_20_body">The <span class="Attribute">text:count-in-text-boxes</span> attribute specifies whether text in text boxes is included in the line count. If the value of this attribute is <span class="Attribute_20_Value">true</span>, text within text boxes is included in the line count.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:count-in-text-boxes</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text within text boxes is not included in a line count.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text within text boxes is included in a line count.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:count-in-text-boxes</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:count-in-text-boxes</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_785text_current-value"><span style="margin-right:0.127cm;">19.785</span></a><a id="__RefHeading__1418842_253892949"/><a id="attribute-text_current-value"/>text:current-value</h2><p class="Text_20_body">The <span class="Attribute">text:current-value</span> attribute specifies the evaluation result of a condition given by the expression in a <span class="Attribute">text:condition</span> attribute. <a href="#attribute-text_condition_element-text_conditional-text">613</a> The value of this attribute is updated whenever the expression is evaluated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:current-value</span> attribute is usable with the following element: <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:current-value</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_786text_custom1"><span style="margin-right:0.127cm;">19.786</span></a><a id="__RefHeading__1418844_253892949"/><a id="attribute-text_custom1"/>text:custom1</h2><p class="Text_20_body">The <span class="Attribute">text:custom1</span> attribute specifies the first of up to five user defined fields for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:custom1</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:custom1</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_787text_custom2"><span style="margin-right:0.127cm;">19.787</span></a><a id="__RefHeading__1418846_253892949"/><a id="attribute-text_custom2"/>text:custom2</h2><p class="Text_20_body">The <span class="Attribute">text:custom2</span> attribute specifies the second of up to five user defined fields for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:custom2</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:custom2</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_788text_custom3"><span style="margin-right:0.127cm;">19.788</span></a><a id="__RefHeading__1418848_253892949"/><a id="attribute-text_custom3"/>text:custom3</h2><p class="Text_20_body">The <span class="Attribute">text:custom3</span> attribute specifies the third of up to five user defined fields for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:custom3</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:custom3</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_789text_custom4"><span style="margin-right:0.127cm;">19.789</span></a><a id="__RefHeading__1418850_253892949"/><a id="attribute-text_custom4"/>text:custom4</h2><p class="Text_20_body">The <span class="Attribute">text:custom4</span> attribute specifies the fourth of up to five user defined fields for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:custom4</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:custom4</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_790text_custom5"><span style="margin-right:0.127cm;">19.790</span></a><a id="__RefHeading__1418852_253892949"/><a id="attribute-text_custom5"/>text:custom5</h2><p class="Text_20_body">The <span class="Attribute">text:custom5</span> attribute specifies the fifth of up to five user defined fields for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:custom5</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:custom5</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_791text_database-name"><span style="margin-right:0.127cm;">19.791</span></a><a id="__RefHeading__1418854_253892949"/><a id="attribute-text_database-name"/>text:database-name</h2><p class="Text_20_body">The <span class="Attribute">text:database-name</span> attribute specifies a source database by its name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:database-name</span> attribute is usable with the following elements: <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a> and <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:database-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_792text_date-adjust"><span style="margin-right:0.127cm;">19.792</span></a><a id="__RefHeading__1418856_253892949"/><a id="attribute-text_date-adjust"/>text:date-adjust</h2><p class="Text_20_body">The <span class="Attribute">text:date-adjust</span> attribute specifies an adjustment to the value of a date field. If the time period is negative, it is subtracted from the value of the date field.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:date-adjust</span> attribute is usable with the following element: <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:date-adjust</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_793text_date-value"><span style="margin-right:0.127cm;">19.793</span></a><a id="__RefHeading__1418858_253892949"/><a id="attribute-text_date-value"/>text:date-value</h2><p class="Text_20_body">The <span class="Attribute">text:date-value</span> attribute specifies a date value. If no value is specified, whether the field is marked as fixed or not, the current date is assumed.</p><p class="Note"><span class="Note_20_Label">Note:</span> This attribute can also be used to specify a future date. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:date-value</span> attribute is usable with the following elements: <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a> and <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:date-value</span> attribute has the data type <span class="Datatype">dateOrDateTime</span> <a href="#datatype-dateOrDateTime">18.3.14</a>.</p><h2 class="Heading_20_2"><a id="a19_794text_default-style-name"><span style="margin-right:0.127cm;">19.794</span></a><a id="__RefHeading__1418860_253892949"/><a id="attribute-text_default-style-name"/>text:default-style-name</h2><p class="Text_20_body">The <span class="Attribute">text:default-style-name</span> attribute specifies a default footnote paragraph style for new footnotes that are inserted into a document. It is not evaluated for footnotes that already exist.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:default-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:default-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_795text_description"><span style="margin-right:0.127cm;">19.795</span></a><a id="__RefHeading__1418862_253892949"/><a id="attribute-text_description"/>text:description</h2><p class="Text_20_body">The <span class="Attribute">text:description</span> attribute specifies a message that is displayed when users are prompted for input. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:description</span> attribute is usable with the following elements: <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>, <span class="Element">&lt;text:text-input&gt;</span> <a href="#element-text_text-input">7.4.15</a>, <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a> and <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:description</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_796text_display"><span style="margin-right:0.127cm;">19.796</span></a><a id="__RefHeading__1418864_253892949"/><a id="attribute-text_display"/>text:display</h2><h3 class="Heading_20_3"><a id="a19_796_1General"><span style="margin-right:0.127cm;">19.796.1</span></a><a id="__RefHeading__1418866_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies options for the display of text. </p><h3 class="Heading_20_3"><a id="a19_796_2_text_chapter_"><span style="margin-right:0.127cm;">19.796.2</span></a><a id="__RefHeading__1418868_253892949"/><a id="attribute-text_display_element-text_chapter"/>&lt;text:chapter&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the information that a chapter field should display. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name</span>: name of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number</span>: number of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">umber-and-name</span>: name and number of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">lain-number</span>: number of a chapter without text defined by <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a> and <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, both of which are attributes on the <span class="Element">&lt;text:outline-level-style&gt;</span> element that defines the format for a chapter number.<a href="#element-text_outline-level-style">16.35</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">plain-number-and-name</span>: name of a chapter with the number of the same chapter without text defined by <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a> and <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, both of which are attributes on the <span class="Element">&lt;text:outline-level-style&gt;</span> element that defines the format for a chapter number.<a href="#element-text_outline-level-style">16.35</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">name</span>, <span class="Attribute_20_Value">number</span>, <span class="Attribute_20_Value">number-and-name</span>, <span class="Attribute_20_Value">plain-number-and-name</span> or <span class="Attribute_20_Value">plain-number</span>.</p><h3 class="Heading_20_3"><a id="a19_796_3_text_expression_"><span style="margin-right:0.127cm;">19.796.3</span></a><a id="__RefHeading__1418870_253892949"/><a id="attribute-text_display_element-text_expression"/>&lt;text:expression&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the display of a field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">formula</span>: displays the formula instead of the value of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">none</span>: hides the content of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">value</span>: displays the value of a field.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">value</span> or <span class="Attribute_20_Value">formula</span>.</p><h3 class="Heading_20_3"><a id="a19_796_4_text_file-name_"><span style="margin-right:0.127cm;">19.796.4</span></a><a id="__RefHeading__1418872_253892949"/><a id="attribute-text_display_element-text_file-name"/>&lt;text:file-name&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies how much of the file name to display. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">full</span>: full file name, extension and file path.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">path</span>: file path only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name</span>: file name without extension.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name-and-extension</span>: file name and extension. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The filename may be an IRI, either because an IRI has been used to retrieve the file, or the consumer internally uses IRIs and therefore converts system specific paths into an IRI. If this is the case, and if the path, the name or the extension cannot be evaluated from the IRI, then the IRI should be displayed unmodified.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">full</span>, <span class="Attribute_20_Value">path</span>, <span class="Attribute_20_Value">name</span> or <span class="Attribute_20_Value">name-and-extension</span>.</p><h3 class="Heading_20_3"><a id="a19_796_5_text_index-entry-chapter_"><span style="margin-right:0.127cm;">19.796.5</span></a><a id="__RefHeading__1418874_253892949"/><a id="attribute-text_display_element-text_index-entry-chapter"/>&lt;text:index-entry-chapter&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the information that a chapter field should display. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name</span>: name of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number</span>: number of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number-and-name</span>: name and number of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">plain-number</span>: number of a chapter without text defined by <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a> and <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, both of which are attributes on the <span class="Element">&lt;text:outline-level-style&gt;</span> element that defines the format for a chapter number.<a href="#element-text_outline-level-style">16.35</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">plain-number-and-name</span>: name of a chapter with the number of the same chapter without text defined by <span class="Attribute">style:num-prefix</span> <a href="#attribute-style_num-prefix">19.502</a> and <span class="Attribute">style:num-suffix</span> <a href="#attribute-style_num-suffix">19.503</a>, both of which are attributes on the <span class="Element">&lt;text:outline-level-style&gt;</span> element that defines the format for a chapter number.<a href="#element-text_outline-level-style">16.35</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a> element the default value for this attribute is <span class="Attribute_20_Value">number</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">name</span>, <span class="Attribute_20_Value">number</span>, <span class="Attribute_20_Value">number-and-name</span>, <span class="Attribute_20_Value">plain-number</span> or <span class="Attribute_20_Value">plain-number-and-name</span>.</p><h3 class="Heading_20_3"><a id="a19_796_6_text_section_"><span style="margin-right:0.127cm;">19.796.6</span></a><a id="__RefHeading__1418876_253892949"/><a id="attribute-text_display_element-text_section"/>&lt;text:section&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies whether the section is hidden. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">condition</span>: the section is hidden under the condition specified in the <span class="Attribute">text:condition</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: the section is hidden unconditionally.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the section is displayed. This is the default setting.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">true</span>, <span class="Attribute_20_Value">none</span> or <span class="Attribute_20_Value">condition</span>.</p><h3 class="Heading_20_3"><a id="a19_796_7_text_table-formula_"><span style="margin-right:0.127cm;">19.796.7</span></a><a id="__RefHeading__1418878_253892949"/><a id="attribute-text_display_element-text_table-formula"/>&lt;text:table-formula&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the type of the value that appears in this element. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">formula</span>: the formula used to calculate the value of the field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value</span>: the value of the field.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">value</span> or <span class="Attribute_20_Value">formula</span>.</p><h3 class="Heading_20_3"><a id="a19_796_8_text_template-name_"><span style="margin-right:0.127cm;">19.796.8</span></a><a id="__RefHeading__1418880_253892949"/><a id="attribute-text_display_element-text_template-name"/>&lt;text:template-name&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the information about a document template to display.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">area</span>: The category of the template. Assignments of categories to templates is implementation-dependent. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">full</span>: full file name, extension and file path.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name</span>: file name only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">name-and-extension</span>: file name and extension. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">path</span>: file path only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">title</span>: The title.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:template-name&gt;</span> <a href="#element-text_template-name">7.3.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">full</span>, <span class="Attribute_20_Value">path</span>, <span class="Attribute_20_Value">name</span>, <span class="Attribute_20_Value">name-and-extension</span>, <span class="Attribute_20_Value">area</span> or <span class="Attribute_20_Value">title</span>.</p><h3 class="Heading_20_3"><a id="a19_796_9_text_user-field-get_"><span style="margin-right:0.127cm;">19.796.9</span></a><a id="__RefHeading__1418882_253892949"/><a id="attribute-text_display_element-text_user-field-get"/>&lt;text:user-field-get&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the display of a user field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">formula</span>: displays the formula instead of the value of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">none</span>: hides the content of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">value</span>: displays the value of a field.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">value</span>, <span class="Attribute_20_Value">formula</span> or <span class="Attribute_20_Value">none</span>.</p><h3 class="Heading_20_3"><a id="a19_796_10_text_variable-get_"><span style="margin-right:0.127cm;">19.796.10</span></a><a id="__RefHeading__1418884_253892949"/><a id="attribute-text_display_element-text_variable-get"/>&lt;text:variable-get&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the display of a variable get field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">formula</span>: displays the formula instead of the value of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">value</span>: displays the value of a field.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">value</span> or <span class="Attribute_20_Value">formula</span>.</p><h3 class="Heading_20_3"><a id="a19_796_11_text_variable-input_"><span style="margin-right:0.127cm;">19.796.11</span></a><a id="__RefHeading__1418886_253892949"/><a id="attribute-text_display_element-text_variable-input"/>&lt;text:variable-input&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the display of a variable input field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: hides the content of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">value</span>: displays the value of a field.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">value</span> or <span class="Attribute_20_Value">none</span>.</p><h3 class="Heading_20_3"><a id="a19_796_12_text_variable-set_"><span style="margin-right:0.127cm;">19.796.12</span></a><a id="__RefHeading__1418888_253892949"/><a id="attribute-text_display_element-text_variable-set"/>&lt;text:variable-set&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies the display of a variable set field. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">none</span>: hides the content of a field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Source_20_Text">value</span>: displays the value of a field.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">value</span> or <span class="Attribute_20_Value">none</span>.</p><h2 class="Heading_20_2"><a id="a19_797text_display-levels"><span style="margin-right:0.127cm;">19.797</span></a><a id="__RefHeading__1418890_253892949"/><a id="attribute-text_display-levels"/>text:display-levels</h2><p class="Text_20_body">The <span class="Attribute">text:display-levels</span> attribute specifies the number of levels whose numbers are displayed at the current level.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:display-levels</span> attribute is usable with the following elements: <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a> and <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:display-levels</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_798text_display-outline-level"><span style="margin-right:0.127cm;">19.798</span></a><a id="__RefHeading__1418892_253892949"/><a id="attribute-text_display-outline-level"/>text:display-outline-level</h2><p class="Text_20_body">The <span class="Attribute">text:display-outline-level</span> attribute specifies the numbering of a sequence by chapter. This attribute specifies an outline level that determines which chapters to reference for the chapter-specific numbering. All chapters that are at or below the specified outline level reset the value of the sequence to zero, the default value. The chapter number of the last chapter at or below the specified outline level is prefixed to the sequence number. Choosing an outline level of zero results in a continuous numbering of all sequence elements for that sequence variable.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display-outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:sequence-decl&gt;</span> <a href="#element-text_sequence-decl">7.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:display-outline-level</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_799text_duration"><span style="margin-right:0.127cm;">19.799</span></a><a id="__RefHeading__1418894_253892949"/><a id="attribute-text_duration"/>text:duration</h2><p class="Text_20_body">The <span class="Attribute">text:duration</span> attribute contains the value of a <span class="Element">&lt;text:editing-duration&gt;</span> field element if its value is fixed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:duration</span> attribute is usable with the following element: <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:duration</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_800text_edition"><span style="margin-right:0.127cm;">19.800</span></a><a id="__RefHeading__1418896_253892949"/><a id="attribute-text_edition"/>text:edition</h2><p class="Text_20_body">The <span class="Attribute">text:edition</span> attribute specifies the edition for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:edition</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:edition</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_801text_editor"><span style="margin-right:0.127cm;">19.801</span></a><a id="__RefHeading__1418898_253892949"/><a id="attribute-text_editor"/>text:editor</h2><p class="Text_20_body">The <span class="Attribute">text:editor</span> attribute specifies the editor for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:editor</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:editor</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_802text_filter-name"><span style="margin-right:0.127cm;">19.802</span></a><a id="__RefHeading__1418900_253892949"/><a id="attribute-text_filter-name"/>text:filter-name</h2><p class="Text_20_body">The <span class="Attribute">text:filter-name</span> attribute specifies the filter type to be used to import the link target. The value of this attribute is implementation-dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:filter-name</span> attribute is usable with the following element: <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:filter-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_803text_fixed"><span style="margin-right:0.127cm;">19.803</span></a><a id="__RefHeading__1418902_253892949"/><a id="attribute-text_fixed"/>text:fixed</h2><p class="Text_20_body">The <span class="Attribute">text:fixed</span> attribute specifies whether the value of a field element is fixed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:fixed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: value of the field element where this attribute appears may be changed. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: value of the field element where this attribute appears is preserved.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:fixed</span> attribute is usable with the following elements: <span class="Element">&lt;text:author-initials&gt;</span> <a href="#element-text_author-initials">7.3.7.2</a>, <span class="Element">&lt;text:author-name&gt;</span> <a href="#element-text_author-name">7.3.7.1</a>, <span class="Element">&lt;text:creation-date&gt;</span> <a href="#element-text_creation-date">7.5.3</a>, <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:creator&gt;</span> <a href="#element-text_creator">7.5.17</a>, <span class="Element">&lt;text:date&gt;</span> <a href="#element-text_date">7.3.2</a>, <span class="Element">&lt;text:description&gt;</span> <a href="#element-text_description">7.5.5</a>, <span class="Element">&lt;text:editing-cycles&gt;</span> <a href="#element-text_editing-cycles">7.5.13</a>, <span class="Element">&lt;text:editing-duration&gt;</span> <a href="#element-text_editing-duration">7.5.14</a>, <span class="Element">&lt;text:file-name&gt;</span> <a href="#element-text_file-name">7.3.9</a>, <span class="Element">&lt;text:initial-creator&gt;</span> <a href="#element-text_initial-creator">7.5.2</a>, <span class="Element">&lt;text:keywords&gt;</span> <a href="#element-text_keywords">7.5.12</a>, <span class="Element">&lt;text:modification-date&gt;</span> <a href="#element-text_modification-date">7.5.16</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>, <span class="Element">&lt;text:print-date&gt;</span> <a href="#element-text_print-date">7.5.8</a>, <span class="Element">&lt;text:printed-by&gt;</span> <a href="#element-text_printed-by">7.5.9</a>, <span class="Element">&lt;text:print-</span><span class="Element">time&gt;</span> <a href="#element-text_print-time">7.5.7</a>, <span class="Element">&lt;text:sender-city&gt;</span> <a href="#element-text_sender-city">7.3.6.13</a>, <span class="Element">&lt;text:sender-company&gt;</span> <a href="#element-text_sender-company">7.3.6.10</a>, <span class="Element">&lt;text:sender-country&gt;</span> <a href="#element-text_sender-country">7.3.6.15</a>, <span class="Element">&lt;text:sender-email&gt;</span> <a href="#element-text_sender-email">7.3.6.7</a>, <span class="Element">&lt;text:sender-fax&gt;</span> <a href="#element-text_sender-fax">7.3.6.9</a>, <span class="Element">&lt;text:sender-firstname&gt;</span> <a href="#element-text_sender-firstname">7.3.6.2</a>, <span class="Element">&lt;text:sender-initials&gt;</span> <a href="#element-text_sender-initials">7.3.6.4</a>, <span class="Element">&lt;text:sender-lastname&gt;</span> <a href="#element-text_sender-lastname">7.3.6.3</a>, <span class="Element">&lt;text:sender-phone-private&gt;</span> <a href="#element-text_sender-phone-private">7.3.6.8</a>, <span class="Element">&lt;text:sender-phone-work&gt;</span> <a href="#element-text_sender-phone-work">7.3.6.11</a>, <span class="Element">&lt;text:sender-position&gt;</span> <a href="#element-text_sender-position">7.3.6.6</a>, <span class="Element">&lt;text:sender-postal-code&gt;</span> <a href="#element-text_sender-postal-code">7.3.6.14</a>, <span class="Element">&lt;text:sender-state-or-province&gt;</span> <a href="#element-text_sender-state-or-province">7.3.6.16</a>, <span class="Element">&lt;text:sender-street&gt;</span> <a href="#element-text_sender-street">7.3.6.12</a>, <span class="Element">&lt;text:sender-title&gt;</span> <a href="#element-text_sender-title">7.3.6.5</a>, <span class="Element">&lt;text:subject&gt;</span> <a href="#element-text_subject">7.5.11</a>, <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>, <span class="Element">&lt;text:title&gt;</span> <a href="#element-text_title">7.5.10</a> and <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:fixed</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_804text_footnotes-position"><span style="margin-right:0.127cm;">19.804</span></a><a id="__RefHeading__1418904_253892949"/><a id="attribute-text_footnotes-position"/>text:footnotes-position</h2><p class="Text_20_body">The <span class="Attribute">text:footnotes-position</span> attribute specifies a position for a footnote. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:footnotes-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">document</span>: end of the document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">page</span>: bottom of the page where the footnote citation is located.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">section</span>: end of the section.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">text</span>: at the page where the footnote citation is located, immediately below the page's text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:footnotes-position</span> attribute is usable with the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:footnotes-position</span> attribute are <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">section</span> or <span class="Attribute_20_Value">document</span>.</p><h2 class="Heading_20_2"><a id="a19_805text_formula"><span style="margin-right:0.127cm;">19.805</span></a><a id="__RefHeading__1418906_253892949"/><a id="attribute-text_formula"/>text:formula</h2><p class="Text_20_body">The <span class="Attribute">text:formula</span> attribute specifies the formula or expression used to compute the value of a field. </p><p class="Text_20_body">The attribute value should begin with a namespace prefix followed by ":" (U+003A, COLON) followed by the text of the formula. The namespace bound to the prefix determines the syntax and semantics of the formula. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:formula</span> attribute is usable with the following elements: <span class="Element">&lt;text:expression&gt;</span> <a href="#element-text_expression">7.4.14</a>, <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>, <span class="Element">&lt;text:table-formula&gt;</span> <a href="#element-text_table-formula">7.7.14</a>, <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a> and <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:formula</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_806text_global__deprecated_"><span style="margin-right:0.127cm;">19.806</span></a><a id="__RefHeading__1418908_253892949"/><a id="attribute-text_global"/>text:global (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">text:global</span> attribute specifies whether the user interface of a consumer should consider the documents to which linked text sections are linked as individually editable parts of the document.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:global</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the user interface need not make a distinction between linked text sections and non-linked text sections.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the user interface considers the content of linked text sections as parts of the document which may be edited by editing the documents to which the linked text sections are linked.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">text:global</span> attribute is deprecated in favor of the application/vnd.oasis.opendocument.text-master MIME type. Using this MIME type for a document has the same effect as the value <span class="Attribute_20_Value">true</span> for a <span class="Attribute">text:global</span> attribute.</p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:global</span> attribute is usable with the following element: <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:global</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_807text_howpublished"><span style="margin-right:0.127cm;">19.807</span></a><a id="__RefHeading__1418910_253892949"/><a id="attribute-text_howpublished"/>text:howpublished</h2><p class="Text_20_body">The <span class="Attribute">text:howpublished</span> attribute specifies the publication type for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:howpublished</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:howpublished</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_808text_increment"><span style="margin-right:0.127cm;">19.808</span></a><a id="__RefHeading__1418912_253892949"/><a id="attribute-text_increment"/>text:increment</h2><p class="Text_20_body">The <span class="Attribute">text:increment</span> attribute causes line numbers to be numbered as multiples of a specified increment.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:increment</span> attribute is usable with the following elements: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a> and <span class="Element">&lt;text:linenumbering-separator&gt;</span> <a href="#element-text_linenumbering-separator">16.29.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:increment</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_809text_id"><span style="margin-right:0.127cm;">19.809</span></a><a id="__RefHeading__1418914_253892949"/><a id="attribute-text_id"/>text:id</h2><h3 class="Heading_20_3"><a id="a19_809_1General"><span style="margin-right:0.127cm;">19.809.1</span></a><a id="__RefHeading__1418916_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies an identifier or a name for an element.</p><h3 class="Heading_20_3"><a id="a19_809_2_draw_text-box_"><span style="margin-right:0.127cm;">19.809.2</span></a><a id="__RefHeading__1418918_253892949"/><a id="attribute-text_id_element-draw_text-box"/>&lt;draw:text-box&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies an identifier for an element. </p><p class="Text_20_body">OpenDocument consumers shall ignore a <span class="Attribute">text:id</span> attribute if it occurs on a <span class="Element">&lt;draw:text-box&gt;</span> element with an <span class="Attribute">xml:id</span> attribute value. </p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">text:id</span> attributes for <span class="Element">&lt;draw:text-box&gt;</span> elements in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body"> The value of a <span class="Attribute">text:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same <span class="Element">&lt;draw:text-box&gt;</span> element. </p><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_3_text_alphabetical-index-mark-end_"><span style="margin-right:0.127cm;">19.809.3</span></a><a id="__RefHeading__1418920_253892949"/><a id="attribute-text_id_element-text_alphabetical-index-mark-end"/>&lt;text:alphabetical-index-mark-end&gt; </h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies a name by which start- and end mark elements are connected to each other.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-mark-end&gt;</span> <a href="#element-text_alphabetical-index-mark-end">8.1.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_4_text_alphabetical-index-mark-start_"><span style="margin-right:0.127cm;">19.809.4</span></a><a id="__RefHeading__1418922_253892949"/><a id="attribute-text_id_element-text_alphabetical-index-mark-start"/>&lt;text:alphabetical-index-mark-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies a name by which start- and end mark elements are connected to each other.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_5_text_changed-region_"><span style="margin-right:0.127cm;">19.809.5</span></a><a id="__RefHeading__1418924_253892949"/><a id="attribute-text_id_element-text_changed-region"/>&lt;text:changed-region&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies the an identifier for an element.</p><p class="Text_20_body">The ID value is used in <span class="Attribute_20_Value">text:change-id</span> IDREF values to refer to a particular <span class="Element">&lt;text:changed-region&gt;</span> element.</p><p class="Text_20_body">OpenDocument consumers shall ignore a <span class="Attribute">text:id</span> attribute if it occurs on an element with an <span class="Attribute">xml:id</span> attribute value.</p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">text:id</span> attributes for elements in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body">The value of a <span class="Attribute">text:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same element.</p><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:changed-region&gt;</span> <a href="#element-text_changed-region">5.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_6_text_h_"><span style="margin-right:0.127cm;">19.809.6</span></a><a id="__RefHeading__1418926_253892949"/><a id="attribute-text_id_element-text_h"/>&lt;text:h&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies an identifier for an element.</p><p class="Text_20_body">OpenDocument consumers shall ignore a <span class="Attribute">text:id</span> attribute if it occurs on an element with an <span class="Attribute">xml:id</span> attribute value.</p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">text:id</span> attributes for elements in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body">The value of a <span class="Attribute">text:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same element.</p><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_7_text_note_"><span style="margin-right:0.127cm;">19.809.7</span></a><a id="__RefHeading__1418928_253892949"/><a id="attribute-text_id_element-text_note"/>&lt;text:note&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies specifies a name by which notes can be referenced from <span class="Element">&lt;text:note-ref&gt;</span> elements. See <a href="#element-text_note-ref">7.7.7</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_8_text_p_"><span style="margin-right:0.127cm;">19.809.8</span></a><a id="__RefHeading__1418930_253892949"/><a id="attribute-text_id_element-text_p"/>&lt;text:p&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies an identifier for an element.</p><p class="Text_20_body">OpenDocument consumers shall ignore a <span class="Attribute">text:id</span> attribute if it occurs on a <span class="Element">&lt;text:p&gt;</span> element with an <span class="Attribute">xml:id</span> attribute value. If there is no <span class="Attribute">xml:id</span> attribute value, then a <span class="Attribute">text:id</span> attribute should be processed as it were an <span class="Attribute">xml:id</span> attribute. </p><p class="Text_20_body">OpenDocument producers may write <span class="Attribute">text:id</span> attributes for <span class="Element">&lt;text:p&gt;</span> elements in addition to an <span class="Attribute">xml:id</span> attribute.</p><p class="Text_20_body">A <span class="Element">&lt;text:p&gt;</span> element shall not have an <span class="Attribute">text:id</span> attribute if it has no <span class="Attribute">xml:id</span> attribute value. The value of a <span class="Attribute">text:id</span> attribute shall equal the value of an <span class="Attribute">xml:id</span> attribute on the same <span class="Element">&lt;text:p&gt;</span> element. </p><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute is deprecated in favor of <span class="Attribute">xml:id</span>. <a href="#attribute-xml_id">19.914</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_9_text_toc-mark-end_"><span style="margin-right:0.127cm;">19.809.9</span></a><a id="__RefHeading__1418932_253892949"/><a id="attribute-text_id_element-text_toc-mark-end"/>&lt;text:toc-mark-end&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies a name by which start- and end mark elements are connected to each other.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:toc-mark-end&gt;</span> <a href="#element-text_toc-mark-end">8.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_10_text_toc-mark-start_"><span style="margin-right:0.127cm;">19.809.10</span></a><a id="__RefHeading__1418934_253892949"/><a id="attribute-text_id_element-text_toc-mark-start"/>&lt;text:toc-mark-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies a name by which start- and end mark elements are connected to each other. The name specified by the <span class="Attribute">text:id</span> attribute shall be unique except for a matching <span class="Element">&lt;text:toc-mark-end&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_11_text_user-index-mark-end_"><span style="margin-right:0.127cm;">19.809.11</span></a><a id="__RefHeading__1418936_253892949"/><a id="attribute-text_id_element-text_user-index-mark-end"/>&lt;text:user-index-mark-end&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies a string by which start- and end mark elements are connected to each other. The string shall be unique except for matching its corresponding <span class="Element">&lt;text:user-index-mark-start&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-mark-end&gt;</span> <a href="#element-text_user-index-mark-end">8.1.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_809_12_text_user-index-mark-start_"><span style="margin-right:0.127cm;">19.809.12</span></a><a id="__RefHeading__1418938_253892949"/><a id="attribute-text_id_element-text_user-index-mark-start"/>&lt;text:user-index-mark-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:id</span> attribute specifies a string by which start- and end mark elements are connected to each other. The string shall be unique except for matching its corresponding <span class="Element">&lt;text:user-index-mark-end&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:id</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:id</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_810text_identifier"><span style="margin-right:0.127cm;">19.810</span></a><a id="__RefHeading__1418940_253892949"/><a id="attribute-text_identifier"/>text:identifier</h2><p class="Text_20_body">The <span class="Attribute">text:identifier</span> attribute specifies an identifier for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:identifier</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:identifier</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_811text_index-name"><span style="margin-right:0.127cm;">19.811</span></a><a id="__RefHeading__1418942_253892949"/><a id="attribute-text_index-name"/>text:index-name</h2><p class="Text_20_body">The <span class="Attribute">text:index-name</span> attribute specifies the name of a user defined index.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> In order to support multiple user-defined indexes with different contents, user index marks have a <span class="Attribute">text:index-name</span> attribute. The same attribute can be used with a <span class="Element">&lt;text:user-index-source&gt;</span> element to specify which index marks apply to the current index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:index-name</span> attribute is usable with the following elements: <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>, <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:index-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_812text_index-scope"><span style="margin-right:0.127cm;">19.812</span></a><a id="__RefHeading__1418944_253892949"/><a id="attribute-text_index-scope"/>text:index-scope</h2><p class="Text_20_body">The <span class="Attribute">text:index-scope</span> attribute specifies whether an index is constructed for an entire document or for a chapter.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:index-scope</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chapter</span>: the index is constructed for the chapter that contains the index. A chapter consists of all those paragraphs and headings which have the same immediately preceding heading with outline level <span class="Attribute_20_Value_20_Instance">1</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">document</span>: the index is constructed for the entire document. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default value for this attribute is <span class="Attribute_20_Value">document</span>. </p><p class="Default_20_Value_borderStart">For <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>, <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a>, <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>, <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a> elements the default value for this attribute is <span class="Attribute_20_Value">document</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:index-scope</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>, <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a>, <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>, <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>, <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:index-scope</span> attribute are <span class="Attribute_20_Value">document</span> or <span class="Attribute_20_Value">chapter</span>.</p><h2 class="Heading_20_2"><a id="a19_813text_ignore-case"><span style="margin-right:0.127cm;">19.813</span></a><a id="__RefHeading__1418946_253892949"/><a id="attribute-text_ignore-case"/>text:ignore-case</h2><p class="Text_20_body">The <span class="Attribute">text:ignore-case</span> attribute specifies whether the capitalization of words is ignored. If the value is <span class="Attribute_20_Value">true</span>, the capitalization is ignored and entries that are identical except for character case are listed as the same entries. If the value is <span class="Attribute_20_Value">false</span>, the capitalization of words is not ignored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:ignore-case</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: index entries that are identical except for character case should be listed as the same entries.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: index entries that are identical but differ in character case should not be listed as separate entries.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:ignore-case</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:ignore-case</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_814text_institution"><span style="margin-right:0.127cm;">19.814</span></a><a id="__RefHeading__1418948_253892949"/><a id="attribute-text_institution"/>text:institution</h2><p class="Text_20_body">The <span class="Attribute">text:institution</span> attribute specifies an institution for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:institution</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:institution</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_815text_is-hidden"><span style="margin-right:0.127cm;">19.815</span></a><a id="__RefHeading__1418950_253892949"/><a id="attribute-text_is-hidden"/>text:is-hidden</h2><p class="Text_20_body">The <span class="Attribute">text:is-hidden</span> attribute specifies whether a field or paragraph is currently visible.</p><p class="Note"><span class="Note_20_Label">Note:</span> The value of this attribute is overwritten with a new value as soon as the consumer evaluates the expression. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:is-hidden</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: condition for display has evaluated to false, field or paragraph is visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: condition for display has evaluated to true, field or paragraph is not visible.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:is-hidden</span> attribute is usable with the following elements: <span class="Element">&lt;text:hidden-paragraph&gt;</span> <a href="#element-text_hidden-paragraph">7.7.11</a> and <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:is-hidden</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_816text_is-list-header"><span style="margin-right:0.127cm;">19.816</span></a><a id="__RefHeading__1418952_253892949"/><a id="attribute-text_is-list-header"/>text:is-list-header</h2><p class="Text_20_body">The <span class="Attribute">text:is-list-header</span> attribute specifies the appearance of a specific heading without numbering. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:is-list-header</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: heading will be numbered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: heading will be not numbered, even if the header has a list-style..<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:is-list-header</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:is-list-header</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_817text_isbn"><span style="margin-right:0.127cm;">19.817</span></a><a id="__RefHeading__1418954_253892949"/><a id="attribute-text_isbn"/>text:isbn</h2><p class="Text_20_body">The <span class="Attribute">text:isbn</span> attribute specifies an ISBN for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:isbn</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:isbn</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_818text_issn"><span style="margin-right:0.127cm;">19.818</span></a><a id="__RefHeading__1418956_253892949"/><a id="attribute-text_issn"/>text:issn</h2><p class="Text_20_body">The <span class="Attribute">text:issn</span> attribute specifies an ISSN for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:issn</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:issn</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_819text_journal"><span style="margin-right:0.127cm;">19.819</span></a><a id="__RefHeading__1418958_253892949"/><a id="attribute-text_journal"/>text:journal</h2><p class="Text_20_body">The <span class="Attribute">text:journal</span> attribute specifies a journal for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:journal</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:journal</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_820text_key"><span style="margin-right:0.127cm;">19.820</span></a><a id="__RefHeading__1418960_253892949"/><a id="attribute-text_key"/>text:key</h2><p class="Text_20_body">The <span class="Attribute">text:key</span> attribute specifies a type for the index entries that should be used for sorting. See <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:key</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">address</span>: <a href="#attribute-text_address">19.751</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">annote</span>: <a href="#attribute-text_annote">19.755</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">author</span>: <a href="#attribute-text_author">19.756</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bibliography-type</span>: <a href="#attribute-text_bibliography-type">19.758</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">booktitle</span>: <a href="#attribute-text_booktitle">19.759</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chapter</span>: <a href="#attribute-text_chapter">19.767</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom1</span>: <a href="#attribute-text_custom1">19.786</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom2</span>: <a href="#attribute-text_custom2">19.787</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom3</span>: <a href="#attribute-text_custom3">19.788</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom4</span>: <a href="#attribute-text_custom4">19.789</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">custom5</span>: <a href="#attribute-text_custom5">19.790</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">edition</span>: <a href="#attribute-text_edition">19.800</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">editor</span>: <a href="#attribute-text_editor">19.801</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">howpublished</span>: <a href="#attribute-text_howpublished">19.807</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">identifier</span>: <a href="#attribute-text_identifier">19.810</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">institution</span>: <a href="#attribute-text_institution">19.814</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">isbn</span>: <a href="#attribute-text_isbn">19.817</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">issn</span>: <a href="#attribute-text_issn">19.818</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">journal</span>: <a href="#attribute-text_journal">19.819</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">month</span>: <a href="#attribute-text_month">19.834</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">note</span>: <a href="#attribute-text_note">19.836</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number</span>: <a href="#attribute-text_number">19.838</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">organizations</span>: <a href="#attribute-text_organizations">19.843</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">pages</span>: <a href="#attribute-text_pages">19.846</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">publisher</span>: <a href="#attribute-text_publisher">19.852</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">report-type</span>: <a href="#attribute-text_report-type">19.856</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">school</span>: <a href="#attribute-text_school">19.860</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">series</span>: <a href="#attribute-text_series">19.862</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">title</span>: <a href="#attribute-text_title">19.882</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">url</span>: <a href="#attribute-text_url">19.884</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">volume</span>: <a href="#attribute-text_volume">19.902</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">year</span>: <a href="#attribute-text_year">19.903</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:key</span> attribute is usable with the following element: <span class="Element">&lt;text:sort-key&gt;</span> <a href="#element-text_sort-key">16.29.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:key</span> attribute are <span class="Attribute_20_Value">address</span>, <span class="Attribute_20_Value">annote</span>, <span class="Attribute_20_Value">author</span>, <span class="Attribute_20_Value">bibliography-type</span>, <span class="Attribute_20_Value">booktitle</span>, <span class="Attribute_20_Value">chapter</span>, <span class="Attribute_20_Value">custom1</span>, <span class="Attribute_20_Value">custom2</span>, <span class="Attribute_20_Value">custom3</span>, <span class="Attribute_20_Value">custom4</span>, <span class="Attribute_20_Value">custom5</span>, <span class="Attribute_20_Value">edition</span>, <span class="Attribute_20_Value">editor</span>, <span class="Attribute_20_Value">howpublished</span>, <span class="Attribute_20_Value">identifier</span>, <span class="Attribute_20_Value">institution</span>, <span class="Attribute_20_Value">isbn</span>, <span class="Attribute_20_Value">issn</span>, <span class="Attribute_20_Value">journal</span>, <span class="Attribute_20_Value">month</span>, <span class="Attribute_20_Value">note</span>, <span class="Attribute_20_Value">number</span>, <span class="Attribute_20_Value">organizations</span>, <span class="Attribute_20_Value">pages</span>, <span class="Attribute_20_Value">publisher</span>, <span class="Attribute_20_Value">report-type</span>, <span class="Attribute_20_Value">school</span>, <span class="Attribute_20_Value">series</span>, <span class="Attribute_20_Value">title</span>, <span class="Attribute_20_Value">url</span>, <span class="Attribute_20_Value">volume</span> or <span class="Attribute_20_Value">year</span>.</p><h2 class="Heading_20_2"><a id="a19_821text_key1"><span style="margin-right:0.127cm;">19.821</span></a><a id="__RefHeading__1418962_253892949"/><a id="attribute-text_key1"/>text:key1</h2><p class="Text_20_body">The <span class="Attribute">text:key1</span> attribute specifies an additional key for an alphabetical index mark. If only one key is used, it shall be contained in a <span class="Attribute">text:key1</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:key1</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:key1</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_822text_key2"><span style="margin-right:0.127cm;">19.822</span></a><a id="__RefHeading__1418964_253892949"/><a id="attribute-text_key2"/>text:key2</h2><p class="Text_20_body">The <span class="Attribute">text:key2</span> attribute specifies an additional key for an alphabetical index mark.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:key2</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:key2</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_823text_key1-phonetic"><span style="margin-right:0.127cm;">19.823</span></a><a id="__RefHeading__1418966_253892949"/><a id="attribute-text_key1-phonetic"/>text:key1-phonetic</h2><p class="Text_20_body">The <span class="Attribute">text:key1-phonetic</span> attribute specifies a phonetic key for <span class="Element">&lt;text:toc-mark-start&gt;</span> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> elements. Phonetic keys should be used for sorting. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:key1-phonetic</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:key1-phonetic</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_824text_key2-phonetic"><span style="margin-right:0.127cm;">19.824</span></a><a id="__RefHeading__1418968_253892949"/><a id="attribute-text_key2-phonetic"/>text:key2-phonetic</h2><p class="Text_20_body">The <span class="Attribute">text:key2-phonetic</span> attribute specifies an additional phonetic key for <span class="Element">&lt;text:toc-mark-start&gt;</span> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:key2-phonetic</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:key2-phonetic</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_825text_kind"><span style="margin-right:0.127cm;">19.825</span></a><a id="__RefHeading__1418970_253892949"/><a id="attribute-text_kind"/>text:kind</h2><p class="Text_20_body">The <span class="Attribute">text:kind</span> attribute specifies which part of a measure is displayed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:kind</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">gap</span>: Adds space to text if the measure text's writing direction is perpendicular to the measure line. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">unit</span>: The measure's unit is displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value</span>: The measure's value is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> The purpose of the <span class="Attribute_20_Value">gap</span> value is add space between the measure line and the text if the text is displayed perpendicular to the measure line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:kind</span> attribute is usable with the following element: <span class="Element">&lt;text:measure&gt;</span> <a href="#element-text_measure">7.7.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:kind</span> attribute are <span class="Attribute_20_Value">value</span>, <span class="Attribute_20_Value">unit</span> or <span class="Attribute_20_Value">gap</span>.</p><h2 class="Heading_20_2"><a id="a19_826text_label"><span style="margin-right:0.127cm;">19.826</span></a><a id="__RefHeading__1418972_253892949"/><a id="attribute-text_label"/>text:label</h2><p class="Text_20_body">The <span class="Attribute">text:label</span> attribute specifies a label for user inserted notes in a document. If this attribute is omitted, the element content is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:label</span> attribute is usable with the following element: <span class="Element">&lt;text:note-citation&gt;</span> <a href="#element-text_note-citation">6.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:label</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_827text_label-followed-by"><span style="margin-right:0.127cm;">19.827</span></a><a id="__RefHeading__1418974_253892949"/><a id="attribute-text_label-followed-by"/>text:label-followed-by</h2><p class="Text_20_body">The <span class="Attribute">text:label-followed-by</span> attribute specifies a character that is inserted behind a list label. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:label-followed-by</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">listtab</span>: a tab character is inserted after a list label before the text starts.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">nothing</span>: text starts directly after a list label.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">space</span>: a “ “ (U+0020, SPACE) character is inserted after a list label before the text starts.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:label-followed-by</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:label-followed-by</span> attribute are <span class="Attribute_20_Value">listtab</span>, <span class="Attribute_20_Value">space</span> or <span class="Attribute_20_Value">nothing</span>.</p><h2 class="Heading_20_2"><a id="a19_828text_level"><span style="margin-right:0.127cm;">19.828</span></a><a id="__RefHeading__1418976_253892949"/><a id="attribute-text_level"/>text:level</h2><p class="Text_20_body">The <span class="Attribute">text:level</span> attribute specifies the level of an outline or number list style.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:level</span> attribute is usable with the following elements: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>, <span class="Element">&lt;text:list-level-style-</span><span class="Element">number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a> and <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_829text_list-id"><span style="margin-right:0.127cm;">19.829</span></a><a id="__RefHeading__1418978_253892949"/><a id="attribute-text_list-id"/>text:list-id</h2><p class="Text_20_body">The <span class="Attribute">text:list-id</span> attribute specifies an id that is used to group numbered paragraphs form a list. All numbered paragraphs with the same <span class="Attribute">text:list-id</span> value belong to one list. This list defines the counter domain for the numbered paragraphs. In this context, a list is defined as a number of list items, spanning multiple levels. As with lists in <span class="Element">&lt;text:list&gt;</span> representation the list style of the first numbered paragraph at every list level is used for the start value.</p><p class="Text_20_body">The <span class="Attribute">text:list-id</span> attribute did not exist in OpenDocument v1.0 and v1.1. For such text documents which do not contain the <span class="Attribute">text:list-id</span> attribute the following rules are applied to form a list from a group of numbered paragraphs:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A series of numbered paragraphs each using the same list style belong to the same list.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A numbered paragraph that does not have a <span class="Attribute">text:list-id</span> gets the <span class="Attribute">text:list-id</span> of the last numbered paragraph on the same list level using the same list style. If the previous numbered-paragraph has a different list style, then a new list is started.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:list-id</span> attribute is usable with the following element: <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:list-id</span> attribute has the data type <span class="Datatype">NCName</span> <a href="#datatype-NCName">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_830text_list-tab-stop-position"><span style="margin-right:0.127cm;">19.830</span></a><a id="__RefHeading__1418980_253892949"/><a id="attribute-text_list-tab-stop-position"/>text:list-tab-stop-position</h2><p class="Text_20_body">The <span class="Attribute">text:list-tab-stop-position</span> attribute specifies an additional tab stop which is inserted into the list of tab stops that are defined for a list item. By default the tab stop's position is behind list label. The text of the first line of list item starts at this tab stop. In left-to-right layout environments this tab stop is interpreted as a left tab. While in right-to-left layout environments it is interpreted as a right tab.</p><p class="Text_20_body">The <span class="Attribute">text:list-tab-stop-position</span> attribute is ignored unless the <span class="Attribute">text:label-followed-by</span> attribute has the value <span class="Attribute_20_Value">listtab</span>. </p><p class="Text_20_body">There are two cases in which this additional tab stop does not specify the start the of the text of the first line of the list item:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The position of the additional tab stop is before the end of the list label.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Between the end of the list label and the position of the additional tab stop exists already a tab stop.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">In these cases, the tab character that is inserted behind the list label advances to the next tab stop, or a default tab stop if none exists. However, other tab stops contained in the list item's text may advance to the additional list tab stop. The additional tab stop is further applied to the full text of tab stop, that is, not only the first line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:list-tab-stop-position</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:list-tab-stop-position</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a19_831text_main-entry"><span style="margin-right:0.127cm;">19.831</span></a><a id="__RefHeading__1418982_253892949"/><a id="attribute-text_main-entry"/>text:main-entry</h2><p class="Text_20_body">The <span class="Attribute">text:main-entry</span> attribute specifies which of multiple index marks for the same entry is the main entry.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:main-entry</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: no index mark is specified as the main entry from multiple index marks for the same entry.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: one index mark out of multiple index marks for the same entry is specified as the main entry.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:main-entry</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:main-entry</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_832text_main-entry-style-name"><span style="margin-right:0.127cm;">19.832</span></a><a id="__RefHeading__1418984_253892949"/><a id="attribute-text_main-entry-style-name"/>text:main-entry-style-name</h2><p class="Text_20_body">The <span class="Attribute">text:main-entry-style-name</span> attribute specifies the character style to use for main entries. Sub entries are formatted using the default character style determined by the paragraph style of the entries.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:main-entry-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:main-entry-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_833text_master-page-name"><span style="margin-right:0.127cm;">19.833</span></a><a id="__RefHeading__1418986_253892949"/><a id="attribute-text_master-page-name"/>text:master-page-name</h2><p class="Text_20_body">The <span class="Attribute">text:master-page-name</span> attribute specifies the name of a master page.</p><p class="Text_20_body">For <span class="Element">&lt;text:page&gt;</span> elements <a href="#element-text_page">5.2.2</a>, the attribute specifies the name of the master page which is used to format the page.</p><p class="Text_20_body">For <span class="Element">&lt;text:notes-configuration&gt;</span> elements <a href="#element-text_notes-configuration">16.29.3</a>, the attributes specifies the master page which is used to format the pages on which the notes are displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:master-page-name</span> attribute is usable with the following elements: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a> and <span class="Element">&lt;text:page&gt;</span> <a href="#element-text_page">5.2.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:master-page-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_834text_month"><span style="margin-right:0.127cm;">19.834</span></a><a id="__RefHeading__1418988_253892949"/><a id="attribute-text_month"/>text:month</h2><p class="Text_20_body">The <span class="Attribute">text:month</span> attribute specifies a month for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:month</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:month</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_835text_name"><span style="margin-right:0.127cm;">19.835</span></a><a id="__RefHeading__1418990_253892949"/><a id="attribute-text_name"/>text:name</h2><h3 class="Heading_20_3"><a id="a19_835_1General"><span style="margin-right:0.127cm;">19.835.1</span></a><a id="__RefHeading__1418992_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a name. </p><h3 class="Heading_20_3"><a id="a19_835_2_text_alphabetical-index_"><span style="margin-right:0.127cm;">19.835.2</span></a><a id="__RefHeading__1418994_253892949"/><a id="attribute-text_name_element-text_alphabetical-index"/>&lt;text:alphabetical-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for an alphabetical index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_3_text_bibliography_"><span style="margin-right:0.127cm;">19.835.3</span></a><a id="__RefHeading__1418996_253892949"/><a id="attribute-text_name_element-text_bibliography"/>&lt;text:bibliography&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for a bibliography.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_4_text_bookmark_"><span style="margin-right:0.127cm;">19.835.4</span></a><a id="__RefHeading__1418998_253892949"/><a id="attribute-text_name_element-text_bookmark"/>&lt;text:bookmark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a name for a bookmark.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_5_text_bookmark-end_"><span style="margin-right:0.127cm;">19.835.5</span></a><a id="__RefHeading__1419000_253892949"/><a id="attribute-text_name_element-text_bookmark-end"/>&lt;text:bookmark-end&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a name that shall match the <span class="Attribute">text:name</span> attribute on only one <span class="Element">&lt;text:bookmark-start&gt;</span> element in a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:bookmark-end&gt;</span> <a href="#element-text_bookmark-end">6.2.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_6_text_bookmark-start_"><span style="margin-right:0.127cm;">19.835.6</span></a><a id="__RefHeading__1419002_253892949"/><a id="attribute-text_name_element-text_bookmark-start"/>&lt;text:bookmark-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a name that shall match the <span class="Attribute">text:name</span> attribute on only one <span class="Element">&lt;text:bookmark-end&gt;</span> element in a document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_7_text_execute-macro_"><span style="margin-right:0.127cm;">19.835.7</span></a><a id="__RefHeading__1419004_253892949"/><a id="attribute-text_name_element-text_execute-macro"/>&lt;text:execute-macro&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a macro to invoke when a field is activated. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:execute-macro&gt;</span> <a href="#element-text_execute-macro">7.7.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_8_text_illustration-index_"><span style="margin-right:0.127cm;">19.835.8</span></a><a id="__RefHeading__1419006_253892949"/><a id="attribute-text_name_element-text_illustration-index"/>&lt;text:illustration-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for an illustration index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_9_text_index-title_"><span style="margin-right:0.127cm;">19.835.9</span></a><a id="__RefHeading__1419008_253892949"/><a id="attribute-text_name_element-text_index-title"/>&lt;text:index-title&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for an index title.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_10_text_object-index_"><span style="margin-right:0.127cm;">19.835.10</span></a><a id="__RefHeading__1419010_253892949"/><a id="attribute-text_name_element-text_object-index"/>&lt;text:object-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for an object index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_11_text_reference-mark_"><span style="margin-right:0.127cm;">19.835.11</span></a><a id="__RefHeading__1419012_253892949"/><a id="attribute-text_name_element-text_reference-mark"/>&lt;text:reference-mark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for reference elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:reference-mark&gt;</span> <a href="#element-text_reference-mark">6.2.2.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_12_text_reference-mark-end_"><span style="margin-right:0.127cm;">19.835.12</span></a><a id="__RefHeading__1419014_253892949"/><a id="attribute-text_name_element-text_reference-mark-end"/>&lt;text:reference-mark-end&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for reference elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:reference-mark-end&gt;</span> <a href="#element-text_reference-mark-end">6.2.2.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_13_text_reference-mark-start_"><span style="margin-right:0.127cm;">19.835.13</span></a><a id="__RefHeading__1419016_253892949"/><a id="attribute-text_name_element-text_reference-mark-start"/>&lt;text:reference-mark-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for reference elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:reference-mark-start&gt;</span> <a href="#element-text_reference-mark-start">6.2.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_14_text_section_"><span style="margin-right:0.127cm;">19.835.14</span></a><a id="__RefHeading__1419018_253892949"/><a id="attribute-text_name_element-text_section"/>&lt;text:section&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for a section.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_15_text_sequence_"><span style="margin-right:0.127cm;">19.835.15</span></a><a id="__RefHeading__1419020_253892949"/><a id="attribute-text_name_element-text_sequence"/>&lt;text:sequence&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies name of variable to display. It shall match the name of a sequence variable already declared by a preceding <span class="Element">&lt;text:sequence-decl&gt;</span>.element </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_16_text_sequence-decl_"><span style="margin-right:0.127cm;">19.835.16</span></a><a id="__RefHeading__1419022_253892949"/><a id="attribute-text_name_element-text_sequence-decl"/>&lt;text:sequence-decl&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies unique name of a variable to be declared. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:sequence-decl&gt;</span> <a href="#element-text_sequence-decl">7.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_17_text_table-of-content_"><span style="margin-right:0.127cm;">19.835.17</span></a><a id="__RefHeading__1419024_253892949"/><a id="attribute-text_name_element-text_table-of-content"/>&lt;text:table-of-content&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for a <span class="Element">&lt;text:table-of-content&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_18_text_table-index_"><span style="margin-right:0.127cm;">19.835.18</span></a><a id="__RefHeading__1419026_253892949"/><a id="attribute-text_name_element-text_table-index"/>&lt;text:table-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for a table index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_19_text_user-defined_"><span style="margin-right:0.127cm;">19.835.19</span></a><a id="__RefHeading__1419028_253892949"/><a id="attribute-text_name_element-text_user-defined"/>&lt;text:user-defined&gt;</h3><p class="Text_20_body"> The <span class="Attribute">text:name</span> attribute specifies a name that corresponds to the value of a <span class="Attribute">meta:name</span> attribute on a <span class="Element">&lt;meta:user-defined&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-defined&gt;</span> <a href="#element-text_user-defined">7.5.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_20_text_user-field-decl_"><span style="margin-right:0.127cm;">19.835.20</span></a><a id="__RefHeading__1419030_253892949"/><a id="attribute-text_name_element-text_user-field-decl"/>&lt;text:user-field-decl&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for a user defined field declaration. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-field-decl&gt;</span> <a href="#element-text_user-field-decl">7.4.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_21_text_user-field-get_"><span style="margin-right:0.127cm;">19.835.21</span></a><a id="__RefHeading__1419032_253892949"/><a id="attribute-text_name_element-text_user-field-get"/>&lt;text:user-field-get&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies name of a user defined field that shall be declared already by a preceding <span class="Element">&lt;text:user-field-decl&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-field-get&gt;</span> <a href="#element-text_user-field-get">7.4.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_22_text_user-field-input_"><span style="margin-right:0.127cm;">19.835.22</span></a><a id="__RefHeading__1419034_253892949"/><a id="attribute-text_name_element-text_user-field-input"/>&lt;text:user-field-input&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a name of a user defined field that shall be declared already by a preceding <span class="Element">&lt;text:user-field-decl&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-field-input&gt;</span> <a href="#element-text_user-field-input">7.4.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_23_text_user-index_"><span style="margin-right:0.127cm;">19.835.23</span></a><a id="__RefHeading__1419036_253892949"/><a id="attribute-text_name_element-text_user-index"/>&lt;text:user-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a unique name for a user specified index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_835_24_text_variable-set_"><span style="margin-right:0.127cm;">19.835.24</span></a><a id="__RefHeading__1419038_253892949"/><a id="attribute-text_name_element-text_variable-set"/>&lt;text:variable-set&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a variable name that shall match a variable name already declared by a preceding <span class="Element">&lt;text:variable-decl&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-set&gt;</span> <a href="#element-text_variable-set">7.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_25_text_variable-decl_"><span style="margin-right:0.127cm;">19.835.25</span></a><a id="__RefHeading__1419040_253892949"/><a id="attribute-text_name_element-text_variable-decl"/>&lt;text:variable-decl&gt; </h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies unique name for a variable declaration. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-decl&gt;</span> <a href="#element-text_variable-decl">7.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_26_text_variable-get_"><span style="margin-right:0.127cm;">19.835.26</span></a><a id="__RefHeading__1419042_253892949"/><a id="attribute-text_name_element-text_variable-get"/>&lt;text:variable-get&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a variable name that shall match a preceding <span class="Element">&lt;text:variable-decl&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-get&gt;</span> <a href="#element-text_variable-get">7.4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h3 class="Heading_20_3"><a id="a19_835_27_text_variable-input_"><span style="margin-right:0.127cm;">19.835.27</span></a><a id="__RefHeading__1419044_253892949"/><a id="attribute-text_name_element-text_variable-input"/>&lt;text:variable-input&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:name</span> attribute specifies a variable name that shall match the name of variable already declared by a preceding <span class="Element">&lt;text:variable-decl&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:name</span> attribute is usable with the following element: <span class="Element">&lt;text:variable-input&gt;</span> <a href="#element-text_variable-input">7.4.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:name</span> attribute has the data type <span class="Datatype">variableName</span> <a href="#datatype-variableName">18.3.39</a>.</p><h2 class="Heading_20_2"><a id="a19_836text_note"><span style="margin-right:0.127cm;">19.836</span></a><a id="__RefHeading__1419046_253892949"/><a id="attribute-text_note"/>text:note</h2><p class="Text_20_body">The <span class="Attribute">text:note</span> attribute specifies a note for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:note</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:note</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_837text_note-class"><span style="margin-right:0.127cm;">19.837</span></a><a id="__RefHeading__1419048_253892949"/><a id="attribute-text_note-class"/>text:note-class</h2><p class="Text_20_body">The <span class="Attribute">text:note-class</span> attribute specifies the class of a note. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:note-class</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">endnote</span>: note appears at the end of a chapter or document. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">ootnote</span>: note appears at the footer of a page.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:note-class</span> attribute is usable with the following elements: <span class="Element">&lt;text:note&gt;</span> <a href="#element-text_note">6.3.2</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a> and <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:note-class</span> attribute are <span class="Attribute_20_Value">footnote</span> or <span class="Attribute_20_Value">endnote</span>.</p><h2 class="Heading_20_2"><a id="a19_838text_number"><span style="margin-right:0.127cm;">19.838</span></a><a id="__RefHeading__1419050_253892949"/><a id="attribute-text_number"/>text:number</h2><p class="Text_20_body">The <span class="Attribute">text:number</span> attribute specifies a number for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:number</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:number</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_839text_number-lines"><span style="margin-right:0.127cm;">19.839</span></a><a id="__RefHeading__1419052_253892949"/><a id="attribute-text_number-lines"/>text:number-lines</h2><p class="Text_20_body">The <span class="Attribute">text:number-lines</span> attribute specifies whether lines are numbered.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:number-lines</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: lines are not numbered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: lines are numbered.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a> element the default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:number-lines</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:number-lines</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_840text_number-position"><span style="margin-right:0.127cm;">19.840</span></a><a id="__RefHeading__1419054_253892949"/><a id="attribute-text_number-position"/>text:number-position</h2><p class="Text_20_body">The <span class="Attribute">text:number-position</span> attribute specifies margin where line numbers appear. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:number-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inner</span>: page numbers appear on the inner side of a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">eft</span>: page numbers appear on the left side of a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outer</span>: page numbers appear on the outer side of a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ight</span>: page numbers appear on the right side of a page<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">left</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:number-position</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:number-position</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">inner</span> or <span class="Attribute_20_Value">outer</span>.</p><h2 class="Heading_20_2"><a id="a19_841text_numbered-entries"><span style="margin-right:0.127cm;">19.841</span></a><a id="__RefHeading__1419056_253892949"/><a id="attribute-text_numbered-entries"/>text:numbered-entries</h2><p class="Text_20_body">The <span class="Attribute">text:numbered-entries</span> attribute specifies whether a number is displayed for bibliography entries instead of their short name.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:numbered-entries</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: short names for bibliographic entries displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: number displayed for bibliographic entries.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:numbered-entries</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:numbered-entries</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_842text_offset"><span style="margin-right:0.127cm;">19.842</span></a><a id="__RefHeading__1419058_253892949"/><a id="attribute-text_offset"/>text:offset</h2><p class="Text_20_body">The <span class="Attribute">text:offset</span> attribute specifies the distance between a line number and the margin.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:offset</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:offset</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a19_843text_organizations"><span style="margin-right:0.127cm;">19.843</span></a><a id="__RefHeading__1419060_253892949"/><a id="attribute-text_organizations"/>text:organizations</h2><p class="Text_20_body">The <span class="Attribute">text:organizations</span> attribute specifies one or more organizations for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:organizations</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:organizations</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_844text_outline-level"><span style="margin-right:0.127cm;">19.844</span></a><a id="__RefHeading__1419062_253892949"/><a id="attribute-text_outline-level"/>text:outline-level</h2><h3 class="Heading_20_3"><a id="a19_844_1General"><span style="margin-right:0.127cm;">19.844.1</span></a><a id="__RefHeading__1419064_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level.</p><h3 class="Heading_20_3"><a id="a19_844_2_text_alphabetical-index-entry-template_"><span style="margin-right:0.127cm;">19.844.2</span></a><a id="__RefHeading__1419066_253892949"/><a id="attribute-text_outline-level_element-text_alphabetical-index-entry-template"/>&lt;text:alphabetical-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies the level to which a template applies.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:outline-level</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">1</span>: index mark with only text but no keys assigned is assigned to level one.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">2</span>: index mark with text and one key, key is assigned to level one and index mark value is assigned to level two.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">3</span>: index mark with two keys, first key is assigned to level one, second key is assigned to level two, and the index mark value is assigned to level three.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">separator</span>: the template defines an alphabetical separator. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:outline-level</span> attribute are <span class="Attribute_20_Value">1</span>, <span class="Attribute_20_Value">2</span>, <span class="Attribute_20_Value">3</span> or <span class="Attribute_20_Value">separator</span>.</p><h3 class="Heading_20_3"><a id="a19_844_3_text_chapter_"><span style="margin-right:0.127cm;">19.844.3</span></a><a id="__RefHeading__1419068_253892949"/><a id="attribute-text_outline-level_element-text_chapter"/>&lt;text:chapter&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level to use. The <span class="Element">&lt;text:chapter&gt;</span> element displays a chapter number or title up to the specified outline level.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:chapter&gt;</span> <a href="#element-text_chapter">7.3.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_4_text_h_"><span style="margin-right:0.127cm;">19.844.4</span></a><a id="__RefHeading__1419070_253892949"/><a id="attribute-text_outline-level_element-text_h"/>&lt;text:h&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies the level of a heading, starting with 1. Headings without a level attribute are assumed to be at level 1.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_5_text_index-entry-chapter_"><span style="margin-right:0.127cm;">19.844.5</span></a><a id="__RefHeading__1419072_253892949"/><a id="attribute-text_outline-level_element-text_index-entry-chapter"/>&lt;text:index-entry-chapter&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level for an index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_6_text_index-source-styles_"><span style="margin-right:0.127cm;">19.844.6</span></a><a id="__RefHeading__1419074_253892949"/><a id="attribute-text_outline-level_element-text_index-source-styles"/>&lt;text:index-source-styles&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level for an index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:index-source-styles&gt;</span> <a href="#element-text_index-source-styles">8.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_7_text_user-index-mark_"><span style="margin-right:0.127cm;">19.844.7</span></a><a id="__RefHeading__1419076_253892949"/><a id="attribute-text_outline-level_element-text_user-index-mark"/>&lt;text:user-index-mark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level for an index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_8_text_table-of-content-entry-template_"><span style="margin-right:0.127cm;">19.844.8</span></a><a id="__RefHeading__1419078_253892949"/><a id="attribute-text_outline-level_element-text_table-of-content-entry-template"/>&lt;text:table-of-content-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies to which outline level an entry configuration applies. Outline levels shall be unique for the template elements in one index source.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_9_text_table-of-content-source_"><span style="margin-right:0.127cm;">19.844.9</span></a><a id="__RefHeading__1419080_253892949"/><a id="attribute-text_outline-level_element-text_table-of-content-source"/>&lt;text:table-of-content-source&gt; </h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies which outline levels are used when generating a table of contents. The value of this attribute shall be an integer greater than zero. If this attribute is omitted, all outline levels are used by default.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_10_text_toc-mark_"><span style="margin-right:0.127cm;">19.844.10</span></a><a id="__RefHeading__1419082_253892949"/><a id="attribute-text_outline-level_element-text_toc-mark"/>&lt;text:toc-mark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level for a table of contents index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_11_text_toc-mark-start_"><span style="margin-right:0.127cm;">19.844.11</span></a><a id="__RefHeading__1419084_253892949"/><a id="attribute-text_outline-level_element-text_toc-mark-start"/>&lt;text:toc-mark-start&gt; </h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level for a table of contents index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:toc-mark-start&gt;</span> <a href="#element-text_toc-mark-start">8.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_12_text_user-index-entry-template_"><span style="margin-right:0.127cm;">19.844.12</span></a><a id="__RefHeading__1419086_253892949"/><a id="attribute-text_outline-level_element-text_user-index-entry-template"/>&lt;text:user-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies the template applied to entries at a specified outline level in a user-defined index. All <span class="Element">&lt;text:user-index-entry-template&gt;</span> elements that are contained in the same parent element shall specify different outline levels.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_844_13_text_user-index-mark-start_"><span style="margin-right:0.127cm;">19.844.13</span></a><a id="__RefHeading__1419088_253892949"/><a id="attribute-text_outline-level_element-text_user-index-mark-start"/>&lt;text:user-index-mark-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies an outline level for a user index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-mark-start&gt;</span> <a href="#element-text_user-index-mark-start">8.1.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:outline-level</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_845text_page-adjust"><span style="margin-right:0.127cm;">19.845</span></a><a id="__RefHeading__1419090_253892949"/><a id="attribute-text_page-adjust"/>text:page-adjust</h2><h3 class="Heading_20_3"><a id="a19_845_1General"><span style="margin-right:0.127cm;">19.845.1</span></a><a id="__RefHeading__1419092_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:page-adjust</span> attribute specifies an adjustment to page numbering. </p><h3 class="Heading_20_3"><a id="a19_845_2_text_page-number_"><span style="margin-right:0.127cm;">19.845.2</span></a><a id="__RefHeading__1419094_253892949"/><a id="attribute-text_page-adjust_element-text_page-number"/>&lt;text:page-number&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:page-adjust</span> attribute specifies an adjustment of the value of a page number field, in order to display of page numbers of following or preceding pages. The specified value is added to the current page number. If a page with the resulting page number does not exist, no number is displayed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:page-adjust</span> attribute is usable with the following element: <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:page-adjust</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_845_3_text_page-variable-set_"><span style="margin-right:0.127cm;">19.845.3</span></a><a id="__RefHeading__1419096_253892949"/><a id="attribute-text_page-adjust_element-text_page-variable-set"/>&lt;text:page-variable-set&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:page-adjust</span> attribute specifies a page adjustment. The value of an active page variable is the current page number plus any page adjustment value immediately prior to the occurrence of this variable in document order.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:page-adjust</span> attribute is usable with the following element: <span class="Element">&lt;text:page-variable-set&gt;</span> <a href="#element-text_page-variable-set">7.7.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:page-adjust</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_846text_pages"><span style="margin-right:0.127cm;">19.846</span></a><a id="__RefHeading__1419098_253892949"/><a id="attribute-text_pages"/>text:pages</h2><p class="Text_20_body">The <span class="Attribute">text:pages</span> attribute specifies the page number or page numbers for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:pages</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:pages</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_847text_placeholder-type"><span style="margin-right:0.127cm;">19.847</span></a><a id="__RefHeading__1419100_253892949"/><a id="attribute-text_placeholder-type"/>text:placeholder-type</h2><p class="Text_20_body">The <span class="Attribute">text:placeholder-type</span> attribute specifies the content type of a placeholder. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:placeholder-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">image</span>: placeholder can be replaced by an image.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">o</span><span class="Attribute_20_Value">bject</span>: placeholder can be replaced by an object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">able</span>: placeholder can be replaced by a table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext</span>: placeholder can be replaced by text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext-box</span>: placeholder can be replaced by a text-box.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:placeholder-type</span> attribute is usable with the following element: <span class="Element">&lt;text:placeholder&gt;</span> <a href="#element-text_placeholder">7.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:placeholder-type</span> attribute are <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">text-box</span>, <span class="Attribute_20_Value">image</span> or <span class="Attribute_20_Value">object</span>.</p><h2 class="Heading_20_2"><a id="a19_848text_prefix"><span style="margin-right:0.127cm;">19.848</span></a><a id="__RefHeading__1419102_253892949"/><a id="attribute-text_prefix"/>text:prefix</h2><p class="Text_20_body">The <span class="Attribute">text:prefix</span> attribute specifies a string that is displayed before a bibliography entry's short name or number if it occurs outside the bibliography. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:prefix</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:prefix</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_849text_protected"><span style="margin-right:0.127cm;">19.849</span></a><a id="__RefHeading__1419104_253892949"/><a id="attribute-text_protected"/>text:protected</h2><p class="Text_20_body">The <span class="Attribute">text:protected</span> attribute specifies whether a section is protected. A section can be protected, which means that a user can not edit the section. The protection is enforced by the user interface only.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> If the section is protected and the <span class="Attribute">text:protection-key</span> attribute is present, an authorization is required for resetting the protection to enable editing. <a href="#attribute-text_protection-key">19.850</a></p><p class="Text_20_body">The defined values for the <span class="Attribute">text:protected</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: section is not protected from editing.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: section is protected from editing.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:protected</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:protected</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_850text_protection-key"><span style="margin-right:0.127cm;">19.850</span></a><a id="__RefHeading__1419106_253892949"/><a id="attribute-text_protection-key"/>text:protection-key</h2><p class="Text_20_body">The <span class="Attribute">text:protection-key</span> attribute, when present, specifies that an authorization is required for removing the protection of a section. The authentication procedure is identified by the <span class="Attribute">text:protection-key-digest-algorithm</span> attribute  <a href="#attribute-text_protection-key-digest-algorithm">19.851</a> The attribute value is binary data that may be used by the authentication procedure. </p><p class="Text_20_body">The password shall be provided as a sequence of bytes in UTF-8 encoding. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:protection-key</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:protection-key</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_851text_protection-key-digest-algorithm"><span style="margin-right:0.127cm;">19.851</span></a><a id="__RefHeading__1419108_253892949"/><a id="attribute-text_protection-key-digest-algorithm"/>text:protection-key-digest-algorithm</h2><p class="Text_20_body">The <span class="Attribute">text:protection-key-digest-algorithm</span> attribute value is an IRI that identifies an authentication procedure for removing a protection.</p><p class="Text_20_body">If the IRI identifies a message-digest algorithm specified in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a>, the value of <span class="Attribute">text:protection-key</span> attribute shall be the hash value of the password that is required to authorize removal of the protection. The password shall be provided as a sequence of bytes in UTF-8 encoding.</p><p class="Text_20_body">Any other procedures, their identifying IRIs, and their application of <span class="Attribute">text:protection-key</span> values are implementation-defined. </p><p class="Text_20_body">Consumers shall support http://www.w3.org/2000/09/xmldsig#sha1<a href="http://www.w3.org/2000/09/xmldsig#sha1,">,</a> which is the default, and http://www.w3.org/2000/09/xmldsig#sha256. They may support other algorithms described in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a> or alternative procedures. Producers should use http://www.w3.org/2000/09/xmldsig#sha256. </p><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value_20_Instance">http://www.w3.org/2000/09/xmldsig#sha1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:protection-key-digest-algorithm</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:protection-key-digest-algorithm</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h2 class="Heading_20_2"><a id="a19_852text_publisher"><span style="margin-right:0.127cm;">19.852</span></a><a id="__RefHeading__1419110_253892949"/><a id="attribute-text_publisher"/>text:publisher</h2><p class="Text_20_body">The <span class="Attribute">text:publisher</span> attribute specifies a publisher for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:publisher</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:publisher</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_853text_ref-name"><span style="margin-right:0.127cm;">19.853</span></a><a id="__RefHeading__1419112_253892949"/><a id="attribute-text_ref-name"/>text:ref-name</h2><h3 class="Heading_20_3"><a id="a19_853_1General"><span style="margin-right:0.127cm;">19.853.1</span></a><a id="__RefHeading__1419114_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute specifies a name that is used as a reference. </p><h3 class="Heading_20_3"><a id="a19_853_2_text_bookmark-ref_"><span style="margin-right:0.127cm;">19.853.2</span></a><a id="__RefHeading__1419116_253892949"/><a id="attribute-text_ref-name_element-text_bookmark-ref"/>&lt;text:bookmark-ref&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute identifies a <span class="Element">&lt;text:bookmark&gt;</span> or <span class="Element">&lt;text:bookmark-start&gt;</span> element by the value of that element's <span class="Attribute">text:name</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:ref-name</span> attribute is usable with the following element: <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:ref-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_853_3_text_note-ref_"><span style="margin-right:0.127cm;">19.853.3</span></a><a id="__RefHeading__1419118_253892949"/><a id="attribute-text_ref-name_element-text_note-ref"/>&lt;text:note-ref&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute identifies a <span class="Element">&lt;text:note&gt;</span> element by the value of that element's <span class="Attribute">text:id</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:ref-name</span> attribute is usable with the following element: <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:ref-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_853_4_text_reference-ref_"><span style="margin-right:0.127cm;">19.853.4</span></a><a id="__RefHeading__1419120_253892949"/><a id="attribute-text_ref-name_element-text_reference-ref"/>&lt;text:reference-ref&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute identifies a <span class="Element">&lt;text:reference-mark&gt;</span> or <span class="Element">&lt;text:reference-mark-start&gt;</span> element by the value of that element's <span class="Attribute">text:name</span> attribute. </p><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute identifies the element referenced by this reference field element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:ref-name</span> attribute is usable with the following element: <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:ref-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_853_5_text_sequence_"><span style="margin-right:0.127cm;">19.853.5</span></a><a id="__RefHeading__1419122_253892949"/><a id="attribute-text_ref-name_element-text_sequence"/>&lt;text:sequence&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute specifies the name for a sequence field that is the subject of a reference field. No two sequence fields can have the same reference name.</p><p class="Text_20_body">If a sequence field is not the target of a reference, this attribute can be omitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:ref-name</span> attribute is usable with the following element: <span class="Element">&lt;text:sequence&gt;</span> <a href="#element-text_sequence">7.4.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:ref-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_853_6_text_sequence-ref_"><span style="margin-right:0.127cm;">19.853.6</span></a><a id="__RefHeading__1419124_253892949"/><a id="attribute-text_ref-name_element-text_sequence-ref"/>&lt;text:sequence-ref&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:ref-name</span> attribute identifies a <span class="Element">&lt;text:sequence&gt;</span> element by the value of that element's <span class="Attribute">text:ref-name</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:ref-name</span> attribute is usable with the following element: <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:ref-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_854text_reference-format"><span style="margin-right:0.127cm;">19.854</span></a><a id="__RefHeading__1419126_253892949"/><a id="attribute-text_reference-format"/>text:reference-format</h2><p class="Text_20_body">The <span class="Attribute">text:reference-format</span> attribute specifies what information about a reference is displayed. If the reference format is not specified, the page format is used as the default.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:reference-format</span> attribute supported by all reference fields are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chapter</span>: displays the number of the chapter in which the referenced item appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">direction</span>: displays whether the referenced item is above or below the reference field.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">page</span>: displays the number of the page on which the referenced item appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">text</span>: displays the text of the referenced item.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Additional defined values for the <span class="Attribute">text:reference-format</span> attribute supported by references to sequence fields are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">caption</span>: displays the caption in which the sequence is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">category-and-value</span>: displays the name and value of the sequence.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value</span>: displays the value of the sequence.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">References to bookmarks and other references support additional values, which display the <span class="Def">list label</span> of the referenced item. If the referenced item is contained in a list or a numbered paragraph, the list label is the formatted number of the paragraph which contains the referenced item. If the referenced item is not contained in a list or numbered paragraph, the list label is empty, and the referenced field therefore displays nothing. If the referenced bookmark or reference contains more than one paragraph, the list label of the paragraph at which the bookmark or reference starts is taken.</p><p class="Text_20_body">Additional defined values for the <span class="Attribute">text:reference-format</span> attribute supported by all references to bookmark's or other reference fields are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number</span>: displays the list label of the referenced item. To unambiguously identify the referenced item at the document position of the reference field, the list label content for as many superior list levels are added in front as are required to make the reference unambiguous. The required superior levels of the referenced item are the ones, which differ from the superior levels of the document position of the reference field.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The list label of the referenced item may already contain numbers of superior levels. If this is the case, and if <span class="Formula">n</span> is the level of the most superior level contained in the list label, then no list label content of superior levels smaller or equal than <span class="Formula">n</span> are added.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number-all-superior</span>: displays the list label of the referenced item and adds the contents of all list labels of superior levels in front of it.<span class="odfLiEnd"/> </p><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>The list label of the referenced item may already contain numbers of superior levels. If this is the case, and if <span class="Formula">n</span> is the level of the most superior level contained in the list label, then <a id="DDE_LINK15"/>no list label content of superior levels smaller or equal than <span class="Formula">n</span> are added.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">number-no-superior</span>: displays the contents of the list label of the referenced item.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:reference-format</span> attribute is usable with the following elements: <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a>, <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a>, <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a> and <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a>.</p><p class="Attribute_20_Value_20_List">For <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a> elements, the values of the <span class="Attribute">text:reference-format</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">chapter</span>, <span class="Attribute_20_Value">direction</span>, <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">number-no-superior</span>, <span class="Attribute_20_Value">number-all-superior</span> or <span class="Attribute_20_Value">number</span>.</p><p class="Attribute_20_Value_20_List">For <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a> elements, the values of the <span class="Attribute">text:reference-format</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">chapter</span>, <span class="Attribute_20_Value">direction</span>, <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">number-no-superior</span>, <span class="Attribute_20_Value">number-all-superior</span> or <span class="Attribute_20_Value">number</span>.</p><p class="Attribute_20_Value_20_List">For <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a> elements, the values of the <span class="Attribute">text:reference-format</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">chapter</span>, <span class="Attribute_20_Value">direction</span> or <span class="Attribute_20_Value">text</span>.</p><p class="Attribute_20_Value_20_List_borderEnd">For <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a> elements, the values of the <span class="Attribute">text:reference-format</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">chapter</span>, <span class="Attribute_20_Value">direction</span>, <span class="Attribute_20_Value">text</span>, <span class="Attribute_20_Value">category-and-value</span>, <span class="Attribute_20_Value">caption</span> or <span class="Attribute_20_Value">value</span>.</p><h2 class="Heading_20_2"><a id="a19_855text_relative-tab-stop-position"><span style="margin-right:0.127cm;">19.855</span></a><a id="__RefHeading__1419128_253892949"/><a id="attribute-text_relative-tab-stop-position"/>text:relative-tab-stop-position</h2><p class="Text_20_body">The <span class="Attribute">text:relative-tab-stop-position</span> attribute specifies whether the position of tab stops is relative to the left margin or to the left indent as determined by the paragraph style. It is used in the specification for the generation of index entries and table of content entries.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:relative-tab-stop-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: paragraph style determines position of tab stops relative to the left margin.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: paragraph style determines the position of tab stops relative to the left ident.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:relative-tab-stop-position</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>, <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a>, <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>, <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>, <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:relative-tab-stop-position</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_856text_report-type"><span style="margin-right:0.127cm;">19.856</span></a><a id="__RefHeading__1419130_253892949"/><a id="attribute-text_report-type"/>text:report-type</h2><p class="Text_20_body">The <span class="Attribute">text:report-type</span> attribute specifies a report type for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:report-type</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:report-type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_857text_restart-numbering"><span style="margin-right:0.127cm;">19.857</span></a><a id="__RefHeading__1419132_253892949"/><a id="attribute-text_restart-numbering"/>text:restart-numbering</h2><p class="Text_20_body">The <span class="Attribute">text:restart-numbering</span> attribute specifies whether to restart the numbering of headings. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:restart-numbering</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: numbering of headings does not restart.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: numbering of headings does restart.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:restart-numbering</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:restart-numbering</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_858text_restart-on-page"><span style="margin-right:0.127cm;">19.858</span></a><a id="__RefHeading__1419134_253892949"/><a id="attribute-text_restart-on-page"/>text:restart-on-page</h2><p class="Text_20_body">The <span class="Attribute">text:restart-on-page</span> attribute specifies whether the line count is reset to 1 at the start of every page.</p><p class="Text_20_body">If the value of this attribute is <span class="Source_20_Text">true</span>, the line count is reset to 1 at the beginning of every page, resulting in page-specific numbering of lines. The default value of this attribute is <span class="Source_20_Text">false</span>, resulting in document-specific numbering of lines.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:restart-on-page</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: line count is not reset, resulting in document-specific numbering of lines.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: line count is reset to 1 at the beginning of every page, resulting in page-specific line numbering.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:restart-on-page</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:restart-on-page</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_859text_row-number"><span style="margin-right:0.127cm;">19.859</span></a><a id="__RefHeading__1419136_253892949"/><a id="attribute-text_row-number"/>text:row-number</h2><p class="Text_20_body">The <span class="Attribute">text:row-number</span> attribute specifies a row number to select when a condition is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:row-number</span> attribute is usable with the following element: <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:row-number</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_860text_school"><span style="margin-right:0.127cm;">19.860</span></a><a id="__RefHeading__1419138_253892949"/><a id="attribute-text_school"/>text:school</h2><p class="Text_20_body">The <span class="Attribute">text:school</span> attribute specifies a school for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:school</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:school</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_861text_section-name"><span style="margin-right:0.127cm;">19.861</span></a><a id="__RefHeading__1419140_253892949"/><a id="attribute-text_section-name"/>text:section-name</h2><p class="Text_20_body">The <span class="Attribute">text:section-name</span> attribute specifies a section to which a section is linked by its name. The referenced section occurs either in the document referenced by the <span class="Attribute">xlink:href</span> attribute on the same <span class="Element">&lt;text:section-source&gt;</span> element, or in the same document if the <span class="Attribute">xlink:href</span> attribute is not present. </p><p class="Text_20_body">If the <span class="Attribute">text:section-name</span> attribute is not present, the section is linked to the entire document referenced by the <span class="Attribute">xlink:href</span> attribute, unless the <span class="Attribute">xlink:href</span> attribute contains a fragment identifier. If neither the <span class="Attribute">xlink:href</span> attribute nor the <span class="Attribute">text:section-name</span> attribute is present, the <span class="Element">&lt;text:section-source&gt;</span> element shall be ignored. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:section-name</span> attribute is usable with the following element: <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:section-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_862text_series"><span style="margin-right:0.127cm;">19.862</span></a><a id="__RefHeading__1419142_253892949"/><a id="attribute-text_series"/>text:series</h2><p class="Text_20_body">The <span class="Attribute">text:series</span> attribute specifies the series for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:series</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:series</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_863text_select-page"><span style="margin-right:0.127cm;">19.863</span></a><a id="__RefHeading__1419144_253892949"/><a id="attribute-text_select-page"/>text:select-page</h2><h3 class="Heading_20_3"><a id="a19_863_1General"><span style="margin-right:0.127cm;">19.863.1</span></a><a id="__RefHeading__1419146_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:select-page</span> attribute specifies conditional display of text.</p><h3 class="Heading_20_3"><a id="a19_863_2_text_page-continuation_"><span style="margin-right:0.127cm;">19.863.2</span></a><a id="__RefHeading__1419148_253892949"/><a id="attribute-text_select-page_element-text_page-continuation"/>&lt;text:page-continuation&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:select-page</span> attribute specifies whether to check for a previous or next page and if that page exists, continuation text is printed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:select-page</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">next</span>: check for next page and if it exists, prints continuation text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">previous</span>: check for previous page and if it exists, print continuation text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:select-page</span> attribute is usable with the following element: <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:select-page</span> attribute are <span class="Attribute_20_Value">previous</span> or <span class="Attribute_20_Value">next</span>.</p><h3 class="Heading_20_3"><a id="a19_863_3_text_page-number_"><span style="margin-right:0.127cm;">19.863.3</span></a><a id="__RefHeading__1419150_253892949"/><a id="attribute-text_select-page_element-text_page-number"/>&lt;text:page-number&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:select-page</span> attribute specifies whether to display or not the number of a previous or following page rather than the number of the current page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:select-page</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">current</span>: number of the current page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">ext</span>: number of the page immediately following the current page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">revious</span>: number of the page immediately preceding the current page.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> To display the current page number on all pages except the first or last page, use a combination of the <span class="Attribute">text:select-page</span> and <span class="Attribute">text:page-adjust</span> attributes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:select-page</span> attribute is usable with the following element: <span class="Element">&lt;text:page-number&gt;</span> <a href="#element-text_page-number">7.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:select-page</span> attribute are <span class="Attribute_20_Value">previous</span>, <span class="Attribute_20_Value">current</span> or <span class="Attribute_20_Value">next</span>.</p><h2 class="Heading_20_2"><a id="a19_864text_separation-character"><span style="margin-right:0.127cm;">19.864</span></a><a id="__RefHeading__1419152_253892949"/><a id="attribute-text_separation-character"/>text:separation-character</h2><p class="Text_20_body">The <span class="Attribute">text:separation-character</span> attribute specifies the character used to separate values representing levels in an outline.</p><p class="Text_20_body">If the value of the <span class="Attribute">text:display-outline-level</span> attribute is a non-zero value, a separation character may be specified. The default separation character is <span class="Source_20_Text">"."</span> (U+002E, FULL STOP). If the value of <span class="Attribute">text:display-outline-level</span> is zero, this attribute shall be omitted.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:separation-character</span> attribute is usable with the following element: <span class="Element">&lt;text:sequence-decl&gt;</span> <a href="#element-text_sequence-decl">7.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:separation-character</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a19_865text_sort-algorithm"><span style="margin-right:0.127cm;">19.865</span></a><a id="__RefHeading__1419154_253892949"/><a id="attribute-text_sort-algorithm"/>text:sort-algorithm</h2><p class="Text_20_body">The <span class="Attribute">text:sort-algorithm</span> specifies a locale specific sorting algorithm by name.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:sort-algorithm</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a> and <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:sort-algorithm</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_866text_sort-ascending"><span style="margin-right:0.127cm;">19.866</span></a><a id="__RefHeading__1419156_253892949"/><a id="attribute-text_sort-ascending"/>text:sort-ascending</h2><p class="Text_20_body">The <span class="Attribute">text:sort-ascending</span> attribute specifies whether locale specific sorting takes place in ascending or descending order.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:sort-ascending</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: sorting takes place in descending order.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: sorting takes place in ascending order.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:sort-ascending</span> attribute is usable with the following element: <span class="Element">&lt;text:sort-key&gt;</span> <a href="#element-text_sort-key">16.29.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:sort-ascending</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_867text_sort-by-position"><span style="margin-right:0.127cm;">19.867</span></a><a id="__RefHeading__1419158_253892949"/><a id="attribute-text_sort-by-position"/>text:sort-by-position</h2><p class="Text_20_body">The <span class="Attribute">text:sort-by-position</span> attribute specifies whether bibliography entries are displayed in the order of their positions in the document, or by selected fields.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:sort-by-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: bibliographic entries are displayed in the order of their positions in a document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: bibliographic entries are displayed as sorted by selected fields. The collation order for entries sorted by fields is determined by by the attributes <span class="Attribute">fo:language</span>, <span class="Attribute">fo:country</span>, <span class="Attribute">fo:script</span>, <span class="Attribute">style:rfc-language-tag</span> and <span class="Attribute">text:sort-algorithm</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:sort-by-position</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:sort-by-position</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_868text_start-value"><span style="margin-right:0.127cm;">19.868</span></a><a id="__RefHeading__1419160_253892949"/><a id="attribute-text_start-value"/>text:start-value</h2><h3 class="Heading_20_3"><a id="a19_868_1General"><span style="margin-right:0.127cm;">19.868.1</span></a><a id="__RefHeading__1419162_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies the start value for numbering. </p><h3 class="Heading_20_3"><a id="a19_868_2_text_h_"><span style="margin-right:0.127cm;">19.868.2</span></a><a id="__RefHeading__1419164_253892949"/><a id="attribute-text_start-value_element-text_h"/>&lt;text:h&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies a value that restarts numbering at the current heading.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:start-value</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:start-value</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_868_3_text_list-item_"><span style="margin-right:0.127cm;">19.868.3</span></a><a id="__RefHeading__1419166_253892949"/><a id="attribute-text_start-value_element-text_list-item"/>&lt;text:list-item&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies a value that restarts numbering of a list at the current item. This attribute can only be applied to items in a list with a numbering list style. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:start-value</span> attribute is usable with the following element: <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:start-value</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_868_4_text_list-level-style-number_"><span style="margin-right:0.127cm;">19.868.4</span></a><a id="__RefHeading__1419168_253892949"/><a id="attribute-text_start-value_element-text_list-level-style-number"/>&lt;text:list-level-style-number&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies a value that restarts numbering at the current list level.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:start-value</span> attribute is usable with the following element: <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:start-value</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_868_5_text_notes-configuration_"><span style="margin-right:0.127cm;">19.868.5</span></a><a id="__RefHeading__1419170_253892949"/><a id="attribute-text_start-value_element-text_notes-configuration"/>&lt;text:notes-configuration&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies the value at which note numbering starts.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:start-value</span> attribute is usable with the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:start-value</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_868_6_text_numbered-paragraph_"><span style="margin-right:0.127cm;">19.868.6</span></a><a id="__RefHeading__1419172_253892949"/><a id="attribute-text_start-value_element-text_numbered-paragraph"/>&lt;text:numbered-paragraph&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies a value that restarts numbering of a numbered paragraph at the current item.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:start-value</span> attribute is usable with the following element: <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:start-value</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_868_7_text_outline-level-style_"><span style="margin-right:0.127cm;">19.868.7</span></a><a id="__RefHeading__1419174_253892949"/><a id="attribute-text_start-value_element-text_outline-level-style"/>&lt;text:outline-level-style&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:start-value</span> attribute specifies the first number of a heading item at the current level.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a> element the default value for this attribute is <span class="Attribute_20_Value_20_Instance">1</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:start-value</span> attribute is usable with the following element: <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:start-value</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_869text_start-numbering-at"><span style="margin-right:0.127cm;">19.869</span></a><a id="__RefHeading__1419176_253892949"/><a id="attribute-text_start-numbering-at"/>text:start-numbering-at</h2><p class="Text_20_body">The <span class="Attribute">text:start-numbering-at</span> attribute specifies if footnote numbers start with a new number at the beginning of the document or at the beginning of each chapter or page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:start-numbering-at</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">chapter</span>: footnote numbers start with a new number at the beginning of a chapter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">d</span><span class="Attribute_20_Value">ocument</span>: footnote numbers start with a new number at the beginning of a document. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age</span>: footnote numbers start with a new number at the beginning of a page.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:start-numbering-at</span> attribute is usable with the following element: <span class="Element">&lt;text:notes-configuration&gt;</span> <a href="#element-text_notes-configuration">16.29.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:start-numbering-at</span> attribute are <span class="Attribute_20_Value">document</span>, <span class="Attribute_20_Value">chapter</span> or <span class="Attribute_20_Value">page</span>.</p><h2 class="Heading_20_2"><a id="a19_870text_string-value-phonetic"><span style="margin-right:0.127cm;">19.870</span></a><a id="__RefHeading__1419178_253892949"/><a id="attribute-text_string-value-phonetic"/>text:string-value-phonetic</h2><p class="Text_20_body">The <span class="Attribute">text:string-value-phonetic</span> attribute specifies a phonetic description of a word.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value-phonetic</span> attribute is usable with the following elements: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a> and <span class="Element">&lt;text:alphabetical-index-mark-start&gt;</span> <a href="#element-text_alphabetical-index-mark-start">8.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value-phonetic</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_871text_string-value"><span style="margin-right:0.127cm;">19.871</span></a><a id="__RefHeading__1419180_253892949"/><a id="attribute-text_string-value"/>text:string-value</h2><h3 class="Heading_20_3"><a id="a19_871_1General"><span style="margin-right:0.127cm;">19.871.1</span></a><a id="__RefHeading__1419182_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:string-value</span> attribute specifies text for display. </p><h3 class="Heading_20_3"><a id="a19_871_2_text_alphabetical-index-mark_"><span style="margin-right:0.127cm;">19.871.2</span></a><a id="__RefHeading__1419184_253892949"/><a id="attribute-text_string-value_element-text_alphabetical-index-mark"/>&lt;text:alphabetical-index-mark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:string-value</span> attribute specifies text to be displayed in an alphabetical index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-mark&gt;</span> <a href="#element-text_alphabetical-index-mark">8.1.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_871_3_text_hidden-text_"><span style="margin-right:0.127cm;">19.871.3</span></a><a id="__RefHeading__1419186_253892949"/><a id="attribute-text_string-value_element-text_hidden-text"/>&lt;text:hidden-text&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:string-value</span> attribute specifies the text to display if a <span class="Attribute">text:condition</span> attribute has the value of <span class="Attribute_20_Value">false</span>. If this attribute is omitted, the element content is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value</span> attribute is usable with the following element: <span class="Element">&lt;text:hidden-text&gt;</span> <a href="#element-text_hidden-text">7.7.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_871_4_text_page-continuation_"><span style="margin-right:0.127cm;">19.871.4</span></a><a id="__RefHeading__1419188_253892949"/><a id="attribute-text_string-value_element-text_page-continuation"/>&lt;text:page-continuation&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:string-value</span> attribute specifies continuation text to display. If this attribute is omitted, the element content is used.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value</span> attribute is usable with the following element: <span class="Element">&lt;text:page-continuation&gt;</span> <a href="#element-text_page-continuation">7.3.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_871_5_text_toc-mark_"><span style="margin-right:0.127cm;">19.871.5</span></a><a id="__RefHeading__1419190_253892949"/><a id="attribute-text_string-value_element-text_toc-mark"/>&lt;text:toc-mark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:string-value</span> attribute specifies text to be displayed in a table of contents.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value</span> attribute is usable with the following element: <span class="Element">&lt;text:toc-mark&gt;</span> <a href="#element-text_toc-mark">8.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a19_871_6_text_user-index-mark_"><span style="margin-right:0.127cm;">19.871.6</span></a><a id="__RefHeading__1419192_253892949"/><a id="attribute-text_string-value_element-text_user-index-mark"/>&lt;text:user-index-mark&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:string-value</span> attribute specifies text to be displayed in an index.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-mark&gt;</span> <a href="#element-text_user-index-mark">8.1.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_872text_string-value-if-false"><span style="margin-right:0.127cm;">19.872</span></a><a id="__RefHeading__1419194_253892949"/><a id="attribute-text_string-value-if-false"/>text:string-value-if-false</h2><p class="Text_20_body">The <span class="Attribute">text:string-value-if-false</span> attribute specifies text string to display if a condition is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value-if-false</span> attribute is usable with the following element: <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value-if-false</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_873text_string-value-if-true"><span style="margin-right:0.127cm;">19.873</span></a><a id="__RefHeading__1419196_253892949"/><a id="attribute-text_string-value-if-true"/>text:string-value-if-true</h2><p class="Text_20_body">The <span class="Attribute">text:string-value-if-true</span> attribute specifies a text string to display if a condition is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:string-value-if-true</span> attribute is usable with the following element: <span class="Element">&lt;text:conditional-text&gt;</span> <a href="#element-text_conditional-text">7.7.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:string-value-if-true</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_874text_style-name"><span style="margin-right:0.127cm;">19.874</span></a><a id="__RefHeading__1419198_253892949"/><a id="attribute-text_style-name"/>text:style-name</h2><h3 class="Heading_20_3"><a id="a19_874_1General"><span style="margin-right:0.127cm;">19.874.1</span></a><a id="__RefHeading__1419200_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a style by name, with the additional requirement that it belong to a family of styles. </p><h3 class="Heading_20_3"><a id="a19_874_2_text_a_"><span style="margin-right:0.127cm;">19.874.2</span></a><a id="__RefHeading__1419202_253892949"/><a id="attribute-text_style-name_element-text_a"/>&lt;text:a&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a text style for an unvisited hyperlink. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_3_text_alphabetical-index_"><span style="margin-right:0.127cm;">19.874.3</span></a><a id="__RefHeading__1419204_253892949"/><a id="attribute-text_style-name_element-text_alphabetical-index"/>&lt;text:alphabetical-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a section family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_4_text_alphabetical-index-entry-template_"><span style="margin-right:0.127cm;">19.874.4</span></a><a id="__RefHeading__1419206_253892949"/><a id="attribute-text_style-name_element-text_alphabetical-index-entry-template"/>&lt;text:alphabetical-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-entry-template&gt;</span> <a href="#element-text_alphabetical-index-entry-template">8.8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_5_text_bibliography_"><span style="margin-right:0.127cm;">19.874.5</span></a><a id="__RefHeading__1419208_253892949"/><a id="attribute-text_style-name_element-text_bibliography"/>&lt;text:bibliography&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a section family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_6_text_bibliography-entry-template_"><span style="margin-right:0.127cm;">19.874.6</span></a><a id="__RefHeading__1419210_253892949"/><a id="attribute-text_style-name_element-text_bibliography-entry-template"/>&lt;text:bibliography-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-entry-template&gt;</span> <a href="#element-text_bibliography-entry-template">8.9.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_7_text_h_"><span style="margin-right:0.127cm;">19.874.7</span></a><a id="__RefHeading__1419212_253892949"/><a id="attribute-text_style-name_element-text_h"/>&lt;text:h&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a style that shall have the family paragraph. If a conditional style is applied, this attribute has the name of the style that was the result of the conditional style evaluation. </p><p class="Text_20_body">If both <span class="Attribute">text:style-name</span> and <span class="Attribute">text:class-names</span> are present, the style referenced by the <span class="Attribute">text:style-name</span> attribute is treated as the first style in the list in <span class="Attribute">text:class-names</span>. Consumers should support the <span class="Attribute">text:class-names</span> attribute and also should preserve it while editing.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_8_text_illustration-index_"><span style="margin-right:0.127cm;">19.874.8</span></a><a id="__RefHeading__1419214_253892949"/><a id="attribute-text_style-name_element-text_illustration-index"/>&lt;text:illustration-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a section family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_9_text_illustration-index-entry-template_"><span style="margin-right:0.127cm;">19.874.9</span></a><a id="__RefHeading__1419216_253892949"/><a id="attribute-text_style-name_element-text_illustration-index-entry-template"/>&lt;text:illustration-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:illustration-index-entry-template&gt;</span> <a href="#element-text_illustration-index-entry-template">8.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_10_text_index-entry-bibliography_"><span style="margin-right:0.127cm;">19.874.10</span></a><a id="__RefHeading__1419218_253892949"/><a id="attribute-text_style-name_element-text_index-entry-bibliography"/>&lt;text:index-entry-bibliography&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-bibliography&gt;</span> <a href="#element-text_index-entry-bibliography">8.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_11_text_index-entry-chapter_"><span style="margin-right:0.127cm;">19.874.11</span></a><a id="__RefHeading__1419220_253892949"/><a id="attribute-text_style-name_element-text_index-entry-chapter"/>&lt;text:index-entry-chapter&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_12_text_index-entry-link-end_"><span style="margin-right:0.127cm;">19.874.12</span></a><a id="__RefHeading__1419222_253892949"/><a id="attribute-text_style-name_element-text_index-entry-link-end"/>&lt;text:index-entry-link-end&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-link-end&gt;</span> <a href="#element-text_index-entry-link-end">8.13.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_13_text_index-entry-link-start_"><span style="margin-right:0.127cm;">19.874.13</span></a><a id="__RefHeading__1419224_253892949"/><a id="attribute-text_style-name_element-text_index-entry-link-start"/>&lt;text:index-entry-link-start&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-link-start&gt;</span> <a href="#element-text_index-entry-link-start">8.13.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_14_text_index-entry-page-number_"><span style="margin-right:0.127cm;">19.874.14</span></a><a id="__RefHeading__1419226_253892949"/><a id="attribute-text_style-name_element-text_index-entry-page-number"/>&lt;text:index-entry-page-number&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-page-number&gt;</span> <a href="#element-text_index-entry-page-number">8.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_15_text_index-entry-span_"><span style="margin-right:0.127cm;">19.874.15</span></a><a id="__RefHeading__1419228_253892949"/><a id="attribute-text_style-name_element-text_index-entry-span"/>&lt;text:index-entry-span&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-span&gt;</span> <a href="#element-text_index-entry-span">8.13.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_16_text_index-entry-tab-stop_"><span style="margin-right:0.127cm;">19.874.16</span></a><a id="__RefHeading__1419230_253892949"/><a id="attribute-text_style-name_element-text_index-entry-tab-stop"/>&lt;text:index-entry-tab-stop&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_17_text_index-entry-text_"><span style="margin-right:0.127cm;">19.874.17</span></a><a id="__RefHeading__1419232_253892949"/><a id="attribute-text_style-name_element-text_index-entry-text"/>&lt;text:index-entry-text&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-entry-text&gt;</span> <a href="#element-text_index-entry-text">8.13.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_18_text_index-source-style_"><span style="margin-right:0.127cm;">19.874.18</span></a><a id="__RefHeading__1419234_253892949"/><a id="attribute-text_style-name_element-text_index-source-style"/>&lt;text:index-source-style&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-source-style&gt;</span> <a href="#element-text_index-source-style">8.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleName</span> <a href="#datatype-styleName">18.3.31</a>.</p><h3 class="Heading_20_3"><a id="a19_874_19_text_index-title_"><span style="margin-right:0.127cm;">19.874.19</span></a><a id="__RefHeading__1419236_253892949"/><a id="attribute-text_style-name_element-text_index-title"/>&lt;text:index-title&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies section family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_20_text_index-title-template_"><span style="margin-right:0.127cm;">19.874.20</span></a><a id="__RefHeading__1419238_253892949"/><a id="attribute-text_style-name_element-text_index-title-template"/>&lt;text:index-title-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:index-title-template&gt;</span> <a href="#element-text_index-title-template">8.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_21_text_linenumbering-configuration_"><span style="margin-right:0.127cm;">19.874.21</span></a><a id="__RefHeading__1419240_253892949"/><a id="attribute-text_style-name_element-text_linenumbering-configuration"/>&lt;text:linenumbering-configuration&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a <span class="Attribute_20_Value">text</span> style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:linenumbering-configuration&gt;</span> <a href="#element-text_linenumbering-configuration">16.29.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_22_text_list_"><span style="margin-right:0.127cm;">19.874.22</span></a><a id="__RefHeading__1419242_253892949"/><a id="attribute-text_style-name_element-text_list"/>&lt;text:list&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies the name of a list style that is applied to a list.</p><p class="Text_20_body">If this attribute is not included and therefore no list style is specified, one of the following actions is taken:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If a list is contained within another list, the list style defaults to the style of the surrounding list.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If there is no list style specified for the surrounding list, but the list's list items contain paragraphs that have paragraph styles attached specifying a list style, that list style is used. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>An implementation-dependent default list style is used.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">To determine which formatting properties are applied to a list, the list level and list style name are taken into account. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_23_text_list-level-style-number_"><span style="margin-right:0.127cm;">19.874.23</span></a><a id="__RefHeading__1419244_253892949"/><a id="attribute-text_style-name_element-text_list-level-style-number"/>&lt;text:list-level-style-number&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a <span class="Attribute_20_Value">text</span> style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:list-level-style-number&gt;</span> <a href="#element-text_list-level-style-number">16.32</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_24_text_list-level-style-bullet_"><span style="margin-right:0.127cm;">19.874.24</span></a><a id="__RefHeading__1419246_253892949"/><a id="attribute-text_style-name_element-text_list-level-style-bullet"/>&lt;text:list-level-style-bullet&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:list-level-style-bullet&gt;</span> <a href="#element-text_list-level-style-bullet">16.31</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_25_text_numbered-paragraph_"><span style="margin-right:0.127cm;">19.874.25</span></a><a id="__RefHeading__1419248_253892949"/><a id="attribute-text_style-name_element-text_numbered-paragraph"/>&lt;text:numbered-paragraph&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies the name of a list style that is applied to a list.</p><p class="Text_20_body">If this attribute is not included and therefore no list style is specified, one of the following actions is taken:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If the list is contained within another list, the list style defaults to the style of the surrounding list.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>If there is no list style specified for the surrounding list, but the list contains paragraphs that have paragraph styles attached specifying a list style, this list style is used for any of these paragraphs.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>An implementation-dependent default list style is applied to any other paragraphs.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">To determine which formatting properties are applied to a list, the list level and list style name are taken into account. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_26_text_object-index_"><span style="margin-right:0.127cm;">19.874.26</span></a><a id="__RefHeading__1419250_253892949"/><a id="attribute-text_style-name_element-text_object-index"/>&lt;text:object-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies section family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_27_text_object-index-entry-template_"><span style="margin-right:0.127cm;">19.874.27</span></a><a id="__RefHeading__1419252_253892949"/><a id="attribute-text_style-name_element-text_object-index-entry-template"/>&lt;text:object-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index-entry-template&gt;</span> <a href="#element-text_object-index-entry-template">8.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_28_text_outline-level-style_"><span style="margin-right:0.127cm;">19.874.28</span></a><a id="__RefHeading__1419254_253892949"/><a id="attribute-text_style-name_element-text_outline-level-style"/>&lt;text:outline-level-style&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies character family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:outline-level-style&gt;</span> <a href="#element-text_outline-level-style">16.35</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_29_text_p_"><span style="margin-right:0.127cm;">19.874.29</span></a><a id="__RefHeading__1419256_253892949"/><a id="attribute-text_style-name_element-text_p"/>&lt;text:p&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a style that shall have the family paragraph. If a conditional style is applied, this attribute has the name of the style that was the result of the conditional style evaluation. </p><p class="Text_20_body">If both <span class="Attribute">text:style-name</span> and <span class="Attribute">text:class-names</span> are present, the style referenced by the <span class="Attribute">text:style-name</span> attribute is treated as the first style in the list in <span class="Attribute">text:class-names</span>. Consumers should support the <span class="Attribute">text:class-names</span> attribute and also should preserve it while editing.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_30_text_ruby_"><span style="margin-right:0.127cm;">19.874.30</span></a><a id="__RefHeading__1419258_253892949"/><a id="attribute-text_style-name_element-text_ruby"/>&lt;text:ruby&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a style for ruby which shall be a style with family of ruby.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:ruby&gt;</span> <a href="#element-text_ruby">6.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_31_text_ruby-text_"><span style="margin-right:0.127cm;">19.874.31</span></a><a id="__RefHeading__1419260_253892949"/><a id="attribute-text_style-name_element-text_ruby-text"/>&lt;text:ruby-text&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a style for ruby which shall be a style with family of text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:ruby-text&gt;</span> <a href="#element-text_ruby-text">6.4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_32_text_section_"><span style="margin-right:0.127cm;">19.874.32</span></a><a id="__RefHeading__1419262_253892949"/><a id="attribute-text_style-name_element-text_section"/>&lt;text:section&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a section family style for a section.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_33_text_span_"><span style="margin-right:0.127cm;">19.874.33</span></a><a id="__RefHeading__1419264_253892949"/><a id="attribute-text_style-name_element-text_span"/>&lt;text:span&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies style for span which shall be a style with family of <span class="Attribute_20_Value">text</span>.</p><p class="Text_20_body">If both <span class="Attribute">text:style-name</span> and <span class="Attribute">text:class-names</span> are present, the style referenced by the <span class="Attribute">text:style-name</span> attribute is treated as the first style in the list in <span class="Attribute">text:class-names</span>. Consumers should support the <span class="Attribute">text:class-names</span> attribute and also should preserve it while editing.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:span&gt;</span> <a href="#element-text_span">6.1.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_34_text_table-index-entry-template_"><span style="margin-right:0.127cm;">19.874.34</span></a><a id="__RefHeading__1419266_253892949"/><a id="attribute-text_style-name_element-text_table-index-entry-template"/>&lt;text:table-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-index-entry-template&gt;</span> <a href="#element-text_table-index-entry-template">8.5.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_35_text_table-of-content_"><span style="margin-right:0.127cm;">19.874.35</span></a><a id="__RefHeading__1419268_253892949"/><a id="attribute-text_style-name_element-text_table-of-content"/>&lt;text:table-of-content&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a section family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_36_text_table-of-content-entry-template_"><span style="margin-right:0.127cm;">19.874.36</span></a><a id="__RefHeading__1419270_253892949"/><a id="attribute-text_style-name_element-text_table-of-content-entry-template"/>&lt;text:table-of-content-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-of-content-entry-template&gt;</span> <a href="#element-text_table-of-content-entry-template">8.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_37_text_table-index_"><span style="margin-right:0.127cm;">19.874.37</span></a><a id="__RefHeading__1419272_253892949"/><a id="attribute-text_style-name_element-text_table-index"/>&lt;text:table-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies section family styles.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_38_text_user-index_"><span style="margin-right:0.127cm;">19.874.38</span></a><a id="__RefHeading__1419274_253892949"/><a id="attribute-text_style-name_element-text_user-index"/>&lt;text:user-index&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a section family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h3 class="Heading_20_3"><a id="a19_874_39_text_user-index-entry-template_"><span style="margin-right:0.127cm;">19.874.39</span></a><a id="__RefHeading__1419276_253892949"/><a id="attribute-text_style-name_element-text_user-index-entry-template"/>&lt;text:user-index-entry-template&gt;</h3><p class="Text_20_body">The <span class="Attribute">text:style-name</span> attribute specifies a paragraph family style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-entry-template&gt;</span> <a href="#element-text_user-index-entry-template">8.7.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_875text_style-override"><span style="margin-right:0.127cm;">19.875</span></a><a id="__RefHeading__1419278_253892949"/><a id="attribute-text_style-override"/>text:style-override</h2><p class="Text_20_body">The <span class="Attribute">text:style-override</span> attribute specifies an override to the list style to be applied to a list item. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:style-override</span> attribute is usable with the following element: <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:style-override</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_876text_suffix"><span style="margin-right:0.127cm;">19.876</span></a><a id="__RefHeading__1419280_253892949"/><a id="attribute-text_suffix"/>text:suffix</h2><p class="Text_20_body">The <span class="Attribute">text:suffix</span> attribute specifies a string that is displayed after a bibliography entry's short name or number if it occurs outside the bibliography. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:suffix</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-configuration&gt;</span> <a href="#element-text_bibliography-configuration">16.29.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:suffix</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_877text_tab-ref"><span style="margin-right:0.127cm;">19.877</span></a><a id="__RefHeading__1419282_253892949"/><a id="attribute-text_tab-ref"/>text:tab-ref</h2><p class="Text_20_body">The <span class="Attribute">text:tab-ref</span> attribute contains the number of the tab-stop to which a tab character refers. The position 0 marks the start margin of a paragraph.</p><p class="Note"><span class="Note_20_Label">Note:</span> The <span class="Attribute">text:tab-ref</span> attribute is only a hint to help non-layout oriented consumers to determine the tab/tab-stop association. Layout oriented consumers should determine the tab positions based on the style information.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:tab-ref</span> attribute is usable with the following element: <span class="Element">&lt;text:tab&gt;</span> <a href="#element-text_tab">6.1.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:tab-ref</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_878text_table-name"><span style="margin-right:0.127cm;">19.878</span></a><a id="__RefHeading__1419284_253892949"/><a id="attribute-text_table-name"/>text:table-name</h2><p class="Text_20_body">The <span class="Attribute">text:table-name</span> attribute specifies a table within a source database.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:table-name</span> attribute is usable with the following elements: <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a> and <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:table-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_879text_table-type"><span style="margin-right:0.127cm;">19.879</span></a><a id="__RefHeading__1419286_253892949"/><a id="attribute-text_table-type"/>text:table-type</h2><p class="Text_20_body">The <span class="Attribute">text:table-type</span> attribute specifies the type of reference made by to a database. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:table-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>table : the value of the <span class="Attribute">text:table-name</span> attribute is the name of a database table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>query : the value of the <span class="Attribute">text:table-name</span> attribute is the name of a database query.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>command : the value of the <span class="Attribute">text:table-name</span> attribute is an SQL statement.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:table-type</span> attribute is usable with the following elements: <span class="Element">&lt;text:database-display&gt;</span> <a href="#element-text_database-display">7.6.3</a>, <span class="Element">&lt;text:database-name&gt;</span> <a href="#element-text_database-name">7.6.7</a>, <span class="Element">&lt;text:database-next&gt;</span> <a href="#element-text_database-next">7.6.4</a>, <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a> and <span class="Element">&lt;text:database-row-select&gt;</span> <a href="#element-text_database-row-select">7.6.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:table-type</span> attribute are <span class="Attribute_20_Value">table</span>, <span class="Attribute_20_Value">query</span> or <span class="Attribute_20_Value">command</span>.</p><h2 class="Heading_20_2"><a id="a19_880text_time-adjust"><span style="margin-right:0.127cm;">19.880</span></a><a id="__RefHeading__1419288_253892949"/><a id="attribute-text_time-adjust"/>text:time-adjust</h2><p class="Text_20_body">The <span class="Attribute">text:time-adjust</span> attribute specifies an adjustment of the value of a time by a specific time period. Positive values adjust the time to a time in the future, while negative values adjust the time to a time in the past. Duration values are truncated to full minutes.</p><p class="Note"><span class="Note_20_Label">Note:</span> Truncation of time values is defined by <span class="Attribute">number:truncate-on-overflow</span>. <a href="#attribute-number_truncate-on-overflow">19.365</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:time-adjust</span> attribute is usable with the following element: <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:time-adjust</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_881text_time-value"><span style="margin-right:0.127cm;">19.881</span></a><a id="__RefHeading__1419290_253892949"/><a id="attribute-text_time-value"/>text:time-value</h2><p class="Text_20_body">The <span class="Attribute">text:time-value</span> attribute specifies the time at which a document was last edited.</p><p class="Text_20_body">If no value is specified, whether the field is marked as fixed or not, the current time is assumed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:time-value</span> attribute is usable with the following elements: <span class="Element">&lt;text:creation-time&gt;</span> <a href="#element-text_creation-time">7.5.4</a>, <span class="Element">&lt;text:modification-time&gt;</span> <a href="#element-text_modification-time">7.5.15</a>, <span class="Element">&lt;text:print-time&gt;</span> <a href="#element-text_print-time">7.5.7</a> and <span class="Element">&lt;text:time&gt;</span> <a href="#element-text_time">7.3.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:time-value</span> attribute has the data type <span class="Datatype">timeOrDateTime</span> <a href="#datatype-timeOrDateTime">18.3.36</a>.</p><h2 class="Heading_20_2"><a id="a19_882text_title"><span style="margin-right:0.127cm;">19.882</span></a><a id="__RefHeading__1419292_253892949"/><a id="attribute-text_title"/>text:title</h2><p class="Text_20_body">The <span class="Attribute">text:title</span> attribute specifies a title for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:title</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_883text_track-changes"><span style="margin-right:0.127cm;">19.883</span></a><a id="__RefHeading__1419294_253892949"/><a id="attribute-text_track-changes"/>text:track-changes</h2><p class="Text_20_body">The <span class="Attribute">text:track-changes</span> attribute specifies whether changes to the document should be tracked and recorded.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:sort-ascending</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: changes are not tracked.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: changes are tracked.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:track-changes</span> attribute is usable with the following element: <span class="Element">&lt;text:tracked-changes&gt;</span> <a href="#element-text_tracked-changes">5.5.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:track-changes</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_884text_url"><span style="margin-right:0.127cm;">19.884</span></a><a id="__RefHeading__1419296_253892949"/><a id="attribute-text_url"/>text:url</h2><p class="Text_20_body">The <span class="Attribute">text:url</span> attribute specifies an IRI for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:url</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:url</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_885text_use-caption"><span style="margin-right:0.127cm;">19.885</span></a><a id="__RefHeading__1419298_253892949"/><a id="attribute-text_use-caption"/>text:use-caption</h2><p class="Text_20_body">The <span class="Attribute">text:use-caption</span> attribute specifies whether captions or names of illustrations or tables are used for an index. </p><p class="Text_20_body">The defined values of the <span class="Attribute">text:use-caption</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: illustration or table names are used for an index.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: illustration or table captions are used for an index.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-caption</span> attribute is usable with the following elements: <span class="Element">&lt;text:illustration-index-source&gt;</span> <a href="#element-text_illustration-index-source">8.4.2</a> and <span class="Element">&lt;text:table-index-source&gt;</span> <a href="#element-text_table-index-source">8.5.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-caption</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_886text_use-chart-objects"><span style="margin-right:0.127cm;">19.886</span></a><a id="__RefHeading__1419300_253892949"/><a id="attribute-text_use-chart-objects"/>text:use-chart-objects</h2><p class="Text_20_body">The <span class="Attribute">text:use-chart-objects</span> attribute specifies whether to include embedded chart objects in an index of objects. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-chart-objects</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: object is not included in index of objects.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: object is included in index of objects.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-chart-objects</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-chart-objects</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_887text_use-draw-objects"><span style="margin-right:0.127cm;">19.887</span></a><a id="__RefHeading__1419302_253892949"/><a id="attribute-text_use-draw-objects"/>text:use-draw-objects</h2><p class="Text_20_body">The <span class="Attribute">text:use-draw-objects</span> attributes specifies whether embedded draw objects (defined by <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a> elements) will be included in an index of objects. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-draw-objects</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: draw objects not included in an index of objects.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: draw objects included in an index of objects.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-draw-objects</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-draw-objects</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_888text_use-floating-frames"><span style="margin-right:0.127cm;">19.888</span></a><a id="__RefHeading__1419304_253892949"/><a id="attribute-text_use-floating-frames"/>text:use-floating-frames</h2><p class="Text_20_body">The <span class="Attribute">text:use-floating-frames</span> attribute specifies whether text boxes will be included n user-defined indexes. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-floating-frames</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text boxes not included in user-defined indexes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text boxes included in user-defined indexes.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-floating-frames</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-floating-frames</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_889text_use-graphics"><span style="margin-right:0.127cm;">19.889</span></a><a id="__RefHeading__1419306_253892949"/><a id="attribute-text_use-graphics"/>text:use-graphics</h2><p class="Text_20_body">The <span class="Attribute">text:use-graphics</span> attribute specifies whether graphics are include in user-defined indexes. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-graphics</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: graphics are not included in user-defined indexes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: graphics are included in user-defined indexes.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-graphics</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-graphics</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_890text_use-index-marks"><span style="margin-right:0.127cm;">19.890</span></a><a id="__RefHeading__1419308_253892949"/><a id="attribute-text_use-index-marks"/>text:use-index-marks</h2><p class="Text_20_body">The <span class="Attribute">text:use-index-marks</span> attribute specifies whether table of contents index marks are used to generate index entries. The <span class="Attribute">text:outline-level</span> attribute specifies up to which level index marks are being included.<a href="#attribute-text_outline-level">19.844</a></p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-index-marks</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table of contents does not include entries generated from table of contents index marks.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table of contents does include entries generated from table of contents index marks.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a> element the default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-index-marks</span> attribute is usable with the following elements: <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-index-marks</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_891text_use-index-source-styles"><span style="margin-right:0.127cm;">19.891</span></a><a id="__RefHeading__1419310_253892949"/><a id="attribute-text_use-index-source-styles"/>text:use-index-source-styles</h2><p class="Text_20_body">The <span class="Attribute">text:use-index-source-styles</span> attribute specifies whether index entries are generated for paragraphs formatted using the paragraph styles listed in the <span class="Element">&lt;text:index-source-styles&gt;</span> element.</p><p class="Text_20_body">The <span class="Attribute">text:outline-level</span> attribute specifies up to which level index source styles are being included. <a href="#attribute-text_outline-level">19.844</a> </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-index-source-styles</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: index entries are not generated for paragraphs formatted using the paragraph styles listed in a <span class="Element">&lt;text:index-source-styles&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: index entries are generated for paragraphs formatted using the paragraph styles listed in a <span class="Element">&lt;text:index-source-styles&gt;</span> element.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a> element the default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-index-source-styles</span> attribute is usable with the following elements: <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a> and <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-index-source-styles</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_892text_use-keys-as-entries"><span style="margin-right:0.127cm;">19.892</span></a><a id="__RefHeading__1419312_253892949"/><a id="attribute-text_use-keys-as-entries"/>text:use-keys-as-entries</h2><p class="Text_20_body">The <span class="Attribute">text:use-keys-as-entries</span> attribute specifies the use of the up to two keys for an index mark as entries in the index. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-keys-as-entries</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: additional keys are used as sub entries.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: additional keys are used as additional entries.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-keys-as-entries</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-source&gt;</span> <a href="#element-text_alphabetical-index-source">8.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-keys-as-entries</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_893text_use-math-objects"><span style="margin-right:0.127cm;">19.893</span></a><a id="__RefHeading__1419314_253892949"/><a id="attribute-text_use-math-objects"/>text:use-math-objects</h2><p class="Text_20_body">The <span class="Attribute">text:use-math-objects</span> attribute specifies whether embedded math objects are included in an index of objects. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-math-objects</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: math objects are not included in an index of objects.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: math objects are included in an index of objects.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-math-objects</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-math-objects</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_894text_use-objects"><span style="margin-right:0.127cm;">19.894</span></a><a id="__RefHeading__1419316_253892949"/><a id="attribute-text_use-objects"/>text:use-objects</h2><p class="Text_20_body">The <span class="Attribute">text:use-objects</span> attributes specifies whether an object is included in a user defined index. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-objects</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: objects are not included in a user define index.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: objects are included in a user defined index.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-objects</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-objects</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_895text_use-other-objects"><span style="margin-right:0.127cm;">19.895</span></a><a id="__RefHeading__1419318_253892949"/><a id="attribute-text_use-other-objects"/>text:use-other-objects</h2><p class="Text_20_body">The <span class="Attribute">text:use-other-objects</span> attribute specifies whether other embedded objects are included in an index of objects. Other objects are those not covered by <span class="Attribute">text:use-chart-</span><span class="Attribute">objects</span>, <span class="Attribute">text:use-draw-objects</span>, <span class="Attribute">text:use-math-objects</span>, and <span class="Attribute">text:use-spreadsheet-objects</span> attributes. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-other-objects</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: other objects are not included in an index of objects.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: other objects are included in an index of objects.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-other-objects</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-other-objects</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_896text_use-outline-level"><span style="margin-right:0.127cm;">19.896</span></a><a id="__RefHeading__1419320_253892949"/><a id="attribute-text_use-outline-level"/>text:use-outline-level</h2><p class="Text_20_body">The <span class="Attribute">text:use-outline-level</span> attribute specifies whether headings are used to generate index entries. The <span class="Attribute">text:outline-level</span> attribute specifies up to which level headings are being included. <a href="#attribute-text_outline-level">19.844</a></p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-outline-level</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table of contents does not include entries generated from headings.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table of contents does include entries generated from headings.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">true</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-outline-level</span> attribute is usable with the following element: <span class="Element">&lt;text:table-of-content-source&gt;</span> <a href="#element-text_table-of-content-source">8.3.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-outline-level</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_897text_use-soft-page-breaks"><span style="margin-right:0.127cm;">19.897</span></a><a id="__RefHeading__1419322_253892949"/><a id="attribute-text_use-soft-page-breaks"/>text:use-soft-page-breaks</h2><p class="Text_20_body">The <span class="Attribute">text:use-soft-page-breaks</span> attribute specifies whether a document contains soft page breaks.</p><p class="Text_20_body">A soft page break is a page break that has been included in a document by a page oriented consumer at a position where the document itself does not include a page break as defined by <span class="Attribute">fo:break-after</span> <a href="#property-fo_break-before">20.178</a> or <span class="Attribute">fo:break-before</span> <a href="#property-fo_break-before">20.178</a>. </p><p class="Text_20_body">Soft page breaks are specified by the <span class="Element">&lt;text:soft-page-break&gt;</span> element.</p><p class="Text_20_body">OpenDocument producers need not produce<span class="Element">&lt;text:soft-page-break&gt;</span> elements. They <span class="ISO_20_Keyword">may</span> include them if they have computed a paginated layout. Consumers <span class="ISO_20_Keyword">may</span> handle the element while computing the layout, but it <span class="ISO_20_Keyword">shall not</span> depend on its existence. Soft page breaks are only defined for text documents.</p><p class="Text_20_body">Producers that store soft page breaks <span class="ISO_20_Keyword">shall</span> indicate this by setting the <span class="Attribute">text:use-soft-page-breaks</span> attribute to <span class="Attribute_20_Value">true</span>. Producers that do not store soft page breaks <span class="ISO_20_Keyword">shall</span> indicate that by omitting this attribute, or by setting it to false.</p><p class="Text_20_body">A producer that does not support pagination and soft page-breaks and that modifies an OpenDocument file, which includes soft page-breaks, <span class="ISO_20_Keyword">shall</span> set the <span class="Attribute">text:use-soft-page-breaks</span> attribute to <span class="Attribute_20_Value">false</span> (or remove it). It <span class="ISO_20_Keyword">should</span> also remove the <span class="Element">&lt;text:soft-page-break&gt;</span> elements from the document.</p><p class="Text_20_body">Producers that compute a paginated layout of a document <span class="ISO_20_Keyword">should</span> provide a facility for the export of soft page breaks for the purposes of consistent page breaks and for  conversion to talking book formats ( <a title="ANSI/NISO Z39.86-2005 Specifications for the Digital Talking Book" href="http://www.niso.org/standards/resources/Z39-86-2005.html">[DAISY]</a>).</p><p class="Text_20_body">For <span class="Element">&lt;text:soft-page-break&gt;</span> elements that appear within table rows, the maximum number of <span class="Element">&lt;text:soft-page-break&gt;</span> elements that appear within the single table cells determines the number of page breaks that appear within the table row. The <span class="Element">&lt;text:soft-page-break&gt;</span> elements contained in each cell determine the positions where these page breaks appear within the cell content.</p><p class="Text_20_body">When <span class="Element">&lt;text:soft-page-break&gt;</span> elements appear within text boxes and other content displayed outside the text flow, they do not start a new page, but only indicate where the text-box's content breaks between two pages.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-soft-page-breaks</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: soft page breaks not supported.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: soft page breaks supported.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-soft-page-breaks</span> attribute is usable with the following element: <span class="Element">&lt;office:text&gt;</span> <a href="#element-office_text">3.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-soft-page-breaks</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_898text_use-spreadsheet-objects"><span style="margin-right:0.127cm;">19.898</span></a><a id="__RefHeading__1419324_253892949"/><a id="attribute-text_use-spreadsheet-objects"/>text:use-spreadsheet-objects</h2><p class="Text_20_body">The <span class="Attribute">text:use-spreadsheet-objects</span> attribute specifies whether embedded spreadsheet objects will appear in an object index. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-spreadsheet-objects</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: spreadsheet objects do not appear in an object index.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: spreadsheet objects do appear in an object index.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-spreadsheet-objects</span> attribute is usable with the following element: <span class="Element">&lt;text:object-index-source&gt;</span> <a href="#element-text_object-index-source">8.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-spreadsheet-objects</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_899text_use-tables"><span style="margin-right:0.127cm;">19.899</span></a><a id="__RefHeading__1419326_253892949"/><a id="attribute-text_use-tables"/>text:use-tables</h2><p class="Text_20_body">The <span class="Attribute">text:use-tables</span> attribute specifies whether tables will appear in a user defined index. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:use-tables</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: tables will not appear in a user defined index.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: tables will appear in a user defined index.<span class="odfLiEnd"/> </p></li></ul><p class="Default_20_Value_borderStart">The default value for this attribute is <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List">The <span class="Attribute">text:use-tables</span> attribute is usable with the following element: <span class="Element">&lt;text:user-index-source&gt;</span> <a href="#element-text_user-index-source">8.7.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:use-tables</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a19_900text_value"><span style="margin-right:0.127cm;">19.900</span></a><a id="__RefHeading__1419328_253892949"/><a id="attribute-text_value"/>text:value</h2><p class="Text_20_body">The <span class="Attribute">text:value</span> attribute specifies the current row number for a <span class="Element">&lt;text:database-row-number&gt;</span> element. The number changes when new data is added to the current document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:value</span> attribute is usable with the following element: <span class="Element">&lt;text:database-row-number&gt;</span> <a href="#element-text_database-row-number">7.6.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:value</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_901text_visited-style-name"><span style="margin-right:0.127cm;">19.901</span></a><a id="__RefHeading__1419330_253892949"/><a id="attribute-text_visited-style-name"/>text:visited-style-name</h2><p class="Text_20_body">The <span class="Attribute">text:visited-style-name</span> attribute specifies a style for a hyperlink that has been visited. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:visited-style-name</span> attribute is usable with the following element: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:visited-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a19_902text_volume"><span style="margin-right:0.127cm;">19.902</span></a><a id="__RefHeading__1419332_253892949"/><a id="attribute-text_volume"/>text:volume</h2><p class="Text_20_body">The <span class="Attribute">text:volume</span> attribute specifies a volume for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:volume</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:volume</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_903text_year"><span style="margin-right:0.127cm;">19.903</span></a><a id="__RefHeading__1419334_253892949"/><a id="attribute-text_year"/>text:year</h2><p class="Text_20_body">The <span class="Attribute">text:year</span> attribute specifies a year for a bibliography index entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:year</span> attribute is usable with the following element: <span class="Element">&lt;text:bibliography-mark&gt;</span> <a href="#element-text_bibliography-mark">8.1.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:year</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_904xforms_bind"><span style="margin-right:0.127cm;">19.904</span></a><a id="__RefHeading__1419336_253892949"/><a id="attribute-xforms_bind"/>xforms:bind</h2><p class="Text_20_body">The <span class="Attribute">xforms:bind</span> attribute specifies the binding of an OpenDocument control to an XForm form.</p><p class="Text_20_body">With OpenDocument form buttons, the bind attribute refers to an <span class="Alien_20_Element">&lt;xforms:submission&gt;</span> element with the given ID. Pushing the button causes the appropriate XForms submission action to be performed. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> OpenDocument form button controls are: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, and, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>.</p><p class="Text_20_body">With OpenDocument form non-button controls, the <span class="Attribute">xforms:bind</span> attribute refers to an <span class="Alien_20_Element">&lt;xforms:bind&gt;</span> element with the given ID. Any such bound control reads and writes its data as determined by the appropriate bind element.</p><p class="Text_20_body">Note: OpenDocument form non-button controls are: <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:column&gt;</span> <a href="#element-form_column">13.5.23</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:item&gt;</span> <a href="#element-form_item">13.5.12</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:option&gt;</span> <a href="#element-form_option">13.5.14</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>,<span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>, and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xforms:bind</span> attribute is usable with the following elements: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a> and <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xforms:bind</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_905xhtml_about"><span style="margin-right:0.127cm;">19.905</span></a><a id="__RefHeading__1419338_253892949"/><a id="attribute-xhtml_about"/>xhtml:about</h2><p class="Text_20_body">The <span class="Attribute">xhtml:about</span> attribute specifies the subject of an RDF statement for in content metadata. Predicates for RDF statements are specified by the <span class="Attribute">xhtml:property</span> attribute. <a href="#attribute-xhtml_property">19.908</a></p><p class="Text_20_body">The RDF statement's object is specified by the <span class="Attribute">xhtml:content</span> attribute, if present, or it is</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>the literal content between a pair of <span class="Alien_20_Element">&lt;text:bookmark-start&gt;</span> and <span class="Alien_20_Element">&lt;text:bookmark-end&gt;</span> elements that are paired by the values of their <span class="Attribute">text:name</span> attributes. <a href="#element-text_bookmark-start">6.2.1.3</a>, <a href="#element-text_bookmark-end">6.2.1.4</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>for elements other than <span class="Element">&lt;text:bookmark-start&gt;</span>/<span class="Element">&lt;text:bookmark-end&gt;</span>, the literal content of the element containing an <span class="Attribute">xhtml:about</span> attribute. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">xhtml:datatype</span> attribute provides the data type of the RDF object. <a href="#attribute-xhtml_datatype">19.907</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xhtml:about</span> attribute is usable with the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xhtml:about</span> attribute has the data type <span class="Datatype">URIorSafeCURIE</span> <a href="#datatype-URIorSafeCURIE">18.3.37</a>.</p><h2 class="Heading_20_2"><a id="a19_906xhtml_content"><span style="margin-right:0.127cm;">19.906</span></a><a id="__RefHeading__1419340_253892949"/><a id="attribute-xhtml_content"/>xhtml:content</h2><p class="Text_20_body">The <span class="Attribute">xhtml:content</span> attribute specifies an object of an RDF statement for in content metadata. <a href="#attribute-xhtml_about">19.905</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xhtml:content</span> attribute is usable with the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xhtml:content</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_907xhtml_datatype"><span style="margin-right:0.127cm;">19.907</span></a><a id="__RefHeading__1419342_253892949"/><a id="attribute-xhtml_datatype"/>xhtml:datatype</h2><p class="Text_20_body">The <span class="Attribute">xhtml:datatype</span> attribute specifies the RDF data type (see §5 of <a title="Resource Description Framework (RDF): Concepts and Abstract Syntax" href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">[RDF-CONCEPTS]</a>) of the object of an RDF statement. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xhtml:datatype</span> attribute is usable with the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xhtml:datatype</span> attribute has the data type <span class="Datatype">CURIE</span> <a href="#datatype-CURIE">18.3.12</a>.</p><h2 class="Heading_20_2"><a id="a19_908xhtml_property"><span style="margin-right:0.127cm;">19.908</span></a><a id="__RefHeading__1419344_253892949"/><a id="attribute-xhtml_property"/>xhtml:property</h2><p class="Text_20_body">The <span class="Attribute">xhtml:property</span> attribute specifies a list of one or more CURIEs. Each CURIE is the predicate of an RDF statement for in content metadata. <a href="#attribute-xhtml_about">19.905</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xhtml:property</span> attribute is usable with the following elements: <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a> and <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xhtml:property</span> attribute has the data type <span class="Datatype">CURIEs</span> <a href="#datatype-CURIEs">18.3.13</a>.</p><h2 class="Heading_20_2"><a id="a19_909xlink_actuate"><span style="margin-right:0.127cm;">19.909</span></a><a id="__RefHeading__1419346_253892949"/><a id="attribute-xlink_actuate"/>xlink:actuate</h2><p class="Text_20_body">See §5.6.2 of <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a>.</p><p class="Text_20_body">The <span class="Attribute">xlink:actuate</span> attribute has the value <span class="Attribute_20_Value">onRequest</span> for the following elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>, <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;prese</span><span class="Element">ntation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>, <span class="Element">&lt;svg:definition-</span><span class="Element">src&gt;</span> <a href="#element-svg_definition-src">16.25</a>, <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a> and <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Text_20_body">The <span class="Attribute">xlink:actuate</span> attribute has the value <span class="Attribute_20_Value">onLoad</span> for the following elements: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a> and <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>.</p><p class="Default_20_Value_borderStart">For <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>, <span class="Element">&lt;svg:definition-</span><span class="Element">src&gt;</span> <a href="#element-svg_definition-src">16.25</a>, <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a> and <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a> elements the default value for this attribute is <span class="Attribute_20_Value">onRequest</span>.</p><p class="Default_20_Value">For <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a> and <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a> elements the default value for this attribute is <span class="Attribute_20_Value">onLoad</span>.</p><p class="Parent_20_Element_20_List_borderEnd">The <span class="Attribute">xlink:actuate</span> attribute is usable with the following elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>, <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;svg:definition-src&gt;</span> <a href="#element-svg_definition-src">16.25</a>, <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a> and <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>.</p><h2 class="Heading_20_2"><a id="a19_910xlink_href"><span style="margin-right:0.127cm;">19.910</span></a><a id="__RefHeading__1419348_253892949"/><a id="attribute-xlink_href"/>xlink:href</h2><h3 class="Heading_20_3"><a id="a19_910_1General"><span style="margin-right:0.127cm;">19.910.1</span></a><a id="__RefHeading__1419350_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a remote resource. Its data type is <span class="Datatype">anyIRI</span>. See §5.4 of <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a>.</p><h3 class="Heading_20_3"><a id="a19_910_2_anim_audio_"><span style="margin-right:0.127cm;">19.910.2</span></a><a id="__RefHeading__1419352_253892949"/><a id="attribute-xlink_href_element-anim_audio"/>&lt;anim:audio&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies an audio stream.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_3_chart_chart_"><span style="margin-right:0.127cm;">19.910.3</span></a><a id="__RefHeading__1419354_253892949"/><a id="attribute-xlink_href_element-chart_chart"/>&lt;chart:chart&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute at the <span class="Element">&lt;chart:chart&gt;</span> element specifies the document which provides the data for a chart. The following values are supported:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span> "<span class="Attribute_20_Value_20_Instance">.</span>"(U+002E, FULL STOP): The data is provided by the chart document itself. It is taken from the <span class="Element">&lt;table:table&gt;</span> element inside the <span class="Element">&lt;chart:chart&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>"<span class="Attribute_20_Value_20_Instance">..</span>"(U+002E, FULL STOP followed by U+002E, FULL STOP): The data is provided by the document into which the chart is embedded. This is only supported if the chart is embedded into another document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>A relative IRI: The data is provided by an embedded object referenced by the IRI. This embedded object shall be within the same package as the chart itself.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">All cell range addresses that are specified within a chart are relative to the document referenced by the <span class="Attribute">xlink:href</span> attribute.</p><p class="Text_20_body">If the <span class="Attribute">xlink:href</span> attribute is omitted, its value is assumed to be "<span class="Attribute_20_Value_20_Instance">..</span>" (U+002E, FULL STOP followed by U+002E, FULL STOP).</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_4_chart_symbol-image_"><span style="margin-right:0.127cm;">19.910.4</span></a><a id="__RefHeading__1419356_253892949"/><a id="attribute-xlink_href_element-chart_symbol-image"/>&lt;chart:symbol-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a file containing an image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;chart:symbol-image&gt;</span> <a href="#element-chart_symbol-image">17.23</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_5_db_component_"><span style="margin-right:0.127cm;">19.910.5</span></a><a id="__RefHeading__1419358_253892949"/><a id="attribute-xlink_href_element-db_component"/>&lt;db:component&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a form or report document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_6_db_connection-resource_"><span style="margin-right:0.127cm;">19.910.6</span></a><a id="__RefHeading__1419360_253892949"/><a id="attribute-xlink_href_element-db_connection-resource"/>&lt;db:connection-resource&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies either a database, or database connection data encoded as an IRI.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_7_db_file-based-database_"><span style="margin-right:0.127cm;">19.910.7</span></a><a id="__RefHeading__1419362_253892949"/><a id="attribute-xlink_href_element-db_file-based-database"/>&lt;db:file-based-database&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the location of a file that defines a database. If a database consists of multiple files of different types which all are required for it to be operational, <span class="Attribute">xlink:href</span> points to one of those files which defines the database as a whole.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_8_draw_a_"><span style="margin-right:0.127cm;">19.910.8</span></a><a id="__RefHeading__1419364_253892949"/><a id="attribute-xlink_href_element-draw_a"/>&lt;draw:a&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a target location for the hyperlink.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_9_draw_applet_"><span style="margin-right:0.127cm;">19.910.9</span></a><a id="__RefHeading__1419366_253892949"/><a id="attribute-xlink_href_element-draw_applet"/>&lt;draw:applet&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the base IRI for an applet.</p><p class="Text_20_body">The default value for this attribute is an empty string. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_10_draw_area-circle_"><span style="margin-right:0.127cm;">19.910.10</span></a><a id="__RefHeading__1419368_253892949"/><a id="attribute-xlink_href_element-draw_area-circle"/>&lt;draw:area-circle&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a target location for the hyperlink.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_11_draw_area-polygon_"><span style="margin-right:0.127cm;">19.910.11</span></a><a id="__RefHeading__1419370_253892949"/><a id="attribute-xlink_href_element-draw_area-polygon"/>&lt;draw:area-polygon&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a target location for the hyperlink.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_12_draw_area-rectangle_"><span style="margin-right:0.127cm;">19.910.12</span></a><a id="__RefHeading__1419372_253892949"/><a id="attribute-xlink_href_element-draw_area-rectangle"/>&lt;draw:area-rectangle&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a target location for the hyperlink.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_13_draw_fill-image_"><span style="margin-right:0.127cm;">19.910.13</span></a><a id="__RefHeading__1419374_253892949"/><a id="attribute-xlink_href_element-draw_fill-image"/>&lt;draw:fill-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a file containing an image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_14_draw_floating-frame_"><span style="margin-right:0.127cm;">19.910.14</span></a><a id="__RefHeading__1419376_253892949"/><a id="attribute-xlink_href_element-draw_floating-frame"/>&lt;draw:floating-frame&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the source of a floating frame.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_15_draw_image_"><span style="margin-right:0.127cm;">19.910.15</span></a><a id="__RefHeading__1419378_253892949"/><a id="attribute-xlink_href_element-draw_image"/>&lt;draw:image&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a file containing an image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_16_draw_object_"><span style="margin-right:0.127cm;">19.910.16</span></a><a id="__RefHeading__1419380_253892949"/><a id="attribute-xlink_href_element-draw_object"/>&lt;draw:object&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the location of an embedded object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_17_draw_object-ole_"><span style="margin-right:0.127cm;">19.910.17</span></a><a id="__RefHeading__1419382_253892949"/><a id="attribute-xlink_href_element-draw_object-ole"/>&lt;draw:object-ole&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the location of an embedded object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_18_draw_plugin_"><span style="margin-right:0.127cm;">19.910.18</span></a><a id="__RefHeading__1419384_253892949"/><a id="attribute-xlink_href_element-draw_plugin"/>&lt;draw:plugin&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the source of a plugin.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_19_form_button_"><span style="margin-right:0.127cm;">19.910.19</span></a><a id="__RefHeading__1419386_253892949"/><a id="attribute-xlink_href_element-form_button"/>&lt;form:button&gt;</h3><p class="Text_20_body"> The <span class="Attribute">xlink:href</span> attribute specifies a resource that is loaded if a button is operated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_20_form_connection-resource_"><span style="margin-right:0.127cm;">19.910.20</span></a><a id="__RefHeading__1419388_253892949"/><a id="attribute-xlink_href_element-form_connection-resource"/>&lt;form:connection-resource&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies either a database, or database connection encoded as an IRI. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;form:connection-resource&gt;</span> <a href="#element-form_connection-resource">7.6.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_21_form_image_"><span style="margin-right:0.127cm;">19.910.21</span></a><a id="__RefHeading__1419390_253892949"/><a id="attribute-xlink_href_element-form_image"/>&lt;form:image&gt;</h3><p class="Text_20_body"> The <span class="Attribute">xlink:href</span> attribute specifies a resource that is loaded if a button is operated.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_22_form_form_"><span style="margin-right:0.127cm;">19.910.22</span></a><a id="__RefHeading__1419392_253892949"/><a id="attribute-xlink_href_element-form_form"/>&lt;form:form&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the processing agent for a form.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_23_meta_auto-reload_"><span style="margin-right:0.127cm;">19.910.23</span></a><a id="__RefHeading__1419394_253892949"/><a id="attribute-xlink_href_element-meta_auto-reload"/>&lt;meta:auto-reload&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the IRI of a replacement document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_24_meta_template_"><span style="margin-right:0.127cm;">19.910.24</span></a><a id="__RefHeading__1419396_253892949"/><a id="attribute-xlink_href_element-meta_template"/>&lt;meta:template&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the location of a document template.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_25_presentation_event-listener_"><span style="margin-right:0.127cm;">19.910.25</span></a><a id="__RefHeading__1419398_253892949"/><a id="attribute-xlink_href_element-presentation_event-listener"/>&lt;presentation:event-listener&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies depending on the action selected by the <span class="Attribute">presentation:action</span> attribute either a document bookmark or an application.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_26_presentation_sound_"><span style="margin-right:0.127cm;">19.910.26</span></a><a id="__RefHeading__1419400_253892949"/><a id="attribute-xlink_href_element-presentation_sound"/>&lt;presentation:sound&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies a sound that is played when an effect is executed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_27_script_event-listener_"><span style="margin-right:0.127cm;">19.910.27</span></a><a id="__RefHeading__1419402_253892949"/><a id="attribute-xlink_href_element-script_event-listener"/>&lt;script:event-listener&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies macro code that should be called for an event. The IRI may have any  protocol. The interpretation of the IRI is script language dependent.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_28_style_background-image_"><span style="margin-right:0.127cm;">19.910.28</span></a><a id="__RefHeading__1419404_253892949"/><a id="attribute-xlink_href_element-style_background-image"/>&lt;style:background-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies an image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_29_svg_definition-src_"><span style="margin-right:0.127cm;">19.910.29</span></a><a id="__RefHeading__1419406_253892949"/><a id="attribute-xlink_href_element-svg_definition-src"/>&lt;svg:definition-src&gt;</h3><p class="Text_20_body">See § 20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;svg:definition-src&gt;</span> <a href="#element-svg_definition-src">16.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_30_svg_font-face-uri_"><span style="margin-right:0.127cm;">19.910.30</span></a><a id="__RefHeading__1419408_253892949"/><a id="attribute-xlink_href_element-svg_font-face-uri"/>&lt;svg:font-face-uri&gt;</h3><p class="Text_20_body">See § 20.8.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_31_table_cell-range-source_"><span style="margin-right:0.127cm;">19.910.31</span></a><a id="__RefHeading__1419410_253892949"/><a id="attribute-xlink_href_element-table_cell-range-source"/>&lt;table:cell-range-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies an IRI for a document containing a source table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_32_table_table-source_"><span style="margin-right:0.127cm;">19.910.32</span></a><a id="__RefHeading__1419412_253892949"/><a id="attribute-xlink_href_element-table_table-source"/>&lt;table:table-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies an IRI of a document containing a source table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_33_text_a_"><span style="margin-right:0.127cm;">19.910.33</span></a><a id="__RefHeading__1419414_253892949"/><a id="attribute-xlink_href_element-text_a"/>&lt;text:a&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the target location of a hyperlink.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_34_text_alphabetical-index-auto-mark-file_"><span style="margin-right:0.127cm;">19.910.34</span></a><a id="__RefHeading__1419416_253892949"/><a id="attribute-xlink_href_element-text_alphabetical-index-auto-mark-file"/>&lt;text:alphabetical-index-auto-mark-file&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the location of an alphabetical index mark file that contains a list of terms.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_35_text_list-level-style-image_"><span style="margin-right:0.127cm;">19.910.35</span></a><a id="__RefHeading__1419418_253892949"/><a id="attribute-xlink_href_element-text_list-level-style-image"/>&lt;text:list-level-style-image&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies an image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_36_text_script_"><span style="margin-right:0.127cm;">19.910.36</span></a><a id="__RefHeading__1419420_253892949"/><a id="attribute-xlink_href_element-text_script"/>&lt;text:script&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the location script source code.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h3 class="Heading_20_3"><a id="a19_910_37_text_section-source_"><span style="margin-right:0.127cm;">19.910.37</span></a><a id="__RefHeading__1419422_253892949"/><a id="attribute-xlink_href_element-text_section-source"/>&lt;text:section-source&gt;</h3><p class="Text_20_body">The <span class="Attribute">xlink:href</span> attribute specifies the document or document fragment to which a section is linked. If the IRI contains a fragment identifier, and if the referenced document is an OpenDocument document, the fragment identifier should be interpreted as the name of a section to which a section is linked. A fragment identifier should be ignored if a <span class="Attribute">text:section-name</span> attribute is present. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:href</span> attribute is usable with the following element: <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:href</span> attribute has the data type <span class="Datatype">anyIRI</span> <a href="#datatype-anyIRI">18.3.2</a>.</p><h2 class="Heading_20_2"><a id="a19_911xlink_show"><span style="margin-right:0.127cm;">19.911</span></a><a id="__RefHeading__1419424_253892949"/><a id="attribute-xlink_show"/>xlink:show</h2><p class="Text_20_body">See §5.6.1 of <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a>.</p><p class="Text_20_body">For a <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a> element the value for this attribute is <span class="Attribute_20_Value">replace</span>.</p><p class="Text_20_body">For <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;style:background-</span><span class="Element">image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a> and <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a> elements the value for this attribute is <span class="Attribute_20_Value">embed</span>.</p><p class="Text_20_body">For <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> <a href="#element-meta_hyperlink-behaviour">4.3.2.14</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a> and <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a> elements the supported values for this attribute are <span class="Attribute_20_Value">new</span> or <span class="Attribute_20_Value">replace</span>.</p><p class="Default_20_Value_borderStart">For a <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a> element the default value for this attribute is <span class="Attribute_20_Value">replace</span>.</p><p class="Default_20_Value">For <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a> and <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a> elements the default value for this attribute is <span class="Attribute_20_Value">embed</span>.</p><p class="Default_20_Value">For <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a> the default value for this attribute is <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List_borderEnd">The <span class="Attribute">xlink:show</span> attribute is usable with the following elements: <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>, <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;meta:hyperlink-behaviour&gt;</span> <a href="#element-meta_hyperlink-behaviour">4.3.2.14</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a> and <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a>.</p><h2 class="Heading_20_2"><a id="a19_912xlink_title"><span style="margin-right:0.127cm;">19.912</span></a><a id="__RefHeading__1419426_253892949"/><a id="attribute-xlink_title"/>xlink:title</h2><p class="Text_20_body">The <span class="Attribute">xlink:title</span> attribute specifies a title to be associated with a document template.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xlink:title</span> attribute is usable with the following element: <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xlink:title</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a19_913xlink_type"><span style="margin-right:0.127cm;">19.913</span></a><a id="__RefHeading__1419428_253892949"/><a id="attribute-xlink_type"/>xlink:type</h2><p class="Text_20_body">See §3.2 <a id="DDE_LINK6"/>of <a title="XML Linking Language (XLink) Version 1.0" href="http://www.w3.org/TR/2001/REC-xlink-20010627/">[XLink]</a>. This attribute always has the value <span class="Attribute_20_Value">simple</span> in OpenDocument document instances. </p><p class="Default_20_Value_borderStart">For <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>, <span class="Element">&lt;style:background-</span><span class="Element">image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;svg:definition-src&gt;</span> <a href="#element-svg_definition-src">16.25</a>, <span class="Element">&lt;svg:font-face-</span><span class="Element">uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:list-</span><span class="Element">level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a> and <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a> elements the default value for this attribute is <span class="Attribute_20_Value">simple</span>.</p><p class="Parent_20_Element_20_List_borderEnd">The <span class="Attribute">xlink:type</span> attribute is usable with the following elements: <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>, <span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a>, <span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a>, <span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:area-circle&gt;</span> <a href="#element-draw_area-circle">10.4.13.4</a>, <span class="Element">&lt;draw:area-polygon&gt;</span> <a href="#element-draw_area-polygon">10.4.13.5</a>, <span class="Element">&lt;draw:area-rectangle&gt;</span> <a href="#element-draw_area-rectangle">10.4.13.3</a>, <span class="Element">&lt;draw:fill-image&gt;</span> <a href="#element-draw_fill-image">16.40.6</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;form:form&gt;</span> <a href="#element-form_form">13.3</a>, <span class="Element">&lt;meta:auto-reload&gt;</span> <a href="#element-meta_auto-reload">4.3.2.13</a>, <span class="Element">&lt;meta:template&gt;</span> <a href="#element-meta_template">4.3.2.12</a>, <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;script:event-listener&gt;</span> <a href="#element-script_event-listener">14.4.2</a>, <span class="Element">&lt;style:background-image&gt;</span> <a href="#element-style_background-image">17.3</a>, <span class="Element">&lt;svg:definition-src&gt;</span> <a href="#element-svg_definition-src">16.25</a>, <span class="Element">&lt;svg:font-face-uri&gt;</span> <a href="#element-svg_font-face-uri">16.24</a>, <span class="Element">&lt;table:cell-range-source&gt;</span> <a href="#element-table_cell-range-source">9.3.1</a>, <span class="Element">&lt;table:table-source&gt;</span> <a href="#element-table_table-source">9.2.6</a>, <span class="Element">&lt;text:a&gt;</span> <a href="#element-text_a">6.1.8</a>, <span class="Element">&lt;text:alphabetical-index-auto-mark-file&gt;</span> <a href="#element-text_alphabetical-index-auto-mark-file">8.8.3</a>, <span class="Element">&lt;text:list-level-style-image&gt;</span> <a href="#element-text_list-level-style-image">16.33</a>, <span class="Element">&lt;text:script&gt;</span> <a href="#element-text_script">7.7.9</a> and <span class="Element">&lt;text:section-source&gt;</span> <a href="#element-text_section-source">5.4.2</a>.</p><h2 class="Heading_20_2"><a id="a19_914xml_id"><span style="margin-right:0.127cm;">19.914</span></a><a id="__RefHeading__1419430_253892949"/><a id="attribute-xml_id"/>xml:id</h2><p class="Text_20_body">The <span class="Attribute">xml:id</span> attribute is standardized by the W3C <a title="xml:id Version 1.0" href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">[XML-ID]</a> and gives an element a unique identification in its XML file. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">xml:id</span> attribute is usable with the following elements: <span class="Element">&lt;anim:audio&gt;</span> <a href="#element-anim_audio">15.5</a>, <span class="Element">&lt;anim:command&gt;</span> <a href="#element-anim_command">15.6.1</a>, <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a>, <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a>, <span class="Element">&lt;chart:chart&gt;</span> <a href="#element-chart_chart">11.1</a>, <span class="Element">&lt;chart:data-point&gt;</span> <a href="#element-chart_data-point">11.13</a>, <span class="Element">&lt;chart:plot-area&gt;</span> <a href="#element-chart_plot-area">11.4</a>, <span class="Element">&lt;chart:series&gt;</span> <a href="#element-chart_series">11.11</a>, <span class="Element">&lt;dr3d:cube&gt;</span> <a href="#element-dr3d_cube">10.5.4</a>, <span class="Element">&lt;dr3d:extrude&gt;</span> <a href="#element-dr3d_extrude">10.5.6</a>, <span class="Element">&lt;dr3d:rotate&gt;</span> <a href="#element-dr3d_rotate">10.5.7</a>, <span class="Element">&lt;dr3d:scene&gt;</span> <a href="#element-dr3d_scene">10.5.2</a>, <span class="Element">&lt;dr3d:sphere&gt;</span> <a href="#element-dr3d_sphere">10.5.5</a>, <span class="Element">&lt;draw:a&gt;</span> <a href="#element-draw_a">10.4.12</a>, <span class="Element">&lt;draw:applet&gt;</span> <a href="#element-draw_applet">10.4.7</a>, <span class="Element">&lt;draw:caption&gt;</span> <a href="#element-draw_caption">10.3.11</a>, <span class="Element">&lt;draw:circle&gt;</span> <a href="#element-draw_circle">10.3.8</a>, <span class="Element">&lt;draw:connector&gt;</span> <a href="#element-draw_connector">10.3.10</a>, <span class="Element">&lt;draw:control&gt;</span> <a href="#element-draw_control">10.3.13</a>, <span class="Element">&lt;draw:custom-shape&gt;</span> <a href="#element-draw_custom-shape">10.6.1</a>, <span class="Element">&lt;draw:ellipse&gt;</span> <a href="#element-draw_ellipse">10.3.9</a>, <span class="Element">&lt;draw:floating-frame&gt;</span> <a href="#element-draw_floating-frame">10.4.10</a>, <span class="Element">&lt;draw:frame&gt;</span> <a href="#element-draw_frame">10.4.2</a>, <span class="Element">&lt;draw:g&gt;</span> <a href="#element-draw_g">10.3.15</a>, <span class="Element">&lt;draw:image&gt;</span> <a href="#element-draw_image">10.4.4</a>, <span class="Element">&lt;draw:line&gt;</span> <a href="#element-draw_line">10.3.3</a>, <span class="Element">&lt;draw:measure&gt;</span> <a href="#element-draw_measure">10.3.12</a>, <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a>, <span class="Element">&lt;draw:object-ole&gt;</span> <a href="#element-draw_object-ole">10.4.6.3</a>, <span class="Element">&lt;draw:page&gt;</span> <a href="#element-draw_page">10.2.4</a>, <span class="Element">&lt;draw:page-thumbnail&gt;</span> <a href="#element-draw_page-thumbnail">10.3.14</a>, <span class="Element">&lt;draw:path&gt;</span> <a href="#element-draw_path">10.3.7</a>, <span class="Element">&lt;draw:plugin&gt;</span> <a href="#element-draw_plugin">10.4.8</a>, <span class="Element">&lt;draw:polygon&gt;</span> <a href="#element-draw_polygon">10.3.5</a>, <span class="Element">&lt;draw:polyline&gt;</span> <a href="#element-draw_polyline">10.3.4</a>, <span class="Element">&lt;draw:rect&gt;</span> <a href="#element-draw_rect">10.3.2</a>, <span class="Element">&lt;draw:regular-polygon&gt;</span> <a href="#element-draw_regular-polygon">10.3.6</a>, <span class="Element">&lt;draw:text-box&gt;</span> <a href="#element-draw_text-box">10.4.3</a>, <span class="Element">&lt;form:button&gt;</span> <a href="#element-form_button">13.5.15</a>, <span class="Element">&lt;form:checkbox&gt;</span> <a href="#element-form_checkbox">13.5.17</a>, <span class="Element">&lt;form:combobox&gt;</span> <a href="#element-form_combobox">13.5.11</a>, <span class="Element">&lt;form:date&gt;</span> <a href="#element-form_date">13.5.8</a>, <span class="Element">&lt;form:file&gt;</span> <a href="#element-form_file">13.5.5</a>, <span class="Element">&lt;form:fixed-text&gt;</span> <a href="#element-form_fixed-text">13.5.10</a>, <span class="Element">&lt;form:formatted-text&gt;</span> <a href="#element-form_formatted-text">13.5.6</a>, <span class="Element">&lt;form:frame&gt;</span> <a href="#element-form_frame">13.5.19</a>, <span class="Element">&lt;form:generic-control&gt;</span> <a href="#element-form_generic-control">13.5.25</a>, <span class="Element">&lt;form:grid&gt;</span> <a href="#element-form_grid">13.5.22</a>, <span class="Element">&lt;form:hidden&gt;</span> <a href="#element-form_hidden">13.5.21</a>, <span class="Element">&lt;form:image&gt;</span> <a href="#element-form_image">13.5.16</a>, <span class="Element">&lt;form:image-frame&gt;</span> <a href="#element-form_image-frame">13.5.20</a>, <span class="Element">&lt;form:listbox&gt;</span> <a href="#element-form_listbox">13.5.13</a>, <span class="Element">&lt;form:number&gt;</span> <a href="#element-form_number">13.5.7</a>, <span class="Element">&lt;form:password&gt;</span> <a href="#element-form_password">13.5.4</a>, <span class="Element">&lt;form:radio&gt;</span> <a href="#element-form_radio">13.5.18</a>, <span class="Element">&lt;form:text&gt;</span> <a href="#element-form_text">13.5.2</a>, <span class="Element">&lt;form:textarea&gt;</span> <a href="#element-form_textarea">13.5.3</a>, <span class="Element">&lt;form:time&gt;</span> <a href="#element-form_time">13.5.9</a>, <span class="Element">&lt;form:value-range&gt;</span> <a href="#element-form_value-range">13.5.24</a>, <span class="Element">&lt;office:annotation&gt;</span> <a href="#element-office_annotation">14.1</a>, <span class="Element">&lt;presentation:sound&gt;</span> <a href="#element-presentation_sound">10.8.2</a>, <span class="Element">&lt;table:covered-table-cell&gt;</span> <a href="#element-table_covered-table-cell">9.1.5</a>, <span class="Element">&lt;table:table&gt;</span> <a href="#element-table_table">9.1.2</a>, <span class="Element">&lt;table:table-cell&gt;</span> <a href="#element-table_table-cell">9.1.4</a>, <span class="Element">&lt;table:table-column&gt;</span> <a href="#element-table_table-column">9.1.6</a>, <span class="Element">&lt;table:table-row&gt;</span> <a href="#element-table_table-row">9.1.3</a>, <span class="Element">&lt;text:alphabetical-index&gt;</span> <a href="#element-text_alphabetical-index">8.8</a>, <span class="Element">&lt;text:bibliography&gt;</span> <a href="#element-text_bibliography">8.9</a>, <span class="Element">&lt;text:bookmark&gt;</span> <a href="#element-text_bookmark">6.2.1.2</a>, <span class="Element">&lt;text:bookmark-start&gt;</span> <a href="#element-text_bookmark-start">6.2.1.3</a>, <span class="Element">&lt;text:changed-region&gt;</span> <a href="#element-text_changed-region">5.5.2</a>, <span class="Element">&lt;text:h&gt;</span> <a href="#element-text_h">5.1.2</a>, <span class="Element">&lt;text:illustration-index&gt;</span> <a href="#element-text_illustration-index">8.4</a>, <span class="Element">&lt;text:index-title&gt;</span> <a href="#element-text_index-title">8.2.3</a>, <span class="Element">&lt;text:list&gt;</span> <a href="#element-text_list">5.3.1</a>, <span class="Element">&lt;text:list-header&gt;</span> <a href="#element-text_list-header">5.3.3</a>, <span class="Element">&lt;text:list-item&gt;</span> <a href="#element-text_list-item">5.3.4</a>, <span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a>, <span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a>, <span class="Element">&lt;text:numbered-paragraph&gt;</span> <a href="#element-text_numbered-paragraph">5.3.6</a>, <span class="Element">&lt;text:object-index&gt;</span> <a href="#element-text_object-index">8.6</a>, <span class="Element">&lt;text:p&gt;</span> <a href="#element-text_p">5.1.3</a>, <span class="Element">&lt;text:section&gt;</span> <a href="#element-text_section">5.4</a>, <span class="Element">&lt;text:table-index&gt;</span> <a href="#element-text_table-index">8.5</a>, <span class="Element">&lt;text:table-of-content&gt;</span> <a href="#element-text_table-of-content">8.3</a> and <span class="Element">&lt;text:user-index&gt;</span> <a href="#element-text_user-index">8.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">xml:id</span> attribute has the data type <span class="Datatype">ID</span> <a href="#datatype-ID">18.2</a>.</p><h1 class="Heading_20_1"><a id="a20Formatting_Attributes"><span style="margin-right:0.127cm;">20</span></a><a id="__RefHeading__1419432_253892949"/><a id="Formatting_Attributes"/>Formatting Attributes</h1><h2 class="Heading_20_2"><a id="a20_1General"><span style="margin-right:0.127cm;">20.1</span></a><a id="__RefHeading__1419434_253892949"/>General</h2><p class="Text_20_body">In an OpenDocument Format document, <span class="Alien_20_Element">&lt;style:*-properties&gt;</span> elements contain the definitions of formatting that is associated with document structure elements. Formatting definitions are expressed as attributes on the <span class="Alien_20_Element">&lt;style:*-properties&gt;</span> elements or as child elements of these elements. This chapter defines formatting properties that are represented by attributes. Formatting properties that are represented by elements are defined in chapter 17. </p><h2 class="Heading_20_2"><a id="a20_2chart_angle-offset"><span style="margin-right:0.127cm;">20.2</span></a><a id="__RefHeading__1419436_253892949"/><a id="property-chart_angle-offset"/>chart:angle-offset</h2><p class="Text_20_body">The <span class="Attribute">chart:angle-offset</span> attribute specifies a counter clockwise rotation of a polar coordinate in a circle, ring or polar chart. The attribute value is an angle. See <a id="DDE_LINK28"/><a href="#datatype-angle">18.3.1</a>. The default value is <span class="Attribute_20_Value_20_Instance">90deg</span>.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:angle-offset</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:angle-offset</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a20_3chart_auto-position"><span style="margin-right:0.127cm;">20.3</span></a><a id="__RefHeading__1419438_253892949"/><a id="property-chart_auto-position"/>chart:auto-position</h2><p class="Text_20_body">The <span class="Attribute">chart:auto-position</span> attribute specifies if an object should be positioned automatically. </p><p class="Text_20_body">The default value is <span class="Attribute_20_Value">true</span> if <span class="Attribute">svg:x</span> and <span class="Attribute">svg:y</span> attributes are not specified. It is <span class="Attribute_20_Value">false</span> if the <span class="Attribute">svg:x</span> and <span class="Attribute">svg:y</span> attributes are specified. </p><p class="Text_20_body">The <span class="Attribute">chart:auto-position</span> attribute is evaluated for chart styles applied to elements that may have <span class="Attribute">svg:x</span> and <span class="Attribute">svg:y</span> attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:auto-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: <span class="Attribute">svg:x</span> and <span class="Attribute">svg:y</span> attribute values are used to position an object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: <span class="Attribute">svg:x</span> and <span class="Attribute">svg:y</span> attribute values are ignored and the consumer chooses a position.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:auto-position</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:auto-position</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_4chart_auto-size"><span style="margin-right:0.127cm;">20.4</span></a><a id="__RefHeading__1419440_253892949"/><a id="property-chart_auto-size"/>chart:auto-size</h2><p class="Text_20_body">The <span class="Attribute">chart:auto-size</span> attribute specifies if the size of an object should be chosen automatically. </p><p class="Text_20_body">The default value is <span class="Attribute_20_Value">true</span> if <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attributes are not specified. It is <span class="Attribute_20_Value">false</span> if the <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attributes are specified.</p><p class="Text_20_body">The <span class="Attribute">chart:auto-size</span> attribute is evaluated for chart styles applied to elements that have <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:auto-size</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attribute values are used to size an object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: <span class="Attribute">svg:width</span> and <span class="Attribute">svg:height</span> attribute values are ignored and the consumer chooses a size.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:auto-size</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:auto-size</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_5chart_axis-label-position"><span style="margin-right:0.127cm;">20.5</span></a><a id="__RefHeading__1419442_253892949"/><a id="property-chart_axis-label-position"/>chart:axis-label-position</h2><p class="Text_20_body">The <span class="Attribute">chart:axis-label-position</span> attribute specifies the position of the axis labels.</p><p class="Text_20_body"><a id="line-51"/><a id="line-50"/>The defined values for the <span class="Attribute">chart:axis-label-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">near-axis</span>: The labels are placed adjacent to the axis line. On which side of the line the labels are placed depends on the <span class="Attribute">chart:axis-position</span> attribute. If the <span class="Attribute">chart:axis-position</span> attribute has the value <span class="Attribute_20_Value">start</span> or <span class="Attribute_20_Value">end</span>, the labels are placed outside the coordinate system. Otherwise the labels are placed adjacent to the axis on the side that belongs to the lower values on the crossing axis.<a id="line-53"/><a id="line-52"/><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">near-axis-other-side</span>: The labels are placed adjacent to the axis on the opposite side as for near-axis.<a id="line-57"/><a id="line-56"/><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outside-end</span>: The labels are placed outside the coordinate region on that side where the crossing axis has its maximum value.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="line-59"/><a id="line-58"/><span class="Attribute_20_Value">outside-start</span>: The labels are placed outside the coordinate region on that side where the crossing axis has its minimum value.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If the <span class="Attribute">chart:axis-label-position</span> attribute is missing but a <span class="Attribute">chart:axis-position</span> attribute is given, the value of the <span class="Attribute">chart:axis-label-position</span> attribute is assumed to be <span class="Attribute_20_Value">near-axis</span>.<a id="line-61"/><a id="line-60"/></p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:axis-label-position</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:axis-label-position</span> attribute are <span class="Attribute_20_Value">near-axis</span>, <span class="Attribute_20_Value">near-axis-other-side</span>, <span class="Attribute_20_Value">outside-start</span> or <span class="Attribute_20_Value">outside-end</span>.</p><h2 class="Heading_20_2"><a id="a20_6chart_axis-position"><span style="margin-right:0.127cm;">20.6</span></a><a id="__RefHeading__1419444_253892949"/><a id="property-chart_axis-position"/>chart:axis-position</h2><p class="Text_20_body">The <span class="Attribute">chart:axis-position</span> attribute specifies the position of the axis line on the scale of the crossing axis.<a id="line-31"/><a id="line-30"/></p><p class="Text_20_body">If the attribute is set for a y-axis, the position indicates a value on the scale of the first x-axis.<a id="line-33"/><a id="line-32"/></p><p class="Text_20_body">If the attribute is set for a x-axis, the position indicates a value on the scale of the first y-axis.<a id="line-35"/><a id="line-34"/></p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element. </p><p class="Text_20_body"><a id="line-39"/><a id="line-38"/>The defined values for the <span class="Attribute">chart:axis-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">end</span>: The axis line is placed at the end of the crossing axis<a id="line-43"/><a id="line-42"/>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">start</span>: The axis line is placed at the start of the crossing axis<a id="line-412"/><a id="line-403"/>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type double: The axis line is placed at the given value on the crossing axis. If the crossing axis is an axis displaying categories rather than values, a value of <span class="Attribute_20_Value_20_Instance">1</span> indicates that the axis should be placed at the first category, a value of <span class="Attribute_20_Value_20_Instance">2</span> indicates that the axis should be placed at the second category and so forth.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:axis-position</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:axis-position</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">end</span> or a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_7chart_connect-bars"><span style="margin-right:0.127cm;">20.7</span></a><a id="__RefHeading__1419446_253892949"/><a id="property-chart_connect-bars"/>chart:connect-bars</h2><p class="Text_20_body">The <span class="Attribute">chart:connect-bars</span> attribute specifies if bars in a bar chart that belong to the same series are connected by lines.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:connect-bars</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: bars belonging to the same series are not connected by lines.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: bars belonging to the same series are connected by lines.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:connect-bars</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:connect-bars</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_8chart_data-label-number"><span style="margin-right:0.127cm;">20.8</span></a><a id="__RefHeading__1419448_253892949"/><a id="property-chart_data-label-number"/>chart:data-label-number</h2><p class="Text_20_body">The <a id="chart_data-label-number"/><span class="Attribute">chart:data-label-number</span> attribute specifies whether the value and/or the percentage of a data point should be displayed within a data label. By default, neither the value nor a percentage is displayed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:data-label-number</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: neither the value nor the percentage should be displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">percentage</span>: only the percentage value should be displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value</span>: only the value should be displayed within the data label.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value-and-percentage</span>: both the value and the percentage should be displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:data-label&gt;</span>, <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Text_20_body">The <span class="Attribute">style:data-style-name</span> attribute can be used together with this attribute to indicate which number format should be used to display the value.</p><p class="Text_20_body">The <span class="Attribute">style:percentage-data-style-name</span> attribute can be used together with this attribute to indicate which number format should be used to display the percentage value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:data-label-number</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:data-label-number</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">value</span>, <span class="Attribute_20_Value">percentage</span> or <span class="Attribute_20_Value">value-and-percentage</span>.</p><h2 class="Heading_20_2"><a id="a20_9chart_data-label-symbol"><span style="margin-right:0.127cm;">20.9</span></a><a id="__RefHeading__1419450_253892949"/><a id="property-chart_data-label-symbol"/>chart:data-label-symbol</h2><p class="Text_20_body">The <span class="Attribute">chart:data-label-symbol</span> attribute specifies whether to display a legend symbol within the data label of a data point.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:data-label&gt;</span>, <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:data-label-symbol</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a legend symbol is not displayed within the data label of a data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a legend symbol is displayed within the data label of a data point.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:data-label-symbol</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:data-label-symbol</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_10chart_data-label-text"><span style="margin-right:0.127cm;">20.10</span></a><a id="__RefHeading__1419452_253892949"/><a id="property-chart_data-label-text"/>chart:data-label-text</h2><p class="Text_20_body">The <a id="chart_data-label-text"/><span class="Attribute">chart:data-label-text</span> attribute specifies whether to display the category within the data label of a data point.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to <span class="Element">&lt;chart:data-label&gt;</span>, <span class="Element">&lt;chart:data-point&gt;</span>, a <span class="Element">&lt;chart:series&gt;</span> or a <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:data-label-text</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a category is not displayed within the data label of a data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a category is displayed within the data label of a data point.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:data-label-text</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:data-label-text</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_11chart_deep"><span style="margin-right:0.127cm;">20.11</span></a><a id="__RefHeading__1419454_253892949"/><a id="property-chart_deep"/>chart:deep</h2><p class="Text_20_body">The <span class="Attribute">chart:deep</span> attribute specifies whether data series are displayed behind each other along the z-axis or not. The <span class="Attribute">chart:deep</span> attribute is ignored unless a <span class="Attribute">chart:three-dimensional</span> attribute is present and has the value true. <a href="#property-chart_three-dimensional">20.58</a></p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:deep</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data series are not displayed behind each other along the z-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data series are displayed behind each other along the z-axis. The z-axis displays the name of the series.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:deep</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:deep</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_12chart_display-label"><span style="margin-right:0.127cm;">20.12</span></a><a id="__RefHeading__1419456_253892949"/><a id="property-chart_display-label"/>chart:display-label</h2><p class="Text_20_body">The <span class="Attribute">chart:display-label</span> attribute specifies whether labels are displayed on an axis or not. </p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Note"><span class="Note_20_Label">Note:</span> The labels controlled by <span class="Attribute">chart:display-label</span> attribute appear on an axis as opposed to being labels for the axis.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:display-label</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: labels are not displayed on an axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: labels are displayed on an axis.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:display-label</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:display-label</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_13chart_error-category"><span style="margin-right:0.127cm;">20.13</span></a><a id="__RefHeading__1419458_253892949"/><a id="property-chart_error-category"/>chart:error-category</h2><p class="Text_20_body">The <span class="Attribute">chart:error-category</span> attribute is used to determine which function is used to calculate error indicators at data points. By default, no error indicators are shown. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:error-category</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cell-range</span>: Use values from cell ranges for positive and negative error indicators. The <span class="Attribute">chart:error-lower-range</span> and <span class="Attribute">chart:error-upper-range</span> attributes determine the cell ranges which contain the values to be used for negative and positive error indicators.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">constant</span>: Use fixed absolute values for both directions: positive and negative The absolute value for a positive direction is given with <span class="Attribute">chart:error-upper-limit</span> attribute. The absolute value for a negative direction is given with <span class="Attribute">chart:error-lower-limit</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">error-margin</span>: Use a fixed percentage of the largest value – this is called error-margin. The percentage value is given within <span class="Attribute">chart:error-margin</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: No error indicators are shown.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">percentage</span>: Use a fixed percentage of each value The percentage value is given within <span class="Attribute">chart:error-percentage</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">standard-deviation</span>: Standard deviation of the values of a series assuming an equal distribution.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">standard-error</span>: Standard error (standard deviation of the mean) of the values of a series.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">variance</span>: Variance of the values of a series assuming an equal distribution.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to <span class="Element">&lt;chart:error-indicator&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-category</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:error-category</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">variance</span>, <span class="Attribute_20_Value">standard-deviation</span>, <span class="Attribute_20_Value">percentage</span>, <span class="Attribute_20_Value">error-margin</span>, <span class="Attribute_20_Value">constant</span>, <span class="Attribute_20_Value">standard-error</span> or <span class="Attribute_20_Value">cell-range</span>.</p><h2 class="Heading_20_2"><a id="a20_14chart_error-lower-indicator"><span style="margin-right:0.127cm;">20.14</span></a><a id="__RefHeading__1419460_253892949"/><a id="property-chart_error-lower-indicator"/>chart:error-lower-indicator</h2><p class="Text_20_body">The <span class="Attribute">chart:error-lower-indicator</span> attribute specifies whether negative error indicators are displayed (the error value is subtracted from the data point value).</p><p class="Text_20_body">This attribute should be used together with the <span class="Attribute">chart:error-category</span> attribute.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:error-lower-indicator</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: negative error indicators are not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: negative error indicators are displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-lower-indicator</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-lower-indicator</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_15chart_error-lower-limit"><span style="margin-right:0.127cm;">20.15</span></a><a id="__RefHeading__1419462_253892949"/><a id="property-chart_error-lower-limit"/>chart:error-lower-limit</h2><p class="Text_20_body">The <span class="Attribute">chart:error-lower-limit</span> attribute specifies the absolute value in the negative direction that is used to display error indicators, if a <span class="Attribute">chart:error-category</span> attribute has the value <span class="Attribute_20_Value">constant</span>. <a href="#property-chart_error-category">20.13</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-lower-limit</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-lower-limit</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_16chart_error-lower-range"><span style="margin-right:0.127cm;">20.16</span></a><a id="__RefHeading__1718342_1219268628"/><a id="property-chart_error-lower-range"/>chart:error-lower-range</h2><p class="Text_20_body">The <span class="Attribute">chart:error-lower-range</span> attribute specifies the cell range used for negative error indicators when a <span class="Attribute">chart:error-category</span> attribute has a value of <span class="Attribute_20_Value">cell-range</span>. <a href="#property-chart_error-category">20.13</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-lower-range</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-lower-range</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a20_17chart_error-margin"><span style="margin-right:0.127cm;">20.17</span></a><a id="__RefHeading__1419464_253892949"/><a id="property-chart_error-margin"/>chart:error-margin</h2><p class="Text_20_body">The <span class="Attribute">chart:error-margin</span> attribute specifies the percentage of the largest value in a series used in the display of error indicators for each data point of a series.</p><p class="Text_20_body">This attribute should be used together with the <span class="Attribute">chart:error-category</span> attribute if it has the value <span class="Attribute_20_Value">error-margin</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-margin</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-margin</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_18chart_error-percentage"><span style="margin-right:0.127cm;">20.18</span></a><a id="__RefHeading__1419466_253892949"/><a id="property-chart_error-percentage"/>chart:error-percentage</h2><p class="Text_20_body">The <span class="Attribute">chart:error-percentage</span> attribute specifies the percentage that is used in the display of error indicators for each data point of a series.</p><p class="Text_20_body">This attribute should be used together with a <span class="Attribute">chart:error-category</span> attribute if the <span class="Attribute">chart:error-category</span> attribute has the value <span class="Attribute_20_Value">percentage</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-percentage</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-percentage</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_19chart_error-upper-indicator"><span style="margin-right:0.127cm;">20.19</span></a><a id="__RefHeading__1419468_253892949"/><a id="property-chart_error-upper-indicator"/>chart:error-upper-indicator</h2><p class="Text_20_body">The <span class="Attribute">chart:error-upper-indicator</span> attribute specifies whether positive error indicators should be displayed (the error value is added to the data point value).</p><p class="Text_20_body">This attribute should be used together with a <span class="Attribute">chart:error-category</span> attribute.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:error-upper-indicator</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: positive error indicators are not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: positive error indicators are displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-upper-indicator</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-upper-indicator</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_20chart_error-upper-limit"><span style="margin-right:0.127cm;">20.20</span></a><a id="__RefHeading__1419470_253892949"/><a id="property-chart_error-upper-limit"/>chart:error-upper-limit</h2><p class="Text_20_body">The <span class="Attribute">chart:error-upper-limit</span> attribute specifies the absolute value in the positive direction that is used to display error indicators, if the <span class="Attribute">chart:error-category</span> attribute has the value <span class="Attribute_20_Value">constant</span>. <a href="#property-chart_error-category">20.13</a></p><p class="Text_20_body">This attribute should be used together with <span class="Attribute">chart:error-category</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-upper-limit</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-upper-limit</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_21chart_error-upper-range"><span style="margin-right:0.127cm;">20.21</span></a><a id="__RefHeading__1718344_1219268628"/><a id="property-chart_error-upper-range"/>chart:error-upper-range</h2><p class="Text_20_body">The <span class="Attribute">chart:error-upper-range</span> attribute specifies the cell range used for positive error indicators when the <span class="Attribute">chart:error-category</span> attribute has the value <span class="Attribute_20_Value">cell-range</span> <a href="#property-chart_error-category">20.13</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:error-upper-range</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:error-upper-range</span> attribute has the data type <span class="Datatype">cellRangeAddressList</span> <a href="#datatype-cellRangeAddressList">18.3.6</a>.</p><h2 class="Heading_20_2"><a id="a20_22chart_gap-width"><span style="margin-right:0.127cm;">20.22</span></a><a id="__RefHeading__1419472_253892949"/><a id="property-chart_gap-width"/>chart:gap-width</h2><p class="Text_20_body">The <span class="Attribute">chart:gap-width</span> attribute specifies a gap between neighboring groups of bars in a bar chart (that is the distance between the last bar in one category and the first bar in the following category). It is specified as an integer percentage relative to the width of a single bar.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:axis&gt;</span> element with <span class="Attribute">chart:dimension</span> attribute set to y. </p><p class="Note"><span class="Note_20_Label">Note:</span> Bars attached to different axis can be arranged differently as long as they are grouped per axis (<span class="Attribute">chart:group-bars-per-axis</span> attribute has the value <span class="Attribute_20_Value">true</span>).</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:gap-width</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:gap-width</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_23chart_group-bars-per-axis"><span style="margin-right:0.127cm;">20.23</span></a><a id="__RefHeading__1419474_253892949"/><a id="property-chart_group-bars-per-axis"/>chart:group-bars-per-axis</h2><p class="Text_20_body">The <span class="Attribute">chart:group-bars-per-axis</span> attribute specifies whether bars in a bar chart are displayed side by side or behind each other when they are attached to different y-axes. </p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:group-bars-per-axis</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: all bars on the same x-axis are handled as one group and are displayed side by side.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: only bars attached to the same x- and y-axis are handled as one group.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:group-bars-per-axis</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:group-bars-per-axis</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_24chart_hole-size"><span style="margin-right:0.127cm;">20.24</span></a><a id="__RefHeading__1419476_253892949"/><a id="property-chart_hole-size"/>chart:hole-size</h2><p class="Text_20_body">The <span class="Attribute">chart:hole-size</span> attribute specifies the diameter of the inner hole of a ring chart as percentage of the outer diameter of the outermost ring.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:hole-size</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:hole-size</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_25chart_include-hidden-cells"><span style="margin-right:0.127cm;">20.25</span></a><a id="__RefHeading__1419478_253892949"/><a id="property-chart_include-hidden-cells"/>chart:include-hidden-cells</h2><p class="Text_20_body">The <span class="Attribute">chart:include-hidden-cells</span> attribute specifies whether data points in hidden cells are plotted in a chart.<a id="line-25"/><a id="line-24"/> The default is to plot data points in hidden cells.</p><p class="Text_20_body">This attribute can be used within styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:include-hidden-cells</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data points in hidden cells are not plotted in a chart.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data points in hidden cells are plotted in a chart.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:include-hidden-cells</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:include-hidden-cells</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_26chart_interpolation"><span style="margin-right:0.127cm;">20.26</span></a><a id="__RefHeading__1419480_253892949"/><a id="property-chart_interpolation"/>chart:interpolation</h2><p class="Text_20_body"> The <span class="Attribute">chart:interpolation</span> attribute specifies interpolations for line and scatter charts.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:interpolation</span> attribute are:</p><ul><li><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b-spline</span> – B-Splines. <a href="#property-chart_spline-resolution">20.51</a> If the <span class="Attribute">chart:spline-resolution</span> attribute has value 1 this is identical to the <span class="Attribute">chart:interpolation</span> attribute value <span class="Attribute_20_Value">none</span>. If the <span class="Attribute">chart:spline-resolution</span> attribute has value <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.3654in; padding:0; " class="fr7" id="Object34"><img style="height:0.4671cm;width:0.9281cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m34ea101b.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">and the <span class="Attribute">chart:spline-order</span> attribute has value <span class="T3">p</span> then given a sequence of data points, a B-spline interpolation with polynomials of degree <span class="T3">p</span> is constructed as described here. First we omit any consecutive repeated data points obtaining </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3807in; padding:0; " class="fr7" id="Object35"><img style="height:0.54cm;width:3.507cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m1b16dc76.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-0.9281cm;">where for all </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.7189in; padding:0; " class="fr7" id="Object37"><img style="height:0.4671cm;width:1.826cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m3841189f.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-4.4351cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3972in; padding:0; " class="fr7" id="Object39"><img style="height:0.54cm;width:3.5489cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5cb9a3ca.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-6.261100000000001cm;">.</div>and the <span class="Attribute">chart:spline-order</span> attribute has value <span class="T3">p</span> then given a sequence of data points, a B-spline interpolation with polynomials of degree <span class="T3">p</span> is constructed as described here. First we omit any consecutive repeated data points obtaining <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3807in; padding:0; " class="fr7" id="Object35"><img style="height:0.54cm;width:3.507cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m1b16dc76.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">where for all </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.7189in; padding:0; " class="fr7" id="Object37"><img style="height:0.4671cm;width:1.826cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m3841189f.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-3.507cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3972in; padding:0; " class="fr7" id="Object39"><img style="height:0.54cm;width:3.5489cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5cb9a3ca.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-5.333cm;">.</div>where for all <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.7189in; padding:0; " class="fr7" id="Object37"><img style="height:0.4671cm;width:1.826cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m3841189f.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3972in; padding:0; " class="fr7" id="Object39"><img style="height:0.54cm;width:3.5489cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5cb9a3ca.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.826cm;">.</div>, <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3972in; padding:0; " class="fr7" id="Object39"><img style="height:0.54cm;width:3.5489cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5cb9a3ca.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">.</div>.<span class="odfLiEnd"/> </div><ul><li><!--Next 'div' was a 'text:p'.--><div class="P17">We then construct a parameter list <!--Next 'div' is a draw:frame.--><div style="height:0.2083in;width:0.602in; padding:0; " class="fr7" id="Object36"><img style="height:0.5291cm;width:1.5291cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_636c535a.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"> using the centripetal method with a power of 0.5: </div> <!--Next 'div' is a draw:frame.--><div style="height:0.9217in;width:2.1925in; padding:0; " class="fr7" id="Object38"><img style="height:2.3411cm;width:5.569cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_2341b03f.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.5291cm;"> for </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.7583in; padding:0; " class="fr7" id="Object40"><img style="height:0.4671cm;width:1.9261cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_7399792d.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-7.0981cm;"> and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2083in;width:0.4154in; padding:0; " class="fr7" id="Object41"><img style="height:0.5291cm;width:1.0551cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_4f1f02f5.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-9.0242cm;">.</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P17">Next we generate a knot vector <!--Next 'div' is a draw:frame.--><div style="height:0.2083in;width:0.678in; padding:0; " class="fr7" id="Object42"><img style="height:0.5291cm;width:1.7221cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_68762b5e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">with </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.8457in; padding:0; " class="fr7" id="Object43"><img style="height:0.4671cm;width:2.1481cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_med4bb24.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.7221cm;">:</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P20"> <!--Next 'div' is a draw:frame.--><div style="height:0.9098in;width:4.0189in; padding:0; " class="fr7" id="Object44"><img style="height:2.3109cm;width:10.208cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5fbad9b0.gif"/></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21">Now let <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.5783in; padding:0; " class="fr7" id="Object45"><img style="height:0.54cm;width:1.4689cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m2250a8b1.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">be the B-spline basis function defined recursively by </div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P20"> <!--Next 'div' is a draw:frame.--><div style="height:0.9362in;width:4.5043in; padding:0; " class="fr7" id="Object46"><img style="height:2.3779cm;width:11.4409cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_618c2856.gif"/></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21">Let <!--Next 'div' is a draw:frame.--><div style="height:0.9583in;width:0.8874in; padding:0; " class="fr7" id="Object49"><img style="height:2.4341cm;width:2.254cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m38a780d1.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"> be the solution of the matrix equation </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.6492in; padding:0; " class="fr7" id="Object50"><img style="height:0.4671cm;width:1.649cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m2571d0c0.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-2.254cm;"> with </div> <!--Next 'div' is a draw:frame.--><div style="height:0.9665in;width:2.6626in; padding:0; " class="fr7" id="Object47"><img style="height:2.4549cm;width:6.763cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_33ce35ec.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-3.903cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.9543in;width:0.9118in; padding:0; " class="fr7" id="Object48"><img style="height:2.4239cm;width:2.316cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m3b906748.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-10.666cm;">.</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21"> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.8217in; padding:0; " class="fr7" id="Object51"><img style="height:0.54cm;width:4.6271cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m567a86e2.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">are the control points of the desired B-spline of degree <span class="T3">p</span> passing through the data points </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3807in; padding:0; " class="fr7" id="Object52"><img style="height:0.54cm;width:3.507cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m1b16dc76.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-4.6271cm;">.</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21">For <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.5654in; padding:0; " class="fr7" id="Object59"><img style="height:0.4671cm;width:1.4361cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m43db3008.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"> let </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.5402in; padding:0; " class="fr7" id="Object57"><img style="height:0.54cm;width:1.3721cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_2557ce57.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.4361cm;">be recursively defined by</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P20"> <!--Next 'div' is a draw:frame.--><div style="height:0.6854in;width:5.3035in; padding:0; " class="fr7" id="Object58"><img style="height:1.7409cm;width:13.4709cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_63df795b.gif"/></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21">If <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.5654in; padding:0; " class="fr7" id="Object60"><img style="height:0.4671cm;width:1.4361cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m43db3008.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2091in;width:0.7744in; padding:0; " class="fr7" id="Object61"><img style="height:0.5311cm;width:1.967cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m632f039a.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.4361cm;">, then </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.5717in; padding:0; " class="fr7" id="Object62"><img style="height:0.54cm;width:1.4521cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m880a161.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-3.4031000000000002cm;">is the point on this B-spline corresponding to the parameter <span class="T3">u</span>. If </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.5654in; padding:0; " class="fr7" id="Object63"><img style="height:0.4671cm;width:1.4361cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m43db3008.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-4.8552cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2091in;width:0.4327in; padding:0; " class="fr7" id="Object64"><img style="height:0.5311cm;width:1.0991cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_6b861cd5.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-6.2913cm;">, then </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.828in; padding:0; " class="fr7" id="Object65"><img style="height:0.54cm;width:2.1031cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_7bcbe814.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-7.3904cm;">is the point on this B-spline corresponding to the parameter <span class="T3">u</span>.</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21">Note: <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.572in; padding:0; " class="fr7" id="Object66"><img style="height:0.54cm;width:1.4529cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m63dc7d57.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"> and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.828in; padding:0; " class="fr7" id="Object67"><img style="height:0.54cm;width:2.1031cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_7bcbe814.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.4529cm;"> are best calculated using de Boor's algorithm for a B-spline of degree <span class="T3">p</span> with control points </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.8217in; padding:0; " class="fr7" id="Object68"><img style="height:0.54cm;width:4.6271cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m567a86e2.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-3.556cm;"> and knots </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2083in;width:0.678in; padding:0; " class="fr7" id="Object69"><img style="height:0.5291cm;width:1.7221cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_68762b5e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-8.1831cm;">.</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P21">The approximation of this B-spline is then plotted by using <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.572in; padding:0; " class="fr7" id="Object54"><img style="height:0.54cm;width:1.4529cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m63dc7d57.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.828in; padding:0; " class="fr7" id="Object55"><img style="height:0.54cm;width:2.1031cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_7bcbe814.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.4529cm;"> to calculate the coordinates of the points on the spline corresponding to the parameters:</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P22"> <!--Next 'div' is a draw:frame.--><div style="height:1.4984in;width:5.0744in; padding:0; " class="fr7" id="Object53"><img style="height:3.8059cm;width:12.889cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m613015a8.gif"/></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></li></ul><p class="P23" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>and connecting these points with straight line segments.<span class="odfLiEnd"/> </p></li><li><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cubic-spline</span> – Cubic Splines. If the <span class="Attribute">chart:spline-resolution</span> attribute has value 1 this is identical to the <span class="Attribute">chart:interpolation</span> attribute value <span class="Attribute_20_Value">none</span>. If the <span class="Attribute">chart:spline-</span><span class="Attribute">resolution</span> attribute has value <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.3654in; padding:0; " class="fr7" id="Object26"><img style="height:0.4671cm;width:0.9281cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m26b0c4d7.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">then given a sequence of data points,</div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3807in; padding:0; " class="fr7" id="Object1"><img style="height:0.54cm;width:3.507cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m13d35d1d.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-0.9281cm;">a cubic spline interpolation is constructed as described here: </div>then given a sequence of data points,<!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.3807in; padding:0; " class="fr7" id="Object1"><img style="height:0.54cm;width:3.507cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m13d35d1d.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">a cubic spline interpolation is constructed as described here: </div>a cubic spline interpolation is constructed as described here: <span class="odfLiEnd"/> </div><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>Find the unique cubic polynomials <!--Next 'div' is a draw:frame.--><div style="height:0.2091in;width:0.8508in; padding:0; " class="fr7" id="Object4"><img style="height:0.5311cm;width:2.161cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m20efeabe.gif"/></div><!--Next 'div' is a draw:frame.--><div style="height:0.2091in;width:0.8957in; padding:0; " class="fr7" id="Object2"><img style="height:0.5311cm;width:2.2751cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5ca9aedc.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-2.161cm;"> and such that:</div><!--Next 'div' is a draw:frame.--><div style="height:0.2091in;width:0.8957in; padding:0; " class="fr7" id="Object2"><img style="height:0.5311cm;width:2.2751cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m5ca9aedc.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"> and such that:</div> and such that:<span class="odfLiEnd"/> </div><ul><li><!--Next 'div' was a 'text:p'.--><div class="P17">for all <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.7193in; padding:0; " class="fr7" id="Object5"><img style="height:0.4671cm;width:1.827cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_366288e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.6307in; padding:0; " class="fr7" id="Object6"><img style="height:0.54cm;width:1.602cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_60208579.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.827cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.9898in; padding:0; " class="fr7" id="Object7"><img style="height:0.54cm;width:2.5141cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m851aafe.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-3.4290000000000003cm;">,</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P17">for all <!--Next 'div' is a draw:frame.--><div style="height:0.2in;width:1.0654in; padding:0; " class="fr7" id="Object8"><img style="height:0.508cm;width:2.7061cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_6cd60e20.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.0543in; padding:0; " class="fr7" id="Object9"><img style="height:0.54cm;width:2.6779cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m23f660f6.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-2.7061cm;">with </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.2126in; padding:0; " class="fr7" id="Object10"><img style="height:0.4671cm;width:0.54cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m530e31fd.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-5.384cm;">denoting the first derivative of <span class="T3">f,</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><div class="P17"><span class="T4">for all </span><!--Next 'div' is a draw:frame.--><div style="height:0.2in;width:1.0654in; padding:0; " class="fr7" id="Object12"><img style="height:0.508cm;width:2.7061cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_6cd60e20.gif"/></div><span class="T4">, </span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.1807in; padding:0; " class="fr7" id="Object13"><img style="height:0.54cm;width:2.999cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m2e81bae4.gif"/></div><span class="T4">with </span><!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.2752in; padding:0; " class="fr7" id="Object14"><img style="height:0.4671cm;width:0.699cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m4c347194.gif"/></div><span class="T4">denoting the second derivative of </span><span class="T3">f,</span></div><!--Next 'div' was a 'text:p'.--><div class="P17">for all <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.7193in; padding:0; " class="fr7" id="Object17"><img style="height:0.4671cm;width:1.827cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_366288e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.6591in; padding:0; " class="fr7" id="Object18"><img style="height:0.54cm;width:1.6741cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m4f93f491.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-1.827cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.0181in; padding:0; " class="fr7" id="Object19"><img style="height:0.54cm;width:2.586cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_358f06cb.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-3.5011cm;">,</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><!--Next 'div' was a 'text:p'.--><div class="P17">for all <!--Next 'div' is a draw:frame.--><div style="height:0.2in;width:1.0654in; padding:0; " class="fr7" id="Object20"><img style="height:0.508cm;width:2.7061cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_6cd60e20.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">, </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.0839in; padding:0; " class="fr7" id="Object21"><img style="height:0.54cm;width:2.7531cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_734cdfb.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-2.7061cm;">with </div> <!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.2272in; padding:0; " class="fr7" id="Object22"><img style="height:0.4671cm;width:0.5771cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m4d2a58d2.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-5.4592cm;">denoting the first derivative of <span class="T3">g,</span></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><div class="P17"><span class="T4">for all </span><!--Next 'div' is a draw:frame.--><div style="height:0.2in;width:1.0654in; padding:0; " class="fr7" id="Object23"><img style="height:0.508cm;width:2.7061cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_6cd60e20.gif"/></div><span class="T4">, </span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.2102in; padding:0; " class="fr7" id="Object24"><img style="height:0.54cm;width:3.0739cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m556cd269.gif"/></div><span class="T4">with </span><!--Next 'div' is a draw:frame.--><div style="height:0.1839in;width:0.2902in; padding:0; " class="fr7" id="Object25"><img style="height:0.4671cm;width:0.7371cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m6b098ba9.gif"/></div><span class="T4">denoting the second derivative of </span><span class="T3">g,</span></div><p class="P23">and</p><ul><li><div class="P17" style="margin-left:1.2809cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.7807in; padding:0; " class="fr7" id="Object15"><img style="height:0.54cm;width:1.983cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m78f3f923.gif"/></div><span class="T4">, </span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.7819in; padding:0; " class="fr7" id="Object16"><img style="height:0.54cm;width:1.986cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_38d6964.gif"/></div><span class="T4">,</span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.7953in; padding:0; " class="fr7" id="Object3"><img style="height:0.54cm;width:2.0201cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m4a419a9e.gif"/></div><span class="T4">and </span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:0.7972in; padding:0; " class="fr7" id="Object11"><img style="height:0.54cm;width:2.0249cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m532ca36e.gif"/></div><span class="T4">if </span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.2189in; padding:0; " class="fr7" id="Object30"><img style="height:0.54cm;width:3.096cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m63e02a82.gif"/></div><span class="T4">(ie. the curve will not be closed) or</span><span class="odfLiEnd"/> </div></li><li><div class="P17" style="margin-left:1.2809cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><!--Next 'div' is a draw:frame.--><div style="height:0.3929in;width:2.5047in; padding:0; " class="fr7" id="Object32"><img style="height:0.998cm;width:6.3619cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_2cc36efd.gif"/></div><span class="T4">and </span><!--Next 'div' is a draw:frame.--><div style="height:0.3929in;width:2.5634in; padding:0; " class="fr7" id="Object33"><img style="height:0.998cm;width:6.511cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m72e50899.gif"/></div><span class="T4">if </span><!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.2189in; padding:0; " class="fr7" id="Object31"><img style="height:0.54cm;width:3.096cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_m3ab6b7ff.gif"/></div><span class="T4">(</span>I<span class="T4">,e. the curve will be closed).</span><span class="odfLiEnd"/> </div></li></ul></li></ul><div class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm"><!-- --></span>With these cubic polynomials we define the splines (piecewise polynomial functions)<!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.8429in; padding:0; " class="fr7" id="Object27"><img style="height:0.54cm;width:4.681cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_1bd94be.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">and </div> <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.8626in; padding:0; " class="fr7" id="Object28"><img style="height:0.54cm;width:4.731cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_7c6079d8.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-4.681cm;">. (In view of the first and fourth conditions above this yields well defined functions <span class="T3">F</span> and <span class="T3">G</span>.) The interpolation line is then obtained by connecting consecutive points in </div> <!--Next 'div' is a draw:frame.--><div style="height:0.4307in;width:5.6654in; padding:0; " class="fr7" id="Object29"><img style="height:1.094cm;width:14.3901cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_36f4054e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-9.411999999999999cm;"> using straight line segments.</div>and <!--Next 'div' is a draw:frame.--><div style="height:0.2126in;width:1.8626in; padding:0; " class="fr7" id="Object28"><img style="height:0.54cm;width:4.731cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_7c6079d8.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">. (In view of the first and fourth conditions above this yields well defined functions <span class="T3">F</span> and <span class="T3">G</span>.) The interpolation line is then obtained by connecting consecutive points in </div> <!--Next 'div' is a draw:frame.--><div style="height:0.4307in;width:5.6654in; padding:0; " class="fr7" id="Object29"><img style="height:1.094cm;width:14.3901cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_36f4054e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:-4.731cm;"> using straight line segments.</div>. (In view of the first and fourth conditions above this yields well defined functions <span class="T3">F</span> and <span class="T3">G</span>.) The interpolation line is then obtained by connecting consecutive points in <!--Next 'div' is a draw:frame.--><div style="height:0.4307in;width:5.6654in; padding:0; " class="fr7" id="Object29"><img style="height:1.094cm;width:14.3901cm;" alt="formula" src="./Pictures/OpenDocument-v1.2-cos01-part1_html_36f4054e.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;"> using straight line segments.</div> using straight line segments.<span class="odfLiEnd"/> </div></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span> - Straight lines. Consecutive data points are connected by straight line segments. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> or <span class="Element">&lt;chart:series&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:interpolation</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:interpolation</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">cubic-spline</span> or <span class="Attribute_20_Value">b-spline</span>.</p><h2 class="Heading_20_2"><a id="a20_27chart_interval-major"><span style="margin-right:0.127cm;">20.27</span></a><a id="__RefHeading__1419482_253892949"/><a id="property-chart_interval-major"/>chart:interval-major</h2><p class="Text_20_body">The <span class="Attribute">chart:interval-major</span> attribute specifies major intervals on an axis <a href="#element-chart_axis">11.8</a>.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:interval-major</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:interval-major</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_28chart_interval-minor-divisor"><span style="margin-right:0.127cm;">20.28</span></a><a id="__RefHeading__1419484_253892949"/><a id="property-chart_interval-minor-divisor"/>chart:interval-minor-divisor</h2><p class="Text_20_body">The <span class="Attribute">chart:interval-minor-divisor</span> attribute specifies a divisor for the <span class="Attribute">chart:interval-major</span> value, the division of which determines the minor interval.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:interval-minor-divisor</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:interval-minor-divisor</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_29chart_japanese-candle-stick"><span style="margin-right:0.127cm;">20.29</span></a><a id="__RefHeading__1419486_253892949"/><a id="property-chart_japanese-candle-stick"/>chart:japanese-candle-stick</h2><p class="Text_20_body">The <span class="Attribute">chart:japanese-candle-stick</span> attribute specifies the display of opening and closing values in a stock chart. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:japanese-candle-stick</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span> – opening and closing values are displayed as left and right tick-lines<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span> – opening and closing values are displayed as colored bars, where the color of the bar depends on whether the opening value is larger than the closing value<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:japanese-candle-stick</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:japanese-candle-stick</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_30chart_label-arrangement"><span style="margin-right:0.127cm;">20.30</span></a><a id="__RefHeading__1419488_253892949"/><a id="property-chart_label-arrangement"/>chart:label-arrangement</h2><p class="Text_20_body">The <span class="Attribute">chart:label-arrangement</span> attribute specifies the arrangement of labels on an axis.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:label-arrangement</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">side-by-side</span>: Labels are not staggered, they are aligned on one line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stagger-even</span>: Even labels are aligned on the same line as used for side by side arrangement. Counting starts with one, so the first label is odd. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stagger-odd</span>: All odd labels are aligned on the line used for side by side arrangement. Counting starts with one, so the first label is odd.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:label-arrangement</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:label-arrangement</span> attribute are <span class="Attribute_20_Value">side-by-side</span>, <span class="Attribute_20_Value">stagger-even</span> or <span class="Attribute_20_Value">stagger-odd</span>.</p><h2 class="Heading_20_2"><a id="a20_31chart_label-position"><span style="margin-right:0.127cm;">20.31</span></a><a id="__RefHeading__1419490_253892949"/><a id="property-chart_label-position"/>chart:label-position</h2><p class="Text_20_body">The <span class="Attribute">chart:label-position</span> attribute specifies where data labels are placed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:label-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">avoid-overlap</span>: an algorithm should be used that tries to place the labels without overlapping each other.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: the data label is placed below the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-left</span>: the data label is placed to the bottom left of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-right</span>: the data label is placed to the bottom right of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: the data label is centered on the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inside</span>: the data label is placed inside the data point ( for pie charts the label is placed inside the piece on the bisecting line aligned to the outer radius, for bar charts the label is inside the bar aligned to that end that is given by the data points value, for polar charts the label is placed on that side of the data point that points to the polar charts center ).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: the data label is placed left of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">near-origin</span>: the data label is placed inside the data point on that side that is near to the origin - where the origin is the beginning of the bar in a bar chart or the base line in an area chart ( for bar charts the label is placed inside the bar like with value inside, but aligned to the opposite end of the bar ).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outside</span>: the data label is placed outside the data point ( for pie charts the label is placed outside the circle aligned to the outer radius, for bar charts the label is outside the bar aligned to that end that is given by the data points value, for polar charts the label is placed on that side of the data point that points away from the polar charts center ).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: the data label is placed right of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: the data label is placed on top of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top-left</span>: the data label is placed to the top left of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top-right</span>: the data label is placed to the top right of the data point.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to <span class="Element">&lt;chart:data-label&gt;</span>, <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:label-position</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:label-position</span> attribute are <span class="Attribute_20_Value">avoid-overlap</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">top-right</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">bottom-right</span>, <span class="Attribute_20_Value">bottom</span>, <span class="Attribute_20_Value">bottom-left</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">top-left</span>, <span class="Attribute_20_Value">inside</span>, <span class="Attribute_20_Value">outside</span> or <span class="Attribute_20_Value">near-origin</span>.</p><h2 class="Heading_20_2"><a id="a20_32chart_label-position-negative"><span style="margin-right:0.127cm;">20.32</span></a><a id="__RefHeading__1419492_253892949"/><a id="property-chart_label-position-negative"/>chart:label-position-negative</h2><p class="Text_20_body">If the <span class="Attribute">chart:label-position-negative</span> attribute is set in addition to a <span class="Attribute">chart:label-position</span> attribute (<a href="#property-chart_label-position">20.31</a>), it is used for all labels that belong to data points with negative values. Otherwise the position set in a <span class="Attribute">chart:label-position</span> attribute is used for positive and negative values. If a <span class="Attribute">chart:label-position-negative</span> attribute is used without a <span class="Attribute">chart:label-position</span> attribute it is ignored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:label-position-negative</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">avoid-overlap</span>: an algorithm should be used that tries to place the labels without overlapping each other.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: the data label is placed below the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-left</span>: the data label is placed to the bottom left of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom-right</span>: the data label is placed to the bottom right of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: the data label is centered on the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inside</span>: the data label is placed inside the data point ( for pie charts the label is placed inside the piece on the bisecting line aligned to the outer radius, for bar charts the label is inside the bar aligned to that end that is given by the data points value, for polar charts the label is placed on that side of the data point that points to the polar charts center ).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: the data label is placed left of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">near-origin</span>: the data label is placed inside the data point on that side that is near to the origin - where the origin is the beginning of the bar in a bar chart or the base line in an area chart ( for bar charts the label is placed inside the bar like with value inside, but aligned to the opposite end of the bar ).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outside</span>: the data label is placed outside the data point ( for pie charts the label is placed outside the circle aligned to the outer radius, for bar charts the label is outside the bar aligned to that end that is given by the data points value, for polar charts the label is placed on that side of the data point that points away from the polar charts center ).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: the data label is placed right of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: the data label is placed on top of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top-left</span>: the data label is placed to the top left of the data point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top-right</span>: the data label is placed to the top right of the data point.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:label-position-negative</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:label-position-negative</span> attribute are <span class="Attribute_20_Value">avoid-overlap</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">top-right</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">bottom-right</span>, <span class="Attribute_20_Value">bottom</span>, <span class="Attribute_20_Value">bottom-left</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">top-left</span>, <span class="Attribute_20_Value">inside</span>, <span class="Attribute_20_Value">outside</span> or <span class="Attribute_20_Value">near-origin</span>.</p><h2 class="Heading_20_2"><a id="a20_33chart_lines__deprecated_"><span style="margin-right:0.127cm;">20.33</span></a><a id="__RefHeading__1419494_253892949"/><a id="property-chart_lines"/>chart:lines (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">chart:lines</span> attribute specifies whether connecting lines between data points are shown. </p><p class="Note"><span class="Note_20_Label">Note: </span>The display of lines can be specified by the <span class="Attribute">draw:stroke</span> attribute. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:lines</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: connecting lines between data points are not shown.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: connecting lines between data points are shown.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:lines</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:lines</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_34chart_link-data-style-to-source"><span style="margin-right:0.127cm;">20.34</span></a><a id="__RefHeading__1419496_253892949"/><a id="property-chart_link-data-style-to-source"/>chart:link-data-style-to-source</h2><p class="Text_20_body">The <span class="Attribute">chart:link-data-style-to-source</span> attribute can only be used in chart documents that are part of a document that provides the data for the chart.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:link-data-style-to-source</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: number format used for rendering axis labels is defined by the <span class="Attribute">style:data-style-name</span> attribute. <a href="#attribute-style_data-style-name">19.469</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: number format used for rendering the axis labels is inherited from the document providing the data. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:link-data-style-to-source</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:link-data-style-to-source</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_35chart_logarithmic"><span style="margin-right:0.127cm;">20.35</span></a><a id="__RefHeading__1419498_253892949"/><a id="property-chart_logarithmic"/>chart:logarithmic</h2><p class="Text_20_body">The <span class="Attribute">chart:logarithmic</span> attribute specifies whether logarithmic scaling will be used on an axis. By default, proportional scaling is used.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:logarithmic</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: proportional scaling is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: logarithmic scaling is used.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:logarithmic</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:logarithmic</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_36chart_maximum"><span style="margin-right:0.127cm;">20.36</span></a><a id="__RefHeading__1419500_253892949"/><a id="property-chart_maximum"/>chart:maximum</h2><p class="Text_20_body">The <span class="Attribute">chart:maximum</span> attribute specifies the maximum value of an axis.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:maximum</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:maximum</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_37chart_mean-value"><span style="margin-right:0.127cm;">20.37</span></a><a id="__RefHeading__1419502_253892949"/><a id="property-chart_mean-value"/>chart:mean-value</h2><p class="Text_20_body">The <span class="Attribute">chart:mean-value</span> attribute specifies whether to display a line that represents the statistical mean value of all data points of a series.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element or a <span class="Element">&lt;chart:series&gt;</span> element. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:mean-value</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: line representing the statistical mean of all the data points in a series is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: line representing the statistical mean of all the data points in a series is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:mean-value</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:mean-value</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_38chart_minimum"><span style="margin-right:0.127cm;">20.38</span></a><a id="__RefHeading__1419504_253892949"/><a id="property-chart_minimum"/>chart:minimum</h2><p class="Text_20_body">The <span class="Attribute">chart:minimum</span> attribute specifies the minimum value of an axis. </p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:minimum</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:minimum</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_39chart_origin"><span style="margin-right:0.127cm;">20.39</span></a><a id="__RefHeading__1419506_253892949"/><a id="property-chart_origin"/>chart:origin</h2><p class="Text_20_body">The <span class="Attribute">chart:origin</span> attribute defines the origin of the graphical representation of a data series attached to an axis. </p><p class="Note"><span class="Note_20_Label">Note:</span> For example, the beginning of the bars in a bar chart or the base line in an area chart can be set by the <span class="Attribute">chart:origin</span> attribute in the style of the y-axis to which the data series is attached. <a id="line-81"/><a id="line-80"/></p><p class="Text_20_body">If the first x-axis has a <span class="Attribute">chart:axis-position</span> attribute, that position is taken to indicate the origin of the data points attached to the first y-axis. It overrides the <span class="Attribute">chart:origin</span> attribute of the first y-axis.<a id="line-833"/><a id="line-823"/></p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:origin</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:origin</span> attribute has the data type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_40chart_overlap"><span style="margin-right:0.127cm;">20.40</span></a><a id="__RefHeading__1419508_253892949"/><a id="property-chart_overlap"/>chart:overlap</h2><p class="Text_20_body">The <span class="Attribute">chart:overlap</span> attribute specifies how much bars within the same category in a bar chart overlap. The attribute value is an integer that is interpreted as a percentage relative to the width of a single bar. Negative values specify gaps between bars. </p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:axis&gt;</span> element when a <span class="Attribute">chart:dimension</span> attribute set to y.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> This allows bars to be attached to different axis arranged differently as long as they are grouped per axis (<span class="Attribute">chart:group-bars-per-axis</span> attribute is <span class="Attribute_20_Value">true</span>).</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:overlap</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:overlap</span> attribute has the data type <span class="Datatype">integer</span> <a href="#datatype-integer">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_41chart_pie-offset"><span style="margin-right:0.127cm;">20.41</span></a><a id="__RefHeading__1419510_253892949"/><a id="property-chart_pie-offset"/>chart:pie-offset</h2><p class="Text_20_body">The <span class="Attribute">chart:pie-offset</span> attribute specifies the distance of a segment from the center of the circle in case of circle charts. The offset is given as an integer which is interpreted as a percentage of the radius of the circle. </p><p class="Text_20_body">In case of ring charts the <span class="Attribute">chart:pie-offset</span> attribute specifies an additional distance of a segment from the center of the circle. The distance is given as percentage of the thickness of the ring. </p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:data-point&gt;</span> or <span class="Element">&lt;chart:series&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:pie-offset</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:pie-offset</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_42chart_percentage"><span style="margin-right:0.127cm;">20.42</span></a><a id="__RefHeading__1419512_253892949"/><a id="property-chart_percentage"/>chart:percentage</h2><p class="Text_20_body">The <span class="Attribute">chart:percentage</span> attribute specifies a percentage accumulation of values per category.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:percentage</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the attribute has no effect <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: values should be accumulated by category. The sum of the values per category is treated as 100 percent and the y-axis displays according percentages. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">y-axis</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:percentage</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:percentage</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_43chart_regression-type"><span style="margin-right:0.127cm;">20.43</span></a><a id="__RefHeading__1419514_253892949"/><a id="property-chart_regression-type"/>chart:regression-type</h2><p class="Text_20_body">The <span class="Attribute">chart:regression-type</span> attribute specifies the regression function for a series. A regression function can be used to approximate the data points in a series. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:regression-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">exponential</span> – Exponential regression – approximate the values of the series using the model: <span class="Formula">y = A·e</span><span class="Formula_20_Super">B·x</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">linear</span> – Linear regression – approximate the values of the series using the model: <span class="Formula">y = A·x + B</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">logarithmic</span> – Logarithmic regression – approximate the values of the series using the model: <span class="Formula">y = A·ln(x) + B</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span> – no regression curve will be displayed (default value)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">power</span> – Regression with a power function – approximate the values of the series using the model: <span class="Formula">y = A·x</span><span class="Formula_20_Super">B</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to <span class="Element">&lt;chart:regression-curve&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:regression-type</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:regression-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">linear</span>, <span class="Attribute_20_Value">logarithmic</span>, <span class="Attribute_20_Value">exponential</span> or <span class="Attribute_20_Value">power</span>.</p><h2 class="Heading_20_2"><a id="a20_44chart_reverse-direction"><span style="margin-right:0.127cm;">20.44</span></a><a id="__RefHeading__1419516_253892949"/><a id="property-chart_reverse-direction"/>chart:reverse-direction</h2><p class="Text_20_body">The <span class="Attribute">chart:reverse-direction</span> attribute specifies whether the direction of an axis follows the Cartesian coordinate system or the reverse. False is the default.</p><p class="Text_20_body">In a Cartesian coordinate system the x-axis points from left to right and the y-axis points from bottom to top. 3D Cartesian coordinate systems are left handed and polar coordinate systems are counter clockwise. If x and y axes are swapped as in horizontal bar charts (when attribute <span class="Attribute">chart:vertical</span> value is <span class="Attribute_20_Value">true</span>), the unswapped coordinate system follows the Cartesian coordinate system and is left handed.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:reverse-direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: direction of axis follows the Cartesian coordinate system.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: direction of axis follows the reverse of the Cartesian coordinate system.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:reverse-direction</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:reverse-direction</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_45chart_right-angled-axes"><span style="margin-right:0.127cm;">20.45</span></a><a id="__RefHeading__1419518_253892949"/><a id="property-chart_right-angled-axes"/>chart:right-angled-axes</h2><p class="Text_20_body">The <span class="Attribute">chart:right-angled-axes</span> attribute specifies a modification of the projection of a 3D chart. In a Cartesian coordinate system the projections of x and y-axis are horizontal and vertical.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element. The chart:right-angled-axes attribute is ignored unless a <span class="Attribute">chart:three-dimensional</span> attribute is present and has the value <span class="Attribute_20_Value">true</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:right-angled-axes</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the attribute has no effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a 3D chart is sheared instead of rotated. For Cartesian coordinate systems the x and y-axis do form a right angle in the 2D-projection.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:right-angled-axes</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:right-angled-axes</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_46chart_scale-text"><span style="margin-right:0.127cm;">20.46</span></a><a id="__RefHeading__1419520_253892949"/><a id="property-chart_scale-text"/>chart:scale-text</h2><p class="Text_20_body">The <span class="Attribute">chart:scale-text</span> attribute specifies that the text contained in an object should be scaled whenever the size of the chart changes. This attribute can appear at all chart objects that contain text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:scale-text</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text contained in an object should not be scaled when the size of its containing chart changes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text contained in an object should be scaled when the size of its containing chart changes.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:scale-text</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:scale-text</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_47chart_series-source__deprecated_"><span style="margin-right:0.127cm;">20.47</span></a><a id="__RefHeading__1419522_253892949"/><a id="property-chart_series-source"/>chart:series-source (deprecated)</h2><p class="Text_20_body">The <span class="Attribute">chart:series-source</span> attribute specifies whether a tabular data for a chart contains all the data series in columns or rows .</p><p class="Text_20_body">The tabular data can be given by the <span class="Attribute">table:cell-range-address</span> attribute at the <span class="Element">&lt;chart:plot-area&gt;</span> element or by the <span class="Element">&lt;table:table&gt;</span> element inside the <span class="Element">&lt;chart:chart&gt;</span> element.</p><p class="Text_20_body">When data is assigned more specifically to a chart element, with a values-cell-range-address attribute on a <span class="Element">&lt;chart:series&gt;</span> element, the more specific data assignment has priority.</p><p class="Text_20_body">The <span class="Attribute">chart:series-source</span> attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:series-source</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">columns</span>: tabular data for a chart contains all the data series in a columns.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">rows</span>: tabular data for a chart contains all the data series in a rows.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:series-source</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:series-source</span> attribute are <span class="Attribute_20_Value">columns</span> or <span class="Attribute_20_Value">rows</span>.</p><h2 class="Heading_20_2"><a id="a20_48chart_sort-by-x-values"><span style="margin-right:0.127cm;">20.48</span></a><a id="__RefHeading__1419524_253892949"/><a id="property-chart_sort-by-x-values"/>chart:sort-by-x-values</h2><p class="Text_20_body">The <span class="Attribute">chart:sort-by-x-values</span> attribute specifies whether the data points of a data series should be displayed in ascending order of the x values, or in the order they are contained in the underlying data. It is evaluated for styles that are assigned to the <span class="Element">&lt;chart:plot-area&gt;</span> element. The <span class="Attribute">chart:sort-by-x-values</span> attribute is used for chart types with data series that contain x-values (for example scatter charts, <a href="#attribute-chart_class">19.15</a>).</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:sort-by-x-values</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: data points of a data series should be displayed in the order they are contained in the underlying data.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: data points of a data series should be displayed in ascending order of the x values.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:sort-by-x-values</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:sort-by-x-values</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_49chart_solid-type"><span style="margin-right:0.127cm;">20.49</span></a><a id="__RefHeading__1419526_253892949"/><a id="property-chart_solid-type"/>chart:solid-type</h2><p class="Text_20_body">The <span class="Attribute">chart:solid-type</span> attribute specifies the rendering of bars in three-dimensional bar charts. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:solid-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cone</span> – bars have the shape of cones<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cuboid</span> – bars have the shape of cuboids<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">cylinder</span> – bars have the shape of cylinders<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">pyramid</span> – bars have the shape of pyramids<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:solid-type</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:solid-type</span> attribute are <span class="Attribute_20_Value">cuboid</span>, <span class="Attribute_20_Value">cylinder</span>, <span class="Attribute_20_Value">cone</span> or <span class="Attribute_20_Value">pyramid</span>.</p><h2 class="Heading_20_2"><a id="a20_50chart_spline-order"><span style="margin-right:0.127cm;">20.50</span></a><a id="__RefHeading__1419528_253892949"/><a id="property-chart_spline-order"/>chart:spline-order</h2><p class="Text_20_body">The <span class="Attribute">chart:spline-order</span> attribute specifies the degree of the polynomials used as part of the spline.</p><p class="Text_20_body">This attribute should be used together with <span class="Attribute">chart:interpolation</span> attribute when it has the value <span class="Attribute_20_Value">b-spline</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:spline-order</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:spline-order</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_51chart_spline-resolution"><span style="margin-right:0.127cm;">20.51</span></a><a id="__RefHeading__1419530_253892949"/><a id="property-chart_spline-resolution"/>chart:spline-resolution</h2><p class="Text_20_body">The <span class="Attribute">chart:spline-resolution</span> attribute specifies the number of straight line segments used between any two data points.</p><p class="Text_20_body">This attribute should be used together with <span class="Attribute">chart:interpolation</span> attribute when it has a value other than <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:spline-resolution</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:spline-resolution</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_52chart_stacked"><span style="margin-right:0.127cm;">20.52</span></a><a id="__RefHeading__1419532_253892949"/><a id="property-chart_stacked"/>chart:stacked</h2><p class="Text_20_body">The <span class="Attribute">chart:stacked</span> attribute specifies the accumulation of the series values per category. Each value is in addition to the other values in the same category. </p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:stacked</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: series values should not be accumulated by category.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: series values should be accumulated by category. Bars in bar charts are stacked on top of each other.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:stacked</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:stacked</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_53chart_symbol-height"><span style="margin-right:0.127cm;">20.53</span></a><a id="__RefHeading__1419534_253892949"/><a id="property-chart_symbol-height"/>chart:symbol-height</h2><p class="Text_20_body">The <span class="Attribute">chart:symbol-height</span> attribute specifies the height of a symbol to be used for a data point in a chart.</p><p class="Text_20_body">This attribute should be used together with <span class="Attribute">chart:symbol-type</span> attribute when the <span class="Attribute">chart:symbol-type</span> attribute has a value other than <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:symbol-height</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:symbol-height</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_54chart_symbol-name"><span style="margin-right:0.127cm;">20.54</span></a><a id="__RefHeading__1419536_253892949"/><a id="property-chart_symbol-name"/>chart:symbol-name</h2><p class="Text_20_body">The <span class="Attribute">chart:symbol-name</span> attribute specifies a symbol to be used for a data point in a chart.</p><p class="Text_20_body">The glyphs associated with the values of the <span class="Attribute">chart:symbol-name</span> attribute are implementation-defined.</p><p class="Text_20_body">This attribute should be used only together with <span class="Attribute">chart:symbol-type</span> attribute and only when the <span class="Attribute">chart:symbol-type</span> attribute has the value <span class="Attribute_20_Value">named-symbol</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:symbol-name</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:symbol-name</span> attribute are <span class="Attribute_20_Value">square</span>, <span class="Attribute_20_Value">diamond</span>, <span class="Attribute_20_Value">arrow-down</span>, <span class="Attribute_20_Value">arrow-up</span>, <span class="Attribute_20_Value">arrow-right</span>, <span class="Attribute_20_Value">arrow-left</span>, <span class="Attribute_20_Value">bow-tie</span>, <span class="Attribute_20_Value">hourglass</span>, <span class="Attribute_20_Value">circle</span>, <span class="Attribute_20_Value">star</span>, <span class="Attribute_20_Value">x</span>, <span class="Attribute_20_Value">plus</span>, <span class="Attribute_20_Value">asterisk</span>, <span class="Attribute_20_Value">horizontal-bar</span> or <span class="Attribute_20_Value">vertical-bar</span>.</p><h2 class="Heading_20_2"><a id="a20_55chart_symbol-type"><span style="margin-right:0.127cm;">20.55</span></a><a id="__RefHeading__1419538_253892949"/><a id="property-chart_symbol-type"/>chart:symbol-type</h2><p class="Text_20_body">The <span class="Attribute">chart:symbol-type</span> attribute specifies if a symbol is used for a data point in a chart, and if so, which type of symbol is to be used.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:symbol-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: the consumer chooses from the list of available named symbols (see <span class="Attribute">chart:symbol-name</span> attribute <a href="#property-chart_symbol-name">20.54</a>), choose a different symbol per series in round-robin fashion,in this order: <span class="Attribute_20_Value">square</span>, <span class="Attribute_20_Value">diamond</span>, <span class="Attribute_20_Value">arrow-down</span>, <span class="Attribute_20_Value">arrow-up</span>, <span class="Attribute_20_Value">arrow-right</span>, <span class="Attribute_20_Value">arrow-left</span>, <span class="Attribute_20_Value">bow-tie</span>, <span class="Attribute_20_Value">hourglass</span>, <span class="Attribute_20_Value">circle</span>, <span class="Attribute_20_Value">star</span>, <span class="Attribute_20_Value">x</span>, <span class="Attribute_20_Value">plus</span>, <span class="Attribute_20_Value">asterisk</span>, <span class="Attribute_20_Value">horizontal-bar</span>, <span class="Attribute_20_Value">vertical-bar</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">named-symbol</span>: a symbol specified within <span class="Attribute">chart:symbol-name</span> attribute should be used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no symbol should be used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">image</span>: an image defined by a <span class="Element">&lt;chart:symbol-image&gt;</span> element is used as symbol. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> elements. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:symbol-type</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:symbol-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">automatic</span>, <span class="Attribute_20_Value">named-symbol</span> or <span class="Attribute_20_Value">image</span>.</p><h2 class="Heading_20_2"><a id="a20_56chart_symbol-width"><span style="margin-right:0.127cm;">20.56</span></a><a id="__RefHeading__1419540_253892949"/><a id="property-chart_symbol-width"/>chart:symbol-width</h2><p class="Text_20_body">The <span class="Attribute">chart:symbol-width</span> attribute specifies the width of a symbol to be used for a data point in a chart.</p><p class="Text_20_body">This attribute should be used together with <span class="Attribute">chart:symbol-type</span> attribute when the <span class="Attribute">chart:symbol-type</span> attribute has a value other than <span class="Attribute_20_Value">none</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:symbol-width</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:symbol-width</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_57chart_text-overlap"><span style="margin-right:0.127cm;">20.57</span></a><a id="__RefHeading__1419542_253892949"/><a id="property-chart_text-overlap"/>chart:text-overlap</h2><p class="Text_20_body">The <span class="Attribute">chart:text-overlap</span> attribute specifies whether axis labels may overlap each other.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:text-overlap</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: axis labels shall not overlap each other.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: axis labels may overlap each other.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:text-overlap</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:text-overlap</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_58chart_three-dimensional"><span style="margin-right:0.127cm;">20.58</span></a><a id="__RefHeading__1419544_253892949"/><a id="property-chart_three-dimensional"/>chart:three-dimensional</h2><p class="Text_20_body">The <span class="Attribute">chart:three-dimensional</span> attribute specifies whether a chart is displayed as a 3D scene.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:three-dimensional</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: chart should not be displayed as a 3D scene.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: chart should be displayed as a 3D scene.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:three-dimensional</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:three-dimensional</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_59chart_tick-marks-major-inner"><span style="margin-right:0.127cm;">20.59</span></a><a id="__RefHeading__1419546_253892949"/><a id="property-chart_tick-marks-major-inner"/>chart:tick-marks-major-inner</h2><p class="Text_20_body">The <span class="Attribute">chart:tick-marks-major-inner</span> attribute specifies the existence of major inner tick marks on an axis. They are drawn with respect to the major interval that may be specified by the <span class="Attribute">chart:interval-major</span> attribute, and are drawn towards the inside of the plot area. That is, they are drawn to the right for an axis displayed on the left hand side of the plot area, and to the left for an axis displayed on the right hand side of the plot area.</p><p class="Text_20_body">If a <span class="Attribute">chart:tick-marks-major-inner</span> attribute and a <span class="Attribute">chart:tick-marks-major-outer</span> attribute are both set to <span class="Attribute_20_Value">true</span>, one tick mark is drawn that crosses the axis.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:tick-marks-major-inner</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: major inner tick marks should not appear on an axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: major inner tick marks should appear on an axis.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:tick-marks-major-inner</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:tick-marks-major-inner</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_60chart_tick-marks-major-outer"><span style="margin-right:0.127cm;">20.60</span></a><a id="__RefHeading__1419548_253892949"/><a id="property-chart_tick-marks-major-outer"/>chart:tick-marks-major-outer</h2><p class="Text_20_body">The <span class="Attribute">chart:tick-marks-major-outer</span> attribute specifies the existence of major outer tick marks on an axis. They are drawn with respect to the major interval that may be specified by the <span class="Attribute">chart:interval-major</span> attribute, and are drawn towards the outside of the plot area. That is, they are drawn to the left for an axis displayed on the left hand side of the plot area, and to the right for an axis displayed on the right hand side of the plot area.</p><p class="Text_20_body">If a <span class="Attribute">chart:tick-marks-major-inner</span> attribute and a <span class="Attribute">chart:tick-marks-major-outer</span> attribute are both set to <span class="Attribute_20_Value">true</span>, one tick mark is drawn that crosses the axis.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:tick-marks-major-outer</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: major outer tick marks should not appear on an axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: major outer tick marks should appear on an axis.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:tick-marks-major-outer</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:tick-marks-major-outer</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_61chart_tick-marks-minor-inner"><span style="margin-right:0.127cm;">20.61</span></a><a id="__RefHeading__1419550_253892949"/><a id="property-chart_tick-marks-minor-inner"/>chart:tick-marks-minor-inner</h2><p class="Text_20_body">The <span class="Attribute">chart:tick-marks-minor-inner</span> attribute specifies the existence of minor inner tick marks on an axis. They are drawn with respect to the minor interval divisor that may be specified by the <span class="Attribute">chart:interval-minor-divisor</span> attribute, and are drawn towards the inside of the plot area. That is, they are drawn to the right for an axis displayed on the left hand side of the plot area, and to the left for an axis displayed on the right hand side of the plot area.</p><p class="Text_20_body">If a <span class="Attribute">chart:tick-marks-minor-inner</span> attribute and a <span class="Attribute">chart:tick-marks-minor-outer</span> attribute are both set to <span class="Attribute_20_Value">true</span>, one tick mark is drawn that crosses the axis.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:tick-marks-minor-inner</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: minor inner tick marks should not appear on an axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: minor inner tick marks should appear on an axis.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:tick-marks-minor-inner</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:tick-marks-minor-inner</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_62chart_tick-marks-minor-outer"><span style="margin-right:0.127cm;">20.62</span></a><a id="__RefHeading__1419552_253892949"/><a id="property-chart_tick-marks-minor-outer"/>chart:tick-marks-minor-outer</h2><p class="Text_20_body">The <span class="Attribute">chart:tick-marks-minor-outer</span> attribute specifies the existence of minor outer tick marks on an axis. They are drawn with respect to the minor interval divisor that may be specified by the <span class="Attribute">chart:interval-minor-divisor</span> attribute, and are drawn towards the outside of the plot area. That is, they are drawn to the left for an axis displayed on the left hand side of the plot area, and to the right for an axis displayed on the right hand side of the plot area.</p><p class="Text_20_body">If a <span class="Attribute">chart:tick-marks-minor-inner</span> attribute and a <span class="Attribute">chart:tick-marks-minor-outer</span> attribute are set to <span class="Attribute_20_Value">true</span>, one tick mark is drawn that crosses the axis.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:tick-marks-minor-outer</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: minor outer tick marks should not appear on an axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: minor outer tick marks should appear on an axis.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:tick-marks-minor-outer</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:tick-marks-minor-outer</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_63chart_tick-mark-position"><span style="margin-right:0.127cm;">20.63</span></a><a id="__RefHeading__1419554_253892949"/><a id="property-chart_tick-mark-position"/>chart:tick-mark-position</h2><p class="Text_20_body">The <span class="Attribute">chart:tick-mark-position</span> attribute specifies the position of the interval marks.<a id="line-66"/><a id="line-65"/></p><p class="Text_20_body"><a id="line-68"/><a id="line-67"/>The defined values for the <span class="Attribute">chart:tick-mark-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">at-labels</span>: interval marks are placed adjacent to axis labels.<a id="line-69"/><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">at-axis</span>: interval marks are placed at the axis line.<a id="line-70"/><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">at-labels-and-axis</span>: interval marks are placed at axis labels and at the axis line.<a id="line-72"/><a id="line-71"/><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This attribute makes a difference only if the labels are not placed at the axis line, that is, if the <span class="Attribute">chart:axis-label-position</span> attribute has the value <span class="Attribute_20_Value">outside-end</span> or <span class="Attribute_20_Value">outside-start</span>.<a id="line-74"/><a id="line-73"/> <a href="#property-chart_axis-label-position">20.5</a></p><p class="Text_20_body">If the <span class="Attribute">chart:tick-mark-position</span> attribute is missing but a <span class="Attribute">chart:axis-position</span> attribute is given, <span class="Attribute">chart:tick-mark-position</span> is assumed to be <span class="Attribute_20_Value">at-labels-and-axis</span>.<a id="line-76"/><a id="line-75"/></p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:tick-mark-position</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:tick-mark-position</span> attribute are <span class="Attribute_20_Value">at-labels</span>, <span class="Attribute_20_Value">at-axis</span> or <span class="Attribute_20_Value">at-labels-and-axis</span>.</p><h2 class="Heading_20_2"><a id="a20_64chart_treat-empty-cells"><span style="margin-right:0.127cm;">20.64</span></a><a id="__RefHeading__1419556_253892949"/><a id="property-chart_treat-empty-cells"/>chart:treat-empty-cells</h2><p class="Text_20_body">The <span class="Attribute">chart:treat-empty-cells</span> attribute specifies how missing and invalid values are plotted in a chart. </p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:treat-empty-cells</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ignore</span>: nothing is plotted for a point with missing values and the plot continues.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">leave-gap</span>: nothing is plotted for a point with missing values and a continuous plot stops and restarts at the next valid point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">use-zero</span>: missing values are replaced with zero.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default behavior is <span class="Attribute_20_Value">ignore</span> for scatter charts (<span class="Attribute">chart:class</span> is <span class="Attribute_20_Value_20_Instance">chart:scatter</span>). For all other chart types the default behavior is <span class="Attribute_20_Value">leave-gap</span>. </p><p class="Text_20_body">This attribute is evaluated for <span class="Attribute_20_Value">chart</span> styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:treat-empty-cells</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">chart:treat-empty-cells</span> attribute are <span class="Attribute_20_Value">use-zero</span>, <span class="Attribute_20_Value">leave-gap</span> or <span class="Attribute_20_Value">ignore</span>.</p><h2 class="Heading_20_2"><a id="a20_65chart_vertical"><span style="margin-right:0.127cm;">20.65</span></a><a id="__RefHeading__1419558_253892949"/><a id="property-chart_vertical"/>chart:vertical</h2><p class="Text_20_body">The <span class="Attribute">chart:vertical</span> attribute specifies whether the x-axis in a Cartesian coordinate system is oriented horizontally or vertically. </p><p class="Note"><span class="Note_20_Label">Note: </span>This attribute is used to distinguish bar (<span class="Attribute">chart:vertical</span><span class="Source_20_Text">=”</span><span class="Attribute_20_Value">true</span><span class="Source_20_Text">”</span>) and column (<span class="Attribute">chart:vertical</span><span class="Source_20_Text">=”</span><span class="Attribute_20_Value">false</span><span class="Source_20_Text">”</span>) charts.</p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:plot-area&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:vertical</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: horizontal x-axis, vertical y-axis.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: vertical x-axis, horizontal y-axis.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:vertical</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:vertical</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_66chart_visible"><span style="margin-right:0.127cm;">20.66</span></a><a id="__RefHeading__1419560_253892949"/><a id="property-chart_visible"/>chart:visible</h2><p class="Text_20_body">The <span class="Attribute">chart:visible</span> attribute specifies if an object in a chart is visible or not. By default, objects are visible. </p><p class="Text_20_body">This attribute is evaluated for chart styles that are applied to a <span class="Element">&lt;chart:axis&gt;</span> element or a <span class="Element">&lt;chart:series&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">chart:visible</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: object is not visible in chart.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: object is visible in chart.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">chart:visible</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">chart:visible</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_67dr3d_ambient-color"><span style="margin-right:0.127cm;">20.67</span></a><a id="__RefHeading__1419562_253892949"/><a id="property-dr3d_ambient-color"/><a id="DDE_LINK18"/>dr3d:ambient-color</h2><p class="Text_20_body">See: <a href="#attribute-dr3d_ambient-color">19.92</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:ambient-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:ambient-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_68dr3d_back-scale"><span style="margin-right:0.127cm;">20.68</span></a><a id="__RefHeading__1419564_253892949"/><a id="property-dr3d_back-scale"/>dr3d:back-scale</h2><p class="Text_20_body">The <span class="Attribute">dr3d:back-scale</span> attribute specifies the proportion of the background geometry for 3D rotation and extrude objects.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:back-scale</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:back-scale</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_69dr3d_backface-culling"><span style="margin-right:0.127cm;">20.69</span></a><a id="__RefHeading__1419566_253892949"/><a id="property-dr3d_backface-culling"/>dr3d:backface-culling</h2><p class="Text_20_body">The <span class="Attribute">dr3d:backface-culling</span> attribute specifies whether backface culling is enabled.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:backface-culling</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">disabled</span>: backface culling is not enabled.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">nabled</span>: backface culling is enabled.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:backface-culling</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:backface-culling</span> attribute are <span class="Attribute_20_Value">enabled</span> or <span class="Attribute_20_Value">disabled</span>.</p><h2 class="Heading_20_2"><a id="a20_70dr3d_close-back"><span style="margin-right:0.127cm;">20.70</span></a><a id="__RefHeading__1419568_253892949"/><a id="property-dr3d_close-back"/>dr3d:close-back</h2><p class="Text_20_body">The <span class="Attribute">dr3d:close-back</span> attribute specifies if a back face is generated. The attribute can be used with 3D extrude and 3D rotation objects. It is only evaluated for geometries that are closed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:close-back</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a back face should not be generated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a back face should be generated.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:close-back</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:close-back</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_71dr3d_close-front"><span style="margin-right:0.127cm;">20.71</span></a><a id="__RefHeading__1419570_253892949"/><a id="property-dr3d_close-front"/>dr3d:close-front</h2><p class="Text_20_body">The <span class="Attribute">dr3d:close-front</span> attribute specifies if a front face is generated. The attribute can be used with 3D extrude and 3D rotation objects. It is only evaluated for geometries that are closed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:close-front</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a front face should not be generated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a front face should be generated.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:close-front</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:close-front</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_72dr3d_depth"><span style="margin-right:0.127cm;">20.72</span></a><a id="__RefHeading__1419572_253892949"/><a id="property-dr3d_depth"/>dr3d:depth</h2><p class="Text_20_body">The <span class="Attribute">dr3d:depth</span> attribute specifies an extrusion depth for extruded objects.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:depth</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:depth</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_73dr3d_diffuse-color"><span style="margin-right:0.127cm;">20.73</span></a><a id="__RefHeading__1419574_253892949"/><a id="property-dr3d_diffuse-color"/>dr3d:diffuse-color</h2><p class="Text_20_body">The <span class="Attribute">dr3d:diffuse-color</span> attribute, along with <span class="Attribute">dr3d:ambient-color</span>, <span class="Attribute">dr3d:emissive-color</span>, and <span class="Attribute">dr3d:specular-color</span> specifies the four colors that define the color of a material.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:diffuse-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:diffuse-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_74dr3d_edge-rounding"><span style="margin-right:0.127cm;">20.74</span></a><a id="__RefHeading__1419576_253892949"/><a id="property-dr3d_edge-rounding"/>dr3d:edge-rounding</h2><p class="Text_20_body">The <span class="Attribute">dr3d:edge-rounding</span> attribute specifies the size of an area at the edges of a geometry that is used for rounding edges, if the geometry of a 3D object is generated during run-time. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:edge-rounding</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:edge-rounding</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_75dr3d_edge-rounding-mode"><span style="margin-right:0.127cm;">20.75</span></a><a id="__RefHeading__1419578_253892949"/><a id="property-dr3d_edge-rounding-mode"/>dr3d:edge-rounding-mode</h2><p class="Text_20_body">The <span class="Attribute">dr3d:edge-rounding-mode</span> attribute specifies how to generate rounded edges.</p><p class="Text_20_body">Creating rounded edges in a 3D environment requires an inner and outer representation of the outline on which rounded edges will appear. </p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:edge-rounding-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">attractive</span>: the edge begins at the inner plane by moving points in the direction of combined perpendicular vectors of both neighboring vectors. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">correct</span>: the inner face is linearly scaled smaller relative to its center and the original polygon is used for the outer face.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:edge-rounding-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:edge-rounding-mode</span> attribute are <span class="Attribute_20_Value">correct</span> or <span class="Attribute_20_Value">attractive</span>.</p><h2 class="Heading_20_2"><a id="a20_76dr3d_emissive-color"><span style="margin-right:0.127cm;">20.76</span></a><a id="__RefHeading__1419580_253892949"/><a id="property-dr3d_emissive-color"/>dr3d:emissive-color</h2><p class="Text_20_body">The <span class="Attribute">dr3d:emissive-color</span> attribute, along with <span class="Attribute">dr3d:ambient-color</span>, <span class="Attribute">dr3d:diffuse-color</span>, and <span class="Attribute">dr3d:specular-color</span> specifies the four colors that define the color of a material.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:emissive-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:emissive-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_77dr3d_end-angle"><span style="margin-right:0.127cm;">20.77</span></a><a id="__RefHeading__1419582_253892949"/><a id="property-dr3d_end-angle"/>dr3d:end-angle</h2><p class="Text_20_body">The <span class="Attribute">dr3d:end-angle</span> attribute specifies the rotation angle for 3D rotation objects. The attribute value is an angle. </p><p class="Text_20_body">A value of 360 degrees defines that the 3D rotation object is closed and completely rotated. This is also the default. Values smaller than 360 degrees define opened 3D rotation objects (segments). Values larger than 360 degrees define 3D rotation objects with more than one rotation. </p><p class="Note"><span class="Note_20_Label">Note:</span>  The visible effect of values larger than 360 degrees only differs from that of 360 degrees when the <span class="Attribute">dr3d:back-scale</span> attribute has a value different than <span class="Attribute_20_Value_20_Instance">100%</span> .</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:end-angle</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:end-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a20_78dr3d_horizontal-segments"><span style="margin-right:0.127cm;">20.78</span></a><a id="__RefHeading__1419584_253892949"/><a id="property-dr3d_horizontal-segments"/>dr3d:horizontal-segments</h2><p class="Text_20_body">The <span class="Attribute">dr3d:horizontal-segments</span> attribute specifies the number of horizontal segments that are used to generate a geometry, if the geometry of a 3D object is generated during run-time. </p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Typical consumers support values between 2 and 256.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:horizontal-segments</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:horizontal-segments</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_79dr3d_lighting-mode"><span style="margin-right:0.127cm;">20.79</span></a><a id="__RefHeading__1419586_253892949"/><a id="property-dr3d_lighting-mode"/>dr3d:lighting-mode</h2><p class="Text_20_body">The <span class="Attribute">dr3d:lighting-mode</span> attribute specifies whether lighting is used for a three-dimensional object.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:lighting-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double-sided</span>: the front and back sides of all planes are displayed if they are visible from the viewer's perspective.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">tandard</span>: Depending on the value of the <span class="Attribute">dr3</span><span class="Attribute">d</span><span class="Attribute">:normals-direction</span> attribute, only the front or only the back side sides of the plane are displayed. The opposite sides are not displayed, whether they are visible from the viewer's perspective or not. <span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note</span>: The <span class="Attribute">dr3d:lighting-mode</span> attribute is also defined for non-3D object uses. <a href="#attribute-dr3d_lighting-mode">19.99</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:lighting-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:lighting-mode</span> attribute are <span class="Attribute_20_Value">standard</span> or <span class="Attribute_20_Value">double-sided</span>.</p><h2 class="Heading_20_2"><a id="a20_80dr3d_normals-direction"><span style="margin-right:0.127cm;">20.80</span></a><a id="__RefHeading__1419588_253892949"/><a id="property-dr3d_normals-direction"/>dr3d:normals-direction</h2><p class="Text_20_body">The <span class="Attribute">dr3d:normals-direction</span> attribute specifies which sides of a 3D object's planes are displayed if the <span class="Attribute">dr3d:lighting-mode</span> attribute has the value 'standard'. </p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:normals-direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inverse</span>: only the back sides of planes are displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">normal</span>: only the front sides of planes are displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The front side of the plane is the one the normal points away from. </p><p class="Text_20_body">The <span class="Attribute">dr3d:normals</span><span class="Attribute">-direction</span> attribute has no effect if the <span class="Attribute">dr3d:lighting-mode</span> attribute has the value <span class="Attribute_20_Value">double-sided</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:normals-direction</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:normals-direction</span> attribute are <span class="Attribute_20_Value">normal</span> or <span class="Attribute_20_Value">inverse</span>.</p><h2 class="Heading_20_2"><a id="a20_81dr3d_normals-kind"><span style="margin-right:0.127cm;">20.81</span></a><a id="__RefHeading__1419590_253892949"/><a id="property-dr3d_normals-kind"/>dr3d:normals-kind</h2><p class="Text_20_body">The <span class="Attribute">dr3d:normals-kind</span> attribute specifies the normal settings for generated lighting.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:normals-kind</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">flat</span>: one normal per flat part.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">object</span>: apply object-specific normals.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sphere</span>: normals behave as the object is a sphere.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:normals-kind</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:normals-kind</span> attribute are <span class="Attribute_20_Value">object</span>, <span class="Attribute_20_Value">flat</span> or <span class="Attribute_20_Value">sphere</span>.</p><h2 class="Heading_20_2"><a id="a20_82dr3d_shadow"><span style="margin-right:0.127cm;">20.82</span></a><a id="__RefHeading__1419592_253892949"/><a id="property-dr3d_shadow"/>dr3d:shadow</h2><p class="Text_20_body">The <span class="Attribute">dr3d:shadow</span> attribute enables or disables a three-dimensional shadow for a three-dimensional object.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:shadow</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hidden</span>: three-dimensional shadow should not be shown for a three-dimensional object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">v</span><span class="Attribute_20_Value">isible</span>: three-dimensional shadow should be shown for a three-dimensional object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:shadow</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:shadow</span> attribute are <span class="Attribute_20_Value">visible</span> or <span class="Attribute_20_Value">hidden</span>.</p><h2 class="Heading_20_2"><a id="a20_83dr3d_shininess"><span style="margin-right:0.127cm;">20.83</span></a><a id="__RefHeading__1419594_253892949"/><a id="property-dr3d_shininess"/>dr3d:shininess</h2><p class="Text_20_body">The <span class="Attribute">dr3d:shininess</span> attribute specifies the shine of a material.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:shininess</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:shininess</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_84dr3d_specular-color"><span style="margin-right:0.127cm;">20.84</span></a><a id="__RefHeading__1419596_253892949"/><a id="property-dr3d_specular-color"/>dr3d:specular-color</h2><p class="Text_20_body">The <span class="Attribute">dr3d:specular-color</span> attribute, along with dr3d:ambient-color, <span class="Attribute">dr3d:diffuse-color</span>, and <span class="Attribute">dr3d:emissive-color</span> specifies the four colors that define the color of a material.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:specular-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:specular-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_85dr3d_texture-filter"><span style="margin-right:0.127cm;">20.85</span></a><a id="__RefHeading__1419598_253892949"/><a id="property-dr3d_texture-filter"/>dr3d:texture-filter</h2><p class="Text_20_body">The <span class="Attribute">dr3d:texture-filter</span> attribute specifies whether texture filtering is enabled.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:texture-filter</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">disabled</span>: texture filtering should not be enabled.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">nabled</span>: texture filtering should be enabled.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:texture-filter</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:texture-filter</span> attribute are <span class="Attribute_20_Value">enabled</span> or <span class="Attribute_20_Value">disabled</span>.</p><h2 class="Heading_20_2"><a id="a20_86dr3d_texture-kind"><span style="margin-right:0.127cm;">20.86</span></a><a id="__RefHeading__1419600_253892949"/><a id="property-dr3d_texture-kind"/>dr3d:texture-kind</h2><p class="Text_20_body">The <span class="Attribute">dr3d:texture-kind</span> attribute specifies if texture changes the luminance, intensity, or color of a shape.</p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:texture-kind</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">color</span>: color of a shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span><span class="Attribute_20_Value">ntensity</span>: intensity of a shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">uminance</span>: luminance of a shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:texture-kind</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:texture-kind</span> attribute are <span class="Attribute_20_Value">luminance</span>, <span class="Attribute_20_Value">intensity</span> or <span class="Attribute_20_Value">color</span>.</p><h2 class="Heading_20_2"><a id="a20_87dr3d_texture-mode"><span style="margin-right:0.127cm;">20.87</span></a><a id="__RefHeading__1419602_253892949"/><a id="property-dr3d_texture-mode"/>dr3d:texture-mode</h2><p class="Text_20_body">The <span class="Attribute">dr3d:texture-mode</span> attribute specifies how the texture is modulated. </p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:texture-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">blend</span>: blends the texture blend color with the object color.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">modulate</span>: modulates the object color with the texture color.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">replace</span>: replaces the object color with the texture color.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:texture-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:texture-mode</span> attribute are <span class="Attribute_20_Value">replace</span>, <span class="Attribute_20_Value">modulate</span> or <span class="Attribute_20_Value">blend</span>.</p><h2 class="Heading_20_2"><a id="a20_88dr3d_texture-generation-mode-x"><span style="margin-right:0.127cm;">20.88</span></a><a id="__RefHeading__1419604_253892949"/><a id="property-dr3d_texture-generation-mode-x"/>dr3d:texture-generation-mode-x</h2><p class="Text_20_body">The <span class="Attribute">dr3d:texture-generation-mode-x</span> attribute, along with the <span class="Attribute">dr3d:texture-generation-mode-y</span> attribute, specifies how textual coordinates are generated. </p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:texture-generation-mode-x</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">object</span>: This value specifies that the standard object projection method is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">parallel</span>: This value specifies a flat parallel projection in the specified degree of freedom (X or Y).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sphere</span>: This value forces projection to wrapping in X and/or Y direction.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:texture-generation-mode-x</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:texture-generation-mode-x</span> attribute are <span class="Attribute_20_Value">object</span>, <span class="Attribute_20_Value">parallel</span> or <span class="Attribute_20_Value">sphere</span>.</p><h2 class="Heading_20_2"><a id="a20_89dr3d_texture-generation-mode-y"><span style="margin-right:0.127cm;">20.89</span></a><a id="__RefHeading__1419606_253892949"/><a id="property-dr3d_texture-generation-mode-y"/>dr3d:texture-generation-mode-y</h2><p class="Text_20_body">The <span class="Attribute">dr3d:texture-generation-mode-y</span> attribute, along with the <span class="Attribute">dr3d:texture-generation-mode-x</span> attribute, specifies how textual coordinates are generated. </p><p class="Text_20_body">The defined values for the <span class="Attribute">dr3d:texture-generation-mode-y</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">object</span>: This value specifies that the standard object projection method is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">parallel</span>: This value specifies a flat parallel projection in the specified degree of freedom (X or Y).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">sphere</span>: This value forces projection to wrapping in X and/or Y direction.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:texture-generation-mode-y</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">dr3d:texture-generation-mode-y</span> attribute are <span class="Attribute_20_Value">object</span>, <span class="Attribute_20_Value">parallel</span> or <span class="Attribute_20_Value">sphere</span>.</p><h2 class="Heading_20_2"><a id="a20_90dr3d_vertical-segments"><span style="margin-right:0.127cm;">20.90</span></a><a id="__RefHeading__1419608_253892949"/><a id="property-dr3d_vertical-segments"/>dr3d:vertical-segments</h2><p class="Text_20_body">The <span class="Attribute">dr3d:vertical-segments</span> attribute specifies the number of vertical segments that are used to generate the geometry, if the geometry of a 3D object is generated during run-time. </p><p class="Text_20_body"><span class="Note_20_Label">Note: </span>Typical consumers support values between 2 and 256.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">dr3d:vertical-segments</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">dr3d:vertical-segments</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_91draw_auto-grow-height"><span style="margin-right:0.127cm;">20.91</span></a><a id="__RefHeading__1419610_253892949"/><a id="property-draw_auto-grow-height"/>draw:auto-grow-height</h2><p class="Text_20_body">The <span class="Attribute">draw:auto-grow-height</span> attributes specifies whether to automatically increase the height of the drawing object if text is added to the drawing object. This attribute is evaluated only for text boxes.</p><p class="Text_20_body">If both <span class="Attribute">draw:auto-grow-width</span> and <span class="Attribute">draw:auto-grow-height</span> are present, a consumer should first grow the size of the drawing object in the dimension of the major text flow (width for horizontal writing, and height for vertical writing). Only after that size component is filled, a consumer should adjust the other dimension to fit the text content. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:auto-grow-height</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: height of a drawing object should not automatically increase if text is added to the drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: height of a drawing object should automatically increase if text is added to the drawing object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:auto-grow-height</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:auto-grow-height</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_92draw_auto-grow-width"><span style="margin-right:0.127cm;">20.92</span></a><a id="__RefHeading__1419612_253892949"/><a id="property-draw_auto-grow-width"/>draw:auto-grow-width</h2><p class="Text_20_body">The <span class="Attribute">draw:auto-grow-width</span> attribute specifies whether to automatically increase the width of the drawing object if text is added to the drawing object. This attribute is evaluated only for text boxes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:auto-grow-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: width of a drawing object should not automatically increase if text is added to the drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: width of a drawing object should automatically increase if text is added to the drawing object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:auto-grow-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:auto-grow-width</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_93draw_background-size"><span style="margin-right:0.127cm;">20.93</span></a><a id="__RefHeading__1419614_253892949"/><a id="property-draw_background-size"/>draw:background-size</h2><p class="Text_20_body">The <span class="Attribute">draw:background-size</span> attribute specifies whether the background of a page is rendered on a full page or only inside the borders of a page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:background-size</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">border</span>: background should be rendered only inside borders of a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">ull</span>: background should be rendered on a full page.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:background-size</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:background-size</span> attribute are <span class="Attribute_20_Value">full</span> or <span class="Attribute_20_Value">border</span>.</p><h2 class="Heading_20_2"><a id="a20_94draw_blue"><span style="margin-right:0.127cm;">20.94</span></a><a id="__RefHeading__1419616_253892949"/><a id="property-draw_blue"/>draw:blue</h2><p class="Text_20_body">The <span class="Attribute">draw:blue</span> attribute specifies together with the attributes <span class="Attribute">draw:green</span> and <span class="Attribute">draw:red</span> a non destructive filter for a linear transformation of the white balance of a pixel image. </p><p class="Text_20_body">If any of these three attributes is specified, an offset is applied to each pixel of an image while is it rendered. The offsets for each color channel is given as a percentage in the range of -100% to +100%. </p><p class="Text_20_body">These offsets is scaled to the range -2^bits to 2^bits, where bits is the number of bits reserved for each color channel within the image. If the resulting value is less than 0 it is set to 0 and if it is greater than the maximum possible value it is set to the maximum. </p><p class="Note"><span class="Note_20_Label">Note:</span> For example, if the <span class="Attribute">draw:blue</span> attribute has the value 50% and the blue color channel has 8 bits, then 128 is added to the blue color value of each pixel inside the image before it is rendered. If <span class="Attribute">draw:blue</span> has the value -50% then 128 is subtracted. </p><p class="Text_20_body">The <span class="Attribute">draw:blue</span> attribute specifies the offset for the blue color channel. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:blue</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:blue</span> attribute has the data type <span class="Datatype">signedZeroToHundredPercent</span> <a href="#datatype-signedZeroToHundredPercent">18.3.30</a>.</p><h2 class="Heading_20_2"><a id="a20_95draw_caption-angle"><span style="margin-right:0.127cm;">20.95</span></a><a id="__RefHeading__1419618_253892949"/><a id="property-draw_caption-angle"/>draw:caption-angle</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-angle</span> attribute specifies the leaving angle of the line of a caption. It is evaluated only if <span class="Attribute">draw:caption-angle-type</span> has the value <span class="Attribute_20_Value">fixed</span>. The attribute value is an angle. See <a href="#datatype-angle">18.3.1</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-angle</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a20_96draw_caption-angle-type"><span style="margin-right:0.127cm;">20.96</span></a><a id="__RefHeading__1419620_253892949"/><a id="property-draw_caption-angle-type"/>draw:caption-angle-type</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-angle-type</span> attribute specifies if the leaving angle of the line of a caption is fixed or free.. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:caption-angle-typ</span><span class="Attribute">e</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: leaving angle of line from caption has been specified by a <span class="Attribute">draw:caption-angle</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">free</span>: consumer can choose the best possible leaving angle of the line from a caption.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-angle-type</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:caption-angle-type</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">free</span>.</p><h2 class="Heading_20_2"><a id="a20_97draw_caption-escape"><span style="margin-right:0.127cm;">20.97</span></a><a id="__RefHeading__1419622_253892949"/><a id="property-draw_caption-escape"/>draw:caption-escape</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-escape</span> attribute specifies the point where a caption's connector is connected to the caption's text area, measured from the top left corner of the text area. The value can be an absolute length or a percentage.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-escape</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:caption-escape</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_98draw_caption-escape-direction"><span style="margin-right:0.127cm;">20.98</span></a><a id="__RefHeading__1419624_253892949"/><a id="property-draw_caption-escape-direction"/>draw:caption-escape-direction</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-escape-direction</span> attribute specifies the leaving direction for the line of a caption. If this is set to <span class="Attribute_20_Value">auto</span> the consumer can choose the best direction.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:caption-escape-direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: consumer should choose best leaving direction for a line of a caption.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal</span>: the leaving line of a caption should be drawn horizontally.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: the leaving line of a caption should be drawn vertically.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-escape-direction</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:caption-escape-direction</span> attribute are <span class="Attribute_20_Value">horizontal</span>, <span class="Attribute_20_Value">vertical</span> or <span class="Attribute_20_Value">auto</span>.</p><h2 class="Heading_20_2"><a id="a20_99draw_caption-fit-line-length"><span style="margin-right:0.127cm;">20.99</span></a><a id="__RefHeading__1419626_253892949"/><a id="property-draw_caption-fit-line-length"/>draw:caption-fit-line-length</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-fit-line-length</span> attribute enables the consumer to determine the best possible length for a caption line.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:caption-fit-line-length</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: length for caption line is fixed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumer should determine the best possible length for a caption line.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-fit-line-length</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-fit-line-length</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_100draw_caption-gap"><span style="margin-right:0.127cm;">20.100</span></a><a id="__RefHeading__1419628_253892949"/><a id="property-draw_caption-gap"/>draw:caption-gap</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-gap</span> attribute specifies the distance between the text area of the caption and the start of the line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-gap</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-gap</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_101draw_caption-line-length"><span style="margin-right:0.127cm;">20.101</span></a><a id="__RefHeading__1419630_253892949"/><a id="property-draw_caption-line-length"/>draw:caption-line-length</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-line-length</span> attribute specifies the length of the first line of a caption. The attribute is only evaluated if <span class="Attribute">draw:caption-fit-line-length</span> has the value <span class="Attribute_20_Value">false</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-line-length</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:caption-line-length</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_102draw_caption-type"><span style="margin-right:0.127cm;">20.102</span></a><a id="__RefHeading__1419632_253892949"/><a id="property-draw_caption-type"/>draw:caption-type</h2><p class="Text_20_body">The <span class="Attribute">draw:caption-type</span> attribute specifies the geometry of the line of a caption. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:caption-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">angled-connector-line</span>: a line in leaving direction is drawn, followed by a line to the caption point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">angled-line</span>: a line is drawn to the caption point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">straight-line</span>: a line perpendicular to the leaving direction is drawn to the caption point.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:caption-type</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:caption-type</span> attribute are <span class="Attribute_20_Value">straight-line</span>, <span class="Attribute_20_Value">angled-line</span> or <span class="Attribute_20_Value">angled-connector-line</span>.</p><h2 class="Heading_20_2"><a id="a20_103draw_color-inversion"><span style="margin-right:0.127cm;">20.103</span></a><a id="__RefHeading__1419634_253892949"/><a id="property-draw_color-inversion"/>draw:color-inversion</h2><p class="Text_20_body">The <span class="Attribute">draw:color-inversion</span> attribute specifies whether the colors in the graphic shape should be inverted.</p><p class="Note"><span class="Note_20_Label">Note:</span> Given a color "#rrggbb", where rr, gg and bb are 8-bit hexadecimal digits, the inverted color is "#RRGGBB" where RR is the 8 bit hexadecimal number obtained as the difference of hexadecimal FF and rr, GG is the 8-bit hexadecimal number obtained as the difference of hexadecimal FF (=256) and gg, and BB is the 8 bit hexadecimal number obtained as the difference of hexadecimal FF (=256) and bb. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:color-inversion</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: colors in a graphic shape should not be inverted.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: colors in a graphic shape should be inverted.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:color-inversion</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:color-inversion</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_104draw_color-mode"><span style="margin-right:0.127cm;">20.104</span></a><a id="__RefHeading__1419636_253892949"/><a id="property-draw_color-mode"/>draw:color-mode</h2><p class="Text_20_body">The <span class="Attribute">draw:color-mode</span> attribute sets the output of colors from a source bitmap or raster graphic.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:color-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">greyscale</span>: image is displayed using intensity only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span><span class="Attribute_20_Value">ono</span>: image is displayed in black and white.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">standard</span>: image is displayed without modification by the <span class="Attribute">draw:color-mode</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">w</span><span class="Attribute_20_Value">atermark</span>: colors are modified to make the resulting image transparent.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:color-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:color-mode</span> attribute are <span class="Attribute_20_Value">greyscale</span>, <span class="Attribute_20_Value">mono</span>, <span class="Attribute_20_Value">watermark</span> or <span class="Attribute_20_Value">standard</span>.</p><h2 class="Heading_20_2"><a id="a20_105draw_contrast"><span style="margin-right:0.127cm;">20.105</span></a><a id="__RefHeading__1419638_253892949"/><a id="property-draw_contrast"/>draw:contrast</h2><p class="Text_20_body">The <span class="Attribute">draw:contrast</span> attribute specifies a signed percentage value that sets the output contrast of a bitmap or raster graphic.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:contrast</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:contrast</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_106draw_decimal-places"><span style="margin-right:0.127cm;">20.106</span></a><a id="__RefHeading__1419640_253892949"/><a id="property-draw_decimal-places"/>draw:decimal-places</h2><p class="Text_20_body">The <span class="Attribute">draw:decimal-places</span> attribute specifies the number of decimal places that are used for the measure text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:decimal-places</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:decimal-places</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_107draw_draw-aspect"><span style="margin-right:0.127cm;">20.107</span></a><a id="__RefHeading__1419642_253892949"/><a id="property-draw_draw-aspect"/>draw:draw-aspect</h2><p class="Text_20_body">The <span class="Attribute">draw:draw-aspect</span> attribute specifies the display embedded objects. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:draw-aspect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">content</span>: Specifies an object is displayed as an embedded object inside a frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">icon</span>: Specifies an icon to display.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">print-view</span>: Specifies an object is displayed as in a print preview.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">thumbnail</span>: Specifies a thumbnail of an object is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:draw-aspect</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:draw-aspect</span> attribute are <span class="Attribute_20_Value">content</span>, <span class="Attribute_20_Value">thumbnail</span>, <span class="Attribute_20_Value">icon</span> or <span class="Attribute_20_Value">print-view</span>.</p><h2 class="Heading_20_2"><a id="a20_108draw_end-guide"><span style="margin-right:0.127cm;">20.108</span></a><a id="__RefHeading__1419644_253892949"/><a id="property-draw_end-guide"/>draw:end-guide</h2><p class="Text_20_body">The <span class="Attribute">draw:end-guide</span> attribute specifies a length that is added to the length of the end extension line. The extension line is extended by this length towards the end reference point.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-guide</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-guide</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_109draw_end-line-spacing-horizontal"><span style="margin-right:0.127cm;">20.109</span></a><a id="__RefHeading__1419646_253892949"/><a id="property-draw_end-line-spacing-horizontal"/>draw:end-line-spacing-horizontal</h2><p class="Text_20_body">The <span class="Attribute">draw:end-line-spacing-horizontal</span> attribute increments the length of the leaving line from the end shape. For line connectors, it specifies the absolute length of the leaving line from the end shape. For other connector types, it is ignored. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-line-spacing-horizontal</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-line-spacing-horizontal</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_110draw_end-line-spacing-vertical"><span style="margin-right:0.127cm;">20.110</span></a><a id="__RefHeading__1419648_253892949"/><a id="property-draw_end-line-spacing-vertical"/>draw:end-line-spacing-vertical</h2><p class="Text_20_body">The <span class="Attribute">draw:end-line-spacing-vertical</span> attribute increments the length of the leaving line from the end shape. For line connectors, it specifies the absolute length of the leaving line from the end shape. For other connector types, it is ignored. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:end-line-spacing-vertical</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:end-line-spacing-vertical</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_111draw_fill"><span style="margin-right:0.127cm;">20.111</span></a><a id="__RefHeading__1419650_253892949"/><a id="property-draw_fill"/>draw:fill</h2><p class="Text_20_body">The <span class="Attribute">draw:fill</span> attribute specifies the fill style for a graphic object. Graphic objects that are not closed will not be filled. </p><p class="Note"><span class="Note_20_Label">Note:</span> A path without a closepath at the end is open and will not be filled.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:fill</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bitmap</span>: the drawing object is filled with the bitmap specified by the <span class="Attribute">draw:fill-image-name</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">gradient</span>: the drawing object is filled with the gradient specified by the <span class="Attribute">draw:fill-gradient-name</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hatch</span>: the drawing object is filled with the hatch specified by the <span class="Attribute">draw:fill-hatch-name</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: the drawing object is not filled.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: the drawing object is filled with the color specified by the <span class="Attribute">draw:fill-color</span> attribute.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:fill</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">bitmap</span>, <span class="Attribute_20_Value">gradient</span> or <span class="Attribute_20_Value">hatch</span>.</p><h2 class="Heading_20_2"><a id="a20_112draw_fill-color"><span style="margin-right:0.127cm;">20.112</span></a><a id="__RefHeading__1419652_253892949"/><a id="property-draw_fill-color"/>draw:fill-color</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-color</span> attribute specifies the color of the fill for a graphic object. It is used only if the <span class="Attribute">draw:fill</span> attribute has one of the values <span class="Attribute_20_Value">solid</span> or <span class="Attribute_20_Value">hatch</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-color</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_113draw_fill-gradient-name"><span style="margin-right:0.127cm;">20.113</span></a><a id="__RefHeading__1419654_253892949"/><a id="property-draw_fill-gradient-name"/>draw:fill-gradient-name</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-gradient-name</span> attribute specifies a gradient style that is used for filling graphic objects. It is used only if the <span class="Attribute">draw:fill</span> attribute has the value <span class="Attribute_20_Value">gradient</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-gradient-name</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-gradient-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_114draw_fill-hatch-name"><span style="margin-right:0.127cm;">20.114</span></a><a id="__RefHeading__1419656_253892949"/><a id="property-draw_fill-hatch-name"/>draw:fill-hatch-name</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-hatch-name</span> attribute specifies a hatch style that is used for filling. It is used only if the <span class="Attribute">draw:fill</span> attribute has the value <span class="Attribute_20_Value">hatch</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-hatch-name</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-hatch-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_115draw_fill-hatch-solid"><span style="margin-right:0.127cm;">20.115</span></a><a id="__RefHeading__1419658_253892949"/><a id="property-draw_fill-hatch-solid"/>draw:fill-hatch-solid</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-hatch-solid</span> attribute specifies whether the background of a hatch filling is solid or transparent.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:fill-hatch-solid</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: background of a hatch filling should be transparent.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: background of a hatch filling is filled with the color specified by the <span class="Attribute">draw:fill-color</span> attribute.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-hatch-solid</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-hatch-solid</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_116draw_fill-image-height"><span style="margin-right:0.127cm;">20.116</span></a><a id="__RefHeading__1419660_253892949"/><a id="property-draw_fill-image-height"/>draw:fill-image-height</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-image-height</span> attribute overrides the logical height of a source image that is used for filling. If the value of the <span class="Attribute">style:repeat</span> attribute is <span class="Attribute_20_Value">stretch</span>, this attribute is ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-image-height</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:fill-image-height</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_117draw_fill-image-name"><span style="margin-right:0.127cm;">20.117</span></a><a id="__RefHeading__1419662_253892949"/><a id="property-draw_fill-image-name"/>draw:fill-image-name</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-image-name</span> attribute specifies a fill image that is used for filling. It is used only if the <span class="Attribute">draw:fill</span> attribute has the value <span class="Attribute_20_Value">bitmap</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-image-name</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-image-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_118draw_fill-image-ref-point"><span style="margin-right:0.127cm;">20.118</span></a><a id="__RefHeading__1419664_253892949"/><a id="property-draw_fill-image-ref-point"/>draw:fill-image-ref-point</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-image-ref-point</span> attribute specifies an alignment of an image in the filling area. </p><p class="Text_20_body">If an alignment (<span class="Attribute">draw:fill-image-ref-point</span>) and a movement (<span class="Attribute">draw:fill-image-ref-point-x</span>, <span class="Attribute">draw:fill-image-ref-point-y</span>) is specified at the same time, the image first is aligned and then moved.</p><p class="Text_20_body">This attribute is only interpreted if the value of the current <span class="Attribute">style:repeat</span> attribute is <span class="Attribute_20_Value">repeat</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:fill-image-ref-point</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: image aligned with the bottom of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">ottom-left</span>: image aligned with the bottom-left of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">ottom-right</span>: image aligned with the bottom-right of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">enter</span>: image aligned with the center of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">eft</span>: image aligned with the left of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ight</span>: image aligned with the right of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op</span>: image aligned with the top of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op-left</span>: image aligned with the top-left of the filling area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op-right</span>: image aligned with the top-right of the filling area.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-image-ref-point</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:fill-image-ref-point</span> attribute are <span class="Attribute_20_Value">top-left</span>, <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">top-right</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">bottom-left</span>, <span class="Attribute_20_Value">bottom</span> or <span class="Attribute_20_Value">bottom-right</span>.</p><h2 class="Heading_20_2"><a id="a20_119draw_fill-image-ref-point-x"><span style="margin-right:0.127cm;">20.119</span></a><a id="__RefHeading__1419666_253892949"/><a id="property-draw_fill-image-ref-point-x"/>draw:fill-image-ref-point-x</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-image-ref-point-x</span> attribute specifies the horizontal movement of an image as a percentage value, where the percentage value is relative to the image width. </p><p class="Text_20_body">If an alignment (<span class="Attribute">draw:fill-image-ref-point</span>) and a movement (<span class="Attribute">draw:fill-image-ref-point-x</span>, <span class="Attribute">draw:fill-image-ref-point-y</span>) is specified at the same time, the image first is aligned and then moved.</p><p class="Text_20_body">This attribute is only interpreted if the value of the current <span class="Attribute">style:repeat</span> attribute is <span class="Attribute_20_Value">repeat</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-image-ref-point-x</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-image-ref-point-x</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_120draw_fill-image-ref-point-y"><span style="margin-right:0.127cm;">20.120</span></a><a id="__RefHeading__1419668_253892949"/><a id="property-draw_fill-image-ref-point-y"/>draw:fill-image-ref-point-y</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-image-ref-point-x</span> attribute specifies the horizontal movement of an image as a percentage value, where the percentage value is relative to the image width. </p><p class="Text_20_body">If an alignment (<span class="Attribute">draw:fill-image-ref-point</span>) and a movement (<span class="Attribute">draw:fill-image-ref-point-x</span>, <span class="Attribute">draw:fill-image-ref-point-y</span>) is specified at the same time, the image first is aligned and then moved.</p><p class="Text_20_body">This attribute is only interpreted if the value of the current <span class="Attribute">style:repeat</span> attribute is <span class="Attribute_20_Value">repeat</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-image-ref-point-y</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fill-image-ref-point-y</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_121draw_fill-image-width"><span style="margin-right:0.127cm;">20.121</span></a><a id="__RefHeading__1419670_253892949"/><a id="property-draw_fill-image-width"/>draw:fill-image-width</h2><p class="Text_20_body">The <span class="Attribute">draw:fill-image-width</span> attribute overrides the logical width of a source image that is used for filling. If the value of the <span class="Attribute">style:repeat</span> attribute is <span class="Attribute_20_Value">stretch</span>, this attribute is ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fill-image-width</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:fill-image-width</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_122draw_fit-to-contour"><span style="margin-right:0.127cm;">20.122</span></a><a id="__RefHeading__1419672_253892949"/><a id="property-draw_fit-to-contour"/>draw:fit-to-contour</h2><p class="Text_20_body">The <span class="Attribute">draw:fit-to-contour</span> attribute specifies whether to stretch the text content of a drawing object to fill the contour of an object. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:fit-to-contour</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text content should not be stretched to fill the contour of an object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text content should be stretched to fill the contour of an object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fit-to-contour</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fit-to-contour</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_123draw_fit-to-size"><span style="margin-right:0.127cm;">20.123</span></a><a id="__RefHeading__1419674_253892949"/><a id="property-draw_fit-to-size"/>draw:fit-to-size</h2><p class="Text_20_body">The <span class="Attribute">draw:fit-to-size</span> attribute specifies whether to stretch the text content of a drawing object to fill an entire object. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:fit-to-size</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text content should not be stretched to fill an entire object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text content should be stretched to fill an entire object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:fit-to-size</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:fit-to-size</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_124draw_frame-display-border"><span style="margin-right:0.127cm;">20.124</span></a><a id="__RefHeading__1419676_253892949"/><a id="property-draw_frame-display-border"/>draw:frame-display-border</h2><p class="Text_20_body">The <span class="Attribute">draw:frame-display-border</span> attribute specifies whether a border is displayed on a floating frame. This attribute can be used with automatic styles only.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:frame-display-border</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a border should not be displayed on a floating frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a border should be displayed on a floating frame.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:frame-display-border</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:frame-display-border</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_125draw_frame-margin-horizontal"><span style="margin-right:0.127cm;">20.125</span></a><a id="__RefHeading__1419678_253892949"/><a id="property-draw_frame-margin-horizontal"/>draw:frame-margin-horizontal</h2><p class="Text_20_body">The <span class="Attribute">draw:frame-margin-horizontal</span> attribute specifies the horizontal margin between the border and the content of the floating frame. If this attribute is not specified, the default margin is used. This attribute can be used with automatic styles only. The value of this attribute shall be a length in pixels.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:frame-margin-horizontal</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:frame-margin-horizontal</span> attribute has the data type <span class="Datatype">nonNegativePixelLength</span> <a href="#datatype-nonNegativePixelLength">18.3.21</a>.</p><h2 class="Heading_20_2"><a id="a20_126draw_frame-display-scrollbar"><span style="margin-right:0.127cm;">20.126</span></a><a id="__RefHeading__1419680_253892949"/><a id="property-draw_frame-display-scrollbar"/>draw:frame-display-scrollbar</h2><p class="Text_20_body">The <span class="Attribute">draw:frame-display-scrollbar</span> attribute specifies whether vertical and horizontal scrollbars are displayed. This attribute can be assigned to automatic styles only.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:frame-display-scrollbar</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: vertical and horizontal scrollbars should not be displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: vertical and horizontal scrollbars should be displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:frame-display-scrollbar</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:frame-display-scrollbar</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_127draw_frame-margin-vertical"><span style="margin-right:0.127cm;">20.127</span></a><a id="__RefHeading__1419682_253892949"/><a id="property-draw_frame-margin-vertical"/>draw:frame-margin-vertical</h2><p class="Text_20_body">The <span class="Attribute">draw:frame-margin-vertical</span> attribute specifies the vertical margin between the border and the content of the floating frame. If this attribute is not specified, the default margin is used. This attribute can be used with automatic styles only. The value of this attribute shall be a length in pixels.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:frame-margin-vertical</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:frame-margin-vertical</span> attribute has the data type <span class="Datatype">nonNegativePixelLength</span> <a href="#datatype-nonNegativePixelLength">18.3.21</a>.</p><h2 class="Heading_20_2"><a id="a20_128draw_gamma"><span style="margin-right:0.127cm;">20.128</span></a><a id="__RefHeading__1419684_253892949"/><a id="property-draw_gamma"/>draw:gamma</h2><p class="Text_20_body">The <span class="Attribute">draw:gamma</span> attribute specifies a value that sets the output gamma of a bitmap or raster graphic.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:gamma</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:gamma</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_129draw_green"><span style="margin-right:0.127cm;">20.129</span></a><a id="__RefHeading__1419686_253892949"/><a id="property-draw_green"/>draw:green</h2><p class="Text_20_body">The <span class="Attribute">draw:green</span> attribute specifies together with the attributes <span class="Attribute">draw:blue</span> and <span class="Attribute">draw:red</span> a non destructive filter for a linear transformation of the white balance of a pixel image. See <a href="#property-draw_blue">20.94</a>.</p><p class="Text_20_body">The <span class="Attribute">draw:green</span> attribute specifies the offset for the green color channel. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:green</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:green</span> attribute has the data type <span class="Datatype">signedZeroToHundredPercent</span> <a href="#datatype-signedZeroToHundredPercent">18.3.30</a>.</p><h2 class="Heading_20_2"><a id="a20_130draw_gradient-step-count"><span style="margin-right:0.127cm;">20.130</span></a><a id="__RefHeading__1419688_253892949"/><a id="property-draw_gradient-step-count"/>draw:gradient-step-count</h2><p class="Text_20_body">The <span class="Attribute">draw:gradient-step-count</span> attribute specifies the gradient step count of a color interpolation to be a fixed value. By default, the step count is automatically calculated based on the size and resolution of the filled area.</p><p class="Text_20_body">A gradient step count of color interpretation shall be 3 or greater. </p><p class="Text_20_body">A gradient step count of color interpretation may be above 256.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:gradient-step-count</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:gradient-step-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_131draw_guide-distance"><span style="margin-right:0.127cm;">20.131</span></a><a id="__RefHeading__1419690_253892949"/><a id="property-draw_guide-distance"/>draw:guide-distance</h2><p class="Text_20_body">The <span class="Attribute">draw:guide-distance</span> attribute specifies the distance between the reference points and the start point of extension lines.</p><p class="Note"><span class="Note_20_Label">Note: </span>This distance may be further modified for the start and end extensions lines individually with the <span class="Attribute">draw:start-guide</span> and <span class="Attribute">draw:end-guide</span> attributes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:guide-distance</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:guide-distance</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_132draw_guide-overhang"><span style="margin-right:0.127cm;">20.132</span></a><a id="__RefHeading__1419692_253892949"/><a id="property-draw_guide-overhang"/>draw:guide-overhang</h2><p class="Text_20_body">The <span class="Attribute">draw:guide-overhang</span> attribute specifies the length of extension lines after their intersection with a dimension line.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:guide-overhang</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:guide-overhang</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_133draw_image-opacity"><span style="margin-right:0.127cm;">20.133</span></a><a id="__RefHeading__1419694_253892949"/><a id="property-draw_image-opacity"/>draw:image-opacity</h2><p class="Text_20_body">The <span class="Attribute">draw:image-opacity</span> attribute specifies the opacity of an image. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:image-opacity</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:image-opacity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a20_134draw_line-distance"><span style="margin-right:0.127cm;">20.134</span></a><a id="__RefHeading__1419696_253892949"/><a id="property-draw_line-distance"/>draw:line-distance</h2><p class="Text_20_body">The <span class="Attribute">draw:line-distance</span> attribute specifies the distance between a reference line (as defined by the reference points) and a dimension line. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:line-distance</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:line-distance</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_135draw_luminance"><span style="margin-right:0.127cm;">20.135</span></a><a id="__RefHeading__1419698_253892949"/><a id="property-draw_luminance"/>draw:luminance</h2><p class="Text_20_body">The <span class="Attribute">draw:luminance</span> attribute specifies a signed percentage value that sets the output luminance of a bitmap or raster graphic.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:luminance</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:luminance</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a20_136draw_marker-end"><span style="margin-right:0.127cm;">20.136</span></a><a id="__RefHeading__1419700_253892949"/><a id="property-draw_marker-end"/>draw:marker-end</h2><p class="Text_20_body">The <span class="Attribute">draw:marker-end</span> attribute specifies a stroke end marker, which is a path that can be connected to the end of a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:marker-end</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:marker-end</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_137draw_marker-end-center"><span style="margin-right:0.127cm;">20.137</span></a><a id="__RefHeading__1419702_253892949"/><a id="property-draw_marker-end-center"/>draw:marker-end-center</h2><p class="Text_20_body">The <span class="Attribute">draw:marker-end-center</span> attribute specifies whether an end marker is centered at the end of a stroke.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:marker-end-center</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: an end marker should not be centered at the end of a stroke.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: an end marker should be centered at the end of a stroke.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:marker-end-center</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:marker-end-center</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_138draw_marker-end-width"><span style="margin-right:0.127cm;">20.138</span></a><a id="__RefHeading__1419704_253892949"/><a id="property-draw_marker-end-width"/>draw:marker-end-width</h2><p class="Text_20_body">The <span class="Attribute">draw:marker-end-width</span> attribute specifies the width of the marker at the end of a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:marker-end-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:marker-end-width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_139draw_marker-start"><span style="margin-right:0.127cm;">20.139</span></a><a id="__RefHeading__1419706_253892949"/><a id="property-draw_marker-start"/>draw:marker-start</h2><p class="Text_20_body">The <span class="Attribute">draw:marker-start</span> attribute specifies a stroke start marker, which is a path that can be connected to the start of a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:marker-start</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:marker-start</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_140draw_marker-start-center"><span style="margin-right:0.127cm;">20.140</span></a><a id="__RefHeading__1419708_253892949"/><a id="property-draw_marker-start-center"/>draw:marker-start-center</h2><p class="Text_20_body">The <span class="Attribute">draw:marker-start-center</span> attribute specifies whether a start marker is centered at the start of a stroke.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:marker-start-center</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: a start marker should not be centered at the start of a stroke.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: a start marker should be centered at the start of a stroke.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:marker-start-center</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:marker-start-center</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_141draw_marker-start-width"><span style="margin-right:0.127cm;">20.141</span></a><a id="__RefHeading__1419710_253892949"/><a id="property-draw_marker-start-width"/>draw:marker-start-width</h2><p class="Text_20_body">The <span class="Attribute">draw:marker-start-width</span> attribute specifies the width of the marker at the start of a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:marker-start-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:marker-start-width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_142draw_measure-align"><span style="margin-right:0.127cm;">20.142</span></a><a id="__RefHeading__1419712_253892949"/><a id="property-draw_measure-align"/>draw:measure-align</h2><p class="Text_20_body">The <span class="Attribute">draw:measure-align</span> attribute specifies the horizontal alignment of a measure text relative to its measure line.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:measure-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: horizontal alignment of a measure text relative to its measure line is chosen by the consumer.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span><span class="Attribute_20_Value">nside</span>: horizontal alignment of a measure text should be inside relative to its measure line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left-outside</span>: horizontal alignment of a measure text should be left-outside relative to its measure line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right-outside</span>: horizontal alignment of a measure text should be right-outside relative to its measure line.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:measure-align</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:measure-align</span> attribute are <span class="Attribute_20_Value">automatic</span>, <span class="Attribute_20_Value">left-outside</span>, <span class="Attribute_20_Value">inside</span> or <span class="Attribute_20_Value">right-outside</span>.</p><h2 class="Heading_20_2"><a id="a20_143draw_measure-vertical-align"><span style="margin-right:0.127cm;">20.143</span></a><a id="__RefHeading__1419714_253892949"/><a id="property-draw_measure-vertical-align"/>draw:measure-vertical-align</h2><p class="Text_20_body">The <span class="Attribute">draw:measure-vertical-align</span> attribute specifies the vertical alignment of a measure text relative to its measure line. If the value of this attribute is <span class="Attribute_20_Value">automatic</span>, the consumer chooses the best position.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:measure-vertical-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">above</span>: vertical alignment of a measure text should be above relative to its measure line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: vertical alignment of a measure text relative to its measure line is chosen by the consumer.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">elow</span>: vertical alignment of a measure text should be below relative to its measure line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">enter</span>: vertical alignment of a measure text should be centered relative to its measure line.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:measure-vertical-align</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:measure-vertical-align</span> attribute are <span class="Attribute_20_Value">automatic</span>, <span class="Attribute_20_Value">above</span>, <span class="Attribute_20_Value">below</span> or <span class="Attribute_20_Value">center</span>.</p><h2 class="Heading_20_2"><a id="a20_144draw_ole-draw-aspect__deprecated_"><span style="margin-right:0.127cm;">20.144</span></a><a id="__RefHeading__1419716_253892949"/><a id="property-draw_ole-draw-aspect"/>draw:ole-draw-aspect (deprecated) </h2><p class="Text_20_body">The <span class="Attribute">draw:ole-draw-aspect</span> attribute specifies the display of embedded objects. See <a title="Inside OLE">[OLE]</a>. </p><p class="Text_20_body">The use of this attribute is deprecated. The <span class="Attribute">draw:draw-aspect</span> attribute should be used instead.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:ole-draw-aspect</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:ole-draw-aspect</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_145draw_opacity"><span style="margin-right:0.127cm;">20.145</span></a><a id="__RefHeading__1419718_253892949"/><a id="property-draw_opacity"/>draw:opacity</h2><p class="Text_20_body">The <span class="Attribute">draw:opacity</span> attribute specifies the opacity for an image or graphic object. The value is a percentage, where 0% is fully transparent and 100% is fully opaque.</p><p class="Text_20_body">The defined value range for the <span class="Attribute">draw:opacity</span> attribute is 0% to 100%, inclusive. </p><p class="Text_20_body">Use of the <span class="Attribute">draw:opacity</span> attribute disables any transparency effect and set the opacity for the fill area of a graphic object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:opacity</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:opacity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a20_146draw_opacity-name"><span style="margin-right:0.127cm;">20.146</span></a><a id="__RefHeading__1419720_253892949"/><a id="property-draw_opacity-name"/>draw:opacity-name</h2><p class="Text_20_body">The <span class="Attribute">draw:opacity-name</span> attribute specifies an opacity gradient that defines the opacity for the fill area of a graphic object. When applying an opacity gradient, the opacity is interpolated as defined in the referenced opacity gradient style. Opacity is applied after other fill styles have been applied to an image or graphic object.</p><p class="Text_20_body">The value of this attribute overrides the <span class="Attribute">draw:opacity</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:opacity-name</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:opacity-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_147draw_parallel"><span style="margin-right:0.127cm;">20.147</span></a><a id="__RefHeading__1419722_253892949"/><a id="property-draw_parallel"/>draw:parallel</h2><p class="Text_20_body">The <span class="Attribute">draw:parallel</span> attribute specifies whether a measure text is displayed parallel to its measure line or perpendicular to it.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:parallel</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: measure text is displayed perpendicular to its measure line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: measure text is displayed parallel to its measure line.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:parallel</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:parallel</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_148draw_placing"><span style="margin-right:0.127cm;">20.148</span></a><a id="__RefHeading__1419724_253892949"/><a id="property-draw_placing"/>draw:placing</h2><p class="Text_20_body">The <span class="Attribute">draw:placing</span> attribute specifies whether the measure line is rendered below or above the edge defined by the two reference points. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:placing</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">above</span>: measure line is rendered above the edge defined by two reference points.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">elow</span>: measure line is rendered below the edge defined by two reference points.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:placing</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:placing</span> attribute are <span class="Attribute_20_Value">below</span> or <span class="Attribute_20_Value">above</span>.</p><h2 class="Heading_20_2"><a id="a20_149draw_red"><span style="margin-right:0.127cm;">20.149</span></a><a id="__RefHeading__1419726_253892949"/><a id="property-draw_red"/>draw:red</h2><p class="Text_20_body">The <span class="Attribute">draw:red</span> attribute specifies together with the attributes <span class="Attribute">draw:blue</span> and <span class="Attribute">draw:green</span> a non destructive filter for a linear transformation of the white balance of a pixel image. See <a href="#property-draw_blue">20.94</a>.</p><p class="Text_20_body">The <span class="Attribute">draw:red</span> attribute specifies the offset for the red color channel. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:red</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:red</span> attribute has the data type <span class="Datatype">signedZeroToHundredPercent</span> <a href="#datatype-signedZeroToHundredPercent">18.3.30</a>.</p><h2 class="Heading_20_2"><a id="a20_150draw_secondary-fill-color"><span style="margin-right:0.127cm;">20.150</span></a><a id="__RefHeading__1419728_253892949"/><a id="property-draw_secondary-fill-color"/>draw:secondary-fill-color</h2><p class="Text_20_body">The <span class="Attribute">draw:secondary-fill-color</span> attribute specifies a secondary fill color. It may be used as fill color for the extrusion.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:secondary-fill-color</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:secondary-fill-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_151draw_shadow"><span style="margin-right:0.127cm;">20.151</span></a><a id="__RefHeading__1419730_253892949"/><a id="property-draw_shadow"/>draw:shadow</h2><p class="Text_20_body">The <span class="Attribute">draw:shadow</span> attribute enables or disables the visibility of a shadow.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:shadow</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hidden</span>: a shadow should not be visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">v</span><span class="Attribute_20_Value">isible</span>: a shadow should be visible.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:shadow</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:shadow</span> attribute are <span class="Attribute_20_Value">visible</span> or <span class="Attribute_20_Value">hidden</span>.</p><h2 class="Heading_20_2"><a id="a20_152draw_shadow-color"><span style="margin-right:0.127cm;">20.152</span></a><a id="__RefHeading__1419732_253892949"/><a id="property-draw_shadow-color"/>draw:shadow-color</h2><p class="Text_20_body">The <span class="Attribute">draw:shadow-color</span> attribute specifies the color in which a shadow is rendered.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:shadow-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:shadow-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_153draw_shadow-offset-x"><span style="margin-right:0.127cm;">20.153</span></a><a id="__RefHeading__1419734_253892949"/><a id="property-draw_shadow-offset-x"/>draw:shadow-offset-x</h2><p class="Text_20_body">The <span class="Attribute">draw:shadow-offset-x</span> attribute along with the <span class="Attribute">draw:shadow-offset-y</span> attribute are used to render a shadow. </p><p class="Text_20_body">A copy of the shape is rendered in the single shadow color (specified by <span class="Attribute">draw:shadow-color</span>) behind the shape. The offset attributes specify the offset between the top left edge of the shape and the top left edge of the border.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:shadow-offset-x</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:shadow-offset-x</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_154draw_shadow-offset-y"><span style="margin-right:0.127cm;">20.154</span></a><a id="__RefHeading__1419736_253892949"/><a id="property-draw_shadow-offset-y"/>draw:shadow-offset-y</h2><p class="Text_20_body">The <span class="Attribute">draw:shadow-offset-y</span> attribute along with the <span class="Attribute">draw:shadow-offset-x</span> attribute are used to render a shadow. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:shadow-offset-y</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:shadow-offset-y</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_155draw_shadow-opacity"><span style="margin-right:0.127cm;">20.155</span></a><a id="__RefHeading__1419738_253892949"/><a id="property-draw_shadow-opacity"/>draw:shadow-opacity</h2><p class="Text_20_body">The <span class="Attribute">draw:shadow-opacity</span> attribute specifies the opacity in which the shadow is rendered. The value of this attribute is a percentage value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:shadow-opacity</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:shadow-opacity</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a20_156draw_show-unit"><span style="margin-right:0.127cm;">20.156</span></a><a id="__RefHeading__1419740_253892949"/><a id="property-draw_show-unit"/>draw:show-unit</h2><p class="Text_20_body">The <span class="Attribute">draw:show-unit</span> attribute specifies the visibility of a unit in the textual presentation of a measure shape.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:show-unit</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: units should not be visible in the textual presentation of a measure shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: units should be visible in the textual presentation of a measure shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:show-unit</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:show-unit</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_157draw_start-guide"><span style="margin-right:0.127cm;">20.157</span></a><a id="__RefHeading__1419742_253892949"/><a id="property-draw_start-guide"/>draw:start-guide</h2><p class="Text_20_body">The <span class="Attribute">draw:start-guide</span> attribute specifies a length that is added to the length of a start extension line. The extension line is extended by this length towards the start reference point. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-guide</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-guide</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_158draw_start-line-spacing-horizontal"><span style="margin-right:0.127cm;">20.158</span></a><a id="__RefHeading__1419744_253892949"/><a id="property-draw_start-line-spacing-horizontal"/>draw:start-line-spacing-horizontal</h2><p class="Text_20_body">The <span class="Attribute">draw:start-line-spacing-horizontal</span> attribute increments the length of the leaving line from the start shape for standard connectors. For lines connectors, these attributes specify the absolute length of the leaving line from the start shape. For other connector types, they are ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-line-spacing-horizontal</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-line-spacing-horizontal</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_159draw_start-line-spacing-vertical"><span style="margin-right:0.127cm;">20.159</span></a><a id="__RefHeading__1419746_253892949"/><a id="property-draw_start-line-spacing-vertical"/>draw:start-line-spacing-vertical</h2><p class="Text_20_body">The <span class="Attribute">draw:start-line-spacing-vertical</span> attribute increments the length of the leaving line from the start shape for standard connectors. For lines connectors, these attributes specify the absolute length of the leaving line from the start shape. For other connector types, they are ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:start-line-spacing-vertical</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:start-line-spacing-vertical</span> attribute has the data type <span class="Datatype">distance</span> <a href="#datatype-distance">18.3.15</a>.</p><h2 class="Heading_20_2"><a id="a20_160draw_stroke"><span style="margin-right:0.127cm;">20.160</span></a><a id="__RefHeading__1419748_253892949"/><a id="property-draw_stroke"/>draw:stroke</h2><p class="Text_20_body">The <span class="Attribute">draw:stroke</span> attribute specifies the style of the stroke on the current object. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:stroke</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dash</span>: stroke referenced by a <span class="Attribute">draw:stroke-dash</span> attribute of a style on the object is drawn.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no stroke is drawn.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: solid stroke is drawn.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:stroke</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:stroke</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">dash</span> or <span class="Attribute_20_Value">solid</span>.</p><h2 class="Heading_20_2"><a id="a20_161draw_stroke-dash"><span style="margin-right:0.127cm;">20.161</span></a><a id="__RefHeading__1419750_253892949"/><a id="property-draw_stroke-dash"/>draw:stroke-dash</h2><p class="Text_20_body">The <span class="Attribute">draw:stroke-dash</span> attribute specifies the dash style that is used for a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:stroke-dash</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:stroke-dash</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_162draw_stroke-dash-names"><span style="margin-right:0.127cm;">20.162</span></a><a id="__RefHeading__1419752_253892949"/><a id="property-draw_stroke-dash-names"/>draw:stroke-dash-names</h2><p class="Text_20_body">The <span class="Attribute">draw:stroke-dash-names</span> attribute specifies a list of dash styles that are used for the stroke in addition to the dash specified by the <span class="Attribute">draw:stroke-dash</span> attribute.</p><p class="Text_20_body">For each dash style referenced by the attribute a stroke using that dash style is drawn on top of the already drawn strokes. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:stroke-dash-names</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:stroke-dash-names</span> attribute has the data type <span class="Datatype">styleNameRefs</span> <a href="#datatype-styleNameRefs">18.3.33</a>.</p><h2 class="Heading_20_2"><a id="a20_163draw_stroke-linejoin"><span style="margin-right:0.127cm;">20.163</span></a><a id="__RefHeading__1419754_253892949"/><a id="property-draw_stroke-linejoin"/>draw:stroke-linejoin</h2><p class="Text_20_body">The <span class="Attribute">draw:stroke-linejoin</span> attribute specifies the shape at the corners of paths or other vector shapes when they are stroked. </p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:stroke-linejoin</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bevel</span>: See §11.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">middle</span>: mean value between joins is used (deprecated)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">miter</span><span class="Definition">: See §11.4 of </span><span class="Definition"><a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a></span><span class="Definition">.</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no shape specified.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">round</span>: See §11.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:stroke-linejoin</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:stroke-linejoin</span> attribute are <span class="Attribute_20_Value">miter</span>, <span class="Attribute_20_Value">round</span>, <span class="Attribute_20_Value">bevel</span>, <span class="Attribute_20_Value">middle</span> or <span class="Attribute_20_Value">none</span>.</p><h2 class="Heading_20_2"><a id="a20_164svg_stroke-linecap"><span style="margin-right:0.127cm;">20.164</span></a><a id="__RefHeading__1419756_253892949"/><a id="property-svg_stroke-linecap"/>svg:stroke-linecap</h2><p class="Text_20_body">The <span class="Attribute">svg:stroke-linecap</span> attribute specifies the shape of the end of open subpaths when they are stroked. </p><p class="Text_20_body">The defined values for the <span class="Attribute">svg:stroke-linecap</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">butt</span>: See §11.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">round</span>: See §11.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">square</span>: See §11.4 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stroke-linecap</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:stroke-linecap</span> attribute are <span class="Attribute_20_Value">butt</span>, <span class="Attribute_20_Value">square</span> or <span class="Attribute_20_Value">round</span>.</p><h2 class="Heading_20_2"><a id="a20_165draw_symbol-color"><span style="margin-right:0.127cm;">20.165</span></a><a id="__RefHeading__1419758_253892949"/><a id="property-draw_symbol-color"/>draw:symbol-color</h2><p class="Text_20_body">The <span class="Attribute">draw:symbol-color</span> attribute defines the color to be used to draw symbols contained on the drawing object.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:symbol-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:symbol-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_166draw_textarea-horizontal-align"><span style="margin-right:0.127cm;">20.166</span></a><a id="__RefHeading__1419760_253892949"/><a id="property-draw_textarea-horizontal-align"/>draw:textarea-horizontal-align</h2><p class="Text_20_body">The <span class="Attribute">draw:textarea-horizontal-align</span> attribute specifies the horizontal alignment of the text area inside a shape.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:textarea-horizontal-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: text area is centered horizontally inside a shape. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">j</span><span class="Attribute_20_Value">ustify</span>: text area is justified horizontally inside a shape. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">eft</span>: text area is left aligned horizontally inside a shape. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ight</span>: text area is right aligned horizontally inside a shape. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:textarea-horizontal-align</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:textarea-horizontal-align</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span> or <span class="Attribute_20_Value">justify</span>.</p><h2 class="Heading_20_2"><a id="a20_167draw_textarea-vertical-align"><span style="margin-right:0.127cm;">20.167</span></a><a id="__RefHeading__1419762_253892949"/><a id="property-draw_textarea-vertical-align"/>draw:textarea-vertical-align</h2><p class="Text_20_body">The <span class="Attribute">draw:textarea-vertical-align</span> attribute specifies the vertical alignment of the text area inside a shape.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:textarea-vertical-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: vertical alignment of text area inside a shape should start at the bottom of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">j</span><span class="Attribute_20_Value">ustify</span>: vertical alignment of text area inside a shape should be justified.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">middle</span>: vertical alignment of text area inside a shape should start at the middle of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">op</span>: vertical alignment of text area inside a shape should start at the top of the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:textarea-vertical-align</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:textarea-vertical-align</span> attribute are <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">middle</span>, <span class="Attribute_20_Value">bottom</span> or <span class="Attribute_20_Value">justify</span>.</p><h2 class="Heading_20_2"><a id="a20_168draw_tile-repeat-offset"><span style="margin-right:0.127cm;">20.168</span></a><a id="__RefHeading__1419764_253892949"/><a id="property-draw_tile-repeat-offset"/>draw:tile-repeat-offset</h2><p class="Text_20_body">The <span class="Attribute">draw:tile-repeat-offset</span> attribute specifies for tiling the translation of each tile in relation to the previous tile. This attribute is only interpreted if the value of the current <span class="Attribute">style:repeat</span> attribute is <span class="Attribute_20_Value">repeat</span>. The value of this attribute is a percentage value representing the tiles repeat offset relative to the tiles height or width, followed by either the word <span class="Attribute_20_Value">horizontal</span> or <span class="Attribute_20_Value">vertical</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:tile-repeat-offset</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal</span>: images are tiled horizontally with regard to the previous tile.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: images are tiled vertically with regard to the previous tile.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:tile-repeat-offset</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:tile-repeat-offset</span> attribute has two white space separated values. The first value is of type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>. The second value is one of: <span class="Attribute_20_Value">horizontal</span> or <span class="Attribute_20_Value">vertical</span>.</p><h2 class="Heading_20_2"><a id="a20_169draw_visible-area-height"><span style="margin-right:0.127cm;">20.169</span></a><a id="__RefHeading__1419766_253892949"/><a id="property-draw_visible-area-height"/>draw:visible-area-height</h2><p class="Text_20_body">The visible area of an object may be specified by the <span class="Attribute">draw:visible-area-height</span> attribute along with the <span class="Attribute">draw:visible-area-left</span>, <span class="Attribute">draw:visible-area-top</span>, <span class="Attribute">draw:visible-</span><span class="Attribute">area-width</span> attributes. It is implementation-defined whether these attributes are used to specify the visible area, or whether the producer of the object stores the visible area within the object itself. </p><p class="Text_20_body">When the entire object is visible, the values of the <span class="Attribute">draw:visible-area-left</span> and <span class="Attribute">draw:visible-area-top</span> attributes are <span class="Attribute_20_Value_20_Instance">0</span> and the <span class="Attribute">draw:visible-area-width</span> and <span class="Attribute">draw:visible-area-height</span> attributes specify the size of the object. These attributes can be assigned to automatic styles only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:visible-area-height</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:visible-area-height</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_170draw_visible-area-left"><span style="margin-right:0.127cm;">20.170</span></a><a id="__RefHeading__1419768_253892949"/><a id="property-draw_visible-area-left"/>draw:visible-area-left</h2><p class="Text_20_body">The visible area of an object may be specified by the <span class="Attribute">draw:visible-area-left</span> attribute along with the <span class="Attribute">draw:visible-area-height</span>, <span class="Attribute">draw:visible-area-top</span>, <span class="Attribute">draw:visible-area-width</span> attributes. It is implementation-defined whether these attributes are used to specify the visible area, or whether the producer of the object stores the visible area within the object itself. </p><p class="Text_20_body">When the entire object is visible, the values of the <span class="Attribute">draw:visible-area-left</span> and <span class="Attribute">draw:visible-area-top</span> attributes are <span class="Attribute_20_Value_20_Instance">0</span> and the <span class="Attribute">draw:visible-area-width</span> and <span class="Attribute">draw:visible-area-height</span> attributes specify the size of the object. These attributes can be assigned to automatic styles only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:visible-area-left</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:visible-area-left</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_171draw_visible-area-top"><span style="margin-right:0.127cm;">20.171</span></a><a id="__RefHeading__1419770_253892949"/><a id="property-draw_visible-area-top"/>draw:visible-area-top</h2><p class="Text_20_body">The visible area of an object may be specified by the <span class="Attribute">draw:visible-area-top</span> attribute along with the <span class="Attribute">draw:visible-area-left</span>, <span class="Attribute">draw:visible-area-height</span>, <span class="Attribute">draw:visible-area-width</span> attributes. It is implementation-defined whether these attributes are used to specify the visible area, or whether the producer of the object stores the visible area within the object itself. </p><p class="Text_20_body">When the entire object is visible, the values of the <span class="Attribute">draw:visible-area-left</span> and <span class="Attribute">draw:visible-area-top</span> attributes are <span class="Attribute_20_Value_20_Instance">0</span> and the <span class="Attribute">draw:visible-area-width</span> and <span class="Attribute">draw:visible-area-height</span> attributes specify the size of the object. These attributes can be assigned to automatic styles only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:visible-area-top</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:visible-area-top</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_172draw_visible-area-width"><span style="margin-right:0.127cm;">20.172</span></a><a id="__RefHeading__1419772_253892949"/><a id="property-draw_visible-area-width"/>draw:visible-area-width</h2><p class="Text_20_body">The visible area of an object may be specified by the <span class="Attribute">draw:visible-area-width</span> attribute along with the <span class="Attribute">draw:visible-area-left</span>, <span class="Attribute">draw:visible-area-top</span>, <span class="Attribute">draw:visible-</span><span class="Attribute">area-height</span> attributes. It is implementation-defined whether these attributes are used to specify the visible area, or whether the producer of the object stores the visible area within the object itself. </p><p class="Text_20_body">When the entire object is visible, the values of the <span class="Attribute">draw:visible-area-left</span> and <span class="Attribute">draw:visible-area-top</span> attributes are <span class="Attribute_20_Value_20_Instance">0</span> and the <span class="Attribute">draw:visible-area-width</span> and <span class="Attribute">draw:visible-area-height</span> attributes specify the size of the object. These attributes can be assigned to automatic styles only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:visible-area-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">draw:visible-area-width</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_173draw_unit"><span style="margin-right:0.127cm;">20.173</span></a><a id="__RefHeading__1419774_253892949"/><a id="property-draw_unit"/>draw:unit</h2><p class="Text_20_body">The <span class="Attribute">draw:unit</span> attribute specifies the unit of measurement used in the textual presentation of a measure shape.</p><p class="Text_20_body">The defined values for the <span class="Attribute">draw:unit</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: unit of measurement chosen by consumer. <span class="odfLiEnd"/> </p></li><li><p class="P24" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">mm</span>: millimeter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">m</span>: centimeter.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span>: meter<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">km</span>: kilometer.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">t</span>: point.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">pc</span>: pica.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inch</span>: inch.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">t</span>: foot.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span><span class="Attribute_20_Value">i</span>: mile.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:unit</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:unit</span> attribute are <span class="Attribute_20_Value">automatic</span>, <span class="Attribute_20_Value">mm</span>, <span class="Attribute_20_Value">cm</span>, <span class="Attribute_20_Value">m</span>, <span class="Attribute_20_Value">km</span>, <span class="Attribute_20_Value">pt</span>, <span class="Attribute_20_Value">pc</span>, <span class="Attribute_20_Value">inch</span>, <span class="Attribute_20_Value">ft</span> or <span class="Attribute_20_Value">mi</span>.</p><h2 class="Heading_20_2"><a id="a20_174draw_wrap-influence-on-position"><span style="margin-right:0.127cm;">20.174</span></a><a id="__RefHeading__1419776_253892949"/><a id="property-draw_wrap-influence-on-position"/>draw:wrap-influence-on-position</h2><p class="Text_20_body">The <span class="Attribute">draw:wrap-influence-on-position</span> attribute specifies placement options for two or more frames or graphic objects with <span class="Attribute">style:wrap</span> properties that influence the placement of the other object. (<a href="#property-style_wrap">20.390</a>) It is intended as a hint to the layout algorithm to help determine the placement of frames in cases where several correct placements are possible.</p><p class="Text_20_body">The situation in which this attribute makes a difference is when the anchor, position and wrapping mode of a frame influence each other. For example, consider a paragraph of text with two images positioned above the anchor. Without wrapping, the images overlie the text and can simply be placed at the given offset from the anchor.</p><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is a draw:frame.--><div style="width:3.1492in; padding:0; " class="fr2" id="Frame2"><!--Next 'div' was a 'draw:text-box'.--><div style="min-height:0.1965in;"><div class="Figure"><!--Next 'div' is a draw:frame.--><div style="height:0.8189in;width:0.7874in; padding:0; " class="fr5" id="graphics2"><img style="height:2.08cm;width:2cm;" alt="" src="./Pictures/100000000000009A0000009122A8E996.png"/></div></div><p class="Figure">Figure <a id="refFigure1"/>2 - Image positions without wrapping</p></div></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><p class="Text_20_body">If wrap-around is enabled, the text hidden behind the images now should flow around the images, making the first paragraph use more space than previously. This moves the anchor position further down. If the placement is only done once and concurrently for all objects, this is the final result. This corresponds to the object <span class="Source_20_Text">once-concurrently</span>.</p><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is a draw:frame.--><div style="width:3.1492in; padding:0; " class="fr3" id="Frame3"><!--Next 'div' was a 'draw:text-box'.--><div style="min-height:0.1965in;"><div class="Figure"><!--Next 'div' is a draw:frame.--><div style="height:0.8189in;width:0.7874in; padding:0; " class="fr5" id="graphics3"><img style="height:2.08cm;width:2cm;" alt="" src="./Pictures/100000000000009A000000A052ACB0F4.png"/></div></div><p class="Figure">Figure <a id="refFigure2"/>3 - Image positions for “once-concurrently”</p></div></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><p class="Text_20_body">If one image is processed at a time, the position shown Figure <a href="#refFigure4">5</a> results. This corresponds to the option <span class="Source_20_Text">once-successive</span>.</p><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is a draw:frame.--><div style="width:3.1492in; padding:0; " class="fr3" id="Frame4"><!--Next 'div' was a 'draw:text-box'.--><div style="min-height:0.1965in;"><div class="Figure"><!--Next 'div' is a draw:frame.--><div style="height:0.8189in;width:0.7874in; padding:0; " class="fr5" id="graphics4"><img style="height:2.08cm;width:2cm;" alt="" src="./Pictures/100000000000009A000000A03132DB2D.png"/></div></div><p class="Figure">Figure <a id="refFigure3"/>4 - Image positions for “once-successive”</p></div></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><p class="Text_20_body">If the images are placed iteratively, until a position is found which corresponds to the given offset from the anchor, a placement that fully satisfies all the given layout formatting properties can be achieved. This corresponds to the option <span class="Source_20_Text">iterative</span>.</p><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is a draw:frame.--><div style="width:3.1492in; padding:0; " class="fr3" id="Frame5"><!--Next 'div' was a 'draw:text-box'.--><div style="min-height:0.1965in;"><div class="Figure"><!--Next 'div' is a draw:frame.--><div style="height:0.8189in;width:0.7874in; padding:0; " class="fr5" id="graphics5"><img style="height:2.08cm;width:2cm;" alt="" src="./Pictures/100000000000009A000000A0BDF285E0.png"/></div></div><p class="Figure">Figure <a id="refFigure4"/>5 - Image positions for iterative</p></div></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><p class="Text_20_body">The defined values for the <span class="Attribute">draw:wrap-influence-on-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">iterative</span>: images are placed iteratively until all specified layout formatting properties are satisfied.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">once-concurrent</span>: images are aligned with one another.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">o</span><span class="Attribute_20_Value">nce-successive</span>: subsequent image is placed after the preceding image.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">draw:wrap-influence-on-position</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">draw:wrap-influence-on-position</span> attribute are <span class="Attribute_20_Value">iterative</span>, <span class="Attribute_20_Value">once-concurrent</span> or <span class="Attribute_20_Value">once-successive</span>.</p><h2 class="Heading_20_2"><a id="a20_175fo_background-color"><span style="margin-right:0.127cm;">20.175</span></a><a id="__RefHeading__1419778_253892949"/><a id="property-fo_background-color"/>fo:background-color</h2><p class="Text_20_body">The <span class="Attribute">fo:background-color</span> attribute specifies a background color for characters, paragraphs, text sections, frames, page bodies, headers, footers, tables, table rows and tables. This can be transparent or a color. If the value is set to transparent, it switches off any background image that is specified by a <span class="Element">&lt;style:background-image&gt;</span>. <a href="#element-style_background-image">17.3</a></p><p class="Text_20_body">If a value for a <span class="Attribute">draw:fill</span> attribute is provided in a style, any background image that is specified by a <span class="Element">&lt;style:background-image&gt;</span> element and any background color that is specified with the <span class="Attribute">fo:background-color</span> attribute are switched off. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:background-color</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>, <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>, <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>, <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:background-color</span> attribute are <span class="Attribute_20_Value">transparent</span> or a value of type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_176fo_Border_Properties"><span style="margin-right:0.127cm;">20.176</span></a><a id="__RefHeading__1419780_253892949"/><a id="FO_Border_Properties"/>fo Border Properties</h2><h3 class="Heading_20_3"><a id="a20_176_1General"><span style="margin-right:0.127cm;">20.176.1</span></a><a id="__RefHeading__1419782_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">fo:border</span>, <span class="Attribute">fo:border-top</span>, <span class="Attribute">fo:border-bottom</span>, <span class="Attribute">fo:border-left</span> and <span class="Attribute">fo:border-right</span> attributes specify border properties for these elements:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:graphic-properties&gt;</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:header-footer-properties&gt;</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:page-layout-properties&gt;</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:paragraph-properties&gt;</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:table-cell-properties&gt;</span><span class="odfLiEnd"/> </p></li></ul><h3 class="Heading_20_3"><a id="a20_176_2fo_border"><span style="margin-right:0.127cm;">20.176.2</span></a><a id="__RefHeading__1419784_253892949"/><a id="property-fo_border"/>fo:border</h3><p class="Text_20_body">See §7.29.3 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:border</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:border</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a20_176_3fo_border-bottom"><span style="margin-right:0.127cm;">20.176.3</span></a><a id="__RefHeading__1419786_253892949"/><a id="property-fo_border-bottom"/>fo:border-bottom</h3><p class="Text_20_body">See §7.29.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:border-bottom</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:border-bottom</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a20_176_4fo_border-left"><span style="margin-right:0.127cm;">20.176.4</span></a><a id="__RefHeading__1419788_253892949"/><a id="property-fo_border-left"/>fo:border-left</h3><p class="Text_20_body">See §7.29.6 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:border-left</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:border-left</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a20_176_5fo_border-right"><span style="margin-right:0.127cm;">20.176.5</span></a><a id="__RefHeading__1419790_253892949"/><a id="property-fo_border-right"/>fo:border-right</h3><p class="Text_20_body">See §7.29.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:border-right</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:border-right</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h3 class="Heading_20_3"><a id="a20_176_6fo_border-top"><span style="margin-right:0.127cm;">20.176.6</span></a><a id="__RefHeading__1419792_253892949"/><a id="property-fo_border-top"/>fo:border-top</h3><p class="Text_20_body">See §7.29.10 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:border-top</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:border-top</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_177fo_break-after"><span style="margin-right:0.127cm;">20.177</span></a><a id="__RefHeading__1419794_253892949"/><a id="property-fo_break-after"/>fo:break-after</h2><p class="Text_20_body">See §7.19.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. The values <span class="Alien_20_Attribute_20_Value">odd-page</span> and <span class="Alien_20_Attribute_20_Value">even-page</span> are not supported.</p><p class="Text_20_body">This attribute shall not be used at the same time as <span class="Attribute">fo:break-before</span>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:break-after</span> attribute does not support <span class="Alien_20_Attribute_20_Value">even-page</span>, <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">odd-page</span> values. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:break-after</span> attribute is usable with the following elements: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>, <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a> and <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:break-after</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">page</span>.</p><h2 class="Heading_20_2"><a id="a20_178fo_break-before"><span style="margin-right:0.127cm;">20.178</span></a><a id="__RefHeading__1419796_253892949"/><a id="property-fo_break-before"/>fo:break-before</h2><p class="Text_20_body">See §7.19.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. The values <span class="Alien_20_Attribute_20_Value">odd-page</span> and <span class="Alien_20_Attribute_20_Value">even-page</span> are not supported.</p><p class="Text_20_body">This attribute shall not be used at the same time as <span class="Attribute">fo:break-after</span>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:break-before</span> attribute does not support <span class="Alien_20_Attribute_20_Value">even-page</span>, <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">odd-page</span> values. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:break-before</span> attribute is usable with the following elements: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>, <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a> and <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:break-before</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">column</span> or <span class="Attribute_20_Value">page</span>.</p><h2 class="Heading_20_2"><a id="a20_179fo_clip"><span style="margin-right:0.127cm;">20.179</span></a><a id="__RefHeading__1419798_253892949"/><a id="property-fo_clip"/>fo:clip</h2><p class="Text_20_body">See §7.20.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:clip</span> attribute does not support <span class="Attribute_20_Value_20_Fragment">em</span> and <span class="Attribute_20_Value_20_Fragment">px</span> values. </p><p class="Text_20_body">The defined value for the <span class="Attribute">fo:clip</span> attribute is a value of type <span class="Datatype">clipShape</span> <a href="#datatype-clipShape">18.3.8</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:clip</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:clip</span> attribute are <span class="Attribute_20_Value">auto</span> or a value of type <span class="Datatype">clipShape</span> <a href="#datatype-clipShape">18.3.8</a>.</p><h2 class="Heading_20_2"><a id="a20_180fo_color"><span style="margin-right:0.127cm;">20.180</span></a><a id="__RefHeading__1419800_253892949"/><a id="property-fo_color"/>fo:color</h2><p class="Text_20_body">See §7.17.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:color</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> value. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:color</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_181fo_country"><span style="margin-right:0.127cm;">20.181</span></a><a id="__RefHeading__1419802_253892949"/><a id="property-fo_country"/>fo:country</h2><p class="Text_20_body">See §7.9.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">It may be ignored if is not specified together with a <span class="Attribute">fo:language</span> attribute.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:country</span> attribute does not support <span class="Alien_20_Attribute_20_Value">none</span> or <span class="Alien_20_Attribute_20_Value">inherit</span> values. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:country</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:country</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a20_182fo_font-family"><span style="margin-right:0.127cm;">20.182</span></a><a id="__RefHeading__1419804_253892949"/><a id="property-fo_font-family"/>fo:font-family</h2><p class="Text_20_body">See §7.8.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:font-family</span> attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:font-family</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:font-family</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_183fo_font-size"><span style="margin-right:0.127cm;">20.183</span></a><a id="__RefHeading__1419806_253892949"/><a id="property-fo_font-size"/>fo:font-size</h2><p class="Text_20_body">See §7.8.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The value of this attribute is either an absolute length or a percentage as described in §7.8.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. In contrast to XSL, percentage values can be used within common styles only and are based on the font height of the parent style rather than to the font height of the attributes neighborhood. Absolute font heights and relative font heights are not supported.</p><p class="Note"><span class="Note_20_Label">Note:</span> The <span class="Attribute">style:font-size-asian</span> attribute (<a href="#property-style_font-size-asian">20.276</a>) is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a> The <span class="Attribute">style:font-size-complex</span> attribute (<a href="#property-style_font-size-complex">20.277</a>) is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:font-size</span> attribute does not support <span class="Alien_20_Attribute_20_Value">absolute-size</span>, <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">relative-size</span> values. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:font-size</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:font-size</span> attribute are a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_184fo_font-style"><span style="margin-right:0.127cm;">20.184</span></a><a id="__RefHeading__1419808_253892949"/><a id="property-fo_font-style"/>fo:font-style</h2><p class="Text_20_body">See §7.8.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:font-style</span> attribute does not support <span class="Alien_20_Attribute_20_Value">backslant</span> and <span class="Alien_20_Attribute_20_Value">inherit</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:font-style</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:font-style</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">italic</span> or <span class="Attribute_20_Value">oblique</span>.</p><h2 class="Heading_20_2"><a id="a20_185fo_font-variant"><span style="margin-right:0.127cm;">20.185</span></a><a id="__RefHeading__1419810_253892949"/><a id="property-fo_font-variant"/>fo:font-variant</h2><p class="Text_20_body">See §7.8.8 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:font-variant</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:font-variant</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:font-variant</span> attribute are <span class="Attribute_20_Value">normal</span> or <span class="Attribute_20_Value">small-caps</span>.</p><h2 class="Heading_20_2"><a id="a20_186fo_font-weight"><span style="margin-right:0.127cm;">20.186</span></a><a id="__RefHeading__1419812_253892949"/><a id="property-fo_font-weight"/>fo:font-weight</h2><p class="Text_20_body">See §7.8.9 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:font-weight</span> attribute does not support <span class="Alien_20_Attribute_20_Value">bolder</span>, <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">lighter</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:font-weight</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:font-weight</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">100</span>, <span class="Attribute_20_Value">200</span>, <span class="Attribute_20_Value">300</span>, <span class="Attribute_20_Value">400</span>, <span class="Attribute_20_Value">500</span>, <span class="Attribute_20_Value">600</span>, <span class="Attribute_20_Value">700</span>, <span class="Attribute_20_Value">800</span> or <span class="Attribute_20_Value">900</span>.</p><h2 class="Heading_20_2"><a id="a20_187fo_height"><span style="margin-right:0.127cm;">20.187</span></a><a id="__RefHeading__1419814_253892949"/><a id="property-fo_height"/>fo:height</h2><p class="Text_20_body">See §7.14.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:height</span> attribute is used with <span class="Attribute">fo:width</span> to set the size of a bullet image. </p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:height</span> attribute does not support <span class="Alien_20_Attribute_20_Value">auto</span>, <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">percentage</span> values. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:height</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:height</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_188fo_hyphenate"><span style="margin-right:0.127cm;">20.188</span></a><a id="__RefHeading__1419816_253892949"/><a id="property-fo_hyphenate"/>fo:hyphenate</h2><p class="Text_20_body">See §7.9.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:hyphenate</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> value. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:hyphenate</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:hyphenate</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_189fo_hyphenation-keep"><span style="margin-right:0.127cm;">20.189</span></a><a id="__RefHeading__1419818_253892949"/><a id="property-fo_hyphenation-keep"/>fo:hyphenation-keep</h2><p class="Text_20_body">See §7.15.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:hyphenation-keep</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:hyphenation-keep</span> attribute are <span class="Attribute_20_Value">auto</span> or <span class="Attribute_20_Value">page</span>.</p><h2 class="Heading_20_2"><a id="a20_190fo_hyphenation-ladder-count"><span style="margin-right:0.127cm;">20.190</span></a><a id="__RefHeading__1419820_253892949"/><a id="property-fo_hyphenation-ladder-count"/>fo:hyphenation-ladder-count</h2><p class="Text_20_body">See §7.15.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">fo:hyphenation-ladder-count</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no-limit</span>:<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:hyphenation-ladder-count</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:hyphenation-ladder-count</span> attribute are <span class="Attribute_20_Value">no-limit</span> or a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_191fo_hyphenation-push-char-count"><span style="margin-right:0.127cm;">20.191</span></a><a id="__RefHeading__1419822_253892949"/><a id="property-fo_hyphenation-push-char-count"/>fo:hyphenation-push-char-count</h2><p class="Text_20_body">See §7.9.6 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:hyphenation-push-char-count</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:hyphenation-push-char-count</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_192fo_hyphenation-remain-char-count"><span style="margin-right:0.127cm;">20.192</span></a><a id="__RefHeading__1419824_253892949"/><a id="property-fo_hyphenation-remain-char-count"/>fo:hyphenation-remain-char-count</h2><p class="Text_20_body">See §7.9.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:hyphenation-remain-char-count</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:hyphenation-remain-char-count</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_193fo_keep-together"><span style="margin-right:0.127cm;">20.193</span></a><a id="__RefHeading__1419826_253892949"/><a id="property-fo_keep-together"/>fo:keep-together</h2><p class="Text_20_body">See §7.19.3 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:keep-together</span> attribute does not support the <span class="Attribute_20_Value">integer</span> value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:keep-together</span> attribute is usable with the following elements: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:keep-together</span> attribute are <span class="Attribute_20_Value">auto</span> or <span class="Attribute_20_Value">always</span>.</p><h2 class="Heading_20_2"><a id="a20_194fo_keep-with-next"><span style="margin-right:0.127cm;">20.194</span></a><a id="__RefHeading__1419828_253892949"/><a id="property-fo_keep-with-next"/>fo:keep-with-next</h2><p class="Text_20_body">See §7.9.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:keep-with-next</span> attribute does not support the <span class="Attribute_20_Value">integer</span> value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:keep-with-next</span> attribute is usable with the following elements: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:keep-with-next</span> attribute are <span class="Attribute_20_Value">auto</span> or <span class="Attribute_20_Value">always</span>.</p><h2 class="Heading_20_2"><a id="a20_195fo_language"><span style="margin-right:0.127cm;">20.195</span></a><a id="__RefHeading__1419830_253892949"/><a id="property-fo_language"/>fo:language</h2><p class="Text_20_body">See §7.9.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. Compared to the XSL language attribute, the value range of this attribute is extended to additional parts of ISO 639. See <a href="#datatype-languageCode">18.3.17</a>.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute may be ignored if it is not specified together with a <span class="Attribute">fo:country</span> attribute.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:language</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">none</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:language</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:language</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h2 class="Heading_20_2"><a id="a20_196fo_letter-spacing"><span style="margin-right:0.127cm;">20.196</span></a><a id="__RefHeading__1419832_253892949"/><a id="property-fo_letter-spacing"/>fo:letter-spacing</h2><p class="Text_20_body">See §7.16.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:letter-spacing</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> and <span class="Alien_20_Attribute_20_Value">space</span> values.</p><p class="Text_20_body">The defined value for the <span class="Attribute">fo:letter-spacing</span> attribute is a value of type length <a href="#datatype-length">18.3.18</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:letter-spacing</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:letter-spacing</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or <span class="Attribute_20_Value">normal</span>.</p><h2 class="Heading_20_2"><a id="a20_197fo_line-height"><span style="margin-right:0.127cm;">20.197</span></a><a id="__RefHeading__1419834_253892949"/><a id="property-fo_line-height"/>fo:line-height</h2><p class="Text_20_body"> See §7.15.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The value <span class="Attribute_20_Value">normal</span> activates the default line height calculation. The value of this attribute can be a length, a percentage, <span class="Attribute_20_Value">normal</span>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:line-height</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span>, <span class="Alien_20_Attribute_20_Value">number</span>, and <span class="Alien_20_Attribute_20_Value">space</span> values.</p><p class="Text_20_body">The defined values for the <span class="Attribute">fo:line-height</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">normal</span>: disables the effects of <span class="Attribute">style:line-height-at-least</span> and <span class="Attribute">style:line-spacing</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:line-height</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:line-height</span> attribute are <span class="Attribute_20_Value">normal</span>, a value of type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_198fo_margin"><span style="margin-right:0.127cm;">20.198</span></a><a id="__RefHeading__1419836_253892949"/><a id="property-fo_margin"/>fo:margin</h2><p class="Text_20_body">See §7.29.14 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:margin</span> attribute does not support <span class="Alien_20_Attribute_20_Value">auto</span> and <span class="Alien_20_Attribute_20_Value">inherit</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:margin</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:margin</span> attribute are a value of type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_199fo_margin-bottom"><span style="margin-right:0.127cm;">20.199</span></a><a id="__RefHeading__1419838_253892949"/><a id="property-fo_margin-bottom"/>fo:margin-bottom</h2><p class="Text_20_body">See §7.10.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If this attribute is contained in a <span class="Element">&lt;style:paragraph-properties&gt;</span> element, its value may be a percentage that refers to the corresponding margin of a parent style. </p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:margin-bottom</span> attribute does not support the <span class="Alien_20_Attribute">auto</span> and <span class="Alien_20_Attribute">inherit</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:margin-bottom</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:margin-bottom</span> attribute are a value of type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_200fo_margin-left"><span style="margin-right:0.127cm;">20.200</span></a><a id="__RefHeading__1419840_253892949"/><a id="property-fo_margin-left"/>fo:margin-left</h2><p class="Text_20_body">See §7.10.3 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If this attribute is contained in a <span class="Element">&lt;style:paragraph-properties&gt;</span> element, its value may be a percentage that refers to the corresponding margin of a parent style. </p><p class="Text_20_body">Tables that align to the left or to the center ignore right margins, and tables that align to the right or to the center ignore left margins.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:margin-left</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:margin-left</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_201fo_margin-right"><span style="margin-right:0.127cm;">20.201</span></a><a id="__RefHeading__1419842_253892949"/><a id="property-fo_margin-right"/>fo:margin-right</h2><p class="Text_20_body">See §7.10.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If this attribute is contained in a <span class="Element">&lt;style:paragraph-properties&gt;</span> element, its value may be a percentage that refers to the corresponding margin of a parent style. </p><p class="Text_20_body">Tables that align to the left or to the center ignore right margins, and tables that align to the right or to the center ignore left margins.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:margin-right</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:margin-right</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_202fo_margin-top"><span style="margin-right:0.127cm;">20.202</span></a><a id="__RefHeading__1419844_253892949"/><a id="property-fo_margin-top"/>fo:margin-top</h2><p class="Text_20_body">See §7.10.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If this attribute is contained in a <span class="Element">&lt;style:paragraph-properties&gt;</span> element, its value may be a percentage that refers to the corresponding margin of a parent style. </p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:margin-top</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:margin-top</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:margin-top</span> attribute are a value of type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_203fo_max-height"><span style="margin-right:0.127cm;">20.203</span></a><a id="__RefHeading__1419846_253892949"/><a id="property-fo_max-height"/>fo:max-height</h2><p class="Text_20_body">The <span class="Attribute">fo:max-height</span> attribute specifies a default maximum height for new frames that are created using a graphics style. See <a href="#attribute-fo_max-height">19.238</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:max-height</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:max-height</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_204fo_max-width"><span style="margin-right:0.127cm;">20.204</span></a><a id="__RefHeading__1419848_253892949"/><a id="property-fo_max-width"/>fo:max-width</h2><p class="Text_20_body">The <span class="Attribute">fo:max-width</span> attribute specifies a default maximum width for new frames that are created using a graphics style. See <a href="#attribute-fo_max-width">19.239</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:max-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:max-width</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_205fo_min-height"><span style="margin-right:0.127cm;">20.205</span></a><a id="__RefHeading__1419850_253892949"/><a id="property-fo_min-height"/>fo:min-height</h2><h3 class="Heading_20_3"><a id="a20_205_1_style_graphic-properties_"><span style="margin-right:0.127cm;">20.205.1</span></a><a id="__RefHeading__1419852_253892949"/><a id="property-fo_min-height_element-style_graphic-properties"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:min-height</span> attribute specifies a default minimum height for new frames that are created using a graphics style. See <a href="#attribute-fo_min-height">19.240</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:min-height</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:min-height</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h3 class="Heading_20_3"><a id="a20_205_2_style_header-footer-properties_"><span style="margin-right:0.127cm;">20.205.2</span></a><a id="__RefHeading__1419854_253892949"/><a id="property-fo_min-height_element-style_header-footer-properties"/>&lt;style:header-footer-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:min-height</span> attribute specifies a minimum height for a header or footer.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:min-height</span> attribute is usable with the following element: <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:min-height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_206fo_min-width"><span style="margin-right:0.127cm;">20.206</span></a><a id="__RefHeading__1419856_253892949"/><a id="property-fo_min-width"/>fo:min-width</h2><p class="Text_20_body">The <span class="Attribute">fo:min-width</span> attribute specifies a default minimum width for new frames that are created using a graphics style. See <a href="#attribute-fo_min-width">19.241</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:min-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:min-width</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_207fo_orphans"><span style="margin-right:0.127cm;">20.207</span></a><a id="__RefHeading__1419858_253892949"/><a id="property-fo_orphans"/>fo:orphans</h2><p class="Text_20_body">See §7.19.6 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:orphans</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:orphans</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_208fo_page-height"><span style="margin-right:0.127cm;">20.208</span></a><a id="__RefHeading__1419860_253892949"/><a id="property-fo_page-height"/>fo:page-height</h2><p class="Text_20_body">See §7.25.13 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:page-height</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:page-height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_209fo_page-width"><span style="margin-right:0.127cm;">20.209</span></a><a id="__RefHeading__1419862_253892949"/><a id="property-fo_page-width"/>fo:page-width</h2><p class="Text_20_body">See §7.25.15 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:page-width</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:page-width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_210fo_padding"><span style="margin-right:0.127cm;">20.210</span></a><a id="__RefHeading__1419864_253892949"/><a id="property-fo_padding"/>fo:padding</h2><p class="Text_20_body">See §7.29.15 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:padding</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:padding</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_211fo_padding-bottom"><span style="margin-right:0.127cm;">20.211</span></a><a id="__RefHeading__1419866_253892949"/><a id="property-fo_padding-bottom"/>fo:padding-bottom</h2><p class="Text_20_body">See §7.7.36 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:padding-bottom</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:padding-bottom</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_212fo_padding-left"><span style="margin-right:0.127cm;">20.212</span></a><a id="__RefHeading__1419868_253892949"/><a id="property-fo_padding-left"/>fo:padding-left</h2><p class="Text_20_body">See §7.7.37 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:padding-left</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:padding-left</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_213fo_padding-right"><span style="margin-right:0.127cm;">20.213</span></a><a id="__RefHeading__1419870_253892949"/><a id="property-fo_padding-right"/>fo:padding-right</h2><p class="Text_20_body">See §7.7.38 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:padding-right</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:padding-right</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_214fo_padding-top"><span style="margin-right:0.127cm;">20.214</span></a><a id="__RefHeading__1419872_253892949"/><a id="property-fo_padding-top"/>fo:padding-top</h2><p class="Text_20_body">See §7.7.35 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:padding-top</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:padding-top</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_215fo_script"><span style="margin-right:0.127cm;">20.215</span></a><a id="__RefHeading__1419874_253892949"/><a id="property-fo_script"/>fo:script</h2><p class="Text_20_body">See §7.9.3 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">The attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">It may be ignored if is not specified together with a <span class="Attribute">fo:language</span> attribute.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:script</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> or <span class="Alien_20_Attribute_20_Value">none</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:script</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:script</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h2 class="Heading_20_2"><a id="a20_216fo_text-align"><span style="margin-right:0.127cm;">20.216</span></a><a id="__RefHeading__1419876_253892949"/><a id="property-fo_text-align"/>fo:text-align</h2><p class="Text_20_body">See §7.15.9 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">If there are no values specified for the <span class="Attribute">fo:text-align</span> and <span class="Attribute">style:justify-single-word</span> attributes within the same formatting properties element, the values of those attributes is set to <span class="Attribute_20_Value">start</span> and <span class="Attribute_20_Value">false</span> respectively.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:text-align</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span>, <span class="Alien_20_Attribute_20_Value">inside</span>, <span class="Alien_20_Attribute_20_Value">outside</span>, or <span class="Alien_20_Attribute_20_Value">string</span> values.</p><h3 class="Heading_20_3"><a id="a20_216_1_style_paragraph-properties_"><span style="margin-right:0.127cm;">20.216.1</span></a><a id="__RefHeading__1419878_253892949"/><a id="property-fo_text-align_element-style_paragraph-properties"/>&lt;style:paragraph-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:text-align</span> attribute when used with the <span class="Element">&lt;style:paragraph-properties&gt;</span> element specifies the alignment of paragraphs in a text. </p><p class="Text_20_body">The values of <span class="Attribute_20_Value">start</span> and <span class="Attribute_20_Value">end</span> are interpreted according to the writing direction of the text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-align</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:text-align</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">end</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">justify</span>.</p><h3 class="Heading_20_3"><a id="a20_216_2_style_list-level-properties_"><span style="margin-right:0.127cm;">20.216.2</span></a><a id="__RefHeading__1419880_253892949"/><a id="property-fo_text-align_element-style_list-level-properties"/>&lt;style:list-level-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">fo:text-align</span> attribute when used with the <span class="Element">&lt;style:list-level-properties&gt;</span> elements specifies the alignment of list labels. </p><p class="Text_20_body">If the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute on the same <span class="Element">&lt;style:list-level-properties&gt;</span> element has the value <span class="Attribute_20_Value">label-width-and-position</span>, the <span class="Attribute">fo:text-align</span> attribute specifies the horizontal alignment of the list label within the width specified by the <span class="Attribute">text:min-label-width</span> attribute. If the actual width of the list label is greater than the specified minimum width no alignment takes place.</p><p class="Text_20_body">If the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute on the same <span class="Element">&lt;style:list-level-properties&gt;</span> element has the value <span class="Attribute_20_Value">label-alignment</span>, the value of the <span class="Attribute">text:min-label-width</span> attribute is treated as 0 and the <span class="Attribute">fo:text-align</span> attribute specifies the horizontal alignment of the list label at the alignment position. The alignment position is specified by the <span class="Attribute">fo:margin-left</span> and <span class="Attribute">fo:text-indent</span> attributes of it child element <span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">fo:text-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: center of the list label is positioned at the alignment position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">nd</span>: interpreted as <span class="Attribute">fo:text-align</span>=”<span class="Attribute_20_Value">right</span>”<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">justify</span>: label is justified.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: list label starts at the alignment position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: list label ends at the alignment position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">tart</span>: interpreted as <span class="Attribute">fo:text-align</span>=”<span class="Attribute_20_Value">left</span>”.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-align</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:text-align</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">end</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">justify</span>.</p><h2 class="Heading_20_2"><a id="a20_217fo_text-align-last"><span style="margin-right:0.127cm;">20.217</span></a><a id="__RefHeading__1419882_253892949"/><a id="property-fo_text-align-last"/>fo:text-align-last</h2><p class="Text_20_body">See §7.15.10 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is ignored if it not accompanied by an <span class="Attribute">fo:text-align</span> attribute.</p><p class="Text_20_body">If no value is specified for this attribute, the value is set to start. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-align-last</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:text-align-last</span> attribute are <span class="Attribute_20_Value">start</span>, <span class="Attribute_20_Value">center</span> or <span class="Attribute_20_Value">justify</span>.</p><h2 class="Heading_20_2"><a id="a20_218fo_text-indent"><span style="margin-right:0.127cm;">20.218</span></a><a id="__RefHeading__1419884_253892949"/><a id="property-fo_text-indent"/>fo:text-indent</h2><p class="Text_20_body">The <span class="Attribute">fo:text-indent</span> attribute specifies a positive or negative indent for the first line of a paragraph. See §7.15.11 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. The attribute value is a length. If the attribute is contained in a common style, the attribute value may be also a percentage that refers to the corresponding text indent of a parent style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-indent</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:text-indent</span> attribute are a value of type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_219fo_text-shadow"><span style="margin-right:0.127cm;">20.219</span></a><a id="__RefHeading__1419886_253892949"/><a id="property-fo_text-shadow"/>fo:text-shadow</h2><p class="Text_20_body">The <span class="Attribute">fo:text-shadow</span> attribute specifies the text shadow style to use. </p><p class="Text_20_body">The defined values for this attribute are those defined in §7.16.5 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>, except the value <span class="Alien_20_Attribute_20_Value">inherit</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-shadow</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:text-shadow</span> attribute are <span class="Attribute_20_Value">none</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_220fo_text-transform"><span style="margin-right:0.127cm;">20.220</span></a><a id="__RefHeading__1419888_253892949"/><a id="property-fo_text-transform"/>fo:text-transform</h2><p class="Text_20_body">See §7.16.6 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. </p><p class="Text_20_body">If <span class="Attribute">fo:text-transform</span> and <span class="Attribute">fo:font-variant</span> attributes are used simultaneously and have different values than <span class="Attribute_20_Value">normal</span> and <span class="Attribute_20_Value">none</span>, the result is undefined.</p><p class="Note"><span class="Note_20_Label">Note:</span> In consumers, the <span class="Attribute">fo:text-transform</span> and <span class="Attribute">fo:font-variant</span> attributes are mutually exclusive.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:text-transform</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:text-transform</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">lowercase</span>, <span class="Attribute_20_Value">uppercase</span> or <span class="Attribute_20_Value">capitalize</span>.</p><h2 class="Heading_20_2"><a id="a20_221fo_widows"><span style="margin-right:0.127cm;">20.221</span></a><a id="__RefHeading__1419890_253892949"/><a id="property-fo_widows"/>fo:widows</h2><p class="Text_20_body">See §7.19.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:widows</span> attribute specifies the minimum number of lines that shall be displayed at the top of a page to avoid paragraph widows.</p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:widows</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">inherit</span> value.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:widows</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:widows</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_222fo_width"><span style="margin-right:0.127cm;">20.222</span></a><a id="__RefHeading__1419892_253892949"/><a id="property-fo_width"/>fo:width</h2><p class="Text_20_body">See §7.14.12 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The <span class="Attribute">fo:width</span> attribute is used with <span class="Attribute">fo:height</span> to set the size of a bullet image. </p><p class="Text_20_body">In the OpenDocument XSL compatible namespace, the <span class="Attribute">fo:width</span> attribute does not support the <span class="Alien_20_Attribute_20_Value">auto</span> or <span class="Alien_20_Attribute_20_Value">inherit</span> values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:width</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">fo:width</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_223fo_wrap-option"><span style="margin-right:0.127cm;">20.223</span></a><a id="__RefHeading__1419894_253892949"/><a id="property-fo_wrap-option"/>fo:wrap-option</h2><p class="Text_20_body">See §7.15.13 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. </p><p class="Text_20_body">If wrapping is disabled, it is implementation-defined whether the overflow  text is visible or hidden. If the text is hidden consumers may support a scrolling to access the text. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">fo:wrap-option</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">fo:wrap-option</span> attribute are <span class="Attribute_20_Value">no-wrap</span> or <span class="Attribute_20_Value">wrap</span>.</p><h2 class="Heading_20_2"><a id="a20_224presentation_background-objects-visible"><span style="margin-right:0.127cm;">20.224</span></a><a id="__RefHeading__1419896_253892949"/><a id="property-presentation_background-objects-visible"/>presentation:background-objects-visible</h2><p class="Text_20_body">The <span class="Attribute">presentation:background-objects-visible</span> attribute specifies whether to display objects in the background of a master page when displaying a presentation page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:background-objects-visible</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: objects in background of a master page should not be displayed when displaying a presentation page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: objects in background of a master page should be displayed when displaying a presentation page.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:background-objects-visible</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:background-objects-visible</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_225presentation_background-visible"><span style="margin-right:0.127cm;">20.225</span></a><a id="__RefHeading__1419898_253892949"/><a id="property-presentation_background-visible"/>presentation:background-visible</h2><p class="Text_20_body">The <span class="Attribute">presentation:background-visible</span> attribute specifies whether to display the background of a master page when displaying a presentation page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:background-visible</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: background of a master page should not be displayed when displaying a presentation page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: background of a master page should be displayed when displaying a presentation page.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:background-visible</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:background-visible</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_226presentation_display-date-time"><span style="margin-right:0.127cm;">20.226</span></a><a id="__RefHeading__1419900_253892949"/><a id="property-presentation_display-date-time"/>presentation:display-date-time</h2><p class="Text_20_body">The <span class="Attribute">presentation:display-date-time</span> attribute specifies the visibility of from the <span class="Element">&lt;style:master-page&gt;</span> element with the presentation class <span class="Attribute_20_Value">date-time</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:display-date-time</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: drawing shape from a <span class="Element">&lt;style:master-page&gt;</span> element with the presentation class <span class="Attribute_20_Value">date-time</span> should not be visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: drawing shape from a <span class="Element">&lt;style:master-page&gt;</span> element with the presentation class <span class="Attribute_20_Value">date-time</span> should be visible.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:display-date-time</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:display-date-time</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_227presentation_display-footer"><span style="margin-right:0.127cm;">20.227</span></a><a id="__RefHeading__1419902_253892949"/><a id="property-presentation_display-footer"/>presentation:display-footer</h2><p class="Text_20_body">The <span class="Attribute">presentation:display-footer</span> attribute specifies the visibility of a drawing shape used as a footer in a <span class="Element">&lt;style:master-page&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:display-footer</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: drawing shape used as a footer of a <span class="Element">&lt;style:master-page&gt;</span> element should not be visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: drawing shape used as a footer of a <span class="Element">&lt;style:master-page&gt;</span> element should be visible.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:display-footer</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:display-footer</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_228presentation_display-header"><span style="margin-right:0.127cm;">20.228</span></a><a id="__RefHeading__1419904_253892949"/><a id="property-presentation_display-header"/>presentation:display-header</h2><p class="Text_20_body">The <span class="Attribute">presentation:display-header</span> attribute specifies the visibility of a drawing shape used as a header in a <span class="Element">&lt;style:master-page&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:display-header</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: drawing shape used as a header of a <span class="Element">&lt;style:master-page&gt;</span> element should not be visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: drawing shape used as a header of a <span class="Element">&lt;style:master-page&gt;</span> element should be visible.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:display-header</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:display-header</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_229presentation_display-page-number"><span style="margin-right:0.127cm;">20.229</span></a><a id="__RefHeading__1419906_253892949"/><a id="property-presentation_display-page-number"/>presentation:display-page-number</h2><p class="Text_20_body">The <span class="Attribute">presentation:display-page-number</span> attribute specifies the visibility of a drawing shape used as a page number in a <span class="Element">&lt;style:master-page&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:display-page-number</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: drawing shape used as a page number of a <span class="Element">&lt;style:master-page&gt;</span> element should not be visible.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: drawing shape used as a page number of a <span class="Element">&lt;style:master-page&gt;</span> element should be visible.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:display-page-number</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:display-page-number</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_230presentation_duration"><span style="margin-right:0.127cm;">20.230</span></a><a id="__RefHeading__1419908_253892949"/><a id="property-presentation_duration"/>presentation:duration</h2><p class="Text_20_body">The <span class="Attribute">presentation:duration</span> attribute specifies the amount of time that the presentation page is displayed. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:duration</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">presentation:duration</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_231presentation_transition-speed"><span style="margin-right:0.127cm;">20.231</span></a><a id="__RefHeading__1419910_253892949"/><a id="property-presentation_transition-speed"/>presentation:transition-speed</h2><p class="Text_20_body">The <span class="Attribute">presentation:transition-speed</span> attribute specifies the speed at which a presentation page is removed from display, and replaced by a new presentation page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:transition-speed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fast</span>: An implementation-defined speed. The <span class="Attribute_20_Value">fast</span> speed should be faster than the speed the consumer chooses for the values <span class="Attribute_20_Value">medium</span> and <span class="Attribute_20_Value">slow</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">medium</span>:An implementation-defined speed. The <span class="Attribute_20_Value">medium</span> speed should be faster than the speed the consumer chooses for the value <span class="Attribute_20_Value">slow</span>, and slower than the speed the consumer chooses for the value <span class="Attribute_20_Value">fast</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">slow</span>: An implementation-defined speed. The <span class="Attribute_20_Value">slow</span> speed should be slower than the speed the consumer chooses for the values <span class="Attribute_20_Value">medium</span> and <span class="Attribute_20_Value">fast</span>. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:transition-speed</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:transition-speed</span> attribute are <span class="Attribute_20_Value">slow</span>, <span class="Attribute_20_Value">medium</span> or <span class="Attribute_20_Value">fast</span>.</p><h2 class="Heading_20_2"><a id="a20_232presentation_transition-style"><span style="margin-right:0.127cm;">20.232</span></a><a id="__RefHeading__1419912_253892949"/><a id="property-presentation_transition-style"/>presentation:transition-style</h2><p class="Text_20_body">The <span class="Attribute">presentation:transition-style</span> attribute specifies the way that each presentation page replaces the previous presentation page. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:transition-style</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">clockwise</span>: page is uncovered by the hand of a watch, moving clockwise.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">close</span>: Combination of close-horizontal and close-vertical.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">close-horizontal</span>: page is uncovered by drawing it line by line horizontally starting at the edge of the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">close-vertical</span>: page is uncovered by drawing it line by line vertically starting at the edge of the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">counterclockwise</span>: page is uncovered by the hand of a watch, moving counterclockwise.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dissolve</span>: page is faded in by drawing small blocks in a random fashion.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-bottom</span>: page fades from a visible or hidden state to a hidden or visible state to the bottom of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-left</span>: page fades from a visible or hidden state to a hidden or visible state to the left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-right</span>: pages fade from a visible or hidden state to a hidden or visible state to the right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-top</span>: page fades from a visible or hidden state to a hidden or visible state to the top of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-lowerleft</span>: page fades from a visible or hidden state to a hidden or visible state to the lower left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-lowerright</span>: page fades from a visible or hidden state to a hidden or visible state to the lower right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-upperleft</span>: page fades from a visible or hidden state to a hidden or visible state to the upper left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-upperright</span>: page fades from a visible or hidden state to a hidden or visible state to the upper right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-from-center</span>: page fades from a visible or hidden state to a hidden or visible state from the center of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fade-to-center</span>: page fades from a visible or hidden state to a hidden or visible state to the center of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fly-away</span>: page first reduces itself to a smaller size (while remaining centered in the screen), and then "flies away" (turns around and moves to the bottom-right corner of the screen). The next slide appears under it meanwhile.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal-checkerboard</span>: page is uncovered by drawing checkerboard like blocks that increase in size horizontally.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal-lines</span>: page is uncovered by drawing it line by line horizontally in a random fashion.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">horizontal-stripes</span>: page is uncovered by drawing horizontal stripes that change their size during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">interlocking-horizontal-left</span>: page appears in 4 horizontal stripes (the height is divided in 4, like in the horizontal-stripes effect) but those stripes come from left, right, left, and right, and cross each other in the middle of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">interlocking-horizontal-right</span>: page appears in 4 horizontal stripes (the height is divided in 4, like in the horizontal-stripes effect) but those stripes come from right, left, right, and left, and cross each other in the middle of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">interlocking-vertical-bottom</span>: same effect as <span class="Attribute_20_Value_20_Fragment">interlocking-horizontal-*</span> but with vertical stripes crossing each other.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">interlocking-vertical-top</span>: same effect as <span class="Attribute_20_Value_20_Fragment">interlocking-horizontal-*</span> but with vertical stripes crossing each other.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">melt</span>: Small vertical stripes move down at random speed, which gives the effect of the current page "melting down".<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-bottom</span>: page moves from the bottom of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-left</span>: page moves from the left of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-right</span>: page moves from the right of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-top</span>: page moves from the top of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-lowerleft</span>: page moves from the lower left of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-lowerright</span>: page moves from the lower right of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-upperleft</span>: page moves from the upper left of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">move-from-upperright</span>: page moves from the upper right of the screen to its final position.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no effect is used.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">open</span>: Combination of open-horizontal and open-vertical.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">open-horizontal</span>: page is uncovered by drawing it line by line horizontally, starting at the center of the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">open-vertical</span>: page is uncovered by drawing it line by line vertically, starting at the center of the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">random</span>: an effect is chosen at random to uncover a page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roll-from-bottom</span>: page moves towards the bottom of the screen to its final position, pushing the previous page out.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roll-from-left</span>: pages move towards the left of the screen to its final position, pushing the previous page out.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roll-from-right</span>: page moves towards the right of the screen to its final position, pushing the previous page out.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roll-from-top</span>: page moves towards the top of the screen to its final position, pushing the previous page out.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiralin-left</span>: page is uncovered by drawing blocks in a spiral fashion, starting from the left edge of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiralin-right</span>: page is uncovered by drawing blocks in a spiral fashion, starting from the right edge of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiralout-left</span>: page is uncovered by drawing blocks in a spiral fashion, starting from the center of the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">spiralout-right</span>: page is uncovered by drawing blocks in a spiral fashion, starting from the center of the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch-from-bottom</span>: page is uncovered by changing its size from the bottom of the screen during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch-from-left</span>: page is uncovered by changing its size from the left of the screen during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch-from-right</span>: page is uncovered by changing its size from the right of the screen during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch-from-top</span>: page is uncovered by changing its size from the left of the screen during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-bottom</span>: page is uncovered from the bottom of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-left</span>: page is uncovered from the left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-right</span>: page is uncovered from the right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-top</span>: page is uncovered from the top of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-lowerleft</span>: page is uncovered from the lower left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-lowerright</span>: page is uncovered from the lower right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-upperleft</span>: page is uncovered from the upper left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">uncover-to-upperright</span>: page is uncovered from the upper right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical-checkerboard</span>: page is uncovered by drawing checkerboard like blocks that increase in size vertically.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical-lines</span>: page is uncovered by drawing it line by line vertically in a random fashion.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical-stripes</span>: page is uncovered by drawing vertical stripes that change their size during this effect.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wavyline-from-bottom</span>: page is uncovered by drawing small blocks in a snake like fashion from the bottom of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wavyline-from-left</span>: page is uncovered by drawing small blocks in a snake like fashion from the left of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wavyline-from-right</span>: page is uncovered by drawing small blocks in a snake like fashion from the right of the screen.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wavyline-from-top</span>: page is uncovered by drawing small blocks in a snake like fashion from the top of the screen.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:transition-style</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:transition-style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">fade-from-left</span>, <span class="Attribute_20_Value">fade-from-top</span>, <span class="Attribute_20_Value">fade-from-right</span>, <span class="Attribute_20_Value">fade-from-bottom</span>, <span class="Attribute_20_Value">fade-from-upperleft</span>, <span class="Attribute_20_Value">fade-from-upperright</span>, <span class="Attribute_20_Value">fade-from-lowerleft</span>, <span class="Attribute_20_Value">fade-from-lowerright</span>, <span class="Attribute_20_Value">move-</span><span class="Attribute_20_Value">from-left</span>, <span class="Attribute_20_Value">move-from-top</span>, <span class="Attribute_20_Value">move-from-right</span>, <span class="Attribute_20_Value">move-from-bottom</span>, <span class="Attribute_20_Value">move-from-upperleft</span>, <span class="Attribute_20_Value">move-from-upperright</span>, <span class="Attribute_20_Value">move-from-lowerleft</span>, <span class="Attribute_20_Value">move-from-lowerright</span>, <span class="Attribute_20_Value">uncover-to-left</span>, <span class="Attribute_20_Value">uncover-to-top</span>, <span class="Attribute_20_Value">uncover-to-right</span>, <span class="Attribute_20_Value">uncover-to-bottom</span>, <span class="Attribute_20_Value">uncover-to-upperleft</span>, <span class="Attribute_20_Value">uncover-to-upperright</span>, <span class="Attribute_20_Value">uncover-to-lowerleft</span>, <span class="Attribute_20_Value">uncover-to-lowerright</span>, <span class="Attribute_20_Value">fade-to-center</span>, <span class="Attribute_20_Value">fade-from-center</span>, <span class="Attribute_20_Value">vertical-stripes</span>, <span class="Attribute_20_Value">horizontal-stripes</span>, <span class="Attribute_20_Value">clockwise</span>, <span class="Attribute_20_Value">counterclockwise</span>, <span class="Attribute_20_Value">open-vertical</span>, <span class="Attribute_20_Value">open-horizontal</span>, <span class="Attribute_20_Value">close-vertical</span>, <span class="Attribute_20_Value">close-horizontal</span>, <span class="Attribute_20_Value">wavyline-from-left</span>, <span class="Attribute_20_Value">wavyline-from-top</span>, <span class="Attribute_20_Value">wavyline-from-right</span>, <span class="Attribute_20_Value">wavyline-from-bottom</span>, <span class="Attribute_20_Value">spiralin-left</span>, <span class="Attribute_20_Value">spiralin-right</span>, <span class="Attribute_20_Value">spiralout-left</span>, <span class="Attribute_20_Value">spiralout-right</span>, <span class="Attribute_20_Value">roll-from-top</span>, <span class="Attribute_20_Value">roll-from-left</span>, <span class="Attribute_20_Value">roll-from-right</span>, <span class="Attribute_20_Value">roll-from-bottom</span>, <span class="Attribute_20_Value">stretch-from-left</span>, <span class="Attribute_20_Value">stretch-from-top</span>, <span class="Attribute_20_Value">stretch-from-right</span>, <span class="Attribute_20_Value">stretch-from-bottom</span>, <span class="Attribute_20_Value">vertical-lines</span>, <span class="Attribute_20_Value">horizontal-lines</span>, <span class="Attribute_20_Value">dissolve</span>, <span class="Attribute_20_Value">random</span>, <span class="Attribute_20_Value">vertical-checkerboard</span>, <span class="Attribute_20_Value">horizontal-checkerboard</span>, <span class="Attribute_20_Value">interlocking-horizontal-left</span>, <span class="Attribute_20_Value">interlocking-horizontal-right</span>, <span class="Attribute_20_Value">interlocking-vertical-top</span>, <span class="Attribute_20_Value">interlocking-vertical-bottom</span>, <span class="Attribute_20_Value">fly-away</span>, <span class="Attribute_20_Value">open</span>, <span class="Attribute_20_Value">close</span> or <span class="Attribute_20_Value">melt</span>.</p><h2 class="Heading_20_2"><a id="a20_233presentation_transition-type"><span style="margin-right:0.127cm;">20.233</span></a><a id="__RefHeading__1419914_253892949"/><a id="property-presentation_transition-type"/>presentation:transition-type</h2><p class="Text_20_body">The <span class="Attribute">presentation:transition-type</span> attribute specifies the mode of a transition. </p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:transition-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: slide transition and shape effects start automatically.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">manual</span>: slide transition and shape effects are started separately by the user.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">semi-automatic</span>: slide transition starts automatically, shape effects are started by the user.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The <span class="Attribute">smil:type</span> attribute should be used for presentations. The <span class="Attribute">presentation:transition-type</span> and <span class="Attribute">presentation:transition-style</span> attributes are retained for legacy compatibility only. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:transition-type</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:transition-type</span> attribute are <span class="Attribute_20_Value">manual</span>, <span class="Attribute_20_Value">automatic</span> or <span class="Attribute_20_Value">semi-automatic</span>.</p><h2 class="Heading_20_2"><a id="a20_234presentation_visibility"><span style="margin-right:0.127cm;">20.234</span></a><a id="__RefHeading__1419916_253892949"/><a id="property-presentation_visibility"/>presentation:visibility</h2><p class="Text_20_body">The <span class="Attribute">presentation:visibility</span> attribute specifies if the content of a <span class="Element">&lt;draw:page&gt;</span> element is visible during a presentation.</p><p class="Text_20_body">The defined values for the <span class="Attribute">presentation:transition-speed</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hidden</span>: content is hidden during a presentation. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">visible</span>: content is visible during a presentation.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">presentation:visibility</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">presentation:visibility</span> attribute are <span class="Attribute_20_Value">visible</span> or <span class="Attribute_20_Value">hidden</span>.</p><h2 class="Heading_20_2"><a id="a20_235smil_direction"><span style="margin-right:0.127cm;">20.235</span></a><a id="__RefHeading__1419918_253892949"/><a id="property-smil_direction"/>smil:direction</h2><p class="Text_20_body">See §12.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:direction</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">smil:direction</span> attribute are <span class="Attribute_20_Value">forward</span> or <span class="Attribute_20_Value">reverse</span>.</p><h2 class="Heading_20_2"><a id="a20_236smil_fadeColor"><span style="margin-right:0.127cm;">20.236</span></a><a id="__RefHeading__1419920_253892949"/><a id="property-smil_fadeColor"/>smil:fadeColor</h2><p class="Text_20_body">See §12.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:fadeColor</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:fadeColor</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_237smil_subtype"><span style="margin-right:0.127cm;">20.237</span></a><a id="__RefHeading__1419922_253892949"/><a id="property-smil_subtype"/>smil:subtype</h2><p class="Text_20_body">See §12.4.1 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a>.</p><p class="Text_20_body"><span class="Note_20_Label">Note: </span>See §12.8 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> for a list of supported subtypes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:subtype</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:subtype</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_238smil_type"><span style="margin-right:0.127cm;">20.238</span></a><a id="__RefHeading__1419924_253892949"/><a id="property-smil_type"/>smil:type</h2><p class="Text_20_body">The <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> <span class="Attribute">smil:type</span> attribute specifies a transition type or family.</p><p class="Text_20_body">See §12.8 of <a title="Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition]" href="http://www.w3.org/TR/2005/REC-SMIL2-20050107/">[SMIL20]</a> for a list of supported types.</p><p class="Text_20_body">If this attribute is present, the attributes <span class="Attribute">presentation:transition-type</span> and <span class="Attribute">presentation:transition-style</span> attributes should be ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">smil:type</span> attribute is usable with the following element: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">smil:type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_239style_auto-text-indent"><span style="margin-right:0.127cm;">20.239</span></a><a id="__RefHeading__1419926_253892949"/><a id="property-style_auto-text-indent"/>style:auto-text-indent</h2><p class="Text_20_body">The <span class="Attribute">style:auto-text-indent</span> attribute specifies that the first line of a paragraph is indented by a value that is based on the current font size.</p><p class="Text_20_body">If this attribute has a value of <span class="Attribute_20_Value">true</span> and is used together with a <span class="Attribute">fo:text-indent</span> attribute the <span class="Attribute">fo:text-indent</span> attribute is ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:auto-text-indent</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:auto-text-indent</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_240style_background-transparency"><span style="margin-right:0.127cm;">20.240</span></a><a id="__RefHeading__1419928_253892949"/><a id="property-style_background-transparency"/>style:background-transparency</h2><p class="Text_20_body">The <span class="Attribute">style:background-transparency</span> attribute specifies the transparency of a paragraph's background color.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:background-transparency</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a> and <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:background-transparency</span> attribute has the data type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a20_241style_border-line-width"><span style="margin-right:0.127cm;">20.241</span></a><a id="__RefHeading__1419930_253892949"/><a id="property-style_border-line-width"/>style:border-line-width</h2><p class="Text_20_body"><a id="DDE_LINK7"/>The <span class="Attribute">style:border-line-width</span> attribute specifies the widths of borders defined by the FO border properties (see <a href="#FO_Border_Properties">20.176</a>) for borders where the value of these properties is <span class="Attribute_20_Value">double</span>.</p><p class="Text_20_body">The value of the <span class="Attribute">style:border-line-width</span> attribute is a list of three white space-separated lengths, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The first value specifies the width of the inner line<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The second value specifies the distance between the two lines<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The third value specifies the width of the outer line<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:border-line-width</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:border-line-width</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_242style_border-line-width-bottom"><span style="margin-right:0.127cm;">20.242</span></a><a id="__RefHeading__1419932_253892949"/><a id="property-style_border-line-width-bottom"/>style:border-line-width-bottom</h2><p class="Text_20_body"><a id="DDE_LINK10"/>The <span class="Attribute">style:border-line-width-bottom</span> attribute specifies the widths of the bottom border for borders defined by the FO border properties (see <a href="#FO_Border_Properties">20.176</a>) if the property for the bottom border has the value <span class="Attribute_20_Value">double</span>.</p><p class="Text_20_body">The value of the <span class="Attribute">style:border-line-width-bottom</span> attribute is a list of three white space-separated lengths, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The first value specifies the width of the inner line<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The second value specifies the distance between the two lines<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The third value specifies the width of the outer line<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:border-line-width-bottom</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:border-line-width-bottom</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_243style_border-line-width-left"><span style="margin-right:0.127cm;">20.243</span></a><a id="__RefHeading__1419934_253892949"/><a id="property-style_border-line-width-left"/>style:border-line-width-left</h2><p class="Text_20_body">The <span class="Attribute">style:border-line-width-left</span> attribute specifies the widths of the left border for borders defined by the FO border properties (see <a href="#FO_Border_Properties">20.176</a>) if the property for the left border has the value <span class="Attribute_20_Value">double</span>.</p><p class="Text_20_body">The value of the <span class="Attribute">style:border-line-width-left</span> attribute is a list of three white space-separated lengths, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The first value specifies the width of the inner line<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The second value specified the distance between the two lines<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The third value specifies the width of the outer line<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:border-line-width-left</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:border-line-width-left</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_244style_border-line-width-right"><span style="margin-right:0.127cm;">20.244</span></a><a id="__RefHeading__1419936_253892949"/><a id="property-style_border-line-width-right"/>style:border-line-width-right</h2><p class="Text_20_body">The <span class="Attribute">style:border-line-width-right</span> attribute specifies the widths of the right border for borders defined by the FO border properties (see <a href="#FO_Border_Properties">20.176</a>) if the property for the right border has the value <span class="Attribute_20_Value">double</span>.</p><p class="Text_20_body">The value of the <span class="Attribute">style:border-line-width-right</span> attribute is a list of three white space-separated lengths, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The first value specifies the width of the inner line<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The second value specified the distance between the two lines<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The third value specifies the width of the outer line<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:border-line-width-right</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:border-line-width-right</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_245style_border-line-width-top"><span style="margin-right:0.127cm;">20.245</span></a><a id="__RefHeading__1419938_253892949"/><a id="property-style_border-line-width-top"/>style:border-line-width-top</h2><p class="Text_20_body">The <span class="Attribute">style:border-line-width-top</span> attribute specifies the widths of the top border for borders defined by the FO border properties (see <a href="#FO_Border_Properties">20.176</a>) if the property for the top border has the value <span class="Attribute_20_Value">double</span>.</p><p class="Text_20_body">The value of the <span class="Attribute">style:border-line-width-top</span> attribute is a list of three white space-separated lengths, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The first value specifies the width of the inner line<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The second value specified the distance between the two lines<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The third value specifies the width of the outer line<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:border-line-width-top</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:border-line-width-top</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_246style_cell-protect"><span style="margin-right:0.127cm;">20.246</span></a><a id="__RefHeading__1419940_253892949"/><a id="property-style_cell-protect"/>style:cell-protect</h2><p class="Text_20_body">The <span class="Attribute">style:cell-protect</span> attribute specifies how a cell is protected.</p><p class="Text_20_body">This attribute is only evaluated if the current table is protected. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:cell-protect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">formula-hidden</span>: if cell content is a formula, it is not displayed. It can be replaced by changing the cell content.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> Replacement of cell content includes replacement with another formula or other cell content.</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hidden-and-protected</span>: cell content is not displayed and cannot be edited. If content is a formula, the formula result is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: formula responsible for cell content is neither hidden nor protected.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">protected</span>: cell content can not be edited.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>protected formula-hidden: cell content can not be edited. If content is a formula, it is not displayed. A formula result is displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:cell-protect</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:cell-protect</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">hidden-and-protected</span>, or white space separated non-empty lists of one of these values: <span class="Attribute_20_Value">protected</span>, or <span class="Attribute_20_Value">formula-hidden</span>..</p><h2 class="Heading_20_2"><a id="a20_247style_column-width"><span style="margin-right:0.127cm;">20.247</span></a><a id="__RefHeading__1419942_253892949"/><a id="property-style_column-width"/>style:column-width</h2><p class="Text_20_body">The <span class="Attribute">style:column-width</span> attribute specifies a fixed width for a column.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:column-width</span> attribute is usable with the following element: <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:column-width</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_248style_country-asian"><span style="margin-right:0.127cm;">20.248</span></a><a id="__RefHeading__1419944_253892949"/><a id="property-style_country-asian"/>style:country-asian</h2><p class="Text_20_body">The <span class="Attribute">style:country-asian</span> attribute specifies the country of a text.</p><p class="Text_20_body">It is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">It may be ignored if it is not specified together with a <span class="Attribute">style:language-asian</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:country-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:country-asian</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a20_249style_country-complex"><span style="margin-right:0.127cm;">20.249</span></a><a id="__RefHeading__1419946_253892949"/><a id="property-style_country-complex"/>style:country-complex</h2><p class="Text_20_body">The <span class="Attribute">style:country-complex</span> attribute specifies the country of a text. See §7.9.1 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">It is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">It may be ignored if it is not specified together with a <span class="Attribute">style:language-complex</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:country-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:country-complex</span> attribute has the data type <span class="Datatype">countryCode</span> <a href="#datatype-countryCode">18.3.11</a>.</p><h2 class="Heading_20_2"><a id="a20_250style_decimal-places"><span style="margin-right:0.127cm;">20.250</span></a><a id="__RefHeading__1419948_253892949"/><a id="property-style_decimal-places"/>style:decimal-places</h2><p class="Text_20_body">The <span class="Attribute">style:decimal-places</span> attribute specifies the maximum number of decimal places that are displayed if numbers are formatted by a data style that has no setting for number of decimal places itself.</p><p class="Text_20_body">This attribute is only evaluated if it is contained in a default style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:decimal-places</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:decimal-places</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_251style_diagonal-bl-tr"><span style="margin-right:0.127cm;">20.251</span></a><a id="__RefHeading__1419950_253892949"/><a id="property-style_diagonal-bl-tr"/>style:diagonal-bl-tr</h2><p class="Text_20_body">The <span class="Attribute">style:diagonal-bl-tr</span> attribute specifies the style of border to use for a bottom-left to top-right diagonal in a spreadsheet cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:diagonal-bl-tr</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:diagonal-bl-tr</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_252style_diagonal-bl-tr-widths"><span style="margin-right:0.127cm;">20.252</span></a><a id="__RefHeading__1419952_253892949"/><a id="property-style_diagonal-bl-tr-widths"/>style:diagonal-bl-tr-widths</h2><p class="Text_20_body">The <span class="Attribute">style:diagonal-bl-tr-widths</span> attribute specifies the width between a double line border to use for a bottom-left to top-right diagonal in a spreadsheet cell.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:diagonal-bl-tr-widths</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:diagonal-bl-tr-widths</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_253style_diagonal-tl-br"><span style="margin-right:0.127cm;">20.253</span></a><a id="__RefHeading__1419954_253892949"/><a id="property-style_diagonal-tl-br"/>style:diagonal-tl-br</h2><p class="Text_20_body">The <span class="Attribute">style:diagonal-tl-br</span> attribute specifies the style of border to use for a left-top to bottom-right diagonal in a spreadsheet cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:diagonal-tl-br</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:diagonal-tl-br</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_254style_diagonal-tl-br-widths"><span style="margin-right:0.127cm;">20.254</span></a><a id="__RefHeading__1419956_253892949"/><a id="property-style_diagonal-tl-br-widths"/>style:diagonal-tl-br-widths</h2><p class="Text_20_body">The <span class="Attribute">style:diagonal-tl-br-widths</span> attribute specifies the width between a double line border to use for a top-left to bottom-right diagonal in a spreadsheet cell.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:diagonal-tl-br-widths</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:diagonal-tl-br-widths</span> attribute are three white space separated values of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_255style_direction"><span style="margin-right:0.127cm;">20.255</span></a><a id="__RefHeading__1419958_253892949"/><a id="property-style_direction"/>style:direction</h2><p class="Text_20_body">The <span class="Attribute">style:direction</span> attribute specifies the direction of characters.</p><p class="Text_20_body">The <span class="Attribute">style:direction</span> attribute modifies the direction of text rendering as specified by a <span class="Attribute">style:writing-mode</span> attribute. <a href="#property-style_writing-mode">20.394</a> </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ltr</span> – left to right, text is rendered in the direction specified by the <span class="Attribute">style:writing-mode</span> attribute <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ttb</span> – top to bottom, characters are vertically stacked but not rotated<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:direction</span> attribute is usable with the following elements: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:direction</span> attribute are <span class="Attribute_20_Value">ltr</span> or <span class="Attribute_20_Value">ttb</span>.</p><h2 class="Heading_20_2"><a id="a20_256style_dynamic-spacing"><span style="margin-right:0.127cm;">20.256</span></a><a id="__RefHeading__1419960_253892949"/><a id="property-style_dynamic-spacing"/>style:dynamic-spacing</h2><p class="Text_20_body">The <span class="Attribute">style:dynamic-spacing</span> attribute specifies whether the header or footer grows into the space between the page body and the header or footer before the height of the page body becomes smaller. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:dynamic-spacing</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: header or footers do not grow into the space between the header and footer and the page body.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: header or footers first grow into the space between the header and footer and the page body.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:dynamic-spacing</span> attribute is usable with the following element: <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:dynamic-spacing</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_257style_editable"><span style="margin-right:0.127cm;">20.257</span></a><a id="__RefHeading__1419962_253892949"/><a id="property-style_editable"/>style:editable</h2><p class="Text_20_body">The <span class="Attribute">style:editable</span> attribute specifies if a text section or box can be edited within a read-only document. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:editable</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text section or box in read-only document should not be editable.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text section or box in read-only document should be editable.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:editable</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a> and <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:editable</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_258style_first-page-number"><span style="margin-right:0.127cm;">20.258</span></a><a id="__RefHeading__1419964_253892949"/><a id="property-style_first-page-number"/>style:first-page-number</h2><p class="Text_20_body">The <span class="Attribute">style:first-page-number</span> attribute specifies the number of a document.</p><p class="Text_20_body">The value of this attribute can be an integer or <span class="Attribute_20_Value">continue</span>. If the value is <span class="Attribute_20_Value">continue</span>, the page number is the preceding page number incremented by 1. The default first page number is 1.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:first-page-number</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:first-page-number</span> attribute are a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a> or <span class="Attribute_20_Value">continue</span>.</p><h2 class="Heading_20_2"><a id="a20_259style_flow-with-text"><span style="margin-right:0.127cm;">20.259</span></a><a id="__RefHeading__1419966_253892949"/><a id="property-style_flow-with-text"/>style:flow-with-text</h2><p class="Text_20_body">The <span class="Attribute">style:flow-with-text</span> attribute specifies whether a drawing shape flows with the text of its layout environment or not. The layout environment of a drawing shape is determined by the location of its anchor. The following layout environments are defined:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>endnote area - anchor is inside an endnote.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>footnote area - anchor is inside a footnote.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>frame area - anchor is inside a frame or is a frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>page footer area - anchor is inside the page footer.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>page header area - anchor is inside the page header.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>page text area - anchor is inside body text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>table cell area - anchor is inside a table cell.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The innermost enclosing area of the anchor defines the layout environment of the drawing shape. </p><p class="Text_20_body">If the value of the attribute is <span class="Attribute_20_Value">true</span>, the following conditions shall hold:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The drawing shape flows with the text of its layout environment.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>The drawing shape does not leave its layout environment in the either text flow direction.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">When a drawing shape leaves its layout environment due to its position and/or size in the forward text flow direction, it flows with the text flow to the next layout environment. If there is no next layout environment, the position of the layout environment is adjusted. If the drawing shape is larger than its layout environment, the size of the layout environment is adjusted.</p><p class="Text_20_body">If due to its position a drawing shape would leave its layout environment in the backward text flow direction, the position is adjusted to the beginning of its layout environment.</p><p class="Text_20_body">A drawing object may leave its layout environment in the other (non text flow) directions. Exceptions from this rule are the layout environments table cell area and frame area. For these layout environments it shall be ensured that the drawing shape is laid out inside its layout environment by adjusting the position and (if necessary) the size.</p><p class="Text_20_body">If the value of the attribute is <span class="Attribute_20_Value">false</span>, the drawing shape does not have to flow with the text of its layout environment. It can be laid out anywhere on the page its anchor is on.</p><p class="Text_20_body">This attribute is not applicable to drawing shapes that are anchored with <span class="Attribute">text:anchor-type</span><span class="Source_20_Text">="</span><span class="Attribute_20_Value">as-char</span><span class="Source_20_Text">"</span>, because such drawing shapes are treated as characters. For drawing shapes, which are anchored to a specific page with <span class="Attribute">text:anchor-type</span><span class="Source_20_Text">="</span><span class="Attribute_20_Value">page</span><span class="Source_20_Text">"</span>, the attribute is also not applicable, because such drawing shapes are to be laid out on the page they are anchored to.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:flow-with-text</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:flow-with-text</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_260style_font-charset"><span style="margin-right:0.127cm;">20.260</span></a><a id="__RefHeading__1419968_253892949"/><a id="property-style_font-charset"/>style:font-charset</h2><p class="Text_20_body">The <span class="Attribute">style:font-charset</span> attribute specifies whether a font defines glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> or not.</p><p class="Text_20_body">The value of this attributes can be <span class="Attribute_20_Value_20_Instance">x-symbol</span> or a character encoding in the notation described in the §4.3.3 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>. If the value is <span class="Attribute_20_Value_20_Instance">x-symbol</span>, the font does not define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. If the value is one of the encodings or transformations of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>, the font does define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. The use of other values is deprecated.</p><p class="Note"><span class="Note_20_Label">Note:</span> Fonts for which the attribute has the value <span class="Attribute_20_Value_20_Instance">x-symbol</span> may define glyphs for code points in the private use area of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a></p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-charset</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-charset</span> attribute has the data type <span class="Datatype">textEncoding</span> <a href="#datatype-textEncoding">18.3.35</a>.</p><h2 class="Heading_20_2"><a id="a20_261style_font-charset-asian"><span style="margin-right:0.127cm;">20.261</span></a><a id="__RefHeading__1419970_253892949"/><a id="property-style_font-charset-asian"/>style:font-charset-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-charset-asian</span> attribute specifies whether a font defines glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> or not.</p><p class="Text_20_body">The value of this attributes can be <span class="Attribute_20_Value_20_Instance">x-symbol</span> or a character encoding in the notation described in the §4.3.3 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>. If the value is <span class="Attribute_20_Value_20_Instance">x-symbol</span>, the font does not define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. If the value is one of the encodings or transformations of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>, the font does define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. The use of other values is deprecated.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Fonts for which the attribute has the value <span class="Attribute_20_Value_20_Instance">x-symbol</span> may define glyphs for code points in the private use area of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a></p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a><a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no <span class="Attribute">style:font-family-asian</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-asian</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-charset-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-charset-asian</span> attribute has the data type <span class="Datatype">textEncoding</span> <a href="#datatype-textEncoding">18.3.35</a>.</p><h2 class="Heading_20_2"><a id="a20_262style_font-charset-complex"><span style="margin-right:0.127cm;">20.262</span></a><a id="__RefHeading__1419972_253892949"/><a id="property-style_font-charset-complex"/>style:font-charset-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-charset-complex</span> attribute specifies whether a font defines glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> or not.</p><p class="Text_20_body">The value of this attributes can be <span class="Attribute_20_Value_20_Instance">x-symbol</span> or a character encoding in the notation described in the §4.3.3 of <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>. If the value is <span class="Attribute_20_Value_20_Instance">x-symbol</span>, the font does not define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. If the value is one of the encodings or transformations of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>, the font does define glyphs according to the semantics of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a>. The use of other values is deprecated.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Fonts for which the attribute has the value <span class="Attribute_20_Value_20_Instance">x-symbol</span> may define glyphs for code points in the private use area of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a></p><p class="Text_20_body">The <span class="Attribute">style:font-charset-complex</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no <span class="Attribute">style:font-family-complex</span> attribute attached to the same formatting properties element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-complex</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-charset-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-charset-complex</span> attribute has the data type <span class="Datatype">textEncoding</span> <a href="#datatype-textEncoding">18.3.35</a>.</p><h2 class="Heading_20_2"><a id="a20_263style_font-family-asian"><span style="margin-right:0.127cm;">20.263</span></a><a id="__RefHeading__1419974_253892949"/><a id="property-style_font-family-asian"/>style:font-family-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-family-asian</span> attribute specifies the font family for a text. See §7.8.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_font-size-complex">20.277</a></p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-asian</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-family-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-family-asian</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_264style_font-family-complex"><span style="margin-right:0.127cm;">20.264</span></a><a id="__RefHeading__1419976_253892949"/><a id="property-style_font-family-complex"/>style:font-family-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-family-complex</span> attribute specifies the font family for a text. See §7.8.2 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-complex</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-family-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-family-complex</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_265style_font-family-generic"><span style="margin-right:0.127cm;">20.265</span></a><a id="__RefHeading__1419978_253892949"/><a id="property-style_font-family-generic"/>style:font-family-generic</h2><p class="Text_20_body">The <span class="Attribute">style:font-family-generic</span> attribute specifies a generic font family name.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name</span> attribute should be used to specify the properties of a font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-family-generic</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">decorative</span>: the family of decorative fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">modern</span>: the family of modern fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roman</span>: the family roman fonts (with serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">script</span>: the family of script fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">swiss</span>: the family roman fonts (without serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">system</span>: the family system fonts. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-family-generic</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-family-generic</span> attribute are <span class="Attribute_20_Value">roman</span>, <span class="Attribute_20_Value">swiss</span>, <span class="Attribute_20_Value">modern</span>, <span class="Attribute_20_Value">decorative</span>, <span class="Attribute_20_Value">script</span> or <span class="Attribute_20_Value">system</span>.</p><h2 class="Heading_20_2"><a id="a20_266style_font-family-generic-asian"><span style="margin-right:0.127cm;">20.266</span></a><a id="__RefHeading__1419980_253892949"/><a id="property-style_font-family-generic-asian"/>style:font-family-generic-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-family-generic-asian</span> attribute specifies a generic Asian font family name.</p><p class="Text_20_body">The <span class="Attribute">style:font-family-generic-asian</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_font-size-complex">20.277</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-asian</span> attribute should be used to specify the properties of a font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-family-generic-asian</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">decorative</span>: the family of decorative fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">modern</span>: the family of modern fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">roman</span>: the family roman fonts (with serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">script</span>: the family of script fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">swiss</span>: the family roman fonts (without serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">system</span>: the family system fonts. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-family-generic-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-family-generic-asian</span> attribute are <span class="Attribute_20_Value">roman</span>, <span class="Attribute_20_Value">swiss</span>, <span class="Attribute_20_Value">modern</span>, <span class="Attribute_20_Value">decorative</span>, <span class="Attribute_20_Value">script</span> or <span class="Attribute_20_Value">system</span>.</p><h2 class="Heading_20_2"><a id="a20_267style_font-family-generic-complex"><span style="margin-right:0.127cm;">20.267</span></a><a id="__RefHeading__1419982_253892949"/><a id="property-style_font-family-generic-complex"/>style:font-family-generic-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-family-generic-complex</span> attribute specifies a generic font family name.</p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-complex</span> attribute should be used to specify the properties of a font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-family-generic-complex</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">decorative</span>: the family of decorative fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">m</span><span class="Attribute_20_Value">odern</span>: the family of modern fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">oman</span>: the family roman fonts (with serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">cript</span>: the family of script fonts. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">swiss</span>: the family roman fonts (without serifs). <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">system</span>: the family system fonts. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-family-generic-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-family-generic-complex</span> attribute are <span class="Attribute_20_Value">roman</span>, <span class="Attribute_20_Value">swiss</span>, <span class="Attribute_20_Value">modern</span>, <span class="Attribute_20_Value">decorative</span>, <span class="Attribute_20_Value">script</span> or <span class="Attribute_20_Value">system</span>.</p><h2 class="Heading_20_2"><a id="a20_268style_font-independent-line-spacing"><span style="margin-right:0.127cm;">20.268</span></a><a id="__RefHeading__1419984_253892949"/><a id="property-style_font-independent-line-spacing"/>style:font-independent-line-spacing</h2><p class="Text_20_body">The <span class="Attribute">style:font-independent-line-spacing</span> attribute specifies if font independent line spacing is used. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-independent-line-spacing</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: font metric of the font is taken into account.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: line height is calculated only from the font height as specified by the font size attributes <span class="Attribute">fo:font-size</span>, <span class="Attribute">style:font-size-asian</span> and <span class="Attribute">style:font-size-complex</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-independent-line-spacing</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-independent-line-spacing</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_269style_font-name"><span style="margin-right:0.127cm;">20.269</span></a><a id="__RefHeading__1419986_253892949"/><a id="property-style_font-name"/>style:font-name</h2><p class="Text_20_body">The <span class="Attribute">style:font-name</span> attribute specifies a font that is declared by a <span class="Element">&lt;style:font-face&gt;</span> element with a <span class="Attribute">style:name</span> attribute whose name is the same as that of the <span class="Attribute">style:font-name</span> attribute value. </p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-name</span> attribute is usable with the following elements: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a> and <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_270style_font-name-asian"><span style="margin-right:0.127cm;">20.270</span></a><a id="__RefHeading__1419988_253892949"/><a id="property-style_font-name-asian"/>style:font-name-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-name-asian</span> attribute specifies a font that is declared by a <span class="Element">&lt;style:font-face&gt;</span> element with a style:name attribute whose name is the same as that of the <span class="Attribute">style:font-name-asian</span> attribute value. </p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_font-size-complex">20.277</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-name-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-name-asian</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_271style_font-name-complex"><span style="margin-right:0.127cm;">20.271</span></a><a id="__RefHeading__1419990_253892949"/><a id="property-style_font-name-complex"/>style:font-name-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-name-complex</span> attribute specifies a font that is declared by a <span class="Element">&lt;style:font-face&gt;</span> element with a <span class="Attribute">style:name</span> attribute whose name is the same as that of the <span class="Attribute">style:font-name-complex</span> attribute value. </p><p class="Text_20_body">The <span class="Attribute">style:font-name-complex</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-name-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-name-complex</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_272style_font-pitch"><span style="margin-right:0.127cm;">20.272</span></a><a id="__RefHeading__1419992_253892949"/><a id="property-style_font-pitch"/>style:font-pitch</h2><p class="Text_20_body">The <span class="Attribute">style:font-pitch</span> attribute specifies whether a font has a fixed or variable width.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name</span> attribute should be used to specify the properties of a font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-pitch</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: font pitch is fixed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">v</span><span class="Attribute_20_Value">ariable</span>: font pitch is variable.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-pitch</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-pitch</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">variable</span>.</p><h2 class="Heading_20_2"><a id="a20_273style_font-pitch-asian"><span style="margin-right:0.127cm;">20.273</span></a><a id="__RefHeading__1419994_253892949"/><a id="property-style_font-pitch-asian"/>style:font-pitch-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-pitch-asian</span> attribute specifies whether a font has a fixed or variable width.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-asian</span> attribute should be used to specify the properties of a font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-pitch-asian</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: font width is fixed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">variable</span>: font width is variable.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-pitch-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-pitch-asian</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">variable</span>.</p><h2 class="Heading_20_2"><a id="a20_274style_font-pitch-complex"><span style="margin-right:0.127cm;">20.274</span></a><a id="__RefHeading__1419996_253892949"/><a id="property-style_font-pitch-complex"/>style:font-pitch-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-pitch-complex</span> attribute specifies whether a font has a fixed or variable width.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-complex</span> attribute should be used to specify the properties of a font.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-pitch-complex</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: font width is fixed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">v</span><span class="Attribute_20_Value">ariable</span>: font width is variable.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-pitch-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-pitch-complex</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">variable</span>.</p><h2 class="Heading_20_2"><a id="a20_275style_font-relief"><span style="margin-right:0.127cm;">20.275</span></a><a id="__RefHeading__1419998_253892949"/><a id="property-style_font-relief"/>style:font-relief</h2><p class="Text_20_body">The <span class="Attribute">style:font-relief</span> attribute specifies whether a font should be embossed, engraved, or neither.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-relief</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">embossed</span>: characters are embossed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">e</span><span class="Attribute_20_Value">ngraved</span>: characters are engraved.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: characters are neither embossed or engraved.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-relief</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-relief</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">embossed</span> or <span class="Attribute_20_Value">engraved</span>.</p><h2 class="Heading_20_2"><a id="a20_276style_font-size-asian"><span style="margin-right:0.127cm;">20.276</span></a><a id="__RefHeading__1420000_253892949"/><a id="property-style_font-size-asian"/>style:font-size-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-size-asian</span> attribute specifies the size of a font.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The value of this attribute is either an absolute length or a percentage as described in §7.8.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. In contrast to XSL, percentage values can be used within common styles only and are based on the font height of the parent style rather than to the font height of the attributes neighborhood. Absolute font heights and relative font heights are not supported.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-size-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-size-asian</span> attribute are a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_277style_font-size-complex"><span style="margin-right:0.127cm;">20.277</span></a><a id="__RefHeading__1420002_253892949"/><a id="property-style_font-size-complex"/>style:font-size-complex</h2><p class="Text_20_body">The <span class="Attribute">fo:font-size</span>, <span class="Attribute">style:font-size-asian</span> and <span class="Attribute">style:font-size-complex</span> attributes specify the size of a font.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The value of this attribute is either an absolute length or a percentage as described in §7.8.4 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>. In contrast to XSL, percentage values can be used within common styles only and are based on the font height of the parent style rather than to the font height of the attributes neighborhood. Absolute font heights and relative font heights are not supported.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-size-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-size-complex</span> attribute are a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a> or a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_278style_font-size-rel"><span style="margin-right:0.127cm;">20.278</span></a><a id="__RefHeading__1420004_253892949"/><a id="property-style_font-size-rel"/>style:font-size-rel</h2><p class="Text_20_body">The <span class="Attribute">style:font-size-rel</span> attribute specifies a relative font size change.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute specifies a relative font size change as a length. It cannot be used within automatic styles. This attribute changes the font size based on the font size of the parent style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-size-rel</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-size-rel</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_279style_font-size-rel-asian"><span style="margin-right:0.127cm;">20.279</span></a><a id="__RefHeading__1420006_253892949"/><a id="property-style_font-size-rel-asian"/>style:font-size-rel-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-size-rel-asian</span> attributes specifies a relative font size change.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute specifies a relative font size change as a length. It cannot be used within automatic styles. This attribute changes the font size based on the font size of the parent style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-size-rel-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-size-rel-asian</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_280style_font-size-rel-complex"><span style="margin-right:0.127cm;">20.280</span></a><a id="__RefHeading__1420008_253892949"/><a id="property-style_font-size-rel-complex"/>style:font-size-rel-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-size-rel</span>, <span class="Attribute">style:font-size-rel-asian</span> and <span class="Attribute">style:font-size-rel-complex</span> attributes specify a relative font size change.</p><p class="Text_20_body">The <span class="Attribute">style:font-size-rel-complex</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute specifies a relative font size change as a length. It cannot be used within automatic styles. This attribute changes the font size based on the font size of the parent style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-size-rel-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-size-rel-complex</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_281style_font-style-asian"><span style="margin-right:0.127cm;">20.281</span></a><a id="__RefHeading__1420010_253892949"/><a id="property-style_font-style-asian"/>style:font-style-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-style-asian</span> attribute specifies whether to use normal or italic font face. See §7.8.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-style-asian</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">italic</span>: characters displayed in an italic font face.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">ormal</span>: characters displayed in normal font face.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">o</span><span class="Attribute_20_Value">blique</span>: characters displayed in an oblique font face.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-style-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-style-asian</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">italic</span> or <span class="Attribute_20_Value">oblique</span>.</p><h2 class="Heading_20_2"><a id="a20_282style_font-style-complex"><span style="margin-right:0.127cm;">20.282</span></a><a id="__RefHeading__1420012_253892949"/><a id="property-style_font-style-complex"/>style:font-style-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-style-complex</span> attribute specifies whether to use normal or italic font face. See §7.8.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The <span class="Attribute">fo:font-style</span> attribute is evaluated for any other <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:font-style-complex</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">italic</span>: characters displayed in an italic font face.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">ormal</span>: characters displayed in normal font face.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">o</span><span class="Attribute_20_Value">blique</span>: characters displayed in an oblique font face.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-style-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-style-complex</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">italic</span> or <span class="Attribute_20_Value">oblique</span>.</p><h2 class="Heading_20_2"><a id="a20_283style_font-style-name"><span style="margin-right:0.127cm;">20.283</span></a><a id="__RefHeading__1420014_253892949"/><a id="property-style_font-style-name"/>style:font-style-name</h2><p class="Text_20_body">The <span class="Attribute">style:font-style-name</span> attribute specifies a font style name.</p><p class="Text_20_body">This attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character whose script type is <span class="Attribute_20_Value">latin</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-style-name</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_284style_font-style-name-asian"><span style="margin-right:0.127cm;">20.284</span></a><a id="__RefHeading__1420016_253892949"/><a id="property-style_font-style-name-asian"/>style:font-style-name-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-style-name-asian</span> attribute specifies a font style name.</p><p class="Text_20_body">The <span class="Attribute">style:font-style-name-asian</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-asian</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-style-name-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-style-name-asian</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_285style_font-style-name-complex"><span style="margin-right:0.127cm;">20.285</span></a><a id="__RefHeading__1420018_253892949"/><a id="property-style_font-style-name-complex"/>style:font-style-name-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-style-name-complex</span> attribute specifies a font style name.</p><p class="Text_20_body">The <span class="Attribute">style:font-style-name-complex</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is ignored if there is no corresponding <span class="Attribute">fo:font-family</span> attribute attached to the same formatting property element.</p><p class="Text_20_body">Instead of this attribute, the <span class="Attribute">style:font-name-complex</span> attribute should be used to specify the properties of a font.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-style-name-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:font-style-name-complex</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_286style_font-weight-asian"><span style="margin-right:0.127cm;">20.286</span></a><a id="__RefHeading__1420020_253892949"/><a id="property-style_font-weight-asian"/>style:font-weight-asian</h2><p class="Text_20_body">The <span class="Attribute">style:font-weight-asian</span> attribute specifies the weight of a font. See §7.8.9 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-weight-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-weight-asian</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">100</span>, <span class="Attribute_20_Value">200</span>, <span class="Attribute_20_Value">300</span>, <span class="Attribute_20_Value">400</span>, <span class="Attribute_20_Value">500</span>, <span class="Attribute_20_Value">600</span>, <span class="Attribute_20_Value">700</span>, <span class="Attribute_20_Value">800</span> or <span class="Attribute_20_Value">900</span>.</p><h2 class="Heading_20_2"><a id="a20_287style_font-weight-complex"><span style="margin-right:0.127cm;">20.287</span></a><a id="__RefHeading__1420022_253892949"/><a id="property-style_font-weight-complex"/>style:font-weight-complex</h2><p class="Text_20_body">The <span class="Attribute">style:font-weight-complex</span> attributes specify the weight of a font. See §7.8.9 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The <span class="Attribute">fo:font-weight</span> attribute is evaluated for any other <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:font-weight-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:font-weight-complex</span> attribute are <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">100</span>, <span class="Attribute_20_Value">200</span>, <span class="Attribute_20_Value">300</span>, <span class="Attribute_20_Value">400</span>, <span class="Attribute_20_Value">500</span>, <span class="Attribute_20_Value">600</span>, <span class="Attribute_20_Value">700</span>, <span class="Attribute_20_Value">800</span> or <span class="Attribute_20_Value">900</span>.</p><h2 class="Heading_20_2"><a id="a20_288style_footnote-max-height"><span style="margin-right:0.127cm;">20.288</span></a><a id="__RefHeading__1420024_253892949"/><a id="property-style_footnote-max-height"/>style:footnote-max-height</h2><p class="Text_20_body">The <span class="Attribute">style:footnote-max-height</span> attribute specifies the maximum amount of space on a page that a footnote can occupy. The value of the attribute is a length, which determines the maximum height of a footnote area.</p><p class="Text_20_body">If the value of this attribute is set to <span class="Attribute_20_Value_20_Instance">0cm</span>, there is no limit to the amount of space that the footnote can occupy.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:footnote-max-height</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:footnote-max-height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_289style_glyph-orientation-vertical"><span style="margin-right:0.127cm;">20.289</span></a><a id="__RefHeading__1420026_253892949"/><a id="property-style_glyph-orientation-vertical"/>style:glyph-orientation-vertical</h2><p class="Text_20_body">The <span class="Attribute">style:glyph-orientation-vertical</span> attribute specifies a vertical glyph orientation. See §10.7.3 of <a id="DDE_LINK81"/><a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>. The attribute specifies an angle or automatic mode. The only defined angle is 0 degrees, which disables this feature.</p><p class="Note"><span class="Note_20_Label">Note:</span> OpenDocument v1.1 did not support angle specifications that contain an angle unit identifier. Angle unit identifiers should be omitted for compatibility with OpenDocument v1.1.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:glyph-orientation-vertical</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:glyph-orientation-vertical</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">0</span>, <span class="Attribute_20_Value">0deg</span>, <span class="Attribute_20_Value">0rad</span> or <span class="Attribute_20_Value">0grad</span>.</p><h2 class="Heading_20_2"><a id="a20_290style_horizontal-pos"><span style="margin-right:0.127cm;">20.290</span></a><a id="__RefHeading__1420028_253892949"/><a id="property-style_horizontal-pos"/>style:horizontal-pos</h2><p class="Text_20_body">The <span class="Attribute">style:horizontal-pos</span> attribute specifies the horizontal alignment of a frame in relation to an area specified by the <span class="Attribute">style:horizontal-rel attribute</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:horizontal-pos</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: horizontal alignment of a frame should be centered relative to <span class="T2">the</span> specified area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-inside</span>: on pages with an odd page number the left edge of the specific area is taken as the horizontal alignment of a frame. On pages with an even page number the right edge of the specified area is taken. Attribute <span class="Attribute">svg:x</span> associated with the frame element specifies the horizontal position of the frame from the edge which is taken. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-left</span>: the <span class="Attribute">svg:x</span> attribute associated with the frame element specifies the horizontal position of the frame from the left edge of the specified area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">inside</span>: on pages with an odd page number the horizontal alignment of a frame is the same as for the attribute value left. On pages with an even page number the horizontal alignment of a frame is the same as for the attribute value right. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: horizontal alignment of a frame should be left aligned relative to the specified area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outside</span>: on pages with an odd page number the horizontal alignment of a frame is the same as for the attribute value right. On pages with an even page number the horizontal alignment of a frame is the same as for the attribute value left. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: horizontal alignment of a frame should be right aligned relative to the specified area.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">If the attribute value is not <span class="Attribute_20_Value">from-left</span> and not <span class="Attribute_20_Value">from-inside</span>, the <span class="Attribute">svg:x</span> attribute associated with the frame element is ignored for text documents.</p><p class="Text_20_body">Tables <a href="#refTable18">19</a> and <a href="#refTable19">20</a> display the defined combinations of values of the attributes <span class="Attribute">style:horizontal-pos</span> and <span class="Attribute">style:horizontal-rel</span>. The values of these alignment attributes are listed in the first column on the left, and an alignment attribute value/anchor type value match is indicated by an X.</p><p class="Table">Table <a id="refTable18"/>19 - Horizontal position values</p><table border="0" cellspacing="0" cellpadding="0" class="Table9"><colgroup><col width="137"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/></colgroup><tr><td style="text-align:left;width:1.2354in; " class="Table9_A1"><p class="Table_20_Heading">Value of <span class="Attribute">style:horizontal-pos</span></p></td><td colspan="5" style="text-align:left;"><table border="0" cellspacing="0" cellpadding="0"><colgroup><col width="106"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/></colgroup><tr><th colspan="5" style="text-align:left;width:0.9535in; " class="Table9_B1_1_1"><p class="Table_20_Heading">Value of <span class="Attribute">text:anchor-type</span></p></th></tr><tr><th style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">page</span></p></th><th style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">frame</span></p></th><th style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">paragraph</span></p></th><th style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">char</span></p></th><th style="text-align:left;width:0.9507in; " class="Table9_B1_5_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">as-char</span></p></th></tr></table></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table9_B1_1_2"><p class="Table_20_Contents">any</p></td><td style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table9_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table9_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr></table><p class="Table">Table <a id="refTable19"/>20 - Horizontal relation values</p><p class="Table"> </p><table border="0" cellspacing="0" cellpadding="0" class="Table10"><colgroup><col width="137"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/></colgroup><tr><td style="text-align:left;width:1.2354in; " class="Table10_A1"><p class="Table_20_Heading">Value of <span class="Attribute">style:horizontal-rel</span></p></td><td colspan="5" style="text-align:left;"><table border="0" cellspacing="0" cellpadding="0"><colgroup><col width="106"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/></colgroup><tr><th colspan="5" style="text-align:left;width:0.9535in; " class="Table10_B1_1_1"><p class="Table_20_Heading">Value of <span class="Attribute">text:anchor-type</span></p></th></tr><tr><th style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">page</span></p></th><th style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">frame</span></p></th><th style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">paragraph</span></p></th><th style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">char</span></p></th><th style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">as-char</span></p></th></tr></table></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">char</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame-content</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame-end-margin</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame-start-</span><span class="Attribute_20_Value">margin</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page-content</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page-end-</span><span class="Attribute_20_Value">margin</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page-start-</span><span class="Attribute_20_Value">margin</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph-</span><span class="Attribute_20_Value">content</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph-</span><span class="Attribute_20_Value">end-</span><span class="Attribute_20_Value">margin</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2354in; " class="Table10_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph-</span><span class="Attribute_20_Value">start-margin</span></p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table10_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9507in; " class="Table10_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:horizontal-pos</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:horizontal-pos</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">from-left</span>, <span class="Attribute_20_Value">inside</span>, <span class="Attribute_20_Value">outside</span> or <span class="Attribute_20_Value">from-inside</span>.</p><h2 class="Heading_20_2"><a id="a20_291style_horizontal-rel"><span style="margin-right:0.127cm;">20.291</span></a><a id="__RefHeading__1420030_253892949"/><a id="property-style_horizontal-rel"/>style:horizontal-rel</h2><p class="Text_20_body">The <span class="Attribute">style:horizontal-rel</span> attribute specifies the area against which the horizontal position of a frame is positioned. </p><p class="Text_20_body">The value <span class="Attribute_20_Value">start-margin</span> determines the left margin, except when the horizontal position is <span class="Attribute_20_Value">from-inside</span>, <span class="Attribute_20_Value">inside</span> or <span class="Attribute_20_Value">outside</span> and the anchor for the frame is on a page with an even page number, in which case it determines the right margin. The value <span class="Attribute_20_Value">end-margin</span> determines the opposite margin to the <span class="Attribute_20_Value">start-margin</span> values.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:horizontal-rel</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">char</span>: horizontal position of a frame is positioned relative to a character. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age</span>: horizontal position of a frame is positioned relative to a page. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age-content</span>: horizontal position of a frame is positioned relative to page-content. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age-start-margin</span>: horizontal position of a frame is positioned relative to a page start margin. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age-end-margin</span>: horizontal position of a frame is positioned relative to a page end margin. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rame</span>: horizontal position of a frame is positioned relative to another frame. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rame-content</span>: horizontal position of a frame is positioned relative to frame content. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rame-end-margin</span>: horizontal position of a frame is positioned relative to a frame end margin. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rame-start-margin</span>: horizontal position of a frame is positioned relative to a frame start margin <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">aragraph</span>: horizontal position of a frame is positioned relative to a paragraph. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">aragraph-content</span>: horizontal position of a frame is positioned relative to paragraph content. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">aragraph-end-margin</span>: horizontal position of a frame is positioned relative to a paragraph end margin. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">paragraph-start-margin</span>:horizontal position of a frame is positioned relative to a paragraph start margin. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:horizontal-rel</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:horizontal-rel</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">page-content</span>, <span class="Attribute_20_Value">page-start-margin</span>, <span class="Attribute_20_Value">page-end-margin</span>, <span class="Attribute_20_Value">frame</span>, <span class="Attribute_20_Value">frame-content</span>, <span class="Attribute_20_Value">frame-start-margin</span>, <span class="Attribute_20_Value">frame-end-margin</span>, <span class="Attribute_20_Value">paragraph</span>, <span class="Attribute_20_Value">paragraph-content</span>, <span class="Attribute_20_Value">paragraph-start-margin</span>, <span class="Attribute_20_Value">paragraph-end-margin</span> or <span class="Attribute_20_Value">char</span>.</p><h2 class="Heading_20_2"><a id="a20_292style_join-border"><span style="margin-right:0.127cm;">20.292</span></a><a id="__RefHeading__1420032_253892949"/><a id="property-style_join-border"/>style:join-border</h2><p class="Text_20_body">The <span class="Attribute">style:join-border</span> property specifies whether a border for one paragraph is to be extended around the following paragraph. </p><p class="Text_20_body">In addition to the value of this attribute, joining of borders requires meeting these conditions:</p><ol><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">1)</span>Values of attributes <span class="Attribute">fo:border-top</span>, <span class="Attribute">fo:border-bottom</span>, <span class="Attribute">fo:border-left</span> and <span class="Attribute">fo:border-right</span> are the same. These values can also be given by the <span class="Attribute">fo:border</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">2)</span>Values of attributes <span class="Attribute">style:border-line-width-top</span>, <span class="Attribute">style:border-line-width-bottom</span>, <span class="Attribute">style:border-line-width-left</span> and <span class="Attribute">style:border-line-width-right</span> are the same. These values can also be given by the <span class="Attribute">style:border-line-width</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">3)</span>Values of attributes <span class="Attribute">fo:padding-left</span> and <span class="Attribute">fo:padding-right</span> are the same. These values can also be given by the <span class="Attribute">fo:padding</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">4)</span>Values of the <span class="Attribute">fo:margin-right</span> attributes are the same. These values can also be given by the <span class="Attribute">fo:margin</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span style="display:block;float:left;min-width:0.4991cm">5)</span>Values of the <span class="Attribute">fo:margin-left</span> attribute, which can also be given by the <span class="Attribute">fo:margin</span>, and <span class="Attribute">fo:text-indent</span> attributes, that meet one of these conditions:<span class="odfLiEnd"/> </p><ol><li><p class="P18" style="margin-left:0.4991cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">1.</span>All values are the same.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0.4991cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">2.</span>Values of the <span class="Attribute">fo:margin-left</span> attributes are the same and values of the <span class="Attribute">fo:text-indent</span> attributes are non-negative.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0.4991cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">3.</span>Value of the <span class="Attribute">fo:margin-left</span> attribute of one paragraph whose value of the <span class="Attribute">fo:text-indent</span> attribute is non-negative is the same as the sum of values of the <span class="Attribute">fo:margin-</span><span class="Attribute">left</span> and <span class="Attribute">fo:text-indent</span> attributes of the other paragraph whose value of the <span class="Attribute">fo:text-indent</span> attribute is negative.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0.4991cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">4.</span>Both values of the <span class="Attribute">fo:text-indent</span> attributes are negative and the sums of values of the <span class="Attribute">fo:margin-left</span> and <span class="Attribute">fo:text-indent</span> attributes are equal.<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">The default value of this attribute is true.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:join-border</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: borders should not be joined.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: borders should be joined.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:join-border</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:join-border</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_293style_justify-single-word"><span style="margin-right:0.127cm;">20.293</span></a><a id="__RefHeading__1420034_253892949"/><a id="property-style_justify-single-word"/>style:justify-single-word</h2><p class="Text_20_body">The <span class="Attribute">style:justify-single-word</span> attribute specifies whether a single word should be justified when the last line in a paragraph is justified.</p><p class="Text_20_body">Specifying a <span class="Attribute">style:justify-single-word</span> attribute without specifying a <span class="Attribute">fo:text-align</span> and <span class="Attribute">fo:text-align-last</span> attribute has no effect. Unspecified, both <span class="Attribute">fo:text-align</span> and <span class="Attribute">fo:text-align-last</span> have the value <span class="Attribute_20_Value">start</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:justify-single-word</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: single word should not be justified when the last line in a paragraph is justified.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: single word should be justified when last line in a paragraph is justified.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:justify-single-word</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:justify-single-word</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_294style_language-asian"><span style="margin-right:0.127cm;">20.294</span></a><a id="__RefHeading__1420036_253892949"/><a id="property-style_language-asian"/>style:language-asian</h2><p class="Text_20_body">The <span class="Attribute">style:language-asian</span> attribute specifies the language of a text.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute may be ignored if it is not specified together with a <span class="Attribute">style:country-asian</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:language-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:language-asian</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h2 class="Heading_20_2"><a id="a20_295style_language-complex"><span style="margin-right:0.127cm;">20.295</span></a><a id="__RefHeading__1420038_253892949"/><a id="property-style_language-complex"/>style:language-complex</h2><p class="Text_20_body">The <span class="Attribute">style:language-complex</span> attribute specifies the language of a text.</p><p class="Text_20_body">The <span class="Attribute">style:language-asian</span> attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">This attribute may be ignored if it is not specified together with a <span class="Attribute">style:country-complex</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:language-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:language-complex</span> attribute has the data type <span class="Datatype">languageCode</span> <a href="#datatype-languageCode">18.3.17</a>.</p><h2 class="Heading_20_2"><a id="a20_296style_layout-grid-base-height"><span style="margin-right:0.127cm;">20.296</span></a><a id="__RefHeading__1420040_253892949"/><a id="property-style_layout-grid-base-height"/>style:layout-grid-base-height</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-base-height</span> attribute specifies the height reserved in layout grid lines for non-ruby text.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-base-height</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-base-height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_297style_layout-grid-base-width"><span style="margin-right:0.127cm;">20.297</span></a><a id="__RefHeading__1420042_253892949"/><a id="property-style_layout-grid-base-width"/>style:layout-grid-base-width</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-base-width</span> attribute specifies a grid's base width. This attribute is only evaluated if <span class="Attribute">style:layout-grid-standard-mode</span> attribute has the value <span class="Attribute_20_Value">true</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-base-width</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-base-width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_298style_layout-grid-color"><span style="margin-right:0.127cm;">20.298</span></a><a id="__RefHeading__1420044_253892949"/><a id="property-style_layout-grid-color"/>style:layout-grid-color</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-color</span> attribute specifies the color of layout grid border lines.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-color</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_299style_layout-grid-display"><span style="margin-right:0.127cm;">20.299</span></a><a id="__RefHeading__1420046_253892949"/><a id="property-style_layout-grid-display"/>style:layout-grid-display</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-display</span> attribute specifies whether layout grid border lines are displayed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:layout-grid-display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: layout grid border lines should not be displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: layout grid border lines should be displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-display</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-display</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_300style_layout-grid-lines"><span style="margin-right:0.127cm;">20.300</span></a><a id="__RefHeading__1420048_253892949"/><a id="property-style_layout-grid-lines"/>style:layout-grid-lines</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-lines</span> attribute specifies the number of layout grid lines per page. The number of lines displayed may be smaller than specified if the page does not have space to display the specified number of lines with the specified line height.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-lines</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-lines</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_301style_layout-grid-mode"><span style="margin-right:0.127cm;">20.301</span></a><a id="__RefHeading__1420050_253892949"/><a id="property-style_layout-grid-mode"/>style:layout-grid-mode</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-mode</span> attribute enables Asian layout grids.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:layout-grid-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">both</span>: like lines, except that the lines are divided into rectangular layout cells. The calculation of layout cells depends on the <span class="Attribute">style:layout-grid-standard-mode</span> attribute. Within a layout cell, no more than one Asian <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> character is displayed. An Asian character that does not fit into a single layout cell is displayed centered into as many layout cells as required. Non Asian text is centered within as many cells as required.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">lines</span>: enables a line layout, this is, the page is divided in a fixed number of lines. The exact number of lines depends on the other layout grid formatting properties. There is no space between the layout grid lines. The layout grid itself is centered on the page.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: disables the layout grid.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:layout-grid-mode</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">line</span> or <span class="Attribute_20_Value">both</span>.</p><h2 class="Heading_20_2"><a id="a20_302style_layout-grid-print"><span style="margin-right:0.127cm;">20.302</span></a><a id="__RefHeading__1420052_253892949"/><a id="property-style_layout-grid-print"/>style:layout-grid-print</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-print</span> attribute specifies whether layout grid border lines are printed.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:layout-grid-print</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: layout grid border lines should not be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: layout grid border lines should be printed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-print</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-print</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_303style_layout-grid-ruby-below"><span style="margin-right:0.127cm;">20.303</span></a><a id="__RefHeading__1420054_253892949"/><a id="property-style_layout-grid-ruby-below"/>style:layout-grid-ruby-below</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-ruby-below</span> attribute specifies whether ruby text is displayed above or below the base text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:layout-grid-ruby-below</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: ruby text should be displayed above the base text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: ruby text should be displayed below the base text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-ruby-below</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-ruby-below</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_304style_layout-grid-ruby-height"><span style="margin-right:0.127cm;">20.304</span></a><a id="__RefHeading__1420056_253892949"/><a id="property-style_layout-grid-ruby-height"/>style:layout-grid-ruby-height</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-ruby-height</span> attribute specifies the height reserved in layout grid lines for ruby text. </p><p class="Text_20_body">The <span class="Attribute">style:layout-grid-ruby-height</span> attribute appears on a <span class="Element">&lt;style:page-layout-properties&gt;</span> element only if a <span class="Attribute">style:layout-grid-standard-mode</span> attribute, with the value <span class="Attribute_20_Value">false</span>, appears on the same <span class="Element">&lt;style:page-layout-properties&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-ruby-height</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-ruby-height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_305style_layout-grid-snap-to"><span style="margin-right:0.127cm;">20.305</span></a><a id="__RefHeading__1420058_253892949"/><a id="property-style_layout-grid-snap-to"/>style:layout-grid-snap-to</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-snap-to</span> attribute specifies whether the text is snapped to the grid or not. It is evaluated only if the <span class="Attribute">style:layout-grid-mode</span> attribute has the value <span class="Attribute_20_Value">both</span> and the <span class="Attribute">style:layout-grid-standard-mode</span> attribute has the value <span class="Attribute_20_Value">true</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:layout-grid-snap-to</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text should not be snapped to grid.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text should be snapped to grid.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-snap-to</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-snap-to</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_306style_layout-grid-standard-mode"><span style="margin-right:0.127cm;">20.306</span></a><a id="__RefHeading__1420060_253892949"/><a id="property-style_layout-grid-standard-mode"/>style:layout-grid-standard-mode</h2><p class="Text_20_body">The <span class="Attribute">style:layout-grid-standard-mode</span> attribute specifies how the rectangular grid cells are calculated if the <span class="Attribute">style:layout-grid-mode</span> attribute has the value <span class="Attribute_20_Value">both</span>.</p><p class="Text_20_body">The <span class="Attribute">style:layout-grid-standard-mode</span> attribute can only be used in the default page layout. If the <span class="Attribute">style:layout-grid-standard-mode</span> attribute appears inside a <span class="Element">&lt;style:page-layout&gt;</span> element it <span class="ISO_20_Keyword">shall </span>be ignored.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:layout-grid-standard-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the page is divided in a fixed number of lines, and the lines are divided into square cells. The number of cells per grid line depends on the line height, where the line height is the sum of the base height and the ruby height as specified by the <span class="Attribute">style:layout-grid-base-height</span> and <span class="Attribute">style:layout-grid-ruby-height</span> attributes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: the page is divided into a fixed numbers of lines, and the lines are divided into rectangular cells. The line height is specified by the <span class="Attribute">style:layout-grid-base-height</span> attribute, and the cell width is specified by <span class="Attribute">style:layout-grid-base-width</span> attribute. The number of cells per line depends on the grid base width. This mode is also called <span class="Def">standard paper mode</span>. The <span class="Attribute">style:layout-grid-ruby-height</span> attribute is ignored in this mode.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:layout-grid-standard-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:layout-grid-standard-mode</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_307style_line-break"><span style="margin-right:0.127cm;">20.307</span></a><a id="__RefHeading__1420062_253892949"/><a id="property-style_line-break"/>style:line-break</h2><p class="Text_20_body">The <span class="Attribute">style:line-break</span> attribute specifies line breaking rules. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:line-break</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">normal</span>: line breaks may occur between any characters.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">strict</span>: line breaks shall not occur before or after implementation-defined characters. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:line-break</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:line-break</span> attribute are <span class="Attribute_20_Value">normal</span> or <span class="Attribute_20_Value">strict</span>.</p><h2 class="Heading_20_2"><a id="a20_308style_letter-kerning"><span style="margin-right:0.127cm;">20.308</span></a><a id="__RefHeading__1420064_253892949"/><a id="property-style_letter-kerning"/>style:letter-kerning</h2><p class="Text_20_body">The <span class="Attribute">style:letter-kerning</span> attribute specifies whether kerning between characters is enabled or disabled.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:letter-kerning</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: kerning between letters should be disabled.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: kerning between letters should be enabled.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:letter-kerning</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:letter-kerning</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_309style_line-height-at-least"><span style="margin-right:0.127cm;">20.309</span></a><a id="__RefHeading__1420066_253892949"/><a id="property-style_line-height-at-least"/>style:line-height-at-least</h2><p class="Text_20_body">The <span class="Attribute">style:line-height-at-least</span> attribute specifies a minimum line height. The value of this attribute is a length.</p><p class="Text_20_body">The effect of this attribute is disabled when <span class="Attribute">fo:line-height</span> has the value of <span class="Attribute_20_Value">normal</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:line-height-at-least</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:line-height-at-least</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_310style_line-spacing"><span style="margin-right:0.127cm;">20.310</span></a><a id="__RefHeading__1420068_253892949"/><a id="property-style_line-spacing"/>style:line-spacing</h2><p class="Text_20_body">The <span class="Attribute">style:line-spacing</span> attribute specifies a fixed distance between two lines.</p><p class="Text_20_body">The effect of this attribute is disabled when <span class="Attribute">fo:line-height</span> has the value of <span class="Attribute_20_Value">normal</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:line-spacing</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:line-spacing</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_311style_may-break-between-rows"><span style="margin-right:0.127cm;">20.311</span></a><a id="__RefHeading__1420070_253892949"/><a id="property-style_may-break-between-rows"/>style:may-break-between-rows</h2><p class="Text_20_body">The <span class="Attribute">style:may-break-between-rows</span> attribute specifies that a page break may occur inside a table.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:may-break-between-rows</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: page break shall not occur inside a table.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: page break may occur inside a table.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:may-break-between-rows</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:may-break-between-rows</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_312style_min-row-height"><span style="margin-right:0.127cm;">20.312</span></a><a id="__RefHeading__1420072_253892949"/><a id="property-style_min-row-height"/>style:min-row-height</h2><p class="Text_20_body">The <span class="Attribute">style:min-row-height</span> attribute specifies a fixed minimum height for a row.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:min-row-height</span> attribute is usable with the following element: <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:min-row-height</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_313style_mirror"><span style="margin-right:0.127cm;">20.313</span></a><a id="__RefHeading__1420074_253892949"/><a id="property-style_mirror"/>style:mirror</h2><p class="Text_20_body">The <span class="Attribute">style:mirror</span> attribute specifies whether an image is mirrored before it is displayed. The mirroring can be vertical or horizontal or both.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:mirror</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: image should not be mirrored before being displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">h</span><span class="Attribute_20_Value">orizontal</span>: image should be mirrored horizontally before being displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">h</span><span class="Attribute_20_Value">orizontal-on-even</span>: image should be mirrored horizontally on even numbered pages before being displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">h</span><span class="Attribute_20_Value">orizontal-on-odd</span>: image should be mirrored horizontally on odd numbered pages before being displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: image should be mirrored vertically before being displayed. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value <span class="Attribute_20_Value">vertical</span> and the horizontal values can be specified together, separated by a white space.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:mirror</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:mirror</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">vertical</span>, or two white space separated values, that may appear in any order. One of these values is always <span class="Attribute_20_Value">vertical</span>. The other value is one of: <span class="Attribute_20_Value">horizontal</span>, <span class="Attribute_20_Value">horizontal-on-odd</span> or <span class="Attribute_20_Value">horizontal-on-even</span>.</p><h2 class="Heading_20_2"><a id="a20_314style_num-format"><span style="margin-right:0.127cm;">20.314</span></a><a id="__RefHeading__1420076_253892949"/><a id="property-style_num-format"/>style:num-format</h2><p class="Text_20_body">The <span class="Attribute">style:num-format</span> attribute specifies a numbering sequence. </p><p class="Text_20_body">If no value is given, no number sequence is displayed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:num-format</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">1</span>: number sequence starts with “1”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">a</span>: number sequence starts with “a”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">A</span>: number sequence starts with “A”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>empty string: no number sequence displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">i</span>: number sequence starts with “i”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">I</span>: number sequence start with “I”.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-format</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:num-format</span> attribute are <span class="Attribute_20_Value">1</span>, <span class="Attribute_20_Value">i</span>, <span class="Attribute_20_Value">I</span>, a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>, an empty string, <span class="Attribute_20_Value">a</span> or <span class="Attribute_20_Value">A</span>.</p><h2 class="Heading_20_2"><a id="a20_315style_num-letter-sync"><span style="margin-right:0.127cm;">20.315</span></a><a id="__RefHeading__1420078_253892949"/><a id="property-style_num-letter-sync"/>style:num-letter-sync</h2><p class="Text_20_body">The <span class="Attribute">style:num-letter-sync</span> attribute specifies whether letter synchronization shall take place. If letters are used in alphabetical order for numbering, there are two ways to process overflows within a digit, as follows:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: A new digit is inserted that always has the same value as the following digit. The numbering sequence (for lower case numberings) in that case is a, b, c, ..., z, aa, bb, cc, ..., zz, aaa, ..., and so on.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: A new digit is inserted. Its start value is ”a” or ”A”, and it is incremented every time an overflow occurs in the following digit. The numbering sequence (for lower case numberings) in that case is a,b,c, ..., z, aa, ab, ac, ...,az, ba, ..., and so on. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-letter-sync</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:num-letter-sync</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_316style_num-prefix"><span style="margin-right:0.127cm;">20.316</span></a><a id="__RefHeading__1420080_253892949"/><a id="property-style_num-prefix"/>style:num-prefix</h2><p class="Text_20_body">The <span class="Attribute">style:num-prefix</span> attribute specifies what to display before a number.</p><p class="Text_20_body">If the <span class="Attribute">style:num-prefix</span> and <span class="Attribute">style:num-suffix</span> values do not contain any character that has a Unicode category of Nd, Nl, No, Lu, Ll, Lt, Lm or Lo, an <a title="XSL Transformations (XSLT) Version 1.0" href="http://www.w3.org/TR/1999/REC-xslt-19991116">[XSLT]</a> <span class="Alien_20_Attribute">format</span> attribute can be created from the OpenDocument attributes by concatenating the values of the <span class="Attribute">style:num-prefix</span>, <span class="Attribute">style:num-format</span>, and <span class="Attribute">style:num-suffix</span> attributes.</p><p class="Text_20_body">The <span class="Attribute">style:num-prefix</span> attribute can also specify a character before the value of a <span class="Attribute">text:bullet-char</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-prefix</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:num-prefix</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_317style_num-suffix"><span style="margin-right:0.127cm;">20.317</span></a><a id="__RefHeading__1420082_253892949"/><a id="property-style_num-suffix"/>style:num-suffix</h2><p class="Text_20_body">The <span class="Attribute">style:num-prefix</span> and <span class="Attribute">style:num-suffix</span> attributes specify what to display before and after a number.</p><p class="Text_20_body">If the <span class="Attribute">style:num-prefix</span> and <span class="Attribute">style:num-suffix</span> values do not contain any character that has a Unicode category of Nd, Nl, No, Lu, Ll, Lt, Lm or Lo, an <a title="XSL Transformations (XSLT) Version 1.0" href="http://www.w3.org/TR/1999/REC-xslt-19991116">[XSLT]</a> <span class="Alien_20_Attribute">format</span> attribute can be created from the OpenDocument attributes by concatenating the values of the <span class="Attribute">style:num-prefix</span>, <span class="Attribute">style:num-format</span>, and <span class="Attribute">style:num-suffix</span> attributes.</p><p class="Text_20_body">The <span class="Attribute">style:num-suffix</span> attribute can also specify a character after the value of a <span class="Attribute">text:bullet-char</span> attribute. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:num-suffix</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:num-suffix</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_318style_number-wrapped-paragraphs"><span style="margin-right:0.127cm;">20.318</span></a><a id="__RefHeading__1420084_253892949"/><a id="property-style_number-wrapped-paragraphs"/>style:number-wrapped-paragraphs</h2><p class="Text_20_body">The <span class="Attribute">style:number-wrapped-paragraphs</span> attribute specifies the number of paragraphs that can wrap around a frame if the anchor position of a frame or drawing shape is a paragraph or a character, and the wrap mode specified by the <span class="Attribute">style:wrap</span> attribute is <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">parallel</span>, or <span class="Attribute_20_Value">dynamic</span>.</p><p class="Text_20_body">This attribute is only recognized in frames or styles that have a <span class="Attribute">style:wrap</span> attribute attached with a value of <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">parallel</span>, or <span class="Attribute_20_Value">dynamic</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:number-wrapped-paragraphs</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no</span><span class="Attribute_20_Value">-limit</span>: there is no limit on the number of paragraphs that may wrap around a frame.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:number-wrapped-paragraphs</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:number-wrapped-paragraphs</span> attribute are <span class="Attribute_20_Value">no-limit</span> or a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_319style_overflow-behavior"><span style="margin-right:0.127cm;">20.319</span></a><a id="__RefHeading__1420086_253892949"/><a id="property-style_overflow-behavior"/>style:overflow-behavior</h2><p class="Text_20_body">The <span class="Attribute">style:overflow-behavior</span> attribute specifies the behavior of text boxes where the containing text does not fit into a text box. </p><p class="Text_20_body">If the <span class="Attribute">style:overflow-behavior</span> attribute value is <span class="Attribute_20_Value">auto-create-new-frame</span> and the text box has a minimum width or height specified the text box will grow as long as there is space left on the page. If no space is left, a new frame will be created on the next page, with the same position and dimensions of the original frame.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:overflow-behavior</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">clip</span>: text that does not fit into a text box is not displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">au</span><span class="Attribute_20_Value">to-create-new-frame</span>: a new frame will be created on the next page, with the same position and dimensions of the original frame.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:overflow-behavior</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:overflow-behavior</span> attribute are <span class="Attribute_20_Value">clip</span> or <span class="Attribute_20_Value">auto-create-new-frame</span>.</p><h2 class="Heading_20_2"><a id="a20_320style_page-number"><span style="margin-right:0.127cm;">20.320</span></a><a id="__RefHeading__1420088_253892949"/><a id="property-style_page-number"/>style:page-number</h2><p class="Text_20_body">The <span class="Attribute">style:page-number</span> attribute specifies the page number that should be used for a new page when either a paragraph or table style specifies a master page that should be applied beginning from the start of a paragraph or table.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:page-number</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: a page has the page number of the previous page, incremented by one.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>: specifies a page number. <span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:page-number</span> attribute is usable with the following elements: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:page-number</span> attribute are a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a> or <span class="Attribute_20_Value">auto</span>.</p><h2 class="Heading_20_2"><a id="a20_321style_paper-tray-name"><span style="margin-right:0.127cm;">20.321</span></a><a id="__RefHeading__1420090_253892949"/><a id="property-style_paper-tray-name"/>style:paper-tray-name</h2><p class="Text_20_body">The <span class="Attribute">style:paper-tray-name</span> attribute specifies the paper tray to use when printing a document. The names assigned to the paper trays depends upon the printer. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:paper-tray-name</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">default</span>: the default tray specified by printer configuration settings.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type string <a href="#datatype-string">18.2</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:paper-tray-name</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:paper-tray-name</span> attribute are <span class="Attribute_20_Value">default</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_322style_print"><span style="margin-right:0.127cm;">20.322</span></a><a id="__RefHeading__1420092_253892949"/><a id="property-style_print"/>style:print</h2><p class="Text_20_body">The <span class="Attribute">style:print</span> attribute specifies the components in a spreadsheet document to print.</p><p class="Text_20_body">The value of the <span class="Attribute">style:print</span> attribute is a white space separated list of one or more of these values: <span class="Attribute_20_Value">headers</span>, <span class="Attribute_20_Value">grid</span>, <span class="Attribute_20_Value">annotations</span>, <span class="Attribute_20_Value">objects</span>, <span class="Attribute_20_Value">charts</span>, <span class="Attribute_20_Value">drawings</span>, <span class="Attribute_20_Value">formulas</span>, <span class="Attribute_20_Value">zero-values</span>, or the empty list. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:print</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">annotations</span>: annotations should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">charts</span>: charts should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">drawings</span>: drawings should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">formulas</span>: formulas should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">headers</span>: headers should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">grid</span>: grid lines should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">objects</span>: (including graphics): objects should be printed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">zero-values</span>: zero-values should be printed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:print</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The value of the <span class="Attribute">style:print</span> attribute is a white space separated lists of one of these values: <span class="Attribute_20_Value">headers</span>, <span class="Attribute_20_Value">grid</span>, <span class="Attribute_20_Value">annotations</span>, <span class="Attribute_20_Value">objects</span>, <span class="Attribute_20_Value">charts</span>, <span class="Attribute_20_Value">drawings</span>, <span class="Attribute_20_Value">formulas</span>, or <span class="Attribute_20_Value">zero-values</span>, including the empty list.</p><h2 class="Heading_20_2"><a id="a20_323style_print-content"><span style="margin-right:0.127cm;">20.323</span></a><a id="__RefHeading__1420094_253892949"/><a id="property-style_print-content"/>style:print-content</h2><h3 class="Heading_20_3"><a id="a20_323_1General"><span style="margin-right:0.127cm;">20.323.1</span></a><a id="__RefHeading__1420096_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:print-content</span> attribute specifies if content is printed.</p><h3 class="Heading_20_3"><a id="a20_323_2_style_graphic-properties_"><span style="margin-right:0.127cm;">20.323.2</span></a><a id="__RefHeading__1420098_253892949"/><a id="property-style_print-content_element-style_graphic-properties"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:print-content</span> attribute specifies if frame content is printed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:print-content</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:print-content</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h3 class="Heading_20_3"><a id="a20_323_3_style_table-cell-properties_"><span style="margin-right:0.127cm;">20.323.3</span></a><a id="__RefHeading__1420100_253892949"/><a id="property-style_print-content_element-style_table-cell-properties"/>&lt;style:table-cell-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:print-content</span> attribute specifies if cell content is printed.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:print-content</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:print-content</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_324style_print-page-order"><span style="margin-right:0.127cm;">20.324</span></a><a id="__RefHeading__1420102_253892949"/><a id="property-style_print-page-order"/>style:print-page-order</h2><p class="Text_20_body">The <span class="Attribute">style:print-page-order</span> attribute specifies the order in which data in a spreadsheet is numbered and printed when the data does not fit on one printed page.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:print-page-order</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ltr</span>: create pages from the first column to the last column before continuing with the next set of rows. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ttb</span>: create pages from the top row to the bottom row before continuing with the next set of columns.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:print-page-order</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:print-page-order</span> attribute are <span class="Attribute_20_Value">ttb</span> or <span class="Attribute_20_Value">ltr</span>.</p><h2 class="Heading_20_2"><a id="a20_325style_print-orientation"><span style="margin-right:0.127cm;">20.325</span></a><a id="__RefHeading__1420104_253892949"/><a id="property-style_print-orientation"/>style:print-orientation</h2><p class="Text_20_body">The <span class="Attribute">style:print-orientation</span> attribute specifies the orientation of the printed page. The value of this attribute can be <span class="Attribute_20_Value">portrait</span> or <span class="Attribute_20_Value">landscape</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:print-orientation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">landscape</span>: a page is printed in landscape orientation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">ortrait</span>: a page is printed in portrait orientation.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:print-orientation</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:print-orientation</span> attribute are <span class="Attribute_20_Value">portrait</span> or <span class="Attribute_20_Value">landscape</span>.</p><h2 class="Heading_20_2"><a id="a20_326style_protect"><span style="margin-right:0.127cm;">20.326</span></a><a id="__RefHeading__1420106_253892949"/><a id="property-style_protect"/>style:protect</h2><h3 class="Heading_20_3"><a id="a20_326_1General"><span style="margin-right:0.127cm;">20.326.1</span></a><a id="__RefHeading__1420108_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:protect</span> attribute specifies the protection of content.</p><h3 class="Heading_20_3"><a id="a20_326_2_style_graphic-properties_"><span style="margin-right:0.127cm;">20.326.2</span></a><a id="__RefHeading__1420110_253892949"/><a id="property-style_protect_element-style_graphic-properties"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:protect</span> attribute specifies whether the content, size, or position of a frame is protected. The value of this attribute can be either <span class="Attribute_20_Value">none</span> or a white space separated list that consists of any of the values <span class="Attribute_20_Value">content</span>, <span class="Attribute_20_Value">position</span>, or <span class="Attribute_20_Value">size</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:protect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">content</span>: content of a frame should be protected from editing.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: the content, size and position of a frame should be subject to editing.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">osition</span>: the position of a frame should be protected from editing.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">ize</span>: the size of a frame should be protected from editing.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:protect</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:protect</span> attribute are <span class="Attribute_20_Value">none</span>, or white space separated non-empty lists of one of these values: <span class="Attribute_20_Value">content</span>, <span class="Attribute_20_Value">position</span>, or <span class="Attribute_20_Value">size</span>..</p><h3 class="Heading_20_3"><a id="a20_326_3_style_section-properties_"><span style="margin-right:0.127cm;">20.326.3</span></a><a id="__RefHeading__1420112_253892949"/><a id="property-style_protect_element-style_section-properties"/>&lt;style:section-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:protect</span> attribute specifies that sections should not be changed. The user interface should prevent the user from manually making any changes. The <span class="Attribute">style:protect</span> attribute should be set to <span class="Attribute_20_Value">true</span> by default for linked sections or indexes. Removing the protection from linked sections or indexes leaves them unprotected from editing, but any edits will be over-written by updates to those sections.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:protect</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: sections should not be protected from editing.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: sections should be protected from editing.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:protect</span> attribute is usable with the following element: <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:protect</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_327style_punctuation-wrap"><span style="margin-right:0.127cm;">20.327</span></a><a id="__RefHeading__1420114_253892949"/><a id="property-style_punctuation-wrap"/>style:punctuation-wrap</h2><p class="Text_20_body">The <span class="Attribute">style:punctuation-wrap</span> attribute specifies whether a punctuation mark, if one is present, can be hanging, that is, whether it can placed in the margin area at the end of a full line of text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:punctuation-wrap</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">hanging</span>: a punctuation mark can be placed in the margin area at the end of a full line of text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">imple</span>: a punctuation mark can not be placed in the margin area at the end of a full line of text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:punctuation-wrap</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:punctuation-wrap</span> attribute are <span class="Attribute_20_Value">simple</span> or <span class="Attribute_20_Value">hanging</span>.</p><h2 class="Heading_20_2"><a id="a20_328style_register-true"><span style="margin-right:0.127cm;">20.328</span></a><a id="__RefHeading__1420116_253892949"/><a id="property-style_register-true"/>style:register-true</h2><p class="Text_20_body">The <span class="Attribute">style:register-true</span> attribute specifies whether the lines on both sides of a printed page align. The text baselines of text in page columns or text box columns also align.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:register-true</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: lines on both sides of a printed text need not align.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: lines on both sides of a printed text should align.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:register-true</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:register-true</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_329style_register-truth-ref-style-name"><span style="margin-right:0.127cm;">20.329</span></a><a id="__RefHeading__1420118_253892949"/><a id="property-style_register-truth-ref-style-name"/>style:register-truth-ref-style-name</h2><p class="Text_20_body">The <span class="Attribute">style:register-truth-ref-style-name</span> attribute specifies a paragraph style. The line distance specified of the paragraph style is used as the reference line distance for all paragraphs that have the register-truth feature enabled.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:register-truth-ref-style-name</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:register-truth-ref-style-name</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_330style_rel-column-width"><span style="margin-right:0.127cm;">20.330</span></a><a id="__RefHeading__1420120_253892949"/><a id="property-style_rel-column-width"/>style:rel-column-width</h2><p class="Text_20_body">The <span class="Attribute">style:rel-column-width</span> attribute specifies a relative width of a column with a number value, followed by a ”*” (U+002A, ASTERISK) character. If <span class="Formula">r</span><span class="Furmula_20_Sub">c</span> is the relative with of the column, <span class="Emphasis">r</span><span class="Furmula_20_Sub">s</span> the sum of all relative columns widths, and <span class="Formula">w</span><span class="Furmula_20_Sub">s</span> the absolute width that is available for these columns the absolute width <span class="Formula">w</span><span class="Furmula_20_Sub">c</span> of the column is <span class="Formula">w</span><span class="Furmula_20_Sub">c</span><span class="Formula">=r</span><span class="Furmula_20_Sub">c</span><span class="Formula">w</span><span class="Furmula_20_Sub">s</span><span class="Formula">/r</span><span class="Furmula_20_Sub">s</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-column-width</span> attribute is usable with the following element: <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rel-column-width</span> attribute has the data type <span class="Datatype">relativeLength</span> <a href="#datatype-relativeLength">18.3.27</a>.</p><h2 class="Heading_20_2"><a id="a20_331style_rel-height"><span style="margin-right:0.127cm;">20.331</span></a><a id="__RefHeading__1420122_253892949"/><a id="property-style_rel-height"/>style:rel-height</h2><p class="Text_20_body">The <span class="Attribute">style:rel-height</span> attribute specifies the height of a drawing object as a relative value within a frame. The relative value either is a percentage value, the value <span class="Attribute_20_Value">scale</span>, or the value <span class="Attribute_20_Value">scale-min</span>. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:rel-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale</span>: the height should be calculated depending on the width, so that the ratio of width and height of the original image or object size is preserved.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale-min</span>:the height should be calculated as for value <span class="Attribute_20_Value">scale</span>, but the calculated height is a minimum height rather than an absolute one.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The interpretation of relative values depends on the anchor of the drawing object. If the anchor for the drawing object is in a table cell, the percentage value is relative to the surrounding table box. If the anchor for the drawing object is in a text box, the percentage value is relative to the surrounding text box. In other cases, the percentage values is relative to the width of the page or window.</p><p class="Text_20_body">To support consumers that do not support relative width and heights, producers should also provide the height in <span class="Attribute">svg:height</span> and <span class="Attribute">fo:min-height</span> attributes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-height</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:rel-height</span> attribute are a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>, <span class="Attribute_20_Value">scale</span> or <span class="Attribute_20_Value">scale-min</span>.</p><h2 class="Heading_20_2"><a id="a20_332style_rel-width"><span style="margin-right:0.127cm;">20.332</span></a><a id="__RefHeading__1420124_253892949"/><a id="property-style_rel-width"/>style:rel-width</h2><h3 class="Heading_20_3"><a id="a20_332_1_style_graphic-properties_"><span style="margin-right:0.127cm;">20.332.1</span></a><a id="__RefHeading__1420126_253892949"/><a id="property-style_rel-width_element-style_graphic-properties"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:rel-width</span> attribute specifies the relative width of a drawing object. The relative value either is a percentage value, the value <span class="Attribute_20_Value">scale</span>, or the value <span class="Attribute_20_Value">scale-min</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:rel-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale</span>: the width should be calculated depending on the height, so that the ratio of width and height of the original image or object size is preserved.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scale-min</span>: the width should be calculated as for value <span class="Attribute_20_Value">scale</span>, but the calculated width is a minimum width rather than an absolute one.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The interpretation of the percent value depends on the anchor of the drawing object. If the anchor for the drawing object is in a table cell, the percent value of the surrounding table box. If the anchor for the drawing object is in a text box, the percentage value of the surrounding text box. In all other cases, the percent value of the containing page or window</p><p class="Text_20_body">To support consumers that do not support relative width, producers should also provide the width in a <span class="Attribute">svg:width</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:rel-width</span> attribute are a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>, <span class="Attribute_20_Value">scale</span> or <span class="Attribute_20_Value">scale-min</span>.</p><h3 class="Heading_20_3"><a id="a20_332_2_style_table-properties_"><span style="margin-right:0.127cm;">20.332.2</span></a><a id="__RefHeading__1420128_253892949"/><a id="DDE_LINK19"/><a id="property-style_rel-width_element-style_table-properties"/>&lt;style:table-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:rel-width</span> attribute specifies the width of a table relative to the width of the area that the table is in.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rel-width</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rel-width</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_333style_repeat"><span style="margin-right:0.127cm;">20.333</span></a><a id="__RefHeading__1420130_253892949"/><a id="property-style_repeat"/>style:repeat</h2><p class="Text_20_body">The <span class="Attribute">style:repeat</span> attribute specifies if an image can be repeated or stretched over an area. The value of the attribute can be <span class="Attribute_20_Value">no-repeat</span>, <span class="Attribute_20_Value">repeat</span>, or <span class="Attribute_20_Value">stretch</span>.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:repeat</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">no-repeat</span>: image should not be repeated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">epeat</span>: image should be repeated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">stretch</span>: image should be stretched over an area.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:repeat</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:repeat</span> attribute are <span class="Attribute_20_Value">no-repeat</span>, <span class="Attribute_20_Value">repeat</span> or <span class="Attribute_20_Value">stretch</span>.</p><h2 class="Heading_20_2"><a id="a20_334style_repeat-content"><span style="margin-right:0.127cm;">20.334</span></a><a id="__RefHeading__1420132_253892949"/><a id="property-style_repeat-content"/>style:repeat-content</h2><p class="Text_20_body">The <span class="Attribute">style:repeat-content</span> attribute specifies whether text content of a cell is displayed as many times as there is space left in the cell's writing direction. The attribute has no effect for cell content that contains a line break.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:repeat-content</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text content of a cell should not be displayed as many times as there is space left in the cell's writing direction.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text content of a cell should be displayed as many times as there is space left in the cell's writing direction.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:repeat-content</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:repeat-content</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_335style_rfc-language-tag"><span style="margin-right:0.127cm;">20.335</span></a><a id="__RefHeading__1420134_253892949"/><a id="property-style_rfc-language-tag"/>style:rfc-language-tag</h2><p class="Text_20_body">The <span class="Attribute">style:rfc-language-tag</span> attribute specifies a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">It shall only be used if its value can not be expressed as a valid combination of the <span class="Attribute">fo:language</span>, <span class="Attribute">fo:script</span> and <span class="Attribute">fo:country</span> attributes.</p><p class="Text_20_body">Producers may add support for consumers that don't support the <span class="Attribute">style:rfc-language-tag</span> attribute by specifying <span class="Attribute">fo:language</span>, <span class="Attribute">fo:script</span> and <span class="Attribute">fo:country</span> attributes with values that are implementation-dependent. </p><p class="Text_20_body">The attribute is evaluated for any <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters that are not of type asian or complex. <a href="#property-style_script-type">20.348</a></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rfc-language-tag</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rfc-language-tag</span> attribute has the data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h2 class="Heading_20_2"><a id="a20_336style_rfc-language-tag-asian"><span style="margin-right:0.127cm;">20.336</span></a><a id="__RefHeading__1420136_253892949"/><a id="property-style_rfc-language-tag-asian"/>style:rfc-language-tag-asian</h2><p class="Text_20_body">The <span class="Attribute">style:rfc-language-tag-asian</span> attribute specifies a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">It shall only be used if its value can not be expressed as a valid combination of the <span class="Attribute">style:language-asian</span>, <span class="Attribute">style:script-asian</span> and <span class="Attribute">style:country-asian</span> attributes.</p><p class="Text_20_body">Producers may add support for consumers that don't support the <span class="Attribute">style:rfc-language-tag-asian</span> attribute by specifying <span class="Attribute">style:language-asian</span>, <span class="Attribute">style:script-asian</span> and <span class="Attribute">style:country-asian</span> attributes with values that are implementation-dependent. </p><p class="Text_20_body"><a id="DDE_LINK121"/>This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters that are of type asian. <a href="#property-style_script-type">20.348</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rfc-language-tag-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rfc-language-tag-asian</span> attribute has the data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h2 class="Heading_20_2"><a id="a20_337style_rfc-language-tag-complex"><span style="margin-right:0.127cm;">20.337</span></a><a id="__RefHeading__1420138_253892949"/><a id="property-style_rfc-language-tag-complex"/>style:rfc-language-tag-complex</h2><p class="Text_20_body">The <span class="Attribute">style:rfc-language-tag-complex</span> attribute specifies a language identifier according to the rules of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">It shall only be used if its value can not be expressed as a valid combination of the <span class="Attribute">style:language-complex</span>, <span class="Attribute">style:script-complex</span> and <span class="Attribute">style:country-complex</span> attributes.</p><p class="Text_20_body">Producers may add support for consumers that don't support the <span class="Attribute">style:rfc-language-tag-complex</span> attribute by specifying <span class="Attribute">style:language-complex</span>, <span class="Attribute">style:script-complex</span> and <span class="Attribute">style:country-complex</span> attributes with values that are implementation-dependent. </p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters that are of type complex..</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rfc-language-tag-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rfc-language-tag-complex</span> attribute has the data type <span class="Datatype">language</span> <a href="#datatype-language">18.3.16</a>.</p><h2 class="Heading_20_2"><a id="a20_338style_rotation-align"><span style="margin-right:0.127cm;">20.338</span></a><a id="__RefHeading__1420140_253892949"/><a id="property-style_rotation-align"/>style:rotation-align</h2><p class="Text_20_body">The <span class="Attribute">style:rotation-align</span> attribute specifies how the edge of the text in a cell is aligned after a rotation. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:rotation-align</span> attribute are shown in Table <a href="#refTable20">21</a>:</p><p class="Table">Table <a id="refTable20"/>21 - Rotation align values</p><table border="0" cellspacing="0" cellpadding="0" class="Table11"><colgroup><col width="153"/><col width="224"/><col width="289"/></colgroup><tr><td style="text-align:left;width:1.3785in; " class="Table11_A1"><p class="Table_20_Heading">Alignment</p></td><td style="text-align:left;width:2.0201in; " class="Table11_A1"><p class="Table_20_Heading">Text is...</p></td><td style="text-align:left;width:2.6014in; " class="Table11_C1"><p class="Table_20_Heading">Borders and background are...</p></td></tr><tr><td style="text-align:left;width:1.3785in; " class="Table11_A2"><p class="Table_20_Contents">None.</p></td><td style="text-align:left;width:2.0201in; " class="Table11_A2"><p class="Table_20_Contents">Rotated and aligned within the cell. </p></td><td style="text-align:left;width:2.6014in; " class="Table11_C2"><p class="Table_20_Contents">Unchanged.</p></td></tr><tr><td style="text-align:left;"><table border="0" cellspacing="0" cellpadding="0"><colgroup><col width="153"/></colgroup><tr><td style="text-align:left;width:1.3785in; " class="Table11_A2"><p class="Table_20_Contents">Bottom</p></td></tr><tr><td style="text-align:left;width:1.3785in; " class="Table11_A2"><p class="Table_20_Contents">Center</p></td></tr><tr><td style="text-align:left;width:1.3785in; " class="Table11_A2"><p class="Table_20_Contents">Top</p></td></tr></table></td><td style="text-align:left;width:2.0201in; " class="Table11_A2"><p class="Table_20_Contents">Rotated and may overlap with other cells if the text is longer than the length of the cell.</p></td><td style="text-align:left;width:2.6014in; " class="Table11_C2"><p class="Table_20_Contents">Positioned parallel to the text, whereby the edge that is named by the attribute value aligns with the corresponding edge of the cell's original position. </p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rotation-align</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:rotation-align</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">bottom</span>, <span class="Attribute_20_Value">top</span> or <span class="Attribute_20_Value">center</span>.</p><h2 class="Heading_20_2"><a id="a20_339style_rotation-angle"><span style="margin-right:0.127cm;">20.339</span></a><a id="__RefHeading__1420142_253892949"/><a id="property-style_rotation-angle"/>style:rotation-angle</h2><p class="Text_20_body">The <span class="Attribute">style:rotation-angle</span> attribute specifies the rotation angle of content. The attribute value is an angle. </p><p class="Text_20_body">If used with a chart style applied to a <span class="Element">&lt;chart:axis&gt;</span> element the attribute specifies the rotation of the axis labels, each tick label is rotated, the axis title is not affected in this case.</p><p class="Text_20_body">If used with a chart style applied to a <span class="Element">&lt;chart:data-label&gt;</span>, <span class="Element">&lt;chart:data-point&gt;</span>, <span class="Element">&lt;chart:series&gt;</span> or <span class="Element">&lt;chart:plot-area&gt;</span> element the attribute specifies the rotation angle of the according data labels.</p><p class="Text_20_body">If used with a chart style applied to a <span class="Element">&lt;chart:title&gt;</span> element the attribute specifies the rotation angle of the title.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:rotation-angle</span> attribute is usable with the following elements: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:rotation-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a20_340style_row-height"><span style="margin-right:0.127cm;">20.340</span></a><a id="__RefHeading__1420144_253892949"/><a id="property-style_row-height"/>style:row-height</h2><p class="Text_20_body">The <span class="Attribute">style:row-height</span> attribute specifies a fixed row height.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:row-height</span> attribute is usable with the following element: <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:row-height</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_341style_ruby-align"><span style="margin-right:0.127cm;">20.341</span></a><a id="__RefHeading__1420146_253892949"/><a id="property-style_ruby-align"/>style:ruby-align</h2><p class="Text_20_body">The <span class="Attribute">style:ruby-align</span> attribute specifies the horizontal alignment of the ruby text in relationship to the ruby base.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:ruby-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: ruby text centered on ruby base text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">d</span><span class="Attribute_20_Value">istribute-letter</span>: If the width of the ruby text is smaller than that of the ruby base text, then the ruby text contents are evenly distributed across the width of the ruby base text, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the ruby base text, then the letters of the ruby base text are evenly distributed across the width of the ruby text. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">distribute-space</span>: If the width of the ruby text is smaller than that of the ruby base text, then the ruby text contents are evenly distributed across the width of the ruby base text, with a  amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text. If the width of the ruby text is at least the width of the ruby base text, then the same type of space distribution applies to the ruby base text. If the base is shorter than the ruby text, the base is <span class="Attribute_20_Value">distribute-space</span> aligned. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: ruby text to the left of ruby base text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: ruby text to the right of ruby base text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:ruby-align</span> attribute is usable with the following element: <span class="Element">&lt;style:ruby-properties&gt;</span> <a href="#element-style_ruby-properties">17.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:ruby-align</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">distribute-letter</span> or <span class="Attribute_20_Value">distribute-space</span>.</p><h2 class="Heading_20_2"><a id="a20_342style_ruby-position"><span style="margin-right:0.127cm;">20.342</span></a><a id="__RefHeading__1420148_253892949"/><a id="property-style_ruby-position"/>style:ruby-position</h2><p class="Text_20_body">The <span class="Attribute">style:ruby-position</span> attribute specifies the vertical position of the ruby text in relationship to the ruby base.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:ruby-position</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">above</span>: ruby text should be above ruby base text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">elow</span>: ruby text should be below ruby base text.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:ruby-position</span> attribute is usable with the following element: <span class="Element">&lt;style:ruby-properties&gt;</span> <a href="#element-style_ruby-properties">17.10</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:ruby-position</span> attribute are <span class="Attribute_20_Value">above</span> or <span class="Attribute_20_Value">below</span>.</p><h2 class="Heading_20_2"><a id="a20_343style_run-through"><span style="margin-right:0.127cm;">20.343</span></a><a id="__RefHeading__1420150_253892949"/><a id="property-style_run-through"/>style:run-through</h2><p class="Text_20_body">The <span class="Attribute">style:run-through</span> attribute specifies whether content of a frame is displayed in the background or foreground. </p><p class="Text_20_body">The value of this attribute can be <span class="Attribute_20_Value">foreground</span> or <span class="Attribute_20_Value">background</span>. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:run-through</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">background</span>: frame content is displayed behind a text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">foreground</span>: frame content is displayed in front of a text.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Use of this attribute depends upon the presence of a <span class="Attribute">style:wrap</span> attribute with the value <span class="Attribute_20_Value">run-through</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:run-through</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:run-through</span> attribute are <span class="Attribute_20_Value">foreground</span> or <span class="Attribute_20_Value">background</span>.</p><h2 class="Heading_20_2"><a id="a20_344style_scale-to"><span style="margin-right:0.127cm;">20.344</span></a><a id="__RefHeading__1420152_253892949"/><a id="property-style_scale-to"/>style:scale-to</h2><p class="Text_20_body">The <span class="Attribute">style:scale-to</span> attribute specifies that a document is to be scaled to a percentage value. A value of 100% means no scaling. </p><p class="Text_20_body">If this attribute and <span class="Attribute">style:scale-to-pages</span> are absent, a document is not scaled.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:scale-to</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:scale-to</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_345style_scale-to-pages"><span style="margin-right:0.127cm;">20.345</span></a><a id="__RefHeading__1420154_253892949"/><a id="property-style_scale-to-pages"/>style:scale-to-pages</h2><p class="Text_20_body">The <span class="Attribute">style:scale-to-pages</span> attribute specifies the number of pages on which a document should be printed. The document is scaled to fit a specified number of pages.</p><p class="Text_20_body">If this attribute and <span class="Attribute">style:scale-to</span> are absent, a document is not scaled.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:scale-to-pages</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:scale-to-pages</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_346style_script-asian"><span style="margin-right:0.127cm;">20.346</span></a><a id="__RefHeading__1420156_253892949"/><a id="property-style_script-asian"/>style:script-asian</h2><p class="Text_20_body">The <span class="Attribute">style:script-asian</span> attribute specifies the script code of a text. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body"><a id="DDE_LINK12"/>This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">It may be ignored if is not specified together with a <span class="Attribute">style:language-asian</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:script-asian</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:script-asian</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h2 class="Heading_20_2"><a id="a20_347style_script-complex"><span style="margin-right:0.127cm;">20.347</span></a><a id="__RefHeading__1420158_253892949"/><a id="property-style_script-complex"/>style:script-complex</h2><p class="Text_20_body">The <span class="Attribute">style:script-complex</span> attribute specifies the script code of a text. The attribute should be used only if necessary according to the rules of §2.2.3 of <a title="Tags for Identifying Languages" href="http://www.ietf.org/rfc/rfc5646.txt">[RFC5646]</a>, or its successors.</p><p class="Text_20_body">This attribute is evaluated for <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">complex</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">It may be ignored if is not specified together with a <span class="Attribute">style:language-complex</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:script-complex</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:script-complex</span> attribute has the data type <span class="Datatype">scriptCode</span> <a href="#datatype-scriptCode">18.3.29</a>.</p><h2 class="Heading_20_2"><a id="a20_348style_script-type"><span style="margin-right:0.127cm;">20.348</span></a><a id="__RefHeading__1420160_253892949"/><a id="property-style_script-type"/>style:script-type</h2><p class="Text_20_body">The <span class="Attribute">style:script-type</span> attribute specifies which script type dependent attributes ( <span class="Attribute">fo:font-family</span>, <span class="Attribute">style:font-family-asian</span>, <span class="Attribute">style:font-family-complex</span>) are currently active for a portion of text. The attribute may be evaluated by consumers that cannot determine the script types of Unicode characters to select the correct script type dependent formatting properties. Consumers that can determine script types of Unicode characters may also evaluate the attribute and overwrite the script type they determine for certain character with the value of the attribute. </p><p class="Note"><span class="Note_20_Label">Note:</span> The usage of this attribute simplifies transformations from and to <a title="Cascading Style Sheets, level 2" href="http://www.w3.org/TR/1998/REC-CSS2-19980512">[CSS2]</a>/<a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> and other formats that do not have script-dependent attributes, and also can be used to assign script-types to weak <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters, where consumers may choose different script types.</p><p class="Text_20_body">The value <span class="Attribute_20_Value">ignore</span> can be used only within default styles. If it is set, all script-dependent attributes are applied to all script types. This would mean that a <span class="Attribute">fo:font-family</span> would be applied to all script types as well as a <span class="Attribute">style:font-family-asian</span> or <span class="Attribute">style:font-family-complex</span>. </p><p class="Note"><span class="Note_20_Label">Note:</span> Use of the <span class="Attribute_20_Value">ignore</span> value simplifies saving documents with producers that do not support a script type.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:script-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">asian</span>: all asian script type dependent attributes are active.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">complex</span>: all complex script type dependent attributes are active.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ignore</span>: all script type dependent attributes are applied to all script types. This is available on default styles only.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">latin</span>: all latin script type dependent attributes are active.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The mapping of Unicode code points to script types is defined by table <a href="#refTable21">22</a>. Consumers should apply this mapping. For Unicode code points for which no mapping is defined, the mapping is implementation dependent.</p><p class="Table">Table <a id="refTable21"/>22 - Unicode Code Point to Script Type Mapping</p><table border="0" cellspacing="0" cellpadding="0" class="Tabelle1"><colgroup><col width="561"/><col width="103"/></colgroup><tr><td style="text-align:left;width:5.0535in; " class="Tabelle1_A1"><p class="Table_20_Heading">Unicode Code Point Ranges</p></td><td style="text-align:left;width:0.9306in; " class="Tabelle1_B1"><p class="Table_20_Heading">Script Type</p></td></tr><tr><td style="text-align:left;width:5.0535in; " class="Tabelle1_A2"><p class="Text_20_body">U+0003..U+001F, U+0021..U+009F, U+00A1..U+04FF, U+0530..U+058F, U+10A0..U+10FF, U+13A0..U+16FF, U+1E00..U+1FFF, U+2C60..U+2C7F, U+2C80..U+2CE3, U+A720..U+A7FF</p></td><td style="text-align:left;width:0.9306in; " class="Tabelle1_B2"><p class="Text_20_body"><span class="Attribute_20_Value">latin</span></p></td></tr><tr><td style="text-align:left;width:5.0535in; " class="Tabelle1_A2"><p class="Text_20_body">U+0590..U+074F, U+0780..U+07BF, U+0900..U+109F, U+1200..U+137F, U+1780..U+18AF, U+FB50..U+FDFF, U+FE70..U+FEFF</p></td><td style="text-align:left;width:0.9306in; " class="Tabelle1_B2"><p class="Text_20_body"><span class="Attribute_20_Value">complex</span></p></td></tr><tr><td style="text-align:left;width:5.0535in; " class="Tabelle1_A2"><p class="Text_20_body">U+1100..U+11FF, U+2E80..U+31BF, U+31C0..U+31EF, U+3200..U+4DBF, U+4E00..U+A4CF, U+AC00..U+D7AF, U+F900..U+FAFF, U+FE30..U+FE4F, U+FF00..U+FFEF, U+20000..U+2A6DF, U+2F800..U+2FA1F</p></td><td style="text-align:left;width:0.9306in; " class="Tabelle1_B2"><p class="Text_20_body"><span class="Attribute_20_Value">asian</span></p></td></tr></table><p class="Text_20_body">The <span class="Attribute">style:script-type</span> attribute specifies which script type dependent attributes are currently active for a portion of text. The attribute may be evaluated by consumers that do not support script types to select the correct script dependent formatting properties. Consumers that support script types may also evaluate the attribute and overwrite the script type they would evaluate for a specific character.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:script-type</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:script-type</span> attribute are <span class="Attribute_20_Value">latin</span>, <span class="Attribute_20_Value">asian</span>, <span class="Attribute_20_Value">complex</span> or <span class="Attribute_20_Value">ignore</span>.</p><h2 class="Heading_20_2"><a id="a20_349style_shadow"><span style="margin-right:0.127cm;">20.349</span></a><a id="__RefHeading__1420162_253892949"/><a id="property-style_shadow"/>style:shadow</h2><p class="Text_20_body">The <span class="Attribute">style:shadow</span> attribute specifies a shadow effect.</p><p class="Text_20_body">The defined values for this attribute are those defined in §7.16.5 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>, except the value <span class="Alien_20_Attribute_20_Value">inherit</span>.</p><p class="Text_20_body">The shadow effect is not applied to the text content of an element, but depending on the element where the attribute appears, to a paragraph, a text box, a page body, a header, a footer, a table or a table cell. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:shadow</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>, <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>, <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>, <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>, <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a> and <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:shadow</span> attribute are <span class="Attribute_20_Value">none</span> or a value of type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_350style_shrink-to-fit"><span style="margin-right:0.127cm;">20.350</span></a><a id="__RefHeading__1420164_253892949"/><a id="property-style_shrink-to-fit"/>style:shrink-to-fit</h2><p class="Text_20_body">The <span class="Attribute">style:shrink-to-fit</span> attribute specifies whether content is reduced in size to fit within a cell or drawing object. Shrinking means that the font size of the content is decreased to fit the content into a cell or drawing object. The attribute has no effect on cells where the cell content  already fits into the cell.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:shrink-to-fit</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: content should not be reduced in size to fit within a cell or drawing object.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: content should be reduced in size to fit within a cell or drawing object.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:shrink-to-fit</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a> and <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:shrink-to-fit</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_351style_snap-to-layout-grid"><span style="margin-right:0.127cm;">20.351</span></a><a id="__RefHeading__1420166_253892949"/><a id="property-style_snap-to-layout-grid"/>style:snap-to-layout-grid</h2><p class="Text_20_body">The <span class="Attribute">style:snap-to-layout-grid</span> attribute specifies whether the layout of a paragraph should consider the layout grid settings of the page where it appears.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:snap-to-layout-grid</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: layout of a paragraph should not consider the layout grid settings of the page where it appears.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: layout of a paragraph should consider the layout grid settings of the page where it appears.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:snap-to-layout-grid</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:snap-to-layout-grid</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_352style_tab-stop-distance"><span style="margin-right:0.127cm;">20.352</span></a><a id="__RefHeading__1420168_253892949"/><a id="property-style_tab-stop-distance"/>style:tab-stop-distance</h2><p class="Text_20_body">The <span class="Attribute">style:tab-stop-distance</span> attribute specifies the distance between default tab stops. A default tab stop is repeated automatically after the specified distance. Default tab stops are only evaluated if they are specified within a default style.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:tab-stop-distance</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:tab-stop-distance</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_353style_table-centering"><span style="margin-right:0.127cm;">20.353</span></a><a id="__RefHeading__1420170_253892949"/><a id="property-style_table-centering"/>style:table-centering</h2><p class="Text_20_body">The <span class="Attribute">style:table-centering</span> attribute specifies whether tables are centered horizontally and/or vertically on the page. This attribute only applies to spreadsheet documents.</p><p class="Text_20_body">The default is to align the table to the top-left or top-right corner of the page, depending of its writing direction.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:table-centering</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">both</span>: tables should be centered both horizontally and vertically on the pages where they appear.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">h</span><span class="Attribute_20_Value">orizontal</span>: tables should be centered horizontally on the pages where they appear.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: tables should not be centered both horizontally or vertically on the pages where they appear.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">vertical</span>: tables should be centered vertically on the pages where they appear.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:table-centering</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:table-centering</span> attribute are <span class="Attribute_20_Value">horizontal</span>, <span class="Attribute_20_Value">vertical</span>, <span class="Attribute_20_Value">both</span> or <span class="Attribute_20_Value">none</span>.</p><h2 class="Heading_20_2"><a id="a20_354style_text-align-source"><span style="margin-right:0.127cm;">20.354</span></a><a id="__RefHeading__1420172_253892949"/><a id="property-style_text-align-source"/>style:text-align-source</h2><p class="Text_20_body">The <span class="Attribute">style:text-align-source</span> attribute specifies the source of a text-align attribute. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-align-source</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fix</span>: content alignment uses the value of the <span class="Attribute">fo:text-align</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">value-type</span>: content alignment uses the value-type of the cell.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default alignment for a cell value-type <span class="Attribute_20_Value">string</span> is left, for other value-types it is right. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-align-source</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-align-source</span> attribute are <span class="Attribute_20_Value">fix</span> or <span class="Attribute_20_Value">value-type</span>.</p><h2 class="Heading_20_2"><a id="a20_355style_text-autospace"><span style="margin-right:0.127cm;">20.355</span></a><a id="__RefHeading__1420174_253892949"/><a id="property-style_text-autospace"/>style:text-autospace</h2><p class="Text_20_body">The <span class="Attribute">style:text-autospace</span> attribute specifies whether to add space between portions of Asian, Western, and complex texts.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-autospace</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">ideograph-alpha</span>: space should be added between portions of Asian, Western and complex texts.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: space should not be added between portions of Asian, Western and complex texts.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-autospace</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-autospace</span> attribute are <span class="Attribute_20_Value">none</span> or <span class="Attribute_20_Value">ideograph-alpha</span>.</p><h2 class="Heading_20_2"><a id="a20_356style_text-blinking"><span style="margin-right:0.127cm;">20.356</span></a><a id="__RefHeading__1420176_253892949"/><a id="property-style_text-blinking"/>style:text-blinking</h2><p class="Text_20_body">The <span class="Attribute">style:text-blinking</span> attribute specifies whether text blinks.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-blinking</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text should not blink.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text should blink.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-blinking</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-blinking</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_357style_text-combine"><span style="margin-right:0.127cm;">20.357</span></a><a id="__RefHeading__1420178_253892949"/><a id="property-style_text-combine"/>style:text-combine</h2><p class="Text_20_body">The <span class="Attribute">style:text-combine</span> attribute specifies whether to combine characters so that they are displayed within two lines.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-combine</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">letters</span>: Display text in Kumimoji. Up to five (5) characters are combined within two lines and are displayed with a reduced size in a single wide-cell character. Additional characters are displayed as normal text. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">lines</span>: Displays text in Warichu. All characters with the <span class="Attribute">style:text-combine</span> attribute that immediately follow each other are displayed within two lines of approximately the same length. A line break may occur between any two characters to meet this constraint. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">n</span><span class="Attribute_20_Value">one</span>: characters should not be combined.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-combine</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-combine</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">letters</span> or <span class="Attribute_20_Value">lines</span>.</p><h2 class="Heading_20_2"><a id="a20_358style_text-combine-start-char"><span style="margin-right:0.127cm;">20.358</span></a><a id="__RefHeading__1420180_253892949"/><a id="property-style_text-combine-start-char"/>style:text-combine-start-char</h2><p class="Text_20_body">The <span class="Attribute">style:text-combine-start-char</span> attribute specifies the start character that is displayed before a portion of text whose <span class="Attribute">style:text-combine</span> attribute has a value of <span class="Attribute_20_Value">lines</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-combine-start-char</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-combine-start-char</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a20_359style_text-combine-end-char"><span style="margin-right:0.127cm;">20.359</span></a><a id="__RefHeading__1420182_253892949"/><a id="property-style_text-combine-end-char"/>style:text-combine-end-char</h2><p class="Text_20_body">The <span class="Attribute">style:text-combine-end-char</span> attribute specifies the end character that is displayed after a portion of text whose <span class="Attribute">style:text-combine</span> attribute has a value of <span class="Attribute_20_Value">lines</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-combine-end-char</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-combine-end-char</span> attribute has the data type <span class="Datatype">character</span> <a href="#datatype-character">18.3.7</a>.</p><h2 class="Heading_20_2"><a id="a20_360style_text-emphasize"><span style="margin-right:0.127cm;">20.360</span></a><a id="__RefHeading__1420184_253892949"/><a id="property-style_text-emphasize"/>style:text-emphasize</h2><p class="Text_20_body">The <span class="Attribute">style:text-emphasize</span> attribute specifies emphasis in a text composed of <a title="The Unicode Consortium. The Unicode Standard, Version 5.2.0">[UNICODE]</a> characters whose script type is <span class="Attribute_20_Value">asian</span>. <a href="#property-style_script-type">20.348</a></p><p class="Text_20_body">The value of this attribute consists of two white space-separated values.</p><p class="Text_20_body">The first value represents the style to use for emphasis and it can be <span class="Attribute_20_Value">accent</span>, <span class="Attribute_20_Value">circle</span>, <span class="Attribute_20_Value">dot</span>, <span class="Attribute_20_Value">disc</span> or <span class="Attribute_20_Value">none</span>.</p><p class="Text_20_body">The second value represents the position of the emphasis and it can be <span class="Attribute_20_Value">above</span> or <span class="Attribute_20_Value">below</span>. If the first value is <span class="Attribute_20_Value">none</span>, the second value can be omitted.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-emphasize</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">accent</span>: calligraphic accent strokes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">circle</span>: hollow circles.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">disc</span>: filled circles.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">d</span><span class="Attribute_20_Value">ot</span>: calligraphic dot.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: no emphasis marks.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-emphasize</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-emphasize</span> attribute are <span class="Attribute_20_Value">none</span>, or two white space separated values. The first of these values is one of: <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">accent</span>, <span class="Attribute_20_Value">dot</span>, <span class="Attribute_20_Value">circle</span> or <span class="Attribute_20_Value">disc</span>. The second of these values is one of: <span class="Attribute_20_Value">above</span> or <span class="Attribute_20_Value">below</span>.</p><h2 class="Heading_20_2"><a id="a20_361style_text-line-through-color"><span style="margin-right:0.127cm;">20.361</span></a><a id="__RefHeading__1420186_253892949"/><a id="property-style_text-line-through-color"/>style:text-line-through-color</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-color</span> attribute specifies the color that is used for line-through text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-line-through-color</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">font-color</span>: current text color is used for underlining.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-color</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-line-through-color</span> attribute are <span class="Attribute_20_Value">font-color</span> or a value of type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_362style_text-line-through-mode"><span style="margin-right:0.127cm;">20.362</span></a><a id="__RefHeading__1420188_253892949"/><a id="property-style_text-line-through-mode"/>style:text-line-through-mode</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-mode</span> attribute specifies whether lining through is applied to words only or to portions of text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-line-through-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">continuous</span>: lining is applied to words and separating spaces.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">skip-white-space</span>: lining is not applied to spaces between words.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-line-through-mode</span> attribute are <span class="Attribute_20_Value">continuous</span> or <span class="Attribute_20_Value">skip-white-space</span>.</p><h2 class="Heading_20_2"><a id="a20_363style_text-line-through-style"><span style="margin-right:0.127cm;">20.363</span></a><a id="__RefHeading__1420190_253892949"/><a id="property-style_text-line-through-style"/>style:text-line-through-style</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-style</span> attribute specifies a style for rendering a line-through text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-line-through-style</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: text has no line through it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dash</span>: text has a dashed line through it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dash</span>: text has a line whose repeating pattern is a dot followed by a dash through it.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dot-dash</span>: text has a line whose repeating pattern is two dots followed by a dash through it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dotted</span>: text has a dotted line through it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long-dash</span>: text has a dashed line whose dashes are longer than the ones from the dashed line for value dash through it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: text has a solid line through it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wave</span>: text has a wavy line through it. <span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"><span class="Note_20_Label">Note: </span>The definitions of the values of the <span class="Attribute">style:text-line-through-style</span> attribute are based on the text decoration style 'text-line-through-style' from <a title="CSS3 Text Module" href="http://www.w3.org/TR/2003/CR-css3-text-20030514">[CSS3Text]</a>, §9.2.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-style</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-line-through-style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">long-dash</span>, <span class="Attribute_20_Value">dot-dash</span>, <span class="Attribute_20_Value">dot-dot-dash</span> or <span class="Attribute_20_Value">wave</span>.</p><h2 class="Heading_20_2"><a id="a20_364style_text-line-through-text"><span style="margin-right:0.127cm;">20.364</span></a><a id="__RefHeading__1420192_253892949"/><a id="property-style_text-line-through-text"/>style:text-line-through-text</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-text</span> attribute specifies a text that is used for line-through. The attribute will be evaluated only if the value of <span class="Attribute">style:text-line-through-style</span> attribute is different than <span class="Attribute_20_Value">none</span>.</p><p class="Text_20_body">If the attribute value is not empty, the attribute value string is used for line-through instead of the line style that has been specified by the <span class="Attribute">style:text-line-through-style</span> attribute. Consumers that do not support line-through with text should ignore the attribute, i and should use the line style specified by the <span class="Attribute">style:text-line-through-style</span> attribute.</p><p class="Text_20_body">Consumers that support line-through with single characters only, should use the first character of the value for line-through, if the <span class="Attribute">style:text-line-through-text</span> attribute value as more than one character. Consumers that support line-through with specific characters only (like ”x” or ”/” (U+002F, SOLIDUS) should use one of these characters if the attribute specifies characters that are not supported.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-text</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-line-through-text</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_365style_text-line-through-text-style"><span style="margin-right:0.127cm;">20.365</span></a><a id="__RefHeading__1420194_253892949"/><a id="property-style_text-line-through-text-style"/>style:text-line-through-text-style</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-text-style</span> specifies a text style that is applied to text-line-through characters. It is not applied to line-through lines. If the attribute appears in an automatic style, it may reference either an automatic text style or a common style. If the attribute appears in a common style, it may reference a common style only.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-text-style</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-line-through-text-style</span> attribute has the data type <span class="Datatype">styleNameRef</span> <a href="#datatype-styleNameRef">18.3.32</a>.</p><h2 class="Heading_20_2"><a id="a20_366style_text-line-through-type"><span style="margin-right:0.127cm;">20.366</span></a><a id="__RefHeading__1420196_253892949"/><a id="property-style_text-line-through-type"/>style:text-line-through-type</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-type</span> attribute specifies whether text is lined through, and if so, whether a single or double line will be used. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-line-through-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: a double line should be used for a line-through text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: deprecated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">single</span>: a single line should be used for a line-through text.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Every occurrence of the <span class="Attribute">style:text-line-through-type</span> attribute should be accompanied by an occurrence of the <span class="Attribute">style:text-line-through-style</span> attribute on the same element. There should not be an occurrence of the <span class="Attribute">style:text-line-through-type</span> attribute if the value of the <span class="Attribute">style:text-line-through-style</span> attribute is <span class="Attribute_20_Value">none</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-type</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-line-through-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">single</span> or <span class="Attribute_20_Value">double</span>.</p><h2 class="Heading_20_2"><a id="a20_367style_text-line-through-width"><span style="margin-right:0.127cm;">20.367</span></a><a id="__RefHeading__1420198_253892949"/><a id="property-style_text-line-through-width"/>style:text-line-through-width</h2><p class="Text_20_body">The <span class="Attribute">style:text-line-through-width</span> attribute specifies the width of a line-through line. The value <span class="Attribute_20_Value">bold</span> specifies a line width that is calculated from the font sizes like an <span class="Attribute_20_Value">auto</span> width, but is wider than an <span class="Attribute_20_Value">auto</span> width.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-line-through-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the width of a line-through should be calculated from the font size of the text where the line-through will appear. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bold</span>: the width of a line-through should be calculated from the font size of the text where the line-through will appear but is wider than for the value of <span class="Attribute_20_Value">auto</span>. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The line-through text styles referenced by the values <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span> and <span class="Attribute_20_Value">thin</span>, are implementation-defined. Thin shall be smaller width than medium and medium shall be a smaller width than thick. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-line-through-width</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-line-through-width</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">thin</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span>, a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>, a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a> or a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_368style_text-outline"><span style="margin-right:0.127cm;">20.368</span></a><a id="__RefHeading__1420200_253892949"/><a id="property-style_text-outline"/>style:text-outline</h2><p class="Text_20_body">The <span class="Attribute">style:text-outline</span> attribute specifies whether to display an outline of text or the text itself. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-outline</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text itself should be displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span><span class="Source_20_Text">:</span> outline of text should be displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-outline</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-outline</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_369style_text-overline-color"><span style="margin-right:0.127cm;">20.369</span></a><a id="__RefHeading__1420202_253892949"/><a id="property-style_text-overline-color"/>style:text-overline-color</h2><p class="Text_20_body">The <span class="Attribute">style:text-overline-color</span> attribute specifies a color that is used to overline text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-overline-color</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">font-color</span>: the current text color is used for overlining.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">color</span><span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-overline-color</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-overline-color</span> attribute are <span class="Attribute_20_Value">font-color</span> or a value of type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_370style_text-overline-mode"><span style="margin-right:0.127cm;">20.370</span></a><a id="__RefHeading__1420204_253892949"/><a id="property-style_text-overline-mode"/>style:text-overline-mode</h2><p class="Text_20_body">The <span class="Attribute">style:text-overline-mode</span> attribute specifies whether overlining is applied to words only or to portions of text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-line-through-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">continuous</span>: overlining is applied to words and separating spaces.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">skip-white-space</span>: overlining is not applied to spaces between words.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-overline-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-overline-mode</span> attribute are <span class="Attribute_20_Value">continuous</span> or <span class="Attribute_20_Value">skip-white-space</span>.</p><h2 class="Heading_20_2"><a id="a20_371style_text-overline-style"><span style="margin-right:0.127cm;">20.371</span></a><a id="__RefHeading__1420206_253892949"/><a id="property-style_text-overline-style"/>style:text-overline-style</h2><p class="Text_20_body">The <span class="Attribute">style:text-overline-style</span> attribute specifies a style for rendering a line over text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-overline-style</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: text has no overlining. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dash</span>: text has a dashed line overlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dash</span>: text has a line whose repeating pattern is a dot followed by a dash overlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dot-dash</span>: text has a line whose repeating pattern is two dots followed by a dash overlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dotted</span>: text has a dotted line overlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long-dash</span>: text has a dashed line whose dashes are longer than the ones from the dashed line for value dash overlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: text has a solid line overlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wave</span>: text has a wavy line overlining it.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note:</span> The definitions of the values of the <span class="Attribute">style:text-overline-style</span> attribute are based on the text decoration style 'text-overline-style' from <a title="CSS3 Text Module" href="http://www.w3.org/TR/2003/CR-css3-text-20030514">[CSS3Text]</a>, §9.2.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-overline-style</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-overline-style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">long-dash</span>, <span class="Attribute_20_Value">dot-dash</span>, <span class="Attribute_20_Value">dot-dot-dash</span> or <span class="Attribute_20_Value">wave</span>.</p><h2 class="Heading_20_2"><a id="a20_372style_text-overline-type"><span style="margin-right:0.127cm;">20.372</span></a><a id="__RefHeading__1420208_253892949"/><a id="property-style_text-overline-type"/>style:text-overline-type</h2><p class="Text_20_body">The <span class="Attribute">style:text-overline-type</span> attribute specifies the type of overlining applied to a text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-overline-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: a double line should be used for overlining text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: deprecated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">ingle</span>: a single line should be used for overlining text.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Every occurrence of the <span class="Attribute">style:text-overline-type</span> attribute should be accompanied by an occurrence of the <span class="Attribute">style:text-overline-style</span> attribute on the same element. There should not be an occurrence of the <span class="Attribute">style:text-overline-type</span> attribute if the value of the <span class="Attribute">style:text-overline-style</span> attribute is <span class="Attribute_20_Value">none</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-overline-type</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-overline-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">single</span> or <span class="Attribute_20_Value">double</span>.</p><h2 class="Heading_20_2"><a id="a20_373style_text-overline-width"><span style="margin-right:0.127cm;">20.373</span></a><a id="__RefHeading__1420210_253892949"/><a id="property-style_text-overline-width"/>style:text-overline-width</h2><p class="Text_20_body">The <span class="Attribute">style:text-overline-width</span> attribute specifies the width of an overline. The value <span class="Attribute_20_Value">bold</span> specifies a line width that is calculated from the font sizes like an <span class="Attribute_20_Value">auto</span> width, but is wider than an <span class="Attribute_20_Value">auto</span> width.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-overline-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the width of an overline should be calculated from the font size of the text where the overline will appear. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bold</span>: the width of an overline should be calculated from the font size of the text where the overline will appear but is wider than for the value of <span class="Attribute_20_Value">auto</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The overline text styles referenced by the values <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span> and <span class="Attribute_20_Value">thin</span>, are implementation-defined. Thin shall be smaller width than medium and medium shall be a smaller width than thick. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-overline-width</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-overline-width</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">thin</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span>, a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>, a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a> or a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_374style_text-position"><span style="margin-right:0.127cm;">20.374</span></a><a id="__RefHeading__1420212_253892949"/><a id="property-style_text-position"/>style:text-position</h2><p class="Text_20_body">The <span class="Attribute">style:text-position</span> attribute specifies whether text is positioned above or below the baseline and to specify the relative font height that is used for this text.</p><p class="Text_20_body">This attribute can have one or two values.</p><p class="Text_20_body">The first value shall be present and specifies the vertical text position as a percentage of the current font height or it takes one of the values <span class="Attribute_20_Value">sub</span> or <span class="Attribute_20_Value">super</span>. Negative percentages or the <span class="Attribute_20_Value">sub</span> value place the text below the baseline. Positive percentages or the <span class="Attribute_20_Value">super</span> value place the text above the baseline. If <span class="Attribute_20_Value">sub</span> or <span class="Attribute_20_Value">super</span> is specified, the consumer chooses an appropriate text position.</p><p class="Text_20_body">The second value may be present and specifies the font height as a percentage of the current font-height. If this value is not specified, an appropriate font height is used. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-position</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-position</span> attribute has one or two white space separated values. The first values is of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>, or is one of: <span class="Attribute_20_Value">super</span> or <span class="Attribute_20_Value">sub</span>. The second value is of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_375style_text-rotation-angle"><span style="margin-right:0.127cm;">20.375</span></a><a id="__RefHeading__1420214_253892949"/><a id="property-style_text-rotation-angle"/>style:text-rotation-angle</h2><p class="Text_20_body">The <span class="Attribute">style:text-rotation-angle</span> attribute specifies an angle to which text is rotated. The value of this attribute can be any integer, which specifies the rotation angle in degrees, or an angle as specified in <span class="Datatype">angle</span>. <a href="#datatype-angle">18.3.1</a></p><p class="Text_20_body">If more than one character is selected, the entire selection is rotated as a block.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-rotation-angle</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-rotation-angle</span> attribute has the data type <span class="Datatype">angle</span> <a href="#datatype-angle">18.3.1</a>.</p><h2 class="Heading_20_2"><a id="a20_376style_text-rotation-scale"><span style="margin-right:0.127cm;">20.376</span></a><a id="__RefHeading__1420216_253892949"/><a id="property-style_text-rotation-scale"/>style:text-rotation-scale</h2><p class="Text_20_body">The <span class="Attribute">style:text-rotation-scale</span> attribute specifies whether for rotated text the width of the text should be scaled to fit into the current line height or the width of the text should remain fixed, therefore changing the current line height.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-rotation-scale</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">fixed</span>: width of text should remain fixed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">ine-height</span>: width of text should be scaled to fit the current line height.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-rotation-scale</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-rotation-scale</span> attribute are <span class="Attribute_20_Value">fixed</span> or <span class="Attribute_20_Value">line-height</span>.</p><h2 class="Heading_20_2"><a id="a20_377style_text-scale"><span style="margin-right:0.127cm;">20.377</span></a><a id="__RefHeading__1420218_253892949"/><a id="property-style_text-scale"/>style:text-scale</h2><p class="Text_20_body">The <span class="Attribute">style:text-scale</span> attribute specifies whether to decrease or increase the width of text by scaling the font width.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-scale</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:text-scale</span> attribute has the data type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.</p><h2 class="Heading_20_2"><a id="a20_378style_text-underline-color"><span style="margin-right:0.127cm;">20.378</span></a><a id="__RefHeading__1420220_253892949"/><a id="property-style_text-underline-color"/>style:text-underline-color</h2><p class="Text_20_body">The <span class="Attribute">style:text-underline-color</span> attribute specifies a color that is used to underline text. The value of this attribute is either <span class="Attribute_20_Value">font-color</span> or a color. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-underline-color</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">font-color</span>: the current text color is used for underlining.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">color</span>: the color to be used for underlining.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-underline-color</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-underline-color</span> attribute are <span class="Attribute_20_Value">font-color</span> or a value of type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_379style_text-underline-mode"><span style="margin-right:0.127cm;">20.379</span></a><a id="__RefHeading__1420222_253892949"/><a id="property-style_text-underline-mode"/>style:text-underline-mode</h2><p class="Text_20_body">The <span class="Attribute">style:text-underline-mode</span> attribute specifies whether underlining is applied to words only or to portions of text. If underlining is applied to text portions, the spaces between words and the words are underlined. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-underline-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">continuous</span>: underlining is applied to words and separating spaces.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">skip-white-space</span>: underlining is not applied to spaces between words.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-underline-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-underline-mode</span> attribute are <span class="Attribute_20_Value">continuous</span> or <span class="Attribute_20_Value">skip-white-space</span>.</p><h2 class="Heading_20_2"><a id="a20_380style_text-underline-style"><span style="margin-right:0.127cm;">20.380</span></a><a id="__RefHeading__1420224_253892949"/><a id="property-style_text-underline-style"/>style:text-underline-style</h2><p class="Text_20_body">The <span class="Attribute">style:text-underline-style</span> attribute specifies a style for underlining text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-underline-style</span> attribute are: </p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: text has no underlining. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dash</span>: text has a dashed line underlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dash</span>: text has a line whose repeating pattern is a dot followed by a dash underlining it.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dot-dot-dash</span>: text has a line whose repeating pattern is two dots followed by a dash underlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dotted</span>: text has a dotted line underlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">long-dash</span>: text has a dashed line whose dashes are longer than the ones from the dashed line for value dash underlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">solid</span>: text has a solid line underlining it. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">wave</span>: text has a wavy line underlining it. <span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note: </span>The definitions of the values of the <span class="Attribute">style:text-underline-style</span> attribute are based on the text decoration style 'text-underline-style' from <a title="CSS3 Text Module" href="http://www.w3.org/TR/2003/CR-css3-text-20030514">[CSS3Text]</a>, §9.2.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-underline-style</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-underline-style</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">solid</span>, <span class="Attribute_20_Value">dotted</span>, <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">long-dash</span>, <span class="Attribute_20_Value">dot-dash</span>, <span class="Attribute_20_Value">dot-dot-dash</span> or <span class="Attribute_20_Value">wave</span>.</p><h2 class="Heading_20_2"><a id="a20_381style_text-underline-type"><span style="margin-right:0.127cm;">20.381</span></a><a id="__RefHeading__1420226_253892949"/><a id="property-style_text-underline-type"/>style:text-underline-type</h2><p class="Text_20_body">The <span class="Attribute">style:text-underline-type</span> attribute specifies the type of underlining applied to a text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-underline-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">double</span>: a double line should be used for underlining applied to a text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: deprecated.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">s</span><span class="Attribute_20_Value">ingle</span>: a single line should be used for underlining applied to a text.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Every occurrence of the <span class="Attribute">style:text-underline-type</span> attribute should be accompanied by an occurrence of the <span class="Attribute">style:text-underline-style</span> attribute on the same element. There should not be an occurrence of the <span class="Attribute">style:text-underline-type</span> attribute if the value of the <span class="Attribute">style:text-underline-style</span> attribute is <span class="Attribute_20_Value">none</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-underline-type</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-underline-type</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">single</span> or <span class="Attribute_20_Value">double</span>.</p><h2 class="Heading_20_2"><a id="a20_382style_text-underline-width"><span style="margin-right:0.127cm;">20.382</span></a><a id="__RefHeading__1420228_253892949"/><a id="property-style_text-underline-width"/>style:text-underline-width</h2><p class="Text_20_body">The <span class="Attribute">style:text-underline-width</span> attribute specifies the width of an underline. The value <span class="Attribute_20_Value">bold</span> specifies a line width that is calculated from the font sizes like an <span class="Attribute_20_Value">auto</span> width, but is wider than an <span class="Attribute_20_Value">auto</span> width.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:text-underline-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: the width of an underline should be calculated from the font size of the text where the underline will appear. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bold</span>: the width of an underline should be calculated from the font size of the text where the underline will appear but is wider than for the value of <span class="Attribute_20_Value">auto</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The underline text styles referenced by the values <span class="Attribute_20_Value">dash</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span> and <span class="Attribute_20_Value">thin</span>, are implementation-defined. Thin shall be smaller width than medium and medium shall be a smaller width than thick. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:text-underline-width</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:text-underline-width</span> attribute are <span class="Attribute_20_Value">auto</span>, <span class="Attribute_20_Value">normal</span>, <span class="Attribute_20_Value">bold</span>, <span class="Attribute_20_Value">thin</span>, <span class="Attribute_20_Value">medium</span>, <span class="Attribute_20_Value">thick</span>, a value of type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>, a value of type <span class="Datatype">percent</span> <a href="#datatype-percent">18.3.23</a> or a value of type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_383style_use-optimal-column-width"><span style="margin-right:0.127cm;">20.383</span></a><a id="__RefHeading__1420230_253892949"/><a id="property-style_use-optimal-column-width"/>style:use-optimal-column-width</h2><p class="Text_20_body">The <span class="Attribute">style:use-optimal-column-width</span> attribute specifies that a column width should be recalculated automatically if content in the column changes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:use-optimal-column-width</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: column width should not be recalculated automatically if content in the column changes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span><span class="Source_20_Text">:</span> column width should be recalculated automatically if content in the column changes.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:use-optimal-column-width</span> attribute is usable with the following element: <span class="Element">&lt;style:table-column-properties&gt;</span> <a href="#element-style_table-column-properties">17.16</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:use-optimal-column-width</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_384style_use-optimal-row-height"><span style="margin-right:0.127cm;">20.384</span></a><a id="__RefHeading__1420232_253892949"/><a id="property-style_use-optimal-row-height"/>style:use-optimal-row-height</h2><p class="Text_20_body">The <span class="Attribute">style:use-optimal-row-height</span> attribute specifies that a row height should be recalculated automatically if content in the row changes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:use-optimal-row-height</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: row height should not be recalculated automatically if content in the row changes.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span><span class="Source_20_Text">:</span> row height should be recalculated automatically if content in the row changes.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:use-optimal-row-height</span> attribute is usable with the following element: <span class="Element">&lt;style:table-row-properties&gt;</span> <a href="#element-style_table-row-properties">17.17</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:use-optimal-row-height</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_385style_use-window-font-color"><span style="margin-right:0.127cm;">20.385</span></a><a id="__RefHeading__1420234_253892949"/><a id="property-style_use-window-font-color"/>style:use-window-font-color</h2><p class="Text_20_body">The <span class="Attribute">style:use-window-font-color</span> attribute specifies whether the window foreground color should be used as the foreground color for a light background color and white for a dark background color. The determination of light or dark color is implementation-defined.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:use-window-font-color</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: the foreground color is specified by the <span class="Attribute">fo:color</span> attribute. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span><span class="Source_20_Text">:</span> windows foreground color should be used as the foreground color for a light background color and white for a dark background color.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:use-window-font-color</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:use-window-font-color</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_386style_vertical-align"><span style="margin-right:0.127cm;">20.386</span></a><a id="__RefHeading__1420236_253892949"/><a id="property-style_vertical-align"/>style:vertical-align</h2><h3 class="Heading_20_3"><a id="a20_386_1_style_paragraph-properties_"><span style="margin-right:0.127cm;">20.386.1</span></a><a id="__RefHeading__1420238_253892949"/><a id="property-style_vertical-align_element-style_paragraph-properties"/>&lt;style:paragraph-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:vertical-align</span> attribute specifies the vertical position of a character. By default characters are aligned according to their baseline. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:vertical-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">auto</span>: automatically, which sets the vertical alignment to suit the text rotation. Text that is rotated 0 or 90 degrees is aligned to the baseline, while text that is rotated 270 degrees is aligned to the center of the line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">b</span><span class="Attribute_20_Value">aseline</span>: to the baseline of the character.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: to the bottom of the line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">middle</span>: to the center of the line.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: to the top of the line.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:vertical-align</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:vertical-align</span> attribute are <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">middle</span>, <span class="Attribute_20_Value">bottom</span>, <span class="Attribute_20_Value">auto</span> or <span class="Attribute_20_Value">baseline</span>.</p><h3 class="Heading_20_3"><a id="a20_386_2_style_table-cell-properties_"><span style="margin-right:0.127cm;">20.386.2</span></a><a id="__RefHeading__1420240_253892949"/><a id="property-style_vertical-align_element-style_table-cell-properties"/>&lt;style:table-cell-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">style:vertical-align</span> attribute specifies the vertical alignment of text in a table cell. The options for the vertical alignment attribute are as follows:</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:vertical-align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">automatic</span>: consumer determines how to align the text.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: aligns text vertically with the bottom of the cell.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">middle</span>: aligns text vertically with the middle of the cell.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: aligns text vertically with the top of the cell.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:vertical-align</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:vertical-align</span> attribute are <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">middle</span>, <span class="Attribute_20_Value">bottom</span> or <span class="Attribute_20_Value">automatic</span>.</p><h2 class="Heading_20_2"><a id="a20_387style_vertical-pos"><span style="margin-right:0.127cm;">20.387</span></a><a id="__RefHeading__1420242_253892949"/><a id="property-style_vertical-pos"/>style:vertical-pos</h2><p class="Text_20_body">The <span class="Attribute">style:vertical-pos</span> attribute specifies the vertical alignment of a frame relative to a specific area.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:vertical-pos</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">below</span>: the top corner of the frame is positioned below the reference area. <span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">bottom</span>: the bottom of the frame is aligned with the reference area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">from-top</span>: the <span class="Attribute">svg:y</span> attribute associated with the frame element specifies the vertical position of the frame. Otherwise, the <span class="Attribute">svg:y</span> attribute is ignored for text documents.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">middle</span>: the middle of the frame is aligned with the reference area.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">top</span>: the top of the frame is aligned with the reference area.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:vertical-pos</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a> and <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:vertical-pos</span> attribute are <span class="Attribute_20_Value">top</span>, <span class="Attribute_20_Value">middle</span>, <span class="Attribute_20_Value">bottom</span>, <span class="Attribute_20_Value">from-top</span> or <span class="Attribute_20_Value">below</span>.</p><h2 class="Heading_20_2"><a id="a20_388style_vertical-rel"><span style="margin-right:0.127cm;">20.388</span></a><a id="__RefHeading__1420244_253892949"/><a id="property-style_vertical-rel"/>style:vertical-rel</h2><p class="Text_20_body">The <span class="Attribute">style:vertical-rel</span> attribute specifies the area against which the vertical position of a frame is positioned.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:vertical-rel</span> attribute are:</p><p class="Text_20_body"><span class="Attribute_20_Value">baseline</span>: vertical position of frame positioned relative to a baseline.</p><p class="Text_20_body"><span class="Attribute_20_Value">c</span><span class="Attribute_20_Value">har</span>: vertical position of frame positioned relative to a character.</p><p class="Text_20_body"><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rame</span>: vertical position of frame positioned relative to a frame.</p><p class="Text_20_body"><span class="Attribute_20_Value">f</span><span class="Attribute_20_Value">rame-content</span>: vertical position of frame positioned relative to frame content.</p><p class="Text_20_body"><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">ine</span>: vertical position of frame positioned relative to a line.</p><p class="Text_20_body"><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age</span>: vertical position of frame positioned relative to a page.</p><p class="Text_20_body"><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">age-content</span>: vertical position of frame positioned relative to page content.</p><p class="Text_20_body"><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">aragraph</span>: vertical position of frame positioned relative to a paragraph.</p><p class="Text_20_body"><span class="Attribute_20_Value">p</span><span class="Attribute_20_Value">aragraph-content</span>: vertical position of frame positioned relative to paragraph content.</p><p class="Text_20_body"><span class="Attribute_20_Value">t</span><span class="Attribute_20_Value">ext</span>: vertical position of frame positioned relative to text.</p><p class="Text_20_body">Table <a href="#refTable22">23</a> displays the defined values of <span class="Attribute">style:vertical-rel</span> and <span class="Attribute">text:anchor-type</span> attributes. Value combinations that can appear in a document are marked with an X.</p><p class="Table">Table <a id="refTable22"/>23 - Vertical Relation Values</p><table border="0" cellspacing="0" cellpadding="0" class="Table13"><colgroup><col width="140"/><col width="103"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/></colgroup><tr><td style="text-align:left;width:1.2604in; " class="Table13_A1"><p class="Table_20_Heading">Value of <span class="Attribute">style:vertical-rel</span></p></td><td colspan="5" style="text-align:left;"><table border="0" cellspacing="0" cellpadding="0"><colgroup><col width="103"/><col width="106"/><col width="106"/><col width="106"/><col width="106"/></colgroup><tr><th colspan="5" style="text-align:left;width:0.9278in; " class="Table13_B1_1_1"><p class="Table_20_Heading">Value of <span class="Attribute">text:anchor-type</span></p></th></tr><tr><th style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">page</span></p></th><th style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">frame</span></p></th><th style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">paragraph</span></p></th><th style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">char</span></p></th><th style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Heading"><span class="Attribute_20_Value">as-char</span></p></th></tr></table></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">baseline</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered">X</p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">char</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered">X</p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame-content</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">line</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered">X</p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page-content</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph-</span><span class="Attribute_20_Value">content</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered">X</p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered"> </p></td></tr><tr><td style="text-align:left;width:1.2604in; " class="Table13_B1_1_2"><p class="Table_20_Contents"><span class="Attribute_20_Value">text</span></p></td><td style="text-align:left;width:0.9278in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9528in; " class="Table13_B1_1_2"><p class="Table_20_Contents_20_Centered"> </p></td><td style="text-align:left;width:0.9535in; " class="Table13_B1_5_2"><p class="Table_20_Contents_20_Centered">X</p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:vertical-rel</span> attribute is usable with the following elements: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a> and <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:vertical-rel</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">page-content</span>, <span class="Attribute_20_Value">frame</span>, <span class="Attribute_20_Value">frame-content</span>, <span class="Attribute_20_Value">paragraph</span>, <span class="Attribute_20_Value">paragraph-content</span>, <span class="Attribute_20_Value">char</span>, <span class="Attribute_20_Value">line</span>, <span class="Attribute_20_Value">baseline</span> or <span class="Attribute_20_Value">text</span>.</p><h2 class="Heading_20_2"><a id="a20_389style_width"><span style="margin-right:0.127cm;">20.389</span></a><a id="__RefHeading__1420246_253892949"/><a id="property-style_width"/>style:width</h2><p class="Text_20_body">The <span class="Attribute">style:width</span> attribute specifies the fixed width of a table. Every table shall have a fixed width. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:width</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:width</span> attribute has the data type <span class="Datatype">positiveLength</span> <a href="#datatype-positiveLength">18.3.26</a>.</p><h2 class="Heading_20_2"><a id="a20_390style_wrap"><span style="margin-right:0.127cm;">20.390</span></a><a id="__RefHeading__1420248_253892949"/><a id="property-style_wrap"/>style:wrap</h2><p class="Text_20_body">The <span class="Attribute">style:wrap</span> attribute specifies how text is displayed around a frame or graphic object. </p><p class="Text_20_body">The defined values for the <span class="Attribute">style:wrap</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">biggest</span>: text may wrap around the shape where the difference to the left or right page or column border is largest.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">dynamic</span>: text may wrap around both sides of the shape. The space for wrapping is set by the <span class="Attribute">style:wrap-dynamic-threshold</span> attribute. <a href="#property-style_wrap-dynamic-threshold">20.393</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: text wraps around the left side of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: text does not wrap around the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">parallel</span>: text wraps around both sides of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: text wraps around the right side of the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">run-through</span>: text runs through the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:wrap</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:wrap</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">parallel</span>, <span class="Attribute_20_Value">dynamic</span>, <span class="Attribute_20_Value">run-through</span> or <span class="Attribute_20_Value">biggest</span>.</p><h2 class="Heading_20_2"><a id="a20_391style_wrap-contour"><span style="margin-right:0.127cm;">20.391</span></a><a id="__RefHeading__1420250_253892949"/><a id="property-style_wrap-contour"/>style:wrap-contour</h2><p class="Text_20_body">The <span class="Attribute">style:wrap-contour</span> attribute specifies whether text wraps around an object or the bounding box of the object.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:wrap-contour</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text wraps around the bounding box.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text wraps around the object.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">This is called contour wrapping.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:wrap-contour</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:wrap-contour</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_392style_wrap-contour-mode"><span style="margin-right:0.127cm;">20.392</span></a><a id="__RefHeading__1420252_253892949"/><a id="property-style_wrap-contour-mode"/>style:wrap-contour-mode</h2><p class="Text_20_body">The <span class="Attribute">style:wrap-contour-mode</span> attribute specifies the nature of the wrapping of text around the contour of a shape.</p><p class="Text_20_body">This attribute shall be evaluated only by frames/drawing shapes or styles with non-empty <span class="Attribute">style:wrap</span> and <span class="Attribute">style:wrap-contour</span> attributes.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:wrap-contour-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">full</span>: text wraps around the shape and fills any spaces and indentations in the shape.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">outside</span>: text wraps around the general area to the left and right of the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:wrap-contour-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:wrap-contour-mode</span> attribute are <span class="Attribute_20_Value">full</span> or <span class="Attribute_20_Value">outside</span>.</p><h2 class="Heading_20_2"><a id="a20_393style_wrap-dynamic-threshold"><span style="margin-right:0.127cm;">20.393</span></a><a id="__RefHeading__1420254_253892949"/><a id="property-style_wrap-dynamic-threshold"/>style:wrap-dynamic-threshold</h2><p class="Text_20_body">The <span class="Attribute">style:wrap-dynamic-threshold</span> attribute specifies the minimum distance between the page or column border and the object for which wrapping will be enabled. It is evaluated only if a <span class="Attribute">style:wrap</span> attribute, with the value <span class="Attribute_20_Value">dynamic</span>, appears on the same <span class="Element">&lt;style:graphic-properties&gt;</span> element.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:wrap-dynamic-threshold</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:wrap-dynamic-threshold</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_394style_writing-mode"><span style="margin-right:0.127cm;">20.394</span></a><a id="__RefHeading__1420256_253892949"/><a id="property-style_writing-mode"/>style:writing-mode</h2><h3 class="Heading_20_3"><a id="a20_394_1General"><span style="margin-right:0.127cm;">20.394.1</span></a><a id="__RefHeading__1420258_253892949"/>General</h3><p class="Text_20_body">The <span class="Attribute">style:writing-mode</span> attribute specifies a writing mode for an element. </p><h3 class="Heading_20_3"><a id="a20_394_2_style_graphic-properties_"><span style="margin-right:0.127cm;">20.394.2</span></a><a id="__RefHeading__1420260_253892949"/><a id="property-style_writing-mode_element-style_graphic-properties"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">See §7.27.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> with the additional value of <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">The defined value of <span class="Attribute">style:writing-mode</span> attribute is <span class="Attribute_20_Value">page</span>: writing mode is inherited from the page that contains the element where this attribute appears. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:writing-mode</span> attribute are <span class="Attribute_20_Value">lr-tb</span>, <span class="Attribute_20_Value">rl-tb</span>, <span class="Attribute_20_Value">tb-rl</span>, <span class="Attribute_20_Value">tb-lr</span>, <span class="Attribute_20_Value">lr</span>, <span class="Attribute_20_Value">rl</span>, <span class="Attribute_20_Value">tb</span> or <span class="Attribute_20_Value">page</span>.</p><h3 class="Heading_20_3"><a id="a20_394_3_style_page-layout-properties_"><span style="margin-right:0.127cm;">20.394.3</span></a><a id="__RefHeading__1420262_253892949"/><a id="property-style_writing-mode_element-style_page-layout-properties"/>&lt;style:page-layout-properties&gt;</h3><p class="Text_20_body">See §7.27.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a>.</p><p class="Text_20_body">The defined value for the <span class="Attribute">style:writing-mode</span> attribute is <span class="Attribute_20_Value">page</span>: writing mode is inherited from the page that contains the element where this attribute appears. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:page-layout-properties&gt;</span> <a href="#element-style_page-layout-properties">17.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:writing-mode</span> attribute are <span class="Attribute_20_Value">lr-tb</span>, <span class="Attribute_20_Value">rl-tb</span>, <span class="Attribute_20_Value">tb-rl</span>, <span class="Attribute_20_Value">tb-lr</span>, <span class="Attribute_20_Value">lr</span>, <span class="Attribute_20_Value">rl</span>, <span class="Attribute_20_Value">tb</span> or <span class="Attribute_20_Value">page</span>.</p><h3 class="Heading_20_3"><a id="a20_394_4_style_paragraph-properties_"><span style="margin-right:0.127cm;">20.394.4</span></a><a id="__RefHeading__1420264_253892949"/><a id="property-style_writing-mode_element-style_paragraph-properties"/>&lt;style:paragraph-properties&gt;</h3><p class="Text_20_body">See §7.27.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> with the additional value of <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">The defined value for the <span class="Attribute">style:writing-mode</span> attribute is <span class="Attribute_20_Value">page</span>: writing mode is inherited from the page that contains the element where this attribute appears.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:writing-mode</span> attribute are <span class="Attribute_20_Value">lr-tb</span>, <span class="Attribute_20_Value">rl-tb</span>, <span class="Attribute_20_Value">tb-rl</span>, <span class="Attribute_20_Value">tb-lr</span>, <span class="Attribute_20_Value">lr</span>, <span class="Attribute_20_Value">rl</span>, <span class="Attribute_20_Value">tb</span> or <span class="Attribute_20_Value">page</span>.</p><h3 class="Heading_20_3"><a id="a20_394_5_style_section-properties_"><span style="margin-right:0.127cm;">20.394.5</span></a><a id="__RefHeading__1420266_253892949"/><a id="property-style_writing-mode_element-style_section-properties"/>&lt;style:section-properties&gt;</h3><p class="Text_20_body">See §7.27.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> with the additional value of <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">The defined value for the <span class="Attribute">style:writing-mode</span> attribute is <span class="Attribute_20_Value">page</span>: writing mode is inherited from the page that contains the element where this attribute appears.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:writing-mode</span> attribute are <span class="Attribute_20_Value">lr-tb</span>, <span class="Attribute_20_Value">rl-tb</span>, <span class="Attribute_20_Value">tb-rl</span>, <span class="Attribute_20_Value">tb-lr</span>, <span class="Attribute_20_Value">lr</span>, <span class="Attribute_20_Value">rl</span>, <span class="Attribute_20_Value">tb</span> or <span class="Attribute_20_Value">page</span>.</p><h3 class="Heading_20_3"><a id="a20_394_6_style_table-cell-properties_"><span style="margin-right:0.127cm;">20.394.6</span></a><a id="__RefHeading__1420268_253892949"/><a id="property-style_writing-mode_element-style_table-cell-properties"/>&lt;style:table-cell-properties&gt;</h3><p class="Text_20_body">See §7.27.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> with the additional value of <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">The defined value for the <span class="Attribute">style:writing-mode</span> attribute is <span class="Attribute_20_Value">page</span>: writing mode is inherited from the page that contains the element where this attribute appears.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:writing-mode</span> attribute are <span class="Attribute_20_Value">lr-tb</span>, <span class="Attribute_20_Value">rl-tb</span>, <span class="Attribute_20_Value">tb-rl</span>, <span class="Attribute_20_Value">tb-lr</span>, <span class="Attribute_20_Value">lr</span>, <span class="Attribute_20_Value">rl</span>, <span class="Attribute_20_Value">tb</span> or <span class="Attribute_20_Value">page</span>.</p><h3 class="Heading_20_3"><a id="a20_394_7_style_table-properties_"><span style="margin-right:0.127cm;">20.394.7</span></a><a id="__RefHeading__1420270_253892949"/><a id="property-style_writing-mode_element-style_table-properties"/>&lt;style:table-properties&gt;</h3><p class="Text_20_body">See §7.27.7 of <a title="Extensible Stylesheet Language (XSL)" href="http://www.w3.org/TR/2001/REC-xsl-20011015/">[XSL]</a> with the additional value of <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">The defined value for the <span class="Attribute">style:writing-mode</span> attribute is <span class="Attribute_20_Value">page</span>: writing mode is inherited from the page that contains the element where this attribute appears.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">style:writing-mode</span> attribute are <span class="Attribute_20_Value">lr-tb</span>, <span class="Attribute_20_Value">rl-tb</span>, <span class="Attribute_20_Value">tb-rl</span>, <span class="Attribute_20_Value">tb-lr</span>, <span class="Attribute_20_Value">lr</span>, <span class="Attribute_20_Value">rl</span>, <span class="Attribute_20_Value">tb</span> or <span class="Attribute_20_Value">page</span>.</p><h2 class="Heading_20_2"><a id="a20_395style_writing-mode-automatic"><span style="margin-right:0.127cm;">20.395</span></a><a id="__RefHeading__1420272_253892949"/><a id="property-style_writing-mode-automatic"/>style:writing-mode-automatic</h2><p class="Text_20_body">The <span class="Attribute">style:writing-mode-automatic</span> attribute specifies whether a consumer may recalculate the writing mode of a paragraph based on its content whenever the content is edited. </p><p class="Text_20_body">The writing-mode should be specified in a <span class="Attribute">style:writing-mode</span> attribute.</p><p class="Text_20_body">If the <span class="Attribute">fo:text-align</span> with value <span class="Attribute_20_Value">start</span>, text alignment can be adapted to the writing mode.</p><p class="Text_20_body">The defined values for the <span class="Attribute">style:writing-mode-automatic</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: consumers should not recalculate writing mode of a paragraph  whenever its content is edited.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: consumers should recalculate writing mode of a paragraph  whenever its content is edited.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">style:writing-mode-automatic</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">style:writing-mode-automatic</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_396svg_fill-rule"><span style="margin-right:0.127cm;">20.396</span></a><a id="__RefHeading__1420274_253892949"/><a id="property-svg_fill-rule"/>svg:fill-rule</h2><p class="Text_20_body">See §11.3 of <a title="Scalable Vector Graphics (SVG) 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">[SVG]</a>.</p><p class="Text_20_body">OpenDocument does not support the value <span class="Alien_20_Attribute_20_Value">inherit</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:fill-rule</span> attribute is usable with the following elements: <span class="Element">&lt;style:drawing-page-properties&gt;</span> <a href="#element-style_drawing-page-properties">17.25</a> and <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:fill-rule</span> attribute are <span class="Attribute_20_Value">nonzero</span> or <span class="Attribute_20_Value">evenodd</span>.</p><h2 class="Heading_20_2"><a id="a20_397svg_height"><span style="margin-right:0.127cm;">20.397</span></a><a id="__RefHeading__1420276_253892949"/><a id="property-svg_height"/>svg:height</h2><h3 class="Heading_20_3"><a id="a20_397_1_style_graphic-properties_"><span style="margin-right:0.127cm;">20.397.1</span></a><a id="__RefHeading__1420278_253892949"/><a id="property-svg_height_element-style_graphic-properties"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute specifies a default height for new frames that are created using the graphics style. See <a href="#attribute-svg_height">19.539</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h3 class="Heading_20_3"><a id="a20_397_2_style_header-footer-properties_"><span style="margin-right:0.127cm;">20.397.2</span></a><a id="__RefHeading__1420280_253892949"/><a id="property-svg_height_element-style_header-footer-properties"/>&lt;style:header-footer-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:height</span> attribute specifies the height of a header or footer.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:height</span> attribute is usable with the following element: <span class="Element">&lt;style:header-footer-properties&gt;</span> <a href="#element-style_header-footer-properties">17.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:height</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_398svg_stroke-color"><span style="margin-right:0.127cm;">20.398</span></a><a id="__RefHeading__1420282_253892949"/><a id="property-svg_stroke-color"/>svg:stroke-color</h2><p class="Text_20_body">The <span class="Attribute">svg:stroke-color</span> attribute specifies the color of a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stroke-color</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:stroke-color</span> attribute has the data type <span class="Datatype">color</span> <a href="#datatype-color">18.3.9</a>.</p><h2 class="Heading_20_2"><a id="a20_399svg_stroke-opacity"><span style="margin-right:0.127cm;">20.399</span></a><a id="__RefHeading__1420284_253892949"/><a id="property-svg_stroke-opacity"/>svg:stroke-opacity</h2><p class="Text_20_body">The <span class="Attribute">svg:stroke-opacity</span> attribute specifies the opacity of a stroke. The value of this attribute can be a number between 0 (fully transparent) and 1 (fully opaque) or a percentage value in the range 0% to 100%.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stroke-opacity</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">svg:stroke-opacity</span> attribute are a value of type <span class="Datatype">double</span> <a href="#datatype-double">18.2</a> in the range [<span class="Attribute_20_Value">0</span>,<span class="Attribute_20_Value">1</span>] or a value of type <span class="Datatype">zeroToHundredPercent</span> <a href="#datatype-zeroToHundredPercent">18.3.41</a>.</p><h2 class="Heading_20_2"><a id="a20_400svg_stroke-width"><span style="margin-right:0.127cm;">20.400</span></a><a id="__RefHeading__1420286_253892949"/><a id="property-svg_stroke-width"/>svg:stroke-width</h2><p class="Text_20_body">The <span class="Attribute">svg:stroke-width</span> attribute specifies the width of a stroke.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:stroke-width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:stroke-width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_401svg_x"><span style="margin-right:0.127cm;">20.401</span></a><a id="__RefHeading__1420288_253892949"/><a id="property-svg_x"/>svg:x</h2><p class="Text_20_body">The <span class="Attribute">svg:x</span> attribute specifies a default horizontal position for new frames that are created using the graphics style. See <a href="#attribute-svg_x">19.573</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:x</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:x</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h2 class="Heading_20_2"><a id="a20_402svg_y"><span style="margin-right:0.127cm;">20.402</span></a><a id="__RefHeading__1420290_253892949"/><a id="property-svg_y"/>svg:y</h2><h3 class="Heading_20_3"><a id="a20_402_1_style_graphic-properties_"><span style="margin-right:0.127cm;">20.402.1</span></a><a id="__RefHeading__1420292_253892949"/><a id="property-svg_y_element-style_graphic-properties"/><a id="DDE_LINK24"/>&lt;style:graphic-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attribute specifies a default vertical position for new frames that are created using the graphics style. See <a href="#attribute-svg_y">19.577</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h3 class="Heading_20_3"><a id="a20_402_2_style_list-level-properties_"><span style="margin-right:0.127cm;">20.402.2</span></a><a id="__RefHeading__1420294_253892949"/><a id="property-svg_y_element-style_list-level-properties"/>&lt;style:list-level-properties&gt;</h3><p class="Text_20_body">The <span class="Attribute">svg:y</span> attribute specifies the vertical position of a bullet image.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:y</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:y</span> attribute has the data type <span class="Datatype">coordinate</span> <a href="#datatype-coordinate">18.3.10</a>.</p><h2 class="Heading_20_2"><a id="a20_403svg_width"><span style="margin-right:0.127cm;">20.403</span></a><a id="__RefHeading__1420296_253892949"/><a id="property-svg_width"/>svg:width</h2><p class="Text_20_body">The <span class="Attribute">svg:width</span> attribute specifies a default width for new frames that are created using the graphics style. See <a href="#attribute-svg_width">19.571</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">svg:width</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">svg:width</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_404table_align"><span style="margin-right:0.127cm;">20.404</span></a><a id="__RefHeading__1420298_253892949"/><a id="property-table_align"/>table:align</h2><p class="Text_20_body">The <span class="Attribute">table:align</span> attribute specifies the horizontal alignment of a table.</p><p class="Text_20_body">The defined values for the <span class="Attribute">table:align</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">center</span>: table aligns to the center between left and right margins.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">left</span>: table aligns to the left margin.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">margins</span>: table fills all the space between the left and right margins.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">right</span>: table aligns to the right margin.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Consumers that do not support the <span class="Attribute_20_Value">margins</span> value, may treat this value as left.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:align</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:align</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">center</span>, <span class="Attribute_20_Value">right</span> or <span class="Attribute_20_Value">margins</span>.</p><h2 class="Heading_20_2"><a id="a20_405table_border-model"><span style="margin-right:0.127cm;">20.405</span></a><a id="__RefHeading__1420300_253892949"/><a id="property-table_border-model"/>table:border-model</h2><p class="Text_20_body">The <span class="Attribute">table:border-model</span> attribute specifies what border model to use when creating a table with a border. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:border-mode</span><span class="Attribute">l</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">collapsing</span>: when two adjacent cells have different borders, the wider border appears as the border between the cells. Each cell receives half of the width of the border.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">separating</span>: borders appear within the cell that specifies the border.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">In OpenDocument, a row height or column width includes any space required to display borders or padding. This means that, while the width and height of the content area is less than the column width and row height, the sum of the widths of all columns is equal to the total width of the table.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:border-model</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">table:border-model</span> attribute are <span class="Attribute_20_Value">collapsing</span> or <span class="Attribute_20_Value">separating</span>.</p><h2 class="Heading_20_2"><a id="a20_406table_display"><span style="margin-right:0.127cm;">20.406</span></a><a id="__RefHeading__1420302_253892949"/><a id="property-table_display"/>table:display</h2><p class="Text_20_body">The <span class="Attribute">table:display</span> attribute specifies whether a table is displayed. </p><p class="Text_20_body">The defined values for the <span class="Attribute">table:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: table should not be displayed.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: table should be displayed.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">table:display</span> attribute is usable with the following element: <span class="Element">&lt;style:table-properties&gt;</span> <a href="#element-style_table-properties">17.15</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">table:display</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_407text_anchor-page-number"><span style="margin-right:0.127cm;">20.407</span></a><a id="__RefHeading__1420304_253892949"/><a id="property-text_anchor-page-number"/>text:anchor-page-number</h2><p class="Text_20_body">The <span class="Attribute">text:anchor-page-number</span> attribute specifies the physical page number of an anchor if the drawing object is bound to a page within a text document.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:anchor-page-number</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:anchor-page-number</span> attribute has the data type <span class="Datatype">positiveInteger</span> <a href="#datatype-positiveInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_408text_anchor-type"><span style="margin-right:0.127cm;">20.408</span></a><a id="__RefHeading__1420306_253892949"/><a id="property-text_anchor-type"/>text:anchor-type</h2><p class="Text_20_body">The <span class="Attribute">text:anchor-type</span> attribute specifies how a frame is bound to a text document. The anchor position is the point at which a frame is bound to a text document. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:anchor-type</span> attribute are shown in Table <a href="#refTable23">24</a>.</p><p class="Table">Table <a id="refTable23"/>24 - Text anchor positions</p><table border="0" cellspacing="0" cellpadding="0" class="Table16"><colgroup><col width="138"/><col width="193"/><col width="189"/><col width="146"/></colgroup><tr><td style="text-align:left;width:1.2431in; " class="Table16_A1"><p class="Table_20_Heading">If the value of the <span class="Attribute">text:anchor-type</span> attribute is ...</p></td><td style="text-align:left;width:1.7361in; " class="Table16_A1"><p class="Table_20_Heading">The anchor position is...</p></td><td style="text-align:left;width:1.7069in; " class="Table16_A1"><p class="Table_20_Heading">The drawing shape element appears ...</p></td><td style="text-align:left;width:1.3139in; " class="Table16_D1"><p class="Table_20_Heading">Notes</p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table16_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">as-char</span></p></td><td style="text-align:left;width:1.7361in; " class="Table16_A2"><p class="Table_20_Contents">There is no anchor position. The drawing shape behaves like a character.</p></td><td style="text-align:left;width:1.7069in; " class="Table16_A2"><p class="Table_20_Contents">At the position where the character appears in the document.</p></td><td style="text-align:left;width:1.3139in; " class="Table16_D2"><p class="Table_20_Contents"> </p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table16_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">char</span></p></td><td style="text-align:left;width:1.7361in; " class="Table16_A2"><p class="Table_20_Contents">The character after the drawing shape element.</p></td><td style="text-align:left;width:1.7069in; " class="Table16_A2"><p class="Table_20_Contents">Just before the character.</p></td><td style="text-align:left;width:1.3139in; " class="Table16_D2"><p class="Table_20_Contents"> </p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table16_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">frame</span></p></td><td style="text-align:left;width:1.7361in; " class="Table16_A2"><p class="Table_20_Contents">The parent text box that the current drawing shape element is contained in.</p></td><td style="text-align:left;width:1.7069in; " class="Table16_A2"><p class="Table_20_Contents">In the element representing the text box to which the drawing object is bound.</p><p class="Text_20_body">If an image is bound to a text box, the image element is located in the text box element.</p></td><td style="text-align:left;width:1.3139in; " class="Table16_D2"><p class="Table_20_Contents"> </p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table16_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">page</span></p></td><td style="text-align:left;width:1.7361in; " class="Table16_A2"><p class="Table_20_Contents">The page that has the same physical page number as the value of the <span class="Attribute">text:anchor-page-</span><span class="Attribute">number</span> attribute that is attached to the drawing shape element. If no <span class="Attribute">text:anchor-page-</span><span class="Attribute">number</span> attribute is given, the anchor position is the page at which the character behind the drawing object element appears.</p></td><td style="text-align:left;width:1.7069in; " class="Table16_A2"><p class="Table_20_Contents">Either</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>At the start of the document body, outside any paragraph or frame, provided a <span class="Attribute">text:anchor-</span><span class="Attribute">page-number</span> attribute is given.<span class="odfLiEnd"/> </p></li></ul><p class="Table_20_Contents">Or</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Inside any paragraph element that is not contained in a header, footer, footnote, or text box, if a <span class="Attribute">text:anchor-</span><span class="Attribute">page-number</span> attribute is not given.<span class="odfLiEnd"/> </p></li></ul></td><td style="text-align:left;width:1.3139in; " class="Table16_D2"><p class="Table_20_Contents">The physical page number is the number assigned to the page if all pages in the document are counted starting with page 1.</p></td></tr><tr><td style="text-align:left;width:1.2431in; " class="Table16_A2"><p class="Table_20_Contents"><span class="Attribute_20_Value">paragraph</span></p></td><td style="text-align:left;width:1.7361in; " class="Table16_A2"><p class="Table_20_Contents">The paragraph that the current drawing shape element is contained in.</p></td><td style="text-align:left;width:1.7069in; " class="Table16_A2"><p class="Table_20_Contents">At the start of the paragraph element.</p></td><td style="text-align:left;width:1.3139in; " class="Table16_D2"><p class="Table_20_Contents"> </p></td></tr></table><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:anchor-type</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:anchor-type</span> attribute are <span class="Attribute_20_Value">page</span>, <span class="Attribute_20_Value">frame</span>, <span class="Attribute_20_Value">paragraph</span>, <span class="Attribute_20_Value">char</span> or <span class="Attribute_20_Value">as-char</span>.</p><h2 class="Heading_20_2"><a id="a20_409text_animation"><span style="margin-right:0.127cm;">20.409</span></a><a id="__RefHeading__1420308_253892949"/><a id="property-text_animation"/>text:animation</h2><p class="Text_20_body">The <span class="Attribute">text:animation</span> attribute specifies the type of animation that is used for a text.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:animation</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">alternate</span>: scrolls the text from one side to another and back.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: disables the text animation.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">scroll</span>: scrolls the text from one side to another.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">slide</span>: scrolls the text from one side to the original text position and stops there.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:animation</span> attribute are <span class="Attribute_20_Value">none</span>, <span class="Attribute_20_Value">scroll</span>, <span class="Attribute_20_Value">alternate</span> or <span class="Attribute_20_Value">slide</span>.</p><h2 class="Heading_20_2"><a id="a20_410text_animation-delay"><span style="margin-right:0.127cm;">20.410</span></a><a id="__RefHeading__1420310_253892949"/><a id="property-text_animation-delay"/>text:animation-delay</h2><p class="Text_20_body">The <span class="Attribute">text:animation-delay</span> attribute specifies a delay before an animation is started.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation-delay</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:animation-delay</span> attribute has the data type <span class="Datatype">duration</span> <a href="#datatype-duration">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_411text_animation-direction"><span style="margin-right:0.127cm;">20.411</span></a><a id="__RefHeading__1420312_253892949"/><a id="property-text_animation-direction"/>text:animation-direction</h2><p class="Text_20_body">The <span class="Attribute">text:animation-direction</span> attribute specifies the scroll direction of animated text. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:animation-direction</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">down</span>: animated text scrolls down.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">l</span><span class="Attribute_20_Value">eft</span>: animated text scrolls left.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">r</span><span class="Attribute_20_Value">ight</span>: animated text scrolls right.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">u</span><span class="Attribute_20_Value">p</span>: animated text scrolls up.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation-direction</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:animation-direction</span> attribute are <span class="Attribute_20_Value">left</span>, <span class="Attribute_20_Value">right</span>, <span class="Attribute_20_Value">up</span> or <span class="Attribute_20_Value">down</span>.</p><h2 class="Heading_20_2"><a id="a20_412text_animation-repeat"><span style="margin-right:0.127cm;">20.412</span></a><a id="__RefHeading__1420314_253892949"/><a id="property-text_animation-repeat"/>text:animation-repeat</h2><p class="Text_20_body">The <span class="Attribute">text:animation-repeat</span> attribute specifies the number of times an animation is repeated. If the value of the attribute is <span class="Attribute_20_Value_20_Instance">0</span>, the animation is repeated indefinitely.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation-repeat</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:animation-repeat</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_413text_animation-start-inside"><span style="margin-right:0.127cm;">20.413</span></a><a id="__RefHeading__1420316_253892949"/><a id="property-text_animation-start-inside"/>text:animation-start-inside</h2><p class="Text_20_body">The <span class="Attribute">text:animation-start-inside</span> attribute specifies if a text animation starts inside or outside a shape. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:animation-start-inside</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text starts its animation just outside the shape's bounding rectangle.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text starts its animation inside the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation-start-inside</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:animation-start-inside</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_414text_animation-steps"><span style="margin-right:0.127cm;">20.414</span></a><a id="__RefHeading__1420318_253892949"/><a id="property-text_animation-steps"/>text:animation-steps</h2><p class="Text_20_body">The <span class="Attribute">text:animation-steps</span> attribute specifies the distance by which text is moved within a scrolling step.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation-steps</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:animation-steps</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><h2 class="Heading_20_2"><a id="a20_415text_animation-stop-inside"><span style="margin-right:0.127cm;">20.415</span></a><a id="__RefHeading__1420320_253892949"/><a id="property-text_animation-stop-inside"/>text:animation-stop-inside</h2><p class="Text_20_body">The <span class="Attribute">text:animation-stop-inside</span> attribute specifies if a text animation stops inside or outside a shape. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:animation-stop-inside</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text stops its animation outside the shape's bounding rectangle.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text stops its animation when it is inside the shape.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:animation-stop-inside</span> attribute is usable with the following element: <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:animation-stop-inside</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_416text_condition"><span style="margin-right:0.127cm;">20.416</span></a><a id="__RefHeading__1420322_253892949"/><a id="property-text_condition"/>text:condition</h2><p class="Text_20_body">The <span class="Attribute">text:condition</span> attribute specifies the display of text.</p><p class="Text_20_body">The defined value of the <span class="Attribute">text:condition</span> attribute is <span class="Attribute_20_Value">none</span>, which means text is hidden.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:condition</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The only value of the <span class="Attribute">text:condition</span> attribute is <span class="Attribute_20_Value">none</span>.</p><h2 class="Heading_20_2"><a id="a20_417text_display"><span style="margin-right:0.127cm;">20.417</span></a><a id="__RefHeading__1420324_253892949"/><a id="property-text_display"/>text:display</h2><p class="Text_20_body">The <span class="Attribute">text:display</span> attribute specifies whether text is hidden. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:display</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">condition</span>: text is hidden under the condition specified in the <span class="Attribute">text:condition</span> attribute.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">none</span>: text is hidden unconditionally.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text is displayed. This is the default setting.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:display</span> attribute is usable with the following element: <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:display</span> attribute are <span class="Attribute_20_Value">true</span>, <span class="Attribute_20_Value">none</span> or <span class="Attribute_20_Value">condition</span>.</p><h2 class="Heading_20_2"><a id="a20_418text_dont-balance-text-columns"><span style="margin-right:0.127cm;">20.418</span></a><a id="__RefHeading__1420326_253892949"/><a id="property-text_dont-balance-text-columns"/>text:dont-balance-text-columns</h2><p class="Text_20_body">The <span class="Attribute">text:dont-balance-text-columns</span> attribute specifies whether the text column content should be evenly distributed over all text columns or not.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:dont-balance-text-columns</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: text column content should not be evenly distributed over all text columns in a set of columns.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: text column content should be evenly distributed over all text columns in a set of columns.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:dont-balance-text-columns</span> attribute is usable with the following element: <span class="Element">&lt;style:section-properties&gt;</span> <a href="#element-style_section-properties">17.11</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:dont-balance-text-columns</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_419text_line-break"><span style="margin-right:0.127cm;">20.419</span></a><a id="__RefHeading__1420328_253892949"/><a id="property-text_line-break"/>text:line-break</h2><p class="Text_20_body">The <span class="Attribute">text:line-break</span> attribute specifies whether word wrapping is allowed for axis labels.</p><p class="Text_20_body">This attribute is evaluated for a chart style that is applied to a <span class="Element">&lt;chart:axis&gt;</span> element.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:line-break</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: word wrapping should not be allowed for axis labels.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: word wrapping should be allowed for axis labels.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:line-break</span> attribute is usable with the following element: <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:line-break</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_420text_line-number"><span style="margin-right:0.127cm;">20.420</span></a><a id="__RefHeading__1420330_253892949"/><a id="property-text_line-number"/>text:line-number</h2><p class="Text_20_body">The <span class="Attribute">text:line-number</span> attribute specifies a new start value for line numbering, if a <span class="Attribute">text:number-lines</span> attribute, with the value <span class="Attribute_20_Value">true</span>, appears on the same <span class="Element">&lt;style:paragraph-properties&gt;</span> element. Otherwise, this attribute shall be ignored.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:line-number</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:line-number</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">18.2</a>.</p><h2 class="Heading_20_2"><a id="a20_421text_list-level-position-and-space-mode"><span style="margin-right:0.127cm;">20.421</span></a><a id="__RefHeading__1420332_253892949"/><a id="property-text_list-level-position-and-space-mode"/>text:list-level-position-and-space-mode</h2><p class="Text_20_body">The <span class="Attribute">text:list-level-position-and-space-mode</span> attribute specifies how the position and spacing of the list labels (numbers or bullets) is defined. </p><p class="Text_20_body">The defined values for the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">label-alignment</span>: The <span class="Element">&lt;style:list-level-label-alignment&gt;</span> element and the <span class="Attribute">fo:text-align</span> attribute are used to define the position and spacing of the list label and the list item. The values of the attributes for <span class="Attribute">text:space-before</span>, <span class="Attribute">text:min-label-width</span> and <span class="Attribute">text:min-label-distance</span> are assumed to be <span class="Attribute_20_Value_20_Instance">0</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">label-width-and-position</span>: The <span class="Attribute">text:space-before</span>, <span class="Attribute">text:min-label-width</span>, <span class="Attribute">text:min-label-distance</span> and <span class="Attribute">fo:text-align</span> attributes are used to define the position and spacing of the list label and the list item.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default value of the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute is <span class="Attribute_20_Value">label-width-and-position</span>. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:list-level-position-and-space-mode</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute are <span class="Attribute_20_Value">label-width-and-position</span> or <span class="Attribute_20_Value">label-alignment</span>.</p><h2 class="Heading_20_2"><a id="a20_422text_min-label-distance"><span style="margin-right:0.127cm;">20.422</span></a><a id="__RefHeading__1420334_253892949"/><a id="property-text_min-label-distance"/>text:min-label-distance</h2><p class="Text_20_body">The <span class="Attribute">text:min-label-distance</span> attribute specifies the minimum distance between a number and a list item.</p><p class="Text_20_body">The content of a list label is rendered inside a specified minimum width - <span class="Attribute">text:min-label-width</span>. <a href="#property-text_min-label-width">20.423</a> The text of a list item is rendered following the label width area. If the distance between a list label and the text of a list item is smaller than the value of the <span class="Attribute">text:min-label-distance</span> attribute, the following actions are performed. First, the content of the list label is moved inside the specified minimum label width up to the value of the <span class="Attribute">text:min-label-</span><span class="Attribute">distance</span> attribute. If that does not result in a value equal to the <span class="Attribute">text:min-label-distance</span> attribute, the text of the list item is moved until the distance between the list label and text of list item equals the value of the <span class="Attribute">text:min-label-distance</span> attribute.</p><p class="Text_20_body">This attribute can be associated with a formatting properties element that is contained in a <span class="Alien_20_Element">&lt;text:list-level-style-*&gt;</span> element.</p><p class="Text_20_body">The attribute will be evaluated only if the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute has the value <span class="Attribute_20_Value">label-width-and-position</span> or is not present. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:min-label-distance</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:min-label-distance</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_423text_min-label-width"><span style="margin-right:0.127cm;">20.423</span></a><a id="__RefHeading__1420336_253892949"/><a id="property-text_min-label-width"/>text:min-label-width</h2><p class="Text_20_body">The <span class="Attribute">text:min-label-width</span> attribute specifies the minimum width of a list label.</p><p class="Text_20_body">This attribute can be associated with a formatting properties element that is contained in a <span class="Alien_20_Element">&lt;text:list-level-style-*&gt;</span> element.</p><p class="Text_20_body">The list label can be aligned horizontally within the specified minimum width using the <span class="Attribute">fo:text-align</span> attribute. If the actual width of the list label is greater than the specified minimum width no alignment takes place.</p><p class="Text_20_body">The attribute will be evaluated only if the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute has the value <span class="Attribute_20_Value">label-width-and-position</span> or is not present. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:min-label-width</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:min-label-width</span> attribute has the data type <span class="Datatype">nonNegativeLength</span> <a href="#datatype-nonNegativeLength">18.3.20</a>.</p><h2 class="Heading_20_2"><a id="a20_424text_number-lines"><span style="margin-right:0.127cm;">20.424</span></a><a id="__RefHeading__1420338_253892949"/><a id="property-text_number-lines"/>text:number-lines</h2><p class="Text_20_body">The <span class="Attribute">text:number-lines</span> attribute specifies whether lines are numbered.</p><p class="Text_20_body">The defined values for the <span class="Attribute">text:number-lines</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">false</span>: lines should not be numbered.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute_20_Value">true</span>: lines should be numbered.<span class="odfLiEnd"/> </p></li></ul><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:number-lines</span> attribute is usable with the following element: <span class="Element">&lt;style:paragraph-properties&gt;</span> <a href="#element-style_paragraph-properties">17.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:number-lines</span> attribute has the data type <span class="Datatype">boolean</span> <a href="#datatype-boolean">18.3.3</a>.</p><h2 class="Heading_20_2"><a id="a20_425text_space-before"><span style="margin-right:0.127cm;">20.425</span></a><a id="__RefHeading__1420340_253892949"/><a id="property-text_space-before"/>text:space-before</h2><p class="Text_20_body">The <span class="Attribute">text:space-before</span> attribute specifies the space to include before a number for all paragraphs at a specified level. If a paragraph has a left margin greater than 0, the position of the list label box is the left margin width plus the start indent value.</p><p class="Text_20_body">This attribute can be associated with a formatting properties element that is contained in a <span class="Alien_20_Element">&lt;text:list-level-style-*&gt;</span> element.</p><p class="Text_20_body">This attribute is evaluated only if the <span class="Attribute">text:list-level-position-and-space-mode</span> attribute has the value <span class="Attribute_20_Value">label-width-and-position</span> or is not present. </p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">text:space-before</span> attribute is usable with the following element: <span class="Element">&lt;style:list-level-properties&gt;</span> <a href="#element-style_list-level-properties">17.19</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">text:space-before</span> attribute has the data type <span class="Datatype">length</span> <a href="#datatype-length">18.3.18</a>.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix A. </span><a id="__RefHeading__1420384_253892949"/><a id="Appendix_A"/>OpenDocument Relax NG Schema<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The OpenDocument Relax-NG (see <a title="Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG" href="http://oasis-open.org/committees/relax-ng/spec-20011203.html">[RNG]</a>) schema is defined by a separate document, whose location can be found in the <a href="#Related_Work">Related work</a> section on the introductory pages.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix B. </span><a id="__RefHeading__1420386_253892949"/><a id="Appendix_B"/>OpenDocument Metadata Manifest Ontology<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The OpenDocument metadata manifest ontology is defined by a separate document, whose location can be found in the <a href="#Related_Work">Related work</a> section on the introductory pages.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix C. </span><a id="__RefHeading__1420388_253892949"/><a id="Appendix_C"/>MIME Types and File Name Extensions (Non Normative)<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The following table contains a list of MIME types and file name extensions for OpenDocument documents, that, at the time this specification is published, have been registered according to <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a>. Please see <a title="MIME Media Types" href="http://www.iana.org/assignments/media-types/">[MIMETYPES]</a> for a current list of registered MIME types.</p><p class="Text_20_body">Registered MIME types are for use with documents contained in OpenDocument packages. </p><p class="Table">Table <a id="refTable24"/>25 - Registered MIME types</p><table border="0" cellspacing="0" cellpadding="0" class="RegisteredMIMETypes"><colgroup><col width="430"/><col width="36"/><col width="200"/></colgroup><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A1"><p class="Table_20_Heading">MIME type</p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A1"><p class="Table_20_Heading">Ext.</p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C1"><p class="Table_20_Heading">Description</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">text</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odt</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Text document</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">text-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">ott</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Text document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">graphics</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odg</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Text_20_body">Graphics document (Drawing)</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">graphics-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">otg</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Drawing document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">presentation</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odp</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Presentation document</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">presentation-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">otp</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Presentation document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">spreadsheet</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">ods</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Spreadsheet document</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">spreadsheet-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">ots</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Spreadsheet document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">chart</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odc</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Chart document</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">chart-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">otc</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Chart document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">image</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odi</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Image document</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">image-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">oti</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Image document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">formula</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odf</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Formula document</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/<br/> </span><span class="Source_20_Text"><span class="T1"> </span></span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">formula-template</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">otf</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Formula document used as template</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">text-master</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odm</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Global Text document. See section <a href="#attribute-text_global">19.806</a>.</p></td></tr><tr><td style="text-align:left;width:3.8743in; " class="RegisteredMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">text-web</span></p></td><td style="text-align:left;width:0.3236in; " class="RegisteredMIMETypes_A2"><p class="Table_20_Contents"><span class="Source_20_Text">oth</span></p></td><td style="text-align:left;width:1.8021in; " class="RegisteredMIMETypes_C2"><p class="Table_20_Contents">Text document used as template for HTML documents</p></td></tr></table><p class="Text_20_body">The following table contains a list of MIME types and file name extensions for office documents that conform to this specification where a registration according to <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a> is in progress at the time this specification is published.</p><p class="Text_20_body">Please check <a title="MIME Media Types" href="http://www.iana.org/assignments/media-types/">[MIMETYPES]</a> before using these MIME types. If a MIME type is not listed there, the MIME type that is the result of inserting "<span class="Source_20_Text">x-</span>" behind the "/" (U+002F, SOLIDUS) character (<span class="Source_20_Text">application/x-</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">text</span>) should be used.</p><p class="Table">Table <a id="refTable25"/>26 - Recommended MIME types</p><table border="0" cellspacing="0" cellpadding="0" class="RecommendedMIMETypes"><colgroup><col width="429"/><col width="36"/><col width="201"/></colgroup><tr><td style="text-align:left;width:3.8632in; " class="RecommendedMIMETypes_A1"><p class="Table_20_Heading">MIME type</p></td><td style="text-align:left;width:0.3243in; " class="RecommendedMIMETypes_A1"><p class="Table_20_Heading">Ext.</p></td><td style="text-align:left;width:1.8125in; " class="RecommendedMIMETypes_C1"><p class="Table_20_Heading">Description</p></td></tr><tr><td style="text-align:left;width:3.8632in; " class="RecommendedMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">application/</span><span class="Source_20_Text">vnd.oasis.opendocument.</span><span class="Source_20_Text">base</span></p></td><td style="text-align:left;width:0.3243in; " class="RecommendedMIMETypes_A2"><p class="Text_20_body"><span class="Source_20_Text">odb</span></p></td><td style="text-align:left;width:1.8125in; " class="RecommendedMIMETypes_C2"><p class="Table_20_Contents">Database front end document</p></td></tr></table><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix D. </span><a id="__RefNumPara__203307_1700520208"/><a id="__RefHeading__440376_826425813"/><a id="Appendix_D"/><a id="AccessibilityGuidelines"/>Accessibility Guidelines (Non Normative)<span class="odfLiEnd"/> </p><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">D.1.</span><a id="__RefHeading__1420390_253892949"/><a id="Appendix_D_1"/>Title, Description and Caption of Graphical Elements<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">OpenDocument provides conventions to support accessible names, descriptions and captions for graphical elements.</p><p class="Text_20_body">Accessible names, if available, are represented by the <span class="Element">&lt;svg:title&gt;</span> element. <a href="#element-svg_title">10.3.17</a> If the <span class="Element">&lt;svg:title&gt;</span> element is not available, any text referenced by a <span class="Attribute">draw:caption-id</span> attribute is used as the title. <a href="#attribute-draw_caption-id">19.115</a></p><p class="Text_20_body">When transforming from another document format to OpenDocument the short names, like HTML's alt text on the <span class="Alien_20_Element">&lt;img&gt;</span> elements shall be mapped to the <span class="Element">&lt;svg:title&gt;</span> element.</p><p class="Text_20_body">User agents shall not manufacture names for the <span class="Element">&lt;svg:title&gt;</span> element, such as using the drawing object name followed by a cardinal number in a string as it is used for accessibility. Such name assignments provide no semantic meaning to the user.</p><p class="Text_20_body">Accessible descriptions, if available, are represented by the <span class="Element">&lt;svg:desc&gt;</span> element. <a href="#element-svg_desc">10.3.18</a></p><p class="Text_20_body">If a user agent supports relationships between graphic elements and their captions, the value of the <span class="Attribute">draw:caption-id</span> attribute for a graphical element should be used to for that relationship. <a href="#attribute-draw_caption-id">19.115</a></p><ol><li><ol><li><ol><li><p class="Appendix_20_Heading_20_3" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.27cm">D.1.1.</span><a id="__RefHeading__1420392_253892949"/><a id="Appendix_D_1_1"/>Guidance for authors<span class="odfLiEnd"/> </p></li></ol></li></ol></li></ol><p class="Text_20_body">Authors should not assign names to objects having no semantic value. If no name is assigned the caption text will be used in its place. The <span class="Element">&lt;svg:title&gt;</span> element shall take precedence over the caption text for accessible name assignment by the user agent.</p><p class="Text_20_body">Assignment of the long description should only be necessary when a drawing object is significantly complex and the user needs more information to describe it. Long descriptions would be more applicable to drawing groupings than basic drawing shapes.</p><ol><li><ol><li><ol><li><p class="Appendix_20_Heading_20_3" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.27cm">D.1.2.</span><a id="__RefHeading__1420394_253892949"/><a id="Appendix_D_1_2"/>Authoring tool responsibility for presenting and prompting for the <span class="Element">&lt;svg:title&gt;</span> and <span class="Element">&lt;svg:desc&gt;</span> elements<span class="odfLiEnd"/> </p></li></ol></li></ol></li></ol><p class="Text_20_body">Authoring tools should provide an option from an objects context menu to allow the user to enter the text for either of these elements as a minimum. More proactive authoring tools should have a facility for prompting the author for this text. Since the <span class="Element">&lt;svg:desc&gt;</span> element is a long description, a text area vs. a text field should be used to prompt the user accordingly in GUI-based authoring tools like office applications.</p><p class="Text_20_body">Navigation tools used to list the objects in the view should provide the type of object followed by the contents of <span class="Element">&lt;svg:title&gt;</span> element. </p><p class="Text_20_body">For <span class="Element">&lt;draw:g&gt;</span> elements the drawing objects which are members of the group should visible only when the group is expanded.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">D.2.</span><a id="__RefHeading__1420396_253892949"/><a id="Appendix_D_2"/><a id="Hyperlink_Titles"/>Hyperlink Titles<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">When transforming from another document format to OpenDocument the alt text of hyperlinks, shall be mapped to the <span class="Attribute">office:title</span> attribute of <span class="Element">&lt;text:a&gt;</span> elements (see <a href="#element-text_a">6.1.8</a>) or <span class="Element">&lt;draw:a&gt;</span> elements. <a href="#datatype-zeroToHundredPercent">18.3.41</a> When exporting OpenDocument documents to HTML, the contents of title text should be mapped to title attribute text on HTML anchor tags. As a minimum, authoring tools should provide a mechanism to provide the hint text.</p><p class="Text_20_body">The title text should be made accessible to the assistive technology and user. The user agent should allow for programmatic access through standard accessibility APIs such as the accessible description. Users should experience visible access to the hint text via the keyboard or mouse.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">D.3.</span><a id="__RefHeading__1420398_253892949"/><a id="Appendix_D_3"/>Tables in Presentations<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">Users importing non-OpenDocument slides that contain tables need access to the table structure via their assistive technology. Therefore tables imported into an OpenDocument application from another file format must have their structure preserved, and when saved as OpenDocument should be saved as as embedded spreadsheets.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">D.4.</span><a id="__RefHeading__1420400_253892949"/><a id="Appendix_D_4"/>Further Guidelines<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">Additional, non-normative Accessibility Guidelines are available at: <a href="http://docs.oasis-open.org/office/office-accessibility/guidelines">http://docs.oasis-open.org/office/office-accessibility/guidelines</a>. That more comprehensive document will be the up-to-date set of recommendations for what all OpenDocument applications should do in order to fully support accessibility.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix E. </span><a id="__RefHeading__1420402_253892949"/><a id="Appendix_E"/>Bidirectional (BiDi) Scripts,Numeric Digits Presentation and Calendars (Non Normative)<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">This appendix specifies how bidirectional (BiDi) scripts and related information are represented in OpenDocument.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">E.1.</span><a id="__RefHeading__1420404_253892949"/><a id="Appendix_E_1"/>Paragraph and Layout Direction<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">In OpenDocument, the direction of text runs inside a paragraph is calculated using the Unicode BiDi Algorithm. See <a title="The Bidirectional Algorithm" href="http://www.unicode.org/reports/tr9/tr9-15.html">[UAX9]</a>. The paragraph direction, as required by the BiDi Algorithm (see BD5 of <a title="The Bidirectional Algorithm" href="http://www.unicode.org/reports/tr9/tr9-15.html">[UAX9]</a>), and the display direction of layout objects like table or page columns (in the following called layout direction) is controlled by a writing mode attribute (<span class="Attribute">style:writing-mode</span>) that can be used within styles.</p><p class="Text_20_body">The writing mode attribute can be applied individually to paragraph styles, page styles, section styles, table styles, table cell styles, graphic styles and chart styles. If present within a paragraph style, it controls the paragraph direction of those paragraphs, to which the style is applied. If present within a page style, section style, table style, table cell style, graphic style or chart style, it controls the layout direction of those pages, text sections, tables, table cells, text-boxes and chart objects to which the styles is applied.</p><p class="Text_20_body">Section <a href="#property-style_writing-mode">20.394</a> specifies the <span class="Attribute">style:writing-mode</span> attribute for page styles. It may, among other values, take the values <span class="Attribute_20_Value">lr-tb</span> (left-to-right, top-to-bottom) and <span class="Attribute_20_Value">rl-tb</span> (right-to-left, top-to-bottom). The writing-mode attribute of a page style specifies the layout direction of page columns (left-to-right or right-to-left) for pages that are formatted using the page style.</p><p class="Text_20_body">Section <a href="#property-style_writing-mode">20.394</a> specifies the <span class="Attribute">style:writing-mode</span> attribute for paragraph styles. It specifies the paragraph direction as defined in BD5 of <a title="The Bidirectional Algorithm" href="http://www.unicode.org/reports/tr9/tr9-15.html">[UAX9]</a> for all paragraphs that have the paragraph style assigned. For paragraphs that are contained in lists, it further specifies whether the list numbers and bullets are displayed on the left or on the right of the paragraph.</p><p class="Text_20_body">The writing mode attribute for paragraph styles takes the same values as the writing mode attribute for page styles, but may also take the value <span class="Attribute_20_Value">page</span>. This value specifies that the paragraph direction is inherited from the layout direction of the closest layout object (section, table or text-box) in which the paragraph is contained, and which has a layout direction other than <span class="Attribute_20_Value">page</span>. If the paragraph is not contained in any of these layout objects, the paragraph direction is inherited from the page on which the paragraph appears.</p><p class="Text_20_body">The paragraph direction specifies the default bidirectional orientation of the text in that paragraph. The result of the BiDi Algorithm can be manually changed by inserting BiDi embedding control characters (U+202A ... U+202E) and implicit directional marks (U+200E ...U+200F) into the text. See <a title="Unicode in XML and other Markup Languages" href="http://www.unicode.org/reports/tr20/tr20-7.html">[UTR20]</a>.</p><p class="Text_20_body">OpenDocument further has a <span class="Attribute">style:writing-mode-automatic</span> attribute (described in section <a href="#property-style_writing-mode-automatic">20.395</a>) that specifies that a consumer is allowed to recalculate the value of the paragraph's writing-mode attribute based on its content whenever the content changes.</p><p class="Text_20_body">Section <a id="DDE_LINK14"/><a href="#property-style_writing-mode">20.394</a> specifies the <span class="Attribute">style:writing-mode</span> attribute for section styles. It may take the same values as the writing mode attribute for paragraph styles.</p><p class="Text_20_body">The writing-mode attribute of a section style specifies the layout direction of section columns (left-to-right or right-to-left) for text sections that have the section style assigned. If the attribute value is <span class="Attribute_20_Value">page</span> the layout direction is inherited from the layout direction of the closest layout object (section, table, table-cell or text-box) in which the section is contained, and which has a layout direction other than <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">Section <a href="#property-style_writing-mode">20.394</a> specifies the <span class="Attribute">style:writing-mode</span> attribute for table styles. It may take the same values as the writing mode attribute for paragraph styles.</p><p class="Text_20_body">The writing-mode attribute of a table style specifies the layout direction of table cells (left-to-right or right-to-left) for tables that have the table style assigned. If the attribute value is <span class="Attribute_20_Value">page</span> the layout direction is inherited from the layout direction of the closest layout object (section, table, table-cell or text-box) in which the table is contained, and which has a layout direction other than <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">Section <a href="#property-style_writing-mode">20.394</a> specifies the <span class="Attribute">style:writing-mode</span> attribute for table cell styles. It may take the same values as the writing mode attribute for paragraph styles.</p><p class="Text_20_body">The writing-mode attribute of a table cell style specifies the layout direction of table cells (left-to-right or right-to-left) that have the table style assigned. If the attribute value is <span class="Attribute_20_Value">page</span> the layout direction is inherited from the layout direction of the closest layout object (table, section or text-box) in which the table is contained, and which has a layout direction other than <span class="Attribute_20_Value">page</span>.</p><p class="Text_20_body">Section <a href="#property-style_writing-mode">20.394</a> specifies the <span class="Attribute">style:writing-mode</span> attribute for graphic styles. It may take the same values as the writing mode attribute for paragraph styles.</p><p class="Text_20_body">The writing-mode attribute of a graphic style specifies the layout direction of columns (left-to-right or right-to-left) for text-boxes that have the graphic style assigned. If the attribute value is <span class="Attribute_20_Value">page</span> the layout direction for text-boxes that are anchored to a page is inherited from the layout direction of the page on which the text-box is displayed. For text-boxes that have a different anchor type, the layout direction is inherited from the paragraph direction of the paragraph that contains the text-box.</p><p class="Text_20_body">The writing mode for chart styles is described by the same attribute as for paragraph styles. See <a href="#property-style_writing-mode">20.394</a>.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">E.2.</span><a id="__RefHeading__1420406_253892949"/><a id="Appendix_E_2"/>Numeric Digits Presentation and Calendars<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">All digits that have a Unicode code point can be included in an OpenDocument document.</p><p class="Text_20_body"><span class="Note_20_Label">Note 1:</span>  office application have a feature that allows the user to specify whether the ASCII digits U+0030 ... U+0039 should be displayed as Latin-Indic digits or as Arabic-Indic digits (U+0660 ... U+0669). Since this feature effects only what digits are displayed and does not influence the representation of digits in the document itself, OpenDocument only allows storing this setting as an implementation-dependent setting, not as document or style content.</p><p class="Text_20_body">For list numbers, that are calculated automatically, OpenDocument provides a generic mechanism to specify the applicable numbering systems. See <a href="#attribute-style_num-format">19.500</a>.</p><p class="Note"><span class="Note_20_Label">Note 2:</span> The specification currently mentions only "1, 2, 3...", "I, II, III...", and "i, ii, iii" explicitly, but the schema also allows a generic string value.</p><p class="Text_20_body">OpenDocument further supports data styles, which describe how different types of data are displayed, for example, a number or a date. Data styles are described in section <a href="#Data_Style">16.27</a>. The presentation of numeric digits can be controlled by the transliteration attributes described in sections <a href="#attribute-number_transliteration-country">19.361</a>-<a href="#attribute-number_transliteration-style">19.364</a>. The presentation of date information can be controlled by the <span class="Attribute">number:calendar</span> attribute specified in section <a href="#attribute-number_format-source">19.347</a>.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix F. </span><a id="__RefHeading__1420408_253892949"/><a id="Appendix_F"/>Recommended Usage of SMIL<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The following sections describe the usage of SMIL animation elements that enables an office application to present the animation elements in a simple and easy to use UI to the user. This UI may contain a single main sequence of effects, and in addition to this, multiple sequences of effects that are started as interactions on drawing shapes. An <span class="Def">effect</span> is a combination of one or more animation elements that animate a single shape and or a shape's paragraphs.</p><p class="Text_20_body">In user interfaces, effects should be creatable by using presets that have localized and meaningful names. This way, the user will not work on a hierarchy of SMIL animation elements, but on one dimensional lists of effects, which are much easier to handle for the office application users.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">F.1.</span><a id="__RefHeading__1420410_253892949"/><a id="Appendix_F_1"/>Slide Animation<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">Each <span class="Element">&lt;draw:page&gt;</span> element may have an <span class="Element">&lt;anim:par&gt;</span> element that defines the animation of that page during a running slideshow. This <span class="Element">&lt;anim:par&gt;</span> element should contain one <span class="Element">&lt;anim:seq&gt;</span> element which is the main sequence for shape effects and zero or more <span class="Element">&lt;anim:seq&gt;</span> elements that define interactive sequences for shapes that contain animation interactions. The animation elements are executed after the slide has executed its initial transition.</p><p class="Text_20_body">The <span class="Element">&lt;anim:par&gt;</span> element may further contain an <span class="Element">&lt;anim:par&gt;</span> element that defines the slide transition. Its <span class="Attribute">smil:begin</span> attribute shall have the value <span class="Attribute_20_Value_20_Param">&lt;id&gt;</span><span class="Attribute_20_Value_20_Fragment">.begin</span>, where <span class="Attribute_20_Value_20_Param">&lt;id&gt;</span> is the id of the slide's <span class="Element">&lt;draw:page&gt;</span> element itself. This <span class="Element">&lt;anim:par&gt;</span> element can contain basic animation elements as defined in chapter <a href="#SMIL_Animations">15</a>. These elements shall specify the <span class="Element">&lt;draw:page&gt;</span> element itself as target. If such an <span class="Element">&lt;anim:par&gt;</span> element for slide transitions is present, it overrides the following presentation page formatting properties:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;presentation:sound&gt;</span>. See <a href="#element-presentation_sound">10.8.2</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">presentation:transition-speed</span>. See <a href="#property-presentation_transition-speed">20.231</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">presentation:transition-style</span>. See <a href="#property-presentation_transition-style">20.232</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">presentation:transition-type</span>. See <a href="#property-presentation_transition-type">20.233</a>.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">For backward compatibility reasons, producers that use an <span class="Element">&lt;anim:par&gt;</span> element to define the slide transition should also add the above presentation page formatting properties. This also enables consumers without SMIL support to display the slide transitions.</p><p class="Text_20_body"><span class="Example_20_Label">Example:</span> The following example defines a slide wipe transition.</p><p class="Example_borderStart">&lt;draw:page draw:id="id1"&gt;</p><p class="Example">    &lt;anim:par presentation:node-type="timing-root"&gt;</p><p class="Example">        &lt;anim:par smil:begin="id1.begin"&gt;</p><p class="Example">            &lt;anim:transitionFilter smil:dur="2s" smil:targetElement="id1"</p><p class="Example">                smil:type="slideWipe" smil:subtype="fromBottom"</p><p class="Example">                smil:direction="reverse"/&gt;</p><p class="Example">        &lt;/anim:par&gt;</p><p class="Example">    &lt;/anim:par&gt;</p><p class="Example_borderEnd">&lt;/draw:page&gt;</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">F.2.</span><a id="__RefHeading__1420412_253892949"/><a id="Appendix_F_2"/>Main Sequence<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">The main sequence is a <span class="Element">&lt;anim:seq&gt;</span> element which contains the effects that should start after the slide has executed its initial transition. Since this is a sequential container, its child nodes are executed one after each other. If a child node's <span class="Attribute">smil:begin</span> attribute has the value <span class="Attribute_20_Value">indefinite</span> execution is stalled until the user advances the slideshow by a mouse or key interaction.</p><p class="Text_20_body">The first level of child nodes in the main sequence should be <span class="Element">&lt;anim:par&gt;</span> elements that group animation elements that are started with the same user interaction. The second level of child nodes should be <span class="Element">&lt;anim:par&gt;</span> elements that group animations elements that start at the same time. The third level of child nodes should be <span class="Element">&lt;anim:par&gt;</span> elements that group the animation elements for a single effect.</p><p class="Example_20_Text_borderStart"><span class="Example_20_Label">Example:</span> The following example shows a main sequence with the effects A, B, C and D. Effect A is started on user interaction, effect B is started simultaneously with A. Effect C is started 4 seconds after the effects A and B. Effect D is started on the next user interaction:</p><p class="Example">&lt;amin:par&gt; &lt;!-- timing root--&gt;</p><p class="Example">    &lt;anim:seq&gt; &lt;!-- main sequence--&gt;</p><p class="Example">        &lt;anim:par smil:begin="indefinite"&gt;</p><p class="Example">            &lt;!-- first user interaction --&gt;</p><p class="Example">            &lt;anim:par smil:begin="0s" smil:dur="4s"&gt;</p><p class="Example">                &lt;!-- first group of effects to execute --&gt;</p><p class="Example">                &lt;anim:par&gt; &lt;!-- effect a --&gt;</p><p class="Example">                    &lt;!-- nodes for effect a--&gt;</p><p class="Example">                &lt;/anim:par&gt;</p><p class="Example">                &lt;anim:par&gt; &lt;!-- effect b --&gt;</p><p class="Example">                    &lt;!-- nodes for effect b--&gt;</p><p class="Example">                &lt;/anim:par&gt;</p><p class="Example">            &lt;/anim:par&gt;</p><p class="Example">            &lt;anim:par smil:begin="4s"&gt;</p><p class="Example">                &lt;!-- second group of effects to execute --&gt;</p><p class="Example">                &lt;anim:par&gt; &lt;!-- effect c --&gt;</p><p class="Example">                    &lt;!-- nodes for effect c--&gt;    </p><p class="Example">                &lt;/anim:par&gt;</p><p class="Example">            &lt;/anim:par&gt;</p><p class="Example">        &lt;/anim:par&gt;</p><p class="Example">        &lt;anim:par&gt;    </p><p class="Example">            &lt;!-- second user interaction--&gt;</p><p class="Example">            &lt;anim:par smil:begin="indefinite"&gt;</p><p class="Example">                &lt;!-- first group of effects to execute --&gt;</p><p class="Example">                &lt;anim:par&gt; &lt;!-- effect d --&gt;</p><p class="Example">                    &lt;!--- nodes for effect d--&gt;</p><p class="Example">                &lt;/anim:par&gt;</p><p class="Example">            &lt;/anim:par&gt;</p><p class="Example">        &lt;/anim:par&gt;</p><p class="Example">    &lt;/anim:seq&gt;</p><p class="Example_borderEnd">&lt;/anim:par&gt;</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">F.3.</span><a id="__RefHeading__1420414_253892949"/><a id="Appendix_F_3"/>Interactive Sequence<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">An interactive sequence is a <span class="Element">&lt;anim:seq&gt;</span> element that should have the same structure as a main sequence. The only difference is that the <span class="Element">&lt;anim:par&gt;</span> element in the first level has a <span class="Attribute">smil:begin</span> attribute with a value like <span class="Attribute_20_Value_20_Param">[shape-id]</span><span class="Attribute_20_Value_20_Fragment">.click</span>, where <span class="Attribute_20_Value_20_Param">[shape-id]</span> identifies a drawing shapes by its <span class="Attribute">draw:id</span> attribute. These animation elements are triggered when the user interacts with the element defined by <span class="Attribute_20_Value_20_Param">[shape-id]</span>.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix G. </span><a id="__RefHeading__1420416_253892949"/><a id="Appendix_G"/>Changes From Previous Specification Versions (Non Normative)<span class="odfLiEnd"/> </p><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">G.1.</span><a id="__RefHeading__1420418_253892949"/><a id="Appendix_G_1"/>Changes from “Open Document Format for Office Applications (OpenDocument) v1.1”<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">The OpenDocument specification has been divided into three parts and has been restructured.</p><p class="Text_20_body">This appendix describes changes that are related to part 1 of this specification.</p><p class="Text_20_body">The following is a list of major features that have been added. For minor features please see the lists of new and changed elements and attributes.</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>New conformance clauses and levels (21)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Digital signatures (3.16)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Enhanced charts, including a new chart type 'filled-radar' (<a href="#attribute-chart_class_element-chart_chart">19.15.1</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Protection keys (<a href="#attribute-table_protection-key">19.697</a> and <a href="#attribute-text_protection-key">19.850</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Encyption algorithms for protection keys (<a href="#attribute-table_protection-key-digest-algorithm">19.698</a> and <a href="#attribute-text_protection-key-digest-algorithm">19.851</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Tables in presentations (<a href="#element-table_table">9.1.2</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="line-263"/>New formatting options for lists (<a href="#element-style_list-level-label-alignment">17.20</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>New formatting options for text grids (<a href="#property-style_layout-grid-base-width">20.297</a>, <a href="#property-style_layout-grid-snap-to">20.305</a> and <a href="#property-style_layout-grid-standard-mode">20.306</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>Database front end documents (<a href="#element-office_database">12.1</a>)<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span>RDF based metadata (4.2)<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The following elements are new:</p><ul><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;chart:data-label&gt;</span> <a href="#element-chart_data-label">11.14</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;chart:equation&gt;</span> <a href="#element-chart_equation">11.18</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;chart:label-separator&gt;</span> <a href="#element-chart_label-separator">17.24</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:application-connection-settings&gt;</span> <a href="#element-db_application-connection-settings">12.15</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:auto-increment&gt;</span> <a href="#element-db_auto-increment">12.10</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:character-set&gt;</span> <a href="#element-db_character-set">12.12</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:column&gt;</span> <a href="#element-db_column">12.35</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:column-definition&gt;</span> <a href="#element-db_column-definition">12.40</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:column-definitions&gt;</span> <a href="#element-db_column-definitions">12.39</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:columns&gt;</span> <a href="#element-db_columns">12.34</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:component&gt;</span> <a href="#element-db_component">12.25.5</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:component-collection&gt;</span> <a href="#element-db_component-collection">12.25.4</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:connection-data&gt;</span> <a href="#element-db_connection-data">12.3</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:connection-resource&gt;</span> <a href="#element-db_connection-resource">12.7</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:database-description&gt;</span> <a href="#element-db_database-description">12.4</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:data-source&gt;</span> <a href="#element-db_data-source">12.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:data-source-setting&gt;</span> <a href="#element-db_data-source-setting">12.23</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:data-source-settings&gt;</span> <a href="#element-db_data-source-settings">12.22</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:data-source-setting-value&gt;</span> <a href="#element-db_data-source-setting-value">12.24</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:delimiter&gt;</span> <a href="#element-db_delimiter">12.11</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:driver-settings&gt;</span> <a href="#element-db_driver-settings">12.9</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:file-based-database&gt;</span> <a href="#element-db_file-based-database">12.5</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:filter-statement&gt;</span> <a href="#element-db_filter-statement">12.30</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:forms&gt;</span> <a href="#element-db_forms">12.25.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:index&gt;</span> <a href="#element-db_index">12.46</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:index-column&gt;</span> <a href="#element-db_index-column">12.48</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:index-columns&gt;</span> <a href="#element-db_index-columns">12.47</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:indices&gt;</span> <a href="#element-db_indices">12.45</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:key&gt;</span> <a href="#element-db_key">12.42</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:key-column&gt;</span> <a href="#element-db_key-column">12.44</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:key-columns&gt;</span> <a href="#element-db_key-columns">12.43</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:keys&gt;</span> <a href="#element-db_keys">12.41</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:login&gt;</span> <a href="#element-db_login">12.8</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:order-statement&gt;</span> <a href="#element-db_order-statement">12.29</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:queries&gt;</span> <a href="#element-db_queries">12.26</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:query&gt;</span> <a href="#element-db_query">12.28</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:query-collection&gt;</span> <a href="#element-db_query-collection">12.27</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:reports&gt;</span> <a href="#element-db_reports">12.25.3</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:schema-definition&gt;</span> <a href="#element-db_schema-definition">12.36</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:server-database&gt;</span> <a href="#element-db_server-database">12.6</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-definition&gt;</span> <a href="#element-db_table-definition">12.38</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-definitions&gt;</span> <a href="#element-db_table-definitions">12.37</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-exclude-filter&gt;</span> <a href="#element-db_table-exclude-filter">12.18</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-filter&gt;</span> <a href="#element-db_table-filter">12.16</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-filter-pattern&gt;</span> <a href="#element-db_table-filter-pattern">12.19</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-include-filter&gt;</span> <a href="#element-db_table-include-filter">12.17</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-representation&gt;</span> <a href="#element-db_table-representation">12.33</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-representations&gt;</span> <a href="#element-db_table-representations">12.32</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-setting&gt;</span> <a href="#element-db_table-setting">12.14</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-settings&gt;</span> <a href="#element-db_table-settings">12.13</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-type&gt;</span> <a href="#element-db_table-type">12.21</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:table-type-filter&gt;</span> <a href="#element-db_table-type-filter">12.20</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;db:update-table&gt;</span> <a href="#element-db_update-table">12.31</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;office:annotation-end&gt;</span> <a href="#element-office_annotation-end">14.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;office:database&gt;</span> <a href="#element-office_database">12.1</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:default-page-layout&gt;</span> <a href="#element-style_default-page-layout">16.8</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;style:list-level-label-alignment&gt;</span> <a href="#element-style_list-level-label-alignment">17.20</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:background&gt;</span> <a href="#element-table_background">16.20</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:desc&gt;</span> <a href="#element-table_desc">9.1.14</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:filter-set-item&gt;</span> <a href="#element-table_filter-set-item">9.5.6</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;table:title&gt;</span> <a href="#element-table_title">9.1.13</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:meta&gt;</span> <a href="#element-text_meta">6.1.9</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Element">&lt;text:meta-field&gt;</span> <a href="#element-text_meta-field">7.5.19</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The following attributes are new:</p><ul><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:angle-offset</span> <a href="#property-chart_angle-offset">20.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:automatic-content</span> <a href="#attribute-chart_automatic-content">19.14</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:auto-position</span> <a href="#property-chart_auto-position">20.3</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:auto-size</span> <a href="#property-chart_auto-size">20.4</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:axis-label-position</span> <a href="#property-chart_axis-label-position">20.5</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:axis-position</span> <a href="#property-chart_axis-position">20.6</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:display-equation</span> <a href="#attribute-chart_display-equation">19.19</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:display-r-square</span> <a href="#attribute-chart_display-r-square">19.20</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:error-lower-range</span> <a href="#property-chart_error-lower-range">20.16</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:error-upper-range</span> <a href="#property-chart_error-upper-range">20.21</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:group-bars-per-axis</span> <a href="#property-chart_group-bars-per-axis">20.23</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:hole-size</span> <a href="#property-chart_hole-size">20.24</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:include-hidden-cells</span> <a href="#property-chart_include-hidden-cells">20.25</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:label-position</span> <a href="#property-chart_label-position">20.31</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:label-position-negative</span> <a href="#property-chart_label-position-negative">20.32</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:reverse-direction</span> <a href="#property-chart_reverse-direction">20.44</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:right-angled-axes</span> <a href="#property-chart_right-angled-axes">20.45</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:sort-by-x-values</span> <a href="#property-chart_sort-by-x-values">20.48</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:tick-mark-position</span> <a href="#property-chart_tick-mark-position">20.63</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:treat-empty-cells</span> <a href="#property-chart_treat-empty-cells">20.64</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:additional-column-statement</span> <a href="#attribute-db_additional-column-statement">19.31</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:append-table-alias-name</span> <a href="#attribute-db_append-table-alias-name">19.32</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:apply-command</span> <a href="#attribute-db_apply-command">19.33</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:as-template</span> <a href="#attribute-db_as-template">19.34</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:base-dn</span> <a href="#attribute-db_base-dn">19.35</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:boolean-comparison-mode</span> <a href="#attribute-db_boolean-comparison-mode">19.36</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:catalog-name</span> <a href="#attribute-db_catalog-name">19.37</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:command</span> <a href="#attribute-db_command">19.38</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:database-name</span> <a href="#attribute-db_database-name">19.43</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:data-source-setting-is-list</span> <a href="#attribute-db_data-source-setting-is-list">19.39</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:data-source-setting-name</span> <a href="#attribute-db_data-source-setting-name">19.40</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:data-source-setting-type</span> <a href="#attribute-db_data-source-setting-type">19.41</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:data-type</span> <a href="#attribute-db_data-type">19.42</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:decimal</span> <a href="#attribute-db_decimal">19.44</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:default-cell-style-name</span> <a href="#attribute-db_default-cell-style-name">19.45</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:default-row-style-name</span> <a href="#attribute-db_default-row-style-name">19.46</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:delete-rule</span> <a href="#attribute-db_delete-rule">19.47</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:description</span> <a href="#attribute-db_description">19.48</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:enable-sql92-check</span> <a href="#attribute-db_enable-sql92-check">19.49</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:encoding</span> <a href="#attribute-db_encoding">19.50</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:escape-processing</span> <a href="#attribute-db_escape-processing">19.51</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:extension</span> <a href="#attribute-db_extension">19.52</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:field</span> <a href="#attribute-db_field">19.53</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:hostname</span> <a href="#attribute-db_hostname">19.54</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:ignore-driver-privileges</span> <a href="#attribute-db_ignore-driver-privileges">19.55</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-ascending</span> <a href="#attribute-db_is-ascending">19.56</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-autoincrement</span> <a href="#attribute-db_is-autoincrement">19.57</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-clustered</span> <a href="#attribute-db_is-clustered">19.58</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-empty-allowed</span> <a href="#attribute-db_is-empty-allowed">19.59</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-first-row-header-line</span> <a href="#attribute-db_is-first-row-header-line">19.60</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-nullable</span> <a href="#attribute-db_is-nullable">19.62</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-password-required</span> <a href="#attribute-db_is-password-required">19.63</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-table-name-length-limited</span> <a href="#attribute-db_is-table-name-length-limited">19.66</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:is-unique</span> <a href="#attribute-db_is-unique">19.64</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:local-socket</span> <a href="#attribute-db_local-socket">19.67</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:login-timeout</span> <a href="#attribute-db_login-timeout">19.61</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:max-row-count</span> <a href="#attribute-db_max-row-count">19.68</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:media-type</span> <a href="#attribute-db_media-type">19.69</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:name</span> <a href="#attribute-db_name">19.70</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:parameter-name-substitution</span> <a href="#attribute-db_parameter-name-substitution">19.71</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:port</span> <a href="#attribute-db_port">19.72</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:precision</span> <a href="#attribute-db_precision">19.65</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:referenced-table-name</span> <a href="#attribute-db_referenced-table-name">19.73</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:related-column-name</span> <a href="#attribute-db_related-column-name">19.74</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:row-retrieving-statement</span> <a href="#attribute-db_row-retrieving-statement">19.75</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:scale</span> <a href="#attribute-db_scale">19.76</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:schema-name</span> <a href="#attribute-db_schema-name">19.77</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:show-deleted</span> <a href="#attribute-db_show-deleted">19.78</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:string</span> <a href="#attribute-db_string">19.79</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:style-name</span> <a href="#attribute-db_style-name">19.80</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:suppress-version-columns</span> <a href="#attribute-db_suppress-version-columns">19.81</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:system-driver-settings</span> <a href="#attribute-db_system-driver-settings">19.82</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:thousand</span> <a href="#attribute-db_thousand">19.83</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:title</span> <a href="#attribute-db_title">19.84</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:type</span> <a href="#attribute-db_type">19.85</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:type-name</span> <a href="#attribute-db_type-name">19.86</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:update-rule</span> <a href="#attribute-db_update-rule">19.87</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:use-catalog</span> <a href="#attribute-db_use-catalog">19.88</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:user-name</span> <a href="#attribute-db_user-name">19.90</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:use-system-user</span> <a href="#attribute-db_use-system-user">19.89</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">db:visible</span> <a href="#attribute-db_visible">19.91</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:draw-aspect</span> <a href="#property-draw_draw-aspect">20.107</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:escape-direction</span> <a href="#attribute-draw_escape-direction">19.147</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">fo:script</span> <a href="#attribute-fo_script">19.242</a><a href="#property-fo_script">20.215</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">form:linked-cell</span> <a href="#attribute-form_linked-cell">19.283</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">form:list-linkage-type</span> <a href="#attribute-form_list-linkage-type">19.284</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">form:repeat</span> <a href="#attribute-form_repeat">19.302</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">form:source-cell-range</span> <a href="#attribute-form_source-cell-range">19.305</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">form:spin-button</span> <a href="#attribute-form_spin-button">19.306</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">grddl:transformation</span> <a href="#attribute-grddl_transformation">19.320</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">number:rfc-language-tag</span> <a href="#attribute-number_rfc-language-tag">19.356</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">number:script</span> <a href="#attribute-number_script">19.357</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:join-border</span> <a href="#property-style_join-border">20.292</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><a id="DDE_LINK4"/><span class="Attribute">style:layout-grid-base-width</span> <a href="#property-style_layout-grid-base-width">20.297</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:layout-grid-snap-to</span> <a href="#property-style_layout-grid-snap-to">20.305</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:layout-grid-standard-mode</span> <a href="#property-style_layout-grid-standard-mode">20.306</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:list-level</span> <a href="#attribute-style_list-level">19.495</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:percentage-data-style-name</span> <a href="#attribute-style_percentage-data-style-name">19.507</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:rfc-language-tag</span> <a href="#attribute-style_rfc-language-tag">19.512</a><a href="#property-style_rfc-language-tag">20.335</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:rfc-language-tag-asian</span> <a href="#property-style_rfc-language-tag-asian">20.336</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:rfc-language-tag-complex</span> <a href="#property-style_rfc-language-tag-complex">20.337</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:script-asian</span> <a href="#property-style_script-asian">20.346</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:script-complex</span> <a href="#property-style_script-complex">20.347</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:text-overline-color</span> <a href="#property-style_text-overline-color">20.369</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:text-overline-mode</span> <a href="#property-style_text-overline-mode">20.370</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:text-overline-style</span> <a href="#property-style_text-overline-style">20.371</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:text-overline-type</span> <a href="#property-style_text-overline-type">20.372</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:text-overline-width</span> <a href="#property-style_text-overline-width">20.373</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">svg:stroke-linecap</span> <a href="#property-svg_stroke-linecap">20.164</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:embedded-number-behavior</span> <a href="#attribute-table_embedded-number-behavior">19.624</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:first-row-end-column</span> <a href="#attribute-table_first-row-end-column">19.640</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:first-row-start-column</span> <a href="#attribute-table_first-row-start-column">19.641</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:last-row-end-column</span> <a href="#attribute-table_last-row-end-column">19.659</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:last-row-start-column</span> <a href="#attribute-table_last-row-start-column">19.661</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:paragraph-style-name</span> <a href="#attribute-table_paragraph-style-name">19.688</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:protection-key-digest-algorithm</span> <a href="#attribute-table_protection-key-digest-algorithm">19.698</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:rfc-language-tag</span> <a href="#attribute-table_rfc-language-tag">19.703</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:script</span> <a href="#attribute-table_script">19.706</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:template-name</span> <a href="#attribute-table_template-name">19.732</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-banding-columns-styles</span> <a href="#attribute-table_use-banding-columns-styles">19.736</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-banding-rows-styles</span> <a href="#attribute-table_use-banding-rows-styles">19.737</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-first-column-styles</span> <a href="#attribute-table_use-first-column-styles">19.738</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-first-row-styles</span> <a href="#attribute-table_use-first-row-styles">19.739</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-last-column-styles</span> <a href="#attribute-table_use-last-column-styles">19.740</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-last-row-styles</span> <a href="#attribute-table_use-last-row-styles">19.741</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:use-wildcards</span> <a href="#attribute-table_use-wildcards">19.744</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:continue-list</span> <a href="#attribute-text_continue-list">19.780</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:label-followed-by</span> <a href="#attribute-text_label-followed-by">19.827</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:list-id</span> <a href="#attribute-text_list-id">19.829</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:list-level-position-and-space-mode</span> <a href="#property-text_list-level-position-and-space-mode">20.421</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:list-tab-stop-position</span> <a href="#attribute-text_list-tab-stop-position">19.830</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:protection-key-digest-algorithm</span> <a href="#attribute-text_protection-key-digest-algorithm">19.851</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:style-override</span> <a href="#attribute-text_style-override">19.875</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">xhtml:about</span> <a href="#attribute-xhtml_about">19.905</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">xhtml:content</span> <a href="#attribute-xhtml_content">19.906</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">xhtml:datatype</span> <a href="#attribute-xhtml_datatype">19.907</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">xhtml:property</span> <a href="#attribute-xhtml_property">19.908</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">xml:id</span> <a href="#attribute-xml_id">19.914</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value types of the following attributes changed:</p><ul><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">smil:endsync</span> <a href="#attribute-smil_endsync">19.444</a> of <span class="Element">&lt;anim:iterate&gt;</span> <a href="#element-anim_iterate">15.4.4</a>, <span class="Element">&lt;anim:par&gt;</span> <a href="#element-anim_par">15.4.2</a> and <span class="Element">&lt;anim:seq&gt;</span> <a href="#element-anim_seq">15.4.3</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">smil:fadeColor</span> <a href="#attribute-smil_fadeColor">19.445</a> of <span class="Element">&lt;anim:transitionFilter&gt;</span> <a href="#element-anim_transitionFilter">15.2.7</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:notify-on-update-of-ranges</span> <a href="#attribute-draw_notify-on-update-of-ranges">19.200</a> of <span class="Element">&lt;draw:object&gt;</span> <a href="#element-draw_object">10.4.6.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:dots1-length</span> <a href="#attribute-draw_dots1-length">19.136</a> of <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:dots2-length</span> <a href="#attribute-draw_dots2-length">19.138</a> of <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:distance</span> <a href="#attribute-draw_distance">19.134</a> of <span class="Element">&lt;draw:stroke-dash&gt;</span> <a href="#element-draw_stroke-dash">16.40.9</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">office:version</span> <a href="#attribute-office_version">19.386</a> of <span class="Element">&lt;office:document&gt;</span> <a href="#element-office_document">3.1.2</a>, <span class="Element">&lt;office:document-content&gt;</span> <a href="#element-office_document-content">3.1.3.2</a>, <span class="Element">&lt;office:document-meta&gt;</span> <a href="#element-office_document-meta">3.1.3.4</a>, <span class="Element">&lt;office:document-settings&gt;</span> <a href="#element-office_document-settings">3.1.3.5</a> and <span class="Element">&lt;office:document-styles&gt;</span> <a href="#element-office_document-styles">3.1.3.3</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">presentation:action</span> <a href="#attribute-presentation_action">19.387</a> of <span class="Element">&lt;presentation:event-listener&gt;</span> <a href="#element-presentation_event-listener">10.9.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:data-label-number</span> <a href="#property-chart_data-label-number">20.8</a> of <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">chart:error-category</span> <a href="#property-chart_error-category">20.13</a> of <span class="Element">&lt;style:chart-properties&gt;</span> <a href="#element-style_chart-properties">17.22</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">draw:stroke-linejoin</span> <a href="#property-draw_stroke-linejoin">20.163</a> of <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">fo:clip</span> <a href="#property-fo_clip">20.179</a> of <span class="Element">&lt;style:graphic-properties&gt;</span> <a href="#element-style_graphic-properties">17.21</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:glyph-orientation-vertical</span> <a href="#property-style_glyph-orientation-vertical">20.289</a> of <span class="Element">&lt;style:table-cell-properties&gt;</span> <a href="#element-style_table-cell-properties">17.18</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:text-rotation-angle</span> <a href="#property-style_text-rotation-angle">20.375</a> of <span class="Element">&lt;style:text-properties&gt;</span> <a href="#element-style_text-properties">16.27.28</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:value</span> <a href="#attribute-table_value">19.747</a> of <span class="Element">&lt;table:filter-condition&gt;</span> <a href="#element-table_filter-condition">9.5.5</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">table:value-type</span> <a href="#attribute-table_value-type">19.748</a> of <span class="Element">&lt;table:null-date&gt;</span> <a href="#element-table_null-date">9.4.2</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> of <span class="Element">&lt;text:bookmark-ref&gt;</span> <a href="#element-text_bookmark-ref">7.7.6</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:display</span> <a href="#attribute-text_display">19.796</a> of <span class="Element">&lt;text:index-entry-chapter&gt;</span> <a href="#element-text_index-entry-chapter">8.13.1</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:type</span> <a href="#attribute-style_type">19.515</a> of <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">style:type</span> <a href="#attribute-style_type">19.515</a> of <span class="Element">&lt;text:index-entry-tab-stop&gt;</span> <a href="#element-text_index-entry-tab-stop">8.13.6</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> of <span class="Element">&lt;text:note-ref&gt;</span> <a href="#element-text_note-ref">7.7.7</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> of <span class="Element">&lt;text:reference-ref&gt;</span> <a href="#element-text_reference-ref">7.7.5</a><span class="odfLiEnd"/> </p></li><li><p class="P26" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">●</span><span class="Attribute">text:reference-format</span> <a href="#attribute-text_reference-format">19.854</a> of <span class="Element">&lt;text:sequence-ref&gt;</span> <a href="#element-text_sequence-ref">7.7.8</a><span class="odfLiEnd"/> </p></li></ul></body></html>
\ No newline at end of file
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/OpenDocument-v1.2-part3.html b/trunk/odfdom/src/main/javadoc/doc-files/OpenDocument-v1.2-part3.html
new file mode 100644
index 0000000..a7da94f
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/OpenDocument-v1.2-part3.html
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by OpenOffice.org - see http://xml.openoffice.org/odf2xhtml for more info.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><base href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html" /><title xml:lang="en-US">OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 3: Packages</title><meta name="DCTERMS.title" content="OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 3: Packages" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.issued" content="2003-02-05T12:39:40" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.contributor" content="Paul Knight"/><meta name="DCTERMS.modified" content="2011-06-09T14:03:41.90" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="Printed by &#34;Daniel Vogelheim&#34;[dc:publisher] on &#34;2004-09-17T15:13:31&#34;[dc:date] in &#34;en-US&#34;[dc:language]" xml:lang="en-US"/><meta name="DCTERMS.subject" content=", OASIS, OpenDocument, ODF" xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><style type="text/css">
+	@page {  }
+	table { border-collapse:collapse; border-spacing:0; empty-cells:show }
+	td, th { vertical-align:top; font-size:12pt;}
+	h1, h2, h3, h4, h5, h6 { clear:both }
+	ol, ul { margin:0; padding:0;}
+	li { list-style: none; margin:0; padding:0;}
+	<!-- "li span.odfLiEnd" - IE 7 issue-->
+	li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
+	span.footnodeNumber { padding-right:1em; }
+	span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000;  margin:0; border:0; padding:0;  }
+	* { margin:0;}
+	.fr1 { font-size:12pt; text-align:right; vertical-align:top; writing-mode:lr-tb; margin-left:0.1965in; margin-right:0in; }
+	.fr2 { font-size:12pt; text-align:left; vertical-align:top; writing-mode:lr-tb; }
+	.fr3 { font-size:12pt; vertical-align:middle; writing-mode:lr-tb; margin-left:0in; margin-right:0in; margin-top:0in; margin-bottom:0in; padding:0in; border-style:none; }
+	.Appendix_20_Heading_borderStart { border-style:none; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1945in; padding:0in; padding-left:0in; padding-right:0in; padding-top:0.0835in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in;  border-bottom-style:none; }
+	.Appendix_20_Heading { border-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; padding-top:0.1945in;  border-top-style:none; border-bottom-style:none; }
+	.Appendix_20_Heading_borderEnd { border-style:none; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.1945in; margin-left:0in; margin-right:0in; padding:0in; padding-bottom:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1945in;  border-top-style:none;}
+	.Appendix_20_Heading_20_1_borderStart { border-style:none; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1945in; padding:0in; padding-left:0in; padding-right:0in; padding-top:0.0835in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in;  border-bottom-style:none; }
+	.Appendix_20_Heading_20_1 { border-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; padding-top:0.1945in;  border-top-style:none; border-bottom-style:none; }
+	.Appendix_20_Heading_20_1_borderEnd { border-style:none; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.1945in; margin-left:0in; margin-right:0in; padding:0in; padding-bottom:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1945in;  border-top-style:none;}
+	.Appendix_20_Heading_20_2_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Appendix_20_Heading_20_2 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Appendix_20_Heading_20_2_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Attribute_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Attribute_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Attribute_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Attribute_20_List2_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Attribute_20_List2 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Attribute_20_List2_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-top:0.0555in;  border-top-style:none;}
+	.Attribute_20_Value_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Attribute_20_Value_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Attribute_20_Value_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Bibliography_20_1 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; }
+	.Child_20_Element_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Child_20_Element_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Child_20_Element_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Child_20_Element_20_List2_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Child_20_Element_20_List2 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Child_20_Element_20_List2_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-top:0.0555in;  border-top-style:none;}
+	.Contents_20_1 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; }
+	.Contents_20_10 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.7689in; margin-right:0in; text-indent:0in; }
+	.Contents_20_2 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; margin-left:0.1665in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_3 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; margin-left:0.3335in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_4 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.5in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Contents_20_5 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.6665in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Contents_20_6 { font-size:9pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0.8335in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_7 { font-size:10pt; margin-bottom:0.0835in; margin-top:0in; font-family:Arial; writing-mode:page; margin-left:1in; margin-right:0in; text-indent:0.0008in; }
+	.Contents_20_8 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.3756in; margin-right:0in; text-indent:0in; }
+	.Contents_20_9 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.572in; margin-right:0in; text-indent:0in; }
+	.Contents_20_Heading_borderStart { border-style:none; color:#000099; font-size:16pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Contents_20_Heading { border-style:none; color:#000099; font-size:16pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Contents_20_Heading_borderEnd { border-style:none; color:#000099; font-size:16pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Contributor { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Figure { font-size:10pt; font-style:italic; margin-bottom:0.0835in; margin-top:0.0835in; text-align:center ! important; font-family:Arial; writing-mode:page; }
+	.Heading_20_1_borderStart { border-style:none; color:#000099; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.3335in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-top:0.0835in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Heading_20_1 { border-style:none; color:#000099; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; padding-bottom:0.0835in; padding-top:0.3335in;  border-top-style:none; border-bottom-style:none; }
+	.Heading_20_1_borderEnd { border-style:none; color:#000099; font-size:18pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-bottom:0in; border-left-style:none; border-right-style:none; border-bottom-style:none; padding-top:0.3335in;  border-top-style:none;}
+	.Heading_20_2_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Heading_20_2 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Heading_20_2_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Heading_20_3_borderStart { border-style:none; color:#000099; font-size:13pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Heading_20_3 { border-style:none; color:#000099; font-size:13pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Heading_20_3_borderEnd { border-style:none; color:#000099; font-size:13pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Heading_20_4_borderStart { border-style:none; color:#000099; font-size:12pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.Heading_20_4 { border-style:none; color:#000099; font-size:12pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Heading_20_4_borderEnd { border-style:none; color:#000099; font-size:12pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Legal_20_notice { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0547in; margin-left:0in; margin-right:0in; margin-top:0.0547in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Note { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P1 { font-size:10pt; margin-bottom:0.0598in; margin-top:0in; font-family:Arial; writing-mode:page; }
+	.P10 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; }
+	.P11 { font-size:10pt; margin-bottom:0.0417in; margin-left:0.1665in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P12 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.P13 { color:#000000; font-size:10pt; font-weight:bold; margin-bottom:0.0555in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; letter-spacing:normal; font-style:normal; }
+	.P14 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P15 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P16 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P17 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P18 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P19 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P2 { color:#333399; font-size:10pt; font-weight:bold; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; }
+	.P20 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P21 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.P22 { font-size:10pt; margin-bottom:0.0598in; margin-top:0in; font-family:Arial; writing-mode:page; }
+	.P23_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in;  border-bottom-style:none; }
+	.P23 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.P23_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.P3 { color:#333399; font-size:12pt; font-weight:bold; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; }
+	.P4_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in;  border-bottom-style:none; }
+	.P4 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.P4_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.P5_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in;  border-bottom-style:none; }
+	.P5 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.P5_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.P6_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.P6 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.P6_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-top:0.0555in;  border-top-style:none;}
+	.P7 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-left:0.75in; margin-right:0in; margin-top:0in; text-indent:0in; font-family:Arial; writing-mode:page; }
+	.P8 { font-size:10pt; margin-bottom:0.0555in; margin-left:0in; margin-right:0in; margin-top:0.0555in; text-indent:0in; font-family:Arial; writing-mode:page; }
+	.P9 { font-size:10pt; margin-bottom:0.0417in; margin-left:0.3335in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; }
+	.Parent_20_Element_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Parent_20_Element_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Parent_20_Element_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in;  border-top-style:none;}
+	.Parent_20_Element_20_List2_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in;  border-bottom-style:none; }
+	.Parent_20_Element_20_List2 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in;  border-top-style:none; border-bottom-style:none; }
+	.Parent_20_Element_20_List2_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-top:0.0555in;  border-top-style:none;}
+	.Subtitle_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in;  border-bottom-style:none; }
+	.Subtitle { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Subtitle_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in;  border-top-style:none;}
+	.Table { font-size:10pt; font-style:italic; margin-bottom:0.0835in; margin-top:0.0835in; text-align:center ! important; font-family:Arial; writing-mode:page; }
+	.Table_20_Contents { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.Table_20_Heading { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:center ! important; font-style:italic; font-weight:bold; }
+	.Text_20_body { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; }
+	.Title_borderStart { font-size:24pt; margin-top:0.1665in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-top:0.0138in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-weight:bold; padding-bottom:0.1665in;  border-bottom-style:none; }
+	.Title { font-size:24pt; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; color:#333399; font-weight:bold; padding-bottom:0.1665in; padding-top:0.1665in;  border-top-style:none; border-bottom-style:none; }
+	.Title_borderEnd { font-size:24pt; margin-bottom:0.1665in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-bottom:0in; border-left-style:none; border-right-style:none; border-bottom-style:none; color:#333399; font-weight:bold; padding-top:0.1665in;  border-top-style:none;}
+	.Title_20_page_20_info { font-size:10pt; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; color:#333399; font-weight:bold; }
+	.Title_20_page_20_info_20_description { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-top:0in; font-family:Arial; writing-mode:page; margin-left:0.5in; margin-right:0in; text-indent:0.0008in; }
+	.NamespaceTable { width:6in; float:none; }
+	.Table1 { width:6in; float:none; }
+	.Table2 { width:6in; float:none; }
+	.NamespaceTable_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.NamespaceTable_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table1_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table1_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table1_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table1_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table2_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table2_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.Table2_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
+	.Table2_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
+	.NamespaceTable_A { width:0.8632in; }
+	.NamespaceTable_B { width:2.4382in; }
+	.NamespaceTable_C { width:2.6986in; }
+	.Table1_A { width:0.8646in; }
+	.Table1_B { width:2.4368in; }
+	.Table1_C { width:2.6986in; }
+	.Table2_A { width:0.8632in; }
+	.Table2_B { width:2.4382in; }
+	.Table2_C { width:2.6986in; }
+	.Alien_20_Attribute { font-family:Courier New; }
+	.Alien_20_Attribute_20_Value { font-family:Courier New; }
+	.Alien_20_Element { font-family:Courier New; background-color:transparent; }
+	.Attribute { font-family:Courier New; font-size:10pt; background-color:transparent; }
+	.Attribute_20_Value { font-family:Courier New; background-color:transparent; }
+	.Datatype { font-family:Courier New; }
+	.Def { font-style:italic; background-color:transparent; }
+	.Element { font-family:Courier New; background-color:transparent; font-size:NaNpt; }
+	.Emphasis { font-style:italic; background-color:transparent; }
+	.ISO_20_Keyword { background-color:transparent; }
+	.Note_20_Label { background-color:transparent; font-weight:bold; }
+	.OWL_20_Class { font-family:Courier New; }
+	.OWL_20_Property { font-family:Courier New; }
+	.Source_20_Text { font-family:Courier New; }
+	.Strong_20_Emphasis { font-weight:bold; background-color:transparent; }
+	.T1 { background-color:#ffffff; }
+	.T10 { font-family:Arial; background-color:#ffffff; }
+	.T11 { color:#000000; font-family:Arial; font-size:10pt; font-weight:normal; }
+	.T12 { text-decoration:underline; }
+	.T13 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:normal; font-weight:normal; }
+	.T14 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:normal; font-weight:normal; }
+	.T15 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:italic; font-weight:normal; }
+	.T16 { color:#0000ff; font-family:Arial; letter-spacing:normal; font-style:normal; text-decoration:none ! important; font-weight:normal; }
+	.T2 { font-family:Arial; font-size:10pt; }
+	.T3 { font-family:Arial; font-size:10pt; background-color:#ffffff; }
+	.T4 { font-family:Courier New; background-color:transparent; }
+	.T5 { font-family:Arial; font-size:10pt; }
+	.T6 { font-family:Arial; font-size:10pt; }
+	.T8 { background-color:transparent; }
+	.T9 { font-family:Arial; }
+	<!-- ODF styles with no properties representable as CSS -->
+	.Sect1 .Definition .Numbering_20_Symbols .T7 { }
+	</style></head><body dir="ltr" style="max-width:8.5in;margin-top:1in; margin-bottom:0.4925in; margin-left:1.2492in; margin-right:1.2492in; "><div class="Legal_20_notice"><!--Next 'div' is a draw:frame.--><div style="height:0.628in;width:2.4075in; padding:0; " class="fr2" id="OASISLogo"><img style="height:1.5951cm;width:6.1151cm;" alt="" src="./Pictures/100000000000011C0000004AA64D38BB.gif"/></div></div><p class="Title_borderStart">Open Document Format for Office Applications (OpenDocument) Version 1.2</p><p class="Subtitle">Part 3: Packages</p><p class="Subtitle">OASIS Standard</p><p class="Subtitle_borderEnd">29 September 2011</p><p class="P3">Specification URIs:</p><p class="Title_20_page_20_info">This version:</p><p class="Title_20_page_20_info_20_description"><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.odt">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.odt</a>   (Authoritative)<br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.pdf">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.pdf</a> <br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html</a></p><p class="P2">Previous version:</p><p class="Title_20_page_20_info_20_description"><a href="http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.odt"><span class="T6">http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.odt</span></a><span class="T6">   (Authoritative)<br/></span><a href="http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.pdf"><span class="T6">http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.pdf</span></a><span class="T6"> <br/></span><a href="http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.html"><span class="T6">http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.html</span></a></p><p class="Title_20_page_20_info">Latest version:</p><p class="Title_20_page_20_info_20_description"><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.odt"><span class="T5">http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.odt</span></a><span class="T5"> (Authoritative)</span><a href="http://www.oasis-open.org/committees/office"><span class="T5"><br/></span></a><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.pdf"><span class="T5">http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.pdf</span></a><a href="http://www.oasis-open.org/committees/office"><span class="T5"><br/></span></a><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html">http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html</a></p><p class="Title_20_page_20_info">Technical Committee:</p><p class="Title_20_page_20_info_20_description"><a href="http://www.oasis-open.org/committees/office/">OASIS Open Document Format for Office Applications (OpenDocument) TC</a></p><p class="Title_20_page_20_info">Chairs:</p><p class="Title_20_page_20_info_20_description"><a href="mailto:robert_weir@us.ibm.com">Rob Weir</a>, <a href="http://www.ibm.com/">IBM</a><br/><a href="mailto:michael.brauer@oracle.com">Michael Brauer</a>, <a href="http://www.oracle.com/">Oracle Corporation</a></p><p class="Title_20_page_20_info">Editors:</p><p class="Contributor"><a href="mailto:patrick@durusau.net">Patrick Durusau</a></p><p class="Contributor"><a href="mailto:dennis.hamilton@acm.org">Dennis Hamilton</a></p><p class="Title_20_page_20_info_20_description"><a href="mailto:michael.brauer@oracle.com">Michael Brauer</a>, <a href="http://www.oracle.com/">Oracle Corporation</a></p><p class="Title_20_page_20_info"><a id="Related_Work"/>Related work:</p><p class="Title_20_page_20_info_20_description">This document is part of the <a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os.odt"><span class="T12">OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2</span></a> specification.</p><p class="Title_20_page_20_info_20_description">The OpenDocument v1.2 specification has these parts:</p><p class="P7"><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.odt">OpenDocument v1.2 part 1: OpenDocument Schema</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part2.odt">OpenDocument v1.2 part 2: Recalculated Formula (OpenFormula) Format</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.odt">OpenDocument v1.2 part 3: Packages (this part)</a></p><p class="Title_20_page_20_info_20_description">OpenDocument v1.2 part 3 defines these schemas and ontologies:</p><p class="P7"><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-manifest-schema.rng">OpenDocument v1.2 Manifest Schema</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-dsig-schema.rng">OpenDocument v1.2 Digital Signature Schema</a><br/><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-package-metadata.owl">OpenDocument v1.2 Package Metadata Manifest Ontology</a></p><p class="Title_20_page_20_info">Declared XML namespaces:</p><p class="Title_20_page_20_info_20_description">urn:oasis:names:tc:opendocument:xmlns:manifest:1.0<br/>urn:oasis:names:tc:opendocument:xmlns:<a id="DDE_LINK11"/>digitalsignature:1.0<br/><a href="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#">http://docs.oasis-open.org/ns/office/1.2/meta/pkg#</a></p><p class="Title_20_page_20_info">Abstract:</p><p class="Title_20_page_20_info_20_description">This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.2 specification.</p><p class="Title_20_page_20_info_20_description">It defines a package format<span class="T11"> </span>for OpenDocument documents.</p><p class="Title_20_page_20_info">Status:</p><p class="P12">This document was last revised or approved by the OASIS Open Document Format for Office Applications (OpenDocument) TC on the above date. The level of approval is also listed above. Check the "Latest version" location noted above for possible later revisions of this document.</p><p class="Title_20_page_20_info_20_description"><span class="T13">Technical Committee members should send comments on this specification to the Technical Committee’s email list. Others should send comments to the Technical Committee by using the “</span><a href="http://www.oasis-open.org/committees/comments/form.php?wg_abbrev=office"><span class="T16">Send A Comment</span></a><span class="T13">” button on the Technical Committee’s web page at </span><a href="http://www.oasis-open.org/committees/office/"><span class="T16">http://www.oasis-open.org/committees/office/</span></a><span class="T13">.</span></p><p class="Title_20_page_20_info_20_description"><span class="T13">For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page (</span><a href="http://www.oasis-open.org/committees/office/ipr.php"><span class="T16">http://www.oasis-open.org/committees/office/ipr.php</span></a><span class="T13">).</span></p><p class="Title_20_page_20_info">Citation format:</p><p class="Title_20_page_20_info_20_description">When referencing this specification the following citation format should be used:</p><p class="P13">OpenDocument-v1.2-part3</p><p class="Title_20_page_20_info_20_description"><span class="T15">Open Document Format for Office Applications (</span><span class="T15">OpenDocument</span><span class="T15">) Version </span><span class="T15">1.2</span><span class="T15"/><span class="T15"> Part </span><span class="T15">3</span><span class="T15">: Packages. </span><span class="T14">29 September 2011. OASIS Standard.  </span><a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html</a></p><p class="P5">Notices</p><p class="Text_20_body">Copyright © OASIS Open 2002–2011. All Rights Reserved.</p><p class="Text_20_body">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 <a href="http://www.oasis-open.org/who/intellectualproperty.php">Policy</a> may be found at the OASIS website.</p><p class="Text_20_body">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.</p><p class="Text_20_body">The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.</p><p class="Text_20_body">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.</p><p class="Text_20_body">OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.</p><p class="Text_20_body">OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.</p><p class="Text_20_body">OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.</p><p class="Text_20_body">The names "OASIS", “OpenDocument”, “Open Document Format”, and “ODF” are trademarks of <a href="http://www.oasis-open.org/">OASIS</a>, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see <a href="http://www.oasis-open.org/who/trademark.php">http://www.oasis-open.org/who/trademark.php</a> for above guidance.</p><p class="P4">Table of Contents</p><table border="0" cellspacing="0" cellpadding="0" class="Sect1"><colgroup/><tr><td><p class="P10"><a href="#__RefHeading__752775_826425813">1 Introduction</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752777_826425813">1.1 Introduction</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752779_826425813">1.2 Terminology</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752781_826425813">1.3 Normative References</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752783_826425813">1.4 Non Normative References</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752785_826425813">1.5 Namespaces</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752787_826425813">2 Packages, Package Consumers and Package Producers</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__4812_1473967831">2.1 Introduction</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752789_826425813">2.2 Packages</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752791_826425813">2.2.1 OpenDocument Package</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752793_826425813">2.2.2 OpenDocument Extended Package</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752795_826425813">2.3 Producers</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752797_826425813">2.3.1 OpenDocument Package Producer</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752799_826425813">2.3.2 OpenDocument Package Extended Producer</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752801_826425813">2.4 OpenDocument Package Consumer</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752803_826425813">3 Packages</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752805_826425813">3.1 General</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752807_826425813">3.2 Manifest</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752809_826425813">3.3 MIME Media Type</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752811_826425813">3.4 Encryption</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752813_826425813">3.4.1 General</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752815_826425813">3.4.2 Encryption Process</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752817_826425813">3.5 Digital Signatures</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752819_826425813">3.6 Metadata</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752821_826425813">3.7 Usage of IRIs Within Packages</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752823_826425813">3.8 Preview Image</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752825_826425813">4 Manifest File</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752827_826425813">4.1 Introduction</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752829_826425813">4.2 &lt;manifest:manifest&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752831_826425813">4.3 &lt;manifest:file-entry&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752833_826425813">4.4 &lt;manifest:encryption-data&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752835_826425813">4.5 &lt;manifest:algorithm&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752837_826425813">4.6 &lt;manifest:start-key-generation&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752839_826425813">4.7 &lt;manifest:key-derivation&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752841_826425813">4.8 Manifest Attributes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752843_826425813">4.8.1 manifest:algorithm-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752845_826425813">4.8.2 manifest:checksum</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752847_826425813">4.8.3 manifest:checksum-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752849_826425813">4.8.4 manifest:full-path</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752851_826425813">4.8.5 manifest:initialisation-vector</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752853_826425813">4.8.6 manifest:start-key-generation-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752855_826425813">4.8.7 manifest:key-size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752857_826425813">4.8.8 manifest:iteration-count</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752859_826425813">4.8.9 manifest:key-derivation-name</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752861_826425813">4.8.10 manifest:media-type</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752863_826425813">4.8.11 manifest:preferred-view-mode</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752865_826425813">4.8.12 manifest:salt</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752867_826425813">4.8.13 manifest:size</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752869_826425813">4.8.14 manifest:version</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752871_826425813">5 Digital Signatures File</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752873_826425813">5.1 Introduction</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752875_826425813">5.2 &lt;dsig:document-signatures&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752877_826425813">5.3 &lt;ds:Signature&gt;</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752879_826425813">5.4 Digital Signatures Attributes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752881_826425813">5.4.1 dsig:version</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752883_826425813">6 Metadata Manifest Files</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752885_826425813">6.1 General</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752887_826425813">6.2 pkg:Document</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752889_826425813">6.3 pkg:File</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752891_826425813">6.4 pkg:MetadataFile</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752893_826425813">6.5 pkg:Element</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752895_826425813">6.6 pkg:hasPart</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752897_826425813">6.7 pkg:mimeType</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752899_826425813">7 Datatypes</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752901_826425813">7.1 Introduction</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752903_826425813">7.2 W3C Schema Datatypes</a></p></td></tr><tr><td><p class="P11"><a href="#__RefHeading__752905_826425813">7.3 Other Datatypes</a></p></td></tr><tr><td><p class="P9"><a href="#__RefHeading__752907_826425813">7.3.1 namespacedToken</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752909_826425813">Appendix A. Schemas</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752911_826425813">A.1. OpenDocument Manifest Schema</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752913_826425813">A.2. OpenDocument Digital Signature Schema</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752915_826425813">Appendix B. OpenDocument Metadata Manifest Ontology</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752917_826425813">Appendix C. Zip File Structure (Non normative)</a></p></td></tr><tr><td><p class="P10"><a href="#__RefHeading__752919_826425813">Appendix D. Changes From “Open Document Format for Office Applications (OpenDocument) v1.1” (Non Normative)</a></p></td></tr></table><h1 class="Heading_20_1"><a id="a1Introduction"><span style="margin-right:0.127cm;">1</span></a><a id="__RefHeading__752775_826425813"/><a id="Introduction"/>Introduction</h1><h2 class="Heading_20_2"><a id="a1_1Introduction"><span style="margin-right:0.127cm;">1.1</span></a><a id="__RefHeading__752777_826425813"/>Introduction</h2><p class="Text_20_body">This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.2 specification. It defines a package format for OpenDocument documents.</p><h2 class="Heading_20_2"><a id="a1_2Terminology"><span style="margin-right:0.127cm;">1.2</span></a><a id="__RefHeading__752779_826425813"/>Terminology</h2><p class="Text_20_body">All text is normative unless otherwise labeled.</p><p class="Text_20_body">Text with a gray background color which is contained in boxes is informative. It lists the XML element-element and element-attribute relations for cross reference purposes.</p><p class="Text_20_body">Within the normative text of this specification, the terms “shall”, “shall not”, “should”, “should not”, “may” and “need not” are to be interpreted as described in Annex H of <a title="Rules for the structure and drafting of International Standards">[ISO/IEC Directives]</a>.</p><p class="Text_20_body">XML Element, attribute names, attribute value types, and attribute values appear in<span class="T2"> </span><span class="Source_20_Text">monospace</span> font.</p><h2 class="Heading_20_2"><a id="a1_3Normative_References"><span style="margin-right:0.127cm;">1.3</span></a><a id="__RefHeading__752781_826425813"/>Normative References</h2><p class="P8">[<span class="Strong_20_Emphasis">ISO/IEC Directives</span>]        ISO/IEC Directives, Part 2 (Fifth Edition) <span class="Emphasis">Rules for the structure and drafting of International Standards</span>, International Organization for Standardization and International Electrotechnical Commission, 2004</p><p class="P8">[<span class="Strong_20_Emphasis">OWL</span>]        Deborah L. McGuinness, Frank van Harmelen, <span class="Emphasis">OWL Web Ontology Language Overview</span>, <a href="http://www.w3.org/TR/2004/REC-owl-features-20040210/">http://www.w3.org/TR/2004/REC-owl-features-20040210/</a>, W3C, 2004.</p><p class="P8">[<span class="Strong_20_Emphasis">PNG</span>]        David Duce, <span class="Emphasis">Portable Network Graphics (PNG) Specification (Second Edition)</span>, <a href="http://www.w3.org/TR/2003/REC-PNG-20031110">http://www.w3.org/TR/2003/REC-PNG-20031110</a>, W3C, 2003.</p><p class="P8">[<span class="Strong_20_Emphasis">RDF-CONCEPTS</span>]        Graham Klyne, Jeremy J. Carroll, Brian McBride, <span class="Emphasis">Resource Description Framework (RDF): Concepts and Abstract Syntax</span>, <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/</a>, W3C, 2004.</p><p class="P8">[<span class="Strong_20_Emphasis">RDF-XML</span>]        Dave Beckett, Brian McBride, <span class="Emphasis">   RDF/XML Syntax Specification (Revised)</span>, <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/">http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/</a>, W3C, 2004.</p><p class="P8">[<span class="Strong_20_Emphasis">RFC2898</span>]        B. Kaliski, <span class="Emphasis">PKCS #5: Password-Based Cryptography Specification Version 2.0</span>, <a href="http://www.ietf.org/rfc/rfc2898.txt">http://www.ietf.org/rfc/rfc2898.txt</a>, IETF, 2000.</p><p class="P8">[<span class="Strong_20_Emphasis">RFC3174</span>]        D. Eastlake, 3rd, P. Jones, <span class="Emphasis">US Secure Hash Algorithm 1 (SHA1)</span>, <a href="http://www.ietf.org/rfc/rfc3174.txt">http://www.ietf.org/rfc/rfc3174.txt</a>, IETF, 2001.</p><p class="P8">[<span class="Strong_20_Emphasis">RFC3986</span>]        T. Berners-Lee, R. Fielding, L. Masinter, <span class="Emphasis">Uniform Resource Identifier (URI): Generic Syntax</span>, <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>, IETF, 2005.</p><p class="P8">[<span class="Strong_20_Emphasis">RFC3987</span>]        M. Duerst, M. Suignard, <span class="Emphasis">Internationalized Resource Identifiers (IRIs)</span>, <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>, IETF, 2005.</p><p class="P8">[<span class="Strong_20_Emphasis">RFC4288</span>]        N. Freed, J. Klensin, <span class="Emphasis">Media Type Specifications and Registration Procedures</span>, <a href="http://www.ietf.org/rfc/rfc4288.txt">http://www.ietf.org/rfc/rfc4288.txt</a>, IETF, 2005.</p><p class="P8">[<span class="Strong_20_Emphasis">RNG</span>]        ISO/IEC 19757-2 <span class="Emphasis">Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG</span>, International Organization for Standardization and International Electrotechnical Commission, 2003</p><p class="P8">[<span class="Strong_20_Emphasis">Schneier</span>]         Bruce Schneier, Applied Cryptography (Second Edition), John Wiley &amp; Sons, ISBN: 0-471-11709-9, 1996</p><p class="P8">[<span class="Strong_20_Emphasis">XAdES</span>]        XML Advanced Electronic Signatures (XAdES) (ETSI TS 101 903 v1.4.1 June 2009), ETSI, 650 Route des Lucioles, F-06921 Sophia Antipolis Cedex, FRANCE, <a href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064</a>, 2009.</p><p class="P8">[<span class="Strong_20_Emphasis">XML-ID</span>]        Jonathan Marsh, Daniel Veillard, Norman Walsh, <span class="Emphasis">xml:id Version 1.0</span>, <a href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">http://www.w3.org/TR/2005/REC-xml-id-20050909/</a>, W3C, 2005.</p><p class="P8">[<span class="Strong_20_Emphasis">xml-names</span>]        Tim Bray et al., <span class="Emphasis">Namespaces in XML 1.0 (Second Edition)</span>, <a href="http://www.w3.org/TR/2006/REC-xml-names-20060816">http://www.w3.org/TR/2006/REC-xml-names-20060816</a>, W3C, 2006.</p><p class="P8">[<span class="Strong_20_Emphasis">XML1.0</span>]        Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, François Yergeau , <span class="Emphasis">Extensible Markup Language (XML) 1.0 (Fourth Edition)</span>, <a href="http://www.w3.org/TR/2006/REC-xml-20060816/">http://www.w3.org/TR/2006/REC-xml-20060816/</a>, W3C, 2004.</p><p class="P8">[<span class="Strong_20_Emphasis">xmldsig-core</span>]        Donald Eastlake, Joseph Reagle, David Solo, Frederick Hirsch, Thomas Roessler, <span class="Emphasis"> XML Signature Syntax and Processing (Second Edition)</span>, <a href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/</a>, W3C, 2008.</p><p class="P8">[<span class="Strong_20_Emphasis">xmlenc-core</span>]        Donald Eastlake, Joseph Reagle, <span class="Emphasis">XML Encryption Syntax and Processing</span>, <a href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/</a>, W3C, 2002.</p><p class="P8">[<span class="Strong_20_Emphasis">xmlschema-2</span>]        Paul V. Biron, Ashok Malhotra, <span class="Emphasis">XML Schema Part 2: Datatypes Second Edition</span>, <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</a>, W3C, 2004.</p><p class="P8">[<span class="Strong_20_Emphasis">ZIP</span>]        <span class="Emphasis">PKWARE Inc. Zip APPNOTE Version 6.2.0</span>, available at <a href="http://www.pkware.com/support/application-note-archives">http://www.pkware.com/support/application-note-archives</a>, 2004</p><h2 class="Heading_20_2"><a id="a1_4Non_Normative_References"><span style="margin-right:0.127cm;">1.4</span></a><a id="__RefHeading__752783_826425813"/>Non Normative References</h2><p class="P8"><span class="Strong_20_Emphasis">[Schneier-Errata]</span>        Bruce Schneir, <span class="Emphasis">Applied Cryptography 2nd. Ed. - Errata</span>, <a href="http://www.schneier.com/book-applied-errata.html">http://www.schneier.com/book-applied-errata.html</a>, 1998.</p><h2 class="Heading_20_2"><a id="a1_5Namespaces"><span style="margin-right:0.127cm;">1.5</span></a><a id="__RefHeading__752785_826425813"/><a id="Namespaces"/>Namespaces</h2><p class="Text_20_body">The namespaces used or defined by OpenDocument part 3 are listed in tables 1 and 2.</p><p class="Text_20_body">The prefix column in tables 1 and 2 lists the namespace prefixes this specification uses when referring to elements and attributes in different namespaces. Conforming OpenDocument documents may substitute other namespace prefixes, bound to the listed namespace URI's, in accordance with the Namespaces in XML specification <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.</p><p class="Note"><span class="Note_20_Label">Note:</span> XML namespaces are employed in accordance with the <span class="Emphasis">Namespaces in XML</span> W3C Recommendation  <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.</p><p class="Table">Table <a id="refTable0"/>1 - XML Namespaces defined by the OpenDocument specification part 3</p><table border="0" cellspacing="0" cellpadding="0" class="NamespaceTable"><colgroup><col width="96"/><col width="271"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">manifest</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attribute contained in the package manifest.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<br/>manifest:1.0</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="NamespaceTable_A2"><p class="Table_20_Contents">dsig</p></td><td style="text-align:left;width:2.4382in; " class="NamespaceTable_A2"><p class="Table_20_Contents">Elements and attribute contained in digital signature files.</p></td><td style="text-align:left;width:2.6986in; " class="NamespaceTable_C2"><p class="Text_20_body">urn:oasis:names:tc:opendocument:xmlns:<a id="DDE_LINK1"/>digitalsignature:1.0</p></td></tr></table><p class="Table">Table <a id="refTable1"/>2 - XML Namespaces defined by the OpenDocument metadata manifest ontology</p><table border="0" cellspacing="0" cellpadding="0" class="Table2"><colgroup><col width="96"/><col width="271"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8632in; " class="Table2_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4382in; " class="Table2_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="Table2_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8632in; " class="Table2_A2"><p class="Table_20_Contents">pkg</p></td><td style="text-align:left;width:2.4382in; " class="Table2_A2"><p class="Table_20_Contents">OWL classes and properties contained in metadata manifest files.</p></td><td style="text-align:left;width:2.6986in; " class="Table2_C2"><p class="Text_20_body">http://docs.oasis-open.org/ns/office/1.2/meta/pkg#</p></td></tr></table><p class="Table">Table <a id="refTable2"/>3 - XML Namespaces used by the OpenDocument digital signature schema</p><table border="0" cellspacing="0" cellpadding="0" class="Table1"><colgroup><col width="96"/><col width="270"/><col width="300"/></colgroup><tr><td style="text-align:left;width:0.8646in; " class="Table1_A1"><p class="Table_20_Heading">Prefix</p></td><td style="text-align:left;width:2.4368in; " class="Table1_A1"><p class="Table_20_Heading">Description</p></td><td style="text-align:left;width:2.6986in; " class="Table1_C1"><p class="Table_20_Heading">Namespace</p></td></tr><tr><td style="text-align:left;width:0.8646in; " class="Table1_A2"><p class="Table_20_Contents">ds</p></td><td style="text-align:left;width:2.4368in; " class="Table1_A2"><p class="Text_20_body">XML Digital Signature Syntax and Processing namespace (see <a title=" XML Signature Syntax and Processing (Second Edition)" href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">[xmldsig-core]</a>)</p></td><td style="text-align:left;width:2.6986in; " class="Table1_C2"><p class="Text_20_body">http://www.w3.org/2000/09/xmldsig#</p></td></tr></table><h1 class="Heading_20_1"><a id="a2Packages__Package_Consumers_and_Package_Producers"><span style="margin-right:0.127cm;">2</span></a><a id="__RefHeading__752787_826425813"/>Packages, Package Consumers and Package Producers</h1><h2 class="Heading_20_2"><a id="a2_1Introduction"><span style="margin-right:0.127cm;">2.1</span></a><a id="__RefHeading__4812_1473967831"/>Introduction</h2><p class="Text_20_body">The OpenDocument specification defines conformance for packages, package consumers, and package producers, with two conformance classes called conforming and extended conforming. This chapter defines the basic requirements for the individual conformance targets.</p><h2 class="Heading_20_2"><a id="a2_2Packages"><span style="margin-right:0.127cm;">2.2</span></a><a id="__RefHeading__752789_826425813"/>Packages</h2><h3 class="Heading_20_3"><a id="a2_2_1OpenDocument_Package"><span style="margin-right:0.127cm;">2.2.1</span></a><a id="__RefHeading__752791_826425813"/><a id="OpenDocument_Package"/>OpenDocument Package</h3><p class="Text_20_body">An<span class="Def"> OpenDocument</span><span class="Definition"> P</span><span class="Def">ackage</span> <span class="ISO_20_Keyword">shall</span> meet the following requirements:</p><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>It <span class="ISO_20_Keyword">shall </span>be a Zip file, as defined by <a title="PKWARE Inc. Zip APPNOTE Version 6.2.0" href="available at http://www.pkware.com/support/application-note-archives">[ZIP]</a>. All files contained in the Zip file shall be non compressed (STORED) or compressed using the “deflate” (DEFLATED) algorithm.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>It <span class="ISO_20_Keyword">shall</span> contain a file “META-INF/manifest.xml”. This file <span class="ISO_20_Keyword">shall</span> meet the following requirements:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.1)</span>The file <span class="ISO_20_Keyword">shall</span> be a well formed XML document in accordance with the<span class="T2"> </span><a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a> specification.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2)</span>The XML root element of the file <span class="ISO_20_Keyword">shall</span> be a <span class="Element">&lt;manifest:manifest&gt;</span> element <a href="#element-manifest_manifest">4.2</a>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.3)</span>The XML file <span class="ISO_20_Keyword">shall</span> be valid with respect to the manifest schema defined in appendix A.1 OpenDocument Manifest Schema.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">C)</span>It <span class="ISO_20_Keyword">should</span> contain a file “mimetype”.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">D)</span>It <span class="ISO_20_Keyword">may</span> contain files whose relative paths begin with “META-INF/” and whose names contain the string “signatures”. These file shall meet the following requirements:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">D.1)</span>The files <span class="ISO_20_Keyword">shall</span> be well-formed XML files in accordance with<span class="T2"> </span><a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">D.2)</span>The XML root element of each file <span class="ISO_20_Keyword">shall</span> be a <span class="Element">&lt;dsig:document-signatures&gt;</span> element <a href="#element2-dsig_document-signatures">5.2</a>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">D.3)</span>The files <span class="ISO_20_Keyword">shall</span> be valid with respect to the digital signature schema defined in appendix A.2<span class="T2"> </span>OpenDocument Digital Signature Schema.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">E)</span>It shall not contain other files whose relative path begins with<span class="T2"> </span>“META-INF/” other than than those listed in B) and D).<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">F)</span>The files listed in (B) and (D) meet the following requirements:<span class="odfLiEnd"/> </p><ol><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">F.1)</span>They <span class="ISO_20_Keyword">shall</span> be namespace-well-formed with regard to the XML Namespaces specification <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P14" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">F.2)</span>They <span class="ISO_20_Keyword">shall</span> conform to the xml-id specification <a title="xml:id Version 1.0" href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">[XML-ID]</a>.<span class="odfLiEnd"/> </p></li></ol></li></ol><h3 class="Heading_20_3"><a id="a2_2_2OpenDocument_Extended_Package"><span style="margin-right:0.127cm;">2.2.2</span></a><a id="__RefHeading__752793_826425813"/>OpenDocument Extended Package</h3><ol><li><p class="P14" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">G)</span>An<span class="Def"> OpenDocument Extended Package</span> <span class="ISO_20_Keyword">shall</span> meet all requirements of a conforming package except item E) of <a href="#OpenDocument_Package">2.2.1</a>.<span class="odfLiEnd"/> </p></li></ol><h2 class="Heading_20_2"><a id="a2_3Producers"><span style="margin-right:0.127cm;">2.3</span></a><a id="__RefHeading__752795_826425813"/>Producers</h2><h3 class="Heading_20_3"><a id="a2_3_1OpenDocument_Package_Producer"><span style="margin-right:0.127cm;">2.3.1</span></a><a id="__RefHeading__752797_826425813"/>OpenDocument Package Producer</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Package Producer</span> is a program that creates conforming OpenDocument packages, and that meets the additional requirements:</p><ol><li><p class="P15" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>It <span class="ISO_20_Keyword">may</span> produce conforming OpenDocument extended packages, but it <span class="ISO_20_Keyword">shall</span> have a mode of operation where all OpenDocument packages that are created are conforming OpenDocument packages.<span class="odfLiEnd"/> </p></li><li><p class="P15" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>It <span class="ISO_20_Keyword">shall</span> be accompanied by a document that defines all implementation-defined values used by the OpenDocument package producer.<span class="odfLiEnd"/> </p></li></ol><h3 class="Heading_20_3"><a id="a2_3_2OpenDocument_Package_Extended_Producer"><span style="margin-right:0.127cm;">2.3.2</span></a><a id="__RefHeading__752799_826425813"/>OpenDocument Package Extended Producer</h3><p class="Text_20_body">An<span class="Def"> OpenDocument Package Extended Producer</span> is a program that creates conforming OpenDocument extended packages. It <span class="ISO_20_Keyword">shall</span> be accompanied by a document that defines all implementation-defined values used by the OpenDocument package producer.</p><h2 class="Heading_20_2"><a id="a2_4OpenDocument_Package_Consumer"><span style="margin-right:0.127cm;">2.4</span></a><a id="__RefHeading__752801_826425813"/>OpenDocument Package Consumer</h2><p class="Text_20_body">An <span class="Def">OpenDocument Package Consumer</span> is a program that can parse and interpret OpenDocument packages, and that meets the following additional requirements:</p><ol><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">A)</span>It <span class="ISO_20_Keyword">shall</span> be able to parse and interpret OpenDocument packages and OpenDocument extended packages, but it <span class="ISO_20_Keyword">need not</span> interpret the semantics of all elements, attributes and attribute values.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.1011cm">B)</span>The XML parser used to parse the files listed in <a href="#OpenDocument_Package">2.2.1</a> (B) and <a href="#OpenDocument_Package">2.2.1</a> (D) meets the<span class="T2"> </span>following requirements:<span class="odfLiEnd"/> </p><ol><li><p class="P16" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.1)</span>It <span class="ISO_20_Keyword">shall </span>be a nonvalidating XML processor with regard to the XML 1.0 specification <a title="Extensible Markup Language (XML) 1.0 (Fourth Edition)" href="http://www.w3.org/TR/2006/REC-xml-20060816/">[XML1.0]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.2)</span>It <span class="ISO_20_Keyword">shall </span>be<span class="T2"> </span>a conforming processor with regard to the XML Namespaces specification <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P16" style="margin-left:0.4991cm;"><span style="display:block;float:left;min-width:0.1011cm">B.3)</span>It <span class="ISO_20_Keyword">shall</span> conform to the xml-id specification <a title="xml:id Version 1.0" href="http://www.w3.org/TR/2005/REC-xml-id-20050909/">[XML-ID]</a>.<span class="odfLiEnd"/> </p></li></ol></li></ol><h1 class="Heading_20_1"><a id="a3Packages"><span style="margin-right:0.127cm;">3</span></a><a id="__RefHeading__752803_826425813"/><a id="Package"/>Packages</h1><h2 class="Heading_20_2"><a id="a3_1General"><span style="margin-right:0.127cm;">3.1</span></a><a id="__RefHeading__752805_826425813"/><a id="General"/>General</h2><p class="Text_20_body">OpenDocument defines a package file to store the XML content of a document as separate parts together with<span class="T2"> </span>associated binary data as file entries in a single package file. These file entries may be compressed to further reduce the storage taken by the package. This package is a Zip file <a title="PKWARE Inc. Zip APPNOTE Version 6.2.0" href="available at http://www.pkware.com/support/application-note-archives">[ZIP]</a>, whose structure is described in Appendix C. OpenDocument Packages impose additional structure on the Zip file to accomplish the representation of OpenDocument Format documents.</p><p class="Text_20_body">A document within a package may consist of a set of files creating a unit, for instance the set of files specified by OpenDocument part 1. These files may be located in the root of the package, or within a directory. If they are contained in the root of the package, they are called <span class="Def">document</span>. If they are located within a directory, the document they constitute is called a <span class="Def">sub document</span>. A package may contain multiple sub documents, but only a single document can be contained in the root of the package. Unless otherwise stated, the term <span class="Def">document</span> refers to the document contained in the root of the package. This may include sub documents.</p><h2 class="Heading_20_2"><a id="a3_2Manifest"><span style="margin-right:0.127cm;">3.2</span></a><a id="__RefHeading__752807_826425813"/>Manifest</h2><p class="Text_20_body">All OpenDocument packages shall contain a file named “META-INF/manifest.xml”. This file is the OpenDocument package manifest. The manifest provides :</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>A list of all of the files in the package (except those specifically excluded from the manifest).<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The MIME media type of each file in the package.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>If a file is stored in the file data in encrypted form, the manifest provides information required to decrypt the file correctly when the encryption key is also supplied.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The format of the manifest file is specified in chapter <a href="#Manifest_File">4</a>.</p><p class="Text_20_body">For all files contained in a package, with exception of the “mimetype” file and files whose relative path starts with “META-INF/”, the “META-INF/manifest.xml” file shall contain exactly one <span class="Element">&lt;manifest:file-entry&gt;</span> element whose <span class="Attribute">manifest:full-path</span> attribute's value references the file.</p><p class="Text_20_body">The “META-INF/manifest.xml” file need not contain <span class="Element">&lt;manifest:file-entry&gt;</span> elements <a href="#element-manifest_file-entry">4.3</a> whose <span class="Attribute">manifest:full-path</span> attribute <a href="#attribute-manifest_full-path">4.8.4</a> references files<span class="T2"> </span>whose relative path start with "META-INF/". The file <span class="ISO_20_Keyword">shall not</span> contain <span class="Element">&lt;manifest:file-entry&gt;</span> elements whose <span class="Attribute">manifest:full-path</span> attribute value references the “META-INF/manifest.xml” file itself or the “mimetype” file.</p><p class="Text_20_body">The “META-INF/manifest.xml” file <span class="ISO_20_Keyword">should</span> contain a <span class="Element">&lt;manifest:file-entry&gt;</span> element whose <span class="Attribute">manifest:full-path</span> attribute has the value "<span class="Attribute_20_Value">/</span>". This element specifies information regarding the document stored in the root of the package. This entry shall exist if the package contains a file "mimetype"</p><h2 class="Heading_20_2"><a id="a3_3MIME_Media_Type"><span style="margin-right:0.127cm;">3.3</span></a><a id="__RefHeading__752809_826425813"/><a id="MIME_type_stream"/>MIME Media Type</h2><p class="Text_20_body">If a MIME media type for a document exists, then an OpenDocument package <span class="ISO_20_Keyword">should</span> contain a <span class="T2">file</span> with name “mimetype”. The content of this <span class="T2">file</span> shall be the ASCII encoded MIME media type associated with the document. See <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a>.</p><p class="Text_20_body">The “mimetype” file <span class="ISO_20_Keyword">shall</span> be the first file of the zip file. It <span class="ISO_20_Keyword">shall not</span> be compressed, and it <span class="ISO_20_Keyword">shall not</span> use an 'extra field' in its header.</p><p class="Text_20_body">If the file named “META-INF/manifest.xml” contains a <span class="Element">&lt;manifest:file-entry&gt;</span> element whose <span class="Attribute">manifest:full-path</span> attribute has the value "<span class="Attribute_20_Value">/</span>", then a "mimetype" file shall exist, and the content of the “mimetype” file shall be equal to the value of the <span class="Attribute">manifest:media-type</span> attribute<span class="T2"> </span><a href="#attribute-manifest_media-type">4.8.10</a> of that element.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The purpose is to allow the type of document represented by the package to be discovered through 'magic number' mechanisms, such as Unix's file/magic utility. If a Zip file contains a file at the beginning of the file that is uncompressed, and has no extra data in the header, then its file name and data can be found at fixed positions from the beginning of the package. More specifically, one will find:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>the string 'PK' at position 0 of all zip files<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>the string 'mimetype' beginning at position 30<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>the media type itself beginning at position 38.<span class="odfLiEnd"/> </p></li></ul><h2 class="Heading_20_2"><a id="a3_4Encryption"><span style="margin-right:0.127cm;">3.4</span></a><a id="__RefHeading__752811_826425813"/><a id="Encryption"/>Encryption</h2><h3 class="Heading_20_3"><a id="a3_4_1General"><span style="margin-right:0.127cm;">3.4.1</span></a><a id="__RefHeading__752813_826425813"/>General</h3><p class="Text_20_body">OpenDocument packages may be encrypted by encrypting some or all files within the package. The encryption process takes place in the following stages:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>A single start key is generated and used for all of the keys that will be derived.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The derived key is generated based on the start key.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The files are encrypted based on the derived key and the encryption algorithm.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body"> The information regarding the algorithms that were used to encrypt a file and required parameters are contained in the manifest. The manifest shall not be encrypted.</p><p class="Text_20_body">Each file entry that is encrypted shall be compressed with the “deflate” algorithm before being encrypted. Encrypted file entries shall be flagged as 'STORED' rather than 'DEFLATED' in the Zip file's central directory. The size of the encrypted file should replace the real size value in the file entry's central directory records, its local file header and the data descriptor, if any. The original uncompressed, unencrypted size shall be contained in the <span class="Attribute">manifest:size</span> <a href="#attribute-manifest_size">4.8.13</a> attribute of the <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a> element for the file entry.</p><p class="Text_20_body">The encrypted form can be of greater size than the DEFLATED file used as the plaintext.</p><p class="Note"><span class="Note_20_Label">Note:</span> The encrypted form may be of greater because of padding of plaintext, inclusion of additional information, and other characteristics of the encryption technique).</p><p class="Text_20_body">The encryption method shall be such that the exact size and value of the plaintext DEFLATED file is recovered by the corresponding decryption process.</p><h3 class="Heading_20_3"><a id="a3_4_2Encryption_Process"><span style="margin-right:0.127cm;">3.4.2</span></a><a id="__RefHeading__752815_826425813"/><a id="Default_Algorithm"/>Encryption Process</h3><p class="Text_20_body">The three stages of the encryption process proceed as follows, using the legacy algorithms to illustrate each stage:</p><ol><li><p class="P18" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">1.</span>The start key is generated: The byte sequence representing the password in UTF-8 is used to generate a 20-byte SHA1 digest (see <span class="T8"><a title="US Secure Hash Algorithm 1 (SHA1)" href="http://www.ietf.org/rfc/rfc3174.txt">[RFC3174]</a></span>).<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">2.</span>For each file to be encrypted, a separate derived key is generated from the start key: The PBKDF2 algorithm based on the HMAC-SHA-1 function (see <a title="PKCS #5: Password-Based Cryptography Specification Version 2.0" href="http://www.ietf.org/rfc/rfc2898.txt">[RFC2898]</a>) is used for the key derivation. For each file, a 16-byte salt is generated by a random generator. The salt is used together with the start key to derive a unique 128-bit key for each file. The default iteration count for the algorithm is 1024.<span class="odfLiEnd"/> </p></li><li><p class="P18" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">3.</span>The files are encrypted: The random number generator is used to generate the 8-byte initialization vector for the algorithm. The derived key is used together with the initialization vector to encrypt the file using the Blowfish algorithm in 8-bit cipher feedback (8-bit CFB) mode (see <a title="Applied Cryptography (Second Edition)">[Schneier]</a>).<span class="odfLiEnd"/> </p></li></ol><h2 class="Heading_20_2"><a id="a3_5Digital_Signatures"><span style="margin-right:0.127cm;">3.5</span></a><a id="__RefHeading__752817_826425813"/><a id="Digital_Signatures"/>Digital Signatures</h2><p class="Text_20_body">Files within a package may have a digital signature applied. Digital signatures are stored in one or more files whose relative paths begin with “META-INF/”. The names of these files <span class="ISO_20_Keyword">shall</span> contain the term “signatures”.</p><p class="Text_20_body">The format of digital signature files is specified in chapter <a href="#Digital_Signature_File">5</a>.</p><h2 class="Heading_20_2"><a id="a3_6Metadata"><span style="margin-right:0.127cm;">3.6</span></a><a id="__RefHeading__752819_826425813"/><a id="Metadata"/>Metadata</h2><p class="Text_20_body">Metadata for documents contained in an OpenDocument package may be expressed using the model of the W3C Resource Description Framework <a title="Resource Description Framework (RDF): Concepts and Abstract Syntax" href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">[RDF-CONCEPTS]</a>.</p><p class="Text_20_body">A document or sub document that is stored in a package <span class="ISO_20_Keyword">may</span> contain any  number of <span class="Def">metadata files</span>. The content of a metadata files <span class="ISO_20_Keyword">shall</span> conform to the <a title="   RDF/XML Syntax Specification (Revised)" href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/">[RDF-XML]</a> specification. Implementations that are consumers as well as producers <span class="ISO_20_Keyword">should</span> preserve all metadata files.</p><p class="Text_20_body">All metadata files of a document or sub document <span class="ISO_20_Keyword">shall</span> be listed in a separate <span class="Def">metadata manifest file</span>, which has the file name “manifest.rdf”. This file enumerates metadata files and their relationships to other files in an OpenDocument package. See chapter <a href="#Metadata_Manifest_Files">6</a>.</p><p class="Text_20_body">In addition to metadata files, the "manifest.rdf" file may list other files which are contained in the document or sub document that contain RDF metadata, like files that contain RDFa metadata. The "manifest.rdf" file need not exist if a document or sub document does not contain any files that contain RDF metadata.</p><p class="Text_20_body">All references to a resource within the same package that occur within metadata file <span class="ISO_20_Keyword">shall</span> be represented by relative IRIs to the resource. This includes values of <span class="Alien_20_Attribute">rdf:about</span> attributes occurring within metadata files or metadata manifest files.</p><h2 class="Heading_20_2"><a id="a3_7Usage_of_IRIs_Within_Packages"><span style="margin-right:0.127cm;">3.7</span></a><a id="__RefHeading__752821_826425813"/><a id="Package_IRI"/>Usage of IRIs Within Packages</h2><p class="Text_20_body">Within the files contained in a package, relative IRIs as defined by <a title="Internationalized Resource Identifiers (IRIs)" href="http://www.ietf.org/rfc/rfc3987.txt">[RFC3987]</a> may be used to reference other files within the same package.</p><p class="P1">OpenDocument Package Consumers shall resolve relative IRIs that occur within a file of a package as follows:</p><ol><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">1.</span>The <span class="Def">file entry path</span> is the file name of the file within the Zip file which contains the relative IRI, including its relative path.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">2.</span>The <span class="Def">package base IRI</span> is the base IRI which would be established for the package itself as defined in §5.1 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">3.</span>If the relative IRI does not match the rule for "relative-ref" defined in §4.2 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a> or if the relative IRI does start with a "/" character (U+002F, SOLIDUS) then it is resolved as defined in §5.2 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a> with the package base IRI as base URI.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">4.</span>If the relative IRI references matches the rule for "relative-ref" defined in §4.2 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a> and its "relative-part" component matches the "path-empty" rule it shall be resolved as a "Same-Document" references defined in §4.4 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">5.</span>Otherwise the "relative-part" component of the relative IRI is copied into a <span class="Def">relative IRI buffer</span> and an empty <span class="Def">file entry path buffer</span> is created<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">6.</span>If the file entry path does contain a "/" character (U+002F, SOLIDUS) then the file path up to and including the last "/" character is copied into the file entry buffer.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">7.</span>If the relative IRI buffer starts with the character sequence "./" (U+002E, FULL STOP, followed by U+002F, SOLIDUS) then that character sequence it removed from the buffer. Continue with step 7.<span class="odfLiEnd"/> </p></li><li><p class="P19" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">8.</span>If the content of the relative IRI buffer is the character sequence "." (U+002E, FULL STOP), the content of the relative IRI buffer is removed. Continue with step 11.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">9.</span>If the content of the relative IRI buffer is the character sequence ".." (U+002E, FULL STOP, followed by U+002E, FULL STOP) and<span class="odfLiEnd"/> </p><ul><li><p class="P22" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.4991cm">•</span>if the file entry path buffer is empty, then the content of the relative IRI buffer is replaced with "." (U+002E, FULL STOP). The query and fragment components of the relative IRI, if present, are appended to the relative IRI buffer, including the "?" (U+003F, QUESTION MARK) and "#" (U+0023, NUMBER SIGN) delimiter characters. The content of the relative IRI buffer then is resolved as defined in §5.2 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a> with the package base IRI as base URI.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.4991cm">•</span>if the file entry path buffer contains at least one relative path component, the last relative path component up to and including the last "/" character (U+002F, SOLIDUS) is removed. The ".." character sequence is removed from the IRI buffer. Continue with step 11.<span class="odfLiEnd"/> </p></li></ul></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">10.</span>If a fragment buffer has been created and is not empty, its content may be resolved as fragment identifier, as defined by §3.5 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a>.<span class="odfLiEnd"/> </p><ul><li><p class="P22" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.4991cm">•</span>if the file entry path buffer is empty, then the "../" is replaced with "./" (U+002E, FULL STOP, followed by U+002F, SOLIDUS) in the relative IRI buffer. The query and fragment components of the relative IRI, if present, are appended to the relative IRI buffer, including the "?" (U+003F, QUESTION MARK) and "#" (U+0023, NUMBER SIGN) delimiter characters. The content of the relative IRI buffer then is resolved as defined in §5.2 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a> with the package base IRI as base URI.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0.4991cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.4991cm">•</span>if the file entry path buffer contains at least one one relative path component, the last relative path component up to and including the last "/" character (U+002F, SOLIDUS) is removed. The "../" character sequence is removed from the IRI buffer. Continue with step 7.<span class="odfLiEnd"/> </p></li></ul></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">11.</span>The content of the file entry buffer is inserted into the relative IRI buffer before any existing content.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">12.</span>The content of the relative IRI buffer is interpreted as a file or directory name within the package, that is, as the name of a file or directory including its relative path within the Zip file. An empty buffer denotes the package root. Path segments in the relative IRI buffer that originally came from the relative IRI shall be interpreted according to IRI syntax rules, while segments that originally came from the file entry path must be interpreted according to Zip path name syntax rules.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">13.</span>If the relative IRI contains a fragment component, it is resolved as fragment identifier, as defined by §3.5 of <a title="Uniform Resource Identifier (URI): Generic Syntax" href="http://www.ietf.org/rfc/rfc3986.txt">[RFC3986]</a>.<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Files whose relative path starts with “META-INF/” are considered to be part of the OpenDocument package rather than of the content stored within the package. Therefore, different rules regarding the resolution of relative IRIs may apply.</p><h2 class="Heading_20_2"><a id="a3_8Preview_Image"><span style="margin-right:0.127cm;">3.8</span></a><a id="__RefHeading__752823_826425813"/>Preview Image</h2><p class="Text_20_body">Unless a document is encrypted, package producers should generate a preview image of the document that is contained in the package. It should be a representation of the first page, first sheet, etc. of the document. For maximum re-usability of the preview images they shall be generated without any effects, surrounding frames, or borders.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Such effects might interfere with effects added to the preview images by the different file system explorers or may not be desired at all for certain use cases.</p><p class="Text_20_body">The preview image <span class="ISO_20_Keyword">shall</span> be contained in a file named “Thumbnails/thumbnail.png”.</p><p class="Text_20_body">Preview images <span class="ISO_20_Keyword">shall</span> be saved in <a title="Portable Network Graphics (PNG) Specification (Second Edition)" href="http://www.w3.org/TR/2003/REC-PNG-20031110">[PNG]</a> format.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> Current desktops display preview images within squares of up to 256 pixel width and height, and 24 bit per pixel. While this specification does not define upper or lower limits for preview image sizes, producers should only use image sizes that are displayed with a reasonable quality if scaled to fit into 256x256 pixel square.</p><p class="Text_20_body">Encrypted documents are intended to be unreadable for unauthorized users and package producers shall not generate preview images for such documents. They may include a preview image that is independent of the contents of the document. Such preview images should not be encrypted.</p><h1 class="Heading_20_1"><a id="a4Manifest_File"><span style="margin-right:0.127cm;">4</span></a><a id="__RefHeading__752825_826425813"/><a id="Manifest_File"/>Manifest File</h1><h2 class="Heading_20_2"><a id="a4_1Introduction"><span style="margin-right:0.127cm;">4.1</span></a><a id="__RefHeading__752827_826425813"/>Introduction</h2><p class="Text_20_body">The format of the manifest file is defined by the OpenDocument manifest Relax-NG <a title="Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG" href="http://oasis-open.org/committees/relax-ng/spec-20011203.html">[RNG]</a> schema. See appendix A. This chapter describes the semantics of the elements and attributes defined by this schema.</p><h2 class="Heading_20_2"><a id="a4_2_manifest_manifest_"><span style="margin-right:0.127cm;">4.2</span></a><a id="__RefHeading__752829_826425813"/><a id="element-manifest_manifest"/>&lt;manifest:manifest&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;manifest:manifest&gt;</span> element is the root element of <span class="T7">the</span> manifest file. It contains <span class="Element">&lt;manifest:file-entry&gt;</span> child elements <a href="#element-manifest_file-entry">4.3</a>, each of which specifies information for a a file or directory in the package.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;manifest:manifest&gt;</span> element is a root element.</p><p class="Attribute_20_List">The <span class="Element">&lt;manifest:manifest&gt;</span> element has the following attribute: <span class="Attribute">manifest:version</span> <a href="#attribute-manifest_version_element-manifest_manifest">4.8.14.2</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;manifest:manifest&gt;</span> element has the following child element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><h2 class="Heading_20_2"><a id="a4_3_manifest_file-entry_"><span style="margin-right:0.127cm;">4.3</span></a><a id="__RefHeading__752831_826425813"/><a id="element-manifest_file-entry"/>&lt;manifest:file-entry&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;manifest:file-entry&gt;</span> element specifies the media type of a single file or sub document within the package.  It may also specify the data required to decrypt a file.</p><p class="Text_20_body">For directories, the manifest file should contain a <span class="Element">&lt;manifest:file-entry&gt;</span> element only if a directory contains a document or a sub document. See <a href="#General">3.1</a>. A directory for administrative or convenience purposes, such as a directory that contains various unrelated image files, should not have an entry in the manifest file.</p><p class="Text_20_body">Directories have no corresponding file entries within the Zip file.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;manifest:file-entry&gt;</span> element is usable within the following element: <span class="Element">&lt;manifest:manifest&gt;</span> <a href="#element-manifest_manifest">4.2</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;manifest:file-entry&gt;</span> element has the following attributes: <span class="Attribute">manifest:full-path</span> <a href="#attribute-manifest_full-path">4.8.4</a>, <span class="Attribute">manifest:media-type</span> <a href="#attribute-manifest_media-type">4.8.10</a>, <span class="Attribute">manifest:preferred-view-mode</span> <a href="#attribute-manifest_preferred-view-mode">4.8.11</a>, <span class="Attribute">manifest:size</span> <a href="#attribute-manifest_size">4.8.13</a> and <span class="Attribute">manifest:version</span> <a href="#attribute-manifest_version_element-manifest_file-entry">4.8.14.1</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;manifest:file-entry&gt;</span> element has the following child element: <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a>.</p><h2 class="Heading_20_2"><a id="a4_4_manifest_encryption-data_"><span style="margin-right:0.127cm;">4.4</span></a><a id="__RefHeading__752833_826425813"/><a id="element-manifest_encryption-data"/>&lt;manifest:encryption-data&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;manifest:encryption-data&gt;</span> element contains information required to decrypt a file entry.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;manifest:encryption-data&gt;</span> element is usable within the following element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;manifest:encryption-data&gt;</span> element has the following attributes: <span class="Attribute">manifest:checksum</span> <a href="#attribute-manifest_checksum">4.8.2</a> and <span class="Attribute">manifest:checksum-type</span> <a href="#attribute-manifest_checksum-type">4.8.3</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;manifest:encryption-data&gt;</span> element has the following child elements: <span class="Element">&lt;manifest:algorithm&gt;</span> <a href="#element-manifest_algorithm">4.5</a>, <span class="Element">&lt;manifest:key-derivation&gt;</span> <a href="#element-manifest_key-derivation">4.7</a> and <span class="Element">&lt;manifest:start-key-generation&gt;</span> <a href="#element-manifest_start-key-generation">4.6</a>.</p><h2 class="Heading_20_2"><a id="a4_5_manifest_algorithm_"><span style="margin-right:0.127cm;">4.5</span></a><a id="__RefHeading__752835_826425813"/><a id="element-manifest_algorithm"/>&lt;manifest:algorithm&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;manifest:algorithm&gt;</span> element specifies the algorithm used to encrypt data.</p><p class="Text_20_body">Depending on the algorithm specified by the <span class="Attribute">manifest:algorithm-name</span> attribute  <a href="#attribute-manifest_algorithm-name">4.8.1</a> , the <span class="Element">&lt;manifest:algorithm&gt;</span> element may have further child elements.</p><p class="Text_20_body"><span class="T1">When the </span><span class="Attribute">manifest:algorithm-name</span><span class="T1"> attribute value matches one of those defined in section §3.2 of </span><span class="T10"><a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a></span><span class="T1">, the </span><span class="Element">&lt;manifest:algorithm&gt;</span><span class="T1"> element shall not have child elements except those permitted as child elements of the </span><span class="T10"><a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a></span><span class="T1"> </span><span class="Alien_20_Element">&lt;EncryptionMethod&gt;</span><span class="T1"> element whose Algorithm attribute value is the same as the </span><span class="Element">&lt;manifest:algorithm&gt;</span><span class="T1"> </span><span class="Attribute">manifest:algorithm-name</span><span class="T1"> attribute value.</span></p><p class="Text_20_body"><span class="T1">When the value of the </span><span class="Attribute">manifest:algorithm-name</span><span class="T1"> attribute identifies the legacy Blowfish algorithm, </span><span class="Element">&lt;manifest:algorithm&gt;</span><span class="T1"> shall be an empty element.</span></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;manifest:algorithm&gt;</span> element is usable within the following element: <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a>.</p><p class="Attribute_20_List_borderEnd">The <span class="Element">&lt;manifest:algorithm&gt;</span> element has the following attributes: <span class="Attribute">manifest:algorithm-name</span> <a href="#attribute-manifest_algorithm-name">4.8.1</a> and <span class="Attribute">manifest:initialisation-vector</span> <a href="#attribute-manifest_initialisation-vector">4.8.5</a>.</p><h2 class="P23"><a id="a4_6_manifest_start-key-generation_"><span style="margin-right:0.127cm;">4.6</span></a><a id="__RefHeading__752837_826425813"/><a id="element-manifest_start-key-generation"/>&lt;manifest:start-key-generation&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;manifest:start-key-generation&gt;</span> element specifies how the encryption start key is derived from a user specified password. The password shall be provided as a sequence of bytes in UTF-8 encoding.</p><p class="Text_20_body">When a <span class="Element">&lt;manifest:start-key-generation&gt;</span> element is absent as a child of a <span class="Element">&lt;manifest:encryption-data&gt;</span> element, interpretation is the same as if the element is present with default attribute values.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;manifest:start-key-generation&gt;</span> element is usable within the following element: <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;manifest:start-key-generation&gt;</span> element has the following attributes: <span class="Attribute">manifest:key-size</span> <a href="#attribute-manifest_key-size">4.8.7</a> and <span class="Attribute">manifest:start-key-generation-name</span> <a href="#attribute-manifest_start-key-generation-name">4.8.6</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;manifest:start-key-generation&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a4_7_manifest_key-derivation_"><span style="margin-right:0.127cm;">4.7</span></a><a id="__RefHeading__752839_826425813"/><a id="element-manifest_key-derivation"/>&lt;manifest:key-derivation&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;manifest:key-derivation&gt;</span> element specifies how the encryption key was calculated from the encryption start key.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Element">&lt;manifest:key-derivation&gt;</span> element is usable within the following element: <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a>.</p><p class="Attribute_20_List">The <span class="Element">&lt;manifest:key-derivation&gt;</span> element has the following attributes: <span class="Attribute">manifest:iteration-count</span> <a href="#attribute-manifest_iteration-count">4.8.8</a>, <span class="Attribute">manifest:key-derivation-name</span> <a href="#attribute-manifest_key-derivation-name">4.8.9</a>, <span class="Attribute">manifest:key-size</span> <a href="#attribute-manifest_key-size">4.8.7</a> and <span class="Attribute">manifest:salt</span> <a href="#attribute-manifest_salt">4.8.12</a>.</p><p class="Child_20_Element_20_List_borderEnd">The <span class="Element">&lt;manifest:key-derivation&gt;</span> element has no child elements.</p><h2 class="Heading_20_2"><a id="a4_8Manifest_Attributes"><span style="margin-right:0.127cm;">4.8</span></a><a id="__RefHeading__752841_826425813"/>Manifest Attributes</h2><h3 class="Heading_20_3"><a id="a4_8_1manifest_algorithm-name"><span style="margin-right:0.127cm;">4.8.1</span></a><a id="__RefHeading__752843_826425813"/><a id="attribute-manifest_algorithm-name"/>manifest:algorithm-name</h3><p class="Text_20_body">The <span class="Attribute">manifest:algorithm-name</span> attribute specifies the algorithm and mode used to encrypt a file entry. </p><p class="Text_20_body">The defined values for the <span class="Attribute">manifest:algorithm-name</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="T9">An IRI listed in §5.2 of </span><span class="T9"><a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a></span><span class="T9">: The algorithm and mode specified in §5.2 of </span><span class="T9"><a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a></span><span class="T9"> for this IRI.</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">Blowfish CFB</span>: The Blowfish algorithm in 8-bit CFB mode. See <a title="Applied Cryptography (Second Edition)">[Schneier]</a>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#blowfish</span>: The same algorithm as identified by <span class="Attribute_20_Value">Blowfish CFB</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The IRI of an alternative algorithm as specified in §5.1 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a>. Alternative algorithms may be specified by extended conforming <span class="T2">package</span>s only. They shall not be specified by conforming <span class="T2">package</span>s.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>Package producers that support encryption shall support the value <span class="Attribute_20_Value">Blowfish CFB</span>. Package consumers that support encryption shall support the values <span class="Attribute_20_Value">Blowfish CFB</span> and <span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#blowfish</span>.<span class="odfLiEnd"/> </p></li></ul><p class="Note"><span class="Note_20_Label">Note</span>: An errata for <a title="Applied Cryptography (Second Edition)">[Schneier]</a> is available at <a title="Applied Cryptography 2nd. Ed. - Errata" href="http://www.schneier.com/book-applied-errata.html">[Schneier-Errata]</a>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:algorithm-name</span> attribute is usable with the following element: <span class="Element">&lt;manifest:algorithm&gt;</span> <a href="#element-manifest_algorithm">4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">manifest:algorithm-name</span> attribute are <span class="Attribute_20_Value">Blowfish CFB</span> or a value of type <span class="Datatype">anyURI</span> <a href="#datatype-anyURI">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_2manifest_checksum"><span style="margin-right:0.127cm;">4.8.2</span></a><a id="__RefHeading__752845_826425813"/><a id="attribute-manifest_checksum"/>manifest:checksum</h3><p class="Text_20_body">The <span class="Attribute">manifest:checksum</span> attribute specifies a digest in BASE64 encoding that can be used to detect password correctness as specified by a <span class="Attribute">manifest:checksum-type</span> attribute <a href="#attribute-manifest_checksum-type">4.8.3</a> .</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:checksum</span> attribute is usable with the following element: <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:checksum</span> attribute has the data type <span class="Datatype">base64Binary</span> <a href="#datatype-base64Binary">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_3manifest_checksum-type"><span style="margin-right:0.127cm;">4.8.3</span></a><a id="__RefHeading__752847_826425813"/><a id="attribute-manifest_checksum-type"/>manifest:checksum-type</h3><p class="Text_20_body">The <span class="Attribute">manifest:checksum-type</span> attribute specifies the name of a digest algorithm that can be used to check password correctness. The digest is build from the compressed unencrypted file.</p><p class="Text_20_body">The defined values for the <span class="Attribute">manifest:checksum-type</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">SHA1/1K</span>: SHA1 algorithm (see <span class="T8"><a title="US Secure Hash Algorithm 1 (SHA1)" href="http://www.ietf.org/rfc/rfc3174.txt">[RFC3174]</a></span>) applied to first 1024 bytes of the compressed unencrypted file.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">SHA1</span>: The same as <span class="Attribute_20_Value">http://www.w3.org/2000/09/xmldsig#sha1</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#sha1-1k</span>: The same as <span class="Attribute_20_Value">SHA1/1K</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#sha256-1k</span>: SHA256 algorithm (see <span class="T8"><a title="US Secure Hash Algorithm 1 (SHA1)" href="http://www.ietf.org/rfc/rfc3174.txt">[RFC3174]</a></span>) applied to first 1024 bytes of the compressed unencrypted file.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>An IRI listed in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a>: The algorithm specified in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a> for this IRI.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The IRI of an alternative algorithm as specified in §5.1 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a>. Alternative algorithms may be specified by extended conforming <span class="T2">package</span>s only. They shall not be specified by conforming <span class="T2">package</span>s.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Package producers that support encryption should use the <span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#sha256-1k</span> algorithm, Package consumers that support encryption shall support the values <span class="Attribute_20_Value">SHA1/1K</span>, <span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#sha1</span>-1k and <span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#sha256-1k</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:checksum-type</span> attribute is usable with the following element: <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">manifest:checksum-type</span> attribute are <span class="Attribute_20_Value">SHA1/1K</span> or a value of type <span class="Datatype">anyURI</span> <a href="#datatype-anyURI">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_4manifest_full-path"><span style="margin-right:0.127cm;">4.8.4</span></a><a id="__RefHeading__752849_826425813"/><a id="attribute-manifest_full-path"/>manifest:full-path</h3><p class="Text_20_body">The <span class="Attribute">manifest:full-path</span> attribute describes the location of a file or directory within the package. It's value is the name of a file or folder within the Zip file for which the manifest entry defines additional information, including its relative path in the package. The notation is the same as for the “filename” fields of the Zip file's central directory.</p><p class="Text_20_body">The attribute value "<span class="Attribute_20_Value">/</span>" denotes a manifest entry for the package itself.</p><p class="Text_20_body"><span class="Note_20_Label">Note:</span> The Zip file's central directory and the manifest file may have different text encodings.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:full-path</span> attribute is usable with the following element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:full-path</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_5manifest_initialisation-vector"><span style="margin-right:0.127cm;">4.8.5</span></a><a id="__RefHeading__752851_826425813"/><a id="attribute-manifest_initialisation-vector"/>manifest:initialisation-vector</h3><p class="Text_20_body">The <span class="Attribute">manifest:initialisation-vector</span> attribute value provides the byte-sequence for the initialization vector used by the encryption algorithm when delivery of a required initialization vector is not specified as part of the encryption algorithm definition. The initialization vector is a BASE64 encoded binary sequence. The format and length of an initialization vector, in bytes, shall be as required by its encryption algorithm specification.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:initialisation-vector</span> attribute is usable with the following element: <span class="Element">&lt;manifest:algorithm&gt;</span> <a href="#element-manifest_algorithm">4.5</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:initialisation-vector</span> attribute has the data type <span class="Datatype">base64Binary</span> <a href="#datatype-base64Binary">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_6manifest_start-key-generation-name"><span style="margin-right:0.127cm;">4.8.6</span></a><a id="__RefHeading__752853_826425813"/><a id="attribute-manifest_start-key-generation-name"/>manifest:start-key-generation-name</h3><p class="Text_20_body"><span class="T1">The </span><span class="Attribute">manifest:start-key-generation-name</span><span class="T1"> attribute specifies the algorithm used to generate a start key from the user password.</span></p><p class="Text_20_body"><span class="T1">The defined values for the </span><span class="Attribute">manifest:start-key-generation-name</span><span class="T1"> attribute are:</span></p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">SHA1</span><span class="T10">:</span><span class="T1"> The SHA1 algorithm </span><span class="T8">(see </span><span class="T8"><a title="US Secure Hash Algorithm 1 (SHA1)" href="http://www.ietf.org/rfc/rfc3174.txt">[RFC3174]</a></span><span class="T8">)</span><span class="T1">.</span><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>An IRI listed in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a>: The algorithm specified in §5.7 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a> for this IRI.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The IRI of an alternative algorithm as specified in §5.1 of <a title="XML Encryption Syntax and Processing" href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">[xmlenc-core]</a> Alternative algorithms may be specified by extended conforming <span class="T2">package</span>s only. They shall not be specified by conforming <span class="T2">package</span>s.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The default value for this attribute is <span class="Attribute_20_Value">SHA1</span>.</p><p class="Text_20_body"><span class="T1">Package producers that support encryption should use the </span><span class="Attribute_20_Value">http://www.w3.org/2000/09/xmldsig#sha256</span><span class="T1"> algorithm</span><span class="T3">.</span><span class="T1"> Package consumers that support encryption shall support the values </span><span class="Attribute_20_Value">SHA1</span><span class="T1">, and</span> <span class="Attribute_20_Value">http://www.w3.org/2000/09/xmldsig#sha1</span> and <span class="Attribute_20_Value">http://www.w3.org/2000/09/xmldsig#sha256</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:start-key-generation-name</span> attribute is usable with the following element: <span class="Element">&lt;manifest:start-key-generation&gt;</span> <a href="#element-manifest_start-key-generation">4.6</a>.</p><p class="Attribute_20_Value_20_List">The values of the <span class="Attribute">manifest:start-key-generation-name</span> attribute are <span class="Attribute_20_Value">SHA1</span> or a value of type <span class="Datatype">anyURI</span> <a href="#datatype-anyURI">7.2</a>.</p><p class="P6_borderEnd"><span class="T8">The </span>manifest:start-key-generation-name<span class="T8"> attribute has the value </span><span class="T4">SHA1</span><span class="T8"> or a value of data type </span><span class="Datatype"><span class="T8">anyURI</span></span><span class="T8">.</span></p><h3 class="Heading_20_3"><a id="a4_8_7manifest_key-size"><span style="margin-right:0.127cm;">4.8.7</span></a><a id="__RefHeading__752855_826425813"/><a id="attribute-manifest_key-size"/>manifest:key-size</h3><p class="Text_20_body"><span class="T1">The</span> <span class="Attribute">manifest:key-size</span> a<span class="T1">ttribute specifies the length </span><span class="T1">in octets </span><span class="T1">of a key</span><span class="T1"> delivered by a key-developing algorithm</span><span class="T1">.</span></p><p class="Text_20_body"><span class="T1">For a </span><span class="Element">&lt;manifest:start-key-generation&gt;</span><span class="T1"> element, the default value for this attribute is </span><span class="Attribute_20_Value"><span class="T1">20</span></span><span class="T1">.</span></p><p class="Note"><span class="Note_20_Label">Note</span><span class="T1">: The value used will need to be compatible with the result obtain from the start-key-generation algorithm and the input requirements of the key derivation algorithm.<br/><br/>For a </span><span class="Element">&lt;manifest:key-derivation&gt;</span><span class="T1"> element, the default value for this attribute is </span><span class="Attribute_20_Value"><span class="T1">16</span></span><span class="T1">.</span></p><p class="Note"><span class="Note_20_Label">Note</span><span class="T1">: The value used will need to be one obtainable from the key-derivation algorithm and acceptable for the encryption algorithm being used.</span></p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:key-size</span> attribute is usable with the following elements: <span class="Element">&lt;manifest:key-derivation&gt;</span> <a href="#element-manifest_key-derivation">4.7</a> and <span class="Element">&lt;manifest:start-key-generation&gt;</span> <a href="#element-manifest_start-key-generation">4.6</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:key-size</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_8manifest_iteration-count"><span style="margin-right:0.127cm;">4.8.8</span></a><a id="__RefHeading__752857_826425813"/><a id="attribute-manifest_iteration-count"/>manifest:iteration-count</h3><p class="Text_20_body">The <span class="Attribute">manifest:iteration-count</span> attribute specifies the number of iterations used by the key derivation algorithm to derive a key.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:iteration-count</span> attribute is usable with the following element: <span class="Element">&lt;manifest:key-derivation&gt;</span> <a href="#element-manifest_key-derivation">4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:iteration-count</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_9manifest_key-derivation-name"><span style="margin-right:0.127cm;">4.8.9</span></a><a id="__RefHeading__752859_826425813"/><a id="attribute-manifest_key-derivation-name"/>manifest:key-derivation-name</h3><p class="Text_20_body">The <span class="Attribute">manifest:key-derivation-name</span> attribute specifies the password-based key-derivation algorithm used to derive a cryptographic key for use in encryption and decryption of the file.</p><p class="Text_20_body">The defined values for the <span class="Attribute">manifest:key-derivation-name</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">PBKDF2</span>: The PBKDF2 key derivation method with HMAC-SHA-1 for the Pseudo-Random Function(PRF). See <a title="PKCS #5: Password-Based Cryptography Specification Version 2.0" href="http://www.ietf.org/rfc/rfc2898.txt">[RFC2898]</a> sections 5.2 and B.1.1.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#pbkdf2</span>: The same algorithms as identified by <span class="Attribute_20_Value">PBKDF2</span>.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>The IRI of an implementation-defined alternative algorithm. Alternative algorithms may be specified by extended conforming <span class="T2">package</span>s only. They shall not be specified by conforming <span class="T2">package</span>s.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Package producers that support encryption shall support the value <span class="Attribute_20_Value">PBKDF2</span>. <span class="T1">Package consumers that support encryption shall support the values </span><span class="Attribute_20_Value">PBKDF2</span><span class="T1"> and </span><span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#pbkdf2</span>.</p><p class="Text_20_body">If the value of this attribute is <span class="Attribute_20_Value">PBKDF2</span> or <span class="Attribute_20_Value">urn:oasis:names:tc:opendocument:xmlns:</span><span class="Attribute_20_Value">manifest</span><span class="Attribute_20_Value">:1.0</span><span class="Attribute_20_Value">#pbkdf2</span> the <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a> shall contain a <span class="Element">&lt;manifest:start-key-generation&gt;</span> <a href="#element-manifest_start-key-generation">4.6</a> child element that specifies the start key for the PBKDF2 algorithm.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:key-derivation-name</span> attribute is usable with the following element: <span class="Element">&lt;manifest:key-derivation&gt;</span> <a href="#element-manifest_key-derivation">4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">manifest:key-derivation-name</span> attribute are <span class="Attribute_20_Value">PBKDF2</span> or a value of type <span class="Datatype">anyURI</span> <a href="#datatype-anyURI">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_10manifest_media-type"><span style="margin-right:0.127cm;">4.8.10</span></a><a id="__RefHeading__752861_826425813"/><a id="attribute-manifest_media-type"/>manifest:media-type</h3><p class="Text_20_body">The <span class="Attribute">manifest:media-type</span> attribute specifies the MIME media type of a file or directory. See <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a>.</p><p class="Text_20_body">A <span class="Attribute">manifest:media-type</span> attribute should be present for all files and directories where a MIME media type exists for the content of the file, or the document or sub document contained in a directory.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:media-type</span> attribute is usable with the following element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:media-type</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_11manifest_preferred-view-mode"><span style="margin-right:0.127cm;">4.8.11</span></a><a id="__RefHeading__752863_826425813"/><a id="line-141"/><a id="attribute-manifest_preferred-view-mode"/><a id="line-13"/>manifest:preferred-view-mode</h3><p class="Text_20_body">The <span class="Attribute">manifest:preferred-view-mode</span> attribute specifies a preference on how the author of the document would like the document to be presented upon the document being opened. This attribute is only applicable to the root file entry with the <span class="Attribute">manifest:full-path</span> <a href="#attribute-manifest_full-path">4.8.4</a> attribute value of "<span class="Attribute_20_Value">/</span>".</p><p class="Text_20_body">The defined values for the <span class="Attribute">manifest:preferred-view-mode</span> attribute are:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">edit</span>: The author's preference is to open the document as an editable document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">presentation-slide-show</span>: The author's preference is to open the document as presentation slide show.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute_20_Value">read-only</span>: The author's preference is to open the document as a read-only document.<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>A namespaced token value: Specifies an implementation defined view.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">Preferred view modes are not necessarily generally applicable to all media types. The default preferred view mode is implementation defined. The behavior for cases where the <span class="Attribute">manifest:preferred-view-mode</span> attribute is absent is implementation defined.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:preferred-view-mode</span> attribute is usable with the following element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The values of the <span class="Attribute">manifest:preferred-view-mode</span> attribute are <span class="Attribute_20_Value">edit</span>, <span class="Attribute_20_Value">presentation-slide-show</span>, <span class="Attribute_20_Value">read-only</span> or a value of type <span class="Datatype">namespacedToken</span> <a href="#datatype-namespacedToken">7.3.1</a>.</p><h3 class="Heading_20_3"><a id="a4_8_12manifest_salt"><span style="margin-right:0.127cm;">4.8.12</span></a><a id="__RefHeading__752865_826425813"/><a id="attribute-manifest_salt"/>manifest:salt</h3><p class="Text_20_body">The <span class="Attribute">manifest:salt</span> attribute carries the value of a cryptographically-random binary value designed to mitigate certain cryptographic attacks on the password. There is no maximum length to the salt. See <a title="PKCS #5: Password-Based Cryptography Specification Version 2.0" href="http://www.ietf.org/rfc/rfc2898.txt">[RFC2898]</a> for further considerations in the use of salts with key-derivation and other cryptographic functions. The salt is encoded in the attribute value as <span class="Datatype">base64binary</span>.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:salt</span> attribute is usable with the following element: <span class="Element">&lt;manifest:key-derivation&gt;</span> <a href="#element-manifest_key-derivation">4.7</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:salt</span> attribute has the data type <span class="Datatype">base64Binary</span> <a href="#datatype-base64Binary">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_13manifest_size"><span style="margin-right:0.127cm;">4.8.13</span></a><a id="__RefHeading__752867_826425813"/><a id="attribute-manifest_size"/>manifest:size</h3><p class="Text_20_body">The <span class="Attribute">manifest:size</span> attribute shall be present for encrypted files. See <a href="#Encryption">3.4</a>. Its value shall be size of the uncompressed, unencrypted file in bytes.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:size</span> attribute is usable with the following element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:size</span> attribute has the data type <span class="Datatype">nonNegativeInteger</span> <a href="#datatype-nonNegativeInteger">7.2</a>.</p><h3 class="Heading_20_3"><a id="a4_8_14manifest_version"><span style="margin-right:0.127cm;">4.8.14</span></a><a id="__RefHeading__752869_826425813"/><a id="attribute-manifest_version"/>manifest:version</h3><h4 class="Heading_20_4"><a id="a4_8_14_1_manifest_file-entry_"><span style="margin-right:0.127cm;">4.8.14.1</span></a><a id="attribute-manifest_version_element-manifest_file-entry"/>&lt;manifest:file-entry&gt;</h4><p class="Text_20_body">The <span class="Attribute">manifest:version</span> attribute specifies the format version of a file entry. For documents that are composed from multiple files, this attribute is specified at the manifest entry that references the folder that contains these files.</p><p class="Text_20_body">The interpretation of the attribute value depends on the MIME media type specified in the <span class="Attribute">manifest:media-type</span> attribute.</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:version</span> attribute is usable with the following element: <span class="Element">&lt;manifest:file-entry&gt;</span> <a href="#element-manifest_file-entry">4.3</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The <span class="Attribute">manifest:version</span> attribute has the data type <span class="Datatype">string</span> <a href="#datatype-string">7.2</a>.</p><h4 class="Heading_20_4"><a id="a4_8_14_2_manifest_manifest_"><span style="margin-right:0.127cm;">4.8.14.2</span></a><a id="attribute-manifest_version_element-manifest_manifest"/>&lt;manifest:manifest&gt;</h4><p class="Text_20_body">The <span class="Attribute">manifest:version</span> attribute identifies the version of OpenDocument specification that defines the schema and interpretation of the package manifest. The value of the <span class="Attribute">manifest:version</span> attribute shall be "<span class="Attribute_20_Value">1.2</span>".</p><p class="Parent_20_Element_20_List_borderStart">The <span class="Attribute">manifest:version</span> attribute is usable with the following element: <span class="Element">&lt;manifest:manifest&gt;</span> <a href="#element-manifest_manifest">4.2</a>.</p><p class="Attribute_20_Value_20_List_borderEnd">The only value of the <span class="Attribute">manifest:version</span> attribute is <span class="Attribute_20_Value">1.2</span>.</p><h1 class="Heading_20_1"><a id="a5Digital_Signatures_File"><span style="margin-right:0.127cm;">5</span></a><a id="__RefHeading__752871_826425813"/><a id="Digital_Signature_File"/>Digital Signatures File</h1><h2 class="Heading_20_2"><a id="a5_1Introduction"><span style="margin-right:0.127cm;">5.1</span></a><a id="__RefHeading__752873_826425813"/>Introduction</h2><p class="Text_20_body">The format of the digital signature files is defined by the OpenDocument digital signature schema Relax-NG <a title="Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG" href="http://oasis-open.org/committees/relax-ng/spec-20011203.html">[RNG]</a> schema. See appendix A. This chapter describes the semantics of the elements and attributes defined by this schema.</p><h2 class="Heading_20_2"><a id="a5_2_dsig_document-signatures_"><span style="margin-right:0.127cm;">5.2</span></a><a id="__RefHeading__752875_826425813"/><a id="element-dsig_document-signatures"/><a id="element2-dsig_document-signatures"/><a id="DDE_LINK"/>&lt;dsig:document-signatures&gt;</h2><p class="Text_20_body">The <span class="Element">&lt;dsig:document-signatures&gt;</span> root element serves as a container for any number of <span class="Alien_20_Element">&lt;ds:Signature&gt;</span> <a href="#element2-xmldsig_Signature">5.3</a> elements. If the <span class="Element">&lt;dsig:document-signatures&gt;</span> element contains multiple <span class="Alien_20_Element">&lt;ds:Signature&gt;</span> elements, then there <span class="ISO_20_Keyword">should</span> be a relation between the digital signatures they define, for instance, they may all apply to the same set of files.</p><p class="Text_20_body">Consumers <span class="ISO_20_Keyword">may </span>require that a digital signature includes a certain set of files. That is, they <span class="ISO_20_Keyword">may </span>consider a digital signature to be valid if, and only if,</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>the digital signature itself is valid, and<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>if the <span class="Alien_20_Element">&lt;</span><span class="Alien_20_Element">ds:</span><span class="Alien_20_Element">Reference&gt;</span> child elements of the <span class="Alien_20_Element">&lt;</span><span class="Alien_20_Element">ds:</span><span class="Alien_20_Element">Signature&gt;</span> element reference a certain set of files.<span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">In particular, consumers <span class="ISO_20_Keyword">may</span> require that a digital signature references all files contained in a package.</p><p class="Text_20_body">If a digital signature file is not encrypted, consumers shall not decrypt files that are referenced by <span class="Alien_20_Element">&lt;</span><span class="Alien_20_Element">ds:</span><span class="Alien_20_Element">Reference&gt;</span> elements and that are encrypted before validating the signature.</p><p class="Text_20_body">If a digital signature file is encrypted, consumers shall decrypt files that are referenced by <span class="Alien_20_Element">&lt;</span><span class="Alien_20_Element">ds:</span><span class="Alien_20_Element">Reference&gt;</span> elements and that are encrypted before validating the signature.</p><p class="Parent_20_Element_20_List2_borderStart">The <span class="Element">&lt;dsig:document-signatures&gt;</span> element is a root element.</p><p class="Attribute_20_List2">The <span class="Element">&lt;dsig:document-signatures&gt;</span> element has the following attribute: <span class="Attribute">dsig:version</span> <a href="#attribute-dsig_version">5.4.1</a>.</p><p class="Child_20_Element_20_List2_borderEnd">The <span class="Element">&lt;dsig:document-signatures&gt;</span> element has the following child element: <span class="Element">&lt;ds:Signature&gt;</span> <a href="#element2-xmldsig_Signature">5.3</a>.</p><h2 class="Heading_20_2"><a id="a5_3_ds_Signature_"><span style="margin-right:0.127cm;">5.3</span></a><a id="__RefHeading__752877_826425813"/><a id="element2-xmldsig_Signature"/><a id="attribute-manifest_version_element-ds_Signature"/>&lt;ds:Signature&gt;</h2><p class="Text_20_body">The <span class="Alien_20_Element">&lt;ds:Signature&gt;</span> element is defined by the <a title=" XML Signature Syntax and Processing (Second Edition)" href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">[xmldsig-core]</a> specification. Each <span class="Alien_20_Element">&lt;ds:Signature&gt;</span> element shall contain an <span class="Alien_20_Attribute">Id</span> attribute specifying a unique value. A producer may use the XAdES extensions as specified in ETSI TS 101 903 v1.4.1 <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a>, or later versions of the XAdES specification.</p><p class="Text_20_body">A <span class="Alien_20_Element">&lt;ds:KeyInfo&gt;</span> element, as specified in <a title=" XML Signature Syntax and Processing (Second Edition)" href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">[xmldsig-core]</a>, section 4.4 shall be included. The <span class="Alien_20_Element">&lt;ds:KeyInfo&gt;</span> element should contain an <span class="Alien_20_Element">&lt;ds:X509Data&gt;</span> element containing an <span class="Alien_20_Element">&lt;ds:X509IssuerSerial&gt;</span> element specifying the issuer and serial number of the signing certificate, and an <span class="Alien_20_Element">&lt;ds:X509Certificate&gt;</span> element specifying the full signing certificate.</p><p class="Text_20_body">Additional <span class="Alien_20_Element">&lt;ds:X509Certificate&gt;</span> elements may be placed in the <span class="Alien_20_Element">&lt;ds:X509Data&gt;</span>, or may be placed in the <span class="Alien_20_Element">&lt;xades:CertificateValues&gt;</span> element of the XAdES <span class="Alien_20_Element">&lt;ds:Object&gt;</span>, as defined in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a> section 7.6.1. The additional certificates should represent the entire certificate chain used for verification at signing time.</p><p class="Text_20_body"><span class="Alien_20_Element">&lt;ds:Reference&gt;</span> elements contained within a <span class="Alien_20_Element">&lt;ds:SignedInfo&gt;</span> element shall be resolved according to the following specification:</p><ol><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">1.</span>A <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element which has a Type attribute value of "<span class="Alien_20_Attribute_20_Value">http://docs.oasis-open.org/office/v1.2/OS/OpenDocument-v1.2.odt</span>" shall refer to files in the same package in the accordance with the procedure for resolving IRIs <a href="#Package_IRI">3.7</a>, except that the file entry path shall be the name of the signature file with its relative path omitted. <span class="odfLiEnd"/> </p><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm"><!-- --></span><span class="Note_20_Label">Note:</span> Consequently, an IRI-Reference consisting entirely of "#" followed by an ifragment (§2.2 of [RFC3987]) refers to the ID of an XML element within the same XML document containing this <span class="Alien_20_Element">&lt;ds:signature&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">2.</span>A <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element which has a Type attribute with a value of "<span class="Alien_20_Attribute_20_Value">http://uri.etsi.org/01903/v1.2.2#SignedProperties</span>" refers to an XAdES SignedProperties element.. A <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element which refers to the XAdES SignedProperties element (if present) shall be as specified in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a> section 6.3.1.<span class="odfLiEnd"/> </p></li><li><p class="P22" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0.4991cm">3.</span>A <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element which does not have a Type attribute shall be processed the same a <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element which has a Type attribute with a value of "<span class="Alien_20_Attribute_20_Value">http://docs.oasis-open.org/office/v1.2/OS/OpenDocument-v1.2.odt</span>".<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The only permitted <span class="Alien_20_Element">&lt;ds:Transform&gt;</span> elements which apply to files contained within the archive shall be canonicalization transforms, as specified in <a title=" XML Signature Syntax and Processing (Second Edition)" href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">[xmldsig-core]</a>, section 6.5.</p><p class="Text_20_body">The signing time should be recorded using one or more of the following approaches:</p><ol><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">1.</span>An <span class="Alien_20_Element">&lt;ds:Object &gt;</span> element containing a <span class="Alien_20_Element">&lt;ds:SignatureProperty&gt;</span> element with:<span class="odfLiEnd"/> </p><ol><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">a.</span>An <span class="Alien_20_Attribute">Id</span> attribute with a value containing a unique identifier.<span class="odfLiEnd"/> </p></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">b.</span>A Target attribute corresponding to the <span class="Alien_20_Attribute">Id</span> attribute of the <span class="Alien_20_Element">&lt;ds:Signature&gt;</span> element.<span class="odfLiEnd"/> </p></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">c.</span>A <span class="Alien_20_Element">&lt;date&gt;</span> element from the namespace "<span class="Alien_20_Attribute_20_Value">http://purl.org/dc/elements/1.1/</span>" containing the UTC time as <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> dateTime value.<span class="odfLiEnd"/> </p></li></ol></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">2.</span>A <span class="Alien_20_Element">&lt;xades:SigningTime&gt;</span> element as specified in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a> section 7.2.1.<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">If an <span class="Alien_20_Element">&lt;ds:Object&gt;</span> containing XAdES elements is present, then a document compliant with this specification uses the following options:</p><ol><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">1.</span>The <span class="Alien_20_Element">&lt;xades:SignedSignatureProperties&gt;</span> element shall contain a <span class="Alien_20_Element">&lt;xades:SigningCertificate&gt;</span> property as specified in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a> section 7.2.2.<span class="odfLiEnd"/> </p></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">2.</span>A &lt;xades:SigningTime&gt; element should be present as specified in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a> section 7.2.1.<span class="odfLiEnd"/> </p></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">3.</span>If any timestamp elements of type XAdESTimeStampType are present, such as the <span class="Alien_20_Element">&lt;xades:SignatureTimeStamp&gt;</span> or <span class="Alien_20_Element">&lt;xades: SigAndRefsTimestamp&gt;</span> elements, the time stamp information shall be specified as an EncapsulatedTimeStamp element containing DER encoded ASN.1. Data.<span class="odfLiEnd"/> </p></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">4.</span>If references to validation data are present, the <span class="Alien_20_Element">&lt;xades:SigAndRefsTimestamp&gt;</span> element as specified in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a> sections 7.5.1 and 7.5.1.1 shall be used.<span class="odfLiEnd"/> </p></li><li><p class="P20" style="margin-left:0cm;"><span class="Numbering_20_Symbols" style="display:block;float:left;min-width:0cm">5.</span>There shall be a <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element specifying the digest of the SignedProperties element, as specified in <a title="XML Advanced Electronic Signatures (XAdES)" href="http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064">[XAdES]</a>, section 6.2.1. This <span class="Alien_20_Element">&lt;ds:Reference&gt;</span> element shall be contained within the <span class="Alien_20_Element">&lt;ds:SignedInfo&gt;</span> element of the <span class="Alien_20_Element">&lt;ds:Signature&gt;</span> element.<span class="odfLiEnd"/> </p></li></ol><p class="Parent_20_Element_20_List2">The <span class="Element">&lt;ds:Signature&gt;</span> element is usable with the following element: <span class="Element">&lt;dsig:document-signatures&gt;</span> <a href="#element2-dsig_document-signatures">5.2</a>.</p><h2 class="Heading_20_2"><a id="a5_4Digital_Signatures_Attributes"><span style="margin-right:0.127cm;">5.4</span></a><a id="__RefHeading__752879_826425813"/>Digital Signatures Attributes</h2><h3 class="Heading_20_3"><a id="a5_4_1dsig_version"><span style="margin-right:0.127cm;">5.4.1</span></a><a id="__RefHeading__752881_826425813"/><a id="attribute-dsig_version"/>dsig:version</h3><p class="Text_20_body">The <span class="Attribute">dsig:version</span> attribute identifies the version of OpenDocument specification that defines the schema and interpretation of the digital signature file. The value of the <span class="Attribute">dsig:version</span> attribute shall be "<span class="Attribute_20_Value">1.2</span>".</p><p class="Parent_20_Element_20_List2_borderStart">The <span class="Attribute">dsig:version</span> attribute is usable with the following element: <span class="Element">&lt;dsig:document-signatures&gt;</span> <a href="#element2-dsig_document-signatures">5.2</a>.</p><p class="Parent_20_Element_20_List2_borderEnd">The only value of the <span class="Attribute">dsig:version</span> attribute is <span class="Attribute_20_Value">1.2</span>.</p><h1 class="Heading_20_1"><a id="a6Metadata_Manifest_Files"><span style="margin-right:0.127cm;">6</span></a><a id="__RefHeading__752883_826425813"/><a id="Metadata_Manifest_Files"/>Metadata Manifest Files</h1><h2 class="Heading_20_2"><a id="a6_1General"><span style="margin-right:0.127cm;">6.1</span></a><a id="__RefHeading__752885_826425813"/>General</h2><p class="Text_20_body">Metadata manifest files (see <a href="#Metadata">3.6</a>) have the file name “manifest.rdf”. The metadata manifest file for a document (see <a href="#General">3.1</a>) shall be stored in the root of the package. The metadata manifest file for a sub documents shall be stored in the sub document's directory.</p><p class="Text_20_body">Metadata manifest files enumerate metadata files and their relationships to other files in that document or sub document as defined by this specification.</p><p class="Text_20_body">The relationships are expressed in the metadata manifest files using <a title="   RDF/XML Syntax Specification (Revised)" href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/">[RDF-XML]</a> and the <a title="OWL Web Ontology Language Overview" href="http://www.w3.org/TR/2004/REC-owl-features-20040210/">[OWL]</a> Metadata Manifest Description ontology that is defined in appendix B. The following OWL classes and properties are defined.</p><h2 class="Heading_20_2"><a id="a6_2pkg_Document"><span style="margin-right:0.127cm;">6.2</span></a><a id="__RefHeading__752887_826425813"/><a id="owlclass-pkg_Document"/>pkg:Document</h2><p class="Text_20_body">An instance of the <span class="OWL_20_Class">pkg:Document</span> class in the metadata manifest file represents the document or sub document itself.</p><p class="Text_20_body">The following property is defined for the <span class="OWL_20_Class">pkg:Document</span> class: <span class="OWL_20_Property">pkg:hasPart</span> <a href="#owlproperty-pkg_hasPart">6.6</a>.</p><h2 class="Heading_20_2"><a id="a6_3pkg_File"><span style="margin-right:0.127cm;">6.3</span></a><a id="__RefHeading__752889_826425813"/><a id="owlclass-pkg_File"/>pkg:File</h2><p class="Text_20_body">A file in an OpenDocument package is represented by an instance of class <span class="OWL_20_Class">pkg:File</span> or by one of its subclasses, for example <span class="OWL_20_Class">pkg:MetadataFile</span>.</p><p class="Text_20_body">An instance of the <span class="OWL_20_Class">pkg:File</span> class (or one of its subclasses) is identified by an IRI.</p><p class="Text_20_body">The relationship between a file and a package is expressed using the property <span class="OWL_20_Property">pkg:hasPart</span> <a href="#owlproperty-pkg_hasPart">6.6</a>.</p><p class="Text_20_body">The following property is defined for the <span class="OWL_20_Class">pkg:File</span> class: <span class="OWL_20_Property">pkg:mimeType</span> <a href="#owlproperty-pkg_mimeType">6.7</a>.</p><h2 class="Heading_20_2"><a id="a6_4pkg_MetadataFile"><span style="margin-right:0.127cm;">6.4</span></a><a id="__RefHeading__752891_826425813"/>pkg:MetadataFile</h2><p class="Text_20_body">An instance of the <span class="OWL_20_Class">pkg:MetadataFile</span> class represents a metadata file.</p><p class="Text_20_body">The <span class="OWL_20_Class">pkg:MetadataFile</span> class is a subclass of <span class="OWL_20_Class">pkg:File</span> <a href="#owlclass-pkg_File">6.3</a>.</p><h2 class="Heading_20_2"><a id="a6_5pkg_Element"><span style="margin-right:0.127cm;">6.5</span></a><a id="__RefHeading__752893_826425813"/><a id="owlclass-pkg_Element"/>pkg:Element</h2><p class="Text_20_body">The <span class="OWL_20_Class">pkg:Element</span> class describes an XML element contained in a file within an OpenDocument package.</p><h2 class="Heading_20_2"><a id="a6_6pkg_hasPart"><span style="margin-right:0.127cm;">6.6</span></a><a id="__RefHeading__752895_826425813"/><a id="owlproperty-pkg_hasPart"/>pkg:hasPart</h2><p class="Text_20_body">The <span class="OWL_20_Property">pkg:hasPart</span> property locates a file described by <span class="OWL_20_Class">pkg:File</span> or its subclasses within a document or sub document.</p><p class="Text_20_body">This property can be used with the following class: <span class="OWL_20_Class">pkg:Document</span> <a href="#owlclass-pkg_Document">6.2</a>.</p><h2 class="Heading_20_2"><a id="a6_7pkg_mimeType"><span style="margin-right:0.127cm;">6.7</span></a><a id="__RefHeading__752897_826425813"/><a id="owlproperty-pkg_mimeType"/>pkg:mimeType</h2><p class="Text_20_body">The <span class="OWL_20_Property">pkg:mimeType</span> property is used to specify the MIME media type <a title="Media Type Specifications and Registration Procedures" href="http://www.ietf.org/rfc/rfc4288.txt">[RFC4288]</a> of file described by an <span class="OWL_20_Class">pkg:File</span> class or one of its subclasses.</p><p class="Text_20_body">This property can be used with the following class: <span class="OWL_20_Class">pkg:File</span> <a href="#owlclass-pkg_File">6.3</a>.</p><h1 class="Heading_20_1"><a id="a7Datatypes"><span style="margin-right:0.127cm;">7</span></a><a id="__RefHeading__752899_826425813"/>Datatypes</h1><h2 class="Heading_20_2"><a id="a7_1Introduction"><span style="margin-right:0.127cm;">7.1</span></a><a id="__RefHeading__752901_826425813"/>Introduction</h2><p class="Text_20_body">The values of attributes and elements are often described as having datatypes. These datatypes either are datatypes defined within <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a>, or are defined by this specification. Datatypes for which no <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> datatype exists are expressed in the schema by <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> datatypes. Some of these datatypes have additional constraints.</p><h2 class="Heading_20_2"><a id="a7_2W3C_Schema_Datatypes"><span style="margin-right:0.127cm;">7.2</span></a><a id="__RefHeading__752903_826425813"/>W3C Schema Datatypes</h2><p class="Text_20_body">The following <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> datatypes are used in this specification:</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><a id="datatype-anyURI"/>anyURI<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><a id="datatype-base64Binary"/>base64Binary<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><a id="datatype-nonNegativeInteger"/>nonNegativeInteger<span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><a id="datatype-string"/>string<span class="odfLiEnd"/> </p></li></ul><h2 class="Heading_20_2"><a id="a7_3Other_Datatypes"><span style="margin-right:0.127cm;">7.3</span></a><a id="__RefHeading__752905_826425813"/>Other Datatypes</h2><h3 class="Heading_20_3"><a id="a7_3_1namespacedToken"><span style="margin-right:0.127cm;">7.3.1</span></a><a id="__RefHeading__752907_826425813"/><a id="datatype-namespacedToken"/>namespacedToken</h3><p class="Text_20_body">A namespaced token is an <a title="XML Schema Part 2: Datatypes Second Edition" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">[xmlschema-2]</a> QName that matches the definition of PrefixedName in §4 of <a title="Namespaces in XML 1.0 (Second Edition)" href="http://www.w3.org/TR/2006/REC-xml-names-20060816">[xml-names]</a>.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix A.</span><a id="__RefHeading__752909_826425813"/><a id="Appendix_A"/>Schemas<span class="odfLiEnd"/> </p><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">A.1.</span><a id="__RefHeading__752911_826425813"/>OpenDocument Manifest Schema<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">The OpenDocument manifest schema is defined by a separate document, whose location can be found in the <a href="#Related_Work">Related work</a> section on the introductory pages.</p><ol><li><ol><li><p class="Appendix_20_Heading_20_2" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:1.016cm">A.2.</span><a id="__RefHeading__752913_826425813"/>OpenDocument Digital Signature Schema<span class="odfLiEnd"/> </p></li></ol></li></ol><p class="Text_20_body">The OpenDocument digital signature schema is defined by a separate document, whose location can be found in the <a href="#Related_Work">Related work</a> section on the introductory pages.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix B.</span><a id="__RefHeading__752915_826425813"/><a id="Appendix_B"/>OpenDocument Metadata Manifest Ontology<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The OpenDocument metadata manifest ontology is defined by a separate document, whose location can be found in the <a href="#Related_Work">Related work</a> section on the introductory pages.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix C.</span><a id="__RefHeading__752917_826425813"/><a id="Appendix_C"/>Zip File Structure (Non normative)<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">A Zip file starts with a sequence of files, each of which can be compressed or stored in raw format. Each file has a local header immediately before its data, which contains most of the information about the file, including time-stamps, compression method and file name. The compressed file contents immediately follow, and are terminated by an optional data descriptor. The data descriptor contains the CRC and compressed size of the file, which are frequently not available when writing the local file header. If these details were included, the data descriptor can be skipped.</p><p class="Text_20_body">Each file in the archive is laid down sequentially in this format, followed by a central directory at the end of the Zip archive. The central directory is a contiguous set of directory entries, each of which contains all the information in the local file header, plus extras such as file comments and attributes. Most importantly, the central directory contains pointers to the position of each file in the archive for navigation of the Zip file.</p><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is a draw:frame.--><div style="width:2.9992in; padding:0; " class="fr1" id="Frame8"><!--Next 'div' was a 'draw:text-box'.--><div style="min-height:4.1866in;"><!--Next 'div' was a 'text:p'.--><div class="Figure"> <!--Next 'div' is a draw:frame.--><div style="height:4.1846in;width:3in; padding:0; " class="fr3" id="ZipFileStructure"><img style="height:10.6289cm;width:7.62cm;" alt="" src="./Pictures/10000200000001200000019292DCF9E2.gif"/></div><!--Next 'div' added for floating.--><div style="position:relative; left:0cm;">Figure <a id="refFigure0"/>1 - Zip file structure</div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div></div></div></div><div style="clear:both; line-height:0; width:0; height:0; margin:0; padding:0;"> </div><p class="Text_20_body">For more details about the Zip file format, see <a title="PKWARE Inc. Zip APPNOTE Version 6.2.0" href="available at http://www.pkware.com/support/application-note-archives">[ZIP]</a>.</p><ol><li><p class="Appendix_20_Heading_20_1" style="margin-left:0cm;"><span class="Zeichenformat" style="display:block;float:left;min-width:0.762cm">Appendix D.</span><a id="__RefHeading__752919_826425813"/><a id="Appendix_D"/>Changes From “Open Document Format for Office Applications (OpenDocument) v1.1” (Non Normative)<span class="odfLiEnd"/> </p></li></ol><p class="Text_20_body">The OpenDocument specification has been divided into three parts and has been restructured.</p><p class="Text_20_body">This appendix describes changes that are related to part 3 of this specification.</p><p class="Text_20_body">The following is a list of major features that have been added. For minor features please see the lists of new and changed elements and attributes.</p><ul><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>Digital Signatures <a href="#Digital_Signatures">3.5</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>RDF based metadata <a href="#Metadata">3.6</a><span class="odfLiEnd"/> </p></li><li><p class="P17" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span>Support for additional encryption algorithms <a href="#Encryption">3.4</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The following element is new for manifest files:</p><ul><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Element">&lt;manifest:start-key-generation&gt;</span> <a href="#element-manifest_start-key-generation">4.6</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The following attributes are new for manifest files:</p><ul><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:key-size</span> <a href="#attribute-manifest_key-size">4.8.7</a><span class="odfLiEnd"/> </p></li><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:preferred-view-mode</span> <a href="#attribute-manifest_preferred-view-mode">4.8.11</a><span class="odfLiEnd"/> </p></li><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:start-key-generation-name</span> <a href="#attribute-manifest_start-key-generation-name">4.8.6</a><span class="odfLiEnd"/> </p></li><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:version</span> <a href="#attribute-manifest_version">4.8.14</a><span class="odfLiEnd"/> </p></li></ul><p class="Text_20_body">The value types of the following attributes changed:</p><ul><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:algorithm-name</span> <a href="#attribute-manifest_algorithm-name">4.8.1</a> of <span class="Element">&lt;manifest:algorithm&gt;</span> <a href="#element-manifest_algorithm">4.5</a><span class="odfLiEnd"/> </p></li><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:checksum-type</span> <a href="#attribute-manifest_checksum-type">4.8.3</a> of <span class="Element">&lt;manifest:encryption-data&gt;</span> <a href="#element-manifest_encryption-data">4.4</a><span class="odfLiEnd"/> </p></li><li><p class="P21" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0.6401cm">•</span><span class="Attribute">manifest:key-derivation-name</span> <a href="#attribute-manifest_key-derivation-name">4.8.9</a> of <span class="Element">&lt;manifest:key-derivation&gt;</span> <a href="#element-manifest_key-derivation">4.7</a><span class="odfLiEnd"/> </p></li></ul></body></html>
\ No newline at end of file
diff --git a/trunk/odfdom/src/main/javadoc/doc-files/simple_odf_fam_prop.jpg b/trunk/odfdom/src/main/javadoc/doc-files/simple_odf_fam_prop.jpg
new file mode 100644
index 0000000..3a01873
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/doc-files/simple_odf_fam_prop.jpg
Binary files differ
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/doc/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/doc/package.html
new file mode 100644
index 0000000..ad99f20
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/doc/package.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        The "Document Layer" exisit for usability reasons, it gives a feature based view on the document model.
+		One feature consists of one or more ODF elements (e.g. table).</br>
+		<b>NOTE:</b> Since ODFDOM 0.8.8, the "Document Layer" was marked as "Deprecated". We suggest you use Simple API replace the APIs in this package. Simple API is similar with it, but more stable and with more powerful features.
+		More detail information, please reference the Javadoc in each class.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/doc/table/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/doc/table/package.html
new file mode 100644
index 0000000..c181563
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/doc/table/package.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to manipulate table in ODF text and spreadsheet document.
+        
+	<p>
+	Table is a common used feature in ODF. 
+	This package provides convenient methods to manipulate table feature and its child features, such as row, column, cell, cell range.
+	<p>
+	OdfTable represents table in ODF. It provides methods to new a table, delete a table, get rows, 
+	columns, and cells of a table, new a cell range, insert and delete rows and columns, and so on.
+	<p>
+	OdfTableRow and OdfTableColumn represents row and column in ODF. It provides methods to get cells, 
+	get next and previous row and column, set properties of rows and columns, and so on.
+	<p>
+	OdfTableCell represents cell in ODF. It provides many methods to set the properties and values of a cell, 
+	such as horizontal alignment, vertical alignment, value, formula, value format, and so on.
+	<p>
+	OdfTableRange represents a range of cells in ODF. It provides a method to merge a range of cells to a single cell, and some other methods too.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/attribute/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/attribute/package.html
new file mode 100644
index 0000000..ce6f0a6
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/attribute/package.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        From the ODF RelaxNG generated Java classes representing the ODF attributes with their allowed value sets.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/element/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/element/package.html
new file mode 100644
index 0000000..cf97976
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/element/package.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        From the ODF RelaxNG generated Java classes representing the ODF elements.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/style/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/style/package.html
new file mode 100644
index 0000000..a05af15
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/style/package.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provides classes to create and access ODF styles and ODF style families.
+        (DEPRECATED: functionality will be moved to element.style for version 0.8 see <a href="https://odftoolkit.org/bugzilla/show_bug.cgi?id=72">
+        <b>Bug&nbsp;72</b></a>)
+        Instances of class OdfStyle represent the style of ODF elements.
+        Derived style classes for stylable elements were generated from the RelaxNG schema
+        and implement Interfaces which specify their possible style property attributes.
+        
+        <br>Note:
+        Classes OdfListStyle and ListStyle were not generated yet. This will follow in
+        upcoming versions. 
+        <p>
+        The class OdfStyleCollection provides access to all styles used in
+        the document. The class OdfDocument uses instances of the OdfStyleCollection
+        respectively for default-styles, document-styles and for automatic-styles.	
+        <p>
+        Each style-family is associated with a set of properties, e.g. style:family="text"
+        is associated with a style:text-properties child element. Some style families contain 
+        multiple style properties.The associations which properties go with which style
+        families were generated from the RelaxNG schema. The class OdfStyleFamily holds a static
+        instance for every possible style family which itself contains all possible style 
+        property attributes.
+        <p>
+        <!-- ToDo: update class diagram after style refactoring in 0.8 
+        The following class diagram is neither complete nor very detailed. It has the purpose 
+        to give a basic overview about how styles are handled by ODFDOM
+        <p align="center">
+        <img src="../../../../../doc-files/Abstract_ODFDOM_style.jpg">
+         -->
+        
+        
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/style/props/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/style/props/package.html
new file mode 100644
index 0000000..486d208
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/dom/style/props/package.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Classes representing the style properties. 
+        (DEPRECATED: functionality will be moved to element.style for version 0.8 see <a href="https://odftoolkit.org/bugzilla/show_bug.cgi?id=72">
+        <b>Bug&nbsp;72</b></a>)
+
+        Each style-family is associated with a set of properties, e.g. style:family="text"
+        is associated with a style:text-properties child element. Some style families contain 
+        multiple style properties.The associations which properties go with which style
+        families were generated from the RelaxNG schema. Then again these properties have 
+        various style property attributes.
+        <p align="center">
+        <img src="../../../../../doc-files/simple_odf_fam_prop.jpg">
+        
+        
+        
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/incubator/meta/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/incubator/meta/package.html
new file mode 100644
index 0000000..f371405
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/incubator/meta/package.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide classes to access the metadata of ODF documents. (Incubator Status)
+        <p>
+	This package provides very simple fuctions to set and get the properties of metadata in ODF documents. 
+	The fuctions to access metadata about auto-reload, template and hyperlink behaviour are not completed.
+	       
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/incubator/search/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/incubator/search/package.html
new file mode 100644
index 0000000..5530be6
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/incubator/search/package.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide classes to operate the content and style of the selected text content. (Incubator Status)
+        
+        <p>
+        Abstract class Navigation represent the navigate action on the specified document, and user can iterate all the results of this navigation operation. Abstract class Selection describes one result of navigation.
+        
+        <p>
+        The instance of derived navigation class will give the match condition so that user can get the corresponding derived Selection class instance. e.g. TextNavigation class is used to search the specified text content in the document. and TextStyleNavigation class can select the text which match the specified style.
+        <p>
+        TextSelection class which inheriates Selection represents a snippet text of the paragraph/heading/header/footer, it can be represent by the belonged element and the text index of this element. User can get delete this result, or replace this text with other content, add href link for this selections, append the italic style for it and paste this selection at the front of or the end of other selction.
+        <p>
+       
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/pkg/package.html b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/pkg/package.html
new file mode 100644
index 0000000..093da4d
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/org/odftoolkit/odfdom/pkg/package.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        Representing the "Package Layer", the physical document handling.        
+        File streams can be inserted and deleted.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/odfdom/src/main/javadoc/overview.html b/trunk/odfdom/src/main/javadoc/overview.html
new file mode 100644
index 0000000..99c8ae7
--- /dev/null
+++ b/trunk/odfdom/src/main/javadoc/overview.html
@@ -0,0 +1,214 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!--
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+<html>
+    <body>
+
+		<div class="wikiMainBody"><p><br />
+				The ODFDOM project's objective is to provide an easy API for reading, writing and manipulating documents of the OpenDocument format (ODF).
+			</p><h1><a name='The_ODFDOM_Layers'></a>The ODFDOM Layers</h1>
+			<p>
+			<div id='toc' style='border:solid #DEDEDF 1px;background:#EEE;padding:10px;'>
+
+				<div id='toctitle' style='padding-bottom:5px;font-weight:bold;'>
+
+					<span>Contents</span>
+				</div>
+				<div id='toccontents' style='list-style-type:none;'><ul><li>1 <a href='#The_ODFDOM_Layers'>The ODFDOM Layers</a></li></
+						<ul><li>1.1 <a href='#The_ODF_Package_Layer'>The ODF Package Layer</a></li>
+							<ul><li>1.1.1 <a href='#The_ODF_Package_API'>The ODF Package API</a></li>
+							</ul><li>1.2 <a href='#The_ODF_XML_Layer'>The ODF XML Layer</a></li>
+							<ul><li>1.2.1 <a href='#The_ODF_DOM_API'>The ODF DOM API</a></li>
+								<li>1.2.2 <a href='#The_ODF_Document_API'>The ODF Document API</a></li>
+							</ul></ul></ul></div>
+			</div><p><br />
+
+			</p><h1><a name='The_ODFDOM_Layers'></a>The ODFDOM Layers</h1>
+			<p>
+				The ODFDOM project's objective is to provide an easy API for reading, writing and manipulating documents of the OpenDocument format (ODF).
+				To archive this, the ODFDOM API follows a layered approach to access documents, as layered design is the robust foundation for a well-designed modular structure.
+
+			</p><p><img src='doc-files/ODFDOM-Layered-Model.png' />
+			</p><h2><a name='The_ODF_Package_Layer'></a>The ODF Package Layer</h2>
+		<p>The ODF Package Layer provides access to all resources stored within the ODF package, such as XML streams, images or embedded objects.
+		</p><h3><a name='The_ODF_Package_API'></a>The ODF Package API</h3>
+		<p>The ODF Package API covers all features from the <a class='external' href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html">third part of the ODF 1.2 specification</a> defining the ODF Package features. The ODF 1.2 package features are build on top technologies as <a class='external' href="http://www.pkware.com/documents/APPNOTE/APPNOTE_6.2.0.txt">ZIP package handling</a>, <a class='external' href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">W3C encryption</a>, <a class='external' href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">W3C signature</a> and <a class='external' href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">W3C metadata</a>.
+
+		</p><p>At this layer a document is in general represented by a bundle of named resources zipped to a package.
+			For instance, an ODF text document like 'myVacation.odt' might contain the following files:
+
+		</p><p><img src='doc-files/ODF_Package.jpg' />
+
+		</p><p><b>Note:</b>
+			All file streams aside of the '/Pictures' directory and its content are specified by the ODF standard.
+			Furthermore, the file streams are similar for all types of ODF documents.
+
+		</p><p>The main requirements for this layer in regard of ZIP are:
+		</p><ul><li> Zip/unzip the file streams of the package
+			</li><li> Enlist all file streams in the /META-INF/manifest.xml (similar to an inventory)
+			</li><li> Begin the package with an unzipped 'mimetype' file stream (allowing others to easily identify the package)
+			</li></ul><p>
+			All sources of the Package layer are organized in ODFDOM beyond <code>org.odftoolkit.odfdom.pkg.*</code>
+
+		</p><p>The following example illustrates how to add a graphic to the package level
+			(although not shown by an ODF application (like OpenOffice.org), as not used by the shown content):
+
+		</p><p><pre>
+
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+[...]
+
+// loads the ODF document package from the path
+OdfPackage pkg = OdfPackage.loadPackage(&quot;/home/myDocuments/myVacation.odt&quot;);
+
+// loads the image from the URL and inserts the image in the package,
+// adapting the manifest
+pkg.insert(new URI(&quot;./myHoliday.png&quot;), &quot;Pictures/myHoliday.png&quot;, &quot;image/png&quot;);
+pkg.save(&quot;/home/myDocuments/myVacation.odt&quot;);
+
+		</pre>
+
+	</p><p><br />
+
+	</p><h2><a name='The_ODF_XML_Layer'></a>The ODF XML Layer</h2>
+	<p>The ODF XML Layer provides all the features of an office format, such as tables, images, numbering etc. All features are defined in <a class='external' href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html">the first part of the ODF 1.2 specification</a> describing the ODF XML schema. This layer consists of two APIs representing two different views on the features.
+
+	</p><h3><a name='The_ODF_DOM_API'></a>The ODF DOM API</h3>
+	<p>The ODF DOM API gives access to the XML, the elemental parts of the ODF schema features. With this API it is easy to manipulate all specified XML nodes extending the platform and language independent DOM API <a class='external' href="http://www.w3.org/DOM/">DOM API standardized by the W3C</a> - best-known by its implementation through the browsers. It extends the DOM API using a typed DOM. For every ODF XML element and ODF XML attribute defined by the ODF grammar (the RelaxNG schema) a unique class exists, providing methods for their allowed children. The purpose is to provide the user a corset to easily write valid ODF without consulting the spec constantly. This API is very consistent as instead of laboriously writing all these classes, the sources were generated directly from the ODF schema. This generation guarantees complete coverage of the ODF specification on one side and an easy and accurate upgrade to future ODF specifications on the other.
+
+	</p><p>At this level, all XML file streams of the document are accessible via the <a class='external' href="http://www.w3.org/DOM/">W3C DOM API</a>, but only the ODF standardized XML file streams of the document (e.g. content.xml, meta.xml) have their own classes representing their ODF XML elements. Foreign XML within a specified ODF XML file will remain in the document model in general and won't be neglected unless desired ( which still might be a future option).
+
+	</p><p>Example of the ODF XML representing a table in ODF:
+
+	</p><p><img src='doc-files/FruitTable_code.jpg' />
+
+	</p><p><b>Note:</b> In the OpenDocument standard the ODF elements are reused among all document types. The above XML of a table is for instance equally usable in Text and Spreadsheet documents.
+
+	</p><p>
+		This XML would be mapped to a W3C derived ODF DOM class structure:
+
+	</p><p><img src='doc-files/800px-Table_fruits_diagramm.jpg' width="670px" height="346px" />
+
+	</p><p>All sources of the typed DOM API are organized beyond <code>org.odftoolkit.odfdom.dom.*</code>
+
+	</p><p>The sources for the ODF elements are all generated from the ODF grammar (RelaxNG schema) using the following naming conventions in the Java reference implementation:
+	</p><ul><li> The class name is equal to the element local name using the Namespace as prefix and 'Element' as suffix (e.g. the 'draw:frame' element has the <code>DrawFrameElement</code> class).
+		</li><li> Elements are stored beyond a sub-package equal to their Namespace used by the OOo. Therefore the frame element 'draw:frame' would be generated in Java as class <code>org.odftoolkit.odfdom.dom.draw.DrawFrameElement</code>.
+		</li></ul><p><b>Note:</b> The element local names 'h' and 'p' have been renamed to the classes 'Heading' and 'Paragraph' for usability reasons.
+
+	</p><p>The following example illustrates how to add a graphic to the ODF document, that it is viewable:
+	<pre>
+
+import java.net.URI;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+
+[...]
+
+// Load file
+OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument(&quot;ImageIn.odt&quot;);
+
+// get root of all content of a text document
+OfficeTextElement officeText = odt.getContentRoot();
+
+// get first paragraph
+TextPElement firstParagraph =
+  OdfElement.findFirstChildNode(TextPElement.class, officeText);
+
+// XPath alternative to get the first paragraph
+/*
+  XPath xpath = XPathFactory.newInstance().newXPath();
+  xpath.setNamespaceContext(new OdfNamespace());
+  OdfFileDom dom = odt.getContentDom();
+  firstParagraph = (TextPElement) xpath.evaluate(&quot;//text:p[1]&quot;, dom, XPathConstants.NODE);
+*/
+
+// insert a frame
+DrawFrameElement frame = firstParagraph.newDrawFrameElement();
+
+// insert an image: This is a class from the Document API
+OdfDrawImage image = (OdfDrawImage) frame.newDrawImageElement();
+image.newImage(new URI(&quot;./MySampleImage.png&quot;));
+
+// Save file
+odt.save(&quot;ImageOut.odt&quot;);
+	</pre><br />
+	Even in this example we had to refer to a class from the Document API. Otherwise our implementation had gotten quite long and complex.
+
+</p><p><br />
+
+</p><h3><a name='The_ODF_Document_API'></a>The ODF Document API</h3>
+<p>
+	The ODF Document API provides a different much more high level view on the ODF schema features. This API is concerned about usability, hiding all ODF XML implementation details from the user, covering frequent user scenarios. For example, changing the content of a certain spreadsheet cell (e.g. Add 'Hello World' to a spreadsheet cell positioned at 'B2'). While in the ODF DOM API in general each class represents an ODF XML node, here a class covers multiple underlying ODF XML elements (&amp; their attributes). Think of puzzle piece consisting of multiple smaller pieces. Therefore the typed DOM tree is being mapped to feature tree.
+
+</p><p>As naming convention all sources of the ODF document functionality layer are organized beyond <code>org.odftoolkit.odfdom.doc.*</code>
+	The name of a document class is in general similar as the root element from the XML layer feature, only there is the new prefix 'Odf' and the suffix 'Element' has been neglected.
+
+</p><p>For example, the document class for a 'draw:frame' element would be represented in the ODFDOM Java reference implemenation as <code>org.odftoolkit.odfdom.doc.draw.OdfDrawFrame</code> class. Some classes of the Document API differ from this naming convention, e.g. OdfTextParagraph is the subclass of TextPElement. However by browsing the packages you will easily find the classes your looking for.
+
+</p><p><b>Note:</b> The Document API will change. The current inheritance between DOM and DOC elements does not fit any longer in the multiple elements to a single document feature (1:n) pattern. The first Document Object is the table <code>rg.odftoolkit.odfdom.doc.table.OdfTable</code>, others will follow soon.
+
+</p><p>Again let's look at the previous code example for the DOM API: Remember all DOM element classes are abstract and we're really getting objects from the Document API: Even if <code>frame.newDrawFrameElement()</code> is defined to return the DOM class DrawFrameElement, it really returns the DOC subclass OdfDrawFrame. So it's always save to use explicit casting <code>OdfDrawFrame frame = (OdfDrawFrame) firstParagraph.newDrawFrameElement();</code>.
+
+</p><p>However reworking the previous example would just make the code larger, since we're not using any of the document methods provided by the DOC subclasses.
+
+</p><p>Here's an example for working with DOC classes, completely avoiding handling the DOM manually:
+
+</p><p><pre>
+[...]
+// Load Image
+OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument(&quot;ImageIn.odt&quot;);
+
+// Play around with text
+odt.addText(&quot;When there is no paragraph, the text will be embedded in a new paragraph&quot;);
+odt.newParagraph(&quot;Create new paragraph&quot;);
+odt.addText(&quot;\nThis is a new line&quot;);
+
+// Insert Image and make last paragraph its anchor
+odt.newImage(new URI(&quot;./MySampleImage.png&quot;));
+
+// Save file
+odt.save(&quot;ImageOut.odt&quot;);
+</pre>
+
+</p><p><br />
+
+<h2>Further Information</h2>
+For further Information about ODFDOM and related topics please visit following pages:
+<ol>
+	<li><a href="http://incubator.apache.org/odftoolkit/odfdom/index.html">ODFDOM</a></li>
+	<li><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html">OpenDocument v1.2 specification - part 1: OpenDocument Schema</a></li>
+	<li><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html">OpenDocument v1.2 specification - part 3: Packages</a></li>
+	<li><a href="http://incubator.apache.org/odftoolkit/simple/index.html">Simple Java API</a></li>
+</ol>
+</p>
+</div>
+</body>
+</html>
diff --git a/trunk/odfdom/src/main/resources/OdfChartDocument.odc b/trunk/odfdom/src/main/resources/OdfChartDocument.odc
new file mode 100644
index 0000000..0860e0b
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/OdfChartDocument.odc
Binary files differ
diff --git a/trunk/odfdom/src/main/resources/OdfGraphicsDocument.odg b/trunk/odfdom/src/main/resources/OdfGraphicsDocument.odg
new file mode 100644
index 0000000..0a73855
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/OdfGraphicsDocument.odg
Binary files differ
diff --git a/trunk/odfdom/src/main/resources/OdfImageDocument.odi b/trunk/odfdom/src/main/resources/OdfImageDocument.odi
new file mode 100644
index 0000000..1f31418
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/OdfImageDocument.odi
Binary files differ
diff --git a/trunk/odfdom/src/main/resources/OdfPresentationDocument.odp b/trunk/odfdom/src/main/resources/OdfPresentationDocument.odp
new file mode 100644
index 0000000..db7ad19
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/OdfPresentationDocument.odp
Binary files differ
diff --git a/trunk/odfdom/src/main/resources/OdfSpreadsheetDocument.ods b/trunk/odfdom/src/main/resources/OdfSpreadsheetDocument.ods
new file mode 100644
index 0000000..1bc08dc
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/OdfSpreadsheetDocument.ods
Binary files differ
diff --git a/trunk/odfdom/src/main/resources/OdfTextDocument.odt b/trunk/odfdom/src/main/resources/OdfTextDocument.odt
new file mode 100644
index 0000000..d5e8265
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/OdfTextDocument.odt
Binary files differ
diff --git a/trunk/odfdom/src/main/resources/grddl/odf2rdf.xsl b/trunk/odfdom/src/main/resources/grddl/odf2rdf.xsl
new file mode 100644
index 0000000..f6d1696
--- /dev/null
+++ b/trunk/odfdom/src/main/resources/grddl/odf2rdf.xsl
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+

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

+

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

+

+-->

+<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office: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:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xhtml="http://www.w3.org/1999/xhtml" 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#">

+	<output method="xml" encoding="UTF-8" media-type="application/rdf+xml" indent="yes" omit-xml-declaration="yes" />

+

+  <!-- The base URL of the OpenDocument's three XML files (directory within package) -->

+	<param name="sourceBaseURL" select="'.'" />

+	<param name="FILE_URL">

+		<choose>

+			<when test="substring($sourceBaseURL, string-length($sourceBaseURL), 1) = '/'">

+				<value-of select="concat($sourceBaseURL , substring-after(name(/*), 'office:document-'), '.xml')"/>

+			</when>

+			<otherwise>

+				<!-- add '/' to the end of the document URL -->

+				<value-of select="concat($sourceBaseURL ,'/', substring-after(name(/*), 'office:document-'), '.xml')"/>

+			</otherwise>

+		</choose>

+	</param>

+

+

+	<!-- Version 1.2.0 by Svante.Schubert AT gmail.com

+		 First two digits mark the supported ODF version  -->

+	<variable name="stylesheetVersion" select="'1.2.0'"/>

+

+	<template match="/">

+		<element name="rdf:RDF">

+			<attribute name="xml:base">

+				<value-of select="$sourceBaseURL"/>

+			</attribute>

+			<element name="pkg:Document">

+				<attribute name="rdf:about">

+					<value-of select="$sourceBaseURL"/>

+				</attribute>

+				<call-template name="setMimeType"/>

+				<apply-templates select="*/@office:version" mode="root"/>

+				<apply-templates select="/office:document-meta/office:meta/*" mode="meta-file"/>

+			</element>

+			<apply-templates mode="content-styles-files"/>

+		</element>

+	</template>

+

+	<template match="@office:version" mode="root">

+		<attribute name="office:version">

+			<value-of select="."/>

+		</attribute>

+	</template>

+

+	<template name="setMimeType">

+		<!-- Use new ODF 1.2 RDF mimeType property -->

+		<if test="@office:mimetype or name(/*/office:body/*)">

+			<attribute name="pkg:mimeType">

+				<choose>

+					<when test="@office:mimetype">

+						<value-of select="@office:mimetype"/>

+					</when>

+					<otherwise>

+						<value-of select="concat('vnd.oasis.opendocument.', substring-after(name(/*/office:body/*), 'office:'))"/>

+					</otherwise>

+				</choose>

+			</attribute>

+		</if>

+	</template>

+

+	 <!-- OpenDocument meta.xml handling -->

+	<template match="*" mode="meta-file">

+		<element name="{name()}">

+			<value-of select="text()"/>

+		</element>

+	</template>

+

+	<template match="*[* or @*]" mode="meta-file">

+		<element name="{name()}">

+			<apply-templates select="@* | text()" mode="meta-file-child"/>

+		</element>

+	</template>

+

+	<template match="@*" mode="meta-file-child">

+		<attribute name="{name()}">

+			<value-of select="."/>

+		</attribute>

+	</template>

+

+	<template match="text()" mode="meta-file-child">

+		<attribute name="meta:value">

+			<value-of select="."/>

+		</attribute>

+	</template>

+

+	<!-- OpenDocument content.xml handling -->

+	<template match="/office:document-content/office:body/*" mode="content-styles-files">

+		<apply-templates mode="content-styles-files" />

+	</template>

+

+	<!-- OpenDocument styles.xml handling (header&footer)-->

+	<template match="/office:document-styles/office:master-styles/style:master-page/*" mode="content-styles-files">

+		<apply-templates mode="content-styles-files" />

+	</template>

+

+	<!-- ignore RDFa of deleted content -->

+	<template match="text:tracked-changes" mode="content-styles-files" />

+

+	<!-- RDFa -->

+	<template match="*" mode="content-styles-files">

+		<apply-templates mode="content-styles-files" />

+	</template>

+

+	<template match="text()" mode="content-styles-files"/>

+

+	<template match="*[@xhtml:about]" mode="content-styles-files">

+		<choose>

+			<when test="name() = 'text:bookmark-start'">

+				<call-template name="resolve-RDF-subject">

+					<with-param name="text">

+						<apply-templates select="following::node()[1]" mode="rdfa-bookmark-literal">

+							<with-param name="name" select="@text:name"/>

+						</apply-templates>

+					</with-param>

+				</call-template>

+			</when>

+			<otherwise>

+				<call-template name="resolve-RDF-subject">

+					<with-param name="text">

+						<apply-templates mode="rdfa-literal"/>

+					</with-param>

+				</call-template>

+			</otherwise>

+		</choose>

+	</template>

+

+	<template match="*" mode="rdfa-literal">

+		<apply-templates mode="rdfa-literal"/>

+	</template>

+

+	<template match="text()" mode="rdfa-literal">

+		<value-of select="."/>

+	</template>

+

+	<template match="*" mode="rdfa-bookmark-literal">

+		<param name="name"/>

+

+		<choose>

+			<when test="descendant::node()[1]">

+				<apply-templates select="descendant::node()[1]" mode="rdfa-bookmark-literal">

+					<with-param name="name" select="$name"/>

+				</apply-templates>

+			</when>

+			<otherwise>

+				<apply-templates select="following::node()[1]" mode="rdfa-bookmark-literal">

+					<with-param name="name" select="$name"/>

+				</apply-templates>

+			</otherwise>

+		</choose>

+	</template>

+

+	<template match="text()" mode="rdfa-bookmark-literal">

+		<param name="name"/>

+

+		<!-- heuristic instead of a check if parent may contain text -->

+		<if test="normalize-space(.) != ''">

+			<value-of select="."/>

+		</if>

+		<apply-templates select="following::node()[1]" mode="rdfa-bookmark-literal">

+			<with-param name="name" select="$name"/>

+		</apply-templates>

+	</template>

+

+	<template match="text:bookmark-end" mode="rdfa-bookmark-literal">

+		<param name="name"/>

+

+		<!-- end condition of the recursion, if the bookmark-end  -->

+		<if test="$name != @text:name">

+			<apply-templates select="following::node()[1]" mode="rdfa-bookmark-literal">

+				<with-param name="name" select="$name"/>

+			</apply-templates>

+		</if>

+	</template>

+

+	<template name="resolve-RDF-subject">

+		<param name="text" />

+

+		<!-- create RDF subject -->

+		<element name="rdf:Description">

+			<attribute name="rdf:about">

+				<call-template name="resolve-URI-or-Safe-CURIE">

+					<with-param name="URIorSafeCURIE" select="@xhtml:about"/>

+				</call-template>

+			</attribute>

+			<if test="@xhtml:content">

+				<attribute name="rdfs:label" namespace="http://www.w3.org/2000/01/rdf-schema#">

+					<value-of select="$text"/>

+				</attribute>

+			</if>

+			<call-template name="resolve-RDF-property">

+				<with-param name="CURIEs" select="@xhtml:property"/>

+				<with-param name="text" select="$text"/>

+			</call-template>

+		</element>

+	</template>

+

+	<template name="resolve-RDF-property">

+		<param name="CURIEs"/>

+		<param name="text"/>

+

+		<variable name="multiplePredicates" select="contains($CURIEs, ' ')"/>

+		<variable name="CURIE">

+			<choose>

+				<when test="$multiplePredicates">

+					<value-of select="normalize-space(substring-before($CURIEs, ' '))"/>

+				</when>

+				<otherwise>

+					<value-of select="$CURIEs"/>

+				</otherwise>

+			</choose>

+		</variable>

+		<variable name="ns">

+			<call-template name="get-namespace">

+				<with-param name="CURIE" select="normalize-space(substring-before($CURIEs, ' '))"/>

+			</call-template>

+		</variable>

+		<!-- RDF property -->

+		<element name="{$CURIE}" namespace="{$ns}">

+			<apply-templates select="@xhtml:datatype"/>

+			<choose>

+				<when test="@xhtml:content">

+					<value-of select="@xhtml:content"/>

+				</when>

+				<otherwise>

+					<value-of select="$text"/>

+				</otherwise>

+			</choose>

+		</element>

+

+		<if test="$multiplePredicates">

+			<call-template name="resolve-RDF-property">

+				<with-param name="CURIEs" select="normalize-space(substring-after($CURIEs, $CURIE))"/>

+				<with-param name="text" select="$text"/>

+			</call-template>

+		</if>

+	</template>

+

+	<template match="@xhtml:datatype">

+		<variable name="ns">

+			<call-template name="get-namespace">

+				<with-param name="CURIE" select="."/>

+			</call-template>

+		</variable>

+

+		<attribute name="rdf:datatype">

+			<value-of select="concat($ns, substring-after(., substring-before(.,':')))"/>

+		</attribute>

+	</template>

+

+	<template name="get-namespace">

+		<param name="CURIE"/>

+

+		<variable name="prefix" select="substring-before($CURIE,':')"/>

+		<choose>

+			<when test="string-length($prefix)&gt;0">

+				<value-of select="ancestor-or-self::*/namespace::*[name()=$prefix][1]"/>

+			</when>

+			<otherwise> <!-- default namespace -->

+				<value-of select="ancestor-or-self::*/namespace::*[name()=''][1]"/>

+			</otherwise>

+		</choose>

+	</template>

+

+	<template name="resolve-URI-or-Safe-CURIE">

+		<param name="URIorSafeCURIE"/>

+		<choose>

+			<when test="starts-with($URIorSafeCURIE,'[')"> <!-- a SafeCURIE -->

+				<value-of select="substring-after(substring-before($URIorSafeCURIE,']'),'[')"/>

+			</when>

+			<when test="starts-with($URIorSafeCURIE,'#')"> <!-- an ODF element -->

+				<value-of select="concat($FILE_URL,$URIorSafeCURIE)"/>

+			</when>

+			<when test="string-length($URIorSafeCURIE)=0"> <!-- an ODF document -->

+				<value-of select="$sourceBaseURL"/>

+			</when>

+			<otherwise> <!-- an IRI -->

+				<value-of select="$URIorSafeCURIE"/>

+			</otherwise>

+		</choose>

+	</template>

+

+	<template match="node()"/>

+</stylesheet>
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/junit/AlphabeticalOrderedRunner.java b/trunk/odfdom/src/test/java/org/odftoolkit/junit/AlphabeticalOrderedRunner.java
new file mode 100644
index 0000000..b6ee1d4
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/junit/AlphabeticalOrderedRunner.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.odftoolkit.Junit;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.InitializationError;
+
+/**
+ * Guarantees that the test methods of a test class are being executed in alphabetical order.
+ * Activated by annotating the test class using <code>@RunWith(AlphabeticalOrderedRunner.class)</code>.
+ * 
+ * @author svanteschubert
+ */
+public class AlphabeticalOrderedRunner extends BlockJUnit4ClassRunner {
+
+	//private static final Logger LOG = Logger.getLogger(OrderedRunner.class.getName());
+
+	/*                                                                         
+	 * default initializer                                                     
+	 */
+	public AlphabeticalOrderedRunner(Class _class) throws InitializationError {
+		super(_class);
+	}
+
+	/**
+	 * The initializer just pipes through to the superclass. Pretty standard
+	 * stuff. The interesting part is in overriding the computeTestMethods method.
+	 */
+	@Override
+	protected List computeTestMethods() {
+		List lst = super.computeTestMethods();
+		List methodList = new ArrayList(lst);
+
+		Collections.sort(methodList, new AlphabeticalOrder());
+
+		return methodList;
+	}
+
+	/*                                                                              
+	 * Class for alphabetical ordering of a list                                   
+	 */
+	public class AlphabeticalOrder implements Comparator {
+
+		public int compare(Object o1, Object o2) {
+			FrameworkMethod f1 = (FrameworkMethod) o1;
+			FrameworkMethod f2 = (FrameworkMethod) o2;
+
+			return f1.getName().compareTo(f2.getName());
+		}
+	}
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ChartTemplateTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ChartTemplateTest.java
new file mode 100644
index 0000000..8610ad3
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ChartTemplateTest.java
@@ -0,0 +1,98 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ * Test class for template aspects of chart.
+ */
+public class ChartTemplateTest {
+
+	private static final String TEST_CHART_TEMPLATE = "chartTestTemplate.otc";
+
+	@Test
+	@Ignore
+	public void testLoadingAChartTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_CHART_TEMPLATE));
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingAChartTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_CHART_TEMPLATE));
+		File destination = File.createTempFile("odfdom-test", ".otc");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewChartTemplate() throws Exception {
+		OdfDocument document = OdfChartDocument.newChartTemplateDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("odfdom-test", ".otc");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfChartDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfChartDocument() throws Exception {
+		OdfChartDocument document = OdfChartDocument.newChartDocument();
+		document.changeMode(OdfChartDocument.OdfMediaType.CHART_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+
+		document = OdfChartDocument.newChartTemplateDocument();
+		document.changeMode(OdfChartDocument.OdfMediaType.CHART);
+		Assert.assertEquals(OdfDocument.OdfMediaType.CHART.getMediaTypeString(), document.getPackage().getMediaTypeString());
+	}
+
+	@Test
+	public void testSwitchingOdfImageDocument() throws Exception {
+		OdfImageDocument document = OdfImageDocument.newImageDocument();
+		document.changeMode(OdfImageDocument.OdfMediaType.IMAGE_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.IMAGE_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+
+		document = OdfImageDocument.newImageTemplateDocument();
+		document.changeMode(OdfImageDocument.OdfMediaType.IMAGE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.IMAGE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/CreateChildrenElementsTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/CreateChildrenElementsTest.java
new file mode 100644
index 0000000..5c95fa2
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/CreateChildrenElementsTest.java
@@ -0,0 +1,437 @@
+/************************************************************************
+ *
+ * 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 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.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.anim.AnimAnimateElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartChartElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartPlotAreaElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawLineElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentContentElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleDefaultStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSoftPageBreakElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextList;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class CreateChildrenElementsTest {
+
+	@Test
+	public void testCreatChildrenForPresentation() {
+		try {
+			OdfPresentationDocument odfdoc = (OdfPresentationDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("presentation.odp"));
+			OfficePresentationElement presentation = odfdoc.getContentRoot();
+			Assert.assertNotNull(presentation);
+
+			DrawPageElement page = presentation.newDrawPageElement("NewPage");
+
+			OdfFileDom contentDom = odfdoc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			DrawPageElement presentationTest = (DrawPageElement) xpath.evaluate("//draw:page[last()]", contentDom, XPathConstants.NODE);
+
+			Assert.assertTrue(presentationTest instanceof DrawPageElement);
+			Assert.assertEquals(page, presentationTest);
+			Assert.assertEquals(presentationTest.getNodeName(), "draw:page");
+			Assert.assertEquals(presentationTest.getDrawMasterPageNameAttribute(), "NewPage");
+
+			odfdoc.save(ResourceUtilities.newTestOutputFile("CreatChildrenForPresentationTest.odp"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForChart() {
+		try {
+
+			OdfFileDom contentDom = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("empty.odt")).getContentDom();
+
+			// find the last paragraph
+			NodeList lst = contentDom.getElementsByTagNameNS(
+					OdfTextParagraph.ELEMENT_NAME.getUri(),
+					OdfTextParagraph.ELEMENT_NAME.getLocalName());
+			Assert.assertTrue(lst.getLength() > 0);
+			OdfTextParagraph p0 = (OdfTextParagraph) lst.item(lst.getLength() - 1);
+
+			OfficeDocumentContentElement content = contentDom.newOdfElement(OfficeDocumentContentElement.class);
+			OfficeBodyElement body = contentDom.newOdfElement(OfficeBodyElement.class);
+			content.appendChild(body);
+			ChartChartElement chart = contentDom.newOdfElement(ChartChartElement.class);
+			//create children element
+			ChartPlotAreaElement plotArea = chart.newChartPlotAreaElement();
+			body.appendChild(chart);
+			p0.getParentNode().insertBefore(content, p0);
+
+
+			XPath xpath = contentDom.getXPath();
+			ChartChartElement chartTest = (ChartChartElement) xpath.evaluate("//chart:chart[last()]", contentDom, XPathConstants.NODE);
+
+			Assert.assertNotNull(chartTest.getChildNodes());
+
+			Assert.assertTrue(chartTest.getChildNodes().item(0) instanceof ChartPlotAreaElement);
+			Assert.assertEquals(plotArea, chartTest.getChildNodes().item(0));
+			Assert.assertEquals(chartTest.getChildNodes().item(0).getNodeName(), "chart:plot-area");
+
+			contentDom.getDocument().save(ResourceUtilities.newTestOutputFile("CreatChildrenForChartTest.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreateChildrenForTable() {
+		try {
+			OdfFileDom contentDom = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("empty.odt")).getContentDom();
+
+			// find the last paragraph
+			NodeList lst = contentDom.getElementsByTagNameNS(
+					TextPElement.ELEMENT_NAME.getUri(),
+					TextPElement.ELEMENT_NAME.getLocalName());
+			Assert.assertTrue(lst.getLength() > 0);
+			OdfTextParagraph p0 = (OdfTextParagraph) lst.item(lst.getLength() - 1);
+
+			TableTableElement table = contentDom.newOdfElement(TableTableElement.class);
+
+
+			TableTableRowElement tr = table.newTableTableRowElement();
+
+			TableTableCellElement td1 = tr.newTableTableCellElement(0,"void");
+
+			TextPElement p1 = td1.newTextPElement();
+			p1.appendChild(contentDom.createTextNode("content 1"));
+
+			p0.getParentNode().insertBefore(table, p0);
+
+			table.setProperty(StyleTablePropertiesElement.Width, "12cm");
+			table.setProperty(StyleTablePropertiesElement.Align, "left");
+
+			td1.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, "2cm");
+			XPath xpath = contentDom.getXPath();
+			TableTableRowElement tableRowTest = (TableTableRowElement) xpath.evaluate("//table:table-row [last()]", contentDom, XPathConstants.NODE);
+			Assert.assertNotNull(tableRowTest.getChildNodes());
+
+			Assert.assertTrue(tableRowTest.getChildNodes().item(0) instanceof TableTableCellElement);
+			Assert.assertEquals(tableRowTest.getChildNodes().item(0).getNodeName(), "table:table-cell");
+
+			contentDom.getDocument().save(ResourceUtilities.newTestOutputFile("CreateChildrenForTableTest.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForText() {
+		try {
+
+			OdfFileDom contentDom = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("empty.odt")).getContentDom();
+
+			// find the last paragraph
+			NodeList lst = contentDom.getElementsByTagNameNS(
+					OdfTextParagraph.ELEMENT_NAME.getUri(),
+					OdfTextParagraph.ELEMENT_NAME.getLocalName());
+			Assert.assertTrue(lst.getLength() > 0);
+			OdfTextParagraph p0 = (OdfTextParagraph) lst.item(lst.getLength() - 1);
+
+			TextListItemElement listItem = contentDom.newOdfElement(TextListItemElement.class);
+			//create children elements
+			TextHElement heading = listItem.newTextHElement(1);
+			TextListElement list = listItem.newTextListElement();
+			TextPElement paragraph = listItem.newTextPElement();
+			TextSoftPageBreakElement softPageBreak = listItem.newTextSoftPageBreakElement();
+
+			p0.getParentNode().insertBefore(listItem, p0);
+			XPath xpath = contentDom.getXPath();
+			TextListItemElement listItemTest = (TextListItemElement) xpath.evaluate("//text:list-item[last()]", contentDom, XPathConstants.NODE);
+			Assert.assertNotNull(listItemTest.getChildNodes());
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(0) instanceof OdfTextHeading);
+			Assert.assertEquals(heading, listItemTest.getChildNodes().item(0));
+			Assert.assertEquals(listItemTest.getChildNodes().item(0).getNodeName(), "text:h");
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(1) instanceof OdfTextList);
+			Assert.assertEquals(list, listItemTest.getChildNodes().item(1));
+			Assert.assertEquals(listItemTest.getChildNodes().item(1).getNodeName(), "text:list");
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(2) instanceof OdfTextParagraph);
+			Assert.assertEquals(paragraph, listItemTest.getChildNodes().item(2));
+			Assert.assertEquals(listItemTest.getChildNodes().item(2).getNodeName(), "text:p");
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(3) instanceof TextSoftPageBreakElement);
+			Assert.assertEquals(softPageBreak, listItemTest.getChildNodes().item(3));
+			Assert.assertEquals(listItemTest.getChildNodes().item(3).getNodeName(), "text:soft-page-break");
+
+
+			contentDom.getDocument().save(ResourceUtilities.newTestOutputFile("CreatChildrenForTextTable.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForGraphic() {
+		try {
+
+			OdfGraphicsDocument odgDoc1 = OdfGraphicsDocument.newGraphicsDocument();
+			OdfFileDom contentDom = odgDoc1.getContentDom();
+
+			NodeList lst = contentDom.getElementsByTagNameNS(
+					DrawPageElement.ELEMENT_NAME.getUri(),
+					DrawPageElement.ELEMENT_NAME.getLocalName());
+			DrawPageElement page = (DrawPageElement) lst.item(lst.getLength() - 1);
+			//page.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.DRAW), "name" ), "page1" );
+			//page.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.DRAW), "style-name" ), "dp1" );
+			//page.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.DRAW), "master-page-name" ), "Default" );
+			page.setDrawNameAttribute("page1");
+			page.setDrawStyleNameAttribute("dp1");
+			page.setDrawMasterPageNameAttribute("Default");
+
+			DrawLineElement line = page.newDrawLineElement("6cm", "10cm", "15cm", "20cm");
+			//line.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.DRAW), "style-name" ), "gr1" );
+			//line.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.DRAW), "text-style-name" ), "P1" );
+			//line.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.DRAW), "layer" ), "layout" );
+			line.setDrawStyleNameAttribute("gr1");
+			line.setDrawTextStyleNameAttribute("P1");
+			line.setDrawLayerAttribute("layer");
+			XPath xpath = contentDom.getXPath();
+			DrawPageElement graphicTest = (DrawPageElement) xpath.evaluate("//draw:page[last()]", contentDom, XPathConstants.NODE);
+			Assert.assertNotNull(graphicTest.getChildNodes());
+
+			Assert.assertTrue(graphicTest.getChildNodes().item(0) instanceof DrawLineElement);
+			Assert.assertEquals(line, graphicTest.getChildNodes().item(0));
+			Assert.assertEquals(graphicTest.getChildNodes().item(0).getNodeName(), "draw:line");
+
+			Assert.assertEquals(((DrawLineElement) graphicTest.getChildNodes().item(0)).getSvgX1Attribute().toString(), "6cm");
+			Assert.assertEquals(((DrawLineElement) graphicTest.getChildNodes().item(0)).getSvgX2Attribute().toString(), "10cm");
+			Assert.assertEquals(((DrawLineElement) graphicTest.getChildNodes().item(0)).getSvgY1Attribute().toString(), "15cm");
+			Assert.assertEquals(((DrawLineElement) graphicTest.getChildNodes().item(0)).getSvgY2Attribute().toString(), "20cm");
+
+			contentDom.getDocument().save(ResourceUtilities.newTestOutputFile("CreatChildrenForGraphic.odg"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForStyles() {
+		try {
+			OdfDocument textDoc = OdfTextDocument.newTextDocument();
+
+			OdfOfficeStyles styles = textDoc.getOrCreateDocumentStyles();
+			StyleDefaultStyleElement def = styles.newStyleDefaultStyleElement("text");
+			def.setStyleFamilyAttribute(OdfStyleFamily.Paragraph.toString());
+			def.setProperty(StyleTextPropertiesElement.TextUnderlineColor, "#00FF00");
+
+			StyleStyleElement parent = styles.newStyleStyleElement("text","TheParent");
+			parent.setStyleFamilyAttribute(OdfStyleFamily.Paragraph.toString());
+
+			parent.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+			parent.setProperty(StyleTextPropertiesElement.Color, "#FF0000");
+			OdfStylesDom stylesDom = textDoc.getStylesDom();
+			XPath xpath = stylesDom.getXPath();
+			StyleStyleElement styleTest = (StyleStyleElement) xpath.evaluate("//style:style[last()]", stylesDom, XPathConstants.NODE);
+			Assert.assertEquals(styleTest, parent);
+			textDoc.save(ResourceUtilities.newTestOutputFile("CreatChildrenForStyles.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForEmbeddedDoc() {
+		try {
+			OdfDocument document = OdfTextDocument.newTextDocument();
+			document.insertDocument(OdfTextDocument.newTextDocument(), "Object1/");
+			OdfDocument embeddedObject1 = (OdfDocument) document.loadSubDocument("Object1/");
+			OdfFileDom contentDom = embeddedObject1.getContentDom();
+			// find the last paragraph
+			NodeList lst = contentDom.getElementsByTagNameNS(
+					OdfTextParagraph.ELEMENT_NAME.getUri(),
+					OdfTextParagraph.ELEMENT_NAME.getLocalName());
+			Assert.assertTrue(lst.getLength() > 0);
+			OdfTextParagraph p0 = (OdfTextParagraph) lst.item(lst.getLength() - 1);
+
+			TextListItemElement listItem = contentDom.newOdfElement(TextListItemElement.class);
+			//create children elements
+			TextHElement heading = listItem.newTextHElement(1);
+			TextListElement list = listItem.newTextListElement();
+			TextPElement paragraph = listItem.newTextPElement();
+			TextSoftPageBreakElement softPageBreak = listItem.newTextSoftPageBreakElement();
+
+			p0.getParentNode().insertBefore(listItem, p0);
+			XPath xpath = contentDom.getXPath();
+			TextListItemElement listItemTest = (TextListItemElement) xpath.evaluate("//text:list-item[last()]", contentDom, XPathConstants.NODE);
+			Assert.assertNotNull(listItemTest.getChildNodes());
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(0) instanceof OdfTextHeading);
+			Assert.assertEquals(heading, listItemTest.getChildNodes().item(0));
+			Assert.assertEquals(listItemTest.getChildNodes().item(0).getNodeName(), "text:h");
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(1) instanceof OdfTextList);
+			Assert.assertEquals(list, listItemTest.getChildNodes().item(1));
+			Assert.assertEquals(listItemTest.getChildNodes().item(1).getNodeName(), "text:list");
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(2) instanceof OdfTextParagraph);
+			Assert.assertEquals(paragraph, listItemTest.getChildNodes().item(2));
+			Assert.assertEquals(listItemTest.getChildNodes().item(2).getNodeName(), "text:p");
+
+			Assert.assertTrue(listItemTest.getChildNodes().item(3) instanceof TextSoftPageBreakElement);
+			Assert.assertEquals(softPageBreak, listItemTest.getChildNodes().item(3));
+			Assert.assertEquals(listItemTest.getChildNodes().item(3).getNodeName(), "text:soft-page-break");
+
+
+			contentDom.getDocument().save(ResourceUtilities.newTestOutputFile("CreatChildrenForEmbedded.odt"));
+
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+
+	}
+
+	@Test
+	public void testCreatChildrenForSpreadSheet() {
+		try {
+
+			OdfSpreadsheetDocument odfSpreadSheet = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfFileDom contentDom = odfSpreadSheet.getContentDom();
+
+			NodeList lst = contentDom.getElementsByTagNameNS(
+					OfficeSpreadsheetElement.ELEMENT_NAME.getUri(),
+					OfficeSpreadsheetElement.ELEMENT_NAME.getLocalName());
+			OfficeSpreadsheetElement sheet = (OfficeSpreadsheetElement) lst.item(lst.getLength() - 1);
+			TableTableElement table = sheet.newTableTableElement();
+			//table.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.TABLE), "name" ), "newtable" );
+			//table.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.TABLE), "style-name" ), "ta1" );
+			table.setTableNameAttribute("newtable");
+			table.setTableStyleNameAttribute("ta1");
+			TableTableColumnElement column = table.newTableTableColumnElement();
+			//column.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.TABLE), "style-name" ), "co1" );
+			//column.setOdfAttribute( OdfName.newName( OdfNamespace.newName(OdfDocumentNamespace.TABLE), "default-cell-style-name" ), "Default" );
+			column.setTableStyleNameAttribute("co1");
+			column.setTableDefaultCellStyleNameAttribute("Default");
+			XPath xpath = contentDom.getXPath();
+			TableTableElement spreadsheetTest = (TableTableElement) xpath.evaluate("//table:table[last()]", contentDom, XPathConstants.NODE);
+			Assert.assertNotNull(spreadsheetTest.getChildNodes());
+
+			Assert.assertTrue(spreadsheetTest.getChildNodes().item(0) instanceof TableTableColumnElement);
+			Assert.assertEquals(column, spreadsheetTest.getChildNodes().item(0));
+			Assert.assertEquals(spreadsheetTest.getChildNodes().item(0).getNodeName(), "table:table-column");
+
+			Assert.assertEquals(((TableTableColumnElement) spreadsheetTest.getChildNodes().item(0)).getAttribute("table:style-name"), "co1");
+			Assert.assertEquals(((TableTableColumnElement) spreadsheetTest.getChildNodes().item(0)).getAttribute("table:default-cell-style-name"), "Default");
+
+			contentDom.getDocument().save(ResourceUtilities.newTestOutputFile("CreatChildrenForSpreadsheet.ods"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForForm() {
+		try {
+			OdfTextDocument doc = OdfTextDocument.newTextDocument();
+			OfficeTextElement text = doc.getContentRoot();
+			FormFormElement form = text.newOfficeFormsElement().newFormFormElement();
+			form.setFormNameAttribute("NewFrom");
+			OdfFileDom contentDom = doc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			FormFormElement formTest = (FormFormElement) xpath.evaluate("//form:form[last()]", contentDom, XPathConstants.NODE);
+			Assert.assertEquals(formTest, form);
+			doc.getContentDom().getDocument().save(ResourceUtilities.newTestOutputFile("CreatChildrenForForm.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testCreatChildrenForAnimation() {
+		try {
+			OdfPresentationDocument odfdoc = OdfPresentationDocument.newPresentationDocument();
+			OfficePresentationElement presentation = odfdoc.getContentRoot();
+			Assert.assertNotNull(presentation);
+
+			DrawPageElement page = presentation.newDrawPageElement("NewPage");
+
+			AnimAnimateElement anim = page.newAnimAnimateElement("new");
+			OdfFileDom contentDom = odfdoc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			AnimAnimateElement animTest = (AnimAnimateElement) xpath.evaluate("//anim:animate[last()]", contentDom, XPathConstants.NODE);
+
+			Assert.assertTrue(animTest instanceof AnimAnimateElement);
+
+			Assert.assertEquals(anim, animTest);
+
+			odfdoc.save(ResourceUtilities.newTestOutputFile("CreatChildrenForAnimateTest.odp"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateChildrenElementsTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/CreateTableTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/CreateTableTest.java
new file mode 100644
index 0000000..6995c3d
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/CreateTableTest.java
@@ -0,0 +1,97 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class CreateTableTest {
+
+	public CreateTableTest() {
+	}
+
+	@Test
+	public void testCreateTable1() {
+		try {
+			OdfFileDom doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("empty.odt")).getContentDom();
+
+			// find the last paragraph
+			NodeList lst = doc.getElementsByTagNameNS(
+					TextPElement.ELEMENT_NAME.getUri(),
+					TextPElement.ELEMENT_NAME.getLocalName());
+			Assert.assertTrue(lst.getLength() > 0);
+			OdfTextParagraph p0 = (OdfTextParagraph) lst.item(lst.getLength() - 1);
+
+			TableTableElement table = doc.newOdfElement(TableTableElement.class);
+
+			TableTableRowElement tr = (TableTableRowElement) table.appendChild(
+					doc.newOdfElement(TableTableRowElement.class));
+			TableTableCellElement td1 = (TableTableCellElement) tr.appendChild(
+					doc.newOdfElement(TableTableCellElement.class));
+			OdfTextParagraph p1 = doc.newOdfElement(OdfTextParagraph.class);
+			p1.appendChild(doc.createTextNode("content 1"));
+			td1.appendChild(p1);
+
+			TableTableCellElement td2 = (TableTableCellElement) tr.appendChild(
+					doc.newOdfElement(TableTableCellElement.class));
+			OdfTextParagraph p2 = doc.newOdfElement(OdfTextParagraph.class);
+			p2.appendChild(doc.createTextNode("cell 2"));
+			td2.appendChild(p2);
+
+			TableTableCellElement td3 = (TableTableCellElement) tr.appendChild(
+					doc.newOdfElement(TableTableCellElement.class));
+			OdfTextParagraph p3 = doc.newOdfElement(OdfTextParagraph.class);
+			p3.appendChild(doc.createTextNode("table cell content 3"));
+			td3.appendChild(p3);
+
+			p0.getParentNode().insertBefore(table, p0);
+
+			table.setProperty(StyleTablePropertiesElement.Width, "12cm");
+			table.setProperty(StyleTablePropertiesElement.Align, "left");
+
+			td1.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, "2cm");
+
+			td2.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, "4cm");
+
+			td3.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, "6cm");
+
+			doc.getDocument().save(ResourceUtilities.newTestOutputFile("tabletest.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(CreateTableTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DefaultStylesTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DefaultStylesTest.java
new file mode 100644
index 0000000..ee56e0f
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DefaultStylesTest.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableRowPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ * Tests if default styles are parsed correctly into
+ * the defaultstyleCollection of the OdfDocument
+ */
+public class DefaultStylesTest {
+
+    private static String TEST_FILE = "test2.odt";
+
+    public DefaultStylesTest() {
+    }
+
+    @Test
+    public void testDefaultStyles() {
+        try {
+            OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+            doc.getDocumentStyles();
+            OdfDefaultStyle oDSG = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Graphic);
+            Assert.assertEquals(oDSG.getFamilyName(), OdfStyleFamily.Graphic.getName());
+            String prop1 = oDSG.getProperty(StyleGraphicPropertiesElement.ShadowOffsetX);
+            Assert.assertEquals(prop1, "0.1181in");
+
+            OdfDefaultStyle oDSP = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Paragraph);
+            Assert.assertEquals(oDSP.getFamilyName(), OdfStyleFamily.Paragraph.getName());
+            String prop2 = oDSP.getProperty(StyleTextPropertiesElement.FontName);
+            Assert.assertEquals(prop2, "Thorndale");
+            String prop3 = oDSP.getProperty(StyleTextPropertiesElement.LetterKerning);
+            Assert.assertEquals(prop3, "true");
+
+            OdfDefaultStyle oDST = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Table);
+            Assert.assertEquals(oDST.getFamilyName(), OdfStyleFamily.Table.getName());
+            String prop4 = oDST.getProperty(StyleTablePropertiesElement.BorderModel);
+            Assert.assertEquals(prop4, "collapsing");
+
+
+            OdfDefaultStyle oDSTR = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.TableRow);
+            Assert.assertEquals(oDSTR.getFamilyName(), OdfStyleFamily.TableRow.getName());
+            String prop5 = oDSTR.getProperty(StyleTableRowPropertiesElement.KeepTogether);
+            Assert.assertEquals(prop5, "auto");
+
+
+        } catch (Exception e) {
+            Logger.getLogger(DefaultStylesTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java
new file mode 100644
index 0000000..02712ba
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentCreationTest.java
@@ -0,0 +1,484 @@
+/************************************************************************
+ *
+ * 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 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;
+import org.odftoolkit.Junit.AlphabeticalOrderedRunner;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfPackageDocument;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+@RunWith(AlphabeticalOrderedRunner.class)
+public class DocumentCreationTest {
+
+	private static final Logger LOG = Logger.getLogger(DocumentCreationTest.class.getName());
+	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 
+	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";
+	private static final String TEST_FILE_SAVE_EMBEDDED = TEST_FILE_FOLDER + "testSaveEmbeddedDoc.odt";
+	private static final String TEST_FILE_SAVE_EMBEDDED_OUT = TEST_FILE_FOLDER + "TestSaveEmbeddedDoc_newName.odt";
+	private static final String TEST_FILE_SAVE_EMBEDDED_OUT2 = TEST_FILE_FOLDER + "TestSaveEmbeddedDoc2.odt";
+	private static final String TEST_FILE_SAVE_QUEER_PATH = TEST_FILE_FOLDER + "TestSaveQueerEmbeddedPathDoc1.odt";
+	private static final String CORRUPTED_MIMETYPE_DOC = TEST_FILE_FOLDER + "CorruptedMimetypeDoc.odt";
+	private static final String CORRUPTED_MIMETYPE_DOC_OUT = TEST_FILE_FOLDER + "TestSaveCorruptedMimetypeDoc.odt";
+	private static final String CORRUPTED_MIMETYPE_CHART = TEST_FILE_FOLDER + "CorruptedMimetypeChart.odc";
+	private static final String CORRUPTED_MIMETYPE_CHART_OUT = TEST_FILE_FOLDER + "TestSaveCorruptedMimetypeChart.odc";
+
+	@Test
+	public void _1_createEmptyDocs() {
+		try {
+			OdfTextDocument odtDoc1 = OdfTextDocument.newTextDocument();
+			OdfTextDocument odtDoc2 = OdfTextDocument.newTextDocument();
+			odtDoc2.getContentDom();
+			odtDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfTextDocument.odt"));
+
+			OdfGraphicsDocument odgDoc1 = OdfGraphicsDocument.newGraphicsDocument();
+			OdfGraphicsDocument odgDoc2 = OdfGraphicsDocument.newGraphicsDocument();
+			odgDoc2.getContentDom();
+			odgDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfGraphicsDocument.odg"));
+
+			OdfSpreadsheetDocument odsDoc1 = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfSpreadsheetDocument odsDoc2 = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			odsDoc2.getContentDom();
+			odsDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfSpreadsheetDocument.ods"));
+
+			OdfPresentationDocument odpDoc1 = OdfPresentationDocument.newPresentationDocument();
+			OdfPresentationDocument odpDoc2 = OdfPresentationDocument.newPresentationDocument();
+			odpDoc2.getContentDom();
+			odpDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfPresentationDocument.odp"));
+
+			OdfChartDocument odcDoc1 = OdfChartDocument.newChartDocument();
+			OdfChartDocument odcDoc2 = OdfChartDocument.newChartDocument();
+			odcDoc2.getContentDom();
+			odcDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfChartDocument.odc"));
+
+			/////////////////////////////////////////
+			// ODFDOM PACKAGE LAYER - WIKI EXAMPLE //
+			/////////////////////////////////////////
+
+			// loads the ODF document package from the path
+			OdfPackage pkg = OdfPackage.loadPackage(ResourceUtilities.getTestResourceAsStream("TestEmpty_OdfTextDocument.odt"));
+
+			// loads the images from the URLs and inserts the image in the package, adapting the manifest
+			pkg.insert(ResourceUtilities.getURI(TEST_PIC), "Pictures/" + TEST_PIC, null);
+			//Deactivated as test fail, when test machine is not online (painful for offline work)
+			//pkg.insert(new URI("http://odftoolkit.org/attachments/wiki_images/odftoolkit/Table_fruits_diagramm.jpg"), "someweiredname/tableandfruits.jpg", null);
+			pkg.save(ResourceUtilities.newTestOutputFile("odfdom-wiki-package.odt"));
+
+
+			/////////////////////////////////////
+			// ODFDOM XML LAYER - WIKI EXAMPLE //
+			/////////////////////////////////////
+
+			// loads the ODF document from the path
+			OdfDocument odfDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestEmpty_OdfTextDocument.odt"));
+
+			// get the ODF content as DOM tree representation
+			OdfFileDom odfContent = odfDoc.getContentDom();
+
+			//// W3C XPath initialization ''(JDK5 functionality)''  - XPath is the path within the XML file
+			//// (Find XPath examples here: http://www.w3.org/TR/xpath#path-abbrev)
+			XPath xpath2 = odfContent.getXPath();
+
+			// receiving the first paragraph "//text:p[1]" ''(JDK5 functionality)''
+			TextPElement para = (TextPElement) xpath2.evaluate("//text:p[1]", odfContent, XPathConstants.NODE);
+
+			// adding an image - expecting the user to know that
+			// an image consists always of a 'draw:image' and a 'draw:frame' parent
+
+			// FUTURE USAGE: para.createDrawFrame().createDrawImage("/myweb.org/images/myHoliday.png", "/Pictures/myHoliday.png");
+			//             Child access methods are still not part of the v0.6.x releases
+			// CURRENT USAGE:
+			OdfDrawFrame odfFrame = (OdfDrawFrame) OdfXMLFactory.newOdfElement(odfContent, DrawFrameElement.ELEMENT_NAME);
+			para.appendChild(odfFrame);
+			OdfDrawImage odfImage = (OdfDrawImage) OdfXMLFactory.newOdfElement(odfContent, OdfDrawImage.ELEMENT_NAME);
+			odfFrame.appendChild(odfImage);
+			odfImage.newImage(ResourceUtilities.getURI(TEST_PIC));
+
+			OdfDrawImage odfImage2 = (OdfDrawImage) OdfXMLFactory.newOdfElement(odfContent, OdfDrawImage.ELEMENT_NAME);
+			odfFrame.appendChild(odfImage2);
+			//Deactivated as test fail, when test machine is not online (painful for offline work)
+			//odfImage2.newImage(new URI("http://odftoolkit.org/attachments/wiki_images/odftoolkit/Table_fruits_diagramm.jpg"));
+			odfDoc.save(ResourceUtilities.newTestOutputFile("odfdom-wiki-dom.odt"));
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	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");
+			odtDoc1.insertDocument(OdfChartDocument.newChartDocument(), "Object4");
+			odtDoc1.insertDocument(OdfGraphicsDocument.newGraphicsDocument(), "Object5");
+			odtDoc1.insertDocument(OdfPresentationDocument.newPresentationDocument(), "Object6");
+
+			Map<String, OdfDocument> embeddedDocs = odtDoc1.loadSubDocuments();
+			LOG.log(Level.INFO, "Embedded Document count: {0}", embeddedDocs.size());
+			odtDoc1.save(ResourceUtilities.newTestOutputFile("TestCreate_EmbeddedDocuments.odt"));
+
+			Assert.assertTrue(embeddedDocs.size() == 6);
+
+			Map<String, OdfDocument> embeddedTextDocs = odtDoc1.loadSubDocuments(OdfDocument.OdfMediaType.TEXT);
+			LOG.log(Level.INFO, "Only Embedded Text Docs Size: {0}", embeddedTextDocs.size());
+			Assert.assertTrue(embeddedTextDocs.size() == 2);
+
+			Map<String, OdfDocument> embeddedChartDocs = odtDoc1.loadSubDocuments(OdfDocument.OdfMediaType.CHART);
+			LOG.log(Level.INFO, "Only Embedded Chart Docs Size: {0}", embeddedChartDocs.size());
+			Assert.assertTrue(embeddedChartDocs.size() == 1);
+
+			OdfDocument embeddedObject1 = odtDoc1.loadSubDocument("Object1/");
+			LOG.log(Level.INFO, "Embedded Object1 path: {0}", embeddedObject1.getDocumentPath());
+			LOG.log(Level.INFO, "Embedded Object1 media-type: {0}", embeddedObject1.getMediaTypeString());
+			Assert.assertEquals(embeddedObject1.getMediaTypeString(), OdfDocument.OdfMediaType.TEXT.getMediaTypeString());
+
+			OdfDocument embeddedObject3 = odtDoc1.loadSubDocument("Object3");
+			LOG.log(Level.INFO, "Embedded Object3 path: {0}", embeddedObject3.getDocumentPath());
+			LOG.log(Level.INFO, "Embedded Object3 media-type: {0}", embeddedObject3.getMediaTypeString());
+			Assert.assertEquals(embeddedObject3.getMediaTypeString(), OdfDocument.OdfMediaType.GRAPHICS.getMediaTypeString());
+
+			OdfDocument embeddedObject6 = odtDoc1.loadSubDocument("Object6/");
+			LOG.log(Level.INFO, "Embedded Object6 path: {0}", embeddedObject6.getDocumentPath());
+			LOG.log(Level.INFO, "Embedded Object6 media-type: {0}", embeddedObject6.getMediaTypeString());
+			Assert.assertEquals(embeddedObject6.getMediaTypeString(), OdfDocument.OdfMediaType.PRESENTATION.getMediaTypeString());
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void _3_accessEmbeddedDocs() {
+		try {
+			OdfDocument docWithEmbeddedObjects = OdfDocument.loadDocument(TEST_FILE_EMBEDDED);
+			Map<String, OdfDocument> embDocs = docWithEmbeddedObjects.loadSubDocuments();
+			String pathToEmbeddedObject = "";
+			for (String embDocPath : embDocs.keySet()) {
+				OdfPackageDocument embDoc = embDocs.get(embDocPath);
+				LOG.log(Level.INFO, "Embedded file of {0} internal package path: {1} mediaType: {2}", new Object[]{TEST_FILE_EMBEDDED, embDoc.getDocumentPath(), embDoc.getMediaTypeString()});
+				pathToEmbeddedObject = embDoc.getDocumentPath();
+			}
+
+			OdfDocument embDoc = docWithEmbeddedObjects.loadSubDocument(pathToEmbeddedObject);
+			OdfContentDom contentDom = embDoc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			// Make sure the embedded document is being loaded
+
+
+			// Add text element
+			TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);
+			LOG.log(Level.INFO, "First para: {0}", para.getTextContent());
+			OdfTextSpan spanElem = new OdfTextSpan(contentDom);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			para.appendChild(spanElem);
+
+			// Add frame and image element
+			TextPElement paraLast = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom, XPathConstants.NODE);
+			addImageToDocument(contentDom, paraLast);
+
+			// Access/Update automatic styles
+			OdfOfficeAutomaticStyles autoStyles = embDoc.getContentDom().getAutomaticStyles();
+			OdfStyle autoStyle = autoStyles.getStyle("P1", OdfStyleFamily.Paragraph);
+			Assert.assertEquals(autoStyle.getStyleNameAttribute(), "P1");
+			Assert.assertEquals(autoStyle.getFamilyName(), "paragraph");
+
+			// Access/Update styles.xml
+			OdfStyle documentStyle = embDoc.getDocumentStyles().getStyle("myStyle", OdfStyleFamily.Paragraph);
+			Assert.assertEquals(documentStyle.getStyleNameAttribute(), "myStyle");
+			Assert.assertEquals(documentStyle.getFamilyName(), "paragraph");
+
+			documentStyle.setProperty(StyleTextPropertiesElement.FontWeight, "bold");
+			documentStyle.setProperty(StyleParagraphPropertiesElement.BackgroundColor, "#14EA5D");
+
+			// SAVE / LOAD
+			docWithEmbeddedObjects.save(TEST_FILE_ACCESS_EMBEDDED);
+
+			OdfDocument doc2 = OdfDocument.loadDocument(TEST_FILE_ACCESS_EMBEDDED);
+			OdfDocument embDoc2 = doc2.loadSubDocument("Object 1/");
+			embDoc2.getStylesDom();
+			OdfStyle documentStyle2 = embDoc2.getDocumentStyles().getStyle("myStyle", OdfStyleFamily.Paragraph);
+			String prop2 = documentStyle2.getProperty(StyleTextPropertiesElement.FontWeight);
+			Assert.assertEquals(prop2, "bold");
+
+			TextSpanElement spanTest = (TextSpanElement) xpath.evaluate("//text:p[1]/text:span[1]", contentDom, XPathConstants.NODE);
+			Assert.assertEquals(spanTest.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() + "'");
+		}
+	}
+
+	@Test
+	public void _4_accessEmbeddedWithinEmbeddedDocs() {
+
+		try {
+			OdfDocument rootDocument = OdfDocument.loadDocument(TEST_FILE_EMBEDDED);
+			// Test DOM Access
+			Assert.assertNotNull(rootDocument.getDocumentStyles());
+			Assert.assertNotNull(rootDocument.getContentDom().getAutomaticStyles());
+			Assert.assertNotNull(rootDocument.getStylesDom());
+			Assert.assertNotNull(rootDocument.getContentDom());
+
+			Map<String, OdfDocument> embDocs = rootDocument.loadSubDocuments();
+			int embDocsNumber = embDocs.size();
+			// the document "Object 1/
+			OdfDocument embDoc = embDocs.get("Object 1/");
+			String pathOfSecondInnerDoc = "Object in Object1/";
+			embDoc.insertDocument(OdfTextDocument.newTextDocument(), pathOfSecondInnerDoc);
+			OdfFileEntry fileEntry = embDoc.getPackage().getFileEntry(embDoc.getDocumentPath() + pathOfSecondInnerDoc);
+			Assert.assertNotNull(fileEntry);
+
+			// get "Object 1/content.xml"
+			OdfContentDom contentDom = embDoc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			TextPElement lastPara = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom, XPathConstants.NODE);
+			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);
+			OdfTextSpan spanElem = new OdfTextSpan(contentDom);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			para.appendChild(spanElem);
+
+			// embDoc.save(ResourceUtilities.newTestOutputFile("222debug.odt"));
+			rootDocument.save(TEST_FILE_EMBEDDED_EMBEDDED);
+
+			OdfDocument docWithdoubleEmbeddedDoc = OdfDocument.loadDocument(TEST_FILE_EMBEDDED_EMBEDDED);
+			OdfDocument doubleEmbeddedDoc =docWithdoubleEmbeddedDoc.loadSubDocument("Object 1/Object in Object1");
+
+			OdfContentDom dEDcontentDom = doubleEmbeddedDoc.getContentDom();
+			TextSpanElement spanTest = (TextSpanElement) xpath.evaluate("//text:span[last()]", dEDcontentDom, XPathConstants.NODE);
+			Assert.assertEquals(spanTest.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() + "'");
+		}
+	}
+
+	@Test
+	public void _5_testCacheDocuments() {
+		OdfDocument docWithEmbeddedObjects;
+		try {
+			docWithEmbeddedObjects = OdfDocument.loadDocument(TEST_FILE_EMBEDDED);
+			Map<String, OdfDocument> embDocs = docWithEmbeddedObjects.loadSubDocuments();
+			for(String embDocPath : embDocs.keySet()){
+				OdfDocument doc1 = embDocs.get(embDocPath);
+				doc1.getDocumentPath();
+				OdfContentDom contentDom1 = doc1.getContentDom();
+				OdfDocument doc2 = doc1.loadSubDocument(".");
+				OdfContentDom contentDom2 = doc2.getContentDom();
+				Assert.assertEquals(doc2, doc1);
+				Assert.assertEquals(contentDom1, contentDom2);
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void _6_testSaveEmbeddedDocuments() {
+		OdfDocument docWithEmbeddedObjects;
+		try {
+			docWithEmbeddedObjects = OdfDocument.loadDocument(TEST_FILE_SAVE_EMBEDDED);
+			Map<String, OdfDocument> embDocs = docWithEmbeddedObjects.loadSubDocuments(OdfDocument.OdfMediaType.GRAPHICS);
+			// Graphics Doc
+			for(String eDocPath : embDocs.keySet()){
+				OdfDocument doc1 = embDocs.get(eDocPath);
+				Assert.assertNotNull(doc1);
+				OdfContentDom contentDom = doc1.getContentDom();
+				XPath xpath = contentDom.getXPath();
+				TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);
+				OdfTextSpan spanElem = new OdfTextSpan(contentDom);
+				spanElem.setTextContent(TEST_SPAN_TEXT);
+				para.appendChild(spanElem);
+				//save the embed document to a stand alone document
+				doc1.save(TEST_FILE_SAVE_EMBEDDED_OUT);
+				// Load test
+				OdfDocument loadedDoc = OdfDocument.loadDocument(TEST_FILE_SAVE_EMBEDDED_OUT);
+				OdfContentDom contentDom2 = loadedDoc.getContentDom();
+				OdfTextSpan span = (OdfTextSpan) xpath.evaluate("//text:span[last()]", contentDom2, XPathConstants.NODE);
+				Assert.assertEquals(span.getTextContent(), TEST_SPAN_TEXT);
+				Map<String, OdfDocument> embDocs3 = docWithEmbeddedObjects.loadSubDocuments(OdfDocument.OdfMediaType.TEXT);
+				for(String eDocPath3 : embDocs3.keySet()){
+					// Writer Doc
+					OdfDocument doc3 = embDocs3.get(eDocPath3);
+					Assert.assertNotNull(doc3);
+					OdfContentDom contentDom3 = doc3.getContentDom();
+					TextPElement para2 = (TextPElement) xpath.evaluate("//text:p[1]", contentDom3, XPathConstants.NODE);
+					addImageToDocument(contentDom3, para2);
+					TextPElement para3 = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom3, XPathConstants.NODE);
+					addFrameForEmbeddedDoc(contentDom3, para3, "NewEmbedded");
+					doc3.insertDocument(OdfTextDocument.newTextDocument(), "/NewEmbedded/");
+					OdfDocument doc4 = doc3.loadSubDocument("NewEmbedded");
+					Assert.assertNotNull(doc4);
+					OdfContentDom contentDom4 = doc4.getContentDom();
+					para = (TextPElement) xpath.evaluate("//text:p[1]",	contentDom4, XPathConstants.NODE);
+					spanElem = new OdfTextSpan(contentDom4);
+					spanElem.setTextContent(TEST_SPAN_TEXT);
+					para.appendChild(spanElem);
+					doc3.save(TEST_FILE_SAVE_EMBEDDED_OUT2);
+
+					OdfDocument testLoad = OdfDocument.loadDocument(TEST_FILE_SAVE_EMBEDDED_OUT2);
+					NodeList linkNodes = (NodeList) xpath.evaluate("//*[@xlink:href]", testLoad.getContentDom(), XPathConstants.NODE);
+					for (int i = 0; i < linkNodes.getLength(); i++) {
+						OdfElement object = (OdfElement) linkNodes.item(i);
+						String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+						Assert.assertTrue(refObjPath.equals("Pictures/"	+ TEST_PIC)	|| refObjPath.equals("./NewEmbedded"));
+					}
+					Assert.assertNotNull(testLoad.getPackage().getFileEntry("Pictures/" + TEST_PIC));
+					OdfDocument embedDocOftestLoad = testLoad.loadSubDocument("NewEmbedded/");
+					contentDom4 = embedDocOftestLoad.getContentDom();
+					OdfTextSpan span4 = (OdfTextSpan) xpath.evaluate("//text:span[last()]", contentDom4, XPathConstants.NODE);
+					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() + "'");
+		}
+	}
+
+	@Test
+	/**
+	 * OdfDocument docA and docB are ODF subdocuments.
+	 * docA containing docB, like
+	 * OdfPackage/dummy/docA/docB
+	 */
+	public void _7_testDocumentWithQueerPath() {
+		try {
+
+			OdfDocument containerDoc = OdfTextDocument.newTextDocument();
+			String pathToDocA = "dummy/docA/";
+			String pathToDocB = "docB/";
+			containerDoc.insertDocument(OdfTextDocument.newTextDocument(), pathToDocA);
+			OdfDocument docA = containerDoc.loadSubDocument(pathToDocA);
+			Assert.assertNotNull(docA);
+			docA.insertDocument(OdfTextDocument.newTextDocument(), pathToDocB);
+			OdfDocument docB = containerDoc.loadSubDocument(pathToDocA + pathToDocB);
+			Assert.assertNotNull(docB);
+			// only the document docB located at dummy/docA/docB will be saved
+			docB.save(TEST_FILE_SAVE_QUEER_PATH);
+
+		} catch (Exception ex) {
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test if saving OdfDocuments always results in a valid ODF file. This means
+	 * that the mimetype is written clearly at the first position in the zipped
+	 * ODF package.
+	 */
+	@Test
+	public void _8_testWritingCorrectMimetype() {
+		try {
+			OdfDocument docWithCorruptedMimetype = OdfDocument.loadDocument(CORRUPTED_MIMETYPE_DOC);
+			docWithCorruptedMimetype.save(CORRUPTED_MIMETYPE_DOC_OUT);
+			OdfDocument chartWithCorruptedMimetype = OdfDocument.loadDocument(CORRUPTED_MIMETYPE_CHART);
+			chartWithCorruptedMimetype.save(CORRUPTED_MIMETYPE_CHART_OUT);
+		} catch (Exception ex) {
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	private void addImageToDocument(OdfContentDom dom, TextPElement para) throws Exception {
+		OdfDrawFrame drawFrame = new OdfDrawFrame(dom);
+		drawFrame.setDrawNameAttribute("graphics1");
+		drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+		drawFrame.setSvgWidthAttribute("4.233cm");
+		drawFrame.setSvgHeightAttribute("4.233cm");
+		drawFrame.setDrawZIndexAttribute(0);
+		para.appendChild(drawFrame);
+
+		OdfDrawImage image = new OdfDrawImage(dom);
+		drawFrame.appendChild(image);
+		image.newImage(ResourceUtilities.getURI(TEST_PIC));
+	}
+
+	private void addFrameForEmbeddedDoc(OdfContentDom dom, TextPElement para, String path) throws Exception {
+		OdfDrawFrame drawFrame = new OdfDrawFrame(dom);
+		drawFrame.setDrawNameAttribute(path);
+		drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+		drawFrame.setSvgXAttribute("0.834cm");
+		drawFrame.setSvgYAttribute("2.919cm");
+		drawFrame.setSvgWidthAttribute("13.257cm");
+		drawFrame.setSvgHeightAttribute("11.375cm");
+		drawFrame.setDrawZIndexAttribute(0);
+
+		DrawObjectElement object = new DrawObjectElement(dom);
+		object.setXlinkHrefAttribute("./" + path);
+		object.setXlinkActuateAttribute("onLoad");
+		object.setXlinkShowAttribute("embed");
+		object.setXlinkTypeAttribute("simple");
+		drawFrame.appendChild(object);
+		para.appendChild(drawFrame);
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentTest.java
new file mode 100644
index 0000000..a0d2564
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/DocumentTest.java
@@ -0,0 +1,513 @@
+/************************************************************************
+ *
+ * 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 java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfSchemaConstraint;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfPackageConstraint;
+import org.odftoolkit.odfdom.pkg.OdfValidationException;
+import org.odftoolkit.odfdom.pkg.ValidationConstraint;
+import org.odftoolkit.odfdom.utils.ErrorHandlerStub;
+import org.odftoolkit.odfdom.utils.NodeAction;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class DocumentTest {
+
+	private static final Logger LOG = Logger.getLogger(DocumentTest.class.getName());
+	private static final String TEST_FILE = "test2.odt";
+	private static final String TEST_FILE_WITHOUT_OPT = "no_size_opt.odt";
+	private static final String ODF_FORMULAR_TEST_FILE = "SimpleFormula.odf";
+	private static final String IMAGE_TEST_FILE = "testA.jpg";
+	private static final String GENERATED_INVALID_SPREADSHEET = "invalid.ods";
+	private static final String ZERO_BYTE_SPREADSHEET = "empty_file.ods";
+	private static final long PRESENTATION1_DOC_COUNT = 11;
+
+	public DocumentTest() {
+	}
+
+	@Test
+	public void loadDocument() {
+		try {
+			System.setProperty("org.odftoolkit.odfdom.tmpfile.disable", "true");
+			// LOAD INVALID GENERATED SPREADSHEET DOCUMENT
+			LOG.info("Loading an supported ODF Spreadsheet document as an ODF Document!");
+			try {
+				// Should work!
+				OdfDocument ods = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(GENERATED_INVALID_SPREADSHEET));
+				Assert.assertNotNull(ods);
+			} catch (Exception e) {
+				LOG.log(Level.SEVERE, e.getMessage(), e);
+				Assert.fail();
+			}
+
+
+			// LOAD EMPTY DOCUMENT
+			LOG.info("Loading an empty document as an ODF Document!");
+			try {
+				// Should throw error!
+				OdfDocument ods = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(ZERO_BYTE_SPREADSHEET));
+				Assert.fail();
+			} catch (Exception e) {
+				if (!e.getMessage().contains("shall be a ZIP file")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			}
+
+			// LOAD FORMULA DOCUMENT
+			LOG.info("Loading an unsupported ODF Formula document as an ODF Document!");
+			try {
+				// Exception is expected!
+				OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(ODF_FORMULAR_TEST_FILE));
+				Assert.fail();
+			} catch (IllegalArgumentException e) {
+				if (!e.getMessage().contains("is not yet supported!")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			}
+
+			// LOAD DOCUMENT IMAGE
+			LOG.info("Loading an unsupported image file as an ODF Document!");
+			try {
+				// Exception is expected!
+				OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(IMAGE_TEST_FILE));
+				Assert.fail();
+			} catch (IllegalArgumentException e) {
+				if (!e.getMessage().contains("shall be a ZIP file")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			} catch (OdfValidationException e) {
+				if (!e.getMessage().contains("shall be a ZIP file")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testParser() {
+		try {
+			OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetContentRoot() {
+		try {
+			OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_WITHOUT_OPT));
+			Assert.assertNotNull(odt.getContentRoot());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	@Ignore
+	public void testDumpDom() {
+		try {
+			Assert.assertTrue(testXSLT("content") & testXSLT("styles"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private static boolean testXSLT(String odfFileNamePrefix) throws Exception {
+		OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+		Transformer trans = TransformerFactory.newInstance().newTransformer();
+		trans.setOutputProperty("indent", "yes");
+		// trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+
+		LOG.log(Level.INFO, "---------- {0}.xml transformed and compared ---------", odfFileNamePrefix);
+		// The XML file (e.g. content.xml) is transformed by XSLT into the similar/identical XML file
+		ByteArrayOutputStream xmlBytes = new ByteArrayOutputStream();
+		OdfFileDom fileDom = null;
+		if (odfFileNamePrefix.equals("content")) {
+			fileDom = odfdoc.getContentDom();
+		} else {
+			fileDom = odfdoc.getStylesDom();
+		}
+		// transforming the XML using identical transformation
+		trans.transform(new DOMSource(fileDom), new StreamResult(xmlBytes));
+		String xmlString = xmlBytes.toString("UTF-8");
+		// Saving test file to disc
+		saveString(xmlString, ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-test.xml");
+
+		// The template XML was once transformed and saved to the resource folder to gurantee the same indentation
+		String xmlStringOriginal = inputStreamToString(ResourceUtilities.getTestResourceAsStream("test2-" + odfFileNamePrefix + ".xml"));
+		// Saving original file to disc
+		saveString(xmlStringOriginal, ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-original.xml");
+
+
+		// Loading original file back to string representation
+		String testString = inputStreamToString(new FileInputStream(ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-test.xml"));
+		// Loading test file back to string representation
+		String originalString = inputStreamToString(new FileInputStream(ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-original.xml"));
+
+		boolean xmlEqual = originalString.equals(testString);
+		if (!xmlEqual) {
+			String testFilePath = ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-final-test.xml";
+			String originalFilePath = ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-final-original.xml";
+			saveString(testString, testFilePath);
+			saveString(originalString, originalFilePath);
+			LOG.log(Level.SEVERE, "Please compare the XML of two file:\n{0}\n and \n{1}", new Object[]{testFilePath, originalFilePath});
+		}
+		return xmlEqual;
+	}
+
+	@Test
+	public void testStylesDom() {
+		try {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+			OdfStylesDom stylesDom = odfdoc.getStylesDom();
+			Assert.assertNotNull(stylesDom);
+
+			// test styles.xml:styles
+			OdfOfficeStyles styles = odfdoc.getDocumentStyles();
+			Assert.assertNotNull(styles);
+
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.Graphic));
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.Paragraph));
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.Table));
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.TableRow));
+
+			OdfStyle style = styles.getStyle("Standard", OdfStyleFamily.Paragraph);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getStyleClassAttribute(), "text");
+
+			style = styles.getStyle("List", OdfStyleFamily.Paragraph);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getProperty(StyleTextPropertiesElement.FontNameComplex), "Tahoma1");
+			Assert.assertTrue(style.hasProperty(StyleTextPropertiesElement.FontNameComplex));
+			Assert.assertFalse(style.hasProperty(StyleTextPropertiesElement.FontNameAsian));
+
+			Assert.assertNull(styles.getStyle("foobar", OdfStyleFamily.Chart));
+
+			// test styles.xml:automatic-styles
+			OdfOfficeAutomaticStyles autostyles = stylesDom.getAutomaticStyles();
+			Assert.assertNotNull(autostyles);
+
+			OdfStylePageLayout pageLayout = autostyles.getPageLayout("pm1");
+			Assert.assertNotNull(pageLayout);
+			Assert.assertEquals(pageLayout.getProperty(StylePageLayoutPropertiesElement.PageWidth), "8.5in");
+			Assert.assertEquals(pageLayout.getProperty(StylePageLayoutPropertiesElement.PageHeight), "11in");
+
+			Assert.assertNull(autostyles.getStyle("foobar", OdfStyleFamily.Chart));
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testContentNode() {
+		try {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+			OdfContentDom contentDom = odfdoc.getContentDom();
+
+			// test content.xml:automatic-styles
+			OdfOfficeAutomaticStyles autoStyles = contentDom.getAutomaticStyles();
+			Assert.assertNotNull(autoStyles);
+
+			OdfStyle style = autoStyles.getStyle("P1", OdfStyleFamily.Paragraph);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getStyleNameAttribute(), "P1");
+			Assert.assertEquals(style.getStyleParentStyleNameAttribute(), "Text_20_body");
+			Assert.assertEquals(style.getStyleListStyleNameAttribute(), "L1");
+
+			style = autoStyles.getStyle("T1", OdfStyleFamily.Text);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getStyleNameAttribute(), "T1");
+
+			for (OdfStyle testStyle : autoStyles.getStylesForFamily(OdfStyleFamily.Paragraph)) {
+				testStyle(testStyle);
+			}
+
+			for (OdfStyle testStyle : autoStyles.getStylesForFamily(OdfStyleFamily.Text)) {
+				testStyle(testStyle);
+			}
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSaveDocument() {
+		try {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+			new NodeAction<String>() {
+
+				@Override
+				protected void apply(Node cur, String replace, int depth) {
+					if (cur.getNodeType() == Node.TEXT_NODE) {
+						cur.setNodeValue(cur.getNodeValue().replaceAll("\\w", replace));
+					}
+				}
+			};
+//            replaceText.performAction(e, "X");            
+			odfdoc.save(ResourceUtilities.newTestOutputFile("list-out.odt"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void testStyle(OdfStyle testStyle) throws Exception {
+		OdfFileDom fileDom = (OdfFileDom) testStyle.getOwnerDocument();
+		OdfOfficeAutomaticStyles autoStyles = null;
+		if (testStyle.getStyleParentStyleNameAttribute() != null) {
+			if (fileDom instanceof OdfContentDom) {
+				autoStyles = ((OdfContentDom) fileDom).getAutomaticStyles();
+			} else if (fileDom instanceof OdfStylesDom) {
+				autoStyles = ((OdfStylesDom) fileDom).getAutomaticStyles();
+			}
+			OdfStyle parentStyle = autoStyles.getStyle(testStyle.getStyleParentStyleNameAttribute(), testStyle.getFamily());
+			if (parentStyle == null) {
+				parentStyle = ((OdfDocument) fileDom.getDocument()).getDocumentStyles().getStyle(testStyle.getStyleParentStyleNameAttribute(), testStyle.getFamily());
+			}
+
+			Assert.assertNotNull(parentStyle);
+		}
+		if (testStyle.hasOdfAttribute(OdfName.newName(OdfDocumentNamespace.STYLE, "list-style-name"))) {
+			if (testStyle.getStyleListStyleNameAttribute() != null) {
+				OdfTextListStyle listStyle = autoStyles.getListStyle(testStyle.getStyleListStyleNameAttribute());
+				if (listStyle == null) {
+					listStyle = ((OdfDocument) fileDom.getDocument()).getDocumentStyles().getListStyle(testStyle.getStyleListStyleNameAttribute());
+				}
+
+				Assert.assertNotNull(listStyle);
+			}
+		}
+	}
+
+	@Test
+	public void testParsingOfInvalidAttribute() {
+		try {
+			// file with invalid value for enum text-underline-style
+			File testfile = ResourceUtilities.newTestOutputFile("InvalidUnderlineAttribute.odt");
+
+			// Test1: Loading shouldn't fail just because of one invalid attribute
+			OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument(testfile);
+			Assert.assertNotNull(odt);
+
+			// Test2: invalid attribute node should have been be removed
+//			OdfStyle styleNode = odt.getContentDom().getAutomaticStyles().getStyle("T1", OdfStyleFamily.Text);
+//			StyleTextPropertiesElement props = OdfElement.findFirstChildNode(StyleTextPropertiesElement.class, styleNode);
+//			Assert.assertFalse(props.hasAttribute("style:text-underline-style"));
+//			odt.save(ResourceUtilities.newTestOutputFile("saving-is-possible2.odt"));
+
+			// Test3: New ODF 1.2 attribute node should exist
+			OdfStyle styleNode2 = odt.getStylesDom().getOfficeStyles().getStyle("bug77", OdfStyleFamily.Graphic);
+			StyleGraphicPropertiesElement propsGrapicElement = OdfElement.findFirstChildNode(StyleGraphicPropertiesElement.class, styleNode2);
+			Assert.assertTrue("Could not find the attribute svg:opac-capicity. Workaround bug77 did not succeeded!", propsGrapicElement.hasAttribute("svg:stroke-opacity"));
+			odt.save(ResourceUtilities.newTestOutputFile("saving-is-possible.odt"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetLocale() {
+		String filename = "testDefaultLanguage.odp";
+		try {
+			OdfPresentationDocument doc = OdfPresentationDocument.newPresentationDocument();
+
+			Assert.assertNull(doc.getLocale(OdfDocument.UnicodeGroup.WESTERN));
+			Assert.assertNull(doc.getLocale(OdfDocument.UnicodeGroup.CJK));
+			Assert.assertNull(doc.getLocale(OdfDocument.UnicodeGroup.CTL));
+
+			Locale eng_can = new Locale(Locale.ENGLISH.getLanguage(),
+					Locale.CANADA.getCountry());
+			Locale chinese_china = new Locale(Locale.CHINESE.getLanguage(),
+					Locale.CHINA.getCountry());
+			Locale ar_eg = new Locale("ar", "eg");
+
+			doc.setLocale(eng_can);
+			doc.setLocale(chinese_china);
+			doc.setLocale(ar_eg);
+
+			doc.save(ResourceUtilities.newTestOutputFile(filename));
+
+			OdfPresentationDocument newDoc = OdfPresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(filename));
+			Assert.assertEquals(eng_can, newDoc.getLocale(OdfDocument.UnicodeGroup.WESTERN));
+			Assert.assertEquals(chinese_china, newDoc.getLocale(OdfDocument.UnicodeGroup.CJK));
+			Assert.assertEquals(ar_eg, newDoc.getLocale(OdfDocument.UnicodeGroup.CTL));
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private static String inputStreamToString(InputStream in) throws IOException {
+		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
+		StringBuilder stringBuilder = new StringBuilder();
+		String line = null;
+
+		while ((line = bufferedReader.readLine()) != null) {
+			stringBuilder.append(line).append("\n");
+		}
+		bufferedReader.close();
+		return stringBuilder.toString();
+	}
+
+	/** Saves the data string as UTF8 to the given filePath */
+	private static void saveString(String dataString, String filePath) throws UnsupportedEncodingException, IOException {
+		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF8"));
+		out.append(dataString);
+		out.close();
+	}
+
+	@Test
+	public void validationTest() {
+		// TESTDOC2: Expected ODF Warnings
+		Map expectedWarning2 = new HashMap();
+		expectedWarning2.put(OdfPackageConstraint.MIMETYPE_NOT_IN_PACKAGE, 1);
+		expectedWarning2.put(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, 10);
+
+		// TESTDOC2: Expected ODF Errors
+		Map expectedErrors2 = new HashMap();
+		expectedErrors2.put(OdfPackageConstraint.MANIFEST_DOES_NOT_LIST_FILE, 1);
+		expectedErrors2.put(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, 3);
+		expectedErrors2.put(OdfSchemaConstraint.DOCUMENT_WITHOUT_CONTENT_NOR_STYLES_XML, 1);
+		expectedErrors2.put(OdfSchemaConstraint.PACKAGE_SHALL_CONTAIN_MIMETYPE, 1);
+		ErrorHandlerStub handler2 = new ErrorHandlerStub(expectedWarning2, expectedErrors2, null);
+		handler2.setTestFilePath("testInvalidPkg2.odt");
+
+
+		// TESTDOC3: Expected ODF Warnings
+		Map expectedWarning3 = new HashMap();
+		expectedWarning3.put(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, 21);
+
+		// TESTDOC3: Expected ODF Errors
+		Map expectedErrors3 = new HashMap();
+		expectedErrors3.put(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, 2);
+		expectedErrors3.put(OdfSchemaConstraint.DOCUMENT_WITHOUT_CONTENT_NOR_STYLES_XML, 1);
+		expectedErrors3.put(OdfPackageConstraint.MANIFEST_WITH_EMPTY_PATH, 1);
+		ErrorHandlerStub handler3 = new ErrorHandlerStub(expectedWarning3, expectedErrors3, null);
+		handler3.setTestFilePath("performance/Presentation1_INVALID.odp");
+
+
+		// TESTDOC1: Expected ODF Warnings
+		Map expectedWarning1 = new HashMap();
+		expectedWarning1.put(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, 10);
+
+		// TESTDOC1: Expected ODF Errors
+		Map expectedErrors1 = new HashMap();
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_NOT_FIRST_IN_PACKAGE, 1);
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_IS_COMPRESSED, 1);
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_HAS_EXTRA_FIELD, 1);
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_DIFFERS_FROM_PACKAGE, 1);
+		expectedErrors1.put(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, 1);
+
+		// TESTDOC1: Expected ODF FatalErrors
+		Map<ValidationConstraint, Integer> expectedFatalErrors1 = new HashMap<ValidationConstraint, Integer>();
+		expectedFatalErrors1.put(OdfSchemaConstraint.DOCUMENT_WITHOUT_ODF_MIMETYPE, 1);
+
+		ErrorHandlerStub handler1 = new ErrorHandlerStub(expectedWarning1, expectedErrors1, expectedFatalErrors1);
+		handler1.setTestFilePath("testInvalidPkg1.odt");
+		try {
+			// First Test / Handler2
+			OdfPackage pkg2 = OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(handler2.getTestFilePath())), null, handler2);
+			OdfDocument doc2 = OdfDocument.loadDocument(pkg2);
+			Assert.assertNotNull(doc2);
+
+			// Second Test / Handler3
+			OdfPackage pkg3 = OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(handler3.getTestFilePath())), null, handler3);
+			OdfDocument doc3 = OdfDocument.loadDocument(pkg3);
+			Assert.assertNotNull(doc3);
+			Map subDocs = doc3.loadSubDocuments();
+			Assert.assertNotNull(subDocs);
+			Assert.assertEquals(PRESENTATION1_DOC_COUNT, subDocs.size());
+
+			// Third Test / Handler1
+			OdfPackage pkg1 = OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(handler1.getTestFilePath())), null, handler1);
+			OdfDocument.loadDocument(pkg1);
+			Assert.fail();
+		} catch (Exception e) {
+			if (!e.getMessage().contains("is invalid for the ODF XML Schema document")) {
+				Assert.fail();
+			}
+		}
+		handler1.validate();
+		handler2.validate();
+		handler3.validate();
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ElementTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ElementTest.java
new file mode 100644
index 0000000..3944638
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ElementTest.java
@@ -0,0 +1,90 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+
+public class ElementTest {
+
+    public ElementTest() {
+    }
+
+    @Test
+    public void testCloneNode() {
+        try {
+            OdfDocument doc = OdfTextDocument.newTextDocument();
+            OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+
+            OdfStyle p1 = styles.newStyle("P1", OdfStyleFamily.Paragraph);
+            p1.setProperty(StyleTextPropertiesElement.FontSize, "42pt");
+
+            OdfStyle clone = (OdfStyle) p1.cloneNode(true);
+            clone.setStyleNameAttribute("p1-clone");
+            styles.appendChild(clone);
+
+            OdfStyle p1clone = styles.getStyle("p1-clone", OdfStyleFamily.Paragraph);
+            Assert.assertNotNull(p1clone);
+            Assert.assertEquals(p1clone.getProperty(StyleTextPropertiesElement.FontSize), p1.getProperty(StyleTextPropertiesElement.FontSize));
+        } catch (Exception e) {
+            Logger.getLogger(ElementTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+        }
+    }
+
+    @Test
+    public void testEquals() {
+        try {
+            OdfDocument doc = OdfTextDocument.newTextDocument();
+            OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+
+            OdfStyle p1 = styles.newStyle("P1", OdfStyleFamily.Paragraph);
+            p1.setProperty(StyleTextPropertiesElement.FontSize, "42pt");
+            OdfStyle p2 = styles.newStyle("P2", OdfStyleFamily.Paragraph);
+            p2.setProperty(StyleTextPropertiesElement.FontSize, "42pt");
+            OdfStyle p3 = styles.newStyle("P3", OdfStyleFamily.Paragraph);
+            p3.setProperty(StyleTextPropertiesElement.FontSize, "13pt");
+
+            OdfTextListStyle l1 = styles.newListStyle("L1");
+            Assert.assertTrue(p1.equals(p1));
+            Assert.assertTrue(p1.equals(p2));
+            Assert.assertTrue(p2.equals(p1));
+            Assert.assertFalse(p1.equals(p3));
+            Assert.assertFalse(p3.equals(p1));
+            Assert.assertFalse(p3.equals(p1));
+            Assert.assertFalse(p1.equals(l1));
+            Assert.assertFalse(p1.equals(null));
+
+        } catch (Exception e) {
+            Logger.getLogger(ElementTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/FactoryManipulationTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/FactoryManipulationTest.java
new file mode 100644
index 0000000..59aa5e6
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/FactoryManipulationTest.java
@@ -0,0 +1,78 @@
+/************************************************************************
+ *
+ * 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 org.junit.Ignore;
+import org.junit.Test;
+
+public class FactoryManipulationTest {
+
+    public FactoryManipulationTest() {
+    }
+
+    @Test
+	@Ignore
+    public void testFactoryManipulation() {
+//        try {
+//            // MyOwnPrivateSpanClass_1 is derived from OdfSpan (doc layer)
+//            OdfXMLFactory.setOdfElementClass(TextSpanElement.ELEMENT_NAME, MyOwnPrivateSpanClass_1.class);
+//            OdfPackage pkg = OdfPackage.loadPackage(ResourceUtilities.getAbsolutePath("factorymanipulation.odt"));
+//            OdfFileDom contentDom = OdfDocument.loadDocument(pkg).getContentDom();
+//            NodeList lst = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "span");
+//            Assert.assertTrue(lst.getLength() == 1);
+//            Node node = lst.item(0);
+//            Assert.assertTrue(node instanceof MyOwnPrivateSpanClass_1);
+//
+//            // MyOwnPrivateSpanClass_2 is derived from TextSpanElement (dom layer)
+//            OdfXMLFactory.setOdfElementClass(TextSpanElement.ELEMENT_NAME, MyOwnPrivateSpanClass_2.class);
+//            contentDom = OdfDocument.loadDocument(pkg).getContentDom();
+//            lst = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "span");
+//            Assert.assertTrue(lst.getLength() == 1);
+//            node = lst.item(0);
+//            Assert.assertTrue(node instanceof MyOwnPrivateSpanClass_2);
+//
+//            // MyOwnPrivateSpanClass_3 is derived from OdfElement to replace TextSpanElement (dom layer)
+//            OdfXMLFactory.setOdfElementClass(TextSpanElement.ELEMENT_NAME, MyOwnPrivateSpanClass_3.class);
+//            contentDom = OdfDocument.loadDocument(pkg).getContentDom();
+//            lst = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "span");
+//            Assert.assertTrue(lst.getLength() == 1);
+//            node = lst.item(0);
+//            Assert.assertTrue(node instanceof MyOwnPrivateSpanClass_3);
+//
+//            // MyOwnPrivateOdfElement is derived from OdfElement to handle <text:userdefined>
+//            OdfXMLFactory.setOdfElementClass(MyOwnPrivateOdfElement.ELEMENT_NAME, MyOwnPrivateOdfElement.class);
+//            contentDom = OdfDocument.loadDocument(pkg).getContentDom();
+//            lst = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "userdefined");
+//            Assert.assertTrue(lst.getLength() == 1);
+//            node = lst.item(0);
+//            Assert.assertTrue(node instanceof MyOwnPrivateOdfElement);
+//
+//            //set TextSpanElement.ELEMENT_NAME back to org.odftoolkit.odfdom.doc.element.text.OdfSpan
+//            OdfXMLFactory.setOdfElementClass(TextSpanElement.ELEMENT_NAME, org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan.class);
+//
+//        } catch (Exception e) {
+//            Logger.getLogger(FactoryManipulationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+//            Assert.fail(e.getMessage());
+//        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/FrameTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/FrameTest.java
new file mode 100644
index 0000000..021aa73
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/FrameTest.java
@@ -0,0 +1,57 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class FrameTest {
+
+	public FrameTest() {
+	}
+
+	@Test
+	public void testFrame() {
+		try {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("frame.odt"));
+			NodeList lst = odfdoc.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "frame");
+			Assert.assertEquals(lst.getLength(), 1);
+			Node node = lst.item(0);
+			Assert.assertTrue(node instanceof OdfDrawFrame);
+			OdfDrawFrame fe = (OdfDrawFrame) lst.item(0);
+
+			Assert.assertEquals(fe.getProperty(StyleGraphicPropertiesElement.VerticalPos), "top");
+		} catch (Exception e) {
+			Logger.getLogger(FrameTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/GetTextTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/GetTextTest.java
new file mode 100644
index 0000000..76be19c
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/GetTextTest.java
@@ -0,0 +1,60 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ */
+
+package org.odftoolkit.odfdom.doc;
+
+import java.util.logging.Logger;
+import org.junit.Test;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfEditableTextExtractor;
+import org.junit.Assert;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+public class GetTextTest {
+
+	public static final Logger LOG = Logger.getLogger(GetTextTest.class.getName());
+
+	/**
+	 * This method will invoke OdfEditableTextExtractor to test text extraction function.
+	 */
+	@Test
+	public void testToString() {
+
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("text-extract.odt"));
+			OdfEditableTextExtractor extractor = OdfEditableTextExtractor.newOdfEditableTextExtractor(doc);
+			String output = extractor.getText();
+			LOG.info(output);
+			int count = 0;
+			int index = output.indexOf("ODFDOM");
+			while (index != -1) {
+				count++;
+				index = output.indexOf("ODFDOM", index + 1);
+			}
+			if (count != 30) {
+				// there are
+				// 23 ODFDOM in the /content.xml
+				// 2  ODFDOM in the /styles.xml
+				// 5 ODFDOM in the /Object 1/content.xml
+				throw new RuntimeException("Something wrong! count=" + count);
+			}
+		} catch (Exception e) {
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/GraphicsTemplateTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/GraphicsTemplateTest.java
new file mode 100644
index 0000000..7723126
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/GraphicsTemplateTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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 java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of graphics.
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class GraphicsTemplateTest {
+
+	private static final String TEST_GRAPHICS_TEMPLATE = "/graphicTestTemplate.otg";
+
+	@Test
+	public void testLoadingAGraphicsTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_GRAPHICS_TEMPLATE));
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingAGraphicsTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_GRAPHICS_TEMPLATE));
+		File destination = File.createTempFile("odfdom-test", ".otg");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewGraphicsTemplate() throws Exception {
+		OdfDocument document = OdfGraphicsDocument.newGraphicsTemplateDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("odfdom-test", ".otg");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfGraphicsDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfGraphicsDocument() throws Exception {
+		OdfGraphicsDocument document = OdfGraphicsDocument.newGraphicsDocument();
+		document.changeMode(OdfGraphicsDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = OdfGraphicsDocument.newGraphicsTemplateDocument();
+		document.changeMode(OdfGraphicsDocument.OdfMediaType.GRAPHICS);
+		Assert.assertEquals(OdfDocument.OdfMediaType.GRAPHICS.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java
new file mode 100644
index 0000000..291207f
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ImageTest.java
@@ -0,0 +1,224 @@
+/************************************************************************
+ *
+ * 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;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+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 org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.utils.NodeAction;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class ImageTest {
+
+	private URI mImageUri_ODFDOM = null;
+	private static final String mImagePath = "src/main/javadoc/doc-files/";
+	private static final String mImageName_ODFDOM = "ODFDOM-Layered-Model.png";
+	private static final String mPackageGraphicsPath = "Pictures/";
+
+	public ImageTest() {
+		try {
+			mImageUri_ODFDOM = new URI(mImagePath + mImageName_ODFDOM);
+
+		} catch (URISyntaxException ex) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null,
+					ex);
+			Assert.fail(ex.getMessage());
+		}
+	}
+
+	@Test
+	@SuppressWarnings("unchecked")
+	public void testAddImageByUri() {
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("image.odt"));
+			final OdfPackage pkg = doc.getPackage();
+			NodeAction addImages = new NodeAction() {
+
+				@Override
+				protected void apply(Node node, Object arg, int depth) {
+					if (node instanceof OdfDrawImage) {
+						OdfDrawImage img = (OdfDrawImage) node;
+						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());
+							} else if (!packagePath.equals(mPackageGraphicsPath + mImageName_ODFDOM)) {
+								Assert.fail("Instead of '" + mPackageGraphicsPath + mImageName_ODFDOM + "' the folloing image path was returned: '" + packagePath + "'");
+							}
+						} catch (Exception ex) {
+							Logger.getLogger(ImageTest.class.getName()).log(
+									Level.SEVERE, null, ex);
+							Assert.fail(ex.getMessage());
+						}
+					}
+				}
+			};
+			addImages.performAction(doc.getContentDom().getDocumentElement(),
+					null);			
+			doc.save(ResourceUtilities.getTestOutput("add-images-by-uri.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testRemoveImage() throws Exception {
+		OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("image.odt"));
+		final OdfPackage pkg = doc.getPackage();
+		NodeAction<?> removeImages = new NodeAction<Object>() {
+
+			@Override
+			protected void apply(Node node, Object arg, int depth) {
+				if (node instanceof OdfDrawImage) {
+					OdfDrawImage img = (OdfDrawImage) node;
+					String ref = img.getAttributeNS(
+							OdfDocumentNamespace.XLINK.getUri(), "href");
+					pkg.remove(ref);
+					img.getParentNode().removeChild(img);
+				}
+			}
+		};
+		removeImages.performAction(doc.getContentDom().getDocumentElement(),
+				null);
+		pkg.save(ResourceUtilities.getTestOutput("remove-images.odt"));
+
+	}
+
+	@Test
+	public void testImageInTextDocument() {
+		try {
+			OdfTextDocument doc = OdfTextDocument.newTextDocument();
+			String imagePath1 = doc.newImage(ResourceUtilities.getURI("testA.jpg"));
+			Assert.assertTrue(getImageCount(doc) == 1);
+			OdfDrawImage image = getImageByPath(doc, imagePath1).get(0);
+			Assert.assertTrue(image.getImageUri().toString().equals(imagePath1));
+			OdfDrawFrame frame1 = (OdfDrawFrame) image.getParentNode();
+			frame1.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+			frame1.setTextAnchorPageNumberAttribute(1);
+
+			//add paragraph
+			OfficeTextElement office = doc.getContentRoot();
+			OdfTextParagraph para1 = (OdfTextParagraph) office.newTextPElement();
+			para1.setTextContent("insert an image here");
+			String imagePath2 = doc.newImage(mImageUri_ODFDOM);
+
+			OdfTextParagraph para2 = (OdfTextParagraph) office.newTextPElement();
+			para2.setTextContent("another");
+			String imagePath3 = doc.newImage(mImageUri_ODFDOM);
+			OdfDrawImage image3 = getImageByPath(doc, imagePath3).get(1);
+			OdfDrawFrame frame3 = (OdfDrawFrame) image3.getParentNode();
+			frame3.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.CHAR.toString());
+
+			doc.save(ResourceUtilities.newTestOutputFile("addimages.odt"));
+
+			//load the file again
+			OdfTextDocument doc1 = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("addimages.odt"));
+
+			Assert.assertTrue(getImageCount(doc1) == 3);
+			Assert.assertTrue(getImageByPath(doc1, imagePath2).size() == 2);
+			deleteImageByPath(doc1, imagePath2);
+			Assert.assertTrue(getImageCount(doc1) == 1);
+			Assert.assertTrue(getImageByPath(doc1, imagePath3).size() == 0);
+			Assert.assertNull(doc1.getPackage().getBytes(imagePath3));
+			doc1.save(ResourceUtilities.newTestOutputFile("removeimages.odt"));
+
+		} catch (Exception ex) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+
+	}
+
+        @Test
+	public void testSVGInTextDocument() {
+		try {
+			OdfTextDocument doc = OdfTextDocument.newTextDocument();
+			String imagePath1 = doc.newImage(ResourceUtilities.getURI("simple.svg"));
+			Assert.assertTrue(getImageCount(doc) == 1);
+			OdfDrawImage image = getImageByPath(doc, imagePath1).get(0);
+			Assert.assertTrue(image.getImageUri().toString().equals(imagePath1));
+			OdfDrawFrame frame1 = (OdfDrawFrame) image.getParentNode();
+			frame1.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+			frame1.setTextAnchorPageNumberAttribute(1);
+
+			doc.save(ResourceUtilities.newTestOutputFile("svg-image.odt"));
+
+			//load the file again
+			OdfTextDocument doc1 = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("svg-image.odt"));
+
+			Assert.assertTrue(getImageCount(doc1) == 1);
+
+		} catch (Exception ex) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+
+	}
+
+	@Test
+	public void testRemoveAllImage() {
+		try {
+			OdfTextDocument doc = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("addimages.odt"));
+
+			Set<String> pathSet = getImagePathSet(doc);
+			for (String pathIter : pathSet) {
+				List<OdfDrawImage> imageList = getImageByPath(doc, pathIter);
+				for (int i = 0; i < 1; i++) {
+					deleteImage(doc, imageList.get(i));
+				}
+			}
+			Assert.assertTrue(getImageCount(doc) == 1);
+			pathSet = getImagePathSet(doc);
+			for (String pathIter : pathSet) {
+				deleteImageByPath(doc, pathIter);
+			}
+			Assert.assertTrue(getImageCount(doc) == 0);
+			doc.save(ResourceUtilities.newTestOutputFile("removeAllImages.odt"));
+
+		} catch (Exception ex) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ListTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ListTest.java
new file mode 100644
index 0000000..246b21a
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/ListTest.java
@@ -0,0 +1,69 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextList;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ListTest {
+
+    public ListTest() {
+    }
+
+    @Test
+    public void testList() {
+        try {            
+            OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("list.odt"));
+            OdfFileDom odfContent = odfdoc.getContentDom();
+            NodeList lst = odfContent.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "list");
+            for (int i = 0; i < lst.getLength(); i++) {
+                Node node = lst.item(i);
+                Assert.assertTrue(node instanceof OdfTextList);
+                OdfTextList le = (OdfTextList) lst.item(i);
+
+                OdfTextListStyle ls = le.getListStyle();
+                Assert.assertNotNull(ls);
+                OdfElement lvl = ls.getLevel(1);
+                Assert.assertNotNull(lvl);
+
+                int level = le.getListLevel();
+                OdfElement lvl1 = ls.getLevel(level);
+                OdfElement lvl2 = le.getListLevelStyle();
+                Assert.assertEquals(lvl1, lvl2);
+            }
+        } catch (Exception e) {
+        	Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/LoadSaveTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/LoadSaveTest.java
new file mode 100644
index 0000000..8f5d1b6
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/LoadSaveTest.java
@@ -0,0 +1,100 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentContentElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class LoadSaveTest {
+
+	private static final String SOURCE = "not-only-odf.odt";
+	private static final String TARGET = "loadsavetest.odt";
+	private static final String FOREIGN_ATTRIBUTE_NAME = "foreignAttribute";
+	private static final String FOREIGN_ATTRIBUTE_VALUE = "foreignAttributeValue";
+	private static final String FOREIGN_ELEMENT_TEXT = "foreignText";
+
+	public LoadSaveTest() {
+	}
+
+	@Test
+	public void testLoadSave() {
+		try {
+			OdfDocument odfDocument = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE));
+			Assert.assertTrue(odfDocument.getPackage().contains("content.xml"));
+			String baseURI1 = odfDocument.getBaseURI();
+			String baseURI2 = ResourceUtilities.getURI(SOURCE).toString();
+//			Assert.assertTrue(baseURI2.compareToIgnoreCase(baseURI1) == 0);
+			System.out.println("SOURCE URI1:"+baseURI1);
+			System.out.println("SOURCE URI2:"+baseURI2);
+			
+			OdfFileDom odfContent = odfDocument.getContentDom();
+			String odf12 = OfficeVersionAttribute.Value._1_2.toString();
+			OfficeDocumentContentElement content = (OfficeDocumentContentElement) odfContent.getDocumentElement();
+			String version = content.getOfficeVersionAttribute();
+			Assert.assertFalse(version.equals(odf12));
+
+			NodeList lst = odfContent.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+			Node node = lst.item(0);
+			String oldText = "Changed!!!";
+			node.setTextContent(oldText);
+
+			odfDocument.save(ResourceUtilities.newTestOutputFile(TARGET));
+			odfDocument = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TARGET));
+
+			odfContent = odfDocument.getContentDom();
+			// ToDo: Will be used for issue 60: Load & Save of previous ODF versions (ie. ODF 1.0, ODF 1.1)
+			//Assert.assertTrue(odfContent.getRootElement().getOfficeVersionAttribute().equals(odf12));
+			lst = odfContent.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+			node = lst.item(0);
+			String newText = node.getTextContent();
+			Assert.assertTrue(newText.equals(oldText));
+
+			node = lst.item(1);
+			//check foreign attribute without namespace
+			Element foreignElement = (Element) node.getChildNodes().item(0);
+			String foreignText = foreignElement.getTextContent();
+			Assert.assertTrue(foreignText.equals(FOREIGN_ELEMENT_TEXT));
+
+			//check foreign element without namespace
+			Attr foreignAttr = (Attr) node.getAttributes().getNamedItem(FOREIGN_ATTRIBUTE_NAME);
+			String foreignAttrValue = foreignAttr.getValue();
+			Assert.assertTrue(foreignAttrValue.equals(FOREIGN_ATTRIBUTE_VALUE));
+
+
+
+		} catch (Exception e) {
+			Logger.getLogger(LoadSaveTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateOdfElement.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateOdfElement.java
new file mode 100644
index 0000000..616efee
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateOdfElement.java
@@ -0,0 +1,53 @@
+/************************************************************************
+ *
+ * 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 org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+/**
+ * ODF DOM Element implementation for element "<text:userdefined>".
+ */
+public class MyOwnPrivateOdfElement extends OdfElement
+{
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 2777209641983266195L;
+	/**
+     * 
+     */
+    public static final OdfName ELEMENT_NAME = OdfName.newName( OdfDocumentNamespace.TEXT, "userdefined" );
+
+    public MyOwnPrivateOdfElement( OdfFileDom _aOwnerDoc )
+    {
+        super( _aOwnerDoc, ELEMENT_NAME );
+    }
+
+    @Override
+	public OdfName getOdfName()
+    {
+        return ELEMENT_NAME;
+    }
+};
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_1.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_1.java
new file mode 100644
index 0000000..87a27f4
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_1.java
@@ -0,0 +1,38 @@
+/************************************************************************
+ *
+ * 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 org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+
+public class MyOwnPrivateSpanClass_1 extends OdfTextSpan {
+
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 998212211280402094L;
+
+	/** Creates a new instance of this class */
+    public MyOwnPrivateSpanClass_1(OdfFileDom ownerDoc) {
+        super(ownerDoc);
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_2.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_2.java
new file mode 100644
index 0000000..c8fb2da
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_2.java
@@ -0,0 +1,39 @@
+/*
+ * 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 org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+
+
+public class MyOwnPrivateSpanClass_2 extends TextSpanElement {
+
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 3782225493052113393L;
+
+	/** Creates a new instance of this class */
+    public MyOwnPrivateSpanClass_2(OdfFileDom ownerDoc) {
+        super(ownerDoc);
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_3.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_3.java
new file mode 100644
index 0000000..18a7a80
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/MyOwnPrivateSpanClass_3.java
@@ -0,0 +1,47 @@
+/************************************************************************
+ *
+ * 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 org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+
+public class MyOwnPrivateSpanClass_3 extends OdfElement {
+
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = -4819629767539792181L;
+	public static final OdfName ELEMENT_NAME = OdfName.newName(OdfDocumentNamespace.TEXT, "span");
+
+    /** Creates a new instance of OdfParagraphElementImpl
+     */
+    public MyOwnPrivateSpanClass_3(OdfFileDom ownerDoc) {
+        super(ownerDoc, ELEMENT_NAME);
+    }
+
+    @Override
+    public OdfName getOdfName() {
+        return ELEMENT_NAME;
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/NamespaceTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/NamespaceTest.java
new file mode 100644
index 0000000..0b51bac
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/NamespaceTest.java
@@ -0,0 +1,96 @@
+/************************************************************************
+ *
+ * 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 java.io.File;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.xpath.XPath;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+public class NamespaceTest {
+
+    private static final String TARGET = "namespacetest.odt";
+
+    public NamespaceTest() {
+    }
+
+    @Test
+    public void testNewNamespace() {
+        try {
+            OdfTextDocument doc = OdfTextDocument.newTextDocument();
+
+            OdfFileDom contentDom = doc.getContentDom();
+            XPath xpath = contentDom.getXPath();
+            
+            // Postive test for XPath on ODF attributes
+            String resTest1 = xpath.evaluate("//text:p[@text:style-name='Standard']", contentDom);
+            Assert.assertTrue(resTest1 != null);
+
+            // Test XPath on none ODF attributes (added explicitly via DOM)
+            OdfTextParagraph p = doc.newParagraph();
+            p.setAttributeNS("http://myAttributeNamespace", "my:attr", "attrValue");
+            String resAttr1 = xpath.evaluate("//*[@my:attr = 'attrValue']", contentDom);
+            Assert.assertTrue(resAttr1 != null);
+
+            // Test XPath on none ODF element (added explicitly via DOM)
+            p.appendChild(contentDom.createElementNS("http://myElementNamespace", "my:element"));
+            String resElement1 = xpath.evaluate("//my:element", contentDom);
+            Assert.assertTrue(resElement1 != null);
+
+            // Save documnet
+            File targetFile = ResourceUtilities.newTestOutputFile(TARGET);
+            doc.save(targetFile);
+
+
+            
+            // Load document with ODF foreign attriute
+            OdfTextDocument docReloaded = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TARGET));
+            OdfFileDom contentDomReloaded = docReloaded.getContentDom();
+
+            // Postive test for XPath on ODF attributes
+            xpath = contentDomReloaded.getXPath();
+            String resTest2 = xpath.evaluate("//text:p[@text:style-name='Standard']", contentDomReloaded);
+            Assert.assertTrue(resTest2 != null);
+            
+            // Test XPath on none ODF attributes (added via load)
+            String resAttr2 = xpath.evaluate("//*[@my:attr = 'attrValue']", contentDomReloaded);
+            Assert.assertTrue(resAttr2 != null);
+
+            // Test XPath on none ODF element (added via load)
+            p.appendChild(contentDom.createElementNS("http://myElementNamespace", "my:element"));
+            String resElement2 = xpath.evaluate("//my:element", contentDomReloaded);
+            Assert.assertTrue(resElement2 != null);
+
+        } catch (Exception ex) {
+        	Logger.getLogger(NamespaceTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+            Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/PresentationTemplateTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/PresentationTemplateTest.java
new file mode 100644
index 0000000..e315fcf
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/PresentationTemplateTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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 java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of presentations.
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class PresentationTemplateTest {
+
+	private static final String TEST_PRESENTATION = "/presentationTestTemplate.otp";
+
+	@Test
+	public void testLoadingAPresentationTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_PRESENTATION));
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingAPresentationTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_PRESENTATION));
+		File destination = File.createTempFile("odfdom-test", ".otp");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewPresentationTemplate() throws Exception {
+		OdfDocument document = OdfPresentationDocument.newPresentationTemplateDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		File destination = File.createTempFile("odfdom-test", ".otp");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfPresentationDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfPresentationDocument() throws Exception {
+		OdfPresentationDocument document = OdfPresentationDocument.newPresentationDocument();
+		document.changeMode(OdfPresentationDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = OdfPresentationDocument.newPresentationTemplateDocument();
+		document.changeMode(OdfPresentationDocument.OdfMediaType.PRESENTATION);
+		Assert.assertEquals(OdfDocument.OdfMediaType.PRESENTATION.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/PresentationTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/PresentationTest.java
new file mode 100644
index 0000000..6d6185e
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/PresentationTest.java
@@ -0,0 +1,204 @@
+/*
+ * 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 java.util.Iterator;
+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.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.presentation.OdfSlide;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGradientElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawHatchElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMarkerElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author cl93746
+ */
+public class PresentationTest {
+
+	OdfDocument odfdoc;
+
+	public PresentationTest() {
+		try {
+			odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("presentation.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testPresentation() {
+		try {
+			OdfPresentationDocument odpdoc = (OdfPresentationDocument) odfdoc;
+
+			OdfSlide page = odpdoc.getSlideByName("slide-name-1");
+			Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-1"));
+			Assert.assertEquals(page, odpdoc.getSlideByIndex(0));
+
+			page = odpdoc.getSlideByName("slide-name-2");
+			Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-2"));
+			Assert.assertEquals(page, odpdoc.getSlideByIndex(1));
+
+			page = odpdoc.getSlideByName("slide-name-3");
+			Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-3"));
+			Assert.assertEquals(page, odpdoc.getSlideByIndex(2));
+
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testMasterStyles() {
+		try {
+			OdfOfficeMasterStyles officeMasterStyles = odfdoc.getOfficeMasterStyles();
+			Assert.assertNotNull(officeMasterStyles);
+
+			// check if iterator has all two master pages
+			testIterator(StyleMasterPageElement.class, officeMasterStyles.getMasterPages(), 2);
+
+			// test "master-name-1"
+			StyleMasterPageElement master = officeMasterStyles.getMasterPage("master-name-1");
+			Assert.assertNotNull(master);
+			Assert.assertEquals(master.getStyleNameAttribute(), "master-name-1");
+
+			// test "master-name-2"
+			master = officeMasterStyles.getMasterPage("master-name-2");
+			Assert.assertNotNull(master);
+			Assert.assertEquals(master.getStyleNameAttribute(), "master-name-2");
+
+			// test handout master
+			Assert.assertNotNull(officeMasterStyles.getHandoutMaster());
+
+			// test layerset
+			Assert.assertNotNull(officeMasterStyles.getLayerSet());
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testStyles() {
+		try {
+			OdfOfficeStyles officeStyles = odfdoc.getDocumentStyles();
+			Assert.assertNotNull(officeStyles);
+
+			Assert.assertNotNull(officeStyles.getGradient("Linear_20_blue_2f_white"));
+			testIterator(DrawGradientElement.class, officeStyles.getGradients().iterator(), 1);
+
+			Assert.assertNotNull(officeStyles.getMarker("Arrow"));
+			testIterator(DrawMarkerElement.class, officeStyles.getMarker().iterator(), 1);
+
+			Assert.assertNotNull(officeStyles.getHatch("Black_20_0_20_Degrees"));
+			testIterator(DrawHatchElement.class, officeStyles.getHatches().iterator(), 1);
+
+			Assert.assertNotNull(officeStyles.getFillImage("Aqua"));
+			testIterator(DrawFillImageElement.class, officeStyles.getFillImages().iterator(), 1);
+
+			// check for some styles
+			Assert.assertNotNull(officeStyles.getDefaultStyle(OdfStyleFamily.Graphic));
+			Assert.assertNotNull(officeStyles.getStyle("standard", OdfStyleFamily.Graphic));
+			Assert.assertNotNull(officeStyles.getStyle("master-name-1-outline1", OdfStyleFamily.Presentation));
+
+			Iterator<OdfStyle> style_iter = officeStyles.getStylesForFamily(OdfStyleFamily.Presentation).iterator();
+			Assert.assertNotNull(style_iter);
+			Assert.assertTrue(style_iter.hasNext());
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private <T extends OdfElement> void testIterator(Class<T> clazz, Iterator<T> iter, int elements) {
+		Assert.assertNotNull(iter);
+		while (elements > 0) {
+			Assert.assertTrue(iter.hasNext());
+			Assert.assertTrue(clazz.isInstance(iter.next()));
+			elements--;
+		}
+
+		Assert.assertFalse(iter.hasNext());
+	}
+
+	@Test
+	public void testPresentationClassAttribute() {
+		try {
+			OdfGraphicsDocument doc = OdfGraphicsDocument.newGraphicsDocument();
+			OdfFileDom dom = doc.getContentDom();
+			OdfDrawFrame f = new OdfDrawFrame(dom);
+
+			f.setPresentationClassAttribute(PresentationClassAttribute.Value.GRAPHIC.toString());
+			Logger.getLogger(DocumentCreationTest.class.getName()).info(f.getPresentationClassAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testStyleUsageCount() {
+		try {
+			OdfOfficeAutomaticStyles s = odfdoc.getStylesDom().getAutomaticStyles();
+			OdfStyle pr1 = s.getStyle("pr1", OdfStyleFamily.Presentation);
+			int styleUserCount = pr1.getStyleUserCount();
+			OdfStylesDom stylesDom = odfdoc.getStylesDom();
+			XPath xpath = stylesDom.getXPath();
+			NodeList elementsWithStyle = (NodeList) xpath.evaluate("//draw:frame[@presentation:style-name='pr1']",
+					stylesDom, XPathConstants.NODESET);
+			int elementsWithStyleCount = elementsWithStyle.getLength();
+			Assert.assertTrue(styleUserCount == elementsWithStyleCount);
+//			//#bug51,the bug will be induced by using set attribute method
+//			OdfDrawFrame frame = (OdfDrawFrame) elementsWithStyle.item(0);
+//			frame.setPresentationStyleNameAttribute("pr2");
+//			styleUserCount = pr1.getStyleUserCount();
+//			elementsWithStyle = (NodeList) xpath.evaluate("//draw:frame[@presentation:style-name='pr1']",
+//					odfdoc.getStylesDom(), XPathConstants.NODESET);
+//			elementsWithStyleCount = elementsWithStyle.getLength();
+//			Assert.assertTrue("Last part of bug51 still to be fixed..!!", styleUserCount == elementsWithStyleCount);
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/SlideTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/SlideTest.java
new file mode 100644
index 0000000..d338785
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/SlideTest.java
@@ -0,0 +1,574 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc;
+
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.presentation.OdfPresentationNotes;
+import org.odftoolkit.odfdom.doc.presentation.OdfSlide;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+/**
+ * Test for Presentation Slide API, including get/move/insert/delete slide in one presentation
+ * and the slides operation of two presentations.
+ */
+public class SlideTest {
+
+	private static final Logger LOG = Logger.getLogger(SlideTest.class.getName());
+	OdfPresentationDocument doc;
+	OdfPresentationDocument doc2;
+	final String TEST_PRESENTATION_FILE_MAIN = "Presentation1.odp";
+	final String TEST_PRESENTATION_FILE_ANOTHER = "Presentation2.odp";
+	final String TEST_PRESENTATION_FILE_OUT_PREFIX = "SlideResult";
+	final String TEST_PRESENTATION_DOCUMENT1 = "SlideTest1.odp";
+	final String TEST_PRESENTATION_DOCUMENT2 = "SlideTest2.odp";
+	final String TEST_PRESENTATION_DOCUMENT3 = "SlideTest3.odp";
+
+	/**
+	 * Initialize the test case.
+	 */
+	public SlideTest() {
+	}
+
+	/**
+	 * Test case for get presentation slide, including get the slide count, get
+	 * the slide at the specified position or with the specified name, and get
+	 * the collection of slide. 
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp
+	 * <b>Method</b> 1)By using OdfPresentationDocument.getSlideCount() to Get the
+	 * number of the slides in this presentation.
+	 * 2)According to the slide count, get a slide at the specific position of
+	 * the loaded presentation document using
+	 * OdfPresentationDocument.getSlideByIndex(int index), and the param "index"
+	 * should be limited with the slide count. Use OdfDrawPage.getSlideIndex()
+	 * method to verify the returned slide.
+	 * 3)OdfPresentationDocument.getSlideByName(String name)
+	 * 4)Using dfPresentationDocument.getSlides() to get the slide iterator
+	 * <b>Covered Element</b> &lt;office:presentation&gt;,&lt;draw:page&gt;
+	 * <b>Note</b> OdfPresentationDocument.getContentRoot override OdfDocument.getContentRoot method
+	 * will return OfficePresentationElement, rather than OdfOfficePresentation
+	 * because of the inheritance relationship broken up between dom and doc element
+	 * And because OdfOfficePresentation is useless, so I delete this class
+	 * <b>Code Coverage Result</b>
+	 * 1)can not catch Exception because it is only used to catch the exception thrown by getContentRoot()
+	 */
+	@Test
+	public void testGetSlide() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			int slideCount = doc.getSlideCount();
+			Assert.assertTrue(10 == slideCount);
+			OdfSlide page2 = doc.getSlideByIndex(2);
+			Assert.assertTrue(2 == page2.getSlideIndex());
+			OdfSlide slide3 = doc.getSlideByName("Slide 3");
+			Assert.assertNull(slide3);
+			slide3 = doc.getSlideByName("page3");
+			Assert.assertEquals(page2, slide3);
+			Iterator<OdfSlide> slideIter = doc.getSlides();
+			int i = 0;
+			while (slideIter.hasNext()) {
+				OdfSlide slide = slideIter.next();
+				Assert.assertTrue(i == slide.getSlideIndex());
+				String name = "page" + (i + 1);
+				Assert.assertTrue(name.equals(slide.getSlideName()));
+				i++;
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		OdfSlide slidesNoName = doc.getSlideByName(null);
+		Assert.assertNull(slidesNoName);
+		OdfSlide nullSlide = doc.getSlideByIndex(20);
+		Assert.assertNull(nullSlide);
+		nullSlide = doc.getSlideByIndex(-1);
+		Assert.assertNull(nullSlide);
+
+	}
+
+	/**
+	 * Test case for get/set slide name to make sure the name is unique in the whole presentation document.
+	 * If the loaded presentation document is not valid that contain the same slide name,
+	 * we should modified the duplicate slide name to make them unique.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp
+	 * Using the dom method to make slide index 4 and 8 have the same name, 
+	 * and delete the "draw:name" attribute of slide 7.
+	 * <b>Method</b> 
+	 * 1)By accessing any slide API to trigger the duplicate slide name check method.
+	 * After this operation, slide 8 will change the slide name.
+	 * 2)Trigger OdfDrawPage.getSlideName() to make the slide 7 has the unique slide name.
+	 * 3)Using OdfDrawPage.setSlideName() to give the slide 1 with the new name.
+	 */
+	@Test
+	public void testSlideName() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			OfficePresentationElement contentRoot = doc.getContentRoot();
+			NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+			DrawPageElement slideEle4 = (DrawPageElement) slideNodes.item(4);
+			Assert.assertEquals(slideEle4.getDrawNameAttribute(), "page5");
+			DrawPageElement slideEle8 = (DrawPageElement) slideNodes.item(8);
+			slideEle8.setDrawNameAttribute("page5");
+			OdfSlide slide7 = doc.getSlideByIndex(7);
+			DrawPageElement slideEle7 = (DrawPageElement) slideNodes.item(7);
+			slideEle7.removeAttributeNS(OdfDocumentNamespace.DRAW.getUri(), "name");
+
+			OdfSlide slide4 = doc.getSlideByIndex(4);
+			Assert.assertTrue(slide4.getSlideName().equals("page5"));
+			OdfSlide slide8 = doc.getSlideByIndex(8);
+			Assert.assertFalse(slide8.getSlideName().equals("page5"));
+
+			Assert.assertTrue(slide7.getSlideName().startsWith("page8"));
+			OdfPresentationNotes note7 = slide7.getNotesPage();
+			note7.addText("This is slide at index" + slide7.getSlideIndex() + " named " + slide7.getSlideName());
+
+			OdfSlide slide1 = doc.getSlideByIndex(1);
+			slide1.setSlideName("haha");
+			slide1.setSlideName("page1");
+
+		} catch (IllegalArgumentException ile) {
+			OdfSlide slide1 = doc.getSlideByIndex(1);
+			Assert.assertTrue("the given name page1 is duplicate with the previous slide", slide1.getSlideName().equals("haha"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "SlideName.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for delete presentation slide, including delete slide at the
+	 * specified position or with the specified name.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp
+	 * <b>Method</b> 1)By using OdfPresentationDocument.deleteSlideByIndex(int index)
+	 * to delete the slide at the specified position which is present by
+	 * param "index", then index of the slide which after the delete slide will change.
+	 * 2)Delete slide with the specified name by using
+	 * OdfPresentationDocument.deleteSlideByName(String name)
+	 * <b>PostCondition</b> Save the modified document at SlideResultDelete.odp
+	 * <b>Covered Element</b> 1) &lt;office:presentation&gt;,&lt;draw:page&gt;
+	 * 2)All the element that contains "xlink:href" attribute, such as &lt;draw:object&gt;, &lt;draw:image&gt;, etc.
+	 * 3)All the style name definition element,
+	 * include &lt;style:style&gt;, &lt;text:list-style&gt;, &lt;number:time-style&gt;, &lt;number:date-style&gt;,
+	 *         &lt;number:boolean-style&gt;, &lt;number:number-style&gt;, &lt;number:currency-style&gt;,
+	 *         &lt;number:percentage-style&gt;, &lt;number:text-style&gt;
+	 * 4)All the <code>OdfStylableElement</code> which have the style name reference,
+	 * such as &lt;draw:frame&gt;, &lt;text:p&gt; etc.
+	 * <b>Note</b> When the specific slide is delete, if it referred images, ole or styles are not used by other slide
+	 * they will all be removed from the package.
+	 */
+	@Test
+	public void testDeleteSlide() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			OdfSlide slide2 = doc.getSlideByIndex(2);
+			OdfSlide slide3 = doc.getSlideByIndex(3);
+			//this slide contains an embed document, remove this slide will also remove the embed document
+			int nEmbedDoc = doc.loadSubDocuments().size();
+			Assert.assertTrue(doc.deleteSlideByIndex(2));
+			//slide3 is no longer exist
+			Assert.assertTrue(-1 == slide2.getSlideIndex());
+			Assert.assertTrue(2 == slide3.getSlideIndex());
+			Assert.assertTrue(doc.loadSubDocuments().size() == (nEmbedDoc - 1));
+			Assert.assertTrue(doc.deleteSlideByName("page5"));
+			int count = doc.getSlideCount();
+			Assert.assertTrue(8 == count);
+			//slide at index 9 contains two images and one embed document, the embed document aslo have the object replacement image
+			//remove this slide will also remove these three images
+			String IMAGE_NAME_1 = "Pictures/10000000000002580000018FB151A5C8.jpg";
+			String IMAGE_NAME_2 = "Pictures/1000000000000C80000004009305DCA3.jpg";
+			String IMAGE_NAME_3 = "ObjectReplacements/Object 13";
+			int nImageCnt = OdfDrawImage.getImageCount(doc);
+			InputStream imageStream1 = doc.getPackage().getInputStream(IMAGE_NAME_1);
+			Assert.assertNotNull(imageStream1);
+			Assert.assertTrue(doc.deleteSlideByIndex(doc.getSlideCount() - 2));
+			Assert.assertTrue(OdfDrawImage.getImageCount(doc) == (nImageCnt - 3));
+			imageStream1 = doc.getPackage().getInputStream(IMAGE_NAME_1);
+			Assert.assertNull(imageStream1);
+			InputStream imageStream2 = doc.getPackage().getInputStream(IMAGE_NAME_2);
+			Assert.assertNull(imageStream2);
+			InputStream imageStream3 = doc.getPackage().getInputStream(IMAGE_NAME_3);
+			Assert.assertNull(imageStream3);
+			//slide at index 2 at doc2 contains one image, but it also referred by other slides
+			//so the image of this slide will not be removed
+			doc2 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_ANOTHER));
+			nImageCnt = OdfDrawImage.getImageCount(doc2);
+			Assert.assertTrue(doc2.deleteSlideByIndex(2));
+			Assert.assertTrue(OdfDrawImage.getImageCount(doc2) == (nImageCnt - 1));
+			imageStream1 = doc2.getPackage().getInputStream(IMAGE_NAME_1);
+			Assert.assertNotNull(imageStream1);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			Assert.assertTrue(doc.deleteSlideByIndex(20));
+			Assert.assertTrue(false);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Delete.odp"));
+			doc2.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Delete2.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for create new slide at the specified position, with the
+	 * specified name and slide template.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp
+	 * <b>Method</b>
+	 * OdfPresentationDocument.newSlide(int index, String name,
+	 * OdfDrawPage.SlideLayout slideLayout) is used to new a slide at the specified
+	 * position with the specified name, and use the specified slide template.
+	 * <b>Postcondition</b> Save the modified document at SlideResultNew.odp
+	 * <b>Covered Element</b> 
+	 * 1) &lt;style:presentation-page-layout&gt; referred by "presentation:presentation-page-layout-name" attribute of &lt;draw:page&gt;
+	 * 2) &lt;style:master-page&gt; referred by "draw:master-page-name" attribute of &lt;draw:page&gt;
+	 * 3) The placeholder element of &lt;draw:page&gt;, such as title, outline placeholder
+	 * <b>Note</b> The new slide will use the same master page style of the previous slide,
+	 * and add the placeholder on the slide according to the slide template parameter.
+	 */
+	@Test
+	public void testNewSlide() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			OdfSlide slide5 = doc.getSlideByIndex(5);
+			OdfSlide newSlide1 = doc.newSlide(2, "Slide 2 new", OdfSlide.SlideLayout.BLANK);
+			Assert.assertTrue(2 == newSlide1.getSlideIndex());
+			OdfSlide newSlide2 = doc.newSlide(0, "", OdfSlide.SlideLayout.TITLE_ONLY);
+			Assert.assertTrue(newSlide2.getSlideName().equals(""));
+			Assert.assertTrue(7 == slide5.getSlideIndex());
+			doc.newSlide(3, OdfSlide.SlideLayout.TITLE_PLUS_TEXT.toString(), OdfSlide.SlideLayout.enumValueOf("title_text"));
+			OdfSlide newSlide4 = doc.newSlide(4, null, OdfSlide.SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			Assert.assertTrue(newSlide4.getOdfElement().getDrawNameAttribute() != null);
+			OdfSlide.SlideLayout outlineType = OdfSlide.SlideLayout.TITLE_OUTLINE;
+			doc.newSlide(14, OdfSlide.SlideLayout.toString(outlineType), outlineType);
+			doc.newSlide(15, "Default", null);
+			int count = doc.getSlideCount();
+			Assert.assertTrue(16 == count);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc.newSlide(20, "Slide 20 new", OdfSlide.SlideLayout.BLANK);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "New.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for move the slide from one position to another, or copy a
+	 * specified slide and insert it to another specified position.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp
+	 * test\resources\performance\Presentation1.odp 
+	 * <b>Method</b> 1)Using OdfPresentationDocument.moveSlide(int current, int destination)
+	 * to move a slide at the current position to the destination position.
+	 * 2)OdfPresentationDocument.copySlide(int source, int dest, String newName)
+	 * is used to make a copy of the slide at a specified position to another
+	 * position in this presentation.
+	 * <b>Postcondition</b> Save the modified document at
+	 * SlideResultMoveAndCopy.odp
+	 * <b>Covered Element</b> 1) &lt;office:presentation&gt;,&lt;draw:page&gt;
+	 * 2) &lt;presentation:notes&gt; of each slide.
+	 * <b>Note</b> Each slide has its own notes page to show its notes view,
+	 * while the notes page has the "draw:page-number" attribute to show the notes view of which slide 
+	 * so when the slide is moved or copied, the index of this slide will be change, 
+	 * the notes page have to change the "draw:page-number" value.
+	 */
+	@Test
+	public void testMoveAndCopySlide() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			OdfSlide lastSlide = doc.getSlideByIndex(9);
+			OdfSlide firstSlide = doc.getSlideByIndex(0);
+
+			OdfSlide copyFirstToLastSlide = doc.copySlide(0, 10, firstSlide.getSlideName() + "(copy)");
+			Assert.assertTrue(10 == copyFirstToLastSlide.getSlideIndex());
+
+			OdfSlide copyLastToFirstSlide = doc.copySlide(9, 0, lastSlide.getSlideName() + "(copy)");
+			Assert.assertTrue(0 == copyLastToFirstSlide.getSlideIndex());
+
+			doc.moveSlide(11, 0);
+			doc.moveSlide(1, 12);
+			Assert.assertTrue(1 == firstSlide.getSlideIndex());
+			Assert.assertTrue(10 == lastSlide.getSlideIndex());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc.moveSlide(20, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.moveSlide(-1, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.copySlide(20, 0, "outofbounds");
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.copySlide(-1, 0, "outofbounds");
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "MoveAndCopy.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for copy a slide which comes from the other presentation
+	 * to the specified position of the current presentation.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp & test\resources\performance\Presentation2.odp
+	 * <b>Method</b> Using OdfPresentationDocument.copyForeignSlide(int
+	 * destIndex,OdfPresentationDocument srcDoc, int srcIndex) to copy a slide
+	 * which locates at "srcIndex" position of the "srcDoc" presentation
+	 * document and insert it to the current presentation document at "destIndex" position.
+	 * <b>Postcondition</b> Save the modified document at SlideResultCopyForeignSlide.odp
+	 * <b>Covered Element</b> 1) &lt;office:presentation&gt;,&lt;draw:page&gt;
+	 * 2) All the element that contains "xlink:href" attribute, such as &lt;draw:object&gt;, &lt;draw:image&gt;, etc.
+	 * 3) Each style definition element of &lt;draw:page&gt; and its all child elements
+	 * such as layout style, master page style, object style and text style
+	 * the style definition element must contain "style:name" or "draw:name" attribute, include 
+	 *         &lt;style:mater-page&gt;,&lt;style:page-layout&gt;,&lt;style:presentation-page-layout&gt;,
+	 *         &lt;style:style&gt;, &lt;text:list-style&gt;, &lt;number:time-style&gt;, &lt;number:date-style&gt;,
+	 *         &lt;number:boolean-style&gt;, &lt;number:number-style&gt;, &lt;number:currency-style&gt;,
+	 *         &lt;number:percentage-style&gt;, &lt;number:text-style&gt;, &lt;text:outline-style&gt;,&lt;style:font-face&gt;,
+	 * 4) the element which refer the style name, that is &lt;draw:page&gt; and all the child elements.
+	 * <b>Note</b> If the copied style/image/ole name is duplicated with destination presentation document,
+	 * the name definition element and reference element must be renamed then insert to the dest document.
+	 */
+	@Test
+	public void testCopyForeignSlide() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			doc2 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_ANOTHER));
+
+			// copy slide at index 2 of doc to the index 2 of doc2
+			int nEmbedDoc = doc2.loadSubDocuments().size();
+			String embedDocName = "Object 3/";
+			OdfFileEntry fileEntry = doc2.getPackage().getFileEntry(embedDocName);
+			Assert.assertNull(fileEntry);
+			OdfSlide newPage1 = doc2.copyForeignSlide(2, doc, 2);
+			Assert.assertTrue(2 == newPage1.getSlideIndex());
+			// slide at index 2 of doc contains an embedded document called
+			// "Object 3"
+			OdfDocument embedDoc = doc2.loadSubDocument(embedDocName);
+			Assert.assertNotNull(embedDoc);
+			int size = doc2.loadSubDocuments().size();
+			Assert.assertTrue(size == (nEmbedDoc + 1));
+			// the copied slide also have an bitmap background, and the image bullet
+			// they should all be copied
+			String BACKGROUND_IMAGE_NAME = "Pictures/1000000000000C80000004009305DCA3.jpg";
+			String BULLET_IMAGE_NAME = "Pictures/10000000000002580000018FB151A5C8.jpg";
+			InputStream backgroundImage = doc2.getPackage().getInputStream(BACKGROUND_IMAGE_NAME);
+			Assert.assertNotNull(backgroundImage);
+			// copy the slide at index 2 of doc to the end of doc2
+			OdfSlide newPage2 = doc2.copyForeignSlide(101, doc, 2);
+			Assert.assertNotNull(doc2.getPackage().getFileEntry(BULLET_IMAGE_NAME));
+			Assert.assertFalse(newPage1.getSlideName().equals(newPage2.getSlideName()));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		try {
+			doc2.copyForeignSlide(200, doc, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc2.copyForeignSlide(-1, doc, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc2.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "CopyForeignSlide2.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for appending all the slide of one presentation to the end of
+	 * another presentation.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\Presentation1.odp & test\resources\performance\Presentation2.odp
+	 * <b>Method</b> Using OdfPresentationDocument.appendPresentation(OdfPresentationDocument aDoc)
+	 * to append the specified presentation to the current presentation.
+	 * <b>Postcondition</b> Save the modified document at SlideResultMerge.odp
+	 * <b>Covered Element</b> 
+	 * Same with <code>CopyForeignSlide</code> method,
+	 * except that it covers all the slide element of the document,rather than specific slide.
+	 * <b>Note</b> 1)You'd better check the generated document to look at if there are any object/style is lost.
+	 * 2) The generated file size will be larger than we append by using OpenOffice/Symphony,
+	 * that is because the styles and images from the different document might have the same content,
+	 * but I still append them rather than use one copy,
+	 * because compare the odf element content and the image stream might cost much time.
+	 */
+	@Test
+	public void testAppendPresentation() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			doc2 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_ANOTHER));
+			int slideCount = doc.getSlideCount();
+			int slideCount2 = doc2.getSlideCount();
+			//doc, doc2 both have the embed document named "Object 2"
+			//with different content, so after appendPresentation,
+			//the embedded doc "Object 2" of doc will be renamed
+			String EMBEDDOC_NAME = "Object 2";
+			Assert.assertNotNull(doc.loadSubDocument(EMBEDDOC_NAME));
+			Assert.assertNotNull(doc2.loadSubDocument(EMBEDDOC_NAME));
+			doc2.appendPresentation(doc);
+			Assert.assertTrue((slideCount + slideCount2) == doc2.getSlideCount());
+			//slide at index 3 of doc contains "Object 2", "Object 6"
+			//after appendPresentation, let's check the slide at index 103 of merged document
+			//which is corresponding to the slide at index 3 of doc
+			OdfSlide slide = doc2.getSlideByIndex(103);
+			DrawPageElement slideEle = slide.getOdfElement();
+			NodeList objectList = slideEle.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "object");
+			Assert.assertTrue(objectList.getLength() == 2);
+			DrawObjectElement object1 = (DrawObjectElement) objectList.item(0);
+			String linkPath = object1.getXlinkHrefAttribute();
+			Assert.assertTrue(linkPath.startsWith("./Object 2") && !linkPath.equals("./Object 2"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc2.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Merge2.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testAnotherMergeDoc() {
+		try {
+			doc = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_MAIN));
+			doc2 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_FILE_ANOTHER));
+			doc.appendPresentation(doc2);
+			Assert.assertTrue(doc.getSlideCount() == 110);
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Merge1.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for merge the three presentation document
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at test\resources\performance\SlideTest1.odp, 
+	 * 	 test\resources\performance\SlideTest2.odp and test\resources\performance\SlideTest3.odp
+	 * <b>Method</b> copy the slide from SlideTest2.odp and SlideTest3.odp to SlideTest1.odp
+	 * <b>Postcondition</b> Save the modified document at SlideResultCopyThreeDoc.odp
+	 * <b>Notice</b> 
+	 * This test case is used to show that the style name can be renamed if they define the different style.
+	 */
+	@Test
+	public void testCopyThreeDoc() {
+		try {
+			//testdoc1 contain "dp1" for draw page style
+			OdfPresentationDocument testdoc1 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_DOCUMENT1));
+			//testdoc1 contain "dp1" for draw page style
+			OdfPresentationDocument testdoc2 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_DOCUMENT2));
+			//testdoc1 contain "dp1" for draw page style
+			OdfPresentationDocument testdoc3 = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_PRESENTATION_DOCUMENT3));
+			testdoc1.copyForeignSlide(1, testdoc2, 0);
+			testdoc1.copyForeignSlide(2, testdoc3, 0);
+			//after copy foreign slide, the each slide should has its own draw page style
+			DrawPageElement slide1 = testdoc1.getSlideByIndex(0).getOdfElement();
+			DrawPageElement slide2 = testdoc1.getSlideByIndex(1).getOdfElement();
+			DrawPageElement slide3 = testdoc1.getSlideByIndex(2).getOdfElement();
+			String slideStyle1 = slide1.getDrawNameAttribute();
+			String slideStyle2 = slide2.getDrawNameAttribute();
+			String slideStyle3 = slide3.getDrawNameAttribute();
+			LOG.info(slideStyle1);
+			LOG.info(slideStyle2);
+			LOG.info(slideStyle3);
+			testdoc1.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "CopyThreeDoc.odp"));
+			Assert.assertNotSame(slideStyle1, slideStyle2);
+			Assert.assertNotSame(slideStyle2, slideStyle3);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/SpreadsheetTemplateTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/SpreadsheetTemplateTest.java
new file mode 100644
index 0000000..dd49f88
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/SpreadsheetTemplateTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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 java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of calc documents.
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class SpreadsheetTemplateTest {
+
+	private static final String TEST_SPREADSHEET_TEMPLATE = "/spreadsheetTestTemplate.ots";
+
+	@Test
+	public void testLoadingASpreadsheetTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_SPREADSHEET_TEMPLATE));
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingASpreadsheetTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_SPREADSHEET_TEMPLATE));
+		File destination = File.createTempFile("odfdom-test", ".ots");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewSpreadsheetTemplate() throws Exception {
+		OdfDocument document = OdfSpreadsheetDocument.newSpreadsheetTemplateDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("odfdom-test", ".ots");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfSpreadsheetDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfSpreadsheetDocument() throws Exception {
+		OdfSpreadsheetDocument document = OdfSpreadsheetDocument.newSpreadsheetDocument();
+		document.changeMode(OdfSpreadsheetDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = OdfSpreadsheetDocument.newSpreadsheetTemplateDocument();
+		document.changeMode(OdfSpreadsheetDocument.OdfMediaType.SPREADSHEET);
+		Assert.assertEquals(OdfDocument.OdfMediaType.SPREADSHEET.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/StyleManipulationTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/StyleManipulationTest.java
new file mode 100644
index 0000000..4faf1d8
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/StyleManipulationTest.java
@@ -0,0 +1,64 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+public class StyleManipulationTest {
+
+    private static final String SOURCE = "empty.odt";
+    private static final String TARGET = "stylemanipulationtest.odt";
+    
+    public StyleManipulationTest() {}
+
+    @Test
+    public void testLoadSave() {
+        try {
+            OdfDocument odfDocument = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE));
+            OdfOfficeStyles styles = odfDocument.getDocumentStyles();
+            Assert.assertNotNull(styles);
+            OdfStyle standardStyle = styles.getStyle("Standard", OdfStyleFamily.Paragraph);
+            standardStyle.setProperty(StyleParagraphPropertiesElement.MarginLeft, "4711");
+            odfDocument.save(ResourceUtilities.newTestOutputFile(TARGET));
+            odfDocument = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TARGET));
+            styles = odfDocument.getDocumentStyles();
+            standardStyle = styles.getStyle("Standard", OdfStyleFamily.Paragraph);
+            String marginLeft = standardStyle.getProperty(StyleParagraphPropertiesElement.MarginLeft);
+            
+            Assert.assertTrue(marginLeft != null && marginLeft.equals("4711"));
+        } catch (Exception e) {
+            Logger.getLogger(StyleManipulationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }        
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/StyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/StyleTest.java
new file mode 100644
index 0000000..3e0d9cd
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/StyleTest.java
@@ -0,0 +1,295 @@
+/************************************************************************
+ *
+ * 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 java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleBackgroundImageElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleChartPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTabStopElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTabStopsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class StyleTest {
+
+    public StyleTest() {
+    }
+
+    @Test
+    public void testStyleOrdering() {
+        try {
+            OdfDocument doc = OdfTextDocument.newTextDocument();
+            OdfFileDom dom = doc.getContentDom();
+
+            // 1. different # of attributes
+            OdfStyle style1 = new OdfStyle(dom);
+            style1.setStyleFamilyAttribute(OdfStyleFamily.Paragraph.toString());
+
+            OdfStyle style2 = new OdfStyle(dom);
+            style2.setStyleFamilyAttribute(OdfStyleFamily.Paragraph.toString());
+            style2.setStyleNextStyleNameAttribute("nextStyle");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 2. same # of attributes, different attributes
+            style1.setStyleDisplayNameAttribute("displayName");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 3. same # of attributes, same attributes, different values
+            style1.setStyleNextStyleNameAttribute("nextStyle");
+            style2.setStyleNextStyleNameAttribute("xnextStyle");
+            style2.setStyleDisplayNameAttribute("displayName");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 4. same # of attributes, same attributes, same values, different
+            // number of children
+            style2.setStyleNextStyleNameAttribute("nextStyle");
+            style2.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+            style2.setProperty(StyleParagraphPropertiesElement.TextAlign, "left");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 5. same # of attributes, same attributes, same values, same number
+            // of children, different number of properties
+            style1.setProperty(StyleChartPropertiesElement.DataLabelNumber, "value");
+            style1.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+            style1.setProperty(StyleParagraphPropertiesElement.TextAlign, "left");
+            style2.setProperty(StyleParagraphPropertiesElement.KeepTogether, "auto");
+            style2.setProperty(StyleChartPropertiesElement.DataLabelNumber, "value");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 6. same # of attributes, same attributes, same values, same number
+            // of children, same number of properties, different properties:
+            style1.setProperty(StyleParagraphPropertiesElement.AutoTextIndent, "true");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 7. same # of attributes, same attributes, same values, same number
+            // of children, same number of properties, same properties, different
+            // values:
+            style2.setProperty(StyleParagraphPropertiesElement.AutoTextIndent, "true");
+            style1.setProperty(StyleParagraphPropertiesElement.KeepTogether, "always");
+            Assert.assertTrue(style2.compareTo(style1) > 0);
+
+            // 8. same # of attributes, same attributes, same values, same number
+            // of children, same number of properties, same properties, same
+            // values:
+            style1.setProperty(StyleParagraphPropertiesElement.KeepTogether, "auto");
+            Assert.assertTrue(style2.compareTo(style1) == 0);
+
+            // 9. tab stops vs background image
+            StyleTabStopsElement tabStops = (StyleTabStopsElement) OdfXMLFactory.newOdfElement(dom, StyleTabStopsElement.ELEMENT_NAME);
+            StyleTabStopElement tabStop1 = (StyleTabStopElement) OdfXMLFactory.newOdfElement(dom, StyleTabStopElement.ELEMENT_NAME);
+            StyleTabStopElement tabStop2 = (StyleTabStopElement) OdfXMLFactory.newOdfElement(dom, StyleTabStopElement.ELEMENT_NAME);
+            OdfStylePropertiesBase propElement = style1.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+            propElement.appendChild(tabStops);
+            tabStops.appendChild(tabStop1);
+            tabStops.appendChild(tabStop2);
+            StyleBackgroundImageElement img = (StyleBackgroundImageElement) OdfXMLFactory.newOdfElement(dom, StyleBackgroundImageElement.ELEMENT_NAME);
+            propElement = style2.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+            propElement.appendChild(img);
+            Assert.assertTrue(style2.compareTo(style1) < 0);
+
+            // 10. Same tab stops and background image, different position:
+            // These two styles are considered distinct!
+            tabStops = (StyleTabStopsElement) OdfXMLFactory.newOdfElement(dom, StyleTabStopsElement.ELEMENT_NAME);
+            tabStop1 = (StyleTabStopElement) OdfXMLFactory.newOdfElement(dom, StyleTabStopElement.ELEMENT_NAME);
+            tabStop2 = (StyleTabStopElement) OdfXMLFactory.newOdfElement(dom, StyleTabStopElement.ELEMENT_NAME);
+            propElement = style2.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+            propElement.appendChild(tabStops);
+            tabStops.appendChild(tabStop1);
+            tabStops.appendChild(tabStop2);
+            img = (StyleBackgroundImageElement) OdfXMLFactory.newOdfElement(dom, StyleBackgroundImageElement.ELEMENT_NAME);
+            propElement = style1.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+            propElement.appendChild(img);
+            Assert.assertTrue(style2.compareTo(style1) < 0);
+
+        } catch (Exception e) {
+            Logger.getLogger(StyleTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+        }
+    }
+
+    @Test
+    public void testAutomaticStylesOptimize() {
+        try {
+            OdfDocument doc = OdfTextDocument.newTextDocument();
+            OdfFileDom dom = doc.getContentDom();
+
+            OdfTextParagraph para1 = (OdfTextParagraph) OdfXMLFactory.newOdfElement(dom, OdfTextParagraph.ELEMENT_NAME);
+            para1.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+            para1.setProperty(StyleParagraphPropertiesElement.TextAlign, "left");
+            para1.setProperty(StyleChartPropertiesElement.DataLabelNumber, "value");
+
+            OdfTextParagraph para2 = (OdfTextParagraph) OdfXMLFactory.newOdfElement(dom, OdfTextParagraph.ELEMENT_NAME);
+            para2.setProperty(StyleChartPropertiesElement.DataLabelNumber, "value");
+            para2.setProperty(StyleParagraphPropertiesElement.TextAlign, "left");
+            para2.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+
+            StyleStyleElement style1 = para1.getAutomaticStyle();
+            StyleStyleElement style2 = para2.getAutomaticStyle();
+
+            String styleName1 = para1.getStyleName();
+            String styleName2 = para2.getStyleName();
+
+            Assert.assertFalse(styleName1.equals(styleName2));
+            Assert.assertTrue(style1.getStyleUserCount() == 1);
+            Assert.assertTrue(style2.getStyleUserCount() == 1);
+
+            OdfOfficeAutomaticStyles autoStyles = para1.getAutomaticStyles();
+
+            Iterator<OdfStyle> iter = autoStyles.getStylesForFamily(OdfStyleFamily.Paragraph).iterator();
+            int count = 0;
+            while (iter.hasNext()) {
+                iter.next();
+                ++count;
+            }
+
+            Assert.assertTrue(count == 2);
+
+            // optimize should automatically remove one style:
+            autoStyles.optimize();
+
+            iter = autoStyles.getStylesForFamily(OdfStyleFamily.Paragraph).iterator();
+            count = 0;
+            while (iter.hasNext()) {
+                iter.next();
+                ++count;
+            }
+
+            Assert.assertTrue(count == 1);
+
+            style1 = para1.getAutomaticStyle();
+            style2 = para2.getAutomaticStyle();
+
+            Assert.assertTrue(style1 == style2);
+            Assert.assertTrue(style1.getStyleUserCount() == 2);
+        } catch (Exception e) {
+            Logger.getLogger(StyleTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+        }
+    }
+
+    @Test
+    public void testPropertyInheritance() {
+        try {
+            OdfDocument doc = OdfTextDocument.newTextDocument();
+
+            OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+
+            OdfDefaultStyle def = styles.getOrCreateDefaultStyle(OdfStyleFamily.Paragraph);
+            def.setProperty(StyleTextPropertiesElement.TextUnderlineColor, "#00FF00");
+
+            OdfStyle parent = styles.newStyle("TheParent", OdfStyleFamily.Paragraph);
+            parent.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+            parent.setProperty(StyleTextPropertiesElement.Color, "#FF0000");
+
+            OdfStyle child = styles.newStyle("TheChild", OdfStyleFamily.Paragraph);
+            child.setStyleParentStyleNameAttribute(parent.getStyleNameAttribute());
+
+            Assert.assertEquals("17pt", child.getProperty(StyleTextPropertiesElement.FontSize));
+            Assert.assertEquals("#FF0000", child.getProperty(StyleTextPropertiesElement.Color));
+            Assert.assertEquals("#00FF00", child.getProperty(StyleTextPropertiesElement.TextUnderlineColor));
+
+        } catch (Exception e) {
+            Logger.getLogger(StyleTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+        }
+    }
+
+//    /**
+//     * Test included to reproduce bug29, which was rolled back due to performance problems!!
+//     *
+//     */
+//    @Test
+//    public void testAutomaticStyleRename() {
+//        try {
+//            OdfDocument doc = OdfTextDocument.newTextDocument();
+//            OdfFileDom dom = doc.getContentDom();
+//
+//            OdfOfficeAutomaticStyles autoStyles = new OdfOfficeAutomaticStyles(dom);
+//            OdfStyle paraStyle = autoStyles.newStyle(OdfStyleFamily.Paragraph);
+//
+//            paraStyle.setStyleNameAttribute("newName");
+//            OdfStyle newStyle = autoStyles.getStyle("newName", OdfStyleFamily.Paragraph);
+//
+//            Assert.assertNotNull(newStyle);
+//            Assert.assertSame(paraStyle, newStyle);
+//
+//            autoStyles.optimize();
+//            newStyle = autoStyles.getStyle("newName", OdfStyleFamily.Paragraph);
+//            // unused style removed
+//            Assert.assertNull(newStyle);
+//
+//            // new style created
+//            OdfStyle style = autoStyles.newStyle(OdfStyleFamily.Paragraph);
+//            style.setStyleNameAttribute("newName1");
+//            OdfStyle style2 = autoStyles.newStyle(OdfStyleFamily.Paragraph);
+//            style2.setStyleNameAttribute("newName2");
+//
+//            autoStyles.removeChild(style2);
+//            OdfStyle style3 = autoStyles.getStyle("newName1", OdfStyleFamily.Paragraph);
+//            // assert the correct style was removed
+//            Assert.assertNotNull(style3);
+//        } catch (Exception ex) {
+//            Logger.getLogger(StyleTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+//            Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+//        }
+//    }
+
+    /**
+     * Setting style property on an automatic style, which occurs on multiple
+     * elements and does not have a style parent results in an error (Bug 124).
+     */
+    @Test
+    public void testAutomaticStyleSharing() {
+        try {
+            OdfDocument odfDocument = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("sharedautostyles.odt"));
+            OdfFileDom dom = odfDocument.getContentDom();
+
+            NodeList lst = dom.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+            Assert.assertTrue(lst.getLength() == 2);
+
+            OdfTextParagraph p = (OdfTextParagraph)lst.item(0);
+            p.setProperty(StyleTextPropertiesElement.FontSize, "17pt");
+        } catch (Exception ex) {
+        	Logger.getLogger(StyleTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+            Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/TableTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/TableTest.java
new file mode 100644
index 0000000..6f6ed4e
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/TableTest.java
@@ -0,0 +1,136 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.table.OdfTable;
+import org.odftoolkit.odfdom.doc.table.OdfTableCell;
+import org.odftoolkit.odfdom.doc.table.OdfTableRow;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class TableTest {
+
+	private static final String TEST_FILE_SAVE_2TABLES_OUT = "TestSave2Tables.odt";
+
+	public TableTest() {
+	}
+
+	@Test
+	public void testTable() {
+		try {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("table.odt"));
+			NodeList lst = odfdoc.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table");
+			int tscount = 0;
+			for (int i = 0; i < lst.getLength(); i++) {
+				Node node = lst.item(i);
+				Assert.assertTrue(node instanceof TableTableElement);
+				TableTableElement te = (TableTableElement) lst.item(i);
+
+				OdfStyle ds = te.getDocumentStyle();
+				Assert.assertNull(ds);
+
+				if (te.hasAutomaticStyle()) {
+					te.getAutomaticStyle();
+					tscount++;
+				}
+			}
+			Assert.assertTrue(tscount > 0);
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCellsAndRows() {
+		try {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("table.odt"));
+			NodeList lst = odfdoc.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table-cell");
+			for (int i = 0; i < lst.getLength(); i++) {
+				Node node = lst.item(i);
+				Assert.assertTrue(node instanceof TableTableCellElement);
+				TableTableCellElement td = (TableTableCellElement) lst.item(i);
+				TableTableRowElement tr = (TableTableRowElement) td.getParentNode();
+				Assert.assertNotNull(tr);
+
+				OdfTable table = OdfTableRow.getInstance(tr).getTable();
+				Assert.assertNotNull(table);
+				Assert.assertTrue(table == OdfTableCell.getInstance(td).getTable());
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void create2ndTableTab() throws Exception {
+		OdfSpreadsheetDocument mysheet = OdfSpreadsheetDocument.newSpreadsheetDocument();
+		OdfFileDom odt = mysheet.getContentDom();
+
+		// find the first table in the sheet
+		NodeList lst =
+				odt.getElementsByTagNameNS(TableTableElement.ELEMENT_NAME.getUri(), TableTableElement.ELEMENT_NAME.getLocalName());
+		TableTableElement mytable = (TableTableElement) lst.item(0);
+		mytable.setTableNameAttribute("Cars Sheet");
+
+		// remove first empty row of table.
+		mytable.removeChild(mytable.getFirstChild().getNextSibling());
+
+		TableTableRowElement row = (TableTableRowElement) mytable.appendChild(new TableTableRowElement(odt));
+		TableTableCellElement cell = (TableTableCellElement) row.appendChild(new TableTableCellElement(odt));
+
+		OdfTextParagraph p = new OdfTextParagraph(odt);
+		p.appendChild(odt.createTextNode("Corvette"));
+		cell.appendChild(p);
+
+		// 2nd Table
+		TableTableElement my2table = new TableTableElement(odt);
+
+		Element spreadsheetElement = (Element) odt.getElementsByTagNameNS(OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+		my2table.setAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "table:name", "BikesSheet");
+		spreadsheetElement.appendChild(my2table);
+
+		TableTableRowElement row2 = (TableTableRowElement) my2table.appendChild(new TableTableRowElement(odt));
+		TableTableCellElement cell2 = (TableTableCellElement) row2.appendChild(new TableTableCellElement(odt));
+
+		OdfTextParagraph p2 = new OdfTextParagraph(odt);
+		p2.appendChild(odt.createTextNode("Bandit 600"));
+		cell2.appendChild(p2);
+
+		mysheet.save(ResourceUtilities.getTestOutput(TEST_FILE_SAVE_2TABLES_OUT));
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/TextTemplateTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/TextTemplateTest.java
new file mode 100644
index 0000000..1039f02
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/TextTemplateTest.java
@@ -0,0 +1,141 @@
+/*
+ * 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 java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of calc documents.
+ * 
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class TextTemplateTest {
+
+	private static final String TEST_TEXT_TEMPLATE = "/textTestTemplate.ott";
+
+	@Test
+	public void testLoadingATextTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_TEXT_TEMPLATE));
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingATextTemplate() throws Exception {
+		OdfDocument document = OdfDocument.loadDocument(this.getClass().getResourceAsStream(TEST_TEXT_TEMPLATE));
+		File destination = File.createTempFile("odfdom-test", ".ott");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewTextTemplate() throws Exception {
+		OdfDocument document = OdfTextDocument.newTextTemplateDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("odfdom-test", ".ott");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfTextDocument);
+	}
+
+	@Test
+	public void testNewTextMaster() throws Exception {
+		OdfDocument document = OdfTextDocument.newTextMasterDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_MASTER.getMediaTypeString(),
+				document.getMediaTypeString());
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_MASTER.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("odfdom-test", ".ott");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_MASTER.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfTextDocument);
+	}
+
+	@Test
+	public void testNewTextWeb() throws Exception {
+		OdfDocument document = OdfTextDocument.newTextWebDocument();
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_WEB.getMediaTypeString(),
+				document.getMediaTypeString());
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_WEB.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("odfdom-test", ".ott");
+		document.save(destination);
+
+		// load again
+		OdfDocument loadedDocument = OdfDocument.loadDocument(destination);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_WEB.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof OdfTextDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfTextDocument() throws Exception {
+		OdfTextDocument document = OdfTextDocument.newTextDocument();
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_WEB);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_WEB.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_MASTER);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_MASTER.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = OdfTextDocument.newTextTemplateDocument();
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_MASTER);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_MASTER.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_WEB);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_WEB.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = OdfTextDocument.newTextMasterDocument();
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_WEB);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_WEB.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = OdfTextDocument.newTextWebDocument();
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_TEMPLATE);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(OdfTextDocument.OdfMediaType.TEXT_MASTER);
+		Assert.assertEquals(OdfDocument.OdfMediaType.TEXT_MASTER.getMediaTypeString(), document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/UnknownPropertiesTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/UnknownPropertiesTest.java
new file mode 100644
index 0000000..91d655b
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/UnknownPropertiesTest.java
@@ -0,0 +1,81 @@
+/************************************************************************
+ *
+ * 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 java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleTabStopElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTabStopsElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class UnknownPropertiesTest {
+
+    private static final String SOURCE = "unknown_properties.odt";
+    private static final String TARGET = "unknown_properties_saved.odt";
+
+    public UnknownPropertiesTest() {
+    }
+
+    @Test
+    public void unknownPropertiesTest() {
+        try {
+            for (int i = 0; i < 2; ++i) {
+                OdfDocument odfDocument = i == 0 ? OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE)) : OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TARGET));
+
+                Document odfContent = odfDocument.getContentDom();
+                NodeList lst = odfContent.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+                Node node = lst.item(0);
+                OdfTextParagraph para = (OdfTextParagraph) node;
+                OdfStyleBase paraLocalStyle = para.getAutomaticStyle();
+
+                OdfStylePropertiesBase paraProperties = paraLocalStyle.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+
+                StyleTabStopsElement tabstops = OdfElement.findFirstChildNode(StyleTabStopsElement.class, paraProperties );
+                Assert.assertNotNull(tabstops);
+
+                StyleTabStopElement tabstop = OdfElement.findFirstChildNode(StyleTabStopElement.class, tabstops);
+                Assert.assertNotNull(tabstop);
+
+                Assert.assertEquals(tabstop.getStylePositionAttribute().toString(), "7.643cm");
+
+                if (i == 0) {
+                    odfDocument.save(ResourceUtilities.newTestOutputFile(TARGET));
+                }
+            }
+        } catch (Exception e) {
+            Logger.getLogger(UnknownPropertiesTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/draw/OdfDrawImageTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/draw/OdfDrawImageTest.java
new file mode 100644
index 0000000..5022244
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/draw/OdfDrawImageTest.java
@@ -0,0 +1,82 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.odftoolkit.odfdom.doc.draw;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.FileInputStream;
+import java.net.URI;
+import java.util.logging.Logger;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ *
+ * @author hs234750
+ */
+public class OdfDrawImageTest {
+
+	private static final Logger LOG = Logger.getLogger(OdfDrawImageTest.class.getName());
+
+	/**
+	 * Test of newImage method, of class OdfDrawImage.
+	 */
+	@Test
+	public void testInsertImage_URI() throws Exception {
+		LOG.info("insertImage from URI");
+		OdfTextDocument odt = OdfTextDocument.newTextDocument();
+		OdfTextParagraph para = (OdfTextParagraph) odt.getContentRoot().newTextPElement();
+		OdfDrawFrame frame = (OdfDrawFrame) para.newDrawFrameElement();
+		OdfDrawImage image = (OdfDrawImage) frame.newDrawImageElement();
+		String packagePath = image.newImage(ResourceUtilities.getURI("testA.jpg"));
+		assertEquals(image.getXlinkTypeAttribute(), "simple");
+		LOG.info(frame.getSvgWidthAttribute());
+		LOG.info(frame.getSvgHeightAttribute());
+		assert (frame.getSvgWidthAttribute().startsWith("19.") && frame.getSvgWidthAttribute().endsWith("cm"));
+		assert (frame.getSvgHeightAttribute().startsWith("6.") && frame.getSvgHeightAttribute().endsWith("cm"));
+		assertEquals(odt.getPackage().getFileEntry(packagePath).getMediaTypeString(), "image/jpeg");
+	}
+
+	/**
+	 * Test of newImage method, of class OdfDrawImage.
+	 */
+	@Test
+	public void testInsertImage_InputStream() throws Exception {
+		LOG.info("insertImage from InputStream");
+		OdfTextDocument odt = OdfTextDocument.newTextDocument();
+		OdfTextParagraph para = (OdfTextParagraph) odt.getContentRoot().newTextPElement();
+		OdfDrawFrame frame = (OdfDrawFrame) para.newDrawFrameElement();
+		OdfDrawImage image = (OdfDrawImage) frame.newDrawImageElement();
+		String packagePath = "Pictures/myChosenImageName.jpg";
+		String mediaType = "image/jpeg";
+		image.newImage(new FileInputStream(ResourceUtilities.getAbsolutePath("testA.jpg")), packagePath, mediaType);
+		assertEquals(image.getXlinkTypeAttribute(), "simple");
+		assert (frame.getSvgWidthAttribute().startsWith("19.") && frame.getSvgWidthAttribute().endsWith("cm"));
+		assert (frame.getSvgHeightAttribute().startsWith("6.") && frame.getSvgHeightAttribute().endsWith("cm"));
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfCurrencyStyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfCurrencyStyleTest.java
new file mode 100644
index 0000000..5b728fe
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfCurrencyStyleTest.java
@@ -0,0 +1,339 @@
+/************************************************************************
+ *
+ * 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.number;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencySymbolElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberCurrencyStyle;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author J David Eisenberg
+ */
+public class OdfCurrencyStyleTest {
+	OdfSpreadsheetDocument doc;
+	OdfFileDom dom;
+	private static final Logger LOG = Logger.getLogger(OdfCurrencyStyleTest.class.getName());
+    public OdfCurrencyStyleTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+	/**
+	 * Test of buildFromFormat method, of class OdfCurrencyStyle.
+	 */
+	@Test
+	public void testBuildFromFormat() {
+		String[] formatTest = {
+			"$US#,##0.00",
+			"cr$US##0.00",
+			"## $US",
+			"##0 \u03b4\u03c1\u03c7", // Greek drachma
+			"cr#,##0.00 $US"
+		};
+
+		String[] getFormatExpected = {
+				"$US#,##0.00",
+				"cr$US#0.00",
+				"# $US",
+				"#0 \u03b4\u03c1\u03c7", // Greek drachma
+				"cr#,##0.00 $US"
+		};
+
+		String[] currencySymbol = { "$", "$", "$", "\u03b4\u03c1\u03c7", "$" };
+
+		/*
+		 * Expected elements.
+         * t -- <number:text> with following text
+         * n -- <number:number> with minimum digits, decimal places,
+         *      and grouping (T or F)
+         * c -- <number:currency-symbol> with the symbol text
+		 */
+        String[][] expected = {
+			{"c$","tUS","n12T" }, // $US#,##0.00
+			{"tcr", "c$", "tUS", "n12F"}, // cr$US##0.00
+			{"n00F", "t ", "c$", "tUS"}, // ## $US
+			{"n10F", "t ", "c\u03b4\u03c1\u03c7"}, // ##0 \u03b4\u03c1\u03c7
+			{"tcr", "n12T", "t ", "c$", "tUS"} //cr#,##0.00 $US
+		};
+
+		LOG.info("buildFromFormat");
+		OdfNumberCurrencyStyle instance = null;
+		Node node;
+		char expectedType;
+		String expectedValue;
+
+		for (int i = 0; i < formatTest.length; i++)
+		{
+			LOG.info("Currency format: " + formatTest[i]);
+			instance = new OdfNumberCurrencyStyle(dom,
+				currencySymbol[i], formatTest[i], "fstyle");
+			Assert.assertNotNull(instance);
+
+			node = instance.getFirstChild();
+
+			for (int j = 0; j < expected[i].length; j++)
+			{
+				expectedType = expected[i][j].charAt(0);
+				expectedValue = expected[i][j].substring(1);
+				switch (expectedType)
+				{
+					case 't':
+						checkNumberText("text", expectedValue, node);
+						break;
+					case 'c':
+						checkCurrency(expectedValue, node);
+						break;
+					case 'n':
+						checkNumberFormat(expectedValue, node);
+						break;
+				}
+				node = node.getNextSibling();
+			}
+			Assert.assertEquals(getFormatExpected[i], instance.getFormat());
+		}
+	}
+
+	/**
+	 * Check that the node is an element with the given name
+	 * with the expected text content.
+	 * @param elementName expected element name (in number: namespace)
+	 * @param expected expected text content
+	 * @param node the Node to be examined
+	 */
+	private void checkNumberText(String elementName, String expected, Node node)
+	{
+		Node childNode;
+
+		// Check for <number:elementName> with expected content
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.NUMBER.getUri(),
+			node.getNamespaceURI());
+		Assert.assertEquals(elementName, node.getLocalName());
+		childNode = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, childNode.getNodeType());
+		Assert.assertEquals(expected, childNode.getNodeValue());
+	}
+
+	/**
+	 * Check to see that the node is <code>&lt;number:number&gt;</code> and
+	 * meets the expected specifications.
+	 *
+	 * The expected specifications is a string of three characters:
+	 * min # of digits, # of decimal places, grouped (T/F)
+	 * @param expected expected specification for <code>&lt;number:number&gt;</code>
+	 * @param node the node to be validated
+	 */
+	private void checkNumberFormat(String expected, Node node)
+	{
+		int nDigits = Integer.parseInt(expected.substring(0,1));
+		int nDecimals = Integer.parseInt(expected.substring(1,2));
+		boolean grouped = (expected.charAt(2) == 'T');
+		boolean nodeGrouped;
+		NumberNumberElement number;
+
+		Assert.assertTrue("node is NumberNmberElement", node instanceof NumberNumberElement);
+		number = (NumberNumberElement) node;
+
+		// check number of digits and decimals
+		Assert.assertEquals(nDigits, (long) number.getNumberMinIntegerDigitsAttribute());
+
+		if (nDecimals > 0)
+		{
+			Assert.assertEquals(nDecimals, (long)number.getNumberDecimalPlacesAttribute());
+		}
+
+		// check if grouping is set properly
+		nodeGrouped = (number.getNumberGroupingAttribute() == null) ? 
+			false :
+			number.getNumberGroupingAttribute().booleanValue();
+		Assert.assertTrue("Grouping", grouped == nodeGrouped);
+	}
+
+	/**
+	 * Check that a <code>&lt;number:currency-symbol&gt;</code> element
+	 * meets specifications.
+	 *
+	 * @param expected a string giving the currency symbol
+	 * @param node the node to be validated
+	 */
+	private void checkCurrency(String expected, Node node)
+	{
+		Assert.assertTrue("node is currency symbol", node instanceof
+			NumberCurrencySymbolElement);
+		checkNumberText("currency-symbol", expected, node);
+	}
+
+	/**
+	 * Test of getCurrencySymbolElement method, of class OdfNumberNumberCurrencyStyle.
+	 */
+	@Test
+	public void testGetCurrencySymbolElement() {
+		LOG.info("getCurrencySymbolElement");
+		OdfNumberCurrencyStyle instance = new OdfNumberCurrencyStyle(dom,
+			"$", "$#,##0.00", "cstyle");
+		NumberCurrencySymbolElement expResult = new NumberCurrencySymbolElement(dom);
+		expResult.setTextContent("$");
+		NumberCurrencySymbolElement result = instance.getCurrencySymbolElement();
+		Assert.assertEquals(expResult.getTextContent(),
+			result.getTextContent());
+	}
+
+	/**
+	 * Test of setCurrencyLocale method, of class OdfNumberCurrencyStyle.
+	 */
+	@Test
+	public void testSetCurrencyLocale_String_String() {
+		LOG.info("setCurrencyLocale");
+		String language = "ko";
+		String country = "KR";
+		OdfNumberCurrencyStyle instance = new OdfNumberCurrencyStyle(dom,
+			"\u20a9", "\u20a9#,##0.00", "kstyle"); // korean Won
+		NumberCurrencySymbolElement cSymbol;
+		instance.setCurrencyLocale(language,
+			country);
+		NodeList list = instance.getElementsByTagNameNS(
+			OdfDocumentNamespace.NUMBER.getUri(), "currency-symbol");
+		Assert.assertTrue("Has currency symbol", list.getLength() > 0);
+		cSymbol = (NumberCurrencySymbolElement) list.item(0);
+		Assert.assertEquals(language, cSymbol.getNumberLanguageAttribute());
+		Assert.assertEquals(country, cSymbol.getNumberCountryAttribute());
+	}
+
+	/**
+	 * Test of setCurrencyLocale method, of class OdfNumberCurrencyStyle.
+	 */
+	@Test
+	public void testSetCurrencyLocale_String() {
+		LOG.info("setCurrencyLocale");
+		String locale = "ko-KR";
+		String language = "ko";
+		String country = "KR";
+		NumberCurrencySymbolElement cSymbol;
+		NodeList list;
+
+		// first, test setting with a combined language/country
+		OdfNumberCurrencyStyle instance = new OdfNumberCurrencyStyle(dom,
+			"\u20a9", "\u20a9#,##0.00", "kstyle");
+		instance.setCurrencyLocale(locale);
+		list = instance.getElementsByTagNameNS(
+			OdfDocumentNamespace.NUMBER.getUri(), "currency-symbol");
+		Assert.assertTrue("Has currency symbol", list.getLength() > 0);
+		cSymbol = (NumberCurrencySymbolElement) list.item(0);
+		Assert.assertEquals(language, cSymbol.getNumberLanguageAttribute());
+		Assert.assertEquals(country, cSymbol.getNumberCountryAttribute());
+
+		// then, a language only
+		instance = new OdfNumberCurrencyStyle(dom,
+			"\u20a9", "\u20a9#,##0.00", "kstyle");
+		instance.setCurrencyLocale(language);
+		list = instance.getElementsByTagNameNS(
+			OdfDocumentNamespace.NUMBER.getUri(), "currency-symbol");
+		Assert.assertTrue("Has currency symbol", list.getLength() > 0);
+		cSymbol = (NumberCurrencySymbolElement) list.item(0);
+		Assert.assertEquals(language, cSymbol.getNumberLanguageAttribute());
+
+	}
+
+	/**
+	 * Test of setMapPositive method, of class OdfNumberCurrencyStyle.
+	 */
+	@Test
+	public void testSetMapPositive() {
+		Node node;
+		StyleMapElement mapNode;
+
+		LOG.info("setMapPositive");
+		String mapName = "positiveMap";
+		OdfNumberCurrencyStyle instance = new OdfNumberCurrencyStyle(dom,
+				"$", "#0", "fstyle");
+		instance.setMapPositive(mapName);
+		node = instance.getLastChild();
+		Assert.assertNotNull(node);
+		Assert.assertTrue(node instanceof StyleMapElement);
+		mapNode = (StyleMapElement) node;
+		Assert.assertEquals("value()>0", mapNode.getStyleConditionAttribute());
+		Assert.assertEquals(mapName, mapNode.getStyleApplyStyleNameAttribute());
+	}
+
+	/**
+	 * Test of setMapNegative method, of class OdfNumberCurrencyStyle.
+	 */
+	@Test
+	public void testSetMapNegative() {
+		Node node;
+		StyleMapElement mapNode;
+
+		LOG.info("setMapNegative");
+		String mapName = "negativeMap";
+		OdfNumberCurrencyStyle instance = new OdfNumberCurrencyStyle(dom,
+				"$", "#0", "fstyle");
+		instance.setMapNegative(mapName);
+		node = instance.getLastChild();
+		Assert.assertNotNull(node);
+		Assert.assertTrue(node instanceof StyleMapElement);
+		mapNode = (StyleMapElement) node;
+		Assert.assertEquals("value()<0", mapNode.getStyleConditionAttribute());
+		Assert.assertEquals(mapName, mapNode.getStyleApplyStyleNameAttribute());
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfDateStyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfDateStyleTest.java
new file mode 100644
index 0000000..7cfd70d
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfDateStyleTest.java
@@ -0,0 +1,264 @@
+/************************************************************************
+ *
+ * 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.number;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author J David Eisenberg
+ */
+public class OdfDateStyleTest {
+	private static final Logger LOG = Logger.getLogger(OdfDateStyleTest.class.getName());
+	OdfSpreadsheetDocument doc;
+	OdfFileDom dom;
+
+    public OdfDateStyleTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	Logger.getLogger(OdfDateStyleTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of buildFromFormat method, of class OdfDateStyle.
+     */
+    /*
+    G  	Era designator       AD
+y 	Year                 1996; 96
+Q	Quarter in Year      2 -- not in Java; in ODF
+M 	Month in year        July; Jul; 07
+w 	Week in year         27
+d 	Day in month         10
+E 	Day in week          Tuesday; Tue
+a 	Am/pm marker         PM
+H 	Hour in day (0-23)   0
+h 	Hour in am/pm (1-12) -- depends on AM/PM marker
+m 	Minute in hour       30
+s 	Second in minute     55
+        */
+    @Test
+    public void testBuildFromFormat() {
+		int i;
+		int j;
+		String[] formatTest = {
+			"d-M-yy GGGG",
+			"dd/MM/yyyy GG",
+            "E, MMM d, yy",
+			"EEE, MMMM dd, yyyy",
+			"EEEE, MMM dd",
+			"QQQ' quarter, 'yy",
+			"dd-MM-yyyy hh:mm:ss a"
+		};
+
+		String[] expectedFormat = {
+				"d-M-yy GGGG",
+				"dd/MM/yyyy GG",
+	            "EEE, MMM d, yy",
+				"EEE, MMMM dd, yyyy",
+				"EEEE, MMM dd",
+				"QQQ quarter, yy",
+				"dd-MM-yyyy hh:mm:ss a"
+		};
+		/*
+		 * starts with "T" if a text node (followed by content)
+		 * starts with "E" if an element, followed by:
+		 *    S or L for short or long node, anything else if not applicable
+		 * the month element can be either numeric or text format,
+		 * so I am using monthN and monthT to specify which one is desired.
+		 */
+		String[][] expected = {
+			{"ESday", "T-", "ESmonthN", "T-", "ESyear",
+				 "T ", "ELera"}, // "d-M-yy GGGG",
+			{"ELday", "T/", "ELmonthN", "T/", "ELyear", "T ", "ESera"}, // "dd/MM/yyyy GG",
+			{"ESday-of-week", "T, ", "ESmonthT", "T ",
+				"ESday", "T, ", "ESyear"}, // "E, MMM d, yy",
+			{"ESday-of-week", "T, ", "ELmonthT", "T ",
+				"ELday", "T, ", "ELyear"}, // "EEE, MMMM dd, yyyy",
+			{"ELday-of-week", "T, ", "ESmonthT", "T ",
+				"ELday"}, // "EEEE, MMM dd",
+			{"ELquarter", "T quarter, ", "ESyear"}, // "QQQ quarter, yy",
+			{"ELday", "T-", "ELmonthN", "T-",
+				"ELyear", "T ", "ELhours", "T:",
+				"ELminutes", "T:", "ELseconds", "T ",
+				"E-am-pm"} // "dd-MM-yyyy hh:mm:ss a"
+		};
+
+        LOG.info("buildFromFormat");
+        OdfNumberDateStyle instance = null;
+
+        for (i = 0; i < formatTest.length; i++)
+		{
+			LOG.info("Date format: " + formatTest[i]);
+			instance = new OdfNumberDateStyle(dom,
+				formatTest[i], "fstyle");
+			Assert.assertNotNull(instance.getFirstChild());
+
+			checkNodes(instance.getFirstChild(), expected[i], 0);
+			Assert.assertEquals(expectedFormat[i], instance.getFormat());
+		}
+	}
+
+	private void checkNodes(Node node, String[] expected, int position)
+	{
+		char expectedType;
+		String expectedValue;
+
+		while (node != null)
+		{
+			Assert.assertTrue("More nodes than specifiers",
+				position < expected.length);
+			expectedType = expected[position].charAt(0);
+			expectedValue = expected[position].substring(1);
+
+			switch (expectedType)
+			{
+				case 'T':
+					checkNumberText("text", expectedValue, node);
+					position++;
+					break;
+				case 'E':
+					checkElement(expectedValue, node);
+					position++;
+					if (node.hasChildNodes())
+					{
+						node = node.getFirstChild();
+						checkNodes(node, expected, position);
+					}
+					break;
+			}
+			node = node.getNextSibling();
+		}
+    }
+
+   	/**
+	 * Check that the node is an element with the given name
+	 * with the expected text content.
+	 * @param elementName expected element name (in number: namespace)
+	 * @param expected expected text content
+	 * @param node the Node to be examined
+	 */
+	private void checkNumberText(String elementName, String expected, Node node)
+	{
+		Node childNode;
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.NUMBER.getUri(),
+			node.getNamespaceURI());
+		Assert.assertEquals(elementName, node.getLocalName());
+		childNode = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, childNode.getNodeType());
+		Assert.assertEquals(expected, childNode.getNodeValue());
+	}
+
+	/**
+	 * Check to see that the given Node is an element with the expected name
+	 * and the appropriate number:style of short or long.
+	 * For the month specifier, the element name ends with N if it's numeric
+	 * and T if it's textual.
+	 * @param expectedName name element should have
+	 * @param expectedLong 'S' for short, 'L' for long, ' ' if not applicable
+	 * @param node the node to be examined
+	 */
+	private void checkElement(String expectedName, Node node)
+	{
+		char expectedLong;
+		String longShort;
+		String monthTextual = null;
+
+		expectedLong = expectedName.charAt(0);
+		expectedName = expectedName.substring(1);
+		if (expectedName.equals("monthN"))
+		{
+			expectedName = "month";
+			monthTextual = "false";
+		}
+		else if (expectedName.equals("monthT"))
+		{
+			expectedName = "month";
+			monthTextual = "true";
+		}
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(expectedName, node.getLocalName());
+
+		if (expectedLong == 'S' || expectedLong == 'L')
+		{
+			if (expectedLong == 'S')
+			{
+				longShort = "short";
+			}
+			else
+			{
+				longShort = "long";
+			}
+			Assert.assertEquals("Element is " + expectedName, longShort,
+				((Element)node).getAttributeNS(OdfDocumentNamespace.NUMBER.getUri(),
+				"style"));
+		}
+
+		if (monthTextual != null)
+		{
+			Assert.assertEquals(monthTextual,
+				((Element) node).getAttributeNS(OdfDocumentNamespace.NUMBER.getUri(),
+				"textual")
+			);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfNumberStyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfNumberStyleTest.java
new file mode 100644
index 0000000..a12ca2a
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfNumberStyleTest.java
@@ -0,0 +1,274 @@
+/************************************************************************
+ *
+ * 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.number;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author J David Eisenberg
+ */
+public class OdfNumberStyleTest {
+	private static final Logger LOG = Logger.getLogger(OdfNumberStyleTest.class.getName());
+	OdfSpreadsheetDocument doc;
+	OdfFileDom dom;
+
+    public OdfNumberStyleTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	Logger.getLogger(OdfNumberStyleTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+	/**
+	 * Test of buildFromFormat method, of class OdfNumberStyle.
+	 */
+	@Test
+	public void testBuildFromFormat() {
+		int n;
+		String[] formatTest = {
+			"##",
+			"#0",
+			"#00",
+			"#,###",
+			"#,##0",
+			"#,##0.00",
+			"before:##0",
+			"##0:after",
+			"before:##0:after"
+		};
+
+		String[] expectedFormat = {
+				"#",
+				"#0",
+				"#00",
+				"#,###",
+				"#,##0",
+				"#,##0.00",
+				"before:#0",
+				"#0:after",
+				"before:#0:after"
+		};
+		int[] expectedNumberDecimalPlaces = {
+				0,
+				0,
+				0,
+				0,
+				0,
+				2,
+				0,
+				0,
+				0
+		};
+		/*
+		 * Expected elements.
+         * t -- <number:text> with following text
+         * n -- <number:number> with minimum digits, decimal places,
+         *      and grouping (T or F)
+		 */
+		String[][] expected = {
+			{ "n00F" }, // ##
+			{ "n10F"}, // #0
+			{ "n20F" }, // #00
+			{ "n00T" }, // #,###
+			{ "n10T" }, // #,##0
+			{ "n12T" }, // #,##0.00
+			{ "tbefore:", "n10F" },
+			{ "n10F", "t:after" },
+			{ "tbefore:", "n10F", "t:after"},
+		};
+		LOG.info("buildFromFormat");
+		OdfNumberStyle instance = null;
+		char expectedType;
+        String expectedValue;
+		Node node;
+
+		for (int i = 0; i < formatTest.length; i++)
+		{
+			LOG.info("Number format: " + formatTest[i]);
+			instance = new OdfNumberStyle(dom,
+				formatTest[i], "fstyle");
+			Assert.assertNotNull(instance);
+
+			node = instance.getFirstChild();
+
+			for (int j = 0; j < expected[i].length; j++)
+			{
+				expectedType = expected[i][j].charAt(0);
+				expectedValue = expected[i][j].substring(1);
+				switch (expectedType)
+				{
+					case 't':
+						checkNumberText("text", expectedValue, node);
+						break;
+					case 'n':
+						checkNumberFormat(expectedValue, node);
+						break;
+				}
+				node = node.getNextSibling();
+				Assert.assertEquals(expectedFormat[i], instance.getFormat());
+				NumberNumberElement number = OdfElement.findFirstChildNode(NumberNumberElement.class, instance);
+				try {
+					Assert.assertEquals(expectedNumberDecimalPlaces[i], number
+							.getNumberDecimalPlacesAttribute().intValue());
+				} catch (Exception e) {
+					Assert.fail(e.getMessage());
+				}
+			}
+		}
+	}
+
+	/**
+	 * Check that the node is a <code>&lt;number:elementName&gt;</code> node
+	 * with the expected text content.
+     * @param elementName the local name of the expected element
+	 * @param expected expected text content
+	 * @param node the Node to be examined
+	 */
+	private void checkNumberText(String elementName, String expected, Node node)
+	{
+		Node childNode;
+		// Check for <number:text> with expected content
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.NUMBER.getUri(),
+			node.getNamespaceURI());
+		Assert.assertEquals(elementName, node.getLocalName());
+		childNode = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, childNode.getNodeType());
+		Assert.assertEquals(expected, childNode.getNodeValue());
+	}
+	/**
+	 * Check to see that the node is <code>&lt;number:number&gt;</code> and
+	 * meets the expected specifications.
+	 *
+	 * The expected specifications is a string of three characters:
+	 * min # of digits, # of decimal places, grouped (T/F)
+	 * @param expected expected specification for <code>&lt;number:number&gt;</code>
+	 * @param node the node to be validated
+	 */
+	private void checkNumberFormat(String expected, Node node)
+	{
+		int nDigits = Integer.parseInt(expected.substring(0,1));
+		int nDecimals = Integer.parseInt(expected.substring(1,2));
+		boolean grouped = (expected.charAt(2) == 'T');
+		boolean nodeGrouped;
+		NumberNumberElement number;
+
+		Assert.assertTrue("node is OdfNumber", node instanceof NumberNumberElement);
+		number = (NumberNumberElement) node;
+
+		// check number of digits and decimals
+		Assert.assertEquals(nDigits, (long) number.getNumberMinIntegerDigitsAttribute());
+
+		if (nDecimals > 0)
+		{
+			Assert.assertEquals(nDecimals, (long)number.getNumberDecimalPlacesAttribute());
+		}
+
+		// check if grouping is set properly
+		nodeGrouped = (number.getNumberGroupingAttribute() == null) ? false :
+			number.getNumberGroupingAttribute().booleanValue();
+		Assert.assertTrue("Grouping", grouped == nodeGrouped);
+	}
+
+	/**
+	 * Test of setMapPositive method, of class NumberNumberElementNumberStyle.
+	 */
+	@Test
+	public void testSetMapPositive() {
+		Node node;
+		StyleMapElement mapNode;
+
+		LOG.info("setMapPositive");
+		String mapName = "positiveMap";
+		OdfNumberStyle instance = new OdfNumberStyle(dom,
+				"#0", "fstyle");
+		instance.setMapPositive(mapName);
+		node = instance.getLastChild();
+		Assert.assertNotNull(node);
+		Assert.assertTrue(node instanceof StyleMapElement);
+		mapNode = (StyleMapElement) node;
+		Assert.assertEquals("value()>0", mapNode.getStyleConditionAttribute());
+		Assert.assertEquals(mapName, mapNode.getStyleApplyStyleNameAttribute());
+	}
+
+	/**
+	 * Test of setMapNegative method, of class NumberNumberElementNumberStyle.
+	 */
+	@Test
+	public void testSetMapNegative() {
+		Node node;
+		StyleMapElement mapNode;
+
+		LOG.info("setMapNegative");
+		String mapName = "negativeMap";
+		OdfNumberStyle instance = new OdfNumberStyle(dom,
+				"#0", "fstyle");
+		instance.setMapNegative(mapName);
+		node = instance.getLastChild();
+		Assert.assertNotNull(node);
+		Assert.assertTrue(node instanceof StyleMapElement);
+		mapNode = (StyleMapElement) node;
+		Assert.assertEquals("value()<0", mapNode.getStyleConditionAttribute());
+		Assert.assertEquals(mapName, mapNode.getStyleApplyStyleNameAttribute());
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfPercentageStyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfPercentageStyleTest.java
new file mode 100644
index 0000000..6ef222f
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfPercentageStyleTest.java
@@ -0,0 +1,163 @@
+/************************************************************************
+ *
+ * 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.number;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.element.style.StyleMapElement;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;
+import org.w3c.dom.Node;
+
+/**
+ * @author Daisy
+ *
+ */
+public class OdfPercentageStyleTest {
+	private static final Logger LOG = Logger.getLogger(OdfPercentageStyleTest.class.getName());
+	OdfSpreadsheetDocument doc;
+	OdfFileDom dom;
+
+    public OdfPercentageStyleTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+	/**
+	 * Test of buildFromFormat method, of class OdfNumberStyle.
+	 */
+	@Test
+	public void testBuildFromFormat() {
+		int n;
+		String[] formatTest = {
+			"##%",
+			"#0%",
+			"#00%",
+			"#,###%",
+			"#,##0%",
+			"#,##0.00%",
+			"before:##0%",
+			"##0%:after",
+			"before:##0%:after"
+		};
+
+		String[] expectedFormat = {
+				"#%",
+				"#0%",
+				"#00%",
+				"#,###%",
+				"#,##0%",
+				"#,##0.00%",
+				"before:#0%",
+				"#0%:after",
+				"before:#0%:after"
+		};
+
+		LOG.info("buildFromFormat");
+		OdfNumberPercentageStyle instance = null;
+
+		for (int i = 0; i < formatTest.length; i++)
+		{
+			LOG.info("Number format: " + formatTest[i]);
+			instance = new OdfNumberPercentageStyle(dom,
+				formatTest[i], "fstyle");
+			Assert.assertNotNull(instance);
+
+			Assert.assertEquals(expectedFormat[i], instance.getFormat());
+		}
+	}
+
+	/**
+	 * Test of setMapPositive method, of class OdfNumberNumberStyle.
+	 */
+	@Test
+	public void testSetMapPositive() {
+		Node node;
+		StyleMapElement mapNode;
+
+		LOG.info("setMapPositive");
+		String mapName = "positiveMap";
+		OdfNumberPercentageStyle instance = new OdfNumberPercentageStyle(dom,
+				"#0", "fstyle");
+		instance.setMapPositive(mapName);
+		node = instance.getLastChild();
+		Assert.assertNotNull(node);
+		Assert.assertTrue(node instanceof StyleMapElement);
+		mapNode = (StyleMapElement) node;
+		Assert.assertEquals("value()>0", mapNode.getStyleConditionAttribute());
+		Assert.assertEquals(mapName, mapNode.getStyleApplyStyleNameAttribute());
+	}
+
+	/**
+	 * Test of setMapNegative method, of class OdfNumberNumberStyle.
+	 */
+	@Test
+	public void testSetMapNegative() {
+		Node node;
+		StyleMapElement mapNode;
+
+		LOG.info("setMapNegative");
+		String mapName = "negativeMap";
+		OdfNumberPercentageStyle instance = new OdfNumberPercentageStyle(dom,
+				"#0", "fstyle");
+		instance.setMapNegative(mapName);
+		node = instance.getLastChild();
+		Assert.assertNotNull(node);
+		Assert.assertTrue(node instanceof StyleMapElement);
+		mapNode = (StyleMapElement) node;
+		Assert.assertEquals("value()<0", mapNode.getStyleConditionAttribute());
+		Assert.assertEquals(mapName, mapNode.getStyleApplyStyleNameAttribute());
+	}
+	
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfTimeStyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfTimeStyleTest.java
new file mode 100644
index 0000000..a284d10
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/number/OdfTimeStyleTest.java
@@ -0,0 +1,231 @@
+/************************************************************************
+ *
+ * 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.number;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author J David Eisenberg
+ */
+public class OdfTimeStyleTest {
+	private static final Logger LOG = Logger.getLogger(OdfTimeStyleTest.class.getName());
+	OdfSpreadsheetDocument doc;
+	OdfFileDom dom;
+
+    public OdfTimeStyleTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of buildFromFormat method, of class OdfDateStyle.
+     */
+    /*
+a 	Am/pm marker         PM
+H 	Hour in day (0-23)   0
+h 	Hour in am/pm (1-12) -- depends on AM/PM marker
+m 	Minute in hour       30
+s 	Second in minute     55
+        */
+    @Test
+    public void testBuildFromFormat() {
+		int i;
+		int j;
+		String[] formatTest = {
+			"hh:mm:ss a",
+			"HH:mm:ss"
+		};
+
+		/*
+		 * starts with "T" if a text node (followed by content)
+		 * starts with "E" if an element, followed by:
+		 *    S or L for short or long node, anything else if not applicable
+		 */
+		String[][] expected = {
+			{"ELhours", "T:",
+				"ELminutes", "T:", "E-seconds", "T ",
+				"E-am-pm"}, // "hh:mm:ss a"
+			{"ELhours", "T:",
+				"ELminutes", "T:", "ELseconds"} // "HH:mm:ss"
+		};
+
+        LOG.info("buildFromFormat");
+        OdfNumberTimeStyle instance = null;
+
+        for (i = 0; i < formatTest.length; i++)
+		{
+			LOG.info("Time format: " + formatTest[i]);
+			instance = new OdfNumberTimeStyle(dom,
+				formatTest[i], "fstyle");
+			Assert.assertNotNull(instance.getFirstChild());
+
+			checkNodes(instance.getFirstChild(), expected[i], 0);
+		}
+	}
+
+	private void checkNodes(Node node, String[] expected, int position)
+	{
+		char expectedType;
+		String expectedValue;
+
+		while (node != null)
+		{
+			Assert.assertTrue("More nodes than specifiers",
+				position < expected.length);
+			expectedType = expected[position].charAt(0);
+			expectedValue = expected[position].substring(1);
+
+			switch (expectedType)
+			{
+				case 'T':
+					checkNumberText("text", expectedValue, node);
+					position++;
+					break;
+				case 'E':
+					checkElement(expectedValue, node);
+					position++;
+					if (node.hasChildNodes())
+					{
+						node = node.getFirstChild();
+						checkNodes(node, expected, position);
+					}
+					break;
+			}
+			node = node.getNextSibling();
+		}
+    }
+
+   	/**
+	 * Check that the node is an element with the given name
+	 * with the expected text content.
+	 * @param elementName expected element name (in number: namespace)
+	 * @param expected expected text content
+	 * @param node the Node to be examined
+	 */
+	private void checkNumberText(String elementName, String expected, Node node)
+	{
+		Node childNode;
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.NUMBER.getUri(),
+			node.getNamespaceURI());
+		Assert.assertEquals(elementName, node.getLocalName());
+		childNode = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, childNode.getNodeType());
+		Assert.assertEquals(expected, childNode.getNodeValue());
+	}
+
+	/**
+	 * Check to see that the given Node is an element with the expected name
+	 * and the appropriate number:style of short or long.
+	 * For the month specifier, the element name ends with N if it's numeric
+	 * and T if it's textual.
+	 * @param expectedName name element should have
+	 * @param expectedLong 'S' for short, 'L' for long, ' ' if not applicable
+	 * @param node the node to be examined
+	 */
+	private void checkElement(String expectedName, Node node)
+	{
+		char expectedLong;
+		String longShort;
+		String monthTextual = null;
+
+		expectedLong = expectedName.charAt(0);
+		expectedName = expectedName.substring(1);
+		if (expectedName.equals("monthN"))
+		{
+			expectedName = "month";
+			monthTextual = "false";
+		}
+		else if (expectedName.equals("monthT"))
+		{
+			expectedName = "month";
+			monthTextual = "true";
+		}
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(expectedName, node.getLocalName());
+
+		if (expectedLong == 'S' || expectedLong == 'L')
+		{
+			if (expectedLong == 'S')
+			{
+				longShort = "short";
+			}
+			else
+			{
+				longShort = "long";
+			}
+			Assert.assertEquals("Element is " + expectedName, longShort,
+				((Element)node).getAttributeNS(OdfDocumentNamespace.NUMBER.getUri(),
+				"style"));
+		}
+
+		if (monthTextual != null)
+		{
+			Assert.assertEquals(monthTextual,
+				((Element) node).getAttributeNS(OdfDocumentNamespace.NUMBER.getUri(),
+				"textual")
+			);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableCellRangeTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableCellRangeTest.java
new file mode 100644
index 0000000..6fa3c17
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableCellRangeTest.java
@@ -0,0 +1,240 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfWhitespaceProcessor;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class TableCellRangeTest {
+
+	final String filename = "TestSpreadsheetTable";
+	final String odtfilename = "TestTextTable";
+	OdfSpreadsheetDocument odsdoc;
+	OdfTextDocument odtdoc;
+	OdfTable odsTable, odtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			odsdoc = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(filename + ".ods"));
+			odtdoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(odtfilename + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testTextCellMerge() {
+		//get cell range, then merge
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		//get the first two cell
+		OdfTableCellRange cellRange = table1.getCellRangeByPosition(0, 0, 1, 0);
+		cellRange.merge();
+		OdfTableCell cell = cellRange.getCellByPosition(0, 0);
+		Assert.assertEquals(cell.getDisplayText(), "cell1cell2");
+		saveodt("MergeTwoCell");
+		try {
+			OdfTextDocument saveddoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(odtfilename + "MergeTwoCell.odt"));
+			OdfTable savedTable1 = saveddoc.getTableByName("Table1");
+			//get the cell range which the first cell is the covered cell.
+			//so the cell range will be enlarged
+			OdfTableCellRange savedCellRange = savedTable1.getCellRangeByPosition(1, 0, 2, 0);
+			savedCellRange.merge();
+			Assert.assertTrue(savedCellRange.getColumnNumber() == 3);
+			OdfTableCell savedCell = savedCellRange.getCellByPosition(0, 0);
+			NodeList paraList = savedCell.getOdfElement().getChildNodes();
+			OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+			Assert.assertTrue(paraList.item(2) instanceof OdfTextParagraph);
+			Assert.assertEquals(textProcessor.getText(paraList.item(2)),"0.00");
+			saveddoc.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeCoveredCell.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			OdfTextDocument saveddoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(odtfilename + "MergeTwoCell.odt"));
+			OdfTable savedTable1 = saveddoc.getTableByName("Table1");
+			//get the cell range which the first cell is the covered cell.
+			//so the cell range will be enlarged
+			OdfTableCellRange savedCellRange = savedTable1.getCellRangeByPosition(0, 0, 0, 1);
+			savedCellRange.merge();
+			Assert.assertTrue(savedCellRange.getColumnNumber() == 2);
+			Assert.assertTrue(savedCellRange.getRowNumber() == 2);
+			OdfTableCell savedCell = savedCellRange.getCellByPosition(0, 1);
+			Assert.assertTrue(savedCell.getOdfElement() instanceof TableCoveredTableCellElement);
+			saveddoc.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeCoveredCell2.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/////////////////////////////////////////
+	//issue: removeColumnByIndex removeRowByIndex removeCellByIndex
+	@Test
+	public void testTextTableMerge() {
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		//merge whole table
+		OdfTableCellRange cellRange = table1.getCellRangeByPosition(0, 0, table1.getColumnCount() - 1, table1.getRowCount() - 1);
+		cellRange.merge();
+		Assert.assertEquals(table1.getColumnCount(), 1);
+		Assert.assertEquals(table1.getRowCount(), 1);
+		saveodt("MergeTable");
+	}
+
+	@Test
+	public void testTextColumnMerge() {
+		//merge first column
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		OdfTableCellRange firstColumn = table1.getCellRangeByPosition(0, 0, 0, table1.getRowCount() - 1);
+		firstColumn.merge();
+		OdfTableCell cell = firstColumn.getCellByPosition(0, 2);
+		OdfTableCell firstCell = firstColumn.getCellByPosition(0, 0);
+		Assert.assertTrue(cell.getOwnerTableCell().equals(firstCell));
+		saveodt("MergeFirstColumn");
+		try {
+			OdfTextDocument saveddoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(odtfilename + "MergeFirstColumn.odt"));
+			OdfTable savedTable = saveddoc.getTableByName("Table1");
+			OdfTableCellRange firstTwoColumn = savedTable.getCellRangeByPosition(0, 0, 1, savedTable.getRowCount() - 1);
+			firstTwoColumn.merge();
+			OdfTableCell cell1 = firstTwoColumn.getCellByPosition(0, 2);
+			OdfTableCell firstCell1 = firstTwoColumn.getCellByPosition(0, 0);
+			Assert.assertTrue(cell1.getOwnerTableCell().equals(firstCell1));
+			saveddoc.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeFirstTwoColumn.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testTextRowMerge() {
+		//merge first two row
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		int rowCount = table1.getRowCount();
+		OdfTableCellRange firstTwoRow = table1.getCellRangeByPosition(0, 0, table1.getColumnCount() - 1, 1);
+		firstTwoRow.merge();
+		Assert.assertTrue(rowCount == (table1.getRowCount() + 1));
+		saveodt("MergeFirstTwoRow");
+	}
+
+	@Test
+	public void testSpreadSheetMerge() {
+		//get cell range, set name
+		OdfTable sheet1 = odsdoc.getTableByName("Sheet1");
+		OdfTableCellRange cellRange = sheet1.getCellRangeByPosition(28, 0, 28, 5);
+		cellRange.setCellRangeName("test");
+		cellRange.merge();
+		OdfTableCellRange cellRange1 = sheet1.getCellRangeByPosition("$E1", "$E6");
+		cellRange1.setCellRangeName("TimeCellRange");
+		cellRange1.merge();
+
+		saveods("CellRangeName");
+		try {
+			OdfSpreadsheetDocument saveddos = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(filename + "CellRangeName.ods"));
+			OdfTable savedSheet = saveddos.getTableByName("Sheet1");
+			OdfTableCellRange namedCellRange = savedSheet.getCellRangeByName("TimeCellRange");
+			OdfTableCell cell = namedCellRange.getCellByPosition("A1");
+			Assert.assertTrue(cell.getRowSpannedNumber() == 6);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testMergeExpandCellRange() {
+		try {
+			OdfSpreadsheetDocument ods = OdfSpreadsheetDocument
+					.newSpreadsheetDocument();
+			// the doc contain the table which only have one column and one row
+			// element
+			OdfTable table = ods.getTableByName("Sheet1");
+			int nCols = table.getColumnCount();
+			int nRows = table.getRowCount();
+			Assert.assertTrue(nCols == 1);
+			Assert.assertTrue(nRows == 1);
+			OdfTableCellRange cellRange = table.getCellRangeByPosition("A1","E1");
+			OdfTableCell cell = table.getCellByPosition("A1");
+			cell.setStringValue("Merge A1:E1");
+			cellRange.merge();
+			OdfTable table2 = OdfTable.newTable(ods, 1, 1);
+			table2.setTableName("Sheet2");
+			OdfTableCellRange cellRange2 = table2.getCellRangeByPosition("A1","F3");
+			OdfTableCell cell2 = table2.getCellByPosition("A1");
+			cell2.setStringValue("Merge A1:F3");
+			cellRange2.merge();
+			ods.save(ResourceUtilities.newTestOutputFile(filename + "MergeExpandCell.ods"));
+			table = ods.getTableByName("Sheet1");
+			Assert.assertTrue(table.getColumnCount() == 5);
+			Assert.assertTrue(table.getRowCount() == 1);
+			table = ods.getTableByName("Sheet2");
+			Assert.assertTrue(table.getColumnCount() == 6);
+			Assert.assertTrue(table.getRowCount() == 3);
+			OdfTextDocument odt = OdfTextDocument.newTextDocument();
+			OdfTable swTable = OdfTable.newTable(odt, 1, 5);
+			OdfTableCellRange swCellRange = swTable.getCellRangeByPosition("A1", "E2");
+			OdfTableCell swCell = swTable.getCellByPosition("E2");
+			swCell.setStringValue("Merge A1:E2");
+			swCellRange.merge();
+			odt.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeTextExpandCell.odt"));
+			swTable = odt.getTableList().get(0);
+			Assert.assertTrue(swTable.getColumnCount() == 1);
+			Assert.assertTrue(swTable.getRowCount() == 1);
+		} catch (Exception ex) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log( Level.SEVERE, ex.getMessage(), ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+
+	}
+
+	private void saveods(String name) {
+		try {
+			odsdoc.save(ResourceUtilities.newTestOutputFile(filename + name + ".ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	private void saveodt(String name) {
+		try {
+			odtdoc.save(ResourceUtilities.newTestOutputFile(odtfilename + name + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableCellTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableCellTest.java
new file mode 100644
index 0000000..d791ee4
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableCellTest.java
@@ -0,0 +1,1072 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.text.DecimalFormatSymbols;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+public class TableCellTest {
+
+	final static String SAMPLE_SPREADSHEET = "TestSpreadsheetTable";
+	final static String SAMPLE_STYLE_SPREADSHEET = "TestSpreadsheetStyleTable";
+	final static String SAMPLE_TEXT = "TestTextTable";
+	OdfSpreadsheetDocument odsdoc, odsstyle;
+	OdfTextDocument odtdoc;
+	OdfTable odsTable, odtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			odsdoc = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(SAMPLE_SPREADSHEET
+					+ ".ods"));
+			odtdoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(SAMPLE_TEXT + ".odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	private void saveods() {
+		try {
+			odsdoc.save(ResourceUtilities.newTestOutputFile(SAMPLE_SPREADSHEET
+					+ "Output.ods"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	private void saveodt() {
+		try {
+			odtdoc.save(ResourceUtilities.newTestOutputFile(SAMPLE_TEXT
+					+ "Output.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@Test
+	public void testGetIndexInRowColumn() {
+		int rowindex = 2, columnindex = 1;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell cell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertEquals(rowindex, cell.getRowIndex());
+		Assert.assertEquals(columnindex, cell.getColumnIndex());
+
+		OdfTable table3 = odtdoc.getTableByName("Table3");
+		OdfTableCell cell1 = table.getCellByPosition(0, 1);
+		Assert.assertEquals(1, cell1.getRowIndex());
+		Assert.assertEquals(0, cell1.getColumnIndex());
+	}
+
+	@Test
+	public void testGetSetHoriAlignment() {
+		int rowindex = 3, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		String align = fcell.getHorizontalAlignment();
+		Assert.assertEquals("center", align);
+
+		fcell.setHorizontalAlignment(null);
+		String newAlign = fcell.getHorizontalAlignment();
+		Assert.assertEquals(null, newAlign);
+
+		fcell.setHorizontalAlignment("start");
+		align = fcell.getHorizontalAlignment();
+		Assert.assertEquals("start", align);
+
+		// "left" and "right" should be mapped as "start" and "end".
+		fcell.setHorizontalAlignment("left");
+		align = fcell.getHorizontalAlignment();
+		Assert.assertEquals("start", align);
+		fcell.setHorizontalAlignment("right");
+		align = fcell.getHorizontalAlignment();
+		Assert.assertEquals("end", align);
+		saveods();
+
+		OdfSpreadsheetDocument ods;
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell = tbl.getCellByPosition(0, 0);
+			String horizonAlignment = cell.getHorizontalAlignment();
+			Assert.assertEquals(null, horizonAlignment);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetVertAlignment() {
+		int rowindex = 3, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		String align = fcell.getVerticalAlignment();
+		Assert.assertEquals("top", align);
+
+		fcell.setVerticalAlignment(null);
+		String newAlign = fcell.getVerticalAlignment();
+		Assert.assertEquals(null, newAlign);
+
+		fcell.setVerticalAlignment("bottom");
+		align = fcell.getVerticalAlignment();
+		Assert.assertEquals("bottom", align);
+		saveods();
+		OdfSpreadsheetDocument ods;
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell = tbl.getCellByPosition(0, 0);
+			String verticalAlignment = cell.getVerticalAlignment();
+			Assert.assertEquals(null, verticalAlignment);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetValueType() {
+		int rowindex = 3, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setValueType(null);
+		} catch (IllegalArgumentException ie) {
+			if ("type shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		fcell.setValueType("date");
+		String valueType = fcell.getValueType();
+		Assert.assertEquals("date", valueType);
+		saveods();
+
+		OdfSpreadsheetDocument ods;
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell = tbl.getCellByPosition(0, 0);
+			valueType = cell.getValueType();
+			Assert.assertEquals(null, valueType);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetWrapOption() {
+		int rowindex = 5, columnindex = 8;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		boolean wrap = fcell.isTextWrapped();
+		Assert.assertEquals(true, wrap);
+
+		fcell.setTextWrapped(false);
+		wrap = fcell.isTextWrapped();
+		Assert.assertEquals(false, wrap);
+		saveods();
+	}
+
+	@Test
+	public void testGetSetTextValue() {
+		int rowindex = 5, columnindex = 8;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		String text = fcell.getDisplayText();
+		Assert.assertEquals("this is a big cell with a big table", text);
+
+		fcell.setDisplayText("changed");
+		text = fcell.getDisplayText();
+		Assert.assertEquals("changed", text);
+		// reproduce bug 150.
+		fcell.setDisplayText(null);
+		text = fcell.getDisplayText();
+		Assert.assertEquals("", text);
+		fcell.setDisplayText(null, "automatic7777");
+		text = fcell.getDisplayText();
+		Assert.assertEquals("", text);
+		saveods();
+
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		OdfTableCell fcell2 = table1.getCellByPosition(0, 1);
+		text = fcell2.getDisplayText();
+		Assert.assertEquals("Aabbccddee", text);
+	}
+
+	@Test
+	public void testSetGetFormat() {
+		int rowindex = 3, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		fcell.setFormatString("#0.0");
+		String displayvalue = fcell.getDisplayText();
+		Assert.assertEquals("300"
+				+ (new DecimalFormatSymbols()).getDecimalSeparator() + "0",
+				displayvalue);
+		String format = fcell.getFormatString();
+		Assert.assertEquals("#0.0", format);
+
+		OdfTableCell dcell = table.getCellByPosition(3, 2);
+		format = dcell.getFormatString();
+		Assert.assertEquals("MMM d, yy", format);
+
+		dcell.setFormatString("yyyy-MM-dd");
+		displayvalue = dcell.getDisplayText();
+		Assert.assertEquals("2008-12-23", displayvalue);
+
+		OdfTableCell pcell = table.getCellByPosition("B2");
+		format = pcell.getFormatString();
+		Assert.assertEquals("#0%", format);
+
+		pcell.setFormatString("#0.00%");
+		displayvalue = pcell.getDisplayText();
+		Assert.assertEquals("200"
+				+ (new DecimalFormatSymbols()).getDecimalSeparator() + "00%",
+				displayvalue);
+		try {
+			OdfTableRow tablerow = table.getRowByIndex(6);
+			OdfTableCell cell = tablerow.getCellByIndex(3);
+			Calendar currenttime = Calendar.getInstance();
+			cell.setDateValue(currenttime);
+			cell.setFormatString("yyyy-MM-dd");
+			tablerow = table.getRowByIndex(7);
+			cell = tablerow.getCellByIndex(3);
+			cell.setTimeValue(currenttime);
+			cell.setFormatString("HH:mm:ss");
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		saveods();
+
+		//test value type adapt function.
+		OdfSpreadsheetDocument ods;
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setDoubleValue(new Double(i));
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=sum(A1:A10)");
+			//contains '#' should be adapted as float.
+			cell.setFormatString("#,###");
+			Assert.assertEquals("float", cell.getValueType());
+			cell = tbl.getCellByPosition("A12");
+			cell.setFormula("=sum(A1:A10)");
+			//contains '0' should be adapted as float.
+			cell.setFormatString("0.00");
+			Assert.assertEquals("float", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setPercentageValue(0.1);
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=sum(A1:A10)");
+			//contains '%'should be adapted as percentage.
+			cell.setFormatString("###.0%");
+			Assert.assertEquals("percentage", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setDateValue(Calendar.getInstance());
+				cell.setFormatString("yyyy.MM.dd");
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=max(A1:A10)");
+			//contains 'y' 'M' 'd' should be adapted as date.
+			cell.setFormatString("yyyy.MM.dd");
+			Assert.assertEquals("date", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setTimeValue(Calendar.getInstance());
+				cell.setFormatString("yyyy.MM.dd HH:mm:ss");
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=max(A1:A10)");
+			//contains 'H' 'm' 's' should be adapted as time.
+			cell.setFormatString("yyyy.MM.dd HH:mm:ss");
+			Assert.assertEquals("time", cell.getValueType());
+			cell = tbl.getCellByPosition("A12");
+			cell.setFormula("=max(A1:A10)");
+			//contains 'H' 'm' 's' should be adapted as time.
+			cell.setFormatString("HH:mm:ss");
+			Assert.assertEquals("time", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void loadOutputSpreadsheet() {
+		try {
+			odsdoc = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(SAMPLE_SPREADSHEET
+					+ "Output.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@Test
+	public void testGetSetCellBackgroundColor() throws Exception {
+		int rowindex = 2, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setCellBackgroundColor("#ffffff");
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set color as DEFAULT_BACKGROUND_COLOR #FFFFFF
+		Assert.assertEquals("#ffffff", fcell.getCellBackgroundColorString());
+
+		Color expectedColor = Color.valueOf("#000000");
+		fcell.setCellBackgroundColor(expectedColor);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expectedColor.toString(), fcell.getCellBackgroundColor().toString());
+
+		OdfSpreadsheetDocument ods;
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			OdfTableCell cell = tbl.getCellByPosition(0, 0);
+			Color actualBackColor = cell.getCellBackgroundColor();
+			Assert.assertEquals("#ffffff", actualBackColor.toString());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetColumnSpannedNumber() throws Exception {
+		int rowindex = 2, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setColumnSpannedNumber(-2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set column spanned number as DEFAULT_COLUMN_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnSpannedNumber());
+
+		fcell.setColumnSpannedNumber(0);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set column spanned number as DEFAULT_COLUMN_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnSpannedNumber());
+
+		fcell.setColumnSpannedNumber(2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(2, fcell.getColumnSpannedNumber());
+	}
+
+	@Test
+	public void testGetSetRowSpannedNumber() throws Exception {
+		int rowindex = 2, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setRowSpannedNumber(-2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set row spanned number as DEFAULT_ROW_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getRowSpannedNumber());
+
+		fcell.setRowSpannedNumber(0);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set row spanned number as DEFAULT_ROW_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getRowSpannedNumber());
+
+		fcell.setRowSpannedNumber(2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(2, fcell.getRowSpannedNumber());
+
+	}
+
+	@Test
+	public void testGetSetColumnsRepeatedNumber() throws Exception {
+		int rowindex = 3, columnindex = 1;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setColumnsRepeatedNumber(-2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set columns repeated number as DEFAULT_COLUMNS_REPEATED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnsRepeatedNumber());
+
+		fcell.setColumnsRepeatedNumber(0);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set columns repeated number as DEFAULT_COLUMNS_REPEATED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnsRepeatedNumber());
+
+		fcell.setColumnsRepeatedNumber(2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(2, fcell.getColumnsRepeatedNumber());
+	}
+
+	@Test
+	public void testGetSetDateValue() {
+		int rowindex = 7, columnindex = 7;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setDateValue(null);
+		} catch (IllegalArgumentException ie) {
+			if ("date shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		Calendar expectedCalendar = new GregorianCalendar(2010, 1, 30);
+		fcell.setDateValue(expectedCalendar);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(0, fcell.getDateValue().compareTo(
+				expectedCalendar));
+	}
+
+	@Test
+	public void testGetSetStringValue() {
+		int rowindex = 6, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setStringValue(null);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals("", fcell.getStringValue());
+
+		String expectedString = "hello world";
+		fcell.setStringValue(expectedString);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expectedString, fcell.getStringValue());
+	}
+
+	@Test
+	public void testGetSetBooleanValue() {
+		int rowindex = 5, columnindex = 5;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean expected = false;
+		fcell.setBooleanValue(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertFalse(fcell.getBooleanValue());
+	}
+
+	@Test
+	public void testGetSetCurrencyValue() {
+		int rowindex = 5, columnindex = 5;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setValueType("currency");
+		fcell.setCurrencyFormat("$", "#,##0.00");
+		Double actualValue = fcell.getCurrencyValue();
+		Assert.assertNull(actualValue);
+
+		double expected = 100.00;
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setCurrencyValue(expected, null);
+		} catch (IllegalArgumentException ie) {
+			if ("currency shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		fcell.setCurrencyValue(expected, "USD");
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getCurrencyValue());
+	}
+
+	@Test
+	public void testGetSetCurrencyDesc() {
+		int rowindex = 1, columnindex = 2;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setCurrencyCode(null);
+		} catch (IllegalArgumentException ie) {
+			if ("Currency code of cell should not be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		String expected = "USD";
+		fcell.setCurrencyCode(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getCurrencyCode());
+	}
+
+	@Test
+	public void testGetSetPercentageValue() {
+		int rowindex = 5, columnindex = 5;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		double expected = 56.98;
+		fcell.setPercentageValue(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getPercentageValue());
+	}
+
+	@Test
+	public void testGetSetTimeValue() {
+		int rowindex = 0, columnindex = 4;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setTimeValue(null);
+		} catch (IllegalArgumentException ie) {
+			if ("time shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		Calendar expected = Calendar.getInstance();
+		fcell.setTimeValue(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(
+				"'PT'HH'H'mm'M'ss'S'");
+		String expectedString = simpleFormat.format(expected.getTime());
+		String targetString = simpleFormat.format(fcell.getTimeValue().getTime());
+		Assert.assertEquals(expectedString, targetString);
+	}
+
+	@Test
+	public void testGetSetFormula() {
+		int rowindex = 1, columnindex = 10;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setFormula(null);
+		} catch (IllegalArgumentException ie) {
+			if ("formula shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		String expected = "of:=[.I2]*4";
+		fcell.setFormula(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getFormula());
+	}
+
+	/**
+	 * This test case is used to check whether the new created cell uses correct
+	 * style settings.</br>
+	 * ODFDOM allows users to set if cell styles are inherited or not whenever a
+	 * new cell is added to the table. The default setting is using inheritance.
+	 * In this condition, the style of new column is same with the
+	 * last column before the inserted position, while the style of new row
+	 * is same with the last row before the inserted position.<br/>
+	 * This feature setting will influence <code>appendRow()</code>,
+	 * <code>appendColumn()</code>, <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code> and
+	 * <code>insertColumnsBefore()</code>. In default setting condition, the
+	 * style name of new created cells after these methods called should be
+	 * "ce1" which is inherited from preceding cell. <br/>
+	 * But after setting cell style inheritance false, these new created cells'
+	 * style name should be "Default", which is not inherited from preceding
+	 * one.<br/>
+	 * For <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>, if need
+	 * automatically expand cells, it will return empty cell(s) without any
+	 * style settings. Inheritance setting have no effect on them, so for cells
+	 * which created after these methods are called, should have "Default" style
+	 * name.
+	 */
+	@Test
+	public void testGetStyleName() {
+		try {
+			odsstyle = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(SAMPLE_STYLE_SPREADSHEET
+					+ ".ods"));
+			int rowindex = 1, columnindex = 0;
+			OdfTable table = odsstyle.getTableByName("Sheet1");
+			OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+			String expected = "ce1";
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// the default setting is inherited, so for new row, 
+			// the cell style name should be "ce1".
+			//test appendColumn
+			table.appendColumn();
+			int columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test appendRow
+			table.appendRow();
+			int rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test insertRowsBefore
+			table.insertRowsBefore(rowindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex, rowindex + 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test insertColumnsBefore
+			table.insertColumnsBefore(columnindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex + 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test appendColumns
+			table.appendColumns(2);
+			columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test appendRows
+			table.appendRows(2);
+			rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// for getCellByPosition the return cell style should be "Default".
+			fcell = table.getCellByPosition(table.getColumnCount() + 1, table.getRowCount() + 1);
+			Assert.assertEquals("Default", fcell.getStyleName());
+			odsstyle.close();
+
+			// change setting is not inherited, so for new row, 
+			// the cell style name should be "Default".
+			odsstyle = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(SAMPLE_STYLE_SPREADSHEET
+					+ ".ods"));
+			rowindex = 1;
+			columnindex = 0;
+			table = odsstyle.getTableByName("Sheet1");
+			table.setCellStyleInheritance(false);
+			expected = "Default";
+			table.appendColumn();
+			columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test appendRow
+			table.appendRow();
+			rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test insertRowsBefore
+			table.insertRowsBefore(rowindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex, rowindex + 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test insertColumnsBefore
+			table.insertColumnsBefore(columnindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex + 1, rowindex);
+			//Assert.assertEquals(expected, fcell.getStyleName());
+			//test appendColumns
+			table.appendColumns(2);
+			columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			//test appendRows
+			table.appendRows(2);
+			rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// for getCellByPosition the return cell style should be "Default".
+			fcell = table.getCellByPosition(table.getColumnCount(), table.getRowCount());
+			Assert.assertEquals("Default", fcell.getStyleName());
+			odsstyle.close();
+		} catch (Exception e) {
+			Assert.fail(e.toString());
+		}
+	}
+
+	@Test
+	public void testGetTableColumn() {
+		int rowindex = 2, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertNotNull(fcell.getTableColumn());
+		Assert.assertEquals(columnindex, fcell.getTableColumn().getColumnIndex());
+	}
+
+	@Test
+	public void testGetTableRow() {
+		int rowindex = 2, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertNotNull(fcell.getTableRow());
+		Assert.assertEquals(rowindex, fcell.getTableRow().getRowIndex());
+	}
+
+	@Test
+	public void testRemoveContent() {
+		int rowindex = 5, columnindex = 8;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertTrue(fcell.mCellElement.getChildNodes().getLength() > 0);
+		fcell.removeContent();
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(0, fcell.mCellElement.getChildNodes().getLength());
+	}
+
+	@Test
+	public void testRemoveTextContent() throws Exception {
+		int rowindex = 5, columnindex = 8;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		// how to test?
+		fcell.removeContent();
+		Assert.assertEquals(0, fcell.mCellElement.getChildNodes().getLength());
+
+		fcell.setDisplayText("hello");
+		DrawFrameElement drawEle = new DrawFrameElement(odsdoc.getContentDom());
+		DrawImageElement imageEle = drawEle.newDrawImageElement();
+		fcell.mCellElement.appendChild(drawEle);
+
+		Assert.assertEquals(2, fcell.mCellElement.getChildNodes().getLength());
+
+		fcell.removeTextContent();
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(1, fcell.mCellElement.getChildNodes().getLength());
+	}
+
+	@Test
+	public void testGetSetDisplayText() {
+		int rowindex = 5, columnindex = 5;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		String expected = "display text";
+
+		// Assert.assertEquals(expected, fcell.getDisplayText());
+
+		fcell.setDisplayText(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getDisplayText());
+	}
+
+	@Test
+	public void testGetSetFormatString() {
+		int rowindex = 3, columnindex = 0;
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setFormatString(null);
+		} catch (IllegalArgumentException ie) {
+			if ("formatStr shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		// float format string
+		String expected = "#0.0";
+		fcell.setFormatString(expected);
+		// date format string
+		// String expected="MMM d, yy";
+		// String expected="yyyy-MM-dd";
+
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getFormatString());
+	}
+
+	@Test
+	public void testGetCurrencySymbol() {
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		OdfTableCell cell1 = table.getCellByPosition("C2");
+		Assert.assertEquals("$", cell1.getCurrencySymbol());
+		OdfTableCell cell2 = table.getCellByPosition("C3");
+		Assert.assertEquals("CNY", cell2.getCurrencySymbol());
+	}
+
+	@Test
+	public void testGetSetCurrencyFormat() {
+		OdfTable table = odsdoc.getTableByName("Sheet1");
+		String[] formats = {"$#,##0.00", "#,##0.00 CNY", "$#,##0.0"};
+
+		OdfTableCell cell = table.getCellByPosition("J1");
+		boolean illegalArgumentFlag = false;
+		try {
+			cell.setCurrencyFormat(null, formats[0]);
+		} catch (IllegalArgumentException ie) {
+			if ("currencySymbol shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		try {
+			cell.setCurrencyFormat("$", null);
+		} catch (IllegalArgumentException ie) {
+			if ("format shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		cell.setCurrencyValue(32.12, "USD");
+		cell.setCurrencyFormat("$", formats[0]);
+
+		cell = table.getCellByPosition("J2");
+		cell.setCurrencyValue(new Double(32), "CNY");
+		cell.setCurrencyFormat("CNY", formats[1]);
+
+		cell = table.getCellByPosition("J3");
+		cell.setCurrencyValue(-32.12, "USD");
+		cell.setCurrencyFormat("$", formats[2]);
+
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		for (int i = 1; i <= 3; i++) {
+			OdfTableCell newcell = table.getCellByPosition("J" + i);
+			Assert.assertEquals(formats[i - 1], newcell.getFormatString());
+		}
+	}
+
+	@Test
+	public void testSetDefaultCellStyle() {
+		OdfSpreadsheetDocument outputDocument;
+		OdfContentDom contentDom; // the document object model for content.xml
+		OdfStylesDom stylesDom; // the document object model for styles.xml
+		// the office:automatic-styles element in content.xml
+		OdfOfficeAutomaticStyles contentAutoStyles;
+		// the office:styles element in styles.xml
+		OdfOfficeStyles stylesOfficeStyles;
+		OdfStyle style;
+		String noaaDateStyleName;
+		String noaaTempStyleName;
+
+		try {
+			outputDocument = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			contentDom = outputDocument.getContentDom();
+			contentAutoStyles = contentDom.getOrCreateAutomaticStyles();
+
+			OdfNumberDateStyle dateStyle = new OdfNumberDateStyle(contentDom,
+					"yyyy-MM-dd", "numberDateStyle", null);
+			OdfNumberStyle numberStyle = new OdfNumberStyle(contentDom,
+					"#0.00", "numberTemperatureStyle");
+
+			contentAutoStyles.appendChild(dateStyle);
+			contentAutoStyles.appendChild(numberStyle);
+
+			style = contentAutoStyles.newStyle(OdfStyleFamily.TableCell);
+			noaaDateStyleName = style.getStyleNameAttribute();
+			style.setStyleDataStyleNameAttribute("numberDateStyle");
+
+			// and for time cells
+			style = contentAutoStyles.newStyle(OdfStyleFamily.TableCell);
+			noaaTempStyleName = style.getStyleNameAttribute();
+			style.setStyleDataStyleNameAttribute("numberTemperatureStyle");
+			style.setProperty(StyleParagraphPropertiesElement.TextAlign, "end");
+
+			OdfTable table = OdfTable.newTable(outputDocument);
+			List<OdfTableColumn> columns = table.insertColumnsBefore(0, 3);
+			OdfTableColumn column = columns.get(0);
+			column.setDefaultCellStyle(
+					contentAutoStyles.getStyle(noaaDateStyleName,
+					OdfStyleFamily.TableCell));
+			OdfTableCell aCell = column.getCellByIndex(0);
+			aCell.setValueType("date");
+			String format = aCell.getFormatString();
+			Assert.assertEquals("yyyy-MM-dd", format);
+
+			List<OdfTableRow> rows = table.insertRowsBefore(0, 1);
+			OdfTableRow row = rows.get(0);
+			row.setDefaultCellStyle(contentAutoStyles.getStyle(noaaTempStyleName,
+					OdfStyleFamily.TableCell));
+			OdfTableCell bCell = row.getCellByIndex(0);
+			bCell.setValueType("float");
+			String bformat = bCell.getFormatString();
+			Assert.assertEquals("#0.00", bformat);
+			Assert.assertEquals("end", bCell.getHorizontalAlignment());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+        
+        @Test
+        public void testGetFromEmptyDateValue() throws Exception {
+            OdfSpreadsheetDocument doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+            OdfTable table = OdfTable.newTable(doc);
+            OdfTableCell dateCell = table.appendRow().getCellByIndex(0);
+            dateCell.setValueType(OfficeValueTypeAttribute.Value.DATE.toString());
+            Assert.assertNull(dateCell.getDateValue());
+        }
+        
+        @Test
+        public void testGetFromEmptyTimeValue() throws Exception {
+            OdfSpreadsheetDocument doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+            OdfTable table = OdfTable.newTable(doc);
+            OdfTableCell timeCell = table.appendRow().getCellByIndex(0);
+            timeCell.setValueType(OfficeValueTypeAttribute.Value.TIME.toString());
+            Assert.assertNull(timeCell.getTimeValue());
+        }
+        
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableRowColumnTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableRowColumnTest.java
new file mode 100644
index 0000000..d82a213
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableRowColumnTest.java
@@ -0,0 +1,231 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableColumnProperties;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.search.TextNavigation;
+import org.odftoolkit.odfdom.incubator.search.TextSelection;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class TableRowColumnTest {
+
+	final String filename = "TestSpreadsheetTable";
+	final String odtfilename = "TestTextTable";
+	OdfSpreadsheetDocument odsdoc;
+	OdfTextDocument odtdoc;
+	OdfTable odsTable, odtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			odsdoc = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(filename + ".ods"));
+			odtdoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(odtfilename + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@Test
+	public void testSetSize() {
+		OdfTable table3 = odtdoc.getTableByName("Table3");
+		//change the table height to 1/2
+		for (int i = 0; i < table3.getRowCount(); i++) {
+			OdfTableRow row = table3.getRowByIndex(i);
+			long oldHeight = row.getHeight() / 2;
+			row.setHeight(oldHeight, false);
+			String sHeightMM = String.valueOf(oldHeight) + Unit.MILLIMETER.abbr();
+			String sHeightIN = PositiveLength.mapToUnit(sHeightMM, Unit.INCH);
+			long expectedHeight = PositiveLength.parseLong(sHeightIN, Unit.MILLIMETER);
+			Assert.assertEquals(expectedHeight, row.getHeight());
+		}
+
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		//change the table width to 1/2
+		table1.setWidth(table1.getWidth() / 2);
+		for (int i = 0; i < table1.getColumnCount(); i++) {
+			OdfTableColumn column = table1.getColumnByIndex(i);
+			long oldWidth = column.getWidth() / 2;
+			column.setWidth(oldWidth);
+			String sWidthMM = String.valueOf(oldWidth) + Unit.MILLIMETER.abbr();
+			String sWidthIN = PositiveLength.mapToUnit(sWidthMM, Unit.INCH);
+			long expectedWidth = PositiveLength.parseLong(sWidthIN, Unit.MILLIMETER);
+			Assert.assertEquals(expectedWidth, column.getWidth());
+		}
+		saveodt("ChangeSize");
+	}
+
+	/**
+	 * When a repeated column without width is split up, no width attribute should be set.
+	 */
+	@Test
+	public void testSplitRepeatedColumns() {
+		// test original width is null or null value.
+		OdfTable table5 = odtdoc.getTableByName("Table5");
+		//columns 0-2 original width are null.
+		table5.getColumnByIndex(0).splitRepeatedColumns();
+		String columnWidth = table5.getColumnByIndex(1).maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+		Assert.assertNull(columnWidth);
+		//columns 3-5 original width value are null.
+		table5.getColumnByIndex(3).splitRepeatedColumns();
+		columnWidth = table5.getColumnByIndex(4).maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+		Assert.assertNull(columnWidth);
+		saveodt("SplitRepeatedColumns");
+	}
+
+	@Test
+	public void testGetPreviousNext() {
+		OdfTable table2 = odtdoc.getTableByName("Table2");
+		OdfTableRow row2 = table2.getRowByIndex(2);
+		OdfTableRow row1 = table2.getRowByIndex(1);
+		OdfTableRow row0 = table2.getRowByIndex(0);
+		OdfTableRow lastRow = table2.getRowByIndex(table2.getRowCount() - 1);
+		OdfTableRow preRow = row2.getPreviousRow();
+		Assert.assertTrue(preRow.equals(row1));
+		Assert.assertTrue(row0.getPreviousRow() == null);
+		Assert.assertEquals(row1.getNextRow(), row2);
+		Assert.assertTrue(lastRow.getNextRow() == null);
+
+		OdfTable table1 = odtdoc.getTableByName("Table1");
+		OdfTableColumn column2 = table1.getColumnByIndex(2);
+		OdfTableColumn column1 = table1.getColumnByIndex(1);
+		OdfTableColumn column0 = table1.getColumnByIndex(0);
+		OdfTableColumn lastColumn = table1.getColumnByIndex(table1.getColumnCount() - 1);
+		OdfTableColumn preColumn = column2.getPreviousColumn();
+		Assert.assertTrue(column0.getPreviousColumn() == null);
+		Assert.assertTrue(preColumn.equals(column1));
+		Assert.assertEquals(column0.getNextColumn(), column1);
+		Assert.assertTrue(lastColumn.getNextColumn() == null);
+	}
+
+	@Test
+	public void testGetIndex() {
+		//this is used to test the method for setColumnRepeatedIndex
+		//merge the first two column, then the third column's index is 2
+		OdfTable table3 = odtdoc.getTableByName("Table3");
+		OdfTableColumn column2OfT3 = table3.getColumnByIndex(2);
+		OdfTableCellRange range = table3.getCellRangeByPosition(0, 0, 1, table3.getRowCount() - 1);
+		range.merge();
+		Assert.assertTrue(column2OfT3.getColumnIndex() == 1);
+		//insert two columns after the first column, then the next column's index add 2
+		table3.insertColumnsBefore(1, 2);
+		Assert.assertTrue(column2OfT3.getColumnIndex() == 3);
+		//append a row
+		OdfTableRow newRow = table3.appendRow();
+		int index = newRow.getRowIndex();
+		Assert.assertTrue(index == (table3.getRowCount() - 1));
+		//remove two row
+//		table3.removeRowByIndex(0, 2);
+//		Assert.assertTrue(newRow.getRowIndex() == (index - 2));
+		//remove two colum
+		table3.removeColumnsByIndex(1, 2);
+		Assert.assertTrue(column2OfT3.getColumnIndex() == 1);
+
+		//insert two column in the repeated columns
+		OdfTable table2 = odtdoc.getTableByName("Table2");
+		OdfTableColumn column1OfT2 = table2.getColumnByIndex(1);
+		List<OdfTableColumn> columns = table2.insertColumnsBefore(1, 2);
+		Assert.assertTrue(column1OfT2.getColumnIndex() == 3);
+		Assert.assertTrue(columns.get(0).getColumnIndex() == 1);
+		Assert.assertEquals(column1OfT2.getPreviousColumn(), columns.get(1));
+		Assert.assertEquals(column1OfT2.getNextColumn(), table2.getColumnByIndex(4));
+
+		//append two row in the repeated rows
+		OdfTableRow row4OfT2 = table2.getRowByIndex(4);
+		OdfTableRow row3OfT2 = table2.getRowByIndex(3);
+		List<OdfTableRow> rows = table2.insertRowsBefore(4, 2);
+		OdfTableCell cell1 = rows.get(0).getCellByIndex(0);
+		cell1.setStringValue("cell1");
+		OdfTableCell cell2 = rows.get(1).getCellByIndex(0);
+		cell2.setStringValue("cell2");
+		Assert.assertTrue(row4OfT2.getRowIndex() == 6);
+		Assert.assertEquals(rows.get(0).getPreviousRow(), row3OfT2);
+		//remove a row, then the next row will decrease the index
+		table2.removeRowsByIndex(4, 1);
+		Assert.assertNull(rows.get(0).getOdfElement());
+		Assert.assertEquals(rows.get(1).getPreviousRow(), row3OfT2);
+		saveodt("ChangeIndex");
+	}
+
+	@Test
+	public void testCellGetRowIndex() {
+		OdfTable table3 = odtdoc.getTableByName("Table3");
+		OdfTableCell cell = table3.getCellByPosition(0, 1);
+		Assert.assertTrue(cell.getRowIndex() == 1);
+		table3.removeRowsByIndex(0, 2);
+	}
+
+	@Test
+	public void testGetInstance() {
+		//get the text content contains "cell"
+		TextNavigation search = new TextNavigation("cell", odtdoc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			OdfElement containerEle = item.getContainerElement();
+			if (containerEle instanceof OdfTextParagraph) {
+				Node ele = containerEle.getParentNode();
+				if (ele instanceof TableTableCellElement) {
+					OdfTableCell cell = OdfTableCell.getInstance((TableTableCellElementBase) ele);
+					Assert.assertTrue(cell.getStringValue().contains("cell"));
+					Assert.assertTrue(cell.getRowIndex() == 0);
+					ele = ele.getParentNode();
+					if (ele instanceof TableTableRowElement) {
+						OdfTableRow row = OdfTableRow.getInstance((TableTableRowElement) ele);
+						Assert.assertTrue(row == cell.getTableRow());
+					}
+				}
+			}
+		}
+	}
+
+	private void saveods(String name) {
+		try {
+			odsdoc.save(ResourceUtilities.newTestOutputFile(filename + name + ".ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	private void saveodt(String name) {
+		try {
+			odtdoc.save(ResourceUtilities.newTestOutputFile(odtfilename + name + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableTest.java
new file mode 100644
index 0000000..910dd8f
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/table/TableTest.java
@@ -0,0 +1,1193 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.doc.table;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMasterStylesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderFooterPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderStyleElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class TableTest {
+
+	final static String mOdsTestFileName = "TestSpreadsheetTable";
+	final static String mOdtTestFileName = "TestTextTable";
+	OdfSpreadsheetDocument mOdsDoc;
+	OdfTextDocument mOdtDoc;
+	TableTableElement mOdsTable, mOdtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			mOdsDoc = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(mOdsTestFileName + ".ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private OdfTextDocument loadODTDocument(String name) {
+		try {
+			OdfTextDocument odtdoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(name));
+			return odtdoc;
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+		return null;
+	}
+
+	@Test
+	public void testNewTable() {
+		try {
+			OdfTextDocument document = OdfTextDocument.newTextDocument();
+			document.newParagraph("Empty table:");
+			createEmptyTable(document);
+
+			document.newParagraph();
+			document.newParagraph("Table with float values:");
+			createTableWithData(document);
+			document.newParagraph();
+			document.newParagraph("Table with string values:");
+			createTableWithString(document);
+
+			document.save(ResourceUtilities.newTestOutputFile("CreateTableCase.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testNewTableWithArrayData() {
+		try {
+			OdfSpreadsheetDocument spreadsheet = OdfSpreadsheetDocument.newSpreadsheetDocument();
+
+			// reproduce bug 121
+			int rowCount = 10, columnCount = 4;
+			String[] rowLabels = getTestTableRowLabel(rowCount);
+			String[] columnLabels = getTestTableColumnLabel(columnCount);
+			double[][] doubleArray = null;
+			String[][] stringArray = null;
+
+			OdfTable table1 = OdfTable.newTable(spreadsheet, null, null,
+					doubleArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT 2
+			Assert.assertEquals(2, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT 5
+			Assert.assertEquals(5, table1.getColumnCount());
+
+			table1 = OdfTable.newTable(spreadsheet, rowLabels, columnLabels,
+					doubleArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT+1 3
+			Assert.assertEquals(3, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT+1 6
+			Assert.assertEquals(6, table1.getColumnCount());
+
+			table1 = OdfTable.newTable(spreadsheet, null, null, stringArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT 2
+			Assert.assertEquals(2, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT 5
+			Assert.assertEquals(5, table1.getColumnCount());
+
+			table1 = OdfTable.newTable(spreadsheet, rowLabels, columnLabels,
+					stringArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT+1 3
+			Assert.assertEquals(3, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT+1 6
+			Assert.assertEquals(6, table1.getColumnCount());
+
+			doubleArray = getTestTableDataDouble(rowCount, columnCount);
+			table1 = OdfTable.newTable(spreadsheet, null, null, doubleArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount, table1.getRowCount());
+			Assert.assertEquals(columnCount, table1.getColumnCount());
+
+			table1 = OdfTable.newTable(spreadsheet, rowLabels, columnLabels,
+					doubleArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount + 1, table1.getRowCount());
+			Assert.assertEquals(columnCount + 1, table1.getColumnCount());
+
+			stringArray = new String[rowCount][columnCount];
+			for (int i = 0; i < rowCount; i++) {
+				for (int j = 0; j < columnCount; j++) {
+					stringArray[i][j] = "string" + (i * columnCount + j);
+				}
+			}
+			table1 = OdfTable.newTable(spreadsheet, null, null, stringArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount, table1.getRowCount());
+			Assert.assertEquals(columnCount, table1.getColumnCount());
+
+			table1 = OdfTable.newTable(spreadsheet, rowLabels, columnLabels,
+					stringArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount + 1, table1.getRowCount());
+			Assert.assertEquals(columnCount + 1, table1.getColumnCount());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testNewTableWithoutHeaderColumn() {
+		try {
+			// reproduce bug 145
+			OdfSpreadsheetDocument spreadsheet = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable sheet = OdfTable.newTable(spreadsheet, 3, 5);
+			TableTableHeaderColumnsElement headers = OdfElement.findFirstChildNode(TableTableHeaderColumnsElement.class,
+					sheet.mTableElement);
+			if (headers != null) {
+				for (Node n : new DomNodeList(headers.getChildNodes())) {
+					if (n instanceof TableTableColumnElement) {
+						if (sheet.getColumnInstance(
+								((TableTableColumnElement) n), 0).getColumnsRepeatedNumber() == 0) {
+							Assert.fail("table:number-columns-repeated has the invalid value: '0'. It have to be a value matching the 'positiveInteger' type.");
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private OdfTable createEmptyTable(OdfTextDocument document) {
+		String tablename = "Table1";
+		int rownumber = 5;
+		int clmnumber = 3;
+
+		OdfTable table1 = OdfTable.newTable(document, 5, 3);
+		table1.setTableName(tablename);
+
+		Assert.assertEquals(tablename, table1.getTableName());
+		Assert.assertEquals(rownumber, table1.getRowCount());
+		Assert.assertEquals(clmnumber, table1.getColumnCount());
+
+		OdfTable table = document.getTableByName(tablename);
+		Assert.assertNotNull(table);
+		Assert.assertEquals(table1, table);
+		return table1;
+	}
+
+	private OdfTable createTableWithData(OdfTextDocument document) {
+		String tablename = "Table2";
+		int rowcount = 10, columncount = 4;
+		double[][] data = new double[rowcount][columncount];
+		for (int i = 0; i < rowcount; i++) {
+			for (int j = 0; j < columncount; j++) {
+				data[i][j] = Math.random();
+			}
+		}
+
+		String[] rowlabels = new String[rowcount];
+		for (int i = 0; i < rowcount; i++) {
+			rowlabels[i] = "RowHeader" + i;
+		}
+
+		String[] columnlabels = new String[columncount];
+		for (int i = 0; i < columncount; i++) {
+			columnlabels[i] = "ColumnHeader" + i;
+		}
+
+		OdfTable table2 = OdfTable.newTable(document, rowlabels, columnlabels, data);
+		table2.setTableName(tablename);
+
+		Assert.assertEquals(1, table2.getHeaderColumnCount());
+		Assert.assertEquals(1, table2.getHeaderRowCount());
+		Assert.assertEquals(rowcount + 1, table2.getRowCount());
+		Assert.assertEquals(columncount + 1, table2.getColumnCount());
+		OdfTable table = document.getTableByName(tablename);
+		Assert.assertNotNull(table);
+		Assert.assertEquals(table2, table);
+
+		OdfTableCell cell = table.getCellByPosition(1, 1);
+		Assert.assertEquals("float", cell.getValueType());
+
+		return table2;
+	}
+
+	private OdfTable createTableWithString(OdfTextDocument document) {
+		String tablename = "Table3";
+		int rowcount = 7, columncount = 5;
+		String[][] data = new String[rowcount][columncount];
+		for (int i = 0; i < rowcount; i++) {
+			for (int j = 0; j < columncount; j++) {
+				data[i][j] = "string" + (i * columncount + j);
+			}
+		}
+
+		String[] rowlabels = new String[rowcount];
+		for (int i = 0; i < rowcount; i++) {
+			rowlabels[i] = "RowHeader" + i;
+		}
+
+		String[] columnlabels = new String[columncount];
+		for (int i = 0; i < columncount; i++) {
+			columnlabels[i] = "ColumnHeader" + i;
+		}
+
+		OdfTable table3 = OdfTable.newTable(document, rowlabels, columnlabels, data);
+		table3.setTableName(tablename);
+
+		Assert.assertEquals(1, table3.getHeaderColumnCount());
+		Assert.assertEquals(1, table3.getHeaderRowCount());
+		Assert.assertEquals(rowcount + 1, table3.getRowCount());
+		Assert.assertEquals(columncount + 1, table3.getColumnCount());
+		OdfTable table = document.getTableByName(tablename);
+		Assert.assertNotNull(table);
+		Assert.assertEquals(table3, table);
+
+		OdfTableCell cell = table.getCellByPosition(1, 1);
+		Assert.assertEquals("string", cell.getValueType());
+
+
+		return table3;
+
+	}
+
+	@Test
+	public void testDeleteTable() {
+		try {
+			mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+			List<OdfTable> tableList = mOdtDoc.getTableList();
+			int count = tableList.size();
+
+			OdfTable table = mOdtDoc.getTableByName("DeletedTable");
+			if (table != null) {
+				table.remove();
+			}
+
+			saveodt(mOdtTestFileName + "Out.odt");
+			mOdtDoc = loadODTDocument(mOdtTestFileName + "Out.odt");
+			tableList = mOdtDoc.getTableList();
+			Assert.assertEquals(count - 1, tableList.size());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetGetWidth() {
+		long width = 500;
+		try {
+			OdfTextDocument document = OdfTextDocument.newTextDocument();
+			document.newParagraph("Empty table:");
+			OdfTable table = createEmptyTable(document);
+			table.setWidth(width);
+			Assert.assertTrue(Math.abs(width - table.getWidth()) < 3);
+
+			document.save(ResourceUtilities.newTestOutputFile("TestSetGetWidth.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAppendColumn() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		List<OdfTable> tableList = mOdtDoc.getTableList();
+		for (int i = 0; i < tableList.size(); i++) {
+			OdfTable table = tableList.get(i);
+			int clmnum = table.getColumnCount();
+			table.appendColumn();
+			Assert.assertEquals(clmnum + 1, table.getColumnCount());
+
+			OdfTableColumn column = table.getColumnByIndex(clmnum);
+			OdfTableColumn columnOld = table.getColumnByIndex(clmnum - 1);
+			Assert.assertEquals(column.getCellCount(), columnOld.getCellCount());
+		}
+		saveodt(mOdtTestFileName + "Output.odt");
+	}
+
+	@Test
+	public void testGetSetTablename() {
+		String tablename = "My Table";
+		OdfTextDocument document = null;
+		try {
+			document = OdfTextDocument.newTextDocument();
+			document.newParagraph("Empty table:");
+			OdfTable table = createEmptyTable(document);
+			table.setTableName(tablename);
+			Assert.assertEquals(tablename, table.getTableName());
+
+			document.save(ResourceUtilities.newTestOutputFile("TestGetSetName.odt"));
+			document.close();
+			document = loadODTDocument("TestGetSetName.odt");
+			table = document.getTableByName(tablename);
+			Assert.assertNotNull(table);
+			String tablename2 = table.getTableName();
+			Assert.assertEquals(tablename, tablename2);
+		} catch (Exception e) {
+			Assert.fail(e.getMessage());
+		}
+
+		try {
+			//new another table with the same name
+			//an exception will be thrown
+			OdfTable table2 = OdfTable.newTable(document);
+			table2.setTableName(tablename);
+			document.save(ResourceUtilities.newTestOutputFile("TestGetSetName.odt"));
+			Assert.fail("should not save the tables with the same table name.");
+		} catch (Exception e) {
+			if (!e.getMessage().startsWith("The table name is duplicate")) {
+				Assert.fail(e.getMessage());
+			}
+		}
+	}
+
+	@Test
+	public void testInsertColumnBefore() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		OdfTable table1 = mOdtDoc.getTableByName("Table3");
+		OdfTableCellRange range = table1.getCellRangeByPosition(0, 1, 1, 2);
+		range.merge();
+
+		int clmnum = table1.getColumnCount();
+		OdfTableColumn oldClm1 = table1.getColumnByIndex(1);
+
+		List<OdfTableColumn> columns = table1.insertColumnsBefore(1, 2);
+		Assert.assertEquals(clmnum + 2, table1.getColumnCount());
+		OdfTableColumn clm0 = table1.getColumnByIndex(0);
+		OdfTableColumn clm1 = table1.getColumnByIndex(1);
+		OdfTableColumn clm2 = table1.getColumnByIndex(2);
+		OdfTableColumn clm3 = table1.getColumnByIndex(3);
+		Assert.assertEquals(columns.get(0), clm1);
+		Assert.assertEquals(columns.get(1), clm2);
+		Assert.assertEquals(clm0.getCellCount(), clm1.getCellCount());
+		Assert.assertEquals(clm1.getCellCount(), clm2.getCellCount());
+		Assert.assertEquals(clm3, oldClm1);
+
+		OdfTable table2 = mOdtDoc.getTableByName("Table2");
+		OdfTableColumn oldClm0 = table2.getColumnByIndex(0);
+		columns = table2.insertColumnsBefore(0, 2);
+
+		OdfTableColumn newClm0 = table2.getColumnByIndex(0);
+		OdfTableColumn newClm1 = table2.getColumnByIndex(1);
+		OdfTableColumn newClm2 = table2.getColumnByIndex(2);
+		Assert.assertEquals(newClm0.getCellCount(), newClm2.getCellCount());
+		Assert.assertEquals(newClm1.getCellCount(), newClm2.getCellCount());
+		Assert.assertEquals(newClm2, oldClm0);
+
+		saveodt(mOdtTestFileName + "Out.odt");
+	}
+
+	@Test
+	public void testRemoveColumnByIndex() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		OdfTable table1 = mOdtDoc.getTableByName("Table3");
+		OdfTableCellRange range = table1.getCellRangeByPosition(0, 1, 1, 2);
+		range.merge();
+
+		int clmnum = table1.getColumnCount();
+		OdfTableColumn oldClm0 = table1.getColumnByIndex(0);
+		OdfTableColumn oldClm3 = table1.getColumnByIndex(3);
+		table1.removeColumnsByIndex(1, 2);
+		OdfTableColumn newClm0 = table1.getColumnByIndex(0);
+		OdfTableColumn newClm1 = table1.getColumnByIndex(1);
+		Assert.assertEquals(clmnum - 2, table1.getColumnCount());
+		Assert.assertEquals(oldClm0, newClm0);
+		Assert.assertEquals(oldClm3, newClm1);
+
+		OdfTable table2 = mOdtDoc.getTableByName("Table4");
+		clmnum = table2.getColumnCount();
+		OdfTableColumn oldClm1 = table2.getColumnByIndex(2);
+		table2.removeColumnsByIndex(0, 2);
+		table2.removeColumnsByIndex(table2.getColumnCount() - 2, 2);
+		OdfTableColumn clm0 = table2.getColumnByIndex(0);
+		Assert.assertEquals(oldClm1, clm0);
+		Assert.assertEquals(clmnum - 4, table2.getColumnCount());
+		saveodt(mOdtTestFileName + "Out.odt");
+
+	}
+
+	@Test
+	public void testInsertRowBefore() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		OdfTable table2 = mOdtDoc.getTableByName("Table2");
+		OdfTableRow row = table2.getRowByIndex(0);
+		int originalRowCount = table2.getRowCount();
+		List<OdfTableRow> newRows = table2.insertRowsBefore(0, 2);
+
+
+		OdfTableRow newRow1 = table2.getRowByIndex(0);
+		OdfTableRow newRow2 = table2.getRowByIndex(0);
+		Assert.assertEquals(newRow1.getCellCount(), newRows.get(0).getCellCount());
+		Assert.assertEquals(newRow2.getCellCount(), newRows.get(1).getCellCount());
+		//original row index 0
+		Assert.assertEquals(row, table2.getRowByIndex(2));
+
+		saveodt(mOdtTestFileName + "Out.odt");
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + "Out.odt");
+		OdfTable newTable = mOdtDoc.getTableByName("Table2");
+
+		Assert.assertEquals(originalRowCount + 2, newTable.getRowCount());
+
+	}
+
+	@Test
+	public void testGetColumnList() {
+		String tablename = "MyTable";
+		String testFileName = "TestGetColumnList.odt";
+		try {
+			OdfTextDocument document = OdfTextDocument.newTextDocument();
+
+			int rowcount = 3, columncount = 3;
+			String[][] data = new String[rowcount][columncount];
+			for (int i = 0; i < rowcount; i++) {
+				for (int j = 0; j < columncount; j++) {
+					data[i][j] = "string" + (i * columncount + j);
+				}
+			}
+
+			String[] rowlabels = new String[rowcount];
+			for (int i = 0; i < rowcount; i++) {
+				rowlabels[i] = "RowHeader" + i;
+			}
+
+			String[] columnlabels = new String[columncount];
+			for (int i = 0; i < columncount; i++) {
+				columnlabels[i] = "ColumnHeader" + i;
+			}
+
+			OdfTable table3 = OdfTable.newTable(document, rowlabels, columnlabels, data);
+			table3.setTableName(tablename);
+
+			document.save(ResourceUtilities.newTestOutputFile(testFileName));
+			document = loadODTDocument(testFileName);
+			OdfTable table = document.getTableByName(tablename);
+			OdfTableColumn tmpColumn;
+			List<OdfTableColumn> columns = table.getColumnList();
+
+			//the code below prints the column value,it shows that the first columns value is the same with the last column
+			for (int i = 0; i < columns.size(); i++) {
+				tmpColumn = columns.get(i);
+				for (int j = 0; j < tmpColumn.getCellCount(); j++) {
+					String text = tmpColumn.getCellByIndex(j).getStringValue();
+					if (i == 0 && j == 0) {
+						Assert.assertEquals("", text);
+					} else if (i == 0 && j > 0) {
+						Assert.assertEquals("RowHeader" + (j - 1), text);
+					} else if (i > 0 && j == 0) {
+						Assert.assertEquals("ColumnHeader" + (i - 1), text);
+					} else {
+						Assert.assertEquals("string" + ((j - 1) * columncount + i - 1), text);
+					}
+				}
+			}
+
+			for (int i = 1; i < columns.size(); i++) {
+				tmpColumn = columns.get(i);
+				//each column's first cell is the column header
+				Assert.assertEquals(columnlabels[i - 1], tmpColumn.getCellByIndex(0).getStringValue());
+			}
+			Assert.assertEquals(columncount, columns.size() - 1);
+
+			Assert.assertEquals("", columns.get(0).getCellByIndex(0).getStringValue());
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+
+	@Test
+	public void testGetRowList() {
+		String tablename = "MyTable";
+		String testFileName = "TestGetRowList.odt";
+		try {
+			OdfTextDocument document = OdfTextDocument.newTextDocument();
+
+			int rowcount = 3, columncount = 3;
+			String[][] data = new String[rowcount][columncount];
+			for (int i = 0; i < rowcount; i++) {
+				for (int j = 0; j < columncount; j++) {
+					data[i][j] = "string" + (i * columncount + j);
+				}
+			}
+
+			String[] rowlabels = new String[rowcount];
+			for (int i = 0; i < rowcount; i++) {
+				rowlabels[i] = "RowHeader" + i;
+			}
+
+			String[] columnlabels = new String[columncount];
+			for (int i = 0; i < columncount; i++) {
+				columnlabels[i] = "ColumnHeader" + i;
+			}
+
+			OdfTable table3 = OdfTable.newTable(document, rowlabels, columnlabels, data);
+			table3.setTableName(tablename);
+
+			document.save(ResourceUtilities.newTestOutputFile(testFileName));
+			document = loadODTDocument(testFileName);
+			OdfTable table = document.getTableByName(tablename);
+			OdfTableRow tmpRow;
+			List<OdfTableRow> rows = table.getRowList();
+			for (int i = 1; i < rows.size(); i++) {
+				tmpRow = rows.get(i);
+				//each row's first cell is the row header
+				Assert.assertEquals(rowlabels[i - 1], tmpRow.getCellByIndex(0).getStringValue());
+			}
+			Assert.assertEquals(rowcount, rows.size() - 1);
+
+			Assert.assertEquals("", rows.get(0).getCellByIndex(0).getStringValue());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetColumnByIndex() {
+
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		OdfTable table = mOdtDoc.getTableByName("Table3");
+		Assert.assertNotNull(table);
+		//test if index is negative number, which is an illegal argument.
+		boolean illegalArgumentFlag = false;
+		try {
+			table.getColumnByIndex(-1);
+		} catch (IllegalArgumentException ie) {
+			if ("index should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		OdfTableColumn column = table.getColumnByIndex(2);
+		Assert.assertNotNull(column);
+		Assert.assertEquals("string6", column.getCellByIndex(2).getStringValue());
+		// test column automatically expands.
+		// Table3 original size is 7 rows and 5 columns. this test case will
+		// test row index 8 and columns index 6 are work well though they are
+		// both out bound of the original table.
+		column = table.getColumnByIndex(8);
+		Assert.assertNotNull(column);
+		OdfTableCell cell = column.getCellByIndex(6);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string86");
+		Assert.assertEquals("string86", cell.getStringValue());
+	}
+
+	@Test
+	public void testGetRowByIndex() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		OdfTable table = mOdtDoc.getTableByName("Table3");
+		Assert.assertNotNull(table);
+		//test index is negative number. This is a illegal argument.
+		boolean illegalArgumentFlag = false;
+		try {
+			table.getRowByIndex(-1);
+		} catch (IllegalArgumentException ie) {
+			if ("index should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		OdfTableRow row = table.getRowByIndex(3);
+		Assert.assertNotNull(row);
+		Assert.assertEquals("string12", row.getCellByIndex(3).getStringValue());
+		// test row automatically expands.
+		// Table3 original size is 7 rows and 5 columns. this test case will
+		// test row index 8 and columns index 6 are work well though they are
+		// both out bound of the original table.
+		row = table.getRowByIndex(6);
+		Assert.assertNotNull(row);
+		OdfTableCell cell = row.getCellByIndex(8);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string86");
+		Assert.assertEquals("string86", cell.getStringValue());
+	}
+
+	@Test
+	public void testRemoveRowByIndex() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		OdfTable table2 = mOdtDoc.getTableByName("Table2");
+		OdfTableRow row0 = table2.getRowByIndex(0);
+		OdfTableRow row3 = table2.getRowByIndex(3);
+		int originalRowCount = table2.getRowCount();
+		table2.removeRowsByIndex(1, 2);
+
+		//original row index 0
+		Assert.assertEquals(row0, table2.getRowByIndex(0));
+		Assert.assertEquals(row3, table2.getRowByIndex(1));
+
+		saveodt(mOdtTestFileName + "Out.odt");
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + "Out.odt");
+		OdfTable newTable = mOdtDoc.getTableByName("Table2");
+
+		Assert.assertEquals(originalRowCount - 2, newTable.getRowCount());
+	}
+
+	@Test
+	public void testGetHeaderRowCount() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		OdfTable table = mOdtDoc.getTableByName("Table3");
+		int headerRowCount = table.getHeaderRowCount();
+		Assert.assertEquals(1, headerRowCount);
+	}
+
+	@Test
+	public void testGetHeaderColumnCount() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		OdfTable table = mOdtDoc.getTableByName("Table3");
+		int headerColumnCount = table.getHeaderColumnCount();
+		Assert.assertEquals(1, headerColumnCount);
+
+	}
+
+	@Test
+	public void testIsProtected() throws Exception {
+		String tablename = "DeletedTable";
+		String outputFilename = "tableProtected.odt";
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Assert.assertNotNull(mOdtDoc);
+		OdfTable table = mOdtDoc.getTableByName(tablename);
+		table.setProtected(false);
+		mOdtDoc.save(ResourceUtilities.newTestOutputFile(outputFilename));
+
+		mOdtDoc = loadODTDocument(outputFilename);
+		table = mOdtDoc.getTableByName(tablename);
+		Assert.assertFalse(table.isProtected());
+
+	}
+
+	@Test
+	public void testSetIsProtected() throws Exception {
+		String tablename = "DeletedTable";
+		String outputFilename = "tableProtected.odt";
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Assert.assertNotNull(mOdtDoc);
+		OdfTable table = mOdtDoc.getTableByName(tablename);
+		table.setProtected(true);
+		mOdtDoc.save(ResourceUtilities.newTestOutputFile(outputFilename));
+
+		mOdtDoc = loadODTDocument(outputFilename);
+		table = mOdtDoc.getTableByName(tablename);
+		Assert.assertTrue(table.isProtected());
+	}
+
+	@Test
+	public void testGetCellByPosition() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		OdfTable table = mOdtDoc.getTableByName("Table3");
+
+		OdfTableCell cell = table.getCellByPosition(3, 3);
+		Assert.assertNotNull(cell);
+		Assert.assertEquals("string12", cell.getStringValue());
+		cell = table.getCellByPosition("D4");
+		Assert.assertNotNull(cell);
+		Assert.assertEquals("string12", cell.getStringValue());
+		//test index are negative numbers. They are illegal arguments.
+		boolean illegalArgumentFlag = false;
+		try {
+			cell = table.getCellByPosition(-1, 0);
+		} catch (IllegalArgumentException ie) {
+			if ("colIndex and rowIndex should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		// test TextTable automatically expands.
+		// Table3 original size is 7 rows and 5 columns;
+		//test row index 8 and column index 6, row index and column index both out of bound, work well. 
+		cell = table.getCellByPosition(8, 6);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string86");
+		Assert.assertEquals("string86", cell.getStringValue());
+		//test row index 9 and column index 4, row index out of bound, work well.
+		cell = table.getCellByPosition(4, 9);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string49");
+		Assert.assertEquals("string49", cell.getStringValue());
+		//test row index 9 and column index 4, column index out of bound, work well.
+		cell = table.getCellByPosition(9, 10);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string910");
+		Assert.assertEquals("string910", cell.getStringValue());
+		//test column index out of bound, work well.
+		cell = table.getCellByPosition("I4");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringI4");
+		Assert.assertEquals("stringI4", cell.getStringValue());
+		//test row index out of bound, work well.
+		cell = table.getCellByPosition("D11");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringD11");
+		Assert.assertEquals("stringD11", cell.getStringValue());
+		//test row index and column index both out of bound, work well. 
+		cell = table.getCellByPosition("K12");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringK12");
+		Assert.assertEquals("stringK12", cell.getStringValue());
+		// test TestSpreadsheetTable automatically expands.
+		// Sheet1 original size is 6 rows and 9 columns;
+		table = mOdsDoc.getTableByName("Sheet1");
+		cell = table.getCellByPosition("C1");
+		Assert.assertNotNull(cell);
+		Assert.assertEquals("Currency", cell.getStringValue());
+		cell = table.getCellByPosition("K4");
+		Assert.assertNotNull(cell);
+		cell.setBooleanValue(true);
+		Assert.assertEquals(Boolean.TRUE, cell.getBooleanValue());
+		cell = table.getCellByPosition("D10");
+		Assert.assertNotNull(cell);
+		Calendar cal = Calendar.getInstance();
+		cell.setTimeValue(cal);
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(
+				"'PT'HH'H'mm'M'ss'S'");
+		String expectedString = simpleFormat.format(cal.getTime());
+		String targetString = simpleFormat.format(cell.getTimeValue().getTime());
+		Assert.assertEquals(expectedString, targetString);
+		cell = table.getCellByPosition("M15");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringM15");
+		Assert.assertEquals("stringM15", cell.getStringValue());
+	}
+
+	@Test
+	public void testGetCellWithAutoExtend() {
+		OdfSpreadsheetDocument ods;
+		try {
+			ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OdfTable tbl = ods.getTableByName("Sheet1");
+			tbl.setTableName("Tests");
+			OdfTableCell cell = tbl.getCellByPosition(5, 5);
+			Assert.assertNotNull(cell);
+			Assert.assertEquals(6, tbl.getRowCount());
+			Assert.assertEquals(6, tbl.getColumnCount());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetCellRangeByPosition() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		OdfTable table = mOdtDoc.getTableByName("Table3");
+
+		OdfTableCellRange range = table.getCellRangeByPosition(0, 0, 3, 3);
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("A1", "D4");
+		Assert.assertNotNull(range);
+
+		// test TextTable automatically expands.
+		// Table3 original size is 7 rows and 5 columns;
+
+		//test index is negative number. They are illegal arguments.
+		boolean illegalArgumentFlag = false;
+		try {
+			range = table.getCellRangeByPosition(-1, 0, 2, -14);
+		} catch (IllegalArgumentException ie) {
+			if ("colIndex and rowIndex should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		range = table.getCellRangeByPosition(0, 0, 8, 6);
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition(0, 0, 4, 9);
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition(0, 0, 9, 10);
+		Assert.assertNotNull(range);
+		// get cell range by address.
+		range = table.getCellRangeByPosition("A1", "I4");
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("A1", "D11");
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("A1", "K12");
+		Assert.assertNotNull(range);
+		// test TestSpreadsheetTable automatically expands.
+		// Sheet1 original size is 6 rows and 9 columns;
+		// get cell range by index.
+		table = mOdsDoc.getTableByName("Sheet1");
+		range = table.getCellRangeByPosition("A1", "C1");
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("B7", "K12");
+		Assert.assertNotNull(range);
+	}
+
+	@Test
+	public void testRemoveRowColumn() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		OdfTable table1 = mOdtDoc.getTableByName("Table1");
+		int rowCount = table1.getRowCount();
+		table1.removeRowsByIndex(1, 2);
+		Assert.assertEquals(rowCount - 2, table1.getRowCount());
+
+		OdfTable table2 = mOdtDoc.getTableByName("Table2");
+		int columnCount = table2.getColumnCount();
+		table2.removeColumnsByIndex(2, 1);
+		Assert.assertEquals(columnCount - 1, table2.getColumnCount());
+
+		OdfTable table3 = mOdtDoc.getTableByName("Table3");
+		rowCount = table3.getRowCount();
+		table3.removeRowsByIndex(0, 2);
+		Assert.assertEquals(rowCount - 2, table3.getRowCount());
+
+		saveodt(mOdtTestFileName + "Out.odt");
+
+	}
+
+	@Test
+	public void testAppendRow() {
+		OdfFileDom dom;
+		try {
+			dom = mOdsDoc.getContentDom();
+			NodeList tablelist = dom.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table");
+			mOdsTable = (TableTableElement) tablelist.item(0);
+			testAppendRow(mOdsTable);
+			saveods();
+
+			mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+			dom = mOdtDoc.getContentDom();
+			tablelist = dom.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table");
+			for (int i = 0; i < tablelist.getLength(); i++) {
+				mOdtTable = (TableTableElement) tablelist.item(i);
+				testAppendRow(mOdtTable);
+			}
+			saveodt(mOdtTestFileName + "Out.odt");
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSplitCellAddress() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		OdfTable table1 = mOdtDoc.getTableByName("Table1");
+		//reproduce bug 138, test case to proof the fix problem.
+		//test address without table name.
+		String[] address = table1.splitCellAddress("A1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("A", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("AC1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("B34");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("B", address[1]);
+		Assert.assertEquals("34", address[2]);
+		address = table1.splitCellAddress("AC29");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("29", address[2]);
+
+		//test relative address
+		address = table1.splitCellAddress("Table1.A1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("A", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("Table1.AC1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("Table1.B34");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("B", address[1]);
+		Assert.assertEquals("34", address[2]);
+		address = table1.splitCellAddress("Table1.AC29");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("29", address[2]);
+
+		//test absolute address.
+		address = table1.splitCellAddress("$Table1.$A$1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("A", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("$Table1.$AC$1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("$Table1.$B$34");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("B", address[1]);
+		Assert.assertEquals("34", address[2]);
+		address = table1.splitCellAddress("$Table1.$AC$29");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("29", address[2]);
+	}
+
+	// Bug 97 - OdfTableRow.getCellAt(int) returns null when the cell is a repeat cell
+	@Test
+	public void testGetCellAt() {
+		try {
+			OdfSpreadsheetDocument doc = (OdfSpreadsheetDocument) OdfSpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath("testGetCellAt.ods"));
+			OdfTable odfTable = doc.getTableList().get(0);
+			OdfTableRow valueRows = odfTable.getRowByIndex(0);
+			for (int i = 0; i < 4; i++) {
+				OdfTableCell cell = valueRows.getCellByIndex(i);
+				Assert.assertNotNull(cell);
+				int value = cell.getDoubleValue().intValue();
+				Assert.assertEquals(1, value);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	private String[] getTestTableRowLabel(int rowCount) {
+		String[] rowLabels = new String[rowCount];
+		for (int i = 0; i < rowCount; i++) {
+			rowLabels[i] = "RowHeader" + i;
+		}
+		return rowLabels;
+	}
+
+	private String[] getTestTableColumnLabel(int columnCount) {
+		String[] columnLabels = new String[columnCount];
+		for (int i = 0; i < columnCount; i++) {
+			columnLabels[i] = "columnHeader" + i;
+		}
+		return columnLabels;
+
+	}
+
+	private double[][] getTestTableDataDouble(int rowCount, int columnCount) {
+		double[][] doubleArray = new double[rowCount][columnCount];
+		for (int i = 0; i < rowCount; i++) {
+			for (int j = 0; j < columnCount; j++) {
+				doubleArray[i][j] = i * j;
+			}
+		}
+		return doubleArray;
+	}
+
+	// Bug 294 Enable Tables to be inserted in Header Footer
+	@Test
+	public void testTableInHeaderFooter() {
+		try {
+			OdfDocument odfDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(mOdtTestFileName + ".odt"));
+			Map<String, StyleMasterPageElement> masterPages1 = odfDoc.getMasterPages();
+			StyleMasterPageElement masterPage1 = masterPages1.get("Standard");
+			Assert.assertNotNull(masterPage1);
+			int rowCount = 4;
+			int columnCount = 5;
+			OdfTable.newTable(masterPage1.newStyleHeaderElement(), getTestTableRowLabel(rowCount), getTestTableRowLabel(columnCount), getTestTableDataDouble(rowCount, columnCount));
+			OdfTable.newTable(masterPage1.newStyleFooterElement(), getTestTableRowLabel(rowCount), getTestTableRowLabel(columnCount), getTestTableDataDouble(rowCount, columnCount));
+
+			// ToDo: Should be added as test when header/footer styles are supported in ODFDOM
+//			HashMap<String, String> pageProps1 = getPageStyleProps(odfDoc, masterPage1);
+//			HashMap<String, String> footerProps1 = getFooterStyleProps(odfDoc, masterPage1);
+//			HashMap<String, String> headerProps1 = getHeaderStyleProps(odfDoc, masterPage1);
+
+			odfDoc.save(ResourceUtilities.newTestOutputFile("TestHeaderFooter.odt"));
+			odfDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestHeaderFooter.odt"));
+			Map<String, StyleMasterPageElement> masterPages2 = odfDoc.getMasterPages();
+			StyleMasterPageElement masterPage2 = masterPages2.get("Standard");
+
+				// Test if the new footer exists
+			StyleHeaderElement headerContentRoot2 = OdfElement.findFirstChildNode(StyleHeaderElement.class, masterPage2);
+			Assert.assertNotNull(headerContentRoot2);
+			StyleFooterElement footerContentRoot2 = OdfElement.findFirstChildNode(StyleFooterElement.class, masterPage2);
+			Assert.assertNotNull(footerContentRoot2);
+			
+		} catch (Exception ex) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, ex);
+		}
+
+	}
+
+	private Map<String, StyleMasterPageElement> getMasterPages(OdfDocument doc) throws Exception {
+	
+		OdfStylesDom stylesDoc = doc.getStylesDom();
+		OfficeMasterStylesElement masterStyles = OdfElement.findFirstChildNode(OfficeMasterStylesElement.class, stylesDoc.getRootElement());
+		Map<String, StyleMasterPageElement> masterPages = null;
+		if (masterStyles != null) {
+			NodeList lstMasterPages = stylesDoc.getElementsByTagNameNS(OdfDocumentNamespace.STYLE.getUri(), "master-page");
+			if (lstMasterPages != null && lstMasterPages.getLength() > 0) {
+				masterPages = new HashMap<String, StyleMasterPageElement>();
+				for (int i = 0; i < lstMasterPages.getLength(); i++) {
+					StyleMasterPageElement masterPage = (StyleMasterPageElement) lstMasterPages.item(i); //Take the node from the list
+					// ODFDOM ToDo?: Drop Attribute Suffix for methods returning String values and NOT Attributes
+					// ODFDOM ToDo?: Why is a method with Attirbute ending returng the value? BETTER: Drop the suffix?
+					String styleName = masterPage.getStyleNameAttribute();
+					masterPages.put(styleName, masterPage);
+				}
+			}
+		}
+		return masterPages;
+	}
+
+	// ODFDOM ToDo: http://odftoolkit.org/bugzilla/show_bug.cgi?id=293
+	// 293 - Adding optional Maps to generated ODF sources for indexed ODF elements
+	// Method To be moved on StyleMasterPageElement
+	private HashMap<String, String> getPageStyleProps(OdfDocument odfDoc, StyleMasterPageElement masterPage) throws Exception {
+		StylePageLayoutElement pageLayout = getMasterPageLayout(odfDoc, masterPage);
+
+		// ToDo: Access methods for MasterPage children NOT available!! & drop prefix/suffix
+		StylePageLayoutPropertiesElement pagePropsElement = OdfElement.findFirstChildNode(StylePageLayoutPropertiesElement.class, pageLayout);
+		Assert.assertNotNull(pagePropsElement);
+
+		// fill map with header attributes name/values
+		HashMap<String, String> pageProps = new HashMap<String, String>();
+		NamedNodeMap pageAttrs = pagePropsElement.getAttributes();
+		for (int i = 0; i < pageAttrs.getLength(); i++) {
+			pageProps.put(pageAttrs.item(i).getNamespaceURI() + pageAttrs.item(i).getLocalName(), pageAttrs.item(i).getNodeValue());
+		}
+		return pageProps;
+	}
+
+	// ODFDOM ToDo: http://odftoolkit.org/bugzilla/show_bug.cgi?id=293
+	// 293 - Adding optional Maps to generated ODF sources for indexed ODF elements
+	// Method To be moved on StyleMasterPageElement
+	private HashMap<String, String> getHeaderStyleProps(OdfDocument odfDoc, StyleMasterPageElement masterPage) throws Exception {
+		StylePageLayoutElement pageLayout = getMasterPageLayout(odfDoc, masterPage);
+		// ToDo: Combine a GETTER for header Properties in one method
+		StyleHeaderStyleElement headerStyle = OdfElement.findFirstChildNode(StyleHeaderStyleElement.class, pageLayout);
+		Assert.assertNotNull(headerStyle);
+		StyleHeaderFooterPropertiesElement headerStyleProps = OdfElement.findFirstChildNode(StyleHeaderFooterPropertiesElement.class, headerStyle);
+		Assert.assertNotNull(headerStyleProps);
+		// fill map with header attributes name/values
+		HashMap<String, String> headerProps = new HashMap<String, String>();
+		NamedNodeMap headerAttrs = headerStyleProps.getAttributes();
+		for (int i = 0; i < headerAttrs.getLength(); i++) {
+			headerProps.put(headerAttrs.item(i).getNamespaceURI() + headerAttrs.item(i).getLocalName(), headerAttrs.item(i).getNodeValue());
+		}
+		return headerProps;
+	}
+
+	// ODFDOM ToDo: http://odftoolkit.org/bugzilla/show_bug.cgi?id=293
+	// 293 - Adding optional Maps to generated ODF sources for indexed ODF elements
+	// Method To be moved on StyleMasterPageElement
+	private HashMap<String, String> getFooterStyleProps(OdfDocument odfDoc, StyleMasterPageElement masterPage) throws Exception {
+		StylePageLayoutElement pageLayout = getMasterPageLayout(odfDoc, masterPage);
+		// ODFDOM ToDo: Combine a GETTER for footer Properties in one method
+		StyleFooterStyleElement footerStyle = OdfElement.findFirstChildNode(StyleFooterStyleElement.class, pageLayout);
+		Assert.assertNotNull(footerStyle);
+		StyleHeaderFooterPropertiesElement footerStyleProps = OdfElement.findFirstChildNode(StyleHeaderFooterPropertiesElement.class, footerStyle);
+		Assert.assertNotNull(footerStyleProps);
+
+		// fill map with header attributes name/values
+		HashMap<String, String> footerProps = new HashMap<String, String>();
+		NamedNodeMap footerAttrs = footerStyleProps.getAttributes();
+		for (int i = 0; i < footerAttrs.getLength(); i++) {
+			footerProps.put(footerAttrs.item(i).getNamespaceURI() + footerAttrs.item(i).getLocalName(), footerAttrs.item(i).getNodeValue());
+		}
+		return footerProps;
+	}
+
+	// ODFDOM ToDo: http://odftoolkit.org/bugzilla/show_bug.cgi?id=292
+	// 292 - Usability: Generated ODF classes shall provide getter to element children
+	// Method should be generated per se
+	private StylePageLayoutElement getMasterPageLayout(OdfDocument odfDoc, StyleMasterPageElement masterPage) throws Exception {
+		// ODFDOM ToDo: Drop StylePageLayout as convenient and move those functions to convenient DOM part
+		// ODFDOM ToDo: Drop "Odf" Prefix, Drop Styles Prefix
+		// ODFDOM ToDo: Add methods to dedicated generated classes? (e.g. OfficeAutomaticStylesElement ?) BEST -- fill into a existing Java tempalte?
+		String pageLayoutName = masterPage.getStylePageLayoutNameAttribute();
+		Assert.assertNotNull(pageLayoutName);
+		StylePageLayoutElement pageLayout = odfDoc.getStylesDom().getAutomaticStyles().getPageLayout(pageLayoutName);
+		Assert.assertNotNull(pageLayout);
+		return pageLayout;
+	}
+
+	private void testAppendRow(TableTableElement table) {
+		OdfTable fTable = OdfTable.getInstance(table);
+		int count = fTable.getRowCount();
+		fTable.appendRow();
+		int newcount = fTable.getRowCount();
+		Assert.assertEquals(count + 1, newcount);
+	}
+
+	private void saveods() {
+		try {
+			mOdsDoc.save(ResourceUtilities.newTestOutputFile(mOdsTestFileName + "Output.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void saveodt(String filename) {
+		try {
+			mOdtDoc.save(ResourceUtilities.newTestOutputFile(filename));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfHeadingTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfHeadingTest.java
new file mode 100644
index 0000000..3b01add
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfHeadingTest.java
@@ -0,0 +1,263 @@
+/************************************************************************
+ *
+ * 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.text;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author instructor
+ */
+public class OdfHeadingTest {
+
+	private static final Logger LOG = Logger.getLogger(OdfHeadingTest.class.getName());
+	OdfTextDocument doc;
+	OdfFileDom dom;
+
+	public OdfHeadingTest() {
+	}
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = OdfTextDocument.newTextDocument();
+			dom = doc.getContentDom();
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test of addContent method, of class OdfHeading.
+	 */
+	@Test
+	public void testAddContent() {
+		LOG.info("addContent");
+		String content = "heading content";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContent(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(content, node.getTextContent());
+	}
+
+	/**
+	 * Test of addContentWhitespace method, of class OdfTextH.
+	 */
+	@Test
+	public void testAddContentWhitespace() {
+		LOG.info("text:h addContentWhitespace");
+		String content = "a\tb";
+		String part1 = "a";
+		String part2 = "b";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContentWhitespace(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+		node = node.getNextSibling();
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.TEXT.getUri(),
+				node.getNamespaceURI());
+		Assert.assertEquals("tab", node.getLocalName());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+	/**
+	 * Test of addStyledContent method, of class OdfHeading.
+	 */
+	@Test
+	public void testAddStyledContent() {
+		LOG.info("addStyleContent");
+		String content = "heading content";
+		String styleName = "testStyle";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), content);
+		Assert.assertEquals(instance.getStyleName(), styleName);
+	}
+
+	/**
+	 * Test of addStyledContentWhitespace method, of class OdfTextH.
+	 */
+	@Test
+	public void testAddStyledContentWhitespace() {
+		LOG.info("text:h addStyledContentWhitespace");
+		String content = "a\nb";
+		String part1 = "a";
+		String part2 = "b";
+		String styleName = "testStyle";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContentWhitespace(styleName, content);
+		Assert.assertEquals(styleName, instance.getStyleName());
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+		node = node.getNextSibling();
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.TEXT.getUri(),
+				node.getNamespaceURI());
+		Assert.assertEquals("line-break", node.getLocalName());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+	/**
+	 * Test of addStyledSpan method, of class OdfHeading.
+	 */
+	@Test
+	public void testAddStyledSpan() {
+		LOG.info("addStyleSpan");
+		String content = "heading content";
+		String spanContent = "span content";
+		String styleName = "testStyle";
+		String spanStyleName = "spanStyle";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		OdfTextSpan subElement;
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content).addStyledSpan(
+				spanStyleName, spanContent);
+
+		// first item should be text
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), content);
+		Assert.assertEquals(instance.getStyleName(), styleName);
+
+		// followed by a span
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertTrue(node instanceof OdfTextSpan);
+		subElement = (OdfTextSpan) node;
+
+		// with correct style and content
+		Assert.assertEquals(subElement.getStyleName(), spanStyleName);
+		node = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), spanContent);
+
+	}
+
+	/**
+	 * Test of addStyledSpan method, of class OdfTextP.
+	 */
+	@Test
+	public void testAddStyledSpanWhitespace() {
+		LOG.info("text:h addStyledSpanWhitespace");
+		String content = "heading content";
+		String spanContent = "span    content";  // four blanks
+		String part1 = "span ";
+		String part2 = "content";
+		String styleName = "testStyle";
+		String spanStyleName = "spanStyle";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		OdfTextSpan subElement;
+		Element element;
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content).addStyledSpanWhitespace(
+				spanStyleName, spanContent);
+
+		// first item should be text
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(content, node.getTextContent());
+		Assert.assertEquals(styleName, instance.getStyleName());
+
+		// followed by a span
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertTrue(node instanceof OdfTextSpan);
+		subElement = (OdfTextSpan) node;
+
+		// with correct style and content
+		Assert.assertEquals(subElement.getStyleName(), spanStyleName);
+		node = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals("s", node.getLocalName());
+		element = (Element) node;
+		Assert.assertEquals("3", element.getAttributeNS(
+				OdfDocumentNamespace.TEXT.getUri(), "c"));
+
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfListStyleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfListStyleTest.java
new file mode 100644
index 0000000..ec9e2a7
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfListStyleTest.java
@@ -0,0 +1,227 @@
+/************************************************************************
+ *
+ * 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.text;
+
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleElementBase;
+import org.odftoolkit.odfdom.dom.style.props.OdfListLevelProperties;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListLevelStyleBullet;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListLevelStyleNumber;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author J David Eisenberg
+ */
+public class OdfListStyleTest {
+	private static final Logger LOG = Logger.getLogger(OdfListStyleTest.class.getName());
+    OdfTextDocument doc;
+	OdfFileDom dom;
+	OdfOfficeAutomaticStyles documentStyles;
+
+	String[] listSpecTest = {
+		"*,>,##",
+		"I./1:/a)",
+		"1.!\u273f!(a)",
+	};
+
+	String[] delim = { ",", "/", "!" };
+
+	boolean[] show = { false, true, false };
+
+	String[][] levelType = { // B=bullet, N = numeric
+		{"B","B","B"},
+		{"N","N","N"},
+		{"N","B","N"}
+	};
+
+	String[][] formatChar = { // 1,I,a,A for numeric, char for bullet
+		{"*", ">", "#" },
+		{"I", "1", "a" },
+		{"1", "\u273f", "a"}
+	};
+
+	String[][] prefixSuffix = { // separated by slashes
+		{"/", "/", "/" },
+		{"/.", "/:", "/)"},
+		{"/.", "/", "(/)" }
+	};
+
+    public OdfListStyleTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfTextDocument.newTextDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+	    @Test
+    public void testBuildFromFormat() {
+		int i;
+		
+        LOG.info("createListStyle");
+        OdfTextListStyle instance = null;
+
+        for (i = 0; i < listSpecTest.length; i++)
+		{
+			LOG.info("List Format: " + listSpecTest[i]);
+			instance = new OdfTextListStyle(dom, "list" + i,
+				listSpecTest[i], delim[i], "1cm", show[i]);
+
+			Assert.assertNotNull(instance.getFirstChild());
+
+			checkNodes(instance, i);
+		}
+	}
+
+	/**
+	 * Test of addContent method, of class OdfListStyle.
+	 */
+	@Test
+	public void testAddContent() {
+		LOG.info("addContent");
+		String content = "heading content";
+		OdfTextHeading instance = new OdfTextHeading(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContent(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(content, node.getTextContent());
+	}
+
+	private void checkNodes(Node node, int position)
+	{
+		OdfTextListStyle theStyle;
+		OdfTextListLevelStyleBullet bullet;
+		OdfTextListLevelStyleNumber number;
+		TextListLevelStyleElementBase base;
+
+		int i = 0;
+		theStyle = (OdfTextListStyle) node;
+		Assert.assertTrue("Style name " +
+			theStyle.getStyleNameAttribute() + " incorrect",
+			theStyle.getStyleNameAttribute().equals("list" + position));
+		node = node.getFirstChild();
+
+		while (node != null)
+		{
+			Assert.assertTrue("More nodes than specifiers",
+				i < levelType[position].length);
+			String[] surround;
+			if (prefixSuffix[position][i].equals("/"))
+			{
+				surround = new String[2];
+				surround[0] = "";
+				surround[1] = "";
+			}
+			else
+			{
+				surround = prefixSuffix[position][i].split("/");
+			}
+			if (levelType[position][i].equals("B"))
+			{
+				Assert.assertTrue("Class is not bullet",
+					node instanceof OdfTextListLevelStyleBullet);
+				bullet = (OdfTextListLevelStyleBullet) node;
+				base = bullet;
+				Assert.assertEquals("Prefix incorrect",
+					surround[0], bullet.getStyleNumPrefixAttribute());
+				Assert.assertEquals("Suffix incorrect", surround[1],
+					bullet.getStyleNumSuffixAttribute());
+			}
+			else
+			{
+				Assert.assertTrue("Class is not number",
+					node instanceof OdfTextListLevelStyleNumber);
+				number = (OdfTextListLevelStyleNumber) node;
+				Assert.assertEquals(formatChar[position][i],
+					number.getStyleNumFormatAttribute());
+				base = number;
+				Assert.assertEquals("Prefix incorrect",
+					surround[0], number.getStyleNumPrefixAttribute());
+				Assert.assertEquals("Suffix incorrect", surround[1],
+					number.getStyleNumSuffixAttribute());
+			}
+			Assert.assertEquals("Level incorrect",
+				i+1, base.getTextLevelAttribute().intValue());
+
+			checkNumber(
+				"SpaceBefore",
+				base.getProperty(OdfListLevelProperties.SpaceBefore),
+				i+1);
+
+			checkNumber(
+				"MinLabelWidth",
+				base.getProperty(OdfListLevelProperties.MinLabelWidth),
+				1.0);
+
+			node = node.getNextSibling();
+			i++;
+		}
+    }
+
+	private void checkNumber(String message, String cssLength, double expected)
+	{
+		String cssAmount = cssLength.replaceFirst("cm","");
+		double amount = Double.valueOf(cssAmount);
+		Assert.assertEquals(message + " incorrect", expected, amount, 0.01);
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfListTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfListTest.java
new file mode 100644
index 0000000..d95e3a5
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfListTest.java
@@ -0,0 +1,180 @@
+/************************************************************************
+ *
+ * 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.text;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextList;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author J David Eisenberg
+ */
+public class OdfListTest {
+	private static final Logger LOG = Logger.getLogger(OdfListTest.class.getName());
+    OdfTextDocument doc;
+	OdfFileDom dom;
+	OdfOfficeAutomaticStyles documentStyles;
+
+	/*
+	 * This list purposely does not go in strict hierarchial order;
+	 * it skips around levels to make sure that the
+	 * proper elements are being produced in the correct places
+	 * without extraneous empty OdfListItems.
+	 */
+	String[] listContent = {
+		"Level zero A",
+		">>>>Level four A",
+		">>>>Level four B",
+		">>Level two A",
+		">>Level two B",
+		">>>Level three A",
+		">>>Level three B",
+		"Level zero B"
+	};
+
+	/*
+	 * L: expecting an OdfList
+	 * I: expecting an OdfItem
+	 * P: expecting an OdfParagraph with given content
+	 */
+	String[] expected = {
+		"L", "I", "PLevel zero A",
+		"L","I",
+		"L","I",
+		"L","I",
+		"L","I","PLevel four A",
+		"I", "PLevel four B",
+		"I", "PLevel two A", "I", "PLevel two B",
+		"L", "I", "PLevel three A", "I", "PLevel three B",
+		"I", "PLevel zero B"
+	};
+
+	int position = 0;
+
+    public OdfListTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfTextDocument.newTextDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+
+	/**
+	 * Test of constructor, of class OdfListStyle.
+	 */
+	@Test
+	public void testOdfList() {
+		LOG.info("odfList constructor");
+		String styleName = "lstyle";
+
+		OdfTextList instance = new OdfTextList(dom,
+			listContent, '>', styleName);
+		Node node;
+		Assert.assertNotNull(instance);
+		node = instance;
+		checkNode(node);
+	}
+
+	private void checkNode(Node node)
+	{
+		while (node != null)
+		{
+			Assert.assertTrue("More nodes than expected",
+				position < expected.length);
+			
+			if (expected[position].startsWith("L"))
+			{
+				Assert.assertTrue("Not a list", node instanceof OdfTextList);
+				position++;
+				if (node.hasChildNodes())
+				{
+					checkNode(node.getFirstChild());
+				}
+			}
+			else if (expected[position].startsWith("I"))
+			{
+				Assert.assertTrue("Not an item", node instanceof TextListItemElement);
+				position++;
+				if (node.hasChildNodes())
+				{
+					checkNode(node.getFirstChild());
+				}
+			}
+			else // it's a paragraph
+			{
+				checkParagraph(node, expected[position].substring(1));
+				position++;
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	private void checkParagraph(Node node, String value)
+	{
+		Node child;
+		Assert.assertTrue("Not a paragraph", node instanceof
+			TextPElement);
+		Assert.assertTrue("Paragraph has no child",
+			node.hasChildNodes());
+		child = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, child.getNodeType());
+		Assert.assertEquals(value, child.getTextContent());
+   }
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfParagraphTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfParagraphTest.java
new file mode 100644
index 0000000..87e915b
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfParagraphTest.java
@@ -0,0 +1,267 @@
+/************************************************************************
+ *
+ * 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.text;
+
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author instructor
+ */
+public class OdfParagraphTest {
+	private static final Logger LOG = Logger.getLogger(OdfParagraphTest.class.getName());
+    OdfTextDocument doc;
+	OdfFileDom dom;
+
+    public OdfParagraphTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfTextDocument.newTextDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+	/**
+	 * Test of addContent method, of class OdfParagraph.
+	 */
+	@Test
+	public void testAddContent() {
+		LOG.info("addContent");
+		String content = "paragraph content";
+		OdfTextParagraph instance = new OdfTextParagraph(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContent(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(content, node.getTextContent());
+	}
+
+	/**
+	 * Test of addContentWhitespace method, of class OdfTextP.
+	 */
+	@Test
+	public void testAddContentWhitespace() {
+		LOG.info("text:p addContentWhitespace");
+		String content = "a\tb";
+		String part1 = "a";
+		String part2 = "b";
+		OdfTextParagraph instance = new OdfTextParagraph(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContentWhitespace(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+		node = node.getNextSibling();
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.TEXT.getUri(),
+			node.getNamespaceURI());
+		Assert.assertEquals("tab", node.getLocalName());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+    /**
+	 * Test of addStyledContent method, of class OdfParagraph.
+	 */
+	@Test
+	public void testAddStyledContent() {
+		LOG.info("addStyleContent");
+		String content = "paragraph content";
+		String styleName = "testStyle";
+		OdfTextParagraph instance = new OdfTextParagraph(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), content);
+		Assert.assertEquals(instance.getStyleName(), styleName);
+	}
+
+	/**
+	 * Test of addStyledContentWhitespace method, of class OdfTextP.
+	 */
+	@Test
+	public void testAddStyledContentWhitespace() {
+		LOG.info("text:p addStyledContentWhitespace");
+		String content = "a\nb";
+		String part1 = "a";
+		String part2 = "b";
+		String styleName = "testStyle";
+		OdfTextParagraph instance = new OdfTextParagraph(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContentWhitespace(styleName, content);
+		Assert.assertEquals(styleName, instance.getStyleName());
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+		node = node.getNextSibling();
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals(OdfDocumentNamespace.TEXT.getUri(),
+			node.getNamespaceURI());
+		Assert.assertEquals("line-break", node.getLocalName());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+	/**
+	 * Test of addStyledSpan method, of class OdfParagraph.
+	 */
+	@Test
+	public void testAddStyledSpan() {
+		LOG.info("addStyleSpan");
+		String content = "heading content";
+		String spanContent = "span content";
+		String styleName = "testStyle";
+		String spanStyleName = "spanStyle";
+		OdfTextParagraph instance = new OdfTextParagraph(dom);
+		OdfTextSpan subElement;
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content).addStyledSpan(
+			spanStyleName, spanContent);
+
+		// first item should be text
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), content);
+		Assert.assertEquals(instance.getStyleName(), styleName);
+
+		// followed by a span
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertTrue(node instanceof OdfTextSpan);
+		subElement = (OdfTextSpan) node;
+
+		// with correct style and content
+		Assert.assertEquals(subElement.getStyleName(), spanStyleName);
+		node = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), spanContent);
+	}
+
+	/**
+	 * Test of addStyledSpan method, of class OdfTextP.
+	 */
+	@Test
+	public void testAddStyledSpanWhitespace() {
+		LOG.info("text:p addStyledSpanWhitespace");
+		String content = "heading content";
+		String spanContent = "span    content";  // four blanks
+		String part1 = "span ";
+		String part2 = "content";
+		String styleName = "testStyle";
+		String spanStyleName = "spanStyle";
+		OdfTextParagraph instance = new OdfTextParagraph(dom);
+		OdfTextSpan subElement;
+		Element element;
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content).addStyledSpanWhitespace(
+			spanStyleName, spanContent);
+
+		// first item should be text
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(content, node.getTextContent());
+		Assert.assertEquals(styleName, instance.getStyleName());
+
+		// followed by a span
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertTrue(node instanceof OdfTextSpan);
+		subElement = (OdfTextSpan) node;
+
+		// with correct style and content
+		Assert.assertEquals(subElement.getStyleName(), spanStyleName);
+		node = node.getFirstChild();
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals("s", node.getLocalName());
+		element = (Element) node;
+		Assert.assertEquals("3", element.getAttributeNS(
+			OdfDocumentNamespace.TEXT.getUri(), "c"));
+
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfSpanTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfSpanTest.java
new file mode 100644
index 0000000..90909c8
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfSpanTest.java
@@ -0,0 +1,170 @@
+/************************************************************************
+ *
+ * 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.text;
+
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author instructor
+ */
+public class OdfSpanTest {
+	private static final Logger LOG = Logger.getLogger(OdfSpanTest.class.getName());
+    OdfTextDocument doc;
+	OdfFileDom dom;
+
+    public OdfSpanTest() {
+    }
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+    @Before
+    public void setUp() {
+        try
+        {
+            doc = OdfTextDocument.newTextDocument();
+			dom = doc.getContentDom();
+        }
+        catch (Exception e)
+        {
+        	LOG.log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+	/**
+	 * Test of addContent method, of class OdfSpan.
+	 */
+	@Test
+	public void testAddContent() {
+		LOG.info("addContent");
+		String content = "span content";
+		OdfTextSpan instance = new OdfTextSpan(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContent(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(content, node.getTextContent());
+	}
+    
+	/**
+	 * Test of addContent method, of class OdfSpan.
+	 */
+	@Test
+	public void testAddContentWhitespace() {
+		LOG.info("text:span addContentWhitespace");
+		String content = "span\tcontent";
+		String part1 = "span";
+		String part2 = "content";
+		OdfTextSpan instance = new OdfTextSpan(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addContentWhitespace(content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals("tab", node.getLocalName());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+	/**
+	 * Test of addStyledContent method, of class OdfSpan.
+	 */
+	@Test
+	public void testAddStyledContent() {
+		LOG.info("addStyleContent");
+		String content = "span content";
+		String styleName = "testStyle";
+		OdfTextSpan instance = new OdfTextSpan(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContent(styleName, content);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(node.getTextContent(), content);
+		Assert.assertEquals(instance.getStyleName(), styleName);
+	}
+
+	/**
+	 * Test of addStyledContent method, of class OdfSpan.
+	 */
+	@Test
+	public void testAddStyledContentWhitespace() {
+		LOG.info("text:span addStyledContentWhitespace");
+		String content = "span\ncontent";
+		String styleName = "testStyle";
+		String part1 = "span";
+		String part2 = "content";
+		OdfTextSpan instance = new OdfTextSpan(dom);
+		Node node;
+		Assert.assertNotNull(instance);
+		instance.addStyledContentWhitespace(styleName, content);
+		Assert.assertEquals(instance.getStyleName(), styleName);
+		node = instance.getFirstChild();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part1, node.getTextContent());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+		Assert.assertEquals("line-break", node.getLocalName());
+		node = node.getNextSibling();
+		Assert.assertNotNull(node);
+		Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+		Assert.assertEquals(part2, node.getTextContent());
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfWhitespaceProcessorTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfWhitespaceProcessorTest.java
new file mode 100644
index 0000000..be397dd
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/doc/text/OdfWhitespaceProcessorTest.java
@@ -0,0 +1,195 @@
+/************************************************************************
+ *
+ * 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.text;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfWhitespaceProcessor;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * 
+ * @author J David Eisenberg
+ */
+public class OdfWhitespaceProcessorTest {
+	private static final Logger LOG = Logger.getLogger(OdfWhitespaceProcessorTest.class.getName());
+	OdfTextDocument doc;
+	OdfFileDom dom;
+	String[] plainText = { "nospace", "one space", "two  spaces",
+			"three   spaces", "   three leading spaces",
+			"three trailing spaces   ", "one\ttab", "two\t\ttabs",
+			"\tleading tab", "trailing tab\t", "mixed   \t   spaces and tabs",
+			"line\nbreak" };
+
+	String[][] elementResult = { { "nospace" }, { "one space" },
+			{ "two ", "*s1", "spaces" }, { "three ", "*s2", "spaces" },
+			{ " ", "*s2", "three leading spaces" },
+			{ "three trailing spaces ", "*s2" }, { "one", "*t", "tab" },
+			{ "two", "*t", "*t", "tabs" }, { "*t", "leading tab" },
+			{ "trailing tab", "*t" },
+			{ "mixed ", "*s2", "*t", " ", "*s2", "spaces and tabs" },
+			{ "line", "*n", "break" } };
+
+	public OdfWhitespaceProcessorTest() {
+	}
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = OdfTextDocument.newTextDocument();
+			dom = doc.getContentDom();
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test of append method, of class OdfWhitespaceProcessor.
+	 */
+	@Test
+	public void testAppend() {
+		LOG.info("append");
+		Element element = null;
+		OdfWhitespaceProcessor instance = new OdfWhitespaceProcessor();
+		int i;
+		for (i = 0; i < plainText.length; i++) {
+			element = new OdfTextParagraph(dom);
+			instance.append(element, plainText[i]);
+			compareResults(element, plainText[i], elementResult[i]);
+		}
+	}
+
+	private void compareResults(Element element, String input, String[] output) {
+		int i;
+		int nSpaces;
+		int nSpacesInAttribute;
+		Node node = element.getFirstChild();
+		for (i = 0; i < output.length; i++) {
+			if (output[i].startsWith("*")) {
+				Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+				if (output[i].equals("*t")) {
+					Assert.assertEquals("tab", node.getLocalName());
+				} else if (output[i].equals("*n")) {
+					Assert.assertEquals("line-break", node.getLocalName());
+				} else {
+					nSpaces = Integer.parseInt(output[i].substring(2));
+					Assert.assertEquals(node.getLocalName(), "s");
+					nSpacesInAttribute = Integer.parseInt(((Element) node)
+							.getAttribute("text:c"));
+					Assert.assertEquals(nSpaces, nSpacesInAttribute);
+				}
+			} else {
+				Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+				Assert.assertEquals(output[i], node.getTextContent());
+			}
+			node = node.getNextSibling();
+		}
+		Assert.assertEquals(node, null);
+	}
+
+	/**
+	 * Test of getText method, of class OdfWhitespaceProcessor.
+	 */
+	@Test
+	public void testGetText() {
+		LOG.info("getText");
+		Node element = null;
+		OdfWhitespaceProcessor instance = new OdfWhitespaceProcessor();
+		int i;
+		String expResult = "";
+		String result;
+		for (i = 0; i < plainText.length; i++) {
+			element = new OdfTextParagraph(dom);
+			constructElement(element, elementResult[i]);
+			result = plainText[i];
+			expResult = instance.getText(element);
+			Assert.assertEquals(expResult, result);
+		}
+	}
+
+	private void constructElement(Node element, String[] expected) {
+		int i;
+		int nSpaces;
+		TextSElement spaceElement;
+
+		for (i = 0; i < expected.length; i++) {
+			if (expected[i].startsWith("*")) {
+				if (expected[i].equals("*t")) {
+					element.appendChild(new TextTabElement(dom));
+				} else if (expected[i].equals("*n")) {
+					element.appendChild(new TextLineBreakElement(dom));
+				} else {
+					nSpaces = Integer.parseInt(expected[i].substring(2));
+					spaceElement = new TextSElement(dom);
+					spaceElement.setTextCAttribute(nSpaces);
+					element.appendChild(spaceElement);
+				}
+			} else {
+				element.appendChild(dom.createTextNode(expected[i]));
+			}
+		}
+	}
+
+	/**
+	 * Test of appendText method, of class OdfWhitespaceProcessor.
+	 */
+	@Test
+	public void testAppendText() {
+		LOG.info("appendText");
+		Element element = null;
+		int i;
+		for (i = 0; i < plainText.length; i++) {
+			element = new OdfTextParagraph(dom);
+			OdfWhitespaceProcessor.appendText(element, plainText[i]);
+			compareResults(element, plainText[i], elementResult[i]);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/XPathTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/XPathTest.java
new file mode 100644
index 0000000..436e1ea
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/XPathTest.java
@@ -0,0 +1,256 @@
+/************************************************************************
+ *
+ * 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.dom;
+
+import java.util.Iterator;
+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.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.pkg.OdfAlienElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfPresentationDocument;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XPathTest {
+
+	private static final Logger LOG = Logger.getLogger(XPathTest.class.getName());
+	private static final String SOURCE_FILE_1 = "XPathTest-foreignPrefix.odp";
+	private static final String SOURCE_FILE_2 = "XPathTest-foreignPrefix2.odp";
+        private static final String SOURCE_FILE_3 = "XPathTest-duplicate-prefix.odt";
+	/**
+	 * 1) The first test document "XPathTest-foreignPrefix.odp" uses the prefix "daisy" instead of "office" for ODF XML elements.
+	   <daisy:document-content xmlns:daisy="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="ur...
+			<daisy:scripts/>
+			<daisy:automatic-styles>
+
+
+	 * 2) The test doc also uses multiple identical namespace prefixes with different URIs.
+	 * <text:p>Slide
+	 *		<draw:element1 xmlns:draw="urn://dummy-namespace-one">
+	 *			<draw:element2 xmlns:draw="urn://dummy-namespace-two"
+	 *				draw:attribute2="importantValue">dummy</draw:element2></draw:element1>One!!</text:p>
+	 * It will be tested, if they have been renamed correctly.
+
+	 * 3) The test doc also uses multiple different namespace prefixes with the similar URIs.
+	 *    Testing getPrefixes(String URI) from the NamespaceContext interface.
+	 * <text:p>Slide
+	 *		<prefixOne:element1 xmlns:prefixOne="urn://some-test-odfdom-namespace">
+	 *			<prefixTwo:element2 xmlns:prefixTwo="urn://some-test-odfdom-namespace"
+	 *				prefixTwo:attribute2="importantValue">dummy</prefixTwo:element2></prefixOne:element1>Two!!</text:p>
+	 *
+	 * 4) Having element and attribute without namespace
+	 * <!-- element and attribute without namespace with an attribute value with a namespace prefix as well -->
+       <text:p xmlns:alien="urn://some-test-attribute-value-namespace"
+	 *		foreign="alien:valueOfAlienAttribute">Some<test>good</test> Content!!</text:p>
+
+	 */
+	@Test
+	public void testXPathwithAlienNodes() throws Exception {
+		try {
+			OdfPresentationDocument odpWithSlides = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE_FILE_1));
+			OdfFileDom contentDom = odpWithSlides.getContentDom();
+
+			XPath xpath = contentDom.getXPath();
+			// Test scenario 1 - see comment above
+			Iterator<String> prefixes = contentDom.getPrefixes("urn:oasis:names:tc:opendocument:xmlns:office:1.0");
+			// The first prefix have to be "office"
+			String prefix = prefixes.next();
+			Assert.assertTrue(prefix.equals("office") || prefix.equals("daisy"));
+			if(prefix.equals("office")){
+				prefix = prefixes.next();
+				Assert.assertTrue(prefix.equals("daisy"));
+			}else if(prefix.equals("daisy")){
+				prefix = prefixes.next();
+				Assert.assertTrue(prefix.equals("office"));
+			}else{
+				Assert.fail();
+			}
+			// There should be no further prefix
+			Assert.assertFalse(prefixes.hasNext());
+					
+			Iterator<String> prefixes2 = contentDom.getPrefixes("urn://some-test-odfdom-namespace");
+			prefix = prefixes2.next();
+			Assert.assertTrue(prefix.equals("prefixOne") || prefix.equals("prefixTwo"));
+			if(prefix.equals("prefixOne")){
+				prefix = prefixes2.next();
+				Assert.assertTrue(prefix.equals("prefixTwo"));				
+			}else if(prefix.equals("prefixTwo")){
+				prefix = prefixes2.next();
+				Assert.assertTrue(prefix.equals("prefixOne"));				
+			}else{
+				Assert.fail();
+			}
+			// There should be no further prefix
+			Assert.assertFalse(prefixes.hasNext());
+
+			Node rootNode = contentDom.getRootElement();
+			odpWithSlides.save(ResourceUtilities.newTestOutputFile("XPathTest-ForeignPrefix-output.odp"));
+
+			if (rootNode instanceof OdfAlienElement) {
+				Assert.fail("The none OOO default prefix for office: was not exchanged!");
+			}
+			NodeList styleNameAttributes = (NodeList) xpath.evaluate(".//*[@style:name]", rootNode, XPathConstants.NODESET);
+			LOG.log(Level.INFO, "Amount of style:name is {0}", styleNameAttributes.getLength());
+
+			Assert.assertTrue(styleNameAttributes.getLength() == 11);
+			// test if the identical namespace prefixes with different URI have been renamed correctly (earlier draw:element1/draw:element2).
+			String attributeWithDuplicatePrefix = (String) xpath.evaluate(".//draw__1:element1/draw__2:element2/@draw__2:attribute2", rootNode, XPathConstants.STRING);
+			Assert.assertTrue(attributeWithDuplicatePrefix.equals("importantValue"));
+			Assert.assertEquals("urn:oasis:names:tc:opendocument:xmlns:office:1.0", xpath.getNamespaceContext().getNamespaceURI("office"));
+			Assert.assertEquals("http://www.w3.org/1999/xlink", xpath.getNamespaceContext().getNamespaceURI("xlink"));
+
+			String alienAttributeValue = (String) xpath.evaluate(".//*/@foreign", rootNode, XPathConstants.STRING);
+			LOG.log(Level.INFO, "The value of the alien attribute is {0}, expected is ''alien:valueOfAlienAttribute''!", alienAttributeValue);
+			Assert.assertEquals("alien:valueOfAlienAttribute", alienAttributeValue);
+
+			String alienElementValue = (String) xpath.evaluate("//text:p/test", rootNode, XPathConstants.STRING);
+			LOG.log(Level.INFO, "The value of the alien element is {0}, expected is ''good''!", alienElementValue);
+			Assert.assertEquals("good", alienElementValue);
+			LOG.log(Level.INFO, "Amount of @alien:foreignAttribute and @style:name is {0}", ((NodeList) xpath.evaluate(".//*[@alien:foreignAttribute or @style:name]", rootNode, XPathConstants.NODESET)).getLength());
+			Assert.assertTrue("Amount of @alien:foreignAttribute and @style:name is not 13!!", ((NodeList) xpath.evaluate(".//*[@alien:foreignAttribute or @style:name]", rootNode, XPathConstants.NODESET)).getLength() == 13);
+			
+			// Test if an empty iterator is being returned for a none existing URL
+			Iterator<String> prefixes3 = contentDom.getPrefixes("urn://this-prefix-does-not-exist-in-the-xml");
+			Assert.assertFalse("Not used prefix returned a none-empty iterator!", prefixes3.hasNext());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.toString());
+		}
+	}
+
+	/**
+	 * A typical test, that deals with xlinks in SOURCE_FILE_2
+	 */
+	@Test
+	public void testCopyForeignSlide() {
+		try {
+			OdfPresentationDocument targetodp = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE_FILE_1));
+			OdfPresentationDocument sourceodp = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE_FILE_2));
+
+			int slidecount = sourceodp.getSlideCount();
+			for (int i = 0; i < slidecount; i++) {
+				targetodp.copyForeignSlide(i, sourceodp, i);
+			}
+			targetodp.save(ResourceUtilities.newTestOutputFile("XPathTest-ForeignPrefix2-output.odp"));
+			targetodp.close();
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.toString());
+		}
+	}
+
+	/**
+	 * This test SHOULD fail, but it isn't. Its source code is identical to the first test in this unit test
+	 * @throws Exception
+	 */
+	@Test
+	public void testXPathIsMissingXLinkButItWillPassBecauseItTheSecondTestInThisUnitTest() throws Exception {
+		try {
+			OdfPresentationDocument odpWithSlides = OdfPresentationDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE_FILE_1));
+			OdfFileDom contentDom = odpWithSlides.getContentDom();
+			XPath xpath = contentDom.getXPath();
+
+			Node node = odpWithSlides.getContentDom().getRootElement();
+			NodeList linkNodes = (NodeList) xpath.evaluate(".//*[@xlink:href]", node, XPathConstants.NODESET);
+			Assert.assertNotNull(linkNodes);
+			Assert.assertEquals("urn:oasis:names:tc:opendocument:xmlns:office:1.0", xpath.getNamespaceContext().getNamespaceURI("office"));
+			Assert.assertEquals("http://www.w3.org/1999/xlink", xpath.getNamespaceContext().getNamespaceURI("xlink"));
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.toString());
+		}
+	}
+
+        /**
+         * This test checks if the XPath returned by OdfFileDom is correctly aware of namespacess.
+         * The NamespaceContext implementation in OdfFileDom is aware of duplicate prefixes, but getNamespaceURI(prefix)
+         * in OdfFileDom does not implement it correctly
+         *
+         * With the patch applied in OdfFileDom these tests pass correctly
+         *
+         * sample metadata rdf generate from Openoffice 3.3 looks like this :
+         * <?xml version="1.0" encoding="utf-8"?>
+         *   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+         *     <rdf:Description rdf:about="../content.xml#id1366098766">
+         *       <ns1:BungeniActionEvent xmlns:ns1="http://editor.bungeni.org/1.0/anx/"></ns1:BungeniActionEvent>
+         *       <ns2:BungeniSectionID xmlns:ns2="http://editor.bungeni.org/1.0/anx/">Xda+5VC/SQKKG7Bk83a2JA</ns2:BungeniSectionID>
+         *       <ns3:BungeniSectionType xmlns:ns3="http://editor.bungeni.org/1.0/anx/">Conclusion</ns3:BungeniSectionType>
+         *       <ns4:hiddenBungeniMetaEditable xmlns:ns4="http://editor.bungeni.org/1.0/anx/">false</ns4:hiddenBungeniMetaEditable>
+         *     </rdf:Description>
+         *
+         * @throws Exception
+         */
+        @Test
+        public void testXPathDuplicatePrefixForForeignNamespace() throws Exception{
+           try {
+
+            OdfDocument odfDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE_FILE_3));
+            OdfFileDom fileDom = odfDoc.getFileDom("meta/meta.rdf");
+            
+            // add additional duplicate NS prefixes to the DOM
+            fileDom.setNamespace("anx", "http://editor.bungeni.org/1.0/anx/");
+            fileDom.setNamespace("myrdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
+
+            //get the XPath from the file dom and set its NS context to the OdfFileDom object
+            XPath xpathFileDom = fileDom.getXPath();
+            xpathFileDom.setNamespaceContext(fileDom);
+
+            //PASS - this works correctly
+            String rdfNsUri = fileDom.getNamespaceURI("rdf");
+            LOG.log(Level.INFO, "The value of the nsuri is {0} expected ns-uri is ''http://www.w3.org/1999/02/22-rdf-syntax-ns#''", rdfNsUri);
+            Assert.assertEquals("http://www.w3.org/1999/02/22-rdf-syntax-ns#", rdfNsUri);
+
+            //FAIL - for duplicate RDF ns prefix
+            String myrdfNsUri = fileDom.getNamespaceURI("myrdf");
+            LOG.log(Level.INFO, "The value of the nsuri is {0} expected ns-uri is ''http://www.w3.org/1999/02/22-rdf-syntax-ns#''", myrdfNsUri);
+            Assert.assertEquals("http://www.w3.org/1999/02/22-rdf-syntax-ns#", myrdfNsUri);
+
+            //PASS - for custom NS prefix in document, only the first one
+            String anxNsUri1 = fileDom.getNamespaceURI("ns1");
+            LOG.log(Level.INFO, "The value of the nsuri is {0} expected ns-uri is ''http://editor.bungeni.org/1.0/anx/''", anxNsUri1);
+            Assert.assertEquals("http://editor.bungeni.org/1.0/anx/", anxNsUri1);
+
+            //FAIL - for custom NS prefix in document ns3, ns4, ns...
+            String anxNsUri2 = fileDom.getNamespaceURI("ns2");
+            LOG.log(Level.INFO, "The value of the ns-uri is {0} expected ns-uri is ''http://editor.bungeni.org/1.0/anx/''", anxNsUri2);
+            Assert.assertEquals("http://editor.bungeni.org/1.0/anx/", anxNsUri2);
+
+            //FAIL - for custom duplicate NS prefix anx
+            String anxNsUriCustom = fileDom.getNamespaceURI("anx");
+            LOG.log(Level.INFO, "The value of the ns-uri is {0} expected ns-uri is ''http://editor.bungeni.org/1.0/anx/''", anxNsUriCustom);
+            Assert.assertEquals("http://editor.bungeni.org/1.0/anx/", anxNsUriCustom);
+
+           } catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.toString());
+           }
+        }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/LoadMultipleTimes.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/LoadMultipleTimes.java
new file mode 100644
index 0000000..b45eecd
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/LoadMultipleTimes.java
@@ -0,0 +1,71 @@
+/************************************************************************
+ *
+ * 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.dom.example;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+
+public class LoadMultipleTimes {
+
+	final static int num = 50;
+	private static final Logger LOG = Logger.getLogger(LoadMultipleTimes.class.getName());
+
+	@Test
+	@Ignore
+	/** A testdocument will be loaded and closed repeatedly and the memory will be logged.
+	Loading is tested with and without disc memory usage */
+	public void testRepeatedLoading() {
+		System.setProperty("org.odftoolkit.odfdom.tmpfile.disable", "true");
+		repeatedLoading();
+		System.setProperty("org.odftoolkit.odfdom.tmpfile.disable", "false");
+		repeatedLoading();
+	}
+
+	// ToDO: Load instead the specification as extreme example (not neccessarily 50 times)
+	private void repeatedLoading() {
+		long t = 0;
+		for (int i = 0; i < num; i++) {
+			try {
+				long t1 = System.currentTimeMillis();
+				OdfDocument doc = OdfDocument.loadDocument("src/test/resources/test1.odt");
+				OdfContentDom dom1 = doc.getContentDom();
+				OdfStylesDom dom2 = doc.getStylesDom();
+				long t2 = System.currentTimeMillis() - t1;
+				t = t + t2;
+				LOG.info("Open in " + t2 + " milliseconds");
+				long f1 = Runtime.getRuntime().freeMemory();
+				doc.close();
+				Runtime.getRuntime().gc();
+				long f2 = Runtime.getRuntime().freeMemory();
+				LOG.info("Freemem pre-gc: " + f1 + ", post-gc: " + f2 + ", delta: " + (f1 - f2) + ".");
+			} catch (Exception ex) {
+				Logger.getLogger(LoadMultipleTimes.class.getName()).log(Level.SEVERE, null, ex);
+			}
+		}
+		LOG.info("Opening " + num + " times took " + t + " milliseconds");
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleExample1.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleExample1.java
new file mode 100644
index 0000000..41fdd60
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleExample1.java
@@ -0,0 +1,68 @@
+/************************************************************************
+ *
+ * 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.dom.example;
+
+
+class StyleExample1 {
+/* todo: refactor            
+    public static void main(String[] args) {
+
+        try {
+            OdfDocument odfdoc = OdfDocument.OdfDocument("test/resources/test1.odt");
+            LOG.info("parsed document.");
+            
+            OdfElement e = (OdfElement) odfdoc.getContentDom().getDocumentElement();
+            NodeAction dumpStyles = new NodeAction() {
+                protected void apply(Node node, Object arg, int depth) {
+                    String indent = new String();
+                    for (int i=0; i<depth; i++) indent += "  ";
+                    LOG.info(indent + node.getNodeName());
+                    if (node.getNodeType() == Node.TEXT_NODE) {
+                        LOG.info(": " + node.getNodeValue());
+                    }
+                    LOG.info();
+                    if (node instanceof OdfStylableElement) {
+                        try {
+                            LOG.info(indent + "-style info...");
+                            OdfStylableElement se = (OdfStylableElement) node;
+                            OdfStyle ds = se.getDocumentStyle();
+                            OdfStyle ls = se.getAutomaticStyle();
+                            if (ls != null) {
+                                LOG.info(indent + "-OdfLocalStyle: " + ls);
+                            }
+                            if (ds != null) {
+                                LOG.info(indent + "-OdfDocumentStyle: " + ds);
+                            }
+                        } catch (Exception ex) {
+                            Logger.getLogger(StyleExample1.class.getName()).log(Level.SEVERE, null, ex);
+                        }
+                    }
+                }
+            };       
+            dumpStyles.performAction(e, null);                
+            // serializeXml(e, System.out);                                    
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    } */
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleExamplesTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleExamplesTest.java
new file mode 100644
index 0000000..c6e573d
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleExamplesTest.java
@@ -0,0 +1,217 @@
+/************************************************************************
+ *
+ * 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.dom.example;
+
+import static java.util.logging.Level.INFO;
+
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableRowPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.utils.NodeAction;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author j
+ */
+public class StyleExamplesTest {
+
+	private static String TEST_FILE = "test2.odt";
+	private static final Logger LOG = Logger.getLogger(StyleExamplesTest.class.getName());
+
+	static class DumpPropertyAndText extends NodeAction<ArrayList<String>> {
+
+		OdfStyleProperty desiredProperty; // = OdfTextProperties.FontName;
+
+		public DumpPropertyAndText(OdfStyleProperty desiredProperty) {
+			this.desiredProperty = desiredProperty;
+		}
+
+		@Override
+		protected void apply(Node textNode, ArrayList<String> fontAndText, int depth) {
+
+			if (textNode.getNodeType() != Node.TEXT_NODE) {
+				return;
+			}
+			if (textNode.hasChildNodes()) {
+				return;
+			}
+
+			LOG.finest(textNode.getParentNode().toString());
+
+			String teksto = textNode.getTextContent().trim();
+			if (teksto.length() == 0) {
+				return;
+			}
+
+			String font = StyleUtils.findActualStylePropertyValueForNode(textNode, desiredProperty);
+
+			LOG.log(Level.FINEST, "{0}: {1}", new Object[]{font, teksto});
+			fontAndText.add(font + ": " + teksto);
+		}
+	}
+
+	@Test
+	public void displayActualFontForEachTextNode() throws Exception {
+		OdfDocument odfDocument = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+		OdfElement documentRoot = (OdfElement) odfDocument.getContentDom().getDocumentElement();
+
+		ArrayList<String> fontAndText = new ArrayList<String>();
+
+		DumpPropertyAndText dumpFontAndText = new DumpPropertyAndText(StyleTextPropertiesElement.FontName);
+		dumpFontAndText.performAction(documentRoot, fontAndText);
+
+		Assert.assertEquals("Thorndale: Hello", fontAndText.get(0));
+		Assert.assertEquals("Thorndale: world", fontAndText.get(1));
+		Assert.assertEquals("Thorndale: absatz", fontAndText.get(2));
+		Assert.assertEquals("Cumberland: z", fontAndText.get(3));
+		Assert.assertEquals("Cumberland: we", fontAndText.get(4));
+		Assert.assertEquals("Cumberland: i", fontAndText.get(5));
+		Assert.assertEquals("Thorndale: Absatz", fontAndText.get(6));
+		Assert.assertEquals("Thorndale: drei", fontAndText.get(7));
+		Assert.assertEquals("Thorndale: num 1", fontAndText.get(8));
+		Assert.assertEquals("Thorndale: num 2", fontAndText.get(9));
+		Assert.assertEquals("Thorndale: bullet1", fontAndText.get(10));
+		Assert.assertEquals("Thorndale: bullet2", fontAndText.get(11));
+	}
+
+	@Test
+	@SuppressWarnings("unchecked")
+	public void dumpAllStyles() throws Exception {
+		if (LOG.isLoggable(INFO)) {
+			OdfDocument odfdoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+			LOG.info("Parsed document.");
+
+			OdfElement e = (OdfElement) odfdoc.getContentDom().getDocumentElement();
+			NodeAction dumpStyles = new NodeAction() {
+
+				@Override
+				protected void apply(Node node, Object arg, int depth) {
+					String indent = new String();
+					for (int i = 0; i < depth; i++) {
+						indent += "  ";
+					}
+					if (node.getNodeType() == Node.TEXT_NODE) {
+						LOG.log(INFO, "{0}{1}", new Object[]{indent, node.getNodeName()});
+						LOG.log(INFO, ": {0}\n", node.getNodeValue());
+					}
+					if (node instanceof OdfStylableElement) {
+						try {
+							//LOG.info(indent + "-style info...");
+							OdfStylableElement se = (OdfStylableElement) node;
+							OdfStyleBase as = se.getAutomaticStyle();
+							OdfStyle ds = se.getDocumentStyle();
+							if (as != null) {
+								LOG.log(INFO, "{0}-AutomaticStyle: {1}", new Object[]{indent, as});
+							}
+							if (ds != null) {
+								LOG.log(INFO, "{0}-OdfDocumentStyle: {1}", new Object[]{indent, ds});
+							}
+						} catch (Exception ex) {
+							LOG.log(Level.SEVERE, ex.getMessage(), ex);
+						}
+					}
+				}
+			};
+			dumpStyles.performAction(e, null);
+		}
+	}
+
+	@Test
+	public void testDefaultStyles() {
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+			doc.getDocumentStyles();
+			OdfDefaultStyle oDSG = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Graphic);
+			Assert.assertEquals(oDSG.getFamilyName(), OdfStyleFamily.Graphic.getName());
+			String prop1 = oDSG.getProperty(StyleGraphicPropertiesElement.ShadowOffsetX);
+			Assert.assertEquals(prop1, "0.1181in");
+
+			OdfDefaultStyle oDSP = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Paragraph);
+			Assert.assertEquals(oDSP.getFamilyName(), OdfStyleFamily.Paragraph.getName());
+			String prop2 = oDSP.getProperty(StyleTextPropertiesElement.FontName);
+			Assert.assertEquals(prop2, "Thorndale");
+			String prop3 = oDSP.getProperty(StyleTextPropertiesElement.LetterKerning);
+			Assert.assertEquals(prop3, "true");
+
+			OdfDefaultStyle oDST = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Table);
+			Assert.assertEquals(oDST.getFamilyName(), OdfStyleFamily.Table.getName());
+			String prop4 = oDST.getProperty(StyleTablePropertiesElement.BorderModel);
+			Assert.assertEquals(prop4, "collapsing");
+
+
+			OdfDefaultStyle oDSTR = doc.getDocumentStyles().getDefaultStyle(OdfStyleFamily.TableRow);
+			Assert.assertEquals(oDSTR.getFamilyName(), OdfStyleFamily.TableRow.getName());
+			String prop5 = oDSTR.getProperty(StyleTableRowPropertiesElement.KeepTogether);
+			Assert.assertEquals(prop5, "auto");
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+    @Test
+	@Ignore
+	/** Should there be a validation in the future? */
+    public void testSetValue() throws Exception {
+        OdfTextDocument odt = OdfTextDocument.newTextDocument();
+        OdfContentDom dom = odt.getContentDom();
+        OdfStyle style1 = new OdfStyle(dom);
+
+        // No exception should be thrown here
+        style1.setStyleFamilyAttribute(OdfStyleFamily.Paragraph.toString());
+        assertEquals(style1.getStyleFamilyAttribute(), OdfStyleFamily.Paragraph.toString());
+
+        // Catch only IllegalArgumentException
+        try {
+            style1.setStyleFamilyAttribute("ImSoInvalid");
+        } catch (IllegalArgumentException e) {
+            return;   // test passed
+        }
+        // We need an exception from the setValue method! Otherwise we don't know that an empty attribute node has to be removed
+        fail("An IllegalArgumentException has to be thrown for invalid attributes so the attribute node can be removed afterwards.");
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleUtils.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleUtils.java
new file mode 100644
index 0000000..f5ff8ea
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/StyleUtils.java
@@ -0,0 +1,76 @@
+/************************************************************************
+ *
+ * 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.dom.example;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author j
+ */
+class StyleUtils {
+
+  
+    /**
+     * Returns a property for a (text) node, as it would appear for a user in OpenOffice:
+     * First examining the style (and the style's parent styles) and if the property is not
+     * found the search continues in the enclosing node, and so on, until an enclosing node
+     * is found, whitc has a style (or an inherited style) where the property is defined.
+     * Example: findActualStylePropertyValueForNode(textNode, OdfTextProperties.FontName) will give the font name
+     * @param node (text) node to be examined
+     * @param propertyName for example OdfTextProperties.FontName
+     * @return proterty the value of the property, for example "Thorndale"
+     */
+    static String findActualStylePropertyValueForNode(Node node, OdfStyleProperty propertyName) {
+      Node nodeWithStyle = node;
+
+      while (nodeWithStyle!=null && !(nodeWithStyle instanceof OdfStylableElement)) {
+            nodeWithStyle = nodeWithStyle.getParentNode();
+        }
+
+      if (nodeWithStyle==null) {
+        // Property value not found in any nodes' styles!
+        return null;
+      }
+
+
+      String propertyValue = ((OdfStylableElement) nodeWithStyle).getProperty(propertyName);
+
+      if (propertyValue != null) {
+            return propertyValue;
+        }
+
+      // Continue the search in enclosing nodes
+      return findActualStylePropertyValueForNode(nodeWithStyle.getParentNode(), propertyName);
+
+    }
+
+    private StyleUtils() {
+    }
+
+
+
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/WikiExampleTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/WikiExampleTest.java
new file mode 100644
index 0000000..2aa31b1
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/dom/example/WikiExampleTest.java
@@ -0,0 +1,124 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.odfdom.dom.example;
+
+import java.net.URI;
+import org.junit.Ignore;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+
+/** The test was deactivated. As an invalid value will no longer throw an exception and cause the removal of the attribute. */
+public class WikiExampleTest {
+
+	@Test
+	@Ignore
+	public void testWikiExamples1() throws Exception {
+
+		// WIKI EXAMPLE I from http://odftoolkit.org/projects/odfdom/pages/Home
+
+		// Create a text document from a standard template (empty documents within the JAR)
+		OdfTextDocument odt = OdfTextDocument.newTextDocument();
+
+		// Append text to the end of the document.
+		odt.addText("This is my very first ODF test");
+
+		// Save document
+		odt.save("MyFilename.odt");
+	}
+
+
+	@Test
+	@Ignore
+	public void testWikiExamples2() throws Exception {
+
+		//********************************************************************
+		// WIKI EXAMPLE I from http://odftoolkit.org/projects/odfdom/pages/Layers
+
+		// loads the ODF document package from the path
+		OdfPackage pkg = OdfPackage.loadPackage("/home/myDocuments/myVacation.odt");
+
+		// loads the image from the URL and inserts the image in the package,
+		// adapting the manifest
+		pkg.insert(new URI("./myHoliday.png"), "Pictures/myHoliday.png", "image/png");
+		pkg.save("/home/myDocuments/myVacation.odt");
+
+
+
+		//********************************************************************
+		// WIKI EXAMPLE II from http://odftoolkit.org/projects/odfdom/pages/Layers
+
+		// Load file
+		OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument("ImageIn.odt");
+
+		// get root of all content of a text document
+		OfficeTextElement officeText = odt.getContentRoot();
+
+		// get first paragraph
+		TextPElement firstParagraph =
+		  OdfElement.findFirstChildNode(TextPElement.class, officeText);
+
+		// XPath alternative to get the first paragraph
+		/*
+		  XPath xpath = XPathFactory.newInstance().newXPath();
+		  xpath.setNamespaceContext(new OdfNamespace());
+		  OdfFileDom dom = odt.getContentDom();
+		  firstParagraph = (TextPElement) xpath.evaluate("//text:p[1]", dom, XPathConstants.NODE);
+		*/
+
+		// insert a frame
+		DrawFrameElement frame = firstParagraph.newDrawFrameElement();
+
+		// insert an image: This is a class from the Document API
+		OdfDrawImage image = (OdfDrawImage) frame.newDrawImageElement();
+		image.newImage(new URI("./MySampleImage.png"));
+
+		// Save file
+		odt.save("ImageOut.odt");
+
+		//********************************************************************
+		// WIKI EXAMPLE III from http://odftoolkit.org/projects/odfdom/pages/Layers
+
+		// Load Image
+		odt = (OdfTextDocument) OdfDocument.loadDocument("ImageIn.odt");
+
+		// Play around with text
+		odt.addText("When there is no paragraph, the text will be embedded in a new paragraph");
+		odt.newParagraph("Create new paragraph");
+		odt.addText("\nThis is a new line");
+
+		// Insert Image and make last paragraph its anchor
+		odt.newImage(new URI("./MySampleImage.png"));
+
+		// Insert new spreadsheet as sub document into the package within directory  "myOdsDirectoryPath/"
+		odt.insertDocument(OdfSpreadsheetDocument.newSpreadsheetDocument(), "myOdsDirectoryPath");
+
+		// Save file
+		odt.save("ImageOut.odt");
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/meta/MetaDocumentStatisticTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/meta/MetaDocumentStatisticTest.java
new file mode 100644
index 0000000..bd7bf41
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/meta/MetaDocumentStatisticTest.java
@@ -0,0 +1,203 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+
+package org.odftoolkit.odfdom.incubator.meta;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+public class MetaDocumentStatisticTest {
+
+	private String filename = "metaTest.odt";
+	private OdfTextDocument doc;
+	private OdfFileDom metadom;
+	private OdfMetaDocumentStatistic stat;
+	private Integer cellCount = 1;
+	private Integer characterCount = 2;
+	private Integer drawCount = 3;
+	private Integer frameCount = 4;
+	private Integer imageCount = 5;
+	private Integer nonWhitespaceCharacterCount = 6;
+	private Integer objectCount = 7;
+	private Integer oleObjectCount = 8;
+	private Integer pageCount = 9;
+	private Integer paragraphCount = 10;
+	private Integer rowCount = 11;
+	private Integer sentenceCount = 12;
+	private Integer syllableCount = 13;
+	private Integer tableCount = 14;
+	private Integer wordCount = 15;
+
+	@Before
+	public void setUp() throws Exception {
+		doc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities
+				.getTestResourceAsStream(filename));
+		metadom = doc.getMetaDom();
+		OdfOfficeMeta meta = new OdfOfficeMeta(metadom);
+		stat = meta.getDocumentStatistic();
+		if (stat == null) {
+			// the element does not exist in the metadata, add a new one
+			MetaDocumentStatisticElement statEle = meta
+					.getOfficeMetaElement().newMetaDocumentStatisticElement();
+			stat = new OdfMetaDocumentStatistic(statEle);
+		}
+
+	}
+
+	@Test
+	public void testGetCellCount() {
+		stat.setCellCount(cellCount);
+		Assert.assertEquals(cellCount, stat.getCellCount());
+	}
+
+	@Test
+	public void testGetCharacterCount() {
+		stat.setCharacterCount(characterCount);
+		Assert.assertEquals(characterCount, stat.getCharacterCount());
+	}
+
+	@Test
+	public void testGetDrawCount() {
+		stat.setDrawCount(drawCount);
+		Assert.assertEquals(drawCount, stat.getDrawCount());
+	}
+
+	@Test
+	public void testGetFrameCount() {
+		stat.setFrameCount(frameCount);
+		Assert.assertEquals(frameCount, stat.getFrameCount());
+	}
+
+	@Test
+	public void testGetImageCount() {
+		stat.setImageCount(imageCount);
+		Assert.assertEquals(imageCount, stat.getImageCount());
+	}
+
+	@Test
+	public void testGetNonWhitespaceCharacterCount() {
+		stat.setNonWhitespaceCharacterCount(nonWhitespaceCharacterCount);
+		Assert.assertEquals(nonWhitespaceCharacterCount, stat
+				.getNonWhitespaceCharacterCount());
+	}
+
+	@Test
+	public void testGetObjectCount() {
+		stat.setObjectCount(objectCount);
+		Assert.assertEquals(objectCount, stat.getObjectCount());
+	}
+
+	@Test
+	public void testGetOleObjectCount() {
+		stat.setOleObjectCount(oleObjectCount);
+		Assert.assertEquals(oleObjectCount, stat.getOleObjectCount());
+	}
+
+	@Test
+	public void testGetPageCount() {
+		stat.setPageCount(pageCount);
+		Assert.assertEquals(pageCount, stat.getPageCount());
+	}
+
+	@Test
+	public void testGetParagraphCount() {
+		stat.setParagraphCount(paragraphCount);
+		Assert.assertEquals(paragraphCount, stat.getParagraphCount());
+	}
+
+	@Test
+	public void testGetRowCount() {
+		stat.setRowCount(rowCount);
+		Assert.assertEquals(rowCount, stat.getRowCount());
+	}
+
+	@Test
+	public void testGetSentenceCount() {
+		stat.setSentenceCount(sentenceCount);
+		Assert.assertEquals(sentenceCount, stat.getSentenceCount());
+	}
+
+	@Test
+	public void testGetSyllableCount() {
+		stat.setSyllableCount(syllableCount);
+		Assert.assertEquals(syllableCount, stat.getSyllableCount());
+	}
+
+	@Test
+	public void testGetTableCount() {
+		stat.setTableCount(tableCount);
+		Assert.assertEquals(tableCount, stat.getTableCount());
+	}
+
+	@Test
+	public void testGetWordCount() {
+		stat.setWordCount(wordCount);
+		Assert.assertEquals(wordCount, stat.getWordCount());
+	}
+
+	@Test
+	public void testReadEmptyDocumentMeta() throws Exception {
+
+		// create a new empty document
+		doc = (OdfTextDocument) OdfTextDocument.newTextDocument();
+		doc
+				.save(ResourceUtilities
+						.newTestOutputFile("EmptyDocForMetaTest.odt"));
+
+		// read empty document meta
+		doc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities
+				.getTestResourceAsStream("EmptyDocForMetaTest.odt"));
+		metadom = doc.getMetaDom();
+		OdfOfficeMeta meta = new OdfOfficeMeta(metadom);
+		stat = meta.getDocumentStatistic();
+		Assert.assertNull(stat);
+
+		// create a new stat
+		MetaDocumentStatisticElement statEle = meta
+				.getOfficeMetaElement().newMetaDocumentStatisticElement();
+		stat = new OdfMetaDocumentStatistic(statEle);
+
+		Assert.assertNull(stat.getCellCount());
+		Assert.assertNull(stat.getCharacterCount());
+		Assert.assertNull(stat.getDrawCount());
+		Assert.assertNull(stat.getFrameCount());
+		Assert.assertNull(stat.getImageCount());
+		Assert.assertNull(stat.getNonWhitespaceCharacterCount());
+		Assert.assertNull(stat.getObjectCount());
+		Assert.assertNull(stat.getOleObjectCount());
+		Assert.assertNull(stat.getPageCount());
+		Assert.assertNull(stat.getParagraphCount());
+		Assert.assertNull(stat.getRowCount());
+		Assert.assertNull(stat.getSentenceCount());
+		Assert.assertNull(stat.getSyllableCount());
+		Assert.assertNull(stat.getTableCount());
+		Assert.assertNull(stat.getWordCount());
+
+	}
+
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/meta/OfficeMetaTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/meta/OfficeMetaTest.java
new file mode 100644
index 0000000..31e367f
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/meta/OfficeMetaTest.java
@@ -0,0 +1,421 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.meta;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.odftoolkit.Junit.AlphabeticalOrderedRunner;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaValueTypeAttribute.Value;
+import org.odftoolkit.odfdom.dom.example.LoadMultipleTimes;
+import org.odftoolkit.odfdom.type.Duration;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+@RunWith(AlphabeticalOrderedRunner.class)
+public class OfficeMetaTest {
+
+	private static final Logger LOG = Logger.getLogger(OfficeMetaTest.class.getName());
+	private String filename = "metaTest.odt";
+	private String filenameOut = "metaTest_OfficeMetaTest.odt";
+	private OdfTextDocument doc;
+	private OdfFileDom metadom;
+	private OdfOfficeMeta fMetadata;
+	private static final String generator = "ODFDOM/SNAPSHOT-TEST";
+	private String dctitle = "dctitle";
+	private String dcdescription = "dcdescription";
+	private String subject = "dcsubject";
+	private List<String> keywords = new ArrayList<String>();
+	private String initialCreator = "creator";
+	private String dccreator = "Mr. fictionalTestUser";
+	private String printedBy = "persia p";
+	private String language = "EN_us";
+	private Integer editingCycles = new Integer(4);
+	private Duration editingDuration = Duration.valueOf("P49DT11H8M9S");
+	private SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+	
+	@Before	
+	public void setUp() throws Exception {
+		// Former developer was writing into the original file, triggering a race discussion of regression tests working on all documents.
+		// Sometimes the file was changed (if this test ran earlier), sometimes not. Fixed by doing the test result in a new ODT output file
+		File newMetaFile = ResourceUtilities.newTestOutputFile(filenameOut);
+		if(!newMetaFile.exists()){
+			doc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath(filename));
+		}else{
+			doc = (OdfTextDocument) OdfTextDocument.loadDocument(newMetaFile);
+		}
+		
+		metadom = doc.getMetaDom();
+		fMetadata = new OdfOfficeMeta(metadom);
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		doc.save(ResourceUtilities.newTestOutputFile(filenameOut));
+		doc.close();
+		doc = null;
+		metadom = null;
+	}
+
+	@Test
+	@Ignore // Add Test when the version number changes and the templates should be adapted
+	public void updateTemplates() {
+		// Adapt all files with latest XML changes automatically
+		loadSaveDirFiles("target/classes/"); // all template files to be bundled within the JAR
+		// The following is only necessary, when the templates in the source repository should be adapted, e.g. before a release
+		loadSaveDirFiles("src/main/resources/");
+	}
+
+	/** The reference templates of the JAR will be loaded and saved. */
+	private void loadSaveDirFiles(String targetDirectory) {
+		try {
+			LOG.log(Level.INFO, "Loading/saving resources from the directory: ''{0}''!", targetDirectory);
+			File resDir = new File(targetDirectory);
+			File[] resFiles = resDir.listFiles();
+			boolean validTest = true;
+			for (File odfFile : resFiles) {
+				if (!odfFile.isDirectory() ) { //&& odfFile.getName().startsWith("Odf")
+					OdfDocument odfDoc = OdfDocument.loadDocument(odfFile);
+					String version = System.getProperty("odfdom.version");
+					OdfOfficeMeta meta = odfDoc.getOfficeMetadata();
+					meta.setAutomaticUpdate(false);
+					meta.setCreator(null);
+					meta.setCreationDate(null);
+					meta.setDate(null);
+					meta.setDescription(null);
+					meta.setEditingCycles(null);
+					meta.setEditingDuration(null);
+					meta.setLanguage(null);
+					meta.setPrintDate(null);
+					meta.setPrintedBy(null);
+					meta.setSubject(null);
+					meta.setTitle(null);
+					meta.removeUserDefinedDataByName("Info 1");
+					meta.removeUserDefinedDataByName("Info 2");
+					meta.removeUserDefinedDataByName("Info 3");
+					meta.removeUserDefinedDataByName("Info 4");
+					String timeStamp = mSimpleDateFormat.format(Calendar.getInstance().getTime());
+					if (version != null) {
+						if (version.endsWith("SNAPSHOT")) {
+							version = version + "(" + timeStamp + ")";
+						}
+						meta.setGenerator("ODFDOM/" + version);
+					} else {
+						meta.setGenerator("ODFDOM/SNAPSHOT(" + timeStamp + ")");
+						validTest = false;
+					}
+					LOG.log(Level.INFO, "Updating the resource {0}", odfFile.getPath());
+					odfDoc.save(odfFile.getPath());
+				}
+			}
+			Assert.assertTrue("No meta:generator could be set as the System property 'odfdom.version' set by the Maven pom.xml was not found!", validTest);
+
+			//ToDO: Add validation test afterwards..
+		} catch (Exception ex) {
+			Logger.getLogger(LoadMultipleTimes.class.getName()).log(Level.SEVERE, null, ex);
+		}
+	}
+
+	@Test
+	public void test1SetGenerator() {
+		fMetadata.setGenerator(generator);
+	}
+
+	@Test
+	public void test2GetGenerator() {
+		Assert.assertEquals(generator, fMetadata.getGenerator());
+	}
+
+	@Test
+	public void test1SetDcTitle() {
+		fMetadata.setTitle(dctitle);
+	}
+
+	@Test
+	public void test2GetDcTitle() {
+		Assert.assertEquals(dctitle, fMetadata.getTitle());
+	}
+
+	@Test
+	public void test1SetDcDescription() {
+		fMetadata.setDescription(dcdescription);
+	}
+
+	@Test
+	public void test2GetDcDescription() {
+		fMetadata.setDescription(dcdescription);
+		Assert.assertEquals(dcdescription, fMetadata.getDescription());
+	}
+
+	@Test
+	public void test1SetSubject() {
+		fMetadata.setSubject(subject);
+	}
+
+	@Test
+	public void test2GetSubject() {
+		Assert.assertEquals(subject, fMetadata.getSubject());
+	}
+
+	@Test
+	public void testSetAndGetKeywords() throws Exception {
+		keywords.add("lenovo2");
+		keywords.add("computer3");
+		keywords.add("think center");
+		fMetadata.setKeywords(keywords);
+		tearDown();
+		setUp();
+		Assert.assertEquals(keywords, fMetadata.getKeywords());
+	}
+
+	@Test
+	public void test1SetInitialCreator() {
+		fMetadata.setInitialCreator(initialCreator);
+	}
+
+	@Test
+	public void test2GetInitialCreator() {
+		Assert.assertEquals(initialCreator, fMetadata.getInitialCreator());
+	}
+
+	@Test
+	public void test1SetDcCreator() {
+		fMetadata.setCreator(dccreator);
+	}
+
+	@Test
+	public void test2GetDcCreator() {
+		fMetadata.setCreator(dccreator);
+		Assert.assertEquals(dccreator, fMetadata.getCreator());
+	}
+
+	@Test
+	public void test1SetPrintedBy() {
+		fMetadata.setPrintedBy(printedBy);
+	}
+
+	@Test
+	public void test2GetPrintedBy() {
+		Assert.assertEquals(printedBy, fMetadata.getPrintedBy());
+	}
+
+	@Test
+	public void testSetAndGetCreationDate() throws Exception {
+		Calendar creationDate = Calendar.getInstance();
+		fMetadata.setCreationDate(creationDate);
+		tearDown();
+		setUp();
+		// //the millisecond lost while changing calendar to string
+		// creationDate.clear(Calendar.MILLISECOND);
+		// fMetadata.getCreationDate().clear(Calendar.MILLISECOND);
+		//Assert.assertEquals(0,creationDate.compareTo(fMetadata.getCreationDate
+		// ()));
+		String expected = mSimpleDateFormat.format(creationDate.getTime());
+		String actual = mSimpleDateFormat.format(fMetadata.getCreationDate().getTime());
+		Assert.assertEquals(expected, actual);
+	}
+
+	@Test
+	public void testSetDcDate() throws Exception {
+		Calendar dcDate = Calendar.getInstance();
+		fMetadata.setDate(dcDate);
+		tearDown();
+		setUp();
+		// dcDate.clear(Calendar.MILLISECOND);
+		// fMetadata.getDate().clear(Calendar.MILLISECOND);
+		// Assert.assertEquals(0,dcDate.compareTo(fMetadata.getDate()));
+		String expected = mSimpleDateFormat.format(dcDate.getTime());
+		String actual = mSimpleDateFormat.format(fMetadata.getDate().getTime());
+		Assert.assertEquals(expected, actual);
+	}
+
+	@Test
+	public void testSetPrintDate() throws Exception {
+		Calendar printDate = Calendar.getInstance();
+		fMetadata.setPrintDate(printDate);
+		tearDown();
+		setUp();
+		// printDate.clear(Calendar.MILLISECOND);
+		// fMetadata.getPrintDate().clear(Calendar.MILLISECOND);
+		// Assert.assertEquals(0,printDate.compareTo(fMetadata.getPrintDate()));
+		String expected = mSimpleDateFormat.format(printDate.getTime());
+		String actual = mSimpleDateFormat.format(fMetadata.getPrintDate().getTime());
+		Assert.assertEquals(expected, actual);
+	}
+
+	@Test
+	public void test1SetLanguage() {
+		fMetadata.setLanguage(language);
+	}
+
+	@Test
+	public void test2GetLanguage() {
+		Assert.assertEquals(language, fMetadata.getLanguage());
+	}
+
+	@Test
+	public void test1SetEditingCycles() {
+		fMetadata.setEditingCycles(editingCycles);
+	}
+
+	@Test
+	public void test2GetEditingCycles() {
+		Assert.assertNotNull(fMetadata.getEditingCycles());
+	}
+
+	@Test
+	public void test1SetEditingDuration() {
+		fMetadata.setEditingDuration(editingDuration);
+	}
+
+	@Test
+	public void test2GetEditingDuration() {
+		Assert.assertNotNull(fMetadata.getEditingDuration());
+	}
+
+	@Test
+	public void testEmptyKeyword() throws Exception {
+		List<String> emptyKeyword = new ArrayList<String>();
+		fMetadata.setKeywords(emptyKeyword);
+		tearDown();
+		setUp();
+		Assert.assertNull(fMetadata.getKeywords());
+	}
+
+	@Test
+	public void testAddKeyword() throws Exception {
+		String newKeyword = "hello";
+		fMetadata.addKeyword(newKeyword);
+		tearDown();
+		setUp();
+		Assert.assertEquals(true, fMetadata.getKeywords().contains(newKeyword));
+	}
+
+	@Test
+	public void testSetAndGetUserdefinedData() throws Exception {
+		// remove if there is userdefined data
+		List<String> names;
+		names = fMetadata.getUserDefinedDataNames();
+		if (names == null) {
+			names = new ArrayList<String>();
+		} else {
+			for (String name : names) {
+				fMetadata.removeUserDefinedDataByName(name);
+			}
+			names.clear();
+		}
+		names.add("weather");
+		names.add("mood");
+		names.add("late");
+		// test set
+		fMetadata.setUserDefinedData(names.get(0), Value.STRING.toString(),
+				"windy");
+		fMetadata.setUserDefinedData(names.get(1), Value.STRING.toString(),
+				"happy");
+		fMetadata.setUserDefinedData(names.get(2), Value.BOOLEAN.toString(),
+				"false");
+		tearDown();
+
+		setUp();
+		// test get
+		Assert.assertEquals(names, fMetadata.getUserDefinedDataNames());
+		Assert.assertEquals(Value.STRING.toString(), fMetadata.getUserDefinedDataType(names.get(0)));
+		Assert.assertEquals("windy", fMetadata.getUserDefinedDataValue(names.get(0)));
+
+		fMetadata.setUserDefinedDataValue(names.get(1), "false");
+		fMetadata.setUserDefinedDataType(names.get(1), Value.BOOLEAN.toString());
+		fMetadata.setUserDefinedData(names.get(2), Value.STRING.toString(),
+				"no");
+		tearDown();
+
+		setUp();
+		// update
+		Assert.assertEquals("false", fMetadata.getUserDefinedDataValue(names.get(1)));
+		Assert.assertEquals(Value.BOOLEAN.toString(), fMetadata.getUserDefinedDataType(names.get(1)));
+		Assert.assertEquals("no", fMetadata.getUserDefinedDataValue(names.get(2)));
+		Assert.assertEquals(Value.STRING.toString(), fMetadata.getUserDefinedDataType(names.get(2)));
+		tearDown();
+
+		setUp();
+		// remove
+		fMetadata.removeUserDefinedDataByName(names.get(0));
+		tearDown();
+		setUp();
+		Assert.assertEquals(2, fMetadata.getUserDefinedDataNames().size());
+
+	}
+
+	@Test
+	public void testReadEmptyDocumentMeta() throws Exception {
+
+		// create a new empty document
+		doc = OdfTextDocument.newTextDocument();
+		doc.save(ResourceUtilities.newTestOutputFile("EmptyDocForMetaTest.odt"));
+
+		// read empty document meta
+		doc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath("EmptyDocForMetaTest.odt"));
+		metadom = doc.getMetaDom();
+		fMetadata = new OdfOfficeMeta(metadom);
+		//Assert.assertTrue(fMetadata.getGenerator().startsWith(generator));
+		//ToDO: http://odftoolkit.org/bugzilla/show_bug.cgi?id=171
+		// Assert.assertEquals(fMetadata.getGenerator(), generator);
+		Assert.assertNull(fMetadata.getTitle());
+		Assert.assertNull(fMetadata.getDescription());
+		Assert.assertNull(fMetadata.getSubject());
+		Assert.assertNull(fMetadata.getKeywords());
+		Assert.assertNull(fMetadata.getPrintedBy());
+		Assert.assertNull(fMetadata.getPrintDate());
+		Assert.assertNotNull(fMetadata.getUserDefinedDataNames());
+	}
+
+	@Test
+	public void testReadDocumentMeta() throws Exception {
+		// create a new empty document
+		OdfTextDocument textDoc = OdfTextDocument.newTextDocument(); // activiating metadata updates
+		textDoc.save(ResourceUtilities.newTestOutputFile("DocForMetaTest.odt"));
+		textDoc.close();
+		// read empty document meta
+		textDoc = (OdfTextDocument) OdfTextDocument.loadDocument(ResourceUtilities.getAbsolutePath("DocForMetaTest.odt"));
+		OdfOfficeMeta meta = textDoc.getOfficeMetadata();
+		Assert.assertNotNull(meta.getGenerator());
+		Assert.assertNotNull(meta.getCreationDate());
+		Assert.assertNotNull(meta.getCreator());
+		Assert.assertNotNull(meta.getDate());
+		Assert.assertTrue(meta.getEditingCycles() > 0);
+		Assert.assertNotNull(meta.getEditingDuration());
+		Assert.assertNull(meta.getLanguage());
+		textDoc.close();
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/MONPTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/MONPTest.java
new file mode 100644
index 0000000..cf67d47
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/MONPTest.java
@@ -0,0 +1,69 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ * Test ReplaceWith method for class org.odftoolkit.odfdom.incubator.search.TextSelection 
+ */
+public class MONPTest {
+
+	public static final String TEXT_FILE = "navigationtest.odt";
+	public static final String SAVE_FILE = "testsave1.odt";
+
+	/**
+	 * replace all the "mnop" occurance in navigationtest.odt with the word "success"
+	 */
+	@Test
+	public void testReplaceWith() {
+
+		try {
+			OdfTextDocument doc = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+
+			TextNavigation search = new TextNavigation("mnop", doc);
+
+			int i = 0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.getCurrentItem();
+				try {
+					item.replaceWith("success");
+					i++;
+					// item.addHref(new URL("http://www.oracle.com"));
+				} catch (InvalidNavigationException e) {
+					Assert.fail(e.getMessage());
+				}
+			}
+			Assert.assertTrue(18 == i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE));
+		} catch (Exception e) {
+			Logger.getLogger(MONPTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextNavigationTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextNavigationTest.java
new file mode 100644
index 0000000..307b75c
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextNavigationTest.java
@@ -0,0 +1,125 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfWhitespaceProcessor;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ * Test the method of class org.odftoolkit.odfdom.incubator.search.TextNavigation 
+ */
+public class TextNavigationTest {
+
+	private static final Logger LOG = Logger.getLogger(TextNavigationTest.class.getName());
+	public static final String TEXT_FILE = "TestTextSelection.odt";
+	OdfTextDocument doc;
+	TextNavigation search;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		} catch (Exception e) {
+			Logger.getLogger(TextNavigationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test getCurrentItem method of org.odftoolkit.odfdom.incubator.search.TextNavigation
+	 */
+	@Test
+	public void testGotoNext() {
+
+		search = null;
+		search = new TextNavigation("delete", doc);
+
+
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			LOG.info(item.toString());
+		}
+
+	}
+
+	/**
+	 * Test getNextMatchElement method of org.odftoolkit.odfdom.incubator.search.TextNavigation
+	 */
+	@Test
+	public void testGetNextMatchElement() {
+
+		search = null;
+		search = new TextNavigation("delete", doc);
+		OdfWhitespaceProcessor textProcessor = new OdfWhitespaceProcessor();
+
+		try {
+			//NodeList list = doc.getContentDom().getElementsByTagName("text:p");
+			OdfElement firstmatch = (OdfElement) search.getNextMatchElement(doc.getContentRoot());
+			Assert.assertNotNull(firstmatch);
+			Assert.assertEquals("Task2.delete next paragraph", textProcessor.getText(firstmatch));
+
+			OdfElement secondmatch = (OdfElement) search.getNextMatchElement(firstmatch);
+			Assert.assertNotNull(secondmatch);
+			Assert.assertEquals("Hello [delete], I will be delete", textProcessor.getText(secondmatch));
+
+			OdfElement thirdmatch = (OdfElement) search.getNextMatchElement(secondmatch);
+			Assert.assertNotNull(thirdmatch);
+			Assert.assertEquals("indeed   delete", textProcessor.getText(thirdmatch));
+
+			OdfElement match4 = (OdfElement) search.getNextMatchElement(thirdmatch);
+			Assert.assertNotNull(match4);
+			Assert.assertEquals("different span in one single word delete indeed", textProcessor.getText(match4));
+
+			OdfElement match5 = (OdfElement) search.getNextMatchElement(match4);
+			Assert.assertNotNull(match5);
+			Assert.assertEquals("Hello delete this word delete true delete  indeed", textProcessor.getText(match5));
+
+		} catch (Exception e) {
+			Logger.getLogger(TextNavigationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextSelectionTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextSelectionTest.java
new file mode 100644
index 0000000..b95131b
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextSelectionTest.java
@@ -0,0 +1,359 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ * Test the method of class org.odftoolkit.odfdom.incubator.search.TextSelection
+ */
+public class TextSelectionTest {
+
+	public static final String TEXT_FILE = "TestTextSelection.odt";
+	public static final String SAVE_FILE_DELETE = "TextSelectionResultDelete.odt";
+	public static final String SAVE_FILE_STYLE = "TextSelectionResultStyle.odt";
+	public static final String SAVE_FILE_HREF = "TextSelectionResultHref.odt";
+	public static final String SAVE_FILE_REPLACE = "TextSelectionResultReplace.odt";
+	public static final String SAVE_FILE_COPYTO = "TextSelectionResultCopyTo.odt";
+	public static final String SAVE_FILE_COPYTO1 = "TextSelectionResultCopyTo1.odt";
+	public static final String SAVE_FILE_DELETE_PATTERN = "TextSelectionResultPatternDelete.odt";
+	OdfTextDocument doc;
+	OdfFileDom contentDOM;
+	TextNavigation search;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			contentDOM = doc.getContentDom();
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test cut method of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * delete all the 'delete' word
+	 */
+	@Test
+	public void testCut() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+
+		TextSelection nextSelect = null;
+		TextNavigation nextsearch = new TextNavigation("next", doc);
+		if (nextsearch.hasNext()) {
+			nextSelect = (TextSelection) nextsearch.getCurrentItem();
+		}
+		int i = 0;
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			i++;
+			try {
+				item.cut();
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+		Assert.assertTrue(8 == i);
+		//research the "delete"
+		search = new TextNavigation("delete", doc);
+		Assert.assertFalse(search.hasNext());
+
+		//this document just have one "next"
+		try {
+			nextSelect.cut();
+		} catch (InvalidNavigationException e1) {
+			Assert.fail(e1.getMessage());
+		}
+		Assert.assertFalse(nextsearch.hasNext());
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_DELETE));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test pasteAtFrontOf method of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * copy the first 'change' word in the front of all the 'delete' word
+	 */
+	@Test
+	public void testPasteAtFrontOf() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		TextSelection sel = null;
+
+		TextNavigation search1 = new TextNavigation("change", doc);
+		if (search1.hasNext()) {
+			sel = (TextSelection) search1.getCurrentItem();
+		}
+
+		int i = 0;
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			i++;
+			try {
+				sel.pasteAtFrontOf(item);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		int j = 0;
+		search = new TextNavigation("changedelete", doc);
+		while (search.hasNext()) {
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_COPYTO));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * Test pasteAtEndOf method of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * copy the first 'change' word at the end of all the 'delete' word
+	 */
+	@Test
+	public void testPasteAtEndOf() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		TextSelection sel = null;
+
+		TextNavigation search1 = new TextNavigation("change", doc);
+		if (search1.hasNext()) {
+			sel = (TextSelection) search1.getCurrentItem();
+		}
+
+		int i = 0;
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			i++;
+			try {
+				sel.pasteAtEndOf(item);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+		int j = 0;
+		search = new TextNavigation("deletechange", doc);
+		while (search.hasNext()) {
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_COPYTO1));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * Test applyStyle method of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * append "T4" style for all the 'delete' word, 'T4' in the original document is the 'bold' style
+	 */
+	@Test
+	public void testApplyStyle() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		OdfOfficeAutomaticStyles autoStyles = null;
+		try {
+			autoStyles = doc.getContentDom().getAutomaticStyles();
+		} catch (Exception e1) {
+			Assert.fail("Failed with " + e1.getClass().getName() + ": '" + e1.getMessage() + "'");
+		}
+		//T4 is the bold style for text
+		OdfStyleBase style = autoStyles.getStyle("T4", OdfStyleFamily.Text);
+		Assert.assertNotNull(style);
+
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			try {
+				item.applyStyle(style);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_STYLE));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test replaceWith method of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * replace all the 'ODFDOM' with 'Odf Toolkit'
+	 */
+	@Test
+	public void testReplacewith() {
+		search = null;
+		search = new TextNavigation("ODFDOM", doc);
+
+		TextSelection nextSelect = null;
+		TextNavigation nextsearch = new TextNavigation("next", doc);
+		if (nextsearch.hasNext()) {
+			nextSelect = (TextSelection) nextsearch.getCurrentItem();
+		}
+
+		//replace all the "ODFDOM" to "Odf Toolkit"
+		//except the sentence "Task5.Change the ODFDOM to Odf Toolkit, and bold them."
+		OdfStyle style = new OdfStyle(contentDOM);
+		style.setProperty(StyleTextPropertiesElement.FontWeight, "bold");
+		style.setStyleFamilyAttribute("text");
+		int i = 0;
+		while (search.hasNext()) {
+			if (i > 0) {
+				TextSelection item = (TextSelection) search.getCurrentItem();
+				try {
+					item.replaceWith("Odf Toolkit");
+					item.applyStyle(style);
+				} catch (InvalidNavigationException e) {
+					Assert.fail(e.getMessage());
+				}
+			}
+			i++;
+		}
+
+		search = new TextNavigation("Odf Toolkit", doc);
+		int j = 0;
+		while (search.hasNext()) {
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			nextSelect.replaceWith("bbb");
+		} catch (InvalidNavigationException e1) {
+			Assert.fail(e1.getMessage());
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test addHref method of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * add href "http://www.ibm.com" for all the 'delete' word
+	 */
+	@Test
+	public void testAddHref() {
+		search = null;
+		search = new TextNavigation("^delete", doc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			// LOG.info(item);
+			try {
+				item.addHref(new URL("http://www.ibm.com"));
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			} catch (MalformedURLException e) {
+				Assert.fail(e.getMessage());
+				Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_HREF));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * Test search pattern of org.odftoolkit.odfdom.incubator.search.TextSelection
+	 * search a snippet of text match the pattern "<%([^>]*)%>", and extract the content 
+	 * between "<%" and "%>"
+	 */
+	@Test
+	public void testCutPattern() {
+		search = new TextNavigation("<%([^>]*)%>", doc);
+
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.getCurrentItem();
+			try {
+				String text = item.getText();
+				text = text.substring(2, text.length() - 2);
+				item.replaceWith(text);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_DELETE_PATTERN));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextStyleNavigationTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextStyleNavigationTest.java
new file mode 100644
index 0000000..02f41d9
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/incubator/search/TextStyleNavigationTest.java
@@ -0,0 +1,263 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.incubator.search;
+
+import java.util.TreeMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+/**
+ * Test the method of class org.odftoolkit.odfdom.incubator.search.TextStyleNavigation 
+ */
+public class TextStyleNavigationTest {
+
+	private static final Logger LOG = Logger.getLogger(TextStyleNavigationTest.class.getName());
+	public static final String TEXT_FILE = "TestStyleSelection.odt";
+	public static final String SAVE_FILE_PAST_FRONT = "TextStyleSelectionResultInsertFront.odt";
+	public static final String SAVE_FILE_PAST_END = "TextStyleSelectionResultInsertEnd.odt";
+	public static final String SAVE_FILE_DELETE = "TextStyleSelectionResultDelete.odt";
+	public static final String SAVE_FILE_STYLE = "TextStyleSelectionResultStyle.odt";
+	public static final String SAVE_FILE_REPLACE = "TextStyleSelectionResultReplace.odt";
+	public static final String SAVE_FILE_COPYTO = "TextStyleSelectionResultCopyTo.odt";
+	public static final String SAVE_FILE_COPYTO1 = "TextStyleSelectionResultCopyTo1.odt";
+	public static final String SAVE_FILE_CUT_FOOTERHEADER = "TextStyleSelectionResultCutFooterHeader.odt";
+	public static final String SAVE_FILE_APPLY_FOOTERHEADER = "TextStyleSelectionResultApplyFooterHeader.odt";
+	OdfTextDocument doc;
+	TextStyleNavigation search1;
+	TextNavigation search2;
+	TextNavigation search3;
+	TextStyleNavigation search4;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test pasteAtFrontOf method of org.odftoolkit.odfdom.incubator.search.TextStyleNavigation
+	 */
+	@Test
+	public void testPasteAtFrontOf() {
+
+		//search the text of specified style, then insert it before specified text (delete)
+		search1 = null;
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Times New Roman1");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "16pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+		search2 = new TextNavigation("delete", doc);
+		search3 = new TextNavigation("Roman16 Romanl16delete", doc);
+
+		TextSelection itemstyle = null;
+		if (search1.hasNext()) {
+			itemstyle = (TextSelection) search1.getCurrentItem();
+			LOG.info(itemstyle.toString());
+		}
+		int i = 0;
+		if (itemstyle != null) {
+			while (search2.hasNext()) {
+				i++;
+				TextSelection itemtext = (TextSelection) search2.getCurrentItem();
+				try {
+					itemstyle.pasteAtFrontOf(itemtext);
+				} catch (InvalidNavigationException e) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail(e.getMessage());
+				}
+				LOG.info(itemtext.toString());
+			}
+		}
+
+		int j = 0;
+		while (search3.hasNext()) {
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_PAST_FRONT));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test pasteAtEndOf method of org.odftoolkit.odfdom.incubator.search.TextStyleNavigation
+	 */
+	@Test
+	public void testPasteAtEndOf() {
+
+		//search the text of specified style, then insert it after specified text (delete)
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Times New Roman1");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "16pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+		search2 = new TextNavigation("delete", doc);
+		search3 = new TextNavigation("deleteRoman16 Romanl16", doc);
+		TextSelection itemstyle = null;
+		if (search1.hasNext()) {
+			itemstyle = (TextSelection) search1.getCurrentItem();
+			LOG.info(itemstyle.toString());
+		}
+		int i = 0;
+		if (itemstyle != null) {
+			while (search2.hasNext()) {
+				i++;
+				TextSelection itemtext = (TextSelection) search2.getCurrentItem();
+				try {
+					itemstyle.pasteAtEndOf(itemtext);
+				} catch (InvalidNavigationException e) {
+					Assert.fail(e.getMessage());
+				}
+				LOG.info(itemtext.toString());
+			}
+		}
+
+		int j = 0;
+		while (search3.hasNext()) {
+			j++;
+		}
+
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_PAST_END));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test cut method of org.odftoolkit.odfdom.incubator.search.TextStyleNavigation
+	 */
+	@Test
+	public void testCut() {
+
+		//delete all text with specified style
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Century1");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "22pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+		search2 = new TextNavigation("Century22", doc);
+
+		while (search1.hasNext()) {
+			TextSelection item = (TextSelection) search1.getCurrentItem();
+			try {
+				item.cut();
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		Assert.assertFalse(search2.hasNext());
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_DELETE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test applyStyle method of org.odftoolkit.odfdom.incubator.search.TextStyleNavigation
+	 */
+	@Test
+	public void testApplyStyle() {
+		//select the text specified style and apply the text with new style.
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Arial");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "12pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+
+		OdfStyle style = null;
+		try {
+			style = new OdfStyle(doc.getContentDom());
+			style.setProperty(StyleTextPropertiesElement.FontSize, "23pt");
+			style.setProperty(StyleTextPropertiesElement.FontWeight, "bold");
+			style.setStyleFamilyAttribute("text");
+		} catch (Exception e1) {
+			LOG.log(Level.SEVERE, e1.getMessage(), e1);
+			Assert.fail("Failed with " + e1.getClass().getName() + ": '" + e1.getMessage() + "'");
+		}
+
+		int i = 0;
+		while (search1.hasNext()) {
+			i++;
+			TextSelection item = (TextSelection) search1.getCurrentItem();
+			// LOG.info(item);
+			try {
+				item.applyStyle(style);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		TreeMap<OdfStyleProperty, String> chgProps = new TreeMap<OdfStyleProperty, String>();
+		chgProps.put(StyleTextPropertiesElement.FontSize, "23pt");
+		chgProps.put(StyleTextPropertiesElement.FontWeight, "bold");
+		search4 = new TextStyleNavigation(chgProps, doc);
+		int j = 0;
+		while (search4.hasNext()) {
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_STYLE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/integrationtest/JarManifestIT.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/integrationtest/JarManifestIT.java
new file mode 100644
index 0000000..1221378
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/integrationtest/JarManifestIT.java
@@ -0,0 +1,81 @@
+/************************************************************************
+ *
+ * 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.integrationtest;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.JarManifest;
+
+public class JarManifestIT {
+
+	private static final Logger LOG = Logger.getLogger(JarManifestIT.class.getName());
+
+	@Test
+	public void testJar() {
+		try {
+			String command = "java -jar target/odfdom.jar";
+			Process process = Runtime.getRuntime().exec(command);
+			process.waitFor();
+			BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+			BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+			String line;
+			while ((line = errorReader.readLine()) != null) {
+				LOG.info(line);
+				Assert.assertTrue(line.indexOf("Exception") == -1);
+			}
+			String firstOutputLine = outputReader.readLine();
+			String secondOutputLine = outputReader.readLine();
+			errorReader.close();
+			outputReader.close();
+			process.destroy();
+			LOG.log(Level.INFO, "The version info from commandline given by {0} is:\n", command);
+			LOG.log(Level.INFO, "\"{0}\"", firstOutputLine);
+			LOG.log(Level.INFO, "\"{0}\"", secondOutputLine);
+			Assert.assertEquals(firstOutputLine, JarManifest.getOdfdomTitle() + " (build " + JarManifest.getOdfdomBuildDate() + ')');
+			Assert.assertEquals(secondOutputLine, "from " + JarManifest.getOdfdomWebsite() + " supporting ODF " + JarManifest.getOdfdomSupportedOdfVersion());
+
+			LOG.log(Level.INFO, "\nJarManifest.getName(): {0}", JarManifest.getOdfdomName());
+			Assert.assertNotNull(JarManifest.getOdfdomName());
+
+			LOG.log(Level.INFO, "\nJarManifest.getTitle(): {0}", JarManifest.getOdfdomTitle());
+			Assert.assertNotNull(JarManifest.getOdfdomTitle());
+
+			LOG.log(Level.INFO, "\nJarManifest.getVersion(): {0}", JarManifest.getOdfdomVersion());
+			Assert.assertNotNull(JarManifest.getOdfdomVersion());
+
+			LOG.log(Level.INFO, "\nJarManifest.getBuildDate(): {0}", JarManifest.getOdfdomBuildDate());
+			Assert.assertNotNull(JarManifest.getOdfdomBuildDate());
+
+			LOG.log(Level.INFO, "\nJarManifest.getSupportedOdfVersion(): {0}", JarManifest.getOdfdomSupportedOdfVersion());
+			Assert.assertNotNull(JarManifest.getOdfdomSupportedOdfVersion());
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/integrationtest/PerformanceIT.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/integrationtest/PerformanceIT.java
new file mode 100644
index 0000000..19a8ba5
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/integrationtest/PerformanceIT.java
@@ -0,0 +1,377 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ */
+
+package org.odftoolkit.odfdom.integrationtest;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.w3c.dom.NodeList;
+
+public class PerformanceIT {
+
+	private static final Logger LOG = Logger.getLogger(PerformanceIT.class.getName());
+	private static String TEST_FILE_FOLDER;
+	private static String[] TEST_FILE_NAME;
+	//private static final String timesheetTemplate = "timesheetTemplate.ods";
+	//private static final String memorysheetTemplate = "memorysheetTemplate.ods";
+	private double[] totalTime = new double[3];
+	private double[] totalLoadTimeForEach = null;
+	private double[] totalSaveTimeForEach = null;
+	private double[] totalParseTimeForEach = null;
+	private double[] memoryfootprint = null;
+	private String time_spreadsheet = null;
+	private String memory_spreadsheet = null;
+	private String REPORT_FILE_FOLDER = null;
+	private int count = 1;
+	private String testTag = "new test";
+
+	public PerformanceIT() {
+		try {
+			TEST_FILE_FOLDER = PerformanceIT.class.getClassLoader().getResource("").toURI().getPath() + System.getProperty("testresourcefolder") + File.separatorChar;
+			testTag = System.getProperty("testflag");
+			String executeTimesTest = System.getProperty("executetimes");
+			if (executeTimesTest != null) {
+				count = Integer.parseInt(executeTimesTest);
+			}
+			REPORT_FILE_FOLDER = getOutputPath() + File.separatorChar;
+			memory_spreadsheet = REPORT_FILE_FOLDER + "memorylog.ods";
+			time_spreadsheet = REPORT_FILE_FOLDER + "timelog.ods";
+		} catch (URISyntaxException ex) {
+			Logger.getLogger(PerformanceIT.class.getName()).log(Level.SEVERE, null, ex);
+		}
+
+	}
+
+	private String getOutputPath() {
+		String path = null;
+		try {
+			File rootpath = new File(PerformanceIT.class.getClassLoader().getResource("").toURI().getPath());
+			File parent = rootpath.getParentFile();
+			File outputpath = new File(parent, "performance-reports");
+			if (!outputpath.exists()) {
+				outputpath.mkdir();
+			}
+			path = outputpath.getPath();
+		} catch (URISyntaxException ex) {
+			Logger.getLogger(PerformanceIT.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return path;
+	}
+
+	@Test
+	public void testPerformance() {
+		try {
+			init();
+			// 1. Collect Test result
+			test();
+			// 2. Save to spreadsheet
+			writeToLog();
+		} catch (Exception e) {
+			Logger.getLogger(PerformanceIT.class.getName()).log(Level.SEVERE, null, e);
+
+		}
+	}
+
+	private void init() {
+
+		readFileList(TEST_FILE_FOLDER);
+		if (TEST_FILE_NAME == null) {
+			return;
+		}
+
+		totalTime[0] = 0;
+		totalTime[1] = 0;
+		totalTime[2] = 0;
+
+		totalLoadTimeForEach = new double[TEST_FILE_NAME.length];
+		totalSaveTimeForEach = new double[TEST_FILE_NAME.length];
+		totalParseTimeForEach = new double[TEST_FILE_NAME.length];
+		memoryfootprint = new double[TEST_FILE_NAME.length * 3];
+
+		for (int i = 0; i < TEST_FILE_NAME.length; i++) {
+			totalLoadTimeForEach[i] = 0;
+			totalSaveTimeForEach[i] = 0;
+			totalParseTimeForEach[i] = 0;
+			memoryfootprint[3 * i] = 0;
+			memoryfootprint[3 * i + 1] = 0;
+			memoryfootprint[3 * i + 2] = 0;
+		}
+
+	}
+
+	private void readFileList(String folder) {
+		String filename;
+
+		LOG.log(Level.INFO, "[PerformaceTest] Reading test documents from {0}", folder);
+		File myFolder = new File(folder);
+		if (!myFolder.isDirectory()) {
+			return;
+		}
+		File[] files = myFolder.listFiles();
+		ArrayList myList = new ArrayList();
+
+		for (int i = 0; i < files.length; i++) {
+			filename = files[i].getName();
+			if (filename.endsWith("ods") || filename.endsWith("odp") || filename.endsWith("odt")) {
+				myList.add(filename);
+			}
+			//TEST_FILE_NAME[i]=files[i].getName();
+			//LOG.info("name="+TEST_FILE_NAME[i]);
+		}
+
+		LOG.log(Level.INFO, "[PerformaceTest] {0} test files are loaded", myList.size());
+		if (myList.size() > 0) {
+			TEST_FILE_NAME = (String[]) myList.toArray(new String[1]);
+		}
+	}
+
+	private void writeToLog() throws Exception {
+		FileInputStream timefile, memoryfile;
+		OdfDocument timedoc, memorydoc;
+
+		if (TEST_FILE_NAME == null) {
+			return;
+		}
+
+		try {
+			timefile = new FileInputStream(time_spreadsheet);
+			timedoc = OdfDocument.loadDocument(timefile);
+		} catch (FileNotFoundException e) {
+			//Create an empty spreadsheet
+			timedoc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OfficeSpreadsheetElement spreadsheet = (OfficeSpreadsheetElement) timedoc.getContentDom().getElementsByTagNameNS(
+					OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+			spreadsheet.removeChild(spreadsheet.getFirstChild());
+		}
+
+		try {
+			memoryfile = new FileInputStream(memory_spreadsheet);
+			memorydoc = OdfDocument.loadDocument(memoryfile);
+		} catch (FileNotFoundException e) {
+			//Create an empty spreadsheet
+			memorydoc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			OfficeSpreadsheetElement spreadsheet = (OfficeSpreadsheetElement) memorydoc.getContentDom().getElementsByTagNameNS(
+					OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+			spreadsheet.removeChild(spreadsheet.getFirstChild());
+		}
+
+		String[] summaryName = new String[]{"Load All Documents", "Parse All Documents", "Save All Documents"};
+		updateTableCells(timedoc, "Summary", totalTime, summaryName);
+		updateTableCells(timedoc, "Load ODF", totalLoadTimeForEach, TEST_FILE_NAME);
+		updateTableCells(timedoc, "Parse ODF", totalParseTimeForEach, TEST_FILE_NAME);
+		updateTableCells(timedoc, "Save ODF", totalSaveTimeForEach, TEST_FILE_NAME);
+
+		String[] memorylabel = new String[TEST_FILE_NAME.length * 3];
+		for (int i = 0; i < TEST_FILE_NAME.length; i++) {
+			memorylabel[3 * i] = "load " + TEST_FILE_NAME[i];
+			memorylabel[3 * i + 1] = "parse " + TEST_FILE_NAME[i];
+			memorylabel[3 * i + 2] = "save " + TEST_FILE_NAME[i];
+		}
+		updateTableCells(memorydoc, "Memory footprint", memoryfootprint, memorylabel);
+
+		timedoc.save(time_spreadsheet);
+		LOG.log(Level.INFO, "[PerformaceTest] Test results are written to {0}", time_spreadsheet);
+		memorydoc.save(memory_spreadsheet);
+		LOG.log(Level.INFO, "[PerformaceTest] Test results are written to {0}", memory_spreadsheet);
+	}
+
+	private void updateTableCells(OdfDocument odfdoc, String tablename,
+			double[] values, String[] labels) {
+		int i = 0, j = 0;
+		TableTableRowElement td;
+		TableTableCellElement cell;
+		OdfFileDom dom;
+		NodeList tableList;
+		TableTableElement myTable;
+		NodeList lst;
+		OdfTextParagraph p;
+		OfficeSpreadsheetElement spreadsheet = null;
+
+		try {
+			dom = odfdoc.getContentDom();
+			tableList = dom.getElementsByTagNameNS(
+					OdfDocumentNamespace.TABLE.getUri(), "table");
+			spreadsheet = (OfficeSpreadsheetElement) dom.getElementsByTagNameNS(
+					OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+
+			i = 0;
+			if (tableList.getLength() > 0) {
+				for (; i < tableList.getLength(); i++) {
+					String currentname = ((TableTableElement) tableList.item(i)).getTableNameAttribute();
+					if (currentname == null) {
+						currentname = "";
+					}
+					if (currentname.equalsIgnoreCase(tablename)) {
+						break;
+					}
+				}
+			}
+			if (i < tableList.getLength()) //table with the specific table name is found
+			{
+				myTable = (TableTableElement) tableList.item(i);
+			} else { //table with the specific table name is not found. Create table
+				myTable = dom.newOdfElement(TableTableElement.class);
+				myTable.setTableNameAttribute(tablename);
+				spreadsheet.appendChild(myTable);
+			}
+
+			lst = myTable.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table-row");
+			if (lst.getLength() == 0) { //the first table row is not existed. Create table row
+				td = dom.newOdfElement(TableTableRowElement.class);
+				cell = dom.newOdfElement(TableTableCellElement.class);
+				p = dom.newOdfElement(OdfTextParagraph.class);
+				if (tablename.startsWith("Memory")) {
+					p.setTextContent("memory(b)");
+				} else {
+					p.setTextContent("time(ms)");
+				}
+				td.appendChild(cell);
+				cell.appendChild(p);
+				myTable.appendChild(td);
+			} else {
+				td = (TableTableRowElement) lst.item(0); //the first table row is existed.
+			}
+			cell = dom.newOdfElement(TableTableCellElement.class);
+			td.appendChild(cell);
+			p = dom.newOdfElement(OdfTextParagraph.class);
+			p.setTextContent(testTag);
+			cell.appendChild(p);
+
+
+			for (i = 1; i < values.length + 1; i++) {
+				if (i < lst.getLength()) { //table row is existed
+					td = (TableTableRowElement) lst.item(i);
+				} else { //table row is not existed.
+					td = dom.newOdfElement(TableTableRowElement.class);
+					myTable.appendChild(td);
+					//append first cell with labels
+					cell = dom.newOdfElement(TableTableCellElement.class);
+					td.appendChild(cell);
+					p = dom.newOdfElement(OdfTextParagraph.class);
+					p.setTextContent(labels[j]);
+					cell.appendChild(p);
+				}
+				cell = dom.newOdfElement(TableTableCellElement.class);
+				cell.setOfficeValueTypeAttribute("float");
+				cell.setOfficeValueAttribute(new Double(values[j]));
+				p = dom.newOdfElement(OdfTextParagraph.class);
+				p.setTextContent(values[j] + "");
+				cell.appendChild(p);
+				td.appendChild(cell);
+				j++;
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+		}
+	}
+
+	private void firsttry() throws Exception {
+		OdfDocument doc = null;
+		OdfFileDom dom = null;
+		String filename = null;
+
+		for (int j = 0; j < TEST_FILE_NAME.length; j++) {
+			filename = TEST_FILE_FOLDER + TEST_FILE_NAME[j];
+			LOG.log(Level.INFO, "filename:{0}", filename);
+			doc = OdfDocument.loadDocument(filename);
+			dom = doc.getContentDom();
+			doc.save(filename);
+		}
+	}
+
+	private void test() throws Exception {
+		long start, end;
+		OdfDocument doc = null;
+		OdfFileDom dom = null;
+		String filename = null;
+
+		if (TEST_FILE_NAME == null) {
+			return;
+		}
+
+		firsttry();
+
+		for (int i = 0; i < count; i++) {
+			for (int j = 0; j < TEST_FILE_NAME.length; j++) {
+				filename = TEST_FILE_FOLDER + TEST_FILE_NAME[j];
+				start = System.currentTimeMillis();
+				doc = OdfDocument.loadDocument(filename);
+				end = System.currentTimeMillis();
+				totalLoadTimeForEach[j] += end - start;
+				totalTime[0] += end - start;
+				if (i == 0) {
+					System.gc();
+					memoryfootprint[3 * j] = Runtime.getRuntime().totalMemory()
+							- Runtime.getRuntime().freeMemory();
+				}
+
+				start = System.currentTimeMillis();
+				dom = doc.getContentDom();
+				end = System.currentTimeMillis();
+				totalParseTimeForEach[j] += end - start;
+				totalTime[1] += end - start;
+				if (i == 0) {
+					System.gc();
+					memoryfootprint[3 * j + 1] = Runtime.getRuntime().totalMemory()
+							- Runtime.getRuntime().freeMemory();
+				}
+
+				start = System.currentTimeMillis();
+				doc.save(filename);
+				end = System.currentTimeMillis();
+				totalSaveTimeForEach[j] += end - start;
+				totalTime[2] += end - start;
+
+				doc = null;
+				dom = null;
+				if (i == 0) {
+					System.gc();
+					memoryfootprint[3 * j + 2] = Runtime.getRuntime().totalMemory()
+							- Runtime.getRuntime().freeMemory();
+				}
+			}
+		}
+
+		for (int i = 0; i < 3; i++) {
+			totalTime[i] = totalTime[i] / count;
+		}
+
+		for (int i = 0; i < TEST_FILE_NAME.length; i++) {
+			totalLoadTimeForEach[i] = totalLoadTimeForEach[i] / count;
+			totalParseTimeForEach[i] = totalParseTimeForEach[i] / count;
+			totalSaveTimeForEach[i] = totalSaveTimeForEach[i] / count;
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/EmbeddedDocumentTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/EmbeddedDocumentTest.java
new file mode 100644
index 0000000..1520d07
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/EmbeddedDocumentTest.java
@@ -0,0 +1,344 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+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.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.doc.OdfDocument.OdfMediaType;
+import org.odftoolkit.odfdom.doc.table.OdfTable;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class EmbeddedDocumentTest {
+
+	private static final Logger LOG = Logger.getLogger(EmbeddedDocumentTest.class.getName());
+	private static final String TEST_FILE_FOLDER = ResourceUtilities.getTestOutputFolder();
+	private static final String TEST_FILE_EMBEDDED = "performance/Presentation1_INVALID.odp";
+	private static final String TEST_FILE_EMBEDDED_SAVE_OUT = "SaveEmbeddedDoc.odt";
+	private static final String TEST_FILE_EMBEDDED_SIDEBYSIDE_SAVE_OUT = "SaveEmbeddedDocSideBySide.odt";
+	private static final String TEST_FILE_EMBEDDED_INCLUDED_SAVE_OUT = "SaveEmbeddedDocIncluded.odt";
+	private static final String TEST_FILE_REMOVE_EMBEDDED_SAVE_OUT = "RemoveEmbeddedDoc.odt";
+	private static final String TEST_FILE_MODIFIED_EMBEDDED = "TestModifiedEmbeddedDoc.odt";
+	private static final String TEST_FILE_MODIFIED_EMBEDDED_SAVE_STANDALONE = "SaveModifiedEmbeddedDocAlone.odt";
+	private static final String TEST_SPAN_TEXT = "Modify Header";
+	private static final String TEST_PIC = "testA.jpg";
+	private static final String TEST_PIC_ANOTHER = "testB.jpg";
+	private static final String SLASH = "/";
+
+	/**
+	 * The document A contains the embedded document E1, 
+	 * this test case is used to embed E1 to another document B
+	 */
+	@Test
+	public void testEmbedEmbeddedDocument() {
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_EMBEDDED));
+			OdfDocument saveDoc = OdfTextDocument.newTextDocument();
+			Map<String, OdfDocument> subDocs = doc.loadSubDocuments();
+			List<String> subDocNames = new ArrayList<String>();
+			for (String childDocPath : subDocs.keySet()) {
+				OdfDocument childDoc = subDocs.get(childDocPath);
+				String embeddedDocPath = childDoc.getDocumentPath();
+				saveDoc.insertDocument(childDoc, embeddedDocPath);
+				subDocNames.add(embeddedDocPath);
+			}
+			Set<String> paths = saveDoc.getPackage().getDocumentPaths();
+			int docCount = paths.size();
+			paths = saveDoc.getPackage().getDocumentPaths("application/vnd.oasis.opendocument.presentation");
+			int presentationDocCount = paths.size();
+			Assert.assertTrue(docCount > presentationDocCount);
+			saveDoc.save(TEST_FILE_FOLDER + TEST_FILE_EMBEDDED_SAVE_OUT);
+			saveDoc.close();
+			saveDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_EMBEDDED_SAVE_OUT));
+			Map<String, OdfDocument> reloadedSubDocs = saveDoc.loadSubDocuments();
+			Assert.assertTrue(subDocs.size() == reloadedSubDocs.size());
+			for (String childDocPath : subDocs.keySet()) {
+				Assert.assertEquals(subDocs.get(childDocPath).getMediaTypeString(), reloadedSubDocs.get(childDocPath).getMediaTypeString());
+			}
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail("Failed to embed an embedded Document: '" + ex.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * The document B is embedded to document A 
+	 * and the directory path of A and B are absolute from the package
+	 * DOCA/ and DOCB/
+	 */
+	@Test
+	public void testembeddedDocumentsLocatedSideBySide() {
+		try {
+			OdfTextDocument odtRootDoc = OdfTextDocument.newTextDocument();
+			odtRootDoc.insertDocument(OdfTextDocument.newTextDocument(), "DOCA/");
+			OdfDocument docA = odtRootDoc.loadSubDocument("DOCA");
+			docA.newImage(ResourceUtilities.getURI(TEST_PIC));
+			docA.insertDocument(OdfSpreadsheetDocument.newSpreadsheetDocument(), "../DOCB/");
+			OdfFileDom contentA = docA.getContentDom();
+			XPath xpath = contentA.getXPath();
+			TextPElement lastPara = (TextPElement) xpath.evaluate("//text:p[last()]", contentA, XPathConstants.NODE);
+			addFrameForEmbeddedDoc(contentA, lastPara, "DOCB");
+			OdfDocument docB = odtRootDoc.loadSubDocument("DOCB/");
+			Assert.assertNotNull(docB);
+			Assert.assertNull(odtRootDoc.loadSubDocument("DOCA/DOCB/"));
+			docB.newImage(ResourceUtilities.getURI(TEST_PIC_ANOTHER));
+			OdfTable table1 = docB.getTableList().get(0);
+			table1.setTableName("NewTable");
+			updateFrameForEmbeddedDoc(contentA, "./DOCB", "DOCA/DOCB");
+			//if user want to save the docA with the side by side embedded document
+			//he has to insert it to the sub document of docA and update the xlink:href link
+			docA.insertDocument(docB, "DOCB/");
+			//save
+			docA.save(TEST_FILE_FOLDER + TEST_FILE_EMBEDDED_SIDEBYSIDE_SAVE_OUT);
+			OdfDocument testLoad = OdfDocument.loadDocument(TEST_FILE_FOLDER + TEST_FILE_EMBEDDED_SIDEBYSIDE_SAVE_OUT);
+			OdfFileEntry imageEntry = testLoad.getPackage().getFileEntry(OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC);
+			Assert.assertNotNull(imageEntry);
+			Map<String, OdfDocument> embDocs = testLoad.loadSubDocuments(OdfDocument.OdfMediaType.SPREADSHEET);
+			for(String embedDocPath : embDocs.keySet()){
+				OdfDocument doc1 = embDocs.get(embedDocPath);
+				imageEntry = doc1.getPackage().getFileEntry(doc1.getDocumentPath() + OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC_ANOTHER);
+				Assert.assertNotNull(doc1.getTableByName("NewTable"));
+			}
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * 1) A new sub document text document DOCA/ is inserted into a new text document
+	 * 2) A picture is being added to the subdocument (ie. /DOCA/Pictures/testA.jpg)
+	 * 3) A new sub document spreadsheet document is inserted into the first (ie. /DOCA/DOCB)
+	 * 4) In the last paragraph of /DOCA a frame with a reference to the subdocument DOCB is added
+	 * 5) A picture is being added to the second subdocument (ie. /DOCA/DOCB/Pictures/testB.jpg)
+	 * 6) The spreadsheetname of DOCB is set to "NewTable"
+	 * 7) DOCA/ is saved in a document for its own	 
+	 */
+	@Test
+	public void testembeddedDocumentWithSubPath() {
+		try {
+			OdfTextDocument odtDoc1 = OdfTextDocument.newTextDocument();
+			odtDoc1.insertDocument(OdfTextDocument.newTextDocument(), "DOCA/");
+			OdfDocument docA = odtDoc1.loadSubDocument("DOCA");
+			docA.newImage(ResourceUtilities.getURI(TEST_PIC));
+			docA.insertDocument(OdfSpreadsheetDocument.newSpreadsheetDocument(), "DOCB/");
+			OdfFileDom contentA = docA.getContentDom();
+			XPath xpath = contentA.getXPath();
+			TextPElement lastPara = (TextPElement) xpath.evaluate("//text:p[last()]", contentA, XPathConstants.NODE);
+			addFrameForEmbeddedDoc(contentA, lastPara, "./DOCB");
+			OdfDocument docB = odtDoc1.loadSubDocument("DOCA/DOCB/");
+			docB.newImage(ResourceUtilities.getURI(TEST_PIC_ANOTHER));
+			OdfTable table1 = docB.getTableList().get(0);
+			table1.setTableName("NewTable");
+			Assert.assertNotNull(docB);
+			Assert.assertNull(odtDoc1.loadSubDocument("DOCB/"));
+			docA.save(TEST_FILE_FOLDER + TEST_FILE_EMBEDDED_INCLUDED_SAVE_OUT);
+			OdfDocument testLoad = OdfDocument.loadDocument(TEST_FILE_FOLDER + TEST_FILE_EMBEDDED_INCLUDED_SAVE_OUT);
+			OdfFileEntry imageEntry = testLoad.getPackage().getFileEntry(OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC);
+			Assert.assertNotNull(imageEntry);
+			Map<String, OdfDocument> embDocs = testLoad.loadSubDocuments(OdfDocument.OdfMediaType.SPREADSHEET);
+			for (String childDocPath : embDocs.keySet()) {	
+				OdfDocument doc1 = embDocs.get(childDocPath);
+				imageEntry = doc1.getPackage().getFileEntry(doc1.getDocumentPath() + OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC_ANOTHER);
+				Assert.assertNotNull(doc1.getTableByName("NewTable"));
+			}
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * The document A contains the embedded document E1,
+	 * This test case is used to show how to save the E1 to a stand alone document.
+	 */
+	@Test
+	public void testSaveEmbeddedDocument() {
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_EMBEDDED));
+			Map<String, OdfDocument> embeddedDocs = doc.loadSubDocuments();
+			for (String childDocPath : embeddedDocs.keySet()) {
+				OdfDocument childDoc = embeddedDocs.get(childDocPath);
+				String embedFileName = childDoc.getDocumentPath();
+				OdfMediaType embedMediaType = OdfMediaType.getOdfMediaType(childDoc.getMediaTypeString());
+				//use '_' replace '/', because '/' is not the valid char in file path
+				embedFileName = embedFileName.replaceAll("/", "_") + "." + embedMediaType.getSuffix();
+				childDoc.save(TEST_FILE_FOLDER + embedFileName);
+				LOG.log(Level.INFO, "Save file : {0}", TEST_FILE_FOLDER + embedFileName);
+				OdfDocument embeddedDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(embedFileName));
+				Assert.assertEquals(embeddedDoc.getMediaTypeString(), embedMediaType.getMediaTypeString());
+			}
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * There are two document, one is Presentation1_INVALID.odp
+	 * another is a new text document TestModifiedEmbeddedDoc.odt
+	 * Presentation1_INVALID.odp contains an embed document named "Object 1/", add one paragraph to Object 1
+	 * then embed "Object 1" to the new text document, and save this text document
+	 * reload TestModifiedEmbeddedDoc.odt, then get and modify embed document "DocA" and save it to a standalone document
+	 * load the saved standalone document, and check the content of it
+	 */
+	@Test
+	public void testEmbedModifiedEmbeddedDocument() {
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_EMBEDDED));
+			OdfDocument saveDoc = OdfTextDocument.newTextDocument();
+			OdfDocument embeddedDoc = doc.loadSubDocument("Object 1/");
+			//modify content of "Object 1"
+			OdfFileDom embedContentDom = embeddedDoc.getContentDom();
+			XPath xpath = embedContentDom.getXPath();
+			TextHElement header = (TextHElement) xpath.evaluate("//text:h[1]", embedContentDom, XPathConstants.NODE);
+			LOG.log(Level.INFO, "First para: {0}", header.getTextContent());
+			OdfTextSpan spanElem = new OdfTextSpan(embedContentDom);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			header.appendChild(spanElem);
+			//insert image to "Object 1"
+			embeddedDoc.newImage(ResourceUtilities.getURI(TEST_PIC));
+			//embed "Object 1" to TestModifiedEmbeddedDoc.odt as the path /DocA
+			String embedPath = "DocA";
+			saveDoc.insertDocument(embeddedDoc, embedPath);
+			saveDoc.save(TEST_FILE_FOLDER + TEST_FILE_MODIFIED_EMBEDDED);
+			saveDoc.close();
+			//reload TestModifiedEmbeddedDoc.odt
+			saveDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_MODIFIED_EMBEDDED));
+			embeddedDoc = saveDoc.loadSubDocument(embedPath);
+			//check the content of "DocA" and modify it again
+			embedContentDom = embeddedDoc.getContentDom();
+			header = (TextHElement) xpath.evaluate("//text:h[1]", embedContentDom, XPathConstants.NODE);
+			Assert.assertTrue(header.getTextContent().contains(TEST_SPAN_TEXT));
+			header.setTextContent("");
+			String packagePath = embeddedDoc.getDocumentPath() + SLASH + OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC;
+			OdfFileEntry imageEntry = embeddedDoc.getPackage().getFileEntry(packagePath);
+			Assert.assertNotNull(imageEntry);
+			embeddedDoc.newImage(ResourceUtilities.getURI(TEST_PIC_ANOTHER));
+			//save the "DocA" as the standalone document
+			embeddedDoc.save(TEST_FILE_FOLDER + TEST_FILE_MODIFIED_EMBEDDED_SAVE_STANDALONE);
+			//load the standalone document and check the content
+			OdfDocument standaloneDoc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_MODIFIED_EMBEDDED_SAVE_STANDALONE));
+			embedContentDom = standaloneDoc.getContentDom();
+			header = (TextHElement) xpath.evaluate("//text:h[1]", embedContentDom, XPathConstants.NODE);
+			Assert.assertTrue(header.getTextContent().length() == 0);
+			imageEntry = standaloneDoc.getPackage().getFileEntry(OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC);
+			Assert.assertNotNull(imageEntry);
+			OdfFileEntry anotherImageEntry = standaloneDoc.getPackage().getFileEntry(OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + TEST_PIC_ANOTHER);
+			Assert.assertNotNull(anotherImageEntry);
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testRemoveEmbeddedDocument() {
+		try {
+			OdfDocument doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_EMBEDDED));
+			Map<String, OdfDocument> embeddedDocs = doc.loadSubDocuments();
+			List<String> subDocNames = new ArrayList<String>();
+			for (String childDocPath : embeddedDocs.keySet()) {
+				OdfDocument childDoc = embeddedDocs.get(childDocPath);
+				Assert.assertNotNull(childDoc);
+				String embedFileName = childDoc.getDocumentPath();
+				subDocNames.add(embedFileName);
+				doc.removeDocument(embedFileName);
+			}
+			doc.save(TEST_FILE_FOLDER + TEST_FILE_REMOVE_EMBEDDED_SAVE_OUT);
+			doc.close();
+			//check manifest entry for the embed document 
+			//the sub entry of the embed document such as the pictures of the document should also be removed
+			doc = OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_REMOVE_EMBEDDED_SAVE_OUT));
+			Map<String, OdfDocument> reloadedSubDocs = doc.loadSubDocuments();
+			Assert.assertTrue(0 == reloadedSubDocs.size());
+			Set<String> entries = doc.getPackage().getFilePaths();
+			Iterator<String> entryIter = null;
+			for (int i = 0; i < subDocNames.size(); i++) {
+				entryIter = entries.iterator();
+				String embeddedDocPath = subDocNames.get(i);
+				while (entryIter.hasNext()) {
+					String entry = entryIter.next();
+					Assert.assertFalse(entry.startsWith(embeddedDocPath));
+				}
+			}
+			doc.close();
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	private void addFrameForEmbeddedDoc(OdfFileDom dom, TextPElement para, String path) throws Exception {
+		OdfDrawFrame drawFrame = new OdfDrawFrame(dom);
+		drawFrame.setDrawNameAttribute(path);
+		drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+		drawFrame.setSvgXAttribute("0.834cm");
+		drawFrame.setSvgYAttribute("2.919cm");
+		drawFrame.setSvgWidthAttribute("13.257cm");
+		drawFrame.setSvgHeightAttribute("11.375cm");
+		drawFrame.setDrawZIndexAttribute(0);
+
+		DrawObjectElement object = new DrawObjectElement(dom);
+
+		object.setXlinkHrefAttribute(path);
+		object.setXlinkActuateAttribute("onLoad");
+		object.setXlinkShowAttribute("embed");
+		object.setXlinkTypeAttribute("simple");
+		drawFrame.appendChild(object);
+		para.appendChild(drawFrame);
+	}
+
+	private void updateFrameForEmbeddedDoc(OdfFileDom dom, String originPath, String newPath) throws Exception {
+		NodeList objNodes = dom.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "object");
+		for (int i = 0; i < objNodes.getLength(); i++) {
+			OdfElement object = (OdfElement) objNodes.item(i);
+			String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+			if (refObjPath.equals(originPath)) {
+				object.setAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href", newPath);
+			}
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/GRDDLTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/GRDDLTest.java
new file mode 100644
index 0000000..1cc6bdc
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/GRDDLTest.java
@@ -0,0 +1,85 @@
+/************************************************************************

+ *

+ * 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.pkg;

+

+import java.io.ByteArrayInputStream;

+import java.io.ByteArrayOutputStream;

+import java.io.InputStreamReader;

+import java.net.URI;

+import java.util.logging.Logger;

+

+import javax.xml.transform.Templates;

+import javax.xml.transform.TransformerFactory;

+import javax.xml.transform.sax.SAXSource;

+import javax.xml.transform.stream.StreamResult;

+

+import junit.framework.TestCase;

+

+import org.junit.Test;

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

+import org.odftoolkit.odfdom.doc.OdfTextDocument;

+import org.odftoolkit.odfdom.utils.ResourceUtilities;

+import org.xml.sax.InputSource;

+

+import com.hp.hpl.jena.rdf.model.Model;

+import com.hp.hpl.jena.rdf.model.test.ModelTestBase;

+

+import java.util.logging.Level;

+import org.junit.Assert;

+

+public class GRDDLTest extends ModelTestBase {

+

+	private static final Logger LOG = Logger.getLogger(GRDDLTest.class

+			.getName());

+	private static final String SIMPLE_ODT = "test_rdfmeta.odt";

+

+	public GRDDLTest(String name) {

+		super(name);

+		// TODO Auto-generated constructor stub

+	}

+

+	@Test

+	public void testGRDDL()  {

+		try {

+			OdfXMLHelper helper = new OdfXMLHelper();

+			OdfTextDocument odt = (OdfTextDocument) OdfDocument

+					.loadDocument(ResourceUtilities.getAbsolutePath(SIMPLE_ODT));

+			InputSource inputSource = new InputSource(ResourceUtilities.getURI(

+					"grddl/odf2rdf.xsl").toString());

+			Templates multiFileAccessTemplate = TransformerFactory.newInstance()

+					.newTemplates(new SAXSource(inputSource));

+			ByteArrayOutputStream out = new ByteArrayOutputStream();

+	 

+			helper.transform(odt.getPackage(), "content.xml",

+					multiFileAccessTemplate, new StreamResult(out));

+

+			Model m1 = createMemModel();

+			m1.read(new InputStreamReader(new ByteArrayInputStream(out

+					.toByteArray()), "utf-8"), odt.getPackage().getBaseURI());

+			LOG.info("RDF Model:\n" + m1.toString());

+			TestCase.assertEquals(5, m1.size());

+		} catch (Exception ex) {

+			Assert.fail(ex.getMessage());

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

+		}

+	}

+}

diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/LoadSaveErrorTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/LoadSaveErrorTest.java
new file mode 100644
index 0000000..5215fb4
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/LoadSaveErrorTest.java
@@ -0,0 +1,222 @@
+/*
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.odftoolkit.odfdom.pkg;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Logger;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * Tests the error behaviour while loading or saving a document.
+ */
+public class LoadSaveErrorTest {
+
+	private static final String SOURCE = "OdfTextDocument.odt";
+
+	/**
+	 * The ZIP in this test claims to be an ODT file but then backs this with nothing.
+	 * We should be able to cancel the whole operation through a custom ErrorHandler,
+	 * throwing exception not only for fatal errors.
+	 * 
+	 * @throws SAXException if an XML-related error occurs
+	 * @throws IOException if an I/O error occurs
+	 */
+	@Test
+	public void testInvalidZipAsODF() throws Exception {
+		ByteArrayOutputStream baout = new ByteArrayOutputStream();
+		ZipOutputStream zout = new ZipOutputStream(baout);
+		ZipEntry entry = new ZipEntry("mimetype");
+		zout.putNextEntry(entry);
+		zout.write(OdfDocument.OdfMediaType.TEXT.getMediaTypeString().getBytes("US-ASCII"));
+		zout.closeEntry();
+		zout.close();
+
+		byte[] zip = baout.toByteArray();
+
+		final AtomicInteger warnings = new AtomicInteger(0);
+		final AtomicInteger errors = new AtomicInteger(0);
+		final AtomicInteger fatals = new AtomicInteger(0);
+
+		ErrorHandler errorHandler = new ErrorHandler() {
+
+			public void warning(SAXParseException exception) throws SAXException {
+				warnings.incrementAndGet();
+				Logger.getLogger(getClass().getName()).warning(exception.getLocalizedMessage());
+			}
+
+			public void error(SAXParseException exception) throws SAXException {
+				errors.incrementAndGet();
+				Logger.getLogger(getClass().getName()).severe(exception.getLocalizedMessage());
+				//Here's the difference to DefaultErrorHandler:
+				//we also throw normal errors, not just fatal errors.
+				throw exception;
+			}
+
+			public void fatalError(SAXParseException exception)
+					throws SAXException {
+				fatals.incrementAndGet();
+				Logger.getLogger(getClass().getName()).severe(exception.getLocalizedMessage());
+				throw exception;
+			}
+
+		};
+
+		try {
+			OdfPackage odfPackage = OdfPackage.loadPackage(
+					new ByteArrayInputStream(zip), null, errorHandler);
+			odfPackage.close();
+			Assert.fail("Expected an exception for the incomplete ODF file!");
+		} catch (SAXException se) {
+			//expected
+		}
+		Assert.assertEquals(0, warnings.get());
+		Assert.assertEquals(0, fatals.get());
+		Assert.assertEquals("Expected abortion after the first exception to come through the ErrorHandler",
+				1, errors.get());
+	}
+
+	@Test
+	public void testLoadWithFailingNetwortConnection() throws Exception {
+		String doc = ResourceUtilities.getAbsolutePath(SOURCE);
+		File file = new File(doc);
+		InputStream in = new java.io.FileInputStream(file);
+		try {
+			in = new FailingInputStream(in, 8000);
+			try {
+				OdfPackage.loadPackage(in);
+				Assert.fail("Expected IOException for failing stream!");
+			} catch (IOException ioe) {
+				Assert.assertTrue(ioe.getMessage().contains("Stream failed!"));
+			}
+		} finally {
+			in.close();
+		}
+	}
+
+	/**
+	 * Tests what happens if there is an I/O error while saving an ODF file.
+	 * @throws Exception if an error occurs
+	 */
+	@Test
+	public void testDiskFullOnSave() throws Exception {
+		OdfPackageDocument odfDocument = OdfPackageDocument
+				.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE));
+		Assert.assertTrue(odfDocument.getPackage().contains("content.xml"));
+		String baseURI = odfDocument.getPackage().getBaseURI();
+//		Assert.assertTrue(ResourceUtilities.getURI(SOURCE).toString()
+//				.compareToIgnoreCase(baseURI) == 0);
+		System.out.println("SOURCE URI1:"+ResourceUtilities.getURI(SOURCE).toString());
+		System.out.println("SOURCE URI2:"+baseURI);
+
+		Document odfContent = odfDocument.getFileDom("content.xml");
+		NodeList lst = odfContent.getElementsByTagNameNS(
+				"urn:oasis:names:tc:opendocument:xmlns:text:1.0", "p");
+		Node node = lst.item(0);
+		String oldText = "Changed!!!";
+		node.setTextContent(oldText);
+
+		try {
+			odfDocument.getPackage().save(
+					new DiskFullSimulationOutputStream(400));
+			Assert.fail("Expected an IOException when disk is full!");
+		} catch (IOException ioe) {
+			Assert.assertEquals("Disk full!", ioe.getMessage());
+		}
+	}
+
+	private static class DiskFullSimulationOutputStream extends OutputStream {
+
+		private long remainingBytes;
+
+		public DiskFullSimulationOutputStream(long byteCountUntilDiskFull) {
+			this.remainingBytes = byteCountUntilDiskFull;
+		}
+
+		@Override
+		public void write(int b) throws IOException {
+			remainingBytes--;
+			if (remainingBytes <= 0) {
+				throw new IOException("Disk full!");
+			}
+		}
+
+	}
+
+	/** InputStream that will stop reading after the amount to failure has reached.
+	 By doing so this InputStream emulates a network failure or disc error. */
+	private static class FailingInputStream extends FilterInputStream {
+
+		private long remainingBytes;
+
+		protected FailingInputStream(InputStream in, long bytesUntilFailure) {
+			super(in);
+			this.remainingBytes = bytesUntilFailure;
+		}
+
+		private void processBytes(int count) throws IOException {
+			remainingBytes -= count;
+			if (remainingBytes <= 0) {
+				throw new IOException("Stream failed!");
+			}
+		}
+
+		@Override
+		public int read() throws IOException {
+			processBytes(1);
+			return super.read();
+		}
+
+		@Override
+		public int read(byte[] b, int off, int len) throws IOException {
+			int bytesRead = super.read(b, off, len);
+			if (bytesRead > 0) {
+				processBytes(bytesRead);
+			}
+			return bytesRead;
+		}
+
+		@Override
+		public int read(byte[] b) throws IOException {
+			return read(b, 0, b.length);
+		}
+
+
+
+	}
+
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/LoadSaveTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/LoadSaveTest.java
new file mode 100644
index 0000000..002f3cb
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/LoadSaveTest.java
@@ -0,0 +1,102 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class LoadSaveTest {
+
+    private static final String SOURCE = "not-only-odf.odt";
+    private static final String TARGET = "loadsavetest.odt";
+	private static final String FOREIGN_ATTRIBUTE_NAME = "foreignAttribute";
+	private static final String FOREIGN_ATTRIBUTE_VALUE = "foreignAttributeValue";
+	private static final String FOREIGN_ELEMENT_TEXT = "foreignText";
+
+    public LoadSaveTest() {
+    }
+
+    @Test
+    public void testLoadSave() {
+        try {
+            OdfPackageDocument odfDocument = OdfPackageDocument.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE));
+            Assert.assertTrue(odfDocument.getPackage().contains("content.xml"));
+            String baseURI = odfDocument.getPackage().getBaseURI();
+//            Assert.assertTrue(ResourceUtilities.getURI(SOURCE).toString().compareToIgnoreCase(baseURI) == 0);
+            System.out.println("SOURCE URI1:"+ResourceUtilities.getURI(SOURCE).toString());
+			System.out.println("SOURCE URI2:"+baseURI);
+
+            Document odfContent = odfDocument.getFileDom("content.xml");
+            NodeList lst = odfContent.getElementsByTagNameNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0", "p");
+            Node node = lst.item(0);
+            String oldText = "Changed!!!";
+            node.setTextContent(oldText);
+
+            //Added to reproduce the bug "xlmns:null=""" is added to namespace.
+            OdfFileDom dom = odfDocument.getFileDom("content.xml");
+			Map<String, String> nsByUri = dom.getMapNamespacePrefixByUri();
+			for (Entry<String, String> entry : nsByUri.entrySet()) {
+				Assert.assertNotNull(entry.getValue());
+				Assert.assertFalse(entry.getValue().length()==0);
+				Assert.assertNotNull(entry.getKey());
+				Assert.assertFalse(entry.getKey().length()==0);
+			}
+			
+            odfDocument.save(ResourceUtilities.newTestOutputFile(TARGET));
+            odfDocument = OdfPackageDocument.loadDocument(ResourceUtilities.getAbsolutePath(TARGET));
+
+            odfContent = odfDocument.getFileDom("content.xml");
+            lst = odfContent.getElementsByTagNameNS("urn:oasis:names:tc:opendocument:xmlns:text:1.0", "p");
+            node = lst.item(0);
+            String newText = node.getTextContent();
+            Assert.assertTrue(newText.equals(oldText));
+
+			node = lst.item(1);
+			//check foreign attribute without namespace
+			Element foreignElement = (Element) node.getChildNodes().item(0);
+            String foreignText = foreignElement.getTextContent();
+            Assert.assertTrue(foreignText.equals(FOREIGN_ELEMENT_TEXT));
+
+			//check foreign element without namespace
+			Attr foreignAttr = (Attr) node.getAttributes().getNamedItem(FOREIGN_ATTRIBUTE_NAME);
+			String foreignAttrValue = foreignAttr.getValue();
+            Assert.assertTrue(foreignAttrValue.equals(FOREIGN_ATTRIBUTE_VALUE));
+
+
+
+        } catch (Exception e) {
+        	Logger.getLogger(LoadSaveTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+            Assert.fail(e.getMessage());
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/NoTempFileTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/NoTempFileTest.java
new file mode 100644
index 0000000..73ba5df
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/NoTempFileTest.java
@@ -0,0 +1,135 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.pkg;
+
+import java.io.FileInputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+
+public class NoTempFileTest {
+
+	private static final Logger LOG = Logger.getLogger(OdfPackage.class.getName());
+	private static final String TEST_FILE_FOLDER = ResourceUtilities.getTestOutputFolder();
+	private static final String Test_File = "image.odt";
+	private static String IMage = "testA.jpg";
+	private static String New_File = "test3.odt";
+	private static String Test2File = "test2.odt";
+
+	@Before
+	public void setUp() {
+		try {
+			System.setProperty("org.odftoolkit.odfdom.tmpfile.disable", "true");
+			String userPropTempEnable = System.getProperty("org.odftoolkit.odfdom.tmpfile.disable");
+			LOG.info("The test property org.odftoolkit.odfdom.tmpfile.disable is set to '" + userPropTempEnable + "'.");
+		} catch (Exception e) {
+			Logger.getLogger(NoTempFileTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testLoadPkgFromInputStream() {
+		try {
+			FileInputStream docStream = new FileInputStream(TEST_FILE_FOLDER + Test_File);
+			OdfPackage pkg = OdfPackage.loadPackage(docStream);
+			docStream.close();
+
+			OdfFileEntry imagefile = pkg.getFileEntry("Pictures/10000000000000B400000050FF285AE0.png");
+			Assert.assertNotNull(imagefile);
+			Assert.assertEquals("image/png", imagefile.getMediaTypeString());
+
+			byte[] bytes = pkg.getBytes("Pictures/10000000000000B400000050FF285AE0.png");
+			Assert.assertEquals(5551, bytes.length);
+
+		} catch (Exception e) {
+			Logger.getLogger(NoTempFileTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testInsertImageWithoutTemp() {
+		try {
+			// loads the ODF document package from the path
+			FileInputStream docStream = new FileInputStream(TEST_FILE_FOLDER + Test2File);
+			OdfPackage pkg = OdfPackage.loadPackage(docStream);
+			docStream.close();
+
+			// loads the image from the URL and inserts the image in the package, adapting the manifest
+			pkg.insert(new FileInputStream(TEST_FILE_FOLDER + IMage), "Pictures/myHoliday.jpg", "image/jpeg");
+			pkg.save(ResourceUtilities.newTestOutputFile(New_File));
+
+			OdfDocument doc = OdfDocument.loadDocument(TEST_FILE_FOLDER + New_File);
+			OdfFileDom contentDom = doc.getContentDom();
+
+			XPath xpath = contentDom.getXPath();
+			DrawFrameElement frame = contentDom.newOdfElement(DrawFrameElement.class);
+			frame.setSvgHeightAttribute("3in");
+			frame.setSvgWidthAttribute("7in");
+			DrawImageElement image = contentDom.newOdfElement(DrawImageElement.class);
+			image.setXlinkHrefAttribute("Pictures/myHoliday.jpg");
+			frame.appendChild(image);
+
+			TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);
+			para.appendChild(frame);
+			doc.save(TEST_FILE_FOLDER + New_File);
+			doc.close();
+
+			//Test if the image has been inserted
+			doc = OdfDocument.loadDocument(TEST_FILE_FOLDER + New_File);
+			contentDom = doc.getContentDom();
+			DrawFrameElement frameobj = (DrawFrameElement) xpath.evaluate("//text:p[1]/draw:frame", contentDom, XPathConstants.NODE);
+			Assert.assertEquals("3in", frameobj.getSvgHeightAttribute());
+			Assert.assertEquals("7in", frameobj.getSvgWidthAttribute());
+			DrawImageElement imageobj = (DrawImageElement) frameobj.getFirstChild();
+			Assert.assertEquals("Pictures/myHoliday.jpg", imageobj.getXlinkHrefAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(NoTempFileTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@After
+	public void tearDown() {
+		try {
+			System.setProperty("org.odftoolkit.odfdom.tmpfile.disable", "false");
+			String userPropTempEnable = System.getProperty("org.odftoolkit.odfdom.tmpfile.disable");
+			LOG.info("The test property org.odftoolkit.odfdom.tmpfile.disable is set to '" + userPropTempEnable + "'.");
+		} catch (Exception e) {
+			Logger.getLogger(NoTempFileTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/OdfXMLHelper.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/OdfXMLHelper.java
new file mode 100644
index 0000000..8fb62c1
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/OdfXMLHelper.java
@@ -0,0 +1,378 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentType;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
+public class OdfXMLHelper {
+
+	/**
+	 * create an XMLReader
+	 * with a Resolver set to parse content in a ODF Package
+	 *
+	 * @param pkg the ODF Package
+	 * @return a SAX XMLReader
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public XMLReader newXMLReader(OdfPackage pkg)
+			throws SAXException, ParserConfigurationException {
+		XMLReader xmlReader = pkg.getXMLReader();
+		xmlReader.setEntityResolver(pkg.getEntityResolver());
+		return xmlReader;
+	}
+
+	/**
+	 * use SAX parser to parse content of package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param contentHandler a SAX Content handler to receive SAX Events
+	 * @param errorHandler a SAX Error handler to be called on errors during parsing
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 */
+	public void parse(OdfPackage pkg, String path, ContentHandler contentHandler, ErrorHandler errorHandler)
+			throws SAXException, ParserConfigurationException, IOException, IllegalArgumentException, TransformerConfigurationException, TransformerException {
+
+		InputStream is = null;
+		try {
+			is = pkg.getInputStream(path);
+			XMLReader reader = newXMLReader(pkg);
+
+			String uri = pkg.getBaseURI() + path;
+
+			if (contentHandler != null) {
+				reader.setContentHandler(contentHandler);
+			}
+			if (errorHandler != null) {
+				reader.setErrorHandler(errorHandler);
+			}
+
+			InputSource ins = new InputSource(is);
+			ins.setSystemId(uri);
+
+			reader.parse(ins);
+		} catch (Exception ex) {
+			Logger.getLogger(OdfXMLHelper.class.getName()).log(Level.SEVERE, null, ex);
+		} finally {
+			try {
+				is.close();
+			} catch (IOException ex) {
+				Logger.getLogger(OdfXMLHelper.class.getName()).log(Level.SEVERE, null, ex);
+			}
+		}
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templatePath a path to a file in the filesystem containing an XSL Template
+	 * @param outPath a path in the filesystem for the output of the XSL Transformation
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, String templatePath, String outPath)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+
+		transform(pkg, path, new File(templatePath), new File(outPath));
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templateSource TraX Source of an XSL Transformation Template
+	 * @param outPath path to an output file for the XSL Transformation
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, Source templateSource, String outPath)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+
+		transform(pkg, path, templateSource, new File(outPath));
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templateSource TraX Source of an XSL Transformation
+	 * @param out an output File
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, Source templateSource, File out)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+
+		transform(pkg, path, templateSource, new StreamResult(out));
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * insert result back to package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templatePath path inside the filesystem to an XSL template file
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, String templatePath)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+		transform(pkg, path, new File(templatePath));
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param template File containing an XSLT Template
+	 * @param out File for the XSLT ouput
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, File template, File out)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+
+		TransformerFactory transformerfactory = TransformerFactory.newInstance();
+
+		Templates templates = transformerfactory.newTemplates(new StreamSource(template));
+		transform(pkg, path, templates, new StreamResult(out));
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * insert result back to package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param template a File containing an XSLT Template
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, File template)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+
+		TransformerFactory transformerfactory = TransformerFactory.newInstance();
+
+		Templates templates = transformerfactory.newTemplates(new StreamSource(template));
+		transform(pkg, path, templates);
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templateSource TraX Source of an XSLT Template
+	 * @param result TraX Result of XSL-Tranformation
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, Source templateSource, Result result)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException,
+			ParserConfigurationException {
+		TransformerFactory transformerfactory = TransformerFactory.newInstance();
+		transformerfactory.setURIResolver(pkg.getURIResolver());
+
+		Templates templates = transformerfactory.newTemplates(templateSource);
+		transform(pkg, path, templates, result);
+	}
+
+	/**
+	 * Does an XSL-Transformation on content contained in package.<br/><br/>
+	 *
+	 * There are three default parameteres provided to the transformation:
+	 * There are three default parameteres provided to the transformation:
+	 * <ol>
+	 * <li><b>sourceURL:</b> the URL of the source directory </li>
+	 * <li><b>sourceBaseURL:</b> baseURL of the source file (the package).
+	 * This URL necessary to access any content within the package from the XSLT scripts.
+	 * The relative package path will concatenated after the 'sourceBaseURL'.</li>
+	 * <li><b>targetURL:</b> the URL of the target directory</li>
+	 * <li><b>targetBaseURL:</b>the baseURL of the target file</li>
+	 * </ol>
+	 *
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templates TraX XSLT Template
+	 * @param result TraX XSLT Result
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, Templates templates, Result result)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException,
+			ParserConfigurationException {
+		try {
+
+			Source source = null;
+			String uri = pkg.getBaseURI() + path;
+			Document doc = pkg.getDom(path);
+			source = new DOMSource(doc);
+			Transformer transformer = templates.newTransformer();
+			transformer.setURIResolver(pkg.getURIResolver());
+
+			transformer.setParameter("sourceURL", uri);
+			transformer.setParameter("sourceBaseURL", pkg.getBaseURI() + "/");
+
+			uri = result.getSystemId();
+			if (uri != null) {
+				transformer.setParameter("targetURL", uri);
+				int i = uri.lastIndexOf('/');
+				if (i > 0) {
+					uri = uri.substring(0, i + 1);
+					transformer.setParameter("targetBaseURL", uri);
+				}
+			}
+			DocumentType doctype = doc.getDoctype();
+			if (doctype != null) {
+				if (doctype.getPublicId() != null) {
+					transformer.setParameter("publicType", doctype.getPublicId());
+				}
+				if (doctype.getSystemId() != null) {
+					transformer.setParameter("systemType", doctype.getSystemId());
+				}
+			}
+
+			transformer.transform(source, result);
+		} catch (Exception ex) {
+			Logger.getLogger(OdfXMLHelper.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+	}
+
+	/**
+	 * Do XSL-Transformation on content contained in package
+	 * and insert result back to package
+	 * @param pkg a OdfPackage
+	 * @param path a path inside the OdfPackage, eg. to a contained content.xml stream
+	 * @param templates Trax XSLT Template
+	 * @throws TransformerConfigurationException
+	 * @throws TransformerException
+	 * @throws IOException
+	 * @throws IllegalArgumentException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public void transform(OdfPackage pkg, String path, Templates templates)
+			throws TransformerConfigurationException, TransformerException,
+			IOException, IllegalArgumentException, SAXException, ParserConfigurationException {
+
+		Result result = null;
+		ByteArrayOutputStream baos = null;
+
+//		if (pkg.isDomCached(path)) {
+//			result = new DOMResult();
+//		} else {
+			baos = new ByteArrayOutputStream();
+			result = new StreamResult(baos);
+//		}
+
+		transform(pkg, path, templates, result);
+
+//		if (pkg.isDomCached(path)) {
+//			try {
+//				pkg.insert((Document) ((DOMResult) result).getNode(), path, null);
+//			} catch (Exception ex) {
+//				Logger.getLogger(OdfXMLHelper.class.getName()).log(Level.SEVERE, null, ex);
+//			}
+//		} else {
+			try {
+				byte[] data = baos.toByteArray();
+				pkg.insert(data, path, "text/xml");
+			} catch (Exception ex) {
+				Logger.getLogger(OdfXMLHelper.class.getName()).log(Level.SEVERE, null, ex);
+			}
+//		}
+
+	}
+}
+
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/PackagePathTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/PackagePathTest.java
new file mode 100644
index 0000000..8a6011f
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/PackagePathTest.java
@@ -0,0 +1,37 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+package org.odftoolkit.odfdom.pkg;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PackagePathTest {
+
+	@Test
+	public void normalizePath() {
+		Assert.assertEquals(OdfPackage.normalizePath("docA1///docA2/.."), "docA1/");
+		Assert.assertEquals(OdfPackage.normalizePath("docA1/../docA2"), "docA2");
+		Assert.assertEquals(OdfPackage.normalizePath("docA1/../docA2/./."), "docA2/");
+		Assert.assertEquals(OdfPackage.normalizePath("docA1/docA2/docA3/../../docA4/"), "docA1/docA4/");
+		Assert.assertEquals(OdfPackage.normalizePath("docA1/docA2/docA3/../docA4/../../docA5/"), "docA1/docA5/");
+	}
+
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/PackageTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/PackageTest.java
new file mode 100644
index 0000000..58be527
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/PackageTest.java
@@ -0,0 +1,384 @@
+/************************************************************************
+ *
+ * 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.pkg;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stream.StreamResult;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.doc.OdfPresentationDocument;
+import org.odftoolkit.odfdom.doc.OdfSpreadsheetDocument;
+import org.odftoolkit.odfdom.doc.OdfTextDocument;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.type.AnyURI;
+import org.odftoolkit.odfdom.utils.ErrorHandlerStub;
+import org.odftoolkit.odfdom.utils.ResourceUtilities;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class PackageTest {
+	
+	private static final Logger LOG = Logger.getLogger(PackageTest.class.getName());
+	private static final String mImagePath = "src/main/javadoc/doc-files/";
+	private static final String mImageName = "ODFDOM-Layered-Model.png";
+	private static final String mImageMediaType = "image/png";
+	private static final String XSL_CONCAT = "xslt/concatfiles.xsl";
+	private static final String XSL_OUTPUT = "ResolverTest.html";
+	// ToDo: Package Structure for test output possbile?
+	// private static final String XSL_OUTPUT ="pkg" + File.separator +
+	// "ResolverTest.html";
+	private static final String SIMPLE_ODT = "test2.odt";
+	private static final String ODF_FORMULAR_TEST_FILE = "SimpleFormula.odf";
+	private static final String IMAGE_TEST_FILE = "testA.jpg";
+	private static final String IMAGE_PRESENTATION = "imageCompressed.odp";
+	private static final String TARGET_STEP_1 = "PackageLoadTestStep1.ods";
+	private static final String TARGET_STEP_2 = "PackageLoadTestStep2.ods";
+	private static final String TARGET_STEP_3 = "PackageLoadTestStep3.ods";
+	
+	public PackageTest() {
+	}
+	
+	@Test
+	public void testNotCompressImages() throws Exception {
+		// create test presentation
+		OdfPresentationDocument odp = OdfPresentationDocument.newPresentationDocument();
+		OfficePresentationElement officePresentation = odp.getContentRoot();
+		DrawPageElement page = officePresentation.newDrawPageElement(null);
+		DrawFrameElement frame = page.newDrawFrameElement();
+		OdfDrawImage image = (OdfDrawImage) frame.newDrawImageElement();
+		image.newImage(ResourceUtilities.getURI(IMAGE_TEST_FILE));
+		odp.save(ResourceUtilities.newTestOutputFile(IMAGE_PRESENTATION));
+		
+		// test if the image is not compressed
+		ZipInputStream zinput = new ZipInputStream(ResourceUtilities.getTestResourceAsStream(IMAGE_PRESENTATION));
+		ZipEntry entry = zinput.getNextEntry();
+		while (entry != null) {
+			String entryName = entry.getName();
+			if (entryName.endsWith(".jpg")) {
+				File f = new File(ResourceUtilities.getAbsolutePath(IMAGE_TEST_FILE));
+				Assert.assertEquals(ZipEntry.STORED, entry.getMethod());
+				Assert.assertEquals(f.length(), entry.getSize());
+			}
+			entry = zinput.getNextEntry();
+		}
+	}
+	
+	@Test
+	public void loadPackage() {
+		try {
+			
+			// LOAD PACKAGE FORMULA
+			LOG.info("Loading an unsupported ODF Formula document as an ODF Package!");
+			OdfPackage formulaPackage = OdfPackage.loadPackage(ResourceUtilities.getAbsolutePath(ODF_FORMULAR_TEST_FILE));
+			Assert.assertNotNull(formulaPackage);
+			
+			// LOAD PACKAGE IMAGE
+			LOG.info("Loading an unsupported image file as an ODF Package!");
+			try {
+				// Exception is expected!
+				OdfPackage.loadPackage(ResourceUtilities.getAbsolutePath(IMAGE_TEST_FILE));
+				Assert.fail();
+			} catch (Exception e) {
+				String errorMsg = OdfPackageConstraint.PACKAGE_IS_NO_ZIP.getMessage();
+				if (!e.getMessage().endsWith(errorMsg.substring(errorMsg.indexOf("%1$s") + 4))) {
+					LOG.log(Level.SEVERE, null, e);
+					Assert.fail();
+				}
+			}
+			
+			// LOAD PACKAGE IMAGE (WITH ERROR HANDLER)
+			LOG.info("Loading an unsupported image file as an ODF Package (with error handler)!");
+			try {
+				// Exception is expected by error handler!
+				OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(IMAGE_TEST_FILE)), null, new DefaultHandler());
+				Assert.fail();
+			} catch (SAXException e) {
+				String errorMsg = OdfPackageConstraint.PACKAGE_IS_NO_ZIP.getMessage();
+				if (!e.getMessage().endsWith(errorMsg.substring(errorMsg.indexOf("%1$s") + 4))) {
+					LOG.log(Level.SEVERE, null, e);
+					Assert.fail();
+				}
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testPackage() {
+		File tmpFile1 = ResourceUtilities.newTestOutputFile(TARGET_STEP_1);
+		File tmpFile2 = ResourceUtilities.newTestOutputFile(TARGET_STEP_2);
+		File tmpFile3 = ResourceUtilities.newTestOutputFile(TARGET_STEP_3);
+		OdfDocument doc = null;
+		try {
+			doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			doc.save(tmpFile1);
+			doc.close();
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, mImagePath, ex);
+			Assert.fail();
+		}
+		
+		long lengthBefore = tmpFile1.length();
+		try {
+			// not allowed to change the document simply by open and save
+			OdfPackage odfPackage = OdfPackage.loadPackage(tmpFile1);
+			
+			URI imageURI = new URI(mImagePath + mImageName);
+			// testing encoded none ASCII in URL path
+			String pkgRef1 = AnyURI.encodePath("Pictures/a&b.jpg");
+			LOG.log(Level.INFO, "Attempt to write graphic to package path: {0}", pkgRef1);
+			odfPackage.insert(uri2ByteArray(imageURI), pkgRef1, mImageMediaType);
+			
+			// testing allowed none-ASCII in URL path (see rfc1808.txt)
+			String pkgRef2 = "Pictures/a&%" + "\u00ea" + "\u00f1" + "\u00fc" + "b.jpg";
+			LOG.log(Level.INFO, "Attempt to write graphic to package path: {0}", pkgRef2);
+			odfPackage.insert(uri2ByteArray(imageURI), pkgRef2, mImageMediaType);
+			odfPackage.save(tmpFile2);
+			long lengthAfter2 = tmpFile2.length();
+			// the new package with the images have to be bigger
+			Assert.assertTrue(lengthBefore < lengthAfter2);
+			odfPackage.remove(pkgRef1);
+			odfPackage.remove(pkgRef2);
+			odfPackage.remove("Pictures/");
+			odfPackage.save(tmpFile3);
+			long lengthAfter3 = tmpFile3.length();
+			odfPackage.close();
+			
+			// the package without the images should be as long as before
+			Assert.assertTrue("The files \n\t" + tmpFile1.getAbsolutePath() + " and \n\t" + tmpFile3.getAbsolutePath() + " differ!", lengthBefore == lengthAfter3);
+			
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, mImagePath, ex);
+			Assert.fail();
+		}
+	}
+	
+	private static byte[] uri2ByteArray(URI uri) {
+		byte[] fileBytes = null;
+		try {
+			InputStream fileStream = null;
+			if (uri.isAbsolute()) {
+				// if the URI is absolute it can be converted to URL
+				fileStream = uri.toURL().openStream();
+			} else {
+				// otherwise create a file class to open the transformStream
+				fileStream = new FileInputStream(uri.toString());
+				// TODO: error handling in this case! -> allow method
+				// insert(URI, ppath, mtype)?
+			}
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			BufferedInputStream bis = new BufferedInputStream(fileStream);
+			StreamHelper.transformStream(bis, baos);
+			fileBytes = baos.toByteArray();
+		} catch (Exception e) {
+			Logger.getLogger(PackageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+			e.getLocalizedMessage();
+		}
+		return fileBytes;
+	}
+	
+	/**
+	 * Testing the XML helper and the OdfPackage to handle two files at the same
+	 * time (have them open)
+	 */
+	@Test
+	public void testResolverWithXSLT() {
+		try {
+			OdfXMLHelper helper = new OdfXMLHelper();
+			OdfTextDocument odt = (OdfTextDocument) OdfDocument.loadDocument(ResourceUtilities.getAbsolutePath(SIMPLE_ODT));
+			InputSource inputSource = new InputSource(ResourceUtilities.getURI(XSL_CONCAT).toString());
+			Templates multiFileAccessTemplate = TransformerFactory.newInstance().newTemplates(new SAXSource(inputSource));
+			File xslOut = ResourceUtilities.newTestOutputFile(XSL_OUTPUT);
+			helper.transform(odt.getPackage(), "content.xml", multiFileAccessTemplate, new StreamResult(xslOut));
+			LOG.info("Transformed ODF document " + SIMPLE_ODT + " to " + xslOut.getAbsolutePath() + "!");
+			File testOutputFile = new File(xslOut.getAbsolutePath());
+			if (testOutputFile.length() < 100) {
+				String errorMsg = "The file " + xslOut.getAbsolutePath() + " is smaller than it should be. \nIt was not created from multiple package files!";
+				LOG.severe(errorMsg);
+				Assert.fail(errorMsg);
+			}
+		} catch (Throwable t) {
+			Logger.getLogger(PackageTest.class.getName()).log(Level.SEVERE, t.getMessage(), t);
+			Assert.fail();
+		}
+		
+	}
+	
+	@Test
+	public void validationTestDefault() {
+		try {
+			// default no error handler: warnings and errors are not reported
+			OdfPackage.loadPackage(ResourceUtilities.getAbsolutePath("testInvalidPkg1.odt"));
+			OdfPackage.loadPackage(ResourceUtilities.getAbsolutePath("testInvalidPkg2.odt"));
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail();
+		}
+		
+		// default no error handler: fatal errors are reported
+		try {
+			OdfPackage.loadPackage(ResourceUtilities.getAbsolutePath("testA.jpg"));
+			Assert.fail();
+		} catch (Exception e) {
+			String errorMsg = OdfPackageConstraint.PACKAGE_IS_NO_ZIP.getMessage();
+			if (!e.getMessage().endsWith(errorMsg.substring(errorMsg.indexOf("%1$s") + 4))) {
+				Assert.fail();
+			}
+		}
+	}
+	
+	@Test
+	public void loadPackageWithoutManifest() {
+		try {
+			// regression for ODFTOOLKIT-327: invalid package without
+			// errorhandler
+			// doesn't throw NPE
+			ByteArrayOutputStream out = new ByteArrayOutputStream();
+			ZipOutputStream zipped = new ZipOutputStream(out);
+			ZipEntry entry = new ZipEntry("someentry");
+			zipped.putNextEntry(entry);
+			zipped.close();
+			
+			byte[] data = out.toByteArray();
+			ByteArrayInputStream in = new ByteArrayInputStream(data);
+			OdfPackage pkg = OdfPackage.loadPackage(in);
+			Assert.assertNotNull(pkg);
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail();
+		}
+	}
+	
+	@Test
+	public void validationTest() {
+		
+		// TESTDOC1: Expected ODF Warnings
+		Map expectedWarning1 = new HashMap();
+		expectedWarning1.put(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, 10);
+		
+		// TESTDOC1: Expected ODF Errors
+		Map expectedErrors1 = new HashMap();
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_NOT_FIRST_IN_PACKAGE, 1);
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_IS_COMPRESSED, 1);
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_HAS_EXTRA_FIELD, 1);
+		expectedErrors1.put(OdfPackageConstraint.MIMETYPE_DIFFERS_FROM_PACKAGE, 1);
+		expectedErrors1.put(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, 1);
+		ErrorHandlerStub handler1 = new ErrorHandlerStub(expectedWarning1, expectedErrors1, null);
+		handler1.setTestFilePath("testInvalidPkg1.odt");
+		
+		// TESTDOC2: Expected ODF Warnings
+		Map expectedWarning2 = new HashMap();
+		expectedWarning2.put(OdfPackageConstraint.MIMETYPE_NOT_IN_PACKAGE, 1);
+		expectedWarning2.put(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, 10);
+		
+		// TESTDOC2: Expected ODF Errors
+		Map expectedErrors2 = new HashMap();
+		expectedErrors2.put(OdfPackageConstraint.MANIFEST_DOES_NOT_LIST_FILE, 1);
+		expectedErrors2.put(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, 3);
+		ErrorHandlerStub handler2 = new ErrorHandlerStub(expectedWarning2, expectedErrors2, null);
+		handler2.setTestFilePath("testInvalidPkg2.odt");
+		
+		// TESTDOC3 DESCRIPTION - only mimetype file in package
+		// TESTDOC3: Expected ODF Errors
+		Map expectedErrors3 = new HashMap();
+		expectedErrors3.put(OdfPackageConstraint.MANIFEST_NOT_IN_PACKAGE, 1);
+		expectedErrors3.put(OdfPackageConstraint.MIMETYPE_WITHOUT_MANIFEST_MEDIATYPE, 1);
+		ErrorHandlerStub handler3 = new ErrorHandlerStub(null, expectedErrors3, null);
+		handler3.setTestFilePath("testInvalidPkg3.odt");
+		
+		// TESTDOC4: Expected ODF FatalErrors
+		Map<ValidationConstraint, Integer> expectedFatalErrors4 = new HashMap<ValidationConstraint, Integer>();
+		// loading a graphic instead an ODF document
+		expectedFatalErrors4.put(OdfPackageConstraint.PACKAGE_IS_NO_ZIP, 1);
+		ErrorHandlerStub handler4 = new ErrorHandlerStub(null, null, expectedFatalErrors4);
+		
+		try {
+			OdfPackage pkg1 = OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(handler1.getTestFilePath())), null, handler1);
+			Assert.assertNotNull(pkg1);
+			OdfPackage pkg2 = OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(handler2.getTestFilePath())), null, handler2);
+			Assert.assertNotNull(pkg2);
+			OdfPackage pkg3 = OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath(handler3.getTestFilePath())), null, handler3);
+			Assert.assertNotNull(pkg3);
+			try {
+				OdfPackage.loadPackage(new File(ResourceUtilities.getAbsolutePath("testA.jpg")), null, handler4);
+				Assert.fail();
+			} catch (Exception e) {
+				String errorMsg = OdfPackageConstraint.PACKAGE_IS_NO_ZIP.getMessage();
+				if (!e.getMessage().endsWith(errorMsg.substring(errorMsg.indexOf("%1$s") + 4))) {
+					Assert.fail();
+				}
+			}
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, null, ex);
+			Assert.fail(ex.toString());
+		}
+		handler1.validate();
+		handler2.validate();
+		handler3.validate();
+		handler4.validate();
+	}
+	
+	@Test
+	public void testPackagePassword() {
+		File tmpFile = ResourceUtilities.newTestOutputFile("PackagePassword.ods");
+		OdfDocument doc = null;
+		try {
+			doc = OdfSpreadsheetDocument.newSpreadsheetDocument();
+			doc.getPackage().setPassword("password");
+			doc.save(tmpFile);
+			doc.close();
+			OdfPackage odfPackage = OdfPackage.loadPackage(tmpFile, "password", null);
+			byte[] contentBytes = odfPackage.getBytes("content.xml");
+			Assert.assertNotNull(contentBytes);
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, "password test failed.", ex);
+			Assert.fail();
+		}
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/RDFMetadataTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/RDFMetadataTest.java
new file mode 100644
index 0000000..529f56b
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/pkg/RDFMetadataTest.java
@@ -0,0 +1,280 @@
+/************************************************************************

+ *

+ * 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.pkg;

+

+import java.util.logging.Logger;

+

+import javax.xml.xpath.XPath;

+import javax.xml.xpath.XPathConstants;

+

+import junit.framework.TestCase;

+

+import org.junit.Test;

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

+import org.odftoolkit.odfdom.doc.OdfTextDocument;

+import org.odftoolkit.odfdom.dom.OdfContentDom;

+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;

+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;

+import org.odftoolkit.odfdom.dom.element.text.TextBookmarkStartElement;

+import org.odftoolkit.odfdom.dom.element.text.TextHElement;

+import org.odftoolkit.odfdom.dom.element.text.TextMetaElement;

+import org.odftoolkit.odfdom.dom.element.text.TextPElement;

+import org.odftoolkit.odfdom.dom.rdfa.BookmarkRDFMetadataExtractor;

+import org.odftoolkit.odfdom.utils.ResourceUtilities;

+import org.w3c.dom.Node;

+

+import com.hp.hpl.jena.rdf.model.Literal;

+import com.hp.hpl.jena.rdf.model.Model;

+import com.hp.hpl.jena.rdf.model.Statement;

+import com.hp.hpl.jena.rdf.model.StmtIterator;

+import com.hp.hpl.jena.rdf.model.test.ModelTestBase;

+import com.hp.hpl.jena.util.PrintUtil;

+

+public class RDFMetadataTest extends ModelTestBase {

+

+	private static final Logger LOG = Logger.getLogger(RDFMetadataTest.class

+			.getName());

+	private static final String SIMPLE_ODT = "test_rdfmeta.odt";

+

+	public RDFMetadataTest(String name) {

+		super(name);

+		// TODO Auto-generated constructor stub

+	}

+

+	@Test

+	public void testGetRDFMetaFromGRDDLXSLT() throws Exception {

+		OdfTextDocument odt = (OdfTextDocument) OdfDocument

+				.loadDocument(ResourceUtilities.getAbsolutePath(SIMPLE_ODT));

+		Model m1 = odt.getManifestRDFMetadata();

+		LOG.info("RDF Model - manifest:\n" + m1.toString());				

+		long size1 = m1.size();

+		TestCase.assertEquals(25, size1);

+

+		Model m2 = odt.getInContentMetadata();

+		LOG.info("RDF Model - rood document in-content:\n" + m1.toString());				

+		long size2 = m2.size();

+		TestCase.assertEquals(20, size2);

+

+		Model m = odt.getRDFMetadata();

+

+		// This triples are duplicated in m1 and m2:

+		// (test_rdfmeta.odt rdf:type

+		// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document)

+		// (test_rdfmeta.odt/embeded.odt rdf:type

+		// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document)

+//		int duplicated = 2;

+		Model m3 = m1.intersection(m2);

+		LOG.info("RDF Model - duplicated (manifest & in-content of root doc):\n" + m3.toString());

+// Uncertain about the previuos statement, as the duplicated RDF triple do not have an identical subject..

+//		TestCase.assertEquals(duplicated, m3.size());

+//		TestCase.assertEquals(size1 + size2 - duplicated, m.size());

+

+		// test the embeded document

+		OdfDocument subDoc = odt.loadSubDocument("embeded.odt");

+		m1 = subDoc.getManifestRDFMetadata();

+		size1 = m1.size();

+		TestCase.assertEquals(5, size1);

+

+		m2 = subDoc.getInContentMetadata();

+		size2 = m2.size();

+		LOG.info("RDF Model - embedded document in content:\n" + m2.toString());

+		TestCase.assertEquals(6, size2);

+

+		m = subDoc.getRDFMetadata();

+

+		// This triple is duplicated in m1 and m2:

+		// (test_rdfmeta.odt/embeded.odt rdf:type

+		// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document)

+//		duplicated = 1;

+		m3 = m1.intersection(m2);

+		LOG.info("RDF Model - intersection of in-content metadata of root & embedded document:\n" + m2.toString());

+		//TestCase.assertEquals(duplicated, m3.size());

+		//TestCase.assertEquals(size1 + size2 - duplicated, m.size());

+

+	}

+

+	@Test

+	public void testGetInContentMetaFromCache() throws Exception {

+		OdfTextDocument odt = (OdfTextDocument) OdfDocument

+				.loadDocument(ResourceUtilities.getAbsolutePath(SIMPLE_ODT));

+		Model m1 = odt.getInContentMetadataFromCache();

+

+		// We have the following 1 triple in cache:

+		// (http://dbpedia.org/page/J._R._R._Tolkien

+		// http://www.w3.org/2006/vcard/ns#fn 'John Ronald Reuel Tolkien')

+		TestCase.assertEquals(1, m1.size());

+

+		OdfContentDom contentDom = odt.getContentDom();

+		XPath xpath = contentDom.getXPath();

+		TextMetaElement tm = (TextMetaElement) xpath.evaluate(

+				"//text:p/text:meta[last()]", contentDom, XPathConstants.NODE);

+

+		tm.setXhtmlAboutAttribute("http://dbpedia.org/page/J._K._Rowling");

+		m1 = odt.getInContentMetadataFromCache();

+		PrintUtil.printOut(m1.listStatements());

+		TestCase.assertEquals("http://dbpedia.org/page/J._K._Rowling", m1

+				.listStatements().nextStatement().getSubject().getURI());

+

+		tm.setTextContent("Joanne Kathleen Rowling");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals("Joanne Kathleen Rowling", m1.listStatements()

+				.nextStatement().getObject().toString());

+

+		tm.setXhtmlPropertyAttribute("dc:name");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals("http://purl.org/dc/elements/1.1/name", m1

+				.listStatements().nextStatement().getPredicate().getURI());

+

+		Node parent = tm.getParentNode();

+		parent.removeChild(tm);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(0, m1.size());

+		parent.appendChild(tm);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		parent.removeChild(tm);

+

+		TextPElement pEle = contentDom.newOdfElement(TextPElement.class);

+		parent.appendChild(pEle);

+		pEle.setXhtmlAboutAttribute("[dbpedia:J._K._Rowling]");

+		pEle.setXhtmlPropertyAttribute("dbpprop:birthDate dbpprop:dateOfBirth");

+		pEle.setXhtmlDatatypeAttribute("xsd:date");

+		pEle.setXhtmlContentAttribute("1965-07-31");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(2, m1.size());

+		StmtIterator iter = m1.listStatements();

+		while (iter.hasNext()) {

+			Statement stmt = iter.nextStatement();

+			TestCase.assertEquals("http://dbpedia.org/page/J._K._Rowling", stmt

+					.getSubject().getURI());

+			TestCase.assertTrue(stmt.getObject().canAs(Literal.class));

+			Literal literal = stmt.getObject().as(Literal.class);

+			TestCase.assertEquals("http://www.w3.org/2001/XMLSchema#date",

+					literal.getDatatypeURI());

+			TestCase.assertEquals("1965-07-31", literal.getLexicalForm());

+		}

+		pEle.setXhtmlPropertyAttribute("dc:date");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		TestCase.assertEquals("http://purl.org/dc/elements/1.1/date", m1

+				.listStatements().nextStatement().getPredicate().getURI());

+

+		parent.removeChild(pEle);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(0, m1.size());

+		parent.appendChild(pEle);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		parent.removeChild(pEle);

+

+		TextHElement hEle = contentDom.newOdfElement(TextHElement.class);

+		parent.appendChild(hEle);

+		hEle.setXhtmlAboutAttribute("[dbpedia:J._K._Rowling]");

+		hEle.setXhtmlPropertyAttribute("dbpprop:children");

+		hEle.setXhtmlDatatypeAttribute("xsd:integer");

+		hEle.setTextContent("2");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		TestCase.assertEquals("http://dbpedia.org/page/J._K._Rowling", m1

+				.listStatements().nextStatement().getSubject().getURI());

+		TestCase.assertEquals("http://dbpedia.org/property/children", m1

+				.listStatements().nextStatement().getPredicate().getURI());

+		TestCase.assertTrue(m1.listStatements().nextStatement().getObject()

+				.canAs(Literal.class));

+		TestCase.assertEquals("2^^http://www.w3.org/2001/XMLSchema#integer", m1

+				.listStatements().nextStatement().getObject().toString());

+		hEle.setTextContent("3");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals("3^^http://www.w3.org/2001/XMLSchema#integer", m1

+				.listStatements().nextStatement().getObject().toString());

+

+		parent.removeChild(hEle);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(0, m1.size());

+		parent.appendChild(hEle);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		parent.removeChild(hEle);

+

+		TableTableCellElement ttce = contentDom

+				.newOdfElement(TableTableCellElement.class);

+		parent.appendChild(ttce);

+		ttce.setXhtmlAboutAttribute("[dbpedia:J._K._Rowling]");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(0, m1.size());

+		ttce.setXhtmlPropertyAttribute("dbpprop:nationality");

+		ttce.setTextContent("British");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		ttce.setXhtmlAboutAttribute("http://dbpedia.org/page/J._R._R._Tolkien");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		TestCase.assertEquals("http://dbpedia.org/page/J._R._R._Tolkien", m1

+				.listStatements().nextStatement().getSubject().getURI());

+

+		TableCoveredTableCellElement tctce = contentDom

+				.newOdfElement(TableCoveredTableCellElement.class);

+		parent.appendChild(tctce);

+		tctce.setXhtmlAboutAttribute("[dbpedia:J._R._R._Tolkien]");

+		tctce.setXhtmlPropertyAttribute("dbpprop:shortDescription");

+		tctce.setXhtmlContentAttribute("British philologist and author");

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(2, m1.size());

+

+		parent.removeChild(ttce);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		parent.appendChild(ttce);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(2, m1.size());

+		parent.removeChild(ttce);

+

+		parent.removeChild(tctce);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(0, m1.size());

+		parent.appendChild(tctce);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(1, m1.size());

+		parent.removeChild(tctce);

+		m1 = odt.getInContentMetadataFromCache();

+		TestCase.assertEquals(0, m1.size());

+

+	}

+

+	@Test

+	public void testGetBookmarkRDFMetadata() throws Exception {

+		OdfTextDocument odt = (OdfTextDocument) OdfDocument

+				.loadDocument(ResourceUtilities.getAbsolutePath(SIMPLE_ODT));

+		Model m = odt.getBookmarkRDFMetadata();

+		TestCase.assertEquals(2, m.size());

+

+		OdfContentDom contentDom = odt.getContentDom();

+		XPath xpath = contentDom.getXPath();

+		TextBookmarkStartElement tm = (TextBookmarkStartElement) xpath

+				.evaluate("//text:bookmark-start[last()]", contentDom,

+						XPathConstants.NODE);

+		BookmarkRDFMetadataExtractor extractor = BookmarkRDFMetadataExtractor

+				.newBookmarkTextExtractor();

+		m = extractor.getBookmarkRDFMetadata(tm);

+		TestCase.assertEquals(1, m.size());

+	}

+}

diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/type/DataTypeTest.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/type/DataTypeTest.java
new file mode 100644
index 0000000..51bc5d4
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/type/DataTypeTest.java
@@ -0,0 +1,214 @@
+/************************************************************************
+* 
+*  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
+*  regarding copyright ownership.  The ASF licenses this file
+*  to you under the Apache License, Version 2.0 (the
+*  "License"); you may not use this file except in compliance
+*  with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing,
+*  software distributed under the License is distributed on an
+*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+*  KIND, either express or implied.  See the License for the
+*  specific language governing permissions and limitations
+*  under the License.
+*
+************************************************************************/
+package org.odftoolkit.odfdom.type;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.datatype.DatatypeFactory;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Length.Unit;
+
+public class DataTypeTest {
+
+	private static final Logger LOG = Logger.getLogger(DataTypeTest.class.getName());
+
+	@Test
+	public void testAnyURI() {
+		// AnyURI
+		AnyURI anyURI = AnyURI.valueOf("./Object 1");
+		URI uri = anyURI.getURI();
+		Assert.assertTrue(AnyURI.isValid(uri));
+		try {
+			uri = new URI(URITransformer.encodePath("http://www.sina.com"));
+			Assert.assertTrue(AnyURI.isValid(uri));
+		} catch (URISyntaxException e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testBase64() {
+		// Base64Binary
+		Base64Binary base64Binary = Base64Binary.valueOf("GVCC9H6p8LeqecY96ggY680uoZA=");
+		byte[] bytes = base64Binary.getBytes();
+		LOG.info("bytes:" + bytes.length);
+		Assert.assertTrue(Base64Binary.isValid("KWy1spZbKcHOunnKMB6dVA=="));
+	}
+	
+	@Test
+	public void testCellAddress() {		
+		// CellAddress
+		CellAddress cellAddress = new CellAddress("Sheet1.A3");
+		Assert.assertEquals(cellAddress.toString(), "Sheet1.A3");
+		Assert.assertFalse(CellAddress.isValid("33"));
+		Assert.assertTrue(CellAddress.isValid("$.$Z11"));
+	}
+	
+	@Test
+	public void testCellRangeAddress() {
+		// CellRangeAddress
+		CellRangeAddress cellRangeAddress1 = CellRangeAddress.valueOf("A.A1:A.F19");
+		CellRangeAddress cellRangeAddress2 = new CellRangeAddress(
+				"$(first).8:$(second).19");
+		CellRangeAddress cellRangeAddress3 = new CellRangeAddress("$.$8:$.19");
+		Assert.assertTrue(CellRangeAddress.isValid("$Sheet1.B12:$Sheet1.E35"));
+		
+		// CellRangeAddressList
+		CellRangeAddressList addressList = CellRangeAddressList.valueOf(cellRangeAddress1.toString() + " " + cellRangeAddress2.toString());
+		Assert.assertEquals(addressList.getCellRangesAddressList().get(0).toString(), cellRangeAddress1.toString());
+		CellRangeAddressList addressList2 = null;
+		try {
+			addressList2 = CellRangeAddressList.valueOf("");
+		} catch (IllegalArgumentException ex) {
+			// CellRangeAddressList is not allowed to have a empty string
+			Assert.assertNull(addressList2);
+		}
+	}
+	
+	@Test
+	public void testColor() {
+		// Color
+		try {
+			Color color = new Color("#ff00ff");
+			String hexColor = Color.toSixDigitHexRGB("rgb(123,214,23)");
+			Assert.assertTrue(Color.isValid(hexColor));
+			java.awt.Color awtColor = Color.mapColorToAWTColor(color);
+			Assert.assertEquals(new java.awt.Color(0xff00ff), awtColor);
+			try {
+				color = new Color(255, 0, 255);
+				Assert.assertEquals("#ff00ff", color.toString());
+				color = new Color(new java.awt.Color(255, 0, 255));
+				Assert.assertEquals("#ff00ff", color.toString());
+				color = new Color(1.0f, 0.0f, 1.0f);
+				Assert.assertEquals("#ff00ff", color.toString());
+				color = new Color("#f0f");
+				Assert.assertEquals("#ff00ff", color.toString());
+				Assert.assertEquals("#ff00ff", Color.FUCHSIA.toString());
+			} catch (IllegalArgumentException ie) {
+				Assert.fail(ie.getMessage());
+			}
+			try {
+				Assert.assertEquals("#ff0000", Color.toSixDigitHexRGB("rgb(255,0,0)"));
+				Assert.assertEquals("#ff0000", Color.toSixDigitHexRGB("rgb(300,0,0)"));
+				Assert.assertEquals("#ff0000", Color.toSixDigitHexRGB("rgb(110%, 0%, 0%)"));
+				Assert.assertEquals("#ff00ff", Color.toSixDigitHexRGB("fuchsia"));
+				Assert.assertEquals("#ff0000", Color.toSixDigitHexRGB("#ff0000"));
+				Assert.assertEquals("#ff0000", Color.toSixDigitHexRGB("#f00"));
+			} catch (IllegalArgumentException ie) {
+				Assert.fail(ie.getMessage());
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+	
+	@Test
+	public void testDateTime() {
+		// DateOrDateTime
+		DateTime time1 = DateTime.valueOf("2007-09-28T22:01:13");
+		Assert.assertNotNull(time1);
+		Date time2 = null;
+		try {
+			time2 = Date.valueOf("2007-09-28T22:01:13");
+		} catch (IllegalArgumentException ex) {
+			Assert.assertNull(time2);
+			time2 = Date.valueOf("2007-09-28");
+			Assert.assertNotNull(time2);
+		}
+
+		DatatypeFactory aFactory = new org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl();
+		GregorianCalendar calendar = new GregorianCalendar();
+		LOG.info(aFactory.newXMLGregorianCalendar(calendar).toString());
+		DateOrDateTime time3 = new DateOrDateTime(aFactory.newXMLGregorianCalendar(calendar));
+		Assert.assertNotNull(time3.getXMLGregorianCalendar());
+	}
+	
+	@Test
+	public void testStyle() {
+		// StyleName,StyleNameRef,StyleNameList
+		StyleName styleName1 = new StyleName("ta1");
+		StyleName styleName2 = new StyleName("_22");
+		StyleName styleName3 = StyleName.valueOf("cc_a");
+		Assert.assertFalse(StyleName.isValid(""));
+		Assert.assertFalse(StyleName.isValid("t:1"));
+		StyleNameRef styleNameRef1 = StyleNameRef.valueOf("ce1");
+		Assert.assertTrue(StyleNameRef.isValid(""));
+		List<StyleName> styleList = new ArrayList<StyleName>();
+		styleList.add(StyleName.valueOf(styleNameRef1.toString()));
+		styleList.add(styleName1);
+		styleList.add(styleName2);
+		StyleNameRefs styleRefs = new StyleNameRefs(styleList);
+		Assert.assertEquals(styleRefs.getStyleNameRefList().get(2).toString(),
+				styleName2.toString());
+		// StyleNameRefs is allowed to be empty string, it is defined to have
+		// zero or more NCName
+		Assert.assertTrue(StyleNameRefs.isValid(""));
+		styleList = StyleNameRefs.valueOf("").getStyleNameRefList();
+		Assert.assertTrue(styleList.size() == 0);
+	}
+	
+	@Test
+	public void testItegerPercent() {
+		// Integer,Percent
+		PositiveInteger positiveInt = new PositiveInteger(1);
+		NonNegativeInteger nnInt = new NonNegativeInteger(positiveInt.intValue());
+		Assert.assertFalse(NonNegativeInteger.isValid(-23));
+		Percent percent = new Percent(0.3);
+		Percent percent1 = Percent.valueOf("30.0%");
+		Assert.assertTrue(percent1.doubleValue() == percent.doubleValue());
+	}
+	
+	@Test
+	public void testMeasurement() {
+		// Measurement
+		String inchMeasure = "-4.354in";
+		Length length = new Length(inchMeasure);
+		String cmMeasure = length.mapToUnit(Unit.CENTIMETER);
+		NonNegativeLength nnLength = NonNegativeLength.valueOf(cmMeasure.substring(1));
+		Assert.assertEquals(nnLength.mapToUnit(Unit.INCH), "4.354in");
+		Assert.assertTrue(PositiveLength.isValid("0.01pt"));
+		Assert.assertTrue(NonNegativeLength.isValid("0.00pt"));
+		Assert.assertFalse(NonNegativeLength.isValid("-0.00pt"));
+		int mmValue = Length.parseInt(length.toString(), Unit.MILLIMETER);
+
+		NonNegativePixelLength pixelLength = NonNegativePixelLength.valueOf("1240px");
+		NonNegativePixelLength pixelLength1 = null;
+		try {
+			pixelLength1 = new NonNegativePixelLength("234cm");
+		} catch (NumberFormatException ex) {
+			Assert.assertNull(pixelLength1);
+		}
+		
+		// make sure Units are resolved correctly
+		Unit unit = Length.parseUnit("cm");
+		Assert.assertEquals(Unit.CENTIMETER, unit);
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/ErrorHandlerStub.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/ErrorHandlerStub.java
new file mode 100644
index 0000000..deffcfa
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/ErrorHandlerStub.java
@@ -0,0 +1,142 @@
+/************************************************************************
+ *
+ * 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.utils;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import junit.framework.Assert;
+import org.odftoolkit.odfdom.dom.OdfSchemaConstraint;
+import org.odftoolkit.odfdom.pkg.OdfPackageConstraint;
+import org.odftoolkit.odfdom.pkg.OdfValidationException;
+import org.odftoolkit.odfdom.pkg.ValidationConstraint;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/** A stub for a real SAX ErrorHandler embracing the expected amount of exceptions to be catched */
+public class ErrorHandlerStub implements ErrorHandler {
+
+	private static final Logger LOG = Logger.getLogger(ErrorHandlerStub.class.getName());
+	/** Map which returns the number of defects for each given ValidationConstraint */
+	private Map<ValidationConstraint, Integer> mExpectedWarning;
+	private Map<ValidationConstraint, Integer> mExpectedError;
+	private Map<ValidationConstraint, Integer> mExpectedFatalError;
+	private String mTestFilePath = null;
+
+	/** @param expectedW Excpected Warnings - a Map relating a certain ValidationConstraint to the number of occurances */
+	/** @param expectedE Excpected Errors	- a Map relating a certain ValidationConstraint to the number of occurances */
+	/** @param expectedF Excpected Fatal	- a Map relating a certain ValidationConstraint to the number of occurances */
+	public ErrorHandlerStub(Map<ValidationConstraint, Integer> expectedW, Map<ValidationConstraint, Integer> expectedE, Map<ValidationConstraint, Integer> expectedF) {
+		mExpectedWarning = expectedW;
+		mExpectedError = expectedE;
+		mExpectedFatalError = expectedF;
+	}
+
+	public void warning(SAXParseException exception) throws SAXException {
+		if (mExpectedWarning == null) {
+			mExpectedWarning = new HashMap<ValidationConstraint, Integer>();
+		}
+		registerProblem(exception, mExpectedWarning);
+	}
+
+	public void error(SAXParseException exception) throws SAXException {
+		if (mExpectedError == null) {
+			mExpectedError = new HashMap<ValidationConstraint, Integer>();
+		}
+		registerProblem(exception, mExpectedError);
+	}
+
+	public void fatalError(SAXParseException exception) throws SAXException {
+		if (mExpectedFatalError == null) {
+			mExpectedFatalError = new HashMap<ValidationConstraint, Integer>();
+		}
+		registerProblem(exception, mExpectedFatalError);
+	}
+
+	private void registerProblem(SAXParseException exception, Map<ValidationConstraint, Integer> problemOccurances) {
+		ValidationConstraint constraint = ((OdfValidationException) exception).getConstraint();
+		Integer problemOccurance = problemOccurances.get(constraint);
+		if (problemOccurance == null) {
+			problemOccurance = 0;
+		}
+		LOG.log(Level.INFO, "EXPECTED VALIDATION MESSAGE:\"{0}\"", exception.getMessage());
+		problemOccurances.put(constraint, --problemOccurance);
+	}
+
+	public void validate() {
+		if (mExpectedWarning != null) {
+			validateProblem(mExpectedWarning, "warning");
+		}
+		if (mExpectedError != null) {
+			validateProblem(mExpectedError, "error");
+		}
+		if (mExpectedFatalError != null) {
+			validateProblem(mExpectedFatalError, "fatalError");
+		}
+	}
+
+	private void validateProblem(Map<ValidationConstraint, Integer> expectedProblems, String level) {
+		Iterator<ValidationConstraint> constraints = expectedProblems.keySet().iterator();
+		while (constraints.hasNext()) {
+			ValidationConstraint constraint = constraints.next();
+			Integer problemOccurance = expectedProblems.get(constraint);
+			if (problemOccurance > 0) {
+				logMissingConstraint(constraint, level, problemOccurance);
+			} else if (problemOccurance < 0) {
+				logUnexpectedConstraint(constraint, level, problemOccurance * -1);
+			}
+		}
+	}
+
+	private void logMissingConstraint(ValidationConstraint constraint, String errorLevel, int problemOccurance) {
+		if (constraint instanceof OdfPackageConstraint) {
+			OdfPackageConstraint pkgConstraint = (OdfPackageConstraint) constraint;
+			Assert.fail(problemOccurance + "x time(s) was in " + getTestFilePath() + " not thrown the ODF 1.2 Package " + errorLevel + " '" + pkgConstraint.name() + "'!");
+		} else {
+			OdfSchemaConstraint schemaConstraint = (OdfSchemaConstraint) constraint;
+			Assert.fail(problemOccurance + "x time(s) was in " + getTestFilePath() + " not thrown the ODF 1.2 Schema " + errorLevel + " '" + schemaConstraint.name() + "'!");
+		}
+	}
+
+	private void logUnexpectedConstraint(ValidationConstraint constraint, String errorLevel, int problemOccurance) {
+		if (constraint instanceof OdfPackageConstraint) {
+			OdfPackageConstraint pkgConstraint = (OdfPackageConstraint) constraint;
+			Assert.fail(problemOccurance + "x time(s) in " + getTestFilePath() + " a new ODF 1.2 Package " + errorLevel + " '" + pkgConstraint.name() + "' was unexpected thrown!");
+		} else {
+			OdfSchemaConstraint schemaConstraint = (OdfSchemaConstraint) constraint;
+			Assert.fail(problemOccurance + "x time(s) in " + getTestFilePath() + " a new ODF 1.2 Schema " + errorLevel + " '" + schemaConstraint.name() + "' was unexpected thrown!");
+		}
+	}
+
+	/** @param testFilePath the path of the test file */
+	public void setTestFilePath(String testFilePath) {
+		mTestFilePath = testFilePath;
+	}
+
+	/** @return the path of the test file */
+	public String getTestFilePath() {
+		return mTestFilePath;
+	}
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/NodeAction.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/NodeAction.java
new file mode 100644
index 0000000..bfec383
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/NodeAction.java
@@ -0,0 +1,38 @@
+/************************************************************************
+ *
+ * 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.utils;
+
+import org.w3c.dom.Node;
+
+public abstract class NodeAction<T> {
+    protected abstract void apply(Node node, T arg, int depth) throws Exception;
+    private int depth = 0;
+    public void performAction(Node node, T arg) throws Exception {
+        while (node != null) {
+            apply(node, arg, depth);
+            depth++;
+            performAction(node.getFirstChild(), arg);
+            depth--;
+            node = node.getNextSibling();
+        }
+    }
+}
diff --git a/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/ResourceUtilities.java b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/ResourceUtilities.java
new file mode 100644
index 0000000..a5bf621
--- /dev/null
+++ b/trunk/odfdom/src/test/java/org/odftoolkit/odfdom/utils/ResourceUtilities.java
@@ -0,0 +1,115 @@
+/************************************************************************

+ *

+ * 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.utils;

+

+import java.io.File;

+import java.io.FileNotFoundException;

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.URI;

+import java.net.URISyntaxException;

+import java.net.URL;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+import org.odftoolkit.odfdom.pkg.rdfa.Util;

+

+/** Test utility class providing resources for the test in- and output */

+public final class ResourceUtilities {

+

+	private ResourceUtilities() {

+	}

+

+	/** The relative path of the test file will be resolved and the absolute will be returned

+	 * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>.

+	 * @return the absolute path of the test file

+	 * @throws FileNotFoundException If the file could not be found

+	 */

+	public static String getAbsolutePath(String relativeFilePath) throws FileNotFoundException {

+		URI uri = null;

+		try {

+			uri = ResourceUtilities.class.getClassLoader().getResource(relativeFilePath).toURI();

+			uri = new URI(Util.toExternalForm(uri));

+		} catch (URISyntaxException ex) {

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

+		}

+		if (uri == null) {

+			throw new FileNotFoundException("Could not find the file '" + relativeFilePath + "'!");

+		}

+		return uri.getPath();

+	}

+

+	/** The relative path of the test file will be resolved and the absolute will be returned

+	 * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>.

+	 * @return the URI created based on the relativeFilePath

+	 * @throws URISyntaxException if no URI could be created from the given relative path

+	 */

+	public static URI getURI(String relativeFilePath) throws URISyntaxException {

+		String filePath = "file:" + ResourceUtilities.class.getClassLoader().getResource(relativeFilePath).getPath();

+		filePath = Util.toExternalForm(new URI(filePath));

+		return new URI(filePath);		

+	}

+

+	/** The relative path of the test file will be used to determine an absolute

+	 *  path to a temporary directory in the output directory.

+	 * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>.

+	 * @return absolute path to a test output

+	 * @throws IOException if no absolute Path could be created.

+	 */

+	public static String getTestOutput(String relativeFilePath) throws IOException {

+		return File.createTempFile(relativeFilePath, null).getAbsolutePath();

+	}

+

+	/** The Input of the test file will be resolved and the absolute will be returned

+	 * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>.

+	 * @return the absolute path of the test file

+	 */

+	public static InputStream getTestResourceAsStream(String relativeFilePath) {

+		return ResourceUtilities.class.getClassLoader().getResourceAsStream(relativeFilePath);

+	}

+

+	/** Relative to the test output directory a test file will be returned dependent on the relativeFilePath provided.

+	 * @param relativeFilePath Path of the test output resource relative to <code>target/test-classes/</code>.

+	 * @return the empty <code>File</code> of the test output (to be filled)

+	 */

+	public static File newTestOutputFile(String relativeFilePath) {

+		String filepath = null;

+		try {

+			filepath = ResourceUtilities.class.getClassLoader().getResource("").toURI().getPath() + relativeFilePath;

+		} catch (URISyntaxException ex) {

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

+		}

+		return new File(filepath);

+	}

+

+	/** 

+	 * @return the absolute path of the test output folder, which is usually <code>target/test-classes/</code>.

+	 */

+	public static String getTestOutputFolder() {

+		String testFolder = null;

+		try {

+			testFolder = ResourceUtilities.class.getClassLoader().getResource("").toURI().getPath();

+		} catch (URISyntaxException ex) {

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

+		}

+		return testFolder;		

+	}

+}

diff --git a/trunk/odfdom/src/test/resources/CorruptedMimetypeChart.odc b/trunk/odfdom/src/test/resources/CorruptedMimetypeChart.odc
new file mode 100644
index 0000000..be94ffe
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/CorruptedMimetypeChart.odc
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/CorruptedMimetypeDoc.odt b/trunk/odfdom/src/test/resources/CorruptedMimetypeDoc.odt
new file mode 100644
index 0000000..d5f502a
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/CorruptedMimetypeDoc.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/InvalidUnderlineAttribute.odt b/trunk/odfdom/src/test/resources/InvalidUnderlineAttribute.odt
new file mode 100644
index 0000000..487e20a
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/InvalidUnderlineAttribute.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/Presentation1.odp b/trunk/odfdom/src/test/resources/Presentation1.odp
new file mode 100644
index 0000000..83c4a96
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/Presentation1.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/Presentation2.odp b/trunk/odfdom/src/test/resources/Presentation2.odp
new file mode 100644
index 0000000..7a9289e
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/Presentation2.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/SimpleFormula.odf b/trunk/odfdom/src/test/resources/SimpleFormula.odf
new file mode 100644
index 0000000..0e10240
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/SimpleFormula.odf
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/SlideTest1.odp b/trunk/odfdom/src/test/resources/SlideTest1.odp
new file mode 100644
index 0000000..c4c7842
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/SlideTest1.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/SlideTest2.odp b/trunk/odfdom/src/test/resources/SlideTest2.odp
new file mode 100644
index 0000000..0dbca30
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/SlideTest2.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/SlideTest3.odp b/trunk/odfdom/src/test/resources/SlideTest3.odp
new file mode 100644
index 0000000..e9c53a3
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/SlideTest3.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/TestSpreadsheetStyleTable.ods b/trunk/odfdom/src/test/resources/TestSpreadsheetStyleTable.ods
new file mode 100644
index 0000000..6d0be8c
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/TestSpreadsheetStyleTable.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/TestSpreadsheetTable.ods b/trunk/odfdom/src/test/resources/TestSpreadsheetTable.ods
new file mode 100644
index 0000000..d2f09fb
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/TestSpreadsheetTable.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/TestStyleSelection.odt b/trunk/odfdom/src/test/resources/TestStyleSelection.odt
new file mode 100644
index 0000000..bb84fc0
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/TestStyleSelection.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/TestTextSelection.odt b/trunk/odfdom/src/test/resources/TestTextSelection.odt
new file mode 100644
index 0000000..05dd45f
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/TestTextSelection.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/TestTextTable.odt b/trunk/odfdom/src/test/resources/TestTextTable.odt
new file mode 100644
index 0000000..ddb542d
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/TestTextTable.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/XPathTest-duplicate-prefix.odt b/trunk/odfdom/src/test/resources/XPathTest-duplicate-prefix.odt
new file mode 100644
index 0000000..7b5a2fb
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/XPathTest-duplicate-prefix.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/XPathTest-foreignPrefix.odp b/trunk/odfdom/src/test/resources/XPathTest-foreignPrefix.odp
new file mode 100644
index 0000000..d966770
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/XPathTest-foreignPrefix.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/XPathTest-foreignPrefix2.odp b/trunk/odfdom/src/test/resources/XPathTest-foreignPrefix2.odp
new file mode 100644
index 0000000..18f2c6b
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/XPathTest-foreignPrefix2.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/blank.odp b/trunk/odfdom/src/test/resources/blank.odp
new file mode 100644
index 0000000..b2e9dcc
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/blank.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/chartTestTemplate.otc b/trunk/odfdom/src/test/resources/chartTestTemplate.otc
new file mode 100644
index 0000000..e9ab341
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/chartTestTemplate.otc
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/empty.odt b/trunk/odfdom/src/test/resources/empty.odt
new file mode 100644
index 0000000..6b632ae
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/empty.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/empty_file.ods b/trunk/odfdom/src/test/resources/empty_file.ods
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/empty_file.ods
@@ -0,0 +1 @@
+
diff --git a/trunk/odfdom/src/test/resources/factorymanipulation.odt b/trunk/odfdom/src/test/resources/factorymanipulation.odt
new file mode 100644
index 0000000..beb7388
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/factorymanipulation.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/frame.odt b/trunk/odfdom/src/test/resources/frame.odt
new file mode 100644
index 0000000..188a0ae
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/frame.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/graphicTestTemplate.otg b/trunk/odfdom/src/test/resources/graphicTestTemplate.otg
new file mode 100644
index 0000000..b465714
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/graphicTestTemplate.otg
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/image.odt b/trunk/odfdom/src/test/resources/image.odt
new file mode 100644
index 0000000..df8081a
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/image.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/invalid.ods b/trunk/odfdom/src/test/resources/invalid.ods
new file mode 100644
index 0000000..49f7637
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/invalid.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/list.odt b/trunk/odfdom/src/test/resources/list.odt
new file mode 100644
index 0000000..90c7a17
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/list.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/metaTest.odt b/trunk/odfdom/src/test/resources/metaTest.odt
new file mode 100644
index 0000000..85a5130
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/metaTest.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/navigationtest.odt b/trunk/odfdom/src/test/resources/navigationtest.odt
new file mode 100644
index 0000000..9d2ebc5
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/navigationtest.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/no_size_opt.odt b/trunk/odfdom/src/test/resources/no_size_opt.odt
new file mode 100644
index 0000000..81a2342
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/no_size_opt.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/not-only-odf.odt b/trunk/odfdom/src/test/resources/not-only-odf.odt
new file mode 100644
index 0000000..9ea735e
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/not-only-odf.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Presentation1_INVALID.odp b/trunk/odfdom/src/test/resources/performance/Presentation1_INVALID.odp
new file mode 100644
index 0000000..5df2ea5
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Presentation1_INVALID.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Presentation2.odp b/trunk/odfdom/src/test/resources/performance/Presentation2.odp
new file mode 100644
index 0000000..2c2a7df
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Presentation2.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Presentation3.odp b/trunk/odfdom/src/test/resources/performance/Presentation3.odp
new file mode 100644
index 0000000..f3e3adc
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Presentation3.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Presentation4.odp b/trunk/odfdom/src/test/resources/performance/Presentation4.odp
new file mode 100644
index 0000000..f32c7af
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Presentation4.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Presentation5.odp b/trunk/odfdom/src/test/resources/performance/Presentation5.odp
new file mode 100644
index 0000000..e5b7588
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Presentation5.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Presentation7.odp b/trunk/odfdom/src/test/resources/performance/Presentation7.odp
new file mode 100644
index 0000000..9002ac8
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Presentation7.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Text1.odt b/trunk/odfdom/src/test/resources/performance/Text1.odt
new file mode 100644
index 0000000..4761107
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Text1.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Text3.odt b/trunk/odfdom/src/test/resources/performance/Text3.odt
new file mode 100644
index 0000000..d72df2d
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Text3.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Text4.odt b/trunk/odfdom/src/test/resources/performance/Text4.odt
new file mode 100644
index 0000000..15f208e
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Text4.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Text6.odt b/trunk/odfdom/src/test/resources/performance/Text6.odt
new file mode 100644
index 0000000..61bd0d6
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Text6.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/Text7.odt b/trunk/odfdom/src/test/resources/performance/Text7.odt
new file mode 100644
index 0000000..c691f63
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/Text7.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/spreadsheet1.ods b/trunk/odfdom/src/test/resources/performance/spreadsheet1.ods
new file mode 100644
index 0000000..363bb89
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/spreadsheet1.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/spreadsheet2.ods b/trunk/odfdom/src/test/resources/performance/spreadsheet2.ods
new file mode 100644
index 0000000..4876065
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/spreadsheet2.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/spreadsheet3.ods b/trunk/odfdom/src/test/resources/performance/spreadsheet3.ods
new file mode 100644
index 0000000..60e984a
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/spreadsheet3.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/spreadsheet4.ods b/trunk/odfdom/src/test/resources/performance/spreadsheet4.ods
new file mode 100644
index 0000000..a34f9ca
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/spreadsheet4.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/performance/spreadsheet5.ods b/trunk/odfdom/src/test/resources/performance/spreadsheet5.ods
new file mode 100644
index 0000000..fd4d56f
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/performance/spreadsheet5.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/presentation.odp b/trunk/odfdom/src/test/resources/presentation.odp
new file mode 100644
index 0000000..ad918a3
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/presentation.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/presentationTestTemplate.otp b/trunk/odfdom/src/test/resources/presentationTestTemplate.otp
new file mode 100644
index 0000000..23b2761
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/presentationTestTemplate.otp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/presentationWithEmbedDoc.odp b/trunk/odfdom/src/test/resources/presentationWithEmbedDoc.odp
new file mode 100644
index 0000000..de56a68
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/presentationWithEmbedDoc.odp
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/sharedautostyles.odt b/trunk/odfdom/src/test/resources/sharedautostyles.odt
new file mode 100644
index 0000000..509bf94
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/sharedautostyles.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/simple.svg b/trunk/odfdom/src/test/resources/simple.svg
new file mode 100644
index 0000000..e5b85cc
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/simple.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1">
+    <rect
+       width="200"
+       height="125.71429"
+       x="51.42857"
+       y="226.6479"
+       id="rect2985"
+       style="fill:#5d4848;fill-opacity:1;stroke:#000000;stroke-width:5.86358643;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <rect
+       width="180"
+       height="125.71429"
+       x="117.14286"
+       y="280.93362"
+       id="rect2987"
+       style="fill:#5d4848;fill-opacity:1;stroke:#000000;stroke-width:5.86358643;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+  </g>
+</svg>
diff --git a/trunk/odfdom/src/test/resources/spreadsheetTestTemplate.ots b/trunk/odfdom/src/test/resources/spreadsheetTestTemplate.ots
new file mode 100644
index 0000000..7033cc0
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/spreadsheetTestTemplate.ots
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/table.odt b/trunk/odfdom/src/test/resources/table.odt
new file mode 100644
index 0000000..5002524
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/table.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/test1.odt b/trunk/odfdom/src/test/resources/test1.odt
new file mode 100644
index 0000000..7edea86
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/test1.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/test2-content.xml b/trunk/odfdom/src/test/resources/test2-content.xml
new file mode 100644
index 0000000..64bd8f0
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/test2-content.xml
@@ -0,0 +1,165 @@
+<!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ -->
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.2">
+<office:scripts/>
+<office:font-face-decls>
+<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
+<style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/>
+<style:font-face style:font-family-generic="modern" style:font-pitch="fixed" style:name="Cumberland" svg:font-family="Cumberland"/>
+<style:font-face style:font-family-generic="roman" style:font-pitch="variable" style:name="Thorndale" svg:font-family="Thorndale"/>
+<style:font-face style:font-family-generic="swiss" style:font-pitch="variable" style:name="Albany" svg:font-family="Albany"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="MS Mincho" svg:font-family="'MS Mincho'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Tahoma" svg:font-family="Tahoma"/>
+</office:font-face-decls>
+<office:automatic-styles>
+<style:style style:family="paragraph" style:list-style-name="L1" style:name="P1" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:list-style-name="L2" style:name="P2" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:list-style-name="L2" style:name="P3" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:list-style-name="L1" style:name="P4" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:name="P5" style:parent-style-name="Text_20_body">
+<style:paragraph-properties fo:margin-left="0.2in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false"/>
+</style:style>
+<style:style style:family="paragraph" style:name="P6" style:parent-style-name="Text_20_body">
+<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false"/>
+</style:style>
+<style:style style:family="text" style:name="T1">
+<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+</style:style>
+<style:style style:family="text" style:name="T2">
+<style:text-properties fo:color="#ff3366"/>
+</style:style>
+<text:list-style style:name="L1">
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="1" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.25in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="2" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.5in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="3" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.75in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="4" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="5" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.25in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="6" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.5in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="7" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.75in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="8" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="9" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.25in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="10" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.5in"/>
+</text:list-level-style-number>
+</text:list-style>
+<text:list-style style:name="L2">
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="1" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.25in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="○" text:level="2" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.5in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="■" text:level="3" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.75in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="4" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="○" text:level="5" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.25in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="■" text:level="6" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.5in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="7" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.75in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="○" text:level="8" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="■" text:level="9" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.25in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="10" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.5in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+</text:list-style>
+</office:automatic-styles>
+<office:body>
+<office:text>
+<office:forms form:apply-design-mode="false" form:automatic-focus="false"/>
+<text:sequence-decls>
+<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+</text:sequence-decls>
+<text:p text:style-name="Standard">Hello <text:span text:style-name="T1">world</text:span>
+</text:p>
+<text:p text:style-name="Text_20_body">absatz <text:span text:style-name="Example">z</text:span>
+<text:span text:style-name="Example">
+<text:span text:style-name="T1">we</text:span>
+</text:span>
+<text:span text:style-name="Example">i</text:span>
+</text:p>
+<text:p text:style-name="P5">Absatz <text:span text:style-name="T2">drei</text:span>
+</text:p>
+<text:p text:style-name="P6">
+<text:span text:style-name="T2"/>
+</text:p>
+<text:list text:style-name="L1">
+<text:list-item>
+<text:p text:style-name="P1">num 1</text:p>
+</text:list-item>
+<text:list-item>
+<text:p text:style-name="P1">num 2</text:p>
+</text:list-item>
+</text:list>
+<text:p text:style-name="Text_20_body"/>
+<text:list text:style-name="L2">
+<text:list-item>
+<text:p text:style-name="P2">bullet1</text:p>
+</text:list-item>
+<text:list-item>
+<text:p text:style-name="P2">bullet2</text:p>
+</text:list-item>
+</text:list>
+</office:text>
+</office:body>
+</office:document-content>
diff --git a/trunk/odfdom/src/test/resources/test2-styles.xml b/trunk/odfdom/src/test/resources/test2-styles.xml
new file mode 100644
index 0000000..751445e
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/test2-styles.xml
@@ -0,0 +1,123 @@
+<!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ -->
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2">
+<office:font-face-decls>
+<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
+<style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/>
+<style:font-face style:font-family-generic="modern" style:font-pitch="fixed" style:name="Cumberland" svg:font-family="Cumberland"/>
+<style:font-face style:font-family-generic="roman" style:font-pitch="variable" style:name="Thorndale" svg:font-family="Thorndale"/>
+<style:font-face style:font-family-generic="swiss" style:font-pitch="variable" style:name="Albany" svg:font-family="Albany"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="MS Mincho" svg:font-family="'MS Mincho'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Tahoma" svg:font-family="Tahoma"/>
+</office:font-face-decls>
+<office:styles>
+<style:default-style style:family="graphic">
+<style:graphic-properties draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+<style:paragraph-properties style:font-independent-line-spacing="false" style:line-break="strict" style:text-autospace="ideograph-alpha" style:writing-mode="lr-tb">
+<style:tab-stops/>
+</style:paragraph-properties>
+<style:text-properties fo:country="US" fo:font-size="12pt" fo:language="en" style:country-asian="none" style:country-complex="none" style:font-size-asian="12pt" style:font-size-complex="12pt" style:language-asian="zxx" style:language-complex="zxx" style:letter-kerning="true" style:use-window-font-color="true"/>
+</style:default-style>
+<style:default-style style:family="paragraph">
+<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:line-break="strict" style:punctuation-wrap="hanging" style:tab-stop-distance="0.4925in" style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
+<style:text-properties fo:country="US" fo:font-size="12pt" fo:hyphenate="false" fo:hyphenation-push-char-count="2" fo:hyphenation-remain-char-count="2" fo:language="en" style:country-asian="none" style:country-complex="none" style:font-name="Thorndale" style:font-name-asian="Andale Sans UI" style:font-name-complex="Tahoma" style:font-size-asian="12pt" style:font-size-complex="12pt" style:language-asian="zxx" style:language-complex="zxx" style:letter-kerning="true" style:use-window-font-color="true"/>
+</style:default-style>
+<style:default-style style:family="table">
+<style:table-properties table:border-model="collapsing"/>
+</style:default-style>
+<style:default-style style:family="table-row">
+<style:table-row-properties fo:keep-together="auto"/>
+</style:default-style>
+<style:style style:class="text" style:family="paragraph" style:name="Standard"/>
+<style:style style:class="text" style:display-name="Text body" style:family="paragraph" style:name="Text_20_body" style:parent-style-name="Standard">
+<style:paragraph-properties fo:margin-bottom="0.0835in" fo:margin-top="0in"/>
+</style:style>
+<style:style style:class="text" style:family="paragraph" style:name="Heading" style:next-style-name="Text_20_body" style:parent-style-name="Standard">
+<style:paragraph-properties fo:keep-with-next="always" fo:margin-bottom="0.0835in" fo:margin-top="0.1665in"/>
+<style:text-properties fo:font-size="14pt" style:font-name="Albany" style:font-name-asian="MS Mincho" style:font-name-complex="Tahoma" style:font-size-asian="14pt" style:font-size-complex="14pt"/>
+</style:style>
+<style:style style:class="list" style:family="paragraph" style:name="List" style:parent-style-name="Text_20_body">
+<style:text-properties style:font-name-complex="Tahoma1"/>
+</style:style>
+<style:style style:class="extra" style:family="paragraph" style:name="Caption" style:parent-style-name="Standard">
+<style:paragraph-properties fo:margin-bottom="0.0835in" fo:margin-top="0.0835in" text:line-number="0" text:number-lines="false"/>
+<style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-name-complex="Tahoma1" style:font-size-asian="12pt" style:font-size-complex="12pt" style:font-style-asian="italic" style:font-style-complex="italic"/>
+</style:style>
+<style:style style:class="index" style:family="paragraph" style:name="Index" style:parent-style-name="Standard">
+<style:paragraph-properties text:line-number="0" text:number-lines="false"/>
+<style:text-properties style:font-name-complex="Tahoma1"/>
+</style:style>
+<style:style style:display-name="Numbering Symbols" style:family="text" style:name="Numbering_20_Symbols"/>
+<style:style style:display-name="Bullet Symbols" style:family="text" style:name="Bullet_20_Symbols">
+<style:text-properties fo:font-size="9pt" style:font-name="StarSymbol" style:font-name-asian="StarSymbol" style:font-name-complex="StarSymbol" style:font-size-asian="9pt" style:font-size-complex="9pt"/>
+</style:style>
+<style:style style:family="text" style:name="Example">
+<style:text-properties style:font-name="Cumberland" style:font-name-asian="Cumberland" style:font-name-complex="Cumberland"/>
+</style:style>
+<text:outline-style>
+<text:outline-level-style style:num-format="" text:level="1">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="2">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="3">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="4">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="5">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="6">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="7">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="8">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="9">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="10">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+</text:outline-style>
+<text:notes-configuration style:num-format="1" text:footnotes-position="page" text:note-class="footnote" text:start-numbering-at="document" text:start-value="0"/>
+<text:notes-configuration style:num-format="i" text:note-class="endnote" text:start-value="0"/>
+<text:linenumbering-configuration style:num-format="1" text:increment="5" text:number-lines="false" text:number-position="left" text:offset="0.1965in"/>
+</office:styles>
+<office:automatic-styles>
+<style:page-layout style:name="pm1">
+<style:page-layout-properties fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" fo:margin-top="0.7874in" fo:page-height="11in" fo:page-width="8.5in" style:footnote-max-height="0in" style:num-format="1" style:print-orientation="portrait" style:writing-mode="lr-tb">
+<style:footnote-sep style:adjustment="left" style:color="#000000" style:distance-after-sep="0.0398in" style:distance-before-sep="0.0398in" style:rel-width="25%" style:width="0.0071in"/>
+</style:page-layout-properties>
+<style:header-style/>
+<style:footer-style/>
+</style:page-layout>
+</office:automatic-styles>
+<office:master-styles>
+<style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+</office:master-styles>
+</office:document-styles>
diff --git a/trunk/odfdom/src/test/resources/test2.odt b/trunk/odfdom/src/test/resources/test2.odt
new file mode 100644
index 0000000..8a11c06
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/test2.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/test3.odt b/trunk/odfdom/src/test/resources/test3.odt
new file mode 100644
index 0000000..c88c871
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/test3.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testA.jpg b/trunk/odfdom/src/test/resources/testA.jpg
new file mode 100644
index 0000000..494c46d
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testA.jpg
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testB.jpg b/trunk/odfdom/src/test/resources/testB.jpg
new file mode 100644
index 0000000..f5e59c2
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testB.jpg
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testEmbeddedDoc.odt b/trunk/odfdom/src/test/resources/testEmbeddedDoc.odt
new file mode 100644
index 0000000..eba806e
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testEmbeddedDoc.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testGetCellAt.ods b/trunk/odfdom/src/test/resources/testGetCellAt.ods
new file mode 100644
index 0000000..7858cef
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testGetCellAt.ods
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testInvalidPkg1.odt b/trunk/odfdom/src/test/resources/testInvalidPkg1.odt
new file mode 100644
index 0000000..84ccd5c
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testInvalidPkg1.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testInvalidPkg2.odt b/trunk/odfdom/src/test/resources/testInvalidPkg2.odt
new file mode 100644
index 0000000..da95acc
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testInvalidPkg2.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testInvalidPkg3.odt b/trunk/odfdom/src/test/resources/testInvalidPkg3.odt
new file mode 100644
index 0000000..f43e49b
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testInvalidPkg3.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/testSaveEmbeddedDoc.odt b/trunk/odfdom/src/test/resources/testSaveEmbeddedDoc.odt
new file mode 100644
index 0000000..41dfaf1
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/testSaveEmbeddedDoc.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/test_rdfmeta.odt b/trunk/odfdom/src/test/resources/test_rdfmeta.odt
new file mode 100644
index 0000000..d3b3fcc
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/test_rdfmeta.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/text-extract.odt b/trunk/odfdom/src/test/resources/text-extract.odt
new file mode 100644
index 0000000..d2e93e6
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/text-extract.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/textTestTemplate.ott b/trunk/odfdom/src/test/resources/textTestTemplate.ott
new file mode 100644
index 0000000..a3d08f9
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/textTestTemplate.ott
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/unknown_properties.odt b/trunk/odfdom/src/test/resources/unknown_properties.odt
new file mode 100644
index 0000000..d87a3de
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/unknown_properties.odt
Binary files differ
diff --git a/trunk/odfdom/src/test/resources/xslt/concatfiles.xsl b/trunk/odfdom/src/test/resources/xslt/concatfiles.xsl
new file mode 100644
index 0000000..81b5266
--- /dev/null
+++ b/trunk/odfdom/src/test/resources/xslt/concatfiles.xsl
@@ -0,0 +1,40 @@
+<?xml version='1.0' encoding="UTF-8"?>
+ <!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="xml" encoding="UTF-8"/>
+	
+    <!-- 
+        To access contents of a office file content (e.g. meta.xml, styles.xml) 
+        this URL has to be added before the inner path.
+        
+        For instance sourceBaseURL might be:
+            file:/E:/cws/multiPkgFileTest-ODFDOM/target/test-classes/test2.odt/
+    -->
+	<xsl:param name="sourceBaseURL" select="'./'" />    
+
+    <xsl:template match="/">
+        <xsl:message>The sourceBaseURL is '<xsl:value-of select="$sourceBaseURL"/>'</xsl:message>
+        <concatedFiles>            
+            <xsl:copy-of select="document(concat($sourceBaseURL, 'styles.xml'))" />
+            <xsl:copy-of select="document(concat($sourceBaseURL, 'meta.xml'))" />        
+        </concatedFiles>
+    </xsl:template>
+</xsl:stylesheet>
+
diff --git a/trunk/pom.xml b/trunk/pom.xml
new file mode 100644
index 0000000..340a143
--- /dev/null
+++ b/trunk/pom.xml
@@ -0,0 +1,507 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.odftoolkit</groupId>
+    <artifactId>odftoolkit</artifactId>
+    <version>0.6.1-incubating</version>
+    <packaging>pom</packaging>
+
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>13</version>
+    </parent>
+   
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.velocity</groupId>
+                <artifactId>velocity</artifactId>
+                <version>1.6.4</version>
+            </dependency>
+            <dependency>
+                <groupId>xml-apis</groupId>
+                <artifactId>xml-apis</artifactId>
+                <version>1.3.04</version>
+            </dependency>
+            <dependency>
+                <groupId>xerces</groupId>
+                <artifactId>xercesImpl</artifactId>
+                <version>2.9.1</version>
+            </dependency>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.8.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jena</groupId>
+                <artifactId>jena-arq</artifactId>
+                <version>2.9.4</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jena</groupId>
+                <artifactId>jena-core</artifactId>
+                <version>2.7.4</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jena</groupId>
+                <artifactId>jena-core</artifactId>
+                <classifier>tests</classifier>
+                <version>2.7.4</version>
+            </dependency>
+            <dependency>
+                <groupId>net.rootdev</groupId>
+                <artifactId>java-rdfa</artifactId>
+                <version>0.4.2</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-validator</groupId>
+                <artifactId>commons-validator</artifactId>
+                <version>1.4.0</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-fileupload</groupId>
+                <artifactId>commons-fileupload</artifactId>
+                <version>1.2.2</version>
+            </dependency>
+            <dependency>
+                <groupId>net.java.dev.msv</groupId>
+                <artifactId>msv-core</artifactId>
+                <version>2011.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.iso_relax.verifier.jaxp.validation</groupId>
+                <artifactId>isorelax-jaxp-bridge</artifactId>
+                <version>1.0</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.ant</groupId>
+                <artifactId>ant</artifactId>
+                <version>1.8.2</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+ 
+    <modules>
+        <module>taglets</module>
+        <module>generator</module>
+        <module>xslt-runner</module>
+        <module>xslt-runner-task</module>
+        <module>odfdom</module>
+        <module>validator</module>
+        <module>simple</module>
+    </modules>
+
+    <name>Apache ODF Toolkit</name>
+    <description>
+        The Apache ODF Toolkit is a set of Java modules that allow 
+        programmatic creation, scanning and manipulation of Open Document Format 
+        (ISO/IEC 26300 == ODF) documents. Unlike other approaches which rely on 
+        runtime manipulation of heavy-weight editors via an automation 
+        interface, the ODF Toolkit is lightweight and ideal for server use. 
+    </description>
+    <url>http://incubator.apache.org/odftoolkit/</url>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1</developerConnection>
+        <url>http://svn.apache.org/viewvc/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1</url>
+    </scm>
+
+    <issueManagement>
+        <system>jira</system>
+        <url>https://issues.apache.org/jira/browse/ODFTOOLKIT</url>
+    </issueManagement>
+
+    <ciManagement>
+        <system>jenkins</system>
+        <url>https://builds.apache.org</url>
+    </ciManagement>
+
+    <distributionManagement>
+        <!-- not used for deployment but only for site:stage goal -->
+        <site>
+            <id>incubator.apache.org/odftoolkit/</id>
+            <url>http://incubator.apache.org/odftoolkit/reports/${project.version}/</url>
+        </site>
+    </distributionManagement>
+
+    <developers>
+        <developer>
+            <id>svanteschubert</id>
+            <name>Svante</name>
+            <email>svanteschubert AT apache.org</email>
+            <organization>Individual</organization>
+            <roles>
+                <role>ODFDOM working group chair</role>
+                <role>architect</role>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>devinhan</id>
+            <name>Han Biao</name>
+            <email>devinhan AT apache.org</email>
+            <organization>IBM</organization>
+            <organizationUrl>http://www.ibm.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+8</timezone>
+        </developer>
+        <developer>
+            <id>daisyguo</id>
+            <name>Ying Chun Guo</name>
+            <email>daisyguo AT apache.org</email>
+            <organization>IBM</organization>
+            <organizationUrl>http://www.ibm.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+8</timezone>
+        </developer>
+        <developer>
+            <id>weihuaWang</id>
+            <name>Wei Hua Wang</name>
+            <organization>IBM</organization>
+            <organizationUrl>http://www.ibm.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+8</timezone>
+        </developer>
+        <developer>
+            <id>FrankMeies</id>
+            <name>Frank</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>lars_behrmann</id>
+            <name>Lars</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>steffeng</id>
+            <name>Steffen</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>hans-peter</id>
+            <name>Hans-Peter</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>bei</id>
+            <name>Bernd</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>mst</id>
+            <name>Michael</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>clippka</id>
+            <name>Christian</name>
+            <organization>Oracle Inc.</organization>
+            <organizationUrl>http://www.oracle.com/</organizationUrl>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+        <developer>
+            <id>fhopf</id>
+            <name>Florian Hopf</name>
+            <email>fhopf AT apache.org</email>
+            <url>http://blog.florian-hopf.de</url>
+            <roles>
+                <role>developer</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+    </developers>
+
+    <mailingLists>
+        <mailingList>
+            <name>User List</name>
+            <post>odf-users@incubator.apache.org</post>
+            <subscribe>odf-users-subscribe@incubator.apache.org</subscribe>
+            <unsubscribe>odf-users-unsubscribe@incubator.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/incubator-odf-users/</archive>
+        </mailingList>
+        <mailingList>
+            <name>Developer List</name>
+            <post>odf-dev@incubator.apache.org</post>
+            <subscribe>odf-dev-subscribe@incubator.apache.org</subscribe>
+            <unsubscribe>odf-dev-unsubscribe@incubator.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/incubator-odf-dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>Commits</name>
+            <subscribe>odf-commits-subscribe@incubator.apache.org</subscribe>
+            <unsubscribe>odf-commmits-unsubscribe@incubator.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/incubator-odf-commits/</archive>
+        </mailingList>
+    </mailingLists>
+    
+
+    <profiles>
+        <profile>
+            <id>pedantic</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.rat</groupId>
+                        <artifactId>apache-rat-plugin</artifactId>
+                        <configuration>
+                            <excludes>
+                                <exclude>CHANGES.txt</exclude>
+								<exclude>.gitignore</exclude>
+                                <exclude>DEPENDENCIES</exclude>
+                            </excludes>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>release-distribution</id>
+            <properties>
+                <username>${user.name}</username>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <inherited>false</inherited>
+                        <executions>
+                            <execution>
+                                <id>src</id>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <phase>package</phase>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>assemble/src.xml</descriptor>
+                                    </descriptors>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>doc</id>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <phase>package</phase>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>assemble/doc.xml</descriptor>
+                                    </descriptors>
+                                </configuration>
+                            </execution>            
+                            <execution>
+                                <id>bin</id>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <phase>package</phase>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>assemble/bin.xml</descriptor>
+                                    </descriptors>
+                                </configuration>
+                            </execution>                            
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <inherited>false</inherited>
+                        <executions>
+                            <execution>
+                                <id>package</id>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <phase>prepare-package</phase>
+                                <configuration>
+                                    <tasks>
+                                        <mkdir dir="${basedir}/target/${project.version}-bin" />
+                                        <copy todir="${basedir}/target/${project.version}-bin" flatten="true">
+                                              <fileset dir="${basedir}">
+                                                <include name="*.txt" />
+                                                <include name="KEYS" />      
+                                                <include name="odfdom/target/*.jar" />
+                                                <include name="simple/target/*.jar" />
+                                                <include name="validator/target/*.?ar" />
+                                                <include name="xslt-runner/target/*.jar" />
+                                                <include name="xslt-runner-task/target/*.jar" />
+                                                <exclude name="**/target/**-javadoc.jar" />
+                                                <exclude name="**/target/**-sources.jar" />
+                                                <exclude name="**/target/**-jar-with-dependencies.jar" />
+                                              </fileset>
+                                        </copy>
+                                        <mkdir dir="${basedir}/target/${project.version}-docs" />
+                                        <copy todir="${basedir}/target/${project.version}-docs" flatten="true">  
+                                            <fileset dir="${basedir}">   
+                                                <include name="*.txt" />
+                                                <include name="KEYS" />                                   
+                                                <include name="**/target/*-javadoc.jar" />
+                                            </fileset>
+                                        </copy>
+                                        </tasks>                                 
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>checksum</id>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <phase>install</phase>
+                                <configuration>
+                                    <tasks>                                       
+                                        <checksum algorithm="MD5" fileext=".md5">
+                                              <fileset dir="${basedir}/target">
+                                                <include name="*.zip" />
+                                                <include name="*.tar.gz" />
+                                                <include name="*.tar.bz2" />
+                                              </fileset>
+                                        </checksum>
+                                        <checksum algorithm="SHA1" fileext=".sha">
+                                              <fileset dir="${basedir}/target">
+                                                <include name="*.zip" />
+                                                <include name="*.tar.gz" />
+                                                <include name="*.tar.bz2" />
+                                              </fileset>
+                                        </checksum>
+                                        <checksum file="target/odftoolkit-${project.version}-src.zip" algorithm="SHA1" property="checksum" />                                
+                                        <copy todir="${basedir}/target/release/${project.version}/">  
+                                            <fileset dir="${basedir}/target">   
+                                                <include name="*-source-release.*" />
+                                            </fileset>
+                                        </copy>
+                                        <copy todir="${basedir}/target/release/${project.version}/binaries">  
+                                            <fileset dir="${basedir}/target">   
+                                                <include name="*-bin.*" />
+                                            </fileset>
+                                        </copy>
+                                        <copy todir="${basedir}/target/release/${project.version}/docs">  
+                                            <fileset dir="${basedir}/target">   
+                                                <include name="*-doc.*" />
+                                            </fileset>
+                                        </copy>
+                                        <echo file="${basedir}/target/vote.txt">
+                                            From: ${username}@apache.org
+                                            To: odf-dev@incubator.apache.org
+                                            Subject: [VOTE] Release Apache ODF Toolkit ${project.version}
+
+                                            A candidate for the ODF Toolkit ${project.version} release is available    at:
+
+                                            http://people.apache.org/~${username}/odftoolkit-release/odftoolkit-${project.version}/
+                                            
+                                            The release candidate is a zip archive of the sources in:
+
+                                            https://svn.apache.org/repos/asf/incubator/odf/tags/${project.version}/
+
+                                            The SHA1 checksum of the archive is ${checksum}.
+
+                                            Please vote on releasing this package as Apache ODF Toolkit ${project.version}.
+                                            The vote is open for the next 72 hours and passes if a majority
+                                            of at least three +1 ODF Toolkit PMC votes are cast.
+
+                                            [ ] +1 Release this package as Apache ODF Toolkit ${project.version}
+                                            [ ] -1 Do not release this package because...${line.separator}
+                                        </echo>
+                                        <echo />
+                                        <echo>
+                                            The release candidate has been prepared in:    ${basedir}/target/${project.version}
+
+                                            Please deploy it to people.apache.org like this:
+
+                                            scp -r ${basedir}/target/${project.version} people.apache.org:public_html/odftoolkit/
+
+											A release vote template has been generated for you:    file://${basedir}/target/vote.txt
+										</echo>
+										<echo />
+									</tasks>                                 
+								</configuration>
+							</execution>
+						</executions>
+						<dependencies>
+							<dependency>
+								<groupId>org.apache.ant</groupId>
+								<artifactId>ant-nodeps</artifactId>
+								<version>1.8.1</version>
+							</dependency>
+						</dependencies>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+</project>
+
diff --git a/trunk/simple/LICENSE.txt b/trunk/simple/LICENSE.txt
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/trunk/simple/LICENSE.txt
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/trunk/simple/README.txt b/trunk/simple/README.txt
new file mode 100644
index 0000000..0e919af
--- /dev/null
+++ b/trunk/simple/README.txt
@@ -0,0 +1,57 @@
+*************************************************************
+* Simple Java API for ODF                                   *
+*                                                           *
+*************************************************************
+*                                                           *
+* Version: @VERSION@                                              *
+* Release Date: @DATE@                         *
+*                                                           *
+*************************************************************
+
+
+About Simple
+-------------
+
+The Simple Java API for ODF is an easy-to-use, high-level Java API 
+for creating, modifying and extracting data from ODF 1.2 documents.
+It is written in pure Java and does not require that you install any
+document editor on your system. The Simple Java API for ODF is a high
+level abstraction of the lower-level ODFDOM API
+
+
+Documentation
+--------------
+
+The latest release notes are available online at the project's 
+Wiki page:
+    http://odftoolkit.org/projects/simple/pages/Home
+
+In general, the Wiki page is a great place to start when looking 
+for online information about the simple project:
+    http://odftoolkit.org/projects/simple/pages/Home
+
+The website is another place that you can get online documentations, 
+such as cookbook, javadoc and demo codes:
+    http://simple.odftoolkit.org/
+
+API documentation (Javadoc) can be downloaded from the project's 
+download area:
+    http://odftoolkit.org/projects/simple/downloads
+
+The Javadoc can also be viewed online:
+    http://simple.odftoolkit.org/javadoc/index.html
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
+
+Installation
+-------------
+
+Just put the file simple.jar in your classpath. You will
+need ODFDOM0.9-SNAPSHOT and Apache Xerces-J 2.9.1 as well. Get them from
+    http://odftoolkit.org/projects/simple/downloads/directory/tools
+    http://xerces.apache.org/mirrors.cgi
diff --git a/trunk/simple/pom.xml b/trunk/simple/pom.xml
new file mode 100644
index 0000000..14e9ad0
--- /dev/null
+++ b/trunk/simple/pom.xml
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+      <groupId>org.apache.odftoolkit</groupId>
+      <artifactId>odftoolkit</artifactId>
+      <version>0.6.1-incubating</version>
+    </parent>
+
+    <artifactId>simple-odf</artifactId>
+    <version>0.8.1-incubating</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+           <groupId>${project.groupId}</groupId>
+           <artifactId>odfdom-java</artifactId>
+           <version>0.8.10-incubating</version>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss</maven.build.timestamp.format>
+    </properties>
+    <!-- Build Settings -->
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <meminitial>512m</meminitial>
+                    <maxmem>1024m</maxmem>
+                    <showDeprecation>true</showDeprecation>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.3.1</version>
+                <configuration>
+                    <archive>
+                        <index>true</index>
+                        <manifest>
+                            <mainClass>org.odftoolkit.simple.JarManifest</mainClass>
+                        </manifest>
+                        <manifestEntries>
+                            <version>${project.version}</version>
+                        </manifestEntries>
+                        <manifestSections>
+                            <manifestSection>
+                                <name>SIMPLE-ODF</name>
+                                <manifestEntries>
+                                    <SIMPLE-ODF-Name>Simple Java API for ODF(Simple ODF)</SIMPLE-ODF-Name>
+                                    <SIMPLE-ODF-Version>${project.version}</SIMPLE-ODF-Version>
+                                    <SIMPLE-ODF-Website>http://incubator.apache.org/odftoolkit/simple/index.html</SIMPLE-ODF-Website>
+                                    <SIMPLE-ODF-Built-By>${user.name}</SIMPLE-ODF-Built-By>
+                                    <SIMPLE-ODF-Built-Date>${build.timestamp}</SIMPLE-ODF-Built-Date>
+                                    <SIMPLE-ODF-Supported-ODF-Version>1.2</SIMPLE-ODF-Supported-ODF-Version>
+                                </manifestEntries>
+                            </manifestSection>
+                        </manifestSections>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-release-plugin</artifactId>
+                <version>2.1</version>
+                <configuration>
+                    <!-- Workaround for http://jira.codehaus.org/browse/MGPG-9 -->
+                    <mavenExecutorId>forked-path</mavenExecutorId>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.7</version>
+                <configuration>
+                    <doctitle>Simple Java API for ODF(Simple ODF)</doctitle>
+                    <minmemory>512m</minmemory>
+                    <maxmemory>1024m</maxmemory>
+                    <links>
+                        <link>http://download.oracle.com/javase/6/docs/api/</link>
+                        <link>http://xerces.apache.org/xerces-j/apiDocs/</link>
+                        <link>http://odfdom.odftoolkit.org/0.8.7/odfdom/apidocs/</link>
+                    </links>
+                    <splitindex>true</splitindex>
+                    <windowtitle>Simple ODF v${project.version} - http://odftoolkit</windowtitle>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.6</version>
+                <configuration>
+                    <systemPropertyVariables>
+                        <simple.version>${project.version}</simple.version>
+                        <simple.timestamp>${build.timestamp}</simple.timestamp>
+                    </systemPropertyVariables>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1.2</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>single</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <copy file="./README.txt" tofile="./target/README.txt" overwrite="yes">
+                                    <filterset>
+                                        <filter token="VERSION" value="${project.version}" />
+                                        <filter token="DATE" value="${build.timestamp}" />
+                                    </filterset>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>src/test/resources/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.9</version>
+            </extension>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-webdav-jackrabbit</artifactId>
+                <version>1.0-beta-7</version>
+            </extension>
+        </extensions>
+    </build>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.7</version>
+                <configuration>
+                    <doctitle>Simple Java API for ODF(Simple ODF)</doctitle>
+                    <minmemory>512m</minmemory>
+                    <maxmemory>1024m</maxmemory>
+                    <links>
+                        <link>http://download.oracle.com/javase/6/docs/api/</link>
+                        <link>http://xerces.apache.org/xerces-j/apiDocs/</link>
+                    </links>
+                    <splitindex>true</splitindex>
+                    <windowtitle>Simple ODF API v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
+                </configuration>
+            </plugin>
+            <!-- Code Coverage Testing generated by Cobertura -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <instrumentation>
+                        <excludes>
+                            <exclude>org/odftoolkit/**/*Test.class</exclude>
+                        </excludes>
+                    </instrumentation>
+                </configuration>
+            </plugin>
+            <!-- Reporting integration test results -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.5</version>
+                <reportSets>
+                    <reportSet>
+                        <id>integration-tests</id>
+                        <reports>
+                            <report>report-only</report>
+                        </reports>
+                        <configuration>
+                            <outputName>failsafe-report</outputName>
+                        </configuration>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+        </plugins>
+    </reporting>
+    <!-- More Project Information -->
+    <name>Simple Java API for ODF (Simple ODF)</name>
+    <description>A simple API for easy manipulation of ODF documents.</description>
+    <url>http://incubator.apache.org/odftoolkit/simple/index.html</url>
+    <inceptionYear>2010</inceptionYear>
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/simple</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/simple</developerConnection>
+        <url>http://svn.apache.org/viewvc/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/simple</url>
+    </scm>
+    <profiles>
+        <profile>
+            <id>release</id>
+            <activation>
+                <property>
+                    <name>release</name>
+                    <value />
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <!--
+                        We want to deploy the artifact to a staging location for perusal
+                    -->
+                    <plugin>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <configuration>
+                            <descriptorRefs>
+                                <descriptorRef>jar-with-dependencies</descriptorRef>
+                            </descriptorRefs>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>single</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <inherited>true</inherited>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <configuration>
+                            <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>
+                            <updateReleaseInfo>true</updateReleaseInfo>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>attach-sources</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <configuration>
+                            <encoding>${project.build.sourceEncoding}</encoding>
+                            <attach>true</attach>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>attach-javadocs</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>integration-test</id>
+            <activation>
+                <property>
+                    <name>integration-test</name>
+                </property>
+            </activation>
+            <build>
+                <defaultGoal>verify</defaultGoal>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <version>2.5</version>
+                        <executions>
+                            <execution>
+                                <id>failsafe-it</id>
+                                <phase>integration-test</phase>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                                <configuration>
+                                    <classesDirectory>${basedir}/target/simple-odf.jar</classesDirectory>
+                                    <systemPropertyVariables>
+                                        <testresourcefolder>performance</testresourcefolder>
+                                        <executetimes>1</executetimes>
+                                        <testflag>test</testflag>
+                                    </systemPropertyVariables>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <!-- Explizit version required for fix on systemPropertyVariables -->
+                        <version>2.5</version>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <configuration>
+                            <source>1.5</source>
+                            <target>1.5</target>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <!--
+            Profile for deploying to the Sonatype repository, which requires GPG
+            signatures see:
+            https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
+            https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
+            https://issues.sonatype.org/browse/OSSRH-1321
+        -->
+        <profile>
+            <id>release-javadoc</id>
+            <activation>
+                <property>
+                    <name>deploy</name>
+                    <value>true</value>
+                </property>
+            </activation>
+            <build>
+                <defaultGoal>site</defaultGoal>
+            </build>
+            <properties>
+                <project.reporting.outputDirectory>target/site/apidocs</project.reporting.outputDirectory>
+            </properties>
+            <!-- <distributionManagement>
+                <site>
+                    <id>simple-odf-website</id>
+                    <name>Simple Java API for ODF(Simple ODF)</name>
+                    <url>dav:https://odftoolkit.org/website/simple/${project.version}/simple</url>
+                </site>
+            </distributionManagement> -->
+        </profile>
+    </profiles>
+</project>
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/ChartDocument.java b/trunk/simple/src/main/java/org/odftoolkit/simple/ChartDocument.java
new file mode 100644
index 0000000..9056055
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/ChartDocument.java
@@ -0,0 +1,215 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeChartElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+
+/**
+ * This class represents an empty ODF document , which will be in general
+ * embedded in an existing ODF (Spreadsheet) document.
+ */
+public class ChartDocument extends Document {
+
+	private static final String EMPTY_CHART_DOCUMENT_PATH = "/OdfChartDocument.odc";
+	static final Resource EMPTY_CHART_DOCUMENT_RESOURCE = new Resource(EMPTY_CHART_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of ChartDocument documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		CHART(Document.OdfMediaType.CHART), CHART_TEMPLATE(Document.OdfMediaType.CHART_TEMPLATE);
+		private final Document.OdfMediaType mMediaType;
+
+		OdfMediaType(Document.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 * 
+		 * @param mediaType
+		 *            string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and
+		 *         the suffix
+		 */
+		public static Document.OdfMediaType getOdfMediaType(String mediaType) {
+			return Document.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty charts document. * <br/>
+	 * <em>Note: ODF Chart documents are (with OOo 3.0) only used as embedded document and not used stand-alone.</em>
+	 * 
+	 * @return ODF charts document based on a default template
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static ChartDocument newChartDocument() throws Exception {
+		return (ChartDocument) Document.loadTemplate(EMPTY_CHART_DOCUMENT_RESOURCE, Document.OdfMediaType.CHART);
+	}
+
+	/**
+	 * Creates an empty charts template. * <br/>
+	 * <em>Note: ODF Chart documents are (with OOo 3.0) only used as embedded document and not used stand-alone.</em>
+	 * 
+	 * @return ODF charts template based on a default template
+	 * @throws java.lang.Exception
+	 *             - if the template could not be created
+	 */
+	public static ChartDocument newChartTemplateDocument() throws Exception {
+		ChartDocument doc = (ChartDocument) Document.loadTemplate(EMPTY_CHART_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.CHART_TEMPLATE);
+		doc.changeMode(OdfMediaType.CHART_TEMPLATE);
+		return doc;
+	}
+
+	/**
+	 * Creates an ChartDocument from the OpenDocument provided by a resource
+	 * Stream.
+	 * 
+	 * <p>
+	 * Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by ChartDocument, the InputStream is cached. This
+	 * usually takes more time compared to the other createInternalDocument
+	 * methods. An advantage of caching is that there are no problems
+	 * overwriting an input file.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF chart document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param inputStream
+	 *            - the InputStream of the ODF chart document.
+	 * @return the chart document created from the given InputStream
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static ChartDocument loadDocument(InputStream inputStream) throws Exception {
+		return (ChartDocument) Document.loadDocument(inputStream);
+	}
+
+	/**
+	 * Loads an ChartDocument from the provided path.
+	 * 
+	 * <p>
+	 * ChartDocument relies on the file being available for read access over the
+	 * whole lifecycle of ChartDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF chart document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param documentPath
+	 *            - the path from where the document can be loaded
+	 * @return the chart document from the given path or NULL if the media type
+	 *         is not supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static ChartDocument loadDocument(String documentPath) throws Exception {
+		return (ChartDocument) Document.loadDocument(documentPath);
+	}
+
+	/**
+	 * Creates an ChartDocument from the OpenDocument provided by a File.
+	 * 
+	 * <p>
+	 * ChartDocument relies on the file being available for read access over the
+	 * whole lifecycle of ChartDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF chart document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param file
+	 *            - a file representing the ODF chart document.
+	 * @return the chart document created from the given File
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static ChartDocument loadDocument(File file) throws Exception {
+		return (ChartDocument) Document.loadDocument(file);
+	}
+
+	/**
+	 * To avoid data duplication a new document is only created, if not already
+	 * opened. A document is cached by this constructor using the internalpath
+	 * as key.
+	 */
+	protected ChartDocument(OdfPackage pkg, String internalPath, ChartDocument.OdfMediaType odfMediaType) {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Get the content root of a chart document.
+	 * 
+	 * @return content root, representing the office:chart tag
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeChartElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeChartElement.class);
+	}
+
+	/**
+	 * Changes the document to the given mediatype. This method can only be used
+	 * to convert a document to a related mediatype, e.g. template.
+	 * 
+	 * @param mediaType
+	 *            the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+
+	public OdfElement getTableContainerElement() {
+		throw new UnsupportedOperationException("Chart document is not supported to hold table now.");
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/Component.java b/trunk/simple/src/main/java/org/odftoolkit/simple/Component.java
new file mode 100644
index 0000000..79014fe
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/Component.java
@@ -0,0 +1,100 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+
+package org.odftoolkit.simple;
+
+import java.util.IdentityHashMap;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+
+/**
+ * This class is the parent of classes that present all kinds of document
+ * structures.
+ * 
+ * @since 0.5
+ */
+public abstract class Component {
+
+	/**
+	 * Return the instance of OdfElement which presents this structure.
+	 * 
+	 * @return the instance of OdfElement
+	 */
+	public abstract OdfElement getOdfElement();
+
+	/**
+	 * Register component to the map repository
+	 * 
+	 * @param component
+	 *            the component to be registered.
+	 * @param element
+	 *            the instance of OdfElement which presents this component.
+	 * @see Document#getComponentMap()
+	 */
+	protected static void registerComponent(Component component, OdfElement element) {
+		Document ownerDoc = component.getOwnerDocument();
+		synchronized (ownerDoc) {
+			IdentityHashMap<OdfElement, Component> repository = ownerDoc.getComponentMap();
+			repository.put(element, component);
+		}
+	}
+	
+	/**
+	 * Unregister component from the map repository
+	 * 
+	 * @param element
+	 *            the instance of OdfElement which presents this component.
+	 * 
+	 * @see Document#getComponentMap()
+	 * @since 0.6.5
+	 */
+	protected static void unregisterComponent(OdfElement element) {
+		Document ownerDoc = (Document) ((OdfFileDom) element.getOwnerDocument()).getDocument();
+		synchronized (ownerDoc) {
+			IdentityHashMap<OdfElement, Component> repository = ownerDoc.getComponentMap();
+			repository.remove(element);
+		}
+	}
+
+	/**
+	 * Get the component instance by the element instance. Return null if there
+	 * is no such element registered.
+	 * 
+	 * @param element
+	 *            the instance of OdfElement which presents this component.
+	 * @return the component instance
+	 */
+	protected static Component getComponentByElement(OdfElement element) {
+		Document doc = (Document) ((OdfFileDom) element.getOwnerDocument()).getDocument();
+		IdentityHashMap<OdfElement, Component> repository = doc.getComponentMap();
+		return repository.get(element);
+	}
+
+	/**
+	 * Get the owner document of this component
+	 * 
+	 * @return - the owner document
+	 */
+	public Document getOwnerDocument() {
+		return (Document) ((OdfFileDom) getOdfElement().getOwnerDocument()).getDocument();
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/Document.java b/trunk/simple/src/main/java/org/odftoolkit/simple/Document.java
new file mode 100644
index 0000000..29151d0
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/Document.java
@@ -0,0 +1,2677 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+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;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeBodyElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMasterStylesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFontFaceElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfTextProperties;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfPackageDocument;
+import org.odftoolkit.odfdom.pkg.OdfValidationException;
+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.text.Paragraph;
+import org.odftoolkit.simple.text.Section;
+import org.w3c.dom.Attr;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+
+/**
+ * This abstract class is representing one of the possible ODF documents
+ */
+public abstract class Document extends OdfSchemaDocument implements TableContainer {
+	// Static parts of file references
+	private static final String SLASH = "/";
+	private OdfMediaType mMediaType;
+	private Meta mOfficeMeta;
+	private long documentOpeningTime;
+	private TableContainerImpl tableContainerImpl;
+	private static final Pattern CONTROL_CHAR_PATTERN = Pattern.compile("\\p{Cntrl}");
+	private static final String EMPTY_STRING = "";
+
+	private IdentityHashMap<OdfElement, Component> mComponentRepository = new IdentityHashMap<OdfElement, Component>();
+
+	// FIXME: This field is only used in method copyResourcesFrom to improve
+	// copy performance, should not be used in any other way.
+	// methods loadDocument(String documentPath) and loadDocument(File file)
+	// will initialize it.
+	// This field and its methods should be removed after ODFDOM supplies batch
+	// copy.
+	private File mFile = null;
+
+	// if the copy foreign slide for several times,
+	// the same style might be copied for several times with the different name
+	// so use styleRenameMap to keep track the renamed style so we can reuse the
+	// style,
+	// rather than new several styles which only have the different style names.
+	// while if the style elements really have the same style name but with
+	// different content
+	// such as that these style elements are from different document
+	// so the value for each key should be a list
+	private HashMap<String, List<String>> styleRenameMap = new HashMap<String, List<String>>();
+	// the map is used to record if the renamed style name is appended to the
+	// current dom
+	private HashMap<String, Boolean> styleAppendMap = new HashMap<String, Boolean>();
+
+	// the object rename map for image.
+	// can not easily recognize if the embedded document are the same.
+	// private HashMap<String, String> objectRenameMap = new HashMap<String,
+	// String>();
+
+	// Using static factory instead of constructor
+	protected Document(OdfPackage pkg, String internalPath, OdfMediaType mediaType) {
+		super(pkg, internalPath, mediaType.getMediaTypeString());
+		mMediaType = mediaType;
+		// set document opening time.
+		documentOpeningTime = System.currentTimeMillis();
+	}
+
+	/**
+	 * This enum contains all possible media types of Document documents.
+	 */
+	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"), 
+		TEXT_WEB("application/vnd.oasis.opendocument.text-web", "oth");
+
+		private final String mMediaType;
+		private final String mSuffix;
+
+		OdfMediaType(String mediaType, String suffix) {
+			this.mMediaType = mediaType;
+			this.mSuffix = suffix;
+		}
+
+		/**
+		 * @return the mediatype String of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType;
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mSuffix;
+		}
+
+		/**
+		 * 
+		 * @param mediaType
+		 *            string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and
+		 *         the suffix
+		 */
+		public static OdfMediaType getOdfMediaType(String mediaType) {
+			OdfMediaType odfMediaType = null;
+			if (mediaType != null) {
+				String mediaTypeShort = mediaType.substring(mediaType.lastIndexOf(".") + 1, mediaType.length());
+				mediaTypeShort = mediaTypeShort.replace('-', '_').toUpperCase();
+				try {
+					odfMediaType = OdfMediaType.valueOf(mediaTypeShort);
+				} catch (IllegalArgumentException e) {
+					throw new IllegalArgumentException("Given mediaType '" + mediaType + "' is either not yet supported or not an ODF mediatype!");
+				}
+			}
+			return odfMediaType;
+		}
+	}
+
+	/**
+	 * 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
+	 *            the media type of the root document
+	 * @return the Document document or NULL if the media type is not supported
+	 *         by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	protected static Document loadTemplate(Resource res, OdfMediaType odfMediaType) throws Exception {
+		InputStream in = res.createInputStream();
+		OdfPackage pkg = null;
+		try {
+			pkg = OdfPackage.loadPackage(in);
+		} finally {
+			in.close();
+		}
+		Document newDocument = newDocument(pkg, ROOT_DOCUMENT_PATH, odfMediaType);
+		// add initial meta data to new document.
+		initializeMetaData(newDocument);
+		return newDocument;
+	}
+
+	/**
+	 * 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
+	 *            - file password.
+	 * @return the Document from the given path or NULL if the media type is not
+	 *         supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 * @since 0.8
+	 */
+	public static Document loadDocument(String documentPath, String password) throws Exception {
+		File file = new File(documentPath);
+		return loadDocument(file, password);
+	}
+
+	/**
+	 * 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
+	 *         supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static Document loadDocument(String documentPath) throws Exception {
+		File file = new File(documentPath);
+		return loadDocument(file);
+	}
+
+	/**
+	 * 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
+	 * takes more time compared to the other createInternalDocument methods. An
+	 * 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
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static Document loadDocument(InputStream inStream) throws Exception {
+		return loadDocument(OdfPackage.loadPackage(inStream));
+	}
+
+	/**
+	 * 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
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static Document loadDocument(File file) throws Exception {
+		Document doc = loadDocument(OdfPackage.loadPackage(file));
+		doc.setFile(file);
+		return doc;
+	}
+
+	/**
+	 * 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
+	 *            - file password.
+	 * @return the document created from the given File
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 * @since 0.7
+	 */
+	public static Document loadDocument(File file, String password) throws Exception {
+		Document doc = loadDocument(OdfPackage.loadPackage(file, password, null));
+		doc.setFile(file);
+		return doc;
+	}
+
+	/**
+	 * 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
+	 * @throws java.lang.Exception
+	 *             - if the ODF document could not be created.
+	 */
+	public static Document loadDocument(OdfPackage odfPackage) throws Exception {
+		return loadDocument(odfPackage, ROOT_DOCUMENT_PATH);
+	}
+
+	/**
+	 * Creates a Document from the Document provided by an ODF package.
+	 * 
+	 * @param odfPackage
+	 *            - the ODF package containing the ODF document.
+	 * @param internalPath
+	 *            - the path to the ODF document relative to the package root.
+	 * @return the root document of the given OdfPackage
+	 * @throws java.lang.Exception
+	 *             - if the ODF document could not be created.
+	 */
+	public static Document loadDocument(OdfPackage odfPackage, String internalPath) throws Exception {
+		String documentMediaType = odfPackage.getMediaTypeString(internalPath);
+		if (documentMediaType == null) {
+			throw new IllegalArgumentException("Given internalPath '" + internalPath + "' is an illegal or inappropriate argument.");
+		}
+		OdfMediaType odfMediaType = OdfMediaType.getOdfMediaType(documentMediaType);
+		if (odfMediaType == null) {
+			ErrorHandler errorHandler = odfPackage.getErrorHandler();
+			Matcher matcherCTRL = CONTROL_CHAR_PATTERN.matcher(documentMediaType);
+			if (matcherCTRL.find()) {
+				documentMediaType = matcherCTRL.replaceAll(EMPTY_STRING);
+			}
+			OdfValidationException ve = new OdfValidationException(OdfSchemaConstraint.DOCUMENT_WITHOUT_ODF_MIMETYPE, internalPath, documentMediaType);
+			if (errorHandler != null) {
+				errorHandler.fatalError(ve);
+			}
+			throw ve;
+		}
+		return newDocument(odfPackage, internalPath, odfMediaType);
+	}
+
+	/**
+	 * Sets password of this document.
+	 * 
+	 * @param password
+	 *            the password of this document.
+	 * @since 0.8
+	 */
+	public void setPassword(String password) {
+		getPackage().setPassword(password);
+	}
+
+	// return null if the media type can not be recognized.
+	private static Document loadDocumentFromTemplate(OdfMediaType odfMediaType) throws Exception {
+
+		switch (odfMediaType) {
+		case TEXT:
+		case TEXT_TEMPLATE:
+		case TEXT_MASTER:
+		case TEXT_WEB:
+			// documentTemplate = TextDocument.EMPTY_TEXT_DOCUMENT_RESOURCE;
+			TextDocument document = TextDocument.newTextDocument();
+			document.changeMode(TextDocument.OdfMediaType.TEXT_WEB);
+			return document;
+
+		case SPREADSHEET:
+			SpreadsheetDocument spreadsheet = SpreadsheetDocument.newSpreadsheetDocument();
+			spreadsheet.changeMode(SpreadsheetDocument.OdfMediaType.SPREADSHEET);
+			return spreadsheet;
+
+		case SPREADSHEET_TEMPLATE:
+			SpreadsheetDocument spreadsheettemplate = SpreadsheetDocument.newSpreadsheetDocument();
+			spreadsheettemplate.changeMode(SpreadsheetDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+			return spreadsheettemplate;
+
+		case PRESENTATION:
+			PresentationDocument presentation = PresentationDocument.newPresentationDocument();
+			presentation.changeMode(PresentationDocument.OdfMediaType.PRESENTATION);
+			return presentation;
+
+		case PRESENTATION_TEMPLATE:
+			PresentationDocument presentationtemplate = PresentationDocument.newPresentationDocument();
+			presentationtemplate.changeMode(PresentationDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+			return presentationtemplate;
+
+		case GRAPHICS:
+			GraphicsDocument graphics = GraphicsDocument.newGraphicsDocument();
+			graphics.changeMode(GraphicsDocument.OdfMediaType.GRAPHICS);
+			return graphics;
+
+		case GRAPHICS_TEMPLATE:
+			GraphicsDocument graphicstemplate = GraphicsDocument.newGraphicsDocument();
+			graphicstemplate.changeMode(GraphicsDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+			return graphicstemplate;
+
+		case CHART:
+			ChartDocument chart = ChartDocument.newChartDocument();
+			chart.changeMode(ChartDocument.OdfMediaType.CHART);
+			return chart;
+
+		case CHART_TEMPLATE:
+			ChartDocument charttemplate = ChartDocument.newChartDocument();
+			charttemplate.changeMode(ChartDocument.OdfMediaType.CHART_TEMPLATE);
+			return charttemplate;
+
+			// case IMAGE:
+			// case IMAGE_TEMPLATE:
+
+		default:
+			throw new IllegalArgumentException("Given mediaType '" + odfMediaType.toString() + "' is either not yet supported or not an ODF mediatype!");
+		}
+	}
+
+	/**
+	 * 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
+	 *         NULL if media type were not supported.
+	 */
+	private static Document newDocument(OdfPackage pkg, String internalPath, OdfMediaType odfMediaType) {
+		Document newDoc = null;
+		switch (odfMediaType) {
+		case TEXT:
+			newDoc = new TextDocument(pkg, internalPath, TextDocument.OdfMediaType.TEXT);
+			break;
+
+		case TEXT_TEMPLATE:
+			newDoc = new TextDocument(pkg, internalPath, TextDocument.OdfMediaType.TEXT_TEMPLATE);
+			break;
+
+		case TEXT_MASTER:
+			newDoc = new TextDocument(pkg, internalPath, TextDocument.OdfMediaType.TEXT_MASTER);
+			break;
+
+		case TEXT_WEB:
+			newDoc = new TextDocument(pkg, internalPath, TextDocument.OdfMediaType.TEXT_WEB);
+			break;
+
+		case SPREADSHEET:
+			newDoc = new SpreadsheetDocument(pkg, internalPath, SpreadsheetDocument.OdfMediaType.SPREADSHEET);
+			break;
+
+		case SPREADSHEET_TEMPLATE:
+			newDoc = new SpreadsheetDocument(pkg, internalPath, SpreadsheetDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+			break;
+
+		case PRESENTATION:
+			newDoc = new PresentationDocument(pkg, internalPath, PresentationDocument.OdfMediaType.PRESENTATION);
+			break;
+
+		case PRESENTATION_TEMPLATE:
+			newDoc = new PresentationDocument(pkg, internalPath, PresentationDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+			break;
+
+		case GRAPHICS:
+			newDoc = new GraphicsDocument(pkg, internalPath, GraphicsDocument.OdfMediaType.GRAPHICS);
+			break;
+
+		case GRAPHICS_TEMPLATE:
+			newDoc = new GraphicsDocument(pkg, internalPath, GraphicsDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+			break;
+
+		case CHART:
+			newDoc = new ChartDocument(pkg, internalPath, ChartDocument.OdfMediaType.CHART);
+			break;
+
+		case CHART_TEMPLATE:
+			newDoc = new ChartDocument(pkg, internalPath, ChartDocument.OdfMediaType.CHART_TEMPLATE);
+			break;
+		// case IMAGE:
+		// case IMAGE_TEMPLATE:
+
+		default:
+			newDoc = null;
+			throw new IllegalArgumentException("Given mediaType '" + odfMediaType.mMediaType + "' is not yet supported!");
+		}
+		// returning null if MediaType is not supported
+		return newDoc;
+	}
+
+	/**
+	 * 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.
+	 * @return an embedded Document
+	 */
+	public Document getEmbeddedDocument(String documentPath) {
+		String internalPath = getDocumentPath() + documentPath;
+		internalPath = normalizeDocumentPath(internalPath);
+		Document embeddedDocument = (Document) mPackage.getCachedDocument(internalPath);
+		// if the document was not already loaded, fine mimetype and create a
+		// new instance
+		if (embeddedDocument == null) {
+			String mediaTypeString = getMediaTypeString();
+			OdfMediaType odfMediaType = OdfMediaType.getOdfMediaType(mediaTypeString);
+			if (odfMediaType == null) {
+				embeddedDocument = newDocument(mPackage, internalPath, odfMediaType);
+			} else {
+				try {
+					String documentMediaType = mPackage.getMediaTypeString(internalPath);
+					odfMediaType = OdfMediaType.getOdfMediaType(documentMediaType);
+					if (odfMediaType == null) {
+						return null;
+					}
+					embeddedDocument = Document.loadDocument(mPackage, internalPath);
+				} catch (Exception ex) {
+					Logger.getLogger(OdfPackageDocument.class.getName()).log(Level.SEVERE, null, ex);
+				}
+			}
+		}
+		return embeddedDocument;
+	}
+
+	/**
+	 * 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
+	// Documents??
+	public List<Document> getEmbeddedDocuments() {
+		List<Document> embeddedObjects = new ArrayList<Document>();
+		// ToDo: (Issue 219 - PackageRefactoring) - Algorithm enhancement:
+		// Instead going through all the files for each mimetype, better
+		// Check all files, which have a mimetype if it is one of the desired,
+		// perhaps start with ODF prefix
+		for (OdfMediaType mediaType : OdfMediaType.values()) {
+			embeddedObjects.addAll(getEmbeddedDocuments(mediaType));
+		}
+		return embeddedObjects;
+	}
+
+	/**
+	 * Method returns all embedded OdfPackageDocuments of the root
+	 * 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
+	 *         given media type
+	 */
+	public List<Document> getEmbeddedDocuments(OdfMediaType mediaType) {
+		String wantedMediaString = null;
+		if (mediaType != null) {
+			wantedMediaString = mediaType.getMediaTypeString();
+		}
+		List<Document> embeddedObjects = new ArrayList<Document>();
+		// check manifest for current embedded OdfPackageDocuments
+		Set<String> manifestEntries = mPackage.getFilePaths();
+		for (String path : manifestEntries) {
+			// any directory that is not the root document "/"
+			if (path.length() > 1 && path.endsWith(SLASH)) {
+				String entryMediaType = mPackage.getFileEntry(path).getMediaTypeString();
+				// if the entry is a document (directory has mediaType)
+				if (entryMediaType != null) {
+					// if a specific ODF mediatype was requested
+					if (wantedMediaString != null) {
+						// test if the desired mediatype matches the current
+						if (entryMediaType.equals(wantedMediaString)) {
+							normalizeDocumentPath(path);
+							embeddedObjects.add(getEmbeddedDocument(path));
+						}
+					} else {
+						// test if any ODF mediatype matches the current
+						for (OdfMediaType type : OdfMediaType.values()) {
+							if (entryMediaType.equals(type.getMediaTypeString())) {
+								embeddedObjects.add(getEmbeddedDocument(path));
+							}
+						}
+					}
+				}
+			}
+		}
+		return embeddedObjects;
+	}
+
+	/**
+	 * 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).
+	 * @param sourceDocument
+	 *            the OdfPackageDocument to be embedded.
+	 */
+	public void insertDocument(OdfPackageDocument sourceDocument, String documentPath) {
+		super.insertDocument(sourceDocument, documentPath);
+	}
+
+	/**
+	 * Sets the media type of the Document
+	 * 
+	 * @param odfMediaType
+	 *            media type to be set
+	 */
+	protected void setOdfMediaType(OdfMediaType odfMediaType) {
+		mMediaType = odfMediaType;
+		super.setMediaTypeString(odfMediaType.getMediaTypeString());
+	}
+
+	/**
+	 * Gets the media type of the Document
+	 */
+	protected OdfMediaType getOdfMediaType() {
+		return mMediaType;
+	}
+
+	/**
+	 * 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
+	 */
+	public Meta getOfficeMetadata() {
+		if (mOfficeMeta == null) {
+			try {
+				mOfficeMeta = new Meta(getMetaDom());
+			} catch (Exception ex) {
+				Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, ex);
+			}
+		}
+		return mOfficeMeta;
+	}
+
+	/**
+	 * 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
+	 * package. If the embedded document is outside of the current document
+	 * 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
+	 *             if the document could not be saved
+	 */
+	public void save(OutputStream out) throws Exception {
+		// 2DO FLUSH AND SAVE IN PACKAGE
+		flushDoms();
+		updateMetaData();
+		if (!isRootDocument()) {
+			Document newDoc = loadDocumentFromTemplate(getOdfMediaType());
+			newDoc.insertDocument(this, ROOT_DOCUMENT_PATH);
+			newDoc.updateMetaData();
+			newDoc.mPackage.save(out);
+			// ToDo: (Issue 219 - PackageRefactoring) - Return the document,
+			// when not closing!
+			// Should we close the sources now? User will never receive the open
+			// package!
+		} else {
+			// 2DO MOVE CACHE TO PACKAGE
+			// // the root document only have to flush the DOM of all open child
+			// documents
+			// flushAllDOMs();
+			mPackage.save(out);
+		}
+	}
+
+	/**
+	 * 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
+	 * embedded document is outside of the current document directory, you have
+	 * 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
+	 *             if the document could not be saved
+	 */
+	public void save(File file) throws Exception {
+		// 2DO FLUSH AND SAVE IN PACKAGE
+		flushDoms();
+		updateMetaData();
+		if (!isRootDocument()) {
+			Document newDoc = loadDocumentFromTemplate(getOdfMediaType());
+			newDoc.insertDocument(this, ROOT_DOCUMENT_PATH);
+			newDoc.updateMetaData();
+			newDoc.mPackage.save(file);
+			// ToDo: (Issue 219 - PackageRefactoring) - Return the document,
+			// when not closing!
+			// Should we close the sources now? User will never receive the open
+			// package!
+		} else {
+			this.mPackage.save(file);
+		}
+	}
+
+	/**
+	 * 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
+	 * embedded document is outside of the current document directory, you have
+	 * 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
+	 */
+	public void save(File file, String password) throws Exception {
+		// 2DO FLUSH AND SAVE IN PACKAGE
+		flushDoms();
+		updateMetaData();
+		if (!isRootDocument()) {
+			Document newDoc = loadDocumentFromTemplate(getOdfMediaType());
+			newDoc.insertDocument(this, ROOT_DOCUMENT_PATH);
+			newDoc.updateMetaData();
+			newDoc.mPackage.setPassword(password);
+			newDoc.mPackage.save(file);
+			// ToDo: (Issue 219 - PackageRefactoring) - Return the document,
+			// when not closing!
+			// Should we close the sources now? User will never receive the open
+			// package!
+		} else {
+			mPackage.setPassword(password);
+			mPackage.save(file);
+		}
+	}
+
+	/**
+	 * Close the OdfPackage and release all temporary created data. Acter
+	 * execution of this method, this class is no longer usable. Do this as the
+	 * last action to free resources. Closing an already closed document has no
+	 * effect. Note that this will not close any cached documents.
+	 */
+	@Override
+	public void close() {
+		// set all member variables explicit to null
+		mMediaType = null;
+		mOfficeMeta = null;
+		mComponentRepository.clear();
+		super.close();
+	}
+
+	/**
+	 * 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
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 */
+	@SuppressWarnings("unchecked")
+	protected <T extends OdfElement> T getContentRoot(Class<T> clazz) throws Exception {
+		OdfElement contentRoot = getContentDom().getRootElement();
+		OfficeBodyElement contentBody = OdfElement.findFirstChildNode(OfficeBodyElement.class, contentRoot);
+		NodeList childs = contentBody.getChildNodes();
+		for (int i = 0; i < childs.getLength(); i++) {
+			Node cur = childs.item(i);
+			if ((cur != null) && clazz.isInstance(cur)) {
+				return (T) cur;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 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.
+	 */
+	public OdfElement getContentRoot() throws Exception {
+		return getContentRoot(OdfElement.class);
+	}
+
+	@Override
+	public String toString() {
+		return "\n" + getMediaTypeString() + " - ID: " + this.hashCode() + " " + getPackage().getBaseURI();
+	}
+
+	/**
+	 * 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
+	 *            directory with the same image file name as in the URI. If the
+	 *            imageURI is relative first the user.dir is taken to make it
+	 *            absolute.
+	 * @return Returns the internal package path of the image, which was created
+	 *         based on the given URI.
+	 * */
+	public String newImage(URI imageUri) {
+		try {
+			OdfContentDom contentDom = this.getContentDom();
+			OdfDrawFrame drawFrame = contentDom.newOdfElement(OdfDrawFrame.class);
+			XPath xpath = contentDom.getXPath();
+			if (this instanceof SpreadsheetDocument) {
+				TableTableCellElement lastCell = (TableTableCellElement) xpath.evaluate("//table:table-cell[last()]", contentDom, XPathConstants.NODE);
+				lastCell.appendChild(drawFrame);
+				drawFrame.removeAttribute("text:anchor-type");
+
+			} else if (this instanceof TextDocument) {
+				TextPElement lastPara = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom, XPathConstants.NODE);
+				if (lastPara == null) {
+					lastPara = ((TextDocument) this).newParagraph();
+				}
+				lastPara.appendChild(drawFrame);
+				drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+			} else if (this instanceof PresentationDocument) {
+				DrawPageElement lastPage = (DrawPageElement) xpath.evaluate("//draw:page[last()]", contentDom, XPathConstants.NODE);
+				lastPage.appendChild(drawFrame);
+			}
+			OdfDrawImage image = (OdfDrawImage) drawFrame.newDrawImageElement();
+			String imagePath = image.newImage(imageUri);
+			return imagePath;
+		} catch (Exception ex) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return null;
+	}
+
+	/**
+	 * Meta data about the document will be initialized. Following metadata data
+	 * is being added:
+	 * <ul>
+	 * <li>The initial creator name will be the Java user.name System property.</li>
+	 * <li>The date and time when this document was created using the current
+	 * data.</li>
+	 * <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
+	 */
+	private static void initializeMetaData(Document newDoc) {
+		Meta metaData = newDoc.getOfficeMetadata();
+		// add initial-creator info.
+		String creator = System.getProperty("user.name");
+		metaData.setInitialCreator(creator);
+		// add creation-date info.
+		Calendar calendar = Calendar.getInstance();
+		metaData.setCreationDate(calendar);
+		// add editing-cycles info.
+		metaData.setEditingCycles(0);
+		// add language info.
+		String language = System.getProperty("user.language");
+		if (language != null) {
+			metaData.setLanguage(language);
+		}
+	}
+
+	/**
+	 * Update document meta data in the ODF document. Following metadata data is
+	 * being updated:
+	 * <ul>
+	 * <li>The name of the person who last modified this document will be the
+	 * Java user.name System property</li>
+	 * <li>The date and time when the document was last modified using current
+	 * data</li>
+	 * <li>The number of times this document has been edited is incremented by 1
+	 * </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 {
+		if (mMetaDom != null) {
+			Meta metaData = getOfficeMetadata();
+			String creator = System.getProperty("user.name");
+			// update creator info.
+			metaData.setCreator(creator);
+			// update date info.
+			Calendar calendar = Calendar.getInstance();
+			metaData.setDcdate(calendar);
+			// update editing-cycles info.
+			Integer cycle = metaData.getEditingCycles();
+			if (cycle != null) {
+				metaData.setEditingCycles(++cycle);
+			} else {
+				metaData.setEditingCycles(1);
+			}
+			// update editing-duration info.
+			long editingDuration = calendar.getTimeInMillis() - documentOpeningTime;
+			editingDuration = (editingDuration < 1) ? 1 : editingDuration;
+			try {
+				DatatypeFactory aFactory = DatatypeFactory.newInstance();
+				metaData.setEditingDuration(new Duration(aFactory.newDurationDayTime(editingDuration)));
+			} catch (DatatypeConfigurationException e) {
+				Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "editing duration update fail as DatatypeFactory can not be instanced", e);
+			}
+		}
+	}
+
+	// /////////////////
+	// Following is the implementation of locale settings
+	// ////////////////
+
+	/**
+	 * <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.
+	 */
+	public enum ScriptType {
+		/**
+		 * Western language
+		 */
+		WESTERN,
+		/**
+		 * Chinese, Japanese and Korean
+		 */
+		CJK,
+		/**
+		 * Complex Text Layout language
+		 */
+		CTL;
+
+	}
+
+	private final static HashSet<String> CJKLanguage = new HashSet<String>();
+	private final static HashSet<String> CTLLanguage = new HashSet<String>();
+	{
+		CJKLanguage.add("zh"); // LANGUAGE_CHINES
+		CJKLanguage.add("ja"); // LANGUAGE_JAPANESE
+		CJKLanguage.add("ko"); // LANGUAGE_KOREANE
+
+		CTLLanguage.add("am"); // LANGUAGE_AMHARIC_ETHIOPIA
+		CTLLanguage.add("ar"); // LANGUAGE_ARABIC_SAUDI_ARABIA
+		CTLLanguage.add("as"); // LANGUAGE_ASSAMESE
+		CTLLanguage.add("bn"); // LANGUAGE_BENGALI
+		CTLLanguage.add("bo"); // LANGUAGE_TIBETAN
+		CTLLanguage.add("brx");// LANGUAGE_USER_BODO_INDIA
+		CTLLanguage.add("dgo");// LANGUAGE_USER_DOGRI_INDIA
+		CTLLanguage.add("dv"); // LANGUAGE_DHIVEHI
+		CTLLanguage.add("dz"); // LANGUAGE_DZONGKHA
+		CTLLanguage.add("fa"); // LANGUAGE_FARSI
+		CTLLanguage.add("gu"); // LANGUAGE_GUJARATI
+		CTLLanguage.add("he"); // LANGUAGE_HEBREW
+		CTLLanguage.add("hi"); // LANGUAGE_HINDI
+		CTLLanguage.add("km"); // LANGUAGE_KHMER
+		CTLLanguage.add("kn"); // LANGUAGE_KANNADA
+		CTLLanguage.add("ks"); // LANGUAGE_KASHMIRI
+		CTLLanguage.add("ku"); // LANGUAGE_USER_KURDISH_IRAQ
+		CTLLanguage.add("lo"); // LANGUAGE_LAO
+		CTLLanguage.add("mai");// LANGUAGE_USER_MAITHILI_INDIA
+		CTLLanguage.add("ml"); // LANGUAGE_MALAYALAM
+		CTLLanguage.add("mn"); // LANGUAGE_MONGOLIAN_MONGOLIAN
+		CTLLanguage.add("mni");// LANGUAGE_MANIPURI
+		CTLLanguage.add("mr"); // LANGUAGE_MARATHI
+		CTLLanguage.add("my"); // LANGUAGE_BURMESE
+		CTLLanguage.add("ne"); // LANGUAGE_NEPALI
+		CTLLanguage.add("or"); // LANGUAGE_ORIYA
+		CTLLanguage.add("pa"); // LANGUAGE_PUNJABI
+		CTLLanguage.add("sa"); // LANGUAGE_SANSKRIT
+		CTLLanguage.add("sd"); // LANGUAGE_SINDHI
+		CTLLanguage.add("si"); // LANGUAGE_SINHALESE_SRI_LANKA
+		CTLLanguage.add("syr");// LANGUAGE_SYRIAC
+		CTLLanguage.add("ta"); // LANGUAGE_TAMIL
+		CTLLanguage.add("te"); // LANGUAGE_TELUGU
+		CTLLanguage.add("th"); // LANGUAGE_THAI
+		CTLLanguage.add("ug"); // LANGUAGE_UIGHUR_CHINA
+		CTLLanguage.add("ur"); // LANGUAGE_URDU
+		CTLLanguage.add("yi"); // LANGUAGE_YIDDISH
+	}
+
+	/**
+	 * <p>
+	 * Set a locale information.
+	 * <p>
+	 * 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
+	 */
+	public void setLocale(Locale locale) {
+		setLocale(locale, getScriptType(locale));
+	}
+
+	public static ScriptType getScriptType(Locale locale) {
+		String language = locale.getLanguage();
+		if (CJKLanguage.contains(language))
+			return ScriptType.CJK;
+		if (CTLLanguage.contains(language))
+			return ScriptType.CTL;
+		return ScriptType.WESTERN;
+
+	}
+
+	/**
+	 * <p>
+	 * 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
+	 *            - The script type
+	 */
+	public void setLocale(Locale locale, ScriptType scriptType) {
+		try {
+			switch (scriptType) {
+			case WESTERN:
+				setWesternLanguage(locale);
+				break;
+			case CJK:
+				setDefaultAsianLanguage(locale);
+				break;
+			case CTL:
+				setDefaultComplexLanguage(locale);
+				break;
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "Failed to set locale", e);
+		}
+	}
+
+	/**
+	 * <p>
+	 * Get a locale information of a specific script type.
+	 * 
+	 * @param scriptType
+	 *            - The script type
+	 * @return the Locale information
+	 */
+	public Locale getLocale(ScriptType scriptType) {
+		try {
+			switch (scriptType) {
+			case WESTERN:
+				return getDefaultLanguageByProperty(OdfTextProperties.Country, OdfTextProperties.Language);
+			case CJK:
+				return getDefaultLanguageByProperty(OdfTextProperties.CountryAsian, OdfTextProperties.LanguageAsian);
+			case CTL:
+				return getDefaultLanguageByProperty(OdfTextProperties.CountryComplex, OdfTextProperties.LanguageComplex);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "Failed to get locale", e);
+		}
+		return null;
+	}
+
+	/**
+	 * 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.
+	 * @throws Exception
+	 */
+	private void setWesternLanguage(Locale locale) throws Exception {
+		if (getScriptType(locale) != ScriptType.WESTERN)
+			return;
+
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		if (defaultStyles != null) {
+			Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+			while (itera.hasNext()) {
+				OdfDefaultStyle style = itera.next();
+				if (style.getFamily().getProperties().contains(OdfTextProperties.Language)) {
+					style.setProperty(OdfTextProperties.Language, locale.getLanguage());
+					style.setProperty(OdfTextProperties.Country, locale.getCountry());
+				}
+			}
+		}
+	}
+
+	private Locale getDefaultLanguageByProperty(OdfStyleProperty countryProp, OdfStyleProperty languageProp) throws Exception {
+		String lang = null, ctry = null;
+
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+
+		// get language and country setting from default style setting for
+		// paragraph
+		OdfDefaultStyle defaultStyle = styles.getDefaultStyle(OdfStyleFamily.Paragraph);
+		if (defaultStyle != null) {
+			if (defaultStyle.hasProperty(countryProp) && defaultStyle.hasProperty(languageProp)) {
+				ctry = defaultStyle.getProperty(countryProp);
+				lang = defaultStyle.getProperty(languageProp);
+				return new Locale(lang, ctry);
+			}
+		}
+		// if no default style setting for paragraph
+		// get language and country setting from other default style settings
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+		while (itera.hasNext()) {
+			OdfDefaultStyle style = itera.next();
+			if (style.hasProperty(countryProp) && style.hasProperty(languageProp)) {
+				ctry = style.getProperty(countryProp);
+				lang = style.getProperty(languageProp);
+				return new Locale(lang, ctry);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 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.
+	 */
+
+	/**
+	 * This method will set the default Asian language and country information
+	 * 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.
+	 * @throws Exception
+	 */
+	private void setDefaultAsianLanguage(Locale locale) throws Exception {
+		if (getScriptType(locale) != ScriptType.CJK)
+			return;
+		String user_language = locale.getLanguage();
+		if (!user_language.equals(Locale.CHINESE.getLanguage()) && !user_language.equals(Locale.TRADITIONAL_CHINESE.getLanguage())
+				&& !user_language.equals(Locale.JAPANESE.getLanguage()) && !user_language.equals(Locale.KOREAN.getLanguage()))
+			return;
+
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		if (defaultStyles != null) {
+			Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+			while (itera.hasNext()) {
+				OdfDefaultStyle style = itera.next();
+				if (style.getFamily().getProperties().contains(OdfTextProperties.LanguageAsian)) {
+					style.setProperty(OdfTextProperties.LanguageAsian, locale.getLanguage());
+					style.setProperty(OdfTextProperties.CountryAsian, locale.getCountry());
+				}
+			}
+		}
+	}
+
+	/**
+	 * 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.
+	 * @throws Exception
+	 */
+	private void setDefaultComplexLanguage(Locale locale) throws Exception {
+		if (getScriptType(locale) != ScriptType.CTL)
+			return;
+		OdfOfficeStyles styles = getStylesDom().getOfficeStyles();
+		Iterable<OdfDefaultStyle> defaultStyles = styles.getDefaultStyles();
+		if (defaultStyles != null) {
+			Iterator<OdfDefaultStyle> itera = defaultStyles.iterator();
+			while (itera.hasNext()) {
+				OdfDefaultStyle style = itera.next();
+				if (style.getFamily().getProperties().contains(OdfTextProperties.LanguageComplex)) {
+					style.setProperty(OdfTextProperties.LanguageComplex, locale.getLanguage());
+					style.setProperty(OdfTextProperties.CountryComplex, locale.getCountry());
+				}
+			}
+		}
+	}
+
+	/**
+	 * This method will search both the document content and header/footer,
+	 * 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() {
+		TextSectionElement element;
+		ArrayList<Section> list = new ArrayList<Section>();
+		try {
+			// search in content.xml
+			OdfElement root = getContentDom().getRootElement();
+			OfficeBodyElement officeBody = OdfElement.findFirstChildNode(OfficeBodyElement.class, root);
+			NodeList sectionList = officeBody.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "section");
+			for (int i = 0; i < sectionList.getLength(); i++) {
+				element = (TextSectionElement) sectionList.item(i);
+				list.add(Section.getInstance(element));
+			}
+
+			// Search in style.xml
+			root = getStylesDom().getRootElement();
+			OfficeMasterStylesElement masterStyle = OdfElement.findFirstChildNode(OfficeMasterStylesElement.class, root);
+			sectionList = masterStyle.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "section");
+			for (int i = 0; i < sectionList.getLength(); i++) {
+				element = (TextSectionElement) sectionList.item(i);
+				list.add(Section.getInstance(element));
+			}
+
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "Failed in sectionIterator", e);
+		}
+		return list.iterator();
+	}
+
+	/**
+	 * This method will search both the document content and header/footer,
+	 * return a section with a specific name.
+	 * <p>
+	 * 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
+	 */
+	public Section getSectionByName(String name) {
+		TextSectionElement element;
+		try {
+			OdfElement root = getContentDom().getRootElement();
+			OfficeBodyElement officeBody = OdfElement.findFirstChildNode(OfficeBodyElement.class, root);
+			XPath xpath = getContentDom().getXPath();
+			String xpathValue = ".//text:section[@text:name=\"" + name + "\"]";
+			element = (TextSectionElement) xpath.evaluate(xpathValue, officeBody, XPathConstants.NODE);
+			if (element != null) {
+				return Section.getInstance(element);
+			}
+
+			root = getStylesDom().getRootElement();
+			OfficeMasterStylesElement masterStyle = OdfElement.findFirstChildNode(OfficeMasterStylesElement.class, root);
+			xpath = getStylesDom().getXPath();
+			element = (TextSectionElement) xpath.evaluate(".//text:section[@text:name=\"" + name + "\"]", masterStyle, XPathConstants.NODE);
+			if (element != null) {
+				return Section.getInstance(element);
+			}
+
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "Failed in getSectionByName", e);
+		}
+
+		return null;
+
+	}
+
+	/**
+	 * 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.
+	 */
+	public boolean removeElementLinkedResource(OdfElement odfElement) {
+		boolean success = deleteLinkedRef(odfElement);
+		success &= deleteStyleRef(odfElement);
+		return success;
+	}
+
+	/**
+	 * Return a unique string with a character "a" followed by randomly
+	 * generating 6 hex numbers
+	 * 
+	 * @return a unique string
+	 */
+	String makeUniqueName() {
+		return String.format("a%06x", (int) (Math.random() * 0xffffff));
+	}
+
+	private String getNewUniqueString(String oldStr) {
+		int lastIndex = oldStr.lastIndexOf("-");
+		if (lastIndex == -1) {
+			return oldStr + "-" + makeUniqueName();
+		}
+		String suffix = oldStr.substring(lastIndex + 1);
+		if (suffix.matches("a[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]")) {
+			return oldStr.substring(0, lastIndex + 1) + makeUniqueName();
+		} else
+			return oldStr + "-" + makeUniqueName();
+	}
+
+	private void updateAttribute(Attr attr) {
+		String oldID = attr.getValue();
+		String newID = getNewUniqueString(oldID);
+		attr.setValue(newID);
+	}
+
+	/**
+	 * 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
+	 *            The specified DOM tree that the returned element belong to
+	 * @param deep
+	 *            If true, recursively clone the subtree under the element,
+	 *            false, only clone the element itself
+	 * @return Returns a duplicated element which is not in the DOM tree with
+	 *         the specified element
+	 */
+	Node cloneForeignElement(Node element, OdfFileDom dom, boolean deep) {
+		if (element instanceof OdfElement) {
+			OdfElement cloneElement = dom.createElementNS(((OdfElement) element).getOdfName());
+
+			NamedNodeMap attributes = element.getAttributes();
+			if (attributes != null) {
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node item = attributes.item(i);
+					String qname = null;
+					String prefix = item.getPrefix();
+					if (prefix == null) {
+						qname = item.getLocalName();
+					} else {
+						qname = prefix + ":" + item.getLocalName();
+					}
+
+					cloneElement.setAttributeNS(item.getNamespaceURI(), qname, item.getNodeValue());
+				}
+			}
+
+			if (deep) {
+				Node childNode = element.getFirstChild();
+				while (childNode != null) {
+					cloneElement.appendChild(cloneForeignElement(childNode, dom, true));
+					childNode = childNode.getNextSibling();
+				}
+			}
+
+			return cloneElement;
+		} else {
+			return dom.createTextNode(element.getNodeValue());
+		}
+
+	}
+
+	/**
+	 * This method will update all the attribute "xml:id" to make it unique
+	 * within the whole document content
+	 * <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.
+	 */
+	void updateXMLIds(OdfElement element) {
+		try {
+			XPath xpath = getContentDom().getXPath();
+			String xpathValue = "//*[@xml:id]";
+			NodeList childList = (NodeList) xpath.evaluate(xpathValue, element, XPathConstants.NODESET);
+			if (childList == null)
+				return;
+
+			for (int i = 0; i < childList.getLength(); i++) {
+				OdfElement ele = (OdfElement) childList.item(i);
+				Attr attri = ele.getAttributeNodeNS(OdfDocumentNamespace.XML.getUri(), "id");
+				updateAttribute(attri);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "Failed in updateXMLIds", e);
+		}
+	}
+
+	/**
+	 * This method will update all the attribute
+	 * "text:name","table:name","draw:name","chart:name", to make it unique
+	 * within the whole document content.
+	 * <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.
+	 */
+	// anim:name, chart:name, config:name, office:name, presentation:name,
+	// svg:name,
+	void updateNames(OdfElement element) {
+		try {
+			XPath xpath = getContentDom().getXPath();
+			String xpathValue = "descendant-or-self::node()[@text:name|@table:name|@draw:name|@chart:name]";
+			NodeList childList = (NodeList) xpath.evaluate(xpathValue, element, XPathConstants.NODESET);
+			if (childList == null)
+				return;
+			for (int i = 0; i < childList.getLength(); i++) {
+				OdfElement ele = (OdfElement) childList.item(i);
+				Attr attri = ele.getAttributeNodeNS(OdfDocumentNamespace.TEXT.getUri(), "name");
+				if (attri != null)
+					updateAttribute(attri);
+				attri = ele.getAttributeNodeNS(OdfDocumentNamespace.TABLE.getUri(), "name");
+				if (attri != null)
+					updateAttribute(attri);
+				if (ele instanceof DrawFrameElement)// only update draw:frame
+				{
+					attri = ele.getAttributeNodeNS(OdfDocumentNamespace.DRAW.getUri(), "name");
+					if (attri != null)
+						updateAttribute(attri);
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, "Failed in updateXMLIds", e);
+		}
+	}
+
+	/**
+	 * This method will copy the linked resource of the element which need to be
+	 * copied, from the source package to the target package.
+	 * <p>
+	 * If the target package contains a resource with the same path and name,
+	 * 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
+	 *            - the source document
+	 */
+	void copyLinkedRefInBatch(OdfElement sourceCloneEle, Document srcDocument) {
+		try {
+			OdfFileDom fileDom = (OdfFileDom) sourceCloneEle.getOwnerDocument();
+			XPath xpath;
+			if (fileDom instanceof OdfContentDom) {
+				xpath = ((OdfContentDom) fileDom).getXPath();
+			} else {
+				xpath = ((OdfStylesDom) fileDom).getXPath();
+			}
+			// OdfPackageDocument srcDoc = fileDom.getDocument();
+			// new a map to put the original name and the rename string, in case
+			// that the same name might be referred by the slide several times.
+			HashMap<String, String> objectRenameMap = new HashMap<String, String>();
+			NodeList linkNodes = (NodeList) xpath.evaluate(".//*[@xlink:href]", sourceCloneEle, XPathConstants.NODESET);
+			for (int i = 0; i <= linkNodes.getLength(); i++) {
+				OdfElement object = null;
+				if (linkNodes.getLength() == i) {
+					if (sourceCloneEle.hasAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href")) {
+						object = sourceCloneEle;
+					} else {
+						break;
+					}
+				} else {
+					object = (OdfElement) linkNodes.item(i);
+				}
+				String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+				if (refObjPath != null && refObjPath.length() > 0) {
+					// the path of the object is start with "./"
+					boolean hasPrefix = false;
+					String prefix = "./";
+					String newObjPath;
+					if (refObjPath.startsWith(prefix)) {
+						refObjPath = refObjPath.substring(2);
+						hasPrefix = true;
+					}
+					// check if this linked resource has been copied
+					if (objectRenameMap.containsKey(refObjPath)) {
+						// this object has been copied already
+						newObjPath = objectRenameMap.get(refObjPath);
+						object.setAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "xlink:href", hasPrefix ? (prefix + newObjPath) : newObjPath);
+						continue;
+					}
+					// check if the current document contains the same path
+					OdfFileEntry fileEntry = getPackage().getFileEntry(refObjPath);
+					// note: if refObjPath is a directory, it must end with '/'
+					if (fileEntry == null) {
+						fileEntry = getPackage().getFileEntry(refObjPath + "/");
+					}
+					newObjPath = refObjPath;
+					if (fileEntry != null) {
+						// rename the object path
+						newObjPath = objectRenameMap.get(refObjPath);
+						if (newObjPath == null) {
+							// if refObjPath still contains ".", it means that
+							// it has the suffix
+							// then change the name before the suffix string
+							int dotIndex = refObjPath.indexOf(".");
+							if (dotIndex != -1) {
+								newObjPath = refObjPath.substring(0, dotIndex) + "-" + makeUniqueName() + refObjPath.substring(dotIndex);
+							} else {
+								newObjPath = refObjPath + "-" + makeUniqueName();
+							}
+							objectRenameMap.put(refObjPath, newObjPath);
+						}
+						object.setAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "xlink:href", hasPrefix ? (prefix + newObjPath) : newObjPath);
+					} else
+						objectRenameMap.put(refObjPath, refObjPath);
+				}
+			}
+			// copy resource in batch
+			copyResourcesFrom(srcDocument, objectRenameMap);
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	/*****************************/
+	/*
+	 * These codes are moved from OdfPackage, and should be removed till
+	 * OdfPackage can provide a mechanism to copy resources in batch.
+	 */
+	/*****************************/
+	private InputStream readAsInputStream(ZipInputStream inputStream) throws IOException {
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		if (outputStream != null) {
+			byte[] buf = new byte[4096];
+			int r = 0;
+			while ((r = inputStream.read(buf, 0, 4096)) > -1) {
+				outputStream.write(buf, 0, r);
+			}
+		}
+		return new ByteArrayInputStream(outputStream.toByteArray());
+	}
+
+	private 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);
+		} else {
+			return normalizePath(internalPath);
+		}
+	}
+
+	private static final String DOUBLE_DOT = "..";
+	private static final String DOT = ".";
+	private static final String COLON = ":";
+	private static final Pattern BACK_SLASH_PATTERN = Pattern.compile("\\\\");
+	private static final Pattern DOUBLE_SLASH_PATTERN = Pattern.compile("//");
+
+	private String normalizePath(String path) {
+		if (path == null) {
+			String errMsg = "The internalPath given by parameter is NULL!";
+			Logger.getLogger(OdfPackage.class.getName()).severe(errMsg);
+			throw new IllegalArgumentException(errMsg);
+		} else if (!mightBeExternalReference(path)) {
+			if (path.equals(EMPTY_STRING)) {
+				path = SLASH;
+			} else {
+				// exchange all backslash "\" with a slash "/"
+				if (path.indexOf('\\') != -1) {
+					path = BACK_SLASH_PATTERN.matcher(path).replaceAll(SLASH);
+				}
+				// exchange all double slash "//" with a slash "/"
+				while (path.indexOf("//") != -1) {
+					path = DOUBLE_SLASH_PATTERN.matcher(path).replaceAll(SLASH);
+				}
+				// if directory replacements (e.g. ..) exist, resolve and remove
+				// them
+				if (path.indexOf("/.") != -1 || path.indexOf("./") != -1) {
+					path = removeChangeDirectories(path);
+				}
+			}
+		}
+		return path;
+	}
+
+	private 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)) {
+			isExternalReference = true;
+		}
+		return isExternalReference;
+	}
+
+	private String removeChangeDirectories(String path) {
+		boolean isDirectory = path.endsWith(SLASH);
+		StringTokenizer tokenizer = new StringTokenizer(path, SLASH);
+		int tokenCount = tokenizer.countTokens();
+		List<String> tokenList = new ArrayList<String>(tokenCount);
+		// add all paths to a list
+		while (tokenizer.hasMoreTokens()) {
+			String token = tokenizer.nextToken();
+			tokenList.add(token);
+		}
+		if (!isDirectory) {
+			String lastPath = tokenList.get(tokenCount - 1);
+			if (lastPath.equals(DOT) || lastPath.equals(DOUBLE_DOT)) {
+				isDirectory = true;
+			}
+		}
+		String currentToken;
+		int removeDirLevel = 0;
+		StringBuilder out = new StringBuilder();
+		// work on the list from back to front
+		for (int i = tokenCount - 1; i >= 0; i--) {
+			currentToken = tokenList.get(i);
+			// every ".." will remove an upcoming path
+			if (currentToken.equals(DOUBLE_DOT)) {
+				removeDirLevel++;
+			} else if (currentToken.equals(DOT)) {
+			} else {
+				// if a path have to be remove, neglect current path
+				if (removeDirLevel > 0) {
+					removeDirLevel--;
+				} else {
+					// add the path segment
+					out.insert(0, SLASH);
+					out.insert(0, currentToken);
+				}
+			}
+		}
+		if (removeDirLevel > 0) {
+			return EMPTY_STRING;
+		} else {
+			if (!isDirectory) {
+				// remove trailing slash /
+				out.deleteCharAt(out.length() - 1);
+			}
+			return out.toString();
+		}
+	}
+
+	/*****************************/
+	// FIXME: These two methods are only used in method copyResourcesFrom to
+	// improve copy performance, should not be used in any other way.
+	// methods loadDocument(String documentPath) and loadDocument(File file)
+	// will initialize mFile.
+	// This field and these two methods should be removed after ODFDOM supplies
+	// batch copy.
+	private void setFile(File thisFile) {
+		mFile = thisFile;
+	}
+
+	private File getFile() {
+		return mFile;
+	}
+
+	/**
+	 * This method will copy resources from source document to this document.
+	 * The second parameter contains a map between all the name of resources in
+	 * the source document and the rename string. If the source document is
+	 * 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) {
+			ArrayList<String> copiedFolder = new ArrayList<String>();
+			Set<String> refObjPathSet = objectRenameMap.keySet();
+			FileInputStream tempFileStream = new FileInputStream(srcDoc.getFile());
+			ZipInputStream zipStream = new ZipInputStream(tempFileStream);
+			ZipEntry zipEntry = zipStream.getNextEntry();
+			while (zipEntry != null) {
+				String refObjPath = zipEntry.getName();
+				for (String path : refObjPathSet) {
+					if (refObjPath.equals(path)) {
+						String newObjPath = objectRenameMap.get(refObjPath);
+						refObjPath = normalizeFilePath(refObjPath);
+						String mediaType = srcDoc.getPackage().getFileEntry(refObjPath).getMediaTypeString();
+						InputStream is = readAsInputStream(zipStream);
+						getPackage().insert(is, newObjPath, mediaType);
+						break;
+					} else if (refObjPath.startsWith(path + "/")) {
+						String suffix = refObjPath.substring(path.length());
+						String newObjPath = objectRenameMap.get(path) + suffix;
+						refObjPath = normalizeFilePath(refObjPath);
+						String mediaType = srcDoc.getPackage().getFileEntry(refObjPath).getMediaTypeString();
+						InputStream is = readAsInputStream(zipStream);
+						getPackage().insert(is, newObjPath, mediaType);
+						if (!copiedFolder.contains(path)) {
+							mediaType = srcDoc.getPackage().getFileEntry(path + "/").getMediaTypeString();
+							getPackage().insert((InputStream) null, objectRenameMap.get(path) + "/", mediaType);
+							copiedFolder.add(path);
+						}
+						break;
+					}
+				}
+				zipEntry = zipStream.getNextEntry();
+			}
+			zipStream.close();
+			tempFileStream.close();
+		} else {
+			Set<String> refObjPathSet = objectRenameMap.keySet();
+			for (String refObjPath : refObjPathSet) {
+				String newObjPath = objectRenameMap.get(refObjPath);
+				InputStream is = srcDoc.getPackage().getInputStream(refObjPath);
+				if (is != null) {
+					String mediaType = srcDoc.getPackage().getFileEntry(refObjPath).getMediaTypeString();
+					getPackage().insert(is, newObjPath, mediaType);
+				} else {
+					Document embedDoc = ((Document) srcDoc).getEmbeddedDocument(refObjPath);
+					if (embedDoc != null) {
+						insertDocument(embedDoc, newObjPath);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This method will copy the linked resource of the element which need to be
+	 * copied, from the source package to the target package.
+	 * <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
+	 */
+	// clone the source clone element's referred object path to the current
+	// package
+	// if the current package contains the same name with the referred object
+	// path,
+	// rename the object path and path reference of this slide element
+	// notes: the source clone element is the copied one to avoid changing the
+	// content of the source document.
+	void copyLinkedRef(OdfElement sourceCloneEle) {
+		try {
+			OdfFileDom fileDom = (OdfFileDom) sourceCloneEle.getOwnerDocument();
+			XPath xpath;
+			if (fileDom instanceof OdfContentDom) {
+				xpath = ((OdfContentDom) fileDom).getXPath();
+			} else {
+				xpath = ((OdfStylesDom) fileDom).getXPath();
+			}
+			OdfPackageDocument srcDoc = fileDom.getDocument();
+			// new a map to put the original name and the rename string, in case
+			// that the same name might be referred by the slide several times.
+			HashMap<String, String> objectRenameMap = new HashMap<String, String>();
+			NodeList linkNodes = (NodeList) xpath.evaluate(".//*[@xlink:href]", sourceCloneEle, XPathConstants.NODESET);
+			for (int i = 0; i <= linkNodes.getLength(); i++) {
+				OdfElement object = null;
+				if (linkNodes.getLength() == i) {
+					if (sourceCloneEle.hasAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href")) {
+						object = sourceCloneEle;
+					} else {
+						break;
+					}
+				} else {
+					object = (OdfElement) linkNodes.item(i);
+				}
+				String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+				if (refObjPath != null && refObjPath.length() > 0) {
+					// the path of the object is start with "./"
+					boolean hasPrefix = false;
+					String prefix = "./";
+					if (refObjPath.startsWith(prefix)) {
+						refObjPath = refObjPath.substring(2);
+						hasPrefix = true;
+					}
+					// check if the current document contains the same path
+					OdfFileEntry fileEntry = getPackage().getFileEntry(refObjPath);
+					// note: if refObjPath is a directory, it must end with '/'
+					if (fileEntry == null) {
+						fileEntry = getPackage().getFileEntry(refObjPath + "/");
+					}
+					String newObjPath = refObjPath;
+					if (fileEntry != null) {
+						// rename the object path
+						newObjPath = objectRenameMap.get(refObjPath);
+						if (newObjPath == null) {
+							// if refObjPath still contains ".", it means that
+							// it has the suffix
+							// then change the name before the suffix string
+							int dotIndex = refObjPath.indexOf(".");
+							if (dotIndex != -1) {
+								newObjPath = refObjPath.substring(0, dotIndex) + "-" + makeUniqueName() + refObjPath.substring(dotIndex);
+							} else {
+								newObjPath = refObjPath + "-" + makeUniqueName();
+							}
+							objectRenameMap.put(refObjPath, newObjPath);
+						}
+						object.setAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "xlink:href", hasPrefix ? (prefix + newObjPath) : newObjPath);
+					}
+					InputStream is = srcDoc.getPackage().getInputStream(refObjPath);
+					if (is != null) {
+						String mediaType = srcDoc.getPackage().getFileEntry(refObjPath).getMediaTypeString();
+						getPackage().insert(is, newObjPath, mediaType);
+					} else {
+						Document embedDoc = ((Document) srcDoc).getEmbeddedDocument(refObjPath);
+						if (embedDoc != null) {
+							insertDocument(embedDoc, newObjPath);
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	/**
+	 * 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
+	 *            - the source document
+	 */
+	void copyForeignStyleRef(OdfElement sourceCloneEle, Document srcDoc) {
+		try {
+			ArrayList<String> tempList = new ArrayList<String>();
+			OdfFileDom srcContentDom = srcDoc.getContentDom();
+			XPath xpath = srcContentDom.getXPath();
+			// 1. collect all the referred style element which has "style:name"
+			// attribute
+			// 1.1. style:name of content.xml
+			String styleQName = "style:name";
+			NodeList srcStyleDefNodeList = (NodeList) xpath.evaluate("*/office:automatic-styles/*[@" + styleQName + "]", srcContentDom, XPathConstants.NODESET);
+			IdentityHashMap<OdfElement, List<OdfElement>> srcContentStyleCloneEleList = new IdentityHashMap<OdfElement, List<OdfElement>>();
+			IdentityHashMap<OdfElement, OdfElement> appendContentStyleList = new IdentityHashMap<OdfElement, OdfElement>();
+			getCopyStyleList(null, sourceCloneEle, styleQName, srcStyleDefNodeList, srcContentStyleCloneEleList, appendContentStyleList, tempList, true);
+			// 1.2. style:name of styles.xml
+			srcStyleDefNodeList = (NodeList) xpath.evaluate(".//*[@" + styleQName + "]", srcDoc.getStylesDom(), XPathConstants.NODESET);
+			IdentityHashMap<OdfElement, List<OdfElement>> srcStylesStyleCloneEleList = new IdentityHashMap<OdfElement, List<OdfElement>>();
+			IdentityHashMap<OdfElement, OdfElement> appendStylesStyleList = new IdentityHashMap<OdfElement, OdfElement>();
+			tempList.clear();
+			getCopyStyleList(null, sourceCloneEle, styleQName, srcStyleDefNodeList, srcStylesStyleCloneEleList, appendStylesStyleList, tempList, true);
+			// 1.3 rename, copy the referred style element to the corresponding
+			// position in the dom tree
+			insertCollectedStyle(styleQName, srcContentStyleCloneEleList, getContentDom(), appendContentStyleList);
+			insertCollectedStyle(styleQName, srcStylesStyleCloneEleList, getStylesDom(), appendStylesStyleList);
+
+			// 2. collect all the referred style element which has "draw:name"
+			// attribute
+			// 2.1 draw:name of styles.xml
+			// the value of draw:name is string or StyleName,
+			// only when the value is StyleName type, the style definition
+			// should be cloned to the destination document
+			// in ODF spec, such attribute type is only exist in <office:styles>
+			// element, so only search it in styles.xml dom
+			tempList.clear();
+			styleQName = "draw:name";
+			srcStyleDefNodeList = (NodeList) xpath.evaluate(".//*[@" + styleQName + "]", srcDoc.getStylesDom(), XPathConstants.NODESET);
+			IdentityHashMap<OdfElement, List<OdfElement>> srcDrawStyleCloneEleList = new IdentityHashMap<OdfElement, List<OdfElement>>();
+			IdentityHashMap<OdfElement, OdfElement> appendDrawStyleList = new IdentityHashMap<OdfElement, OdfElement>();
+			Iterator<OdfElement> iter = appendContentStyleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendContentStyleList.get(styleElement);
+				getCopyStyleList(styleElement, cloneStyleElement, styleQName, srcStyleDefNodeList, srcDrawStyleCloneEleList, appendDrawStyleList, tempList,
+						false);
+			}
+			iter = appendStylesStyleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendStylesStyleList.get(styleElement);
+				getCopyStyleList(styleElement, cloneStyleElement, styleQName, srcStyleDefNodeList, srcDrawStyleCloneEleList, appendDrawStyleList, tempList,
+						false);
+			}
+			// 2.2 rename, copy the referred style element to the corresponding
+			// position in the dom tree
+			// note: "draw:name" style element only exist in styles.dom
+			insertCollectedStyle(styleQName, srcDrawStyleCloneEleList, getStylesDom(), appendDrawStyleList);
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+		}
+
+	}
+
+	// 1. modified the style name of the style definition element which has the
+	// same name with the source document
+	// 2. As to the style definition which match 1) condition, modified the
+	// referred style name of the element which reference this style
+	// 3. All the style which also contains other style reference, should be
+	// copied to the source document.
+	private void insertCollectedStyle(String styleQName, IdentityHashMap<OdfElement, List<OdfElement>> srcStyleCloneEleList, OdfFileDom dom,
+			IdentityHashMap<OdfElement, OdfElement> appendStyleList) {
+		try {
+			String stylePrefix = OdfNamespace.getPrefixPart(styleQName);
+			String styleLocalName = OdfNamespace.getLocalPart(styleQName);
+			String styleURI = OdfDocumentNamespace.STYLE.getUri();
+			if (stylePrefix.equals("draw"))
+				styleURI = OdfDocumentNamespace.DRAW.getUri();
+			// is the DOM always the styles.xml
+			XPath xpath = dom.getXPath();
+			NodeList destStyleNodeList;
+			if (dom instanceof OdfContentDom)
+				destStyleNodeList = (NodeList) xpath.evaluate("*/office:automatic-styles/*[@" + styleQName + "]", dom, XPathConstants.NODESET);
+			else
+				destStyleNodeList = (NodeList) xpath.evaluate(".//*[@" + styleQName + "]", dom, XPathConstants.NODESET);
+			Iterator<OdfElement> iter = srcStyleCloneEleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendStyleList.get(styleElement);
+				if (cloneStyleElement == null) {
+					cloneStyleElement = (OdfElement) styleElement.cloneNode(true);
+					appendStyleList.put(styleElement, cloneStyleElement);
+				}
+				String styleName = styleElement.getAttributeNS(styleURI, styleLocalName);
+				List<String> newStyleNameList = styleRenameMap.get(styleName);
+				// if the newStyleNameList != null, means that styleName exists
+				// in dest document
+				// and it has already been renamed
+				if ((newStyleNameList != null) || (isStyleNameExist(destStyleNodeList, styleName) != null)) {
+					String newStyleName = null;
+					if (newStyleNameList == null) {
+						newStyleNameList = new ArrayList<String>();
+						newStyleName = styleName + "-" + makeUniqueName();
+						newStyleNameList.add(newStyleName);
+						styleRenameMap.put(styleName, newStyleNameList);
+					} else {
+						for (int i = 0; i < newStyleNameList.size(); i++) {
+							String styleNameIter = newStyleNameList.get(i);
+							OdfElement destStyleElementWithNewName = isStyleNameExist(destStyleNodeList, styleNameIter);
+							// check if the two style elements have the same
+							// content
+							// if not, the cloneStyleElement should rename,
+							// rather than reuse the new style name
+							cloneStyleElement.setAttributeNS(styleURI, styleQName, styleNameIter);
+							if ((destStyleElementWithNewName != null) && destStyleElementWithNewName.equals(cloneStyleElement)) {
+								newStyleName = styleNameIter;
+								break;
+							}
+						}
+						if (newStyleName == null) {
+							newStyleName = styleName + "-" + makeUniqueName();
+							newStyleNameList.add(newStyleName);
+						}
+					}
+					// System.out.println("renaming:"+styleName+"-"+newStyleName);
+					// if newStyleName has been set in the element as the new
+					// name
+					// which means that the newStyleName is conform to the odf
+					// spec
+					// then change element style reference name
+					if (changeStyleRefName(srcStyleCloneEleList.get(styleElement), styleName, newStyleName)) {
+						cloneStyleElement.setAttributeNS(styleURI, styleQName, newStyleName);
+						// if display name should also be renamed
+						String displayName = cloneStyleElement.getAttributeNS(styleURI, "display-name");
+						if ((displayName != null) && (displayName.length() > 0)) {
+							cloneStyleElement.setAttributeNS(styleURI, stylePrefix + ":display-name",
+									displayName + newStyleName.substring(newStyleName.length() - 8));
+						}
+					}
+				}
+			}
+
+			iter = appendStyleList.keySet().iterator();
+			while (iter.hasNext()) {
+				OdfElement styleElement = iter.next();
+				OdfElement cloneStyleElement = appendStyleList.get(styleElement);
+				String newStyleName = cloneStyleElement.getAttributeNS(styleURI, styleLocalName);
+				Boolean isAppended = styleAppendMap.get(newStyleName);
+				// if styleAppendMap contain the newStyleName,
+				// means that cloneStyleElement has already been appended
+				if ((isAppended != null) && isAppended.booleanValue() == true) {
+					continue;
+				} else {
+					styleAppendMap.put(newStyleName, true);
+				}
+				OdfElement cloneForeignStyleElement = (OdfElement) cloneForeignElement(cloneStyleElement, dom, true);
+				String styleElePath = getElementPath(styleElement);
+				appendForeignStyleElement(cloneForeignStyleElement, dom, styleElePath);
+				copyLinkedRef(cloneStyleElement);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+		}
+
+	}
+
+	// get all the copy of referred style element which is directly referred or
+	// indirectly referred by cloneEle
+	// styleQName is style:name
+	// all the style are defined in srcStyleNodeList
+	// and these style are all have the styleName defined in styleQName
+	// attribute
+	// the key of copyStyleEleList is the style definition element
+	// the value of the corresponding key is the clone of the element which
+	// refer to the key,
+	// the cloned element can be the content of slide or the style element.
+	// the key of appendStyleList is the style definition element which has the
+	// other style reference
+	// the value of the corresponding key is the the style definition clone
+	// element
+	// loop means if recursive call this function
+	// if loop == true, get the style definition element reference other style
+	// definition element
+	private void getCopyStyleList(OdfElement ele, OdfElement cloneEle, String styleQName, NodeList srcStyleNodeList,
+			IdentityHashMap<OdfElement, List<OdfElement>> copyStyleEleList, IdentityHashMap<OdfElement, OdfElement> appendStyleList, List<String> attrStrList,
+			boolean loop) {
+		try {
+			String styleLocalName = OdfNamespace.getLocalPart(styleQName);
+			String stylePrefix = OdfNamespace.getPrefixPart(styleQName);
+			String styleURI = OdfDocumentNamespace.STYLE.getUri();
+			if (stylePrefix.equals("draw"))
+				styleURI = OdfDocumentNamespace.DRAW.getUri();
+			// OdfElement override the "toString" method
+			String cloneEleStr = cloneEle.toString();
+			for (int i = 0; i < srcStyleNodeList.getLength(); i++) {
+				OdfElement styleElement = (OdfElement) srcStyleNodeList.item(i);
+				String styleName = styleElement.getAttributeNS(styleURI, styleLocalName);
+				if (styleName != null) {
+					int index = 0;
+					index = cloneEleStr.indexOf("=\"" + styleName + "\"", index);
+					while (index >= 0) {
+						String subStr = cloneEleStr.substring(0, index);
+						int lastSpaceIndex = subStr.lastIndexOf(' ');
+						String attrStr = subStr.substring(lastSpaceIndex + 1, index);
+						if (attrStr.equals(styleQName) || attrStrList.contains(attrStr + "=" + "\"" + styleName + "\"")) {
+							index = cloneEleStr.indexOf("=\"" + styleName + "\"", index + styleName.length());
+							continue;
+						}
+						attrStrList.add(attrStr + "=" + "\"" + styleName + "\"");
+						XPath xpath = ((OdfFileDom) cloneEle.getOwnerDocument()).getXPath();
+						NodeList styleRefNodes = (NodeList) xpath.evaluate(".//*[@" + attrStr + "='" + styleName + "']", cloneEle, XPathConstants.NODESET);
+						boolean isExist = false;
+						for (int j = 0; j <= styleRefNodes.getLength(); j++) {
+							OdfElement styleRefElement = null;
+							if (j == styleRefNodes.getLength()) {
+								isExist = isStyleNameRefExist(cloneEle, styleName, false);
+								if (isExist) {
+									styleRefElement = cloneEle;
+								} else {
+									continue;
+								}
+							} else {
+								OdfElement tmpElement = (OdfElement) styleRefNodes.item(j);
+								if (isStyleNameRefExist(tmpElement, styleName, false)) {
+									styleRefElement = tmpElement;
+								} else {
+									continue;
+								}
+							}
+							boolean hasLoopStyleDef = true;
+							if (!(styleElement instanceof StyleFontFaceElement)) {
+							if (copyStyleEleList.get(styleElement) == null) {
+								List<OdfElement> styleRefEleList = new ArrayList<OdfElement>();
+								copyStyleEleList.put(styleElement, styleRefEleList);
+								hasLoopStyleDef = false;
+							}
+							copyStyleEleList.get(styleElement).add(styleRefElement);
+							}
+
+							OdfElement cloneStyleElement = appendStyleList.get(styleElement);
+							if (cloneStyleElement == null) {
+								cloneStyleElement = (OdfElement) styleElement.cloneNode(true);
+								appendStyleList.put(styleElement, cloneStyleElement);
+							}
+							if (loop && !hasLoopStyleDef) {
+								getCopyStyleList(styleElement, cloneStyleElement, styleQName, srcStyleNodeList, copyStyleEleList, appendStyleList, attrStrList,
+										loop);
+							}
+						}
+						index = cloneEleStr.indexOf("=\"" + styleName + "\"", index + styleName.length());
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	// append the cloneStyleElement to the contentDom which position is defined
+	// by styleElePath
+	private void appendForeignStyleElement(OdfElement cloneStyleEle, OdfFileDom dom, String styleElePath) {
+		StringTokenizer token = new StringTokenizer(styleElePath, "/");
+		boolean isExist = true;
+		boolean found = false;
+		Node iterNode = dom.getFirstChild();
+		Node parentNode = dom;
+		while (token.hasMoreTokens()) {
+			String onePath = token.nextToken();
+			found = false;
+
+			while ((iterNode != null) && isExist) {
+				String path = iterNode.getNamespaceURI();
+				String prefix = iterNode.getPrefix();
+				if (prefix == null) {
+					path += "@" + iterNode.getLocalName();
+				} else {
+					path += "@" + prefix + ":" + iterNode.getLocalName();
+				}
+				if (!path.equals(onePath)) {
+					// not found, then get the next sibling to find such path
+					// node
+					iterNode = iterNode.getNextSibling();
+				} else {
+					// found, then get the child nodes to find the next path
+					// node
+					parentNode = iterNode;
+					found = true;
+					iterNode = iterNode.getFirstChild();
+					break;
+				}
+			}
+
+			if (!found) {
+				// should new the element since the current path node
+				if (isExist) {
+					isExist = false;
+				}
+				StringTokenizer token2 = new StringTokenizer(onePath, "@");
+				OdfElement newElement = dom.createElementNS(OdfName.newName(token2.nextToken(), token2.nextToken()));
+				parentNode.appendChild(newElement);
+				parentNode = newElement;
+			}
+		}
+		parentNode.appendChild(cloneStyleEle);
+	}
+
+	// The returned string is a path from the top of the dom tree to the
+	// specified element
+	// and the path is split by "/" between each node
+	private String getElementPath(OdfElement styleEle) {
+		String path = "";
+		Node parentNode = styleEle.getParentNode();
+		while (!(parentNode instanceof OdfFileDom)) {
+			String qname = null;
+			String prefix = parentNode.getPrefix();
+			if (prefix == null) {
+				qname = parentNode.getLocalName();
+			} else {
+				qname = prefix + ":" + parentNode.getLocalName();
+			}
+			path = parentNode.getNamespaceURI() + "@" + qname + "/" + path;
+			parentNode = parentNode.getParentNode();
+		}
+		return path;
+	}
+
+	// change the element referred oldStyleName to the new name
+	// if true then set newStyleName attribute value successfully
+	// if false means that the newStyleName value is not conform to the ODF
+	// spec, so do not modify the oldStyleName
+	private boolean changeStyleRefName(List<OdfElement> list, String oldStyleName, String newStyleName) {
+		boolean rtn = false;
+		for (int index = 0; index < list.size(); index++) {
+			OdfElement element = list.get(index);
+			NamedNodeMap attributes = element.getAttributes();
+
+			if (attributes != null) {
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node item = attributes.item(i);
+					String value = item.getNodeValue();
+					if (oldStyleName.equals(value)) {
+						try {
+							item.setNodeValue(newStyleName);
+							rtn = true;
+							break;
+						} catch (IllegalArgumentException e) {
+							return false;
+						}
+					}
+				}
+			}
+		}
+		return rtn;
+	}
+
+	// check if the element contains the referred styleName
+	private boolean isStyleNameRefExist(Node element, String styleName, boolean deep) {
+		NamedNodeMap attributes = element.getAttributes();
+		if (attributes != null) {
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node item = attributes.item(i);
+				if (item.getNodeValue().equals(styleName) && !item.getNodeName().equals("style:name")) {
+					// this is style definition, not reference.
+					return true;
+				}
+			}
+		}
+		if (deep) {
+			Node childNode = element.getFirstChild();
+			while (childNode != null) {
+				if (!isStyleNameRefExist(childNode, styleName, true)) {
+					childNode = childNode.getNextSibling();
+				} else {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	// check if nodeList contains the node that "style:name" attribute has the
+	// same value with styleName
+	// Note: nodeList here is all the style definition list
+	private OdfElement isStyleNameExist(NodeList nodeList, String styleName) {
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			OdfElement element = (OdfElement) nodeList.item(i);
+			String name = element.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "name");
+			if (name.equals(styleName)) {
+				// return true;
+				return element;
+			}
+		}
+		// return false;
+		return null;
+	}
+
+	/**
+	 * 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
+	 */
+	// delete all the xlink:href object which is contained in slideElement and
+	// does not referred by other slides
+	boolean deleteLinkedRef(OdfElement odfEle) {
+		boolean success = true;
+		try {
+			OdfFileDom contentDom = getContentDom();
+			XPath xpath = contentDom.getXPath();
+			NodeList linkNodes = (NodeList) xpath.evaluate("//*[@xlink:href]", contentDom, XPathConstants.NODESET);
+			for (int i = 0; i < linkNodes.getLength(); i++) {
+				OdfElement object = (OdfElement) linkNodes.item(i);
+				String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+				int relation = odfEle.compareDocumentPosition(object);
+				// if slide element contains the returned element which has the
+				// xlink:href reference
+				if ((relation & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0 && refObjPath != null && refObjPath.length() > 0) {
+					// the path of the object is start with "./"
+					NodeList pathNodes = (NodeList) xpath.evaluate("//*[@xlink:href='" + refObjPath + "']", getContentDom(), XPathConstants.NODESET);
+					int refCount = pathNodes.getLength();
+					if (refCount == 1) {
+						// delete "./"
+						if (refObjPath.startsWith("./")) {
+							refObjPath = refObjPath.substring(2);
+						}
+						// check if the current document contains the same path
+						OdfFileEntry fileEntry = getPackage().getFileEntry(refObjPath);
+						if (fileEntry != null) {
+							// it is a stream, such as image, binary file
+							getPackage().remove(refObjPath);
+						} else {
+							// note: if refObjPath is a directory, it must end
+							// with '/'
+							fileEntry = getPackage().getFileEntry(refObjPath + "/");
+							removeDocument(refObjPath);
+						}
+					}
+				}
+			}
+		} catch (XPathExpressionException e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+		}
+		return success;
+	}
+
+	/**
+	 * 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
+	 */
+	boolean deleteStyleRef(OdfElement odfEle) {
+		boolean success = true;
+		try {
+			// method 1:
+			// 1.1. iterate child element of the content element
+			// 1.2. if the child element is an OdfStylableElement, get the
+			// style-name ref count
+			// //////////////
+			// method 2:
+			// 2.1. get the list of the style definition
+			ArrayList<OdfElement> removeStyles = new ArrayList<OdfElement>();
+			OdfOfficeAutomaticStyles autoStyles = getContentDom().getAutomaticStyles();
+
+			NodeList stylesList = autoStyles.getChildNodes();
+			OdfFileDom contentDom = getContentDom();
+			XPath xpath = contentDom.getXPath();
+
+			// 2.2. get the reference of each style which occurred in the
+			// current page
+			for (int i = 0; i < stylesList.getLength(); i++) {
+				Node item = stylesList.item(i);
+				if (item instanceof OdfElement) {
+					OdfElement node = (OdfElement) item;
+					String styleName = node.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "name");
+					if (styleName != null) {
+						// search the styleName contained at the current page
+						// element
+						NodeList styleNodes = (NodeList) xpath.evaluate("//*[@*='" + styleName + "']", contentDom, XPathConstants.NODESET);
+						int styleCnt = styleNodes.getLength();
+						if (styleCnt > 1) {
+							// the first styleName is occurred in the style
+							// definition
+							// so check if the second styleName and last
+							// styleName is occurred in the current page element
+							// if yes, then remove it
+							OdfElement elementFirst = (OdfElement) styleNodes.item(1);
+							OdfElement elementLast = (OdfElement) styleNodes.item(styleCnt - 1);
+							boolean isSamePage = false;
+							if (elementFirst instanceof DrawPageElement) {
+								DrawPageElement tempPage = (DrawPageElement) elementFirst;
+								if (tempPage.equals(odfEle)) {
+									isSamePage = true;
+								}
+							}
+							int relationFirst = odfEle.compareDocumentPosition(elementFirst);
+							int relationLast = odfEle.compareDocumentPosition(elementLast);
+							// if slide element contains the child element which
+							// has the styleName reference
+							if (((relationFirst & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0 && (relationLast & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0)
+									|| (isSamePage && (styleCnt == 1))) {
+								if (node instanceof OdfStyleBase) {
+									removeStyles.add(node);
+								}
+							}
+						} else {
+							continue;
+						}
+					}
+				}
+			}
+			for (int i = 0; i < removeStyles.size(); i++) {
+				autoStyles.removeChild(removeStyles.get(i));
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+		}
+		return success;
+	}
+
+	public Table addTable() {
+		return getTableContainerImpl().addTable();
+	}
+
+	public Table addTable(int numRows, int numCols) {
+		return getTableContainerImpl().addTable(numRows, numCols);
+	}
+
+	public Table getTableByName(String name) {
+		return getTableContainerImpl().getTableByName(name);
+	}
+
+	public java.util.List<Table> getTableList() {
+		return getTableContainerImpl().getTableList();
+	}
+
+	public TableBuilder getTableBuilder() {
+		return getTableContainerImpl().getTableBuilder();
+	}
+
+	protected TableContainer getTableContainerImpl() {
+		if (tableContainerImpl == null) {
+			tableContainerImpl = new TableContainerImpl();
+		}
+		return tableContainerImpl;
+	}
+
+	private class TableContainerImpl extends AbstractTableContainer {
+
+		public OdfElement getTableContainerElement() {
+			OdfElement containerElement = null;
+			try {
+				containerElement = getContentRoot();
+			} catch (Exception e) {
+				Logger.getLogger(Document.class.getName()).log(Level.SEVERE, null, e);
+			}
+			return containerElement;
+		}
+	}
+
+	/**
+	 * Return the component repository of this document.
+	 * 
+	 * @return the component repository of this document.
+	 */
+	protected IdentityHashMap<OdfElement, Component> getComponentMap() {
+		return mComponentRepository;
+	}
+
+	/**
+	 * 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:
+	 * <br>first column - A2
+	 * <br>last column - E2
+	 * <br>first row - A2
+	 * <br>last row - E2
+	 * <br>even rows - B3
+	 * <br>odd rows - B2
+	 * <br>even columns - C2
+	 * <br>odd columns - B2
+	 * <br>body - B2
+	 * <br>first-row-start-column -A1
+	 * <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
+	 *            - the table name which will be used to load styles as template
+	 * @throws Exception
+	 *             - if content DOM could not be initialized
+	 */
+	public TableTemplate LoadTableTemplateFromForeignTable(
+			InputStream templateFileInputStream, String tableName) throws Exception {
+
+		Document doc = Document.loadDocument(templateFileInputStream);
+
+		if (doc == null)
+			throw new IllegalStateException(
+					"Cannot load specified template file.");
+
+		Table table = doc.getTableByName(tableName);
+		if (table == null)
+			throw new IllegalStateException(
+					"Cannot load table template from specified file.");
+
+		if (table.getRowCount() < 5 || table.getColumnCount() < 5)
+			throw new IllegalStateException(
+					"The template cannot be loaded. It should be at least a 5*5 table.");
+
+		TableTemplate template = new TableTemplate(getStylesDom()
+				.newOdfElement(TableTableTemplateElement.class));
+
+		// first-row-start-column
+		Cell cell = table.getCellByPosition(0, 0);
+		cell.getParagraphIterator().hasNext();
+		cell.getParagraphIterator().next().getStyleName();
+		Paragraph para = cell.getParagraphByIndex(0, false);
+		String paraStyle = (para != null ? para.getStyleName() : null);
+		template.setExtendedStyleByType(
+				TableTemplate.ExtendedStyleType.FIRSTROWSTARTCOLUM, cell
+						.getStyleName(), paraStyle);
+		TableTableCellElementBase oldCellEle = cell.getOdfElement();
+		TableTableCellElementBase newCellEle = (TableTableCellElementBase) oldCellEle
+				.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// first-row-end-column
+		cell = table.getCellByPosition(4, 0);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setExtendedStyleByType(
+				TableTemplate.ExtendedStyleType.FIRSTROWENDCOLUMN, cell
+						.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// last-row-start-column
+		cell = table.getCellByPosition(0, 4);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setExtendedStyleByType(
+				TableTemplate.ExtendedStyleType.LASTROWSTARTCOLUMN, cell
+						.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// last-row-end-column
+		cell = table.getCellByPosition(4, 4);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setExtendedStyleByType(
+				TableTemplate.ExtendedStyleType.LASTROWENDCOLUMN, cell
+						.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// first column
+		cell = table.getCellByPosition(0, 1);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableFirstColumnStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// last column
+		cell = table.getCellByPosition(4, 2);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableLastColumnStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// first row
+		cell = table.getCellByPosition(1, 0);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableFirstRowStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// last row
+		cell = table.getCellByPosition(1, 4);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableLastRowStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// body (=odd row/column)
+		cell = table.getCellByPosition(1, 1);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableBodyStyle(cell.getStyleName(), paraStyle);
+		template.setTableOddRowsStyle(cell.getStyleName(), paraStyle);
+		template.setTableOddColumnsStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// even row
+		cell = table.getCellByPosition(1, 2);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableEvenRowsStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		// even row
+		cell = table.getCellByPosition(2, 1);
+		para = cell.getParagraphByIndex(0, false);
+		paraStyle = (para != null ? para.getStyleName() : null);
+		template.setTableEvenColumnsStyle(cell.getStyleName(), paraStyle);
+		oldCellEle = cell.getOdfElement();
+		newCellEle = (TableTableCellElementBase) oldCellEle.cloneNode(true);
+		copyForeignStyleRef(newCellEle, cell.getOwnerDocument());
+
+		return template;
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/GraphicsDocument.java b/trunk/simple/src/main/java/org/odftoolkit/simple/GraphicsDocument.java
new file mode 100644
index 0000000..ca00ced
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/GraphicsDocument.java
@@ -0,0 +1,215 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.io.File;
+import java.io.InputStream;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeDrawingElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+
+/**
+ * This class represents an empty ODF graphics document.
+ * 
+ */
+public class GraphicsDocument extends Document {
+
+	private static final String EMPTY_GRAPHICS_DOCUMENT_PATH = "/OdfGraphicsDocument.odg";
+	static final Resource EMPTY_GRAPHICS_DOCUMENT_RESOURCE = new Resource(EMPTY_GRAPHICS_DOCUMENT_PATH);
+
+	/**
+	 * This enum contains all possible media types of GraphicsDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		GRAPHICS(Document.OdfMediaType.GRAPHICS), GRAPHICS_TEMPLATE(Document.OdfMediaType.GRAPHICS_TEMPLATE);
+		private final Document.OdfMediaType mMediaType;
+
+		OdfMediaType(Document.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 * 
+		 * @param mediaType
+		 *            string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and
+		 *         the suffix
+		 */
+		public static Document.OdfMediaType getOdfMediaType(String mediaType) {
+			return Document.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty graphics document.
+	 * 
+	 * @return ODF graphics document based on a default template
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static GraphicsDocument newGraphicsDocument() throws Exception {
+		return (GraphicsDocument) Document.loadTemplate(EMPTY_GRAPHICS_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.GRAPHICS);
+	}
+
+	/**
+	 * Creates an empty graphics template.
+	 * 
+	 * @return ODF graphics template based on a default
+	 * @throws java.lang.Exception
+	 *             - if the template could not be created
+	 */
+	public static GraphicsDocument newGraphicsTemplateDocument() throws Exception {
+		GraphicsDocument doc = (GraphicsDocument) Document.loadTemplate(EMPTY_GRAPHICS_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.GRAPHICS_TEMPLATE);
+		doc.changeMode(OdfMediaType.GRAPHICS_TEMPLATE);
+		return doc;
+	}
+
+	/**
+	 * To avoid data duplication a new document is only created, if not already
+	 * opened. A document is cached by this constructor using the internalpath
+	 * as key.
+	 */
+	protected GraphicsDocument(OdfPackage pkg, String internalPath, GraphicsDocument.OdfMediaType odfMediaType) {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Creates an GraphicsDocument from the OpenDocument provided by a resource
+	 * Stream.
+	 * 
+	 * <p>
+	 * Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by GraphicsDocument, the InputStream is cached. This
+	 * usually takes more time compared to the other createInternalDocument
+	 * methods. An advantage of caching is that there are no problems
+	 * overwriting an input file.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF graphics document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param inputStream
+	 *            - the InputStream of the ODF graphics document.
+	 * @return the graphics document created from the given InputStream
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static GraphicsDocument loadDocument(InputStream inputStream) throws Exception {
+		return (GraphicsDocument) Document.loadDocument(inputStream);
+	}
+
+	/**
+	 * Loads an GraphicsDocument from the provided path.
+	 * 
+	 * <p>
+	 * GraphicsDocument relies on the file being available for read access over
+	 * the whole lifecycle of GraphicsDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF graphics document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param documentPath
+	 *            - the path from where the document can be loaded
+	 * @return the graphics document from the given path or NULL if the media
+	 *         type is not supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static GraphicsDocument loadDocument(String documentPath) throws Exception {
+		return (GraphicsDocument) Document.loadDocument(documentPath);
+	}
+
+	/**
+	 * Creates an GraphicsDocument from the OpenDocument provided by a File.
+	 * 
+	 * <p>
+	 * GraphicsDocument relies on the file being available for read access over
+	 * the whole lifecycle of GraphicsDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF graphics document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param file
+	 *            - a file representing the ODF graphics document.
+	 * @return the graphics document created from the given File
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static GraphicsDocument loadDocument(File file) throws Exception {
+		return (GraphicsDocument) Document.loadDocument(file);
+	}
+
+	/**
+	 * Get the content root of a graphics document.
+	 * 
+	 * @return content root, representing the office:drawing tag
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeDrawingElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeDrawingElement.class);
+	}
+
+	/**
+	 * Changes the document to the given mediatype. This method can only be used
+	 * to convert a document to a related mediatype, e.g. template.
+	 * 
+	 * @param mediaType
+	 *            the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+
+	public OdfElement getTableContainerElement() {
+		throw new UnsupportedOperationException("Graphics document is not supported to hold table now.");
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/JarManifest.java b/trunk/simple/src/main/java/org/odftoolkit/simple/JarManifest.java
new file mode 100644
index 0000000..c0bbeba
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/JarManifest.java
@@ -0,0 +1,174 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Provides meta data about the Simple ODF library as build date, version
+ * number. Its main() method is the start method of the library, enabling the
+ * access of version methods from command line: "java -jar simple-odf.jar".
+ */
+public class JarManifest {
+
+	private static final String CURRENT_CLASS_RESOURCE_PATH = "org/odftoolkit/simple/JarManifest.class";
+	private static final String MANIFEST_JAR_PATH = "META-INF/MANIFEST.MF";
+	private static String SIMPLE_ODF_NAME;
+	private static String SIMPLE_ODF_VERSION;
+	private static String SIMPLE_ODF_WEBSITE;
+	private static String SIMPLE_ODF_BUILD_BY;
+	private static String SIMPLE_ODF_BUILD_DATE;
+	private static String SIMPLE_ODF_SUPPORTED_ODF_VERSION;
+
+	static {
+		try {
+			Manifest manifest = new Manifest(getManifestAsStream());
+			Attributes attr = manifest.getEntries().get("SIMPLE-ODF");
+			SIMPLE_ODF_NAME = attr.getValue("SIMPLE-ODF-Name");
+			SIMPLE_ODF_VERSION = attr.getValue("SIMPLE-ODF-Version");
+			SIMPLE_ODF_WEBSITE = attr.getValue("SIMPLE-ODF-Website");
+			SIMPLE_ODF_BUILD_BY = attr.getValue("SIMPLE-ODF-Built-By");
+			SIMPLE_ODF_BUILD_DATE = attr.getValue("SIMPLE-ODF-Built-Date");
+			SIMPLE_ODF_SUPPORTED_ODF_VERSION = attr.getValue("SIMPLE-ODF-Supported-ODF-Version");
+		} catch (Exception e) {
+			Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE,
+					null, e);
+		}
+	}
+
+	private static InputStream getManifestAsStream() {
+		String versionRef = JarManifest.class.getClassLoader().getResource(
+				CURRENT_CLASS_RESOURCE_PATH).toString();
+		String manifestRef = versionRef.substring(0, versionRef
+				.lastIndexOf(CURRENT_CLASS_RESOURCE_PATH))
+				+ MANIFEST_JAR_PATH;
+		URL manifestURL = null;
+		InputStream in = null;
+		try {
+			manifestURL = new URL(manifestRef);
+		} catch (MalformedURLException ex) {
+			Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE,
+					null, ex);
+		}
+		try {
+			in = manifestURL.openStream();
+		} catch (IOException ex) {
+			Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE,
+					null, ex);
+		}
+		return in;
+	}
+
+	private JarManifest() {
+	}
+
+	/**
+	 * The main method is meant to be called when the JAR is being executed,
+	 * e.g. "java -jar simple-odf.jar" and provides version information:
+	 * 
+	 * simple-odf 0.3 (build 20110201-1729) from http://odftoolkit.org
+	 * supporting ODF 1.2
+	 * 
+	 * Allowing version access from the JAR without the need to unzip the JAR
+	 * nor naming the JAR (requiring the change of class path for every version
+	 * due to JAR naming change).
+	 */
+	public static void main(String[] args) throws IOException {
+		System.out.println(getSimpleOdfTitle() + " (build "
+				+ getSimpleOdfBuildDate() + ')' + "\nfrom "
+				+ getSimpleOdfWebsite() + " supporting ODF "
+				+ getSimpleOdfSupportedOdfVersion());
+	}
+
+	/**
+	 * Return the name of Simple ODF;
+	 * 
+	 * @return the Simple ODF library name
+	 */
+	public static String getSimpleOdfName() {
+		return SIMPLE_ODF_NAME;
+	}
+
+	/**
+	 * Returns the Simple ODF library title
+	 * 
+	 * @return A string containing both the name and the version of the Simple
+	 *         ODF library.
+	 */
+	public static String getSimpleOdfTitle() {
+		return getSimpleOdfName() + ' ' + getSimpleOdfVersion();
+	}
+
+	/**
+	 * Return the version of the Simple ODF library (ie. simple-odf.jar)
+	 * 
+	 * @return the Simple ODF library version
+	 */
+	public static String getSimpleOdfVersion() {
+		return SIMPLE_ODF_VERSION;
+	}
+
+	/**
+	 * Return the website of the Simple ODF library (ie. simple-odf.jar)
+	 * 
+	 * @return the Simple ODF library website
+	 */
+	public static String getSimpleOdfWebsite() {
+		return SIMPLE_ODF_WEBSITE;
+	}
+
+	/**
+	 * Return the name of the one building the Simple ODF library (ie.
+	 * simple-odf.jar)
+	 * 
+	 * @return the name of the Simple ODF library builder
+	 */
+	public static String getSimpleOdfBuildResponsible() {
+		return SIMPLE_ODF_BUILD_BY;
+	}
+
+	/**
+	 * Return the date when Simple ODF had been build
+	 * 
+	 * @return the date of the build
+	 */
+	public static String getSimpleOdfBuildDate() {
+		return SIMPLE_ODF_BUILD_DATE;
+	}
+
+	/**
+	 * Returns the version of the OpenDocument specification covered by the
+	 * Simple ODF library (ie. simple-odf.jar)
+	 * 
+	 * @return the supported ODF version number
+	 */
+	public static String getSimpleOdfSupportedOdfVersion() {
+		return SIMPLE_ODF_SUPPORTED_ODF_VERSION;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/PresentationDocument.java b/trunk/simple/src/main/java/org/odftoolkit/simple/PresentationDocument.java
new file mode 100644
index 0000000..9546620
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/PresentationDocument.java
@@ -0,0 +1,964 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.awt.Rectangle;
+import java.io.File;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.xpath.XPathConstants;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageThumbnailElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.chart.AbstractChartContainer;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.chart.ChartContainer;
+import org.odftoolkit.simple.chart.DataSet;
+import org.odftoolkit.simple.presentation.Slide;
+import org.odftoolkit.simple.presentation.Notes.NotesBuilder;
+import org.odftoolkit.simple.presentation.Slide.SlideBuilder;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class represents an empty ODF presentation.
+ */
+public class PresentationDocument extends Document implements ChartContainer{
+
+	private static final String EMPTY_PRESENTATION_DOCUMENT_PATH = "/OdfPresentationDocument.odp";
+	static final Resource EMPTY_PRESENTATION_DOCUMENT_RESOURCE = new Resource(EMPTY_PRESENTATION_DOCUMENT_PATH);
+	private final SlideBuilder slideBuilder;
+	private final NotesBuilder notesBuilder;
+	private ChartContainerImpl chartContainerImpl;
+	
+	/**
+	 * It represents the defined values of presentation:class. The
+	 * presentation:class attribute classifies presentation shapes by their
+	 * usage within a draw page.
+	 * 
+	 * @since 0.5
+	 */
+	public static enum PresentationClass {
+		/**
+		 * presentation charts are standard object shapes.
+		 */
+		CHAT("chart"),
+		/**
+		 * presentation graphics are standard graphic shapes.
+		 */
+		GRAPHIC("graphic"),
+		/**
+		 * presentation handouts are placeholder for the drawing page in a
+		 * handout page.
+		 */
+		HANDOUT("handout"),
+		/**
+		 * presentation notes are used on notes pages.
+		 */
+		NOTES("notes"),
+		/**
+		 * presentation objects are standard object shapes.
+		 */
+		OBJECTS("object"),
+		/**
+		 * presentation organization charts are standard object shapes.
+		 */
+		ORGCHART("orgchart"),
+		/**
+		 * outlines are standard text shapes
+		 */
+		OUTLINE("outline"),
+		/**
+		 * presentation pages are used on notes pages
+		 */
+		PAGE("page"),
+		/**
+		 * subtitles are standard text shapes
+		 */
+		SUBTITLE("subtitle"),
+		/**
+		 * presentation tables are standard object shapes
+		 */
+		TABLE("table"),
+		/**
+		 * presentation texts are standard text shapes
+		 */
+		TEXT("text"),
+		/**
+		 * titles are standard text shapes
+		 */
+		TITLE("title"),
+		/**
+		 * drawing shape is used as a date and/or time shape. Date and Time
+		 * shapes are standard text shapes.
+		 */
+		DATETIME("date-time"),
+		/**
+		 * drawing shape is used as a footer. Footer shapes are standard text
+		 * shapes.
+		 */
+		FOOTER("footer"),
+		/**
+		 * drawing shape is used as a header. Header shapes are standard text
+		 * shapes.
+		 */
+		HEADER("header"),
+		/**
+		 * drawing shape is used as a page number shape. Page Number shapes are
+		 * standard text shapes.
+		 */
+		PAGENUMBER("page-number");
+
+		private String value;
+
+		PresentationClass(String aClass) {
+			value = aClass;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+
+		public static PresentationClass enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return null;
+
+			for (PresentationClass aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			throw new RuntimeException("Unsupported Presentation Class!");
+		}
+	}
+	
+	/**
+	 * This enum contains all possible media types of PresentationDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		PRESENTATION(Document.OdfMediaType.PRESENTATION), PRESENTATION_TEMPLATE(
+				Document.OdfMediaType.PRESENTATION_TEMPLATE);
+		private final Document.OdfMediaType mMediaType;
+
+		OdfMediaType(Document.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the ODF mediatype of this document
+		 */
+		public Document.OdfMediaType getOdfMediaType() {
+			return mMediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 * 
+		 * @param mediaType
+		 *            string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and
+		 *         the suffix
+		 */
+		public static Document.OdfMediaType getOdfMediaType(String mediaType) {
+			return Document.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty presentation document.
+	 * 
+	 * @return ODF presentation document based on a default template
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static PresentationDocument newPresentationDocument() throws Exception {
+		return (PresentationDocument) Document.loadTemplate(EMPTY_PRESENTATION_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.PRESENTATION);
+	}
+
+	/**
+	 * Creates an empty presentation template.
+	 * 
+	 * @return ODF presentation template based on a default
+	 * @throws Exception
+	 *             - if the template could not be created
+	 */
+	public static PresentationDocument newPresentationTemplateDocument() throws Exception {
+		PresentationDocument doc = (PresentationDocument) Document.loadTemplate(EMPTY_PRESENTATION_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.PRESENTATION_TEMPLATE);
+		doc.changeMode(OdfMediaType.PRESENTATION_TEMPLATE);
+		return doc;
+	}
+
+	/**
+	 * To avoid data duplication a new document is only created, if not already
+	 * opened. A document is cached by this constructor using the internalpath
+	 * as key.
+	 */
+	protected PresentationDocument(OdfPackage pkg, String internalPath, PresentationDocument.OdfMediaType odfMediaType) {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+		slideBuilder = new SlideBuilder(this);
+		notesBuilder = new NotesBuilder(this);
+	}
+
+	/**
+	 * Creates an PresentationDocument from the OpenDocument provided by a
+	 * resource Stream.
+	 * 
+	 * <p>
+	 * Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by PresentationDocument, the InputStream is cached.
+	 * This usually takes more time compared to the other createInternalDocument
+	 * methods. An advantage of caching is that there are no problems
+	 * overwriting an input file.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF presentation document,
+	 * ClassCastException might be thrown.
+	 * </p>
+	 * 
+	 * @param inputStream
+	 *            - the InputStream of the ODF presentation document.
+	 * @return the presentation document created from the given InputStream
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static PresentationDocument loadDocument(InputStream inputStream) throws Exception {
+		return (PresentationDocument) Document.loadDocument(inputStream);
+	}
+
+	/**
+	 * Loads an PresentationDocument from the provided path.
+	 * 
+	 * <p>
+	 * PresentationDocument relies on the file being available for read access
+	 * over the whole lifecycle of PresentationDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF presentation document,
+	 * ClassCastException might be thrown.
+	 * </p>
+	 * 
+	 * @param documentPath
+	 *            - the path from where the document can be loaded
+	 * @return the presentation document from the given path or NULL if the
+	 *         media type is not supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static PresentationDocument loadDocument(String documentPath) throws Exception {
+		return (PresentationDocument) Document.loadDocument(documentPath);
+	}
+
+	/**
+	 * Creates an PresentationDocument from the OpenDocument provided by a File.
+	 * 
+	 * <p>
+	 * PresentationDocument relies on the file being available for read access
+	 * over the whole lifecycle of PresentationDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF presentation document,
+	 * ClassCastException might be thrown.
+	 * </p>
+	 * 
+	 * @param file
+	 *            - a file representing the ODF presentation document.
+	 * @return the presentation document created from the given File
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static PresentationDocument loadDocument(File file) throws Exception {
+		return (PresentationDocument) Document.loadDocument(file);
+	}
+
+	/**
+	 * Get the content root of a presentation document.
+	 * 
+	 * @return content root, representing the office:presentation tag
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 */
+	@Override
+	public OfficePresentationElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficePresentationElement.class);
+	}
+
+	/**
+	 * Switches this instance to the given type. This method can be used to e.g.
+	 * convert a document instance to a template and vice versa. Changes take
+	 * affect in the package when saving the document.
+	 * 
+	 * @param type
+	 *            the compatible ODF mediatype.
+	 */
+	public void changeMode(OdfMediaType type) {
+		setOdfMediaType(type.mMediaType);
+	}
+
+	private boolean hasCheckSlideName = false;
+
+	/**
+	 * Return the slide builder of this document. Every presentation document
+	 * has a slide builder.
+	 * 
+	 * @return the slide builder of this document.
+	 * @since 0.3.5
+	 */
+	public SlideBuilder getSlideBuilder() {
+		return slideBuilder;
+	}
+
+	/**
+	 * Return the notes builder of this document. Every presentation document
+	 * has a notes builder.
+	 * 
+	 * @return the notes builder of this document.
+	 * @since 0.3.5
+	 */
+	public NotesBuilder getNotesBuilder() {
+		return notesBuilder;
+	}
+
+	/**
+	 * Return the slide at a specified position in this presentation. Return
+	 * null if the index is out of range.
+	 * 
+	 * @param index
+	 *            the index of the slide to be returned
+	 * @return a draw slide at the specified position
+	 */
+	public Slide getSlideByIndex(int index) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		if ((index >= slideNodes.getLength()) || (index < 0)) {
+			return null;
+		}
+		DrawPageElement slideElement = (DrawPageElement) slideNodes.item(index);
+		return Slide.getInstance(slideElement);
+	}
+
+	/**
+	 * Get the number of the slides in this presentation.
+	 * 
+	 * @return the number of slides
+	 */
+	public int getSlideCount() {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return 0;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		return slideNodes.getLength();
+	}
+
+	/**
+	 * Return the slide which have a specified slide name in this presentation.
+	 * <p>
+	 * According to the odf specification "The draw:name attribute specifies a
+	 * name by which this element can be referenced. It is optional but if
+	 * present, must be unique within the document instance. If not present, an
+	 * application may generate a unique name."
+	 * <p>
+	 * If the name is null, then return null because all the slide must has its
+	 * own unique name.
+	 * 
+	 * @param name
+	 *            the specified slide name
+	 * @return the slide whose name equals to the specified name
+	 */
+	public Slide getSlideByName(String name) {
+		checkAllSlideName();
+		if (name == null) {
+			return null;
+		}
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideElement = (DrawPageElement) slideNodes.item(i);
+			Slide slide = Slide.getInstance(slideElement);
+			String slideName = slide.getSlideName();
+			if (slideName.equals(name)) {
+				return slide;
+			}
+		}
+		return null;
+	}
+
+	// when access slide related method, this function should be called
+	private void checkAllSlideName() {
+		// check if this function is called or not
+		if (hasCheckSlideName) {
+			return;
+		}
+		List<String> slideNameList = new ArrayList<String>();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideElement = (DrawPageElement) slideNodes.item(i);
+			String slideName = slideElement.getDrawNameAttribute();
+			if ((slideName == null) || slideNameList.contains(slideName)) {
+				slideName = "page" + (i + 1) + "-" + makeUniqueName();
+				slideElement.setDrawNameAttribute(slideName);
+			}
+			slideNameList.add(slideName);
+		}
+		hasCheckSlideName = true;
+	}
+
+	/**
+	 * Return a list iterator containing all slides in this presentation.
+	 * 
+	 * @return a list iterator containing all slides in this presentation
+	 */
+	public Iterator<Slide> getSlides() {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		ArrayList<Slide> slideList = new ArrayList<Slide>();
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideElement = (DrawPageElement) slideNodes.item(i);
+			slideList.add(Slide.getInstance(slideElement));
+		}
+		return slideList.iterator();
+	}
+
+	/**
+	 * Delete the slide at a specified position in this presentation.
+	 * 
+	 * @param index
+	 *            the index of the slide that need to be delete
+	 *            <p>
+	 *            Throw IndexOutOfBoundsException if the slide index is out of
+	 *            the presentation document slide count.
+	 * @return false if the operation was not successful
+	 */
+	public boolean deleteSlideByIndex(int index) {
+		boolean success = true;
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+			return success;
+		}
+		NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		if ((index >= slideNodes.getLength()) || (index < 0)) {
+			throw new IndexOutOfBoundsException(
+					"the specified Index is out of slide count when call deleteSlideByIndex method.");
+		}
+		DrawPageElement slideElement = (DrawPageElement) slideNodes.item(index);
+		// remove all the content of the current page
+		// 1. the reference of the path that contained in this slide is 1, then
+		// remove it
+		// success &= deleteLinkedRef(slideElement);
+		// 2.the reference of the style is 1, then remove it
+		// in order to save time, do not delete the style here
+		// success &= deleteStyleRef(slideElement);
+		// these two methods have been merged into 1 method
+		success &= removeElementLinkedResource(slideElement);
+		// remove the current page element
+		contentRoot.removeChild(slideElement);
+		adjustNotePageNumber(index);
+		return success;
+	}
+
+	/**
+	 * Delete all the slides with a specified name in this presentation.
+	 * 
+	 * @param name
+	 *            the name of the slide that need to be delete
+	 * @return false if the operation was not successful
+	 */
+	public boolean deleteSlideByName(String name) {
+		boolean success = true;
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			success = false;
+			return success;
+		}
+		Slide slide = getSlideByName(name);
+		DrawPageElement slideElement = slide.getOdfElement();
+		// remove all the content of the current page
+		// 1. the reference of the path that contained in this slide is 1, then
+		// remove its
+		success &= deleteLinkedRef(slideElement);
+		// 2.the reference of the style is 1, then remove it
+		// in order to save time, do not delete style here
+		success &= deleteStyleRef(slideElement);
+		// remove the current page element
+		contentRoot.removeChild(slideElement);
+		adjustNotePageNumber(0);
+		return success;
+	}
+
+	/**
+	 * Make a copy of the slide at a specified position to another position in
+	 * this presentation. The original slide which at the dest index and after
+	 * the dest index will move after.
+	 * <p>
+	 * 
+	 * @param source
+	 *            the source position of the slide need to be copied
+	 * @param dest
+	 *            the destination position of the slide need to be copied
+	 * @param newName
+	 *            the new name of the copied slide
+	 * @return the new slide at the destination position with the specified
+	 *         name, and it has the same content with the slide at the source
+	 *         position.
+	 *         <p>
+	 *         Throw IndexOutOfBoundsException if the slide index is out of the
+	 *         presentation document slide count. If copy the slide at the end
+	 *         of document, destIndex should set the same value with the slide
+	 *         count.
+	 */
+	public Slide copySlide(int source, int dest, String newName) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((source < 0) || (source >= slideCount) || (dest < 0) || (dest > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call copySlide method.");
+		}
+		DrawPageElement sourceSlideElement = (DrawPageElement) slideList.item(source);
+		DrawPageElement cloneSlideElement = (DrawPageElement) sourceSlideElement.cloneNode(true);
+		cloneSlideElement.setDrawNameAttribute(newName);
+		if (dest == slideCount) {
+			contentRoot.appendChild(cloneSlideElement);
+		} else {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(dest);
+			contentRoot.insertBefore(cloneSlideElement, refSlide);
+		}
+		adjustNotePageNumber(Math.min(source, dest));
+		// in case that the appended new slide have the same name with the
+		// original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+		return Slide.getInstance(cloneSlideElement);
+	}
+
+	/**
+	 * Move the slide at a specified position to the destination position.
+	 * 
+	 * @param source
+	 *            the current index of the slide that need to be moved
+	 * @param dest
+	 *            The index of the destination position before the move action
+	 *            <p>
+	 *            Throw IndexOutOfBoundsException if the slide index is out of
+	 *            the presentation document slide count.
+	 */
+	public void moveSlide(int source, int dest) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((source < 0) || (source >= slideCount) || (dest < 0) || (dest > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call moveSlide method.");
+		}
+		DrawPageElement sourceSlide = (DrawPageElement) slideList.item(source);
+		if (dest == slideCount) {
+			contentRoot.appendChild(sourceSlide);
+		} else {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(dest);
+			contentRoot.insertBefore(sourceSlide, refSlide);
+		}
+		adjustNotePageNumber(Math.min(source, dest));
+	}
+
+	private Node cloneForeignElement_(Node element, OdfFileDom dom, boolean deep) {
+		checkAllSlideName();
+		return cloneForeignElement(element, dom, deep);
+	}
+
+	/**
+	 * Append all the slides of the specified presentation document to the
+	 * current document.
+	 * 
+	 * @param srcDoc
+	 *            the specified <code>PresentationDocument</code> that need to
+	 *            be appended
+	 */
+	public void appendPresentation(PresentationDocument srcDoc) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		OdfFileDom contentDom = null;
+		OfficePresentationElement srcContentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+			contentDom = getContentDom();
+			srcContentRoot = srcDoc.getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideNum = slideList.getLength();
+		// clone the srcContentRoot, and make a modification on this clone node.
+		OfficePresentationElement srcCloneContentRoot = (OfficePresentationElement) srcContentRoot.cloneNode(true);
+		// copy all the referred xlink:href here
+		copyLinkedRefInBatch(srcCloneContentRoot, srcDoc);
+		// copy all the referred style definition here
+		copyForeignStyleRef(srcCloneContentRoot, srcDoc);
+		Node child = srcCloneContentRoot.getFirstChild();
+		while (child != null) {
+			Node cloneElement = cloneForeignElement_(child, contentDom, true);
+			contentRoot.appendChild(cloneElement);
+			child = child.getNextSibling();
+		}
+		adjustNotePageNumber(slideNum - 1);
+
+		// in case that the appended new slide have the same name with the
+		// original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+	}
+
+	/**
+	 * Make a copy of slide which locates at the specified position of the
+	 * source presentation document and insert it to the current presentation
+	 * document at the new position. The original slide which at the dest index
+	 * and after the dest index will move after.
+	 * 
+	 * @param destIndex
+	 *            the new position of the copied slide in the current document
+	 * @param srcDoc
+	 *            the source document of the copied slide
+	 * @param srcIndex
+	 *            the slide index of the source document that need to be copied
+	 * @return the new slide which has the same content with the source slide
+	 *         <p>
+	 *         Throw IndexOutOfBoundsException if the slide index is out of the
+	 *         presentation document slide count If insert the foreign slide at
+	 *         the end of document, destIndex should set the same value with the
+	 *         slide count of the current presentation document.
+	 */
+	public Slide copyForeignSlide(int destIndex, PresentationDocument srcDoc, int srcIndex) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		OdfFileDom contentDom = null;
+		try {
+			contentRoot = getContentRoot();
+			contentDom = getContentDom();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((destIndex < 0) || (destIndex > slideCount)) {
+			throw new IndexOutOfBoundsException(
+					"the specified Index is out of slide count when call copyForeignSlide method.");
+		}
+		Slide sourceSlide = srcDoc.getSlideByIndex(srcIndex);
+		DrawPageElement sourceSlideElement = sourceSlide.getOdfElement();
+		// clone the sourceSlideEle, and make a modification on this clone node.
+		DrawPageElement sourceCloneSlideElement = (DrawPageElement) sourceSlideElement.cloneNode(true);
+
+		// copy all the referred xlink:href here
+		copyLinkedRefInBatch(sourceCloneSlideElement, srcDoc);
+		// copy all the referred style definition here
+		copyForeignStyleRef(sourceCloneSlideElement, srcDoc);
+		// clone the sourceCloneSlideEle, and this cloned element should in the
+		// current dom tree
+		DrawPageElement cloneSlideElement = (DrawPageElement) cloneForeignElement_(sourceCloneSlideElement, contentDom,
+				true);
+		if (destIndex == slideCount) {
+			contentRoot.appendChild(cloneSlideElement);
+		} else {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(destIndex);
+			contentRoot.insertBefore(cloneSlideElement, refSlide);
+		}
+		adjustNotePageNumber(destIndex);
+		// in case that the appended new slide have the same name with the
+		// original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+		return Slide.getInstance(cloneSlideElement);
+	}
+
+	/**
+	 * New a slide at the specified position with the specified name, and use
+	 * the specified slide template. See <code>OdfDrawPage.SlideLayout</code>.
+	 * <p>
+	 * If index is invalid, such as larger than the current document slide
+	 * number or is negative, then append the new slide at the end of the
+	 * document.
+	 * <p>
+	 * The slide name can be null.
+	 * 
+	 * @param index
+	 *            the new slide position
+	 * @param name
+	 *            the new slide name
+	 * @param slideLayout
+	 *            the new slide template
+	 * @return the new slide which locate at the specified position with the
+	 *         specified name and apply the specified slide template. If
+	 *         slideLayout is null, then use the default slide template which is
+	 *         a blank slide.
+	 *         <p>
+	 *         Throw IndexOutOfBoundsException if index is out of the
+	 *         presentation document slide count.
+	 */
+	public Slide newSlide(int index, String name, Slide.SlideLayout slideLayout) {
+		checkAllSlideName();
+		OfficePresentationElement contentRoot = null;
+		try {
+			contentRoot = getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+			return null;
+		}
+		NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		int slideCount = slideList.getLength();
+		if ((index < 0) || (index > slideCount)) {
+			throw new IndexOutOfBoundsException("the specified Index is out of slide count when call newSlide method.");
+		}
+		// if insert page at the beginning of the document,
+		// get the next page style as the new page style
+		// else get the previous page style as the new page style
+		DrawPageElement refStyleSlide = null;
+		int refSlideIndex = 0;
+		if (index > 0) {
+			refSlideIndex = index - 1;
+		}
+		refStyleSlide = (DrawPageElement) slideList.item(refSlideIndex);
+		String masterPageStyleName = "Default";
+		String masterName = refStyleSlide.getDrawMasterPageNameAttribute();
+		if (masterName != null) {
+			masterPageStyleName = masterName;
+		}
+		DrawPageElement newSlideElement = contentRoot.newDrawPageElement(masterPageStyleName);
+		newSlideElement.setDrawNameAttribute(name);
+		String drawStyleName = refStyleSlide.getDrawStyleNameAttribute();
+		if (drawStyleName != null) {
+			newSlideElement.setDrawStyleNameAttribute(drawStyleName);
+		}
+		String pageLayoutName = refStyleSlide.getPresentationPresentationPageLayoutNameAttribute();
+		if (pageLayoutName != null) {
+			newSlideElement.setPresentationPresentationPageLayoutNameAttribute(pageLayoutName);
+		}
+		setSlideLayout(newSlideElement, slideLayout);
+		// insert notes page
+		NodeList noteNodes = refStyleSlide.getElementsByTagNameNS(OdfDocumentNamespace.PRESENTATION.getUri(), "notes");
+		if (noteNodes.getLength() > 0) {
+			PresentationNotesElement notePage = (PresentationNotesElement) noteNodes.item(0);
+			PresentationNotesElement cloneNotePage = (PresentationNotesElement) notePage.cloneNode(true);
+			newSlideElement.appendChild(cloneNotePage);
+		}
+		if (index < slideCount) {
+			DrawPageElement refSlide = (DrawPageElement) slideList.item(index);
+			contentRoot.insertBefore(newSlideElement, refSlide);
+		}
+		adjustNotePageNumber(index);
+		// in case that the appended new slide have the same name with the
+		// original slide
+		hasCheckSlideName = false;
+		checkAllSlideName();
+		return Slide.getInstance(newSlideElement);
+	}
+	
+	public Chart createChart(String title, DataSet dataset, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, dataset, rect);
+	}
+
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr, boolean firstRowAsLabel,
+			boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, document, cellRangeAddr, firstRowAsLabel, firstColumnAsLabel,
+				rowAsDataSeries, rect);
+	}
+
+	public Chart createChart(String title, String[] labels, String[] legends, double[][] data, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, labels, legends, data, rect);
+	}
+
+	public void deleteChartById(String chartId) {
+		getChartContainerImpl().deleteChartById(chartId);
+	}
+
+	public void deleteChartByTitle(String title) {
+		getChartContainerImpl().deleteChartByTitle(title);
+	}
+
+	public Chart getChartById(String chartId) {
+		return getChartContainerImpl().getChartById(chartId);
+	}
+
+	public List<Chart> getChartByTitle(String title) {
+		return getChartContainerImpl().getChartByTitle(title);
+	}
+
+	public int getChartCount() {
+		return getChartContainerImpl().getChartCount();
+	}
+	
+	// when insert a slide, the note page for this slide is also inserted.
+	// note page refer the slide index in order to show the corresponding slide
+	// notes view
+	// this function is used to adjust note page referred slide index since
+	// startIndex
+	// when the slide at startIndex has been delete or insert
+	private void adjustNotePageNumber(int startIndex) {
+		try {
+			OfficePresentationElement contentRoot = getContentRoot();
+			NodeList slideList = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+			for (int i = startIndex; i < getSlideCount(); i++) {
+				DrawPageElement page = (DrawPageElement) slideList.item(i);
+				NodeList noteNodes = page.getElementsByTagNameNS(OdfDocumentNamespace.PRESENTATION.getUri(), "notes");
+				if (noteNodes.getLength() > 0) {
+					PresentationNotesElement notePage = (PresentationNotesElement) noteNodes.item(0);
+					NodeList thumbnailList = notePage.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(),
+							"page-thumbnail");
+					if (thumbnailList.getLength() > 0) {
+						DrawPageThumbnailElement thumbnail = (DrawPageThumbnailElement) thumbnailList.item(0);
+						thumbnail.setDrawPageNumberAttribute(i + 1);
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(PresentationDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	// covered element
+	// <presentation:notes>, <draw:page-thumbnail>, <draw:frame>
+	// <style:presentation-page-layout>
+	private void setSlideLayout(DrawPageElement page, Slide.SlideLayout slideLayout) {
+		if (slideLayout == null) {
+			slideLayout = Slide.SlideLayout.BLANK;
+		}
+		slideLayout.apply(page);
+	}
+
+	public OdfElement getTableContainerElement() {
+		throw new UnsupportedOperationException("Presentation document is not supported to hold table directly.");
+	}
+	
+	private ChartContainerImpl getChartContainerImpl() {
+		if (chartContainerImpl == null) {
+			chartContainerImpl = new ChartContainerImpl(this);
+		}
+		return chartContainerImpl;
+	}
+	
+	private class ChartContainerImpl extends AbstractChartContainer {
+		PresentationDocument sdoc;
+
+		protected ChartContainerImpl(Document doc) {
+			super(doc);
+			sdoc = (PresentationDocument) doc;
+		}
+
+		protected DrawFrameElement getChartFrame() throws Exception {
+			OdfContentDom contentDom2 = sdoc.getContentDom();
+			DrawFrameElement drawFrame = contentDom2.newOdfElement(DrawFrameElement.class);
+			DrawPageElement lastPage = (DrawPageElement) contentDom2.getXPath().evaluate("//draw:page[last()]",
+					contentDom2, XPathConstants.NODE);
+			lastPage.appendChild(drawFrame);
+			drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+			return drawFrame;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/SpreadsheetDocument.java b/trunk/simple/src/main/java/org/odftoolkit/simple/SpreadsheetDocument.java
new file mode 100644
index 0000000..12b96b9
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/SpreadsheetDocument.java
@@ -0,0 +1,666 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.awt.Rectangle;
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.xpath.XPathConstants;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.chart.AbstractChartContainer;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.chart.ChartContainer;
+import org.odftoolkit.simple.chart.DataSet;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.TableContainer;
+import org.w3c.dom.Node;
+
+/**
+ * This class represents an empty ODF spreadsheet document.
+ * 
+ */
+public class SpreadsheetDocument extends Document implements ChartContainer {
+
+	private static final String EMPTY_SPREADSHEET_DOCUMENT_PATH = "/OdfSpreadsheetDocument.ods";
+	static final Resource EMPTY_SPREADSHEET_DOCUMENT_RESOURCE = new Resource(EMPTY_SPREADSHEET_DOCUMENT_PATH);
+	private ChartContainerImpl chartContainerImpl;
+	/**
+	 * This enum contains all possible media types of SpreadsheetDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		SPREADSHEET(Document.OdfMediaType.SPREADSHEET), SPREADSHEET_TEMPLATE(Document.OdfMediaType.SPREADSHEET_TEMPLATE);
+		private final Document.OdfMediaType mMediaType;
+
+		OdfMediaType(Document.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 * 
+		 * @param mediaType
+		 *            string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and
+		 *         the suffix
+		 */
+		public static Document.OdfMediaType getOdfMediaType(String mediaType) {
+			return Document.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty spreadsheet document.
+	 * 
+	 * @return ODF spreadsheet document based on a default template*
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static SpreadsheetDocument newSpreadsheetDocument() throws Exception {
+		return (SpreadsheetDocument) Document.loadTemplate(EMPTY_SPREADSHEET_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.SPREADSHEET);
+	}
+
+	/**
+	 * Creates an empty spreadsheet template.
+	 * 
+	 * @return ODF spreadsheet template based on a default
+	 * @throws java.lang.Exception
+	 *             - if the template could not be created
+	 */
+	public static SpreadsheetDocument newSpreadsheetTemplateDocument() throws Exception {
+		SpreadsheetDocument doc = (SpreadsheetDocument) Document.loadTemplate(EMPTY_SPREADSHEET_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.SPREADSHEET_TEMPLATE);
+		doc.changeMode(OdfMediaType.SPREADSHEET_TEMPLATE);
+		return doc;
+	}
+
+	/**
+	 * To avoid data duplication a new document is only created, if not already
+	 * opened. A document is cached by this constructor using the internalpath
+	 * as key.
+	 */
+	protected SpreadsheetDocument(OdfPackage pkg, String internalPath, SpreadsheetDocument.OdfMediaType odfMediaType) {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Creates an SpreadsheetDocument from the OpenDocument provided by a
+	 * resource Stream.
+	 * 
+	 * <p>
+	 * Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by SpreadsheetDocument, the InputStream is cached.
+	 * This usually takes more time compared to the other createInternalDocument
+	 * methods. An advantage of caching is that there are no problems
+	 * overwriting an input file.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF spreadsheet document,
+	 * ClassCastException might be thrown.
+	 * </p>
+	 * 
+	 * @param inputStream
+	 *            - the InputStream of the ODF spreadsheet document.
+	 * @return the spreadsheet document created from the given InputStream
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static SpreadsheetDocument loadDocument(InputStream inputStream) throws Exception {
+		return (SpreadsheetDocument) Document.loadDocument(inputStream);
+	}
+
+	/**
+	 * Loads an SpreadsheetDocument from the provided path.
+	 * 
+	 * <p>
+	 * SpreadsheetDocument relies on the file being available for read access
+	 * over the whole lifecycle of SpreadsheetDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF spreadsheet document,
+	 * ClassCastException might be thrown.
+	 * </p>
+	 * 
+	 * @param documentPath
+	 *            - the path from where the document can be loaded
+	 * @return the spreadsheet document from the given path or NULL if the media
+	 *         type is not supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static SpreadsheetDocument loadDocument(String documentPath) throws Exception {
+		return (SpreadsheetDocument) Document.loadDocument(documentPath);
+	}
+
+	/**
+	 * Creates an SpreadsheetDocument from the OpenDocument provided by a File.
+	 * 
+	 * <p>
+	 * SpreadsheetDocument relies on the file being available for read access
+	 * over the whole lifecycle of SpreadsheetDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF spreadsheet document,
+	 * ClassCastException might be thrown.
+	 * </p>
+	 * 
+	 * @param file
+	 *            - a file representing the ODF spreadsheet document.
+	 * @return the spreadsheet document created from the given File
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static SpreadsheetDocument loadDocument(File file) throws Exception {
+		return (SpreadsheetDocument) Document.loadDocument(file);
+	}
+
+	/**
+	 * Get the content root of a spreadsheet document.
+	 * 
+	 * @return content root, representing the office:spreadsheet tag
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeSpreadsheetElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeSpreadsheetElement.class);
+	}
+
+	/**
+	 * Changes the document to the given mediatype. This method can only be used
+	 * to convert a document to a related mediatype, e.g. template.
+	 * 
+	 * @param mediaType
+	 *            the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+
+	/**
+	 * Retrieves sheet by index.
+	 * 
+	 * @param index
+	 *            the index of the retrieved sheet, which starts from 0. If the
+	 *            index value is out of range (index >= sheet count or index <
+	 *            0), this method would return <code>null</code>.
+	 * @since 0.6
+	 */
+	public Table getSheetByIndex(int index) {
+		if (index < 0) {
+			return null;
+		}
+		int count = 0;
+		try {
+			OfficeSpreadsheetElement spreadsheetElement = getContentRoot();
+			Node child = spreadsheetElement.getFirstChild();
+			while ((child != null) && (count <= index)) {
+				if (child instanceof TableTableElement) {
+					if (count == index) {
+						return getTableBuilder().getTableInstance((TableTableElement) child);
+					} else {
+						count++;
+					}
+				}
+				child = child.getNextSibling();
+			}
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+	
+	/**
+	 * Retrieves sheet by name.
+	 * 
+	 * @param name
+	 *            the name of the retrieved sheet.
+	 * @since 0.6
+	 */
+	public Table getSheetByName(String name) {
+		return getTableByName(name);
+	}
+
+	
+	/**
+	 * Adds a new blank sheet with the specified <code>name</code> to this
+	 * document.
+	 * 
+	 * @param name
+	 *            the name of the new sheet.
+	 * @return added sheet.
+	 * @since 0.6
+	 */
+	public Table appendSheet(String name) {
+		Table newTable = addTable();
+		newTable.setTableName(name);
+		return newTable;
+	}
+
+	/**
+	 * Adds a new sheet with data from existing table.
+	 * <p>
+	 * NOTE: This method copies data from existing table, including linked
+	 * resources and styles, if the source table is not in the target document.
+	 * If these data has dependencies to other data of the source document, the
+	 * data dependencies will not be copied. For example, document A has two
+	 * sheets, "Sheet1" and "Sheet2". In "Sheet2", there is a cell with formula,
+	 * "=sum(Sheet1.A1:Sheet1.A10)". After copy the data of "Sheet2" to the new
+	 * sheet in document B, the result of this formula would be different or
+	 * even invalid in document B.
+	 * 
+	 * @param refTable
+	 *            the reference table, which is the data source of the new
+	 *            sheet.
+	 * @param name
+	 *            the name of the new sheet.
+	 * @return added sheet.
+	 * @since 0.6
+	 */
+	public Table appendSheet(Table refTable, String name) {
+		TableTableElement refTableElement = refTable.getOdfElement();
+		try {
+			OdfContentDom contentDom = getContentDom();
+			TableTableElement newTableEle = (TableTableElement) (refTableElement.cloneNode(true));
+			// not in a same document
+			if (refTableElement.getOwnerDocument() != contentDom) {
+				Document ownerDocument = refTable.getOwnerDocument();
+				copyLinkedRefInBatch(newTableEle, ownerDocument);
+				copyForeignStyleRef(newTableEle, ownerDocument);
+				newTableEle = (TableTableElement) cloneForeignElement(newTableEle, contentDom, true);
+			}
+			updateNames(newTableEle);
+			updateXMLIds(newTableEle);
+			getTableContainerElement().appendChild(newTableEle);
+			Table tableInstance = getTableBuilder().getTableInstance(newTableEle);
+			tableInstance.setTableName(name);
+			return tableInstance;
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+	
+	/**
+	 * Inserts a new blank sheet before the reference index.
+	 * 
+	 * @param before
+	 *            the reference index, which starts from 0. If the index value
+	 *            is out of range (index >= sheet count or index < 0), this
+	 *            method would return <code>null</code>.
+	 * @return inserted sheet.
+	 * @since 0.6
+	 */
+	public Table insertSheet(int before) {
+		if (before < 0) {
+			return null;
+		}
+		int count = 0;
+		try {
+			OfficeSpreadsheetElement spreadsheetElement = getContentRoot();
+			Node child = spreadsheetElement.getFirstChild();
+			while ((child != null) && (count <= before)) {
+				if (child instanceof TableTableElement) {
+					if (count == before) {
+						Table table = getTableBuilder().newTable();
+						getContentRoot().insertBefore(table.getOdfElement(), child);
+						return table;
+					} else {
+						count++;
+					}
+				}
+				child = child.getNextSibling();
+			}
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+	
+	/**
+	 * Inserts a new sheet with data from existing table.
+	 * 
+	 * <p>
+	 * NOTE: This method copies data from existing table, including linked
+	 * resources and styles, if the source table is not in the target document.
+	 * If these data has dependencies to other data of the source document, the
+	 * data dependencies will not be copied. For example, document A has two
+	 * sheets, "Sheet1" and "Sheet2". In "Sheet2", there is a cell with formula,
+	 * "=sum(Sheet1.A1:Sheet1.A10)". After copy the data of "Sheet2" to the new
+	 * sheet in document B, the result of this formula would be different or
+	 * even invalid in document B.
+	 * 
+	 * @param refTable
+	 *            the reference table, which is the data source of the new
+	 *            sheet.
+	 * @param before
+	 *            the reference index, which starts from 0 and new sheet would
+	 *            be inserted before it. If the index value is out of range
+	 *            (index >= sheet count or index < 0), this method would return
+	 *            <code>null</code>.
+	 * @return inserted sheet.
+	 * @since 0.6
+	 */
+	public Table insertSheet(Table refTable, int before) {
+		if (before < 0) {
+			return null;
+		}
+		int count = 0;
+		try {
+			OfficeSpreadsheetElement spreadsheetElement = getContentRoot();
+			Node child = spreadsheetElement.getFirstChild();
+			while ((child != null) && (count <= before)) {
+				if (child instanceof TableTableElement) {
+					if (count == before) {
+						TableTableElement refTableElement = refTable.getOdfElement();
+						try {
+							OdfContentDom contentDom = getContentDom();
+							TableTableElement newTableEle = (TableTableElement) (refTableElement.cloneNode(true));
+							//foreign node not in a same document
+							if (refTableElement.getOwnerDocument() != contentDom) {
+								Document ownerDocument = refTable.getOwnerDocument();
+								copyLinkedRefInBatch(newTableEle, ownerDocument);
+								copyForeignStyleRef(newTableEle, ownerDocument);
+								newTableEle = (TableTableElement) cloneForeignElement(newTableEle, contentDom, true);
+							}
+							updateNames(newTableEle);
+							updateXMLIds(newTableEle);
+							newTableEle.setTableNameAttribute(getUniqueSheetName(this));
+							getContentRoot().insertBefore(newTableEle, child);
+							return getTableBuilder().getTableInstance(newTableEle);
+						} catch (Exception e) {
+							Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+						}
+					} else {
+						count++;
+					}
+				}
+				child = child.getNextSibling();
+			}
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+
+	/**
+	 * Removes the sheet in the specified <code>index</code>.
+	 * 
+	 * @param index
+	 *            the index of the removed sheet, which starts from 0. If the
+	 *            index value is out of range (index >= sheet count or index <
+	 *            0), this method would do nothing.
+	 * @since 0.6
+	 */
+	public void removeSheet(int index) {
+		if (index < 0) {
+			return;
+		}
+		int count = 0;
+		try {
+			OfficeSpreadsheetElement spreadsheetElement = getContentRoot();
+			Node child = spreadsheetElement.getFirstChild();
+			while ((child != null) && (count <= index)) {
+				if (child instanceof TableTableElement) {
+					if (count == index) {
+						spreadsheetElement.removeChild(child);
+						return;
+					} else {
+						count++;
+					}
+				}
+				child = child.getNextSibling();
+			}
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	/**
+	 * Returns the sheet count of this document.
+	 * 
+	 * @return the sheet count of this document.
+	 * @since 0.6
+	 */
+	public int getSheetCount() {
+		int count = 0;
+		try {
+			OfficeSpreadsheetElement spreadsheetElement = getContentRoot();
+			Node child = spreadsheetElement.getFirstChild();
+			while (child != null) {
+				if (child instanceof TableTableElement) {
+					count++;
+				}
+				child = child.getNextSibling();
+			}
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return count;
+	}
+	
+	public OdfElement getTableContainerElement() {
+		return getTableContainerImpl().getTableContainerElement();
+	}
+	
+	/**
+	 * Creates a new Chart for this spreadsheet document.
+	 * 
+	 * @param title
+	 *            chart title.
+	 * @param dataset
+	 *            chart data set.
+	 * @param rect
+	 *            chart rectangle.
+	 * @return the created chart.
+	 * 
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, DataSet dataset, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, dataset, rect);
+	}
+	
+	/**
+	 * Creates a new Chart for this spreadsheet document.
+	 * 
+	 * @param title
+	 *            chart title.
+	 * @param document
+	 *            the data source spreadsheet document.
+	 * @param cellRangeAddr
+	 *            the cell range address list which is used as chart data set.
+	 * @param firstRowAsLabel
+	 *            whether uses first row as label.
+	 * @param firstColumnAsLabel
+	 *            whether uses first column as label.
+	 * @param rowAsDataSeries
+	 *            whether uses data as series.
+	 * @param rect
+	 *            chart rectangle.
+	 * @return the created chart.
+	 * 
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr, boolean firstRowAsLabel,
+			boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, document, cellRangeAddr, firstRowAsLabel, firstColumnAsLabel,
+				rowAsDataSeries, rect);
+	}
+	
+	/**
+	 * Creates a new Chart for this spreadsheet document.
+	 * 
+	 * @param title
+	 *            chart rectangle.
+	 * @param labels
+	 *            label strings
+	 * @param legends
+	 *            legend strings
+	 * @param data
+	 *            chart data set.
+	 * @param rect
+	 *            chart rectangle.
+	 * @return the created chart.
+	 * 
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, String[] labels, String[] legends, double[][] data, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, labels, legends, data, rect);
+	}
+	
+	/**
+	 * Creates a new Chart for this spreadsheet document.
+	 * 
+	 * @param title
+	 *            chart rectangle.
+	 * @param document
+	 *            the data source spreadsheet document.
+	 * @param cellRangeAddr
+	 *            the cell range list to be used as chart data.
+	 * @param firstRowAsLabel
+	 *            whether use first row as label.
+	 * @param firstColumnAsLabel
+	 *            whether use first column as label.
+	 * @param rowAsDataSeries
+	 *            whether use row as data series.
+	 * @param rect
+	 *            chart rectangle.
+	 * @param cell
+	 *            the position cell where the new chart is inserted.
+	 * @return the created chart.
+	 * 
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr, boolean firstRowAsLabel,
+			boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect, Cell cell) {
+		return getChartContainerImpl().createChart(title, document, cellRangeAddr, firstRowAsLabel, firstColumnAsLabel,
+				rowAsDataSeries, rect, cell);
+	}
+	
+	public void deleteChartById(String chartId) {
+		getChartContainerImpl().deleteChartById(chartId);
+	}
+
+	public void deleteChartByTitle(String title) {
+		getChartContainerImpl().deleteChartByTitle(title);
+	}
+
+	public Chart getChartById(String chartId) {
+		return getChartContainerImpl().getChartById(chartId);
+	}
+
+	public List<Chart> getChartByTitle(String title) {
+		return getChartContainerImpl().getChartByTitle(title);
+	}
+
+	public int getChartCount() {
+		return getChartContainerImpl().getChartCount();
+	}
+	
+	private static String getUniqueSheetName(TableContainer container) {
+		List<Table> tableList = container.getTableList();
+		boolean notUnique = true;
+		String tablename = "Sheet" + (tableList.size() + 1);
+		while (notUnique) {
+			notUnique = false;
+			for (int i = 0; i < tableList.size(); i++) {
+				if (tableList.get(i).getTableName() != null) {
+					if (tableList.get(i).getTableName().equalsIgnoreCase(tablename)) {
+						notUnique = true;
+						break;
+					}
+				}
+			}
+			if (notUnique) {
+				tablename = tablename + Math.round(Math.random() * 10);
+			}
+		}
+		return tablename;
+	}
+	
+	private ChartContainerImpl getChartContainerImpl() {
+		if (chartContainerImpl == null) {
+			chartContainerImpl = new ChartContainerImpl(this);
+		}
+		return chartContainerImpl;
+	}
+	
+	private class ChartContainerImpl extends AbstractChartContainer {
+		SpreadsheetDocument sdoc;
+		DrawFrameElement drawFrame;
+		protected ChartContainerImpl(Document doc) {
+			super(doc);
+			sdoc = (SpreadsheetDocument) doc;
+		}
+
+		protected DrawFrameElement getChartFrame() throws Exception {
+			OdfContentDom contentDom2 = sdoc.getContentDom();
+			DrawFrameElement drawFrame = contentDom2.newOdfElement(DrawFrameElement.class);
+			TableTableCellElement lastCell = (TableTableCellElement) contentDom2.getXPath().evaluate(
+					"//table:table-cell[last()]", contentDom2, XPathConstants.NODE);
+			lastCell.appendChild(drawFrame);
+			drawFrame.removeAttribute("text:anchor-type");
+			this.drawFrame = drawFrame;
+			return drawFrame;
+		}
+		
+		private Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr, boolean firstRowAsLabel,
+				boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect, Cell cell) {
+			Chart chart = getChartContainerImpl().createChart(title, document, cellRangeAddr, firstRowAsLabel, firstColumnAsLabel,
+					rowAsDataSeries, rect);
+			cell.getOdfElement().appendChild(this.drawFrame);
+			return chart;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/TextDocument.java b/trunk/simple/src/main/java/org/odftoolkit/simple/TextDocument.java
new file mode 100644
index 0000000..801f210
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/TextDocument.java
@@ -0,0 +1,1618 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.awt.Rectangle;
+import java.io.File;
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentStylesElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMasterStylesElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleColumnsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleSectionPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexBodyElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryLinkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexEntryTabStopElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexSourceStylesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextIndexTitleTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSequenceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentEntryTemplateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentSourceElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkStartElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.MediaType;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.chart.AbstractChartContainer;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.chart.ChartContainer;
+import org.odftoolkit.simple.chart.DataSet;
+import org.odftoolkit.simple.common.field.AbstractVariableContainer;
+import org.odftoolkit.simple.common.field.VariableContainer;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+import org.odftoolkit.simple.draw.Control;
+import org.odftoolkit.simple.draw.ControlContainer;
+import org.odftoolkit.simple.form.AbstractFormContainer;
+import org.odftoolkit.simple.form.Form;
+import org.odftoolkit.simple.form.FormContainer;
+import org.odftoolkit.simple.style.MasterPage;
+import org.odftoolkit.simple.style.TOCStyle;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.AbstractParagraphContainer;
+import org.odftoolkit.simple.text.Footer;
+import org.odftoolkit.simple.text.Header;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.text.ParagraphContainer;
+import org.odftoolkit.simple.text.Section;
+import org.odftoolkit.simple.text.list.AbstractListContainer;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+/**
+ * This class represents an empty ODF text document.
+ * 
+ */
+public class TextDocument extends Document implements ListContainer,
+		ParagraphContainer, VariableContainer, ChartContainer, FormContainer,
+		ControlContainer {
+
+	private static final String EMPTY_TEXT_DOCUMENT_PATH = "/OdfTextDocument.odt";
+	static final Resource EMPTY_TEXT_DOCUMENT_RESOURCE = new Resource(EMPTY_TEXT_DOCUMENT_PATH);
+
+	private ListContainerImpl listContainerImpl;
+	private ParagraphContainerImpl paragraphContainerImpl;
+	private VariableContainerImpl variableContainerImpl;
+	private ChartContainerImpl chartContainerImpl;
+	private FormContainerImpl formContainerImpl = null;
+	
+	private Header firstPageHeader;
+	private Header standardHeader;
+
+	private Footer firstPageFooter;
+	private Footer standardFooter;
+
+	/**
+	 * This enum contains all possible media types of SpreadsheetDocument
+	 * documents.
+	 */
+	public enum OdfMediaType implements MediaType {
+
+		TEXT(Document.OdfMediaType.TEXT), TEXT_TEMPLATE(Document.OdfMediaType.TEXT_TEMPLATE), TEXT_MASTER(
+				Document.OdfMediaType.TEXT_MASTER), TEXT_WEB(Document.OdfMediaType.TEXT_WEB);
+		private final Document.OdfMediaType mMediaType;
+
+		OdfMediaType(Document.OdfMediaType mediaType) {
+			this.mMediaType = mediaType;
+		}
+
+		/**
+		 * @return the mediatype of this document
+		 */
+		public String getMediaTypeString() {
+			return mMediaType.getMediaTypeString();
+		}
+
+		/**
+		 * @return the ODF filesuffix of this document
+		 */
+		public String getSuffix() {
+			return mMediaType.getSuffix();
+		}
+
+		/**
+		 * 
+		 * @param mediaType
+		 *            string defining an ODF document
+		 * @return the according OdfMediatype encapuslating the given string and
+		 *         the suffix
+		 */
+		public static Document.OdfMediaType getOdfMediaType(String mediaType) {
+			return Document.OdfMediaType.getOdfMediaType(mediaType);
+		}
+	}
+
+	/**
+	 * Creates an empty text document.
+	 * 
+	 * @return ODF text document based on a default template
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static TextDocument newTextDocument() throws Exception {
+		return (TextDocument) Document.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, Document.OdfMediaType.TEXT);
+	}
+
+	/**
+	 * Creates an empty text document.
+	 * 
+	 * @return ODF text document based on a default template
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static TextDocument newTextDocument(TextDocument.OdfMediaType mimeType) throws Exception {
+		return (TextDocument) Document.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, Document.OdfMediaType.TEXT);
+	}
+
+	/**
+	 * Creates an empty text template.
+	 * 
+	 * @return ODF text template based on a default
+	 * @throws java.lang.Exception
+	 *             - if the template could not be created
+	 */
+	public static TextDocument newTextTemplateDocument() throws Exception {
+		return (TextDocument) Document.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE, Document.OdfMediaType.TEXT_TEMPLATE);
+	}
+
+	/**
+	 * Creates an empty text master document.
+	 * 
+	 * @return ODF text master based on a default
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static TextDocument newTextMasterDocument() throws Exception {
+		TextDocument doc = (TextDocument) Document.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.TEXT_MASTER);
+		doc.changeMode(OdfMediaType.TEXT_MASTER);
+		return doc;
+	}
+
+	/**
+	 * Creates an empty text web.
+	 * 
+	 * @return ODF text web based on a default
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created
+	 */
+	public static TextDocument newTextWebDocument() throws Exception {
+		TextDocument doc = (TextDocument) Document.loadTemplate(EMPTY_TEXT_DOCUMENT_RESOURCE,
+				Document.OdfMediaType.TEXT_WEB);
+		doc.changeMode(OdfMediaType.TEXT_WEB);
+		return doc;
+	}
+
+	/**
+	 * Creates an TextDocument from the OpenDocument provided by a resource
+	 * Stream.
+	 * 
+	 * <p>
+	 * Since an InputStream does not provide the arbitrary (non sequentiell)
+	 * read access needed by TextDocument, the InputStream is cached. This
+	 * usually takes more time compared to the other createInternalDocument
+	 * methods. An advantage of caching is that there are no problems
+	 * overwriting an input file.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF text document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param inputStream
+	 *            - the InputStream of the ODF text document.
+	 * @return the text document created from the given InputStream
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static TextDocument loadDocument(InputStream inputStream) throws Exception {
+		return (TextDocument) Document.loadDocument(inputStream);
+	}
+
+	/**
+	 * Loads an TextDocument from the provided path.
+	 * 
+	 * <p>
+	 * TextDocument relies on the file being available for read access over the
+	 * whole lifecycle of TextDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF text document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param documentPath
+	 *            - the path from where the document can be loaded
+	 * @return the text document from the given path or NULL if the media type
+	 *         is not supported by SIMPLE.
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static TextDocument loadDocument(String documentPath) throws Exception {
+		return (TextDocument) Document.loadDocument(documentPath);
+	}
+
+	/**
+	 * Creates an TextDocument from the OpenDocument provided by a File.
+	 * 
+	 * <p>
+	 * TextDocument relies on the file being available for read access over the
+	 * whole lifecycle of TextDocument.
+	 * </p>
+	 * 
+	 * <p>
+	 * If the resource stream is not a ODF text document, ClassCastException
+	 * might be thrown.
+	 * </p>
+	 * 
+	 * @param file
+	 *            - a file representing the ODF text document.
+	 * @return the text document created from the given File
+	 * @throws java.lang.Exception
+	 *             - if the document could not be created.
+	 */
+	public static TextDocument loadDocument(File file) throws Exception {
+		return (TextDocument) Document.loadDocument(file);
+	}
+
+	/**
+	 * To avoid data duplication a new document is only created, if not already
+	 * opened. A document is cached by this constructor using the internalpath
+	 * as key.
+	 */
+	protected TextDocument(OdfPackage pkg, String internalPath, TextDocument.OdfMediaType odfMediaType) {
+		super(pkg, internalPath, odfMediaType.mMediaType);
+	}
+
+	/**
+	 * Get the content root of a text document. Start here to get or create new
+	 * elements of a text document like paragraphs, headings, tables or lists.
+	 * 
+	 * @return content root, representing the office:text tag
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 */
+	@Override
+	public OfficeTextElement getContentRoot() throws Exception {
+		return super.getContentRoot(OfficeTextElement.class);
+	}
+
+	/**
+	 * Creates a new paragraph and append text
+	 * 
+	 * @param text
+	 * @return the new paragraph
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 * @deprecated As of Simple version 0.5, replaced by
+	 *             <code>addParagraph(String text)</code>
+	 * @see #addParagraph(String)
+	 */
+	public OdfTextParagraph newParagraph(String text) throws Exception {
+		OdfTextParagraph para = newParagraph();
+		para.addContent(text);
+		return para;
+	}
+
+	/**
+	 * Creates a new paragraph
+	 * 
+	 * @return The new paragraph
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 * @deprecated As of Simple version 0.5, replaced by
+	 *             <code>Paragraph.newParagraph(ParagraphContainer)</code>
+	 * @see Paragraph#newParagraph(ParagraphContainer)
+	 * @see #addParagraph(String)
+	 */
+	public OdfTextParagraph newParagraph() throws Exception {
+		OfficeTextElement odfText = getContentRoot();
+		return (OdfTextParagraph) odfText.newTextPElement();
+	}
+
+	/**
+	 * Append text to the end of a text document. If there is no paragraph at
+	 * the end of a document, a new one will be created.
+	 * 
+	 * @param text
+	 *            initial text for the paragraph.
+	 * @return The paragraph at the end of the text document, where the text has
+	 *         been added to.
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 * @deprecated As of Simple version 0.5, replaced by
+	 *             <code>Paragraph.appendTextContent(String content)</code>
+	 * @see Paragraph#appendTextContent(String)
+	 * @see Paragraph#appendTextContentNotCollapsed(String)
+	 * @see #getParagraphByIndex(int, boolean)
+	 * @see #getParagraphByReverseIndex(int, boolean)
+	 */
+	public OdfTextParagraph addText(String text) throws Exception {
+		OfficeTextElement odfText = getContentRoot();
+		Node n = odfText.getLastChild();
+		OdfTextParagraph para;
+		if (OdfTextParagraph.class.isInstance(n)) {
+			para = (OdfTextParagraph) n;
+		} else {
+			para = newParagraph();
+		}
+		para.addContent(text);
+		return para;
+	}
+
+	/**
+	 * Changes the document to the given mediatype. This method can only be used
+	 * to convert a document to a related mediatype, e.g. template.
+	 * 
+	 * @param mediaType
+	 *            the related ODF mimetype
+	 */
+	public void changeMode(OdfMediaType mediaType) {
+		setOdfMediaType(mediaType.mMediaType);
+	}
+
+	/**
+	 * Copy a section and append it at the end of the text document, whether the
+	 * section is in this document or in a different document.
+	 * <p>
+	 * The IDs and names in this section would be changed to ensure unique.
+	 * <p>
+	 * If the section contains a linked resource, <code>isResourceCopied</code>
+	 * would specify whether the linked resource would be copied or not, when
+	 * the copy and append happens within a same document.
+	 * 
+	 * @param section
+	 *            - the section object
+	 * @param isResourceCopied
+	 *            - whether the linked resource is copied or not.
+	 */
+	public Section appendSection(Section section, boolean isResourceCopied) {
+		boolean isForeignNode = false;
+		try {
+			if (section.getOdfElement().getOwnerDocument() != getContentDom())
+				isForeignNode = true;
+			TextSectionElement oldSectionEle = section.getOdfElement();
+			TextSectionElement newSectionEle = (TextSectionElement) oldSectionEle.cloneNode(true);
+
+			if (isResourceCopied || isForeignNode)
+				copyLinkedRefInBatch(newSectionEle, section.getOwnerDocument());
+			if (isForeignNode)
+				copyForeignStyleRef(newSectionEle, section.getOwnerDocument());
+			if (isForeignNode) // not in a same document
+				newSectionEle = (TextSectionElement) cloneForeignElement(newSectionEle, getContentDom(), true);
+
+			updateNames(newSectionEle);
+			updateXMLIds(newSectionEle);
+			OfficeTextElement contentRoot = getContentRoot();
+			contentRoot.appendChild(newSectionEle);
+			return Section.getInstance(newSectionEle);
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+
+	/**
+	 * Create an empty section and append it at the end of the text document.
+	 * 
+	 * @param name
+	 *            - specify the section name
+	 * @return an instance of the section
+	 * @throws RuntimeException
+	 *             if content DOM could not be initialized
+	 */
+	public Section appendSection(String name) {
+		TextSectionElement newSectionEle = null;
+		try {
+			OdfContentDom contentDocument = getContentDom();
+			OdfOfficeAutomaticStyles styles = contentDocument
+					.getAutomaticStyles();
+			OdfStyle style = styles.newStyle(OdfStyleFamily.Section);
+			StyleSectionPropertiesElement sProperties = style
+					.newStyleSectionPropertiesElement();
+			sProperties.setTextDontBalanceTextColumnsAttribute(false);
+			sProperties.setStyleEditableAttribute(false);
+			StyleColumnsElement columnEle = sProperties
+					.newStyleColumnsElement(1);
+			columnEle.setFoColumnGapAttribute("0in");
+
+			newSectionEle = getContentRoot()
+					.newTextSectionElement("true", name);
+			newSectionEle.setStyleName(style.getStyleNameAttribute());
+			return Section.getInstance(newSectionEle);
+
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					null, e);
+			throw new RuntimeException(name + "Section appends failed.", e);
+		}
+	}
+
+	/**
+	 * Get the Standard Page header of this text document.
+	 * 
+	 * @return the Standard Page header of this text document.
+	 * @since 0.4.5
+	 */
+	public Header getHeader() {
+		return getHeader(false);
+	}
+
+	/**
+	 * Get the header of this text document.
+	 * 
+	 * @param isFirstPage
+	 *            if <code>isFirstPage</code> is true, return the First Page
+	 *            header, otherwise return Standard Page header.
+	 * 
+	 * @return the header of this text document.
+	 * @since 0.5
+	 */
+	public Header getHeader(boolean isFirstPage) {
+		Header tmpHeader = isFirstPage ? firstPageHeader : standardHeader;
+		if (tmpHeader == null) {
+			try {
+				StyleMasterPageElement masterPageElement = getMasterPage(isFirstPage);
+				StyleHeaderElement headerElement = OdfElement.findFirstChildNode(StyleHeaderElement.class,
+						masterPageElement);
+				if (headerElement == null) {
+					headerElement = masterPageElement.newStyleHeaderElement();
+				}
+				tmpHeader = new Header(headerElement);
+			} catch (Exception e) {
+				Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+			}
+			if (isFirstPage) {
+				firstPageHeader = tmpHeader;
+			} else {
+				standardHeader = tmpHeader;
+			}
+		}
+		return tmpHeader;
+	}
+
+	/**
+	 * Get the Standard Page footer of this text document.
+	 * 
+	 * @return the Standard Page footer of this text document.
+	 * @since 0.4.5
+	 */
+	public Footer getFooter() {
+		return getFooter(false);
+	}
+
+	/**
+	 * Get the footer of this text document.
+	 * 
+	 * @param isFirstPage
+	 *            if <code>isFirstPage</code> is true, return the First Page
+	 *            footer, otherwise return Standard Page footer.
+	 * 
+	 * @return the footer of this text document.
+	 * @since 0.5
+	 */
+	public Footer getFooter(boolean isFirstPage) {
+		Footer tmpFooter = isFirstPage ? firstPageFooter : standardFooter;
+		if (tmpFooter == null) {
+			try {
+				StyleMasterPageElement masterPageElement = getMasterPage(isFirstPage);
+				StyleFooterElement footerElement = OdfElement.findFirstChildNode(StyleFooterElement.class,
+						masterPageElement);
+				if (footerElement == null) {
+					footerElement = masterPageElement.newStyleFooterElement();
+				}
+				tmpFooter = new Footer(footerElement);
+			} catch (Exception e) {
+				Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+			}
+			if (isFirstPage) {
+				firstPageFooter = tmpFooter;
+			} else {
+				standardFooter = tmpFooter;
+			}
+		}
+		return tmpFooter;
+	}
+
+	public OdfElement getTableContainerElement() {
+		return getTableContainerImpl().getTableContainerElement();
+	}
+
+	public OdfElement getListContainerElement() {
+		return getListContainerImpl().getListContainerElement();
+	}
+
+	public List addList() {
+		return getListContainerImpl().addList();
+	}
+
+	public List addList(ListDecorator decorator) {
+		return getListContainerImpl().addList(decorator);
+	}
+
+	public void clearList() {
+		getListContainerImpl().clearList();
+	}
+
+	public Iterator<List> getListIterator() {
+		return getListContainerImpl().getListIterator();
+	}
+
+	public boolean removeList(List list) {
+		return getListContainerImpl().removeList(list);
+	}
+	
+	/**
+	 * Appends a new page break to this document.
+	 * 
+	 * @since 0.6.5
+	 */
+	public void addPageBreak() {
+		addPageOrColumnBreak(null, "page");
+	}
+	
+	/**
+	 * Appends a new page break to this document after the reference paragraph.
+	 * 
+	 * @param refParagraph
+	 *            the reference paragraph after where the page break inserted.
+	 * @since 0.6.5
+	 */
+	public void addPageBreak(Paragraph refParagraph) {
+		addPageOrColumnBreak(refParagraph, "page");
+	}
+	
+	/** 
+	 * Defines several columns to the page whose style is specified.
+	 * 
+	 * @param columnsNumber
+	 * 			the number of columns (are of width identical)
+	 * @param spacing
+	 * 			column spacing in cm (ex. 2.40 for 2,4 cm)
+	 * 
+	 * @since 0.6.6
+	 */
+	public void setPageColumns(int columnsNumber, double spacing) {
+		String vSpacingColumn = (new DecimalFormat("#0.###").format(spacing) + Unit.CENTIMETER.abbr()).replace(",", ".");
+		// Get back the name of the style Page wanted Layout
+		// (Example of the got back name : pm1 or Mpm1 for the standard style)
+		try {
+			String stylePageLayoutName = null;
+			int pageLayoutNameCount = 0;
+			NodeList list = getStylesDom().getElementsByTagName("office:master-styles");
+			if (list.getLength() > 0) {
+				OdfOfficeMasterStyles officeMasterStyles = (OdfOfficeMasterStyles) list.item(0);
+				// Get back the StylePageLayoutName
+				for (int i = 0; i < officeMasterStyles.getLength(); i++) {
+					StyleMasterPageElement syleMasterPage = (StyleMasterPageElement) officeMasterStyles.item(i);
+					if(syleMasterPage.getStyleNameAttribute().equals("Standard")){					
+						stylePageLayoutName = syleMasterPage.getStylePageLayoutNameAttribute();
+						break;
+					}
+				}
+				// Allows to know if StylePageLayoutName is unique
+				for (int i = 0; i < officeMasterStyles.getLength(); i++) {
+					StyleMasterPageElement syleMasterPage = (StyleMasterPageElement) officeMasterStyles.item(i);
+					if(syleMasterPage.getStylePageLayoutNameAttribute().equals(stylePageLayoutName)){					
+						pageLayoutNameCount++;
+					}
+				}
+			}
+			
+			OdfOfficeAutomaticStyles autoStyles = getStylesDom().getAutomaticStyles();
+			int autoStylesCount = autoStyles.getLength();			
+			OdfStylePageLayout pageLayout = autoStyles.getPageLayout(stylePageLayoutName);
+			if(pageLayout != null) {
+				// Clone the OdfStylePageLayout if another master style possesses the same name before modifying its properties
+				if(pageLayoutNameCount > 1){
+					Node pageLayoutNew = pageLayout.cloneNode(true);					
+					// Rename the style of the clone before modifying its properties
+					String oldPageLayoutName = pageLayout.getStyleNameAttribute();
+					pageLayout.setStyleNameAttribute("Mpm" + (autoStylesCount+1));
+					// Allocate the new name of the style to the master style (the cloned style)
+					if (list.getLength() > 0) {
+						OdfOfficeMasterStyles masterpage = (OdfOfficeMasterStyles) list.item(0);
+						for (int i = 0; i < masterpage.getLength(); i++) {
+							StyleMasterPageElement vSyleMasterPage = (StyleMasterPageElement) masterpage.item(i);
+							if(vSyleMasterPage.getStyleNameAttribute().equals("Standard")){
+								if(vSyleMasterPage.getStylePageLayoutNameAttribute().equals(oldPageLayoutName)){					
+									vSyleMasterPage.setStylePageLayoutNameAttribute(pageLayout.getStyleNameAttribute());
+								}
+							}
+						}
+					}
+					autoStyles.appendChild(pageLayoutNew);
+				}
+				NodeList vListStlePageLprop = pageLayout.getElementsByTagName("style:page-layout-properties");
+				StylePageLayoutPropertiesElement vStlePageLprop = (StylePageLayoutPropertiesElement) vListStlePageLprop.item(0);
+				StyleColumnsElement vStyleColumnsElement = vStlePageLprop.newStyleColumnsElement(columnsNumber);
+				vStyleColumnsElement.setFoColumnGapAttribute(vSpacingColumn);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+			throw new RuntimeException("Page column sets failed.", e);
+		}		
+	}
+	
+	/**
+	 * Appends a new column break to this document.
+	 * 
+	 * @since 0.6.6
+	 */
+	public void addColumnBreak() {
+		addPageOrColumnBreak(null, "column");
+	}
+	
+	/**
+	 * Appends a new column break to this document after the reference paragraph.
+	 * 
+	 * @param refParagraph
+	 *            the reference paragraph after where the column break inserted.
+	 * @since 0.6.6
+	 */
+	public void addColumnBreak(Paragraph refParagraph) {
+		addPageOrColumnBreak(refParagraph, "column");
+	}
+	
+	/** 
+	 * Appends a new column or page break to this document.
+	 * 
+	 * @param refParagraph
+	 * 			the reference paragraph after where the column break inserted.
+	 * @param breakAttribute
+	 * 			the attribute name (page or column)
+	 */
+	private void addPageOrColumnBreak(Paragraph refParagraph, String breakAttribute) {
+		TextPElement pEle = null;
+		try {
+			OdfContentDom contentDocument = getContentDom();
+			OdfOfficeAutomaticStyles styles = contentDocument.getAutomaticStyles();
+			OdfStyle style = styles.newStyle(OdfStyleFamily.Paragraph);
+			style.newStyleParagraphPropertiesElement().setFoBreakBeforeAttribute(breakAttribute);
+			if(refParagraph == null){
+				pEle = getContentRoot().newTextPElement();
+			} else {
+				OfficeTextElement contentRoot = getContentRoot();
+				pEle = contentRoot.newTextPElement();
+				OdfElement refEle = refParagraph.getOdfElement();
+				contentRoot.insertBefore(pEle, refEle.getNextSibling());
+			}
+			pEle.setStyleName(style.getStyleNameAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+			throw new RuntimeException(breakAttribute + "Break appends failed.", e);
+		}
+	}
+
+	/**
+	 * Appends a new page break to this document after the reference paragraph,
+	 * and the master page style will be applied to the new page.
+	 * 
+	 * @param refParagraph
+	 *            the reference paragraph after where the page break inserted.
+	 * @param master
+	 *            the master page style applied to the new page.
+	 * @since 0.8
+	 */
+
+	public void addPageBreak(Paragraph refParagraph, MasterPage master) {
+		TextPElement pEle = null;
+		try {
+			OdfContentDom contentDocument = getContentDom();
+			OdfOfficeAutomaticStyles styles = contentDocument
+					.getAutomaticStyles();
+			OdfStyle style = styles.newStyle(OdfStyleFamily.Paragraph);
+			style.setStyleMasterPageNameAttribute(master.getName());
+
+			if (refParagraph == null) {
+				pEle = getContentRoot().newTextPElement();
+			} else {
+				OfficeTextElement contentRoot = getContentRoot();
+				pEle = contentRoot.newTextPElement();
+				OdfElement refEle = refParagraph.getOdfElement();
+				contentRoot.insertBefore(pEle, refEle.getNextSibling());
+			}
+			pEle.setStyleName(style.getStyleNameAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					null, e);
+			throw new RuntimeException("PageBreak with mater page - "
+					+ master.getName() + " - appends failed.", e);
+		}
+	}
+
+	/**
+	 * Creates a new paragraph and append text.
+	 * 
+	 * @param text
+	 *            the text content of this paragraph
+	 * @return the new paragraph
+	 */
+	public Paragraph addParagraph(String text) {
+		Paragraph para = getParagraphContainerImpl().addParagraph(text);
+		return para;
+	}
+
+	/**
+	 * Remove paragraph from this document
+	 * 
+	 * @param para
+	 *            the instance of paragraph
+	 * @return true if the paragraph is removed successfully, false if errors
+	 *         happen.
+	 */
+	public boolean removeParagraph(Paragraph para) {
+		return getParagraphContainerImpl().removeParagraph(para);
+	}
+
+	public OdfElement getParagraphContainerElement() {
+		return getParagraphContainerImpl().getParagraphContainerElement();
+	}
+
+	public Paragraph getParagraphByIndex(int index, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByIndex(index, isEmptyParagraphSkipped);
+	}
+
+	public Paragraph getParagraphByReverseIndex(int reverseIndex, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByReverseIndex(reverseIndex, isEmptyParagraphSkipped);
+	}
+
+	public Iterator<Paragraph> getParagraphIterator() {
+		return getParagraphContainerImpl().getParagraphIterator();
+	}
+
+	public VariableField declareVariable(String name, VariableType type) {
+		return getVariableContainerImpl().declareVariable(name, type);
+	}
+
+	public VariableField getVariableFieldByName(String name) {
+		return getVariableContainerImpl().getVariableFieldByName(name);
+	}
+
+	public OdfElement getVariableContainerElement() {
+		return getVariableContainerImpl().getVariableContainerElement();
+	}
+	
+	public Chart createChart(String title, DataSet dataset, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, dataset, rect);
+	}
+
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr, boolean firstRowAsLabel,
+			boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, document, cellRangeAddr, firstRowAsLabel, firstColumnAsLabel,
+				rowAsDataSeries, rect);
+	}
+
+	public Chart createChart(String title, String[] labels, String[] legends, double[][] data, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, labels, legends, data, rect);
+	}
+
+	public void deleteChartById(String chartId) {
+		getChartContainerImpl().deleteChartById(chartId);
+	}
+
+	public void deleteChartByTitle(String title) {
+		getChartContainerImpl().deleteChartByTitle(title);
+	}
+
+	public Chart getChartById(String chartId) {
+		return getChartContainerImpl().getChartById(chartId);
+	}
+
+	public java.util.List<Chart> getChartByTitle(String title) {
+		return getChartContainerImpl().getChartByTitle(title);
+	}
+
+	public int getChartCount() {
+		return getChartContainerImpl().getChartCount();
+	}
+	
+	private ListContainerImpl getListContainerImpl() {
+		if (listContainerImpl == null) {
+			listContainerImpl = new ListContainerImpl();
+		}
+		return listContainerImpl;
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+
+		public OdfElement getListContainerElement() {
+			OdfElement containerElement = null;
+			try {
+				containerElement = getContentRoot();
+			} catch (Exception e) {
+				Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+			}
+			return containerElement;
+		}
+	}
+
+	private StyleMasterPageElement getMasterPage(boolean pFirstPage) throws Exception {
+		String pageStyleName = pFirstPage ? "First_20_Page" : "Standard";
+		OfficeDocumentStylesElement rootElement = getStylesDom().getRootElement();
+		OfficeMasterStylesElement masterStyles = OdfElement.findFirstChildNode(OfficeMasterStylesElement.class,
+				rootElement);
+		if (masterStyles == null) {
+			masterStyles = rootElement.newOfficeMasterStylesElement();
+		}
+		StyleMasterPageElement masterPageEle = null;
+		NodeList lastMasterPages = masterStyles.getElementsByTagNameNS(OdfDocumentNamespace.STYLE.getUri(),
+				"master-page");
+		if (lastMasterPages != null && lastMasterPages.getLength() > 0) {
+			for (int i = 0; i < lastMasterPages.getLength(); i++) {
+				StyleMasterPageElement masterPage = (StyleMasterPageElement) lastMasterPages.item(i);
+				String styleName = masterPage.getStyleNameAttribute();
+				if (pageStyleName.equals(styleName)) {
+					masterPageEle = masterPage;
+					break;
+				}
+			}
+		}
+		if (masterPageEle == null) {
+			OdfStylePageLayout layout = OdfElement.findFirstChildNode(OdfStylePageLayout.class, getStylesDom()
+					.getAutomaticStyles());
+			masterPageEle = masterStyles.newStyleMasterPageElement(pageStyleName, layout.getStyleNameAttribute());
+		}
+		return masterPageEle;
+	}
+
+	private class ParagraphContainerImpl extends AbstractParagraphContainer {
+		public OdfElement getParagraphContainerElement() {
+			OdfElement containerElement = null;
+			try {
+				containerElement = getContentRoot();
+			} catch (Exception e) {
+				Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+			}
+			return containerElement;
+		}
+	}
+
+	private ParagraphContainerImpl getParagraphContainerImpl() {
+		if (paragraphContainerImpl == null)
+			paragraphContainerImpl = new ParagraphContainerImpl();
+		return paragraphContainerImpl;
+	}
+
+	private class VariableContainerImpl extends AbstractVariableContainer {
+
+		public OdfElement getVariableContainerElement() {
+			try {
+				return getContentRoot();
+			} catch (Exception e) {
+				Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+				return null;
+			}
+		}
+	}
+
+	private VariableContainer getVariableContainerImpl() {
+		if (variableContainerImpl == null) {
+			variableContainerImpl = new VariableContainerImpl();
+		}
+		return variableContainerImpl;
+	}
+	
+	private ChartContainerImpl getChartContainerImpl() {
+		if (chartContainerImpl == null) {
+			chartContainerImpl = new ChartContainerImpl(this);
+		}
+		return chartContainerImpl;
+	}
+	
+	private class ChartContainerImpl extends AbstractChartContainer {
+		TextDocument sdoc;
+
+		protected ChartContainerImpl(Document doc) {
+			super(doc);
+			sdoc = (TextDocument) doc;
+		}
+
+		protected DrawFrameElement getChartFrame() throws Exception {
+			OdfContentDom contentDom2 = sdoc.getContentDom();
+			DrawFrameElement drawFrame = contentDom2.newOdfElement(DrawFrameElement.class);
+			TextPElement lastPara = sdoc.getContentRoot().newTextPElement();
+			lastPara.appendChild(drawFrame);
+			drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+			return drawFrame;
+		}
+	}
+
+	/**
+	 * Create a new Table Of Content to this document before the reference
+	 * paragraph. Because until you do a full layout of the document, taking
+	 * into account font metrics,line breaking algorithms, hyphenation, image
+	 * positioning, "orphan and widow" rules, etc., you don't know what content
+	 * is on which page. So all the page numbers in TOC are be set value "1".
+	 * Please update the page numbers from AOO Menus: Tools->Update->All Indexes
+	 * and Tables
+	 * 
+	 * @param refParagraph
+	 *            the reference paragraph where the TOC be inserted.
+	 * @param before
+	 *            true:insert TOC before the reference paragraph. false:insert
+	 *            TOC after the reference paragraph.
+	 * @since 0.8.6
+	 */
+	public TextTableOfContentElement createDefaultTOC(Paragraph refParagraph, boolean before) {
+		
+		TextTableOfContentElement textTableOfContent =null;
+		if(refParagraph==null){
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					"Failed to create Default TOC, The refParagraph where the TOC be inserted is null");
+			throw new RuntimeException("Failed to create Default TOC, The refParagraph where the TOC be inserted is null");
+		}
+		Node refparagraphNode = refParagraph.getOdfElement();
+		Node rootNode = refparagraphNode.getParentNode();		
+		try {
+			OdfContentDom content = getContentDom();
+			textTableOfContent = content
+					.newOdfElement(TextTableOfContentElement.class);
+			textTableOfContent.setTextNameAttribute("Table of Contents");
+			textTableOfContent.setTextProtectedAttribute(true);
+			TextTableOfContentSourceElement textTableOfContentSource = textTableOfContent
+					.newTextTableOfContentSourceElement();
+			textTableOfContentSource.setTextOutlineLevelAttribute(10);
+			textTableOfContentSource.setTextUseIndexMarksAttribute(true);
+			TextIndexTitleTemplateElement textIndexTitleTemplate = textTableOfContentSource
+					.newTextIndexTitleTemplateElement();
+			textIndexTitleTemplate
+					.setTextStyleNameAttribute("Contents_20_Heading");
+			textIndexTitleTemplate.setTextContent("Table of Contents");
+			for (int i = 1; i <= 10; i++) {
+				TextTableOfContentEntryTemplateElement textTableOfContentEntryTemplate = textTableOfContentSource
+						.newTextTableOfContentEntryTemplateElement(i,
+								"Contents_20_" + i);
+				TextIndexEntryLinkStartElement TextIndexEntryLinkStart = textTableOfContentEntryTemplate
+						.newTextIndexEntryLinkStartElement();
+				TextIndexEntryLinkStart
+						.setTextStyleNameAttribute("Index_20_Link");
+				textTableOfContentEntryTemplate
+						.newTextIndexEntryChapterElement();
+				textTableOfContentEntryTemplate.newTextIndexEntryTextElement();
+				TextIndexEntryTabStopElement TextIndexEntryTabStop = textTableOfContentEntryTemplate
+						.newTextIndexEntryTabStopElement("right");
+				TextIndexEntryTabStop.setStyleLeaderCharAttribute(".");
+				textTableOfContentEntryTemplate
+						.newTextIndexEntryPageNumberElement();
+				textTableOfContentEntryTemplate
+						.newTextIndexEntryLinkEndElement();
+			}
+			TextIndexBodyElement textIndexBody = textTableOfContent
+					.newTextIndexBodyElement();
+			TextIndexTitleElement TextIndexTitle = textIndexBody
+					.newTextIndexTitleElement("Table of Contents_Head");
+			TextPElement texp = TextIndexTitle.newTextPElement();
+			texp.setTextStyleNameAttribute("Contents_20_Heading");
+			texp.setTextContent("Table of Contents");
+			Iterator<Paragraph> paragraphIterator = getParagraphIterator();
+			while (paragraphIterator.hasNext()) {
+				Paragraph paragraph = paragraphIterator.next();
+				String text = paragraph.getTextContent();
+				String stylename = paragraph.getStyleName();
+				// Outline support
+				if (paragraph.isHeading()) {
+					int headingLevel = paragraph.getHeadingLevel();
+					if (stylename.length() <= 0) {
+						stylename = "Contents_20_" + headingLevel;
+					}
+					ceateIndexBodyEntry(textIndexBody, stylename, text);
+				}
+				// end of Outline support
+				// Index Makes support
+				TextParagraphElementBase podf = paragraph.getOdfElement();
+				NodeList cns = podf.getChildNodes();
+				for (int i = 0; i < cns.getLength(); i++) {
+					Node node = cns.item(i);
+					if (node instanceof TextTocMarkElement) {
+						TextTocMarkElement textTocMarkElement = (TextTocMarkElement) node;
+						text = textTocMarkElement.getTextStringValueAttribute();
+						int headingLevel = textTocMarkElement
+								.getTextOutlineLevelAttribute();
+						stylename = "Contents_20_" + headingLevel;
+						ceateIndexBodyEntry(textIndexBody, stylename, text);
+					}
+					if (node instanceof TextTocMarkStartElement) {
+						TextTocMarkStartElement textTocMarkStartElement = (TextTocMarkStartElement) node;
+						Node tmp = node.getNextSibling();
+						while (!(tmp instanceof Text)) {
+							tmp = node.getNextSibling();
+						}
+						text = tmp.getTextContent();
+						int headingLevel = textTocMarkStartElement
+								.getTextOutlineLevelAttribute();
+						stylename = "Contents_20_" + headingLevel;
+						ceateIndexBodyEntry(textIndexBody, stylename, text);
+					}
+				}
+				// end of Index Makes support
+			}
+			if (before) {
+				rootNode.insertBefore(textTableOfContent, refparagraphNode);
+			} else {
+				// Insert TOC after the refParagraph
+				Node refNextNode = refparagraphNode.getNextSibling();
+				if (refNextNode == null) {
+					rootNode.appendChild(textTableOfContent);
+				} else {
+					rootNode.insertBefore(textTableOfContent, refNextNode);
+				}
+			}
+			return textTableOfContent;
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					"Failed to create Default TOC", e);
+			throw new RuntimeException("Failed to create Default TOC", e);
+		}
+	}
+
+	private void ceateIndexBodyEntry(TextIndexBodyElement textIndexBody,
+			String stylename, String text) {
+		TextPElement textp = textIndexBody.newTextPElement();
+		textp.setTextStyleNameAttribute(stylename);
+		textp.newTextNode(text);
+		textp.newTextTabElement();
+		textp.newTextNode("1");
+	}
+
+	/**
+	 * Create a new Table Of Content to this document before the reference
+	 * paragraph. The additional paragraph styles list will be included in the
+	 * TOC. Because until you do a full layout of the document, taking into
+	 * account font metrics,line breaking algorithms, hyphenation, image
+	 * positioning, "orphan and widow" rules, etc., you don't know what content
+	 * is on which page. So all the page numbers in TOC are be set value "1".
+	 * Please update the page numbers from AOO Menus: Tools->Update->All Indexes
+	 * and Tables.  If additionalStyle is null then call createDefaultTOC().
+	 * 
+	 * @param refParagraph
+	 *            the reference paragraph before where the TOC inserted.
+	 * @param additionalStyle
+	 *            the additional paragraph styles that you want to include in
+	 *            the TOC
+	 * @param before
+	 *            true:insert TOC before the reference paragraph. 
+	 *            false:insert TOC after the reference paragraph.
+	 * @since 0.8.6
+	 */
+	public TextTableOfContentElement createTOCwithStyle(Paragraph refParagraph,
+			TOCStyle additionalStyle, boolean before) {
+		if(refParagraph==null){
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					"Failed to create Default TOC, The refParagraph where the TOC be inserted is null");
+			throw new RuntimeException("Failed to create Default TOC, The refParagraph where the TOC be inserted is null");
+		}
+		if (additionalStyle == null) {
+			TextTableOfContentElement textTableOfContentElement = createDefaultTOC(refParagraph, before);
+			return textTableOfContentElement;
+		}
+		HashMap<Integer, String> tocstyleList = additionalStyle.getStyle();
+		if (tocstyleList.isEmpty()) {
+			TextTableOfContentElement textTableOfContentElement =createDefaultTOC(refParagraph, before);
+			return textTableOfContentElement;
+		}
+
+		Collection<String> tocvalues = tocstyleList.values();
+		OdfOfficeStyles docstyles = getOrCreateDocumentStyles();
+		Iterable<OdfStyle> paragraphStyles = docstyles
+				.getStylesForFamily(OdfStyleFamily.Paragraph);
+		ArrayList<String> pstyle = new ArrayList<String>();
+		Iterator<OdfStyle> iterator = paragraphStyles.iterator();
+		while (iterator.hasNext()) {
+			OdfStyle style = iterator.next();
+			String name = style.getStyleNameAttribute();
+			pstyle.add(name);
+		}
+		if (!pstyle.containsAll(tocvalues)) {
+			Logger.getLogger(TextDocument.class.getName())
+					.log(Level.SEVERE,
+							"Failed to create TOC with Styles. Some of addtional Styles that you want to include in the TOC can't be found in the document.\n"
+									+ tocvalues.toString());
+			throw new RuntimeException(
+					"Failed to create TOC Styles.Some of addtional Styles that you want to include in the TOC can't be found in the document.");
+		}
+		TextTableOfContentElement textTableOfContent =null;
+		// Additional Styles support
+		HashMap<String, Integer> tmptocstyleList = new HashMap<String, Integer>();
+		if (!tocstyleList.isEmpty()) {
+			Set<Integer> key = tocstyleList.keySet();
+			Iterator<Integer> it = key.iterator();
+			while (it.hasNext()) {
+				Integer textOutlineLevelValue = it.next();
+				String textStyleNameValue = tocstyleList
+						.get(textOutlineLevelValue);
+				tmptocstyleList.put(textStyleNameValue, textOutlineLevelValue);
+			}
+		}
+		// end of Additional Styles support
+
+		Node refparagraphNode = refParagraph.getOdfElement();
+		Node rootNode = refparagraphNode.getParentNode();
+		try {
+			OdfContentDom content = getContentDom();
+			textTableOfContent = content
+					.newOdfElement(TextTableOfContentElement.class);
+			textTableOfContent.setTextNameAttribute("Table of Contents");
+			textTableOfContent.setTextProtectedAttribute(true);
+
+			TextTableOfContentSourceElement textTableOfContentSource = textTableOfContent
+					.newTextTableOfContentSourceElement();
+			textTableOfContentSource.setTextOutlineLevelAttribute(10);
+			textTableOfContentSource.setTextUseIndexMarksAttribute(true);
+			textTableOfContentSource.setTextUseIndexSourceStylesAttribute(true);
+			TextIndexTitleTemplateElement textIndexTitleTemplate = textTableOfContentSource
+					.newTextIndexTitleTemplateElement();
+			textIndexTitleTemplate
+					.setTextStyleNameAttribute("Contents_20_Heading");
+			textIndexTitleTemplate.setTextContent("Table of Contents");
+			for (int i = 1; i <= 10; i++) {
+				TextTableOfContentEntryTemplateElement textTableOfContentEntryTemplate = textTableOfContentSource
+						.newTextTableOfContentEntryTemplateElement(i,
+								"Contents_20_" + i);
+				TextIndexEntryLinkStartElement TextIndexEntryLinkStart = textTableOfContentEntryTemplate
+						.newTextIndexEntryLinkStartElement();
+				TextIndexEntryLinkStart
+						.setTextStyleNameAttribute("Index_20_Link");
+				textTableOfContentEntryTemplate
+						.newTextIndexEntryChapterElement();
+				textTableOfContentEntryTemplate.newTextIndexEntryTextElement();
+				TextIndexEntryTabStopElement TextIndexEntryTabStop = textTableOfContentEntryTemplate
+						.newTextIndexEntryTabStopElement("right");
+				TextIndexEntryTabStop.setStyleLeaderCharAttribute(".");
+				textTableOfContentEntryTemplate
+						.newTextIndexEntryPageNumberElement();
+				textTableOfContentEntryTemplate
+						.newTextIndexEntryLinkEndElement();
+			}
+
+			if (!tocstyleList.isEmpty()) {
+				Set<Integer> key = tocstyleList.keySet();
+				Iterator<Integer> it = key.iterator();
+				while (it.hasNext()) {
+					Integer textOutlineLevelValue = it.next();
+					String textStyleNameValue = tocstyleList
+							.get(textOutlineLevelValue);
+					TextIndexSourceStylesElement textIndexSourceStyles = textTableOfContentSource
+							.newTextIndexSourceStylesElement(textOutlineLevelValue);
+					textIndexSourceStyles
+							.newTextIndexSourceStyleElement(textStyleNameValue);
+				}
+			}
+
+			TextIndexBodyElement textIndexBody = textTableOfContent
+					.newTextIndexBodyElement();
+			TextIndexTitleElement TextIndexTitle = textIndexBody
+					.newTextIndexTitleElement("Table of Contents_Head");
+			TextPElement texp = TextIndexTitle.newTextPElement();
+			texp.setTextStyleNameAttribute("Contents_20_Heading");
+			texp.setTextContent("Table of Contents");
+			Iterator<Paragraph> paragraphIterator = getParagraphIterator();
+			while (paragraphIterator.hasNext()) {
+				Paragraph paragraph = paragraphIterator.next();
+				String text = paragraph.getTextContent();
+				String stylename = paragraph.getStyleName();
+				// Outline support
+				if (paragraph.isHeading()) {
+					int headingLevel = paragraph.getHeadingLevel();
+					if (stylename.length() <= 0) {
+						stylename = "Contents_20_" + headingLevel;
+					}
+					ceateIndexBodyEntry(textIndexBody, stylename, text);
+				}
+				// end of Outline support
+				// Additional Styles support
+				if (tmptocstyleList.containsKey(stylename)) {
+					int headingLevel = tmptocstyleList.get(stylename);
+					stylename = "Contents_20_" + headingLevel;
+					ceateIndexBodyEntry(textIndexBody, stylename, text);
+				}
+				// end of Additional Styles support
+				// Index Makes support
+				TextParagraphElementBase podf = paragraph.getOdfElement();
+				NodeList cns = podf.getChildNodes();
+				for (int i = 0; i < cns.getLength(); i++) {
+					Node node = cns.item(i);
+					if (node instanceof TextTocMarkElement) {
+						TextTocMarkElement textTocMarkElement = (TextTocMarkElement) node;
+						text = textTocMarkElement.getTextStringValueAttribute();
+						int headingLevel = textTocMarkElement
+								.getTextOutlineLevelAttribute();
+						stylename = "Contents_20_" + headingLevel;
+						ceateIndexBodyEntry(textIndexBody, stylename, text);
+					}
+					if (node instanceof TextTocMarkStartElement) {
+						TextTocMarkStartElement textTocMarkStartElement = (TextTocMarkStartElement) node;
+						Node tmp = node.getNextSibling();
+						while (!(tmp instanceof Text)) {
+							tmp = node.getNextSibling();
+						}
+						text = tmp.getTextContent();
+						int headingLevel = textTocMarkStartElement
+								.getTextOutlineLevelAttribute();
+						stylename = "Contents_20_" + headingLevel;
+						ceateIndexBodyEntry(textIndexBody, stylename, text);
+					}
+				}
+				// end of Index Makes support
+			}
+			if (before) {
+				rootNode.insertBefore(textTableOfContent, refparagraphNode);
+			} else {
+				// Insert TOC after the refParagraph
+				Node refNextNode = refparagraphNode.getNextSibling();
+				if (refNextNode == null) {
+					rootNode.appendChild(textTableOfContent);
+				} else {
+					rootNode.insertBefore(textTableOfContent, refNextNode);
+				}
+			}
+			return textTableOfContent;
+			
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					"Failed to create Default TOC", e);
+			throw new RuntimeException("Failed to create Default TOC", e);
+		}
+	}
+	
+	/**
+	 * Copy a Paragraph and insert it before or after the Reference Paragraph in the text document, whether the
+	 * Paragraph is in this document or in a different document.
+	 * 
+	 * @param referenceParagraph
+	 *            - where the Paragraph be inserted 
+	 * @param sourceParagraph
+	 *            - the Paragraph which will be copied
+	 * @param before
+	 *            true:insert Paragraph before the reference paragraph. 
+	 *            false:insert Paragraph after the reference paragraph.       
+	 */
+	public Paragraph insertParagraph(Paragraph referenceParagraph, Paragraph sourceParagraph,boolean before) {
+		boolean isForeignNode = false;
+		try {
+			Node refparagraphNode = referenceParagraph.getOdfElement();
+			if (sourceParagraph.getOdfElement().getOwnerDocument() != getContentDom())
+				isForeignNode = true;
+			 TextParagraphElementBase oldParagraphEle = sourceParagraph.getOdfElement();
+			 TextParagraphElementBase newParagraphEle = (TextParagraphElementBase) oldParagraphEle.cloneNode(true);
+			
+			if (isForeignNode)
+				copyForeignStyleRef(sourceParagraph.getOdfElement(), sourceParagraph.getOwnerDocument());
+			if (isForeignNode) // not in a same document
+				newParagraphEle = (TextParagraphElementBase) cloneForeignElement(newParagraphEle, getContentDom(), true);
+			
+			if (before) {
+				refparagraphNode.getParentNode().insertBefore(newParagraphEle, refparagraphNode);
+			} else {
+				// Insert Paragraph after the refParagraph
+				Node refNextNode = refparagraphNode.getNextSibling();
+				if (refNextNode == null) {
+					refparagraphNode.getParentNode().appendChild(newParagraphEle);
+				} else {
+					refparagraphNode.getParentNode().insertBefore(newParagraphEle, refNextNode);
+				}
+			}
+			
+			return Paragraph.getInstanceof(newParagraphEle);
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+	/**
+	 * Copy a Table and insert it before or after the Reference Paragraph in the text document, whether the
+	 * Table is in this TextDocument or in a different Document.
+	 * 
+	 * @param referenceParagraph
+	 *            - where the Paragraph be inserted 
+	 * @param sourceParagraph
+	 *            - the Paragraph which will be copied
+	 * @param before
+	 *            true:insert Paragraph before the reference paragraph. 
+	 *            false:insert Paragraph after the reference paragraph.       
+	 */
+	public Table insertTable(Paragraph referenceParagraph, Table sourceTable,boolean before) {
+		
+		Document ownDocument = sourceTable.getOwnerDocument();
+		TableTableElement newTEle = (TableTableElement)insertOdfElement(referenceParagraph.getOdfElement(),ownDocument,sourceTable.getOdfElement(),before);
+		Table table = Table.getInstance(newTEle);
+		return table;
+	}
+	/**
+	 * Copy a OdfElement and insert it before or after the Reference OdfElement in the TextDocument, whether the
+	 * OdfElement is in this TextDocument or in a different Document.
+	 * 
+	 * @param referenceOdfElement
+	 *            - where the OdfElement be inserted 
+	 * @param sourceDocument
+	 *            - the source Document which contain the sourceOdfElement
+	 * @param sourceOdfElement
+	 *            - the OdfElement which will be copied
+	 * @param before
+	 *            true:insert OdfElement before the reference OdfElement. 
+	 *            false:insert OdfElement after the reference OdfElement.       
+	 */
+	public OdfElement insertOdfElement(OdfElement referenceOdfElement,Document sourceDocument ,OdfElement sourceOdfElement,boolean before) {
+		boolean isForeignNode = false;
+		try {
+			
+			if (sourceOdfElement.getOwnerDocument() != getContentDom())
+				isForeignNode = true;
+			 
+			OdfElement newOdfElement = (OdfElement) sourceOdfElement.cloneNode(true);
+			
+			if (isForeignNode) {
+				copyForeignStyleRef(newOdfElement, sourceDocument);
+				copyLinkedRef(newOdfElement);
+				newOdfElement = (OdfElement) cloneForeignElement(newOdfElement,
+						getContentDom(), true);
+			}
+			
+			if (before) {
+				referenceOdfElement.getParentNode().insertBefore(newOdfElement, referenceOdfElement);
+			} else {
+				// Insert newOdfElement after the referenceOdfElement
+				Node refNextNode = referenceOdfElement.getNextSibling();
+				if (refNextNode == null) {
+					referenceOdfElement.getParentNode().appendChild(newOdfElement);
+				} else {
+					referenceOdfElement.getParentNode().insertBefore(newOdfElement, refNextNode);
+				}
+			}
+			return newOdfElement;
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+	
+	private OdfElement insertOdfElementwithoutstyle(OdfElement referenceOdfElement,Document sourceDocument ,OdfElement sourceOdfElement,boolean before) {
+		try {			 
+			OdfElement newOdfElement = (OdfElement) sourceOdfElement.cloneNode(true);
+			newOdfElement = (OdfElement)  cloneForeignElement(newOdfElement, getContentDom(), true);
+			if (before) {
+				referenceOdfElement.getParentNode().insertBefore(newOdfElement, referenceOdfElement);
+			} else {
+				// Insert newOdfElement after the referenceOdfElement
+				Node refNextNode = referenceOdfElement.getNextSibling();
+				if (refNextNode == null) {
+					referenceOdfElement.getParentNode().appendChild(newOdfElement);
+				} else {
+					referenceOdfElement.getParentNode().insertBefore(newOdfElement, refNextNode);
+				}
+			}
+			return newOdfElement;
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+	
+	/**
+	 * Copy text content of the source TextDocument and insert it to the current TextDocument
+	 * after the reference Paragraph, with Styles or without Styles.
+	 * 
+	 * @param sourceDocument
+	 *            the source TextDocument
+	 * @param referenceParagraph
+	 *  		  where the text content of the source TextDocument be inserted 
+	 * @param isCopyStyle
+	 *            true:copy the styles in source document to current TextDocment. 
+	 *            false:don't copy the styles in source document to current TextDocment. 
+	 */
+	public void insertContentFromDocumentAfter(TextDocument sourceDocument, Paragraph referenceParagraph, boolean isCopyStyle){
+		try {
+			OfficeTextElement sroot = sourceDocument.getContentRoot();
+			NodeList clist = sroot.getChildNodes();
+			for (int i=(clist.getLength()-1); i>=0; i--) {
+				OdfElement node = (OdfElement) clist.item(i);
+				if(isCopyStyle){
+					insertOdfElement(referenceParagraph.getOdfElement(), sourceDocument, node, false);
+				}
+				else {
+					insertOdfElementwithoutstyle(referenceParagraph.getOdfElement(), sourceDocument, node, false);
+				}
+			}
+			
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+	/**
+	 * Copy text content of the source TextDocument and insert it to the current TextDocument
+	 * before the reference Paragraph, with Styles or without Styles.
+	 * 
+	 * @param srcDoc
+	 *            the source TextDocument
+	 * @param referenceParagraph
+	 *  		  where the text content of the source TextDocument be inserted 
+	 * @param isCopyStyle
+	 *            true:copy the styles in source document to current TextDocment. 
+	 *            false:don't copy the styles in source document to current TextDocment. 
+	 */
+	public void insertContentFromDocumentBefore(TextDocument sourceDocument, Paragraph referenceParagraph, boolean isCopyStyle){
+		try {
+			OfficeTextElement sroot = sourceDocument.getContentRoot();
+			NodeList clist = sroot.getChildNodes();
+			for (int i = 0; i < clist.getLength(); i++) {
+				OdfElement node = (OdfElement) clist.item(i);
+				if(isCopyStyle){
+					insertOdfElement(referenceParagraph.getOdfElement(), sourceDocument, node, true);
+				}
+				else {
+					insertOdfElementwithoutstyle(referenceParagraph.getOdfElement(), sourceDocument, node, true);
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	private FormContainerImpl getFormContainerImpl() {
+		if (formContainerImpl == null) {
+			formContainerImpl = new FormContainerImpl();
+		}
+		return formContainerImpl;
+	}
+
+	private class FormContainerImpl extends AbstractFormContainer {
+
+		public OfficeFormsElement getFormContainerElement() {
+			OfficeFormsElement forms = null;
+			try {
+				OfficeTextElement root = getContentRoot();
+				forms = OdfElement.findFirstChildNode(OfficeFormsElement.class,
+						root);
+				if (forms == null) {
+					Node firstChild = root.getFirstChild();
+					OfficeFormsElement officeForms = ((OdfFileDom) getContentDom())
+							.newOdfElement(OfficeFormsElement.class);
+					forms = (OfficeFormsElement) root.insertBefore(officeForms,
+							firstChild);
+				}
+				return forms;
+			} catch (Exception e) {
+				Logger.getLogger(TextDocument.class.getName()).log(
+						Level.SEVERE, null, e);
+			}
+			return forms;
+		}
+
+	}
+
+	/**
+	 * Create a form with specified name in this text document.
+	 * 
+	 * @see FormContainer#createForm(String)
+	 */
+	public Form createForm(String name) {
+		return getFormContainerImpl().createForm(name);
+	}
+
+	/**
+	 * Get a form iterator to traverse all the forms in this document.
+	 * 
+	 * @see FormContainer#getFormIterator()
+	 */
+	public Iterator<Form> getFormIterator() {
+		return getFormContainerImpl().getFormIterator();
+	}
+
+	/**
+	 * Remove a form with the specified name in this document.
+	 * 
+	 * @see FormContainer#removeForm(Form)
+	 */
+	public boolean removeForm(Form form) {
+		return getFormContainerImpl().removeForm(form);
+	}
+
+//	@Override
+	public Form getFormByName(String name) {
+		return getFormContainerImpl().getFormByName(name);
+	}
+
+//	@Override
+	public OfficeFormsElement getFormContainerElement() {
+		return getFormContainerImpl().getFormContainerElement();
+	}
+
+//	@Override
+	public boolean getApplyDesignMode() {
+		return getFormContainerImpl().getApplyDesignMode();
+	}
+
+//	@Override
+	public boolean getAutomaticFocus() {
+		return getFormContainerImpl().getAutomaticFocus();
+	}
+
+//	@Override
+	public void setApplyDesignMode(boolean isDesignMode) {
+		getFormContainerImpl().setApplyDesignMode(isDesignMode);
+
+	}
+
+//	@Override
+	public void setAutomaticFocus(boolean isAutoFocus) {
+		getFormContainerImpl().setAutomaticFocus(isAutoFocus);
+
+	}
+
+//	@Override
+	public Control createDrawControl() {
+		OdfElement parent = this.getDrawControlContainerElement();
+		OdfFileDom ownerDom = (OdfFileDom) parent.getOwnerDocument();
+		DrawControlElement element = ownerDom
+				.newOdfElement(DrawControlElement.class);
+		Node refChild = OdfElement.findFirstChildNode(
+				TextSequenceDeclsElement.class, parent);
+		parent.insertBefore(element, refChild.getNextSibling());
+		Control control = new Control(element);
+		Component.registerComponent(control, element);
+		return control;
+	}
+
+//	@Override
+	public OdfElement getDrawControlContainerElement() {
+		OdfElement element = null;
+		try {
+			element = this.getContentRoot();
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					null, e);
+		}
+		return element;
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/chart/AbstractChartContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/AbstractChartContainer.java
new file mode 100644
index 0000000..795a14e
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/AbstractChartContainer.java
@@ -0,0 +1,212 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+package org.odftoolkit.simple.chart;
+
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.xpath.XPathConstants;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.chart.ChartChartElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.ChartDocument;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.w3c.dom.NodeList;
+
+/**
+ * AbstractChartContainer is an abstract implementation of the ChartContainer
+ * interface, with a default implementation for every method defined in
+ * ChartContainer.
+ * 
+ * @since 0.6
+ */
+public abstract class AbstractChartContainer implements ChartContainer {
+	private Document mDocument;
+	private Map<String, Chart> mCharts;
+	private String ROOT_STRING = "./";
+
+	/**
+	 * The constructor to create a chart container
+	 * 
+	 * @param doc
+	 *            - the onwer document
+	 */
+	protected AbstractChartContainer(Document doc) {
+		try {
+			mDocument = doc;
+			// init chart container by searching the embeded document
+			mCharts = new HashMap<String, Chart>();
+			List<Document> charts = mDocument.getEmbeddedDocuments(Document.OdfMediaType.CHART);
+			for (Document chartDoc : charts) {
+				OdfContentDom contentDom = chartDoc.getContentDom();
+				ChartChartElement chartEle = (ChartChartElement) contentDom.getXPath().evaluate("//chart:chart[1]",
+						contentDom, XPathConstants.NODE);
+				String documentPath = chartDoc.getDocumentPath();
+				mCharts.put(documentPath, new Chart(chartEle, documentPath));
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(AbstractChartContainer.class.getName()).log(Level.SEVERE, null, ex);
+		}
+	}
+
+	/**
+	 * Returns the <draw:frame> element which can contain a chart image object.
+	 * 
+	 * @return the draw:frame element
+	 */
+	protected abstract DrawFrameElement getChartFrame() throws Exception;
+
+	public Chart createChart(String title, DataSet dataset, Rectangle rect) {
+		try {
+			String sName = mDocument.getDocumentPath() + "/" + title + "_" + System.currentTimeMillis();
+			// embed this chart document
+			ChartDocument newChartDocument = ChartDocument.newChartDocument();
+			mDocument.insertDocument(newChartDocument, sName);
+			OdfContentDom contentDom = newChartDocument.getContentDom();
+			ChartChartElement chartEle = (ChartChartElement) (contentDom.getXPath().evaluate("//chart:chart[1]",
+					contentDom, XPathConstants.NODE));
+			Chart chart = new Chart(chartEle, sName);
+			chart.setChartTitle(title);
+			chart.setChartType(ChartType.BAR);
+			chart.setUseLegend(true);
+			chart.setChartData(dataset);
+			DrawFrameElement drawFrame = getChartFrame();
+			drawFrame.setProperty(StyleGraphicPropertiesElement.OleDrawAspect, "1");
+			drawFrame.setPresentationUserTransformedAttribute(true);
+			drawFrame.removeAttributeNS(OdfDocumentNamespace.PRESENTATION.getUri(), "placeholder");
+			if (rect != null) {
+				drawFrame.setSvgXAttribute(new Integer(rect.x).toString());
+				drawFrame.setSvgYAttribute(new Integer(rect.y).toString());
+				drawFrame.setSvgWidthAttribute(new Integer(rect.width).toString());
+				drawFrame.setSvgHeightAttribute(new Integer(rect.height).toString());
+			}
+			DrawObjectElement drawObject = OdfElement.findFirstChildNode(DrawObjectElement.class, drawFrame);
+			if(drawObject == null){
+				drawObject = drawFrame.newDrawObjectElement();
+			}
+			if (dataset.getCellRangeAddress() != null){
+				drawObject.setDrawNotifyOnUpdateOfRangesAttribute(dataset.getCellRangeAddress().toString());
+			}
+			drawObject.setXlinkHrefAttribute(ROOT_STRING + sName);
+			drawObject.setXlinkTypeAttribute("simple");
+			drawObject.setXlinkShowAttribute("embed");
+			drawObject.setXlinkActuateAttribute("onLoad");
+			mCharts.put(sName, chart);
+			return chart;
+		} catch (Exception ex) {
+			Logger.getLogger(AbstractChartContainer.class.getName()).log(Level.SEVERE, null, ex);
+			return null;
+		}
+	}
+
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr,
+			boolean firstRowAsLabel, boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect) {
+		DataSet dataset = new DataSet(cellRangeAddr, document, firstRowAsLabel, firstColumnAsLabel, rowAsDataSeries);
+		return createChart(title, dataset, rect);
+	}
+
+	public Chart createChart(String title, String[] labels, String[] legends, double[][] data, Rectangle rect) {
+		DataSet dataset = new DataSet(labels, legends, data);
+		return createChart(title, dataset, rect);
+	}
+
+	public void deleteChartById(String chartId) {
+		try {
+			// 1.remove from the container
+			mCharts.remove(chartId);
+			// 2.remove the embedded document
+			mDocument.removeDocument(chartId);
+			// 3.remove the draw:frame element in main document
+			NodeList frameObjects;
+			frameObjects = mDocument.getContentDom().getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(),
+					"object");
+			for (int i = 0; i < frameObjects.getLength(); i++) {
+				DrawObjectElement object = (DrawObjectElement) frameObjects.item(i);
+				if (object.getXlinkHrefAttribute().toString().endsWith(chartId)) {
+					DrawFrameElement frame = (DrawFrameElement) object.getParentNode();
+					frame.getParentNode().removeChild(frame);
+				}
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(AbstractChartContainer.class.getName()).log(Level.SEVERE, null, ex);
+		}
+	}
+
+	public void deleteChartByTitle(String title) {
+		List<String> delChartIDList = new ArrayList<String>();
+		Set<String> chartSet = mCharts.keySet();
+		for (String chartIter : chartSet) {
+			Chart chart = mCharts.get(chartIter);
+			if (chart.getChartTitle().equals(title)) {
+				delChartIDList.add(chartIter);
+			}
+		}
+		for (int i = 0; i < delChartIDList.size(); i++) {
+			deleteChartById(delChartIDList.get(i));
+		}
+	}
+
+	public Chart getChartById(String chartId) {
+		try {
+			Document embedChartDoc = mDocument.getEmbeddedDocument(chartId);
+			if (embedChartDoc != null) {
+				OdfContentDom contentDom = embedChartDoc.getContentDom();
+				ChartChartElement chartEle = (ChartChartElement) contentDom.getXPath().evaluate("//chart:chart[1]",
+						contentDom, XPathConstants.NODE);
+				Chart chart = new Chart(chartEle, chartId);
+				if (mCharts.get(chartId) != null) {
+					return chart;
+				}
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(AbstractChartContainer.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return null;
+	}
+
+	public List<Chart> getChartByTitle(String title) {
+		List<Chart> chartList = new ArrayList<Chart>();
+		Set<String> chartSet = mCharts.keySet();
+		for (String chartIter : chartSet) {
+			Chart chart = mCharts.get(chartIter);
+			if (chart.getChartTitle().equals(title)) {
+				chartList.add(chart);
+			}
+		}
+		return chartList;
+	}
+
+	public int getChartCount() {
+		int cnt = mDocument.getEmbeddedDocuments(Document.OdfMediaType.CHART).size();
+		return cnt;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/chart/Chart.java b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/Chart.java
new file mode 100644
index 0000000..fb6870a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/Chart.java
@@ -0,0 +1,914 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+package org.odftoolkit.simple.chart;
+
+import java.util.Random;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartDimensionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.chart.ChartLegendPositionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dProjectionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.dr3d.Dr3dShadeModeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLegendExpansionAttribute;
+import org.odftoolkit.odfdom.dom.element.chart.ChartAxisElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartCategoriesElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartChartElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartDataPointElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartFloorElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartGridElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartLegendElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartPlotAreaElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartSeriesElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartTitleElement;
+import org.odftoolkit.odfdom.dom.element.chart.ChartWallElement;
+import org.odftoolkit.odfdom.dom.element.dr3d.Dr3dLightElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleChartPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.w3c.dom.NodeList;
+
+/**
+ * <code>Chart</code> represents the chart feature of the ODF document.
+ * <code>Chart</code> provides methods to get/set chart title, get/set chart
+ * data, etc.
+ * 
+ * @since 0.6
+ */
+public class Chart {
+
+	private final static String AXIS_SVG_X = "3.104cm";
+	private final static String AXIS_SVG_Y = "6.359cm";
+	private final static String AXIS_FONTSIZE = "10pt";
+	private final static String AXIS_FONTSIZEASIAN = "10pt";
+	private final static String AXIS_FONTSIZECOMPLEX = "10pt";
+	private final static String CHART_SVG_WIDTH = "7cm";
+	private final static String CHART_SVG_HEIGH = "8cm";
+	private final static String CHART_CLASS_TYPE = "chart:bar";
+	private final static String CHART_PROPERTIES_STROKE = "none";
+	private final static String PLOTAREA_SVG_HEIGHT = "7.52cm";
+	private final static String PLOTAREA_SVG_WIDTH = "4.73cm";
+	private final static String PLOTAREA_SVG_X = "0.16cm";
+	private final static String PLOTAREA_SVG_Y = "1.375cm";
+
+	private ChartChartElement chartElement;
+	private DataSet dataSet;
+	private ChartTitleElement chartTitle;
+	private ChartLegendElement legend;
+	private ChartPlotAreaElement plotArea;
+	private TableTableElement table;
+	private TableTableHeaderColumnsElement headerColumns;
+	private TableTableColumnsElement columns;
+	private TableTableColumnElement column;
+	private TableTableHeaderRowsElement headerRows;
+	private TableTableRowElement headerRow;
+	private TableTableRowsElement rows;
+	private String chartID;
+
+	private boolean isApply3DEffect = false;
+	private boolean isUseLegend = false;
+
+	Chart(ChartChartElement chartElement, String chartID) {
+		this.chartElement = chartElement;
+		this.chartID = chartID;
+		init();
+	}
+
+	private void init() {
+		chartElement.setSvgWidthAttribute(CHART_SVG_WIDTH);
+		chartElement.setSvgHeightAttribute(CHART_SVG_HEIGH);
+		chartElement.setChartClassAttribute(CHART_CLASS_TYPE);
+		chartElement.setProperty(StyleGraphicPropertiesElement.Stroke, CHART_PROPERTIES_STROKE);
+	}
+
+	private void setPlotArea() {
+		// chart:plotarea
+		NodeList plotAreas = chartElement.getElementsByTagName(ChartPlotAreaElement.ELEMENT_NAME.getQName());
+		if (plotAreas.getLength() > 0) {
+			chartElement.removeChild(plotAreas.item(0));
+		}
+		plotArea = (ChartPlotAreaElement) chartElement.newChartPlotAreaElement();
+
+		plotArea = (ChartPlotAreaElement) plotAreas.item(0);
+		plotArea.setProperty(StyleChartPropertiesElement.RightAngledAxes, "true");
+		plotArea.setSvgHeightAttribute(PLOTAREA_SVG_HEIGHT);
+		plotArea.setSvgWidthAttribute(PLOTAREA_SVG_WIDTH);
+		plotArea.setSvgXAttribute(PLOTAREA_SVG_X);
+		plotArea.setSvgYAttribute(PLOTAREA_SVG_Y);
+
+		// chart:axis
+		ChartAxisElement axisX = plotArea.newChartAxisElement(ChartDimensionAttribute.Value.x.toString());
+		if (getTableCellRange() != null) {
+			ChartCategoriesElement categories = (ChartCategoriesElement) axisX.newChartCategoriesElement();
+			categories.setTableCellRangeAddressAttribute(getTableCellRange());
+		}
+		axisX.setChartDimensionAttribute(ChartDimensionAttribute.Value.x.toString());
+		axisX.setChartNameAttribute("primary-x");
+		axisX.setProperty(StyleChartPropertiesElement.DisplayLabel, "true");
+		axisX.setProperty(StyleChartPropertiesElement.Logarithmic, "false");
+		axisX.setProperty(StyleChartPropertiesElement.ReverseDirection, "false");
+		axisX.setProperty(StyleChartPropertiesElement.LineBreak, "false");
+		axisX.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+		axisX.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+		axisX.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+		axisX.setProperty(StyleTextPropertiesElement.FontCharsetComplex, "10pt");
+
+		ChartAxisElement axisY = (ChartAxisElement) plotArea.newChartAxisElement(ChartDimensionAttribute.Value.y
+				.toString());
+		axisY.setChartDimensionAttribute(ChartDimensionAttribute.Value.y.toString());
+		axisY.setChartNameAttribute("primary-y");
+		axisY.setProperty(StyleChartPropertiesElement.DisplayLabel, "true");
+		axisY.setProperty(StyleChartPropertiesElement.Logarithmic, "false");
+		axisY.setProperty(StyleChartPropertiesElement.ReverseDirection, "false");
+		axisY.setProperty(StyleChartPropertiesElement.LineBreak, "false");
+		axisY.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+		axisY.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+		axisY.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+		axisY.setProperty(StyleTextPropertiesElement.FontCharsetComplex, "10pt");
+
+		// chart:grid
+		ChartGridElement grid = axisY.newChartGridElement();
+		grid.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+		grid.setChartClassAttribute(ChartClassAttribute.Value.MAJOR.toString());
+
+		// chart:series
+		int numSeries = dataSet.getDataSeriesCount();
+		Object[] valueCellRange = getValueCellRange();
+		Object[] labelCellRange = getLabelCellRange();
+
+		for (int i = 0; i < numSeries; i++) {
+			ChartSeriesElement series = plotArea.newChartSeriesElement();
+			series.setChartClassAttribute(chartElement.getChartClassAttribute());
+			series.setProperty(StyleGraphicPropertiesElement.Stroke, "solid");
+			series.setProperty(StyleGraphicPropertiesElement.FillColor, getRandColorCode());
+			series.setProperty(StyleGraphicPropertiesElement.EdgeRounding, "0%");
+			series.setProperty(StyleTextPropertiesElement.FontSize, "6pt");
+			series.setProperty(StyleTextPropertiesElement.FontSizeAsian, "6pt");
+			series.setProperty(StyleTextPropertiesElement.FontCharsetComplex, "6pt");
+
+			if ((String) valueCellRange[i] != null) {
+				series.setChartValuesCellRangeAddressAttribute((String) valueCellRange[i]);
+			}
+
+			if ((String) labelCellRange[i] != null) {
+				series.setChartLabelCellAddressAttribute((String) labelCellRange[i]);
+			}
+
+			ChartDataPointElement point = series.newChartDataPointElement();
+			point.setChartRepeatedAttribute(new Integer(numSeries));
+		}
+
+		ChartWallElement wall = plotArea.newChartWallElement();
+		wall.setProperty(StyleGraphicPropertiesElement.Stroke, "none");
+		wall.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+		wall.setProperty(StyleGraphicPropertiesElement.Fill, "none");
+		wall.setProperty(StyleGraphicPropertiesElement.FillColor, "#e6e6e6");
+
+		ChartFloorElement floor = plotArea.newChartFloorElement();
+		floor.setProperty(StyleGraphicPropertiesElement.Stroke, "none");
+		floor.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+		floor.setProperty(StyleGraphicPropertiesElement.Fill, "none");
+		floor.setProperty(StyleGraphicPropertiesElement.FillColor, "#e6e6e6");
+	}
+
+	/**
+	 * 3D effect manipulation, get whether the chart apples 3D effect
+	 * 
+	 * @return return true if the chart is applied 3D effect
+	 */
+	public boolean IsApply3DEffect() {
+		return isApply3DEffect;
+	}
+
+	/**
+	 * chart axis manipulation, temporarily only consider the axis title
+	 * 
+	 * @param dimType
+	 *            the chart axis dimension, x, y or z
+	 * @return return axis title according to the given dimension,null if the
+	 *         specific dimensional axis has no title
+	 */
+	public String getAxisTitle(String dimType) {
+		NodeList chartAxises = (NodeList) plotArea.getElementsByTagName(ChartAxisElement.ELEMENT_NAME.getQName());
+		for (int i = 0; i < chartAxises.getLength(); i++) {
+			ChartAxisElement axis = (ChartAxisElement) chartAxises.item(i);
+			String dimension = axis.getAttributeNS(OdfDocumentNamespace.CHART.getUri(), "dimension");
+			if (dimension.equals(dimType)) {
+				NodeList titles = axis.getElementsByTagName(ChartTitleElement.ELEMENT_NAME.getQName());
+				ChartTitleElement axisTitle = (ChartTitleElement) titles.item(0);
+				NodeList paras = (NodeList) axisTitle.getElementsByTagName(TextPElement.ELEMENT_NAME.getQName());
+				return paras.item(0).getTextContent();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * chart data manipulation, get the chart data
+	 * 
+	 * @return return the chart data
+	 */
+	public DataSet getChartData() {
+		String[] labels;
+		String[] legends;
+		double[][] values;
+
+		if (dataSet == null) {
+			this.dataSet = new DataSet();
+			if (table == null) {
+				table = (TableTableElement) chartElement
+						.getElementsByTagName(TableTableElement.ELEMENT_NAME.getQName()).item(0);
+				headerRows = (TableTableHeaderRowsElement) table.getElementsByTagName(
+						TableTableHeaderRowsElement.ELEMENT_NAME.getQName()).item(0);
+				headerRow = (TableTableRowElement) table.getElementsByTagName(
+						TableTableRowElement.ELEMENT_NAME.getQName()).item(0);
+				NodeList headerCells = headerRow.getElementsByTagName(TableTableCellElement.ELEMENT_NAME.getQName());
+
+				// column count
+				int legendcount = headerCells.getLength() - 1;
+				legends = new String[legendcount];
+				for (int i = 1; i < legendcount + 1; i++) {
+					TableTableCellElement headerCell = (TableTableCellElement) headerCells.item(i);
+					legends[i - 1] = ((OdfTextParagraph) headerCell.getElementsByTagName(
+							TextPElement.ELEMENT_NAME.getQName()).item(0)).getTextContent();
+				}
+
+				rows = (TableTableRowsElement) table
+						.getElementsByTagName(TableTableRowsElement.ELEMENT_NAME.getQName()).item(0);
+				NodeList row = rows.getElementsByTagName(TableTableRowElement.ELEMENT_NAME.getQName());
+
+				// row count
+				int labelcount = row.getLength();
+				values = new double[legendcount][labelcount];
+				labels = new String[labelcount];
+				for (int i = 0; i < labelcount; i++) {
+					NodeList cells = ((TableTableRowElement) row.item(i)).getElementsByTagNameNS(
+							OdfDocumentNamespace.TABLE.getUri(), "table-cell");
+					labels[i] = ((OdfTextParagraph) ((TableTableCellElement) cells.item(0)).getElementsByTagNameNS(
+							OdfDocumentNamespace.TEXT.getUri(), "p").item(0)).getTextContent();
+					for (int j = 0; j < legendcount; j++) {
+						String aValue = ((TableTableCellElement) cells.item(j + 1)).getOdfAttributeValue(OdfName
+								.newName(OdfNamespace.newNamespace(OdfDocumentNamespace.OFFICE), "value"));
+						if (aValue == null || aValue.equals("")) {
+							values[j][i] = Double.NaN;
+						} else {
+							values[j][i] = Double.valueOf(aValue).doubleValue();
+						}
+					}
+				}
+				dataSet.setValues(labels, legends, values);
+			}
+		}
+		return dataSet;
+	}
+
+	/**
+	 * chart title manipulation, get the current chart title
+	 * 
+	 * @return return the chart title
+	 */
+	public String getChartTitle() {
+		if (chartTitle == null) {
+			chartTitle = (ChartTitleElement) chartElement.getElementsByTagName(
+					ChartTitleElement.ELEMENT_NAME.getQName()).item(0);
+		}
+		NodeList paras = (NodeList) chartTitle.getElementsByTagName(TextPElement.ELEMENT_NAME.getQName());
+		if (paras.getLength() > 0) {
+			return paras.item(0).getTextContent();
+		} else {
+			return "";
+		}
+	}
+
+	/**
+	 * chart type manipulation, get the current chart type
+	 * 
+	 * @return the chart type
+	 */
+	public ChartType getChartType() {
+		return ChartType.enumValueOf(chartElement.getChartClassAttribute());
+	}
+
+	/**
+	 * chart id manipulation, get the current chart id
+	 * 
+	 * @return the chart id
+	 */
+	public String getChartID() {
+		return chartID;
+	}
+
+	/**
+	 * chart legend manipulation
+	 * 
+	 *@return returns true if it is using legend, otherwise returns false
+	 */
+	public boolean isUseLegend() {
+		return isUseLegend;
+	}
+
+	/**
+	 * 3D effect manipulation, set to apply 3D effect
+	 * 
+	 * @param _3deffect
+	 *            a flag specifying whether or not apply a 3D effect
+	 */
+	public void setApply3DEffect(boolean _3deffect) {
+		isApply3DEffect = _3deffect;
+		if (_3deffect) {
+			legend.setProperty(StyleGraphicPropertiesElement.Stroke, "none");
+			legend.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+			legend.setProperty(StyleGraphicPropertiesElement.Fill, "none");
+			legend.setProperty(StyleGraphicPropertiesElement.FillColor, "#e6e6e6");
+			legend.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+			legend.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+			legend.setProperty(StyleTextPropertiesElement.FontSizeComplex, "10pt");
+
+			plotArea.setDr3dVpnAttribute("(0.416199821709347 0.173649045905254 0.892537795986984)");
+			plotArea.setDr3dVrpAttribute("(17634.6218373783 10271.4823817647 24594.8639082739)");
+			plotArea.setDr3dVupAttribute("(-0.0733876362771618 0.984807599917971 -0.157379306090273)");
+			plotArea.setDr3dProjectionAttribute(Dr3dProjectionAttribute.Value.PARALLEL.toString());
+			plotArea.setDr3dDistanceAttribute("4.2cm");
+			plotArea.setDr3dFocalLengthAttribute("8cm");
+			plotArea.setDr3dShadowSlantAttribute("0");
+			plotArea.setDr3dShadeModeAttribute(Dr3dShadeModeAttribute.Value.FLAT.toString());
+			plotArea.setDr3dAmbientColorAttribute("#999999");
+			plotArea.setDr3dLightingModeAttribute("");
+
+			plotArea.setProperty(StyleChartPropertiesElement.ThreeDimensional, "true");
+			plotArea.setProperty(StyleChartPropertiesElement.SortByXValues, "false");
+			plotArea.setProperty(StyleChartPropertiesElement.RightAngledAxes, "true");
+
+			NodeList chartAxises = (NodeList) plotArea.getElementsByTagName(ChartAxisElement.ELEMENT_NAME.getQName());
+			for (int i = 0; i < chartAxises.getLength(); i++) {
+				ChartAxisElement axis = (ChartAxisElement) chartAxises.item(i);
+				if (axis.getChartDimensionAttribute().equals("x")) {
+					// x axis
+					axis.setProperty(StyleChartPropertiesElement.DisplayLabel, "true");
+					axis.setProperty(StyleChartPropertiesElement.Logarithmic, "false");
+					axis.setProperty(StyleChartPropertiesElement.ReverseDirection, "false");
+					axis.setProperty(StyleChartPropertiesElement.LineBreak, "false");
+					axis.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+					axis.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeComplex, "10pt");
+				}
+				if (axis.getChartDimensionAttribute().equals("y")) {
+					// y axis
+					axis.setProperty(StyleTextPropertiesElement.FontSize, "9pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeAsian, "9pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeComplex, "9pt");
+				}
+				if (axis.getChartDimensionAttribute().equals("z")) {
+					// z axis
+					axis.setProperty(StyleChartPropertiesElement.DisplayLabel, "true");
+					axis.setProperty(StyleChartPropertiesElement.Logarithmic, "false");
+					axis.setProperty(StyleChartPropertiesElement.ReverseDirection, "false");
+					axis.setProperty(StyleChartPropertiesElement.LineBreak, "false");
+					axis.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+					axis.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeComplex, "10pt");
+				}
+			}
+
+			Dr3dLightElement light1 = plotArea.newDr3dLightElement("");
+			light1.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light1.setDr3dDirectionAttribute("(0 0 1)");
+			light1.setDr3dEnabledAttribute(new Boolean(false));
+			light1.setDr3dSpecularAttribute(new Boolean(true));
+			Dr3dLightElement light2 = plotArea.newDr3dLightElement("");
+			light2.setDr3dDiffuseColorAttribute("#999999");
+			light2.setDr3dDirectionAttribute("(-0.2 0.7 0.6)");
+			light2.setDr3dEnabledAttribute(new Boolean(true));
+			light2.setDr3dSpecularAttribute(new Boolean(false));
+			Dr3dLightElement light3 = plotArea.newDr3dLightElement("");
+			light3.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light3.setDr3dDirectionAttribute("(0 0 1)");
+			light3.setDr3dEnabledAttribute(new Boolean(false));
+			light3.setDr3dSpecularAttribute(new Boolean(false));
+			Dr3dLightElement light4 = plotArea.newDr3dLightElement("");
+			light4.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light4.setDr3dDirectionAttribute("(0 0 1)");
+			light4.setDr3dEnabledAttribute(new Boolean(false));
+			light4.setDr3dSpecularAttribute(new Boolean(false));
+			Dr3dLightElement light5 = plotArea.newDr3dLightElement("");
+			light5.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light5.setDr3dDirectionAttribute("(0 0 1)");
+			light5.setDr3dEnabledAttribute(new Boolean(false));
+			light5.setDr3dSpecularAttribute(new Boolean(false));
+			Dr3dLightElement light6 = plotArea.newDr3dLightElement("");
+			light6.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light6.setDr3dDirectionAttribute("(0 0 1)");
+			light6.setDr3dEnabledAttribute(new Boolean(false));
+			light6.setDr3dSpecularAttribute(new Boolean(false));
+			Dr3dLightElement light7 = plotArea.newDr3dLightElement("");
+			light7.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light7.setDr3dDirectionAttribute("(0 0 1)");
+			light7.setDr3dEnabledAttribute(new Boolean(false));
+			light7.setDr3dSpecularAttribute(new Boolean(false));
+			Dr3dLightElement light8 = plotArea.newDr3dLightElement("");
+			light8.setDr3dDiffuseColorAttribute("#b3b3b3");
+			light8.setDr3dDirectionAttribute("(0 0 1)");
+			light8.setDr3dEnabledAttribute(new Boolean(false));
+			light8.setDr3dSpecularAttribute(new Boolean(false));
+		} else {
+			NodeList lights = plotArea.getElementsByTagName(Dr3dLightElement.ELEMENT_NAME.getQName());
+			for (int i = 0; i < lights.getLength(); i++) {
+				plotArea.removeChild(lights.item(i));
+			}
+			if (lights.getLength() > 0) {
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "vpn");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "vrn");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "vun");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "projection");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "distance");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "focal-length");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "shadow-slant");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "shade-mode");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "ambient-color");
+				plotArea.removeAttributeNS(OdfDocumentNamespace.SVG.getUri(), "lighting-mode");
+				plotArea.removeProperty(StyleChartPropertiesElement.ThreeDimensional);
+				plotArea.removeProperty(StyleChartPropertiesElement.SortByXValues);
+				plotArea.setProperty(StyleChartPropertiesElement.RightAngledAxes, "true");
+			}
+			NodeList chartAxises = (NodeList) plotArea.getElementsByTagName(ChartAxisElement.ELEMENT_NAME.getQName());
+			for (int i = 0; i < chartAxises.getLength(); i++) {
+				ChartAxisElement axis = (ChartAxisElement) chartAxises.item(i);
+				if (axis.getChartDimensionAttribute().equals("x")) {
+					// x axis
+					axis.setProperty(StyleChartPropertiesElement.DisplayLabel, "true");
+					axis.setProperty(StyleChartPropertiesElement.Logarithmic, "false");
+					axis.setProperty(StyleChartPropertiesElement.ReverseDirection, "false");
+					axis.setProperty(StyleChartPropertiesElement.LineBreak, "false");
+					axis.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+					axis.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeComplex, "10pt");
+				}
+
+				if (axis.getChartDimensionAttribute().equals("y")) {
+					// y axis
+					axis.setProperty(StyleChartPropertiesElement.DisplayLabel, "true");
+					axis.setProperty(StyleChartPropertiesElement.Logarithmic, "false");
+					axis.setProperty(StyleChartPropertiesElement.ReverseDirection, "false");
+					axis.setProperty(StyleChartPropertiesElement.LineBreak, "false");
+					axis.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+					axis.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+					axis.setProperty(StyleTextPropertiesElement.FontCharsetComplex, "10pt");
+				}
+
+				if (axis.getChartDimensionAttribute().equals("z")) {
+					// z axis
+					axis.removeProperty(StyleChartPropertiesElement.DisplayLabel);
+					axis.removeProperty(StyleChartPropertiesElement.Logarithmic);
+					axis.removeProperty(StyleChartPropertiesElement.ReverseDirection);
+					axis.removeProperty(StyleChartPropertiesElement.LineBreak);
+					axis.removeProperty(StyleGraphicPropertiesElement.StrokeColor);
+					axis.removeProperty(StyleTextPropertiesElement.FontSize);
+					axis.removeProperty(StyleTextPropertiesElement.FontSizeAsian);
+					axis.removeProperty(StyleTextPropertiesElement.FontSizeComplex);
+				}
+			}
+		}
+	}
+
+	/**
+	 * chart axis manipulation, set the chart axis title according to the give
+	 * dimension
+	 * 
+	 * @param dimType
+	 *            the chart axis dimension, x,y, or z
+	 * @param title
+	 *            the title of axis
+	 */
+	public void setAxisTitle(String dimType, String title) {
+		NodeList chartAxises = (NodeList) plotArea.getElementsByTagName(ChartAxisElement.ELEMENT_NAME.getQName());
+		for (int i = 0; i < chartAxises.getLength(); i++) {
+			ChartAxisElement axis = (ChartAxisElement) chartAxises.item(i);
+			String dimension = axis.getAttributeNS(OdfDocumentNamespace.CHART.getUri(), "dimension");
+			if (dimension.equals(dimType)) {
+				NodeList titles = axis.getElementsByTagName(ChartTitleElement.ELEMENT_NAME.getQName());
+				ChartTitleElement axisTitle;
+				if (titles.getLength() == 0) {
+					axisTitle = axis.newChartTitleElement();
+					if (dimension.equals(ChartDimensionAttribute.Value.x.toString())) {
+						axisTitle.setSvgXAttribute(AXIS_SVG_X);
+						axisTitle.setSvgYAttribute(AXIS_SVG_Y);
+					} else {
+						axisTitle.setSvgXAttribute("0.161cm");
+						axisTitle.setSvgYAttribute("4.188cm");
+					}
+
+					axisTitle.setProperty(StyleTextPropertiesElement.FontSize, AXIS_FONTSIZE);
+					axisTitle.setProperty(StyleTextPropertiesElement.FontSizeAsian, AXIS_FONTSIZEASIAN);
+					axisTitle.setProperty(StyleTextPropertiesElement.FontSizeComplex, AXIS_FONTSIZECOMPLEX);
+				} else {
+					axisTitle = (ChartTitleElement) titles.item(0);
+				}
+				NodeList paras = axisTitle.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+				if (paras.getLength() == 0) {
+					axisTitle.newTextPElement().setTextContent(title);
+				} else {
+					TextPElement para0 = (TextPElement) paras.item(0);
+					para0.setTextContent(title);
+
+				}
+			}
+		}
+	}
+
+	/**
+	 * chart data manipulation, set chart data
+	 * 
+	 * @param dataset
+	 *            the data set for the chart, which is a 2 dimensional data
+	 *            container
+	 */
+	public void setChartData(DataSet dataset) {
+		this.dataSet = dataset;
+		boolean isFirstRowAsLabel = dataSet.isFirstRowAsLabel();
+		boolean isFirstColumnAsLabel = dataSet.isFirstColumnAsLabel();
+		boolean isRowAsSeries = dataSet.isRowAsDataSeries();
+
+		setPlotArea();
+		NodeList tables = chartElement.getElementsByTagNameNS(OdfDocumentNamespace.CHART.getUri(), "table");
+		if (tables.getLength() > 0) {
+			chartElement.removeChild(tables.item(0));
+		}
+
+		// judge the cell range or local data
+		/*
+		 * if (dataset.getCellRangeAddress() != null) {
+		 * plotArea.setTableCellRangeAddressAttribute
+		 * (dataset.getCellRangeAddress().toString()); if
+		 * (dataset.isFirstColumnAsLabel() && dataset.isFirstRowAsLabel())
+		 * plotArea
+		 * .setChartDataSourceHasLabelsAttribute(ChartDataSourceHasLabelsAttribute
+		 * .Value.BOTH.toString()); else if (dataset.isFirstColumnAsLabel())
+		 * plotArea
+		 * .setChartDataSourceHasLabelsAttribute(ChartDataSourceHasLabelsAttribute
+		 * .Value.COLUMN.toString()); else if (dataset.isFirstRowAsLabel())
+		 * plotArea
+		 * .setChartDataSourceHasLabelsAttribute(ChartDataSourceHasLabelsAttribute
+		 * .Value.ROW.toString()); if (dataset.isRowAsDataSeries())
+		 * plotArea.setProperty(StyleChartPropertiesElement.SeriesSource,
+		 * "rows"); else
+		 * plotArea.setProperty(StyleChartPropertiesElement.SeriesSource,
+		 * "columns"); }
+		 */
+
+		table = chartElement.newTableTableElement();
+		headerColumns = table.newTableTableHeaderColumnsElement();
+		headerColumns.newTableTableColumnElement();
+		columns = table.newTableTableColumnsElement();
+		column = columns.newTableTableColumnElement();
+		headerRows = table.newTableTableHeaderRowsElement();
+		headerRow = headerRows.newTableTableRowElement();
+		rows = table.newTableTableRowsElement();
+
+		// create table lable cells
+		int numColumns = dataset.getLocalTableFirstRow().length;
+		int numRows = dataset.getLocalTableFirstColumn().length;
+		column.setTableNumberColumnsRepeatedAttribute(new Integer(numColumns));
+		headerRow.newTableTableCellElement(0.0, "string");
+		Object[] labelCellRange = getLabelCellRange();
+		Object[] valueCellRange = getValueCellRange();
+		for (int i = 0; i < numColumns; i++) {
+			TableTableCellElement cell = headerRow.newTableTableCellElement(0.0, "string");
+			cell.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			String[] cellContents = dataset.getLocalTableFirstRow();
+			OdfTextParagraph paragraph = (OdfTextParagraph) cell.newTextPElement();
+
+			if (isFirstRowAsLabel && !isRowAsSeries) {
+				if ((String) labelCellRange[i] != null) {
+					paragraph.setTextIdAttribute((String) labelCellRange[i]);
+				}
+			}
+			if (isFirstRowAsLabel && isRowAsSeries && i == 0) {
+				if ((String) getTableCellRange() != null) {
+					paragraph.setTextIdAttribute(getTableCellRange());
+				}
+			}
+			if (cellContents[i] != null) {
+				paragraph.setTextContent(cellContents[i]);
+			} else {
+				paragraph.setTextContent("");
+			}
+		}
+
+		// create table rows
+		Double[][] cellValues = dataset.getLocalTableData();
+		for (int i = 0; i < numRows; i++) {
+			TableTableRowElement row = rows.newTableTableRowElement();
+			TableTableCellElement nameCell = row.newTableTableCellElement(0.0, "string");
+			nameCell.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			OdfTextParagraph paragraph = (OdfTextParagraph) nameCell.newTextPElement();
+			String[] cellContents = dataset.getLocalTableFirstColumn();
+			if (cellContents[i] != null) {
+				if (isFirstColumnAsLabel) {
+					if (isRowAsSeries) {
+						paragraph.setTextIdAttribute((String) labelCellRange[i]);
+					}
+					if (!isRowAsSeries && i == 0) {
+						paragraph.setTextIdAttribute(getTableCellRange());
+					}
+				}
+				paragraph.setTextContent(cellContents[i]);
+			} else {
+				paragraph.setTextContent("");
+			}
+			for (int j = 0; j < numColumns; j++) {
+				TableTableCellElement cell = row.newTableTableCellElement(0.0, "string");
+				cell.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.FLOAT.toString());
+				if (cellValues[i][j] != null) {
+					cell.setOfficeValueAttribute(cellValues[i][j]);
+					OdfTextParagraph paragraph1 = (OdfTextParagraph) cell.newTextPElement();
+					paragraph1.setTextContent(cellValues[i][j].toString());
+					if (isRowAsSeries && j == 0) {
+						paragraph1.setTextIdAttribute((String) valueCellRange[i]);
+					}
+					if (!isRowAsSeries && i == 0) {
+						paragraph1.setTextIdAttribute((String) valueCellRange[j]);
+					}
+				} else {
+					cell.setOfficeValueAttribute(new Double(Double.NaN));
+					OdfTextParagraph paragraph1 = (OdfTextParagraph) cell.newTextPElement();
+					paragraph1.setTextContent("1.#NAN");
+					if (isRowAsSeries && j == 0) {
+						paragraph1.setTextIdAttribute((String) valueCellRange[i]);
+					}
+					if (!isRowAsSeries && i == 0) {
+						paragraph1.setTextIdAttribute((String) valueCellRange[j]);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * chart title manipulation, get the current chart title
+	 * 
+	 * @return return the chart title
+	 */
+	public boolean setChartTitle(String title) {
+
+		// chart:title
+		NodeList titles = chartElement.getElementsByTagNameNS(OdfDocumentNamespace.CHART.getUri(), "title");
+		if (titles.getLength() == 0) {
+			chartTitle = chartElement.newChartTitleElement();
+			chartTitle.setSvgXAttribute("3.669cm");
+			chartTitle.setSvgYAttribute("0.141cm");
+			chartTitle.setProperty(StyleTextPropertiesElement.FontSize, "12pt");
+			chartTitle.setProperty(StyleTextPropertiesElement.FontSizeAsian, "12pt");
+			chartTitle.setProperty(StyleTextPropertiesElement.FontSizeComplex, "12pt");
+		} else {
+			chartTitle = (ChartTitleElement) titles.item(0);
+		}
+		NodeList paras = chartTitle.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+		if (paras.getLength() == 0) {
+			chartTitle.newTextPElement().setTextContent(title);
+		} else {
+			OdfTextParagraph para0 = (OdfTextParagraph) paras.item(0);
+			para0.setTextContent(title);
+		}
+		return true;
+	}
+
+	/**
+	 * chart type manipulation, set a chart type when chart type is changed, all
+	 * the corresponding chart behaviors and properties should be changed
+	 * accordingly
+	 * 
+	 * @param type
+	 *            the type of chart
+	 */
+	public void setChartType(ChartType type) {
+
+		// set chart:class for chart:chart element
+		chartElement.setChartClassAttribute(type.toString());
+		// set chart:class for the chart:series
+		NodeList plotAreas = chartElement.getElementsByTagName(ChartPlotAreaElement.ELEMENT_NAME.getQName());
+
+		if (plotAreas.getLength() > 0) {
+			ChartPlotAreaElement plotArea = (ChartPlotAreaElement) plotAreas.item(0);
+			NodeList series = plotArea.getElementsByTagName(ChartSeriesElement.ELEMENT_NAME.getQName());
+			for (int i = 0; i < series.getLength(); i++) {
+				ChartSeriesElement serie = (ChartSeriesElement) series.item(i);
+				serie.setChartClassAttribute(type.toString());
+			}
+		}
+	}
+
+	/**
+	 * chart legend manipulation, get whether the chart use legend
+	 * 
+	 * @param useLegend
+	 *            a flag specifying whether or not use legend
+	 */
+	public void setUseLegend(boolean useLegend) {
+		this.isUseLegend = useLegend;
+		NodeList legends = chartElement.getElementsByTagNameNS(OdfDocumentNamespace.CHART.getUri(), "legend");
+		if (useLegend) {
+			if (legends.getLength() == 0) {
+				legend = chartElement.newChartLegendElement(ChartLegendPositionAttribute.Value.TOP_END.toString(),
+						StyleLegendExpansionAttribute.Value.BALANCED.toString());
+				legend.setSvgXAttribute("6.715cm");
+				legend.setSvgYAttribute("3.192cm");
+				legend.setProperty(StyleGraphicPropertiesElement.Stroke, "none");
+				legend.setProperty(StyleGraphicPropertiesElement.StrokeColor, "#b3b3b3");
+				legend.setProperty(StyleGraphicPropertiesElement.Fill, "none");
+				legend.setProperty(StyleGraphicPropertiesElement.FillColor, "#e6e6e6");
+				legend.setProperty(StyleTextPropertiesElement.FontSize, "10pt");
+				legend.setProperty(StyleTextPropertiesElement.FontSizeAsian, "10pt");
+				legend.setProperty(StyleTextPropertiesElement.FontSizeComplex, "10pt");
+			}
+		} else {
+			if (legends.getLength() > 0) {
+				chartElement.removeChild(legends.item(0));
+			}
+		}
+
+	}
+
+	/**
+	 * Refresh chart view and data setting.
+	 */
+	public void refreshChart() {
+		setPlotArea();
+		setChartData(dataSet);
+	}
+
+	private String getRandColorCode() {
+		String r, g, b;
+		Random random = new Random();
+		r = Integer.toHexString(random.nextInt(256)).toUpperCase();
+		g = Integer.toHexString(random.nextInt(256)).toUpperCase();
+		b = Integer.toHexString(random.nextInt(256)).toUpperCase();
+
+		r = r.length() == 1 ? "0" + r : r;
+		g = g.length() == 1 ? "0" + g : g;
+		b = b.length() == 1 ? "0" + b : b;
+		return "#" + r + g + b;
+	}
+
+	private Object[] getValueCellRange() {
+		Vector<String> seriesCellRange = new Vector<String>();
+		Vector<String> legendCellAddr = new Vector<String>();
+		if (dataSet.isLocalTable()) {
+			dataSet.getLocalTableCellRanges(dataSet.getDataSeriesCount(), dataSet.getLabels().length, seriesCellRange,
+					legendCellAddr);
+		} else {
+			dataSet.getCellRanges(dataSet.getCellRangeAddress().toString(), dataSet.isFirstRowAsLabel(), dataSet
+					.isFirstColumnAsLabel(), dataSet.isRowAsDataSeries(), seriesCellRange, legendCellAddr);
+		}
+		return seriesCellRange.toArray();
+	}
+
+	private Object[] getLabelCellRange() {
+		Vector<String> seriesCellRange = new Vector<String>();
+		Vector<String> legendCellAddr = new Vector<String>();
+		if (dataSet.isLocalTable()) {
+			getLocalTableCellRanges(dataSet.getDataSeriesCount(), dataSet.getLabels().length, seriesCellRange,
+					legendCellAddr);
+		} else {
+			getCellRanges(dataSet.getCellRangeAddress().toString(), dataSet.isFirstRowAsLabel(), dataSet
+					.isFirstColumnAsLabel(), dataSet.isRowAsDataSeries(), seriesCellRange, legendCellAddr);
+		}
+		return legendCellAddr.toArray();
+	}
+
+	private String getTableCellRange() {
+		Vector<String> seriesCellRange = new Vector<String>();
+		Vector<String> legendCellAddr = new Vector<String>();
+		String cellRange;
+		if (dataSet.isLocalTable()) {
+			cellRange = getLocalTableCellRanges(dataSet.getDataSeriesCount(), dataSet.getLabels().length,
+					seriesCellRange, legendCellAddr);
+		} else {
+			cellRange = getCellRanges(dataSet.getCellRangeAddress().toString(), dataSet.isFirstRowAsLabel(), dataSet
+					.isFirstColumnAsLabel(), dataSet.isRowAsDataSeries(), seriesCellRange, legendCellAddr);
+		}
+		return cellRange;
+	}
+
+	// return label cell ranges
+	private String getCellRanges(String tablecellrange, boolean bFirstRowAsLabel, boolean bFirstColumnAsLabel,
+			boolean rowAsDataSeries, Vector<String> seriesCellRange, Vector<String> legendCellAddr) {
+		// prepare variables
+		String labelCellRange = null;
+		if (seriesCellRange == null)
+			seriesCellRange = new Vector<String>();
+		else
+			seriesCellRange.removeAllElements();
+		if (legendCellAddr == null)
+			legendCellAddr = new Vector<String>();
+		else
+			legendCellAddr.removeAllElements();
+
+		// seperate column and row from cell range
+		StringTokenizer st = new StringTokenizer(tablecellrange, ".:$ ");
+		if (st.countTokens() < 3)
+			return null;
+
+		String sheettable = st.nextToken();
+		String begincell = st.nextToken();
+		String endcell = st.nextToken();
+		if (st.hasMoreTokens()) {
+			endcell = st.nextToken();
+		}
+		char beginColumn = begincell.charAt(0);
+		char endColumn = endcell.charAt(0);
+		int beginRow = Integer.parseInt(begincell.substring(1));
+		int endRow = Integer.parseInt(endcell.substring(1));
+
+		if (rowAsDataSeries) {
+			int starti = beginRow + 1;
+			if (!bFirstRowAsLabel) {
+				labelCellRange = null;
+				starti = beginRow;
+			} else if (bFirstColumnAsLabel)
+				labelCellRange = createCellRange(sheettable, beginRow, (char) (beginColumn + 1), beginRow, endColumn);
+			else
+				labelCellRange = createCellRange(sheettable, beginRow, beginColumn, beginRow, endColumn);
+			for (int i = starti; i < endRow + 1; i++) {
+				if (bFirstColumnAsLabel) {
+					seriesCellRange.add(createCellRange(sheettable, i, (char) (beginColumn + 1), i, endColumn));
+				} else {
+					seriesCellRange.add(createCellRange(sheettable, i, beginColumn, i, endColumn));
+				}
+				if (bFirstColumnAsLabel) {
+					legendCellAddr.add(sheettable + "." + beginColumn + i);
+				} else {
+					legendCellAddr.add(null);
+				}
+			}
+		} else {
+			char startch = (char) (beginColumn + 1);
+			if (!bFirstColumnAsLabel) {
+				labelCellRange = null;
+				startch = beginColumn;
+			} else if (bFirstRowAsLabel)
+				labelCellRange = createCellRange(sheettable, beginRow + 1, beginColumn, endRow, beginColumn);
+			else
+				labelCellRange = createCellRange(sheettable, beginRow, beginColumn, endRow, beginColumn);
+
+			for (char ch = startch; ch <= endColumn; ch++) {
+				if (bFirstRowAsLabel)
+					seriesCellRange.add(createCellRange(sheettable, beginRow + 1, ch, endRow, ch));
+				else
+					seriesCellRange.add(createCellRange(sheettable, beginRow, ch, endRow, ch));
+
+				if (bFirstRowAsLabel)
+					legendCellAddr.add(sheettable + "." + ch + beginRow);
+				else
+					legendCellAddr.add(null);
+			}
+		}
+		return labelCellRange;
+	}
+
+	// return legend cell ranges
+	private String getLocalTableCellRanges(int seriesCount, int labelLength, Vector<String> seriesCellRange,
+			Vector<String> legendCellAddr) {
+		String localtable = "local-table";
+		String tablecellrange = localtable + "." + "A1:" + (char) ('A' + seriesCount) + (1 + labelLength);
+		return dataSet.getCellRanges(tablecellrange, true, true, false, seriesCellRange, legendCellAddr);
+	}
+
+	private String createCellRange(String table, int beginRow, char beginColumn, int endRow, char endColumn) {
+		return table + "." + beginColumn + beginRow + ":" + table + "." + endColumn + endRow;
+	}
+}
\ No newline at end of file
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/chart/ChartContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/ChartContainer.java
new file mode 100644
index 0000000..613b26b
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/ChartContainer.java
@@ -0,0 +1,142 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.chart;
+
+import java.awt.Rectangle;
+import java.util.List;
+
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.SpreadsheetDocument;
+
+/**
+ * ChartContainer is a container which maintains Chart(s) as element(s).
+ * Chart(s) can be added, removed and iterated in this container.
+ * 
+ * @see Chart
+ * @see org.odftoolkit.simple.TextDocument
+ * @see org.odftoolkit.simple.SpreadsheetDocument
+ * @see org.odftoolkit.simple.PresentationDocument
+ * @see org.odftoolkit.simple.presentation.Slide
+ * 
+ * @since 0.6
+ */
+public interface ChartContainer {
+
+	/**
+	 * Creates a new Chart for this container.
+	 * 
+	 * @param title
+	 *            chart title.
+	 * @param dataset
+	 *            chart data set.
+	 * @param rect
+	 *            chart rectangle.
+	 * @return the created chart.
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, DataSet dataset, Rectangle rect);
+
+	/**
+	 * Creates a new Chart for this container.
+	 * 
+	 * @param title
+	 *            chart title.
+	 * @param document
+	 *            the data source spreadsheet document.
+	 * @param cellRangeAddr
+	 *            the cell range address list which is used as chart data set.
+	 * @param firstRowAsLabel
+	 *            whether uses first row as label.
+	 * @param firstColumnAsLabel
+	 *            whether uses first column as label.
+	 * @param rowAsDataSeries
+	 *            whether uses data as series.
+	 * @param rect
+	 *            chart rectangle.
+	 * @return the created chart.
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr,
+			boolean firstRowAsLabel, boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect);
+
+	/**
+	 * Creates a new Chart for this container.
+	 * 
+	 * @param title
+	 *            chart rectangle.
+	 * @param labels
+	 *            label strings
+	 * @param legends
+	 *            legend strings
+	 * @param data
+	 *            chart data set.
+	 * @param rect
+	 *            chart rectangle.
+	 * @return the created chart.
+	 * @since 0.6
+	 */
+	public Chart createChart(String title, String[] labels, String[] legends, double[][] data, Rectangle rect);
+
+	/**
+	 * Deletes chart by chart id.
+	 * 
+	 * @param chartId
+	 *            the id of specified chart.
+	 * @since 0.6
+	 */
+	public void deleteChartById(String chartId);
+
+	/**
+	 * Deletes chart(s) by chart title.
+	 * 
+	 * @param title
+	 *            the title of specified chart(s).
+	 * @since 0.6
+	 */
+	public void deleteChartByTitle(String title);
+
+	/**
+	 * Gets chart with specified id.
+	 * 
+	 * @param chartId
+	 *            the id of this chart.
+	 * @return the chart with specified id.
+	 * @since 0.6
+	 */
+	public Chart getChartById(String chartId);
+
+	/**
+	 * Gets chart list with specified title.
+	 * 
+	 * @param title
+	 *            the title of specified chart(s).
+	 * @return the chart(s) with specified title.
+	 * @since 0.6
+	 */
+	public List<Chart> getChartByTitle(String title);
+
+	/**
+	 * Returns the chart count of this container
+	 * 
+	 * @return the chart count of this container
+	 * @since 0.6
+	 */
+	public int getChartCount();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/chart/ChartType.java b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/ChartType.java
new file mode 100644
index 0000000..1fb4f31
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/ChartType.java
@@ -0,0 +1,89 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.chart;
+
+/**
+ * The value set of chart type.
+ * 
+ * @since 0.6
+ */
+public enum ChartType {
+
+	/**
+	 * BAR, The bar type chart
+	 */
+	BAR("chart:bar"),
+	/**
+	 * PIE, The pie type chart
+	 */
+	PIE("chart:circle"),
+	/**
+	 * RING, The ring type chart
+	 */
+	RING("chart:ring"),
+	/**
+	 * AREA, The area type chart
+	 */
+	AREA("chart:area"),
+	/**
+	 * LINE, The line type chart
+	 */
+	LINE("chart:line"),
+	/**
+	 * SCATTER, The scatter type chart
+	 */
+	SCATTER("chart:scatter"),
+	/**
+	 * RADAR, The radar type chart
+	 */
+	RADAR("chart:radar"),
+	/**
+	 * STOCK, The stock type chart
+	 */
+	STOCK("chart:stock");
+
+	private String m_aValue;
+
+	private ChartType(String _aValue) {
+		m_aValue = _aValue;
+	}
+	
+
+	@Override
+	public String toString() {
+		return m_aValue;
+	}
+
+	/**
+	 * Returns the enum of ChartType string.
+	 * 
+	 * @param mString
+	 *            the string value
+	 * @return the enum of ChartType.
+	 */
+	public static ChartType enumValueOf(String mString) {
+		for (ChartType aIter : values()) {
+			if (mString.equals(aIter.toString())) {
+				return aIter;
+			}
+		}
+		return null;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/chart/DataSet.java b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/DataSet.java
new file mode 100644
index 0000000..cf63fbf
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/chart/DataSet.java
@@ -0,0 +1,800 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.chart;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.odftoolkit.odfdom.type.CellRangeAddress;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.w3c.dom.NodeList;
+
+/**
+ * DataSet is wrapper class for chart data. Generally it is a 2 dimensional data
+ * container, a set of chart data series. Each data series has a key, i.e. chart
+ * label. The data may be a 2 dimensional double array, or a cell range address
+ * of a sheet in Spreadsheet document. DataSet provides some convenient methods
+ * for users to manipulate specific data series in the chart data.
+ * 
+ * @since 0.6
+ */
+
+public class DataSet {
+
+	private Vector<Vector<Double>> dataset; // The second vector is a data
+											// series.
+	private Vector<String> labelset; // label vector,
+	private Vector<String> legendset; // legend vector
+	// Vector<OdfCellRangeAddressList> seriesCellRange; //cellrange of data
+	// series
+	// Vector<String> legendCellRange;
+	// String cellRangeAddress;
+	private CellRangeAddressList cellRangeAddress;
+	private boolean bFirstRowAsLabel, bFirstColumnAsLabel, bRowAsDataSeries;
+	// Chart chart;
+	private boolean isLocalTable;
+
+	/**
+	 * Creates a new DataSet without argument.
+	 */
+	public DataSet() {
+		dataset = new Vector<Vector<Double>>();
+		labelset = new Vector<String>();
+		legendset = new Vector<String>();
+		bFirstRowAsLabel = true;
+		bFirstColumnAsLabel = true;
+		bRowAsDataSeries = false;
+		isLocalTable = false;
+	}
+
+	/**
+	 * Creates a new DataSet.
+	 * 
+	 * @param labels
+	 *            the label strings of this DataSet.
+	 * @param legends
+	 *            the legend strings of this DataSet.
+	 * @param data
+	 *            the data of this DataSet, which stores in 2 dimensional double
+	 *            array.
+	 */
+	public DataSet(String[] labels, String[] legends, double[][] data) {
+		dataset = new Vector<Vector<Double>>();
+		labelset = new Vector<String>();
+		legendset = new Vector<String>();
+		bFirstRowAsLabel = true;
+		bFirstColumnAsLabel = true;
+		bRowAsDataSeries = false;
+		isLocalTable = true;
+		setValues(labels, legends, data);
+
+	}
+
+	/**
+	 * Creates a new DataSet.
+	 * 
+	 * @param cellRangeAddress
+	 *            the cell range address, which is used as the data source.
+	 * @param spreadsheet
+	 *            the data source SpreadsheetDocument.
+	 * @param bFirstRowAsLabel
+	 *            whether this data set uses first row as chart label.
+	 * @param bFirstColumnAsLabel
+	 *            whether this data set uses first column as chart label.
+	 * @param rowAsDataSeries
+	 *            whether this data set uses row as data series.
+	 */
+	public DataSet(CellRangeAddressList cellRangeAddress, SpreadsheetDocument spreadsheet, boolean bFirstRowAsLabel,
+			boolean bFirstColumnAsLabel, boolean rowAsDataSeries) {
+		dataset = new Vector<Vector<Double>>();
+		labelset = new Vector<String>();
+		legendset = new Vector<String>();
+		this.bFirstRowAsLabel = bFirstRowAsLabel;
+		this.bFirstColumnAsLabel = bFirstColumnAsLabel;
+		bRowAsDataSeries = rowAsDataSeries;
+		isLocalTable = false;
+		setValues(cellRangeAddress, spreadsheet, bFirstRowAsLabel, bFirstColumnAsLabel, rowAsDataSeries);
+	}
+
+	// return legend cell ranges
+	/**
+	 * Gets the local table cell range.
+	 * 
+	 * @return the local table cell range,
+	 */
+	public String getLocalTableCellRanges(int seriesCount, int labelLength, Vector<String> seriesCellRange,
+			Vector<String> legendCellAddr) {
+		String localtable = "local-table";
+		String tablecellrange = localtable + "." + "A1:" + (char) ('A' + seriesCount) + (1 + labelLength);
+		return getCellRanges(tablecellrange, true, true, false, seriesCellRange, legendCellAddr);
+	}
+
+	/**
+	 * Gets the cell range address list.
+	 * 
+	 * @return the cell range address list.
+	 */
+	public CellRangeAddressList getCellRangeAddress() {
+		return cellRangeAddress;
+	}
+
+	/**
+	 * Adds a data series at the end of current data set.
+	 * 
+	 * @param legend
+	 *            legend for the data series.
+	 * @param values
+	 *            data series values corresponding to the legend.
+	 */
+	public void appendDataSeries(String legend, double[] values) {
+		legendset.add(legend);
+
+		Vector<Double> valuesList = new Vector<Double>();
+		for (int i = 0; i < values.length; i++) {
+			valuesList.add(new Double(values[i]));
+		}
+
+		dataset.add(valuesList);
+
+	}
+
+	/**
+	 * Adds a data series at the index in current data set.
+	 * 
+	 * @param index
+	 *            the index the added data series will be located.
+	 * @param legend
+	 *            legend for the data series.
+	 * @param values
+	 *            data series values corresponding to the legend.
+	 */
+	public void insertDataSeries(int index, String legend, double[] values) {
+		legendset.add(index, legend);
+
+		Vector<Double> valuesList = new Vector<Double>();
+		for (int i = 0; i < values.length; i++) {
+			valuesList.add(new Double(values[i]));
+		}
+		dataset.add(index, valuesList);
+
+	}
+
+	/**
+	 * Updates the data series values according to the index of the data series.
+	 * 
+	 * @param index
+	 *            the index of the data series in the data set.
+	 * @param values
+	 *            data series values.
+	 */
+	public void updateDataSeries(int index, double[] values) {
+		Vector<Double> valuesList = new Vector<Double>();
+		for (int i = 0; i < values.length; i++) {
+			valuesList.add(new Double(values[i]));
+		}
+		dataset.set(index, valuesList);
+
+	}
+
+	/**
+	 * Updates the data series values according to the legend of the data
+	 * series.
+	 * 
+	 * @param legend
+	 *            the chart legend of the data series.
+	 * @param values
+	 *            data series values.
+	 */
+	public void updateDataSeries(String legend, int beginindex, double[] values) {
+		Vector<Double> valuesList = new Vector<Double>();
+		for (int i = 0; i < values.length; i++) {
+			valuesList.add(new Double(values[i]));
+		}
+		dataset.set(getIndexOfDataSeries(legend, beginindex), valuesList);
+
+	}
+
+	/**
+	 * Removes a data series by the index of the data series in the data set.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set.
+	 */
+	public void removeDataSeries(int index) {
+		legendset.remove(index);
+		dataset.remove(index);
+	}
+
+	/**
+	 * Remove a data series by the legend of the data series.
+	 * 
+	 * @param legend
+	 *            the legend of the data series.
+	 */
+	public void removeDataSeries(String legend, int beginindex) {
+		int index = getIndexOfDataSeries(legend, beginindex);
+		removeDataSeries(index);
+	}
+
+	/**
+	 * Gets the index of the data series by its legend.
+	 * 
+	 * @param legend
+	 *            the legend of the data series.
+	 * @return index of the data series in the data set.
+	 */
+	public int getIndexOfDataSeries(String legend, int beginindex) {
+		return legendset.indexOf(legend, beginindex);
+	}
+
+	/**
+	 * Gets the legend of the data series by its index in the data set.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set.
+	 * @return the legend of the data series.
+	 */
+	public String getLegendByIndex(int index) {
+		return legendset.get(index);
+	}
+
+	/**
+	 * Sets or change the legend of the data series by its index in the data
+	 * set.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set.
+	 * @param legend
+	 *            the legend of the data series.
+	 */
+	public void setLegendByIndex(int index, String legend) {
+		legendset.set(index, legend);
+	}
+
+	/**
+	 * Gets the legend of the data series by its index in the data set.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set.
+	 * @return the label of the data series.
+	 */
+	public String getLabelByIndex(int index) {
+		return labelset.get(index);
+	}
+
+	/**
+	 * Sets or change the legend of the data series by its index in the data
+	 * set.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set.
+	 * @param label
+	 *            the label of the data series.
+	 */
+	public void setLabelByIndex(int index, String label) {
+		labelset.set(index, label);
+	}
+
+	/**
+	 * Gets the string array of labels.
+	 * 
+	 * @return the string array of labels.
+	 */
+	public String[] getLabels() {
+		return labelset.toArray(new String[1]);
+	}
+
+	/**
+	 * Gets the string array of legends.
+	 * 
+	 * @return the string array of legends.
+	 */
+	public String[] getLegends() {
+		return legendset.toArray(new String[1]);
+	}
+
+	/**
+	 * Gets whether this data set uses first row as chart label.
+	 * 
+	 * @return if return <code>true</code>, this data set uses first row as
+	 *         chart label.
+	 */
+	public boolean isFirstRowAsLabel() {
+		return bFirstRowAsLabel;
+	}
+
+	/**
+	 * Gets whether this data set uses first column as chart label.
+	 * 
+	 * @return if return <code>true</code>, this data set uses first row as
+	 *         chart label.
+	 */
+	public boolean isFirstColumnAsLabel() {
+		return bFirstColumnAsLabel;
+	}
+
+	/**
+	 * Gets whether this data set uses row as data series.
+	 * 
+	 * @return if return <code>true</code>, this data set uses row as data
+	 *         series.
+	 */
+	public boolean isRowAsDataSeries() {
+		return bRowAsDataSeries;
+	}
+
+	/**
+	 * Gets whether this data set uses local table.
+	 * 
+	 * @return if return <code>true</code>, this data set uses uses local table.
+	 */
+	public boolean isLocalTable() {
+		return isLocalTable;
+	}
+
+	/**
+	 * Sets this data set uses local table or not.
+	 * 
+	 * @param isLocalTable
+	 *            if the value is <code>true</code>, this data set uses uses
+	 *            local table.
+	 */
+	public void setLocalTable(boolean isLocalTable) {
+		this.isLocalTable = isLocalTable;
+	}
+
+	/**
+	 * Gets the values of a data series by its index in the data set.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set.
+	 * @return the values of the data series.
+	 */
+	public double[] getDataSeriesByIndex(int index) {
+		double[] doubleArray;
+		Vector<Double> values = dataset.elementAt(index);
+		doubleArray = new double[values.size()];
+		for (int i = 0; i < values.size(); i++)
+			doubleArray[i] = values.get(i).doubleValue();
+		return doubleArray;
+	}
+
+	/**
+	 * Gets the values of a data series by its legend, if multiple data series
+	 * have duplicated legends, return the values of the first matched data
+	 * series. we do not recommend the duplicated legends, but practically, some
+	 * ODF editors allow users to do that.
+	 * 
+	 * @param legend
+	 *            the legend of the data series
+	 * @return the values of the data series
+	 */
+	public double[] getDataSeriesByLegend(String legend, int beginindex) {
+		double[] doubleArray;
+		Vector<Double> values = dataset.elementAt(getIndexOfDataSeries(legend, beginindex));
+		doubleArray = new double[values.size()];
+		for (int i = 0; i < values.size(); i++)
+			doubleArray[i] = values.get(i).doubleValue();
+		return doubleArray;
+	}
+
+	/**
+	 * Gets the values of a data set as a double dimension array.
+	 * 
+	 * @return the values of the whole data set.
+	 */
+	public Double[][] getLocalTableData() {
+		// if rowAsDataSeries, the local table data needs to turn 90 degree
+		int seriescount, itemcount;
+		Double[][] doubleArray;
+
+		seriescount = legendset.size();
+		itemcount = labelset.size();
+		if (bRowAsDataSeries) {
+			doubleArray = new Double[seriescount][itemcount];
+		} else {
+			doubleArray = new Double[itemcount][seriescount];
+		}
+
+		for (int i = 0; i < seriescount; i++) {
+			Vector<Double> values = dataset.elementAt(i);
+			for (int j = 0; j < itemcount; j++) {
+				if (bRowAsDataSeries)
+					doubleArray[i][j] = values.get(j);
+				else
+					doubleArray[j][i] = values.get(j);
+			}
+		}
+
+		return doubleArray;
+	}
+
+	/**
+	 * Gets the first row labels of the local table.
+	 * 
+	 * @return the first row labels of the local table.
+	 */
+	public String[] getLocalTableFirstRow() {
+		if (bRowAsDataSeries)
+			return labelset.toArray(new String[1]);
+		else
+			return legendset.toArray(new String[1]);
+	}
+
+	/**
+	 * Gets the first column labels of the local table.
+	 * 
+	 * @return the first column labels of the local table.
+	 */
+	public String[] getLocalTableFirstColumn() {
+		if (bRowAsDataSeries)
+			return legendset.toArray(new String[1]);
+		else
+			return labelset.toArray(new String[1]);
+	}
+
+	/**
+	 * Gets the data item count of the data series given by the index.
+	 * 
+	 * @param index
+	 *            index of the data series in the data set
+	 * @return the data item count of the data series
+	 */
+	public int getLengthOfDataSeries(int index) {
+		Vector<Double> values = dataset.elementAt(index);
+		int length = values.size();
+		for (int i = values.size() - 1; i >= 0; i--) {
+			if (values.elementAt(i) == null)
+				length--;
+		}
+		return length;
+	}
+
+	/**
+	 * Gets the data item count of the data series given by the label.
+	 * 
+	 * @param legend
+	 *            the legend of the data series
+	 * @return the data item count of the data series
+	 */
+	public int getLengthOfDataSeries(String legend, int beginindex) {
+		int index = getIndexOfDataSeries(legend, beginindex);
+		return getLengthOfDataSeries(index);
+	}
+
+	/**
+	 * Gets the maximal data item count
+	 * 
+	 * @return the maximal data item count
+	 */
+	public int getMaxLengthOfDataSeries() {
+		int max = 0;
+		for (int i = 0; i < legendset.size(); i++) {
+			int length = getLengthOfDataSeries(i);
+			if (max < length)
+				max = length;
+		}
+		return max;
+	}
+
+	/**
+	 * Gets the count of data series in the data set.
+	 * 
+	 * @return the count of data series
+	 */
+	public int getDataSeriesCount() {
+		return legendset.size();
+	}
+
+	/**
+	 * Sets or updates data for the data set with 2 dimensional double array,
+	 * the first dimension represents the index of data series, the second
+	 * dimension represents the index of data item in each data series.
+	 * 
+	 * @param labels
+	 *            the chart labels, which is corresponding to the first
+	 *            dimension of data array.
+	 * @param data
+	 *            a 2 dimensional double array.
+	 */
+	public void setValues(String[] labels, String[] legends, double[][] data) {
+		this.isLocalTable = true;
+		this.bFirstColumnAsLabel = true;
+		this.bFirstRowAsLabel = true;
+		this.bRowAsDataSeries = false;
+		int seriescount = (legends.length <= data.length) ? legends.length : data.length;
+		int itemcount = (labels.length <= data[0].length) ? labels.length : data[0].length;
+		for (int i = 0; i < seriescount; i++) {
+			if (i < legends.length)
+				legendset.add(legends[i]);
+			else
+				legendset.add("" + (i + 1));
+			Vector<Double> series = new Vector<Double>();
+			for (int j = 0; j < itemcount; j++) {
+				if ((i < data.length) && (j < data[0].length))
+					series.add(new Double(data[i][j]));
+				else
+					series.add(null);
+			}
+			dataset.add(series);
+		}
+		for (int i = 0; i < itemcount; i++) {
+			if (i < labels.length)
+				labelset.add(labels[i]);
+			else
+				labelset.add("");
+		}
+	}
+
+	/**
+	 * Sets data for the data set with cell range address of sheet in
+	 * spreadsheet document or internal chart table in other chart containers.
+	 * 
+	 * @param cellRangeAddress
+	 *            cell range address of sheet or table.
+	 * @param spreadsheet
+	 *            the spreadsheet document instance, the cell address is
+	 *            relative to the spreadsheet document.
+	 * @param bFirstRowAsLabel
+	 *            whether this data set uses first row as chart label.
+	 * @param bFirstColumnAsLabel
+	 *            whether this data set uses first column as chart label.
+	 * @param rowAsDataSeries
+	 *            whether this data set uses row as data series.
+	 */
+	public void setValues(CellRangeAddressList cellRangeAddress, SpreadsheetDocument spreadsheet,
+			boolean bFirstRowAsLabel, boolean bFirstColumnAsLabel, boolean rowAsDataSeries) {
+		this.isLocalTable = false;
+		this.bFirstColumnAsLabel = bFirstColumnAsLabel;
+		this.bFirstRowAsLabel = bFirstRowAsLabel;
+		this.bRowAsDataSeries = rowAsDataSeries;
+		this.cellRangeAddress = cellRangeAddress;
+
+		// analysis cell range
+		String cellrange = ((CellRangeAddress) cellRangeAddress.getCellRangesAddressList().get(0)).toString();
+		// init variables
+		StringTokenizer st = new StringTokenizer(cellrange, ".:$ ");
+		if (st.countTokens() < 3)
+			return;
+
+		String sheettable = st.nextToken();
+		String begincell = st.nextToken();
+		String endcell = st.nextToken();
+		if (st.hasMoreTokens())
+			endcell = st.nextToken();
+
+		char beginColumn = begincell.charAt(0);
+		char endColumn = endcell.charAt(0);
+		int beginRow = Integer.parseInt(begincell.substring(1));
+		int endRow = Integer.parseInt(endcell.substring(1));
+
+		dataset = new Vector<Vector<Double>>();
+		Vector<String> rowLabels = new Vector<String>();
+		Vector<String> columnLabels = new Vector<String>();
+
+		try {
+			int i = 0, rowindex, columnindex;
+			char ch;
+			TableTableRowElement td;
+			TableTableCellElement cell;
+			OdfFileDom sheetContent;
+			NodeList tableList, rowList, cellList;
+			TableTableElement table;
+			Vector<Double> series;
+			double value;
+
+			// get table
+			sheetContent = spreadsheet.getContentDom();
+			tableList = sheetContent.getElementsByTagNameNS(OdfNamespace.newNamespace(OdfDocumentNamespace.TABLE)
+					.toString(), "table");
+			while (!sheettable.equals(((TableTableElement) tableList.item(i)).getTableNameAttribute()))
+				i++;
+			table = (TableTableElement) tableList.item(i);
+			rowList = table.getElementsByTagNameNS(OdfNamespace.newNamespace(OdfDocumentNamespace.TABLE).toString(),
+					"table-row");
+
+			// get data, begin for(beginRow,endRow)
+			for (i = beginRow; i <= endRow; i++) {
+				rowindex = bFirstRowAsLabel ? (i - beginRow - 1) : (i - beginRow);
+				td = (TableTableRowElement) rowList.item(i - 1);
+				cellList = td.getElementsByTagNameNS(OdfNamespace.newNamespace(OdfDocumentNamespace.TABLE).toString(),
+						"table-cell");
+				Map<Integer, TableTableCellElement> cellIndexMap = new HashMap<Integer, TableTableCellElement>();
+				for (int index = 0, cellNum = 0; (cellNum < cellList.getLength()) && (index <= (endColumn - 'A')); cellNum++) {
+					TableTableCellElement item = (TableTableCellElement) cellList.item(cellNum);
+					int repeatedCount = item.getTableNumberColumnsRepeatedAttribute()
+							* item.getTableNumberColumnsSpannedAttribute();
+					int tmpIndex = index + repeatedCount;
+					if (tmpIndex >= (beginColumn - 'A')) {
+						if ((beginColumn - 'A') > index) {
+							index = beginColumn - 'A';
+						}
+						for (int ii = index; ii < tmpIndex; ii++) {
+							cellIndexMap.put(ii, item);
+						}
+					}
+					index = tmpIndex;
+				}
+				// begin for(beginColumn,endColumn)
+				for (ch = beginColumn; ch <= endColumn; ch++) {
+					columnindex = bFirstColumnAsLabel ? (ch - beginColumn - 1) : (ch - beginColumn);
+					cell = cellIndexMap.get(ch - 'A');
+					if (bFirstRowAsLabel && (i == beginRow)) // label row
+					{
+						if (!bFirstColumnAsLabel || (ch != beginColumn)) {
+							if (cell.getFirstChild() != null)
+								rowLabels.add(cell.getFirstChild().getTextContent());
+							else
+								rowLabels.add("Column " + ch);
+						}
+					} else if (bFirstColumnAsLabel && (ch == beginColumn)) {
+						if (!bFirstRowAsLabel || (i != beginRow)) {
+							if (cell.getFirstChild() != null)
+								columnLabels.add(cell.getFirstChild().getTextContent());
+							else
+								columnLabels.add("Row " + i);
+						}
+					} else {
+						// set default rowLabel
+						if ((i == beginRow) && (!bFirstColumnAsLabel || (ch != beginColumn))) {
+							// first row is not label.
+							rowLabels.add("Column " + ch);
+						}
+
+						// set default column label
+						if ((ch == beginColumn) && (!bFirstRowAsLabel || (i != beginRow))) // first
+							// column is not label.
+							columnLabels.add("Row " + i);
+						if (rowAsDataSeries) {
+							if (rowindex < dataset.size())
+								series = dataset.get(rowindex);
+							else {
+								series = new Vector<Double>();
+								dataset.add(series);
+							}
+							try {
+								value = cell.getOfficeValueAttribute().doubleValue();
+								series.add(new Double(value));
+							} catch (Exception e) {
+								series.add(null);
+							}
+						} else {
+							if (columnindex < dataset.size())
+								series = dataset.get(columnindex);
+							else {
+								series = new Vector<Double>();
+								dataset.add(series);
+							}
+							try {
+								value = cell.getOfficeValueAttribute().doubleValue();
+								series.add(new Double(value));
+							} catch (Exception e) {
+								series.add(null);
+							}
+						}
+					}
+				}// end begin for(beginColumn,endColumn)
+			}// end begin for(beginRow,endRow)
+			if (rowAsDataSeries) {
+				labelset = rowLabels;
+				legendset = columnLabels;
+			} else {
+				labelset = columnLabels;
+				legendset = rowLabels;
+			}
+		} catch (Exception e) {
+			Logger.getLogger(DataSet.class.getName()).log(Level.SEVERE,	e.getMessage(), e);
+		}
+	}
+
+	// return label cell ranges
+	String getCellRanges(String tablecellrange, boolean bFirstRowAsLabel, boolean bFirstColumnAsLabel,
+			boolean rowAsDataSeries, Vector<String> seriesCellRange, Vector<String> legendCellAddr) {
+		// prepare variables
+		String labelCellRange = null;
+		if (seriesCellRange == null)
+			seriesCellRange = new Vector<String>();
+		else
+			seriesCellRange.removeAllElements();
+		if (legendCellAddr == null)
+			legendCellAddr = new Vector<String>();
+		else
+			legendCellAddr.removeAllElements();
+
+		// seperate column and row from cell range
+		StringTokenizer st = new StringTokenizer(tablecellrange, ".:$ ");
+		if (st.countTokens() < 3)
+			return null;
+
+		String sheettable = st.nextToken();
+		String begincell = st.nextToken();
+		String endcell = st.nextToken();
+		if (st.hasMoreTokens())
+			endcell = st.nextToken();
+
+		char beginColumn = begincell.charAt(0);
+		char endColumn = endcell.charAt(0);
+		int beginRow = Integer.parseInt(begincell.substring(1));
+		int endRow = Integer.parseInt(endcell.substring(1));
+		// if (bFirstColumnAsLabel) beginColumn=(char)(beginColumn1);
+		// if (bFirstRowAsLabel)beginRow=beginRow1;
+
+		if (rowAsDataSeries) {
+			int starti = beginRow + 1;
+			if (!bFirstRowAsLabel) {
+				labelCellRange = null;
+				starti = beginRow;
+			} else if (bFirstColumnAsLabel)
+				labelCellRange = createCellRange(sheettable, beginRow, (char) (beginColumn + 1), beginRow, endColumn);
+			else
+				labelCellRange = createCellRange(sheettable, beginRow, beginColumn, beginRow, endColumn);
+
+			for (int i = starti; i < endRow + 1; i++) {
+				if (bFirstColumnAsLabel)
+					seriesCellRange.add(createCellRange(sheettable, i, (char) (beginColumn + 1), i, endColumn));
+				else
+					seriesCellRange.add(createCellRange(sheettable, i, beginColumn, i, endColumn));
+
+				if (bFirstColumnAsLabel)
+					legendCellAddr.add(sheettable + "." + beginColumn + i);
+				else
+					legendCellAddr.add(null);
+			}
+		} else {
+			char startch = (char) (beginColumn + 1);
+			if (!bFirstColumnAsLabel) {
+				labelCellRange = null;
+				startch = beginColumn;
+			} else if (bFirstRowAsLabel)
+				labelCellRange = createCellRange(sheettable, beginRow + 1, beginColumn, endRow, beginColumn);
+			else
+				labelCellRange = createCellRange(sheettable, beginRow, beginColumn, endRow, beginColumn);
+
+			for (char ch = startch; ch <= endColumn; ch++) {
+				if (bFirstRowAsLabel)
+					seriesCellRange.add(createCellRange(sheettable, beginRow + 1, ch, endRow, ch));
+				else
+					seriesCellRange.add(createCellRange(sheettable, beginRow, ch, endRow, ch));
+
+				if (bFirstRowAsLabel)
+					legendCellAddr.add(sheettable + "." + ch + beginRow);
+				else
+					legendCellAddr.add(null);
+			}
+		}
+		return labelCellRange;
+	}
+
+	//get cell range string
+	private String createCellRange(String table, int beginRow, char beginColumn, int endRow, char endColumn) {
+		return table + "." + beginColumn + beginRow + ":" + table + "." + endColumn + endRow;
+	}
+}
\ No newline at end of file
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/EditableTextExtractor.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/EditableTextExtractor.java
new file mode 100644
index 0000000..7807235
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/EditableTextExtractor.java
@@ -0,0 +1,243 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfMetaDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.table.Row;
+import org.odftoolkit.simple.table.Table;
+import org.w3c.dom.NodeList;
+
+/**
+ * It's a sub class of TextExtractor, which provides a method
+ * <code>getText()</code> to return all the text that the user can typically
+ * edit in a document, including text in cotent.xml, header and footer in
+ * styles.xml, meta data in meta.xml.
+ * 
+ * <p>
+ * This function can be used by search engine, and text analytic operations.
+ * </p>
+ * 
+ * @see org.odftoolkit.odfdom.pkg.OdfElement
+ * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor
+ */
+public class EditableTextExtractor extends TextExtractor {
+
+	Document mDocument = null;
+	boolean mIsDocumentExtractor = false;
+
+	/**
+	 * An instance of EditableTextExtractor will be created to extract the
+	 * editable text content in specified document.
+	 * 
+	 * @param doc
+	 *            the document whose text will be extracted.
+	 * @return An instance of EditableTextExtractor
+	 */
+	public static EditableTextExtractor newOdfEditableTextExtractor(Document doc) {
+		return new EditableTextExtractor(doc);
+	}
+
+	/**
+	 * An instance of EditableTextExtractor will be created to extract the
+	 * editable text content of an ODF element.
+	 * 
+	 * @param element
+	 *            the ODF element whose text will be extracted.
+	 * @return An instance of EditableTextExtractor
+	 */
+	public static EditableTextExtractor newOdfEditableTextExtractor(OdfElement element) {
+		return new EditableTextExtractor(element);
+	}
+
+	/**
+	 * Return the text content of a element as String
+	 * 
+	 * @param ele
+	 *            the ODF element
+	 * @return the text content of the element
+	 */
+	public static synchronized String getText(OdfElement ele) {
+		EditableTextExtractor extractor = newOdfEditableTextExtractor(ele);
+		return extractor.getText();
+	}
+
+	/**
+	 * Return the text content of document as String
+	 * 
+	 * @param doc
+	 *            the document
+	 * @return the text content of the document
+	 */
+	public static synchronized String getText(Document doc) {
+		EditableTextExtractor extractor = newOdfEditableTextExtractor(doc);
+		return extractor.getText();
+	}
+
+	/**
+	 * Return the editable text content as a string
+	 * 
+	 * @return the editable text content as a string
+	 */
+	@Override
+	public String getText() {
+		if (mIsDocumentExtractor) {
+			return getDocumentText();
+		} else {
+			visit(mElement);
+			return mTextBuilder.toString();
+		}
+	}
+
+	/**
+	 * Constructor with a document as parameter
+	 * 
+	 * @param doc
+	 *            the document whose editable text would be extracted.
+	 */
+	private EditableTextExtractor(Document doc) {
+		super();
+		mDocument = doc;
+		mIsDocumentExtractor = true;
+	}
+
+	/**
+	 * Constructor with an ODF element as parameter
+	 * 
+	 * @param element
+	 *            the ODF element whose editable text would be extracted.
+	 */
+	private EditableTextExtractor(OdfElement element) {
+		super(element);
+		mIsDocumentExtractor = false;
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of draw:object.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement)
+	 */
+	@Override
+	public void visit(DrawObjectElement element) {
+		String embedDocPath = element.getXlinkHrefAttribute();
+		Document embedDoc = ((Document) (((OdfContentDom) element.getOwnerDocument()).getDocument()))
+				.getEmbeddedDocument(embedDocPath);
+		if (embedDoc != null) {
+			try {
+				mTextBuilder.append(EditableTextExtractor.newOdfEditableTextExtractor(embedDoc).getText());
+			} catch (Exception e) {
+				Logger.getLogger(EditableTextExtractor.class.getName()).log(Level.SEVERE, null, e);
+			}
+		}
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:tracked-changes.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextTrackedChangesElement)
+	 */
+	@Override
+	public void visit(TextTrackedChangesElement ele) {
+		return;
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:a.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextAElement)
+	 */
+	@Override
+	public void visit(TextAElement ele) {
+		String link = ele.getXlinkHrefAttribute();
+		mTextBuilder.append(link);
+		appendElementText(ele);
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of table:table.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextTabElement)
+	 */
+	@Override
+	public void visit(TableTableElement ele) {
+		Table table = Table.getInstance(ele);
+		List<Row> rowlist = table.getRowList();
+		int column = table.getColumnCount();
+		for (int i = 0; i < rowlist.size(); i++) {
+			Row row = rowlist.get(i);
+			for (int j = 0; j < column; j++) {
+				mTextBuilder.append(row.getCellByIndex(j).getDisplayText());
+				mTextBuilder.append(TabChar);
+			}
+			mTextBuilder.appendLine();
+		}
+	}
+
+	private String getDocumentText() {
+		StringBuilder builder = new StringBuilder();
+		try {
+			// Extract text from content.xml
+			EditableTextExtractor contentDomExtractor = newOdfEditableTextExtractor(mDocument.getContentRoot());
+			builder.append(contentDomExtractor.getText());
+			// Extract text from style.xml
+			OdfStylesDom styleDom = mDocument.getStylesDom();
+			if (styleDom != null) {
+				StyleMasterPageElement masterpage = null;
+				NodeList list = styleDom.getElementsByTagName("style:master-page");
+				if (list.getLength() > 0) {
+					masterpage = (StyleMasterPageElement) list.item(0);
+				}
+				if (masterpage != null) {
+					builder.append(newOdfEditableTextExtractor(masterpage).getText());
+				}
+			}
+			// Extract text from meta.xml
+			OdfMetaDom metaDom = mDocument.getMetaDom();
+			if (metaDom != null) {
+				OdfElement root = metaDom.getRootElement();
+				OfficeMetaElement officemeta = OdfElement.findFirstChildNode(OfficeMetaElement.class, root);
+				if (officemeta != null) {
+					builder.append(newOdfEditableTextExtractor(officemeta).getText());
+				}
+			}
+			return builder.toString();
+		} catch (Exception e) {
+			Logger.getLogger(EditableTextExtractor.class.getName()).severe(e.getMessage());
+			return builder.toString();
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/TextExtractor.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/TextExtractor.java
new file mode 100644
index 0000000..9c18eb5
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/TextExtractor.java
@@ -0,0 +1,267 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common;
+
+import org.odftoolkit.odfdom.dom.DefaultElementVisitor;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfNamespace;
+import org.w3c.dom.Node;
+
+/**
+ * This is a sub class of <code>DefaultElementVisitor</code>, which is used to
+ * extract display text from ODF element. For example, if you want to get all of
+ * the text content in a slide notes, you can call <code>getOdfElement()</code>
+ * to get the ODF element of this notes, then pass it to
+ * <code>newOdfTextExtractor</code> to create a TextExtractor. The last step is
+ * very easy, you only need to use <code>getText()</code>, all of the text
+ * content will be return as string. Another easier way is pass the ODF element
+ * to the static method <code>TextExtractor.getText(OdfElement)</code> directly.
+ * <p>
+ * If you pass the content root which you can get by
+ * {@link org.odftoolkit.simple.Document#getContentRoot()
+ * Document.getContentRoot()} as the parameter, the whole document content will
+ * be returned, without any tag information.
+ * <p>
+ * This extractor implements parts of ODF elements' white space handling
+ * functions. They are text:p, text:h, text:s, text:tab and text:linebreak,
+ * which <code>visit()</code> are override to process white space, according to
+ * ODF specification.
+ * 
+ * @see org.odftoolkit.odfdom.pkg.OdfElement
+ */
+public class TextExtractor extends DefaultElementVisitor {
+
+	protected static final char NewLineChar = '\n';
+	protected static final char TabChar = '\t';
+	protected final ExtractorStringBuilder mTextBuilder;
+	OdfElement mElement;
+	
+	/**
+	 * This class is used to provide the string builder functions to extractor.
+	 * It will automatically process the last NewLineChar.
+	 * 
+	 * @since 0.3.5
+	 */
+	protected static class ExtractorStringBuilder {
+		private StringBuilder mBuilder;
+		private boolean lastAppendNewLine;
+
+		ExtractorStringBuilder() {
+			mBuilder = new StringBuilder();
+			lastAppendNewLine = false;
+		}
+
+		/**
+		 * Append a string
+		 * 
+		 * @param str
+		 *            - the string
+		 */
+		public void append(String str) {
+			mBuilder.append(str);
+		}
+
+		/**
+		 * Append a character
+		 * 
+		 * @param ch
+		 *            - the character
+		 */
+		public void append(char ch) {
+			mBuilder.append(ch);
+		}
+
+		/**
+		 * Append a new line character at the end
+		 */
+		public void appendLine() {
+			mBuilder.append(NewLineChar);
+			lastAppendNewLine = true;
+		}
+
+		/**
+		 * Return the string value.
+		 * <p>
+		 * If the last character is a new line character and is appended with
+		 * appendLine(), the last new line character will be removed.
+		 */
+		public String toString() {
+			if (lastAppendNewLine) {
+				mBuilder.deleteCharAt(mBuilder.length() - 1);
+			}
+			return mBuilder.toString();
+		}
+	}
+
+	/**
+	 * Return the text content of a element as String
+	 * 
+	 * @param ele
+	 *            the ODF element
+	 * @return the text content of the element
+	 */
+	public static synchronized String getText(OdfElement ele) {
+		TextExtractor extractor = newOdfTextExtractor(ele);
+		return extractor.getText();
+	}
+
+	/**
+	 * Create a TextExtractor instance using specified ODF element, which text
+	 * content can be extracted by <code>getText()</code>.
+	 * 
+	 * @param element
+	 *            the ODF element whose text will be extracted.
+	 * @return an instance of TextExtractor
+	 */
+	public static TextExtractor newOdfTextExtractor(OdfElement element) {
+		return new TextExtractor(element);
+	}
+
+	/**
+	 * Return the text content of specified ODF element as a string.
+	 * 
+	 * @return the text content as a string
+	 */
+	public String getText() {
+		visit(mElement);
+		return mTextBuilder.toString();
+	}
+
+	/**
+	 * Default constructor
+	 */
+	protected TextExtractor() {
+		mTextBuilder = new ExtractorStringBuilder();
+	}
+
+	/**
+	 * Constructor with an ODF element as parameter
+	 * 
+	 * @param element
+	 *            the ODF element whose text would be extracted.
+	 */
+	protected TextExtractor(OdfElement element) {
+		mTextBuilder = new ExtractorStringBuilder();
+		mElement = element;
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of <code>OdfElement</code>.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.pkg.OdfElement)
+	 */
+	@Override
+	public void visit(OdfElement element) {
+		appendElementText(element);
+		if (OdfDocumentNamespace.META.getUri().equals(element.getNamespaceURI())
+				|| OdfDocumentNamespace.DC.getUri().equals(element.getNamespaceURI())) {
+			mTextBuilder.appendLine();
+		}
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:p.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextPElement)
+	 */
+	@Override
+	public void visit(TextPElement ele) {
+		appendElementText(ele);
+		mTextBuilder.appendLine();
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:h.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextHElement)
+	 */
+	@Override
+	public void visit(TextHElement ele) {
+		appendElementText(ele);
+		mTextBuilder.appendLine();
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:s.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextSElement)
+	 */
+	@Override
+	public void visit(TextSElement ele) {
+		Integer count = ele.getTextCAttribute();
+		if (count == null) {
+			count = 1;
+		}
+		for (int i = 0; i < count; i++) {
+			mTextBuilder.append(' ');
+		}
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:tab.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextTabElement)
+	 */
+	@Override
+	public void visit(TextTabElement ele) {
+		mTextBuilder.append(TabChar);
+	}
+
+	/**
+	 * The end users needn't to care of this method, if you don't want to
+	 * override the text content handling strategy of text:linebreak.
+	 * 
+	 * @see org.odftoolkit.odfdom.dom.DefaultElementVisitor#visit(org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement)
+	 */
+	@Override
+	public void visit(TextLineBreakElement ele) {
+		mTextBuilder.append(NewLineChar);
+	}
+
+	/**
+	 * Append the text content of this element to string buffer.
+	 * 
+	 * @param ele
+	 *            the ODF element whose text will be appended.
+	 */
+	protected void appendElementText(OdfElement ele) {
+		Node node = ele.getFirstChild();
+		while (node != null) {
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				mTextBuilder.append(node.getNodeValue());
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				OdfElement element = (OdfElement) node;
+				element.accept(this);
+			}
+			node = node.getNextSibling();
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/WhitespaceProcessor.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/WhitespaceProcessor.java
new file mode 100644
index 0000000..d988fab
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/WhitespaceProcessor.java
@@ -0,0 +1,161 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * It's a tool class to help process white space.
+ */
+public class WhitespaceProcessor {
+	private int nSpaces;
+	private String partial;
+	private OdfFileDom owner;
+	private Element element;
+
+	/**
+	 * Add given text content to an element, handling multiple blanks, tabs, and
+	 * newlines properly.
+	 * 
+	 * @param element
+	 *            the element to which content is being added
+	 * @param content
+	 *            text content including whitespace
+	 */
+	public void append(Element element, String content) {
+		int i = 0;
+		char ch;
+		this.element = element;
+		partial = "";
+		nSpaces = 0;
+		owner = (OdfFileDom) element.getOwnerDocument();
+		for (i = 0; i < content.length(); i++) {
+			ch = content.charAt(i);
+			if (ch == ' ') {
+				if (nSpaces == 0) {
+					partial += " ";
+				}
+				nSpaces++;
+			} else if (ch == '\n') {
+				emitPartial();
+				element.appendChild(new TextLineBreakElement(owner));
+			} else if (ch == '\t') {
+				emitPartial();
+				element.appendChild(new TextTabElement(owner));
+			} else if (ch != '\r') // ignore DOS half of CR-LF
+			{
+				if (nSpaces > 1) {
+					emitPartial();
+				}
+				partial += ch;
+				nSpaces = 0;
+			}
+		}
+		emitPartial();
+	}
+
+	/**
+	 * Retrieve the text content of an element. Recursively retrieves all the
+	 * text nodes, expanding whitespace where necessary. Ignores any elements
+	 * except <code>&lt;text:s&gt;</code>, <code>&lt;text:line-break&gt;</code>
+	 * and <code>&lt;text:tab&gt</code>.
+	 * 
+	 * @param element
+	 *            an element whose text you want to retrieve
+	 * @return the element's text content, with whitespace expanded
+	 * 
+	 * @deprecated As of Simple version 0.3.5, replaced by
+	 *             <code>TextExtractor.getText(OdfElement)</code>
+	 * 
+	 * @see TextExtractor#getText(OdfElement)
+	 */
+	public String getText(Node element) {
+		String result = "";
+		int spaceCount;
+		Node node = element.getFirstChild();
+		while (node != null) {
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				result += node.getNodeValue();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				if (node.getLocalName().equals("s")) // text:s
+				{
+					try {
+						spaceCount = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						spaceCount = 1;
+					}
+					for (int i = 0; i < spaceCount; i++) {
+						result += " ";
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					result += "\n";
+				} else if (node.getLocalName().equals("tab")) {
+					result += "\t";
+				} else {
+					result = result + getText(node);
+				}
+			}
+			node = node.getNextSibling();
+		}
+		return result;
+	}
+
+	/**
+	 * Append text content to a given element, handling whitespace properly.
+	 * This is a static method that creates its own WhitespaceProcessor, so that
+	 * you don't have to.
+	 * 
+	 * @param element
+	 *            the element to which content is being added
+	 * @param content
+	 *            text content including whitespace
+	 */
+	public static void appendText(Element element, String content) {
+		WhitespaceProcessor processor = new WhitespaceProcessor();
+		processor.append(element, content);
+	}
+
+	/*
+	 * Send out any information that has been buffered
+	 */
+	private void emitPartial() {
+		/* send out any partial text */
+		if (!partial.equals("")) {
+			element.appendChild(owner.createTextNode(partial));
+		}
+		/* and any spaces if necessary */
+		if (nSpaces > 1) {
+			TextSElement spaceElement = new TextSElement(owner);
+			spaceElement.setTextCAttribute(new Integer(nSpaces - 1));
+			element.appendChild(spaceElement);
+		}
+		/* and reset all the counters */
+		nSpaces = 0;
+		partial = "";
+	}
+}
\ No newline at end of file
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/AbstractVariableContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/AbstractVariableContainer.java
new file mode 100644
index 0000000..f8b2675
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/AbstractVariableContainer.java
@@ -0,0 +1,91 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+
+/**
+ * AbstractVariableContainer is an abstract implementation of the
+ * VariableContainer interface, with a default implementation for every method
+ * defined in VariableContainer , except getVariableContainerElement(). A
+ * subclass must implement the abstract method getVariableContainerElement().
+ * 
+ * @since 0.5
+ */
+public abstract class AbstractVariableContainer implements VariableContainer {
+
+	public VariableField declareVariable(String name, VariableType type) {
+		VariableField variableField = null;
+		switch (type) {
+		case SIMPLE:
+			variableField = Fields.createSimpleVariableField(this, name);
+			break;
+		case USER:
+			variableField = Fields.createUserVariableField(this, name, "0");
+			break;
+		case SEQUENCE:
+			throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+		}
+		return variableField;
+	}
+
+	public VariableField getVariableFieldByName(String name) {
+		OdfElement containerElement = getVariableContainerElement();
+		TextVariableDeclsElement simpleVariableElements = OdfElement.findFirstChildNode(TextVariableDeclsElement.class,
+				containerElement);
+		if (simpleVariableElements != null) {
+			TextVariableDeclElement simpleVariableElement = (TextVariableDeclElement) simpleVariableElements
+					.getFirstChild();
+			while (simpleVariableElement != null) {
+				if (name.equals(simpleVariableElement.getTextNameAttribute())) {
+					return Fields.createSimpleVariableField(this, name);
+				} else {
+					simpleVariableElement = (TextVariableDeclElement) simpleVariableElement.getNextSibling();
+				}
+			}
+		}
+		TextUserFieldDeclsElement userVariableElements = OdfElement.findFirstChildNode(TextUserFieldDeclsElement.class,
+				containerElement);
+		if (userVariableElements != null) {
+			TextUserFieldDeclElement userVariableElement = (TextUserFieldDeclElement) userVariableElements
+					.getFirstChild();
+			while (userVariableElement != null) {
+				if (name.equals(userVariableElement.getTextNameAttribute())) {
+					String type = userVariableElement.getOfficeValueTypeAttribute();
+					if(type.equalsIgnoreCase("string")){
+						String stringValue = userVariableElement.getOfficeStringValueAttribute();
+						return Fields.createUserVariableField(this, name, stringValue);
+					}
+					Double DoubleValue = userVariableElement.getOfficeValueAttribute();
+					DoubleValue.toString();
+					return Fields.createUserVariableField(this, name, DoubleValue.toString());
+				} else {
+					userVariableElement = (TextUserFieldDeclElement) userVariableElement.getNextSibling();
+				}
+			}
+		}
+		return null;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/AuthorField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/AuthorField.java
new file mode 100644
index 0000000..6b44a16
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/AuthorField.java
@@ -0,0 +1,80 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorInitialsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+
+/**
+ * An <tt>AuthorField</tt> represents the initials of the author or the full
+ * name of the author of a document.
+ * <p>
+ * NOTE: Before the document is opened in any editor, the value of this field is
+ * invalid.
+ * 
+ * @since 0.5
+ */
+public class AuthorField extends Field {
+
+	private final boolean isInitials;
+
+	private TextAuthorNameElement authorNameElement;
+	private TextAuthorInitialsElement authorInitialsElement;
+
+	// package constructor, only called by Fields
+	AuthorField(OdfElement odfElement, boolean isAuthorInitials) {
+		isInitials = isAuthorInitials;
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		if (isAuthorInitials) {
+			authorInitialsElement = spanElement.newTextAuthorInitialsElement();
+			authorInitialsElement.setTextFixedAttribute(false);
+		} else {
+			authorNameElement = spanElement.newTextAuthorNameElement();
+			authorNameElement.setTextFixedAttribute(false);
+		}
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Return an instance of <code>OdfElement</code> which represents this
+	 * feature. If this is an initial author field, an instance of
+	 * <code>TextAuthorInitialsElement</code> is returned, otherwise an instance
+	 * of <code>TextAuthorNameElement</code> is returned.
+	 * 
+	 * @return an instance of <code>OdfElement</code>
+	 */
+	public OdfElement getOdfElement() {
+		if (isInitials) {
+			return authorInitialsElement;
+		} else {
+			return authorNameElement;
+		}
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return isInitials ? FieldType.AUTHOR_INITIALS_FIELD : FieldType.AUTHOR_NAME_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ChapterField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ChapterField.java
new file mode 100644
index 0000000..b83640c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ChapterField.java
@@ -0,0 +1,111 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextChapterElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+
+/**
+ * ChapterField is placed inside a header or footer, it displays the current
+ * chapter name or number on every page.
+ * <p>
+ * NOTE: Before the document is opened in any editor, the value of this field
+ * maybe invalid.
+ * 
+ * @since 0.5
+ */
+public class ChapterField extends Field {
+
+	private TextChapterElement chapterElement;
+
+	/**
+	 * A <tt>DisplayType</tt> specifies the information that a chapter field
+	 * should display.
+	 * 
+	 * @since 0.5
+	 */
+	public static enum DisplayType {
+
+		NAME("name"), 
+		NUMBER("number"), 
+		NUMBER_AND_NAME("number-and-name"), 
+		PLAIN_NUMBER("plain-number"), 
+		PLAIN_NUMBER_AND_NAME("plain-number-and-name");
+
+		private final String displayType;
+
+		DisplayType(String type) {
+			displayType = type;
+		}
+
+		@Override
+		public String toString() {
+			return displayType;
+		}
+	}
+
+	// package constructor, only called by Fields
+	ChapterField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		chapterElement = spanElement.newTextChapterElement(null, 1);
+		setDisplayPage(DisplayType.NUMBER_AND_NAME);
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Specifies the information that a chapter field should display.
+	 * 
+	 * @param type
+	 *            the display type which is predefined in
+	 *            {@link ChapterField.DisplayType DisplayType}.
+	 */
+	public void setDisplayPage(DisplayType type) {
+		chapterElement.setTextDisplayAttribute(type.toString());
+	}
+
+	/**
+	 * Specifies the outline level to be displayed.
+	 * 
+	 * @param level
+	 *            the outline level to be displayed.
+	 */
+	public void setOutlineLevel(int level) {
+		chapterElement.setTextOutlineLevelAttribute(level);
+	}
+
+	/**
+	 * Return an instance of <code>TextChapterElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>TextChapterElement</code>
+	 */
+	public TextChapterElement getOdfElement() {
+		return chapterElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return FieldType.CHAPTER_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ConditionField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ConditionField.java
new file mode 100644
index 0000000..c30e291
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ConditionField.java
@@ -0,0 +1,99 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextConditionalTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+
+/**
+ * ConditionField specifies a condition for display of one text string or
+ * another. If the condition is true, one of the text strings is displayed. If
+ * the condition is false, the other text string is displayed.
+ * 
+ * @since 0.5
+ */
+public class ConditionField extends Field {
+
+	private TextConditionalTextElement conditionalTextElement;
+	private final boolean isHiddenTextField;
+
+	// package constructor, only called by Fields
+	ConditionField(OdfElement odfElement, String condition, String trueText, String falseText, boolean isHiddenTextField) {
+		if (odfElement instanceof TextPElement) {
+			conditionalTextElement = ((TextPElement) odfElement).newTextConditionalTextElement("ooow:" + condition,
+					falseText, trueText);
+		} else if (odfElement instanceof TextSpanElement) {
+			conditionalTextElement = ((TextSpanElement) odfElement).newTextConditionalTextElement("ooow:" + condition,
+					falseText, trueText);
+		} else {
+			TextPElement pElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextPElement.class);
+			odfElement.appendChild(pElement);
+			conditionalTextElement = pElement.newTextConditionalTextElement("ooow:" + condition, falseText, trueText);
+		}
+		conditionalTextElement.setTextCurrentValueAttribute(true);
+		this.isHiddenTextField = isHiddenTextField;
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Update the condition of this field.
+	 * 
+	 * @param condition
+	 *            the new condition of this condition field.
+	 */
+	public void updateCondition(String condition) {
+		conditionalTextElement.setTextConditionAttribute("ooow:" + condition);
+	}
+
+	/**
+	 * Update the true text of this condition field.
+	 * 
+	 * @param text
+	 *            the new text content.
+	 */
+	public void updateTrueText(String text) {
+		conditionalTextElement.setTextStringValueIfTrueAttribute(text);
+	}
+
+	/**
+	 * Update the false text of this condition field.
+	 * 
+	 * @param text
+	 *            the new text content.
+	 */
+	public void updateFalseText(String text) {
+		conditionalTextElement.setTextStringValueIfFalseAttribute(text);
+	}
+
+	@Override
+	public OdfElement getOdfElement() {
+		return conditionalTextElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return isHiddenTextField ? FieldType.HIDDEN_TEXT_FIELD : FieldType.CONDITION_FIELD;
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/DateField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/DateField.java
new file mode 100644
index 0000000..c9fdd97
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/DateField.java
@@ -0,0 +1,156 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.text.TextDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+
+/**
+ * DateField displays a date, by default this is the current date.
+ * 
+ * @since 0.5
+ */
+public class DateField extends Field {
+
+	/**
+	 * The default date format of date field.
+	 */
+	private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
+
+	/**
+	 * The default date value format.
+	 */
+	private static final String DEFAULT_DATE_VALUE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.S";
+
+	private TextDateElement dateElement;
+
+	// package constructor, only called by Fields.
+	DateField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		dateElement = spanElement.newTextDateElement();
+		OdfNumberDateStyle dateStyle = newDateStyle();
+		String dateStyleName = dateStyle.getStyleNameAttribute();
+		dateStyle.buildFromFormat(DEFAULT_DATE_FORMAT);
+		dateStyle.setStyleNameAttribute(dateStyleName);
+		dateElement.setStyleDataStyleNameAttribute(dateStyle.getStyleNameAttribute());
+		Calendar calender = Calendar.getInstance();
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_DATE_VALUE_FORMAT);
+		Date date = calender.getTime();
+		String svalue = simpleFormat.format(date);
+		dateElement.setTextDateValueAttribute(svalue);
+		SimpleDateFormat contentFormat = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
+		dateElement.setTextContent(contentFormat.format(date));
+		dateElement.setTextFixedAttribute(true);
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Set the format of this date field. Date format pattern is the same as
+	 * {@link java.text.SimpleDateFormat SimpleDateFormat}.
+	 * 
+	 * @param formatString
+	 *            the format string of this date.
+	 * @see java.text.SimpleDateFormat
+	 */
+	public void formatDate(String formatString) {
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_DATE_VALUE_FORMAT);
+		String sValue = dateElement.getTextDateValueAttribute();
+		try {
+			Date simpleDate = simpleFormat.parse(sValue);
+			SimpleDateFormat newFormat = new SimpleDateFormat(formatString);
+			dateElement.setTextContent(newFormat.format(simpleDate));
+			OdfFileDom dom = (OdfFileDom) dateElement.getOwnerDocument();
+			OdfOfficeAutomaticStyles styles = null;
+			if (dom instanceof OdfContentDom) {
+				styles = ((OdfContentDom) dom).getAutomaticStyles();
+			} else if (dom instanceof OdfStylesDom) {
+				styles = ((OdfStylesDom) dom).getAutomaticStyles();
+			}
+			OdfNumberDateStyle dataStyle = styles.getDateStyle(dateElement.getStyleDataStyleNameAttribute());
+			dataStyle.buildFromFormat(formatString);
+		} catch (ParseException e) {
+			Logger.getLogger(DateField.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	/**
+	 * Set whether the date value of this field is fixed.
+	 * 
+	 * @param isFixed
+	 *            if <code>true</code>, the date value shall be preserved,
+	 *            otherwise it may be replaced with a new value in future edits.
+	 */
+	public void setFixed(boolean isFixed) {
+		dateElement.setTextFixedAttribute(isFixed);
+	}
+
+	/**
+	 * Return an instance of <code>TextDateElement</code> which represents this
+	 * feature.
+	 * 
+	 * @return an instance of <code>TextDateElement</code>
+	 */
+	public TextDateElement getOdfElement() {
+		return dateElement;
+	}
+
+	// Create an <code>OdfNumberDateStyle</code> element
+	private OdfNumberDateStyle newDateStyle() {
+		OdfFileDom dom = (OdfFileDom) dateElement.getOwnerDocument();
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		OdfNumberDateStyle newStyle = dom.newOdfElement(OdfNumberDateStyle.class);
+		newStyle.setStyleNameAttribute(newUniqueStyleName(styles));
+		styles.appendChild(newStyle);
+		return newStyle;
+	}
+
+	private String newUniqueStyleName(OdfOfficeAutomaticStyles styles) {
+		String unique_name;
+		do {
+			unique_name = String.format("N%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getTimeStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return dateElement.getTextFixedAttribute() ? FieldType.FIXED_DATE_FIELD : FieldType.DATE_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/Field.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/Field.java
new file mode 100644
index 0000000..755a45c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/Field.java
@@ -0,0 +1,65 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.simple.Component;
+
+/**
+ * This is the abstract class of all kinds of fields.
+ * 
+ * @see org.odftoolkit.simple.common.navigation.FieldSelection
+ * 
+ * @since 0.5
+ */
+public abstract class Field extends Component {
+	
+	/**
+	 * A <tt>FieldType</tt> specifies the type of a field.
+	 * 
+	 * @since 0.5
+	 */
+	public static enum FieldType {
+		DATE_FIELD,
+		FIXED_DATE_FIELD,
+		TIME_FIELD,
+		FIXED_TIME_FIELD,
+		PREVIOUS_PAGE_NUMBER_FIELD,
+		CURRENT_PAGE_NUMBER_FIELD,
+		NEXT_PAGE_NUMBER_FIELD,
+		PAGE_COUNT_FIELD,
+		TITLE_FIELD,
+		SUBJECT_FIELD,
+		AUTHOR_NAME_FIELD,
+		AUTHOR_INITIALS_FIELD,
+		CHAPTER_FIELD,
+		REFERENCE_FIELD,
+		SIMPLE_VARIABLE_FIELD,
+		USER_VARIABLE_FIELD,
+		CONDITION_FIELD,
+		HIDDEN_TEXT_FIELD;
+	}
+	
+	/**
+	 * Return the type of this field.
+	 * 
+	 * @return the type of this field.
+	 */
+	public abstract FieldType getFieldType();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/Fields.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/Fields.java
new file mode 100644
index 0000000..a5d60fe
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/Fields.java
@@ -0,0 +1,291 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.common.field.PageNumberField.DisplayType;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+
+/**
+ * This is a tool class to help the user creating all kinds of fields as needed.
+ * 
+ * @see org.odftoolkit.simple.common.navigation.FieldSelection
+ * @since 0.5
+ */
+public class Fields {
+
+	/**
+	 * Create an automatically update date field for the specific OdfElement,
+	 * which displays current date.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created date field.
+	 */
+	public static DateField createDateField(OdfElement odfElement) {
+		DateField dateField = new DateField(odfElement);
+		dateField.setFixed(false);
+		return dateField;
+	}
+
+	/**
+	 * Create a fixed date field for the specific OdfElement, which displays the
+	 * field created date.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created date field.
+	 */
+	public static DateField createFixedDateField(OdfElement odfElement) {
+		return new DateField(odfElement);
+	}
+
+	/**
+	 * Create an automatically update time field for the specific OdfElement,
+	 * which displays current time.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created time field.
+	 */
+	public static TimeField createTimeField(OdfElement odfElement) {
+		TimeField timeField = new TimeField(odfElement);
+		timeField.setFixed(false);
+		return timeField;
+	}
+
+	/**
+	 * Create a fixed time field for the specific OdfElement, which displays the
+	 * field created time.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created time field.
+	 */
+	public static TimeField createFixedTimeField(OdfElement odfElement) {
+		return new TimeField(odfElement);
+	}
+
+	/**
+	 * Create a page number field for the specific OdfElement, which displays
+	 * previous page number.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created page number field.
+	 */
+	public static PageNumberField createPreviousPageNumberField(OdfElement odfElement) {
+		PageNumberField pageNumberField = new PageNumberField(odfElement);
+		pageNumberField.setDisplayPage(DisplayType.PREVIOUS_PAGE);
+		return pageNumberField;
+	}
+
+	/**
+	 * Create a page number field for the specific OdfElement, which displays
+	 * current page number.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created page number field.
+	 */
+	public static PageNumberField createCurrentPageNumberField(OdfElement odfElement) {
+		return new PageNumberField(odfElement);
+	}
+
+	/**
+	 * Create a page number field for the specific OdfElement, which displays
+	 * next page number.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created page number field.
+	 */
+	public static PageNumberField createNextPageNumberField(OdfElement odfElement) {
+		PageNumberField pageNumberField = new PageNumberField(odfElement);
+		pageNumberField.setDisplayPage(DisplayType.NEXT_PAGE);
+		return pageNumberField;
+	}
+
+	/**
+	 * Create a page count field for the specific OdfElement, which displays
+	 * page total count of this document.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created page count field.
+	 */
+	public static PageCountField createPageCountField(OdfElement odfElement) {
+		return new PageCountField(odfElement);
+	}
+
+	/**
+	 * Create a title field for the specific OdfElement, which displays title
+	 * data of this document.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created title field.
+	 */
+	public static TitleField createTitleField(OdfElement odfElement) {
+		return new TitleField(odfElement);
+	}
+
+	/**
+	 * Create a subject field for the specific OdfElement, which displays the
+	 * subject data of this document.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created author field.
+	 */
+	public static SubjectField createSubjectField(OdfElement odfElement) {
+		return new SubjectField(odfElement);
+	}
+
+	/**
+	 * Create an author field for the specific OdfElement, which displays author
+	 * full name of this document.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created author field.
+	 */
+	public static AuthorField createAuthorNameField(OdfElement odfElement) {
+		return new AuthorField(odfElement, false);
+	}
+
+	/**
+	 * Create an author field for the specific OdfElement, which displays the
+	 * initials of the author of this document.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created author field.
+	 */
+	public static AuthorField createAuthorInitialsField(OdfElement odfElement) {
+		return new AuthorField(odfElement, true);
+	}
+
+	/**
+	 * Create a chapter field for the specific OdfElement.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @return the created chapter field.
+	 */
+	public static ChapterField createChapterField(OdfElement odfElement) {
+		return new ChapterField(odfElement);
+	}
+
+	/**
+	 * Create a ReferenceField for the specific OdfElement.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @param referenceName
+	 *            the reference field name.
+	 * @return the created reference field.
+	 */
+	public static ReferenceField createReferenceField(OdfElement odfElement, String referenceName) {
+		return new ReferenceField(odfElement, referenceName);
+	}
+
+	/**
+	 * Declare a simple variable field. Simple variables, can take different
+	 * values at different positions throughout a document.
+	 * <p>
+	 * Simple variables can be used to display different text in recurring
+	 * elements, such as headers or footers.
+	 * 
+	 * @param container
+	 *            the container which this variable field is contained.
+	 * @param name
+	 *            the name of this variable field.
+	 * @return the created variable field.
+	 */
+	public static VariableField createSimpleVariableField(VariableContainer container, String name) {
+		return new VariableField(container, name, VariableType.SIMPLE);
+	}
+
+	/**
+	 * Declare a user variable field. User variables have the same value
+	 * throughout a document. If a user variable is set anywhere within the
+	 * document, all fields in the document that display the user variable have
+	 * the same value.
+	 * 
+	 * @param container
+	 *            the container which this variable field is contained.
+	 * @param name
+	 *            the name of this variable field.
+	 * @param value
+	 *            the initial value of this variable field.
+	 * @return the created variable field.
+	 */
+	public static VariableField createUserVariableField(VariableContainer container, String name, String value) {
+		VariableField field = new VariableField(container, name, VariableType.USER);
+		field.updateField(value, (OdfElement) null);
+		return field;
+	}
+
+	/**
+	 * Declare a condition field, which specifies a condition for display of one
+	 * text string or another. If the condition is true, one of the text strings
+	 * is displayed. If the condition is false, the other text string is
+	 * displayed.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @param condition
+	 *            the condition that determines which of the two text strings is
+	 *            displayed.
+	 * @param trueText
+	 *            the text string to display if a <code>condition</code> is
+	 *            true.
+	 * @param falseText
+	 *            the text string to display if a <code>condition</code> is
+	 *            false.
+	 * @return the created condition field.
+	 */
+	public static ConditionField createConditionField(OdfElement odfElement, String condition, String trueText,
+			String falseText) {
+		return new ConditionField(odfElement, condition, trueText, falseText, false);
+	}
+
+	/**
+	 * Declare a hidden text field, which hides the text it contains when a
+	 * specified condition is true.
+	 * 
+	 * @param odfElement
+	 *            the OdfElement which owns this field.
+	 * @param condition
+	 *            the condition that determines whether the text string is
+	 *            displayed or not.
+	 * @param text
+	 *            the text string to display.
+	 * @return the created condition field.
+	 */
+	public static ConditionField createHiddenTextField(OdfElement odfElement, String condition, String text) {
+		return new ConditionField(odfElement, condition, null, text, true);
+	}
+
+	// private constructor, cannot instantiate.
+	private Fields() {
+	};
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/PageCountField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/PageCountField.java
new file mode 100644
index 0000000..476cd95
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/PageCountField.java
@@ -0,0 +1,88 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextPageCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.meta.Meta;
+import org.odftoolkit.simple.style.NumberFormat;
+
+/**
+ * A <tt>PageCountField</tt> displays the total number of pages in a document.
+ * The value of this field is from the owner document meta statistic
+ * information.
+ * <p>
+ * NOTE: Before the document is opened in any editor, the value of this field
+ * maybe invalid.
+ * 
+ * @since 0.5
+ */
+public class PageCountField extends Field {
+
+	private TextPageCountElement pageCountElement;
+
+	// package constructor, only called by Fields
+	PageCountField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		pageCountElement = spanElement.newTextPageCountElement(null);
+		try {
+			OdfFileDom dom = (OdfFileDom) odfElement.getOwnerDocument();
+			Meta meta = ((Document) dom.getDocument()).getOfficeMetadata();
+			int count = meta.getDocumentStatistic().getPageCount();
+			pageCountElement.setTextContent(String.valueOf(count));
+		} catch (Exception e) {
+			// get meta info failed, do not set count value. Let editor update
+			// it.
+		}
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Specifies the number format of this field.
+	 * 
+	 * @param format
+	 *            the format which is predefined in
+	 *            {@link org.odftoolkit.simple.style.NumberFormat NumberFormat}.
+	 * @see org.odftoolkit.simple.style.NumberFormat
+	 */
+	public void setNumberFormat(NumberFormat format) {
+		pageCountElement.setStyleNumFormatAttribute(format.toString());
+	}
+
+	/**
+	 * Return an instance of <code>TextPageCountElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>TextPageCountElement</code>
+	 */
+	public TextPageCountElement getOdfElement() {
+		return pageCountElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return FieldType.PAGE_COUNT_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/PageNumberField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/PageNumberField.java
new file mode 100644
index 0000000..380e300
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/PageNumberField.java
@@ -0,0 +1,122 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextPageNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.style.NumberFormat;
+
+/**
+ * A <tt>PageNumberField</tt> displays the current page number of pages in a
+ * document.
+ * <p>
+ * NOTE: Before the document is opened in any editor, the value of this field is
+ * invalid.
+ * 
+ * @since 0.5
+ */
+public class PageNumberField extends Field {
+
+	private TextPageNumberElement pageNumberElement;
+	private DisplayType type;
+
+	/**
+	 * A <tt>DisplayType</tt> represents the selected page attribute of the
+	 * field. The page immediately preceding the current page, current page and
+	 * the page immediately following the current page are supported.
+	 * 
+	 * @since 0.5
+	 */
+	public static enum DisplayType {
+
+		PREVIOUS_PAGE("previous"), CURRENT_PAGE("current"), NEXT_PAGE("next");
+
+		private final String displayType;
+
+		DisplayType(String type) {
+			displayType = type;
+		}
+
+		@Override
+		public String toString() {
+			return displayType;
+		}
+	}
+
+	// package constructor, only called by Fields
+	PageNumberField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		pageNumberElement = spanElement.newTextPageNumberElement(null);
+		setDisplayPage(DisplayType.CURRENT_PAGE);
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Specifies whether to display or not the number of a previous or following
+	 * page rather than the number of the current page.
+	 * 
+	 * @param type
+	 *            the display type which is predefined.
+	 */
+	public void setDisplayPage(DisplayType type) {
+		pageNumberElement.setTextSelectPageAttribute(type.toString());
+		this.type = type;
+	}
+
+	/**
+	 * Specifies the number format of this field.
+	 * 
+	 * @param format
+	 *            the format which is predefined in
+	 *            {@link org.odftoolkit.simple.style.NumberFormat NumberFormat}.
+	 * @see org.odftoolkit.simple.style.NumberFormat
+	 */
+	public void setNumberFormat(NumberFormat format) {
+		pageNumberElement.setStyleNumFormatAttribute(format.toString());
+	}
+
+	/**
+	 * Return an instance of <code>TextPageNumberElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>TextPageNumberElement</code>
+	 */
+	public TextPageNumberElement getOdfElement() {
+		return pageNumberElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		switch (type) {
+		case PREVIOUS_PAGE:
+			return FieldType.PREVIOUS_PAGE_NUMBER_FIELD;
+		case CURRENT_PAGE:
+			return FieldType.CURRENT_PAGE_NUMBER_FIELD;
+		case NEXT_PAGE:
+			return FieldType.NEXT_PAGE_NUMBER_FIELD;
+		default:
+			return null;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ReferenceField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ReferenceField.java
new file mode 100644
index 0000000..11bfba2
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/ReferenceField.java
@@ -0,0 +1,174 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextMetaElement;
+import org.odftoolkit.odfdom.dom.element.text.TextMetaFieldElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceMarkEndElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceMarkStartElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceRefElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.w3c.dom.Node;
+
+/**
+ * A ReferenceField refers to a field that appears in another location in a
+ * document.
+ * <p>
+ * The advantage of entering a reference as a field is that you do not have to
+ * adjust the references manually every time you change the document. Just
+ * update the fields and the references in the document are updated too.
+ * <p>
+ * NOTE: Before the document is opened in any editor, the value of this field
+ * maybe invalid.
+ * 
+ * @since 0.5
+ */
+public class ReferenceField extends Field {
+
+	private OdfElement referencedElement;
+	private String name;
+	private TextReferenceMarkStartElement referenceMarkStartElement;
+	private TextReferenceMarkEndElement referenceMarkEndElement;
+
+	/**
+	 * A <tt>DisplayType</tt> specifies the information that a reference field
+	 * should display.
+	 * <ul>
+	 * <li>CHAPTER: displays the number of the chapter in which the referenced
+	 * item appears.
+	 * <li>DIRECTION: displays whether the referenced item is above or below the
+	 * reference field.
+	 * <li>PAGE: displays the number of the page on which the referenced item
+	 * appears.
+	 * <li>TEXT: displays the text of the referenced item.
+	 * </ul>
+	 * 
+	 * @since 0.5
+	 */
+	public static enum DisplayType {
+
+		CHAPTER("chapter"), DIRECTION("direction"), PAGE("page"), TEXT("text");
+
+		private final String displayType;
+
+		DisplayType(String type) {
+			displayType = type;
+		}
+
+		@Override
+		public String toString() {
+			return displayType;
+		}
+	}
+
+	// package constructor, only called by Fields
+	ReferenceField(OdfElement odfElement, String referenceName) {
+		OdfElement parentEle = (OdfElement) odfElement.getParentNode();
+		if (parentEle instanceof TextAElement || parentEle instanceof TextHElement
+				|| parentEle instanceof TextMetaElement || parentEle instanceof TextMetaFieldElement
+				|| parentEle instanceof TextPElement || parentEle instanceof TextSpanElement) {
+			referencedElement = odfElement;
+			name = referenceName;
+			// insert start target element
+			referenceMarkStartElement = ((OdfFileDom) odfElement.getOwnerDocument())
+					.newOdfElement(TextReferenceMarkStartElement.class);
+			referenceMarkStartElement.setTextNameAttribute(referenceName);
+			parentEle.insertBefore(referenceMarkStartElement, odfElement);
+			// insert end target element
+			referenceMarkEndElement = ((OdfFileDom) odfElement.getOwnerDocument())
+					.newOdfElement(TextReferenceMarkEndElement.class);
+			referenceMarkEndElement.setTextNameAttribute(referenceName);
+			OdfElement nextSiblingEle = (OdfElement) odfElement.getNextSibling();
+			if (nextSiblingEle == null) {
+				parentEle.appendChild(referenceMarkEndElement);
+			} else {
+				parentEle.insertBefore(referenceMarkEndElement, nextSiblingEle);
+			}
+			Component.registerComponent(this, getOdfElement());
+		} else {
+			throw new IllegalArgumentException("The specific odf element can't own a reference field.");
+		}
+	}
+
+	/**
+	 * Set the name of this reference field.
+	 * 
+	 * @param referenceName
+	 *            the name of this content.
+	 */
+	public void setName(String referenceName) {
+		referenceMarkStartElement.setTextNameAttribute(name);
+		name = referenceName;
+	}
+
+	/**
+	 * Get the name of this reference field.
+	 * 
+	 * @return the name of this reference field.
+	 */
+	public String getName() {
+		return referenceMarkStartElement.getTextNameAttribute();
+	}
+
+	/**
+	 * Append this reference field after the specifics OdfElement.
+	 * 
+	 * @param odfEle
+	 *            the reference of odf element.
+	 *@param type
+	 *            the display type.
+	 */
+	public void appendReferenceTo(OdfElement odfEle, DisplayType type) {
+		// create reference ref element.
+		TextSpanElement spanElement = ((OdfFileDom) odfEle.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		TextReferenceRefElement referenceRefElement = spanElement.newTextReferenceRefElement();
+		referenceRefElement.setTextRefNameAttribute(name);
+		referenceRefElement.setTextReferenceFormatAttribute(type.toString());
+		// insert
+		if (odfEle instanceof TextPElement) {
+			odfEle.appendChild(spanElement);
+		} else {
+			OdfElement parentEle = (OdfElement) odfEle.getParentNode();
+			Node nextSiblingEle =  odfEle.getNextSibling();
+			TextPElement pElement = ((OdfFileDom) odfEle.getOwnerDocument()).newOdfElement(TextPElement.class);
+			pElement.appendChild(spanElement);
+			if (nextSiblingEle == null) {
+				parentEle.appendChild(pElement);
+			} else {
+				parentEle.insertBefore(pElement, nextSiblingEle);
+			}
+		}
+	}
+
+	public OdfElement getOdfElement() {
+		return referencedElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return FieldType.REFERENCE_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/SubjectField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/SubjectField.java
new file mode 100644
index 0000000..ab26ae6
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/SubjectField.java
@@ -0,0 +1,69 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSubjectElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.meta.Meta;
+
+/**
+ * A <tt>SubjectField</tt> displays the subject value contained by the document
+ * meta data.
+ * 
+ * @since 0.5
+ */
+public class SubjectField extends Field {
+	private TextSubjectElement subjectElement;
+
+	// package constructor, only called by Fields
+	SubjectField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		subjectElement = spanElement.newTextSubjectElement();
+		try {
+			OdfFileDom dom = (OdfFileDom) odfElement.getOwnerDocument();
+			Meta meta = ((Document) dom.getDocument()).getOfficeMetadata();
+			subjectElement.setTextContent(meta.getSubject());
+		} catch (Exception e) {
+			// get meta info failed, do not set content value. Let editor update
+			// it.
+		}
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Return an instance of <code>TextSubjectElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>TextSubjectElement</code>
+	 */
+	public TextSubjectElement getOdfElement() {
+		return subjectElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return FieldType.SUBJECT_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/TimeField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/TimeField.java
new file mode 100644
index 0000000..3e2d9a7
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/TimeField.java
@@ -0,0 +1,156 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTimeElement;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+
+/**
+ * TimeField displays a time, by default this is the current time.
+ * 
+ * @since 0.5
+ */
+public class TimeField extends Field {
+
+	/**
+	 * The default time format of time field.
+	 */
+	private static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
+
+	/**
+	 * The default time value format.
+	 */
+	private static final String DEFAULT_TIME_VALUE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.S";
+
+	private TextTimeElement timeElement;
+
+	// package constructor, only called by Fields.
+	TimeField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		timeElement = spanElement.newTextTimeElement();
+		OdfNumberTimeStyle timeStyle = newTimeStyle();
+		String timeStyleName = timeStyle.getStyleNameAttribute();
+		timeStyle.buildFromFormat(DEFAULT_TIME_FORMAT);
+		timeStyle.setStyleNameAttribute(timeStyleName);
+		timeElement.setStyleDataStyleNameAttribute(timeStyle.getStyleNameAttribute());
+		Calendar calender = Calendar.getInstance();
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_TIME_VALUE_FORMAT);
+		Date time = calender.getTime();
+		String svalue = simpleFormat.format(time);
+		timeElement.setTextTimeValueAttribute(svalue);
+		SimpleDateFormat contentFormat = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
+		timeElement.setTextContent(contentFormat.format(time));
+		timeElement.setTextFixedAttribute(true);
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Set the format of this time field. Time format pattern is the same as
+	 * {@link java.text.SimpleDateFormat SimpleDateFormat}.
+	 * 
+	 * @param formatString
+	 *            the format string of this time.
+	 * @see java.text.SimpleDateFormat
+	 */
+	public void formatTime(String formatString) {
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_TIME_VALUE_FORMAT);
+		String sValue = timeElement.getTextTimeValueAttribute();
+		try {
+			Date simpleDate = simpleFormat.parse(sValue);
+			SimpleDateFormat newFormat = new SimpleDateFormat(formatString);
+			timeElement.setTextContent(newFormat.format(simpleDate));
+			OdfFileDom dom = (OdfFileDom) timeElement.getOwnerDocument();
+			OdfOfficeAutomaticStyles styles = null;
+			if (dom instanceof OdfContentDom) {
+				styles = ((OdfContentDom) dom).getAutomaticStyles();
+			} else if (dom instanceof OdfStylesDom) {
+				styles = ((OdfStylesDom) dom).getAutomaticStyles();
+			}
+			OdfNumberTimeStyle dataStyle = styles.getTimeStyle(timeElement.getStyleDataStyleNameAttribute());
+			dataStyle.buildFromFormat(formatString);
+		} catch (ParseException e) {
+			Logger.getLogger(TimeField.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	/**
+	 * Set whether the time value of this field is fixed.
+	 * 
+	 * @param isFixed
+	 *            if <code>true</code>, the time value shall be preserved,
+	 *            otherwise it may be replaced with a new value in future edits.
+	 */
+	public void setFixed(boolean isFixed) {
+		timeElement.setTextFixedAttribute(isFixed);
+	}
+
+	/**
+	 * Return an instance of <code>TextTimeElement</code> which represents this
+	 * feature.
+	 * 
+	 * @return an instance of <code>TextTimeElement</code>
+	 */
+	public TextTimeElement getOdfElement() {
+		return timeElement;
+	}
+
+	// Create an <code>OdfNumberTimeStyle</code> element
+	private OdfNumberTimeStyle newTimeStyle() {
+		OdfFileDom dom = (OdfFileDom) timeElement.getOwnerDocument();
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		OdfNumberTimeStyle newStyle = dom.newOdfElement(OdfNumberTimeStyle.class);
+		newStyle.setStyleNameAttribute(newUniqueStyleName(styles));
+		styles.appendChild(newStyle);
+		return newStyle;
+	}
+
+	private String newUniqueStyleName(OdfOfficeAutomaticStyles styles) {
+		String unique_name;
+		do {
+			unique_name = String.format("N%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getTimeStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return FieldType.TIME_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/TitleField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/TitleField.java
new file mode 100644
index 0000000..3bae0e6
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/TitleField.java
@@ -0,0 +1,69 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTitleElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.meta.Meta;
+
+/**
+ * A <tt>TitleField</tt> displays the title value contained by the document meta
+ * data.
+ * 
+ * @since 0.5
+ */
+public class TitleField extends Field {
+	private TextTitleElement titleElement;
+
+	// package constructor, only called by Fields
+	TitleField(OdfElement odfElement) {
+		TextSpanElement spanElement = ((OdfFileDom) odfElement.getOwnerDocument()).newOdfElement(TextSpanElement.class);
+		odfElement.appendChild(spanElement);
+		titleElement = spanElement.newTextTitleElement();
+		try {
+			OdfFileDom dom = (OdfFileDom) odfElement.getOwnerDocument();
+			Meta meta = ((Document) dom.getDocument()).getOfficeMetadata();
+			titleElement.setTextContent(meta.getTitle());
+		} catch (Exception e) {
+			// get meta info failed, do not set content value. Let editor update
+			// it.
+		}
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Return an instance of <code>TextTitleElement</code> which represents this
+	 * feature.
+	 * 
+	 * @return an instance of <code>TextTitleElement</code>
+	 */
+	public TextTitleElement getOdfElement() {
+		return titleElement;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		return FieldType.TITLE_FIELD;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/VariableContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/VariableContainer.java
new file mode 100644
index 0000000..dbe574c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/VariableContainer.java
@@ -0,0 +1,71 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+
+/**
+ * VariableContainer is a container which maintains the declared variables.
+ * Variable(s) can be added in this container.
+ * 
+ * @see VariableField
+ * @see org.odftoolkit.simple.TextDocument
+ * @see org.odftoolkit.simple.text.Header
+ * @see org.odftoolkit.simple.text.Footer
+ * 
+ * @since 0.5
+ */
+public interface VariableContainer {
+
+	/**
+	 * Get the ODF element which can have variable declare section as child
+	 * element directly according to ODF specification. This element will help
+	 * to find the position to declare a new variable.
+	 * <p>
+	 * The variable declare section may be <text:variable-decls>,
+	 * <text:user-field-decls> or <text:sequence-decls>.
+	 * 
+	 * @return container element which can hold variable declare section.
+	 */
+	public OdfElement getVariableContainerElement();
+
+	/**
+	 * Declare a new variable field to this container.
+	 * 
+	 * @param name
+	 *            the unique name of this variable field.
+	 * @param type
+	 *            the type of this variable field.
+	 * 
+	 * @return declared variable field.
+	 */
+	public VariableField declareVariable(String name, VariableType type);
+
+	/**
+	 * Return the declared variable by name.
+	 * 
+	 * @param name
+	 *            the unique name of this variable field.
+	 * @return the declared variable.
+	 */
+	public VariableField getVariableFieldByName(String name);
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/VariableField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/VariableField.java
new file mode 100644
index 0000000..e32b004
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/field/VariableField.java
@@ -0,0 +1,259 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableSetElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+
+/**
+ * ODF document can contain variables, which are processed or displayed as
+ * VariableFields. In an ODF file, variable declarations shall precede in
+ * document order any use of those variable declarations.
+ * 
+ * @since 0.5
+ */
+public class VariableField extends Field {
+
+	private final VariableType type;
+	private final String name;
+
+	private TextVariableDeclElement simpleVariableElement;
+	private TextVariableDeclsElement simpleVariableElements;
+
+	private TextUserFieldDeclElement userVariableElement;
+	private TextUserFieldDeclsElement userVariableElements;
+
+	/**
+	 * A <tt>VariableType</tt> represents the type of the variable field. There
+	 * are three types of variables:
+	 * <ul>
+	 * <li>SIMPLE: Simple variables, or variables, can take different values at
+	 * different positions throughout a document. Simple variables can be used
+	 * to display different text in recurring elements, such as headers or
+	 * footers.
+	 * <li>USER: User variables have the same value throughout a document. If a
+	 * user variable is set anywhere within the document, all fields in the
+	 * document that display the user variable have the same value.
+	 * <li>SEQUENCE: Sequence variables are used to number items in an ODF text
+	 * document. NOTE: Simple Java API for ODF doesn't support this type now.
+	 * </ul>
+	 * 
+	 * @since 0.5
+	 */
+	public static enum VariableType {
+
+		SIMPLE("simple"), USER("user"), SEQUENCE("sequence");
+
+		private final String variableType;
+
+		VariableType(String type) {
+			variableType = type;
+		}
+
+		@Override
+		public String toString() {
+			return variableType;
+		}
+	}
+
+	// package constructor, only called by Fields
+	VariableField(VariableContainer container, String name, VariableType type) {
+		this.type = type;
+		this.name = name;
+		OdfElement containerElement = container.getVariableContainerElement();
+		switch (type) {
+		case SIMPLE:
+			simpleVariableElements = OdfElement.findFirstChildNode(TextVariableDeclsElement.class, containerElement);
+			if (simpleVariableElements == null) {
+				simpleVariableElements = ((OdfFileDom) containerElement.getOwnerDocument())
+						.newOdfElement(TextVariableDeclsElement.class);
+				containerElement.insertBefore(simpleVariableElements, containerElement.getFirstChild());
+			} else {
+				TextVariableDeclElement simpleVariableElementTmp = (TextVariableDeclElement) simpleVariableElements
+						.getFirstChild();
+				while (simpleVariableElementTmp != null) {
+					if (name.equals(simpleVariableElementTmp.getTextNameAttribute())) {
+						simpleVariableElement = simpleVariableElementTmp;
+						break;
+					} else {
+						simpleVariableElementTmp = (TextVariableDeclElement) simpleVariableElementTmp.getNextSibling();
+					}
+				}
+			}
+			if (simpleVariableElement == null) {
+				simpleVariableElement = simpleVariableElements.newTextVariableDeclElement("string", name);
+			}
+			break;
+		case USER:
+			userVariableElements = OdfElement.findFirstChildNode(TextUserFieldDeclsElement.class, containerElement);
+			if (userVariableElements == null) {
+				userVariableElements = ((OdfFileDom) containerElement.getOwnerDocument())
+						.newOdfElement(TextUserFieldDeclsElement.class);
+				containerElement.insertBefore(userVariableElements, containerElement.getFirstChild());
+			} else {
+				TextUserFieldDeclElement userVariableElementTmp = (TextUserFieldDeclElement) userVariableElements
+						.getFirstChild();
+				while (userVariableElementTmp != null) {
+					if (name.equals(userVariableElementTmp.getTextNameAttribute())) {
+						userVariableElement = userVariableElementTmp;
+						break;
+					} else {
+						userVariableElementTmp = (TextUserFieldDeclElement) userVariableElementTmp.getNextSibling();
+					}
+				}
+			}
+			if (userVariableElement == null) {
+				userVariableElement = userVariableElements.newTextUserFieldDeclElement(0, "string", name);
+			}
+			break;
+		case SEQUENCE:
+			throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+		}
+		Component.registerComponent(this, getOdfElement());
+	}
+
+	/**
+	 * Reset the value of this variable field after the reference OdfElement.
+	 * <p>
+	 * Note: For user variable, the value of all fields in the document that
+	 * display the user variable will be reset.
+	 * 
+	 * @param value
+	 *            the new value of this variable field.
+	 * @param refElement
+	 *            the reference OdfElement. The variable field will be appended
+	 *            after this element. For user variable, this parameter can be
+	 *            null.
+	 */
+	public void updateField(String value, OdfElement refElement) {
+		String officeNS = OdfDocumentNamespace.OFFICE.getUri();
+		switch (type) {
+		case SIMPLE:
+			TextVariableSetElement textVariableSetElement = null;
+			if (refElement instanceof TextPElement) {
+				textVariableSetElement = ((TextPElement) refElement).newTextVariableSetElement(0, "string", name);
+			} else if (refElement instanceof TextSpanElement) {
+				textVariableSetElement = ((TextSpanElement) refElement).newTextVariableSetElement(0, "string", name);
+			} else {
+				TextPElement pElement = ((OdfFileDom) refElement.getOwnerDocument()).newOdfElement(TextPElement.class);
+				OdfElement parentEle = (OdfElement) refElement.getParentNode();
+				parentEle.insertBefore(pElement, refElement.getNextSibling());
+				textVariableSetElement = pElement.newTextVariableSetElement(0, "string", name);
+			}
+			textVariableSetElement.removeAttributeNS(officeNS, "value");
+			textVariableSetElement.setOfficeStringValueAttribute(value);
+			textVariableSetElement.setTextContent(value);
+			break;
+		case USER:
+			userVariableElement.setOfficeValueTypeAttribute("string");
+			userVariableElement.setOfficeStringValueAttribute(value);
+			break;
+		case SEQUENCE:
+			throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+		}
+
+	}
+
+	/**
+	 * Display this variable field after the reference OdfElement.
+	 * 
+	 * @param refElement
+	 *            the reference OdfElement. The variable field will be appended
+	 *            after this element.
+	 */
+	public void displayField(OdfElement refElement) {
+		if (refElement instanceof TextSpanElement) {
+			TextSpanElement spanEle = (TextSpanElement) refElement;
+			switch (type) {
+			case SIMPLE:
+				spanEle.newTextVariableGetElement(name);
+				break;
+			case USER:
+				spanEle.newTextUserFieldGetElement(name);
+				break;
+			case SEQUENCE:
+				throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+			}
+		} else {
+			TextPElement textPElement;
+			if (refElement instanceof TextPElement) {
+				textPElement = (TextPElement) refElement;
+			} else {
+				textPElement = ((OdfFileDom) refElement.getOwnerDocument()).newOdfElement(TextPElement.class);
+				OdfElement parentEle = (OdfElement) refElement.getParentNode();
+				parentEle.insertBefore(textPElement, refElement.getNextSibling());
+			}
+			switch (type) {
+			case SIMPLE:
+				textPElement.newTextVariableGetElement(name);
+				break;
+			case USER:
+				textPElement.newTextUserFieldGetElement(name);
+				break;
+			case SEQUENCE:
+				throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+			}
+		}
+	}
+
+	/**
+	 * Get the variable field name.
+	 * 
+	 * @return the variable field name
+	 */
+	public String getVariableName() {
+		return name;
+	}
+
+	@Override
+	public OdfElement getOdfElement() {
+		switch (type) {
+		case SIMPLE:
+			return simpleVariableElement;
+		case USER:
+			return userVariableElement;
+		case SEQUENCE:
+			throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+		}
+		return null;
+	}
+
+	@Override
+	public FieldType getFieldType() {
+		switch (type) {
+		case SIMPLE:
+			return FieldType.SIMPLE_VARIABLE_FIELD;
+		case USER:
+			return FieldType.USER_VARIABLE_FIELD;
+		case SEQUENCE:
+			throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+		}
+		return null;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/CellSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/CellSelection.java
new file mode 100644
index 0000000..94edc8b
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/CellSelection.java
@@ -0,0 +1,112 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.CellValueAdapter;
+
+/**
+ * Based on <code>TextSelection</code>, <code>CellSelection</code> updates table
+ * cell value and value type when the cell text is replaced by other content.
+ * This is a more complete realization than TextSelection for cell content
+ * replacement, which keeps the synchronization among cell value, value type and
+ * display text.
+ * 
+ * @see TextSelection
+ * @see org.odftoolkit.simple.table.CellValueAdapter
+ * 
+ * @since 0.3
+ */
+public class CellSelection extends TextSelection {
+
+	private Cell mCell;
+
+	/**
+	 * Constructor of CellSelection.
+	 * 
+	 * @param text
+	 *            the text content of this CellSelection
+	 * @param containerElement
+	 *            the paragraph element that contains this CellSelection
+	 * @param index
+	 *            the start index of the text content of the container element
+	 * @param cell
+	 *            the table cell which is selected
+	 */
+	CellSelection(Navigation search, String text, OdfElement containerElement,
+			int index, Cell cell) {
+		super(search, text, containerElement, index);
+		mCell = cell;
+	}
+
+
+	/**
+	 * Replace the text content of selection with a new string. The cell value
+	 * and value type will be updated follow by the rules which are designed in
+	 * the {@link org.odftoolkit.simple.table.CellValueAdapter
+	 * <code>CellValueAdapter</code>}.
+	 * 
+	 * @param newText
+	 *            the replace text String
+	 * @param adapter
+	 *            the <code>CellValueAdapter</code> used to adapt cell value and
+	 *            value type
+	 * @throws InvalidNavigationException
+	 *            if the selection is unavailable.
+	 * 
+	 * @see #replaceWith(String)
+	 * @see org.odftoolkit.simple.table.CellValueAdapter
+	 */
+	public void advancedReplaceWith(String newText, CellValueAdapter adapter) throws InvalidNavigationException {
+		super.replaceWith(newText);
+		if (mCell != null) {
+			String text = mCell.getDisplayText();
+			// update mCell value and value type.
+			mCell.setDisplayText(text, adapter);
+		}
+	}
+
+	/**
+	 * Replace the text content of selection with a new string. The cell value
+	 * and value type will be updated follow by the rules which are designed in
+	 * the {@link org.odftoolkit.simple.table.DefaultCellValueAdapter
+	 * <code>DefaultCellValueAdapter</code>}.
+	 * 
+	 * @param newText
+	 *            the replace text String
+	 * @throws InvalidNavigationException
+	 *            if the selection is unavailable.
+	 * 
+	 * @see org.odftoolkit.simple.table.DefaultCellValueAdapter
+	 */
+	public void advancedReplaceWith(String newText) throws InvalidNavigationException {
+		advancedReplaceWith(newText, CellValueAdapter.DEFAULT_VALUE_ADAPTER);
+	}
+
+	/**
+	 * Get the selected table cell.
+	 * 
+	 * @return the selected table cell
+	 */
+	public Cell getCell() {
+		return mCell;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/FieldSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/FieldSelection.java
new file mode 100644
index 0000000..139938f
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/FieldSelection.java
@@ -0,0 +1,462 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.common.field.ConditionField;
+import org.odftoolkit.simple.common.field.Field;
+import org.odftoolkit.simple.common.field.Fields;
+import org.odftoolkit.simple.common.field.ReferenceField;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * This is a decorator class of TextSelection, which help user replace a text
+ * content with field.
+ * 
+ * @see org.odftoolkit.simple.common.field.Fields
+ * @see org.odftoolkit.simple.common.field.AuthorField
+ * @see org.odftoolkit.simple.common.field.ChapterField
+ * @see org.odftoolkit.simple.common.field.ConditionField
+ * @see org.odftoolkit.simple.common.field.DateField
+ * @see org.odftoolkit.simple.common.field.PageCountField
+ * @see org.odftoolkit.simple.common.field.PageNumberField
+ * @see org.odftoolkit.simple.common.field.ReferenceField
+ * @see org.odftoolkit.simple.common.field.SubjectField
+ * @see org.odftoolkit.simple.common.field.TimeField
+ * @see org.odftoolkit.simple.common.field.TitleField
+ * @see org.odftoolkit.simple.common.field.VariableField
+ * 
+ * @since 0.5
+ */
+public class FieldSelection extends Selection {
+
+	private TextSelection textSelection;
+	private boolean mIsInserted;
+	private OdfTextSpan spanContainer;
+
+	/**
+	 * Replace the content with a simple field, such as author field, page
+	 * number field, date field and so on.
+	 * 
+	 * @param fieldType
+	 *            the simple field type to replace.
+	 */
+	public Field replaceWithSimpleField(Field.FieldType fieldType) {
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		prepareSpanContainer(leftLength, index);
+		Field field = null;
+		switch (fieldType) {
+		case DATE_FIELD:
+			field = Fields.createDateField(spanContainer);
+			break;
+		case FIXED_DATE_FIELD:
+			field = Fields.createFixedDateField(spanContainer);
+			break;
+		case TIME_FIELD:
+			field = Fields.createTimeField(spanContainer);
+			break;
+		case FIXED_TIME_FIELD:
+			field = Fields.createFixedTimeField(spanContainer);
+			break;
+		case PREVIOUS_PAGE_NUMBER_FIELD:
+			field = Fields.createPreviousPageNumberField(spanContainer);
+			break;
+		case CURRENT_PAGE_NUMBER_FIELD:
+			field = Fields.createCurrentPageNumberField(spanContainer);
+			break;
+		case NEXT_PAGE_NUMBER_FIELD:
+			field = Fields.createNextPageNumberField(spanContainer);
+			break;
+		case PAGE_COUNT_FIELD:
+			field = Fields.createPageCountField(spanContainer);
+			break;
+		case TITLE_FIELD:
+			field = Fields.createTitleField(spanContainer);
+			break;
+		case SUBJECT_FIELD:
+			field = Fields.createSubjectField(spanContainer);
+			break;
+		case AUTHOR_NAME_FIELD:
+			field = Fields.createAuthorNameField(spanContainer);
+			break;
+		case AUTHOR_INITIALS_FIELD:
+			field = Fields.createAuthorInitialsField(spanContainer);
+			break;
+		case CHAPTER_FIELD:
+			field = Fields.createChapterField(spanContainer);
+			break;
+		case REFERENCE_FIELD:
+		case SIMPLE_VARIABLE_FIELD:
+		case USER_VARIABLE_FIELD:
+		case CONDITION_FIELD:
+		case HIDDEN_TEXT_FIELD:
+			throw new IllegalArgumentException("this is not a vaild simple field type.");
+		}
+		textSelection.mMatchedText = field.getOdfElement().getTextContent();
+		int textLength = textSelection.mMatchedText.length();
+		int offset = textLength - leftLength;
+		SelectionManager.refresh(textSelection.getContainerElement(), offset, index + textLength);
+		return field;
+	}
+
+	/**
+	 * Replace the content with a reference field.
+	 * 
+	 * @param field
+	 *            the reference field to replace.
+	 */
+	public void replaceWithReferenceField(ReferenceField field, ReferenceField.DisplayType type) {
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		prepareSpanContainer(leftLength, index);
+		field.appendReferenceTo(spanContainer, type);
+		textSelection.mMatchedText = field.getOdfElement().getTextContent();
+		int textLength = textSelection.mMatchedText.length();
+		int offset = textLength - leftLength;
+		SelectionManager.refresh(textSelection.getContainerElement(), offset, index + textLength);
+	}
+
+	/**
+	 * Replace the content with a variable field.
+	 * 
+	 * @param field
+	 *            the variable field to replace.
+	 */
+	public void replaceWithVariableField(VariableField field) {
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		prepareSpanContainer(leftLength, index);
+		field.displayField(spanContainer);
+		textSelection.mMatchedText = field.getOdfElement().getTextContent();
+		int textLength = textSelection.mMatchedText.length();
+		int offset = textLength - leftLength;
+		SelectionManager.refresh(textSelection.getContainerElement(), offset, index + textLength);
+	}
+
+	/**
+	 * Replace the content with a condition field.
+	 * 
+	 * @param condition
+	 *            the condition that determines which of the two text strings is
+	 *            displayed.
+	 * @param trueText
+	 *            the text string to display if a <code>condition</code> is
+	 *            true.
+	 * @param falseText
+	 *            the text string to display if a <code>condition</code> is
+	 *            false.
+	 * @return the created condition field.
+	 */
+	public ConditionField replaceWithConditionField(String condition, String trueText, String falseText) {
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		prepareSpanContainer(leftLength, index);
+		textSelection.mMatchedText = "";
+		int offset = -leftLength;
+		SelectionManager.refresh(textSelection.getContainerElement(), offset, index);
+		return Fields.createConditionField(spanContainer, condition, trueText, falseText);
+	}
+
+	/**
+	 * Replace the content with a hidden text field.
+	 * 
+	 * @param condition
+	 *            the condition that determines whether the text string is
+	 *            displayed or not.
+	 * @param text
+	 *            the text string to display.
+	 * @return the created condition field.
+	 */
+	public ConditionField replaceWithHiddenTextField(String condition, String text) {
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		prepareSpanContainer(leftLength, index);
+		textSelection.mMatchedText = "";
+		int offset = -leftLength;
+		SelectionManager.refresh(textSelection.getContainerElement(), offset, index);
+		return Fields.createHiddenTextField(spanContainer, condition, text);
+	}
+
+	/**
+	 * Apply a style to the selection so that the text style of this selection
+	 * will append the specified style.
+	 * 
+	 * @param style
+	 *            the style can be from the current document or user defined
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	public void applyStyle(OdfStyleBase style) throws InvalidNavigationException {
+		if (spanContainer == null) {
+			textSelection.applyStyle(style);
+		} else {
+			spanContainer.setProperties(style.getStyleProperties());
+		}
+	}
+
+	/**
+	 * Construct a FieldSelection with TextSelection. Then user can replace text
+	 * content with fields.
+	 * 
+	 * @param selection
+	 *            the TextSelection to be decorated.
+	 */
+	public FieldSelection(TextSelection selection) {
+		textSelection = selection;
+		spanContainer = null;
+	}
+
+	/**
+	 * Delete the selection from the document the other matched selection in the
+	 * same container element will be updated automatically because the start
+	 * index of the following selections will be changed when the previous
+	 * selection has been deleted.
+	 * 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		textSelection.cut();
+	}
+
+	/**
+	 * Replace the text content of selection with a new string.
+	 * 
+	 * @param newText
+	 *            the replace text String
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	public void replaceWith(String newText) throws InvalidNavigationException {
+		textSelection.replaceWith(newText);
+	}
+
+	/**
+	 * Paste this selection just after a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtEndOf(positionItem);
+	}
+
+	/**
+	 * Paste this selection just before a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtFrontOf(positionItem);
+	}
+
+	protected void refresh(int offset) {
+		textSelection.refresh(offset);
+	}
+
+	protected void refreshAfterFrontalDelete(Selection deletedItem) {
+		textSelection.refreshAfterFrontalDelete(deletedItem);
+	}
+
+	protected void refreshAfterFrontalInsert(Selection insertedItem) {
+		textSelection.refreshAfterFrontalInsert(insertedItem);
+	}
+
+	/*
+	 * Initialize or clear the <code>OdfTextSpan<code> element which contains
+	 * replaced field.
+	 */
+	private void prepareSpanContainer(int leftLength, int index) {
+		if (spanContainer == null) {
+			OdfElement parentElement = textSelection.getContainerElement();
+			delete(index, leftLength, parentElement);
+			spanContainer = new OdfTextSpan((OdfFileDom) parentElement.getOwnerDocument());
+			mIsInserted = false;
+			insertSpan(spanContainer, index, parentElement);
+		} else {
+			Node childNode = spanContainer.getFirstChild();
+			while (childNode != null) {
+				spanContainer.removeChild(childNode);
+				childNode = spanContainer.getFirstChild();
+			}
+		}
+	}
+
+	/*
+	 * Delete the <code>pNode<code> from the <code>fromIndex</code> text, and
+	 * delete <code>leftLength</code> text.
+	 */
+	private void delete(int fromIndex, int leftLength, Node pNode) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromIndex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						delete(fromIndex, leftLength, node);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*
+	 * Insert <code>textSpan</code> into the from index of <code>pNode<code>.
+	 */
+	private void insertSpan(OdfTextSpan textSpan, int fromIndex, Node pNode) {
+		if (fromIndex < 0) {
+			fromIndex = 0;
+		}
+		if (fromIndex == 0 && mIsInserted) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if (fromIndex <= 0 && mIsInserted) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+				if ((fromIndex != 0) && (nodeLength < fromIndex)) {
+					fromIndex -= nodeLength;
+				} else {
+					// insert result after node, and insert an new text node
+					// after the result node
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					// insert the text span in appropriate position
+					node.setNodeValue(buffer.toString());
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					Node newNode = node.cloneNode(true);
+					newNode.setNodeValue(value.substring(fromIndex, value.length()));
+					if (nextNode != null) {
+						parNode.insertBefore(textSpan, nextNode);
+						parNode.insertBefore(newNode, nextNode);
+					} else {
+						parNode.appendChild(textSpan);
+						parNode.appendChild(newNode);
+					}
+					mIsInserted = true;
+					return;
+				}
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+					fromIndex -= nodeLength;
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+					fromIndex--;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+					fromIndex--;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+					insertSpan(textSpan, fromIndex, node);
+					fromIndex -= nodeLength;
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/ImageSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/ImageSelection.java
new file mode 100644
index 0000000..c9a9563
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/ImageSelection.java
@@ -0,0 +1,376 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.draw.Image;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This is a decorator class of TextSelection, which help user replace a text content with a Image from Document or from URI.
+ * 
+ */
+public class ImageSelection extends Selection {
+
+	private TextSelection textSelection;
+	private DrawFrameElement imageContainer;
+
+	private boolean mIsInserted;
+	
+	/**
+	 * Replace the content with a Image
+	 * 
+	 * @param image the reference Image to replace.
+	 *   
+	 * @return the new Image in the TextDocument,the image name is set to "replace" + System.currentTimeMillis(), please update the name to others by yourself.
+	 *
+	 */
+	public Image replaceWithImage(Image image) {
+		Image mImage =null;
+		if(search instanceof TextNavigation){
+			TextNavigation textSearch = (TextNavigation) search;
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		mIsInserted = false;
+		OdfElement parentElement = textSelection.getContainerElement();
+		OdfFileDom ownerDom = (OdfFileDom) parentElement.getOwnerDocument();
+		
+			int nodeLength = TextExtractor.getText(
+					this.textSelection.getContainerElement()).length();
+			if (this.textSelection.getText().length() != nodeLength)
+				this.textSelection.setSelectionReplaced(true);
+		try {
+			if (imageContainer == null) {
+				delete(index, leftLength, parentElement);
+				// PrepareContainer
+				imageContainer = ownerDom.newOdfElement(DrawFrameElement.class);
+				insertOdfElement(imageContainer, index, parentElement);
+			} else {
+				NodeList nodeImages = imageContainer.getElementsByTagName("draw:image");
+				Node nodeImage = nodeImages.item(0);
+				DrawImageElement im = (DrawImageElement) nodeImage;
+				Image oldimage = Image.getInstanceof(im);
+				oldimage.remove();
+				// PrepareContainer
+				imageContainer = ownerDom.newOdfElement(DrawFrameElement.class);
+				insertOdfElement(imageContainer, index, parentElement);
+			}
+			// Insert Image resource to package
+			DrawImageElement imageElement = imageContainer.newDrawImageElement();
+			InputStream is = image.getImageInputStream();
+			String internalPath = image.getInternalPath();
+			String mediaType = OdfFileEntry.getMediaTypeString(internalPath);
+			OdfSchemaDocument mOdfSchemaDoc = (OdfSchemaDocument) ownerDom.getDocument();
+			String packagePath = Image.getPackagePath(mOdfSchemaDoc,internalPath);
+			mOdfSchemaDoc.getPackage().insert(is, packagePath, mediaType);
+			packagePath = packagePath.replaceFirst(ownerDom.getDocument().getDocumentPath(), "");
+			Image.configureInsertedImage((OdfSchemaDocument) ownerDom.getDocument(), imageElement,packagePath, false);
+			// get image object
+			mImage = Image.getInstanceof(imageElement);
+			mImage.getStyleHandler().setAchorType(AnchorType.AS_CHARACTER);
+			mImage.setName("replace" + System.currentTimeMillis());
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageSelection.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		}
+		return mImage;
+	}	
+	/**
+	 * Replace the content with a Image
+	 * 
+	 * @param imageUri the URI of the reference Image to replace
+	 *   
+	 * @return the new Image in the TextDocument,the image name is set to "replace" + System.currentTimeMillis(), please update the name to others by yourself
+	 *
+	 */
+	public Image replaceWithImage(URI imageUri) {
+		Image mImage =null;
+		if(search instanceof TextNavigation){
+			TextNavigation textSearch = (TextNavigation) search;
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		mIsInserted = false;
+		OdfElement parentElement = textSelection.getContainerElement();
+		OdfFileDom ownerDom = (OdfFileDom) parentElement.getOwnerDocument();
+			int nodeLength = TextExtractor.getText(
+					this.textSelection.getContainerElement()).length();
+			if (this.textSelection.getText().length() != nodeLength)
+				this.textSelection.setSelectionReplaced(true);
+		try{
+			if (imageContainer == null) {
+				delete(index, leftLength, parentElement);
+				// PrepareContainer
+				imageContainer = ownerDom.newOdfElement(DrawFrameElement.class);
+				insertOdfElement(imageContainer, index, parentElement);
+			} else {
+				NodeList nodeImages = imageContainer.getElementsByTagName("draw:image");
+				Node nodeImage = nodeImages.item(0);
+				DrawImageElement im = (DrawImageElement) nodeImage;
+				Image oldimage = Image.getInstanceof(im);
+				oldimage.remove();
+				// PrepareContainer
+				imageContainer = ownerDom.newOdfElement(DrawFrameElement.class);
+				insertOdfElement(imageContainer, index, parentElement);
+			}
+			// Insert Image resource to package
+			DrawImageElement imageElement = imageContainer.newDrawImageElement();
+			String imageRef = imageUri.toString();
+			String mediaType = OdfFileEntry.getMediaTypeString(imageRef);
+			OdfSchemaDocument mOdfSchemaDoc = (OdfSchemaDocument) ownerDom.getDocument();
+			String packagePath = Image.getPackagePath(mOdfSchemaDoc, imageRef);
+			mOdfSchemaDoc.getPackage().insert(imageUri, packagePath, mediaType);
+			packagePath = packagePath.replaceFirst(ownerDom.getDocument().getDocumentPath(), "");
+			Image.configureInsertedImage((OdfSchemaDocument) ownerDom.getDocument(), imageElement,packagePath, false);
+			// get image object
+			mImage = Image.getInstanceof(imageElement);
+			mImage.getStyleHandler().setAchorType(AnchorType.AS_CHARACTER);
+			mImage.setName("replace" + System.currentTimeMillis());
+			
+		} catch (Exception e) {
+			Logger.getLogger(ImageSelection.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			}
+		}
+		return mImage;
+	}	
+	/*
+	 * Delete the <code>pNode<code> from the <code>fromIndex</code> text, and
+	 * delete <code>leftLength</code> text.
+	 */
+	private void delete(int fromIndex, int leftLength, Node pNode) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromIndex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						delete(fromIndex, leftLength, node);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/**
+	 * Construct a ImageSelection with TextSelection. Then user can replace text
+	 * content with Image from Document or Image form System
+	 * 
+	 * @param selection
+	 *            the TextSelection to be decorated.
+	 */
+	public ImageSelection(TextSelection selection) {
+		textSelection = selection;
+		search = textSelection.getTextNavigation();
+		imageContainer = null;
+	}
+
+	/**
+	 * Delete the selection from the document the other matched selection in the
+	 * same container element will be updated automatically because the start
+	 * index of the following selections will be changed when the previous
+	 * selection has been deleted.
+	 * 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		textSelection.cut();
+	}
+
+	/**
+	 * Paste this selection just after a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtEndOf(positionItem);
+	}
+	
+
+	/**
+	 * Paste this selection just before a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtFrontOf(positionItem);
+	}
+
+	protected void refresh(int offset) {
+		textSelection.refresh(offset);
+	}
+
+	protected void refreshAfterFrontalDelete(Selection deletedItem) {
+		textSelection.refreshAfterFrontalDelete(deletedItem);
+	}
+
+	protected void refreshAfterFrontalInsert(Selection insertedItem) {
+		textSelection.refreshAfterFrontalInsert(insertedItem);
+	}
+	
+	private void insertOdfElement(OdfElement odfElement, int fromIndex, Node pNode) {
+		if (fromIndex < 0) {
+			fromIndex = 0;
+		}
+		if (fromIndex == 0 && mIsInserted) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if (fromIndex <= 0 && mIsInserted) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+				if ((fromIndex != 0) && (nodeLength < fromIndex)) {
+					fromIndex -= nodeLength;
+				} else {
+					// insert result after node, and insert an new text node
+					// after the result node
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					// insert the text span in appropriate position
+					node.setNodeValue(buffer.toString());
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					Node newNode = node.cloneNode(true);
+					newNode.setNodeValue(value.substring(fromIndex, value.length()));
+					if (nextNode != null) {
+						parNode.insertBefore(odfElement, nextNode);
+						parNode.insertBefore(newNode, nextNode);
+					} else {
+						parNode.appendChild(odfElement);
+						parNode.appendChild(newNode);
+					}
+					mIsInserted = true;
+					return;
+				}
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+					fromIndex -= nodeLength;
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+					fromIndex--;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+					fromIndex--;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+					insertOdfElement(odfElement, fromIndex, node);
+					fromIndex -= nodeLength;
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/InvalidNavigationException.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/InvalidNavigationException.java
new file mode 100644
index 0000000..026cd71
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/InvalidNavigationException.java
@@ -0,0 +1,40 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+/**
+ * Thrown to indicate that the navigation operation can not be processed on
+ * selections
+ */
+public class InvalidNavigationException extends Exception {
+
+	private static final long serialVersionUID = 704778271501721996L;
+
+	/**
+	 * Constructs a <code>InvalidNavigateOperation</code> with the specified
+	 * detail message.
+	 * 
+	 * @param msg
+	 *            the detail message.
+	 */
+	public InvalidNavigationException(String msg) {
+		super(msg);
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/Navigation.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/Navigation.java
new file mode 100644
index 0000000..e9a77fb
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/Navigation.java
@@ -0,0 +1,135 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.w3c.dom.Node;
+
+/**
+ * <code>Navigation</code> is used to navigate the document and find the matched
+ * element by user defined conditions.
+ */
+public abstract class Navigation {
+	
+	/**
+	 * Return true if document still has more matched {@link Selection
+	 * Selection} when traversing the document(in other words return true if
+	 * getNextMatchElement() would return an element instance rather than return
+	 * null)
+	 * 
+	 * @return true if document still has more matched Selection, and vice versa
+	 */
+	public abstract boolean hasNext();
+
+	// public abstract void gotoPrevious();
+	
+	/**
+	 * Get next {@link Selection Selection} result.
+	 * 
+	 * @return the next <code>Selection</code> result
+	 */
+	public abstract Selection nextSelection();
+	
+	/**
+	 * Check if the element is a qualified one.
+	 * <p> Developers can define their own logic here to determine whether an element satisfies the requirements. 
+	 * 
+	 * @param element
+	 *            navigate this element node.
+	 * @return true if the element node match the user defined condition; false
+	 *         if not match.
+	 */
+	public abstract boolean match(Node element);
+
+	/**
+	 * Get the next matched element in the whole element tree.
+	 * 
+	 * @param startpoint
+	 *            navigate from the start point
+	 * @return the next matched element node
+	 */
+	protected Node getNextMatchElement(Node startpoint) {
+		// match the sub tree up to the root node (parent == null)
+		return getNextMatchElementInTree(startpoint, null);
+	}
+
+	/**
+	 * Get the next matched element node in a sub tree
+	 * 
+	 * @param startpoint
+	 *            navigate from the start point
+	 * @param root
+	 *            the root of the sub tree
+	 * @return the next matched element
+	 */
+	protected Node getNextMatchElementInTree(Node startpoint, Node root) {
+		Node matchedNode = null;
+		matchedNode = traverseTree(startpoint);
+		Node currentpoint = startpoint;
+		while ((matchedNode == null) && (currentpoint != root)) {
+			Node sibling = currentpoint.getNextSibling();
+			if ((sibling != null)
+					&& (sibling.getNodeType() == Node.TEXT_NODE || sibling.getNodeType() == Node.ELEMENT_NODE)
+					&& (match(sibling))) {
+				matchedNode = sibling;
+				break;
+			}
+			while ((sibling != null) && (matchedNode == null)) {
+				if ((sibling.getNodeType() == Node.TEXT_NODE || sibling.getNodeType() == Node.ELEMENT_NODE)) {
+					matchedNode = traverseTree(sibling);
+				}
+				if (matchedNode == null) {
+					sibling = sibling.getNextSibling();
+					if (sibling != null && match(sibling)) {
+						matchedNode = sibling;
+						break;
+					}
+				}
+			}
+			currentpoint = currentpoint.getParentNode();
+		}
+		return matchedNode;
+	}
+
+	private Node traverseTree(Node root) {
+		Node matchedNode = null;
+		if (root == null) {
+			return null;
+		}
+		// if (match(root)) return root;
+		Node node = root.getFirstChild();
+		while (node != null) {
+			if ((node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.ELEMENT_NODE)
+					&& (!(node instanceof OfficeAnnotationElement))) {
+				if (match(node) == true) {
+					matchedNode = node;
+					break;
+				} else {
+					matchedNode = traverseTree(node);
+					if (matchedNode != null) {
+						break;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+		return matchedNode;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/ParagraphSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/ParagraphSelection.java
new file mode 100644
index 0000000..007664f
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/ParagraphSelection.java
@@ -0,0 +1,457 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleMasterPageNameAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.common.navigation.Selection;
+import org.odftoolkit.simple.common.navigation.TextNavigation;
+import org.odftoolkit.simple.common.navigation.TextSelection;
+import org.odftoolkit.simple.style.ParagraphProperties;
+import org.odftoolkit.simple.text.Paragraph;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This is a decorator class of TextSelection, which help user replace a text content with a Paragraph.
+ * 
+ */
+public class ParagraphSelection extends Selection {
+
+	private TextSelection textSelection;
+	private Paragraph paragraphContainer;
+	private Paragraph sourceParagraph;
+	
+	/**
+	 * Replace the content with a paragraph, the paragraph can be in the same TextDocument or in a different Document.
+	 * 
+	 * @param paragraph
+	 *            the reference paragraph to replace.
+	 */
+	public Paragraph replaceWithParagraph(Paragraph paragraph) {
+		this.sourceParagraph=paragraph;
+		if (search instanceof TextNavigation) {
+			TextNavigation textSearch = (TextNavigation) search;
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+			boolean continued = false;
+			if (textSearch != null
+					&& textSearch.getReplacedItem() != null
+					&& textSearch.getReplacedItem().getElement() == this.textSelection
+							.getElement()) {
+				continued = true;
+			} else {
+				textSearch.setHandlePageBreak(false);
+			}
+			prepareParagraphContainer(leftLength, index, continued);
+			Selection.SelectionManager.unregisterItem(this.textSelection);
+			if (textSearch != null) {
+				textSearch.setReplacedItem(this.textSelection);
+				OdfElement containerElement = paragraphContainer
+						.getOdfElement();
+				String content = TextExtractor.getText(containerElement);
+				TextSelection selected = TextSelection.newTextSelection(
+						textSearch, this.textSelection.getText(),
+						containerElement, content.length() - 1);
+				textSearch.setSelectedItem(selected);
+			}
+		}
+		return paragraphContainer;
+	}
+
+	/**
+	 * Construct a ParagraphSelection with TextSelection. Then user can replace text
+	 * content with paragraph.
+	 * 
+	 * @param selection
+	 *            the TextSelection to be decorated.
+	 */
+	public ParagraphSelection(TextSelection selection) {
+		textSelection = selection;
+		search = textSelection.getTextNavigation();
+		paragraphContainer = null;
+	}
+
+	/**
+	 * Delete the selection from the document the other matched selection in the
+	 * same container element will be updated automatically because the start
+	 * index of the following selections will be changed when the previous
+	 * selection has been deleted.
+	 * 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		textSelection.cut();
+	}
+
+	/**
+	 * Paste this selection just after a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtEndOf(positionItem);
+	}
+	private void delete(int fromIndex, int leftLength, Node pNode) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromIndex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						delete(fromIndex, leftLength, node);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/**
+	 * Paste this selection just before a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtFrontOf(positionItem);
+	}
+
+	protected void refresh(int offset) {
+		textSelection.refresh(offset);
+	}
+
+	protected void refreshAfterFrontalDelete(Selection deletedItem) {
+		textSelection.refreshAfterFrontalDelete(deletedItem);
+	}
+
+	protected void refreshAfterFrontalInsert(Selection insertedItem) {
+		textSelection.refreshAfterFrontalInsert(insertedItem);
+	}
+
+	private ParagraphProperties getParagraphPropertiesForWrite() {
+		OdfStyleBase style = paragraphContainer.getStyleHandler()
+				.getStyleElementForRead();
+		if (style == null || style.getLocalName().equals("default-style")) {
+			OdfStyle element = paragraphContainer.getStyleHandler()
+					.getStyleElementForWrite();
+			NodeList nodes = element.getChildNodes();
+			int size = nodes.getLength();
+			for (int i = 0; i < size; i++) {
+				element.removeChild(nodes.item(0));
+			}
+		}
+		ParagraphProperties properties = paragraphContainer.getStyleHandler()
+				.getParagraphPropertiesForWrite();
+		return properties;
+	}
+	private OdfStyleBase getParagraphStyleElementForWrite() {
+		OdfStyleBase style = paragraphContainer.getStyleHandler()
+				.getStyleElementForRead();
+		OdfStyle element = paragraphContainer.getStyleHandler()
+				.getStyleElementForWrite();
+		if (style == null || style.getLocalName().equals("default-style")) {
+			NodeList nodes = element.getChildNodes();
+			int size = nodes.getLength();
+			for (int i = 0; i < size; i++) {
+				element.removeChild(nodes.item(0));
+			}
+		}
+		return element;
+	}
+	private void handlePageBreak(Paragraph origParagraph, String pos,
+			boolean continued) {
+		if (continued
+				&& this.textSelection.getTextNavigation().isHandlePageBreak())
+			return;
+		ParagraphProperties orgParaPty = origParagraph.getStyleHandler()
+				.getParagraphPropertiesForRead();
+		boolean handleBreak = false;
+		String posInPara = "middle";
+		if (continued && pos.equals("whole")) {
+			posInPara = "end";
+		} else if (continued && pos.endsWith("head")) {
+			posInPara = "middle";
+		} else if (continued && pos.endsWith("end")) {
+			posInPara = "end";
+		} else if (!continued && pos.endsWith("whole")) {
+			posInPara = "whole";
+		} else if (!continued && pos.endsWith("head")) {
+			posInPara = "head";
+		} else if (!continued && pos.endsWith("end")) {
+			posInPara = "end";
+		}
+		if (orgParaPty != null) {
+			String breakAttribute = orgParaPty.getBreakBefore();
+			if (breakAttribute != null) {
+				if (posInPara.equals("head") || posInPara.equals("whole")) {
+					getParagraphPropertiesForWrite().setBreak("before",
+							breakAttribute);
+					handleBreak = true;
+				}
+			}
+			breakAttribute = orgParaPty.getBreakAfter();
+			if (breakAttribute != null) {
+				if (posInPara.equals("end") || posInPara.equals("whole")) {
+					getParagraphPropertiesForWrite().setBreak("after",
+							breakAttribute);
+					handleBreak = true;
+				}
+			}
+		}
+		String masterStyle = origParagraph
+				.getStyleHandler()
+				.getStyleElementForRead()
+				.getOdfAttributeValue(
+						OdfName.newName(OdfDocumentNamespace.STYLE,
+								"master-page-name"));
+		if (masterStyle != null && !masterStyle.isEmpty()) {
+			if (posInPara.equals("head") || posInPara.equals("whole")) {
+				getParagraphStyleElementForWrite().setOdfAttributeValue(
+						OdfName.newName(OdfDocumentNamespace.STYLE,
+								"master-page-name"), masterStyle);
+				handleBreak = true;
+				try {
+					int pageNumber = orgParaPty.getPageNumber();
+					if (pos.equals("head")) {
+						paragraphContainer.getStyleHandler()
+								.getParagraphPropertiesForWrite()
+								.setPageNumber(pageNumber);
+					}
+				} catch (NumberFormatException e) {
+					Logger.getLogger(ParagraphSelection.class.getName()).log(
+							Level.SEVERE, e.getMessage(), "NumberFormatException");
+				}
+			}
+		}
+		if (handleBreak && !posInPara.equals("whole"))
+			cleanBreakProperty(origParagraph);
+	}
+	private void cleanBreakProperty(Paragraph paragraph) {
+		TextNavigation search = this.textSelection.getTextNavigation();
+		if (search == null)
+			throw new IllegalStateException("Navigation is null");
+		OdfStyleBase styleElement = paragraph.getStyleHandler()
+				.getStyleElementForRead();
+		String name = styleElement.getAttribute("style:name");
+		String newName = null;
+		OdfElement modifiedStyleElement = search
+				.getModifiedStyleElement(styleElement);
+		if (modifiedStyleElement == null) {
+			modifiedStyleElement = (OdfElement) styleElement.cloneNode(true);
+			search.addModifiedStyleElement(styleElement, modifiedStyleElement);
+			NodeList paragraphProperties = modifiedStyleElement
+					.getElementsByTagName("style:paragraph-properties");
+			if (paragraphProperties != null
+					&& paragraphProperties.getLength() > 0) {
+				StyleParagraphPropertiesElement property = (StyleParagraphPropertiesElement) paragraphProperties
+						.item(0);
+				property.removeAttribute("fo:break-before");
+				property.removeAttribute("fo:break-after");
+				property.removeAttribute("style:page-number");
+			}
+			modifiedStyleElement.removeAttribute("style:master-page-name");
+			newName = name + "-" + makeUniqueName();
+			NamedNodeMap attributes = modifiedStyleElement.getAttributes();
+			if (attributes != null) {
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node item = attributes.item(i);
+					String value = item.getNodeValue();
+					if (name.equals(value)) {
+						item.setNodeValue(newName);
+						break;
+					}
+				}
+			}
+			styleElement.getParentNode().appendChild(modifiedStyleElement);
+		} else {
+			newName = modifiedStyleElement.getAttribute("style:name");
+		}
+		NamedNodeMap attributes = paragraph.getOdfElement().getAttributes();
+		if (attributes != null) {
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node item = attributes.item(i);
+				String value = item.getNodeValue();
+				if (name.equals(value)) {
+					item.setNodeValue(newName);
+					break;
+				}
+			}
+		}
+		this.textSelection.getTextNavigation().setHandlePageBreak(true);
+	}
+	String makeUniqueName() {
+		return String.format("p%06x", (int) (Math.random() * 0xffffff));
+	}
+	private void prepareParagraphContainer(int leftLength, int index,
+			boolean continued) {
+		if (paragraphContainer == null) {
+			String pos = "middle";
+			OdfElement rightparentElement = textSelection.getContainerElement();
+			int nodeLength = TextExtractor.getText(rightparentElement).length();
+			if(index==0){
+				if(leftLength==nodeLength){
+					//Replace whole Paragraph
+					Paragraph orgparagraph = Paragraph
+							.getInstanceof((TextParagraphElementBase) rightparentElement);
+					TextDocument document = (TextDocument) orgparagraph
+							.getOwnerDocument();
+					paragraphContainer = document.insertParagraph(orgparagraph,
+							sourceParagraph, false);
+					NodeList cnl = rightparentElement.getChildNodes();
+					pos = "whole";
+					handlePageBreak(orgparagraph, pos, continued);
+
+					rightparentElement.getParentNode().removeChild(
+							rightparentElement);
+				}else{
+					//at the start of original Paragraph, insert before original Paragraph
+					delete(index, leftLength, rightparentElement);
+					Paragraph orgparagraph = Paragraph
+							.getInstanceof((TextParagraphElementBase) rightparentElement);
+					TextDocument document = (TextDocument) orgparagraph
+							.getOwnerDocument();
+					paragraphContainer = document.insertParagraph(orgparagraph,
+							sourceParagraph, true);
+					pos = "head";
+					handlePageBreak(orgparagraph, pos, continued);
+			}
+			} else if (nodeLength == (index + leftLength)) {
+				//at the end of original Paragraph, insert after original Paragraph
+				delete(index, leftLength, rightparentElement);
+				Paragraph orgparagraph = Paragraph
+						.getInstanceof((TextParagraphElementBase) rightparentElement);
+				TextDocument document = (TextDocument) orgparagraph
+						.getOwnerDocument();
+				paragraphContainer = document.insertParagraph(orgparagraph,
+						sourceParagraph, false);
+				handlePageBreak(orgparagraph, pos, continued);
+			}else{
+				//at the middle of original Paragraph, split original Paragraph, insert before the second Paragraph.
+				delete(index, leftLength, rightparentElement);
+				Node leftparentElement = rightparentElement.cloneNode(true);
+				rightparentElement.getParentNode().insertBefore(
+						leftparentElement, rightparentElement);
+				nodeLength = TextExtractor.getText(
+						(OdfElement) leftparentElement).length();
+				delete(index, nodeLength-index, leftparentElement);
+				delete(0, index, rightparentElement);
+				Paragraph orgparagraph = Paragraph
+						.getInstanceof((TextParagraphElementBase) rightparentElement);
+				TextDocument document = (TextDocument) orgparagraph
+						.getOwnerDocument();
+				paragraphContainer = document.insertParagraph(orgparagraph,
+						sourceParagraph, true);
+				if (!continued)
+					cleanBreakProperty(orgparagraph);
+				
+			}
+		} else{
+			TextDocument document = (TextDocument) paragraphContainer
+					.getOwnerDocument();
+			Paragraph tmp = document.insertParagraph(paragraphContainer,
+					sourceParagraph, true);
+			paragraphContainer.remove();
+			paragraphContainer=tmp;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/Selection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/Selection.java
new file mode 100644
index 0000000..0a97aa8
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/Selection.java
@@ -0,0 +1,262 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+
+/**
+ * <code>Selection</code> describes one of the matched results, which is
+ * recognized by the container element, the start index of the text content in
+ * this element and the text content.
+ */
+public abstract class Selection {
+
+	private OdfElement mElement;
+	private int mIndex;
+	protected Navigation search;
+	public Navigation getNavigation() {
+		return search;
+	}
+
+	/**
+	 * Get the container element of this <code>Selection</code>.
+	 * 
+	 * @return the container element
+	 */
+	public OdfElement getElement() {
+		return mElement;
+	}
+
+	/**
+	 * Get the start index of the text content in the container element. This is
+	 * only meaningful for {@link TextSelection TextSelection} and its sub
+	 * classes, other type of <code>Selection</code> will return 0.
+	 * 
+	 * @return the start index of the container element
+	 */
+	public int getIndex() {
+		return mIndex;
+	}
+
+	/**
+	 * Cut current <code>Selection</code>.
+	 * 
+	 * @throws InvalidNavigationException
+	 */
+	public abstract void cut() throws InvalidNavigationException;
+
+	/**
+	 * Paste current <code>Selection</code> at front of the specified position
+	 * <code>Selection</code>.
+	 * 
+	 * @param positionItem
+	 *            the position <code>Selection</code>
+	 * @throws InvalidNavigationException
+	 */
+	public abstract void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException;
+
+	/**
+	 * Paste current <code>Selection</code> at end of the specified position
+	 * <code>Selection</code>.
+	 * 
+	 * @param positionItem
+	 *            the position <code>Selection</code>
+	 * @throws InvalidNavigationException
+	 */
+	public abstract void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException;
+
+	/**
+	 * When a selected item has been deleted, the <code>Selection</code>s after
+	 * this deleted <code>Selection</code> should be refreshed, as these
+	 * <code>Selection</code>s index have been changed.
+	 * 
+	 * @param deletedItem
+	 *            the deleted <code>Selection</code>
+	 */
+	protected abstract void refreshAfterFrontalDelete(Selection deletedItem);
+
+	/**
+	 * When a selected item has been inserted, the <code>Selection</code> after
+	 * the inserted item should be refresh, as these <code>Selection</code>s
+	 * index have been changed.
+	 * 
+	 * @param insertedItem
+	 *            the inserted <code>Selection</code>
+	 */
+	protected abstract void refreshAfterFrontalInsert(Selection insertedItem);
+
+	/**
+	 * A quick method to update the index of this <code>Selection</code>.
+	 * 
+	 * @param offset
+	 *            the offset that the index should be added.
+	 */
+	protected abstract void refresh(int offset);
+
+	/**
+	 * SelectionManager can manage all the <code>Selection</code>s that are
+	 * returned to end users. This SelectionManager contains a repository of all
+	 * <code>Selection</code>s, and will refresh the status/index of
+	 * <code>Selection</code>s after certain operation.
+	 */
+	static class SelectionManager {
+
+		private static Hashtable<OdfElement, Vector<Selection>> repository = new Hashtable<OdfElement, Vector<Selection>>();
+
+		/**
+		 * Register the <code>Selection</code> item.
+		 * 
+		 * @param item
+		 *            the <code>Selection</code> item
+		 */
+		public static void registerItem(Selection item) {
+			OdfElement element = item.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				int i = 0;
+				while (i < selections.size()) {
+					if (selections.get(i).getIndex() > item.getIndex()) {
+						selections.insertElementAt(item, i);
+						break;
+					}
+					i++;
+				}
+				if (i == selections.size()) {
+					selections.add(item);
+				}
+			} else {
+				Vector<Selection> al = new Vector<Selection>();
+				al.add(item);
+				repository.put(element, al);
+			}
+		}
+
+		/**
+		 * Refresh the <code>Selection</code>s in repository after a item is
+		 * cut.
+		 * 
+		 * @param cutItem
+		 *            the cut item
+		 */
+		public synchronized static void refreshAfterCut(Selection cutItem) {
+			// travase the whole sub tree
+			OdfElement element = cutItem.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() > cutItem.getIndex()) {
+						selections.get(i).refreshAfterFrontalDelete(cutItem);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Refresh the selections in repository after pastedAtFrontOf operation
+		 * is called.
+		 * 
+		 * @param item
+		 *            the pasted item
+		 * @param positionItem
+		 *            the position item
+		 */
+		public synchronized static void refreshAfterPasteAtFrontOf(Selection item, Selection positionItem) {
+			// travase the whole sub tree
+			OdfElement element = positionItem.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() >= positionItem.getIndex()) {
+						selections.get(i).refreshAfterFrontalInsert(item);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Refresh the <code>Selection</code>s in repository after pastedAtEndOf
+		 * operation is called.
+		 * 
+		 * @param item
+		 *            the pasted item
+		 * @param positionItem
+		 *            the position item
+		 */
+		public synchronized static void refreshAfterPasteAtEndOf(Selection item, Selection positionItem) {
+			OdfElement element = positionItem.getElement();
+			int positionIndex;
+			if (positionItem instanceof TextSelection) {
+				positionIndex = positionItem.getIndex() + ((TextSelection) positionItem).getText().length();
+			} else {
+				positionIndex = positionItem.getIndex();
+			}
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() >= positionIndex) {
+						selections.get(i).refreshAfterFrontalInsert(item);
+					}
+				}
+			}
+		}
+
+		/**
+		 * Remove the <code>Selection</code> from repository.
+		 * 
+		 * @param item
+		 *            <code>Selection</code> item
+		 */
+		public static void unregisterItem(Selection item) {
+			OdfElement element = item.getElement();
+			if (repository.containsKey(element)) {
+				Vector<Selection> selections = repository.get(element);
+				selections.remove(item);
+			}
+		}
+
+		/**
+		 * A direct method to update all the <code>Selection</code>s contained
+		 * in a element after a certain position.
+		 * 
+		 * @param containerElement
+		 *            the container element
+		 * @param offset
+		 *            the offset
+		 * @param positionIndex
+		 *            the index of a certain position
+		 */
+		public synchronized static void refresh(OdfElement containerElement, int offset, int positionIndex) {
+			if (repository.containsKey(containerElement)) {
+				Vector<Selection> selections = repository.get(containerElement);
+				for (int i = 0; i < selections.size(); i++) {
+					if (selections.get(i).getIndex() >= positionIndex) {
+						selections.get(i).refresh(offset);
+					}
+				}
+			}
+		}
+
+		private SelectionManager() {
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TableSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TableSelection.java
new file mode 100644
index 0000000..d552139
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TableSelection.java
@@ -0,0 +1,450 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.common.navigation.Navigation;
+import org.odftoolkit.simple.common.navigation.Selection;
+import org.odftoolkit.simple.common.navigation.TextNavigation;
+import org.odftoolkit.simple.common.navigation.TextSelection;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.odftoolkit.simple.style.ParagraphProperties;
+import org.odftoolkit.simple.style.TableProperties;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Row;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.Paragraph;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This is a decorator class of TextSelection, which help user replace a text content with a Table.
+ * 
+ */
+public class TableSelection extends Selection {
+
+	private TextSelection textSelection;
+	private Table tableContainer;
+	private Table sourceTable;
+	
+	/**
+	 * Replace the content with a Table , the table can be in the same TextDocument or in a different Document.
+	 * 
+	 * @param paragraph the reference table to replace.
+	 * 
+	 * @return the new Table in the TextDocument
+	 */
+	public Table replaceWithTable(Table table) {
+		this.sourceTable=table;
+		if (search instanceof TextNavigation) {
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+			boolean continued = false;
+			TextNavigation textSearch = (TextNavigation) search;
+			if (textSearch != null
+					&& textSearch.getReplacedItem() != null
+					&& textSearch.getReplacedItem().getElement() == this.textSelection
+							.getElement()) {
+				continued = true;
+			} else {
+				textSearch.setHandlePageBreak(false);
+			}
+			preparetableContainer(leftLength, index, continued);
+			Selection.SelectionManager.unregisterItem(this.textSelection);
+			if (textSearch != null) {
+				textSearch.setReplacedItem(this.textSelection);
+				Paragraph lastParagraph = getLastParagraphInTable(tableContainer);
+				OdfElement newStartPoint;
+				if (lastParagraph != null) {
+					newStartPoint = lastParagraph.getOdfElement();
+				} else {
+					newStartPoint = tableContainer.getOdfElement();
+				}
+				String content = TextExtractor.getText(newStartPoint);
+				TextSelection selected = newTextSelection(textSearch,
+						this.textSelection.getText(), newStartPoint,
+						content.length() - 1);
+				textSearch.setSelectedItem(selected);
+			}
+		}
+		return tableContainer;
+	}
+
+	/**
+	 * Construct a TableSelection with TextSelection. Then user can replace text
+	 * content with {@link org.odftoolkit.simple.table.Table table}.
+	 * 
+	 * @param selection
+	 *            the TextSelection to be decorated.
+	 */
+	public TableSelection(TextSelection selection) {
+		textSelection = selection;
+		search = textSelection.getTextNavigation();
+		tableContainer = null;
+	}
+
+	/**
+	 * Delete the selection from the document the other matched selection in the
+	 * same container element will be updated automatically because the start
+	 * index of the following selections will be changed when the previous
+	 * selection has been deleted.
+	 * 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		textSelection.cut();
+	}
+
+	/**
+	 * Paste this selection just after a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtEndOf(positionItem);
+	}
+	private void delete(int fromIndex, int leftLength, Node pNode) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromIndex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						delete(fromIndex, leftLength, node);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/**
+	 * Paste this selection just before a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtFrontOf(positionItem);
+	}
+
+	protected void refresh(int offset) {
+		textSelection.refresh(offset);
+	}
+
+	protected void refreshAfterFrontalDelete(Selection deletedItem) {
+		textSelection.refreshAfterFrontalDelete(deletedItem);
+	}
+
+	protected void refreshAfterFrontalInsert(Selection insertedItem) {
+		textSelection.refreshAfterFrontalInsert(insertedItem);
+	}
+
+	private void preparetableContainer(int leftLength, int index,
+			boolean continued) {
+		if (tableContainer == null) {
+			String pos = "middle";
+			OdfElement rightparentElement = textSelection.getContainerElement();
+			int nodeLength = TextExtractor.getText(rightparentElement).length();
+			if(index==0){
+				
+				if(leftLength==nodeLength){
+					//Replace whole Paragraph
+					Paragraph orgparagraph = Paragraph
+							.getInstanceof((TextParagraphElementBase) rightparentElement);
+					TextDocument document = (TextDocument) orgparagraph
+							.getOwnerDocument();
+					tableContainer = document.insertTable(orgparagraph,
+							sourceTable, false);
+					pos = "whole";
+					handlePageBreak(orgparagraph, pos, continued);
+
+					rightparentElement.getParentNode().removeChild(
+							rightparentElement);
+				}else{
+					//at the start of original Paragraph, insert before original Paragraph
+					delete(index, leftLength, rightparentElement);
+					Paragraph orgparagraph = Paragraph
+							.getInstanceof((TextParagraphElementBase) rightparentElement);
+					TextDocument document = (TextDocument) orgparagraph
+							.getOwnerDocument();
+					tableContainer = document.insertTable(orgparagraph,
+							sourceTable, true);
+					pos = "head";
+					handlePageBreak(orgparagraph, pos, continued);
+			}
+			} else if (nodeLength == (index + leftLength)) {
+				//at the end of original Paragraph, insert after original Paragraph
+				delete(index, leftLength, rightparentElement);
+				Paragraph orgparagraph = Paragraph
+						.getInstanceof((TextParagraphElementBase) rightparentElement);
+				TextDocument document = (TextDocument) orgparagraph
+						.getOwnerDocument();
+				tableContainer = document.insertTable(orgparagraph,
+						sourceTable, false);
+				handlePageBreak(orgparagraph, pos, continued);
+			}else{
+				//at the middle of original Paragraph, split original Paragraph, insert before the second Paragraph.
+				delete(index, leftLength, rightparentElement);
+				Node leftparentElement = rightparentElement.cloneNode(true);
+				rightparentElement.getParentNode().insertBefore(
+						leftparentElement, rightparentElement);
+				nodeLength = TextExtractor.getText(
+						(OdfElement) leftparentElement).length();
+				delete(index, nodeLength-index, leftparentElement);
+				delete(0, index, rightparentElement);
+				Paragraph orgparagraph = Paragraph
+						.getInstanceof((TextParagraphElementBase) rightparentElement);
+				TextDocument document = (TextDocument) orgparagraph
+						.getOwnerDocument();
+				tableContainer = document.insertTable(orgparagraph,
+						sourceTable, true);
+				if (!continued)
+					textSelection.cleanBreakProperty(orgparagraph);
+			}
+		} else{
+			TextDocument document = (TextDocument) tableContainer
+					.getOwnerDocument();
+			TableTableElement newTEle = (TableTableElement) document
+					.insertOdfElement(tableContainer.getOdfElement(),
+							tableContainer.getOwnerDocument(),
+							sourceTable.getOdfElement(), true);
+			tableContainer.getOdfElement().getParentNode()
+					.removeChild(tableContainer.getOdfElement());
+			Table table = Table.getInstance(newTEle);
+			tableContainer=table;
+		}
+	}
+	private Paragraph getLastParagraphInTable(Table table) {
+		Paragraph paragraph = null;
+		int rowCount = table.getRowCount();
+		for (int i = rowCount - 1; i >= 0; i--) {
+			Row row = table.getRowByIndex(i);
+			int cellCount = row.getCellCount();
+			for (int j = cellCount - 1; j >= 0; j--) {
+				Cell cell = row.getCellByIndex(j);
+				paragraph = cell.getParagraphByReverseIndex(0, false);
+				if (paragraph != null)
+					return paragraph;
+			}
+		}
+		return paragraph;
+	}
+	private TableProperties getTablePropertiesForWrite() {
+		OdfStyleBase style = tableContainer.getStyleHandler()
+				.getStyleElementForRead();
+		if (style == null || style.getLocalName().equals("default-style")) {
+			OdfStyle element = tableContainer.getStyleHandler()
+					.getStyleElementForWrite();
+			NodeList nodes = element.getChildNodes();
+			int size = nodes.getLength();
+			for (int i = 0; i < size; i++) {
+				element.removeChild(nodes.item(0));
+			}
+		}
+		TableProperties properties = tableContainer.getStyleHandler()
+				.getTablePropertiesForWrite();
+		return properties;
+	}
+	private OdfStyleBase getParagraphStyleElementForWrite() {
+		OdfStyleBase style = tableContainer.getStyleHandler()
+				.getStyleElementForRead();
+		OdfStyle element = tableContainer.getStyleHandler()
+				.getStyleElementForWrite();
+		if (style == null || style.getLocalName().equals("default-style")) {
+			NodeList nodes = element.getChildNodes();
+			int size = nodes.getLength();
+			for (int i = 0; i < size; i++) {
+				element.removeChild(nodes.item(0));
+			}
+		}
+		return element;
+	}
+	private void handlePageBreak(Paragraph origParagraph, String pos,
+			boolean continued) {
+		if (continued
+				&& this.textSelection.getTextNavigation().isHandlePageBreak())
+			return;
+		ParagraphProperties orgParaPty = origParagraph.getStyleHandler()
+				.getParagraphPropertiesForRead();
+		boolean handleBreak = false;
+		String posInPara = "middle";
+		if (continued && pos.equals("whole")) {
+			posInPara = "end";
+		} else if (continued && pos.endsWith("head")) {
+			posInPara = "middle";
+		} else if (continued && pos.endsWith("end")) {
+			posInPara = "end";
+		} else if (!continued && pos.endsWith("whole")) {
+			posInPara = "whole";
+		} else if (!continued && pos.endsWith("head")) {
+			posInPara = "head";
+		} else if (!continued && pos.endsWith("end")) {
+			posInPara = "end";
+		}
+		if (orgParaPty != null) {
+			String breakAttribute = orgParaPty.getBreakBefore();
+			if (breakAttribute != null) {
+				if (posInPara.equals("head") || posInPara.equals("whole")) {
+					getTablePropertiesForWrite().setBreak("before",
+							breakAttribute);
+					handleBreak = true;
+				}
+			}
+			breakAttribute = orgParaPty.getBreakAfter();
+			if (breakAttribute != null) {
+				if (posInPara.equals("end") || posInPara.equals("whole")) {
+					getTablePropertiesForWrite().setBreak("after",
+							breakAttribute);
+					handleBreak = true;
+				}
+			}
+		}
+		String masterStyle = origParagraph
+				.getStyleHandler()
+				.getStyleElementForRead()
+				.getOdfAttributeValue(
+						OdfName.newName(OdfDocumentNamespace.STYLE,
+								"master-page-name"));
+		if (masterStyle != null && !masterStyle.isEmpty()) {
+			if (posInPara.equals("head") || posInPara.equals("whole")) {
+				getParagraphStyleElementForWrite().setOdfAttributeValue(
+						OdfName.newName(OdfDocumentNamespace.STYLE,
+								"master-page-name"), masterStyle);
+				handleBreak = true;
+				try {
+					int pageNumber = orgParaPty.getPageNumber();
+					if (pos.equals("head")) {
+						tableContainer.getStyleHandler()
+								.getParagraphPropertiesForWrite()
+								.setPageNumber(pageNumber);
+					}
+				} catch (NumberFormatException e) {
+					Logger.getLogger(ParagraphSelection.class.getName()).log(
+							Level.SEVERE, e.getMessage(), "NumberFormatException");
+				}
+			}
+		}
+		if (handleBreak && !posInPara.equals("whole"))
+			textSelection.cleanBreakProperty(origParagraph);
+	}
+	private class TextSelectionForTableReplacement extends TextSelection {
+		private OdfElement mContainer;
+		TextSelectionForTableReplacement(Navigation search, String text,
+				OdfElement containerElement, int index) {
+			super(search, text, containerElement, index);
+			if (containerElement instanceof TableTableElement)
+				mContainer = containerElement;
+		}
+		@Override
+		public OdfElement getContainerElement() {
+			OdfElement element = super.getContainerElement();
+			if (element == null) {
+				element = mContainer;
+			}
+			return element;
+		}
+	}
+	TextSelection newTextSelection(Navigation search, String text,
+			OdfElement containerElement, int index) {
+		TextSelection selection = new TextSelectionForTableReplacement(search,
+				text, containerElement, index);
+		Selection.SelectionManager.registerItem(selection);
+		return selection;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextDocumentSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextDocumentSelection.java
new file mode 100644
index 0000000..702ad72
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextDocumentSelection.java
@@ -0,0 +1,294 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+ */
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.office.OfficeTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.text.Paragraph;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This is a decorator class of TextSelection, which help user replace a text
+ * content with a TextDocument, all Styles be included.
+ */
+public class TextDocumentSelection extends Selection {
+	
+	private TextSelection textSelection;
+	private TextDocument sourceDocument;
+	
+	/**
+	 * Replace the Searched Content with a TextDocument with Styles.
+	 * <p>
+	 * Note: You need cache the TextNavigation.nextSelection item because after
+	 * you replace currtenTextSelection with TextDocument,
+	 * TextNavigation.nextSelection will search from the inserted Content, it
+	 * will make you into a loop if the Search keyword also can be found in the
+	 * new inserted Content.
+	 * </p>
+	 * The right way to use this replaceWithTextDocument(TextDocument
+	 * textDocument) method should like this: <Code>
+	 * <p>	search = new TextNavigation("SIMPLE", doc);    </p>
+	 * <p>	TextSelection currtenTextSelection,nextTextSelection=null;</p>
+	 * <p>		while (search.hasNext()) {</p>
+	 * <p>			if(nextTextSelection!=null){</p>
+	 * <p>				currtenTextSelection=nextTextSelection;</p>
+	 * <p>			}else {</p>
+	 * <p>			 	currtenTextSelection = (TextSelection) search.nextSelection();</p>
+	 * <p>			}</p>
+	 * <p>			nextTextSelection = (TextSelection) search.nextSelection();</p>
+	 * <p>			if(currtenTextSelection!=null){</p>
+	 * <p>				TextDocumentSelection nextParagraphSelection = new TextDocumentSelection(currtenTextSelection);</p>
+	 * <p>				try {</p>
+	 * <p>					nextParagraphSelection.replaceWithTextDocument(sourcedoc);</p>
+	 * <p>				} catch (Exception e) {</p>
+	 * <p>					e.printStackTrace();</p>
+	 * <p>				}</p>
+	 * <p>			}</p>
+	 * <p>		}</p>
+	 * <p>		if(nextTextSelection!=null){</p>
+	 * <p>			TextDocumentSelection nextParagraphSelection = new TextDocumentSelection(nextTextSelection);</p>
+	 * <p>			try {</p>
+	 * <p>				nextParagraphSelection.replaceWithTextDocument(sourcedoc);</p>
+	 * <p>			} catch (Exception e) {</p>
+	 * <p>				e.printStackTrace();</p>
+	 * <p>			}</p>
+	 * <p>		}</p>
+	 * </Code>
+	 * 
+	 * @param textDocument
+	 *            the reference TextDocument to replace.
+	 * @throws Exception
+	 */
+	public void replaceWithTextDocument(TextDocument textDocument) throws Exception {
+		this.sourceDocument = textDocument;
+		int leftLength = textSelection.getText().length();
+		int index = textSelection.getIndex();
+		prepareParagraphContainer(leftLength, index);
+	}
+	
+	/**
+	 * Construct a TextDocumentSelection with TextSelection. Then user can
+	 * replace text content with a TextDocument.
+	 * 
+	 * @param selection
+	 *            the TextSelection to be decorated.
+	 */
+	public TextDocumentSelection(TextSelection selection) {
+		textSelection = selection;
+	}
+	
+	/**
+	 * Delete the selection from the document the other matched selection in the
+	 * same container element will be updated automatically because the start
+	 * index of the following selections will be changed when the previous
+	 * selection has been deleted.
+	 * 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		textSelection.cut();
+	}
+	
+	/**
+	 * Paste this selection just after a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtEndOf(positionItem);
+	}
+	
+	private void delete(int fromIndex, int leftLength, Node pNode) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromIndex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+					
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						delete(fromIndex, leftLength, node);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+	
+	/**
+	 * Paste this selection just before a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		textSelection.pasteAtFrontOf(positionItem);
+	}
+	
+	protected void refresh(int offset) {
+		textSelection.refresh(offset);
+	}
+	
+	protected void refreshAfterFrontalDelete(Selection deletedItem) {
+		textSelection.refreshAfterFrontalDelete(deletedItem);
+	}
+	
+	protected void refreshAfterFrontalInsert(Selection insertedItem) {
+		textSelection.refreshAfterFrontalInsert(insertedItem);
+	}
+	
+	private void prepareParagraphContainer(int leftLength, int index) throws Exception {
+		OdfElement rightparentElement = textSelection.getContainerElement();
+		int nodeLength = TextExtractor.getText(rightparentElement).length();
+		Paragraph orgparagraph = Paragraph.getInstanceof((TextParagraphElementBase) rightparentElement);
+		
+		TextDocument document = (TextDocument) orgparagraph.getOwnerDocument();
+		OfficeTextElement sroot = sourceDocument.getContentRoot();
+		NodeList clist = sroot.getChildNodes();
+		
+		try {
+			OfficeTextElement documentRoot = document.getContentRoot();
+			Node rootNode = rightparentElement.getParentNode();
+			if (!rootNode.equals(documentRoot)) {
+				throw new RuntimeException(
+						"The ParentNode of text content's ContainerElement which will be replaced is not Document ContentRoot, TextDocument only can be insert to the Docuemnt ContentRoot");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TextDocumentSelection.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		
+		if (index == 0) {
+			if (leftLength == nodeLength) {
+				// Replace whole Paragraph
+				OdfElement refElement = orgparagraph.getOdfElement();
+				for (int i = 0; i < clist.getLength(); i++) {
+					OdfElement node = (OdfElement) clist.item(i);
+					refElement = document.insertOdfElement(refElement,
+							sourceDocument, node, false);
+				}
+				rightparentElement.getParentNode().removeChild(
+						rightparentElement);
+			} else {
+				// at the start of original Paragraph, insert before original
+				// Paragraph
+				delete(index, leftLength, rightparentElement);
+				for (int i = 0; i < clist.getLength(); i++) {
+					OdfElement node = (OdfElement) clist.item(i);
+					document.insertOdfElement(orgparagraph.getOdfElement(), sourceDocument, node, true);
+				}
+			}
+		} else if (nodeLength == (index + leftLength)) {
+			// at the end of original Paragraph, insert after original Paragraph
+			delete(index, leftLength, rightparentElement);
+			for (int i = 0; i < clist.getLength(); i++) {
+				OdfElement node = (OdfElement) clist.item(i);
+				document.insertOdfElement(orgparagraph.getOdfElement(), sourceDocument, node, false);
+			}
+		} else {
+			// at the middle of original Paragraph, split original Paragraph,
+			// insert before the second Paragraph.
+			delete(index, leftLength, rightparentElement);
+			Node leftparentElement = rightparentElement.cloneNode(true);
+			rightparentElement.getParentNode().insertBefore(leftparentElement, rightparentElement);
+			nodeLength = TextExtractor.getText((OdfElement) leftparentElement).length();
+			delete(index, nodeLength - index, leftparentElement);
+			delete(0, index, rightparentElement);
+			for (int i = 0; i < clist.getLength(); i++) {
+				OdfElement node = (OdfElement) clist.item(i);
+				document.insertOdfElement(orgparagraph.getOdfElement(), sourceDocument, node, true);
+			}
+			int offset = 0 - leftLength - index;
+			SelectionManager.refresh(rightparentElement, offset, offset);
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextNavigation.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextNavigation.java
new file mode 100644
index 0000000..5cb3b42
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextNavigation.java
@@ -0,0 +1,368 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.IdentityHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.table.Cell;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * A derived <code>Navigation</code> class used to navigate the text content,
+ * which can search the document and find the matched text and return
+ * <code>TextSelection</code> instance.
+ */
+public class TextNavigation extends Navigation {
+
+	private String mMatchedElementName = "text:p,text:h";
+	private Pattern mPattern;
+	private Document mDocument;
+	private OdfElement mElement;
+	private TextSelection mNextSelectedItem;
+	private TextSelection mTempSelectedItem;
+	private TextSelection mReplacedItem;
+	private boolean handlePageBreak;
+	private String mNextText;
+	private int mNextIndex;
+	private boolean mbFinishFindInHeaderFooter;
+	private IdentityHashMap<OdfElement, OdfElement> modifiedStyleList;
+
+	/**
+	 * Construct <code>TextNavigation</code> with matched condition and
+	 * navigation scope.
+	 * 
+	 * @param pattern
+	 *            the matched pattern String
+	 * @param doc
+	 *            the navigation scope
+	 */
+	public TextNavigation(String pattern, Document doc) {
+		mPattern = Pattern.compile(pattern);
+		mDocument = doc;
+		mElement = null;
+		mNextSelectedItem = null;
+		mTempSelectedItem = null;
+		mbFinishFindInHeaderFooter = false;
+		setHandlePageBreak(false);
+	}
+
+	/**
+	 * Construct <code>TextNavigation</code> with matched condition and
+	 * navigation scope.
+	 * 
+	 * @param pattern
+	 *            the matched pattern String
+	 * @param element
+	 *            the ODF element whose content will be navigated.
+	 * @since 0.5
+	 */
+	public TextNavigation(String pattern, OdfElement element) {
+		mPattern = Pattern.compile(pattern);
+		mDocument = null;
+		mElement = element;
+		mNextSelectedItem = null;
+		mTempSelectedItem = null;
+		mbFinishFindInHeaderFooter = false;
+	}
+
+	/**
+	 * Check if has next <code>TextSelection</code> with satisfied content
+	 * pattern.
+	 * 
+	 * @see org.odftoolkit.simple.common.navigation.Navigation#hasNext()
+	 */
+	@Override
+	public boolean hasNext() {
+		mTempSelectedItem = findNext(mNextSelectedItem);
+		return (mTempSelectedItem != null);
+	}
+	void setSelectedItem(TextSelection nextSelectedItem) {
+		this.mNextSelectedItem = nextSelectedItem;
+	}
+	TextSelection getSelectedItem() {
+		return this.mNextSelectedItem;
+	}
+
+	/**
+	 * Get next <code>TextSelection</code>.
+	 * 
+	 * @see org.odftoolkit.simple.common.navigation.Navigation#nextSelection()
+	 */
+	@Override
+	public Selection nextSelection() {
+		if (mTempSelectedItem != null) {
+			mNextSelectedItem = mTempSelectedItem;
+			mTempSelectedItem = null;
+		} else {
+			mNextSelectedItem = findNext(mNextSelectedItem);
+		}
+		if (mNextSelectedItem == null) {
+			return null;
+		} else {
+			Selection.SelectionManager.registerItem(mNextSelectedItem);
+			return mNextSelectedItem;
+		}
+	}
+
+	/**
+	 * Check if the text content of element match the specified matched
+	 * condition, which is stated when the <code>TextNavigation</code> created.
+	 * 
+	 * @param element
+	 *            navigate this element
+	 * @return true if the text content of this element match this pattern;
+	 *         false if not match
+	 */
+	@Override
+	public boolean match(Node element) {
+		if (element instanceof OdfElement) {
+			String content = TextExtractor.getText((OdfElement) element);
+			Matcher matcher = mPattern.matcher(content);
+			if (matcher.find()) {
+				// check whether this container is minimum
+				Node childNode = element.getFirstChild();
+				while (childNode != null) {
+					String childContent = getText(childNode);
+					Matcher childMatcher = mPattern.matcher(childContent);
+					if (childMatcher.find()) {
+						if (childNode.getNodeType() == Node.TEXT_NODE
+								|| "text:span".equalsIgnoreCase(childNode.getNodeName())
+								|| "text:a".equalsIgnoreCase(childNode.getNodeName())) {
+							break;
+						} else {
+							return false;
+						}
+					} else {
+						childNode = childNode.getNextSibling();
+					}
+				}
+				if (mMatchedElementName.indexOf(element.getNodeName()) != -1) {
+					// here just consider \n\r\t occupy one char
+					mNextIndex = matcher.start();
+					int eIndex = matcher.end();
+					mNextText = content.substring(mNextIndex, eIndex);
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	private String getText(Node node) {
+		if (node.getNodeType() == Node.TEXT_NODE)
+			return node.getNodeValue();
+		if (node instanceof OdfElement)
+			return TextExtractor.getText((OdfElement) node);
+		return "";
+	}
+
+	/*
+	 * Return the matched text might exist in header/footer.
+	 */
+	private TextSelection findInHeaderFooter(TextSelection selected) {
+		OdfFileDom styledom = null;
+		OdfOfficeMasterStyles masterpage = null;
+		OdfElement element = null;
+
+		if (selected != null) {
+			OdfElement containerElement = selected.getContainerElement();
+			int index = selected.getIndex();
+			String content = TextExtractor.getText(containerElement);
+
+			int nextIndex = -1;
+			Matcher matcher = mPattern.matcher(content);
+			// start from the end index of the selected item
+			if (matcher.find(index + selected.getText().length())) {
+				// here just consider \n\r\t occupy one char
+				nextIndex = matcher.start();
+				int eIndex = matcher.end();
+				mNextText = content.substring(nextIndex, eIndex);
+			}
+			if (nextIndex != -1) {
+				return createSelection(selected.getContainerElement(), nextIndex);
+			}
+		}
+		try {
+			styledom = mDocument.getStylesDom();
+			NodeList list = styledom.getElementsByTagName("office:master-styles");
+			if (styledom == null) {
+				return null;
+			}
+			if (list.getLength() > 0) {
+				masterpage = (OdfOfficeMasterStyles) list.item(0);
+			} else {
+				return null;
+			}
+
+			if (selected == null) {
+				element = (OdfElement) getNextMatchElementInTree(masterpage, masterpage);
+			} else {
+				element = (OdfElement) getNextMatchElementInTree(selected.getContainerElement(), masterpage);
+			}
+
+			if (element != null) {
+				return createSelection(element, mNextIndex);
+			} else {
+				return null;
+			}
+
+		} catch (Exception ex) {
+			Logger.getLogger(TextNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		return null;
+	}
+
+	/*
+	 * Found the next <code>Selection</code> start from the
+	 * <code>selected</code>.
+	 */
+	private TextSelection findNext(TextSelection selected) {
+		if (!mbFinishFindInHeaderFooter) {
+			// find in document.
+			if (mElement == null) {
+				TextSelection styleselected = findInHeaderFooter(selected);
+				if (styleselected != null) {
+					return styleselected;
+				}
+			}
+			selected = null;
+			mbFinishFindInHeaderFooter = true;
+		}
+		OdfElement rootElement = null;
+		try {
+			if (mElement != null) {
+				rootElement = mElement;
+			} else {
+				rootElement = mDocument.getContentRoot();
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(TextNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		if (selected == null) {
+			OdfElement element = (OdfElement) getNextMatchElementInTree(rootElement, rootElement);
+			if (element != null) {
+				return createSelection(element, mNextIndex);
+			} else {
+				return null;
+			}
+		}
+		OdfElement containerElement = selected.getContainerElement();
+		int index = selected.getIndex();
+		String content = TextExtractor.getText(containerElement);
+
+		int nextIndex = -1;
+		Matcher matcher = mPattern.matcher(content);
+		// start from the end index of the selected item
+		if (!selected.isSelectionReplaced()) {
+		if (((content.length() > index + selected.getText().length()))
+				&& (matcher.find(index + selected.getText().length()))) {
+				nextIndex = matcher.start();
+				int eIndex = matcher.end();
+				mNextText = content.substring(nextIndex, eIndex);
+			}
+		} else if (((content.length() >= index + selected.getText().length()))
+				&& (matcher.find(index))) {
+			// here just consider \n\r\t occupy one char
+			nextIndex = matcher.start();
+			int eIndex = matcher.end();
+			mNextText = content.substring(nextIndex, eIndex);
+		}
+		if (nextIndex != -1) {
+			return createSelection(selected.getContainerElement(), nextIndex);
+		} else {
+			OdfElement element = (OdfElement) getNextMatchElementInTree(containerElement, rootElement);
+			if (element != null) {
+				return createSelection(element, mNextIndex);
+			} else {
+				return null;
+			}
+		}
+	}
+
+	/*
+	 * In order to keep the consist between value and display text, spreadsheet
+	 * and chart document should use <code>CellSelection</code>.
+	 */
+	private TextSelection createSelection(OdfElement containerElement, int nextIndex) {
+		TextSelection item = null;
+		Node parent = containerElement.getParentNode();
+		while (parent != null) {
+			if (TableTableCellElementBase.class.isInstance(parent)) {
+				TableTableCellElementBase cellElement = (TableTableCellElementBase) parent;
+				Cell cell = Cell.getInstance(cellElement);
+				item = new CellSelection(this, mNextText, containerElement,
+						nextIndex, cell);
+				break;
+			} else {
+				OdfName odfName = ((OdfElement) parent).getOdfName();
+				String ns = odfName.getPrefix();
+				if ("text".equals(ns)) {
+					parent = parent.getParentNode();
+				} else {
+					break;
+				}
+			}
+		}
+		if (item == null) {
+			item = new TextSelection(this, mNextText, containerElement,
+					nextIndex);
+		}
+		return item;
+	}
+	OdfElement getModifiedStyleElement(OdfElement styleElement) {
+		if (modifiedStyleList == null)
+			return null;
+		return modifiedStyleList.get(styleElement);
+	}
+	void addModifiedStyleElement(OdfElement styleElment,
+			OdfElement modifiedStyleElement) {
+		if (modifiedStyleElement != null) {
+			if (modifiedStyleList == null) {
+				modifiedStyleList = new IdentityHashMap<OdfElement, OdfElement>();
+			}
+			modifiedStyleList.put(styleElment, modifiedStyleElement);
+		}
+	}
+	boolean isHandlePageBreak() {
+		return handlePageBreak;
+	}
+	void setHandlePageBreak(boolean handlePageBreak) {
+		this.handlePageBreak = handlePageBreak;
+	}
+	void setReplacedItem(TextSelection replacedItem) {
+		this.mReplacedItem = replacedItem;
+	}
+	TextSelection getReplacedItem() {
+		return this.mReplacedItem;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextSelection.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextSelection.java
new file mode 100644
index 0000000..9a9e558
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextSelection.java
@@ -0,0 +1,1299 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.net.URI;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextConditionalTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldDeclElement;
+import org.odftoolkit.odfdom.dom.element.text.TextVariableDeclElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.common.field.ConditionField;
+import org.odftoolkit.simple.common.field.Field;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+import org.odftoolkit.simple.common.field.Fields;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.draw.Image;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.Paragraph;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * <code>TextSelection</code> describes a sub element in a paragraph element or
+ * a heading element. It is recognized by the container element, which type
+ * should be {@link org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph
+ * OdfTextParagraph} or
+ * {@link org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading
+ * OdfTextHeading}, the start index of text content in container element and the
+ * text content of this <code>Selection</code>.
+ */
+public class TextSelection extends Selection {
+
+	String mMatchedText;
+	private OdfTextParagraph mParagraph;
+	private OdfTextHeading mHeading;
+	private int mIndexInContainer;
+	private boolean mIsInserted;
+	private boolean isSelectionReplaced = false;
+
+	/**
+	 * Constructor of <code>TextSelection</code>.
+	 * 
+	 * @param text
+	 *            the text content of this <code>TextSelection</code>
+	 * @param containerElement
+	 *            the paragraph element or heading element that contains this
+	 *            <code>TextSelection</code>
+	 * @param index
+	 *            the start index of the text content in container element
+	 * 
+	 */
+	TextSelection(Navigation search, String text, OdfElement containerElement,
+			int index) {
+		this.search = search;
+		mMatchedText = text;
+		if (containerElement instanceof OdfTextParagraph) {
+			mParagraph = (OdfTextParagraph) containerElement;
+		} else if (containerElement instanceof OdfTextHeading) {
+			mHeading = (OdfTextHeading) containerElement;
+		}
+		mIndexInContainer = index;
+	}
+
+	public TextNavigation getTextNavigation() {
+		if (search instanceof TextNavigation) {
+			return (TextNavigation) search;
+		}
+		return null;
+	}
+	/**
+	 * Create a new <code>TextSelection</code>.
+	 * 
+	 * @param text
+	 *            the text content of this <code>TextSelection</code>
+	 * @param containerElement
+	 *            the paragraph element or heading element that contains this
+	 *            <code>TextSelection</code>
+	 * @param index
+	 *            the start index of the text content in container element
+	 * 
+	 * @since 0.5.5
+	 */
+	public static TextSelection newTextSelection(Navigation search,
+			String text, OdfElement containerElement, int index) {
+		TextSelection selection = new TextSelection(search, text,
+				containerElement, index);
+		Selection.SelectionManager.registerItem(selection);
+		return selection;
+	}
+
+	/**
+	 * Get the paragraph element or heading element that contains this
+	 * <code>TextSelection</code>.
+	 * 
+	 * @return OdfElement the container element
+	 */
+	@Override
+	public OdfElement getElement() {
+		return getContainerElement();
+	}
+
+	/**
+	 * Get the paragraph element or heading element that contains this text.
+	 * 
+	 * @return OdfElement
+	 */
+	public OdfElement getContainerElement() {
+		if (mParagraph != null) {
+			return mParagraph;
+		} else {
+			return mHeading;
+		}
+	}
+
+	/**
+	 * Get the start index of the text content of its container element.
+	 * 
+	 * @return index the start index of the text content of its container
+	 *         element
+	 */
+	@Override
+	public int getIndex() {
+		return mIndexInContainer;
+	}
+
+	/**
+	 * Get the text content of this <code>TextSelection</code>.
+	 * 
+	 * @return text the text content
+	 */
+	public String getText() {
+		return mMatchedText;
+	}
+
+	/**
+	 * Delete the selection from the document the other matched selection in the
+	 * same container element will be updated automatically because the start
+	 * index of the following selections will be changed when the previous
+	 * selection has been deleted.
+	 * 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void cut() throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement container = getContainerElement();
+		delete(mIndexInContainer, mMatchedText.length(), container);
+		SelectionManager.refreshAfterCut(this);
+		mMatchedText = "";
+	}
+
+	/**
+	 * Apply a style to the selection so that the text style of this selection
+	 * will append the specified style.
+	 * 
+	 * @param style
+	 *            the style can be from the current document or user defined
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	public void applyStyle(OdfStyleBase style) throws InvalidNavigationException {
+		// append the specified style to the selection
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement parentElement = getContainerElement();
+
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+
+		appendStyle(index, leftLength, parentElement, style);
+
+	}
+
+	/**
+	 * Replace the text content of selection with a new string.
+	 * 
+	 * @param newText
+	 *            the replace text String
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	public void replaceWith(String newText) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement parentElement = getContainerElement();
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+		delete(index, leftLength, parentElement);
+		OdfTextSpan textSpan = new OdfTextSpan((OdfFileDom) parentElement.getOwnerDocument());
+		textSpan.addContentWhitespace(newText);
+		mIsInserted = false;
+		insertOdfElement(textSpan, index, parentElement);
+		// optimize the parent element
+		optimize(parentElement);
+		int offset = newText.length() - leftLength;
+		SelectionManager.refresh(getContainerElement(), offset, index + getText().length());
+		mMatchedText = newText;
+	}
+	
+	/**
+	 * Replace the text content of selection with a new Table.
+	 * 
+	 * @param newTable
+	 *            the replace Table
+	 * @return 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 * @return the new Table in the TextDocument
+	 */
+	public Table replaceWith(Table newTable) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		TableSelection nextTableSelection=new TableSelection(this);
+		return nextTableSelection.replaceWithTable(newTable);
+	}
+	/**
+	 * Replace the text content of selection with a new Image.
+	 * 
+	 * @param newImage
+	 *            the replace Image
+	 * @return 
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 * @return the new Image in the TextDocument,the image name is set to "replace" + System.currentTimeMillis(), please update the name to others by yourself.
+	 */
+	public Image replaceWith(Image newImage) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		ImageSelection nextImageSelection=new ImageSelection(this);
+		return nextImageSelection.replaceWithImage(newImage);
+	}
+	/**
+	 * Replace the text content of selection with a new Image.
+	 * 
+	 * @param imageUri
+	 *            the replace Image URI
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 * @return the new Image in the TextDocument,the image name is set to "replace" + System.currentTimeMillis(), please update the name to others by yourself.
+	 */
+	public Image replaceWith(URI imageUri) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		ImageSelection nextImageSelection=new ImageSelection(this);
+		return nextImageSelection.replaceWithImage(imageUri);
+	}
+	/**
+	 * Replace the content with a Field
+	 * 
+	 * @param orgField
+	 *            the reference Field to replace.
+     * @throws InvalidNavigationException
+	 *             if the selection is unavailable.   
+	 * @return the created field.         
+	 */
+	public Field replaceWith(Field orgField) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		Field newfield=null;
+		OdfElement parentElement = getContainerElement();
+		Paragraph orgparagraph = Paragraph.getInstanceof((TextParagraphElementBase) parentElement);
+		TextDocument document = (TextDocument) orgparagraph.getOwnerDocument();
+		
+		FieldSelection nextFieldSelection=new FieldSelection(this);
+		FieldType fieldType = orgField.getFieldType();
+	
+		switch (fieldType) {
+		case DATE_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case FIXED_DATE_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case TIME_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case FIXED_TIME_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case PREVIOUS_PAGE_NUMBER_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case CURRENT_PAGE_NUMBER_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case NEXT_PAGE_NUMBER_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case PAGE_COUNT_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case TITLE_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case SUBJECT_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case AUTHOR_NAME_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case AUTHOR_INITIALS_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case CHAPTER_FIELD:
+			newfield=nextFieldSelection.replaceWithSimpleField(fieldType);
+			break;
+		case SIMPLE_VARIABLE_FIELD:
+			VariableField SimpleVariableField = (VariableField)orgField;
+			String simplefieldname = SimpleVariableField.getVariableName();
+			VariableField simplefield=Fields.createSimpleVariableField(document, simplefieldname);
+			nextFieldSelection.replaceWithVariableField(simplefield);
+			newfield=simplefield;
+			break;
+		case USER_VARIABLE_FIELD:
+			VariableField userVariableField = (VariableField)orgField;
+			TextUserFieldDeclElement textUserFieldDeclElement =(TextUserFieldDeclElement) userVariableField.getOdfElement();
+			String fieldname = userVariableField.getVariableName();
+			String value=textUserFieldDeclElement.getOfficeStringValueAttribute();
+			VariableField variableField=Fields.createUserVariableField(document, fieldname,value);
+			nextFieldSelection.replaceWithVariableField(variableField);
+			newfield=variableField;
+			break;
+		case CONDITION_FIELD:
+			ConditionField conditionField = (ConditionField)orgField;
+			TextConditionalTextElement textConditionalTextElement =(TextConditionalTextElement) conditionField.getOdfElement();
+			String StringValueIfFalse=textConditionalTextElement.getTextStringValueIfFalseAttribute();
+			String StringValueIfTrue=textConditionalTextElement.getTextStringValueIfTrueAttribute();
+			String StringCondition=textConditionalTextElement.getTextConditionAttribute();
+			boolean CurrentValue=textConditionalTextElement.getTextCurrentValueAttribute();
+			ConditionField newdConditionField = nextFieldSelection.replaceWithConditionField(StringCondition, StringValueIfTrue, StringValueIfFalse);
+			TextConditionalTextElement newTextConditionalTextElement=(TextConditionalTextElement)newdConditionField.getOdfElement();
+			newTextConditionalTextElement.setTextCurrentValueAttribute(CurrentValue);
+			newfield=newdConditionField;
+			break;
+		case HIDDEN_TEXT_FIELD:
+			ConditionField conditionFieldHIDDEN = (ConditionField)orgField;
+			TextConditionalTextElement textConditionalTextElementHIDDEN =(TextConditionalTextElement) conditionFieldHIDDEN.getOdfElement();
+			String StringValueIfFalseHIDDEN=textConditionalTextElementHIDDEN.getTextStringValueIfFalseAttribute();
+			String StringConditionHIDDEN=textConditionalTextElementHIDDEN.getTextConditionAttribute();
+			boolean CurrentValueHIDDEN=textConditionalTextElementHIDDEN.getTextCurrentValueAttribute();
+			ConditionField newdConditionFieldHIDDEN = nextFieldSelection.replaceWithHiddenTextField(StringConditionHIDDEN, StringValueIfFalseHIDDEN);
+			TextConditionalTextElement newTextConditionalTextElementHIDDEN=(TextConditionalTextElement)newdConditionFieldHIDDEN.getOdfElement();
+			newTextConditionalTextElementHIDDEN.setTextCurrentValueAttribute(CurrentValueHIDDEN);
+			newfield=newdConditionFieldHIDDEN;
+			break;
+		case REFERENCE_FIELD:
+		default: throw new IllegalArgumentException("Simple Java API for ODF doesn't support this type now.");
+		}
+		return newfield;
+	}
+	
+	/**
+	 * Replace the content with a paragraph, the paragraph can be in the same TextDocument or in a different Document.
+	 * 
+	 * @param newParagraph
+	 *            the reference paragraph to replace.
+     * @throws InvalidNavigationException
+	 *             if the selection is unavailable.   
+	 * @return the replaced Paragraph.             
+	 */
+	public Paragraph replaceWith(Paragraph newParagraph) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		ParagraphSelection nextParagraphSelection=new ParagraphSelection(this);
+		return nextParagraphSelection.replaceWithParagraph(newParagraph);
+	}
+	/**
+	 * Replace the content with a TextDocument with Styles.
+	 * Note: You need cache the TextNavigation.nextSelection item because after
+	 * you replace currtenTextSelection with TextDocument, TextNavigation.nextSelection will search from the inserted Content, 
+	 * it will make you into a loop if the Search keyword also can be found in the new inserted Content.
+	 * </p>
+	 * The right way to use this replaceWithTextDocument(TextDocument textDocument) method should like this: 
+	 * <Code>
+	 * <p>	search = new TextNavigation("SIMPLE", doc);    </p>
+	 * <p>	TextSelection currtenTextSelection,nextTextSelection=null;</p>
+	 * <p>		while (search.hasNext()) {</p>
+	 * <p>			if(nextTextSelection!=null){</p>
+	 * <p>				currtenTextSelection=nextTextSelection;</p>
+	 * <p>			}else {</p>
+	 * <p>			 	currtenTextSelection = (TextSelection) search.nextSelection();</p>
+	 * <p>			}</p>
+	 * <p>			nextTextSelection = (TextSelection) search.nextSelection();</p>
+	 * <p>			if(currtenTextSelection!=null){</p>
+	 * <p>				try {</p>
+	 * <p>					nextTextSelection.replaceWithTextDocument(sourcedoc);</p>
+	 * <p>				} catch (Exception e) {</p>
+	 * <p>					e.printStackTrace();</p>
+	 * <p>				}</p>
+	 * <p>			}</p>
+	 * <p>		}</p>
+	 * <p>		if(nextTextSelection!=null){</p>
+	 * <p>			try {</p>
+	 * <p>				nextTextSelection.replaceWithTextDocument(sourcedoc);</p>
+	 * <p>			} catch (Exception e) {</p>
+	 * <p>				e.printStackTrace();</p>
+	 * <p>			}</p>
+	 * <p>		}</p>
+	 * </Code>
+	 * 
+	 * @param newTextDocument
+	 *            the reference TextDocument to replace.
+	 * @throws InvalidNavigationException 
+	 */
+	public void replaceWith(TextDocument newTextDocument) throws InvalidNavigationException{
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		TextDocumentSelection nextTextDocumentSelection=new TextDocumentSelection(this);
+		try {
+			nextTextDocumentSelection.replaceWithTextDocument(newTextDocument);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	/**
+	 * Create a span element for this text selection.
+	 * 
+	 * @return the created text span element for this selection
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 * @since 0.5.5
+	 */
+	public TextSpanElement createSpanElement() throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement parentElement = getContainerElement();
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+		delete(index, leftLength, parentElement);
+		OdfTextSpan textSpan = new OdfTextSpan((OdfFileDom) parentElement.getOwnerDocument());
+		textSpan.addContentWhitespace(getText());
+		mIsInserted = false;
+		insertOdfElement(textSpan, index, parentElement);
+		// optimize the parent element
+		optimize(parentElement);
+
+		return textSpan;
+	}
+
+	/**
+	 * Paste this selection just before a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtFrontOf(Selection positionItem) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		int indexOfNew = 0;
+		OdfElement newElement = positionItem.getElement();
+		if (positionItem instanceof TextSelection) {
+			indexOfNew = ((TextSelection) positionItem).getIndex();
+			newElement = ((TextSelection) positionItem).getContainerElement();
+		}
+
+		OdfTextSpan textSpan = getSpan((OdfFileDom) positionItem.getElement().getOwnerDocument());
+		mIsInserted = false;
+		insertOdfElement(textSpan, indexOfNew, newElement);
+		adjustStyle(newElement, textSpan, null);
+		SelectionManager.refreshAfterPasteAtFrontOf(this, positionItem);
+	}
+
+	/**
+	 * Paste this selection just after a specific selection.
+	 * 
+	 * @param positionItem
+	 *            a selection that is used to point out the position
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	@Override
+	public void pasteAtEndOf(Selection positionItem) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		// TODO: think about and test if search item is a element selection
+		int indexOfNew = 0;
+		OdfElement newElement = positionItem.getElement();
+		if (positionItem instanceof TextSelection) {
+			indexOfNew = ((TextSelection) positionItem).getIndex() + ((TextSelection) positionItem).getText().length();
+			newElement = ((TextSelection) positionItem).getContainerElement();
+		}
+		OdfTextSpan textSpan = getSpan((OdfFileDom) positionItem.getElement().getOwnerDocument());
+		mIsInserted = false;
+		insertOdfElement(textSpan, indexOfNew, newElement);
+		adjustStyle(newElement, textSpan, null);
+		SelectionManager.refreshAfterPasteAtEndOf(this, positionItem);
+	}
+	public void setSelectionReplaced(boolean b) {
+		this.isSelectionReplaced = b;
+	}
+	public boolean isSelectionReplaced() {
+		return this.isSelectionReplaced;
+	}
+
+	/**
+	 * Add a hypertext reference to the selection.
+	 * 
+	 * @param url
+	 *            the URL of this hypertext reference
+	 * @throws InvalidNavigationException
+	 *             if the selection is unavailable.
+	 */
+	public void addHref(URL url) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		OdfElement parentElement = getContainerElement();
+		int leftLength = getText().length();
+		int index = mIndexInContainer;
+		addHref(index, leftLength, parentElement, url.toString());
+	}
+	
+	/**
+	 * Add a comment to the selection.
+	 * 
+	 * @param content
+	 *            the content of this comment.
+	 * @param creator
+	 *            the creator of this comment, if <code>creator</code> is null,
+	 *            the value of <code>System.getProperty("user.name")</code> will
+	 *            be used.
+	 * @throws InvalidNavigationException
+	 *            if the selection is unavailable.
+	 * @since 0.6.5
+	 */
+	public void addComment(String content, String creator) throws InvalidNavigationException {
+		if (validate() == false) {
+			throw new InvalidNavigationException("No matched string at this position");
+		}
+		// create annotation element
+		OdfElement parentElement = getContainerElement();
+		OdfFileDom dom = (OdfFileDom) parentElement.getOwnerDocument();
+		OfficeAnnotationElement annotationElement = dom.newOdfElement(OfficeAnnotationElement.class);
+		// set creator
+		DcCreatorElement dcCreatorElement = annotationElement.newDcCreatorElement();
+		if (creator == null) {
+			creator = System.getProperty("user.name");
+		}
+		dcCreatorElement.setTextContent(creator);
+		// set date
+		String dcDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(new Date());
+		DcDateElement dcDateElement = annotationElement.newDcDateElement();
+		dcDateElement.setTextContent(dcDate);
+		TextPElement notePElement = annotationElement.newTextPElement();
+		TextSpanElement noteSpanElement = notePElement.newTextSpanElement();
+		// set comment style
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		OdfStyle textStyle = styles.newStyle(OdfStyleFamily.Text);
+		StyleTextPropertiesElement styleTextPropertiesElement = textStyle.newStyleTextPropertiesElement(null);
+		styleTextPropertiesElement.setStyleFontNameAttribute("Tahoma");
+		styleTextPropertiesElement.setFoFontSizeAttribute("10pt");
+		styleTextPropertiesElement.setStyleFontNameAsianAttribute("Lucida Sans Unicode");
+		styleTextPropertiesElement.setStyleFontSizeAsianAttribute("12pt");
+		noteSpanElement.setStyleName(textStyle.getStyleNameAttribute());
+		// set comment content
+		noteSpanElement.setTextContent(content);
+		// insert comment to its position
+		insertOdfElement(annotationElement, mIndexInContainer, parentElement);
+		// three text length plus two '\r'
+		int offset = content.length() + 1 + dcDate.length() + 1 + creator.length();
+		SelectionManager.refresh(getContainerElement(), offset, getIndex());
+	}
+	
+	/**
+	 * return a String Object representing this selection value the text content
+	 * of the selection, start index in the container element and the text
+	 * content of the container element will be provided.
+	 * 
+	 * @return a String representation of the value of this
+	 *         <code>TextSelection</code>
+	 */
+	@Override
+	public String toString() {
+		return "[" + mMatchedText + "] started from " + mIndexInContainer + " in paragraph:"
+				+ TextExtractor.getText(getContainerElement());
+	}
+
+	@Override
+	protected void refreshAfterFrontalDelete(Selection deleteItem) {
+		if (deleteItem instanceof TextSelection) {
+			mIndexInContainer -= ((TextSelection) deleteItem).getText().length();
+		}
+	}
+
+	@Override
+	protected void refreshAfterFrontalInsert(Selection pasteItem) {
+		if (pasteItem instanceof TextSelection) {
+			mIndexInContainer += ((TextSelection) pasteItem).getText().length();
+		}
+	}
+
+	@Override
+	protected void refresh(int offset) {
+		mIndexInContainer += offset;
+		if (mIndexInContainer < 0) {
+			mIndexInContainer = 0;
+		}
+	}
+
+	void cleanBreakProperty(Paragraph paragraph) {
+		TextNavigation search = this.getTextNavigation();
+		if (search == null)
+			throw new IllegalStateException("Navigation is null");
+		OdfStyleBase styleElement = paragraph.getStyleHandler()
+				.getStyleElementForRead();
+		String name = styleElement.getAttribute("style:name");
+		String newName = null;
+		OdfElement modifiedStyleElement = search
+				.getModifiedStyleElement(styleElement);
+		if (modifiedStyleElement == null) {
+			modifiedStyleElement = (OdfElement) styleElement.cloneNode(true);
+			search.addModifiedStyleElement(styleElement, modifiedStyleElement);
+			NodeList paragraphProperties = modifiedStyleElement
+					.getElementsByTagName("style:paragraph-properties");
+			if (paragraphProperties != null
+					&& paragraphProperties.getLength() > 0) {
+				StyleParagraphPropertiesElement property = (StyleParagraphPropertiesElement) paragraphProperties
+						.item(0);
+				property.removeAttribute("fo:break-before");
+				property.removeAttribute("fo:break-after");
+				property.removeAttribute("style:page-number");
+			}
+			modifiedStyleElement.removeAttribute("style:master-page-name");
+			newName = name + "-" + makeUniqueName();
+			NamedNodeMap attributes = modifiedStyleElement.getAttributes();
+			if (attributes != null) {
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node item = attributes.item(i);
+					String value = item.getNodeValue();
+					if (name.equals(value)) {
+						item.setNodeValue(newName);
+						break;
+					}
+				}
+			}
+			styleElement.getParentNode().appendChild(modifiedStyleElement);
+		} else {
+			newName = modifiedStyleElement.getAttribute("style:name");
+		}
+		NamedNodeMap attributes = paragraph.getOdfElement().getAttributes();
+		if (attributes != null) {
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node item = attributes.item(i);
+				String value = item.getNodeValue();
+				if (name.equals(value)) {
+					item.setNodeValue(newName);
+					break;
+				}
+			}
+		}
+		this.getTextNavigation().setHandlePageBreak(true);
+	}
+	String makeUniqueName() {
+		return String.format("p%06x", (int) (Math.random() * 0xffffff));
+	}
+	/*
+	 * Return a new span that cover this selection and keep the original style
+	 * of this <code>Selection</code>.
+	 */
+	private OdfTextSpan getSpan(OdfFileDom ownerDoc) {
+
+		OdfElement parentElement = getContainerElement();
+		if (parentElement != null) {
+			OdfElement copyParentNode = (OdfElement) parentElement.cloneNode(true);
+			if (ownerDoc != parentElement.getOwnerDocument()) {
+				copyParentNode = (OdfElement) ownerDoc.adoptNode(copyParentNode);
+			}
+			OdfTextSpan textSpan = new OdfTextSpan(ownerDoc);
+			int sIndex = mIndexInContainer;
+			int eIndex = sIndex + mMatchedText.length();
+			// delete the content except the selection string
+			// delete from the end to start, so that the postion will not be
+			// impact by delete action
+			delete(eIndex, TextExtractor.getText(copyParentNode).length() - eIndex, copyParentNode);
+			delete(0, sIndex, copyParentNode);
+			optimize(copyParentNode);
+			Node childNode = copyParentNode.getFirstChild();
+			while (childNode != null) {
+				textSpan.appendChild(childNode.cloneNode(true));
+				childNode = childNode.getNextSibling();
+			}
+			// apply text style for the textSpan
+			if (copyParentNode instanceof OdfStylableElement) {
+				applyTextStyleProperties(getTextStylePropertiesDeep((OdfStylableElement) copyParentNode), textSpan);
+			}
+			return textSpan;
+		}
+		return null;
+	}
+
+	/*
+	 * Optimize the text element by deleting the empty text node.
+	 */
+	private void optimize(Node pNode) {
+		// check if the text:a can be optimized
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			Node nextNode = node.getNextSibling();
+			// if ((node.getNodeType() == Node.ELEMENT_NODE) &&
+			// (node.getPrefix().equals("text"))) {
+			if (node instanceof OdfTextSpan) {
+				if (TextExtractor.getText((OdfTextSpan) node).length() == 0) {
+					node.getParentNode().removeChild(node);
+				} else {
+					optimize(node);
+				}
+			}
+			node = nextNode;
+		}
+	}
+
+	/*
+	 * Apply the <code>styleMap</code> to the <code>toElement</code> reserve the
+	 * style property of toElement, if it is also exist in <code>styleMap</code>
+	 */
+	private void applyTextStyleProperties(Map<OdfStyleProperty, String> styleMap, OdfStylableElement toElement) {
+		if (styleMap != null) {
+			// preserve the style property of toElement if it is also exist in
+			// styleMap
+			OdfStyle resultStyleElement = toElement.getAutomaticStyles().newStyle(OdfStyleFamily.Text);
+			for (Map.Entry<OdfStyleProperty, String> entry : styleMap.entrySet()) {
+				if (toElement.hasProperty(entry.getKey())) {
+					resultStyleElement.setProperty(entry.getKey(), toElement.getProperty(entry.getKey()));
+				} else {
+					resultStyleElement.setProperty(entry.getKey(), entry.getValue());
+				}
+			}
+			toElement.setStyleName(resultStyleElement.getStyleNameAttribute());
+		}
+	}
+
+	/*
+	 * Insert <code>odfElement</code>, span or annotation, into the from index of <code>pNode<code>.
+	 */
+	private void insertOdfElement(OdfElement odfElement, int fromIndex, Node pNode) {
+		if (fromIndex < 0) {
+			fromIndex = 0;
+		}
+		if (fromIndex == 0 && mIsInserted) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if (fromIndex <= 0 && mIsInserted) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+				if ((fromIndex != 0) && (nodeLength < fromIndex)) {
+					fromIndex -= nodeLength;
+				} else {
+					// insert result after node, and insert an new text node
+					// after the result node
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					// insert the text span in appropriate position
+					node.setNodeValue(buffer.toString());
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					Node newNode = node.cloneNode(true);
+					newNode.setNodeValue(value.substring(fromIndex, value.length()));
+					if (nextNode != null) {
+						parNode.insertBefore(odfElement, nextNode);
+						parNode.insertBefore(newNode, nextNode);
+					} else {
+						parNode.appendChild(odfElement);
+						parNode.appendChild(newNode);
+					}
+					mIsInserted = true;
+					return;
+				}
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+					fromIndex -= nodeLength;
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+					fromIndex--;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+					fromIndex--;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+					insertOdfElement(odfElement, fromIndex, node);
+					fromIndex -= nodeLength;
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*
+	 * The <code>textSpan</code> must be the child element of
+	 * <code>parentNode</code> this method is used to keep the style of text
+	 * span when it has been insert into the <code>parentNode</code> if we don't
+	 * deal with the style, the inserted span will also have the style of
+	 * <code>parentNode</code>.
+	 */
+	private void adjustStyle(Node parentNode, OdfTextSpan textSpan, Map<OdfStyleProperty, String> styleMap) {
+		if (parentNode instanceof OdfStylableElement) {
+			OdfStylableElement pStyleNode = (OdfStylableElement) parentNode;
+			if (styleMap == null) {
+				styleMap = getTextStylePropertiesDeep(pStyleNode);
+			}
+			Node node = parentNode.getFirstChild();
+			while (node != null) {
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					if (node.getTextContent().length() > 0) {
+						Node nextNode = node.getNextSibling();
+						OdfTextSpan span = new OdfTextSpan((OdfFileDom) node.getOwnerDocument());
+						span.appendChild(node);
+						if (nextNode != null) {
+							parentNode.insertBefore(span, nextNode);
+						} else {
+							parentNode.appendChild(span);
+						}
+						node = span;
+						applyTextStyleProperties(styleMap, (OdfStylableElement) node);
+					}
+				} else if ((node instanceof OdfStylableElement)) {
+					if (!node.equals(textSpan)) {
+						Map<OdfStyleProperty, String> styles = getTextStylePropertiesDeep(pStyleNode);
+						Map<OdfStyleProperty, String> styles1 = getTextStylePropertiesDeep((OdfStylableElement) node);
+						if (styles == null) {
+							styles = styles1;
+						} else if (styles1 != null) {
+							styles.putAll(styles1);
+						}
+						int comp = node.compareDocumentPosition(textSpan);
+						// if node contains textSpan, then recurse the node
+						if ((comp & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {
+							adjustStyle(node, textSpan, styles);
+						} else {
+							applyTextStyleProperties(styles, (OdfStylableElement) node);
+						}
+					}
+				}
+				node = node.getNextSibling();
+			}
+			// change the parentNode to default style
+			// here we don't know the default style name, so here just
+			// remove the text:style-name attribute
+			pStyleNode.removeAttributeNS(OdfDocumentNamespace.TEXT.getUri(), "style-name");
+		}
+	}
+
+	/*
+	 * Delete the <code>pNode<code> from the <code>fromIndex</code> text, and
+	 * delete <code>leftLength</code> text.
+	 */
+	private void delete(int fromIndex, int leftLength, Node pNode) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					StringBuffer buffer = new StringBuffer();
+					buffer.append(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+					fromIndex = 0;
+					if (nextLength >= 0) {
+						// delete the result
+						buffer.append(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						leftLength = endLength - value.length();
+					}
+					node.setNodeValue(buffer.toString());
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						delete(fromIndex, leftLength, node);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*
+	 * Add href for a range text of <code>pNode<code> from the
+	 * <code>fromIndex</code> text, and the href will cover
+	 * <code>leftLength</code> text.
+	 */
+	private void addHref(int fromIndex, int leftLength, Node pNode, String href) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					node.setNodeValue(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					// init text:a
+					TextAElement textLink = new TextAElement((OdfFileDom) node.getOwnerDocument());
+					Node newNode = null;
+					if (nextLength >= 0) {
+						textLink.setTextContent(value.substring(fromIndex, endLength));
+						newNode = node.cloneNode(true);
+						newNode.setNodeValue(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						textLink.setTextContent(value.substring(fromIndex, value.length()));
+						leftLength = endLength - value.length();
+					}
+					textLink.setXlinkTypeAttribute("simple");
+					textLink.setXlinkHrefAttribute(href);
+
+					if (nextNode != null) {
+						parNode.insertBefore(textLink, nextNode);
+						if (newNode != null) {
+							parNode.insertBefore(newNode, nextNode);
+						}
+					} else {
+						parNode.appendChild(textLink);
+						if (newNode != null) {
+							parNode.appendChild(newNode);
+						}
+					}
+					fromIndex = 0;
+					if (nextNode != null) {
+						node = nextNode;
+					} else {
+						node = textLink;
+					}
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						addHref(fromIndex, leftLength, node, href);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*
+	 * Get a map containing text properties of the specified styleable
+	 * <code>element</code>.
+	 * 
+	 * @return a map of text properties.
+	 */
+	private Map<OdfStyleProperty, String> getTextStyleProperties(OdfStylableElement element) {
+		String styleName = element.getStyleName();
+		OdfStyleBase styleElement = element.getAutomaticStyles().getStyle(styleName, element.getStyleFamily());
+
+		if (styleElement == null) {
+			styleElement = element.getDocumentStyle();
+		}
+		if (styleElement != null) {
+			// check if it is the style:defaut-style
+			if ((styleElement.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties) == null)
+					&& (styleElement.getPropertiesElement(OdfStylePropertiesSet.TextProperties) == null)) {
+				styleElement = ((Document) ((OdfFileDom) styleElement.getOwnerDocument()).getDocument())
+						.getDocumentStyles().getDefaultStyle(styleElement.getFamily());
+			}
+			TreeMap<OdfStyleProperty, String> result = new TreeMap<OdfStyleProperty, String>();
+			OdfStyleFamily family = OdfStyleFamily.Text;
+			if (family != null) {
+				for (OdfStyleProperty property : family.getProperties()) {
+					if (styleElement.hasProperty(property)) {
+						result.put(property, styleElement.getProperty(property));
+					}
+				}
+			}
+			return result;
+		}
+		return null;
+	}
+
+	/*
+	 * Get a map containing text properties of the specified styleable
+	 * <code>element</code>. The map will also include any properties set by
+	 * parent styles.
+	 * 
+	 * @return a map of text properties.
+	 */
+	private Map<OdfStyleProperty, String> getTextStylePropertiesDeep(OdfStylableElement element) {
+		String styleName = element.getStyleName();
+		OdfStyleBase styleElement = element.getAutomaticStyles().getStyle(styleName, element.getStyleFamily());
+		if (styleElement == null) {
+			styleElement = element.getDocumentStyle();
+		}
+		TreeMap<OdfStyleProperty, String> result = new TreeMap<OdfStyleProperty, String>();
+		while (styleElement != null) {
+			// check if it is the style:defaut-style
+			if ((styleElement.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties) == null)
+					&& (styleElement.getPropertiesElement(OdfStylePropertiesSet.TextProperties) == null)) {
+				styleElement = ((Document) ((OdfFileDom) styleElement.getOwnerDocument()).getDocument())
+						.getDocumentStyles().getDefaultStyle(styleElement.getFamily());
+			}
+			OdfStyleFamily family = OdfStyleFamily.Text;
+			if (family != null) {
+				for (OdfStyleProperty property : family.getProperties()) {
+					if (styleElement.hasProperty(property)) {
+						result.put(property, styleElement.getProperty(property));
+					}
+				}
+			}
+			styleElement = styleElement.getParentStyle();
+		}
+		return result;
+	}
+
+	/*
+	 * Validate if the <code>Selection</code> is still available.
+	 * 
+	 * @return true if the selection is available; false if the
+	 * <code>Selection</code> is not available.
+	 */
+	private boolean validate() {
+		if (getContainerElement() == null) {
+			return false;
+		}
+		OdfElement container = getContainerElement();
+		if (container == null) {
+			return false;
+		}
+		String content = TextExtractor.getText(container);
+		if (content.indexOf(mMatchedText, mIndexInContainer) == mIndexInContainer) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/*
+	 * Append specified style for a range text of <code>pNode<code> from
+	 * <code>fromIndex</code> and cover <code>leftLength</code>
+	 */
+	private void appendStyle(int fromIndex, int leftLength, Node pNode, OdfStyleBase style) {
+		if ((fromIndex == 0) && (leftLength == 0)) {
+			return;
+		}
+		int nodeLength = 0;
+		Node node = pNode.getFirstChild();
+		while (node != null) {
+			if ((fromIndex == 0) && (leftLength == 0)) {
+				return;
+			}
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				nodeLength = node.getNodeValue().length();
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				// text:s
+				if (node.getLocalName().equals("s")) {
+					try {
+						nodeLength = Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+								.getUri(), "c"));
+					} catch (Exception e) {
+						nodeLength = 1;
+					}
+				} else if (node.getLocalName().equals("line-break")) {
+					nodeLength = 1;
+				} else if (node.getLocalName().equals("tab")) {
+					nodeLength = 1;
+				} else {
+					nodeLength = TextExtractor.getText((OdfElement) node).length();
+				}
+			}
+			if (nodeLength <= fromIndex) {
+				fromIndex -= nodeLength;
+			} else {
+				// the start index is in this node
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					String value = node.getNodeValue();
+					node.setNodeValue(value.substring(0, fromIndex));
+					int endLength = fromIndex + leftLength;
+					int nextLength = value.length() - endLength;
+
+					Node nextNode = node.getNextSibling();
+					Node parNode = node.getParentNode();
+					// init text:a
+					OdfTextSpan textSpan = new OdfTextSpan((OdfFileDom) node.getOwnerDocument());
+					Node newNode = null;
+					if (nextLength >= 0) {
+						textSpan.setTextContent(value.substring(fromIndex, endLength));
+						newNode = node.cloneNode(true);
+						newNode.setNodeValue(value.substring(endLength, value.length()));
+						leftLength = 0;
+					} else {
+						textSpan.setTextContent(value.substring(fromIndex, value.length()));
+						leftLength = endLength - value.length();
+					}
+					textSpan.setProperties(style.getStyleProperties());
+
+					if (nextNode != null) {
+						parNode.insertBefore(textSpan, nextNode);
+						if (newNode != null) {
+							parNode.insertBefore(newNode, nextNode);
+						}
+					} else {
+						parNode.appendChild(textSpan);
+						if (newNode != null) {
+							parNode.appendChild(newNode);
+						}
+					}
+					fromIndex = 0;
+					if (nextNode != null) {
+						node = nextNode;
+					} else {
+						node = textSpan;
+					}
+
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// if text:s?????????
+					// text:s
+					if (node.getLocalName().equals("s")) {
+						// delete space
+						((TextSElement) node).setTextCAttribute(new Integer(nodeLength - fromIndex));
+						leftLength = leftLength - (nodeLength - fromIndex);
+						fromIndex = 0;
+
+					} else if (node.getLocalName().equals("line-break") || node.getLocalName().equals("tab")) {
+						fromIndex = 0;
+						leftLength--;
+					} else {
+						appendStyle(fromIndex, leftLength, node, style);
+						int length = (fromIndex + leftLength) - nodeLength;
+						leftLength = length > 0 ? length : 0;
+						fromIndex = 0;
+					}
+				}
+			}
+			node = node.getNextSibling();
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextStyleNavigation.java b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextStyleNavigation.java
new file mode 100644
index 0000000..fb2fd64
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/common/navigation/TextStyleNavigation.java
@@ -0,0 +1,312 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.TextDocument;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * A derived <code>Navigation</code> class used to navigate the text content,
+ * which can search the document and find matched style properties and return
+ * <code>TextSelection</code> instance(s).
+ */
+public class TextStyleNavigation extends Navigation {
+
+	private TextDocument mTextDocument;
+	private TextSelection mNextSelectedItem;
+	private TextSelection mTempSelectedItem;
+	private int mCurrentIndex;
+	private Map<OdfStyleProperty, String> mProps;
+	private String mText;
+	private Node mPhNode;
+	private int mIndex;
+	private Node mNode;
+
+	/**
+	 * Construct <code>TextStyleNavigation</code> with style properties condition and
+	 * navigation scope.
+	 * 
+	 * @param props
+	 *            the matched style properties conditions
+	 * @param doc
+	 *            the navigation search scope
+	 */
+	public TextStyleNavigation(Map<OdfStyleProperty, String> props, TextDocument doc) {
+		mTextDocument = doc;
+		mNextSelectedItem = null;
+		mTempSelectedItem = null;
+		this.mProps = props;
+	}
+
+	/**
+	 * Check if has next <code>TextSelection</code> with satisfied style.
+	 * 
+	 * @see org.odftoolkit.simple.common.navigation.Navigation#hasNext()
+	 */
+	@Override
+	public boolean hasNext() {
+		mTempSelectedItem = findNext(mNextSelectedItem);
+		return (mTempSelectedItem != null);
+	}
+	
+	/**
+	 * Get next <code>TextSelection</code>.
+	 * 
+	 * @see org.odftoolkit.simple.common.navigation.Navigation#nextSelection()
+	 */
+	@Override
+	public Selection nextSelection() {
+		if(mTempSelectedItem !=null){
+			mNextSelectedItem = mTempSelectedItem;
+			mTempSelectedItem = null;
+		}else{
+			mNextSelectedItem = findNext(mNextSelectedItem);
+		}
+		if (mNextSelectedItem == null) {
+			return null;
+		} else {
+			Selection.SelectionManager.registerItem(mNextSelectedItem);
+			return mNextSelectedItem;
+		}
+	}
+
+	/**
+	 * Check if the element has specified style properties, which are stated
+	 * when the <code>TextStyleNavigation</code> created.
+	 * 
+	 * @param element
+	 *            navigate this element
+	 * @return true if this element has the specified style properties false if
+	 *         not match
+	 */
+	@Override
+	public boolean match(Node element) {
+		boolean match = false;
+		if (element.getNodeType() == Node.TEXT_NODE && !element.getNodeValue().trim().equals("")) {
+			if (element.getParentNode() instanceof OdfStylableElement) {
+				OdfStylableElement parStyleElement = (OdfStylableElement) element.getParentNode();
+				String parStyleName = getStyleName(parStyleElement);
+				if (getMatchStyleNames().contains(parStyleName)) {
+					match = true;
+					mText = element.getNodeValue();
+					NodeList nodes = getPHElement(element.getParentNode()).getChildNodes();
+					mIndex = 0;
+					getIndex(nodes, element);
+				}
+			}
+		}
+		return match;
+	}
+
+	/*
+	 * Find next <code>TextSelection</code> which match specified style.
+	 */
+	private TextSelection findNext(TextSelection selected) {
+		OdfElement element = null;
+		try {
+			Node rootNode = mTextDocument.getContentRoot();
+			if (selected == null) {
+				mNode = getNextMatchElementInTree(rootNode, rootNode);
+			} else {
+				mNode = getNextMatchElementInTree(mNode, rootNode);
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(TextStyleNavigation.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+		}
+		if (mNode != null) {
+			element = (OdfElement) getPHElement(mNode);
+			TextSelection item = new TextSelection(this, mText, element,
+					mCurrentIndex);
+			return item;
+		}
+		return null;
+	}
+
+	private Node getPHElement(Node node) {
+		// get paragraph or heading element
+		if (node instanceof OdfTextParagraph) {
+			mPhNode = node;
+		} else if (node instanceof OdfTextHeading) {
+			mPhNode = node;
+		} else {
+			getPHElement(node.getParentNode());
+		}
+		return mPhNode;
+	}
+
+	private void getIndex(NodeList nodes, Node element) {
+		for (int i = 0; i < nodes.getLength(); i++) {
+			Node node = nodes.item(i);
+			if (node == element) {
+				mCurrentIndex = mIndex;
+				break;
+			} else {
+				if (node.getNodeType() == Node.TEXT_NODE) {
+					mIndex = mIndex + node.getNodeValue().length();
+				} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+					// mText:s
+					if (node.getLocalName().equals("s")) {
+						try {
+							mIndex = mIndex
+									+ Integer.parseInt(((Element) node).getAttributeNS(OdfDocumentNamespace.TEXT
+											.getUri(), "c"));
+						} catch (Exception e) {
+							mIndex++;
+						}
+					} else if (node.getLocalName().equals("line-break")) {
+						mIndex++;
+					} else if (node.getLocalName().equals("tab")) {
+						mIndex++;
+					} else {
+						getIndex(node.getChildNodes(), element);
+					}
+				}
+			}
+		}
+	}
+
+	private String getStyleName(OdfStylableElement element) {
+		String stylename = element.getStyleName();
+		if (stylename == null) {
+			if (element.getParentNode() instanceof OdfStylableElement) {
+				getStyleName((OdfStylableElement) element.getParentNode());
+			} else {
+				stylename = "defaultstyle";
+			}
+		}
+		return stylename;
+	}
+
+	private Set<String> getMatchStyleNames() {
+		Set<String> styleNames = new HashSet<String>();
+		String sname;
+		HashMap<String, OdfDefaultStyle> defaultStyles = new HashMap<String, OdfDefaultStyle>();
+		try {
+			NodeList defStyleList = mTextDocument.getDocumentStyles().getElementsByTagName("style:default-style");
+			for (int i = 0; i < defStyleList.getLength(); i++) {
+				OdfDefaultStyle defStyle = (OdfDefaultStyle) defStyleList.item(i);
+				defaultStyles.put(defStyle.getFamilyName(), defStyle);
+			}
+			NodeList styleList = mTextDocument.getDocumentStyles().getElementsByTagName("style:style");
+			for (int i = 0; i < styleList.getLength(); i++) {
+				OdfStyle sStyle = (OdfStyle) styleList.item(i);
+				// get default properties and style properties
+				Map<OdfStyleProperty, String> map = sStyle.getStylePropertiesDeep();
+				// check if properties include all search properties and value
+				// equal
+				Iterator<OdfStyleProperty> pIter = mProps.keySet().iterator();
+				boolean isStyle = false;
+				while (pIter.hasNext()) {
+					isStyle = false;
+					OdfStyleProperty p = pIter.next();
+					if (map.containsKey(p)) {
+						if (map.get(p).equals(mProps.get(p))) {
+							isStyle = true;
+						} else {
+							break;
+						}
+					} else {
+						break;
+					}
+				}
+				// put all match style names
+				if (isStyle) {
+					sname = sStyle.getStyleNameAttribute();
+					// if(sname.contains("default"))sname="defaultstyle";
+					styleNames.add(sname);
+				}
+			}
+			// get all automatic styles
+			Iterator<OdfStyle> cStyles = mTextDocument.getContentDom().getAutomaticStyles().getAllStyles().iterator();
+			while (cStyles.hasNext()) {
+				OdfStyle cStyle = cStyles.next();
+				// get default properties and style properties
+				Map<OdfStyleProperty, String> map = cStyle.getStylePropertiesDeep();
+
+				if (cStyle.getParentStyle() == null) {
+					if (cStyle.getFamilyName().equals("text")) {
+						if (defaultStyles.containsKey("text")) {
+							getTextDefaultProperties("text", defaultStyles, map);
+						} else {
+							getTextDefaultProperties("paragraph", defaultStyles, map);
+						}
+					}
+				}
+				// check if the search properties is in properties
+				Iterator<OdfStyleProperty> pIter = mProps.keySet().iterator();
+				boolean isStyle = false;
+				while (pIter.hasNext()) {
+					isStyle = false;
+					OdfStyleProperty p = pIter.next();
+					if (map.containsKey(p)) {
+						if (map.get(p).equals(mProps.get(p))) {
+							isStyle = true;
+						} else {
+							break;
+						}
+					} else {
+						break;
+					}
+				}
+				// put all match style names
+				if (isStyle) {
+					styleNames.add(cStyle.getStyleNameAttribute());
+				}
+			}
+		} catch (Exception e1) {
+			Logger.getLogger(TextStyleNavigation.class.getName()).log(Level.SEVERE, e1.getMessage(), e1);
+		}
+		return styleNames;
+	}
+
+	private void getTextDefaultProperties(String familyName, HashMap<String, OdfDefaultStyle> defaultStyles,
+			Map<OdfStyleProperty, String> map) {
+		OdfDefaultStyle defStyle = defaultStyles.get(familyName);
+		if (defStyle != null) {
+			OdfStyleFamily family = defStyle.getFamily();
+			if (family != null) {
+				for (OdfStyleProperty property : family.getProperties()) {
+					if (!map.containsKey(property) && defStyle.hasProperty(property)) {
+						map.put(property, defStyle.getProperty(property));
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/AbstractFrameContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/AbstractFrameContainer.java
new file mode 100644
index 0000000..4080483
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/AbstractFrameContainer.java
@@ -0,0 +1,121 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.PresentationDocument;
+
+/**
+ * AbstractFrameContainer is an abstract implementation of the FrameContainer
+ * interface, with a default implementation for every method defined in
+ * FrameContainer, except getFrameContainerElement(). A subclass must implement
+ * the abstract method getFrameContainerElement().
+ * 
+ * @since 0.5
+ */
+public abstract class AbstractFrameContainer implements FrameContainer {
+
+	public abstract OdfElement getFrameContainerElement();
+
+	/**
+	 * Add a frame to the container
+	 * 
+	 * @return the instance of DrawFrameElement
+	 */
+	public Frame addFrame() {
+		Frame frame = Frame.newFrame(this);
+		return frame;
+	}
+
+	/**
+	 * Add a frame with the specific position to the container
+	 * 
+	 * @param rectangle
+	 *            - the rectangle (position and size) of this frame
+	 * @return an object of frame
+	 */
+	public Frame addFrame(FrameRectangle rectangle) {
+		Frame frame = Frame.newFrame(this);
+		frame.setRectangle(rectangle);
+		return frame;
+	}
+
+	/**
+	 * Return a frame whose name (specified with "draw:name") is a given value.
+	 * 
+	 * @param name
+	 *            - the name of this frame
+	 * @return a frame whose name is the given value
+	 */
+	public Frame getFrameByName(String name) {
+		if (name == null)
+			return null;
+
+		OdfElement container = getFrameContainerElement();
+		DrawFrameElement element = OdfElement.findFirstChildNode(DrawFrameElement.class, container);
+		while (element != null) {
+			if (name.equals(element.getDrawNameAttribute())) {
+				Frame frame = Frame.getInstanceof(element);
+				frame.mFrameContainer = this;
+				return frame;
+			}
+			element = OdfElement.findNextChildNode(DrawFrameElement.class, element);
+		}
+		return null;
+	}
+
+	/**
+	 * Return a list of frame whose usage (specified with "presentation:class")
+	 * is a given value.
+	 * <p>
+	 * Null will be returned if the owner document is not a presentation
+	 * document.
+	 * 
+	 * @param usage
+	 *            - the usage value
+	 * @return a list of frame whose usage is a given value. Null will be
+	 *         returned if the owner document is not a presentation document.
+	 * @see org.odftoolkit.simple.PresentationDocument.PresentationClass
+	 */
+	public List<Frame> getFrameByPresentationclass(PresentationDocument.PresentationClass usage) {
+		OdfElement container = getFrameContainerElement();
+		Document doc = (Document) ((OdfFileDom) container.getOwnerDocument()).getDocument();
+		if (!(doc instanceof PresentationDocument)) {
+			return null;
+		}
+		ArrayList<Frame> al = new ArrayList<Frame>();
+		DrawFrameElement element = OdfElement.findFirstChildNode(DrawFrameElement.class, container);
+		while (element != null) {
+			if (usage.toString().equals(element.getPresentationClassAttribute())) {
+				Frame frame = Frame.getInstanceof(element);
+				frame.mFrameContainer = this;
+				al.add(frame);
+			}
+			element = OdfElement.findNextChildNode(DrawFrameElement.class, element);
+		}
+		return al;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/AbstractTextboxContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/AbstractTextboxContainer.java
new file mode 100644
index 0000000..b358079
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/AbstractTextboxContainer.java
@@ -0,0 +1,188 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawTextBoxElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.text.AbstractParagraphContainer;
+import org.w3c.dom.DOMException;
+
+/**
+ * AbstractTextboxContainer is an abstract implementation of the
+ * TextboxContainer interface, with a default implementation for every method
+ * defined in TextboxContainer, except getFrameContainerElement(). A subclass
+ * must implement the abstract method getFrameContainerElement().
+ * 
+ * @since 0.5
+ */
+public abstract class AbstractTextboxContainer extends AbstractFrameContainer implements TextboxContainer {
+
+	public Textbox addTextbox() {
+		Textbox textbox = Textbox.newTextbox(this);
+		return textbox;
+	}
+
+	/**
+	 * Remove the text box.
+	 * 
+	 * @param box
+	 *            - the text box to be removed
+	 * @return true if the text box is removed successfully, false if errors
+	 *         happen.
+	 */
+	public boolean removeTextbox(Textbox box) {
+		OdfElement containerElement = getFrameContainerElement();
+		DrawFrameElement drawFrame = box.getDrawFrameElement();
+		try {
+			drawFrame.removeChild(box.getOdfElement());
+			if (drawFrame.hasChildNodes() == false)
+				containerElement.removeChild(box.getDrawFrameElement());
+		} catch (DOMException exception) {
+			Logger.getLogger(AbstractParagraphContainer.class.getName()).log(Level.WARNING, exception.getMessage());
+			return false;
+		}
+		return true;
+	}
+
+	public Iterator<Textbox> getTextboxIterator() {
+		return new SimpleTextboxIterator(this);
+	}
+
+	public Textbox addTextbox(FrameRectangle position) {
+		Textbox textbox = Textbox.newTextbox(this);
+		textbox.setRectangle(position);
+		return textbox;
+	}
+
+	/**
+	 * Return a text box whose name is a given value.
+	 * 
+	 * @param name
+	 *            - the name of the text box
+	 * @return a text box whose name is a given value
+	 * @see AbstractFrameContainer#getFrameByName(String)
+	 */
+	public Textbox getTextboxByName(String name) {
+		Frame frame = getFrameByName(name);
+		if (frame != null) {
+			DrawTextBoxElement boxElement = OdfElement.findFirstChildNode(DrawTextBoxElement.class, frame
+					.getDrawFrameElement());
+			if (boxElement != null) {
+				Textbox box = Textbox.getInstanceof(boxElement);
+				box.mFrameContainer = frame.mFrameContainer;
+				return box;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * This method is only useful for presentation slides.
+	 * <p>
+	 * This method will return a list of text boxs by the usage defined in
+	 * presentation slides.
+	 * 
+	 * @param usage
+	 *            - the usage description
+	 * @return a list of text box Null will be returned if the owner document is
+	 *         not a presentation
+	 * @see AbstractFrameContainer#getFrameByPresentationclass(PresentationDocument.PresentationClass)
+	 * @see org.odftoolkit.simple.PresentationDocument.PresentationClass
+	 */
+	public List<Textbox> getTextboxByUsage(PresentationDocument.PresentationClass usage) {
+		List<Frame> frameList = getFrameByPresentationclass(usage);
+		if (frameList == null)
+			return null;
+
+		ArrayList<Textbox> al = new ArrayList<Textbox>();
+		for (int i = 0; i < frameList.size(); i++) {
+			Frame frame = frameList.get(i);
+			DrawTextBoxElement boxElement = OdfElement.findFirstChildNode(DrawTextBoxElement.class, frame
+					.getDrawFrameElement());
+			if (boxElement != null) {
+				Textbox box = Textbox.getInstanceof(boxElement);
+				box.mFrameContainer = frame.mFrameContainer;
+				al.add(box);
+			}
+		}
+		return al;
+	}
+
+	private class SimpleTextboxIterator implements Iterator<Textbox> {
+
+		private OdfElement containerElement;
+		private Textbox nextElement = null;
+		private Textbox tempElement = null;
+
+		private SimpleTextboxIterator(TextboxContainer container) {
+			containerElement = container.getFrameContainerElement();
+		}
+
+		public boolean hasNext() {
+			tempElement = findNext(nextElement);
+			return (tempElement != null);
+		}
+
+		public Textbox next() {
+			if (tempElement != null) {
+				nextElement = tempElement;
+				tempElement = null;
+			} else {
+				nextElement = findNext(nextElement);
+			}
+			if (nextElement == null) {
+				return null;
+			} else {
+				return nextElement;
+			}
+		}
+
+		public void remove() {
+			if (nextElement == null) {
+				throw new IllegalStateException("please call next() first.");
+			}
+			containerElement.removeChild(nextElement.getDrawFrameElement());
+		}
+
+		private Textbox findNext(Textbox thisBox) {
+			DrawFrameElement nextFrame = null;
+			if (thisBox == null) {
+				nextFrame = OdfElement.findFirstChildNode(DrawFrameElement.class, containerElement);
+			} else {
+				nextFrame = OdfElement.findNextChildNode(DrawFrameElement.class, thisBox.getDrawFrameElement());
+			}
+
+			if (nextFrame != null) {
+				DrawTextBoxElement nextbox = OdfElement.findFirstChildNode(DrawTextBoxElement.class, nextFrame);
+				return Textbox.getInstanceof(nextbox);
+			}
+			return null;
+		}
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Control.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Control.java
new file mode 100644
index 0000000..1ecf1c2
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Control.java
@@ -0,0 +1,286 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.draw;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.simple.Component;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.style.StyleTypeDefinitions;

+import org.w3c.dom.DOMException;

+

+/**

+ * This class represents control object, a shape that is linked to a control

+ * inside an form. It provides methods to get/set control properties, content,

+ * and styles.

+ * 

+ * @since 0.8

+ */

+public class Control extends Component {

+	private DrawControlElement mElement;

+	private OdfElement containerElement;

+	private ControlStyleHandler mStyleHandler;

+

+	public Control(DrawControlElement element) {

+		mElement = element;

+		containerElement = (OdfElement) element.getParentNode();

+	}

+

+	/**

+	 * Get the container element which contains this control.

+	 * 

+	 * @return the container element.

+	 */

+	public OdfElement getContainerElement() {

+		return containerElement;

+	}

+

+	/**

+	 * Get the instance of DrawControlElement which represents this control.

+	 * 

+	 * @return the instance of DrawControlElement

+	 */

+	public DrawControlElement getOdfElement() {

+		return mElement;

+	}

+

+	/**

+	 * Create an instance of control and and append it at the end of a container

+	 * element.

+	 * 

+	 * @param container

+	 *            - the container element

+	 * @return a control instance

+	 */

+	public static Control newDrawControl(ControlContainer container) {

+		OdfElement parent = container.getDrawControlContainerElement();

+		OdfFileDom ownerDom = (OdfFileDom) parent.getOwnerDocument();

+		DrawControlElement element = ownerDom

+				.newOdfElement(DrawControlElement.class);

+		parent.appendChild(element);

+		Control control = new Control(element);

+		Component.registerComponent(control, element);

+		return control;

+	}

+

+	/**

+	 * Get an instance of control according to a DrawControlElement.

+	 * 

+	 * @param element

+	 *            - an instance of DrawControlElement

+	 * @return an instance of DrawControlElement

+	 */

+	public static Control getInstanceof(DrawControlElement element) {

+		Control control = null;

+		control = (Control) Component.getComponentByElement(element);

+		if (control != null)

+			return control;

+

+		control = new Control(element);

+		Component.registerComponent(control, element);

+		return control;

+	}

+

+	/**

+	 * Remove the shape control from the container.

+	 * <p>

+	 * The resource is removed if it's only used by this object.

+	 * 

+	 * @return true if the shape control is successfully removed; false if

+	 *         otherwise.

+	 */

+	public boolean remove() {

+		try {

+			Document mOwnerDocument = (Document) ((OdfFileDom) mElement

+					.getOwnerDocument()).getDocument();

+			mOwnerDocument.removeElementLinkedResource(getOdfElement());

+			containerElement.removeChild(mElement);

+			return true;

+		} catch (DOMException exception) {

+			Logger.getLogger(Control.class.getName()).log(Level.WARNING,

+					exception.getMessage());

+			return false;

+		}

+	}

+

+	/**

+	 * Return the style handler for this control

+	 * 

+	 * @return the style handler

+	 */

+	public ControlStyleHandler getStyleHandler() {

+		if (mStyleHandler == null)

+			mStyleHandler = new ControlStyleHandler(this);

+		return mStyleHandler;

+	}

+

+	/**

+	 * Set a control within a form that is linked to this control shape by its

+	 * ID.

+	 * 

+	 * @param formControlId

+	 *            - id of a form control

+	 */

+	public void setControl(String formControlId) {

+		mElement.setDrawControlAttribute(formControlId);

+	}

+

+	/**

+	 * Set how a form control is bound to a text document. Default position

+	 * relative and alignment will be set.

+	 * 

+	 * <p>

+	 * If the document is not text document, nothing will happen.

+	 * 

+	 * @param achorType

+	 *            - the point at which a form control is bound to a text

+	 *            document

+	 */

+	public void setAchorType(StyleTypeDefinitions.AnchorType achorType) {

+		this.getStyleHandler().setAchorType(achorType);

+	}

+

+	/**

+	 * Set the rectangle used by this control

+	 * 

+	 * @param rectangle

+	 *            - the rectangle used by this control

+	 */

+	public void setRectangle(FrameRectangle rectangle) {

+		if (rectangle.getWidth() > 0)

+			mElement.setSvgWidthAttribute(rectangle.getWidthDesc());

+		if (rectangle.getHeight() > 0)

+			mElement.setSvgHeightAttribute(rectangle.getHeigthDesc());

+		if (rectangle.getX() > 0)

+			mElement.setSvgXAttribute(rectangle.getXDesc());

+		if (rectangle.getY() > 0)

+			mElement.setSvgYAttribute(rectangle.getYDesc());

+	}

+

+	/**

+	 * Return the rectangle used by this control

+	 * 

+	 * @return - the rectangle used by this control

+	 */

+	public FrameRectangle getRectangle() {

+		try {

+			FrameRectangle rectange = new FrameRectangle(mElement

+					.getSvgXAttribute(), mElement.getSvgYAttribute(), mElement

+					.getSvgWidthAttribute(), mElement.getSvgHeightAttribute());

+			return rectange;

+		} catch (Exception e) {

+			Logger.getLogger(Frame.class.getName()).log(Level.FINE,

+					e.getMessage(), e);

+			return null;

+		}

+	}

+

+	/**

+	 * Set the format string of the input control.

+	 * <p>

+	 * This function only works for date, time and percentage, otherwise an

+	 * {@link java.lang.IllegalArgumentException} will be thrown.

+	 * <p>

+	 * For value type percentage, the <code>formatStr</code> must follow the

+	 * encoding rule of {@link java.text.DecimalFormat

+	 * <code>java.text.DecimalFormat</code>}. For value type date and time, the

+	 * <code>formatStr</code> must follow the encoding rule of

+	 * {@link java.text.SimpleDateFormat

+	 * <code>java.text.SimpleDateFormat</code>}.

+	 * 

+	 * @param formatStr

+	 *            -the input need be formatted as this specified format string.

+	 * @param type

+	 *            - the type that need to be set

+	 * @throws IllegalArgumentException

+	 *             if <code>formatStr</code> is null or the value type is

+	 *             supported.

+	 * @see java.text.SimpleDateFormat

+	 * @see java.text.DecimalFormat

+	 */

+	public void setFormatString(String formatStr, String type) {

+		OfficeValueTypeAttribute.Value typeValue = null;

+		typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);

+		if (typeValue == OfficeValueTypeAttribute.Value.DATE) {

+			OdfNumberDateStyle dateStyle = new OdfNumberDateStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniqueDateStyleName(), null);

+			dateStyle.setNumberLanguageAttribute("en");

+			dateStyle.setNumberCountryAttribute("US");

+			mElement.getAutomaticStyles().appendChild(dateStyle);

+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());

+		} else if (typeValue == OfficeValueTypeAttribute.Value.TIME) {

+			OdfNumberTimeStyle timeStyle = new OdfNumberTimeStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniqueDateStyleName());

+			mElement.getAutomaticStyles().appendChild(timeStyle);

+			setDataDisplayStyleName(timeStyle.getStyleNameAttribute());

+		} else if (typeValue == OfficeValueTypeAttribute.Value.PERCENTAGE) {

+			OdfNumberPercentageStyle dateStyle = new OdfNumberPercentageStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniquePercentageStyleName());

+			mElement.getAutomaticStyles().appendChild(dateStyle);

+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());

+		} else {

+			throw new IllegalArgumentException("This function doesn't support "

+					+ type + "formatting.");

+		}

+	}

+

+	private String getUniqueDateStyleName() {

+		String unique_name;

+		OdfOfficeAutomaticStyles styles = mElement.getAutomaticStyles();

+		do {

+			unique_name = String.format("d%06x",

+					(int) (Math.random() * 0xffffff));

+		} while (styles.getDateStyle(unique_name) != null);

+		return unique_name;

+	}

+

+	private void setDataDisplayStyleName(String name) {

+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForWrite();

+		if (styleElement != null) {

+			styleElement.setOdfAttributeValue(OdfName.newName(

+					OdfDocumentNamespace.STYLE, "data-style-name"), name);

+		}

+	}

+

+	private String getUniquePercentageStyleName() {

+		String unique_name;

+		OdfOfficeAutomaticStyles styles = mElement.getAutomaticStyles();

+		do {

+			unique_name = String.format("p%06x",

+					(int) (Math.random() * 0xffffff));

+		} while (styles.getDateStyle(unique_name) != null);

+		return unique_name;

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/ControlContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/ControlContainer.java
new file mode 100644
index 0000000..ea6c561
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/ControlContainer.java
@@ -0,0 +1,45 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.draw;

+

+import org.odftoolkit.odfdom.pkg.OdfElement;

+

+/**

+ * ControlContainer is a container which maintains Control(s) as element(s).

+ * 

+ * @since 0.8

+ */

+public interface ControlContainer {

+	/**

+	 * Create an instance of control and and append it at the end of this

+	 * container.

+	 * 

+	 * @return a control instance

+	 */

+	public Control createDrawControl();

+

+	/**

+	 * Get the ODF element which can have DrawControlElement as child element

+	 * directly.

+	 * 

+	 * @return - an ODF element which can have control as child

+	 */

+	public OdfElement getDrawControlContainerElement();

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/ControlStyleHandler.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/ControlStyleHandler.java
new file mode 100644
index 0000000..284a492
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/ControlStyleHandler.java
@@ -0,0 +1,112 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.draw;

+

+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.style.DefaultStyleHandler;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+

+/**

+ * This class provides functions to handle the style of a form control.

+ * 

+ * @since 0.8

+ */

+public class ControlStyleHandler extends DefaultStyleHandler {

+

+	private Control mControl;

+

+	public ControlStyleHandler(Control control) {

+		super(control.getOdfElement());

+		mControl = control;

+	}

+

+	/**

+	 * Set how a form control is bound to a text document. Default position

+	 * relative and alignment will be set.

+	 * 

+	 * <p>

+	 * If the document is not text document, nothing will happen.

+	 * 

+	 * @param achorType

+	 *            - the point at which a form control is bound to a text

+	 *            document

+	 */

+	public void setAchorType(StyleTypeDefinitions.AnchorType achorType) {

+		if (!mDocument.getMediaTypeString().equals(

+				Document.OdfMediaType.TEXT.getMediaTypeString())

+				&& !mDocument.getMediaTypeString().equals(

+						Document.OdfMediaType.TEXT_TEMPLATE

+								.getMediaTypeString()))

+			return;

+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();

+

+		DrawControlElement controlElement = (DrawControlElement) mOdfElement;

+		controlElement.setTextAnchorTypeAttribute(achorType.toString());

+

+		// set default relative

+		switch (achorType) {

+		case AS_CHARACTER:

+			graphicPropertiesForWrite

+					.setVerticalRelative(VerticalRelative.BASELINE);

+			graphicPropertiesForWrite

+					.setVerticalPosition(FrameVerticalPosition.TOP);

+			break;

+		case TO_CHARACTER:

+			graphicPropertiesForWrite

+					.setVerticalRelative(VerticalRelative.PARAGRAPH);

+			graphicPropertiesForWrite

+					.setVerticalPosition(FrameVerticalPosition.TOP);

+			graphicPropertiesForWrite

+					.setHorizontalRelative(HorizontalRelative.PARAGRAPH);

+			graphicPropertiesForWrite

+					.setHorizontalPosition(FrameHorizontalPosition.CENTER);

+			break;

+		case TO_PAGE:

+			controlElement.setTextAnchorPageNumberAttribute(Integer.valueOf(1));

+			graphicPropertiesForWrite

+					.setVerticalRelative(VerticalRelative.PAGE);

+			graphicPropertiesForWrite

+					.setVerticalPosition(FrameVerticalPosition.FROMTOP);

+			graphicPropertiesForWrite

+					.setHorizontalRelative(HorizontalRelative.PARAGRAPH);

+			graphicPropertiesForWrite

+					.setHorizontalPosition(FrameHorizontalPosition.FROMLEFT);

+			break;

+		case TO_PARAGRAPH:

+			graphicPropertiesForWrite

+					.setVerticalRelative(VerticalRelative.PARAGRAPH);

+			graphicPropertiesForWrite

+					.setVerticalPosition(FrameVerticalPosition.TOP);

+			graphicPropertiesForWrite

+					.setHorizontalRelative(HorizontalRelative.PARAGRAPH);

+			graphicPropertiesForWrite

+					.setHorizontalPosition(FrameHorizontalPosition.CENTER);

+			break;

+		case TO_FRAME:

+			break;

+		}

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Frame.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Frame.java
new file mode 100644
index 0000000..216902d
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Frame.java
@@ -0,0 +1,377 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.draw.DrawAElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeImageElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgDescElement;
+import org.odftoolkit.odfdom.dom.element.svg.SvgTitleElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class presents frame object. It provides method to get/set frame
+ * properties, content, and and styles. A frame is a container for enhanced
+ * content like text boxes, images or objects. A frame may contain multiple
+ * renditions of content.
+ * 
+ * @since 0.5
+ */
+public class Frame extends Component {
+
+	/**
+	 * Attributes:
+	 * 
+	 * draw:caption-id 19.115, draw:class-names 19.120, draw:copy-of 19.126,
+	 * draw:id 19.187.3, draw:layer 19.189, draw:name 19.197.10, draw:style-name
+	 * 19.219.13, draw:text-style-name 19.227, draw:transform 19.228,
+	 * draw:z-index 19.231, presentation:class 19.389, presentation:class-names
+	 * 19.390, presentation:placeholder 19.407, presentation:style-name 19.422,
+	 * presentation:user-transformed 19.427, style:rel-height 19.509,
+	 * style:rel-width 19.510.2, svg:height 19.539.8, svg:width 19.571.10, svg:x
+	 * 19.573.5, svg:y 19.577.5, table:end-cell-address 19.627, table:end-x
+	 * 19.632, table:end-y 19.633, table:table-background 19.728,
+	 * text:anchor-page-number 19.753, text:anchor-type 19.754 xml:id 19.914.
+	 */
+	protected DrawFrameElement mElement;
+	protected Document mOwnerDocument;
+	protected FrameContainer mFrameContainer;
+	protected FrameStyleHandler mStyleHandler;
+
+	protected Frame(DrawFrameElement element) {
+		mElement = element;
+		mOwnerDocument = (Document) ((OdfFileDom) mElement.getOwnerDocument()).getDocument();
+		mFrameContainer = null;
+	}
+
+	/**
+	 * Get a frame instance by an instance of <code>DrawFrameElement</code>.
+	 * 
+	 * @param element
+	 *            - the instance of DrawFrameElement
+	 * @return an instance of frame
+	 */
+	protected static Frame getInstanceof(DrawFrameElement element) {
+		Frame frame = null;
+		frame = (Frame) Component.getComponentByElement(element);
+		if (frame != null)
+			return frame;
+
+		frame = new Frame(element);
+		// Component.registerComponent(frame, element);
+		return frame;
+	}
+
+	/**
+	 * Create an instance of frame
+	 * <p>
+	 * The frame will be added at the end of this container.
+	 * 
+	 * @param container
+	 *            - the frame container that contains this frame.
+	 */
+	protected static Frame newFrame(FrameContainer container) {
+		Frame frame = null;
+		OdfElement parent = container.getFrameContainerElement();
+		OdfFileDom ownerDom = (OdfFileDom) parent.getOwnerDocument();
+		DrawFrameElement fElement = ownerDom.newOdfElement(DrawFrameElement.class);
+		parent.appendChild(fElement);
+		frame = new Frame(fElement);
+		frame.mFrameContainer = container;
+		// Component.registerComponent(frame, fElement);
+
+		return frame;
+	}
+
+	/**
+	 * Set the name of this frame.
+	 * 
+	 * @param name
+	 *            - the name of the frame
+	 */
+	public void setName(String name) {
+		mElement.setDrawNameAttribute(name);
+	}
+
+	/**
+	 * Get the name of this frame.
+	 * 
+	 * @return the name of the frame
+	 */
+	public String getName() {
+		return mElement.getDrawNameAttribute();
+	}
+
+	// /**
+	// * Get the style handler of this frame.
+	// *
+	// * @return the style handler of this frame
+	// */
+	// public FrameStyleHandler getFrameStyleHandler() {
+	// return null;
+	// }
+	//
+	// /**
+	// * Get the paragraph style handler of this frame.
+	// *
+	// * @return the paragraph style handler of this frame
+	// */
+	// public DefaultStyleHandler getParagraphStyleHandler() {
+	// return null;
+	// }
+
+	/**
+	 * Get the instance of <code>DrawFrameElement</code> which represents this
+	 * frame.
+	 * 
+	 * @return the instance of <code>DrawFrameElement</code>
+	 */
+	public OdfElement getOdfElement() {
+		return mElement;
+	}
+
+	/**
+	 * Get the instance of <code>DrawFrameElement</code> which represents this
+	 * frame.
+	 * 
+	 * @return the instance of <code>DrawFrameElement</code>
+	 */
+	public DrawFrameElement getDrawFrameElement() {
+		return mElement;
+	}
+
+	/**
+	 * Set the rectangle used by this frame
+	 * 
+	 * @param rectangle
+	 *            - the rectangle used by this frame
+	 */
+	public void setRectangle(FrameRectangle rectangle) {
+		String linemeasure = rectangle.getLinearMeasure().toString();
+		if (rectangle.getWidth() > 0)
+			mElement.setSvgWidthAttribute(rectangle.getWidth() + linemeasure);
+		if (rectangle.getHeight() > 0)
+			mElement.setSvgHeightAttribute(rectangle.getHeight() + linemeasure);
+		if (rectangle.getX() > 0)
+			mElement.setSvgXAttribute(rectangle.getX() + linemeasure);
+		if (rectangle.getY() > 0)
+			mElement.setSvgYAttribute(rectangle.getY() + linemeasure);
+	}
+
+	/**
+	 * Return the rectangle used by this frame
+	 * 
+	 * @return - the rectangle
+	 */
+	public FrameRectangle getRectangle() {
+		try {
+			FrameRectangle rectange = new FrameRectangle(mElement.getSvgXAttribute(), mElement.getSvgYAttribute(),
+					mElement.getSvgWidthAttribute(), mElement.getSvgHeightAttribute());
+			return rectange;
+		} catch (Exception e) {
+			Logger.getLogger(Frame.class.getName()).log(Level.FINE, e.getMessage(), e);
+			return null;
+		}
+	}
+
+	/**
+	 * Set the title of this text box
+	 * 
+	 * @param title
+	 *            - the title of this text box
+	 */
+	public void setTitle(String title) {
+		SvgTitleElement titleElement = OdfElement.findFirstChildNode(SvgTitleElement.class, mElement);
+		if (titleElement == null)
+			titleElement = mElement.newSvgTitleElement();
+		titleElement.setTextContent(title);
+	}
+
+	/**
+	 * Get the title of this text box
+	 * 
+	 * @return - the title of this text box
+	 */
+	public String getTitle() {
+		SvgTitleElement titleElement = OdfElement.findFirstChildNode(SvgTitleElement.class, mElement);
+		if (titleElement == null)
+			return null;
+		else
+			return titleElement.getTextContent();
+	}
+
+	/**
+	 * Get the description of this text box
+	 * 
+	 * @return - the description of this text box
+	 */
+	public String getDesciption() {
+		SvgDescElement descElement = OdfElement.findFirstChildNode(SvgDescElement.class, mElement);
+		if (descElement == null)
+			return null;
+		else
+			return descElement.getTextContent();
+	}
+
+	/**
+	 * Set the description of this text box.
+	 * 
+	 * @param description
+	 *            - the description of this text box
+	 */
+	public void setDescription(String description) {
+		SvgDescElement descElement = OdfElement.findFirstChildNode(SvgDescElement.class, mElement);
+		if (descElement == null)
+			descElement = mElement.newSvgDescElement();
+		descElement.setTextContent(description);
+	}
+	
+	/**
+	 * Add a hypertext reference to this frame.
+	 * 
+	 * @param linkto
+	 *            the hyperlink
+	 * @since 0.6.5
+	 * 
+	 */
+	public void setHyperlink(URI linkto) {
+		OdfElement thisFrame = getOdfElement();
+		OdfElement parent = (OdfElement) thisFrame.getParentNode();
+		// if this frame has a hyperlink setting
+		if (parent instanceof DrawAElement) {
+			((DrawAElement) parent).setXlinkHrefAttribute(linkto.toString());
+			return;
+		}
+		// if this frame has not hyperlink setting
+		Node brother = thisFrame.getNextSibling();
+		if (parent instanceof OfficeImageElement)
+			return;
+		try {
+			DrawAElement aElement = mOwnerDocument.getContentDom()
+					.newOdfElement(DrawAElement.class);
+			aElement.setXlinkHrefAttribute(linkto.toString());
+			aElement.setXlinkTypeAttribute("simple");
+			parent.removeChild(thisFrame);
+			aElement.appendChild(thisFrame);
+			if (brother == null)
+				parent.appendChild(aElement);
+			parent.insertBefore(aElement, brother);
+		} catch (Exception e) {
+			Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	/**
+	 * Return the URI of hypertext reference if exists, or else, return null.
+	 * 
+	 * @return the URI of hyperlink if exists
+	 */
+	public URI getHyperlink() {
+		OdfElement thisFrame = getOdfElement();
+		OdfElement parent = (OdfElement) thisFrame.getParentNode();
+		// if this frame has a hyperlink setting
+		if (parent instanceof DrawAElement) {
+
+			return URI.create(((DrawAElement) parent).getXlinkHrefAttribute());
+		}
+		return null;
+	}
+
+	/**
+	 * Return style handler for this frame
+	 * 
+	 * @return the style handler
+	 */
+	public FrameStyleHandler getStyleHandler() {
+		if (mStyleHandler == null)
+			mStyleHandler = new FrameStyleHandler(this);
+		return mStyleHandler;
+	}
+
+	/**
+	 * Set the background color of this frame.
+	 * <p>
+	 * If the parameter is null, there will be no background color defined for
+	 * this frame. The old setting of background color will be removed.
+	 * 
+	 * @param color
+	 *            - the background color to be set
+	 */
+	public void setBackgroundColor(Color color) {
+		getStyleHandler().setBackgroundColor(color);
+	}
+
+	private void removeContent() {
+		NodeList nodeList = mElement.getChildNodes();
+		int i;
+		for (i = 0; i < nodeList.getLength(); i++) {
+			Node node;
+			node = nodeList.item(i);
+			if (node.getNodeType() == Node.TEXT_NODE)
+				mElement.removeChild(node);
+			else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				mElement.removeChild(node);
+			}
+		}
+		// mElement.removeAttributeNS(OdfDocumentNamespace.PRESENTATION.getUri(),
+		// "class");
+		mElement.removeAttributeNS(OdfDocumentNamespace.PRESENTATION.getUri(), "placeholder");
+	}
+
+	/**
+	 * Add a image to the frame after all the contents get removed.
+	 * 
+	 * @since 0.5.5
+	 */
+	public Image setImage(URI uri) {
+		removeContent();
+		Image image = Image.newImage(this, uri);
+		return image;
+	}
+
+	// /**
+	// * Set the frame to be transparent, with none border and none fill color.
+	// */
+	// public void setTransparent() {
+	// }
+	// /**
+	// * Set the
+	// */
+	// public void setFitWeightToText()
+	// {
+	//		
+	// }
+	//	
+	// public void setFitHeightToText()
+	// {
+	//		
+	// }
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameContainer.java
new file mode 100644
index 0000000..e4a8fcb
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameContainer.java
@@ -0,0 +1,39 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+
+/**
+ * FrameContainer is a container which maintains Frame(s) as element(s).
+ * 
+ * @since 0.5
+ */
+public interface FrameContainer {
+
+	/**
+	 * Get the ODF element which can have <draw:frame> as child element directly
+	 * according to ODF specification. This Element will help to find the
+	 * position to insert a new draw:frame element.
+	 * 
+	 * @return the parent of draw:frame
+	 */
+	OdfElement getFrameContainerElement();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameRectangle.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameRectangle.java
new file mode 100644
index 0000000..9e26d6e
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameRectangle.java
@@ -0,0 +1,291 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+
+/**
+ * This class represents a rectangle used by a frame object.
+ * <p>
+ * A Rectangle specifies an area in a coordinate space that is enclosed by the
+ * Rectangle object's top-left point (x, y) in the coordinate space, its width,
+ * and its height.
+ * 
+ * @since 0.5
+ * 
+ */
+public class FrameRectangle {
+
+	/**
+	 * the x-axis coordinate
+	 */
+	private double x;
+	/**
+	 * the y-axis coordinate
+	 */
+	private double y;
+	/**
+	 * The width
+	 */
+	private double width;
+	/**
+	 * The height
+	 */
+	private double height;
+	private StyleTypeDefinitions.SupportedLinearMeasure linearMeasure;
+
+	private static final String WidthFormat = "#.####";
+	private DecimalFormat formater = new DecimalFormat(WidthFormat, new DecimalFormatSymbols(Locale.US));
+
+	/**
+	 * @return the x-axis coordinate
+	 */
+	public double getX() {
+		return x;
+	}
+
+	/**
+	 * @param x
+	 *            - the x-axis coordinate to set
+	 */
+	public void setX(double x) {
+		this.x = x;
+	}
+
+	/**
+	 * @return the y-axis coordinate
+	 */
+	public double getY() {
+		return y;
+	}
+
+	/**
+	 * @param y
+	 *            - the y-axis coordinate to set
+	 */
+	public void setY(double y) {
+		this.y = y;
+	}
+
+	/**
+	 * @return the width
+	 */
+	public double getWidth() {
+		return width;
+	}
+
+	/**
+	 * @param width
+	 *            - the width to set
+	 */
+	public void setWidth(double width) {
+		this.width = width;
+	}
+
+	/**
+	 * @return the height
+	 */
+	public double getHeight() {
+		return height;
+	}
+
+	/**
+	 * @param height
+	 *            - the height to set
+	 */
+	public void setHeight(double height) {
+		this.height = height;
+	}
+
+	/**
+	 * @return the line measurement
+	 */
+	public StyleTypeDefinitions.SupportedLinearMeasure getLinearMeasure() {
+		return linearMeasure;
+	}
+
+	/**
+	 * @param newLinearMeasure
+	 *            the line measurement to set
+	 */
+	public void setLinearMeasure(StyleTypeDefinitions.SupportedLinearMeasure newLinearMeasure) {
+		if (this.linearMeasure != linearMeasure) {
+			x = newLinearMeasure.convert(x, linearMeasure);
+			y = newLinearMeasure.convert(y, linearMeasure);
+			width = newLinearMeasure.convert(width, linearMeasure);
+			height = newLinearMeasure.convert(height, linearMeasure);
+		}
+		this.linearMeasure = newLinearMeasure;
+	}
+
+	/**
+	 * Create an instance of FrameRectangle with the top-left point (x, y),
+	 * width, height and the measurement
+	 * 
+	 * @param x
+	 *            - the x-axis coordinate
+	 * @param y
+	 *            - the y-axis coordinate
+	 * @param width
+	 *            - the width
+	 * @param height
+	 *            - the height
+	 * @param linearMeasure
+	 *            - the measurement
+	 */
+	public FrameRectangle(double x, double y, double width, double height,
+			StyleTypeDefinitions.SupportedLinearMeasure linearMeasure) {
+		this.x = x;
+		this.y = y;
+		this.width = width;
+		this.height = height;
+		this.linearMeasure = linearMeasure;
+	}
+
+	/**
+	 * Create an instance of FrameRectangle with the descriptions of top-left
+	 * point (x, y), width and height.
+	 * 
+	 * @param xDesc
+	 *            - the x-axis coordinate with measurement
+	 * @param yDesc
+	 *            - the y-axis coordinate with measurement
+	 * @param widthDesc
+	 *            - the width with measurement
+	 * @param heightDesc
+	 *            - the height with measurement
+	 */
+	public FrameRectangle(String xDesc, String yDesc, String widthDesc, String heightDesc) {
+		StyleTypeDefinitions.SupportedLinearMeasure tempXMeasure, tempYMeasure, tempWMeasure, tempHMeasure;
+
+		// get the basic information of width and measurement
+		if (xDesc == null || xDesc.length() == 0) {
+			x = 0;
+			tempXMeasure = StyleTypeDefinitions.SupportedLinearMeasure.CM;
+		} else {
+			x = getLineWidth(xDesc);
+			tempXMeasure = getLineMeasure(xDesc);
+		}
+
+		if (yDesc == null || yDesc.length() == 0) {
+			y = 0;
+			tempYMeasure = StyleTypeDefinitions.SupportedLinearMeasure.CM;
+		} else {
+			y = getLineWidth(yDesc);
+			tempYMeasure = getLineMeasure(yDesc);
+		}
+
+		if (widthDesc == null || widthDesc.length() == 0) {
+			width = 0;
+			tempWMeasure = StyleTypeDefinitions.SupportedLinearMeasure.CM;
+		} else {
+			width = getLineWidth(widthDesc);
+			tempWMeasure = getLineMeasure(widthDesc);
+		}
+
+		if (heightDesc == null || heightDesc.length() == 0) {
+			height = 0;
+			tempHMeasure = StyleTypeDefinitions.SupportedLinearMeasure.CM;
+		} else {
+			height = getLineWidth(heightDesc);
+			tempHMeasure = getLineMeasure(heightDesc);
+		}
+
+		// if all the measurement are empty, an exception will be thrown.
+		if (tempXMeasure == null && tempYMeasure == null && tempWMeasure == null && tempHMeasure == null)
+			throw new RuntimeException(xDesc + "," + yDesc + "," + widthDesc + "," + heightDesc + ","
+					+ " are not valid line description!");
+
+		// get the first unempty measurement definition
+		if (tempXMeasure != null)
+			linearMeasure = tempXMeasure;
+		else if (tempYMeasure != null)
+			linearMeasure = tempYMeasure;
+		else if (tempWMeasure != null)
+			linearMeasure = tempWMeasure;
+		else if (tempHMeasure != null)
+			linearMeasure = tempHMeasure;
+
+		// verify if the measurement is same, or else, change the value
+		if (tempXMeasure != null && tempXMeasure != linearMeasure)
+			x = linearMeasure.convert(x, tempXMeasure);
+		if (tempYMeasure != null && tempYMeasure != linearMeasure)
+			y = linearMeasure.convert(y, tempYMeasure);
+		if (tempWMeasure != null && tempWMeasure != linearMeasure)
+			width = linearMeasure.convert(width, tempWMeasure);
+		if (tempHMeasure != null && tempHMeasure != linearMeasure)
+			height = linearMeasure.convert(height, tempHMeasure);
+	}
+
+	/**
+	 * Return the x-axis coordinate with measurement
+	 * 
+	 * @return the x-axis coordinate with measurement
+	 */
+	public String getXDesc() {
+		return formater.format(x) + linearMeasure.toString();
+	}
+
+	/**
+	 * Return the y-axis coordinate with measurement
+	 * 
+	 * @return the y-axis coordinate with measurement
+	 */
+	public String getYDesc() {
+		return formater.format(y) + linearMeasure.toString();
+	}
+
+	/**
+	 * Return the width with measurement
+	 * 
+	 * @return the width with measurement
+	 */
+	public String getWidthDesc() {
+		return formater.format(width) + linearMeasure.toString();
+	}
+
+	/**
+	 * Return the height with measurement
+	 * 
+	 * @return the height with measurement
+	 */
+	public String getHeigthDesc() {
+		return formater.format(height) + linearMeasure.toString();
+	}
+
+	private double getLineWidth(String width) {
+		String floatValue = width.substring(0, width.length() - 2);
+		return Double.parseDouble(floatValue);
+	}
+
+	private StyleTypeDefinitions.SupportedLinearMeasure getLineMeasure(String width) {
+		for (SupportedLinearMeasure aIter : SupportedLinearMeasure.values()) {
+			if (width.endsWith(aIter.toString())) {
+				return aIter;
+			}
+		}
+		return null;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameStyleHandler.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameStyleHandler.java
new file mode 100644
index 0000000..36876fc
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/FrameStyleHandler.java
@@ -0,0 +1,258 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.style.Border;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.odftoolkit.simple.style.GraphicProperties;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.OdfDrawFill;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;
+
+/**
+ * This class provides functions to handle the style of a frame.
+ * 
+ * @since 0.5
+ */
+public class FrameStyleHandler extends DefaultStyleHandler {
+
+	private Frame mFrame;
+
+	public FrameStyleHandler(Frame frame) {
+		super(frame.getDrawFrameElement());
+		mFrame = frame;
+	}
+
+	/**
+	 * Set the border style of this cell. You can set the border style for a
+	 * single border or a border collection.
+	 * <p>
+	 * The second parameter <code>bordersType</code> describes which borders you
+	 * want to apply the style to, e.g. up border, bottom border, left border,
+	 * right border, diagonal lines or four borders.
+	 * 
+	 * @param border
+	 *            - the border style description
+	 * @param bordersType
+	 *            - the type of the borders
+	 */
+	public void setBorders(Border border, CellBordersType bordersType) {
+		getGraphicPropertiesForWrite().setBorders(bordersType, border);
+	}
+
+	/**
+	 * Set the style of stroke.
+	 * <p>
+	 * There are three types of stroke: none, solid and dash.
+	 * <p>
+	 * If the stroke is NONE, there is no stroke around the frame.
+	 * <p>
+	 * If the stroke is SOLID, there is solid line around the frame. color and
+	 * width need to be specified.
+	 * <p>
+	 * If the stroke is DASH, there is dash line around the frame. color, width
+	 * and the style name of dash line need to be specified.
+	 * 
+	 * @param stroke
+	 *            - the stroke type
+	 * @param color
+	 *            - the color of the stroke
+	 * @param widthDesc
+	 *            - the width description of the stroke, e.g. "0.01in"
+	 * @param dashStyleName
+	 *            - the dash style name
+	 * @see org.odftoolkit.simple.style.StyleTypeDefinitions.OdfDrawStroke
+	 */
+	public void setStroke(StyleTypeDefinitions.OdfDrawStroke stroke, Color color, String widthDesc, String dashStyleName) {
+		getGraphicPropertiesForWrite().setStroke(stroke, color, widthDesc, dashStyleName);
+	}
+
+	/**
+	 * Set the background color of this frame.
+	 * <p>
+	 * If the parameter is null, there will be no background color defined for
+	 * this frame. The old setting of background color will be removed.
+	 * 
+	 * @param color
+	 *            - the background color to be set
+	 */
+	public void setBackgroundColor(Color color) {
+		if (color == null)
+			getGraphicPropertiesForWrite().setFill(OdfDrawFill.NONE, null);
+		else
+			getGraphicPropertiesForWrite().setFill(OdfDrawFill.SOLID, color);
+
+	}
+
+	/**
+	 * Set whether the content of a frame is displayed in the background or
+	 * foreground. If it's displayed in the background, the content wouldn't be
+	 * selected or moved.
+	 * 
+	 * @param isBackgroundFrame
+	 *            If <code>true</code>, the frame is displayed in the
+	 *            background.
+	 * @since 0.5.5
+	 */
+	public void setBackgroundFrame(boolean isBackgroundFrame) {
+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();
+		graphicPropertiesForWrite.setStyleRunThrough(isBackgroundFrame);
+	}
+	
+	/**
+	 * Set how a frame is bound to a text document. Default position relative and alignment will be set.
+	 * 
+	 * <p>If the document is not text document, nothing will happen.
+	 * @param achorType - the point at which a frame is bound to a text document
+	 */
+	public void setAchorType(StyleTypeDefinitions.AnchorType achorType)
+	{
+		if (!mDocument.getMediaTypeString().equals(Document.OdfMediaType.TEXT.getMediaTypeString()) &&
+				!mDocument.getMediaTypeString().equals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString()))
+			return;
+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();
+
+		DrawFrameElement frameElement = (DrawFrameElement)mOdfElement;
+		frameElement.setTextAnchorTypeAttribute(achorType.toString());
+		
+		//set default relative
+		switch(achorType)
+		{
+		case AS_CHARACTER:
+			graphicPropertiesForWrite.setVerticalRelative(VerticalRelative.BASELINE);
+			graphicPropertiesForWrite.setVerticalPosition(FrameVerticalPosition.TOP);
+			break;
+		case TO_CHARACTER:
+			graphicPropertiesForWrite.setVerticalRelative(VerticalRelative.PARAGRAPH);
+			graphicPropertiesForWrite.setVerticalPosition(FrameVerticalPosition.TOP);
+			graphicPropertiesForWrite.setHorizontalRelative(HorizontalRelative.PARAGRAPH);
+			graphicPropertiesForWrite.setHorizontalPosition(FrameHorizontalPosition.CENTER);
+			break;
+		case TO_PAGE:
+			graphicPropertiesForWrite.setVerticalRelative(VerticalRelative.PAGE);
+			graphicPropertiesForWrite.setVerticalPosition(FrameVerticalPosition.TOP);
+			graphicPropertiesForWrite.setHorizontalRelative(HorizontalRelative.PAGE);
+			graphicPropertiesForWrite.setHorizontalPosition(FrameHorizontalPosition.CENTER);
+			break;
+		case TO_PARAGRAPH:
+			graphicPropertiesForWrite.setVerticalRelative(VerticalRelative.PARAGRAPH);
+			graphicPropertiesForWrite.setVerticalPosition(FrameVerticalPosition.TOP);
+			graphicPropertiesForWrite.setHorizontalRelative(HorizontalRelative.PARAGRAPH);
+			graphicPropertiesForWrite.setHorizontalPosition(FrameHorizontalPosition.CENTER);
+			break;
+		case TO_FRAME:
+			break;
+		}
+	}
+	
+	/**
+	 * Set the horizontal position
+	 * 
+	 * @param horizontalPos
+	 *            - the horizontal position
+	 */
+	public void setHorizontalPosition(FrameHorizontalPosition horizontalPos) {
+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();
+		graphicPropertiesForWrite.setHorizontalPosition(horizontalPos);
+	}
+	
+	/**
+	 * Set the horizontal relative
+	 * 
+	 * @param relative
+	 *            - the horizontal relative
+	 */
+	public void setHorizontalRelative(HorizontalRelative relative)
+	{
+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();
+		graphicPropertiesForWrite.setHorizontalRelative(relative);
+	}
+	
+	/**
+	 * Set the vertical relative
+	 * 
+	 * @param relative
+	 *            - the vertical relative
+	 */
+	public void setVerticalRelative(VerticalRelative relative)
+	{
+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();
+		graphicPropertiesForWrite.setVerticalRelative(relative);
+	}
+
+	/**
+	 * Set the vertical position
+	 * 
+	 * @param verticalPos
+	 *            - the vertical position
+	 */
+	public void setVerticalPosition(FrameVerticalPosition verticalPos) {
+		GraphicProperties graphicPropertiesForWrite = getGraphicPropertiesForWrite();
+		graphicPropertiesForWrite.setVerticalPosition(verticalPos);
+	}
+
+	/**
+	 * Return the horizontal position
+	 * 
+	 * @return the horizontal position
+	 */
+	public FrameHorizontalPosition getHorizontalPosition() {
+		GraphicProperties graphicPropertiesForRead = getGraphicPropertiesForRead();
+		return graphicPropertiesForRead.getHorizontalPosition();
+	}
+
+	/**
+	 * Return the vertical position
+	 * 
+	 * @return the vertical position
+	 */
+	public FrameVerticalPosition getVerticalPosition() {
+		GraphicProperties graphicPropertiesForRead = getGraphicPropertiesForRead();
+		return graphicPropertiesForRead.getVerticalPosition();
+	}
+	
+	/**
+	 * Return the vertical relative
+	 * @return the vertical relative
+	 */
+	public VerticalRelative getVerticalRelative()
+	{
+		GraphicProperties graphicPropertiesForRead = getGraphicPropertiesForRead();
+		return graphicPropertiesForRead.getVerticalRelative();
+	}
+	
+	/**
+	 * Return the horizontal relative
+	 * @return the horizontal relative
+	 */
+	public HorizontalRelative getHorizontalRelative()
+	{
+		GraphicProperties graphicPropertiesForRead = getGraphicPropertiesForRead();
+		return graphicPropertiesForRead.getHorizontalRelative();
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Image.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Image.java
new file mode 100644
index 0000000..555f797
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Image.java
@@ -0,0 +1,548 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.awt.image.BufferedImage;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.imageio.ImageIO;
+
+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.odfdom.type.AnyURI;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;
+import org.odftoolkit.simple.text.AbstractParagraphContainer;
+import org.odftoolkit.simple.text.Paragraph;
+import org.w3c.dom.DOMException;
+
+/**
+ * This class provides method to add/remove/get images.
+ * 
+ * @since 0.5.5
+ */
+public class Image extends Component {
+
+	private static final String SLASH = "/";
+	DrawImageElement mImageElement;
+	Frame mFrame;
+	URI mImageURI = null;
+	DrawFrameElement mElement;
+	Document mOwnerDocument;
+	FrameStyleHandler mStyleHandler;
+
+	private Image(DrawImageElement drawElement) {
+		mOwnerDocument = (Document) ((OdfFileDom) drawElement.getOwnerDocument()).getDocument();
+		mElement = (DrawFrameElement) drawElement.getParentNode();
+		if (mElement == null) {
+			Logger.getLogger(Image.class.getName()).log(Level.WARNING,
+					"The image has no parent frame. A new frame will be created as its parent");
+			OdfFileDom ownerDom = (OdfFileDom) drawElement.getOwnerDocument();
+			mElement = ownerDom.newOdfElement(DrawFrameElement.class);
+			mElement.appendChild(drawElement);
+		}
+		mFrame = Frame.getInstanceof(mElement);
+		mImageElement = drawElement;
+	}
+
+	/**
+	 * Get a image instance by an instance of <code>DrawImageElement</code>.
+	 * 
+	 * @param imageElement
+	 *            - the instance of DrawImageElement
+	 * @return an instance of image
+	 */
+	public static Image getInstanceof(DrawImageElement imageElement) {
+		if (imageElement == null)
+			return null;
+
+		Image image = null;
+		image = (Image) Component.getComponentByElement(imageElement);
+		if (image != null)
+			return image;
+
+		Image myImage = new Image(imageElement);
+		Component.registerComponent(myImage, imageElement);
+		return myImage;
+
+	}
+	
+	/**
+	 * Add a hypertext reference to this image.
+	 * 
+	 * @param linkto
+	 *            the hyperlink
+	 * @since 0.6.5
+	 * 
+	 */
+	public void setHyperlink(URI linkto) {
+		mFrame.setHyperlink(linkto);
+	}	
+	
+	/**
+	 * Return the URI of hypertext reference if exists, or else, return null.
+	 * 
+	 * @return the URI of hyperlink if exists
+	 */
+	public URI getHyperlink() {
+		return mFrame.getHyperlink();
+	}
+	
+
+	/**
+	 * Get the owner document of this image
+	 * 
+	 * @return the document who owns this image
+	 */
+	public Document getOwnerDocument() {
+		return mOwnerDocument;
+	}
+
+	/**
+	 * Return style handler for this frame
+	 * 
+	 * @return the style handler
+	 */
+	public FrameStyleHandler getStyleHandler() {
+		if (mStyleHandler == null)
+			mStyleHandler = new FrameStyleHandler(mFrame);
+		return mStyleHandler;
+	}
+
+	/**
+	 * Return the instance of "draw:image" element
+	 * 
+	 * @return the instance of "draw:image" element
+	 */
+	public DrawImageElement getOdfElement() {
+		return mImageElement;
+	}
+
+	/**
+	 * Return the frame who contains this image.
+	 * 
+	 * @return - the frame who contains this image
+	 */
+	public Frame getFrame() {
+		return mFrame;
+	}
+
+	/**
+	 * Create an image and append it at the end of a container element.
+	 * 
+	 * @param container
+	 *            - the frame container element
+	 * @param uri
+	 *            - the URI of the image
+	 * @return the instance of Image
+	 */
+	public static Image newImage(FrameContainer container, URI uri) {
+		Image mImage;
+
+		try {
+			OdfElement parent = container.getFrameContainerElement();
+			OdfFileDom ownerDom = (OdfFileDom) parent.getOwnerDocument();
+			DrawFrameElement fElement = ownerDom.newOdfElement(DrawFrameElement.class);
+			parent.appendChild(fElement);
+			DrawImageElement imageElement = fElement.newDrawImageElement();
+			// set uri and copy resource
+			String packagePath = insertImageResourceIntoPackage((OdfSchemaDocument) ownerDom.getDocument(), uri);
+			packagePath = packagePath.replaceFirst(ownerDom.getDocument().getDocumentPath(), "");
+			URI newURI = configureInsertedImage((OdfSchemaDocument) ownerDom.getDocument(), imageElement, packagePath,
+					false);
+
+			// create image object
+			mImage = new Image(imageElement);
+			mImage.mImageURI = newURI;
+			Component.registerComponent(mImage, imageElement);
+
+			// set default alignment
+			if (container instanceof Paragraph) {
+				mImage.getStyleHandler().setAchorType(AnchorType.TO_PARAGRAPH);
+			}
+
+			return mImage;
+
+		} catch (Exception e) {
+			Logger.getLogger(Image.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+
+		return null;
+	}
+
+	/**
+	 * Create an image and add it to a frame.
+	 * 
+	 * @param frame
+	 *            - the frame which contains this image
+	 * @param uri
+	 *            - the URI of the image
+	 * @return the instance of Image
+	 */
+	public static Image newImage(Frame frame, URI uri) {
+		Image mImage;
+
+		try {
+			DrawFrameElement fElement = (DrawFrameElement) frame.getDrawFrameElement();
+			OdfFileDom ownerDom = (OdfFileDom) fElement.getOwnerDocument();
+			DrawImageElement imageElement = fElement.newDrawImageElement();
+			// set uri and copy resource
+			String packagePath = insertImageResourceIntoPackage((OdfSchemaDocument) ownerDom.getDocument(), uri);
+			packagePath = packagePath.replaceFirst(ownerDom.getDocument().getDocumentPath(), "");
+			URI newURI = configureInsertedImage((OdfSchemaDocument) ownerDom.getDocument(), imageElement, packagePath,
+					true);
+
+			// create image object
+			mImage = new Image(imageElement);
+			mImage.mImageURI = newURI;
+			Component.registerComponent(mImage, imageElement);
+
+			// set default alignment
+			FrameContainer container = frame.mFrameContainer;
+			if (container instanceof Paragraph) {
+				mImage.getStyleHandler().setAchorType(AnchorType.TO_PARAGRAPH);
+			}
+
+			return mImage;
+
+		} catch (Exception e) {
+			Logger.getLogger(Image.class.getName()).severe(e.getMessage());
+		}
+		return null;
+	}
+
+	private static String insertImageResourceIntoPackage(OdfSchemaDocument mOdfSchemaDoc, URI imageUri)
+			throws Exception {
+		String imageRef = imageUri.toString();
+		String mediaType = OdfFileEntry.getMediaTypeString(imageRef);
+		String packagePath = getPackagePath(mOdfSchemaDoc, imageRef);
+		mOdfSchemaDoc.getPackage().insert(imageUri, packagePath, mediaType);
+		return packagePath;
+	}
+
+	/* Helper method */
+	public static String getPackagePath(OdfSchemaDocument mOdfSchemaDoc, String imageRef) {
+		if (imageRef.contains(SLASH)) {
+			imageRef = imageRef.substring(imageRef.lastIndexOf(SLASH) + 1, imageRef.length());
+		}
+		String packagePath = OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + imageRef;
+		return packagePath = mOdfSchemaDoc.getDocumentPath() + packagePath;
+	}
+
+	/* Helper method */
+	public static URI configureInsertedImage(OdfSchemaDocument mOdfSchemaDoc, DrawImageElement imageElement,
+			String packagePath, boolean isResetSize) throws Exception {
+		// Set path to image attribute
+		URI uri = new URI(AnyURI.encodePath(packagePath).toString());
+		imageElement.setXlinkHrefAttribute(AnyURI.decodePath(uri.toString()));
+		// Set mandatory attribute xlink:type
+		imageElement.setXlinkTypeAttribute("simple");
+		// A draw:image is always embedded in a draw:frame
+		InputStream is = mOdfSchemaDoc.getPackage().getInputStream(packagePath);
+		DrawFrameElement odfFrame = (DrawFrameElement) imageElement.getParentNode();
+		Frame aFrame = Frame.getInstanceof(odfFrame);
+		FrameRectangle oldRect = aFrame.getRectangle();
+		if (oldRect.getLinearMeasure() != StyleTypeDefinitions.SupportedLinearMeasure.CM)
+			oldRect.setLinearMeasure(StyleTypeDefinitions.SupportedLinearMeasure.CM);
+		if (odfFrame != null) {
+			BufferedImage image = ImageIO.read(is);
+			int height = image.getHeight(null);
+			int width = image.getWidth(null);
+			odfFrame.setSvgHeightAttribute(Length.mapToUnit(String.valueOf(height) + "px", Unit.CENTIMETER));
+			odfFrame.setSvgWidthAttribute(Length.mapToUnit(String.valueOf(width) + "px", Unit.CENTIMETER));
+			if (isResetSize) {
+				FrameRectangle newRect = aFrame.getRectangle();
+				newRect.setX(oldRect.getX()+(oldRect.getWidth()-newRect.getWidth())/2);
+				newRect.setY(oldRect.getY()+(oldRect.getHeight()-newRect.getHeight())/2);
+				aFrame.setRectangle(newRect);
+			}
+		}
+		return uri;
+	}
+
+	/**
+	 * Return an iterator of image.
+	 * 
+	 * @param container the frame container.
+	 * @return the image iterator.
+	 */
+	public static Iterator<Image> imageIterator(FrameContainer container) {
+		return new SimpleImageIterator(container);
+	}
+
+	/**
+	 * Remove the image from the document.
+	 * <p>
+	 * The resource is removed if it's only used by this object.
+	 * 
+	 * @return true if the image object is successfully removed; false if
+	 *         otherwise.
+	 */
+	public boolean remove() {
+		OdfElement containerElement = (OdfElement) mElement.getParentNode();
+		try {
+			mElement.removeChild(getOdfElement());
+			if (mElement.hasChildNodes() == false)
+				containerElement.removeChild(mElement);
+			mOwnerDocument.removeElementLinkedResource(getOdfElement());
+		} catch (DOMException exception) {
+			Logger.getLogger(AbstractParagraphContainer.class.getName()).log(Level.WARNING, exception.getMessage());
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Update the image file with another resource.
+	 * 
+	 * @param imageUri
+	 *            - the URI of the new image resource
+	 */
+	public void updateImage(URI imageUri) {
+		try {
+			// remove the old resource
+			String packagePath = mImageURI.toString();
+			mOwnerDocument.getPackage().remove(packagePath);
+			// insert the new resource
+			String imageRef = imageUri.toString();
+			String mediaType = OdfFileEntry.getMediaTypeString(imageRef);
+			mOwnerDocument.getPackage().insert(imageUri, packagePath, mediaType);
+		} catch (Exception e) {
+			Logger.getLogger(Image.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	/**
+	 * Get the image resource as an input stream.
+	 * 
+	 * @return - the input stream of the image resource
+	 */
+	public InputStream getImageInputStream() {
+		return mOwnerDocument.getPackage().getInputStream(getInternalPath());
+	}
+
+	/**
+	 * Get the internal path within the package of the image resource as a
+	 * string.
+	 * 
+	 * @return - the internal path of the image resource
+	 */
+	public String getInternalPath() {
+		try {
+			if (mImageURI == null)
+				mImageURI = new URI(mImageElement.getXlinkHrefAttribute());
+			return mImageURI.toString();
+		} catch (URISyntaxException e) {
+			Logger.getLogger(Image.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the media type of the image resource
+	 * 
+	 * @return - the media type of the image resource
+	 */
+	public String getMediaTypeString() {
+		return mOwnerDocument.getPackage().getMediaTypeString(getInternalPath());
+	}
+
+	private static class SimpleImageIterator implements Iterator<Image> {
+
+		private OdfElement containerElement;
+		private Image nextElement = null;
+		private Image tempElement = null;
+
+		private SimpleImageIterator(FrameContainer container) {
+			containerElement = container.getFrameContainerElement();
+		}
+
+		public boolean hasNext() {
+			tempElement = findNext(nextElement);
+			return (tempElement != null);
+		}
+
+		public Image next() {
+			if (tempElement != null) {
+				nextElement = tempElement;
+				tempElement = null;
+			} else {
+				nextElement = findNext(nextElement);
+			}
+			if (nextElement == null) {
+				return null;
+			} else {
+				return nextElement;
+			}
+		}
+
+		public void remove() {
+			if (nextElement == null) {
+				throw new IllegalStateException("please call next() first.");
+			}
+			containerElement.removeChild(nextElement.getOdfElement());
+		}
+
+		private Image findNext(Image thisImage) {
+			DrawImageElement nextFrame = null;
+			if (thisImage == null) {
+				nextFrame = OdfElement.findFirstChildNode(DrawImageElement.class, containerElement);
+			} else {
+				nextFrame = OdfElement.findNextChildNode(DrawImageElement.class, thisImage.getOdfElement());
+			}
+
+			if (nextFrame != null) {
+				return Image.getInstanceof(nextFrame);
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * Set the name of this image.
+	 * 
+	 * @param name
+	 *            - the name of the image
+	 */
+	public void setName(String name) {
+		mFrame.setName(name);
+	}
+
+	/**
+	 * Get the name of this image.
+	 * 
+	 * @return the name of the image
+	 */
+	public String getName() {
+		return mFrame.getName();
+	}
+
+	/**
+	 * Set the rectangle used by this image
+	 * 
+	 * @param rectangle
+	 *            - the rectangle used by this image
+	 */
+	public void setRectangle(FrameRectangle rectangle) {
+		mFrame.setRectangle(rectangle);
+	}
+
+	/**
+	 * Return the rectangle used by this image
+	 * 
+	 * @return - the rectangle
+	 */
+	public FrameRectangle getRectangle() {
+		return mFrame.getRectangle();
+	}
+
+	/**
+	 * Set the title of this image
+	 * 
+	 * @param title
+	 *            - the title of this image
+	 */
+	public void setTitle(String title) {
+		mFrame.setTitle(title);
+	}
+
+	/**
+	 * Get the title of this image
+	 * 
+	 * @return - the title of this image
+	 */
+	public String getTitle() {
+		return mFrame.getTitle();
+	}
+
+	/**
+	 * Get the description of this image
+	 * 
+	 * @return - the description of this image
+	 */
+	public String getDesciption() {
+		return mFrame.getDesciption();
+	}
+
+	/**
+	 * Set the description of this image.
+	 * 
+	 * @param description
+	 *            - the description of this image
+	 */
+	public void setDescription(String description) {
+		mFrame.setDescription(description);
+	}
+
+	/**
+	 * Set the horizontal position
+	 * 
+	 * @param horizontalPos
+	 *            - the horizontal position
+	 */
+	public void setHorizontalPosition(FrameHorizontalPosition horizontalPos) {
+		getStyleHandler().setHorizontalPosition(horizontalPos);
+	}
+
+	/**
+	 * Set the vertical position
+	 * 
+	 * @param verticalPos
+	 *            - the vertical position
+	 */
+	public void setVerticalPosition(FrameVerticalPosition verticalPos) {
+		getStyleHandler().setVerticalPosition(verticalPos);
+	}
+
+	/**
+	 * Return the horizontal position
+	 * 
+	 * @return the horizontal position
+	 */
+	public FrameHorizontalPosition getHorizontalPosition() {
+		return getStyleHandler().getHorizontalPosition();
+	}
+
+	/**
+	 * Return the vertical position
+	 * 
+	 * @return the vertical position
+	 */
+	public FrameVerticalPosition getVerticalPosition() {
+		return getStyleHandler().getVerticalPosition();
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Textbox.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Textbox.java
new file mode 100644
index 0000000..b7ac880
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/Textbox.java
@@ -0,0 +1,266 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawTextBoxElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.OdfDrawStroke;
+import org.odftoolkit.simple.text.AbstractParagraphContainer;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.text.ParagraphContainer;
+import org.odftoolkit.simple.text.list.AbstractListContainer;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class provides method to set the content, properties and style of text
+ * box.
+ * 
+ * @since 0.5
+ */
+public class Textbox extends Frame implements ListContainer, ParagraphContainer {
+
+	/*
+	 * The <draw:frame> element is usable within the following elements:
+	 * Supported: <draw:page> 10.2.4, <draw:text-box> 10.4.3, <office:text> 3.4,
+	 * <presentation:notes> 16.17, <style:handout-master> 10.2.1,
+	 * <style:master-page> 16.9, <table:covered-table-cell> 9.1.5,
+	 * <table:table-cell> 9.1.4, <text:p> 5.1.3, <text:section> 5.4 Not
+	 * supported: <draw:a> 10.4.12, <draw:g> 10.3.15, <office:image> 3.9,
+	 * <table:shapes> 9.2.8, <text:a> 6.1.8, <text:deletion> 5.5.4, <text:h>
+	 * 5.1.2, <text:index-body> 8.2.2, <text:index-title> 8.2.3, <text:meta>
+	 * 6.1.9, <text:meta-field> 7.5.19, <text:note-body> 6.3.4, <text:ruby-base>
+	 * 6.4.2,and <text:span> 6.1.7.
+	 * 
+	 * The <draw:text-box> element is usable within the following element:
+	 * <draw:frame> 10.4.2.
+	 * 
+	 * <draw:text-box> element has following children: <dr3d:scene> 10.5.2,
+	 * <draw:a> 10.4.12, <draw:caption> 10.3.11, <draw:circle> 10.3.8,
+	 * <draw:connector> 10.3.10, <draw:control> 10.3.13, <draw:custom-shape>
+	 * 10.6.1, <draw:ellipse> 10.3.9, <draw:frame> 10.4.2, <draw:g> 10.3.15,
+	 * <draw:line> 10.3.3, <draw:measure> 10.3.12, <draw:page-thumbnail>
+	 * 10.3.14, <draw:path> 10.3.7, <draw:polygon> 10.3.5, <draw:polyline>
+	 * 10.3.4, <draw:rect> 10.3.2, <draw:regular-polygon> 10.3.6, <table:table>
+	 * 9.1.2, <text:alphabetical-index> 8.8, <text:bibliography> 8.9,
+	 * <text:change> 5.5.7.4, <text:change-end> 5.5.7.3, <text:change-start>
+	 * 5.5.7.2, <text:h> 5.1.2, <text:illustration-index> 8.4, <text:list>
+	 * 5.3.1, <text:numbered-paragraph> 5.3.6, <text:object-index> 8.6, <text:p>
+	 * 5.1.3, <text:section> 5.4, <text:soft-page-break> 5.6, <text:table-index>
+	 * 8.5, <text:table-of-content> 8.3 and <text:user-index> 8.7.
+	 */
+	DrawTextBoxElement mTextboxElement;
+	private ParagraphContainerImpl paragraphContainerImpl;
+	private ListContainerImpl listContainerImpl;
+
+	private Textbox(DrawTextBoxElement textbox) {
+		super((DrawFrameElement) textbox.getParentNode());
+		mTextboxElement = textbox;
+
+	}
+
+	/**
+	 * Get a text box instance by an instance of <code>DrawTextBoxElement</code>
+	 * .
+	 * 
+	 * @param element
+	 *            - the instance of DrawTextBoxElement
+	 * @return an instance of text box
+	 */
+	public static Textbox getInstanceof(DrawTextBoxElement element) {
+		if (element == null)
+			return null;
+
+		Textbox textbox = null;
+		textbox = (Textbox) Component.getComponentByElement(element);
+		if (textbox != null)
+			return textbox;
+
+		textbox = new Textbox(element);
+		Component.registerComponent(textbox, element);
+		return textbox;
+	}
+
+	/**
+	 * Create an instance of frame
+	 * <p>
+	 * The frame will be added at the end of this container.
+	 * 
+	 * @param container
+	 *            - the frame container that contains this frame.
+	 */
+	public static Textbox newTextbox(TextboxContainer container) {
+		Textbox textbox = null;
+		OdfElement parent = container.getFrameContainerElement();
+		OdfFileDom ownerDom = (OdfFileDom) parent.getOwnerDocument();
+		DrawFrameElement fElement = ownerDom.newOdfElement(DrawFrameElement.class);
+		parent.appendChild(fElement);
+		DrawTextBoxElement boxElement = fElement.newDrawTextBoxElement();
+		textbox = new Textbox(boxElement);
+		textbox.mFrameContainer = container;
+		Component.registerComponent(textbox, boxElement);
+
+		// set text box default style
+		textbox.getStyleHandler().setBorders(null, CellBordersType.NONE);
+		textbox.getStyleHandler().setStroke(OdfDrawStroke.NONE, null, null, null);
+		textbox.getStyleHandler().setBackgroundColor(null);
+		// set style:run-through="foreground"
+		textbox.getStyleHandler().setBackgroundFrame(false);
+		return textbox;
+	}
+
+	/**
+	 * Set the text content of this text box.
+	 * <p>
+	 * This method will clear the content at first, and then create a paragraph
+	 * with the given content.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @see #clearContent()
+	 * @see #addParagraph(String textContent)
+	 */
+	public void setTextContent(String content) {
+		clearContent();
+		addParagraph(content);
+	}
+
+	/**
+	 * Remove all the content of this text box.
+	 */
+	public void clearContent() {
+		NodeList nodeList = mTextboxElement.getChildNodes();
+		int i;
+		for (i = 0; i < nodeList.getLength(); i++) {
+			Node node = nodeList.item(i);
+			if (node.getNodeType() == Node.ELEMENT_NODE || node.getNodeType() == node.TEXT_NODE)
+				mTextboxElement.removeChild(nodeList.item(i));
+		}
+	}
+
+	/**
+	 * Get the text content of this text box.
+	 * 
+	 * @return - the text content
+	 * @see TextExtractor#getText(OdfElement)
+	 */
+	public String getTextContent() {
+		return TextExtractor.getText(mTextboxElement);
+	}
+
+	/**
+	 * Get the instance of <code>DrawTextBoxElement</code> which represents this
+	 * frame.
+	 * 
+	 * @return the instance of <code>DrawTextBoxElement</code>
+	 */
+	@Override
+	public DrawTextBoxElement getOdfElement() {
+		return mTextboxElement;
+	}
+
+	// ***************List support*************************//
+
+	public List addList() {
+		return getListContainerImpl().addList();
+	}
+
+	public List addList(ListDecorator decorator) {
+		return getListContainerImpl().addList(decorator);
+	}
+
+	public void clearList() {
+		getListContainerImpl().clearList();
+	}
+
+	public OdfElement getListContainerElement() {
+		return getListContainerImpl().getListContainerElement();
+	}
+
+	public Iterator<List> getListIterator() {
+		return getListContainerImpl().getListIterator();
+	}
+
+	public boolean removeList(List list) {
+		return getListContainerImpl().removeList(list);
+	}
+
+	private ListContainerImpl getListContainerImpl() {
+		if (listContainerImpl == null) {
+			listContainerImpl = new ListContainerImpl();
+		}
+		return listContainerImpl;
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+
+		public OdfElement getListContainerElement() {
+			return mTextboxElement;
+		}
+	}
+
+	// ****************Paragraph support******************//
+
+	public Paragraph addParagraph(String textContent) {
+		return getParagraphContainerImpl().addParagraph(textContent);
+	}
+
+	public OdfElement getParagraphContainerElement() {
+		return getParagraphContainerImpl().getParagraphContainerElement();
+	}
+
+	public boolean removeParagraph(Paragraph para) {
+		return getParagraphContainerImpl().removeParagraph(para);
+	}
+
+	private class ParagraphContainerImpl extends AbstractParagraphContainer {
+		public OdfElement getParagraphContainerElement() {
+			return mTextboxElement;
+		}
+	}
+
+	private ParagraphContainerImpl getParagraphContainerImpl() {
+		if (paragraphContainerImpl == null)
+			paragraphContainerImpl = new ParagraphContainerImpl();
+		return paragraphContainerImpl;
+	}
+
+	public Paragraph getParagraphByIndex(int index, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByIndex(index, isEmptyParagraphSkipped);
+	}
+
+	public Paragraph getParagraphByReverseIndex(int reverseIndex, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByReverseIndex(reverseIndex, isEmptyParagraphSkipped);
+	}
+
+	public Iterator<Paragraph> getParagraphIterator() {
+		return getParagraphContainerImpl().getParagraphIterator();
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/draw/TextboxContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/TextboxContainer.java
new file mode 100644
index 0000000..c857e26
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/draw/TextboxContainer.java
@@ -0,0 +1,89 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.odftoolkit.simple.PresentationDocument;
+
+/**
+ * TextboxContainer is a container which maintains TextBox(s) as element(s).
+ * TextBox(s) can be added, removed and iterated in this container.
+ * 
+ * @since 0.5
+ */
+public interface TextboxContainer extends FrameContainer {
+
+	/**
+	 * Add a text box
+	 * 
+	 * @return the object of text box
+	 */
+	public Textbox addTextbox();
+
+	/**
+	 * Add a text box with a specific size at a specific position
+	 * 
+	 * @param position
+	 *            - the rectangle (position and size) of this text box
+	 * @return the object of text box
+	 */
+	public Textbox addTextbox(FrameRectangle position);
+
+	/**
+	 * Remove the text box
+	 * 
+	 * @param box
+	 *            - the instance of text box
+	 * @return true if success, false if fails
+	 */
+	public boolean removeTextbox(Textbox box);
+
+	/**
+	 * Return an Iterator of the text objects in this container.
+	 * 
+	 * @return an Iterator of the text objects in this container
+	 */
+	public Iterator<Textbox> getTextboxIterator();
+
+	/**
+	 * Return a text box whose name is a given value.
+	 * 
+	 * @param name
+	 *            - the name of the text box
+	 * @return a text box whose name is a given value
+	 */
+	public Textbox getTextboxByName(String name);
+
+	/**
+	 * This method is only useful in presentation slide.
+	 * <p>
+	 * This method will return a list of text boxs by the usage in presentation
+	 * slides.
+	 * 
+	 * @param usage
+	 *            - the usage description
+	 * @return a list of text box Null will be returned if the owner document is
+	 *         not a presentation
+	 */
+	public List<Textbox> getTextboxByUsage(PresentationDocument.PresentationClass usage);
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/AbstractFormContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/AbstractFormContainer.java
new file mode 100644
index 0000000..9a5b82a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/AbstractFormContainer.java
@@ -0,0 +1,186 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.w3c.dom.DOMException;

+

+/**

+ * AbstractFormContainer is an abstract implementation of the FormContainer

+ * interface, with a default implementation for every method defined in

+ * FormContainer, except getFormContainerElement(). A subclass must implement

+ * the abstract method getFormContainerElement().

+ * 

+ * @since 0.8

+ */

+public abstract class AbstractFormContainer implements FormContainer {

+

+	private FormProvider provider = null;

+

+

+	public abstract OfficeFormsElement getFormContainerElement();

+

+

+	public Form createForm(String name) {

+		return getProvider().createForm(name, getFormContainerElement());

+	}

+

+

+	public boolean removeForm(Form form) {

+		if (form == null)

+			return true;

+		OdfElement containerElement = getFormContainerElement();

+		FormFormElement formElement = form.getOdfElement();

+		try {

+			containerElement.removeChild(formElement);

+		} catch (DOMException exception) {

+			Logger.getLogger(AbstractFormContainer.class.getName()).log(

+					Level.WARNING, exception.getMessage());

+			return false;

+		}

+		return true;

+	}

+

+

+	public Form getFormByName(String name) {

+		if (name == null)

+			return null;

+

+		OdfElement container = getFormContainerElement();

+		FormFormElement element = OdfElement.findFirstChildNode(

+				FormFormElement.class, container);

+		while (element != null) {

+			if (name.equals(element.getFormNameAttribute())) {

+				Form form = getProvider().getInstanceOf(element);

+				return form;

+			}

+			element = OdfElement.findNextChildNode(FormFormElement.class,

+					element);

+		}

+		return null;

+	}

+

+

+	public Iterator<Form> getFormIterator() {

+		return new SimpleFormIterator(this);

+	}

+

+	private class SimpleFormIterator implements Iterator<Form> {

+

+		private OdfElement containerElement;

+		private Form nextElement = null;

+		private Form tempElement = null;

+

+		private SimpleFormIterator(FormContainer container) {

+			containerElement = container.getFormContainerElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public Form next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			containerElement.removeChild(nextElement.getOdfElement());

+		}

+

+		private Form findNext(Form thisForm) {

+			FormFormElement nextForm = null;

+			if (thisForm == null) {

+				nextForm = OdfElement.findFirstChildNode(FormFormElement.class,

+						containerElement);

+			} else {

+				nextForm = OdfElement.findNextChildNode(FormFormElement.class,

+						thisForm.getOdfElement());

+			}

+

+			if (nextForm != null) {

+				return getProvider().getInstanceOf(nextForm);

+			}

+			return null;

+		}

+	}

+

+

+	public boolean getApplyDesignMode() {

+		return getFormContainerElement().getFormApplyDesignModeAttribute();

+	}

+

+

+	public boolean getAutomaticFocus() {

+		return getFormContainerElement().getFormAutomaticFocusAttribute();

+	}

+

+

+	public void setApplyDesignMode(boolean isDesignMode) {

+		getFormContainerElement().setFormApplyDesignModeAttribute(isDesignMode);

+	}

+

+

+	public void setAutomaticFocus(boolean isAutoFocus) {

+		getFormContainerElement().setFormAutomaticFocusAttribute(isAutoFocus);

+	}

+

+	/**

+	 * Set the form provider of this container.

+	 * 

+	 * @param provider

+	 *            - which is used to instantiate a form

+	 */

+	public void setProvider(FormProvider provider) {

+		this.provider = provider;

+	}

+

+	/**

+	 * Get the form provider of this container.

+	 * 

+	 * @return provider - a default provider followed by OO definition will be

+	 *         created if users don't appointed one.

+	 */

+	public FormProvider getProvider() {

+		if (provider == null)

+			provider = new OOFormProvider();

+		return provider;

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/Button.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Button.java
new file mode 100644
index 0000000..3ab11d3
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Button.java
@@ -0,0 +1,194 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormButtonElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+

+/**

+ * This class represents the form control of Button, provides methods to get/set

+ * the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class Button extends FormControl {

+

+	Button(FormButtonElement element) {

+		mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of button by an instance of FormButtonElement, while

+	 * searching the document content to make a bind with the DrawControl which

+	 * already reference to this button.

+	 * 

+	 * @param element

+	 *            - an instance of FormButtonElement

+	 * @return an instance of button

+	 */

+	public static Button getInstanceOf(FormButtonElement element) {

+		Button btn = new Button(element);

+		try {

+			btn.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(Button.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this button.");

+		}

+		return btn;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormButtonElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormButtonElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormButtonElement) mElement).setFormIdAttribute(id);

+

+	}

+

+	@Override

+	public String getId() {

+		return ((FormButtonElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public String getName() {

+		return ((FormButtonElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormButtonElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Set the label content of this button

+	 * 

+	 * @param label

+	 *            - the label

+	 */

+	public void setLabel(String label) {

+		((FormButtonElement) mElement).setFormLabelAttribute(label);

+	}

+

+	/**

+	 * Get the label content of this button

+	 * 

+	 * @return the label

+	 */

+	public String getLabel() {

+		return ((FormButtonElement) mElement).getFormLabelAttribute();

+	}

+

+	/**

+	 * Set the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @param value

+	 *            - the default value

+	 */

+	public void setValue(String value) {

+		((FormButtonElement) mElement).setFormValueAttribute(value);

+

+	}

+

+	/**

+	 * Get a simple iterator for buttons.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the buttons

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleButtonIterator(container);

+	}

+

+	private static class SimpleButtonIterator implements Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private Button nextElement = null;

+		private Button tempElement = null;

+

+		private SimpleButtonIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public Button next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+		}

+

+		private Button findNext(Button thisButton) {

+			FormButtonElement nextForm = null;

+			if (thisButton == null) {

+				nextForm = OdfElement.findFirstChildNode(

+						FormButtonElement.class, containerElement);

+			} else {

+				nextForm = OdfElement.findNextChildNode(

+						FormButtonElement.class, thisButton.getOdfElement());

+			}

+

+			if (nextForm != null) {

+				return Button.getInstanceOf(nextForm);

+			}

+			return null;

+		}

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/CheckBox.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/CheckBox.java
new file mode 100644
index 0000000..cadfcda
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/CheckBox.java
@@ -0,0 +1,254 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormCheckboxElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormCheckboxState;

+

+/**

+ * This class represents the form control of Check Box, provides methods to

+ * get/set the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class CheckBox extends FormControl {

+

+	CheckBox(FormCheckboxElement element) {

+		mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of check box by an instance of FormCheckboxElement, while

+	 * searching the document content to make a bind with the DrawControl which

+	 * already reference to this check box.

+	 * 

+	 * @param element

+	 *            - an instance of FormCheckboxElement

+	 * @return an instance of check box

+	 */

+	public static CheckBox getInstanceOf(FormCheckboxElement element) {

+		CheckBox checkbox = new CheckBox(element);

+		try {

+			checkbox.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(CheckBox.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this check box.");

+		}

+		return checkbox;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormCheckboxElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	@Override

+	public String getId() {

+		return ((FormCheckboxElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormCheckboxElement) mElement).setFormIdAttribute(id);

+	}

+

+	@Override

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormCheckboxElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	/**

+	 * Set the label content of this check box

+	 * 

+	 * @param label

+	 *            - the label of this check box

+	 */

+	public void setLabel(String label) {

+		((FormCheckboxElement) mElement).setFormLabelAttribute(label);

+	}

+

+	/**

+	 * Get the label content of this check box

+	 * 

+	 * @param label

+	 *            - the label of this check box

+	 */

+	public String getLabel() {

+		return ((FormCheckboxElement) mElement).getFormLabelAttribute();

+	}

+

+	@Override

+	public String getName() {

+		return ((FormCheckboxElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormCheckboxElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Set the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @param value

+	 *            - the default value

+	 */

+	public void setValue(String value) {

+		((FormCheckboxElement) mElement).setFormValueAttribute(value);

+

+	}

+

+	/**

+	 * Get the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @return the default value

+	 */

+	public String getValue() {

+		return ((FormCheckboxElement) mElement).getFormValueAttribute();

+

+	}

+

+	/**

+	 * Set the default state of this check box

+	 * 

+	 * @param state

+	 *            - default state of this check box

+	 */

+	public void setDefaultState(FormCheckboxState state) {

+		((FormCheckboxElement) mElement)

+				.setFormStateAttribute(state.toString());

+	}

+

+	/**

+	 * Get the default state of this check box

+	 * 

+	 * @return default state of this check box

+	 */

+	public FormCheckboxState getDefaultState() {

+		String value = ((FormCheckboxElement) mElement).getFormStateAttribute();

+		return FormCheckboxState.enumValueOf(value);

+	}

+

+	/**

+	 * Set current state of this check box

+	 * 

+	 * @param state

+	 *            - current state of this check box

+	 */

+	public void setCurrentState(FormCheckboxState state) {

+		((FormCheckboxElement) mElement).setFormCurrentStateAttribute(state

+				.toString());

+	}

+

+	/**

+	 * Get current state of this check box

+	 * 

+	 * @return current state of this check box

+	 */

+	public FormCheckboxState getCurrentState() {

+		String value = ((FormCheckboxElement) mElement)

+				.getFormCurrentStateAttribute();

+		return FormCheckboxState.enumValueOf(value);

+	}

+

+	/**

+	 * Get a simple iterator for check boxes.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the check boxes

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleCheckBoxIterator(container);

+	}

+

+	private static class SimpleCheckBoxIterator implements

+			Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private CheckBox nextElement = null;

+		private CheckBox tempElement = null;

+

+		private SimpleCheckBoxIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public CheckBox next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+

+		}

+

+		private CheckBox findNext(CheckBox thisCheckBox) {

+			FormCheckboxElement nextCheckBox = null;

+			if (thisCheckBox == null) {

+				nextCheckBox = OdfElement.findFirstChildNode(

+						FormCheckboxElement.class, containerElement);

+			} else {

+				nextCheckBox = OdfElement

+						.findNextChildNode(FormCheckboxElement.class,

+								thisCheckBox.getOdfElement());

+			}

+

+			if (nextCheckBox != null) {

+				return CheckBox.getInstanceOf(nextCheckBox);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/ComboBox.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/ComboBox.java
new file mode 100644
index 0000000..563e8d2
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/ComboBox.java
@@ -0,0 +1,343 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormComboboxElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormItemElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormListSourceType;

+import org.w3c.dom.NodeList;

+

+/**

+ * This class represents the form control of Combo Box, provides methods to

+ * get/set the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class ComboBox extends FormControl {

+

+	private ArrayList<String> entries;

+

+	ComboBox(FormComboboxElement element) {

+		this.mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of combo box by an instance of FormComboboxElement, while

+	 * searching the document content to make a bind with the DrawControl which

+	 * already reference to this check box.

+	 * 

+	 * @param element

+	 *            - an instance of FormComboboxElement

+	 * @return an instance of combo box

+	 */

+	public static ComboBox getInstanceOf(FormComboboxElement element) {

+		ComboBox combo = new ComboBox(element);

+		try {

+			combo.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(ComboBox.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this combo box.");

+		}

+		return combo;

+	}

+

+	@Override

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormComboboxElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormComboboxElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	@Override

+	public String getId() {

+		return ((FormComboboxElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormComboboxElement) mElement).setFormIdAttribute(id);

+	}

+

+	@Override

+	public String getName() {

+		return ((FormComboboxElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormComboboxElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Set the visibility of the drop-down list

+	 * 

+	 * @param isDropDown

+	 *            - specify if the drop-down list is visible

+	 */

+	public void setFormDropdown(boolean isDropDown) {

+		((FormComboboxElement) mElement).setFormDropdownAttribute(isDropDown);

+	}

+

+	/**

+	 * Get the visibility of the drop-down list

+	 * 

+	 * @return true means the drop-down list is visible; false means invisible

+	 */

+	public boolean getFormDropdown() {

+		return ((FormComboboxElement) mElement).getFormDropdownAttribute();

+	}

+

+	/**

+	 * Add a list item to this combo box.

+	 * 

+	 * @param item

+	 *            - a list item

+	 */

+	public void addItem(String item) {

+		if (item == null)

+			return;

+		if (entries == null)

+			entries = new ArrayList<String>();

+		((FormComboboxElement) mElement).newFormItemElement()

+				.setFormLabelAttribute(item);

+		entries.add(item);

+	}

+

+	/**

+	 * Add a group of list items to this combo box

+	 * 

+	 * @param items

+	 *            -a group of list items

+	 */

+	public void addItems(String[] items) {

+		if (items == null || items.length == 0)

+			return;

+		for (int i = 0; i < items.length; i++) {

+			addItem(items[i]);

+		}

+	}

+

+	/**

+	 * Get the list entries if they are initiated through a list of string.

+	 * 

+	 * @return the list entries

+	 */

+	public ArrayList<String> getEntries() {

+		if (entries == null || entries.size() == 0) {

+			NodeList items = mElement.getElementsByTagName("form:item");

+			if (items != null && items.getLength() > 0) {

+				for (int i = 0; i < items.getLength(); i++) {

+					if (entries == null)

+						entries = new ArrayList<String>();

+					entries.add(((FormItemElement) items.item(i))

+							.getFormLabelAttribute());

+				}

+				return entries;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Set the source type of the data list.

+	 * 

+	 * @param type

+	 *            - the source type of this list

+	 */

+	public void setListSourceType(FormListSourceType type) {

+		((FormComboboxElement) mElement).setFormListSourceTypeAttribute(type

+				.toString());

+	}

+

+	/**

+	 * Get the source type of the data list.

+	 * 

+	 * @return the source type of this list

+	 */

+	public FormListSourceType getListSourceType() {

+		String value = ((FormComboboxElement) mElement)

+				.getFormListSourceTypeAttribute();

+		return FormListSourceType.enumValueOf(value);

+	}

+

+	/**

+	 * Set the source of this data list.

+	 * 

+	 * @param listSource

+	 *            - the source of this data list.

+	 */

+	public void setListSource(String listSource) {

+		((FormComboboxElement) mElement).setFormListSourceAttribute(listSource);

+	}

+

+	/**

+	 * Get the source of this data list.

+	 * 

+	 * @return the source of this data list.

+	 */

+	public String getListSource() {

+		return ((FormComboboxElement) mElement).getFormListSourceAttribute();

+	}

+

+	/**

+	 * Set the data field referenced by this combo box

+	 * 

+	 * @param dataField

+	 *            - the data field referenced by this combo box

+	 */

+	public void setDataField(String dataField) {

+		((FormComboboxElement) mElement).setFormDataFieldAttribute(dataField);

+	}

+

+	/**

+	 * Get the data field referenced by this combo box

+	 * 

+	 * @return the data field referenced by this combo box

+	 */

+	public String getDataField() {

+		return ((FormComboboxElement) mElement).getFormDataFieldAttribute();

+	}

+

+	/**

+	 * Set the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @param value

+	 *            - default value

+	 */

+	public void setValue(String defaultValue) {

+		((FormComboboxElement) mElement).setFormValueAttribute(defaultValue);

+	}

+

+	/**

+	 * Get the default value of this control.

+	 * 

+	 * @return default value

+	 */

+	public String getValue() {

+		return ((FormComboboxElement) mElement).getFormValueAttribute();

+	}

+

+	/**

+	 * Set the current value of this control, it override the default value.

+	 * 

+	 * @param currentValue

+	 *            - current value

+	 */

+	public void setCurrentValue(String currentValue) {

+		((FormComboboxElement) mElement)

+				.setFormCurrentValueAttribute(currentValue);

+	}

+

+	/**

+	 * Get the current value of this control, it override the default value.

+	 * 

+	 * @return current value

+	 */

+	public String getCurrentValue() {

+		return ((FormComboboxElement) mElement).getFormCurrentValueAttribute();

+	}

+

+	/**

+	 * Get a simple iterator for combo boxes.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the combo boxes s

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleComboBoxIterator(container);

+	}

+

+	private static class SimpleComboBoxIterator implements

+			Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private ComboBox nextElement = null;

+		private ComboBox tempElement = null;

+

+		private SimpleComboBoxIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public ComboBox next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+

+		}

+

+		private ComboBox findNext(ComboBox thisComboBox) {

+			FormComboboxElement nextComboBox = null;

+			if (thisComboBox == null) {

+				nextComboBox = OdfElement.findFirstChildNode(

+						FormComboboxElement.class, containerElement);

+			} else {

+				nextComboBox = OdfElement

+						.findNextChildNode(FormComboboxElement.class,

+								thisComboBox.getOdfElement());

+			}

+

+			if (nextComboBox != null) {

+				return ComboBox.getInstanceOf(nextComboBox);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/CurrencyField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/CurrencyField.java
new file mode 100644
index 0000000..a481b6c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/CurrencyField.java
@@ -0,0 +1,77 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+

+public class CurrencyField extends Field {

+

+	CurrencyField(FormFormattedTextElement element) {

+		super(element);

+	}

+

+

+	/**

+	 * Get an instance of currency field by an instance of FormFormattedTextElement,

+	 * while searching the document content to make a bind with the DrawControl

+	 * which already reference to this currency field.

+	 * 

+	 * @param element

+	 *            - an instance of FormFormattedTextElement

+	 * @return an instance of currency field

+	 */

+	public static CurrencyField getInstanceOf(FormFormattedTextElement element) {

+		CurrencyField field = new CurrencyField(element);

+		try {

+			field.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(CurrencyField.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this field.");

+		}

+		return field;

+	}

+	

+	public void setCurrencySymbol(String symbol) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_CURRENCYSYMBOL,

+				"string", symbol, null, null, null, null, null);

+	}

+

+	public void setDecimalAccuracy(double value) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_DECIMALACCURACY,

+				"float", null, null, null, null, value, null);

+	}

+

+	public void setStepValue(double value) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_VALUESTEP,

+				"float", null, null, null, null, value, null);

+	}

+

+	public void setCurrencySymbolVisible(boolean visible) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_PREPENDCURRENCYSYMBOL,

+				"boolean", null, visible, null, null, null, null);

+

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/DateField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/DateField.java
new file mode 100644
index 0000000..05b9b11
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/DateField.java
@@ -0,0 +1,94 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Locale;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute.Value;

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+

+/**

+ * This class represents a date field of form.

+ * 

+ */

+public class DateField extends Field {

+

+	DateField(FormFormattedTextElement element) {

+		super(element);

+	}

+

+	/**

+	 * Get an instance of date field by an instance of FormFormattedTextElement,

+	 * while searching the document content to make a bind with the DrawControl

+	 * which already reference to this date field.

+	 * 

+	 * @param element

+	 *            - an instance of FormFormattedTextElement

+	 * @return an instance of date field

+	 */

+	public static DateField getInstanceOf(FormFormattedTextElement element) {

+		DateField field = new DateField(element);

+		try {

+			field.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(DateField.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this field.");

+		}

+		return field;

+	}

+

+	/**

+	 * Set the visibility of the drop-down button.

+	 * 

+	 * @param isVisible

+	 *            - the visibility of drop-down button.

+	 */

+	public void setDropDownVisible(boolean isVisible) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_DROPDOWN,

+				"boolean", null, isVisible, null, null, null, null);

+	}

+

+	/**

+	 * Format the date value according to the appointed format and locale.

+	 * 

+	 * @param formatStr

+	 *            - format code

+	 * @param locale

+	 *            - locale information

+	 */

+	public void formatDate(String formatStr, Locale locale) {

+		this.setFormatString(formatStr, Value.DATE, locale);

+	}

+

+	/**

+	 * Get the format code which is used to format the display value

+	 * 

+	 * @return the format code

+	 */

+	public String getDateFormat() {

+		return this.getFormatString(Value.DATE);

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/Field.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Field.java
new file mode 100644
index 0000000..0b81a03
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Field.java
@@ -0,0 +1,456 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.Locale;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.OdfSchemaDocument;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.simple.Document;

+

+/**

+ * This class represents the form control of Field, provides methods to get/set

+ * the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class Field extends FormControl {

+

+	Field(FormFormattedTextElement element) {

+		mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of field by an instance of FormFormattedTextElement,

+	 * while searching the document content to make a bind with the DrawControl

+	 * which already reference to this field.

+	 * 

+	 * @param element

+	 *            - an instance of FormFormattedTextElement

+	 * @return an instance of field

+	 */

+	public static Field getInstanceOf(FormFormattedTextElement element) {

+		Field field = null;

+		if (element.getFormControlImplementationAttribute().equals(

+				OOFormProvider.OO_CONTROL_IMPLEMENTATION_DATEFIELD)) {

+			return DateField.getInstanceOf(element);

+		} else if (element.getFormControlImplementationAttribute().equals(

+				OOFormProvider.OO_CONTROL_IMPLEMENTATION_TIMEFIELD)) {

+			return TimeField.getInstanceOf(element);

+		} else if (element.getFormControlImplementationAttribute().equals(

+				OOFormProvider.OO_CONTROL_IMPLEMENTATION_NUMERICFIELD)) {

+			return NumericField.getInstanceOf(element);

+		} else if (element.getFormControlImplementationAttribute().equals(

+				OOFormProvider.OO_CONTROL_IMPLEMENTATION_PATTERNFIELD)) {

+			return PatternField.getInstanceOf(element);

+		} else if (element.getFormControlImplementationAttribute().equals(

+				OOFormProvider.OO_CONTROL_IMPLEMENTATION_CURRENCYFIELD)) {

+			return CurrencyField.getInstanceOf(element);

+		} else {

+			field = new Field(element);

+		}

+		if (field == null)

+			throw new IllegalStateException(

+					"Failed to load and initiate a field.");

+

+		try {

+			field.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(Field.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this field.");

+		}

+		return field;

+	}

+

+	@Override

+	public String getId() {

+		return ((FormFormattedTextElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormFormattedTextElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormFormattedTextElement) mElement).setFormIdAttribute(id);

+	}

+

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormFormattedTextElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	@Override

+	public String getName() {

+		return ((FormFormattedTextElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormFormattedTextElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Set the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @param value

+	 *            - default value

+	 */

+	public void setValue(String value) {

+		((FormFormattedTextElement) mElement).setFormValueAttribute(value);

+

+	}

+

+	/**

+	 * Get the default value of this control

+	 * 

+	 * @return default value

+	 */

+	public String getValue() {

+		return ((FormFormattedTextElement) mElement).getFormValueAttribute();

+

+	}

+

+	/**

+	 * Set the current value of this control, it override the default value.

+	 * 

+	 * @param currentValue

+	 *            - current value

+	 */

+	public void setCurrentValue(String value) {

+		((FormFormattedTextElement) mElement)

+				.setFormCurrentValueAttribute(value);

+	}

+

+	/**

+	 * Get the current value of this control

+	 * 

+	 * @return current value

+	 */

+	public String getCurrentValue() {

+		return ((FormFormattedTextElement) mElement)

+				.getFormCurrentValueAttribute();

+	}

+

+	/**

+	 * Set the visibility of the spin button

+	 * 

+	 * @param isVisible

+	 *            - true means the spin button is visible; false means the spin

+	 *            button is hidden

+	 */

+	public void setSpinButonVisible(boolean isVisible) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_SPIN, "boolean",

+				null, isVisible, null, null, null, null);

+	}

+

+/**

+	 * Set the format string of the field.

+	 * <p>

+	 * This function only works for float, date, time and percentage, otherwise an

+	 * {@link java.lang.IllegalArgumentException} will be thrown. 

+	 * <p>

+	 * For value type float and percentage, the <code>formatStr</code> must follow the encoding 

+	 * rule of {@link java.text.DecimalFormat <code>java.text.DecimalFormat</code>}.

+	 * For value type date and time, the <code>formatStr</code> must follow the encoding 

+	 * rule of {@link java.text.SimpleDateFormat <code>java.text.SimpleDateFormat</code>}.

+	 * <p>

+	 * <blockquote>

+	 * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing ValueType, Distinguish Symbol

+	 * and Distinguish Priority.">

+	 *     <tr bgcolor="#ccccff">

+	 *          <th align=left>ValueType

+	 *          <th align=left>Distinguish Symbol

+	 *          <th align=left>Distinguish Priority

+	 *     <tr valign=top>

+	 *          <td>percentage

+	 *          <td>%

+	 *          <td>1

+	 *     <tr valign=top>

+	 *          <td>time

+	 *          <td>H, k, m, s, S

+	 *          <td>2

+	 *     <tr valign=top>

+	 *          <td>date

+	 *          <td>y, M, w, W, D, d, F, E, K, h

+	 *          <td>3

+	 *     <tr valign=top>

+	 *          <td>float

+	 *          <td>#, 0

+	 *          <td>4

+	 * </table>

+	 * </blockquote>

+	 * If adaptive failed, an {@link java.lang.UnsupportedOperationException} will be thrown.

+	 * <p>

+	 * @param formatStr	the cell need be formatted as this specified format string.

+	 * @throws IllegalArgumentException if <code>formatStr</code> is null or the cell value type is supported.

+	 * @see java.text.SimpleDateFormat

+	 * @see java.text.DecimalFormat

+	 */

+	protected void setFormatString(String formatStr,

+			OfficeValueTypeAttribute.Value type, Locale locale) {

+		if (locale == null) {

+			locale = Locale.US;

+		}

+		if (formatStr == null)

+			throw new IllegalArgumentException("formatStr cannot be null.");

+

+		if (type == OfficeValueTypeAttribute.Value.FLOAT) {

+			OdfNumberStyle numberStyle = new OdfNumberStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniqueNumberStyleName());

+			numberStyle.setNumberLanguageAttribute(locale.getLanguage());

+			numberStyle.setNumberCountryAttribute(locale.getCountry());

+			drawingShape.getOdfElement().getAutomaticStyles().appendChild(

+					numberStyle);

+			setDataDisplayStyleName(numberStyle.getStyleNameAttribute());

+		} else if (type == OfficeValueTypeAttribute.Value.DATE) {

+			OdfNumberDateStyle dateStyle = new OdfNumberDateStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniqueDateStyleName(), null);

+			dateStyle.setNumberLanguageAttribute(locale.getLanguage());

+			dateStyle.setNumberCountryAttribute(locale.getCountry());

+			drawingShape.getOdfElement().getAutomaticStyles().appendChild(

+					dateStyle);

+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());

+		} else if (type == OfficeValueTypeAttribute.Value.TIME) {

+			OdfNumberTimeStyle timeStyle = new OdfNumberTimeStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniqueDateStyleName());

+			timeStyle.setNumberLanguageAttribute(locale.getLanguage());

+			timeStyle.setNumberCountryAttribute(locale.getCountry());

+			drawingShape.getOdfElement().getAutomaticStyles().appendChild(

+					timeStyle);

+			setDataDisplayStyleName(timeStyle.getStyleNameAttribute());

+		} else if (type == OfficeValueTypeAttribute.Value.PERCENTAGE) {

+			OdfNumberPercentageStyle dateStyle = new OdfNumberPercentageStyle(

+					(OdfFileDom) mElement.getOwnerDocument(), formatStr,

+					getUniquePercentageStyleName());

+			dateStyle.setNumberLanguageAttribute(locale.getLanguage());

+			dateStyle.setNumberCountryAttribute(locale.getCountry());

+			drawingShape.getOdfElement().getAutomaticStyles().appendChild(

+					dateStyle);

+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());

+		} else {

+			throw new IllegalArgumentException("This function doesn't support "

+					+ type + " fomat.");

+		}

+	}

+

+	/**

+	 * Get the format string of the field.

+	 * 

+	 * @return the format string of the field

+	 */

+	public String getFormatString(OfficeValueTypeAttribute.Value typeValue) {

+		Document mDocument = ((Document) ((OdfFileDom) mElement

+				.getOwnerDocument()).getDocument());

+

+		if (typeValue == OfficeValueTypeAttribute.Value.FLOAT) {

+			String name = getDataDisplayStyleName();

+			OdfNumberStyle style = drawingShape.getOdfElement()

+					.getAutomaticStyles().getNumberStyle(name);

+			if (style == null) {

+				style = ((OdfSchemaDocument) mDocument).getDocumentStyles()

+						.getNumberStyle(name);

+			}

+			if (style != null) {

+				return style.getFormat();

+			}

+		} else if (typeValue == OfficeValueTypeAttribute.Value.DATE) {

+			String name = getDataDisplayStyleName();

+			OdfNumberDateStyle style = drawingShape.getOdfElement()

+					.getAutomaticStyles().getDateStyle(name);

+			if (style == null) {

+				style = ((OdfSchemaDocument) mDocument).getDocumentStyles()

+						.getDateStyle(name);

+			}

+			if (style != null) {

+				return style.getFormat();

+			}

+		} else if (typeValue == OfficeValueTypeAttribute.Value.TIME) {

+			String name = getDataDisplayStyleName();

+			OdfNumberDateStyle style = drawingShape.getOdfElement()

+					.getAutomaticStyles().getDateStyle(name);

+			if (style == null) {

+				style = ((OdfSchemaDocument) mDocument).getDocumentStyles()

+						.getDateStyle(name);

+			}

+			if (style != null) {

+				return style.getFormat();

+			}

+		} else if (typeValue == OfficeValueTypeAttribute.Value.PERCENTAGE) {

+			String name = getDataDisplayStyleName();

+			OdfNumberPercentageStyle style = drawingShape.getOdfElement()

+					.getAutomaticStyles().getPercentageStyle(name);

+			if (style == null) {

+				style = ((OdfSchemaDocument) mDocument).getDocumentStyles()

+						.getPercentageStyle(name);

+			}

+			if (style != null) {

+				return style.getFormat();

+			}

+		}

+		return null;

+	}

+

+	private void setDataDisplayStyleName(String name) {

+		OdfStyleBase styleElement = drawingShape.getStyleHandler()

+				.getStyleElementForWrite();

+		if (styleElement != null) {

+			styleElement.setOdfAttributeValue(OdfName.newName(

+					OdfDocumentNamespace.STYLE, "data-style-name"), name);

+		}

+	}

+

+	private String getDataDisplayStyleName() {

+		String datadisplayStylename = null;

+		OdfStyleBase styleElement = drawingShape.getStyleHandler()

+				.getStyleElementForRead();

+		if (styleElement != null) {

+			datadisplayStylename = styleElement.getOdfAttributeValue(OdfName

+					.newName(OdfDocumentNamespace.STYLE, "data-style-name"));

+		}

+

+		return datadisplayStylename;

+	}

+

+	private String getUniqueNumberStyleName() {

+		String unique_name;

+		OdfOfficeAutomaticStyles styles = drawingShape.getOdfElement()

+				.getAutomaticStyles();

+		do {

+			unique_name = String.format("n%06x",

+					(int) (Math.random() * 0xffffff));

+		} while (styles.getNumberStyle(unique_name) != null);

+		return unique_name;

+	}

+

+	private String getUniqueDateStyleName() {

+		String unique_name;

+		OdfOfficeAutomaticStyles styles = drawingShape.getOdfElement()

+				.getAutomaticStyles();

+		do {

+			unique_name = String.format("d%06x",

+					(int) (Math.random() * 0xffffff));

+		} while (styles.getDateStyle(unique_name) != null);

+		return unique_name;

+	}

+

+	private String getUniquePercentageStyleName() {

+		String unique_name;

+		OdfOfficeAutomaticStyles styles = drawingShape.getOdfElement()

+				.getAutomaticStyles();

+		do {

+			unique_name = String.format("p%06x",

+					(int) (Math.random() * 0xffffff));

+		} while (styles.getPercentageStyle(unique_name) != null);

+		return unique_name;

+	}

+

+	/**

+	 * Get a simple iterator for Field.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the date fields

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleFieldIterator(container);

+	}

+

+	private static class SimpleFieldIterator implements Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private Field nextElement = null;

+		private Field tempElement = null;

+

+		private SimpleFieldIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public Field next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+

+		}

+

+		private Field findNext(Field thisField) {

+			FormFormattedTextElement nextfield = null;

+			if (thisField == null) {

+				nextfield = OdfElement.findFirstChildNode(

+						FormFormattedTextElement.class, containerElement);

+			} else {

+				nextfield = OdfElement.findNextChildNode(

+						FormFormattedTextElement.class, thisField

+								.getOdfElement());

+			}

+			if (nextfield != null) {

+				return Field.getInstanceOf(nextfield);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/Form.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Form.java
new file mode 100644
index 0000000..5c80682
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Form.java
@@ -0,0 +1,336 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.simple.draw.ControlContainer;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormCommandType;

+

+/**

+ * This class represents form object. It provides method to get/set form

+ * properties, content, layout and styles. A form is a container to hold

+ * controls like buttons, combo boxes, labels, fields, check boxes, radio

+ * buttons, text boxes, list boxes and etc.

+ * 

+ * @since 0.8

+ */

+public interface Form {

+

+	/**

+	 * Create a button control in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param label

+	 *            - the text label of the button

+	 * 

+	 * @return an instance of button

+	 */

+	public FormControl createButton(ControlContainer parent,

+			FrameRectangle rectangle, String name, String label);

+

+	/**

+	 * Create a label control in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param text

+	 *            -default text of the label

+	 * 

+	 * @return an instance of label

+	 */

+	public FormControl createLabel(ControlContainer parent,

+			FrameRectangle rectangle, String name, String text);

+

+	/**

+	 * Create a textbox in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultText

+	 *            -default text of the textbox

+	 * @param isMultipleLine

+	 *            - if this textbox supports multiple lines input

+	 * 

+	 * @return an instance of text box

+	 */

+	public FormControl createTextBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultText,

+			boolean isMultipleLine);

+

+	/**

+	 * Create a list box in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param isMultiSelection

+	 *            - support multi-selection or not

+	 * @param isDropDown

+	 *            - the drop-down list is visible or not

+	 * 

+	 * @return an instance of list box

+	 */

+	public FormControl createListBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, boolean isMultiSelection,

+			boolean isDropDown);

+

+	/**

+	 * Create a combo box in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultText

+	 *            - the default text of combobox

+	 * @param isDropDown

+	 *            - the drop-down list is visible or not

+	 * 

+	 * @return an instance of combo box

+	 */

+	public FormControl createComboBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultText,

+			boolean isDropDown);

+

+	/**

+	 * Create a radio button in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param label

+	 *            - the label of this radio button

+	 * @param value

+	 *            - the value assign to this option

+	 * 

+	 * @return an instance of radio button

+	 */

+	public FormControl createRadioButton(ControlContainer parent,

+			FrameRectangle rectangle, String name, String label, String value);

+

+	/**

+	 * Create a check box in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param label

+	 *            - the label of this check box

+	 * @param value

+	 *            - the value assign to this option

+	 * 

+	 * @return an instance of check box

+	 */

+	public FormControl createCheckBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, String label, String value);

+

+	/**

+	 * Create a date field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field

+	 * 

+	 * @return an instance of date field

+	 */

+	public FormControl createDateField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue);

+

+	/**

+	 * Create a time field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field

+	 * 

+	 * @return an instance of time field

+	 */

+	public FormControl createTimeField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue);

+

+	/**

+	 * Create a numeric field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field

+	 * 

+	 * @return an instance of numeric field

+	 */

+	public FormControl createNumericField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue);

+

+	/**

+	 * Create a pattern field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field

+	 * 

+	 * @return an instance of pattern field

+	 */

+	public FormControl createPatternField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue);

+

+	/**

+	 * Create a currency field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field

+	 * 

+	 * @return an instance of currency field

+	 */

+	public FormControl createCurrencyField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue);

+

+	/**

+	 * Set the name of this form

+	 * 

+	 * @param name

+	 *            - the form name

+	 */

+	public void setFormName(String name);

+

+	/**

+	 * Get the form name

+	 * 

+	 * @return the form name

+	 */

+	public String getFormName();

+

+	/**

+	 * Set the implementation of the created control

+	 * 

+	 * @param controlImpl

+	 *            - implementation of control

+	 */

+	public void setControlImplementation(String controlImpl);

+

+	/**

+	 * Get the implementation of the created control

+	 * 

+	 * @return a control implementation

+	 */

+	public String getControlImplementation();

+

+	/**

+	 * Set the data source to be used by the form

+	 * 

+	 * @param dataSource

+	 *            - name of data source

+	 */

+	public void setDataSource(String dataSource);

+

+	/**

+	 * Get the name of data source

+	 * 

+	 * @return the name of data source used by the form

+	 */

+	public String getDataSource();

+

+	/**

+	 * Set the type of command to execute on a data source.

+	 * 

+	 * @param commandType

+	 *            the command type

+	 */

+	public void setCommandType(FormCommandType commandType);

+

+	/**

+	 * Get the type of command to execute on a data source

+	 * 

+	 * @return the command type

+	 */

+	public FormCommandType getCommandType();

+

+	/**

+	 * Set a command to execute on a data source

+	 * 

+	 * @param command

+	 * 

+	 */

+	public void setCommand(String command);

+

+	/**

+	 * Get the command to execute on a data source

+	 * 

+	 * @return the command

+	 */

+	public String getCommand();

+

+	/**

+	 * Get the instance of <code>FormFormElemnt</code> element.

+	 * 

+	 * @return the instance of <code>FormFormElemnt</code>

+	 */

+	public FormFormElement getOdfElement();

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormContainer.java
new file mode 100644
index 0000000..509a3df
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormContainer.java
@@ -0,0 +1,117 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+

+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;

+

+/**

+ * FormContainer is a container which maintains Form(s) as element(s).

+ * 

+ * @since 0.8

+ */

+public interface FormContainer {

+

+	/**

+	 * Get the ODF element <code>OfficeFormsElement</code> which can have

+	 * <code>FormFormElement</code> as child element directly according to ODF

+	 * specification. This element will help to find the position to insert a

+	 * new <code>FormFormElement</code> element.

+	 * 

+	 * @return the element of office:forms

+	 */

+	public OfficeFormsElement getFormContainerElement();

+

+	/**

+	 * create and add a form into this container.

+	 * 

+	 * @param name

+	 *            - form name, represents attribute <code>form:name</code>

+	 * @return an instance of Form

+	 */

+	public Form createForm(String name);

+

+	/**

+	 * Remove the form and its binding shape.

+	 * 

+	 * @param form

+	 *            - the form to be removed

+	 * @return true if the form is removed successfully, false if errors happen.

+	 */

+	public boolean removeForm(Form form);

+

+	/**

+	 * Return a form whose name is a given value.

+	 * 

+	 * @param name

+	 *            - the name of the form

+	 * @return a form whose name is a given value

+	 */

+	public Form getFormByName(String name);

+

+	/**

+	 * Get an iterator to traverse each form in this container.

+	 * 

+	 * @return form iterator

+	 */

+	public Iterator<Form> getFormIterator();

+

+	/**

+	 * Get the attribute <code>form:apply-design-mode</code> which specifies

+	 * whether forms are presented in editable or non-editable state.

+	 * 

+	 * @return true if forms in document are presented in editable state;false

+	 *         if forms in document are presented in completed state

+	 */

+	public boolean getApplyDesignMode();

+

+	/**

+	 * Get the attribute <code>form:automatic-focus</code> which specifies

+	 * whether the consumer loading the document should set the focus to a form

+	 * control.

+	 * 

+	 * @return true if sets the focus to a form control after loading the

+	 *         document; false if else.

+	 */

+	public boolean getAutomaticFocus();

+

+	/**

+	 * Set the attribute <code>form:apply-design-mode</code> which specifies

+	 * whether forms are presented in editable or non-editable state.

+	 * 

+	 * @param isDesignMode

+	 *            - true if forms in document are presented in editable state;

+	 *            false if forms in document are presented in completed state

+	 */

+	public void setApplyDesignMode(boolean isDesignMode);

+

+	/**

+	 * Set the attribute <code>form:automatic-focus</code> which specifies

+	 * whether the consumer loading the document should set the focus to a form

+	 * control.

+	 * 

+	 * @param isAutoFocus

+	 *            -true if sets the focus to a form control after loading the

+	 *            document; false if else.

+	 */

+	public void setAutomaticFocus(boolean isAutoFocus);

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormControl.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormControl.java
new file mode 100644
index 0000000..a1c3033
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormControl.java
@@ -0,0 +1,274 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.apache.xerces.dom.NodeImpl;

+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertyElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Component;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.draw.Control;

+import org.odftoolkit.simple.draw.ControlContainer;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.w3c.dom.NodeList;

+

+/**

+ *This class represents the form control, which provides the methods to get/set

+ * the control properties and style and layout properties of its binding drawing

+ * shape.

+ * 

+ * @since 0.8

+ */

+public abstract class FormControl extends Component {

+

+	protected Control drawingShape;

+	protected FormFormElement formElement;

+	protected FormPropertiesElement mFormProperties;

+	protected OdfElement mElement;

+

+	/**

+	 * Create an instance of a drawing shape(<code>DrawControlElement</code>) as

+	 * an visual representation of this form control.

+	 * 

+	 * @param parent

+	 *            - the container where this drawing shape is contained.

+	 * @return an instance of drawing shape

+	 */

+	Control createDrawControl(ControlContainer parent) {

+		drawingShape = parent.createDrawControl();

+		drawingShape.setControl(getId());

+		return drawingShape;

+	}

+

+	/**

+	 * Remove the form control from the container.

+	 * <p>

+	 * The resource is removed if it's only used by this object.

+	 * 

+	 * @see Control#remove()

+	 * 

+	 * @return true if the form control is successfully removed; false if

+	 *         otherwise.

+	 */

+	public boolean remove() {

+		try {

+			Document mOwnerDocument = (Document) ((OdfFileDom) mElement

+					.getOwnerDocument()).getDocument();

+			if (getDrawControl() == null)

+				loadDrawControl(mOwnerDocument.getContentRoot());

+			getDrawControl().remove();

+			formElement.removeChild(getOdfElement());

+			mOwnerDocument.removeElementLinkedResource(getOdfElement());

+			return true;

+		} catch (Exception e) {

+			Logger.getLogger(FormControl.class.getName()).log(Level.SEVERE,

+					"fail to remove this element.");

+			return false;

+		}

+	}

+

+	/**

+	 * Load an instance of drawing shape by searching the DrawControlElement

+	 * which contains a reference to this control.

+	 * 

+	 * @param root

+	 *            - root element where to search the DrawControlElement

+	 * @return true if an element is found; false no element is found.

+	 */

+	boolean loadDrawControl(OdfElement root) {

+		NodeList controls = root.getElementsByTagName("draw:control");

+		for (int i = 0; i < controls.getLength(); i++) {

+			DrawControlElement control = (DrawControlElement) controls.item(i);

+			if (control.getDrawControlAttribute().equals(getId())) {

+				drawingShape = (Control) Component

+						.getComponentByElement(control);

+				if (drawingShape == null) {

+					drawingShape = new Control(control);

+					Component.registerComponent(drawingShape, control);

+				}

+				return true;

+			}

+		}

+		return false;

+

+	}

+

+	/**

+	 * Get the OdfElement which represents this control

+	 * 

+	 * @return the OdfElement which represents this control

+	 */

+	public OdfElement getOdfElement() {

+		return mElement;

+	}

+

+	/**

+	 * Get the drawing shape binding to this control

+	 * 

+	 * @return the drawing shape binding to this control

+	 */

+	public Control getDrawControl() {

+		return drawingShape;

+	}

+

+	/**

+	 * Set the control id.

+	 * 

+	 * @param id

+	 *            -the control id.

+	 */

+	public abstract void setId(String id);

+

+	/**

+	 * Get the control id.

+	 * 

+	 * @return the control id.

+	 */

+	public abstract String getId();

+

+	/**

+	 * Set the control name.

+	 * 

+	 * @param name

+	 *            - the control name.

+	 */

+	public abstract void setName(String name);

+

+	/**

+	 * Get the control name.

+	 * 

+	 * @return the control name.

+	 */

+	public abstract String getName();

+

+	/**

+	 * Set the implementation of this control.

+	 * 

+	 * @param controlImpl

+	 *            - the implementation description of this control

+	 */

+	public abstract void setControlImplementation(String controlImpl);

+

+	/**

+	 * Set the anchor position how this form control is bound to a text

+	 * document.

+	 * 

+	 * @param anchorType

+	 *            - the anchor position

+	 */

+	public void setAnchorType(AnchorType anchorType) {

+		if (drawingShape == null)

+			throw new IllegalStateException(

+					"No drawing shape is binding to this control. Please call createDrawControl() or loadDrawControl() first.");

+		drawingShape.setAchorType(anchorType);

+	}

+

+	/**

+	 * Return the rectangle used as the bounding box of this form control

+	 * 

+	 * @return - the rectangle

+	 */

+	public FrameRectangle getRectangle() {

+		return getDrawControl().getRectangle();

+	}

+

+	/**

+	 * Set the rectangle used as the bounding box of this form control

+	 * 

+	 * @param rectangle

+	 *            - the rectangle

+	 */

+	public void setRectangle(FrameRectangle rectangle) {

+		getDrawControl().setRectangle(rectangle);

+

+	}

+

+	/**

+	 * Get the <code>FormPropertiesElement</code> of this control, which is used

+	 * to set the implementation-independent properties. If there's no such

+	 * element, create a new one for this control.

+	 * 

+	 * @return an instance of the <code>FormPropertiesElement</code>

+	 */

+	abstract FormPropertiesElement getFormPropertiesElementForWrite();

+

+	/**

+	 * Get the <code>FormPropertiesElement</code> of this control, which is used

+	 * to set the implementation-independent properties. If there's no such

+	 * element, null will be returned.

+	 * 

+	 * @return an instance of the <code>FormPropertiesElement</code>

+	 */

+	FormPropertiesElement getFormPropertiesElementForRead() {

+		return mFormProperties;

+	}

+

+	protected void setFormProperty(String formPropertyName,

+			String officeValueType, String officeStringValue,

+			Boolean officeBooleanValue, String officeDateValue,

+			String officeTimeValue, Double officeValue, String officeCurrency) {

+		FormPropertiesElement parentEle = getFormPropertiesElementForWrite();

+

+		// find the existing property with the appointed form property name

+		NodeList properties = parentEle.getChildNodes();

+		FormPropertyElement formProperty = null;

+		for (int i = 0; i < properties.getLength(); i++) {

+			FormPropertyElement property = (FormPropertyElement) properties

+					.item(i);

+			if (property.getFormPropertyNameAttribute()

+					.equals(formPropertyName)) {

+				formProperty = (FormPropertyElement) properties.item(i);

+				break;

+			}

+		}

+		// create a new property

+		if (formProperty == null) {

+			org.w3c.dom.Document ownerDocument = parentEle.getOwnerDocument();

+			formProperty = ((OdfFileDom) ownerDocument)

+					.newOdfElement(FormPropertyElement.class);

+			formProperty.setFormPropertyNameAttribute(formPropertyName);

+			formProperty.setOfficeValueTypeAttribute(officeValueType);

+		}

+		// set the value

+		if (officeStringValue != null)

+			formProperty.setOfficeStringValueAttribute(officeStringValue);

+		if (officeBooleanValue != null)

+			formProperty.setOfficeBooleanValueAttribute(officeBooleanValue);

+		if (officeDateValue != null)

+			formProperty.setOfficeDateValueAttribute(officeDateValue);

+		if (officeTimeValue != null)

+			formProperty.setOfficeTimeValueAttribute(officeTimeValue);

+		if (officeValue != null)

+			formProperty.setOfficeValueAttribute(officeValue);

+		if (officeCurrency != null)

+			formProperty.setOfficeCurrencyAttribute(officeCurrency);

+

+		((NodeImpl) parentEle).appendChild(formProperty);

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormProvider.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormProvider.java
new file mode 100644
index 0000000..59e9dce
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormProvider.java
@@ -0,0 +1,52 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;

+

+/**

+ * FormProvider provides the methods to create and get form instance in a way

+ * that is implementation-independent.

+ * 

+ * @since 0.8

+ */

+public interface FormProvider {

+

+	/**

+	 * Create a form in a way that is implementation-independent.

+	 * 

+	 * @param name

+	 *            -the form name

+	 * @param parent

+	 *            -the container element of this form

+	 * @return a form instance

+	 */

+	public Form createForm(String name, OfficeFormsElement parent);

+

+	/**

+	 * Get a form instance by a <code>FormFormElement</code>

+	 * 

+	 * @param element

+	 *            - a <code>FormFormElement</code>

+	 * @return a form instance

+	 */

+	public Form getInstanceOf(FormFormElement element);

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormTypeDefinition.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormTypeDefinition.java
new file mode 100644
index 0000000..86549da
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/FormTypeDefinition.java
@@ -0,0 +1,150 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+/**

+ * This class defines the common used constants in form handling methods.

+ * 

+ * @since 0.8

+ */

+public class FormTypeDefinition {

+	/**

+	 * Common used image position of form from users perspective.

+	 * <p>

+	 * This attibute specifies the location of an image relative to the text of

+	 * a control.

+	 * 

+	 */

+	public static enum FormImageLocation {

+		BOTTOM("bottom"), CENTER("center"), END("end"), START("start"), TOP(

+				"top");

+

+		private String formImageLocation = "center";

+

+		FormImageLocation(String location) {

+			this.formImageLocation = location;

+		}

+

+		@Override

+		public String toString() {

+			return formImageLocation;

+		}

+	}

+

+	/**

+	 * Common used command type of form from users perspective. *

+	 * <p>

+	 * This attibute specifies the type of command to execute on a data source.

+	 */

+	public static enum FormCommandType {

+		COMMAND("command"), QUERY("query"), TABLE("table");

+

+		private String formCommandType = "command";

+

+		FormCommandType(String type) {

+			this.formCommandType = type;

+		}

+

+		public static FormCommandType enumValueOf(String aValue) {

+			if ((aValue == null) || (aValue.length() == 0))

+				return null;

+

+			for (FormCommandType aIter : values()) {

+				if (aValue.equals(aIter.toString())) {

+					return aIter;

+				}

+			}

+			throw new RuntimeException("Unsupported Form Command Type!");

+		}

+

+		@Override

+		public String toString() {

+			return formCommandType;

+		}

+	}

+

+	// table, query, sql, sql-pass-through, value-list or table-fields

+	/**

+	 * Common used source type of entry list from users perspective.

+	 * <p>

+	 * This attibutes pecifies how to populate the entry list in a combo box or

+	 * list box control.

+	 */

+	public static enum FormListSourceType {

+		TABLE("table"), QUERY("query"), SQL("sql"), SQL_PASS_THROUGH(

+				"sql-pass-through"), VALUE_LIST("value-list"), TABLE_FIELDS(

+				"table-fields");

+

+		private String formListSourceType = "sql";

+

+		FormListSourceType(String type) {

+			this.formListSourceType = type;

+		}

+

+		public static FormListSourceType enumValueOf(String aValue) {

+			if ((aValue == null) || (aValue.length() == 0))

+				return null;

+

+			for (FormListSourceType aIter : values()) {

+				if (aValue.equals(aIter.toString())) {

+					return aIter;

+				}

+			}

+			throw new RuntimeException("Unsupported Form Command Type!");

+		}

+

+		@Override

+		public String toString() {

+			return formListSourceType;

+		}

+	}

+

+	/**

+	 * Common used state for a check box from users perspective.

+	 * <p>

+	 *This attibutes pecifies the default state of a check box control.

+	 */

+	public static enum FormCheckboxState {

+		CHECKED("checked"), UNCHECKED("unchecked"), UNKNOWN("unknown");

+

+		private String formCheckboxState = "unchecked";

+

+		FormCheckboxState(String state) {

+			this.formCheckboxState = state;

+		}

+

+		public static FormCheckboxState enumValueOf(String aValue) {

+			if ((aValue == null) || (aValue.length() == 0))

+				return null;

+

+			for (FormCheckboxState aIter : values()) {

+				if (aValue.equals(aIter.toString())) {

+					return aIter;

+				}

+			}

+			throw new RuntimeException("Unsupported Check Box State!");

+		}

+

+		@Override

+		public String toString() {

+			return formCheckboxState;

+		}

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/Label.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Label.java
new file mode 100644
index 0000000..b805cee
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/Label.java
@@ -0,0 +1,184 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFixedTextElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+

+/**

+ * This class represents the form control of Label, provides methods to get/set

+ * the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class Label extends FormControl {

+

+	Label(FormFixedTextElement element) {

+		mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of label by an instance of FormFixedTextElement, while

+	 * searching the document content to make a bind with the DrawControl which

+	 * already reference to this label.

+	 * 

+	 * @param element

+	 *            - an instance of FormFixedTextElement

+	 * @return an instance of label

+	 */

+	public static Label getInstanceOf(FormFixedTextElement element) {

+		Label label = new Label(element);

+		try {

+			label.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(Label.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this label.");

+		}

+		return label;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormFixedTextElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	@Override

+	public String getId() {

+		return ((FormFixedTextElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormFixedTextElement) mElement).setFormIdAttribute(id);

+	}

+

+	@Override

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormFixedTextElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	@Override

+	public String getName() {

+		return ((FormFixedTextElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormFixedTextElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Set the text content of this label

+	 * 

+	 * @param label

+	 *            - the text content of this label

+	 */

+	public void setLabel(String label) {

+		((FormFixedTextElement) mElement).setFormLabelAttribute(label);

+	}

+

+	/**

+	 * Get the text content of this label

+	 * 

+	 * @return the text content of this label

+	 */

+	public String getLabel() {

+		return ((FormFixedTextElement) mElement).getFormLabelAttribute();

+	}

+

+	/**

+	 * Get a simple iterator for labels.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the labels

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleLabelIterator(container);

+	}

+

+	private static class SimpleLabelIterator implements Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private Label nextElement = null;

+		private Label tempElement = null;

+

+		private SimpleLabelIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public Label next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+

+		}

+

+		private Label findNext(Label thisLabel) {

+			FormFixedTextElement nextLabel = null;

+			if (thisLabel == null) {

+				nextLabel = OdfElement.findFirstChildNode(

+						FormFixedTextElement.class, containerElement);

+			} else {

+				nextLabel = OdfElement.findNextChildNode(

+						FormFixedTextElement.class, thisLabel.getOdfElement());

+			}

+

+			if (nextLabel != null) {

+				return Label.getInstanceOf(nextLabel);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/ListBox.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/ListBox.java
new file mode 100644
index 0000000..edd6221
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/ListBox.java
@@ -0,0 +1,320 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormListboxElement;

+import org.odftoolkit.odfdom.dom.element.form.FormOptionElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormListSourceType;

+import org.w3c.dom.NodeList;

+

+/**

+ * This class represents the form control of List Box, provides methods to

+ * get/set the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class ListBox extends FormControl {

+

+	private ArrayList<String> entries;

+

+	ListBox(FormListboxElement element) {

+		this.mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of list box by an instance of FormListboxElement, while

+	 * searching the document content to make a bind with the DrawControl which

+	 * already reference to this list box.

+	 * 

+	 * @param element

+	 *            - an instance of FormComboboxElement

+	 * @return an instance of list box

+	 */

+	public static ListBox getInstanceOf(FormListboxElement element) {

+		ListBox listbox = new ListBox(element);

+		try {

+			listbox.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(ListBox.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this listbox.");

+		}

+		return listbox;

+	}

+

+	@Override

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormListboxElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormListboxElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	@Override

+	public String getId() {

+		return ((FormListboxElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormListboxElement) mElement).setFormIdAttribute(id);

+	}

+

+	@Override

+	public String getName() {

+		return ((FormListboxElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormListboxElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Set if the list box support multi-selection

+	 * 

+	 * @param isMultiSelection

+	 *            - specify if the list box supports multi-selection

+	 */

+	public void setFormMultiSelection(boolean isMultiSelection) {

+		((FormListboxElement) mElement)

+				.setFormMultipleAttribute(isMultiSelection);

+	}

+

+	/**

+	 * Get if the list box support multi-selection

+	 * 

+	 * @return true if the list box supports multi-selection; false if not.

+	 */

+	public boolean getFormMultiSelection() {

+		return ((FormListboxElement) mElement).getFormMultipleAttribute();

+	}

+

+	/**

+	 * Set the visibility of the drop-down list

+	 * 

+	 * @param isDropDown

+	 *            - specify if the drop-down list is visible

+	 */

+	public void setFormDropdown(boolean isDropDown) {

+		((FormListboxElement) mElement).setFormDropdownAttribute(isDropDown);

+	}

+

+	/**

+	 * Get the visibility of the drop-down list

+	 * 

+	 * @return true if the drop-down list is visible; false if not.

+	 */

+	public boolean getFormDropdown() {

+		return ((FormListboxElement) mElement).getFormDropdownAttribute();

+	}

+

+	/**

+	 * Add a list item to this list box.

+	 * 

+	 * @param item

+	 *            - a list item

+	 */

+	public void addItem(String item) {

+		if (item == null)

+			return;

+		if (entries == null)

+			entries = new ArrayList<String>();

+		((FormListboxElement) mElement).newFormOptionElement()

+				.setFormLabelAttribute(item);

+		entries.add(item);

+	}

+

+	/**

+	 * Get the list entries if they are initiated through a list of string.

+	 * 

+	 * @return the list entries

+	 */

+	public ArrayList<String> getEntries() {

+		if (entries == null || entries.size() == 0) {

+			NodeList items = mElement.getElementsByTagName("form:option");

+			if (items != null && items.getLength() > 0) {

+				for (int i = 0; i < items.getLength(); i++) {

+					if (entries == null)

+						entries = new ArrayList<String>();

+					entries.add(((FormOptionElement) items.item(i))

+							.getFormLabelAttribute());

+				}

+				return entries;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Add a group of list items to this list box

+	 * 

+	 * @param items

+	 *            -a group of list items

+	 */

+	public void addItems(String[] items) {

+		if (items == null || items.length == 0)

+			return;

+		for (int i = 0; i < items.length; i++) {

+			addItem(items[i]);

+		}

+	}

+

+	/**

+	 * Set the source type of the data list.

+	 * 

+	 * @param type

+	 *            - the source type of this list

+	 */

+	public void setListSourceType(FormListSourceType type) {

+		((FormListboxElement) mElement).setFormListSourceTypeAttribute(type

+				.toString());

+	}

+

+	/**

+	 * Get the source type of the data list.

+	 * 

+	 * @return the source type of this list

+	 */

+	public FormListSourceType getListSourceType() {

+		String aValue = ((FormListboxElement) mElement)

+				.getFormListSourceTypeAttribute();

+		return FormListSourceType.enumValueOf(aValue);

+	}

+

+	/**

+	 * Set the source of this data list.

+	 * 

+	 * @param listSource

+	 *            - the source of this data list.

+	 */

+	public void setListSource(String listSource) {

+		((FormListboxElement) mElement).setFormListSourceAttribute(listSource);

+	}

+

+	/**

+	 * Get the source of this data list.

+	 * 

+	 * @return the source of this data list.

+	 */

+	public String getListSource() {

+		return ((FormListboxElement) mElement).getFormListSourceAttribute();

+	}

+

+	/**

+	 * Set the data field referenced by this combo box

+	 * 

+	 * @param dataField

+	 *            - the data field referenced by this combo box

+	 */

+	public void setDataField(String dataField) {

+		((FormListboxElement) mElement).setFormDataFieldAttribute(dataField);

+	}

+

+	/**

+	 * Get the data field referenced by this combo box

+	 * 

+	 * @return the data field

+	 */

+	public String getDataField() {

+		return ((FormListboxElement) mElement).getFormDataFieldAttribute();

+	}

+

+	/**

+	 * Get a simple iterator for list boxes.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the list boxes

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleListBoxIterator(container);

+	}

+

+	private static class SimpleListBoxIterator implements Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private ListBox nextElement = null;

+		private ListBox tempElement = null;

+

+		private SimpleListBoxIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public ListBox next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+		}

+

+		private ListBox findNext(ListBox thisListBox) {

+			FormListboxElement nextListBox = null;

+			if (thisListBox == null) {

+				nextListBox = OdfElement.findFirstChildNode(

+						FormListboxElement.class, containerElement);

+			} else {

+				nextListBox = OdfElement.findNextChildNode(

+						FormListboxElement.class, thisListBox.getOdfElement());

+			}

+

+			if (nextListBox != null) {

+				return ListBox.getInstanceOf(nextListBox);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/NumericField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/NumericField.java
new file mode 100644
index 0000000..815ccaa
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/NumericField.java
@@ -0,0 +1,77 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+

+public class NumericField extends Field {

+

+	NumericField(FormFormattedTextElement element) {

+		super(element);

+	}

+

+	/**

+	 * Get an instance of numeric field by an instance of

+	 * FormFormattedTextElement, while searching the document content to make a

+	 * bind with the DrawControl which already reference to this numeric field.

+	 * 

+	 * @param element

+	 *            - an instance of FormFormattedTextElement

+	 * @return an instance of numeric field

+	 */

+	public static TimeField getInstanceOf(FormFormattedTextElement element) {

+		TimeField field = new TimeField(element);

+		try {

+			field.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(DateField.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this field.");

+		}

+		return field;

+	}

+

+	/**

+	 * Set the decimal accuracy of the input value

+	 * 

+	 * @param value

+	 *            - specify how many digits will be kept after the decimal point

+	 */

+	public void setDecimalAccuracy(double value) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_DECIMALACCURACY,

+				"float", null, null, null, null, value, null);

+	}

+

+	/**

+	 * Set the step value for the spin button.

+	 * 

+	 * @param value

+	 *            - the step value for the spin button.

+	 */

+	public void setStepValue(double value) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_VALUESTEP,

+				"float", null, null, null, null, value, null);

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/OOForm.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/OOForm.java
new file mode 100644
index 0000000..6d809e5
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/OOForm.java
@@ -0,0 +1,546 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import org.odftoolkit.odfdom.dom.element.form.FormButtonElement;

+import org.odftoolkit.odfdom.dom.element.form.FormCheckboxElement;

+import org.odftoolkit.odfdom.dom.element.form.FormComboboxElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFixedTextElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFrameElement;

+import org.odftoolkit.odfdom.dom.element.form.FormListboxElement;

+import org.odftoolkit.odfdom.dom.element.form.FormRadioElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Component;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlContainer;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormCommandType;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormImageLocation;

+import org.odftoolkit.simple.form.OOFormProvider.FieldType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+

+/**

+ * This class implements the interface of Form according to the implementation

+ * of OpenOffice.org.

+ * 

+ * @since 0.8

+ * 

+ */

+public class OOForm extends Component implements Form {

+

+	private FormFormElement mElement;

+	private Document mOwnerDocument;

+	protected OfficeFormsElement mFormContainerElement;

+	private int controlCount;

+

+	private OOForm(FormFormElement element) {

+		mElement = element;

+		mOwnerDocument = (Document) ((OdfFileDom) mElement.getOwnerDocument())

+				.getDocument();

+		mFormContainerElement = (OfficeFormsElement) mElement.getParentNode();

+	}

+

+	static OOForm createForm(String name, OfficeFormsElement parent) {

+		OOForm form = null;

+		if (parent != null) {

+			FormFormElement element = parent.newFormFormElement();

+			form = new OOForm(element);

+			form.setFormName(name);

+			form

+					.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_FORM);

+			Component.registerComponent(form, element);

+		}

+		return form;

+	}

+

+	public Document getOwnerDocument() {

+		return mOwnerDocument;

+	}

+

+	/**

+	 * Get a form instance by an instance of <code>FormFormElement</code>.

+	 * 

+	 * @param element

+	 * @return

+	 */

+	public static Form getInstance(FormFormElement element) {

+		OOForm form = null;

+		form = (OOForm) Component.getComponentByElement(element);

+		if (form == null) {

+			form = new OOForm(element);

+			Component.registerComponent(form, element);

+		}

+		return form;

+	}

+

+

+	public Button createButton(ControlContainer parent,

+			FrameRectangle rectangle, String name, String label) {

+		FormButtonElement btnElement = mElement.newFormButtonElement(

+				FormImageLocation.CENTER.toString(), generateFormId());

+		// set default control properties

+		Button btnForm = new Button(btnElement);

+		Component.registerComponent(btnForm, btnElement);

+		btnForm.setId(btnElement.getXmlIdAttribute());

+		btnForm.setName(name);

+		btnForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_COMMANDBUTTON);

+		btnForm.setLabel(label);

+		btnForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				OOFormProvider.FORM_PROPERTY_VALUE_COMMANDBUTTON, null, null,

+				null, null, null);

+		// bond to drawing shape

+		btnForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			btnForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			btnForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		btnForm.setRectangle(rectangle);

+		return btnForm;

+	}

+

+

+	public FormControl createLabel(ControlContainer parent,

+			FrameRectangle rectangle, String name, String text) {

+		FormFixedTextElement fixedTElement = mElement

+				.newFormFixedTextElement(generateFormId());

+		// set default control properties

+		Label labelForm = new Label(fixedTElement);

+		Component.registerComponent(labelForm, fixedTElement);

+		labelForm.setId(fixedTElement.getXmlIdAttribute());

+		labelForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_FIXEDTEXT);

+		labelForm.setName(name);

+		labelForm.setLabel(text);

+		// bond to drawing shape

+		labelForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			labelForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			labelForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		labelForm.setRectangle(rectangle);

+		return labelForm;

+	}

+

+

+	public FormControl createTextBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultText,

+			boolean isMultipleLine) {

+		OdfElement textBoxElement;

+		String formId = generateFormId();

+		if (isMultipleLine) {

+			textBoxElement = mElement.newFormTextareaElement(formId);

+		} else {

+			textBoxElement = mElement.newFormTextElement(formId);

+		}

+		// set default control properties

+		TextBox textBoxForm = new TextBox(textBoxElement);

+		Component.registerComponent(textBoxForm, textBoxElement);

+		textBoxForm.setId(formId);

+		textBoxForm.setName(name);

+		textBoxForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_TEXTFEILD);

+		textBoxForm.setValue(defaultText);

+		textBoxForm.setCurrentValue(defaultText);

+		textBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				OOFormProvider.FORM_PROPERTY_VALUE_TEXTFEILD, null, null, null,

+				null, null);

+		if (isMultipleLine)

+			textBoxForm.setFormProperty(

+					OOFormProvider.FORM_PROPERTY_NAME_MULTILINE, "boolean",

+					null, true, null, null, null, null);

+		textBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_OBJIDINMSO, "float", null,

+				null, null, null, 0.0, null);

+

+		// bond to drawing shape

+		textBoxForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			textBoxForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			textBoxForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		textBoxForm.setRectangle(rectangle);

+		return textBoxForm;

+	}

+

+

+	public FormControl createListBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, boolean isMultiSelection,

+			boolean isDropDown) {

+		String formId = generateFormId();

+		FormListboxElement listBoxElement = mElement

+				.newFormListboxElement(generateFormId());

+		// set default control properties

+		ListBox listBoxForm = new ListBox(listBoxElement);

+		Component.registerComponent(listBoxForm, listBoxElement);

+		listBoxForm.setId(formId);

+		listBoxForm.setName(name);

+		listBoxForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_LISTBOX);

+		listBoxForm.setFormMultiSelection(isMultiSelection);

+		if (isDropDown) {

+			listBoxForm.setFormDropdown(true);

+		}

+		listBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_COMPLEXSTRINGITEMLIST,

+				"float", null, null, null, null, null, null);

+		listBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				OOFormProvider.FORM_PROPERTY_VALUE_LISTBOX, null, null, null,

+				null, null);

+		listBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_CONTROLTYPEINMSO, "float",

+				null, null, null, null, 0.0, null);

+		listBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_FOCUSEDITEM, "float", null,

+				null, null, null, 0.0, null);

+		listBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_EXTMULTISELECTION, "float",

+				null, null, null, null, 0.0, null);

+		listBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_OBJIDINMSO, "float", null,

+				null, null, null, 0.0, null);

+		// bond to drawing shape

+		listBoxForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			listBoxForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			listBoxForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		listBoxForm.setRectangle(rectangle);

+		return listBoxForm;

+	}

+

+

+	public FormControl createComboBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultText,

+			boolean isDropDown) {

+		String formId = generateFormId();

+		FormComboboxElement comboElement = mElement

+				.newFormComboboxElement(formId);

+		// set default control properties

+		ComboBox comboBoxForm = new ComboBox(comboElement);

+		Component.registerComponent(comboBoxForm, comboElement);

+		comboBoxForm.setId(formId);

+		comboBoxForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_COMBOBOX);

+		comboBoxForm.setName(name);

+		if (defaultText != null) {

+			comboBoxForm.setCurrentValue(defaultText);

+			comboBoxForm.setValue(defaultText);

+		}

+		if (isDropDown) {

+			comboBoxForm.setFormDropdown(true);

+		}

+		comboBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_COMPLEXSTRINGITEMLIST,

+				"float", null, null, null, null, null, null);

+		comboBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				OOFormProvider.FORM_PROPERTY_VALUE_COMBOBOX, null, null, null,

+				null, null);

+		comboBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_CONTROLTYPEINMSO, "float",

+				null, null, null, null, 0.0, null);

+		comboBoxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_OBJIDINMSO, "float", null,

+				null, null, null, 0.0, null);

+		// bond to drawing shape

+		comboBoxForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			comboBoxForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			comboBoxForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		comboBoxForm.setRectangle(rectangle);

+		return comboBoxForm;

+	}

+

+

+	public FormControl createRadioButton(ControlContainer parent,

+			FrameRectangle rectangle, String name, String label, String value) {

+		String formId = generateFormId();

+		FormRadioElement radioElement = mElement.newFormRadioElement("center",

+				formId);

+		// set default control properties

+		RadioButton radioBtnForm = new RadioButton(radioElement);

+		Component.registerComponent(radioBtnForm, radioElement);

+		radioBtnForm.setId(formId);

+		radioBtnForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_RADIOBUTTON);

+		radioBtnForm.setLabel(label);

+		radioBtnForm.setName(name);

+		radioBtnForm.setValue(value);

+		radioBtnForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_CONTROLTYPEINMSO, "float",

+				null, null, null, null, 0.0, null);

+		radioBtnForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				OOFormProvider.FORM_PROPERTY_VALUE_RADIOBUTTON, null, null,

+				null, null, null);

+		// bond to drawing shape

+		radioBtnForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			radioBtnForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			radioBtnForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		radioBtnForm.setRectangle(rectangle);

+		return radioBtnForm;

+	}

+

+

+	public FormControl createCheckBox(ControlContainer parent,

+			FrameRectangle rectangle, String name, String label, String value) {

+		String formId = generateFormId();

+		FormCheckboxElement checkboxElement = mElement.newFormCheckboxElement(

+				"center", formId);

+		// set default control properties

+		CheckBox checkboxForm = new CheckBox(checkboxElement);

+		Component.registerComponent(checkboxForm, checkboxElement);

+		checkboxForm.setId(formId);

+		checkboxForm.setName(name);

+		checkboxForm

+				.setControlImplementation(OOFormProvider.OO_CONTROL_IMPLEMENTATION_CHECKBOX);

+		checkboxForm.setLabel(label);

+		checkboxForm.setValue(value);

+		checkboxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_CONTROLTYPEINMSO, "float",

+				null, null, null, null, 0.0, null);

+		checkboxForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				OOFormProvider.FORM_PROPERTY_VALUE_CHECKBOX, null, null, null,

+				null, null);

+		// bond to drawing shape

+		checkboxForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			checkboxForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			checkboxForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		checkboxForm.setRectangle(rectangle);

+		return checkboxForm;

+	}

+

+	/**

+	 * Create a time field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field. It's a 6 digits

+	 *            number, e.g. 20121015 represents 2012-10-15.

+	 * 

+	 * @return an instance of time field

+	 */

+	public FormControl createDateField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue) {

+		return createField(FieldType.DATE_FIELD, parent, rectangle, name,

+				defaultValue);

+	}

+

+	/**

+	 * Create a time field in this form.

+	 * 

+	 * @param parent

+	 *            - the element that contains this form control

+	 * @param rectangle

+	 *            - the bounding rectangle used by this button

+	 * @param name

+	 *            - the name of the control

+	 * @param defaultValue

+	 *            - the default value of this input field. It's a 6 digits

+	 *            number, e.g. 15304000 represents 15:30:40.

+	 * 

+	 * @return an instance of time field

+	 */

+	public FormControl createTimeField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue) {

+		return createField(FieldType.TIME_FIELD, parent, rectangle, name,

+				defaultValue);

+	}

+

+

+	public FormControl createNumericField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue) {

+		return createField(FieldType.NUMERIC_FIELD, parent, rectangle, name,

+				defaultValue);

+	}

+

+

+	public FormControl createPatternField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue) {

+		return createField(FieldType.PATTERN_FIELD, parent, rectangle, name,

+				defaultValue);

+	}

+

+

+	public FormControl createCurrencyField(ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue) {

+		return createField(FieldType.CURRENCY_FIELD, parent, rectangle, name,

+				defaultValue);

+	}

+

+	private FormControl createField(FieldType type, ControlContainer parent,

+			FrameRectangle rectangle, String name, String defaultValue) {

+		String formId = generateFormId();

+		FormFormattedTextElement formattedTextElement = mElement

+				.newFormFormattedTextElement(formId);

+		// create control according to the field type

+		Field fieldForm = null;

+		String defaultControl = null;

+		String controlImpl = null;

+		switch (type) {

+		case DATE_FIELD:

+			defaultControl = OOFormProvider.FORM_PROPERTY_VALUE_DATEFIELD;

+			controlImpl = OOFormProvider.OO_CONTROL_IMPLEMENTATION_DATEFIELD;

+			fieldForm = new DateField(formattedTextElement);

+			break;

+		case TIME_FIELD:

+			defaultControl = OOFormProvider.FORM_PROPERTY_VALUE_TIMEFIELD;

+			controlImpl = OOFormProvider.OO_CONTROL_IMPLEMENTATION_TIMEFIELD;

+			fieldForm = new TimeField(formattedTextElement);

+			break;

+		case NUMERIC_FIELD:

+			defaultControl = OOFormProvider.FORM_PROPERTY_VALUE_NUMERICFIELD;

+			controlImpl = OOFormProvider.OO_CONTROL_IMPLEMENTATION_NUMERICFIELD;

+			fieldForm = new NumericField(formattedTextElement);

+			break;

+		case PATTERN_FIELD:

+			defaultControl = OOFormProvider.FORM_PROPERTY_VALUE_PATTERNFIELD;

+			controlImpl = OOFormProvider.OO_CONTROL_IMPLEMENTATION_PATTERNFIELD;

+			fieldForm = new PatternField(formattedTextElement);

+			break;

+		case CURRENCY_FIELD:

+			defaultControl = OOFormProvider.FORM_PROPERTY_VALUE_CURRENCYFIELD;

+			controlImpl = OOFormProvider.OO_CONTROL_IMPLEMENTATION_CURRENCYFIELD;

+			fieldForm = new CurrencyField(formattedTextElement);

+			break;

+		}

+		if (fieldForm == null)

+			throw new RuntimeException("Fail to create a field.");

+		Component.registerComponent(fieldForm, formattedTextElement);

+		// set control properties

+		fieldForm.setName(name);

+		fieldForm.setId(formId);

+		fieldForm.setControlImplementation(controlImpl);

+		fieldForm.setValue(defaultValue);

+		fieldForm.setCurrentValue(defaultValue);

+		fieldForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_CONTROLTYPEINMSO, "float",

+				null, null, null, null, 0.0, null);

+		fieldForm.setFormProperty(

+				OOFormProvider.FORM_PROPERTY_NAME_DEFAULTCONTROL, "string",

+				defaultControl, null, null, null, null, null);

+		// bond to drawing shape

+		fieldForm.createDrawControl(parent);

+		// set default shape properties

+		if (parent instanceof TextDocument) {

+			fieldForm.setAnchorType(AnchorType.TO_PAGE);

+		} else {

+			fieldForm.setAnchorType(AnchorType.TO_PARAGRAPH);

+		}

+		fieldForm.setRectangle(rectangle);

+		return fieldForm;

+

+	}

+

+	private String generateFormId() {

+		return getFormName() + (++controlCount);

+	}

+

+

+	public void setControlImplementation(String controlImpl) {

+		mElement.setFormControlImplementationAttribute(controlImpl);

+	}

+

+

+	public void setFormName(String name) {

+		mElement.setFormNameAttribute(name);

+	}

+

+

+	public void setCommand(String command) {

+		mElement.setFormCommandAttribute(command);

+	}

+

+

+	public void setCommandType(FormCommandType commandType) {

+		mElement.setFormCommandTypeAttribute(commandType.toString());

+	}

+

+

+	public void setDataSource(String dataSource) {

+		mElement.setFormDatasourceAttribute(dataSource);

+	}

+

+

+	public FormFormElement getOdfElement() {

+		return mElement;

+	}

+

+

+	public String getFormName() {

+		return mElement.getFormNameAttribute();

+	}

+

+

+	public String getCommand() {

+		return mElement.getFormCommandAttribute();

+	}

+

+

+	public FormCommandType getCommandType() {

+		return FormCommandType.enumValueOf(mElement

+				.getFormCommandTypeAttribute());

+	}

+

+

+	public String getControlImplementation() {

+		return mElement.getFormControlImplementationAttribute();

+	}

+

+

+	public String getDataSource() {

+		return mElement.getFormDatasourceAttribute();

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/OOFormProvider.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/OOFormProvider.java
new file mode 100644
index 0000000..90df78b
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/OOFormProvider.java
@@ -0,0 +1,99 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.office.OfficeFormsElement;

+

+/**

+ * This class provide method to create/get the form instance implemented in

+ * Apache Open Office way.

+ * 

+ * @since 0.8

+ */

+public class OOFormProvider implements FormProvider {

+

+	static final String OO_CONTROL_IMPLEMENTATION_FORM = "ooo:com.sun.star.form.component.Form";

+	static final String OO_CONTROL_IMPLEMENTATION_COMMANDBUTTON = "ooo:com.sun.star.form.component.CommandButton";

+	static final String OO_CONTROL_IMPLEMENTATION_FIXEDTEXT = "ooo:com.sun.star.form.component.FixedText";

+	static final String OO_CONTROL_IMPLEMENTATION_TEXTFEILD = "ooo:com.sun.star.form.component.TextField";

+	static final String OO_CONTROL_IMPLEMENTATION_LISTBOX = "ooo:com.sun.star.form.component.ListBox";

+	static final String OO_CONTROL_IMPLEMENTATION_GROUPBOX = "ooo:com.sun.star.form.component.GroupBox";

+	static final String OO_CONTROL_IMPLEMENTATION_COMBOBOX = "ooo:com.sun.star.form.component.ComboBox";

+	static final String OO_CONTROL_IMPLEMENTATION_RADIOBUTTON = "ooo:com.sun.star.form.component.RadioButton";

+	static final String OO_CONTROL_IMPLEMENTATION_CHECKBOX = "ooo:com.sun.star.form.component.CheckBox";

+	static final String OO_CONTROL_IMPLEMENTATION_DATEFIELD = "ooo:com.sun.star.form.component.DateField";

+	static final String OO_CONTROL_IMPLEMENTATION_TIMEFIELD = "ooo:com.sun.star.form.component.TimeField";

+	static final String OO_CONTROL_IMPLEMENTATION_NUMERICFIELD = "ooo:com.sun.star.form.component.NumericField";

+	static final String OO_CONTROL_IMPLEMENTATION_PATTERNFIELD = "ooo:com.sun.star.form.component.PatternField";

+	static final String OO_CONTROL_IMPLEMENTATION_CURRENCYFIELD = "ooo:com.sun.star.form.component.CurrencyField";

+

+	static final String FORM_PROPERTY_VALUE_COMMANDBUTTON = "com.sun.star.form.control.CommandButton";

+	static final String FORM_PROPERTY_VALUE_TEXTFEILD = "com.sun.star.form.control.TextField";

+	static final String FORM_PROPERTY_VALUE_LISTBOX = "com.sun.star.form.control.ListBox";

+	static final String FORM_PROPERTY_VALUE_COMBOBOX = "com.sun.star.form.control.ComboBox";

+	static final String FORM_PROPERTY_VALUE_RADIOBUTTON = "com.sun.star.form.control.RadioButton";

+	static final String FORM_PROPERTY_VALUE_CHECKBOX = "com.sun.star.form.control.CheckBox";

+	static final String FORM_PROPERTY_VALUE_DATEFIELD = "com.sun.star.form.control.DateField";

+	static final String FORM_PROPERTY_VALUE_TIMEFIELD = "com.sun.star.form.control.TimeField";

+	static final String FORM_PROPERTY_VALUE_NUMERICFIELD = "com.sun.star.form.control.NumericField";

+	static final String FORM_PROPERTY_VALUE_PATTERNFIELD = "com.sun.star.form.control.PatternField";

+	static final String FORM_PROPERTY_VALUE_CURRENCYFIELD = "com.sun.star.form.control.CurrencyField";

+

+	static final String FORM_PROPERTY_NAME_DEFAULTCONTROL = "DefaultControl";

+	static final String FORM_PROPERTY_NAME_OBJIDINMSO = "ObjIDinMSO";

+	static final String FORM_PROPERTY_NAME_MULTILINE = "MultiLine";

+	static final String FORM_PROPERTY_NAME_COMPLEXSTRINGITEMLIST = "ComplexStringItemList";

+	static final String FORM_PROPERTY_NAME_CONTROLTYPEINMSO = "ControlTypeinMSO";

+	static final String FORM_PROPERTY_NAME_FOCUSEDITEM = "FocusedItem";

+	static final String FORM_PROPERTY_NAME_EXTMULTISELECTION = "ExtMultiSelection";

+	static final String FORM_PROPERTY_NAME_SPIN = "Spin";

+	static final String FORM_PROPERTY_NAME_DROPDOWN = "Dropdown";

+	public static final String FORM_PROPERTY_NAME_DECIMALACCURACY = "DecimalAccuracy";

+	public static final String FORM_PROPERTY_NAME_VALUESTEP = "ValueStep";

+	public static final String FORM_PROPERTY_NAME_EDITMASK = "EditMask";

+	public static final String FORM_PROPERTY_NAME_LITERALMASK = "LiteralMask";

+	public static final String FORM_PROPERTY_NAME_CURRENCYSYMBOL = "CurrencySymbol";

+	public static final String FORM_PROPERTY_NAME_PREPENDCURRENCYSYMBOL = "PrependCurrencySymbol";

+

+	static enum FieldType {

+		DATE_FIELD, TIME_FIELD, NUMERIC_FIELD, PATTERN_FIELD, CURRENCY_FIELD;

+	}

+

+	/**

+	 * Create a form in Apache Open Office way.

+	 * 

+	 * @see FormProvider#createForm(String, OfficeFormsElement)

+	 */

+	public Form createForm(String name, OfficeFormsElement parent) {

+

+		return OOForm.createForm(name, parent);

+	}

+

+	/**

+	 * Get a form instance implemented in Apache Open Office way.

+	 * 

+	 * @see FormProvider#getInstanceOf(FormFormElement)

+	 */

+	public Form getInstanceOf(FormFormElement element) {

+		return OOForm.getInstance(element);

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/PatternField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/PatternField.java
new file mode 100644
index 0000000..a60a87a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/PatternField.java
@@ -0,0 +1,66 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+

+public class PatternField extends Field {

+

+	PatternField(FormFormattedTextElement element) {

+		super(element);

+	}

+

+

+	/**

+	 * Get an instance of pattern field by an instance of FormFormattedTextElement,

+	 * while searching the document content to make a bind with the DrawControl

+	 * which already reference to this pattern field.

+	 * 

+	 * @param element

+	 *            - an instance of FormFormattedTextElement

+	 * @return an instance of pattern field

+	 */

+	public static PatternField getInstanceOf(FormFormattedTextElement element) {

+		PatternField field = new PatternField(element);

+		try {

+			field.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(PatternField.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this field.");

+		}

+		return field;

+	}

+

+	public void setEditMask(String mask) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_EDITMASK,

+				"string", mask, null, null, null, null, null);

+	}

+

+	public void setLiteralMask(String mask) {

+		this.setFormProperty(OOFormProvider.FORM_PROPERTY_NAME_LITERALMASK,

+				"string", mask, null, null, null, null, null);

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/RadioButton.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/RadioButton.java
new file mode 100644
index 0000000..a8f0cc3
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/RadioButton.java
@@ -0,0 +1,246 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.dom.element.form.FormRadioElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.draw.Control;

+

+/**

+ * This class represents the form control of radio button, provides methods to

+ * get/set the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class RadioButton extends FormControl {

+

+	RadioButton(FormRadioElement element) {

+		mElement = element;

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of radio button by an instance of FormRadioElement, while

+	 * searching the document content to make a bind with the DrawControl which

+	 * already reference to this radio button.

+	 * 

+	 * @param element

+	 *            - an instance of FormRadioElement

+	 * @return an instance of radio button

+	 */

+	public static RadioButton getInstanceOf(FormRadioElement element) {

+		RadioButton radio = new RadioButton(element);

+		try {

+			radio.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(RadioButton.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this radio button.");

+		}

+		return radio;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		((FormRadioElement) mElement)

+				.setFormControlImplementationAttribute(controlImpl);

+	}

+

+	@Override

+	public String getId() {

+		return ((FormRadioElement) mElement).getFormIdAttribute();

+	}

+

+	@Override

+	public void setId(String id) {

+		((FormRadioElement) mElement).setFormIdAttribute(id);

+	}

+

+	@Override

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null)

+			mFormProperties = ((FormRadioElement) mElement)

+					.newFormPropertiesElement();

+		return mFormProperties;

+	}

+

+	/**

+	 * Set the label content of this radio button

+	 * 

+	 * @param label

+	 *            - the label content of this radio button

+	 */

+	public void setLabel(String label) {

+		((FormRadioElement) mElement).setFormLabelAttribute(label);

+	}

+

+	/**

+	 * Get the label content of this radio button

+	 * 

+	 * @return the label content of this radio button

+	 */

+	public String getLabel() {

+		return ((FormRadioElement) mElement).getFormLabelAttribute();

+	}

+

+	@Override

+	public String getName() {

+		return ((FormRadioElement) mElement).getFormNameAttribute();

+	}

+

+	@Override

+	public void setName(String name) {

+		((FormRadioElement) mElement).setFormNameAttribute(name);

+	}

+

+	/**

+	 * Get the default value of this control.

+	 * 

+	 * @param default value

+	 */

+	public String getValue() {

+		return ((FormRadioElement) mElement).getFormValueAttribute();

+	}

+

+	/**

+	 * Set the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @param value

+	 *            - default value

+	 */

+	public void setValue(String value) {

+		((FormRadioElement) mElement).setFormValueAttribute(value);

+	}

+

+	/**

+	 * Set the default selection status of this radio button

+	 * 

+	 * @param isSelected

+	 *            - true means selected; false means unselected

+	 */

+	public void setDefaultSelected(boolean isSelected) {

+		((FormRadioElement) mElement).setFormSelectedAttribute(isSelected);

+	}

+

+	/**

+	 * Get the default selection status of this radio button

+	 * 

+	 * @return true means selected; false means unselected

+	 */

+	public boolean getDefaultSelected() {

+		return ((FormRadioElement) mElement).getFormSelectedAttribute();

+	}

+

+	/**

+	 * Set current selection status of this radio button, it override the

+	 * default status

+	 * 

+	 * @param isSelected

+	 *            - true means selected; false means unselected

+	 */

+	public void setCurrentSelected(boolean isSelected) {

+		((FormRadioElement) mElement)

+				.setFormCurrentSelectedAttribute(isSelected);

+	}

+

+	/**

+	 * Get current selection status of this radio button

+	 * 

+	 * @return true means selected; false means unselected

+	 */

+	public boolean getCurrentSelected() {

+		return ((FormRadioElement) mElement).getFormCurrentSelectedAttribute();

+	}

+

+	/**

+	 * Get a simple iterator for radio buttons.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the radio buttons

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleRadioButtonIterator(container);

+	}

+

+	private static class SimpleRadioButtonIterator implements

+			Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private RadioButton nextElement = null;

+		private RadioButton tempElement = null;

+

+		private SimpleRadioButtonIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public RadioButton next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+		}

+

+		private RadioButton findNext(RadioButton thisRadioButton) {

+			FormRadioElement nextRadioButton = null;

+			if (thisRadioButton == null) {

+				nextRadioButton = OdfElement.findFirstChildNode(

+						FormRadioElement.class, containerElement);

+			} else {

+				nextRadioButton = OdfElement

+						.findNextChildNode(FormRadioElement.class,

+								thisRadioButton.getOdfElement());

+			}

+

+			if (nextRadioButton != null) {

+				return RadioButton.getInstanceOf(nextRadioButton);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/TextBox.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/TextBox.java
new file mode 100644
index 0000000..fc66ccc
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/TextBox.java
@@ -0,0 +1,285 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.apache.xerces.dom.ParentNode;

+import org.odftoolkit.odfdom.dom.element.form.FormFormElement;

+import org.odftoolkit.odfdom.dom.element.form.FormPropertiesElement;

+import org.odftoolkit.odfdom.dom.element.form.FormTextElement;

+import org.odftoolkit.odfdom.dom.element.form.FormTextareaElement;

+import org.odftoolkit.odfdom.pkg.OdfElement;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.draw.Control;

+import org.w3c.dom.Node;

+

+/**

+ * This class represents the form control of Text Box, provides methods to

+ * get/set the form properties and the style formatting of this control.

+ * 

+ * @since 0.8

+ */

+public class TextBox extends FormControl {

+	private boolean isMultipleLine = false;

+

+	TextBox(OdfElement element) {

+		if (element instanceof FormTextareaElement) {

+			isMultipleLine = true;

+			mElement = (FormTextareaElement) element;

+		} else {

+			mElement = (FormTextElement) element;

+		}

+		formElement = (FormFormElement) element.getParentNode();

+	}

+

+	/**

+	 * Get an instance of text box by an instance of OdfElement, while searching

+	 * the document content to make a bind with the DrawControl which already

+	 * reference to this text box.

+	 * 

+	 * @param element

+	 *            - an instance of OdfElement

+	 * @return an instance of text box

+	 */

+	public static TextBox getInstanceOf(OdfElement element) {

+		TextBox textbox = new TextBox(element);

+		try {

+			textbox.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(TextBox.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this textbox.");

+		}

+		return textbox;

+	}

+

+	@Override

+	FormPropertiesElement getFormPropertiesElementForWrite() {

+		if (mFormProperties == null) {

+			if (isMultipleLine) {

+				mFormProperties = ((FormTextareaElement) mElement)

+						.newFormPropertiesElement();

+			} else {

+				mFormProperties = ((FormTextElement) mElement)

+						.newFormPropertiesElement();

+			}

+		}

+		return mFormProperties;

+	}

+

+	@Override

+	public void setControlImplementation(String controlImpl) {

+		if (isMultipleLine) {

+			((FormTextareaElement) mElement)

+					.setFormControlImplementationAttribute(controlImpl);

+		} else {

+			((FormTextElement) mElement)

+					.setFormControlImplementationAttribute(controlImpl);

+		}

+

+	}

+

+	@Override

+	public String getId() {

+		String formId;

+		if (isMultipleLine) {

+			formId = ((FormTextareaElement) mElement).getFormIdAttribute();

+		} else {

+			formId = ((FormTextElement) mElement).getFormIdAttribute();

+		}

+		return formId;

+	}

+

+	@Override

+	public void setId(String id) {

+		if (isMultipleLine) {

+			((FormTextareaElement) mElement).setFormIdAttribute(id);

+		} else {

+			((FormTextElement) mElement).setFormIdAttribute(id);

+		}

+	}

+

+	@Override

+	public String getName() {

+		String name;

+		if (isMultipleLine) {

+			name = ((FormTextareaElement) mElement).getFormNameAttribute();

+		} else {

+			name = ((FormTextElement) mElement).getFormNameAttribute();

+		}

+		return name;

+	}

+

+	@Override

+	public void setName(String name) {

+		if (isMultipleLine) {

+			((FormTextareaElement) mElement).setFormNameAttribute(name);

+		} else {

+			((FormTextElement) mElement).setFormNameAttribute(name);

+		}

+	}

+

+	/**

+	 * Set the default value of this control, it will be override by current

+	 * value.

+	 * 

+	 * @param value

+	 *            - default value

+	 */

+	public void setValue(String defaultValue) {

+		if (isMultipleLine) {

+			((FormTextareaElement) mElement)

+					.setFormValueAttribute(defaultValue);

+		} else {

+			((FormTextElement) mElement).setFormValueAttribute(defaultValue);

+		}

+	}

+

+	/**

+	 * Get the default value of this control

+	 * 

+	 * @return default value

+	 */

+	public String getValue() {

+		if (isMultipleLine) {

+			return ((FormTextareaElement) mElement).getFormValueAttribute();

+		} else {

+			return ((FormTextElement) mElement).getFormValueAttribute();

+		}

+	}

+

+	/**

+	 * Set the current value of this control, it override the default value.

+	 * 

+	 * @param currentValue

+	 *            - current value

+	 */

+	public void setCurrentValue(String currentValue) {

+		if (isMultipleLine) {

+			((FormTextareaElement) mElement)

+					.setFormCurrentValueAttribute(currentValue);

+		} else {

+			((FormTextElement) mElement)

+					.setFormCurrentValueAttribute(currentValue);

+		}

+	}

+

+	/**

+	 * Get the current value of this control

+	 * 

+	 * @return current value

+	 */

+	public String getCurrentValue() {

+		if (isMultipleLine) {

+			return ((FormTextareaElement) mElement)

+					.getFormCurrentValueAttribute();

+		} else {

+			return ((FormTextElement) mElement).getFormCurrentValueAttribute();

+		}

+	}

+

+	/**

+	 * Get a simple iterator for text boxes.

+	 * 

+	 * @param container

+	 *            - an instance of form where to traverse the text boxes

+	 */

+	public static Iterator<FormControl> getSimpleIterator(Form container) {

+		return new SimpleTextBoxIterator(container);

+	}

+

+	private static class SimpleTextBoxIterator implements Iterator<FormControl> {

+

+		private FormFormElement containerElement;

+		private TextBox nextElement = null;

+		private TextBox tempElement = null;

+

+		private SimpleTextBoxIterator(Form container) {

+			containerElement = container.getOdfElement();

+		}

+

+		public boolean hasNext() {

+			tempElement = findNext(nextElement);

+			return (tempElement != null);

+		}

+

+		public TextBox next() {

+			if (tempElement != null) {

+				nextElement = tempElement;

+				tempElement = null;

+			} else {

+				nextElement = findNext(nextElement);

+			}

+			if (nextElement == null) {

+				return null;

+			} else {

+				return nextElement;

+			}

+		}

+

+		public void remove() {

+			if (nextElement == null) {

+				throw new IllegalStateException("please call next() first.");

+			}

+			nextElement.remove();

+		}

+

+		private TextBox findNext(TextBox thisTextBox) {

+			OdfElement nextTextBox = null;

+			if (thisTextBox == null) {

+				if (containerElement != null

+						&& containerElement instanceof ParentNode) {

+					Node node = ((ParentNode) containerElement).getFirstChild();

+					while ((node != null)

+							&& !FormTextareaElement.class.isInstance(node)

+							&& !FormTextElement.class.isInstance(node)) {

+						node = node.getNextSibling();

+					}

+					if (node != null) {

+						nextTextBox = (OdfElement) node;

+					}

+				}

+			} else {

+				Node refNode = thisTextBox.getOdfElement();

+				if (refNode != null) {

+					Node node = refNode.getNextSibling();

+					while (node != null

+							&& !FormTextareaElement.class.isInstance(node)

+							&& !FormTextElement.class.isInstance(node)) {

+						node = node.getNextSibling();

+					}

+

+					if (node != null) {

+						nextTextBox = (OdfElement) node;

+					}

+				}

+			}

+			if (nextTextBox != null) {

+				return TextBox.getInstanceOf(nextTextBox);

+			}

+			return null;

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/form/TimeField.java b/trunk/simple/src/main/java/org/odftoolkit/simple/form/TimeField.java
new file mode 100644
index 0000000..c4323b2
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/form/TimeField.java
@@ -0,0 +1,123 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Locale;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;

+import org.odftoolkit.odfdom.dom.element.form.FormFormattedTextElement;

+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute.Value;

+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.pkg.OdfName;

+import org.odftoolkit.simple.Document;

+

+public class TimeField extends Field {

+

+	TimeField(FormFormattedTextElement element) {

+		super(element);

+	}

+

+	/**

+	 * Get an instance of time field by an instance of FormFormattedTextElement,

+	 * while searching the document content to make a bind with the DrawControl

+	 * which already reference to this time field.

+	 * 

+	 * @param element

+	 *            - an instance of FormFormattedTextElement

+	 * @return an instance of time field

+	 */

+	public static TimeField getInstanceOf(FormFormattedTextElement element) {

+		TimeField field = new TimeField(element);

+		try {

+			field.loadDrawControl(((Document) ((OdfFileDom) element

+					.getOwnerDocument()).getDocument()).getContentRoot());

+		} catch (Exception e) {

+			Logger.getLogger(TimeField.class.getName()).log(Level.WARNING,

+					"Cannot load the drawing shape of this field.");

+		}

+		return field;

+	}

+

+	/**

+	 * Format the time value according to the appointed format and locale.

+	 * 

+	 * @param formatStr

+	 *            - format code

+	 * @param locale

+	 *            - locale information

+	 */

+

+	public void setTimeFormat(String formatStr, Locale locale) {

+		this.setFormatString(formatStr, Value.TIME, locale);

+	}

+

+	/**

+	 * Set the format of this time field. Time format pattern is the same as

+	 * {@link java.text.SimpleDateFormat SimpleDateFormat}.

+	 * 

+	 * @param formatStr

+	 *            the format string of this date.

+	 * @see java.text.SimpleDateFormat

+	 */

+	public void formatTime(String formatStr, Locale locale) {

+		if (drawingShape == null)

+			throw new IllegalStateException(

+					"Please call loadDrawControl() first.");

+		DrawControlElement element = drawingShape.getOdfElement();

+		String name = getUniqueTimeStyleName();

+		OdfNumberTimeStyle timeStyle = new OdfNumberTimeStyle(

+				(OdfFileDom) element.getOwnerDocument(), formatStr, name);

+		timeStyle.setNumberLanguageAttribute(locale.getLanguage());

+		timeStyle.setNumberCountryAttribute(locale.getCountry());

+		element.getAutomaticStyles().appendChild(timeStyle);

+		OdfStyleBase styleElement = drawingShape.getStyleHandler()

+				.getStyleElementForWrite();

+		if (styleElement != null) {

+			styleElement.setOdfAttributeValue(OdfName.newName(

+					OdfDocumentNamespace.STYLE, "data-style-name"), name);

+		}

+	}

+

+	private String getUniqueTimeStyleName() {

+		String unique_name;

+		OdfOfficeAutomaticStyles styles = getDrawControl()

+				.getOdfElement().getAutomaticStyles();

+		do {

+			unique_name = String.format("t%06x",

+					(int) (Math.random() * 0xffffff));

+		} while (styles.getDateStyle(unique_name) != null);

+		return unique_name;

+	}

+

+	/**

+	 * Get the format code which is used to format the display value

+	 * 

+	 * @return the format code

+	 */

+	public String getTimeFormat() {

+		return this.getFormatString(Value.TIME);

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/meta/DocumentStatistic.java b/trunk/simple/src/main/java/org/odftoolkit/simple/meta/DocumentStatistic.java
new file mode 100644
index 0000000..800a1de
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/meta/DocumentStatistic.java
@@ -0,0 +1,434 @@
+/************************************************************************
+ *
+ * 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.simple.meta;
+
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+
+/**
+ * <code>DocumentStatistic</code> feature specifies the statistics about
+ * the document.
+ * 
+ */
+public class DocumentStatistic {
+
+	private MetaDocumentStatisticElement mDocStatistic;
+
+	/**
+	 * Constructor of <code>DocumentStatistic</code> feature.
+	 * 
+	 * @param docStatistic
+	 *            the <code>MetaDocumentStatisticElement</code> represent this
+	 *            feature
+	 */
+	public DocumentStatistic(MetaDocumentStatisticElement docStatistic) {
+		this.mDocStatistic = docStatistic;
+	}
+
+	/**
+	 * Get the instance of <code>MetaDocumentStatisticElement</code> which represents this
+	 * feature.
+	 * 
+	 * @return an instance of <code>MetaDocumentStatisticElement</code>
+	 */
+	private MetaDocumentStatisticElement getMetaDocumentStatisticElement() {
+		return mDocStatistic;
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaCellCountAttribute</code>.
+	 * 
+	 * @return the number of table cells contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaCellCountAttribute
+	 */
+	public Integer getCellCount() {
+		return mDocStatistic.getMetaCellCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaCellCountAttribute</code> .
+	 * 
+	 * @param cellCount	the number of table cells need to be set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaCellCountAttribute
+	 *            
+	 */
+	public void setCellCount(int cellCount) {
+		mDocStatistic.setMetaCellCountAttribute(cellCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaCharacterCountAttribute</code> .
+	 * 
+	 * @return the number of characters contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaCharacterCountAttribute
+	 */
+	public Integer getCharacterCount() {
+		return mDocStatistic.getMetaCharacterCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaCharacterCountAttribute</code>.
+	 * 
+	 * @param characterCount	the number of characters need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaCharacterCountAttribute
+	 */
+	public void setCharacterCount(Integer characterCount) {
+		mDocStatistic.setMetaCharacterCountAttribute(characterCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaDrawCountAttribute</code> .
+	 * 
+	 * @return the number of all the graphic related element in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaDrawCountAttribute
+	 */
+	public Integer getDrawCount() {
+		return mDocStatistic.getMetaDrawCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaDrawCountAttribute</code>.
+	 * 
+	 * @param drawCount	the number of all the graphic related element need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaDrawCountAttribute
+	 */
+	public void setDrawCount(Integer drawCount) {
+		mDocStatistic.setMetaDrawCountAttribute(drawCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaFrameCountAttribute</code>.
+	 * 
+	 * @return the number of <code><draw:frame></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaFrameCountAttribute
+	 */
+	public Integer getFrameCount() {
+		return mDocStatistic.getMetaFrameCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaFrameCountAttribute</code> .
+	 * 
+	 * @param frameCount the number of <code><draw:frame></code> element need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaFrameCountAttribute
+	 */
+	public void setFrameCount(Integer frameCount) {
+		mDocStatistic.setMetaFrameCountAttribute(frameCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaImageCountAttribute</code> .
+	 * 
+	 * @return the number of <code><draw:image></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaImageCountAttribute
+	 */
+	public Integer getImageCount() {
+		return mDocStatistic.getMetaImageCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaImageCountAttribute</code> .
+	 * 
+	 * @param imageCount the number of <code><draw:image></code> element need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaImageCountAttribute
+	 */
+	public void setImageCount(Integer imageCount) {
+		mDocStatistic.setMetaImageCountAttribute(imageCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaNonWhitespaceCharacterCountAttribute</code>.
+	 * 
+	 * @return the number of non-whitespace characters contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaNonWhitespaceCharacterCountAttribute
+	 */
+	public Integer getNonWhitespaceCharacterCount() {
+		return mDocStatistic.getMetaNonWhitespaceCharacterCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaNonWhitespaceCharacterCountAttribute</code>.
+	 * 
+	 * @param nonWhitespaceCharacterCount	the number of non-whitespace characters need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaNonWhitespaceCharacterCountAttribute
+	 */
+	public void setNonWhitespaceCharacterCount(
+			Integer nonWhitespaceCharacterCount) {
+		mDocStatistic
+				.setMetaNonWhitespaceCharacterCountAttribute(nonWhitespaceCharacterCount);
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaObjectCountAttribute</code>
+	 * 
+	 * @return the number of <code><draw:object></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaObjectCountAttribute
+	 */
+	public Integer getObjectCount() {
+		return mDocStatistic.getMetaObjectCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaObjectCountAttribute</code>.
+	 * 
+	 * @param objectCount the number of <code><draw:object></code> element need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaObjectCountAttribute
+	 */
+	public void setObjectCount(Integer objectCount) {
+		mDocStatistic.setMetaObjectCountAttribute(objectCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaOleObjectCountAttribute</code>.
+	 * 
+	 * @return the number of <code><draw:object-ole></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaOleObjectCountAttribute
+	 */
+	public Integer getOleObjectCount() {
+		return mDocStatistic.getMetaOleObjectCountAttribute();
+
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaOleObjectCountAttribute</code>.
+	 * 
+	 * @param oleObjectCount the number of <code><draw:object-ole></code> element need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaOleObjectCountAttribute
+	 */
+	public void setOleObjectCount(Integer oleObjectCount) {
+		mDocStatistic.setMetaOleObjectCountAttribute(oleObjectCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaPageCountAttribute</code>.
+	 * 
+	 * @return the number of page count contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaPageCountAttribute
+	 */
+	public Integer getPageCount() {
+		return mDocStatistic.getMetaPageCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaPageCountAttribute</code>.
+	 * 
+	 * @param pageCount the number of page count need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaPageCountAttribute
+	 */
+	public void setPageCount(Integer pageCount) {
+		mDocStatistic.setMetaPageCountAttribute(pageCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaParagraphCountAttribute</code>.
+	 * 
+	 * @return the number of <code><text:p></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaParagraphCountAttribute
+	 */
+	public Integer getParagraphCount() {
+		return mDocStatistic.getMetaParagraphCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaParagraphCountAttribute</code>.
+	 * 
+	 * @param paragraphCount the number of <code><text:p></code> element need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaParagraphCountAttribute
+	 */
+	public void setParagraphCount(Integer paragraphCount) {
+		mDocStatistic.setMetaParagraphCountAttribute(paragraphCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaRowCountAttribute</code>.
+	 * 
+	 * @return the number of lines contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaRowCountAttribute
+	 */
+	public Integer getRowCount() {
+		return mDocStatistic.getMetaRowCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaRowCountAttribute</code>.
+	 * 
+	 * @param rowCount the number of lines need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaRowCountAttribute
+	 */
+	public void setRowCount(Integer rowCount) {
+		mDocStatistic.setMetaRowCountAttribute(rowCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaSentenceCountAttribute</code>.
+	 * 
+	 * @return the number of sentences contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaSentenceCountAttribute.
+	 */
+	public Integer getSentenceCount() {
+		return mDocStatistic.getMetaSentenceCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaSentenceCountAttribute</code>.
+	 * 
+	 * @param sentenceCount the number of sentences need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaSentenceCountAttribute.
+	 */
+	public void setSentenceCount(Integer sentenceCount) {
+		mDocStatistic.setMetaSentenceCountAttribute(sentenceCount);
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaSyllableCountAttribute</code>.
+	 * 
+	 * @return the number of syllables contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaSyllableCountAttribute.
+	 */
+	public Integer getSyllableCount() {
+		return mDocStatistic.getMetaSyllableCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaSyllableCountAttribute</code>.
+	 * 
+	 * @param syllableCount the number of syllables need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaSyllableCountAttribute.
+	 */
+	public void setSyllableCount(Integer syllableCount) {
+		mDocStatistic.setMetaSyllableCountAttribute(syllableCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaTableCountAttribute</code>.
+	 * 
+	 * @return the number of <code><table:table></code> element contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaTableCountAttribute.
+	 */
+	public Integer getTableCount() {
+		return mDocStatistic.getMetaTableCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaTableCountAttribute</code>.
+	 * 
+	 * @param tableCount the number of <code><table:table></code> need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaTableCountAttribute.
+	 */
+	public void setTableCount(Integer tableCount) {
+		mDocStatistic.setMetaTableCountAttribute(tableCount);
+
+	}
+
+	/**
+	 * Receives the value of the odf dom attribute representation
+	 * <code>MetaWordCountAttribute</code>.
+	 * 
+	 * @return the number of words contained in the current document;
+	 * <p>
+	 * <code>null</code>, if the attribute is not set and no default value defined.
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaWordCountAttribute.
+	 */
+	public Integer getWordCount() {
+		return mDocStatistic.getMetaWordCountAttribute();
+	}
+
+	/**
+	 * Sets the value of odf dom attribute representation
+	 * <code>MetaWordCountAttribute</code>.
+	 * 
+	 * @param wordCount the number of words need to set
+	 * @see org.odftoolkit.odfdom.dom.attribute.meta.MetaWordCountAttribute.
+	 */
+	public void setWordCount(Integer wordCount) {
+		mDocStatistic.setMetaWordCountAttribute(wordCount);
+
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/meta/Meta.java b/trunk/simple/src/main/java/org/odftoolkit/simple/meta/Meta.java
new file mode 100644
index 0000000..2c1d717
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/meta/Meta.java
@@ -0,0 +1,833 @@
+/************************************************************************
+ *
+ * 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.simple.meta;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDescriptionElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcLanguageElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcSubjectElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcTitleElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement;
+import org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentMetaElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.type.Duration;
+
+/**
+ * <code>Meta</code> represent the meta data feature in the ODF document.
+ * <p>
+ * It provides convenient method to get meta data info.
+ * 
+ */
+public class Meta {
+
+	private OfficeMetaElement mOfficeMetaElement;
+
+	/**
+	 * Constructor of <code>Meta</code> feature.
+	 * 
+	 * @param metaDom	the file DOM element of meta.xml
+	 */
+	public Meta(OdfFileDom metaDom) {
+		OfficeDocumentMetaElement metaEle = OdfElement.findFirstChildNode(OfficeDocumentMetaElement.class, metaDom);
+		mOfficeMetaElement = OdfElement.findFirstChildNode(OfficeMetaElement.class, metaEle);
+	}
+
+	/**
+	 * Get the instance of <code>OfficeMetaElement</code> which represents this feature.
+	 * 
+	 * @return the instance of OfficeMetaElement
+	 */
+	public OfficeMetaElement getOfficeMetaElement() {
+		return mOfficeMetaElement;
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaGeneratorElement</code>.
+	 * 
+	 * @return the generator info of the current document.
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement.
+	 */
+	public String getGenerator() {
+		MetaGeneratorElement metaGenerator = OdfElement.findFirstChildNode(
+				MetaGeneratorElement.class, mOfficeMetaElement);
+		if (metaGenerator != null) {
+			return metaGenerator.getTextContent();
+		}
+		return null;
+
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaGeneratorElement</code>.
+	 * 
+	 * @param generator	set the specified document generator.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement.
+	 */
+	public void setGenerator(String generator) {
+		MetaGeneratorElement metaGenerator = OdfElement.findFirstChildNode(
+				MetaGeneratorElement.class, mOfficeMetaElement);
+		if (metaGenerator == null) {
+			metaGenerator = mOfficeMetaElement.newMetaGeneratorElement();
+		}
+		metaGenerator.setTextContent(generator);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>DcTitleElement</code>.
+	 * 
+	 * @return the title of the current document.
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcTitleElement.
+	 */
+	public String getTitle() {
+
+		DcTitleElement titleEle = OdfElement.findFirstChildNode(
+				DcTitleElement.class, mOfficeMetaElement);
+		if (titleEle != null) {
+			return titleEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>DcTitleElement</code>.
+	 * 
+	 * @param title set the specified document title
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcTitleElement.
+	 */
+	public void setTitle(String title) {
+		DcTitleElement titleEle = OdfElement.findFirstChildNode(
+				DcTitleElement.class, mOfficeMetaElement);
+		if (titleEle == null) {
+			titleEle = mOfficeMetaElement.newDcTitleElement();
+		}
+		titleEle.setTextContent(title);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>DcDescriptionElement</code>.
+	 * 
+	 * @return the description of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcDescriptionElement.
+	 */
+	public String getDescription() {
+		DcDescriptionElement descEle = OdfElement.findFirstChildNode(
+				DcDescriptionElement.class, mOfficeMetaElement);
+		if (descEle != null) {
+			return descEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>DcDescriptionElement</code>.
+	 *
+	 * @param description set the specified document description 
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcDescriptionElement.
+	 */
+	public void setDescription(String description) {
+		DcDescriptionElement descEle = OdfElement.findFirstChildNode(
+				DcDescriptionElement.class, mOfficeMetaElement);
+		if (descEle == null) {
+			descEle = mOfficeMetaElement.newDcDescriptionElement();
+		}
+		descEle.setTextContent(description);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>DcSubjectElement</code>.
+	 * 
+	 * @return the subject of the current document.
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcSubjectElement.
+	 */
+	public String getSubject() {
+		DcSubjectElement subjectEle = OdfElement.findFirstChildNode(
+				DcSubjectElement.class, mOfficeMetaElement);
+		if (subjectEle != null) {
+			return subjectEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>DcSubjectElement</code>.
+	 * 
+	 * @param subject set the specified document subject.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcSubjectElement.
+	 */
+	public void setSubject(String subject) {
+		DcSubjectElement subjectEle = OdfElement.findFirstChildNode(
+				DcSubjectElement.class, mOfficeMetaElement);
+		if (subjectEle == null) {
+			subjectEle = mOfficeMetaElement.newDcSubjectElement();
+		}
+		subjectEle.setTextContent(subject);
+	}
+
+	/**
+	 * Receives the list value of the odf dom element representation
+	 * <code>MetaKeywordElement</code>.
+	 * 
+	 * @return the keywords of the current document.
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement.
+	 */
+	public List<String> getKeywords() {
+		List<String> keywords = new ArrayList<String>();
+		MetaKeywordElement keywordEle = OdfElement.findFirstChildNode(
+				MetaKeywordElement.class, mOfficeMetaElement);
+		if (keywordEle != null) {
+			keywords.add(keywordEle.getTextContent());
+			MetaKeywordElement keywordNext;
+			while ((keywordNext = OdfElement.findNextChildNode(
+					MetaKeywordElement.class, keywordEle)) != null) {
+				keywords.add(keywordNext.getTextContent());
+				keywordEle = keywordNext;
+			}
+			return keywords;
+		} else {
+			return null;
+		}
+
+	}
+
+	/**
+	 * Sets the list value of the odf dom element representation
+	 * <code>MetaKeywordElement</code>.
+	 * 
+	 * @param keyList set the specified list of keywords.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement.
+	 */
+	public void setKeywords(List<String> keyList) {
+		MetaKeywordElement keywordEle = OdfElement.findFirstChildNode(
+				MetaKeywordElement.class, mOfficeMetaElement);
+		List<MetaKeywordElement> toBeDeleted = new ArrayList<MetaKeywordElement>();
+		if (keywordEle != null) {
+			MetaKeywordElement keywordTmp;
+			toBeDeleted.add(keywordEle);
+			while ((keywordTmp = OdfElement.findNextChildNode(
+					MetaKeywordElement.class, keywordEle)) != null) {
+				keywordEle = keywordTmp;
+				toBeDeleted.add(keywordTmp);
+			}
+
+		}
+
+		// remove the original
+		for (MetaKeywordElement keyele : toBeDeleted) {
+			mOfficeMetaElement.removeChild(keyele);
+		}
+		// add new
+		for (int i = 0; i < keyList.size(); i++) {
+			MetaKeywordElement keywordElement = mOfficeMetaElement.newMetaKeywordElement();
+			keywordElement.setTextContent(keyList.get(i));
+		}
+
+	}
+
+	/**
+	 * Add the keyword to the current document.
+	 * Create child element <code>MetaKeywordElement</code>.
+	 * 
+	 * @param keyword	the value of child element <code>MetaKeywordElement</code>.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement.
+	 */
+	public void addKeyword(String keyword) {
+		MetaKeywordElement keywordElement = mOfficeMetaElement.newMetaKeywordElement();
+		keywordElement.setTextContent(keyword);
+	}
+
+	/**
+	 * Receives the list value of the odf dom element representation
+	 * <code>MetaUserDefinedElement</code>.
+	 * 
+	 * @return get the list of user-defined metadata names;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public List<String> getUserDefinedDataNames() {
+		List<String> definedNames = new ArrayList<String>();
+		MetaUserDefinedElement definedEle = OdfElement.findFirstChildNode(
+				MetaUserDefinedElement.class, mOfficeMetaElement);
+		if (definedEle != null) {
+
+			definedNames.add(definedEle.getMetaNameAttribute());
+			MetaUserDefinedElement definedNext;
+			while ((definedNext = OdfElement.findNextChildNode(
+					MetaUserDefinedElement.class, definedEle)) != null) {
+
+				definedNames.add(definedNext.getMetaNameAttribute());
+
+				definedEle = definedNext;
+			}
+			return definedNames;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the odf dom element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @return	the <code>MetaUserDefinedElement</code> which is identified by the specified name;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public MetaUserDefinedElement getUserDefinedElementByAttributeName(
+			String name) {
+		MetaUserDefinedElement definedEle = OdfElement.findFirstChildNode(
+				MetaUserDefinedElement.class, mOfficeMetaElement);
+		if (definedEle != null) {
+			if (definedEle.getMetaNameAttribute().equals(name)) {
+				return definedEle;
+			}
+			MetaUserDefinedElement definedNext;
+			while ((definedNext = OdfElement.findNextChildNode(
+					MetaUserDefinedElement.class, definedEle)) != null) {
+
+				if (definedNext.getMetaNameAttribute().equals(name)) {
+					return definedNext;
+				}
+
+				definedEle = definedNext;
+			}
+			return null;
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @return the value of the user-defined metadata with the specified name;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public String getUserDefinedDataValue(String name) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			return definedElement.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Receives the data type of the odf dom element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @return the data type of the user-defined metadata with the specified name;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public String getUserDefinedDataType(String name) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			return definedElement.getMetaValueTypeAttribute();
+		}
+		return null;
+	}
+
+	/**
+	 * Remove the odf dom element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name.
+	 * 
+	 * @param name	the name of the user-defined metadata
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public void removeUserDefinedDataByName(String name) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			mOfficeMetaElement.removeChild(definedElement);
+		}
+
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name.
+	 * 
+	 * @param name	the name need to set for the user-defined metadata
+	 * @param value  the value need to set for the user-defined metadata
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public void setUserDefinedDataValue(String name, String value) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			definedElement.setTextContent(value);
+		}
+
+	}
+
+	/**
+	 * Sets the data type of the odf dom element representation
+	 * <code>MetaUserDefinedElement</code> by attribute name.
+	 * 
+	 * @param name	the name need to set for the user-defined metadata
+	 * @param value  the value need to set for the user-defined metadata
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public void setUserDefinedDataType(String name, String value) {
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		if (definedElement != null) {
+			definedElement.setMetaValueTypeAttribute(value);
+		}
+
+	}
+
+	/**
+	 * Sets the odf dom element representation
+	 * <code>MetaUserDefinedElement</code>, if the element with the attribute name exists,then
+	 * update;or create a new element if type or value is null,the original will
+	 * not be updated.
+	 * 
+	 * @param name	the name need to set for the user-defined metadata
+	 * @param type	the data type need to set for the user-defined metadata
+	 * @param value	the value need to set for the user-defined metadata
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement.
+	 */
+	public void setUserDefinedData(String name, String type, String value) {
+		// test if name exists
+		MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name);
+		// if exists, then update,if parameter is null, then don't change
+		if (definedElement != null) {
+			if (type != null) {
+				definedElement.setMetaValueTypeAttribute(type);
+			}
+			if (value != null) {
+				definedElement.setTextContent(value);
+			}
+		} else {
+			// if not exists, add
+			definedElement = mOfficeMetaElement.newMetaUserDefinedElement(name,
+					type);
+			definedElement.setTextContent(value);
+
+		}
+
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaInitialCreatorElement</code>.
+	 * 
+	 * @return get the initial creator of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement.
+	 */
+	public String getInitialCreator() {
+		MetaInitialCreatorElement iniCreatorEle = OdfElement.findFirstChildNode(MetaInitialCreatorElement.class,
+				mOfficeMetaElement);
+		if (iniCreatorEle != null) {
+			return iniCreatorEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaInitialCreatorElement</code>.
+	 * 
+	 * @param initialCreator set the specified initial creator
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement.
+	 */
+	public void setInitialCreator(String initialCreator) {
+		MetaInitialCreatorElement iniCreatorEle = OdfElement.findFirstChildNode(MetaInitialCreatorElement.class,
+				mOfficeMetaElement);
+		if (iniCreatorEle == null) {
+			iniCreatorEle = mOfficeMetaElement.newMetaInitialCreatorElement();
+		}
+		iniCreatorEle.setTextContent(initialCreator);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>DcCreatorElement</code>.
+	 * 
+	 * @return the creator of the current document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcCreatorElement.
+	 */
+	public String getCreator() {
+		DcCreatorElement creatorEle = OdfElement.findFirstChildNode(
+				DcCreatorElement.class, mOfficeMetaElement);
+		if (creatorEle != null) {
+			return creatorEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>DcCreatorElement</code>.
+	 * 
+	 * @param creator set the specified creator
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcCreatorElement.
+	 */
+	public void setCreator(String creator) {
+		DcCreatorElement creatorEle = OdfElement.findFirstChildNode(
+				DcCreatorElement.class, mOfficeMetaElement);
+		if (creatorEle == null) {
+			creatorEle = mOfficeMetaElement.newDcCreatorElement();
+		}
+		creatorEle.setTextContent(creator);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaPrintedByElement</code>
+	 * 
+	 * @return the name of the last person who printed the current document;
+	 * <p>
+	 * <code>null</code>, if element is not set
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement.
+	 */
+	public String getPrintedBy() {
+		MetaPrintedByElement printedByEle = OdfElement.findFirstChildNode(
+				MetaPrintedByElement.class, mOfficeMetaElement);
+		if (printedByEle != null) {
+			return printedByEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaPrintedByElement</code>.
+	 * 
+	 * @param printedBy	the name need to set for the last person who printed the current document
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement.
+	 */
+	public void setPrintedBy(String printedBy) {
+		MetaPrintedByElement printedByEle = OdfElement.findFirstChildNode(
+				MetaPrintedByElement.class, mOfficeMetaElement);
+		if (printedByEle == null) {
+			printedByEle = mOfficeMetaElement.newMetaPrintedByElement();
+		}
+		printedByEle.setTextContent(printedBy);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaCreationDateElement</code>
+	 * 
+	 * @return the date and time when the document was created initially;
+	 * <p>
+	 * <code>null</code>, if element is not set
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement.
+	 */
+	public Calendar getCreationDate() {
+		MetaCreationDateElement creationDateEle = OdfElement.findFirstChildNode(MetaCreationDateElement.class,
+				mOfficeMetaElement);
+		if (creationDateEle != null) {
+			return stringToCalendar(creationDateEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaCreationDateElement</code> .
+	 * 
+	 * @param creationDate	the date and time need to set
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement.
+	 */
+	public void setCreationDate(Calendar creationDate) {
+		MetaCreationDateElement creationDateEle = OdfElement.findFirstChildNode(MetaCreationDateElement.class,
+				mOfficeMetaElement);
+		if (creationDateEle == null) {
+			creationDateEle = mOfficeMetaElement.newMetaCreationDateElement();
+		}
+		creationDateEle.setTextContent(calendarToString(creationDate));
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>DcDateElement</code>.
+	 * 
+	 * @return the date and time when the document was last modified;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcDateElement.
+	 */
+	public Calendar getDcdate() {
+		DcDateElement dcDateEle = OdfElement.findFirstChildNode(
+				DcDateElement.class, mOfficeMetaElement);
+		if (dcDateEle != null) {
+			return stringToCalendar(dcDateEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>DcDateElement</code>.
+	 * 
+	 * @param dcdate	the date and time need to set
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcDateElement.
+	 */
+	public void setDcdate(Calendar dcdate) {
+		DcDateElement dcDateEle = OdfElement.findFirstChildNode(
+				DcDateElement.class, mOfficeMetaElement);
+		if (dcDateEle == null) {
+			dcDateEle = mOfficeMetaElement.newDcDateElement();
+		}
+		dcDateEle.setTextContent(calendarToString(dcdate));
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaPrintDateElement</code>.
+	 * 
+	 * @return the date and time when the document was last printed;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement
+	 */
+	public Calendar getPrintDate() {
+		MetaPrintDateElement printDateEle = OdfElement.findFirstChildNode(
+				MetaPrintDateElement.class, mOfficeMetaElement);
+		if (printDateEle != null) {
+			return stringToCalendar(printDateEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaPrintDateElement</code>.
+	 * 
+	 * @param printDate	the date and time need to set
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement
+	 */
+	public void setPrintDate(Calendar printDate) {
+		MetaPrintDateElement printDateEle = OdfElement.findFirstChildNode(
+				MetaPrintDateElement.class, mOfficeMetaElement);
+		if (printDateEle == null) {
+			printDateEle = mOfficeMetaElement.newMetaPrintDateElement();
+		}
+		printDateEle.setTextContent(calendarToString(printDate));
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>DcLanguageElement</code>.
+	 * 
+	 * @return the default language of the document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcLanguageElement
+	 */
+	public String getLanguage() {
+		DcLanguageElement languageEle = OdfElement.findFirstChildNode(
+				DcLanguageElement.class, mOfficeMetaElement);
+		if (languageEle != null) {
+			return languageEle.getTextContent();
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>DcLanguageElement</code>.
+	 * 
+	 * @param language the default language need to set fo the current document
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DcLanguageElement
+	 */
+	public void setLanguage(String language) {
+		DcLanguageElement languageEle = OdfElement.findFirstChildNode(
+				DcLanguageElement.class, mOfficeMetaElement);
+		if (languageEle == null) {
+			languageEle = mOfficeMetaElement.newDcLanguageElement();
+		}
+		languageEle.setTextContent(language);
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaEditingCyclesElement</code> .
+	 * 
+	 * @return the number of times that the document has been edited;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement
+	 */
+	public Integer getEditingCycles() {
+		MetaEditingCyclesElement editingCyclesEle = OdfElement.findFirstChildNode(MetaEditingCyclesElement.class,
+				mOfficeMetaElement);
+		if (editingCyclesEle != null) {
+			return Integer.valueOf(editingCyclesEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaEditingCyclesElement</code> .
+	 * 
+	 * @param editingCycles	set the specified edit times
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement
+	 */
+	public void setEditingCycles(Integer editingCycles) {
+		MetaEditingCyclesElement editingCyclesEle = OdfElement.findFirstChildNode(MetaEditingCyclesElement.class,
+				mOfficeMetaElement);
+		if (editingCyclesEle == null) {
+			editingCyclesEle = mOfficeMetaElement.newMetaEditingCyclesElement();
+		}
+		editingCyclesEle.setTextContent(String.valueOf(editingCycles));
+	}
+
+	/**
+	 * Receives the value of the odf dom element representation
+	 * <code>MetaEditingDurationElement</code>.
+	 * 
+	 * @return the total time spent editing the document;
+	 * <p>
+	 * <code>null</code>, if the element is not set.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement
+	 */
+	public Duration getEditingDuration() {
+		MetaEditingDurationElement editiingDurationEle = OdfElement.findFirstChildNode(MetaEditingDurationElement.class,
+				mOfficeMetaElement);
+		if (editiingDurationEle != null) {
+			return Duration.valueOf(editiingDurationEle.getTextContent());
+		}
+		return null;
+	}
+
+	/**
+	 * Sets the value of the odf dom element representation
+	 * <code>MetaEditingDurationElement</code>.
+	 * 
+	 * @param editingDuration the time need to set
+	 * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement
+	 */
+	public void setEditingDuration(Duration editingDuration) {
+		MetaEditingDurationElement editiingDurationEle = OdfElement.findFirstChildNode(MetaEditingDurationElement.class,
+				mOfficeMetaElement);
+		if (editiingDurationEle == null) {
+			editiingDurationEle = mOfficeMetaElement.newMetaEditingDurationElement();
+		}
+		editiingDurationEle.setTextContent(editingDuration.toString());
+
+	}
+
+	/**
+	 * Receives the sub feature of DocumentStatistic.
+	 * 
+	 * @return the statistics about the document which can be represented by 
+	 * <code>DocumentStatistic</code> feature;
+	 * <p>
+	 * <code>null</code>, if the feature is not exist.
+	 * @see org.odftoolkit.odfdom.dom.element.meta.DocumentStatistic
+	 */
+	public DocumentStatistic getDocumentStatistic() {
+		MetaDocumentStatisticElement element = getDocumentStatisticElement();
+		if (element != null) {
+			return new DocumentStatistic(element);
+		} else {
+			return null;
+		}
+	}
+	
+	private MetaDocumentStatisticElement getDocumentStatisticElement() {
+		return OdfElement.findFirstChildNode(
+				MetaDocumentStatisticElement.class, mOfficeMetaElement);
+	}
+
+	/**
+	 * Change valid string of calendar to Calendar type.
+	 * 
+	 * @param baseDate the string of a calender
+	 * @return the object of Calender
+	 */
+	private Calendar stringToCalendar(String baseDate) {
+		// Calendar calendar=new GregorianCalendar();
+		Calendar calendar = Calendar.getInstance();
+		Date d1 = null;
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+
+		try {
+			d1 = sdf.parse(baseDate);
+		} catch (Exception e) {
+			// invalid format or null value in meta.xml
+			// d1=new Date();
+		}
+
+		calendar.setTime(d1);
+		return calendar;
+	}
+
+	/**
+	 * Convert a <code>Canlender</code> object to <code>String</code> object.
+	 * @param calendar an instanceof <code>Canlender</code>
+	 * @return the String format(yyyy-MM-dd'T'HH:mm:ss) of Calendar.
+	 */
+	private String calendarToString(Calendar calendar) {
+		return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(calendar.getTime());
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/presentation/Notes.java b/trunk/simple/src/main/java/org/odftoolkit/simple/presentation/Notes.java
new file mode 100644
index 0000000..5feacd1
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/presentation/Notes.java
@@ -0,0 +1,206 @@
+/************************************************************************
+ *
+ * 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.simple.presentation;
+
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawTextBoxElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.text.list.AbstractListContainer;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.w3c.dom.NodeList;
+
+/**
+ * <code>Notes</code> represents the presentation notes feature of the ODF
+ * document. <code>Notes</code> provides methods to creates notes, add content,
+ * add list, etc.
+ * 
+ */
+public class Notes extends Component implements ListContainer {
+
+	PresentationNotesElement maNoteElement;
+	private ListContainerImpl listContainerImpl;
+
+	/**
+	 * This is a tool class which supplies all of the notes creation detail.
+	 * <p>
+	 * The end user isn't allowed to create it directly, otherwise an
+	 * <code>IllegalStateException</code> will be thrown.
+	 * 
+	 *@since 0.3.5
+	 */
+	public static class NotesBuilder {
+
+		private final IdentityHashMap<PresentationNotesElement, Notes> maNotesRepository = new IdentityHashMap<PresentationNotesElement, Notes>();
+
+		/**
+		 * NotesBuilder constructor. This constructor should only be use in
+		 * owner {@link org.odftoolkit.simple.PresentationDocument
+		 * PresentationDocument} constructor. The end user isn't allowed to call
+		 * it directly, otherwise an <code>IllegalStateException</code> will be
+		 * thrown.
+		 * 
+		 * @param doc
+		 *            the owner <code>PresentationDocument</code>.
+		 * @throws IllegalStateException
+		 *             if new NotesBuilder out of owner PresentationDocument
+		 *             constructor, this exception will be thrown.
+		 */
+		public NotesBuilder(PresentationDocument doc) {
+			if (doc.getNotesBuilder() != null) {
+				throw new IllegalStateException(
+						"NotesBuilder only can be created in owner PresentationDocument constructor.");
+			}
+		}
+
+		/**
+		 * Get a presentation notes page instance by an instance of
+		 * <code>PresentationNotesElement</code>.
+		 * 
+		 * @param noteElement
+		 *            an instance of <code>PresentationNotesElement</code>
+		 * @return an instance of <code>Notes</code> that can represent
+		 *         <code>PresentationNotesElement</code>
+		 */
+		public synchronized Notes getNotesInstance(PresentationNotesElement noteElement) {
+			if (maNotesRepository.containsKey(noteElement))
+				return maNotesRepository.get(noteElement);
+			else {
+				Notes newNotes = new Notes(noteElement);
+				maNotesRepository.put(noteElement, newNotes);
+				return newNotes;
+			}
+		}
+	}
+
+	private Notes(PresentationNotesElement noteElement) {
+		maNoteElement = noteElement;
+	}
+
+	/**
+	 * Get a presentation notes page instance by an instance of
+	 * <code>PresentationNotesElement</code>.
+	 * 
+	 * @param noteElement
+	 *            an instance of <code>PresentationNotesElement</code>
+	 * @return an instance of <code>Notes</code> that can represent
+	 *         <code>PresentationNotesElement</code>
+	 */
+	public static Notes getInstance(PresentationNotesElement noteElement) {
+		PresentationDocument ownerDocument = (PresentationDocument) ((OdfFileDom) (noteElement.getOwnerDocument()))
+				.getDocument();
+		return ownerDocument.getNotesBuilder().getNotesInstance(noteElement);
+
+	}
+
+	/**
+	 * Return an instance of <code>PresentationNotesElement</code> which
+	 * represents presentation notes page feature.
+	 * 
+	 * @return an instance of <code>PresentationNotesElement</code>
+	 */
+	public PresentationNotesElement getOdfElement() {
+		return maNoteElement;
+	}
+
+	/**
+	 * insert some text to the notes page
+	 * 
+	 * @param text
+	 *            the text that need to insert in the notes page
+	 */
+	public void addText(String text) {
+		NodeList frameList = maNoteElement.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "frame");
+		if (frameList.getLength() > 0) {
+			DrawFrameElement frame = (DrawFrameElement) frameList.item(0);
+			NodeList textBoxList = frame.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "text-box");
+			if (textBoxList.getLength() > 0) {
+				DrawTextBoxElement textBox = (DrawTextBoxElement) textBoxList.item(0);
+				TextPElement newPara = textBox.newTextPElement();
+				newPara.setTextContent(text);
+			}
+		}
+	}
+
+	public OdfElement getListContainerElement() {
+		return getListContainerImpl().getListContainerElement();
+	}
+
+	public List addList() {
+		return getListContainerImpl().addList();
+	}
+
+	public List addList(ListDecorator decorator) {
+		return getListContainerImpl().addList(decorator);
+	}
+
+	public void clearList() {
+		getListContainerImpl().clearList();
+	}
+
+	public Iterator<List> getListIterator() {
+		return getListContainerImpl().getListIterator();
+	}
+
+	public boolean removeList(List list) {
+		return getListContainerImpl().removeList(list);
+	}
+
+	private ListContainerImpl getListContainerImpl() {
+		if (listContainerImpl == null) {
+			listContainerImpl = new ListContainerImpl();
+		}
+		return listContainerImpl;
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+
+		public OdfElement getListContainerElement() {
+			DrawFrameElement frame = null;
+			DrawTextBoxElement textBox = null;
+			NodeList frameList = maNoteElement.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "frame");
+			if (frameList.getLength() <= 0) {
+				frame = maNoteElement.newDrawFrameElement();
+			} else {
+				frame = (DrawFrameElement) frameList.item(frameList.getLength() - 1);
+			}
+			NodeList textBoxList = frame.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "text-box");
+			if (textBoxList.getLength() <= 0) {
+				textBox = frame.newDrawTextBoxElement();
+			} else {
+				textBox = (DrawTextBoxElement) textBoxList.item(textBoxList.getLength() - 1);
+			}
+			return textBox;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/presentation/Slide.java b/trunk/simple/src/main/java/org/odftoolkit/simple/presentation/Slide.java
new file mode 100644
index 0000000..e9d5b32
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/presentation/Slide.java
@@ -0,0 +1,1174 @@
+/************************************************************************
+ *
+ * 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.simple.presentation;
+
+import java.awt.Rectangle;
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawTextBoxElement;
+import org.odftoolkit.odfdom.dom.element.presentation.PresentationNotesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePresentationPageLayoutElement;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.chart.AbstractChartContainer;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.chart.ChartContainer;
+import org.odftoolkit.simple.chart.DataSet;
+import org.odftoolkit.simple.draw.AbstractTextboxContainer;
+import org.odftoolkit.simple.draw.FrameRectangle;
+import org.odftoolkit.simple.draw.Textbox;
+import org.odftoolkit.simple.draw.TextboxContainer;
+import org.odftoolkit.simple.table.AbstractTableContainer;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.odftoolkit.simple.text.list.AbstractListContainer;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.w3c.dom.NodeList;
+
+/**
+ * <code>Slide</code> represents the presentation slide feature of the ODF
+ * document. <code>Slide</code> provides methods to get the slide index,get the
+ * content of the current slide, etc.
+ */
+public class Slide extends Component implements ListContainer, TableContainer, TextboxContainer, ChartContainer {
+
+	DrawPageElement maSlideElement;
+	private ListContainerImpl listContainerImpl;
+	private TableContainerImpl tableContainerImpl;
+	private TextboxContainerImpl mTextboxContainerImpl;
+	private ChartContainerImpl chartContainerImpl;
+	
+	/**
+	 * This is a tool class which supplies all of the slide creation detail.
+	 * <p>
+	 * The end user isn't allowed to create it directly, otherwise an
+	 * <code>IllegalStateException</code> will be thrown.
+	 * 
+	 *@since 0.3.5
+	 */
+	public static class SlideBuilder {
+
+		private final IdentityHashMap<DrawPageElement, Slide> maSlideRepository = new IdentityHashMap<DrawPageElement, Slide>();
+
+		/**
+		 * SlideBuilder constructor. This constructor should only be use in
+		 * owner {@link org.odftoolkit.simple.PresentationDocument
+		 * PresentationDocument} constructor. The end user isn't allowed to call
+		 * it directly, otherwise an <code>IllegalStateException</code> will be
+		 * thrown.
+		 * 
+		 * @param doc
+		 *            the owner <code>PresentationDocument</code>.
+		 * @throws IllegalStateException
+		 *             if new SlideBuilder out of owner PresentationDocument
+		 *             constructor, this exception will be thrown.
+		 */
+		public SlideBuilder(PresentationDocument doc) {
+			if (doc.getSlideBuilder() != null) {
+				throw new IllegalStateException(
+						"SlideBuilder only can be created in owner PresentationDocument constructor.");
+			}
+		}
+
+		/**
+		 * Get a presentation slide instance by an instance of
+		 * <code>DrawPageElement</code>.
+		 * 
+		 * @param pageElement
+		 *            an instance of <code>DrawPageElement</code>
+		 * @return an instance of <code>Slide</code> that can represent
+		 *         <code>pageElement</code>
+		 */
+		public synchronized Slide getSlideInstance(DrawPageElement pageElement) {
+			if (maSlideRepository.containsKey(pageElement)) {
+				return maSlideRepository.get(pageElement);
+			} else {
+				Slide newSlide = new Slide(pageElement);
+				maSlideRepository.put(pageElement, newSlide);
+				return newSlide;
+			}
+		}
+	}
+
+	private Slide(DrawPageElement pageElement) {
+		maSlideElement = pageElement;
+	}
+
+	/**
+	 * Get a presentation slide instance by an instance of
+	 * <code>DrawPageElement</code>.
+	 * 
+	 * @param pageElement
+	 *            an instance of <code>DrawPageElement</code>
+	 * @return an instance of <code>Slide</code> that can represent
+	 *         <code>pageElement</code>
+	 */
+	public static Slide getInstance(DrawPageElement pageElement) {
+		PresentationDocument ownerDocument = (PresentationDocument) ((OdfFileDom) (pageElement.getOwnerDocument()))
+				.getDocument();
+		return ownerDocument.getSlideBuilder().getSlideInstance(pageElement);
+	}
+
+	/**
+	 * Return an instance of <code>DrawPageElement</code> which represents
+	 * presentation slide feature.
+	 * 
+	 * @return an instance of <code>DrawPageElement</code>
+	 */
+	public DrawPageElement getOdfElement() {
+		return maSlideElement;
+	}
+
+	/**
+	 * Get the current slide index in the owner document.
+	 * 
+	 * @return the slide index in the owner document
+	 *         <p>
+	 *         -1, if the odf element which can represent this slide is not in
+	 *         the document DOM tree
+	 */
+	public int getSlideIndex() {
+		OdfFileDom contentDom = (OdfFileDom) maSlideElement.getOwnerDocument();
+		NodeList slideNodes = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideEle = (DrawPageElement) slideNodes.item(i);
+			if (slideEle == maSlideElement)// should not equals here, see
+			// OdfElement.equals(Object obj)
+			{
+				return i;
+			}
+		}
+		return -1;
+	}
+
+	/**
+	 * Get the current slide name.
+	 * <p>
+	 * If the "draw:name" attribute is not present there, create an unique name
+	 * for this slide
+	 * 
+	 * @return the name of the current slide
+	 */
+	public String getSlideName() {
+		String slideName = maSlideElement.getDrawNameAttribute();
+		if (slideName == null) {
+			slideName = makeUniqueSlideName();
+			maSlideElement.setDrawNameAttribute(slideName);
+		}
+		return slideName;
+	}
+
+	/**
+	 * Set the current slide name.
+	 * <p>
+	 * It must be unique slide name in the current presentation. If not, an
+	 * IllegalArgumentException will be thrown. If the given name is null, an
+	 * IllegalArgumentException will also be thrown.
+	 * 
+	 * @param name
+	 *            the new name of the current slide
+	 * @throws IllegalArgumentException
+	 *             if the given name is null or it is not unique in the current
+	 *             presentation.
+	 */
+	public void setSlideName(String name) {
+		if (name == null) {
+			throw new IllegalArgumentException("slide name is null is not accepted in the presentation document");
+		}
+		// check if name is unique in this presentation
+		OdfFileDom contentDom = (OdfFileDom) maSlideElement.getOwnerDocument();
+		NodeList slideNodes = contentDom.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+		for (int i = 0; i < slideNodes.getLength(); i++) {
+			DrawPageElement slideEle = (DrawPageElement) slideNodes.item(i);
+			Slide slide = Slide.getInstance(slideEle);
+			String slideName = slide.getSlideName();
+			if (slideName.equals(name)) {
+				throw new IllegalArgumentException(
+						"the given slide name is already exist in the current presentation document");
+			}
+		}
+		maSlideElement.setDrawNameAttribute(name);
+	}
+
+	/**
+	 * Get the Notes page of this slide
+	 * 
+	 * @return the instance of <code>Notes</code> which represent the notes page
+	 *         of the current slide
+	 */
+	public Notes getNotesPage() {
+		NodeList notesList = maSlideElement.getElementsByTagNameNS(OdfDocumentNamespace.PRESENTATION.getUri(), "notes");
+		if (notesList.getLength() > 0) {
+			PresentationNotesElement noteEle = (PresentationNotesElement) notesList.item(0);
+			return Notes.getInstance(noteEle);
+
+		}
+		return null;
+	}
+
+	private String makeUniqueSlideName() {
+		int index = getSlideIndex();
+		String slideName = "page" + (index + 1) + "-" + String.format("a%06x", (int) (Math.random() * 0xffffff));
+		return slideName;
+	}
+
+	/**
+	 * A slide layout is a slide with some predefine place holder.
+	 * 
+	 * we define some template layout as below:
+	 * <ul>
+	 * <li>"BLANK" template is a slide without any filled element.</li>
+	 * <li>"TITLE_ONLY" template is a slide with a title only.</li>
+	 * <li>"TITLE_SUBTITLE" template is a slide with a title and a subtitle.</li>
+	 * <li>"TITLE_OUTLINE" template is a slide with a title and an outline
+	 * block.</li>
+	 * <li>"TITLE_PLUS_TEXT" template is a slide with a title and a text block.</li>
+	 * <li>"TITLE_PLUS_CHART" template is a slide with a title and a chart
+	 * block.</li>
+	 * <li>"TITLE_PLUS_2_TEXT_BLOCK" template is a slide with a title and two
+	 * text blocks.</li>
+	 * <li>"TITLE_PLUS_2_CHART" template is a slide with a title and two chart
+	 * blocks.</li>
+	 * <li>"TITLE_LEFT_CHART_RIGHT_OUTLINE" template is a slide with a title, a
+	 * chart block on the left and an outline block on the right.</li>
+	 * <li>"TITLE_PLUS_3_OBJECT" template is a slide with a title, an outline
+	 * block and two chart blocks.</li>
+	 * <li>"TITLE_PLUS_4_OBJECT" template is a slide with a title, an outline
+	 * block and three chart blocks.</li>
+	 * <ul>
+	 */
+	public enum SlideLayout {
+
+		/**
+		 * Blank, a blank presentation
+		 */
+		BLANK("blank") {
+			public void apply(DrawPageElement page) {
+				//do nothing.			
+			}
+		},
+		/**
+		 * Title_only, the presentation with title only
+		 */
+		TITLE_ONLY("title_only") {
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = "AL1T" + makeUniqueName();
+				try {
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					layout.newPresentationPlaceholderElement("title", "2.058cm", "1.743cm", "23.91cm", "3.507cm");
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setProperty(StyleGraphicPropertiesElement.StyleShadow, "true");
+				frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.006cm");
+				frame1.setSvgWidthAttribute("24.299cm");
+				frame1.setSvgXAttribute("1.35cm");
+				frame1.setSvgYAttribute("0.717cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+			}
+		},
+		/**
+		 * title_subtitle, the presentation with title and subtitle.
+		 */
+		TITLE_SUBTITLE("title_subtitle") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName ="AL1T" + makeUniqueName();
+				try {
+					styles = doc.getStylesDom().getOfficeStyles();
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					//String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue
+					layout.newPresentationPlaceholderElement("title", "3.507cm", "23.912cm", "2.058cm", "1.743cm");
+					layout.newPresentationPlaceholderElement("subtitle", "13.23cm", "23.912cm", "2.058cm", "5.838cm");
+					
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+				
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("4.244cm");
+				frame1.setSvgWidthAttribute("23.848cm");
+				frame1.setSvgXAttribute("2.075cm");
+				frame1.setSvgYAttribute("6.621cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("5.097cm");
+				frame2.setSvgWidthAttribute("19.631cm");
+				frame2.setSvgXAttribute("4.183cm");
+				frame2.setSvgYAttribute("12.003cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.SUBTITLE.toString());
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.newDrawTextBoxElement();
+			}
+		},
+		/**
+		 * Title_outline, the presentation with outline
+		 */
+		TITLE_OUTLINE("title_outline") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					if (styles == null) {
+						styles = doc.getStylesDom().getOfficeStyles();
+					}
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					layout.newPresentationPlaceholderElement("title", "2.058cm", "1.743cm", "23.91cm", "3.507cm");
+					layout.newPresentationPlaceholderElement("outline", "2.058cm", "1.743cm", "23.91cm", "3.507cm");
+
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setProperty(StyleGraphicPropertiesElement.StyleShadow, "true");
+				frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.006cm");
+				frame1.setSvgWidthAttribute("24.299cm");
+				frame1.setSvgXAttribute("1.35cm");
+				frame1.setSvgYAttribute("0.717cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+
+				frame2.setProperty(StyleGraphicPropertiesElement.FillColor, "#ffffff");
+				frame2.setProperty(StyleGraphicPropertiesElement.MinHeight, "13.114");
+				frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("11.629cm");
+				frame2.setSvgWidthAttribute("24.199cm");
+				frame2.setSvgXAttribute("1.35cm");
+				frame2.setSvgYAttribute("4.337cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.newDrawTextBoxElement();
+			}
+		},
+		/**
+		 * Title_text, the presentation with title and one text block
+		 */
+		TITLE_PLUS_TEXT("title_text") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					if (styles == null) {
+						styles = doc.getStylesDom().getOfficeStyles();
+					}
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					layout.newPresentationPlaceholderElement("title", "2.058cm", "1.743cm", "23.91cm", "1.743cm");
+					layout.newPresentationPlaceholderElement("subtitle", "2.058cm", "5.838cm", "23.91cm", "13.23cm");
+
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.006cm");
+				frame1.setSvgWidthAttribute("24.299cm");
+				frame1.setSvgXAttribute("1.35cm");
+				frame1.setSvgYAttribute("0.717cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame2.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("11.88cm");
+				frame2.setSvgWidthAttribute("24.299cm");
+				frame2.setSvgXAttribute("1.35cm");
+				frame2.setSvgYAttribute("4.712cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.SUBTITLE.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.newDrawTextBoxElement();
+			}
+		},
+		/**
+		 * title_two_text_block, the presentation with title and two text blocks
+		 */
+		TITLE_PLUS_2_TEXT_BLOCK("title_two_text_block") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					if (styles == null) {
+						styles = doc.getStylesDom().getOfficeStyles();
+					}
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					layout.newPresentationPlaceholderElement("outline", "2.058cm", "1.743cm", "23.91cm", "1.743cm");
+					layout.newPresentationPlaceholderElement("outline", "1.35cm", "4.212cm", "11.857cm", "11.629cm");
+					layout.newPresentationPlaceholderElement("outline", "4.212cm", "13.8cm", "11.857cm", "11.629cm");
+
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+				
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame1.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.006cm");
+				frame1.setSvgWidthAttribute("24.299cm");
+				frame1.setSvgXAttribute("1.35cm");
+				frame1.setSvgYAttribute("0.717cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame2.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame2.setPresentationStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("11.629cm");
+				frame2.setSvgWidthAttribute("11.857cm");
+				frame2.setSvgXAttribute("1.35cm");
+				frame2.setSvgYAttribute("4.212cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.newDrawTextBoxElement();
+				
+				DrawFrameElement frame3 = page.newDrawFrameElement();
+				frame3.setProperty(StyleGraphicPropertiesElement.AutoGrowHeight, "true");
+				frame3.setProperty(StyleGraphicPropertiesElement.MinHeight, "3.507");
+				frame3.setPresentationStyleNameAttribute(frame3.getStyleName());
+				frame3.setDrawLayerAttribute("layout");
+				frame3.setSvgHeightAttribute("11.62cm");
+				frame3.setSvgWidthAttribute("11.857cm");
+				frame3.setSvgXAttribute("13.8cm");
+				frame3.setSvgYAttribute("4.212cm");
+				frame3.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+				frame3.setPresentationPlaceholderAttribute(true);
+				frame3.newDrawTextBoxElement();
+			}
+		},
+		/**
+		 * title_three_objects, the presentation with title, chart and outline blocks.
+		 */
+		TITLE_LEFT_CHART_RIGHT_OUTLINE("title_left_chart_right_outline") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					styles = doc.getStylesDom().getOfficeStyles();
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					//String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue
+					layout.newPresentationPlaceholderElement("title", "3.507cm", "25.199cm", "1.4cm", "0.837cm");
+					layout.newPresentationPlaceholderElement("chart", "13.86cm", "12.296cm", "1.4cm", "4.914cm");
+					layout.newPresentationPlaceholderElement("outline", "13.86cm", "12.296cm", "14.311cm", "4.914cm");
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.507cm");
+				frame1.setSvgWidthAttribute("25.199cm");
+				frame1.setSvgXAttribute("1.4cm");
+				frame1.setSvgYAttribute("0.837cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setDrawStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("13.86cm");
+				frame2.setSvgWidthAttribute("12.296cm");
+				frame2.setSvgXAttribute("1.4cm");
+				frame2.setSvgYAttribute("4.914cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame2.newDrawObjectElement();
+
+				DrawFrameElement frame3 = page.newDrawFrameElement();
+				frame3.setPresentationStyleNameAttribute(frame3.getStyleName());
+				frame3.setDrawLayerAttribute("layout");
+				frame3.setSvgHeightAttribute("13.86cm");
+				frame3.setSvgWidthAttribute("12.296cm");
+				frame3.setSvgXAttribute("14.311cm");
+				frame3.setSvgYAttribute("4.914cm");
+				frame3.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+				frame3.setPresentationPlaceholderAttribute(true);
+				frame3.newDrawTextBoxElement();
+			}
+		},
+		/**
+		 * title_plus_chart, the presentation with title and chart.
+		 */
+		TITLE_PLUS_CHART("title_plus_chart") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = "AL1T" + makeUniqueName();
+				try {
+					styles = doc.getStylesDom().getOfficeStyles();
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					//String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue
+					layout.newPresentationPlaceholderElement("title", "3.507cm", "25.199cm", "1.4cm", "0.837cm");
+					layout.newPresentationPlaceholderElement("chart", "13.86cm", "25.199cm", "1.4cm", "4.914cm");
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+				
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.507cm");
+				frame1.setSvgWidthAttribute("25.199cm");
+				frame1.setSvgXAttribute("1.4cm");
+				frame1.setSvgYAttribute("0.837cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setDrawStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("13.86cm");
+				frame2.setSvgWidthAttribute("25.199cm");
+				frame2.setSvgXAttribute("1.4cm");
+				frame2.setSvgYAttribute("4.914cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame2.newDrawObjectElement();
+			}
+		},
+		/**
+		 * title_plus_two_chart, the presentation with title and two charts.
+		 */
+		TITLE_PLUS_2_CHART("title_plus_2_chart") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					styles = doc.getStylesDom().getOfficeStyles();
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					//String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue
+					layout.newPresentationPlaceholderElement("title", "3.507cm", "25.199cm", "1.4cm", "0.837cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "25.199cm", "1.4cm", "4.914cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "25.199cm", "1.4cm", "12.153cm");
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+				
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.507cm");
+				frame1.setSvgWidthAttribute("25.199cm");
+				frame1.setSvgXAttribute("1.4cm");
+				frame1.setSvgYAttribute("0.837cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setDrawStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("6.61cm");
+				frame2.setSvgWidthAttribute("25.199cm");
+				frame2.setSvgXAttribute("1.4cm");
+				frame2.setSvgYAttribute("4.914cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame2.newDrawObjectElement();
+
+				DrawFrameElement frame3 = page.newDrawFrameElement();
+				frame3.setDrawStyleNameAttribute(frame3.getStyleName());
+				frame3.setDrawLayerAttribute("layout");
+				frame3.setSvgHeightAttribute("6.61cm");
+				frame3.setSvgWidthAttribute("25.199cm");
+				frame3.setSvgXAttribute("1.4cm");
+				frame3.setSvgYAttribute("12.153cm");
+				frame3.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame3.setPresentationPlaceholderAttribute(true);
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame3.newDrawObjectElement();
+			}
+		},
+		/**
+		 * title_three_object, the presentation with title and three object blocks.
+		 */
+		TITLE_PLUS_3_OBJECT("title_plus_three_object") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					styles = doc.getStylesDom().getOfficeStyles();
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					//String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue
+					layout.newPresentationPlaceholderElement("title", "3.507cm", "25.199cm", "1.4cm", "0.837cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "12.296cm", "1.4cm", "4.914cm");
+					layout.newPresentationPlaceholderElement("outline", "6.61cm", "12.296cm", "14.311cm", "4.914cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "25.199cm", "1.4cm", "12.153cm");
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+				
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.507cm");
+				frame1.setSvgWidthAttribute("25.199cm");
+				frame1.setSvgXAttribute("1.4cm");
+				frame1.setSvgYAttribute("0.837cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setDrawStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("6.61cm");
+				frame2.setSvgWidthAttribute("12.296cm");
+				frame2.setSvgXAttribute("1.4cm");
+				frame2.setSvgYAttribute("4.914cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame2.newDrawObjectElement();
+
+				DrawFrameElement frame3 = page.newDrawFrameElement();
+				frame3.setPresentationStyleNameAttribute(frame3.getStyleName());
+				frame3.setDrawLayerAttribute("layout");
+				frame3.setSvgHeightAttribute("6.61cm");
+				frame3.setSvgWidthAttribute("12.296cm");
+				frame3.setSvgXAttribute("14.311cm");
+				frame3.setSvgYAttribute("4.914cm");
+				frame3.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+				frame3.setPresentationPlaceholderAttribute(true);
+				frame3.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame3.newDrawTextBoxElement();
+				
+				DrawFrameElement frame4 = page.newDrawFrameElement();
+				frame4.setDrawStyleNameAttribute(frame4.getStyleName());
+				frame4.setDrawLayerAttribute("layout");
+				frame4.setSvgHeightAttribute("6.61cm");
+				frame4.setSvgWidthAttribute("25.199cm");
+				frame4.setSvgXAttribute("1.4cm");
+				frame4.setSvgYAttribute("12.153cm");
+				frame4.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame4.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame4.setPresentationPlaceholderAttribute(true);
+				frame4.newDrawObjectElement();
+			}
+		},
+		/**
+		 * title_four_object, the presentation with title and four object blocks.
+		 */
+		TITLE_PLUS_4_OBJECT("title_four_object") {
+			
+			public void apply(DrawPageElement page) {
+				Document doc = (Document) ((OdfFileDom) page.getOwnerDocument()).getDocument();
+				OdfOfficeStyles styles = doc.getOrCreateDocumentStyles();
+				String layoutName;
+				layoutName = makeUniqueName();
+				try {
+					styles = doc.getStylesDom().getOfficeStyles();
+					if (styles == null) {
+						styles = doc.getStylesDom().newOdfElement(OdfOfficeStyles.class);
+					}
+					StylePresentationPageLayoutElement layout = styles.newStylePresentationPageLayoutElement(layoutName);
+					//String presentationObjectValue, String svgHeightValue, String svgWidthValue, String svgXValue, String svgYValue
+					layout.newPresentationPlaceholderElement("title", "3.507cm", "25.199cm", "1.4cm", "0.837cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "12.296cm", "1.4cm", "4.914cm");
+					layout.newPresentationPlaceholderElement("outline", "6.61cm", "12.296cm", "14.311cm", "4.914cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "12.296cm", "1.4cm", "12.153cm");
+					layout.newPresentationPlaceholderElement("chart", "6.61cm", "12.296cm", "14.311cm", "12.153cm");
+				} catch (Exception e1) {
+					Logger.getLogger(SlideLayout.class.getName()).log(Level.SEVERE, null, e1);
+				}
+				page.setPresentationPresentationPageLayoutNameAttribute(layoutName);
+				
+				DrawFrameElement frame1 = page.newDrawFrameElement();
+				frame1.setPresentationStyleNameAttribute(frame1.getStyleName());
+				frame1.setDrawLayerAttribute("layout");
+				frame1.setSvgHeightAttribute("3.507cm");
+				frame1.setSvgWidthAttribute("25.199cm");
+				frame1.setSvgXAttribute("1.4cm");
+				frame1.setSvgYAttribute("0.837cm");
+				frame1.setPresentationClassAttribute(PresentationClassAttribute.Value.TITLE.toString());
+				frame1.setPresentationPlaceholderAttribute(true);
+				frame1.newDrawTextBoxElement();
+				
+				DrawFrameElement frame2 = page.newDrawFrameElement();
+				frame2.setDrawStyleNameAttribute(frame2.getStyleName());
+				frame2.setDrawLayerAttribute("layout");
+				frame2.setSvgHeightAttribute("6.61cm");
+				frame2.setSvgWidthAttribute("12.296cm");
+				frame2.setSvgXAttribute("1.4cm");
+				frame2.setSvgYAttribute("4.914cm");
+				frame2.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame2.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame2.setPresentationPlaceholderAttribute(true);
+				frame2.newDrawObjectElement();
+
+				DrawFrameElement frame3 = page.newDrawFrameElement();
+				frame3.setPresentationStyleNameAttribute(frame3.getStyleName());
+				frame3.setDrawLayerAttribute("layout");
+				frame3.setSvgHeightAttribute("6.61cm");
+				frame3.setSvgWidthAttribute("12.296cm");
+				frame3.setSvgXAttribute("14.311cm");
+				frame3.setSvgYAttribute("4.914cm");
+				frame3.setPresentationClassAttribute(PresentationClassAttribute.Value.OUTLINE.toString());
+				frame3.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame3.setPresentationUserTransformedAttribute(true);
+				frame3.setPresentationPlaceholderAttribute(true);
+				frame3.newDrawTextBoxElement();
+				
+				DrawFrameElement frame4 = page.newDrawFrameElement();
+				frame4.setDrawStyleNameAttribute(frame4.getStyleName());
+				frame4.setDrawLayerAttribute("layout");
+				frame4.setSvgHeightAttribute("6.61cm");
+				frame4.setSvgWidthAttribute("12.296cm");
+				frame4.setSvgXAttribute("1.4cm");
+				frame4.setSvgYAttribute("12.153cm");
+				frame4.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame4.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame4.setPresentationPlaceholderAttribute(true);
+				frame4.newDrawObjectElement();
+				
+				DrawFrameElement frame5 = page.newDrawFrameElement();
+				frame5.setDrawStyleNameAttribute(frame5.getStyleName());
+				frame5.setDrawLayerAttribute("layout");
+				frame5.setSvgHeightAttribute("6.61cm");
+				frame5.setSvgWidthAttribute("12.296cm");
+				frame5.setSvgXAttribute("14.311cm");
+				frame5.setSvgYAttribute("12.153cm");
+				frame5.setPresentationClassAttribute(PresentationClassAttribute.Value.CHART.toString());
+				frame5.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PAGE.toString());
+				frame5.setPresentationPlaceholderAttribute(true);
+				frame5.newDrawObjectElement();
+			}
+		};
+		
+		private String mValue;
+
+		SlideLayout(String aValue) {
+			mValue = aValue;
+		}
+
+		/**
+		 * Applies this layout on a slide page.
+		 * 
+		 * @param page
+		 *            the slide element which this layout is applied on.
+		 * @since 0.6
+		 */
+		public abstract void apply(DrawPageElement page);
+		
+		/**
+		 * Return the slide template type value.
+		 * 
+		 * @return the template type value
+		 */
+		@Override
+		public String toString() {
+			return mValue;
+		}
+
+		/**
+		 * Return the name of the template slide type.
+		 * 
+		 * @param aEnum
+		 *            a <code>SlideLayout</code>
+		 * @return the name of slide template type
+		 */
+		public static String toString(SlideLayout aEnum) {
+			return aEnum.toString();
+		}
+
+		/**
+		 * Return a template slide type.
+		 * 
+		 * @param aString
+		 *            the name of the slide template type
+		 * @return a <code>SlideLayout</code>
+		 */
+		public static SlideLayout enumValueOf(String aString) {
+			for (SlideLayout aIter : values()) {
+				if (aString.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return null;
+		}
+		
+		//return an unique name.
+		private static String makeUniqueName() {
+			return String.format("a%06x", (int) (Math.random() * 0xffffff));
+		}
+	}
+
+	public OdfElement getListContainerElement() {
+		return getListContainerImpl().getListContainerElement();
+	}
+
+	public List addList() {
+		return getListContainerImpl().addList();
+	}
+
+	public List addList(ListDecorator decorator) {
+		return getListContainerImpl().addList(decorator);
+	}
+
+	public void clearList() {
+		getListContainerImpl().clearList();
+	}
+
+	public Iterator<List> getListIterator() {
+		return getListContainerImpl().getListIterator();
+	}
+
+	public boolean removeList(List list) {
+		return getListContainerImpl().removeList(list);
+	}
+
+	private ListContainerImpl getListContainerImpl() {
+		if (listContainerImpl == null) {
+			listContainerImpl = new ListContainerImpl();
+		}
+		return listContainerImpl;
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+
+		public OdfElement getListContainerElement() {
+			DrawFrameElement frame = null;
+			DrawTextBoxElement textBox = null;
+			NodeList frameList = maSlideElement.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "frame");
+			if (frameList.getLength() > 0) {
+				int index = frameList.getLength() - 1;
+				while (index >= 0) {
+					frame = (DrawFrameElement) frameList.item(index);
+					String presentationClass = frame.getPresentationClassAttribute();
+					if (presentationClass == null || "outline".equals(presentationClass)
+							|| "text".equals(presentationClass) || "subtitle".equals(presentationClass)) {
+						break;
+					} else {
+						index--;
+					}
+					frame = null;
+				}
+			}
+			if (frame == null) {
+				throw new UnsupportedOperationException(
+						"There is no list container in this slide, please chose a proper slide layout.");
+			}
+			NodeList textBoxList = frame.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "text-box");
+			if (textBoxList.getLength() <= 0) {
+				textBox = frame.newDrawTextBoxElement();
+			} else {
+				textBox = (DrawTextBoxElement) textBoxList.item(textBoxList.getLength() - 1);
+			}
+			return textBox;
+		}
+	}
+
+	public Table addTable() {
+		return getTableContainerImpl().addTable();
+	}
+
+	public Table addTable(int numRows, int numCols) {
+		return getTableContainerImpl().addTable(numRows, numCols);
+	}
+
+	public Table getTableByName(String name) {
+		return getTableContainerImpl().getTableByName(name);
+	}
+
+	public java.util.List<Table> getTableList() {
+		return getTableContainerImpl().getTableList();
+	}
+
+	public TableBuilder getTableBuilder() {
+		return getTableContainerImpl().getTableBuilder();
+	}
+
+	public OdfElement getTableContainerElement() {
+		return getTableContainerImpl().getTableContainerElement();
+	}
+
+	protected TableContainer getTableContainerImpl() {
+		if (tableContainerImpl == null) {
+			tableContainerImpl = new TableContainerImpl();
+		}
+		return tableContainerImpl;
+	}
+
+	private class TableContainerImpl extends AbstractTableContainer {
+
+		public OdfElement getTableContainerElement() {
+			DrawFrameElement frame = null;
+			NodeList frameList = maSlideElement.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "frame");
+			if (frameList.getLength() > 0) {
+				int index = frameList.getLength() - 1;
+				while (index >= 0) {
+					frame = (DrawFrameElement) frameList.item(index);
+					String presentationClass = frame.getPresentationClassAttribute();
+					if (presentationClass == null || "table".equals(presentationClass)) {
+						break;
+					} else {
+						index--;
+					}
+					frame = null;
+				}
+			}
+			if (frame == null) {
+				frame = maSlideElement.newDrawFrameElement();
+				frame.setPresentationClassAttribute("table");
+				frame.setDrawLayerAttribute("layout");
+				frame.setStyleName("standard");
+				frame.setSvgHeightAttribute("1.945cm");
+				frame.setSvgWidthAttribute("14.098cm");
+				frame.setSvgXAttribute("6.922cm");
+				frame.setSvgYAttribute("10.386cm");
+			}
+			return frame;
+		}
+	}
+
+	// *********Text box support **********//
+	public Textbox addTextbox() {
+		return getTextboxContainerImpl().addTextbox();
+	}
+
+	public Iterator<Textbox> getTextboxIterator() {
+		return getTextboxContainerImpl().getTextboxIterator();
+	}
+
+	public boolean removeTextbox(Textbox box) {
+		return getTextboxContainerImpl().removeTextbox(box);
+	}
+
+	public OdfElement getFrameContainerElement() {
+		return getTextboxContainerImpl().getFrameContainerElement();
+	}
+
+	public Textbox addTextbox(FrameRectangle position) {
+		return getTextboxContainerImpl().addTextbox(position);
+	}
+
+	public Textbox getTextboxByName(String name) {
+		return getTextboxContainerImpl().getTextboxByName(name);
+	}
+
+	private class TextboxContainerImpl extends AbstractTextboxContainer {
+		public OdfElement getFrameContainerElement() {
+			return maSlideElement;
+		}
+	}
+
+	private TextboxContainerImpl getTextboxContainerImpl() {
+		if (mTextboxContainerImpl == null)
+			mTextboxContainerImpl = new TextboxContainerImpl();
+		return mTextboxContainerImpl;
+	}
+
+	public java.util.List<Textbox> getTextboxByUsage(PresentationDocument.PresentationClass usage) {
+		return getTextboxContainerImpl().getTextboxByUsage(usage);
+	}
+	public Chart createChart(String title, DataSet dataset, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, dataset, rect);
+	}
+
+	public Chart createChart(String title, SpreadsheetDocument document, CellRangeAddressList cellRangeAddr, boolean firstRowAsLabel,
+			boolean firstColumnAsLabel, boolean rowAsDataSeries, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, document, cellRangeAddr, firstRowAsLabel, firstColumnAsLabel,
+				rowAsDataSeries, rect);
+	}
+
+	public Chart createChart(String title, String[] labels, String[] legends, double[][] data, Rectangle rect) {
+		return getChartContainerImpl().createChart(title, labels, legends, data, rect);
+	}
+
+	public void deleteChartById(String chartId) {
+		getChartContainerImpl().deleteChartById(chartId);
+	}
+
+	public void deleteChartByTitle(String title) {
+		getChartContainerImpl().deleteChartByTitle(title);
+	}
+
+	public Chart getChartById(String chartId) {
+		return getChartContainerImpl().getChartById(chartId);
+	}
+
+	public java.util.List<Chart> getChartByTitle(String title) {
+		return getChartContainerImpl().getChartByTitle(title);
+	}
+
+	public int getChartCount() {
+		return getChartContainerImpl().getChartCount();
+	}
+	
+	private ChartContainerImpl getChartContainerImpl() {
+		if (chartContainerImpl == null) {
+			chartContainerImpl = new ChartContainerImpl(getOwnerDocument(), this);
+		}
+		return chartContainerImpl;
+	}
+	
+	private class ChartContainerImpl extends AbstractChartContainer {
+		DrawPageElement slide;
+
+		protected ChartContainerImpl(Document doc, Slide slide) {
+			super(doc);
+			this.slide = slide.getOdfElement();
+		}
+
+		protected DrawFrameElement getChartFrame() throws Exception {
+			DrawFrameElement element = OdfElement.findFirstChildNode(DrawFrameElement.class, slide);
+			while (element != null) {
+				if ("chart".equals(element.getPresentationClassAttribute())) {
+					DrawObjectElement chartEle= OdfElement.findFirstChildNode(DrawObjectElement.class, element);
+					if(chartEle == null){
+						return element;
+					}else{
+						String href = chartEle.getXlinkHrefAttribute();
+						if("".equals(href) || href ==null){
+							return element;
+						}
+					}
+				}
+				element = OdfElement.findNextChildNode(DrawFrameElement.class, element);
+			}
+			return null;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/Border.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/Border.java
new file mode 100644
index 0000000..f74918f
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/Border.java
@@ -0,0 +1,490 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+import java.util.StringTokenizer;
+
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+
+/**
+ * This class represents border style settings, including line style, color,
+ * width, inner line width, outer line width and the distance.
+ * 
+ * @since 0.3
+ */
+public class Border {
+
+	StyleTypeDefinitions.LineType lineStyle;
+	Color color;
+	double width;
+	double innerLineWidth, distance, outerLineWidth;
+	StyleTypeDefinitions.SupportedLinearMeasure linearMeasure;
+	private static final String WidthFormatInInch = "#.####";
+
+	/**
+	 * A static variable to represent a border without any lines, which means no
+	 * border at all.
+	 */
+	public static Border NONE = new Border(StyleTypeDefinitions.LineType.NONE);
+
+	/**
+	 * Constructor to create an empty border
+	 */
+	protected Border() {
+
+	}
+
+	private Border(StyleTypeDefinitions.LineType lineType) {
+		this.lineStyle = lineType;
+		width = 0;
+	}
+
+	/**
+	 * Constructor to create a single line border
+	 * 
+	 * @param aColor
+	 *            - the color of the border
+	 * @param width
+	 *            - the line width of the border
+	 * @param linearMeasure
+	 *            - the linear measurement of the border width
+	 */
+	public Border(Color aColor, double width, StyleTypeDefinitions.SupportedLinearMeasure linearMeasure) {
+		color = aColor;
+		this.width = width;
+		this.linearMeasure = linearMeasure;
+		this.lineStyle = StyleTypeDefinitions.LineType.SINGLE;
+	}
+
+	// /**
+	// * Constructor to create a single line border.
+	// *
+	// * @param width - a string to represent the width and the linear
+	// measurement, such as "12pt", "0.001in".
+	// * The supported linear measurement includes "pt" and "in".
+	// * @param aColor - the color of the border
+	// */
+	// protected Border(String width, Color aColor) {
+	// color = aColor;
+	// this.width = getLineWidth(width);
+	// this.linearMeasure = getLineMeasure(width);
+	// this.lineStyle = StyleTypeDefinitions.LineType.SINGLE;
+	// }
+
+	/**
+	 * Constructor to create a double line border
+	 * 
+	 * @param aColor
+	 *            - the color of the border
+	 * @param width
+	 *            - the line width of the border
+	 * @param innerLineWidth
+	 *            - the inner line width of the border
+	 * @param outerLineWidth
+	 *            - the outer line width of the border
+	 * @param linearMeasure
+	 *            - the linear measurement of the border width
+	 * 
+	 * @throws IllegalArgumentException
+	 *             if the width is not bigger than the sum of inner line width
+	 *             and outer line width.
+	 */
+	public Border(Color aColor, double width, double innerLineWidth, double outerLineWidth,
+			StyleTypeDefinitions.SupportedLinearMeasure linearMeasure) {
+		color = aColor;
+		this.width = width;
+		this.linearMeasure = linearMeasure;
+		this.innerLineWidth = innerLineWidth;
+		this.outerLineWidth = outerLineWidth;
+		this.distance = width - innerLineWidth - outerLineWidth;
+		this.lineStyle = StyleTypeDefinitions.LineType.DOUBLE;
+
+		if (distance <= 0)
+			throw new IllegalArgumentException(
+					"The width must bigger than the sum of inner line width and outer line width!");
+	}
+
+	// /**
+	// * COnstructor to create a double line border
+	// *
+	// * @param width - a string to represent the width and the linear
+	// measurement.
+	// * @param aColor - the color of the border
+	// * @param innerLineWidth - a string to represent the width and the linear
+	// measurement.
+	// * @param distance - a string to represent the width and the linear
+	// measurement.
+	// * @param outerLineWidth - a string to represent the width and the linear
+	// measurement.
+	// */
+	// protected Border(String width, Color aColor, String innerLineWidth,
+	// String distance, String outerLineWidth) {
+	// color = aColor;
+	// this.width = getLineWidth(width);
+	// this.linearMeasure = getLineMeasure(width);
+	// setDoubleLineWidth(innerLineWidth, distance, outerLineWidth);
+	// }
+
+	/**
+	 * Return the line style of the border.
+	 * <p>
+	 * The possible return value are "SINGLE","DOUBLE", and "NONE";
+	 * 
+	 * @return the line style of the border.
+	 */
+	public StyleTypeDefinitions.LineType getLineStyle() {
+		return lineStyle;
+	}
+
+	/**
+	 * Set the line style of the border.
+	 * <p>
+	 * The valid parameter can be "SINGLE","DOUBLE", and "NONE";
+	 * 
+	 * @param lineStyle
+	 *            - the line style of the border.
+	 */
+	public void setLineStyle(StyleTypeDefinitions.LineType lineStyle) {
+		this.lineStyle = lineStyle;
+	}
+
+	/**
+	 * Set border style by a description string. The description string includes
+	 * border width, line style and color. For example:
+	 * "0.0362in double #ff3333" is a valid description string.
+	 * 
+	 * @param borderDesc
+	 *            - the description of border style
+	 */
+	protected void setBorderByDescription(String borderDesc) {
+		StringTokenizer st = new StringTokenizer(borderDesc);
+		if (st.countTokens() != 3)
+			throw new IllegalArgumentException(
+					"The border description is invalid. Border description contains width, style and color, such as '0.0154in double #9900ff'");
+
+		String borderWidth = st.nextToken();
+		String borderStyle = st.nextToken();
+		Color borderColor = new Color(st.nextToken());
+
+		if (borderStyle.equals("solid"))
+			borderStyle = StyleTypeDefinitions.LineType.SINGLE.toString();
+
+		StyleTypeDefinitions.LineType borderStyleType = StyleTypeDefinitions.LineType.enumValueOf(borderStyle);
+
+		this.width = getLineWidth(borderWidth);
+		this.linearMeasure = getLineMeasure(borderWidth);
+		setLineStyle(borderStyleType);
+		setColor(borderColor);
+	}
+
+	/**
+	 * Return the description string of border style. The description string
+	 * includes border width, line style and color. For example,
+	 * "0.0362in double #ff3333".
+	 * 
+	 * @return the description string of border style
+	 */
+	protected String getBorderDescription() {
+		switch (lineStyle) {
+		case SINGLE:
+			return getWidth() + linearMeasure.toString() + " solid " + getColor();
+		case DOUBLE:
+			return getWidth() + linearMeasure.toString() + " double " + getColor();
+		case NONE:
+			return null;
+		}
+		return null;
+	}
+
+	/**
+	 * Return the color of this border
+	 * 
+	 * @return the color of this border
+	 */
+	public Color getColor() {
+		return color;
+	}
+
+	/**
+	 * Set the color of this border
+	 * 
+	 * @param color
+	 *            - the color
+	 */
+	public void setColor(Color color) {
+		this.color = color;
+	}
+
+	/**
+	 * Return the width of this border
+	 * 
+	 * @return the width of this border
+	 */
+	public double getWidth() {
+		return width;
+	}
+
+	/**
+	 * Set the width of this border
+	 * 
+	 * @param width
+	 *            - the width of this border
+	 */
+	public void setWidth(double width) {
+		this.width = width;
+	}
+
+	/**
+	 * Return a description string for border widths with double lines. The
+	 * description string includes inner line width, distance, and outline
+	 * width. For example, "0.0008in 0.0346in 0.0346in".
+	 * 
+	 * @return - the description for border widths with double lines
+	 */
+	protected String getDoubleLineWidthDescription() {
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return null;
+		DecimalFormat formater = new DecimalFormat(WidthFormatInInch, new DecimalFormatSymbols(Locale.US));
+		return formater.format(innerLineWidth) + linearMeasure.toString() + " " + formater.format(distance)
+				+ linearMeasure + " " + formater.format(outerLineWidth) + linearMeasure;
+	}
+
+	/**
+	 * Set the border widths with double lines by a description string. The
+	 * description string includes inner line width, distance, and outline
+	 * width. For example, "0.0008in 0.0346in 0.0346in".
+	 * 
+	 * @param widthDesc
+	 *            - the description string
+	 */
+	protected void setDoubleLineWidthByDescription(String widthDesc) {
+		StringTokenizer st = new StringTokenizer(widthDesc);
+		if (st.countTokens() != 3)
+			throw new IllegalArgumentException(
+					"The width description is invalid. Width description contains inner line width, distance and outer line width, such as '0.0154in 0154in 0154in'");
+
+		String thisInnerWidth = st.nextToken();
+		String thisDistance = st.nextToken();
+		String thisOuterWidth = st.nextToken();
+
+		setDoubleLineWidth(thisInnerWidth, thisDistance, thisOuterWidth);
+	}
+
+	/**
+	 * Return the inner line width of border with double lines
+	 * 
+	 * @return - the inner line width
+	 */
+	public double getInnerLineWidth() {
+		// DecimalFormat formater = new DecimalFormat(WidthFormatInInch);
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return getWidth();
+		else
+			return innerLineWidth;
+
+	}
+
+	/**
+	 * Set the inner line width of border with double lines If the line style is
+	 * not double, nothing will happen.
+	 * 
+	 * @param innerWidth
+	 *            - the inner line width
+	 */
+	public void setInnerLineWidth(double innerWidth) {
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return;
+		innerLineWidth = innerWidth;
+	}
+
+	/**
+	 * Return the distance between inner line and outer line of border with
+	 * double lines
+	 * 
+	 * @return - the distance between inner line and outer line.
+	 */
+	public double getDistance() {
+		// DecimalFormat formater = new DecimalFormat(WidthFormatInInch);
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return getWidth();
+		else
+			return distance;
+
+	}
+
+	/**
+	 * Set the distance between inner line and outer line of border with double
+	 * lines. If the line style is not double, nothing will happen.
+	 * 
+	 * @param distance
+	 *            - the distance between inner line and outer line.
+	 */
+	public void setDistance(double distance) {
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return;
+		else
+			this.distance = distance;
+
+	}
+
+	/**
+	 * Return the outer line width of border with double lines
+	 * 
+	 * @return - the outer line width.
+	 */
+	public double getOuterLineWidth() {
+		// DecimalFormat formater = new DecimalFormat(WidthFormatInInch);
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return getWidth();
+		else
+			return outerLineWidth;
+	}
+
+	/**
+	 * Set the outer line width of border with double lines If the line style is
+	 * not double, nothing will happen.
+	 * 
+	 * @param lineWidth
+	 *            - the outer line width
+	 */
+	public void setOuterLineWidth(double lineWidth) {
+		if (lineStyle == StyleTypeDefinitions.LineType.SINGLE)
+			return;
+		else
+			this.outerLineWidth = lineWidth;
+	}
+
+	private void setDoubleLineWidth(String innerLineWidth, String distance, String outerLineWidth) {
+		// get line measure for inner line
+		this.linearMeasure = getLineMeasure(innerLineWidth);
+		// get line width for distance
+		StyleTypeDefinitions.SupportedLinearMeasure lm = getLineMeasure(distance);
+		double lf = getLineWidth(distance);
+		this.distance = linearMeasure.convert(lf, lm);
+		// get line width for outer line
+		lm = getLineMeasure(outerLineWidth);
+		lf = getLineWidth(outerLineWidth);
+		this.outerLineWidth = linearMeasure.convert(lf, lm);
+		// get line width for inner line
+		this.innerLineWidth = getLineWidth(innerLineWidth);
+		// set line style
+		lineStyle = StyleTypeDefinitions.LineType.DOUBLE;
+	}
+
+	private StyleTypeDefinitions.SupportedLinearMeasure getLineMeasure(String width) {
+		for (SupportedLinearMeasure aIter : SupportedLinearMeasure.values()) {
+			if (width.endsWith(aIter.toString())) {
+				return aIter;
+			}
+		}
+		return null;
+	}
+
+	private double getLineWidth(String width) {
+		String floatValue = width.substring(0, width.length() - 2);
+		return Double.parseDouble(floatValue);
+	}
+
+	/**
+	 * Return a border which is same but with a different line measurement
+	 * 
+	 * @param newLineMeasure
+	 *            - the new measurement
+	 * @return the new border
+	 */
+	protected Border changeLineMeasure(StyleTypeDefinitions.SupportedLinearMeasure newLineMeasure) {
+		if (newLineMeasure == linearMeasure)
+			return this;
+		Border newBorder = new Border();
+		newBorder.width = newLineMeasure.convert(width, linearMeasure);
+		newBorder.distance = newLineMeasure.convert(distance, linearMeasure);
+		newBorder.innerLineWidth = newLineMeasure.convert(innerLineWidth, linearMeasure);
+		newBorder.outerLineWidth = newLineMeasure.convert(outerLineWidth, linearMeasure);
+		newBorder.color = this.color;
+		newBorder.lineStyle = this.lineStyle;
+		newBorder.linearMeasure = newLineMeasure;
+		return newBorder;
+	}
+
+	@Override
+	public String toString() {
+		return "Border:" + getBorderDescription() + ";" + "BorderWidth:" + getDoubleLineWidthDescription();
+	}
+
+	private boolean doubleEqual(double d1, double d2) {
+		if (this.linearMeasure == SupportedLinearMeasure.IN && Math.abs(d1 - d2) > 0.0002)
+			return false;
+		if (this.linearMeasure == SupportedLinearMeasure.PT && Math.abs(d1 - d2) > 0.02)
+			return false;
+		return true;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (o == Border.NONE && this == Border.NONE)
+			return true;
+		if (o instanceof Border) {
+			Border aBorder = (Border) o;
+			if (aBorder.getLineStyle() != this.getLineStyle())
+				return false;
+			if (!aBorder.color.toString().equals(this.color.toString()))
+				return false;
+			if (aBorder.linearMeasure != this.linearMeasure) {
+				Border bBorder = aBorder.changeLineMeasure(this.linearMeasure);
+				return this.equals(bBorder);
+			}
+			if (!doubleEqual(aBorder.width, this.width))
+				return false;
+			if (lineStyle == StyleTypeDefinitions.LineType.DOUBLE) {
+				if (!doubleEqual(aBorder.distance, this.distance))
+					return false;
+				if (!doubleEqual(aBorder.innerLineWidth, this.innerLineWidth))
+					return false;
+				if (!doubleEqual(aBorder.outerLineWidth, this.outerLineWidth))
+					return false;
+			}
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Return the linear measurement
+	 * 
+	 * @return the the linear measurement
+	 */
+	public StyleTypeDefinitions.SupportedLinearMeasure getLinearMeasure() {
+		return linearMeasure;
+	}
+
+	/**
+	 * Set linear measurement
+	 * 
+	 * @param linearMeasure
+	 *            the linear measurement
+	 */
+	public void setLinearMeasure(StyleTypeDefinitions.SupportedLinearMeasure linearMeasure) {
+		this.linearMeasure = linearMeasure;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/DefaultStyleHandler.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/DefaultStyleHandler.java
new file mode 100644
index 0000000..23e0431
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/DefaultStyleHandler.java
@@ -0,0 +1,689 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+
+package org.odftoolkit.simple.style;
+
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.table.CellStyleHandler;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * This class is the default style handler. It provides methods to get the
+ * readable style element and the writable style element. It also provides
+ * method to get all kinds of style properties elements.
+ * 
+ * @since 0.5
+ */
+public class DefaultStyleHandler {
+	/**
+	 * The style element that will be processed.
+	 */
+	protected OdfStyleBase mStyleElement;
+	/**
+	 * The writable style element that will be processed.
+	 */
+	protected OdfStyle mWritableStyleElement;
+	/**
+	 * Whether the default style is used.
+	 */
+	protected boolean isUseDefaultStyle = false;
+
+	/**
+	 * The odf element
+	 */
+	protected OdfStylableElement mOdfElement;
+	/**
+	 * The document
+	 */
+	protected Document mDocument;
+
+	/**
+	 * The readable text properties element.
+	 */
+	protected TextProperties mTextProperties;
+
+	/**
+	 * The writable text properties element.
+	 */
+	protected TextProperties mWritableTextProperties;
+
+	/**
+	 * The readable table cell properties element.
+	 */
+	protected TableCellProperties mTableCellProperties;
+
+	/**
+	 * The writable table cell properties element.
+	 */
+	protected TableCellProperties mWritableTableCellProperties;
+
+	/**
+	 * The readable paragraph properties element.
+	 */
+	protected ParagraphProperties mParagraphProperties;
+
+	/**
+	 * The writable paragraph properties element.
+	 */
+	protected ParagraphProperties mWritableParagraphProperties;
+
+	/**
+	 * The readable graphics properties element.
+	 */
+	protected GraphicProperties mGraphicProperties;
+
+	/**
+	 * The writable graphics properties element.
+	 */
+	protected GraphicProperties mWritableGraphicProperties;
+	/**
+	 * The readable table properties element.
+	 */
+	protected TableProperties mTableProperties;
+
+	/**
+	 * The writable table properties element.
+	 */
+	protected TableProperties mWritableTableProperties;
+	/**
+	 * Constructor of DefaultStyleHandler
+	 * 
+	 * @param element
+	 *            - the instance of structure component in an ODF document
+	 * 
+	 */
+	public DefaultStyleHandler(OdfStylableElement element) {
+		mOdfElement = element;
+		mDocument = ((Document) ((OdfFileDom) mOdfElement.getOwnerDocument()).getDocument());
+	}
+
+	/**
+	 * This HashMap contains the relationship between OdfStyleFamily and
+	 * OdfStylePropertiesSet.
+	 */
+	protected static HashMap<OdfStyleFamily, EnumSet<OdfStylePropertiesSet>> mFamilyProperties = new HashMap<OdfStyleFamily, EnumSet<OdfStylePropertiesSet>>();
+
+	{
+		mFamilyProperties.put(OdfStyleFamily.Text, EnumSet.of(OdfStylePropertiesSet.TextProperties));
+		mFamilyProperties.put(OdfStyleFamily.Paragraph, EnumSet.of(OdfStylePropertiesSet.TextProperties,
+				OdfStylePropertiesSet.ParagraphProperties));
+		mFamilyProperties.put(OdfStyleFamily.TableCell, EnumSet.of(OdfStylePropertiesSet.TextProperties,
+				OdfStylePropertiesSet.ParagraphProperties, OdfStylePropertiesSet.TableCellProperties));
+		mFamilyProperties.put(OdfStyleFamily.Graphic, EnumSet.of(OdfStylePropertiesSet.TextProperties,
+				OdfStylePropertiesSet.ParagraphProperties, OdfStylePropertiesSet.GraphicProperties));
+		mFamilyProperties.put(OdfStyleFamily.Presentation, EnumSet.of(OdfStylePropertiesSet.TextProperties,
+				OdfStylePropertiesSet.ParagraphProperties, OdfStylePropertiesSet.GraphicProperties));
+		mFamilyProperties.put(OdfStyleFamily.Section, EnumSet.of(OdfStylePropertiesSet.SectionProperties));
+		mFamilyProperties.put(OdfStyleFamily.Ruby, EnumSet.of(OdfStylePropertiesSet.RubyProperties));
+		mFamilyProperties.put(OdfStyleFamily.Table, EnumSet.of(OdfStylePropertiesSet.TableProperties));
+		mFamilyProperties.put(OdfStyleFamily.TableRow, EnumSet.of(OdfStylePropertiesSet.TableRowProperties));
+		mFamilyProperties.put(OdfStyleFamily.TableColumn, EnumSet.of(OdfStylePropertiesSet.TableColumnProperties));
+		mFamilyProperties.put(OdfStyleFamily.DrawingPage, EnumSet.of(OdfStylePropertiesSet.DrawingPageProperties));
+		mFamilyProperties.put(OdfStyleFamily.Chart, EnumSet.of(OdfStylePropertiesSet.TextProperties,
+				OdfStylePropertiesSet.ParagraphProperties, OdfStylePropertiesSet.GraphicProperties,
+				OdfStylePropertiesSet.ChartProperties));
+	}
+
+	/**
+	 * Return the text style properties definition for this component, only for
+	 * read function.
+	 * <p>
+	 * Null will be returned if there is no style definition.
+	 * <p>
+	 * Null will be returned if there is no explicit text style properties
+	 * definition for this component.
+	 * <p>
+	 * Note if you try to write style properties to the returned object, errors
+	 * will be met with.
+	 * 
+	 * @return the text style properties definition for this component, only for
+	 *         read function
+	 */
+	public TextProperties getTextPropertiesForRead() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.TextProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"Text properties are not supported by style family: " + mOdfElement.getStyleFamily() + "!", "");
+			return null;
+		}
+
+		if (mWritableTextProperties != null)
+			return mWritableTextProperties;
+		else if (mTextProperties != null)
+			return mTextProperties;
+
+		OdfStyleBase style = getStyleElementForRead();
+		if (style == null) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE, "No style definition is found!", "");
+			return null;
+		}
+		mTextProperties = TextProperties.getTextProperties(style);
+		if (mTextProperties != null)
+			return mTextProperties;
+		else {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"No explicit text properties definition is found!", "");
+			return null;
+		}
+	}
+
+	/**
+	 * Return the text style properties definition for this component, for read
+	 * and write function.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * definition.
+	 * <p>
+	 * An empty text style properties definition will be created if there is no
+	 * explicit text style properties definition.
+	 * 
+	 * @return the text style properties definition for this component, for read
+	 *         and write function
+	 */
+	public TextProperties getTextPropertiesForWrite() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.TextProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"Text properties are not supported by style family: " + mOdfElement.getStyleFamily() + "!", "");
+			return null;
+		}
+
+		if (mWritableTextProperties != null)
+			return mWritableTextProperties;
+		OdfStyle style = getStyleElementForWrite();
+		mWritableTextProperties = TextProperties.getOrCreateTextProperties(style);
+		return mWritableTextProperties;
+	}
+
+	/**
+	 * Return the cell style properties definition for this component, only for
+	 * read function.
+	 * <p>
+	 * Null will be returned if there is no style definition.
+	 * <p>
+	 * Null will be returned if there is no explicit cell style properties
+	 * definition for this component.
+	 * <p>
+	 * Note if you try to write style properties to the returned object, errors
+	 * will be met with.
+	 * 
+	 * @return the cell style properties definition for this component, only for
+	 *         read function
+	 */
+	public TableCellProperties getTableCellPropertiesForRead() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.TableCellProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName())
+					.log(
+							Level.FINE,
+							"TableCell properties are not supported by style family: " + mOdfElement.getStyleFamily()
+									+ "!", "");
+			return null;
+		}
+
+		if (mWritableTableCellProperties != null)
+			return mWritableTableCellProperties;
+		else if (mTableCellProperties != null)
+			return mTableCellProperties;
+
+		OdfStyleBase style = getStyleElementForRead();
+		if (style == null) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE, "No style definition is found!", "");
+			return null;
+		}
+		mTableCellProperties = TableCellProperties.getTableCellProperties(style);
+		if (mTableCellProperties != null)
+			return mTableCellProperties;
+		else {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"No explicit table cell properties definition is found!", "");
+			return null;
+		}
+	}
+
+	/**
+	 * Return the cell style properties definition for this component, for read
+	 * and write function.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * definition.
+	 * <p>
+	 * An empty cell style properties definition will be created if there is no
+	 * explicit cell style properties definition.
+	 * 
+	 * @return the cell style properties definition for this component, for read
+	 *         and write function
+	 */
+	public TableCellProperties getTableCellPropertiesForWrite() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.TableCellProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName())
+					.log(
+							Level.FINE,
+							"TableCell properties are not supported by style family: " + mOdfElement.getStyleFamily()
+									+ "!", "");
+			return null;
+		}
+
+		if (mWritableTableCellProperties != null)
+			return mWritableTableCellProperties;
+		OdfStyle style = getStyleElementForWrite();
+		mWritableTableCellProperties = TableCellProperties.getOrCreateTableCellProperties(style);
+		return mWritableTableCellProperties;
+	}
+
+	/**
+	 * Return the paragraph style properties definition for this component, only
+	 * for read function.
+	 * <p>
+	 * Null will be returned if there is no style definition.
+	 * <p>
+	 * Null will be returned if there is no explicit paragraph style properties
+	 * definition for this component.
+	 * <p>
+	 * Note if you try to write style properties to the returned object, errors
+	 * will be met with.
+	 * 
+	 * @return the paragraph style properties definition for this component,
+	 *         only for read function
+	 */
+	public ParagraphProperties getParagraphPropertiesForRead() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.ParagraphProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName())
+					.log(
+							Level.FINE,
+							"Paragraph properties are not supported by style family: " + mOdfElement.getStyleFamily()
+									+ "!", "");
+			return null;
+		}
+
+		if (mWritableParagraphProperties != null)
+			return mWritableParagraphProperties;
+		else if (mParagraphProperties != null)
+			return mParagraphProperties;
+
+		OdfStyleBase style = getStyleElementForRead();
+		if (style == null) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE, "No style definition is found!", "");
+			return null;
+		}
+		mParagraphProperties = ParagraphProperties.getParagraphProperties(style);
+		if (mParagraphProperties != null)
+			return mParagraphProperties;
+		else {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"No explicit paragraph properties definition is found!", "");
+			return null;
+		}
+	}
+
+	/**
+	 * Return the paragraph style properties definition for this component, for
+	 * read and write function.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * definition.
+	 * <p>
+	 * An empty paragraph style properties definition will be created if there
+	 * is no explicit paragraph style properties definition.
+	 * 
+	 * @return the paragraph style properties definition for this component, for
+	 *         read and write function
+	 */
+	public ParagraphProperties getParagraphPropertiesForWrite() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.ParagraphProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName())
+					.log(
+							Level.FINE,
+							"Paragraph properties are not supported by style family: " + mOdfElement.getStyleFamily()
+									+ "!", "");
+			return null;
+		}
+
+		if (mWritableParagraphProperties != null)
+			return mWritableParagraphProperties;
+		OdfStyle style = getStyleElementForWrite();
+		mWritableParagraphProperties = ParagraphProperties.getOrCreateParagraphProperties(style);
+		return mWritableParagraphProperties;
+	}
+
+	/**
+	 * Return the graphic style properties definition for this component, only
+	 * for read function.
+	 * <p>
+	 * Null will be returned if there is no style definition.
+	 * <p>
+	 * Null will be returned if there is no explicit graphic style properties
+	 * definition for this component.
+	 * <p>
+	 * Note if you try to write style properties to the returned object, errors
+	 * will be met with.
+	 * 
+	 * @return the graphic style properties definition for this component, only
+	 *         for read function
+	 */
+	public GraphicProperties getGraphicPropertiesForRead() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.GraphicProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"Graphics properties are not supported by style family: " + mOdfElement.getStyleFamily() + "!", "");
+			return null;
+		}
+
+		if (mWritableGraphicProperties != null)
+			return mWritableGraphicProperties;
+		else if (mGraphicProperties != null)
+			return mGraphicProperties;
+
+		OdfStyleBase style = getStyleElementForRead();
+		if (style == null) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE, "No style definition is found!", "");
+			return null;
+		}
+		mGraphicProperties = GraphicProperties.getGraphicProperties(style);
+		if (mGraphicProperties != null)
+			return mGraphicProperties;
+		else {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"No explicit graphic properties definition is found!", "");
+			return null;
+		}
+	}
+
+	/**
+	 * Return the text style properties definition for this component, for read
+	 * and write function.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * definition.
+	 * <p>
+	 * An empty text style properties definition will be created if there is no
+	 * explicit text style properties definition.
+	 * 
+	 * @return the text style properties definition for this component, for read
+	 *         and write function
+	 */
+	public GraphicProperties getGraphicPropertiesForWrite() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(OdfStylePropertiesSet.GraphicProperties)) {
+			Logger.getLogger(CellStyleHandler.class.getName()).log(Level.FINE,
+					"Graphics properties are not supported by style family: " + mOdfElement.getStyleFamily() + "!", "");
+			return null;
+		}
+
+		if (mWritableGraphicProperties != null)
+			return mWritableGraphicProperties;
+		OdfStyle style = getStyleElementForWrite();
+		mWritableGraphicProperties = GraphicProperties.getOrCreateGraphicProperties(style);
+		return mWritableGraphicProperties;
+	}
+
+	/**
+	 * Return the table style properties definition for this component, only for
+	 * read function.
+	 * <p>
+	 * Null will be returned if there is no style definition.
+	 * Note if you try to write style properties to the returned object, errors
+	 * will be met with.
+	 * 
+	 * @return the table style properties definition for this component, only
+	 *         for read function
+	 */
+	public TableProperties getTablePropertiesForRead() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(
+				OdfStylePropertiesSet.TableProperties)) {
+			Logger.getLogger(DefaultStyleHandler.class.getName()).log(
+					Level.FINE,
+					"Table properties are not supported by style family: "
+							+ mOdfElement.getStyleFamily() + "!", "");
+			return null;
+		}
+
+		if (mWritableTableProperties != null)
+			return mWritableTableProperties;
+		else if (mTableProperties != null)
+			return mTableProperties;
+
+		OdfStyleBase style = getStyleElementForRead();
+		if (style == null) {
+			Logger.getLogger(DefaultStyleHandler.class.getName()).log(
+					Level.FINE, "No style definition is found!", "");
+			return null;
+		}
+		mTableProperties = TableProperties.getTableProperties(style);
+		if (mTableProperties != null)
+			return mTableProperties;
+		else {
+			Logger.getLogger(DefaultStyleHandler.class.getName()).log(
+					Level.FINE,
+					"No explicit table properties definition is found!", "");
+			return null;
+		}
+	}
+
+	/**
+	 * Return the table style properties definition for this component, for read
+	 * and write function.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * An empty table style properties definition will be created if there is no
+	 * explicit table style properties definition.
+	 * 
+	 * @return the table style properties definition for this component, for
+	 *         read and write function
+	 */
+	public TableProperties getTablePropertiesForWrite() {
+		if (!mFamilyProperties.get(mOdfElement.getStyleFamily()).contains(
+				OdfStylePropertiesSet.TableProperties)) {
+			Logger.getLogger(DefaultStyleHandler.class.getName()).log(
+					Level.FINE,
+					"Table properties are not supported by style family: "
+							+ mOdfElement.getStyleFamily() + "!", "");
+			return null;
+		}
+
+		if (mWritableTableProperties != null)
+			return mWritableTableProperties;
+		OdfStyle style = getStyleElementForWrite();
+		mWritableTableProperties = TableProperties
+				.getOrCreateTableProperties(style);
+		return mWritableTableProperties;
+	}
+
+	/**
+	 * Return the used style name of this component.
+	 * <p>
+	 * This method can be override by sub classes.
+	 * <p>
+	 * Please note the return of this method might not be same with the
+	 * getStyleName() of component. If the style name is shared by multiple
+	 * elements, getStyleElementForWrite() will return a copied style element,
+	 * which is not same with the return of this method.
+	 * 
+	 * @return - the used style name of this component
+	 */
+	protected String getUsedStyleName() {
+		return mOdfElement.getStyleName();
+	}
+
+	/**
+	 * Return a readable style element by style name.
+	 * <p>
+	 * If the style name is null, the default style will be returned.
+	 * 
+	 * @param styleName
+	 *            - the style name
+	 * @return a readable style element
+	 */
+	protected OdfStyleBase getReadableStyleElementByName(String styleName) {
+		OdfDefaultStyle defaultStyleElement = null;
+		if (styleName == null || (styleName.equals(""))) {
+			// get from default style element
+			defaultStyleElement = mDocument.getDocumentStyles().getDefaultStyle(mOdfElement.getStyleFamily());
+			isUseDefaultStyle = true;
+			return defaultStyleElement;
+		}
+
+		OdfStyle styleElement = mOdfElement.getAutomaticStyles().getStyle(styleName, mOdfElement.getStyleFamily());
+
+		if (styleElement == null) {
+			styleElement = mDocument.getDocumentStyles().getStyle(styleName, mOdfElement.getStyleFamily());
+		}
+
+		if (styleElement == null) {
+			styleElement = mOdfElement.getDocumentStyle();
+		}
+
+		if (styleElement == null) {
+			return null;
+		}
+
+		return styleElement;
+	}
+
+	/**
+	 * Return a writable style element by style name.
+	 * <p>
+	 * If the style is shared, a copied style element would be returned.
+	 * <p>
+	 * If the style name is null, the default style will be copied.
+	 * 
+	 * @param styleName
+	 *            - the style name
+	 * @return a writable style element
+	 */
+	protected OdfStyle getWritableStyleElementByName(String styleName, boolean isShared) {
+		boolean createNew = isShared;
+		OdfStyle styleElement = null;
+		OdfDefaultStyle defaultStyleElement = null;
+		if (styleName == null || (styleName.equals(""))) {
+			createNew = true;
+			// get from default style element
+			defaultStyleElement = mDocument.getDocumentStyles().getDefaultStyle(mOdfElement.getStyleFamily());
+		} else {
+			OdfOfficeAutomaticStyles styles = mOdfElement.getAutomaticStyles();
+			styleElement = styles.getStyle(styleName, mOdfElement.getStyleFamily());
+
+			// If not default cell style definition,
+			// Try to find if the style is defined in document styles
+			if (styleElement == null && defaultStyleElement == null) {
+				styleElement = mDocument.getDocumentStyles().getStyle(styleName, mOdfElement.getStyleFamily());
+			}
+
+			if (styleElement == null && defaultStyleElement == null) {
+				styleElement = mOdfElement.getDocumentStyle();
+			}
+			if (styleElement == null || styleElement.getStyleUserCount() > 1) {
+				createNew = true;
+			}
+		}
+		// if style name is null or this style are used by many users,
+		// should create a new one.
+		if (createNew) {
+			OdfStyle newStyle = mOdfElement.getAutomaticStyles().newStyle(mOdfElement.getStyleFamily());
+			if (styleElement != null) {
+				newStyle.setProperties(styleElement.getStylePropertiesDeep());
+				// copy attributes
+				NamedNodeMap attributes = styleElement.getAttributes();
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node attr = attributes.item(i);
+					if (!attr.getNodeName().equals("style:name")) {
+						newStyle.setAttributeNS(attr.getNamespaceURI(), attr.getNodeName(), attr.getNodeValue());
+					}
+				}// end of copying attributes
+			} else if (defaultStyleElement != null) {
+				newStyle.setProperties(defaultStyleElement.getStylePropertiesDeep());
+				// copy attributes
+				NamedNodeMap attributes = defaultStyleElement.getAttributes();
+				for (int i = 0; i < attributes.getLength(); i++) {
+					Node attr = attributes.item(i);
+					if (!attr.getNodeName().equals("style:name")) {
+						newStyle.setAttributeNS(attr.getNamespaceURI(), attr.getNodeName(), attr.getNodeValue());
+					}
+				}// end of copying attributes
+				isUseDefaultStyle = true;
+			}
+			// mCellElement.getAutomaticStyles().appendChild(newStyle);
+			String newname = newStyle.getStyleNameAttribute();
+			mOdfElement.setStyleName(newname);
+			return newStyle;
+		}
+		return styleElement;
+	}
+
+	/**
+	 * Return the style element for this component, only for read function. This
+	 * method will invode <code>getusedStyleName</code> to get the style name,
+	 * and then find the readable style element by name.
+	 * <p>
+	 * Null will be returned if there is no style definition.
+	 * <p>
+	 * Note if you try to write style properties to the returned object, errors
+	 * will be met with.
+	 * 
+	 * @return the style element
+	 * @see #getUsedStyleName()
+	 */
+	public OdfStyleBase getStyleElementForRead() {
+		// Return current used style
+		if (getCurrentUsedStyle() != null)
+			return getCurrentUsedStyle();
+
+		String styleName = getUsedStyleName();
+		mStyleElement = getReadableStyleElementByName(styleName);
+		return mStyleElement;
+	}
+
+	/**
+	 * Return the style element for this component, for read and write
+	 * functions. This method will invode <code>getusedStyleName</code> to get
+	 * the style name, and then find the writable style element by name.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * definition.
+	 * 
+	 * @return the style element
+	 * @see #getUsedStyleName()
+	 */
+	public OdfStyle getStyleElementForWrite() {
+		if (mWritableStyleElement != null)
+			return mWritableStyleElement;
+
+		String styleName = getUsedStyleName();
+		mWritableStyleElement = getWritableStyleElementByName(styleName, false);
+		return mWritableStyleElement;
+	}
+
+	private OdfStyleBase getCurrentUsedStyle() {
+		if (mWritableStyleElement != null)
+			return mWritableStyleElement;
+		else
+			return mStyleElement;
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/Font.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/Font.java
new file mode 100644
index 0000000..4c6bf89
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/Font.java
@@ -0,0 +1,366 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.Locale;
+
+import org.odftoolkit.odfdom.type.Color;
+
+/**
+ * This class represents the font style settings, including font family name,
+ * font style, size, front color.
+ * 
+ * @since 0.3
+ */
+public class Font {
+
+	String familyName; // svg:font-family
+	String fontName; // style:name @ <style:font-face>
+	StyleTypeDefinitions.FontStyle simpleFontStyle; // fo:font-style,
+	StyleTypeDefinitions.TextLinePosition textLinePosition; //style:text-line-through-style and style:text-underline-style
+	// fo:font-weight
+	double size; // fo:font-size
+	// Locale language;
+	Color color;
+
+	/**
+	 * Create a font with specific family name, font style, and size.
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the size
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = StyleTypeDefinitions.TextLinePosition.REGULAR;
+		this.size = fontSize;
+	}
+
+	/**
+	 * Create a font with specific family name, font style, size and line position.
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the size
+	 * @param textLinePosition
+	 * 			  - the line position
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize, StyleTypeDefinitions.TextLinePosition textLinePosition) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = textLinePosition;
+		this.size = fontSize;
+	}
+
+	/**
+	 * Create a font with specific family name, style, size, and front color.
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the size
+	 * @param color
+	 *            - the front color
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize, Color color) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = StyleTypeDefinitions.TextLinePosition.REGULAR;
+		this.size = fontSize;
+		this.color = color;
+	}
+
+	/**
+	 * Create a font with specific family name, style, size, front color and line position
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the size
+	 * @param color
+	 *            - the front color
+	 * @param textLinePosition
+	 * 			  - the line position
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize, Color color, StyleTypeDefinitions.TextLinePosition textLinePosition) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = textLinePosition;
+		this.size = fontSize;
+		this.color = color;
+	}
+
+	/**
+	 * Create a font with specific family name, style, size for a specific
+	 * character. For example, a font style setting for English character.
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the font size
+	 * @param language
+	 *            - the character information
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize, Locale language) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = StyleTypeDefinitions.TextLinePosition.REGULAR;
+		this.size = fontSize;
+	}
+
+	/**
+	 * Create a font with specific family name, style, size, and color for a
+	 * specific character. For example, a font style setting for English
+	 * character.
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the size
+	 * @param color
+	 *            - the front color
+	 * @param language
+	 *            - the character information
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize, Color color, Locale language) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = StyleTypeDefinitions.TextLinePosition.REGULAR;
+		this.size = fontSize;
+		this.color = color;
+	}
+	
+	/**
+	 * Create a font with specific family name, style, size, color, and line position for a
+	 * specific character. For example, a font style setting for English
+	 * character.
+	 * 
+	 * @param fontFamilyName
+	 *            - the family name
+	 * @param simpleFontStyle
+	 *            - the font style
+	 * @param fontSize
+	 *            - the size
+	 * @param color
+	 *            - the front color
+	 * @param textLinePosition
+	 * 			  - the line position
+	 * @param language
+	 *            - the character information
+	 */
+	public Font(String fontFamilyName, StyleTypeDefinitions.FontStyle simpleFontStyle, double fontSize, Color color, StyleTypeDefinitions.TextLinePosition textLinePosition,
+			Locale language) {
+		this.familyName = fontFamilyName;
+		this.simpleFontStyle = simpleFontStyle;
+		this.textLinePosition = textLinePosition;
+		this.size = fontSize;
+		this.color = color;
+	}
+
+	/**
+	 * Return the font family
+	 * 
+	 * @return the font family
+	 */
+	public String getFamilyName() {
+		return familyName;
+	}
+
+	/**
+	 * Set the font family.
+	 * <p>
+	 * Font family name is what you get from the font list in ODF editors.
+	 * 
+	 * @param familyName
+	 *            - the font family name
+	 */
+	public void setFamilyName(String familyName) {
+		this.familyName = familyName;
+	}
+
+	/**
+	 * Return the font name
+	 * <p>
+	 * Note the font name might be different from font family name. A font
+	 * family may have different font name definitions.
+	 * 
+	 * @return the font name
+	 */
+	protected String getFontName() {
+		return fontName;
+	}
+
+	/**
+	 * Set the font name
+	 * <p>
+	 * Note the font name might be different from font family name. A font
+	 * family may have different font name definitions.
+	 * 
+	 * @param fontName
+	 *            - the font name
+	 */
+	protected void setFontName(String fontName) {
+		this.fontName = fontName;
+	}
+
+	/**
+	 * Get the font style
+	 * 
+	 * @return the font style
+	 */
+	public StyleTypeDefinitions.FontStyle getFontStyle() {
+		return simpleFontStyle;
+	}
+
+	/**
+	 * Set the font style
+	 * 
+	 * @param simpleFontStyle
+	 *            - the font style
+	 */
+	public void setFontStyle(StyleTypeDefinitions.FontStyle simpleFontStyle) {
+		this.simpleFontStyle = simpleFontStyle;
+	}
+
+	/**
+	 * Get the font text line position
+	 * 
+	 * @return the font text line position
+	 */
+	public StyleTypeDefinitions.TextLinePosition getTextLinePosition() {
+		return textLinePosition;
+	}
+
+	/**
+	 * Set the font text line position
+	 * 
+	 * @param textLinePosition
+	 *            - the font text line position
+	 */
+	public void setTextLinePosition(StyleTypeDefinitions.TextLinePosition textLinePosition) {
+		this.textLinePosition = textLinePosition;
+	}
+	
+	/**
+	 * Return the font size in measurement point(PT).
+	 * 
+	 * @return - the font size in measurement point(PT)
+	 */
+	public double getSize() {
+		return size;
+	}
+
+	/**
+	 * Set the font size. The font size is in measurement point(PT).
+	 * 
+	 * @param size
+	 *            - the font size
+	 */
+	public void setSize(double size) {
+		this.size = size;
+	}
+
+	// /**
+	// * Return the character information, which the font setting will affect.
+	// *
+	// * @return the character information
+	// * @deprecated
+	// */
+	// public Locale getLocale() {
+	// return language;
+	// }
+	//
+	// /**
+	// * Set the character information, which the font setting will affect.
+	// *
+	// * @param language
+	// * - the character information
+	// * @deprecated
+	// */
+	// public void setLocale(Locale language) {
+	// this.language = language;
+	// }
+
+	/**
+	 * Return the font color
+	 * 
+	 * @return the font color
+	 */
+	public Color getColor() {
+		return color;
+	}
+
+	/**
+	 * Set the font color
+	 * 
+	 * @param color
+	 *            - the font color
+	 */
+	public void setColor(Color color) {
+		this.color = color;
+	}
+
+	@Override
+	public String toString() {
+		return "FamilyName:" + getFamilyName() + "; Style:" + getFontStyle() + "; Size:" + getSize() + "; Color:"
+				+ getColor() + "; TextLinePosition:" + getTextLinePosition();
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (o instanceof Font) {
+			Font f = (Font) o;
+			if (!this.getFamilyName().equals(f.getFamilyName()))
+				return false;
+			if (!(Math.abs(this.getSize() - f.getSize()) < 0.005))
+				return false;
+			if (!(this.getFontStyle() == f.getFontStyle()))
+				return false;
+			// if ((this.getLocale() != null && f.getLocale() == null)
+			// || (this.getLocale() == null && f.getLocale() != null))
+			// return false;
+			// if ((this.getLocale() != null && f.getLocale() != null)
+			// && (!this.getLocale().equals(f.getLocale())))
+			// return false;
+			if ((this.getColor() != null && f.getColor() == null) || (this.getColor() == null && f.getColor() != null))
+				return false;
+			if ((this.getColor() != null && f.getColor() != null)
+					&& (!this.getColor().toString().equals(f.getColor().toString())))
+				return false;
+			return true;
+		}
+		return false;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/GraphicProperties.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/GraphicProperties.java
new file mode 100644
index 0000000..75f8f2b
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/GraphicProperties.java
@@ -0,0 +1,520 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalBlTrAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalBlTrWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalTlBrAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalTlBrWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleRunThroughAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.OdfDrawFill;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.OdfDrawStroke;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;
+
+/**
+ * This class represents the graphic style settings. It provides methods to
+ * access borders and background styles. More functions will be added later.
+ * <p>
+ * This class is a corresponded high level class for element
+ * "style:graphic-properties". It provides methods to access the attributes and
+ * children of "style:graphic-properties".
+ * 
+ * @since 0.5
+ */
+public class GraphicProperties {
+
+	private StyleGraphicPropertiesElement mElement;
+	BorderPropertiesImpl mBorderPropertiesHandler;
+
+	/**
+	 * Create a paragraph style setting object, which has the association with
+	 * an element "style:paragraph-properties".
+	 * 
+	 * @param properties
+	 *            - the element "style:paragraph-properties"
+	 */
+	protected GraphicProperties(StyleGraphicPropertiesElement properties) {
+		mElement = properties;
+		mBorderPropertiesHandler = new BorderPropertiesImpl(mElement);
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>GraphicProperties</p> to represent the "style:graphic-properties" in a style element.
+	 * <p>If there is no "style:graphic-properties" defined in the style element, a new "style:graphic-properties" element will be created.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>GraphicProperties</p>
+	 */
+	public static GraphicProperties getOrCreateGraphicProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style.getOrCreatePropertiesElement(OdfStylePropertiesSet.GraphicProperties);
+		return new GraphicProperties((StyleGraphicPropertiesElement) properties);
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>GraphicProperties</p> to represent the "style:graphic-properties" in a style element.
+	 * <p>If there is no "style:graphic-properties" defined in the style element, null will be returned.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>GraphicProperties</p>;Null if there is no
+	 *         "style:graphic-properties" defined
+	 */
+	public static GraphicProperties getGraphicProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style.getPropertiesElement(OdfStylePropertiesSet.GraphicProperties);
+		if (properties != null)
+			return new GraphicProperties((StyleGraphicPropertiesElement) properties);
+		else
+			return null;
+	}
+
+	/**
+	 * Set the border style.
+	 * <p>
+	 * The first parameter <code>bordersType</code> describes which borders you
+	 * want to apply the style to, e.g. up border, bottom border, left border,
+	 * right border, diagonal lines or four borders.
+	 * <p>
+	 * The border style information will be removed if the parameter
+	 * <code>bordersType</code> is NONE.
+	 * 
+	 * @param bordersType
+	 *            - the type of the borders
+	 * @param border
+	 *            - the border style description
+	 */
+	public void setBorders(StyleTypeDefinitions.CellBordersType bordersType, Border border) {
+		switch (bordersType) {
+		case BOTTOM:
+			setBottomBorder(border);
+			break;
+		case LEFT:
+			setLeftBorder(border);
+			break;
+		case RIGHT:
+			setRightBorder(border);
+			break;
+		case TOP:
+			setTopBorder(border);
+			break;
+		case DIAGONALBLTR:
+			throw new RuntimeException("DIAGONALBL is not supported");
+		case DIAGONALTLBR:
+			throw new RuntimeException("DIAGONALTLBR is not supported");
+		case ALL_FOUR:
+			setBorder(border);
+			break;
+		case LEFT_RIGHT:
+			setLeftBorder(border);
+			// border.switchInnerLineOuterLineWidth();
+			setRightBorder(border);
+			break;
+		case TOP_BOTTOM:
+			setTopBorder(border);
+			// border.switchInnerLineOuterLineWidth();
+			setBottomBorder(border);
+			break;
+		case DIAGONAL_LINES:
+			throw new RuntimeException("DIAGONAL_LINES is not supported");
+		case NONE:
+			mElement.removeAttribute(StyleBorderLineWidthAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthBottomAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderBottomAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthTopAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderTopAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthLeftAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderLeftAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthRightAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderRightAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalBlTrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalBlTrAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalTlBrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalTlBrAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	/**
+	 * Return the border setting for all four borders.
+	 * <p>
+	 * Null will be returned if there is no border setting for all four borders.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getBorder() {
+		return mBorderPropertiesHandler.getBorder();
+	}
+
+	/**
+	 * Return the border setting for the top border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the top border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getTopBorder() {
+		return mBorderPropertiesHandler.getTopBorder();
+	}
+
+	/**
+	 * Return the border setting for the left border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the left border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getLeftBorder() {
+		return mBorderPropertiesHandler.getLeftBorder();
+	}
+
+	/**
+	 * Return the border setting for the right border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the right border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getRightBorder() {
+		return mBorderPropertiesHandler.getRightBorder();
+	}
+
+	// fo:border-bottom
+	// style:border-line-width-bottom
+	/**
+	 * Return the border setting for the bottom border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the bottom
+	 * border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getBottomBorder() {
+		return mBorderPropertiesHandler.getBottomBorder();
+	}
+
+	// fo:border-bottom
+	// style:border-line-width-bottom
+	/**
+	 * Set the border definition for the bottom border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the bottom border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the bottom border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setBottomBorder(Border border) {
+		mBorderPropertiesHandler.setBottomBorder(border);
+	}
+
+	// fo:border-top
+	// style:border-line-width-top
+	/**
+	 * Set the border definition for the top border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the top border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the top border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setTopBorder(Border border) {
+		mBorderPropertiesHandler.setTopBorder(border);
+	}
+
+	// fo:border-left
+	// style:border-line-width-left
+	/**
+	 * Set the border definition for the left border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the left border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the left border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setLeftBorder(Border border) {
+		mBorderPropertiesHandler.setLeftBorder(border);
+	}
+
+	// fo:border-right
+	// style:border-line-width-right
+	/**
+	 * Set the border definition for the right border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the right border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the right border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setRightBorder(Border border) {
+		mBorderPropertiesHandler.setRightBorder(border);
+	}
+
+	// fo:border
+	// style:border-line-width
+	/**
+	 * Set the border definition for all four borders.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * all four borders will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for all four borders will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setBorder(Border border) {
+		mBorderPropertiesHandler.setBorder(border);
+	}
+
+	/**
+	 * Set the style of stroke.
+	 * <p>
+	 * There are three types of stroke: none, solid and dash.
+	 * <p>
+	 * If the stroke is NONE, there is no stroke around the frame.
+	 * <p>
+	 * If the stroke is SOLID, there is solid line around the frame. color and
+	 * width need to be specified.
+	 * <p>
+	 * If the stroke is DASH, there is dash line around the frame. color, width
+	 * and the style name of dash line need to be specified.
+	 * 
+	 * @param stroke
+	 *            the stroke type
+	 * @param color
+	 *            the color of the stroke
+	 * @param widthDesc
+	 *            the width description of the stroke, e.g. "0.01in"
+	 * @param dashStyleName
+	 *            the dash style name
+	 * @see org.odftoolkit.simple.style.StyleTypeDefinitions.OdfDrawStroke
+	 */
+	public void setStroke(OdfDrawStroke stroke, Color color, String widthDesc, String dashStyleName) {
+		switch (stroke) {
+		case NONE:
+			mElement.setDrawStrokeAttribute("none");
+			break;
+		case SOLID:
+			mElement.setDrawStrokeAttribute("solid");
+			if (color != null)
+				mElement.setSvgStrokeColorAttribute(color.toString());
+			if (widthDesc != null && widthDesc.length() > 2 && verifyWidthDesc(widthDesc)) {
+				mElement.setSvgStrokeWidthAttribute(widthDesc);
+			}
+			break;
+		case DASH:
+			mElement.setDrawStrokeAttribute("dash");
+			if (color != null)
+				mElement.setSvgStrokeColorAttribute(color.toString());
+			if (widthDesc != null && widthDesc.length() > 2 && verifyWidthDesc(widthDesc)) {
+				mElement.setSvgStrokeWidthAttribute(widthDesc);
+			}
+			mElement.setDrawStrokeDashNamesAttribute(dashStyleName);
+		}
+	}
+
+	/**
+	 * Set the fill style for a graphic object.
+	 * 
+	 * <p>
+	 * This method supports 2 types of fill: none and solid.
+	 * <p>
+	 * If the fill type is NONE, the object is no filled at all.
+	 * <p>
+	 * If the fill type is SOLID, the drawing object is filled with the color
+	 * specified by the second parameter.
+	 * 
+	 * @param fillType
+	 *            the fill style type
+	 * @param color
+	 *            the specified color
+	 */
+	public void setFill(OdfDrawFill fillType, Color color) {
+		switch (fillType) {
+		case NONE:
+			mElement.setDrawFillAttribute("none");
+			break;
+		case SOLID:
+			mElement.setDrawFillAttribute("solid");
+			mElement.setDrawFillColorAttribute(color.toString());
+			break;
+		case BITMAP:
+		case GRADIENT:
+		case HATCH:
+			throw new RuntimeException(fillType.toString() + " not supported!");
+		}
+	}
+
+	/**
+	 * Set whether the content of a graphic object is displayed in the
+	 * background or foreground. If it's displayed in the background, the
+	 * content wouldn't be selected or moved.
+	 * 
+	 * @param isBackgroundObject
+	 *            If <code>true</code>, the graphic object is displayed in the
+	 *            background.
+	 * @since 0.5.5
+	 */
+	public void setStyleRunThrough(boolean isBackgroundObject) {
+		if (isBackgroundObject) {
+			mElement.setStyleRunThroughAttribute(StyleRunThroughAttribute.Value.BACKGROUND.toString());
+		} else {
+			mElement.setStyleRunThroughAttribute(StyleRunThroughAttribute.Value.FOREGROUND.toString());
+		}
+	}
+
+	/**
+	 * Set the horizontal position
+	 * 
+	 * @param horizontalPos
+	 *            the horizontal position
+	 * @since 0.5.5
+	 */
+	public void setHorizontalPosition(FrameHorizontalPosition horizontalPos) {
+		mElement.setStyleHorizontalPosAttribute(horizontalPos.toString());
+	}
+
+	/**
+	 * Set the horizontal relative
+	 * 
+	 * @param relative
+	 *            the horizontal relative
+	 * @since 0.5.5
+	 */
+	public void setHorizontalRelative(HorizontalRelative relative) {
+		mElement.setStyleHorizontalRelAttribute(relative.toString());
+	}
+
+	/**
+	 * Set the vertical relative
+	 * 
+	 * @param relative
+	 *            the vertical relative
+	 * @since 0.5.5
+	 */
+	public void setVerticalRelative(VerticalRelative relative) {
+		mElement.setStyleVerticalRelAttribute(relative.toString());
+	}
+
+	/**
+	 * Set the vertical position
+	 * 
+	 * @param verticalPos
+	 *            the vertical position
+	 * @since 0.5.5
+	 */
+	public void setVerticalPosition(FrameVerticalPosition verticalPos) {
+		mElement.setStyleVerticalPosAttribute(verticalPos.toString());
+	}
+
+	/**
+	 * Return the horizontal position
+	 * 
+	 * @return the horizontal position
+	 * @since 0.5.5
+	 */
+	public FrameHorizontalPosition getHorizontalPosition() {
+		return FrameHorizontalPosition.enumValueOf(mElement.getStyleHorizontalPosAttribute());
+	}
+
+	/**
+	 * Return the vertical position
+	 * 
+	 * @return the vertical position
+	 * @since 0.5.5
+	 */
+	public FrameVerticalPosition getVerticalPosition() {
+		return FrameVerticalPosition.enumValueOf(mElement.getStyleVerticalPosAttribute());
+	}
+
+	/**
+	 * Return the vertical relative
+	 * 
+	 * @return the vertical relative
+	 * @since 0.5.5
+	 */
+	public VerticalRelative getVerticalRelative() {
+		return VerticalRelative.enumValueOf(mElement.getStyleVerticalRelAttribute());
+	}
+
+	/**
+	 * Return the horizontal relative
+	 * 
+	 * @return the horizontal relative
+	 * 
+	 * @since 0.5.5
+	 */
+	public HorizontalRelative getHorizontalRelative() {
+		return HorizontalRelative.enumValueOf(mElement.getStyleHorizontalRelAttribute());
+	}
+
+	private boolean verifyWidthDesc(String widthDesc) {
+		char char1 = widthDesc.charAt(widthDesc.length() - 1);
+		char char2 = widthDesc.charAt(widthDesc.length() - 2);
+
+		if (!(char1 >= 'a' && char1 <= 'z') && !(char1 >= 'A' && (char1 <= 'Z')))
+			return false;
+		if (!(char2 >= 'a' && char2 <= 'z') && !(char2 >= 'A' && (char2 <= 'Z')))
+			return false;
+		String floatValue = widthDesc.substring(0, widthDesc.length() - 2).trim();
+		try {
+			Double.parseDouble(floatValue);
+		} catch (Exception e) {
+			return false;
+		}
+		return true;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/MasterPage.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/MasterPage.java
new file mode 100644
index 0000000..04170b7
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/MasterPage.java
@@ -0,0 +1,735 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+ */

+

+package org.odftoolkit.simple.style;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;

+import org.odftoolkit.odfdom.dom.attribute.style.StylePageLayoutNameAttribute;

+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;

+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutElement;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;

+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.odfdom.type.Color;

+import org.odftoolkit.odfdom.type.Percent;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AdjustmentStyle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.LineStyle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.PrintOrientation;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.WritingMode;

+

+/**

+ * This class represents the master page style settings. It provides methods to

+ * access page layout styles. More functions will be added latter.

+ * 

+ * <p>

+ * This class is a corresponding high level class for element

+ * "style:master-page". It provides methods to access the attributes and

+ * children of "style:master-page".

+ * 

+ * @since 0.8

+ */

+public class MasterPage {

+

+	/**

+	 * This class is the style handler for master page. It provides methods to

+	 * get the readable element and the writable element of a page layout style.

+	 * It also provides method to get the readable element and the writable

+	 * element of page layout properties .

+	 * 

+	 */

+	class StyleHandlerImpl {

+

+		private OdfStylePageLayout mWritableStyleElement;

+		private OdfStyleBase mStyleElement;

+		private PageLayoutProperties mPageLayoutProperties;

+		private PageLayoutProperties mWritablePageLayoutProperties;

+		private OdfStylableElement mOdfElement; // master page style element

+		private Document mDocument;

+

+		/**

+		 * Constructor of StyleHandlerImpl

+		 * 

+		 * @param element

+		 *            - the instance of master page element in an ODF document

+		 * 

+		 */

+		public StyleHandlerImpl(OdfStylableElement element) {

+			mOdfElement = element;

+			mDocument = ((Document) ((OdfFileDom) mOdfElement

+					.getOwnerDocument()).getDocument());

+		}

+

+		/**

+		 * Return the page layout properties definition for this component, only

+		 * for read function.

+		 * <p>

+		 * Null will be returned if there is no style definition.

+		 * <p>

+		 * Null will be returned if there is no explicit page layout properties

+		 * definition for this component.

+		 * <p>

+		 * Note if you try to write style properties to the returned object,

+		 * errors will be met with.

+		 * 

+		 * @return the page layout properties definition for this component,

+		 *         only for read function

+		 */

+		public PageLayoutProperties getPageLayoutPropertiesForRead() {

+			if (mWritablePageLayoutProperties != null)

+				return mWritablePageLayoutProperties;

+			else if (mPageLayoutProperties != null)

+				return mPageLayoutProperties;

+

+			OdfStyleBase style = getPageLayoutElementForRead();

+			if (style == null) {

+				Logger.getLogger(DefaultStyleHandler.class.getName()).log(

+						Level.FINE, "No style definition is found!", "");

+				return null;

+			}

+			mPageLayoutProperties = PageLayoutProperties

+					.getPageLayoutProperties(style);

+			if (mPageLayoutProperties != null)

+				return mPageLayoutProperties;

+			else {

+				Logger

+						.getLogger(DefaultStyleHandler.class.getName())

+						.log(

+								Level.FINE,

+								"No explicit pageLayout properties definition is found!",

+								"");

+				return null;

+			}

+		}

+

+		/**

+		 * Return the page layout properties definition for this component, for

+		 * read and write function.

+		 * <p>

+		 * An empty style definition will be created if there is no style

+		 * definition.

+		 * <p>

+		 * An empty page layout properties definition will be created if there

+		 * is no explicit page layout properties definition.

+		 * 

+		 * @return the page layout properties definition for this component, for

+		 *         read and write function

+		 * @throws Exception

+		 *             if the corresponding <code>StylePageLayoutElement</code>

+		 *             cannot be accessed for write.

+		 */

+		public PageLayoutProperties getPageLayoutPropertiesForWrite()

+				throws Exception {

+			if (mWritablePageLayoutProperties != null)

+				return mWritablePageLayoutProperties;

+			OdfStylePageLayout style = getPageLayoutElementForWrite();

+			mWritablePageLayoutProperties = PageLayoutProperties

+					.getOrCreatePageLayoutProperties(style);

+			return mWritablePageLayoutProperties;

+		}

+

+		/**

+		 * Return the style element for this component, only for read function.

+		 * This method will invode <code>getusedStyleName</code> to get the

+		 * style name, and then find the readable style element by name.

+		 * <p>

+		 * Null will be returned if there is no style definition.

+		 * <p>

+		 * Note if you try to write style properties to the returned object,

+		 * errors will be met with.

+		 * 

+		 * @return the style element

+		 * @see #getUsedPageLayoutStyleName()

+		 */

+		public OdfStyleBase getPageLayoutElementForRead() {

+			// Return current used style

+			if (getCurrentUsedStyle() != null)

+				return getCurrentUsedStyle();

+

+			String styleName = getUsedPageLayoutStyleName();

+			mStyleElement = getReadableStyleElementByName(styleName);

+			return mStyleElement;

+		}

+

+		/**

+		 * Return the style element for this component, for read and write

+		 * functions. This method will invode <code>getusedStyleName</code> to

+		 * get the style name, and then find the writable style element by name.

+		 * <p>

+		 * An empty style definition will be created if there is no style

+		 * definition.

+		 * 

+		 * @return the style element

+		 * @throws Exception

+		 *             if the corresponding <code>StylePageLayoutElement</code>

+		 *             cannot be accessed for write.

+		 * @see #getUsedPageLayoutStyleName()

+		 */

+		public OdfStylePageLayout getPageLayoutElementForWrite()

+				throws Exception {

+			if (mWritableStyleElement != null)

+				return mWritableStyleElement;

+

+			String styleName = getUsedPageLayoutStyleName();

+			mWritableStyleElement = getWritableStyleElementByName(styleName,

+					false);

+			return mWritableStyleElement;

+		}

+

+		/**

+		 * Return a readable style element by style name.

+		 * <p>

+		 * If the style name is null, the default style will be returned.

+		 * 

+		 * @param styleName

+		 *            - the style name

+		 * @return a readable style element

+		 */

+		protected OdfStyleBase getReadableStyleElementByName(String styleName) {

+

+			// TODO: get from default page layout style element

+			if (styleName == null || (styleName.equals("")))

+				;

+

+			OdfStylePageLayout styleElement = mOdfElement.getAutomaticStyles()

+					.getPageLayout(styleName);

+

+			return styleElement;

+		}

+

+		/**

+		 * Return a writable page layout style element by style name.

+		 * <p>

+		 * If the style is shared, a copied style element would be returned.

+		 * <p>

+		 * If the style name is null, the default style will be copied.

+		 * 

+		 * @param styleName

+		 *            - the style name

+		 * @return a writable style element

+		 * @throws Exception

+		 *             if the corresponding StyleElement cannot be accessed for

+		 *             write.

+		 */

+		protected OdfStylePageLayout getWritableStyleElementByName(

+				String styleName, boolean isShared) throws Exception {

+			boolean createNew = isShared;

+			OdfStylePageLayout pageLayout = null;

+			OdfOfficeAutomaticStyles styles = mOdfElement.getAutomaticStyles();

+			if (styleName == null || (styleName.equals(""))) {

+				createNew = true;

+				// TODO: get default page layout style

+			} else {

+				styles = mOdfElement.getAutomaticStyles();

+				pageLayout = styles.getPageLayout(styleName);

+				if (pageLayout == null || pageLayout.getStyleUserCount() > 1) {

+					createNew = true;

+				}

+			}

+			// if style name is null or this style are used by many users,

+			// should create a new one.

+			if (createNew) {

+				OdfStylePageLayout newPageLayout = null;

+				if (pageLayout != null) {

+					newPageLayout = (OdfStylePageLayout) pageLayout

+							.cloneNode(true);

+				}

+				newPageLayout = (OdfStylePageLayout) mDocument.getStylesDom()

+						.newOdfElement(StylePageLayoutElement.class);

+				String newname = newUniquePageLayoutName();

+				newPageLayout.setStyleNameAttribute(newname);

+				styles.appendChild(newPageLayout);

+				mOdfElement.setAttributeNS(OdfDocumentNamespace.STYLE.getUri(),

+						"style:page-layout-name", newname);

+				newPageLayout.addStyleUser(mOdfElement);

+				return newPageLayout;

+			}

+			return pageLayout;

+		}

+

+		private String newUniquePageLayoutName() {

+			String unique_name;

+			OdfOfficeAutomaticStyles styles = mOdfElement.getAutomaticStyles();

+			do {

+				unique_name = String.format("a%06x",

+						(int) (Math.random() * 0xffffff));

+			} while (styles.getPageLayout(unique_name) != null);

+			return unique_name;

+		}

+

+		private OdfStyleBase getCurrentUsedStyle() {

+			if (mWritableStyleElement != null)

+				return mWritableStyleElement;

+			else

+				return mStyleElement;

+		}

+

+		/**

+		 * Return the referenced style name by this master page.

+		 * 

+		 * @return - the referenced style name by this master page.

+		 */

+		public String getUsedPageLayoutStyleName() {

+			return mOdfElement

+					.getAttribute(StylePageLayoutNameAttribute.ATTRIBUTE_NAME

+							.getQName());

+		}

+	}

+

+	private StyleMasterPageElement mStyleMasterPageElement;

+	private StyleHandlerImpl mStyleHandler;

+

+	/**

+	 * Constructor of MasterPage

+	 * 

+	 * @param styleMasterPageElement

+	 *            - the instance of style:master-page element in an ODF document

+	 */

+	MasterPage(StyleMasterPageElement styleMasterPageElement) {

+		mStyleMasterPageElement = styleMasterPageElement;

+	}

+

+	/**

+	 * Return a master page according to its name and its document.

+	 * <p>

+	 * If there is no existing master page defined by this name in the document,

+	 * a new master with this name will be created and returned.

+	 * 

+	 * @param doc

+	 *            - the document to which the master page belongs.

+	 * @param name

+	 *            - the name of the master page

+	 * @return a master page

+	 * @throws Exception

+	 *             if the style DOM cannot be initialized

+	 */

+	public static MasterPage getOrCreateMasterPage(Document doc, String name)

+			throws Exception {

+		OdfOfficeMasterStyles officeMasterStyles = doc.getOfficeMasterStyles();

+		StyleMasterPageElement master = officeMasterStyles.getMasterPage(name);

+		if (master == null) {

+			master = doc.getStylesDom().newOdfElement(

+					StyleMasterPageElement.class);

+			master.setStyleNameAttribute(name);

+			officeMasterStyles.appendChild(master);

+		}

+		return new MasterPage(master);

+	}

+

+	/**

+	 * Get the style handler of this master page.

+	 * <p>

+	 * The style handler is an instance of StyleHandlerImpl

+	 * 

+	 * @return an instance of StyleHandlerImpl

+	 * @see StyleHandlerImpl

+	 */

+	StyleHandlerImpl getPageLayoutStyleHandler() {

+		if (mStyleHandler != null)

+			return mStyleHandler;

+		else {

+			mStyleHandler = new StyleHandlerImpl(mStyleMasterPageElement);

+			return mStyleHandler;

+		}

+

+	}

+

+	/**

+	 * Get the name of this master page.

+	 * <p>

+	 * This represents the attribute <code>style:name</code> of

+	 * <code>style:master-page</code>.

+	 * 

+	 * @return the style name of this master page.

+	 */

+	public String getName() {

+		return mStyleMasterPageElement.getStyleNameAttribute();

+	}

+

+	/**

+	 * Get the top margin of the <code>PageLayoutProperties</code> referenced by

+	 * this master page.

+	 * 

+	 * @return the top margin (in Millimeter)

+	 */

+	public double getMarginTop() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getMarginTop();

+	}

+

+	/**

+	 * Get the right margin of the <code>PageLayoutProperties</code> referenced

+	 * by this master page.

+	 * 

+	 * @return the right margin (in Millimeter)

+	 */

+	public double getMarginRight() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getMarginRight();

+	}

+

+	/**

+	 * Get the left margin of the <code>PageLayoutProperties</code> referenced

+	 * by this master page.

+	 * 

+	 * @return the left margin (in Millimeter)

+	 */

+	public double getMarginLeft() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getMarginLeft();

+	}

+

+	/**

+	 * Get the bottom margin of the <code>PageLayoutProperties</code> referenced

+	 * by this master page.

+	 * 

+	 * @return the bottom margin (in Millimeter)

+	 */

+	public double getMarginBottom() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getMarginBottom();

+	}

+

+	/**

+	 * Set the margins of the <code>PageLayoutProperties</code> referenced by

+	 * this master page.

+	 * <p>

+	 * If the margin size is set to zero, the corresponding margin definition

+	 * will be removed.

+	 * 

+	 * @param marginTop

+	 *            the size of the top margin (in Millimeter)

+	 * @param marginBottom

+	 *            the size of the bottom margin (in Millimeter)

+	 * @param marginLeft

+	 *            the size of the left margin (in Millimeter)

+	 * @param marginRight

+	 *            the size of the right margin (in Millimeter)

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 * 

+	 */

+	public void setMargins(double marginTop, double marginBottom,

+			double marginLeft, double marginRight) throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setMarginTop(marginTop);

+		properties.setMarginBottom(marginBottom);

+		properties.setMarginLeft(marginLeft);

+		properties.setMarginRight(marginRight);

+	}

+

+	/**

+	 * Get the page width of the the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @return the size of page width (in Millimeter)

+	 */

+	public double getPageWidth() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getPageWidth();

+	}

+

+	/**

+	 * Set the page width of the <code>PageLayoutProperties</code> referenced by

+	 * this master page.

+	 * <p>

+	 * If the size is set to zero, the page width definition will be removed.

+	 * 

+	 * @param pageWidth

+	 *            the size of the page width (in Millimeter)

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 */

+	public void setPageWidth(double pageWidth) throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setPageWidth(pageWidth);

+	}

+

+	/**

+	 * Get the page height of the the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @return the size of page height (in Millimeter)

+	 */

+	public double getPageHeight() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getPageHeight();

+	}

+

+	/**

+	 * Set the page height of the <code>PageLayoutProperties</code> referenced

+	 * by this master page.

+	 * <p>

+	 * If the size is set to zero, the page height definition will be removed.

+	 * 

+	 * @param pageHeight

+	 *            the size of the page height (in Millimeter)

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 */

+	public void setPageHeight(double pageHeight) throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setPageHeight(pageHeight);

+	}

+

+	/**

+	 * Get the number format of the the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @return the value of number format

+	 */

+	public String getNumberFormat() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getNumberFormat();

+	}

+

+	/**

+	 * Set the number format of the <code>PageLayoutProperties</code> referenced

+	 * by this master page.

+	 * 

+	 * @param format

+	 *            specify the number format. The values of the style:num-format

+	 *            attribute are 1, i, I, string, an empty string, a or A.

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 */

+	public void setNumberFormat(String format) throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setNumberFormat(format);

+	}

+

+	/**

+	 * Get the print orientation of the the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @return the value of print orientation

+	 */

+	public String getPrintOrientation() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getPrintOrientation();

+	}

+

+	/**

+	 * Set the print orientation of the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * <p>

+	 * If the parameter <code>orientation</code> is null, the print orientation

+	 * definition will be removed.

+	 * 

+	 * @param orientation

+	 *            - the print orientation

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 */

+	public void setPrintOrientation(PrintOrientation orientation)

+			throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setPrintOrientation(orientation);

+	}

+

+	/**

+	 * Get the writing mode of the the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @return the value of writing mode

+	 */

+	public String getWritingMode() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getWritingMode();

+	}

+

+	/**

+	 * Set the writing mode of the <code>PageLayoutProperties</code> referenced

+	 * by this master page.

+	 * 

+	 * @param mode

+	 *            - writing mode

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 */

+	public void setWritingMode(WritingMode mode) throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setWritingMode(mode);

+	}

+

+	/**

+	 * Get the footnote max height of the the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @return the value of footnote max height

+	 */

+	public double getFootnoteMaxHeight() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteMaxHeight();

+	}

+

+	/**

+	 * Set the footnote max height of the <code>PageLayoutProperties</code>

+	 * referenced by this master page.

+	 * 

+	 * @param height

+	 *            - the max height of a footnote area

+	 *@throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 */

+	public void setFootnoteMaxHeight(double height) throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setFootnoteMaxHeight(height);

+	}

+

+	/**

+	 * Get the way in which a footnote separator line aligned to a page, which

+	 * is set by the <code>PageLayoutProperties</code> referenced by this master

+	 * page.

+	 * 

+	 * @return the adjustment of a footnote separator line

+	 */

+	public String getFootnoteSepAdjustment() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepAdjustment();

+	}

+

+	/**

+	 * Get the color of a footnote separator which is set by the

+	 * <code>PageLayoutProperties</code> referenced by this master page.

+	 * 

+	 * @return the color of a footnote separator line

+	 */

+	public String getFootnoteSepColor() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepColor();

+	}

+

+	/**

+	 * Get the distance between a footnote separator and the footnote area,

+	 * which is set by the <code>PageLayoutProperties</code> referenced by this

+	 * master page.

+	 * 

+	 * @return the distance after a footnote separator line

+	 */

+	public double getFootnoteSepDistanceAfterSep() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepDistanceAfterSep();

+	}

+

+	/**

+	 * Get the distance between the text area and the footnote separator, which

+	 * is set by the <code>PageLayoutProperties</code> referenced by this master

+	 * page.

+	 * 

+	 * @return the distance before a footnote separator line

+	 */

+	public double getFootnoteSepDistanceBeforeSep() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepDistanceBeforeSep();

+	}

+

+	/**

+	 * Get the line style of a footnote separator which is set by the

+	 * <code>PageLayoutProperties</code> referenced by this master page.

+	 * 

+	 * @return the line style of a footnote separator line

+	 */

+	public String getFootnoteSepLineStyle() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepLineStyle();

+	}

+

+	/**

+	 * Get the real width of a footnote separator which is set by the

+	 * <code>PageLayoutProperties</code> referenced by this master page.

+	 * 

+	 * @return the real width of a footnote separator line

+	 */

+	public double getFootnoteSepWidth() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepWidth();

+	}

+

+	/**

+	 * Get the thickness of a footnote separator which is set by the

+	 * <code>PageLayoutProperties</code> referenced by this master page.

+	 * 

+	 * @return the thickness of a footnote separator line

+	 */

+	public double getFootnoteSepThickness() {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForRead();

+		return properties.getFootnoteSepThickness();

+	}

+

+	/**

+	 * Set the foot note separator properties of the

+	 * <code>PageLayoutProperties</code> referenced by this master page.

+	 * 

+	 * @throws Exception

+	 *             if the corresponding <code>StylePageLayoutElement</code>

+	 *             cannot be accessed for write.

+	 * @see PageLayoutProperties#setFootnoteSepProperties(AdjustmentStyle,

+	 *      Color, double, double, LineStyle, Percent, double)

+	 * 

+	 */

+	public void setFootnoteSepProperties(AdjustmentStyle adjustment,

+			Color color, double distanceAfterSep, double distanceBeforeSep,

+			LineStyle lineStyle, Percent width, double thickness)

+			throws Exception {

+		PageLayoutProperties properties = getPageLayoutStyleHandler()

+				.getPageLayoutPropertiesForWrite();

+		properties.setFootnoteSepProperties(adjustment, color,

+				distanceAfterSep, distanceBeforeSep, lineStyle, width,

+				thickness);

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/NumberFormat.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/NumberFormat.java
new file mode 100644
index 0000000..a9a7364
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/NumberFormat.java
@@ -0,0 +1,45 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+/**
+ * A <tt>NumberFormat</tt> specifies a numbering sequence.
+ * 
+ * @since 0.5
+ */
+public enum NumberFormat {
+
+	HINDU_ARABIC_NUMBER("1"), 
+	LOWERCASE_LATIN_ALPHABET("a"), 
+	UPPERCASE_LATIN_ALPHABET("A"),
+	LOWERCASE_ROMAN_NUMBER("i"),
+	UPPERCASE_ROMAN_NUMBER("I");
+	
+	private final String numberFormat;
+
+	NumberFormat(String format) {
+		numberFormat = format;
+	}
+
+	@Override
+	public String toString() {
+		return numberFormat;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/PageLayoutProperties.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/PageLayoutProperties.java
new file mode 100644
index 0000000..6fef41a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/PageLayoutProperties.java
@@ -0,0 +1,985 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+ */

+

+package org.odftoolkit.simple.style;

+

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoPageHeightAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoPageWidthAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleColorAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleDistanceAfterSepAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleDistanceBeforeSepAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleNumFormatAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StylePrintOrientationAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleRelWidthAttribute;

+import org.odftoolkit.odfdom.dom.attribute.style.StyleWidthAttribute;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;

+import org.odftoolkit.odfdom.dom.element.style.StyleFootnoteSepElement;

+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;

+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;

+import org.odftoolkit.odfdom.type.Color;

+import org.odftoolkit.odfdom.type.Length;

+import org.odftoolkit.odfdom.type.Percent;

+import org.odftoolkit.odfdom.type.Length.Unit;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AdjustmentStyle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.LineStyle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.WritingMode;

+

+/**

+ * This class represents the page layout style settings. It provides methods to

+ * access borders, margins,number format, page width, page height and etc. More

+ * functions will be added latter.

+ * 

+ * <p>

+ * This class is a corresponded high level class for element

+ * "style:page-layout-properties". It provides methods to access the attributes

+ * and children of "style:page-layout-properties".

+ * 

+ * @since 0.8

+ */

+public class PageLayoutProperties {

+	// fo:background-color

+

+	// fo:border, style:border-line-width

+	// fo:border-bottom, style:border-line-width-bottom

+	// fo:border-left, style:border-line-width-left

+	// fo:border-right, style:border-line-width-right

+	// fo:border-top, style:border-line-width-top

+

+	// fo:margin

+	// fo:margin-bottom

+	// fo:margin-left

+	// fo:margin-right

+	// fo:margin-top

+

+	// fo:padding

+	// fo:padding-bottom

+	// fo:padding-left

+	// fo:padding-right

+	// fo:padding-top

+

+	// fo:page-height

+	// fo:page-width

+

+	// style:layout-grid-base-height

+	// style:layout-grid-base-width

+	// style:layout-grid-color

+	// style:layout-grid-display

+	// style:layout-grid-lines

+	// style:layout-grid-mode

+	// style:layout-grid-print

+	// style:layout-grid-ruby-below

+	// style:layout-grid-ruby-height

+	// style:layout-grid-snap-to

+	// style:layout-grid-standard-mode

+

+	// style:num-format

+	// style:num-letter-sync

+	// style:num-prefix

+	// style:num-suffix

+

+	// style:print

+	// style:print-orientation

+	// style:first-page-number

+	// style:footnote-max-height

+	// style:paper-tray-name

+	// style:print-page-order

+	// style:register-truth-ref-style-name

+	// style:scale-to

+	// style:scale-to-pages

+	// style:shadow

+	// style:table-centering

+	// style:writing-mode

+

+	// the default size as used for left-, right-margin and indention

+	private static final String DEFAULT_LENGTH = "0in";

+	private static final String DEFAULT_PERCENT = "0%";

+	StylePageLayoutPropertiesElement mElement;

+	StyleFootnoteSepElement mFootnoteSepElement;

+	BorderPropertiesImpl mBorderPropertiesHandler;

+

+	/**

+	 * Create an instance of PageLayoutProperties

+	 */

+	protected PageLayoutProperties() {

+	}

+

+	/**

+	 * Create an instance of PageLayoutProperties from an element

+	 * <style:page-layout-properties>

+	 * 

+	 * @param pageLayoutProperties

+	 *            - the element of style:page-layout-properties

+	 */

+	protected PageLayoutProperties(

+			StylePageLayoutPropertiesElement pageLayoutProperties) {

+		mElement = pageLayoutProperties;

+		mFootnoteSepElement = (StyleFootnoteSepElement) pageLayoutProperties

+				.getElementsByTagName(

+						StyleFootnoteSepElement.ELEMENT_NAME.getQName())

+				.item(0);

+		mBorderPropertiesHandler = new BorderPropertiesImpl(mElement);

+	}

+

+	/**

+	 * Set the border style.

+	 * <p>

+	 * The first parameter <code>bordersType</code> describes which borders you

+	 * want to apply the style to, e.g. up border, bottom border, left border,

+	 * right border or four borders.

+	 * <p>

+	 * The border style information will be removed if the parameter

+	 * <code>bordersType</code> is NONE.

+	 * 

+	 * @param bordersType

+	 *            - the type of the borders

+	 * @param border

+	 *            - the border style description

+	 */

+	public void setBorders(StyleTypeDefinitions.CellBordersType bordersType,

+			Border border) {

+		switch (bordersType) {

+		case BOTTOM:

+			setBottomBorder(border);

+			break;

+		case LEFT:

+			setLeftBorder(border);

+			break;

+		case RIGHT:

+			setRightBorder(border);

+			break;

+		case TOP:

+			setTopBorder(border);

+			break;

+		case ALL_FOUR:

+			setBorder(border);

+			break;

+		case LEFT_RIGHT:

+			setLeftBorder(border);

+			setRightBorder(border);

+			break;

+		case TOP_BOTTOM:

+			setTopBorder(border);

+			setBottomBorder(border);

+			break;

+		case NONE:

+			mElement

+					.removeAttribute(StyleBorderLineWidthAttribute.ATTRIBUTE_NAME

+							.getQName());

+			mElement.removeAttribute(FoBorderAttribute.ATTRIBUTE_NAME

+					.getQName());

+			mElement

+					.removeAttribute(StyleBorderLineWidthBottomAttribute.ATTRIBUTE_NAME

+							.getQName());

+			mElement.removeAttribute(FoBorderBottomAttribute.ATTRIBUTE_NAME

+					.getQName());

+			mElement

+					.removeAttribute(StyleBorderLineWidthTopAttribute.ATTRIBUTE_NAME

+							.getQName());

+			mElement.removeAttribute(FoBorderTopAttribute.ATTRIBUTE_NAME

+					.getQName());

+			mElement

+					.removeAttribute(StyleBorderLineWidthLeftAttribute.ATTRIBUTE_NAME

+							.getQName());

+			mElement.removeAttribute(FoBorderLeftAttribute.ATTRIBUTE_NAME

+					.getQName());

+			mElement

+					.removeAttribute(StyleBorderLineWidthRightAttribute.ATTRIBUTE_NAME

+							.getQName());

+			mElement.removeAttribute(FoBorderRightAttribute.ATTRIBUTE_NAME

+					.getQName());

+		}

+	}

+

+	/**

+	 * Return the border setting for all four borders.

+	 * <p>

+	 * Null will be returned if there is no border setting for all four borders.

+	 * 

+	 * @return the border setting

+	 */

+	public Border getBorder() {

+		return mBorderPropertiesHandler.getBorder();

+	}

+

+	/**

+	 * Return the border setting for the top border.

+	 * <p>

+	 * Null will be returned if there is no border setting for the top border.

+	 * 

+	 * @return the border setting

+	 */

+	public Border getTopBorder() {

+		return mBorderPropertiesHandler.getTopBorder();

+	}

+

+	/**

+	 * Return the border setting for the left border.

+	 * <p>

+	 * Null will be returned if there is no border setting for the left border.

+	 * 

+	 * @return the border setting

+	 */

+	public Border getLeftBorder() {

+		return mBorderPropertiesHandler.getLeftBorder();

+	}

+

+	/**

+	 * Return the border setting for the right border.

+	 * <p>

+	 * Null will be returned if there is no border setting for the right border.

+	 * 

+	 * @return the border setting

+	 */

+	public Border getRightBorder() {

+		return mBorderPropertiesHandler.getRightBorder();

+	}

+

+	// fo:border-bottom

+	// style:border-line-width-bottom

+	/**

+	 * Return the border setting for the bottom border.

+	 * <p>

+	 * Null will be returned if there is no border setting for the bottom

+	 * border.

+	 * 

+	 * @return the border setting

+	 */

+	public Border getBottomBorder() {

+		return mBorderPropertiesHandler.getBottomBorder();

+	}

+

+	// fo:border

+	// style:border-line-width

+	/**

+	 * Set the border definition for all four borders.

+	 * <p>

+	 * If the parameter <code>border</code> is null, the border definition for

+	 * all four borders will be removed.

+	 * <p>

+	 * If the line type in the border definition is NONE, the border definition

+	 * for all four borders will be removed.

+	 * 

+	 * @param border

+	 *            - the border setting

+	 */

+	public void setBorder(Border border) {

+		mBorderPropertiesHandler.setBorder(border);

+	}

+

+	// fo:border-bottom

+	// style:border-line-width-bottom

+	/**

+	 * Set the border definition for the bottom border.

+	 * <p>

+	 * If the parameter <code>border</code> is null, the border definition for

+	 * the bottom border will be removed.

+	 * <p>

+	 * If the line type in the border definition is NONE, the border definition

+	 * for the bottom border will be removed.

+	 * 

+	 * @param border

+	 *            - the border setting

+	 */

+	public void setBottomBorder(Border border) {

+		mBorderPropertiesHandler.setBottomBorder(border);

+	}

+

+	// fo:border-top

+	// style:border-line-width-top

+	/**

+	 * Set the border definition for the top border.

+	 * <p>

+	 * If the parameter <code>border</code> is null, the border definition for

+	 * the top border will be removed.

+	 * <p>

+	 * If the line type in the border definition is NONE, the border definition

+	 * for the top border will be removed.

+	 * 

+	 * @param border

+	 *            - the border setting

+	 */

+	public void setTopBorder(Border border) {

+		mBorderPropertiesHandler.setTopBorder(border);

+	}

+

+	// fo:border-left

+	// style:border-line-width-left

+	/**

+	 * Set the border definition for the left border.

+	 * <p>

+	 * If the parameter <code>border</code> is null, the border definition for

+	 * the left border will be removed.

+	 * <p>

+	 * If the line type in the border definition is NONE, the border definition

+	 * for the left border will be removed.

+	 * 

+	 * @param border

+	 *            - the border setting

+	 */

+	public void setLeftBorder(Border border) {

+		mBorderPropertiesHandler.setLeftBorder(border);

+	}

+

+	// fo:border-right

+	// style:border-line-width-right

+	/**

+	 * Set the border definition for the right border.

+	 * <p>

+	 * If the parameter <code>border</code> is null, the border definition for

+	 * the right border will be removed.

+	 * <p>

+	 * If the line type in the border definition is NONE, the border definition

+	 * for the right border will be removed.

+	 * 

+	 * @param border

+	 *            - the border setting

+	 */

+	public void setRightBorder(Border border) {

+		mBorderPropertiesHandler.setRightBorder(border);

+	}

+

+	/**

+	 * Set the left margin of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the left margin definition will be removed.

+	 * 

+	 * @param marginLeft

+	 *            the size of the left margin (in Millimeter)

+	 */

+	public void setMarginLeft(double marginLeft) {

+		if (marginLeft == 0) {

+			mElement.removeAttribute(FoMarginLeftAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setFoMarginLeftAttribute(getInchValue(marginLeft));

+		}

+	}

+

+	/**

+	 * Returns the provided Millimeter value as Inch value

+	 * 

+	 * @param value

+	 *            the value to set the attribute value to (in Millimeter)

+	 */

+	private static String getInchValue(double value) {

+		// build the string for mm

+		final String mmValueString = value + Unit.MILLIMETER.abbr();

+		// convert the length to inch

+		final String inchValueString = Length.mapToUnit(mmValueString,

+				Unit.INCH);

+

+		// return the value

+		return inchValueString;

+	}

+

+	/**

+	 * Get the size of the left margin of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the left margin definition will be removed.

+	 * 

+	 * @return the size of the left margin (in Millimeter)

+	 */

+	public double getMarginLeft() {

+		// get the value

+		String valueString = mElement.getFoMarginLeftAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Set the right margin of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the right margin definition will be removed.

+	 * 

+	 * @param marginRight

+	 *            the size of the right margin (in Millimeter)

+	 */

+	public void setMarginRight(double marginRight) {

+		if (marginRight == 0) {

+			mElement.removeAttribute(FoMarginRightAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setFoMarginRightAttribute(getInchValue(marginRight));

+		}

+	}

+

+	/**

+	 * Get the size of the right margin of this

+	 * <code>PageLayoutProperties</code>

+	 * 

+	 * @return the size of the right margin (in Millimeter)

+	 */

+	public double getMarginRight() {

+		// get the value

+		String valueString = mElement.getFoMarginRightAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Set the top margin of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the top margin definition will be removed.

+	 * 

+	 * @param marginTop

+	 *            the size of the right margin (in Millimeter)

+	 */

+	public void setMarginTop(double marginTop) {

+		if (marginTop == 0) {

+			mElement.removeAttribute(FoMarginTopAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setFoMarginTopAttribute(getInchValue(marginTop));

+		}

+	}

+

+	/**

+	 * Get the size of the top margin of this <code>PageLayoutProperties</code>

+	 * 

+	 * @return the size of the top margin (in Millimeter)

+	 */

+	public double getMarginTop() {

+		// get the value

+		String valueString = mElement.getFoMarginTopAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Set the bottom margin of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the bottom margin definition will be removed.

+	 * 

+	 * @param marginBottom

+	 *            the size of the bottom margin (in Millimeter)

+	 */

+	public void setMarginBottom(double marginBottom) {

+		if (marginBottom == 0) {

+			mElement.removeAttribute(FoMarginBottomAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setFoMarginBottomAttribute(getInchValue(marginBottom));

+		}

+	}

+

+	/**

+	 * Get the size of the bottom margin of this

+	 * <code>PageLayoutProperties</code>

+	 * 

+	 * @return the size of the bottom margin (in Millimeter)

+	 */

+	public double getMarginBottom() {

+		// get the value

+		String valueString = mElement.getFoMarginBottomAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Get the number format of this <code>PageLayoutProperties</code>

+	 * 

+	 * @return the number format

+	 */

+	public String getNumberFormat() {

+		return mElement.getStyleNumFormatAttribute();

+	}

+

+	/**

+	 * Set the number format of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the parameter <code>format</code> is null, the definition will be

+	 * removed.

+	 * 

+	 * @param format

+	 *            specify the number format. The values of the style:num-format

+	 *            attribute are 1, i, I, string, an empty string, a or A.

+	 */

+	public void setNumberFormat(String format) {

+		if (format == null) {

+			mElement.removeAttribute(StyleNumFormatAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setStyleNumFormatAttribute(format);

+		}

+	}

+

+	/**

+	 * Get the page width of this <code>PageLayoutProperties</code>

+	 * 

+	 * @return the size of page width (in Millimeter)

+	 */

+	public double getPageWidth() {

+		// get the value

+		String valueString = mElement.getFoPageWidthAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Set the page width of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the page width definition will be removed.

+	 * 

+	 * @param pageWidth

+	 *            the size of the page width (in Millimeter)

+	 */

+	public void setPageWidth(double pageWidth) {

+		if (pageWidth == 0) {

+			mElement.removeAttribute(FoPageWidthAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setFoPageWidthAttribute(getInchValue(pageWidth));

+		}

+	}

+

+	/**

+	 * Get the page height of this <code>PageLayoutProperties</code>

+	 * 

+	 * @return the size of page height (in Millimeter)

+	 */

+	public double getPageHeight() {

+		// get the value

+		String valueString = mElement.getFoPageHeightAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Set the page height of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the size is set to zero, the page height definition will be removed.

+	 * 

+	 * @param pageHeight

+	 *            the size of the page height (in Millimeter)

+	 */

+	public void setPageHeight(double pageHeight) {

+		if (pageHeight == 0) {

+			mElement.removeAttribute(FoPageHeightAttribute.ATTRIBUTE_NAME

+					.getQName());

+		} else {

+			mElement.setFoPageHeightAttribute(getInchValue(pageHeight));

+		}

+	}

+

+	/**

+	 * Get the print orientation of this <code>PageLayoutProperties</code>

+	 * 

+	 * @return the print orientation

+	 */

+	public String getPrintOrientation() {

+		return mElement.getStylePrintOrientationAttribute();

+	}

+

+	/**

+	 * Set the print orientation of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the parameter <code>orientation</code> is null, the print orientation

+	 * definition will be removed.

+	 * 

+	 * @param orientation

+	 *            - the print orientation

+	 */

+	public void setPrintOrientation(

+			StyleTypeDefinitions.PrintOrientation orientation) {

+		if (orientation == null) {

+			mElement

+					.removeAttribute(StylePrintOrientationAttribute.ATTRIBUTE_NAME

+							.getQName());

+		} else {

+			mElement.setStylePrintOrientationAttribute(orientation.toString());

+		}

+	}

+

+	/**

+	 * Get the way in which a footnote separator line is aligned on a page.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, the default value

+	 * "left" will be returned.

+	 * 

+	 * @return the adjustment value of footnote separator line.

+	 */

+	public String getFootnoteSepAdjustment() {

+		if (mFootnoteSepElement == null) {

+			return AdjustmentStyle.LEFT.toString();

+		} else {

+			return mFootnoteSepElement.getStyleAdjustmentAttribute();

+		}

+	}

+

+	/**

+	 * Get the color of footnote separator line.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, the null value

+	 * will be returned.

+	 * 

+	 * @return the color of footnote separator line.

+	 */

+	public String getFootnoteSepColor() {

+		if (mFootnoteSepElement == null) {

+			return null;

+		} else {

+			return mFootnoteSepElement.getStyleColorAttribute();

+		}

+	}

+

+	/**

+	 * Get the distance between a footnote separator line and the footnote text.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, null will be

+	 * returned.

+	 * 

+	 * @return the distance after a footnote separator line.

+	 */

+	public double getFootnoteSepDistanceAfterSep() {

+		if (mFootnoteSepElement == null) {

+			return 0;

+		} else {

+			String value = mFootnoteSepElement

+					.getStyleDistanceAfterSepAttribute();

+			if (value == null)

+				value = DEFAULT_LENGTH;

+			return Length.parseDouble(value, Unit.MILLIMETER);

+		}

+	}

+

+	/**

+	 * Get the distance between the text area and a footnote separator line.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, null will be

+	 * returned.

+	 * 

+	 * @return the distance before a footnote separator line.

+	 */

+	public double getFootnoteSepDistanceBeforeSep() {

+		if (mFootnoteSepElement == null) {

+			return 0;

+		} else {

+			String value = mFootnoteSepElement

+					.getStyleDistanceBeforeSepAttribute();

+			if (value == null)

+				value = DEFAULT_LENGTH;

+			return Length.parseDouble(value, Unit.MILLIMETER);

+		}

+	}

+

+	/**

+	 * Get the line style of a footnote separator line.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, the default value

+	 * "NONE" will be returned.

+	 * 

+	 * @return the line style of a footnote separator line.

+	 */

+	public String getFootnoteSepLineStyle() {

+		if (mFootnoteSepElement == null) {

+			return LineStyle.NONE.toString();

+		} else {

+			return mFootnoteSepElement.getStyleLineStyleAttribute();

+		}

+	}

+

+	/**

+	 * Get the width of a footnote separator line.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, the default value

+	 * 0 will be returned.

+	 * 

+	 * @return the width a footnote separator line.

+	 */

+	public double getFootnoteSepWidth() {

+		if (mFootnoteSepElement == null) {

+			return 0;

+		} else {

+			String value = mFootnoteSepElement.getStyleRelWidthAttribute();

+			if (value == null)

+				value = DEFAULT_PERCENT;

+			return Percent.valueOf(value).doubleValue();

+		}

+	}

+

+	/**

+	 * Get the thickness of a footnote separator line.

+	 * <p>

+	 * If there is no <code>style:footnote-sep</code> element, the default value

+	 * 0 will be returned.

+	 * 

+	 * @return the thickness a footnote separator line.

+	 */

+	public double getFootnoteSepThickness() {

+		if (mFootnoteSepElement == null) {

+			return 0;

+		} else {

+			String value = mFootnoteSepElement.getStyleWidthAttribute();

+			if (value == null)

+				value = DEFAULT_LENGTH;

+			return Length.parseDouble(value, Unit.MILLIMETER);

+		}

+	}

+

+	/**

+	 * Set the formatting of footnote separator of this

+	 * <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the parameter <code>adjustment</code> is null, the adjustment

+	 * definition will be set as left. <br>

+	 * If the parameter <code>lineStyle</code> is null, the line style

+	 * definition will be set as NONE. <br>

+	 * If other parameters, like <code>color,

+	 * distanceAfterSep, distanceBeforeSep, width or thickness</code> is null,

+	 * the corresponding definition will be removed.

+	 * 

+	 * @param adjustment

+	 *            - specifies how a footnote separator line is aligned on a

+	 *            page.

+	 * 

+	 * @param color

+	 *            - specifies the color of a column or footnote separator line

+	 * 

+	 * @param distanceAfterSep

+	 *            - specifies the space between a footnote separator line and

+	 *            the footnote text.

+	 * 

+	 * @param distanceBeforeSep

+	 *            - specifies the space between the body text area and a

+	 *            footnote separator line.

+	 * 

+	 * @param lineStyle

+	 *            - specifies the style of a footnote separator line.

+	 * 

+	 * @param width

+	 *            - specifies the length of the footnote separator line as a

+	 *            percentage of the body text area.

+	 * 

+	 * @param thickness

+	 *            - specifies the width or thickness of a line.

+	 */

+	public void setFootnoteSepProperties(AdjustmentStyle adjustment,

+			Color color, double distanceAfterSep, double distanceBeforeSep,

+			StyleTypeDefinitions.LineStyle lineStyle, Percent width,

+			double thickness) {

+		if (mFootnoteSepElement == null) {

+			mFootnoteSepElement = mElement.newStyleFootnoteSepElement();

+		}

+

+		// style:adjustment

+		if (adjustment != null) {

+			mFootnoteSepElement.setStyleAdjustmentAttribute(adjustment

+					.toString());

+		} else {

+			mFootnoteSepElement

+					.setStyleAdjustmentAttribute(AdjustmentStyle.LEFT

+							.toString());

+		}

+

+		// style:color

+		if (color != null) {

+			mFootnoteSepElement.setStyleColorAttribute(color.toString());

+		} else {

+			mFootnoteSepElement

+					.removeAttribute(StyleColorAttribute.ATTRIBUTE_NAME

+							.getQName());

+		}

+

+		// style:distance-after-sep

+		if (distanceAfterSep == 0) {

+			mFootnoteSepElement

+					.removeAttribute(StyleDistanceAfterSepAttribute.ATTRIBUTE_NAME

+							.getQName());

+		} else {

+			mFootnoteSepElement

+					.setStyleDistanceAfterSepAttribute(getInchValue(distanceAfterSep));

+		}

+

+		// style:distance-before-sep

+		if (distanceBeforeSep == 0) {

+			mFootnoteSepElement

+					.removeAttribute(StyleDistanceBeforeSepAttribute.ATTRIBUTE_NAME

+							.getQName());

+		} else {

+			mFootnoteSepElement

+					.setStyleDistanceBeforeSepAttribute(getInchValue(distanceBeforeSep));

+		}

+

+		// style:line-style

+		if (lineStyle == null) {

+			mFootnoteSepElement.setStyleLineStyleAttribute(LineStyle.NONE

+					.toString());

+		} else {

+			mFootnoteSepElement

+					.setStyleLineStyleAttribute(lineStyle.toString());

+		}

+

+		// style:rel-width

+		if (width == null) {

+			mFootnoteSepElement

+					.removeAttribute(StyleRelWidthAttribute.ATTRIBUTE_NAME

+							.getQName());

+		} else {

+			mFootnoteSepElement.setStyleRelWidthAttribute(width.toString());

+		}

+

+		// style:width

+		if (thickness == 0) {

+			mFootnoteSepElement

+					.removeAttribute(StyleWidthAttribute.ATTRIBUTE_NAME

+							.getQName());

+		} else {

+			mFootnoteSepElement.setStyleWidthAttribute(getInchValue(thickness));

+		}

+	}

+

+	/**

+	 * Set the writing mode of this <code>PageLayoutProperties</code>

+	 * <p>

+	 * If the parameter <code>mode</code> is null, the default value of writing

+	 * node "page" will be set.

+	 * 

+	 * @param mode

+	 *            - specifies a writing mode.

+	 */

+	public void setWritingMode(WritingMode mode) {

+		if (mode == null) {

+			mElement.setStyleWritingModeAttribute(WritingMode.PAGE.toString());

+		} else {

+			mElement.setStyleWritingModeAttribute(mode.toString());

+		}

+	}

+

+	/**

+	 * Get the writing mode of this <code>PageLayoutProperties</code>

+	 * 

+	 * @return the value of writing mode

+	 */

+	public String getWritingMode() {

+		return WritingMode.enumValueOf(mElement.getStyleWritingModeAttribute())

+				.toString();

+	}

+

+	/**

+	 * Set the max height of a footnote area on a page.

+	 * <p>

+	 * If the value of this attribute is set to 0, there is no limit to the

+	 * amount of space that the footnote can occupy.

+	 * 

+	 * @param height

+	 *            - the max height which a footnote area can occupy

+	 */

+	public void setFootnoteMaxHeight(double height) {

+		mElement.setStyleFootnoteMaxHeightAttribute(getInchValue(height));

+	}

+

+	/**

+	 * Get the max height of a footnote area on a page.

+	 * 

+	 * @return the value of max height of footnote area.

+	 */

+	public double getFootnoteMaxHeight() {

+		String valueString = mElement.getStyleFootnoteMaxHeightAttribute();

+		// check if a value was returned

+		if (valueString == null) {

+			// if not use the default length

+			valueString = DEFAULT_LENGTH;

+		}

+		// return the converted value

+		return Length.parseDouble(valueString, Unit.MILLIMETER);

+	}

+

+	/**

+	 * Return an instance of

+	 * <code>PageLayoutProperties</p> to represent the "style:page-layout-properties" in a style element.

+	 * <p>If there is no "style:page-layout-properties" defined in the style element, a new "style:page-layout-properties" element will be created.

+	 * 

+	 * @param style

+	 *            - a style element

+	 * @return an instance of <code>PageLayoutProperties</p>

+	 */

+	public static PageLayoutProperties getOrCreatePageLayoutProperties(

+			OdfStyleBase style) {

+		OdfStylePropertiesBase properties = style

+				.getOrCreatePropertiesElement(OdfStylePropertiesSet.PageLayoutProperties);

+		return new PageLayoutProperties(

+				(StylePageLayoutPropertiesElement) properties);

+	}

+

+	/**

+	 * Return an instance of

+	 * <code>PageLayoutProperties</p> to represent the "style:page-layout-properties" in a style element.

+	 * <p>If there is no "style:page-layout-properties" defined in the style element, null will be returned.

+	 * 

+	 * @param style

+	 *            - a style element

+	 * @return an instance of <code>PageLayoutProperties</p>;Null if there is no

+	 *         "style:page-layout-properties" defined

+	 */

+	public static PageLayoutProperties getPageLayoutProperties(

+			OdfStyleBase style) {

+		OdfStylePropertiesBase properties = style

+				.getPropertiesElement(OdfStylePropertiesSet.PageLayoutProperties);

+		if (properties != null)

+			return new PageLayoutProperties(

+					(StylePageLayoutPropertiesElement) properties);

+		else

+			return null;

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/ParagraphProperties.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/ParagraphProperties.java
new file mode 100644
index 0000000..69d0c1c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/ParagraphProperties.java
@@ -0,0 +1,374 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakAfterAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakBeforeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoMarginTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextIndentAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+
+/**
+ * This class represents the paragraph style settings. It provides methods to
+ * access horizontal alignment. More functions will be added latter.
+ * 
+ * <p>
+ * This class is a corresponded high level class for element
+ * "style:paragraph-properties". It provides methods to access the attributes
+ * and children of "style:paragraph-properties".
+ * 
+ * @since 0.3
+ */
+public class ParagraphProperties {
+
+	// the default size as used for left-, right-margin and indention
+	private static final String  DEFAULT_LENGTH = "0in";
+
+	// fo:text-align
+
+	StyleParagraphPropertiesElement mElement;
+
+	/**
+	 * Create an empty paragraph style setting object
+	 */
+	protected ParagraphProperties() {
+	}
+
+	/**
+	 * Create a paragraph style setting object, which has the association with
+	 * an element "style:paragraph-properties".
+	 * 
+	 * @param properties
+	 *            - the element "style:paragraph-properties"
+	 */
+	protected ParagraphProperties(StyleParagraphPropertiesElement properties) {
+		mElement = properties;
+	}
+
+	/**
+	 * Set the horizontal alignment.
+	 * <p>
+	 * If the first parameter is null, the horizontal alignment setting will be
+	 * removed.
+	 * 
+	 * @param alignType
+	 *            - the horizontal alignment
+	 */
+	public void setHorizontalAlignment(HorizontalAlignmentType alignType) {
+		if (alignType == HorizontalAlignmentType.DEFAULT)
+			mElement.removeAttribute(FoTextAlignAttribute.ATTRIBUTE_NAME.getQName());
+		else
+			mElement.setFoTextAlignAttribute(alignType.getAlignmentString());
+	}
+
+	/**
+	 * Return the horizontal alignment.
+	 * <p>
+	 * Null will be returned if there is no horizontal alignment setting.
+	 * 
+	 * @return - the horizontal alignment; null if there is no horizontal
+	 *         alignment setting.
+	 */
+	public HorizontalAlignmentType getHorizontalAlignment() {
+		String alignType = mElement.getFoTextAlignAttribute();
+		if ((alignType == null) || (alignType.length() == 0))
+			return HorizontalAlignmentType.DEFAULT;
+
+		FoTextAlignAttribute.Value value = FoTextAlignAttribute.Value.enumValueOf(alignType);
+		switch (value) {
+		case CENTER:
+			return HorizontalAlignmentType.CENTER;
+		case END:
+			return HorizontalAlignmentType.RIGHT;
+		case JUSTIFY:
+			return HorizontalAlignmentType.JUSTIFY;
+		case LEFT:
+			return HorizontalAlignmentType.LEFT;
+		case RIGHT:
+			return HorizontalAlignmentType.RIGHT;
+		case START:
+			return HorizontalAlignmentType.LEFT;
+		}
+		return null;
+	}
+
+	/**
+	 * Set the left margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @param marginLeft
+	 *            the size of the left margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public void setMarginLeft(double marginLeft) {
+		if (marginLeft == 0) {
+			mElement.removeAttribute(FoMarginLeftAttribute.ATTRIBUTE_NAME
+					.getQName());
+		} else {
+			mElement.setFoMarginLeftAttribute(getInchValue(marginLeft));
+		}
+	}
+
+	/**
+	 * Get the size of the left margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @return the size of the left margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public double getMarginLeft() {
+		// get the value
+		String valueString = mElement.getFoMarginLeftAttribute();
+		// check if a value was returned
+		if (valueString == null) {
+			// if not use the default length
+			valueString = DEFAULT_LENGTH;
+		}
+		// return the converted value
+		return Length.parseDouble(valueString, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the right margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @param marginRight
+	 *            the size of the right margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public void setMarginRight(double marginRight) {
+		if (marginRight == 0) {
+			mElement.removeAttribute(FoMarginRightAttribute.ATTRIBUTE_NAME
+					.getQName());
+		} else {
+			mElement.setFoMarginRightAttribute(getInchValue(marginRight));
+		}
+	}
+
+	/**
+	 * Get the size of the right margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @return the size of the right margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public double getMarginRight() {
+		// get the value
+		String valueString = mElement.getFoMarginRightAttribute();
+		// check if a value was returned
+		if (valueString == null) {
+			// if not use the default length
+			valueString = DEFAULT_LENGTH;
+		}
+		// return the converted value
+		return Length.parseDouble(valueString, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the top margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @param marginTop
+	 *            the size of the right margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public void setMarginTop(double marginTop) {
+		if (marginTop == 0) {
+			mElement.removeAttribute(FoMarginTopAttribute.ATTRIBUTE_NAME
+					.getQName());
+		} else {
+			mElement.setFoMarginTopAttribute(getInchValue(marginTop));
+		}
+	}
+
+	/**
+	 * Get the size of the top margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @return the size of the top margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public double getMarginTop() {
+		// get the value
+		String valueString = mElement.getFoMarginTopAttribute();
+		// check if a value was returned
+		if (valueString == null) {
+			// if not use the default length
+			valueString = DEFAULT_LENGTH;
+		}
+		// return the converted value
+		return Length.parseDouble(valueString, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the bottom margin of this <code>ParagraphProperties</code>
+	 * 
+	 * @param marginBottom
+	 *            the size of the bottom margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public void setMarginBottom(double marginBottom) {
+		if (marginBottom == 0) {
+			mElement.removeAttribute(FoMarginBottomAttribute.ATTRIBUTE_NAME
+					.getQName());
+		} else {
+			mElement.setFoMarginBottomAttribute(getInchValue(marginBottom));
+		}
+	}
+
+	/**
+	 * Get the size of the bottom margin of this
+	 * <code>ParagraphProperties</code>
+	 * 
+	 * @return the size of the bottom margin (in Millimeter)
+	 * @since 0.7
+	 */
+	public double getMarginBottom() {
+		// get the value
+		String valueString = mElement.getFoMarginBottomAttribute();
+		// check if a value was returned
+		if (valueString == null) {
+			// if not use the default length
+			valueString = DEFAULT_LENGTH;
+		}
+		// return the converted value
+		return Length.parseDouble(valueString, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the text indention size of this <code>ParagraphProperties</code>
+	 * 
+	 * @param textIndent
+	 *            the size of the text indention (in Millimeter)
+	 * @since 0.7
+	 */
+	public void setTextIndent(double textIndent) {
+		if (textIndent == 0) {
+			mElement.removeAttribute(FoTextIndentAttribute.ATTRIBUTE_NAME
+					.getQName());
+		} else {
+			mElement.setFoTextIndentAttribute(getInchValue(textIndent));
+		}
+	}
+
+	/**
+	 * Get the size of the text indention of this
+	 * <code>ParagraphProperties</code>
+	 * 
+	 * @return the size of the text indention (in Millimeter)
+	 * @since 0.7
+	 */
+	public double getTextIndent() {
+		// get the value
+		String valueString = mElement.getFoTextIndentAttribute();
+		// check if a value was returned
+		if (valueString == null) {
+			// if not use the default length
+			valueString = DEFAULT_LENGTH;
+		}
+		// return the converted value
+		return Length.parseDouble(valueString, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>ParagraphProperties</p> to represent the "style:paragraph-properties" in a style element.
+	 * <p>If there is no "style:paragraph-properties" defined in the style element, a new "style:paragraph-properties" element will be created.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>ParagraphProperties</p>
+	 */
+	public static ParagraphProperties getOrCreateParagraphProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style
+				.getOrCreatePropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+		return new ParagraphProperties((StyleParagraphPropertiesElement) properties);
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>ParagraphProperties</p> to represent the "style:paragraph-properties" in a style element.
+	 * <p>If there is no "style:paragraph-properties" defined in the style element, null will be returned.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>ParagraphProperties</p>;Null if there is no
+	 *         "style:paragraph-properties" defined
+	 */
+	public static ParagraphProperties getParagraphProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style.getPropertiesElement(OdfStylePropertiesSet.ParagraphProperties);
+		if (properties != null)
+			return new ParagraphProperties((StyleParagraphPropertiesElement) properties);
+		else
+			return null;
+	}
+	
+	/**
+	 * Returns the provided Millimeter value as Inch value
+	 * 
+	 * @param value
+	 *          the value to set the attribute value to (in Millimeter)
+	 */
+	private static String getInchValue(double value) {
+		// build the string for mm
+		final String mmValueString = value + Unit.MILLIMETER.abbr();
+		// convert the length to inch
+		final String inchValueString = Length.mapToUnit(mmValueString, Unit.INCH);
+
+		// return the value
+		return inchValueString;
+	}
+	public void setBreak(String breakPosition, String breakAttribute) {
+		if (breakPosition == null) {
+			return;
+		}
+		if (breakAttribute == null) {
+			if (breakPosition.equals("before")) {
+				mElement.removeAttribute(FoBreakBeforeAttribute.ATTRIBUTE_NAME
+						.getQName());
+			} else if (breakPosition.equals("after"))
+				mElement.removeAttribute(FoBreakAfterAttribute.ATTRIBUTE_NAME
+						.getQName());
+		} else if (breakPosition.equals("before")) {
+			mElement.setFoBreakBeforeAttribute(breakAttribute);
+		} else if (breakPosition.equals("after"))
+			mElement.setFoBreakAfterAttribute(breakAttribute);
+	}
+	public String getBreakBefore() {
+		return mElement.getFoBreakBeforeAttribute();
+	}
+	public String getBreakAfter() {
+		return mElement.getFoBreakAfterAttribute();
+	}
+	public int getPageNumber() {
+		return mElement.getStylePageNumberAttribute();
+	}
+	public void setPageNumber(int pageNumber) {
+		if (pageNumber > 0) {
+			mElement.setStylePageNumberAttribute(pageNumber);
+		} else {
+			mElement.removeAttribute("style:page-number");
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/StyleTypeDefinitions.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/StyleTypeDefinitions.java
new file mode 100644
index 0000000..8df1a80
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/StyleTypeDefinitions.java
@@ -0,0 +1,893 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+/**
+ * This class defines the common used types in style handling methods.
+ * 
+ * @since 0.3
+ */
+public class StyleTypeDefinitions {
+
+	private StyleTypeDefinitions() {
+
+	}
+
+	/**
+	 * Common used line style from users perspective
+	 * 
+	 */
+	public static enum LineStyle {
+		/**
+		 * no border
+		 */
+		NONE("none"),
+		/**
+		 * solid line
+		 */
+		SOLID("solid"),
+		/**
+		 * single line
+		 */
+		SINGLE("single"),
+		/**
+		 * double line
+		 */
+		DOUBLE("double"),
+		/**
+		 * bold line
+		 */
+		BOLD("bold"), DOTTED("dotted"), DOTTED_BOLD("dotted (bold)"), DASH("dash"), DASH_BOLD("dash (bold)"), LONG_DASH(
+				"long-dash"), LONG_DASH_BOLD("long-dash (bold)"), DOT_DASH("dot-dash"), DOT_DASH_BOLD("dot-dash (bold)"), DOT_DOT_DASH(
+				"dot-dot-dash"), DOT_DOT_DASH_BOLD("dot-dot-dash (bold)"), WAVE("wave"), WAVE_BOLD("wave (bold)"), DOUBLE_WAVE(
+				"double wave");
+
+		private String lineStyle;
+
+		LineStyle(String value) {
+			lineStyle = value;
+		}
+
+		@Override
+		public String toString() {
+			return lineStyle;
+		}
+
+	}
+
+	/**
+	 * Common used font style from users perspective
+	 * 
+	 */
+	public static enum FontStyle {
+		REGULAR("Regular"), ITALIC("Italic"), BOLD("Bold"), BOLDITALIC("Bold_Italic");
+
+		private String fontStyle;
+
+		FontStyle(String style) {
+			this.fontStyle = style;
+		}
+
+		@Override
+		public String toString() {
+			return fontStyle;
+		}
+	}
+
+	/**
+	 * Common used font adjustment style from users perspective
+	 */
+	public static enum AdjustmentStyle {
+		CENTER("center"), LEFT("left"), RIGHT("right");
+
+		private String adjustment = "left";
+
+		AdjustmentStyle(String value) {
+			this.adjustment = value;
+		}
+
+		public String toString() {
+			return adjustment;
+		}
+
+	}
+
+	/**
+	 * Common used font text line position from users perspective.
+	 * <p>Currently, only support underline and strike through.
+	 * 
+	 */
+	public static enum TextLinePosition {
+		REGULAR("Regular"), THROUGH("Through"), UNDER("Under"), THROUGHUNDER("Through_Under");
+
+		private String textLineStyle;
+
+		TextLinePosition(String style) {
+			this.textLineStyle = style;
+		}
+
+		@Override
+		public String toString() {
+			return textLineStyle;
+		}
+	}
+
+	/**
+	 * Common used style of line lining through text from users perspective
+	 * 
+	 */
+	public static enum LineThroughStyle {
+		NONE("none"), SINGLE("single"), DOUBLE("double"), BOLD("bold"), WITH_X("with X"), WITH_SLASH("with /");
+
+		private String value;
+
+		LineThroughStyle(String style) {
+			this.value = style;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	/**
+	 * Common used horizontal alignment type from users perspective
+	 * 
+	 */
+	public static enum HorizontalAlignmentType {
+		DEFAULT("default"), LEFT("left"), RIGHT("right"), CENTER("center"), JUSTIFY("justify"), FILLED("filled");
+
+		private String value;
+
+		HorizontalAlignmentType(String style) {
+			this.value = style;
+		}
+
+		public static HorizontalAlignmentType enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return null;
+
+			for (HorizontalAlignmentType aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			throw new RuntimeException("Unsupported Horizontal Alignment Type!");
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+
+		public String getAlignmentString() {
+			if (value.equals("left"))
+				return "start";
+			if (value.equals("right"))
+				return "end";
+			if (value.equals("filled"))
+				return "start";
+			return value;
+		}
+	}
+
+	/**
+	 * Common used vertical alignment type from users perspective
+	 * 
+	 */
+	public static enum VerticalAlignmentType {
+		DEFAULT("default"), TOP("top"), MIDDLE("middle"), BOTTOM("bottom");
+
+		private String value;
+
+		VerticalAlignmentType(String style) {
+			this.value = style;
+		}
+
+		public static VerticalAlignmentType enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return null;
+
+			for (VerticalAlignmentType aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			throw new RuntimeException("Unsupported Vertical Alignment Type!");
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	/**
+	 * Emphasis mark type from ODF specification perspective
+	 * 
+	 */
+	public static enum OdfEmphasisMarkType {
+		NONE("none"), ACCENT_ABOVE("accent above"), DOT_ABOVE("dot above"), CIRCLE_ABOVE("circle above"), DISC_ABOVE(
+				"disc above"), ACCENT_BELOW("accent below"), DOT_BELOW("dot below"), CIRCLE_BELOW("circle below"), DISC_BELOW(
+				"disc below");
+
+		private String value;
+
+		OdfEmphasisMarkType(String style) {
+			this.value = style;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	/**
+	 * Line style from ODF specification perspective
+	 * 
+	 */
+	public static enum OdfLineStyle {
+		DASH("dash"), DOT_DASH("dot-dash"), DOT_DOT_DASH("dot-dot-dash"), DOTTED("dotted"), LONG_DASH("long-dash"), NONE(
+				"none"), SOLID("solid"), WAVE("wave");
+
+		private String lineStyle;
+
+		OdfLineStyle(String value) {
+			lineStyle = value;
+		}
+
+		@Override
+		public String toString() {
+			return lineStyle;
+		}
+	}
+
+	/**
+	 * The supported line measurement till now
+	 * 
+	 */
+	public static enum SupportedLinearMeasure {
+		//1in = 2.54cm = 25.4 mm = 72pt = 6pc
+		PT("pt") {
+			public double toINs(double measure) {
+				return measure / 72;
+			}
+
+			public double toPTs(double measure) {
+				return measure;
+			}
+			
+			public double toCMs(double measure) {
+				return measure / 28.3465;
+			}
+			
+			public double convert(double measure, SupportedLinearMeasure measureUnit) {
+				return measureUnit.toPTs(measure);
+			}
+		},
+		IN("in") {
+			public double toINs(double measure) {
+				return measure;
+			}
+
+			public double toPTs(double measure) {
+				return 72 * measure;
+			}
+
+			public double toCMs(double measure) {
+				return 2.54 * measure;
+			}
+			
+			public double convert(double measure, SupportedLinearMeasure measureUnit) {
+				return measureUnit.toINs(measure);
+			}
+		},
+		CM("cm") {
+			public double toINs(double measure) {
+				return measure / 2.54;
+			}
+
+			public double toPTs(double measure) {
+				return measure * 28.3465;
+			}
+			
+			public double toCMs(double measure) {
+				return measure;
+			}
+			
+			public double convert(double measure, SupportedLinearMeasure measureUnit) {
+				return measureUnit.toPTs(measure);
+			}
+		};
+//		MM("mm") {
+//			
+//		}
+
+		private String value;
+
+		SupportedLinearMeasure(String style) {
+			this.value = style;
+		}
+
+		/**
+		 * Convert the given linear measure in the given unit to this unit.
+		 * 
+		 * @param measure
+		 *            the measure value in the given <code>measureUnit</code>
+		 * @param measureUnit
+		 *            the unit of the <code>measure</code> argument
+		 * @return the converted measure in this unit.
+		 */
+		public double convert(double measure, SupportedLinearMeasure measureUnit) {
+			throw new AbstractMethodError();
+		}
+
+		/**
+		 * Convert other measure to inch(IN) measure.
+		 * 
+		 * @param measure
+		 *            the measure
+		 * @return the converted measure
+		 * @see #convert
+		 */
+		public double toINs(double measure) {
+			throw new AbstractMethodError();
+		}
+
+		/**
+		 * Convert other measure to point(PT) measure.
+		 * 
+		 * @param measure
+		 *            the measure
+		 * @return the converted measure
+		 * @see #convert
+		 */
+		public double toPTs(double measure) {
+			throw new AbstractMethodError();
+		}
+		
+		/**
+		 * Convert other measure to centimeter(CM) measure.
+		 * 
+		 * @param measure
+		 *            the measure
+		 * @return the converted measure
+		 * @see #convert
+		 */
+		public double toCMs(double measure) {
+			throw new AbstractMethodError();
+		}
+
+		public static SupportedLinearMeasure enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return null;
+
+			for (SupportedLinearMeasure aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			throw new RuntimeException("Unsupported Linear Measure!");
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	/**
+	 * 
+	 * Common used border types from users perspective
+	 * 
+	 */
+	public static enum CellBordersType {
+		TOP("top"), BOTTOM("bottom"), LEFT("left"), RIGHT("right"), DIAGONALBLTR("diagonal_bltr"), DIAGONALTLBR(
+				"diagonal_tlbr"), NONE("none"), ALL_FOUR("all_four"), LEFT_RIGHT("left_right"), TOP_BOTTOM("top_bottom"), DIAGONAL_LINES(
+				"diagonal_lines");
+
+		private String value;
+
+		CellBordersType(String style) {
+			this.value = style;
+		}
+
+		public static CellBordersType enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return null;
+
+			for (CellBordersType aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			throw new RuntimeException("Unsupported Cell Borders Type!");
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+
+	}
+
+	/**
+	 * Line type from ODF specification perspective
+	 * 
+	 */
+	public static enum LineType {
+		DOUBLE("double"), NONE("none"), SINGLE("single");
+
+		private String lineType;
+
+		LineType(String type) {
+			this.lineType = type;
+		}
+
+		public static LineType enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return NONE;
+
+			for (LineType aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return NONE;
+		}
+
+		@Override
+		public String toString() {
+			return lineType;
+		}
+	}
+	
+	/**
+	 * Anchor type from users perspective.
+	 * 
+	 * @since 0.5.5
+	 */
+	public static enum AnchorType {
+		TO_PAGE("page"), 
+		TO_PARAGRAPH("paragraph"), 
+		TO_CHARACTER("char"),
+		AS_CHARACTER("as-char"),
+		TO_FRAME("frame");
+
+		private String anchorType;
+
+		AnchorType(String type) {
+			this.anchorType = type;
+		}
+
+		public static AnchorType enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return TO_PAGE;
+
+			for (AnchorType aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return TO_PAGE;
+		}
+
+		@Override
+		public String toString() {
+			return anchorType;
+		}
+	}
+
+	/**
+	 * Position vertical relative from ODF specification perspective
+	 * 
+	 * @since 0.5.5
+	 */
+	public static enum VerticalRelative
+	{
+		PAGE("page"), 
+		PAGE_CONTENT("page-content"),
+		FRAME("frame"),
+		FRAME_CONTENT("frame-content"),
+		PARAGRAPH("paragraph"),
+		PARAGRAPH_CONTENT("paragraph-content"),
+		CHAR("char"),
+		LINE("line"),
+		BASELINE("baseline"),
+		TEXT("text");
+
+		private String relativeType;
+
+		VerticalRelative(String type) {
+			this.relativeType = type;
+		}
+
+		public static VerticalRelative enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return PAGE;
+
+			for (VerticalRelative aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return PAGE;
+		}
+
+		@Override
+		public String toString() {
+			return relativeType;
+		}
+	}
+	
+	/**
+	 * Position horizontal relative from ODF specification perspective
+	 * @since 0.5.5
+	 */
+	public static enum HorizontalRelative
+	{
+		PAGE("page"), 
+		PAGE_CONTENT("page-content"),
+		FRAME("frame"),
+		FRAME_CONTENT("frame-content"),
+		PARAGRAPH("paragraph"),
+		PARAGRAPH_CONTENT("paragraph-content"),
+		CHAR("char"),
+		PAGE_START_MARGIN("page-start-margin"),
+		PAGE_END_MARGIN("page-end-margin"),
+		FRAME_START_MARGIN("frame-start-margin"),
+		FRAME_END_MARGIN("frame-end-margin"),
+		PARAGRAPH_START_MARGIN("paragraph-start-margin"),
+		PARAGRAPH_END_MARGIN("paragraph-end-margin");
+
+		private String relativeType;
+
+		HorizontalRelative(String type) {
+			this.relativeType = type;
+		}
+
+		public static HorizontalRelative enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return PAGE;
+
+			for (HorizontalRelative aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return PAGE;
+		}
+
+		@Override
+		public String toString() {
+			return relativeType;
+		}
+	}
+	
+	/**
+	 * specifies the vertical alignment of a frame relative to a specific area.
+	 * 
+	 * @since 0.5.5
+	 */
+	public static enum FrameVerticalPosition
+	{
+		TOP("top"),
+		MIDDLE("middle"),
+		BOTTOM("bottom"),
+		FROMTOP("from-top"),
+		BELOW("below");
+
+		private String verticalPos;
+
+		FrameVerticalPosition(String type) {
+			this.verticalPos = type;
+		}
+
+		public static FrameVerticalPosition enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return MIDDLE;
+
+			for (FrameVerticalPosition aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return MIDDLE;
+		}
+
+		@Override
+		public String toString() {
+			return verticalPos;
+		}
+	}
+	
+	/**
+	 * specifies the horizontal alignment of a frame relative to a specific area.
+	 * 
+	 * @since 0.5.5
+	 */
+	public static enum FrameHorizontalPosition
+	{
+		LEFT("left"),
+		CENTER("center"),
+		RIGHT("right"),
+		FROMLEFT("from-left"),
+		INSIDE("inside"),
+		OUTSIDE("outside"),
+		FROMINSIDE("from-inside");
+
+		private String horizontalPos;
+
+		FrameHorizontalPosition(String type) {
+			this.horizontalPos = type;
+		}
+
+		public static FrameHorizontalPosition enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return CENTER;
+
+			for (FrameHorizontalPosition aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return CENTER;
+		}
+
+		@Override
+		public String toString() {
+			return horizontalPos;
+		}
+	}
+	
+
+	/**
+	 * Line width from ODF specification perspective
+	 * 
+	 */
+	public static enum OdfLineWidth {
+		AUTO("auto"), BOLD("bold"), MEDIUM("medium"), NORMAL("normal"), THICK("thick"), THIN("thin");
+
+		private String lineWidth;
+
+		OdfLineWidth(String type) {
+			this.lineWidth = type;
+		}
+
+		@Override
+		public String toString() {
+			return lineWidth;
+		}
+	}
+
+	/**
+	 * Font style from ODF specification perspective
+	 * 
+	 */
+	public static enum OdfFontStyle {
+		ITALIC("italic"), NORMAL("normal"), OBLIQUE("oblique");
+
+		private String value;
+
+		OdfFontStyle(String style) {
+			this.value = style;
+		}
+
+		public static OdfFontStyle enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return NORMAL;
+
+			for (OdfFontStyle aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return NORMAL;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	/**
+	 * Font weight from ODF specification perspective
+	 * 
+	 */
+	public static enum OdfFontWeight {
+		_100("100"), _200("200"), _300("300"), _400("400"), _500("500"), _600("600"), _700("700"), _800("800"), _900(
+				"900"), BOLD("bold"), NORMAL("normal");
+		private String value;
+
+		OdfFontWeight(String style) {
+			this.value = style;
+		}
+
+		public static OdfFontWeight enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return NORMAL;
+
+			for (OdfFontWeight aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return NORMAL;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+	
+	/**
+	 * 
+	 * the fill style for a graphic object. 
+	 *
+	 */
+	public static enum OdfDrawFill {
+		/**
+		 * the drawing object is filled with the bitmap specified by the draw:fill-image-name attribute.
+		 */
+		BITMAP("bitmap"),
+		/**
+		 * the drawing object is filled with the gradient specified by the draw:fill-gradient-name attribute.
+		 */
+		GRADIENT("gradient"),
+		/**
+		 * the drawing object is filled with the hatch specified by the draw:fill-hatch-name attribute. 
+		 */
+		HATCH("hatch"),
+		/**
+		 * the drawing object is not filled.
+		 */
+		NONE("none"),
+		/**
+		 * the drawing object is filled with the color specified by the draw:fill-color attribute.
+		 */
+		SOLID("solid");  		
+
+		private String value;
+
+		OdfDrawFill(String style) {
+			this.value = style;
+		}
+
+		public static OdfDrawFill enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return NONE;
+
+			for (OdfDrawFill aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return NONE;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+	
+	/**
+	 * 
+	 * The style of the stroke from ODF perspective
+	 *
+	 */
+	public static enum OdfDrawStroke {
+		/**
+		 * stroke referenced by a draw:stroke-dash attribute of a style on the object is drawn
+		 */
+		DASH("dash"),
+		/**
+		 * no stroke is drawn.
+		 */
+		NONE("none"),
+		/**
+		 * solid stroke is drawn.
+		 */
+		SOLID("solid");
+		
+		private String value;
+
+		OdfDrawStroke(String style) {
+			this.value = style;
+		}
+
+		public static OdfDrawStroke enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return NONE;
+
+			for (OdfDrawStroke aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return NONE;
+		}
+
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	public static enum PrintOrientation {
+		LANDSCAPE("landscape"), PORTRAIT("portrait");
+
+		private String printOrientaiton;
+
+		PrintOrientation(String orientation) {
+			this.printOrientaiton = orientation;
+		}
+
+		public static PrintOrientation enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return PORTRAIT;
+
+			for (PrintOrientation aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return PORTRAIT;
+		}
+
+		@Override
+		public String toString() {
+			return printOrientaiton;
+		}
+	}
+
+	public static enum WritingMode {
+		LRTB("lr-tb"), RLTB("rl-tb"), TBRL("tb-rl"), TBLR("tb-lr"), LR("lr"), RL(
+				"rl"), TB("tb"), PAGE("page");
+
+		private String mode;
+
+		WritingMode(String mode) {
+			this.mode = mode;
+		}
+
+		public static WritingMode enumValueOf(String aValue) {
+			if ((aValue == null) || (aValue.length() == 0))
+				return PAGE;
+
+			for (WritingMode aIter : values()) {
+				if (aValue.equals(aIter.toString())) {
+					return aIter;
+				}
+			}
+			return PAGE;
+		}
+
+		@Override
+		public String toString() {
+			return mode;
+		}
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/TOCStyle.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TOCStyle.java
new file mode 100644
index 0000000..7402b9d
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TOCStyle.java
@@ -0,0 +1,84 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+ */
+
+package org.odftoolkit.simple.style;
+
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+/**
+ * This class represents the additional paragraph styles list that you want to
+ * include in the TOC.
+ * 
+ * @since 0.8.6
+ */
+public class TOCStyle {
+	HashMap<Integer, String> stylelist=new HashMap<Integer, String>();
+	
+	/**
+	 * Create an instance of TOCStyle
+	 * @param doc 
+	 */
+	public TOCStyle() {
+		
+	}
+
+	/**
+	 * Add an additional paragraph style to the style list that you want to
+	 * include in the TOC.
+	 * 
+	 * @param styleName
+	 *            - the style name
+	 * @param level
+	 *            - the outline level of this style, level value is: [1,10]
+	 */
+	public void addStyle(String styleName, int level) {
+		if ((level >= 1) && (level <= 10)) {
+			
+			stylelist.put(level, styleName);
+		
+		} else {
+			Logger.getLogger(TOCStyle.class.getName()).log(
+					Level.SEVERE,
+					"Outline level:" + level + " is out of range[1,10] "
+							+ "TOCStyle.addStyle failed.");
+			throw new RuntimeException("Outline level:" + level
+					+ " is out of range[1,10] " + "TOCStyle.addStyle failed.");
+		}
+	}
+	public HashMap<Integer, String> getStyle(){
+		return stylelist;
+	}
+	@Override
+	public String toString() {
+		StringBuilder strBuilder = new StringBuilder();
+		int size=stylelist.size();
+		strBuilder.append("The additional paragraph styles list that you want to include in the TOC.\n");
+		for(int i=0;i<size;i++){
+			strBuilder.append("Outline Level:"+ (i+1));	
+			String styleName=stylelist.get(i+1);
+			strBuilder.append(" Style Name:"+styleName);
+			strBuilder.append("\n");
+		}
+		return strBuilder.toString();
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/TableCellProperties.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TableCellProperties.java
new file mode 100644
index 0000000..e8ed94a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TableCellProperties.java
@@ -0,0 +1,962 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBackgroundColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoWrapOptionAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthTopAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalBlTrAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalBlTrWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalTlBrAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleDiagonalTlBrWidthsAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleVerticalAlignAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.type.Color;
+
+/**
+ * This class represents the table cell style settings. It provides methods to
+ * access borders styles. More functions will be added latter.
+ * 
+ * <p>
+ * This class is a corresponded high level class for element
+ * "style:table-cell-properties". It provides methods to access the attributes
+ * and children of "style:table-cell-properties".
+ * 
+ * @since 0.3
+ */
+public class TableCellProperties {
+
+	// fo:background-color
+	// fo:border
+	// fo:border-bottom
+	// fo:border-left
+	// fo:border-right
+	// fo:border-top
+	// fo:padding
+	// fo:padding-bottom
+	// fo:padding-left
+	// fo:padding-right
+	// fo:padding-top
+	// fo:wrap-option
+	// style:border-line-width
+	// style:border-line-width-bottom
+	// style:border-line-width-left
+	// style:border-line-width-right
+	// style:border-line-width-top
+	// style:cell-protect
+	// style:decimal-places
+	// style:diagonal-bl-tr
+	// style:diagonal-bl-tr-widths
+	// style:diagonal-tl-br
+	// style:diagonal-tl-br-widths
+	// style:direction
+	// style:glyph-orientation-vertical
+	// style:print-content
+	// style:repeat-content
+	// style:rotation-align
+	// style:rotation-angle
+	// style:shadow
+	// style:shrink-to-fit
+	// style:text-align-source
+	// style:vertical-align
+	// style:writing-mode
+
+	// String backgroundColor;
+	String padding;
+	String paddingBottom;
+	String paddingLeft;
+	String paddingRight;
+	String paddingTop;
+	String cellProtect;
+	String decimalPlaces;
+	String direction;
+	String glyphOrientationVertical;
+	String printContent;
+	String repeatContent;
+	String rotationAlign;
+	String rotationAngle;
+	String shadow;
+	String shrinkToFit;
+	String textAlignSource;
+	String verticalAlign;
+	String writingMode;
+	// String wrapOption;
+
+	// String border;
+	// String borderBottom;
+	// String borderLeft;
+	// String borderRight;
+	// String borderTop;
+	// String diagonalBlTr;
+	// String diagonalTlBr;
+	// String borderLineWidth;
+	// String borderLineWidthBottom;
+	// String borderLineWidthLeft;
+	// String borderLineWidthRight;
+	// String borderLineWidthTop;
+	// String diagonalBlTrWidths;
+	// String diagonalTlBrWidths;
+	
+	BorderPropertiesImpl mBorderPropertiesHandler;
+
+	StyleTableCellPropertiesElement mElement;
+
+	/**
+	 * Create an instance of TableCellProperties
+	 */
+	protected TableCellProperties() {
+	}
+
+	/**
+	 * Create an instance of TableCellProperties from an element
+	 * <style:table-cell-properties>
+	 * 
+	 * @param properties
+	 *            - the element of style:table-cell-properties
+	 */
+	protected TableCellProperties(StyleTableCellPropertiesElement properties) {
+		mElement = properties;
+		mBorderPropertiesHandler = new BorderPropertiesImpl(mElement);
+	}
+
+	/**
+	 * Set the border style.
+	 * <p>
+	 * The first parameter <code>bordersType</code> describes which borders you
+	 * want to apply the style to, e.g. up border, bottom border, left border,
+	 * right border, diagonal lines or four borders.
+	 * <p>
+	 * The border style information will be removed if the parameter
+	 * <code>bordersType</code> is NONE.
+	 * 
+	 * @param bordersType
+	 *            - the type of the borders
+	 * @param border
+	 *            - the border style description
+	 */
+	public void setBorders(StyleTypeDefinitions.CellBordersType bordersType, Border border) {
+		switch (bordersType) {
+		case BOTTOM:
+			setBottomBorder(border);
+			break;
+		case LEFT:
+			setLeftBorder(border);
+			break;
+		case RIGHT:
+			setRightBorder(border);
+			break;
+		case TOP:
+			setTopBorder(border);
+			break;
+		case DIAGONALBLTR:
+			setDiagonalBlTr(border);
+			break;
+		case DIAGONALTLBR:
+			setDiagonalTlBr(border);
+			break;
+		case ALL_FOUR:
+			setBorder(border);
+			break;
+		case LEFT_RIGHT:
+			setLeftBorder(border);
+			// border.switchInnerLineOuterLineWidth();
+			setRightBorder(border);
+			break;
+		case TOP_BOTTOM:
+			setTopBorder(border);
+			// border.switchInnerLineOuterLineWidth();
+			setBottomBorder(border);
+			break;
+		case DIAGONAL_LINES:
+			setDiagonalBlTr(border);
+			setDiagonalTlBr(border);
+			break;
+		case NONE:
+			mElement.removeAttribute(StyleBorderLineWidthAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthBottomAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderBottomAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthTopAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderTopAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthLeftAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderLeftAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleBorderLineWidthRightAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoBorderRightAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalBlTrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalBlTrAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalTlBrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalTlBrAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	/**
+	 * Return the border setting for all four borders.
+	 * <p>
+	 * Null will be returned if there is no border setting for all four borders.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getBorder() {
+		return mBorderPropertiesHandler.getBorder();
+	}
+
+	/**
+	 * Return the border setting for the top border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the top border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getTopBorder() {
+		return mBorderPropertiesHandler.getTopBorder();
+	}
+
+	/**
+	 * Return the border setting for the left border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the left border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getLeftBorder() {
+		return mBorderPropertiesHandler.getLeftBorder();
+	}
+
+	/**
+	 * Return the border setting for the right border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the right border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getRightBorder() {
+		return mBorderPropertiesHandler.getRightBorder();
+	}
+
+	// fo:border-bottom
+	// style:border-line-width-bottom
+	/**
+	 * Return the border setting for the bottom border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the bottom
+	 * border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getBottomBorder() {
+		return mBorderPropertiesHandler.getBottomBorder();
+	}
+
+	/**
+	 * Return the border setting for the diagonal from bottom left to top right.
+	 * <p>
+	 * Null will be returned if there is no border setting for the diagonal from
+	 * bottom left to top right.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getDiagonalBlTr() {
+		Border border = new Border();
+		String borderAttr = mElement.getStyleDiagonalBlTrAttribute();
+		String borderWidth = mElement.getStyleDiagonalBlTrWidthsAttribute();
+		if (borderWidth == null)
+			// some ODF version uses diagonal-bl-tr-width while schema use
+			// diagonal-bl-tr-widths
+			borderWidth = mElement.getAttribute("style:diagonal-bl-tr-width");
+
+		if (borderAttr == null || borderAttr.length() == 0)
+			return null;
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+	/**
+	 * Return the border setting for the diagonal from top left to bottom right.
+	 * <p>
+	 * Null will be returned if there is no border setting for the diagonal from
+	 * top left to bottom right.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getDiagonalTlBr() {
+		Border border = new Border();
+		String borderAttr = mElement.getStyleDiagonalTlBrAttribute();
+		String borderWidth = mElement.getStyleDiagonalTlBrWidthsAttribute();
+		if (borderWidth == null)
+			// some ODF version uses diagonal-tl-br-width while schema use
+			// diagonal-tl-br-widths
+			borderWidth = mElement.getAttribute("style:diagonal-tl-br-width");
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+	// fo:border-bottom
+	// style:border-line-width-bottom
+	/**
+	 * Set the border definition for the bottom border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the bottom border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the bottom border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setBottomBorder(Border border) {
+		mBorderPropertiesHandler.setBottomBorder(border);
+	}
+
+	// fo:border-top
+	// style:border-line-width-top
+	/**
+	 * Set the border definition for the top border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the top border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the top border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setTopBorder(Border border) {
+		mBorderPropertiesHandler.setTopBorder(border);
+	}
+
+	// fo:border-left
+	// style:border-line-width-left
+	/**
+	 * Set the border definition for the left border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the left border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the left border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setLeftBorder(Border border) {
+		mBorderPropertiesHandler.setLeftBorder(border);
+	}
+
+	// fo:border-right
+	// style:border-line-width-right
+	/**
+	 * Set the border definition for the right border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the right border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the right border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setRightBorder(Border border) {
+		mBorderPropertiesHandler.setRightBorder(border);
+	}
+
+	// style:diagonal-bl-tr
+	// style:diagonal-bl-tr-widths
+	/**
+	 * Set the border definition for the diagonal from bottom left to top right.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the diagonal from bottom left to top right will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the diagonal from bottom left to top right will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setDiagonalBlTr(Border border) {
+		if (border == null) {
+			mElement.removeAttribute(StyleDiagonalBlTrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalBlTrAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			mElement.setStyleDiagonalBlTrWidthsAttribute(border.getDoubleLineWidthDescription());
+			mElement.setStyleDiagonalBlTrAttribute(border.getBorderDescription());
+			break;
+		case SINGLE:
+			mElement.setStyleDiagonalBlTrAttribute(border.getBorderDescription());
+			break;
+		case NONE:
+			mElement.removeAttribute(StyleDiagonalBlTrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalBlTrAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	// style:diagonal-tl-br
+	// style:diagonal-tl-br-widths
+	/**
+	 * Set the border definition for the diagonal from top left to bottom right.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the diagonal from top left to bottom right will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the diagonal from top left to bottom right will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setDiagonalTlBr(Border border) {
+		if (border == null) {
+			mElement.removeAttribute(StyleDiagonalTlBrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalTlBrAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			mElement.setStyleDiagonalTlBrWidthsAttribute(border.getDoubleLineWidthDescription());
+			mElement.setStyleDiagonalTlBrAttribute(border.getBorderDescription());
+			break;
+		case SINGLE:
+			mElement.setStyleDiagonalTlBrAttribute(border.getBorderDescription());
+			break;
+		case NONE:
+			mElement.removeAttribute(StyleDiagonalTlBrWidthsAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleDiagonalTlBrAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	// fo:border
+	// style:border-line-width
+	/**
+	 * Set the border definition for all four borders.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * all four borders will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for all four borders will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setBorder(Border border) {
+		mBorderPropertiesHandler.setBorder(border);
+	}
+
+	// fo:background-color
+	/**
+	 * Set the background color.
+	 * <p>
+	 * If the parameter <code>aColor</code> is null, the background color
+	 * definition will be removed.
+	 * 
+	 * @param aColor
+	 *            - the background color
+	 */
+	public void setBackgroundColor(Color aColor) {
+		if (aColor == null) {
+                    mElement.removeAttribute(FoBackgroundColorAttribute.ATTRIBUTE_NAME.getQName());
+                } else {
+                    mElement.setFoBackgroundColorAttribute(aColor.toString());
+                }
+	}
+
+	// //style:cell-protect
+	// public void setProtected(boolean isProtected)
+	// {
+	//		
+	// }
+	//	
+	// //style:cell-protect
+	// public boolean isProctected()
+	// {
+	// return false;
+	// }
+
+	/**
+	 * Return the background color.
+	 * <p>
+	 * Null will be returned if there is no the background color definition or
+	 * the background color definition is not valid.
+	 * 
+	 * @return the background color
+	 */
+	public Color getBackgroundColor() {
+		String property = mElement.getFoBackgroundColorAttribute();
+		Color color = null;
+		try {
+			color = Color.valueOf(property);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellProperties.class.getName()).log(Level.WARNING, e.getMessage());
+		}
+		return color;
+	}
+
+	// fo:wrap-option
+	/**
+	 * Set the text is allowed to be wrapped.
+	 * <p>
+	 * If the parameter <code>isWrapped</code> is true, the text will be allowed
+	 * to be wrapped. Or else, the text is not allowed to be wrapped.
+	 * 
+	 * @param isWrapped
+	 *            - the wrapped option
+	 */
+	public void setWrapped(boolean isWrapped) {
+		if (isWrapped) {
+			mElement.setFoWrapOptionAttribute(FoWrapOptionAttribute.Value.WRAP.toString());
+		} else {
+			mElement.setFoWrapOptionAttribute(FoWrapOptionAttribute.Value.NO_WRAP.toString());
+		}
+	}
+
+	// style:vertical-align
+	/**
+	 * Set the vertical alignment.
+	 * <p>
+	 * If the parameter <code>alignType</code> is null or DEFAULT, the vertical
+	 * alignment definition will be removed.
+	 * 
+	 * @param alignType
+	 *            - the vertical alignment
+	 */
+	public void setVerticalAlignment(StyleTypeDefinitions.VerticalAlignmentType alignType) {
+		if (alignType == StyleTypeDefinitions.VerticalAlignmentType.DEFAULT || alignType == null)
+			mElement.removeAttribute(StyleVerticalAlignAttribute.ATTRIBUTE_NAME.getQName());
+		else
+			mElement.setStyleVerticalAlignAttribute(alignType.toString());
+	}
+
+	// style:vertical-align
+	/**
+	 * Return the vertical alignment.
+	 * <p>
+	 * If there is no vertical alignment definition, null will be returned.
+	 * 
+	 * @return the vertical alignment
+	 */
+	public StyleTypeDefinitions.VerticalAlignmentType getVerticalAlignment() {
+		String alignType = mElement.getStyleVerticalAlignAttribute();
+		if ((alignType == null) || (alignType.length() == 0))
+			return null;
+
+		StyleVerticalAlignAttribute.Value value = StyleVerticalAlignAttribute.Value.enumValueOf(alignType);
+
+		switch (value) {
+		case AUTO:
+			return StyleTypeDefinitions.VerticalAlignmentType.DEFAULT;
+		case AUTOMATIC:
+			return StyleTypeDefinitions.VerticalAlignmentType.DEFAULT;
+		case BASELINE:
+			return StyleTypeDefinitions.VerticalAlignmentType.BOTTOM;
+		case BOTTOM:
+			return StyleTypeDefinitions.VerticalAlignmentType.BOTTOM;
+		case MIDDLE:
+			return StyleTypeDefinitions.VerticalAlignmentType.MIDDLE;
+		case TOP:
+			return StyleTypeDefinitions.VerticalAlignmentType.TOP;
+		}
+		return null;
+	}
+
+	// fo:wrap-option
+	/**
+	 * Return whether the text is allowed to be wrapped.
+	 * <p>
+	 * Return true if the text is allowed to be wrapped. Or else, return false.
+	 * 
+	 * @return a boolean value to indicate whether the text is allowed to be
+	 *         wrapped
+	 */
+	public Boolean isWrapped() {
+		String attr = mElement.getFoWrapOptionAttribute();
+		if ((attr == null) || (attr.length() == 0))
+			return false;
+
+		FoWrapOptionAttribute.Value value = FoWrapOptionAttribute.Value.enumValueOf(attr);
+
+		switch (value) {
+		case NO_WRAP:
+			return false;
+		case WRAP:
+			return true;
+		}
+		return null;
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>TableCellProperties</p> to represent the "style:table-cell-properties" in a style element.
+	 * <p>If there is no "style:table-cell-properties" defined in the style element, a new "style:table-cell-properties" element will be created.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>TableCellProperties</p>
+	 */
+	public static TableCellProperties getOrCreateTableCellProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style
+				.getOrCreatePropertiesElement(OdfStylePropertiesSet.TableCellProperties);
+		return new TableCellProperties((StyleTableCellPropertiesElement) properties);
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>TableCellProperties</p> to represent the "style:table-cell-properties" in a style element.
+	 * <p>If there is no "style:table-cell-properties" defined in the style element, null will be returned.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>TableCellProperties</p>;Null if there is no
+	 *         "style:table-cell-properties" defined
+	 */
+	public static TableCellProperties getTableCellProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style.getPropertiesElement(OdfStylePropertiesSet.TableCellProperties);
+		if (properties != null)
+			return new TableCellProperties((StyleTableCellPropertiesElement) properties);
+		else
+			return null;
+	}
+
+}
+
+class BorderPropertiesImpl {
+	
+	OdfStylePropertiesBase borderPropertiesElement;
+	
+	public BorderPropertiesImpl(OdfStylePropertiesBase element)
+	{
+		borderPropertiesElement = element;
+	}
+
+	// fo:border-bottom
+	// style:border-line-width-bottom
+	/**
+	 * Set the border definition for the bottom border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the bottom border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the bottom border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setBottomBorder(Border border) {
+		if (border == null) {
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthBottomAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderBottomAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "style:border-line-width-bottom",border.getDoubleLineWidthDescription());
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-bottom",border.getBorderDescription());
+			break;
+		case SINGLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-bottom",border.getBorderDescription());
+			break;
+		case NONE:
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthBottomAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderBottomAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	// fo:border-top
+	// style:border-line-width-top
+	/**
+	 * Set the border definition for the top border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the top border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the top border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setTopBorder(Border border) {
+		if (border == null) {
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthTopAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderTopAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "style:border-line-width-top",border.getDoubleLineWidthDescription());
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-top",border.getBorderDescription());
+			break;
+		case SINGLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-top",border.getBorderDescription());
+			break;
+		case NONE:
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthTopAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderTopAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	// fo:border-left
+	// style:border-line-width-left
+	/**
+	 * Set the border definition for the left border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the left border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the left border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setLeftBorder(Border border) {
+		if (border == null) {
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthLeftAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderLeftAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "style:border-line-width-left",border.getDoubleLineWidthDescription());
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-left",border.getBorderDescription());
+			break;
+		case SINGLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-left",border.getBorderDescription());
+			break;
+		case NONE:
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthLeftAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderLeftAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	// fo:border-right
+	// style:border-line-width-right
+	/**
+	 * Set the border definition for the right border.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * the right border will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for the right border will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setRightBorder(Border border) {
+		if (border == null) {
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthRightAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderRightAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "style:border-line-width-right",border.getDoubleLineWidthDescription());
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-right",border.getBorderDescription());
+			break;
+		case SINGLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border-right",border.getBorderDescription());
+			break;
+		case NONE:
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthRightAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderRightAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	// fo:border
+	// style:border-line-width
+	/**
+	 * Set the border definition for all four borders.
+	 * <p>
+	 * If the parameter <code>border</code> is null, the border definition for
+	 * all four borders will be removed.
+	 * <p>
+	 * If the line type in the border definition is NONE, the border definition
+	 * for all four borders will be removed.
+	 * 
+	 * @param border
+	 *            - the border setting
+	 */
+	public void setBorder(Border border) {
+		if (border == null) {
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderAttribute.ATTRIBUTE_NAME.getQName());
+			return;
+		}
+		switch (border.lineStyle) {
+		case DOUBLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "style:border-line-width",border.getDoubleLineWidthDescription());
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border",border.getBorderDescription());
+			break;
+		case SINGLE:
+			borderPropertiesElement.setAttributeNS(OdfDocumentNamespace.FO.getUri(), "fo:border",border.getBorderDescription());
+			break;
+		case NONE:
+			borderPropertiesElement.removeAttribute(StyleBorderLineWidthAttribute.ATTRIBUTE_NAME.getQName());
+			borderPropertiesElement.removeAttribute(FoBorderAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+	
+	/**
+	 * Return the border setting for all four borders.
+	 * <p>
+	 * Null will be returned if there is no border setting for all four borders.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getBorder() {
+		Border border = new Border();
+		String borderAttr = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.FO.getUri(), "border");
+		String borderWidth = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "border-line-width");
+
+		if (borderAttr == null || borderAttr.length() == 0)
+			return null;
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+	/**
+	 * Return the border setting for the top border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the top border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getTopBorder() {
+		Border border = new Border();
+		String borderAttr = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.FO.getUri(), "border-top");
+		String borderWidth = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "border-line-width-top");
+
+		if (borderAttr == null || borderAttr.length() == 0)
+			return getBorder();
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+	/**
+	 * Return the border setting for the left border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the left border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getLeftBorder() {
+		Border border = new Border();
+		String borderAttr = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.FO.getUri(), "border-left");
+		String borderWidth = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "border-line-width-left");
+
+		if (borderAttr == null || borderAttr.length() == 0)
+			return getBorder();
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+	/**
+	 * Return the border setting for the right border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the right border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getRightBorder() {
+		Border border = new Border();
+		String borderAttr = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.FO.getUri(), "border-right");
+		String borderWidth = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "border-line-width-right");
+
+		if (borderAttr == null || borderAttr.length() == 0)
+			return getBorder();
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+	// fo:border-bottom
+	// style:border-line-width-bottom
+	/**
+	 * Return the border setting for the bottom border.
+	 * <p>
+	 * Null will be returned if there is no border setting for the bottom
+	 * border.
+	 * 
+	 * @return the border setting
+	 */
+	public Border getBottomBorder() {
+		Border border = new Border();
+		String borderAttr = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.FO.getUri(), "border-bottom");
+		String borderWidth = borderPropertiesElement.getAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "border-line-width-bottom");
+
+		if (borderAttr == null || borderAttr.length() == 0) {
+			return getBorder();
+		}
+
+		border.setBorderByDescription(borderAttr);
+		if ((borderWidth != null) && (borderWidth.length() != 0)) {
+			border.setDoubleLineWidthByDescription(borderWidth);
+		}
+		return border;
+	}
+
+}
+
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/TableProperties.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TableProperties.java
new file mode 100644
index 0000000..15b5544
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TableProperties.java
@@ -0,0 +1,170 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.style;

+

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakAfterAttribute;

+import org.odftoolkit.odfdom.dom.attribute.fo.FoBreakBeforeAttribute;

+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;

+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;

+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;

+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;

+

+/**

+ * This class represents the table style settings. It provides methods to access

+ * or modify the formatting properties applied to tables. More functions will be

+ * added latter.

+ * 

+ * <p>

+ * This class is a corresponded high level class for element

+ * "style:table-properties". It provides methods to access the attributes and

+ * children of "style:table-properties".

+ * 

+ * @since 0.8

+ */

+public class TableProperties {

+	StyleTablePropertiesElement mElement;

+

+	/**

+	 * Create an instance of TableProperties

+	 */

+	protected TableProperties() {

+	}

+

+	/**

+	 * Create an instance of TableProperties from an element

+	 * <style:table-properties>

+	 * 

+	 * @param properties

+	 *            - the element of style:table-properties

+	 */

+	protected TableProperties(StyleTablePropertiesElement properties) {

+		mElement = properties;

+	}

+

+	/**

+	 * Set the break.

+	 * 

+	 * @param breakPosition

+	 *            the position to insert a break (before or after)

+	 * @param breakAttribute

+	 *            the attribute name (page or column)

+	 */

+	public void setBreak(String breakPosition, String breakAttribute) {

+		if (breakPosition == null) {

+			return;

+		}

+		if (breakAttribute == null) {

+			if (breakPosition.equals("before")) {

+				mElement.removeAttribute(FoBreakBeforeAttribute.ATTRIBUTE_NAME

+						.getQName());

+			} else if (breakPosition.equals("after"))

+				mElement.removeAttribute(FoBreakAfterAttribute.ATTRIBUTE_NAME

+						.getQName());

+		} else if (breakPosition.equals("before")) {

+			mElement.setFoBreakBeforeAttribute(breakAttribute);

+		} else if (breakPosition.equals("after"))

+			mElement.setFoBreakAfterAttribute(breakAttribute);

+	}

+

+	/**

+	 * Return the break property before the reference.

+	 * <p>

+	 * Null will be returned if there is no break setting before the reference.

+	 * 

+	 * @return - the break property; null if there is no break setting.

+	 */

+	public String getBreakBefore() {

+		return mElement.getFoBreakBeforeAttribute();

+	}

+

+	/**

+	 * Return the break property after the reference.

+	 * <p>

+	 * Null will be returned if there is no break setting after the reference.

+	 * 

+	 * @return - the break property; null if there is no break setting.

+	 */

+	public String getBreakAfter() {

+		return mElement.getFoBreakAfterAttribute();

+	}

+

+	/**

+	 * Return the page number that is used for a new page with a master style.

+	 * <p>

+	 * If there is no valid page number, 0 will be returned;

+	 * 

+	 * @return the page number

+	 */

+	public int getPageNumber() {

+		try {

+			return mElement.getStylePageNumberAttribute();

+		} catch (NullPointerException e) {

+			return 0;

+		}

+	}

+

+	/**

+	 * Set the page number for a new page with a master style.

+	 * 

+	 * @param pageNumber

+	 *            the page number

+	 */

+	public void setPageNumber(int pageNumber) {

+		if (pageNumber > 0) {

+			mElement.setStylePageNumberAttribute(pageNumber);

+		} else {

+			mElement.removeAttribute("style:page-number");

+		}

+	}

+

+	/**

+	 * Return an instance of

+	 * <code>TableProperties</p> to represent the "style:table-properties" in a style element.

+	 * <p>If there is no "style:table-properties" defined in the style element, a new "style:table-properties" element will be created.

+	 * 

+	 * @param style

+	 *            - a style element

+	 * @return an instance of <code>TableProperties</p>

+	 */

+	public static TableProperties getOrCreateTableProperties(OdfStyleBase style) {

+		OdfStylePropertiesBase properties = style

+				.getOrCreatePropertiesElement(OdfStylePropertiesSet.TableProperties);

+		return new TableProperties((StyleTablePropertiesElement) properties);

+	}

+

+	/**

+	 * Return an instance of

+	 * <code>TableProperties</p> to represent the "style:table-properties" in a style element.

+	 * <p>If there is no "style:table-properties" defined in the style element, null will be returned.

+	 * 

+	 * @param style

+	 *            - a style element

+	 * @return an instance of <code>TableProperties</p>;Null if there is no

+	 *         "style:table-properties" defined

+	 */

+	public static TableProperties getTableProperties(OdfStyleBase style) {

+		OdfStylePropertiesBase properties = style

+				.getPropertiesElement(OdfStylePropertiesSet.TableProperties);

+		if (properties != null)

+			return new TableProperties((StyleTablePropertiesElement) properties);

+		else

+			return null;

+	}

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/style/TextProperties.java b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TextProperties.java
new file mode 100644
index 0000000..a58113a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/style/TextProperties.java
@@ -0,0 +1,1153 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoCountryAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontSizeAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoFontWeightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoLanguageAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleCountryAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleCountryComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontNameComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontSizeComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontStyleComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontWeightAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleFontWeightComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLanguageAsianAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleLanguageComplexAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextLineThroughStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineColorAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineStyleAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleTextUnderlineWidthAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.OdfStylePropertiesBase;
+import org.odftoolkit.odfdom.dom.element.office.OfficeFontFaceDeclsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFontFaceElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class represents text style settings.
+ * <p>
+ * In Open Document Format, there can be different font settings for different
+ * script types.
+ * <p>
+ * This class provides methods to access font style, font size, font name and
+ * etc for different script types.
+ * <p>
+ * Further functions will be provided, such as underline, shadow, background
+ * color and etc.
+ * 
+ * <p>
+ * This class is a corresponded high level class for element
+ * "style:text-properties". It provides methods to access the attributes and
+ * children of "style:text-properties".
+ * 
+ * @since 0.3
+ */
+public class TextProperties {
+
+	// The corresponding attributes includes:
+	// ---Westen---
+	//
+	// fo:background-color
+	// fo:color
+	// fo:country
+	// fo:language
+	// fo:font-family
+	// fo:font-size
+	// fo:font-style
+	// fo:font-variant
+	// fo:font-weight
+	// fo:hyphenate
+	// fo:hyphenation-push-char-count
+	// fo:hyphenation-remain-char-count
+	// fo:letter-spacing
+	// fo:script
+	// fo:text-shadow
+	// fo:text-transform
+	// style:font-style-name //not used
+	//
+	// style:text-emphasize
+	// style:text-line-through-color
+	// style:text-line-through-mode
+	// style:text-line-through-style
+	// style:text-line-through-text
+	// style:text-line-through-text-style
+	// style:text-line-through-type
+	// style:text-line-through-width
+	//
+	// style:text-outline
+	// style:text-underline-color
+	// style:text-underline-mode
+	// style:text-underline-style
+	// style:text-underline-type
+	// style:text-underline-width
+	//
+	// style:use-window-font-color
+	// style:font-relief
+	// style:font-name
+	// style:font-charset
+	// style:font-family-generic
+	// style:font-pitch
+	// style:script-type
+	//
+	// ----Asian---
+	//
+	// style:font-style-name-asian
+	// style:font-weight-asian
+	// style:language-asian
+	// style:script-asian
+	// style:font-size-asian
+	// style:font-name-asian
+	// style:country-asian
+	// style:font-charset-asian
+	// style:font-family-asian
+	// style:rfc-language-tag-asian
+	// style:font-pitch-asian
+	// style:font-style-asian
+	//
+	// ----Complex----
+	//
+	// style:font-style-name-complex
+	// style:font-weight-complex
+	// style:language-complex
+	// style:script-complex
+	// style:font-size-complex
+	// style:font-name-complex
+	// style:country-complex
+	// style:font-charset-complex
+	// style:font-family-complex
+	// style:rfc-language-tag-complex
+	// style:font-style-complex
+	// style:font-pitch-complex
+
+	StyleTextPropertiesElement mElement;
+
+	/*
+	 * String familyName; //svg:font-family String fontName; //style:name @
+	 * style:font-face StyleTypeDefinitions.SimpleFontStyle SimpleFontStyle;
+	 * //fo:font-style, fo:font-weight int size; //fo:font-size Locale language;
+	 * Color fontColor; //fo:color Color backgroundColor; //fo:background-color
+	 * String overLining; //style:text-overline-style="solid"
+	 * //style:text-overline-type="double" //style:text-overline-width="auto"
+	 * //style:text-overline-color="#000000" String
+	 * strikeThrough;//style:text-line-through-style="solid"
+	 * style:text-line-through-type="double" String underLining;
+	 * //style:text-underline-style="solid" style:text-underline-width="auto"
+	 * style:text-underline-color="#00ccff" Color overLiningColor; Color
+	 * underLiningColor; String emphasisMark;
+	 * //style:text-emphasize="circle below",
+	 * style:text-emphasize="accent above" String relief;
+	 * //style:font-relief="embossed", style:font-relief="engraved" boolean
+	 * isOutline; //style:text-outline="true" boolean isShadow;
+	 * //fo:text-shadow="1pt 1pt"
+	 */
+
+	/**
+	 * Create an instance of TextProperties
+	 */
+	protected TextProperties() {
+	}
+
+	/**
+	 * Create an instance of TextProperties from an element
+	 * <style:text-properties>
+	 * 
+	 * @param textProperties
+	 *            - the element of style:text-properties
+	 */
+	protected TextProperties(StyleTextPropertiesElement textProperties) {
+		mElement = textProperties;
+	}
+
+	/**
+	 * Return the font style for western characters
+	 * <p>
+	 * Null will be returned if there is no font style setting for western
+	 * characters
+	 * 
+	 * @return the font style
+	 */
+	public StyleTypeDefinitions.FontStyle getFontStyle() {
+
+		String fontstyle = mElement.getFoFontStyleAttribute();
+		String fontweight = mElement.getFoFontWeightAttribute();
+		StyleTypeDefinitions.OdfFontStyle theFontType = StyleTypeDefinitions.OdfFontStyle.enumValueOf(fontstyle);
+		StyleTypeDefinitions.OdfFontWeight theFontWeight = StyleTypeDefinitions.OdfFontWeight.enumValueOf(fontweight);
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.NORMAL
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.NORMAL)
+			return StyleTypeDefinitions.FontStyle.REGULAR;
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.ITALIC
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.NORMAL)
+			return StyleTypeDefinitions.FontStyle.ITALIC;
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.ITALIC
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.BOLD)
+			return StyleTypeDefinitions.FontStyle.BOLDITALIC;
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.NORMAL
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.BOLD)
+			return StyleTypeDefinitions.FontStyle.BOLD;
+
+		return null;
+	}
+	
+	/**
+	 * Return the font text line style
+	 * <p>
+	 * TextLineStyle.REGULAR will be returned if there is no text line style setting
+	 * 
+	 * @return the font style
+	 */
+	public StyleTypeDefinitions.TextLinePosition getTextLineStyle() {
+		String throughLine = mElement.getStyleTextLineThroughStyleAttribute();
+		String underLine = mElement.getStyleTextUnderlineStyleAttribute();
+		if (throughLine ==null && underLine == null)
+			return StyleTypeDefinitions.TextLinePosition.REGULAR;
+		if (throughLine !=null && underLine == null)
+			return StyleTypeDefinitions.TextLinePosition.THROUGH;
+		if (throughLine !=null && underLine != null)
+			return StyleTypeDefinitions.TextLinePosition.THROUGHUNDER;
+		if (throughLine ==null && underLine != null)
+			return StyleTypeDefinitions.TextLinePosition.UNDER;
+		return null;
+	}
+
+	/**
+	 * Return the font style for a specific script type
+	 * <p>
+	 * REGULAR will be returned if there is no font style setting for this
+	 * script type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font style for a specific script type
+	 */
+	public StyleTypeDefinitions.FontStyle getFontStyle(Document.ScriptType type) {
+		if (type == null)
+			type = Document.ScriptType.WESTERN;
+		String fontstyle = null, fontweight = null;
+		switch (type) {
+		case WESTERN:
+			fontstyle = mElement.getFoFontStyleAttribute();
+			fontweight = mElement.getFoFontWeightAttribute();
+			break;
+		case CJK:
+			fontstyle = mElement.getStyleFontStyleAsianAttribute();
+			fontweight = mElement.getStyleFontWeightAsianAttribute();
+			break;
+		case CTL:
+			fontstyle = mElement.getStyleFontStyleComplexAttribute();
+			fontweight = mElement.getStyleFontWeightComplexAttribute();
+			break;
+		}
+		StyleTypeDefinitions.OdfFontStyle theFontType = StyleTypeDefinitions.OdfFontStyle.enumValueOf(fontstyle);
+		StyleTypeDefinitions.OdfFontWeight theFontWeight = StyleTypeDefinitions.OdfFontWeight.enumValueOf(fontweight);
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.NORMAL
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.NORMAL)
+			return StyleTypeDefinitions.FontStyle.REGULAR;
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.ITALIC
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.NORMAL)
+			return StyleTypeDefinitions.FontStyle.ITALIC;
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.ITALIC
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.BOLD)
+			return StyleTypeDefinitions.FontStyle.BOLDITALIC;
+
+		if (theFontType == StyleTypeDefinitions.OdfFontStyle.NORMAL
+				&& theFontWeight == StyleTypeDefinitions.OdfFontWeight.BOLD)
+			return StyleTypeDefinitions.FontStyle.BOLD;
+
+		return null;
+	}
+
+	/**
+	 * Set the font style for western characters
+	 * <p>
+	 * If the parameter <code>style</code> is REGULAR, the font style setting
+	 * for western characters will be removed.
+	 * 
+	 * @param style
+	 *            - the font style
+	 */
+	public void setFontStyle(StyleTypeDefinitions.FontStyle style) {
+		switch (style) {
+		case BOLD:
+			mElement.removeAttribute(FoFontStyleAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.setFoFontWeightAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+			break;
+		case ITALIC:
+			mElement.setFoFontStyleAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+			mElement.removeAttribute(FoFontWeightAttribute.ATTRIBUTE_NAME.getQName());
+			break;
+		case BOLDITALIC:
+			mElement.setFoFontStyleAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+			mElement.setFoFontWeightAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+			break;
+		case REGULAR:
+			mElement.removeAttribute(FoFontStyleAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(FoFontWeightAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	/**
+	 * Set the font text line style for characters
+	 * <p>
+	 * If the parameter <code>style</code> is REGULAR, the font text line style
+	 * setting for characters will be removed.
+	 * 
+	 * @param style
+	 *            - the font text line style
+	 */
+	public void setTextLineStyle(StyleTypeDefinitions.TextLinePosition style) {
+		switch (style) {
+		case THROUGH:
+			mElement.setStyleTextLineThroughStyleAttribute(StyleTypeDefinitions.LineStyle.SOLID.toString());
+			mElement.setStyleTextLineThroughColorAttribute("font-color");
+			break;
+		case UNDER:
+			mElement.setStyleTextUnderlineStyleAttribute(StyleTypeDefinitions.LineStyle.SOLID.toString());
+			mElement.setStyleTextUnderlineWidthAttribute("auto");
+			mElement.setStyleTextUnderlineColorAttribute("font-color");
+			break;
+		case THROUGHUNDER:
+			mElement.setStyleTextLineThroughStyleAttribute(StyleTypeDefinitions.LineStyle.SOLID.toString());
+			mElement.setStyleTextLineThroughColorAttribute("font-color");
+			mElement.setStyleTextUnderlineStyleAttribute(StyleTypeDefinitions.LineStyle.SOLID.toString());
+			mElement.setStyleTextUnderlineWidthAttribute("auto");
+			mElement.setStyleTextUnderlineColorAttribute("font-color");
+			break;
+		case REGULAR:
+			mElement.removeAttribute(StyleTextLineThroughStyleAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleTextLineThroughColorAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleTextUnderlineStyleAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleTextUnderlineWidthAttribute.ATTRIBUTE_NAME.getQName());
+			mElement.removeAttribute(StyleTextUnderlineColorAttribute.ATTRIBUTE_NAME.getQName());
+		}
+	}
+
+	/**
+	 * Set the font style for a specific script type
+	 * <p>
+	 * If the parameter <code>style</code> is REGULAR, the font style setting
+	 * for this script type will be removed.
+	 * 
+	 * @param style
+	 *            - font style
+	 * @param type
+	 *            - script type
+	 */
+	public void setFontStyle(StyleTypeDefinitions.FontStyle style, Document.ScriptType type) {
+		if (type == null)
+			type = Document.ScriptType.WESTERN;
+		switch (type) {
+		case WESTERN:
+			switch (style) {
+			case BOLD:
+				mElement.removeAttribute(FoFontStyleAttribute.ATTRIBUTE_NAME.getQName());
+				mElement.setFoFontWeightAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+				break;
+			case ITALIC:
+				mElement.setFoFontStyleAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+				mElement.removeAttribute(FoFontWeightAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case BOLDITALIC:
+				mElement.setFoFontStyleAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+				mElement.setFoFontWeightAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+				break;
+			case REGULAR:
+				mElement.removeAttribute(FoFontStyleAttribute.ATTRIBUTE_NAME.getQName());
+				mElement.removeAttribute(FoFontWeightAttribute.ATTRIBUTE_NAME.getQName());
+			}
+			break;
+		case CJK:
+			switch (style) {
+			case BOLD:
+				mElement.removeAttribute(StyleFontStyleAsianAttribute.ATTRIBUTE_NAME.getQName());
+				mElement.setStyleFontWeightAsianAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+				break;
+			case ITALIC:
+				mElement.setStyleFontStyleAsianAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+				mElement.removeAttribute(StyleFontWeightAsianAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case BOLDITALIC:
+				mElement.setStyleFontStyleAsianAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+				mElement.setStyleFontWeightAsianAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+				break;
+			case REGULAR:
+				mElement.removeAttribute(StyleFontStyleAsianAttribute.ATTRIBUTE_NAME.getQName());
+				mElement.removeAttribute(StyleFontWeightAsianAttribute.ATTRIBUTE_NAME.getQName());
+			}
+			break;
+		case CTL:
+			switch (style) {
+			case BOLD:
+				mElement.removeAttribute(StyleFontStyleComplexAttribute.ATTRIBUTE_NAME.getQName());
+				mElement.setStyleFontWeightComplexAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+				break;
+			case ITALIC:
+				mElement.setStyleFontStyleComplexAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+				mElement.removeAttribute(StyleFontWeightComplexAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case BOLDITALIC:
+				mElement.setStyleFontStyleComplexAttribute(StyleTypeDefinitions.OdfFontStyle.ITALIC.toString());
+				mElement.setStyleFontWeightComplexAttribute(StyleTypeDefinitions.OdfFontWeight.BOLD.toString());
+				break;
+			case REGULAR:
+				mElement.removeAttribute(StyleFontStyleComplexAttribute.ATTRIBUTE_NAME.getQName());
+				mElement.removeAttribute(StyleFontWeightComplexAttribute.ATTRIBUTE_NAME.getQName());
+			}
+			break;
+		}
+	}
+
+	/**
+	 * Return the font size definition in measurement point(PT) for western
+	 * characters.
+	 * <p>
+	 * Zero will be returned if there is no font size definition for western
+	 * characters.
+	 * <p>
+	 * Zero will be returned if the line measurement is not point(PT).
+	 * 
+	 * @return the font size in measurement point(PT)
+	 */
+	public double getFontSizeInPoint() {
+		String fontsize = mElement.getFoFontSizeAttribute();
+		if (fontsize.endsWith("pt")) {
+			fontsize = fontsize.substring(0, fontsize.length() - 2);
+			double iSize;
+			try {
+				iSize = Double.parseDouble(fontsize.trim());
+			} catch (Exception e) {
+				iSize = 0;
+			}
+			return iSize;
+		}
+		return 0;
+	}
+
+	/**
+	 * Return the font size definition in measurement point(PT) for a specific
+	 * script type.
+	 * <p>
+	 * Zero will be returned if there is no font size definition for this script
+	 * type.
+	 * <p>
+	 * Zero will be returned if the line measurement is not point(PT).
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font size in measurement point(PT)
+	 */
+	public double getFontSizeInPoint(Document.ScriptType type) {
+		String fontsize = "";
+		switch (type) {
+		case WESTERN:
+			fontsize = mElement.getFoFontSizeAttribute();
+			break;
+		case CJK:
+			fontsize = mElement.getStyleFontSizeAsianAttribute();
+			break;
+		case CTL:
+			fontsize = mElement.getStyleFontSizeComplexAttribute();
+			break;
+		}
+		if (fontsize != null && fontsize.endsWith("pt")) {
+			fontsize = fontsize.substring(0, fontsize.length() - 2);
+			double iSize;
+			try {
+				iSize = Double.parseDouble(fontsize.trim());
+			} catch (Exception e) {
+				iSize = 0;
+			}
+			return iSize;
+		}
+		return 0;
+	}
+
+	/**
+	 * Set the font size in measurement point(PT) for western characters.
+	 * <p>
+	 * If the font size is less than zero, the font size definition for western
+	 * characters will be removed.
+	 * 
+	 * @param size
+	 *            - font size
+	 */
+	public void setFontSizeInPoint(double size) {
+		setFontSizeInPoint(size, Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Set the font size in measurement point(PT) for a specific script type.
+	 * <p>
+	 * If the font size is less than zero, the font size definition for this
+	 * script type will be removed.
+	 * 
+	 * @param size
+	 *            - font size
+	 * @param type
+	 *            - script type
+	 */
+	public void setFontSizeInPoint(double size, Document.ScriptType type) {
+		if (size < 0) {
+			switch (type) {
+			case WESTERN:
+				mElement.removeAttribute(FoFontSizeAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CJK:
+				mElement.removeAttribute(StyleFontSizeAsianAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CTL:
+				mElement.removeAttribute(StyleFontSizeComplexAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			}
+			return;
+		}
+		switch (type) {
+		case WESTERN:
+			mElement.setFoFontSizeAttribute(size + "pt");
+			break;
+		case CJK:
+			mElement.setStyleFontSizeAsianAttribute(size + "pt");
+			break;
+		case CTL:
+			mElement.setStyleFontSizeComplexAttribute(size + "pt");
+			break;
+		}
+	}
+
+	/**
+	 * Return the language information for western characters.
+	 * <p>
+	 * Null will be returned if there is no language information for western
+	 * characters.
+	 * 
+	 * @return the language information for western characters.
+	 */
+	public String getLanguage() {
+		return getLanguage(Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Return the language information for a specific script type
+	 * <p>
+	 * Null will be returned if there is no language information for this script
+	 * type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the language information for a specific script type
+	 */
+	public String getLanguage(Document.ScriptType type) {
+		switch (type) {
+		case WESTERN:
+			return mElement.getFoLanguageAttribute();
+		case CJK:
+			return mElement.getStyleLanguageAsianAttribute();
+		case CTL:
+			return mElement.getStyleLanguageComplexAttribute();
+		}
+		return null;
+	}
+
+	/**
+	 * Set the language information for western characters.
+	 * <p>
+	 * If the parameter <code>language</code> is null, the language information
+	 * for western characters will be removed.
+	 * 
+	 * @param language
+	 *            - the language information
+	 */
+	public void setLanguage(String language) {
+		setLanguage(language, Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Set the language information for a specific script type
+	 * <p>
+	 * The consistency between country and script type is not verified.
+	 * <p>
+	 * If the parameter <code>language</code> is null, the language information
+	 * for this script type will be removed.
+	 * 
+	 * @param language
+	 *            - the language information
+	 * @param type
+	 *            - script type
+	 */
+	public void setLanguage(String language, Document.ScriptType type) {
+		if (language == null) {
+			switch (type) {
+			case WESTERN:
+				mElement.removeAttribute(FoLanguageAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CJK:
+				mElement.removeAttribute(StyleLanguageAsianAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CTL:
+				mElement.removeAttribute(StyleLanguageComplexAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			}
+			return;
+		}
+		switch (type) {
+		case WESTERN:
+			mElement.setFoLanguageAttribute(language);
+			break;
+		case CJK:
+			mElement.setStyleLanguageAsianAttribute(language);
+			break;
+		case CTL:
+			mElement.setStyleLanguageComplexAttribute(language);
+			break;
+		}
+	}
+
+	/**
+	 * Return the country information for western characters.
+	 * <p>
+	 * Null will be returned if there is no country information for western
+	 * characters.
+	 * 
+	 * @return the country information for western characters.
+	 */
+	public String getCountry() {
+		return getCountry(Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Return the country information for a specific script type
+	 * <p>
+	 * Null will be returned if there is no country information for this script
+	 * type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the country information for a specific script type
+	 */
+	public String getCountry(Document.ScriptType type) {
+		switch (type) {
+		case WESTERN:
+			return mElement.getFoCountryAttribute();
+		case CJK:
+			return mElement.getStyleCountryAsianAttribute();
+		case CTL:
+			return mElement.getStyleCountryComplexAttribute();
+		}
+		return null;
+	}
+
+	/**
+	 * Set the country information for western character.
+	 * <p>
+	 * If the parameter <code>country</code> is null, the country information
+	 * for western character will be removed.
+	 * 
+	 * @param country
+	 *            - the country information
+	 */
+	public void setCountry(String country) {
+		setCountry(country, Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Set the country information for a specific script type.
+	 * <p>
+	 * The consistency between country and script type is not verified.
+	 * <p>
+	 * If the parameter <code>country</code> is null, the country information
+	 * for this script type will be removed.
+	 * 
+	 * @param country
+	 *            - the country information
+	 * @param type
+	 *            - script type
+	 */
+	public void setCountry(String country, Document.ScriptType type) {
+		if (country == null) {
+			switch (type) {
+			case WESTERN:
+				mElement.removeAttribute(FoCountryAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CJK:
+				mElement.removeAttribute(StyleCountryAsianAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CTL:
+				mElement.removeAttribute(StyleCountryComplexAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			}
+			return;
+		}
+		switch (type) {
+		case WESTERN:
+			mElement.setFoCountryAttribute(country);
+			break;
+		case CJK:
+			mElement.setStyleCountryAsianAttribute(country);
+			break;
+		case CTL:
+			mElement.setStyleCountryComplexAttribute(country);
+			break;
+		}
+	}
+
+	/**
+	 * Return the font color.
+	 * <p>
+	 * Null will be returned if there is no font color setting.
+	 * 
+	 * @return the font color
+	 */
+	public Color getFontColor() {
+		String color = mElement.getFoColorAttribute();
+		if (color != null)
+			return Color.valueOf(mElement.getFoColorAttribute());
+		else
+			return null;
+	}
+
+	/**
+	 * Set the font color.
+	 * <p>
+	 * If the parameter <code>fontColor</code> is null, the font color
+	 * definition will be removed.
+	 * 
+	 * @param fontColor
+	 *            - the font color
+	 */
+	public void setFontColor(Color fontColor) {
+		if (fontColor == null)
+			mElement.removeAttribute(FoColorAttribute.ATTRIBUTE_NAME.getQName());
+		else
+			mElement.setFoColorAttribute(fontColor.toString());
+	}
+
+	/**
+	 * Return the font name for western characters.
+	 * <p>
+	 * Null will be returned if there is no font name setting for western
+	 * characters.
+	 * 
+	 * @return the font style for western characters
+	 */
+	public String getFontName() {
+		return mElement.getStyleFontNameAttribute();
+	}
+
+	/**
+	 * Return the font name for a specific script type
+	 * <p>
+	 * Null will be returned if there is no font name setting for this script
+	 * type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font name for a specific script type
+	 */
+	public String getFontName(Document.ScriptType type) {
+		if (type == null)
+			return null;
+		switch (type) {
+		case WESTERN:
+			return mElement.getStyleFontNameAttribute();
+		case CJK:
+			return mElement.getStyleFontNameAsianAttribute();
+		case CTL:
+			return mElement.getStyleFontNameComplexAttribute();
+		}
+		return null;
+	}
+
+	/**
+	 * Set the font name for western characters.
+	 * <p>
+	 * If the parameter <code>fontName</code> is null, the font name for western
+	 * characters will be removed.
+	 * 
+	 * @param fontName
+	 *            - font name
+	 */
+	public void setFontName(String fontName) {
+		mElement.setStyleFontNameAttribute(fontName);
+	}
+
+	/**
+	 * Set the font name for a specific script type
+	 * <p>
+	 * If the parameter <code>fontName</code> is null, the font name for this
+	 * script type will be removed.
+	 * 
+	 * @param fontName
+	 *            - font name
+	 * @param type
+	 *            - script type
+	 */
+	public void setFontName(String fontName, Document.ScriptType type) {
+		if (fontName == null) {
+			switch (type) {
+			case WESTERN:
+				mElement.removeAttribute(StyleFontNameAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CJK:
+				mElement.removeAttribute(StyleFontNameAsianAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			case CTL:
+				mElement.removeAttribute(StyleFontNameComplexAttribute.ATTRIBUTE_NAME.getQName());
+				break;
+			}
+			return;
+		}
+		switch (type) {
+		case WESTERN:
+			mElement.setStyleFontNameAttribute(fontName);
+			break;
+		case CJK:
+			mElement.setStyleFontNameAsianAttribute(fontName);
+			break;
+		case CTL:
+			mElement.setStyleFontNameComplexAttribute(fontName);
+			break;
+		}
+	}
+
+	/**
+	 * Return the font definition for western characters.
+	 * <p>
+	 * Null will be returned if there is no font definition for western
+	 * characters.
+	 * 
+	 * @return the font definition for western characters
+	 */
+	public Font getFont() {
+		return getFont(Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Return the font definition for a specific script type
+	 * <p>
+	 * Null will be returned if there is no font definition for this script
+	 * type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font definition for a specific script type
+	 */
+	public Font getFont(Document.ScriptType type) {
+		// get Font family name
+		String fontName = getFontName(type);
+		String familyName = null;
+		if (fontName != null)
+			familyName = getFontFamilyNameFromFontName(fontName);
+		else
+			familyName = getFontFamilyName(type);
+		double size = getFontSizeInPoint(type);
+		StyleTypeDefinitions.FontStyle fontStyle = getFontStyle(type);
+		StyleTypeDefinitions.TextLinePosition lineStyle = getTextLineStyle();
+		Font aFont = new Font(familyName, fontStyle, size, lineStyle);
+
+		Color color = getFontColor();
+		// String language = getLanguage(type);
+		// String country = getCountry(type);
+
+		if (color != null)
+			aFont.setColor(color);
+
+		// Commented since 0.3.5 because the font won't contain the language
+		// information
+		// if (language != null && country != null) {
+		// Locale locale = new Locale(language, country);
+		// aFont.setLocale(locale);
+		// }
+		return aFont;
+
+	}
+
+	/**
+	 * Set the font definition for western character.
+	 * <p>
+	 * If the parameter <code>font</code> is null, nothing will be happened.
+	 * 
+	 * @param font
+	 *            - font definition
+	 */
+	public void setFont(Font font) {
+		if (font == null)
+			return;
+
+		setFont(font, Document.ScriptType.WESTERN, null);
+		if (font.getColor() != null)
+			setFontColor(font.getColor());
+	}
+
+	/**
+	 * Set the font definition.
+	 * <p>
+	 * This method can be used to set font for different script type, such as
+	 * western characters, CJK characters, and CTL characters. The second
+	 * parameter will be used to determine the script type.
+	 * <p>
+	 * If the parameter <code>font</code> is null, nothing will be happened.
+	 * 
+	 * @param font
+	 *            - font definition
+	 * @param language
+	 *            - the language
+	 * @see org.odftoolkit.simple.Document.ScriptType
+	 * 
+	 */
+	public void setFont(Font font, Locale language) {
+		if (font == null)
+			return;
+
+		if (language == null) {
+			setFont(font, Document.ScriptType.WESTERN, null);
+		} else
+			setFont(font, Document.getScriptType(language), language);
+		if (font.getColor() != null)
+			setFontColor(font.getColor());
+	}
+
+	/**
+	 * Return the font family name for a specific script type
+	 * <p>
+	 * Null will be returned if there is no font family name definition for this
+	 * script type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font family name for a specific script type
+	 */
+	public String getFontFamilyName(Document.ScriptType type) {
+		switch (type) {
+		case WESTERN:
+			return mElement.getFoFontFamilyAttribute();
+		case CJK:
+			return mElement.getStyleFontFamilyAsianAttribute();
+		case CTL:
+			return mElement.getStyleFontFamilyComplexAttribute();
+		}
+		return null;
+	}
+
+	private String getFontFamilyNameFromFontName(String aFontName) {
+		try {
+			// try if the font has been defined.
+			Document mDocument = ((Document) ((OdfFileDom) mElement.getOwnerDocument()).getDocument());
+			// find <office:font-face-decls> in content dom
+			OdfContentDom contentDom = mDocument.getContentDom();
+			OfficeFontFaceDeclsElement fontfaceDecls = OdfElement.findFirstChildNode(OfficeFontFaceDeclsElement.class,
+					contentDom.getRootElement());
+			if (fontfaceDecls == null) {
+				// find <office:font-face-decls> in style dom
+				OdfStylesDom styleDom = mDocument.getStylesDom();
+				fontfaceDecls = OdfElement.findFirstChildNode(OfficeFontFaceDeclsElement.class, styleDom
+						.getRootElement());
+			}
+			if (fontfaceDecls == null)
+				return null;
+
+			NodeList list = fontfaceDecls.getElementsByTagName("style:font-face");
+			for (int i = 0; i < list.getLength(); i++) {
+				StyleFontFaceElement node = (StyleFontFaceElement) list.item(i);
+				String familyname = node.getSvgFontFamilyAttribute();
+				String fontName = node.getStyleNameAttribute();
+				if (aFontName.equals(fontName)) {
+					return familyname;
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TextProperties.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		return null;
+	}
+
+	private String getFontNameFromFamilyName(String aFamilyName) {
+		String aFontName = aFamilyName;
+		boolean duplicated = false;
+		try {
+			// try if the font has been defined.
+			Document mDocument = ((Document) ((OdfFileDom) mElement.getOwnerDocument()).getDocument());
+			// find <office:font-face-decls> in content dom
+			OdfContentDom contentDom = mDocument.getContentDom();
+			OfficeFontFaceDeclsElement fontfaceDecls = OdfElement.findFirstChildNode(OfficeFontFaceDeclsElement.class,
+					contentDom.getRootElement());
+			if (fontfaceDecls == null) {
+				// find <office:font-face-decls> in style dom
+				OdfStylesDom styleDom = mDocument.getStylesDom();
+				fontfaceDecls = OdfElement.findFirstChildNode(OfficeFontFaceDeclsElement.class, styleDom
+						.getRootElement());
+				if (fontfaceDecls == null)
+					fontfaceDecls = contentDom.getRootElement().newOfficeFontFaceDeclsElement();
+			}
+
+			NodeList list = fontfaceDecls.getElementsByTagName("style:font-face");
+			for (int i = 0; i < list.getLength(); i++) {
+				StyleFontFaceElement node = (StyleFontFaceElement) list.item(i);
+				String familyname = node.getSvgFontFamilyAttribute();
+				String fontName = node.getStyleNameAttribute();
+				if (aFamilyName.equals(familyname)) {
+					return fontName;
+				}
+				if (aFontName.equals(fontName)) {
+					duplicated = true;
+				}
+			}
+
+			// Get a font name
+			while (duplicated) {
+				duplicated = false;
+				aFontName = aFontName + "_1";
+				for (int i = 0; i < list.getLength(); i++) {
+					StyleFontFaceElement node = (StyleFontFaceElement) list.item(i);
+					String fontName = node.getStyleNameAttribute();
+					if (aFontName.equals(fontName)) {
+						duplicated = true;
+						break;
+					}
+				}
+			}
+
+			StyleFontFaceElement newfont = fontfaceDecls.newStyleFontFaceElement(aFontName);
+			newfont.setSvgFontFamilyAttribute(aFamilyName);
+			return aFontName;
+		} catch (Exception e) {
+			Logger.getLogger(TextProperties.class.getName()).log(Level.SEVERE,	e.getMessage(), e);
+		}
+		return null;
+
+	}
+
+	private void setFont(Font font, Document.ScriptType type, Locale locale) {
+		// get font name by font family name
+		String fontName = getFontNameFromFamilyName(font.getFamilyName());
+		if (fontName == null)
+			return;
+		font.setFontName(fontName);
+		switch (type) {
+		case WESTERN:
+			setFontName(font.getFontName(), Document.ScriptType.WESTERN);
+			setFontStyle(font.getFontStyle(), Document.ScriptType.WESTERN);
+			setFontSizeInPoint(font.getSize(), Document.ScriptType.WESTERN);
+			if (locale != null) {
+				setLanguage(locale.getLanguage(), Document.ScriptType.WESTERN);
+				setCountry(locale.getCountry(), Document.ScriptType.WESTERN);
+			}
+			break;
+		case CJK:
+			setFontName(font.getFontName(), Document.ScriptType.CJK);
+			setFontStyle(font.getFontStyle(), Document.ScriptType.CJK);
+			setFontSizeInPoint(font.getSize(), Document.ScriptType.CJK);
+			if (locale != null) {
+				setLanguage(locale.getLanguage(), Document.ScriptType.CJK);
+				setCountry(locale.getCountry(), Document.ScriptType.CJK);
+			}
+			break;
+		case CTL:
+			setFontName(font.getFontName(), Document.ScriptType.CTL);
+			setFontStyle(font.getFontStyle(), Document.ScriptType.CTL);
+			setFontSizeInPoint(font.getSize(), Document.ScriptType.CTL);
+			if (locale != null) {
+				setLanguage(locale.getLanguage(), Document.ScriptType.CTL);
+				setCountry(locale.getCountry(), Document.ScriptType.CTL);
+			}
+			break;
+		}
+		setTextLineStyle(font.getTextLinePosition());
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>TextProperties</p> to represent the "style:text-properties" in a style element.
+	 * <p>If there is no "style:text-properties" defined in the style element, a new "style:text-properties" element will be created.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>TextProperties</p>
+	 */
+	public static TextProperties getOrCreateTextProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style.getOrCreatePropertiesElement(OdfStylePropertiesSet.TextProperties);
+		return new TextProperties((StyleTextPropertiesElement) properties);
+	}
+
+	/**
+	 * Return an instance of
+	 * <code>TextProperties</p> to represent the "style:text-properties" in a style element.
+	 * <p>If there is no "style:text-properties" defined in the style element, null will be returned.
+	 * 
+	 * @param style
+	 *            - a style element
+	 * @return an instance of <code>TextProperties</p>;Null if there is no
+	 *         "style:text-properties" defined
+	 */
+	public static TextProperties getTextProperties(OdfStyleBase style) {
+		OdfStylePropertiesBase properties = style.getPropertiesElement(OdfStylePropertiesSet.TextProperties);
+		if (properties != null)
+			return new TextProperties((StyleTextPropertiesElement) properties);
+		else
+			return null;
+	}
+
+	// public void setBackgroundColor(Color bkColor)
+	// {
+	//		
+	// }
+	//	
+	// public Color getBackgroundColor()
+	// {
+	// return null;
+	// }
+	//	
+	// public void setIsShadow(boolean shadow)
+	// {
+	//		
+	// }
+	//	
+	// public boolean isShadow()
+	// {
+	// return false;
+	// }
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/AbstractTableContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/AbstractTableContainer.java
new file mode 100644
index 0000000..c97e6bf
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/AbstractTableContainer.java
@@ -0,0 +1,130 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.w3c.dom.NodeList;
+
+/**
+ * AbstractTableContainer is an abstract implementation of the TableContainer
+ * interface, with a default implementation for every method defined in
+ * TableContainer , except getTableContainerElement(). Each subclass must
+ * implement the abstract method getTableContainerElement().
+ * 
+ * @since 0.4.5
+ */
+public abstract class AbstractTableContainer implements TableContainer {
+
+	private final TableBuilder tableBuilder;
+
+	protected AbstractTableContainer() {
+		tableBuilder = new Table.TableBuilder(this);
+	}
+	
+	/**
+	 * Add a new Table to this container.
+	 * 
+	 * @return added table.
+	 */
+	public Table addTable() {
+		return Table.newTable(this);
+	}
+	
+	/**
+	 * Add a new Table to this container with a specified row number and column
+	 * number.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * 
+	 * @param numRows
+	 *            the row number
+	 * @param numCols
+	 *            the column number
+	 * @return a new instance of <code>Table</code>
+	 */
+	public Table addTable(int numRows, int numCols) {
+		return Table.newTable(this, numRows, numCols);
+	}
+	
+	/**
+	 * Return an instance of table feature with the specific table name.
+	 * 
+	 * @param name
+	 *            of the table beeing searched for.
+	 * @return an instance of table feature with the specific table name.
+	 */
+	public Table getTableByName(String name) {
+		try {
+			OdfElement containerEle = getTableContainerElement();
+			NodeList nodeList = containerEle.getElementsByTagName(TableTableElement.ELEMENT_NAME.getQName());
+			for (int i = 0; i < nodeList.getLength(); i++) {
+				TableTableElement table = (TableTableElement) nodeList.item(i);
+				if (table.getOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.TABLE, "name")).equals(name)) {
+					return getTableBuilder().getTableInstance(table);
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(AbstractTableContainer.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return null;
+	}
+
+	/**
+	 * Return a list of table features in this container.
+	 * 
+	 * @return a list of table features in this container.
+	 */
+	public List<Table> getTableList() {
+		List<Table> tableList = new ArrayList<Table>();
+		try {
+			OdfElement containerEle = getTableContainerElement();
+			NodeList nodeList = containerEle.getElementsByTagName(TableTableElement.ELEMENT_NAME.getQName());
+			for (int i = 0; i < nodeList.getLength(); i++) {
+				tableList.add(getTableBuilder().getTableInstance((TableTableElement) nodeList.item(i)));
+			}
+		} catch (Exception e) {
+			Logger.getLogger(AbstractTableContainer.class.getName()).log(Level.SEVERE, null, e);
+		}
+		return tableList;
+	}
+
+	/**
+	 * Return the table builder of this container. Every container has a table
+	 * builder, which supplies all of the table creation realization, for
+	 * example newTable().
+	 * 
+	 * @return the table builder of this container.
+	 * @since 0.3.5
+	 */
+	public TableBuilder getTableBuilder() {
+		return tableBuilder;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/Cell.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Cell.java
new file mode 100644
index 0000000..d2fb26c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Cell.java
@@ -0,0 +1,2577 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.awt.FontMetrics;
+import java.awt.image.BufferedImage;
+import java.io.InputStream;
+import java.net.URI;
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.imageio.ImageIO;
+import javax.swing.JTextField;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoTextAlignAttribute;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStylableElement;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberCurrencySymbolElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberNumberElement;
+import org.odftoolkit.odfdom.dom.element.number.NumberTextElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationElement;
+import org.odftoolkit.odfdom.dom.element.table.TableContentValidationsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableHelpMessageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberCurrencyStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberPercentageStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberTimeStyle;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.common.WhitespaceProcessor;
+import org.odftoolkit.simple.draw.FrameContainer;
+import org.odftoolkit.simple.draw.FrameRectangle;
+import org.odftoolkit.simple.draw.Image;
+import org.odftoolkit.simple.style.Border;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalAlignmentType;
+import org.odftoolkit.simple.text.AbstractParagraphContainer;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.text.ParagraphContainer;
+import org.odftoolkit.simple.text.list.AbstractListContainer;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Cell represents table cell feature in ODF document.
+ * <p>
+ * Table provides methods to get/set/modify the cell content and cell
+ * properties.
+ */
+public class Cell extends Component implements ListContainer, ParagraphContainer, FrameContainer {
+
+	TableTableCellElementBase mCellElement;
+	Document mDocument;
+
+	int mnRepeatedColIndex;
+	int mnRepeatedRowIndex;
+	Table mOwnerTable;
+	String msFormatString;
+	CellStyleHandler mStyleHandler;
+
+	/**
+	 * The default date format of table cell.
+	 */
+	private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
+	/**
+	 * The default time format of table cell.
+	 */
+	private static final String DEFAULT_TIME_FORMAT = "'PT'HH'H'mm'M'ss'S'";
+	// example format: 2002-05-30T09:30:10
+	private static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
+	/**
+	 * The default cell back color of table cell.
+	 */
+	private static final String DEFAULT_BACKGROUND_COLOR = "#FFFFFF";
+	/**
+	 * The default column spanned number.
+	 */
+	private static final int DEFAULT_COLUMN_SPANNED_NUMBER = 1;
+	/**
+	 * The default row spanned number.
+	 */
+	private static final int DEFAULT_ROW_SPANNED_NUMBER = 1;
+	/**
+	 * The default columns repeated number.
+	 */
+	private static final int DEFAULT_COLUMNS_REPEATED_NUMBER = 1;
+	
+	private ParagraphContainerImpl paragraphContainerImpl;
+	private ListContainerImpl listContainerImpl;
+
+	Cell(TableTableCellElementBase odfElement, int repeatedColIndex, int repeatedRowIndex) {
+		mCellElement = odfElement;
+		mnRepeatedColIndex = repeatedColIndex;
+		mnRepeatedRowIndex = repeatedRowIndex;
+		mOwnerTable = getTable();
+		mDocument = ((Document) ((OdfFileDom) mCellElement.getOwnerDocument()).getDocument());
+		mStyleHandler = new CellStyleHandler(this);
+	}
+
+	/**
+	 * Get the <code>Cell</code> instance from the
+	 * <code>TableTableCellElementBase</code> instance.
+	 * <p>
+	 * Each <code>TableTableCellElementBase</code> instance has a one-to-one
+	 * relationship to the a <code>Cell</code> instance.
+	 * 
+	 * @param cellElement
+	 *            the cell element that need to get the corresponding
+	 *            <code>Cell</code> instance
+	 * @return the <code>Cell</code> instance that represents a specified cell
+	 *         element
+	 */
+	public static Cell getInstance(TableTableCellElementBase cellElement) {
+		TableTableElement tableElement = null;
+		Node node = cellElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				tableElement = (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		Table table = null;
+		if (tableElement != null) {
+			table = Table.getInstance(tableElement);
+		} else {
+			throw new IllegalArgumentException("the cellElement is not in the table dom tree");
+		}
+
+		Cell cell = table.getCellInstance(cellElement, 0, 0);
+		int colRepeatedNum = cell.getColumnsRepeatedNumber();
+		int rowRepeatedNum = cell.getTableRow().getRowsRepeatedNumber();
+		if (colRepeatedNum > 1 && rowRepeatedNum > 1) {
+			if (colRepeatedNum > 1) {
+				Logger
+						.getLogger(Cell.class.getName())
+						.log(Level.WARNING,
+								"the cell has the repeated column number, and puzzled about get which repeated column index of the cell,");
+			}
+			if (rowRepeatedNum > 1) {
+				Logger
+						.getLogger(Cell.class.getName())
+						.log(
+								Level.WARNING,
+								"the row contains the current cell has the repeated row number, and puzzled about get which repeated row index of the cell,");
+			}
+			Logger
+					.getLogger(Cell.class.getName())
+					.log(Level.WARNING,
+							"here just return the first cell that the repeated column index is 0 and repeated row index is 0, too.");
+		}
+		return cell;
+	}
+
+	/**
+	 * Return the horizontal alignment setting of this cell.
+	 * <p>
+	 * The returned value can be "center", "end", "justify", "left", "right", or
+	 * "start". If no horizontal alignment is set, null will be returned.
+	 * 
+	 * @return the horizontal alignment setting.
+	 * 
+	 * @see #getHorizontalAlignmentType()
+	 * @deprecated As of Simple version 0.3, replaced by
+	 *             <code>getHorizontalAlignmentType()</code>
+	 */
+	@Deprecated
+	public String getHorizontalAlignment() {
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForRead();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName
+					.newName(OdfDocumentNamespace.FO, "text-align"));
+			return styleElement.getProperty(property);
+		}
+		return null;
+	}
+
+	/**
+	 * Return the horizontal alignment setting of this cell.
+	 * <p>
+	 * Null will returned if there is no explicit style definition for this
+	 * cell.
+	 * <p>
+	 * Default value will be returned if explicit style definition is found but
+	 * no horizontal alignment is set.
+	 * 
+	 * @return the horizontal alignment setting.
+	 */
+	public HorizontalAlignmentType getHorizontalAlignmentType() {
+		return getStyleHandler().getHorizontalAlignment();
+	}
+
+	/**
+	 * Set the horizontal alignment setting of this cell.
+	 * <p>
+	 * The parameter can be "center", "end", "justify", "left", "right", or
+	 * "start". Actually, "left" will be interpreted as "start", while "right"
+	 * will be interpreted as "end". If argument is null, the explicit
+	 * horizontal alignment setting is removed.
+	 * 
+	 * @param horizontalAlignment
+	 *            the horizontal alignment setting.
+	 * @see #setHorizontalAlignment(StyleTypeDefinitions.HorizontalAlignmentType)
+	 * @deprecated As of Simple version 0.3, replaced by
+	 *             <code>setHorizontalAlignment(SimpleHorizontalAlignmentType)</code>
+	 */
+	@Deprecated
+	public void setHorizontalAlignment(String horizontalAlignment) {
+		if (FoTextAlignAttribute.Value.LEFT.toString().equalsIgnoreCase(horizontalAlignment)) {
+			horizontalAlignment = FoTextAlignAttribute.Value.START.toString();
+		}
+		if (FoTextAlignAttribute.Value.RIGHT.toString().equalsIgnoreCase(horizontalAlignment)) {
+			horizontalAlignment = FoTextAlignAttribute.Value.END.toString();
+		}
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.ParagraphProperties, OdfName
+					.newName(OdfDocumentNamespace.FO, "text-align"));
+			if (horizontalAlignment != null) {
+				styleElement.setProperty(property, horizontalAlignment);
+			} else {
+				styleElement.removeProperty(property);
+			}
+		}
+	}
+
+	/**
+	 * Set the horizontal alignment setting of this cell. If the alignment is
+	 * set as Default, the explicit horizontal alignment setting is removed.
+	 * 
+	 * @param alignType
+	 *            the horizontal alignment setting.
+	 */
+	public void setHorizontalAlignment(HorizontalAlignmentType alignType) {
+		getStyleHandler().setHorizontalAlignment(alignType);
+	}
+
+	/**
+	 * Return the vertical alignment setting of this cell.
+	 * <p>
+	 * The returned value can be "auto", "automatic", "baseline", "bottom",
+	 * "middle", or "top".
+	 * 
+	 * @return the vertical alignment setting of this cell.
+	 * 
+	 * @see #getVerticalAlignmentType()
+	 * @deprecated As of Simple version 0.3, replaced by
+	 *             <code>getVerticalAlignmentType()</code>
+	 */
+	@Deprecated
+	public String getVerticalAlignment() {
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForRead();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName
+					.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+			return styleElement.getProperty(property);
+		}
+		return null;
+	}
+
+	/**
+	 * Return the vertical alignment setting of this cell.
+	 * <p>
+	 * Null will returned if there is no explicit style definition for this
+	 * cell.
+	 * <p>
+	 * Default value will be returned if explicit style definition is found but
+	 * no vertical alignment is set.
+	 * 
+	 * @return the vertical alignment setting.
+	 */
+	public VerticalAlignmentType getVerticalAlignmentType() {
+		return getStyleHandler().getVerticalAlignment();
+	}
+
+	/**
+	 * Set the vertical alignment setting of this cell.
+	 * <p>
+	 * The parameter can be "auto", "automatic", "baseline", "bottom", "middle",
+	 * or "top". If argument is null, the explicit vertical alignment setting is
+	 * removed.
+	 * 
+	 * @param verticalAlignment
+	 *            the vertical alignment setting.
+	 * @see #setVerticalAlignment(StyleTypeDefinitions.VerticalAlignmentType)
+	 * @deprecated As of Simple version 0.3, replaced by
+	 *             <code>setVerticalAlignment(SimpleVerticalAlignmentType)</code>
+	 */
+	@Deprecated
+	public void setVerticalAlignment(String verticalAlignment) {
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty property = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName
+					.newName(OdfDocumentNamespace.STYLE, "vertical-align"));
+			if (verticalAlignment != null) {
+				styleElement.setProperty(property, verticalAlignment);
+			} else {
+				styleElement.removeProperty(property);
+			}
+		}
+	}
+
+	/**
+	 * Set the vertical alignment setting of this cell.
+	 * <p>
+	 * If the alignment is set as Default or null, the explicit vertical
+	 * alignment setting is removed.
+	 * 
+	 * @param verticalAlignment
+	 *            the vertical alignment setting.
+	 */
+	public void setVerticalAlignment(VerticalAlignmentType verticalAlignment) {
+		getStyleHandler().setVerticalAlignment(verticalAlignment);
+	}
+
+	/**
+	 * Return the wrap option of this cell.
+	 * 
+	 * @return true if the cell content can be wrapped;
+	 *         <p>
+	 *         false if the cell content cannot be wrapped.
+	 */
+	public boolean isTextWrapped() {
+		return getStyleHandler().isTextWrapped();
+	}
+
+	/**
+	 * Set the wrap option of this cell.
+	 * 
+	 * @param isTextWrapped
+	 *            whether the cell content can be wrapped or not
+	 */
+	public void setTextWrapped(boolean isTextWrapped) {
+		getStyleHandler().setTextWrapped(isTextWrapped);
+	}
+
+	private TableTableRowElement findRowInTableHeaderRows(TableTableHeaderRowsElement headers, TableTableRowElement tr,
+			int[] indexs) {
+		int result = 0;
+		for (Node m : new DomNodeList(headers.getChildNodes())) {
+			if (m == tr) {
+				indexs[0] = result;
+				return tr;
+			}
+			if (m instanceof TableTableRowElement) {
+				result += ((TableTableRowElement) m).getTableNumberRowsRepeatedAttribute().intValue();
+			}
+		}
+		indexs[0] = result;
+		return null;
+	}
+
+	private TableTableRowElement findRowInTableRows(TableTableRowsElement rows, TableTableRowElement tr, int[] indexs) {
+		int result = 0;
+		for (Node m : new DomNodeList(rows.getChildNodes())) {
+			if (m == tr) {
+				indexs[0] = result;
+				return tr;
+			}
+			if (m instanceof TableTableRowElement) {
+				result += ((TableTableRowElement) m).getTableNumberRowsRepeatedAttribute().intValue();
+			}
+		}
+		indexs[0] = result;
+		return null;
+	}
+
+	private TableTableRowElement findRowInTableRowGroup(OdfElement group, TableTableRowElement tr, int[] indexs) {
+		int result = 0;
+		int[] resultIndexs = new int[1];
+
+		if (!(group instanceof TableTableRowGroupElement) && !(group instanceof TableTableElement)) {
+			indexs[0] = 0;
+			return null;
+		}
+
+		for (Node m : new DomNodeList(group.getChildNodes())) {
+			if (m instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) m;
+				TableTableRowElement returnEle = findRowInTableHeaderRows(headers, tr, resultIndexs);
+				result += resultIndexs[0];
+				if (returnEle != null) {// find
+					indexs[0] = result;
+					return returnEle;
+				}
+			} else if (m instanceof TableTableRowGroupElement) {
+				TableTableRowGroupElement aGroup = (TableTableRowGroupElement) m;
+				TableTableRowElement returnEle = findRowInTableRowGroup(aGroup, tr, resultIndexs);
+				result += resultIndexs[0];
+				if (returnEle != null) {// find
+					indexs[0] = result;
+					return returnEle;
+				}
+			} else if (m instanceof TableTableRowsElement) {
+				TableTableRowsElement rows = (TableTableRowsElement) m;
+				TableTableRowElement returnEle = findRowInTableRows(rows, tr, resultIndexs);
+				result += resultIndexs[0];
+				if (returnEle != null) {// find
+					indexs[0] = result;
+					return returnEle;
+				}
+			} else if (m instanceof TableTableRowElement) {
+				if (m == tr) { // find
+					indexs[0] = result;
+					return tr;
+				}
+				result += ((TableTableRowElement) m).getTableNumberRowsRepeatedAttribute().intValue();
+			}
+		}
+		indexs[0] = result;
+		return null;
+	}
+
+	/**
+	 * Get the index of the table row which contains this cell.
+	 * 
+	 * @return the index of the row containing this cell
+	 */
+	public int getRowIndex() {
+		TableTableElement table = getTableElement();
+		TableTableRowElement tr = getTableRowElement();
+		int[] indexs = new int[1];
+
+		TableTableRowElement returnEle = findRowInTableRowGroup(table, tr, indexs);
+		if (returnEle != null) {
+			return (indexs[0] + mnRepeatedRowIndex);
+		} else {
+			return -1;
+		}
+	}
+
+	/**
+	 * Get an instance of table feature which contains this cell.
+	 * 
+	 * @return the table containing this cell
+	 */
+	public Table getTable() {
+		TableTableElement tableElement = getTableElement();
+		if (tableElement != null) {
+			return Table.getInstance(tableElement);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the index of the table column which contains this cell.
+	 * 
+	 * @return the index of the column containing this cell
+	 */
+	public int getColumnIndex() {
+		TableTableRowElement tr = (TableTableRowElement) mCellElement.getParentNode();
+		int result = 0;
+		for (Node n : new DomNodeList(tr.getChildNodes())) {
+			if (n == mCellElement) {
+				return result + mnRepeatedColIndex;
+			}
+			if (n instanceof TableTableCellElementBase) {
+				result += ((TableTableCellElementBase) n).getTableNumberColumnsRepeatedAttribute().intValue();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Get the instance of table column feature which contains this cell.
+	 * 
+	 * @return the instance of table column feature which contains the cell.
+	 */
+	public Column getTableColumn() {
+		Table table = getTable();
+		int index = getColumnIndex();
+		return table.getColumnByIndex(index);
+	}
+
+	TableTableColumnElement getTableColumnElement() {
+		// return OdfTableCellBaseImpl.getTableColumn((OdfTableCellBase)
+		// mCellElement);
+		TableTableElement tableElement = getTableElement();
+		int columnindex = getColumnIndex();
+		Table fTable = Table.getInstance(tableElement);
+		return fTable.getColumnElementByIndex(columnindex);
+	}
+
+	/**
+	 * Get the instance of table row feature which contains this cell.
+	 * 
+	 * @return the instance of table row feature which contains the cell.
+	 */
+	public Row getTableRow() {
+		Table table = getTable();
+		return table.getRowInstance(getTableRowElement(), mnRepeatedRowIndex);
+	}
+
+	private TableTableRowElement getTableRowElement() {
+		Node node = mCellElement.getParentNode();
+		if (node instanceof TableTableRowElement) {
+			return (TableTableRowElement) node;
+		}
+		return null;
+	}
+
+	/**
+	 * Get the table object who contains this cell.
+	 * 
+	 * @return the table object who contains the cell.
+	 */
+	private TableTableElement getTableElement() {
+		Node node = mCellElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				return (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	/**
+	 * Get the cell that covers this cell.
+	 * <p>
+	 * If the cell is a covered cell, the owner cell will be returned; if the
+	 * cell is a real cell , the cell itself will be returned.
+	 * 
+	 * @return the cell that covers the current cell
+	 */
+	public Cell getOwnerTableCell() {
+		Table ownerTable = getTable();
+		List<CellCoverInfo> coverList = ownerTable.getCellCoverInfos(0, 0, ownerTable.getColumnCount() - 1, ownerTable
+				.getRowCount() - 1);
+		return ownerTable.getOwnerCellByPosition(coverList, getColumnIndex(), getRowIndex());
+	}
+
+	/**
+	 * Get the instance of <code>TableTableCellElementBase</code> which
+	 * represents this cell.
+	 * 
+	 * @return the instance of <code>TableTableCellElementBase</code>
+	 */
+	public TableTableCellElementBase getOdfElement() {
+		return mCellElement;
+	}
+
+	/**
+	 * Return the currency code of this cell, for example, "USD", "EUR", "CNY",
+	 * and etc.
+	 * <p>
+	 * If the value type is not "currency", an IllegalArgumentException will be
+	 * thrown.
+	 * 
+	 * @return the currency code
+	 *         <p>
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown if the value type
+	 *             is not "currency".
+	 */
+	public String getCurrencyCode() {
+		if (mCellElement.getOfficeValueTypeAttribute().equals(OfficeValueTypeAttribute.Value.CURRENCY.toString())) {
+			return mCellElement.getOfficeCurrencyAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the currency code of this cell, for example, "USD", "EUR", "CNY", and
+	 * etc.
+	 * 
+	 * @param currency
+	 *            the currency code that need to be set.
+	 * @throws IllegalArgumentException
+	 *             If input <code>currency</code> is null, an
+	 *             IllegalArgumentException will be thrown.
+	 */
+	public void setCurrencyCode(String currency) {
+		if (currency == null) {
+			throw new IllegalArgumentException("Currency code of cell should not be null.");
+		}
+		splitRepeatedCells();
+		if (mCellElement.getOfficeValueTypeAttribute().equals(OfficeValueTypeAttribute.Value.CURRENCY.toString())) {
+			mCellElement.setOfficeCurrencyAttribute(currency);
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	private void setTypeAttr(OfficeValueTypeAttribute.Value type) {
+		mCellElement.setOfficeValueTypeAttribute(type.toString());
+	}
+
+	/**
+	 * Set the value type of this cell. The parameter can be "boolean",
+	 * "currency", "date", "float", "percentage", "string" or "time".
+	 * <p>
+	 * If the parameter <code>type</code> is not a valid cell type, an
+	 * IllegalArgumentException will be thrown.
+	 * 
+	 * @param type
+	 *            the type that need to be set If input type is null, an
+	 *            IllegalArgumentException will be thrown.
+	 */
+	public void setValueType(String type) {
+		if (type == null) {
+			throw new IllegalArgumentException("type shouldn't be null.");
+		}
+		String sType = type.toLowerCase();
+		OfficeValueTypeAttribute.Value value = OfficeValueTypeAttribute.Value.enumValueOf(sType);
+		if (value == null) {
+			throw new IllegalArgumentException("the value type of cell is not valid");
+		}
+
+		mCellElement.setOfficeValueTypeAttribute(sType);
+	}
+
+	/**
+	 * Get the value type of this cell. The returned value can be "boolean",
+	 * "currency", "date", "float", "percentage", "string" or "time". If no
+	 * value type is set, null will be returned.
+	 * 
+	 * @return the type of the cell
+	 */
+	public String getValueType() {
+		return mCellElement.getOfficeValueTypeAttribute();
+	}
+
+	private OfficeValueTypeAttribute.Value getTypeAttr() {
+		String type = mCellElement.getOfficeValueTypeAttribute();
+		return OfficeValueTypeAttribute.Value.enumValueOf(type);
+	}
+
+	/**
+	 * Get the double value of this cell as Double object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "float".
+	 * 
+	 * @return the double value of this cell as a Double object. If the cell
+	 *         value is empty, null will be returned.
+	 *         <p>
+	 *         An IllegalArgumentException will be thrown if the cell type is
+	 *         not "float".
+	 */
+	public Double getDoubleValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.FLOAT) {
+			return mCellElement.getOfficeValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Get the currency value of this cell as Double object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "currency".
+	 * 
+	 * @return the currency value of this cell as a Double object. If the cell
+	 *         value is empty, null will be returned.
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown if the cell type
+	 *             is not "currency".
+	 */
+	public Double getCurrencyValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.CURRENCY) {
+			return mCellElement.getOfficeValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Get the symbol of currency.
+	 * 
+	 * @return the currency symbol
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown if the value type
+	 *             is not "currency".
+	 */
+	public String getCurrencySymbol() {
+		if (getTypeAttr() != OfficeValueTypeAttribute.Value.CURRENCY) {
+			throw new IllegalArgumentException();
+		}
+
+		OdfStyleBase style = getStyleHandler().getStyleElementForRead();
+		if (style != null) {
+			String dataStyleName = style.getOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.STYLE,
+					"data-style-name"));
+			OdfNumberCurrencyStyle dataStyle = mCellElement.getAutomaticStyles().getCurrencyStyle(dataStyleName);
+			if (dataStyle == null) {
+				dataStyle = mDocument.getDocumentStyles().getCurrencyStyle(dataStyleName);
+			}
+			if ((dataStyle != null) && (dataStyle.getCurrencySymbolElement() != null)) {
+				return dataStyle.getCurrencySymbolElement().getTextContent();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Set the value and currency of the cell, and set the value type as
+	 * "currency". If
+	 * <code>value</value> is null, the cell value will be removed.
+	 * 
+	 * @param value
+	 *            the value that will be set
+	 * @param currency
+	 *            the currency that will be set.
+	 * @throws IllegalArgumentException
+	 *             If input currency is null, an IllegalArgumentException will
+	 *             be thrown.
+	 */
+	public void setCurrencyValue(Double value, String currency) {
+		if (currency == null) {
+			throw new IllegalArgumentException("currency shouldn't be null.");
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.CURRENCY);
+		mCellElement.setOfficeValueAttribute(value);
+		mCellElement.setOfficeCurrencyAttribute(currency);
+	}
+
+	/**
+	 * Get the cell percentage value as Double object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "percentage".
+	 * 
+	 * @return the percentage value of this cell as a Double object. If the cell
+	 *         value is empty, null will be returned.
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown if the cell type
+	 *             is not "percentage".
+	 */
+	public Double getPercentageValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.PERCENTAGE) {
+			return mCellElement.getOfficeValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a percentage value and set the value type as
+	 * percentage too. If
+	 * <code>value</value> is null, the cell value will be removed.
+	 * 
+	 * @param value
+	 *            the value that will be set
+	 */
+	public void setPercentageValue(Double value) {
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.PERCENTAGE);
+		mCellElement.setOfficeValueAttribute(value);
+	}
+
+	/**
+	 * Get the text displayed in this cell.
+	 * 
+	 * @return the text displayed in this cell
+	 */
+	public String getDisplayText() {
+		// TODO: This function doesn't work well if a cell contains a list.
+		// Refer to testGetSetTextValue();
+		return TextExtractor.getText(mCellElement);
+	}
+
+	/**
+	 * Set the text displayed in this cell. If content is null, it will display
+	 * the empty string instead.
+	 * <p>
+	 * Please note the displayed text in ODF viewer might be different with the
+	 * value set by this method, because the displayed text in ODF viewer is
+	 * calculated and set by editor. So an adapter can be assigned to adapt cell
+	 * value and value type.
+	 * 
+	 * @param content
+	 *            the displayed text.
+	 * @param adapter
+	 *            the <code>CellValueAdapter</code> used to adapt cell value and
+	 *            value type.
+	 * 
+	 * @see org.odftoolkit.simple.table.CellValueAdapter
+	 * @since 0.3
+	 */
+	public void setDisplayText(String content, CellValueAdapter adapter) {
+		if (content == null) {
+			content = "";
+		}
+		setDisplayTextContent(content, null);
+		// adapt value and value type by display text.
+		adapter.adaptValue(this, content);
+	}
+
+	/**
+	 * Set the text displayed in this cell. If content is null, it will display
+	 * the empty string instead.
+	 * <p>
+	 * Please note the displayed text in ODF viewer might be different with the
+	 * value set by this method, because the displayed text in ODF viewer is
+	 * calculated and set by editor. The cell value and value type will be
+	 * updated follow by the rules which are designed in the
+	 * {@link org.odftoolkit.simple.table.DefaultCellValueAdapter
+	 * <code>DefaultCellValueAdapter</code>}.
+	 * 
+	 * @param content
+	 *            the displayed text.
+	 * 
+	 * @see org.odftoolkit.simple.table.CellValueAdapter
+	 * @see org.odftoolkit.simple.table.DefaultCellValueAdapter
+	 */
+	public void setDisplayText(String content) {
+		setDisplayText(content, CellValueAdapter.DEFAULT_VALUE_ADAPTER);
+	}
+
+	/**
+	 * Set the text displayed in this cell, with a specified style name.
+	 * <p>
+	 * Please note the displayed text in ODF viewer might be different with the
+	 * value set by this method, because the displayed text in ODF viewer is
+	 * calculated and set by editor. So an adapter can be assigned to adapt cell
+	 * value and value type.
+	 * 
+	 * @param content
+	 *            the displayed text. If content is null, it will display the
+	 *            empty string instead.
+	 * @param adapter
+	 *            the <code>CellValueAdapter</code> used to adapt cell value and
+	 *            value type.
+	 * @param stylename
+	 *            the style name. If style name is null, the content will use
+	 *            the default paragraph style.
+	 * 
+	 * @see org.odftoolkit.simple.table.CellValueAdapter
+	 * @since 0.3
+	 */
+	public void setDisplayText(String content, CellValueAdapter adapter, String stylename) {
+		if (content == null) {
+			content = "";
+		}
+		setDisplayTextContent(content, stylename);
+		// adapt value and value type by display text.
+		adapter.adaptValue(this, content);
+	}
+
+	/**
+	 * Set the text displayed in this cell, with a specified style name.
+	 * <p>
+	 * Please note the displayed text in ODF viewer might be different with the
+	 * value set by this method, because the displayed text in ODF viewer is
+	 * calculated and set by editor. The cell value and value type will be
+	 * updated follow by the rules which are designed in the
+	 * {@link org.odftoolkit.simple.table.DefaultCellValueAdapter
+	 * <code>DefaultCellValueAdapter</code>}.
+	 * 
+	 * @param content
+	 *            the displayed text. If content is null, it will display the
+	 *            empty string instead.
+	 * @param stylename
+	 *            the style name. If style name is null, the content will use
+	 *            the default paragraph style.
+	 * 
+	 * @see org.odftoolkit.simple.table.CellValueAdapter
+	 * @see org.odftoolkit.simple.table.DefaultCellValueAdapter
+	 */
+	public void setDisplayText(String content, String stylename) {
+		setDisplayText(content, CellValueAdapter.DEFAULT_VALUE_ADAPTER, stylename);
+	}
+
+	// Set the text content in this cell. If content is null, it will display
+	// the empty string instead.
+	private void setDisplayTextContent(String content, String stylename) {
+		WhitespaceProcessor textProcessor = new WhitespaceProcessor();
+		OdfStylableElement element = OdfElement.findFirstChildNode(OdfTextParagraph.class, mCellElement);
+		if (element == null) {
+			removeContent();
+			element = new OdfTextParagraph((OdfFileDom) mCellElement.getOwnerDocument());
+			mCellElement.appendChild(element);
+		} else {
+			String formerContent = element.getTextContent();
+			while (formerContent == null || "".equals(formerContent)) {
+				OdfTextSpan span = OdfElement.findFirstChildNode(OdfTextSpan.class, element);
+				if (span == null) {
+					break;
+				}
+				formerContent = span.getTextContent();
+				element = span;
+			}
+		}
+		if ((stylename != null) && (stylename.length() > 0)) {
+			element.setStyleName(stylename);
+		}
+		element.setTextContent(null);
+		textProcessor.append(element, content);
+		optimizeCellSize(content);
+	}
+
+	/**
+	 * Set the cell value as a double and set the value type to be "float".
+	 * 
+	 * @param value
+	 *            the double value that will be set. If
+	 *            <code>value</value> is null, the cell value will be removed.
+	 */
+	public void setDoubleValue(Double value) {
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.FLOAT);
+		mCellElement.setOfficeValueAttribute(value);
+		setDisplayTextContent(value + "", null);
+	}
+
+	/**
+	 * Get the cell boolean value as Boolean object.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "boolean".
+	 * 
+	 * @return the Boolean value of cell. If the cell value is empty, null will
+	 *         be returned.
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown if the cell type
+	 *             is not "boolean".
+	 */
+	public Boolean getBooleanValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.BOOLEAN) {
+			return mCellElement.getOfficeBooleanValueAttribute();
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a boolean and set the value type to be boolean. If
+	 * <code>value</value> is null, the cell value will be removed.
+	 * 
+	 * @param value
+	 *            the value of boolean type
+	 */
+	public void setBooleanValue(Boolean value) {
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.BOOLEAN);
+		mCellElement.setOfficeBooleanValueAttribute(value);
+		setDisplayTextContent(value + "", null);
+	}
+
+	/**
+	 * Get the cell date value as Calendar.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "date".
+	 * 
+	 * @return the Calendar value of cell
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown, if the cell type
+	 *             is not "date".
+	 */
+	public Calendar getDateValue() {
+		return getOfficeDateValue(DEFAULT_DATE_FORMAT);
+	}
+	
+	/**
+	 * Get the cell date time value (date and time) as Calendar.
+	 * <p>
+	 * Throw IllegalArgumentException if the cell type is not "date".
+	 * 
+	 * @return the Calendar value of cell
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown, if the cell type
+	 *             is not "date".
+	 */
+	public Calendar getDateTimeValue() {
+		return getOfficeDateValue(DEFAULT_DATE_TIME_FORMAT);
+	}
+	
+	private Calendar getOfficeDateValue(String pattern) {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.DATE) {
+			String dateStr = mCellElement.getOfficeDateValueAttribute();
+			if (dateStr == null) {
+				return null;
+			}
+			Date date = parseString(dateStr, pattern);
+			Calendar calender = Calendar.getInstance();
+			calender.setTime(date);
+			return calender;
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a date, and set the value type to be "date".
+	 * 
+	 * @param date
+	 *            the value of {@link java.util.Calendar java.util.Calendar}
+	 *            type.
+	 */
+	public void setDateValue(Calendar date) {
+		setOfficeDateValue(date, DEFAULT_DATE_FORMAT);
+	}
+	
+	/**
+	 * Sets the cell value as a date with second precision and the value type to be "date".
+	 * @param date 
+	 */
+	public void setDateTimeValue(Calendar date) {
+		setOfficeDateValue(date, DEFAULT_DATE_TIME_FORMAT);
+	}
+
+	private void setOfficeDateValue(Calendar date, String pattern) {
+		if (date == null) {
+			throw new IllegalArgumentException("date shouldn't be null.");
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.DATE);
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(pattern);
+		String svalue = simpleFormat.format(date.getTime());
+		mCellElement.setOfficeDateValueAttribute(svalue);
+		setDisplayTextContent(svalue, null);
+	}
+	
+	/**
+	 * Set the cell style name. When lots of cells have the same style features,
+	 * the user can configuration the first one and set the other's style name
+	 * directly. That will improve the performance.
+	 * 
+	 * @param styleName
+	 *            an exit cell style name.
+	 * @since 0.4
+	 */
+	public void setCellStyleName(String styleName) {
+		mCellElement.setStyleName(styleName);
+	}
+
+	/**
+	 * Get the cell style name.
+	 * 
+	 * @return cell style name.
+	 * @since 0.4
+	 */
+	public String getCellStyleName() {
+		return mCellElement.getStyleName();
+	}
+
+	/**
+	 * Set the cell value as a string, and set the value type to be string.
+	 * 
+	 * @param str
+	 *            the value of string type. If input string is null, an empty
+	 *            string will be set.
+	 */
+	public void setStringValue(String str) {
+		if (str == null) {
+			str = "";
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.STRING);
+		mCellElement.setOfficeStringValueAttribute(str);
+		setDisplayTextContent(str, null);
+	}
+
+	// Note: if you want to change the cell
+	// splitRepeatedCells must be called first in order to
+	// 1. update parent row if the row is the repeated rows.
+	// 2. update the cell itself if the cell is the column repeated cells.
+	void splitRepeatedCells() {
+		Table table = getTable();
+		TableTableRowElement ownerRowElement = getTableRowElement();
+		// 1.if the parent row is the repeated row
+		// the repeated row has to be separated
+		// after this the cell element and repeated index will be updated
+		// according to the new parent row
+		Row ownerRow = table.getRowInstance(ownerRowElement, mnRepeatedRowIndex);
+		if (ownerRow.getRowsRepeatedNumber() > 1) {
+			ownerRow.splitRepeatedRows();
+			// update row element, new row element maybe created.
+			ownerRowElement = ownerRow.maRowElement;
+			mnRepeatedRowIndex = 0;
+		}
+		// 2.if the cell is the column repeated cell
+		// this repeated cell has to be separated
+		int repeateNum = getColumnsRepeatedNumber();
+		if (repeateNum > 1) {
+			// change this repeated cell to three parts: repeated cell before,
+			// new single cell and repeated cell after.
+			Map<TableTableCellElementBase, Vector<Cell>> cellRepository = table.mCellRepository;
+			String tableNamespaceURI = OdfDocumentNamespace.TABLE.getUri();
+			Vector<Cell> oldList = null;
+			if (cellRepository.containsKey(mCellElement)) {
+				oldList = cellRepository.remove(mCellElement);
+			}
+			int offetAfterCurrentCell = repeateNum - mnRepeatedColIndex - 1;
+			TableTableCellElementBase currentCellElement = mCellElement;
+			TableTableCellElementBase newBeforeCellElement = null;
+			TableTableCellElementBase newAfterCellElement = null;
+			if (mnRepeatedColIndex > 0) {
+				newBeforeCellElement = (TableTableCellElementBase) mCellElement.cloneNode(true);
+				if (mnRepeatedColIndex > 1) {
+					newBeforeCellElement.setTableNumberColumnsRepeatedAttribute(mnRepeatedColIndex);
+				} else {
+					newBeforeCellElement.removeAttributeNS(tableNamespaceURI, "number-columns-repeated");
+				}
+				// insert new before repeated cell
+				ownerRowElement.insertBefore(newBeforeCellElement, currentCellElement);
+				// update cell cache
+				if (oldList != null) {
+					Vector<Cell> newBeforeList = new Vector<Cell>(mnRepeatedColIndex);
+					for (int i = 0; i < mnRepeatedColIndex && i < oldList.size(); i++) {
+						Cell beforeCell = oldList.get(i);
+						if (beforeCell != null) {
+							beforeCell.mCellElement = newBeforeCellElement;
+							newBeforeList.add(i, beforeCell);
+						}
+					}
+					cellRepository.put(newBeforeCellElement, newBeforeList);
+				}
+			}
+			currentCellElement.removeAttributeNS(tableNamespaceURI, "number-columns-repeated");
+			if (offetAfterCurrentCell > 0) {
+				newAfterCellElement = (TableTableCellElementBase) currentCellElement.cloneNode(true);
+				ownerRowElement.insertBefore(newAfterCellElement, currentCellElement);
+				currentCellElement = newAfterCellElement;
+				newAfterCellElement = (TableTableCellElementBase) currentCellElement.getNextSibling();
+				if (offetAfterCurrentCell > 1) {
+					newAfterCellElement.setTableNumberColumnsRepeatedAttribute(offetAfterCurrentCell);
+				}
+				// update cell cache
+				if (oldList != null) {
+					Vector<Cell> newAfterList = new Vector<Cell>(offetAfterCurrentCell);
+					for (int i = mnRepeatedColIndex + 1; i < repeateNum && i < oldList.size(); i++) {
+						Cell afterCell = oldList.get(i);
+						if (afterCell != null) {
+							afterCell.mCellElement = newAfterCellElement;
+							afterCell.mnRepeatedColIndex = i - mnRepeatedColIndex - 1;
+							newAfterList.add(afterCell.mnRepeatedColIndex, afterCell);
+						}
+					}
+					cellRepository.put(newAfterCellElement, newAfterList);
+				}
+			}
+			mnRepeatedColIndex = 0;
+			mCellElement = currentCellElement;
+			// update cell cache
+			Vector<Cell> currentList = new Vector<Cell>(1);
+			currentList.add(0, this);
+			cellRepository.put(currentCellElement, currentList);
+		}
+	}
+
+	/**
+	 * Get the cell value as a string.
+	 * <p>
+	 * If the cell type is not string, the display text will be returned.
+	 * 
+	 * @return the string value of this cell, or the display text
+	 */
+	public String getStringValue() {
+		return getDisplayText();
+	}
+
+	/**
+	 * Get the cell value as {@link java.util.Calendar java.util.Calendar}.
+	 * <p>
+	 * Throw exception if the cell type is not "time".
+	 * 
+	 * @return the Calendar value of cell
+	 * @throws IllegalArgumentException
+	 *             an IllegalArgumentException will be thrown if the cell type
+	 *             is not time.
+	 */
+	public Calendar getTimeValue() {
+		if (getTypeAttr() == OfficeValueTypeAttribute.Value.TIME) {
+			String timeStr = mCellElement.getOfficeTimeValueAttribute();
+                        if (timeStr == null) {
+                            return null;
+                        }
+			Date date = parseString(timeStr, DEFAULT_TIME_FORMAT);
+			Calendar calender = Calendar.getInstance();
+			calender.setTime(date);
+			calender.clear(Calendar.YEAR);
+			calender.clear(Calendar.MONTH);
+			calender.clear(Calendar.DAY_OF_MONTH);
+			return calender;
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the cell value as a time and set the value type to be "time" too.
+	 * 
+	 * @param time
+	 *            the value of {@link java.util.Calendar java.util.Calendar}
+	 *            type.
+	 * @throws IllegalArgumentException
+	 *             If input time is null, an IllegalArgumentException exception
+	 *             will be thrown.
+	 */
+	public void setTimeValue(Calendar time) {
+		if (time == null) {
+			throw new IllegalArgumentException("time shouldn't be null.");
+		}
+		splitRepeatedCells();
+		setTypeAttr(OfficeValueTypeAttribute.Value.TIME);
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
+		String svalue = simpleFormat.format(time.getTime());
+		mCellElement.setOfficeTimeValueAttribute(svalue);
+		setDisplayTextContent(svalue, null);
+	}
+
+	private Date parseString(String value, String format) {
+		SimpleDateFormat simpleFormat = new SimpleDateFormat(format);
+		Date simpleDate = null;
+		try {
+			simpleDate = simpleFormat.parse(value);
+		} catch (ParseException e) {
+			Logger.getLogger(Cell.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			return null;
+		}
+		return simpleDate;
+	}
+
+	/**
+	 * Get the background color of this cell.
+	 * <p>
+	 * If no background color is set, default background color "#FFFFFF" will be
+	 * returned.
+	 * 
+	 * @return the background color of this cell
+	 */
+	public Color getCellBackgroundColor() {
+		return getStyleHandler().getBackgroundColor();
+	}
+
+	/**
+	 * Get the background color string of this cell.
+	 * <p>
+	 * If no background color is set, default background color "#FFFFFF" will be
+	 * returned.
+	 * 
+	 * @return the background color of this cell
+	 * 
+	 * @see #getCellBackgroundColor()
+	 * @deprecated As of Simple version 0.3, replaced by
+	 *             <code>getCellBackgroundColor()</code>
+	 */
+	@Deprecated
+	public String getCellBackgroundColorString() {
+		String color = DEFAULT_BACKGROUND_COLOR;
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForRead();
+		if (styleElement != null) {
+			OdfStyleProperty bkColorProperty = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName
+					.newName(OdfDocumentNamespace.FO, "background-color"));
+			String property = styleElement.getProperty(bkColorProperty);
+			if (Color.isValid(property)) {
+				color = property;
+			}
+		}
+		return color;
+	}
+
+	/**
+	 * Set the background color of this cell.
+	 * 
+	 * @param cellBackgroundColor
+	 *            the background color that need to set. If
+	 *            <code>cellBackgroundColor</code> is null, default background
+	 *            color <code>Color.WHITE</code> will be set.
+	 */
+	public void setCellBackgroundColor(Color cellBackgroundColor) {
+		getStyleHandler().setBackgroundColor(cellBackgroundColor);
+	}
+
+	/**
+	 * Set the background color of this cell using string. The string must be a
+	 * valid argument for constructing {@link org.odftoolkit.odfdom.type.Color
+	 * <code>org.odftoolkit.odfdom.type.Color</code>}.
+	 * 
+	 * @param cellBackgroundColor
+	 *            the background color that need to set. If cellBackgroundColor
+	 *            is null, default background color #FFFFFF will be set.
+	 * @see org.odftoolkit.odfdom.type.Color
+	 * @see #setCellBackgroundColor(Color)
+	 * @deprecated As of Simple version 0.3, replaced by
+	 *             <code>setCellBackgroundColor(Color)</code>
+	 */
+	@Deprecated
+	public void setCellBackgroundColor(String cellBackgroundColor) {
+		if (!Color.isValid(cellBackgroundColor)) {
+			Logger.getLogger(Cell.class.getName()).log(Level.WARNING,
+					"Parameter is invalid for datatype Color, default background color #FFFFFF will be set.");
+			cellBackgroundColor = DEFAULT_BACKGROUND_COLOR;
+		}
+		splitRepeatedCells();
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForWrite();
+		if (styleElement != null) {
+			OdfStyleProperty bkColorProperty = OdfStyleProperty.get(OdfStylePropertiesSet.TableCellProperties, OdfName
+					.newName(OdfDocumentNamespace.FO, "background-color"));
+			styleElement.setProperty(bkColorProperty, cellBackgroundColor);
+		}
+	}
+
+	/**
+	 * Get the column spanned number of this cell.
+	 * 
+	 * @return the column spanned number
+	 */
+	public int getColumnSpannedNumber() {
+		if (mCellElement instanceof TableCoveredTableCellElement) {
+			return 1;
+		}
+		Integer value = ((TableTableCellElement) mCellElement).getTableNumberColumnsSpannedAttribute();
+		if (value != null) {
+			return value.intValue();
+		}
+		return DEFAULT_COLUMN_SPANNED_NUMBER;
+	}
+
+	/**
+	 * Get the column repeated number of this cell.
+	 * 
+	 * @return the column repeated number
+	 */
+	int getColumnsRepeatedNumber() {
+		Integer value = mCellElement.getTableNumberColumnsRepeatedAttribute();
+		if (value != null) {
+			return value.intValue();
+		}
+		return DEFAULT_COLUMNS_REPEATED_NUMBER;
+	}
+
+	/**
+	 * Get the row spanned number of this cell.
+	 * 
+	 * @return the row spanned number
+	 */
+	public int getRowSpannedNumber() {
+		if (mCellElement instanceof TableCoveredTableCellElement) {
+			return 1;
+		}
+		Integer value = ((TableTableCellElement) mCellElement).getTableNumberRowsSpannedAttribute();
+		if (value != null) {
+			return value.intValue();
+		}
+		return DEFAULT_ROW_SPANNED_NUMBER;
+	}
+
+	/**
+	 * Set the column spanned number.
+	 * 
+	 * @param spannedNum
+	 *            the column spanned number to be set. If spannedNum is less
+	 *            than 1, default column spanned number 1 will be set.
+	 */
+	void setColumnSpannedNumber(int spannedNum) {
+		if (spannedNum < 1) {
+			spannedNum = DEFAULT_COLUMN_SPANNED_NUMBER;
+		}
+		splitRepeatedCells();
+		if (mCellElement instanceof TableTableCellElement) {
+			((TableTableCellElement) mCellElement).setTableNumberColumnsSpannedAttribute(new Integer(spannedNum));
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Set the column repeated number.
+	 * 
+	 * @param repeatedNum
+	 *            the column repeated number that need to be set. If repeatedNum
+	 *            is less than 1, default columns repeated number 1 will be set.
+	 */
+	void setColumnsRepeatedNumber(int repeatedNum) {
+		if (repeatedNum < 1) {
+			repeatedNum = DEFAULT_COLUMNS_REPEATED_NUMBER;
+		}
+		mCellElement.setTableNumberColumnsRepeatedAttribute(new Integer(repeatedNum));
+	}
+
+	/**
+	 * Set the row spanned number.
+	 * 
+	 * @param spannedNum
+	 *            row spanned number that need to be set the row spanned number
+	 *            that need to be set. If spannedNum is less than 1, default row
+	 *            spanned number 1 will be set.
+	 */
+	void setRowSpannedNumber(int spannedNum) {
+		if (spannedNum < 1) {
+			spannedNum = DEFAULT_ROW_SPANNED_NUMBER;
+		}
+		splitRepeatedCells();
+		if (mCellElement instanceof TableTableCellElement) {
+			((TableTableCellElement) mCellElement).setTableNumberRowsSpannedAttribute(new Integer(spannedNum));
+		} else {
+			throw new IllegalArgumentException();
+		}
+	}
+
+	/**
+	 * Judge if the ODF DOM element of this cell is the covered cell element.
+	 * 
+	 * @return true if the Odf element is TableCoveredTableCellElement
+	 */
+	boolean isCoveredElement() {
+		if (mCellElement instanceof TableCoveredTableCellElement) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Get the style name of this cell.
+	 * 
+	 * @return the name of the style
+	 */
+	public String getStyleName() {
+		OdfStyleBase style = getStyleHandler().getStyleElementForRead();
+		if (style == null) {
+			return "";
+		}
+		if (style instanceof OdfStyle)
+			return ((OdfStyle) style).getStyleNameAttribute();
+		else
+			return "";
+	}
+
+	/**
+	 * Set a formula to the cell.
+	 * <p>
+	 * Please note, the parameter <code>formula</code> will not be checked and
+	 * interpreted; the cell value will not be calculated. It's just simply set
+	 * as a formula attribute.
+	 * 
+	 * @param formula
+	 *            the formula that need to be set.
+	 * @see org.odftoolkit.odfdom.dom.attribute.table.TableFormulaAttribute
+	 * @throws IllegalArgumentException
+	 *             if formula is null, an IllegalArgumentException will be
+	 *             thrown.
+	 */
+	public void setFormula(String formula) {
+		if (formula == null) {
+			throw new IllegalArgumentException("formula shouldn't be null.");
+		}
+		splitRepeatedCells();
+		mCellElement.setTableFormulaAttribute(formula);
+	}
+
+	/**
+	 * Get the formula string of the cell.
+	 * 
+	 * @return the formula representation of the cell
+	 *         <p>
+	 *         If the cell does not contain a formula, null will be returned.
+	 * 
+	 */
+	public String getFormula() {
+		return mCellElement.getTableFormulaAttribute();
+	}
+
+	// /**
+	// * get the error value of the cell
+	// * if the formula can not be calculated, an error will be set
+	// * @return
+	// * return 0 if the cell has no error
+	// * return the error value of the cell if the formula result can not be
+	// calculated
+	// * such as divided by 0
+	// */
+	// public long getError()
+	// {
+	// return 0;
+	// }
+	/**
+	 * Set the currency symbol and overall format of a currency cell.
+	 * <p>
+	 * Please note the overall format includes the symbol character, for
+	 * example: $#,##0.00.
+	 * <p>
+	 * This function only works for currency.
+	 * 
+	 * @param currencySymbol
+	 *            the currency symbol
+	 * @param format
+	 *            overall format
+	 * @throws IllegalArgumentException
+	 *             if input currencySymbol or format is null, an
+	 *             IllegalArgumentException will be thrown.
+	 */
+	public void setCurrencyFormat(String currencySymbol, String format) {
+		if (currencySymbol == null) {
+			throw new IllegalArgumentException("currencySymbol shouldn't be null.");
+		}
+		if (format == null) {
+			throw new IllegalArgumentException("format shouldn't be null.");
+		}
+		splitRepeatedCells();
+		String type = mCellElement.getOfficeValueTypeAttribute();
+		OfficeValueTypeAttribute.Value typeValue = null;
+		msFormatString = format;
+		if (type != null) {
+			typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);
+		}
+
+		if (typeValue != OfficeValueTypeAttribute.Value.CURRENCY) {
+			throw new IllegalArgumentException();
+		}
+
+		OdfNumberCurrencyStyle currencyStyle = new OdfNumberCurrencyStyle((OdfFileDom) mCellElement.getOwnerDocument(),
+				currencySymbol, format, getUniqueCurrencyStyleName());
+		mCellElement.getAutomaticStyles().appendChild(currencyStyle);
+		setDataDisplayStyleName(currencyStyle.getStyleNameAttribute());
+		Double value = getCurrencyValue();
+
+		// set display text
+		if (value != null) {
+			setDisplayTextContent(formatCurrency(currencyStyle, value.doubleValue()), null);
+		}
+	}
+
+	// This method doesn't handle style:map element.
+	private String formatCurrency(OdfNumberCurrencyStyle currencyStyle, double value) {
+		String valuestr = "";
+		for (Node m : new DomNodeList(currencyStyle.getChildNodes())) {
+			if (m instanceof NumberCurrencySymbolElement) {
+				valuestr += m.getTextContent();
+			} else if (m instanceof NumberNumberElement) {
+				String numberformat = currencyStyle.getNumberFormat();
+				valuestr += (new DecimalFormat(numberformat)).format(value);
+			} else if (m instanceof NumberTextElement) {
+				String textcontent = m.getTextContent();
+				if (textcontent == null || textcontent.length() == 0) {
+					textcontent = " ";
+				}
+				valuestr += textcontent;
+			}
+		}
+		return valuestr;
+	}
+
+/**
+	 * Set the format string of the cell.
+	 * <p>
+	 * This function only works for float, date, time and percentage, otherwise an
+	 * {@link java.lang.IllegalArgumentException} will be thrown. 
+	 * <p>
+	 * For value type float and percentage, the <code>formatStr</code> must follow the encoding 
+	 * rule of {@link java.text.DecimalFormat <code>java.text.DecimalFormat</code>}.
+	 * For value type date and time, the <code>formatStr</code> must follow the encoding 
+	 * rule of {@link java.text.SimpleDateFormat <code>java.text.SimpleDateFormat</code>}.
+	 * <p>
+	 * Refer to {@link org.odftoolkit.simple.table.Cell#setCurrencyFormat <code>setCurrencyFormat</code>} to set the format of currency.
+	 * <p>
+	 * If the cell value type is not set, the method will try to give it a value type, according 
+	 * to common ordination. The adapt order is: percentage-> time-> date-> float.
+	 * <blockquote>
+	 * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing ValueType, Distinguish Symbol
+	 * and Distinguish Priority.">
+	 *     <tr bgcolor="#ccccff">
+	 *          <th align=left>ValueType
+	 *          <th align=left>Distinguish Symbol
+	 *          <th align=left>Distinguish Priority
+	 *     <tr valign=top>
+	 *          <td>percentage
+	 *          <td>%
+	 *          <td>1
+	 *     <tr valign=top>
+	 *          <td>time
+	 *          <td>H, k, m, s, S
+	 *          <td>2
+	 *     <tr valign=top>
+	 *          <td>date
+	 *          <td>y, M, w, W, D, d, F, E, K, h
+	 *          <td>3
+	 *     <tr valign=top>
+	 *          <td>float
+	 *          <td>#, 0
+	 *          <td>4
+	 * </table>
+	 * </blockquote>
+	 * The adapt result may be inaccurate, so you'd better set value type before call this method. 
+	 * If adaptive failed, an {@link java.lang.UnsupportedOperationException} will be thrown.
+	 * <p>
+	 * @param formatStr	the cell need be formatted as this specified format string.
+	 * @throws IllegalArgumentException if <code>formatStr</code> is null or the cell value type is supported.
+	 * @throws UnsupportedOperationException if the adaptive failed, when cell value type is not set.
+	 * @see java.text.SimpleDateFormat
+	 * @see java.text.DecimalFormat
+	 */
+	public void setFormatString(String formatStr) {
+		if (formatStr == null) {
+			throw new IllegalArgumentException("formatStr shouldn't be null.");
+		}
+		String type = getValueType();
+		if (type == null) {
+			if (formatStr.contains("%")) {
+				setValueType("percentage");
+			} else if (formatStr.contains("H") || formatStr.contains("k") || formatStr.contains("m")
+					|| formatStr.contains("s") || formatStr.contains("S")) {
+				setValueType("time");
+			} else if (formatStr.contains("y") || formatStr.contains("M") || formatStr.contains("w")
+					|| formatStr.contains("W") || formatStr.contains("D") || formatStr.contains("d")
+					|| formatStr.contains("F") || formatStr.contains("E") || formatStr.contains("K")
+					|| formatStr.contains("h")) {
+				setValueType("date");
+			} else if (formatStr.contains("#") || formatStr.contains("0")) {
+				setValueType("float");
+			} else {
+				throw new UnsupportedOperationException("format string: " + formatStr
+						+ " can't be adapted to a possible value type.");
+			}
+			type = getValueType();
+		}
+		setCellFormatString(formatStr, type);
+	}
+
+	private void setCellFormatString(String formatStr, String type) {
+		OfficeValueTypeAttribute.Value typeValue = null;
+		msFormatString = formatStr;
+		splitRepeatedCells();
+		typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);
+		if (typeValue == OfficeValueTypeAttribute.Value.FLOAT) {
+			OdfNumberStyle numberStyle = new OdfNumberStyle((OdfFileDom) mCellElement.getOwnerDocument(), formatStr,
+					getUniqueNumberStyleName());
+			mCellElement.getAutomaticStyles().appendChild(numberStyle);
+			setDataDisplayStyleName(numberStyle.getStyleNameAttribute());
+			Double value = getDoubleValue();
+			if (value != null) {
+				setDisplayTextContent((new DecimalFormat(formatStr)).format(value.doubleValue()), null);
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.DATE) {
+			OdfNumberDateStyle dateStyle = new OdfNumberDateStyle((OdfFileDom) mCellElement.getOwnerDocument(),
+					formatStr, getUniqueDateStyleName(), null);
+			mCellElement.getAutomaticStyles().appendChild(dateStyle);
+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());
+			String dateStr = mCellElement.getOfficeDateValueAttribute();
+			if (dateStr != null) {
+				Calendar date = getDateValue();
+				setDisplayTextContent((new SimpleDateFormat(formatStr)).format(date.getTime()), null);
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.TIME) {
+			OdfNumberTimeStyle timeStyle = new OdfNumberTimeStyle((OdfFileDom) mCellElement.getOwnerDocument(),
+					formatStr, getUniqueDateStyleName());
+			mCellElement.getAutomaticStyles().appendChild(timeStyle);
+			setDataDisplayStyleName(timeStyle.getStyleNameAttribute());
+			String timeStr = mCellElement.getOfficeTimeValueAttribute();
+			if (timeStr != null) {
+				Calendar time = getTimeValue();
+				setDisplayTextContent((new SimpleDateFormat(formatStr)).format(time.getTime()), null);
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.PERCENTAGE) {
+			OdfNumberPercentageStyle dateStyle = new OdfNumberPercentageStyle((OdfFileDom) mCellElement
+					.getOwnerDocument(), formatStr, getUniquePercentageStyleName());
+			mCellElement.getAutomaticStyles().appendChild(dateStyle);
+			setDataDisplayStyleName(dateStyle.getStyleNameAttribute());
+			Double value = getPercentageValue();
+			if (value != null) {
+				setDisplayTextContent((new DecimalFormat(formatStr)).format(value.doubleValue()), null);
+			}
+		} else {
+			throw new IllegalArgumentException("This function doesn't support " + typeValue + " cell.");
+		}
+	}
+
+	private void setDataDisplayStyleName(String name) {
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForWrite();
+		if (styleElement != null) {
+			styleElement.setOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.STYLE, "data-style-name"), name);
+		}
+	}
+
+	private String getDataDisplayStyleName() {
+		String datadisplayStylename = null;
+		OdfStyleBase styleElement = getStyleHandler().getStyleElementForRead();
+		if (styleElement != null) {
+			datadisplayStylename = styleElement.getOdfAttributeValue(OdfName.newName(OdfDocumentNamespace.STYLE,
+					"data-style-name"));
+		}
+
+		return datadisplayStylename;
+	}
+
+	private String getUniqueNumberStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("n%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getNumberStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	private String getUniqueDateStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("d%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getDateStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	private String getUniquePercentageStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("p%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getPercentageStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	// private String getUniqueCellStyleName() {
+	// String unique_name;
+	// OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+	// do {
+	// unique_name = String.format("a%06x", (int) (Math.random() * 0xffffff));
+	// } while (styles.getStyle(unique_name, OdfStyleFamily.TableCell) != null);
+	// return unique_name;
+	// }
+	private String getUniqueCurrencyStyleName() {
+		String unique_name;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		do {
+			unique_name = String.format("c%06x", (int) (Math.random() * 0xffffff));
+		} while (styles.getCurrencyStyle(unique_name) != null);
+		return unique_name;
+	}
+
+	/**
+	 * Get the format string of the cell.
+	 * 
+	 * @return the format string of the cell
+	 */
+	public String getFormatString() {
+		String type = mCellElement.getOfficeValueTypeAttribute();
+		OfficeValueTypeAttribute.Value typeValue = null;
+		if (type != null) {
+			typeValue = OfficeValueTypeAttribute.Value.enumValueOf(type);
+		}
+
+		if (typeValue == OfficeValueTypeAttribute.Value.FLOAT) {
+			String name = getDataDisplayStyleName();
+			OdfNumberStyle style = mCellElement.getAutomaticStyles().getNumberStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getNumberStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.DATE) {
+			String name = getDataDisplayStyleName();
+			OdfNumberDateStyle style = mCellElement.getAutomaticStyles().getDateStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getDateStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.TIME) {
+			String name = getDataDisplayStyleName();
+			OdfNumberDateStyle style = mCellElement.getAutomaticStyles().getDateStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getDateStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.CURRENCY) {
+			String name = getCurrencyDisplayStyleName();
+			OdfNumberCurrencyStyle dataStyle = mCellElement.getAutomaticStyles().getCurrencyStyle(name);
+			if (dataStyle == null) {
+				dataStyle = mDocument.getDocumentStyles().getCurrencyStyle(name);
+			}
+			if (dataStyle != null) {
+				return dataStyle.getFormat();
+			}
+		} else if (typeValue == OfficeValueTypeAttribute.Value.PERCENTAGE) {
+			String name = getDataDisplayStyleName();
+			OdfNumberPercentageStyle style = mCellElement.getAutomaticStyles().getPercentageStyle(name);
+			if (style == null) {
+				style = mDocument.getDocumentStyles().getPercentageStyle(name);
+			}
+			if (style != null) {
+				return style.getFormat();
+			}
+		}
+		return null;
+	}
+
+	private String getCurrencyDisplayStyleName() {
+		String name = getDataDisplayStyleName();
+		OdfNumberCurrencyStyle dataStyle = mCellElement.getAutomaticStyles().getCurrencyStyle(name);
+		if (dataStyle == null) {
+			dataStyle = mDocument.getDocumentStyles().getCurrencyStyle(name);
+		}
+
+		if (dataStyle != null) {
+			return dataStyle.getConditionStyleName(getCurrencyValue());
+		}
+		return null;
+	}
+
+	/**
+	 * Remove all the text content of cell.
+	 */
+	public void removeTextContent() {
+		splitRepeatedCells();
+		// delete text:p child element
+		Node node = mCellElement.getFirstChild();
+		while (node != null) {
+			Node nextNode = node.getNextSibling();
+			if (node instanceof TextPElement || node instanceof TextHElement || node instanceof TextListElement) {
+				mCellElement.removeChild(node);
+			}
+			node = nextNode;
+		}
+	}
+
+	/**
+	 * Remove all the content of the cell.
+	 */
+	public void removeContent() {
+		splitRepeatedCells();
+		Node node = mCellElement.getFirstChild();
+		while (node != null) {
+			Node nextNode = node.getNextSibling();
+			mCellElement.removeChild(node);
+			node = nextNode;
+		}
+	}
+
+	/**
+	 * Append the content of another cell.
+	 * 
+	 * @param fromCell
+	 *            another cell whose content will be appended to this cell
+	 */
+	void appendContentFrom(Cell fromCell) {
+		splitRepeatedCells();
+		TableTableCellElementBase cell = fromCell.getOdfElement();
+		Node node = cell.getFirstChild();
+		while (node != null) {
+			if (node instanceof OdfTextParagraph) {
+				if (!TextExtractor.getText((OdfTextParagraph) node).equals("")) {
+					mCellElement.appendChild(node.cloneNode(true));
+				}
+			} else {
+				mCellElement.appendChild(node.cloneNode(true));
+			}
+			node = node.getNextSibling();
+		}
+	}
+
+	/*****************************************
+	 * Moved from Table
+	 * 
+	 *******************************************/
+	/**
+	 * This method is invoked by insertCellBefore and insertRowBefore When it is
+	 * needed to clone a cell and the cell is a cover cell, for some instance,
+	 * we need to find the cell who covers this cell. So this method is to get
+	 * the cell who covers this cell
+	 */
+	Cell getCoverCell() {
+		int startRowi = getRowIndex();
+		int startColumni = getColumnIndex();
+
+		for (int i = startRowi; i >= 0; i--) {
+			Row aRow = mOwnerTable.getRowByIndex(i);
+			for (int j = startColumni; j >= 0; j--) {
+				if (i == startRowi && j == startColumni) {
+					continue;
+				}
+				Cell cell = aRow.getCellByIndex(j);
+				if (cell.getOdfElement() instanceof TableTableCellElement) {
+					TableTableCellElement cellEle = (TableTableCellElement) cell.getOdfElement();
+					if ((cellEle.getTableNumberColumnsSpannedAttribute() + j > startColumni)
+							&& (cellEle.getTableNumberRowsSpannedAttribute() + i > startRowi)) {
+						return mOwnerTable.getCellInstance(cellEle, 0, 0);
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * This method is invoked by getCoverCell. It's to get the cell in a same
+	 * row who covers this cell.
+	 * 
+	 * @return the cell in a same row who covers this cell
+	 *         <p>
+	 *         Null if there is no cell who covers this cell
+	 */
+	Cell getCoverCellInSameRow() {
+		int startRowi = getRowIndex();
+		int startColumni = getColumnIndex();
+
+		for (int j = startColumni - 1; j >= 0; j--) {
+			Cell cell = mOwnerTable.getCellByPosition(j, startRowi);
+			if (cell.getOdfElement() instanceof TableCoveredTableCellElement) {
+				continue;
+			}
+
+			int oldSpanN = cell.getColumnSpannedNumber();
+			if (oldSpanN + j > startColumni) {
+				// cell.setColumnSpannedNumber(oldSpanN-1);
+				return cell;
+			}
+			return null;
+		}
+		return null;
+	}
+
+	/**
+	 * This method is invoked by getCoverCell
+	 */
+	Cell getCoverCellInSameColumn() {
+		int startRowi = getRowIndex();
+		int startColumni = getColumnIndex();
+
+		for (int i = startRowi - 1; i >= 0; i--) {
+			Cell cell = mOwnerTable.getCellByPosition(startColumni, i);
+			if (cell.getOdfElement() instanceof TableCoveredTableCellElement) {
+				continue;
+			}
+
+			int oldSpanN = cell.getRowSpannedNumber();
+			if (oldSpanN + i > startRowi) {
+				// cell.setRowSpannedNumber(oldSpanN-1);
+				return cell;
+			}
+			return null;
+		}
+		return null;
+	}
+
+	/**
+	 * Return the font definition for this cell.
+	 * <p>
+	 * Null will be returned if there is no explicit style definition, or even
+	 * default style definition, for this cell.
+	 * 
+	 * @return the font definition null if there is no style definition for this
+	 *         cell
+	 * 
+	 * @since 0.3
+	 */
+	public Font getFont() {
+		return getStyleHandler().getFont(Document.ScriptType.WESTERN);
+
+	}
+
+	/**
+	 * Set font style for this cell.
+	 * 
+	 * @param font
+	 *            - the font
+	 * 
+	 * @since 0.3
+	 */
+	public void setFont(Font font) {
+		getStyleHandler().setFont(font);
+	}
+
+	/**
+	 * Set the border style definitions for this cell.
+	 * <p>
+	 * This method will invoke
+	 * <code>CellStyleHandler.setBorders(Border border, SimpleCellBordersType bordersType).</code>
+	 * 
+	 * @param bordersType
+	 *            - A predefined border type
+	 * @param border
+	 *            - border style description
+	 * 
+	 * @see CellStyleHandler#setBorders(Border border,
+	 *      StyleTypeDefinitions.CellBordersType bordersType)
+	 * @since 0.3
+	 */
+	public void setBorders(StyleTypeDefinitions.CellBordersType bordersType, Border border) {
+		getStyleHandler().setBorders(border, bordersType);
+	}
+
+	/**
+	 * Return the border setting for a specific border.
+	 * <p>
+	 * This method will invoke
+	 * <code>CellStyleHandler.getBorder(SimpleCellBordersType type).</code>
+	 * 
+	 * @param type
+	 *            - the border type which describes a single border
+	 * @return the border setting
+	 * 
+	 * @see CellStyleHandler#getBorder(StyleTypeDefinitions.CellBordersType
+	 *      type)
+	 * @since 0.3.5
+	 */
+	public Border getBorder(CellBordersType type) {
+		return getStyleHandler().getBorder(type);
+	}
+
+	/**
+	 * Get the note text of this table cell. If there is no note on this cell,
+	 * <code>null</code> will be returned.
+	 * <p>
+	 * The note may contain text list, text paragraph and styles, but this
+	 * method extracts only text from them.
+	 * 
+	 * @return the note text of this cell.
+	 */
+	public String getNoteText() {
+		String noteString = null;
+		OfficeAnnotationElement annotation = OdfElement.findFirstChildNode(OfficeAnnotationElement.class, mCellElement);
+		if (annotation != null) {
+			noteString = "";
+			Node n = annotation.getFirstChild();
+			while (n != null) {
+				Node m = n.getNextSibling();
+				if (n instanceof TextPElement || n instanceof TextListElement) {
+					noteString += TextExtractor.getText((OdfElement) n);
+				}
+				n = m;
+			}
+		}
+		return noteString;
+	}
+
+	/**
+	 * Set note text for this table cell. This method creates a text paragraph
+	 * without style as note. The note text is text paragraph content.
+	 * <p>
+	 * Only simple text is supported to receive in this method, which is a sub
+	 * function of office annotation. So overwriting a note with text might
+	 * loose structure and styles.
+	 * 
+	 * @param note
+	 *            note content.
+	 */
+	public void setNoteText(String note) {
+		splitRepeatedCells();
+		OfficeAnnotationElement annotation = OdfElement.findFirstChildNode(OfficeAnnotationElement.class, mCellElement);
+		if (annotation == null) {
+			OdfFileDom dom = (OdfFileDom) mCellElement.getOwnerDocument();
+			annotation = (OfficeAnnotationElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+					OdfDocumentNamespace.OFFICE, "annotation"));
+		}
+		TextPElement noteElement = OdfElement.findFirstChildNode(TextPElement.class, annotation);
+		if (noteElement == null) {
+			noteElement = annotation.newTextPElement();
+		}
+		noteElement.setTextContent(note);
+		DcCreatorElement dcCreatorElement = OdfElement.findFirstChildNode(DcCreatorElement.class, annotation);
+		if (dcCreatorElement == null) {
+			dcCreatorElement = annotation.newDcCreatorElement();
+		}
+		dcCreatorElement.setTextContent(System.getProperty("user.name"));
+		String dcDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(new Date());
+		DcDateElement dcDateElement = OdfElement.findFirstChildNode(DcDateElement.class, annotation);
+		if (dcDateElement == null) {
+			dcDateElement = annotation.newDcDateElement();
+		}
+		dcDateElement.setTextContent(dcDate);
+		mCellElement.appendChild(annotation);
+	}
+
+	/**
+	 * Insert an Image from the specified uri to cell. Note: if there is any
+	 * other text content in this cell, it will be removed.
+	 * 
+	 * @param imageUri
+	 *            The URI of the image that will be added to the cell, add image
+	 *            stream to the package, in the 'Pictures/' graphic directory
+	 *            with the same image file name as in the URI. If the imageURI
+	 *            is relative first the user.dir is taken to make it absolute.
+	 * @since 0.4.5
+	 */
+	public Image setImage(URI imageUri) {
+		if (imageUri == null)
+			return null;
+
+		splitRepeatedCells();
+		Image newImage;
+		try {
+			NodeList cellPs = mCellElement.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+			if (cellPs != null && cellPs.getLength() > 0) {
+				for (int i = 0; i < cellPs.getLength(); i++) {
+					mCellElement.removeChild(cellPs.item(i));
+				}
+			}
+
+			if (mOwnerTable.mIsSpreadsheet) {
+				newImage = Image.newImage(this, imageUri);
+			} else {
+				OdfFileDom dom = (OdfFileDom) mCellElement.getOwnerDocument();
+				TextPElement pElement = dom.newOdfElement(TextPElement.class);
+				mCellElement.appendChild(pElement);
+				newImage = Image.newImage(Paragraph.getInstanceof(pElement), imageUri);
+			}
+			if (imageUri != null) {
+				FrameRectangle rect = newImage.getRectangle();
+				double height = rect.getHeight();
+				double width = rect.getWidth();
+				long widthInMI = new Double(width / 100).longValue();
+				Column column = getTableColumn();
+				if (widthInMI > column.getWidth()) {
+					column.setWidth(widthInMI);
+				}
+
+				long heightInMI = new Double(height / 100).longValue();
+				Row row = getTableRow();
+				if (heightInMI > row.getHeight()) {
+					row.setHeight(heightInMI, false);
+				}
+				return newImage;
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(Cell.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the Image from the specified cell.
+	 * 
+	 * @return If there is a image exist in this cell, An {@link java.awt.Image
+	 *         Image} will be returned.
+	 * @since 0.4.5
+	 * @deprecated
+	 */
+	public BufferedImage getBufferedImage() {
+		try {
+			TextPElement pElement = OdfElement.findFirstChildNode(TextPElement.class, mCellElement);
+			if (pElement != null) {
+				DrawFrameElement drawFrame = OdfElement.findFirstChildNode(DrawFrameElement.class, pElement);
+				if (drawFrame != null) {
+					DrawImageElement imageElement = OdfElement.findFirstChildNode(DrawImageElement.class, drawFrame);
+					if (imageElement != null) {
+						String packagePath = imageElement.getXlinkHrefAttribute();
+						OdfFileDom dom = (OdfFileDom) mCellElement.getOwnerDocument();
+						OdfPackage mOdfPackage = dom.getDocument().getPackage();
+						InputStream is = mOdfPackage.getInputStream(packagePath);
+						BufferedImage image = ImageIO.read(is);
+						return image;
+					}
+				}
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(Cell.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the image from the specified cell.
+	 * 
+	 * @return If there is a image exist in this cell, an
+	 *         {@link org.odftoolkit.simple.draw.Image Image} will be returned.
+	 * @since 0.5.5
+	 */
+	public Image getImage() {
+		try {
+			TextPElement pElement = OdfElement.findFirstChildNode(TextPElement.class, mCellElement);
+			if (pElement != null) {
+				DrawFrameElement drawFrame = OdfElement.findFirstChildNode(DrawFrameElement.class, pElement);
+				if (drawFrame != null) {
+					DrawImageElement imageElement = OdfElement.findFirstChildNode(DrawImageElement.class, drawFrame);
+					return Image.getInstanceof(imageElement);
+				}
+			} else {
+				DrawFrameElement drawFrame = OdfElement.findFirstChildNode(DrawFrameElement.class, mCellElement);
+				if (drawFrame != null) {
+					DrawImageElement imageElement = OdfElement.findFirstChildNode(DrawImageElement.class, drawFrame);
+					return Image.getInstanceof(imageElement);
+				}
+			}
+		} catch (Exception ex) {
+			Logger.getLogger(Cell.class.getName()).log(Level.SEVERE, null, ex);
+		}
+		return null;
+	}
+	
+	/**
+	 * Return style handler for this cell
+	 * 
+	 * @return the style handler
+	 * 
+	 * @since 0.3
+	 */
+	public CellStyleHandler getStyleHandler() {
+		if (mStyleHandler == null)
+			mStyleHandler = new CellStyleHandler(this);
+		return mStyleHandler;
+	}
+
+	public OdfElement getListContainerElement() {
+		return getListContainerImpl().getListContainerElement();
+	}
+
+	public org.odftoolkit.simple.text.list.List addList() {
+		Document ownerDocument = getTable().getOwnerDocument();
+		if (ownerDocument instanceof SpreadsheetDocument) {
+			throw new UnsupportedOperationException(
+					"Open Office and Symphony can't show a list in spreadsheet document cell.");
+		} else {
+			return getListContainerImpl().addList();
+		}
+	}
+
+	public org.odftoolkit.simple.text.list.List addList(ListDecorator decorator) {
+		Document ownerDocument = getTable().getOwnerDocument();
+		if (ownerDocument instanceof SpreadsheetDocument) {
+			throw new UnsupportedOperationException(
+					"Open Office and Symphony can't show a list in spreadsheet document cell.");
+		} else {
+			return getListContainerImpl().addList(decorator);
+		}
+	}
+
+	public void clearList() {
+		getListContainerImpl().clearList();
+	}
+
+	public Iterator<org.odftoolkit.simple.text.list.List> getListIterator() {
+		return getListContainerImpl().getListIterator();
+	}
+
+	public boolean removeList(org.odftoolkit.simple.text.list.List list) {
+		return getListContainerImpl().removeList(list);
+	}
+
+	/**
+	 * Creates a new paragraph and append text
+	 * 
+	 * @param text
+	 * @return the new paragraph
+	 * @throws Exception
+	 *             if the file DOM could not be created.
+	 * @since 0.5.5
+	 */
+	public Paragraph addParagraph(String text) {
+		Paragraph para = getParagraphContainerImpl().addParagraph(text);
+		return para;
+	}
+
+	/**
+	 * Remove paragraph from this document
+	 * 
+	 * @param para
+	 *            - the instance of paragraph
+	 * @return true if the paragraph is removed successfully, false if errors
+	 *         happen.
+	 *         
+	 * @since 0.5.5
+	 */
+	public boolean removeParagraph(Paragraph para) {
+		return getParagraphContainerImpl().removeParagraph(para);
+	}
+	
+	/**
+	 * Get the ODF element which can have <text:p> as child element directly.
+	 * 
+	 * @return - an ODF element which can have paragraph as child.
+	 * 
+	 * @since 0.5.5
+	 */
+	public OdfElement getParagraphContainerElement() {
+		return getParagraphContainerImpl().getParagraphContainerElement();
+	}
+	/**
+	 * Return a paragraph with a given index.
+	 * <p>
+	 * An index of zero represents the first paragraph.
+	 * <p>
+	 * If empty paragraph is skipped, the empty paragraph won't be counted.
+	 * 
+	 * @param index
+	 *            - the index started from 0.
+	 * @param isEmptyParagraphSkipped
+	 *            - whether the empty paragraph is skipped or not
+	 * @return the paragraph with a given index
+	 * 
+	 * @since 0.5.5
+	 */
+	public Paragraph getParagraphByIndex(int index, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByIndex(index, isEmptyParagraphSkipped);
+	}
+	
+	/**
+	 * Return a paragraph with a given index. The index is in reverse order.
+	 * <p>
+	 * An index of zero represents the last paragraph.
+	 * <p>
+	 * If empty paragraph is skipped, the empty paragraph won't be counted.
+	 * 
+	 * @param reverseIndex
+	 *            - the index started from 0 in reverse order.
+	 * @param isEmptyParagraphSkipped
+	 *            - whether the empty paragraph is skipped or not
+	 * @return the paragraph with a given index
+	 * 
+	 * @since 0.5.5
+	 */
+	public Paragraph getParagraphByReverseIndex(int reverseIndex, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByReverseIndex(reverseIndex, isEmptyParagraphSkipped);
+	}
+	
+	/**
+	 * Return an Iterator of the paragraph in this container.
+	 * 
+	 * @return an Iterator of the paragraph in this container
+	 * 
+	 * @since 0.5.5
+	 */
+	public Iterator<Paragraph> getParagraphIterator() {
+		return getParagraphContainerImpl().getParagraphIterator();
+	}
+
+	public OdfElement getFrameContainerElement() {
+		return mCellElement;
+	}
+
+	/**
+	 * Specifies the allowed values of this cell in a list. Any value out of
+	 * this list is invalid.
+	 * <p>
+	 * NOTE: Now, the validity rule does not take effect when a cell value
+	 * is updated by Simple ODF API yet.
+	 * 
+	 * @param values
+	 *            the list of allowed values.
+	 * @since 0.6
+	 */
+	public void setValidityList(List<String> values) {
+		try {
+			TableContentValidationElement validation = getContentValidationEle();
+			validation.setTableAllowEmptyCellAttribute(true);
+			String split = "";
+			StringBuilder listStr = new StringBuilder("");
+			for (String value : values) {
+				listStr.append(split);
+				listStr.append("\"");
+				listStr.append(value);
+				listStr.append("\"");
+				split = ";";
+			}
+			validation.setTableConditionAttribute("cell-content-is-in-list(" + listStr + ")");
+			String tableName = getTableElement().getTableNameAttribute();
+			validation.setTableBaseCellAddressAttribute(tableName + "." + getCellAddress());
+			validation.setTableDisplayListAttribute("unsorted");
+		} catch (Exception e) {
+			Logger.getLogger(Cell.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	/**
+	 * Sets the title and the text of the tip, which will then be displayed if
+	 * the cell is selected.
+	 * 
+	 * @param title
+	 *            the title of the tip.
+	 * @param text
+	 *            the text of the tip.
+	 * @since 0.6
+	 */
+	public void setInputHelpMessage(String title, String text) {
+		try {
+			TableContentValidationElement validationElement = getContentValidationEle();
+			TableHelpMessageElement helpMessageElement = OdfElement.findFirstChildNode(TableHelpMessageElement.class,
+					validationElement);
+			if (helpMessageElement != null) {
+				validationElement.removeChild(helpMessageElement);
+			}
+			helpMessageElement = validationElement.newTableHelpMessageElement();
+			helpMessageElement.setTableTitleAttribute(title);
+			helpMessageElement.setTableDisplayAttribute(true);
+			helpMessageElement.newTextPElement().setTextContent(text);
+		} catch (Exception e) {
+			Logger.getLogger(Cell.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+	
+	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	//////////////////////////////////////// private methods ///////////////////////////////////////////////////////////
+	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	
+	private TableContentValidationElement getContentValidationEle() throws Exception {
+		Document ownerDocument = getOwnerDocument();
+		OdfElement contentRootElement = ownerDocument.getContentRoot();
+		TableContentValidationsElement validations = OdfElement.findFirstChildNode(
+				TableContentValidationsElement.class, contentRootElement);
+		if (validations == null) {
+			validations = (TableContentValidationsElement) OdfXMLFactory.newOdfElement(ownerDocument
+					.getContentDom(), OdfName.newName(OdfDocumentNamespace.TABLE, "content-validations"));
+			contentRootElement.insertBefore(validations, contentRootElement.getFirstChild());
+		}
+		String validationName = getOdfElement().getTableContentValidationNameAttribute();
+		TableContentValidationElement validationElement = null;
+		if (validationName != null) {
+			Node child = validations.getFirstChild();
+			while (child != null) {
+				TableContentValidationElement contentValidationElementRef = (TableContentValidationElement) child;
+				if (validationName.equals(contentValidationElementRef.getTableNameAttribute())) {
+					validationElement = contentValidationElementRef;
+					break;
+				}
+			}
+		} else {
+			String valName = "val" + String.format("d%06x", (int) (Math.random() * 0xffffff));
+			validationElement = validations.newTableContentValidationElement(valName);
+			getOdfElement().setTableContentValidationNameAttribute(valName);
+		}
+		return validationElement;
+	}
+
+	private String getCellAddress() {
+		char[] digits = { '0', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
+				'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
+		int i = getColumnIndex() + 1;
+		char[] buf = new char[32];
+		int charPos = 32;
+		do {
+			buf[--charPos] = digits[i % 26];
+			i /= 26;
+		} while (i != 0);
+		String cs = new String(buf, charPos, (32 - charPos));
+		return cs + (getRowIndex() + 1);
+	}
+	
+	private ListContainerImpl getListContainerImpl() {
+		if (listContainerImpl == null) {
+			listContainerImpl = new ListContainerImpl();
+		}
+		return listContainerImpl;
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+
+		public OdfElement getListContainerElement() {
+			return mCellElement;
+		}
+	}
+	
+	private class ParagraphContainerImpl extends AbstractParagraphContainer {
+		public OdfElement getParagraphContainerElement() {
+			return mCellElement;
+		}
+	}
+
+	private ParagraphContainerImpl getParagraphContainerImpl() {
+		if (paragraphContainerImpl == null)
+			paragraphContainerImpl = new ParagraphContainerImpl();
+		return paragraphContainerImpl;
+	}
+	
+	//column can fit the width to the text, if column.isOptimalWidth() is true.
+	//since 0.5.5
+	private void optimizeCellSize(String content){
+		JTextField txtField = new JTextField();
+		// map font to awt font
+		Font font = getFont();
+		String fontFamilyName = font.getFamilyName();
+		if (fontFamilyName == null) {
+			fontFamilyName = "Times New Roman";
+		}
+		int fontStyleNum = java.awt.Font.PLAIN;
+		FontStyle fontStyle = font.getFontStyle();
+		if (fontStyle != null) {
+			switch (fontStyle) {
+			case BOLD:
+				fontStyleNum = java.awt.Font.BOLD;
+				break;
+			case REGULAR:
+				fontStyleNum = java.awt.Font.PLAIN;
+				break;
+			case ITALIC:
+				fontStyleNum = java.awt.Font.ITALIC;
+				break;
+			case BOLDITALIC:
+				fontStyleNum = java.awt.Font.BOLD | java.awt.Font.ITALIC;
+				break;
+			default:
+				fontStyleNum = java.awt.Font.PLAIN;
+			}
+		}
+		double fontSize = font.getSize();
+		if (fontSize < 0.0001) {
+			fontSize = 10;
+		}
+		txtField.setFont(new java.awt.Font(fontFamilyName, fontStyleNum, (int)fontSize));
+		FontMetrics fm = txtField.getFontMetrics(txtField.getFont());
+		// content width in pixels.
+		int widthPixels = fm.stringWidth(content);
+		// content height in pixels.
+		// int heightPixels = fm.getHeight();
+		OdfStyleBase properties = getStyleHandler().getStyleElementForRead();
+		double millimeterPadding = 0.0;
+		if(properties!=null){
+			String padding = properties.getProperty(StyleTableCellPropertiesElement.Padding);
+			if(padding!=null){
+				millimeterPadding = Length.parseDouble(padding, Unit.MILLIMETER);
+			}
+		}
+		// convert width pixels to mm
+		double columnWidth = widthPixels / 2.83464;
+		columnWidth += millimeterPadding * 2;
+		Column column = getTableColumn();
+		if (column.isOptimalWidth()) {
+			double width = column.getWidth();
+			if (width < columnWidth) {
+				column.setWidth(columnWidth);
+			}
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellRange.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellRange.java
new file mode 100644
index 0000000..fbe3414
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellRange.java
@@ -0,0 +1,475 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+
+/**
+ * CellRange represent a rang of cells that are adjacent with each other
+ * <p>
+ * CellRange provides methods to get/set/modify the properties of cell range.
+ */
+public class CellRange {
+
+	private int mnStartRow;
+	private int mnStartColumn;
+	private int mnEndRow;
+	private int mnEndColumn;
+	private String msCellRangeName;
+	private Table maOwnerTable;
+	private boolean mbSpreadsheet;
+
+	/**
+	 * Construct the instance of CellRange.
+	 * @param table
+	 * 					is the container table of this cell range.
+	 * @param startColumn
+	 * 					is the column index of the first cell in this cell range.
+	 * @param startRow
+	 * 					is the row index of the first cell in this cell range.
+	 * @param endColumn
+	 * 					is the column index of the last cell in this cell range.
+	 * @param endRow
+	 * 					is the row index of the last cell in this cell range.
+	 */
+	CellRange(Table table, int startColumn, int startRow, int endColumn, int endRow) {
+		maOwnerTable = table;
+
+		Document doc = (Document) ((OdfFileDom) maOwnerTable.getOdfElement().getOwnerDocument()).getDocument();
+		if (doc instanceof SpreadsheetDocument) {
+			mbSpreadsheet = true;
+		}
+
+		//the first cell is the covered cell, then the cell range should be enlarged
+		//so that it can contains the complete cell
+		//get the cell cover info
+		mnStartColumn = startColumn;
+		mnStartRow = startRow;
+		mnEndColumn = endColumn;
+		mnEndRow = endRow;
+		List<CellCoverInfo> coverList = maOwnerTable.getCellCoverInfos(0, 0, endColumn, endRow);
+		Cell cell;// = maOwnerTable.getOwnerCellByPosition(coverList, nStartColumn, nStartRow);
+		for (int i = startColumn; i <= endColumn; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, i, startRow);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+
+		for (int i = startColumn; i <= endColumn; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, i, endRow);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+
+		for (int i = startRow + 1; i < endRow; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, startColumn, i);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+
+		for (int i = startRow + 1; i < endRow; i++) {
+			cell = maOwnerTable.getOwnerCellByPosition(coverList, endColumn, i);
+			int rowIndex = cell.getRowIndex();
+			int colIndex = cell.getColumnIndex();
+			mnStartColumn = Math.min(mnStartColumn, colIndex);
+			mnStartRow = Math.min(mnStartRow, rowIndex);
+			mnEndColumn = Math.max(mnEndColumn, colIndex + cell.getColumnSpannedNumber() - 1);
+			mnEndRow = Math.max(mnEndRow, rowIndex + cell.getRowSpannedNumber() - 1);
+		}
+	}
+
+	/**
+	 * construct the empty cellRange
+	 */
+	CellRange() {
+	}
+
+	/**
+	 * Merge the current cell range to one cell
+	 */
+	public void merge() {
+		Cell firstCell = maOwnerTable.getCellByPosition(mnStartColumn, mnStartRow);
+
+		//note: after merge, the cell row/column count might  be changed
+		int rowCount = maOwnerTable.getRowCount();
+		int colCount = maOwnerTable.getColumnCount();
+		//if the cell range is the whole table, then merge it to a big cell
+		//as to the spreadsheet document, it should still keep the original cell count,
+		//rather than merge to a big cell.
+		if (rowCount == (mnEndRow - mnStartRow + 1)
+				&& colCount == (mnEndColumn - mnStartColumn + 1)
+				&& !mbSpreadsheet) {
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-spanned");
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-spanned");
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//just copy the text of the other cells to this first cell
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					Cell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						//copy the content of this cell to the first cell
+						firstCell.appendContentFrom(cellBase);
+					}
+				}
+			}
+			maOwnerTable.removeRowsByIndex(1, maOwnerTable.getRowCount() - 1);
+			maOwnerTable.removeColumnsByIndex(1, maOwnerTable.getColumnCount() - 1);
+			Column firstColumn = maOwnerTable.getColumnByIndex(0);
+			firstColumn.setWidth(maOwnerTable.getWidth());
+			mnEndRow = mnStartRow;
+			mnEndColumn = mnStartColumn;
+			return;
+		} //if the cell range covered all the table row, and the merged column > 1
+		//the merged column can be removed
+		else if (rowCount == (mnEndRow - mnStartRow + 1)
+				&& colCount > (mnEndColumn - mnStartColumn + 1)
+				&& (mnEndColumn - mnStartColumn) > 0) {
+			//the first cell, set the span attribute
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-spanned");
+				firstCellElement.setTableNumberRowsSpannedAttribute(Integer.valueOf(mnEndRow - mnStartRow + 1));
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//the other cell, copy the content to first cell
+			//if it is also in the first column of the cell range, set to the covered cell
+			//other cell not in the first column will be removed when remove the column
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					Cell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						//append content to first cell
+						firstCell.appendContentFrom(cellBase);
+						//change the cell in the first column of cell range to covered cell
+						if ((j == mnStartColumn) && (cellBase.getOdfElement() instanceof TableTableCellElement)) {
+							//change the normal cell to be the covered cell
+							TableTableCellElement firstColumnCell = (TableTableCellElement) cellBase.getOdfElement();
+							TableCoveredTableCellElement coveredCell = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+									(OdfFileDom) firstColumnCell.getOwnerDocument(),
+									OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+							Row parentRow = cellBase.getTableRow();
+							parentRow.getOdfElement().insertBefore(coveredCell, firstColumnCell);
+							parentRow.getOdfElement().removeChild(firstColumnCell);
+						}
+					}
+				}
+			}
+			List<Double> widthList = getCellRangeWidthList();
+			double nCellRangeWidth = widthList.get(widthList.size() - 1) - widthList.get(0);
+			maOwnerTable.removeColumnsByIndex(mnStartColumn + 1, mnEndColumn - mnStartColumn);
+			Column firstColumn = maOwnerTable.getColumnByIndex(mnStartColumn);
+			firstColumn.setWidth(nCellRangeWidth);
+			mnEndColumn = mnStartColumn;
+			return;
+		} //if the cell range covered all the table column, the merged row can be removed
+		else if (rowCount > (mnEndRow - mnStartRow + 1)
+				&& colCount == (mnEndColumn - mnStartColumn + 1)
+				&& (mnEndRow - mnStartRow) > 0) {
+			//the first cell, set the span attribute
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-spanned");
+				firstCellElement.setTableNumberColumnsSpannedAttribute(Integer.valueOf(mnEndColumn - mnStartColumn + 1));
+				firstCellElement.setOfficeValueTypeAttribute(OfficeValueTypeAttribute.Value.STRING.toString());
+			}
+			//the other cell, copy the content to first cell
+			//if it is also in the first row of the cell range, set to the covered cell
+			//other cell not in the first row will be removed when remove the row
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					Cell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						//append content to first cell
+						firstCell.appendContentFrom(cellBase);
+						//change the cell in the first row of cell range to covered cell
+						if ((i == mnStartRow) && (cellBase.getOdfElement() instanceof TableTableCellElement)) {
+							//change the normal cell to be the covered cell
+							TableTableCellElement firstRowCell = (TableTableCellElement) cellBase.getOdfElement();
+							TableCoveredTableCellElement coveredCell = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+									(OdfFileDom) firstRowCell.getOwnerDocument(),
+									OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+							Row parentRow = cellBase.getTableRow();
+							parentRow.getOdfElement().insertBefore(coveredCell, firstRowCell);
+							parentRow.getOdfElement().removeChild(firstRowCell);
+						}
+					}
+				}
+			}
+			maOwnerTable.removeRowsByIndex(mnStartRow + 1, mnEndRow - mnStartRow);
+			mnEndRow = mnStartRow;
+			return;
+		} //don't remove any row/column
+		else {
+			//first keep the column and row count in this cell range
+			//the first cell, set the span attribute
+			if (firstCell.getOdfElement() instanceof TableTableCellElement) {
+				//first cell number columns repeated attribute may > 1.
+				firstCell.splitRepeatedCells();
+				TableTableCellElement firstCellElement = (TableTableCellElement) (firstCell.getOdfElement());
+				firstCellElement.setTableNumberColumnsSpannedAttribute(mnEndColumn - mnStartColumn + 1);
+				firstCellElement.setTableNumberRowsSpannedAttribute(mnEndRow - mnStartRow + 1);
+			}
+			//the other cell, set to the covered cell
+			for (int i = mnStartRow; i < mnEndRow + 1; i++) {
+				for (int j = mnStartColumn; j < mnEndColumn + 1; j++) {
+					Cell cellBase = maOwnerTable.getCellByPosition(j, i);
+					if (j != mnStartColumn || i != mnStartRow) {
+						if (cellBase.getOdfElement() instanceof TableTableCellElement) {
+							//change the normal cell to be the covered cell
+							TableTableCellElement cell = (TableTableCellElement) cellBase.getOdfElement();
+							TableCoveredTableCellElement coveredCell = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+									(OdfFileDom) cell.getOwnerDocument(),
+									OdfName.newName(OdfDocumentNamespace.TABLE, "covered-table-cell"));
+
+							TableTableRowElement parentRowEle = cellBase.getTableRow().getOdfElement();
+							parentRowEle.insertBefore(coveredCell, cell);
+							//copy the content of this cell to the first cell
+							firstCell.appendContentFrom(cellBase);
+							cellBase.removeContent();
+							//set the table column repeated attribute
+							int repeatedNum = cell.getTableNumberColumnsRepeatedAttribute();
+							int num = (mnEndColumn - j + 1) - repeatedNum;
+							if (num >= 0) {
+								if(repeatedNum > 1){
+									coveredCell.setTableNumberColumnsRepeatedAttribute(repeatedNum);
+								}
+								parentRowEle.removeChild(cell);
+							} else {
+								int tableNumberColumnsRepeatedValue = mnEndColumn - j + 1;
+								if(tableNumberColumnsRepeatedValue > 1){
+									coveredCell.setTableNumberColumnsRepeatedAttribute(tableNumberColumnsRepeatedValue);
+								}
+								cell.setTableNumberColumnsRepeatedAttribute(-num);
+							}
+						} else if (cellBase.getOdfElement() instanceof TableCoveredTableCellElement) {
+							try {
+								//copy the content of this cell to the first cell
+								firstCell.appendContentFrom(cellBase);
+								cellBase.removeContent();
+							} catch (Exception e) {
+								Logger.getLogger(CellRange.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	//vector store the x coordinate of each column which reference to the left start point of owner table
+	//the returned value is all measured with "mm" unit
+	private List<Double> getCellRangeWidthList() {
+		List<Double> list = new ArrayList<Double>();
+		Double length = Double.valueOf(0.0);
+		for (int i = 0; i < maOwnerTable.getColumnCount() - 1; i++) {
+			Column col = maOwnerTable.getColumnByIndex(i);
+			int repeateNum = col.getColumnsRepeatedNumber();
+			if (repeateNum == 1) {
+				if (isColumnInCellRange(i)) {
+					list.add(length);
+				}
+				length = Double.valueOf(length + col.getWidth());
+			} else {
+				for (int j = 0; j < repeateNum; j++) {
+					if (isColumnInCellRange(i + j)) {
+						list.add(length);
+						length = Double.valueOf(length + col.getWidth());
+					}
+				}
+				i += repeateNum - 1;
+			}
+		}
+		//x coordinate of last column right point 
+		list.add(length);
+		return list;
+	}
+
+	//vector store the x coordinate of each will split column start point
+	List<Double> getVeticalSplitCellRangeWidthList(int splitNum) {
+		//get each cell in the cell range(the cell here means the real cell, not the covered cell)
+		List<CellCoverInfo> coverList = maOwnerTable.getCellCoverInfos(mnStartColumn, mnStartRow, mnEndColumn, mnEndRow);
+		//then get the real(uncovered) cell x coordinate
+		List<Double> tmpList = new ArrayList<Double>();
+		List<Double> widthList = getCellRangeWidthList();
+		for (int i = mnStartColumn; i < mnEndColumn + 1; i++) {
+			for (int j = mnStartRow; j < mnEndRow + 1; j++) {
+				if (maOwnerTable.isCoveredCellInOwnerTable(coverList, i, j)) {
+					continue;
+				} else {
+					//the real cell, record the x coordinate of the left point
+					Double width = widthList.get(i - mnStartColumn);
+					if (!tmpList.contains(width)) {
+						tmpList.add(width);
+					}
+				}
+			}
+		}
+
+		//last, reorder the tmpVector and split it to splitNum between each item
+		Double[] widthArray = (Double[]) tmpList.toArray();
+		Arrays.sort(widthArray);
+		List<Double> rtnValues = new ArrayList<Double>();
+		double colWidth;
+		double unitWidth;
+		rtnValues.add(widthArray[0]);
+		for (int i = 1; i < widthArray.length; i++) {
+			colWidth = Double.valueOf(widthArray[i] - widthArray[i - 1]);
+			unitWidth = colWidth / splitNum;
+			for (int j = 1; j < splitNum; j++) {
+				double eachWidth = unitWidth * j + widthArray[i - 1];
+				rtnValues.add(Double.valueOf(eachWidth));
+			}
+			rtnValues.add(widthArray[i]);
+		}
+		return rtnValues;
+	}
+
+	/**
+	 * Get the name of the named cell range.
+	 * 
+	 * @return the name of the cell range
+	 */
+	public String getCellRangeName() {
+		return msCellRangeName;
+	}
+
+	/**
+	 * Set the name of the current cell range.
+	 * 
+	 * @param cellRangeName	the name that need to set
+	 */
+	public void setCellRangeName(String cellRangeName) {
+		try {
+			OdfElement contentRoot = maOwnerTable.mDocument.getContentRoot();
+			//create name range element
+			OdfFileDom contentDom = ((OdfFileDom) maOwnerTable.getOdfElement().getOwnerDocument());
+			TableNamedExpressionsElement nameExpress = (TableNamedExpressionsElement) OdfXMLFactory.newOdfElement(
+					contentDom,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "named-expressions"));
+			String startCellRange = "$" + maOwnerTable.getTableName() + "." + maOwnerTable.getAbsoluteCellAddress(mnStartColumn, mnStartRow);
+			String endCellRange = "$" + maOwnerTable.getTableName() + "." + maOwnerTable.getAbsoluteCellAddress(mnEndColumn, mnEndRow);
+			TableNamedRangeElement nameRange = (TableNamedRangeElement) nameExpress.newTableNamedRangeElement(startCellRange + ":" + endCellRange, cellRangeName);
+			nameRange.setTableBaseCellAddressAttribute(endCellRange);
+			contentRoot.appendChild(nameExpress);
+			msCellRangeName = cellRangeName;
+		} catch (Exception ex) {
+			Logger.getLogger(CellRange.class.getName()).log(Level.SEVERE, null, ex);
+		}
+
+	}
+
+	/**
+	 * Get the <code>Table</code> instance who contains this cell range.
+	 * @return the table that contains the cell range.
+	 */
+	public Table getTable() {
+		return maOwnerTable;
+	}
+
+	/**
+	 * Get the number of rows in this cell range.
+	 * @return rows number in the cell range
+	 */
+	public int getRowNumber() {
+		return (mnEndRow - mnStartRow + 1);
+	}
+
+	/**
+	 * Get the number of columns in this cell range.
+	 * @return columns number in the cell range
+	 */
+	public int getColumnNumber() {
+		return (mnEndColumn - mnStartColumn + 1);
+	}
+
+	/** 
+	 * Returns a single cell that is positioned at specified column and row.
+	 * @param clmIndex	the column index of the cell inside the range.
+	 * @param rowIndex	the row index of the cell inside the range.
+	 * @return
+	 * 				the cell at the specified position relative to the start position of the cell range
+	 * @throws IndexOutOfBoundsException if the column/row index is bigger than the column/row count
+	 */
+	public Cell getCellByPosition(int clmIndex, int rowIndex) throws IndexOutOfBoundsException {
+		return maOwnerTable.getCellByPosition(mnStartColumn + clmIndex, mnStartRow + rowIndex);
+	}
+
+	/**
+	 * Check if the given column in is this cell range.
+	 * @param colIndex	
+	 * 					the given column index
+	 * @return true if the given column index is in the current cell range
+	 * 
+	 */
+	private boolean isColumnInCellRange(int colIndex) {
+		if (colIndex < mnStartColumn || colIndex > mnEndColumn) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	/** 
+	 * Returns a single cell that is positioned at specified cell address.
+	 * 
+	 * @param address
+	 * 				the cell address of the cell inside the range.
+	 * @return
+	 * 				the cell at the specified cell address relative to the start position of the cell range
+	 */
+	public Cell getCellByPosition(String address) {
+		//if the address also contain the table name,  but the table is not the maOwnerTable
+		//what should do? get the table then getcellByPosition?
+		return getCellByPosition(maOwnerTable.getColIndexFromCellAddress(address), maOwnerTable.getRowIndexFromCellAddress(address));
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellStyleHandler.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellStyleHandler.java
new file mode 100644
index 0000000..9962906
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellStyleHandler.java
@@ -0,0 +1,718 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.Locale;
+
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.Document.ScriptType;
+import org.odftoolkit.simple.style.Border;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.ParagraphProperties;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.TableCellProperties;
+import org.odftoolkit.simple.style.TextProperties;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.TextLinePosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalAlignmentType;
+
+/**
+ * This class provides functions to handle the style of a cell.
+ * 
+ * <p>
+ * This class provides functions to handle the border settings, font settings,
+ * text alignment settings and so on.
+ * 
+ * @since 0.3
+ */
+public class CellStyleHandler extends DefaultStyleHandler {
+
+	Cell mCell;
+	TableTableCellElementBase mCellElement;
+
+	TextProperties mTextProperties;
+	TextProperties mWritableTextProperties;
+	TableCellProperties mTableCellProperties;
+	TableCellProperties mWritableTableCellProperties;
+	ParagraphProperties mParagraphProperties;
+	ParagraphProperties mWritableParagraphProperties;
+
+	CellStyleHandler(Cell aCell) {
+		super(aCell.getOdfElement());
+		mCell = aCell;
+		mCellElement = (TableTableCellElementBase) mCell.getOdfElement();
+	}
+
+	private boolean isShared = false;
+
+	/**
+	 * Return the used style name of this cell.
+	 * <p>
+	 * If there is no style name defined for cell, the attribute
+	 * "table:default-cell-style-name" in table row and table column would be
+	 * returned.
+	 */
+	@Override
+	public String getUsedStyleName() {
+		String styleName = mCellElement.getStyleName();
+		if (styleName == null || (styleName.equals(""))) { // search in row
+			Row aRow = mCell.getTableRow();
+			styleName = aRow.getOdfElement().getTableDefaultCellStyleNameAttribute();
+			isShared = true;
+		}
+		if (styleName == null || (styleName.equals(""))) { // search in column
+			Column aColumn = mCell.getTableColumn();
+			styleName = aColumn.getOdfElement().getTableDefaultCellStyleNameAttribute();
+			isShared = true;
+		}
+		return styleName;
+	}
+
+	/**
+	 * Return the style element for this cell, for read and write functions.
+	 * <p>
+	 * An empty style definition will be created if there is no style
+	 * definition.
+	 * 
+	 * @return the style element
+	 */
+	@Override
+	public OdfStyle getStyleElementForWrite() {
+		if (mWritableStyleElement != null)
+			return mWritableStyleElement;
+
+		mCell.splitRepeatedCells();
+		mCellElement = (TableTableCellElementBase) mCell.getOdfElement();
+		mOdfElement = mCellElement; // note here: mOdfElement in
+									// DefaultStyleHandler must be updated at
+									// the same time
+
+		String styleName = getUsedStyleName();
+		mWritableStyleElement = getWritableStyleElementByName(styleName, isShared);
+		return mWritableStyleElement;
+	}
+
+	private OdfDefaultStyle getCellDefaultStyle() {
+		return mDocument.getDocumentStyles().getDefaultStyle(OdfStyleFamily.TableCell);
+	}
+
+	private OdfDefaultStyle getParagraphDefaultStyle() {
+		return mDocument.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Paragraph);
+	}
+
+	private OdfStyleBase getParentStyle(OdfStyle aStyle) {
+		String parentName = aStyle.getStyleParentStyleNameAttribute();
+		if (parentName == null || parentName.length() == 0)
+			return null;
+		if (parentName.equals("Default"))
+			return getCellDefaultStyle();
+		else
+			return getStyleByName(parentName);
+	}
+
+	private OdfStyle getStyleByName(String name) {
+		OdfStyle styleElement = null;
+		OdfOfficeAutomaticStyles styles = mCellElement.getAutomaticStyles();
+		styleElement = styles.getStyle(name, OdfStyleFamily.TableCell);
+
+		if (styleElement == null) {
+			styleElement = mDocument.getDocumentStyles().getStyle(name, OdfStyleFamily.TableCell);
+		}
+
+		return styleElement;
+	}
+
+	private OdfStyleBase getCurrentUsedStyle() {
+		if (mWritableStyleElement != null)
+			return mWritableStyleElement;
+		else
+			return mStyleElement;
+	}
+
+	/**
+	 * Return the country information for a specific script type
+	 * <p>
+	 * The country information in its parent style and default style will be
+	 * taken into considered.
+	 * <p>
+	 * Null will be returned if there is no country information for this script
+	 * type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the country information for a specific script type
+	 */
+	public String getCountry(ScriptType type) {
+		String country = null;
+		TextProperties textProperties = getTextPropertiesForRead();
+		if (textProperties != null)
+			country = textProperties.getCountry(type);
+		if (country != null && country.length() > 0)
+			return country;
+
+		boolean isDefault = isUseDefaultStyle;
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TextProperties parentStyleSetting = TextProperties.getTextProperties(parentStyle);
+			country = parentStyleSetting.getCountry(type);
+			if (country != null && country.length() > 0)
+				return country;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			TextProperties defaultStyleSetting = TextProperties.getTextProperties(defaultStyle);
+			country = defaultStyleSetting.getCountry(type);
+		}
+		return country;
+	}
+
+	private void mergeFont(Font target, Font source) {
+		// merge font
+		if (target.getFamilyName() == null && source.getFamilyName() != null)
+			target.setFamilyName(source.getFamilyName());
+		if (target.getColor() == null && source.getColor() != null)
+			target.setColor(source.getColor());
+		if (target.getSize() == 0 && source.getSize() > 0)
+			target.setSize(source.getSize());
+		if (target.getFontStyle() == null && source.getFontStyle() != null)
+			target.setFontStyle(source.getFontStyle());
+		if (target.getTextLinePosition() == null && source.getTextLinePosition() != null)
+			target.setTextLinePosition(source.getTextLinePosition());
+	}
+
+	/**
+	 * Return the font definition for a specific script type.
+	 * <p>
+	 * The font definition in its parent style and default style will be taken
+	 * into considered.
+	 * <p>
+	 * A default font definition will be returned if there is no font definition
+	 * for this script type at all.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font definition for a specific script type
+	 */
+	public Font getFont(ScriptType type) {
+		// A font includes font family name, font style, font color, font size
+		Font font = null;
+		TextProperties textProperties = getTextPropertiesForRead();
+		if (textProperties != null)
+			font = textProperties.getFont(type);
+		else
+			font = new Font(null, null, 0, (StyleTypeDefinitions.TextLinePosition) null);
+
+		if (font != null && font.getFamilyName() != null && font.getColor() != null && font.getSize() != 0
+				&& font.getFontStyle() != null && font.getTextLinePosition() != null)
+			return font;
+
+		boolean isDefault = isUseDefaultStyle;
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TextProperties parentStyleSetting = TextProperties.getTextProperties(parentStyle);
+			Font tempFont = parentStyleSetting.getFont(type);
+			mergeFont(font, tempFont);
+			if (font.getFamilyName() != null && font.getColor() != null && font.getSize() > 0
+					&& font.getFontStyle() != null && font.getTextLinePosition() != null) {
+				return font;
+			}
+			// continue to get parent properties
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			// For text document, there is no default table cell style.
+			// So use default font style in default paragraph style.
+			if (defaultStyle == null) {
+				defaultStyle = getParagraphDefaultStyle();
+			}
+			if (defaultStyle != null) {
+				TextProperties defaultStyleSetting = TextProperties.getTextProperties(defaultStyle);
+				Font tempFont = defaultStyleSetting.getFont(type);
+				mergeFont(font, tempFont);
+			}
+		}
+
+		if (font.getColor() == null)
+			font.setColor(Color.BLACK);
+		if (font.getFontStyle() == null)
+			font.setFontStyle(FontStyle.REGULAR);
+		if (font.getTextLinePosition() == null)
+			font.setTextLinePosition(TextLinePosition.REGULAR);
+
+		return font;
+	}
+
+	/**
+	 * Return the language information for a specific script type
+	 * <p>
+	 * The language definition in its parent style and default style will be
+	 * taken into considered.
+	 * <p>
+	 * Null will be returned if there is no language information for this script
+	 * type at all.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the language information for a specific script type
+	 */
+	public String getLanguage(ScriptType type) {
+		String language = null;
+		TextProperties textProperties = getTextPropertiesForRead();
+		if (textProperties != null)
+			language = textProperties.getLanguage(type);
+		if (language != null && language.length() > 0)
+			return language;
+
+		boolean isDefault = isUseDefaultStyle;
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TextProperties parentStyleSetting = TextProperties.getTextProperties(parentStyle);
+			language = parentStyleSetting.getLanguage(type);
+			if (language != null && language.length() > 0)
+				return language;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			TextProperties defaultStyleSetting = TextProperties.getTextProperties(defaultStyle);
+			language = defaultStyleSetting.getLanguage(type);
+		}
+		return language;
+	}
+
+	/**
+	 * Set the country information for a specific script type
+	 * <p>
+	 * The consistency between country and script type is not verified.
+	 * <p>
+	 * If the parameter <code>country</code> is null, the country information
+	 * for this script type will be removed.
+	 * 
+	 * @param country
+	 *            - the country information
+	 * @param type
+	 *            - script type
+	 * @see TextProperties#setCountry(String, Document.ScriptType)
+	 * @see org.odftoolkit.simple.Document.ScriptType
+	 */
+	public void setCountry(String country, ScriptType type) {
+		getTextPropertiesForWrite().setCountry(country, type);
+	}
+
+	/**
+	 * Set the font definition. The locale information in font definition will
+	 * be used to justify the script type.
+	 * <p>
+	 * If the parameter <code>font</code> is null, nothing will be happened.
+	 * 
+	 * @param font
+	 *            - font definition
+	 */
+	public void setFont(Font font) {
+		getTextPropertiesForWrite().setFont(font);
+	}
+
+	/**
+	 * Set the font definition. The locale information in font definition will
+	 * be used to justify the script type.
+	 * <p>
+	 * If the parameter <code>font</code> is null, nothing will be happened.
+	 * 
+	 * @param font
+	 *            - font definition
+	 */
+	public void setFont(Font font, Locale language) {
+		getTextPropertiesForWrite().setFont(font, language);
+	}
+
+	/**
+	 * Set the language information for a specific script type
+	 * <p>
+	 * If the parameter <code>language</code> is null, the language information
+	 * for this script type will be removed.
+	 * 
+	 * @param language
+	 *            - the language information
+	 * @param type
+	 *            - script type
+	 */
+	public void setLanguage(String language, ScriptType type) {
+		getTextPropertiesForWrite().setLanguage(language, type);
+	}
+
+	/**
+	 * Return the background color.
+	 * <p>
+	 * The background color in its parent style and default style will be taken
+	 * into considered.
+	 * <p>
+	 * Color WHITE will be returned if there is no the background color
+	 * definition or the background color definition is not valid.
+	 * 
+	 * @return the background color
+	 */
+	public Color getBackgroundColor() {
+		Color tempColor = null;
+		TableCellProperties properties = getTableCellPropertiesForRead();
+		if (properties != null)
+			tempColor = properties.getBackgroundColor();
+		if (tempColor != null)
+			return tempColor;
+
+		boolean isDefault = isUseDefaultStyle;
+		// find in parent style definition
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TableCellProperties parentStyleSetting = TableCellProperties.getTableCellProperties(parentStyle);
+			tempColor = parentStyleSetting.getBackgroundColor();
+			if (tempColor != null)
+				return tempColor;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		// find in default style definition
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			TableCellProperties defaultStyleSetting = TableCellProperties.getTableCellProperties(defaultStyle);
+			tempColor = defaultStyleSetting.getBackgroundColor();
+		}
+		// use default
+		if (tempColor == null)
+			return Color.WHITE;
+		return tempColor;
+	}
+
+	private Border getNullableBorder(TableCellProperties properties, CellBordersType type) {
+		switch (type) {
+		case LEFT:
+			return properties.getLeftBorder();
+		case RIGHT:
+			return properties.getRightBorder();
+		case TOP:
+			return properties.getTopBorder();
+		case BOTTOM:
+			return properties.getBottomBorder();
+		case DIAGONALBLTR:
+			return properties.getDiagonalBlTr();
+		case DIAGONALTLBR:
+			return properties.getDiagonalTlBr();
+		default:
+			throw new IllegalArgumentException("Only border type with a single border is accepted.");
+		}
+	}
+
+	/**
+	 * Return the border setting for a specific border.
+	 * <p>
+	 * The accepted parameter can be TOP,BOTTOM,LEFT,RIGHT,DIAGONALBLTR and
+	 * DIAGONALTLBR.
+	 * <p>
+	 * The border type with a collection of borders, e.g. ALL_FOUR, LEFT_RIGHT,
+	 * are not legal arguments
+	 * <p>
+	 * The border definition in its parent style and default style will be taken
+	 * into considered.
+	 * <p>
+	 * <code>Border.NONE</code> will be returned if there is no the border
+	 * definition for a specific border.
+	 * 
+	 * @param type
+	 *            - the border type which describes a single border
+	 * @return the border setting
+	 */
+	public Border getBorder(CellBordersType type) {
+
+		Border tempBorder = null;
+		TableCellProperties properties = getTableCellPropertiesForRead();
+		if (properties != null) {
+			tempBorder = getNullableBorder(properties, type);
+		}
+		if (tempBorder != null)
+			return tempBorder;
+
+		boolean isDefault = isUseDefaultStyle;
+		// find in parent style definition
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TableCellProperties parentStyleSetting = TableCellProperties.getTableCellProperties(parentStyle);
+			tempBorder = getNullableBorder(parentStyleSetting, type);
+			;
+			if (tempBorder != null)
+				return tempBorder;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		// find in default style definition
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			TableCellProperties defaultStyleSetting = TableCellProperties.getTableCellProperties(defaultStyle);
+			tempBorder = getNullableBorder(defaultStyleSetting, type);
+		}
+		// use default
+		if (tempBorder == null) {
+			return Border.NONE;
+		}
+		return tempBorder;
+	}
+
+	/**
+	 * Return the vertical alignment.
+	 * <p>
+	 * If there is no vertical alignment definition, DEFAULT will be returned.
+	 * <p>
+	 * The vertical alignment definition in its parent style and default style
+	 * will be taken into considered.
+	 * 
+	 * @return the vertical alignment
+	 */
+	public VerticalAlignmentType getVerticalAlignment() {
+		VerticalAlignmentType tempAlign = null;
+		TableCellProperties properties = getTableCellPropertiesForRead();
+		if (properties != null) {
+			tempAlign = properties.getVerticalAlignment();
+		}
+		if (tempAlign != null)
+			return tempAlign;
+
+		boolean isDefault = isUseDefaultStyle;
+		// find in parent style definition
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TableCellProperties parentStyleSetting = TableCellProperties.getTableCellProperties(parentStyle);
+			tempAlign = parentStyleSetting.getVerticalAlignment();
+			if (tempAlign != null)
+				return tempAlign;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		// find in default style definition
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			TableCellProperties defaultStyleSetting = TableCellProperties.getTableCellProperties(defaultStyle);
+			tempAlign = defaultStyleSetting.getVerticalAlignment();
+		}
+		// use default
+		if (tempAlign == null) {
+			return VerticalAlignmentType.DEFAULT;
+		}
+		return tempAlign;
+	}
+
+	/**
+	 * Return the wrap option of this cell.
+	 * <p>
+	 * The wrap option definition in its parent style and default style will be
+	 * taken into considered.
+	 * 
+	 * @return <code>true</code> if the cell content can be wrapped;
+	 *         <p>
+	 *         <code>false</code> if the cell content cannot be wrapped.
+	 */
+	public boolean isTextWrapped() {
+		Boolean tempBool = null;
+		TableCellProperties properties = getTableCellPropertiesForRead();
+		if (properties != null)
+			tempBool = properties.isWrapped();
+		if (tempBool != null)
+			return tempBool.booleanValue();
+
+		boolean isDefault = isUseDefaultStyle;
+		// find in parent style definition
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			TableCellProperties parentStyleSetting = TableCellProperties.getTableCellProperties(parentStyle);
+			tempBool = parentStyleSetting.isWrapped();
+			if (tempBool != null)
+				return tempBool;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		// find in default style definition
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			TableCellProperties defaultStyleSetting = TableCellProperties.getTableCellProperties(defaultStyle);
+			tempBool = defaultStyleSetting.isWrapped();
+		}
+		// use default
+		if (tempBool == null)
+			return false;
+		return tempBool.booleanValue();
+	}
+
+	/**
+	 * Set the background color of this cell.
+	 * 
+	 * @param color
+	 *            - the background color that need to set. If <code>color</code>
+	 *            is null, background color setting will be removed.
+	 */
+	public void setBackgroundColor(Color color) {
+		getTableCellPropertiesForWrite().setBackgroundColor(color);
+	}
+
+	/**
+	 * Set the border style of this cell. You can set the border style for a
+	 * single border or a border collection.
+	 * <p>
+	 * The second parameter <code>bordersType</code> describes which borders you
+	 * want to apply the style to, e.g. up border, bottom border, left border,
+	 * right border, diagonal lines or four borders.
+	 * 
+	 * @param border
+	 *            - the border style description
+	 * @param bordersType
+	 *            - the type of the borders
+	 */
+	public void setBorders(Border border, CellBordersType bordersType) {
+		getTableCellPropertiesForWrite().setBorders(bordersType, border);
+	}
+
+	/**
+	 * Set the vertical alignment setting of this cell.
+	 * <p>
+	 * If the alignment is set as Default or null, the explicit vertical
+	 * alignment setting is removed.
+	 * 
+	 * @param alignType
+	 *            - the vertical alignment setting.
+	 */
+	public void setVerticalAlignment(VerticalAlignmentType alignType) {
+		getTableCellPropertiesForWrite().setVerticalAlignment(alignType);
+	}
+
+	/**
+	 * Set the wrap option of this cell.
+	 * 
+	 * @param isWrapped
+	 *            - whether the cell content can be wrapped or not
+	 */
+	public void setTextWrapped(boolean isWrapped) {
+		getTableCellPropertiesForWrite().setWrapped(isWrapped);
+	}
+
+	/**
+	 * Set the horizontal alignment.
+	 * <p>
+	 * If the parameter <code>alignType</code> is null, the horizontal alignment
+	 * setting will be removed.
+	 * 
+	 * @param alignType
+	 *            - the horizontal alignment
+	 */
+	public void setHorizontalAlignment(HorizontalAlignmentType alignType) {
+		getParagraphPropertiesForWrite().setHorizontalAlignment(alignType);
+	}
+
+	/**
+	 * Return the horizontal alignment.
+	 * <p>
+	 * The horizontal alignment in its parent style and default style will be
+	 * taken into considered.
+	 * <p>
+	 * DEFAULT will be returned if there is no horizontal alignment setting.
+	 * 
+	 * @return - the horizontal alignment; null if there is no horizontal
+	 *         alignment setting.
+	 */
+	public HorizontalAlignmentType getHorizontalAlignment() {
+		HorizontalAlignmentType tempAlign = null;
+		ParagraphProperties properties = getParagraphPropertiesForRead();
+		if (properties != null)
+			tempAlign = properties.getHorizontalAlignment();
+		if (tempAlign != null)
+			return tempAlign;
+
+		boolean isDefault = isUseDefaultStyle;
+		// find in parent style definition
+		OdfStyleBase parentStyle = null;
+		if (!isDefault)
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		while ((!isDefault) && (parentStyle != null)) {
+			ParagraphProperties parentStyleSetting = ParagraphProperties.getParagraphProperties(parentStyle);
+			tempAlign = parentStyleSetting.getHorizontalAlignment();
+			if (tempAlign != null)
+				return tempAlign;
+
+			if (parentStyle instanceof OdfDefaultStyle)
+				isDefault = true;
+			else
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+		}
+		// find in default style definition
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getCellDefaultStyle();
+			ParagraphProperties defaultStyleSetting = ParagraphProperties.getParagraphProperties(defaultStyle);
+			tempAlign = defaultStyleSetting.getHorizontalAlignment();
+		}
+		// use default
+		if (tempAlign == null)
+			return HorizontalAlignmentType.DEFAULT;
+		return tempAlign;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellValueAdapter.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellValueAdapter.java
new file mode 100644
index 0000000..0a65416
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/CellValueAdapter.java
@@ -0,0 +1,51 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+/**
+ * This interface supplies a method which can adapt string content to a more
+ * proper cell value type as need. This a very useful function in
+ * {@link org.odftoolkit.simple.table.Cell#setDisplayText(String, CellValueAdapter)
+ * Cell.setDisplayText} and table cell text replacement. For example, if a table
+ * cell would be replaced with string "1234" in text navigation, the cell value
+ * type can be adapted to "float" automatically with the help of
+ * <code>CellValueAdapter</code>. </br>
+ * Different adapter realizations have different adaptive rules.
+ * 
+ * @see org.odftoolkit.simple.table.Cell#setDisplayText
+ * @see org.odftoolkit.simple.common.navigation.CellSelection
+ * 
+ * @since 0.3
+ */
+public interface CellValueAdapter {
+	
+	/**
+	 * The default cell value adapter.
+	 */
+	public static final CellValueAdapter DEFAULT_VALUE_ADAPTER = new DefaultCellValueAdapter();
+	
+	/**
+	 * Adapt string content to a more proper cell value type as need.
+	 * 
+	 * @param cell  the cell need to value adapt.
+	 * @param value the value to be adapted.
+	 */
+	public void adaptValue(Cell cell, String value);
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/Column.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Column.java
new file mode 100644
index 0000000..e52291f
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Column.java
@@ -0,0 +1,553 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+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.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableColumnProperties;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.w3c.dom.Node;
+
+/**
+ * Column represents table column feature in ODF document.
+ * <p>
+ * Column provides methods to get table cells that belong to this table column.
+ */
+public class Column extends Component {
+
+	TableTableColumnElement maColumnElement;
+	int mnRepeatedIndex;
+	private static final String DEFAULT_WIDTH = "0in";
+	private final int DEFAULT_REL_TABLE_WIDTH = 65535;
+	private Document mDocument;
+
+	/**
+	 * Construct the <code>Column</code> feature.
+	 * 
+	 * @param odfElement
+	 *            the element that can construct this table column
+	 * @param repeatedIndex
+	 *            the index in the repeated columns
+	 */
+	Column(TableTableColumnElement colElement, int repeatedIndex) {
+		maColumnElement = colElement;
+		mnRepeatedIndex = repeatedIndex;
+		mDocument = (Document) ((OdfFileDom) maColumnElement.getOwnerDocument()).getDocument();
+	}
+
+	/**
+	 * Get the <code>Column</code> instance from the
+	 * <code>TableTableColumnElement</code> instance.
+	 * <p>
+	 * Each <code>TableTableColumnElement</code> instance has a one-to-one
+	 * relationship to the a <code>Column</code> instance.
+	 * 
+	 * @param colElement
+	 *            the column element that need to get the corresponding
+	 *            <code>Column</code> instance
+	 * @return the <code>Column</code> instance represent the specified column
+	 *         element
+	 */
+	public static Column getInstance(TableTableColumnElement colElement) {
+		TableTableElement tableElement = null;
+		Node node = colElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				tableElement = (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		Table table = null;
+		if (tableElement != null) {
+			table = Table.getInstance(tableElement);
+		} else {
+			throw new IllegalArgumentException("the colElement is not in the table dom tree");
+		}
+
+		Column column = table.getColumnInstance(colElement, 0);
+		if (column.getColumnsRepeatedNumber() > 1) {
+			Logger.getLogger(Column.class.getName()).log(
+					Level.WARNING,
+					"the column has the repeated column number, and puzzled about get which repeated index of the column,"
+							+ "here just return the first column of the repeated columns.");
+		}
+		return column;
+	}
+
+	/**
+	 * Get the <code>TableTableElement</code> who contains this cell.
+	 * 
+	 * @return the table that contains the cell.
+	 */
+	private TableTableElement getTableElement() {
+		Node node = maColumnElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				return (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	/**
+	 * Get owner table of the current column.
+	 * 
+	 * @return the parent table of this column
+	 */
+	public Table getTable() {
+		TableTableElement tableElement = getTableElement();
+		if (tableElement != null) {
+			return Table.getInstance(tableElement);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the width of the column (in Millimeter).
+	 * 
+	 * @return the width of the current column (in Millimeter).
+	 */
+	public double getWidth() {
+		String sWidth = maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+		if (sWidth == null) {
+			sWidth = DEFAULT_WIDTH;
+		}
+		return PositiveLength.parseDouble(sWidth, Unit.MILLIMETER) ;
+	}
+
+	/**
+	 * Set the width of the column (in Millimeter).
+	 * 
+	 * @param width
+	 *            the width that will be set to the column (in Millimeter).
+	 */
+	public void setWidth(double width) {
+		double roundingFactor = 10000.0;
+		//TODO:need refactor to PositiveLength.
+		double inValue = Math.round(roundingFactor * width / Unit.INCH.unitInMillimiter()) / roundingFactor;
+		String sWidthIN = String.valueOf(inValue) + Unit.INCH.abbr();
+		//width before modification
+		double columnWidth = getWidth();
+		if(columnWidth < 0)	{
+			columnWidth = 0;
+		}
+		splitRepeatedColumns();
+		maColumnElement.setProperty(OdfTableColumnProperties.ColumnWidth, sWidthIN);
+
+		Table table = getTable();
+		// check if need set relative width
+		if (!(table.getOwnerDocument() instanceof SpreadsheetDocument)) {
+			int index = getColumnIndex();
+			int columnCount = table.getColumnCount();
+			if (index == columnCount-1) {
+				//if the column to resize is the rightmost
+				index = index - 1;
+			} else {
+				index = index + 1;
+			}
+			if (index >= 0) {
+				Column column = null;
+				if (index < columnCount) {
+					column = table.getColumnByIndex(index);
+				} else if (columnCount >= 2) {
+					column = table.getColumnByIndex(columnCount - 2);
+				}
+
+				double nextColumnWidth = 0;
+				if (column != null) {
+					nextColumnWidth = column.getWidth();
+					setRelativeWidth((long) (DEFAULT_REL_TABLE_WIDTH / table.getWidth() * width));
+				}
+
+				// total width of two columns
+				double columnsWidth = nextColumnWidth + columnWidth;
+				// calculates the new width of the next / previous column
+				double newWidthNextColumn = columnsWidth - width;
+				if (newWidthNextColumn < 0) {
+					newWidthNextColumn = 0;
+				}
+				inValue = Math.round(roundingFactor * newWidthNextColumn / Unit.INCH.unitInMillimiter())
+						/ roundingFactor;
+				sWidthIN = String.valueOf(inValue) + Unit.INCH.abbr();
+				column.getOdfElement().setProperty(OdfTableColumnProperties.ColumnWidth, sWidthIN);
+				double relWidth = (DEFAULT_REL_TABLE_WIDTH / table.getWidth()) * newWidthNextColumn;
+				column.setRelativeWidth((long)relWidth);
+			}
+		}
+	}
+
+	// if one of the repeated column want to change something
+	// then this repeated column have to split to repeated number columns
+	// the maColumnElement should also be updated according to the original
+	// index in the repeated column
+	void splitRepeatedColumns() {
+		Table table = getTable();
+		TableTableElement tableEle = table.getOdfElement();
+		int repeateNum = getColumnsRepeatedNumber();
+		if (repeateNum > 1) {
+			// change this repeated column to several single columns
+			TableTableColumnElement ownerColumnElement = null;
+			String columnWidthStr = null;
+			long columnWidth = 0;
+			int repeatedColumnIndex = mnRepeatedIndex;
+			Node refElement = maColumnElement;
+			maColumnElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+			String originalWidth = maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+			String originalRelWidth = maColumnElement.getProperty(OdfTableColumnProperties.RelColumnWidth);
+			if (originalWidth != null) {
+				columnWidthStr = Length.mapToUnit(originalWidth, Unit.MILLIMETER);
+				columnWidth = PositiveLength.parseLong(columnWidthStr, Unit.MILLIMETER);
+			}
+			for (int i = repeateNum - 1; i >= 0; i--) {
+				TableTableColumnElement newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement(
+						(OdfFileDom) maColumnElement.getOwnerDocument(), OdfName.newName(OdfDocumentNamespace.TABLE,
+								"table-column"));
+				if (originalWidth != null && originalWidth.length() > 0) {
+					newColumn.setProperty(OdfTableColumnProperties.ColumnWidth, originalWidth);
+				}
+				if (originalRelWidth != null && originalRelWidth.length() > 0) {
+					long relWidth = (long) ((DEFAULT_REL_TABLE_WIDTH / table.getWidth()) *	columnWidth);
+					newColumn.setProperty(OdfTableColumnProperties.RelColumnWidth, String.valueOf(relWidth) + "*");
+				}
+				tableEle.insertBefore(newColumn, refElement);
+				refElement = newColumn;
+				if (repeatedColumnIndex == i) {
+					ownerColumnElement = newColumn;
+				} else {
+					table.updateColumnRepository(maColumnElement, i, newColumn, 0);
+				}
+			}
+			// remove this column element
+			tableEle.removeChild(maColumnElement);
+
+			if (ownerColumnElement != null) {
+				table.updateColumnRepository(maColumnElement, mnRepeatedIndex, ownerColumnElement, 0);
+				// update column element.
+				maColumnElement = ownerColumnElement;
+			}
+		}
+	}
+
+//	private long getRelativeWidth() {
+//		String sRelWidth = maColumnElement.getProperty(OdfTableColumnProperties.RelColumnWidth);
+//		if (sRelWidth != null) {
+//			if (sRelWidth.contains("*")) {
+//				Long value = Long.valueOf(sRelWidth.substring(0, sRelWidth.indexOf("*")));
+//				return value.longValue();
+//			}
+//		}
+//		return 0;
+//	}
+
+	private void setRelativeWidth(long relWidth) {
+		if (relWidth < 40) {
+			maColumnElement.setProperty(OdfTableColumnProperties.RelColumnWidth, String.valueOf(40) + "*");
+		} else {
+			maColumnElement.setProperty(OdfTableColumnProperties.RelColumnWidth, String.valueOf(relWidth) + "*");
+		}
+	}
+
+	/**
+	 * Returns if the column always keeps its optimal width.
+	 * 
+	 * @return true if the column always keeps its optimal width; vice versa
+	 */
+	public boolean isOptimalWidth() {
+		return Boolean.parseBoolean(maColumnElement.getProperty(OdfTableColumnProperties.UseOptimalColumnWidth));
+	}
+
+	/**
+	 * Set if the column always keeps its optimal width.
+	 * 
+	 * @param isUseOptimalWidth
+	 *            the flag that indicate column should keep its optimal width or
+	 *            not
+	 */
+	public void setUseOptimalWidth(boolean isUseOptimalWidth) {
+		maColumnElement.setProperty(OdfTableColumnProperties.UseOptimalColumnWidth, String.valueOf(isUseOptimalWidth));
+	}
+
+	/**
+	 * Return an instance of <code>TableTableColumnElement</code> which
+	 * represents this feature.
+	 * 
+	 * @return an instance of <code>TableTableColumnElement</code>
+	 */
+	public TableTableColumnElement getOdfElement() {
+		return maColumnElement;
+	}
+
+	/**
+	 * Get the count of cells in this column.
+	 * 
+	 * @return the cells count in the current column
+	 */
+	public int getCellCount() {
+		return getTable().getRowCount();
+	}
+
+	/**
+	 * Get a cell with a specific index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the cell index in this column
+	 * @return the cell object in the given cell index
+	 */
+	public Cell getCellByIndex(int index) {
+		return getTable().getCellByPosition(getColumnIndex(), index);
+	}
+
+	/**
+	 * Get the previous column of the current column.
+	 * 
+	 * @return the previous column before this column in the owner table
+	 */
+	public Column getPreviousColumn() {
+		Table table = getTable();
+		// the column has repeated column number > 1
+		if (maColumnElement.getTableNumberColumnsRepeatedAttribute().intValue() > 1) {
+			if (mnRepeatedIndex > 0) {
+				return table.getColumnInstance(maColumnElement, mnRepeatedIndex - 1);
+			}
+		}
+		// the column has repeated column number > 1 && the index is 0
+		// or the column has repeated column num = 1
+		Node aPrevNode = maColumnElement.getPreviousSibling();
+		Node aCurNode = maColumnElement;
+		while (true) {
+			if (aPrevNode == null) {
+				// does not have previous sibling, then get the parent
+				// because aCurNode might be the child element of
+				// table-header-columns, table-columns, table-column-group
+				Node parentNode = aCurNode.getParentNode();
+				// if the parent is table, then it means that this column is the
+				// first column in this table
+				// it has no previous column
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aPrevNode = parentNode.getPreviousSibling();
+			}
+			// else the parent node might be table-header-columns,
+			// table-columns, table-column-group
+			if (aPrevNode != null) {
+				try {
+					if (aPrevNode instanceof TableTableColumnElement) {
+						return table.getColumnInstance((TableTableColumnElement) aPrevNode,
+								((TableTableColumnElement) aPrevNode).getTableNumberColumnsRepeatedAttribute()
+										.intValue() - 1);
+					} else if (aPrevNode instanceof TableTableColumnsElement
+							|| aPrevNode instanceof TableTableHeaderColumnsElement
+							|| aPrevNode instanceof TableTableColumnGroupElement) {
+						XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
+						TableTableColumnElement lastCol = (TableTableColumnElement) xpath.evaluate(
+								"//table:table-column[last()]", aPrevNode, XPathConstants.NODE);
+						if (lastCol != null) {
+							return table.getColumnInstance(lastCol, lastCol.getTableNumberColumnsRepeatedAttribute()
+									.intValue() - 1);
+						}
+					} else {
+						aCurNode = aPrevNode;
+						aPrevNode = aPrevNode.getPreviousSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(Column.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Get the next column of the current column.
+	 * 
+	 * @return the next column after this column in the owner table
+	 */
+	public Column getNextColumn() {
+		Table table = getTable();
+		// the column has repeated column number > 1
+		int columnsRepeatedNumber = getColumnsRepeatedNumber();
+		if (columnsRepeatedNumber > 1) {
+			if (mnRepeatedIndex < (columnsRepeatedNumber - 1)) {
+				return table.getColumnInstance(maColumnElement, mnRepeatedIndex + 1);
+			}
+		}
+		Node aNextNode = maColumnElement.getNextSibling();
+		Node aCurNode = maColumnElement;
+		while (true) {
+			if (aNextNode == null) {
+				// does not have next sibling, then get the parent
+				// because aCurNode might be the child element of
+				// table-header-columns, table-columns, table-column-group
+				Node parentNode = aCurNode.getParentNode();
+				// if the parent is table, then it means that this column is the
+				// last column in this table
+				// it has no next column
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aNextNode = parentNode.getNextSibling();
+			}
+			// else the parent node might be table-header-columns,
+			// table-columns, table-column-group
+			if (aNextNode != null) {
+				try {
+					if (aNextNode instanceof TableTableColumnElement) {
+						return table.getColumnInstance((TableTableColumnElement) aNextNode, 0);
+					} else if (aNextNode instanceof TableTableColumnsElement
+							|| aNextNode instanceof TableTableHeaderColumnsElement
+							|| aNextNode instanceof TableTableColumnGroupElement) {
+						XPath xpath = ((OdfFileDom) maColumnElement.getOwnerDocument()).getXPath();
+						TableTableColumnElement firstCol = (TableTableColumnElement) xpath.evaluate(
+								"//table:table-column[first()]", aNextNode, XPathConstants.NODE);
+						if (firstCol != null) {
+							return table.getColumnInstance(firstCol, 0);
+						}
+					} else {
+						aCurNode = aNextNode;
+						aNextNode = aNextNode.getNextSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(Column.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Get the index of this column in the owner table.
+	 * 
+	 * @return the index of the column
+	 */
+	public int getColumnIndex() {
+		int result = 0;
+		Table table = getTable();
+		TableTableColumnElement columnEle;
+		TableTableElement mTableElement = table.getOdfElement();
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableColumnElement) {
+						columnEle = (TableTableColumnElement) m;
+						if (columnEle == getOdfElement()) {
+							return result + mnRepeatedIndex;
+						}
+						if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+							result += 1;
+						} else {
+							result += columnEle.getTableNumberColumnsRepeatedAttribute();
+						}
+					}
+				}
+			}
+			if (n instanceof TableTableColumnElement) {
+				columnEle = (TableTableColumnElement) n;
+				if (columnEle == getOdfElement()) {
+					break;
+				}
+				if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+					result += 1;
+				} else {
+					result += columnEle.getTableNumberColumnsRepeatedAttribute();
+				}
+			}
+		}
+		return result + mnRepeatedIndex;
+	}
+
+	/**
+	 * Set the default cell style to this column.
+	 * <p>
+	 * The style should already exist in this document.
+	 * <p>
+	 * This method is not recommended for text document cases. These is a style
+	 * assigned to each cell in tables under text documents. So setting the
+	 * default cell style to a column may not work.
+	 * 
+	 * @param style
+	 *            the cell style of the document
+	 */
+	public void setDefaultCellStyle(OdfStyle style) {
+		splitRepeatedColumns();
+		OdfStyle defaultStyle = getDefaultCellStyle();
+		if (defaultStyle != null) {
+			defaultStyle.removeStyleUser(maColumnElement);
+		}
+
+		if (style != null) {
+			style.addStyleUser(maColumnElement);
+			maColumnElement.setTableDefaultCellStyleNameAttribute(style.getStyleNameAttribute());
+		}
+	}
+
+	/**
+	 * Get the default cell style of this column.
+	 * 
+	 * @return the default cell style of this column
+	 */
+	public OdfStyle getDefaultCellStyle() {
+		String styleName = maColumnElement.getTableDefaultCellStyleNameAttribute();
+		OdfStyle style = maColumnElement.getAutomaticStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+
+		if (style == null) {
+			style = mDocument.getDocumentStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+		}
+		return style;
+	}
+
+	// note: we have to use this method to modify the column repeated number
+	// in order to update mnRepeatedIndex of the each column
+	void setColumnsRepeatedNumber(int num) {
+		// update the mnRepeatedIndex for the ever repeated column
+		maColumnElement.setTableNumberColumnsRepeatedAttribute(Integer.valueOf(num));
+	}
+
+	int getColumnsRepeatedNumber() {
+		Integer count = maColumnElement.getTableNumberColumnsRepeatedAttribute();
+		if (count == null) {
+			return 1;
+		} else {
+			return count.intValue();
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/DefaultCellValueAdapter.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/DefaultCellValueAdapter.java
new file mode 100644
index 0000000..20b8cdb
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/DefaultCellValueAdapter.java
@@ -0,0 +1,213 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * This is a default realization of {@link CellValueAdapter CellValueAdapter}.
+ * It will adapt cell string content as common rule.
+ * 
+ * @see CellValueAdapter
+ * 
+ * @since 0.3
+ */
+public class DefaultCellValueAdapter implements CellValueAdapter{
+	
+	/**
+	 * The default date format of table cell.
+	 */
+	private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
+	
+	/**
+	 * The default time format of table cell.
+	 */
+	private static final String DEFAULT_TIME_FORMAT = "'PT'HH'H'mm'M'ss'S'";
+	
+	/**
+	 * The default percent format of table cell.
+	 */
+	private static final String DEFAULT_PERCENT_FORMAT = "0%";
+	
+	/**
+	 * The default currency format of table cell.
+	 */
+	private static final String DEFAULT_CURRENCY_FORMAT = "$#,##0.00;-$#,##0.00";
+	
+	/* (non-Javadoc)
+	 * @see org.odftoolkit.simple.table.CellValueAdapter#adaptValue()
+	 */
+	public void adaptValue(Cell cell, String value){
+		String type = cell.getValueType();
+		String formatStr = cell.getFormatString();
+		if ("boolean".equals(type)) {
+			if ("true".equalsIgnoreCase(value)) {
+				cell.setBooleanValue(Boolean.TRUE);
+			} else if ("false".equalsIgnoreCase(value)) {
+				cell.setBooleanValue(Boolean.FALSE);
+			} else {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			}
+		} else if ("currency".equals(type)) {
+			if (formatStr == null) {
+				formatStr = DEFAULT_CURRENCY_FORMAT;
+			}
+			try {
+				DecimalFormat decimalFormat = new DecimalFormat(formatStr);
+				Number number = decimalFormat.parse(value);
+				cell.setCurrencyValue(number.doubleValue(), cell.getCurrencyCode());
+				cell.setCurrencyFormat(cell.getCurrencySymbol(), formatStr);
+			} catch (ParseException e) {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			}
+		} else if ("date".equals(type)) {
+			if (formatStr == null) {
+				formatStr = DEFAULT_DATE_FORMAT;
+			}
+			try {
+				SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);
+				Date date = simpleDateFormat.parse(value);
+				Calendar calender = Calendar.getInstance();
+				calender.setTime(date);
+				cell.setDateValue(calender);
+			} catch (ParseException e) {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			}
+		} else if ("float".equals(type)) {
+			try {
+				if (formatStr != null) {
+					DecimalFormat decimalFormat = new DecimalFormat(formatStr);
+					Number number = decimalFormat.parse(value);
+					cell.setDoubleValue(number.doubleValue());
+				} else {
+					Double doubleValue = Double.parseDouble(value);
+					cell.setDoubleValue(doubleValue);
+				}
+			} catch (ParseException e) {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			} catch (NumberFormatException e) {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			}
+		} else if ("percentage".equals(type)) {
+			if (formatStr == null) {
+				formatStr = DEFAULT_PERCENT_FORMAT;
+			}
+			try {
+				DecimalFormat decimalFormat = new DecimalFormat(formatStr);
+				Number number = decimalFormat.parse(value);
+				cell.setPercentageValue(number.doubleValue());
+			} catch (ParseException e) {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			}
+		} else if ("time".equals(type)) {
+			if (formatStr == null) {
+				formatStr = DEFAULT_TIME_FORMAT;
+			}
+			try {
+				SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);
+				Date time = simpleDateFormat.parse(value);
+				Calendar calender = Calendar.getInstance();
+				calender.setTime(time);
+				cell.setTimeValue(calender);
+			} catch (ParseException e) {
+				cell.setValueType("string");
+				adaptValue(cell, value);
+			}
+		} else {
+			// for string and void
+			// adapt boolean
+			if ("true".equalsIgnoreCase(value)) {
+				cell.setBooleanValue(Boolean.TRUE);
+			} else if ("false".equalsIgnoreCase(value)) {
+				cell.setBooleanValue(Boolean.FALSE);
+			} else {
+				// adapt date
+				String[] dateFormats = { "MM/dd/yyyy", "MMM d, yyyy", "yyyy-MM-dd", "MM/dd/yy" };
+				for (String dateFormat : dateFormats) {
+					try {
+						SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
+						Date date = simpleDateFormat.parse(value);
+						Calendar calender = Calendar.getInstance();
+						calender.setTime(date);
+						cell.setDateValue(calender);
+						cell.setFormatString(dateFormat);
+						return;
+					} catch (ParseException e) {
+						continue;
+					}
+				}
+				// adapt time
+				String[] timeFormats = { "MM/dd/yyyy HH:mm:ss", "yyyy-MM-dd HH:mm:ss", "HH:mm:ss", "HH:mm a", "HH:mm"};
+				for (String timeFormat : timeFormats) {
+					try {
+						SimpleDateFormat simpleDateFormat = new SimpleDateFormat(timeFormat);
+						Date time = simpleDateFormat.parse(value);
+						Calendar calender = Calendar.getInstance();
+						calender.setTime(time);
+						cell.setTimeValue(calender);
+						cell.setFormatString(timeFormat);
+						return;
+					} catch (ParseException e) {
+						continue;
+					}
+				}
+				// adapt percent
+				String[] percentFormats = { "0.00%"/*, "0%"*/ };
+				for (String percentFormat : percentFormats) {
+					try {
+						DecimalFormat decimalFormat = new DecimalFormat(percentFormat);
+						Number number = decimalFormat.parse(value);
+						cell.setPercentageValue(number.doubleValue());
+						cell.setFormatString(percentFormat);
+						return;
+					} catch (ParseException e) {
+						continue;
+					}
+				}
+				// adapt float
+				String[] floatFormats = { /*"#,###.00", "#,##0.00", */"#,##0"/*, "0.00", "0" */};
+				for (String floatStr : floatFormats) {
+					try {
+						DecimalFormat decimalFormat = new DecimalFormat(floatStr);
+						Number number = decimalFormat.parse(value);
+						cell.setDoubleValue(number.doubleValue());
+						cell.setFormatString(floatStr);
+						return;
+					} catch (ParseException e) {
+						continue;
+					}
+				}
+				//TODO: adapt currency
+				// adapt string
+				cell.setStringValue(value);
+			}
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/DomNodeList.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/DomNodeList.java
new file mode 100644
index 0000000..aca7814
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/DomNodeList.java
@@ -0,0 +1,47 @@
+/************************************************************************
+ *
+ * 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.simple.table;
+
+import java.util.AbstractList;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+class DomNodeList extends AbstractList<Node> {
+    
+    private NodeList m_nodeList;
+    
+    /** Creates a new instance of NodeList */
+    public DomNodeList(NodeList list) {
+        m_nodeList = list;
+    }
+
+    @Override
+	public int size() {
+        return m_nodeList.getLength();
+    }
+
+    @Override
+	public Node get(int index) {
+        return m_nodeList.item(index);
+    }    
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/Row.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Row.java
new file mode 100644
index 0000000..b261bb3
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Row.java
@@ -0,0 +1,1000 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Vector;
+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.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableRowProperties;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+
+/**
+ * Row represents table row feature in ODF document.
+ * <p>
+ * Row provides methods to get table cells that belong to this table row.
+ */
+public class Row extends Component {
+
+	// boolean mbVisible;
+	TableTableRowElement maRowElement;
+	int mnRepeatedIndex;
+	int mRowsRepeatedNumber = -1;
+
+	private static final String DEFAULT_HEIGHT = "0.30in";
+	private Document mDocument;
+
+	/**
+	 * Construct the <code>Row</code> feature.
+	 * 
+	 * @param rowElement
+	 *            the row element represent this row
+	 * @param repeatedIndex
+	 *            the index in the repeated rows
+	 */
+	Row(TableTableRowElement rowElement, int repeatedIndex) {
+		maRowElement = rowElement;
+		mnRepeatedIndex = repeatedIndex;
+		mDocument = (Document) ((OdfFileDom) maRowElement.getOwnerDocument()).getDocument();
+	}
+
+	/**
+	 * Get the <code>Row</code> instance from the
+	 * <code>TableTableRowElement</code> instance.
+	 * <p>
+	 * Each <code>TableTableRowElement</code> instance has a one-to-one
+	 * relationship to a <code>Row</code> instance.
+	 * 
+	 * @param rowElement
+	 *            the row element that need to get the corresponding
+	 *            <code>Row</code> instance
+	 * @return the <code>Row</code> instance represent the specified row element
+	 */
+	public static Row getInstance(TableTableRowElement rowElement) {
+		TableTableElement tableElement = null;
+		Node node = rowElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				tableElement = (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		Table table = null;
+		if (tableElement != null) {
+			table = Table.getInstance(tableElement);
+		} else {
+			throw new IllegalArgumentException("the rowElement is not in the table dom tree");
+		}
+		Row row = table.getRowInstance(rowElement, 0);
+		if (row.getRowsRepeatedNumber() > 1) {
+			Logger.getLogger(Row.class.getName()).log(
+					Level.WARNING,
+					"the row has the repeated row number, and puzzled about get which repeated index of the row,"
+							+ "here just return the first row of the repeated rows.");
+		}
+		return row;
+	}
+
+	/**
+	 * Get the <code>TableTableElement</code> who contains this row.
+	 * 
+	 * @return the table element that contains the row.
+	 */
+	private TableTableElement getTableElement() {
+		Node node = maRowElement.getParentNode();
+		while (node != null) {
+			if (node instanceof TableTableElement) {
+				return (TableTableElement) node;
+			}
+			node = node.getParentNode();
+		}
+		return null;
+	}
+
+	/**
+	 * Get owner table of the current row.
+	 * 
+	 * @return the parent table of this row
+	 */
+	public Table getTable() {
+		TableTableElement tableElement = getTableElement();
+		if (tableElement != null) {
+			return Table.getInstance(tableElement);
+		}
+		return null;
+	}
+
+	/**
+	 * Return the height of the row (in Millimeter).
+	 * <p>
+	 * Return the minimal height, if the row height is not set,
+	 * 
+	 * @return the height of the current row (in Millimeter).
+	 */
+	public double getHeight() {
+		String sHeight = maRowElement.getProperty(OdfTableRowProperties.RowHeight);
+		if (sHeight == null) {
+			sHeight = maRowElement.getProperty(OdfTableRowProperties.MinRowHeight);
+		}
+		if (sHeight == null) {
+			sHeight = DEFAULT_HEIGHT;
+		}
+		return PositiveLength.parseDouble(sHeight, Unit.MILLIMETER);
+	}
+
+	/**
+	 * Set the height/minimal height of the row (in Millimeter) according to the
+	 * second parameter.
+	 * 
+	 * @param height
+	 *            the height/minimal height that will be set to the row (in
+	 *            Millimeter).
+	 * @param isMinHeight
+	 *            if it is true, the row can fit the height to the text, vice
+	 *            versa.
+	 */
+	public void setHeight(double height, boolean isMinHeight) {
+		double roundingFactor = 10000.0;
+		OdfStyleProperty rowHeightProp = isMinHeight ? OdfTableRowProperties.MinRowHeight : OdfTableRowProperties.RowHeight;
+		// TODO:need refactor to PositiveLength.
+		double inValue = Math.round(roundingFactor * height / Unit.INCH.unitInMillimiter()) / roundingFactor;
+		String sHeightIN = String.valueOf(inValue) + Unit.INCH.abbr();
+		splitRepeatedRows();
+		maRowElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+		maRowElement.setProperty(rowHeightProp, sHeightIN);
+	}
+
+	// if one of the repeated row want to change something
+	// then this repeated row have to split to repeated number rows
+	// the maRowElement/mnRepeatedIndex should also be updated according to the
+	// original index in the repeated column
+	void splitRepeatedRows() {
+		int repeateNum = getRowsRepeatedNumber();
+		if (repeateNum > 1) {
+			// change this repeated row to three parts: repeated row before, new
+			// single row and repeated row after.
+			Node rowOwnerElement = maRowElement.getParentNode();
+			Table table = getTable();
+			Map<TableTableRowElement, Vector<Row>> rowRepository = table.mRowRepository;
+			Map<TableTableCellElementBase, Vector<Cell>> cellRepository = table.mCellRepository;
+			String tableNameSpaceURI = OdfDocumentNamespace.TABLE.getUri();
+			Vector<Row> oldList = null;
+			if (rowRepository.containsKey(maRowElement)) {
+				oldList = rowRepository.remove(maRowElement);
+			}
+			int offetAfterCurrentRow = repeateNum - mnRepeatedIndex - 1;
+			TableTableRowElement currentRowElement = null;
+			TableTableRowElement newBeforeRowElement = null;
+			TableTableRowElement newAfterRowElement = null;
+			List<TableTableCellElementBase> newBeforeCellElements = new ArrayList<TableTableCellElementBase>();
+			List<TableTableCellElementBase> newCurrentCellElements = new ArrayList<TableTableCellElementBase>();
+			List<TableTableCellElementBase> newAfterCellElements = new ArrayList<TableTableCellElementBase>();
+			if (mnRepeatedIndex > 0) {
+				newBeforeRowElement = (TableTableRowElement) maRowElement.cloneNode(true);
+				if (mnRepeatedIndex > 1) {
+					newBeforeRowElement.setTableNumberRowsRepeatedAttribute(mnRepeatedIndex);
+				} else {
+					newBeforeRowElement.removeAttributeNS(tableNameSpaceURI, "number-rows-repeated");
+				}
+				// insert new before repeated row
+				rowOwnerElement.insertBefore(newBeforeRowElement, maRowElement);
+				// update row cache
+				if (oldList != null) {
+					Vector<Row> newBeforeList = new Vector<Row>(mnRepeatedIndex);
+					for (int i = 0; i < mnRepeatedIndex && i < oldList.size(); i++) {
+						Row beforeRow = oldList.get(i);
+						if (beforeRow != null) {
+							beforeRow.maRowElement = newBeforeRowElement;
+							beforeRow.mRowsRepeatedNumber = -1;
+							newBeforeList.add(i, beforeRow);
+						}
+					}
+					rowRepository.put(newBeforeRowElement, newBeforeList);
+					// create new cell element map.
+					for (Node n : new DomNodeList(newBeforeRowElement.getChildNodes())) {
+						int columnsRepeatedNumber = ((TableTableCellElementBase) n)
+								.getTableNumberColumnsRepeatedAttribute();
+						for (int i = 0; i < columnsRepeatedNumber; i++) {
+							newBeforeCellElements.add((TableTableCellElementBase) n);
+						}
+					}
+				}
+			}
+			currentRowElement = (TableTableRowElement) maRowElement.cloneNode(true);
+			currentRowElement.removeAttributeNS(tableNameSpaceURI, "number-rows-repeated");
+			rowOwnerElement.insertBefore(currentRowElement, maRowElement);
+			// create new cell element map.
+			for (Node n : new DomNodeList(currentRowElement.getChildNodes())) {
+				int columnsRepeatedNumber = ((TableTableCellElementBase) n).getTableNumberColumnsRepeatedAttribute();
+				for (int i = 0; i < columnsRepeatedNumber; i++) {
+					newCurrentCellElements.add((TableTableCellElementBase) n);
+				}
+			}
+			if (offetAfterCurrentRow > 0) {
+				newAfterRowElement = (TableTableRowElement) maRowElement.cloneNode(true);
+				if (offetAfterCurrentRow > 1) {
+					newAfterRowElement.setTableNumberRowsRepeatedAttribute(offetAfterCurrentRow);
+				} else {
+					newAfterRowElement.removeAttributeNS(tableNameSpaceURI, "number-rows-repeated");
+				}
+				rowOwnerElement.insertBefore(newAfterRowElement, maRowElement);
+				// update row cache
+				if (oldList != null) {
+					Vector<Row> newAfterList = new Vector<Row>(offetAfterCurrentRow);
+					for (int i = mnRepeatedIndex + 1; i < repeateNum && i < oldList.size(); i++) {
+						Row afterRow = oldList.get(i);
+						if (afterRow != null) {
+							afterRow.maRowElement = newAfterRowElement;
+							afterRow.mnRepeatedIndex = i - mnRepeatedIndex - 1;
+							afterRow.mRowsRepeatedNumber = -1;
+							newAfterList.add(afterRow.mnRepeatedIndex, afterRow);
+						}
+					}
+					rowRepository.put(newAfterRowElement, newAfterList);
+					// create new cell element map.
+					for (Node n : new DomNodeList(newAfterRowElement.getChildNodes())) {
+						int columnsRepeatedNumber = ((TableTableCellElementBase) n)
+								.getTableNumberColumnsRepeatedAttribute();
+						for (int i = 0; i < columnsRepeatedNumber; i++) {
+							newAfterCellElements.add((TableTableCellElementBase) n);
+						}
+					}
+				}
+			}
+			// this var help to avoid calling duplicate.
+			int cellColumnIndexBase = 0;
+			// update cache cell list
+			for (Node n : new DomNodeList(maRowElement.getChildNodes())) {
+				if (cellRepository.containsKey(n)) {
+					Vector<Cell> cellList = cellRepository.get(n);
+					for (Cell cell : cellList) {
+						if (cell != null) {
+							int oldColumnIndex = cellColumnIndexBase + cell.mnRepeatedColIndex;
+							if (cell.mnRepeatedRowIndex > mnRepeatedIndex) {
+								cell.mnRepeatedRowIndex = cell.mnRepeatedRowIndex - mnRepeatedIndex - 1;
+								cell.mCellElement = newAfterCellElements.get(oldColumnIndex);
+							} else if (cell.mnRepeatedRowIndex == mnRepeatedIndex) {
+								cell.mnRepeatedRowIndex = 0;
+								cell.mCellElement = newCurrentCellElements.get(oldColumnIndex);
+							} else {
+								cell.mCellElement = newBeforeCellElements.get(oldColumnIndex);
+							}
+						}
+					}
+				}
+				cellColumnIndexBase += ((TableTableCellElementBase) n).getTableNumberColumnsRepeatedAttribute()
+						.intValue();
+			}
+			// update row cache
+			Vector<Row> currentList = new Vector<Row>(1);
+			currentList.add(0, this);
+			rowRepository.put(currentRowElement, currentList);
+			mRowsRepeatedNumber = -1;
+			mnRepeatedIndex = 0;
+			rowOwnerElement.removeChild(maRowElement);
+			maRowElement = currentRowElement;
+		}
+	}
+
+	/**
+	 * Return if the row always keeps its optimal height.
+	 * 
+	 * @return true if the row always keeps its optimal height; vice versa
+	 */
+	public boolean isOptimalHeight() {
+		return Boolean.parseBoolean(maRowElement.getProperty(OdfTableRowProperties.UseOptimalRowHeight));
+	}
+
+	/**
+	 * Set if the row always keeps its optimal height.
+	 * 
+	 * @param isUseOptimalHeight
+	 *            the flag that indicate row should keep its optimal height or
+	 *            not
+	 */
+	public void setUseOptimalHeight(boolean isUseOptimalHeight) {
+		maRowElement.setProperty(OdfTableRowProperties.UseOptimalRowHeight, String.valueOf(isUseOptimalHeight));
+	}
+
+	/**
+	 * Return an instance of <code>TableTableRowElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>TableTableRowElement</code>
+	 */
+	public TableTableRowElement getOdfElement() {
+		return maRowElement;
+	}
+
+	/**
+	 * Get a cell with a specific index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the cell index in this row
+	 * @return the cell object in the given cell index
+	 */
+	public Cell getCellByIndex(int index) {
+		Table table = getTable();
+		if (index < 0) {
+			throw new IllegalArgumentException("index should be nonnegative integer.");
+		}
+		// expand column as needed.
+		int lastColumnIndex = table.getColumnCount() - 1;
+		if (index > lastColumnIndex) {
+			// need clean cell style.
+			table.appendColumns((index - lastColumnIndex), true);
+		}
+		for (Node n : new DomNodeList(maRowElement.getChildNodes())) {
+			if (n instanceof TableTableCellElementBase) {
+				if (index == 0) {
+					return table.getCellInstance((TableTableCellElementBase) n, 0, mnRepeatedIndex);
+				} else {
+					int nextIndex = index
+							- ((TableTableCellElementBase) n).getTableNumberColumnsRepeatedAttribute().intValue();
+					if (nextIndex < 0) {
+						Cell cell = table.getCellInstance((TableTableCellElementBase) n, index, mnRepeatedIndex);
+						return cell;
+					} else {
+						index = nextIndex;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Return the count of real cells in this row. The cells covered by top
+	 * cells are not counted.
+	 * <p>
+	 * Please note it might not equal to the column count of the owner table,
+	 * because some of them are the covered cells.
+	 * 
+	 * @return the cell count
+	 */
+	public int getCellCount() {
+		Table table = getTable();
+		Set<Cell> realCells = new HashSet<Cell>();
+		List<CellCoverInfo> coverList = table.getCellCoverInfos(0, 0, table.getColumnCount() - 1,
+				table.getRowCount() - 1);
+		int rowIndex = getRowIndex();
+		for (int i = 0; i < table.getColumnCount(); i++) {
+			Cell cell = table.getOwnerCellByPosition(coverList, i, rowIndex);
+			realCells.add(cell);
+		}
+		return realCells.size();
+	}
+
+	/**
+	 * Return the previous row of the current row.
+	 * 
+	 * @return the previous row before this row in the owner table
+	 */
+	public Row getPreviousRow() {
+		Table table = getTable();
+		// the row has repeated row number > 1
+		if (getRowsRepeatedNumber() > 1) {
+			if (mnRepeatedIndex > 0) {
+				return table.getRowInstance(maRowElement, mnRepeatedIndex - 1);
+			}
+		}
+		// the row has repeated row number > 1 && the index is 0
+		// or the row has repeated row num = 1
+		Node aPrevNode = maRowElement.getPreviousSibling();
+		Node aCurNode = maRowElement;
+		TableTableRowElement lastRow;
+		while (true) {
+			if (aPrevNode == null) {
+				// does not have previous sibling, then get the parent
+				// because aCurNode might be the child element of
+				// table-header-rows, table-rows, table-row-group
+				Node parentNode = aCurNode.getParentNode();
+				// if the parent is table, then it means that this row is the
+				// first row in this table
+				// it has no previous row
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aPrevNode = parentNode.getPreviousSibling();
+			}
+			// else the previous node might be table-header-rows, table-rows,
+			// table-row-group
+			if (aPrevNode != null) {
+				try {
+					if (aPrevNode instanceof TableTableRowElement) {
+						return table
+								.getRowInstance((TableTableRowElement) aPrevNode, ((TableTableRowElement) aPrevNode)
+										.getTableNumberRowsRepeatedAttribute().intValue() - 1);
+					} else if (aPrevNode instanceof TableTableRowsElement
+							|| aPrevNode instanceof TableTableHeaderRowsElement
+							|| aPrevNode instanceof TableTableRowGroupElement) {
+						XPath xpath = ((OdfContentDom) aPrevNode.getOwnerDocument()).getXPath();
+						synchronized (mDocument) {
+							lastRow = (TableTableRowElement) xpath.evaluate(".//table:table-row[last()]", aPrevNode,
+									XPathConstants.NODE);
+						}
+						if (lastRow != null) {
+							return table.getRowInstance(lastRow, lastRow.getTableNumberRowsRepeatedAttribute()
+									.intValue() - 1);
+						}
+					} else {
+						aCurNode = aPrevNode;
+						aPrevNode = aPrevNode.getPreviousSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(Row.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Return the next row of the current row.
+	 * 
+	 * @return the next row after this row in the owner table
+	 */
+	public Row getNextRow() {
+		Table table = getTable();
+		// the row has repeated row number > 1
+		if (getRowsRepeatedNumber() > 1) {
+			if (mnRepeatedIndex < (getRowsRepeatedNumber() - 1)) {
+				return table.getRowInstance(maRowElement, mnRepeatedIndex + 1);
+			}
+		}
+		Node aNextNode = maRowElement.getNextSibling();
+		Node aCurNode = maRowElement;
+		TableTableRowElement firstRow;
+		while (true) {
+			if (aNextNode == null) {
+				// does not have next sibling, then get the parent
+				// because aCurNode might be the child element of
+				// table-header-rows, table-rows, table-row-group
+				Node parentNode = aCurNode.getParentNode();
+				// if the parent is table, then it means that this row is the
+				// last row in this table
+				// it has no next row
+				if (parentNode instanceof TableTableElement) {
+					return null;
+				}
+				aNextNode = parentNode.getNextSibling();
+			}
+			// else the next node might be table-header-rows, table-rows,
+			// table-row-group
+			if (aNextNode != null) {
+				try {
+					if (aNextNode instanceof TableTableRowElement) {
+						return table.getRowInstance((TableTableRowElement) aNextNode, 0);
+					} else if (aNextNode instanceof TableTableRowsElement
+							|| aNextNode instanceof TableTableHeaderRowsElement
+							|| aNextNode instanceof TableTableRowGroupElement) {
+						XPath xpath = ((OdfContentDom) aNextNode.getOwnerDocument()).getXPath();
+						synchronized (mDocument) {
+							firstRow = (TableTableRowElement) xpath.evaluate(".//table:table-row[first()]", aNextNode,
+									XPathConstants.NODE);
+						}
+						if (firstRow != null) {
+							return table.getRowInstance(firstRow, 0);
+						}
+					} else {
+						aCurNode = aNextNode;
+						aNextNode = aNextNode.getNextSibling();
+					}
+				} catch (XPathExpressionException e) {
+					Logger.getLogger(Row.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Set the default cell style to this row.
+	 * <p>
+	 * The style should already exist in this document.
+	 * 
+	 * @param style
+	 *            the cell style of the document
+	 */
+	public void setDefaultCellStyle(OdfStyle style) {
+		splitRepeatedRows();
+		OdfStyle defaultStyle = getDefaultCellStyle();
+		if (defaultStyle != null) {
+			defaultStyle.removeStyleUser(maRowElement);
+		}
+
+		if (style != null) {
+			style.addStyleUser(maRowElement);
+			maRowElement.setTableDefaultCellStyleNameAttribute(style.getStyleNameAttribute());
+		}
+	}
+
+	/**
+	 * Get the default cell style of this row.
+	 * 
+	 * @return the default cell style of this row
+	 */
+	public OdfStyle getDefaultCellStyle() {
+		String styleName = maRowElement.getTableDefaultCellStyleNameAttribute();
+		OdfStyle style = maRowElement.getAutomaticStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+
+		if (style == null) {
+			style = mDocument.getDocumentStyles().getStyle(styleName, OdfStyleFamily.TableCell);
+		}
+		return style;
+	}
+
+	/**
+	 * Return the index of this row in the owner table.
+	 * 
+	 * @return the index of the row
+	 */
+	public int getRowIndex() {
+		int result = 0;
+		TableTableElement mTableElement = getTableElement();
+		TableTableRowElement rowEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableRowElement) {
+						rowEle = (TableTableRowElement) m;
+						if (rowEle == getOdfElement()) {
+							return result + mnRepeatedIndex;
+						}
+						result += rowEle.getTableNumberRowsRepeatedAttribute();
+					}
+				}
+			}
+			if (n instanceof TableTableRowElement) {
+				rowEle = (TableTableRowElement) n;
+				if (rowEle == getOdfElement()) {
+					break;
+				}
+				result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+			}
+		}
+		return result + mnRepeatedIndex;
+	}
+
+	// insert count number of cell from index
+	// this is called after insertColumn has been called by Table
+	void insertCellByIndex(int index, int count) {
+		splitRepeatedRows();
+		// all insert the real cell
+		Table table = getTable();
+		List<CellCoverInfo> coverList = table.getCellCoverInfos(0, 0, table.getColumnCount() - 1,
+				table.getRowCount() - 1);
+		int rowIndex = getRowIndex();
+		Cell preCell;
+		if (index == 0) {
+			preCell = table.getOwnerCellByPosition(coverList, 0, rowIndex);
+		} else {
+			preCell = table.getOwnerCellByPosition(coverList, index - 1, rowIndex);
+		}
+		Cell nextCell = getCellByIndex(index);
+		if (nextCell == null) {
+			nextCell = getCellByIndex(getCellCount() - 1);
+		}
+		// add a single cell element to describe cells.
+		OdfName tableCellNameSpace = OdfName.newName(OdfDocumentNamespace.TABLE, "table-cell");
+		if (table.isUseRepeat()) {
+			TableTableCellElement newCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(
+					(OdfFileDom) maRowElement.getOwnerDocument(), tableCellNameSpace);
+			newCell.setTableStyleNameAttribute(preCell.getStyleName());
+			if (count > 1) {
+				newCell.setTableNumberColumnsRepeatedAttribute(count);
+			}
+			maRowElement.insertBefore(newCell, nextCell.getOdfElement());
+		} else {
+			for (int i = index + count; i > index; i--) {
+				TableTableCellElement newCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(
+						(OdfFileDom) maRowElement.getOwnerDocument(), tableCellNameSpace);
+				newCell.setTableStyleNameAttribute(preCell.getStyleName());
+				maRowElement.insertBefore(newCell, nextCell.getOdfElement());
+			}
+		}
+	}
+
+	// note: we have to use this method to modify the row repeated number
+	// in order to update mnRepeatedIndex of the each row
+	void setRowsRepeatedNumber(int num) {
+		mRowsRepeatedNumber = num;
+		// update the mnRepeatedIndex for the ever repeated row
+		maRowElement.setTableNumberRowsRepeatedAttribute(Integer.valueOf(num));
+	}
+
+	int getRowsRepeatedNumber() {
+		if (mRowsRepeatedNumber < 0) {
+			Integer count = maRowElement.getTableNumberRowsRepeatedAttribute();
+			if (count == null) {
+				mRowsRepeatedNumber = 1;
+			} else {
+				mRowsRepeatedNumber = count.intValue();
+			}
+		}
+		return mRowsRepeatedNumber;
+	}
+
+	/****************************
+	 * Moved from Table
+	 * 
+	 */
+	private void insertCellElementBefore(OdfElement parentEle, TableTableCellElementBase positionEle,
+			TableTableCellElementBase cellEle, int count) {
+		boolean isDescribedBySingleElement = getTable().isUseRepeat();
+		if (positionEle == null) {
+			parentEle.appendChild(cellEle);
+			if (isDescribedBySingleElement && count > 1) {
+				cellEle.setTableNumberColumnsRepeatedAttribute(count);
+			} else {
+				for (int i = 1; i < count; i++) {
+					parentEle.appendChild(cellEle.cloneNode(true));
+				}
+			}
+
+		} else {
+			parentEle.insertBefore(cellEle, positionEle);
+			if (isDescribedBySingleElement && count > 1) {
+				cellEle.setTableNumberColumnsRepeatedAttribute(count);
+			} else {
+				for (int i = 1; i < count; i++) {
+					parentEle.insertBefore(cellEle.cloneNode(true), positionEle);
+				}
+			}
+		}
+	}
+
+	void insertCellBefore(Cell refCell, Cell positionCell, int count) {
+		splitRepeatedRows();
+		Table ownerTable = getTable();
+		if (positionCell == null) {
+			if (refCell.isCoveredElement()) {
+				TableTableCellElement coverCellEle = (TableTableCellElement) refCell.getCoverCell().getOdfElement();
+				TableTableCellElement newCellEle = (TableTableCellElement) coverCellEle.cloneNode(true);
+				cleanCell(newCellEle);
+				insertCellElementBefore(getOdfElement(), null, newCellEle, count);
+			} else {
+				TableTableCellElement endCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(endCellEle);
+				getOdfElement().appendChild(endCellEle);
+				reviseStyleFromLastColumnToMedium(refCell);
+				if (count > 1) {
+					TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+					cleanCell(newCellEle);
+					insertCellElementBefore(getOdfElement(), endCellEle, newCellEle, count - 1);
+				}
+			}
+		} else {
+			TableTableCellElement coverRefCellEle = null;
+			TableTableCellElement coverPosCellEle = null;
+			Cell coverRefCell = null;
+			// get ref cover cell
+			if (refCell.isCoveredElement()) {
+				coverRefCell = refCell.getCoverCell();
+				coverRefCellEle = (TableTableCellElement) coverRefCell.getOdfElement();
+			}
+			// get position cover cell
+			if (positionCell.isCoveredElement()) {
+				coverPosCellEle = (TableTableCellElement) positionCell.getCoverCell().getOdfElement();
+			}
+			// is cover cell and have the same cover cell
+			// position cell is cover cell and refer cell covers position cell
+			if ((coverRefCellEle != null && coverRefCellEle == coverPosCellEle)
+					|| (coverPosCellEle != null && refCell.getOdfElement() == coverPosCellEle)) {
+				if (coverRefCellEle == null) {
+					coverRefCellEle = (TableTableCellElement) refCell.getOdfElement();
+					coverRefCell = refCell;
+				}
+				TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+						(OdfFileDom) ownerTable.getOdfElement().getOwnerDocument(), OdfName.newName(
+								OdfDocumentNamespace.TABLE, "covered-table-cell"));
+				insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+				// the first cover line
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) {
+					coverRefCell.setColumnSpannedNumber(coverRefCell.getColumnSpannedNumber() + count);
+				}
+			} else if (coverRefCellEle != null) {
+				// This is a cover cell
+
+				// the first cover line
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) {
+					TableTableCellElement newCellEle = (TableTableCellElement) coverRefCellEle.cloneNode(true);
+					cleanCell(newCellEle);
+					insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+				} else { // the second and other cover line
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) refCell.getOdfElement()
+							.cloneNode(true);
+					newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+					insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+				}
+			} else if ((refCell.getOdfElement() == positionCell.getOdfElement())
+					&& (refCell.getColumnsRepeatedNumber() > 1)) {
+				// repeated number
+				int repeatNum = refCell.getColumnsRepeatedNumber();
+				// update the cell that after the ref cell
+				for (int i = repeatNum - 1; i > refCell.mnRepeatedColIndex; i--) {
+					ownerTable.updateCellRepository(refCell.getOdfElement(), i, refCell.mnRepeatedRowIndex, refCell
+							.getOdfElement(), i + count, refCell.mnRepeatedRowIndex);
+				}
+				refCell.getOdfElement().setTableNumberColumnsRepeatedAttribute(repeatNum + count);
+			} else {
+				TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(newCellEle);
+				insertCellElementBefore(getOdfElement(), positionCell.getOdfElement(), newCellEle, count);
+			}
+		}
+	}
+
+	/**
+	 * This method is to insert a cell same as refCell before positionCell.
+	 * <p>
+	 * This method is invoked by appendColumn and insertColumnBefore.
+	 */
+	Cell insertCellBefore(Cell refCell, Cell positionCell) {
+		splitRepeatedRows();
+		Cell newCell = null;
+		Table ownerTable = getTable();
+		if (positionCell == null) {
+			if (refCell.isCoveredElement()) {
+				TableTableCellElement coverCellEle = (TableTableCellElement) refCell.getCoverCell().getOdfElement();
+				TableTableCellElement newCellEle = (TableTableCellElement) coverCellEle.cloneNode(true);
+				cleanCell(newCellEle);
+				getOdfElement().appendChild(newCellEle);
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+			} else {
+				TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(newCellEle);
+				getOdfElement().appendChild(newCellEle);
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+				reviseStyleFromLastColumnToMedium(refCell);
+			}
+		} else {
+			TableTableCellElement coverRefCellEle = null;
+			TableTableCellElement coverPosCellEle = null;
+			Cell coverRefCell = null;
+			if (refCell.isCoveredElement()) {
+				// get ref cover cell
+				coverRefCell = refCell.getCoverCell();
+				coverRefCellEle = (TableTableCellElement) coverRefCell.getOdfElement();
+			}
+			if (positionCell.isCoveredElement()) {
+				// get position cover cell
+				coverPosCellEle = (TableTableCellElement) positionCell.getCoverCell().getOdfElement();
+			}
+			// is cover cell and have the same cover cell
+			// position cell is cover cell and refer cell covers position cell
+			if ((coverRefCellEle != null && coverRefCellEle == coverPosCellEle)
+					|| (coverPosCellEle != null && refCell.getOdfElement() == coverPosCellEle)) {
+				if (coverRefCellEle == null) {
+					coverRefCellEle = (TableTableCellElement) refCell.getOdfElement();
+					coverRefCell = refCell;
+				}
+				TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) OdfXMLFactory.newOdfElement(
+						(OdfFileDom) ownerTable.getOdfElement().getOwnerDocument(), OdfName.newName(
+								OdfDocumentNamespace.TABLE, "covered-table-cell"));
+				getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) {
+					// the first cover line
+					coverRefCell.setColumnSpannedNumber(coverRefCell.getColumnSpannedNumber() + 1);
+				}
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+			} else if (coverRefCellEle != null) {
+				// This is cover cell
+				if (refCell.getRowIndex() == coverRefCell.getRowIndex()) {
+					// the first cover line
+					TableTableCellElement newCellEle = (TableTableCellElement) coverRefCellEle.cloneNode(true);
+					cleanCell(newCellEle);
+					getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+					newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+				} else { // the second and other cover line
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) refCell.getOdfElement()
+							.cloneNode(true);
+					newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+					getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+					newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+				}
+			} else if ((refCell.getOdfElement() == positionCell.getOdfElement())
+					&& (refCell.getColumnsRepeatedNumber() > 1)) {
+				// repeated number
+
+				int repeatNum = refCell.getColumnsRepeatedNumber();
+				// update the cell that after the ref cell
+				for (int i = repeatNum - 1; i > refCell.mnRepeatedColIndex; i--) {
+					ownerTable.updateCellRepository(refCell.getOdfElement(), i, refCell.mnRepeatedRowIndex, refCell
+							.getOdfElement(), i + 1, refCell.mnRepeatedRowIndex);
+				}
+				refCell.getOdfElement().setTableNumberColumnsRepeatedAttribute(repeatNum + 1);
+				newCell = ownerTable.getCellInstance(refCell.getOdfElement(), refCell.mnRepeatedColIndex + 1,
+						refCell.mnRepeatedRowIndex);
+			} else {
+				TableTableCellElement newCellEle = (TableTableCellElement) refCell.getOdfElement().cloneNode(true);
+				cleanCell(newCellEle);
+				getOdfElement().insertBefore(newCellEle, positionCell.getOdfElement());
+				newCell = ownerTable.getCellInstance(newCellEle, 0, 0);
+			}
+		}
+		return newCell;
+	}
+
+	private void cleanCell(TableTableCellElement newCellEle) {
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "date-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "time-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "boolean-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.OFFICE.getUri(), "string-value");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "formula");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+		newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-spanned");
+		if (!getTable().isCellStyleInheritance()) {
+			newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+		}
+		Node n = newCellEle.getFirstChild();
+		while (n != null) {
+			Node m = n.getNextSibling();
+			if (n instanceof TextPElement || n instanceof TextHElement || n instanceof TextListElement) {
+				newCellEle.removeChild(n);
+			}
+			n = m;
+		}
+	}
+
+	private void reviseStyleFromLastColumnToMedium(Cell oldLastCell) {
+		if (getTable().mIsSpreadsheet) {
+			return;
+		}
+		OdfStyle styleEle = oldLastCell.getStyleHandler().getStyleElementForWrite();
+		if (styleEle != null) {
+			if (oldLastCell.getRowIndex() == 0) {
+				Table.setLeftTopBorderStyleProperties(styleEle);
+			} else {
+				Table.setLeftBottomBorderStylesProperties(styleEle);
+			}
+		}
+	}
+
+	private void reviseStyleFromMediumColumnToLast(Cell newLastCell) {
+		if (getTable().mIsSpreadsheet) {
+			return;
+		}
+		OdfStyle styleEle = newLastCell.getStyleHandler().getStyleElementForWrite();
+		if (styleEle != null) {
+			if (newLastCell.getRowIndex() == 0) {
+				Table.setRightTopBorderStyleProperties(styleEle);
+			} else {
+				Table.setRightBottomBorderStylesProperties(styleEle);
+			}
+		}
+	}
+
+	/**
+	 * This method is invoked by removeColumnByIndex So we don't need to care
+	 * about the covered and spanned cell in a same column
+	 */
+	void removeCellByIndex(int nStart, int nCount) {
+		splitRepeatedRows();
+		Cell startCell = getCellByIndex(nStart);
+		Cell coverCell = null;
+		if (startCell.isCoveredElement()) {
+			coverCell = startCell.getCoverCellInSameRow();
+		}
+		int index = nStart;
+		for (int i = 0; i < nCount; i++) {
+			Cell cell = getCellByIndex(index);
+			cell.splitRepeatedCells();
+			if (cell.isCoveredElement() && coverCell != null) {
+				coverCell.setColumnSpannedNumber(coverCell.getColumnSpannedNumber() - cell.getColumnsRepeatedNumber());
+				maRowElement.removeChild(cell.getOdfElement());
+				i += cell.getColumnsRepeatedNumber() - 1;
+			} else if (cell.isCoveredElement()) {
+				maRowElement.removeChild(cell.getOdfElement());
+				i += cell.getColumnsRepeatedNumber() - 1;
+			} else if (!cell.isCoveredElement()) {
+				if (i + cell.getColumnSpannedNumber() <= nCount) {
+					maRowElement.removeChild(cell.getOdfElement());
+					i += cell.getColumnSpannedNumber() - 1;
+				} else {
+					removeCellByIndex(index + 1, nCount - i);
+				}
+			}
+		}
+		int clmnum = getTable().getColumnCount();
+		if (nStart + nCount >= clmnum) {
+			Cell cell = getCellByIndex(nStart - 1);
+			reviseStyleFromMediumColumnToLast(cell);
+		}
+	}
+
+	void removeAllCellsRelationship() {
+		Table table = getTable();
+		for (int i = 0; i < table.getColumnCount();) {
+			Cell cell = getCellByIndex(i);
+			if (cell == null) {
+				// cell might be null for empty row
+				i++;
+			} else {
+				if (cell.isCoveredElement()) {
+					// cell is a cover cell
+					Cell coverCell = cell.getCoverCellInSameColumn();
+					if (coverCell != null) {
+						coverCell.setRowSpannedNumber(coverCell.getRowSpannedNumber() - getRowsRepeatedNumber());
+					}
+					getOdfElement().removeChild(cell.getOdfElement());
+				} else if (cell.getRowSpannedNumber() > 1) {
+					// cell is not a cover cell and it span more rows
+					// split the cell under this cell to a single cell
+					Row nextRow = table.getRowByIndex(getRowIndex() + 1);
+					if (nextRow.getRowsRepeatedNumber() > 1) {
+						nextRow.splitRepeatedRows();
+					}
+					Cell coveredCell = table.getCellByPosition(cell.getColumnIndex(), getRowIndex() + 1);
+					if (coveredCell.getColumnsRepeatedNumber() > 1) {
+						coveredCell.splitRepeatedCells();
+						coveredCell = table.getCellByPosition(cell.getColumnIndex(), getRowIndex() + 1);
+					}
+					// create a new cell
+					TableTableCellElement newCellEle = (TableTableCellElement) cell.getOdfElement().cloneNode(true);
+					newCellEle.setTableNumberRowsSpannedAttribute(cell.getRowSpannedNumber() - getRowsRepeatedNumber());
+					// update repository
+					int startRow = coveredCell.getRowIndex();
+					int endRow = coveredCell.getRowIndex() + newCellEle.getTableNumberRowsSpannedAttribute();
+					int startClm = coveredCell.getColumnIndex();
+					int endClm = coveredCell.getColumnIndex() + newCellEle.getTableNumberColumnsSpannedAttribute()
+							* newCellEle.getTableNumberColumnsRepeatedAttribute();
+					coveredCell.getOdfElement().getParentNode().replaceChild(newCellEle, coveredCell.getOdfElement());
+					table.updateRepositoryWhenCellElementChanged(startRow, endRow, startClm, endClm, newCellEle);
+				}
+				i += cell.getColumnSpannedNumber();
+			}
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/Table.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Table.java
new file mode 100644
index 0000000..8e170fa
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/Table.java
@@ -0,0 +1,3490 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.ArrayList;
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.StringTokenizer;
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.table.TableAlignAttribute;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableColumnPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedExpressionsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableNamedRangeElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderRowsElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowGroupElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableProperties;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.odftoolkit.simple.text.Paragraph;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Table represents the table feature in ODF spreadsheet and text documents.
+ * <p>
+ * Table provides methods to get/add/delete/modify table column/row/cell.
+ * 
+ */
+public class Table extends Component {
+
+	private final TableTableElement mTableElement;
+	protected Document mDocument;
+	protected boolean mIsSpreadsheet;
+	protected boolean mIsCellStyleInheritance = true;
+	protected boolean mIsDescribedBySingleElement = true;
+	private static final int DEFAULT_ROW_COUNT = 2;
+	private static final int DEFAULT_COLUMN_COUNT = 5;
+	private static final double DEFAULT_TABLE_WIDTH = 6.692; // 6
+	private static final int DEFAULT_REL_TABLE_WIDTH = 65535;
+	private static final String DEFAULT_TABLE_ALIGN = "margins";
+	private static final DecimalFormat IN_FORMAT = new DecimalFormat("##0.0000");
+	// TODO: should save seperately for different dom tree
+	IdentityHashMap<TableTableCellElementBase, Vector<Cell>> mCellRepository = new IdentityHashMap<TableTableCellElementBase, Vector<Cell>>();
+	IdentityHashMap<TableTableRowElement, Vector<Row>> mRowRepository = new IdentityHashMap<TableTableRowElement, Vector<Row>>();
+	IdentityHashMap<TableTableColumnElement, Vector<Column>> mColumnRepository = new IdentityHashMap<TableTableColumnElement, Vector<Column>>();
+	private DefaultStyleHandler mStyleHandler;
+	static {
+		IN_FORMAT.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.US));
+	}
+
+	/**
+	 * This is a tool class which supplies all of the table creation detail.
+	 * <p>
+	 * The end user isn't allowed to create it directly, otherwise an
+	 * <code>IllegalStateException</code> will be thrown.
+	 * 
+	 *@since 0.3.5
+	 */
+	public static class TableBuilder {
+
+		private final TableContainer ownerContainer;
+
+		private final IdentityHashMap<TableTableElement, Table> mTableRepository = new IdentityHashMap<TableTableElement, Table>();
+
+		/**
+		 * TableBuilder constructor. This constructor should only be use in
+		 * owner {@link org.odftoolkit.simple.table.TableContainer
+		 * TableContainer} constructor. The end user isn't allowed to call it
+		 * directly, otherwise an <code>IllegalStateException</code> will be
+		 * thrown.
+		 * 
+		 * @param container
+		 *            the owner <code>TableContainer</code>.
+		 * @throws IllegalStateException
+		 *             if new TableBuilder out of owner Document constructor,
+		 *             this exception will be thrown.
+		 */
+		public TableBuilder(TableContainer container) {
+			if (container.getTableBuilder() == null) {
+				ownerContainer = container;
+			} else {
+				throw new IllegalStateException("TableBuilder only can be created in table containter constructor.");
+			}
+		}
+
+		/**
+		 * Get a table feature instance by an instance of
+		 * <code>TableTableElement</code>.
+		 * 
+		 * @param odfElement
+		 *            an instance of <code>TableTableElement</code>
+		 * @return an instance of <code>Table</code> that can represent
+		 *         <code>odfElement</code>
+		 */
+		public synchronized Table getTableInstance(TableTableElement odfElement) {
+			if (mTableRepository.containsKey(odfElement)) {
+				return mTableRepository.get(odfElement);
+			} else {
+				Table newTable = new Table(ownerContainer, odfElement);
+				mTableRepository.put(odfElement, newTable);
+				return newTable;
+			}
+		}
+
+		/**
+		 * Construct the <code>Table</code> feature. The default column count is
+		 * 5. The default row count is 2.
+		 * <p>
+		 * The table will be inserted at the end of the table container. An
+		 * unique table name will be given, you may set a custom table name
+		 * using the <code>setTableName</code> method.
+		 * <p>
+		 * If the container is a text document, cell borders will be created by
+		 * default.
+		 * 
+		 * @return the created <code>Table</code> feature instance
+		 */
+		public Table newTable() {
+			return newTable(DEFAULT_ROW_COUNT, DEFAULT_COLUMN_COUNT, 0, 0);
+		}
+
+		/**
+		 * Construct the <code>Table</code> feature with a specified row number,
+		 * column number, header row number, header column number.
+		 * <p>
+		 * The table will be inserted at the end of the container. An unique
+		 * table name will be given, you may set a custom table name using the
+		 * <code>setTableName</code> method.
+		 * <p>
+		 * If the container is a text document, cell borders will be created by
+		 * default.
+		 * 
+		 * @param numRows
+		 *            the row number
+		 * @param numCols
+		 *            the column number
+		 * @param headerRowNumber
+		 *            the header row number
+		 * @param headerColumnNumber
+		 *            the header column number
+		 * @return a new instance of <code>Table</code>
+		 * */
+		public Table newTable(int numRows, int numCols, int headerRowNumber, int headerColumnNumber) {
+			try {
+				TableTableElement newTEle = createTable(ownerContainer, numRows, numCols, headerRowNumber,
+						headerColumnNumber);
+				ownerContainer.getTableContainerElement().appendChild(newTEle);
+				return getTableInstance(newTEle);
+			} catch (DOMException e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			} catch (Exception e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			}
+			return null;
+		}
+		
+		/**
+		 * Construct the <code>Table</code> feature with a specified row number,
+		 * column number, header row number, header column number, left margin
+		 * space and right margin space.
+		 * <p>
+		 * The table will be inserted at the end of the container. An unique
+		 * table name will be given, you may set a custom table name using the
+		 * <code>setTableName</code> method.
+		 * <p>
+		 * If the container is a text document, cell borders will be created by
+		 * default.
+		 * 
+		 * @param numRows
+		 *            the row number
+		 * @param numCols
+		 *            the column number
+		 * @param headerRowNumber
+		 *            the header row number
+		 * @param headerColumnNumber
+		 *            the header column number
+		 * @param marginLeft
+		 *            the left table margin in centimeter(cm), between the left
+		 *            margin of table container and the table
+		 * @param marginRight
+		 *            the right table margin in centimeter(cm), between the
+		 *            right margin of table container and the table
+		 * 
+		 * @return a new instance of <code>Table</code>
+		 * 
+		 * @since 0.5.5
+		 * */
+		public Table newTable(int numRows, int numCols, int headerRowNumber, int headerColumnNumber, double marginLeft,
+				double marginRight) {
+			try {
+				TableTableElement newTEle = createTable(ownerContainer, numRows, numCols, headerRowNumber,
+						headerColumnNumber, marginLeft, marginRight);
+				ownerContainer.getTableContainerElement().appendChild(newTEle);
+				return getTableInstance(newTEle);
+			} catch (Exception e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			}
+			return null;
+		}
+
+		/**
+		 * Construct the <code>Table</code> feature with a specified row number
+		 * and column number.
+		 * <p>
+		 * The table will be inserted at the end of the container. An unique
+		 * table name will be given, you may set a custom table name using the
+		 * <code>setTableName</code> method.
+		 * <p>
+		 * If the container is a text document, cell borders will be created by
+		 * default.
+		 * 
+		 * @param numRows
+		 *            the row number
+		 * @param numCols
+		 *            the column number
+		 * @return a new instance of <code>Table</code>
+		 */
+		public Table newTable(int numRows, int numCols) {
+			return newTable(numRows, numCols, 0, 0);
+		}
+
+		/**
+		 * Construct the Table feature with a specified 2 dimension array as the
+		 * data of this table. The value type of each cell is float.
+		 * <p>
+		 * The table will be inserted at the end of the container. An unique
+		 * table name will be given, you may set a custom table name using the
+		 * <code>setTableName</code> method.
+		 * <p>
+		 * If the container is a text document, cell borders will be created by
+		 * default.
+		 * 
+		 * @param rowLabel
+		 *            set as the header row, it can be null if no header row
+		 *            needed
+		 * @param columnLabel
+		 *            set as the header column, it can be null if no header
+		 *            column needed
+		 * @param data
+		 *            the two dimension array of double as the data of this
+		 *            table
+		 * @return a new instance of <code>Table</code>
+		 */
+		public Table newTable(String[] rowLabel, String[] columnLabel, double[][] data) {
+			int rowNumber = DEFAULT_ROW_COUNT;
+			int columnNumber = DEFAULT_COLUMN_COUNT;
+			if (data != null) {
+				rowNumber = data.length;
+				columnNumber = data[0].length;
+			}
+			int rowHeaders = 0, columnHeaders = 0;
+
+			if (rowLabel != null) {
+				rowHeaders = 1;
+			}
+			if (columnLabel != null) {
+				columnHeaders = 1;
+			}
+			try {
+				TableTableElement newTEle = createTable(ownerContainer, rowNumber + rowHeaders, columnNumber
+						+ columnHeaders, rowHeaders, columnHeaders);
+				// append to the end of table container
+				ownerContainer.getTableContainerElement().appendChild(newTEle);
+				Table table = getTableInstance(newTEle);
+				List<Row> rowList = table.getRowList();
+				for (int i = 0; i < rowNumber + rowHeaders; i++) {
+					Row row = rowList.get(i);
+					for (int j = 0; j < columnNumber + columnHeaders; j++) {
+						if ((i == 0) && (j == 0)) {
+							continue;
+						}
+						Cell cell = row.getCellByIndex(j);
+						if (i == 0 && columnLabel != null) // first row, should
+						// fill column
+						// labels
+						{
+							if (j <= columnLabel.length) {
+								cell.setStringValue(columnLabel[j - 1]);
+							} else {
+								cell.setStringValue("");
+							}
+						} else if (j == 0 && rowLabel != null) // first column,
+						// should fill
+						// row labels
+						{
+							if (i <= rowLabel.length) {
+								cell.setStringValue(rowLabel[i - 1]);
+							} else {
+								cell.setStringValue("");
+							}
+						} else {// data
+							if ((data != null) && (i >= rowHeaders) && (j >= columnHeaders)) {
+								cell.setDoubleValue(data[i - rowHeaders][j - columnHeaders]);
+							}
+						}
+					}
+				}
+				return table;
+
+			} catch (DOMException e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			} catch (Exception e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			}
+			return null;
+		}
+
+		/**
+		 * Construct the Table feature with a specified 2 dimension array as the
+		 * data of this table. The value type of each cell is string.
+		 * <p>
+		 * The table will be inserted at the end of the container. An unique
+		 * table name will be given, you may set a custom table name using the
+		 * <code>setTableName</code> method.
+		 * <p>
+		 * If the container is a text document, cell borders will be created by
+		 * default.
+		 * 
+		 * @param rowLabel
+		 *            set as the header row, it can be null if no header row
+		 *            needed
+		 * @param columnLabel
+		 *            set as the header column, it can be null if no header
+		 *            column needed
+		 * @param data
+		 *            the two dimension array of string as the data of this
+		 *            table
+		 * @return a new instance of <code>Table</code>
+		 */
+		public Table newTable(String[] rowLabel, String[] columnLabel, String[][] data) {
+			int rowNumber = DEFAULT_ROW_COUNT;
+			int columnNumber = DEFAULT_COLUMN_COUNT;
+			if (data != null) {
+				rowNumber = data.length;
+				columnNumber = data[0].length;
+			}
+			int rowHeaders = 0, columnHeaders = 0;
+
+			if (rowLabel != null) {
+				rowHeaders = 1;
+			}
+			if (columnLabel != null) {
+				columnHeaders = 1;
+			}
+			try {
+				TableTableElement newTEle = createTable(ownerContainer, rowNumber + rowHeaders, columnNumber
+						+ columnHeaders, rowHeaders, columnHeaders);
+				// append to the end of table container
+				ownerContainer.getTableContainerElement().appendChild(newTEle);
+
+				Table table = getTableInstance(newTEle);
+				List<Row> rowList = table.getRowList();
+				for (int i = 0; i < rowNumber + rowHeaders; i++) {
+					Row row = rowList.get(i);
+					for (int j = 0; j < columnNumber + columnHeaders; j++) {
+						if ((i == 0) && (j == 0)) {
+							continue;
+						}
+						Cell cell = row.getCellByIndex(j);
+						if (i == 0 && columnLabel != null) // first row, should
+						// fill column
+						// labels
+						{
+							if (j <= columnLabel.length) {
+								cell.setStringValue(columnLabel[j - 1]);
+							} else {
+								cell.setStringValue("");
+							}
+						} else if (j == 0 && rowLabel != null) // first column,
+						// should fill
+						// row labels
+						{
+							if (i <= rowLabel.length) {
+								cell.setStringValue(rowLabel[i - 1]);
+							} else {
+								cell.setStringValue("");
+							}
+						} else {
+							if ((data != null) && (i >= rowHeaders) && (j >= columnHeaders)) {
+								cell.setStringValue(data[i - rowHeaders][j - columnHeaders]);
+							}
+						}
+					}
+				}
+				return table;
+
+			} catch (DOMException e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			} catch (Exception e) {
+				Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			}
+			return null;
+		}
+	}
+
+	private Table(TableContainer container, TableTableElement table) {
+		mTableElement = table;
+		mDocument = getOwnerDocument(container);
+		if (mDocument instanceof SpreadsheetDocument) {
+			mIsSpreadsheet = true;
+		} else {
+			mIsSpreadsheet = false;
+		}
+	}
+
+	private static Document getOwnerDocument(TableContainer tableContainer) {
+		OdfElement containerElement = tableContainer.getTableContainerElement();
+		OdfFileDom ownerDocument = (OdfFileDom) containerElement.getOwnerDocument();
+		return (Document) ownerDocument.getDocument();
+	}
+
+	/**
+	 * Get a table feature instance by an instance of
+	 * <code>TableTableElement</code>.
+	 * 
+	 * @param element
+	 *            an instance of <code>TableTableElement</code>
+	 * @return an instance of <code>Table</code> that can represent
+	 *         <code>element</code>
+	 */
+	public static Table getInstance(TableTableElement element) {
+		Document ownerDocument = (Document) ((OdfFileDom) (element.getOwnerDocument())).getDocument();
+		return ownerDocument.getTableBuilder().getTableInstance(element);
+	}
+
+	/**
+	 * Construct the <code>Table</code> feature. The default column count is 5.
+	 * The default row count is 2.
+	 * <p>
+	 * The table will be inserted at the end of the container. An unique table
+	 * name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * <p>
+	 * If the <code>tableContainer</code> is a text document, cell borders will
+	 * be created by default.
+	 * 
+	 * @param tableContainer
+	 *            the table container that contains this table
+	 * @return the created <code>Table</code> feature instance
+	 */
+	public static Table newTable(TableContainer tableContainer) {
+		return tableContainer.getTableBuilder().newTable();
+	}
+
+	/**
+	 * Construct the <code>Table</code> feature with a specified row number and
+	 * column number.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * <p>
+	 * If the <code>tableContainer</code> is a text document, cell borders will
+	 * be created by default.
+	 * 
+	 * @param tableContainer
+	 *            the table container that contains this table
+	 * @param numRows
+	 *            the row number
+	 * @param numCols
+	 *            the column number
+	 * @return a new instance of <code>Table</code>
+	 */
+	public static Table newTable(TableContainer tableContainer, int numRows, int numCols) {
+		return tableContainer.getTableBuilder().newTable(numRows, numCols);
+	}
+	
+	/**
+	 * Construct the <code>Table</code> feature with a specified row number and
+	 * column number.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * <p>
+	 * If the <code>tableContainer</code> is a text document, cell borders will
+	 * be created by default.
+	 * 
+	 * @param tableContainer
+	 *            the table container that contains this table
+	 * @param numRows
+	 *            the row number
+	 * @param numCols
+	 *            the column number
+	 * @param marginLeft double
+	 * 			  <I>the left table margin in cm (between the left margin of document and the table)</I>
+	 * @param marginRight double
+	 * 			  <I>the right table margin in cm (between the right margin of document and the table)</I>
+	 * @return a new instance of <code>Table</code>
+	 */
+	public static Table newTable(TableContainer tableContainer, int numRows, int numCols, 
+			double marginLeft, double marginRight) {
+		return tableContainer.getTableBuilder().newTable(numRows, numCols, 0, 0, marginLeft, marginRight);
+	}
+
+	/**
+	 * Construct the <code>Table</code> feature with a specified row number,
+	 * column number, header row number, header column number.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * <p>
+	 * If the <code>tableContainer</code> is a text document, cell borders will
+	 * be created by default.
+	 * 
+	 * @param tableContainer
+	 *            the ODF document that contains this feature
+	 * @param numRows
+	 *            the row number
+	 * @param numCols
+	 *            the column number
+	 * @param headerRowNumber
+	 *            the header row number
+	 * @param headerColumnNumber
+	 *            the header column number
+	 * @return a new instance of <code>Table</code>
+	 * */
+	public static Table newTable(TableContainer tableContainer, int numRows, int numCols, int headerRowNumber,
+			int headerColumnNumber) {
+		return tableContainer.getTableBuilder().newTable(numRows, numCols, headerRowNumber, headerColumnNumber);
+	}
+	
+	
+
+	/**
+	 * Construct the Table feature with a specified 2 dimension array as the
+	 * data of this table. The value type of each cell is float.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * <p>
+	 * If the <code>tableContainer</code> is a text document, cell borders will
+	 * be created by default.
+	 * 
+	 * @param tableContainer
+	 *            the table container that contains this table
+	 * @param rowLabel
+	 *            set as the header row, it can be null if no header row needed
+	 * @param columnLabel
+	 *            set as the header column, it can be null if no header column
+	 *            needed
+	 * @param data
+	 *            the two dimension array of double as the data of this table
+	 * @return a new instance of <code>Table</code>
+	 */
+	public static Table newTable(TableContainer tableContainer, String[] rowLabel, String[] columnLabel, double[][] data) {
+		return tableContainer.getTableBuilder().newTable(rowLabel, columnLabel, data);
+	}
+
+	/**
+	 * Construct the Table feature with a specified 2 dimension array as the
+	 * data of this table. The value type of each cell is string.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * <p>
+	 * If the <code>tableContainer</code> is a text document, cell borders will
+	 * be created by default.
+	 * 
+	 * @param tableContainer
+	 *            the table container that contains this table
+	 * @param rowLabel
+	 *            set as the header row, it can be null if no header row needed
+	 * @param columnLabel
+	 *            set as the header column, it can be null if no header column
+	 *            needed
+	 * @param data
+	 *            the two dimension array of string as the data of this table
+	 * @return a new instance of <code>Table</code>
+	 */
+	public static Table newTable(TableContainer tableContainer, String[] rowLabel, String[] columnLabel, String[][] data) {
+		return tableContainer.getTableBuilder().newTable(rowLabel, columnLabel, data);
+	}
+
+	Cell getCellInstance(TableTableCellElementBase cell, int repeatedColIndex, int repeatedRowIndex) {
+		if (mCellRepository.containsKey(cell)) {
+			Vector<Cell> list = mCellRepository.get(cell);
+			Cell fCell = null;
+			for (int i = 0; i < list.size(); i++) {
+				if (list.get(i).getOdfElement() == cell && list.get(i).mnRepeatedColIndex == repeatedColIndex
+						&& list.get(i).mnRepeatedRowIndex == repeatedRowIndex) {
+					fCell = list.get(i);
+					break;
+				}
+			}
+			if (fCell == null) {
+				fCell = new Cell(cell, repeatedColIndex, repeatedRowIndex);
+				list.add(fCell);
+			}
+			return fCell;
+		} else {
+			Cell newCell = new Cell(cell, repeatedColIndex, repeatedRowIndex);
+			Vector<Cell> list = new Vector<Cell>();
+			list.add(newCell);
+			mCellRepository.put(cell, list);
+			return newCell;
+		}
+	}
+
+	Row getRowInstance(TableTableRowElement row, int repeatedRowIndex) {
+		if (mRowRepository.containsKey(row)) {
+			Vector<Row> list = mRowRepository.get(row);
+			if (list.size() <= repeatedRowIndex) {
+				list.setSize(repeatedRowIndex + 1);
+			}
+			Row fCell = list.get(repeatedRowIndex);
+			if (fCell == null) {
+				fCell = new Row(row, repeatedRowIndex);
+				list.set(repeatedRowIndex, fCell);
+			}
+			return fCell;
+		} else {
+			Row newRow = new Row(row, repeatedRowIndex);
+			int size = (repeatedRowIndex > 7) ? (repeatedRowIndex + 1) : 8;
+			Vector<Row> list = new Vector<Row>(size);
+			list.setSize(repeatedRowIndex + 1);
+			list.set(repeatedRowIndex, newRow);
+			mRowRepository.put(row, list);
+			return newRow;
+		}
+	}
+
+	Column getColumnInstance(TableTableColumnElement col, int repeatedColIndex) {
+		if (mColumnRepository.containsKey(col)) {
+			Vector<Column> list = mColumnRepository.get(col);
+			if (list.size() <= repeatedColIndex) {
+				list.setSize(repeatedColIndex + 1);
+			}
+			Column fClm = list.get(repeatedColIndex);
+			if (fClm == null) {
+				fClm = new Column(col, repeatedColIndex);
+				list.set(repeatedColIndex, fClm);
+			}
+			return fClm;
+		} else {
+			Column newColumn = new Column(col, repeatedColIndex);
+			int size = (repeatedColIndex > 7) ? (repeatedColIndex + 1) : 8;
+			Vector<Column> list = new Vector<Column>(size);
+			list.setSize(repeatedColIndex + 1);
+			list.set(repeatedColIndex, newColumn);
+			mColumnRepository.put(col, list);
+			return newColumn;
+		}
+	}
+
+	TableTableColumnElement getColumnElementByIndex(int colIndex) {
+		int result = 0;
+		TableTableColumnElement columnEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableColumnElement) {
+						columnEle = (TableTableColumnElement) m;
+						if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+							result += 1;
+						} else {
+							result += columnEle.getTableNumberColumnsRepeatedAttribute();
+						}
+					}
+					if (result > colIndex) {
+						break;
+					}
+				}
+			}
+			if (n instanceof TableTableColumnElement) {
+				columnEle = (TableTableColumnElement) n;
+				if (columnEle.getTableNumberColumnsRepeatedAttribute() == null) {
+					result += 1;
+				} else {
+					result += columnEle.getTableNumberColumnsRepeatedAttribute();
+				}
+			}
+			if (result > colIndex) {
+				break;
+			}
+		}
+		return columnEle;
+	}
+
+	TableTableRowElement getRowElementByIndex(int rowIndex) {
+		int result = 0;
+		TableTableRowElement rowEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableRowElement) {
+						rowEle = (TableTableRowElement) m;
+						result += rowEle.getTableNumberRowsRepeatedAttribute();
+					}
+					if (result > rowIndex) {
+						break;
+					}
+				}
+			}
+			if (n instanceof TableTableRowElement) {
+				rowEle = (TableTableRowElement) n;
+				result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+			}
+			if (result > rowIndex) {
+				break;
+			}
+		}
+		return rowEle;
+	}
+
+	/**
+	 * Get the width of the table (in Millimeter).
+	 * <p>
+	 * Throw an UnsupportedOperationException if the table is one sheet of a
+	 * spreadsheet document. because the sheet doesn't have an attribute of
+	 * table width.
+	 * 
+	 * @return the width of the current table (in Millimeter).
+	 *         <p>
+	 *         An UnsupportedOperationException will be thrown if the table is
+	 *         in the spreadsheet document.
+	 */
+	public double getWidth() {
+		if (!mIsSpreadsheet) {
+			String sWidth = mTableElement.getProperty(OdfTableProperties.Width);
+			if (sWidth == null) {
+				int colCount = getColumnCount();
+				double tableWidth = 0;
+				for (int i = 0; i < colCount; i++) {
+					Column col = getColumnByIndex(i);
+					tableWidth += col.getWidth();
+				}
+				return tableWidth;
+			} else{
+				return PositiveLength.parseDouble(sWidth, Unit.MILLIMETER);
+			}
+		} else {
+			throw new UnsupportedOperationException();
+		}
+	}
+
+	/**
+	 * Set the width of the table (in Millimeter).
+	 * <p>
+	 * Throw an UnsupportedOperationException if the table is part of a
+	 * spreadsheet document that does not allow to change the table size,
+	 * because spreadsheet is not allow user to set the table size.
+	 * 
+	 * @param width
+	 *            the width that need to set (in Millimeter).
+	 *            <p>
+	 *            An UnsupportedOperationException will be thrown if the table
+	 *            is in the spreadsheet document.
+	 */
+	public void setWidth(double width) {
+		if (!mIsSpreadsheet) {
+			double roundingFactor = 10000.0;
+			//TODO:need refactor to PositiveLength.
+			double inValue = Math.round(roundingFactor * width / Unit.INCH.unitInMillimiter()) / roundingFactor;
+			String sWidthIN = String.valueOf(inValue) + Unit.INCH.abbr();
+			mTableElement.setProperty(OdfTableProperties.Width, sWidthIN);
+			// if the width is changed, we should also change the table:align
+			// properties if it is "margins"
+			// otherwise the width seems not changed
+			String alineStyle = mTableElement.getProperty(StyleTablePropertiesElement.Align);
+			if (TableAlignAttribute.Value.MARGINS.toString().equals(alineStyle)) {
+				mTableElement.setProperty(StyleTablePropertiesElement.Align, TableAlignAttribute.Value.LEFT.toString());
+			}
+		} else {
+			throw new UnsupportedOperationException();
+		}
+	}
+
+	static void setLeftTopBorderStyleProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.BorderLeft, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderRight, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderTop, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderBottom, "0.0007in solid #000000");
+	}
+
+	static void setRightTopBorderStyleProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.Border, "0.0007in solid #000000");
+	}
+
+	static void setLeftBottomBorderStylesProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.BorderLeft, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderRight, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderTop, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderBottom, "0.0007in solid #000000");
+
+	}
+
+	static void setRightBottomBorderStylesProperties(OdfStyle style) {
+		style.setProperty(StyleTableCellPropertiesElement.Padding, "0.0382in");
+		style.setProperty(StyleTableCellPropertiesElement.Border, "0.0007in solid #000000");
+		style.setProperty(StyleTableCellPropertiesElement.BorderTop, "none");
+		style.setProperty(StyleTableCellPropertiesElement.BorderBottom, "0.0007in solid #000000");
+	}
+	
+	private static TableTableElement createTable(TableContainer container, int numRows, int numCols,
+			int headerRowNumber, int headerColumnNumber) throws Exception {
+		return createTable(container, numRows, numCols, headerRowNumber, headerColumnNumber, 0, 0);
+	}
+
+	private static TableTableElement createTable(TableContainer container, int numRows, int numCols,
+			int headerRowNumber, int headerColumnNumber, double marginLeft, double marginRight) throws Exception {
+		Document document = getOwnerDocument(container);
+		OdfElement containerElement = container.getTableContainerElement();
+		OdfFileDom dom = (OdfFileDom) containerElement.getOwnerDocument();
+		double tableWidth = getTableWidth(container, marginLeft, marginRight);
+
+		boolean isTextDocument = document instanceof TextDocument;
+
+		// check arguments
+		if (numRows < 1 || numCols < 1 || headerRowNumber < 0 || headerColumnNumber < 0 || headerRowNumber > numRows
+				|| headerColumnNumber > numCols) {
+			throw new IllegalArgumentException("Can not create table with the given parameters:\n" + "Rows " + numRows
+					+ ", Columns " + numCols + ", HeaderRows " + headerRowNumber + ", HeaderColumns "
+					+ headerColumnNumber);
+		}
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		// 1. create table element
+		TableTableElement newTEle = (TableTableElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+				OdfDocumentNamespace.TABLE, "table"));
+		String tablename = getUniqueTableName(container);
+		newTEle.setTableNameAttribute(tablename);
+		// create style
+		OdfStyle tableStyle = styles.newStyle(OdfStyleFamily.Table);
+		String stylename = tableStyle.getStyleNameAttribute();
+		tableStyle.setProperty(StyleTablePropertiesElement.Width, tableWidth + "in");
+		tableStyle.setProperty(StyleTablePropertiesElement.Align, DEFAULT_TABLE_ALIGN);
+		if (marginLeft != 0) {
+			tableStyle.setProperty(StyleTablePropertiesElement.MarginLeft, (new DecimalFormat("#0.##")
+					.format(marginLeft) + Unit.CENTIMETER.abbr()).replace(",", "."));
+		}
+		if (marginRight != 0) {
+			tableStyle.setProperty(StyleTablePropertiesElement.MarginRight, (new DecimalFormat("#0.##")
+					.format(marginRight) + Unit.CENTIMETER.abbr()).replace(",", "."));
+		}
+		newTEle.setStyleName(stylename);
+
+		// 2. create column elements
+		// 2.0 create column style
+		OdfStyle columnStyle = styles.newStyle(OdfStyleFamily.TableColumn);
+		String columnStylename = columnStyle.getStyleNameAttribute();
+		// for spreadsheet document, no need compute column width.
+		if (isTextDocument) {
+			columnStyle.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, IN_FORMAT.format(tableWidth
+					/ numCols)
+					+ "in");
+			columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, Math
+					.round(DEFAULT_REL_TABLE_WIDTH / numCols)
+					+ "*");
+		}
+		// 2.1 create header column elements
+		if (headerColumnNumber > 0) {
+			TableTableHeaderColumnsElement headercolumns = (TableTableHeaderColumnsElement) OdfXMLFactory
+					.newOdfElement(dom, OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-columns"));
+			TableTableColumnElement headercolumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName
+					.newName(OdfDocumentNamespace.TABLE, "table-column"));
+			if (headerColumnNumber > 1) {
+				headercolumn.setTableNumberColumnsRepeatedAttribute(headerColumnNumber);
+			} else {
+				headercolumn.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+			}
+			headercolumns.appendChild(headercolumn);
+			newTEle.appendChild(headercolumns);
+			headercolumn.setStyleName(columnStylename);
+		}
+		// 2.2 create common column elements
+		TableTableColumnElement columns = (TableTableColumnElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+				OdfDocumentNamespace.TABLE, "table-column"));
+		int tableNumberColumnsRepeatedValue = numCols - headerColumnNumber;
+		if (tableNumberColumnsRepeatedValue > 1) {
+			columns.setTableNumberColumnsRepeatedAttribute(tableNumberColumnsRepeatedValue);
+		}
+		columns.setStyleName(columnStylename);
+		newTEle.appendChild(columns);
+
+		// 3. create row elements
+		// 3.0 create 4 kinds of styles
+		OdfStyle lefttopStyle = null, leftbottomStyle = null, righttopStyle = null, rightbottomStyle = null;
+
+		if (isTextDocument) {
+			lefttopStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setLeftTopBorderStyleProperties(lefttopStyle);
+
+			leftbottomStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setLeftBottomBorderStylesProperties(leftbottomStyle);
+
+			righttopStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setRightTopBorderStyleProperties(righttopStyle);
+
+			rightbottomStyle = styles.newStyle(OdfStyleFamily.TableCell);
+			setRightBottomBorderStylesProperties(rightbottomStyle);
+		}
+
+		// 3.1 create header row elements
+		if (headerRowNumber > 0) {
+			TableTableHeaderRowsElement headerrows = (TableTableHeaderRowsElement) OdfXMLFactory.newOdfElement(dom,
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-header-rows"));
+			for (int i = 0; i < headerRowNumber; i++) {
+				TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+						OdfDocumentNamespace.TABLE, "table-row"));
+				for (int j = 0; j < numCols; j++) {
+					TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom, OdfName
+							.newName(OdfDocumentNamespace.TABLE, "table-cell"));
+					if (isTextDocument) {
+						if ((j + 1 == numCols) && (i == 0)) {
+							aCell.setStyleName(righttopStyle.getStyleNameAttribute());
+						} else if (i == 0) {
+							aCell.setStyleName(lefttopStyle.getStyleNameAttribute());
+						} else if ((j + 1 == numCols) && (i > 0)) {
+							aCell.setStyleName(rightbottomStyle.getStyleNameAttribute());
+						} else {
+							aCell.setStyleName(leftbottomStyle.getStyleNameAttribute());
+						}
+					}
+					aRow.appendChild(aCell);
+				}
+				headerrows.appendChild(aRow);
+			}
+			newTEle.appendChild(headerrows);
+		}
+
+		// 3.2 create common row elements
+		for (int i = headerRowNumber; i < numRows; i++) {
+			TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+					OdfDocumentNamespace.TABLE, "table-row"));
+			for (int j = 0; j < numCols; j++) {
+				TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+						OdfDocumentNamespace.TABLE, "table-cell"));
+				if (isTextDocument) {
+					if ((j + 1 == numCols) && (i == 0)) {
+						aCell.setStyleName(righttopStyle.getStyleNameAttribute());
+					} else if (i == 0) {
+						aCell.setStyleName(lefttopStyle.getStyleNameAttribute());
+					} else if ((j + 1 == numCols) && (i > 0)) {
+						aCell.setStyleName(rightbottomStyle.getStyleNameAttribute());
+					} else {
+						aCell.setStyleName(leftbottomStyle.getStyleNameAttribute());
+					}
+				}
+				aRow.appendChild(aCell);
+			}
+			newTEle.appendChild(aRow);
+		}
+
+		return newTEle;
+	}
+
+	/**
+	 * Apply the formatting specified in the template to corresponding table
+	 * cells.
+	 * <p>
+	 * A table can only be formatted as one type of styles: even-odd-rows or
+	 * even-odd-columns. The rule is to check the style of odd rows and even
+	 * rows in the template, only if they have one different properties, table:
+	 * style-name or table:paragraph-style-name, the table template will be
+	 * treated as a even-odd-columns styled table.
+	 * <p>
+	 * If one style in the template is null, the style of corresponding cells
+	 * will be removed. An empty template can be used to remove all the styles
+	 * in a table.
+	 * 
+	 * @param template
+	 * @throws IllegalArgumentException
+	 *             if the given template is null
+	 * @throws Exception
+	 *             if content DOM could not be initialized
+	 */
+	public void applyStyle(TableTemplate template) throws Exception {
+
+		if (template == null)
+			throw new IllegalArgumentException(
+					"The template cannot null to be applied to a table.");
+
+		Document doc = this.getOwnerDocument();
+		OdfOfficeAutomaticStyles styles = doc.getContentDom()
+				.getAutomaticStyles();
+
+		// decide row style or column style
+		boolean isEqualTableStyle = true;
+		boolean isEqualParaStyle = true;
+		OdfStyle evenRowsTableStyle = styles.getStyle(template
+				.getTableEvenRowsTableStyle(), OdfStyleFamily.TableCell);
+		OdfStyle oddRowsTableStyle = styles.getStyle(template
+				.getTableOddRowsTableStyle(), OdfStyleFamily.TableCell);
+		OdfStyle evenRowsParagraphStyle = styles.getStyle(template
+				.getTableEvenRowsParagraphStyle(), OdfStyleFamily.Paragraph);
+		OdfStyle oddRowsParagraphStyle = styles.getStyle(template
+				.getTableOddRowsParagraphStyle(), OdfStyleFamily.Paragraph);
+		if (evenRowsTableStyle != null || oddRowsTableStyle != null)
+			isEqualTableStyle = evenRowsTableStyle.compareTo(oddRowsTableStyle) == 0;
+		if (evenRowsParagraphStyle != null || oddRowsParagraphStyle != null)
+			isEqualParaStyle = evenRowsParagraphStyle
+					.compareTo(oddRowsParagraphStyle) == 0;
+
+		Iterator<Row> rowIterator = this.getRowIterator();
+
+		if (rowIterator.hasNext()) { // first row
+			Row currentRow = rowIterator.next();
+			String firstCellTableStyle = template
+					.getExtendedTableStyleByType(TableTemplate.ExtendedStyleType.FIRSTROWSTARTCOLUM);
+			String firstCellParagraphStyle = template
+					.getExtendedParagraphStyleByType(TableTemplate.ExtendedStyleType.FIRSTROWSTARTCOLUM);
+			String lastCellTableStyle = template
+					.getExtendedTableStyleByType(TableTemplate.ExtendedStyleType.FIRSTROWENDCOLUMN);
+			String lastCellParagraphStyle = template
+					.getExtendedParagraphStyleByType(TableTemplate.ExtendedStyleType.FIRSTROWENDCOLUMN);
+			String evenCellTableStyle = template.getTableFirstRowTableStyle();
+			String evenCellParagraphStyle = template
+					.getTableFirstRowParagraphStyle();
+			String oddCellTableStyle = evenCellTableStyle;
+			String oddCellParagraphStyle = evenCellParagraphStyle;
+
+			applyStyleToRow(template, currentRow, firstCellTableStyle,
+					oddCellTableStyle, evenCellTableStyle, lastCellTableStyle,
+					firstCellParagraphStyle, oddCellParagraphStyle,
+					evenCellParagraphStyle, lastCellParagraphStyle);
+
+			int line = 0;
+			while (rowIterator.hasNext()) {
+				currentRow = rowIterator.next();
+				line++;
+
+				if (!rowIterator.hasNext()) { // last row
+					firstCellTableStyle = template
+							.getExtendedTableStyleByType(TableTemplate.ExtendedStyleType.LASTROWSTARTCOLUMN);
+					firstCellParagraphStyle = template
+							.getExtendedParagraphStyleByType(TableTemplate.ExtendedStyleType.LASTROWSTARTCOLUMN);
+					lastCellTableStyle = template
+							.getExtendedTableStyleByType(TableTemplate.ExtendedStyleType.LASTROWENDCOLUMN);
+					lastCellParagraphStyle = template
+							.getExtendedParagraphStyleByType(TableTemplate.ExtendedStyleType.LASTROWENDCOLUMN);
+					oddCellTableStyle = evenCellTableStyle = template
+							.getTableLastRowTableStyle();
+					oddCellParagraphStyle = evenCellParagraphStyle = template
+							.getTableLastRowParagraphStyle();
+
+					applyStyleToRow(template, currentRow, firstCellTableStyle,
+							oddCellTableStyle, evenCellTableStyle,
+							lastCellTableStyle, firstCellParagraphStyle,
+							oddCellParagraphStyle, evenCellParagraphStyle,
+							lastCellParagraphStyle);
+
+				} else if (!isEqualTableStyle || !isEqualParaStyle) {
+					firstCellTableStyle = template
+							.getTableFirstColumnTableStyle();
+					firstCellParagraphStyle = template
+							.getTableFirstColumnParagraphStyle();
+					lastCellTableStyle = template
+							.getTableLastColumnTableStyle();
+					lastCellParagraphStyle = template
+							.getTableLastColumnParagraphStyle();
+
+					if (line % 2 != 0) { // odd row
+
+						oddCellTableStyle = evenCellTableStyle = template
+								.getTableOddRowsTableStyle();
+						oddCellParagraphStyle = evenCellParagraphStyle = template
+								.getTableOddRowsParagraphStyle();
+						applyStyleToRow(template, currentRow,
+								firstCellTableStyle, oddCellTableStyle,
+								evenCellTableStyle, lastCellTableStyle,
+								firstCellParagraphStyle, oddCellParagraphStyle,
+								evenCellParagraphStyle, lastCellParagraphStyle);
+					} else { // even row
+
+						oddCellTableStyle = evenCellTableStyle = template
+								.getTableEvenRowsTableStyle();
+						oddCellParagraphStyle = evenCellParagraphStyle = template
+								.getTableEvenRowsParagraphStyle();
+
+						applyStyleToRow(template, currentRow,
+								firstCellTableStyle, oddCellTableStyle,
+								evenCellTableStyle, lastCellTableStyle,
+								firstCellParagraphStyle, oddCellParagraphStyle,
+								evenCellParagraphStyle, lastCellParagraphStyle);
+					}
+
+				} else { // even&odd column
+					firstCellTableStyle = template
+							.getTableFirstColumnTableStyle();
+					firstCellParagraphStyle = template
+							.getTableFirstColumnParagraphStyle();
+					lastCellTableStyle = template
+							.getTableLastColumnTableStyle();
+					lastCellParagraphStyle = template
+							.getTableLastColumnParagraphStyle();
+					evenCellTableStyle = template
+							.getTableEvenColumnsTableStyle();
+					evenCellParagraphStyle = template
+							.getTableEvenColumnsParagraphStyle();
+					oddCellTableStyle = template.getTableOddColumnsTableStyle();
+					oddCellParagraphStyle = template
+							.getTableOddColumnsParagraphStyle();
+					applyStyleToRow(template, currentRow, firstCellTableStyle,
+							oddCellTableStyle, evenCellTableStyle,
+							lastCellTableStyle, firstCellParagraphStyle,
+							oddCellParagraphStyle, evenCellParagraphStyle,
+							lastCellParagraphStyle);
+				}
+			}
+
+		}
+
+	}
+
+	private void applyStyleToRow(TableTemplate template, Row row,
+			String firstCellTableStyle, String oddCellTableStyle,
+			String evenCellTableStyle, String lastCellTableStyle,
+			String firstCellParagraphStyle, String oddCellParagraphStyle,
+			String evenCellParagraphStyle, String lastCellParagraphStyle) {
+		int cellIndex = 0;
+		int mnRepeatedIndex = row.getRowsRepeatedNumber();
+		int lastIndex = row.getCellCount() - 1;
+		Cell cell;
+		String tableStyle, paraStyle;
+		for (Node n : new DomNodeList(row.getOdfElement().getChildNodes())) {
+			if (n instanceof TableTableCellElementBase) {
+				cell = this.getCellInstance((TableTableCellElementBase) n, 0,
+						mnRepeatedIndex);
+				if (cell.getColumnsRepeatedNumber() > 1)
+					lastIndex -= cell.getColumnsRepeatedNumber() - 1;
+				if (cellIndex == 0) {
+					tableStyle = firstCellTableStyle;
+					paraStyle = firstCellParagraphStyle;
+				} else if (cellIndex == lastIndex) {
+					tableStyle = lastCellTableStyle;
+					paraStyle = lastCellParagraphStyle;
+				} else if (cellIndex % 2 == 0) {
+					tableStyle = evenCellTableStyle;
+					paraStyle = evenCellParagraphStyle;
+				} else {
+					tableStyle = oddCellTableStyle;
+					paraStyle = oddCellParagraphStyle;
+				}
+				cell.setCellStyleName(tableStyle);
+				Iterator<Paragraph> paraIterator = cell.getParagraphIterator();
+				while (paraIterator.hasNext()) {
+					Paragraph t = paraIterator.next();
+					t.getOdfElement().setStyleName(paraStyle);
+				}
+				cellIndex++;
+			}
+		}
+	}
+
+	private static String getUniqueTableName(TableContainer container) {
+		List<Table> tableList = container.getTableList();
+		boolean notUnique = true;
+
+		String tablename = "Table" + (tableList.size() + 1);
+
+		while (notUnique) {
+			notUnique = false;
+			for (int i = 0; i < tableList.size(); i++) {
+				if (tableList.get(i).getTableName() != null) {
+					if (tableList.get(i).getTableName().equalsIgnoreCase(tablename)) {
+						notUnique = true;
+						break;
+					}
+				}
+			}
+			if (notUnique) {
+				tablename = tablename + Math.round(Math.random() * 10);
+			}
+		}
+
+		return tablename;
+
+	}
+
+	/**
+	 * Get the row count of this table.
+	 * 
+	 * @return total count of rows
+	 */
+	public int getRowCount() {
+		int result = 0;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				result += getHeaderRowCount((TableTableHeaderRowsElement) n);
+			}
+			if (n instanceof TableTableRowElement) {
+				result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+			}
+			if (n instanceof TableTableRowsElement) {
+				for (Node nn : new DomNodeList(n.getChildNodes())) {
+					if (nn instanceof TableTableRowElement) {
+						result += ((TableTableRowElement) nn).getTableNumberRowsRepeatedAttribute();
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Get the column count of this table.
+	 * 
+	 * @return total count of columns
+	 */
+	public int getColumnCount() {
+		int result = 0;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			// TODO: how about <table:table-column-group>
+			if (n instanceof TableTableHeaderColumnsElement) {
+				result += getHeaderColumnCount((TableTableHeaderColumnsElement) n);
+			}
+
+			// <table:table-columns>
+			if (n instanceof TableTableColumnsElement) {
+				result += getColumnsCount((TableTableColumnsElement) n);
+			}
+
+			if (n instanceof TableTableColumnElement) {
+				result += ((TableTableColumnElement) n).getTableNumberColumnsRepeatedAttribute();
+			}
+			// as different type of elements appear in order, so if n is one of
+			// the the following elements, computing will stop. It's helpful
+			// when the table has lots of rows.
+			if (n instanceof TableTableHeaderRowsElement || n instanceof TableTableRowsElement
+					|| n instanceof TableTableRowGroupElement || n instanceof TableTableRowElement) {
+				break;
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * This method is invoked by appendRow. When a table has no row, the first
+	 * row is a default row.
+	 */
+	private TableTableRowElement createDefaultRow(int columnCount, boolean createRepeatedCell) {
+		OdfFileDom dom = (OdfFileDom) mTableElement.getOwnerDocument();
+		TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+				OdfDocumentNamespace.TABLE, "table-row"));
+		if (createRepeatedCell) {
+			TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+					OdfDocumentNamespace.TABLE, "table-cell"));
+			if (columnCount > 1) {
+				aCell.setTableNumberColumnsRepeatedAttribute(columnCount);
+			}
+			if (!mIsSpreadsheet) {
+				OdfOfficeAutomaticStyles automaticStyles = mTableElement.getAutomaticStyles();
+				OdfStyle borderStyle = automaticStyles.newStyle(OdfStyleFamily.TableCell);
+				setRightTopBorderStyleProperties(borderStyle);
+				aCell.setStyleName(borderStyle.getStyleNameAttribute());
+			}
+			aRow.appendChild(aCell);
+		} else {
+			OdfStyle lefttopStyle = null, righttopStyle = null;
+			// create 2 kinds of styles
+			if (!mIsSpreadsheet) {
+				OdfOfficeAutomaticStyles automaticStyles = mTableElement.getAutomaticStyles();
+				lefttopStyle = automaticStyles.newStyle(OdfStyleFamily.TableCell);
+				setLeftTopBorderStyleProperties(lefttopStyle);
+				righttopStyle = automaticStyles.newStyle(OdfStyleFamily.TableCell);
+				setRightTopBorderStyleProperties(righttopStyle);
+			}
+			for (int j = 0; j < columnCount; j++) {
+				TableTableCellElement aCell = (TableTableCellElement) OdfXMLFactory.newOdfElement(dom, OdfName.newName(
+						OdfDocumentNamespace.TABLE, "table-cell"));
+				if (!mIsSpreadsheet) {
+					if (j + 1 == columnCount) {
+						aCell.setStyleName(righttopStyle.getStyleNameAttribute());
+					} else {
+						aCell.setStyleName(lefttopStyle.getStyleNameAttribute());
+					}
+				}
+				aRow.appendChild(aCell);
+			}
+		}
+		return aRow;
+	}
+
+	/**
+	 * Append a row to the end of the table. The style of new row is same with
+	 * the last row in the table.
+	 * <p>
+	 * Since SIMPLE supports automatic table expansion. Whenever a cell outside
+	 * the current table is addressed the table is instantly expanded. Method
+	 * <code>getCellByPosition</code> can randomly access any cell, no matter it
+	 * in or out of the table original range.
+	 * 
+	 * @return a new appended row
+	 * @see #appendRows(int)
+	 * @see #getRowByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public Row appendRow() {
+		// find append position
+		Node childNode = mTableElement.getLastChild();
+		// where is the new row inserted before.
+		Node positionNode = null;
+		// row style and structure clone from.
+		TableTableRowElement refRowElement = null;
+		TableTableRowElement newRow = null;
+		if (childNode instanceof TableNamedExpressionsElement) {
+			childNode = childNode.getPreviousSibling();
+			positionNode = childNode;
+		}
+		if (childNode instanceof TableTableRowElement) {
+			refRowElement = (TableTableRowElement) childNode;
+		}
+		// TODO: what about childNode instanceof TableTableHeaderRowsElement,
+		// TableTableRowsElement or TableTableRowGroupElement
+		int columnCount = getColumnCount();
+		// no row, create a default row
+		if (refRowElement == null) {
+			newRow = createDefaultRow(columnCount, true);
+			mTableElement.appendChild(newRow);
+		} else {
+			newRow = (TableTableRowElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement.getOwnerDocument(),
+					OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
+			TableTableCellElementBase cellElement = (TableTableCellElementBase) refRowElement.getFirstChild();
+			int i = 1;
+			while (cellElement != null && i <= columnCount) {
+				// covered element
+				String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
+				if (cellElement instanceof TableCoveredTableCellElement) {
+					TableCoveredTableCellElement coveredCellEle = (TableCoveredTableCellElement) cellElement;
+					// find cover cell element
+					TableTableRowElement aRowEle = (TableTableRowElement) (coveredCellEle.getParentNode()
+							.getPreviousSibling());
+					while (aRowEle != null) {
+						// the cover cell and the first covered cell must have
+						// the same column index.
+						TableTableCellElementBase coverCellEle = (TableTableCellElementBase) (aRowEle.getFirstChild());
+						int j = coverCellEle.getTableNumberColumnsRepeatedAttribute();
+						while (j < i) {
+							coverCellEle = (TableTableCellElementBase) (coverCellEle.getNextSibling());
+							if (coverCellEle instanceof TableTableCellElement) {
+								j += (coverCellEle.getTableNumberColumnsRepeatedAttribute() * (((TableTableCellElement) coverCellEle)
+										.getTableNumberColumnsSpannedAttribute()));
+							} else {
+								j += coverCellEle.getTableNumberColumnsRepeatedAttribute();
+							}
+						}
+						// find the cover cell, now start cell clone.
+						if (coverCellEle instanceof TableTableCellElement) {
+							TableTableCellElement newCellEle = (TableTableCellElement) (coverCellEle.cloneNode(true));
+							cleanCell(newCellEle);
+							newCellEle.removeAttributeNS(tableNameSpace, "number-rows-spanned");
+							newRow.appendChild(newCellEle);
+							// deal with the following covered cell, spread
+							// sheet need change these covered cell to cell.
+							if (mIsSpreadsheet) {
+								// update column repeated number.
+								int columnsSpannedNumber = newCellEle.getTableNumberColumnsSpannedAttribute();
+								newCellEle.removeAttributeNS(tableNameSpace, "number-columns-spanned");
+								int newColumnRepeatedNumber = newCellEle.getTableNumberColumnsRepeatedAttribute()
+										* columnsSpannedNumber;
+								if (newColumnRepeatedNumber > 1) {
+									newCellEle.setTableNumberColumnsRepeatedAttribute(newColumnRepeatedNumber);
+								} else {
+									newCellEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+								}
+								// ignore the following covered cell of
+								// reference row.
+								// added by Daisy because of a bug in demo4
+								// cellElement is a covered cell. coverCellEle
+								// is its cover cell.
+								// below codes will count
+								// newColumnRepeatedNumber covered cell.
+								int tempi = newColumnRepeatedNumber;
+								while (tempi > 0) {
+									int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
+									if (iColumnRepeatedNumber > tempi) {
+										// split covered cell
+										if (cellElement instanceof TableCoveredTableCellElement) {
+											cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
+													- tempi);
+											TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
+													.cloneNode(true);
+											cleanCell(newCoveredCellEle);
+											if (tempi > 1) {
+												newCoveredCellEle.setTableNumberColumnsRepeatedAttribute(tempi);
+											} else {
+												newCoveredCellEle.removeAttributeNS(
+														OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+											}
+											refRowElement.insertBefore(newCoveredCellEle, cellElement);
+											cellElement = newCoveredCellEle;
+										}
+									}
+									tempi = tempi - cellElement.getTableNumberColumnsRepeatedAttribute();
+									i = i + cellElement.getTableNumberColumnsRepeatedAttribute();
+									if (!(cellElement instanceof TableCoveredTableCellElement) && (tempi > 0)){
+										Logger.getLogger(Table.class.getName()).log(Level.FINE,	"Not covered cell was ignored");
+									}
+									cellElement = (TableTableCellElementBase) (cellElement.getNextSibling());
+									// while ((cellElement != null) &&
+									// (cellElement instanceof
+									// TableCoveredTableCellElement)) {
+									// cellElement = (TableTableCellElementBase)
+									// (cellElement.getNextSibling());
+									// }
+								}
+								// i += newColumnRepeatedNumber;
+							} else {
+								// clone the following covered cell of reference
+								// row.
+								// added by Daisy because of a bug in demo4
+								cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
+								i += cellElement.getTableNumberColumnsRepeatedAttribute();
+								int newColumnSpanNumber = newCellEle.getTableNumberColumnsSpannedAttribute();
+								while ((cellElement != null) && (cellElement instanceof TableCoveredTableCellElement)
+										&& (newColumnSpanNumber > 1)) {
+									TableCoveredTableCellElement newCoveredCellElement = (TableCoveredTableCellElement) cellElement
+											.cloneNode(true);
+									cleanCell(newCoveredCellElement);
+									newRow.appendChild(newCoveredCellElement);
+									i += cellElement.getTableNumberColumnsRepeatedAttribute();
+									cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
+									newColumnSpanNumber--;
+								}
+							}
+							break;
+						}
+						// continue find cover cell
+						Node preNode = aRowEle.getPreviousSibling();
+						if (preNode instanceof TableTableRowElement) {
+							aRowEle = (TableTableRowElement) preNode;
+						} else {
+							// </table:table-header-rows>
+							aRowEle = (TableTableRowElement) (preNode.getLastChild());
+						}
+					}
+				} else {
+					TableTableCellElement newCellEle = (TableTableCellElement) cellElement.cloneNode(true);
+					cleanCell(newCellEle);
+					newRow.appendChild(newCellEle);
+					Integer tableNumberColumnsRepeated = newCellEle.getTableNumberColumnsRepeatedAttribute();
+					Integer tableNumberColumnsSpanned = newCellEle.getTableNumberColumnsSpannedAttribute();
+					i += tableNumberColumnsRepeated * tableNumberColumnsSpanned;
+					cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
+					if (tableNumberColumnsSpanned > 1) {
+						int j = 1;
+						if (mIsSpreadsheet) {
+							newCellEle.removeAttributeNS(tableNameSpace, "number-columns-spanned");
+							int newColumnRepeatedNumber = tableNumberColumnsRepeated * tableNumberColumnsSpanned;
+							if (newColumnRepeatedNumber > 1) {
+								newCellEle.setTableNumberColumnsRepeatedAttribute(newColumnRepeatedNumber);
+							} else {
+								newCellEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+							}
+							// cellElement is not a covered cell.
+							// below codes will count
+							// (newColumnRepeatedNumber-1) covered cell.
+							int tempi = newColumnRepeatedNumber;
+							while (tempi > 1) {
+								int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
+								if (iColumnRepeatedNumber > tempi + 1) {
+									// split covered cell
+									if (cellElement instanceof TableCoveredTableCellElement) {
+										cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
+												- tempi + 1);
+										TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
+												.cloneNode(true);
+										cleanCell(newCoveredCellEle);
+										newCoveredCellEle.setTableNumberColumnsRepeatedAttribute(tempi - 1);
+										refRowElement.insertBefore(newCoveredCellEle, cellElement);
+										cellElement = newCoveredCellEle;
+									}
+								}
+								tempi = tempi - cellElement.getTableNumberColumnsRepeatedAttribute();
+								if (!(cellElement instanceof TableCoveredTableCellElement) && (tempi > 1)){
+									Logger.getLogger(Table.class.getName()).log(Level.FINE,	"Not covered cell was ignored");
+								}
+								cellElement = (TableTableCellElementBase) (cellElement.getNextSibling());
+							}
+						} else {
+							while ((j < tableNumberColumnsSpanned) && (cellElement != null)) {
+								int iColumnRepeatedNumber = cellElement.getTableNumberColumnsRepeatedAttribute();
+								if (iColumnRepeatedNumber > tableNumberColumnsSpanned - j) {
+									// split covered cell
+									if (cellElement instanceof TableCoveredTableCellElement) {
+										cellElement.setTableNumberColumnsRepeatedAttribute(iColumnRepeatedNumber
+												- tableNumberColumnsSpanned + j);
+										TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
+												.cloneNode(true);
+										cleanCell(newCoveredCellEle);
+										newCoveredCellEle
+												.setTableNumberColumnsRepeatedAttribute(tableNumberColumnsSpanned - j);
+										refRowElement.insertBefore(newCoveredCellEle, cellElement);
+										cellElement = newCoveredCellEle;
+									}
+								}
+								TableTableCellElementBase newCoveredCellEle = (TableTableCellElementBase) cellElement
+										.cloneNode(true);
+								cleanCell(newCoveredCellEle);
+								newRow.appendChild(newCoveredCellEle);
+								j += newCoveredCellEle.getTableNumberColumnsRepeatedAttribute();
+								cellElement = (TableTableCellElementBase) cellElement.getNextSibling();
+							}
+						}
+					}
+				}
+			}
+			if (positionNode == null) {
+				mTableElement.appendChild(newRow);
+			} else {
+				mTableElement.insertBefore(newRow, positionNode);
+			}
+		}
+		return getRowInstance(newRow, 0);
+	}
+
+	/**
+	 * Append a specific number of rows to the end of the table. The style of
+	 * new rows are same with the last row in the table.
+	 * <p>
+	 * Since SIMPLE supports automatic table expansion. Whenever a cell outside
+	 * the current table is addressed the table is instantly expanded. Method
+	 * <code>getCellByPosition</code> can randomly access any cell, no matter it
+	 * in or out of the table original range.
+	 * 
+	 * @param rowCount
+	 *            is the number of rows to be appended.
+	 * @return a list of new appended rows
+	 * @see #appendRow()
+	 * @see #getRowByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public List<Row> appendRows(int rowCount) {
+		return appendRows(rowCount, false);
+	}
+
+	List<Row> appendRows(int rowCount, boolean isCleanStyle) {
+		List<Row> resultList = new ArrayList<Row>();
+		if (rowCount <= 0) {
+			return resultList;
+		}
+		if (isUseRepeat()) {
+			Row firstRow = appendRow();
+			resultList.add(firstRow);
+			if (rowCount > 1) {
+				firstRow.setRowsRepeatedNumber(rowCount);
+				TableTableRowElement firstRowEle = firstRow.getOdfElement();
+				for (int i = 1; i < rowCount; i++) {
+					Row row = getRowInstance(firstRowEle, i);
+					resultList.add(row);
+				}
+			}
+		} else {
+			for (int i = 0; i < rowCount; i++) {
+				Row firstRow = appendRow();
+				resultList.add(firstRow);
+			}
+		}
+		if (isCleanStyle) {
+			// clean style name
+			String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
+			for (Row row : resultList) {
+				Node cellE = row.getOdfElement().getFirstChild();
+				while (cellE != null) {
+					((TableTableCellElementBase) cellE).removeAttributeNS(tableNameSpace, "style-name");
+					cellE = cellE.getNextSibling();
+				}
+			}
+		}
+		return resultList;
+	}
+
+	/**
+	 * Append a column at the end of the table. The style of new column is same
+	 * with the last column in the table.
+	 * <p>
+	 * Since SIMPLE supports automatic table expansion. Whenever a cell outside
+	 * the current table is addressed the table is instantly expanded. Method
+	 * <code>getCellByPosition</code> can randomly access any cell, no matter it
+	 * in or out of the table original range.
+	 * 
+	 * @return a new appended column
+	 * @see #appendColumns(int)
+	 * @see #getColumnByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public Column appendColumn() {
+		List<Column> columnList = getColumnList();
+		int columnCount = columnList.size();
+
+		TableTableColumnElement newColumn;
+		OdfElement positonElement = getRowElementByIndex(0);
+		if (positonElement.getParentNode() instanceof TableTableHeaderRowsElement) {
+			positonElement = (OdfElement) positonElement.getParentNode();
+		}
+
+		// Moved before column elements inserted
+		// insert cells firstly
+		// Or else, wrong column number will be gotten in updateCellRepository,
+		// which will cause a NPE.
+		// insertCellBefore()->splitRepeatedRows()->updateRowRepository()->updateCellRepository()
+		List<Row> rowList = getRowList();
+		for (int i = 0; i < rowList.size();) {
+			Row row1 = rowList.get(i);
+			row1.insertCellBefore(row1.getCellByIndex(columnCount - 1), null);
+			i = i + row1.getRowsRepeatedNumber();
+		}
+
+		// insert columns secondly
+		if (columnList.size() == 0) // no column, create a new column
+		{
+			OdfStyle columnStyle = mTableElement.getAutomaticStyles().newStyle(OdfStyleFamily.TableColumn);
+			String columnStylename = columnStyle.getStyleNameAttribute();
+			columnStyle.setProperty(StyleTableColumnPropertiesElement.ColumnWidth, DEFAULT_TABLE_WIDTH + "in");
+			columnStyle.setProperty(StyleTableColumnPropertiesElement.RelColumnWidth, DEFAULT_REL_TABLE_WIDTH + "*");
+
+			newColumn = (TableTableColumnElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement
+					.getOwnerDocument(), OdfName.newName(OdfDocumentNamespace.TABLE, "table-column"));
+			newColumn.setStyleName(columnStylename);
+			mTableElement.insertBefore(newColumn, positonElement);
+		} else { // has column, append a same column as the last one.
+			TableTableColumnElement refColumn = columnList.get(columnList.size() - 1).getOdfElement();
+			newColumn = (TableTableColumnElement) refColumn.cloneNode(true);
+			String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
+			newColumn.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+			mTableElement.insertBefore(newColumn, positonElement);
+		}
+
+		return getColumnInstance(newColumn, 0);
+	}
+
+	/**
+	 * Append a specific number of columns to the right of the table. The style
+	 * of new columns are same with the rightmost column in the table.
+	 * <p>
+	 * Since SIMPLE supports automatic table expansion. Whenever a cell outside
+	 * the current table is addressed the table is instantly expanded. Method
+	 * <code>getCellByPosition</code> can randomly access any cell, no matter it
+	 * in or out of the table original range.
+	 * 
+	 * @param columnCount
+	 *            is the number of columns to be appended.
+	 * @return a list of new appended columns
+	 * @see #appendColumn()
+	 * @see #getColumnByIndex(int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 */
+	public List<Column> appendColumns(int columnCount) {
+		return appendColumns(columnCount, false);
+	}
+
+	List<Column> appendColumns(int columnCount, boolean isCleanStyle) {
+		List<Column> resultList = new ArrayList<Column>();
+		if (columnCount <= 0) {
+			return resultList;
+		}
+		Column firstClm = appendColumn();
+		resultList.add(firstClm);
+		if (columnCount > 1) {
+			List<Column> list = insertColumnsBefore((getColumnCount() - 1), (columnCount - 1));
+			resultList.addAll(list);
+		}
+		// clean style name
+		if (isCleanStyle) {
+			for (Column column : resultList) {
+				int length = column.getCellCount();
+				for (int i = 0; i < length; i++) {
+					TableTableCellElementBase cellElement = column.getCellByIndex(i).mCellElement;
+					cellElement.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "style-name");
+				}
+			}
+		}
+		return resultList;
+	}
+
+	/**
+	 * This method is to insert a numbers of row
+	 */
+	private List<Row> insertMultipleRowsBefore(Row refRow, Row positionRow, int count) {
+		List<Row> resultList = new ArrayList<Row>();
+		int j = 1;
+
+		if (count <= 0) {
+			return resultList;
+		}
+
+		Row firstRow = insertRowBefore(refRow, positionRow, getColumnCount());
+		resultList.add(firstRow);
+
+		if (count == 1) {
+			return resultList;
+		}
+		TableTableRowElement rowEle = firstRow.getOdfElement();
+		for (int i = 0; i < getColumnCount();) {
+			Cell refCell = refRow.getCellByIndex(i);
+			if (!refCell.isCoveredElement()) {
+				int coveredHeigth = refCell.getRowSpannedNumber();
+				if (coveredHeigth > 1) {
+					refCell.setRowSpannedNumber(coveredHeigth + 1);
+				}
+			}
+			i += refCell.getColumnsRepeatedNumber();
+		}
+		if (isUseRepeat()) {
+			firstRow.setRowsRepeatedNumber(count);
+			while (j < count) {
+				resultList.add(getRowInstance(rowEle, j));
+				j++;
+			}
+		} else {
+			while (j < count) {
+				TableTableRowElement newRowEle = (TableTableRowElement) rowEle.cloneNode(true);
+				newRowEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-repeated");
+				mTableElement.insertBefore(newRowEle, positionRow.getOdfElement());
+				resultList.add(getRowInstance(newRowEle, 0));
+				j++;
+			}
+		}
+		return resultList;
+	}
+
+	// only insert one Row
+	private Row insertRowBefore(Row refRow, Row positionRow, int columnCount) {
+		TableTableRowElement aRow = (TableTableRowElement) OdfXMLFactory.newOdfElement((OdfFileDom) mTableElement
+				.getOwnerDocument(), OdfName.newName(OdfDocumentNamespace.TABLE, "table-row"));
+		int coveredLength = 0, coveredHeigth = 0;
+		for (int i = 0; i < columnCount;) {
+			Cell refCell = refRow.getCellByIndex(i);
+			int columnsRepeatedNumber = refCell.getColumnsRepeatedNumber();
+			if (!refCell.isCoveredElement()) // not cover element
+			{
+				TableTableCellElement aCellEle = (TableTableCellElement) refCell.getOdfElement();
+				coveredHeigth = aCellEle.getTableNumberRowsSpannedAttribute();
+				if (coveredHeigth == 1) {
+					TableTableCellElement newCellEle = (TableTableCellElement) aCellEle.cloneNode(true);
+					cleanCell(newCellEle);
+					aRow.appendChild(newCellEle);
+				} else { // cover more rows
+					aCellEle.setTableNumberRowsSpannedAttribute(coveredHeigth + 1);
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) OdfXMLFactory
+							.newOdfElement((OdfFileDom) mTableElement.getOwnerDocument(), OdfName.newName(
+									OdfDocumentNamespace.TABLE, "covered-table-cell"));
+					if (columnsRepeatedNumber > 1) {
+						newCellEle.setTableNumberColumnsRepeatedAttribute(columnsRepeatedNumber);
+					} else {
+						newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-columns-repeated");
+					}
+					aRow.appendChild(newCellEle);
+				}
+
+				coveredLength = aCellEle.getTableNumberColumnsSpannedAttribute() - columnsRepeatedNumber;
+				i = i + columnsRepeatedNumber;
+			} else {
+				TableCoveredTableCellElement aCellEle = (TableCoveredTableCellElement) refCell.getOdfElement();
+				if (coveredLength >= 1) {
+					TableCoveredTableCellElement newCellEle = (TableCoveredTableCellElement) aCellEle.cloneNode(true);
+					aRow.appendChild(newCellEle);
+					coveredLength -= newCellEle.getTableNumberColumnsRepeatedAttribute();
+				} else {
+					TableTableCellElement coveredCell = (TableTableCellElement) refCell.getCoverCell().getOdfElement();
+					TableTableCellElement newCellEle = (TableTableCellElement) coveredCell.cloneNode(true);
+					cleanCell(newCellEle);
+					newCellEle.removeAttributeNS(OdfDocumentNamespace.TABLE.getUri(), "number-rows-spanned");
+					aRow.appendChild(newCellEle);
+					coveredLength = coveredCell.getTableNumberColumnsSpannedAttribute() - columnsRepeatedNumber;
+				}
+				i = i + columnsRepeatedNumber;
+			}
+		}
+		if (positionRow == null) {
+			mTableElement.appendChild(aRow);
+		} else {
+			mTableElement.insertBefore(aRow, positionRow.getOdfElement());
+		}
+
+		return getRowInstance(aRow, 0);
+	}
+
+	void cleanCell(TableTableCellElementBase newCellEle) {
+		String officeNameSpaceURI = OdfDocumentNamespace.OFFICE.getUri();
+		String tableNameSpaceURI = OdfDocumentNamespace.TABLE.getUri();
+		newCellEle.removeAttributeNS(officeNameSpaceURI, "value");
+		newCellEle.removeAttributeNS(officeNameSpaceURI, "date-value");
+		newCellEle.removeAttributeNS(officeNameSpaceURI, "time-value");
+		newCellEle.removeAttributeNS(officeNameSpaceURI, "boolean-value");
+		newCellEle.removeAttributeNS(officeNameSpaceURI, "string-value");
+		newCellEle.removeAttributeNS(tableNameSpaceURI, "formula");
+		newCellEle.removeAttributeNS(officeNameSpaceURI, "value-type");
+		if (!isCellStyleInheritance()) {
+			newCellEle.removeAttributeNS(tableNameSpaceURI, "style-name");
+		}
+		Node n = newCellEle.getFirstChild();
+		while (n != null) {
+			Node m = n.getNextSibling();
+			if (n instanceof TextPElement || n instanceof TextHElement || n instanceof TextListElement
+					|| n instanceof OfficeAnnotationElement) {
+				newCellEle.removeChild(n);
+			}
+			n = m;
+		}
+	}
+
+	/**
+	 * Return an instance of <code>TableTableElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>TableTableElement</code>
+	 */
+	public TableTableElement getOdfElement() {
+		return mTableElement;
+	}
+
+	/**
+	 * Insert a specific number of columns before the column whose index is
+	 * <code>index</code>.
+	 * 
+	 * @param index
+	 *            is the index of the column to insert before.
+	 * @param columnCount
+	 *            is the number of columns to insert.
+	 * @return a list of new inserted columns
+	 */
+	public List<Column> insertColumnsBefore(int index, int columnCount) {
+		Column refColumn, positionCol;
+		String tableNameSpace = OdfDocumentNamespace.TABLE.getUri();
+		ArrayList<Column> list = new ArrayList<Column>();
+		int columncount = getColumnCount();
+
+		if (index >= columncount) {
+			throw new IndexOutOfBoundsException();
+		}
+
+		if (index == 0) {
+			int iRowCount = getRowCount();
+			for (int i = 0; i < iRowCount; i++) {
+				Row row = getRowByIndex(i);
+				row.insertCellByIndex(index, columnCount);
+			}
+			refColumn = getColumnByIndex(index);
+			positionCol = refColumn;
+			// add a single column element to describe columns.
+			if (isUseRepeat()) {
+				TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(
+						true);
+				if (columnCount > 1) {
+					newColumnEle.setTableNumberColumnsRepeatedAttribute(columnCount);
+				} else {
+					newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+				}
+				mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+				for (int i = 0; i < columnCount; i++) {
+					list.add(getColumnInstance(newColumnEle, i));
+				}
+			} else {
+				for (int i = 0; i < columnCount; i++) {
+					TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
+							.cloneNode(true);
+					mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+					newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+					list.add(getColumnInstance(newColumnEle, 0));
+				}
+			}
+			return list;
+		}
+
+		// 1. insert the cell
+		int iRowCount = getRowCount();
+		for (int i = iRowCount - 1; i >= 0;) {
+			Row row = getRowByIndex(i);
+			Cell refCell = row.getCellByIndex(index - 1);
+			Cell positionCell = null;
+			positionCell = row.getCellByIndex(index);
+			row.insertCellBefore(refCell, positionCell, columnCount);
+			i = i - row.getRowsRepeatedNumber();
+		}
+
+		refColumn = getColumnByIndex(index - 1);
+		positionCol = getColumnByIndex(index);
+		// 2. insert a <table:table-column>
+		if (refColumn.getOdfElement() == positionCol.getOdfElement()) {
+			TableTableColumnElement column = refColumn.getOdfElement();
+			int repeatedCount = column.getTableNumberColumnsRepeatedAttribute();
+			TableTableColumnElement columnEle = positionCol.getOdfElement();
+			// add a single column element to describe columns.
+			if (isUseRepeat()) {
+				column.setTableNumberColumnsRepeatedAttribute(repeatedCount + columnCount);
+				Column startCol = getColumnInstance(positionCol.getOdfElement(), 0);
+				for (int i = repeatedCount + columnCount - 1; i >= columnCount + (index - startCol.getColumnIndex()); i--) {
+					updateColumnRepository(columnEle, i - columnCount, columnEle, i);
+				}
+				for (int i = 0; i < columnCount; i++) {
+					list.add(getColumnInstance(column, refColumn.mnRepeatedIndex + 1 + i));
+				}
+			} else {
+				TableTableColumnElement newBeforeColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
+						.cloneNode(true);
+				if (index > 1) {
+					newBeforeColumnEle.setTableNumberColumnsRepeatedAttribute(index);
+				} else {
+					newBeforeColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+				}
+				mTableElement.insertBefore(newBeforeColumnEle, positionCol.getOdfElement());
+				for (int i = 0; i < index; i++) {
+					updateColumnRepository(columnEle, i, newBeforeColumnEle, i);
+				}
+				int newAfterCount = repeatedCount - index;
+				if (newAfterCount > 1) {
+					positionCol.setColumnsRepeatedNumber(newAfterCount);
+				} else {
+					positionCol.getOdfElement().removeAttributeNS(tableNameSpace, "number-columns-repeated");
+				}
+				for (int i = repeatedCount - 1; i >= index; i--) {
+					updateColumnRepository(columnEle, i, columnEle, i - index);
+				}
+				for (int i = 0; i < columnCount; i++) {
+					TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
+							.cloneNode(true);
+					newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+					mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+					list.add(getColumnInstance(newColumnEle, 0));
+				}
+			}
+		} else {
+			// add a single column element to describe columns.
+			if (isUseRepeat()) {
+				TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement().cloneNode(
+						true);
+				if (columnCount > 1) {
+					newColumnEle.setTableNumberColumnsRepeatedAttribute(columnCount);
+				} else {
+					newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+				}
+				mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+				for (int i = 0; i < columnCount; i++) {
+					list.add(getColumnInstance(newColumnEle, i));
+				}
+			} else {
+				for (int i = 0; i < columnCount; i++) {
+					TableTableColumnElement newColumnEle = (TableTableColumnElement) refColumn.getOdfElement()
+							.cloneNode(true);
+					newColumnEle.removeAttributeNS(tableNameSpace, "number-columns-repeated");
+					mTableElement.insertBefore(newColumnEle, positionCol.getOdfElement());
+					list.add(getColumnInstance(newColumnEle, 0));
+				}
+			}
+		}
+		return list;
+	}
+
+	/**
+	 * Remove a specific number of columns, starting from the column at
+	 * <code>index</code>.
+	 * 
+	 * @param startIndex
+	 *            is the index of the first column to delete.
+	 * @param deleteColCount
+	 *            is the number of columns to delete.
+	 */
+	public void removeColumnsByIndex(int startIndex, int deleteColCount) {
+		// 0. verify the index
+		if (deleteColCount <= 0) {
+			return;
+		}
+		if (startIndex < 0) {
+			throw new IllegalArgumentException("startIndex of the deleted columns should not be negative");
+		}
+		int colCount = getColumnCount();
+		if (startIndex >= colCount) {
+			throw new IndexOutOfBoundsException("Start column index is out of bound");
+		}
+		if (startIndex + deleteColCount >= colCount) {
+			deleteColCount = colCount - startIndex;
+		}
+
+		// 1. remove cell
+		for (int i = 0; i < getRowCount(); i++) {
+			Row aRow = getRowByIndex(i);
+			aRow.removeCellByIndex(startIndex, deleteColCount);
+		}
+
+		// 2. remove column
+		Column firstColumn;
+		for (int i = 0; i < deleteColCount; i++) {
+			firstColumn = getColumnByIndex(startIndex);
+			int repeatedAttr = firstColumn.getColumnsRepeatedNumber();
+			if (repeatedAttr == 1) {
+				TableTableColumnElement columnEle = OdfElement.findNextChildNode(TableTableColumnElement.class,
+						firstColumn.getOdfElement());
+				mTableElement.removeChild(firstColumn.getOdfElement());
+				if (i < (deleteColCount - 1)) {
+					firstColumn = this.getColumnInstance(columnEle, 0);
+				}
+			} else {
+				if (repeatedAttr > firstColumn.mnRepeatedIndex) {
+					firstColumn.setColumnsRepeatedNumber(repeatedAttr - 1);
+					Column startCol = this.getColumnInstance(firstColumn.getOdfElement(), 0);
+					updateColumnRepository(firstColumn.getOdfElement(), startIndex - startCol.getColumnIndex(), null, 0);
+				}
+			}
+		}
+
+	}
+	
+	/**
+	 * Calculates the width between the left and right margins of the table
+	 * container.
+	 * 
+	 * @param container
+	 *            TableContainer
+	 * @param marginLeft
+	 *            space between left margin and the table
+	 * @param marginRight
+	 *            space between right margin and the table
+	 * @return width that can be attributed at the table (in)
+	 */
+	private static double getTableWidth(TableContainer container, double marginLeft, double marginRight) {
+		String pageWidthStr = null;
+		double pageWidth = 0;
+		double tableWidth = DEFAULT_TABLE_WIDTH;
+		OdfOfficeAutomaticStyles automaticStyles = null;
+		try {
+			automaticStyles = getOwnerDocument(container).getStylesDom().getAutomaticStyles();
+		} catch (Exception e) {
+			Logger.getLogger(Table.class.getName()).log(Level.SEVERE,	e.getMessage(), e);
+		}
+		OdfStylePageLayout pageLayout = automaticStyles.getPageLayout("pm1");
+		if (pageLayout == null) {
+			pageLayout = automaticStyles.getPageLayout("Mpm1");
+		}
+		if (pageLayout != null) {
+			pageWidthStr = pageLayout.getProperty(StylePageLayoutPropertiesElement.PageWidth);
+			if (pageWidthStr != null) {
+				pageWidth = Length.parseDouble(pageWidthStr, Unit.CENTIMETER);
+			}
+			// margins
+			double dLeftPageMargin = 0;
+			double dRightPageMargin = 0;
+			String leftPageMargin = pageLayout.getProperty(StylePageLayoutPropertiesElement.MarginLeft);
+			String rightPageMargin = pageLayout.getProperty(StylePageLayoutPropertiesElement.MarginRight);
+			if (leftPageMargin != null && rightPageMargin != null) {
+				dLeftPageMargin = Length.parseDouble(leftPageMargin, Unit.CENTIMETER);
+				dRightPageMargin = Length.parseDouble(rightPageMargin, Unit.CENTIMETER);
+			}
+			tableWidth = (pageWidth - (dLeftPageMargin + dRightPageMargin + marginLeft + marginRight)) / 2.5399;
+			if (tableWidth <= 0) {
+				tableWidth = DEFAULT_TABLE_WIDTH;
+			}
+		}
+		return Double.valueOf(new DecimalFormat("#0.###").format(tableWidth).replace(",", ".")).doubleValue();
+	}
+
+	private void reviseStyleFromTopRowToMediumRow(Row oldTopRow) {
+		if (mIsSpreadsheet)
+			return;
+		int length = getColumnCount();
+
+		for (int i = 0; i < length;) {
+			Cell cell = oldTopRow.getCellByIndex(i);
+			if (cell.isCoveredElement()) {
+				i = i + cell.getColumnsRepeatedNumber();
+				continue;
+			}
+			OdfStyle styleEle = cell.getStyleHandler().getStyleElementForWrite();
+			if (i < length - 1) {
+				setLeftBottomBorderStylesProperties(styleEle);
+			} else {
+				setRightBottomBorderStylesProperties(styleEle);
+			}
+			i = i + cell.getColumnsRepeatedNumber();
+		}
+	}
+
+	private void reviseStyleFromMediumRowToTopRow(Row newTopRow) {
+		if (mIsSpreadsheet) {
+			return;
+		}
+		int length = getColumnCount();
+
+		for (int i = 0; i < length;) {
+			Cell cell = newTopRow.getCellByIndex(i);
+			if (cell.isCoveredElement()) {
+				i = i + cell.getColumnsRepeatedNumber();
+				continue;
+			}
+			OdfStyle styleEle = cell.getStyleHandler().getStyleElementForWrite();
+			if (i < length - 1) {
+				setLeftTopBorderStyleProperties(styleEle);
+			} else {
+				setRightTopBorderStyleProperties(styleEle);
+			}
+			i = i + cell.getColumnsRepeatedNumber();
+		}
+	}
+
+	/**
+	 * Insert a specific number of rows before the row at <code>index</code>.
+	 * 
+	 * @param index
+	 *            is the index of the row to insert before.
+	 * @param rowCount
+	 *            is the number of rows to insert.
+	 * @return a list of new inserted rows
+	 */
+	public List<Row> insertRowsBefore(int index, int rowCount) {
+		if (index >= getRowCount()) {
+			throw new IndexOutOfBoundsException();
+		}
+		ArrayList<Row> list = new ArrayList<Row>();
+		if (index == 0) {
+			Row refRow = getRowByIndex(index);
+			Row positionRow = refRow;
+			// add first row
+			Row newFirstRow = insertRowBefore(refRow, positionRow, getColumnCount());
+			reviseStyleFromTopRowToMediumRow(refRow);
+			list.add(newFirstRow);
+			List<Row> rowList = insertMultipleRowsBefore(refRow, refRow, rowCount - 1);
+			for (int i = 0; i < rowList.size(); i++) {
+				list.add(rowList.get(i));
+			}
+			return list;
+		}
+
+		Row refRow = getRowByIndex(index - 1);
+		Row positionRow = getRowByIndex(index);
+		// 1. insert a <table:table-row>
+		if (refRow.getOdfElement() == positionRow.getOdfElement()) {
+			TableTableRowElement row = refRow.getOdfElement();
+			int repeatedCount = refRow.getRowsRepeatedNumber();
+			refRow.setRowsRepeatedNumber(repeatedCount + rowCount);
+			TableTableRowElement rowEle = positionRow.getOdfElement();
+			Row startRow = getRowInstance(positionRow.getOdfElement(), 0);
+			for (int i = repeatedCount + rowCount - 1; i >= rowCount + (index - startRow.getRowIndex()); i--) {
+				updateRowRepository(rowEle, i - rowCount, rowEle, i);
+			}
+			for (int i = 0; i < rowCount; i++) {
+				list.add(getRowInstance(row, refRow.mnRepeatedIndex + 1 + i));
+			}
+		} else {
+			List<Row> newRowList = insertMultipleRowsBefore(refRow, positionRow, rowCount);
+			if (index - 1 == 0) {
+				// correct styles
+				reviseStyleFromTopRowToMediumRow(newRowList.get(0));
+			}
+			for (int i = 0; i < newRowList.size(); i++) {
+				list.add(newRowList.get(i));
+			}
+		}
+
+		return list;
+	}
+
+	/**
+	 * Return a list of columns in the current table.
+	 * 
+	 * @return a list of table columns
+	 */
+	public List<Column> getColumnList() {
+		ArrayList<Column> list = new ArrayList<Column>();
+		TableTableColumnElement colEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableColumnElement) {
+						colEle = (TableTableColumnElement) m;
+						int columnsRepeatedNumber = colEle.getTableNumberColumnsRepeatedAttribute();
+						for (int i = 0; i < columnsRepeatedNumber; i++) {
+							list.add(getColumnInstance(colEle, i));
+						}
+					}
+				}
+			}
+			if (n instanceof TableTableColumnElement) {
+				colEle = (TableTableColumnElement) n;
+				int columnsRepeatedNumber = colEle.getTableNumberColumnsRepeatedAttribute();
+				for (int i = 0; i < columnsRepeatedNumber; i++) {
+					list.add(getColumnInstance(colEle, i));
+				}
+			}
+		}
+		return list;
+	}
+	
+	/**
+	 * Return an Iterator of the column in this table.
+	 * 
+	 * @return an Iterator of the column in this table.
+	 * @see java.util.Iterator
+	 * 
+	 * @since 0.5.5
+	 */
+	public Iterator<Column> getColumnIterator(){
+		return new SimpleColumnIterator(this);
+	}
+	
+	/**
+	 * Return a list of table rows in the current table.
+	 * 
+	 * @return a list of table rows
+	 */
+	public List<Row> getRowList() {
+		ArrayList<Row> list = new ArrayList<Row>();
+		TableTableRowElement rowEle = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) n;
+				for (Node m : new DomNodeList(headers.getChildNodes())) {
+					if (m instanceof TableTableRowElement) {
+						rowEle = (TableTableRowElement) m;
+						for (int i = 0; i < rowEle.getTableNumberRowsRepeatedAttribute(); i++) {
+							list.add(getRowInstance(rowEle, i));
+						}
+					}
+				}
+			}
+			if (n instanceof TableTableRowElement) {
+				rowEle = (TableTableRowElement) n;
+				for (int i = 0; i < rowEle.getTableNumberRowsRepeatedAttribute(); i++) {
+					list.add(getRowInstance(rowEle, i));
+				}
+			}
+		}
+		return list;
+	}
+	
+	/**
+	 * Return an Iterator of the row in this table.
+	 * 
+	 * @return an Iterator of the row in this table.
+	 * @see java.util.Iterator
+	 * 
+	 * @since 0.5.5
+	 */
+	public Iterator<Row> getRowIterator(){
+		return new SimpleRowIterator(this);
+	}
+	
+	/**
+	 * Get the column at the specified index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the zero-based index of the column.
+	 * @return the column at the specified index
+	 */
+	public Column getColumnByIndex(int index) {
+		if (index < 0) {
+			throw new IllegalArgumentException("index should be nonnegative integer.");
+		}
+		// expand column as needed.
+		int lastIndex = getColumnCount() - 1;
+		if (index > lastIndex) {
+			appendColumns(index - lastIndex);
+		}
+		int result = 0;
+		Column col = null;
+		// TableTableColumnElement colEle=null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderColumnsElement) {
+				col = getHeaderColumnByIndex((TableTableHeaderColumnsElement) n, index);
+				if (col != null) {
+					return col;
+				}
+				result += getHeaderColumnCount((TableTableHeaderColumnsElement) n);
+			}
+			if (n instanceof TableTableColumnElement) {
+				col = getColumnInstance((TableTableColumnElement) n, 0);
+				result += col.getColumnsRepeatedNumber();
+			}
+			if ((result > index) && (col != null)) {
+				return getColumnInstance(col.getOdfElement(), index - (result - col.getColumnsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	private Row getHeaderRowByIndex(TableTableHeaderRowsElement headers, int nIndex) {
+		int result = 0;
+		Row row = null;
+		for (Node n : new DomNodeList(headers.getChildNodes())) {
+			if (n instanceof TableTableRowElement) {
+				row = getRowInstance((TableTableRowElement) n, 0);
+				result += row.getRowsRepeatedNumber();
+			}
+			if ((result > nIndex) && (row != null)) {
+				return getRowInstance(row.getOdfElement(), nIndex - (result - row.getRowsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	private Column getHeaderColumnByIndex(TableTableHeaderColumnsElement headers, int nIndex) {
+		int result = 0;
+		Column col = null;
+		for (Node n : new DomNodeList(headers.getChildNodes())) {
+			if (n instanceof TableTableColumnElement) {
+				col = getColumnInstance((TableTableColumnElement) n, 0);
+				result += col.getColumnsRepeatedNumber();
+			}
+			if (result > nIndex) {
+				return getColumnInstance(col.getOdfElement(), nIndex - (result - col.getColumnsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Get the row at the specified index. The table will be automatically
+	 * expanded, when the given index is outside of the original table.
+	 * 
+	 * @param index
+	 *            the zero-based index of the row.
+	 * @return the row at the specified index
+	 */
+	public Row getRowByIndex(int index) {
+		if (index < 0) {
+			throw new IllegalArgumentException("index should be nonnegative integer.");
+		}
+		// expand row as needed.
+		int lastIndex = getRowCount() - 1;
+		if (index > lastIndex) {
+			appendRows(index - lastIndex);
+		}
+		int result = 0;
+		Row row = null;
+		for (Node n : new DomNodeList(mTableElement.getChildNodes())) {
+			if (n instanceof TableTableHeaderRowsElement) {
+				row = getHeaderRowByIndex((TableTableHeaderRowsElement) n, index);
+				if (row != null) {
+					return row;
+				}
+				result += getHeaderRowCount((TableTableHeaderRowsElement) n);
+			}
+			if (n instanceof TableTableRowElement) {
+				row = getRowInstance((TableTableRowElement) n, 0);
+				result += row.getRowsRepeatedNumber();
+			}
+			if (n instanceof TableTableRowsElement) {
+				for (Node nn : new DomNodeList(n.getChildNodes())) {
+					if (nn instanceof TableTableRowElement) {
+						row = getRowInstance((TableTableRowElement) nn, 0);
+						result += row.getRowsRepeatedNumber();
+						if (result > index) {
+							return getRowInstance(row.getOdfElement(), index - (result - row.getRowsRepeatedNumber()));
+						}
+					}
+				}
+			}
+			if (result > index) {
+				return getRowInstance(row.getOdfElement(), index - (result - row.getRowsRepeatedNumber()));
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Remove the specific number of rows, starting from the row at
+	 * <code>index</code>.
+	 * 
+	 * @param startIndex
+	 *            is the zero-based index of the first row to delete.
+	 * @param deleteRowCount
+	 *            is the number of rows to delete.
+	 */
+	public void removeRowsByIndex(int startIndex, int deleteRowCount) {
+		boolean deleted = false;
+		// 0. verify the index
+		if (deleteRowCount <= 0) {
+			return;
+		}
+		if (startIndex < 0) {
+			throw new IllegalArgumentException("startIndex of the deleted rows should not be negative");
+		}
+		int rowCount = getRowCount();
+		if (startIndex >= rowCount) {
+			throw new IndexOutOfBoundsException("Start index out of bound");
+		}
+		if (startIndex + deleteRowCount >= rowCount) {
+			deleteRowCount = rowCount - startIndex;
+		}
+
+		// 1. remove row
+		Row firstRow = getRowByIndex(startIndex);
+		for (int i = startIndex; i < startIndex + deleteRowCount; i++) {
+			int repeatedAttr = firstRow.getRowsRepeatedNumber();
+			if (repeatedAttr == 1) {
+				TableTableRowElement rowEle = OdfElement.findNextChildNode(TableTableRowElement.class, firstRow
+						.getOdfElement());
+				firstRow.removeAllCellsRelationship();
+				firstRow.getOdfElement().getParentNode().removeChild(firstRow.getOdfElement());
+				updateRowRepository(firstRow.getOdfElement(), firstRow.mnRepeatedIndex, null, 0);
+				if (i < (startIndex + deleteRowCount - 1)) {
+					firstRow = this.getRowInstance(rowEle, 0);
+				}
+				deleted = true;
+			} else {
+				if (repeatedAttr > firstRow.mnRepeatedIndex) {
+					firstRow.setRowsRepeatedNumber(repeatedAttr - 1);
+					Row startRow = this.getRowInstance(firstRow.getOdfElement(), 0);
+					updateRowRepository(firstRow.getOdfElement(), i - startRow.getRowIndex(), null, 0);
+				}
+			}
+		}
+		// 2. if mediumRow becomes as top row, revise style
+		if (deleted && startIndex == 0 && getRowCount() > 0) {
+			Row aRow = getRowByIndex(0);
+			reviseStyleFromMediumRowToTopRow(aRow);
+		}
+	}
+
+	/**
+	 * Remove this table from the document
+	 */
+	public void remove() {
+		mTableElement.getParentNode().removeChild(mTableElement);
+
+	}
+
+	private int getHeaderRowCount(TableTableHeaderRowsElement headers) {
+		int result = 0;
+		if (headers != null) {
+			for (Node n : new DomNodeList(headers.getChildNodes())) {
+				if (n instanceof TableTableRowElement) {
+					result += ((TableTableRowElement) n).getTableNumberRowsRepeatedAttribute();
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Return the number of header rows in this table.
+	 * 
+	 * @return the number of header rows.
+	 */
+	public int getHeaderRowCount() {
+
+		TableTableHeaderRowsElement headers = OdfElement.findFirstChildNode(TableTableHeaderRowsElement.class,
+				mTableElement);
+		return getHeaderRowCount(headers);
+	}
+
+	private int getHeaderColumnCount(TableTableHeaderColumnsElement headers) {
+		int result = 0;
+		if (headers != null) {
+			for (Node n : new DomNodeList(headers.getChildNodes())) {
+				result += ((TableTableColumnElement) n).getTableNumberColumnsRepeatedAttribute();
+			}
+		}
+		return result;
+	}
+
+	private int getColumnsCount(TableTableColumnsElement columns) {
+		int result = 0;
+		if (columns != null) {
+			for (Node n : new DomNodeList(columns.getChildNodes())) {
+				result += ((TableTableColumnElement) n).getTableNumberColumnsRepeatedAttribute();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Return the number of header columns in the table.
+	 * 
+	 * @return the number of header columns.
+	 */
+	public int getHeaderColumnCount() {
+		TableTableHeaderColumnsElement headers = OdfElement.findFirstChildNode(TableTableHeaderColumnsElement.class,
+				mTableElement);
+		return getHeaderColumnCount(headers);
+	}
+
+	/**
+	 * Return the table name.
+	 * 
+	 * @return the table name
+	 */
+	public String getTableName() {
+		return mTableElement.getTableNameAttribute();
+	}
+
+	/**
+	 * Set the table name.
+	 * 
+	 * @param tableName
+	 *            the table name
+	 * @throws IllegalArgumentException
+	 *             if the tableName is duplicate with one of tables in the
+	 *             current document
+	 */
+	public void setTableName(String tableName) {
+		// check if the table name is already exist
+		List<Table> tableList = mDocument.getTableList();
+		for (int i = 0; i < tableList.size(); i++) {
+			Table table = tableList.get(i);
+			if (tableName.equals(table.getTableName())) {
+				if (table != this) {
+					throw new IllegalArgumentException(
+							"The table name is duplicate with one of tables in the current document.");
+				}
+			}
+		}
+		mTableElement.setTableNameAttribute(tableName);
+	}
+
+	/**
+	 * Return true if the table is protected.
+	 * 
+	 * @return true if the table is protected
+	 */
+	public boolean isProtected() {
+		if (mTableElement.getTableProtectedAttribute() != null) {
+			return mTableElement.getTableProtectedAttribute().booleanValue();
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Set if the table is protected.
+	 * 
+	 * @param isProtected
+	 *            the protected attribute of the table to be set
+	 */
+	public void setProtected(boolean isProtected) {
+		mTableElement.setTableProtectedAttribute(isProtected);
+	}
+
+	/**
+	 * Return true if cell style is inherited when a new cell is added to the
+	 * table.
+	 * <p>
+	 * The default setting is inherited. In this condition, the style of new
+	 * column is same with the previous column before the inserted position,
+	 * while the style of new row is same with the last row before the inserted
+	 * position.
+	 * <p>
+	 * This feature setting will influence <code>appendRow()</code>,
+	 * <code>appendColumn()</code>, <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code> and
+	 * <code>insertColumnsBefore()</code>.
+	 * <p>
+	 * For <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>, if need
+	 * automatically expand cells, it will return empty cell(s) without any
+	 * style settings. So inheritance setting have no effect on them.
+	 * 
+	 * @return true if cell style is inherited when a new cell is added to the
+	 *         table.
+	 * 
+	 * @see #setCellStyleInheritance(boolean)
+	 * @see #appendColumn()
+	 * @see #appendColumns(int)
+	 * @see #appendRow()
+	 * @see #appendRows(int)
+	 * @see #insertColumnsBefore(int, int)
+	 * @see #insertRowsBefore(int, int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 * @see #getCellRangeByPosition(int, int, int, int)
+	 * @see #getCellRangeByPosition(String, String)
+	 * @see #getCellRangeByName(String)
+	 * @see #getColumnByIndex(int)
+	 * @see #getRowByIndex(int)
+	 * 
+	 * @since 0.4.5
+	 */
+	public boolean isCellStyleInheritance() {
+		return mIsCellStyleInheritance;
+	}
+
+	/**
+	 * This method allows users to set whether cell style is inherited or not
+	 * when a new cell is added to the table. Of course, the default setting is
+	 * inherited. In this condition, the style of new column is same with the
+	 * previous column before the inserted position, while the style of new row
+	 * is same with the last row before the inserted position.
+	 * <p>
+	 * This feature setting will influence <code>appendRow()</code>,
+	 * <code>appendColumn()</code>, <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code> and
+	 * <code>insertColumnsBefore()</code>.
+	 * <p>
+	 * For <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>, if need
+	 * automatically expand cells, it will return empty cell(s) without any
+	 * style settings. So inheritance setting have no effect on them.
+	 * 
+	 * @param isEnabled
+	 *            if<code>isEnabled</code> is true, cell style will be inherited
+	 *            by new cell.
+	 * 
+	 * @see #isCellStyleInheritance()
+	 * @see #appendColumn()
+	 * @see #appendColumns(int)
+	 * @see #appendRow()
+	 * @see #appendRows(int)
+	 * @see #insertColumnsBefore(int, int)
+	 * @see #insertRowsBefore(int, int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 * @see #getCellRangeByPosition(int, int, int, int)
+	 * @see #getCellRangeByPosition(String, String)
+	 * @see #getCellRangeByName(String)
+	 * @see #getColumnByIndex(int)
+	 * @see #getRowByIndex(int)
+	 * 
+	 * @since 0.4.5
+	 */
+	public void setCellStyleInheritance(boolean isEnabled) {
+		mIsCellStyleInheritance = isEnabled;
+	}
+
+	/**
+	 * Return true if the new created multiple columns/rows/cells are described
+	 * by a single element when it's possible.
+	 * <p>
+	 * The default setting is <code>true</code>, which helps to decrease the
+	 * document size. If setting is <code>false</code>, each column/row/cell
+	 * will be described by its owned single element.
+	 * <p>
+	 * This feature setting will influence <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code>,
+	 * <code>insertColumnsBefore()</code>, <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>.
+	 * 
+	 * @return true if the new created columns/rows/cells are described by a
+	 *         single element when it's possible.
+	 * 
+	 * @see #setUseRepeat(boolean)
+	 * @see #appendColumns(int)
+	 * @see #appendRows(int)
+	 * @see #insertColumnsBefore(int, int)
+	 * @see #insertRowsBefore(int, int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 * @see #getCellRangeByPosition(int, int, int, int)
+	 * @see #getCellRangeByPosition(String, String)
+	 * @see #getCellRangeByName(String)
+	 * @see #getColumnByIndex(int)
+	 * @see #getRowByIndex(int)
+	 * 
+	 * @since 0.4.5
+	 */
+	public boolean isUseRepeat() {
+		return mIsDescribedBySingleElement;
+	}
+
+	/**
+	 * When two or more columns/rows/cells are added to a table, if they are
+	 * adjoining, and have the same content and style, and do not contain
+	 * horizontally/vertically merged cells, they may be described by a single
+	 * element. The repeated number attribute, for row is
+	 * table:number-rows-repeated, while for column and cell are
+	 * table:number-columns-repeated, specifies the number of columns/rows/cells
+	 * to which a column/row/cell element applies.
+	 * <p>
+	 * This method allows users to set whether the new created
+	 * columns/rows/cells are described by a single element. Of course, the
+	 * default setting is <code>true</code>, which helps to decrease the
+	 * document size. If setting is <code>false</code>, each column/row/cell
+	 * will be described by its owned single element.
+	 * <p>
+	 * This feature setting will influence <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code>,
+	 * <code>insertColumnsBefore()</code>, <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>.
+	 * 
+	 * @param isSingle
+	 *            if<code>isSingle</code> is true, the new created
+	 *            columns/rows/cells are described by a single element, if
+	 *            possible.
+	 * 
+	 * @see #isUseRepeat()
+	 * @see #appendColumns(int)
+	 * @see #appendRows(int)
+	 * @see #insertColumnsBefore(int, int)
+	 * @see #insertRowsBefore(int, int)
+	 * @see #getCellByPosition(int, int)
+	 * @see #getCellByPosition(String)
+	 * @see #getCellRangeByPosition(int, int, int, int)
+	 * @see #getCellRangeByPosition(String, String)
+	 * @see #getCellRangeByName(String)
+	 * @see #getColumnByIndex(int)
+	 * @see #getRowByIndex(int)
+	 * 
+	 * @since 0.4.5
+	 */
+	public void setUseRepeat(boolean isSingle) {
+		mIsDescribedBySingleElement = isSingle;
+	}
+
+	// //////////////////////////////////////////////////////////////////////////////////////////
+	/**
+	 * Return a range of cells within the specified range. The table will be
+	 * automatically expanded as need.
+	 * 
+	 * @param startCol
+	 *            the column index of the first cell inside the range.
+	 * @param startRow
+	 *            the row index of the first cell inside the range.
+	 * @param endCol
+	 *            the column index of the last cell inside the range.
+	 * @param endRow
+	 *            the row index of the last cell inside the range.
+	 * @return the specified cell range.
+	 */
+	public CellRange getCellRangeByPosition(int startCol, int startRow, int endCol, int endRow) {
+		// test whether cell position is out of table range and expand table
+		// automatically.
+		getCellByPosition(startCol, startRow);
+		getCellByPosition(endCol, endRow);
+		return new CellRange(this, startCol, startRow, endCol, endRow);
+	}
+
+	/**
+	 * Return a range of cells within the specified range. The range is
+	 * specified by the cell address of the first cell and the cell address of
+	 * the last cell. The table will be automatically expanded as need.
+	 * <p>
+	 * The cell address is constructed with a table name, a dot (.), an
+	 * alphabetic value representing the column, and a numeric value
+	 * representing the row. The table name can be omitted. For example:
+	 * "$Sheet1.A1", "Sheet1.A1" and "A1" are all valid cell address.
+	 * 
+	 * @param startAddress
+	 *            the cell address of the first cell inside the range.
+	 * @param endAddress
+	 *            the cell address of the last cell inside the range.
+	 * @return the specified cell range.
+	 */
+	public CellRange getCellRangeByPosition(String startAddress, String endAddress) {
+		return getCellRangeByPosition(getColIndexFromCellAddress(startAddress),
+				getRowIndexFromCellAddress(startAddress), getColIndexFromCellAddress(endAddress),
+				getRowIndexFromCellAddress(endAddress));
+	}
+
+	/**
+	 * Return a range of cells by a specified name.
+	 * <p>
+	 * After you get a cell range with <code>getCellRangeByPosition</code>, you
+	 * can assign a name to this cell range with the method
+	 * <code>setCellRangeName<code> in class <code>CellRange</code>. Then you
+	 * will get a <b>named range</b> which can be represented by name. This
+	 * method can be used to get a named range.
+	 * 
+	 * @param name
+	 *            the name of the specified named range
+	 * @return the specified cell range.
+	 */
+	public CellRange getCellRangeByName(String name) {
+		NodeList nameRanges;
+		try {
+			nameRanges = mTableElement.getOwnerDocument().getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(),
+					"named-range");
+			for (int i = 0; i < nameRanges.getLength(); i++) {
+				TableNamedRangeElement nameRange = (TableNamedRangeElement) nameRanges.item(i);
+				if (nameRange.getTableNameAttribute().equals(name)) {
+					String cellRange = nameRange.getTableCellRangeAddressAttribute();
+					String[] addresses = cellRange.split(":");
+					return getCellRangeByPosition(addresses[0], addresses[1]);
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(Table.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		return null;
+	}
+
+	/**
+	 * Return a single cell that is positioned at the specified column and row.
+	 * The table will be automatically expanded as need.
+	 * 
+	 * @param colIndex
+	 *            the column index of the cell.
+	 * @param rowIndex
+	 *            the row index of the cell.
+	 * @return the cell at the specified position
+	 */
+	public Cell getCellByPosition(int colIndex, int rowIndex) {
+		if (colIndex < 0 || rowIndex < 0) {
+			throw new IllegalArgumentException("colIndex and rowIndex should be nonnegative integer.");
+		}
+		// expand row as needed.
+		int lastRowIndex = getRowCount() - 1;
+		if (rowIndex > lastRowIndex) {
+			// need clean cell style.
+			appendRows((rowIndex - lastRowIndex), true);
+		}
+		// expand column as needed.
+		int lastColumnIndex = getColumnCount() - 1;
+		if (colIndex > lastColumnIndex) {
+			// need clean cell style.
+			appendColumns((colIndex - lastColumnIndex), true);
+		}
+		Row row = getRowByIndex(rowIndex);
+		return row.getCellByIndex(colIndex);
+	}
+
+	// return array of string contain 3 member
+	// 1. sheet table name
+	// 2. alphabetic represent the column
+	// 3. string represent the row number
+	String[] splitCellAddress(String cellAddress) {
+		String[] returnArray = new String[3];
+		// seperate column and row from cell range
+		StringTokenizer stDot = new StringTokenizer(cellAddress, ".");
+		// get sheet table name and the cell address
+		String cell = "";
+		if (stDot.countTokens() >= 2) {
+			StringTokenizer stDollar = new StringTokenizer(stDot.nextToken(), "$");
+			returnArray[0] = stDollar.nextToken();
+			cell = stDot.nextToken();
+		} else {
+			returnArray[0] = getTableName();
+			cell = stDot.nextToken();
+		}
+
+		// get the column/row number from the cell address
+		StringTokenizer stDollar = new StringTokenizer(cell, "$");
+		if (stDollar.countTokens() >= 2) {
+			returnArray[1] = stDollar.nextToken();
+			returnArray[2] = stDollar.nextToken();
+		} else {
+			cell = stDollar.nextToken();
+			for (int i = 0; i < cell.length(); i++) {
+				if (!Character.isLetter(cell.charAt(i))) {
+					returnArray[1] = cell.substring(0, i);
+					returnArray[2] = cell.substring(i);
+					break;
+				}
+			}
+		}
+		return returnArray;
+
+	}
+
+	/**
+	 * Return a single cell that is positioned at the specified cell address.
+	 * The table can be automatically expanded as need.
+	 * <p>
+	 * The cell address is constructed with a table name, a dot (.), an
+	 * alphabetic value representing the column, and a numeric value
+	 * representing the row. The table name can be omitted. For example:
+	 * "$Sheet1.A1", "Sheet1.A1" and "A1" are all valid cell address.
+	 * 
+	 * @param address
+	 *            the cell address of the cell.
+	 * @return the cell at the specified position.
+	 */
+	public Cell getCellByPosition(String address) {
+		return getCellByPosition(getColIndexFromCellAddress(address), getRowIndexFromCellAddress(address));
+	}
+	
+	/**
+	 * Modifies the margin above and below the table.
+	 * 
+	 * @param spaceTop
+	 *            space above the table in centimeter(cm), ex. 1.25 cm
+	 * @param spaceBottom
+	 *            spacing below the table in centimeter(cm), ex. 0.7 cm
+	 *            
+	 * @since 0.5.5
+	 */
+	public void setVerticalMargin(double spaceTop, double spaceBottom) {
+		String tableStyleName = mTableElement.getStyleName();
+		OdfOfficeAutomaticStyles automaticStyles = mTableElement.getAutomaticStyles();
+		OdfStyleBase tableStyle = automaticStyles.getStyle(tableStyleName, OdfStyleFamily.Table);
+		if (tableStyle != null) {
+			tableStyle.setProperty(StyleTablePropertiesElement.MarginTop,
+					(new DecimalFormat("#0.##").format(spaceTop) + Unit.CENTIMETER.abbr()).replace(",", "."));
+			tableStyle.setProperty(StyleTablePropertiesElement.MarginBottom, (new DecimalFormat("#0.##")
+					.format(spaceBottom) + Unit.CENTIMETER.abbr()).replace(",", "."));
+		}
+	}
+
+	// TODO: can put these two method to type.CellAddress
+	int getColIndexFromCellAddress(String cellAddress) {
+		String[] returnArray = splitCellAddress(cellAddress);
+		String colNum = returnArray[1];
+		int colIndex = 0;
+		for (int i = 0; i < colNum.length(); i++) {
+			colIndex = 26 * colIndex;
+			colIndex += (colNum.charAt(i) - 'A') + 1;
+		}
+
+		return (colIndex - 1);
+	}
+
+	int getRowIndexFromCellAddress(String cellAddress) {
+		String[] returnArray = splitCellAddress(cellAddress);
+		return Integer.parseInt(returnArray[2]) - 1;
+	}
+
+	String getAbsoluteCellAddress(int colIndex, int rowIndex) {
+		int remainder = 0;
+		int multiple = colIndex;
+		String cellRange = "";
+		while (multiple != 0) {
+			multiple = colIndex / 26;
+			remainder = colIndex % 26;
+			char c;
+			if (multiple == 0) {
+				c = (char) ('A' + remainder);
+			} else {
+				c = (char) ('A' + multiple - 1);
+			}
+			cellRange = cellRange + String.valueOf(c);
+			colIndex = remainder;
+		}
+		cellRange = "$" + cellRange + "$" + (rowIndex + 1);
+		return cellRange;
+
+	}
+
+	// the parameter is the column/row index in the ownerTable,rather than in
+	// the cell range
+	// if the position is a covered cell, then get the owner cell for it
+
+	Cell getOwnerCellByPosition(List<CellCoverInfo> coverList, int nCol, int nRow) {
+		CellCoverInfo info;
+		if (!isCoveredCellInOwnerTable(coverList, nCol, nRow)) {
+			Cell cell = getCellByPosition(nCol, nRow);
+			return cell;
+		} else {
+			for (int m = 0; m < coverList.size(); m++) {
+				info = coverList.get(m);
+				if (((nCol > info.nStartCol) && (nCol <= info.nEndCol) && (nRow == info.nStartRow) && (nRow == info.nEndRow))
+						|| ((nCol == info.nStartCol) && (nCol == info.nEndCol) && (nRow > info.nStartRow) && (nRow <= info.nEndRow))
+						|| ((nCol > info.nStartCol) && (nCol <= info.nEndCol) && (nRow > info.nStartRow) && (nRow <= info.nEndRow))) {
+					Cell cell = getCellByPosition(info.nStartCol, info.nStartRow);
+					return cell;
+				}
+			}
+		}
+		return null;
+	}
+
+	// the parameter is the column/row index in the ownerTable,rather than in
+	// the cell range
+	boolean isCoveredCellInOwnerTable(List<CellCoverInfo> coverList, int nCol, int nRow) {
+		CellCoverInfo info;
+		for (int m = 0; m < coverList.size(); m++) {
+			info = coverList.get(m);
+			if (((nCol > info.nStartCol) && (nCol <= info.nEndCol) && (nRow == info.nStartRow) && (nRow == info.nEndRow))
+					|| ((nCol == info.nStartCol) && (nCol == info.nEndCol) && (nRow > info.nStartRow) && (nRow <= info.nEndRow))
+					|| ((nCol > info.nStartCol) && (nCol <= info.nEndCol) && (nRow > info.nStartRow) && (nRow <= info.nEndRow))) // covered
+			// cell
+			{
+				return true;
+			}
+		}
+		return false;
+	}
+
+	List<CellCoverInfo> getCellCoverInfos(int nStartCol, int nStartRow, int nEndCol, int nEndRow) {
+		List<CellCoverInfo> coverList = new ArrayList<CellCoverInfo>();
+		int nColSpan, nRowSpan;
+		for (int i = nStartCol; i < nEndCol + 1; i++) {
+			for (int j = nStartRow; j < nEndRow + 1; j++) {
+				Cell cell = getCellByPosition(i, j);
+				if (cell != null) {
+					nColSpan = cell.getColumnSpannedNumber();
+					nRowSpan = cell.getRowSpannedNumber();
+					if ((nColSpan > 1) || (nRowSpan > 1)) {
+						coverList.add(new CellCoverInfo(i, j, nColSpan, nRowSpan));
+					}
+				}
+			}
+		}
+		return coverList;
+	}
+
+	// the odfelement of the FTableColumn changed, so we should update the
+	// repository here
+	void updateColumnRepository(TableTableColumnElement oldElement, int oldRepeatIndex,
+			TableTableColumnElement newElement, int newRepeatIndex) {
+		if (mColumnRepository.containsKey(oldElement)) {
+			Vector<Column> oldList = mColumnRepository.get(oldElement);
+			if (oldRepeatIndex < oldList.size()) {
+				if (oldElement != newElement) {
+					// the new column replace the old column
+					Column oldColumn = oldList.get(oldRepeatIndex);
+					if (oldColumn != null) {
+						// update the mnRepeateIndex of the column which locate
+						// after the removed column
+						for (int i = oldRepeatIndex + 1; i < oldList.size(); i++) {
+							Column column = oldList.get(i);
+							if (column != null) {
+								column.mnRepeatedIndex = i - 1;
+							}
+						}
+						oldList.remove(oldColumn);
+						// oldList.add(oldRepeatIndex, null);
+						if (newElement != null) {
+							oldColumn.maColumnElement = newElement;
+							oldColumn.mnRepeatedIndex = newRepeatIndex;
+							int size = (newRepeatIndex > 7) ? (newRepeatIndex + 1) : 8;
+							Vector<Column> list = new Vector<Column>(size);
+							list.setSize(newRepeatIndex + 1);
+							list.set(newRepeatIndex, oldColumn);
+							mColumnRepository.put(newElement, list);
+						} else {
+							oldColumn.maColumnElement = null;
+						}
+					}
+				} else {
+					// the new column element is equal to the old column
+					// element, just change the repeatIndex
+					Column oldColumn = oldList.get(oldRepeatIndex);
+					if (oldColumn != null) {
+						oldList.remove(oldColumn);
+						oldList.add(oldRepeatIndex, null);
+						oldColumn.mnRepeatedIndex = newRepeatIndex;
+						if (newRepeatIndex >= oldList.size()) {
+							oldList.setSize(newRepeatIndex + 1);
+						}
+						oldList.set(newRepeatIndex, oldColumn);
+					} else {
+						getColumnInstance(newElement, newRepeatIndex);
+					}
+				}
+			}
+		}
+	}
+
+	// the odfelement of the FTableRow changed, so we should update the
+	// repository here
+	void updateRowRepository(TableTableRowElement oldElement, int oldRepeatIndex, TableTableRowElement newElement,
+			int newRepeatIndex) {
+		if (mRowRepository.containsKey(oldElement)) {
+			Vector<Row> oldList = mRowRepository.get(oldElement);
+			if (oldRepeatIndex < oldList.size()) {
+				if (oldElement != newElement) {
+					// the new row replace the old row
+					Row oldRow = oldList.get(oldRepeatIndex);
+					Vector<Cell> updateCellList = new Vector<Cell>();
+					if (oldRow != null) {
+						// update the mnRepeateIndex of the row which locate
+						// after the removed row
+						for (int i = oldRepeatIndex + 1; i < oldList.size(); i++) {
+							Row row = oldList.get(i);
+							if (row != null) {
+								// update the cell in this row,
+								int colNum = getColumnCount();
+								for (int j = 0; j < colNum; j++) {
+									Cell cell = row.getCellByIndex(j);
+									updateCellList.add(cell);
+								}
+								row.mnRepeatedIndex = i - 1;
+							}
+						}
+						oldList.remove(oldRow);
+						if (newElement != null) {
+							// update the cell in this row
+							int colNum = getColumnCount();
+							Cell[] oldCells = new Cell[colNum];
+							for (int j = 0; j < colNum; j++) {
+								oldCells[j] = oldRow.getCellByIndex(j);
+							}
+							// /
+							oldRow.maRowElement = newElement;
+							oldRow.mnRepeatedIndex = newRepeatIndex;
+							int size = (newRepeatIndex > 7) ? (newRepeatIndex + 1) : 8;
+							Vector<Row> list = new Vector<Row>(size);
+							list.setSize(newRepeatIndex + 1);
+							list.set(newRepeatIndex, oldRow);
+							mRowRepository.put(newElement, list);
+							// update the cell in this row
+							Cell[] newCells = new Cell[colNum];
+							for (int j = 0; j < colNum; j++) {
+								newCells[j] = oldRow.getCellByIndex(j);
+							}
+							for (int j = 0; j < colNum; j++) {
+								this.updateCellRepository(oldCells[j].getOdfElement(), oldCells[j].mnRepeatedColIndex,
+										oldCells[j].mnRepeatedRowIndex, newCells[j].getOdfElement(),
+										newCells[j].mnRepeatedColIndex, newCells[j].mnRepeatedRowIndex);
+							}
+
+							// update the mnRepeatedRowIndex of the cell which
+							// locate after the removed row
+							for (int j = 0; j < updateCellList.size(); j++) {
+								Cell cell = updateCellList.get(j);
+								if (cell.mnRepeatedRowIndex > oldRepeatIndex) {
+									cell.mnRepeatedRowIndex--;
+								}
+							}
+						} else {
+							oldRow.maRowElement = null;
+						}
+					}
+				} else {
+					// the new row element is equal to the old row element, just
+					// change the repeatIndex
+					Row oldRow = oldList.get(oldRepeatIndex);
+					if (oldRow != null) {
+						oldList.remove(oldRow);
+						oldList.add(oldRepeatIndex, null);
+						oldRow.mnRepeatedIndex = newRepeatIndex;
+						if (newRepeatIndex >= oldList.size()) {
+							oldList.setSize(newRepeatIndex + 1);
+						}
+						oldList.set(newRepeatIndex, oldRow);
+					} else {
+						getRowInstance(newElement, newRepeatIndex);
+					}
+				}
+			}
+		}
+	}
+
+	// the odfelement of the FTableCell changed, so we should update the
+	// repository here
+	void updateCellRepository(TableTableCellElementBase oldElement, int oldRepeatColIndex, int oldRepeatRowIndex,
+			TableTableCellElementBase newElement, int newRepeatColIndex, int newRepeatRowIndex) {
+		if (mCellRepository.containsKey(oldElement)) {
+			Cell oldCell = null;
+			Vector<Cell> oldList = mCellRepository.get(oldElement);
+			for (int i = 0; i < oldList.size(); i++) {
+				if (oldList.get(i).getOdfElement() == oldElement
+						&& oldList.get(i).mnRepeatedColIndex == oldRepeatColIndex
+						&& oldList.get(i).mnRepeatedRowIndex == oldRepeatRowIndex) {
+					oldCell = oldList.get(i);
+					break;
+				}
+			}
+			if (oldElement != newElement) {
+				// the new cell replace the old cell
+				if (oldCell != null) {
+					// update the mnRepeateRowIndex & mnRepeateColIndex of the
+					// cell which locate after the removed cell
+					for (int i = 0; i < oldList.size(); i++) {
+						Cell cell = oldList.get(i);
+						if (cell != null && (cell.getOdfElement() == oldElement)) {
+							if ((cell.mnRepeatedRowIndex == oldRepeatRowIndex)
+									&& (cell.mnRepeatedColIndex > oldRepeatColIndex)) {
+								cell.mnRepeatedColIndex--;
+							}
+						}
+					}
+					oldList.remove(oldCell);
+					if (oldList.size() == 0) {
+						mCellRepository.remove(oldElement);
+					}
+					if (newElement != null) {
+						oldCell.mCellElement = newElement;
+						oldCell.mnRepeatedColIndex = newRepeatColIndex;
+						oldCell.mnRepeatedRowIndex = newRepeatRowIndex;
+						Vector<Cell> list;
+						if (mCellRepository.containsKey(newElement)) {
+							list = mCellRepository.get(newElement);
+							boolean bReplaced = false;
+							for (int i = 0; i < list.size(); i++) {
+								Cell cell = list.get(i);
+								if (cell != null && (cell.getOdfElement() == newElement)) {
+									if ((cell.mnRepeatedColIndex == newRepeatColIndex)
+											&& (cell.mnRepeatedRowIndex == newRepeatRowIndex)) {
+										list.remove(i);
+										list.add(i, oldCell);
+										bReplaced = true;
+										break;
+									}
+								}
+							}
+							if (!bReplaced) {
+								list.add(oldCell);
+							}
+						} else {
+							list = new Vector<Cell>();
+							list.add(oldCell);
+							mCellRepository.put(newElement, list);
+						}
+					} else {
+						oldCell.mCellElement = null;
+						oldCell.mnRepeatedColIndex = 0;
+						oldCell.mnRepeatedRowIndex = 0;
+					}
+				}
+			} else {
+				// the new cell element is equal to the old cell element, just
+				// change the repeatIndex
+				if (oldCell != null) {
+					oldCell.mnRepeatedColIndex = newRepeatColIndex;
+					oldCell.mnRepeatedRowIndex = newRepeatRowIndex;
+				} else {
+					getCellInstance(newElement, newRepeatColIndex, newRepeatRowIndex);
+				}
+			}
+		}
+	}
+
+	void updateRepositoryWhenCellElementChanged(int startRow, int endRow, int startClm, int endClm,
+			TableTableCellElement newCellEle) {
+		for (int i = startRow; i < endRow; i++) {
+			for (int j = startClm; j < endClm; j++) {
+				Cell cell = getCellByPosition(j, i);
+				updateCellRepository(cell.getOdfElement(), cell.mnRepeatedColIndex, cell.mnRepeatedRowIndex,
+						newCellEle, cell.mnRepeatedColIndex, cell.mnRepeatedRowIndex);
+			}
+		}
+	}
+	
+	public DefaultStyleHandler getStyleHandler() {
+		if (mStyleHandler == null)
+			mStyleHandler = new DefaultStyleHandler(this.getOdfElement());
+		return mStyleHandler;
+	}
+	// default iterator to iterate column item.
+	private class SimpleColumnIterator implements Iterator<Column> {
+		private Table ownerTable;
+		private TableTableColumnElement nextColumnElement;
+		private TableTableColumnElement tempColumnElement;
+		private int columnsRepeatedIndex = -1;
+		private int columnsRepeatedNumber = 0;
+
+		private SimpleColumnIterator(Table owner) {
+			ownerTable = owner;
+		}
+
+		public boolean hasNext() {
+			tempColumnElement = findNext(nextColumnElement);
+			return (tempColumnElement != null);
+		}
+
+		public Column next() {
+			if (tempColumnElement != null) {
+				nextColumnElement = tempColumnElement;
+				tempColumnElement = null;
+			} else {
+				nextColumnElement = findNext(nextColumnElement);
+			}
+			if (nextColumnElement == null) {
+				return null;
+			} else {
+				return getColumnInstance(nextColumnElement, columnsRepeatedIndex);
+			}
+		}
+
+		public void remove() {
+			if (nextColumnElement == null) {
+				throw new IllegalStateException("please call next() first.");
+			}
+			Column column = getColumnInstance(nextColumnElement, columnsRepeatedIndex);
+			ownerTable.removeColumnsByIndex(column.getColumnIndex(), 1);
+		}
+
+		private TableTableColumnElement findNext(TableTableColumnElement nextColumnElement) {
+			tempColumnElement = null;
+			columnsRepeatedIndex++;
+			if ((columnsRepeatedNumber > 0) && (columnsRepeatedIndex < columnsRepeatedNumber)) {
+				tempColumnElement = nextColumnElement;
+			} else {
+				Node child = null;
+				if (nextColumnElement == null) {
+					child = ownerTable.getOdfElement().getFirstChild();
+					while (child != null) {
+						if (child instanceof TableTableHeaderColumnsElement) {
+							TableTableHeaderColumnsElement headers = (TableTableHeaderColumnsElement) child;
+							Node header = headers.getFirstChild();
+							while (header != null) {
+								if (header instanceof TableTableColumnElement) {
+									tempColumnElement = (TableTableColumnElement) header;
+									break;
+								}
+								header = header.getNextSibling();
+							}
+							if (tempColumnElement != null) {
+								break;
+							}
+						}
+						if (child instanceof TableTableColumnElement) {
+							tempColumnElement = (TableTableColumnElement) child;
+							break;
+						}
+						child = child.getNextSibling();
+					}
+				} else {
+					child = nextColumnElement.getNextSibling();
+					if (child != null) {
+						if (child instanceof TableTableColumnElement) {
+							tempColumnElement = (TableTableColumnElement) child;
+						}
+					} else {
+						Node parentNode = nextColumnElement.getParentNode();
+						if (parentNode instanceof TableTableHeaderColumnsElement) {
+							parentNode = parentNode.getNextSibling();
+							if ((parentNode != null) && (parentNode instanceof TableTableColumnElement)) {
+								child = parentNode;
+								tempColumnElement = (TableTableColumnElement) child;
+							}
+						}
+					}
+				}
+				if (tempColumnElement != null) {
+					columnsRepeatedNumber = tempColumnElement.getTableNumberColumnsRepeatedAttribute();
+					columnsRepeatedIndex = 0;
+				}
+			}
+			return tempColumnElement;
+		}
+	}
+	
+	// default iterator to iterate row item.
+	private class SimpleRowIterator implements Iterator<Row> {
+		
+		private Table ownerTable;
+		private TableTableRowElement nextRowElement;
+		private TableTableRowElement tempRowElement;
+		private int rowsRepeatedIndex = -1;
+		private int rowsRepeatedNumber = 0;
+
+		private SimpleRowIterator(Table owner) {
+			ownerTable = owner;
+		}
+
+		public boolean hasNext() {
+			tempRowElement = findNext(nextRowElement);
+			return (tempRowElement != null);
+		}
+
+		public Row next() {
+			if (tempRowElement != null) {
+				nextRowElement = tempRowElement;
+				tempRowElement = null;
+			} else {
+				nextRowElement = findNext(nextRowElement);
+			}
+			if (nextRowElement == null) {
+				return null;
+			} else {
+				return getRowInstance(nextRowElement, rowsRepeatedIndex);
+			}
+		}
+
+		public void remove() {
+			if (nextRowElement == null) {
+				throw new IllegalStateException("please call next() first.");
+			}
+			Row row = getRowInstance(nextRowElement, rowsRepeatedIndex);
+			ownerTable.removeRowsByIndex(row.getRowIndex(), 1);
+		}
+
+		private TableTableRowElement findNext(TableTableRowElement nextRowElement) {
+			tempRowElement = null;
+			rowsRepeatedIndex++;
+			if ((rowsRepeatedNumber > 0) && (rowsRepeatedIndex < rowsRepeatedNumber)) {
+				tempRowElement = nextRowElement;
+			} else {
+				Node child = null;
+				if (nextRowElement == null) {
+					child = ownerTable.getOdfElement().getFirstChild();
+					while (child != null) {
+						if (child instanceof TableTableHeaderRowsElement) {
+							TableTableHeaderRowsElement headers = (TableTableHeaderRowsElement) child;
+							Node header = headers.getFirstChild();
+							while (header != null) {
+								if (header instanceof TableTableRowElement) {
+									tempRowElement = (TableTableRowElement) header;
+									break;
+								}
+								header = header.getNextSibling();
+							}
+							if (tempRowElement != null) {
+								break;
+							}
+						}
+						if (child instanceof TableTableRowElement) {
+							tempRowElement = (TableTableRowElement) child;
+							break;
+						}
+						child = child.getNextSibling();
+					}
+				} else {
+					child = nextRowElement.getNextSibling();
+					if (child != null) {
+						if (child instanceof TableTableRowElement) {
+							tempRowElement = (TableTableRowElement) child;
+						}
+					} else {
+						Node parentNode = nextRowElement.getParentNode();
+						if (parentNode instanceof TableTableHeaderRowsElement) {
+							parentNode = parentNode.getNextSibling();
+							if ((parentNode != null) && (parentNode instanceof TableTableRowElement)) {
+								child = parentNode;
+								tempRowElement = (TableTableRowElement) child;
+							}
+						}
+					}
+				}
+				if (tempRowElement != null) {
+					rowsRepeatedNumber = tempRowElement.getTableNumberRowsRepeatedAttribute();
+					rowsRepeatedIndex = 0;
+				}
+			}
+			return tempRowElement;
+		}
+	}
+}
+
+/**
+ * Record the Cell Cover Info in this cell range.
+ * <p>
+ * Sometimes the covered cell is not tagged as
+ * <table:covered-table-cell>
+ * element.
+ */
+class CellCoverInfo {
+	int nStartCol;
+	int nStartRow;
+	int nEndCol;
+	int nEndRow;
+
+	CellCoverInfo(int nSC, int nSR, int nColumnSpan, int nRowSpan) {
+		nStartCol = nSC;
+		nStartRow = nSR;
+		nEndCol = nSC + nColumnSpan - 1;
+		nEndRow = nSR + nRowSpan - 1;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/TableContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/TableContainer.java
new file mode 100644
index 0000000..e4f550c
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/TableContainer.java
@@ -0,0 +1,102 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.List;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+
+/**
+ * TableContainer is a container which maintains Table(s) as element(s).
+ * Table(s) can be added, removed and iterated in this container.
+ * 
+ * @see Table
+ * @see org.odftoolkit.simple.TextDocument
+ * @see org.odftoolkit.simple.SpreadsheetDocument
+ * 
+ * @since 0.4.5
+ */
+public interface TableContainer {
+
+	/**
+	 * Get the ODF element which can have
+	 * <table:table>
+	 * as child element directly according to ODF specification. This Element
+	 * will help to find the position to insert a new Table. For example,
+	 * <table:table>
+	 * element is usable with <office:text> element, so TextDocument will return
+	 * OfficeTextElement. While Presentation Notes is an indirectly
+	 * TableContainer, which holds Table with the help of its grand-child
+	 * element <draw:text-box>, so for Notes, DrawTextBoxElement should be
+	 * return.
+	 * 
+	 * @return container element which can hold <text:table>.
+	 */
+	public OdfElement getTableContainerElement();
+
+	/**
+	 * Add a new Table to this container.
+	 * 
+	 * @return added table.
+	 */
+	public Table addTable();
+
+	/**
+	 * Add a new Table to this container with a specified row number and column
+	 * number.
+	 * <p>
+	 * The table will be inserted at the end of the tableContainer. An unique
+	 * table name will be given, you may set a custom table name using the
+	 * <code>setTableName</code> method.
+	 * 
+	 * @param numRows
+	 *            the row number
+	 * @param numCols
+	 *            the column number
+	 * @return a new instance of <code>Table</code>
+	 */
+	public Table addTable(int numRows, int numCols);
+
+	/**
+	 * Return an instance of table feature with the specific table name.
+	 * 
+	 * @param name
+	 *            of the table being searched for.
+	 * @return an instance of table feature with the specific table name.
+	 */
+	public Table getTableByName(String name);
+
+	/**
+	 * Return a list of table features in this document.
+	 * 
+	 * @return a list of table features in this document.
+	 */
+	public List<Table> getTableList();
+
+	/**
+	 * Return the table builder of this document. Every document has a table
+	 * builder, which supplies all of the table creation realization, for
+	 * example newTable().
+	 * 
+	 * @return the table builder of this document.
+	 */
+	public TableBuilder getTableBuilder();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/table/TableTemplate.java b/trunk/simple/src/main/java/org/odftoolkit/simple/table/TableTemplate.java
new file mode 100644
index 0000000..07eb77a
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/table/TableTemplate.java
@@ -0,0 +1,765 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.table;

+

+import java.util.HashMap;

+

+import org.odftoolkit.odfdom.dom.element.table.TableBodyElement;

+import org.odftoolkit.odfdom.dom.element.table.TableEvenColumnsElement;

+import org.odftoolkit.odfdom.dom.element.table.TableEvenRowsElement;

+import org.odftoolkit.odfdom.dom.element.table.TableFirstColumnElement;

+import org.odftoolkit.odfdom.dom.element.table.TableFirstRowElement;

+import org.odftoolkit.odfdom.dom.element.table.TableLastColumnElement;

+import org.odftoolkit.odfdom.dom.element.table.TableLastRowElement;

+import org.odftoolkit.odfdom.dom.element.table.TableOddColumnsElement;

+import org.odftoolkit.odfdom.dom.element.table.TableOddRowsElement;

+import org.odftoolkit.odfdom.dom.element.table.TableTableTemplateElement;

+import org.w3c.dom.NodeList;

+

+/**

+ * TableTemplate represents the table template feature in ODF documents.

+ * <p>

+ * Besides the seven types of style (first row, first column, last row, last

+ * column, even/odd rows,even/odd columns and body) defined by

+ * <code>table:table-template</code> in ODF 1.2, TableTemplate provide extension

+ * mechnism, which allows user to specify style value to additional cells. For

+ * example, in ODF 1.2 the four coner cells can only inherit styles from the

+ * colum or row they are existing, but through TableTemplate.ExtendedStyleType,

+ * they can reference any style defined in the document.

+ * <p>

+ * TableTemplate provide method to get/set a set of references to table cell

+ * styles that specify the formatting to be used on a table.

+ * 

+ */

+public class TableTemplate {

+

+	private TableTableTemplateElement mElement;

+

+	/**

+	 * Extended style types supported by table template.

+	 * 

+	 */

+	public static enum ExtendedStyleType {

+		FIRSTROWSTARTCOLUM, FIRSTROWENDCOLUMN, LASTROWSTARTCOLUMN, LASTROWENDCOLUMN

+	}

+

+	HashMap<ExtendedStyleType, String> extendedTableStyleMap;

+	HashMap<ExtendedStyleType, String> extendedParagraphStyleMap;

+

+	/**

+	 * Create an instance of TableTemplate

+	 */

+	protected TableTemplate() {

+	}

+

+	/**

+	 * Create an instance of TableTemplate from an element

+	 * <table:table-template>

+	 * 

+	 * @param tableTableTemplate

+	 *            - the element of table:table-template

+	 */

+	public TableTemplate(TableTableTemplateElement tableTableTemplate) {

+		mElement = tableTableTemplate;

+	}

+

+	/**

+	 * Return the name of table template.

+	 * <p>

+	 * Null will be returned if there is no table template name setting.

+	 * 

+	 * @return the table template name.

+	 */

+	public String getTableName() {

+		return mElement.getTableNameAttribute();

+	}

+

+	/**

+	 * Set the name of table template.

+	 * <p>

+	 * If the parameter <code>tableNameValue</code> is null, the table template

+	 * name definition will be removed.

+	 * 

+	 * @param tableNameValue

+	 *            - the table template name

+	 */

+	public void setTableName(String tableNameValue) {

+		mElement.setTableNameAttribute(tableNameValue);

+	}

+

+	/**

+	 * get the value of table style specified by type.

+	 * <p>

+	 * Null will be returned if there is no such extended style type setting.

+	 * 

+	 * @param type

+	 *            - style type

+	 * @return the style name referenced by this style type

+	 */

+	public String getExtendedTableStyleByType(ExtendedStyleType type) {

+		if (extendedTableStyleMap == null)

+			return null;

+		return extendedTableStyleMap.get(type);

+	}

+

+	/**

+	 * get the value of paragraph style specified by type.

+	 * <p>

+	 * Null will be returned if there is no such extended style type setting.

+	 * 

+	 * @param type

+	 *            - extended style type

+	 * @return the style name referenced by this style type

+	 */

+	public String getExtendedParagraphStyleByType(ExtendedStyleType type) {

+		if (extendedParagraphStyleMap == null)

+			return null;

+		return extendedParagraphStyleMap.get(type);

+	}

+

+	/**

+	 * set the value of table style and paragraph style specified by type.

+	 * 

+	 * @param type

+	 *            - extended style type

+	 * @param tableStyle

+	 *            - table style name

+	 * @param paraStyle

+	 *            - paragraph style name

+	 */

+	public void setExtendedStyleByType(ExtendedStyleType type,

+			String tableStyle, String paraStyle) {

+

+		if (extendedTableStyleMap == null) {

+			extendedTableStyleMap = new HashMap<ExtendedStyleType, String>(5);

+		}

+		if (extendedParagraphStyleMap == null) {

+			extendedParagraphStyleMap = new HashMap<ExtendedStyleType, String>(

+					5);

+		}

+		extendedTableStyleMap.put(type, tableStyle);

+		extendedParagraphStyleMap.put(type, paraStyle);

+	}

+

+	/**

+	 * get the value of table style of body.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of body.

+	 */

+	public String getTableBodyTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableBodyElement.ELEMENT_NAME.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableBodyElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of body.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of body.

+	 */

+	public String getTableBodyParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableBodyElement.ELEMENT_NAME.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableBodyElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of even columns.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of even columns.

+	 */

+	public String getTableEvenColumnsTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableEvenColumnsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableEvenColumnsElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of even columns.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of even columns.

+	 */

+	public String getTableEvenColumnsParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableEvenColumnsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableEvenColumnsElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of even rows.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of even rows.

+	 */

+	public String getTableEvenRowsTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableEvenRowsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableEvenRowsElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of even rows.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of even rows.

+	 */

+	public String getTableEvenRowsParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableEvenRowsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableEvenRowsElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of first colum.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of first column.

+	 */

+	public String getTableFirstColumnTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableFirstColumnElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableFirstColumnElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of first column.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of first column.

+	 */

+	public String getTableFirstColumnParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableFirstColumnElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableFirstColumnElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of first row.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of first row.

+	 */

+	public String getTableFirstRowTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableFirstRowElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableFirstRowElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of first row.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of first row.

+	 */

+	public String getTableFirstRowParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableFirstRowElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableFirstRowElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of last column.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of last column.

+	 */

+	public String getTableLastColumnTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableLastColumnElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableLastColumnElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of last column.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of last column.

+	 */

+	public String getTableLastColumnParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableLastColumnElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableLastColumnElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of last row.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of last row.

+	 */

+	public String getTableLastRowTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableLastRowElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableLastRowElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of last row.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of last row.

+	 */

+	public String getTableLastRowParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableLastRowElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableLastRowElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of odd columns.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of odd columns.

+	 */

+	public String getTableOddColumnsTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableOddColumnsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableOddColumnsElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of odd columns.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of odd columns.

+	 */

+	public String getTableOddColumnsParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableOddColumnsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableOddColumnsElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of table style of odd rows.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by table style of odd rows.

+	 */

+	public String getTableOddRowsTableStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableOddRowsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableOddRowsElement) elements.item(0))

+					.getTableStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * get the value of paragraph style of odd rows.

+	 * <p>

+	 * Null will be returned if there is no such style setting.

+	 * 

+	 * @return the style name referenced by paragraph style of odd rows.

+	 */

+	public String getTableOddRowsParagraphStyle() {

+		NodeList elements = mElement

+				.getElementsByTagName(TableOddRowsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			return ((TableOddRowsElement) elements.item(0))

+					.getTableParagraphStyleNameAttribute();

+		}

+		return null;

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of body.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in body will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in body will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by body

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by body

+	 */

+	public void setTableBodyStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableBodyElement.ELEMENT_NAME.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableBodyElement ele = (TableBodyElement) elements.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableBodyElement ele = mElement

+					.newTableBodyElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of even columns.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in even columns will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in even columns will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by even columns

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by even columns

+	 */

+	public void setTableEvenColumnsStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableEvenColumnsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableEvenColumnsElement ele = (TableEvenColumnsElement) elements

+					.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableEvenColumnsElement ele = mElement

+					.newTableEvenColumnsElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of even rows.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in even rows will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in even rows will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by even rows

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by even rows

+	 */

+	public void setTableEvenRowsStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableEvenRowsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableEvenRowsElement ele = (TableEvenRowsElement) elements.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableEvenRowsElement ele = mElement

+					.newTableEvenRowsElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of first column.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in first column will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in first column will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by first column

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by first column

+	 */

+	public void setTableFirstColumnStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableFirstColumnElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableFirstColumnElement ele = (TableFirstColumnElement) elements

+					.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableFirstColumnElement ele = mElement

+					.newTableFirstColumnElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of first row.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in first row will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in first row will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by first row

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by first row

+	 */

+	public void setTableFirstRowStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableFirstRowElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableFirstRowElement ele = (TableFirstRowElement) elements.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableFirstRowElement ele = mElement

+					.newTableFirstRowElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of last column.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in last column will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in last column will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by last column

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by last column

+	 */

+	public void setTableLastColumnStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableLastColumnElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableLastColumnElement ele = (TableLastColumnElement) elements

+					.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableLastColumnElement ele = mElement

+					.newTableLastColumnElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of last row.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in last row will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in last row will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by last row

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by last row

+	 */

+	public void setTableLastRowStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableLastRowElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableLastRowElement ele = (TableLastRowElement) elements.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableLastRowElement ele = mElement

+					.newTableLastRowElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of odd columns.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in odd columns will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in odd columns will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by odd columns

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by odd columns

+	 */

+	public void setTableOddColumnsStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableOddColumnsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableOddColumnsElement ele = (TableOddColumnsElement) elements

+					.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableOddColumnsElement ele = mElement

+					.newTableOddColumnsElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+	/**

+	 * Set the value of table style and paragraph style of odd rows.

+	 * <p>

+	 * If the parameter <code>tableStyleNameValue</code> is null, the table

+	 * style name definition in odd rows will be removed. If the parameter

+	 * <code>tableParagraphStyleNameValue</code> is null, the paragraph style

+	 * name definition in odd rows will be removed.

+	 * 

+	 * @param tableStyleNameValue

+	 *            - table style name referenced by odd rows

+	 * @param tableParagraphStyleNameValue

+	 *            - paragraph style name referenced by odd rows

+	 */

+	public void setTableOddRowsStyle(String tableStyleNameValue,

+			String tableParagraphStyleNameValue) {

+		NodeList elements = mElement

+				.getElementsByTagName(TableOddRowsElement.ELEMENT_NAME

+						.getQName());

+		if (elements != null && elements.getLength() > 0) {

+			TableOddRowsElement ele = (TableOddRowsElement) elements.item(0);

+			ele.setTableStyleNameAttribute(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		} else {

+			TableOddRowsElement ele = mElement

+					.newTableOddRowsElement(tableStyleNameValue);

+			ele

+					.setTableParagraphStyleNameAttribute(tableParagraphStyleNameValue);

+		}

+	}

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/AbstractParagraphContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/AbstractParagraphContainer.java
new file mode 100644
index 0000000..2ace7a4
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/AbstractParagraphContainer.java
@@ -0,0 +1,201 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.w3c.dom.Node;
+
+/**
+ * AbstractParagraphContainer is an abstract class to present paragraph
+ * container. It contains the default implementation to add/get/remove
+ * paragraph. Each subclass needs to implement getParagraphContainerElement().
+ * 
+ * @since 0.5
+ */
+public abstract class AbstractParagraphContainer implements ParagraphContainer {
+
+	abstract public OdfElement getParagraphContainerElement();
+
+	/**
+	 * Add paragraph at the end of the container with specified text content.
+	 * 
+	 * @param textContent
+	 *            the text content
+	 * @return an instance of paragraph
+	 */
+	public Paragraph addParagraph(String textContent) {
+		Paragraph para = Paragraph.newParagraph(this);
+		para.setTextContent(textContent);
+		return para;
+	}
+
+	/**
+	 * Remove paragraph from the container
+	 * 
+	 * @param para
+	 *            the instance of paragraph
+	 * @return true if the paragraph is removed successfully, false if errors
+	 *         happen.
+	 */
+	public boolean removeParagraph(Paragraph para) {
+		try {
+			para.remove();
+		} catch (Exception exception) {
+			Logger.getLogger(AbstractParagraphContainer.class.getName()).log(Level.WARNING, exception.getMessage());
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * Return an Iterator of the paragraph in this container.
+	 * 
+	 * @return an Iterator of the paragraph in this container
+	 */
+	public Iterator<Paragraph> getParagraphIterator() {
+		return new SimpleParagraphIterator(this);
+	}
+
+	/**
+	 * Return a paragraph with a given index.
+	 * <p>
+	 * An index of zero represents the first paragraph.
+	 * <p>
+	 * If empty paragraph is skipped, the empty paragraph won't be counted.
+	 * 
+	 * @param index
+	 *            the index started from 0.
+	 * @param isEmptyParagraphSkipped
+	 *            whether the empty paragraph is skipped or not.
+	 * @return the paragraph with a given index
+	 */
+	public Paragraph getParagraphByIndex(int index, boolean isEmptyParagraphSkipped) {
+		Iterator<Paragraph> iterator = getParagraphIterator();
+		while (iterator.hasNext() && (index >= 0)) {
+			Paragraph current = iterator.next();
+			if (isEmptyParagraphSkipped) {
+				String content = current.getTextContent();
+				if ((content == null) || (content.length() == 0)) {
+					continue;
+				}
+			}
+			if (index == 0) {
+				return current;
+			}
+			index--;
+		}
+		return null;
+	}
+
+	/**
+	 * Return a paragraph with a given index. The index is in reverse order.
+	 * <p>
+	 * An index of zero represents the last paragraph.
+	 * <p>
+	 * If empty paragraph is skipped, the empty paragraph won't be counted.
+	 * 
+	 * @param reverseIndex
+	 *            the index started from 0 in reverse order.
+	 * @param isEmptyParagraphSkipped
+	 *            whether the empty paragraph is skipped or not.
+	 * @return the paragraph with a given index.
+	 */
+	public Paragraph getParagraphByReverseIndex(int reverseIndex, boolean isEmptyParagraphSkipped) {
+		OdfElement containerElement = getParagraphContainerElement();
+		Node node = containerElement.getLastChild();
+		while (node != null && (reverseIndex >= 0)) {
+			if (node.getNodeType() != Node.ELEMENT_NODE) {
+				node = node.getPreviousSibling();
+				continue;
+			}
+			if (node instanceof TextParagraphElementBase) {
+				if (isEmptyParagraphSkipped) {
+					if (node.hasChildNodes() == false || node.getTextContent() == null
+							|| node.getTextContent().length() == 0) {
+						node = node.getPreviousSibling();
+						continue;
+					}
+				}
+				if (reverseIndex == 0) {
+					return Paragraph.getInstanceof((TextParagraphElementBase) node);
+				}
+				reverseIndex--;
+			}
+			node = node.getPreviousSibling();
+		}
+		return null;
+	}
+
+	private class SimpleParagraphIterator implements Iterator<Paragraph> {
+
+		private OdfElement containerElement;
+		private Paragraph nextElement = null;
+		private Paragraph tempElement = null;
+
+		private SimpleParagraphIterator(ParagraphContainer container) {
+			containerElement = container.getParagraphContainerElement();
+		}
+
+		public boolean hasNext() {
+			tempElement = findNext(nextElement);
+			return (tempElement != null);
+		}
+
+		public Paragraph next() {
+			if (tempElement != null) {
+				nextElement = tempElement;
+				tempElement = null;
+			} else {
+				nextElement = findNext(nextElement);
+			}
+			if (nextElement == null) {
+				return null;
+			} else {
+				return nextElement;
+			}
+		}
+
+		public void remove() {
+			if (nextElement == null) {
+				throw new IllegalStateException("please call next() first.");
+			}
+			nextElement.remove();
+		}
+
+		private Paragraph findNext(Paragraph thisBox) {
+			TextParagraphElementBase nextParagraph = null;
+			if (thisBox == null) {
+				nextParagraph = OdfElement.findFirstChildNode(TextParagraphElementBase.class, containerElement);
+			} else {
+				nextParagraph = OdfElement.findNextChildNode(TextParagraphElementBase.class, thisBox.getOdfElement());
+			}
+
+			if (nextParagraph != null) {
+				return Paragraph.getInstanceof(nextParagraph);
+			}
+			return null;
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/Footer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Footer.java
new file mode 100644
index 0000000..0169cf9
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Footer.java
@@ -0,0 +1,280 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleColumnsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleSectionPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.AbstractVariableContainer;
+import org.odftoolkit.simple.common.field.VariableContainer;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+import org.odftoolkit.simple.table.AbstractTableContainer;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class represents footer definition in text document. It provides methods
+ * to manipulate footer in text document, such as, set text, add table.
+ * 
+ * @since 0.4.5
+ */
+public class Footer extends Component implements TableContainer, VariableContainer {
+	private StyleFooterElement footerEle;
+	private TableContainerImpl tableContainerImpl;
+	private VariableContainerImpl variableContainerImpl;
+
+	/**
+	 * Create a footer instance by an object of <code>StyleFooterElement</code>.
+	 * 
+	 * @param element
+	 *            - an object of <code>StyleFooterElement</code>
+	 */
+	public Footer(StyleFooterElement element) {
+		footerEle = element;
+	}
+
+	/**
+	 * Return an instance of <code>StyleFooterElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>StyleFooterElement</code>
+	 */
+	public StyleFooterElement getOdfElement() {
+		return footerEle;
+	}
+	
+	/**
+	 * Get this footer is visible or not.
+	 * 
+	 * @return If this footer is visible return <code>true</code>, otherwise
+	 *         return <code>false</code>.
+	 * @since 0.5.5
+	 */
+	public boolean isVisible() {
+		boolean isVisible = footerEle.getStyleDisplayAttribute();
+		return isVisible;
+	}
+	
+	/**
+	 * Set this footer visible or not.
+	 * 
+	 * @param isVisible
+	 *            If <code>isVisible</code> is true, the footer of this document
+	 *            is visible, otherwise is invisible.
+	 * @since 0.5.5
+	 */
+	public void setVisible(boolean isVisible) {
+		if (isVisible) {
+			footerEle.removeAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "display");
+		} else {
+			footerEle.setStyleDisplayAttribute(false);
+		}
+		NodeList nodeList = footerEle.getElementsByTagName(TextPElement.ELEMENT_NAME.getQName());
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			TextPElement textEle = (TextPElement) nodeList.item(i);
+			String stylename = textEle.getStyleName();
+			OdfFileDom dom = (OdfFileDom) footerEle.getOwnerDocument();
+			OdfOfficeAutomaticStyles styles = null;
+			if (dom instanceof OdfContentDom) {
+				styles = ((OdfContentDom) dom).getAutomaticStyles();
+			} else if (dom instanceof OdfStylesDom) {
+				styles = ((OdfStylesDom) dom).getAutomaticStyles();
+			}
+			
+			OdfStyle newStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+			OdfStyle style = styles.getStyle(stylename, OdfStyleFamily.Paragraph);
+			if (style != null) {
+				String styleName = newStyle.getStyleNameAttribute();
+				styles.removeChild(newStyle);
+				newStyle = (OdfStyle) style.cloneNode(true);
+				newStyle.setStyleNameAttribute(styleName);
+				styles.appendChild(newStyle);
+			}
+			if (isVisible) {
+				if (newStyle.hasProperty(StyleTextPropertiesElement.Display)) {
+					newStyle.removeProperty(StyleTextPropertiesElement.Display);
+				}
+			} else {
+				newStyle.setProperty(StyleTextPropertiesElement.Display, "none");
+			}
+			textEle.setStyleName(newStyle.getStyleNameAttribute());
+		}
+	}
+	
+	public Table addTable() {
+		Table table = getTableContainerImpl().addTable();
+		updateTableToNone(table);
+		return table;
+	}
+
+	public Table addTable(int numRows, int numCols) {
+		Table table = getTableContainerImpl().addTable(numRows, numCols);
+		updateTableToNone(table);
+		return table;
+	}
+
+	public Table getTableByName(String name) {
+		return getTableContainerImpl().getTableByName(name);
+	}
+
+	public java.util.List<Table> getTableList() {
+		return getTableContainerImpl().getTableList();
+	}
+
+	public TableBuilder getTableBuilder() {
+		return getTableContainerImpl().getTableBuilder();
+	}
+
+	public OdfElement getTableContainerElement() {
+		return getTableContainerImpl().getTableContainerElement();
+	}
+
+	public OdfElement getVariableContainerElement() {
+		return getVariableContainerImpl().getVariableContainerElement();
+	}
+
+	public VariableField declareVariable(String name, VariableType type) {
+		return getVariableContainerImpl().declareVariable(name, type);
+	}
+
+	public VariableField getVariableFieldByName(String name) {
+		return getVariableContainerImpl().getVariableFieldByName(name);
+	}
+
+	private TableContainer getTableContainerImpl() {
+		if (tableContainerImpl == null) {
+			tableContainerImpl = new TableContainerImpl();
+		}
+		return tableContainerImpl;
+	}
+
+	private VariableContainer getVariableContainerImpl() {
+		if (variableContainerImpl == null) {
+			variableContainerImpl = new VariableContainerImpl();
+		}
+		return variableContainerImpl;
+	}
+
+	private void updateTableToNone(Table table) {
+		OdfFileDom dom = (OdfFileDom) getTableContainerElement().getOwnerDocument();
+		TableTableElement tableEle = table.getOdfElement();
+		String stylename = tableEle.getStyleName();
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		OdfStyle tableStyle = styles.getStyle(stylename, OdfStyleFamily.Table);
+		tableStyle.setProperty(StyleTablePropertiesElement.Shadow, "none");
+		NodeList cells = tableEle.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table-cell");
+		if (cells != null && cells.getLength() > 0) {
+			OdfStyle cellStyleWithoutBorder = styles.newStyle(OdfStyleFamily.TableCell);
+			cellStyleWithoutBorder.setProperty(StyleTableCellPropertiesElement.Border, "none");
+			cellStyleWithoutBorder.removeProperty(StyleTableCellPropertiesElement.Padding);
+			String cellStyleName = cellStyleWithoutBorder.getStyleNameAttribute();
+			for (int i = 0; i < cells.getLength(); i++) {
+				TableTableCellElement cell = (TableTableCellElement) cells.item(i);
+				cell.setStyleName(cellStyleName);
+			}
+		}
+	}
+
+	private class TableContainerImpl extends AbstractTableContainer {
+
+		public OdfElement getTableContainerElement() {
+			return footerEle;
+		}
+	}
+
+	private class VariableContainerImpl extends AbstractVariableContainer {
+
+		public OdfElement getVariableContainerElement() {
+			try {
+				return footerEle;
+			} catch (Exception e) {
+				Logger.getLogger(Footer.class.getName()).log(Level.SEVERE, null, e);
+				return null;
+			}
+		}
+	}
+
+	/**
+	 * Create an empty section and append it at the end of the footer.
+	 * 
+	 * @param name
+	 *            - specify the section name
+	 * @return an instance of the section
+	 * @throws RuntimeException
+	 *             if content DOM could not be initialized
+	 */
+	public Section appendSection(String name) {
+		TextSectionElement newSectionEle = null;
+		try {
+			Document doc = (Document) ((OdfFileDom) footerEle
+					.getOwnerDocument()).getDocument();
+			OdfContentDom contentDocument = doc.getContentDom();
+			OdfOfficeAutomaticStyles styles = contentDocument
+					.getAutomaticStyles();
+			OdfStyle style = styles.newStyle(OdfStyleFamily.Section);
+			StyleSectionPropertiesElement sProperties = style
+					.newStyleSectionPropertiesElement();
+			sProperties.setTextDontBalanceTextColumnsAttribute(false);
+			sProperties.setStyleEditableAttribute(false);
+			StyleColumnsElement columnEle = sProperties
+					.newStyleColumnsElement(1);
+			columnEle.setFoColumnGapAttribute("0in");
+
+			newSectionEle = footerEle.newTextSectionElement("true", name);
+			newSectionEle.setStyleName(style.getStyleNameAttribute());
+			return Section.getInstance(newSectionEle);
+
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					null, e);
+			throw new RuntimeException(name + "Section appends failed.", e);
+		}
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/Header.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Header.java
new file mode 100644
index 0000000..1c0d702
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Header.java
@@ -0,0 +1,280 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleColumnsElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleSectionPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTableCellPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTablePropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.AbstractVariableContainer;
+import org.odftoolkit.simple.common.field.VariableContainer;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+import org.odftoolkit.simple.table.AbstractTableContainer;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class represents header definition in text document. It provides methods
+ * to manipulate header in text document, such as, set text, add table.
+ * 
+ * @since 0.4.5
+ */
+public class Header extends Component implements TableContainer, VariableContainer {
+
+	private StyleHeaderElement headerEle;
+	private TableContainerImpl tableContainerImpl;
+	private VariableContainerImpl variableContainerImpl;
+
+	/**
+	 * Create a header instance by an object of <code>StyleHeaderElement</code>.
+	 * 
+	 * @param element
+	 *            - an object of <code>StyleHeaderElement</code>
+	 */
+	public Header(StyleHeaderElement element) {
+		headerEle = element;
+	}
+
+	/**
+	 * Return an instance of <code>StyleHeaderElement</code> which represents
+	 * this feature.
+	 * 
+	 * @return an instance of <code>StyleHeaderElement</code>
+	 */
+	public StyleHeaderElement getOdfElement() {
+		return headerEle;
+	}
+
+	/**
+	 * Get this header is visible or not.
+	 * 
+	 * @return If this header is visible return <code>true</code>, otherwise
+	 *         return <code>false</code>.
+	 * @since 0.5.5
+	 */
+	public boolean isVisible() {
+		boolean isVisible = headerEle.getStyleDisplayAttribute();
+		return isVisible;
+	}
+
+	/**
+	 * Set this header visible or not.
+	 * 
+	 * @param isVisible
+	 *            If <code>isVisible</code> is true, the header of this document
+	 *            is visible, otherwise is invisible.
+	 * @since 0.5.5
+	 */
+	public void setVisible(boolean isVisible) {
+		if (isVisible) {
+			headerEle.removeAttributeNS(OdfDocumentNamespace.STYLE.getUri(), "display");
+		} else {
+			headerEle.setStyleDisplayAttribute(false);
+		}
+		NodeList nodeList = headerEle.getElementsByTagName(TextPElement.ELEMENT_NAME.getQName());
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			TextPElement textEle = (TextPElement) nodeList.item(i);
+			String stylename = textEle.getStyleName();
+			OdfFileDom dom = (OdfFileDom) headerEle.getOwnerDocument();
+			OdfOfficeAutomaticStyles styles = null;
+			if (dom instanceof OdfContentDom) {
+				styles = ((OdfContentDom) dom).getAutomaticStyles();
+			} else if (dom instanceof OdfStylesDom) {
+				styles = ((OdfStylesDom) dom).getAutomaticStyles();
+			}
+
+			OdfStyle newStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+			OdfStyle style = styles.getStyle(stylename, OdfStyleFamily.Paragraph);
+			if (style != null) {
+				String styleName = newStyle.getStyleNameAttribute();
+				styles.removeChild(newStyle);
+				newStyle = (OdfStyle) style.cloneNode(true);
+				newStyle.setStyleNameAttribute(styleName);
+				styles.appendChild(newStyle);
+			}
+			if (isVisible) {
+				if (newStyle.hasProperty(StyleTextPropertiesElement.Display)) {
+					newStyle.removeProperty(StyleTextPropertiesElement.Display);
+				}
+			} else {
+				newStyle.setProperty(StyleTextPropertiesElement.Display, "none");
+			}
+			textEle.setStyleName(newStyle.getStyleNameAttribute());
+		}
+	}
+
+	public Table addTable() {
+		Table table = getTableContainerImpl().addTable();
+		updateTableToNone(table);
+		return table;
+	}
+
+	public Table addTable(int numRows, int numCols) {
+		Table table = getTableContainerImpl().addTable(numRows, numCols);
+		updateTableToNone(table);
+		return table;
+	}
+
+	public Table getTableByName(String name) {
+		return getTableContainerImpl().getTableByName(name);
+	}
+
+	public java.util.List<Table> getTableList() {
+		return getTableContainerImpl().getTableList();
+	}
+
+	public TableBuilder getTableBuilder() {
+		return getTableContainerImpl().getTableBuilder();
+	}
+
+	public OdfElement getTableContainerElement() {
+		return getTableContainerImpl().getTableContainerElement();
+	}
+
+	public OdfElement getVariableContainerElement() {
+		return getVariableContainerImpl().getVariableContainerElement();
+	}
+
+	public VariableField declareVariable(String name, VariableType type) {
+		return getVariableContainerImpl().declareVariable(name, type);
+	}
+
+	public VariableField getVariableFieldByName(String name) {
+		return getVariableContainerImpl().getVariableFieldByName(name);
+	}
+
+	private TableContainer getTableContainerImpl() {
+		if (tableContainerImpl == null) {
+			tableContainerImpl = new TableContainerImpl();
+		}
+		return tableContainerImpl;
+	}
+
+	private VariableContainer getVariableContainerImpl() {
+		if (variableContainerImpl == null) {
+			variableContainerImpl = new VariableContainerImpl();
+		}
+		return variableContainerImpl;
+	}
+
+	private void updateTableToNone(Table table) {
+		OdfFileDom dom = (OdfFileDom) getTableContainerElement().getOwnerDocument();
+		TableTableElement tableEle = table.getOdfElement();
+		String stylename = tableEle.getStyleName();
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		OdfStyle tableStyle = styles.getStyle(stylename, OdfStyleFamily.Table);
+		tableStyle.setProperty(StyleTablePropertiesElement.Shadow, "none");
+		NodeList cells = tableEle.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table-cell");
+		if (cells != null && cells.getLength() > 0) {
+			OdfStyle cellStyleWithoutBorder = styles.newStyle(OdfStyleFamily.TableCell);
+			cellStyleWithoutBorder.setProperty(StyleTableCellPropertiesElement.Border, "none");
+			cellStyleWithoutBorder.removeProperty(StyleTableCellPropertiesElement.Padding);
+			String cellStyleName = cellStyleWithoutBorder.getStyleNameAttribute();
+			for (int i = 0; i < cells.getLength(); i++) {
+				TableTableCellElement cell = (TableTableCellElement) cells.item(i);
+				cell.setStyleName(cellStyleName);
+			}
+		}
+	}
+
+	private class TableContainerImpl extends AbstractTableContainer {
+
+		public OdfElement getTableContainerElement() {
+			return headerEle;
+		}
+	}
+
+	private class VariableContainerImpl extends AbstractVariableContainer {
+
+		public OdfElement getVariableContainerElement() {
+			try {
+				return headerEle;
+			} catch (Exception e) {
+				Logger.getLogger(Header.class.getName()).log(Level.SEVERE, null, e);
+				return null;
+			}
+		}
+	}
+
+	/**
+	 * Create an empty section and append it at the end of the footer.
+	 * 
+	 * @param name
+	 *            - specify the section name
+	 * @return an instance of the section
+	 * @throws RuntimeException
+	 *             if content DOM could not be initialized
+	 */
+	public Section appendSection(String name) {
+		TextSectionElement newSectionEle = null;
+		try {
+			Document doc = (Document) ((OdfFileDom) headerEle
+					.getOwnerDocument()).getDocument();
+			OdfContentDom contentDocument = doc.getContentDom();
+			OdfOfficeAutomaticStyles styles = contentDocument
+					.getAutomaticStyles();
+			OdfStyle style = styles.newStyle(OdfStyleFamily.Section);
+			StyleSectionPropertiesElement sProperties = style
+					.newStyleSectionPropertiesElement();
+			sProperties.setTextDontBalanceTextColumnsAttribute(false);
+			sProperties.setStyleEditableAttribute(false);
+			StyleColumnsElement columnEle = sProperties
+					.newStyleColumnsElement(1);
+			columnEle.setFoColumnGapAttribute("0in");
+
+			newSectionEle = headerEle.newTextSectionElement("true", name);
+			newSectionEle.setStyleName(style.getStyleNameAttribute());
+			return Section.getInstance(newSectionEle);
+
+		} catch (Exception e) {
+			Logger.getLogger(TextDocument.class.getName()).log(Level.SEVERE,
+					null, e);
+			throw new RuntimeException(name + "Section appends failed.", e);
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/Paragraph.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Paragraph.java
new file mode 100644
index 0000000..f75ab60
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Paragraph.java
@@ -0,0 +1,778 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.net.URI;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement;
+import org.odftoolkit.odfdom.dom.element.dc.DcDateElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawControlElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.draw.AbstractTextboxContainer;
+import org.odftoolkit.simple.draw.Control;
+import org.odftoolkit.simple.draw.ControlContainer;
+import org.odftoolkit.simple.draw.FrameRectangle;
+import org.odftoolkit.simple.draw.Textbox;
+import org.odftoolkit.simple.draw.TextboxContainer;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+/**
+ * This class presents paragraph element in ODF document. It provides methods to
+ * manipulate text content, and other child component under the paragraph.
+ * Headings and body text paragraphs are collectively referred to as paragraph
+ * elements.
+ * 
+ * @since 0.5
+ */
+public class Paragraph extends Component implements TextboxContainer,
+		TextHyperlinkContainer, ControlContainer {
+
+	private TextPElement mParagraphElement;
+	private TextHElement mHeadingElement;
+	private Document mOwnerDocument;
+	private ParagraphStyleHandler mStyleHandler;
+	private TextboxContainerImpl mTextboxContainerImpl;
+	private TextHyperlinkContainerImpl mHyperlinkContainerImpl;
+
+	private Paragraph(TextParagraphElementBase paragraphElement) {
+		if (paragraphElement instanceof TextPElement) {
+			mParagraphElement = (TextPElement) paragraphElement;
+			mHeadingElement = null;
+		}
+		if (paragraphElement instanceof TextHElement) {
+			mHeadingElement = (TextHElement) paragraphElement;
+			mParagraphElement = null;
+		}
+		mOwnerDocument = (Document) ((OdfFileDom) paragraphElement.getOwnerDocument()).getDocument();
+		mStyleHandler = new ParagraphStyleHandler(this);
+	}
+
+	/**
+	 * Gets a paragraph instance by an instance of
+	 * <code>TextParagraphElementBase</code>.
+	 * 
+	 * @param paragraphElement
+	 *            the instance of TextParagraphElementBase.
+	 * @return an instance of paragraph.
+	 */
+	public static Paragraph getInstanceof(TextParagraphElementBase paragraphElement) {
+		if (paragraphElement == null)
+			return null;
+
+		Paragraph para = null;
+		para = (Paragraph) Component.getComponentByElement(paragraphElement);
+		if (para != null)
+			return para;
+
+		para = new Paragraph(paragraphElement);
+		Component.registerComponent(para, paragraphElement);
+		return para;
+	}
+
+	/**
+	 * Create an instance of paragraph
+	 * <p>
+	 * The paragrah will be added at the end of this container.
+	 * 
+	 * @param container
+	 *            the paragraph container that contains this paragraph.
+	 */
+	public static Paragraph newParagraph(ParagraphContainer container) {
+		Paragraph para = null;
+		OdfElement parent = container.getParagraphContainerElement();
+		OdfFileDom ownerDom = (OdfFileDom) parent.getOwnerDocument();
+		TextPElement pEle = ownerDom.newOdfElement(TextPElement.class);
+		parent.appendChild(pEle);
+		para = new Paragraph(pEle);
+		Component.registerComponent(para, pEle);
+
+		return para;
+	}
+
+	/**
+	 * Set the text content of this paragraph.
+	 * <p>
+	 * All the existing text content of this paragraph would be removed, and
+	 * then new text content would be set. The style of the last character will
+	 * be inherited.
+	 * <p>
+	 * The white space characters in the content would be collapsed by default.
+	 * For example, tab character would be replaced with <text:tab>, break line
+	 * character would be replaced with <text:line-break>.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @see #setTextContentNotCollapsed(String content)
+	 */
+	public void setTextContent(String content) {
+		removeTextContentImpl(getOdfElement());
+		Node lastNode = getOdfElement().getLastChild();
+		if (lastNode != null && lastNode.getNodeName() != null
+				&& (lastNode.getNodeName().equals("text:a") || lastNode.getNodeName().equals("text:span"))) {
+			if (content != null && !content.equals(""))
+				appendTextElements((TextAElement) lastNode, content, true);
+		} else {
+			if (content != null && !content.equals(""))
+				appendTextElements(getOdfElement(), content, true);
+		}
+		// remove empty hyperlink
+		removeEmptyHyperlink(getOdfElement());
+	}
+
+	static void removeEmptyHyperlink(OdfElement element) {
+		// remove empty hyperlink
+		NodeList nodeList = element.getChildNodes();
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			Node node;
+			node = nodeList.item(i);
+			if (node.getNodeType() == Node.ELEMENT_NODE) {
+				String nodename = node.getNodeName();
+				if (nodename.equals("text:a") && node.hasChildNodes() == false)
+					element.removeChild(node);
+			}
+		}
+	}
+
+	/**
+	 * Remove the text content of this paragraph. The empty hyperlink element
+	 * will be removed.
+	 * <p>
+	 * The other child elements except text content will not be removed.
+	 * 
+	 */
+	public void removeTextContent() {
+		removeTextContentImpl(getOdfElement());
+		removeEmptyHyperlink(getOdfElement());
+	}
+
+	static void removeTextContentImpl(OdfElement ownerElement) {
+		NodeList nodeList = ownerElement.getChildNodes();
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			Node node;
+			node = nodeList.item(i);
+			if (node.getNodeType() == Node.TEXT_NODE) {
+				ownerElement.removeChild(node);
+				// element removed need reset index.
+				i--;
+			} else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				String nodename = node.getNodeName();
+				if (nodename.equals("text:s") || nodename.equals("text:tab") || nodename.equals("text:line-break")) {
+					ownerElement.removeChild(node);
+					// element removed need reset index.
+					i--;
+				} else if (nodename.equals("text:a"))
+					removeTextContentImpl((OdfElement) node);
+			}
+		}
+	}
+
+	/**
+	 * Return the text content of this paragraph.
+	 * <p>
+	 * The other child elements except text content will not be returned.
+	 * 
+	 * @return - the text content of this paragraph
+	 */
+	public String getTextContent() {
+		return getTextContent(getOdfElement());
+	}
+
+	static String getTextContent(OdfElement ownerEle) {
+		StringBuilder buffer = new StringBuilder();
+		NodeList nodeList = ownerEle.getChildNodes();
+		int i;
+		for (i = 0; i < nodeList.getLength(); i++) {
+			Node node;
+			node = nodeList.item(i);
+			if (node.getNodeType() == Node.TEXT_NODE)
+				buffer.append(node.getNodeValue());
+			else if (node.getNodeType() == Node.ELEMENT_NODE) {
+				if (node instanceof TextSpanElement) {
+					buffer.append(((TextSpanElement) node).getTextContent());
+				}
+				else if (node.getNodeName().equals("text:s")) {
+					Integer count = ((TextSElement) node).getTextCAttribute();
+					for (int j = 0; j < (count != null ? count : 0); j++)
+						buffer.append(' ');
+				} else if (node.getNodeName().equals("text:tab"))
+					buffer.append('\t');
+				else if (node.getNodeName().equals("text:line-break")) {
+					String lineseperator = System.getProperty("line.separator");
+					buffer.append(lineseperator);
+				} else if (node.getNodeName().equals("text:a"))
+					buffer.append(TextHyperlink.getInstanceof((TextAElement) node).getTextContent());
+			}
+		}
+		return buffer.toString();
+	}
+
+	/**
+	 * Set the text content of this paragraph.
+	 * <p>
+	 * All the existing text content of this paragraph would be removed, and
+	 * then new text content would be set.
+	 * <p>
+	 * The white space characters in the content would not be collapsed.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @see #setTextContent(String content)
+	 */
+	public void setTextContentNotCollapsed(String content) {
+		removeTextContent();
+		if (content != null && !content.equals(""))
+			appendTextElements(getOdfElement(), content, false);
+	}
+
+	/**
+	 * Append the text content at the end of this paragraph. The appended text
+	 * would follow the style of the last character.
+	 * <p>
+	 * The white space characters in the content would be collapsed by default.
+	 * For example, tab character would be replaced with <text:tab>, break line
+	 * character would be replaced with <text:line-break>.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @see #appendTextContentNotCollapsed(String content)
+	 */
+	public void appendTextContent(String content) {
+		appendTextContent(content, true);
+	}
+
+	/**
+	 * Append the text content at the end of this paragraph. The appended text
+	 * would follow the style of the last character if the second parameter is
+	 * set to true; Or else, the appended text would follow the default style of
+	 * this paragraph.
+	 * <p>
+	 * The white space characters in the content would be collapsed by default.
+	 * For example, tab character would be replaced with <text:tab>, break line
+	 * character would be replaced with <text:line-break>.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @param isStyleInherited
+	 *            - whether the style would be inherited by the appended text
+	 * @see #appendTextContentNotCollapsed(String content)
+	 */
+	public void appendTextContent(String content, boolean isStyleInherited) {
+		boolean canInherited = false;
+		Node lastNode = getOdfElement().getLastChild();
+		if (lastNode != null && lastNode.getNodeName() != null
+				&& (lastNode.getNodeName().equals("text:a") || lastNode.getNodeName().equals("text:span")))
+			canInherited = true;
+
+		if (isStyleInherited && canInherited) {
+			if (content != null && !content.equals(""))
+				appendTextElements((OdfElement) lastNode, content, true);
+		} else {
+			if (content != null && !content.equals(""))
+				appendTextElements(getOdfElement(), content, true);
+		}
+	}
+
+	/**
+	 * Append the text content at the end of this paragraph. The appended text
+	 * would follow the style of the last character.
+	 * <p>
+	 * The white space characters in the content would not be collapsed.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @see #appendTextContent(String content)
+	 */
+	public void appendTextContentNotCollapsed(String content) {
+		Node lastNode = getOdfElement().getLastChild();
+		boolean canInherited = false;
+		if (lastNode != null && lastNode.getNodeName() != null
+				&& (lastNode.getNodeName().equals("text:a") || lastNode.getNodeName().equals("text:span")))
+			canInherited = true;
+
+		if (canInherited) {
+			if (content != null && !content.equals(""))
+				appendTextElements((OdfElement) lastNode, content, false);
+		} else {
+			if (content != null && !content.equals(""))
+				appendTextElements(getOdfElement(), content, false);
+		}
+	}
+
+	/**
+	 * Set the style name of this paragraph
+	 * 
+	 * @param styleName
+	 *            - the style name
+	 */
+	public void setStyleName(String styleName) {
+		mStyleHandler.getStyleElementForWrite().setStyleNameAttribute(styleName);
+	}
+
+	/**
+	 * Get the style name of this paragraph
+	 * 
+	 * @return - the style name
+	 */
+	public String getStyleName() {
+		OdfStyleBase style = getStyleHandler().getStyleElementForRead();
+		if (style == null) {
+			return "";
+		}
+		if (style instanceof OdfStyle)
+			return ((OdfStyle) style).getStyleNameAttribute();
+		else
+			return "";
+	}
+
+	/**
+	 * Get the owner document of this paragraph.
+	 * 
+	 * @return the document who owns this paragraph.
+	 */
+	public Document getOwnerDocument() {
+		return mOwnerDocument;
+	}
+
+	/**
+	 * Remove this paragraph from its container.
+	 * 
+	 * @since 0.6.5
+	 */
+	public void remove(){
+		Component.unregisterComponent(getOdfElement());
+		getOdfElement().getParentNode().removeChild(getOdfElement());
+		mParagraphElement=null;
+		mHeadingElement=null;
+		mOwnerDocument=null;
+		mStyleHandler=null;
+		mTextboxContainerImpl=null;
+		mHyperlinkContainerImpl=null;
+	}
+	
+	/**
+	 * Get the style handler of this paragraph.
+	 * <p>
+	 * The style handler is an instance of ParagraphStyleHandler
+	 * 
+	 * @return an instance of ParagraphStyleHandler
+	 * @see ParagraphStyleHandler
+	 */
+	public ParagraphStyleHandler getStyleHandler() {
+		if (mStyleHandler != null)
+			return mStyleHandler;
+		else {
+			mStyleHandler = new ParagraphStyleHandler(this);
+			return mStyleHandler;
+		}
+	}
+
+	/**
+	 * Return the <code>TextParagraphElementBase</code> of this paragraph.
+	 * Headings and body text paragraphs are collectively referred to as
+	 * paragraph elements, so the <code>TextParagraphElementBase</code> can be
+	 * <code>TextHElement</code> element or <code>TextPElement</code> element.
+	 * 
+	 * @return the <code>TextParagraphElementBase</code> of this paragraph.
+	 */
+	@Override
+	public TextParagraphElementBase getOdfElement() {
+		if (isHeading()) {
+			return mHeadingElement;
+		} else {
+			return mParagraphElement;
+		}
+	}
+
+	/**
+	 * Creates a comment in the front of this paragraph.
+	 * 
+	 * @param content
+	 *            the content of this comment.
+	 * @param creator
+	 *            the creator of this comment, if <code>creator</code> is null,
+	 *            the value of <code>System.getProperty("user.name")</code> will
+	 *            be used.
+	 * @since 0.6.5
+	 */
+	public void addComment(String content, String creator) {
+		// create annotation element.
+		OdfFileDom dom = (OdfFileDom) getOdfElement().getOwnerDocument();
+		OfficeAnnotationElement annotationElement = (OfficeAnnotationElement) OdfXMLFactory.newOdfElement(dom, OdfName
+				.newName(OdfDocumentNamespace.OFFICE, "annotation"));
+		getOdfElement().insertBefore(annotationElement, getOdfElement().getFirstChild());
+		// set creator
+		DcCreatorElement dcCreatorElement = annotationElement.newDcCreatorElement();
+		if (creator == null) {
+			creator = System.getProperty("user.name");
+		}
+		dcCreatorElement.setTextContent(creator);
+		// set date
+		String dcDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(new Date());
+		DcDateElement dcDateElement = annotationElement.newDcDateElement();
+		dcDateElement.setTextContent(dcDate);
+		TextPElement notePElement = annotationElement.newTextPElement();
+		TextSpanElement noteSpanElement = notePElement.newTextSpanElement();
+		// set comment style
+		OdfOfficeAutomaticStyles styles = null;
+		if (dom instanceof OdfContentDom) {
+			styles = ((OdfContentDom) dom).getAutomaticStyles();
+		} else if (dom instanceof OdfStylesDom) {
+			styles = ((OdfStylesDom) dom).getAutomaticStyles();
+		}
+		OdfStyle textStyle = styles.newStyle(OdfStyleFamily.Text);
+		StyleTextPropertiesElement styleTextPropertiesElement = textStyle.newStyleTextPropertiesElement(null);
+		styleTextPropertiesElement.setStyleFontNameAttribute("Tahoma");
+		styleTextPropertiesElement.setFoFontSizeAttribute("10pt");
+		styleTextPropertiesElement.setStyleFontNameAsianAttribute("Lucida Sans Unicode");
+		styleTextPropertiesElement.setStyleFontSizeAsianAttribute("12pt");
+		noteSpanElement.setStyleName(textStyle.getStyleNameAttribute());
+		// set comment content
+		noteSpanElement.setTextContent(content);
+	}
+
+	/**
+	 * Returns the paragraph type, heading or body text paragraph.
+	 * 
+	 * @return the paragraph type, if this paragraph is heading, returns
+	 *         <code>true</code>, otherwise return <code>false</code>.
+	 * 
+	 * @since 0.6.5
+	 */
+	public boolean isHeading() {
+		if (mHeadingElement != null) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Returns outline level of this paragraph.
+	 * 
+	 * @return outline level, if this paragraph is a body text paragraph, 0 will
+	 *         be returned.
+	 * 
+	 * @since 0.6.5
+	 */
+	public int getHeadingLevel() {
+		if (isHeading()) {
+			return mHeadingElement.getTextOutlineLevelAttribute();
+		}
+		return 0;
+	}
+
+	/**
+	 * Sets the paragraph type, heading or body text paragraph.
+	 * 
+	 * @param isHeading
+	 *            if <code>true</code>, this paragraph would be formatted as
+	 *            heading, otherwise as a body text paragraph.
+	 * @param level
+	 *            the heading outline level of this paragraph, if
+	 *            <code>isHeading</code> is <code>true</code>.
+	 * 
+	 * @since 0.6.5
+	 */
+	public void applyHeading(boolean isHeading, int level) {
+		if (isHeading) {
+			if (!isHeading()) {
+				// create new heading element, clone children nodes.
+				OdfFileDom ownerDocument = (OdfFileDom) getOdfElement().getOwnerDocument();
+				mHeadingElement = ownerDocument.newOdfElement(TextHElement.class);
+				Node firstChild = mParagraphElement.getFirstChild();
+				while (firstChild != null) {
+					// mHeadingElement.appendChild(firstChild.cloneNode(true));
+					// firstChild = firstChild.getNextSibling();
+					Node thisChild = firstChild;
+					firstChild = firstChild.getNextSibling();
+					mParagraphElement.removeChild(thisChild);
+					mHeadingElement.appendChild(thisChild);
+				}
+				// update style
+				mHeadingElement.setStyleName(mParagraphElement.getStyleName());
+				// unregister component
+				Component.unregisterComponent(mParagraphElement);
+				// replace paragraph with heading
+				OdfElement parentOdfElement = (OdfElement) mParagraphElement.getParentNode();
+				parentOdfElement.replaceChild(mHeadingElement, mParagraphElement);
+				mParagraphElement = null;
+				// re-register component.
+				Component.registerComponent(this, mHeadingElement);
+			}
+			// update outline level.
+			mHeadingElement.setTextOutlineLevelAttribute(level);
+		} else {
+			if (isHeading()) {
+				// need create new paragraph element and clone content.
+				OdfFileDom ownerDocument = (OdfFileDom) getOdfElement().getOwnerDocument();
+				mParagraphElement = ownerDocument.newOdfElement(TextPElement.class);
+				Node firstChild = mHeadingElement.getFirstChild();
+				while (firstChild != null) {
+					Node thisChild = firstChild;
+					firstChild = firstChild.getNextSibling();
+					mHeadingElement.removeChild(thisChild);
+					mParagraphElement.appendChild(thisChild);
+				}
+				// update style
+				mParagraphElement.setStyleName(mHeadingElement.getStyleName());
+				// unregister component
+				Component.unregisterComponent(mHeadingElement);
+				// replace heading with paragraph
+				OdfElement parentOdfElement = (OdfElement) mHeadingElement.getParentNode();
+				parentOdfElement.replaceChild(mParagraphElement, mHeadingElement);
+				mHeadingElement = null;
+				// re-register component.
+				Component.registerComponent(this, mParagraphElement);
+			}
+		}
+	}
+
+	/**
+	 * Formats the paragraph as heading. Its outline level is 1.
+	 * 
+	 * @since 0.6.5
+	 */
+	public void applyHeading() {
+		applyHeading(true, 1);
+	}
+
+	/**
+	 * Returns the font definition for this paragraph.
+	 * 
+	 * @return font if there is no style definition for this paragraph,
+	 *         <code>null</code> will be returned.
+	 * 
+	 * @since 0.6.5
+	 */
+	public Font getFont() {
+		return getStyleHandler().getFont(Document.ScriptType.WESTERN);
+	}
+
+	/**
+	 * Sets font style for this paragraph.
+	 * 
+	 * @param font
+	 *            the font definition of this paragraph
+	 * 
+	 * @since 0.6.5
+	 */
+	public void setFont(Font font) {
+		getStyleHandler().setFont(font);
+	}
+
+	/**
+	 * Return the horizontal alignment setting of this paragraph.
+	 * <p>
+	 * Null will returned if there is no explicit style definition for this
+	 * paragraph.
+	 * <p>
+	 * Default value will be returned if explicit style definition is found but
+	 * no horizontal alignment is set.
+	 * 
+	 * @return the horizontal alignment setting.
+	 * @since 0.6.5
+	 */
+	public HorizontalAlignmentType getHorizontalAlignment() {
+		return getStyleHandler().getHorizontalAlignment();
+	}
+
+	/**
+	 * Set the horizontal alignment setting of this paragraph. If the alignment
+	 * is set as Default, the explicit horizontal alignment setting is removed.
+	 * 
+	 * @param alignType
+	 *            the horizontal alignment setting.
+	 * @since 0.6.5
+	 */
+	public void setHorizontalAlignment(HorizontalAlignmentType alignType) {
+		getStyleHandler().setHorizontalAlignment(alignType);
+	}
+
+	public Textbox addTextbox() {
+		return getTextboxContainerImpl().addTextbox();
+	}
+
+	public Iterator<Textbox> getTextboxIterator() {
+		return getTextboxContainerImpl().getTextboxIterator();
+	}
+
+	public boolean removeTextbox(Textbox box) {
+		return getTextboxContainerImpl().removeTextbox(box);
+	}
+
+	public OdfElement getFrameContainerElement() {
+		return getTextboxContainerImpl().getFrameContainerElement();
+	}
+
+	public Textbox addTextbox(FrameRectangle position) {
+		return getTextboxContainerImpl().addTextbox(position);
+	}
+
+	public Textbox getTextboxByName(String name) {
+		return getTextboxContainerImpl().getTextboxByName(name);
+	}
+
+	public List<Textbox> getTextboxByUsage(PresentationDocument.PresentationClass usage) {
+		throw new UnsupportedOperationException("this method is not supported by paragraph.");
+	}
+
+	private class TextboxContainerImpl extends AbstractTextboxContainer {
+		public OdfElement getFrameContainerElement() {
+			return getOdfElement();
+		}
+	}
+
+	private TextboxContainerImpl getTextboxContainerImpl() {
+		if (mTextboxContainerImpl == null)
+			mTextboxContainerImpl = new TextboxContainerImpl();
+		return mTextboxContainerImpl;
+	}
+
+	static void appendTextElements(OdfElement ownerElement, String content, boolean isWhitespaceCollapsed) {
+		OdfFileDom ownerDocument = (OdfFileDom) ownerElement.getOwnerDocument();
+		if (isWhitespaceCollapsed) {
+			int i = 0, length = content.length();
+			String str = "";
+			while (i < length) {
+				char ch = content.charAt(i);
+				if (ch == ' ') {
+					int j = 1;
+					i++;
+					while ((i < length) && (content.charAt(i) == ' ')) {
+						j++;
+						i++;
+					}
+					if (j == 1) {
+						str += ' ';
+					} else {
+						str += ' ';
+						Text textnode = ownerDocument.createTextNode(str);
+						ownerElement.appendChild(textnode);
+						str = "";
+						TextSElement spaceElement = ownerDocument.newOdfElement(TextSElement.class);
+						ownerElement.appendChild(spaceElement);
+						spaceElement.setTextCAttribute(j - 1);
+					}
+				} else if (ch == '\n') {
+					if (str.length() > 0) {
+						Text textnode = ownerDocument.createTextNode(str);
+						ownerElement.appendChild(textnode);
+						str = "";
+					}
+					TextLineBreakElement lineBreakElement = ownerDocument.newOdfElement(TextLineBreakElement.class);
+					ownerElement.appendChild(lineBreakElement);
+					i++;
+				} else if (ch == '\t') {
+					if (str.length() > 0) {
+						Text textnode = ownerElement.getOwnerDocument().createTextNode(str);
+						ownerElement.appendChild(textnode);
+						str = "";
+					}
+					TextTabElement tabElement = ownerDocument.newOdfElement(TextTabElement.class);
+					ownerElement.appendChild(tabElement);
+					i++;
+				} else if (ch == '\r') {
+					i++;
+				} else {
+					str += ch;
+					i++;
+				}
+			}
+			if (str.length() > 0) {
+				Text textnode = ownerDocument.createTextNode(str);
+				ownerElement.appendChild(textnode);
+			}
+		} else {
+			Text textnode = ownerDocument.createTextNode(content);
+			ownerElement.appendChild(textnode);
+		}
+	}
+
+	/************ Hyperlink support ************/
+	public TextHyperlink applyHyperlink(URI linkto) {
+		return getTextHyperlinkContainerImpl().applyHyperlink(linkto);
+	}
+
+	public Iterator<TextHyperlink> getHyperlinkIterator() {
+		return getTextHyperlinkContainerImpl().getHyperlinkIterator();
+	}
+
+	public void removeHyperlinks() {
+		getTextHyperlinkContainerImpl().removeHyperlinks();
+	}
+
+	public TextHyperlink appendHyperlink(String text, URI linkto) {
+		return getTextHyperlinkContainerImpl().appendHyperlink(text, linkto);
+	}
+
+	private class TextHyperlinkContainerImpl extends AbstractTextHyperlinkContainer {
+		public TextHyperlinkContainerImpl(OdfElement parent) {
+			super(parent);
+		}
+	}
+
+	private TextHyperlinkContainerImpl getTextHyperlinkContainerImpl() {
+		if (mHyperlinkContainerImpl == null)
+			mHyperlinkContainerImpl = new TextHyperlinkContainerImpl(getOdfElement());
+		return mHyperlinkContainerImpl;
+	}
+	/************ End of Hyperlink support ************/
+
+//	@Override
+	public Control createDrawControl() {
+		return Control.newDrawControl(this);
+	}
+
+//	@Override
+	public OdfElement getDrawControlContainerElement() {
+		return this.getOdfElement();
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/ParagraphContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/ParagraphContainer.java
new file mode 100644
index 0000000..950e495
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/ParagraphContainer.java
@@ -0,0 +1,100 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+
+package org.odftoolkit.simple.text;
+
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+
+/**
+ * ParagraphContainer is a container which maintains paragraph(s) as element(s).
+ * Paragraph(s) can be added and removed in this container.
+ * 
+ * @see Paragraph
+ * @see org.odftoolkit.simple.TextDocument
+ * 
+ * @since 0.5
+ */
+
+public interface ParagraphContainer {
+	/**
+	 * Add paragraph at the end of the container with specified text content.
+	 * 
+	 * @param textContent
+	 *            - the text content
+	 * @return an instance of paragraph
+	 */
+	public Paragraph addParagraph(String textContent);
+
+	/**
+	 * Remove paragraph from the container
+	 * 
+	 * @param para
+	 *            - the instance of paragraph
+	 * @return true if the paragraph is removed successfully, false if errors
+	 *         happen.
+	 */
+	public boolean removeParagraph(Paragraph para);
+
+	/**
+	 * Get the ODF element which can have <text:p> as child element directly.
+	 * 
+	 * @return - an ODF element which can have paragraph as child
+	 */
+	public OdfElement getParagraphContainerElement();
+
+	/**
+	 * Return an Iterator of the paragraph in this container.
+	 * 
+	 * @return an Iterator of the paragraph in this container
+	 */
+	public Iterator<Paragraph> getParagraphIterator();
+
+	/**
+	 * Return a paragraph with a given index.
+	 * <p>
+	 * An index of zero represents the first paragraph.
+	 * <p>
+	 * If empty paragraph is skipped, the empty paragraph won't be counted.
+	 * 
+	 * @param index
+	 *            - the index started from 0.
+	 * @param isEmptyParagraphSkipped
+	 *            - whether the empty paragraph is skipped or not
+	 * @return the paragraph with a given index
+	 */
+	public Paragraph getParagraphByIndex(int index, boolean isEmptyParagraphSkipped);
+
+	/**
+	 * Return a paragraph with a given index. The index is in reverse order.
+	 * <p>
+	 * An index of zero represents the last paragraph.
+	 * <p>
+	 * If empty paragraph is skipped, the empty paragraph won't be counted.
+	 * 
+	 * @param reverseIndex
+	 *            - the index started from 0 in reverse order.
+	 * @param isEmptyParagraphSkipped
+	 *            - whether the empty paragraph is skipped or not
+	 * @return the paragraph with a given index
+	 */
+	public Paragraph getParagraphByReverseIndex(int reverseIndex, boolean isEmptyParagraphSkipped);
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/ParagraphStyleHandler.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/ParagraphStyleHandler.java
new file mode 100644
index 0000000..1a4b504
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/ParagraphStyleHandler.java
@@ -0,0 +1,411 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.Locale;
+
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfDefaultStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.Document.ScriptType;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.ParagraphProperties;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.TextProperties;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.TextLinePosition;
+
+/**
+ * This class provides functions to handle the style of a paragraph.
+ * 
+ * <p>
+ * This class provides functions to handle the font settings, text alignment
+ * settings and so on.
+ * 
+ * @since 0.6.5
+ */
+public class ParagraphStyleHandler extends DefaultStyleHandler {
+
+	Paragraph mParagraph;
+	TextParagraphElementBase mParaElement;
+
+	TextProperties mTextProperties;
+	TextProperties mWritableTextProperties;
+
+	ParagraphProperties mParagraphProperties;
+	ParagraphProperties mWritableParagraphProperties;
+
+	ParagraphStyleHandler(Paragraph aParagraph) {
+		super(aParagraph.getOdfElement());
+		mParagraph = aParagraph;
+		mParaElement = aParagraph.getOdfElement();
+	}
+
+	/**
+	 * Return the country information for a specific script type
+	 * <p>
+	 * The country information in its parent style and default style will be
+	 * taken into considered.
+	 * <p>
+	 * Null will be returned if there is no country information for this script
+	 * type.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the country information for a specific script type
+	 */
+	public String getCountry(ScriptType type) {
+		String country = null;
+		TextProperties textProperties = getTextPropertiesForRead();
+		if (textProperties != null) {
+			country = textProperties.getCountry(type);
+		}
+		if (country != null && country.length() > 0) {
+			return country;
+		}
+
+		boolean isDefault = isUseDefaultStyle;
+		OdfStyleBase parentStyle = null;
+		if (!isDefault) {
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		}
+		while ((!isDefault) && (parentStyle != null)) {
+			TextProperties parentStyleSetting = TextProperties.getTextProperties(parentStyle);
+			country = parentStyleSetting.getCountry(type);
+			if (country != null && country.length() > 0) {
+				return country;
+			}
+			if (parentStyle instanceof OdfDefaultStyle) {
+				isDefault = true;
+			} else {
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+			}
+		}
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getParagraphDefaultStyle();
+			TextProperties defaultStyleSetting = TextProperties.getTextProperties(defaultStyle);
+			country = defaultStyleSetting.getCountry(type);
+		}
+		return country;
+	}
+
+	/**
+	 * Return the font definition for a specific script type.
+	 * <p>
+	 * The font definition in its parent style and default style will be taken
+	 * into considered.
+	 * <p>
+	 * A default font definition will be returned if there is no font definition
+	 * for this script type at all.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the font definition for a specific script type
+	 */
+	public Font getFont(ScriptType type) {
+		// A font includes font family name, font style, font color, font size
+		Font font = null;
+		TextProperties textProperties = getTextPropertiesForRead();
+		if (textProperties != null) {
+			font = textProperties.getFont(type);
+		} else {
+			font = new Font(null, null, 0, (StyleTypeDefinitions.TextLinePosition) null);
+		}
+
+		if (font != null && font.getFamilyName() != null && font.getColor() != null && font.getSize() != 0
+				&& font.getFontStyle() != null && font.getTextLinePosition() != null) {
+			return font;
+		}
+
+		boolean isDefault = isUseDefaultStyle;
+		OdfStyleBase parentStyle = null;
+		if (!isDefault) {
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		}
+		while ((!isDefault) && (parentStyle != null)) {
+			TextProperties parentStyleSetting = TextProperties.getTextProperties(parentStyle);
+			Font tempFont = parentStyleSetting.getFont(type);
+			mergeFont(font, tempFont);
+			if (font.getFamilyName() != null && font.getColor() != null && font.getSize() > 0
+					&& font.getFontStyle() != null && font.getTextLinePosition() != null) {
+				return font;
+			}
+			// continue to get parent properties
+			if (parentStyle instanceof OdfDefaultStyle) {
+				isDefault = true;
+			} else {
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+			}
+		}
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getParagraphDefaultStyle();
+			if (defaultStyle == null) {
+				defaultStyle = getParagraphDefaultStyle();
+			}
+			if (defaultStyle != null) {
+				TextProperties defaultStyleSetting = TextProperties.getTextProperties(defaultStyle);
+				Font tempFont = defaultStyleSetting.getFont(type);
+				mergeFont(font, tempFont);
+			}
+		}
+		if (font.getColor() == null) {
+			font.setColor(Color.BLACK);
+		}
+		if (font.getFontStyle() == null) {
+			font.setFontStyle(FontStyle.REGULAR);
+		}
+		if (font.getTextLinePosition() == null) {
+			font.setTextLinePosition(TextLinePosition.REGULAR);
+		}
+		return font;
+	}
+
+	/**
+	 * Return the language information for a specific script type
+	 * <p>
+	 * The language definition in its parent style and default style will be
+	 * taken into considered.
+	 * <p>
+	 * Null will be returned if there is no language information for this script
+	 * type at all.
+	 * 
+	 * @param type
+	 *            - script type
+	 * @return the language information for a specific script type
+	 */
+	public String getLanguage(ScriptType type) {
+		String language = null;
+		TextProperties textProperties = getTextPropertiesForRead();
+		if (textProperties != null) {
+			language = textProperties.getLanguage(type);
+		}
+		if (language != null && language.length() > 0) {
+			return language;
+		}
+		boolean isDefault = isUseDefaultStyle;
+		OdfStyleBase parentStyle = null;
+		if (!isDefault) {
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		}
+		while ((!isDefault) && (parentStyle != null)) {
+			TextProperties parentStyleSetting = TextProperties.getTextProperties(parentStyle);
+			language = parentStyleSetting.getLanguage(type);
+			if (language != null && language.length() > 0) {
+				return language;
+			}
+			if (parentStyle instanceof OdfDefaultStyle) {
+				isDefault = true;
+			} else {
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+			}
+		}
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getParagraphDefaultStyle();
+			TextProperties defaultStyleSetting = TextProperties.getTextProperties(defaultStyle);
+			language = defaultStyleSetting.getLanguage(type);
+		}
+		return language;
+	}
+
+	/**
+	 * Set the country information for a specific script type
+	 * <p>
+	 * The consistency between country and script type is not verified.
+	 * <p>
+	 * If the parameter <code>country</code> is null, the country information
+	 * for this script type will be removed.
+	 * 
+	 * @param country
+	 *            - the country information
+	 * @param type
+	 *            - script type
+	 * @see TextProperties#setCountry(String, Document.ScriptType)
+	 * @see org.odftoolkit.simple.Document.ScriptType
+	 */
+	public void setCountry(String country, ScriptType type) {
+		getTextPropertiesForWrite().setCountry(country, type);
+	}
+
+	/**
+	 * Set the font definition. The locale information in font definition will
+	 * be used to justify the script type.
+	 * <p>
+	 * If the parameter <code>font</code> is null, nothing will be happened.
+	 * 
+	 * @param font
+	 *            font definition
+	 */
+	public void setFont(Font font) {
+		getTextPropertiesForWrite().setFont(font);
+	}
+
+	/**
+	 * Set the font definition. The locale information in font definition will
+	 * be used to justify the script type.
+	 * <p>
+	 * If the parameter <code>font</code> is null, nothing will be happened.
+	 * 
+	 * @param font
+	 *            font definition
+	 */
+	public void setFont(Font font, Locale language) {
+		getTextPropertiesForWrite().setFont(font, language);
+	}
+
+	/**
+	 * Set the language information for a specific script type
+	 * <p>
+	 * If the parameter <code>language</code> is null, the language information
+	 * for this script type will be removed.
+	 * 
+	 * @param language
+	 *            - the language information
+	 * @param type
+	 *            - script type
+	 */
+	public void setLanguage(String language, ScriptType type) {
+		getTextPropertiesForWrite().setLanguage(language, type);
+	}
+
+	/**
+	 * Set the horizontal alignment.
+	 * <p>
+	 * If the parameter <code>alignType</code> is null, the horizontal alignment
+	 * setting will be removed.
+	 * 
+	 * @param alignType
+	 *            the horizontal alignment
+	 */
+	public void setHorizontalAlignment(HorizontalAlignmentType alignType) {
+		getParagraphPropertiesForWrite().setHorizontalAlignment(alignType);
+	}
+
+	/**
+	 * Return the horizontal alignment.
+	 * <p>
+	 * The horizontal alignment in its parent style and default style will be
+	 * taken into considered.
+	 * <p>
+	 * HorizontalAlignmentType.DEFAULT will be returned if there is no
+	 * horizontal alignment setting.
+	 * 
+	 * @return the horizontal alignment; null if there is no horizontal
+	 *         alignment setting.
+	 */
+	public HorizontalAlignmentType getHorizontalAlignment() {
+		HorizontalAlignmentType tempAlign = null;
+		ParagraphProperties properties = getParagraphPropertiesForRead();
+		if (properties != null) {
+			tempAlign = properties.getHorizontalAlignment();
+		}
+		if (tempAlign != null) {
+			return tempAlign;
+		}
+		boolean isDefault = isUseDefaultStyle;
+		// find in parent style definition
+		OdfStyleBase parentStyle = null;
+		if (!isDefault) {
+			parentStyle = getParentStyle((OdfStyle) getCurrentUsedStyle());
+		}
+		while ((!isDefault) && (parentStyle != null)) {
+			ParagraphProperties parentStyleSetting = ParagraphProperties.getParagraphProperties(parentStyle);
+			tempAlign = parentStyleSetting.getHorizontalAlignment();
+			if (tempAlign != null) {
+				return tempAlign;
+			}
+			if (parentStyle instanceof OdfDefaultStyle) {
+				isDefault = true;
+			} else {
+				parentStyle = getParentStyle((OdfStyle) parentStyle);
+			}
+		}
+		// find in default style definition
+		if (!isDefault) {
+			OdfDefaultStyle defaultStyle = getParagraphDefaultStyle();
+			ParagraphProperties defaultStyleSetting = ParagraphProperties.getParagraphProperties(defaultStyle);
+			tempAlign = defaultStyleSetting.getHorizontalAlignment();
+		}
+		// use default
+		if (tempAlign == null) {
+			return HorizontalAlignmentType.DEFAULT;
+		}
+		return tempAlign;
+	}
+
+	private OdfDefaultStyle getParagraphDefaultStyle() {
+		return mDocument.getDocumentStyles().getDefaultStyle(OdfStyleFamily.Paragraph);
+	}
+
+	private OdfStyleBase getParentStyle(OdfStyle aStyle) {
+		String parentName = aStyle.getStyleParentStyleNameAttribute();
+		if (parentName == null || parentName.length() == 0) {
+			return null;
+		}
+		if (parentName.equals("Default")) {
+			return getParagraphDefaultStyle();
+		} else {
+			return getStyleByName(parentName);
+		}
+	}
+
+	private OdfStyle getStyleByName(String name) {
+		OdfStyle styleElement = null;
+		OdfOfficeAutomaticStyles styles = mParaElement.getAutomaticStyles();
+		styleElement = styles.getStyle(name, OdfStyleFamily.Paragraph);
+		if (styleElement == null) {
+			styleElement = mDocument.getDocumentStyles().getStyle(name, OdfStyleFamily.Paragraph);
+		}
+		return styleElement;
+	}
+
+	private OdfStyleBase getCurrentUsedStyle() {
+		if (mWritableStyleElement != null) {
+			return mWritableStyleElement;
+		} else {
+			return mStyleElement;
+		}
+	}
+
+	private void mergeFont(Font target, Font source) {
+		// merge font
+		if (target.getFamilyName() == null && source.getFamilyName() != null) {
+			target.setFamilyName(source.getFamilyName());
+		}
+		if (target.getColor() == null && source.getColor() != null) {
+			target.setColor(source.getColor());
+		}
+		if (target.getSize() == 0 && source.getSize() > 0) {
+			target.setSize(source.getSize());
+		}
+		if (target.getFontStyle() == null && source.getFontStyle() != null) {
+			target.setFontStyle(source.getFontStyle());
+		}
+		if (target.getTextLinePosition() == null && source.getTextLinePosition() != null) {
+			target.setTextLinePosition(source.getTextLinePosition());
+		}
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/ProtectionKeyDigestProvider.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/ProtectionKeyDigestProvider.java
new file mode 100644
index 0000000..94c6673
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/ProtectionKeyDigestProvider.java
@@ -0,0 +1,35 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.text;

+

+public interface ProtectionKeyDigestProvider {

+

+	/**

+	 * Generate a digest value of the input key

+	 * 

+	 * @param key

+	 *            -an key required to be digest

+	 * @return the digest result

+	 */

+	public String generateHashKey(String key);

+

+	public String getProtectionKeyDigestAlgorithm();

+

+}

diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/Section.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Section.java
new file mode 100644
index 0000000..0e553b4
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Section.java
@@ -0,0 +1,454 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.text.TextSectionElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.table.AbstractTableContainer;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.odftoolkit.simple.text.list.AbstractListContainer;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+
+import sun.misc.BASE64Encoder;
+
+/**
+ * This class represents section definition in text document. It provides
+ * methods to manipulate section in text document, such as getting/setting
+ * section name, moving section and so on.
+ * 
+ * @since 0.4
+ */
+public class Section extends Component implements ParagraphContainer,
+		TableContainer, ListContainer {
+
+	private ParagraphContainerImpl paragraphContainerImpl;
+	private TableContainerImpl tableContainerImpl;
+	private ListContainerImpl listContainerImpl;
+
+	private TextSectionElement mSectionElement;
+	private Document mDocument;
+	private ProtectionKeyDigestProvider protectionKeyDigestProvider;
+
+	private Section(Document doc, TextSectionElement element) {
+		mSectionElement = element;
+		mDocument = doc;
+	}
+
+	/**
+	 * Get a section instance by an object of <code>TextSectionElement</code>.
+	 * 
+	 * @param element
+	 *            - an object of <code>TextSectionElement</code>
+	 * @return an instance of <code>Section</code> that can represent
+	 *         <code>TextSectionElement</code>
+	 */
+	public static Section getInstance(TextSectionElement element) {
+		return new Section((Document) ((OdfFileDom) (element.getOwnerDocument())).getDocument(), element);
+	}
+
+	/**
+	 * Return the ODF document which this section belongs to.
+	 * 
+	 * @return - the ODF document which this section belongs to.
+	 */
+	public Document getOwnerDocument() {
+		return mDocument;
+	}
+
+	/**
+	 * Return the name of this section
+	 * 
+	 * @return - the name of this section
+	 */
+	public String getName() {
+		return mSectionElement.getTextNameAttribute();
+	}
+
+	/**
+	 * Set the value of this section name
+	 * 
+	 * @param name
+	 *            - the value of name to be set
+	 */
+	public void setName(String name) {
+		mSectionElement.setTextNameAttribute(name);
+	}
+
+	/**
+	 * Remove this section from the document.
+	 * <p>
+	 * All the linked resources which are only linked to this section will be
+	 * removed too.
+	 * 
+	 */
+	public void remove() {
+		mDocument.removeElementLinkedResource(mSectionElement);
+		mSectionElement.getParentNode().removeChild(mSectionElement);
+		paragraphContainerImpl = null;
+		mSectionElement = null;
+		mDocument = null;
+	}
+
+	/**
+	 * Return an instance of <code>TextSectionElement</code> which represents
+	 * this section.
+	 * 
+	 * @return - an instance of <code>TextSectionElement</code> which represents
+	 *         this section
+	 */
+	public TextSectionElement getOdfElement() {
+		return mSectionElement;
+	}
+
+	/**
+	 * Return whether this section is contained in footer or header.
+	 * 
+	 * @return - true if this section is contained in footer or header. false if
+	 *         this section is not contained in footer or header.
+	 */
+	boolean isInHeaderFooter() {
+		try {
+			if (mSectionElement.getOwnerDocument() == mDocument.getStylesDom())
+				return true;
+		} catch (Exception e) {
+			Logger.getLogger(Section.class.getName()).log(Level.SEVERE, "Failed in isInHeaderFooter", e);
+		}
+		return false;
+	}
+
+	/**
+	 * Set the value to specify whether the section is protected.
+	 * <p>
+	 * If this value is set to false, the existing password will be removed at
+	 * the same.
+	 * 
+	 * @param isProtected
+	 *            - "true" represents the section cannot be edited through a
+	 *            user interface. "false" represents the section is allowed to
+	 *            be edited.
+	 */
+	public void setProtected(boolean isProtected) {
+		mSectionElement.setTextProtectedAttribute(isProtected);
+		if (!isProtected && getProtectedPassword() != null)
+			setProtectedWithPassword(null);
+	}
+
+	/**
+	 * Return the value of section which specifies whether the section is
+	 * protected.
+	 * 
+	 * @return whether the section is protected.
+	 */
+	public boolean isProtected() {
+		return mSectionElement.getTextProtectedAttribute();
+	}
+
+	/**
+	 * Set the password which specifies that an authorization is required for
+	 * removing the protection of this section.
+	 * <p>
+	 * If key is empty or null, the attribute of
+	 * <code>text:protection-key</code> and
+	 * <code>text:protection-key-digest-algorithm</code> will be removed.
+	 * <p>
+	 * The authentication procedure can be customized by
+	 * {@link Section#setProtectionKeyDigestProvider(ProtectionKeyDigestProvider)}
+	 * . The default digest algorighom of the protection key is SHA-1:
+	 * {@link http://www.w3.org/2000/09/xmldsig#sha1.}
+	 * 
+	 * @param key
+	 *            -the value of the password.
+	 * 
+	 */
+	public void setProtectedWithPassword(String key) {
+		if (key != null && key.length() > 0) {
+			mSectionElement.setTextProtectionKeyAttribute(generateHashKey(key));
+			mSectionElement
+					.setTextProtectionKeyDigestAlgorithmAttribute(getDigestAlgorithm());
+			setProtected(true);
+		} else {
+			mSectionElement.removeAttributeNS(OdfDocumentNamespace.TEXT
+					.getUri(), "protection-key");
+			mSectionElement.removeAttributeNS(OdfDocumentNamespace.TEXT
+					.getUri(), "protection-key-digest-algorithm");
+		}
+	}
+
+	/**
+	 * Get the protection key of this section.
+	 * 
+	 * @return the protection key of this section
+	 */
+	public String getProtectedPassword() {
+		return mSectionElement.getTextProtectionKeyAttribute();
+	}
+
+	/**
+	 * Get the protection key digest algorithm.
+	 * <p>
+	 * The default value is http://www.w3.org/2000/09/xmldsig#sha1, if no value
+	 * specified.
+	 * 
+	 * @return an IRI that identifies an authentication procedure for removing a
+	 *         protection.
+	 */
+	public String getProtectionKeyDigestAlgorithm() {
+		return mSectionElement.getTextProtectionKeyDigestAlgorithmAttribute();
+	}
+
+	private static class SHA1KeyDigest implements ProtectionKeyDigestProvider {
+
+		private static final String KEY_DIGEST_ALGORITHM = "http://www.w3.org/2000/09/xmldsig#sha1";
+		private static SHA1KeyDigest provider;
+
+		static SHA1KeyDigest getInstance() {
+			if (provider == null)
+				provider = new SHA1KeyDigest();
+			return provider;
+		}
+
+//		@Override
+		public String generateHashKey(String passwd) {
+			String hashKey = null;
+			if (passwd != null && passwd.length() > 0) {
+				MessageDigest md;
+				try {
+					byte[] pwd = new byte[passwd.length() * 2];
+					for (int i = 0; i < passwd.length(); i++) {
+						pwd[2 * i] = (byte) (passwd.charAt(i) & 0xFF);
+						pwd[2 * i + 1] = (byte) (passwd.charAt(i) >> 8);
+					}
+					md = MessageDigest.getInstance("SHA-1");
+					byte[] byteCode = md.digest(pwd);
+					BASE64Encoder encoder = new BASE64Encoder();
+					hashKey = encoder.encode(byteCode);
+				} catch (NoSuchAlgorithmException e) {
+					Logger.getLogger(Section.class.getName(),
+							"Fail to initiate the digest method.");
+				}
+			}
+			return hashKey;
+		}
+
+//		@Override
+		public String getProtectionKeyDigestAlgorithm() {
+			return KEY_DIGEST_ALGORITHM;
+		}
+
+	}
+
+	/**
+	 * Set the provider which provides corresponding protection key digest
+	 * algorithm.
+	 * 
+	 * @param provider
+	 *            - an instance of a protection key digest algorithm provider
+	 */
+	public void setProtectionKeyDigestProvider(
+			ProtectionKeyDigestProvider provider) {
+		protectionKeyDigestProvider = provider;
+	}
+
+	/**
+	 * Get current used provider which provides corresponding protection key
+	 * digest algorithm.
+	 * 
+	 * @return the current used provider.
+	 */
+	public ProtectionKeyDigestProvider getProtectionKeyDigestProvier() {
+		if (protectionKeyDigestProvider == null) {
+			protectionKeyDigestProvider = getDefaultProtectionKeyDigestProvider();
+		}
+		return protectionKeyDigestProvider;
+	}
+
+	/**
+	 * Get the default provider which use SHA-1 standard as the protection key
+	 * digest algorithm.
+	 * 
+	 * @return the default protection key digest algorithm.
+	 */
+	public ProtectionKeyDigestProvider getDefaultProtectionKeyDigestProvider() {
+		return SHA1KeyDigest.getInstance();
+	}
+
+	private String generateHashKey(String passwd) {
+		return getProtectionKeyDigestProvier().generateHashKey(passwd);
+	}
+
+	private String getDigestAlgorithm() {
+		return getProtectionKeyDigestProvier()
+				.getProtectionKeyDigestAlgorithm();
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (!(obj instanceof Section))
+			return false;
+		Section aSection = (Section) obj;
+		if (aSection == this)
+			return true;
+		return aSection.getOdfElement().equals(mSectionElement);
+	}
+
+	//****************Paragraph support******************//
+	
+	public Paragraph addParagraph(String textContent) {
+		return getParagraphContainerImpl().addParagraph(textContent);
+	}
+
+	public OdfElement getParagraphContainerElement() {
+		return getParagraphContainerImpl().getParagraphContainerElement();
+	}
+
+	public boolean removeParagraph(Paragraph para) {
+		return getParagraphContainerImpl().removeParagraph(para);
+	}
+
+	private class ParagraphContainerImpl extends AbstractParagraphContainer {
+		public OdfElement getParagraphContainerElement()
+		{
+			return mSectionElement;
+		}
+	}
+	private ParagraphContainerImpl getParagraphContainerImpl() {
+		if (paragraphContainerImpl == null)
+			paragraphContainerImpl = new ParagraphContainerImpl();
+		return paragraphContainerImpl;
+	}
+
+	public Paragraph getParagraphByIndex(int index, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByIndex(index, isEmptyParagraphSkipped);
+	}
+
+	public Paragraph getParagraphByReverseIndex(int reverseIndex, boolean isEmptyParagraphSkipped) {
+		return getParagraphContainerImpl().getParagraphByReverseIndex(reverseIndex, isEmptyParagraphSkipped);
+	}
+
+	public Iterator<Paragraph> getParagraphIterator() {
+		return getParagraphContainerImpl().getParagraphIterator();
+	}
+
+	// ****************Table support******************//
+	protected TableContainer getTableContainerImpl() {
+		if (tableContainerImpl == null) {
+			tableContainerImpl = new TableContainerImpl();
+		}
+		return tableContainerImpl;
+	}
+
+	private class TableContainerImpl extends AbstractTableContainer {
+
+		public OdfElement getTableContainerElement() {
+			return mSectionElement;
+		}
+	}
+
+//	@Override
+	public Table addTable() {
+		return getTableContainerImpl().addTable();
+	}
+
+//	@Override
+	public Table addTable(int numRows, int numCols) {
+		return getTableContainerImpl().addTable(numRows, numCols);
+	}
+
+//	@Override
+	public TableBuilder getTableBuilder() {
+		return getTableContainerImpl().getTableBuilder();
+	}
+
+//	@Override
+	public Table getTableByName(String name) {
+		return getTableContainerImpl().getTableByName(name);
+	}
+
+//	@Override
+	public OdfElement getTableContainerElement() {
+		return getTableContainerImpl().getTableContainerElement();
+	}
+
+//	@Override
+	public List<Table> getTableList() {
+		return getTableContainerImpl().getTableList();
+	}
+
+	// ****************List support******************//
+
+	private ListContainerImpl getListContainerImpl() {
+		if (listContainerImpl == null) {
+			listContainerImpl = new ListContainerImpl();
+		}
+		return listContainerImpl;
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+
+		public OdfElement getListContainerElement() {
+			return mSectionElement;
+		}
+	}
+
+//	@Override
+	public org.odftoolkit.simple.text.list.List addList() {
+		return getListContainerImpl().addList();
+	}
+
+//	@Override
+	public org.odftoolkit.simple.text.list.List addList(ListDecorator decorator) {
+		return getListContainerImpl().addList(decorator);
+	}
+
+//	@Override
+	public void clearList() {
+		getListContainerImpl().clearList();
+	}
+
+//	@Override
+	public OdfElement getListContainerElement() {
+		return getListContainerImpl().getListContainerElement();
+	}
+
+//	@Override
+	public Iterator<org.odftoolkit.simple.text.list.List> getListIterator() {
+		return getListContainerImpl().getListIterator();
+	}
+
+//	@Override
+	public boolean removeList(org.odftoolkit.simple.text.list.List list) {
+		return getListContainerImpl().removeList(list);
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/Span.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Span.java
new file mode 100644
index 0000000..7585391
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/Span.java
@@ -0,0 +1,259 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.net.URI;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Component;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.common.navigation.InvalidNavigationException;
+import org.odftoolkit.simple.common.navigation.TextSelection;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * This class represents the application of a style to the character data of a
+ * portion of text.
+ * <p>
+ * It provides convenient methods to create a span and manipulate attributes of
+ * a span.
+ * 
+ * @since 0.5.5
+ */
+public class Span extends Component implements TextHyperlinkContainer {
+
+	private TextSpanElement mSpanElement;
+	private Document mOwnerDocument;
+	private DefaultStyleHandler mStyleHandler;
+	private TextHyperlinkContainerImpl mHyperlinkContainerImpl;
+
+	private Span(TextSpanElement element) {
+		mSpanElement = element;
+		mOwnerDocument = (Document) ((OdfFileDom) element.getOwnerDocument()).getDocument();
+		mStyleHandler = new DefaultStyleHandler(element);
+	}
+
+	/**
+	 * Get a span instance by an instance of <code>TextSpanElement</code>.
+	 * 
+	 * @param sElement
+	 *            - the instance of TextSpanElement
+	 * @return an instance of span
+	 */
+	public static Span getInstanceof(TextSpanElement sElement) {
+		if (sElement == null)
+			return null;
+
+		Span span = null;
+		span = (Span) Component.getComponentByElement(sElement);
+		if (span != null)
+			return span;
+
+		span = new Span(sElement);
+		Component.registerComponent(span, sElement);
+		return span;
+	}
+
+	/**
+	 * Create a span instance with a text selection
+	 * 
+	 * @param textSelection
+	 *            the TextSelection which the span is applied to.
+	 * @return an instance of span
+	 * @see org.odftoolkit.simple.common.navigation.TextSelection
+	 */
+	public static Span newSpan(TextSelection textSelection) {
+		try {
+			TextSpanElement element = textSelection.createSpanElement();
+			return Span.getInstanceof(element);
+		} catch (InvalidNavigationException e) {
+			Logger.getLogger(Span.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+		return null;
+	}
+
+	/**
+	 * Get the style handler of this span.
+	 * <p>
+	 * The style handler is an instance of DefaultStyleHandler
+	 * 
+	 * @return an instance of DefaultStyleHandler
+	 * @see org.odftoolkit.simple.style.DefaultStyleHandler
+	 */
+	public DefaultStyleHandler getStyleHandler() {
+		if (mStyleHandler != null)
+			return mStyleHandler;
+		else {
+			mStyleHandler = new DefaultStyleHandler(mSpanElement);
+			return mStyleHandler;
+		}
+	}
+
+	/**
+	 * Get the owner document of this span
+	 * 
+	 * @return the document who owns this span
+	 */
+	public Document getOwnerDocument() {
+		return mOwnerDocument;
+	}
+
+	/**
+	 * Return the instance of "text:span" element
+	 * 
+	 * @return the instance of "text:span" element
+	 */
+	@Override
+	public TextSpanElement getOdfElement() {
+		return mSpanElement;
+	}
+
+	/**
+	 * Remove the text content of this span.
+	 * 
+	 */
+	public void removeTextContent() {
+		Paragraph.removeTextContentImpl(getOdfElement());
+		// remove empty hyperlink
+		NodeList nodeList = getOdfElement().getChildNodes();
+		for (int i = 0; i < nodeList.getLength(); i++) {
+			Node node;
+			node = nodeList.item(i);
+			if (node.getNodeType() == Node.ELEMENT_NODE) {
+				String nodename = node.getNodeName();
+				if (nodename.equals("text:a") && node.hasChildNodes() == false)
+					getOdfElement().removeChild(node);
+			}
+		}
+	}
+
+	/**
+	 * Set the text content of this span.
+	 * <p>
+	 * All the existing text content of this paragraph would be removed, and
+	 * then new text content would be set.
+	 * 
+	 * @param content
+	 *            - the text content
+	 */
+	public void setTextContent(String content) {
+		Paragraph.removeTextContentImpl(getOdfElement());
+		Node lastNode = getOdfElement().getLastChild();
+		if (content != null && !content.equals("")){
+			if (lastNode != null && lastNode.getNodeName() != null && lastNode.getNodeName().equals("text:a")) {
+				Paragraph.appendTextElements((TextAElement) lastNode, content, true);
+			} else {
+				Paragraph.appendTextElements(getOdfElement(), content, true);
+			}
+		}
+		// remove empty hyperlink
+		Paragraph.removeEmptyHyperlink(getOdfElement());
+	}
+
+	/**
+	 * Return the text content of this span.
+	 * <p>
+	 * The other child elements except text content will not be returned.
+	 * 
+	 * @return - the text content of this span
+	 */
+	public String getTextContent() {
+		return Paragraph.getTextContent(getOdfElement());
+	}
+
+	/**
+	 * Append the text content at the end of this span.
+	 * <p>
+	 * The appended text would follow the style of the last character.
+	 * 
+	 * @param content
+	 *            - the text content
+	 */
+	public void appendTextContent(String content) {
+		appendTextContent(content, true);
+	}
+
+	/**
+	 * Append the text content at the end of this span.
+	 * <p>
+	 * The appended text would follow the style of the last character if the
+	 * second parameter is set to true; Or else, the appended text would follow
+	 * the default style of this paragraph.
+	 * 
+	 * @param content
+	 *            - the text content
+	 * @param isStyleInherited
+	 *            - whether the hyperlink style would be inherited by the
+	 *            appended text
+	 */
+	public void appendTextContent(String content, boolean isStyleInherited) {
+		boolean canInherited = false;
+		Node lastNode = getOdfElement().getLastChild();
+		if (lastNode != null && lastNode.getNodeName() != null && lastNode.getNodeName().equals("text:a"))
+			canInherited = true;
+
+		if (isStyleInherited && canInherited) {
+			if (content != null && !content.equals(""))
+				Paragraph.appendTextElements((OdfElement) lastNode, content, true);
+		} else {
+			if (content != null && !content.equals(""))
+				Paragraph.appendTextElements(getOdfElement(), content, true);
+		}
+	}
+
+	/************ Hyperlink support ************/
+	public TextHyperlink applyHyperlink(URI linkto) {
+		return getTextHyperlinkContainerImpl().applyHyperlink(linkto);
+	}
+
+	public Iterator<TextHyperlink> getHyperlinkIterator() {
+		return getTextHyperlinkContainerImpl().getHyperlinkIterator();
+	}
+
+	public void removeHyperlinks() {
+		getTextHyperlinkContainerImpl().removeHyperlinks();
+	}
+	
+	public TextHyperlink appendHyperlink(String text, URI linkto) {
+		return getTextHyperlinkContainerImpl().appendHyperlink(text, linkto);
+	}
+
+	private class TextHyperlinkContainerImpl extends AbstractTextHyperlinkContainer {
+		public TextHyperlinkContainerImpl(OdfElement parent) {
+			super(parent);
+		}
+	}
+
+	private TextHyperlinkContainerImpl getTextHyperlinkContainerImpl() {
+		if (mHyperlinkContainerImpl == null)
+			mHyperlinkContainerImpl = new TextHyperlinkContainerImpl(getOdfElement());
+		return mHyperlinkContainerImpl;
+	}
+	/************ End of Hyperlink support ************/
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/TextHyperlink.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/TextHyperlink.java
new file mode 100644
index 0000000..11ef7d5
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/TextHyperlink.java
@@ -0,0 +1,243 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.security.InvalidParameterException;
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.Component;
+import org.w3c.dom.Node;
+
+/**
+ * This class represents a text hyperlink in ODF document. It provides
+ * convenient methods to get/set/remove the URI of hyperlinks.
+ * 
+ * @since 0.6.5
+ */
+public class TextHyperlink extends Component {
+
+	TextAElement hyperLinkElement;
+
+	private TextHyperlink(TextAElement aElement) {
+		hyperLinkElement = aElement;
+	}
+
+	/**
+	 * Gets a TextHyperlink instance by an instance of <code>TextAElement</code>
+	 * .
+	 * 
+	 * @param aElement
+	 *            the instance of TextAElement.
+	 * @return an instance of Hyperlink.
+	 */
+	public static TextHyperlink getInstanceof(TextAElement aElement) {
+		if (aElement == null)
+			return null;
+
+		TextHyperlink link = null;
+		link = (TextHyperlink) Component.getComponentByElement(aElement);
+		if (link != null)
+			return link;
+
+		link = new TextHyperlink(aElement);
+		Component.registerComponent(link, aElement);
+		return link;
+	}
+
+	@Override
+	public OdfElement getOdfElement() {
+		// TODO Auto-generated method stub
+		return hyperLinkElement;
+	}
+
+	/**
+	 * Return the URI of this hyperlink
+	 * 
+	 * @return the URI of this hyperlink
+	 * @throws URISyntaxException
+	 */
+	public URI getURI() throws URISyntaxException {
+		return new URI(hyperLinkElement.getXlinkHrefAttribute());
+	}
+
+	/**
+	 * Set the value of URI for this hyperlink
+	 * 
+	 * @param linkto
+	 *            - the URI of this hyperlink
+	 */
+	public void setURI(URI linkto) {
+		hyperLinkElement.setXlinkHrefAttribute(linkto.toString());
+	}
+
+	/**
+	 * Get the text content of this hyperlink
+	 * 
+	 * @return the text content of this hyperlink
+	 */
+	public String getTextContent() {
+		return Paragraph.getTextContent(getOdfElement());
+	}
+
+	/**
+	 * Set the text content of this hyperlink
+	 * 
+	 * @param text
+	 *            - the text content to be set
+	 */
+	public void setTextContent(String text) {
+		Paragraph.removeTextContentImpl(getOdfElement());
+		if (text != null && !text.equals(""))
+			Paragraph.appendTextElements(getOdfElement(), text, true);
+	}
+
+	/**
+	 * Remove the text content of this hyperlink.
+	 * <p>
+	 * The other child elements except text content will not be removed.
+	 * 
+	 */
+	public void removeTextContent() {
+		Paragraph.removeTextContentImpl(getOdfElement());
+	}
+
+}
+
+class AbstractTextHyperlinkContainer implements TextHyperlinkContainer {
+	OdfElement linkContainer;
+
+	public AbstractTextHyperlinkContainer(OdfElement parent) {
+		if ((parent instanceof TextPElement) || (parent instanceof TextHElement) || (parent instanceof TextSpanElement))
+			linkContainer = parent;
+		else
+			throw new InvalidParameterException(parent.getClass() + "is not a valid element.");
+	}
+
+	public TextHyperlink applyHyperlink(URI linkto) {
+		// new a text:a element, move all the child under text:p to text:a
+		OdfElement parent = linkContainer;
+		removeHyperlinks();
+		TextAElement aElement;
+		aElement = ((OdfContentDom) (parent.getOwnerDocument())).newOdfElement(TextAElement.class);
+		aElement.setXlinkTypeAttribute("simple");
+		aElement.setXlinkHrefAttribute(linkto.toString());
+		Node node = parent.getFirstChild();
+		while (node != null) {
+			Node thisNode = node;
+			node = node.getNextSibling();
+			parent.removeChild(thisNode);
+			aElement.appendChild(thisNode);
+		}
+		parent.appendChild(aElement);
+		return TextHyperlink.getInstanceof(aElement);
+	}
+
+	public void removeHyperlinks() {
+		OdfElement parent = linkContainer;
+		TextAElement aElement = OdfElement.findFirstChildNode(TextAElement.class, parent);
+		while (aElement != null) {
+			Node node = aElement.getFirstChild();
+			while (node != null) {
+				Node thisNode = node;
+				node = node.getNextSibling();
+				aElement.removeChild(thisNode);
+				parent.insertBefore(thisNode, aElement);
+			}
+			TextAElement thisElement = aElement;
+			aElement = OdfElement.findNextChildNode(TextAElement.class, aElement);
+			parent.removeChild(thisElement);
+		}
+	}
+
+	public SimpleHyperlinkIterator getHyperlinkIterator() {
+		return new SimpleHyperlinkIterator(linkContainer);
+	}
+
+	public TextHyperlink appendHyperlink(String text, URI linkto) {
+		OdfElement parent = linkContainer;
+		TextAElement aElement;
+		aElement = ((OdfContentDom) (parent.getOwnerDocument())).newOdfElement(TextAElement.class);
+		aElement.setXlinkTypeAttribute("simple");
+		aElement.setXlinkHrefAttribute(linkto.toString());
+		aElement.setTextContent(text);
+		parent.appendChild(aElement);
+		return TextHyperlink.getInstanceof(aElement);
+	}
+
+	private class SimpleHyperlinkIterator implements Iterator<TextHyperlink> {
+
+		private OdfElement containerElement;
+		private TextHyperlink nextElement = null;
+		private TextHyperlink tempElement = null;
+
+		private SimpleHyperlinkIterator(OdfElement container) {
+			containerElement = container;
+		}
+
+		public boolean hasNext() {
+			tempElement = findNext(nextElement);
+			return (tempElement != null);
+		}
+
+		public TextHyperlink next() {
+			if (tempElement != null) {
+				nextElement = tempElement;
+				tempElement = null;
+			} else {
+				nextElement = findNext(nextElement);
+			}
+			if (nextElement == null) {
+				return null;
+			} else {
+				return nextElement;
+			}
+		}
+
+		public void remove() {
+			if (nextElement == null) {
+				throw new IllegalStateException("please call next() first.");
+			}
+			containerElement.removeChild(nextElement.getOdfElement());
+		}
+
+		private TextHyperlink findNext(TextHyperlink thisLink) {
+			TextAElement nextLink = null;
+			if (thisLink == null) {
+				nextLink = OdfElement.findFirstChildNode(TextAElement.class, containerElement);
+			} else {
+				nextLink = OdfElement.findNextChildNode(TextAElement.class, thisLink.getOdfElement());
+			}
+
+			if (nextLink != null) {
+				return TextHyperlink.getInstanceof(nextLink);
+			}
+			return null;
+		}
+	}
+
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/TextHyperlinkContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/TextHyperlinkContainer.java
new file mode 100644
index 0000000..8704104
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/TextHyperlinkContainer.java
@@ -0,0 +1,67 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.net.URI;
+import java.util.Iterator;
+
+/**
+ * TextHyperlinkContainer is a container which maintains text hyperlinks.
+ * Hyperlinks can be added and removed in this container.
+ * 
+ * @see TextHyperlink
+ * 
+ * @since 0.6.5
+ */
+
+public interface TextHyperlinkContainer {
+
+	/**
+	 * Add a hypertext reference to this hyperlink container.
+	 * 
+	 * @param linkto
+	 *            the hyperlink
+	 * @return an instance of TextHyperlink
+	 */
+	public TextHyperlink applyHyperlink(URI linkto);
+
+	/**
+	 * Remove all the hyperlinks in this container element.
+	 */
+	public void removeHyperlinks();
+
+	/**
+	 * Append a hyperlink at the end of the container
+	 * 
+	 * @param text
+	 *            - the text content
+	 * @param linkto
+	 *            - the URI of this hyperlink
+	 * @return an instance of TextHyperlink
+	 */
+	public TextHyperlink appendHyperlink(String text, URI linkto);
+
+	/**
+	 * Get the iterator of hyperlinks within this container element
+	 * 
+	 * @return the iterator of hyperlinks within this container element
+	 */
+	public Iterator<TextHyperlink> getHyperlinkIterator();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/AbstractListContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/AbstractListContainer.java
new file mode 100644
index 0000000..cc0df6f
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/AbstractListContainer.java
@@ -0,0 +1,150 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.NoSuchElementException;
+
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * AbstractListContainer is an abstract implementation of the ListContainer
+ * interface, with a default implementation for every method defined in ListContainer
+ * , except getListContainerElement(). A subclass must implement
+ * the abstract method getListContainerElement().
+ * 
+ * @since 0.4
+ */
+public abstract class AbstractListContainer implements ListContainer {
+
+	public List addList() {
+		return new List(this);
+	}
+
+	public List addList(ListDecorator decorator) {
+		return new List(this, decorator);
+	}
+
+	public void clearList() {
+		OdfElement containerElement = getListContainerElement();
+		Node child = getListContainerElement().getFirstChild();
+		while (child != null) {
+			if (child instanceof TextListElement) {
+				Node tmp = child;
+				child = child.getNextSibling();
+				containerElement.removeChild(tmp);
+			} else {
+				child = child.getNextSibling();
+			}
+		}
+	}
+
+	public Iterator<List> getListIterator() {
+		return new SimpleListIterator(this);
+	}
+
+	public boolean removeList(List list) {
+		OdfElement containerElement = getListContainerElement();
+		Node child = containerElement.getFirstChild();
+		OdfFileDom ownerDocument = (OdfFileDom) containerElement.getOwnerDocument();
+		Document doc = (Document) ownerDocument.getDocument();
+		while (child != null) {
+			if (child instanceof TextListElement) {
+				TextListElement listElement1 = (TextListElement) child;
+				String id1 = listElement1.getXmlIdAttribute();
+				TextListElement listElement2 = list.getOdfElement();
+				String id2 = listElement2.getXmlIdAttribute();
+				if ((listElement1 == listElement2) || ((id1 != null) && (id2 != null) && (id1.equals(id2)))) {
+					doc.removeElementLinkedResource(listElement1);
+					containerElement.removeChild(child);
+					return true;
+				}
+			}
+			child = child.getNextSibling();
+		}
+		return false;
+	}
+
+	// default iterator to iterate list item.
+	private static class SimpleListIterator implements Iterator<List> {
+		
+		private java.util.List<List> allLists;
+		private int index;
+		private List currentList;
+		
+		public SimpleListIterator(ListContainer container) {
+			this.allLists = getLists(container.getListContainerElement().getChildNodes());
+		}
+
+		public boolean hasNext() {
+			return this.index < this.allLists.size();
+		}
+
+		public List next() {
+			if (hasNext()) {
+				this.currentList = allLists.get(index);
+				this.index++;
+				return this.currentList;
+			} else {
+				throw new NoSuchElementException();
+			}
+		}
+
+		public void remove() {
+			if (this.currentList == null) {
+				throw new IllegalStateException();
+			} else {
+				this.allLists.remove(this.currentList);
+				this.currentList = null;
+			}
+		}
+		
+		private java.util.List<List> getLists(NodeList nodes) {
+			java.util.List<List> lists = new LinkedList<List>();
+			int numberOfNodes = nodes.getLength();
+			for (int i = 0; i < numberOfNodes; i++) {
+				Node node = nodes.item(i);
+				lists.addAll(getLists(node));
+			}
+			return lists;
+		}
+		
+		private java.util.List<List> getLists(Node node) {
+			java.util.List<List> lists = new LinkedList<List>();
+			if (node instanceof TextListElement) {
+				TextListElement textListElement = (TextListElement) node;
+				List list = new List(textListElement);
+				lists.add(list);
+			} else {
+				NodeList childNodes = node.getChildNodes();
+				lists.addAll(getLists(childNodes));
+			}
+			return lists;
+		}
+		
+	}
+	
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/BulletDecorator.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/BulletDecorator.java
new file mode 100644
index 0000000..bc33927
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/BulletDecorator.java
@@ -0,0 +1,165 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleBulletElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+
+/**
+ * BulletDecorator is an implementation of the ListDecorator interface,
+ * decorates a given List as bullet list. User can extend this class and realize
+ * their own list and list item style. For example, set a specifies list item
+ * with red color.
+ * <p>
+ * A BulletDecorator can be reused in the same Document.
+ * 
+ * @since 0.4
+ */
+public class BulletDecorator implements ListDecorator {
+
+	private static String[] DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES = { null, "0.401cm", "0.799cm", "1.2cm", "1.6cm",
+			"2.001cm", "2.399cm", "2.8cm", "3.2cm", "3.601cm" };
+	private static String DEFAULT_TEXT_MIN_LABEL_WIDTH = "0.4cm";
+	private static String DEFAULT_FONT_NAME = "Tahoma";
+	private static String DEFAULT_BULLET_CHAR = "•";
+	private static String DEFAULT_NAME = "Simple_Default_Bullet_List";
+
+	private OdfTextListStyle listStyle;
+	private OdfStyle paragraphStyle;
+	private OdfOfficeAutomaticStyles styles;
+
+	/**
+	 * Constructor with Document.
+	 * 
+	 * @param doc
+	 *            the Document which this BulletDecorator will be used on.
+	 */
+	public BulletDecorator(Document doc) {
+		OdfContentDom contentDocument;
+		try {
+			contentDocument = doc.getContentDom();
+			styles = contentDocument.getAutomaticStyles();
+			OdfOfficeStyles documentStyles = doc.getDocumentStyles();
+			listStyle = styles.getListStyle(DEFAULT_NAME);
+			// create bullet style
+			if (listStyle == null) {
+				listStyle = styles.newListStyle();
+				// <style:style style:name="Numbering_20_Symbols"
+				// style:display-name="Numbering Symbols" style:family="text" />
+				getOrCreateStyleByName(documentStyles, styles, "Bullet_20_Symbols", OdfStyleFamily.Text);
+				for (int i = 0; i < 10; i++) {
+					TextListLevelStyleBulletElement listLevelElement = listStyle.newTextListLevelStyleBulletElement(
+							DEFAULT_BULLET_CHAR, i + 1);
+					// get from default style element
+					listLevelElement.setTextStyleNameAttribute("Bullet_20_Symbols");
+					StyleListLevelPropertiesElement styleListLevelPropertiesElement = listLevelElement
+							.newStyleListLevelPropertiesElement();
+					if (DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES[i] != null) {
+						styleListLevelPropertiesElement
+								.setTextSpaceBeforeAttribute(DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES[i]);
+					}
+					styleListLevelPropertiesElement.setTextMinLabelWidthAttribute(DEFAULT_TEXT_MIN_LABEL_WIDTH);
+					StyleTextPropertiesElement styleTextPropertiesElement = listLevelElement
+							.newStyleTextPropertiesElement("true");
+					styleTextPropertiesElement.setStyleFontNameAttribute(DEFAULT_FONT_NAME);
+				}
+				// listStyle.setStyleNameAttribute(DEFAULT_NAME);
+			}
+			// create default paragraph style
+			// <style:style style:name="P3" style:family="paragraph"
+			// style:parent-style-name="Default_20_Text"
+			// style:list-style-name="L1"
+			// />
+			paragraphStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+			// <style:style style:name="Default_20_Text"
+			// style:display-name="Default Text" style:family="paragraph"
+			// style:class="text" />
+			// <style:style style:name="Standard" style:family="paragraph"
+			// style:class="text" />
+			getOrCreateStyleByName(documentStyles, styles, "Default_20_Text", OdfStyleFamily.Paragraph);
+			paragraphStyle.setStyleParentStyleNameAttribute("Default_20_Text");
+			paragraphStyle.setStyleListStyleNameAttribute(listStyle.getStyleNameAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(BulletDecorator.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+	
+	public void decorateList(List list) {
+		TextListElement listElement = list.getOdfElement();
+		listElement.setTextStyleNameAttribute(listStyle.getStyleNameAttribute());
+	}
+
+	public void decorateListItem(ListItem item) {
+		TextListItemElement listItemElement = item.getOdfElement();
+		Node child = listItemElement.getFirstChild();
+		while (child != null) {
+			if (child instanceof TextPElement) {
+				TextPElement pElement = (TextPElement) child;
+				// user can realize defined style for specifies item.
+				/*
+				 * if (pElement.getTextContent().contains("item1")) { OdfStyle
+				 * sParagraphStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+				 * sParagraphStyle
+				 * .setStyleParentStyleNameAttribute("Default_20_Text");
+				 * sParagraphStyle
+				 * .newStyleTextPropertiesElement(null).setFoColorAttribute
+				 * ("#ff3333");
+				 * pElement.setTextStyleNameAttribute(sParagraphStyle
+				 * .getStyleNameAttribute()); } else
+				 */
+				pElement.setTextStyleNameAttribute(paragraphStyle.getStyleNameAttribute());
+			}
+			child = child.getNextSibling();
+		}
+	}
+
+	public ListType getListType() {
+		return ListType.BULLET;
+	}
+
+	private OdfStyle getOrCreateStyleByName(OdfOfficeStyles documentStyles, OdfOfficeAutomaticStyles styles,
+			String styleName, OdfStyleFamily styleFamily) {
+		OdfStyle odfStyle = documentStyles.getStyle(styleName, styleFamily);
+		if (odfStyle == null) {
+			styles.getStyle(styleName, styleFamily);
+		}
+		if (odfStyle == null) {
+			odfStyle = styles.newStyle(styleFamily);
+			odfStyle.setStyleNameAttribute(styleName);
+			odfStyle.setStyleDisplayNameAttribute(styleName);
+		}
+		return odfStyle;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ImageDecorator.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ImageDecorator.java
new file mode 100644
index 0000000..3f1d509
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ImageDecorator.java
@@ -0,0 +1,184 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelLabelAlignmentElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+
+/**
+ * ImageDecorator is an implementation of the ListDecorator interface, decorates
+ * a given List as image list. Users can set an image as the list item prefix.
+ * They also can extend this class and realize their own list and list item
+ * style. For example, set a specifies list item with red color.
+ * <p>
+ * An ImageDecorator can be reused in the same Document.
+ * 
+ * @since 0.4
+ */
+public class ImageDecorator implements ListDecorator {
+
+	private static String[] DEFAULT_MARGIN_LEFT_ATTRIBUTES = { "0.741cm", "1.482cm", "2.223cm", "2.963cm", "3.704cm",
+			"4.445cm", "5.186cm", "5.927cm", "6.668cm", "7.408cm" };
+	private static String DEFAULT_IMAGE_WIDTH = "0.54cm";
+	private static String DEFAULT_IMAGE_HEIGHT = "0.54cm";
+	private static String DEFAULT_NAME = "Simple_Default_Image_List";
+	private static final String SLASH = "/";
+
+	private OdfTextListStyle listStyle;
+	private OdfStyle paragraphStyle;
+	private OdfOfficeAutomaticStyles styles;
+
+	/**
+	 * Constructor with Document and image URI.
+	 * 
+	 * @param doc
+	 *            the Document which this ImageDecorator will be used on.
+	 * @param imageUri
+	 *            the image location.
+	 */
+	public ImageDecorator(Document doc, URI imageUri) {
+		OdfContentDom contentDocument;
+		try {
+			contentDocument = doc.getContentDom();
+			styles = contentDocument.getAutomaticStyles();
+			OdfOfficeStyles documentStyles = doc.getDocumentStyles();
+			listStyle = styles.getListStyle(DEFAULT_NAME);
+			// create image style
+			if (listStyle == null) {
+				listStyle = styles.newListStyle();
+				String packagePath = null;
+				try {
+					packagePath = insertImage(doc, imageUri);
+				} catch (Exception e) {
+					Logger.getLogger(ImageDecorator.class.getName()).log(Level.SEVERE, null, e);
+				}
+				for (int i = 0; i < 10; i++) {
+					TextListLevelStyleImageElement listLevelElement = listStyle
+							.newTextListLevelStyleImageElement(i + 1);
+					// xlink:href="Pictures/100002010000001700000017B273CC34.png"
+					listLevelElement.setXlinkHrefAttribute(packagePath);
+					listLevelElement.setXlinkTypeAttribute("simple");
+					listLevelElement.setXlinkShowAttribute("embed");
+					listLevelElement.setXlinkActuateAttribute("onLoad");
+					StyleListLevelPropertiesElement styleListLevelPropertiesElement = listLevelElement
+							.newStyleListLevelPropertiesElement();
+					styleListLevelPropertiesElement.setTextListLevelPositionAndSpaceModeAttribute("label-alignment");
+					styleListLevelPropertiesElement.setStyleVerticalPosAttribute("middle");
+					styleListLevelPropertiesElement.setStyleVerticalRelAttribute("line");
+					styleListLevelPropertiesElement.setFoWidthAttribute(DEFAULT_IMAGE_WIDTH);
+					styleListLevelPropertiesElement.setFoHeightAttribute(DEFAULT_IMAGE_HEIGHT);
+					StyleListLevelLabelAlignmentElement styleListLevelLabelAlignmentElement = styleListLevelPropertiesElement
+							.newStyleListLevelLabelAlignmentElement("listtab");
+					styleListLevelLabelAlignmentElement
+							.setTextListTabStopPositionAttribute(DEFAULT_MARGIN_LEFT_ATTRIBUTES[i]);
+					styleListLevelLabelAlignmentElement.setFoTextIndentAttribute("-0.741cm");
+					styleListLevelLabelAlignmentElement.setFoMarginLeftAttribute(DEFAULT_MARGIN_LEFT_ATTRIBUTES[i]);
+				}
+				// listStyle.setStyleNameAttribute(DEFAULT_NAME);
+			}
+			// create default paragraph style
+			// <style:style style:name="P3" style:family="paragraph"
+			// style:parent-style-name="Default_20_Text"
+			// style:list-style-name="L1"
+			// />
+			paragraphStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+			// <style:style style:name="Default_20_Text"
+			// style:display-name="Default Text" style:family="paragraph"
+			// style:class="text" />
+			// <style:style style:name="Standard" style:family="paragraph"
+			// style:class="text" />
+			getOrCreateStyleByName(documentStyles, styles, "Default_20_Text", OdfStyleFamily.Paragraph);
+			paragraphStyle.setStyleParentStyleNameAttribute("Default_20_Text");
+			paragraphStyle.setStyleListStyleNameAttribute(listStyle.getStyleNameAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(ImageDecorator.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	public void decorateList(List list) {
+		TextListElement listElement = list.getOdfElement();
+		listElement.setTextStyleNameAttribute(listStyle.getStyleNameAttribute());
+	}
+
+	public void decorateListItem(ListItem item) {
+		TextListItemElement listItemElement = item.getOdfElement();
+		Node child = listItemElement.getFirstChild();
+		while (child != null) {
+			if (child instanceof TextPElement) {
+				TextPElement pElement = (TextPElement) child;
+				pElement.setTextStyleNameAttribute(paragraphStyle.getStyleNameAttribute());
+			}
+			child = child.getNextSibling();
+		}
+	}
+
+	public ListType getListType() {
+		return ListType.IMAGE;
+	}
+
+	private OdfStyle getOrCreateStyleByName(OdfOfficeStyles documentStyles, OdfOfficeAutomaticStyles styles,
+			String styleName, OdfStyleFamily styleFamily) {
+		OdfStyle odfStyle = documentStyles.getStyle(styleName, styleFamily);
+		if (odfStyle == null) {
+			styles.getStyle(styleName, styleFamily);
+		}
+		if (odfStyle == null) {
+			odfStyle = styles.newStyle(styleFamily);
+			odfStyle.setStyleNameAttribute(styleName);
+			odfStyle.setStyleDisplayNameAttribute(styleName);
+		}
+		return odfStyle;
+	}
+
+	private String insertImage(Document doc, URI imageUri) throws Exception {
+		String imageRef = null;
+		if (!imageUri.isAbsolute()) {
+			imageRef = System.getProperty("user.dir") + '/' + imageUri.toString();
+		} else {
+			imageRef = imageUri.toString();
+		}
+		String mediaType = OdfFileEntry.getMediaTypeString(imageRef);
+		if (imageRef.contains(SLASH)) {
+			imageRef = imageRef.substring(imageRef.lastIndexOf(SLASH) + 1, imageRef.length());
+		}
+		String packagePath = OdfPackage.OdfFile.IMAGE_DIRECTORY.getPath() + SLASH + imageRef;
+		packagePath = doc.getDocumentPath() + packagePath;
+		doc.getPackage().insert(imageUri, packagePath, mediaType);
+		return packagePath;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/List.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/List.java
new file mode 100644
index 0000000..e00b944
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/List.java
@@ -0,0 +1,849 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListHeaderElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleBulletElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.text.list.ListDecorator.ListType;
+import org.w3c.dom.Node;
+
+/**
+ * This class represents a list. It can contain list header, 
+ * followed by list items.
+ * 
+ * @since 0.4
+ */
+public class List {
+
+	private TextListElement listElement;
+	private ListDecorator decorator;
+
+	/**
+	 * Constructor ListItem, AbstractListContainer and List use only.
+	 * 
+	 * @param element
+	 *            the ODF element 
+	 */
+	List(TextListElement element) {
+		listElement = element;
+		// only getListType and addItem --> item.setParagraphDecorator() need
+		// decorator. We have fixed the problems when decorator is null in these
+		// two conditions. So decorator null is OK for a exist list. But this
+		// constructor should not be used on a new created TextListElement, as
+		// its style name may have not set.
+		decorator = null;
+	}
+
+	/**
+	 * Constructor with ListContainer only. A bullet list with default style
+	 * will be created.
+	 * 
+	 * @param container
+	 *            the container in where this list will be appended.
+	 */
+	public List(ListContainer container) {
+		this(container, null, null);
+	}
+
+	/**
+	 * Constructor with ListContainer and ListDecorator.
+	 * 
+	 * @param container
+	 *            the container in where this list will be appended.
+	 * @param decorator
+	 *            the ListDecorator of this list.
+	 */
+	public List(ListContainer container, ListDecorator decorator) {
+		this(container, null, decorator);
+	}
+
+	/**
+	 * Constructor with ListContainer, ListDecorator and header.
+	 * 
+	 * @param container
+	 *            the container in where this list will be appended.
+	 * @param decorator
+	 *            the ListDecorator of this list.
+	 * @param header
+	 *            the header of this list.
+	 */
+	public List(ListContainer container, String header, ListDecorator decorator) {
+		OdfElement containerElement = container.getListContainerElement();
+		OdfFileDom ownerDocument = (OdfFileDom) containerElement.getOwnerDocument();
+		listElement = ownerDocument.newOdfElement(TextListElement.class);
+		listElement.setXmlIdAttribute(getUniqueXMLID());
+		containerElement.appendChild(listElement);
+		setHeader(header);
+		if (decorator == null) {
+			Document doc = (Document) ownerDocument.getDocument();
+			decorator = new BulletDecorator(doc);
+		}
+		this.decorator = decorator;
+		decorator.decorateList(this);
+	}
+
+	/**
+	 * Constructor with ListContainer, ListDecorator, header and numbering setting.
+	 * 
+	 * @param container
+	 *            the container in where this list will be appended.
+	 * @param decorator
+	 *            the ListDecorator of this list.
+	 * @param isContinueNumbering
+	 *            If <code>isContinueNumbering</code> is true, the numbering of this list is
+	 *            continuing, otherwise the numbering of this list starts from the beginning.
+	 * @param header
+	 *            the header of this list.
+	 */
+	public List(ListContainer container, String header, boolean isContinueNumbering, ListDecorator decorator) {
+		this(container, header, decorator);
+		setContinueNumbering(isContinueNumbering);
+	}
+
+	/**
+	 * Constructor with ListContainer, ListDecorator, header and continued list
+	 * 
+	 * @param container
+	 *            the container in where this list will be appended.
+	 * @param decorator
+	 *            the ListDecorator of this list.
+	 * @param continueList
+	 *            the continued list of this list.
+	 * @param header
+	 *            the header of this list.
+	 */
+	public List(ListContainer container, String header, List continueList, ListDecorator decorator) {
+		this(container, header, decorator);
+		setContinueList(continueList);
+	}
+
+	/**
+	 * Get the type of this list. The list type can be BULLET, NUMBER and IMAGE.
+	 * 
+	 * @return the list type.
+	 */
+	public ListType getType() {
+		if (decorator != null) {
+			return decorator.getListType();
+		} else {
+			try {
+				String textStyleName = listElement.getTextStyleNameAttribute();
+				Document doc = (Document) (((OdfFileDom) listElement.getOwnerDocument()).getDocument());
+				OdfContentDom contentDocument = doc.getContentDom();
+				OdfOfficeAutomaticStyles styles = contentDocument.getAutomaticStyles();
+				OdfOfficeStyles documentStyles = doc.getDocumentStyles();
+				OdfTextListStyle listStyle = styles.getListStyle(textStyleName);
+				if (listStyle == null) {
+					listStyle = documentStyles.getListStyle(textStyleName);
+				}
+				if (listStyle != null) {
+					TextListLevelStyleElementBase listLevelStyle = listStyle.getLevel(1);
+					if (listLevelStyle instanceof TextListLevelStyleBulletElement) {
+						return ListType.BULLET;
+					} else if (listLevelStyle instanceof TextListLevelStyleNumberElement) {
+						return ListType.NUMBER;
+					} else if (listLevelStyle instanceof TextListLevelStyleImageElement) {
+						return ListType.IMAGE;
+					}
+				}
+			} catch (Exception e) {
+				Logger.getLogger(List.class.getName()).log(Level.SEVERE, null, e);
+			}
+			return null;
+		}
+	}
+
+	/**
+	 * Get the header of this list.
+	 * 
+	 * @return the header of this list.
+	 */
+	public String getHeader() {
+		String header = "";
+		Node headerNode = listElement.getFirstChild();
+		if (headerNode instanceof TextListHeaderElement) {
+			Node pNode = headerNode.getFirstChild();
+			String splitString = "";
+			while (pNode != null) {
+				if (pNode instanceof TextPElement) {
+					String content = pNode.getTextContent();
+					if ((content != null) && (content.length() > 0)) {
+						header = header + splitString + content;
+						splitString = "\n";
+					}
+				}
+				pNode = pNode.getNextSibling();
+			}
+		}
+		if ("".equals(header)) {
+			return null;
+		} else {
+			return header;
+		}
+	}
+
+	/**
+	 * Set the header of this list. The exist header will be replaced.
+	 * 
+	 * @param header
+	 *            the header to be set.
+	 */
+	public void setHeader(String header) {
+		if (header != null) {
+			String[] headerContents = header.split("\n");
+			TextListHeaderElement listHeaderElement = null;
+			Node firstNode = listElement.getFirstChild();
+			if (firstNode instanceof TextListHeaderElement) {
+				listHeaderElement = (TextListHeaderElement) firstNode;
+				Node pElement = listHeaderElement.getFirstChild();
+				while (pElement != null) {
+					firstNode.removeChild(pElement);
+					pElement = pElement.getNextSibling();
+				}
+			} else {
+				listHeaderElement = ((OdfFileDom) listElement.getOwnerDocument())
+						.newOdfElement(TextListHeaderElement.class);
+				listElement.insertBefore(listHeaderElement, firstNode);
+			}
+			for (String headerContent : headerContents) {
+				TextPElement pElement = listHeaderElement.newTextPElement();
+				pElement.setTextContent(headerContent);
+			}
+		}
+	}
+
+	/**
+	 * Set the ListDecorator of this list. The current ListDecorator will be
+	 * replaced.
+	 * <p>
+	 * This is a useful method which can change the list type and style, even
+	 * though it has been created.
+	 * 
+	 * @param decorator
+	 *            the ListDecorator to be used.
+	 */
+	public void setDecorator(ListDecorator decorator) {
+		if (decorator != null) {
+			this.decorator = decorator;
+			decorator.decorateList(this);
+		}
+	}
+
+	/**
+	 * Add a list item by specifying a string value.
+	 * 
+	 * @param itemContent
+	 *            the list item content to be added.
+	 * @return the added ListItem.
+	 */
+	public ListItem addItem(String itemContent) {
+		TextListItemElement listItemElement = listElement.newTextListItemElement();
+		ListItem item = new ListItem(listItemElement);
+		item.setParagraphDecorator(decorator);
+		item.setTextContent(itemContent);
+		return item;
+	}
+
+	/**
+	 * Insert the specified ListItem at the specified location.
+	 * The ListItem is inserted before the ListItem at the specified
+	 * location.
+	 * 
+	 * @param location
+	 *            the index to insert. The start number is 0.
+	 * @param itemContent
+	 *            the list item content to be added.
+	 * @return the added ListItem.
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public ListItem addItem(int location, String itemContent) {
+		OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+		TextListItemElement listItemElement = ownerDocument.newOdfElement(TextListItemElement.class);
+		Node refNode = getItemByLocation(location);
+		listElement.insertBefore(listItemElement, refNode);
+		ListItem item = new ListItem(listItemElement);
+		item.setParagraphDecorator(decorator);
+		item.setTextContent(itemContent);
+		return item;
+	}
+
+	/**
+	 * Add the specified list item in ListItem object.
+	 * 
+	 * @param item
+	 *            the list item to be added.
+	 * @return the added ListItem.
+	 */
+	public ListItem addItem(ListItem item) {
+		TextListItemElement itemElement = (TextListItemElement) (item.getOdfElement().cloneNode(true));
+		listElement.appendChild(itemElement);
+		ListItem newItem = new ListItem(itemElement);
+		return newItem;
+	}
+
+	/**
+	 * Insert a ListItem at the specified location.
+	 * The ListItem is inserted before the ListItem at the specified
+	 * location.
+	 * 
+	 * @param location
+	 *            the index to insert.
+	 * @param item
+	 *            the list item to add.
+	 * @return the added ListItem.
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public ListItem addItem(int location, ListItem item) {
+		TextListItemElement itemElement = (TextListItemElement) (item.getOdfElement().cloneNode(true));
+		Node refNode = getItemByLocation(location);
+		listElement.insertBefore(itemElement, refNode);
+		ListItem newItem = new ListItem(itemElement);
+		return newItem;
+	}
+
+	/**
+	 * Add list items by specifying an array of string values.
+	 * 
+	 * @param items
+	 *            the list items to be added.
+	 * @return the added items.
+	 */
+	public java.util.List<ListItem> addItems(String[] items) {
+		java.util.List<ListItem> itemList = new java.util.ArrayList<ListItem>();
+		for (String itemString : items) {
+			TextListItemElement listItemElement = listElement.newTextListItemElement();
+			ListItem item = new ListItem(listItemElement);
+			item.setTextContent(itemString);
+			itemList.add(item);
+		}
+		return itemList;
+	}
+
+	/**
+	 * Insert the list items at the specified location in this List 
+	 * by giving an array of string values.
+	 * 
+	 * @param location
+	 *            the index to insert.
+	 * @param items
+	 *            the collection of list item contents.
+	 * @return the added items.
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public java.util.List<ListItem> addItems(int location, String[] items) {
+		java.util.List<ListItem> listCollection = new ArrayList<ListItem>();
+		OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+		Node refNode = getItemByLocation(location);
+		for (int i = items.length - 1; i >= 0; i--) {
+			TextListItemElement listItemElement = ownerDocument.newOdfElement(TextListItemElement.class);
+			listElement.insertBefore(listItemElement, refNode);
+			ListItem item = new ListItem(listItemElement);
+			item.setParagraphDecorator(decorator);
+			item.setTextContent(items[i]);
+			refNode = listItemElement;
+			listCollection.add(item);
+		}
+		return listCollection;
+	}
+
+	/**
+	 * Add list items by specifying an array of ListItem.
+	 * 
+	 * @param items
+	 *            the list items to be added.
+	 */
+	public java.util.List<ListItem> addItems(ListItem[] items) {
+		java.util.List<ListItem> itemList = new java.util.ArrayList<ListItem>();
+		for (ListItem itemClone : items) {
+			TextListItemElement itemElement = (TextListItemElement) (itemClone.getOdfElement().cloneNode(true));
+			listElement.appendChild(itemElement);
+			itemList.add(new ListItem(itemElement));
+		}
+		return itemList;
+	}
+
+	/**
+	 * Insert the list items at the certain location
+	 * by specifying an array of ListItem.
+	 * 
+	 * @param location
+	 *            the index to insert.
+	 * @param items
+	 *            the collection of items.
+	 * @return the added items
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public java.util.List<ListItem> addItems(int location, ListItem[] items) {
+		java.util.List<ListItem> listCollection = new ArrayList<ListItem>();
+		Node refNode = getItemByLocation(location);
+		for (int i = items.length - 1; i >= 0; i--) {
+			TextListItemElement itemElement = (TextListItemElement) (items[i].getOdfElement().cloneNode(true));
+			listElement.insertBefore(itemElement, refNode);
+			ListItem item = new ListItem(itemElement);
+			refNode = itemElement;
+			listCollection.add(item);
+		}
+		return listCollection;
+	}
+
+	/**
+	 * Return the item at the specified location in this List.
+	 * 
+	 * @param location
+	 *            the index of the element to be returned.
+	 * @return the element at the specified location.
+	 * 
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public ListItem getItem(int location) {
+		return new ListItem(getItemByLocation(location));
+	}
+
+	/**
+	 * Get all of the list items.
+	 * 
+	 * @return all of list items.
+	 */
+	public java.util.List<ListItem> getItems() {
+		java.util.List<ListItem> itemList = new java.util.ArrayList<ListItem>();
+		Node firstNode = listElement.getFirstChild();
+		while (firstNode != null) {
+			if (firstNode instanceof TextListItemElement) {
+				itemList.add(new ListItem((TextListItemElement) firstNode));
+			}
+			firstNode = firstNode.getNextSibling();
+		}
+		return itemList;
+	}
+
+	/**
+	 * Return the number of direct child items in this List.
+	 * 
+	 * @return the number of direct child items in this List.
+	 */
+	public int size() {
+		int size = 0;
+		Node firstNode = listElement.getFirstChild();
+		while (firstNode != null) {
+			if (firstNode instanceof TextListItemElement) {
+				size++;
+			}
+			firstNode = firstNode.getNextSibling();
+		}
+		return size;
+	}
+
+	/**
+	 * Replace the item at the specified location in this List with the
+	 * specified item.
+	 * 
+	 * @param location
+	 *            the index to put the specified item.
+	 * @param item
+	 *            the new item to be added.
+	 * @return the previous element at the index.
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public ListItem set(int location, ListItem item) {
+		TextListItemElement itemElement = (TextListItemElement) (item.getOdfElement().cloneNode(true));
+		Node oldNode = getItemByLocation(location);
+		listElement.replaceChild(itemElement, oldNode);
+		ListItem newItem = new ListItem(itemElement);
+		newItem.setParagraphDecorator(decorator);
+		return newItem;
+	}
+
+	/**
+	 * Replace the item at the specified location in this List with the
+	 * specified item content.
+	 * 
+	 * @param location
+	 *            the index to insert. The start number is 0.
+	 * @param itemContent
+	 *            the list item content to be added.
+	 * @return the previous element at the index.
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public ListItem set(int location, String itemContent) {
+		OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+		TextListItemElement listItemElement = ownerDocument.newOdfElement(TextListItemElement.class);
+		Node oldNode = getItemByLocation(location);
+		listElement.replaceChild(listItemElement, oldNode);
+		ListItem item = new ListItem(listItemElement);
+		item.setParagraphDecorator(decorator);
+		item.setTextContent(itemContent);
+		return item;
+	}
+
+	/**
+	 * Remove the item at the specified location from this List.
+	 * 
+	 * @param location
+	 *            the index of the item to be removed.
+	 * @return true if this List is modified, false otherwise.
+	 * @exception IndexOutOfBoundsException
+	 *                when the <code>location</code> is out of the List range.
+	 */
+	public boolean removeItem(int location) {
+		TextListItemElement itemElement = getItemByLocation(location);
+		if (itemElement == null) {
+			return false;
+		} else {
+			OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+			Document doc = (Document) ownerDocument.getDocument();
+			doc.removeElementLinkedResource(itemElement);
+			listElement.removeChild(itemElement);
+			return true;
+		}
+	}
+
+	/**
+	 * Remove the specified item from this List.
+	 * 
+	 * @param item
+	 *            the item to be removed.
+	 * @return true if this List is modified, false otherwise.
+	 */
+	public boolean removeItem(ListItem item) {
+		TextListItemElement itemElement = item.getOdfElement();
+		OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+		Document doc = (Document) ownerDocument.getDocument();
+		doc.removeElementLinkedResource(itemElement);
+		Node removedNode = listElement.removeChild(itemElement);
+		if (removedNode == null) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	/**
+	 * Remove all the items in the collection from this list
+	 * 
+	 * @param items
+	 *            the collection of items to be removed.
+	 * @return true if this List is modified, false otherwise.
+	 */
+	public boolean removeItems(java.util.List<ListItem> items) {
+		boolean listChanged = false;
+		for (ListItem item : items) {
+			TextListItemElement itemElement = item.getOdfElement();
+			OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+			Document doc = (Document) ownerDocument.getDocument();
+			doc.removeElementLinkedResource(itemElement);
+			Node removedNode = listElement.removeChild(itemElement);
+			if (removedNode != null) {
+				listChanged = true;
+			}
+		}
+		return listChanged;
+	}
+
+	/**
+	 * Remove all items from this List.
+	 */
+	public void clear() {
+		Node firstChild = listElement.getFirstChild();
+		while (firstChild != null) {
+			if (firstChild instanceof TextListItemElement) {
+				Node removedNode = firstChild;
+				firstChild = firstChild.getNextSibling();
+				listElement.removeChild(removedNode);
+			} else {
+				firstChild = firstChild.getNextSibling();
+			}
+		}
+	}
+
+	/**
+	 * Remove this list from its container.
+	 */
+	public void remove() {
+		Node parentElement = listElement.getParentNode();
+		OdfFileDom ownerDocument = (OdfFileDom) listElement.getOwnerDocument();
+		Document doc = (Document) ownerDocument.getDocument();
+		doc.removeElementLinkedResource(listElement);
+		parentElement.removeChild(listElement);
+	}
+
+	/**
+	 * Return whether the numbering of this list is continuing,
+	 * or whether the numbering of the preceding list is continued or not.
+	 * 
+	 * @return true if the numbering of this list is continuing,
+	 *         false if not.
+	 */
+	public boolean isContinueNumbering() {
+		Boolean isContinueNumbering = listElement.getTextContinueNumberingAttribute();
+		if (isContinueNumbering == null) {
+			String continueList = listElement.getTextContinueListAttribute();
+			if (continueList != null) {
+				return true;
+			} else {
+				return false;
+			}
+		} else {
+			return isContinueNumbering;
+		}
+	}
+
+	/**
+	 * Set whether the numbering of the preceding list is continued or not. This
+	 * method will set the attribute "text:continue-numbering" of list element.
+	 * As ODF specification describes, this attribute is ignored, if attribute
+	 * <text:continue-list> is present, the user can call
+	 * <code>setContinueList(List)</code> to set this attribute. This method is
+	 * a easy way to set a list continue numbering, while
+	 * <code>setContinueList(List)</code> is an advance way to set a list
+	 * numbering. For example, there are three lists ListA, ListB and ListC in
+	 * order. If the user call set ListC.setContinueNumbering, the first list
+	 * item in ListC is the number of the last item in ListB incremented by one.
+	 * It easy, no need to get the reference of ListB. While if the user need
+	 * the first list item in ListC is the number of the last item in ListA
+	 * incremented by one, he must use ListC.setContinueList(ListA).
+	 * 
+	 * 
+	 * @param isContinueNumbering
+	 *            If <code>isContinueNumbering</code> is true, and
+	 *            text:continue-list attribute is not present and the numbering
+	 *            style of the preceding list is the same as the current list,
+	 *            the number of the first list item in the current list is the
+	 *            number of the last item in the preceding list incremented by
+	 *            one.the list is continue numbering, otherwise if the
+	 *            text:continue-list attribute is not present, the numbering of
+	 *            the preceding list is not continued.
+	 * @see #setContinueList(List)
+	 */
+	public void setContinueNumbering(boolean isContinueNumbering) {
+		if (getType() == ListType.NUMBER) {
+			listElement.setTextContinueNumberingAttribute(isContinueNumbering);
+		}
+	}
+
+	/**
+	 * Get the preceding list whose numbering is continued by this list. 
+	 * <p>Now only support to get the continued list reference in the same ListContainer and the same Level.
+	 * 
+	 * @return the continued list of this list. If the list has no continued list,
+	 *         it will return null.
+	 */
+	public List getContinueList() {
+		List continueList = null;
+		if (isContinueNumbering()) {
+			TextListElement continueListElement = null;
+			String continueListID = listElement.getTextContinueListAttribute();
+			if (continueListID != null) {
+				Node parentElement = listElement.getParentNode();
+				Node firstNode = parentElement.getFirstChild();
+				while (firstNode != null) {
+					if (firstNode instanceof TextListElement) {
+						TextListElement listElement = (TextListElement) firstNode;
+						String xmlID = listElement.getXmlIdAttribute();
+						if (continueListID.equals(xmlID)) {
+							continueListElement = (TextListElement) firstNode;
+							break;
+						}
+					}
+					firstNode = firstNode.getNextSibling();
+				}
+			} else {
+				Node preNode = listElement.getPreviousSibling();
+				while (preNode != null) {
+					if (preNode instanceof TextListElement) {
+						continueListElement = (TextListElement) preNode;
+						break;
+					}
+					preNode = preNode.getPreviousSibling();
+				}
+			}
+			continueList = new List(continueListElement);
+		}
+		return continueList;
+	}
+
+	/**
+	 * Set the list whose numbering is continued by this list.
+	 * This is an advance way to set a list
+	 * numbering. For example, there are three lists ListA, ListB and ListC in
+	 * order. If the user needs the first list item in ListC is the number of the
+	 * last item in ListA incremented by one, he must use
+	 * ListC.setContinueList(ListA).
+	 * 
+	 * @param continueList
+	 *            the continued list of this list.
+	 * @see #setContinueNumbering(boolean)
+	 */
+	public void setContinueList(List continueList) {
+		if (getType() == ListType.NUMBER) {
+			String xmlId = continueList.listElement.getXmlIdAttribute();
+			if (xmlId != null) {
+				listElement.setTextContinueListAttribute(xmlId);
+			} else {
+				xmlId = getUniqueXMLID();
+				continueList.listElement.setXmlIdAttribute(xmlId);
+				listElement.setTextContinueListAttribute(xmlId);
+			}
+			listElement.setTextContinueNumberingAttribute(true);
+		}
+	}
+
+	/**
+	 * Get the level of this list.
+	 * <p>
+	 * Every list has a list level. If a list is not contained in another list,
+	 * its list level is 1. If a list is contained within another list, the list
+	 * level of the contained list is the list level of the list in which it is
+	 * contained incremented by one. If a list is contained in a table cell or
+	 * text box, its list level returns to 1, even though the table or text box
+	 * may be nested in another list. Every list with a list level of 1 defines
+	 * a list and the counter domain for its list items and any sub list of that
+	 * list. Each sub list starts a counter for its list items and any sub list
+	 * it may contain.
+	 * 
+	 * @return list level.
+	 */
+	public int getLevel() {
+		int level = 1;
+		Node parentNode = listElement.getParentNode();
+		while (parentNode != null) {
+			if (parentNode instanceof TextListElement) {
+				level++;
+			}
+			if (parentNode instanceof TableTableCellElementBase) {
+				break;
+			}
+			parentNode = parentNode.getParentNode();
+		}
+		return level;
+	}
+
+	/**
+	 * Get the instance of TextListElement which represents this list.
+	 * 
+	 * @return the instance of TextListElement.
+	 */
+	public TextListElement getOdfElement() {
+		return listElement;
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder strBuilder = new StringBuilder();
+		int level = getLevel();
+		String levelPrefix = "";
+		int i = 1;
+		while (i < level) {
+			levelPrefix += " ";
+			i++;
+		}
+		String splitStr = "";
+		String header = getHeader();
+		if (header != null) {
+			strBuilder.append(levelPrefix);
+			strBuilder.append(header);
+			splitStr = "\n";
+		}
+		String itemPrefix = "• ";
+		int j = 0;
+		if (getType() == ListType.NUMBER) {
+			itemPrefix = ". ";
+			j = 1;
+		}
+		for (ListItem item : getItems()) {
+			strBuilder.append(splitStr);
+			strBuilder.append(levelPrefix);
+			if (j > 0) {
+				strBuilder.append(j++);
+			}
+			strBuilder.append(itemPrefix);
+			strBuilder.append(item.toString());
+			splitStr = "\n";
+		}
+		return strBuilder.toString();
+	}
+
+	// find the insert node.
+	private TextListItemElement getItemByLocation(int location) {
+		if (location < 0) {
+			throw new IndexOutOfBoundsException("the location " + location + " is is out of the List range.");
+		}
+		Node firstNode = listElement.getFirstChild();
+		TextListItemElement positionNode = null;
+		int i = 0;
+		while (firstNode != null) {
+			if (firstNode instanceof TextListItemElement) {
+				if (i == location) {
+					break;
+				}
+				i++;
+			}
+			firstNode = firstNode.getNextSibling();
+		}
+		if ((i == location) && (firstNode instanceof TextListItemElement)) {
+			positionNode = (TextListItemElement) firstNode;
+		}
+		if ((location != 0) && (i < location)) {
+			throw new IndexOutOfBoundsException("the location " + location + " is is out of the List range.");
+		}
+		return positionNode;
+	}
+
+	private String getUniqueXMLID() {
+		return "list" + Math.round(Math.random() * 100000000);
+	}
+
+	/**
+	 * Answers an Iterator on the items of this List. The items are iterated in
+	 * the same order that they occur in the List.
+	 * 
+	 * @return an Iterator on the items of this List
+	 * 
+	 * @see java.util.Iterator
+	 */
+	/*
+	 * public Iterator<ListItem> iterator() { throw new
+	 * UnsupportedOperationException("todo"); }
+	 */
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListContainer.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListContainer.java
new file mode 100644
index 0000000..cbe6c7e
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListContainer.java
@@ -0,0 +1,99 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.pkg.OdfElement;
+
+/**
+ * ListContainer is a container which maintains List(s) as element(s). List(s)
+ * can be added, removed and iterated in this container.
+ * <p>
+ * All of the components which need to hold a List, must implement this
+ * interface. For example, <text:list> element is under <office:text>
+ * element according to ODF specification. So TextDocument is a type of
+ * ListContainer which holds List directly. TextDocument must implement this
+ * interface. While Presentation Notes is also a type of ListContainer, although
+ * <presentation:notes> is not a element with which the <text:list> element is
+ * usable. <presentation:notes> can have child element <draw:frame> and
+ * <draw:frame> can have child element <draw:text-box>. <text:list> is usable
+ * with the <draw:text-box> element. Notes is an indirectly ListContainer which
+ * let user operate List easily.
+ * 
+ * @see List
+ * @see org.odftoolkit.simple.TextDocument
+ * @see org.odftoolkit.simple.presentation.Notes
+ * 
+ * @since 0.4
+ */
+public interface ListContainer {
+
+	/**
+	 * Get the ODF element which can have <text:list> as child
+	 * element directly according to ODF specification. This Element will help to find the
+	 * position to insert a new List. For example, <text:list> element is
+	 * usable with <office:text> element, so TextDocument will return
+	 * OfficeTextElement. While Presentation Notes is an indirectly
+	 * ListContainer, which holds List with the help of its grand-child element
+	 * <draw:text-box>, so for Notes, DrawTextBoxElement should be return.
+	 * 
+	 * @return container element which can hold <text:list>.
+	 */
+	public OdfElement getListContainerElement();
+
+	/**
+	 * Add a new List to this container.
+	 * 
+	 * @return added list.
+	 */
+	public List addList();
+
+	/**
+	 * Add a List with specified ListDecorator to this container.
+	 * 
+	 * @param decorator
+	 *            the specified ListDecorator
+	 * @return added list.
+	 */
+	public List addList(ListDecorator decorator);
+
+	/**
+	 * Remove the existing List from this container.
+	 * 
+	 * @return true, if the container contains this List.
+	 */
+	public boolean removeList(List list);
+
+	/**
+	 * Remove all Lists from this container.
+	 */
+	public void clearList();
+
+	/**
+	 * Return an Iterator of the Lists in this ListContainer. The Lists are
+	 * iterated in the same order that they occur in the ListContainer.
+	 * 
+	 * @return an Iterator of the Lists in this ListContainer
+	 * 
+	 * @see java.util.Iterator
+	 */
+	public Iterator<List> getListIterator();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListDecorator.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListDecorator.java
new file mode 100644
index 0000000..367ccba
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListDecorator.java
@@ -0,0 +1,85 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+/**
+ * ListDecorator is a decorator which decides how to decorate a List and its
+ * ListItems.
+ * <p>
+ * Every list, including sub lists, may have a list style which is applied to
+ * its list items and sub lists. ListDecorator holds this style and decides the
+ * appearance of a list. List style is applied by invoking decorateList(List),
+ * while list item style is applied by invoking decorateListItem(ListItem).
+ * <p>
+ * A ListDecorator specified for a sub list overrides the ListDecorator
+ * specified for the list in which the sub list is contained.
+ * 
+ * @since 0.4
+ */
+public interface ListDecorator {
+
+	/**
+	 * The supported list types till now.
+	 * 
+	 * @since 0.4
+	 */
+	public static enum ListType {
+		/**
+		 * BULLET specifies a list type where list items are preceded by
+		 * bullets.
+		 */
+		BULLET,
+
+		/**
+		 * NUMBER specifies a list type where list items are preceded by
+		 * numbers.
+		 */
+		NUMBER,
+
+		/**
+		 * IMAGE specifies a list type where list items are preceded by images.
+		 */
+		IMAGE
+	}
+
+	/**
+	 * Decorate the specifies <code>list</code>, of which style is set.
+	 * 
+	 * @param list
+	 *            the List is decorated.
+	 */
+	public void decorateList(List list);
+
+	/**
+	 * Decorate the specifies <code>item</code> in a List, of which style is
+	 * set.
+	 * 
+	 * @param item
+	 *            the ListItem is decorated.
+	 */
+	public void decorateListItem(ListItem item);
+
+	/**
+	 * Get the ListType of this ListDecorator.
+	 * 
+	 * @return the ListType of this ListDecorator.
+	 */
+	public ListType getListType();
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListItem.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListItem.java
new file mode 100644
index 0000000..18194da
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/ListItem.java
@@ -0,0 +1,351 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.Iterator;
+
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.text.list.ListDecorator.ListType;
+import org.w3c.dom.Node;
+
+/**
+ * ListItem represents an item in a list. ListItem can have text content or sub
+ * List.
+ * 
+ * @since 0.4
+ */
+public class ListItem implements ListContainer {
+
+	// <text:list-item>
+	private TextListItemElement listItemElement;
+	private ListDecorator paragraphDecorator;
+	private ListContainerImpl listContainerImpl = new ListContainerImpl();
+
+	/**
+	 * Constructor with list item element only.
+	 * 
+	 * @param element
+	 *            the list item odf element
+	 */
+	ListItem(TextListItemElement element) {
+		this(element, null);
+	}
+
+	/**
+	 * Constructor with item content set
+	 * 
+	 * @param element
+	 *            the list item odf element
+	 * @param content
+	 *            item text content
+	 */
+	ListItem(TextListItemElement element, String content) {
+		listItemElement = element;
+		setTextContent(content);
+	}
+
+	/**
+	 * Get the instance of TextListItemElement which represents this list item.
+	 * 
+	 * @return the instance of TextListItemElement
+	 */
+	public TextListItemElement getOdfElement() {
+		return listItemElement;
+	}
+
+	/**
+	 * Get item text content. If this item has a List, its content is not
+	 * included.
+	 * 
+	 * @return the text content of this item
+	 */
+	public String getTextContent() {
+		Node child = listItemElement.getFirstChild();
+		while (child != null) {
+			if (child instanceof TextPElement) {
+				return child.getTextContent();
+			}
+			child = child.getNextSibling();
+		}
+		return null;
+	}
+
+	/**
+	 * Set item text content.
+	 * 
+	 * @param content
+	 *            item text content.
+	 */
+	public void setTextContent(String content) {
+		if (content != null) {
+			Node child = listItemElement.getFirstChild();
+			Node positionNode = null;
+			TextPElement pElement = null;
+			while (child != null) {
+				if (child instanceof TextNumberElement) {
+					positionNode = child.getNextSibling();
+					child = child.getNextSibling();
+				} else if ((child instanceof TextPElement) && (pElement == null)) {
+					pElement = (TextPElement) child;
+					child = child.getNextSibling();
+				} else if ((child instanceof TextListElement) && (positionNode == null)) {
+					positionNode = child;
+					child = child.getNextSibling();
+				} else {
+					Node tmp = child;
+					child = child.getNextSibling();
+					listItemElement.removeChild(tmp);
+				}
+			}
+			if (pElement == null) {
+				if (positionNode == null) {
+					pElement = listItemElement.newTextPElement();
+				} else {
+					pElement = ((OdfFileDom) listItemElement.getOwnerDocument()).newOdfElement(TextPElement.class);
+					listItemElement.insertBefore(pElement, positionNode);
+				}
+			}
+			pElement.setTextContent(content);
+			if (paragraphDecorator != null) {
+				paragraphDecorator.decorateListItem(this);
+			} else {
+				// paragraphDecorator is null when the owner List is constructed
+				// by List(TextListElement).
+				Node previousSibling = listItemElement.getPreviousSibling();
+				String pElementStyleName = null;
+				while (previousSibling != null) {
+					if (previousSibling instanceof TextListItemElement) {
+						Node previousChild = previousSibling.getFirstChild();
+						while (previousChild != null) {
+							if (previousChild instanceof TextPElement) {
+								TextPElement previousPElement = (TextPElement) previousChild;
+								pElementStyleName = previousPElement.getTextStyleNameAttribute();
+								break;
+							}
+							previousChild = previousChild.getNextSibling();
+						}
+						break;
+					}
+					previousSibling = previousSibling.getPreviousSibling();
+				}
+				if (pElementStyleName != null) {
+					pElement.setTextStyleNameAttribute(pElementStyleName);
+				}
+
+			}
+		}
+	}
+
+	/**
+	 * Remove this item from its owner list.
+	 */
+	public void remove() {
+		Node parentElement = listItemElement.getParentNode();
+		OdfFileDom ownerDocument = (OdfFileDom) listItemElement.getOwnerDocument();
+		Document doc = (Document) ownerDocument.getDocument();
+		doc.removeElementLinkedResource(listItemElement);
+		parentElement.removeChild(listItemElement);
+	}
+
+	/**
+	 * Get the start number of this item.
+	 * <p>
+	 * A value can be specified that restarts numbering of a list at the current
+	 * item. This feature can only be applied to items in a list with a
+	 * numbering list style.
+	 * 
+	 * @return the start number of this item. If there is no start number
+	 *         setting on this item or the owner list is not a numbering list,
+	 *         <code>null</code> will be returned.
+	 */
+	public Integer getStartNumber() {
+		if (getOwnerList().getType() == ListType.NUMBER) {
+			return listItemElement.getTextStartValueAttribute();
+		}
+		return null;
+	}
+
+	/**
+	 * Set the start number of this item.
+	 * <p>
+	 * A value can be specified that restarts numbering of a list at the current
+	 * item. This feature can only be applied to items in a list with a
+	 * numbering list style.
+	 * 
+	 * @param number
+	 *            the start number to be set.
+	 * @throws IllegalArgumentException if <code>number < 0</code>.
+	 */
+	public void setStartNumber(Integer number) {
+		if (number < 0) {
+			throw new IllegalArgumentException("start number should be a non-negative integer.");
+		}
+		if (getOwnerList().getType() == ListType.NUMBER) {
+			listItemElement.setTextStartValueAttribute(number);
+		}
+	}
+
+	/**
+	 * Get the number format of this item.
+	 * <p>
+	 * List item can contain the text of a formatted number which is present
+	 * when a list style is applied to an element whose corresponding list level
+	 * style specifies that the list label is a number. This text may be used by
+	 * consumers that do not support the automatic generation of numbering but
+	 * should be ignored by consumers that do support it.
+	 */
+	public String getNumberFormat() {
+		String format = null;
+		if (getOwnerList().getType() == ListType.NUMBER) {
+			Node child = listItemElement.getFirstChild();
+			if ((child != null) && (child instanceof TextNumberElement)) {
+				format = ((TextNumberElement) child).getTextContent();
+			}
+		}
+		return format;
+	}
+
+	/**
+	 * Set the number format of this item.
+	 * <p>
+	 * List item can contain the text of a formatted number which is present
+	 * when a list style is applied to an element whose corresponding list level
+	 * style specifies that the list label is a number. This text may be used by
+	 * consumers that do not support the automatic generation of numbering but
+	 * should be ignored by consumers that do support it.
+	 * 
+	 * @param format
+	 *            the number format to be set.
+	 */
+	public void setNumberFormat(String format) {
+		if (getOwnerList().getType() == ListType.NUMBER) {
+			TextNumberElement textNumberElement = null;
+			Node child = listItemElement.getFirstChild();
+			if (child == null) {
+				textNumberElement = listItemElement.newTextNumberElement();
+			} else {
+				if (child instanceof TextNumberElement) {
+					textNumberElement = (TextNumberElement) child;
+				} else {
+					textNumberElement = ((OdfFileDom) listItemElement.getOwnerDocument())
+							.newOdfElement(TextNumberElement.class);
+					listItemElement.insertBefore(textNumberElement, child);
+				}
+			}
+			textNumberElement.setTextContent(format);
+		}
+	}
+
+	/**
+	 * Answers the index of the item in its owner list.
+	 * 
+	 * @return index of the item.
+	 */
+	public int getIndex() {
+		Node firstNode = listItemElement.getParentNode().getFirstChild();
+		int i = 0;
+		while (firstNode != null) {
+			if (firstNode instanceof TextListItemElement) {
+				if (firstNode == listItemElement) {
+					break;
+				} else {
+					i++;
+				}
+			}
+			firstNode = firstNode.getNextSibling();
+		}
+		return i;
+	}
+
+	/**
+	 * Get the List which contains this ListItem.
+	 */
+	public List getOwnerList() {
+		Node parent = listItemElement.getParentNode();
+		if (parent instanceof TextListElement) {
+			return new List((TextListElement) parent);
+		}
+		return null;
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder strBuilder = new StringBuilder();
+		String numberFormat = getNumberFormat();
+		String splitStr = "";
+		if (numberFormat != null) {
+			strBuilder.append(numberFormat);
+			strBuilder.append(" ");
+			splitStr = "\n";
+		}
+		String textContent = getTextContent();
+		if (textContent != null) {
+			strBuilder.append(textContent);
+			splitStr = "\n";
+		}
+		Iterator<List> lists = getListIterator();
+		while (lists.hasNext()) {
+			strBuilder.append(splitStr);
+			strBuilder.append(lists.next().toString());
+		}
+		return strBuilder.toString();
+	}
+
+	public OdfElement getListContainerElement() {
+		return listContainerImpl.getListContainerElement();
+	}
+	
+	public List addList() {
+		return listContainerImpl.addList();
+	}
+
+	public List addList(ListDecorator decorator) {
+		return listContainerImpl.addList(decorator);
+	}
+	
+	public void clearList() {
+		listContainerImpl.clearList();
+	}
+	
+	public Iterator<List> getListIterator() {
+		return listContainerImpl.getListIterator();
+	}
+
+	public boolean removeList(List list) {
+		return listContainerImpl.removeList(list);
+	}
+
+	private class ListContainerImpl extends AbstractListContainer {
+		public OdfElement getListContainerElement() {
+			return listItemElement;
+		}
+	}
+
+	// set ListDecorator for decorating item, only used by List.
+	void setParagraphDecorator(ListDecorator decorator) {
+		paragraphDecorator = decorator;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/NumberDecorator.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/NumberDecorator.java
new file mode 100644
index 0000000..cdced8b
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/NumberDecorator.java
@@ -0,0 +1,155 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+
+/**
+ * NumberDecorator is an implementation of the ListDecorator interface,
+ * decorates a given List as number list. User can extend this class and realize
+ * their own list and list item style. For example, set a specifies list item
+ * with red color.
+ * <p>
+ * A NumberDecorator can be reused in the same Document.
+ * 
+ * @since 0.4
+ */
+public class NumberDecorator implements ListDecorator {
+
+	private static String[] DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES = { null, "0.501cm", "1cm", "1.501cm", "2cm",
+			"2.501cm", "3.001cm", "3.502cm", "4.001cm", "4.502cm" };
+	private static String DEFAULT_TEXT_MIN_LABEL_WIDTH = "0.499cm";
+	private static String DEFAULT_FONT_NAME = "Tahoma";
+	private static String DEFAULT_NUM_FORMAT = "1";
+	private static String DEFAULT_NUM_SUFFIX = ".";
+	private static String DEFAULT_NAME = "Simple_Default_Number_List";
+
+	private OdfTextListStyle listStyle;
+	private OdfStyle paragraphStyle;
+	private OdfOfficeAutomaticStyles styles;
+
+	/**
+	 * Constructor with Document.
+	 * 
+	 * @param doc
+	 *            the Document which this NumberDecorator will be used on.
+	 */
+	public NumberDecorator(Document doc) {
+		OdfContentDom contentDocument;
+		try {
+			contentDocument = doc.getContentDom();
+			styles = contentDocument.getAutomaticStyles();
+			OdfOfficeStyles documentStyles = doc.getDocumentStyles();
+			listStyle = styles.getListStyle(DEFAULT_NAME);
+			// create number style
+			if (listStyle == null) {
+				listStyle = styles.newListStyle();
+				// <style:style style:name="Numbering_20_Symbols"
+				// style:display-name="Numbering Symbols" style:family="text" />
+				getOrCreateStyleByName(documentStyles, styles, "Numbering_20_Symbols", OdfStyleFamily.Text);
+				for (int i = 0; i < 10; i++) {
+					TextListLevelStyleNumberElement listLevelElement = listStyle.newTextListLevelStyleNumberElement(
+							DEFAULT_NUM_FORMAT, i + 1);
+					// get from default style element
+					listLevelElement.setTextStyleNameAttribute("Numbering_20_Symbols");
+					listLevelElement.setStyleNumSuffixAttribute(DEFAULT_NUM_SUFFIX);
+					StyleListLevelPropertiesElement styleListLevelPropertiesElement = listLevelElement
+							.newStyleListLevelPropertiesElement();
+					if (DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES[i] != null) {
+						styleListLevelPropertiesElement
+								.setTextSpaceBeforeAttribute(DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES[i]);
+					}
+					styleListLevelPropertiesElement.setTextMinLabelWidthAttribute(DEFAULT_TEXT_MIN_LABEL_WIDTH);
+					StyleTextPropertiesElement styleTextPropertiesElement = listLevelElement
+							.newStyleTextPropertiesElement("true");
+					styleTextPropertiesElement.setStyleFontNameAttribute(DEFAULT_FONT_NAME);
+				}
+				// listStyle.setStyleNameAttribute(DEFAULT_NAME);
+			}
+			// create default paragraph style
+			// <style:style style:name="P3" style:family="paragraph"
+			// style:parent-style-name="Default_20_Text"
+			// style:list-style-name="L1"
+			// />
+			paragraphStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+			// <style:style style:name="Default_20_Text"
+			// style:display-name="Default Text" style:family="paragraph"
+			// style:class="text" />
+			// <style:style style:name="Standard" style:family="paragraph"
+			// style:class="text" />
+			getOrCreateStyleByName(documentStyles, styles, "Default_20_Text", OdfStyleFamily.Paragraph);
+			paragraphStyle.setStyleParentStyleNameAttribute("Default_20_Text");
+			paragraphStyle.setStyleListStyleNameAttribute(listStyle.getStyleNameAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(NumberDecorator.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	public void decorateList(List list) {
+		TextListElement listElement = list.getOdfElement();
+		listElement.setTextStyleNameAttribute(listStyle.getStyleNameAttribute());
+	}
+
+	public void decorateListItem(ListItem item) {
+		TextListItemElement listItemElement = item.getOdfElement();
+		Node child = listItemElement.getFirstChild();
+		while (child != null) {
+			if (child instanceof TextPElement) {
+				TextPElement pElement = (TextPElement) child;
+				pElement.setTextStyleNameAttribute(paragraphStyle.getStyleNameAttribute());
+			}
+			child = child.getNextSibling();
+		}
+	}
+
+	public ListType getListType() {
+		return ListType.NUMBER;
+	}
+
+	private OdfStyle getOrCreateStyleByName(OdfOfficeStyles documentStyles, OdfOfficeAutomaticStyles styles,
+			String styleName, OdfStyleFamily styleFamily) {
+		OdfStyle odfStyle = documentStyles.getStyle(styleName, styleFamily);
+		if (odfStyle == null) {
+			styles.getStyle(styleName, styleFamily);
+		}
+		if (odfStyle == null) {
+			odfStyle = styles.newStyle(styleFamily);
+			odfStyle.setStyleNameAttribute(styleName);
+			odfStyle.setStyleDisplayNameAttribute(styleName);
+		}
+		return odfStyle;
+	}
+}
diff --git a/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/OutLineDecorator.java b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/OutLineDecorator.java
new file mode 100644
index 0000000..660edc7
--- /dev/null
+++ b/trunk/simple/src/main/java/org/odftoolkit/simple/text/list/OutLineDecorator.java
@@ -0,0 +1,159 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleListLevelPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListItemElement;
+import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.simple.Document;
+import org.w3c.dom.Node;
+
+/**
+ * OutLineDecorator is an implementation of the ListDecorator interface,
+ * decorates a given List as a special number list with outline. User can extend
+ * this class and realize their own list and list item style. For example, set a
+ * specifies list item with red color.
+ * <p>
+ * An OutLineDecorator can be reused in the same Document.
+ * 
+ * @since 0.4
+ */
+public class OutLineDecorator implements ListDecorator {
+
+	private static String[] DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES = { null, "0.501cm", "1cm", "1.501cm", "2cm",
+			"2.501cm", "3.001cm", "3.502cm", "4.001cm", "4.502cm" };
+	private static String DEFAULT_TEXT_MIN_LABEL_WIDTH = "0.499cm";
+	private static String DEFAULT_FONT_NAME = "Tahoma";
+	private static String DEFAULT_NUM_FORMAT = "1";
+	private static String DEFAULT_NUM_SUFFIX = ".";
+	private static String DEFAULT_NAME = "Simple_Default_Outline_List";
+
+	private OdfTextListStyle listStyle;
+	private OdfStyle paragraphStyle;
+	private OdfOfficeAutomaticStyles styles;
+
+	/**
+	 * Constructor with Document.
+	 * 
+	 * @param doc
+	 *            the Document which this OutLineDecorator will be used on.
+	 */
+	public OutLineDecorator(Document doc) {
+		OdfContentDom contentDocument;
+		try {
+			contentDocument = doc.getContentDom();
+			styles = contentDocument.getAutomaticStyles();
+			OdfOfficeStyles documentStyles = doc.getDocumentStyles();
+			listStyle = styles.getListStyle(DEFAULT_NAME);
+			// create outline style
+			if (listStyle == null) {
+				listStyle = styles.newListStyle();
+				// <style:style style:name="Numbering_20_Symbols"
+				// style:display-name="Numbering Symbols" style:family="text" />
+				getOrCreateStyleByName(documentStyles, styles, "Numbering_20_Symbols", OdfStyleFamily.Text);
+				for (int i = 0; i < 10; i++) {
+					TextListLevelStyleNumberElement listLevelElement = listStyle.newTextListLevelStyleNumberElement(
+							DEFAULT_NUM_FORMAT, i + 1);
+					// get from default style element
+					listLevelElement.setTextStyleNameAttribute("Numbering_20_Symbols");
+					listLevelElement.setStyleNumSuffixAttribute(DEFAULT_NUM_SUFFIX);
+
+					// different from number decorator.
+					listLevelElement.setTextDisplayLevelsAttribute(i + 1);
+
+					StyleListLevelPropertiesElement styleListLevelPropertiesElement = listLevelElement
+							.newStyleListLevelPropertiesElement();
+					if (DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES[i] != null) {
+						styleListLevelPropertiesElement
+								.setTextSpaceBeforeAttribute(DEFAULT_TEXT_SPACE_BEFORE_ATTRIBUTES[i]);
+					}
+					styleListLevelPropertiesElement.setTextMinLabelWidthAttribute(DEFAULT_TEXT_MIN_LABEL_WIDTH);
+					StyleTextPropertiesElement styleTextPropertiesElement = listLevelElement
+							.newStyleTextPropertiesElement("true");
+					styleTextPropertiesElement.setStyleFontNameAttribute(DEFAULT_FONT_NAME);
+				}
+				// listStyle.setStyleNameAttribute(DEFAULT_NAME);
+			}
+			// create default paragraph style
+			// <style:style style:name="P3" style:family="paragraph"
+			// style:parent-style-name="Default_20_Text"
+			// style:list-style-name="L1"
+			// />
+			paragraphStyle = styles.newStyle(OdfStyleFamily.Paragraph);
+			// <style:style style:name="Default_20_Text"
+			// style:display-name="Default Text" style:family="paragraph"
+			// style:class="text" />
+			// <style:style style:name="Standard" style:family="paragraph"
+			// style:class="text" />
+			getOrCreateStyleByName(documentStyles, styles, "Default_20_Text", OdfStyleFamily.Paragraph);
+			paragraphStyle.setStyleParentStyleNameAttribute("Default_20_Text");
+			paragraphStyle.setStyleListStyleNameAttribute(listStyle.getStyleNameAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(OutLineDecorator.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	public void decorateList(List list) {
+		TextListElement listElement = list.getOdfElement();
+		listElement.setTextStyleNameAttribute(listStyle.getStyleNameAttribute());
+	}
+
+	public void decorateListItem(ListItem item) {
+		TextListItemElement listItemElement = item.getOdfElement();
+		Node child = listItemElement.getFirstChild();
+		while (child != null) {
+			if (child instanceof TextPElement) {
+				TextPElement pElement = (TextPElement) child;
+				pElement.setTextStyleNameAttribute(paragraphStyle.getStyleNameAttribute());
+			}
+			child = child.getNextSibling();
+		}
+	}
+
+	public ListType getListType() {
+		return ListType.NUMBER;
+	}
+
+	private OdfStyle getOrCreateStyleByName(OdfOfficeStyles documentStyles, OdfOfficeAutomaticStyles styles,
+			String styleName, OdfStyleFamily styleFamily) {
+		OdfStyle odfStyle = documentStyles.getStyle(styleName, styleFamily);
+		if (odfStyle == null) {
+			styles.getStyle(styleName, styleFamily);
+		}
+		if (odfStyle == null) {
+			odfStyle = styles.newStyle(styleFamily);
+			odfStyle.setStyleNameAttribute(styleName);
+			odfStyle.setStyleDisplayNameAttribute(styleName);
+		}
+		return odfStyle;
+	}
+}
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/chart/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/chart/package.html
new file mode 100644
index 0000000..4a3e004
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/chart/package.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to manipulate chart in ODF text, presentation and spreadsheet document.
+        <!-- Put @see and @since tags down here. -->
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/field/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/field/package.html
new file mode 100644
index 0000000..e44f670
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/field/package.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to manipulate Fields in ODF text document.
+     <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/navigation/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/navigation/package.html
new file mode 100644
index 0000000..331f568
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/navigation/package.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide classes to operate the content and style of the selected text content.
+        
+        <p>
+        Abstract class Navigation represent the navigate action on the specified document, 
+        and user can iterate all the results of this navigation operation. Abstract class
+        Selection describes one result of navigation.
+        
+        <p>
+        The instance of derived navigation class will give the match condition so that user
+        can get the corresponding derived Selection class instance. e.g. TextNavigation class
+        is used to search the specified text content in the document, and TextStyleNavigation
+        class can select the text which match the specified style.
+        <p>
+        TextSelection class which inherits Selection represents a snippet text of the 
+        paragraph/heading/header/footer, it can be represent by the belonged element and the 
+        text index of this element. User can get delete this result, or replace this text with 
+        other content, add href link for this selections, append the italic style for it and paste 
+        this selection at the front of or the end of other selction.
+        
+        <p>
+        CellSelection inherits TextSelection. It provides a new function to not only replace text 
+        but also reset the cell values.
+        <p>
+       
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/package.html
new file mode 100644
index 0000000..77043cf
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/common/package.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+</head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide text extraction and fields methods to all ODF documents and elements.
+        
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
\ No newline at end of file
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/draw/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/draw/package.html
new file mode 100644
index 0000000..8b7440f
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/draw/package.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+</head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide high level methods to manipulate draw frame and text box.
+        
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
\ No newline at end of file
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/meta/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/meta/package.html
new file mode 100644
index 0000000..f371405
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/meta/package.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide classes to access the metadata of ODF documents. (Incubator Status)
+        <p>
+	This package provides very simple fuctions to set and get the properties of metadata in ODF documents. 
+	The fuctions to access metadata about auto-reload, template and hyperlink behaviour are not completed.
+	       
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/package.html
new file mode 100644
index 0000000..11d3e44
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/package.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+</head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide high level methods to frequently used ODF documents.
+        
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
\ No newline at end of file
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/presentation/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/presentation/package.html
new file mode 100644
index 0000000..a7d2e4f
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/presentation/package.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+</head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide high level methods to ODF presentation documents.
+        
+        <p>Till now, methods to change slide properties and set notes are provided. </p>
+        
+        <p>As to the methods to get/add/delete slides, please refer to org.odftoolkit.simple.PresentationDocument. </p>
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
\ No newline at end of file
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/style/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/style/package.html
new file mode 100644
index 0000000..d84bc17
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/style/package.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to handle style definitions in ODF document.
+        
+	<p>
+	There are two kinds of classes related with style handling in this package: 
+	common used classes from user perspective, and common used style properties from ODF specification perspective.  
+	</p>  
+	<p>
+	Common used classes, such as Font and Border, are defined for users to easily set/get properties. 
+	</p>  
+	<p>
+	Common used style properties, such as TextProperties and TableCellProperties, directly manipulate the style properties defined in ODF document.
+	The users, who are familiar with ODF specification, can use these classes to achieve advanced functions.
+	</p>  
+	<p>
+	More classes and functions will be added in future.
+	</p>  
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/table/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/table/package.html
new file mode 100644
index 0000000..8b01739
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/table/package.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to manipulate table in ODF text and spreadsheet document.
+        
+	<p>
+	Table is a common used feature in ODF. 
+	This package provides convenient methods to manipulate table feature and its child features, such as row, column, cell, cell range.
+	<p>
+	Table represents table in ODF. It provides methods to new a table, delete a table, get rows, 
+	columns, and cells of a table, new a cell range, insert and delete rows and columns, and so on.
+	<p>
+	TableRow and OdfTableColumn represents row and column in ODF. It provides methods to get cells, 
+	get next and previous row and column, set properties of rows and columns, and so on.
+	<p>
+	TableCell represents cell in ODF. It provides many methods to set the properties and values of a cell, 
+	such as horizontal alignment, vertical alignment, value, formula, value format, and so on.
+	<p>
+	TableRange represents a range of cells in ODF. It provides a method to merge a range of cells to a single cell, and some other methods too.
+	<p>
+	CellStyleHandler provides methods to handle styles, for example, defining font and border styles.
+	<p>
+	CellValueAdapter and DefaultCellValueAdapter provide functions to adapt string content to a more proper cell value type as need.
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/text/list/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/text/list/package.html
new file mode 100644
index 0000000..5a07f74
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/text/list/package.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ /************************************************************************
+ *
+  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.
+
+ ************************************************************************/
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to handle list in ODF document.
+        
+        <p>
+        Class List represents a list. It can contain list header, followed by any number of list item elements.
+        ListItem represents an item in a list. ListItem represents list item, which can have text content or sub List.
+        <p>
+        ListContainer is a container which maintains List(s) as element(s). List(s) can be added, removed and iterated in this container.
+        All of the components which need to hold a List, must implement this interface. TextDocument is a typical ListContainer.
+        <p>
+        ListDecorator is a decorator which decides how to decorate a List and its ListItems. BulletDecorator, NumberDecorator, ImageDecorator
+        and OutLineDecorator are default implementations.
+        <p>
+        <!-- Put @see and @since tags down here. -->
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/org/odftoolkit/simple/text/package.html b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/text/package.html
new file mode 100644
index 0000000..c379968
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/org/odftoolkit/simple/text/package.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+        <!--
+
+  @(#)package.html	1.60 98/01/27
+
+ 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+
+
+-->
+    </head>
+    <body bgcolor="white">
+        <!--
+        ##### THIS IS THE TEMPLATE FOR THE PACKAGE DOC COMMENTS. #####
+        ##### TYPE YOUR PACKAGE COMMENTS HERE.  BEGIN WITH A     #####
+        ##### ONE-SENTENCE SUMMARY STARTING WITH A VERB LIKE:    #####
+        -->
+        
+        
+        Provide convenient methods to manipulate frequently used structures in ODF text document, such as list and section.
+        
+    </body>
+</html>
diff --git a/trunk/simple/src/main/javadoc/overview.html b/trunk/simple/src/main/javadoc/overview.html
new file mode 100644
index 0000000..f33caed
--- /dev/null
+++ b/trunk/simple/src/main/javadoc/overview.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+    <head>
+<!--
+  
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+
+-->
+    </head>
+    <body>
+
+		<div class="wikiMainBody"><p><br />
+				The Simple Java API for ODF builds upon the lower-level ODFDOM DOM and Package layer to provide an easy-to-use, high-level Java API for creating, modifying and extracting data from Open Document Format documents.
+			</p>
+			<p>
+			<div id='toc' style='border:solid #DEDEDF 1px;background:#EEE;padding:10px;'>
+
+				<div id='toctitle' style='padding-bottom:5px;font-weight:bold;'>
+
+					<span>Simple Java API for ODF</span>
+				</div>
+				<div id='toccontents' style='list-style-type:none;'><ul><li>1 <a href='#The_ODFDOM_Layers'>Pakages introduction</a></li>
+				<li>2 <a href="#Further_Information">Further information</a></li>
+						</ul></div>
+			</div><h1><a name='The_ODFDOM_Layers'>Packages introduction</a></h1>
+			<p>
+				The design principle is &quot;make users easily to locate the functions they want&quot;. </p>
+				<h3>Document methods</h3>
+				<p>For each frequently used document type, there is a class under package &quot;org.odftoolkit.simple&quot; to provide high level methods to manipulate this kind of documents.</p>
+				<h3>Specific methods for different mimetype</h3>
+				<p>For each frequently used mimetype, their is a package to contain the high level methods for this kind of mimetype, such as org.odftoolkit.simple.text and org.odftoolkit.simple.presentation. The packages for different mimetype contain:
+				<div>
+				<ul>
+				<li>The frequently used features functions, such as org.odftoolkit.simpleodf.chart will contain the function related with chart, org.odftoolkit.simpleodf.text will contain the function related with text content.</li> 
+<li>Specific functions for different mimetypes, for example, the navigation API is put in package &quot;org.odftoolkit.simpleodf.text.search&quot;.</li>
+</ul>
+</div></p> 
+<h3>Features methods</h3>
+<p>there are some packages defined for important common features available for all kinds of documents, such as table, meta and style. The packages for common features will contain the methods for specific features.</p>
+<h3>Common methods</h3>
+<p>There is another package named "org.odftoolkit.simpleodf.common", which contains functions that are not related with a specific document type nor a specific feature. For example, the text extractor functions are put in this package.</p>
+
+
+
+
+<h2><a name='Further_Information'>Further Information</a></h2>
+For further Information about Simple Java API for ODF and related topics please visit following pages:
+<ol>
+	<li><a href="http://incubator.apache.org/odftoolkit/simple/index.html">Simple Java API</a></li>
+	<li><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.html">OpenDocument v1.2 specification - part 1: OpenDocument Schema</a></li>
+	<li><a href="http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html">OpenDocument v1.2 specification - part 3: Packages</a></li>
+	<li><a href="http://incubator.apache.org/odftoolkit/odfdom/index.html">ODFDOM</a></li>
+</ol>
+</p>
+</div>
+</body>
+</html>
diff --git a/trunk/simple/src/sample/org/apache/odftoolkit/simple/sample/ApacheLicenceMetaInfo.java b/trunk/simple/src/sample/org/apache/odftoolkit/simple/sample/ApacheLicenceMetaInfo.java
new file mode 100644
index 0000000..8562084
--- /dev/null
+++ b/trunk/simple/src/sample/org/apache/odftoolkit/simple/sample/ApacheLicenceMetaInfo.java
@@ -0,0 +1,93 @@
+/**********************************************************************

+ * 

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

+ * 

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

+ * regarding copyright ownership.  The ASF licenses this file

+ * to you under the Apache License, Version 2.0 (the

+ * "License"); you may not use this file except in compliance

+ * with the License.  You may obtain a copy of the License at

+ * 

+ *  http://www.apache.org/licenses/LICENSE-2.0

+ * 

+ * Unless required by applicable law or agreed to in writing,

+ * software distributed under the License is distributed on an

+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+ * KIND, either express or implied.  See the License for the

+ * specific language governing permissions and limitations

+ * under the License.

+ * 

+ **********************************************************************/

+package org.apache.odftoolkit.simple.sample;

+

+import java.io.File;

+import java.io.FilenameFilter;

+

+import org.odftoolkit.odfdom.pkg.OdfFileDom;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.meta.Meta;

+import org.odftoolkit.odfdom.dom.attribute.meta.MetaValueTypeAttribute.Value;

+

+/**

+ * This is a sample which demos how to add Apache Licence info as user defined

+ * mata to ODF documents automatically. This will be a useful function to have

+ * in the future. As we add new unit tests and new test files, we will need to

+ * add license info to those files. This could be done via code like this.

+ * 

+ * Maybe even a 2nd class that will test an ODF file to see if it has the

+ * license in it, or one that will return the license. In the future, after we

+ * release, we could share some code with the Apache RAT project, so they could

+ * automate the testing of ODF files in projects, rather than treat them like

+ * binaries, as they do today. This would help other projects that use ODF

+ * documents, like the OpenOffice project.

+ */

+public class ApacheLicenceMetaInfo {

+	public static void main(String[] args) {

+		String patch = "C:\\resources";

+		File directry = new File(patch);

+		File[] files = directry.listFiles(new FilenameFilter() {

+			@Override

+			public boolean accept(File path, String name) {

+				if (name.contains(".od") || name.contains(".ot")) {

+					return true;

+				} else {

+					return false;

+				}

+			}

+		});

+		String license = "Licensed to the Apache Software Foundation (ASF) under one \n"

+				+ "or more contributor license agreements.  See the NOTICE file \n"

+				+ "distributed with this work for additional information \n"

+				+ "regarding copyright ownership.  The ASF licenses this file \n"

+				+ "to you under the Apache License, Version 2.0 (the \n"

+				+ "\"License\"); you may not use this file except in compliance \n"

+				+ "with the License.  You may obtain a copy of the License at \n"

+				+ "\n"

+				+ " http://www.apache.org/licenses/LICENSE-2.0 \n"

+				+ "\n"

+				+ "Unless required by applicable law or agreed to in writing, \n"

+				+ "software distributed under the License is distributed on an \n"

+				+ "\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY \n"

+				+ "KIND, either express or implied.  See the License for the \n"

+				+ "specific language governing permissions and limitations \n"

+				+ "under the License.";

+		for (File file : files) {

+			try {

+				Document doc = Document.loadDocument(file);

+				OdfFileDom metadom = doc.getMetaDom();

+				Meta metadata = new Meta(metadom);

+				String key = "License";

+				metadata.removeUserDefinedDataByName(key);

+				// org.odftoolkit.odfdom.dom.attribute.meta.MetaValueTypeAttribute.Value

+				metadata.setUserDefinedData(key, Value.STRING.toString(),

+						license);

+				doc.save(file);

+			} catch (Exception e) {

+				e.printStackTrace();

+			}

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/ChartTemplateTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/ChartTemplateTest.java
new file mode 100644
index 0000000..a7c3c7b
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/ChartTemplateTest.java
@@ -0,0 +1,155 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of chart.
+ */
+public class ChartTemplateTest {
+	
+	private static final Logger LOG = Logger.getLogger(ChartTemplateTest.class.getName());
+	private static final String TEST_CHART_TEMPLATE = "/chartTestTemplate.otc";
+
+	@Test
+	public void testLoadingAChartTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_CHART_TEMPLATE));
+		Assert.assertEquals(Document.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingAChartTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_CHART_TEMPLATE));
+		File destination = File.createTempFile("simple-test", ".otc");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewChartTemplate() throws Exception {
+		Document document = ChartDocument.newChartTemplateDocument();
+		Assert.assertEquals(Document.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+
+		Assert.assertEquals(Document.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("simple-test", ".otc");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof ChartDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfChartDocument() throws Exception {
+		ChartDocument document = ChartDocument.newChartDocument();
+		document.changeMode(ChartDocument.OdfMediaType.CHART_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.CHART_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+
+		document = ChartDocument.newChartTemplateDocument();
+		document.changeMode(ChartDocument.OdfMediaType.CHART);
+		Assert.assertEquals(Document.OdfMediaType.CHART.getMediaTypeString(), document.getPackage().getMediaTypeString());
+	}
+	
+	@Test
+	public void testGetOdfMediaType() throws Exception {
+		
+		try {
+			Document.OdfMediaType chartType = ChartDocument.OdfMediaType.getOdfMediaType("CHART");
+			Assert.assertEquals("CHART", chartType.name());
+			Assert.assertEquals("application/vnd.oasis.opendocument.chart", chartType.getMediaTypeString());
+			Assert.assertEquals("odc", chartType.getSuffix());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+	
+	@Test
+	public void testGetMediaTypeString() throws Exception {
+		try {
+			ChartDocument.OdfMediaType odfMediaTypeChart = ChartDocument.OdfMediaType.valueOf(ChartDocument.OdfMediaType.class, ChartDocument.OdfMediaType.CHART.name());
+			String MediaType = odfMediaTypeChart.getMediaTypeString();
+			Assert.assertEquals("application/vnd.oasis.opendocument.chart", MediaType);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testLoadDocumentInputStream() throws Exception {
+		try {
+			InputStream inStream = this.getClass().getResourceAsStream(TEST_CHART_TEMPLATE);
+			ChartDocument chardoc = ChartDocument.loadDocument(inStream);
+			Assert.assertNotNull(chardoc);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+	
+	@Test
+	public void testLoadDocumentFilePath() throws Exception {
+		try {
+			String filePath = this.getClass().getResource(TEST_CHART_TEMPLATE).getPath();
+			ChartDocument chardoc = ChartDocument.loadDocument(filePath);
+			Assert.assertNotNull(chardoc);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testLoadDocumentFile() throws Exception {
+		try {
+			String filePath = this.getClass().getResource(TEST_CHART_TEMPLATE).getPath();
+			File filedoc = new File(filePath);
+			Assert.assertNotNull(filedoc);
+			ChartDocument chardoc = ChartDocument.loadDocument(filedoc);
+			Assert.assertNotNull(chardoc);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/DocumentCreationTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/DocumentCreationTest.java
new file mode 100644
index 0000000..4032f78
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/DocumentCreationTest.java
@@ -0,0 +1,479 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.util.List;
+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.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.text.TextAnchorTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextSpan;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfPackageDocument;
+import org.odftoolkit.odfdom.pkg.OdfXMLFactory;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class DocumentCreationTest {
+
+	private static final Logger LOG = Logger.getLogger(DocumentCreationTest.class.getName());
+	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";
+	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";
+	private static final String TEST_FILE_SAVE_EMBEDDED = TEST_FILE_FOLDER + "testSaveEmbeddedDoc.odt";
+	private static final String TEST_FILE_SAVE_EMBEDDED_OUT = TEST_FILE_FOLDER + "TestSaveEmbeddedDoc_newName.odt";
+	private static final String TEST_FILE_SAVE_EMBEDDED_OUT2 = TEST_FILE_FOLDER + "TestSaveEmbeddedDoc2.odt";
+	private static final String TEST_FILE_SAVE_QUEER_PATH = TEST_FILE_FOLDER + "TestSaveQueerEmbeddedPathDoc1.odt";
+	private static final String CORRUPTED_MIMETYPE_DOC = TEST_FILE_FOLDER + "CorruptedMimetypeDoc.odt";
+	private static final String CORRUPTED_MIMETYPE_DOC_OUT = TEST_FILE_FOLDER + "TestSaveCorruptedMimetypeDoc.odt";
+	private static final String CORRUPTED_MIMETYPE_CHART = TEST_FILE_FOLDER + "CorruptedMimetypeChart.odc";
+	private static final String CORRUPTED_MIMETYPE_CHART_OUT = TEST_FILE_FOLDER + "TestSaveCorruptedMimetypeChart.odc";
+
+	@BeforeClass
+	public static void createEmptyDocs() throws Exception {
+		TextDocument odtDoc1 = TextDocument.newTextDocument();
+		TextDocument odtDoc2 = TextDocument.newTextDocument();
+		odtDoc2.getContentDom();
+		odtDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfTextDocument.odt"));
+
+		GraphicsDocument odgDoc1 = GraphicsDocument.newGraphicsDocument();
+		GraphicsDocument odgDoc2 = GraphicsDocument.newGraphicsDocument();
+		odgDoc2.getContentDom();
+		odgDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfGraphicsDocument.odg"));
+
+		SpreadsheetDocument odsDoc1 = SpreadsheetDocument.newSpreadsheetDocument();
+		SpreadsheetDocument odsDoc2 = SpreadsheetDocument.newSpreadsheetDocument();
+		odsDoc2.getContentDom();
+		odsDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfSpreadsheetDocument.ods"));
+
+		PresentationDocument odpDoc1 = PresentationDocument.newPresentationDocument();
+		PresentationDocument odpDoc2 = PresentationDocument.newPresentationDocument();
+		odpDoc2.getContentDom();
+		odpDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfPresentationDocument.odp"));
+
+		ChartDocument odcDoc1 = ChartDocument.newChartDocument();
+		ChartDocument odcDoc2 = ChartDocument.newChartDocument();
+		odcDoc2.getContentDom();
+		odcDoc1.save(ResourceUtilities.newTestOutputFile("TestEmpty_OdfChartDocument.odc"));
+
+		// loads the ODF document package from the path
+		OdfPackage pkg = OdfPackage.loadPackage(ResourceUtilities
+				.getTestResourceAsStream("TestEmpty_OdfTextDocument.odt"));
+
+		// loads the images from the URLs and inserts the image in the
+		// package, adapting the manifest
+		pkg.insert(ResourceUtilities.getURI(TEST_PIC), "Pictures/" + TEST_PIC, null);
+		// Deactivated as test fail, when test machine is not online
+		// (painful for offline work)
+		// pkg.insert(new
+		// URI("http://odftoolkit.org/attachments/wiki_images/odftoolkit/Table_fruits_diagramm.jpg"),
+		// "someweiredname/tableandfruits.jpg", null);
+		pkg.save(ResourceUtilities.newTestOutputFile("simple-wiki-package.odt"));
+
+		// loads the ODF document from the path
+		Document odfDoc = Document.loadDocument(ResourceUtilities
+				.getTestResourceAsStream("TestEmpty_OdfTextDocument.odt"));
+
+		// get the ODF content as DOM tree representation
+		OdfFileDom odfContent = odfDoc.getContentDom();
+
+		// // W3C XPath initialization ''(JDK5 functionality)'' - XPath is
+		// the path within the XML file
+		// // (Find XPath examples here:
+		// http://www.w3.org/TR/xpath#path-abbrev)
+		XPath xpath2 = odfContent.getXPath();
+
+		// receiving the first paragraph "//text:p[1]" ''(JDK5
+		// functionality)''
+		TextPElement para = (TextPElement) xpath2.evaluate("//text:p[1]", odfContent, XPathConstants.NODE);
+
+		// adding an image - expecting the user to know that
+		// an image consists always of a 'draw:image' and a 'draw:frame'
+		// parent
+
+		// FUTURE USAGE:
+		// para.createDrawFrame().createDrawImage("/myweb.org/images/myHoliday.png",
+		// "/Pictures/myHoliday.png");
+		// Child access methods are still not part of the v0.6.x releases
+		// CURRENT USAGE:
+		OdfDrawFrame odfFrame = (OdfDrawFrame) OdfXMLFactory.newOdfElement(odfContent,
+				DrawFrameElement.ELEMENT_NAME);
+		para.appendChild(odfFrame);
+		OdfDrawImage odfImage = (OdfDrawImage) OdfXMLFactory.newOdfElement(odfContent, OdfDrawImage.ELEMENT_NAME);
+		odfFrame.appendChild(odfImage);
+		odfImage.newImage(ResourceUtilities.getURI(TEST_PIC));
+
+		OdfDrawImage odfImage2 = (OdfDrawImage) OdfXMLFactory.newOdfElement(odfContent, OdfDrawImage.ELEMENT_NAME);
+		odfFrame.appendChild(odfImage2);
+		// Deactivated as test fail, when test machine is not online
+		// (painful for offline work)
+		// odfImage2.newImage(new
+		// URI("http://odftoolkit.org/attachments/wiki_images/odftoolkit/Table_fruits_diagramm.jpg"));
+		odfDoc.save(ResourceUtilities.newTestOutputFile("simple-wiki-dom.odt"));
+
+	}
+
+	@Test
+	public void createEmbeddedDocs() throws Exception {
+		TextDocument odtDoc1 = TextDocument.newTextDocument();
+
+		odtDoc1.insertDocument(TextDocument.newTextDocument(), "Object1/");
+		odtDoc1.insertDocument(TextDocument.newTextDocument(), "Object2/");
+		odtDoc1.insertDocument(Document.loadDocument(ResourceUtilities
+				.getTestResourceAsStream("TestEmpty_OdfGraphicsDocument.odg")), "Object3");
+		odtDoc1.insertDocument(ChartDocument.newChartDocument(), "Object4");
+		odtDoc1.insertDocument(GraphicsDocument.newGraphicsDocument(), "Object5");
+		odtDoc1.insertDocument(PresentationDocument.newPresentationDocument(), "Object6");
+
+		List<Document> embeddedDocs = odtDoc1.getEmbeddedDocuments();
+		LOG.log(Level.INFO, "Embedded Document count: {0}", embeddedDocs.size());
+		odtDoc1.save(ResourceUtilities.newTestOutputFile("TestCreate_EmbeddedDocuments.odt"));
+
+		Assert.assertTrue(embeddedDocs.size() == 6);
+
+		List<Document> embeddedTextDocs = odtDoc1.getEmbeddedDocuments(Document.OdfMediaType.TEXT);
+		LOG.log(Level.INFO, "Only Embedded Text Docs Size: {0}", embeddedTextDocs.size());
+		Assert.assertTrue(embeddedTextDocs.size() == 2);
+
+		List<Document> embeddedChartDocs = odtDoc1.getEmbeddedDocuments(Document.OdfMediaType.CHART);
+		LOG.log(Level.INFO, "Only Embedded Chart Docs Size: {0}", embeddedChartDocs.size());
+		Assert.assertTrue(embeddedChartDocs.size() == 1);
+
+		Document embeddedObject1 = odtDoc1.getEmbeddedDocument("Object1/");
+		LOG.log(Level.INFO, "Embedded Object1 path: {0}", embeddedObject1.getDocumentPath());
+		LOG.log(Level.INFO, "Embedded Object1 media-type: {0}", embeddedObject1.getMediaTypeString());
+		Assert.assertEquals(embeddedObject1.getMediaTypeString(), Document.OdfMediaType.TEXT.getMediaTypeString());
+
+		Document embeddedObject3 = odtDoc1.getEmbeddedDocument("Object3");
+		LOG.log(Level.INFO, "Embedded Object3 path: {0}", embeddedObject3.getDocumentPath());
+		LOG.log(Level.INFO, "Embedded Object3 media-type: {0}", embeddedObject3.getMediaTypeString());
+		Assert.assertEquals(embeddedObject3.getMediaTypeString(), Document.OdfMediaType.GRAPHICS
+				.getMediaTypeString());
+
+		Document embeddedObject6 = odtDoc1.getEmbeddedDocument("Object6/");
+		LOG.log(Level.INFO, "Embedded Object6 path: {0}", embeddedObject6.getDocumentPath());
+		LOG.log(Level.INFO, "Embedded Object6 media-type: {0}", embeddedObject6.getMediaTypeString());
+		Assert.assertEquals(embeddedObject6.getMediaTypeString(), Document.OdfMediaType.PRESENTATION
+				.getMediaTypeString());
+
+	}
+
+	@Test
+	public void accessEmbeddedDocs() {
+		try {
+			Document docWithEmbeddedObjects = Document.loadDocument(TEST_FILE_EMBEDDED);
+			List<Document> embDocs = docWithEmbeddedObjects.getEmbeddedDocuments();
+			String pathToEmbeddedObject = "";
+			for (OdfPackageDocument embDoc : embDocs) {
+				LOG.log(Level.INFO, "Embedded file of {0} internal package path: {1} mediaType: {2}", new Object[] {
+						TEST_FILE_EMBEDDED, embDoc.getDocumentPath(), embDoc.getMediaTypeString() });
+				pathToEmbeddedObject = embDoc.getDocumentPath();
+			}
+
+			Document embDoc = docWithEmbeddedObjects.getEmbeddedDocument(pathToEmbeddedObject);
+			OdfContentDom contentDom = embDoc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			// Make sure the embedded document is being loaded
+
+			// Add text element
+			TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);
+			LOG.log(Level.INFO, "First para: {0}", para.getTextContent());
+			OdfTextSpan spanElem = new OdfTextSpan(contentDom);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			para.appendChild(spanElem);
+
+			// Add frame and image element
+			TextPElement paraLast = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom, XPathConstants.NODE);
+			addImageToDocument(contentDom, paraLast);
+
+			// Access/Update automatic styles
+			OdfOfficeAutomaticStyles autoStyles = embDoc.getContentDom().getAutomaticStyles();
+			OdfStyle autoStyle = autoStyles.getStyle("P1", OdfStyleFamily.Paragraph);
+			Assert.assertEquals(autoStyle.getStyleNameAttribute(), "P1");
+			Assert.assertEquals(autoStyle.getFamilyName(), "paragraph");
+
+			// Access/Update styles.xml
+			OdfStyle documentStyle = embDoc.getDocumentStyles().getStyle("myStyle", OdfStyleFamily.Paragraph);
+			Assert.assertEquals(documentStyle.getStyleNameAttribute(), "myStyle");
+			Assert.assertEquals(documentStyle.getFamilyName(), "paragraph");
+
+			documentStyle.setProperty(StyleTextPropertiesElement.FontWeight, "bold");
+			documentStyle.setProperty(StyleParagraphPropertiesElement.BackgroundColor, "#14EA5D");
+
+			// SAVE / LOAD
+			docWithEmbeddedObjects.save(TEST_FILE_ACCESS_EMBEDDED);
+
+			Document doc2 = Document.loadDocument(TEST_FILE_ACCESS_EMBEDDED);
+			Document embDoc2 = doc2.getEmbeddedDocument("Object 1/");
+			embDoc2.getStylesDom();
+			OdfStyle documentStyle2 = embDoc2.getDocumentStyles().getStyle("myStyle", OdfStyleFamily.Paragraph);
+			String prop2 = documentStyle2.getProperty(StyleTextPropertiesElement.FontWeight);
+			Assert.assertEquals(prop2, "bold");
+
+			TextSpanElement spanTest = (TextSpanElement) xpath.evaluate("//text:p[1]/text:span[1]", contentDom,
+					XPathConstants.NODE);
+			Assert.assertEquals(spanTest.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() + "'");
+		}
+	}
+
+	@Test
+	public void accessEmbeddedWithinEmbeddedDocs() {
+
+		try {
+			Document rootDocument = Document.loadDocument(TEST_FILE_EMBEDDED);
+			// Test DOM Access
+			Assert.assertNotNull(rootDocument.getDocumentStyles());
+			Assert.assertNotNull(rootDocument.getContentDom().getAutomaticStyles());
+			Assert.assertNotNull(rootDocument.getStylesDom());
+			Assert.assertNotNull(rootDocument.getContentDom());
+
+			List<Document> embDocs = rootDocument.getEmbeddedDocuments();
+			int embDocsNumber = embDocs.size();
+			// the document "Object 1/
+			Document embDoc = embDocs.get(0);
+			String pathOfSecondInnerDoc = "Object in Object1/";
+			embDoc.insertDocument(TextDocument.newTextDocument(), pathOfSecondInnerDoc);
+			OdfFileEntry fileEntry = embDoc.getPackage().getFileEntry(embDoc.getDocumentPath() + pathOfSecondInnerDoc);
+			Assert.assertNotNull(fileEntry);
+
+			// get "Object 1/content.xml"
+			OdfContentDom contentDom = embDoc.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			TextPElement lastPara = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom, XPathConstants.NODE);
+			addFrameForEmbeddedDoc(contentDom, lastPara, "Object in Object1");
+			List<Document> emb_embDocs = embDoc.getEmbeddedDocuments();
+			Assert.assertEquals(embDocsNumber + 1, emb_embDocs.size());
+
+			Document emb_embDoc = rootDocument.getEmbeddedDocument(embDoc.getDocumentPath() + pathOfSecondInnerDoc);
+			contentDom = emb_embDoc.getContentDom();
+			TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);
+			OdfTextSpan spanElem = new OdfTextSpan(contentDom);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			para.appendChild(spanElem);
+
+			// embDoc.save(ResourceUtilities.newTestOutputFile("222debug.odt"));
+			rootDocument.save(TEST_FILE_EMBEDDED_EMBEDDED);
+
+			Document docWithdoubleEmbeddedDoc = Document.loadDocument(TEST_FILE_EMBEDDED_EMBEDDED);
+			Document embeddedDoc = docWithdoubleEmbeddedDoc.getEmbeddedDocument("Object 1");
+			Document doubleEmbeddedDoc = embeddedDoc.getEmbeddedDocument("Object in Object1");
+
+			OdfContentDom dEDcontentDom = doubleEmbeddedDoc.getContentDom();
+			TextSpanElement spanTest = (TextSpanElement) xpath.evaluate("//text:span[last()]", dEDcontentDom,
+					XPathConstants.NODE);
+			Assert.assertEquals(spanTest.getTextContent(), TEST_SPAN_TEXT);
+
+		} catch (Exception ex) {
+			ex.printStackTrace();
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testCacheDocuments() {
+		Document docWithEmbeddedObjects;
+		try {
+			docWithEmbeddedObjects = Document.loadDocument(TEST_FILE_EMBEDDED);
+			List<Document> embDocs = docWithEmbeddedObjects.getEmbeddedDocuments();
+			Document doc1 = embDocs.get(0);
+			OdfContentDom contentDom1 = doc1.getContentDom();
+			Document doc2 = doc1.getEmbeddedDocument(".");
+			OdfContentDom contentDom2 = doc2.getContentDom();
+			Assert.assertEquals(doc2, doc1);
+			Assert.assertEquals(contentDom1, contentDom2);
+		} catch (Exception ex) {
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testSaveEmbeddedDocuments() {
+		Document docWithEmbeddedObjects;
+		try {
+			docWithEmbeddedObjects = Document.loadDocument(TEST_FILE_SAVE_EMBEDDED);
+			List<Document> embDocs = docWithEmbeddedObjects.getEmbeddedDocuments(Document.OdfMediaType.GRAPHICS);
+			// Graphics Doc
+			Document doc1 = embDocs.get(0);
+			Assert.assertNotNull(doc1);
+
+			OdfContentDom contentDom = doc1.getContentDom();
+			XPath xpath = contentDom.getXPath();
+			TextPElement para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom, XPathConstants.NODE);
+			OdfTextSpan spanElem = new OdfTextSpan(contentDom);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			para.appendChild(spanElem);
+			// save the embed document to a stand alone document
+			doc1.save(TEST_FILE_SAVE_EMBEDDED_OUT);
+			// Load test
+			Document loadedDoc = Document.loadDocument(TEST_FILE_SAVE_EMBEDDED_OUT);
+			OdfContentDom contentDom2 = loadedDoc.getContentDom();
+			OdfTextSpan span = (OdfTextSpan) xpath.evaluate("//text:span[last()]", contentDom2, XPathConstants.NODE);
+			Assert.assertEquals(span.getTextContent(), TEST_SPAN_TEXT);
+			List<Document> embDocs3 = docWithEmbeddedObjects.getEmbeddedDocuments(Document.OdfMediaType.TEXT);
+
+			// Writer Doc
+			Document doc3 = embDocs3.get(0);
+			Assert.assertNotNull(doc3);
+			OdfContentDom contentDom3 = doc3.getContentDom();
+			TextPElement para2 = (TextPElement) xpath.evaluate("//text:p[1]", contentDom3, XPathConstants.NODE);
+			addImageToDocument(contentDom3, para2);
+			TextPElement para3 = (TextPElement) xpath.evaluate("//text:p[last()]", contentDom3, XPathConstants.NODE);
+			addFrameForEmbeddedDoc(contentDom3, para3, "NewEmbedded");
+			doc3.insertDocument(TextDocument.newTextDocument(), "/NewEmbedded/");
+			Document doc4 = doc3.getEmbeddedDocument("NewEmbedded");
+			Assert.assertNotNull(doc4);
+			OdfContentDom contentDom4 = doc4.getContentDom();
+			para = (TextPElement) xpath.evaluate("//text:p[1]", contentDom4, XPathConstants.NODE);
+			spanElem = new OdfTextSpan(contentDom4);
+			spanElem.setTextContent(TEST_SPAN_TEXT);
+			para.appendChild(spanElem);
+			doc3.save(TEST_FILE_SAVE_EMBEDDED_OUT2);
+
+			Document testLoad = Document.loadDocument(TEST_FILE_SAVE_EMBEDDED_OUT2);
+			NodeList linkNodes = (NodeList) xpath.evaluate("//*[@xlink:href]", testLoad.getContentDom(),
+					XPathConstants.NODE);
+			for (int i = 0; i < linkNodes.getLength(); i++) {
+				OdfElement object = (OdfElement) linkNodes.item(i);
+				String refObjPath = object.getAttributeNS(OdfDocumentNamespace.XLINK.getUri(), "href");
+				Assert.assertTrue(refObjPath.equals("Pictures/" + TEST_PIC) || refObjPath.equals("./NewEmbedded"));
+			}
+			Assert.assertNotNull(testLoad.getPackage().getFileEntry("Pictures/" + TEST_PIC));
+			Document embedDocOftestLoad = testLoad.getEmbeddedDocument("NewEmbedded/");
+			contentDom4 = embedDocOftestLoad.getContentDom();
+			OdfTextSpan span4 = (OdfTextSpan) xpath.evaluate("//text:span[last()]", contentDom4, XPathConstants.NODE);
+			Assert.assertNotNull(span4);
+			Assert.assertEquals(span4.getTextContent(), TEST_SPAN_TEXT);
+		} catch (Exception ex) {
+			ex.printStackTrace();
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	@Test
+	/**
+	 * Document docA and docB are embedded Odfdocuments, a containing b!
+	 * But the relative package path hierachiy is opposite, meaning
+	 * OdfPackage/docB/docA
+	 */
+	public void testDocumentWithQueerPath() {
+		try {
+			Document containerDoc = TextDocument.newTextDocument();
+			String pathToDocA = "dummy/docA/";
+			String pathToDocB = "docB/";
+			containerDoc.insertDocument(TextDocument.newTextDocument(), pathToDocA);
+			Document docA = containerDoc.getEmbeddedDocument(pathToDocA);
+			Assert.assertNotNull(docA);
+			docA.insertDocument(TextDocument.newTextDocument(), pathToDocB);
+			Document docB = containerDoc.getEmbeddedDocument(pathToDocA + pathToDocB);
+			Assert.assertNotNull(docB);
+			// only the document docB located at dummy/docA/docB will be saved
+			docB.save(TEST_FILE_SAVE_QUEER_PATH);
+
+		} catch (Exception ex) {
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test if saving Documents always results in a valid ODF file. This means
+	 * that the mimetype is written clearly at the first position in the zipped
+	 * ODF package.
+	 */
+	@Test
+	public void testWritingCorrectMimetype() {
+		try {
+			Document docWithCorruptedMimetype = Document.loadDocument(CORRUPTED_MIMETYPE_DOC);
+			docWithCorruptedMimetype.save(CORRUPTED_MIMETYPE_DOC_OUT);
+			Document chartWithCorruptedMimetype = Document.loadDocument(CORRUPTED_MIMETYPE_CHART);
+			chartWithCorruptedMimetype.save(CORRUPTED_MIMETYPE_CHART_OUT);
+		} catch (Exception ex) {
+			Logger.getLogger(DocumentCreationTest.class.getName()).log(Level.SEVERE, null, ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+	}
+
+	private void addImageToDocument(OdfContentDom dom, TextPElement para) throws Exception {
+		OdfDrawFrame drawFrame = new OdfDrawFrame(dom);
+		drawFrame.setDrawNameAttribute("graphics1");
+		drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+		drawFrame.setSvgWidthAttribute("4.233cm");
+		drawFrame.setSvgHeightAttribute("4.233cm");
+		drawFrame.setDrawZIndexAttribute(0);
+		para.appendChild(drawFrame);
+
+		OdfDrawImage image = new OdfDrawImage(dom);
+		drawFrame.appendChild(image);
+		image.newImage(ResourceUtilities.getURI(TEST_PIC));
+	}
+
+	private void addFrameForEmbeddedDoc(OdfContentDom dom, TextPElement para, String path) throws Exception {
+		OdfDrawFrame drawFrame = new OdfDrawFrame(dom);
+		drawFrame.setDrawNameAttribute(path);
+		drawFrame.setTextAnchorTypeAttribute(TextAnchorTypeAttribute.Value.PARAGRAPH.toString());
+		drawFrame.setSvgXAttribute("0.834cm");
+		drawFrame.setSvgYAttribute("2.919cm");
+		drawFrame.setSvgWidthAttribute("13.257cm");
+		drawFrame.setSvgHeightAttribute("11.375cm");
+		drawFrame.setDrawZIndexAttribute(0);
+
+		DrawObjectElement object = new DrawObjectElement(dom);
+		object.setXlinkHrefAttribute("./" + path);
+		object.setXlinkActuateAttribute("onLoad");
+		object.setXlinkShowAttribute("embed");
+		object.setXlinkTypeAttribute("simple");
+		drawFrame.appendChild(object);
+		para.appendChild(drawFrame);
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/DocumentTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/DocumentTest.java
new file mode 100644
index 0000000..33ff2b6
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/DocumentTest.java
@@ -0,0 +1,581 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.style.StyleGraphicPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.OdfValidationException;
+import org.odftoolkit.simple.utils.NodeAction;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class DocumentTest {
+
+	private static final Logger LOG = Logger.getLogger(DocumentTest.class.getName());
+	private static final String TEST_FILE = "test2.odt";
+	private static final String TEST_FILE_WITHOUT_OPT = "no_size_opt.odt";
+	private static final String ODF_FORMULAR_TEST_FILE = "SimpleFormula.odf";
+	private static final String IMAGE_TEST_FILE = "testA.jpg";
+	private static final String GENERATED_INVALID_SPREADSHEET = "invalid.ods";
+	private static final String ZERO_BYTE_SPREADSHEET = "empty_file.ods";
+
+	public DocumentTest() {
+	}
+
+	@Test
+	public void loadDocument() {
+		try {
+			System.setProperty("org.odftoolkit.odfdom.tmpfile.disable", "true");
+			// LOAD INVALID GENERATED SPREADSHEET DOCUMENT
+			LOG.info("Loading an supported ODF Spreadsheet document as an ODF Document!");
+			try {
+				// Should work!
+				Document ods = Document.loadDocument(ResourceUtilities.getAbsolutePath(GENERATED_INVALID_SPREADSHEET));
+				Assert.assertNotNull(ods);
+			} catch (Exception e) {
+				LOG.log(Level.SEVERE, e.getMessage(), e);
+				Assert.fail();
+			}
+
+
+			// LOAD EMPTY DOCUMENT
+			LOG.info("Loading an empty document as an ODF Document!");
+			try {
+				// Should throw error!
+				Document ods = Document.loadDocument(ResourceUtilities.getAbsolutePath(ZERO_BYTE_SPREADSHEET));
+				Assert.fail();
+			} catch (Exception e) {
+				if (!e.getMessage().contains("shall be a ZIP file")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			}
+
+			// LOAD FORMULA DOCUMENT
+			LOG.info("Loading an unsupported ODF Formula document as an ODF Document!");
+			try {
+				// Exception is expected!
+				Document.loadDocument(ResourceUtilities.getAbsolutePath(ODF_FORMULAR_TEST_FILE));
+				Assert.fail();
+			} catch (IllegalArgumentException e) {
+				if (!e.getMessage().contains("is not yet supported!")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			}
+
+			// LOAD DOCUMENT IMAGE
+			LOG.info("Loading an unsupported image file as an ODF Document!");
+			try {
+				// Exception is expected!
+				Document.loadDocument(ResourceUtilities.getAbsolutePath(IMAGE_TEST_FILE));
+				Assert.fail();
+			} catch (IllegalArgumentException e) {
+				if (!e.getMessage().contains("shall be a ZIP file")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			} catch (OdfValidationException e) {
+				if (!e.getMessage().contains("shall be a ZIP file")) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail();
+				}
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testParser() {
+		try {
+			Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetContentRoot() {
+		try {
+			TextDocument odt = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_WITHOUT_OPT));
+			Assert.assertNotNull(odt.getContentRoot());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	@Ignore
+	public void testDumpDom() {
+		try {
+			Assert.assertTrue(testXSLT("content") & testXSLT("styles"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private static boolean testXSLT(String odfFileNamePrefix) throws Exception {
+		Document odfdoc = Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+		Transformer trans = TransformerFactory.newInstance().newTransformer();
+		trans.setOutputProperty("indent", "yes");
+		// trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+
+		LOG.log(Level.INFO, "---------- {0}.xml transformed and compared ---------", odfFileNamePrefix);
+		// The XML file (e.g. content.xml) is transformed by XSLT into the similar/identical XML file
+		ByteArrayOutputStream xmlBytes = new ByteArrayOutputStream();
+		OdfFileDom fileDom = null;
+		if (odfFileNamePrefix.equals("content")) {
+			fileDom = odfdoc.getContentDom();
+		} else {
+			fileDom = odfdoc.getStylesDom();
+		}
+		// transforming the XML using identical transformation
+		trans.transform(new DOMSource(fileDom), new StreamResult(xmlBytes));
+		String xmlString = xmlBytes.toString("UTF-8");
+		// Saving test file to disc
+		saveString(xmlString, ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-test.xml");
+
+		// The template XML was once transformed and saved to the resource folder to gurantee the same indentation
+		String xmlStringOriginal = inputStreamToString(ResourceUtilities.getTestResourceAsStream("test2-" + odfFileNamePrefix + ".xml"));
+		// Saving original file to disc
+		saveString(xmlStringOriginal, ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-original.xml");
+
+
+		// Loading original file back to string representation
+		String testString = inputStreamToString(new FileInputStream(ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-test.xml"));
+		// Loading test file back to string representation
+		String originalString = inputStreamToString(new FileInputStream(ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-temporary-original.xml"));
+
+		boolean xmlEqual = originalString.equals(testString);
+		if (!xmlEqual) {
+			String testFilePath = ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-final-test.xml";
+			String originalFilePath = ResourceUtilities.getTestOutputFolder() + odfFileNamePrefix + "-final-original.xml";
+			saveString(testString, testFilePath);
+			saveString(originalString, originalFilePath);
+			LOG.log(Level.SEVERE, "Please compare the XML of two file:\n{0}\n and \n{1}", new Object[]{testFilePath, originalFilePath});
+		}
+		return xmlEqual;
+	}
+
+	@Test
+	public void testStylesDom() {
+		try {
+			Document odfdoc = Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+			OdfStylesDom stylesDom = odfdoc.getStylesDom();
+			Assert.assertNotNull(stylesDom);
+
+			// test styles.xml:styles
+			OdfOfficeStyles styles = odfdoc.getDocumentStyles();
+			Assert.assertNotNull(styles);
+
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.Graphic));
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.Paragraph));
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.Table));
+			Assert.assertNotNull(styles.getDefaultStyle(OdfStyleFamily.TableRow));
+
+			OdfStyle style = styles.getStyle("Standard", OdfStyleFamily.Paragraph);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getStyleClassAttribute(), "text");
+
+			style = styles.getStyle("List", OdfStyleFamily.Paragraph);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getProperty(StyleTextPropertiesElement.FontNameComplex), "Tahoma1");
+			Assert.assertTrue(style.hasProperty(StyleTextPropertiesElement.FontNameComplex));
+			Assert.assertFalse(style.hasProperty(StyleTextPropertiesElement.FontNameAsian));
+
+			Assert.assertNull(styles.getStyle("foobar", OdfStyleFamily.Chart));
+
+			// test styles.xml:automatic-styles
+			OdfOfficeAutomaticStyles autostyles = stylesDom.getAutomaticStyles();
+			Assert.assertNotNull(autostyles);
+
+			OdfStylePageLayout pageLayout = autostyles.getPageLayout("pm1");
+			Assert.assertNotNull(pageLayout);
+			Assert.assertEquals(pageLayout.getProperty(StylePageLayoutPropertiesElement.PageWidth), "8.5in");
+			Assert.assertEquals(pageLayout.getProperty(StylePageLayoutPropertiesElement.PageHeight), "11in");
+
+			Assert.assertNull(autostyles.getStyle("foobar", OdfStyleFamily.Chart));
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testContentNode() {
+		try {
+			Document odfdoc = Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+
+			OdfContentDom contentDom = odfdoc.getContentDom();
+
+			// test content.xml:automatic-styles
+			OdfOfficeAutomaticStyles autoStyles = contentDom.getAutomaticStyles();
+			Assert.assertNotNull(autoStyles);
+
+			OdfStyle style = autoStyles.getStyle("P1", OdfStyleFamily.Paragraph);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getStyleNameAttribute(), "P1");
+			Assert.assertEquals(style.getStyleParentStyleNameAttribute(), "Text_20_body");
+			Assert.assertEquals(style.getStyleListStyleNameAttribute(), "L1");
+
+			style = autoStyles.getStyle("T1", OdfStyleFamily.Text);
+			Assert.assertNotNull(style);
+			Assert.assertEquals(style.getStyleNameAttribute(), "T1");
+
+			for (OdfStyle testStyle : autoStyles.getStylesForFamily(OdfStyleFamily.Paragraph)) {
+				testStyle(testStyle);
+			}
+
+			for (OdfStyle testStyle : autoStyles.getStylesForFamily(OdfStyleFamily.Text)) {
+				testStyle(testStyle);
+			}
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSaveDocument() {
+		try {
+			Document odfdoc = Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+			new NodeAction<String>() {
+
+				@Override
+				protected void apply(Node cur, String replace, int depth) {
+					if (cur.getNodeType() == Node.TEXT_NODE) {
+						cur.setNodeValue(cur.getNodeValue().replaceAll("\\w", replace));
+					}
+				}
+			};
+//            replaceText.performAction(e, "X");            
+			odfdoc.save(ResourceUtilities.newTestOutputFile("list-out.odt"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void testStyle(OdfStyle testStyle) throws Exception {
+		OdfFileDom fileDom = (OdfFileDom) testStyle.getOwnerDocument();
+		OdfOfficeAutomaticStyles autoStyles = null;
+		if (testStyle.getStyleParentStyleNameAttribute() != null) {
+			if (fileDom instanceof OdfContentDom) {
+				autoStyles = ((OdfContentDom) fileDom).getAutomaticStyles();
+			} else if (fileDom instanceof OdfStylesDom) {
+				autoStyles = ((OdfStylesDom) fileDom).getAutomaticStyles();
+			}
+			OdfStyle parentStyle = autoStyles.getStyle(testStyle.getStyleParentStyleNameAttribute(), testStyle.getFamily());
+			if (parentStyle == null) {
+				parentStyle = ((Document) fileDom.getDocument()).getDocumentStyles().getStyle(testStyle.getStyleParentStyleNameAttribute(), testStyle.getFamily());
+			}
+
+			Assert.assertNotNull(parentStyle);
+		}
+		if (testStyle.hasOdfAttribute(OdfName.newName(OdfDocumentNamespace.STYLE, "list-style-name"))) {
+			if (testStyle.getStyleListStyleNameAttribute() != null) {
+				OdfTextListStyle listStyle = autoStyles.getListStyle(testStyle.getStyleListStyleNameAttribute());
+				if (listStyle == null) {
+					listStyle = ((Document) fileDom.getDocument()).getDocumentStyles().getListStyle(testStyle.getStyleListStyleNameAttribute());
+				}
+
+				Assert.assertNotNull(listStyle);
+			}
+		}
+	}
+
+	@Test
+	public void testParsingOfInvalidAttribute() {
+		try {
+			// file with invalid value for enum text-underline-style
+			File testfile = ResourceUtilities.newTestOutputFile("InvalidUnderlineAttribute.odt");
+
+			// Test1: Loading shouldn't fail just because of one invalid attribute
+			TextDocument odt = (TextDocument) Document.loadDocument(testfile);
+			Assert.assertNotNull(odt);
+
+			// Test2: invalid attribute node should have been be removed
+//			OdfStyle styleNode = odt.getContentDom().getAutomaticStyles().getStyle("T1", OdfStyleFamily.Text);
+//			StyleTextPropertiesElement props = OdfElement.findFirstChildNode(StyleTextPropertiesElement.class, styleNode);
+//			Assert.assertFalse(props.hasAttribute("style:text-underline-style"));
+//			odt.save(ResourceUtilities.newTestOutputFile("saving-is-possible2.odt"));
+
+			// Test3: New ODF 1.2 attribute node should exist
+			OdfStyle styleNode2 = odt.getStylesDom().getOfficeStyles().getStyle("bug77", OdfStyleFamily.Graphic);
+			StyleGraphicPropertiesElement propsGrapicElement = OdfElement.findFirstChildNode(StyleGraphicPropertiesElement.class, styleNode2);
+			Assert.assertTrue("Could not find the attribute svg:opac-capicity. Workaround bug77 did not succeeded!", propsGrapicElement.hasAttribute("svg:stroke-opacity"));
+			odt.save(ResourceUtilities.newTestOutputFile("saving-is-possible.odt"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testDocumentPassword() {
+		File passwordOutputFile = ResourceUtilities.newTestOutputFile("PasswordDocument.odt");
+		File noPassOutputFile = ResourceUtilities.newTestOutputFile("NoPasswordDocument.odt");
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("blablabla...");
+			doc.setPassword("password");
+			doc.save(passwordOutputFile);
+			
+			Document redoc = Document.loadDocument(passwordOutputFile, "password");
+			//test load content.xml
+			Assert.assertNotNull(redoc.getContentRoot().toString());
+			//test load styles.xml
+			((TextDocument) redoc).getHeader().addTable();
+			//test load meta.xml
+			Assert.assertNotNull(redoc.getOfficeMetadata().getCreator());
+			
+			//remove password
+			redoc.setPassword(null);
+			redoc.save(noPassOutputFile);
+			
+			//test inserted document
+			doc = TextDocument.newTextDocument();
+			doc.addParagraph("embed_document");
+			redoc.insertDocument(doc, "/embed");
+			redoc.setPassword("password");
+			
+			redoc.save(passwordOutputFile);
+		} catch (Exception ex) {
+			LOG.log(Level.SEVERE, "document password test failed.", ex);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testSetLocale() {
+		String filename = "testDefaultLanguage.odp";
+		try {
+			PresentationDocument  doc = PresentationDocument .newPresentationDocument();
+
+			Assert.assertNull(doc.getLocale(Document.ScriptType.WESTERN));
+			Assert.assertNull(doc.getLocale(Document.ScriptType.CJK));
+			Assert.assertNull(doc.getLocale(Document.ScriptType.CTL));
+
+			Locale eng_can = new Locale(Locale.ENGLISH.getLanguage(),
+					Locale.CANADA.getCountry());
+			Locale chinese_china = new Locale(Locale.CHINESE.getLanguage(),
+					Locale.CHINA.getCountry());
+			Locale ar_eg = new Locale("ar", "eg");
+
+			doc.setLocale(eng_can);
+			doc.setLocale(chinese_china);
+			doc.setLocale(ar_eg);
+
+			doc.save(ResourceUtilities.newTestOutputFile(filename));
+
+			PresentationDocument newDoc = PresentationDocument .loadDocument(ResourceUtilities.getTestResourceAsStream(filename));
+			Assert.assertEquals(eng_can, newDoc.getLocale(Document.ScriptType.WESTERN));
+			Assert.assertEquals(chinese_china, newDoc.getLocale(Document.ScriptType.CJK));
+			Assert.assertEquals(ar_eg, newDoc.getLocale(Document.ScriptType.CTL));
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testLoadDocumentWithIllegalArgument() throws Exception {
+		String filepath = ResourceUtilities.getAbsolutePath("presentation.odp");
+		OdfPackage odfpackage = OdfPackage.loadPackage(filepath);
+		// illegal internal patch
+		try {
+			Document.loadDocument(odfpackage, "odt");
+		} catch (Exception e) {
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("Given internalPath 'odt' is an illegal or inappropriate argument.", e.getMessage());
+		}
+		// illegal media type
+		try {
+			Document.loadDocument(odfpackage, "meta.xml");
+		} catch (Exception e) {
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("Given mediaType 'text/xml' is either not yet supported or not an ODF mediatype!", e.getMessage());
+		}
+	}
+	
+	private static String inputStreamToString(InputStream in) throws IOException {
+		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
+		StringBuilder stringBuilder = new StringBuilder();
+		String line = null;
+
+		while ((line = bufferedReader.readLine()) != null) {
+			stringBuilder.append(line).append("\n");
+		}
+		bufferedReader.close();
+		return stringBuilder.toString();
+	}
+
+	/** Saves the datastring as UTF8 to the given filePath */
+	private static void saveString(String dataString, String filePath) throws UnsupportedEncodingException, IOException {
+		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF8"));
+		out.append(dataString);
+		out.close();
+	}
+	
+	@Test
+	public void testGetEmbeddedDocuments() throws Exception {
+		try {
+			Document doc = Document.loadDocument(OdfPackage.loadPackage(this.getClass().getResource("/").getPath() + "presentationWithEmbedDoc.odp"));
+			Document.OdfMediaType odfMediaType_Chart = Document.OdfMediaType.valueOf(Document.OdfMediaType.class, "CHART");
+			List<Document> doclist = doc.getEmbeddedDocuments(odfMediaType_Chart);
+			if(doclist.size() > 0){
+				for(Document docitem : doclist){
+					Assert.assertEquals("application/vnd.oasis.opendocument.chart", docitem.getMediaTypeString());
+				}
+			}else{
+				Assert.fail();
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testGetEmbeddedDocument() throws Exception {
+		try {
+			Document doc = Document.loadDocument(OdfPackage.loadPackage(this.getClass().getResource("/").getPath() + "Spreadsheet with Embeded Chart.ods"));
+			Document innerdoc = doc.getEmbeddedDocument("/");
+			Assert.assertNotNull(innerdoc);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetContentRootDoc() throws Exception {
+		try {
+			Document odt = Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE_WITHOUT_OPT));
+			OdfContentDom odfcon = odt.getContentDom();
+			Assert.assertNotNull(odfcon);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testToString() throws Exception {
+		try {
+			Document doc = Document.loadDocument(ResourceUtilities.getTestResourceAsStream("test2.odt"));
+			String docStr = doc.toString();
+			System.out.println(docStr);
+			Assert.assertTrue(docStr.indexOf("application/vnd.oasis.opendocument.text")>0);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testSave() throws Exception {
+		try {
+			Document doc = Document.loadDocument(ResourceUtilities.getAbsolutePath("test2.odt"));
+			Assert.assertNotNull(doc);
+			String docmedia = doc.getOdfMediaType().getMediaTypeString();
+			//create a document for test
+			Document doctest = Document.loadDocument(ResourceUtilities.getAbsolutePath("test2.odt"));
+			doctest.save(ResourceUtilities.newTestOutputFile("testSave.odt"));
+			String filePath = ResourceUtilities.getAbsolutePath("testSave.odt");
+			File outerFile = new File(filePath);
+			if(!outerFile.exists()){
+				System.out.println("outerFile is not exist. ");
+			}
+			Assert.assertNotNull(doc);
+			
+			OutputStream out = new FileOutputStream(outerFile);
+			doc.save(out);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSave.odt"));
+			out.close();
+			
+			//verify
+			Document docnew = Document.loadDocument(ResourceUtilities.getTestResourceAsStream("testSave.odt"));
+			Assert.assertNotNull(docnew);
+			String docnewMedia = docnew.getOdfMediaType().getMediaTypeString();
+			
+			Assert.assertEquals(docmedia, docnewMedia);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/GraphicsDocumentTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/GraphicsDocumentTest.java
new file mode 100644
index 0000000..21355e6
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/GraphicsDocumentTest.java
@@ -0,0 +1,129 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDrawingElement;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class GraphicsDocumentTest {
+	private static final Logger LOG = Logger.getLogger(GraphicsDocumentTest.class.getName());
+	private static final String TEST_FILE = "graphicTestTemplate.otg";
+	
+	@Test
+	public void testLoadingAChartTemplate() throws Exception {
+		try {
+			GraphicsDocument graphiDoc = GraphicsDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+			Assert.assertNotNull(graphiDoc);
+			Document.OdfMediaType graphiType = graphiDoc.getOdfMediaType();
+			Assert.assertTrue(graphiType.equals(Document.OdfMediaType.GRAPHICS_TEMPLATE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+	
+	@Test
+	public void testLoadDocumentPath() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			GraphicsDocument  gdoc = GraphicsDocument.loadDocument(filePath);
+			Assert.assertNotNull(gdoc);
+			Assert.assertEquals("application/vnd.oasis.opendocument.graphics-template", gdoc.getMediaTypeString());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testLoadDocumentFile() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			File otg = new File(filePath);
+			GraphicsDocument  gdoc = GraphicsDocument.loadDocument(otg);
+			Assert.assertNotNull(gdoc);
+			Assert.assertEquals("application/vnd.oasis.opendocument.graphics-template", gdoc.getMediaTypeString());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testLoadDocumentStream() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			File otg = new File(filePath);
+			FileInputStream fStream = new FileInputStream(otg);
+			GraphicsDocument  gdoc = GraphicsDocument.loadDocument(fStream);
+			Assert.assertNotNull(gdoc);
+			Assert.assertEquals("application/vnd.oasis.opendocument.graphics-template", gdoc.getMediaTypeString());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testGetContentRoot() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			FileInputStream fStream = new FileInputStream(new File(filePath));
+			GraphicsDocument  gdoc = GraphicsDocument.loadDocument(fStream);
+			Assert.assertNotNull(gdoc);
+			OfficeDrawingElement officeEle = gdoc.getContentRoot();
+			Assert.assertNotNull(officeEle);
+			Assert.assertEquals("office:drawing", officeEle.getNodeName());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testGetTableContainerElement() throws Exception {
+		String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+		File otg = new File(filePath);
+		FileInputStream fStream = new FileInputStream(otg);
+		GraphicsDocument  gdoc = GraphicsDocument.loadDocument(fStream);
+		Assert.assertNotNull(gdoc);
+		Assert.assertEquals("application/vnd.oasis.opendocument.graphics-template", gdoc.getMediaTypeString());
+		try {
+			gdoc.getTableContainerElement();
+		} catch (Exception e) {
+			Assert.assertTrue(e instanceof UnsupportedOperationException);
+			Assert.assertEquals("Graphics document is not supported to hold table now.", e.getMessage());
+		}
+		
+	}
+
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/GraphicsTemplateTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/GraphicsTemplateTest.java
new file mode 100644
index 0000000..9ebac14
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/GraphicsTemplateTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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.simple;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of graphics.
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class GraphicsTemplateTest {
+
+	private static final String TEST_GRAPHICS_TEMPLATE = "/graphicTestTemplate.otg";
+
+	@Test
+	public void testLoadingAGraphicsTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_GRAPHICS_TEMPLATE));
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingAGraphicsTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_GRAPHICS_TEMPLATE));
+		File destination = File.createTempFile("simple-test", ".otg");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewGraphicsTemplate() throws Exception {
+		Document document = GraphicsDocument.newGraphicsTemplateDocument();
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("simple-test", ".otg");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof GraphicsDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfGraphicsDocument() throws Exception {
+		GraphicsDocument document = GraphicsDocument.newGraphicsDocument();
+		document.changeMode(GraphicsDocument.OdfMediaType.GRAPHICS_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = GraphicsDocument.newGraphicsTemplateDocument();
+		document.changeMode(GraphicsDocument.OdfMediaType.GRAPHICS);
+		Assert.assertEquals(Document.OdfMediaType.GRAPHICS.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/LoadSaveTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/LoadSaveTest.java
new file mode 100644
index 0000000..6ae8ba9
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/LoadSaveTest.java
@@ -0,0 +1,99 @@
+/************************************************************************
+ *
+ * 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.simple;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeVersionAttribute;
+import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentContentElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class LoadSaveTest {
+
+	private static final String SOURCE = "not-only-odf.odt";
+	private static final String TARGET = "loadsavetest.odt";
+	private static final String FOREIGN_ATTRIBUTE_NAME = "foreignAttribute";
+	private static final String FOREIGN_ATTRIBUTE_VALUE = "foreignAttributeValue";
+	private static final String FOREIGN_ELEMENT_TEXT = "foreignText";
+
+	public LoadSaveTest() {
+	}
+
+	@Test
+	public void testLoadSave() {
+		try {
+			Document odfDocument = Document.loadDocument(ResourceUtilities.getAbsolutePath(SOURCE));
+			Assert.assertTrue(odfDocument.getPackage().contains("content.xml"));
+			String baseURI = odfDocument.getBaseURI();
+//			Assert.assertEquals(ResourceUtilities.getURI(SOURCE).toString(), baseURI);
+			System.out.println("SOURCE URI1:"+ResourceUtilities.getURI(SOURCE).toString());
+			System.out.println("SOURCE URI2:"+baseURI);
+			OdfFileDom odfContent = odfDocument.getContentDom();
+			String odf12 = OfficeVersionAttribute.Value._1_2.toString();
+			OfficeDocumentContentElement content = (OfficeDocumentContentElement) odfContent.getDocumentElement();
+			String version = content.getOfficeVersionAttribute();
+			Assert.assertFalse(version.equals(odf12));
+
+			NodeList lst = odfContent.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+			Node node = lst.item(0);
+			String oldText = "Changed!!!";
+			node.setTextContent(oldText);
+
+			odfDocument.save(ResourceUtilities.newTestOutputFile(TARGET));
+			odfDocument = Document.loadDocument(ResourceUtilities.getAbsolutePath(TARGET));
+
+			odfContent = odfDocument.getContentDom();
+			// ToDo: Will be used for issue 60: Load & Save of previous ODF versions (ie. ODF 1.0, ODF 1.1)
+			//Assert.assertTrue(odfContent.getRootElement().getOfficeVersionAttribute().equals(odf12));
+			lst = odfContent.getElementsByTagNameNS(OdfDocumentNamespace.TEXT.getUri(), "p");
+			node = lst.item(0);
+			String newText = node.getTextContent();
+			Assert.assertTrue(newText.equals(oldText));
+
+			node = lst.item(1);
+			//check foreign attribute without namespace
+			Element foreignElement = (Element) node.getChildNodes().item(0);
+			String foreignText = foreignElement.getTextContent();
+			Assert.assertTrue(foreignText.equals(FOREIGN_ELEMENT_TEXT));
+
+			//check foreign element without namespace
+			Attr foreignAttr = (Attr) node.getAttributes().getNamedItem(FOREIGN_ATTRIBUTE_NAME);
+			String foreignAttrValue = foreignAttr.getValue();
+			Assert.assertTrue(foreignAttrValue.equals(FOREIGN_ATTRIBUTE_VALUE));
+
+
+
+		} catch (Exception e) {
+			Logger.getLogger(LoadSaveTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/PresentationTemplateTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/PresentationTemplateTest.java
new file mode 100644
index 0000000..b32190d
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/PresentationTemplateTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.simple;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of presentations.
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class PresentationTemplateTest {
+
+	private static final String TEST_PRESENTATION = "/presentationTestTemplate.otp";
+
+	@Test
+	public void testLoadingAPresentationTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_PRESENTATION));
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingAPresentationTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_PRESENTATION));
+		File destination = File.createTempFile("simple-test", ".otp");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewPresentationTemplate() throws Exception {
+		Document document = PresentationDocument.newPresentationTemplateDocument();
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		File destination = File.createTempFile("simple-test", ".otp");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof PresentationDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfPresentationDocument() throws Exception {
+		PresentationDocument document = PresentationDocument.newPresentationDocument();
+		document.changeMode(PresentationDocument.OdfMediaType.PRESENTATION_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = PresentationDocument.newPresentationTemplateDocument();
+		document.changeMode(PresentationDocument.OdfMediaType.PRESENTATION);
+		Assert.assertEquals(Document.OdfMediaType.PRESENTATION.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/PresentationTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/PresentationTest.java
new file mode 100644
index 0000000..7965674
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/PresentationTest.java
@@ -0,0 +1,204 @@
+/*
+ * 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.simple;
+
+import java.util.Iterator;
+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.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.attribute.presentation.PresentationClassAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFillImageElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawGradientElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawHatchElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawMarkerElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawFrame;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeMasterStyles;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.presentation.Slide;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author cl93746
+ */
+public class PresentationTest {
+
+	Document odfdoc;
+
+	public PresentationTest() {
+		try {
+			odfdoc = Document.loadDocument(ResourceUtilities.getAbsolutePath("presentation.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testPresentation() {
+		try {
+			PresentationDocument odpdoc = (PresentationDocument) odfdoc;
+
+			Slide page = odpdoc.getSlideByName("slide-name-1");
+			Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-1"));
+			Assert.assertEquals(page, odpdoc.getSlideByIndex(0));
+
+			page = odpdoc.getSlideByName("slide-name-2");
+			Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-2"));
+			Assert.assertEquals(page, odpdoc.getSlideByIndex(1));
+
+			page = odpdoc.getSlideByName("slide-name-3");
+			Assert.assertTrue((page != null) && page.getSlideName().equals("slide-name-3"));
+			Assert.assertEquals(page, odpdoc.getSlideByIndex(2));
+
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testMasterStyles() {
+		try {
+			OdfOfficeMasterStyles officeMasterStyles = odfdoc.getOfficeMasterStyles();
+			Assert.assertNotNull(officeMasterStyles);
+
+			// check if iterator has all two master pages
+			testIterator(StyleMasterPageElement.class, officeMasterStyles.getMasterPages(), 2);
+
+			// test "master-name-1"
+			StyleMasterPageElement master = officeMasterStyles.getMasterPage("master-name-1");
+			Assert.assertNotNull(master);
+			Assert.assertEquals(master.getStyleNameAttribute(), "master-name-1");
+
+			// test "master-name-2"
+			master = officeMasterStyles.getMasterPage("master-name-2");
+			Assert.assertNotNull(master);
+			Assert.assertEquals(master.getStyleNameAttribute(), "master-name-2");
+
+			// test handout master
+			Assert.assertNotNull(officeMasterStyles.getHandoutMaster());
+
+			// test layerset
+			Assert.assertNotNull(officeMasterStyles.getLayerSet());
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testStyles() {
+		try {
+			OdfOfficeStyles officeStyles = odfdoc.getDocumentStyles();
+			Assert.assertNotNull(officeStyles);
+
+			Assert.assertNotNull(officeStyles.getGradient("Linear_20_blue_2f_white"));
+			testIterator(DrawGradientElement.class, officeStyles.getGradients().iterator(), 1);
+
+			Assert.assertNotNull(officeStyles.getMarker("Arrow"));
+			testIterator(DrawMarkerElement.class, officeStyles.getMarker().iterator(), 1);
+
+			Assert.assertNotNull(officeStyles.getHatch("Black_20_0_20_Degrees"));
+			testIterator(DrawHatchElement.class, officeStyles.getHatches().iterator(), 1);
+
+			Assert.assertNotNull(officeStyles.getFillImage("Aqua"));
+			testIterator(DrawFillImageElement.class, officeStyles.getFillImages().iterator(), 1);
+
+			// check for some styles
+			Assert.assertNotNull(officeStyles.getDefaultStyle(OdfStyleFamily.Graphic));
+			Assert.assertNotNull(officeStyles.getStyle("standard", OdfStyleFamily.Graphic));
+			Assert.assertNotNull(officeStyles.getStyle("master-name-1-outline1", OdfStyleFamily.Presentation));
+
+			Iterator<OdfStyle> style_iter = officeStyles.getStylesForFamily(OdfStyleFamily.Presentation).iterator();
+			Assert.assertNotNull(style_iter);
+			Assert.assertTrue(style_iter.hasNext());
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private <T extends OdfElement> void testIterator(Class<T> clazz, Iterator<T> iter, int elements) {
+		Assert.assertNotNull(iter);
+		while (elements > 0) {
+			Assert.assertTrue(iter.hasNext());
+			Assert.assertTrue(clazz.isInstance(iter.next()));
+			elements--;
+		}
+
+		Assert.assertFalse(iter.hasNext());
+	}
+
+	@Test
+	public void testPresentationClassAttribute() {
+		try {
+			GraphicsDocument doc = GraphicsDocument.newGraphicsDocument();
+			OdfFileDom dom = doc.getContentDom();
+			OdfDrawFrame f = new OdfDrawFrame(dom);
+
+			f.setPresentationClassAttribute(PresentationClassAttribute.Value.GRAPHIC.toString());
+			Logger.getLogger(DocumentCreationTest.class.getName()).info(f.getPresentationClassAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testStyleUsageCount() {
+		try {
+			OdfOfficeAutomaticStyles s = odfdoc.getStylesDom().getAutomaticStyles();
+			OdfStyle pr1 = s.getStyle("pr1", OdfStyleFamily.Presentation);
+			int styleUserCount = pr1.getStyleUserCount();
+			OdfStylesDom stylesDom = odfdoc.getStylesDom();
+			XPath xpath = stylesDom.getXPath();
+			NodeList elementsWithStyle = (NodeList) xpath.evaluate("//draw:frame[@presentation:style-name='pr1']",
+					stylesDom, XPathConstants.NODESET);
+			int elementsWithStyleCount = elementsWithStyle.getLength();
+			Assert.assertTrue(styleUserCount == elementsWithStyleCount);
+//			//#bug51,the bug will be induced by using set attribute method
+//			OdfDrawFrame frame = (OdfDrawFrame) elementsWithStyle.item(0);
+//			frame.setPresentationStyleNameAttribute("pr2");
+//			styleUserCount = pr1.getStyleUserCount();
+//			elementsWithStyle = (NodeList) xpath.evaluate("//draw:frame[@presentation:style-name='pr1']",
+//					odfdoc.getStylesDom(), XPathConstants.NODESET);
+//			elementsWithStyleCount = elementsWithStyle.getLength();
+//			Assert.assertTrue("Last part of bug51 still to be fixed..!!", styleUserCount == elementsWithStyleCount);
+		} catch (Exception e) {
+			Logger.getLogger(PresentationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetDocumentTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetDocumentTest.java
new file mode 100644
index 0000000..6f7a244
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetDocumentTest.java
@@ -0,0 +1,259 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple;
+
+import java.awt.Rectangle;
+import java.io.File;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.Document.OdfMediaType;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.chart.ChartType;
+import org.odftoolkit.simple.chart.DataSet;
+import org.odftoolkit.simple.table.Column;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class SpreadsheetDocumentTest {
+	private static final Logger LOG = Logger.getLogger(SpreadsheetDocumentTest.class.getName());
+	private static final String TEST_FILE = "spreadsheetTestTemplate.ots";
+	
+	@Test
+	public void testGetMediaTypeString() throws Exception{
+		
+		try {
+			String spreadDocPath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			SpreadsheetDocument spreadDoc = SpreadsheetDocument.loadDocument(spreadDocPath);
+			Assert.assertNotNull(spreadDoc);
+			OdfMediaType odfMediaType = spreadDoc.getOdfMediaType();
+			Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE, odfMediaType);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testGetSuffix() throws Exception{
+		try {
+			String spreadDocPath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			SpreadsheetDocument spreadDoc = SpreadsheetDocument.loadDocument(spreadDocPath);
+			Assert.assertNotNull(spreadDoc);
+			OdfMediaType odfMediaType = spreadDoc.getOdfMediaType();
+			String suffix = odfMediaType.getSuffix();
+			Assert.assertEquals("ots", suffix);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetOdfMediaType() throws Exception{
+		
+		try {
+			String spreadDocPath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			SpreadsheetDocument spreadDoc = SpreadsheetDocument.loadDocument(spreadDocPath);
+			Assert.assertNotNull(spreadDoc);
+			Document.OdfMediaType odfMediaType = SpreadsheetDocument.OdfMediaType.getOdfMediaType(spreadDoc.getMediaTypeString());
+			Assert.assertEquals("ots", odfMediaType.getSuffix());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testLoadDocument() throws Exception{
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			SpreadsheetDocument spreadDoc = SpreadsheetDocument.loadDocument(filePath);
+			Assert.assertNotNull(spreadDoc);
+			Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE, spreadDoc.getOdfMediaType());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testLoadDocumentFile() throws Exception{
+		
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath(TEST_FILE);
+			File fileDoc = new File(filePath);
+			SpreadsheetDocument spreadDoc = SpreadsheetDocument.loadDocument(fileDoc);;
+			Assert.assertNotNull(spreadDoc);
+			Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE, spreadDoc.getOdfMediaType());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testCreateChart() throws Exception{
+		try {
+			SpreadsheetDocument spDocument = SpreadsheetDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+			String title = "XXXTitle";
+			String[] lables = new String[]{"spring","summer","autumn","autumn"};
+			String[] legends = new String[]{"hello1","hello2","hello3"};
+			double[][] data = new double[][]{{1.2,2.22,3},{2,3,4},{3,4,5},{4,5,6}};
+			DataSet dataset = new DataSet(lables, legends, data);
+			Rectangle rect = new Rectangle();
+			rect.x = 367;
+			rect.y = 389;
+			rect.width = 379;
+			rect.height = 424;
+			Chart spChart = spDocument.createChart(title, dataset, rect);
+			Assert.assertNotNull(spChart);
+			spChart.setChartType(ChartType.AREA);
+			//save
+			spDocument.save(ResourceUtilities.getTestOutput("Chart_"+TEST_FILE));
+			
+			Assert.assertEquals(dataset, spChart.getChartData());
+			Assert.assertEquals("XXXTitle", spChart.getChartTitle());
+			Assert.assertEquals(ChartType.AREA, spChart.getChartType());
+			
+			LOG.log(Level.INFO,"spChart--> " + spChart);
+			
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetSheetByIndex() throws Exception{
+		File file = new File(ResourceUtilities.getAbsolutePath("TestSpreadsheetTable.ods"));
+		SpreadsheetDocument spDocument = SpreadsheetDocument.loadDocument(file);
+		//index < 0 , Not expected, table ==null
+		Table tablenull = spDocument.getSheetByIndex(-1);
+		Assert.assertTrue((tablenull == null));
+		//index > 0 
+		//index = 0
+		Table tableSheet0 = spDocument.getSheetByIndex(0);
+		Assert.assertTrue((tableSheet0 != null));
+		Assert.assertEquals("Sheet1", tableSheet0.getTableName());
+		Assert.assertEquals(29, tableSheet0.getColumnCount());
+		//index = 1
+		Table tableSheet1 = spDocument.getSheetByIndex(1);
+		Assert.assertTrue((tableSheet1 != null));
+		Assert.assertEquals("Sheet2", tableSheet1.getTableName());
+		Assert.assertEquals(1, tableSheet1.getColumnCount());
+	}
+	
+	@Test
+	public void testInsertSheet() throws Exception{
+		File file = new File(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		SpreadsheetDocument spDocument = SpreadsheetDocument.loadDocument(file);
+		//index <0 , Not expected
+		Table table = spDocument.insertSheet(-1);
+		Assert.assertNull(table);
+		//index >= sheet count
+		Table tableb = spDocument.insertSheet(11);
+		Assert.assertNull(tableb);
+		
+		//index is within the law
+		Table tab = spDocument.getSheetByName("tabellDemo2");
+		if(tab != null){
+			for(int i=0;i<spDocument.getSheetCount();i++){
+				if(tab.equals(spDocument.getSheetByIndex(i)))
+					spDocument.removeSheet(i);
+			}
+		}
+		Table tablea = spDocument.insertSheet(0);
+		Column col = tablea.appendColumn();
+		col.setWidth(12.99);
+		Column col2 = tablea.appendColumn();
+		col.setWidth(12.);
+		tablea.setTableName("tabellDemo2");
+		Assert.assertEquals("tabellDemo2", tablea.getTableName());
+		spDocument.save(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		
+	}
+	
+	@Test
+	public void testRemoveSheet() throws Exception{
+		File file = new File(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		SpreadsheetDocument spDocument = SpreadsheetDocument.loadDocument(file);
+		//index <0 , Not expected
+		Table table = spDocument.insertSheet(-1);
+		Assert.assertNull(table);
+		//index >= sheet count
+		Table tableb = spDocument.insertSheet(11);
+		Assert.assertNull(tableb);
+		
+		//index is within the law
+		Table tab = spDocument.getSheetByName("tabellDemo2");
+		if(tab != null){
+			for(int i=0;i<spDocument.getSheetCount();i++){
+				if(tab.equals(spDocument.getSheetByIndex(i)))
+					spDocument.removeSheet(i);
+			}
+		}
+		Table tablea = spDocument.insertSheet(0);
+		Column col = tablea.appendColumn();
+		col.setWidth(12.99);
+		Column col2 = tablea.appendColumn();
+		col.setWidth(12.);
+		tablea.setTableName("tabellDemo2");
+		Assert.assertEquals("tabellDemo2", tablea.getTableName());
+		spDocument.removeSheet(0);
+		Table tablem = spDocument.getSheetByIndex(0);
+		Assert.assertNotSame(tablea, tablem);
+		
+		spDocument.save(ResourceUtilities.getAbsolutePath(TEST_FILE));
+	}
+	
+	@Test
+	public void testGetSheetByIndex2() throws Exception{
+		File file = new File(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		SpreadsheetDocument spDocument = SpreadsheetDocument.loadDocument(file);
+		//index <0 , Not expected
+		Table table = spDocument.insertSheet(-1);
+		Assert.assertNull(table);
+		//index >= sheet count
+		Table tableb = spDocument.insertSheet(11);
+		Assert.assertNull(tableb);
+		
+		//index is within the law
+		Table tab = spDocument.getSheetByName("tabellDemo1");
+		if(tab != null)
+			tab.remove();
+		
+		Table taba = spDocument.getSheetByName("Tabelle1");
+		Table tablea = spDocument.insertSheet(taba,0);
+		tablea.setTableName("tabellDemo1");
+		Assert.assertEquals("tabellDemo1", tablea.getTableName());
+		Table tablem = spDocument.getSheetByIndex(0);
+		Assert.assertEquals(tablea, tablem);
+		
+		spDocument.save(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetTemplateTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetTemplateTest.java
new file mode 100644
index 0000000..b4c92df
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetTemplateTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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.simple;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of calc documents.
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class SpreadsheetTemplateTest {
+
+	private static final String TEST_SPREADSHEET_TEMPLATE = "/spreadsheetTestTemplate.ots";
+
+	@Test
+	public void testLoadingASpreadsheetTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_SPREADSHEET_TEMPLATE));
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingASpreadsheetTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_SPREADSHEET_TEMPLATE));
+		File destination = File.createTempFile("simple-test", ".ots");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewSpreadsheetTemplate() throws Exception {
+		Document document = SpreadsheetDocument.newSpreadsheetTemplateDocument();
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getMediaTypeString());
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("simple-test", ".ots");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof SpreadsheetDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfSpreadsheetDocument() throws Exception {
+		SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+		document.changeMode(SpreadsheetDocument.OdfMediaType.SPREADSHEET_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = SpreadsheetDocument.newSpreadsheetTemplateDocument();
+		document.changeMode(SpreadsheetDocument.OdfMediaType.SPREADSHEET);
+		Assert.assertEquals(Document.OdfMediaType.SPREADSHEET.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetTest.java
new file mode 100644
index 0000000..4bec0ba
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/SpreadsheetTest.java
@@ -0,0 +1,119 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class SpreadsheetTest {
+	
+	private final static String TEST_FILE_NAME = "TestSpreadsheetTable.ods";
+
+	@Test
+	public void testGetSheetCount() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_FILE_NAME));
+			Assert.assertEquals(3, document.getSheetCount());
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSheetByIndexOrName() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_FILE_NAME));
+			Table table1 = document.getSheetByName("Sheet2");
+			Table table2 = document.getSheetByIndex(1);
+			Assert.assertEquals("Sheet2", table1.getTableName());
+			Assert.assertEquals("Sheet2", table2.getTableName());
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testInsertSheet() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_FILE_NAME));
+			int oldCount = document.getSheetCount();
+			Table table = document.insertSheet(0);
+			Assert.assertFalse("Sheet1".equals(table.getTableName()));
+			int newCount = document.getSheetCount();
+			Assert.assertEquals(1, newCount - oldCount);
+			table = document.insertSheet(document.getSheetByName("Sheet1"), 2);
+			Assert.assertEquals(table.getTableName(), document.getSheetByIndex(2).getTableName());
+			document.save(ResourceUtilities.newTestOutputFile("Output_"+TEST_FILE_NAME)); 
+			
+			//data table from difference document.
+			document = SpreadsheetDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_FILE_NAME));
+			Table sheet1 = document.getSheetByName("Sheet1");
+			SpreadsheetDocument document1 = SpreadsheetDocument.newSpreadsheetDocument();
+			table = document1.insertSheet(sheet1, 0);
+			Assert.assertEquals(sheet1.getCellByPosition("E3").getDisplayText(), table.getCellByPosition("E3").getDisplayText());
+			document1.save(ResourceUtilities.newTestOutputFile("Output2_"+TEST_FILE_NAME));
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testAppendAndRemoveSheet() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_FILE_NAME));
+			Table table = document.appendSheet("Sheet4");
+			Assert.assertEquals("Sheet4", table.getTableName());
+			table = document.appendSheet(document.getSheetByName("Sheet1"), "Sheet5");
+			Assert.assertEquals("Sheet5", table.getTableName());
+			document.save(ResourceUtilities.newTestOutputFile("Output_"+TEST_FILE_NAME));
+			
+			//reload
+			document = SpreadsheetDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Output_"+TEST_FILE_NAME));
+			document.removeSheet(4);
+			Assert.assertNull(document.getSheetByName("Sheet5"));
+			document.removeSheet(3);
+			Assert.assertNull(document.getSheetByName("Sheet4"));
+			
+			//data table from difference document.
+			document = SpreadsheetDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_FILE_NAME));
+			Table sheet1 = document.getSheetByName("Sheet1");
+			SpreadsheetDocument document1 = SpreadsheetDocument.newSpreadsheetDocument();
+			table = document1.appendSheet(sheet1, "SheetA");
+			Assert.assertEquals(sheet1.getCellByPosition("E3").getDisplayText(), table.getCellByPosition("E3").getDisplayText());
+			document1.save(ResourceUtilities.newTestOutputFile("Output2_"+TEST_FILE_NAME));
+		} catch (Exception e) {
+			Logger.getLogger(SpreadsheetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/TextDocumentTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/TextDocumentTest.java
new file mode 100644
index 0000000..8ee1a87
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/TextDocumentTest.java
@@ -0,0 +1,586 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple;
+
+import java.awt.Rectangle;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.element.office.OfficeAnnotationElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleFootnoteSepElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleMasterPageElement;
+import org.odftoolkit.odfdom.dom.element.style.StylePageLayoutPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.dom.style.props.OdfStylePropertiesSet;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStylePageLayout;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.odfdom.type.Length;
+import org.odftoolkit.odfdom.type.Percent;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.Document.OdfMediaType;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.chart.ChartType;
+import org.odftoolkit.simple.chart.DataSet;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.style.MasterPage;
+import org.odftoolkit.simple.style.NumberFormat;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.AdjustmentStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.PrintOrientation;
+import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class TextDocumentTest {
+	
+	private static final Logger LOG = Logger.getLogger(TextDocumentTest.class.getName());
+	private static final String EMPTY_TEXT_DOCUMENT_PATH = "TextFieldSampleDocument.odt";
+	
+	@Test
+	public void testAddPageBreak() {
+		try {
+			// test new creation document.
+			TextDocument newDoc = TextDocument.newTextDocument();
+			Paragraph paragraph = newDoc.addParagraph("before page break");
+			newDoc.addPageBreak();
+			validPageBreakExist(newDoc, paragraph);
+			Paragraph refParagraph = newDoc.addParagraph("after page break");
+			newDoc.addParagraph("end page");
+			newDoc.addPageBreak(refParagraph);
+			validPageBreakExist(newDoc, refParagraph);
+			newDoc.save(ResourceUtilities.newTestOutputFile("AddPageBreakOutput.odt"));
+
+			// test exist document.
+			TextDocument existDoc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("test2.odt"));
+			paragraph = existDoc.addParagraph("before page break");
+			existDoc.addPageBreak();
+			validPageBreakExist(existDoc, paragraph);
+			refParagraph = existDoc.getParagraphByIndex(0, true);
+			existDoc.addPageBreak(refParagraph);
+			validPageBreakExist(existDoc, refParagraph);
+			existDoc.save(ResourceUtilities.newTestOutputFile("test2Out.odt"));
+			
+		} catch (Exception e) {
+			Logger.getLogger(TextDocumentTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	@Test
+	public void testAddPagebreakWithMasterPage() {
+		try {
+
+			TextDocument newDoc = TextDocument.newTextDocument();
+
+			// create a new master page
+			Paragraph paragraph = newDoc
+					.addParagraph("before page break - original Landscape");
+			MasterPage master1 = MasterPage.getOrCreateMasterPage(newDoc,
+					"Landscape");
+			master1.setPageWidth(279.4);
+			master1.setPageHeight(215.9);
+			master1.setNumberFormat(NumberFormat.HINDU_ARABIC_NUMBER.toString());
+			master1.setPrintOrientation(PrintOrientation.LANDSCAPE);
+			master1.setFootnoteMaxHeight(0);
+			master1.setWritingMode(StyleTypeDefinitions.WritingMode.LRTB);
+			master1.setMargins(20, 20, 20, 20);
+			master1.setFootnoteSepProperties(AdjustmentStyle.LEFT, Color
+					.valueOf("#000000"), 1, 1, null, Percent.valueOf("25%"),
+					0.18);
+			newDoc.addPageBreak(paragraph, master1);
+			newDoc.addParagraph("after page break - original Landscape");
+			validMasterPageApplied(newDoc, paragraph, master1);
+			newDoc
+					.save(ResourceUtilities
+							.newTestOutputFile("AddPageBreakWithMasterPageOutput1.odt"));
+
+			// modify the master page
+			paragraph = newDoc
+					.addParagraph("before page break - modified Landscape");
+			MasterPage master2 = MasterPage.getOrCreateMasterPage(newDoc,
+					"Landscape");
+			master2.setPageWidth(100);
+			master2.setPageHeight(300);
+			master2.setNumberFormat(null);
+			master2.setPrintOrientation(null);
+			master2.setMargins(20, 20, 0, 0);
+			newDoc.addPageBreak(paragraph, master2);
+			newDoc.addParagraph("after page break - modified Landscape");
+			validMasterPageApplied(newDoc, paragraph, master2);
+
+			// apply existing master page
+			paragraph = newDoc.addParagraph("before page break - Standard");
+			MasterPage master3 = MasterPage.getOrCreateMasterPage(newDoc,
+					"Standard");
+			newDoc.addPageBreak(paragraph, master3);
+			newDoc.addParagraph("after page break - Standard");
+			newDoc.addParagraph("end page");
+			newDoc
+					.save(ResourceUtilities
+							.newTestOutputFile("AddPageBreakWithMasterPageOutput2.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextDocumentTest.class.getName()).log(
+					Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	private void validMasterPageApplied(TextDocument newDoc,
+			Paragraph paragraph, MasterPage masterPage) throws Exception {
+		Node paragraphNode = paragraph.getOdfElement().getNextSibling();
+		Assert.assertTrue(paragraphNode instanceof TextPElement);
+
+		// check paragraph style
+		OdfOfficeAutomaticStyles styles = newDoc.getContentDom()
+				.getAutomaticStyles();
+		OdfStyle style = styles.getStyle(((TextPElement) paragraphNode)
+				.getStyleName(), OdfStyleFamily.Paragraph);
+		Assert.assertNotNull(style);
+
+		// check master page style
+		String masterName = style.getStyleMasterPageNameAttribute();
+		StyleMasterPageElement master = newDoc.getOfficeMasterStyles()
+				.getMasterPage(masterName);
+		Assert.assertEquals(masterPage.getName(), masterName);
+		Assert.assertNotNull(master);
+
+		// check page layout style
+		String pageLayoutName = master.getStylePageLayoutNameAttribute();
+		OdfStylePageLayout pageLayout = master.getAutomaticStyles()
+				.getPageLayout(pageLayoutName);
+		Assert.assertNotNull(pageLayout);
+
+		// check page layout properties
+		StylePageLayoutPropertiesElement properties = (StylePageLayoutPropertiesElement) pageLayout
+				.getPropertiesElement(OdfStylePropertiesSet.PageLayoutProperties);
+		Assert.assertNotNull(properties);
+		// page width
+		checkDoubleValue(masterPage.getPageWidth(), properties
+				.getFoPageWidthAttribute());
+		// page height
+		checkDoubleValue(masterPage.getPageHeight(), properties
+				.getFoPageHeightAttribute());
+		// footnote max height
+		checkDoubleValue(masterPage.getFootnoteMaxHeight(), properties
+				.getStyleFootnoteMaxHeightAttribute());
+		// margins
+		checkDoubleValue(masterPage.getMarginTop(), properties
+				.getFoMarginTopAttribute());
+		checkDoubleValue(masterPage.getMarginBottom(), properties
+				.getFoMarginBottomAttribute());
+		checkDoubleValue(masterPage.getMarginLeft(), properties
+				.getFoMarginLeftAttribute());
+		checkDoubleValue(masterPage.getMarginRight(), properties
+				.getFoMarginRightAttribute());
+		// writing mode
+		checkStringValue(masterPage.getWritingMode(), properties
+				.getStyleWritingModeAttribute());
+		// number format
+		checkStringValue(masterPage.getNumberFormat(), properties
+				.getStyleNumFormatAttribute());
+		// print orientation
+		checkStringValue(masterPage.getPrintOrientation(), properties
+				.getStylePrintOrientationAttribute());
+
+		// check footnote separator line
+		StyleFootnoteSepElement footnoteSep = (StyleFootnoteSepElement) properties
+				.getElementsByTagName("style:footnote-sep").item(0);
+		Assert.assertNotNull(footnoteSep);
+		checkStringValue(masterPage.getFootnoteSepAdjustment(), footnoteSep
+				.getStyleAdjustmentAttribute());
+		checkStringValue(masterPage.getFootnoteSepColor(), footnoteSep
+				.getStyleColorAttribute());
+		checkStringValue(masterPage.getFootnoteSepLineStyle(), footnoteSep
+				.getStyleLineStyleAttribute());
+		checkDoubleValue(masterPage.getFootnoteSepDistanceAfterSep(),
+				footnoteSep.getStyleDistanceAfterSepAttribute());
+		checkDoubleValue(masterPage.getFootnoteSepDistanceBeforeSep(),
+				footnoteSep.getStyleDistanceBeforeSepAttribute());
+		checkDoubleValue(masterPage.getFootnoteSepThickness(), footnoteSep
+				.getStyleWidthAttribute());
+		checkDoubleValue(masterPage.getFootnoteSepWidth(), footnoteSep
+				.getStyleRelWidthAttribute());
+	}
+
+	private void checkStringValue(String expected, String actual) {
+		if (expected == null) {
+			Assert.assertNull(actual);
+		} else if (expected.equals("page")) {
+			Assert.assertTrue(actual == null || actual.equals(expected));
+		} else {
+			Assert.assertEquals(expected, actual);
+		}
+	}
+
+	private void checkDoubleValue(double expected, String actual) {
+		double value = 0;
+		if (actual != null) {
+			if (Percent.isValid(actual)) {
+				value = Percent.valueOf(actual).doubleValue();
+			} else {
+				value = Length.parseDouble(actual, Unit.MILLIMETER);
+			}
+		}
+		Assert.assertEquals(expected, value);
+	}
+
+	@Test
+	public void testAddComment() {
+		try {
+			// test new creation document.
+			TextDocument newDoc = TextDocument.newTextDocument();
+			
+			Paragraph paragraph = newDoc.addParagraph("Paragraph1");
+			paragraph.addComment("This is a comment for Paragraph1", "Simple ODF");
+			Node firstChildNode = paragraph.getOdfElement().getFirstChild();
+			Assert.assertTrue(firstChildNode instanceof OfficeAnnotationElement);
+			OfficeAnnotationElement comment = (OfficeAnnotationElement) firstChildNode;
+			Assert.assertEquals("Simple ODF", comment.getFirstChild().getTextContent());
+			Assert.assertEquals("This is a comment for Paragraph1", comment.getLastChild().getTextContent());
+			Assert.assertTrue(firstChildNode instanceof OfficeAnnotationElement);
+			
+			paragraph = newDoc.addParagraph("Paragraph2");
+			paragraph.addComment("This is a comment for Paragraph2", null);
+			firstChildNode = paragraph.getOdfElement().getFirstChild();
+			Assert.assertTrue(firstChildNode instanceof OfficeAnnotationElement);
+			comment = (OfficeAnnotationElement) firstChildNode;
+			Assert.assertEquals(System.getProperty("user.name"), comment.getFirstChild().getTextContent());
+			Assert.assertEquals("This is a comment for Paragraph2", comment.getLastChild().getTextContent());
+			
+			newDoc.save(ResourceUtilities.newTestOutputFile("AddCommentOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextDocumentTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	private void validPageBreakExist(TextDocument newDoc, Paragraph paragraph) throws Exception {
+		Node paragraphNode = paragraph.getOdfElement().getNextSibling();
+		Assert.assertTrue(paragraphNode instanceof TextPElement);
+		OdfContentDom contentDocument = newDoc.getContentDom();
+		OdfOfficeAutomaticStyles styles = contentDocument.getAutomaticStyles();
+		OdfStyle style = styles.getStyle(((TextPElement) paragraphNode).getStyleName(), OdfStyleFamily.Paragraph);
+		Assert.assertNotNull(style);
+		Node paragraphPropertiesNode = style.getFirstChild();
+		Assert.assertNotNull(paragraphPropertiesNode instanceof StyleParagraphPropertiesElement);
+		Assert.assertEquals(((StyleParagraphPropertiesElement) paragraphPropertiesNode).getFoBreakBeforeAttribute(),
+				"page");
+	}
+	
+
+	@Test
+	public void testGetMediaTypeString() throws Exception {
+		try {
+			TextDocument tdoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath(EMPTY_TEXT_DOCUMENT_PATH));
+			Assert.assertNotNull(tdoc);
+			
+			OdfMediaType odfMedia = tdoc.getOdfMediaType();
+			String mediaType = odfMedia.getMediaTypeString();
+			Assert.assertEquals("application/vnd.oasis.opendocument.text", mediaType);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testNewTextDocument() throws Exception {
+		try {
+			TextDocument tdoc = TextDocument.newTextDocument(TextDocument.OdfMediaType.TEXT_MASTER);
+			OdfMediaType odfMediaA = tdoc.getOdfMediaType();
+			String filePath = ResourceUtilities.getAbsolutePath("");
+			tdoc.save(filePath + "testNewTextDocument.odt");
+
+			//validate
+			TextDocument tdocument = TextDocument.loadDocument(filePath + "testNewTextDocument.odt");
+			OdfMediaType odfMediaB = tdocument.getOdfMediaType();
+			Assert.assertEquals(odfMediaA, odfMediaB);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testLoadDocumentResource() throws Exception {
+		try {
+			TextDocument tdocument = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+			Assert.assertNotNull(tdocument);
+			OdfMediaType odfMediaB = tdocument.getOdfMediaType();
+			Assert.assertEquals("application/vnd.oasis.opendocument.text", odfMediaB.getMediaTypeString());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testLoadDocumentFile() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath("headerFooterHidden.odt");
+			File file = new File(filePath);
+			TextDocument tdocument = TextDocument.loadDocument(file);
+			Assert.assertNotNull(tdocument);
+			OdfMediaType odfMediaB = tdocument.getOdfMediaType();
+			Assert.assertEquals("application/vnd.oasis.opendocument.text", odfMediaB.getMediaTypeString());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testGetTableContainerElement() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath("headerFooterHidden.odt");
+			File file = new File(filePath);
+			TextDocument tdocument = TextDocument.loadDocument(file);
+			Assert.assertNotNull(tdocument);
+			
+			TableContainer tablecon = tdocument.getTableContainerImpl();
+			OdfElement odfeleA = tablecon.getTableContainerElement();
+			OdfElement odfeleB = tdocument.getTableContainerElement();
+			Assert.assertEquals(odfeleA, odfeleB);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testAddText() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath("headerFooterHidden.odt");
+			File file = new File(filePath);
+			TextDocument tdocument = TextDocument.loadDocument(file);
+			Assert.assertNotNull(tdocument);
+			//Paragraph textParagraph1 = tdocument.addParagraph("Paragraph1");
+			OdfTextParagraph textParagraph = tdocument.addText("text1");
+			
+			Assert.assertEquals("text1", textParagraph.getTextContent());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testRemoveParagraph() throws Exception {
+		try {
+			String filePath = ResourceUtilities.getAbsolutePath("headerFooterHidden.odt");
+			File file = new File(filePath);
+			TextDocument tdoc = TextDocument.loadDocument(file);
+			Assert.assertNotNull(tdoc);
+			
+			Paragraph para = tdoc.addParagraph("paragraph1");
+			Assert.assertEquals("paragraph1", para.getTextContent());
+			boolean flag = tdoc.removeParagraph(para);
+			Document doc = para.getOwnerDocument();
+			Assert.assertNotSame(doc, tdoc);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testDeclareVariable() throws Exception {
+		try {
+			TextDocument tdoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+			Assert.assertNotNull(tdoc);
+			
+			VariableField vField = tdoc.declareVariable("variable1", VariableField.VariableType.SIMPLE);
+			Assert.assertEquals("variable1", vField.getVariableName());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testGetVariableFieldByName() throws Exception {
+		
+		try {
+			TextDocument tdoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+			Assert.assertNotNull(tdoc);
+			
+			VariableField vFieldA = tdoc.declareVariable("variable1", VariableField.VariableType.SIMPLE);
+			vFieldA.getVariableName();
+			System.out.println(vFieldA.getVariableName());
+			Assert.assertEquals("variable1", vFieldA.getVariableName());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testCreateChart() throws Exception {
+		TextDocument tdoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+		String title = "title_name";
+		String[] labels = {"hello", "hi","odf"};
+		String[] legends = {"hello1", "hi1","odf1"};
+		double[][] data = {{1.11, 43.23}, {3.22, 4.00, 5.43}, {121.99, 123.1, 423.00}};
+		DataSet dataset = new DataSet(labels, legends, data);
+		Rectangle rect = new Rectangle();
+		Chart chart = tdoc.createChart(title, dataset, rect);
+		chart.setChartType(ChartType.AREA);
+		Assert.assertEquals(ChartType.AREA, chart.getChartType());
+		Assert.assertEquals("title_name", chart.getChartTitle());
+		Assert.assertEquals(dataset, chart.getChartData());
+		
+		//save
+		tdoc.save(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+	}
+	
+	@Test
+	public void testGetChartCount() throws Exception {
+		TextDocument tdoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+		String title = "title_name";
+		String[] labels = {"hello", "hi","odf"};
+		String[] legends = {"hello1", "hi1","odf1"};
+		double[][] data = {{1.11, 43.23}, {3.22, 4.00, 5.43}, {121.99, 123.1, 423.00}};
+		DataSet dataset = new DataSet(labels, legends, data);
+		Rectangle rect = new Rectangle();
+		Chart chart = tdoc.createChart(title, dataset, rect);
+		List chartA = tdoc.getChartByTitle("title_name");
+		chart.setChartType(ChartType.AREA);
+		Assert.assertEquals(ChartType.AREA, chart.getChartType());
+		Assert.assertEquals("title_name", chart.getChartTitle());
+		Assert.assertEquals(dataset, chart.getChartData());
+		
+		int count = tdoc.getChartCount();
+		Assert.assertEquals(chartA.size(), count);
+		
+		//save
+		//tdoc.save(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+	}
+	
+	@Test
+	public void testinsertContentFromDocumentBefore() throws Exception {
+		TextDocument src1 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		TextDocument src2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		TextDocument target1 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		TextDocument target2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		Paragraph p1 = target1.getParagraphByIndex(2, true);
+		target1.insertContentFromDocumentBefore(src1, p1, true);
+		Iterable<OdfStyle> pstyles1 = target1.getStylesDom().getOfficeStyles().getStylesForFamily(OdfStyleFamily.Paragraph);
+		Iterator<OdfStyle> ite = pstyles1.iterator();
+		int i=0;
+		System.out.println("Custom Styles in TestInsertDocumentWithStyleBefore.odt");
+		while(ite.hasNext()){
+			OdfStyle odfStyle = ite.next();
+			String sname = odfStyle.getAttribute("style:name");
+			if(sname.startsWith("style"))
+			{
+				i++;
+				System.out.println(sname);
+			}
+		}	
+		Assert.assertEquals(6, i);
+		target1.save(ResourceUtilities.newTestOutputFile("TestInsertDocumentWithStyleBefore.odt"));
+		
+		target2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		Paragraph p2 = target2.getParagraphByIndex(2, true);
+		target2.insertContentFromDocumentBefore(src2, p2, false);
+		
+		Iterable<OdfStyle> pstyles2 = target2.getStylesDom().getOfficeStyles().getStylesForFamily(OdfStyleFamily.Paragraph);
+		Iterator<OdfStyle> ite2 = pstyles2.iterator();
+		i=0;
+		System.out.println("Custom Styles in TestInsertDocumentWithoutStyleBefore.odt");
+		while(ite2.hasNext()){
+			OdfStyle odfStyle = ite2.next();
+			String sname = odfStyle.getAttribute("style:name");
+			if(sname.startsWith("style"))
+			{
+				i++;
+				System.out.println(sname);
+			}
+		}	
+		Assert.assertEquals(3, i);
+		target2.save(ResourceUtilities.newTestOutputFile("TestInsertDocumentWithoutStyleBefore.odt"));
+	}
+	@Test
+	public void testinsertContentFromDocumentAfter() throws Exception {
+		TextDocument src1 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		TextDocument src2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		TextDocument target1 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		TextDocument target2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		Paragraph p1 = target1.getParagraphByIndex(2, true);
+		target1.insertContentFromDocumentAfter(src1, p1, true);
+		Iterable<OdfStyle> pstyles1 = target1.getStylesDom().getOfficeStyles().getStylesForFamily(OdfStyleFamily.Paragraph);
+		Iterator<OdfStyle> ite = pstyles1.iterator();
+		int i=0;
+		System.out.println("Custom Styles in TestInsertDocumentWithStyleAfter.odt:");
+		while(ite.hasNext()){
+			OdfStyle odfStyle = ite.next();
+			String sname = odfStyle.getAttribute("style:name");
+			if(sname.startsWith("style"))
+			{
+				i++;
+				System.out.println(sname);
+			}
+		}	
+		Assert.assertEquals(6, i);
+		target1.save(ResourceUtilities.newTestOutputFile("TestInsertDocumentWithStyleAfter.odt"));
+		
+		
+		
+		target2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("TestInsertDocument.odt"));
+		Paragraph p2 = target2.getParagraphByIndex(2, true);
+		target2.insertContentFromDocumentAfter(src2, p2, false);
+		
+		Iterable<OdfStyle> pstyles2 = target2.getStylesDom().getOfficeStyles().getStylesForFamily(OdfStyleFamily.Paragraph);
+		Iterator<OdfStyle> ite2 = pstyles2.iterator();
+		i=0;
+		System.out.println("Custom Styles in TestInsertDocumentWithoutStyleAfter.odt:");
+		while(ite2.hasNext()){
+			OdfStyle odfStyle = ite2.next();
+			String sname = odfStyle.getAttribute("style:name");
+			if(sname.startsWith("style"))
+			{
+				i++;
+				System.out.println(sname);
+			}
+		}	
+		Assert.assertEquals(3, i);
+		target2.save(ResourceUtilities.newTestOutputFile("TestInsertDocumentWithoutStyleAfter.odt"));
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/TextTemplateTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/TextTemplateTest.java
new file mode 100644
index 0000000..3755e46
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/TextTemplateTest.java
@@ -0,0 +1,141 @@
+/*
+ * 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.simple;
+
+import java.io.File;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test class for template aspects of calc documents.
+ * 
+ * @author <a href="mailto:fhopf@odftoolkit.org">Florian Hopf</a>
+ */
+public class TextTemplateTest {
+
+	private static final String TEST_TEXT_TEMPLATE = "/textTestTemplate.ott";
+
+	@Test
+	public void testLoadingATextTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_TEXT_TEMPLATE));
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+	}
+
+	@Test
+	public void testSavingATextTemplate() throws Exception {
+		Document document = Document.loadDocument(this.getClass().getResourceAsStream(TEST_TEXT_TEMPLATE));
+		File destination = File.createTempFile("simple-test", ".ott");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+	}
+
+	@Test
+	public void testNewTextTemplate() throws Exception {
+		Document document = TextDocument.newTextTemplateDocument();
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				document.getMediaTypeString());
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("simple-test", ".ott");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof TextDocument);
+	}
+
+	@Test
+	public void testNewTextMaster() throws Exception {
+		Document document = TextDocument.newTextMasterDocument();
+		Assert.assertEquals(Document.OdfMediaType.TEXT_MASTER.getMediaTypeString(),
+				document.getMediaTypeString());
+		Assert.assertEquals(Document.OdfMediaType.TEXT_MASTER.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("simple-test", ".ott");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_MASTER.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof TextDocument);
+	}
+
+	@Test
+	public void testNewTextWeb() throws Exception {
+		Document document = TextDocument.newTextWebDocument();
+		Assert.assertEquals(Document.OdfMediaType.TEXT_WEB.getMediaTypeString(),
+				document.getMediaTypeString());
+		Assert.assertEquals(Document.OdfMediaType.TEXT_WEB.getMediaTypeString(),
+				document.getPackage().getMediaTypeString());
+		File destination = File.createTempFile("simple-test", ".ott");
+		document.save(destination);
+
+		// load again
+		Document loadedDocument = Document.loadDocument(destination);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_WEB.getMediaTypeString(),
+				loadedDocument.getMediaTypeString());
+		Assert.assertTrue(document instanceof TextDocument);
+	}
+
+	@Test
+	public void testSwitchingOdfTextDocument() throws Exception {
+		TextDocument document = TextDocument.newTextDocument();
+		document.changeMode(TextDocument.OdfMediaType.TEXT_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_WEB);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_WEB.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_MASTER);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_MASTER.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = TextDocument.newTextTemplateDocument();
+		document.changeMode(TextDocument.OdfMediaType.TEXT);
+		Assert.assertEquals(Document.OdfMediaType.TEXT.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_MASTER);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_MASTER.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_WEB);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_WEB.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = TextDocument.newTextMasterDocument();
+		document.changeMode(TextDocument.OdfMediaType.TEXT);
+		Assert.assertEquals(Document.OdfMediaType.TEXT.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_WEB);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_WEB.getMediaTypeString(), document.getPackage().getMediaTypeString());
+
+		document = TextDocument.newTextWebDocument();
+		document.changeMode(TextDocument.OdfMediaType.TEXT);
+		Assert.assertEquals(Document.OdfMediaType.TEXT.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_TEMPLATE);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_TEMPLATE.getMediaTypeString(), document.getPackage().getMediaTypeString());
+		document.changeMode(TextDocument.OdfMediaType.TEXT_MASTER);
+		Assert.assertEquals(Document.OdfMediaType.TEXT_MASTER.getMediaTypeString(), document.getPackage().getMediaTypeString());
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java
new file mode 100644
index 0000000..1e9dd06
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/chart/ChartTest.java
@@ -0,0 +1,223 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.chart;
+
+import java.awt.Rectangle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+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;
+
+public class ChartTest {
+
+	private static final String TEST_FILE = "ChartTest.ods";
+	private static final String CHART_FILE1 = "TestCreateChartWithLocalData.ods";
+	private static final String CHART_FILE2 = "TestCreateChartWithCellRange.ods";
+	private static final String CHART_FILE3 = "TestRemoveChart.ods";
+	private static final String CHART_FILE_ODT = "TestODTChart.odt";
+	private static final String CHART_FILE_ODP = "TestODPChart.odp";
+
+	@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);
+			Rectangle rect = new Rectangle();
+			rect.x = 67;
+			rect.y = 89;
+			rect.width = 379;
+			rect.height = 424;
+			Chart chart = new Chart(doc.getContentDom().getRootElement().newOfficeBodyElement().newOfficeChartElement().newChartChartElement(null), null);
+			chart.setChartTitle(title);
+			chart.setChartType(ChartType.AREA);
+			chart.setUseLegend(true);
+			chart.setChartData(dataset);
+			Assert.assertEquals(dataset, chart.getChartData());
+			Assert.assertEquals("Main", chart.getChartTitle());
+			Assert.assertEquals(ChartType.AREA, chart.getChartType());
+			
+			System.out.println("chart " + chart);
+			
+		} catch (Exception e) {
+			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testCreateChartWithLocalData() {
+		SpreadsheetDocument doc;
+		try {
+			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 } };
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 2700;
+			rect.width = 10000;
+			rect.height = 12000;
+			Chart newChart = doc.createChart(title, lables, legends, data, rect);
+			Chart chart = doc.getChartById(newChart.getChartID());
+			DataSet ds = chart.getChartData();
+			Assert.assertEquals(title, chart.getChartTitle());
+			Assert.assertEquals(ChartType.BAR, chart.getChartType());
+			Assert.assertArrayEquals(lables, ds.getLabels());
+			Assert.assertArrayEquals(legends, ds.getLegends());
+			Assert.assertTrue(legends.length == ds.getDataSeriesCount());
+			Assert.assertNotNull(doc.getChartByTitle("LocalData"));
+			Assert.assertTrue(chart.isUseLegend() == false);
+			chart.setChartTitle("Chart with local-data");
+			chart.setUseLegend(false);
+			Assert.assertEquals(chart.getChartTitle(), "Chart with local-data");
+			Assert.assertFalse(chart.isUseLegend() == true);
+			doc.save(ResourceUtilities.newTestOutputFile(CHART_FILE1));
+
+			Document doc1 = Document.loadDocument(ResourceUtilities.getTestResourceAsStream(CHART_FILE1));
+			Assert.assertEquals(doc1.getMediaTypeString(), Document.OdfMediaType.SPREADSHEET.getMediaTypeString());
+			doc = (SpreadsheetDocument) doc1;
+
+			Assert.assertNotNull(doc.getChartByTitle("Chart with local-data"));
+			Assert.assertNotNull(doc.getChartByTitle("LocalData"));
+
+			newChart = doc.getChartByTitle("Chart with local-data").get(0);
+			Assert.assertArrayEquals(newChart.getChartData().getLabels(), ds.getLabels());
+			Assert.assertEquals(ChartType.BAR, newChart.getChartType());
+			Assert.assertEquals(newChart.getChartData().getLegendByIndex(1), legends[1]);
+			Assert.assertTrue(legends.length == newChart.getChartData().getDataSeriesCount());
+
+		} catch (Exception e) {
+			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testCreateChartWithCellRange() {
+		try {
+			SpreadsheetDocument doc = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_FILE));
+			String barTitle = "Bar Chart with CellRange ";
+			String areaTitle = "AREA Chart with CellRange";
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 2700;
+			rect.width = 10000;
+			rect.height = 12000;
+			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.A1:A.E21"), true, true, true, rect);
+			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.A1:A.E21"), true, true, false, rect);
+			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.B1:A.E21"), true, false, true, rect);
+			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.B1:A.E21"), true, false, false, rect);
+			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.A2:A.E21"), false, true, true, rect);
+			doc.createChart(barTitle, doc, CellRangeAddressList.valueOf("A.A2:A.E21"), false, true, false, rect);
+			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);
+			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);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testRemoveChart() {
+
+		try {
+			SpreadsheetDocument doc = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(CHART_FILE2));
+			doc.deleteChartById("Object 1");
+			//Assert.assertEquals(9, doc.getChartCount());
+			String barTitle = "Bar Chart with CellRange ";
+			String areaTitle = "AREA Chart with CellRange";
+			doc.deleteChartByTitle(barTitle);
+			Assert.assertNotNull(doc.getChartByTitle(areaTitle));
+			Assert.assertEquals(1, doc.getChartCount());
+			doc.save(ResourceUtilities.newTestOutputFile(CHART_FILE3));
+
+		} catch (Exception e) {
+			Logger.getLogger(DataSetTest.class.getName()).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 } };
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 2700;
+			rect.width = 10000;
+			rect.height = 12000;
+			Chart chartID = doc.createChart(title, lables, legends, data, rect);
+			Chart chart = doc.getChartById(chartID.getChartID());
+			DataSet ds = chart.getChartData();
+			Assert.assertEquals(title, chart.getChartTitle());
+			Assert.assertEquals(ChartType.BAR, chart.getChartType());
+			Assert.assertArrayEquals(lables, ds.getLabels());
+			Assert.assertArrayEquals(legends, ds.getLegends());
+			Assert.assertTrue(legends.length == ds.getDataSeriesCount());
+			Assert.assertNotNull(doc.getChartByTitle("LocalData"));
+			Assert.assertFalse(chart.isUseLegend() == true);
+			chart.setChartTitle("Chart with local-data");
+			chart.setUseLegend(false);
+			chart.setChartType(ChartType.RADAR);
+			Assert.assertEquals(chart.getChartTitle(), "Chart with local-data");
+			Assert.assertTrue(chart.isUseLegend() == false);
+			Assert.assertEquals(chart.getChartType(), ChartType.RADAR);
+			doc.save(ResourceUtilities.newTestOutputFile(CHART_FILE_ODT));
+
+			PresentationDocument pDoc = PresentationDocument.newPresentationDocument();
+			pDoc.createChart(title, lables, legends, data, rect);
+			pDoc.save(ResourceUtilities.newTestOutputFile(CHART_FILE_ODP));
+
+		} catch (Exception e) {
+			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/chart/ChartTypeTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/chart/ChartTypeTest.java
new file mode 100644
index 0000000..5766913
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/chart/ChartTypeTest.java
@@ -0,0 +1,59 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.chart;
+
+import java.awt.Rectangle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class ChartTypeTest {
+
+	@Test
+	public void testEnumValueOf() throws Exception {
+		try {
+			TextDocument tdoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+			String title = "title_name";
+			String[] labels = {"hello", "hi","odf"};
+			String[] legends = {"hello1", "hi1","odf1"};
+			double[][] data = {{1.11, 43.23}, {3.22, 4.00, 5.43}, {121.99, 123.1, 423.00}};
+			DataSet dataset = new DataSet(labels, legends, data);
+			Rectangle rect = new Rectangle();
+			Chart chart = tdoc.createChart(title, dataset, rect);
+			chart.setChartType(ChartType.AREA);
+			
+			String ctype = chart.getChartType().toString();
+			ChartType chartType = ChartType.enumValueOf(ctype);
+			Assert.assertEquals(chartType, ChartType.AREA);
+
+			//save
+			//tdoc.save(ResourceUtilities.getAbsolutePath("headerFooterHidden.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ChartTypeTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		
+	}
+
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/chart/DataSetTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/chart/DataSetTest.java
new file mode 100644
index 0000000..2689a94
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/chart/DataSetTest.java
@@ -0,0 +1,144 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.chart;
+
+import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.CellRangeAddressList;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class DataSetTest {
+
+	private static final String TEST_FILE = "ChartTest.ods";
+
+	@Test
+	public void testSetValuesFromSpreadsheet() {
+		try {
+			SpreadsheetDocument sheet = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_FILE));
+			DataSet data = new DataSet();
+			data.setValues(CellRangeAddressList.valueOf("A.A1:A.C4"), sheet, true, true, true);
+			Assert.assertEquals("A.A1:A.C4", data.getCellRangeAddress().toString());
+			printDataset(data);
+
+			data.setValues(CellRangeAddressList.valueOf("A.A1:A.C4"), sheet, true, true, false);
+			printDataset(data);
+			System.out.println("Max Item count:" + data.getMaxLengthOfDataSeries());
+			data.setValues(CellRangeAddressList.valueOf("A.A1:A.C4"), sheet, false, true, false);
+			printDataset(data);
+			System.out.println("Max Item count:" + data.getMaxLengthOfDataSeries());
+			data.setValues(CellRangeAddressList.valueOf("A.A1:A.C4"), sheet, true, false, true);
+			printDataset(data);
+			System.out.println("Max Item count:" + data.getMaxLengthOfDataSeries());
+		} catch (Exception e) {
+			Logger.getLogger(DataSetTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testSetValuesFromArray() {
+		int row = 2, column = 3;
+		double[][] data = new double[column][row];
+		String[] labels = new String[row];
+		String[] legends = new String[column];
+		for (int i = 0; i < column; i++) {
+			legends[i] = "legend" + (i + 1);
+			for (int j = 0; j < row; j++) {
+				if (i == 0)
+					labels[j] = "label" + (j + 1);
+				data[i][j] = i * j + i + j;
+			}
+		}
+		DataSet dataset = new DataSet(labels, legends, data);
+		printDataset(dataset);
+	}
+
+	private void printDataset(DataSet data) {
+		String[] firstrow = data.getLocalTableFirstRow();
+		String[] firstcolumn = data.getLocalTableFirstColumn();
+		Double[][] tabledata = data.getLocalTableData();
+		System.out.println();
+		System.out.print("\t\t");
+		for (int j = 0; j < firstrow.length; j++) {
+			System.out.print(firstrow[j] + "\t");
+		}
+		System.out.println();
+
+		for (int i = 0; i < firstcolumn.length; i++) {
+			System.out.print(firstcolumn[i] + "\t\t");
+			for (int j = 0; j < firstrow.length; j++)
+				if (tabledata[i][j] == null)
+					System.out.printf("nul\t");
+				else
+					System.out.printf("%.2f\t", tabledata[i][j].doubleValue());
+			System.out.println();
+
+		}
+	}
+
+	@Test
+	public void testGetCellRanges() {
+		Vector<String> seriesCellRange = new Vector<String>();
+		Vector<String> legendCellAddr = new Vector<String>();
+		DataSet ds = new DataSet();
+		String labelCellRange = ds.getCellRanges("A.A2:A.E21", false, true, false, seriesCellRange, legendCellAddr);
+		Assert.assertEquals("A.A2:A.A21", labelCellRange);
+		Assert.assertEquals(4, seriesCellRange.size());
+		Assert.assertEquals("A.B2:A.B21", seriesCellRange.firstElement());
+		Assert.assertEquals("A.E2:A.E21", seriesCellRange.lastElement());
+		Assert.assertEquals(4, legendCellAddr.size());
+		Assert.assertNull(legendCellAddr.firstElement());
+		Assert.assertNull(legendCellAddr.lastElement());
+
+		labelCellRange = ds.getCellRanges("A.A1:A.E21", true, true, true, seriesCellRange, legendCellAddr);
+		Assert.assertEquals("A.B1:A.E1", labelCellRange);
+		Assert.assertEquals(20, seriesCellRange.size());
+		Assert.assertEquals("A.B2:A.E2", seriesCellRange.firstElement());
+		Assert.assertEquals("A.B21:A.E21", seriesCellRange.lastElement());
+		Assert.assertEquals(20, legendCellAddr.size());
+		Assert.assertEquals("A.A2", legendCellAddr.firstElement());
+		Assert.assertEquals("A.A21", legendCellAddr.lastElement());
+
+		labelCellRange = ds.getCellRanges("A.B1:A.E21", true, false, false, seriesCellRange, legendCellAddr);
+		Assert.assertNull(labelCellRange);
+		Assert.assertEquals(4, seriesCellRange.size());
+		Assert.assertEquals("A.B2:A.B21", seriesCellRange.firstElement());
+		Assert.assertEquals("A.E2:A.E21", seriesCellRange.lastElement());
+		Assert.assertEquals(4, legendCellAddr.size());
+		Assert.assertEquals("A.B1", legendCellAddr.firstElement());
+		Assert.assertEquals("A.E1", legendCellAddr.lastElement());
+
+		labelCellRange = ds.getLocalTableCellRanges(4, 20, seriesCellRange, legendCellAddr);
+		Assert.assertEquals("local-table.A2:local-table.A21", labelCellRange);
+		Assert.assertEquals(4, seriesCellRange.size());
+		Assert.assertEquals("local-table.B2:local-table.B21", seriesCellRange.firstElement());
+		Assert.assertEquals("local-table.E2:local-table.E21", seriesCellRange.lastElement());
+		Assert.assertEquals(4, legendCellAddr.size());
+		Assert.assertEquals("local-table.B1", legendCellAddr.firstElement());
+		Assert.assertEquals("local-table.E1", legendCellAddr.lastElement());
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/GetTextTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/GetTextTest.java
new file mode 100644
index 0000000..389fa77
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/GetTextTest.java
@@ -0,0 +1,107 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfAlienElement;
+import org.odftoolkit.odfdom.pkg.OdfName;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class GetTextTest {
+
+	public static final Logger LOG = Logger.getLogger(GetTextTest.class.getName());
+
+	/**
+	 * This method will invoke EditableTextExtractor to test text extraction
+	 * function.
+	 */
+	@Test
+	public void testToString() {
+		try {
+			Document doc = Document.loadDocument(ResourceUtilities.getTestResourceAsStream("text-extract.odt"));
+			EditableTextExtractor extractor = EditableTextExtractor.newOdfEditableTextExtractor(doc);
+			String output = extractor.getText();
+			LOG.info(output);
+			int count = 0;
+			int index = output.indexOf("SIMPLE");
+			while (index != -1) {
+				count++;
+				index = output.indexOf("SIMPLE", index + 1);
+			}
+			if (count != 30) {
+				// there are
+				// 23 SIMPLE in the /content.xml
+				// 2 SIMPLE in the /styles.xml
+				// 5 SIMPLE in the /Object 1/content.xml
+				throw new RuntimeException("Something wrong! count=" + count);
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testReturnChar() {
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			textDoc.newParagraph();
+			OdfTextParagraph graph = textDoc.newParagraph("abc");
+
+			TextExtractor extractor = TextExtractor.newOdfTextExtractor(textDoc.getContentRoot());
+			String text = extractor.getText();
+			System.out.println(text);
+
+			int count = 0;
+			for (int i = 0; i < text.length(); i++)
+				if (text.charAt(i) == '\n')
+					count++;
+			Assert.assertEquals(2, count);
+
+			extractor = TextExtractor.newOdfTextExtractor(graph);
+			text = extractor.getText();
+			count = 0;
+			for (int i = 0; i < text.length(); i++)
+				if (text.charAt(i) == '\n')
+					count++;
+			Assert.assertEquals(0, count);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+        
+        @Test
+        public void testExtractFromDocumentWithAlienElement() throws Exception {
+            TextDocument document = TextDocument.newTextDocument();
+            document.getContentRoot().appendChild(new OdfAlienElement(document.getContentDom(), OdfName.newName("instance")));
+            document.addParagraph("Some text");
+            TextExtractor extractor = TextExtractor.newOdfTextExtractor(document.getContentRoot());
+            String text = extractor.getText();
+            Assert.assertEquals("\nSome text", text);
+        }
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/WhitespaceProcessorTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/WhitespaceProcessorTest.java
new file mode 100644
index 0000000..a85604a
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/WhitespaceProcessorTest.java
@@ -0,0 +1,187 @@
+/************************************************************************
+ *
+ * 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.simple.common;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextLineBreakElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTabElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.TextDocument;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * 
+ * @author J David Eisenberg
+ */
+public class WhitespaceProcessorTest {
+	private static final Logger LOG = Logger.getLogger(WhitespaceProcessorTest.class.getName());
+	TextDocument doc;
+	OdfFileDom dom;
+	String[] plainText = { "nospace", "one space", "two  spaces", "three   spaces", "   three leading spaces",
+			"three trailing spaces   ", "one\ttab", "two\t\ttabs", "\tleading tab", "trailing tab\t",
+			"mixed   \t   spaces and tabs", "line\nbreak" };
+
+	String[][] elementResult = { { "nospace" }, { "one space" }, { "two ", "*s1", "spaces" },
+			{ "three ", "*s2", "spaces" }, { " ", "*s2", "three leading spaces" }, { "three trailing spaces ", "*s2" },
+			{ "one", "*t", "tab" }, { "two", "*t", "*t", "tabs" }, { "*t", "leading tab" }, { "trailing tab", "*t" },
+			{ "mixed ", "*s2", "*t", " ", "*s2", "spaces and tabs" }, { "line", "*n", "break" } };
+
+	public WhitespaceProcessorTest() {
+	}
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = TextDocument.newTextDocument();
+			dom = doc.getContentDom();
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test of append method, of class WhitespaceProcessor.
+	 */
+	@Test
+	public void testAppend() {
+		LOG.info("append");
+		Element element = null;
+		WhitespaceProcessor instance = new WhitespaceProcessor();
+		int i;
+		for (i = 0; i < plainText.length; i++) {
+			element = new OdfTextParagraph(dom);
+			instance.append(element, plainText[i]);
+			compareResults(element, plainText[i], elementResult[i]);
+		}
+	}
+
+	private void compareResults(Element element, String input, String[] output) {
+		int i;
+		int nSpaces;
+		int nSpacesInAttribute;
+		Node node = element.getFirstChild();
+		for (i = 0; i < output.length; i++) {
+			if (output[i].startsWith("*")) {
+				Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+				if (output[i].equals("*t")) {
+					Assert.assertEquals("tab", node.getLocalName());
+				} else if (output[i].equals("*n")) {
+					Assert.assertEquals("line-break", node.getLocalName());
+				} else {
+					nSpaces = Integer.parseInt(output[i].substring(2));
+					Assert.assertEquals(node.getLocalName(), "s");
+					nSpacesInAttribute = Integer.parseInt(((Element) node).getAttribute("text:c"));
+					Assert.assertEquals(nSpaces, nSpacesInAttribute);
+				}
+			} else {
+				Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+				Assert.assertEquals(output[i], node.getTextContent());
+			}
+			node = node.getNextSibling();
+		}
+		Assert.assertEquals(node, null);
+	}
+
+	/**
+	 * Test of getText method, of class WhitespaceProcessor.
+	 */
+	@Test
+	public void testGetText() {
+		LOG.info("getText");
+		Node element = null;
+		WhitespaceProcessor instance = new WhitespaceProcessor();
+		int i;
+		String expResult = "";
+		String result;
+		for (i = 0; i < plainText.length; i++) {
+			element = new OdfTextParagraph(dom);
+			constructElement(element, elementResult[i]);
+			result = plainText[i];
+			expResult = instance.getText(element);
+			Assert.assertEquals(expResult, result);
+		}
+	}
+
+	private void constructElement(Node element, String[] expected) {
+		int i;
+		int nSpaces;
+		TextSElement spaceElement;
+
+		for (i = 0; i < expected.length; i++) {
+			if (expected[i].startsWith("*")) {
+				if (expected[i].equals("*t")) {
+					element.appendChild(new TextTabElement(dom));
+				} else if (expected[i].equals("*n")) {
+					element.appendChild(new TextLineBreakElement(dom));
+				} else {
+					nSpaces = Integer.parseInt(expected[i].substring(2));
+					spaceElement = new TextSElement(dom);
+					spaceElement.setTextCAttribute(nSpaces);
+					element.appendChild(spaceElement);
+				}
+			} else {
+				element.appendChild(dom.createTextNode(expected[i]));
+			}
+		}
+	}
+
+	/**
+	 * Test of appendText method, of class WhitespaceProcessor.
+	 */
+	@Test
+	public void testAppendText() {
+		LOG.info("appendText");
+		Element element = null;
+		int i;
+		for (i = 0; i < plainText.length; i++) {
+			element = new OdfTextParagraph(dom);
+			WhitespaceProcessor.appendText(element, plainText[i]);
+			compareResults(element, plainText[i], elementResult[i]);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/ChapterFieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/ChapterFieldTest.java
new file mode 100644
index 0000000..be3b27b
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/ChapterFieldTest.java
@@ -0,0 +1,90 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextChapterElement;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class ChapterFieldTest {
+
+	private static String TEST_DOCUMENT = "headerFooterHidden.odt";
+	
+	@Test
+	public void testSetOutlineLevel() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			ChapterField chapterField = Fields.createChapterField(doc.addParagraph("Chapter:").getOdfElement());
+			chapterField.setOutlineLevel(1);
+			
+			TextChapterElement tchapterele = chapterField.getOdfElement();
+			Integer level = tchapterele.getTextOutlineLevelAttribute();
+			Assert.assertTrue(1 == level);
+			
+			//save
+			//doc.save(ResourceUtilities.getAbsolutePath(TEST_DOCUMENT));
+		} catch (Exception e) {
+			Logger.getLogger(ChapterFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetOdfElement() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			ChapterField chapterField = Fields.createChapterField(doc.addParagraph("Chapter:").getOdfElement());
+			chapterField.setOutlineLevel(1);
+			TextChapterElement tchapterEle = chapterField.getOdfElement();
+			
+			Assert.assertNotNull(tchapterEle);
+			Assert.assertEquals("chapter", tchapterEle.getLocalName());
+			Assert.assertEquals("text:chapter", tchapterEle.getNodeName());
+
+			//save
+			//doc.save(ResourceUtilities.getAbsolutePath("TextFieldSampleDocument.odt"));
+			
+		} catch (Exception e) {
+			Logger.getLogger(ChapterFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetFieldType() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			ChapterField chapterField = Fields.createChapterField(doc.newParagraph("Chapter:"));
+			FieldType fieldType = chapterField.getFieldType();
+			Assert.assertNotNull(fieldType);
+			Assert.assertEquals(FieldType.CHAPTER_FIELD, fieldType);
+		} catch (Exception e) {
+			Logger.getLogger(ChapterFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/ConditionFieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/ConditionFieldTest.java
new file mode 100644
index 0000000..5d1f5b6
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/ConditionFieldTest.java
@@ -0,0 +1,179 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextConditionalTextElement;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class ConditionFieldTest {
+
+	private static String TEST_DOCUMENT = "TextFieldSampleDocument.odt";
+	
+	@Test
+	public void testUpdateCondition() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			Paragraph varParagraph = doc.addParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph.getOdfElement());
+
+			// test condition field
+			Paragraph newParagraph = doc.addParagraph("Condition Field Test:");
+			ConditionField conditionField = Fields.createConditionField(newParagraph.getOdfElement(), "test_con_variable == \"true\"",
+					"trueText", "falseText");
+			Assert.assertNotNull(conditionField);
+			conditionField.updateCondition("test_con_variable == \"false\"");
+			TextConditionalTextElement textCondEle = (TextConditionalTextElement) conditionField.getOdfElement();
+			Assert.assertEquals("ooow:test_con_variable == \"false\"", textCondEle.getTextConditionAttribute());
+			//save
+			//doc.save(ResourceUtilities.getAbsolutePath(TEST_DOCUMENT));
+		} catch (Exception e) {
+			Logger.getLogger(ConditionFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testUpdateTrueText() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			Paragraph varParagraph = doc.addParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph.getOdfElement());
+
+			// test condition field
+			Paragraph newParagraph = doc.addParagraph("Condition Field Test:");
+			ConditionField conditionField = Fields.createConditionField(newParagraph.getOdfElement(), "test_con_variable == \"true\"",
+					"trueText", "falseText");
+			Assert.assertNotNull(conditionField);
+			conditionField.updateTrueText("trueTextUpdate");
+			
+			//validate
+			TextConditionalTextElement conditionalTextElement = (TextConditionalTextElement) conditionField.getOdfElement();
+			conditionalTextElement.getTextStringValueIfTrueAttribute();
+			Assert.assertEquals("trueTextUpdate", conditionalTextElement.getTextStringValueIfTrueAttribute());
+			
+			//save
+			//doc.save(ResourceUtilities.getAbsolutePath(TEST_DOCUMENT));
+		} catch (Exception e) {
+			Logger.getLogger(ConditionFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testUpdateFalseText() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			Paragraph varParagraph = doc.addParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph.getOdfElement());
+
+			// test condition field
+			Paragraph newParagraph = doc.addParagraph("Condition Field Test:");
+			ConditionField conditionField = Fields.createConditionField(newParagraph.getOdfElement(), "test_con_variable == \"true\"",
+					"trueText", "falseText");
+			Assert.assertNotNull(conditionField);
+			
+			conditionField.updateCondition("test_con_variable == \"false\"");
+			conditionField.updateFalseText("falseTextUpdate");
+
+			//validate
+			TextConditionalTextElement conditionalTextElement = (TextConditionalTextElement) conditionField.getOdfElement();
+			conditionalTextElement.getTextStringValueIfFalseAttribute();
+			Assert.assertEquals("falseTextUpdate", conditionalTextElement.getTextStringValueIfFalseAttribute());
+		} catch (Exception e) {
+			Logger.getLogger(ConditionFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetOdfElement() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			Paragraph varParagraph = doc.addParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph.getOdfElement());
+
+			// test condition field
+			Paragraph newParagraph = doc.addParagraph("Condition Field Test:");
+			ConditionField conditionField = Fields.createConditionField(newParagraph.getOdfElement(), "test_con_variable == \"true\"",
+					"trueText", "falseText");
+			Assert.assertNotNull(conditionField);
+
+			// validate
+			TextConditionalTextElement conditionalTextElement = (TextConditionalTextElement) conditionField.getOdfElement();
+			conditionalTextElement.getTextStringValueIfFalseAttribute();
+			Assert.assertEquals("falseText", conditionalTextElement.getTextStringValueIfFalseAttribute());
+			
+		} catch (Exception e) {
+			Logger.getLogger(ConditionFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testFieldType() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			Paragraph varParagraph = doc.addParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph.getOdfElement());
+
+			// test condition field
+			Paragraph newParagraph = doc.addParagraph("Condition Field Test:");
+			ConditionField conditionField = Fields.createConditionField(newParagraph.getOdfElement(), "test_con_variable == \"true\"",
+					"trueText", "falseText");
+			Assert.assertNotNull(conditionField);
+			
+			FieldType fieldType = conditionField.getFieldType();
+			Assert.assertEquals(FieldType.CONDITION_FIELD, fieldType);
+
+			// test hide field
+			newParagraph = doc.addParagraph("Hide Text Field Test:");
+			conditionField = Fields.createHiddenTextField(newParagraph.getOdfElement(), "test_con_variable == \"true\"", "hiddenText");
+			FieldType fieldType1 = conditionField.getFieldType();
+			Assert.assertEquals(FieldType.HIDDEN_TEXT_FIELD, fieldType1);
+		} catch (Exception e) {
+			Logger.getLogger(ConditionFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/FieldsTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/FieldsTest.java
new file mode 100644
index 0000000..5f0ecc5
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/FieldsTest.java
@@ -0,0 +1,246 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorInitialsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTimeElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.PageNumberField.DisplayType;
+import org.odftoolkit.simple.style.NumberFormat;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class FieldsTest {
+
+	private static String TEST_DOCUMENT = "TextFieldSampleDocument.odt";
+
+	@Test
+	public void testCreateConditionField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			OdfTextParagraph varParagraph = doc.newParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph);
+
+			// test condition field
+			OdfTextParagraph newParagraph = doc.newParagraph("Condition Field Test:");
+			ConditionField conditionField = Fields.createConditionField(newParagraph, "test_con_variable == \"true\"",
+					"trueText", "falseText");
+			Assert.assertNotNull(conditionField);
+
+			// test hide field
+			newParagraph = doc.newParagraph("Hide Text Field Test:");
+			conditionField = Fields.createHiddenTextField(newParagraph, "test_con_variable == \"true\"", "hiddenText");
+			Assert.assertNotNull(conditionField);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreateVariableField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_simple_variable");
+			Assert.assertNotNull(simpleVariableField);
+			TextSpanElement newTextSpanElement = doc.newParagraph("Update Simple Variable Field:").newTextSpanElement();
+			simpleVariableField.updateField("simple variable content", newTextSpanElement);
+			newTextSpanElement = doc.newParagraph("Show Simple Variable Field:").newTextSpanElement();
+			simpleVariableField.displayField(newTextSpanElement);
+
+			// declare user variable
+			VariableField userVariableField = Fields.createUserVariableField(doc, "test_user_variable", "test");
+			Assert.assertNotNull(userVariableField);
+			OdfTextParagraph newParagraph = doc.newParagraph("Update User Variable Field:");
+			userVariableField.updateField("user variable content", null);
+			newParagraph = doc.newParagraph("Show User Variable Field:");
+			userVariableField.displayField(newParagraph);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCreateReferenceField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			TextSpanElement newTextSpanElement = doc.newParagraph("Reference Content:").newTextSpanElement();
+			newTextSpanElement.setTextContent("This is a test reference content.");
+			ReferenceField referenceField = Fields.createReferenceField(newTextSpanElement, "test-ref");
+			Assert.assertNotNull(referenceField);
+			referenceField
+					.appendReferenceTo(doc.newParagraph("User Reference Field:"), ReferenceField.DisplayType.TEXT);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddChapterField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			ChapterField chapterField = Fields.createChapterField(doc.newParagraph("Chapter:"));
+			Assert.assertNotNull(chapterField);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddTitleOrSubjectField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			TitleField titleField = Fields.createTitleField(doc.newParagraph("The Title:"));
+			Assert.assertNotNull(titleField);
+			Assert.assertEquals("document title", titleField.getOdfElement().getTextContent());
+
+			SubjectField subjectField = Fields.createSubjectField(doc.newParagraph("The Subject:"));
+			Assert.assertNotNull(subjectField);
+			Assert.assertEquals("document subject", subjectField.getOdfElement().getTextContent());
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddAuthorField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			AuthorField authorField = Fields
+					.createAuthorInitialsField(doc.newParagraph("The initials of the author :"));
+			Assert.assertNotNull(authorField);
+			Assert.assertTrue(authorField.getOdfElement() instanceof TextAuthorInitialsElement);
+
+			authorField = Fields.createAuthorNameField(doc.newParagraph("Author:"));
+			Assert.assertNotNull(authorField);
+			Assert.assertTrue(authorField.getOdfElement() instanceof TextAuthorNameElement);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddPageNumberField() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			PageNumberField numberField = Fields.createCurrentPageNumberField(doc.newParagraph("Current Page Number:"));
+			Assert.assertNotNull(numberField);
+			numberField.setNumberFormat(NumberFormat.UPPERCASE_LATIN_ALPHABET);
+			String format = numberField.getOdfElement().getStyleNumFormatAttribute();
+			Assert.assertEquals("A", format);
+			numberField.setDisplayPage(DisplayType.NEXT_PAGE);
+			String type = numberField.getOdfElement().getTextSelectPageAttribute();
+			Assert.assertEquals("next", type);
+
+			numberField = Fields.createPreviousPageNumberField(doc.newParagraph("Previous Page Number:"));
+			type = numberField.getOdfElement().getTextSelectPageAttribute();
+			Assert.assertEquals("previous", type);
+			numberField = Fields.createNextPageNumberField(doc.newParagraph("Next Page Number:"));
+			type = numberField.getOdfElement().getTextSelectPageAttribute();
+			Assert.assertEquals("next", type);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddPageCountField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			PageCountField countField = Fields.createPageCountField(doc.newParagraph("Page Count:"));
+			Assert.assertNotNull(countField);
+			countField.setNumberFormat(NumberFormat.UPPERCASE_LATIN_ALPHABET);
+			String format = countField.getOdfElement().getStyleNumFormatAttribute();
+			Assert.assertEquals("A", format);
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddDateField() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			DateField dateField = Fields.createDateField(doc.newParagraph("Date:"));
+			Assert.assertNotNull(dateField);
+
+			TextDateElement dateEle = dateField.getOdfElement();
+			String oldContent = dateEle.getTextContent();
+			SimpleDateFormat oldFormat = new SimpleDateFormat("yyyy-MM-dd");
+			Date oldDate = oldFormat.parse(oldContent);
+
+			String format = "yy-MM-dd";
+			dateField.formatDate(format);
+			String newContent = dateEle.getTextContent();
+			SimpleDateFormat newFormat = new SimpleDateFormat(format);
+			Date newDate = newFormat.parse(newContent);
+			Assert.assertEquals(oldDate.getTime(), newDate.getTime());
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddTimeField() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			TimeField timeField = Fields.createTimeField(doc.newParagraph("Time:"));
+			Assert.assertNotNull(timeField);
+
+			TextTimeElement timeEle = timeField.getOdfElement();
+			String oldContent = timeEle.getTextContent();
+			SimpleDateFormat oldFormat = new SimpleDateFormat("HH:mm:ss");
+			Date oldDate = oldFormat.parse(oldContent);
+
+			String format = "HH:mm:ss a";
+			timeField.formatTime(format);
+			String newContent = timeEle.getTextContent();
+			SimpleDateFormat newFormat = new SimpleDateFormat(format);
+			Date newDate = newFormat.parse(newContent);
+			Assert.assertEquals(oldDate.getTime(), newDate.getTime());
+		} catch (Exception e) {
+			Logger.getLogger(FieldsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/PageNumberFieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/PageNumberFieldTest.java
new file mode 100644
index 0000000..9d758c0
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/PageNumberFieldTest.java
@@ -0,0 +1,55 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+import org.odftoolkit.simple.common.field.PageNumberField.DisplayType;
+
+public class PageNumberFieldTest {
+
+	@Test
+	public void testGetFieldType() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			PageNumberField numberField = Fields.createCurrentPageNumberField(doc.newParagraph("Current Page Number:"));
+			Assert.assertNotNull(numberField);
+			FieldType fieldType = numberField.getFieldType();
+			Assert.assertNotNull(fieldType);
+			Assert.assertEquals(fieldType, FieldType.CURRENT_PAGE_NUMBER_FIELD);
+			numberField.setDisplayPage(DisplayType.PREVIOUS_PAGE);
+			FieldType fieldType1 = numberField.getFieldType();
+			Assert.assertEquals(fieldType1, FieldType.PREVIOUS_PAGE_NUMBER_FIELD);
+			numberField.setDisplayPage(DisplayType.NEXT_PAGE);
+			FieldType fieldType2 = numberField.getFieldType();
+			Assert.assertEquals(fieldType2, FieldType.NEXT_PAGE_NUMBER_FIELD);
+			
+		} catch (Exception e) {
+			Logger.getLogger(PageNumberFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/SubjectFieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/SubjectFieldTest.java
new file mode 100644
index 0000000..8f57d15
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/SubjectFieldTest.java
@@ -0,0 +1,47 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+
+public class SubjectFieldTest {
+
+	@Test
+	public void testGetFieldType() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			SubjectField subjectField = Fields.createSubjectField(doc.newParagraph("The Subject:"));
+			
+			FieldType fieldType = subjectField.getFieldType();
+			Assert.assertNotNull(subjectField);
+			Assert.assertEquals(fieldType, FieldType.SUBJECT_FIELD);
+		} catch (Exception e) {
+			Logger.getLogger(SubjectFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/TitleFieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/TitleFieldTest.java
new file mode 100644
index 0000000..e03eebb
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/TitleFieldTest.java
@@ -0,0 +1,46 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+
+public class TitleFieldTest {
+
+	@Test
+	public void testGetFieldType() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			TitleField titleField = Fields.createTitleField(doc.newParagraph("The Title:"));
+			Assert.assertNotNull(titleField);
+			FieldType fType = titleField.getFieldType();
+			Assert.assertEquals(fType, FieldType.TITLE_FIELD);
+		} catch (Exception e) {
+			Logger.getLogger(TitleFieldTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/VariableFieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/VariableFieldTest.java
new file mode 100644
index 0000000..ecf55a6
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/field/VariableFieldTest.java
@@ -0,0 +1,78 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.field;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field.FieldType;
+import org.odftoolkit.simple.common.navigation.FieldSelectionTest;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class VariableFieldTest {
+	private static final Logger LOG = Logger.getLogger(VariableFieldTest.class.getName());
+	private static String TEST_DOCUMENT = "TextFieldSampleDocument.odt";
+
+	@Test
+	public void testVariableTypeToString() {
+		try {
+			VariableField.VariableType variableType = VariableField.VariableType.valueOf(VariableField.VariableType.class, VariableField.VariableType.SIMPLE.name());
+			String variableTypeStr = variableType.toString();
+			Assert.assertNotNull(variableType);
+			Assert.assertEquals("simple", variableTypeStr);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testVariableTypesisplayField() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_DOCUMENT));
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_simple_variable");
+			Assert.assertNotNull(simpleVariableField);
+			TextSpanElement newTextSpanElement = doc.newParagraph("Update Simple Variable Field:").newTextSpanElement();
+			simpleVariableField.updateField("simple variable content", newTextSpanElement);
+			
+			FieldType fieldType = simpleVariableField.getFieldType();
+			Assert.assertNotNull(fieldType);
+			Assert.assertEquals(FieldType.SIMPLE_VARIABLE_FIELD, fieldType);
+			newTextSpanElement = doc.newParagraph("Show Simple Variable Field:").newTextSpanElement();
+			simpleVariableField.displayField(newTextSpanElement);
+			simpleVariableField.updateField("aaaa", newTextSpanElement);
+			try {
+				doc.save(ResourceUtilities.newTestOutputFile("TextFieldSampleDocumentVariableField.odt"));
+			} catch (Exception e) {
+				Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+				Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/CellSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/CellSelectionTest.java
new file mode 100644
index 0000000..cf50e67
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/CellSelectionTest.java
@@ -0,0 +1,122 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+ */
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+/**
+ * Test the method of class org.odftoolkit.simple.common.navigation.CellSelection
+ */
+public class CellSelectionTest {
+
+	public static final String TEST_FILE         = "TestCellSelection.ods";
+	public static final String SAVE_FILE_REPLACE = "CellSelectionResultReplace.ods";
+	SpreadsheetDocument        doc;
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (SpreadsheetDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+		} catch (Exception e) {
+			Logger.getLogger(CellSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test replaceWith method of org.odftoolkit.simple.common.navigation.TextSelection replace all the 'SIMPLE' with 'Odf
+	 * Toolkit'
+	 */
+	@Test
+	public void testAdvancedReplacewith() {
+		Map<String, String> valueProperties = new HashMap<String, String>();
+		valueProperties.put("Amount", "3,000,000");
+		valueProperties.put("Task", "Develop");
+		valueProperties.put("Date", "11/09/2010");
+		valueProperties.put("Time", "14:30");
+		valueProperties.put("Status", "true");
+		Map<String, String> typeProperties = new HashMap<String, String>();
+		typeProperties.put("Amount", "float");
+		typeProperties.put("Task", "string");
+		typeProperties.put("Date", "date");
+		typeProperties.put("Time", "time");
+		typeProperties.put("Status", "boolean");
+		
+		// simple text replace
+		for (String key : valueProperties.keySet()) {
+			String value = valueProperties.get(key);
+			TextNavigation navigate = new TextNavigation(key, doc);
+			while (navigate.hasNext()) {
+				CellSelection selection = (CellSelection) navigate.nextSelection();
+				try {
+					selection.advancedReplaceWith(value);
+					String valueType = selection.getCell().getValueType();
+					Assert.assertEquals(typeProperties.get(key), valueType);
+				} catch (InvalidNavigationException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+
+	/**
+	 * this method tests a simple replace with. Especially Line breaks
+	 */
+	@Test
+	public void testReplaceWith() {
+		Map<String, String> valueProperties = new HashMap<String, String>();
+		valueProperties.put("Amount", "3,000,000");
+		valueProperties.put("Task", "Develop\nWith a second line");
+		valueProperties.put("Date", "11/09/2010");
+		valueProperties.put("Time", "14:30");
+		valueProperties.put("Status", "true");
+
+		// simple text replace
+		for (String key : valueProperties.keySet()) {
+			String value = valueProperties.get(key);
+			TextNavigation navigate = new TextNavigation(key, doc);
+			while (navigate.hasNext()) {
+				CellSelection selection = (CellSelection) navigate.nextSelection();
+				try {
+					// use a simple replace to replace the values
+					selection.replaceWith(value);
+
+					// get the cell's string value (which is different from the textvalue)
+					String newValue = selection.getCell().getStringValue();
+
+					// make sure that the cell's value is the same as the intended value
+					Assert.assertEquals(valueProperties.get(key), newValue);
+				} catch (InvalidNavigationException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/FieldSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/FieldSelectionTest.java
new file mode 100644
index 0000000..59ec6a8
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/FieldSelectionTest.java
@@ -0,0 +1,1069 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.OdfStylesDom;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorInitialsElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAuthorNameElement;
+import org.odftoolkit.odfdom.dom.element.text.TextChapterElement;
+import org.odftoolkit.odfdom.dom.element.text.TextConditionalTextElement;
+import org.odftoolkit.odfdom.dom.element.text.TextDateElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageCountElement;
+import org.odftoolkit.odfdom.dom.element.text.TextPageNumberElement;
+import org.odftoolkit.odfdom.dom.element.text.TextReferenceRefElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.element.text.TextSubjectElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTimeElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTitleElement;
+import org.odftoolkit.odfdom.dom.element.text.TextUserFieldGetElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.Field;
+import org.odftoolkit.simple.common.field.Fields;
+import org.odftoolkit.simple.common.field.ReferenceField;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.field.ReferenceField.DisplayType;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Test the method of class
+ * org.odftoolkit.simple.common.navigation.FieldSelection
+ */
+public class FieldSelectionTest {
+
+	public static final String TEXT_FILE = "TextFieldSampleDocument.odt";
+	public static final String SAVE_FILE_STYLE = "TextFieldResultStyle.odt";
+	public static final String SAVE_FILE_REPLACE = "TextFieldResultReplace.odt";
+
+	TextDocument doc;
+	OdfFileDom contentDOM;
+	TextNavigation search;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			contentDOM = doc.getContentDom();
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test applyStyle method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection append "T4" style
+	 * for all the 'delete' word, 'T4' in the original document is the 'bold'
+	 * style
+	 */
+	@Test
+	public void testApplyStyle() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		OdfOfficeAutomaticStyles autoStyles = null;
+		try {
+			autoStyles = doc.getContentDom().getAutomaticStyles();
+		} catch (Exception e1) {
+			Assert.fail("Failed with " + e1.getClass().getName() + ": '" + e1.getMessage() + "'");
+		}
+		// T4 is the bold style for text
+		OdfStyleBase style = autoStyles.getStyle("T4", OdfStyleFamily.Text);
+		Assert.assertNotNull(style);
+
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			try {
+				item.applyStyle(style);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_STYLE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testReplaceWithSimpleField() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.FIXED_DATE_FIELD);
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testReplaceWithConditionField() {
+		try {
+			search = new TextNavigation("ReplaceConditionTarget", doc);
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			OdfTextParagraph varParagraph = doc.newParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph);
+			// count the initial date field count. 
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 2 "ReplaceConditionTarget" to ConditionField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithConditionField("test_con_variable == \"true\"", "trueText", "falseText");
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testReplaceWithHiddenTextField() {
+		try {
+			search = new TextNavigation("ReplaceHiddenTextTarget", doc);
+			// declare simple variable
+			VariableField simpleVariableField = Fields.createSimpleVariableField(doc, "test_con_variable");
+			OdfTextParagraph varParagraph = doc.newParagraph("test_con_variable:");
+			simpleVariableField.updateField("true", varParagraph);
+
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 2 "ReplaceHiddenTextTarget" to HiddenTextField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithHiddenTextField("test_con_variable == \"true\"", "hiddenText");
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextConditionalTextElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testReplaceWithReferenceField() {
+		try {
+			search = new TextNavigation("ReplaceReferenceTarget", doc);
+			TextSpanElement newTextSpanElement = doc.newParagraph("Selection Reference Content:").newTextSpanElement();
+			newTextSpanElement.setTextContent("This is a test selection reference content.");
+			ReferenceField referenceField = Fields.createReferenceField(newTextSpanElement, "selection-test-ref");
+			// count the initial reference field count.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextReferenceRefElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextReferenceRefElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 2 "ReplaceReferenceTarget" to ReferenceField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithReferenceField(referenceField, DisplayType.TEXT);
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextReferenceRefElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextReferenceRefElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testReplaceWithVariableField() {
+		try {
+			search = new TextNavigation("SelectionUserVariableTarget", doc);
+			// declare variable
+			VariableField userVariableField = Fields.createUserVariableField(doc, "selection_user_variable", "test");
+			// count the initial variable field count.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextUserFieldGetElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextUserFieldGetElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "SelectionUserVariableTarget" to VariableField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithVariableField(userVariableField);
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextUserFieldGetElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextUserFieldGetElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testReplaceWithSimpleField2() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				//fieldSelection.replaceWithSimpleField(Field.FieldType.FIXED_DATE_FIELD);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.DATE_FIELD);	// 1
+				//fieldSelection.replaceWithSimpleField(Field.FieldType.TIME_FIELD);	//3
+				i++;
+			}
+			
+			nodeList = contentDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextDateElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_time_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			
+			//change all <code>ext:fixed</code> value be false 
+			for(int k =0;k<nodeList.getLength();k++){
+				Node nv = nodeList.item(k);
+				if(nv.getFirstChild().getNodeValue().matches("^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$")){
+					NamedNodeMap nameMap = nv.getAttributes();
+					Node nfix = nameMap.getNamedItem("text:fixed");
+					nfix.setNodeValue("false");
+				}
+			}
+			
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				//fieldSelection.replaceWithSimpleField(Field.FieldType.FIXED_DATE_FIELD);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.TIME_FIELD);
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+			//validate  
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			OdfContentDom contentDom1 = doc1.getContentDom();
+			
+			nodeList = contentDom1.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList.getLength();k++){
+				//
+				Node nv = nodeList.item(k);
+				if(nv.getFirstChild().getNodeValue().matches("^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$")){
+					NamedNodeMap nameMap = nv.getAttributes();
+					Node nfix = nameMap.getNamedItem("text:fixed");
+					System.out.println("&&& " + nfix.getNodeValue());
+					Assert.assertEquals("false", nfix.getNodeValue());
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_fixed_time_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			NodeList nodeList = contentDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.FIXED_TIME_FIELD);
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextTimeElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+
+	@Test
+	public void testReplaceWithSimpleField_previous_page_number_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList1 = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList1.getLength();k++){
+				//
+				Node nv = nodeList1.item(k);
+				NamedNodeMap nameMap = nv.getAttributes();
+				Node nfix = nameMap.getNamedItem("text:select-page");
+				nfix.setNodeValue("previous");
+			}
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.PREVIOUS_PAGE_NUMBER_FIELD);
+				i++;
+			}
+			nodeList = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+			//validate
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			OdfContentDom contentDom1 = doc1.getContentDom();
+			
+			nodeList = contentDom1.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList.getLength();k++){
+				Node nv = nodeList.item(k);
+				NamedNodeMap nameMap = nv.getAttributes();
+				Node nfix = nameMap.getNamedItem("text:select-page");
+				Assert.assertEquals("previous", nfix.getNodeValue());
+				
+			}
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_current_page_number_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList1 = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList1.getLength();k++){
+				//
+				Node nv = nodeList1.item(k);
+				NamedNodeMap nameMap = nv.getAttributes();
+				Node nfix = nameMap.getNamedItem("text:select-page");
+				nfix.setNodeValue("current");
+			}
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.CURRENT_PAGE_NUMBER_FIELD);
+				i++;
+			}
+			
+			//value
+			nodeList = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+			//validate
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			OdfContentDom contentDom1 = doc1.getContentDom();
+			
+			nodeList = contentDom1.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList.getLength();k++){
+				Node nv = nodeList.item(k);
+				NamedNodeMap nameMap = nv.getAttributes();
+				Node nfix = nameMap.getNamedItem("text:select-page");
+				System.out.println(nfix.getNodeValue());
+				Assert.assertEquals("current", nfix.getNodeValue());
+			}
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testReplaceWithSimpleField_next_page_number_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList1 = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList1.getLength();k++){
+				//
+				Node nv = nodeList1.item(k);
+				NamedNodeMap nameMap = nv.getAttributes();
+				Node nfix = nameMap.getNamedItem("text:select-page");
+				nfix.setNodeValue("next");
+			}
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.NEXT_PAGE_NUMBER_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+			//validate
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			OdfContentDom contentDom1 = doc1.getContentDom();
+			
+			nodeList = contentDom1.getElementsByTagName(TextPageNumberElement.ELEMENT_NAME.getQName());
+			for(int k =0;k<nodeList.getLength();k++){
+				Node nv = nodeList.item(k);
+				NamedNodeMap nameMap = nv.getAttributes();
+				Node nfix = nameMap.getNamedItem("text:select-page");
+				System.out.println(nfix.getNodeValue());
+				Assert.assertEquals("next", nfix.getNodeValue());
+			}
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_page_count_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextPageCountElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextPageCountElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.PAGE_COUNT_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextPageCountElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextPageCountElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testReplaceWithSimpleField_title_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextTitleElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextTitleElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.TITLE_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextTitleElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextTitleElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_subject_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextSubjectElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextSubjectElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.SUBJECT_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextSubjectElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextSubjectElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testReplaceWithSimpleField_author_name_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextAuthorNameElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextAuthorNameElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.AUTHOR_NAME_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextAuthorNameElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextAuthorNameElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testReplaceWithSimpleField_author_initials_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextAuthorInitialsElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextAuthorInitialsElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.AUTHOR_INITIALS_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextAuthorInitialsElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextAuthorInitialsElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_chapter_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			// count the initial date field count. should be 1.
+			OdfContentDom contentDom = doc.getContentDom();
+			
+			NodeList nodeList = contentDom.getElementsByTagName(TextChapterElement.ELEMENT_NAME.getQName());
+			int i = nodeList.getLength();
+			OdfStylesDom styleDom = doc.getStylesDom();
+			nodeList = styleDom.getElementsByTagName(TextChapterElement.ELEMENT_NAME.getQName());
+			i += nodeList.getLength();
+			// replace all the 3 "ReplaceDateTarget" to FixedDateField.
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.CHAPTER_FIELD);
+				i++;
+			}
+			
+			//validate
+			nodeList = contentDom.getElementsByTagName(TextChapterElement.ELEMENT_NAME.getQName());
+			int j = nodeList.getLength();
+			nodeList = styleDom.getElementsByTagName(TextChapterElement.ELEMENT_NAME.getQName());
+			j += nodeList.getLength();
+			Assert.assertEquals(j, i);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_reference_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.REFERENCE_FIELD);
+			}
+		} catch (Exception e) {
+			//Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("this is not a vaild simple field type.", e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_simple_variable_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.SIMPLE_VARIABLE_FIELD);
+			}
+		} catch (Exception e) {
+			//Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("this is not a vaild simple field type.", e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_user_variable_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.USER_VARIABLE_FIELD);
+			}
+		} catch (Exception e) {
+			//Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("this is not a vaild simple field type.", e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_condition_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.CONDITION_FIELD);
+			}
+		} catch (Exception e) {
+			//Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("this is not a vaild simple field type.", e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testReplaceWithSimpleField_hidden_text_field() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWithSimpleField(Field.FieldType.HIDDEN_TEXT_FIELD);
+			}
+		} catch (Exception e) {
+			//Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.assertTrue(e instanceof IllegalArgumentException);
+			Assert.assertEquals("this is not a vaild simple field type.", e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testReplaceWith() {
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			int i =0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.replaceWith("hello world.");
+				i++;
+			}
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+
+			//validate  
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			
+			search = new TextNavigation("ReplaceDateTarget", doc1);
+			if (search.hasNext()) {
+				Assert.fail();
+			}
+			
+			search = new TextNavigation("hello world.", doc1);
+			int j =0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				item.replaceWith("hi world.");
+				j++;
+			}
+			Assert.assertEquals(i, j);
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	
+	@Test
+	public void testPasteAtEndOf() {
+		try {
+			
+			//count of TextSelection("ReplaceDateTargetchange")
+			TextNavigation search3 = new TextNavigation("ReplaceDateTargetchange", doc);
+			int j = 0;
+			while(search3.hasNext()){
+				TextSelection item = (TextSelection) search3.nextSelection();
+				item.getText();
+				j++;
+			}
+			
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			TextNavigation search2 = new TextNavigation("change", doc);
+			TextSelection pastesource = null;
+			if(search2.hasNext()){
+				pastesource = (TextSelection)search2.nextSelection();
+			}
+			if(pastesource == null)
+				Assert.fail("pastesource == null.");
+			
+			int i =0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				pastesource.pasteAtEndOf(item);
+				i++;
+			}
+			
+			int count = i+j;
+			System.out.println(count);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+
+			//validate  
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			TextNavigation search4 = new TextNavigation("ReplaceDateTargetchange", doc1);
+			int resultcount = 0;
+			while (search4.hasNext()) {
+				TextSelection item = (TextSelection) search4.nextSelection();
+				item.getText();
+				//System.out.println(item.getText());
+				
+				resultcount++;
+			}
+			
+			Assert.assertEquals(count, resultcount);
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testPasteAtFrontOf() {
+		try {
+			
+			//count of TextSelection("ReplaceDateTargetchange")
+			TextNavigation search3 = new TextNavigation("changeReplaceDateTarget", doc);
+			int j = 0;
+			while(search3.hasNext()){
+				TextSelection item = (TextSelection) search3.nextSelection();
+				item.getText();
+				j++;
+			}
+			
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			TextNavigation search2 = new TextNavigation("change", doc);
+			TextSelection pastesource = null;
+			if(search2.hasNext()){
+				pastesource = (TextSelection)search2.nextSelection();
+			}
+			if(pastesource == null)
+				Assert.fail("pastesource == null.");
+			
+			int i =0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				pastesource.pasteAtFrontOf(item);
+				i++;
+			}
+			
+			int count = i+j;
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+
+			//validate  
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			TextNavigation search4 = new TextNavigation("changeReplaceDateTarget", doc1);
+			int resultcount = 0;
+			while (search4.hasNext()) {
+				TextSelection item = (TextSelection) search4.nextSelection();
+				item.getText();
+				//System.out.println(item.getText());
+				
+				resultcount++;
+			}
+			System.out.println(count);
+			System.out.println(resultcount);
+			
+			Assert.assertEquals(count, resultcount);
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testCut() throws Exception{
+		try {
+			search = new TextNavigation("ReplaceDateTarget", doc);
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				FieldSelection fieldSelection = new FieldSelection(item);
+				fieldSelection.cut();
+			}
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+
+			//validate  
+			TextDocument doc1 = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(SAVE_FILE_REPLACE));
+			
+			TextNavigation searchafter = new TextNavigation("ReplaceDateTarget", doc1);
+			if (searchafter.hasNext()) {
+				Assert.fail();
+			}
+			
+		} catch (Exception e) {
+			Logger.getLogger(FieldSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/ImageSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/ImageSelectionTest.java
new file mode 100644
index 0000000..5842ea4
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/ImageSelectionTest.java
@@ -0,0 +1,164 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.draw.Image;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Test the method of class
+ * org.odftoolkit.simple.common.navigation.ImageSelection
+ */
+public class ImageSelectionTest {
+
+	private static final String TEXT_FILE = "TestTextSelection.odt";
+	TextDocument doc,sourcedoc;
+	TextNavigation search;
+	private Image image2;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			sourcedoc=TextDocument.newTextDocument();
+			Paragraph para = sourcedoc.addParagraph("helloImage");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setName("this image 1");
+			image.setHyperlink(new URI("http://odftoolkit.org"));
+			
+			Paragraph para2 = sourcedoc.addParagraph("helloImage2");
+			image2 = Image.newImage(para2, ResourceUtilities.getURI("testA.jpg"));
+			image2.setName("this image 2");
+			image2.setHyperlink(new URI("http://odftoolkit.org"));
+			
+			
+		} catch (Exception e) {
+			Logger.getLogger(ImageSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+	/**
+	 * Test ReplaceWithImage method of
+	 * org.odftoolkit.simple.common.navigation.ImageSelection replace "SIMPLE" to a Image from Document
+	 */
+	@Test
+	public void testReplaceWithImage() {
+		search = null;
+		//6 Simple, at the middle of original Paragraph, split original Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		int i=0;
+		try {
+			ImageSelection nextImageSelection=null;
+			while (search.hasNext()) {
+				TextSelection item= (TextSelection) search.nextSelection();
+				nextImageSelection=new ImageSelection(item);
+				Paragraph paragraph=sourcedoc.getParagraphByIndex(0, true);
+				TextParagraphElementBase textParaEleBase = paragraph.getOdfElement();
+				NodeList nodeImages = textParaEleBase.getElementsByTagName("draw:image");
+				Node nodeImage = nodeImages.item(0);
+				DrawImageElement im = (DrawImageElement)nodeImage;
+				Image ima = Image.getInstanceof(im);
+				Image image = nextImageSelection.replaceWithImage(ima);
+				Assert.assertNotNull(image);
+				if(image.getName().startsWith("replace")){
+					Assert.assertTrue(true);
+				}else{
+					Assert.fail();
+				}
+				String name="simple"+(i++);
+				image.setName(name);
+				Assert.assertEquals(name,image.getName());
+		}
+			Image image =nextImageSelection.replaceWithImage(image2);
+			image.setName("simpletwice");
+			Assert.assertEquals("simpletwice",image.getName());
+		doc.save(ResourceUtilities.newTestOutputFile("TestImageSelectionImageResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	/**
+	 * Test ReplaceWithImage method of
+	 * org.odftoolkit.simple.common.navigation.ImageSelection replace "SIMPLE" to a Image from Image URI
+	 */
+	@Test
+	public void testReplaceWithImageURI() {
+		search = null;
+		//6 Simple, at the middle of original Paragraph, split original Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		int i=0;
+		try {
+			ImageSelection nextImageSelection=null;
+			while (search.hasNext()) {
+				TextSelection item= (TextSelection) search.nextSelection();
+				nextImageSelection=new ImageSelection(item);
+				URI imageuri = ResourceUtilities.getURI("image_list_item.png");
+				Image image = nextImageSelection.replaceWithImage(imageuri);
+				Assert.assertNotNull(image);
+				if(image.getName().startsWith("replace")){
+					Assert.assertTrue(true);
+				}else{
+					Assert.fail();
+				}
+				String name="simple"+(i++);
+				image.setName(name);
+				Assert.assertEquals(name,image.getName());
+		}
+			URI imageuri =  ResourceUtilities.getURI("testA.jpg");
+			Image image =nextImageSelection.replaceWithImage(imageuri);
+			image.setName("simpletwice");
+			Assert.assertEquals("simpletwice",image.getName());
+		doc.save(ResourceUtilities.newTestOutputFile("TestImageSelectionURIResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/MONPTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/MONPTest.java
new file mode 100644
index 0000000..ad136ff
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/MONPTest.java
@@ -0,0 +1,68 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+/**
+ * Test ReplaceWith method for class org.odftoolkit.simple.common.navigation.TextSelection 
+ */
+public class MONPTest {
+
+	public static final String TEXT_FILE = "navigationtest.odt";
+	public static final String SAVE_FILE = "testsave1.odt";
+
+	/**
+	 * replace all the "mnop" occurance in navigationtest.odt with the word "success"
+	 */
+	@Test
+	public void testReplaceWith() {
+
+		try {
+			TextDocument doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+
+			TextNavigation search = new TextNavigation("mnop", doc);
+
+			int i = 0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				try {
+					item.replaceWith("success");
+					i++;
+					// item.addHref(new URL("http://www.oracle.com"));
+				} catch (InvalidNavigationException e) {
+					Assert.fail(e.getMessage());
+				}
+			}
+			Assert.assertTrue(18 == i);
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE));
+		} catch (Exception e) {
+			Logger.getLogger(MONPTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/ParagraphSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/ParagraphSelectionTest.java
new file mode 100644
index 0000000..ff3569c
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/ParagraphSelectionTest.java
@@ -0,0 +1,140 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+/**
+ * Test the method of class
+ * org.odftoolkit.simple.common.navigation.ParagraphSelection
+ */
+public class ParagraphSelectionTest {
+
+	private static final String TEXT_FILE = "TestTextSelection.odt";
+	TextDocument doc,sourcedoc;
+	TextNavigation search;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			sourcedoc=TextDocument.newTextDocument();
+			sourcedoc.addParagraph("Hello1 from SIMPLE source document!");
+			sourcedoc.addParagraph("Hello2 from source document!");
+			sourcedoc.addParagraph("Hello3 from source document!");
+		} catch (Exception e) {
+			Logger.getLogger(ParagraphSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+	/**
+	 * Test ReplaceWithParagraph method of
+	 * org.odftoolkit.simple.common.navigation.ParagraphSelection replace "SIMPLE","Task1","Container" to different Paragraph
+	 */
+	@Test
+	public void testReplaceWithParagraph() {
+		search = null;
+		//6 Simple, at the middle of original Paragraph, split original Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		int i = 0;
+		while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				ParagraphSelection nextParagraphSelection=new ParagraphSelection(item);
+				Paragraph paragraph=sourcedoc.getParagraphByIndex(0, true);
+				nextParagraphSelection.replaceWithParagraph(paragraph);
+			i++;
+		}
+		search = new TextNavigation("Hello1 from SIMPLE source document!", doc);
+		int j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		
+		//2 Task1, #1 at the start of original Paragraph, #2 replace original Paragraph  
+				search = new TextNavigation("Task1", doc);
+				 i = 0;
+				while (search.hasNext()) {
+						TextSelection item = (TextSelection) search.nextSelection();
+						ParagraphSelection nextParagraphSelection=new ParagraphSelection(item);
+						Paragraph paragraph=sourcedoc.getParagraphByIndex(1, true);
+						nextParagraphSelection.replaceWithParagraph(paragraph);
+					i++;
+				}
+				search = new TextNavigation("Hello2 from source document!", doc);
+				 j = 0;
+				while (search.hasNext()) {
+					search.nextSelection();
+					j++;
+				}
+				Assert.assertTrue(i == j);
+		
+				//1 Container, #1 at the end of original Paragraph, 
+				search = new TextNavigation("Container", doc);
+				 i = 0;
+				while (search.hasNext()) {
+						TextSelection item = (TextSelection) search.nextSelection();
+						ParagraphSelection nextParagraphSelection=new ParagraphSelection(item);
+						Paragraph paragraph=sourcedoc.getParagraphByIndex(2, true);
+						nextParagraphSelection.replaceWithParagraph(paragraph);
+					i++;
+				}
+				search = new TextNavigation("Hello3 from source document!", doc);
+				 j = 0;
+				while (search.hasNext()) {
+					search.nextSelection();
+					j++;
+				}
+				Assert.assertTrue(i == j);
+				
+				
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TestParagraphSelectionResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ParagraphSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TableSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TableSelectionTest.java
new file mode 100644
index 0000000..02eefff
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TableSelectionTest.java
@@ -0,0 +1,190 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+/**
+ * Test the method of class
+ * org.odftoolkit.simple.common.navigation.TableSelection
+ */
+public class TableSelectionTest {
+
+	private static final String TEXT_FILE = "TestTextSelection.odt";
+	TextDocument doc,sourcedoc;
+	TextNavigation search;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			sourcedoc=TextDocument.newTextDocument();
+			
+			String tablename = "Table1";
+			int rowcount = 7, columncount = 5;
+			String[][] data = new String[rowcount][columncount];
+			for (int i = 0; i < rowcount; i++) {
+				for (int j = 0; j < columncount; j++) {
+					data[i][j] = "string" + (i * columncount + j);
+				}
+			}
+
+			String[] rowlabels = new String[rowcount];
+			for (int i = 0; i < rowcount; i++) {
+				rowlabels[i] = "RowHeader" + i;
+			}
+
+			String[] columnlabels = new String[columncount];
+			for (int i = 0; i < columncount; i++) {
+				columnlabels[i] = "ColumnHeader" + i;
+			}
+			Table table = Table.newTable(sourcedoc, rowlabels, columnlabels, data);
+			table.setTableName(tablename);
+			
+			
+			String tablename2 = "Table2";
+			int rowcount2 = 10, columncount2 = 4;
+			double[][] data2 = new double[rowcount2][columncount2];
+			for (int i = 0; i < rowcount2; i++) {
+				for (int j = 0; j < columncount2; j++) {
+					data2[i][j] = Math.random();
+				}
+			}
+
+			String[] rowlabels2 = new String[rowcount2];
+			for (int i = 0; i < rowcount2; i++) {
+				rowlabels2[i] = "RowHeader" + i;
+			}
+
+			String[] columnlabels2 = new String[columncount2];
+			for (int i = 0; i < columncount2; i++) {
+				columnlabels2[i] = "ColumnHeader" + i;
+			}
+
+			Table table2 = Table.newTable(sourcedoc, rowlabels2, columnlabels2, data2);
+			table2.setTableName(tablename2);
+			
+			String tablename3 = "Table3";
+			int rownumber3 = 5;
+			int clmnumber3 = 3;
+
+			Table table1 = Table.newTable(sourcedoc, rownumber3, clmnumber3);
+			table1.setTableName(tablename3);
+			sourcedoc.save(ResourceUtilities.newTestOutputFile("TestTableSelectionSource.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+	/**
+	 * Test replaceWithTable method of
+	 * org.odftoolkit.simple.common.navigation.TableSelection replace replace SIMPLE,Task1,Container to different Table
+	 */
+	@Test
+	public void testReplaceWithTable() {
+		search = null;
+		//6 Simple, at the middle of original Paragraph, split original Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		
+		while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				TableSelection nextTableSelection=new TableSelection(item);
+				Table table=sourcedoc.getTableByName("Table1");
+				Cell cell = table.getCellByPosition(0, 0);
+				cell.setStringValue("SIMPLE");
+				Table newtable = nextTableSelection.replaceWithTable(table);
+				Assert.assertNotNull(newtable);
+				Assert.assertEquals(1, newtable.getHeaderColumnCount());
+				Assert.assertEquals(1, newtable.getHeaderRowCount());
+				Assert.assertEquals(7 + 1, newtable.getRowCount());
+				Assert.assertEquals(5 + 1, newtable.getColumnCount());
+				cell = newtable.getCellByPosition(1, 1);
+				Assert.assertEquals("string", cell.getValueType());
+		}
+	
+		
+		//2 Task1, #1 at the start of original Paragraph, #2 replace original Paragraph  
+				search = new TextNavigation("Task1", doc);
+				 
+				while (search.hasNext()) {
+						TextSelection item = (TextSelection) search.nextSelection();
+						TableSelection nextTableSelection=new TableSelection(item);
+						Table table=sourcedoc.getTableByName("Table2");
+						Table newtable = nextTableSelection.replaceWithTable(table);
+						Cell cell = newtable.getCellByPosition(0, 0);
+						cell.setStringValue("From Source Table2");
+						Assert.assertNotNull(newtable);
+						Assert.assertEquals(1, newtable.getHeaderColumnCount());
+						Assert.assertEquals(1, newtable.getHeaderRowCount());
+						Assert.assertEquals(10 + 1, newtable.getRowCount());
+						Assert.assertEquals(4 + 1, newtable.getColumnCount());
+						
+						cell = newtable.getCellByPosition(1, 1);
+						Assert.assertEquals("float", cell.getValueType());
+				}		
+				//1 RESS%>, #1 at the end of original Paragraph, 
+				search = new TextNavigation("RESS%>", doc);
+
+				while (search.hasNext()) {
+						TextSelection item = (TextSelection) search.nextSelection();
+						TableSelection nextTableSelection=new TableSelection(item);
+						Table table=sourcedoc.getTableByName("Table3");
+						Table newtable = nextTableSelection.replaceWithTable(table);
+						Cell cell = newtable.getCellByPosition(0, 0);
+						cell.setStringValue("From Source Table3");
+						Assert.assertNotNull(newtable);
+						Assert.assertEquals(5, newtable.getRowCount());
+						Assert.assertEquals(3, newtable.getColumnCount());
+
+				}				
+				
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TestTableSelectionResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextDocumentSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextDocumentSelectionTest.java
new file mode 100644
index 0000000..ea51dbb
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextDocumentSelectionTest.java
@@ -0,0 +1,131 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+ */
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+/**
+ * Test the method of class
+ * org.odftoolkit.simple.common.navigation.TextDocumentSelection
+ */
+public class TextDocumentSelectionTest {
+	
+	private static final String TEXT_FILE = "TestTextSelection.odt";
+	TextDocument doc, sourcedoc;
+	TextNavigation search;
+	
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+	
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+	
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			sourcedoc = TextDocument.newTextDocument();
+			sourcedoc.addParagraph("Hello1 from SIMPLE source document!");
+			sourcedoc.addParagraph("Hello2 from source document!");
+			sourcedoc.addParagraph("Hello3 from source document!");
+		} catch (Exception e) {
+			Logger.getLogger(TextDocumentSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@After
+	public void tearDown() {
+	}
+	
+	/**
+	 * Test ReplaceWithTextDocument method of
+	 * org.odftoolkit.simple.common.navigation.TextDocumentSelection replace
+	 * "Featured Text" to TextDocument, all Styles be included.
+	 */
+	@Test
+	public void testReplaceWithTextDocument() {
+		search = null;
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		// Note: you need cache the nextSelection item because after you replace
+		// currtenItem with TextDocument, TextNavigation.nextSelection will
+		// search from the inserted Content,
+		// it will make you into a loop if the Search keyword also can be found
+		// in the inserted Content.
+		int i = 0;
+		search = new TextNavigation("SIMPLE", doc);
+		TextSelection currtenTextSelection, nextTextSelection = null;
+		while (search.hasNext()) {
+			if (nextTextSelection != null) {
+				currtenTextSelection = nextTextSelection;
+			} else {
+				currtenTextSelection = (TextSelection) search.nextSelection();
+			}
+			nextTextSelection = (TextSelection) search.nextSelection();
+			if (currtenTextSelection != null) {
+				TextDocumentSelection nextParagraphSelection = new TextDocumentSelection(currtenTextSelection);
+				try {
+					nextParagraphSelection.replaceWithTextDocument(sourcedoc);
+					i++;
+				} catch (Exception e) {
+					e.printStackTrace();
+					Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+				}
+			}
+		}
+		if (nextTextSelection != null) {
+			TextDocumentSelection nextParagraphSelection = new TextDocumentSelection(nextTextSelection);
+			try {
+				nextParagraphSelection.replaceWithTextDocument(sourcedoc);
+				i++;
+			} catch (Exception e) {
+				e.printStackTrace();
+				Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+			}
+		}
+		
+		search = new TextNavigation("Hello1 from SIMPLE source document!", doc);
+		int j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TestTextDocumentSelectionResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextDocumentSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextNavigationTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextNavigationTest.java
new file mode 100644
index 0000000..dc2134e
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextNavigationTest.java
@@ -0,0 +1,242 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextPElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.presentation.Slide;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+/**
+ * Test the method of class org.odftoolkit.simple.common.navigation.TextNavigation 
+ */
+public class TextNavigationTest {
+
+	private static final Logger LOG = Logger.getLogger(TextNavigationTest.class.getName());
+	private static final String TEXT_FILE = "TestTextSelection.odt";
+	private static final String NAVIGATION_ODFELEMENT_FILE = "NavigationInOdfElementTest.odp";
+	
+	TextDocument doc;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		} catch (Exception e) {
+			Logger.getLogger(TextNavigationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test getCurrentItem method of org.odftoolkit.simple.common.navigation.TextNavigation
+	 */
+	@Test
+	public void testGotoNext() {
+		TextNavigation search = new TextNavigation("delete", doc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			LOG.info(item.toString());
+		}
+
+		try {
+			search = new TextNavigation("delete", doc.getContentRoot());
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				LOG.info(item.toString());
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TextNavigationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test getNextMatchElement method of org.odftoolkit.simple.common.navigation.TextNavigation
+	 */
+	@Test
+	public void testGetNextMatchElement() {
+		try {
+			// match values by specifying a document to TextNavigation
+			TextNavigation search = new TextNavigation("delete", doc);
+			matchLines(search, doc.getContentRoot());
+			
+			// match value by specifying a Node to the TextNavigation
+			search = new TextNavigation("delete", doc.getContentRoot());
+			matchLines(search, doc.getContentRoot());
+		} catch (Exception e) {
+			Logger.getLogger(TextNavigationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	/**
+	 * Matches the lines on the given search and rootNode
+	 * @param search
+	 * @param rootNode
+	 */
+	private void matchLines(TextNavigation search, Node rootNode) {
+		//NodeList list = doc.getContentDom().getElementsByTagName("text:p");
+		OdfElement match = (OdfElement) search.getNextMatchElement(rootNode);
+		Assert.assertNotNull(match);
+		Assert.assertEquals("Task2.delete next paragraph", TextExtractor.getText(match));
+
+		match = (OdfElement) search.getNextMatchElement(match);
+		Assert.assertNotNull(match);
+		Assert.assertEquals("Hello [delete], I will be delete", TextExtractor.getText(match));
+
+		match = (OdfElement) search.getNextMatchElement(match);
+		Assert.assertNotNull(match);
+		Assert.assertEquals("indeed   delete", TextExtractor.getText(match));
+
+		match = (OdfElement) search.getNextMatchElement(match);
+		Assert.assertNotNull(match);
+		Assert.assertEquals("different span in one single word delete indeed", TextExtractor.getText(match));
+
+		match = (OdfElement) search.getNextMatchElement(match);
+		Assert.assertNotNull(match);
+		Assert.assertEquals("Hello delete this word delete true delete  indeed", TextExtractor.getText(match));
+		
+		match = (OdfElement) search.getNextMatchElement(match);
+		Assert.assertNotNull(match);
+		Assert.assertEquals("something to delete in a frame!", TextExtractor.getText(match));
+	}
+
+	@Test
+	public void testNavigationInOdfElement() {
+		try {
+			PresentationDocument document = PresentationDocument.loadDocument(ResourceUtilities
+					.getAbsolutePath(NAVIGATION_ODFELEMENT_FILE));
+			TextNavigation navigation = new TextNavigation("RANDOM COLORED TEXTBOX", document);
+			int count = 0;
+			while (navigation.hasNext()) {
+				navigation.nextSelection();
+				count++;
+			}
+			Assert.assertEquals(3, count);
+
+			Slide slide = document.getSlideByIndex(0);
+			navigation = new TextNavigation("RANDOM COLORED TEXTBOX", slide.getOdfElement());
+			count = 0;
+			while (navigation.hasNext()) {
+				navigation.nextSelection();
+				count++;
+			}
+			Assert.assertEquals(1, count);
+			document.close();
+		} catch (Exception e) {
+			Logger.getLogger(TextNavigationTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+
+	@Test
+	public void testCellReplacementWithParagraph() throws Exception {
+		replace(new ReplacementAction() {
+
+			public void replace(TextSelection selection, String value) throws Exception {
+				TextParagraphElementBase paragraphElement = new TextPElement(doc.getContentDom());
+				Paragraph para = Paragraph.getInstanceof(paragraphElement);
+				para.setTextContent(value);
+				selection.replaceWith(para);
+			}
+		});
+		
+	}
+	
+
+	@Test
+	public void testCellReplacementWithString() throws Exception {
+		replace(new ReplacementAction() {
+
+			public void replace(TextSelection selection, String value) throws Exception {
+				selection.replaceWith(value);
+			}
+		});
+		
+	}
+	
+
+	private void replace(ReplacementAction replacementAction) throws Exception {
+		TextDocument docToReplaceIn = TextDocument.newTextDocument();
+		Table newTable = docToReplaceIn.getTableBuilder().newTable(2, 2);
+		Cell cell = newTable.getCellByPosition(0, 0);
+		cell.addParagraph("<<ONE>>");
+		cell.addParagraph("<<TWO>>");
+
+		Map<String, String> replacements = new TreeMap<String, String>();
+		replacements.put("<<ONE>>", "1");
+		replacements.put("<<TWO>>", "2");
+
+		// sanity check
+		Assert.assertEquals("<<ONE>>\n<<TWO>>", cell.getDisplayText());
+		Assert.assertEquals("<<ONE>>\n<<TWO>>", cell.getStringValue());
+		
+		for (String toReplace : replacements.keySet()) {
+			TextNavigation navigation = new TextNavigation(toReplace, docToReplaceIn);
+			while (navigation.hasNext()) {
+				TextSelection selection = (TextSelection) navigation.nextSelection();
+				Assert.assertEquals(toReplace, selection.getElement().getTextContent());
+				replacementAction.replace(selection, replacements.get(toReplace));
+			}
+		}
+
+		Assert.assertEquals("1\n2", cell.getDisplayText());
+		Assert.assertEquals("1\n2", cell.getStringValue());
+	}
+	
+	private static interface ReplacementAction {
+		void replace(TextSelection selection, String value) throws Exception;
+	}	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextSelectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextSelectionTest.java
new file mode 100644
index 0000000..a641ab6
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextSelectionTest.java
@@ -0,0 +1,1118 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.OdfStyleBase;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.text.TextAElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.dom.element.text.TextSpanElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.common.field.Field;
+import org.odftoolkit.simple.common.field.Fields;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.navigation.TextNavigation;
+import org.odftoolkit.simple.common.navigation.TextSelection;
+import org.odftoolkit.simple.common.navigation.TextSelectionTest;
+import org.odftoolkit.simple.draw.Image;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.text.Span;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Test the method of class
+ * org.odftoolkit.simple.common.navigation.TextSelection
+ */
+public class TextSelectionTest {
+
+	private static final String TEXT_FILE = "TestTextSelection.odt";
+	private static final String TEST_FILE = "TestReplaceWithBasicCases.odt";
+	private static final String TEXT_COMMENT_FILE = "TestTextSelectionComment.odt";
+	private static final String SAVE_FILE_DELETE = "TextSelectionResultDelete.odt";
+	private static final String SAVE_FILE_STYLE = "TextSelectionResultStyle.odt";
+	private static final String SAVE_FILE_HREF = "TextSelectionResultHref.odt";
+	private static final String SAVE_FILE_COMMENT = "TextSelectionResultComment.odt";
+	private static final String SAVE_FILE_REPLACE = "TextSelectionResultReplace.odt";
+	private static final String SAVE_FILE_COPYTO = "TextSelectionResultCopyTo.odt";
+	private static final String SAVE_FILE_COPYTO1 = "TextSelectionResultCopyTo1.odt";
+	private static final String SAVE_FILE_DELETE_PATTERN = "TextSelectionResultPatternDelete.odt";
+	TextDocument doc;
+	OdfFileDom contentDOM;
+	TextNavigation search;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			contentDOM = doc.getContentDom();
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	@Test
+	public void testHasNext() {
+		search = null;
+		search = new TextNavigation("range", doc);
+
+		Assert.assertTrue(search.hasNext());
+		Assert.assertTrue(search.hasNext());
+		Assert.assertTrue(search.hasNext());
+		Assert.assertTrue(search.hasNext());
+		Assert.assertTrue(search.hasNext());
+	}
+
+	
+	/**
+	 * Test pasteAtFrontOf method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection copy the first
+	 * 'change' word in the front of all the 'delete' word
+	 */
+	@Test
+	public void testPasteAtFrontOf() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		TextSelection sel = null;
+
+		TextNavigation search1 = new TextNavigation("change", doc);
+		sel = (TextSelection) search1.nextSelection();
+
+		int i = 0;
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			i++;
+			try {
+				sel.pasteAtFrontOf(item);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		int j = 0;
+		search = new TextNavigation("changedelete", doc);
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_COPYTO));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * Test pasteAtEndOf method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection copy the first
+	 * 'change' word at the end of all the 'delete' word
+	 */
+	@Test
+	public void testPasteAtEndOf() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		TextSelection sel = null;
+
+		TextNavigation search1 = new TextNavigation("change", doc);
+		sel = (TextSelection) search1.nextSelection();
+
+		int i = 0;
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			i++;
+			try {
+				sel.pasteAtEndOf(item);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+		int j = 0;
+		search = new TextNavigation("deletechange", doc);
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_COPYTO1));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * Test applyStyle method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection append "T4" style
+	 * for all the 'delete' word, 'T4' in the original document is the 'bold'
+	 * style
+	 */
+	@Test
+	public void testApplyStyle() {
+		search = null;
+		search = new TextNavigation("delete", doc);
+		OdfOfficeAutomaticStyles autoStyles = null;
+		try {
+			autoStyles = doc.getContentDom().getAutomaticStyles();
+		} catch (Exception e1) {
+			Assert.fail("Failed with " + e1.getClass().getName() + ": '" + e1.getMessage() + "'");
+		}
+		// T4 is the bold style for text
+		OdfStyleBase style = autoStyles.getStyle("T4", OdfStyleFamily.Text);
+		Assert.assertNotNull(style);
+
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			try {
+				item.applyStyle(style);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_STYLE));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test replaceWith method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection replace all the
+	 * 'SIMPLE' with 'Odf Toolkit'
+	 */
+	@Test
+	public void testReplacewith() {
+		search = null;
+		search = new TextNavigation("SIMPLE", doc);
+
+		TextSelection nextSelect = null;
+		TextNavigation nextsearch = new TextNavigation("next", doc);
+		nextSelect = (TextSelection) nextsearch.nextSelection();
+
+		// replace all the "SIMPLE" to "Odf Toolkit"
+		// except the sentence
+		// "Task5.Change the SIMPLE to Odf Toolkit, and bold them."
+		OdfStyle style = new OdfStyle(contentDOM);
+		style.setProperty(StyleTextPropertiesElement.FontWeight, "bold");
+		style.setStyleFamilyAttribute("text");
+		int i = 0;
+		while (search.hasNext()) {
+			if (i > 0) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				try {
+					item.replaceWith("Odf Toolkit");
+					item.applyStyle(style);
+				} catch (InvalidNavigationException e) {
+					Assert.fail(e.getMessage());
+				}
+			}
+			i++;
+		}
+
+		search = new TextNavigation("Odf Toolkit", doc);
+		int j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			nextSelect.replaceWith("bbb");
+		} catch (InvalidNavigationException e1) {
+			Assert.fail(e1.getMessage());
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_REPLACE));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	/**
+	 * Test addComment method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection add comment
+	 * "simpleODF should be Simple ODF" for all the 'simpleODF' word
+	 */
+	@Test
+	public void testAddComment() {
+		try {
+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_COMMENT_FILE));
+			search = new TextNavigation("simpleODF", textDoc);
+			int i=0;
+			while (search.hasNext()) {
+				TextSelection item = (TextSelection) search.nextSelection();
+				item.addComment("simpleODF should be replaced by Simple ODF.", "devin-"+i);
+				i++;
+			}
+			// there are 7 simpleODF in this test document.
+			Assert.assertEquals(7, i);
+			textDoc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_COMMENT));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	/**
+	 * Test addHref method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection add href
+	 * "http://www.ibm.com" for all the 'delete' word
+	 */
+	@Test
+	public void testAddHref() {
+		search = null;
+		search = new TextNavigation("^delete", doc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			try {
+				item.addHref(new URL("http://www.ibm.com"));
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			} catch (MalformedURLException e) {
+				Assert.fail(e.getMessage());
+				Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_HREF));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+
+	/**
+	 * Test search pattern of
+	 * org.odftoolkit.simple.common.navigation.TextSelection search a snippet of
+	 * text match the pattern "<%([^>]*)%>", and extract the content between
+	 * "<%" and "%>"
+	 */
+	@Test
+	public void testCutPattern() {
+		search = new TextNavigation("<%([^>]*)%>", doc);
+
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			try {
+				String text = item.getText();
+				text = text.substring(2, text.length() - 2);
+				item.replaceWith(text);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_DELETE_PATTERN));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test TextSelection container element, all of them must be minimum text:p
+	 * or text:h. It means container element can't has child element has the
+	 * same text content.
+	 */
+	@Test
+	public void testTextSelectionContainerElement() {
+		search = new TextNavigation("TextSelectionContainer", doc);
+		if (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			OdfElement container = item.getContainerElement();
+			Node childNode = container.getFirstChild();
+			while (childNode != null) {
+				String containerText = childNode.getTextContent();
+				Assert.assertFalse(container.getTextContent().equals(containerText));
+				childNode = childNode.getNextSibling();
+			}
+		} else {
+			Assert.fail("Navigation search nothing.");
+		}
+		// test selected table cell content in draw:frame.
+		search = new TextNavigation("Task", doc);
+		if (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			OdfElement container = item.getContainerElement();
+			Node childNode = container.getFirstChild();
+			while (childNode != null) {
+				String containerText = childNode.getTextContent();
+				Assert.assertFalse(container.getTextContent().equals(containerText));
+				childNode = childNode.getNextSibling();
+			}
+		} else {
+			Assert.fail("Navigation search nothing.");
+		}
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_DELETE_PATTERN));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	@Test
+	public void testGetContainerElement() throws Exception {
+		search = new TextNavigation("TextSelectionContainer", doc);
+		if (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			URL url = new URL("http://www.IBM.com");
+			item.addHref(url);
+			
+			//save
+			//doc.save(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+			
+			//validate
+			OdfElement parentElement = item.getContainerElement();
+			Node node = parentElement.getFirstChild().getFirstChild().getNextSibling();
+			TextAElement textAele = (TextAElement)node;
+			System.out.println(textAele.getXlinkTypeAttribute());
+			System.out.println(textAele.getXlinkHrefAttribute());
+			Assert.assertEquals("simple", textAele.getXlinkTypeAttribute());
+			Assert.assertEquals("http://www.IBM.com", textAele.getXlinkHrefAttribute());
+			
+		} else {
+			Assert.fail("Navigation search nothing.");
+		}
+		
+	}
+	
+	/**
+	 * Test replaceWith method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection
+	 */
+	@Test
+	public void testReplacewithTable() throws Exception {
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		TextDocument sourcedoc = TextDocument.newTextDocument();
+		String tablename = "Table1";
+		int rowcount = 7, columncount = 5;
+		String[][] data = new String[rowcount][columncount];
+		for (int i = 0; i < rowcount; i++) {
+			for (int j = 0; j < columncount; j++) {
+				data[i][j] = "string" + (i * columncount + j);
+			}
+		}
+		
+		String[] rowlabels = new String[rowcount];
+		for (int i = 0; i < rowcount; i++) {
+			rowlabels[i] = "RowHeader" + i;
+		}
+		
+		String[] columnlabels = new String[columncount];
+		for (int i = 0; i < columncount; i++) {
+			columnlabels[i] = "ColumnHeader" + i;
+		}
+		Table table = Table.newTable(sourcedoc, rowlabels, columnlabels, data);
+		table.setTableName(tablename);
+		
+		String tablename2 = "Table2";
+		int rowcount2 = 10, columncount2 = 4;
+		double[][] data2 = new double[rowcount2][columncount2];
+		for (int i = 0; i < rowcount2; i++) {
+			for (int j = 0; j < columncount2; j++) {
+				data2[i][j] = Math.random();
+			}
+		}
+		
+		String[] rowlabels2 = new String[rowcount2];
+		for (int i = 0; i < rowcount2; i++) {
+			rowlabels2[i] = "RowHeader" + i;
+		}
+		
+		String[] columnlabels2 = new String[columncount2];
+		for (int i = 0; i < columncount2; i++) {
+			columnlabels2[i] = "ColumnHeader" + i;
+		}
+		
+		Table table2 = Table.newTable(sourcedoc, rowlabels2, columnlabels2, data2);
+		table2.setTableName(tablename2);
+		String tablename3 = "Table3";
+		int rownumber3 = 5;
+		int clmnumber3 = 3;
+		Table table1 = Table.newTable(sourcedoc, rownumber3, clmnumber3);
+		table1.setTableName(tablename3);
+		search = null;
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			table = sourcedoc.getTableByName("Table1");
+			Cell cell = table.getCellByPosition(0, 0);
+			cell.setStringValue("SIMPLE");
+			Table newtable = item.replaceWith(table);
+			Assert.assertNotNull(newtable);
+			Assert.assertEquals(1, newtable.getHeaderColumnCount());
+			Assert.assertEquals(1, newtable.getHeaderRowCount());
+			Assert.assertEquals(7 + 1, newtable.getRowCount());
+			Assert.assertEquals(5 + 1, newtable.getColumnCount());
+			cell = newtable.getCellByPosition(1, 1);
+			Assert.assertEquals("string", cell.getValueType());
+		}
+		// 2 Task1, #1 at the start of original Paragraph, #2 replace original
+		// Paragraph
+		search = new TextNavigation("Task1", doc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			table = sourcedoc.getTableByName("Table2");
+			Table newtable = item.replaceWith(table);
+			Cell cell = newtable.getCellByPosition(0, 0);
+			cell.setStringValue("From Source Table2");
+			Assert.assertNotNull(newtable);
+			Assert.assertEquals(1, newtable.getHeaderColumnCount());
+			Assert.assertEquals(1, newtable.getHeaderRowCount());
+			Assert.assertEquals(10 + 1, newtable.getRowCount());
+			Assert.assertEquals(4 + 1, newtable.getColumnCount());
+			
+			cell = newtable.getCellByPosition(1, 1);
+			Assert.assertEquals("float", cell.getValueType());
+		}
+		// 1 RESS%>, #1 at the end of original Paragraph,
+		search = new TextNavigation("RESS%>", doc);
+		
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			table = sourcedoc.getTableByName("Table3");
+			Table newtable = item.replaceWith(table);
+			Cell cell = newtable.getCellByPosition(0, 0);
+			cell.setStringValue("From Source Table3");
+			Assert.assertNotNull(newtable);
+			Assert.assertEquals(5, newtable.getRowCount());
+			Assert.assertEquals(3, newtable.getColumnCount());
+		}
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TextSelectionReplacewithTableResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities
+				.getAbsolutePath(TEST_FILE));
+		search = new TextNavigation("<<target>>", doc);
+		int i = 0;
+		try {
+			while (search.hasNext()) {
+				i++;
+				TextSelection item = (TextSelection) search.nextSelection();
+				table = sourcedoc.getTableByName("Table1");
+				Table newtable = item.replaceWith(table);
+				Assert.assertNotNull(newtable);
+				Assert.assertEquals(1, newtable.getHeaderColumnCount());
+				Assert.assertEquals(1, newtable.getHeaderRowCount());
+				Assert.assertEquals(7 + 1, newtable.getRowCount());
+				Assert.assertEquals(5 + 1, newtable.getColumnCount());
+				Cell cell = newtable.getCellByPosition(1, 1);
+				Assert.assertEquals("string", cell.getValueType());
+			}
+			doc.save(ResourceUtilities
+					.newTestOutputFile("TextSelectionReplacewithTableResult-BasicCases.odt"));
+			verifyReplaceWithTableByBasicCases("TextSelectionReplacewithTableResult-BasicCases.odt");
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+	
+	/**
+	 * Test replaceWith method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection
+	 */
+	@Test
+	public void testReplacewithImage() throws Exception {
+		// create source image
+		TextDocument sourcedoc = TextDocument.newTextDocument();
+		Paragraph para = sourcedoc.addParagraph("helloImage");
+		Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+		image.setName("this image 1");
+		image.setHyperlink(new URI("http://odftoolkit.org"));
+		Paragraph para2 = sourcedoc.addParagraph("helloImage2");
+		Image image2 = Image.newImage(para2, ResourceUtilities.getURI("testA.jpg"));
+		image2.setName("this image 2");
+		image2.setHyperlink(new URI("http://odftoolkit.org"));
+		search = null;
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		search = new TextNavigation("SIMPLE", doc);
+		int i = 0;
+		TextSelection item = null;
+		while (search.hasNext()) {
+			item = (TextSelection) search.nextSelection();
+			Paragraph paragraph = sourcedoc.getParagraphByIndex(0, true);
+			TextParagraphElementBase textParaEleBase = paragraph.getOdfElement();
+			NodeList nodeImages = textParaEleBase.getElementsByTagName("draw:image");
+			Node nodeImage = nodeImages.item(0);
+			DrawImageElement im = (DrawImageElement) nodeImage;
+			Image ima = Image.getInstanceof(im);
+			image = item.replaceWith(ima);
+			Assert.assertNotNull(image);
+			if (image.getName().startsWith("replace")) {
+				Assert.assertTrue(true);
+			} else {
+				Assert.fail();
+			}
+			String name = "simple" + (i++);
+			image.setName(name);
+			Assert.assertEquals(name, image.getName());
+		}
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TextSelectionReplacewithImageResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		i = 0;
+		try {
+			while (search.hasNext()) {
+				item = (TextSelection) search.nextSelection();
+				URI imageuri = ResourceUtilities.getURI("image_list_item.png");
+				image = item.replaceWith(imageuri);
+				Assert.assertNotNull(image);
+				if (image.getName().startsWith("replace")) {
+					Assert.assertTrue(true);
+				} else {
+					Assert.fail();
+				}
+				String name = "simple" + (i++);
+				image.setName(name);
+				Assert.assertEquals(name, image.getName());
+			}
+			doc.save(ResourceUtilities.newTestOutputFile("TextSelectionReplacewithImageURIResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities
+				.getAbsolutePath(TEST_FILE));
+		search = new TextNavigation("<<target>>", doc);
+		i = 0;
+		try {
+			while (search.hasNext()) {
+				i++;
+				item = (TextSelection) search.nextSelection();
+				URI imageuri = ResourceUtilities.getURI("image_list_item.png");
+				image = item.replaceWith(imageuri);
+				Assert.assertNotNull(image);
+				if (image.getName().startsWith("replace")) {
+					Assert.assertTrue(true);
+				} else {
+					Assert.fail();
+				}
+			}
+			Assert.assertEquals(11, i);
+			doc.save(ResourceUtilities
+					.newTestOutputFile("TextSelectionReplacewithImageResult-URI-BasicCases.odt"));
+			verifyReplaceWithImageByBasicCases("TextSelectionReplacewithImageResult-URI-BasicCases.odt");
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities
+				.getAbsolutePath(TEST_FILE));
+		search = new TextNavigation("<<target>>", doc);
+		i = 0;
+		try {
+			while (search.hasNext()) {
+				i++;
+				item = (TextSelection) search.nextSelection();
+				image = item.replaceWith(image);
+				Assert.assertNotNull(image);
+				if (image.getName().startsWith("replace")) {
+					Assert.assertTrue(true);
+				} else {
+					Assert.fail();
+				}
+			}
+			Assert.assertEquals(11, i);
+			doc.save(ResourceUtilities
+					.newTestOutputFile("TextSelectionReplacewithImageResult-BasicCases.odt"));
+			verifyReplaceWithImageByBasicCases("TextSelectionReplacewithImageResult-BasicCases.odt");
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+	
+	/**
+	 * Test replaceWith method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection
+	 */
+	@Test
+	public void testReplacewithParagraph() throws Exception {
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		TextDocument sourcedoc = TextDocument.newTextDocument();
+		sourcedoc.addParagraph("Hello1 from SIMPLE source document!");
+		sourcedoc.addParagraph("Hello2 from source document!");
+		sourcedoc.addParagraph("Hello3 from source document!");
+		
+		search = null;
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		int i = 0;
+		TextSelection item = null;
+		while (search.hasNext()) {
+			item = (TextSelection) search.nextSelection();
+			Paragraph paragraph = sourcedoc.getParagraphByIndex(0, true);
+			item.replaceWith(paragraph);
+			i++;
+		}
+		search = new TextNavigation("Hello1 from SIMPLE source document!", doc);
+		int j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		
+		// 2 Task1, #1 at the start of original Paragraph, #2 replace original
+		// Paragraph
+		search = new TextNavigation("Task1", doc);
+		i = 0;
+		while (search.hasNext()) {
+			item = (TextSelection) search.nextSelection();
+			
+			Paragraph paragraph = sourcedoc.getParagraphByIndex(1, true);
+			item.replaceWith(paragraph);
+			i++;
+		}
+		search = new TextNavigation("Hello2 from source document!", doc);
+		j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		
+		// 1 Container, #1 at the end of original Paragraph,
+		search = new TextNavigation("Container", doc);
+		i = 0;
+		while (search.hasNext()) {
+			item = (TextSelection) search.nextSelection();
+			Paragraph paragraph = sourcedoc.getParagraphByIndex(2, true);
+			item.replaceWith(paragraph);
+			i++;
+		}
+		search = new TextNavigation("Hello3 from source document!", doc);
+		j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TextSelectionReplacewithParagraphResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities
+				.getAbsolutePath(TEST_FILE));
+		search = new TextNavigation("<<target>>", doc);
+		i = 0;
+		try {
+			while (search.hasNext()) {
+				i++;
+				item = (TextSelection) search.nextSelection();
+				Paragraph paragraph = sourcedoc.getParagraphByIndex(1, true);
+				paragraph = item.replaceWith(paragraph);
+				Assert.assertNotNull(paragraph);
+				Assert.assertEquals(
+						TextExtractor.getText(paragraph.getOdfElement()),
+						"Hello2 from source document!");
+			}
+			doc.save(ResourceUtilities
+					.newTestOutputFile("TextSelectionReplacewithPararaphResult-BasicCases.odt"));
+			verifyReplaceWithParagraphByBasicCases("TextSelectionReplacewithPararaphResult-BasicCases.odt");
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+	/**
+	 * Test replaceWith method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection
+	 */
+	@Test
+	public void testReplacewithField() throws Exception {
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		TextDocument sourcedoc = TextDocument.newTextDocument();
+		sourcedoc.addParagraph("Hello1 from SIMPLE source document!");
+		sourcedoc.addParagraph("Hello2 from source document!");
+		sourcedoc.addParagraph("Hello3 from source document!");
+		VariableField variableField = Fields.createUserVariableField(sourcedoc, "test_simple_variable","testReplacewithField");
+		Assert.assertNotNull(variableField);
+		TextSpanElement newTextSpanElement = sourcedoc.newParagraph("Update Variable Field:").newTextSpanElement();
+		variableField.updateField("simple variable content", newTextSpanElement);
+		newTextSpanElement = sourcedoc.newParagraph("Show Variable Field:").newTextSpanElement();
+		variableField.displayField(newTextSpanElement);
+		Field orgField = sourcedoc.getVariableFieldByName("test_simple_variable");
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		search = new TextNavigation("SIMPLE", doc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			try {
+				Field newField = item.replaceWith(orgField);
+			} catch (InvalidNavigationException e) {
+				e.printStackTrace();
+			}
+		}
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TextSelectionReplacewithFieldResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	/**
+	 * Test replaceWith method of
+	 * org.odftoolkit.simple.common.navigation.TextSelection
+	 */
+	@Test
+	public void testReplacewithTextDocument() throws Exception {
+		doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		TextDocument sourcedoc = TextDocument.newTextDocument();
+		sourcedoc.addParagraph("Hello1 from SIMPLE source document!");
+		sourcedoc.addParagraph("Hello2 from source document!");
+		sourcedoc.addParagraph("Hello3 from source document!");
+		search = null;
+		// 6 Simple, at the middle of original Paragraph, split original
+		// Paragraph, insert before the second Paragraph.
+		// Note: you need cache the nextSelection item because after you replace
+		// currtenItem with TextDocument, TextNavigation.nextSelection will
+		// search from the inserted Content,
+		// it will make you into a loop if the Search keyword also can be found
+		// in the inserted Content.
+		int i = 0;
+		search = new TextNavigation("SIMPLE", doc);
+		TextSelection currtenTextSelection, nextTextSelection = null;
+		while (search.hasNext()) {
+			if (nextTextSelection != null) {
+				currtenTextSelection = nextTextSelection;
+			} else {
+				currtenTextSelection = (TextSelection) search.nextSelection();
+			}
+			nextTextSelection = (TextSelection) search.nextSelection();
+			if (currtenTextSelection != null) {
+				
+				try {
+					currtenTextSelection.replaceWith(sourcedoc);
+					i++;
+				} catch (Exception e) {
+					e.printStackTrace();
+					Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+				}
+			}
+		}
+		if (nextTextSelection != null) {
+			try {
+				nextTextSelection.replaceWith(sourcedoc);
+				i++;
+			} catch (Exception e) {
+				e.printStackTrace();
+				Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+			}
+		}
+		search = new TextNavigation("Hello1 from SIMPLE source document!", doc);
+		int j = 0;
+		while (search.hasNext()) {
+			search.nextSelection();
+			j++;
+		}
+		Assert.assertTrue(i == j);
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile("TextSelectionReplacewithTextDocumentResult.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	private void verifyReplaceWithTableByBasicCases(String fileName) {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities
+					.getAbsolutePath(fileName));
+			search = new TextNavigation("#1", doc);
+			while (search.hasNext()) {
+				OdfElement description = search.nextSelection().getElement();
+				OdfElement replacement = (OdfElement) description
+						.getNextSibling();
+				Assert.assertNotNull(replacement);
+				Assert.assertTrue(replacement instanceof TableTableElement);
+			}
+			search = new TextNavigation("#2", doc);
+			while (search.hasNext()) {
+				OdfElement description = search.nextSelection().getElement();
+				String contents;
+				do {
+					OdfElement replacement = (OdfElement) description
+							.getNextSibling();
+					Assert.assertNotNull(replacement);
+					contents = TextExtractor.getText(replacement);
+					if (contents.contains("<<target>>")) {
+						Assert.fail();
+					}
+				} while (contents.startsWith("#"));
+			}
+			search = new TextNavigation("#3", doc);
+			OdfElement description = search.nextSelection().getElement();
+			Node replacement = description.getNextSibling();
+			Assert.assertTrue(replacement instanceof TableTableElement);
+			Table table = Table.getInstance((TableTableElement) replacement);
+			String breakBefore = table.getStyleHandler()
+					.getTablePropertiesForRead().getBreakBefore();
+			Assert.assertNotNull(breakBefore);
+			description = search.nextSelection().getElement();
+			replacement = description.getNextSibling();
+			Assert.assertEquals("prefix", TextExtractor
+					.getText((TextParagraphElementBase) replacement));
+			Paragraph para = Paragraph
+					.getInstanceof((TextParagraphElementBase) replacement);
+			breakBefore = para.getStyleHandler()
+					.getParagraphPropertiesForRead().getBreakBefore();
+			Assert.assertNotNull(breakBefore);
+			replacement = replacement.getNextSibling();
+			Assert.assertTrue(replacement instanceof TableTableElement);
+			table = Table.getInstance((TableTableElement) replacement);
+			breakBefore = table.getStyleHandler().getTablePropertiesForRead()
+					.getBreakBefore();
+			Assert.assertNull(breakBefore);
+			replacement = replacement.getNextSibling();
+			Assert.assertEquals("suffix", TextExtractor
+					.getText((TextParagraphElementBase) replacement));
+			para = Paragraph
+					.getInstanceof((TextParagraphElementBase) replacement);
+			breakBefore = para.getStyleHandler()
+					.getParagraphPropertiesForRead().getBreakBefore();
+			Assert.assertNull(breakBefore);
+			description = search.nextSelection().getElement();
+			replacement = description.getNextSibling();
+			Assert.assertTrue(replacement instanceof TableTableElement);
+			table = Table.getInstance((TableTableElement) replacement);
+			String masterStyle = table.getStyleHandler()
+					.getStyleElementForRead()
+					.getAttribute("style:master-page-name");
+			Assert.assertNotNull(masterStyle);
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+	private void verifyReplaceWithImageByBasicCases(String fileName) {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities
+					.getAbsolutePath(fileName));
+			search = new TextNavigation("#2", doc);
+			while (search.hasNext()) {
+				OdfElement description = search.nextSelection().getElement();
+				Node replacement = description.getNextSibling();
+				NodeList children = replacement.getChildNodes();
+				Assert.assertNotNull(children);
+				int count = 0;
+				for (int m = 0; m < children.getLength(); m++) {
+					if (children.item(m) instanceof DrawFrameElement) {
+						count++;
+					}
+				}
+				Assert.assertEquals(3, count);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+	private void verifyReplaceWithParagraphByBasicCases(String fileName) {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities
+					.getAbsolutePath(fileName));
+			search = new TextNavigation("#1", doc);
+			while (search.hasNext()) {
+				OdfElement description = search.nextSelection().getElement();
+				OdfElement replacement = (OdfElement) description
+						.getNextSibling();
+				Assert.assertNotNull(replacement);
+				Assert.assertEquals("Hello2 from source document!",
+						TextExtractor.getText(replacement));
+			}
+			search = new TextNavigation("#2", doc);
+			while (search.hasNext()) {
+				OdfElement description = search.nextSelection().getElement();
+				String contents;
+				do {
+					OdfElement replacement = (OdfElement) description
+							.getNextSibling();
+					Assert.assertNotNull(replacement);
+					contents = TextExtractor.getText(replacement);
+					if (contents.contains("<<target>>")) {
+						Assert.fail();
+					}
+				} while (contents.startsWith("#"));
+			}
+			search = new TextNavigation("#3", doc);
+			OdfElement description = search.nextSelection().getElement();
+			TextParagraphElementBase replacement = (TextParagraphElementBase) description
+					.getNextSibling();
+			Assert.assertEquals("Hello2 from source document!",
+					TextExtractor.getText(replacement));
+			Paragraph para = Paragraph.getInstanceof(replacement);
+			String breakBefore = para.getStyleHandler()
+					.getParagraphPropertiesForRead().getBreakBefore();
+			Assert.assertNotNull(breakBefore);
+			description = search.nextSelection().getElement();
+			replacement = (TextParagraphElementBase) description
+					.getNextSibling();
+			Assert.assertEquals("prefix", TextExtractor.getText(replacement));
+			para = Paragraph.getInstanceof(replacement);
+			breakBefore = para.getStyleHandler()
+					.getParagraphPropertiesForRead().getBreakBefore();
+			Assert.assertNotNull(breakBefore);
+			replacement = (TextParagraphElementBase) replacement
+					.getNextSibling();
+			Assert.assertEquals("Hello2 from source document!",
+					TextExtractor.getText(replacement));
+			para = Paragraph.getInstanceof(replacement);
+			breakBefore = para.getStyleHandler()
+					.getParagraphPropertiesForRead().getBreakBefore();
+			Assert.assertNull(breakBefore);
+			replacement = (TextParagraphElementBase) replacement
+					.getNextSibling();
+			Assert.assertEquals("suffix", TextExtractor.getText(replacement));
+			para = Paragraph.getInstanceof(replacement);
+			breakBefore = para.getStyleHandler()
+					.getParagraphPropertiesForRead().getBreakBefore();
+			Assert.assertNull(breakBefore);
+			description = search.nextSelection().getElement();
+			replacement = (TextParagraphElementBase) description
+					.getNextSibling();
+			Assert.assertEquals("Hello2 from source document!",
+					TextExtractor.getText(replacement));
+			para = Paragraph.getInstanceof(replacement);
+			String masterStyle = para.getStyleHandler()
+					.getStyleElementForRead()
+					.getAttribute("style:master-page-name");
+			Assert.assertNotNull(masterStyle);
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+	private void verifyReplaceWithTextDocumentByBasicCases(String fileName) {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities
+					.getAbsolutePath(fileName));
+			search = new TextNavigation("This is the first paragraph", doc);
+			Assert.assertNotNull(search.hasNext());
+			TextParagraphElementBase pElement = (TextParagraphElementBase) search
+					.nextSelection().getElement();
+			Node nextPElement = pElement.getNextSibling();
+			Assert.assertTrue(nextPElement instanceof TextParagraphElementBase);
+			String contents = TextExtractor
+					.getText((TextParagraphElementBase) nextPElement);
+			if (!contents
+					.startsWith("This is a picture from the source document:"))
+				Assert.fail();
+			TextSpanElement spanEle = (TextSpanElement) pElement
+					.getElementsByTagName("text:span").item(0);
+			Span span = Span.getInstanceof(spanEle);
+			FontStyle fontStyle = span.getStyleHandler()
+					.getTextPropertiesForRead().getFontStyle();
+			Assert.assertEquals(FontStyle.BOLD, fontStyle);
+			Assert.assertTrue(doc.getContentDom().getDocument().getPackage()
+					.contains("Pictures/20000007000010550000107047D3E406.svm"));
+		} catch (Exception e) {
+			Logger.getLogger(TextSelectionTest.class.getName()).log(
+					Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '"
+					+ e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextStyleNavigationTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextStyleNavigationTest.java
new file mode 100644
index 0000000..1f2486e
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/common/navigation/TextStyleNavigationTest.java
@@ -0,0 +1,265 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.common.navigation;
+
+import java.util.TreeMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleTextPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfStyleProperty;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+/**
+ * Test the method of class org.odftoolkit.simple.common.navigation.TextStyleNavigation 
+ */
+public class TextStyleNavigationTest {
+
+	private static final Logger LOG = Logger.getLogger(TextStyleNavigationTest.class.getName());
+	public static final String TEXT_FILE = "TestStyleSelection.odt";
+	public static final String SAVE_FILE_PAST_FRONT = "TextStyleSelectionResultInsertFront.odt";
+	public static final String SAVE_FILE_PAST_END = "TextStyleSelectionResultInsertEnd.odt";
+	public static final String SAVE_FILE_DELETE = "TextStyleSelectionResultDelete.odt";
+	public static final String SAVE_FILE_STYLE = "TextStyleSelectionResultStyle.odt";
+	public static final String SAVE_FILE_REPLACE = "TextStyleSelectionResultReplace.odt";
+	public static final String SAVE_FILE_COPYTO = "TextStyleSelectionResultCopyTo.odt";
+	public static final String SAVE_FILE_COPYTO1 = "TextStyleSelectionResultCopyTo1.odt";
+	public static final String SAVE_FILE_CUT_FOOTERHEADER = "TextStyleSelectionResultCutFooterHeader.odt";
+	public static final String SAVE_FILE_APPLY_FOOTERHEADER = "TextStyleSelectionResultApplyFooterHeader.odt";
+	TextDocument doc;
+	TextStyleNavigation search1;
+	TextNavigation search2;
+	TextNavigation search3;
+	TextStyleNavigation search4;
+
+	@BeforeClass
+	public static void setUpClass() throws Exception {
+	}
+
+	@AfterClass
+	public static void tearDownClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() {
+		try {
+			doc = (TextDocument) Document.loadDocument(ResourceUtilities.getAbsolutePath(TEXT_FILE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@After
+	public void tearDown() {
+	}
+
+	/**
+	 * Test pasteAtFrontOf method of org.odftoolkit.simple.common.navigation.TextStyleNavigation
+	 */
+	@Test
+	public void testPasteAtFrontOf() {
+
+		//search the text of specified style, then insert it before specified text (delete)
+		search1 = null;
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Times New Roman1");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "16pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+		search2 = new TextNavigation("delete", doc);
+		search3 = new TextNavigation("Roman16 Romanl16delete", doc);
+
+		TextSelection itemstyle = null;
+		if (search1.hasNext()) {
+			itemstyle = (TextSelection) search1.nextSelection();
+			LOG.info(itemstyle.toString());
+		}
+		int i = 0;
+		if (itemstyle != null) {
+			while (search2.hasNext()) {
+				i++;
+				TextSelection itemtext = (TextSelection) search2.nextSelection();
+				try {
+					itemstyle.pasteAtFrontOf(itemtext);
+				} catch (InvalidNavigationException e) {
+					LOG.log(Level.SEVERE, e.getMessage(), e);
+					Assert.fail(e.getMessage());
+				}
+				LOG.info(itemtext.toString());
+			}
+		}
+
+		int j = 0;
+		while (search3.hasNext()) {
+			j++;
+			search3.nextSelection();
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_PAST_FRONT));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test pasteAtEndOf method of org.odftoolkit.simple.common.navigation.TextStyleNavigation
+	 */
+	@Test
+	public void testPasteAtEndOf() {
+
+		//search the text of specified style, then insert it after specified text (delete)
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Times New Roman1");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "16pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+		search2 = new TextNavigation("delete", doc);
+		search3 = new TextNavigation("deleteRoman16 Romanl16", doc);
+		TextSelection itemstyle = null;
+		if (search1.hasNext()) {
+			itemstyle = (TextSelection) search1.nextSelection();
+			LOG.info(itemstyle.toString());
+		}
+		int i = 0;
+		if (itemstyle != null) {
+			while (search2.hasNext()) {
+				i++;
+				TextSelection itemtext = (TextSelection) search2.nextSelection();
+				try {
+					itemstyle.pasteAtEndOf(itemtext);
+				} catch (InvalidNavigationException e) {
+					Assert.fail(e.getMessage());
+				}
+				LOG.info(itemtext.toString());
+			}
+		}
+
+		int j = 0;
+		while (search3.hasNext()) {
+			j++;
+			search3.nextSelection();
+		}
+
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_PAST_END));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test cut method of org.odftoolkit.simple.common.navigation.TextStyleNavigation
+	 */
+	@Test
+	public void testCut() {
+
+		//delete all text with specified style
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Century1");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "22pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+		search2 = new TextNavigation("Century22", doc);
+
+		while (search1.hasNext()) {
+			TextSelection item = (TextSelection) search1.nextSelection();
+			try {
+				item.cut();
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		Assert.assertFalse(search2.hasNext());
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_DELETE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test applyStyle method of org.odftoolkit.simple.common.navigation.TextStyleNavigation
+	 */
+	@Test
+	public void testApplyStyle() {
+		//select the text specified style and apply the text with new style.
+		TreeMap<OdfStyleProperty, String> searchProps = new TreeMap<OdfStyleProperty, String>();
+		searchProps.put(StyleTextPropertiesElement.FontName, "Arial");
+		searchProps.put(StyleTextPropertiesElement.FontSize, "12pt");
+		search1 = new TextStyleNavigation(searchProps, doc);
+
+		OdfStyle style = null;
+		try {
+			style = new OdfStyle(doc.getContentDom());
+			style.setProperty(StyleTextPropertiesElement.FontSize, "23pt");
+			style.setProperty(StyleTextPropertiesElement.FontWeight, "bold");
+			style.setStyleFamilyAttribute("text");
+		} catch (Exception e1) {
+			LOG.log(Level.SEVERE, e1.getMessage(), e1);
+			Assert.fail("Failed with " + e1.getClass().getName() + ": '" + e1.getMessage() + "'");
+		}
+
+		int i = 0;
+		while (search1.hasNext()) {
+			i++;
+			TextSelection item = (TextSelection) search1.nextSelection();
+			// LOG.info(item);
+			try {
+				item.applyStyle(style);
+			} catch (InvalidNavigationException e) {
+				Assert.fail(e.getMessage());
+			}
+		}
+
+		TreeMap<OdfStyleProperty, String> chgProps = new TreeMap<OdfStyleProperty, String>();
+		chgProps.put(StyleTextPropertiesElement.FontSize, "23pt");
+		chgProps.put(StyleTextPropertiesElement.FontWeight, "bold");
+		search4 = new TextStyleNavigation(chgProps, doc);
+		int j = 0;
+		while (search4.hasNext()) {
+			j++;
+			search4.nextSelection();
+		}
+		Assert.assertTrue(i == j);
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(SAVE_FILE_STYLE));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/draw/AbstractTextboxContainerTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/AbstractTextboxContainerTest.java
new file mode 100644
index 0000000..1d0d947
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/AbstractTextboxContainerTest.java
@@ -0,0 +1,86 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.PresentationDocument.PresentationClass;
+import org.odftoolkit.simple.presentation.Slide;
+import org.odftoolkit.simple.presentation.Slide.SlideLayout;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class AbstractTextboxContainerTest {
+
+	@Test
+	public void testRemoveTextbox() {
+		try {
+			// new image in presentation
+			PresentationDocument pDoc = PresentationDocument.newPresentationDocument();
+			Slide slide = pDoc.newSlide(0, "slide name ", SlideLayout.TITLE_OUTLINE);
+			java.util.List<Textbox> listTbox = slide.getTextboxByUsage(PresentationClass.TITLE);
+			Textbox titleBox = listTbox.get(0);
+			titleBox.setBackgroundColor(Color.BLUE);
+			//titleBox.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			titleBox.setName("title");
+			titleBox.setTextContent("this is title");
+			
+			//validate
+			Textbox tbox = slide.getTextboxByName("title");
+			Assert.assertEquals(titleBox, tbox);
+			
+			slide.removeTextbox(titleBox);
+			
+			Textbox tbox1 = slide.getTextboxByName("title");
+			Assert.assertNull(tbox1);
+
+			//save
+			pDoc.save(ResourceUtilities.newTestOutputFile("imagep.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(AbstractTextboxContainerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	@Test
+	public void testAddTextbox() {
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("abc");
+			Textbox box1 = p.addTextbox();
+			box1.setTextContent("content XXXX");
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+			
+		} catch (Exception e) {
+			Logger.getLogger(AbstractTextboxContainerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/draw/FrameRectangleTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/FrameRectangleTest.java
new file mode 100644
index 0000000..48aeffb
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/FrameRectangleTest.java
@@ -0,0 +1,87 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class FrameRectangleTest {
+
+	@Test
+	public void testGetDesc() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph demo");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.CM);
+			Assert.assertEquals("4.21cm", frameR.getXDesc());
+			Assert.assertEquals("1.32cm", frameR.getYDesc());
+			Assert.assertEquals("4.41cm", frameR.getWidthDesc());
+			Assert.assertEquals("3.92cm", frameR.getHeigthDesc());
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameRectangleTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testSet() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph demo");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.CM);
+			frameR.setHeight(3.22);
+			Assert.assertEquals(3.22, frameR.getHeight());
+			frameR.setWidth(4.44);
+			Assert.assertEquals(4.44, frameR.getWidth());
+			
+			Assert.assertEquals(SupportedLinearMeasure.CM, frameR.getLinearMeasure());
+			frameR.setLinearMeasure(SupportedLinearMeasure.IN);
+			Assert.assertEquals(SupportedLinearMeasure.IN, frameR.getLinearMeasure());
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameRectangleTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	
+}
+
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/draw/FrameStyleHandlerTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/FrameStyleHandlerTest.java
new file mode 100644
index 0000000..251b929
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/FrameStyleHandlerTest.java
@@ -0,0 +1,234 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.TextDocument.OdfMediaType;
+import org.odftoolkit.simple.style.GraphicProperties;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class FrameStyleHandlerTest {
+
+	@Test
+	public void testSet() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.CM);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			
+			textDoc.changeMode(OdfMediaType.TEXT_TEMPLATE);
+			frameStyleHandler.setAchorType(StyleTypeDefinitions.AnchorType.TO_CHARACTER);
+			
+			//validate
+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler.getGraphicPropertiesForWrite();
+			Assert.assertEquals(VerticalRelative.PARAGRAPH, graphicPropertiesForWrite.getVerticalRelative());
+			Assert.assertEquals(FrameVerticalPosition.TOP, graphicPropertiesForWrite.getVerticalPosition());
+			Assert.assertEquals(HorizontalRelative.PARAGRAPH, graphicPropertiesForWrite.getHorizontalRelative());
+			Assert.assertEquals(FrameHorizontalPosition.CENTER, graphicPropertiesForWrite.getHorizontalPosition());
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetAchorTypeAs_character() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.CM);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			
+			textDoc.changeMode(OdfMediaType.TEXT_TEMPLATE);
+			frameStyleHandler.setAchorType(StyleTypeDefinitions.AnchorType.AS_CHARACTER);
+			
+			//validate
+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler.getGraphicPropertiesForWrite();
+			Assert.assertEquals(VerticalRelative.BASELINE, graphicPropertiesForWrite.getVerticalRelative());
+			Assert.assertEquals(FrameVerticalPosition.TOP, graphicPropertiesForWrite.getVerticalPosition());
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetAchorTypeTo_page() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.IN);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			
+			textDoc.changeMode(OdfMediaType.TEXT_TEMPLATE);
+			frameStyleHandler.setAchorType(StyleTypeDefinitions.AnchorType.TO_PAGE);
+			
+			//validate
+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler.getGraphicPropertiesForWrite();
+			Assert.assertEquals(VerticalRelative.PAGE, graphicPropertiesForWrite.getVerticalRelative());
+			Assert.assertEquals(FrameVerticalPosition.TOP, graphicPropertiesForWrite.getVerticalPosition());
+			Assert.assertEquals(HorizontalRelative.PAGE, graphicPropertiesForWrite.getHorizontalRelative());
+			Assert.assertEquals(FrameHorizontalPosition.CENTER, graphicPropertiesForWrite.getHorizontalPosition());
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetHorizontalPosition() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.IN);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			frameStyleHandler.setHorizontalPosition(FrameHorizontalPosition.RIGHT);
+			
+			//validate
+			Assert.assertEquals(FrameHorizontalPosition.RIGHT, frameStyleHandler.getHorizontalPosition());
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	
+	@Test
+	public void testSetVerticalRelative() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.IN);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			frameStyleHandler.setVerticalRelative(VerticalRelative.PARAGRAPH);
+			
+			//validate
+			Assert.assertEquals(VerticalRelative.PARAGRAPH, frameStyleHandler.getVerticalRelative());
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetHorizontalRelative() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.IN);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			frameStyleHandler.setHorizontalRelative(HorizontalRelative.PARAGRAPH);
+			
+			//validate
+			Assert.assertEquals(HorizontalRelative.PARAGRAPH, frameStyleHandler.getHorizontalRelative());
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(FrameStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+}
+
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/draw/ImageTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/ImageTest.java
new file mode 100644
index 0000000..7a14da0
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/ImageTest.java
@@ -0,0 +1,414 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.text.TextParagraphElementBase;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.presentation.Slide;
+import org.odftoolkit.simple.presentation.Slide.SlideLayout;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ImageTest {
+
+	@Test
+	public void testNewImage() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setName("this image");
+			image.setHyperlink(new URI("http://odftoolkit.org"));
+			doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+			Iterator<Image> iter = Image.imageIterator(para);
+			if (iter.hasNext()) {
+				Image aImage = iter.next();
+				Assert.assertEquals(image, aImage);
+			}
+
+			// new image in presentation
+			PresentationDocument pDoc = PresentationDocument.newPresentationDocument();
+			Slide slide = pDoc.newSlide(0, "test", SlideLayout.TITLE_OUTLINE);
+			Textbox box = slide.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			box.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			pDoc.save(ResourceUtilities.newTestOutputFile("imagep.odp"));
+
+			// new image in a table
+			TextDocument sDoc = TextDocument.newTextDocument();
+			Table table1 = sDoc.addTable(2, 2);
+			Cell cell1 = table1.getCellByPosition(0, 0);
+			Image image3 = cell1.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			image3.setHorizontalPosition(FrameHorizontalPosition.LEFT);
+			image3.setHyperlink(new URI("http://odftoolkit.org"));
+			Assert.assertEquals("http://odftoolkit.org", image3.getHyperlink().toString());
+			sDoc.save(ResourceUtilities.newTestOutputFile("imges.odt"));
+
+			SpreadsheetDocument sheet = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table2 = sheet.getTableList().get(0);
+			Cell cell2 = table2.getCellByPosition(1, 1);
+			Image image4 = cell2.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			sheet.save(ResourceUtilities.newTestOutputFile("imgesheet.ods"));
+			Image aImage4 = cell2.getImage();
+			Assert.assertEquals(image4, aImage4);
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testGetInstanceof() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setName("this image");
+			image.setHyperlink(new URI("http://odftoolkit.org"));
+			
+			DrawImageElement imageElement = image.getOdfElement();
+			
+			Image imageother = Image.getInstanceof(imageElement);
+			Assert.assertEquals(image, imageother);
+			
+			//when image is null
+			Image imagenull = Image.getInstanceof(null);
+			Assert.assertEquals(null, imagenull);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testGetFrame() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setName("this image");
+			image.setHyperlink(new URI("http://odftoolkit.org"));
+			
+			Frame imageFrame = image.getFrame();
+			Assert.assertEquals("this image", imageFrame.getName());
+			Assert.assertEquals(new URI("http://odftoolkit.org"), imageFrame.getHyperlink());
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testRemove() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("imagePara");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setName("this test image");
+			image.setHyperlink(new URI("http://odftoolkit.org"));
+			//image.remove();
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("imageFretest.odt"));
+			
+			TextDocument doc1 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("imageFretest.odt"));
+			Iterator parasIter = doc1.getParagraphIterator();
+			
+			while(parasIter.hasNext()){
+				Paragraph parac = (Paragraph)parasIter.next();
+				String text = parac.getTextContent();
+				if("imagePara".equals(text)){
+					TextParagraphElementBase textParaEleBase = parac.getOdfElement();
+					NodeList nodeImages = textParaEleBase.getElementsByTagName("draw:image");
+					Node nodeImage = nodeImages.item(0);
+					OdfDrawImage im = (OdfDrawImage)nodeImage;
+					Image ima = Image.getInstanceof(im);
+					ima.getName();
+					boolean flag = ima.remove();
+					if(!flag)
+						Assert.fail("remove() method was executed failed.");
+				}
+			}
+			
+			//save
+			doc1.save(ResourceUtilities.newTestOutputFile("imageEndtest.odt"));
+			
+			//validate
+			TextDocument doc2 = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("imageEndtest.odt"));
+			Iterator parasIter2 = doc2.getParagraphIterator();
+			
+			while(parasIter2.hasNext()){
+				Paragraph parac = (Paragraph)parasIter2.next();
+				String text = parac.getTextContent();
+				if("imagePara".equals(text)){
+					TextParagraphElementBase textParaEleBase = parac.getOdfElement();
+					NodeList nodeImages = textParaEleBase.getElementsByTagName("draw:image");
+					Node nodeImage = nodeImages.item(0);
+					if(nodeImage == null)
+						Assert.assertTrue(true);
+					else
+						Assert.fail();
+				}
+			}
+			
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testUpdateImage() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			Assert.assertEquals("image/png", image.getMediaTypeString());
+
+			//change the piceture of image.
+			image.updateImage(ResourceUtilities.getURI("testA.jpg"));
+			Assert.assertEquals("image/jpeg", image.getMediaTypeString());
+			
+			//Image imm = (Image)nodeEle;
+			DrawImageElement  drawImage = image.getOdfElement();
+			String imagePath = drawImage.getAttribute("xlink:href");
+			
+			Assert.assertEquals("Pictures/image_list_item.png", imagePath);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetImageInputStream() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			InputStream inImage = image.getImageInputStream();
+			int size = inImage.available();
+			Assert.assertTrue(size > 0);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	
+	@Test
+	public void testGetInternalPath() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			String internalPath = image.getInternalPath();
+			
+			Assert.assertEquals("Pictures/image_list_item.png", internalPath);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetMediaTypeString() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			String mediaType = image.getMediaTypeString();
+			
+			Assert.assertEquals("image/png", mediaType);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetTitle() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setTitle("ibm_title");
+			String title = image.getTitle();
+			
+			Assert.assertEquals("ibm_title", title);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetDescription() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			image.setDescription("description");
+			String description = image.getDesciption();
+			
+			Assert.assertEquals("description", description);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetRectangle() {
+		try {
+			// new image in text document
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("updateImage test");
+			Image image = Image.newImage(para, ResourceUtilities.getURI("image_list_item.png"));
+			
+			FrameRectangle rectangle = new FrameRectangle(5.13, 4.21, 3.76, 3.51, StyleTypeDefinitions.SupportedLinearMeasure.CM); 
+			image.setRectangle(rectangle);
+			
+			FrameRectangle rectangle2 = image.getRectangle();
+			
+			Assert.assertEquals(3.51, rectangle2.getHeight());
+			Assert.assertEquals(3.76, rectangle2.getWidth());
+			Assert.assertEquals(5.13, rectangle2.getX());
+			Assert.assertEquals(4.21, rectangle2.getY());
+			Assert.assertEquals(StyleTypeDefinitions.SupportedLinearMeasure.CM, rectangle2.getLinearMeasure());
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("imagetest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetHorizontalPosition() {
+		try {
+			// new image in a table
+			TextDocument sDoc = TextDocument.newTextDocument();
+			Table table1 = sDoc.addTable(2, 2);
+			Cell cell1 = table1.getCellByPosition(0, 0);
+			Image image3 = cell1.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			image3.setHorizontalPosition(FrameHorizontalPosition.LEFT);
+			Assert.assertEquals(FrameHorizontalPosition.LEFT, image3.getHorizontalPosition());
+			
+			//save
+			//sDoc.save(ResourceUtilities.newTestOutputFile("imges.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSetVerticalPosition() {
+		try {
+			// new image in a table
+			TextDocument sDoc = TextDocument.newTextDocument();
+			Table table1 = sDoc.addTable(2, 2);
+			Cell cell1 = table1.getCellByPosition(0, 0);
+			Image image3 = cell1.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			image3.setVerticalPosition(FrameVerticalPosition.BELOW);
+			
+			Assert.assertEquals(FrameVerticalPosition.BELOW, image3.getVerticalPosition());
+			
+			//save
+			//sDoc.save(ResourceUtilities.newTestOutputFile("imges.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/draw/TextBoxTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/TextBoxTest.java
new file mode 100644
index 0000000..d8ca872
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/draw/TextBoxTest.java
@@ -0,0 +1,356 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.draw;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.presentation.Slide;
+import org.odftoolkit.simple.presentation.Slide.SlideLayout;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.odftoolkit.simple.text.list.NumberDecorator;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class TextBoxTest {
+
+	@Test
+	public void testAddTextbox() {
+		String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("abc");
+			Textbox box = p.addTextbox(new FrameRectangle(1, 1, 2, 3, SupportedLinearMeasure.IN));
+			box.setName("box1");
+			box.setTextContent(content);
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+			textDoc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("textsample.odt"));
+			Paragraph p1 = textDoc.getParagraphByIndex(0, true);
+			Assert.assertNotNull(p1);
+			Textbox aBox = p1.getTextboxByName("box1");
+			Assert.assertNotNull(aBox);
+			String textContent = aBox.getTextContent();
+			Assert.assertEquals(content, textContent);
+
+			PresentationDocument presentDoc = PresentationDocument.newPresentationDocument();
+			Slide slide1 = presentDoc.newSlide(1, "slide1", SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			Textbox titleTextbox = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			Assert.assertNotNull(titleTextbox);
+			titleTextbox.setTextContent("My Title1");
+			java.util.List<Textbox> boxList = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.OUTLINE);
+			Assert.assertNotNull(boxList);
+			Assert.assertEquals(2, boxList.size());
+			Textbox leftTextbox = boxList.get(0);
+			List list1 = leftTextbox.addList();
+			list1.addItem("Test outline1");
+			list1.addItem("Test outline2");
+
+			presentDoc.save(ResourceUtilities.newTestOutputFile("abc.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testGetRemoveTextbox() {
+		int count = 0;
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("SampleBox.odt"));
+			count = countAllTextbox(doc);
+			Assert.assertEquals(8, count);
+
+			int c = 0;
+			Paragraph p = doc.getParagraphByIndex(1, true);
+			Iterator<Textbox> boxIter = p.getTextboxIterator();
+			while (boxIter.hasNext()) {
+				Textbox box = boxIter.next();
+				if (p.removeTextbox(box))
+					;
+				c++;
+			}
+
+			count = countAllTextbox(doc);
+			Assert.assertEquals(8 - c, count);
+			doc.save(ResourceUtilities.newTestOutputFile("SampleBoxOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	private int countAllTextbox(TextDocument doc) {
+		int count = 0;
+		Iterator<Paragraph> pIter = doc.getParagraphIterator();
+		while (pIter.hasNext()) {
+			Paragraph p = pIter.next();
+			Iterator<Textbox> boxIter = p.getTextboxIterator();
+			while (boxIter.hasNext()) {
+				Textbox box = boxIter.next();
+				System.out.println(box.getTextContent());
+				count++;
+			}
+		}
+		return count;
+	}
+	
+	
+	@Test
+	public void testClearContent() {
+		String content = "welcome to text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("abc");
+			Textbox box = p.addTextbox(new FrameRectangle(1, 1, 2, 3, SupportedLinearMeasure.IN));
+			box.setName("box1");
+			box.addParagraph("test paragraph");
+			box.clearContent();
+			box.setTextContent(content);
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testaddListListDecorator() {
+		try {
+			PresentationDocument presentDoc = PresentationDocument.newPresentationDocument();
+			Slide slide1 = presentDoc.newSlide(1, "slide1", SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			//title
+			Textbox titleTextbox = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			Assert.assertNotNull(titleTextbox);
+			titleTextbox.setTextContent("This is Title");
+			java.util.List<Textbox> boxList = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.OUTLINE);
+			Assert.assertNotNull(boxList);
+			Assert.assertEquals(2, boxList.size());
+			Textbox leftTextbox = boxList.get(0);
+			List list1 = leftTextbox.addList();
+			list1.addItem("Test outline1");
+			list1.addItem("Test outline2");
+			
+			//
+			Textbox rightTextbox = boxList.get(1);
+			Assert.assertNotNull(rightTextbox);
+			
+			ListDecorator decorator = new NumberDecorator(presentDoc);
+			rightTextbox.setBackgroundColor(Color.RED);
+			List list2 = rightTextbox.addList(decorator);
+			list2.addItem("test one");
+			list2.addItem("test two");
+			list2.addItem("test three");
+			
+			//save
+			presentDoc.save(ResourceUtilities.newTestOutputFile("abc.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testClearList() {
+		try {
+			PresentationDocument presentDoc = PresentationDocument.newPresentationDocument();
+			Slide slide1 = presentDoc.newSlide(1, "slide1", SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			//title
+			Textbox titleTextbox = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			Assert.assertNotNull(titleTextbox);
+			titleTextbox.setTextContent("This is Title");
+			java.util.List<Textbox> boxList = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.OUTLINE);
+			Assert.assertNotNull(boxList);
+			Assert.assertEquals(2, boxList.size());
+			Textbox leftTextbox = boxList.get(0);
+			List list1 = leftTextbox.addList();
+			list1.addItem("Test outline1");
+			list1.addItem("Test outline2");
+			leftTextbox.clearList();
+			List list3 = leftTextbox.addList();
+			list3.addItem("Test line3");
+			list3.addItem("Test line3");
+			//
+			Textbox rightTextbox = boxList.get(1);
+			Assert.assertNotNull(rightTextbox);
+			
+			ListDecorator decorator = new NumberDecorator(presentDoc);
+			rightTextbox.setBackgroundColor(Color.RED);
+			List list2 = rightTextbox.addList(decorator);
+			list2.addItem("test one");
+			list2.addItem("test two");
+			list2.addItem("test three");
+			rightTextbox.clearList();
+			Iterator iterator = rightTextbox.getListIterator();
+			Assert.assertEquals(false, iterator.hasNext());
+			
+			//save
+			presentDoc.save(ResourceUtilities.newTestOutputFile("abc.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetListContainerElement() {
+		try {
+			PresentationDocument presentDoc = PresentationDocument.newPresentationDocument();
+			Slide slide1 = presentDoc.newSlide(1, "slide1", SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			//title
+			Textbox titleTextbox = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			Assert.assertNotNull(titleTextbox);
+			titleTextbox.setTextContent("This is Title");
+			java.util.List<Textbox> boxList = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.OUTLINE);
+			Assert.assertNotNull(boxList);
+			Assert.assertEquals(2, boxList.size());
+			Textbox leftTextbox = boxList.get(0);
+			List list1 = leftTextbox.addList();
+			list1.addItem("Test outline1");
+			list1.addItem("Test outline2");
+			//
+			Textbox rightTextbox = boxList.get(1);
+			Assert.assertNotNull(rightTextbox);
+			
+			ListDecorator decorator = new NumberDecorator(presentDoc);
+			rightTextbox.setBackgroundColor(Color.RED);
+			List list2 = rightTextbox.addList(decorator);
+			list2.addItem("test AAA");
+			OdfElement odfEle = rightTextbox.getListContainerElement();
+			NodeList nodes = odfEle.getChildNodes();
+			for(int i=0;i<nodes.getLength();i++){
+				Node node = nodes.item(i);
+				Assert.assertEquals("test AAA", node.getTextContent());
+			}
+			
+			//save
+			presentDoc.save(ResourceUtilities.newTestOutputFile("abc.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+		
+	}
+	
+	
+	@Test
+	public void testGetListIterator() {
+		try {
+			PresentationDocument presentDoc = PresentationDocument.newPresentationDocument();
+			Slide slide1 = presentDoc.newSlide(1, "slide1", SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			//title
+			Textbox titleTextbox = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			Assert.assertNotNull(titleTextbox);
+			titleTextbox.setTextContent("This is Title");
+			java.util.List<Textbox> boxList = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.OUTLINE);
+			Assert.assertNotNull(boxList);
+			Assert.assertEquals(2, boxList.size());
+			Textbox leftTextbox = boxList.get(0);
+			List list1 = leftTextbox.addList();
+			list1.addItem("Test outline1");
+			list1.addItem("Test outline2");
+
+			//
+			Textbox rightTextbox = boxList.get(1);
+			Assert.assertNotNull(rightTextbox);
+			
+			ListDecorator decorator = new NumberDecorator(presentDoc);
+			rightTextbox.setBackgroundColor(Color.RED);
+			List list2 = rightTextbox.addList();
+			list2.addItem("test AAA");
+			list2.addItem("test BBB");
+			Iterator iterator = rightTextbox.getListIterator();
+			while(iterator.hasNext()){
+				List list = (List)iterator.next();
+				Assert.assertEquals(2, list.size());
+				Assert.assertEquals("test AAA", list.getItem(0).toString());
+				Assert.assertEquals("test BBB", list.getItem(1).toString());
+			}
+			
+			//save
+			presentDoc.save(ResourceUtilities.newTestOutputFile("abc.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+		
+	}
+	
+	
+	@Test
+	public void testRemoveList() {
+		try {
+			PresentationDocument presentDoc = PresentationDocument.newPresentationDocument();
+			Slide slide1 = presentDoc.newSlide(1, "slide1", SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			//title
+			Textbox titleTextbox = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.TITLE).get(0);
+			Assert.assertNotNull(titleTextbox);
+			titleTextbox.setTextContent("This is Title");
+			java.util.List<Textbox> boxList = slide1.getTextboxByUsage(PresentationDocument.PresentationClass.OUTLINE);
+			Assert.assertNotNull(boxList);
+			Assert.assertEquals(2, boxList.size());
+			Textbox leftTextbox = boxList.get(0);
+			List list1 = leftTextbox.addList();
+			list1.addItem("Test outline1");
+			list1.addItem("Test outline2");
+
+			//
+			Textbox rightTextbox = boxList.get(1);
+			Assert.assertNotNull(rightTextbox);
+			
+			ListDecorator decorator = new NumberDecorator(presentDoc);
+			rightTextbox.setBackgroundColor(Color.RED);
+			List list2 = rightTextbox.addList();
+			list2.addItem("test AAA");
+			list2.addItem("test BBB");
+			
+			rightTextbox.removeList(list2);
+			Iterator iterator = rightTextbox.getListIterator();
+			Assert.assertFalse(iterator.hasNext());
+			
+			//save
+			presentDoc.save(ResourceUtilities.newTestOutputFile("abc.odp"));
+		} catch (Exception e) {
+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+		
+	}
+	
+	
+}
+
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/AbstractFormContainerTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/AbstractFormContainerTest.java
new file mode 100644
index 0000000..f9a26f9
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/AbstractFormContainerTest.java
@@ -0,0 +1,105 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import org.junit.Assert;

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class AbstractFormContainerTest {

+	final static FrameRectangle btnRtg = new FrameRectangle(0.5, 2, 2.9433,

+			0.5567, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form1 = doc.createForm("Form1");

+			form1.createButton(doc, btnRtg, "Button", "Push Button");

+

+			Paragraph para = doc.addParagraph("Insert a Label here.");

+			Form form2 = doc.createForm("Form2");

+			form2.createLabel(para, btnRtg, "Label", "Label");

+

+			Form form3 = doc.createForm("Form3");

+			Table table1 = Table.newTable(doc, 2, 2);

+			Cell cell = table1.getCellByPosition("A1");

+			para = cell.addParagraph("Insert a text box here.");

+			form3.createTextBox(para, btnRtg, "Text Box", "TextBox", true);

+

+			Assert.assertNotNull(doc.getFormByName("Form1"));

+

+			doc.save(ResourceUtilities.newTestOutputFile("TestCreateForm.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(AbstractFormContainerTest.class.getName()).log(

+					Level.SEVERE, null, e);

+		}

+	}

+

+	@Test

+	public void testCreateForm() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateForm.odt"));

+			Assert.assertNotNull(textDoc.getFormByName("Form1"));

+			Assert.assertNotNull(textDoc.getFormByName("Form2"));

+			Assert.assertNotNull(textDoc.getFormByName("Form3"));

+		} catch (Exception e) {

+			Logger.getLogger(AbstractFormContainerTest.class.getName()).log(

+					Level.SEVERE, null, e);

+		}

+	}

+

+	@Test

+	public void testRemoveForm() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateForm.odt"));

+			Form deleteForm = null;

+			Iterator<Form> iterator = textDoc.getFormIterator();

+			while (iterator.hasNext()) {

+				deleteForm = iterator.next();

+				if (deleteForm.getFormName().equals("Form3"))

+					break;

+			}

+			textDoc.removeForm(deleteForm);

+			Assert.assertNotNull(textDoc.getFormByName("Form1"));

+			Assert.assertNotNull(textDoc.getFormByName("Form2"));

+			Assert.assertNull(textDoc.getFormByName("Form3"));

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveForm.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(AbstractFormContainerTest.class.getName()).log(

+					Level.SEVERE, null, e);

+		}

+	}

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/ButtonTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/ButtonTest.java
new file mode 100644
index 0000000..fea9e94
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/ButtonTest.java
@@ -0,0 +1,223 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class ButtonTest {

+	private static final FrameRectangle btnRtg = new FrameRectangle(0.5, 2,

+			2.9433, 0.5567, SupportedLinearMeasure.IN);;

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+			form.createButton(doc, btnRtg, "Button1", "Push Button 1");

+			form.createButton(doc, btnRtg, "Button2", "Push Button 2");

+

+			Paragraph para = doc.addParagraph("Insert a button here.");

+			form.createButton(para, btnRtg, "Button3", "Push Button 3");

+

+			Table table1 = Table.newTable(doc, 2, 2);

+			Cell cell = table1.getCellByPosition("A1");

+			para = cell.addParagraph("Insert a button here:");

+			form.createButton(para, btnRtg, "Button4", "Push Button 4");

+

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestCreateButton.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(ButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCreateButton() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Button.getSimpleIterator(form);

+			int count = 0;

+			while (iterator.hasNext()) {

+				Button btn = (Button) iterator.next();

+				Assert.assertNotNull(btn);

+				Assert.assertEquals("Button" + (++count), btn.getName());

+				Assert.assertEquals("Push Button " + (count), btn.getLabel());

+			}

+		} catch (Exception e) {

+			Logger.getLogger(ButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveButton() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Button.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				Button btn = (Button) iterator.next();

+				if (btn.getName().equals("Button2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			Button find = null;

+			while (iterator.hasNext()) {

+				Button btn = (Button) iterator.next();

+				if (btn.getName().equals("Button2")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveButton.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetButtonRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Button.getSimpleIterator(form);

+			Button find = null;

+			while (iterator.hasNext()) {

+				Button btn = (Button) iterator.next();

+				if (btn.getName().equals("Button2")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetButtonRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Button.getSimpleIterator(form);

+			Button find = null;

+			while (iterator.hasNext()) {

+				Button btn = (Button) iterator.next();

+				if (btn.getName().equals("Button3")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.AS_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.BASELINE,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetButtonAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetLabel() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Button.getSimpleIterator(form);

+			Button find = null;

+			while (iterator.hasNext()) {

+				Button btn = (Button) iterator.next();

+				if (btn.getName().equals("Button4")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// set new label

+			String newLabel = "Change the content of button 4.";

+			find.setLabel(newLabel);

+			Assert.assertEquals(newLabel, find.getLabel());

+			// set null value

+			find.setLabel(null);

+			Assert.assertEquals("", find.getLabel());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetButtonLabel.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/CheckBoxTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/CheckBoxTest.java
new file mode 100644
index 0000000..5401123
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/CheckBoxTest.java
@@ -0,0 +1,304 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormCheckboxState;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class CheckBoxTest {

+	private static final FrameRectangle checkBoxRtg = new FrameRectangle(

+			0.7972, 1.2862, 2.4441, 0.2669, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+

+			// checkbox 1

+			CheckBox checkbox = (CheckBox) form.createCheckBox(doc,

+					checkBoxRtg, "CheckBox 1", "CheckBox 1", "1");

+

+			// checkbox 2

+			Paragraph para = doc.addParagraph("CheckBox2 anchor to heading.");

+			para.applyHeading();

+			form.createCheckBox(para, checkBoxRtg, "CheckBox 2", "CheckBox 2",

+					"2");

+

+			// checkbox 3

+			para = doc.addParagraph("Insert checkbox3 here, as_char.");

+			checkbox = (CheckBox) form.createCheckBox(para, checkBoxRtg,

+					"CheckBox 3", "CheckBox 3", "3");

+			checkbox.setCurrentState(FormCheckboxState.CHECKED);

+			checkbox.setAnchorType(AnchorType.AS_CHARACTER);

+

+			Table table1 = Table.newTable(doc, 2, 2);

+			Cell cell = table1.getCellByPosition("B1");

+			para = cell.addParagraph("Insert a check box here.");

+			form.createCheckBox(para, checkBoxRtg, "CheckBox 4", "CheckBox 4",

+					"4");

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestCreateCheckbox.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCreateCheckBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckbox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			int count = 0;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				Assert.assertNotNull(btn);

+				Assert.assertEquals("CheckBox " + (++count), btn.getName());

+				Assert.assertEquals("CheckBox " + (count), btn.getLabel());

+			}

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveCheckBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 2")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveCheckBox.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetCheckBoxRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 2")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetCheckBoxRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 3")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.TO_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.PARAGRAPH,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+			Assert.assertEquals(HorizontalRelative.PARAGRAPH,

+					graphicPropertiesForWrite.getHorizontalRelative());

+			Assert.assertEquals(FrameHorizontalPosition.CENTER,

+					graphicPropertiesForWrite.getHorizontalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetCheckBoxAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetLabel() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 4")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// set new label

+			String newLabel = "Change the content of CheckBox 4.";

+			find.setLabel(newLabel);

+			Assert.assertEquals(newLabel, find.getLabel());

+			// set null value

+			find.setLabel(null);

+			Assert.assertEquals("", find.getLabel());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetCheckBoxLabel.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCheckedState() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 3")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// validate

+			Assert.assertEquals(FormCheckboxState.CHECKED, find

+					.getCurrentState());

+

+			find.setCurrentState(FormCheckboxState.UNKNOWN);

+			Assert.assertEquals(FormCheckboxState.UNKNOWN, find

+					.getCurrentState());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetCheckBoxState.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetValue() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateCheckBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox btn = (CheckBox) iterator.next();

+				if (btn.getName().equals("CheckBox 1")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// validate

+			Assert.assertEquals("1", find.getValue());

+

+			find.setValue("15");

+			Assert.assertEquals("15", find.getValue());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetCheckBoxValue.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(CheckBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/ComboBoxTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/ComboBoxTest.java
new file mode 100644
index 0000000..96dc4df
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/ComboBoxTest.java
@@ -0,0 +1,273 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormCommandType;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormListSourceType;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class ComboBoxTest {

+	private static final FrameRectangle comboRtg = new FrameRectangle(0.7972,

+			1.2862, 2.4441, 0.2669, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+

+			FormControl comboBox = form.createComboBox(doc, new FrameRectangle(

+					0.7972, 1.2862, 2.4441, 0.2669, SupportedLinearMeasure.IN),

+					"combo1", "dd", true);

+			String[] items = { "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh",

+					"ii", "jj" };

+			((ComboBox) comboBox).addItems(items);

+

+			Paragraph para = doc.addParagraph("Insert a combo box here.");

+			comboBox = form.createComboBox(para, comboRtg, "combo2",

+					"default text", true);

+			form.setDataSource("Bibliography");

+			form.setCommandType(FormCommandType.TABLE);

+			form.setCommand("biblio");

+			((ComboBox) comboBox).setListSourceType(FormListSourceType.SQL);

+			((ComboBox) comboBox)

+					.setListSource("SELECT \"Publisher\", \"Identifier\" FROM \"biblio\"");

+			((ComboBox) comboBox).setDataField("Author");

+			comboBox.setAnchorType(AnchorType.AS_CHARACTER);

+

+			Table table = Table.newTable(doc, 2, 2);

+			table.setTableName("Table");

+			Cell cell = table.getCellByPosition("B1");

+			para = cell.addParagraph("Insert a combo box here.");

+			form.createComboBox(para, comboRtg, "combo3", "default text", true);

+

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestCreateComboBox.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(ComboBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCreateComboBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateComboBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ComboBox.getSimpleIterator(form);

+			int count = 0;

+			

+			// combo1

+			ComboBox comboBox = (ComboBox) iterator.next();

+			Assert.assertNotNull(comboBox);

+			Assert.assertEquals("combo" + (++count), comboBox.getName());

+			Assert.assertEquals("dd", comboBox.getValue());

+			ArrayList<String> entries = comboBox.getEntries();

+			Assert.assertEquals("aa", entries.get(0));

+			Assert.assertEquals("jj", entries.get(entries.size() - 1));

+			

+			// combo2

+			comboBox = (ComboBox) iterator.next();

+			Assert.assertNotNull(comboBox);

+			Assert.assertEquals("combo" + (++count), comboBox.getName());

+			Assert.assertEquals(

+					"SELECT \"Publisher\", \"Identifier\" FROM \"biblio\"",

+					comboBox.getListSource());

+			Assert.assertEquals(FormListSourceType.SQL, comboBox

+					.getListSourceType());

+			Assert.assertEquals("Author", comboBox.getDataField());

+		

+			// combo3

+			comboBox = (ComboBox) iterator.next();

+			Assert.assertNotNull(comboBox);

+			Assert.assertEquals("combo" + (++count), comboBox.getName());

+			Assert.assertEquals("default text", comboBox.getValue());

+			Assert.assertEquals(textDoc.getTableByName("Table")

+					.getCellByPosition("B1").getParagraphByIndex(0, true)

+					.getOdfElement(), comboBox.getDrawControl()

+					.getContainerElement());

+

+		} catch (Exception e) {

+			Logger.getLogger(ComboBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveComboBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateComboBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ComboBox.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				ComboBox combo = (ComboBox) iterator.next();

+				if (combo.getName().equals("ComboBox2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			ComboBox find = null;

+			while (iterator.hasNext()) {

+				ComboBox btn = (ComboBox) iterator.next();

+				if (btn.getName().equals("ComboBox2")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveComboBox.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ComboBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetComboBoxRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateComboBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ComboBox.getSimpleIterator(form);

+			ComboBox find = null;

+			while (iterator.hasNext()) {

+				ComboBox btn = (ComboBox) iterator.next();

+				if (btn.getName().equals("combo2")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetComboBoxRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ComboBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateComboBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ComboBox.getSimpleIterator(form);

+			ComboBox find = null;

+			while (iterator.hasNext()) {

+				ComboBox btn = (ComboBox) iterator.next();

+				if (btn.getName().equals("combo3")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.AS_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.BASELINE,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetComboBoxAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ComboBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetProperties() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateComboBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ComboBox.getSimpleIterator(form);

+			ComboBox find = null;

+			while (iterator.hasNext()) {

+				ComboBox btn = (ComboBox) iterator.next();

+				if (btn.getName().equals("combo3")) {

+					find = btn;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// set new name

+			String newName = "combo4";

+			find.setName(newName);

+			Assert.assertEquals(newName, find.getName());

+			// set new text value

+			find.setCurrentValue(newName);

+			Assert.assertEquals(newName, find.getCurrentValue());

+			// set drop-down visibility

+			find.setFormDropdown(false);

+			Assert.assertEquals(newName, find.getCurrentValue());

+			// set list source

+			String sql = "SELECT DISTINCT \"ISBN\" FROM \"biblio\" ";

+			find.setListSource(sql);

+			Assert.assertEquals(sql, find.getListSource());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetComboBoxProperties.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ComboBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/FieldTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/FieldTest.java
new file mode 100644
index 0000000..d4bf729
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/FieldTest.java
@@ -0,0 +1,299 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.Locale;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class FieldTest {

+	private static final FrameRectangle fieldRtg = new FrameRectangle(0.5, 2.0,

+			2.9433, 0.5567, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			Paragraph para = Paragraph.newParagraph(doc);

+			FormControl dateField = form.createDateField(para, fieldRtg,

+					"DateField", "20120715");

+			((DateField) dateField).setSpinButonVisible(true);

+			((DateField) dateField).setDropDownVisible(true);

+			((DateField) dateField).formatDate("yy/MM/dd", Locale.US);

+

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			para = Paragraph.newParagraph(doc);

+			FormControl timeField = form.createTimeField(para, fieldRtg,

+					"TimeField", "15234000");

+			((TimeField) timeField).setSpinButonVisible(true);

+			((TimeField) timeField).formatTime("HH:mm a", Locale.US);

+

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			para = Paragraph.newParagraph(doc);

+			FormControl numericField = form.createNumericField(para, fieldRtg,

+					"NumericField", "-154.3567");

+			((NumericField) numericField).setDecimalAccuracy(3);

+			((NumericField) numericField).setSpinButonVisible(true);

+

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			para = Paragraph.newParagraph(doc);

+			FormControl patternField = form.createPatternField(para, fieldRtg,

+					"PatternField", "12345");

+			((PatternField) patternField).setLiteralMask("###");

+			((PatternField) patternField).setEditMask("abc");

+			((PatternField) patternField).setSpinButonVisible(true);

+

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			Paragraph.newParagraph(doc);

+			para = Paragraph.newParagraph(doc);

+			para.appendTextContent("insert currency field here:");

+			FormControl currencyField = form.createCurrencyField(para,

+					fieldRtg, "CurrencyField", "135.467");

+			((CurrencyField) currencyField).setCurrencySymbol("CNY");

+			((CurrencyField) currencyField).setDecimalAccuracy(4);

+			((CurrencyField) currencyField).setSpinButonVisible(true);

+

+			doc

+					.save(ResourceUtilities

+							.newTestOutputFile("TestCreateField.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(FieldTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testCreateField() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateField.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Field.getSimpleIterator(form);

+			if (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				Assert.assertNotNull(field);

+				Assert.assertEquals("DateField", field.getName());

+				Assert.assertEquals("20120715", field.getCurrentValue());

+			}

+			if (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				Assert.assertNotNull(field);

+				Assert.assertEquals("TimeField", field.getName());

+				Assert.assertEquals("15234000", field.getCurrentValue());

+			}

+			if (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				Assert.assertNotNull(field);

+				Assert.assertEquals("NumericField", field.getName());

+				Assert.assertEquals("-154.3567", field.getCurrentValue());

+			}

+			if (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				Assert.assertNotNull(field);

+				Assert.assertEquals("PatternField", field.getName());

+				Assert.assertEquals("12345", field.getCurrentValue());

+			}

+			if (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				Assert.assertNotNull(field);

+				Assert.assertEquals("CurrencyField", field.getName());

+				Assert.assertEquals("135.467", field.getCurrentValue());

+			}

+		} catch (Exception e) {

+			Logger.getLogger(FieldTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveField() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateField.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Field.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				if (field.getName().equals("PatternField")) {

+					iterator.remove();

+					break;

+				}

+			}

+			Field find = null;

+			while (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				if (field.getName().equals("PatternField")) {

+					find = field;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveField.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(FieldTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testSetFieldRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateField.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Field.getSimpleIterator(form);

+			Field find = null;

+			while (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				if (field.getName().equals("TimeField")) {

+					find = field;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 0.2, 6, 2.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(6.0, find.getRectangle().getWidth());

+			Assert.assertEquals(2.5, find.getRectangle().getHeight());

+			Assert.assertEquals(0.2, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetFieldRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(FieldTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateField.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Field.getSimpleIterator(form);

+			Field find = null;

+			while (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				if (field.getName().equals("CurrencyField")) {

+					find = field;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.AS_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.BASELINE,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetFieldAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(FieldTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testSetFormat() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateField.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Field.getSimpleIterator(form);

+			Field find = null;

+			while (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				if (field.getName().equals("DateField")) {

+					find = field;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+

+			// set date format

+			String date = "19840605";

+			String format = "yy-MM-dd";

+			find.setCurrentValue(date);

+			((DateField) find).formatDate(format, Locale.GERMANY);

+			Assert.assertEquals(date, find.getCurrentValue());

+			Assert.assertEquals(format, ((DateField) find).getDateFormat());

+			find.setCurrentValue(null);

+			Assert.assertEquals("", find.getCurrentValue());

+			try {

+				((DateField) find).formatDate(null, Locale.US);

+			} catch (IllegalArgumentException e) {

+				Assert.assertTrue(true);

+			}

+			while (iterator.hasNext()) {

+				Field field = (Field) iterator.next();

+				if (field.getName().equals("TimeField")) {

+					find = field;

+					break;

+				}

+			}

+			

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetFormatValue.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(FieldTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/LabelTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/LabelTest.java
new file mode 100644
index 0000000..841a1bb
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/LabelTest.java
@@ -0,0 +1,227 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class LabelTest {

+	private static final FrameRectangle labelRtg = new FrameRectangle(0.5, 1.2553,

+			1.2, 0.5, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+			// label1

+			form.createLabel(doc, labelRtg, "Label1", "Label1");

+			// label2

+			Label label = (Label) form.createLabel(doc, labelRtg, "Label2",

+					"Label2");

+			label.setAnchorType(AnchorType.TO_CHARACTER);

+			// label3

+			Paragraph para = doc.addParagraph("Insert a Label here.");

+			form.createLabel(para, labelRtg, "Label3", "Label3");

+			// label4

+			Table table1 = Table.newTable(doc, 2, 2);

+			Cell cell = table1.getCellByPosition("B1");

+			para = cell.addParagraph("Insert a Label here.");

+			form.createLabel(para, labelRtg, "Label4", "Label4");

+			doc

+					.save(ResourceUtilities

+							.newTestOutputFile("TestCreateLabel.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(LabelTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testCreateLabel() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateLabel.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Label.getSimpleIterator(form);

+			int count = 0;

+			while (iterator.hasNext()) {

+				Label label = (Label) iterator.next();

+				Assert.assertNotNull(label);

+				Assert.assertEquals("Label" + (++count), label.getName());

+				Assert.assertEquals("Label" + (count), label.getLabel());

+			}

+		} catch (Exception e) {

+			Logger.getLogger(LabelTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveLabel() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateLabel.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Label.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				Label label = (Label) iterator.next();

+				if (label.getName().equals("Label2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			Label find = null;

+			while (iterator.hasNext()) {

+				Label label = (Label) iterator.next();

+				if (label.getName().equals("Label2")) {

+					find = label;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveLabel.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(LabelTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testSetLabelRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateLabel.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Label.getSimpleIterator(form);

+			Label find = null;

+			while (iterator.hasNext()) {

+				Label label = (Label) iterator.next();

+				if (label.getName().equals("Label2")) {

+					find = label;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetLabelRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(LabelTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateLabel.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Label.getSimpleIterator(form);

+			Label find = null;

+			while (iterator.hasNext()) {

+				Label label = (Label) iterator.next();

+				if (label.getName().equals("Label2")) {

+					find = label;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.AS_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.BASELINE,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetLabelAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(LabelTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+	@Test

+	public void testSetLabel() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateLabel.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = Label.getSimpleIterator(form);

+			Label find = null;

+			while (iterator.hasNext()) {

+				Label label = (Label) iterator.next();

+				if (label.getName().equals("Label3")) {

+					find = label;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// set new label

+			String newLabel = "Change the content of Label 4.";

+			find.setLabel(newLabel);

+			Assert.assertEquals(newLabel, find.getLabel());

+			// set null value

+			find.setLabel(null);

+			Assert.assertEquals("", find.getLabel());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetLabelLabel.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(LabelTest.class.getName()).log(Level.SEVERE, null,

+					e);

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/ListBoxTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/ListBoxTest.java
new file mode 100644
index 0000000..1fcd7e1
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/ListBoxTest.java
@@ -0,0 +1,273 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormCommandType;

+import org.odftoolkit.simple.form.FormTypeDefinition.FormListSourceType;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class ListBoxTest {

+	private static final FrameRectangle listBoxRtg = new FrameRectangle(0.5752,

+			0.1429, 2.3307, 0.8398, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+

+			// list box1

+			FormControl listBox = form.createListBox(doc, listBoxRtg, "list1",

+					true, false);

+			String[] items = { "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh",

+					"ii", "jj" };

+			((ListBox) listBox).addItems(items);

+

+			// list box2

+			Paragraph para = doc.addParagraph("Insert a list box here.");

+			listBox = form

+					.createListBox(para, listBoxRtg, "list2", false, true);

+			form.setDataSource("Bibliography");

+			form.setCommandType(FormCommandType.TABLE);

+			form.setCommand("biblio");

+			((ListBox) listBox).setListSourceType(FormListSourceType.SQL);

+			((ListBox) listBox)

+					.setListSource("SELECT \"Publisher\", \"Identifier\" FROM \"biblio\"");

+			((ListBox) listBox).setDataField("Author");

+			listBox.setAnchorType(AnchorType.AS_CHARACTER);

+

+			// list box3

+			Table table = Table.newTable(doc, 2, 2);

+			table.setTableName("Table");

+			Cell cell = table.getCellByPosition("B1");

+			para = cell.addParagraph("Insert a list box here.");

+			form.createListBox(para, listBoxRtg, "list3", false, true);

+

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestCreateListBox.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(ListBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCreateListBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateListBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ListBox.getSimpleIterator(form);

+			int count = 0;

+

+			// list1

+			ListBox listBox = (ListBox) iterator.next();

+			Assert.assertNotNull(listBox);

+			Assert.assertEquals("list" + (++count), listBox.getName());

+			ArrayList<String> entries = listBox.getEntries();

+			Assert.assertEquals("aa", entries.get(0));

+			Assert.assertEquals("jj", entries.get(entries.size() - 1));

+

+			// list2

+			listBox = (ListBox) iterator.next();

+			Assert.assertNotNull(listBox);

+			Assert.assertEquals("list" + (++count), listBox.getName());

+			Assert.assertEquals(

+					"SELECT \"Publisher\", \"Identifier\" FROM \"biblio\"",

+					listBox.getListSource());

+			Assert.assertEquals(FormListSourceType.SQL, listBox

+					.getListSourceType());

+			Assert.assertEquals("Author", listBox.getDataField());

+

+			// list3

+			listBox = (ListBox) iterator.next();

+			Assert.assertNotNull(listBox);

+			Assert.assertEquals("list" + (++count), listBox.getName());

+			Assert.assertEquals(textDoc.getTableByName("Table")

+					.getCellByPosition("B1").getParagraphByIndex(0, true)

+					.getOdfElement(), listBox.getDrawControl()

+					.getContainerElement());

+

+		} catch (Exception e) {

+			Logger.getLogger(ListBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveListBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateListBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ListBox.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				ListBox list = (ListBox) iterator.next();

+				if (list.getName().equals("list2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			ListBox find = null;

+			while (iterator.hasNext()) {

+				ListBox listbox = (ListBox) iterator.next();

+				if (listbox.getName().equals("list2")) {

+					find = listbox;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveListBox.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ListBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetListBoxRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateListBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ListBox.getSimpleIterator(form);

+			ListBox find = null;

+			while (iterator.hasNext()) {

+				ListBox listbox = (ListBox) iterator.next();

+				if (listbox.getName().equals("list2")) {

+					find = listbox;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetListBoxRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ListBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateListBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ListBox.getSimpleIterator(form);

+			ListBox find = null;

+			while (iterator.hasNext()) {

+				ListBox listbox = (ListBox) iterator.next();

+				if (listbox.getName().equals("list3")) {

+					find = listbox;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.AS_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.BASELINE,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetListBoxAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ListBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetProperties() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateListBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = ListBox.getSimpleIterator(form);

+			ListBox find = null;

+			while (iterator.hasNext()) {

+				ListBox listbox = (ListBox) iterator.next();

+				if (listbox.getName().equals("list2")) {

+					find = listbox;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// set new name

+			String newName = "list4";

+			find.setName(newName);

+			Assert.assertEquals(newName, find.getName());

+			// set drop-down visibility

+			find.setFormDropdown(false);

+			Assert.assertEquals(false, find.getFormDropdown());

+			// set multi-selection

+			find.setFormMultiSelection(true);

+			Assert.assertEquals(true, find.getFormMultiSelection());

+			// set list source

+			String sql = "SELECT DISTINCT \"ISBN\" FROM \"biblio\" ";

+			find.setListSource(sql);

+			Assert.assertEquals(sql, find.getListSource());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetListBoxProperties.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(ListBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/RadioButtonTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/RadioButtonTest.java
new file mode 100644
index 0000000..704cbf6
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/RadioButtonTest.java
@@ -0,0 +1,309 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class RadioButtonTest {

+	private final static FrameRectangle radioRtg = new FrameRectangle(0.7972,

+			1.2862, 2.4441, 0.2669, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+

+			// radiobox 1

+			RadioButton radiobutton = (RadioButton) form.createRadioButton(doc,

+					radioRtg, "RadioGroup1", "RadioButton 1", "1");

+

+			// radiobutton 2

+			Paragraph para = doc

+					.addParagraph("RadioButton2 anchor to heading.");

+			para.applyHeading();

+			form.createRadioButton(para, radioRtg, "RadioGroup1",

+					"RadioButton 2", "2");

+

+			// radiobutton 3

+			para = doc.addParagraph("Insert radiobutton3 here, as_char.");

+			radiobutton = (RadioButton) form.createRadioButton(para, radioRtg,

+					"RadioGroup1", "RadioButton 3", "3");

+			radiobutton.setCurrentSelected(true);

+			radiobutton.setAnchorType(AnchorType.AS_CHARACTER);

+

+			Table table1 = Table.newTable(doc, 2, 2);

+			Cell cell = table1.getCellByPosition("B1");

+			para = cell.addParagraph("Insert a check box here.");

+			form.createRadioButton(para, radioRtg, "RadioGroup1",

+					"RadioButton 4", "4");

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestCreateRadioButton.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCreateRadioButton() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			int count = 0;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				Assert.assertNotNull(radio);

+				Assert.assertEquals("RadioGroup1", radio.getName());

+				Assert.assertEquals("RadioButton " + (++count), radio

+						.getLabel());

+			}

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveRadioButton() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			RadioButton find = null;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 2")) {

+					find = radio;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveRadioButton.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetRadioButtonRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			RadioButton find = null;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 2")) {

+					find = radio;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetRadioButtonRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			RadioButton find = null;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 3")) {

+					find = radio;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.TO_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.PARAGRAPH,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+			Assert.assertEquals(HorizontalRelative.PARAGRAPH,

+					graphicPropertiesForWrite.getHorizontalRelative());

+			Assert.assertEquals(FrameHorizontalPosition.CENTER,

+					graphicPropertiesForWrite.getHorizontalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetRadioButtonAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetLabel() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			RadioButton find = null;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 4")) {

+					find = radio;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// set new label

+			String newLabel = "Change the content of RadioButton 4.";

+			find.setLabel(newLabel);

+			Assert.assertEquals(newLabel, find.getLabel());

+			// set null value

+			find.setLabel(null);

+			Assert.assertEquals("", find.getLabel());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetRadioButtonLabel.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCheckedState() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			RadioButton find = null;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 3")) {

+					find = radio;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// validate

+			Assert.assertEquals(true, find.getCurrentSelected());

+

+			find.setCurrentSelected(false);

+			Assert.assertEquals(false, find.getCurrentSelected());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetRadioButtonState.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetValue() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateRadioButton.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = RadioButton

+					.getSimpleIterator(form);

+			RadioButton find = null;

+			while (iterator.hasNext()) {

+				RadioButton radio = (RadioButton) iterator.next();

+				if (radio.getLabel().equals("RadioButton 1")) {

+					find = radio;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// validate

+			Assert.assertEquals("1", find.getValue());

+

+			find.setValue("15");

+			Assert.assertEquals("15", find.getValue());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetRadioButtonValue.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(RadioButtonTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/form/TextBoxTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/form/TextBoxTest.java
new file mode 100644
index 0000000..a4286d5
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/form/TextBoxTest.java
@@ -0,0 +1,240 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+*/

+

+package org.odftoolkit.simple.form;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.BeforeClass;

+import org.junit.Test;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.draw.ControlStyleHandler;

+import org.odftoolkit.simple.draw.FrameRectangle;

+import org.odftoolkit.simple.style.GraphicProperties;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AnchorType;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;

+import org.odftoolkit.simple.table.Cell;

+import org.odftoolkit.simple.table.Table;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+

+public class TextBoxTest {

+	private static final FrameRectangle textBoxRtg = new FrameRectangle(0.5,

+			0.2846, 2.9432, 0.8567, SupportedLinearMeasure.IN);

+

+	@BeforeClass

+	public static void createForm() {

+		try {

+			TextDocument doc = TextDocument.newTextDocument();

+			Form form = doc.createForm("Test Form");

+			// textbox1

+			form.createTextBox(doc, textBoxRtg, "TextBox1", "TextBox1", true);

+

+			// textbox2

+			Paragraph para = doc.addParagraph("Insert a text box here.");

+			FormControl textBox = form.createTextBox(para, textBoxRtg,

+					"TextBox2", "TextBox2", false);

+			textBox.setAnchorType(AnchorType.TO_CHARACTER);

+

+			// textbox3

+			Table table = Table.newTable(doc, 2, 2);

+			Cell cell = table.getCellByPosition("B1");

+			para = cell.addParagraph("Insert a text box here.");

+			form.createTextBox(para, textBoxRtg, "TextBox3", "TextBox3", false);

+			

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestCreateTextBox.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testCreateCheckBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateTextBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = CheckBox.getSimpleIterator(form);

+			int count = 0;

+			while (iterator.hasNext()) {

+				TextBox textBox = (TextBox) iterator.next();

+				Assert.assertNotNull(textBox);

+				Assert.assertEquals("TextBox" + (++count), textBox.getName());

+				Assert.assertEquals("TextBox" + (count), textBox

+						.getCurrentValue());

+			}

+		} catch (Exception e) {

+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+

+	}

+

+	@Test

+	public void testRemoveCheckBox() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateTextBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = TextBox.getSimpleIterator(form);

+			while (iterator.hasNext()) {

+				TextBox textBox = (TextBox) iterator.next();

+				if (textBox.getName().equals("TextBox2")) {

+					iterator.remove();

+					break;

+				}

+			}

+			CheckBox find = null;

+			while (iterator.hasNext()) {

+				CheckBox textBox = (CheckBox) iterator.next();

+				if (textBox.getName().equals("TextBox2")) {

+					find = textBox;

+					break;

+				}

+			}

+			Assert.assertNull(find);

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestRemoveTextBox.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetTextBoxRectangle() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateTextBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = TextBox.getSimpleIterator(form);

+			TextBox find = null;

+			while (iterator.hasNext()) {

+				TextBox textBox = (TextBox) iterator.next();

+				if (textBox.getName().equals("TextBox2")) {

+					find = textBox;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setRectangle(new FrameRectangle(2.25455, 5, 3, 0.5,

+					SupportedLinearMeasure.IN));

+			Assert.assertEquals(3.0, find.getRectangle().getWidth());

+			Assert.assertEquals(0.5, find.getRectangle().getHeight());

+			Assert.assertEquals(5.0, find.getRectangle().getY());

+			Assert.assertEquals(2.2546, find.getRectangle().getX());

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetTextBoxRectangle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetAnchorType() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateTextBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = TextBox.getSimpleIterator(form);

+			TextBox find = null;

+			while (iterator.hasNext()) {

+				TextBox textBox = (TextBox) iterator.next();

+				if (textBox.getName().equals("TextBox3")) {

+					find = textBox;

+					break;

+				}

+			}

+			Assert.assertNotNull(find);

+			// change the bounding box

+			find.setAnchorType(AnchorType.AS_CHARACTER);

+			// validate

+			ControlStyleHandler frameStyleHandler = find.getDrawControl()

+					.getStyleHandler();

+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler

+					.getGraphicPropertiesForWrite();

+			Assert.assertEquals(VerticalRelative.BASELINE,

+					graphicPropertiesForWrite.getVerticalRelative());

+			Assert.assertEquals(FrameVerticalPosition.TOP,

+					graphicPropertiesForWrite.getVerticalPosition());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetTextBoxAnchorType.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+

+	@Test

+	public void testSetTextContent() {

+		try {

+			TextDocument textDoc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream("TestCreateTextBox.odt"));

+			Form form = textDoc.getFormByName("Test Form");

+			Iterator<FormControl> iterator = TextBox.getSimpleIterator(form);

+			TextBox textbox1 = null;

+			while (iterator.hasNext()) {

+				TextBox textBox = (TextBox) iterator.next();

+				if (textBox.getName().equals("TextBox1")) {

+					textbox1 = textBox;

+					break;

+				}

+			}

+			TextBox textbox3 = null;

+			while (iterator.hasNext()) {

+				TextBox textBox = (TextBox) iterator.next();

+				if (textBox.getName().equals("TextBox3")) {

+					textbox3 = textBox;

+					break;

+				}

+			}

+			Assert.assertNotNull(textbox3);

+			Assert.assertNotNull(textbox1);

+			// set one-line text

+			String textOneLine = "Input text content into this text box.";

+			textbox3.setCurrentValue(textOneLine);

+			Assert.assertEquals(textOneLine, textbox3.getCurrentValue());

+			// set multi-line textString

+			String textMultiLine = "This text box allow input multi-line content.\n This is the second line.";

+			textbox1.setCurrentValue(textMultiLine);

+			Assert.assertEquals(textMultiLine, textbox1.getCurrentValue());

+			// set null value

+			textbox3.setCurrentValue(null);

+			Assert.assertEquals("", textbox3.getCurrentValue());

+

+			textDoc.save(ResourceUtilities

+					.newTestOutputFile("TestSetTextBoxContent.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TextBoxTest.class.getName()).log(Level.SEVERE,

+					null, e);

+		}

+	}

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/integrationtest/JarManifestIT.java b/trunk/simple/src/test/java/org/odftoolkit/simple/integrationtest/JarManifestIT.java
new file mode 100644
index 0000000..caa9136
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/integrationtest/JarManifestIT.java
@@ -0,0 +1,84 @@
+/************************************************************************
+ *
+ * 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.simple.integrationtest;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.JarManifest;
+
+public class JarManifestIT {
+
+	private static final Logger LOG = Logger.getLogger(JarManifestIT.class.getName());
+
+	@Test
+	public void testJar() {
+		try {
+			String command = "java -jar target/simple.jar";
+			Process process = Runtime.getRuntime().exec(command);
+			process.waitFor();
+			BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+			BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+			String line;
+			while ((line = errorReader.readLine()) != null) {
+				LOG.info(line);
+				Assert.assertTrue(line.indexOf("Exception") == -1);
+			}
+			String firstOutputLine = outputReader.readLine();
+			String secondOutputLine = outputReader.readLine();
+			errorReader.close();
+			outputReader.close();
+			process.destroy();
+			LOG.log(Level.INFO, "The version info from commandline given by {0} is:\n", command);
+			LOG.log(Level.INFO, "\"{0}\"", firstOutputLine);
+			LOG.log(Level.INFO, "\"{0}\"", secondOutputLine);
+			Assert.assertEquals(firstOutputLine, JarManifest.getSimpleOdfTitle() + " (build " + JarManifest.getSimpleOdfBuildDate() + ')');
+			Assert.assertEquals(secondOutputLine, "from " + JarManifest.getSimpleOdfWebsite() + " supporting ODF " + JarManifest.getSimpleOdfSupportedOdfVersion());
+
+			LOG.log(Level.INFO, "\nJarManifest.getName(): {0}", JarManifest.getSimpleOdfName());
+			Assert.assertNotNull(JarManifest.getSimpleOdfName());
+
+			LOG.log(Level.INFO, "\nJarManifest.getTitle(): {0}", JarManifest.getSimpleOdfTitle());
+			Assert.assertNotNull(JarManifest.getSimpleOdfTitle());
+
+			LOG.log(Level.INFO, "\nJarManifest.getVersion(): {0}", JarManifest.getSimpleOdfVersion());
+			Assert.assertNotNull(JarManifest.getSimpleOdfVersion());
+
+			LOG.log(Level.INFO, "\nJarManifest.getBuildDate(): {0}", JarManifest.getSimpleOdfBuildDate());
+			Assert.assertNotNull(JarManifest.getSimpleOdfBuildDate());
+
+			LOG.log(Level.INFO, "\nJarManifest.getBuildResponsible(): {0}", JarManifest.getSimpleOdfBuildResponsible());
+			Assert.assertNotNull(JarManifest.getSimpleOdfBuildResponsible());
+
+			LOG.log(Level.INFO, "\nJarManifest.getSupportedOdfVersion(): {0}", JarManifest.getSimpleOdfSupportedOdfVersion());
+			Assert.assertNotNull(JarManifest.getSimpleOdfSupportedOdfVersion());
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/integrationtest/PerformanceIT.java b/trunk/simple/src/test/java/org/odftoolkit/simple/integrationtest/PerformanceIT.java
new file mode 100644
index 0000000..6374ecd
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/integrationtest/PerformanceIT.java
@@ -0,0 +1,371 @@
+/* 
+  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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+package org.odftoolkit.simple.integrationtest;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.w3c.dom.NodeList;
+
+public class PerformanceIT {
+
+	private static final Logger LOG = Logger.getLogger(PerformanceIT.class.getName());
+	private static String TEST_FILE_FOLDER;
+	private static String[] TEST_FILE_NAME;
+	//private static final String timesheetTemplate = "timesheetTemplate.ods";
+	//private static final String memorysheetTemplate = "memorysheetTemplate.ods";
+	private double[] totalTime = new double[3];
+	private double[] totalLoadTimeForEach = null;
+	private double[] totalSaveTimeForEach = null;
+	private double[] totalParseTimeForEach = null;
+	private double[] memoryfootprint = null;
+	private String time_spreadsheet = null;
+	private String memory_spreadsheet = null;
+	private String REPORT_FILE_FOLDER = null;
+	private int count = 1;
+	private String testTag = "new test";
+
+	public PerformanceIT() {
+		TEST_FILE_FOLDER = PerformanceIT.class.getClassLoader().getResource("").getPath()
+				+ System.getProperty("testresourcefolder")
+				+ File.separatorChar;
+
+		testTag = System.getProperty("testflag");
+		String executeTimesTest = System.getProperty("executetimes");
+		if (executeTimesTest != null) {
+			count = Integer.parseInt(executeTimesTest);
+		}
+
+		REPORT_FILE_FOLDER = getOutputPath() + File.separatorChar;
+
+		memory_spreadsheet = REPORT_FILE_FOLDER + "memorylog.ods";
+		time_spreadsheet = REPORT_FILE_FOLDER + "timelog.ods";
+
+	}
+
+	private String getOutputPath() {
+		File rootpath = new File(PerformanceIT.class.getClassLoader().getResource("").getPath());
+		File parent = rootpath.getParentFile();
+		File outputpath = new File(parent, "performance-reports");
+		if (!outputpath.exists()) {
+			outputpath.mkdir();
+		}
+		return outputpath.getPath();
+	}
+
+	@Test
+	public void testPerformance() {
+		try {
+			init();
+			// 1. Collect Test result
+			test();
+			// 2. Save to spreadsheet
+			writeToLog();
+		} catch (Exception e) {
+			Logger.getLogger(PerformanceIT.class.getName()).log(Level.SEVERE, null, e);
+
+		}
+	}
+
+	private void init() {
+
+		readFileList(TEST_FILE_FOLDER);
+		if (TEST_FILE_NAME == null) {
+			return;
+		}
+
+		totalTime[0] = 0;
+		totalTime[1] = 0;
+		totalTime[2] = 0;
+
+		totalLoadTimeForEach = new double[TEST_FILE_NAME.length];
+		totalSaveTimeForEach = new double[TEST_FILE_NAME.length];
+		totalParseTimeForEach = new double[TEST_FILE_NAME.length];
+		memoryfootprint = new double[TEST_FILE_NAME.length * 3];
+
+		for (int i = 0; i < TEST_FILE_NAME.length; i++) {
+			totalLoadTimeForEach[i] = 0;
+			totalSaveTimeForEach[i] = 0;
+			totalParseTimeForEach[i] = 0;
+			memoryfootprint[3 * i] = 0;
+			memoryfootprint[3 * i + 1] = 0;
+			memoryfootprint[3 * i + 2] = 0;
+		}
+
+	}
+
+	private void readFileList(String folder) {
+		String filename;
+
+		LOG.log(Level.INFO, "[PerformaceTest] Reading test documents from {0}", folder);
+		File myFolder = new File(folder);
+		if (!myFolder.isDirectory()) {
+			return;
+		}
+		File[] files = myFolder.listFiles();
+		ArrayList myList = new ArrayList();
+
+		for (int i = 0; i < files.length; i++) {
+			filename = files[i].getName();
+			if (filename.endsWith("ods") || filename.endsWith("odp") || filename.endsWith("odt")) {
+				myList.add(filename);
+			}
+			//TEST_FILE_NAME[i]=files[i].getName();
+			//LOG.info("name="+TEST_FILE_NAME[i]);
+		}
+
+		LOG.log(Level.INFO, "[PerformaceTest] {0} test files are loaded", myList.size());
+		if (myList.size() > 0) {
+			TEST_FILE_NAME = (String[]) myList.toArray(new String[1]);
+		}
+	}
+
+	private void writeToLog() throws Exception {
+		FileInputStream timefile, memoryfile;
+		Document timedoc, memorydoc;
+
+		if (TEST_FILE_NAME == null) {
+			return;
+		}
+
+		try {
+			timefile = new FileInputStream(time_spreadsheet);
+			timedoc = Document.loadDocument(timefile);
+		} catch (FileNotFoundException e) {
+			//Create an empty spreadsheet
+			timedoc = SpreadsheetDocument.newSpreadsheetDocument();
+			OfficeSpreadsheetElement spreadsheet = (OfficeSpreadsheetElement) timedoc.getContentDom().getElementsByTagNameNS(
+					OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+			spreadsheet.removeChild(spreadsheet.getFirstChild());
+		}
+
+		try {
+			memoryfile = new FileInputStream(memory_spreadsheet);
+			memorydoc = Document.loadDocument(memoryfile);
+		} catch (FileNotFoundException e) {
+			//Create an empty spreadsheet
+			memorydoc = SpreadsheetDocument.newSpreadsheetDocument();
+			OfficeSpreadsheetElement spreadsheet = (OfficeSpreadsheetElement) memorydoc.getContentDom().getElementsByTagNameNS(
+					OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+			spreadsheet.removeChild(spreadsheet.getFirstChild());
+		}
+
+		String[] summaryName = new String[]{"Load All Documents", "Parse All Documents", "Save All Documents"};
+		updateTableCells(timedoc, "Summary", totalTime, summaryName);
+		updateTableCells(timedoc, "Load ODF", totalLoadTimeForEach, TEST_FILE_NAME);
+		updateTableCells(timedoc, "Parse ODF", totalParseTimeForEach, TEST_FILE_NAME);
+		updateTableCells(timedoc, "Save ODF", totalSaveTimeForEach, TEST_FILE_NAME);
+
+		String[] memorylabel = new String[TEST_FILE_NAME.length * 3];
+		for (int i = 0; i < TEST_FILE_NAME.length; i++) {
+			memorylabel[3 * i] = "load " + TEST_FILE_NAME[i];
+			memorylabel[3 * i + 1] = "parse " + TEST_FILE_NAME[i];
+			memorylabel[3 * i + 2] = "save " + TEST_FILE_NAME[i];
+		}
+		updateTableCells(memorydoc, "Memory footprint", memoryfootprint, memorylabel);
+
+		timedoc.save(time_spreadsheet);
+		LOG.log(Level.INFO, "[PerformaceTest] Test results are written to {0}", time_spreadsheet);
+		memorydoc.save(memory_spreadsheet);
+		LOG.log(Level.INFO, "[PerformaceTest] Test results are written to {0}", memory_spreadsheet);
+	}
+
+	private void updateTableCells(Document odfdoc, String tablename,
+			double[] values, String[] labels) {
+		int i = 0, j = 0;
+		TableTableRowElement td;
+		TableTableCellElement cell;
+		OdfFileDom dom;
+		NodeList tableList;
+		TableTableElement myTable;
+		NodeList lst;
+		OdfTextParagraph p;
+		OfficeSpreadsheetElement spreadsheet = null;
+
+		try {
+			dom = odfdoc.getContentDom();
+			tableList = dom.getElementsByTagNameNS(
+					OdfDocumentNamespace.TABLE.getUri(), "table");
+			spreadsheet = (OfficeSpreadsheetElement) dom.getElementsByTagNameNS(
+					OdfDocumentNamespace.OFFICE.getUri(), "spreadsheet").item(0);
+
+			i = 0;
+			if (tableList.getLength() > 0) {
+				for (; i < tableList.getLength(); i++) {
+					String currentname = ((TableTableElement) tableList.item(i)).getTableNameAttribute();
+					if (currentname == null) {
+						currentname = "";
+					}
+					if (currentname.equalsIgnoreCase(tablename)) {
+						break;
+					}
+				}
+			}
+			if (i < tableList.getLength()) //table with the specific table name is found
+			{
+				myTable = (TableTableElement) tableList.item(i);
+			} else { //table with the specific table name is not found. Create table
+				myTable = dom.newOdfElement(TableTableElement.class);
+				myTable.setTableNameAttribute(tablename);
+				spreadsheet.appendChild(myTable);
+			}
+
+			lst = myTable.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table-row");
+			if (lst.getLength() == 0) { //the first table row is not existed. Create table row
+				td = dom.newOdfElement(TableTableRowElement.class);
+				cell = dom.newOdfElement(TableTableCellElement.class);
+				p = dom.newOdfElement(OdfTextParagraph.class);
+				if (tablename.startsWith("Memory")) {
+					p.setTextContent("memory(b)");
+				} else {
+					p.setTextContent("time(ms)");
+				}
+				td.appendChild(cell);
+				cell.appendChild(p);
+				myTable.appendChild(td);
+			} else {
+				td = (TableTableRowElement) lst.item(0); //the first table row is existed.
+			}
+			cell = dom.newOdfElement(TableTableCellElement.class);
+			td.appendChild(cell);
+			p = dom.newOdfElement(OdfTextParagraph.class);
+			p.setTextContent(testTag);
+			cell.appendChild(p);
+
+
+			for (i = 1; i < values.length + 1; i++) {
+				if (i < lst.getLength()) { //table row is existed
+					td = (TableTableRowElement) lst.item(i);
+				} else { //table row is not existed.
+					td = dom.newOdfElement(TableTableRowElement.class);
+					myTable.appendChild(td);
+					//append first cell with labels
+					cell = dom.newOdfElement(TableTableCellElement.class);
+					td.appendChild(cell);
+					p = dom.newOdfElement(OdfTextParagraph.class);
+					p.setTextContent(labels[j]);
+					cell.appendChild(p);
+				}
+				cell = dom.newOdfElement(TableTableCellElement.class);
+				cell.setOfficeValueTypeAttribute("float");
+				cell.setOfficeValueAttribute(new Double(values[j]));
+				p = dom.newOdfElement(OdfTextParagraph.class);
+				p.setTextContent(values[j] + "");
+				cell.appendChild(p);
+				td.appendChild(cell);
+				j++;
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+		}
+	}
+
+	private void firsttry() throws Exception {
+		Document doc = null;
+		OdfFileDom dom = null;
+		String filename = null;
+
+		for (int j = 0; j < TEST_FILE_NAME.length; j++) {
+			filename = TEST_FILE_FOLDER + TEST_FILE_NAME[j];
+			LOG.log(Level.INFO, "filename:{0}", filename);
+			doc = Document.loadDocument(filename);
+			dom = doc.getContentDom();
+			doc.save(filename);
+		}
+	}
+
+	private void test() throws Exception {
+		long start, end;
+		Document doc = null;
+		OdfFileDom dom = null;
+		String filename = null;
+
+		if (TEST_FILE_NAME == null) {
+			return;
+		}
+
+		firsttry();
+
+		for (int i = 0; i < count; i++) {
+			for (int j = 0; j < TEST_FILE_NAME.length; j++) {
+				filename = TEST_FILE_FOLDER + TEST_FILE_NAME[j];
+				start = System.currentTimeMillis();
+				doc = Document.loadDocument(filename);
+				end = System.currentTimeMillis();
+				totalLoadTimeForEach[j] += end - start;
+				totalTime[0] += end - start;
+				if (i == 0) {
+					System.gc();
+					memoryfootprint[3 * j] = Runtime.getRuntime().totalMemory()
+							- Runtime.getRuntime().freeMemory();
+				}
+
+				start = System.currentTimeMillis();
+				dom = doc.getContentDom();
+				end = System.currentTimeMillis();
+				totalParseTimeForEach[j] += end - start;
+				totalTime[1] += end - start;
+				if (i == 0) {
+					System.gc();
+					memoryfootprint[3 * j + 1] = Runtime.getRuntime().totalMemory()
+							- Runtime.getRuntime().freeMemory();
+				}
+
+				start = System.currentTimeMillis();
+				doc.save(filename);
+				end = System.currentTimeMillis();
+				totalSaveTimeForEach[j] += end - start;
+				totalTime[2] += end - start;
+
+				doc = null;
+				dom = null;
+				if (i == 0) {
+					System.gc();
+					memoryfootprint[3 * j + 2] = Runtime.getRuntime().totalMemory()
+							- Runtime.getRuntime().freeMemory();
+				}
+			}
+		}
+
+		for (int i = 0; i < 3; i++) {
+			totalTime[i] = totalTime[i] / count;
+		}
+
+		for (int i = 0; i < TEST_FILE_NAME.length; i++) {
+			totalLoadTimeForEach[i] = totalLoadTimeForEach[i] / count;
+			totalParseTimeForEach[i] = totalParseTimeForEach[i] / count;
+			totalSaveTimeForEach[i] = totalSaveTimeForEach[i] / count;
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/meta/MetaDocumentStatisticTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/meta/MetaDocumentStatisticTest.java
new file mode 100644
index 0000000..0660081
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/meta/MetaDocumentStatisticTest.java
@@ -0,0 +1,202 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+
+package org.odftoolkit.simple.meta;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class MetaDocumentStatisticTest {
+
+	private String filename = "metaTest.odt";
+	private TextDocument doc;
+	private OdfFileDom metadom;
+	private DocumentStatistic stat;
+	private Integer cellCount = 1;
+	private Integer characterCount = 2;
+	private Integer drawCount = 3;
+	private Integer frameCount = 4;
+	private Integer imageCount = 5;
+	private Integer nonWhitespaceCharacterCount = 6;
+	private Integer objectCount = 7;
+	private Integer oleObjectCount = 8;
+	private Integer pageCount = 9;
+	private Integer paragraphCount = 10;
+	private Integer rowCount = 11;
+	private Integer sentenceCount = 12;
+	private Integer syllableCount = 13;
+	private Integer tableCount = 14;
+	private Integer wordCount = 15;
+
+	@Before
+	public void setUp() throws Exception {
+		doc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+				.getTestResourceAsStream(filename));
+		metadom = doc.getMetaDom();
+		Meta meta = new Meta(metadom);
+		stat = meta.getDocumentStatistic();
+		if (stat == null) {
+			// the element does not exist in the metadata, add a new one
+			MetaDocumentStatisticElement statEle = meta
+					.getOfficeMetaElement().newMetaDocumentStatisticElement();
+			stat = new DocumentStatistic(statEle);
+		}
+
+	}
+
+	@Test
+	public void testGetCellCount() {
+		stat.setCellCount(cellCount);
+		Assert.assertEquals(cellCount, stat.getCellCount());
+	}
+
+	@Test
+	public void testGetCharacterCount() {
+		stat.setCharacterCount(characterCount);
+		Assert.assertEquals(characterCount, stat.getCharacterCount());
+	}
+
+	@Test
+	public void testGetDrawCount() {
+		stat.setDrawCount(drawCount);
+		Assert.assertEquals(drawCount, stat.getDrawCount());
+	}
+
+	@Test
+	public void testGetFrameCount() {
+		stat.setFrameCount(frameCount);
+		Assert.assertEquals(frameCount, stat.getFrameCount());
+	}
+
+	@Test
+	public void testGetImageCount() {
+		stat.setImageCount(imageCount);
+		Assert.assertEquals(imageCount, stat.getImageCount());
+	}
+
+	@Test
+	public void testGetNonWhitespaceCharacterCount() {
+		stat.setNonWhitespaceCharacterCount(nonWhitespaceCharacterCount);
+		Assert.assertEquals(nonWhitespaceCharacterCount, stat
+				.getNonWhitespaceCharacterCount());
+	}
+
+	@Test
+	public void testGetObjectCount() {
+		stat.setObjectCount(objectCount);
+		Assert.assertEquals(objectCount, stat.getObjectCount());
+	}
+
+	@Test
+	public void testGetOleObjectCount() {
+		stat.setOleObjectCount(oleObjectCount);
+		Assert.assertEquals(oleObjectCount, stat.getOleObjectCount());
+	}
+
+	@Test
+	public void testGetPageCount() {
+		stat.setPageCount(pageCount);
+		Assert.assertEquals(pageCount, stat.getPageCount());
+	}
+
+	@Test
+	public void testGetParagraphCount() {
+		stat.setParagraphCount(paragraphCount);
+		Assert.assertEquals(paragraphCount, stat.getParagraphCount());
+	}
+
+	@Test
+	public void testGetRowCount() {
+		stat.setRowCount(rowCount);
+		Assert.assertEquals(rowCount, stat.getRowCount());
+	}
+
+	@Test
+	public void testGetSentenceCount() {
+		stat.setSentenceCount(sentenceCount);
+		Assert.assertEquals(sentenceCount, stat.getSentenceCount());
+	}
+
+	@Test
+	public void testGetSyllableCount() {
+		stat.setSyllableCount(syllableCount);
+		Assert.assertEquals(syllableCount, stat.getSyllableCount());
+	}
+
+	@Test
+	public void testGetTableCount() {
+		stat.setTableCount(tableCount);
+		Assert.assertEquals(tableCount, stat.getTableCount());
+	}
+
+	@Test
+	public void testGetWordCount() {
+		stat.setWordCount(wordCount);
+		Assert.assertEquals(wordCount, stat.getWordCount());
+	}
+
+	@Test
+	public void testReadEmptyDocumentMeta() throws Exception {
+
+		// create a new empty document
+		doc = (TextDocument) TextDocument.newTextDocument();
+		doc
+				.save(ResourceUtilities
+						.newTestOutputFile("EmptyDocForMetaTest.odt"));
+
+		// read empty document meta
+		doc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+				.getTestResourceAsStream("EmptyDocForMetaTest.odt"));
+		metadom = doc.getMetaDom();
+		Meta meta = new Meta(metadom);
+		stat = meta.getDocumentStatistic();
+		Assert.assertNull(stat);
+
+		// create a new stat
+		MetaDocumentStatisticElement statEle = meta
+				.getOfficeMetaElement().newMetaDocumentStatisticElement();
+		stat = new DocumentStatistic(statEle);
+
+		Assert.assertNull(stat.getCellCount());
+		Assert.assertNull(stat.getCharacterCount());
+		Assert.assertNull(stat.getDrawCount());
+		Assert.assertNull(stat.getFrameCount());
+		Assert.assertNull(stat.getImageCount());
+		Assert.assertNull(stat.getNonWhitespaceCharacterCount());
+		Assert.assertNull(stat.getObjectCount());
+		Assert.assertNull(stat.getOleObjectCount());
+		Assert.assertNull(stat.getPageCount());
+		Assert.assertNull(stat.getParagraphCount());
+		Assert.assertNull(stat.getRowCount());
+		Assert.assertNull(stat.getSentenceCount());
+		Assert.assertNull(stat.getSyllableCount());
+		Assert.assertNull(stat.getTableCount());
+		Assert.assertNull(stat.getWordCount());
+
+	}
+
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/meta/OfficeMetaTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/meta/OfficeMetaTest.java
new file mode 100644
index 0000000..593c29c
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/meta/OfficeMetaTest.java
@@ -0,0 +1,302 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.meta;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.attribute.meta.MetaValueTypeAttribute.Value;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.odfdom.type.Duration;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class OfficeMetaTest {
+
+	private String filename = "metaTest.odt";
+	private TextDocument doc;
+	private OdfFileDom metadom;
+	private Meta fMetadata;
+	private String generator = "SIMPLE/" + System.getProperty("simple.version");
+	private String dctitle = "dctitle";
+	private String dcdescription = "dcdescription";
+	private String subject = "dcsubject";
+	private List<String> keywords = new ArrayList<String>();
+	private String initialCreator = "creator";
+	private String dccreator = System.getProperty("user.name");
+	private String printedBy = "persia p";
+	private String language = System.getProperty("user.language");
+	private Integer editingCycles = new Integer(4);
+	private Duration editingDuration = Duration.valueOf("P49DT11H8M9S");
+	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+
+	@Before
+	public void setUp() throws Exception {
+		doc = (TextDocument) TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(filename));
+		metadom = doc.getMetaDom();
+		fMetadata = new Meta(metadom);
+	}
+
+	@Test
+	public void testGetGenerator() throws Exception {
+		fMetadata.setGenerator(generator);
+                writeAndReload();
+		Assert.assertEquals(generator, fMetadata.getGenerator());
+	}
+
+	@Test
+	public void testGetDcTitle() throws Exception {
+		fMetadata.setTitle(dctitle);
+                writeAndReload();
+		Assert.assertEquals(dctitle, fMetadata.getTitle());
+	}
+
+	@Test
+	public void testGetDcDescription() throws Exception {
+		fMetadata.setDescription(dcdescription);
+                writeAndReload();
+		Assert.assertEquals(dcdescription, fMetadata.getDescription());
+	}
+
+	@Test
+	public void testGetSubject() throws Exception {
+		fMetadata.setSubject(subject);
+                writeAndReload();
+		Assert.assertEquals(subject, fMetadata.getSubject());
+	}
+
+	@Test
+	public void testSetAndGetKeywords() throws Exception {
+		keywords.add("lenovo2");
+		keywords.add("computer3");
+		keywords.add("think center");
+		fMetadata.setKeywords(keywords);
+		writeAndReload();
+		Assert.assertEquals(keywords, fMetadata.getKeywords());
+	}
+
+	@Test
+	public void testGetInitialCreator() throws Exception {
+		fMetadata.setInitialCreator(initialCreator);
+                writeAndReload();
+		Assert.assertEquals(initialCreator, fMetadata.getInitialCreator());
+	}
+
+	@Test
+	public void testGetDcCreator() throws Exception {
+		fMetadata.setCreator(dccreator);
+                writeAndReload();
+		Assert.assertEquals(dccreator, fMetadata.getCreator());
+	}
+
+	@Test
+	public void testGetPrintedBy() throws Exception {
+		fMetadata.setPrintedBy(printedBy);
+                writeAndReload();
+		Assert.assertEquals(printedBy, fMetadata.getPrintedBy());
+	}
+
+	@Test
+	public void testSetAndGetCreationDate() throws Exception {
+		Calendar creationDate = Calendar.getInstance();
+		fMetadata.setCreationDate(creationDate);
+		writeAndReload();
+		// //the millisecond lost while changing calendar to string
+		// creationDate.clear(Calendar.MILLISECOND);
+		// fMetadata.getCreationDate().clear(Calendar.MILLISECOND);
+		//Assert.assertEquals(0,creationDate.compareTo(fMetadata.getCreationDate
+		// ()));
+		String expected = sdf.format(creationDate.getTime());
+		String actual = sdf.format(fMetadata.getCreationDate().getTime());
+		Assert.assertEquals(expected, actual);
+	}
+
+	@Test
+	public void testSetDcDate() throws Exception {
+		Calendar dcDate = Calendar.getInstance();
+		fMetadata.setDcdate(dcDate);
+		writeAndReload();
+		// dcDate.clear(Calendar.MILLISECOND);
+		// fMetadata.getDcdate().clear(Calendar.MILLISECOND);
+		// Assert.assertEquals(0,dcDate.compareTo(fMetadata.getDcdate()));
+		String expected = sdf.format(dcDate.getTime());
+		String actual = sdf.format(fMetadata.getDcdate().getTime());
+		Assert.assertEquals(expected, actual);
+	}
+
+	@Test
+	public void testSetPrintDate() throws Exception {
+		Calendar printDate = Calendar.getInstance();
+		fMetadata.setPrintDate(printDate);
+		writeAndReload();
+		// printDate.clear(Calendar.MILLISECOND);
+		// fMetadata.getPrintDate().clear(Calendar.MILLISECOND);
+		// Assert.assertEquals(0,printDate.compareTo(fMetadata.getPrintDate()));
+		String expected = sdf.format(printDate.getTime());
+		String actual = sdf.format(fMetadata.getPrintDate().getTime());
+		Assert.assertEquals(expected, actual);
+	}
+
+	@Test
+	public void testGetLanguage() throws Exception {
+		fMetadata.setLanguage(language);
+                writeAndReload();
+		Assert.assertEquals(language, fMetadata.getLanguage());
+	}
+
+	@Test
+	public void testGetEditingCycles() throws Exception {
+		fMetadata.setEditingCycles(editingCycles);
+                writeAndReload();
+		Assert.assertNotNull(fMetadata.getEditingCycles());
+	}
+
+	@Test
+	public void testGetEditingDuration() throws Exception {
+		fMetadata.setEditingDuration(editingDuration);
+                writeAndReload();
+		Assert.assertNotNull(fMetadata.getEditingDuration());
+	}
+
+	@Test
+	public void testEmptyKeyword() throws Exception {
+		List<String> emptyKeyword = new ArrayList<String>();
+		fMetadata.setKeywords(emptyKeyword);
+		writeAndReload();
+		Assert.assertNull(fMetadata.getKeywords());
+	}
+
+	@Test
+	public void testAddKeyword() throws Exception {
+		String newKeyword = "hello";
+		fMetadata.addKeyword(newKeyword);
+		writeAndReload();
+		Assert.assertEquals(true, fMetadata.getKeywords().contains(newKeyword));
+	}
+
+	@Test
+	public void testSetAndGetUserdefinedData() throws Exception {
+		// remove if there is userdefined data
+		List<String> names;
+		names = fMetadata.getUserDefinedDataNames();
+		if (names == null) {
+			names = new ArrayList<String>();
+		} else {
+			for (String name : names) {
+				fMetadata.removeUserDefinedDataByName(name);
+			}
+			names.clear();
+		}
+		names.add("weather");
+		names.add("mood");
+		names.add("late");
+		// test set
+		fMetadata.setUserDefinedData(names.get(0), Value.STRING.toString(),
+				"windy");
+		fMetadata.setUserDefinedData(names.get(1), Value.STRING.toString(),
+				"happy");
+		fMetadata.setUserDefinedData(names.get(2), Value.BOOLEAN.toString(),
+				"false");
+		writeAndReload();
+                
+		// test get
+		Assert.assertEquals(names, fMetadata.getUserDefinedDataNames());
+		Assert.assertEquals(Value.STRING.toString(), fMetadata.getUserDefinedDataType(names.get(0)));
+		Assert.assertEquals("windy", fMetadata.getUserDefinedDataValue(names.get(0)));
+
+		fMetadata.setUserDefinedDataValue(names.get(1), "false");
+		fMetadata.setUserDefinedDataType(names.get(1), Value.BOOLEAN.toString());
+		fMetadata.setUserDefinedData(names.get(2), Value.STRING.toString(),
+				"no");
+		writeAndReload();
+		// update
+		Assert.assertEquals("false", fMetadata.getUserDefinedDataValue(names.get(1)));
+		Assert.assertEquals(Value.BOOLEAN.toString(), fMetadata.getUserDefinedDataType(names.get(1)));
+		Assert.assertEquals("no", fMetadata.getUserDefinedDataValue(names.get(2)));
+		Assert.assertEquals(Value.STRING.toString(), fMetadata.getUserDefinedDataType(names.get(2)));
+		writeAndReload();
+		// remove
+		fMetadata.removeUserDefinedDataByName(names.get(0));
+		writeAndReload();
+		Assert.assertEquals(2, fMetadata.getUserDefinedDataNames().size());
+	}
+
+	@Test
+	public void testReadEmptyDocumentMeta() throws Exception {
+
+		// create a new empty document
+		doc = TextDocument.newTextDocument();
+		doc.save(ResourceUtilities.newTestOutputFile("EmptyDocForMetaTest.odt"));
+
+		// read empty document meta
+		doc = (TextDocument) TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("EmptyDocForMetaTest.odt"));
+		metadom = doc.getMetaDom();
+		fMetadata = new Meta(metadom);
+		//Assert.assertTrue(fMetadata.getGenerator().startsWith(generator));
+		//ToDO: http://odftoolkit.org/bugzilla/show_bug.cgi?id=171
+		// Assert.assertEquals(fMetadata.getGenerator(), generator);
+		Assert.assertNull(fMetadata.getTitle());
+		Assert.assertNull(fMetadata.getDescription());
+		Assert.assertNull(fMetadata.getSubject());
+		Assert.assertNull(fMetadata.getKeywords());
+		Assert.assertNull(fMetadata.getPrintedBy());
+		Assert.assertNull(fMetadata.getPrintDate());
+		Assert.assertNotNull(fMetadata.getUserDefinedDataNames());
+	}
+	
+	@Test
+	public void testReadDocumentMeta() throws Exception {
+		// create a new empty document
+		TextDocument textDoc = TextDocument.newTextDocument();
+		textDoc.save(ResourceUtilities.newTestOutputFile("DocForMetaTest.odt"));
+		textDoc.close();
+		// read empty document meta
+		textDoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("DocForMetaTest.odt"));
+		Meta meta = textDoc.getOfficeMetadata();
+		Assert.assertNotNull(meta.getGenerator());
+		Assert.assertNotNull(meta.getCreationDate());
+		Assert.assertNotNull(meta.getCreator());
+		Assert.assertNotNull(meta.getDcdate());
+		Assert.assertTrue(meta.getEditingCycles()>0);
+		Assert.assertNotNull(meta.getEditingDuration());
+		Assert.assertNotNull(meta.getLanguage());
+		textDoc.close();
+	}
+        
+    private void writeAndReload() throws Exception {
+        File persistedDocument = File.createTempFile(getClass().getName(), ".odt");
+        persistedDocument.deleteOnExit();
+	doc.save(persistedDocument);
+	Thread.sleep(100);
+	doc = (TextDocument) TextDocument.loadDocument(persistedDocument);
+	metadom = doc.getMetaDom();
+	fMetadata = new Meta(metadom);
+    }
+        
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/NotesTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/NotesTest.java
new file mode 100644
index 0000000..ade4f64
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/NotesTest.java
@@ -0,0 +1,76 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.presentation;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.text.list.BulletDecorator;
+import org.odftoolkit.simple.text.list.ImageDecorator;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.odftoolkit.simple.text.list.NumberDecorator;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class NotesTest {
+	PresentationDocument doc;
+	final String TEST_PRESENTATION_FILE_MAIN = "Presentation1.odp";
+
+	@Test
+	public void testAddRemoveIterateSubList() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			ListDecorator bulletDecorator = new BulletDecorator(doc);
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+			ListDecorator imageDecorator = new ImageDecorator(doc, ResourceUtilities.getURI("image_list_item.png"));
+			String[] numberItemContents = { "number item 1", "number item 2", "number item 3" };
+
+			// add list.
+			Slide slide = doc.newSlide(0, "test0", Slide.SlideLayout.TITLE_OUTLINE);
+			ListContainer container = slide.getNotesPage();
+			org.odftoolkit.simple.text.list.List bulletList = container.addList(bulletDecorator);
+			bulletList.addItems(numberItemContents);
+			org.odftoolkit.simple.text.list.List numberList = container.addList(numberDecorator);
+			numberList.addItems(numberItemContents);
+			org.odftoolkit.simple.text.list.List imageList = container.addList(imageDecorator);
+			imageList.addItems(numberItemContents);
+			// iterate list
+			Iterator<org.odftoolkit.simple.text.list.List> lists = container.getListIterator();
+			int i = 0;
+			while (lists.hasNext()) {
+				lists.next();
+				i++;
+			}
+			Assert.assertEquals(3, i);
+			// remove list
+			container.clearList();
+			Assert.assertFalse(container.getListIterator().hasNext());
+		} catch (Exception e) {
+			Logger.getLogger(NotesTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/SlideTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/SlideTest.java
new file mode 100644
index 0000000..87b5fdb
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/SlideTest.java
@@ -0,0 +1,1048 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.presentation;
+
+import java.awt.Rectangle;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.draw.DrawObjectElement;
+import org.odftoolkit.odfdom.dom.element.draw.DrawPageElement;
+import org.odftoolkit.odfdom.dom.element.office.OfficePresentationElement;
+import org.odftoolkit.odfdom.incubator.doc.draw.OdfDrawImage;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.PresentationDocument.PresentationClass;
+import org.odftoolkit.simple.chart.Chart;
+import org.odftoolkit.simple.draw.Textbox;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.TableContainer;
+import org.odftoolkit.simple.text.list.BulletDecorator;
+import org.odftoolkit.simple.text.list.ImageDecorator;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.odftoolkit.simple.text.list.NumberDecorator;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Test for Presentation Slide API, including get/move/insert/delete slide in
+ * one presentation and the slides operation of two presentations.
+ */
+public class SlideTest {
+
+	private static final Logger LOG = Logger.getLogger(SlideTest.class.getName());
+	PresentationDocument doc;
+	PresentationDocument doc2;
+	final String TEST_PRESENTATION_FILE_MAIN = "Presentation1.odp";
+	final String TEST_PRESENTATION_FILE_ANOTHER = "Presentation2.odp";
+	final String TEST_PRESENTATION_FILE_OUT_PREFIX = "SlideResult";
+	final String TEST_PRESENTATION_DOCUMENT1 = "SlideTest1.odp";
+	final String TEST_PRESENTATION_DOCUMENT2 = "SlideTest2.odp";
+	final String TEST_PRESENTATION_DOCUMENT3 = "SlideTest3.odp";
+
+	/**
+	 * Initialize the test case.
+	 */
+	public SlideTest() {
+	}
+
+	/**
+	 * Test case for get presentation slide, including get the slide count, get
+	 * the slide at the specified position or with the specified name, and get
+	 * the collection of slide.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp <b>Method</b> 1)By using
+	 * PresentationDocument.getSlideCount() to Get the number of the slides in
+	 * this presentation. 2)According to the slide count, get a slide at the
+	 * specific position of the loaded presentation document using
+	 * PresentationDocument.getSlideByIndex(int index), and the param "index"
+	 * should be limited with the slide count. Use OdfDrawPage.getSlideIndex()
+	 * method to verify the returned slide.
+	 * 3)PresentationDocument.getSlideByName(String name) 4)Using
+	 * dfPresentationDocument.getSlides() to get the slide iterator <b>Covered
+	 * Element</b> &lt;office:presentation&gt;,&lt;draw:page&gt; <b>Note</b>
+	 * PresentationDocument.getContentRoot override Document.getContentRoot
+	 * method will return OfficePresentationElement, rather than
+	 * OdfOfficePresentation because of the inheritance relationship broken up
+	 * between dom and doc element And because OdfOfficePresentation is useless,
+	 * so I delete this class <b>Code Coverage Result</b> 1)can not catch
+	 * Exception because it is only used to catch the exception thrown by
+	 * getContentRoot()
+	 */
+	@Test
+	public void testGetSlide() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			int slideCount = doc.getSlideCount();
+			Assert.assertTrue(10 == slideCount);
+			Slide page2 = doc.getSlideByIndex(2);
+			Assert.assertTrue(2 == page2.getSlideIndex());
+			Slide slide3 = doc.getSlideByName("Slide 3");
+			Assert.assertNull(slide3);
+			slide3 = doc.getSlideByName("page3");
+			Assert.assertEquals(page2, slide3);
+			Iterator<Slide> slideIter = doc.getSlides();
+			int i = 0;
+			while (slideIter.hasNext()) {
+				Slide slide = slideIter.next();
+				Assert.assertTrue(i == slide.getSlideIndex());
+				String name = "page" + (i + 1);
+				Assert.assertTrue(name.equals(slide.getSlideName()));
+				i++;
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		Slide slidesNoName = doc.getSlideByName(null);
+		Assert.assertNull(slidesNoName);
+		Slide nullSlide = doc.getSlideByIndex(20);
+		Assert.assertNull(nullSlide);
+		nullSlide = doc.getSlideByIndex(-1);
+		Assert.assertNull(nullSlide);
+
+	}
+
+	/**
+	 * Test case for get/set slide name to make sure the name is unique in the
+	 * whole presentation document. If the loaded presentation document is not
+	 * valid that contain the same slide name, we should modified the duplicate
+	 * slide name to make them unique.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp Using the dom method to make
+	 * slide index 4 and 8 have the same name, and delete the "draw:name"
+	 * attribute of slide 7. <b>Method</b> 1)By accessing any slide API to
+	 * trigger the duplicate slide name check method. After this operation,
+	 * slide 8 will change the slide name. 2)Trigger OdfDrawPage.getSlideName()
+	 * to make the slide 7 has the unique slide name. 3)Using
+	 * OdfDrawPage.setSlideName() to give the slide 1 with the new name.
+	 */
+	@Test
+	public void testSlideName() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			OfficePresentationElement contentRoot = doc.getContentRoot();
+			NodeList slideNodes = contentRoot.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "page");
+			DrawPageElement slideEle4 = (DrawPageElement) slideNodes.item(4);
+			Assert.assertEquals(slideEle4.getDrawNameAttribute(), "page5");
+			DrawPageElement slideEle8 = (DrawPageElement) slideNodes.item(8);
+			slideEle8.setDrawNameAttribute("page5");
+			Slide slide7 = doc.getSlideByIndex(7);
+			DrawPageElement slideEle7 = (DrawPageElement) slideNodes.item(7);
+			slideEle7.removeAttributeNS(OdfDocumentNamespace.DRAW.getUri(), "name");
+
+			Slide slide4 = doc.getSlideByIndex(4);
+			Assert.assertTrue(slide4.getSlideName().equals("page5"));
+			Slide slide8 = doc.getSlideByIndex(8);
+			Assert.assertFalse(slide8.getSlideName().equals("page5"));
+
+			Assert.assertTrue(slide7.getSlideName().startsWith("page8"));
+			Notes note7 = slide7.getNotesPage();
+			note7.addText("This is slide at index" + slide7.getSlideIndex() + " named " + slide7.getSlideName());
+
+			Slide slide1 = doc.getSlideByIndex(1);
+			slide1.setSlideName("haha");
+			slide1.setSlideName("page1");
+
+		} catch (IllegalArgumentException ile) {
+			Slide slide1 = doc.getSlideByIndex(1);
+			Assert.assertTrue("the given name page1 is duplicate with the previous slide", slide1.getSlideName()
+					.equals("haha"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "SlideName.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for delete presentation slide, including delete slide at the
+	 * specified position or with the specified name.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp <b>Method</b> 1)By using
+	 * PresentationDocument.deleteSlideByIndex(int index) to delete the slide at
+	 * the specified position which is present by param "index", then index of
+	 * the slide which after the delete slide will change. 2)Delete slide with
+	 * the specified name by using PresentationDocument.deleteSlideByName(String
+	 * name) <b>PostCondition</b> Save the modified document at
+	 * SlideResultDelete.odp <b>Covered Element</b> 1)
+	 * &lt;office:presentation&gt;,&lt;draw:page&gt; 2)All the element that
+	 * contains "xlink:href" attribute, such as &lt;draw:object&gt;,
+	 * &lt;draw:image&gt;, etc. 3)All the style name definition element, include
+	 * &lt;style:style&gt;, &lt;text:list-style&gt;, &lt;number:time-style&gt;,
+	 * &lt;number:date-style&gt;, &lt;number:boolean-style&gt;,
+	 * &lt;number:number-style&gt;, &lt;number:currency-style&gt;,
+	 * &lt;number:percentage-style&gt;, &lt;number:text-style&gt; 4)All the
+	 * <code>OdfStylableElement</code> which have the style name reference, such
+	 * as &lt;draw:frame&gt;, &lt;text:p&gt; etc. <b>Note</b> When the specific
+	 * slide is delete, if it referred images, ole or styles are not used by
+	 * other slide they will all be removed from the package.
+	 */
+	@Test
+	public void testDeleteSlide() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			Slide slide2 = doc.getSlideByIndex(2);
+			Slide slide3 = doc.getSlideByIndex(3);
+			// this slide contains an embed document, remove this slide will
+			// also remove the embed document
+			int nEmbedDoc = doc.getEmbeddedDocuments().size();
+			Assert.assertTrue(doc.deleteSlideByIndex(2));
+			// slide3 is no longer exist
+			Assert.assertTrue(-1 == slide2.getSlideIndex());
+			Assert.assertTrue(2 == slide3.getSlideIndex());
+			Assert.assertTrue(doc.getEmbeddedDocuments().size() == (nEmbedDoc - 1));
+			Assert.assertTrue(doc.deleteSlideByName("page5"));
+			int count = doc.getSlideCount();
+			Assert.assertTrue(8 == count);
+			// slide at index 9 contains two images and one embed document, the
+			// embed document aslo have the object replacement image
+			// remove this slide will also remove these three images
+			String IMAGE_NAME_1 = "Pictures/10000000000002580000018FB151A5C8.jpg";
+			String IMAGE_NAME_2 = "Pictures/1000000000000C80000004009305DCA3.jpg";
+			String IMAGE_NAME_3 = "ObjectReplacements/Object 13";
+			int nImageCnt = OdfDrawImage.getImageCount(doc);
+			InputStream imageStream1 = doc.getPackage().getInputStream(IMAGE_NAME_1);
+			Assert.assertNotNull(imageStream1);
+			Assert.assertTrue(doc.deleteSlideByIndex(doc.getSlideCount() - 2));
+			Assert.assertTrue(OdfDrawImage.getImageCount(doc) == (nImageCnt - 3));
+			imageStream1 = doc.getPackage().getInputStream(IMAGE_NAME_1);
+			Assert.assertNull(imageStream1);
+			InputStream imageStream2 = doc.getPackage().getInputStream(IMAGE_NAME_2);
+			Assert.assertNull(imageStream2);
+			InputStream imageStream3 = doc.getPackage().getInputStream(IMAGE_NAME_3);
+			Assert.assertNull(imageStream3);
+			// slide at index 2 at doc2 contains one image, but it also referred
+			// by other slides
+			// so the image of this slide will not be removed
+			doc2 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_ANOTHER));
+			nImageCnt = OdfDrawImage.getImageCount(doc2);
+			Assert.assertTrue(doc2.deleteSlideByIndex(2));
+			Assert.assertTrue(OdfDrawImage.getImageCount(doc2) == (nImageCnt - 1));
+			imageStream1 = doc2.getPackage().getInputStream(IMAGE_NAME_1);
+			Assert.assertNotNull(imageStream1);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			Assert.assertTrue(doc.deleteSlideByIndex(20));
+			Assert.assertTrue(false);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Delete.odp"));
+			doc2.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Delete2.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for create new slide at the specified position, with the
+	 * specified name and slide template.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp <b>Method</b>
+	 * PresentationDocument.newSlide(int index, String name,
+	 * OdfDrawPage.SlideLayout slideLayout) is used to new a slide at the
+	 * specified position with the specified name, and use the specified slide
+	 * template. <b>Postcondition</b> Save the modified document at
+	 * SlideResultNew.odp <b>Covered Element</b> 1)
+	 * &lt;style:presentation-page-layout&gt; referred by
+	 * "presentation:presentation-page-layout-name" attribute of
+	 * &lt;draw:page&gt; 2) &lt;style:master-page&gt; referred by
+	 * "draw:master-page-name" attribute of &lt;draw:page&gt; 3) The placeholder
+	 * element of &lt;draw:page&gt;, such as title, outline placeholder
+	 * <b>Note</b> The new slide will use the same master page style of the
+	 * previous slide, and add the placeholder on the slide according to the
+	 * slide template parameter.
+	 */
+	@Test
+	public void testNewSlide() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			Slide slide5 = doc.getSlideByIndex(5);
+			Slide newSlide1 = doc.newSlide(2, "Slide 2 new", Slide.SlideLayout.BLANK);
+			Assert.assertTrue(2 == newSlide1.getSlideIndex());
+			Slide newSlide2 = doc.newSlide(0, "", Slide.SlideLayout.TITLE_ONLY);
+			Assert.assertTrue(newSlide2.getSlideName().equals(""));
+			Assert.assertTrue(7 == slide5.getSlideIndex());
+			doc.newSlide(3, Slide.SlideLayout.TITLE_PLUS_TEXT.toString(), Slide.SlideLayout.enumValueOf("title_text"));
+			Slide newSlide4 = doc.newSlide(4, null, Slide.SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			Assert.assertTrue(newSlide4.getOdfElement().getDrawNameAttribute() != null);
+			Slide.SlideLayout outlineType = Slide.SlideLayout.TITLE_OUTLINE;
+			doc.newSlide(14, Slide.SlideLayout.toString(outlineType), outlineType);
+			doc.newSlide(15, "Default", null);
+			int count = doc.getSlideCount();
+			Assert.assertTrue(16 == count);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc.newSlide(20, "Slide 20 new", Slide.SlideLayout.BLANK);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "New.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for move the slide from one position to another, or copy a
+	 * specified slide and insert it to another specified position.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp
+	 * test\resources\performance\Presentation1.odp <b>Method</b> 1)Using
+	 * PresentationDocument.moveSlide(int current, int destination) to move a
+	 * slide at the current position to the destination position.
+	 * 2)PresentationDocument.copySlide(int source, int dest, String newName) is
+	 * used to make a copy of the slide at a specified position to another
+	 * position in this presentation. <b>Postcondition</b> Save the modified
+	 * document at SlideResultMoveAndCopy.odp <b>Covered Element</b> 1)
+	 * &lt;office:presentation&gt;,&lt;draw:page&gt; 2)
+	 * &lt;presentation:notes&gt; of each slide. <b>Note</b> Each slide has its
+	 * own notes page to show its notes view, while the notes page has the
+	 * "draw:page-number" attribute to show the notes view of which slide so
+	 * when the slide is moved or copied, the index of this slide will be
+	 * change, the notes page have to change the "draw:page-number" value.
+	 */
+	@Test
+	public void testMoveAndCopySlide() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			Slide lastSlide = doc.getSlideByIndex(9);
+			Slide firstSlide = doc.getSlideByIndex(0);
+
+			Slide copyFirstToLastSlide = doc.copySlide(0, 10, firstSlide.getSlideName() + "(copy)");
+			Assert.assertTrue(10 == copyFirstToLastSlide.getSlideIndex());
+
+			Slide copyLastToFirstSlide = doc.copySlide(9, 0, lastSlide.getSlideName() + "(copy)");
+			Assert.assertTrue(0 == copyLastToFirstSlide.getSlideIndex());
+
+			doc.moveSlide(11, 0);
+			doc.moveSlide(1, 12);
+			Assert.assertTrue(1 == firstSlide.getSlideIndex());
+			Assert.assertTrue(10 == lastSlide.getSlideIndex());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc.moveSlide(20, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.moveSlide(-1, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.copySlide(20, 0, "outofbounds");
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.copySlide(-1, 0, "outofbounds");
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "MoveAndCopy.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for copy a slide which comes from the other presentation to the
+	 * specified position of the current presentation.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp &
+	 * test\resources\performance\Presentation2.odp <b>Method</b> Using
+	 * PresentationDocument.copyForeignSlide(int destIndex,PresentationDocument
+	 * srcDoc, int srcIndex) to copy a slide which locates at "srcIndex"
+	 * position of the "srcDoc" presentation document and insert it to the
+	 * current presentation document at "destIndex" position.
+	 * <b>Postcondition</b> Save the modified document at
+	 * SlideResultCopyForeignSlide.odp <b>Covered Element</b> 1)
+	 * &lt;office:presentation&gt;,&lt;draw:page&gt; 2) All the element that
+	 * contains "xlink:href" attribute, such as &lt;draw:object&gt;,
+	 * &lt;draw:image&gt;, etc. 3) Each style definition element of
+	 * &lt;draw:page&gt; and its all child elements such as layout style, master
+	 * page style, object style and text style the style definition element must
+	 * contain "style:name" or "draw:name" attribute, include
+	 * &lt;style:mater-page
+	 * &gt;,&lt;style:page-layout&gt;,&lt;style:presentation-page-layout&gt;,
+	 * &lt;style:style&gt;, &lt;text:list-style&gt;, &lt;number:time-style&gt;,
+	 * &lt;number:date-style&gt;, &lt;number:boolean-style&gt;,
+	 * &lt;number:number-style&gt;, &lt;number:currency-style&gt;,
+	 * &lt;number:percentage-style&gt;, &lt;number:text-style&gt;,
+	 * &lt;text:outline-style&gt;,&lt;style:font-face&gt;, 4) the element which
+	 * refer the style name, that is &lt;draw:page&gt; and all the child
+	 * elements. <b>Note</b> If the copied style/image/ole name is duplicated
+	 * with destination presentation document, the name definition element and
+	 * reference element must be renamed then insert to the dest document.
+	 */
+	@Test
+	public void testCopyForeignSlide() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			doc2 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_ANOTHER));
+
+			// copy slide at index 2 of doc to the index 2 of doc2
+			int nEmbedDoc = doc2.getEmbeddedDocuments().size();
+			String embedDocName = "Object 3/";
+			OdfFileEntry fileEntry = doc2.getPackage().getFileEntry(embedDocName);
+			Assert.assertNull(fileEntry);
+			Slide newPage1 = doc2.copyForeignSlide(2, doc, 2);
+			Assert.assertTrue(2 == newPage1.getSlideIndex());
+			// slide at index 2 of doc contains an embedded document called
+			// "Object 3"
+			Document embedDoc = doc2.getEmbeddedDocument(embedDocName);
+			Assert.assertNotNull(embedDoc);
+			int size = doc2.getEmbeddedDocuments().size();
+			Assert.assertTrue(size == (nEmbedDoc + 1));
+			// the copied slide also have an bitmap background, and the image
+			// bullet
+			// they should all be copied
+			String BACKGROUND_IMAGE_NAME = "Pictures/1000000000000C80000004009305DCA3.jpg";
+			String BULLET_IMAGE_NAME = "Pictures/10000000000002580000018FB151A5C8.jpg";
+			InputStream backgroundImage = doc2.getPackage().getInputStream(BACKGROUND_IMAGE_NAME);
+			Assert.assertNotNull(backgroundImage);
+			// copy the slide at index 2 of doc to the end of doc2
+			Slide newPage2 = doc2.copyForeignSlide(101, doc, 2);
+			Assert.assertNotNull(doc2.getPackage().getFileEntry(BULLET_IMAGE_NAME));
+			Assert.assertFalse(newPage1.getSlideName().equals(newPage2.getSlideName()));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+		try {
+			doc2.copyForeignSlide(200, doc, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc2.copyForeignSlide(-1, doc, 0);
+		} catch (IndexOutOfBoundsException iobe) {
+			Assert.assertTrue("slide index is out of bounds", true);
+		}
+
+		try {
+			doc2.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "CopyForeignSlide2.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for appending all the slide of one presentation to the end of
+	 * another presentation.
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\Presentation1.odp &
+	 * test\resources\performance\Presentation2.odp <b>Method</b> Using
+	 * PresentationDocument.appendPresentation(PresentationDocument aDoc) to
+	 * append the specified presentation to the current presentation.
+	 * <b>Postcondition</b> Save the modified document at SlideResultMerge.odp
+	 * <b>Covered Element</b> Same with <code>CopyForeignSlide</code> method,
+	 * except that it covers all the slide element of the document,rather than
+	 * specific slide. <b>Note</b> 1)You'd better check the generated document
+	 * to look at if there are any object/style is lost. 2) The generated file
+	 * size will be larger than we append by using OpenOffice/Symphony, that is
+	 * because the styles and images from the different document might have the
+	 * same content, but I still append them rather than use one copy, because
+	 * compare the odf element content and the image stream might cost much
+	 * time.
+	 */
+	@Test
+	public void testAppendPresentation() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			doc2 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_ANOTHER));
+			int slideCount = doc.getSlideCount();
+			int slideCount2 = doc2.getSlideCount();
+			// doc, doc2 both have the embed document named "Object 2"
+			// with different content, so after appendPresentation,
+			// the embedded doc "Object 2" of doc will be renamed
+			String EMBEDDOC_NAME = "Object 2";
+			Assert.assertNotNull(doc.getEmbeddedDocument(EMBEDDOC_NAME));
+			Assert.assertNotNull(doc2.getEmbeddedDocument(EMBEDDOC_NAME));
+			doc2.appendPresentation(doc);
+			Assert.assertTrue((slideCount + slideCount2) == doc2.getSlideCount());
+			// slide at index 3 of doc contains "Object 2", "Object 6"
+			// after appendPresentation, let's check the slide at index 103 of
+			// merged document
+			// which is corresponding to the slide at index 3 of doc
+			Slide slide = doc2.getSlideByIndex(103);
+			DrawPageElement slideEle = slide.getOdfElement();
+			NodeList objectList = slideEle.getElementsByTagNameNS(OdfDocumentNamespace.DRAW.getUri(), "object");
+			Assert.assertTrue(objectList.getLength() == 2);
+			DrawObjectElement object1 = (DrawObjectElement) objectList.item(0);
+			String linkPath = object1.getXlinkHrefAttribute();
+			Assert.assertTrue(linkPath.startsWith("./Object 2") && !linkPath.equals("./Object 2"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			doc2.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Merge2.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testAnotherMergeDoc() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			doc2 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_ANOTHER));
+			doc.appendPresentation(doc2);
+			Assert.assertTrue(doc.getSlideCount() == 110);
+			doc.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "Merge1.odp"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	/**
+	 * Test case for merge the three presentation document
+	 * <p>
+	 * <b>Precondition</b> Load Presentation File at
+	 * test\resources\performance\SlideTest1.odp,
+	 * test\resources\performance\SlideTest2.odp and
+	 * test\resources\performance\SlideTest3.odp <b>Method</b> copy the slide
+	 * from SlideTest2.odp and SlideTest3.odp to SlideTest1.odp
+	 * <b>Postcondition</b> Save the modified document at
+	 * SlideResultCopyThreeDoc.odp <b>Notice</b> This test case is used to show
+	 * that the style name can be renamed if they define the different style.
+	 */
+	@Test
+	public void testCopyThreeDoc() {
+		try {
+			// testdoc1 contain "dp1" for draw page style
+			PresentationDocument testdoc1 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_DOCUMENT1));
+			// testdoc1 contain "dp1" for draw page style
+			PresentationDocument testdoc2 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_DOCUMENT2));
+			// testdoc1 contain "dp1" for draw page style
+			PresentationDocument testdoc3 = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_DOCUMENT3));
+			testdoc1.copyForeignSlide(1, testdoc2, 0);
+			testdoc1.copyForeignSlide(2, testdoc3, 0);
+			// after copy foreign slide, the each slide should has its own draw
+			// page style
+			DrawPageElement slide1 = testdoc1.getSlideByIndex(0).getOdfElement();
+			DrawPageElement slide2 = testdoc1.getSlideByIndex(1).getOdfElement();
+			DrawPageElement slide3 = testdoc1.getSlideByIndex(2).getOdfElement();
+			String slideStyle1 = slide1.getDrawNameAttribute();
+			String slideStyle2 = slide2.getDrawNameAttribute();
+			String slideStyle3 = slide3.getDrawNameAttribute();
+			LOG.info(slideStyle1);
+			LOG.info(slideStyle2);
+			LOG.info(slideStyle3);
+			testdoc1.save(ResourceUtilities.newTestOutputFile(TEST_PRESENTATION_FILE_OUT_PREFIX + "CopyThreeDoc.odp"));
+			Assert.assertNotSame(slideStyle1, slideStyle2);
+			Assert.assertNotSame(slideStyle2, slideStyle3);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testAddRemoveIterateSubList() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			ListDecorator bulletDecorator = new BulletDecorator(doc);
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+			ListDecorator imageDecorator = new ImageDecorator(doc, ResourceUtilities.getURI("image_list_item.png"));
+			String[] numberItemContents = { "number item 1", "number item 2", "number item 3" };
+
+			// add list.
+			ListContainer container = doc.newSlide(0, "test0", Slide.SlideLayout.TITLE_OUTLINE);
+			org.odftoolkit.simple.text.list.List bulletList = container.addList(bulletDecorator);
+			bulletList.addItems(numberItemContents);
+			container = doc.newSlide(1, "test1", Slide.SlideLayout.TITLE_PLUS_2_TEXT_BLOCK);
+			org.odftoolkit.simple.text.list.List numberList = container.addList(numberDecorator);
+			numberList.addItems(numberItemContents);
+			container = doc.newSlide(2, "test2", Slide.SlideLayout.TITLE_PLUS_TEXT);
+			org.odftoolkit.simple.text.list.List imageList = container.addList(imageDecorator);
+			imageList.addItems(numberItemContents);
+			// iterate list
+			Assert.assertTrue(container.getListIterator().hasNext());
+			// remove list
+			container.clearList();
+			Assert.assertFalse(container.getListIterator().hasNext());
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testAddTable() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_PRESENTATION_FILE_MAIN));
+			// add table.
+			TableContainer container = doc.newSlide(2, "title_plus_text", Slide.SlideLayout.TITLE_PLUS_TEXT);
+			Table table = container.addTable();
+			table.setTableName("SlideTable");
+			String slideTableCellValue = "SlideTable Cell String";
+			table.getCellByPosition(0, 0).setStringValue(slideTableCellValue);
+			doc.save(ResourceUtilities.newTestOutputFile("SlideTableOutput.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("SlideTableOutput.odp"));
+			Assert.assertEquals(slideTableCellValue, table.getCellByPosition(0, 0).getStringValue());
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testNewSlideTitle_subtitle() {
+		try {
+			//Creates an empty presentation document.
+			doc = PresentationDocument.newPresentationDocument();
+			
+			TableContainer container = doc.newSlide(0, "testlayout", Slide.SlideLayout.TITLE_SUBTITLE);
+			Table table = container.addTable();
+			table.setTableName("SlideTable");
+			String slideTableCellValue = " Cell[0,0]";
+			table.getCellByPosition(0, 0).setStringValue(slideTableCellValue);
+			String slideTableCellValue1 = " Cell[0,1]";
+			table.getCellByPosition(0, 1).setStringValue(slideTableCellValue1);
+			doc.save(ResourceUtilities.newTestOutputFile("slidetitlelayout.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("slidetitlelayout.odp"));
+			Slide slide = doc.getSlideByIndex(0);
+			Slide slide1 = doc.getSlideByName("testlayout");
+
+			//validate
+			Node nodetitle = slide1.getOdfElement().getFirstChild();
+			Assert.assertEquals("frame", nodetitle.getLocalName());
+			NamedNodeMap map = nodetitle.getAttributes();
+			Assert.assertEquals("layout", map.item(0).getNodeValue());
+			Assert.assertEquals("title", map.item(1).getNodeValue());
+			
+			//
+			Node nodetitle1 = slide1.getOdfElement().getFirstChild().getNextSibling();
+			Assert.assertEquals("frame", nodetitle1.getLocalName());
+			NamedNodeMap map1 = nodetitle1.getAttributes();
+			Assert.assertEquals("layout", map1.item(0).getNodeValue());
+			Assert.assertEquals("subtitle", map1.item(1).getNodeValue());
+			
+			if(slide.equals(slide1))
+				Assert.assertEquals(slide, slide1);
+
+			Assert.assertEquals(slideTableCellValue, table.getCellByPosition(0, 0).getStringValue());
+			Assert.assertEquals(slideTableCellValue1, table.getCellByPosition(0, 1).getStringValue());
+
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+	}
+	
+	
+	@Test
+	public void testNewSlideTitle_left_chart_right_outline() {
+		try {
+			doc = PresentationDocument.newPresentationDocument();
+			
+			Slide slidepre = doc.newSlide(0, "testlayout", Slide.SlideLayout.TITLE_LEFT_CHART_RIGHT_OUTLINE);
+			Textbox titleBox = slidepre.getTextboxByUsage(PresentationClass.TITLE).get(0);
+		    titleBox.setTextContent("This is the title");
+
+			Textbox outline = slidepre.getTextboxByUsage(PresentationClass.OUTLINE).get(0);
+		    List txtList = outline.addList();
+		    txtList.addItem("List Item1");
+		    txtList.addItem("List Item2");
+
+			doc.save(ResourceUtilities.newTestOutputFile("slidetitlelayout.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("slidetitlelayout.odp"));
+			Slide slide1 = doc.getSlideByName("testlayout");
+
+			//validate
+			Node nodetitle2 = slide1.getOdfElement().getFirstChild();
+			Assert.assertEquals("frame", nodetitle2.getLocalName());
+			NamedNodeMap map2 = nodetitle2.getAttributes();
+			Assert.assertEquals("layout", map2.item(0).getNodeValue());
+			Assert.assertEquals("title", map2.item(1).getNodeValue());
+			
+			Node nodetitle = slide1.getOdfElement().getFirstChild().getNextSibling();
+			Assert.assertEquals("frame", nodetitle.getLocalName());
+			NamedNodeMap map = nodetitle.getAttributes();
+			Assert.assertEquals("layout", map.item(0).getNodeValue());
+			Assert.assertEquals("chart", map.item(2).getNodeValue());
+			
+			Node nodetitle1 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle1.getLocalName());
+			NamedNodeMap map1 = nodetitle1.getAttributes();
+			Assert.assertEquals("layout", map1.item(0).getNodeValue());
+			Assert.assertEquals("outline", map1.item(1).getNodeValue());
+			
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testNewSlideTitle_plus_chart() {
+		try {
+			doc = PresentationDocument.newPresentationDocument();
+			Slide slidepre = doc.newSlide(0, "testlayout", Slide.SlideLayout.TITLE_PLUS_CHART);
+			Textbox titleBox = slidepre.getTextboxByUsage(PresentationClass.TITLE).get(0);
+		    titleBox.setTextContent("This is the Presentation title");
+		    //chart
+		    String title = "new Chart";
+			String[] lables = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
+			String[] legends = new String[] { "Day1", "Day2", "Day3" };
+			double[][] data = new double[][] { { 1, 6, 3, 8 }, { 9, 1, 0, 5 }, { 3, 7, 8, 1 } };
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 3300;
+			rect.width = 21000;
+			rect.height = 12000;
+			Chart newChart = slidepre.createChart(title, lables, legends, data, rect);
+
+			doc.save(ResourceUtilities.newTestOutputFile("slidetitlelayout.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("slidetitlelayout.odp"));
+			Slide slide1 = doc.getSlideByName("testlayout");
+
+			//validate
+			Node nodetitle2 = slide1.getOdfElement().getFirstChild();
+			Assert.assertEquals("frame", nodetitle2.getLocalName());
+			NamedNodeMap map2 = nodetitle2.getAttributes();
+			Assert.assertEquals("layout", map2.item(0).getNodeValue());
+			Assert.assertEquals("title", map2.item(1).getNodeValue());
+			
+			Node nodetitle = slide1.getOdfElement().getFirstChild().getNextSibling();
+			Assert.assertEquals("frame", nodetitle.getLocalName());
+			NamedNodeMap map = nodetitle.getAttributes();
+			Assert.assertEquals("layout", map.item(0).getNodeValue());
+			Assert.assertEquals("chart", map.item(2).getNodeValue());
+			
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testNewSlideTitle_plus_2_chart() {
+		try {
+			doc = PresentationDocument.newPresentationDocument();
+			Slide slidepre = doc.newSlide(0, "testlayout", Slide.SlideLayout.TITLE_PLUS_2_CHART);
+			Textbox titleBox = slidepre.getTextboxByUsage(PresentationClass.TITLE).get(0);
+		    titleBox.setTextContent("This is the Presentation title");
+		    //chart1
+		    String title = "Chart one";
+			String[] lables = new String[] { "AAA", "XXX", "KKK" };
+			String[] legends = new String[] { "condition1", "condition2", "condition3" };
+			double[][] data = new double[][] { { 3, 3, 2 }, { 2, 1, 5 }, { 1, 4, 0 } };
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 3300;
+			rect.width = 22000;
+			rect.height = 8000;
+			//char2
+			String title1 = "Chart two";
+			String[] lables1 = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
+			String[] legends1 = new String[] { "Day1", "Day2", "Day3" };
+			double[][] data1 = new double[][] { { 1, 5, 3, 2 }, { 2, 1, 0, 5 }, { 3, 3, 4, 1 } };
+			Rectangle rect1 = new Rectangle();
+			rect1.x = 2000;
+			rect1.y = 11300;
+			rect1.width = 22000;
+			rect1.height = 8000;
+			Chart newChart = slidepre.createChart(title, lables, legends, data, rect);
+			Chart newChart1 = slidepre.createChart(title1, lables1, legends1, data1, rect1);
+
+			doc.save(ResourceUtilities.newTestOutputFile("slidetitlelayout.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("slidetitlelayout.odp"));
+			Slide slide1 = doc.getSlideByName("testlayout");
+
+			//validate
+			Node nodetitle2 = slide1.getOdfElement().getFirstChild();
+			Assert.assertEquals("frame", nodetitle2.getLocalName());
+			NamedNodeMap map2 = nodetitle2.getAttributes();
+			Assert.assertEquals("layout", map2.item(0).getNodeValue());
+			Assert.assertEquals("title", map2.item(1).getNodeValue());
+			
+			Node nodetitle = slide1.getOdfElement().getFirstChild().getNextSibling();
+			Assert.assertEquals("frame", nodetitle.getLocalName());
+			NamedNodeMap map = nodetitle.getAttributes();
+			Assert.assertEquals("layout", map.item(0).getNodeValue());
+			Assert.assertEquals("chart", map.item(2).getNodeValue());
+			
+			Node nodetitle1 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle1.getLocalName());
+			NamedNodeMap map1 = nodetitle1.getAttributes();
+			Assert.assertEquals("layout", map1.item(0).getNodeValue());
+			Assert.assertEquals("chart", map1.item(2).getNodeValue());
+			
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testNewSlideTitle_plus_3_object() {
+		try {
+			doc = PresentationDocument.newPresentationDocument();
+			Slide slidepre = doc.newSlide(0, "testlayout", Slide.SlideLayout.TITLE_PLUS_3_OBJECT);
+			Textbox titleBox = slidepre.getTextboxByUsage(PresentationClass.TITLE).get(0);
+		    titleBox.setTextContent("This is the Presentation title");
+		    //chart1
+		    String title = "Chart one";
+			String[] lables = new String[] { "AAA", "XXX", "KKK" };
+			String[] legends = new String[] { "condition1", "condition2", "condition3" };
+			double[][] data = new double[][] { { 3, 3, 2 }, { 2, 1, 5 }, { 1, 4, 0 } };
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 3300;
+			rect.width = 10000;
+			rect.height = 8000;
+			//char2
+			String title1 = "Chart two";
+			String[] lables1 = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
+			String[] legends1 = new String[] { "Day1", "Day2", "Day3" };
+			double[][] data1 = new double[][] { { 1, 5, 3, 2 }, { 2, 1, 0, 5 }, { 3, 3, 4, 1 } };
+			Rectangle rect1 = new Rectangle();
+			rect1.x = 2000;
+			rect1.y = 11300;
+			rect1.width = 10000;
+			rect1.height = 8000;
+			Chart newChart = slidepre.createChart(title, lables, legends, data, rect);
+			
+			Textbox outline = slidepre.getTextboxByUsage(PresentationClass.OUTLINE).get(0);
+		    List txtList = outline.addList();
+		    txtList.addItem("List Item1");
+		    txtList.addItem("List Item2");
+			
+			Chart newChart1 = slidepre.createChart(title1, lables1, legends1, data1, rect1);
+
+			doc.save(ResourceUtilities.newTestOutputFile("slidetitlelayout.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("slidetitlelayout.odp"));
+			Slide slide1 = doc.getSlideByName("testlayout");
+
+			//validate
+			Node nodetitle2 = slide1.getOdfElement().getFirstChild();
+			Assert.assertEquals("frame", nodetitle2.getLocalName());
+			NamedNodeMap map2 = nodetitle2.getAttributes();
+			Assert.assertEquals("layout", map2.item(0).getNodeValue());
+			Assert.assertEquals("title", map2.item(1).getNodeValue());
+			
+			Node nodetitle = slide1.getOdfElement().getFirstChild().getNextSibling();
+			Assert.assertEquals("frame", nodetitle.getLocalName());
+			NamedNodeMap map = nodetitle.getAttributes();
+			Assert.assertEquals("layout", map.item(0).getNodeValue());
+			Assert.assertEquals("chart", map.item(2).getNodeValue());
+			
+			Node nodetitle1 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle1.getLocalName());
+			NamedNodeMap map1 = nodetitle1.getAttributes();
+			Assert.assertEquals("layout", map1.item(0).getNodeValue());
+			Assert.assertEquals("outline", map1.item(1).getNodeValue());
+			
+			Node nodetitle3 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle3.getLocalName());
+			NamedNodeMap map3 = nodetitle3.getAttributes();
+			Assert.assertEquals("layout", map3.item(0).getNodeValue());
+			Assert.assertEquals("chart", map3.item(2).getNodeValue());
+			
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+	
+	@Test
+	public void testNewSlideTitle_plus_4_object() {
+		try {
+			doc = PresentationDocument.newPresentationDocument();
+			Slide slidepre = doc.newSlide(0, "testlayout", Slide.SlideLayout.TITLE_PLUS_4_OBJECT);
+			Textbox titleBox = slidepre.getTextboxByUsage(PresentationClass.TITLE).get(0);
+		    titleBox.setTextContent("This is the Presentation title");
+		    //chart1
+		    String title = "Chart one";
+			String[] lables = new String[] { "AAA", "XXX", "KKK" };
+			String[] legends = new String[] { "condition1", "condition2", "condition3" };
+			double[][] data = new double[][] { { 3, 3, 2 }, { 2, 1, 5 }, { 1, 4, 0 } };
+			Rectangle rect = new Rectangle();
+			rect.x = 2000;
+			rect.y = 2300;
+			rect.width = 5000;
+			rect.height = 6000;
+			//char2
+			String title1 = "Chart two";
+			String[] lables1 = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
+			String[] legends1 = new String[] { "Day1", "Day2", "Day3" };
+			double[][] data1 = new double[][] { { 1, 5, 3, 2 }, { 2, 1, 0, 5 }, { 3, 3, 4, 1 } };
+			Rectangle rect1 = new Rectangle();
+			rect1.x = 2000;
+			rect1.y = 11300;
+			rect1.width = 5000;
+			rect1.height = 6000;
+			//char3
+			String title2 = "Chart three";
+			String[] lables2 = new String[] { "Anna", "Daisy", "Tony", "MingFei" };
+			String[] legends2 = new String[] { "Day1", "Day2", "Day3" };
+			double[][] data2 = new double[][] { { 1, 5, 3, 2 }, { 2, 1, 0, 5 }, { 3, 3, 4, 1 } };
+			Rectangle rect2 = new Rectangle();
+			rect2.x = 2000;
+			rect2.y = 16300;
+			rect2.width = 5000;
+			rect2.height = 6000;
+			
+			Chart newChart = slidepre.createChart(title, lables, legends, data, rect);
+			Chart newChart1 = slidepre.createChart(title1, lables1, legends1, data1, rect1);
+			Textbox outline = slidepre.getTextboxByUsage(PresentationClass.OUTLINE).get(0);
+		    List txtList = outline.addList();
+		    txtList.addItem("List Item1");
+		    txtList.addItem("List Item2");
+		    Chart newChart2 = slidepre.createChart(title2, lables2, legends2, data2, rect2);
+			
+			doc.save(ResourceUtilities.newTestOutputFile("slidetitlelayout.odp"));
+			
+			//load 
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("slidetitlelayout.odp"));
+			Slide slide1 = doc.getSlideByName("testlayout");
+
+			//validate
+			Node nodetitle2 = slide1.getOdfElement().getFirstChild();
+			Assert.assertEquals("frame", nodetitle2.getLocalName());
+			NamedNodeMap map2 = nodetitle2.getAttributes();
+			Assert.assertEquals("layout", map2.item(0).getNodeValue());
+			Assert.assertEquals("title", map2.item(1).getNodeValue());
+			
+			Node nodetitle = slide1.getOdfElement().getFirstChild().getNextSibling();
+			Assert.assertEquals("frame", nodetitle.getLocalName());
+			NamedNodeMap map = nodetitle.getAttributes();
+			Assert.assertEquals("layout", map.item(0).getNodeValue());
+			Assert.assertEquals("chart", map.item(2).getNodeValue());
+			
+			Node nodetitle1 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle1.getLocalName());
+			NamedNodeMap map1 = nodetitle1.getAttributes();
+			Assert.assertEquals("layout", map1.item(0).getNodeValue());
+			Assert.assertEquals("outline", map1.item(1).getNodeValue());
+			
+			Node nodetitle3 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle3.getLocalName());
+			NamedNodeMap map3 = nodetitle3.getAttributes();
+			Assert.assertEquals("layout", map3.item(0).getNodeValue());
+			Assert.assertEquals("chart", map3.item(2).getNodeValue());
+			
+			Node nodetitle4 = slide1.getOdfElement().getFirstChild().getNextSibling().getNextSibling().getNextSibling().getNextSibling();
+			Assert.assertEquals("frame", nodetitle4.getLocalName());
+			NamedNodeMap map4 = nodetitle4.getAttributes();
+			Assert.assertEquals("layout", map4.item(0).getNodeValue());
+			Assert.assertEquals("chart", map4.item(2).getNodeValue());
+			
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/TableTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/TableTest.java
new file mode 100644
index 0000000..0e7294f
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/presentation/TableTest.java
@@ -0,0 +1,67 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.presentation;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.PresentationDocument;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class TableTest {
+	private static final Logger LOG = Logger.getLogger(TableTest.class.getName());
+	PresentationDocument doc;
+	final String TEST_PRESENTATION_FILE = "PresentationTableTest.odp";
+
+	@Test
+	public void testGetTable() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_PRESENTATION_FILE));
+			Table table = doc.getTableByName("table1");
+			Assert.assertNotNull(table);
+			String cellText = table.getCellByPosition(4, 1).getDisplayText();
+			Assert.assertEquals("11", cellText);
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testGetTableList() {
+		try {
+			doc = PresentationDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_PRESENTATION_FILE));
+			List<Table> tables = doc.getTableList();
+			Assert.assertEquals(3, tables.size());
+			for (Table table : tables) {
+				String cellText = table.getCellByPosition(4, 1).getDisplayText();
+				Assert.assertEquals("11", cellText);
+			}
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/BorderTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/BorderTest.java
new file mode 100644
index 0000000..cf65438
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/BorderTest.java
@@ -0,0 +1,236 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class BorderTest {
+
+	static final String filename = "testGetCellAt.ods";
+
+	@Test
+	public void testGetSetBorder() {
+		Border borderbase1 = new Border(new Color("#ff3333"), 5, SupportedLinearMeasure.PT);
+		Border borderbase2 = new Border(new Color("#0000ff"), 0.0154, 0.0008, 0.0008, SupportedLinearMeasure.IN);
+		Border borderbase3 = new Border(new Color("#ff3333"), 0.0362, 0.0008, 0.0008, SupportedLinearMeasure.IN);
+		Border borderbase4 = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			Cell cell1 = table.getCellByPosition("A8");
+			Border border1 = cell1.getBorder(CellBordersType.BOTTOM);
+			Border border11 = cell1.getBorder(CellBordersType.LEFT);
+			Assert.assertEquals(borderbase1, border1);
+			Assert.assertEquals(borderbase1, border11);
+
+			Cell cell2 = table.getCellByPosition("A10");
+			Border border2 = cell2.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(borderbase2, border2);
+			Border border3 = cell2.getBorder(CellBordersType.DIAGONALBLTR);
+			Assert.assertEquals(borderbase3, border3);
+
+			Cell cell3 = table.getCellByPosition("A12");
+			Border border4 = cell3.getBorder(CellBordersType.LEFT);
+			Border border41 = cell3.getBorder(CellBordersType.RIGHT);
+			Assert.assertEquals(borderbase4, border4);
+			Assert.assertEquals(borderbase4, border41);
+
+			Cell cell4 = table.getCellByPosition("B8");
+			cell4.setBorders(CellBordersType.ALL_FOUR, borderbase1);
+			Border border5 = cell4.getBorder(CellBordersType.BOTTOM);
+			Border border51 = cell4.getBorder(CellBordersType.LEFT);
+			Assert.assertEquals(borderbase1, border5);
+			Assert.assertEquals(borderbase1, border51);
+
+			Cell cell5 = table.getCellByPosition("B10");
+			cell5.setBorders(CellBordersType.TOP, borderbase2);
+			cell5.setBorders(CellBordersType.DIAGONALBLTR, borderbase3);
+			Assert.assertEquals(borderbase2, cell5.getBorder(CellBordersType.TOP));
+			Assert.assertEquals(borderbase3, cell5.getBorder(CellBordersType.DIAGONALBLTR));
+
+			Cell cell6 = table.getCellByPosition("B12");
+			cell6.setBorders(CellBordersType.LEFT_RIGHT, borderbase4);
+			Assert.assertEquals(borderbase4, cell6.getBorder(CellBordersType.LEFT));
+			Assert.assertEquals(borderbase4, cell6.getBorder(CellBordersType.RIGHT));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testSetWidth() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			//setWidth
+			borderbase.setWidth(0.056);
+			
+			Cell cell = table.getCellByPosition("A14");
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+
+			//verification
+			Border thisBorder = cell.getBorder(CellBordersType.LEFT);
+			thisBorder = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(0.056, thisBorder.getWidth());
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testSGetInnerLineWidth() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			//setWidth
+			borderbase.setInnerLineWidth(0.0156);
+			
+			Cell cell = table.getCellByPosition("A14");
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+
+			//verification
+			Border thisBorder = cell.getBorder(CellBordersType.LEFT);
+			thisBorder = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(0.0156, thisBorder.getInnerLineWidth());
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testSGetDistance() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			//setWidth
+		//	borderbase.setInnerLineWidth(0.0156);
+			borderbase.setDistance(0.123);
+			
+			Cell cell = table.getCellByPosition("A14");
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+
+			//verification
+			Border thisBorder = cell.getBorder(CellBordersType.LEFT);
+			thisBorder = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(0.123, thisBorder.getDistance());
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testSGetOuterLineWidth() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			
+			System.out.println(borderbase.getOuterLineWidth());
+			borderbase.setOuterLineWidth(0.125);
+			System.out.println(borderbase.getOuterLineWidth());			
+			
+			Cell cell = table.getCellByPosition("A14");
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+
+			//verification
+			Border thisBorder = cell.getBorder(CellBordersType.LEFT);
+			thisBorder = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(0.125, thisBorder.getOuterLineWidth());
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testSGetLinearMeasure() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			
+			borderbase.setLinearMeasure(StyleTypeDefinitions.SupportedLinearMeasure.CM);
+			
+			Cell cell = table.getCellByPosition("A14");
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+
+			//verification
+			Border thisBorder = cell.getBorder(CellBordersType.LEFT);
+			thisBorder = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(StyleTypeDefinitions.SupportedLinearMeasure.CM, thisBorder.getLinearMeasure());
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/FontTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/FontTest.java
new file mode 100644
index 0000000..da99d8e
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/FontTest.java
@@ -0,0 +1,348 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.Locale;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.TextLinePosition;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.CellStyleHandler;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class FontTest {
+
+	static final String filename = "testGetCellAt.ods";
+
+	@Test
+	public void testGetSetFont() {
+		Font font1Base = new Font("Arial", FontStyle.ITALIC, 10, Color.BLACK, TextLinePosition.THROUGH);
+		Font font2Base = new Font("'Times New Roman'", FontStyle.REGULAR, (float) 13.95, new Color("#ff3333"),
+				TextLinePosition.THROUGHUNDER);
+		Font font3Base = new Font("SimSun", FontStyle.BOLD, 8, Color.BLACK, TextLinePosition.REGULAR);
+		Font font4Base = new Font("Arial", FontStyle.REGULAR, 10, Color.BLACK, TextLinePosition.UNDER);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			Cell cell1 = table.getCellByPosition("A2");
+			CellStyleHandler handler1 = cell1.getStyleHandler();
+			Font font1 = handler1.getFont(Document.ScriptType.WESTERN);
+			Assert.assertEquals(font1Base, font1);
+
+			Cell cell2 = table.getCellByPosition("A3");
+			CellStyleHandler handler2 = cell2.getStyleHandler();
+			Font font2 = handler2.getFont(Document.ScriptType.WESTERN);
+			Assert.assertEquals(font2Base, font2);
+
+			Cell cell3 = table.getCellByPosition("A4");
+			CellStyleHandler handler3 = cell3.getStyleHandler();
+			Font font3 = handler3.getFont(Document.ScriptType.CJK);
+			Assert.assertEquals(font3Base, font3);
+			Font font4 = handler3.getFont(Document.ScriptType.WESTERN);
+			Assert.assertEquals(font4Base, font4);
+
+			Cell cell5 = table.getCellByPosition("B2");
+			cell5.getStyleHandler().setFont(font1Base);
+			cell5.setStringValue("Arial Italic black 10");
+			Assert.assertEquals(font1Base, cell5.getStyleHandler().getFont(Document.ScriptType.WESTERN));
+
+			Cell cell6 = table.getCellByPosition("B3");
+			// font2Base.setLocale();
+			cell6.getStyleHandler()
+					.setFont(font2Base, new Locale(Locale.ENGLISH.getLanguage(), Locale.US.getCountry()));
+			cell6.setStringValue("Times New Roman, Regular, 13.9, Red");
+			Assert.assertEquals(font2Base, cell6.getStyleHandler().getFont(Document.ScriptType.WESTERN));
+
+			Cell cell7 = table.getCellByPosition("B4");
+			cell7.getStyleHandler().setFont(font3Base,
+					new Locale(Locale.CHINESE.getLanguage(), Locale.CHINA.getCountry()));
+			cell7.getStyleHandler()
+					.setFont(font4Base, new Locale(Locale.ENGLISH.getLanguage(), Locale.US.getCountry()));
+			cell7.setStringValue("SimSun BOLD 8 BLACK");
+			Assert.assertEquals(font3Base, cell7.getStyleHandler().getFont(Document.ScriptType.CJK));
+			Assert.assertEquals(font4Base, cell7.getStyleHandler().getFont(Document.ScriptType.WESTERN));
+
+			doc.save(ResourceUtilities.newTestOutputFile("testFontOutput.ods"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testGetSetFontInODT() throws Exception {
+		TextDocument doc = TextDocument.newTextDocument();
+		Table table = Table.newTable(doc);
+		Font font = table.getCellByPosition(0, 0).getFont();
+		Assert.assertNotNull(font);
+	}
+
+	// public StyleTypeDefinitions.SimpleFontStyle getFontStyle(
+	// Document.ScriptType type);
+	//
+	// public void setFontStyle(StyleTypeDefinitions.SimpleFontStyle style);
+	//
+	// public void setFontStyle(StyleTypeDefinitions.SimpleFontStyle style,
+	// Document.ScriptType type);
+	//
+	// public int getFontSizeInPoint();
+	//
+	// public int getFontSizeInPoint(Document.ScriptType type);
+	//
+	// public void setFontSizeInPoint(int size);
+	//
+	// public void setFontSizeInPoint(int size, Document.ScriptType type);
+	//
+	// public String getLanguage();
+	//
+	// public String getLanguage(Document.ScriptType type);
+	//
+	// public void setLanguage(String language);
+	//
+	// public void setLanguage(String language, Document.ScriptType type);
+	//
+	// public String getCountry();
+	//
+	// public String getCountry(Document.ScriptType type);
+	//
+	// public void setCountry(String country);
+	//
+	// public void setCountry(String country, Document.ScriptType type);
+	//
+	// public Color getFontColor();
+	//
+	// public void setFontColor(Color fontColor);
+	//
+	// public String getFontName();
+	//
+	// public String getFontName(Document.ScriptType type);
+	//
+	// public void setFontName(String fontName);
+	//
+	// public void setFontName(String fontName, Document.ScriptType type);
+	//
+	// public Font getFont();
+	//
+	// public Font getFont(Document.ScriptType type);
+	//
+	// public void setFont(Font font);
+	//
+	// public String getFontFamilyName(Document.ScriptType type);
+	
+	@Test
+	public void testNewFont1() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("Hello world .");
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+			
+			//validate
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testFontOutput1.ods"));
+			Table table1 = doc.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			Font font1 = cell1.getFont();
+			Assert.assertEquals(font.getFamilyName(), font1.getFamilyName());
+			Assert.assertEquals(font.getSize(), font1.getSize());
+			Assert.assertEquals(font.getFontStyle(), font1.getFontStyle());
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testNewFont2() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.BLUE);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("Hello world .");
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+			
+			//validate
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testFontOutput1.ods"));
+			Table table1 = doc.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			Font font1 = cell1.getFont();
+			Assert.assertEquals(font.getFamilyName(), font1.getFamilyName());
+			Assert.assertEquals(font.getSize(), font1.getSize());
+			Assert.assertEquals(font.getFontStyle(), font1.getFontStyle());
+			Assert.assertEquals(font.getColor().toString(), font1.getColor().toString());
+			Assert.assertEquals(font, font1);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testNewFont3() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("Hi World.");
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+			
+			//validate
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testFontOutput1.ods"));
+			Table table1 = doc.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			Font font1 = cell1.getFont();
+			Assert.assertEquals(font.getFamilyName(), font1.getFamilyName());
+			Assert.assertEquals(font.getSize(), font1.getSize());
+			Assert.assertEquals(font.getFontStyle(), font1.getFontStyle());
+			Assert.assertEquals(font.getTextLinePosition(), font1.getTextLinePosition());
+		//	Assert.assertEquals(font, font1);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testNewFont4() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("Hi World.");
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+			
+			//validate
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testFontOutput1.ods"));
+			Table table1 = doc.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			Font font1 = cell1.getFont();
+			Assert.assertEquals(font.getFamilyName(), font1.getFamilyName());
+			Assert.assertEquals(font.getSize(), font1.getSize());
+			Assert.assertEquals(font.getFontStyle(), font1.getFontStyle());
+			Assert.assertEquals(font.getTextLinePosition(), font1.getTextLinePosition());
+			Assert.assertEquals(font.getColor().toString(), font1.getColor().toString());
+			Assert.assertEquals(font, font1);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testNewFont5() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("Hi World.");
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+			
+			//validate
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testFontOutput1.ods"));
+			Table table1 = doc.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			Font font1 = cell1.getFont();
+			Assert.assertEquals(font.getFamilyName(), font1.getFamilyName());
+			Assert.assertEquals(font.getSize(), font1.getSize());
+			Assert.assertEquals(font.getFontStyle(), font1.getFontStyle());
+			Assert.assertEquals(font.getTextLinePosition(), font1.getTextLinePosition());
+			Assert.assertEquals(font.getColor().toString(), font1.getColor().toString());
+			Assert.assertEquals(font, font1);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testEquals() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("Hi World.");
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+			
+			//validate
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testFontOutput1.ods"));
+			Table table1 = doc.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			Font font1 = cell1.getFont();
+			
+			Assert.assertTrue(font.equals(font1));
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/PageLayoutPropertiesTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/PageLayoutPropertiesTest.java
new file mode 100644
index 0000000..a0129ad
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/PageLayoutPropertiesTest.java
@@ -0,0 +1,192 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+ */

+package org.odftoolkit.simple.style;

+

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.Test;

+

+import org.odftoolkit.odfdom.type.Color;

+import org.odftoolkit.odfdom.type.Percent;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.AdjustmentStyle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.LineStyle;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.PrintOrientation;

+import org.odftoolkit.simple.style.StyleTypeDefinitions.WritingMode;

+

+public class PageLayoutPropertiesTest {

+

+	@Test

+	public void testGetSetMargins() {

+

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setMargins(10, 20, 0, -5);

+			Assert.assertEquals(9.9996, master.getMarginTop());

+			Assert.assertEquals(19.9992, master.getMarginBottom());

+			Assert.assertEquals(0.0, master.getMarginLeft());

+			Assert.assertEquals(-5.0011, master.getMarginRight());

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+

+	}

+

+	@Test

+	public void testGetSetPageSize() {

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setPageWidth(100);

+			master.setPageHeight(300);

+			Assert.assertEquals(100.0009, master.getPageWidth());

+			Assert.assertEquals(300.0003, master.getPageHeight());

+

+			master.setPageWidth(0);

+			master.setPageHeight(-100);

+			Assert.assertEquals(0.0, master.getPageWidth());

+			Assert.assertEquals(-100.0009, master.getPageHeight());

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+	}

+

+	@Test

+	public void testGetSetNumFormat() {

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setNumberFormat(NumberFormat.HINDU_ARABIC_NUMBER.toString());

+			Assert.assertEquals(NumberFormat.HINDU_ARABIC_NUMBER.toString(),

+					master.getNumberFormat());

+			master.setNumberFormat("");

+			Assert.assertEquals("", master.getNumberFormat());

+			master.setNumberFormat(null);

+			Assert.assertNull(master.getNumberFormat());

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+	}

+

+	@Test

+	public void testGetSetWritingMode() {

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setWritingMode(WritingMode.LRTB);

+			Assert.assertEquals(WritingMode.LRTB.toString(), master

+					.getWritingMode());

+			master.setNumberFormat(null);

+			Assert.assertNull(master.getNumberFormat());

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+	}

+

+	@Test

+	public void testGetSetPrintOrientation() {

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setPrintOrientation(PrintOrientation.LANDSCAPE);

+			Assert.assertEquals(PrintOrientation.LANDSCAPE.toString(), master

+					.getPrintOrientation());

+			master.setPrintOrientation(null);

+			Assert.assertNull(master.getPrintOrientation());

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+	}

+	

+	@Test

+	public void testGetSetMax() {

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setFootnoteMaxHeight(10);

+			Assert.assertEquals(9.9996, master

+					.getFootnoteMaxHeight());

+			master.setFootnoteMaxHeight(0);

+			Assert.assertEquals(0.0,master.getFootnoteMaxHeight());

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+	}

+

+	@Test

+	public void testGetSetFootnoteSep() {

+		try {

+			TextDocument newDoc = TextDocument.newTextDocument();

+			MasterPage master = MasterPage.getOrCreateMasterPage(newDoc,

+					"TestMaster");

+			master.setFootnoteSepProperties(AdjustmentStyle.CENTER, Color.AQUA,

+					10, 10, LineStyle.DASH_BOLD, Percent.valueOf("15%"), 10);

+			Assert.assertEquals(AdjustmentStyle.CENTER.toString(),master.getFootnoteSepAdjustment());

+			Assert.assertEquals(Color.AQUA.toString(), master.getFootnoteSepColor());

+			Assert.assertEquals(9.9996, master.getFootnoteSepDistanceAfterSep());

+			Assert.assertEquals(9.9996, master.getFootnoteSepDistanceBeforeSep());

+			Assert.assertEquals(LineStyle.DASH_BOLD.toString(), master.getFootnoteSepLineStyle());

+			Assert.assertEquals(0.15, master.getFootnoteSepWidth());

+			Assert.assertEquals(9.9996, master.getFootnoteSepThickness());

+			

+			master.setFootnoteSepProperties(null, null, 0, 0, null, null, 0);

+			Assert.assertEquals(AdjustmentStyle.LEFT.toString(),master.getFootnoteSepAdjustment());

+			Assert.assertNull(master.getFootnoteSepColor());

+			Assert.assertEquals(0.0,master.getFootnoteSepDistanceAfterSep());

+			Assert.assertEquals(0.0,master.getFootnoteSepDistanceBeforeSep());

+			Assert.assertEquals(LineStyle.NONE.toString(),master.getFootnoteSepLineStyle());

+			Assert.assertEquals(0.0, master.getFootnoteSepWidth());

+			Assert.assertEquals(0.0,master.getFootnoteSepThickness());

+			

+

+		} catch (Exception e) {

+			Logger.getLogger(PageLayoutPropertiesTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail();

+		}

+	}

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/ParagraphPropertiesTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/ParagraphPropertiesTest.java
new file mode 100644
index 0000000..2008f4f
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/ParagraphPropertiesTest.java
@@ -0,0 +1,63 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class ParagraphPropertiesTest {
+	
+	private static final Logger LOGGER =  Logger.getLogger(ParagraphPropertiesTest.class.getName());
+	static final String filename = "testGetCellAt.ods";
+
+	@Test
+	public void testGetSetBorder() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph1 = doc.addParagraph("paragraph1");
+			
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.JUSTIFY);
+			HorizontalAlignmentType align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.JUSTIFY, align);
+
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.LEFT);
+			align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.LEFT, align);
+
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.RIGHT);
+			align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.RIGHT, align);
+
+			doc.save(ResourceUtilities.newTestOutputFile("TestParagraphPropertiesSetGetHoriAlignment.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/StyleTypeDefinitionsTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/StyleTypeDefinitionsTest.java
new file mode 100644
index 0000000..dd13285
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/StyleTypeDefinitionsTest.java
@@ -0,0 +1,441 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.TextDocument.OdfMediaType;
+import org.odftoolkit.simple.draw.FrameRectangle;
+import org.odftoolkit.simple.draw.FrameStyleHandler;
+import org.odftoolkit.simple.draw.Image;
+import org.odftoolkit.simple.draw.ImageTest;
+import org.odftoolkit.simple.draw.Textbox;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameHorizontalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FrameVerticalPosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalRelative;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalAlignmentType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalRelative;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+
+public class StyleTypeDefinitionsTest {
+	
+	private static final Logger LOGGER =  Logger.getLogger(StyleTypeDefinitionsTest.class.getName());
+	
+	@Test
+	public void testHorizontalAlignmentType() {
+		try {
+			
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph1 = doc.addParagraph("paragraph text");
+
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.DEFAULT);
+			HorizontalAlignmentType align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.DEFAULT, align);
+			
+			HorizontalAlignmentType filled = HorizontalAlignmentType.enumValueOf("filled");
+			String start = filled.getAlignmentString();
+			Assert.assertEquals("start", start);
+			Assert.assertEquals("filled", filled.toString());
+			Assert.assertEquals(HorizontalAlignmentType.FILLED, filled);
+			
+			HorizontalAlignmentType testnull = HorizontalAlignmentType.enumValueOf("");
+			Assert.assertEquals(null, testnull);
+			
+			try {
+				HorizontalAlignmentType testa = HorizontalAlignmentType.enumValueOf("aaaa");
+				Assert.assertEquals("Unsupported Horizontal Alignment Type!", testa);
+			} catch (Exception e) {
+				Assert.assertTrue(e instanceof RuntimeException);
+				Assert.assertEquals("Unsupported Horizontal Alignment Type!", e.getMessage());
+			}
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testHorizontalAlignmentType.odt"));
+			
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+
+	@Test
+	public void testVerticalAlignmentType() throws Exception{
+		try {
+			SpreadsheetDocument odsdoc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("TestSpreadsheetTable.ods"));
+		
+			int columnindex = 0, rowindex = 3;
+			Table table = odsdoc.getTableByName("Sheet1");
+			Cell fcell = table.getCellByPosition(columnindex, rowindex);
+	
+			System.out.println(fcell.getStringValue());
+			
+			StyleTypeDefinitions.VerticalAlignmentType align = fcell.getVerticalAlignmentType();
+			Assert.assertEquals(StyleTypeDefinitions.VerticalAlignmentType.TOP, align);
+			
+			VerticalAlignmentType vertType = VerticalAlignmentType.enumValueOf("top");
+			Assert.assertEquals(VerticalAlignmentType.TOP, vertType);
+			Assert.assertEquals("top", vertType.toString());
+			
+			VerticalAlignmentType testnull = VerticalAlignmentType.enumValueOf("");
+			Assert.assertEquals(null, testnull);
+			
+			try {
+				VerticalAlignmentType testa = VerticalAlignmentType.enumValueOf("aaaa");
+				Assert.assertEquals("Unsupported Vertical Alignment Type!", testa);
+			} catch (Exception e) {
+				Assert.assertTrue(e instanceof RuntimeException);
+				Assert.assertEquals("Unsupported Vertical Alignment Type!", e.getMessage());
+			}
+			
+			//save
+			//odsdoc.save(ResourceUtilities.newTestOutputFile("TestSpreadsheetTableOutput.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	@Test
+	public void testSupportedLinearMeasure() throws Exception{
+		try {
+			Border borderbase = new Border(Color.LIME, 4.0701, 1.0008, 1.0346, SupportedLinearMeasure.CM);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+
+			//verification
+			Border base = cell.getBorder(CellBordersType.LEFT);
+			base = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(borderbase, base);
+			
+			//
+			double ins = SupportedLinearMeasure.PT.toINs(216.00);
+			Assert.assertTrue(3.0 == ins);
+			double cms = SupportedLinearMeasure.PT.toCMs(566.93);
+			Assert.assertTrue(20.0 == cms);
+			double incms = SupportedLinearMeasure.IN.toCMs(11.0);
+			Assert.assertTrue(27.94 == incms);
+			
+			double cmins = SupportedLinearMeasure.CM.toINs(25.4);
+			Assert.assertTrue(10 == cmins);
+			double cmcms = SupportedLinearMeasure.CM.toCMs(11.0);
+			Assert.assertTrue(11.0 == cmcms);
+			
+			SupportedLinearMeasure suppMeasure = SupportedLinearMeasure.enumValueOf("pt");
+			Assert.assertEquals("pt", suppMeasure.toString());
+			SupportedLinearMeasure suppMeasure1 = SupportedLinearMeasure.enumValueOf("");
+			Assert.assertEquals(null, suppMeasure1);
+			try {
+				SupportedLinearMeasure.enumValueOf("aaa");
+			} catch (Exception e) {
+				Assert.assertTrue(e instanceof RuntimeException);
+				Assert.assertEquals("Unsupported Linear Measure!", e.getMessage());
+			}
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testCellBordersType() throws Exception{
+		try {
+			Border borderbase = new Border(Color.LIME, 4.0701, 1.0008, 1.0346, SupportedLinearMeasure.CM);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+
+			//verification
+			Border base = cell.getBorder(CellBordersType.LEFT);
+			base = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(borderbase, base);
+			
+			//
+			CellBordersType cellType = CellBordersType.enumValueOf("bottom");
+			Assert.assertEquals("bottom", cellType.toString());
+			CellBordersType cellType1 = CellBordersType.enumValueOf("");
+			Assert.assertEquals(null, cellType1);
+			try {
+				CellBordersType.enumValueOf("aaa");
+			} catch (Exception e) {
+				Assert.assertTrue(e instanceof RuntimeException);
+				Assert.assertEquals("Unsupported Cell Borders Type!", e.getMessage());
+			}
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testLineType() throws Exception{
+		try {
+			Border borderbase = new Border(Color.LIME, 1.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.SINGLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+			cell.setBorders(CellBordersType.TOP, borderbase);
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+
+			//verification
+			Border base = cell.getBorder(CellBordersType.LEFT);
+			base = cell.getBorder(CellBordersType.TOP);
+			Assert.assertEquals(borderbase, base);
+			Assert.assertEquals(StyleTypeDefinitions.LineType.SINGLE, borderbase.getLineStyle());
+			//
+			StyleTypeDefinitions.LineType lType = StyleTypeDefinitions.LineType.enumValueOf("double");
+			Assert.assertEquals("double", lType.toString());
+			StyleTypeDefinitions.LineType lType1 = StyleTypeDefinitions.LineType.enumValueOf("");
+			Assert.assertEquals("none", lType1.toString());
+			StyleTypeDefinitions.LineType lType2 = StyleTypeDefinitions.LineType.enumValueOf("aaaa");
+			Assert.assertEquals("none", lType2.toString());
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testAnchorType() throws Exception{
+	    String content = "XXXXX This is a text box XXXXX";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.CM);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.BLUE);
+			
+			textDoc.changeMode(OdfMediaType.TEXT_TEMPLATE);
+			frameStyleHandler.setAchorType(StyleTypeDefinitions.AnchorType.TO_PAGE);
+			
+			//validate
+			GraphicProperties graphicPropertiesForWrite = frameStyleHandler.getGraphicPropertiesForWrite();
+			Assert.assertEquals(VerticalRelative.PAGE, graphicPropertiesForWrite.getVerticalRelative());
+			Assert.assertEquals(FrameVerticalPosition.TOP, graphicPropertiesForWrite.getVerticalPosition());
+			Assert.assertEquals(HorizontalRelative.PAGE, graphicPropertiesForWrite.getHorizontalRelative());
+			Assert.assertEquals(FrameHorizontalPosition.CENTER, graphicPropertiesForWrite.getHorizontalPosition());
+
+			//
+			StyleTypeDefinitions.AnchorType anchorType = StyleTypeDefinitions.AnchorType.enumValueOf("");
+			Assert.assertEquals("page", anchorType.toString());
+			StyleTypeDefinitions.AnchorType anchorType1 = StyleTypeDefinitions.AnchorType.enumValueOf("char");
+			Assert.assertEquals(StyleTypeDefinitions.AnchorType.TO_CHARACTER, anchorType1);
+			StyleTypeDefinitions.AnchorType anchorType2 = StyleTypeDefinitions.AnchorType.enumValueOf("aaaa");
+			Assert.assertEquals(StyleTypeDefinitions.AnchorType.TO_PAGE, anchorType2);
+			
+			//save
+			textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(StyleTypeDefinitionsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+		
+	}
+	
+	
+	@Test
+	public void testVerticalRelative() throws Exception{
+	    String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.IN);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			frameStyleHandler.setVerticalRelative(VerticalRelative.PARAGRAPH);
+			
+			//validate
+			Assert.assertEquals(VerticalRelative.PARAGRAPH, frameStyleHandler.getVerticalRelative());
+			
+			//
+			StyleTypeDefinitions.VerticalRelative vert = StyleTypeDefinitions.VerticalRelative.enumValueOf("");
+			Assert.assertEquals("page", vert.toString());
+			StyleTypeDefinitions.VerticalRelative vert1 = StyleTypeDefinitions.VerticalRelative.enumValueOf("aaaa");
+			Assert.assertEquals("page", vert1.toString());
+			StyleTypeDefinitions.VerticalRelative vert2 = StyleTypeDefinitions.VerticalRelative.enumValueOf("frame");
+			Assert.assertEquals("frame", vert2.toString());
+			
+			//save
+			//textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+		    Logger.getLogger(StyleTypeDefinitionsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+		
+	}
+	
+	
+	@Test
+	public void testHorizontalRelative() throws Exception{
+	    String content = "This is a text box";
+		try {
+			TextDocument textDoc = TextDocument.newTextDocument();
+			Paragraph p = textDoc.addParagraph("paragraph");
+			FrameRectangle frameR = new FrameRectangle(4.21, 1.32, 4.41, 3.92, SupportedLinearMeasure.IN);
+			
+			Textbox box = p.addTextbox(frameR);
+			box.setName("tbox name");
+			box.setTextContent(content);
+			
+			FrameStyleHandler frameStyleHandler = new FrameStyleHandler(box);
+			frameStyleHandler.setBackgroundColor(Color.YELLOW);
+			frameStyleHandler.setHorizontalRelative(HorizontalRelative.PARAGRAPH);
+			
+			//validate
+			Assert.assertEquals(HorizontalRelative.PARAGRAPH, frameStyleHandler.getHorizontalRelative());
+			
+			//
+			HorizontalRelative hor = HorizontalRelative.enumValueOf("");
+			Assert.assertEquals("page", hor.toString());
+			
+			HorizontalRelative hor1 = HorizontalRelative.enumValueOf("paragraph");
+			Assert.assertEquals("paragraph", hor1.toString());
+			
+			HorizontalRelative hor2 = HorizontalRelative.enumValueOf("aaa");
+			Assert.assertEquals("page", hor2.toString());
+			
+			//save
+			//textDoc.save(ResourceUtilities.newTestOutputFile("textsample.odt"));
+
+		} catch (Exception e) {
+		    Logger.getLogger(StyleTypeDefinitionsTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+		
+	}
+	
+	
+	@Test
+	public void testFrameVerticalPosition() throws Exception{
+	    try {
+		// new image in a table
+		TextDocument sDoc = TextDocument.newTextDocument();
+		Table table1 = sDoc.addTable(2, 2);
+		Cell cell1 = table1.getCellByPosition(0, 0);
+		Image image3 = cell1.setImage(ResourceUtilities.getURI("image_list_item.png"));
+		image3.setVerticalPosition(FrameVerticalPosition.BELOW);
+		
+		//validate
+		Assert.assertEquals(FrameVerticalPosition.BELOW, image3.getVerticalPosition());
+		
+		//
+		FrameVerticalPosition ver = FrameVerticalPosition.enumValueOf("");
+		Assert.assertEquals("middle", ver.toString());
+		
+		FrameVerticalPosition ver1 = FrameVerticalPosition.enumValueOf("below");
+		Assert.assertEquals("below", ver1.toString());
+		
+		FrameVerticalPosition ver2 = FrameVerticalPosition.enumValueOf("aaaa");
+		Assert.assertEquals("middle", ver2.toString());
+		
+		//save
+		//sDoc.save(ResourceUtilities.newTestOutputFile("imges.odt"));
+
+	    } catch (Exception e) {
+		Logger.getLogger(StyleTypeDefinitionsTest.class.getName()).log(Level.SEVERE, null, e);
+		Assert.fail();
+	    }
+		
+	}
+	
+	
+	@Test
+	public void testFrameHorizontalPosition() {
+		try {
+			// new image in a table
+			TextDocument sDoc = TextDocument.newTextDocument();
+			Table table1 = sDoc.addTable(2, 2);
+			Cell cell1 = table1.getCellByPosition(0, 0);
+			Image image3 = cell1.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			image3.setHorizontalPosition(FrameHorizontalPosition.LEFT);
+			Assert.assertEquals(FrameHorizontalPosition.LEFT, image3.getHorizontalPosition());
+			
+			//
+			FrameHorizontalPosition hor = FrameHorizontalPosition.enumValueOf("");
+			Assert.assertEquals("center", hor.toString());
+			FrameHorizontalPosition hor1 = FrameHorizontalPosition.enumValueOf("inside");
+			Assert.assertEquals("inside", hor1.toString());
+			FrameHorizontalPosition hor2 = FrameHorizontalPosition.enumValueOf("aaaa");
+			Assert.assertEquals("center", hor2.toString());
+			
+			//save
+			sDoc.save(ResourceUtilities.newTestOutputFile("imges.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(ImageTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/TableCellPropertiesTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/TableCellPropertiesTest.java
new file mode 100644
index 0000000..e9035dd
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/TableCellPropertiesTest.java
@@ -0,0 +1,225 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.attribute.fo.FoBorderRightAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthBottomAttribute;
+import org.odftoolkit.odfdom.dom.attribute.style.StyleBorderLineWidthLeftAttribute;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+public class TableCellPropertiesTest {
+	
+	private static final Logger LOGGER =  Logger.getLogger(TableCellPropertiesTest.class.getName());
+	
+	@Test
+	public void testSetBorders() {
+		try {
+			
+		    Border borderbase = new Border(Color.LIME, 1.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.SINGLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+			cell.setBorders(CellBordersType.BOTTOM, borderbase);
+			cell.setBorders(CellBordersType.RIGHT, borderbase);
+			cell.setBorders(CellBordersType.DIAGONALTLBR, borderbase);
+
+			//verification
+			Border base = cell.getBorder(CellBordersType.BOTTOM);
+			base = cell.getBorder(CellBordersType.RIGHT);
+			base = cell.getBorder(CellBordersType.DIAGONALTLBR);
+			Assert.assertEquals(borderbase, base);
+			Assert.assertEquals(StyleTypeDefinitions.LineType.SINGLE, borderbase.getLineStyle());
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testSetBorders_NONE() {
+		try {
+			
+		    Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.SINGLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(0, 0);
+			//cell.setBorders(CellBordersType.DIAGONAL_LINES, borderbase);
+			cell.setBorders(CellBordersType.RIGHT, borderbase);
+
+			//validate
+			TableCellProperties styleCell = cell.getStyleHandler().getTableCellPropertiesForWrite();
+			NamedNodeMap attr = styleCell.mElement.getAttributes();
+			Node nod = attr.getNamedItem(FoBorderRightAttribute.ATTRIBUTE_NAME.getQName());
+			Assert.assertEquals("3.0701cm solid #00ff00", nod.getNodeValue());
+			
+			cell.setBorders(CellBordersType.NONE, borderbase);
+			
+			TableCellProperties styleCell1 = cell.getStyleHandler().getTableCellPropertiesForWrite();
+			NamedNodeMap attr1 = styleCell1.mElement.getAttributes();
+			Node nod1 = attr1.getNamedItem(FoBorderRightAttribute.ATTRIBUTE_NAME.getQName());
+			Assert.assertNull(nod1);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testSetBorders_DIAGONAL_LINES() {
+		try {
+			
+		    Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.SINGLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(0, 0);
+			cell.setBorders(CellBordersType.DIAGONAL_LINES, borderbase);
+
+			//validate
+			TableCellProperties styleCell = cell.getStyleHandler().getTableCellPropertiesForWrite();
+			NamedNodeMap attr = styleCell.mElement.getAttributes();
+			
+			Node nod = attr.getNamedItem("style:diagonal-bl-tr");
+			Assert.assertEquals("3.0701cm solid #00ff00", nod.getNodeValue());
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetBorder() {
+		try {
+			Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.SINGLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+			cell.setBorders(CellBordersType.ALL_FOUR, borderbase);
+
+			//validate
+			TableCellProperties styleCell = cell.getStyleHandler().getTableCellPropertiesForWrite();
+			Border bor = styleCell.getBorder();
+			Assert.assertEquals(borderbase, bor);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetLeftBorder() {
+		try {
+			Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.DOUBLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+			cell.setBorders(CellBordersType.RIGHT, borderbase);
+
+			//validate
+			TableCellProperties styleCell = cell.getStyleHandler().getTableCellPropertiesForWrite();
+			Border bor = styleCell.getRightBorder();
+			Assert.assertEquals(borderbase, bor);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+        @Test
+	public void testSettingNullBackgroundOnProperties() throws Exception {
+            SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+            Table table = doc.getTableByName("Sheet1");
+            Cell cell = table.getCellByPosition(1, 1);
+            cell.setCellBackgroundColor(Color.BLACK);
+            // setting null resets the element, see ODFTOOLKIT-326
+            cell.getStyleHandler().getTableCellPropertiesForWrite().setBackgroundColor(null);
+            Assert.assertNull(cell.getStyleHandler().getTableCellPropertiesForRead().getBackgroundColor());
+            // defaulting to white when color is null
+            Assert.assertEquals(Color.WHITE, cell.getCellBackgroundColor());
+            Cell newCell = table.appendRow().getCellByIndex(1);
+            Assert.assertNull(newCell.getStyleHandler().getTableCellPropertiesForRead().getBackgroundColor());
+            Assert.assertEquals(Color.WHITE, newCell.getCellBackgroundColor());
+        }
+        
+        @Test
+        public void testSettingBlackBackgroundOnProperties() throws Exception {
+            SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+            Table table = doc.getTableByName("Sheet1");
+            Cell cell = table.getCellByPosition(1, 1);
+            cell.setCellBackgroundColor(Color.BLUE);
+            cell.getStyleHandler().getTableCellPropertiesForWrite().setBackgroundColor(Color.BLACK);
+            Assert.assertEquals(Color.BLACK, cell.getStyleHandler().getTableCellPropertiesForRead().getBackgroundColor());
+            Assert.assertEquals(Color.BLACK, cell.getCellBackgroundColor());
+            Cell newCell = table.appendRow().getCellByIndex(1);
+            Assert.assertEquals(Color.BLACK, newCell.getStyleHandler().getBackgroundColor());
+        }
+        
+        @Test
+        public void testSettingNullBackgroundOnCell() throws Exception {
+            SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+            Table table = doc.getTableByName("Sheet1");
+            Cell cell = table.getCellByPosition(1, 1);
+            cell.setCellBackgroundColor((Color) null);
+            Assert.assertNull(cell.getStyleHandler().getTableCellPropertiesForRead().getBackgroundColor());
+            Assert.assertEquals(Color.WHITE, cell.getCellBackgroundColor());
+        }
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/TablePropertiesTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/TablePropertiesTest.java
new file mode 100644
index 0000000..9aa504c
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/TablePropertiesTest.java
@@ -0,0 +1,99 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+ */
+
+package org.odftoolkit.simple.style;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class TablePropertiesTest {
+
+	private static final Logger LOGGER = Logger
+			.getLogger(TablePropertiesTest.class.getName());
+
+	@Test
+	public void testGetSetPageBreak() {
+		try {
+
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("This is the first paragraph.");
+			Table table = doc.addTable();
+			TableProperties writeProperties = table.getStyleHandler()
+					.getTablePropertiesForWrite();
+			TableProperties readProperties = table.getStyleHandler()
+					.getTablePropertiesForRead();
+
+			writeProperties.setBreak("before", "page");
+			Assert.assertEquals("page", readProperties.getBreakBefore());
+
+			// save
+			doc.save(ResourceUtilities
+					.newTestOutputFile("AAAA1.ods"));
+
+			writeProperties.setBreak("before", null);
+			Assert.assertEquals(null, readProperties.getBreakBefore());
+
+			writeProperties.setBreak(null, "page");
+			Assert.assertEquals(null, readProperties.getBreakBefore());
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetPageNumber() {
+		try {
+
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("This is the first paragraph.");
+			Table table = doc.addTable();
+			TableProperties writeProperties = table.getStyleHandler()
+					.getTablePropertiesForWrite();
+			TableProperties readProperties = table.getStyleHandler()
+					.getTablePropertiesForRead();
+
+			writeProperties.setBreak("before", "page");
+			Assert.assertEquals("page", readProperties.getBreakBefore());
+			writeProperties.setPageNumber(3);
+			Assert.assertEquals(3, readProperties.getPageNumber());
+
+			// save
+			doc.save(ResourceUtilities
+					.newTestOutputFile("AAAA2.ods"));
+
+			writeProperties.setPageNumber(0);
+			Assert.assertEquals(0, readProperties.getPageNumber());
+			writeProperties.setPageNumber(-2);
+			Assert.assertEquals(0, readProperties.getPageNumber());
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/style/TextPropertiesTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/style/TextPropertiesTest.java
new file mode 100644
index 0000000..6511400
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/style/TextPropertiesTest.java
@@ -0,0 +1,417 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.style;
+
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class TextPropertiesTest {
+	private static final Logger LOGGER =  Logger.getLogger(TextPropertiesTest.class.getName());
+	
+	@Test
+	public void testGetFontSizeInPoint() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFontSizeInPoint(3.32);
+			
+			//validate
+			Double fontInPoint = textProperties.getFontSizeInPoint();
+			Assert.assertEquals(3.32, fontInPoint);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput89.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetFontStyle() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.BOLDITALIC);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle = textProperties.getFontStyle();
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.BOLDITALIC, fontStyle);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.BOLD);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle1 = textProperties.getFontStyle();
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.BOLD, fontStyle1);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.ITALIC);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle2 = textProperties.getFontStyle();
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.ITALIC, fontStyle2);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.REGULAR);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle3 = textProperties.getFontStyle();
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.REGULAR, fontStyle3);
+			
+			//save
+			//document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetFontStyleParam() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.BOLDITALIC, Document.ScriptType.WESTERN);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle = textProperties.getFontStyle(Document.ScriptType.WESTERN);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.BOLDITALIC, fontStyle);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.BOLDITALIC, Document.ScriptType.CJK);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle1 = textProperties.getFontStyle(Document.ScriptType.CJK);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.BOLDITALIC, fontStyle1);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.ITALIC, Document.ScriptType.CJK);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle2 = textProperties.getFontStyle(Document.ScriptType.CJK);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.ITALIC, fontStyle2);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.REGULAR, Document.ScriptType.CJK);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle3 = textProperties.getFontStyle(Document.ScriptType.CJK);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.REGULAR, fontStyle3);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.BOLD, Document.ScriptType.CTL);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle4 = textProperties.getFontStyle(Document.ScriptType.CTL);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.BOLD, fontStyle4);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.ITALIC, Document.ScriptType.CTL);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle5 = textProperties.getFontStyle(Document.ScriptType.CTL);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.ITALIC, fontStyle5);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.BOLDITALIC, Document.ScriptType.CTL);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle6 = textProperties.getFontStyle(Document.ScriptType.CTL);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.BOLDITALIC, fontStyle6);
+			
+			textProperties.setFontStyle(StyleTypeDefinitions.FontStyle.REGULAR, Document.ScriptType.CTL);
+			//validate
+			StyleTypeDefinitions.FontStyle fontStyle7 = textProperties.getFontStyle(Document.ScriptType.CTL);
+			Assert.assertEquals(StyleTypeDefinitions.FontStyle.REGULAR, fontStyle7);
+			
+			//save
+			//document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	
+	@Test
+	public void testGetSetLanguage() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setLanguage("Chinese");
+			
+			//validate
+			String lan = textProperties.getLanguage();
+			Assert.assertEquals("Chinese", lan);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetSetLanguageParam() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setLanguage("Chinese", Document.ScriptType.CJK);
+			//validate
+			String lan = textProperties.getLanguage(Document.ScriptType.CJK);
+			Assert.assertEquals("Chinese", lan);
+			
+			textProperties.setLanguage("Chinese", Document.ScriptType.CTL);
+			//validate
+			String lan1 = textProperties.getLanguage(Document.ScriptType.CTL);
+			Assert.assertEquals("Chinese", lan1);
+			
+			textProperties.setLanguage(null, Document.ScriptType.CTL);
+			//validate
+			String lan2 = textProperties.getLanguage(Document.ScriptType.CTL);
+			Assert.assertEquals(null, lan2);
+			
+			textProperties.setLanguage(null, Document.ScriptType.WESTERN);
+			//validate
+			String lan3 = textProperties.getLanguage(Document.ScriptType.WESTERN);
+			Assert.assertEquals(null, lan3);
+			
+			textProperties.setLanguage(null, Document.ScriptType.CJK);
+			//validate
+			String lan4 = textProperties.getLanguage(Document.ScriptType.CJK);
+			Assert.assertEquals(null, lan4);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetCountry() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setCountry("china");
+			
+			//validate
+			String country = textProperties.getCountry();
+			Assert.assertEquals("china", country);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetCountryParam() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setCountry("china", Document.ScriptType.WESTERN);
+			
+			//validate
+			String country = textProperties.getCountry(Document.ScriptType.WESTERN);
+			Assert.assertEquals("china", country);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetColor() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFontColor(Color.GREEN);
+			
+			//validate
+			Color green = textProperties.getFontColor();
+			Assert.assertEquals(Color.GREEN.toString(), green.toString());
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetSetName() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFontName("fontname");
+			
+			//validate
+			String fontName = textProperties.getFontName();
+			Assert.assertEquals("fontname", fontName);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetSetNameParam() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFontName("fontname", Document.ScriptType.WESTERN);
+			
+			//validate
+			String fontName = textProperties.getFontName(Document.ScriptType.WESTERN);
+			Assert.assertEquals("fontname", fontName);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testSetFont() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			//cell.setFont(font);
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFont(font);
+			
+			//validate
+			Font font1 = textProperties.getFont();
+			Assert.assertEquals(font, font1);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testSetFontName() {
+		try {
+			SpreadsheetDocument document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = document.getTableByName("Sheet1");
+			Font font = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 17.5, Color.GREEN, StyleTypeDefinitions.TextLinePosition.REGULAR, Locale.ENGLISH);
+			Cell cell = table.getCellByPosition("A1");
+			//cell.setFont(font);
+			font.setFamilyName("Chinese");
+			cell.setStringValue("testGetFontStyle.");
+			
+			TextProperties textProperties = cell.getStyleHandler().getTextPropertiesForWrite();
+			textProperties.setFont(font);
+			
+			//validate
+			String fontname = textProperties.getFontName();
+			Assert.assertEquals("Chinese", fontname);
+			
+			//save
+			document.save(ResourceUtilities.newTestOutputFile("testFontOutput1.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/CellStyleHandlerTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/CellStyleHandlerTest.java
new file mode 100644
index 0000000..a84f333
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/CellStyleHandlerTest.java
@@ -0,0 +1,68 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class CellStyleHandlerTest {
+	
+	private static final String TEST_FILE_NAME = "CellStyleHandlerTest.odp";
+
+	@Test
+	public void testGetFont() {
+		try {
+			Document doc = Document.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_FILE_NAME));
+			Table table = doc.getTableByName("slideTable");
+			CellStyleHandler styleHandler = table.getCellByPosition(1, 1).getStyleHandler();
+			// NullPointerException should not be thrown even if no default text
+			// properties style exists.
+			styleHandler.getFont(Document.ScriptType.WESTERN);
+		} catch (Exception e) {
+			Logger.getLogger(CellStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetCountry() {
+		try {
+			Document doc = Document.loadDocument(ResourceUtilities.getTestResourceAsStream(TEST_FILE_NAME));
+			Table table = doc.getTableByName("slideTable");
+			CellStyleHandler styleHandler = table.getCellByPosition(1, 1).getStyleHandler();
+			
+			styleHandler.setCountry("English", Document.ScriptType.WESTERN);
+			//validate
+			String country = styleHandler.getCountry(Document.ScriptType.WESTERN);
+			Assert.assertEquals("English", country);
+			
+		} catch (Exception e) {
+			Logger.getLogger(CellStyleHandlerTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableBuilderTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableBuilderTest.java
new file mode 100644
index 0000000..663a8dd
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableBuilderTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.odftoolkit.simple.table;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ *
+ * @author Florian Hopf, fhopf@apache.org
+ */
+public class TableBuilderTest {
+    
+    @Test
+    public void testCreateTable() throws Exception {
+        TextDocument textDoc = TextDocument.newTextDocument();
+        TableBuilder tableBuilder = textDoc.getTableBuilder();
+        Table table = tableBuilder.newTable(4, 3, 2, 1);
+        assertEquals(4, table.getRowCount());
+        assertEquals(3, table.getColumnCount());
+        assertEquals(2, table.getHeaderRowCount());
+        assertEquals(1, table.getHeaderColumnCount());
+        assertNotNull(table.getCellByPosition(1, 1));
+    }
+    
+    @Test
+    public void testAppendRow() throws Exception {
+        TextDocument textDoc = TextDocument.newTextDocument();
+        TableBuilder tableBuilder = textDoc.getTableBuilder();
+        Table table = tableBuilder.newTable(4, 3, 2, 1);
+        assertEquals(4, table.getRowCount());
+        Row row = table.appendRow();
+        assertNotNull(row);
+        assertEquals(5, table.getRowCount());
+        assertNotNull(table.getCellByPosition(1, 1));
+    }
+    
+    @Test
+    public void test363() throws Exception {
+        TextDocument document = TextDocument.newTextDocument();
+        TableBuilder tableBuilder = document.getTableBuilder();
+        Table docBuiltTable1 = tableBuilder.newTable(2, 5, 1, 5);
+        assertNotNull(docBuiltTable1.getCellByPosition(1,1));
+        Table docBuiltTable2 = tableBuilder.newTable(1, 5, 1, 5);
+        docBuiltTable2.appendRow();
+        assertNotNull(docBuiltTable2.getCellByPosition(1,1));
+    }
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableCellRangeTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableCellRangeTest.java
new file mode 100644
index 0000000..7585c61
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableCellRangeTest.java
@@ -0,0 +1,244 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.table.TableCoveredTableCellElement;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.TextExtractor;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NodeList;
+
+public class TableCellRangeTest {
+
+	final String filename = "TestSpreadsheetTable";
+	final String odtfilename = "TestTextTable";
+	SpreadsheetDocument odsdoc;
+	TextDocument odtdoc;
+	Table odsTable, odtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			odsdoc = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename + ".ods"));
+			odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(odtfilename
+					+ ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testTextCellMerge() {
+		// get cell range, then merge
+		Table table1 = odtdoc.getTableByName("Table1");
+		// get the first two cell
+		CellRange cellRange = table1.getCellRangeByPosition(0, 0, 1, 0);
+		cellRange.merge();
+		Cell cell = cellRange.getCellByPosition(0, 0);
+		saveodt("MergeTwoCell");
+		Assert.assertEquals(cell.getDisplayText(), "cell1\ncell2");
+		try {
+			TextDocument saveddoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(odtfilename + "MergeTwoCell.odt"));
+			Table savedTable1 = saveddoc.getTableByName("Table1");
+			// get the cell range which the first cell is the covered cell.
+			// so the cell range will be enlarged
+			CellRange savedCellRange = savedTable1.getCellRangeByPosition(1, 0, 2, 0);
+			savedCellRange.merge();
+			Assert.assertTrue(savedCellRange.getColumnNumber() == 3);
+			Cell savedCell = savedCellRange.getCellByPosition(0, 0);
+			NodeList paraList = savedCell.getOdfElement().getChildNodes();
+			Assert.assertTrue(paraList.item(2) instanceof OdfTextParagraph);
+			Assert.assertEquals(TextExtractor.getText((OdfTextParagraph) paraList.item(2)), "0.00");
+			saveddoc.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeCoveredCell.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+
+		try {
+			TextDocument saveddoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(odtfilename + "MergeTwoCell.odt"));
+			Table savedTable1 = saveddoc.getTableByName("Table1");
+			// get the cell range which the first cell is the covered cell.
+			// so the cell range will be enlarged
+			CellRange savedCellRange = savedTable1.getCellRangeByPosition(0, 0, 0, 1);
+			savedCellRange.merge();
+			Assert.assertTrue(savedCellRange.getColumnNumber() == 2);
+			Assert.assertTrue(savedCellRange.getRowNumber() == 2);
+			Cell savedCell = savedCellRange.getCellByPosition(0, 1);
+			Assert.assertTrue(savedCell.getOdfElement() instanceof TableCoveredTableCellElement);
+			saveddoc.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeCoveredCell2.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	// ///////////////////////////////////////
+	// issue: removeColumnByIndex removeRowByIndex removeCellByIndex
+	@Test
+	public void testTextTableMerge() {
+		Table table1 = odtdoc.getTableByName("Table1");
+		// merge whole table
+		CellRange cellRange = table1
+				.getCellRangeByPosition(0, 0, table1.getColumnCount() - 1, table1.getRowCount() - 1);
+		cellRange.merge();
+		Assert.assertEquals(table1.getColumnCount(), 1);
+		Assert.assertEquals(table1.getRowCount(), 1);
+		saveodt("MergeTable");
+	}
+
+	@Test
+	public void testTextColumnMerge() {
+		// merge first column
+		Table table1 = odtdoc.getTableByName("Table1");
+		CellRange firstColumn = table1.getCellRangeByPosition(0, 0, 0, table1.getRowCount() - 1);
+		firstColumn.merge();
+		Cell cell = firstColumn.getCellByPosition(0, 2);
+		Cell firstCell = firstColumn.getCellByPosition(0, 0);
+		Assert.assertTrue(cell.getOwnerTableCell().equals(firstCell));
+		saveodt("MergeFirstColumn");
+		try {
+			TextDocument saveddoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(odtfilename + "MergeFirstColumn.odt"));
+			Table savedTable = saveddoc.getTableByName("Table1");
+			CellRange firstTwoColumn = savedTable.getCellRangeByPosition(0, 0, 1, savedTable.getRowCount() - 1);
+			firstTwoColumn.merge();
+			Cell cell1 = firstTwoColumn.getCellByPosition(0, 2);
+			Cell firstCell1 = firstTwoColumn.getCellByPosition(0, 0);
+			Assert.assertTrue(cell1.getOwnerTableCell().equals(firstCell1));
+			saveddoc.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeFirstTwoColumn.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testTextRowMerge() {
+		// merge first two row
+		Table table1 = odtdoc.getTableByName("Table1");
+		int rowCount = table1.getRowCount();
+		CellRange firstTwoRow = table1.getCellRangeByPosition(0, 0, table1.getColumnCount() - 1, 1);
+		firstTwoRow.merge();
+		Assert.assertTrue(rowCount == (table1.getRowCount() + 1));
+		saveodt("MergeFirstTwoRow");
+	}
+
+	@Test
+	public void testSpreadSheetMerge() {
+		// get cell range, set name
+		Table sheet1 = odsdoc.getTableByName("Sheet1");
+		CellRange cellRange = sheet1.getCellRangeByPosition(28, 0, 28, 5);
+		cellRange.setCellRangeName("test");
+		cellRange.merge();
+		CellRange cellRange1 = sheet1.getCellRangeByPosition("$E1", "$E6");
+		cellRange1.setCellRangeName("TimeCellRange");
+		cellRange1.merge();
+
+		saveods("CellRangeName");
+		try {
+			SpreadsheetDocument saveddos = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename + "CellRangeName.ods"));
+			Table savedSheet = saveddos.getTableByName("Sheet1");
+			CellRange namedCellRange = savedSheet.getCellRangeByName("TimeCellRange");
+			Cell cell = namedCellRange.getCellByPosition("A1");
+			Assert.assertTrue(cell.getRowSpannedNumber() == 6);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	@Test
+	public void testMergeExpandCellRange() {
+		try {
+			SpreadsheetDocument ods = SpreadsheetDocument.newSpreadsheetDocument();
+			// the doc contain the table which only have one column and one row
+			// element
+			Table table = ods.getTableByName("Sheet1");
+			int nCols = table.getColumnCount();
+			int nRows = table.getRowCount();
+			Assert.assertTrue(nCols == 1);
+			Assert.assertTrue(nRows == 1);
+			CellRange cellRange = table.getCellRangeByPosition("A1", "E1");
+			Cell cell = table.getCellByPosition("A1");
+			cell.setStringValue("Merge A1:E1");
+			cellRange.merge();
+			Table table2 = Table.newTable(ods, 1, 1);
+			table2.setTableName("Sheet2");
+			CellRange cellRange2 = table2.getCellRangeByPosition("A1", "F3");
+			Cell cell2 = table2.getCellByPosition("A1");
+			cell2.setStringValue("Merge A1:F3");
+			cellRange2.merge();
+			ods.save(ResourceUtilities.newTestOutputFile(filename + "MergeExpandCell.ods"));
+			table = ods.getTableByName("Sheet1");
+			Assert.assertTrue(table.getColumnCount() == 5);
+			Assert.assertTrue(table.getRowCount() == 1);
+			table = ods.getTableByName("Sheet2");
+			Assert.assertTrue(table.getColumnCount() == 6);
+			Assert.assertTrue(table.getRowCount() == 3);
+			TextDocument odt = TextDocument.newTextDocument();
+			Table swTable = Table.newTable(odt, 1, 5);
+			CellRange swCellRange = swTable.getCellRangeByPosition("A1", "E2");
+			Cell swCell = swTable.getCellByPosition("E2");
+			swCell.setStringValue("Merge A1:E2");
+			swCellRange.merge();
+			odt.save(ResourceUtilities.newTestOutputFile(odtfilename + "MergeTextExpandCell.odt"));
+			swTable = odt.getTableList().get(0);
+			Assert.assertTrue(swTable.getColumnCount() == 1);
+			Assert.assertTrue(swTable.getRowCount() == 1);
+		} catch (Exception ex) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+			Assert.fail("Failed with " + ex.getClass().getName() + ": '" + ex.getMessage() + "'");
+		}
+
+	}
+
+	private void saveods(String name) {
+		try {
+			odsdoc.save(ResourceUtilities.newTestOutputFile(filename + name + ".ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+
+	private void saveodt(String name) {
+		try {
+			odtdoc.save(ResourceUtilities.newTestOutputFile(odtfilename + name + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellRangeTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail("Failed with " + e.getClass().getName() + ": '" + e.getMessage() + "'");
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableCellTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableCellTest.java
new file mode 100644
index 0000000..97c0251
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableCellTest.java
@@ -0,0 +1,1605 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.awt.GraphicsEnvironment;
+import java.text.DecimalFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfContentDom;
+import org.odftoolkit.odfdom.dom.attribute.office.OfficeValueTypeAttribute;
+import org.odftoolkit.odfdom.dom.element.draw.DrawFrameElement;
+import org.odftoolkit.odfdom.dom.element.style.StyleParagraphPropertiesElement;
+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberDateStyle;
+import org.odftoolkit.odfdom.incubator.doc.number.OdfNumberStyle;
+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.Border;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.CellBordersType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.TextLinePosition;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.VerticalAlignmentType;
+import org.odftoolkit.simple.text.Paragraph;
+import org.odftoolkit.simple.text.list.BulletDecorator;
+import org.odftoolkit.simple.text.list.ImageDecorator;
+import org.odftoolkit.simple.text.list.ListContainer;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.odftoolkit.simple.text.list.NumberDecorator;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.SupportedLinearMeasure;
+
+
+public class TableCellTest {
+
+	private static final Logger LOGGER =  Logger.getLogger(TableCellTest.class.getName());
+	final static String SAMPLE_SPREADSHEET = "TestSpreadsheetTable";
+	final static String SAMPLE_STYLE_SPREADSHEET = "TestSpreadsheetStyleTable";
+	final static String SAMPLE_TEXT = "TestTextTable";
+	static final String filename = "testGetCellAt.ods";
+	
+	SpreadsheetDocument odsdoc, odsstyle;
+	TextDocument odtdoc;
+	Table odsTable, odtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			odsdoc = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_SPREADSHEET + ".ods"));
+			odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(SAMPLE_TEXT
+					+ ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	private void saveods() {
+		try {
+			odsdoc.save(ResourceUtilities.newTestOutputFile(SAMPLE_SPREADSHEET + "Output.ods"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@Test
+	public void testGetIndexInRowColumn() {
+		int rowindex = 2, columnindex = 1;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell cell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertEquals(rowindex, cell.getRowIndex());
+		Assert.assertEquals(columnindex, cell.getColumnIndex());
+
+		odtdoc.getTableByName("Table3");
+		Cell cell1 = table.getCellByPosition(0, 1);
+		Assert.assertEquals(1, cell1.getRowIndex());
+		Assert.assertEquals(0, cell1.getColumnIndex());
+	}
+
+	@Test
+	public void testGetSetHoriAlignment() {
+		int rowindex = 3, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		HorizontalAlignmentType align = fcell.getHorizontalAlignmentType();
+		Assert.assertEquals(HorizontalAlignmentType.CENTER, align);
+
+		fcell.setHorizontalAlignment(HorizontalAlignmentType.DEFAULT);
+		HorizontalAlignmentType newAlign = fcell.getHorizontalAlignmentType();
+		Assert.assertEquals(HorizontalAlignmentType.DEFAULT, newAlign);
+
+		fcell.setHorizontalAlignment(HorizontalAlignmentType.LEFT);
+		align = fcell.getHorizontalAlignmentType();
+		Assert.assertEquals(HorizontalAlignmentType.LEFT, align);
+
+		// "left" and "right" should be mapped as "start" and "end".
+		fcell.setHorizontalAlignment(HorizontalAlignmentType.LEFT);
+		// get string
+		String aligns = fcell.getHorizontalAlignment();
+		Assert.assertEquals("start", aligns);
+		// get type
+		align = fcell.getHorizontalAlignmentType();
+		Assert.assertEquals(HorizontalAlignmentType.LEFT, align);
+		fcell.setHorizontalAlignment(HorizontalAlignmentType.RIGHT);
+		// get string
+		aligns = fcell.getHorizontalAlignment();
+		Assert.assertEquals("end", aligns);
+		// get type
+		align = fcell.getHorizontalAlignmentType();
+		Assert.assertEquals(HorizontalAlignmentType.RIGHT, align);
+		saveods();
+
+		SpreadsheetDocument ods;
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell = tbl.getCellByPosition(0, 0);
+			HorizontalAlignmentType horizonAlignment = cell.getHorizontalAlignmentType();
+			Assert.assertEquals(HorizontalAlignmentType.DEFAULT, horizonAlignment);
+
+			table = ods.getTableByName("Sheet2");
+			if (table != null) {
+				table.remove();
+			}
+			table = Table.newTable(ods);
+			table.setTableName("Sheet2");
+			cell = table.getCellByPosition(1, 1);
+			cell.setHorizontalAlignment(HorizontalAlignmentType.CENTER);
+			horizonAlignment = cell.getHorizontalAlignmentType();
+			Assert.assertEquals(HorizontalAlignmentType.CENTER, horizonAlignment);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetVertAlignment() {
+		int rowindex = 3, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		StyleTypeDefinitions.VerticalAlignmentType align = fcell.getVerticalAlignmentType();
+		Assert.assertEquals(StyleTypeDefinitions.VerticalAlignmentType.TOP, align);
+
+		fcell.setVerticalAlignment(VerticalAlignmentType.DEFAULT);
+		StyleTypeDefinitions.VerticalAlignmentType newAlign = fcell.getVerticalAlignmentType();
+		Assert.assertEquals(StyleTypeDefinitions.VerticalAlignmentType.DEFAULT, newAlign);
+
+		fcell.setVerticalAlignment(StyleTypeDefinitions.VerticalAlignmentType.BOTTOM);
+		align = fcell.getVerticalAlignmentType();
+		Assert.assertEquals(StyleTypeDefinitions.VerticalAlignmentType.BOTTOM, align);
+		saveods();
+		SpreadsheetDocument ods;
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell = tbl.getCellByPosition(0, 0);
+			StyleTypeDefinitions.VerticalAlignmentType verticalAlignment = cell.getVerticalAlignmentType();
+			Assert.assertEquals(StyleTypeDefinitions.VerticalAlignmentType.DEFAULT, verticalAlignment);
+
+			table = ods.getTableByName("Sheet2");
+			if (table != null) {
+				table.remove();
+			}
+			table = Table.newTable(ods);
+			table.setTableName("Sheet2");
+			cell = table.getCellByPosition(1, 1);
+			cell.setVerticalAlignment(StyleTypeDefinitions.VerticalAlignmentType.TOP);
+			verticalAlignment = cell.getVerticalAlignmentType();
+			Assert.assertEquals(StyleTypeDefinitions.VerticalAlignmentType.TOP, verticalAlignment);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetValueType() {
+		int rowindex = 3, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setValueType(null);
+		} catch (IllegalArgumentException ie) {
+			if ("type shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		fcell.setValueType("date");
+		String valueType = fcell.getValueType();
+		Assert.assertEquals("date", valueType);
+		saveods();
+
+		SpreadsheetDocument ods;
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell = tbl.getCellByPosition(0, 0);
+			valueType = cell.getValueType();
+			Assert.assertEquals(null, valueType);
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetWrapOption() {
+		int rowindex = 5, columnindex = 8;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		boolean wrap = fcell.isTextWrapped();
+		Assert.assertEquals(true, wrap);
+
+		fcell.setTextWrapped(false);
+		wrap = fcell.isTextWrapped();
+		Assert.assertEquals(false, wrap);
+		saveods();
+	}
+
+	@Test
+	public void testGetSetTextValue() {
+		int rowindex = 5, columnindex = 8;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		String text = fcell.getDisplayText();
+		Assert.assertEquals("this is a big cell with a big table", text);
+
+		fcell.setDisplayText("changed");
+		text = fcell.getDisplayText();
+		Assert.assertEquals("changed", text);
+		// reproduce bug 150.
+		fcell.setDisplayText(null);
+		text = fcell.getDisplayText();
+		Assert.assertEquals("", text);
+		fcell.setDisplayText(null, "automatic7777");
+		text = fcell.getDisplayText();
+		Assert.assertEquals("", text);
+		saveods();
+
+		Table table1 = odtdoc.getTableByName("Table1");
+		Cell fcell2 = table1.getCellByPosition(0, 1);
+		text = fcell2.getDisplayText();
+		Assert.assertEquals("Aa\nbb\ncc\ndd\nee", text);
+	}
+
+	@Test
+	public void testSetGetFormat() {
+		int rowindex = 3, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		fcell.setFormatString("#0.0");
+		String displayvalue = fcell.getDisplayText();
+		Assert.assertEquals("300" + (new DecimalFormatSymbols()).getDecimalSeparator() + "0", displayvalue);
+		String format = fcell.getFormatString();
+		Assert.assertEquals("#0.0", format);
+
+		Cell dcell = table.getCellByPosition(3, 2);
+		format = dcell.getFormatString();
+		Assert.assertEquals("MMM d, yy", format);
+
+		dcell.setFormatString("yyyy-MM-dd");
+		displayvalue = dcell.getDisplayText();
+		Assert.assertEquals("2008-12-23", displayvalue);
+
+		Cell pcell = table.getCellByPosition("B2");
+		format = pcell.getFormatString();
+		Assert.assertEquals("#0%", format);
+
+		pcell.setFormatString("#0.00%");
+		displayvalue = pcell.getDisplayText();
+		Assert.assertEquals("200" + (new DecimalFormatSymbols()).getDecimalSeparator() + "00%", displayvalue);
+		try {
+			Row tablerow = table.getRowByIndex(6);
+			Cell cell = tablerow.getCellByIndex(3);
+			Calendar currenttime = Calendar.getInstance();
+			cell.setDateValue(currenttime);
+			cell.setFormatString("yyyy-MM-dd");
+			tablerow = table.getRowByIndex(7);
+			cell = tablerow.getCellByIndex(3);
+			cell.setTimeValue(currenttime);
+			cell.setFormatString("HH:mm:ss");
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		saveods();
+
+		// test value type adapt function.
+		SpreadsheetDocument ods;
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setDoubleValue(new Double(i));
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=sum(A1:A10)");
+			// contains '#' should be adapted as float.
+			cell.setFormatString("#,###");
+			Assert.assertEquals("float", cell.getValueType());
+			cell = tbl.getCellByPosition("A12");
+			cell.setFormula("=sum(A1:A10)");
+			// contains '0' should be adapted as float.
+			cell.setFormatString("0.00");
+			Assert.assertEquals("float", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setPercentageValue(0.1);
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=sum(A1:A10)");
+			// contains '%'should be adapted as percentage.
+			cell.setFormatString("###.0%");
+			Assert.assertEquals("percentage", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setDateValue(Calendar.getInstance());
+				cell.setFormatString("yyyy.MM.dd");
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=max(A1:A10)");
+			// contains 'y' 'M' 'd' should be adapted as date.
+			cell.setFormatString("yyyy.MM.dd");
+			Assert.assertEquals("date", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell;
+			for (int i = 1; i <= 10; i++) {
+				cell = tbl.getCellByPosition("A" + i);
+				cell.setTimeValue(Calendar.getInstance());
+				cell.setFormatString("yyyy.MM.dd HH:mm:ss");
+			}
+			cell = tbl.getCellByPosition("A11");
+			cell.setFormula("=max(A1:A10)");
+			// contains 'H' 'm' 's' should be adapted as time.
+			cell.setFormatString("yyyy.MM.dd HH:mm:ss");
+			Assert.assertEquals("time", cell.getValueType());
+			cell = tbl.getCellByPosition("A12");
+			cell.setFormula("=max(A1:A10)");
+			// contains 'H' 'm' 's' should be adapted as time.
+			cell.setFormatString("HH:mm:ss");
+			Assert.assertEquals("time", cell.getValueType());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void loadOutputSpreadsheet() {
+		try {
+			odsdoc = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_SPREADSHEET + "Output.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@Test
+	public void testGetSetCellBackgroundColor() throws Exception {
+		int rowindex = 2, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setCellBackgroundColor(new Color("#ffffff"));
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set color as DEFAULT_BACKGROUND_COLOR #FFFFFF
+		Assert.assertEquals("#ffffff", fcell.getCellBackgroundColor().toString());
+
+		Color expectedColor = Color.valueOf("#000000");
+		fcell.setCellBackgroundColor(expectedColor);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expectedColor.toString(), fcell.getCellBackgroundColor().toString());
+
+		SpreadsheetDocument ods;
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			Cell cell = tbl.getCellByPosition(0, 0);
+			Color actualBackColor = cell.getCellBackgroundColor();
+			Assert.assertEquals("#ffffff", actualBackColor.toString());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetColumnSpannedNumber() throws Exception {
+		int rowindex = 2, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setColumnSpannedNumber(-2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set column spanned number as DEFAULT_COLUMN_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnSpannedNumber());
+
+		fcell.setColumnSpannedNumber(0);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set column spanned number as DEFAULT_COLUMN_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnSpannedNumber());
+
+		fcell.setColumnSpannedNumber(2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(2, fcell.getColumnSpannedNumber());
+	}
+
+	@Test
+	public void testGetSetRowSpannedNumber() throws Exception {
+		int rowindex = 2, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setRowSpannedNumber(-2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set row spanned number as DEFAULT_ROW_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getRowSpannedNumber());
+
+		fcell.setRowSpannedNumber(0);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set row spanned number as DEFAULT_ROW_SPANNED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getRowSpannedNumber());
+
+		fcell.setRowSpannedNumber(2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(2, fcell.getRowSpannedNumber());
+
+	}
+
+	@Test
+	public void testGetSetColumnsRepeatedNumber() throws Exception {
+		int rowindex = 3, columnindex = 1;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setColumnsRepeatedNumber(-2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set columns repeated number as DEFAULT_COLUMNS_REPEATED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnsRepeatedNumber());
+
+		fcell.setColumnsRepeatedNumber(0);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		// set columns repeated number as DEFAULT_COLUMNS_REPEATED_NUMBER 1.
+		Assert.assertEquals(1, fcell.getColumnsRepeatedNumber());
+
+		fcell.setColumnsRepeatedNumber(2);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(2, fcell.getColumnsRepeatedNumber());
+	}
+
+	@Test
+	public void testGetSetDateValue() {
+		int rowindex = 7, columnindex = 7;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setDateValue(null);
+		} catch (IllegalArgumentException ie) {
+			if ("date shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		Calendar expectedCalendar = new GregorianCalendar(2010, 1, 30);
+		fcell.setDateValue(expectedCalendar);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(0, fcell.getDateValue().compareTo(expectedCalendar));
+	}
+	
+	@Test
+	public void testDateTimeValue() {
+		int rowindex = 7, columnindex = 7;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		try {
+			fcell.setDateTimeValue(null);
+			Assert.fail("Null date time value should throw IllegalArgumentException");
+		} catch (IllegalArgumentException ie) {
+			Assert.assertEquals("date shouldn't be null.", ie.getMessage());
+		}
+
+		Calendar expectedCalendar = new GregorianCalendar(2010, 1, 30, 23, 12, 56);
+		fcell.setDateTimeValue(expectedCalendar);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expectedCalendar, fcell.getDateTimeValue());
+	}
+	
+
+        @Test
+        public void testGetFromEmptyDateValue() throws Exception {
+            Table table = odsdoc.getTableByName("Sheet1");
+            Cell cell = table.appendRow().getCellByIndex(1);
+            cell.setValueType(OfficeValueTypeAttribute.Value.DATE.toString());
+            Assert.assertNull(cell.getDateValue());
+        }
+        
+        @Test
+        public void testGetFromEmptyTimeValue() throws Exception {
+            Table table = odsdoc.getTableByName("Sheet1");
+            Cell cell = table.appendRow().getCellByIndex(1);
+            cell.setValueType(OfficeValueTypeAttribute.Value.TIME.toString());
+            Assert.assertNull(cell.getTimeValue());
+        }
+
+	@Test
+	public void testGetSetStringValue() {
+		int rowindex = 6, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setStringValue(null);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals("", fcell.getStringValue());
+
+		String expectedString = "hello world";
+		fcell.setStringValue(expectedString);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expectedString, fcell.getStringValue());
+	}
+
+	@Test
+	public void testGetSetBooleanValue() {
+		int rowindex = 5, columnindex = 5;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean expected = false;
+		fcell.setBooleanValue(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertFalse(fcell.getBooleanValue());
+	}
+
+	@Test
+	public void testGetSetCurrencyValue() {
+		int rowindex = 5, columnindex = 5;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setValueType("currency");
+		fcell.setCurrencyFormat("$", "#,##0.00");
+		Double actualValue = fcell.getCurrencyValue();
+		Assert.assertNull(actualValue);
+
+		double expected = 100.00;
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setCurrencyValue(expected, null);
+		} catch (IllegalArgumentException ie) {
+			if ("currency shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		fcell.setCurrencyValue(expected, "USD");
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getCurrencyValue());
+	}
+
+	@Test
+	public void testGetSetCurrencyDesc() {
+		int rowindex = 1, columnindex = 2;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setCurrencyCode(null);
+		} catch (IllegalArgumentException ie) {
+			if ("Currency code of cell should not be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		String expected = "USD";
+		fcell.setCurrencyCode(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getCurrencyCode());
+	}
+
+	@Test
+	public void testGetSetPercentageValue() {
+		int rowindex = 5, columnindex = 5;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		double expected = 56.98;
+		fcell.setPercentageValue(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getPercentageValue());
+	}
+
+	@Test
+	public void testGetSetTimeValue() {
+		int rowindex = 0, columnindex = 4;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setTimeValue(null);
+		} catch (IllegalArgumentException ie) {
+			if ("time shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		Calendar expected = Calendar.getInstance();
+		fcell.setTimeValue(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+
+		SimpleDateFormat simpleFormat = new SimpleDateFormat("'PT'HH'H'mm'M'ss'S'");
+		String expectedString = simpleFormat.format(expected.getTime());
+		String targetString = simpleFormat.format(fcell.getTimeValue().getTime());
+		Assert.assertEquals(expectedString, targetString);
+	}
+
+	@Test
+	public void testGetSetFormula() {
+		int rowindex = 1, columnindex = 10;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setFormula(null);
+		} catch (IllegalArgumentException ie) {
+			if ("formula shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		String expected = "of:=[.I2]*4";
+		fcell.setFormula(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getFormula());
+	}
+
+	/**
+	 * This test case is used to check whether the new created cell uses correct
+	 * style settings.</br> SIMPLE allows users to set if cell styles are
+	 * inherited or not whenever a new cell is added to the table. The default
+	 * setting is using inheritance. In this condition, the style of new column
+	 * is same with the last column before the inserted position, while the
+	 * style of new row is same with the last row before the inserted position.<br/>
+	 * This feature setting will influence <code>appendRow()</code>,
+	 * <code>appendColumn()</code>, <code>appendRows()</code>,
+	 * <code>appendColumns()</code>, <code>insertRowsBefore()</code> and
+	 * <code>insertColumnsBefore()</code>. In default setting condition, the
+	 * style name of new created cells after these methods called should be
+	 * "ce1" which is inherited from preceding cell. <br/>
+	 * But after setting cell style inheritance false, these new created cells'
+	 * style name should be "Default", which is not inherited from preceding
+	 * one.<br/>
+	 * For <code>getCellByPosition()</code>,
+	 * <code>getCellRangeByPosition()</code>, <code>getCellRangeByName()</code>,
+	 * <code>getRowByIndex()</code> and <code>getColumnByIndex()</code>, if need
+	 * automatically expand cells, it will return empty cell(s) without any
+	 * style settings. Inheritance setting have no effect on them, so for cells
+	 * which created after these methods are called, should have "Default" style
+	 * name.
+	 */
+	@Test
+	public void testGetStyleName() {
+		try {
+			odsstyle = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_STYLE_SPREADSHEET + ".ods"));
+			int rowindex = 1, columnindex = 0;
+			Table table = odsstyle.getTableByName("Sheet1");
+			Cell fcell = table.getCellByPosition(columnindex, rowindex);
+			String expected = "ce1";
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// the default setting is inherited, so for new row,
+			// the cell style name should be "ce1".
+			// test appendColumn
+			table.appendColumn();
+			int columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test appendRow
+			table.appendRow();
+			int rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test insertRowsBefore
+			table.insertRowsBefore(rowindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex, rowindex + 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test insertColumnsBefore
+			table.insertColumnsBefore(columnindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex + 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test appendColumns
+			table.appendColumns(2);
+			columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test appendRows
+			table.appendRows(2);
+			rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// for getCellByPosition the return cell style should be "Default".
+			fcell = table.getCellByPosition(table.getColumnCount() + 1, table.getRowCount() + 1);
+			Assert.assertEquals("Default", fcell.getStyleName());
+			odsstyle.close();
+
+			// change setting is not inherited, so for new row,
+			// the cell style name should be "Default".
+			odsstyle = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_STYLE_SPREADSHEET + ".ods"));
+			rowindex = 1;
+			columnindex = 0;
+			table = odsstyle.getTableByName("Sheet1");
+			table.setCellStyleInheritance(false);
+			expected = "Default";
+			table.appendColumn();
+			columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test appendRow
+			table.appendRow();
+			rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test insertRowsBefore
+			table.insertRowsBefore(rowindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex, rowindex + 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test insertColumnsBefore
+			table.insertColumnsBefore(columnindex + 1, 1);
+			fcell = table.getCellByPosition(columnindex + 1, rowindex);
+			// Assert.assertEquals(expected, fcell.getStyleName());
+			// test appendColumns
+			table.appendColumns(2);
+			columnCount = table.getColumnCount();
+			fcell = table.getCellByPosition(columnCount - 1, rowindex);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// test appendRows
+			table.appendRows(2);
+			rowCount = table.getRowCount();
+			fcell = table.getCellByPosition(columnindex, rowCount - 1);
+			Assert.assertEquals(expected, fcell.getStyleName());
+			// for getCellByPosition the return cell style should be "Default".
+			fcell = table.getCellByPosition(table.getColumnCount(), table.getRowCount());
+			Assert.assertEquals("Default", fcell.getStyleName());
+			odsstyle.close();
+		} catch (Exception e) {
+			Assert.fail(e.toString());
+		}
+	}
+
+	@Test
+	public void testGetTableColumn() {
+		int rowindex = 2, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertNotNull(fcell.getTableColumn());
+		Assert.assertEquals(columnindex, fcell.getTableColumn().getColumnIndex());
+	}
+
+	@Test
+	public void testGetTableRow() {
+		int rowindex = 2, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertNotNull(fcell.getTableRow());
+		Assert.assertEquals(rowindex, fcell.getTableRow().getRowIndex());
+	}
+
+	@Test
+	public void testRemoveContent() {
+		int rowindex = 5, columnindex = 8;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		Assert.assertTrue(fcell.mCellElement.getChildNodes().getLength() > 0);
+		fcell.removeContent();
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(0, fcell.mCellElement.getChildNodes().getLength());
+	}
+
+	@Test
+	public void testRemoveTextContent() throws Exception {
+		int rowindex = 5, columnindex = 8;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+
+		// how to test?
+		fcell.removeContent();
+		Assert.assertEquals(0, fcell.mCellElement.getChildNodes().getLength());
+
+		fcell.setDisplayText("hello");
+		DrawFrameElement drawEle = new DrawFrameElement(odsdoc.getContentDom());
+		drawEle.newDrawImageElement();
+		fcell.mCellElement.appendChild(drawEle);
+
+		Assert.assertEquals(2, fcell.mCellElement.getChildNodes().getLength());
+
+		fcell.removeTextContent();
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(1, fcell.mCellElement.getChildNodes().getLength());
+	}
+
+	@Test
+	public void testGetSetDisplayText() {
+		int rowindex = 5, columnindex = 5;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		String expected = "display text";
+		fcell.setDisplayText(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getDisplayText());
+		// if the value type is "float", cell value need to be updated, too.
+		String cellAddress = "A4";
+		fcell = table.getCellByPosition(cellAddress);
+		expected = "400.0";
+		int expectedValue = 400;
+		fcell.setDisplayText(expected);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(cellAddress);
+		Assert.assertEquals(expected, fcell.getDisplayText());
+		Assert.assertEquals(expectedValue, fcell.getDoubleValue().intValue());
+	}
+
+	@Test
+	public void testGetSetFormatString() {
+		int rowindex = 3, columnindex = 0;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		boolean illegalArgumentFlag = false;
+		try {
+			fcell.setFormatString(null);
+		} catch (IllegalArgumentException ie) {
+			if ("formatStr shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		// float format string
+		String expected = "#0.0";
+		fcell.setFormatString(expected);
+		// date format string
+		// String expected="MMM d, yy";
+		// String expected="yyyy-MM-dd";
+
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expected, fcell.getFormatString());
+	}
+
+	@Test
+	public void testGetCurrencySymbol() {
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell cell1 = table.getCellByPosition("C2");
+		Assert.assertEquals("$", cell1.getCurrencySymbol());
+		Cell cell2 = table.getCellByPosition("C3");
+		Assert.assertEquals("CNY", cell2.getCurrencySymbol());
+	}
+
+	@Test
+	public void testGetSetCurrencyFormat() {
+		Table table = odsdoc.getTableByName("Sheet1");
+		String[] formats = { "$#,##0.00", "#,##0.00 CNY", "$#,##0.0" };
+
+		Cell cell = table.getCellByPosition("J1");
+		boolean illegalArgumentFlag = false;
+		try {
+			cell.setCurrencyFormat(null, formats[0]);
+		} catch (IllegalArgumentException ie) {
+			if ("currencySymbol shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		try {
+			cell.setCurrencyFormat("$", null);
+		} catch (IllegalArgumentException ie) {
+			if ("format shouldn't be null.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+
+		cell.setCurrencyValue(32.12, "USD");
+		cell.setCurrencyFormat("$", formats[0]);
+
+		cell = table.getCellByPosition("J2");
+		cell.setCurrencyValue(new Double(32), "CNY");
+		cell.setCurrencyFormat("CNY", formats[1]);
+
+		cell = table.getCellByPosition("J3");
+		cell.setCurrencyValue(-32.12, "USD");
+		cell.setCurrencyFormat("$", formats[2]);
+
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		for (int i = 1; i <= 3; i++) {
+			Cell newcell = table.getCellByPosition("J" + i);
+			Assert.assertEquals(formats[i - 1], newcell.getFormatString());
+		}
+	}
+
+	@Test
+	public void testSetDefaultCellStyle() {
+		SpreadsheetDocument outputDocument;
+		OdfContentDom contentDom; // the document object model for content.xml
+		// the office:automatic-styles element in content.xml
+		OdfOfficeAutomaticStyles contentAutoStyles;
+		OdfStyle style;
+		String noaaDateStyleName;
+		String noaaTempStyleName;
+
+		try {
+			outputDocument = SpreadsheetDocument.newSpreadsheetDocument();
+			contentDom = outputDocument.getContentDom();
+			contentAutoStyles = contentDom.getOrCreateAutomaticStyles();
+
+			OdfNumberDateStyle dateStyle = new OdfNumberDateStyle(contentDom, "yyyy-MM-dd", "numberDateStyle", null);
+			OdfNumberStyle numberStyle = new OdfNumberStyle(contentDom, "#0.00", "numberTemperatureStyle");
+
+			contentAutoStyles.appendChild(dateStyle);
+			contentAutoStyles.appendChild(numberStyle);
+
+			style = contentAutoStyles.newStyle(OdfStyleFamily.TableCell);
+			noaaDateStyleName = style.getStyleNameAttribute();
+			style.setStyleDataStyleNameAttribute("numberDateStyle");
+
+			// and for time cells
+			style = contentAutoStyles.newStyle(OdfStyleFamily.TableCell);
+			noaaTempStyleName = style.getStyleNameAttribute();
+			style.setStyleDataStyleNameAttribute("numberTemperatureStyle");
+			style.setProperty(StyleParagraphPropertiesElement.TextAlign, "end");
+
+			Table table = Table.newTable(outputDocument);
+			List<Column> columns = table.insertColumnsBefore(0, 3);
+			Column column = columns.get(0);
+			column.setDefaultCellStyle(contentAutoStyles.getStyle(noaaDateStyleName, OdfStyleFamily.TableCell));
+			Cell aCell = column.getCellByIndex(0);
+			aCell.setValueType("date");
+			String format = aCell.getFormatString();
+			Assert.assertEquals("yyyy-MM-dd", format);
+
+			List<Row> rows = table.insertRowsBefore(0, 1);
+			Row row = rows.get(0);
+			row.setDefaultCellStyle(contentAutoStyles.getStyle(noaaTempStyleName, OdfStyleFamily.TableCell));
+			Cell bCell = row.getCellByIndex(0);
+			bCell.setValueType("float");
+			String bformat = bCell.getFormatString();
+			Assert.assertEquals("#0.00", bformat);
+			Assert.assertEquals("end", bCell.getHorizontalAlignment());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testSetGetFont() {
+		try {
+			SpreadsheetDocument document;
+			document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table1 = document.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			cell1.setStringValue("abcdefg");
+			Font font1 = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 12, Color.BLACK,
+					StyleTypeDefinitions.TextLinePosition.THROUGH);
+			cell1.setFont(font1);
+			Font font11 = cell1.getFont();
+			System.out.println(font11);
+			if (!font11.equals(font1))
+				Assert.fail();
+
+			Cell cell2 = table1.getCellByPosition("A2");
+			cell2.setStringValue("redstring");
+			Font font2 = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 12, Color.RED,
+					StyleTypeDefinitions.TextLinePosition.UNDER);
+			cell2.setFont(font2);
+			Font font22 = cell2.getFont();
+			System.out.println(font22);
+			if (!font22.equals(font2))
+				Assert.fail();
+			document.save(ResourceUtilities.newTestOutputFile("TestSetGetFont.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testSetGetBorder() {
+		try {
+			SpreadsheetDocument document;
+			document = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table1 = document.getTableByName("Sheet1");
+			Cell cell1 = table1.getCellByPosition("A1");
+			cell1.setStringValue("four border");
+			Border border = new Border(Color.RED, 1, StyleTypeDefinitions.SupportedLinearMeasure.PT);
+			cell1.setBorders(CellBordersType.ALL_FOUR, border);
+			Border bottomBorder = cell1.getStyleHandler().getBorder(CellBordersType.BOTTOM);
+			Assert.assertEquals(border, bottomBorder);
+
+			Cell cell2 = table1.getCellByPosition("C2");
+			cell2.setStringValue("top bottom");
+			Border border2 = new Border(Color.BLUE, 5, 1, 2, StyleTypeDefinitions.SupportedLinearMeasure.PT);
+			cell2.setBorders(CellBordersType.TOP_BOTTOM, border2);
+			Border bottomBorder2 = cell2.getStyleHandler().getBorder(CellBordersType.BOTTOM);
+			Assert.assertEquals(border2, bottomBorder2);
+			Border bottomBorder22 = cell2.getStyleHandler().getBorder(CellBordersType.LEFT);
+			Assert.assertEquals(Border.NONE, bottomBorder22);
+			document.save(ResourceUtilities.newTestOutputFile("TestSetGetBorder.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testAddRemoveIterateList() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Table table = Table.newTable(doc, 3, 3);
+			ListDecorator bulletDecorator = new BulletDecorator(doc);
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+			ListDecorator imageDecorator = new ImageDecorator(doc, ResourceUtilities.getURI("image_list_item.png"));
+			String[] numberItemContents = { "number item 1", "number item 2", "number item 3" };
+
+			// add list.
+			ListContainer container = table.getCellByPosition(0, 0);
+			org.odftoolkit.simple.text.list.List bulletList = container.addList(bulletDecorator);
+			bulletList.addItems(numberItemContents);
+			container = table.getCellByPosition(1, 1);
+			org.odftoolkit.simple.text.list.List numberList = container.addList(numberDecorator);
+			numberList.addItems(numberItemContents);
+			container = table.getCellByPosition(2, 2);
+			org.odftoolkit.simple.text.list.List imageList = container.addList(imageDecorator);
+			imageList.addItems(numberItemContents);
+			// iterate list
+			Assert.assertTrue(container.getListIterator().hasNext());
+			// remove list
+			container.clearList();
+			Assert.assertFalse(container.getListIterator().hasNext());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	/**
+	 * This test case check whether getNoteText and setNoteText work as
+	 * expected. When test getNoteText, the cell note may be null, a text
+	 * paragraph with style or a text list. getNoteText extracts the text
+	 * content from them and return it as string. When test setNoteText, a text
+	 * paragraph will be created to show text content. text list and style is
+	 * not supported.
+	 */
+	@Test
+	public void testGetSetNoteText() throws Exception {
+		int rowindex = 10, columnindex = 12;
+		Table table = odsdoc.getTableByName("Sheet1");
+		Cell fcell = table.getCellByPosition(columnindex, rowindex);
+		String note = fcell.getNoteText();
+		Assert.assertNull(note);
+		// cell A16 contains a text paragraph without style.
+		fcell = table.getCellByPosition("A16");
+		Assert.assertEquals("note1 ", fcell.getNoteText());
+		// cell A16 contains a text paragraph with style.
+		fcell = table.getCellByPosition("A17");
+		Assert.assertEquals("note2 ", fcell.getNoteText());
+		// cell A16 contains a text list with style. all of the list items
+		// should be extracted.
+		fcell = table.getCellByPosition("A18");
+		Assert.assertEquals("note1note2note3", fcell.getNoteText());
+		String expectedNote = "note test";
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		fcell.setNoteText(expectedNote);
+		saveods();
+		// reload
+		loadOutputSpreadsheet();
+		table = odsdoc.getTableByName("Sheet1");
+		fcell = table.getCellByPosition(columnindex, rowindex);
+		Assert.assertEquals(expectedNote, fcell.getNoteText());
+	}
+
+	@Test
+	public void testGetSetImage() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Table table = Table.newTable(doc, 2, 2);
+			table.setTableName("ImageTable");
+			Cell cell = table.getCellByPosition(0, 0);
+			cell.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			doc.save(ResourceUtilities.newTestOutputFile("ImageCellTable.odt"));
+
+			// load the document again.
+			doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("ImageCellTable.odt"));
+			table = doc.getTableByName("ImageTable");
+			cell = table.getCellByPosition(0, 0);
+			// image height = 34 pixels.
+			Assert.assertEquals(34, cell.getBufferedImage().getHeight(null));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCellParagraph() {
+		String[] plainText = { "nospace", "one space", "two  spaces", "three   spaces", "   three leading spaces",
+				"three trailing spaces   ", "one\ttab", "two\t\ttabs", "\tleading tab", "trailing tab\t",
+				"mixed   \t   spaces and tabs", "line" + System.getProperty("line.separator") + "break" };
+
+		String[][] elementResult = { { "nospace" }, { "one space" }, { "two ", "*s1", "spaces" },
+				{ "three ", "*s2", "spaces" }, { " ", "*s2", "three leading spaces" },
+				{ "three trailing spaces ", "*s2" }, { "one", "*t", "tab" }, { "two", "*t", "*t", "tabs" },
+				{ "*t", "leading tab" }, { "trailing tab", "*t" },
+				{ "mixed ", "*s2", "*t", " ", "*s2", "spaces and tabs" }, { "line", "*n", "break" } };
+		try {
+			// test append paragraph
+			TextDocument doc = TextDocument.newTextDocument();
+			Table table = Table.newTable(doc, 2, 2);
+			Cell cell = table.getCellByPosition(0, 0);
+			for (int i = 0; i < plainText.length; i++) {
+				Paragraph para = cell.addParagraph(plainText[i]);
+				compareResults(para.getOdfElement(), plainText[i], elementResult[i]);
+			}
+
+			// test set paragraph content
+			cell = table.getCellByPosition(0, 1);
+			for (int i = 0; i < plainText.length; i++) {
+				Paragraph para = cell.addParagraph(plainText[i]);
+				compareResults(para.getOdfElement(), plainText[i], elementResult[i]);
+				String content = para.getTextContent();
+				Assert.assertEquals(plainText[i], content);
+			}
+
+			// test remove paragraph content
+			cell = table.getCellByPosition(1, 0);
+			for (int i = 0; i < plainText.length; i++) {
+				Paragraph para = cell.addParagraph(plainText[i]);
+				String content = para.getTextContent();
+				Assert.assertEquals(plainText[i], content);
+				para.removeTextContent();
+				content = para.getTextContent();
+				Assert.assertEquals("", content);
+			}
+
+			// test get paragraph by index
+			cell = table.getCellByPosition(1, 1);
+			Paragraph paragraph1 = cell.addParagraph("paragraph1");
+			Paragraph paragraphE = cell.addParagraph(null);
+			Paragraph paragraph2 = cell.addParagraph("p2");
+
+			Paragraph t1 = cell.getParagraphByIndex(0, false);
+			Assert.assertEquals(t1, paragraph1);
+			t1 = cell.getParagraphByIndex(2, false);
+			Assert.assertEquals(t1, paragraph2);
+			t1 = cell.getParagraphByIndex(1, true);
+			Assert.assertEquals(t1, paragraph2);
+			t1 = cell.getParagraphByReverseIndex(0, false);
+			Assert.assertEquals(t1, paragraph2);
+			t1 = cell.getParagraphByReverseIndex(2, false);
+			Assert.assertEquals(t1, paragraph1);
+			t1 = cell.getParagraphByReverseIndex(1, true);
+			Assert.assertEquals(t1, paragraph1);
+			doc.save(ResourceUtilities.newTestOutputFile("testCellParagraph.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testCellSizeOptimal() {
+		Font font1Base = new Font("Arial", FontStyle.REGULAR, 6, Color.GREEN, TextLinePosition.REGULAR);
+		Font font2Base = new Font("Times New Roman", FontStyle.REGULAR, 13, Color.RED, TextLinePosition.REGULAR);
+		Font font3Base = new Font("SimSun", FontStyle.REGULAR, 17, Color.BLUE, TextLinePosition.REGULAR);
+		try {
+			final SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			final Table table = doc.addTable();
+			final String contentStr = "This is a long text content.";
+			
+			// basically the default font is of Arial type, so assume the default family
+			final String nfFamilyName = "Arial";
+			
+			if (isFontAvailable(nfFamilyName)) {
+				checkCellWidth(table.getCellByPosition(0, 0), null, 44.0977, contentStr);
+			}
+			if (isFontAvailable(font1Base.getFamilyName())) {
+				checkCellWidth(table.getCellByPosition(1, 1), font1Base, 24.3424, contentStr);
+			}
+			if (isFontAvailable(font2Base.getFamilyName())) {
+				checkCellWidth(table.getCellByPosition(2, 2), font2Base, 49.7414, contentStr);
+			}
+			if (isFontAvailable(font3Base.getFamilyName())) {
+				checkCellWidth(table.getCellByPosition(3, 3), font3Base, 88.899, contentStr);
+			}
+			doc.save(ResourceUtilities.newTestOutputFile("testCellSizeOptimal.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private boolean isFontAvailable(String name) {
+		java.awt.Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
+		for (java.awt.Font font : fonts) {
+			if (font.getName().equalsIgnoreCase(name)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private void checkCellWidth(Cell cell, Font font, double expectedOptimalWidth, String contentStr) {
+		try {
+			if (font != null) {
+				cell.setFont(font);
+			}
+			cell.getTableColumn().setUseOptimalWidth(true);
+			cell.setStringValue(contentStr);
+			Assert.assertEquals(expectedOptimalWidth, cell.getTableColumn().getWidth());
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetValidityListAndInputHelpMessage() {
+		try {
+			int rowindex = 2, columnindex = 2;
+			Table table = odsdoc.getTableByName("Sheet2");
+			Cell fcell = table.getCellByPosition(columnindex, rowindex);
+			List<String> values = new ArrayList<String>(Arrays.asList("Mon", "Tue", "Wed", "Thu", "Fri"));
+			fcell.setValidityList(values);
+			fcell.setInputHelpMessage("Tip", "This cell only allows working days.");
+			fcell.setStringValue("Tue");
+			Assert.assertNotNull(fcell.getOdfElement().getTableContentValidationNameAttribute());
+			saveods();
+		} catch (Exception e) {
+			Logger.getLogger(TableCellTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void compareResults(Element element, String input, String[] output) {
+		int i;
+		int nSpaces;
+		int nSpacesInAttribute;
+		Node node = element.getFirstChild();
+		for (i = 0; i < output.length; i++) {
+			if (output[i].startsWith("*")) {
+				Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+				if (output[i].equals("*t")) {
+					Assert.assertEquals("tab", node.getLocalName());
+				} else if (output[i].equals("*n")) {
+					Assert.assertEquals("line-break", node.getLocalName());
+				} else {
+					nSpaces = Integer.parseInt(output[i].substring(2));
+					Assert.assertEquals(node.getLocalName(), "s");
+					nSpacesInAttribute = Integer.parseInt(((Element) node).getAttribute("text:c"));
+					Assert.assertEquals(nSpaces, nSpacesInAttribute);
+				}
+			} else {
+				Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+				Assert.assertEquals(output[i], node.getTextContent());
+			}
+			node = node.getNextSibling();
+		}
+		Assert.assertEquals(node, null);
+	}
+	
+	
+	@Test
+	public void testSetHorizontalAlignment() {
+		try {
+			Table table = odsdoc.getTableByName("Sheet1");
+			Cell cell1 = table.getCellByPosition("C2");
+			Assert.assertEquals("$", cell1.getCurrencySymbol());
+			String right = cell1.getHorizontalAlignment();
+			Assert.assertEquals(null, right);
+			/**
+			 *The parameter can be "center", "end", "justify", "left", "right", or 
+			 * "start". Actually, "left" will be interpreted as "start", while "right" 
+             * will be interpreted as "end". If argument is null, the explicit 
+             * horizontal alignment setting is removed. 
+			 */
+			cell1.setHorizontalAlignment("left");
+			
+			//validate
+			String left = cell1.getHorizontalAlignment();
+			Assert.assertEquals("start", left);
+			
+			//save
+			//odsdoc.save(ResourceUtilities.newTestOutputFile("testTableCell.ods"));
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testGetCountry() {
+		try {
+			Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.DOUBLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+
+			CellStyleHandler cellHandler = cell.getStyleHandler();
+			cellHandler.setCountry("English", Document.ScriptType.CJK);
+			//validate
+			String country = cellHandler.getCountry(Document.ScriptType.CJK);
+			Assert.assertEquals("English", country);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testGetLanguage() {
+		try {
+			Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.DOUBLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+
+			CellStyleHandler cellHandler = cell.getStyleHandler();
+			cellHandler.setLanguage("English", Document.ScriptType.WESTERN);
+			//validate
+			String language = cellHandler.getLanguage(Document.ScriptType.WESTERN);
+			System.out.println(language);
+			Assert.assertEquals("English", language);
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testSetColor() {
+		try {
+			Border borderbase = new Border(Color.LIME, 3.0701, 0.0208, 0.0346, SupportedLinearMeasure.CM);
+			borderbase.setLineStyle(StyleTypeDefinitions.LineType.DOUBLE);
+			SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = doc.getTableByName("Sheet1");
+			
+			Cell cell = table.getCellByPosition(2, 2);
+
+			CellStyleHandler cellHandler = cell.getStyleHandler();
+			cellHandler.setBackgroundColor(Color.RED);
+			//validate
+			Color red = cellHandler.getBackgroundColor();
+			Assert.assertEquals(Color.RED.toString(), red.toString());
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("testSupportedLinearMeasure.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+		
+	}
+	
+	
+	@Test
+	public void testSetBorder() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.IN);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			
+			borderbase.setLinearMeasure(StyleTypeDefinitions.SupportedLinearMeasure.CM);
+			
+			Cell cell = table.getCellByPosition("A14");
+			cell.setBorders(CellBordersType.LEFT, borderbase);
+			
+
+			CellStyleHandler cellHandler = cell.getStyleHandler();
+			Border border = cellHandler.getBorder(CellBordersType.LEFT);
+			Assert.assertEquals(borderbase, border);
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+		
+	}
+	
+	@Test
+	public void testIsTextWrapped() {
+		Border borderbase = new Border(new Color("#00ccff"), 0.0701, 0.0008, 0.0346, SupportedLinearMeasure.CM);
+		try {
+			SpreadsheetDocument doc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(filename));
+			Table table = doc.getTableByName("A");
+			Cell cell = table.getCellByPosition("A14");
+			cell.setStringValue("testIsTextWrapped.");
+			cell.setBorders(CellBordersType.ALL_FOUR, borderbase);
+
+			CellStyleHandler cellHandler = cell.getStyleHandler();
+			cellHandler.setTextWrapped(true);
+			Assert.assertTrue(cellHandler.isTextWrapped());
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testSetWidth.ods"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+		
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableRowColumnTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableRowColumnTest.java
new file mode 100644
index 0000000..1e31ccf
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableRowColumnTest.java
@@ -0,0 +1,383 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;
+import org.odftoolkit.odfdom.dom.element.table.TableTableRowElement;
+import org.odftoolkit.odfdom.dom.style.props.OdfTableColumnProperties;
+import org.odftoolkit.odfdom.incubator.doc.text.OdfTextParagraph;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.type.PositiveLength;
+import org.odftoolkit.odfdom.type.Length.Unit;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.navigation.TextNavigation;
+import org.odftoolkit.simple.common.navigation.TextSelection;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class TableRowColumnTest {
+
+	final String filename = "TestSpreadsheetTable";
+	final String odtfilename = "TestTextTable";
+	SpreadsheetDocument odsdoc;
+	TextDocument odtdoc;
+	Table odsTable, odtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			odsdoc = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(filename + ".ods"));
+			odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(odtfilename + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	@Test
+	public void testSetSize() {
+		Table table3 = odtdoc.getTableByName("Table3");
+		//change the table height to 1/2
+		for (int i = 0; i < table3.getRowCount(); i++) {
+			Row row = table3.getRowByIndex(i);
+			double oldHeight = row.getHeight() / 2;
+			row.setHeight(oldHeight, true);
+			double roundingFactor = 10000.0;
+			double inValue = Math.round(roundingFactor * oldHeight / Unit.INCH.unitInMillimiter()) / roundingFactor;
+			String sHeightIN = String.valueOf(inValue) + Unit.INCH.abbr();
+			double expectedHeight = PositiveLength.parseDouble(sHeightIN, Unit.MILLIMETER);
+			
+			row.setHeight(oldHeight, false);
+			Assert.assertEquals(expectedHeight, row.getHeight());
+		}
+
+		Table table1 = odtdoc.getTableByName("Table1");
+		//change the table width to 1/2
+		table1.setWidth(table1.getWidth() / 2);
+		for (int i = 0; i < table1.getColumnCount(); i++) {
+			Column column = table1.getColumnByIndex(i);
+			double oldWidth = column.getWidth() / 2;
+			column.setWidth(oldWidth);
+			double roundingFactor = 10000.0;
+			double inValue = Math.round(roundingFactor * oldWidth / Unit.INCH.unitInMillimiter()) / roundingFactor;
+			String sWidthIN = String.valueOf(inValue) + Unit.INCH.abbr();
+			double expectedWidth = PositiveLength.parseDouble(sWidthIN, Unit.MILLIMETER);
+			Assert.assertEquals(expectedWidth, column.getWidth());
+		}
+		saveodt("ChangeSize");
+	}
+
+	/**
+	 * The DecimalFormat will create the depicted "000,8571" with the comma as
+	 * separator if used in a German Locale.
+	 * 
+	 * Within org.odftoolkit.simple.table.Column.setWith(long) there is a
+	 * getWith() call which ultimately calls
+	 * org.odftoolkit.odfdom.type.Length.parseDouble(), where
+	 * Double.valueOf(String s) is used to transform the String into a Double.
+	 * This method uses "." as separator. Hence the Exception.
+	 */
+	@Test
+	public void testGetLocaleColumnWidth() {
+		Locale oldLocale = Locale.getDefault();
+		try {
+			Locale.setDefault(Locale.GERMAN);
+			Table table = Table.newTable(odtdoc, 30, 7);
+			table.setTableName("Table21");
+			table.getColumnByIndex(2).setWidth(50); // NumberFormatException
+			saveodt("LocalColumnWidth");
+		} catch (Exception e) {
+			Assert.fail(e.getMessage());
+		} finally {
+			Locale.setDefault(oldLocale);
+		}
+	}
+	
+	/**
+	 * When a repeated column without width is split up, no width attribute should be set.
+	 */
+	@Test
+	public void testSplitRepeatedColumns() {
+		// test original width is null or null value.
+		Table table5 = odtdoc.getTableByName("Table5");
+		//columns 0-2 original width are null.
+		table5.getColumnByIndex(0).splitRepeatedColumns();
+		String columnWidth = table5.getColumnByIndex(1).maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+		Assert.assertNull(columnWidth);
+		//columns 3-5 original width value are null.
+		table5.getColumnByIndex(3).splitRepeatedColumns();
+		columnWidth = table5.getColumnByIndex(4).maColumnElement.getProperty(OdfTableColumnProperties.ColumnWidth);
+		Assert.assertNull(columnWidth);
+		saveodt("SplitRepeatedColumns");
+	}
+
+	@Test
+	public void testGetPreviousNext() {
+		Table table2 = odtdoc.getTableByName("Table2");
+		Row row2 = table2.getRowByIndex(2);
+		Row row1 = table2.getRowByIndex(1);
+		Row row0 = table2.getRowByIndex(0);
+		Row lastRow = table2.getRowByIndex(table2.getRowCount() - 1);
+		Row preRow = row2.getPreviousRow();
+		Assert.assertTrue(preRow.equals(row1));
+		Assert.assertTrue(row0.getPreviousRow() == null);
+		Assert.assertEquals(row1.getNextRow(), row2);
+		Assert.assertTrue(lastRow.getNextRow() == null);
+
+		Table table1 = odtdoc.getTableByName("Table1");
+		Column column2 = table1.getColumnByIndex(2);
+		Column column1 = table1.getColumnByIndex(1);
+		Column column0 = table1.getColumnByIndex(0);
+		Column lastColumn = table1.getColumnByIndex(table1.getColumnCount() - 1);
+		Column preColumn = column2.getPreviousColumn();
+		Assert.assertTrue(column0.getPreviousColumn() == null);
+		Assert.assertTrue(preColumn.equals(column1));
+		Assert.assertEquals(column0.getNextColumn(), column1);
+		Assert.assertTrue(lastColumn.getNextColumn() == null);
+	}
+
+	@Test
+	public void testGetIndex() {
+		//this is used to test the method for setColumnRepeatedIndex
+		//merge the first two column, then the third column's index is 2
+		Table table3 = odtdoc.getTableByName("Table3");
+		Column column2OfT3 = table3.getColumnByIndex(2);
+		CellRange range = table3.getCellRangeByPosition(0, 0, 1, table3.getRowCount() - 1);
+		range.merge();
+		Assert.assertTrue(column2OfT3.getColumnIndex() == 1);
+		//insert two columns after the first column, then the next column's index add 2
+		table3.insertColumnsBefore(1, 2);
+		Assert.assertTrue(column2OfT3.getColumnIndex() == 3);
+		//append a row
+		Row newRow = table3.appendRow();
+		int index = newRow.getRowIndex();
+		Assert.assertTrue(index == (table3.getRowCount() - 1));
+		//remove two row
+//		table3.removeRowByIndex(0, 2);
+//		Assert.assertTrue(newRow.getRowIndex() == (index - 2));
+		//remove two colum
+		table3.removeColumnsByIndex(1, 2);
+		Assert.assertTrue(column2OfT3.getColumnIndex() == 1);
+
+		//insert two column in the repeated columns
+		Table table2 = odtdoc.getTableByName("Table2");
+		Column column1OfT2 = table2.getColumnByIndex(1);
+		List<Column> columns = table2.insertColumnsBefore(1, 2);
+		Assert.assertTrue(column1OfT2.getColumnIndex() == 3);
+		Assert.assertTrue(columns.get(0).getColumnIndex() == 1);
+		Assert.assertEquals(column1OfT2.getPreviousColumn(), columns.get(1));
+		Assert.assertEquals(column1OfT2.getNextColumn(), table2.getColumnByIndex(4));
+
+		//append two row in the repeated rows
+		Row row4OfT2 = table2.getRowByIndex(4);
+		Row row3OfT2 = table2.getRowByIndex(3);
+		List<Row> rows = table2.insertRowsBefore(4, 2);
+		Cell cell1 = rows.get(0).getCellByIndex(0);
+		cell1.setStringValue("cell1");
+		Cell cell2 = rows.get(1).getCellByIndex(0);
+		cell2.setStringValue("cell2");
+		Assert.assertTrue(row4OfT2.getRowIndex() == 6);
+		Assert.assertEquals(rows.get(0).getPreviousRow(), row3OfT2);
+		//remove a row, then the next row will decrease the index
+		table2.removeRowsByIndex(4, 1);
+		Assert.assertNull(rows.get(0).getOdfElement());
+		Assert.assertEquals(rows.get(1).getPreviousRow(), row3OfT2);
+		saveodt("ChangeIndex");
+	}
+
+	@Test
+	public void testCellGetRowIndex() {
+		Table table3 = odtdoc.getTableByName("Table3");
+		Cell cell = table3.getCellByPosition(0, 1);
+		Assert.assertTrue(cell.getRowIndex() == 1);
+		table3.removeRowsByIndex(0, 2);
+	}
+
+	@Test
+	public void testGetInstance() {
+		//get the text content contains "cell"
+		TextNavigation search = new TextNavigation("cell", odtdoc);
+		while (search.hasNext()) {
+			TextSelection item = (TextSelection) search.nextSelection();
+			OdfElement containerEle = item.getContainerElement();
+			if (containerEle instanceof OdfTextParagraph) {
+				Node ele = containerEle.getParentNode();
+				if (ele instanceof TableTableCellElement) {
+					Cell cell = Cell.getInstance((TableTableCellElementBase) ele);
+					Assert.assertTrue(cell.getStringValue().contains("cell"));
+					Assert.assertTrue(cell.getRowIndex() == 0);
+					ele = ele.getParentNode();
+					if (ele instanceof TableTableRowElement) {
+						Row row = Row.getInstance((TableTableRowElement) ele);
+						Assert.assertTrue(row == cell.getTableRow());
+					}
+				}
+			}
+		}
+	}
+
+	@Test
+	public void testTableColumnWidth() {
+		TextDocument textDocument = null;
+		try {
+			textDocument = TextDocument.newTextDocument();
+
+			textDocument.getParagraphByIndex(0, false).setTextContent(
+					"Above, table in header Standard (bug with getWidth, but the widths are good)");
+			Table table = textDocument.getHeader().addTable(1, 8);
+			long[] columnsWidth = new long[] { 5, 19, 11, 14, 27, 12, 75, 4 };
+			setColumnsWidth(table, columnsWidth);
+			textDocument.addParagraph(null);
+			textDocument.addParagraph(null);
+
+			textDocument.addParagraph("First table (columns width : demande / result)");
+			table = Table.newTable(textDocument, 1, 6);
+			columnsWidth = new long[] { 10, 15, 20, 25, 30, -1 };
+			setColumnsWidth(table, columnsWidth);
+
+			textDocument.addParagraph("Second table");
+			table = Table.newTable(textDocument, 1, 8);
+			columnsWidth = new long[] { 5, 19, 11, 14, 27, 12, 75, 4 };
+			setColumnsWidth(table, columnsWidth);
+
+			textDocument.addParagraph("Third table");
+			table = Table.newTable(textDocument, 1, 12);
+			columnsWidth = new long[] { 5, 8, 10, 11, 7, 7, 26, 12, 19, 19, 41, 3 };
+			setColumnsWidth(table, columnsWidth);
+
+			textDocument.addParagraph("fourth table (left space of 15mm and 10mm space right)");
+			table = Table.newTable(textDocument, 1, 12, 1.5, 1.0);
+			columnsWidth = new long[] { 5, 8, 10, 11, 7, 7, 11, 12, 9, 19, -1, 3 };
+			setColumnsWidth(table, columnsWidth);
+
+			textDocument.addParagraph("fifth table (space of -1 cm to the left and right space of -1.5cm)");
+			table = Table.newTable(textDocument, 1, 10, -1, -1.5);
+			columnsWidth = new long[] { 32, 8, 10, 11, 7, 7, 16, 12, -1, 18 };
+			setColumnsWidth(table, columnsWidth);
+
+			textDocument.addParagraph("sixth table (merging of columns 3-4, row 0, and other merging)");
+			table = Table.newTable(textDocument, 2, 8);
+			columnsWidth = new long[] { 5, 19, 11, 14, 27, 12, 75, 4 };
+			setColumnsWidth(table, columnsWidth);
+			CellRange vCellRange = table.getCellRangeByPosition(3, 0, 4, 0);
+			vCellRange.merge();
+			table.appendRows(2);
+			vCellRange = table.getCellRangeByPosition(4, 1, 5, 2);
+			vCellRange.merge();
+
+			textDocument.addParagraph("as above, but no merging");
+			table = Table.newTable(textDocument, 1, 8);
+			columnsWidth = new long[] { 5, 19, 11, 14, 27, 12, 75, 4 };
+			setColumnsWidth(table, columnsWidth);
+
+			textDocument.addParagraph("table with three columns width at 0");
+			table = Table.newTable(textDocument, 1, 12);
+			columnsWidth = new long[] { 0, 13, 10, 11, 0, 14, 26, 12, 19, 19, 47, 0 };
+			setColumnsWidth(table, columnsWidth);
+
+			table = Table.newTable(textDocument, 1, 3);
+			columnsWidth = new long[] { 100 };
+			setColumnsWidth(table, columnsWidth);
+			table.setVerticalMargin(0.25, 0.5);
+			textDocument.addParagraph("Above, other table with top space of 0.25cm and bottom spacin of 0.5cm");
+
+			textDocument.addParagraph(null);
+			textDocument.addParagraph(null);
+			textDocument.addParagraph("below, table in footer Standard (bug with getWidth, but the widths are good)");
+			table = textDocument.getFooter().addTable(1, 8);
+			columnsWidth = new long[] { 5, 19, 11, 14, 27, 12, 75, 4 };
+			setColumnsWidth(table, columnsWidth);
+			
+			textDocument.save(ResourceUtilities.newTestOutputFile("testColumsWidth.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	private void setColumnsWidth(Table table, long[] columnsWidth){
+		List<Column> vListColumns = table.getColumnList();
+		for (int i = 0; i < columnsWidth.length; i++) {
+			if(columnsWidth[i] >= 0){
+				table.getColumnByIndex(i).setWidth(columnsWidth[i]);
+			}
+			table.getCellByPosition(i, 0).setStringValue(columnsWidth[i] + "/" + vListColumns.get(i).getWidth());
+		}
+	}
+	
+	private void saveods(String name) {
+		try {
+			odsdoc.save(ResourceUtilities.newTestOutputFile(filename + name + ".ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+
+	private void saveodt(String name) {
+		try {
+			odtdoc.save(ResourceUtilities.newTestOutputFile(odtfilename + name + ".odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+		}
+	}
+	
+	@Test
+	public void testGetInstanceColumn() {
+		try {
+			Table table2 = odtdoc.getTableByName("Table1");
+			Column col = Column.getInstance(table2.getColumnByIndex(0).getOdfElement());
+			Column col1 = table2.getColumnByIndex(0);
+			
+			Assert.assertEquals(col, col1);
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	
+	@Test
+	public void testGetColumnElementByIndex() {
+		try {
+			Table table2 = odtdoc.getTableByName("Table1");
+			Row row = table2.getRowByIndex(1);
+			//Cell cell = row.getCellByIndex(0);
+			row.setHeight(4.3, true);
+			row.setUseOptimalHeight(true);
+			
+			boolean flag = row.isOptimalHeight();
+			Assert.assertTrue(flag);
+			
+		} catch (Exception e) {
+			Logger.getLogger(TableRowColumnTest.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableTemplateTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableTemplateTest.java
new file mode 100644
index 0000000..4f804e8
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableTemplateTest.java
@@ -0,0 +1,514 @@
+/* 

+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

+regarding copyright ownership.  The ASF licenses this file

+to you under the Apache License, Version 2.0 (the

+"License"); you may not use this file except in compliance

+with the License.  You may obtain a copy of the License at

+

+ http://www.apache.org/licenses/LICENSE-2.0

+

+Unless required by applicable law or agreed to in writing,

+software distributed under the License is distributed on an

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+KIND, either express or implied.  See the License for the

+specific language governing permissions and limitations

+under the License.

+ */

+

+package org.odftoolkit.simple.table;

+

+import java.util.Iterator;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import junit.framework.Assert;

+

+import org.junit.Before;

+import org.junit.Test;

+import org.odftoolkit.odfdom.dom.element.table.TableTableCellElementBase;

+import org.odftoolkit.odfdom.dom.style.OdfStyleFamily;

+import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;

+import org.odftoolkit.odfdom.incubator.doc.style.OdfStyle;

+import org.odftoolkit.simple.Document;

+import org.odftoolkit.simple.TextDocument;

+import org.odftoolkit.simple.text.Paragraph;

+import org.odftoolkit.simple.utils.ResourceUtilities;

+import org.w3c.dom.Node;

+

+public class TableTemplateTest {

+

+	private static final String TEST_TABLE_FILE_NAME = "TestTableTemplate.odt";

+	private static final String TEST_TEMPLATE_FILE_NAME = "TableTemplate.odt";

+

+	Document doc;

+

+	@Before

+	public void loadTestDocument() {

+		try {

+			doc = TextDocument.loadDocument(ResourceUtilities

+					.getTestResourceAsStream(TEST_TABLE_FILE_NAME));

+

+		} catch (Exception e) {

+			Logger.getLogger(CellStyleHandlerTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+	 @Test

+	public void testLoadTableTemplates() {

+		try {

+

+			TableTemplate template = doc.LoadTableTemplateFromForeignTable(

+					ResourceUtilities

+							.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"ColumnStyledTable");

+			checkLoadTemplateResults(template, "ColumnStyledTable");

+

+			template = doc.LoadTableTemplateFromForeignTable(ResourceUtilities

+					.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"RowStyledTable");

+			checkLoadTemplateResults(template, "RowStyledTable");

+

+			try {

+				template = doc

+						.LoadTableTemplateFromForeignTable(

+								ResourceUtilities

+										.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+								"TableR4C3");

+				Assert.fail("Fail to load this template.");

+			} catch (IllegalStateException e) {

+				Assert.assertTrue(true);

+			}

+

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+	 @Test

+	public void testApplyColumnStyledTableTemplate() {

+		try {

+			TableTemplate template = doc.LoadTableTemplateFromForeignTable(

+					ResourceUtilities

+							.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"ColumnStyledTable");

+

+			Table table = doc.getTableByName("DataTable1");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_4*4");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_4*3");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_4*2");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_4*1");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_1*3");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_1*2");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			table = doc.getTableByName("Table_1*1");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			// apply to empty table

+			table = doc.addTable(8, 8);

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, false);

+

+			doc

+					.save(ResourceUtilities

+							.newTestOutputFile("TestApplyColumnStyledTableTemplate.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+	 @Test

+	public void testApplyRowStyledTableTemplate() {

+		try {

+			TableTemplate template = doc.LoadTableTemplateFromForeignTable(

+					ResourceUtilities

+							.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"RowStyledTable");

+

+			Table table = doc.getTableByName("DataTable1");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			table = doc.getTableByName("Table_3*4");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			table = doc.getTableByName("Table_2*4");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			table = doc.getTableByName("Table_1*4");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			table = doc.getTableByName("Table2_1*1");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			table = doc.getTableByName("Table2_1*2");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			table = doc.getTableByName("Table2_1*3");

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			// apply to empty table

+			table = doc.addTable(8, 8);

+			table.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table, true);

+

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestApplyRowStyledTableTemplate.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+	 @Test

+	public void testReApplyTableTemplateAfterChanges() {

+		try {

+			TableTemplate template = doc.LoadTableTemplateFromForeignTable(

+					ResourceUtilities

+							.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"RowStyledTable");

+			Table table1 = doc.getTableByName("DataTable1");

+			Table table2 = doc.getTableByName("DataTable2");

+

+			table1.applyStyle(template);

+			table2.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table1, true);

+			checkApplyRowOrColumnStyledTableTemplate(table2, true);

+

+			template = doc.LoadTableTemplateFromForeignTable(ResourceUtilities

+					.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"ColumnStyledTable");

+			table1.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table1, false);

+

+			table2.removeRowsByIndex(7, 2);

+			table2.appendColumns(2);

+			table2.applyStyle(template);

+			checkApplyRowOrColumnStyledTableTemplate(table2, false);

+

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestReApplyTableTemplate.odt"));

+

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+	 @Test

+	public void testApplyTemplateWithEmptyCells() {

+		try {

+			TableTemplate template = doc.LoadTableTemplateFromForeignTable(

+					ResourceUtilities

+							.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"RowStyledEmptyTable");

+			Table table = doc.getTableByName("DataTable1");

+			table.applyStyle(template);

+			checkApplyTemplateWithEmptyCells(table, true);

+

+			template = doc.LoadTableTemplateFromForeignTable(ResourceUtilities

+					.getTestResourceAsStream(TEST_TEMPLATE_FILE_NAME),

+					"ColumnStyledEmptyTable");

+			table = doc.getTableByName("DataTable2");

+			table.applyStyle(template);

+			checkApplyTemplateWithEmptyCells(table, false);

+

+			doc

+					.save(ResourceUtilities

+							.newTestOutputFile("TestApplyTemplateWithNoParagraphStyle.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+	@Test

+	public void testApplyEmptyTemplate() {

+		try {

+			TableTemplate template = new TableTemplate(doc.getStylesDom()

+					.getOfficeStyles().newTableTableTemplateElement("", "", "",

+							"", ""));

+			doc.getTableByName("DataTable1").applyStyle(template);

+			doc.save(ResourceUtilities

+					.newTestOutputFile("TestApplyEmptyTemplate.odt"));

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+

+	}

+

+	private void checkFormatResultsByRow(Table table, Row row,

+			String firstTableStyle, String oddTableStyle,

+			String evenTableStyle, String lastTableStyle,

+			String firstParaStyle, String oddParaStyle, String evenParaStyle,

+			String lastParaStyle) {

+		int cellIndex = 0;

+		int mnRepeatedIndex = row.getRowsRepeatedNumber();

+		Cell cell;

+		String paraStyle;

+		for (Node n : new DomNodeList(row.getOdfElement().getChildNodes())) {

+			if (n instanceof TableTableCellElementBase) {

+				cell = table.getCellInstance((TableTableCellElementBase) n, 0,

+						mnRepeatedIndex);

+				int lastIndex = row.getCellCount() - 1;

+				if (cell.getColumnsRepeatedNumber() > 1)

+					lastIndex -= cell.getColumnsRepeatedNumber();

+				if (cellIndex == 0) {

+					Assert.assertEquals(cell.getCellStyleName(),

+							firstTableStyle);

+					paraStyle = firstParaStyle;

+				} else if (cellIndex == lastIndex) {

+					Assert

+							.assertEquals(cell.getCellStyleName(),

+									lastTableStyle);

+					paraStyle = lastParaStyle;

+				} else if (cellIndex % 2 == 0) {

+					Assert

+							.assertEquals(cell.getCellStyleName(),

+									evenTableStyle);

+					paraStyle = evenParaStyle;

+				} else {

+					Assert.assertEquals(cell.getCellStyleName(), oddTableStyle);

+					paraStyle = oddParaStyle;

+				}

+				Iterator<Paragraph> paraIterator = cell.getParagraphIterator();

+				while (paraIterator.hasNext()) {

+					Paragraph t = paraIterator.next();

+					if (paraStyle != null && paraStyle != "") {

+						Assert.assertEquals(t.getOdfElement().getStyleName(),

+								paraStyle);

+					}

+				}

+				cellIndex++;

+			}

+		}

+	}

+

+	private void checkApplyRowOrColumnStyledTableTemplate(Table table,

+			boolean isRowStyle) {

+

+		Iterator<Row> rowIterator = table.getRowIterator();

+		if (rowIterator.hasNext()) { // first row

+			Row currentRow = rowIterator.next();

+			if (isRowStyle) {

+				checkFormatResultsByRow(table, currentRow, "RowStyledTable.A1",

+						"RowStyledTable.B1", "RowStyledTable.B1",

+						"RowStyledTable.E1", "P1", "P2", "P2", "P5");

+			} else {

+				checkFormatResultsByRow(table, currentRow,

+						"ColumnStyledTable.A1", "ColumnStyledTable.B1",

+						"ColumnStyledTable.B1", "ColumnStyledTable.E1", "P1",

+						"P2", "P2", "P5");

+			}

+

+			int line = 0;

+			while (rowIterator.hasNext()) {

+				currentRow = rowIterator.next();

+				line++;

+				if (!rowIterator.hasNext()) { // last row

+

+					if (isRowStyle) {

+						checkFormatResultsByRow(table, currentRow,

+								"RowStyledTable.A5", "RowStyledTable.B5",

+								"RowStyledTable.B5", "RowStyledTable.E5", "P3",

+								"P2", "P2", "P4");

+					} else {

+						checkFormatResultsByRow(table, currentRow,

+								"ColumnStyledTable.A5", "ColumnStyledTable.B5",

+								"ColumnStyledTable.B5", "ColumnStyledTable.E5",

+								"P3", "P2", "P2", "P4");

+					}

+

+				} else if (isRowStyle) {

+					if (line % 2 != 0) { // odd row

+						checkFormatResultsByRow(table, currentRow,

+								"RowStyledTable.A2", "RowStyledTable.B2",

+								"RowStyledTable.B2", "RowStyledTable.E2", "P2",

+								"P2", "P2", "P2");

+					} else { // even row

+						checkFormatResultsByRow(table, currentRow,

+								"RowStyledTable.A2", "RowStyledTable.B3",

+								"RowStyledTable.B3", "RowStyledTable.E2", "P2",

+								"P2", "P2", "P2");

+					}

+				} else { // even&odd column

+					checkFormatResultsByRow(table, currentRow,

+							"ColumnStyledTable.A2", "ColumnStyledTable.B2",

+							"ColumnStyledTable.C2", "ColumnStyledTable.E2",

+							"P2", "P2", "P2", "P2");

+				}

+			}

+		}

+

+	}

+

+	private void checkApplyTemplateWithEmptyCells(Table table,

+			boolean isRowStyle) {

+

+		Iterator<Row> rowIterator = table.getRowIterator();

+		if (rowIterator.hasNext()) { // first row

+			Row currentRow = rowIterator.next();

+			if (isRowStyle) {

+				checkFormatResultsByRow(table, currentRow,

+						"RowStyledEmptyTable.A1", "RowStyledEmptyTable.B1",

+						"RowStyledEmptyTable.B1", "RowStyledEmptyTable.E1",

+						"P1", "P2", "P2", "P5");

+			} else {

+				checkFormatResultsByRow(table, currentRow,

+						"ColumnStyledEmptyTable.A1",

+						"ColumnStyledEmptyTable.B1",

+						"ColumnStyledEmptyTable.B1",

+						"ColumnStyledEmptyTable.E1", "P1", "P2", "P2", "P5");

+			}

+

+			int line = 0;

+			while (rowIterator.hasNext()) {

+				currentRow = rowIterator.next();

+				line++;

+				if (!rowIterator.hasNext()) { // last row

+

+					if (isRowStyle) {

+						checkFormatResultsByRow(table, currentRow,

+								"RowStyledEmptyTable.A5",

+								"RowStyledEmptyTable.B5",

+								"RowStyledEmptyTable.B5",

+								"RowStyledEmptyTable.E5", "P3", "P2", "P2",

+								"P4");

+					} else {

+						checkFormatResultsByRow(table, currentRow,

+								"ColumnStyledEmptyTable.A5",

+								"ColumnStyledEmptyTable.B5",

+								"ColumnStyledEmptyTable.B5",

+								"ColumnStyledEmptyTable.E5", "P3", "P2", "P2",

+								"P4");

+					}

+

+				} else if (isRowStyle) {

+					if (line % 2 != 0) { // odd row

+						checkFormatResultsByRow(table, currentRow,

+								"RowStyledEmptyTable.A2",

+								"RowStyledEmptyTable.B2",

+								"RowStyledEmptyTable.B2",

+								"RowStyledEmptyTable.E2", "P2", "P2", "P2",

+								"P2");

+					} else { // even row

+						checkFormatResultsByRow(table, currentRow,

+								"RowStyledEmptyTable.A2",

+								"RowStyledEmptyTable.B3",

+								"RowStyledEmptyTable.B3",

+								"RowStyledEmptyTable.E2", "P2", "P2", "P2",

+								"P2");

+					}

+				} else { // even&odd column

+					checkFormatResultsByRow(table, currentRow,

+							"ColumnStyledEmptyTable.A2",

+							"ColumnStyledEmptyTable.B2",

+							"ColumnStyledEmptyTable.C2",

+							"ColumnStyledEmptyTable.E2", "P2", "P2", "P2", "P2");

+				}

+			}

+		}

+

+	}

+

+	private void checkLoadTemplateResults(TableTemplate template, String name) {

+		OdfStyle style = null;

+		try {

+			OdfOfficeAutomaticStyles styles = doc.getContentDom()

+					.getAutomaticStyles();

+			style = styles.getStyle(name + ".A1", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".B1", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".E1", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".A2", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".B2", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".E2", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			if (name.contains("Column")) {

+				style = styles.getStyle(name + ".C2", OdfStyleFamily.TableCell);

+				Assert.assertNotNull(style);

+			} else {

+				style = styles.getStyle(name + ".B3", OdfStyleFamily.TableCell);

+				Assert.assertNotNull(style);

+			}

+			style = styles.getStyle(name + ".A5", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".B5", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle(name + ".E5", OdfStyleFamily.TableCell);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle("P1", OdfStyleFamily.Paragraph);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle("P2", OdfStyleFamily.Paragraph);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle("P4", OdfStyleFamily.Paragraph);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle("P5", OdfStyleFamily.Paragraph);

+			Assert.assertNotNull(style);

+

+			style = styles.getStyle("P3", OdfStyleFamily.Paragraph);

+			Assert.assertNotNull(style);

+

+		} catch (Exception e) {

+			Logger.getLogger(TableTemplateTest.class.getName()).log(

+					Level.SEVERE, null, e);

+			Assert.fail(e.getMessage());

+		}

+	}

+

+}

diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableTest.java
new file mode 100644
index 0000000..3ae0db8
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/table/TableTest.java
@@ -0,0 +1,1223 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.table;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.odftoolkit.odfdom.dom.element.table.TableTableColumnElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableHeaderColumnsElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfFileDom;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.SpreadsheetDocument;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.Document.OdfMediaType;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class TableTest {
+
+	final String mOdsTestFileName = "TestSpreadsheetTable";
+	final String mOdtTestFileName = "TestTextTable";
+	SpreadsheetDocument mOdsDoc;
+	TextDocument mOdtDoc;
+	TableTableElement mOdsTable, mOdtTable;
+
+	@Before
+	public void setUp() {
+		try {
+			mOdsDoc = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(mOdsTestFileName + ".ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private TextDocument loadODTDocument(String name) {
+		try {
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(name));
+			return odtdoc;
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+		return null;
+	}
+
+	@Test
+	public void testNewTable() {
+		try {
+			TextDocument document = TextDocument.newTextDocument();
+			document.newParagraph("Empty table:");
+			createEmptyTable(document);
+
+			document.newParagraph();
+			document.newParagraph("Table with float values:");
+			createTableWithData(document);
+			document.newParagraph();
+			document.newParagraph("Table with string values:");
+			createTableWithString(document);
+
+			document.save(ResourceUtilities.newTestOutputFile("CreateTableCase.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testColumnWidthCompareNewTableWithGetCellByPosition() {
+		try {
+			SpreadsheetDocument odsDoc = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table = Table.newTable(odsDoc, 20, 20);
+			table.setTableName("Table1");
+			double width1 = table.getColumnByIndex(0).getWidth();
+			table = Table.newTable(odsDoc);
+			table.setTableName("Table2");
+			// set the table size as 20*20.
+			table.getCellByPosition(19, 19);
+			double width2 = table.getColumnByIndex(0).getWidth();
+			Assert.assertEquals(width1, width2);
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testNewTableWithArrayData() {
+		try {
+			// reproduce bug 121
+			int rowCount = 10, columnCount = 4;
+			String[] rowLabels = new String[rowCount];
+			for (int i = 0; i < rowCount; i++) {
+				rowLabels[i] = "RowHeader" + i;
+			}
+			String[] columnLabels = new String[columnCount];
+			for (int i = 0; i < columnCount; i++) {
+				columnLabels[i] = "ColumnHeader" + i;
+			}
+			double[][] doubleArray = null;
+			String[][] stringArray = null;
+			SpreadsheetDocument spreadsheet = SpreadsheetDocument.newSpreadsheetDocument();
+			Table table1 = Table.newTable(spreadsheet, null, null, doubleArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT 2
+			Assert.assertEquals(2, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT 5
+			Assert.assertEquals(5, table1.getColumnCount());
+
+			table1 = Table.newTable(spreadsheet, rowLabels, columnLabels, doubleArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT+1 3
+			Assert.assertEquals(3, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT+1 6
+			Assert.assertEquals(6, table1.getColumnCount());
+
+			table1 = Table.newTable(spreadsheet, null, null, stringArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT 2
+			Assert.assertEquals(2, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT 5
+			Assert.assertEquals(5, table1.getColumnCount());
+
+			table1 = Table.newTable(spreadsheet, rowLabels, columnLabels, stringArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			// row count should be DEFAULT_ROW_COUNT+1 3
+			Assert.assertEquals(3, table1.getRowCount());
+			// column count should be DEFAULT_COLUMN_COUNT+1 6
+			Assert.assertEquals(6, table1.getColumnCount());
+
+			doubleArray = new double[rowCount][columnCount];
+			for (int i = 0; i < rowCount; i++) {
+				for (int j = 0; j < columnCount; j++) {
+					doubleArray[i][j] = Math.random();
+				}
+			}
+			table1 = Table.newTable(spreadsheet, null, null, doubleArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount, table1.getRowCount());
+			Assert.assertEquals(columnCount, table1.getColumnCount());
+
+			table1 = Table.newTable(spreadsheet, rowLabels, columnLabels, doubleArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount + 1, table1.getRowCount());
+			Assert.assertEquals(columnCount + 1, table1.getColumnCount());
+
+			stringArray = new String[rowCount][columnCount];
+			for (int i = 0; i < rowCount; i++) {
+				for (int j = 0; j < columnCount; j++) {
+					stringArray[i][j] = "string" + (i * columnCount + j);
+				}
+			}
+			table1 = Table.newTable(spreadsheet, null, null, stringArray);
+			Assert.assertEquals(0, table1.getHeaderColumnCount());
+			Assert.assertEquals(0, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount, table1.getRowCount());
+			Assert.assertEquals(columnCount, table1.getColumnCount());
+
+			table1 = Table.newTable(spreadsheet, rowLabels, columnLabels, stringArray);
+			Assert.assertEquals(1, table1.getHeaderColumnCount());
+			Assert.assertEquals(1, table1.getHeaderRowCount());
+			Assert.assertEquals(rowCount + 1, table1.getRowCount());
+			Assert.assertEquals(columnCount + 1, table1.getColumnCount());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testNewTableWithoutHeaderColumn() {
+		try {
+			// reproduce bug 145
+			SpreadsheetDocument spreadsheet = SpreadsheetDocument.newSpreadsheetDocument();
+			Table sheet = Table.newTable(spreadsheet, 3, 5);
+			TableTableHeaderColumnsElement headers = OdfElement.findFirstChildNode(
+					TableTableHeaderColumnsElement.class, sheet.getOdfElement());
+			if (headers != null) {
+				for (Node n : new DomNodeList(headers.getChildNodes())) {
+					if (n instanceof TableTableColumnElement) {
+						if (sheet.getColumnInstance(((TableTableColumnElement) n), 0).getColumnsRepeatedNumber() == 0) {
+							Assert
+									.fail("table:number-columns-repeated has the invalid value: '0'. It have to be a value matching the 'positiveInteger' type.");
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private Table createEmptyTable(TextDocument document) {
+		String tablename = "Table1";
+		int rownumber = 5;
+		int clmnumber = 3;
+
+		Table table1 = Table.newTable(document, 5, 3);
+		table1.setTableName(tablename);
+
+		Assert.assertEquals(tablename, table1.getTableName());
+		Assert.assertEquals(rownumber, table1.getRowCount());
+		Assert.assertEquals(clmnumber, table1.getColumnCount());
+
+		Table table = document.getTableByName(tablename);
+		Assert.assertNotNull(table);
+		Assert.assertEquals(table1, table);
+		return table1;
+	}
+
+	private Table createTableWithData(TextDocument document) {
+		String tablename = "Table2";
+		int rowcount = 10, columncount = 4;
+		double[][] data = new double[rowcount][columncount];
+		for (int i = 0; i < rowcount; i++) {
+			for (int j = 0; j < columncount; j++) {
+				data[i][j] = Math.random();
+			}
+		}
+
+		String[] rowlabels = new String[rowcount];
+		for (int i = 0; i < rowcount; i++) {
+			rowlabels[i] = "RowHeader" + i;
+		}
+
+		String[] columnlabels = new String[columncount];
+		for (int i = 0; i < columncount; i++) {
+			columnlabels[i] = "ColumnHeader" + i;
+		}
+
+		Table table2 = Table.newTable(document, rowlabels, columnlabels, data);
+		table2.setTableName(tablename);
+
+		Assert.assertEquals(1, table2.getHeaderColumnCount());
+		Assert.assertEquals(1, table2.getHeaderRowCount());
+		Assert.assertEquals(rowcount + 1, table2.getRowCount());
+		Assert.assertEquals(columncount + 1, table2.getColumnCount());
+		Table table = document.getTableByName(tablename);
+		Assert.assertNotNull(table);
+		Assert.assertEquals(table2, table);
+
+		Cell cell = table.getCellByPosition(1, 1);
+		Assert.assertEquals("float", cell.getValueType());
+
+		return table2;
+	}
+
+	private Table createTableWithString(TextDocument document) {
+		String tablename = "Table3";
+		int rowcount = 7, columncount = 5;
+		String[][] data = new String[rowcount][columncount];
+		for (int i = 0; i < rowcount; i++) {
+			for (int j = 0; j < columncount; j++) {
+				data[i][j] = "string" + (i * columncount + j);
+			}
+		}
+
+		String[] rowlabels = new String[rowcount];
+		for (int i = 0; i < rowcount; i++) {
+			rowlabels[i] = "RowHeader" + i;
+		}
+
+		String[] columnlabels = new String[columncount];
+		for (int i = 0; i < columncount; i++) {
+			columnlabels[i] = "ColumnHeader" + i;
+		}
+
+		Table table3 = Table.newTable(document, rowlabels, columnlabels, data);
+		table3.setTableName(tablename);
+
+		Assert.assertEquals(1, table3.getHeaderColumnCount());
+		Assert.assertEquals(1, table3.getHeaderRowCount());
+		Assert.assertEquals(rowcount + 1, table3.getRowCount());
+		Assert.assertEquals(columncount + 1, table3.getColumnCount());
+		Table table = document.getTableByName(tablename);
+		Assert.assertNotNull(table);
+		Assert.assertEquals(table3, table);
+
+		Cell cell = table.getCellByPosition(1, 1);
+		Assert.assertEquals("string", cell.getValueType());
+
+		return table3;
+
+	}
+
+	@Test
+	public void testDeleteTable() {
+		try {
+			mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+			List<Table> tableList = mOdtDoc.getTableList();
+			int count = tableList.size();
+
+			Table table = mOdtDoc.getTableByName("DeletedTable");
+			if (table != null) {
+				table.remove();
+			}
+
+			saveodt(mOdtTestFileName + "Out.odt");
+			mOdtDoc = loadODTDocument(mOdtTestFileName + "Out.odt");
+			tableList = mOdtDoc.getTableList();
+			Assert.assertEquals(count - 1, tableList.size());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetGetWidth() {
+		long width = 500;
+		try {
+			TextDocument document = TextDocument.newTextDocument();
+			document.newParagraph("Empty table:");
+			Table table = createEmptyTable(document);
+			table.setWidth(width);
+			Assert.assertTrue(Math.abs(width - table.getWidth()) < 3);
+
+			document.save(ResourceUtilities.newTestOutputFile("TestSetGetWidth.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAppendColumn() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		List<Table> tableList = mOdtDoc.getTableList();
+		for (int i = 0; i < tableList.size(); i++) {
+			Table table = tableList.get(i);
+			int clmnum = table.getColumnCount();
+			table.appendColumn();
+			Assert.assertEquals(clmnum + 1, table.getColumnCount());
+
+			Column column = table.getColumnByIndex(clmnum);
+			Column columnOld = table.getColumnByIndex(clmnum - 1);
+			Assert.assertEquals(column.getCellCount(), columnOld.getCellCount());
+		}
+		saveodt(mOdtTestFileName + "Output.odt");
+	}
+
+	@Test
+	public void testGetSetTablename() {
+		String tablename = "My Table";
+		TextDocument document = null;
+		try {
+			document = TextDocument.newTextDocument();
+			document.newParagraph("Empty table:");
+			Table table = createEmptyTable(document);
+			table.setTableName(tablename);
+			Assert.assertEquals(tablename, table.getTableName());
+
+			document.save(ResourceUtilities.newTestOutputFile("TestGetSetName.odt"));
+			document.close();
+			document = loadODTDocument("TestGetSetName.odt");
+			table = document.getTableByName(tablename);
+			Assert.assertNotNull(table);
+			String tablename2 = table.getTableName();
+			Assert.assertEquals(tablename, tablename2);
+		} catch (Exception e) {
+			Assert.fail(e.getMessage());
+		}
+
+		try {
+			// new another table with the same name
+			// an exception will be thrown
+			Table table2 = Table.newTable(document);
+			table2.setTableName(tablename);
+			document.save(ResourceUtilities.newTestOutputFile("TestGetSetName.odt"));
+			Assert.fail("should not save the tables with the same table name.");
+		} catch (Exception e) {
+			if (!e.getMessage().startsWith("The table name is duplicate")) {
+				Assert.fail(e.getMessage());
+			}
+		}
+	}
+
+	@Test
+	public void testInsertColumnBefore() throws Exception {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Table table1 = mOdtDoc.getTableByName("Table3");
+		table1.setUseRepeat(false);
+		CellRange range = table1.getCellRangeByPosition(0, 1, 1, 2);
+		range.merge();
+
+		int clmnum = table1.getColumnCount();
+		Column oldClm1 = table1.getColumnByIndex(1);
+
+		List<Column> columns = table1.insertColumnsBefore(1, 2);
+		Assert.assertEquals(clmnum + 2, table1.getColumnCount());
+		Column clm0 = table1.getColumnByIndex(0);
+		Column clm1 = table1.getColumnByIndex(1);
+		Column clm2 = table1.getColumnByIndex(2);
+		Column clm3 = table1.getColumnByIndex(3);
+		Assert.assertEquals(columns.get(0), clm1);
+		Assert.assertEquals(columns.get(1), clm2);
+		Assert.assertEquals(clm0.getCellCount(), clm1.getCellCount());
+		Assert.assertEquals(clm1.getCellCount(), clm2.getCellCount());
+		Assert.assertEquals(clm3, oldClm1);
+
+		Table table2 = mOdtDoc.getTableByName("Table2");
+		Column oldClm0 = table2.getColumnByIndex(0);
+		columns = table2.insertColumnsBefore(0, 2);
+
+		Column newClm0 = table2.getColumnByIndex(0);
+		Column newClm1 = table2.getColumnByIndex(1);
+		Column newClm2 = table2.getColumnByIndex(2);
+		Assert.assertEquals(newClm0.getCellCount(), newClm2.getCellCount());
+		Assert.assertEquals(newClm1.getCellCount(), newClm2.getCellCount());
+		Assert.assertEquals(newClm2, oldClm0);
+
+		saveodt(mOdtTestFileName + "Out.odt");
+	}
+
+	@Test
+	public void testRemoveColumnByIndex() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Table table1 = mOdtDoc.getTableByName("Table3");
+		CellRange range = table1.getCellRangeByPosition(0, 1, 1, 2);
+		range.merge();
+
+		int clmnum = table1.getColumnCount();
+		Column oldClm0 = table1.getColumnByIndex(0);
+		Column oldClm3 = table1.getColumnByIndex(3);
+		table1.removeColumnsByIndex(1, 2);
+		Column newClm0 = table1.getColumnByIndex(0);
+		Column newClm1 = table1.getColumnByIndex(1);
+		Assert.assertEquals(clmnum - 2, table1.getColumnCount());
+		Assert.assertEquals(oldClm0, newClm0);
+		Assert.assertEquals(oldClm3, newClm1);
+
+		Table table2 = mOdtDoc.getTableByName("Table4");
+		clmnum = table2.getColumnCount();
+		Column oldClm1 = table2.getColumnByIndex(2);
+		table2.removeColumnsByIndex(0, 2);
+		table2.removeColumnsByIndex(table2.getColumnCount() - 2, 2);
+		Column clm0 = table2.getColumnByIndex(0);
+		Assert.assertEquals(oldClm1, clm0);
+		Assert.assertEquals(clmnum - 4, table2.getColumnCount());
+		saveodt(mOdtTestFileName + "Out.odt");
+
+	}
+
+	@Test
+	public void testInsertRowBefore() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Table table2 = mOdtDoc.getTableByName("Table2");
+		Row row = table2.getRowByIndex(0);
+		int originalRowCount = table2.getRowCount();
+		List<Row> newRows = table2.insertRowsBefore(0, 2);
+
+		Row newRow1 = table2.getRowByIndex(0);
+		Row newRow2 = table2.getRowByIndex(0);
+		Assert.assertEquals(newRow1.getCellCount(), newRows.get(0).getCellCount());
+		Assert.assertEquals(newRow2.getCellCount(), newRows.get(1).getCellCount());
+		// original row index 0
+		Assert.assertEquals(row, table2.getRowByIndex(2));
+
+		saveodt(mOdtTestFileName + "Out.odt");
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + "Out.odt");
+		Table newTable = mOdtDoc.getTableByName("Table2");
+
+		Assert.assertEquals(originalRowCount + 2, newTable.getRowCount());
+
+	}
+
+	@Test
+	public void testGetColumnList() {
+		String tablename = "MyTable";
+		String testFileName = "TestGetColumnList.odt";
+		try {
+			TextDocument document = TextDocument.newTextDocument();
+
+			int rowcount = 3, columncount = 3;
+			String[][] data = new String[rowcount][columncount];
+			for (int i = 0; i < rowcount; i++) {
+				for (int j = 0; j < columncount; j++) {
+					data[i][j] = "string" + (i * columncount + j);
+				}
+			}
+
+			String[] rowlabels = new String[rowcount];
+			for (int i = 0; i < rowcount; i++) {
+				rowlabels[i] = "RowHeader" + i;
+			}
+
+			String[] columnlabels = new String[columncount];
+			for (int i = 0; i < columncount; i++) {
+				columnlabels[i] = "ColumnHeader" + i;
+			}
+
+			Table table3 = Table.newTable(document, rowlabels, columnlabels, data);
+			table3.setTableName(tablename);
+
+			document.save(ResourceUtilities.newTestOutputFile(testFileName));
+			document = loadODTDocument(testFileName);
+			Table table = document.getTableByName(tablename);
+			Column tmpColumn;
+			List<Column> columns = table.getColumnList();
+
+			// the code below prints the column value,it shows that the first
+			// columns value is the same with the last column
+			for (int i = 0; i < columns.size(); i++) {
+				tmpColumn = columns.get(i);
+				for (int j = 0; j < tmpColumn.getCellCount(); j++) {
+					String text = tmpColumn.getCellByIndex(j).getStringValue();
+					if (i == 0 && j == 0) {
+						Assert.assertEquals("", text);
+					} else if (i == 0 && j > 0) {
+						Assert.assertEquals("RowHeader" + (j - 1), text);
+					} else if (i > 0 && j == 0) {
+						Assert.assertEquals("ColumnHeader" + (i - 1), text);
+					} else {
+						Assert.assertEquals("string" + ((j - 1) * columncount + i - 1), text);
+					}
+				}
+			}
+			
+			for (int i = 1; i < columns.size(); i++) {
+				tmpColumn = columns.get(i);
+				// each column's first cell is the column header
+				Assert.assertEquals(columnlabels[i - 1], tmpColumn.getCellByIndex(0).getStringValue());
+			}
+			Assert.assertEquals(columncount, columns.size() - 1);
+			Assert.assertEquals("", columns.get(0).getCellByIndex(0).getStringValue());
+			
+			//test table column iterator
+			Iterator<Column> columnIterator = table.getColumnIterator();
+			int columnNumber =0;
+			if(columnIterator.hasNext()){
+				Column column = columnIterator.next();
+				Assert.assertEquals("", column.getCellByIndex(0).getStringValue());
+				columnNumber++;
+			}
+			while(columnIterator.hasNext()){
+				Column column = columnIterator.next();
+				Assert.assertEquals(columnlabels[columnNumber-1], column.getCellByIndex(0).getStringValue());
+				columnNumber++;
+			}
+			Assert.assertEquals(columnNumber, columns.size());
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+
+	@Test
+	public void testGetRowList() {
+		String tablename = "MyTable";
+		String testFileName = "TestGetRowList.odt";
+		try {
+			TextDocument document = TextDocument.newTextDocument();
+
+			int rowcount = 3, columncount = 3;
+			String[][] data = new String[rowcount][columncount];
+			for (int i = 0; i < rowcount; i++) {
+				for (int j = 0; j < columncount; j++) {
+					data[i][j] = "string" + (i * columncount + j);
+				}
+			}
+
+			String[] rowlabels = new String[rowcount];
+			for (int i = 0; i < rowcount; i++) {
+				rowlabels[i] = "RowHeader" + i;
+			}
+
+			String[] columnlabels = new String[columncount];
+			for (int i = 0; i < columncount; i++) {
+				columnlabels[i] = "ColumnHeader" + i;
+			}
+
+			Table table3 = Table.newTable(document, rowlabels, columnlabels, data);
+			table3.setTableName(tablename);
+
+			document.save(ResourceUtilities.newTestOutputFile(testFileName));
+			document = loadODTDocument(testFileName);
+			Table table = document.getTableByName(tablename);
+			Row tmpRow;
+			List<Row> rows = table.getRowList();
+			for (int i = 1; i < rows.size(); i++) {
+				tmpRow = rows.get(i);
+				// each row's first cell is the row header
+				Assert.assertEquals(rowlabels[i - 1], tmpRow.getCellByIndex(0).getStringValue());
+			}
+			Assert.assertEquals(rowcount, rows.size() - 1);
+			Assert.assertEquals("", rows.get(0).getCellByIndex(0).getStringValue());
+			
+			//test table row iterator
+			Iterator<Row> rowIterator = table.getRowIterator();
+			int rowNumber =0;
+			if(rowIterator.hasNext()){
+				Row row = rowIterator.next();
+				Assert.assertEquals("", row.getCellByIndex(0).getStringValue());
+				rowNumber++;
+			}
+			while(rowIterator.hasNext()){
+				Row row = rowIterator.next();
+				Assert.assertEquals(rowlabels[rowNumber-1], row.getCellByIndex(0).getStringValue());
+				rowNumber++;
+			}
+			Assert.assertEquals(rowNumber, rows.size());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetColumnByIndex() {
+
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		Table table = mOdtDoc.getTableByName("Table3");
+		Assert.assertNotNull(table);
+		// test if index is negative number, which is an illegal argument.
+		boolean illegalArgumentFlag = false;
+		try {
+			table.getColumnByIndex(-1);
+		} catch (IllegalArgumentException ie) {
+			if ("index should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		Column column = table.getColumnByIndex(2);
+		Assert.assertNotNull(column);
+		Assert.assertEquals("string6", column.getCellByIndex(2).getStringValue());
+		// test column automatically expands.
+		// Table3 original size is 7 rows and 5 columns. this test case will
+		// test row index 8 and columns index 6 are work well though they are
+		// both out bound of the original table.
+		column = table.getColumnByIndex(8);
+		Assert.assertNotNull(column);
+		Cell cell = column.getCellByIndex(6);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string86");
+		Assert.assertEquals("string86", cell.getStringValue());
+	}
+
+	@Test
+	public void testGetRowByIndex() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		Table table = mOdtDoc.getTableByName("Table3");
+		Assert.assertNotNull(table);
+		// test index is negative number. This is a illegal argument.
+		boolean illegalArgumentFlag = false;
+		try {
+			table.getRowByIndex(-1);
+		} catch (IllegalArgumentException ie) {
+			if ("index should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		Row row = table.getRowByIndex(3);
+		Assert.assertNotNull(row);
+		Assert.assertEquals("string12", row.getCellByIndex(3).getStringValue());
+		// test row automatically expands.
+		// Table3 original size is 7 rows and 5 columns. this test case will
+		// test row index 8 and columns index 6 are work well though they are
+		// both out bound of the original table.
+		row = table.getRowByIndex(6);
+		Assert.assertNotNull(row);
+		Cell cell = row.getCellByIndex(8);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string86");
+		Assert.assertEquals("string86", cell.getStringValue());
+	}
+
+	@Test
+	public void testRemoveRowByIndex() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Table table2 = mOdtDoc.getTableByName("Table2");
+		Row row0 = table2.getRowByIndex(0);
+		Row row3 = table2.getRowByIndex(3);
+		int originalRowCount = table2.getRowCount();
+		table2.removeRowsByIndex(1, 2);
+
+		// original row index 0
+		Assert.assertEquals(row0, table2.getRowByIndex(0));
+		Assert.assertEquals(row3, table2.getRowByIndex(1));
+
+		saveodt(mOdtTestFileName + "Out.odt");
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + "Out.odt");
+		Table newTable = mOdtDoc.getTableByName("Table2");
+
+		Assert.assertEquals(originalRowCount - 2, newTable.getRowCount());
+	}
+
+	@Test
+	public void testGetHeaderRowCount() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		Table table = mOdtDoc.getTableByName("Table3");
+		int headerRowCount = table.getHeaderRowCount();
+		Assert.assertEquals(1, headerRowCount);
+	}
+
+	@Test
+	public void testGetRowCount() {
+		try {
+			// without table rows
+			Document mOdpDoc = Document.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("TableCountTestcase.odp"));
+			Table table = mOdpDoc.getTableByName("Table1");
+			int rowCount = table.getRowCount();
+			Assert.assertEquals(5, rowCount);
+			// with table rows
+			Document mOdcDoc = mOdpDoc.getEmbeddedDocument("Object 2/");
+			table = mOdcDoc.getTableByName("local-table");
+			rowCount = table.getRowCount();
+			Assert.assertEquals(5, rowCount);
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			e.printStackTrace();
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetHeaderColumnCount() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		Table table = mOdtDoc.getTableByName("Table3");
+		int headerColumnCount = table.getHeaderColumnCount();
+		Assert.assertEquals(1, headerColumnCount);
+
+	}
+
+	@Test
+	public void testGetColumnCountWithColumnsInDocument() {
+		try {
+			SpreadsheetDocument sDoc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("Spreadsheet with Embeded Chart.ods"));
+			List<Document> charts = sDoc.getEmbeddedDocuments(OdfMediaType.CHART);
+			for (Document chart : charts) {
+				// "local-table" is the inner table name of chart document with
+				// 2 columns
+				Table localTable = chart.getTableByName("local-table");
+				int columnCount = localTable.getColumnCount();
+				Assert.assertEquals(2, columnCount);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testIsProtected() throws Exception {
+		String tablename = "DeletedTable";
+		String outputFilename = "tableProtected.odt";
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Assert.assertNotNull(mOdtDoc);
+		Table table = mOdtDoc.getTableByName(tablename);
+		table.setProtected(false);
+		mOdtDoc.save(ResourceUtilities.newTestOutputFile(outputFilename));
+
+		mOdtDoc = loadODTDocument(outputFilename);
+		table = mOdtDoc.getTableByName(tablename);
+		Assert.assertFalse(table.isProtected());
+
+	}
+
+	@Test
+	public void testSetIsProtected() throws Exception {
+		String tablename = "DeletedTable";
+		String outputFilename = "tableProtected.odt";
+
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Assert.assertNotNull(mOdtDoc);
+		Table table = mOdtDoc.getTableByName(tablename);
+		table.setProtected(true);
+		mOdtDoc.save(ResourceUtilities.newTestOutputFile(outputFilename));
+
+		mOdtDoc = loadODTDocument(outputFilename);
+		table = mOdtDoc.getTableByName(tablename);
+		Assert.assertTrue(table.isProtected());
+	}
+
+	@Test
+	public void testGetCellByPosition() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		Table table = mOdtDoc.getTableByName("Table3");
+
+		Cell cell = table.getCellByPosition(3, 3);
+		Assert.assertNotNull(cell);
+		Assert.assertEquals("string12", cell.getStringValue());
+		cell = table.getCellByPosition("D4");
+		Assert.assertNotNull(cell);
+		Assert.assertEquals("string12", cell.getStringValue());
+		// test index are negative numbers. They are illegal arguments.
+		boolean illegalArgumentFlag = false;
+		try {
+			cell = table.getCellByPosition(-1, 0);
+		} catch (IllegalArgumentException ie) {
+			if ("colIndex and rowIndex should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		// test TextTable automatically expands.
+		// Table3 original size is 7 rows and 5 columns;
+		// test row index 8 and column index 6, row index and column index both
+		// out of bound, work well.
+		cell = table.getCellByPosition(8, 6);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string86");
+		Assert.assertEquals("string86", cell.getStringValue());
+		// test row index 9 and column index 4, row index out of bound, work
+		// well.
+		cell = table.getCellByPosition(4, 9);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string49");
+		Assert.assertEquals("string49", cell.getStringValue());
+		// test row index 9 and column index 4, column index out of bound, work
+		// well.
+		cell = table.getCellByPosition(9, 10);
+		Assert.assertNotNull(cell);
+		cell.setStringValue("string910");
+		Assert.assertEquals("string910", cell.getStringValue());
+		// test column index out of bound, work well.
+		cell = table.getCellByPosition("I4");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringI4");
+		Assert.assertEquals("stringI4", cell.getStringValue());
+		// test row index out of bound, work well.
+		cell = table.getCellByPosition("D11");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringD11");
+		Assert.assertEquals("stringD11", cell.getStringValue());
+		// test row index and column index both out of bound, work well.
+		cell = table.getCellByPosition("K12");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringK12");
+		Assert.assertEquals("stringK12", cell.getStringValue());
+		// test TestSpreadsheetTable automatically expands.
+		// Sheet1 original size is 6 rows and 9 columns;
+		table = mOdsDoc.getTableByName("Sheet1");
+		cell = table.getCellByPosition("C1");
+		Assert.assertNotNull(cell);
+		Assert.assertEquals("Currency", cell.getStringValue());
+		cell = table.getCellByPosition("K4");
+		Assert.assertNotNull(cell);
+		cell.setBooleanValue(true);
+		Assert.assertEquals(Boolean.TRUE, cell.getBooleanValue());
+		cell = table.getCellByPosition("D10");
+		Assert.assertNotNull(cell);
+		Calendar cal = Calendar.getInstance();
+		cell.setTimeValue(cal);
+		SimpleDateFormat simpleFormat = new SimpleDateFormat("'PT'HH'H'mm'M'ss'S'");
+		String expectedString = simpleFormat.format(cal.getTime());
+		String targetString = simpleFormat.format(cell.getTimeValue().getTime());
+		Assert.assertEquals(expectedString, targetString);
+		cell = table.getCellByPosition("M15");
+		Assert.assertNotNull(cell);
+		cell.setStringValue("stringM15");
+		Assert.assertEquals("stringM15", cell.getStringValue());
+	}
+
+	@Test
+	public void testGetCellWithAutoExtend() {
+		SpreadsheetDocument ods;
+		try {
+			ods = SpreadsheetDocument.newSpreadsheetDocument();
+			Table tbl = ods.getTableByName("Sheet1");
+			tbl.setTableName("Tests");
+			Cell cell = tbl.getCellByPosition(5, 5);
+			Assert.assertNotNull(cell);
+			Assert.assertEquals(6, tbl.getRowCount());
+			Assert.assertEquals(6, tbl.getColumnCount());
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetCellRangeByPosition() {
+		testNewTable();
+		mOdtDoc = loadODTDocument("CreateTableCase.odt");
+		Table table = mOdtDoc.getTableByName("Table3");
+
+		CellRange range = table.getCellRangeByPosition(0, 0, 3, 3);
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("A1", "D4");
+		Assert.assertNotNull(range);
+
+		// test TextTable automatically expands.
+		// Table3 original size is 7 rows and 5 columns;
+
+		// test index is negative number. They are illegal arguments.
+		boolean illegalArgumentFlag = false;
+		try {
+			range = table.getCellRangeByPosition(-1, 0, 2, -14);
+		} catch (IllegalArgumentException ie) {
+			if ("colIndex and rowIndex should be nonnegative integer.".equals(ie.getMessage())) {
+				illegalArgumentFlag = true;
+			}
+		}
+		Assert.assertTrue(illegalArgumentFlag);
+		range = table.getCellRangeByPosition(0, 0, 8, 6);
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition(0, 0, 4, 9);
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition(0, 0, 9, 10);
+		Assert.assertNotNull(range);
+		// get cell range by address.
+		range = table.getCellRangeByPosition("A1", "I4");
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("A1", "D11");
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("A1", "K12");
+		Assert.assertNotNull(range);
+		// test TestSpreadsheetTable automatically expands.
+		// Sheet1 original size is 6 rows and 9 columns;
+		// get cell range by index.
+		table = mOdsDoc.getTableByName("Sheet1");
+		range = table.getCellRangeByPosition("A1", "C1");
+		Assert.assertNotNull(range);
+		range = table.getCellRangeByPosition("B7", "K12");
+		Assert.assertNotNull(range);
+	}
+
+	@Test
+	public void testRemoveRowColumn() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Table table1 = mOdtDoc.getTableByName("Table1");
+		int rowCount = table1.getRowCount();
+		table1.removeRowsByIndex(1, 2);
+		Assert.assertEquals(rowCount - 2, table1.getRowCount());
+
+		Table table2 = mOdtDoc.getTableByName("Table2");
+		int columnCount = table2.getColumnCount();
+		table2.removeColumnsByIndex(2, 1);
+		Assert.assertEquals(columnCount - 1, table2.getColumnCount());
+
+		Table table3 = mOdtDoc.getTableByName("Table3");
+		rowCount = table3.getRowCount();
+		table3.removeRowsByIndex(0, 2);
+		Assert.assertEquals(rowCount - 2, table3.getRowCount());
+
+		saveodt(mOdtTestFileName + "Out.odt");
+
+	}
+
+	@Test
+	public void testAppendRow() {
+		OdfFileDom dom;
+		try {
+			SpreadsheetDocument odsDoc = SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("TestODSAppendRow.ods"));
+			dom = odsDoc.getContentDom();
+			NodeList tablelist = dom.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table");
+			for (int i = 0; i < tablelist.getLength(); i++) {
+				mOdsTable = (TableTableElement) tablelist.item(i);
+				testAppendRow(mOdsTable);
+			}
+			odsDoc.save(ResourceUtilities.newTestOutputFile("TestODSAppendRowOutput.ods"));
+
+			TextDocument odtDoc = TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("TestODTAppendRow.odt"));
+			dom = odtDoc.getContentDom();
+			tablelist = dom.getElementsByTagNameNS(OdfDocumentNamespace.TABLE.getUri(), "table");
+			for (int i = 0; i < tablelist.getLength(); i++) {
+				mOdtTable = (TableTableElement) tablelist.item(i);
+				testAppendRow(mOdtTable);
+			}
+			odtDoc.save(ResourceUtilities.newTestOutputFile("TestODTAppendRowOutput.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAppendRowsWithCoveredCell() {
+		SpreadsheetDocument odsDoc = null;
+		Table table = null;
+		try {
+			odsDoc = SpreadsheetDocument.newSpreadsheetDocument();
+			table = Table.newTable(odsDoc);
+			mergeCells(table, 1, 1, 3, 2);
+			mergeCells(table, 2, 4, 3, 3);
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+
+	@Test
+	public void testAppendRowsWithRowsRepeated() {
+		SpreadsheetDocument odsDoc = null;
+		Table table = null;
+		try {
+			odsDoc = SpreadsheetDocument.newSpreadsheetDocument();
+			table = Table.newTable(odsDoc, 1, 1);
+			table.appendRows(12);
+			Row row10 = table.getRowByIndex(10);
+			Row row11 = table.getRowByIndex(11);
+			// default appended rows described by single element
+			Assert.assertSame(row10.getOdfElement(), row11.getOdfElement());
+
+			table.setUseRepeat(false);
+			table.appendRows(12);
+			Row row20 = table.getRowByIndex(20);
+			Row row21 = table.getRowByIndex(21);
+			Assert.assertNotSame(row20.getOdfElement(), row21.getOdfElement());
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAppendColumnsWithColumnsRepeated() {
+		SpreadsheetDocument odsDoc = null;
+		Table table = null;
+		try {
+			odsDoc = SpreadsheetDocument.newSpreadsheetDocument();
+			table = Table.newTable(odsDoc, 1, 1);
+			table.appendColumns(12);
+			Column column10 = table.getColumnByIndex(10);
+			Column column11 = table.getColumnByIndex(11);
+
+			Cell cell10 = table.getCellByPosition(10, 2);
+			Cell cell11 = table.getCellByPosition(11, 2);
+
+			// default appended rows described by single element
+			Assert.assertSame(column10.getOdfElement(), column11.getOdfElement());
+			Assert.assertSame(cell10.getOdfElement(), cell11.getOdfElement());
+
+			table.setUseRepeat(false);
+			table.appendColumns(12);
+			Column column20 = table.getColumnByIndex(20);
+			Column column21 = table.getColumnByIndex(21);
+
+			Cell cell20 = table.getCellByPosition(20, 2);
+			Cell cell21 = table.getCellByPosition(21, 2);
+
+			Assert.assertNotSame(column20.getOdfElement(), column21.getOdfElement());
+			Assert.assertNotSame(cell20.getOdfElement(), cell21.getOdfElement());
+
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSplitCellAddress() {
+		mOdtDoc = loadODTDocument(mOdtTestFileName + ".odt");
+		Table table1 = mOdtDoc.getTableByName("Table1");
+		// reproduce bug 138, test case to proof the fix problem.
+		// test address without table name.
+		String[] address = table1.splitCellAddress("A1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("A", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("AC1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("B34");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("B", address[1]);
+		Assert.assertEquals("34", address[2]);
+		address = table1.splitCellAddress("AC29");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("29", address[2]);
+
+		// test relative address
+		address = table1.splitCellAddress("Table1.A1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("A", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("Table1.AC1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("Table1.B34");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("B", address[1]);
+		Assert.assertEquals("34", address[2]);
+		address = table1.splitCellAddress("Table1.AC29");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("29", address[2]);
+
+		// test absolute address.
+		address = table1.splitCellAddress("$Table1.$A$1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("A", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("$Table1.$AC$1");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("1", address[2]);
+		address = table1.splitCellAddress("$Table1.$B$34");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("B", address[1]);
+		Assert.assertEquals("34", address[2]);
+		address = table1.splitCellAddress("$Table1.$AC$29");
+		Assert.assertEquals("Table1", address[0]);
+		Assert.assertEquals("AC", address[1]);
+		Assert.assertEquals("29", address[2]);
+	}
+
+	// Bug 97 - Row.getCellAt(int) returns null when the cell is a repeat cell
+	@Test
+	public void testGetCellAt() {
+		try {
+			SpreadsheetDocument doc = (SpreadsheetDocument) SpreadsheetDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("testGetCellAt.ods"));
+			Table odfTable = doc.getTableList().get(0);
+			Row valueRows = odfTable.getRowByIndex(0);
+			for (int i = 0; i < 4; i++) {
+				Cell cell = valueRows.getCellByIndex(i);
+				Assert.assertNotNull(cell);
+				int value = cell.getDoubleValue().intValue();
+				Assert.assertEquals(1, value);
+			}
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+		}
+	}
+
+	@Test
+	public void testDeleteRowsOnEmptyTable() throws Exception {
+		SpreadsheetDocument doc = SpreadsheetDocument.newSpreadsheetDocument();
+		Table odfTable = doc.addTable();
+		// two rows are created by default
+		Assert.assertEquals(2, odfTable.getRowCount());
+		while(odfTable.getRowCount() != 0) {
+			odfTable.removeRowsByIndex(0, 1);
+		}
+		Assert.assertEquals(0, odfTable.getRowCount());
+	}
+
+	private void testAppendRow(TableTableElement table) {
+		Table fTable = Table.getInstance(table);
+		int count = fTable.getRowCount();
+		fTable.appendRow();
+		int newcount = fTable.getRowCount();
+		Assert.assertEquals(count + 1, newcount);
+	}
+
+	private void saveods() {
+		try {
+			mOdsDoc.save(ResourceUtilities.newTestOutputFile(mOdsTestFileName + "Output.ods"));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void saveodt(String filename) {
+		try {
+			mOdtDoc.save(ResourceUtilities.newTestOutputFile(filename));
+		} catch (Exception e) {
+			Logger.getLogger(TableTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void mergeCells(Table table, int cellCol, int cellRow, int colSpan, int rowSpan) {
+		if (table != null) {
+			CellRange range = table.getCellRangeByPosition(cellCol, cellRow, cellCol + colSpan - 1, cellRow + rowSpan
+					- 1);
+			range.merge();
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/FooterTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/FooterTest.java
new file mode 100644
index 0000000..3b2bda9
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/FooterTest.java
@@ -0,0 +1,285 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleFooterElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+public class FooterTest {
+
+	String footerDocumentPath = "FooterTableDocument.odt";
+
+	@Test
+	public void testAddTable() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			Assert.assertNotNull(footer);
+
+			Table table = footer.addTable(1, 1);
+			table.setTableName("footerTable");
+			int rowCount = table.getRowCount();
+			int columnCount = table.getColumnCount();
+			String expectedCellValue = "footer table cell";
+			Cell cellByPosition = table.getCellByPosition(0, 0);
+			cellByPosition.setStringValue(expectedCellValue);
+			cellByPosition.setHorizontalAlignment(HorizontalAlignmentType.CENTER);
+			cellByPosition.setCellBackgroundColor(Color.GREEN);
+			
+			//first page
+			footer = doc.getFooter(true);
+			Assert.assertNotNull(footer);
+			table = footer.addTable(1, 2);
+			table.setTableName("footerFTable");
+			doc.save(ResourceUtilities.newTestOutputFile(footerDocumentPath));
+
+			// load the document again.
+			doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(footerDocumentPath));
+			footer = doc.getFooter();
+			table = footer.getTableByName("footerTable");
+			Assert.assertEquals(rowCount, table.getRowCount());
+			Assert.assertEquals(columnCount, table.getColumnCount());
+			Assert.assertEquals(expectedCellValue, cellByPosition.getStringValue());
+
+			footer = doc.getFooter(true);
+			table = footer.getTableByName("footerFTable");
+			Assert.assertNotNull(table);
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testFooterHidden() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			Footer footer = doc.getFooter();
+			Assert.assertEquals(true, footer.isVisible());
+			footer.setVisible(false);
+			Assert.assertEquals(false, footer.isVisible());
+			doc.save(ResourceUtilities.newTestOutputFile("footerHiddenOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetOdfElement() {
+		try {
+			//TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			StyleFooterElement footerEle = footer.getOdfElement();
+			footerEle.setTextContent("hello world");
+			Assert.assertEquals("hello world", footerEle.getTextContent());
+
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testAddtable() {
+		try {
+			//TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			Table tab = footer.addTable();
+			Assert.assertNotNull(tab);
+			Assert.assertTrue(2 == tab.getRowCount());
+			Assert.assertTrue(5 == tab.getColumnCount());
+			
+			TableTableElement tabEle = tab.getOdfElement();
+			System.out.println(tabEle);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetTableList() {
+		try {
+			//TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			Table tab = footer.addTable();
+			
+			List<Table> tabList = footer.getTableList();
+			Assert.assertEquals(tab, tabList.get(0));
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetTableBuilder() {
+		try {
+			//TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			//Table tab = footer.addTable();
+			
+			TableBuilder tb = footer.getTableBuilder();
+			Table tab = tb.newTable();
+			
+			Assert.assertNotNull(tab);
+			Assert.assertTrue(2 == tab.getRowCount());
+			Assert.assertTrue(5 == tab.getColumnCount());
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetVariableContainerElement() {
+		try {
+			//TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			OdfElement odfEle = footer.getVariableContainerElement();
+			
+			TableBuilder tb = footer.getTableBuilder();
+			Table tab = tb.newTable();
+			
+			Assert.assertNotNull(tab);
+			Assert.assertTrue(2 == tab.getRowCount());
+			Assert.assertTrue(5 == tab.getColumnCount());
+			
+			Node nod = odfEle.getFirstChild();
+			Assert.assertEquals("table:table", nod.getNodeName());
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testDeclareVariable() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			footer.declareVariable("footername", VariableType.USER);
+			
+			//validate
+			StyleFooterElement styleFoot = footer.getOdfElement();
+			Node nod = styleFoot.getFirstChild().getFirstChild();
+			NamedNodeMap nameMap = nod.getAttributes();
+			Node nodtext = nameMap.getNamedItem("text:name");
+			Assert.assertEquals("footername", nodtext.getNodeValue());
+			
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetVariableFieldByName() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			footer.declareVariable("footername", VariableType.USER);
+			VariableField vField = footer.getVariableFieldByName("footername");
+			String vName = vField.getVariableName();
+			
+			//validate
+			StyleFooterElement styleFoot = footer.getOdfElement();
+			Node nod = styleFoot.getFirstChild().getFirstChild();
+			NamedNodeMap nameMap = nod.getAttributes();
+			Node nodtext = nameMap.getNamedItem("text:name");
+			Assert.assertEquals(vName, nodtext.getNodeValue());
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("footerOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(FooterTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAppendNewSection() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Footer footer = doc.getFooter();
+			Section sect = footer.appendSection("Section1");
+			Assert.assertNotNull(sect);
+
+			StyleFooterElement styleFoot = footer.getOdfElement();
+			Node nod = styleFoot.getFirstChild();
+			NamedNodeMap nameMap = nod.getAttributes();
+			Node nodtext = nameMap.getNamedItem("text:name");
+			Assert.assertEquals("Section1", nodtext.getNodeValue());
+
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE,
+					null, e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/HeaderTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/HeaderTest.java
new file mode 100644
index 0000000..a6a9a82
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/HeaderTest.java
@@ -0,0 +1,267 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.style.StyleHeaderElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.field.VariableField;
+import org.odftoolkit.simple.common.field.VariableField.VariableType;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.table.Table.TableBuilder;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+public class HeaderTest {
+
+	String headerDocumentPath = "HeaderTableDocument.odt";
+
+	@Test
+	public void testAddTable() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			Assert.assertNotNull(header);
+
+			Table table = header.addTable();
+			table.setTableName("headerTable");
+			int rowCount = table.getRowCount();
+			int columnCount = table.getColumnCount();
+			String expectedCellValue = "header table cell";
+			table.getCellByPosition(1, 1).setStringValue(expectedCellValue);
+			Cell cell = table.getCellByPosition(4, 0);
+			cell.setImage(ResourceUtilities.getURI("image_list_item.png"));
+			// first page
+			header = doc.getHeader(true);
+			Assert.assertNotNull(header);
+
+			table = header.addTable();
+			table.setTableName("headerHTable");
+			doc.save(ResourceUtilities.newTestOutputFile(headerDocumentPath));
+			
+			// load the document again.
+			doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(headerDocumentPath));
+			header = doc.getHeader();
+			table = header.getTableByName("headerTable");
+			Assert.assertEquals(rowCount, table.getRowCount());
+			Assert.assertEquals(columnCount, table.getColumnCount());
+			Assert.assertEquals(expectedCellValue, table.getCellByPosition(1, 1).getStringValue());
+			cell = table.getCellByPosition(4, 0);
+			Assert.assertEquals(34, cell.getBufferedImage().getHeight(null));
+			table.getColumnByIndex(4).setWidth(15);
+			
+			header = doc.getHeader(true);
+			table = header.getTableByName("headerHTable");
+			Assert.assertNotNull(table);
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testHeaderHidden() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			Header header = doc.getHeader();
+			Assert.assertEquals(true, header.isVisible());
+			header.setVisible(false);
+			Assert.assertEquals(false, header.isVisible());
+			doc.save(ResourceUtilities.newTestOutputFile("headerHiddenOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	@Test
+	public void testGetOdfElement() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("headerFooterHidden.odt"));
+			Header header = doc.getHeader();
+			StyleHeaderElement styleheader = header.getOdfElement();
+			Assert.assertNotNull(styleheader);
+			Assert.assertEquals("header", styleheader.getLocalName());
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("headerHiddenOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetTableList() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			Table tab = header.addTable();
+			
+			//validate
+			List<Table> listTab = header.getTableList();
+			Table tab1 = listTab.get(0);
+			Assert.assertNotNull(tab1);
+			Assert.assertEquals(tab, tab1);
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("headerTableOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetTableBuilder() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			
+			TableBuilder tabBuilder = header.getTableBuilder();
+			Table tab = tabBuilder.newTable();
+			Assert.assertNotNull(tab);
+			Assert.assertTrue(2 == tab.getRowCount());
+			Assert.assertTrue(5 == tab.getColumnCount());
+			
+			//validate
+			List<Table> listTab = header.getTableList();
+			Table tab1 = listTab.get(0);
+			Assert.assertNotNull(tab1);
+			Assert.assertEquals(tab, tab1);
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("headerTableOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetVariableContainerElement() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			
+			OdfElement odfEle = header.getVariableContainerElement();
+			
+			TableBuilder tb = header.getTableBuilder();
+			Table tab = tb.newTable();
+			
+			Assert.assertNotNull(tab);
+			Assert.assertTrue(2 == tab.getRowCount());
+			Assert.assertTrue(5 == tab.getColumnCount());
+			
+			Node nod = odfEle.getFirstChild();
+			Assert.assertEquals("table:table", nod.getNodeName());
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("headerTableOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testDeclareVariable() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			
+			header.declareVariable("headername", VariableType.USER);
+			
+			//validate
+			StyleHeaderElement styleHeader = header.getOdfElement();
+			Node nod = styleHeader.getFirstChild().getFirstChild();
+			NamedNodeMap nameMap = nod.getAttributes();
+			Node nodtext = nameMap.getNamedItem("text:name");
+			Assert.assertEquals("headername", nodtext.getNodeValue());
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("headerTableOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetVariableFieldByName() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			
+			header.declareVariable("headername", VariableType.USER);
+			VariableField vField = header.getVariableFieldByName("headername");
+			String vName = vField.getVariableName();
+			
+			//validate
+			StyleHeaderElement styleHead = header.getOdfElement();
+			Node nod = styleHead.getFirstChild().getFirstChild();
+			NamedNodeMap nameMap = nod.getAttributes();
+			Node nodtext = nameMap.getNamedItem("text:name");
+			Assert.assertEquals(vName, nodtext.getNodeValue());
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("headerTableOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAppendNewSection() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Header header = doc.getHeader();
+			Section sect = header.appendSection("Section1");
+			Assert.assertNotNull(sect);
+
+			StyleHeaderElement styleHead = header.getOdfElement();
+			Node nod = styleHead.getFirstChild();
+			NamedNodeMap nameMap = nod.getAttributes();
+			Node nodtext = nameMap.getNamedItem("text:name");
+			Assert.assertEquals("Section1", nodtext.getNodeValue());
+
+		} catch (Exception e) {
+			Logger.getLogger(HeaderTest.class.getName()).log(Level.SEVERE,
+					null, e);
+			Assert.fail(e.getMessage());
+		}
+
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/ParagraphStyleHandlerTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/ParagraphStyleHandlerTest.java
new file mode 100644
index 0000000..9240038
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/ParagraphStyleHandlerTest.java
@@ -0,0 +1,116 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.Document;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.TextLinePosition;
+
+public class ParagraphStyleHandlerTest {
+
+	private static final Logger LOGGER =  Logger.getLogger(ParagraphStyleHandlerTest.class.getName());
+
+	@Test
+	public void testGetParagraphByIndex() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph = doc.addParagraph("paragraphTest");
+			ParagraphStyleHandler paragraphHandler = paragraph.getStyleHandler();
+			
+			paragraphHandler.setCountry("English", Document.ScriptType.WESTERN);
+			
+			//validate
+			String country = paragraphHandler.getCountry(Document.ScriptType.WESTERN);
+			Assert.assertEquals("English", country);
+			
+			paragraphHandler.setCountry(null, Document.ScriptType.WESTERN);
+			
+			//validate
+			String country1 = paragraphHandler.getCountry(Document.ScriptType.WESTERN);
+			
+			Assert.assertNull(country1);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testParagraphStyleHandler.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetFont() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph = doc.addParagraph("paragraphTest");
+			ParagraphStyleHandler paragraphHandler = paragraph.getStyleHandler();
+			
+			Font fontBase = new Font("Arial", FontStyle.ITALIC, 10, Color.BLACK, TextLinePosition.THROUGH);
+			paragraphHandler.setFont(fontBase);
+			//validate
+			Font font = paragraphHandler.getFont(Document.ScriptType.WESTERN);
+			Assert.assertEquals(fontBase, font);
+			
+			paragraphHandler.setFont(fontBase, Locale.CHINESE);
+			//validate
+			Font font1 = paragraphHandler.getFont(Document.ScriptType.WESTERN);
+			Assert.assertEquals(fontBase, font1);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testParagraphStyleHandler.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+	
+	
+	@Test
+	public void testGetLanguage() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph = doc.addParagraph("paragraphTest");
+			ParagraphStyleHandler paragraphHandler = paragraph.getStyleHandler();
+			
+			paragraphHandler.setLanguage("English", Document.ScriptType.WESTERN);
+			
+			//validate
+			String language = paragraphHandler.getLanguage(Document.ScriptType.WESTERN);
+			
+			Assert.assertEquals("English", language);
+			
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("testParagraphStyleHandler.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/ParagraphTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/ParagraphTest.java
new file mode 100644
index 0000000..e59c3cc
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/ParagraphTest.java
@@ -0,0 +1,334 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.io.FileNotFoundException;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.StyleTypeDefinitions;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.HorizontalAlignmentType;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class ParagraphTest {
+
+	private static final String[] PLAIN_TEXT = { "nospace", "one space", "two  spaces", "three   spaces",
+			"   three leading spaces", "three trailing spaces   ", "one\ttab", "two\t\ttabs", "\tleading tab",
+			"trailing tab\t", "mixed   \t   spaces and tabs", "line" + System.getProperty("line.separator") + "break" };
+
+	private static final String[][] ELEMENT_RESULT = { { "nospace" }, { "one space" }, { "two ", "*s1", "spaces" },
+			{ "three ", "*s2", "spaces" }, { " ", "*s2", "three leading spaces" }, { "three trailing spaces ", "*s2" },
+			{ "one", "*t", "tab" }, { "two", "*t", "*t", "tabs" }, { "*t", "leading tab" }, { "trailing tab", "*t" },
+			{ "mixed ", "*s2", "*t", " ", "*s2", "spaces and tabs" }, { "line", "*n", "break" } };
+
+	private static final Logger LOGGER = Logger.getLogger(ParagraphTest.class.getName());
+
+	private static final String TEST_FILE = "CommentBreakHeadingDocument.odt";
+
+	@Test
+	public void testAppend() {
+		TextDocument doc;
+		try {
+			doc = TextDocument.newTextDocument();
+			int i;
+			for (i = 0; i < PLAIN_TEXT.length; i++) {
+				Paragraph para = Paragraph.newParagraph(doc);
+				para.appendTextContent(PLAIN_TEXT[i]);
+				compareResults(para.getOdfElement(), PLAIN_TEXT[i], ELEMENT_RESULT[i]);
+			}
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetTextContent() {
+		TextDocument doc;
+		try {
+			doc = TextDocument.newTextDocument();
+			int i;
+			for (i = 0; i < PLAIN_TEXT.length; i++) {
+				Paragraph para = Paragraph.newParagraph(doc);
+				para.setTextContent(PLAIN_TEXT[i]);
+				compareResults(para.getOdfElement(), PLAIN_TEXT[i], ELEMENT_RESULT[i]);
+
+				String content = para.getTextContent();
+				Assert.assertEquals(PLAIN_TEXT[i], content);
+			}
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testRemoveContent() {
+		TextDocument doc;
+		try {
+			doc = TextDocument.newTextDocument();
+			int i;
+			for (i = 0; i < PLAIN_TEXT.length; i++) {
+				Paragraph para = Paragraph.newParagraph(doc);
+				para.setTextContentNotCollapsed(PLAIN_TEXT[i]);
+				String content = para.getTextContent();
+				Assert.assertEquals(PLAIN_TEXT[i], content);
+				para.removeTextContent();
+				content = para.getTextContent();
+				Assert.assertEquals("", content);
+			}
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void compareResults(Element element, String input, String[] output) {
+		int i;
+		int nSpaces;
+		int nSpacesInAttribute;
+		Node node = element.getFirstChild();
+		for (i = 0; i < output.length; i++) {
+			if (output[i].startsWith("*")) {
+				Assert.assertEquals(Node.ELEMENT_NODE, node.getNodeType());
+				if (output[i].equals("*t")) {
+					Assert.assertEquals("tab", node.getLocalName());
+				} else if (output[i].equals("*n")) {
+					Assert.assertEquals("line-break", node.getLocalName());
+				} else {
+					nSpaces = Integer.parseInt(output[i].substring(2));
+					Assert.assertEquals(node.getLocalName(), "s");
+					nSpacesInAttribute = Integer.parseInt(((Element) node).getAttribute("text:c"));
+					Assert.assertEquals(nSpaces, nSpacesInAttribute);
+				}
+			} else {
+				Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
+				Assert.assertEquals(output[i], node.getTextContent());
+			}
+			node = node.getNextSibling();
+		}
+		Assert.assertEquals(node, null);
+	}
+
+	@Test
+	public void testGetParagraphByIndex() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph1 = doc.addParagraph("paragraph1");
+			Paragraph paragraphE = doc.addParagraph(null);
+			Paragraph paragraph2 = doc.addParagraph("p2");
+
+			Paragraph t1 = doc.getParagraphByIndex(1, false);
+			Assert.assertEquals(t1, paragraph1);
+			t1 = doc.getParagraphByIndex(3, false);
+			Assert.assertEquals(t1, paragraph2);
+			t1 = doc.getParagraphByIndex(1, true);
+			Assert.assertEquals(t1, paragraph2);
+			t1 = doc.getParagraphByReverseIndex(0, false);
+			Assert.assertEquals(t1, paragraph2);
+			t1 = doc.getParagraphByReverseIndex(2, false);
+			Assert.assertEquals(t1, paragraph1);
+			t1 = doc.getParagraphByReverseIndex(1, true);
+			Assert.assertEquals(t1, paragraph1);
+			doc.save(ResourceUtilities.newTestOutputFile("testGetParagraphByIndex.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetGetFont() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph1 = doc.addParagraph("paragraph1");
+			Font font1 = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 12, Color.BLACK,
+					StyleTypeDefinitions.TextLinePosition.THROUGH);
+			paragraph1.setFont(font1);
+			Font font11 = paragraph1.getFont();
+			LOGGER.info(font11.toString());
+			if (!font11.equals(font1)) {
+				Assert.fail();
+			}
+
+			Paragraph paragraph2 = doc.addParagraph("paragraph2");
+			Font font2 = new Font("Arial", StyleTypeDefinitions.FontStyle.ITALIC, 12, Color.RED,
+					StyleTypeDefinitions.TextLinePosition.UNDER);
+			paragraph2.setFont(font2);
+			Font font22 = paragraph2.getFont();
+			LOGGER.info(font22.toString());
+			if (!font22.equals(font2)) {
+				Assert.fail();
+			}
+
+			Paragraph paragraph3 = doc.addParagraph("paragraph3");
+			Font font3 = paragraph3.getFont();
+			LOGGER.info(font3.toString());
+			font3.setColor(Color.GREEN);
+			font3.setFontStyle(StyleTypeDefinitions.FontStyle.BOLD);
+			paragraph3.setFont(font3);
+			LOGGER.info(font3.toString());
+			Font font33 = paragraph3.getFont();
+			if (!font33.equals(font3)) {
+				Assert.fail();
+			}
+			doc.save(ResourceUtilities.newTestOutputFile("TestParagraphSetGetFont.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testGetSetHoriAlignment() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph paragraph1 = doc.addParagraph("paragraph1");
+
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.DEFAULT);
+			HorizontalAlignmentType align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.DEFAULT, align);
+
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.LEFT);
+			align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.LEFT, align);
+
+			paragraph1.setHorizontalAlignment(HorizontalAlignmentType.RIGHT);
+			align = paragraph1.getHorizontalAlignment();
+			Assert.assertEquals(HorizontalAlignmentType.RIGHT, align);
+
+			doc.save(ResourceUtilities.newTestOutputFile("TestParagraphSetGetHoriAlignment.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testGetSetHeading() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath(TEST_FILE));
+			// test isHeading() and getHeadingLevel();
+			Paragraph headingParagraph = doc.getParagraphByIndex(0, true);
+			Assert.assertEquals(true, headingParagraph.isHeading());
+			Assert.assertEquals(1, headingParagraph.getHeadingLevel());
+			Paragraph textParagraph = doc.getParagraphByIndex(1, true);
+			Assert.assertEquals(false, textParagraph.isHeading());
+			Assert.assertEquals(0, textParagraph.getHeadingLevel());
+
+			// test applyHeading()
+			textParagraph.applyHeading();
+			Assert.assertEquals(true, textParagraph.isHeading());
+			Assert.assertEquals(1, textParagraph.getHeadingLevel());
+			textParagraph.applyHeading(true, 3);
+			Assert.assertEquals(true, textParagraph.isHeading());
+			Assert.assertEquals(3, textParagraph.getHeadingLevel());
+
+			doc.save(ResourceUtilities.newTestOutputFile("TestParagraphSetGetHeading.odt"));
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testHyperlink() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Paragraph para = doc.addParagraph("abc");
+			TextHyperlink link1 = para.applyHyperlink(new URI("http://odftoolkit.org"));
+			Assert.assertEquals("http://odftoolkit.org", link1.getURI().toString());
+			Assert.assertEquals("abc", link1.getTextContent());
+
+			String text = para.getTextContent();
+			Assert.assertEquals("abc", text);
+
+			para.removeTextContent();
+			text = para.getTextContent();
+			Assert.assertEquals("", text);
+			para.setTextContent("no hyperlink there ");
+			para.appendHyperlink("link to ibm", new URI("http://www.ibm.com"));
+
+			Paragraph heading = doc.addParagraph("Heading1");
+			TextHyperlink link2 = heading.applyHyperlink(new URI("mailto:daisy@odftoolkit.org"));
+			heading.applyHeading(true, 1);
+
+			link2.setTextContent("New Heading1");
+			link2.setURI(new URI("mailto:devin@odftoolkit.org"));
+			Assert.assertEquals("mailto:devin@odftoolkit.org", link2.getURI().toString());
+
+			Paragraph para3 = doc.addParagraph("world");
+			TextHyperlink link3 = para3.applyHyperlink(new URI("http://odftoolkit.org"));
+			link3.setTextContent("new world");
+			para3.appendTextContent("_prefix");
+			para3.appendTextContent("_nolink", false);
+
+			doc.save(ResourceUtilities.newTestOutputFile("TestParagraphHyperlink.odt"));
+
+			TextDocument textdoc = TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream("TestParagraphHyperlink.odt"));
+			Iterator<TextHyperlink> linkList = textdoc.getParagraphByReverseIndex(1, true).getHyperlinkIterator();
+			if (linkList.hasNext()) {
+				TextHyperlink aLink = linkList.next();
+				Assert.assertEquals("New Heading1", aLink.getTextContent());
+				Assert.assertEquals("mailto:devin@odftoolkit.org", aLink.getURI().toString());
+			}
+
+			linkList = textdoc.getParagraphByReverseIndex(0, true).getHyperlinkIterator();
+			if (linkList.hasNext()) {
+				TextHyperlink aLink = linkList.next();
+				Assert.assertEquals("new world_prefix", aLink.getTextContent());
+				Assert.assertEquals("http://odftoolkit.org", aLink.getURI().toString());
+			}
+		} catch (Exception e) {
+			LOGGER.log(Level.SEVERE, e.getMessage(), e);
+			Assert.fail();
+		}
+	}
+        
+	@Test
+	public void testGetTextContentWithLibreOfficeFile() throws FileNotFoundException, Exception {
+		TextDocument document = TextDocument.loadDocument(ResourceUtilities.getAbsolutePath("Bell.odt"));
+		Paragraph paragraph = document.getParagraphByIndex(0, true);
+
+		Assert.assertEquals(
+			"Bell, based in Los Angeles, makes and distributes electronic articles, "
+			+ "computer and building products.", 
+			paragraph.getTextContent());
+	}
+        
+	@Test
+	public void shouldReturnMultipleLines() throws Exception {
+		final String expected = "Hello\tWorld!\twho \t ever read this, is stupid.\n\n\nReally!";
+		TextDocument document = TextDocument.newTextDocument();
+		Paragraph p = document.addParagraph(expected);
+		String textContent = p.getTextContent();
+		Assert.assertEquals(expected, textContent.replace("\r", ""));
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/SectionTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/SectionTest.java
new file mode 100644
index 0000000..2159455
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/SectionTest.java
@@ -0,0 +1,653 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.draw.DrawImageElement;
+import org.odftoolkit.odfdom.dom.element.table.TableTableElement;
+import org.odftoolkit.odfdom.pkg.OdfElement;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.list.List;
+import org.odftoolkit.simple.text.list.ListDecorator;
+import org.odftoolkit.simple.text.list.ListTest;
+import org.odftoolkit.simple.text.list.NumberDecorator;
+import org.odftoolkit.simple.text.list.OutLineDecorator;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+import sun.misc.BASE64Encoder;
+
+public class SectionTest {
+
+	@Test
+	public void testCopyPasteResource() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("ImageSection");
+			String newName = doc.appendSection(theSec, false).getName();
+			doc.save(ResourceUtilities.newTestOutputFile("NewSection.odt"));
+
+			TextDocument newDoc = TextDocument
+					.loadDocument(ResourceUtilities.getTestResourceAsStream("NewSection.odt"));
+			theSec = newDoc.getSectionByName("ImageSection");
+			Section newSec = newDoc.getSectionByName(newName);
+
+			XPath xpath = newDoc.getContentDom().getXPath();
+			DrawImageElement oldImage = (DrawImageElement) xpath.evaluate(".//draw:image", theSec.getOdfElement(),
+					XPathConstants.NODE);
+			DrawImageElement newImage = (DrawImageElement) xpath.evaluate(".//draw:image", newSec.getOdfElement(),
+					XPathConstants.NODE);
+			Assert.assertEquals(oldImage.getXlinkHrefAttribute(), newImage.getXlinkHrefAttribute());
+
+			OdfPackage packageDocument = newDoc.getPackage();
+			String imagePathPrefix = "Pictures/";
+			int count = 0;
+			Iterator<String> filePaths = packageDocument.getFilePaths().iterator();
+			while (filePaths.hasNext()) {
+				String path = filePaths.next();
+				if (path.startsWith(imagePathPrefix) && path.length() > imagePathPrefix.length())
+					count++;
+				if (count > 2)
+					break;
+			}
+			Assert.assertEquals(1, count);
+			// ---------resource copied------
+			doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			theSec = doc.getSectionByName("ImageSection");
+			newName = doc.appendSection(theSec, true).getName();
+			doc.save(ResourceUtilities.newTestOutputFile("NewSection1.odt"));
+
+			newDoc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("NewSection1.odt"));
+			theSec = newDoc.getSectionByName("ImageSection");
+			newSec = newDoc.getSectionByName(newName);
+
+			xpath = newDoc.getContentDom().getXPath();
+			oldImage = (DrawImageElement) xpath.evaluate(".//draw:image", theSec.getOdfElement(), XPathConstants.NODE);
+			newImage = (DrawImageElement) xpath.evaluate(".//draw:image", newSec.getOdfElement(), XPathConstants.NODE);
+			if (oldImage.getXlinkHrefAttribute().equals(newImage.getXlinkHrefAttribute()))
+				Assert.fail();
+
+			packageDocument = newDoc.getPackage();
+			count = 0;
+			filePaths = packageDocument.getFilePaths().iterator();
+			while (filePaths.hasNext()) {
+				String path = filePaths.next();
+				if (path.startsWith(imagePathPrefix) && path.length() > imagePathPrefix.length())
+					count++;
+				if (count > 2)
+					break;
+			}
+			Assert.assertEquals(2, count);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testForeignCopyPaste() {
+		try {
+			TextDocument newDoc = TextDocument.newTextDocument();
+
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Iterator<Section> sections = doc.getSectionIterator();
+
+			int count = 0;
+			while (sections.hasNext()) {
+				Section aSection = sections.next();
+				count++;
+				newDoc.newParagraph("----Start of " + aSection.getName() + "---------");
+				newDoc.appendSection(aSection, false);
+				newDoc.newParagraph("----End of " + aSection.getName() + "---------");
+				newDoc.newParagraph();
+				newDoc.newParagraph();
+				newDoc.newParagraph();
+			}
+			newDoc.save(ResourceUtilities.newTestOutputFile("NewNewSections.odt"));
+
+			newDoc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("NewNewSections.odt"));
+			sections = newDoc.getSectionIterator();
+			int i = 0;
+			while (sections.hasNext()) {
+				sections.next();
+				i++;
+			}
+			// an embed section is counted two times
+			Assert.assertEquals(count + 1, i);
+
+			OdfPackage packageDocument = newDoc.getPackage();
+			String imagePathPrefix = "Pictures/";
+			count = 0;
+			Iterator<String> filePaths = packageDocument.getFilePaths().iterator();
+			while (filePaths.hasNext()) {
+				String path = filePaths.next();
+				if (path.startsWith(imagePathPrefix) && path.length() > imagePathPrefix.length())
+					count++;
+				if (count > 2)
+					break;
+			}
+			Assert.assertEquals(1, count);
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testCopyPasteAll() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Iterator<Section> sections = doc.getSectionIterator();
+
+			int count = 0;
+			while (sections.hasNext()) {
+				Section aSection = sections.next();
+				count++;
+				doc.newParagraph("----Start of " + aSection.getName() + "---------");
+				doc.appendSection(aSection, false);
+				doc.newParagraph("----End of " + aSection.getName() + "---------");
+				doc.newParagraph();
+				doc.newParagraph();
+				doc.newParagraph();
+			}
+			doc.save(ResourceUtilities.newTestOutputFile("NewSections.odt"));
+
+			doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("NewSections.odt"));
+			sections = doc.getSectionIterator();
+			int i = 0;
+			while (sections.hasNext()) {
+				sections.next();
+				i++;
+			}
+			// an embed section is counted two times
+			Assert.assertEquals(count * 2 + 1, i);
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testAppendNewSection() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("Paragraph1");
+			Section section = doc.appendSection("Section1");
+			section.addParagraph("Here's a section.");
+			Assert.assertNotNull(section);
+			Assert.assertEquals(section.getName(), "Section1");
+			Assert.assertEquals(section.getParagraphByIndex(0, true)
+					.getTextContent(), "Here's a section.");
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	private class MyDigestGenerator implements ProtectionKeyDigestProvider {
+
+//		@Override
+		public String generateHashKey(String passwd) {
+
+			String hashKey = null;
+			if (passwd != null && passwd.length() > 0) {
+				MessageDigest md;
+				try {
+					byte[] pwd = passwd.getBytes();
+					md = MessageDigest.getInstance("MD5");
+					byte[] byteCode = md.digest(pwd);
+					BASE64Encoder encoder = new BASE64Encoder();
+					hashKey = encoder.encode(byteCode);
+				} catch (NoSuchAlgorithmException e) {
+					Logger.getLogger(Section.class.getName(),
+							"Fail to initiate the digest method.");
+				}
+			}
+			return hashKey;
+
+		}
+
+//		@Override
+		public String getProtectionKeyDigestAlgorithm() {
+			return "http://www.w3.org/2000/09/#md5";
+		}
+
+	}
+
+	@Test
+	public void testSetProtectionKeyDigestProvider() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Section section = doc.appendSection("Section1");
+			section.addParagraph("Section 1");
+			Assert.assertNotNull(section);
+
+			section.setProtectionKeyDigestProvider(new MyDigestGenerator());
+			section.setProtectedWithPassword("12345");
+			Assert.assertEquals(true, section.isProtected());
+			Assert.assertEquals("gnzLDuqKcGxMNKFokfhOew==", section
+					.getProtectedPassword());
+			Assert.assertEquals("http://www.w3.org/2000/09/#md5", section
+					.getProtectionKeyDigestAlgorithm());
+
+			section.setProtectionKeyDigestProvider(null);
+			section.setProtectedWithPassword("12345");
+			Assert.assertEquals(true, section.isProtected());
+			Assert.assertEquals("LyQWujvPXbGDYsrSDKkAiVFavg8=", section
+					.getProtectedPassword());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testSetProtectSection() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("Paragraph1");
+			String secName = "Section1";
+			Section section = doc.appendSection(secName);
+			Assert.assertNotNull(section);
+
+			section.setProtectedWithPassword("12345");
+			Assert.assertEquals(true, section.isProtected());
+			Assert.assertEquals("LyQWujvPXbGDYsrSDKkAiVFavg8=", section
+					.getProtectedPassword());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+
+			section.setProtectedWithPassword("");
+			Assert.assertEquals(true, section.isProtected());
+			Assert.assertNull(section.getProtectedPassword());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+
+			section.setProtected(false);
+			Assert.assertEquals(false, section.isProtected());
+			Assert.assertNull(section.getProtectedPassword());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+
+			section.setProtectedWithPassword(null);
+			Assert.assertEquals(false, section.isProtected());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+			Assert.assertNull(section.getProtectedPassword());
+
+			section.setProtected(true);
+			Assert.assertEquals(true, section.isProtected());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+			Assert.assertNull(section.getProtectedPassword());
+
+			section.setProtectedWithPassword("12345");
+			Assert.assertEquals(true, section.isProtected());
+			Assert.assertEquals("LyQWujvPXbGDYsrSDKkAiVFavg8=", section
+					.getProtectedPassword());
+			Assert.assertEquals("http://www.w3.org/2000/09/xmldsig#sha1",
+					section.getProtectionKeyDigestAlgorithm());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testRemoveSection() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("Section11");
+			Assert.assertNull(theSec);
+			Iterator<Section> sections = doc.getSectionIterator();
+			int count = 0;
+			while (sections.hasNext()) {
+				sections.next();
+				count++;
+			}
+
+			theSec = doc.getSectionByName("Section1");
+			theSec.remove();
+			sections = doc.getSectionIterator();
+			int i = 0;
+			while (sections.hasNext()) {
+				sections.next();
+				i++;
+			}
+			Assert.assertEquals(count - 1, i);
+
+			theSec = doc.getSectionByName("ImageSection");
+			theSec.remove();
+			OdfPackage packageDocument = doc.getPackage();
+			String imagePathPrefix = "Pictures/";
+			count = 0;
+			Iterator<String> filePaths = packageDocument.getFilePaths().iterator();
+			while (filePaths.hasNext()) {
+				String path = filePaths.next();
+				if (path.startsWith(imagePathPrefix) && path.length() > imagePathPrefix.length())
+					count++;
+				if (count > 1)
+					break;
+			}
+			Assert.assertEquals(0, count);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testSetGetName() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("ImageSection");
+			theSec.setName("ImageSection_NewName");
+			doc.save(ResourceUtilities.newTestOutputFile("NewSection.odt"));
+
+			TextDocument newDoc = TextDocument
+					.loadDocument(ResourceUtilities.getTestResourceAsStream("NewSection.odt"));
+			theSec = newDoc.getSectionByName("ImageSection");
+			Assert.assertNull(theSec);
+			theSec = newDoc.getSectionByName("ImageSection_NewName");
+			Assert.assertNotNull(theSec);
+			Assert.assertEquals("ImageSection_NewName", theSec.getName());
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	@Test
+	public void testAddParagraph() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("ImageSection");
+			
+			Paragraph para = theSec.addParagraph("paragraph");
+			String paracontent = para.getTextContent();
+			Assert.assertEquals("paragraph", paracontent);
+			
+			OdfElement odfEle = theSec.getParagraphContainerElement();
+			Assert.assertEquals("paragraph", odfEle.getLastChild().getTextContent());
+			
+			boolean flag = theSec.removeParagraph(para);
+			if(flag){
+				OdfElement odfEle1 = theSec.getParagraphContainerElement();
+				Assert.assertTrue(odfEle1.getLastChild().getTextContent() != "paragraph");
+			}
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetParagraphIterator() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("ImageSection");
+			
+			Paragraph para = theSec.addParagraph("paragraph");
+			String paracontent = para.getTextContent();
+			Assert.assertEquals("paragraph", paracontent);
+			
+			boolean flag = false;
+			Iterator<Paragraph> iter = theSec.getParagraphIterator();
+			while(iter.hasNext()){
+				Paragraph parai = iter.next();
+				if("paragraph".equals(parai.getTextContent()))
+						flag = true;
+			}
+			
+			Assert.assertTrue(flag);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetParagraphByIndex() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("ImageSection");
+			
+			Paragraph para = theSec.addParagraph("paragraph");
+			String paracontent = para.getTextContent();
+			Assert.assertEquals("paragraph", paracontent);
+			
+			Paragraph para1 = theSec.getParagraphByIndex(2, true);
+			Assert.assertEquals("paragraph", para1.getTextContent());
+			
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+	
+	
+	@Test
+	public void testGetParagraphByReverseIndex() {
+		try {
+			TextDocument doc = TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream("Sections.odt"));
+			Section theSec = doc.getSectionByName("ImageSection");
+			Section theSec2 = doc.getSectionByName("ImageSection");
+			
+			Paragraph para = theSec.addParagraph("paragraph");
+			String paracontent = para.getTextContent();
+			Assert.assertEquals("paragraph", paracontent);
+			
+			Paragraph para1 = theSec.getParagraphByReverseIndex(0, true);
+			Assert.assertEquals("paragraph", para1.getTextContent());
+			
+			Paragraph para2 = theSec.getParagraphByIndex(2, true);
+			Assert.assertEquals("paragraph", para2.getTextContent());
+			
+			boolean flag = theSec.equals(para);
+			Assert.assertTrue(!flag);
+			flag = theSec.equals(theSec2);
+			Assert.assertTrue(flag);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testAddTable() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Section theSec = doc.appendSection("TableSection");
+
+			Table table1 = theSec.addTable();
+			table1.getCellByPosition("A1").addParagraph("A1");
+			OdfElement odfEle = theSec.getTableContainerElement();
+			Assert.assertEquals("A1", Table.getInstance(
+					(TableTableElement) odfEle.getLastChild())
+					.getCellByPosition("A1").getDisplayText());
+
+			Table table2 = theSec.addTable(3, 3);
+			table2.getCellByPosition("C3").addParagraph("C3");
+			odfEle = theSec.getTableContainerElement();
+			Assert.assertEquals("C3", Table.getInstance(
+					(TableTableElement) odfEle.getLastChild())
+					.getCellByPosition("C3").getDisplayText());
+
+			table1.remove();
+			table2.remove();
+			OdfElement odfEle1 = theSec.getTableContainerElement();
+			Assert.assertNull(odfEle1.getLastChild());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testGetTableByName() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Section sect = doc.appendSection("TableSeciton");
+			sect.addTable(2, 2);
+			sect.addTable(2, 2);
+			sect.addTable(5, 5).getCellByPosition("E5").setBooleanValue(true);
+			Cell cell = sect.getTableByName("Table3").getCellByPosition(4, 4);
+			Assert.assertNotNull(cell);
+			Assert.assertTrue(cell.getBooleanValue());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testAddRemoveList() {
+
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			Section sect = doc.appendSection("List Section");
+
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+			ListDecorator outLineDecorator = new OutLineDecorator(doc);
+			String[] subItemContents = { "sub list item 1", "sub list item 2",
+					"sub list item 3" };
+
+			List list1 = new List(sect);
+			boolean removeResult = sect.removeList(list1);
+			Assert.assertTrue(removeResult);
+
+			List list2 = new List(sect, numberDecorator);
+			list2.addItems(subItemContents);
+			Assert.assertEquals(ListDecorator.ListType.NUMBER, list2.getType());
+			removeResult = sect.removeList(list2);
+			Assert.assertTrue(removeResult);
+
+			List list3 = new List(sect, "Bullet List", null);
+			list3.addItems(subItemContents);
+			Assert.assertEquals(ListDecorator.ListType.BULLET, list3.getType());
+			removeResult = sect.removeList(list3);
+			Assert.assertTrue(removeResult);
+
+			List list4 = sect.addList();
+			removeResult = sect.removeList(list4);
+			Assert.assertTrue(removeResult);
+
+			List list5 = sect.addList(outLineDecorator);
+			list5.addItems(subItemContents);
+			Assert.assertEquals(ListDecorator.ListType.NUMBER, list5.getType());
+			removeResult = sect.removeList(list5);
+			Assert.assertTrue(removeResult);
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null,
+					e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testIterateList() {
+		try {
+
+			TextDocument doc = TextDocument.newTextDocument();
+			Section sect = doc.appendSection("List Section");
+
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+			ListDecorator outLineDecorator = new OutLineDecorator(doc);
+			String[] subItemContents = { "sub list item 1", "sub list item 2",
+					"sub list item 3" };
+
+			// create 2 lists
+			new List(sect, numberDecorator);
+			sect.addList().addItems(subItemContents);
+
+			Iterator<List> listIterator = sect.getListIterator();
+			int i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(2, i);
+
+			// add 2 new lists.
+			sect.addList(outLineDecorator);
+			List list = sect.addList();
+			listIterator = sect.getListIterator();
+			i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(4, i);
+
+			// remove 1 list.
+			sect.removeList(list);
+			listIterator = sect.getListIterator();
+			i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(3, i);
+
+			// remove all of the lists.
+			sect.clearList();
+			listIterator = sect.getListIterator();
+			i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(0, i);
+
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null,
+					e);
+			Assert.fail(e.getMessage());
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/SpanTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/SpanTest.java
new file mode 100644
index 0000000..5e7c3fa
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/SpanTest.java
@@ -0,0 +1,154 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text;
+
+import java.net.URI;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.type.Color;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.common.navigation.TextNavigation;
+import org.odftoolkit.simple.common.navigation.TextSelection;
+import org.odftoolkit.simple.style.DefaultStyleHandler;
+import org.odftoolkit.simple.style.Font;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.FontStyle;
+import org.odftoolkit.simple.style.StyleTypeDefinitions.TextLinePosition;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class SpanTest {
+
+	@Test
+	public void testSpan() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("This is a test paragraph!");
+			TextNavigation navigation = new TextNavigation("test", doc);
+			TextSelection sel = (TextSelection) navigation.nextSelection();
+			Span span = Span.newSpan(sel);
+			TextHyperlink link = span.applyHyperlink(new URI("http://www.ibm.com"));
+			DefaultStyleHandler handler = span.getStyleHandler();
+			Font font1Base = new Font("Arial", FontStyle.ITALIC, 10, Color.BLACK, TextLinePosition.THROUGH);
+			handler.getTextPropertiesForWrite().setFont(font1Base);
+			doc.save(ResourceUtilities.newTestOutputFile("spantest.odt"));
+
+			String content = span.getTextContent();
+			Assert.assertEquals("test", content);
+			span.setTextContent("new test");
+			Assert.assertEquals("new test", span.getTextContent());
+			doc.save(ResourceUtilities.newTestOutputFile("spantest.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(SpanTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	@Test
+	public void testRemoveTextContent() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			
+			Iterator<Paragraph> paraA = doc.getParagraphIterator();
+			while(paraA.hasNext()){
+				Paragraph pp = paraA.next();
+				doc.removeParagraph(pp);
+			}
+			
+			doc.addParagraph("This is a test paragraph!");
+			
+			TextNavigation navigation = new TextNavigation("test", doc);
+			TextSelection sel = (TextSelection) navigation.nextSelection();
+			Span span = Span.newSpan(sel);
+			
+			span.removeTextContent();
+			boolean flag = false;
+			Iterator<Paragraph> parai = doc.getParagraphIterator();
+			while(parai.hasNext()){
+				Paragraph pp = parai.next();
+				if("This is a  paragraph!".equals(pp.getTextContent()))
+					flag = true;
+			}
+			Assert.assertTrue(flag);
+
+			//save
+			doc.save(ResourceUtilities.newTestOutputFile("spantest.odt"));
+
+		} catch (Exception e) {
+			Logger.getLogger(SpanTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	@Test
+	public void testAppendTextContent() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("This is a test paragraph!");
+			
+			TextNavigation navigation = new TextNavigation("test", doc);
+			TextSelection sel = (TextSelection) navigation.nextSelection();
+			Span span = Span.newSpan(sel);
+			
+			span.appendTextContent("hello world.");
+			Assert.assertEquals("testhello world.", span.getTextContent());
+
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("spantest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(SpanTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+	
+	@Test
+	public void testAppendTextContentPara() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			doc.addParagraph("This is a test paragraph!");
+			
+			TextNavigation navigation = new TextNavigation("test", doc);
+			TextSelection sel = (TextSelection) navigation.nextSelection();
+			Span span = Span.newSpan(sel);
+			
+			span.appendTextContent("hello world.", true);
+			Assert.assertEquals("testhello world.", span.getTextContent());
+			
+			span.appendTextContent("hello world.", false);
+			Assert.assertEquals("testhello world.hello world.", span.getTextContent());
+
+			//save
+			//doc.save(ResourceUtilities.newTestOutputFile("spantest.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(SpanTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+	
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/TableOfContentTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/TableOfContentTest.java
new file mode 100644
index 0000000..60b85c2
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/TableOfContentTest.java
@@ -0,0 +1,210 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+ */
+
+package org.odftoolkit.simple.text;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.odfdom.dom.element.text.TextHElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTableOfContentElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkElement;
+import org.odftoolkit.odfdom.dom.element.text.TextTocMarkStartElement;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.style.TOCStyle;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+import org.w3c.dom.Node;
+
+public class TableOfContentTest {
+	private static final Logger LOG = Logger.getLogger(TableOfContentTest.class
+			.getName());
+
+	@Test
+	public void testCreateDefaultTOC() {
+		try {
+			TextDocument doc = buildSample();
+			Assert.assertNotNull(doc);
+			
+			Paragraph paragraph1 = doc.getParagraphByIndex(0, true);
+			TextTableOfContentElement textTableOfContentElement = doc.createDefaultTOC(paragraph1,false);
+			Assert.assertNotNull(textTableOfContentElement);	
+			
+			Node pnode = paragraph1.getOdfElement().getNextSibling();
+			
+			if (pnode.equals(textTableOfContentElement)) {
+				Assert.assertTrue(true);
+			} else {
+				Assert.fail();
+			}
+			
+			
+			try {
+				// Should throw error!
+				doc.createDefaultTOC(null, true);
+				Assert.fail();
+			} catch (Exception e) {
+//				LOG.log(Level.SEVERE, null, e);
+				Assert.assertTrue(true);
+			}
+			doc.save(ResourceUtilities.newTestOutputFile("DefaultTOC.odt"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+	}
+
+	@Test
+	public void testCreateStyleTOC() {
+		try {
+			TextDocument doc = buildSample();
+			Assert.assertNotNull(doc);
+
+			TOCStyle tocstyle = new TOCStyle();
+			tocstyle.addStyle("User_20_Index_20_1", 1);
+			tocstyle.addStyle("User_20_Index_20_2", 2);
+			tocstyle.addStyle("User_20_Index_20_3", 3);
+			tocstyle.addStyle("User_20_Index_20_4", 4);
+			tocstyle.addStyle("User_20_Index_20_5", 5);
+			tocstyle.addStyle("User_20_Index_20_6", 6);
+			tocstyle.addStyle("User_20_Index_20_7", 7);
+			tocstyle.addStyle("User_20_Index_20_8", 8);
+			tocstyle.addStyle("User_20_Index_20_9", 9);
+			tocstyle.addStyle("User_20_Index_20_10", 10);
+			LOG.info(tocstyle.toString());
+
+			Paragraph paragraph1 = doc.getParagraphByIndex(0, true);
+			TextTableOfContentElement textTableOfContentElement = doc
+					.createTOCwithStyle(paragraph1, tocstyle, true);
+			Assert.assertNotNull(textTableOfContentElement);
+			Node pnode = textTableOfContentElement.getNextSibling();
+			if (pnode.equals(paragraph1.getOdfElement())) {
+				Assert.assertTrue(true);
+			} else {
+				Assert.fail();
+			}
+			try {
+				// Should throw error!
+				doc.createTOCwithStyle(null, tocstyle, true);
+				Assert.fail();
+			} catch (Exception e) {
+//				LOG.log(Level.SEVERE, null, e);
+				Assert.assertTrue(true);
+			}
+			doc.save(ResourceUtilities.newTestOutputFile("TOC_Styles.odt"));
+		} catch (Exception e) {
+			LOG.log(Level.SEVERE, null, e);
+			Assert.fail();
+		}
+
+	}
+
+	private TextDocument buildSample() throws Exception {
+		TextDocument doc = TextDocument.newTextDocument();
+		Paragraph p1 = doc
+				.addParagraph("1.This is a test paragraph apply with Heading 1 style!");
+		p1.applyHeading();
+		Paragraph p11 = doc
+				.addParagraph("1.1This is a test paragraph apply with heading 2 style!");
+		p11.applyHeading(true, 2);
+		Paragraph p2 = doc
+				.addParagraph("2.This is a test paragraph apply with Heading 1 style!");
+		p2.applyHeading();
+		Paragraph p21 = doc
+				.addParagraph("2.1This is a test paragraph apply with Heading 2 style!");
+		p21.applyHeading(true, 2);
+		Paragraph p22 = doc
+				.addParagraph("2.2This is a test paragraph apply with Heading 2 style!");
+		p22.applyHeading(true, 2);
+		Paragraph p221 = doc
+				.addParagraph("2.2.1This is a test paragraph apply with Heading 3 style!");
+		p221.applyHeading(true, 3);
+		Paragraph p222 = doc
+				.addParagraph("2.2.2This is a test paragraph apply with Heading 3 style!");
+		p222.applyHeading(true, 3);
+		Paragraph p23 = doc
+				.addParagraph("2.3This is a test paragraph apply with Heading 2 style!");
+		p23.applyHeading(true, 2);
+		Paragraph p3 = doc
+				.addParagraph("3.This is a test paragraph apply with ");
+		p3.applyHeading();
+		TextHElement h3 = (TextHElement) p3.getOdfElement();
+		TextTocMarkElement TextTocMark = h3
+				.newTextTocMarkElement("TextTocMarkElement");
+		TextTocMark.setTextOutlineLevelAttribute(2);
+		h3.newTextNode("Heading ");
+		TextTocMarkStartElement TextTocMarkStart = h3
+				.newTextTocMarkStartElement("IMark159230668");
+		TextTocMarkStart.setTextOutlineLevelAttribute(3);
+		h3.newTextNode("1 style!");
+		h3.newTextTocMarkEndElement("IMark159230668");
+
+		Paragraph p4 = doc
+				.addParagraph("4.This is a test paragraph apply with User Index 1 style!");
+		p4.getOdfElement().setStyleName("User_20_Index_20_1");
+
+		Paragraph p5 = doc
+				.addParagraph("5.This is a test paragraph apply with User Index 1 style!");
+		p5.getOdfElement().setStyleName("User_20_Index_20_1");
+
+		Paragraph p51 = doc
+				.addParagraph("5.1 This is a test paragraph apply with User Index 2 style!");
+		p51.getOdfElement().setStyleName("User_20_Index_20_2");
+
+		Paragraph p52 = doc
+				.addParagraph("5.2 This is a test paragraph apply with User Index 2 style!");
+		p52.getOdfElement().setStyleName("User_20_Index_20_2");
+
+		Paragraph p6 = doc
+				.addParagraph("6.This is a test paragraph apply with User Index 1 style!");
+		p6.getOdfElement().setStyleName("User_20_Index_20_1");
+
+		Paragraph p62 = doc
+				.addParagraph("6.1This is a test paragraph apply with User Index 2 style!");
+		p62.getOdfElement().setStyleName("User_20_Index_20_2");
+		Paragraph p63 = doc
+				.addParagraph("6.1.1This is a test paragraph apply with User Index 3 style!");
+		p63.getOdfElement().setStyleName("User_20_Index_20_3");
+		Paragraph p64 = doc
+				.addParagraph("6.1.1.1This is a test paragraph apply with User Index 4 style!");
+		p64.getOdfElement().setStyleName("User_20_Index_20_4");
+		Paragraph p65 = doc
+				.addParagraph("6.1.1.1.1This is a test paragraph apply with User Index 5 style!");
+		p65.getOdfElement().setStyleName("User_20_Index_20_5");
+		Paragraph p66 = doc
+				.addParagraph("6.1.1.1.1.1This is a test paragraph apply with User Index 6 style!");
+		p66.getOdfElement().setStyleName("User_20_Index_20_6");
+		Paragraph p67 = doc
+				.addParagraph("6.1.1.1.1.1.1.1This is a test paragraph apply with User Index 7 style!");
+		p67.getOdfElement().setStyleName("User_20_Index_20_7");
+		Paragraph p68 = doc
+				.addParagraph("6.1.1.1.1.1.1.1.1This is a test paragraph apply with User Index 8 style!");
+		p68.getOdfElement().setStyleName("User_20_Index_20_8");
+		Paragraph p69 = doc
+				.addParagraph("6.1.1.1.1.1.1.1.1.1This is a test paragraph apply with User Index 9 style!");
+		p69.getOdfElement().setStyleName("User_20_Index_20_9");
+		Paragraph p60 = doc
+				.addParagraph("6.1.1.1.1.1.1.1.1.1.1This is a test paragraph apply with User Index 10 style!");
+		p60.getOdfElement().setStyleName("User_20_Index_20_10");
+		return doc;
+	}
+
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/list/ListItemTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/list/ListItemTest.java
new file mode 100644
index 0000000..4094ed4
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/list/ListItemTest.java
@@ -0,0 +1,220 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class ListItemTest {
+
+	private final static String SAMPLE_LIST_DOCUMENT = "testList.odt";
+    private static final String SAMPLE_LIST_DOCUMENT_2 = "testList2.odt";
+	private String[] subItemContents = { "sub list item 1", "sub list item 2", "sub list item 3" };
+
+	@Test
+	public void testGetSetTextContent() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			if (listIterator.hasNext()) {
+				List list = listIterator.next();
+				ListItem item = list.getItem(0);
+				String itemText = item.getTextContent();
+				Assert.assertEquals("bullet item1", itemText);
+				String content = "new content";
+				item.setTextContent(content);
+				Assert.assertEquals(content, item.getTextContent());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetStartNumber() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			if (listIterator.hasNext()) {
+				List list = listIterator.next();
+				list = listIterator.next();
+				ListItem item = list.getItem(0);
+				Integer startNumber = item.getStartNumber();
+				Assert.assertNull(startNumber);
+				item.setStartNumber(4);
+				startNumber = item.getStartNumber();
+				Assert.assertEquals(4, startNumber.intValue());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetNumberFormat() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			if (listIterator.hasNext()) {
+				List list = listIterator.next();
+				list = listIterator.next();
+				ListItem item = list.getItem(0);
+				String numberFormat = item.getNumberFormat();
+				Assert.assertNull(numberFormat);
+				item.setNumberFormat("Mon");
+				numberFormat = item.getNumberFormat();
+				Assert.assertEquals("Mon", numberFormat);
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetOwnerList() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			if (listIterator.hasNext()) {
+				List list = listIterator.next();
+				ListItem item = list.getItem(0);
+				List ownerList = item.getOwnerList();
+				Assert.assertEquals(list.getOdfElement(), ownerList.getOdfElement());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetIndex() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			if (listIterator.hasNext()) {
+				List list = listIterator.next();
+				java.util.List<ListItem> items = list.getItems();
+				int i = 0;
+				for (ListItem item : items) {
+					Assert.assertEquals(i, item.getIndex());
+					i++;
+				}
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testAddRemoveIterateSubList() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			ListDecorator bulletDecorator = new BulletDecorator(odtdoc);
+			ListDecorator numberDecorator = new NumberDecorator(odtdoc);
+			ListDecorator imageDecorator = new ImageDecorator(odtdoc, ResourceUtilities.getURI("image_list_item.png"));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+
+			if (listIterator.hasNext()) {
+				List list = listIterator.next();
+				// add list.
+				ListContainer container = list.getItem(0);
+				org.odftoolkit.simple.text.list.List bulletList = container.addList(bulletDecorator);
+				bulletList.addItems(subItemContents);
+				org.odftoolkit.simple.text.list.List numberList = container.addList(numberDecorator);
+				numberList.addItems(subItemContents);
+				org.odftoolkit.simple.text.list.List imageList = container.addList(imageDecorator);
+				imageList.addItems(subItemContents);
+				// iterate list
+				Iterator<org.odftoolkit.simple.text.list.List> lists = container.getListIterator();
+				int i = 0;
+				while (lists.hasNext()) {
+					lists.next();
+					i++;
+				}
+				Assert.assertEquals(3, i);
+				// remove list
+				container.clearList();
+				Assert.assertFalse(container.getListIterator().hasNext());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+    
+    @Test
+    public void testListIterator()  {
+        try {
+            // load test list container, which contains 2 lists.
+			TextDocument odtdoc = TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT_2));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+            
+            final List bodyList = listIterator.next();
+            Assert.assertEquals("body list should have 2 items", 2, bodyList.size());
+            
+            Assert.assertTrue("iterator should have 1 more list (in the Section)", listIterator.hasNext());
+                        
+            final List sectionList = listIterator.next();
+            Assert.assertEquals("section list should have 3 items", 3, sectionList.size());
+            
+            Assert.assertFalse("iterator should have no more lists", listIterator.hasNext());
+        } catch (Exception e) {
+            Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+}
+    }
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/text/list/ListTest.java b/trunk/simple/src/test/java/org/odftoolkit/simple/text/list/ListTest.java
new file mode 100644
index 0000000..d842b14
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/text/list/ListTest.java
@@ -0,0 +1,405 @@
+/* 
+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
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.odftoolkit.simple.text.list;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.odftoolkit.simple.TextDocument;
+import org.odftoolkit.simple.table.Cell;
+import org.odftoolkit.simple.table.Table;
+import org.odftoolkit.simple.text.list.ListDecorator.ListType;
+import org.odftoolkit.simple.utils.ResourceUtilities;
+
+public class ListTest {
+
+	private final static String SAMPLE_LIST_DOCUMENT = "testList.odt";
+	private String[] numberItemContents = { "number item 1", "number item 2", "number item 3" };
+
+	@Test
+	public void testCreateRemoveList() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+
+			List list1 = new List(doc);
+			boolean removeResult = doc.removeList(list1);
+			Assert.assertTrue(removeResult);
+
+			List list2 = new List(doc, numberDecorator);
+			Assert.assertEquals(ListDecorator.ListType.NUMBER, list2.getType());
+			removeResult = doc.removeList(list2);
+			Assert.assertTrue(removeResult);
+
+			List list3 = new List(doc, "List Header1", numberDecorator);
+			Assert.assertEquals(ListDecorator.ListType.NUMBER, list3.getType());
+			removeResult = doc.removeList(list3);
+			Assert.assertTrue(removeResult);
+
+			List list4 = doc.addList();
+			removeResult = doc.removeList(list4);
+			Assert.assertTrue(removeResult);
+
+			List list5 = doc.addList(numberDecorator);
+			Assert.assertEquals(ListDecorator.ListType.NUMBER, list5.getType());
+			removeResult = doc.removeList(list5);
+			Assert.assertTrue(removeResult);
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testIterateList() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			int i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(2, i);
+
+			// add 2 new lists.
+			odtdoc.addList();
+			List list = odtdoc.addList();
+			listIterator = odtdoc.getListIterator();
+			i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(4, i);
+
+			// remove 1 list.
+			odtdoc.removeList(list);
+			listIterator = odtdoc.getListIterator();
+			i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(3, i);
+
+			// remove all of the lists.
+			odtdoc.clearList();
+			listIterator = odtdoc.getListIterator();
+			i = 0;
+			while (listIterator.hasNext()) {
+				listIterator.next();
+				i++;
+			}
+			Assert.assertEquals(0, i);
+
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetHeader() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			List list;
+			if (listIterator.hasNext()) {
+				list = listIterator.next();
+				Assert.assertEquals("Bullet List Header1\nBullet List Header2", list.getHeader());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+
+			if (listIterator.hasNext()) {
+				list = listIterator.next();
+				Assert.assertEquals("Number List Header", list.getHeader());
+				String newHeader = "New Header.";
+				list.setHeader(newHeader);
+				Assert.assertEquals(newHeader, list.getHeader());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetAddReplaceItems() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			List list;
+			if (listIterator.hasNext()) {
+				list = listIterator.next();
+				// get item
+				ListItem item = list.getItem(0);
+				Assert.assertEquals("bullet item1", item.getTextContent());
+				item = list.getItem(2);
+				Assert.assertEquals("item3 with a bullet list", item.getTextContent());
+
+				// test size
+				java.util.List<ListItem> items = list.getItems();
+				int size = list.size();
+				Assert.assertEquals(4, size);
+				Assert.assertEquals(items.size(), size);
+
+				// add item
+				ListItem newItem1 = list.addItem(item);
+				Assert.assertEquals("item3 with a bullet list", newItem1.getTextContent());
+				String itemContent = "new string item";
+				newItem1 = list.addItem(itemContent);
+				Assert.assertEquals(itemContent, newItem1.getTextContent());
+				ListItem newItem2 = list.addItem(4, newItem1);
+				Assert.assertEquals(newItem2.getTextContent(), newItem1.getTextContent());
+				ListItem newItem3 = list.addItem(4, "itemContent");
+				Assert.assertEquals(newItem3.getTextContent(), list.getItem(4).getTextContent());
+
+				// add items
+				ListItem[] itemArray = list.getItems().toArray(new ListItem[] {});
+				list.addItems(itemArray);
+				Assert.assertEquals(itemArray.length * 2, list.size());
+				list.addItems(2, itemArray);
+				Assert.assertEquals(itemArray[0].getTextContent(), list.getItem(2).getTextContent());
+				list.addItems(numberItemContents);
+				Assert.assertEquals(itemArray.length * 3 + numberItemContents.length, list.size());
+				list.addItems(5, numberItemContents);
+				Assert.assertEquals(numberItemContents[1], list.getItem(6).getTextContent());
+
+				// replace item
+				ListItem item0 = list.getItem(0);
+				ListItem item1 = list.getItem(1);
+				Assert.assertTrue(!item0.getTextContent().equals(item1.getTextContent()));
+				list.set(1, item0);
+				item1 = list.getItem(1);
+				Assert.assertEquals(item0.getTextContent(), item1.getTextContent());
+				ListItem item2 = list.getItem(2);
+				Assert.assertTrue(!"replace content".equals(item2.getTextContent()));
+				list.set(2, "replace content");
+				item2 = list.getItem(2);
+				Assert.assertEquals("replace content", item2.getTextContent());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testRemoveItems() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			List list;
+			if (listIterator.hasNext()) {
+				list = listIterator.next();
+				// remove item
+				ListItem item0 = list.getItem(0);
+				ListItem item1 = list.getItem(1);
+				Assert.assertFalse(item0.getOdfElement() == item1.getOdfElement());
+				Assert.assertTrue(list.removeItem(0));
+				item0 = list.getItem(0);
+				Assert.assertTrue(item0.getOdfElement() == item1.getOdfElement());
+
+				item1 = list.getItem(1);
+				Assert.assertFalse(item0.getOdfElement() == item1.getOdfElement());
+				list.removeItem(item0);
+				item0 = list.getItem(0);
+				Assert.assertTrue(item0.getOdfElement() == item1.getOdfElement());
+
+				// remove items
+				java.util.List<ListItem> newItems = new java.util.ArrayList<ListItem>();
+				newItems.add(list.addItem("new item1"));
+				newItems.add(list.addItem("new item2"));
+				list.removeItems(newItems);
+				Assert.assertTrue(item0.getOdfElement() == list.getItem(0).getOdfElement());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+			if (listIterator.hasNext()) {
+				list = listIterator.next();
+				Assert.assertTrue(list.size() > 0);
+				// clear items
+				list.clear();
+				Assert.assertTrue(list.size() == 0);
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetListLevel() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			List list;
+			if (listIterator.hasNext()) {
+				list = listIterator.next();
+				Assert.assertTrue(list.getLevel() == 1);
+
+				// sub list
+				ListItem item2 = list.getItem(2);
+				List subList = item2.getListIterator().next();
+				Assert.assertTrue(subList.getLevel() == 2);
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+			// list in cell
+			Table table = Table.newTable(odtdoc);
+			Cell cell = table.getCellByPosition(0, 0);
+			List cellList = cell.addList();
+			Assert.assertTrue(cellList.getLevel() == 1);
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testGetSetContinueList() {
+		try {
+			// load test list container, which contains 2 lists.
+			TextDocument odtdoc = (TextDocument) TextDocument.loadDocument(ResourceUtilities
+					.getTestResourceAsStream(SAMPLE_LIST_DOCUMENT));
+			Iterator<List> listIterator = odtdoc.getListIterator();
+			List list1 = null, list2 = null, list3 = null;
+			if (listIterator.hasNext()) {
+				list1 = listIterator.next();
+				list1.setContinueNumbering(true);
+				// bullet list can't be continue numbering. should return false.
+				Assert.assertFalse(list1.isContinueNumbering());
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+			if (listIterator.hasNext()) {
+				list2 = listIterator.next();
+			} else {
+				Assert.fail("list iterate fail.");
+			}
+			list2.setContinueNumbering(true);
+			Assert.assertTrue(list2.isContinueNumbering());
+			list3 = odtdoc.addList(new NumberDecorator(odtdoc));
+			list3.setContinueList(list1);
+			Assert.assertTrue(list3.isContinueNumbering());
+			Assert.assertTrue(list3.getContinueList().getOdfElement() == list1.getOdfElement());
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	@Test
+	public void testSetListDecorator() {
+		try {
+			TextDocument doc = TextDocument.newTextDocument();
+
+			ListDecorator bulletDecorator = new BulletDecorator(doc);
+			ListDecorator numberDecorator = new NumberDecorator(doc);
+			ListDecorator imageDecorator = new ImageDecorator(doc, ResourceUtilities.getURI("image_list_item.png"));
+			ListDecorator outLineDecorator = new OutLineDecorator(doc);
+			String[] subItemContents = { "sub list item 1", "sub list item 2", "sub list item 3" };
+
+			doc.newParagraph(" ");
+			doc.newParagraph("Bullet List:");
+			List bulletList = doc.addList(bulletDecorator);
+			bulletList.setHeader("Bullet List Header1\nBullet List Header2");
+			bulletList.addItem("bullet item1");
+			bulletList.addItem("bullet item2");
+			ListItem item = bulletList.addItem("item3 with a bullet list");
+			List subList = item.addList();
+			subList.addItems(subItemContents);
+			bulletList.addItem("bullet item4");
+			Assert.assertEquals(ListType.BULLET, bulletList.getType());
+
+			doc.newParagraph(" ");
+			doc.newParagraph("Number List:");
+			List numberList = doc.addList(numberDecorator);
+			numberList.setHeader("Number List Header");
+			numberList.addItem("number item1");
+			item = numberList.addItem("number item2");
+			subList = item.addList(numberDecorator);
+			subList.addItems(subItemContents);
+			numberList.addItem("number item3");
+			Assert.assertEquals(ListType.NUMBER, numberList.getType());
+			numberList.setDecorator(bulletDecorator);
+			Assert.assertEquals(ListType.BULLET, numberList.getType());
+
+			doc.newParagraph(" ");
+			doc.newParagraph("Image List:");
+			List imageList = doc.addList(imageDecorator);
+			item = imageList.addItem("image item1");
+			subList = item.addList(imageDecorator);
+			subList.addItems(subItemContents);
+			imageList.addItem("image item2");
+			imageList.addItem("image item3");
+			Assert.assertEquals(ListType.IMAGE, imageList.getType());
+			imageList.setDecorator(numberDecorator);
+			Assert.assertEquals(ListType.NUMBER, imageList.getType());
+
+			doc.newParagraph(" ");
+			doc.newParagraph("Outline List:");
+			List outLineList = doc.addList(outLineDecorator);
+			addOutLineItem(outLineList, "", 10, outLineDecorator);
+			Assert.assertEquals(ListType.NUMBER, outLineList.getType());
+			outLineList.setDecorator(imageDecorator);
+			Assert.assertEquals(ListType.IMAGE, outLineList.getType());
+			doc.save(ResourceUtilities.getTestOutput("ListOutput.odt"));
+		} catch (Exception e) {
+			Logger.getLogger(ListTest.class.getName()).log(Level.SEVERE, null, e);
+			Assert.fail(e.getMessage());
+		}
+	}
+
+	private void addOutLineItem(List list, String itemPrefix, int listlevel, ListDecorator decorator) {
+		if (listlevel == 0) {
+			return;
+		} else {
+			for (int i = 0; i < listlevel; i++) {
+				String itemPrefix2 = itemPrefix + (i + 1) + ".";
+				ListItem item = list.addItem("list item " + itemPrefix2);
+				List newList = item.addList(decorator);
+				addOutLineItem(newList, itemPrefix2, i, decorator);
+			}
+		}
+	}
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/utils/NodeAction.java b/trunk/simple/src/test/java/org/odftoolkit/simple/utils/NodeAction.java
new file mode 100644
index 0000000..f54bbaf
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/utils/NodeAction.java
@@ -0,0 +1,38 @@
+/************************************************************************
+ *
+ * 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.simple.utils;
+
+import org.w3c.dom.Node;
+
+public abstract class NodeAction<T> {
+    protected abstract void apply(Node node, T arg, int depth) throws Exception;
+    private int depth = 0;
+    public void performAction(Node node, T arg) throws Exception {
+        while (node != null) {
+            apply(node, arg, depth);
+            depth++;
+            performAction(node.getFirstChild(), arg);
+            depth--;
+            node = node.getNextSibling();
+        }
+    }
+}
diff --git a/trunk/simple/src/test/java/org/odftoolkit/simple/utils/ResourceUtilities.java b/trunk/simple/src/test/java/org/odftoolkit/simple/utils/ResourceUtilities.java
new file mode 100644
index 0000000..56a8ea1
--- /dev/null
+++ b/trunk/simple/src/test/java/org/odftoolkit/simple/utils/ResourceUtilities.java
@@ -0,0 +1,141 @@
+/************************************************************************

+ *

+ * 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.simple.utils;

+

+import java.io.File;

+import java.io.FileNotFoundException;

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.URI;

+import java.net.URISyntaxException;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+import org.odftoolkit.odfdom.pkg.rdfa.Util;

+

+/** Test utility class providing resources for the test in- and output */

+public final class ResourceUtilities {

+	private ResourceUtilities() {

+	}

+

+	/**

+	 * The relative path of the test file will be resolved and the absolute will

+	 * be returned

+	 * 

+	 * @param relativeFilePath

+	 *            Path of the test resource relative to

+	 *            <code>src/test/resource/</code>.

+	 * @return the absolute path of the test file

+	 * @throws FileNotFoundException

+	 *             If the file could not be found

+	 */

+	public static String getAbsolutePath(String relativeFilePath) throws FileNotFoundException {

+		URI uri = null;

+		try {

+			uri = ResourceUtilities.class.getClassLoader().getResource(relativeFilePath).toURI();

+			uri = new URI(Util.toExternalForm(uri));

+		} catch (URISyntaxException ex) {

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

+		}

+		if (uri == null) {

+			throw new FileNotFoundException("Could not find the file '" + relativeFilePath + "'!");

+		}

+		return uri.getPath();

+	}

+

+	/**

+	 * The relative path of the test file will be resolved and the absolute will

+	 * be returned

+	 * 

+	 * @param relativeFilePath

+	 *            Path of the test resource relative to

+	 *            <code>src/test/resource/</code>.

+	 * @return the URI created based on the relativeFilePath

+	 * @throws URISyntaxException

+	 *             if no URI could be created from the given relative path

+	 */

+	public static URI getURI(String relativeFilePath) throws URISyntaxException {

+		String filePath = "file:" + ResourceUtilities.class.getClassLoader().getResource(relativeFilePath).getPath();

+		filePath = Util.toExternalForm(new URI(filePath));

+		return new URI(filePath);

+	}

+

+	/**

+	 * The relative path of the test file will be used to determine an absolute

+	 * path to a temporary directory in the output directory.

+	 * 

+	 * @param relativeFilePath

+	 *            Path of the test resource relative to

+	 *            <code>src/test/resource/</code>.

+	 * @return absolute path to a test output

+	 * @throws IOException

+	 *             if no absolute Path could be created.

+	 */

+	public static String getTestOutput(String relativeFilePath) throws IOException {

+		return File.createTempFile(relativeFilePath, null).getAbsolutePath();

+	}

+

+	/**

+	 * The Input of the test file will be resolved and the absolute will be

+	 * returned

+	 * 

+	 * @param relativeFilePath

+	 *            Path of the test resource relative to

+	 *            <code>src/test/resource/</code>.

+	 * @return the absolute path of the test file

+	 */

+	public static InputStream getTestResourceAsStream(String relativeFilePath) {

+		return ResourceUtilities.class.getClassLoader().getResourceAsStream(relativeFilePath);

+	}

+

+	/**

+	 * Relative to the test output directory a test file will be returned

+	 * dependent on the relativeFilePath provided.

+	 * 

+	 * @param relativeFilePath

+	 *            Path of the test output resource relative to

+	 *            <code>target/test-classes/</code>.

+	 * @return the empty <code>File</code> of the test output (to be filled)

+	 */

+	public static File newTestOutputFile(String relativeFilePath) {

+		String filepath = null;

+		try {

+			filepath = ResourceUtilities.class.getClassLoader().getResource("").toURI().getPath() + relativeFilePath;

+		} catch (URISyntaxException ex) {

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

+		}

+		return new File(filepath);

+	}

+

+	/**

+	 * @return the absolute path of the test output folder, which is usually

+	 *         <code>target/test-classes/</code>.

+	 */

+	public static String getTestOutputFolder() {

+		String testFolder = null;

+		try {

+			testFolder = ResourceUtilities.class.getClassLoader().getResource("").toURI().getPath();

+		} catch (URISyntaxException ex) {

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

+		}

+		return testFolder;

+	}

+}

diff --git a/trunk/simple/src/test/resources/Bell.odt b/trunk/simple/src/test/resources/Bell.odt
new file mode 100644
index 0000000..d97561c
--- /dev/null
+++ b/trunk/simple/src/test/resources/Bell.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/CellStyleHandlerTest.odp b/trunk/simple/src/test/resources/CellStyleHandlerTest.odp
new file mode 100644
index 0000000..7dd9d9c
--- /dev/null
+++ b/trunk/simple/src/test/resources/CellStyleHandlerTest.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/ChartTest.ods b/trunk/simple/src/test/resources/ChartTest.ods
new file mode 100644
index 0000000..86642b8
--- /dev/null
+++ b/trunk/simple/src/test/resources/ChartTest.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/CommentBreakHeadingDocument.odt b/trunk/simple/src/test/resources/CommentBreakHeadingDocument.odt
new file mode 100644
index 0000000..f01ec06
--- /dev/null
+++ b/trunk/simple/src/test/resources/CommentBreakHeadingDocument.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/CorruptedMimetypeChart.odc b/trunk/simple/src/test/resources/CorruptedMimetypeChart.odc
new file mode 100644
index 0000000..f243b88
--- /dev/null
+++ b/trunk/simple/src/test/resources/CorruptedMimetypeChart.odc
Binary files differ
diff --git a/trunk/simple/src/test/resources/CorruptedMimetypeDoc.odt b/trunk/simple/src/test/resources/CorruptedMimetypeDoc.odt
new file mode 100644
index 0000000..8b9a946
--- /dev/null
+++ b/trunk/simple/src/test/resources/CorruptedMimetypeDoc.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/InvalidUnderlineAttribute.odt b/trunk/simple/src/test/resources/InvalidUnderlineAttribute.odt
new file mode 100644
index 0000000..78840ae
--- /dev/null
+++ b/trunk/simple/src/test/resources/InvalidUnderlineAttribute.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/NavigationInOdfElementTest.odp b/trunk/simple/src/test/resources/NavigationInOdfElementTest.odp
new file mode 100644
index 0000000..481f190
--- /dev/null
+++ b/trunk/simple/src/test/resources/NavigationInOdfElementTest.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/Presentation1.odp b/trunk/simple/src/test/resources/Presentation1.odp
new file mode 100644
index 0000000..6448f37
--- /dev/null
+++ b/trunk/simple/src/test/resources/Presentation1.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/Presentation2.odp b/trunk/simple/src/test/resources/Presentation2.odp
new file mode 100644
index 0000000..57a435c
--- /dev/null
+++ b/trunk/simple/src/test/resources/Presentation2.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/PresentationTableTest.odp b/trunk/simple/src/test/resources/PresentationTableTest.odp
new file mode 100644
index 0000000..fb3a9a3
--- /dev/null
+++ b/trunk/simple/src/test/resources/PresentationTableTest.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/SampleBox.odt b/trunk/simple/src/test/resources/SampleBox.odt
new file mode 100644
index 0000000..b013fcb
--- /dev/null
+++ b/trunk/simple/src/test/resources/SampleBox.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/SectionHelp.odt b/trunk/simple/src/test/resources/SectionHelp.odt
new file mode 100644
index 0000000..d1e56df
--- /dev/null
+++ b/trunk/simple/src/test/resources/SectionHelp.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/Sections.odt b/trunk/simple/src/test/resources/Sections.odt
new file mode 100644
index 0000000..d2daeb1
--- /dev/null
+++ b/trunk/simple/src/test/resources/Sections.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/SimpleFormula.odf b/trunk/simple/src/test/resources/SimpleFormula.odf
new file mode 100644
index 0000000..0e10240
--- /dev/null
+++ b/trunk/simple/src/test/resources/SimpleFormula.odf
Binary files differ
diff --git a/trunk/simple/src/test/resources/SlideTest1.odp b/trunk/simple/src/test/resources/SlideTest1.odp
new file mode 100644
index 0000000..e6401a2
--- /dev/null
+++ b/trunk/simple/src/test/resources/SlideTest1.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/SlideTest2.odp b/trunk/simple/src/test/resources/SlideTest2.odp
new file mode 100644
index 0000000..22f9a49
--- /dev/null
+++ b/trunk/simple/src/test/resources/SlideTest2.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/SlideTest3.odp b/trunk/simple/src/test/resources/SlideTest3.odp
new file mode 100644
index 0000000..81b7874
--- /dev/null
+++ b/trunk/simple/src/test/resources/SlideTest3.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/Spreadsheet with Embeded Chart.ods b/trunk/simple/src/test/resources/Spreadsheet with Embeded Chart.ods
new file mode 100644
index 0000000..c5c4053
--- /dev/null
+++ b/trunk/simple/src/test/resources/Spreadsheet with Embeded Chart.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/TableCountTestcase.odp b/trunk/simple/src/test/resources/TableCountTestcase.odp
new file mode 100644
index 0000000..107559c
--- /dev/null
+++ b/trunk/simple/src/test/resources/TableCountTestcase.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/TableTemplate.odt b/trunk/simple/src/test/resources/TableTemplate.odt
new file mode 100644
index 0000000..3292a42
--- /dev/null
+++ b/trunk/simple/src/test/resources/TableTemplate.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestCellSelection.ods b/trunk/simple/src/test/resources/TestCellSelection.ods
new file mode 100644
index 0000000..fcb2107
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestCellSelection.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestCreateChartWithCellRange.ods b/trunk/simple/src/test/resources/TestCreateChartWithCellRange.ods
new file mode 100644
index 0000000..8607ef0
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestCreateChartWithCellRange.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestInsertDocument.odt b/trunk/simple/src/test/resources/TestInsertDocument.odt
new file mode 100644
index 0000000..3c6dd25
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestInsertDocument.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestODSAppendRow.ods b/trunk/simple/src/test/resources/TestODSAppendRow.ods
new file mode 100644
index 0000000..0df875c
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestODSAppendRow.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestODTAppendRow.odt b/trunk/simple/src/test/resources/TestODTAppendRow.odt
new file mode 100644
index 0000000..a787a42
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestODTAppendRow.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestReplaceWithBasicCases.odt b/trunk/simple/src/test/resources/TestReplaceWithBasicCases.odt
new file mode 100644
index 0000000..a4b089c
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestReplaceWithBasicCases.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestSpreadsheetStyleTable.ods b/trunk/simple/src/test/resources/TestSpreadsheetStyleTable.ods
new file mode 100644
index 0000000..86174b7
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestSpreadsheetStyleTable.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestSpreadsheetTable.ods b/trunk/simple/src/test/resources/TestSpreadsheetTable.ods
new file mode 100644
index 0000000..fe1a184
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestSpreadsheetTable.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestStyleSelection.odt b/trunk/simple/src/test/resources/TestStyleSelection.odt
new file mode 100644
index 0000000..6deb1a5
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestStyleSelection.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestTableTemplate.odt b/trunk/simple/src/test/resources/TestTableTemplate.odt
new file mode 100644
index 0000000..4e48f65
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestTableTemplate.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestTextSelection.odt b/trunk/simple/src/test/resources/TestTextSelection.odt
new file mode 100644
index 0000000..955285b
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestTextSelection.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestTextSelectionComment.odt b/trunk/simple/src/test/resources/TestTextSelectionComment.odt
new file mode 100644
index 0000000..38643a0
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestTextSelectionComment.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestTextSelectionCopySource.odt b/trunk/simple/src/test/resources/TestTextSelectionCopySource.odt
new file mode 100644
index 0000000..8647471
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestTextSelectionCopySource.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TestTextTable.odt b/trunk/simple/src/test/resources/TestTextTable.odt
new file mode 100644
index 0000000..0b740b4
--- /dev/null
+++ b/trunk/simple/src/test/resources/TestTextTable.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/TextFieldSampleDocument.odt b/trunk/simple/src/test/resources/TextFieldSampleDocument.odt
new file mode 100644
index 0000000..2fae400
--- /dev/null
+++ b/trunk/simple/src/test/resources/TextFieldSampleDocument.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/chartTestTemplate.otc b/trunk/simple/src/test/resources/chartTestTemplate.otc
new file mode 100644
index 0000000..2d538c7
--- /dev/null
+++ b/trunk/simple/src/test/resources/chartTestTemplate.otc
Binary files differ
diff --git a/trunk/simple/src/test/resources/empty.odt b/trunk/simple/src/test/resources/empty.odt
new file mode 100644
index 0000000..03da852
--- /dev/null
+++ b/trunk/simple/src/test/resources/empty.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/empty_file.ods b/trunk/simple/src/test/resources/empty_file.ods
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/trunk/simple/src/test/resources/empty_file.ods
@@ -0,0 +1 @@
+
diff --git a/trunk/simple/src/test/resources/graphicTestTemplate.otg b/trunk/simple/src/test/resources/graphicTestTemplate.otg
new file mode 100644
index 0000000..c9dfc64
--- /dev/null
+++ b/trunk/simple/src/test/resources/graphicTestTemplate.otg
Binary files differ
diff --git a/trunk/simple/src/test/resources/headerFooterHidden.odt b/trunk/simple/src/test/resources/headerFooterHidden.odt
new file mode 100644
index 0000000..ec41f22
--- /dev/null
+++ b/trunk/simple/src/test/resources/headerFooterHidden.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/image_list_item.png b/trunk/simple/src/test/resources/image_list_item.png
new file mode 100644
index 0000000..824f4d9
--- /dev/null
+++ b/trunk/simple/src/test/resources/image_list_item.png
Binary files differ
diff --git a/trunk/simple/src/test/resources/invalid.ods b/trunk/simple/src/test/resources/invalid.ods
new file mode 100644
index 0000000..de1e613
--- /dev/null
+++ b/trunk/simple/src/test/resources/invalid.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/metaTest.odt b/trunk/simple/src/test/resources/metaTest.odt
new file mode 100644
index 0000000..ea250f6
--- /dev/null
+++ b/trunk/simple/src/test/resources/metaTest.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/navigationtest.odt b/trunk/simple/src/test/resources/navigationtest.odt
new file mode 100644
index 0000000..23f2af1
--- /dev/null
+++ b/trunk/simple/src/test/resources/navigationtest.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/no_size_opt.odt b/trunk/simple/src/test/resources/no_size_opt.odt
new file mode 100644
index 0000000..32ddcf8
--- /dev/null
+++ b/trunk/simple/src/test/resources/no_size_opt.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/not-only-odf.odt b/trunk/simple/src/test/resources/not-only-odf.odt
new file mode 100644
index 0000000..629d3b5
--- /dev/null
+++ b/trunk/simple/src/test/resources/not-only-odf.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Presentation1.odp b/trunk/simple/src/test/resources/performance/Presentation1.odp
new file mode 100644
index 0000000..c25cc9d
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Presentation1.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Presentation2.odp b/trunk/simple/src/test/resources/performance/Presentation2.odp
new file mode 100644
index 0000000..2c2a7df
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Presentation2.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Presentation3.odp b/trunk/simple/src/test/resources/performance/Presentation3.odp
new file mode 100644
index 0000000..f3e3adc
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Presentation3.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Presentation4.odp b/trunk/simple/src/test/resources/performance/Presentation4.odp
new file mode 100644
index 0000000..f32c7af
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Presentation4.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Presentation5.odp b/trunk/simple/src/test/resources/performance/Presentation5.odp
new file mode 100644
index 0000000..e5b7588
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Presentation5.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Presentation7.odp b/trunk/simple/src/test/resources/performance/Presentation7.odp
new file mode 100644
index 0000000..9002ac8
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Presentation7.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Text1.odt b/trunk/simple/src/test/resources/performance/Text1.odt
new file mode 100644
index 0000000..4761107
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Text1.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Text3.odt b/trunk/simple/src/test/resources/performance/Text3.odt
new file mode 100644
index 0000000..d72df2d
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Text3.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Text4.odt b/trunk/simple/src/test/resources/performance/Text4.odt
new file mode 100644
index 0000000..15f208e
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Text4.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Text6.odt b/trunk/simple/src/test/resources/performance/Text6.odt
new file mode 100644
index 0000000..61bd0d6
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Text6.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/Text7.odt b/trunk/simple/src/test/resources/performance/Text7.odt
new file mode 100644
index 0000000..c691f63
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/Text7.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/spreadsheet1.ods b/trunk/simple/src/test/resources/performance/spreadsheet1.ods
new file mode 100644
index 0000000..363bb89
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/spreadsheet1.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/spreadsheet2.ods b/trunk/simple/src/test/resources/performance/spreadsheet2.ods
new file mode 100644
index 0000000..4876065
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/spreadsheet2.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/spreadsheet3.ods b/trunk/simple/src/test/resources/performance/spreadsheet3.ods
new file mode 100644
index 0000000..60e984a
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/spreadsheet3.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/spreadsheet4.ods b/trunk/simple/src/test/resources/performance/spreadsheet4.ods
new file mode 100644
index 0000000..a34f9ca
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/spreadsheet4.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/performance/spreadsheet5.ods b/trunk/simple/src/test/resources/performance/spreadsheet5.ods
new file mode 100644
index 0000000..fd4d56f
--- /dev/null
+++ b/trunk/simple/src/test/resources/performance/spreadsheet5.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/presentation.odp b/trunk/simple/src/test/resources/presentation.odp
new file mode 100644
index 0000000..e46fb7b
--- /dev/null
+++ b/trunk/simple/src/test/resources/presentation.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/presentationTestTemplate.otp b/trunk/simple/src/test/resources/presentationTestTemplate.otp
new file mode 100644
index 0000000..cd56ba2
--- /dev/null
+++ b/trunk/simple/src/test/resources/presentationTestTemplate.otp
Binary files differ
diff --git a/trunk/simple/src/test/resources/presentationWithEmbedDoc.odp b/trunk/simple/src/test/resources/presentationWithEmbedDoc.odp
new file mode 100644
index 0000000..f30dfdc
--- /dev/null
+++ b/trunk/simple/src/test/resources/presentationWithEmbedDoc.odp
Binary files differ
diff --git a/trunk/simple/src/test/resources/spreadsheetTestTemplate.ots b/trunk/simple/src/test/resources/spreadsheetTestTemplate.ots
new file mode 100644
index 0000000..3e8c2b8
--- /dev/null
+++ b/trunk/simple/src/test/resources/spreadsheetTestTemplate.ots
Binary files differ
diff --git a/trunk/simple/src/test/resources/table.odt b/trunk/simple/src/test/resources/table.odt
new file mode 100644
index 0000000..3591fb5
--- /dev/null
+++ b/trunk/simple/src/test/resources/table.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/test2-content.xml b/trunk/simple/src/test/resources/test2-content.xml
new file mode 100644
index 0000000..64bd8f0
--- /dev/null
+++ b/trunk/simple/src/test/resources/test2-content.xml
@@ -0,0 +1,165 @@
+<!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ -->
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.2">
+<office:scripts/>
+<office:font-face-decls>
+<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
+<style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/>
+<style:font-face style:font-family-generic="modern" style:font-pitch="fixed" style:name="Cumberland" svg:font-family="Cumberland"/>
+<style:font-face style:font-family-generic="roman" style:font-pitch="variable" style:name="Thorndale" svg:font-family="Thorndale"/>
+<style:font-face style:font-family-generic="swiss" style:font-pitch="variable" style:name="Albany" svg:font-family="Albany"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="MS Mincho" svg:font-family="'MS Mincho'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Tahoma" svg:font-family="Tahoma"/>
+</office:font-face-decls>
+<office:automatic-styles>
+<style:style style:family="paragraph" style:list-style-name="L1" style:name="P1" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:list-style-name="L2" style:name="P2" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:list-style-name="L2" style:name="P3" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:list-style-name="L1" style:name="P4" style:parent-style-name="Text_20_body"/>
+<style:style style:family="paragraph" style:name="P5" style:parent-style-name="Text_20_body">
+<style:paragraph-properties fo:margin-left="0.2in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false"/>
+</style:style>
+<style:style style:family="paragraph" style:name="P6" style:parent-style-name="Text_20_body">
+<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false"/>
+</style:style>
+<style:style style:family="text" style:name="T1">
+<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+</style:style>
+<style:style style:family="text" style:name="T2">
+<style:text-properties fo:color="#ff3366"/>
+</style:style>
+<text:list-style style:name="L1">
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="1" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.25in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="2" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.5in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="3" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.75in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="4" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="5" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.25in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="6" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.5in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="7" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.75in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="8" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="9" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.25in"/>
+</text:list-level-style-number>
+<text:list-level-style-number style:num-format="1" style:num-suffix="." text:level="10" text:style-name="Numbering_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.5in"/>
+</text:list-level-style-number>
+</text:list-style>
+<text:list-style style:name="L2">
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="1" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.25in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="○" text:level="2" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.5in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="■" text:level="3" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="0.75in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="4" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="○" text:level="5" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.25in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="■" text:level="6" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.5in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="7" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="1.75in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="○" text:level="8" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="■" text:level="9" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.25in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+<text:list-level-style-bullet style:num-suffix="." text:bullet-char="●" text:level="10" text:style-name="Bullet_20_Symbols">
+<style:list-level-properties text:min-label-width="0.25in" text:space-before="2.5in"/>
+<style:text-properties style:font-name="StarSymbol"/>
+</text:list-level-style-bullet>
+</text:list-style>
+</office:automatic-styles>
+<office:body>
+<office:text>
+<office:forms form:apply-design-mode="false" form:automatic-focus="false"/>
+<text:sequence-decls>
+<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+</text:sequence-decls>
+<text:p text:style-name="Standard">Hello <text:span text:style-name="T1">world</text:span>
+</text:p>
+<text:p text:style-name="Text_20_body">absatz <text:span text:style-name="Example">z</text:span>
+<text:span text:style-name="Example">
+<text:span text:style-name="T1">we</text:span>
+</text:span>
+<text:span text:style-name="Example">i</text:span>
+</text:p>
+<text:p text:style-name="P5">Absatz <text:span text:style-name="T2">drei</text:span>
+</text:p>
+<text:p text:style-name="P6">
+<text:span text:style-name="T2"/>
+</text:p>
+<text:list text:style-name="L1">
+<text:list-item>
+<text:p text:style-name="P1">num 1</text:p>
+</text:list-item>
+<text:list-item>
+<text:p text:style-name="P1">num 2</text:p>
+</text:list-item>
+</text:list>
+<text:p text:style-name="Text_20_body"/>
+<text:list text:style-name="L2">
+<text:list-item>
+<text:p text:style-name="P2">bullet1</text:p>
+</text:list-item>
+<text:list-item>
+<text:p text:style-name="P2">bullet2</text:p>
+</text:list-item>
+</text:list>
+</office:text>
+</office:body>
+</office:document-content>
diff --git a/trunk/simple/src/test/resources/test2-styles.xml b/trunk/simple/src/test/resources/test2-styles.xml
new file mode 100644
index 0000000..751445e
--- /dev/null
+++ b/trunk/simple/src/test/resources/test2-styles.xml
@@ -0,0 +1,123 @@
+<!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ -->
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:ooo="http://openoffice.org/2004/office" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2">
+<office:font-face-decls>
+<style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
+<style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/>
+<style:font-face style:font-family-generic="modern" style:font-pitch="fixed" style:name="Cumberland" svg:font-family="Cumberland"/>
+<style:font-face style:font-family-generic="roman" style:font-pitch="variable" style:name="Thorndale" svg:font-family="Thorndale"/>
+<style:font-face style:font-family-generic="swiss" style:font-pitch="variable" style:name="Albany" svg:font-family="Albany"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Andale Sans UI" svg:font-family="'Andale Sans UI'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="MS Mincho" svg:font-family="'MS Mincho'"/>
+<style:font-face style:font-family-generic="system" style:font-pitch="variable" style:name="Tahoma" svg:font-family="Tahoma"/>
+</office:font-face-decls>
+<office:styles>
+<style:default-style style:family="graphic">
+<style:graphic-properties draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+<style:paragraph-properties style:font-independent-line-spacing="false" style:line-break="strict" style:text-autospace="ideograph-alpha" style:writing-mode="lr-tb">
+<style:tab-stops/>
+</style:paragraph-properties>
+<style:text-properties fo:country="US" fo:font-size="12pt" fo:language="en" style:country-asian="none" style:country-complex="none" style:font-size-asian="12pt" style:font-size-complex="12pt" style:language-asian="zxx" style:language-complex="zxx" style:letter-kerning="true" style:use-window-font-color="true"/>
+</style:default-style>
+<style:default-style style:family="paragraph">
+<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:line-break="strict" style:punctuation-wrap="hanging" style:tab-stop-distance="0.4925in" style:text-autospace="ideograph-alpha" style:writing-mode="page"/>
+<style:text-properties fo:country="US" fo:font-size="12pt" fo:hyphenate="false" fo:hyphenation-push-char-count="2" fo:hyphenation-remain-char-count="2" fo:language="en" style:country-asian="none" style:country-complex="none" style:font-name="Thorndale" style:font-name-asian="Andale Sans UI" style:font-name-complex="Tahoma" style:font-size-asian="12pt" style:font-size-complex="12pt" style:language-asian="zxx" style:language-complex="zxx" style:letter-kerning="true" style:use-window-font-color="true"/>
+</style:default-style>
+<style:default-style style:family="table">
+<style:table-properties table:border-model="collapsing"/>
+</style:default-style>
+<style:default-style style:family="table-row">
+<style:table-row-properties fo:keep-together="auto"/>
+</style:default-style>
+<style:style style:class="text" style:family="paragraph" style:name="Standard"/>
+<style:style style:class="text" style:display-name="Text body" style:family="paragraph" style:name="Text_20_body" style:parent-style-name="Standard">
+<style:paragraph-properties fo:margin-bottom="0.0835in" fo:margin-top="0in"/>
+</style:style>
+<style:style style:class="text" style:family="paragraph" style:name="Heading" style:next-style-name="Text_20_body" style:parent-style-name="Standard">
+<style:paragraph-properties fo:keep-with-next="always" fo:margin-bottom="0.0835in" fo:margin-top="0.1665in"/>
+<style:text-properties fo:font-size="14pt" style:font-name="Albany" style:font-name-asian="MS Mincho" style:font-name-complex="Tahoma" style:font-size-asian="14pt" style:font-size-complex="14pt"/>
+</style:style>
+<style:style style:class="list" style:family="paragraph" style:name="List" style:parent-style-name="Text_20_body">
+<style:text-properties style:font-name-complex="Tahoma1"/>
+</style:style>
+<style:style style:class="extra" style:family="paragraph" style:name="Caption" style:parent-style-name="Standard">
+<style:paragraph-properties fo:margin-bottom="0.0835in" fo:margin-top="0.0835in" text:line-number="0" text:number-lines="false"/>
+<style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-name-complex="Tahoma1" style:font-size-asian="12pt" style:font-size-complex="12pt" style:font-style-asian="italic" style:font-style-complex="italic"/>
+</style:style>
+<style:style style:class="index" style:family="paragraph" style:name="Index" style:parent-style-name="Standard">
+<style:paragraph-properties text:line-number="0" text:number-lines="false"/>
+<style:text-properties style:font-name-complex="Tahoma1"/>
+</style:style>
+<style:style style:display-name="Numbering Symbols" style:family="text" style:name="Numbering_20_Symbols"/>
+<style:style style:display-name="Bullet Symbols" style:family="text" style:name="Bullet_20_Symbols">
+<style:text-properties fo:font-size="9pt" style:font-name="StarSymbol" style:font-name-asian="StarSymbol" style:font-name-complex="StarSymbol" style:font-size-asian="9pt" style:font-size-complex="9pt"/>
+</style:style>
+<style:style style:family="text" style:name="Example">
+<style:text-properties style:font-name="Cumberland" style:font-name-asian="Cumberland" style:font-name-complex="Cumberland"/>
+</style:style>
+<text:outline-style>
+<text:outline-level-style style:num-format="" text:level="1">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="2">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="3">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="4">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="5">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="6">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="7">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="8">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="9">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+<text:outline-level-style style:num-format="" text:level="10">
+<style:list-level-properties text:min-label-distance="0.15in"/>
+</text:outline-level-style>
+</text:outline-style>
+<text:notes-configuration style:num-format="1" text:footnotes-position="page" text:note-class="footnote" text:start-numbering-at="document" text:start-value="0"/>
+<text:notes-configuration style:num-format="i" text:note-class="endnote" text:start-value="0"/>
+<text:linenumbering-configuration style:num-format="1" text:increment="5" text:number-lines="false" text:number-position="left" text:offset="0.1965in"/>
+</office:styles>
+<office:automatic-styles>
+<style:page-layout style:name="pm1">
+<style:page-layout-properties fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" fo:margin-top="0.7874in" fo:page-height="11in" fo:page-width="8.5in" style:footnote-max-height="0in" style:num-format="1" style:print-orientation="portrait" style:writing-mode="lr-tb">
+<style:footnote-sep style:adjustment="left" style:color="#000000" style:distance-after-sep="0.0398in" style:distance-before-sep="0.0398in" style:rel-width="25%" style:width="0.0071in"/>
+</style:page-layout-properties>
+<style:header-style/>
+<style:footer-style/>
+</style:page-layout>
+</office:automatic-styles>
+<office:master-styles>
+<style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+</office:master-styles>
+</office:document-styles>
diff --git a/trunk/simple/src/test/resources/test2.odt b/trunk/simple/src/test/resources/test2.odt
new file mode 100644
index 0000000..aa4d557
--- /dev/null
+++ b/trunk/simple/src/test/resources/test2.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/testA.jpg b/trunk/simple/src/test/resources/testA.jpg
new file mode 100644
index 0000000..494c46d
--- /dev/null
+++ b/trunk/simple/src/test/resources/testA.jpg
Binary files differ
diff --git a/trunk/simple/src/test/resources/testEmbeddedDoc.odt b/trunk/simple/src/test/resources/testEmbeddedDoc.odt
new file mode 100644
index 0000000..b6ffa11
--- /dev/null
+++ b/trunk/simple/src/test/resources/testEmbeddedDoc.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/testGetCellAt.ods b/trunk/simple/src/test/resources/testGetCellAt.ods
new file mode 100644
index 0000000..fbc6985
--- /dev/null
+++ b/trunk/simple/src/test/resources/testGetCellAt.ods
Binary files differ
diff --git a/trunk/simple/src/test/resources/testList.odt b/trunk/simple/src/test/resources/testList.odt
new file mode 100644
index 0000000..ad7d592
--- /dev/null
+++ b/trunk/simple/src/test/resources/testList.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/testList2.odt b/trunk/simple/src/test/resources/testList2.odt
new file mode 100644
index 0000000..97eacfb
--- /dev/null
+++ b/trunk/simple/src/test/resources/testList2.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/testSaveEmbeddedDoc.odt b/trunk/simple/src/test/resources/testSaveEmbeddedDoc.odt
new file mode 100644
index 0000000..3dedada
--- /dev/null
+++ b/trunk/simple/src/test/resources/testSaveEmbeddedDoc.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/text-extract.odt b/trunk/simple/src/test/resources/text-extract.odt
new file mode 100644
index 0000000..07593d2
--- /dev/null
+++ b/trunk/simple/src/test/resources/text-extract.odt
Binary files differ
diff --git a/trunk/simple/src/test/resources/textTestTemplate.ott b/trunk/simple/src/test/resources/textTestTemplate.ott
new file mode 100644
index 0000000..4e28075
--- /dev/null
+++ b/trunk/simple/src/test/resources/textTestTemplate.ott
Binary files differ
diff --git a/trunk/simple/src/test/resources/xslt/concatfiles.xsl b/trunk/simple/src/test/resources/xslt/concatfiles.xsl
new file mode 100644
index 0000000..73db4e9
--- /dev/null
+++ b/trunk/simple/src/test/resources/xslt/concatfiles.xsl
@@ -0,0 +1,40 @@
+<!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+ -->
+<?xml version='1.0' encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="xml" encoding="UTF-8"/>
+	
+    <!-- 
+        To access contents of a office file content (e.g. meta.xml, styles.xml) 
+        this URL has to be added before the inner path.
+        
+        For instance sourceBaseURL might be:
+            file:/E:/cws/multiPkgFileTest-ODFDOM/target/test-classes/test2.odt/
+    -->
+	<xsl:param name="sourceBaseURL" select="'./'" />    
+
+    <xsl:template match="/">
+        <xsl:message>The sourceBaseURL is '<xsl:value-of select="$sourceBaseURL"/>'</xsl:message>
+        <concatedFiles>            
+            <xsl:copy-of select="document(concat($sourceBaseURL, 'styles.xml'))" />
+            <xsl:copy-of select="document(concat($sourceBaseURL, 'meta.xml'))" />        
+        </concatedFiles>
+    </xsl:template>
+</xsl:stylesheet>
+
diff --git a/trunk/taglets/README.txt b/trunk/taglets/README.txt
new file mode 100644
index 0000000..4a52119
--- /dev/null
+++ b/trunk/taglets/README.txt
@@ -0,0 +1,17 @@
+*************************************************************
+* Taglets Java Library                                       *
+*                                                           *
+*************************************************************
+
+
+About Taglets
+-------------
+
+This sub project defines some javadoc tags for ODFDOM. Most of users no need to care it.
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
diff --git a/trunk/taglets/pom.xml b/trunk/taglets/pom.xml
new file mode 100644
index 0000000..0f3091f
--- /dev/null
+++ b/trunk/taglets/pom.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.odftoolkit</groupId>
+        <artifactId>odftoolkit</artifactId>
+        <version>0.6.1-incubating</version>
+    </parent>
+
+    <artifactId>taglets</artifactId>
+    <version>0.8.10-incubating</version>
+    <packaging>jar</packaging>
+
+    <!-- Build Settings -->
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.7</version>
+                <configuration>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <attach>true</attach>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1.2</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>single</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+     <!-- More Project Information -->
+    <name>ODF Custom Javadoc Taglets</name>
+    <description>Javadoc taglets for ODFDOM</description>
+    <url>http://incubator.apache.org/odftoolkit/odfdom/index.html</url>
+    <inceptionYear>2008</inceptionYear>
+    <licenses>
+        <license>
+            <name>Apache 2</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/taglets</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/taglets</developerConnection>
+        <url>http://svn.apache.org/viewvc/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/taglets</url>
+    </scm>
+    <profiles>
+		<profile>
+			<id>tools.jar</id><!-- For JDK 7 and later - with Oracle Brand --> 
+			<activation>
+				<property>
+					<name>java.vendor</name>
+					<value>Oracle Corporation</value>
+				</property>
+			</activation>
+			<dependencies>
+				<dependency>
+					<groupId>com.sun</groupId>
+					<artifactId>tools</artifactId>
+					<version>1.7.0</version>
+					<scope>system</scope>
+					<systemPath>${java.home}/../lib/tools.jar</systemPath>
+				</dependency>
+			</dependencies>
+		</profile>
+		<profile>
+			<id>tools-sun.jar</id><!-- For JDK 6 and OpenJDK - with Sun Brand --> 
+			<activation>
+				<property>
+					<name>java.vendor</name>
+					<value>Sun Microsystems Inc.</value>
+				</property>
+			</activation>
+			<dependencies>
+				<dependency>
+					<groupId>com.sun</groupId>
+					<artifactId>tools</artifactId>
+					<version>1.5.0</version>
+					<scope>system</scope>
+					<systemPath>${java.home}/../lib/tools.jar</systemPath>
+				</dependency>
+			</dependencies>
+		</profile>
+        <profile>
+            <id>release-sign-artifacts</id>
+            <activation>
+                <property>
+                    <name>performRelease</name>
+                    <value>true</value>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <version>1.1</version>
+                        <executions>
+                            <execution>
+                                <id>sign-artifacts</id>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>sign</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <!-- <distributionManagement>
+                <site>
+                    <id>odfdom</id>
+                    <name>ODFDOM Java Toolkit Project</name>
+                    <url>dav:https://odftoolkit.org/website/odfdom/${project.version}/javadoc-taglets</url>
+                </site>
+            </distributionManagement>-->
+        </profile>
+    </profiles>
+</project>
diff --git a/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfAttributeTaglet.java b/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfAttributeTaglet.java
new file mode 100644
index 0000000..a7728c5
--- /dev/null
+++ b/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfAttributeTaglet.java
@@ -0,0 +1,206 @@
+/*

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

+ * 

+ * Copyright 2009 IBM. All rights reserved.

+ * Copyright 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.taglet;

+

+import java.util.HashSet;

+import java.util.Map;

+import java.util.Set;

+import java.util.logging.Logger;

+

+import com.sun.javadoc.Tag;

+import com.sun.tools.doclets.Taglet;

+

+/**

+ * This class implements a custom taglet to the map the ODF attribute to the

+ * declaration of the ODF attribute in the OpenDocument specification.

+ * 

+ * The position of the OpenDocument specification in HTML can be provided using

+ * an environment variable or java system property, while the system property

+ * overrides the environment variable. In case nothing is been a default path

+ * within the JavaDoc doc-files directory is being used.

+ * 

+ * For example the taglet <code>{&#64;odf.attribute xml:id}</code> would be

+ * resolved without variable settings to

+ * <code>JAVA_DOC_BASE/doc-files/OpenDocument-v1.2-part1.html#attribute-xml_id</code>

+ * .

+ */

+public class OdfAttributeTaglet implements Taglet {

+

+	private static final Logger LOG = Logger.getLogger(OdfAttributeTaglet.class.getName());

+	private static final String NAME = "odf.attribute";

+	private static final String ODF_SPEC_PART1_PATH = "../../../../../../doc-files/OpenDocument-v1.2-part1.html";

+	private static final String ODF_SPEC_PART3_PATH = "../../../../../doc-files/OpenDocument-v1.2-part3.html";

+	private static String mOdfSpecPart1Path = null;

+	private static String mOdfSpecPart3Path = null;

+	private static Set<String> mNS_IN_PART3 = new HashSet<String>();

+

+	// initial attribute set which should be search in part3.

+	static {

+		mNS_IN_PART3.add("manifest");

+		mNS_IN_PART3.add("dsig");

+		mNS_IN_PART3.add("ds");

+	}

+

+	/*

+	 * FINDING THE ABSOLUTE PATH TO THE ODF SPEC PART1 and PART3 IN HTML: 

+	 * 1) Try to get the odfSpecPath from the Java System variable (ODF_SPEC_PATH) 

+	 * 2) Try to get the odfSpecPath from the environment variable (ODF_SPEC_PATH) 

+	 * 3) If both not worked, use the default path

+	 */

+	static {

+		mOdfSpecPart1Path = System.getProperty("ODF_SPEC_PART1_PATH");

+		if (mOdfSpecPart1Path == null) {

+			mOdfSpecPart1Path = System.getenv("ODF_SPEC_PATH");

+			if (mOdfSpecPart1Path == null) {

+				mOdfSpecPart1Path = ODF_SPEC_PART1_PATH;

+				LOG.info("OdfSpecPart1Path was set to " + mOdfSpecPart1Path + " by class declaration.");

+			} else {

+				LOG.info("OdfSpecPart1Path was set to " + mOdfSpecPart1Path + " by environment property 'ODF_SPEC_PATH'.");

+			}

+		} else {

+			LOG.info("OdfSpecPart1Path was set to " + mOdfSpecPart1Path + " by Java System property 'ODF_SPEC_PATH'.");

+		}

+		

+		mOdfSpecPart3Path = System.getProperty("ODF_SPEC_PART3_PATH");

+		if (mOdfSpecPart3Path == null) {

+			mOdfSpecPart3Path = System.getenv("ODF_SPEC_PATH");

+			if (mOdfSpecPart3Path == null) {

+				mOdfSpecPart3Path = ODF_SPEC_PART3_PATH;

+				LOG.info("OdfSpecPart3Path was set to " + mOdfSpecPart3Path + " by class declaration.");

+			} else {

+				LOG.info("OdfSpecPart3Path was set to " + mOdfSpecPart3Path + " by environment property 'ODF_SPEC_PATH'.");

+			}

+		} else {

+			LOG.info("OdfSpecPart3Path was set to " + mOdfSpecPart3Path + " by Java System property 'ODF_SPEC_PATH'.");

+		}

+

+	}

+

+	/**

+	 * @return the name of this custom tag.

+	 */

+	public String getName() {

+		return NAME;

+	}

+

+	/**

+	 * @return true since this tag can be used in a field doc comment

+	 */

+	public boolean inField() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a constructor doc comment

+	 */

+	public boolean inConstructor() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a method doc comment

+	 */

+	public boolean inMethod() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in an overview doc comment

+	 */

+	public boolean inOverview() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a package doc comment

+	 */

+	public boolean inPackage() {

+		return true;

+	}

+

+	/**

+	 * @return true since this

+	 */

+	public boolean inType() {

+		return true;

+	}

+

+	/**

+	 * Will return true since this is an inline tag.

+	 * 

+	 * @return true since this is an inline tag.

+	 */

+

+	public boolean isInlineTag() {

+		return true;

+	}

+

+	/**

+	 * Register this Taglet.

+	 * 

+	 * @param tagletMap

+	 *            the map to register this tag to.

+	 */

+	public static void register(Map<String, Taglet> tagletMap) {

+		OdfAttributeTaglet tag = new OdfAttributeTaglet();

+		Taglet t = tagletMap.get(tag.getName());

+		if (t != null) {

+			tagletMap.remove(tag.getName());

+		}

+		tagletMap.put(tag.getName(), tag);

+	}

+

+	/**

+	 * Given the <code>Tag</code> representation of this custom tag, return its

+	 * string representation.

+	 * 

+	 * @param tag

+	 *            he <code>Tag</code> representation of this custom tag.

+	 * @return the string representation of the custom tag

+	 */

+	public String toString(Tag tag) {

+		int pos = tag.text().lastIndexOf(":");

+		String namespace = tag.text().substring(0, pos);

+		String name = tag.text().substring(pos + 1);

+		String mOdfSpecPath = mOdfSpecPart1Path;

+		if (mNS_IN_PART3.contains(namespace)) {

+			mOdfSpecPath = mOdfSpecPart3Path;

+		}

+		String fragmentIdentifier = "attribute-" + namespace + "_" + name;

+		return "<a href=\"" + mOdfSpecPath + "#" + fragmentIdentifier + "\">" + tag.text() + "</a>";

+	}

+

+	/**

+	 * This method should not be called since arrays of inline tags do not

+	 * exist. Method should be used to convert this inline tag to a string.

+	 * 

+	 * @param tags

+	 *            the array of <code>Tag</code>s representing of this custom

+	 *            tag.

+	 * @return Nothing is returned, instead an

+	 *         <code>UnsupportedOperationException</code> is being thrown.

+	 */

+	public String toString(Tag[] tags) {

+		throw new java.lang.UnsupportedOperationException("Arrays of inline tags do not exist!");

+	}

+

+}

diff --git a/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfDatatypeTaglet.java b/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfDatatypeTaglet.java
new file mode 100644
index 0000000..92acf26
--- /dev/null
+++ b/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfDatatypeTaglet.java
@@ -0,0 +1,170 @@
+/*

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

+ * 

+ * Copyright 2009 IBM. All rights reserved.

+ * Copyright 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.taglet;

+

+import java.util.Map;

+

+import com.sun.javadoc.Tag;

+import com.sun.tools.doclets.Taglet;

+import java.util.logging.Logger;

+

+/**

+ *	This class implements a custom taglet to the map the ODF datatype to the

+ *  declaration of the ODF datatype in the OpenDocument specification.

+ *

+ *  The position of the OpenDocument specification in HTML can be provided using

+ *  an environment variable or java system property, while the system property overrides

+ *  the environment variable.

+ *  In case nothing is been a default path within the JavaDoc doc-files directory is being used.

+ *

+ *  For example the taglet <code>{&#64;odf.datatype countryCode}</code> would be resolved without variable settings to

+ *  <code>JAVA_DOC_BASE/doc-files/OpenDocument-v1.2-cd05-part1.html#datatype-countryCode</code>.

+ */

+public class OdfDatatypeTaglet implements Taglet {

+

+	private static final Logger LOG = Logger.getLogger(OdfDatatypeTaglet.class.getName());

+	private static final String NAME = "odf.datatype";

+	private static final String ODF_SPEC_PATH = "../../../../doc-files/OpenDocument-v1.2-part1.html";

+	private static String mOdfSpecPath = null;

+

+	/* FINDING THE ABSOLUTE PATH TO THE ODF SPEC IN HTML:

+	 * 1) Try to get the odfSpecPath from the Java System variable (ODF_SPEC_PATH)

+	 * 2) Try to get the odfSpecPath from the environemnt variable (ODF_SPEC_PATH)

+	 * 3) If both not worked, use the default path

+	 **/

+	static {

+		mOdfSpecPath = System.getProperty("ODF_SPEC_PATH");

+		if (mOdfSpecPath == null) {

+			mOdfSpecPath = System.getenv("ODF_SPEC_PATH");

+			if (mOdfSpecPath == null) {

+				mOdfSpecPath = ODF_SPEC_PATH;

+				LOG.info("OdfSpecPath was set to " + mOdfSpecPath + " by class declaration.");

+			} else {

+				LOG.info("OdfSpecPath was set to " + mOdfSpecPath + " by environment property 'ODF_SPEC_PATH'.");

+			}

+		} else {

+			LOG.info("OdfSpecPath was set to " + mOdfSpecPath + " by Java System property 'ODF_SPEC_PATH'.");

+		}

+	}

+

+	/**

+	 * @return the name of this custom tag.

+	 */

+	public String getName() {

+		return NAME;

+	}

+

+	/**

+	 * @return true since this tag can be used in a field

+	 *         doc comment

+	 */

+	public boolean inField() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a constructor

+	 *         doc comment

+	 */

+	public boolean inConstructor() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a method

+	 *         doc comment

+	 */

+	public boolean inMethod() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in an overview

+	 *         doc comment

+	 */

+	public boolean inOverview() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a package

+	 *         doc comment

+	 */

+	public boolean inPackage() {

+		return true;

+	}

+

+	/**

+	 * @return true since this

+	 */

+	public boolean inDatatype() {

+		return true;

+	}

+

+	/**

+	 * Will return true since this is an inline tag.

+	 * @return true since this is an inline tag.

+	 */

+	public boolean isInlineTag() {

+		return true;

+	}

+

+	/**

+	 * Register this Taglet.

+	 * @param tagletMap  the map to register this tag to.

+	 */

+	public static void register(Map<String, Taglet> tagletMap) {

+		OdfDatatypeTaglet tag = new OdfDatatypeTaglet();

+		Taglet t = tagletMap.get(tag.getName());

+		if (t != null) {

+			tagletMap.remove(tag.getName());

+		}

+		tagletMap.put(tag.getName(), tag);

+	}

+

+	/**

+	 * Given the <code>Tag</code> representation of this custom

+	 * tag, return its string representation.

+	 * @param tag he <code>Tag</code> representation of this custom tag.

+	 * @return the string representation of the custom tag

+	 */

+	public String toString(Tag tag) {

+		String fragmentIdentifier = "datatype-" + tag.text();

+		return "<a href=\"" + mOdfSpecPath + "#" + fragmentIdentifier + "\">" + tag.text() + "</a>";

+	}

+

+	/**

+	 * This method should not be called since arrays of inline tags do not

+	 * exist.  Method should be used to convert this

+	 * inline tag to a string.

+	 * @param tags the array of <code>Tag</code>s representing of this custom tag.

+	 * @return Nothing is returned, instead an <code>UnsupportedOperationException</code> is being thrown.

+

+	 */

+	public String toString(Tag[] tags) {

+		throw new java.lang.UnsupportedOperationException("Arrays of inline tags do not exist!");

+	}

+

+	public boolean inType() {

+		throw new UnsupportedOperationException("Not supported yet.");

+	}

+}

diff --git a/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfElementTaglet.java b/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfElementTaglet.java
new file mode 100644
index 0000000..ca421ed
--- /dev/null
+++ b/trunk/taglets/src/main/java/org/odftoolkit/odfdom/taglet/OdfElementTaglet.java
@@ -0,0 +1,206 @@
+/*

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

+ * 

+ * Copyright 2009 IBM. All rights reserved.

+ * Copyright 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.taglet;

+

+import java.util.HashSet;

+import java.util.Map;

+import java.util.Set;

+import java.util.logging.Logger;

+

+import com.sun.javadoc.Tag;

+import com.sun.tools.doclets.Taglet;

+

+/**

+ * This class implements a custom taglet to the map the ODF element to the

+ * declaration of the ODF element in the OpenDocument specification.

+ * 

+ * The position of the OpenDocument specification in HTML can be provided using

+ * an environment variable or java system property, while the system property

+ * overrides the environment variable. In case nothing is been a default path

+ * within the JavaDoc doc-files directory is being used.

+ * 

+ * For example the taglet <code>{&#64;odf.element text:span}</code> would be

+ * resolved without variable settings to

+ * <code>JAVA_DOC_BASE/doc-files/OpenDocument-v1.2-part1.html#element-text_span</code>

+ * .

+ */

+public class OdfElementTaglet implements Taglet {

+

+	private static final Logger LOG = Logger.getLogger(OdfElementTaglet.class.getName());

+	private static final String NAME = "odf.element";

+	private static final String ODF_SPEC_PART1_PATH = "../../../../../../doc-files/OpenDocument-v1.2-part1.html";

+	private static final String ODF_SPEC_PART3_PATH = "../../../../../doc-files/OpenDocument-v1.2-part3.html";

+	private static String mOdfSpecPart1Path = null;

+	private static String mOdfSpecPart3Path = null;

+	private static Set<String> mNS_IN_PART3 = new HashSet<String>();

+

+	// initial attribute set which should be search in part3.

+	static {

+		mNS_IN_PART3.add("manifest");

+		mNS_IN_PART3.add("dsig");

+		mNS_IN_PART3.add("ds");

+	}

+

+	/*

+	 * FINDING THE ABSOLUTE PATH TO THE ODF SPEC PART1 and PART3 IN HTML: 

+	 * 1) Try to get the odfSpecPath from the Java System variable (ODF_SPEC_PATH) 

+	 * 2) Try to get the odfSpecPath from the environment variable (ODF_SPEC_PATH)

+	 * 3) If both not worked, use the default path

+	 */

+	static {

+		mOdfSpecPart1Path = System.getProperty("ODF_SPEC_PART1_PATH");

+		if (mOdfSpecPart1Path == null) {

+			mOdfSpecPart1Path = System.getenv("ODF_SPEC_PATH");

+			if (mOdfSpecPart1Path == null) {

+				mOdfSpecPart1Path = ODF_SPEC_PART1_PATH;

+				LOG.info("OdfSpecPart1Path was set to " + mOdfSpecPart1Path + " by class declaration.");

+			} else {

+				LOG.info("OdfSpecPart1Path was set to " + mOdfSpecPart1Path + " by environment property 'ODF_SPEC_PATH'.");

+			}

+		} else {

+			LOG.info("OdfSpecPart1Path was set to " + mOdfSpecPart1Path + " by Java System property 'ODF_SPEC_PATH'.");

+		}

+

+		mOdfSpecPart3Path = System.getProperty("ODF_SPEC_PART3_PATH");

+		if (mOdfSpecPart3Path == null) {

+			mOdfSpecPart3Path = System.getenv("ODF_SPEC_PATH");

+			if (mOdfSpecPart3Path == null) {

+				mOdfSpecPart3Path = ODF_SPEC_PART3_PATH;

+				LOG.info("OdfSpecPart3Path was set to " + mOdfSpecPart3Path + " by class declaration.");

+			} else {

+				LOG.info("OdfSpecPart3Path was set to " + mOdfSpecPart3Path + " by environment property 'ODF_SPEC_PATH'.");

+			}

+		} else {

+			LOG.info("OdfSpecPart3Path was set to " + mOdfSpecPart3Path + " by Java System property 'ODF_SPEC_PATH'.");

+		}

+

+	}

+

+	/**

+	 * Return the name of this custom tag.

+	 */

+	public String getName() {

+		return NAME;

+	}

+

+	/**

+	 * @return true since this tag can be used in a field doc comment

+	 */

+	public boolean inField() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a constructor doc comment

+	 */

+	public boolean inConstructor() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a method doc comment

+	 */

+	public boolean inMethod() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in an overview doc comment

+	 */

+	public boolean inOverview() {

+		return true;

+	}

+

+	/**

+	 * @return true since this tag can be used in a package doc comment

+	 */

+	public boolean inPackage() {

+		return true;

+	}

+

+	/**

+	 * @return true since this

+	 */

+	public boolean inType() {

+		return true;

+	}

+

+	/**

+	 * Will return true since this is an inline tag.

+	 * 

+	 * @return true since this is an inline tag.

+	 */

+

+	public boolean isInlineTag() {

+		return true;

+	}

+

+	/**

+	 * Register this Taglet.

+	 * 

+	 * @param tagletMap

+	 *            the map to register this tag to.

+	 */

+	public static void register(Map<String, Taglet> tagletMap) {

+		OdfElementTaglet tag = new OdfElementTaglet();

+		Taglet t = tagletMap.get(tag.getName());

+		if (t != null) {

+			tagletMap.remove(tag.getName());

+		}

+		tagletMap.put(tag.getName(), tag);

+	}

+

+	/**

+	 * Given the <code>Tag</code> representation of this custom tag, return its

+	 * string representation.

+	 * 

+	 * @param tag

+	 *            he <code>Tag</code> representation of this custom tag.

+	 */

+	public String toString(Tag tag) {

+		int pos = tag.text().lastIndexOf(":");

+		String namespace = tag.text().substring(0, pos);

+		String name = tag.text().substring(pos + 1);

+		String mOdfSpecPath = mOdfSpecPart1Path;

+		if (mNS_IN_PART3.contains(namespace)) {

+			mOdfSpecPath = mOdfSpecPart3Path;

+		}

+		String fragmentIdentifier = "element-" + namespace + "_" + name;

+		if("ds:Signature".equals(tag.text())){

+			fragmentIdentifier = "element2-xmldsig_Signature";

+		}

+		return "<a href=\"" + mOdfSpecPath + "#" + fragmentIdentifier + "\">" + tag.text() + "</a>";

+	}

+

+	/**

+	 * This method should not be called since arrays of inline tags do not

+	 * exist. Method should be used to convert this inline tag to a string.

+	 * 

+	 * @param tags

+	 *            the array of <code>Tag</code>s representing of this custom

+	 *            tag.

+	 */

+	public String toString(Tag[] tags) {

+		return null;

+	}

+

+}

diff --git a/trunk/validator/LICENSE.txt b/trunk/validator/LICENSE.txt
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/trunk/validator/LICENSE.txt
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/trunk/validator/README.txt b/trunk/validator/README.txt
new file mode 100644
index 0000000..eb74ee0
--- /dev/null
+++ b/trunk/validator/README.txt
@@ -0,0 +1,49 @@
+*************************************************************
+* ODFDOM Java Library                                       *
+*                                                           *
+*************************************************************
+
+
+About ODFDOM
+-------------
+
+ODFDOM is an OpenDocument Format (ODF) framework. Its purpose 
+is to provide an easy common way to create, access and 
+manipulate ODF files, without requiring detailed knowledge of
+the ODF specification. It is designed to provide the ODF
+developer community with an easy lightwork programming API
+portable to any object-oriented language.
+
+The current reference implementation is written in Java.
+
+
+Documentation
+--------------
+
+The latest release notes and a summary of API changes (if any) are available
+online at the project's Wiki page:
+    http://odftoolkit.org/projects/odfdom/pages/ReleaseNotes
+
+In general, the Wiki page is a great place to start when looking for online
+documentation and other information about the odfdom project.
+    http://odftoolkit.org/projects/odfdom/pages/Home
+
+API documentation (Javadoc) can be downloaded from the project's download area:
+    http://odftoolkit.org/projects/odfdom/downloads
+
+The Javadoc can also be viewed online and is available for each version, e.g.
+    http://odfdom.odftoolkit.org/0.8.6/docs/api/
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
+
+Installation
+-------------
+
+Just put the file odfdom.jar in your classpath. You will
+need Apache Xerces-J as well. Get it from
+    http://xml.apache.org/dist/xerces-j/
diff --git a/trunk/validator/pom.xml b/trunk/validator/pom.xml
new file mode 100644
index 0000000..420f92d
--- /dev/null
+++ b/trunk/validator/pom.xml
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  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
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.odftoolkit</groupId>
+		<artifactId>odftoolkit</artifactId>
+		<version>0.6.1-incubating</version>
+	</parent>
+	<artifactId>odfvalidator</artifactId>
+	<version>1.1.7-incubating</version>
+	<packaging>war</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>odfdom-java</artifactId>
+			<version>0.8.10-incubating</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>net.java.dev.msv</groupId>
+			<artifactId>msv-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.iso_relax.verifier.jaxp.validation</groupId>
+			<artifactId>isorelax-jaxp-bridge</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>xerces</groupId>
+			<artifactId>xercesImpl</artifactId>
+		</dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+        </dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss</maven.build.timestamp.format>
+	</properties>
+
+	<!--
+   The POM of org.iso_relax.verifier.jaxp.validation:isorelax-jaxp-bridge:jar:1.0
+   on the central repo is not 4.0.0 complaint so that we should pick the one SMX
+   Repo already provides, as otherwise building under Maven 3.0.4 would fail!
+   So delete any old .m2 cache entries of yours for this artifact beforehand if
+   you make use of Maven 3.0.4+
+ -->
+	<repositories>
+		<repository>
+			<id>apache.smx.repo</id>
+			<url>http://svn.apache.org/repos/asf/servicemix/m2-repo/</url>
+			<name>Apache ServiceMix Repo</name>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+		</repository>
+	</repositories>
+
+	<!-- Build Settings -->
+	<build>
+		<extensions>
+			<extension>
+				<groupId>org.apache.maven.wagon</groupId>
+				<artifactId>wagon-webdav-jackrabbit</artifactId>
+				<version>1.0-beta-7</version>
+			</extension>
+		</extensions>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>wagon-maven-plugin</artifactId>
+				<version>1.0-beta-3</version>
+				<executions>
+					<execution>
+						<id>download-odf-schema-v1.2</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://docs.oasis-open.org/office/v1.2</url>
+							<fromFile>os/OpenDocument-v1.2-os-schemas.zip</fromFile>
+							<toDir>${project.build.directory}/schemas</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-odf-manifest-schema-v1.1</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://docs.oasis-open.org/office/v1.1</url>
+							<fromFile>OS/OpenDocument-manifest-schema-v1.1.rng</fromFile>
+							<toDir>${project.build.directory}/classes/schema/odf1.1</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-odf-schema-v1.1</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://docs.oasis-open.org/office/v1.1</url>
+							<fromFile>OS/OpenDocument-schema-v1.1.rng</fromFile>
+							<toDir>${project.build.directory}/classes/schema/odf1.1</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-odf-strict-schema-v1.1</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://docs.oasis-open.org/office/v1.1</url>
+							<fromFile>OS/OpenDocument-strict-schema-v1.1.rng</fromFile>
+							<toDir>${project.build.directory}/classes/schema/odf1.1</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-odf-manifest-schema-v1.0</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://oasis-open.org/committees/download.php/12570</url>
+							<fromFile>OpenDocument-manifest-schema-v1.0-os.rng</fromFile>
+							<toDir>${project.build.directory}/classes/schema/odf1.0</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-odf-schema-v1.0</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://www.oasis-open.org/committees/download.php/12571</url>
+							<fromFile>OpenDocument-schema-v1.0-os.rng</fromFile>
+							<toDir>${project.build.directory}/classes/schema/odf1.0</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-odf-strict-schema-v1.0</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://www.oasis-open.org/committees/download.php/12569</url>
+							<fromFile>OpenDocument-strict-schema-v1.0-os.rng</fromFile>
+							<toDir>${project.build.directory}/classes/schema/odf1.0</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-mathml-schema-v3.0</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://www.w3.org/Math/RelaxNG</url>
+							<fromFile>mathml3-relaxng.zip</fromFile>
+							<toDir>${project.build.directory}/schemas</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-mathml-schema-v2.0</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://www.w3.org/Math/XMLSchema</url>
+							<fromFile>mathml2.tgz</fromFile>
+							<toDir>${project.build.directory}/schemas</toDir>
+						</configuration>
+					</execution>
+					<execution>
+						<id>download-mathml-schema-v1.01</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>download-single</goal>
+						</goals>
+						<configuration>
+							<url>dav:http://www.w3.org/pub/WWW/TR/REC-MathML</url>
+							<fromFile>mmlents.zip</fromFile>
+							<toDir>${project.build.directory}/schemas</toDir>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<version>1.2</version>
+				<executions>
+					<execution>
+						<id>unzip schema packages</id>
+						<phase>validate</phase>
+						<configuration>
+							<tasks>
+								<echo message="unzip odf 1.2 schemas" />
+								<unzip src="${project.build.directory}/schemas/OpenDocument-v1.2-os-schemas.zip" dest="${project.build.directory}/classes/schema/odf1.2/" />
+								<echo message="unzip mathml 3.0 schemas" />
+								<unzip src="${project.build.directory}/schemas/mathml3-relaxng.zip" dest="${project.build.directory}/schemas/" />
+								<move file="${project.build.directory}/schemas/mathml3" tofile="${project.build.directory}/classes/schema/mathml3.0" />
+								<echo message="untar mathml 2.0 schemas" />
+								<untar src="${project.build.directory}/schemas/mathml2.tgz" dest="${project.build.directory}/schemas/" />
+								<move file="${project.build.directory}/schemas/mathml2" tofile="${project.build.directory}/classes/schema/mathml2.0" />
+								<echo message="unzip mathml 1.01 schemas" />
+								<unzip src="${project.build.directory}/schemas/mmlents.zip" dest="${project.build.directory}/schemas/" />
+								<move file="${project.build.directory}/schemas/mmlents" tofile="${project.build.directory}/classes/schema/mathml1.01" />
+							</tasks>
+						</configuration>
+						<goals>
+							<goal>run</goal>
+						</goals>
+					</execution>
+
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+					<meminitial>512m</meminitial>
+					<maxmem>1024m</maxmem>
+					<showDeprecation>true</showDeprecation>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<version>2.3.1</version>
+				<configuration>
+					<archive>
+						<index>true</index>
+						<!--  No custom manifest worked, neither the below..
+							<index>true</index>
+							<manifest>
+								<addClasspath>true</addClasspath>
+								<odfdomName>ODFDOM Validator</odfdomName>
+								<odfdomVersion>${project.version}</odfdomVersion>
+								<odfdomWebsite>http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html</odfdomWebsite>
+								<odfdomBuiltDate>${build.timestamp}</odfdomBuiltDate>
+								<odfdomSupportedOdfVersion>1.2</odfdomSupportedOdfVersion>
+								<mainClass>org.odftoolkit.odfvalidator.Main</mainClass>
+							</manifest>
+						</archive>-->
+						<manifestEntries>
+							<version>${project.version}</version>
+						</manifestEntries>
+						<manifestSections>
+							<manifestSection>
+								<name>odfvalidator</name>
+								<manifestEntries>
+									<ODFDOM-Name>ODFDOM Validator</ODFDOM-Name>
+									<ODFDOM-Version>${project.version}</ODFDOM-Version>
+									<ODFDOM-Website>http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html</ODFDOM-Website>
+									<ODFDOM-Built-Date>${build.timestamp}</ODFDOM-Built-Date>
+									<ODFDOM-Supported-Odf-Version>1.2</ODFDOM-Supported-Odf-Version>
+								</manifestEntries>
+							</manifestSection>
+						</manifestSections>
+					</archive>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-release-plugin</artifactId>
+				<version>2.1</version>
+				<configuration>
+					<!-- Workaround for http://jira.codehaus.org/browse/MGPG-9 -->
+					<mavenExecutorId>forked-path</mavenExecutorId>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<!-- Explizit version required for fix on systemPropertyVariables -->
+				<version>2.6</version>
+				<configuration>
+					<systemPropertyVariables>
+						<odfdom.version>${project.version}</odfdom.version>
+						<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
+						<org.odftoolkit.odfdom.validation>org.odftoolkit.odfdom.pkg.DefaultErrorHandler</org.odftoolkit.odfdom.validation>
+					</systemPropertyVariables>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-source-plugin</artifactId>
+				<version>2.1.2</version>
+				<executions>
+					<execution>
+						<id>attach-sources</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifestEntries>							
+							<version>${project.version}</version>
+							<Main-Class>org.odftoolkit.odfvalidator.Main</Main-Class>
+						</manifestEntries>
+					</archive>
+					<descriptors>					
+						<descriptor>src/main/assembly/src.xml</descriptor>
+					</descriptors>
+				</configuration>
+				<executions>
+					<execution>
+						<id>single</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.rat</groupId>
+				<artifactId>apache-rat-plugin</artifactId>
+				<configuration>
+					<excludes>
+						<exclude>src/main/resources/**</exclude>
+						<exclude>src/test/resources/**</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<reporting>
+		<plugins>
+			<!-- Code Coverage Testing generated by Cobertura -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>cobertura-maven-plugin</artifactId>
+				<version>2.4</version>
+				<configuration>
+					<instrumentation>
+						<excludes>
+							<exclude>org/odftoolkit/**/*Test.class</exclude>
+						</excludes>
+					</instrumentation>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.7</version>
+				<configuration>
+					<doctitle>ODFDOM</doctitle>
+					<minmemory>512m</minmemory>
+					<maxmemory>1024m</maxmemory>
+					<links>
+						<link>http://download.oracle.com/javase/6/docs/api/</link>
+						<link>http://xerces.apache.org/xerces-j/apiDocs/</link>
+					</links>
+					<splitindex>true</splitindex>
+					<windowtitle>ODFDOM Validator API v${project.version} - http://incubator.apache.org/odftoolkit/</windowtitle>
+				</configuration>
+			</plugin>
+			<!-- Reporting integration test results -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-failsafe-plugin</artifactId>
+				<version>2.5</version>
+				<reportSets>
+					<reportSet>
+						<id>integration-tests</id>
+						<reports>
+							<report>report-only</report>
+						</reports>
+						<configuration>
+							<outputName>failsafe-report</outputName>
+						</configuration>
+					</reportSet>
+				</reportSets>
+			</plugin>
+		</plugins>
+	</reporting>
+
+	<!-- More Project Information -->
+	<name>ODF Validator</name>
+	<description>
+		ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria.
+	</description>
+	<url>http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html</url>
+	<inceptionYear>2008</inceptionYear>
+	<licenses>
+		<license>
+			<name>Apache 2</name>
+			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+		</license>
+	</licenses>
+	<organization>
+		<name>The Apache Software Foundation</name>
+		<url>http://www.apache.org/</url>
+	</organization>
+	<scm>
+		<connection>scm:svn:http://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/validator</connection>
+		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/validator</developerConnection>
+		<url>http://svn.apache.org/viewvc/incubator/odf/tags/odftoolkit-0.6.1-incubating-RC1/validator</url>
+	</scm>
+	<profiles>
+		<profile>
+			<id>integration-test</id>
+			<activation>
+				<property>
+					<name>integration-test</name>
+				</property>
+			</activation>
+			<build>
+				<defaultGoal>verify</defaultGoal>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-failsafe-plugin</artifactId>
+						<version>2.5</version>
+						<executions>
+							<execution>
+								<id>failsafe-it</id>
+								<phase>integration-test</phase>
+								<goals>
+									<goal>integration-test</goal>
+									<goal>verify</goal>
+								</goals>
+								<configuration>
+									<classesDirectory>${basedir}/target/odfdom.jar</classesDirectory>
+									<systemPropertyVariables>
+										<testresourcefolder>performance</testresourcefolder>
+										<executetimes>1</executetimes>
+										<testflag>test</testflag>
+									</systemPropertyVariables>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<!-- Explizit version required for fix on systemPropertyVariables -->
+						<version>2.6</version>
+						<configuration>
+							<systemPropertyVariables>
+								<odfdom.version>${project.version}</odfdom.version>
+								<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
+								<org.odftoolkit.odfdom.validation>true</org.odftoolkit.odfdom.validation>
+							</systemPropertyVariables>
+							<skip>true</skip>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+		<!-- Profile for deploying to the Sonatype repository, which
+  requires GPG signatures 
+  see
+  https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
+  https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
+  https://issues.sonatype.org/browse/OSSRH-960
+  -->
+		<profile>
+			<id>release-sign-artifacts</id>
+			<activation>
+				<property>
+					<name>performRelease</name>
+					<value>true</value>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-gpg-plugin</artifactId>
+						<version>1.1</version>
+						<executions>
+							<execution>
+								<id>sign-artifacts</id>
+								<phase>verify</phase>
+								<goals>
+									<goal>sign</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+</project>
diff --git a/trunk/validator/src/main/assembly/src.xml b/trunk/validator/src/main/assembly/src.xml
new file mode 100644
index 0000000..afa435c
--- /dev/null
+++ b/trunk/validator/src/main/assembly/src.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+ 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 regarding copyright ownership.

+ The ASF licenses this file to You under the Apache License, Version 2.0

+ (the "License"); you may not use this file except in compliance with

+ the License.  You may obtain a copy of the License at

+

+      http://www.apache.org/licenses/LICENSE-2.0

+

+ Unless required by applicable law or agreed to in writing, software

+ distributed under the License is distributed on an "AS IS" BASIS,

+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ See the License for the specific language governing permissions and

+ limitations under the License.

+-->

+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"

+		  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+		  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

+	<!-- TODO: a jarjar format would be better -->

+	<id>jar-with-dependencies</id>

+	<formats>

+		<format>jar</format>

+	</formats>

+	<includeBaseDirectory>false</includeBaseDirectory>

+	<dependencySets>

+		<dependencySet>

+			<outputDirectory>/</outputDirectory>

+			<useProjectArtifact>true</useProjectArtifact>

+			<unpack>true</unpack>

+			<scope>runtime</scope>

+		</dependencySet>

+	</dependencySets>

+	<!-- customization: add classes (wtf isn't this included by default?) -->

+	<fileSets>

+		<fileSet>

+			<outputDirectory>/</outputDirectory>

+			<directory>${basedir}/target/classes</directory>

+			<useDefaultExcludes>true</useDefaultExcludes>

+		</fileSet>

+	</fileSets>

+</assembly>

diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Configuration.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Configuration.java
new file mode 100644
index 0000000..0f96352
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Configuration.java
@@ -0,0 +1,93 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import java.util.TreeSet;
+import java.util.Vector;
+
+public class Configuration extends Properties {
+
+    
+    public static final String SCHEMA = "schema";
+    public static final String STRICT_SCHEMA = "strict-schema";
+    public static final String MANIFEST_SCHEMA = "manifest-schema";
+    public static final String MATHML_SCHEMA = "mathml-schema";
+    public static final String MATHML2_SCHEMA = "mathml2-schema";
+    public static final String DSIG_SCHEMA = "dsig-schema";
+    public static final String PATH = "path";
+    public static final String EXCLUDE = "exclude";
+    public static final String RECURSIVE = "recursive";
+    public static final String FILTER = "filter";
+
+    public static final String VALIDATOR_URL = "validator-url";
+    public static final String PROXY_HOST="proxy-host";
+    public static final String PROXY_PORT="proxy-port";
+
+    /** Creates a new instance of AppProperties */
+    public Configuration()
+    {
+    }
+    
+    public Configuration( File aConfigFile ) throws FileNotFoundException, IOException
+    {
+        FileInputStream aInStream = new FileInputStream( aConfigFile );
+        loadFromXML( aInStream );
+        aInStream.close();
+    }
+    
+
+    public void store( File aConfigFile ) throws FileNotFoundException, IOException 
+    {
+        FileOutputStream aOutStream = new FileOutputStream( aConfigFile );
+        storeToXML( aOutStream, null );
+        aOutStream.close();
+    }
+    
+    public List<String> getListPropety( String aPropNamePrefix )
+    {
+        TreeSet<String> aSortedPropNames = new TreeSet<String>();
+        Enumeration aPropNames = propertyNames();
+        while( aPropNames.hasMoreElements() )
+        {
+            String aPropName = (String)aPropNames.nextElement();
+            if( aPropName.startsWith(aPropNamePrefix))
+                aSortedPropNames.add(aPropName);
+        }
+        
+        List<String> aValues = new Vector<String>(aSortedPropNames.size());
+        Iterator<String> aIter = aSortedPropNames.iterator();
+        while( aIter.hasNext() )
+            aValues.add(getProperty( aIter.next() ) );
+        
+        return aValues;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ContentFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ContentFilter.java
new file mode 100644
index 0000000..dcbaffd
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ContentFilter.java
@@ -0,0 +1,112 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+class ContentFilter extends NamespaceFilter {
+
+    private static final String CD2_SVG_NAMESPACE_URI = "http://www.w3.org/2000/svg";
+    private static final String CD2_XSL_NAMESPACE_URI = "http://www.w3.org/1999/XSL/Format";
+    private static final String CD2_SMIL_NAMESPACE_URI = "http://www.w3.org/2001/SMIL20/";
+    private static final String BASE_OFFICE_NAMESPACE_URI = "http://openoffice.org/2004/office";
+    private static final String BASE_DB_NAMESPACE_URI = "http://openoffice.org/2004/database";
+    private static final String SVG_NAMESPACE_URI = OdfDocumentNamespace.SVG.getUri();
+    private static final String XSL_NAMESPACE_URI = OdfDocumentNamespace.FO.getUri();
+    private static final String SMIL_NAMESPACE_URI = OdfDocumentNamespace.SMIL.getUri();
+    private static final String DRAW_NAMESPACE_URI = OdfDocumentNamespace.DRAW.getUri();
+    private static final String OFFICE_NAMESPACE_URI = OdfDocumentNamespace.OFFICE.getUri();
+    private static final String DB_NAMESPACE_URI = OdfDocumentNamespace.DB.getUri();
+    private static final String BASE_OFFICE_NAMESPACE_PREFIX = "office";
+    private static final String POLYGON = "polygon";
+    private static final String CONTOUR_POLYGON = "contour-polygon";
+    private static final String POLYLINE = "polyline";
+    private static final String POINTS = "points";
+    private static final int MAX_POINTS_LEN = 2048;
+        
+    private Logger m_aLogger;
+    private String m_aLocalElementName;
+    private boolean m_bRoot = true;
+    
+    /** Creates a new instance of KnownIssueFilter */
+    ContentFilter( Logger aLogger, String aLocalElementName ) {
+        m_aLogger = aLogger;
+        m_aLocalElementName = aLocalElementName;
+    }
+
+    String adaptNamespaceUri( String aUri, String aPrefix)
+    {
+        String aNewUri = null;
+        if( aUri.equals(CD2_SVG_NAMESPACE_URI) )
+            aNewUri = SVG_NAMESPACE_URI;
+        else if( aUri.equals(CD2_XSL_NAMESPACE_URI) )
+             aNewUri = XSL_NAMESPACE_URI;
+        else if( aUri.equals(CD2_SMIL_NAMESPACE_URI) ) 
+            aNewUri = SMIL_NAMESPACE_URI;
+        else if( aUri.equals(BASE_OFFICE_NAMESPACE_URI) &&
+                 (aPrefix == null || aPrefix.startsWith(BASE_OFFICE_NAMESPACE_PREFIX)) )
+            aNewUri = OFFICE_NAMESPACE_URI;
+        else if( aUri.equals(BASE_DB_NAMESPACE_URI) )
+            aNewUri = DB_NAMESPACE_URI;
+        
+        return aNewUri;
+    }
+
+    void namespaceUriAdapted( String aUri, String aNewUri )
+    {
+        String aMsg = (aUri.equals(BASE_OFFICE_NAMESPACE_URI) || aUri.equals(BASE_DB_NAMESPACE_URI))
+                ? "Adapting Base namspace'" + aUri + "'"
+                : "Adapting OpenDocument CD2 namspace'" + aUri + "' (has been stored by old OOo versions)";
+        m_aLogger.logInfo( aMsg , false);
+    }
+
+    @Override
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAtts) throws SAXException {
+        if( aUri.equals(DRAW_NAMESPACE_URI) && 
+            (aLocalName.equals(POLYGON) || aLocalName.equals(POLYLINE) || aLocalName.equals(CONTOUR_POLYGON)) )
+        {
+            String aPointsValue = aAtts.getValue(DRAW_NAMESPACE_URI,POINTS);
+            if( aPointsValue != null && aPointsValue.length() > MAX_POINTS_LEN )
+            {
+                m_aLogger.logInfo( String.format("'draw:points' of <%s> has been stripped (value starts with '%s')",aQName,aPointsValue.substring(0,40)), false);
+                AttributesImpl aNewAtts = new AttributesImpl( aAtts );
+                int nAttr = aNewAtts.getIndex(DRAW_NAMESPACE_URI,POINTS);
+                int nPos = aPointsValue.lastIndexOf(' ',MAX_POINTS_LEN);
+                String aNewValue = nPos != -1 ? aPointsValue.substring(0,nPos) : "";
+                aNewAtts.setValue(nAttr, aNewValue );
+                aAtts = aNewAtts;
+            }
+        }
+        super.startElement(aUri, aLocalName, aQName, aAtts);
+        if( m_bRoot )
+        {
+            if( !(aUri.equals(OFFICE_NAMESPACE_URI) && aLocalName.equals(m_aLocalElementName)) )
+                m_aLogger.logError("Invalid root element: " + aQName );
+            m_bRoot = false;
+        }
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/DSigFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/DSigFilter.java
new file mode 100644
index 0000000..d072429
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/DSigFilter.java
@@ -0,0 +1,53 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+class DSigFilter extends NamespaceFilter {
+
+    private static final String OOO_DSIG_NAMESPACE_URI = "http://openoffice.org/2004/documentsignatures";
+    private static final String DSIG_NAMESPACE_URI = "urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0";
+        
+    private Logger m_aLogger;
+    
+    /** Creates a new instance of KnownIssueFilter */
+    DSigFilter( Logger aLogger ) {
+        m_aLogger = aLogger;
+    }
+
+    String adaptNamespaceUri( String aUri, String aPrefix)
+    {
+        String aNewUri = null;
+        if( aUri.equals(OOO_DSIG_NAMESPACE_URI) )
+            aNewUri = DSIG_NAMESPACE_URI;
+        
+        return aNewUri;
+    }
+
+    void namespaceUriAdapted( String aUri, String aNewUri )
+    {
+        String aMsg = "Adapting dsig namspace'" + aUri + "'";
+        m_aLogger.logInfo( aMsg , false);
+    }
+
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java
new file mode 100644
index 0000000..fd7a6b0
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java
@@ -0,0 +1,191 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.util.HashSet;
+import java.util.Vector;
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+class ForeignContentFilter extends XMLFilterImpl {
+
+    private static final String OFFICE_NAMESPACE_URI = OdfDocumentNamespace.OFFICE.getUri();
+    private static final String TEXT_NAMESPACE_URI = OdfDocumentNamespace.TEXT.getUri();
+
+    private static final String H = "h";
+    private static final String P = "p";
+
+    private static final String PROCESS_CONTENT = "process-content";
+    private static final String TRUE = "true";
+
+    // Set of ODF namespace URIs
+    private static HashSet<String> m_aODFNamespaceSet = null;
+
+    // This list contains a boolean for all ancestor foreign elements.
+    // That boolean values specifies whether the element content is processed or not.
+    private Vector<Boolean> m_aAlienElementProcessContents = null;
+
+    // This list contains a boolean for all ancestor elements.
+    // That boolean values specifies whether the element is a text:h ot text:p
+    // element itself or has a text:h or text:p ancestor element.
+    private Vector<Boolean> m_aParagraphAncestorElements = null;
+
+    private ForeignContentListener m_aForeignContentListener = null;
+
+    private OdfVersion m_aVersion = null;
+    private Logger m_aLogger;
+
+    /** Creates a new instance of NamespaceFilter */
+    ForeignContentFilter( Logger aLogger, OdfVersion aVersion, ForeignContentListener aForeignContentListener ) {
+        m_aLogger = aLogger;
+        m_aVersion = aVersion;
+        m_aForeignContentListener = aForeignContentListener;
+
+        m_aAlienElementProcessContents = new Vector<Boolean>();
+        m_aParagraphAncestorElements = new Vector<Boolean>();
+        
+        m_aODFNamespaceSet = new HashSet<String>();
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.OFFICE.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.STYLE.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.TEXT.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.TABLE.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.DRAW.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.FO.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.DC.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.META.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.NUMBER.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.SVG.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.CHART.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.DR3D.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.FORM.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.PRESENTATION.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.SMIL.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.CONFIG.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.SCRIPT.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.XLINK.getUri() );
+        m_aODFNamespaceSet.add( OdfDocumentNamespace.XFORMS.getUri() );
+        if( m_aVersion.compareTo( OdfVersion.V1_2 ) >= 0 )
+        {
+            m_aODFNamespaceSet.add( OdfDocumentNamespace.XHTML.getUri() );
+            m_aODFNamespaceSet.add( OdfDocumentNamespace.GRDDL.getUri() );
+            m_aODFNamespaceSet.add( OdfDocumentNamespace.DB.getUri() );
+            m_aODFNamespaceSet.add( javax.xml.XMLConstants.XML_NS_URI );
+        }
+    }
+
+
+    @Override
+    public void endElement(String aUri, String aLocalName, String aQName) throws SAXException {
+        if( isAlienNamespace(aUri) )
+        {
+            m_aAlienElementProcessContents.removeElementAt( m_aAlienElementProcessContents.size()-1 );
+        }
+        else
+        {
+            if( isProcessContent() )
+                super.endElement(aUri,aLocalName,aQName);
+        }
+    }
+
+
+    @Override
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAtts) throws SAXException
+    {
+        boolean bProcessContent = isProcessContent();
+        
+        if( isAlienNamespace(aUri) )
+        {
+            if( bProcessContent )
+            {
+                String aProcessContentValue = aAtts.getValue( OFFICE_NAMESPACE_URI, PROCESS_CONTENT );
+                if( m_aVersion.compareTo( OdfVersion.V1_2 ) >= 0 )
+                {
+                    bProcessContent = aProcessContentValue != null ? aProcessContentValue.equals(TRUE) : true;
+                }
+                else
+                {
+                    bProcessContent = aProcessContentValue == null || aProcessContentValue.equals(TRUE);
+                }
+
+                if( m_aForeignContentListener!= null )
+                    m_aForeignContentListener.foreignElementDetected(aUri, aLocalName, aQName, aAtts);
+                m_aLogger.logInfo( String.format("extension element <%s> found, element is ignored, element content is %s.",aQName,bProcessContent?"processed":"is ignored"), false);
+            }
+            m_aAlienElementProcessContents.addElement( bProcessContent );
+        }
+        else if( bProcessContent )
+        {
+            Attributes aOldAtts = aAtts;
+
+            AttributesImpl aNewAtts = null;
+            int i = aOldAtts.getLength();
+            while( i>0 ) {
+                --i;
+                String aAttrUri = aOldAtts.getURI(i);
+                if ( isAlienNamespace( aAttrUri ) ) {
+                    if (aNewAtts == null) {
+                        aNewAtts = new AttributesImpl(aOldAtts);
+                        aAtts = aNewAtts;
+                    }
+                    if( m_aForeignContentListener!= null )
+                        m_aForeignContentListener.foreignAttributeDetected(aAttrUri, aOldAtts.getLocalName(i), aOldAtts.getQName(i), aOldAtts.getValue(i));
+                    m_aLogger.logInfo( String.format("extension attribute '%s' of element <%s> found and ignored.",aAtts.getQName(i),aQName), false);
+                    aNewAtts.removeAttribute(i);
+                }
+            }
+
+            boolean bParagraphAncestor = hasParagraphAncestorElement();
+            bParagraphAncestor |= ((aLocalName.equals(P) || aLocalName.equals(H)) && aUri.equals(TEXT_NAMESPACE_URI));
+            m_aParagraphAncestorElements.add(bParagraphAncestor);
+
+            super.startElement(aUri, aLocalName, aQName, aAtts);
+        }
+    }
+    
+    
+
+    private boolean isAlienNamespace( String aUri )
+    {
+        return !m_aODFNamespaceSet.contains(aUri);
+    }
+
+    private boolean isProcessContent()
+    {
+        return m_aAlienElementProcessContents.isEmpty() ? true : m_aAlienElementProcessContents.lastElement();
+    }
+
+    private boolean hasParagraphAncestorElement()
+    {
+        return m_aParagraphAncestorElements.isEmpty() ? false : m_aParagraphAncestorElements.lastElement();
+    }
+
+    @Override
+    public void characters(char[] aChars, int nStart, int nLength) throws SAXException {
+        if( isProcessContent() )
+            super.characters(aChars, nStart, nLength);
+    }
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentListener.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentListener.java
new file mode 100644
index 0000000..0b18948
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentListener.java
@@ -0,0 +1,39 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.xml.sax.Attributes;
+
+/**
+ * Listener interface for foreign elements and attributes that are detected while
+ * validating a stream.
+ *
+ * @author Michael Brauer
+ */
+interface ForeignContentListener {
+    
+    void foreignElementDetected( String aUri, String aLocalName, String aQName, Attributes aAtts );
+
+    void foreignAttributeDetected( String aUri, String aLocalName, String aQName, String aValue );
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/InternalResources.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/InternalResources.java
new file mode 100644
index 0000000..28ca646
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/InternalResources.java
@@ -0,0 +1,50 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+public class InternalResources {
+
+    static final private String INTERNAL_RESOURCE_PREFIX = "internal:";
+
+    static boolean isInternalResourceIdentifer( String aPath )
+    {
+        return aPath.startsWith(INTERNAL_RESOURCE_PREFIX);
+    }
+    
+    static String getResourcePath( String aPath )
+    {
+		String newPath = null;
+        if(aPath.startsWith("internal:")){			
+			newPath = aPath.substring(INTERNAL_RESOURCE_PREFIX.length());
+		}
+		if(!newPath.startsWith("/")){		
+			newPath = "/".concat(aPath.substring(INTERNAL_RESOURCE_PREFIX.length()));
+		}			
+		return newPath;
+    }
+    
+    static String createInternalResourceIdentifier( String aPath )
+    {
+        return INTERNAL_RESOURCE_PREFIX.concat(aPath);
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java
new file mode 100644
index 0000000..673864d
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java
@@ -0,0 +1,246 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.PrintStream;
+
+import org.xml.sax.SAXParseException;
+
+public class Logger {
+
+	public enum LogLevel {
+
+		ERROR,
+		WARNING,
+		INFO
+	};
+	private String m_aFileName;
+	private String m_aEntryName;
+	private PrintStream m_aOut;
+	private int m_nErrors;
+	private int m_nWarnings;
+	private LogLevel m_nLevel;
+	private Logger m_aParentLogger;
+	private static final String INFO_PREFIX = "Info:";
+	private static final String WARNING_PREFIX = "Warning:";
+	private static final String ERROR_PREFIX = "Error:";
+	private static final String FATAL_PREFIX = "Fatal:";
+	private static boolean m_isHTMLEnabled;
+
+	/** Creates a new instance of Logger */
+	Logger(String aFileName, String aEntryName, PrintStream aOut, LogLevel nLevel) {
+		m_aFileName = aFileName;
+		m_aEntryName = aEntryName;
+		m_aOut = aOut;
+		m_nLevel = nLevel;
+		m_nErrors = 0;
+		m_nWarnings = 0;
+		m_aParentLogger = null;
+	}
+
+	/** Creates a new instance of Logger */
+	Logger(String aEntryName, Logger aParentLogger) {
+		m_aFileName = aParentLogger.m_aFileName;
+		m_aEntryName = aEntryName;
+		m_aOut = aParentLogger.m_aOut;
+		m_nLevel = aParentLogger.m_nLevel;
+		m_nErrors = 0;
+		m_nWarnings = 0;
+		m_aParentLogger = aParentLogger;
+	}
+
+	static void enableHTML(boolean isHTMLEnabled) {
+		m_isHTMLEnabled = isHTMLEnabled;
+	}
+
+	public PrintStream getOutputStream() {
+		return m_aOut;
+	}
+
+	public void setOutputStream(PrintStream aOut) {
+		m_aOut = aOut;
+	}
+
+	boolean hasError() {
+		return m_nErrors > 0;
+	}
+
+	boolean hasWarning() {
+		return m_nWarnings > 0;
+	}
+
+	int getErrorCount() {
+		return m_nErrors;
+	}
+
+	int getWarningCount() {
+		return m_nWarnings;
+	}
+
+	void logWarning(String aMsg) {
+		if (m_nLevel.compareTo(LogLevel.WARNING) >= 0) {
+			if (m_isHTMLEnabled) {
+				m_aOut.print("<span class='warning'>");
+			}
+			logMessage(WARNING_PREFIX, aMsg);
+		}
+		incWarnings();
+	}
+
+	void logFatalError(String aMsg) {
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='fatalError'>");
+		}
+		logMessage(FATAL_PREFIX, aMsg);
+		incErrors();
+	}
+
+	void logError(String aMsg) {
+		if (m_nLevel.compareTo(LogLevel.ERROR) >= 0) {
+			if (m_isHTMLEnabled) {
+				m_aOut.print("<span class='error'>");
+			}
+			logMessage(ERROR_PREFIX, aMsg);
+		}
+		incErrors();
+	}
+
+	void logInfo(String aMsg, boolean bForceOutput) {
+		if (m_nLevel.compareTo(LogLevel.INFO) >= 0 || bForceOutput) {
+			if (m_isHTMLEnabled) {
+				m_aOut.print("<span class='info'>");
+			}
+			logMessage(INFO_PREFIX, aMsg);
+		}
+	}
+
+	void logWarning(SAXParseException e) {
+		if (m_nLevel.compareTo(LogLevel.WARNING) >= 0) {
+			if (m_isHTMLEnabled) {
+				m_aOut.print("<span class='warning'>");
+			}
+			logMessage(WARNING_PREFIX, e);
+		}
+		incWarnings();
+	}
+
+	void logFatalError(SAXParseException e) {
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='fatalError'>");
+		}
+		logMessage(FATAL_PREFIX, e);
+		incErrors();
+	}
+
+	void logError(SAXParseException e) {
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='error'>");
+		}
+		if (m_nLevel.compareTo(LogLevel.ERROR) >= 0) {
+			logMessage(ERROR_PREFIX, e);
+		}
+		incErrors();
+	}
+
+	void logSummaryInfo() {
+		logInfo((hasError() ? getErrorCount() : "no") + " errors, " + (hasWarning() ? getWarningCount() : "no") + " warnings", false);
+	}
+
+	private void printFileEntryPrefix() {
+		m_aOut.print(m_aFileName);
+		if (m_aEntryName != null && m_aEntryName.length() > 0) {
+			m_aOut.print("/");
+			m_aOut.print(m_aEntryName);
+		}
+	}
+
+	private void logMessage(String aPrefix, SAXParseException e) {
+		// filepath
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='filePath'>");
+		}
+		printFileEntryPrefix();
+		m_aOut.print("[");
+		m_aOut.print(e.getLineNumber());
+		m_aOut.print(",");
+		m_aOut.print(e.getColumnNumber());
+		m_aOut.print("]:  ");
+		if (m_isHTMLEnabled) {
+			m_aOut.print("</span>");
+		}
+
+		// prefix, e.g. warning
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='messageType'>");
+		}
+		m_aOut.print(aPrefix);
+		if (m_isHTMLEnabled) {
+			m_aOut.print("</span>");
+		}
+
+		m_aOut.print(" " + e.getMessage());
+		if (m_isHTMLEnabled) {
+			m_aOut.print("</span></br>");
+		}
+		m_aOut.println();
+	}
+
+	private void logMessage(String aPrefix, String aMsg) {
+		// filepath
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='filePath'>");
+		}
+		printFileEntryPrefix();
+		m_aOut.print(":  ");
+		if (m_isHTMLEnabled) {
+			m_aOut.print("</span>");
+		}
+
+		// prefix, e.g. warning
+		if (m_isHTMLEnabled) {
+			m_aOut.print("<span class='messageType'>");
+		}
+		m_aOut.print(aPrefix);
+		if (m_isHTMLEnabled) {
+			m_aOut.print("</span>");
+		}
+		m_aOut.print(" " + aMsg);
+		if (m_isHTMLEnabled) {
+			m_aOut.print("</span></br>");
+		}
+		m_aOut.println();
+	}
+
+	private void incErrors() {
+		++m_nErrors;
+		if (m_aParentLogger != null) {
+			m_aParentLogger.incErrors();
+		}
+	}
+
+	private void incWarnings() {
+		++m_nWarnings;
+		if (m_aParentLogger != null) {
+			m_aParentLogger.incWarnings();
+		}
+	}
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java
new file mode 100644
index 0000000..73fad5c
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java
@@ -0,0 +1,289 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * This application validates an OpenDocument file. To run this application from the command line without Ant, try:
+ * java -jar "[path/]ODFValidator.jar".
+ * @author michael
+ */
+public class Main {
+
+    private static final String VERSION="1.1.4";
+    
+    /** Creates a new instance of Main */
+    public Main() {
+    }
+    
+    /**
+     * @param aArgs the command line arguments
+     */
+    public static void main(String[] aArgs) {
+        
+        String aConfigFileName = null;
+        String aFilterFileName = null;
+        String aSchemaFileName = null;
+        String aOutputFileName = null;
+        String aExcludeRegExp = null;
+        boolean bPrintGenerator = false;
+        boolean bUseMathDTD = false;
+        boolean bPrintHelp = false;
+        boolean bPrintVersion = false;
+        boolean bRecursive = false;
+        Logger.LogLevel nLogLevel = Logger.LogLevel.ERROR;
+        OdfValidatorMode eMode = OdfValidatorMode.VALIDATE;
+        List<String> aFileNames = new Vector<String>();
+        OdfVersion aVersion = null;
+
+        boolean bCommandLineValid = true;
+        List<String> aArgList = Arrays.asList(aArgs);
+        Iterator<String> aArgIter = aArgList.iterator();
+        while( aArgIter.hasNext() && bCommandLineValid )
+        {
+            String aArg = aArgIter.next();
+            if( aArg.equals("-c") )
+            {
+                eMode = OdfValidatorMode.CONFORMANCE;
+            }
+            else if( aArg.equals("-d") )
+            {
+                bUseMathDTD = true;
+            }
+            else if( aArg.equals("-e") )
+            {
+                eMode = OdfValidatorMode.EXTENDED_CONFORMANCE;
+            }
+            else if( aArg.equals("-f") )
+            {
+                if( aArgIter.hasNext() )
+                    aFilterFileName = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-g") )
+            {
+                bPrintGenerator = true;
+            }
+            else if( aArg.equals("-h") )
+            {
+                bPrintHelp = true;
+            }
+            else if( aArg.equals("-o") )
+            {
+                if( aArgIter.hasNext() )
+                    aOutputFileName = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-r") )
+            {
+                bRecursive = true;
+            }
+            else if( aArg.equals("-s") )
+            {
+                eMode = OdfValidatorMode.VALIDATE_STRICT;
+            }
+            else if( aArg.equals("-v") )
+            {
+                nLogLevel = Logger.LogLevel.INFO;
+            }
+            else if( aArg.equals("-w") )
+            {
+                nLogLevel = Logger.LogLevel.WARNING;
+            }
+            else if( aArg.equals("-x") )
+            {
+                if( aArgIter.hasNext() )
+                    aExcludeRegExp = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-C") )
+            {
+                if( aArgIter.hasNext() )
+                    aConfigFileName = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-S") )
+            {
+                if( aArgIter.hasNext() )
+                    aSchemaFileName = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-V") )
+            {
+                bPrintVersion = true;
+            }
+            else if( aArg.equals("-1.0") || aArg.equals("-1.1") || aArg.equals("-1.2") )
+            {
+                aVersion = OdfVersion.valueOf( aArg.substring(1), false );
+            }
+            else if( aArg.startsWith("-") )
+            {
+                System.out.print(aArg);
+                System.out.println(": unknown option, use '-h' for help");
+                return;
+            }
+            else if( aArg.length()>0 )
+            {
+                aFileNames.add( aArg );
+            }
+        }
+
+        // check usage
+        if( bPrintHelp || bPrintVersion )
+        {
+            bCommandLineValid = true;
+        }
+        else if( bPrintGenerator )
+        {
+            bCommandLineValid = aFileNames.size() > 0;
+        }
+        else if( aConfigFileName != null )
+        {
+            bCommandLineValid = aConfigFileName.length() > 0;
+        }
+        else
+        {
+            bCommandLineValid = aFileNames.size() > 0;
+        }
+
+        // print help
+        if( !bCommandLineValid || bPrintHelp )
+        {
+            printUsage();
+            return;
+        }
+        if( bPrintVersion )
+        {
+            System.out.print("odfvalidator v");
+            System.out.println( VERSION );
+            return;
+        }
+        
+        try
+        {
+            // Print generator (does not require config file)
+            if( bPrintGenerator ) 
+            {
+                MetaInformation aMetaInformation = new MetaInformation( System.out );
+                Iterator<String> aIter = aFileNames.iterator();
+                while( aIter.hasNext() )
+                    aMetaInformation.getInformation(aIter.next());
+                return;
+            }
+            
+            // Read configuration
+            Configuration aConfig = null;
+            if( aConfigFileName != null )
+            {
+                File aConfigFile = new File( aConfigFileName );
+                try
+                {
+                    aConfig = new Configuration( aConfigFile );
+                }
+                catch( FileNotFoundException e )
+                {
+                    if( aConfigFileName != null )
+                    {
+                        System.out.println( aConfigFile.getAbsolutePath() + ": file not found.");
+                        return;
+                    }
+                }
+                catch( IOException e )
+                {
+                    System.out.println("error reading " + aConfigFile.getAbsolutePath() + ": " + e.getLocalizedMessage() );
+                    return;
+                }
+            }
+            
+            if( aSchemaFileName != null )
+            {
+                aConfig = new Configuration();
+                aConfig.setProperty( Configuration.STRICT_SCHEMA, aSchemaFileName );
+            }
+
+            PrintStream aOut = aOutputFileName != null ? new PrintStream( aOutputFileName ) : System.out;
+            ODFValidator aValidator = new ODFValidator( aConfig, nLogLevel, aVersion, bUseMathDTD );
+
+            if( aConfigFileName != null )
+            {
+                aValidator.validate(aOut, aConfig, eMode );
+            }
+            else
+            {
+                aValidator.validate(aOut, aFileNames, aExcludeRegExp, eMode, bRecursive, aFilterFileName );
+            }
+        }
+        catch( ODFValidatorException e )
+        {
+            System.out.println( e.getMessage() );
+            System.out.println( "Validation aborted." );
+        }
+        catch( FileNotFoundException e )
+        {
+            System.out.println( e.getMessage() );
+            System.out.println( "Validation aborted." );
+        }
+    }
+    
+    private static void printUsage()
+    {
+        System.out.println( "usage: odfvalidator -g <odffiles>");
+        System.out.println( "       odfvalidator [-r] [-c|-e|-s] [-d] [-v|-w] [-f <filterfile>] [-x <regexp>] [-o outputfile] [-1.0|-1.1|-1.2] <odffiles>");
+        System.out.println( "       odfvalidator [-r] [-c|-e|-s] [-d] [-v|-w] [-f <filterfile>] [-x <regexp>] [-o outputfile] -S <schemafile> <odffiles>");
+        System.out.println( "       odfvalidator [-c|-s] [-v|-w] [-d] [-o outputfile] -C <configfile>");
+        System.out.println( "       odfvalidator -h");
+        System.out.println( "       odfvalidator -V");
+        System.out.println();
+        System.out.println( "-C: Validate using configuration file <configfile>" );
+        System.out.println( "-S: Use schema <schemafile> for validation" );
+        System.out.println( "-V: Print version" );
+        System.out.println( "-c: Check conformance (default for ODF 1.2 documents)" );
+        System.out.println( "-e: Check extended conformance (ODF 1.2 documents only)" );
+        System.out.println( "-d: Use MathML DTD rather than MathML2 schema for validation" );
+        System.out.println( "-f: Use filterfile <filterfile>" );
+        System.out.println( "-g: Show <odffiles> generators and exit" );
+        System.out.println( "-h: Print this help and exit" );
+        System.out.println( "-o: Store validation errors in <outputfile>" );
+        System.out.println( "-r: Process directory recursively" );
+        System.out.println( "-s: Validate against strict schema (ODF 1.0/1.1 documents only)" );
+        System.out.println( "-v: Verbose output, including generator and warnings" );
+        System.out.println( "-w: Print warnings" );
+        System.out.println( "-x: Exclude paths that match <regexp>" );
+        System.out.println();
+        System.out.println( "If no option is provided, <odffiles> are validated using the schemas matching the detected ODF version of the files" );
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntry.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntry.java
new file mode 100644
index 0000000..efe128c
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntry.java
@@ -0,0 +1,68 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+public class ManifestEntry
+{
+    private String m_aFullPath;
+    private String m_aMediaType;
+    
+    ManifestEntry(String aFullPath, String aMediaType)
+    {
+        m_aFullPath = aFullPath;
+        m_aMediaType = aMediaType;
+    }
+
+    String getFullPath()
+    {
+        return m_aFullPath;
+    }
+
+    String getMediaType()
+    {
+        return m_aMediaType;
+    }
+
+    boolean isOpenDocumentMediaType()
+    {
+        return m_aMediaType!=null && isOpenDocumentMediaType(m_aMediaType);
+    }
+
+    static boolean isOpenDocumentMediaType( String aMediaType )
+    {
+        if( aMediaType.length() >14 && aMediaType.substring(12,14).equals("x-") )
+        {
+            String aNewMediaType = aMediaType.substring(0,12) + aMediaType.substring(14);
+            aMediaType = aNewMediaType;
+        }
+
+        return aMediaType.equals(ODFMediaTypes.TEXT_MEDIA_TYPE) ||
+                aMediaType.equals(ODFMediaTypes.GRAPHICS_MEDIA_TYPE) ||
+                aMediaType.equals(ODFMediaTypes.SPREADSHEET_MEDIA_TYPE) ||
+                aMediaType.equals(ODFMediaTypes.PRESENTATION_MEDIA_TYPE) ||
+                aMediaType.equals(ODFMediaTypes.FORMULA_MEDIA_TYPE) ||
+                aMediaType.equals(ODFMediaTypes.CHART_MEDIA_TYPE);
+    }
+
+
+}
\ No newline at end of file
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntryListener.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntryListener.java
new file mode 100644
index 0000000..5e0cd24
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntryListener.java
@@ -0,0 +1,29 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+interface ManifestEntryListener {
+    
+    void foundManifestEntry( ManifestEntry aManifestEntry );
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestFilter.java
new file mode 100644
index 0000000..250fd28
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestFilter.java
@@ -0,0 +1,108 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.IOException;
+import java.io.StringReader;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+
+class ManifestFilter extends NamespaceFilter {
+    
+    private static final String OOO_MANIFEST_PUBLIC_ID = "-//OpenOffice.org//DTD Manifest 1.0//EN";
+    private static final String OOO_MANIFEST_NAMESPACE_URI = "http://openoffice.org/2001/manifest";
+    private static final String MANIFEST_NAMESPACE_URI = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0";
+    
+    private static final String FILE_ENTRY = "file-entry";
+    private static final String FULL_PATH = "full-path";
+    private static final String MEDIA_TYPE = "media-type";
+    
+    private Logger m_aLogger;
+
+    private ManifestListener m_aManifestListener = null;
+    private ManifestEntryListener m_aManifestEntryListener = null;
+    
+    /** Creates a new instance of KnownIssueFilter */
+    ManifestFilter(Logger aLogger, ManifestListener aManifestListener,
+            ManifestEntryListener aManifestEntryListener)
+    {
+        m_aLogger = aLogger;
+        m_aManifestListener = aManifestListener;
+        m_aManifestEntryListener = aManifestEntryListener;
+    }
+
+    @Override
+    public InputSource resolveEntity(String aPublicId, String aSystemId) throws SAXException, IOException {
+        // Ignore the external OOo Manifest DTD which was errornously included
+        // in early OpenDocument files.
+        
+        if( aPublicId.equals(OOO_MANIFEST_PUBLIC_ID) )
+        {
+            String aMsg = "Ignoring doctype definition '" + OOO_MANIFEST_PUBLIC_ID + "' (has been stored by old OOo versions)";
+            m_aLogger.logInfo( aMsg , false);
+            return new InputSource(new StringReader(""));
+        }
+        else
+            return super.resolveEntity( aPublicId, aSystemId );
+    }
+
+    String adaptNamespaceUri( String aUri, String aPrefix)
+    {
+        String aNewUri = null;
+        if( aUri.equals(OOO_MANIFEST_NAMESPACE_URI) )
+            aNewUri = MANIFEST_NAMESPACE_URI;
+        
+        return aNewUri;
+    }
+
+    void namespaceUriAdapted( String aUri, String aNewUri )
+    {
+        String aMsg = "Adapting OpenOffice.org namspace'" + aUri + "' (has been stored by old OOo versions)";
+        m_aLogger.logInfo( aMsg , false);
+    }
+
+    @Override
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAtts) throws SAXException {
+        super.startElement(aUri, aLocalName, aQName, aAtts);
+        if( (aUri.equals(MANIFEST_NAMESPACE_URI) || aUri.equals(OOO_MANIFEST_NAMESPACE_URI)) && aLocalName.equals(FILE_ENTRY))
+        {
+            String aFullPath = aAtts.getValue(aUri,FULL_PATH);
+            String aMediaType = aAtts.getValue(aUri,MEDIA_TYPE);
+            if( aFullPath != null )
+            {
+                if( aFullPath.equals("/") )
+                {
+                    if( m_aManifestListener != null )
+                        m_aManifestListener.setMediaType( aMediaType );
+                }
+                else
+                {
+                    if( m_aManifestEntryListener != null )
+                        m_aManifestEntryListener.foundManifestEntry( new ManifestEntry(aFullPath,aMediaType) );
+                }
+            }
+        }
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestListener.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestListener.java
new file mode 100644
index 0000000..890a54c
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestListener.java
@@ -0,0 +1,29 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+interface ManifestListener {
+    
+    void setMediaType( String aMediaType );
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MathML101Filter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MathML101Filter.java
new file mode 100644
index 0000000..83c7537
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MathML101Filter.java
@@ -0,0 +1,98 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+/**
+ *
+ */
+class MathML101Filter extends XMLFilterImpl {
+//class MathML101Filter implements EntityResolver {
+    
+    private String m_aMathMLDTD;
+    private static final String MATHML_NAMESPACE_URI = "http://www.w3.org/1998/Math/MathML";
+    private static final String MATHML_PUBLIC_ID = "-//W3C//DTD MathML 1.01//EN";
+    private static final String OOO_MATHML_PUBLIC_ID = "-//OpenOffice.org//DTD Modified W3C MathML 1.01//EN";
+
+    private Logger m_aLogger;
+    
+    /** Creates a new instance of MathML101Filter */
+    MathML101Filter( String aMathMLDTD,  Logger aLogger )  {
+        m_aMathMLDTD = aMathMLDTD;
+        m_aLogger = aLogger;
+    }
+
+
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAtts) throws SAXException {
+        super.startElement(aUri, aLocalName, aQName, aAtts);
+    }
+
+    public void endElement(String aUri, String aLocalName, String aQName) throws SAXException {
+        super.endElement(aUri, aLocalName, aQName);
+    }
+
+    public InputSource resolveEntity(String aPublicId, String aSystemId) throws SAXException, IOException {
+        InputSource aRet = null;
+        String aEntity = null;
+        
+        if( aPublicId != null &&
+            (aPublicId.equals(MATHML_PUBLIC_ID) ||
+            aPublicId.equals(OOO_MATHML_PUBLIC_ID)) )
+        {
+            aEntity = m_aMathMLDTD;
+            if( InternalResources.isInternalResourceIdentifer(aEntity) )
+            {
+                String aPath = InternalResources.getResourcePath(aEntity);
+                InputStream aInStream = getClass().getResourceAsStream(aPath);
+                if( aInStream == null )
+                {
+                    m_aLogger.logFatalError("Missing internal schema file: ".concat(aPath));
+                }
+                else
+                {
+                    aRet = new InputSource( aInStream );
+                    aRet.setPublicId(aPublicId);
+                    aRet.setSystemId(aEntity);
+                }
+            }
+        }
+        else
+        {
+            aEntity = aSystemId;
+        }
+
+        String aMsg = "Reading doctype definition '" + aEntity + "'";
+        m_aLogger.logInfo( aMsg , false);
+
+        if( aRet == null )
+            aRet = new InputSource( aEntity  );
+        return aRet;
+    }
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MathML20Filter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MathML20Filter.java
new file mode 100644
index 0000000..4b4cf97
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MathML20Filter.java
@@ -0,0 +1,52 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.IOException;
+import java.io.StringReader;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+/**
+ *
+ */
+class MathML20Filter extends XMLFilterImpl {
+    
+    private Logger m_aLogger;
+    
+    /** Creates a new instance of MathMLFilter */
+    MathML20Filter( Logger aLogger) {
+        m_aLogger = aLogger;
+    }
+
+    @Override
+    public InputSource resolveEntity(String aPublicId, String aSystemId) throws SAXException, IOException {
+        // Ignore the external OOo MathML DTD
+        
+        String aMsg = "Ignoring doctype definition '" + aPublicId + "'";
+            m_aLogger.logInfo( aMsg , false);
+        return new InputSource(new StringReader(""));
+    }
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaFilter.java
new file mode 100644
index 0000000..fbbc460
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaFilter.java
@@ -0,0 +1,90 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.odftoolkit.odfdom.dom.OdfDocumentNamespace;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+class MetaFilter extends XMLFilterImpl {
+
+    private boolean m_bInGenerator = false;
+    private String m_aGenerator = "";
+    private boolean m_bRoot = true;
+    
+    private static final String META_NAMESPACE_URI = OdfDocumentNamespace.META.getUri();
+    private static final String OFFICE_NAMESPACE_URI = OdfDocumentNamespace.OFFICE.getUri();
+    private static final String GENERATOR = "generator";
+    private static final String DOCUMENT_META = "document-meta";
+
+    private Logger m_aLogger;
+    private MetaInformationListener m_aMetaListener;
+    
+    
+    /** Creates a new instance of MetaFilter */
+    MetaFilter( Logger aLogger, MetaInformationListener aMetaListener ) {
+        m_aLogger = aLogger;
+        m_aMetaListener = aMetaListener;
+    }
+    
+    @Override
+    public void characters(char[] aChars, int nStart, int nLength) throws SAXException {
+        super.characters(aChars, nStart, nLength);
+        
+        if( m_bInGenerator )
+        {
+            m_aGenerator += new String( aChars, nStart, nLength );
+        }
+    }
+
+    @Override
+    public void endElement(String aUri, String aLocalName, String aQName) throws SAXException {
+        super.endElement(aUri, aLocalName, aQName);
+        
+        if( aUri.equals(META_NAMESPACE_URI) && aLocalName.equals(GENERATOR) )
+        {
+            m_aGenerator = m_aGenerator.trim();
+            m_aLogger.logInfo( "Generator: " + m_aGenerator , false);
+            m_bInGenerator = false;
+            if( m_aMetaListener!=null ) {
+                m_aMetaListener.setGenerator( m_aGenerator );
+            }
+        }
+    }
+
+    @Override
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAttributes) throws SAXException {
+        super.startElement(aUri, aLocalName, aQName, aAttributes);
+
+        if( m_bRoot )
+        {
+            if( !(aUri.equals(OFFICE_NAMESPACE_URI) && aLocalName.equals(DOCUMENT_META)) )
+                m_aLogger.logError("Invalid root element: " + aQName );
+            m_bRoot = false;
+        }
+                
+        if( aUri.equals(META_NAMESPACE_URI) && aLocalName.equals(GENERATOR) )
+            m_bInGenerator = true;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformation.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformation.java
new file mode 100644
index 0000000..e6bc844
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformation.java
@@ -0,0 +1,100 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLFilter;
+
+
+public class MetaInformation {
+
+    private PrintStream m_aOut;
+    
+    /** Creates a new instance of Validator */
+    public MetaInformation( PrintStream aOut ) {
+        
+        m_aOut = aOut;
+    }
+
+    public void getInformation( String aDocFileName ) throws ODFValidatorException
+    {
+        try
+        {
+            OdfPackage aDocFile = OdfPackage.loadPackage( aDocFileName );
+            
+            getGenerator( aDocFile );
+        }
+        catch( Exception e )
+        {
+            throw new ODFValidatorException( aDocFileName, "", e );
+        }  
+    }
+    
+    public void getGenerator( OdfPackage aDocFile ) throws ODFValidatorException
+    {
+        try
+        {
+            InputStream aInStream = aDocFile.getInputStream(OdfPackage.OdfFile.MANIFEST.getPath(), true);
+            Logger aLogger = new Logger(aDocFile.getBaseURI(),OdfPackage.OdfFile.MANIFEST.getPath(),m_aOut, Logger.LogLevel.INFO);
+        
+            getInformation( aInStream, aLogger );
+        }
+        catch( Exception e )
+        {
+            throw new ODFValidatorException( aDocFile.getBaseURI(), "", e );
+        }  
+    }
+
+
+    
+    private void getInformation( InputStream aInStream, Logger aLogger ) throws IOException, ODFValidatorException
+    {
+        SAXParser aParser = null;
+        try
+        {
+            SAXParserFactory aParserFactory = SAXParserFactory.newInstance();
+            aParserFactory.setNamespaceAware(true);
+            aParser = aParserFactory.newSAXParser();
+
+            XMLFilter aFilter =  new MetaFilter(aLogger,null);
+            aFilter.setParent( aParser.getXMLReader() ) ;
+
+            aFilter.parse(new InputSource(aInStream));
+        }
+        catch( javax.xml.parsers.ParserConfigurationException e )
+        {
+            throw new ODFValidatorException( e );
+        }
+        catch( org.xml.sax.SAXException e )
+        {
+            throw new ODFValidatorException( e );
+        }
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformationListener.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformationListener.java
new file mode 100644
index 0000000..4f4f866
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformationListener.java
@@ -0,0 +1,29 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+interface MetaInformationListener {
+    
+    void setGenerator( String aGenerator );
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/NamespaceFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/NamespaceFilter.java
new file mode 100644
index 0000000..87df54a
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/NamespaceFilter.java
@@ -0,0 +1,94 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+abstract class NamespaceFilter extends XMLFilterImpl {
+    
+    private boolean m_bFilterNamespaceUri = false;
+
+    /** Creates a new instance of NamespaceFilter */
+    NamespaceFilter() {
+    }
+
+    abstract String adaptNamespaceUri(String aUri, String aPrefix);
+    abstract void namespaceUriAdapted(String aUri, String aNewUri);
+
+
+    public void endElement(String aUri, String aLocalName, String aQName) throws SAXException {
+        if (m_bFilterNamespaceUri)
+        {    
+            String aNewUri = adaptNamespaceUri( aUri , aQName );
+            
+            if( aNewUri != null )
+                aUri = aNewUri;
+        }
+        
+        super.endElement(aUri, aLocalName, aQName);
+    }
+
+
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAtts) throws SAXException {
+        if (m_bFilterNamespaceUri)
+        {    
+            String aNewUri = adaptNamespaceUri( aUri , aQName);
+            
+            if( aNewUri != null )
+                aUri = aNewUri;
+
+            Attributes aOldAtts = aAtts;
+            AttributesImpl aNewAtts = null;
+            for (int i = 0; i < aOldAtts.getLength(); ++i)
+            {
+                aNewUri = adaptNamespaceUri( aOldAtts.getURI(i) , aQName);
+                if (aNewUri != null)
+                {
+                    if (aNewAtts == null)
+                    {
+                        aNewAtts = new AttributesImpl(aOldAtts);
+                        aAtts = aNewAtts;
+                    }
+                    aNewAtts.setURI(i,aNewUri);
+                }
+            }
+        }
+        super.startElement(aUri, aLocalName, aQName, aAtts);
+    }
+
+
+
+    public void startPrefixMapping(String aPrefix, String aUri) throws SAXException {
+        String aNewUri = adaptNamespaceUri( aUri, aPrefix);
+        if (aNewUri != null)
+        {
+            m_bFilterNamespaceUri = true;
+            namespaceUriAdapted( aUri, aNewUri );
+        }
+        super.startPrefixMapping(aPrefix, aUri);
+    }
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileFilter.java
new file mode 100644
index 0000000..f14e657
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileFilter.java
@@ -0,0 +1,87 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.regex.Pattern;
+
+        
+public class ODFFileFilter implements FileFilter
+{
+    private boolean m_bRecursive;
+    private Pattern m_aExcludePattern = null;
+    
+    public ODFFileFilter( boolean bRecursive )
+    {
+        m_bRecursive = bRecursive;
+    }
+
+    public ODFFileFilter( String aExcludeRegExp, boolean bRecursive )
+    {
+        m_bRecursive = bRecursive;
+        if( aExcludeRegExp != null )
+            m_aExcludePattern = Pattern.compile(aExcludeRegExp);
+    }
+    
+    
+    public boolean accept(File aFile) {
+        return !exclude( aFile ) && (aFile.isDirectory() ? m_bRecursive : hasODFExtension( aFile ));
+    }
+    
+    private boolean exclude(File aFile)
+    {
+        boolean bExclude = false;
+        if( m_aExcludePattern != null )
+            bExclude = m_aExcludePattern.matcher(aFile.getAbsolutePath()).matches();
+        return bExclude;
+    }
+    
+    private boolean hasODFExtension(File aFile)
+    {
+        String aName = aFile.getName();
+        int nIndex = aName.lastIndexOf('.');
+        if (nIndex != -1 && aName.length() > nIndex+1)
+        {
+            String aExt = aName.substring(nIndex+1);
+            if( aExt.length() == 3 )
+            {
+                return aExt.equalsIgnoreCase("odt") ||
+                       aExt.equalsIgnoreCase("ods") ||
+                       aExt.equalsIgnoreCase("odg") ||
+                       aExt.equalsIgnoreCase("odp") ||
+                       aExt.equalsIgnoreCase("odf") ||
+                       aExt.equalsIgnoreCase("odc") ||
+                       aExt.equalsIgnoreCase("odb") ||
+                       aExt.equalsIgnoreCase("ott") ||
+                       aExt.equalsIgnoreCase("ots") ||
+                       aExt.equalsIgnoreCase("otg") ||
+                       aExt.equalsIgnoreCase("otp") ||
+                       aExt.equalsIgnoreCase("otf") ||
+                       aExt.equalsIgnoreCase("otc");
+            }
+        }
+        
+        return false;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileValidator.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileValidator.java
new file mode 100644
index 0000000..a45d4fc
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileValidator.java
@@ -0,0 +1,63 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.File;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.ErrorHandler;
+
+
+/**
+ * Validator for Files
+ */
+public class ODFFileValidator extends ODFRootPackageValidator {
+    
+    private File m_aFile = null;
+
+        /** Creates a new instance of ODFFileValidator */
+    public ODFFileValidator( File aFile, Logger.LogLevel nLogLevel,
+                             OdfValidatorMode eMode, OdfVersion aVersion,
+                             SAXParseExceptionFilter aFilter,
+                             ODFValidatorProvider aValidatorProvider ) throws ODFValidatorException
+    {
+        super( nLogLevel, eMode, aVersion, aFilter, aValidatorProvider );
+        m_aFile = aFile;
+    }
+
+    protected String getLoggerName()
+    {
+        return m_aFile.getAbsolutePath();
+    }
+
+    @Override
+    protected String getDocumentPath()
+    {
+        return ""; // this is the root document
+    }
+
+    protected OdfPackage getPackage(ErrorHandler handler) throws Exception
+    {
+        return OdfPackage.loadPackage(m_aFile, handler);
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFMediaTypes.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFMediaTypes.java
new file mode 100644
index 0000000..cdc09b6
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFMediaTypes.java
@@ -0,0 +1,50 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+/**
+ * abstract Base class for OpenDocument filetype classes
+ */
+public abstract class ODFMediaTypes {
+
+    public static final String TEXT_MEDIA_TYPE = "application/vnd.oasis.opendocument.text";
+    public static final String TEXT_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.text-template";
+    public static final String GRAPHICS_MEDIA_TYPE = "application/vnd.oasis.opendocument.graphics";
+    public static final String GRAPHICS_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.graphics-template";
+    public static final String PRESENTATION_MEDIA_TYPE = "application/vnd.oasis.opendocument.presentation";
+    public static final String PRESENTATION_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.presentation-template";
+    public static final String SPREADSHEET_MEDIA_TYPE = "application/vnd.oasis.opendocument.spreadsheet";
+    public static final String SPREADSHEET_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.spreadsheet-template";
+    public static final String CHART_MEDIA_TYPE = "application/vnd.oasis.opendocument.chart";
+    public static final String CHART_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.chart-template";
+    public static final String IMAGE_MEDIA_TYPE = "application/vnd.oasis.opendocument.image";
+    public static final String IMAGE_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.image-template";
+    public static final String FORMULA_MEDIA_TYPE = "application/vnd.oasis.opendocument.formula";
+    public static final String FORMULA_TEMPLATE_MEDIA_TYPE = "application/vnd.oasis.opendocument.formula-template";
+    public static final String TEXT_MASTER_MEDIA_TYPE = "application/vnd.oasis.opendocument.text-master";
+    public static final String TEXT_WEB_MEDIA_TYPE = "application/vnd.oasis.opendocument.text-web";
+
+   
+}
+
+
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java
new file mode 100644
index 0000000..56f48d7
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java
@@ -0,0 +1,146 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.odftoolkit.odfdom.pkg.OdfValidationException;
+import org.odftoolkit.odfdom.pkg.ValidationConstraint;
+import org.odftoolkit.odfdom.pkg.OdfPackageConstraint;
+import org.odftoolkit.odfdom.dom.OdfSchemaConstraint;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+class ODFPackageErrorHandler implements ErrorHandler {
+
+    List<SAXParseException> m_aExceptionList = new ArrayList<SAXParseException>();
+
+    ODFPackageErrorHandler()
+    {
+    }
+
+    public void warning(SAXParseException exception) throws SAXException {
+        m_aExceptionList.add(exception);
+    }
+
+    public void error(SAXParseException exception) throws SAXException {
+        m_aExceptionList.add(exception);
+    }
+
+    public void fatalError(SAXParseException exception) throws SAXException {
+        m_aExceptionList.add(exception);
+        throw exception;
+    }
+
+    /// deferred because aVersion is not available when odfdom checks mimetype
+    /// @returns true iff there was an error and package is not valid
+    boolean processErrors( Logger aPkgLogger, Logger aManifestLogger,
+                           Logger aMimetypeLogger,OdfVersion aVersion)
+    {
+        boolean bRet = false;
+        for (SAXParseException e : m_aExceptionList)
+        {
+            if (e instanceof OdfValidationException)
+            {
+                ValidationConstraint aConstraint =
+                    ((OdfValidationException) e).getConstraint();
+                if (aConstraint instanceof OdfPackageConstraint)
+                {
+                    switch (((OdfPackageConstraint) aConstraint))
+                    {
+                        case MANIFEST_DOES_NOT_LIST_FILE:
+                            switch (aVersion)
+                            {
+                                case V1_0:
+                                case V1_1:
+                                    aManifestLogger.logWarning(e.getMessage());
+                                    break;
+                                default:
+                                    aManifestLogger.logError(e.getMessage());
+                                    bRet = true;
+                                    break;
+                            }
+                            break;
+                        case MIMETYPE_NOT_FIRST_IN_PACKAGE:
+                        case MIMETYPE_NOT_IN_PACKAGE:
+                            switch (aVersion)
+                            {
+                                case V1_0:
+                                case V1_1:
+                                    aMimetypeLogger.logWarning(e.getMessage());
+                                    break;
+                                default:
+                                    aMimetypeLogger.logError(e.getMessage());
+                                    bRet = true;
+                                    break;
+                            }
+                            break;
+                        case MANIFEST_NOT_IN_PACKAGE:
+                        case MANIFEST_LISTS_NONEXISTENT_FILE:
+                            aManifestLogger.logError(e.getMessage());
+                            bRet = true;
+                            break;
+                        case MIMETYPE_IS_COMPRESSED:
+                        case MIMETYPE_HAS_EXTRA_FIELD:
+                        case MIMETYPE_DIFFERS_FROM_PACKAGE:
+                            aMimetypeLogger.logError(e.getMessage());
+                            bRet = true;
+                            break;
+                        case MANIFEST_LISTS_DIRECTORY:
+                        case MANIFEST_DOES_NOT_LIST_DIRECTORY:
+                            aManifestLogger.logWarning(e.getMessage());
+                            break;
+                        default:
+                            aPkgLogger.logError(e); // unknown aConstraint: assume error
+                            bRet = true;
+                            break;
+                    }
+                } 
+                else if (aConstraint instanceof OdfSchemaConstraint)
+                {
+                    switch (((OdfSchemaConstraint) aConstraint))
+                    {
+                        case DOCUMENT_WITHOUT_ODF_MIMETYPE:
+                        case DOCUMENT_WITHOUT_CONTENT_NOR_STYLES_XML:
+                            aPkgLogger.logError(e.getMessage());
+                            bRet = true;
+                            break;
+                        default:
+                            aPkgLogger.logError(e); // unknown aConstraint: assume error
+                            bRet = true;
+                            break;
+                    }
+                }
+            }
+            else
+            {
+                aPkgLogger.logError(e); // unknown aConstraint: assume error
+                bRet = true;
+            }
+        }
+
+        m_aExceptionList.clear();
+        return bRet;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java
new file mode 100644
index 0000000..86d10c4
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java
@@ -0,0 +1,435 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.zip.ZipException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.validation.Validator;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.manifest.EncryptionDataElement;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLFilter;
+import org.xml.sax.XMLReader;
+
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Validator for Files
+ */
+abstract class ODFPackageValidator {
+
+	static final String DOCUMENT_SETTINGS = "document-settings";
+	static final String DOCUMENT_STYLES = "document-styles";
+	static final String DOCUMENT_CONTENT = "document-content";
+	protected Logger.LogLevel m_nLogLevel;
+	protected OdfValidatorMode m_eMode = OdfValidatorMode.CONFORMANCE;
+	protected SAXParseExceptionFilter m_aFilter = null;
+	protected ODFValidatorProvider m_aValidatorProvider = null;
+	protected ODFValidationResult m_aResult = null;
+	protected OdfVersion m_aConfigVersion = null;
+	private SAXParserFactory m_aSAXParserFactory = null;
+	protected OdfVersion mOdfPackageVersion = null;
+
+	protected ODFPackageValidator(Logger.LogLevel nLogLevel, OdfValidatorMode eMode, OdfVersion aVersion,
+			SAXParseExceptionFilter aFilter, ODFValidatorProvider aValidatorProvider) {
+		m_nLogLevel = nLogLevel;
+		m_eMode = eMode;
+		m_aFilter = aFilter;
+		m_aValidatorProvider = aValidatorProvider;
+		m_aConfigVersion = aVersion;
+		m_aResult = new ODFValidationResult(aVersion, eMode);
+	}
+
+	protected abstract String getLoggerName();
+
+	protected abstract String getDocumentPath();
+
+	protected abstract OdfPackage getPackage(Logger aLogger);
+
+	protected abstract String getStreamName(String aEntry);
+
+	protected boolean validate(PrintStream aOut) throws ODFValidatorException {
+		Logger aLogger =
+				new Logger(getLoggerName(), getDocumentPath(), aOut, m_nLogLevel);
+		return _validate(aLogger);
+	}
+
+	protected boolean validate(Logger aParentLogger) throws ODFValidatorException {
+		Logger aLogger =
+				new Logger(getDocumentPath(), aParentLogger);
+		return _validate(aLogger);
+	}
+
+	
+	OdfVersion getOdfPackageVersion(){
+		return mOdfPackageVersion;
+	}
+	
+	private boolean _validate(Logger aLogger) throws ODFValidatorException {
+		boolean bHasErrors = false;
+
+		OdfPackage aPkg = getPackage(aLogger);
+		if (aPkg == null) {
+			return true;
+		}
+
+		try {
+			String aDocVersion = getVersion(aLogger);
+			if (aDocVersion != null) {
+				aLogger.logInfo("ODF version of root document: " + aDocVersion, false);
+				mOdfPackageVersion = OdfVersion.valueOf(aDocVersion, true);
+			}
+			OdfVersion aVersion = m_aConfigVersion == null ? OdfVersion.valueOf(aDocVersion, true) : m_aConfigVersion;
+
+			bHasErrors |= validatePre(aLogger, aVersion);
+			aLogger.logInfo("Media Type: " + m_aResult.getMediaType(), false);
+
+			bHasErrors |= validateMeta(aLogger, getStreamName(OdfDocument.OdfXMLFile.META.getFileName()), aVersion, true);
+			bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.SETTINGS.getFileName()), DOCUMENT_SETTINGS, aVersion);
+			bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.STYLES.getFileName()), DOCUMENT_STYLES, aVersion);
+			if (m_aResult.getMediaType().equals(ODFMediaTypes.FORMULA_MEDIA_TYPE)) {
+				bHasErrors |= validateMathML(aLogger, getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), aVersion);
+			} else {
+				bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), DOCUMENT_CONTENT, aVersion);
+			}
+			bHasErrors |= validatePost(aLogger, aVersion);
+		} catch (ZipException e) {
+			aLogger.logFatalError(e.getMessage());
+		} catch (IOException e) {
+			aLogger.logFatalError(e.getMessage());
+		}
+
+		logSummary(bHasErrors, aLogger);
+
+		return bHasErrors || aLogger.hasError();
+	}
+
+	protected boolean validatePre(Logger aLogger, OdfVersion aVersion) throws ODFValidatorException, IOException {
+		return false;
+	}
+
+	protected boolean validatePost(Logger aLogger, OdfVersion aVersion) throws ODFValidatorException, IOException {
+		return false;
+	}
+
+	protected void logSummary(boolean bHasErrors, Logger aLogger) {
+	}
+
+	protected boolean validateEntry(Logger aParentLogger, String aEntryName, String aLocalElementName, OdfVersion aVersion) throws IOException, ZipException, IllegalStateException, ODFValidatorException {
+		Logger aLogger = new Logger(aEntryName, aParentLogger);
+		XMLFilter aFilter = new ContentFilter(aLogger, aLocalElementName);
+		if ((m_eMode == OdfValidatorMode.CONFORMANCE && aVersion.compareTo(OdfVersion.V1_1) <= 0)
+				|| m_eMode == OdfValidatorMode.EXTENDED_CONFORMANCE) {
+			XMLFilter aAlienFilter = new ForeignContentFilter(aLogger, aVersion, m_aResult);
+			aAlienFilter.setParent(aFilter);
+			aFilter = aAlienFilter;
+		}
+		Validator aValidator = null;
+		if (m_eMode == OdfValidatorMode.VALIDATE_STRICT) {
+			aValidator = m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion);
+		} else {
+			aValidator = m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(), aVersion);
+		}
+//		Validator aValidator = m_eMode == OdfValidatorMode.VALIDATE_STRICT ? m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion)
+//				: m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(), aVersion);
+		return validateEntry(aFilter, aValidator, aLogger, aEntryName);
+	}
+
+	private boolean validateMeta(Logger aParentLogger, String aEntryName, OdfVersion aVersion, boolean bIsRoot) throws IOException, ZipException, IllegalStateException, ODFValidatorException {
+		Logger aLogger = new Logger(aEntryName, aParentLogger);
+		XMLFilter aFilter = new MetaFilter(aLogger, m_aResult);
+		if ((m_eMode == OdfValidatorMode.CONFORMANCE && aVersion.compareTo(OdfVersion.V1_1) <= 0)
+				|| m_eMode == OdfValidatorMode.EXTENDED_CONFORMANCE) {
+			XMLFilter aAlienFilter = new ForeignContentFilter(aLogger, aVersion, m_aResult);
+			aAlienFilter.setParent(aFilter);
+			aFilter = aAlienFilter;
+		}
+
+		Validator aValidator = null;
+		if (m_eMode == OdfValidatorMode.VALIDATE_STRICT) {
+			aValidator = m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion);
+		} else {
+			aValidator = m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(), aVersion);
+		}
+		return validateEntry(aFilter, aValidator, aLogger, aEntryName);
+	}
+
+	private boolean validateMathML(Logger aParentLogger, String aEntryName, OdfVersion aVersion) throws IOException, ZipException, IllegalStateException, ODFValidatorException {
+		Logger aLogger = new Logger(aEntryName, aParentLogger);
+		String aMathMLDTDSystemId = m_aValidatorProvider.getMathMLDTDSystemId(aVersion);
+		if (aMathMLDTDSystemId != null) {
+			// validate using DTD
+			return parseEntry(new MathML101Filter(aMathMLDTDSystemId, aLogger), aLogger, aEntryName, true);
+		} else {
+			Validator aMathMLValidator = m_aValidatorProvider.getMathMLValidator(aParentLogger.getOutputStream(), null);
+			if (aMathMLValidator == null) {
+				aLogger.logInfo("MathML schema is not available. Validation has been skipped.", false);
+				return false;
+			}
+			return validateEntry(new MathML20Filter(aLogger), aMathMLValidator, aLogger, aEntryName);
+		}
+	}
+
+	protected boolean validateDSig(Logger aParentLogger, String aEntryName, OdfVersion aVersion) throws IOException, ZipException, IllegalStateException, ODFValidatorException {
+		Validator aValidator = m_aValidatorProvider.getDSigValidator(aParentLogger.getOutputStream(), aVersion);
+		Logger aLogger = new Logger(aEntryName, aParentLogger);
+		if (aValidator == null) {
+			aLogger.logWarning("Signature not validated because there is no Signature Validator configured for the selected Configuration");
+			return false;
+		}
+
+		return validateEntry(new DSigFilter(aLogger), aValidator, aLogger, aEntryName);
+	}
+
+	protected boolean validateEntry(XMLFilter aFilter,
+			Validator aValidator, Logger aLogger,
+			String aEntryName) throws IOException, ZipException, IllegalStateException, ODFValidatorException {
+		OdfPackage aPkg = getPackage(aLogger);
+
+		if (!aEntryName.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && isEncrypted(aEntryName, aLogger)) {
+			return false;
+		}
+
+		InputStream aInStream = null;
+		try {
+			aInStream = aPkg.getInputStream(aEntryName, true);
+		} catch (Exception e) {
+			throw new ODFValidatorException(e);
+		}
+
+
+		if (aValidator == null) {
+
+			aLogger.logWarning("no Validator configured in selected Configuration for this file type");
+			return false;
+		}
+
+
+
+		return aInStream != null ? validate(aInStream, aFilter, aValidator, aLogger) : false;
+	}
+
+	private boolean validate(InputStream aInStream,
+			XMLFilter aFilter,
+			javax.xml.validation.Validator aValidator,
+			Logger aLogger) throws ODFValidatorException {
+		SAXParser aParser = getSAXParser(false);
+		SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, m_aFilter);
+
+		try {
+			XMLReader aReader;
+			if (aFilter != null) {
+				XMLReader aParent = aFilter.getParent();
+				if (aParent != null) {
+					((XMLFilter) aParent).setParent(aParser.getXMLReader());
+				} else {
+					aFilter.setParent(aParser.getXMLReader());
+				}
+				aReader = aFilter;
+			} else {
+				aReader = aParser.getXMLReader();
+			}
+
+			if (m_aFilter != null) {
+				m_aFilter.startSubFile();
+			}
+			aValidator.setErrorHandler(aErrorHandler);
+			try {
+				aValidator.validate(new SAXSource(aReader,
+						new InputSource(aInStream)));
+			} catch (RuntimeException e) {
+				aLogger.logFatalError(e.getMessage());
+				m_aValidatorProvider.resetValidatorProvider();
+			}
+		} catch (org.xml.sax.SAXParseException e) {
+			aErrorHandler.fatalErrorNoException(e);
+		} catch (org.xml.sax.SAXException e) {
+			aLogger.logFatalError(e.getMessage());
+		} catch (IOException e) {
+			aLogger.logFatalError(e.getMessage());
+		}
+
+		aLogger.logSummaryInfo();
+		if (m_aResult.hasForeignElements()) {
+			Set<String> aForeignElementURISet = m_aResult.getForeignElements().keySet();
+			StringBuilder aBuffer = new StringBuilder();
+			Iterator<String> aIter = aForeignElementURISet.iterator();
+			boolean bFirst = true;
+			while (aIter.hasNext()) {
+				String aURI = aIter.next();
+				aBuffer.setLength(0);
+				aBuffer.append(m_aResult.getForeignElements().get(aURI));
+				aBuffer.append(" extension elements from the following namespace were found: ");
+				aBuffer.append(aURI);
+				aLogger.logInfo(aBuffer.toString(), false);
+			}
+		}
+		if (m_aResult.hasForeignAttributes()) {
+			Set<String> aForeignAttributeURISet = m_aResult.getForeignAttributes().keySet();
+			Iterator<String> aIter = aForeignAttributeURISet.iterator();
+			StringBuilder aBuffer = new StringBuilder();
+			while (aIter.hasNext()) {
+				String aURI = aIter.next();
+				aBuffer.setLength(0);
+				aBuffer.append(m_aResult.getForeignAttributes().get(aURI));
+				aBuffer.append(" extension attributes from the following namespace were found: ");
+				aBuffer.append(aURI);
+				aLogger.logInfo(aBuffer.toString(), false);
+			}
+		}
+		return aLogger.hasError();
+	}
+
+	protected boolean parseEntry(XMLFilter aFilter,
+			Logger aLogger,
+			String aEntryName, boolean bValidating) throws IOException, ZipException, IllegalStateException, ODFValidatorException {
+		OdfPackage aPkg = getPackage(aLogger);
+
+		if (isEncrypted(aEntryName, aLogger)) {
+			return false;
+		}
+
+		InputStream aInStream = null;
+		try {
+			aInStream = getPackage(aLogger).getInputStream(aEntryName, true);
+		} catch (Exception e) {
+			throw new ODFValidatorException(e);
+		}
+
+		return aInStream != null ? parse(aInStream, aFilter, bValidating, aLogger) : false;
+	}
+
+	private boolean parse(InputStream aInStream, XMLFilter aFilter, boolean bValidating, Logger aLogger) throws ODFValidatorException {
+		SAXParser aParser = getSAXParser(bValidating);
+		SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, m_aFilter);
+
+		try {
+			XMLReader aReader;
+			if (aFilter != null) {
+				aFilter.setParent(aParser.getXMLReader());
+				aReader = aFilter;
+			} else {
+				aReader = aParser.getXMLReader();
+			}
+			if (m_aFilter != null) {
+				m_aFilter.startSubFile();
+			}
+			aReader.setErrorHandler(aErrorHandler);
+			aReader.parse(new InputSource(aInStream));
+		} catch (org.xml.sax.SAXParseException e) {
+			aErrorHandler.fatalErrorNoException(e);
+		} catch (org.xml.sax.SAXException e) {
+			aLogger.logFatalError(e.getMessage());
+		} catch (IOException e) {
+			aLogger.logFatalError(e.getMessage());
+		}
+
+		if (bValidating) {
+			aLogger.logSummaryInfo();
+		}
+		return aLogger.hasError();
+	}
+
+	private boolean isEncrypted(String aEntryName, Logger aLogger) {
+		OdfFileEntry aFileEntry = getPackage(aLogger).getFileEntry(aEntryName);
+		if (aFileEntry != null) {
+			EncryptionDataElement aEncData = aFileEntry.getEncryptionData();
+			if (aEncData != null) {
+				aLogger.logFatalError("stream content is encrypted. Validataion of encrypted content is not supported.");
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private SAXParser getSAXParser(boolean bValidating) throws ODFValidatorException {
+		SAXParser aParser = null;
+		if (m_aSAXParserFactory == null) {
+			m_aSAXParserFactory = SAXParserFactory.newInstance();
+			m_aSAXParserFactory.setNamespaceAware(true);
+		}
+
+		try {
+			m_aSAXParserFactory.setValidating(bValidating);
+			aParser = m_aSAXParserFactory.newSAXParser();
+		} catch (javax.xml.parsers.ParserConfigurationException e) {
+			throw new ODFValidatorException(e);
+		} catch (org.xml.sax.SAXException e) {
+			throw new ODFValidatorException(e);
+		}
+
+		return aParser;
+	}
+
+	/**
+	 * get the generator
+	 */
+	public String getGenerator() {
+		return m_aResult.getGenerator();
+	}
+
+	private String getVersion(Logger aLogger) throws ODFValidatorException {
+		String aVersion = null;
+
+		InputStream aInStream = null;
+		try {
+			OdfPackage aPkg = getPackage(aLogger);
+			aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.META.getFileName()), true);
+			if (aInStream == null) {
+				aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.SETTINGS.getFileName()), true);
+			}
+			if (aInStream == null) {
+				aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), true);
+			}
+			if (aInStream == null) {
+				return null;
+			}
+		} catch (Exception e) {
+			aLogger.logFatalError(e.getMessage());
+		}
+
+		SAXParser aParser = getSAXParser(false);
+
+		DefaultHandler aHandler = new VersionHandler();
+
+		try {
+			aParser.parse(aInStream, aHandler);
+		} catch (SAXVersionException e) {
+			aVersion = e.getVersion();
+		} catch (org.xml.sax.SAXException e) {
+			aLogger.logFatalError(e.getMessage());
+		} catch (IOException e) {
+			aLogger.logFatalError(e.getMessage());
+		}
+
+		return aVersion;
+	}
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java
new file mode 100644
index 0000000..34ba5bd
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java
@@ -0,0 +1,192 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.zip.ZipException;
+import javax.xml.validation.Validator;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.doc.OdfDocument;
+import org.xml.sax.ErrorHandler;
+
+abstract class ODFRootPackageValidator extends ODFPackageValidator implements ManifestEntryListener {
+
+    private OdfPackage m_aPkg = null;
+    private ArrayList<ManifestEntry> m_aSubDocs = null;
+    private ODFPackageErrorHandler m_ErrorHandler = null;
+
+    protected ODFRootPackageValidator(Logger.LogLevel nLogLevel, OdfValidatorMode eMode, OdfVersion aVersion, SAXParseExceptionFilter aFilter, ODFValidatorProvider aValidatorProvider) {
+        super(nLogLevel, eMode, aVersion, aFilter, aValidatorProvider);
+    }
+
+    protected abstract OdfPackage getPackage(ErrorHandler handler) throws Exception;
+
+    protected OdfPackage getPackage(Logger aLogger) {
+        if (m_aPkg == null) {
+            try {
+                m_ErrorHandler = new ODFPackageErrorHandler();
+                m_aPkg = getPackage(m_ErrorHandler);
+                // for additional mimetype checking, load root document
+                try {
+                    OdfDocument.loadDocument(m_aPkg, "");
+                } catch (Exception e) {
+                    // ignore -- the interesting stuff is passed to handler
+                }
+            } catch (IOException e) {
+                if (e.getMessage().startsWith("only DEFLATED entries can have EXT descriptor")) {
+                    aLogger.logFatalError("The document is encrypted. Validation of encrypted documents is not supported.");
+                } else {
+                    aLogger.logFatalError(e.getMessage());
+                }
+            } catch (Exception e) {
+                aLogger.logFatalError(e.getMessage());
+            }
+        }
+
+        return m_aPkg;
+    }
+
+    protected String getStreamName( String aEntry )
+    {
+        return aEntry;
+    }
+
+    @Override
+    protected boolean validatePre(Logger aLogger, OdfVersion aVersion ) throws ODFValidatorException, IOException
+    {
+        Logger aManifestLogger = new Logger(OdfPackage.OdfFile.MANIFEST.getPath(),aLogger);
+        Logger aMimetypeLogger = new Logger("mimetype",aLogger);
+
+        // UGLY: do something that causes ODFDOM to parse the manifest, which
+        // may cause m_ErrorHandler to be called
+        m_aPkg.getFilePaths();
+        // hack: just create logger again, too lazy to create a Pair class
+        // and return it from validateMimetype...
+        boolean bErrorsFound = m_ErrorHandler.processErrors( aLogger, aManifestLogger,
+                                              aMimetypeLogger, aVersion);
+
+        bErrorsFound |= validateMimetype(aMimetypeLogger, aVersion);
+        bErrorsFound |= validateManifest(aManifestLogger, aVersion  );
+        aMimetypeLogger.logSummaryInfo();
+
+        return bErrorsFound;
+    }
+
+    @Override
+    protected boolean validatePost(Logger aLogger,OdfVersion aVersion ) throws ODFValidatorException, IOException
+    {
+        boolean bHasErrors = false;
+        if(m_aSubDocs != null )
+        {
+            Iterator<ManifestEntry> aIter = m_aSubDocs.iterator();
+            while( aIter.hasNext() )
+            {
+                ManifestEntry aEntry = aIter.next();
+                ODFPackageValidator aPackageValidator =
+                    new ODFSubPackageValidator( getPackage(aLogger), getLoggerName(), aEntry.getFullPath(), aEntry.getMediaType(),
+                                                  m_nLogLevel, m_eMode, m_aConfigVersion, m_aFilter, m_aResult.getGenerator(), m_aValidatorProvider );
+                bHasErrors |= aPackageValidator.validate(aLogger);
+            }
+        }
+
+        if( aVersion.compareTo(OdfVersion.V1_2) >= 0 )
+        {
+            bHasErrors |= validateDSig( aLogger, OdfPackageExt.STREAMNAME_DOCUMENT_SIGNATURES, aVersion );
+            bHasErrors |= validateDSig( aLogger, OdfPackageExt.STREAMNAME_MACRO_SIGNATURES, aVersion );
+        }
+
+        return bHasErrors;
+    }
+
+    @Override
+    protected void logSummary( boolean bHasErrors, Logger aLogger )
+    {
+        aLogger.logSummaryInfo();
+        if( (bHasErrors || aLogger.hasError()) && m_nLogLevel.compareTo(Logger.LogLevel.INFO) < 0  )
+            aLogger.logInfo( "Generator: " + m_aResult.getGenerator() , true );
+    }
+
+
+    public void foundManifestEntry( ManifestEntry aManifestEntry )
+    {
+        if( aManifestEntry.isOpenDocumentMediaType() )
+        {
+            if( m_aSubDocs == null )
+                m_aSubDocs = new ArrayList<ManifestEntry>();
+            m_aSubDocs.add( aManifestEntry );
+        }
+    }
+
+    private boolean validateMimetype(Logger aLogger, OdfVersion aVersion)
+    {
+        boolean bHasErrors = false;
+
+        String aMimetype=getPackage(aLogger).getMediaTypeString();
+        if( (aMimetype == null) || aMimetype.length() == 0 ) {
+            aLogger.logFatalError("file is not a zip file, or has no mimetype.");
+            bHasErrors = true;
+        } else if(
+            ! (aMimetype.equals(ODFMediaTypes.TEXT_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.TEXT_TEMPLATE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.GRAPHICS_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.GRAPHICS_TEMPLATE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.PRESENTATION_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.SPREADSHEET_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.SPREADSHEET_TEMPLATE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.CHART_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.CHART_TEMPLATE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.IMAGE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.IMAGE_TEMPLATE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.FORMULA_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.FORMULA_TEMPLATE_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.TEXT_MASTER_MEDIA_TYPE)
+            || aMimetype.equals(ODFMediaTypes.TEXT_WEB_MEDIA_TYPE) ) )
+        {
+                aLogger.logInfo("mimetype is not an ODFMediaTypes mimetype.",false);
+                bHasErrors = true;
+        }
+
+        return bHasErrors;
+    }
+
+    private boolean validateManifest(Logger aLogger, OdfVersion aVersion ) throws IOException, ZipException, IllegalStateException, ODFValidatorException
+    {
+        boolean bRet;
+        ManifestFilter aFilter = new ManifestFilter(aLogger, m_aResult, this);
+        Validator aManifestValidator = m_aValidatorProvider.getManifestValidator(aLogger.getOutputStream(),aVersion);
+        if( aManifestValidator != null )
+        {
+            bRet = validateEntry(aFilter,
+                         aManifestValidator, aLogger, OdfPackage.OdfFile.MANIFEST.getPath() );
+        }
+        else
+        {
+            aLogger.logInfo( "Validation of " + OdfPackage.OdfFile.MANIFEST.getPath() + " skipped.", false);
+            bRet = parseEntry(aFilter, aLogger, OdfPackage.OdfFile.MANIFEST.getPath() , false);
+        }
+        return bRet;
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFStreamValidator.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFStreamValidator.java
new file mode 100644
index 0000000..1264c0f
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFStreamValidator.java
@@ -0,0 +1,68 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.InputStream;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.xml.sax.ErrorHandler;
+
+
+/**
+ * Validator for Streams
+ */
+public class ODFStreamValidator extends ODFRootPackageValidator {
+
+    private InputStream m_aInputStream = null;
+    private String m_aBaseURI = null;
+
+    ODFStreamValidator(InputStream aInputStream,
+                              String aBaseURI,
+                              Logger.LogLevel nLogLevel,
+                              OdfValidatorMode eMode,
+                              OdfVersion aVersion,
+                              SAXParseExceptionFilter aFilter,
+                              ODFValidatorProvider aValidatorProvider ) 
+        
+        throws ODFValidatorException {
+        super(nLogLevel, eMode, aVersion, aFilter, aValidatorProvider );
+        
+        m_aInputStream=aInputStream;
+        m_aBaseURI=aBaseURI;
+    }
+
+    protected OdfPackage getPackage(ErrorHandler handler) throws Exception
+    {
+        return OdfPackage.loadPackage(m_aInputStream, m_aBaseURI, handler);
+    }
+    
+    protected String getLoggerName() {
+        return m_aBaseURI;
+    }
+
+    protected @Override
+    String getDocumentPath()
+    {
+        return ""; // this is the root document
+    }
+
+};
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java
new file mode 100644
index 0000000..0627618
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java
@@ -0,0 +1,69 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+
+
+class ODFSubPackageValidator extends ODFPackageValidator {
+
+    private OdfPackage m_aPkg = null;
+    // this is the URI of the root package, not this subpackage!
+    private String m_aBaseURI = null;
+    private String m_aSubEntryName = null;
+
+    ODFSubPackageValidator( OdfPackage aPkg, String aBaseURI, String aSubEntryName, String aMediaType,
+                             Logger.LogLevel nLogLevel, OdfValidatorMode eMode, OdfVersion aVersion,
+                             SAXParseExceptionFilter aFilter, String aParentGenerator,
+                             ODFValidatorProvider aValidatorProvider ) throws ODFValidatorException
+    {
+        super( nLogLevel, eMode, aVersion, aFilter, aValidatorProvider);
+        m_aPkg = aPkg;
+        m_aBaseURI = aBaseURI;
+        m_aSubEntryName = aSubEntryName;
+        m_aResult.setMediaType(aMediaType);
+        if( aFilter != null )
+            aFilter.startPackage(aParentGenerator);  // take build id from main document as default (embedded objects can nevern be newer)
+    }
+
+    @Override
+    protected String getLoggerName() {
+        return m_aBaseURI;
+    }
+
+    @Override
+    protected String getDocumentPath() {
+        return m_aSubEntryName;
+    }
+
+    protected OdfPackage getPackage( Logger aLogger ) 
+    {
+        return m_aPkg;
+    }
+
+    protected String getStreamName( String aEntry )
+    {
+        return m_aSubEntryName + aEntry;
+    }
+    
+};
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidationResult.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidationResult.java
new file mode 100644
index 0000000..ca2a2b6
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidationResult.java
@@ -0,0 +1,135 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.xml.sax.Attributes;
+
+public class ODFValidationResult implements ManifestListener, MetaInformationListener, ForeignContentListener
+{
+    public enum Status
+    {
+        /**
+         * The document is non conforming to a particular conformance level.
+         */
+        NON_CONFORMING,
+        /**
+         * The document is conforming to a particular conformance level.
+         */
+        CONFORMING,
+        /**
+         * It is unknown whether the document conforms to a particular level.
+         */
+        UNKNOWN,
+        /**
+         * The conformance level is not applicable to the specified file.
+         */
+        NOT_APPLICABLE
+    }
+
+    private String m_aGenerator = null;
+    private String m_aMediaType = "";
+
+    private HashMap<String,Long> m_aForeignElementMap = null;
+    private HashMap<String,Long> m_aForeignAttributeMap = null;
+
+    private Status m_aStrictValid = Status.UNKNOWN;
+    private Status m_aValid = Status.UNKNOWN;
+    private Status m_aConforming = Status.UNKNOWN;
+    private Status m_aExtendedConforming = Status.UNKNOWN;
+
+    private OdfVersion m_aVersion = null;
+    private OdfValidatorMode m_eMode = null;
+
+    ODFValidationResult( OdfVersion aVersion, OdfValidatorMode eMode )
+    {
+        m_aVersion = aVersion;
+        m_eMode = eMode;
+    }
+
+
+    public void setGenerator(String aGenerator)
+    {
+        m_aGenerator = aGenerator;
+    }
+
+    public void setMediaType(String aMediaType)
+    {
+        m_aMediaType = aMediaType;
+    }
+
+    public void foreignElementDetected(String aUri, String aLocalName, String aQName, Attributes aAtts)
+    {
+        if( m_aForeignElementMap == null )
+            m_aForeignElementMap = new HashMap<String,Long>();
+
+        Long aCount = m_aForeignElementMap.get(aUri);
+        if( aCount == null )
+            aCount = Long.valueOf(0);
+        m_aForeignElementMap.put(aUri, aCount+1);
+    }
+
+    public void foreignAttributeDetected(String aUri, String aLocalName, String aQName, String aValue)
+    {
+        if( m_aForeignAttributeMap == null )
+            m_aForeignAttributeMap = new HashMap<String,Long>();
+
+        Long aCount = m_aForeignAttributeMap.get(aUri);
+        if( aCount == null )
+            aCount = Long.valueOf(0);
+        m_aForeignAttributeMap.put(aUri, aCount+1);
+    }
+
+
+    public String getGenerator()
+    {
+        return m_aGenerator;
+    }
+
+    public String getMediaType()
+    {
+        return m_aMediaType;
+    }
+
+    public boolean hasForeignElements()
+    {
+        return m_aForeignElementMap != null;
+    }
+
+    public Map<String,Long> getForeignElements()
+    {
+        return m_aForeignElementMap;
+    }
+
+    public boolean hasForeignAttributes()
+    {
+        return m_aForeignAttributeMap != null;
+    }
+
+    public Map<String,Long> getForeignAttributes()
+    {
+        return m_aForeignAttributeMap;
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java
new file mode 100644
index 0000000..0d7ddcd
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java
@@ -0,0 +1,372 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import javax.xml.XMLConstants;
+
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Validator;
+
+public class ODFValidator implements ODFValidatorProvider {
+
+	// Prefix used to distinguish internal resources from external ones
+	// Loglevel
+	private Logger.LogLevel m_nLogLevel;
+	// Validator provider
+	private SchemaFactory m_aRNGSchemaFactory = null;
+	private SchemaFactory m_aXSDSchemaFactory = null;
+	// User provided Configuration
+	protected Configuration m_aConfig = null;
+	// User provided ODF version
+	protected OdfVersion m_aVersion = null;
+	protected OdfVersion mOdfPackageVersion = null;
+	// User provided preference for using Math DTD
+	protected boolean m_bUseMathDTD = false;
+	// Validatore and configuration cache
+	private HashMap<String, Schema> m_aSchemaMap = null;
+	private HashMap<OdfVersion, Configuration> m_aConfigurationMap = null;
+	// Generator from last validateFile or validateStream call
+	private String m_aGenerator = "";
+
+	/** Creates a new instance of Validator */
+	public ODFValidator(Configuration aConfig,
+			Logger.LogLevel nLogLevel,
+			OdfVersion aVersion,
+			boolean bUseMathDTD) throws ODFValidatorException {
+
+		m_nLogLevel = nLogLevel;
+		m_aConfig = aConfig;
+		m_aVersion = aVersion;
+		m_bUseMathDTD = bUseMathDTD;
+		Logger.enableHTML(false);
+	}
+
+	/** Creates a new instance of Validator */
+	public ODFValidator(Configuration aConfig,
+			Logger.LogLevel nLogLevel,
+			boolean logAsHTML,
+			OdfVersion aVersion,
+			boolean bUseMathDTD) throws ODFValidatorException {
+
+		m_nLogLevel = nLogLevel;
+		m_aConfig = aConfig;
+		m_aVersion = aVersion;
+		m_bUseMathDTD = bUseMathDTD;
+		Logger.enableHTML(logAsHTML);
+
+	}
+
+	/** Returns either the ODF version request to validate or the ODF version of the root document as fall-back */
+	public String getOdfVersion() {
+		String version = null;
+		if (m_aVersion != null) {
+			version = m_aVersion.toString();
+		} else {
+			version = mOdfPackageVersion.toString();
+		}
+		return version;
+	}
+
+	public boolean validate(PrintStream aOut, Configuration aConfig, OdfValidatorMode eMode) throws ODFValidatorException {
+		List<String> aFileNames = aConfig.getListPropety(Configuration.PATH);
+		String aExcludeRegExp = aConfig.getProperty(Configuration.EXCLUDE);
+		String aRecursive = aConfig.getProperty(Configuration.RECURSIVE);
+		boolean bRecursive = aRecursive != null ? Boolean.valueOf(aRecursive) : false;
+		String aFilterFileName = aConfig.getProperty(Configuration.FILTER);
+
+		return validate(aOut, aFileNames, aExcludeRegExp, eMode, bRecursive, aFilterFileName);
+	}
+
+	public boolean validate(PrintStream aOut, List<String> aFileNames, String aExcludeRegExp,
+			OdfValidatorMode eMode, boolean bRecursive,
+			String aFilterFileName) throws ODFValidatorException {
+		boolean bRet = false;
+
+		SAXParseExceptionFilter aFilter = null;
+		if (aFilterFileName != null && aFilterFileName.length() != 0) {
+			aFilter = new ValidationOOoTaskIdErrorFilter(new File(aFilterFileName), aOut);
+		}
+
+		FileFilter aFileFilter = new ODFFileFilter(aExcludeRegExp, bRecursive);
+
+		Iterator<String> aIter = aFileNames.iterator();
+		while (aIter.hasNext()) {
+			File aFile = new File(aIter.next());
+			bRet |= aFile.isDirectory() ? validateDir(aOut, aFile, aFileFilter, eMode, aFilter)
+					: validateFile(aOut, aFile, eMode, aFilter);
+		}
+
+		return bRet;
+	}
+
+	public boolean validate(PrintStream aOut, InputStream aInputStream, String aBaseURI,
+			OdfValidatorMode eMode,
+			SAXParseExceptionFilter aFilter) throws ODFValidatorException {
+		return validateStream(aOut, aInputStream, aBaseURI, eMode, aFilter);
+	}
+
+	private boolean validateDir(PrintStream aOut, final File aDir, FileFilter aFileFilter, OdfValidatorMode eMode, SAXParseExceptionFilter aFilter) throws ODFValidatorException {
+		boolean bRet = true;
+		File[] aFiles = aDir.listFiles(aFileFilter);
+
+		if (aFiles != null) {
+			for (int i = 0; i < aFiles.length; ++i) {
+				File aFile = aFiles[i];
+				if (aFile.isDirectory()) {
+					bRet |= validateDir(aOut, aFile, aFileFilter, eMode, aFilter);
+				} else {
+					bRet |= validateFile(aOut, aFile, eMode, aFilter);
+				}
+			}
+		}
+		return bRet;
+	}
+
+	/**
+	 * validate the input File
+	 *
+	 * <p>After validation the getGenerator method can be called to get the generator of the validated file</p>
+	 */
+	public boolean validateFile(PrintStream aOut, File aDocFile, OdfValidatorMode eMode, SAXParseExceptionFilter aFilter) throws ODFValidatorException {
+		ODFFileValidator aFileValidator =
+				new ODFFileValidator(aDocFile, m_nLogLevel, eMode, m_aVersion, aFilter, this);
+
+		boolean result = aFileValidator.validate(aOut);
+		mOdfPackageVersion = aFileValidator.mOdfPackageVersion;
+		m_aGenerator = aFileValidator.getGenerator();
+		return result;
+	}
+
+	/**
+	 * validate the input Stream
+	 *
+	 * <p>After validation the getGenerator method can be called to get the generator of the validated file</p>
+	 */
+	public boolean validateStream(PrintStream aOut, InputStream aInputStream, String aBaseURI,
+			OdfValidatorMode eMode,
+			SAXParseExceptionFilter aFilter) throws ODFValidatorException {
+		ODFStreamValidator aStreamValidator =
+				new ODFStreamValidator(aInputStream, aBaseURI, m_nLogLevel, eMode, m_aVersion, aFilter, this);
+		boolean result = aStreamValidator.validate(aOut);
+		m_aGenerator = aStreamValidator.getGenerator();
+		mOdfPackageVersion = aStreamValidator.mOdfPackageVersion;
+		return result;
+	}
+
+	public Validator getManifestValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException {
+		return getValidatorForSchema(aOut, getSchemaFileName(Configuration.MANIFEST_SCHEMA, aVersion));
+	}
+
+	public Validator getValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException {
+		return getValidatorForSchema(aOut, getSchemaFileName(Configuration.SCHEMA, aVersion));
+	}
+
+	public Validator getStrictValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException {
+		return getValidatorForSchema(aOut, getSchemaFileName(Configuration.STRICT_SCHEMA, aVersion));
+	}
+
+	public Validator getMathMLValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException {
+		return getValidatorForSchema(aOut, getSchemaFileName(Configuration.MATHML2_SCHEMA, aVersion));
+	}
+
+	public String getMathMLDTDSystemId(OdfVersion aVersion) throws ODFValidatorException {
+		String aDTD = null;
+		if (m_bUseMathDTD) {
+			Configuration aConfig =
+					m_aConfig != null ? m_aConfig : getConfiguration(aVersion);
+
+			aDTD = aConfig.getProperty(Configuration.MATHML_SCHEMA);
+			if (m_aConfig == null && aDTD != null && aDTD.length() > 0) {
+				aDTD = InternalResources.createInternalResourceIdentifier(aDTD);
+			}
+		}
+
+		return aDTD;
+	}
+
+	public Validator getDSigValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException {
+		return getValidatorForSchema(aOut, getSchemaFileName(Configuration.DSIG_SCHEMA, aVersion));
+	}
+
+	public void resetValidatorProvider() {
+		m_aRNGSchemaFactory = null;
+		m_aXSDSchemaFactory = null;
+		m_aSchemaMap = null;
+	}
+
+	private String getSchemaFileName(String aConfigName, OdfVersion aVersion) throws ODFValidatorException {
+		Configuration aConfig =
+				m_aConfig != null ? m_aConfig : getConfiguration(aVersion);
+
+		String aFileName = aConfig.getProperty(aConfigName);
+		if (m_aConfig == null && aFileName != null && aFileName.length() > 0) {
+			aFileName = InternalResources.createInternalResourceIdentifier(aFileName);
+		}
+
+		return aFileName;
+	}
+
+	private Configuration getConfiguration(OdfVersion aVersion) throws ODFValidatorException {
+		if (m_aConfigurationMap == null) {
+			m_aConfigurationMap = new HashMap<OdfVersion, Configuration>();
+		}
+
+		Configuration aConfig = m_aConfigurationMap.get(aVersion);
+		if (aConfig == null) {
+			String aConfigName = null;
+			if (aVersion == null || aVersion == OdfVersion.V1_2) {
+				aConfigName = "/schema/odf1_2.properties";
+			} else if (aVersion == OdfVersion.V1_1) {
+				aConfigName = "/schema/odf1_1.properties";
+			} else if (aVersion == OdfVersion.V1_0) {
+				aConfigName = "/schema/odf1_0.properties";
+			} else {
+				throw new ODFValidatorException("unsupported ODF version: ".concat(aVersion.toString()));
+			}
+
+			InputStream aInStream = getClass().getResourceAsStream(aConfigName);
+			if (aInStream == null) {
+				throw new ODFValidatorException("Internal configuration file is missing: ".concat(aConfigName));
+			}
+
+			aConfig = new Configuration();
+			try {
+				aConfig.loadFromXML(aInStream);
+				aInStream.close();
+			} catch (IOException e) {
+				throw new ODFValidatorException(e);
+			}
+
+			m_aConfigurationMap.put(aVersion, aConfig);
+		}
+
+		return aConfig;
+	}
+
+	private Validator getValidatorForSchema(PrintStream aOut, String aSchemaFileName) throws ODFValidatorException {
+		if (m_aSchemaMap == null) {
+			m_aSchemaMap = new HashMap<String, Schema>();
+		}
+
+		Schema aSchema = m_aSchemaMap.get(aSchemaFileName);
+		if (aSchema == null) {
+			aSchema = createSchema(aOut, aSchemaFileName);
+			m_aSchemaMap.put(aSchemaFileName, aSchema);
+		}
+
+		return aSchema.newValidator();
+	}
+
+	private Schema createSchema(PrintStream aOut, String aSchemaFileName) throws ODFValidatorException {
+		Logger aLogger = new Logger(aSchemaFileName, "", aOut, m_nLogLevel);
+
+		if (aSchemaFileName == null || aSchemaFileName.length() == 0) {
+			return null;
+		}
+
+		String aSchemaLanguage =
+				aSchemaFileName.endsWith("xsd") ? XMLConstants.W3C_XML_SCHEMA_NS_URI
+				: XMLConstants.RELAXNG_NS_URI;
+
+
+		SchemaFactory aSchemaFactory = getSchemaFactory(aSchemaLanguage);
+		SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, null);
+		aSchemaFactory.setErrorHandler(aErrorHandler);
+		aSchemaFactory.setResourceResolver(new SchemaResourceResolver(aLogger, aSchemaFileName));
+		Schema aSchema = null;
+
+		StreamSource aSource = null;
+		if (InternalResources.isInternalResourceIdentifer(aSchemaFileName)) {
+			String aPath = InternalResources.getResourcePath(aSchemaFileName);
+			InputStream aInStream = getClass().getResourceAsStream(aPath);
+			if (aInStream == null) {
+				throw new ODFValidatorException("Internal schema file is missing: ".concat(aPath));
+			}
+
+			aSource = new StreamSource(aInStream, aSchemaFileName);
+		} else {
+			File aFile = new File(aSchemaFileName);
+			if (!aFile.exists()) {
+				aLogger.logFatalError(aSchemaFileName + ": file does not exist");
+				return null;
+			}
+			aSource = new StreamSource(aFile);
+		}
+
+		// Workaround: MSV seems not to call error handler
+		try {
+			aSchema = aSchemaFactory.newSchema(aSource);
+		} catch (org.xml.sax.SAXParseException e) {
+			aLogger.logFatalError(e);
+		} catch (org.xml.sax.SAXException e) {
+			aLogger.logFatalError(e.getMessage());
+		}
+
+		if (aLogger.hasError()) {
+			throw new ODFValidatorException(aSchemaFileName, "", "Schema has validation errors.");
+		}
+
+		aLogger.logInfo("parsed.", false);
+		return aSchema;
+	}
+
+	private SchemaFactory getSchemaFactory(String aSchemaLanguage) throws ODFValidatorException {
+		boolean isRNG = aSchemaLanguage.equals(XMLConstants.RELAXNG_NS_URI);
+		SchemaFactory aSchemaFactory = isRNG ? m_aRNGSchemaFactory
+				: m_aXSDSchemaFactory;
+		if (aSchemaFactory == null) {
+			try {
+				if (isRNG) {
+					System.setProperty("javax.xml.validation.SchemaFactory:" + aSchemaLanguage, "org.iso_relax.verifier.jaxp.validation.RELAXNGSchemaFactoryImpl");
+					SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);
+					m_aRNGSchemaFactory = SchemaFactory.newInstance(aSchemaLanguage);
+					aSchemaFactory = m_aRNGSchemaFactory;
+				} else {
+					System.setProperty("javax.xml.validation.SchemaFactory:" + aSchemaLanguage, "org.apache.xerces.jaxp.validation.XMLSchemaFactory");
+					m_aXSDSchemaFactory = SchemaFactory.newInstance(aSchemaLanguage);
+					aSchemaFactory = m_aXSDSchemaFactory;
+				}
+			} catch (IllegalArgumentException e) {
+				throw new ODFValidatorException(aSchemaLanguage + " support is not installed: " + e.getMessage());
+			}
+		}
+		return aSchemaFactory;
+	}
+
+	/**
+	 * get Generator from last validateFile or validateStream call
+	 */
+	public String getGenerator() {
+		return m_aGenerator;
+	}
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorException.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorException.java
new file mode 100644
index 0000000..c311b29
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorException.java
@@ -0,0 +1,70 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+public class ODFValidatorException extends Exception {
+    
+    private String m_aFile;
+    private String m_aEntry;
+    
+    /** Creates a new instance of ODFValidatorException */
+    ODFValidatorException( Exception e) {
+        super( e );
+    }
+    
+    ODFValidatorException( String aMsg ) {
+        super( aMsg );
+    }
+
+    ODFValidatorException( String aFile, String aEntry, String aMsg ) {
+        super( aMsg );
+        m_aFile = aFile;
+        m_aEntry = aEntry;
+    }
+ 
+    ODFValidatorException( String aFile, String aEntry, Exception e ) {
+        super( e );
+        m_aFile = aFile;
+        m_aEntry = aEntry;
+    }
+
+    @Override
+    public String getMessage() {
+        String retValue = "";
+        
+        if( m_aFile != null && m_aFile.length() > 0 )
+        {
+            retValue += m_aFile;
+            retValue += ":";
+        }
+        if( m_aEntry != null && m_aEntry.length() > 0 )
+        {
+            retValue += m_aEntry;
+            retValue += ":";
+        }
+        retValue += super.getMessage();
+        return retValue;
+    }
+    
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorProvider.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorProvider.java
new file mode 100644
index 0000000..e029365
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorProvider.java
@@ -0,0 +1,42 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import javax.xml.validation.Validator;
+import java.io.PrintStream;
+
+public interface ODFValidatorProvider {
+    Validator getValidator(PrintStream aOut, OdfVersion aVersion ) throws ODFValidatorException;
+
+    Validator getStrictValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException;
+    
+    Validator getManifestValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException;
+
+    Validator getDSigValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException;
+
+    Validator getMathMLValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException;
+
+    String getMathMLDTDSystemId( OdfVersion aVersion ) throws ODFValidatorException;
+        
+    void resetValidatorProvider();
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfPackageExt.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfPackageExt.java
new file mode 100644
index 0000000..fee957a
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfPackageExt.java
@@ -0,0 +1,30 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+public class OdfPackageExt {
+
+    public static final String STREAMNAME_DOCUMENT_SIGNATURES = "META-INF/documentsignatures.xml";    
+    public static final String STREAMNAME_MACRO_SIGNATURES = "META-INF/macrosignatures.xml";    
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfValidatorMode.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfValidatorMode.java
new file mode 100644
index 0000000..0b59e33
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfValidatorMode.java
@@ -0,0 +1,58 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+public enum OdfValidatorMode {
+    /***
+     * all versions
+     */
+    CONFORMANCE ("conformant"), //
+
+    /***
+     * ODF 1.0 and 1.1 only, equals CONFORMANCE for ODF 1.2
+     */
+    VALIDATE ("valid"),
+
+    /***
+     * ODF 1.0 and 1.1 only, equals CONFORMANCE for ODF 1.2
+     */
+    VALIDATE_STRICT ("strict valid"),
+
+    /***
+     * ODF 1.2 only, equals CONFORMANCE for ODF 1.0/1.1
+     */
+    EXTENDED_CONFORMANCE ("extended conformant");
+	
+    private String mValue;
+
+    OdfValidatorMode( String value )
+    {
+        mValue = value;
+    }
+
+    @Override
+    public String toString()
+    {
+        return mValue;
+    }	
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfVersion.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfVersion.java
new file mode 100644
index 0000000..73bdb71
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/OdfVersion.java
@@ -0,0 +1,57 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+public enum OdfVersion {
+
+    V1_0( "1.0" ), V1_1( "1.1" ), V1_2( "1.2" );
+
+    private String m_aValue;
+
+    OdfVersion( String _aValue )
+    {
+        m_aValue = _aValue;
+    }
+
+    @Override
+    public String toString()
+    {
+        return m_aValue;
+    }
+
+    public static OdfVersion valueOf( String _aString, boolean _bAttrValue )
+    {
+        if( _aString == null )
+            return _bAttrValue ? V1_1 : null;
+
+        for( OdfVersion aIter : values() )
+        {
+            if( _aString.equals( aIter.toString() ) )
+            {
+                return aIter;
+            }
+        }
+        return _bAttrValue ? V1_1 : null;
+    }
+
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java
new file mode 100644
index 0000000..12a2e79
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java
@@ -0,0 +1,36 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.xml.sax.SAXParseException;
+
+public interface SAXParseExceptionFilter {
+    
+    SAXParseException filterException( SAXParseException e );
+    
+    void startPackage( String aParentGenerator );
+    
+    void setGenerator( String aGenerator );
+    
+    void startSubFile();
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SAXVersionException.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SAXVersionException.java
new file mode 100644
index 0000000..7167d59
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SAXVersionException.java
@@ -0,0 +1,41 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.xml.sax.SAXException;
+
+class SAXVersionException extends SAXException{
+
+    private String m_aVersion = null;
+    
+    SAXVersionException( String aVersion )
+    {
+        super();
+        m_aVersion = aVersion;
+    }
+    
+    String getVersion()
+    {
+        return m_aVersion;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaErrorHandler.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaErrorHandler.java
new file mode 100644
index 0000000..5ca8f37
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaErrorHandler.java
@@ -0,0 +1,78 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+class SchemaErrorHandler implements org.xml.sax.ErrorHandler {
+    
+    private Logger m_aLogger;
+    private SAXParseExceptionFilter m_aFilter;
+
+    /** Creates a new instance of SchemaErrorHandler */
+    SchemaErrorHandler(Logger aLogger, SAXParseExceptionFilter aFilter ) {
+        m_aLogger = aLogger;
+        m_aFilter = aFilter;
+    }
+    
+    public void warning(SAXParseException e) throws SAXException {
+        if( !filter(e) )
+            m_aLogger.logWarning(  e );
+    }
+
+    public void fatalError(SAXParseException e) throws SAXException {
+        fatalErrorNoException( e );
+    }
+
+    public void error(SAXParseException e) throws SAXException {
+        if( !filter(e) )
+            m_aLogger.logError( e );
+    }
+
+    public void fatalErrorNoException(SAXParseException e) {
+        if( !filter(e) )
+            m_aLogger.logFatalError(  e );
+    }
+    
+    private boolean filter( SAXParseException e )
+    {
+        boolean bFiltered = false;
+        if( m_aFilter != null )
+        {
+            SAXParseException aNewExc = m_aFilter.filterException( e );
+            if( aNewExc == null  )
+            {
+                bFiltered = true;
+            }
+            else if( aNewExc != e )
+            {
+                m_aLogger.logWarning( aNewExc );
+                bFiltered = true;
+            }
+        }
+        
+        return bFiltered;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaFilter.java
new file mode 100644
index 0000000..5a00676
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaFilter.java
@@ -0,0 +1,45 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+class SchemaFilter extends XMLFilterImpl {
+    
+    /** Creates a new instance of SchemaFilter */
+    SchemaFilter() {
+    }
+
+    @Override
+    public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
+
+        if( qName.equals("param"))
+        {
+            System.out.println( atts.getValue(uri,"pattern"));
+        }
+        super.startElement(uri, localName, qName, atts);
+    }
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaResourceResolver.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaResourceResolver.java
new file mode 100644
index 0000000..c85ebcd
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaResourceResolver.java
@@ -0,0 +1,194 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.InputStream;
+import java.io.Reader;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSResourceResolver;
+
+    class SchemaResourceResolver implements LSResourceResolver 
+    {
+        private String m_aBaseURI = null;
+        private Logger m_aLogger = null;
+        private DOMImplementationLS m_aDOMImplLS = null;
+        private boolean m_bGetDOMImplLSFailed = false;
+        
+        class LSInputImpl implements LSInput
+        {
+            private InputStream m_aInputStream = null;
+            private String m_aSystemId = null;
+
+            public Reader getCharacterStream() {
+                return null;
+            }
+
+            public void setCharacterStream(Reader aCharacterStream) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            public InputStream getByteStream() {
+                return m_aInputStream;
+            }
+
+            public void setByteStream(InputStream aByteStream) {
+                m_aInputStream = aByteStream;
+            }
+
+            public String getStringData() {
+                return null;
+            }
+
+            public void setStringData(String stringData) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            public String getSystemId() {
+                return m_aSystemId;
+            }
+
+            public void setSystemId(String aSystemId) {
+                m_aSystemId = aSystemId;
+            }
+
+            public String getPublicId() {
+                return null;
+            }
+
+            public void setPublicId(String publicId) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            public String getBaseURI() {
+                return null;
+            }
+
+            public void setBaseURI(String baseURI) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            public String getEncoding() {
+                return null;
+            }
+
+            public void setEncoding(String encoding) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            public boolean getCertifiedText() {
+                return false;
+            }
+
+            public void setCertifiedText(boolean certifiedText) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+        }
+        
+        public SchemaResourceResolver( Logger aLogger, String aBaseURI )
+        {
+            m_aBaseURI = aBaseURI;
+            m_aLogger = aLogger;
+        }
+    
+        public LSInput resolveResource(String aType, String aNamespaceURI, String aPublicId, String aSystemId, String aBaseURI) 
+        {
+            LSInput aInput = null;
+            
+            if( aBaseURI == null )
+                aBaseURI = m_aBaseURI; 
+
+            if( aSystemId != null && aBaseURI != null && 
+                InternalResources.isInternalResourceIdentifer(aBaseURI) )
+            {
+                String aURI = aBaseURI.substring(0, aBaseURI.lastIndexOf('/')+1).concat(aSystemId);
+                String aPath = InternalResources.getResourcePath(aURI);
+                InputStream aInStream = getClass().getResourceAsStream(aPath);
+                if( aInStream != null )
+                {
+                    aInput = createLSInput();
+                    aInput.setSystemId(aURI);
+                    aInput.setByteStream(aInStream);
+ 
+                    String aMsg = "resolving '" + aURI + "'";
+                    m_aLogger.logInfo( aMsg , false);
+                }
+                else
+                {
+                    m_aLogger.logFatalError("Missing internal schema file: ".concat(aPath));
+                }
+            }
+        
+           return aInput;
+        }
+        
+        private LSInput createLSInput()
+        {
+            LSInput aLSInput = null;
+            
+            if( m_aDOMImplLS == null && !m_bGetDOMImplLSFailed )
+            {
+                DOMImplementationRegistry aDOMReg = null;
+
+                try
+                {        
+                    aDOMReg = DOMImplementationRegistry.newInstance();
+                }
+                catch( ClassNotFoundException e )
+                {
+                    m_aLogger.logFatalError(e.getMessage());
+                }
+                catch( InstantiationException e )
+                {
+                    m_aLogger.logFatalError(e.getMessage());
+                }
+                catch( IllegalAccessException e )
+                {
+                    m_aLogger.logFatalError(e.getMessage());
+                }
+                DOMImplementation aDOMImpl = aDOMReg.getDOMImplementation( "LS 3.0");
+                if( aDOMImpl != null )
+                {
+                    m_aDOMImplLS = (DOMImplementationLS)aDOMImpl;
+                }
+                else
+                {
+                    m_bGetDOMImplLSFailed = true;
+                    m_aLogger.logInfo("Could not find DOM LS 3.0 Implementation, using own implementation", false);
+                }
+            }
+            if( m_aDOMImplLS != null )
+            {
+                aLSInput = m_aDOMImplLS.createLSInput();
+            }
+            else
+            {
+                aLSInput = new LSInputImpl();
+            }
+            
+            return aLSInput;
+        }
+    }
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java
new file mode 100644
index 0000000..afed2d0
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java
@@ -0,0 +1,74 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.util.HashSet;
+import org.xml.sax.SAXParseException;
+
+/**
+ *
+ */
+public class ValidationMessageCollectorErrorFilter implements SAXParseExceptionFilter {
+
+    private String m_aGenerator;
+    private HashSet<String> m_aMsgsReported;
+
+    
+    /** Creates a new instance of ValidationErrorFilter */
+    public ValidationMessageCollectorErrorFilter() throws ODFValidatorException {
+        m_aMsgsReported = new HashSet<String>();
+    }
+    
+    public SAXParseException filterException( SAXParseException aExc )
+    {
+        String aMsg = aExc.getMessage();
+        if( !m_aMsgsReported.contains(aMsg))
+        {
+             m_aMsgsReported.add( aMsg );
+        }
+        
+        return aExc;
+    }
+
+    public void startPackage( String aGenerator )
+    {
+    }
+
+    public void setGenerator( String aGenerator )
+    {
+        m_aGenerator = aGenerator;
+    }
+    
+    public void startSubFile() {
+    }    
+    
+    public String getGenerator()
+    {
+        return m_aGenerator;
+    }
+
+    public HashSet<String> getMessages()
+    {
+        return m_aMsgsReported;
+    }
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java
new file mode 100644
index 0000000..dee1519
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java
@@ -0,0 +1,213 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.File;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.HashSet;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ *
+ */
+public class ValidationOOoTaskIdErrorFilter implements SAXParseExceptionFilter {
+
+    
+    private static final String FILTER_ENTRY = "filter-entry";
+    private static final String TASK_ID = "task-id";
+    private static final String RESOLVED_IN = "resolved-in";
+    
+    int m_nBuildId = 0;
+    
+    class FilterEntry
+    {
+        String m_aTaskId;
+        int m_nBuildId;
+        
+        FilterEntry( String aTaskId, int nBuildId )
+        {
+            m_aTaskId = aTaskId;
+            m_nBuildId = nBuildId;
+        }
+    }
+            
+
+    private HashMap<String,FilterEntry> m_aFilterEntries;
+    private HashSet<String> m_aTaskIdsReported;
+
+    class Handler extends DefaultHandler
+    {
+        class Entry
+        {
+            String m_aMessage = "";
+            String m_aTask = "";
+            int m_nBuildId = 0;
+
+            Entry( String aTask )
+            {
+                m_aTask = aTask;
+            }
+        }
+
+        HashMap<String,FilterEntry> m_aFilterEntries;
+        Entry m_aEntry = null;
+
+        Handler( HashMap<String,FilterEntry> aFilterEntries )
+        {
+            m_aFilterEntries = aFilterEntries;
+        }
+
+        @Override
+        public void characters(char[] aCh, int nStart, int nLength) throws SAXException {
+            if( m_aEntry != null )
+                m_aEntry.m_aMessage += new String(aCh, nStart, nLength);
+        }
+
+        @Override
+        public void startElement(String aUri, String aLocalName, String aQName, Attributes aAttributes) throws SAXException {
+            if( aQName.equals(FILTER_ENTRY) )
+            {
+               String aTaskId = aAttributes.getValue(TASK_ID);
+                if( aTaskId != null )
+                {
+                    m_aEntry = new Entry( aTaskId );
+                    String aBuildId = aAttributes.getValue(RESOLVED_IN);
+                    if( aBuildId != null && aBuildId.length() > 0)
+                        m_aEntry.m_nBuildId = Integer.valueOf(aBuildId);
+                }
+               
+            }
+        }
+
+        @Override
+        public void endElement(String aUri, String aLocalName, String aQName) throws SAXException {
+            if( aQName.equals(FILTER_ENTRY) )
+            {
+                if( m_aEntry != null )
+                {
+                    m_aFilterEntries.put( m_aEntry.m_aMessage, new FilterEntry(m_aEntry.m_aTask,m_aEntry.m_nBuildId) );
+                }
+            }
+        }
+
+    }
+    
+    /** Creates a new instance of ValidationErrorFilter */
+    public ValidationOOoTaskIdErrorFilter( File aFilterFile, PrintStream aOut ) throws ODFValidatorException {
+        m_aFilterEntries = new HashMap<String,FilterEntry>();
+        m_aTaskIdsReported = new HashSet<String>();
+        SAXParser aParser = null;
+        Logger aLogger = new Logger( aFilterFile.getAbsolutePath(), "", aOut, Logger.LogLevel.ERROR );
+        try
+        {
+            SAXParserFactory aParserFactory = SAXParserFactory.newInstance();
+            aParserFactory.setNamespaceAware(false);
+            aParser = aParserFactory.newSAXParser();
+
+            aParser.parse(aFilterFile, new Handler( m_aFilterEntries));
+        }
+        catch( javax.xml.parsers.ParserConfigurationException e )
+        {
+            throw new ODFValidatorException( e );
+        }
+        catch( org.xml.sax.SAXParseException e )
+        {
+            aLogger.logError( e );
+            throw new ODFValidatorException( e );
+        }
+        catch( org.xml.sax.SAXException e )
+        {
+            aLogger.logError( e.getMessage() );
+            throw new ODFValidatorException( e );
+        }
+        catch( java.io.IOException e )
+        {
+            throw new ODFValidatorException( e );
+        }
+
+
+    }
+    
+    public SAXParseException filterException( SAXParseException aExc )
+    {
+        if( m_nBuildId > 0 )
+        {
+            FilterEntry aEntry = m_aFilterEntries.get(aExc.getMessage());
+            if( aEntry != null && 
+                (aEntry.m_nBuildId == 0 || m_nBuildId <= aEntry.m_nBuildId) )
+            {
+                String aTaskId = aEntry.m_aTaskId;
+                if( !m_aTaskIdsReported.contains(aTaskId ))
+                {
+                    m_aTaskIdsReported.add( aTaskId );
+                    return new SAXParseException( "Issue " + aTaskId + " found.", aExc.getPublicId(), aExc.getSystemId(), aExc.getLineNumber(), aExc.getColumnNumber(), aExc );
+                }
+                else
+                    return null;
+            }
+        }
+        
+        return aExc;
+    }
+
+    public void startPackage( String aGenerator )
+    {
+        m_nBuildId = aGenerator.length() > 0 ? getBuildId( aGenerator) : 0;
+    }
+    
+    
+    public void startSubFile() {
+        m_aTaskIdsReported = new HashSet<String>();
+        // the build id is kept
+    }
+    
+    public void setGenerator( String aGenerator )
+    {
+        m_nBuildId = aGenerator.length() > 0 ? getBuildId( aGenerator) : 0;
+    }
+
+    public static int getBuildId( String aGenerator )
+    {
+        int nBuildId = 0;
+        int nPos = aGenerator.indexOf("OpenOffice.org_project/");
+        if( nPos>0 )
+        {
+            nPos = aGenerator.indexOf("Build-",nPos);
+            if( nPos > 0 )
+            {
+                int nStart = nPos+6;
+                nPos = aGenerator.indexOf("$",nStart);
+                nBuildId = Integer.valueOf(nPos > 0 ? aGenerator.substring(nStart,nPos) : aGenerator.substring(nStart));
+            }
+        }
+        
+        return nBuildId;
+    }
+    
+}
diff --git a/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/VersionHandler.java b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/VersionHandler.java
new file mode 100644
index 0000000..3f3576c
--- /dev/null
+++ b/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/VersionHandler.java
@@ -0,0 +1,53 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class VersionHandler extends DefaultHandler {
+
+    private static final String OFFICE_NAMESPACE_URI = "urn:oasis:names:tc:opendocument:xmlns:office:1.0";
+    private static final String DOCUMENT_META = "document-meta";
+    private static final String DOCUMENT_CONTENT = "document-content";
+    private static final String DOCUMENT_SETTINGS = "document-settings";
+    private static final String DOCUMENT_STYLES = "document-styles";
+    private static final String VERSION = "version";
+
+    @Override
+    public void startElement(String aUri, String aLocalName, String aQName, Attributes aAttributes) throws SAXException {
+        super.startElement(aUri, aLocalName, aQName, aAttributes);
+        
+        if( aUri.equals(OFFICE_NAMESPACE_URI) &&
+            (aLocalName.equalsIgnoreCase(DOCUMENT_META) ||
+             aLocalName.equalsIgnoreCase(DOCUMENT_CONTENT) || 
+             aLocalName.equalsIgnoreCase(DOCUMENT_SETTINGS) ||
+             aLocalName.equalsIgnoreCase(DOCUMENT_STYLES)) )
+        {
+            String aVersion = aAttributes.getValue(OFFICE_NAMESPACE_URI,VERSION);
+            throw new SAXVersionException(aVersion);
+        }
+    }
+
+}
diff --git a/trunk/validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader b/trunk/validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader
new file mode 100644
index 0000000..b0d3dc5
--- /dev/null
+++ b/trunk/validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader
@@ -0,0 +1 @@
+com.sun.msv.verifier.jarv.FactoryLoaderImpl
\ No newline at end of file
diff --git a/trunk/validator/src/main/resources/schema/odf1_0.properties b/trunk/validator/src/main/resources/schema/odf1_0.properties
new file mode 100644
index 0000000..1349525
--- /dev/null
+++ b/trunk/validator/src/main/resources/schema/odf1_0.properties
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<!--
+
+  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.
+
+-->
+<properties>
+<entry key="manifest-schema">/schema/odf1.0/OpenDocument-manifest-schema-v1.0-os.rng</entry>
+<entry key="schema">/schema/odf1.0/OpenDocument-schema-v1.0-os.rng</entry>
+<entry key="strict-schema">/schema/odf1.0/OpenDocument-strict-schema-v1.0-os.rng</entry>
+<entry key="mathml-schema">/schema/mathml1.01/math.dtd</entry>
+<entry key="filter"/>
+</properties>
+
diff --git a/trunk/validator/src/main/resources/schema/odf1_1.properties b/trunk/validator/src/main/resources/schema/odf1_1.properties
new file mode 100644
index 0000000..ed0e7c2
--- /dev/null
+++ b/trunk/validator/src/main/resources/schema/odf1_1.properties
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<!--
+
+  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.
+
+-->
+<properties>
+<entry key="manifest-schema">/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng</entry>
+<entry key="strict-schema">/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng</entry>
+<entry key="schema">/schema/odf1.1/OpenDocument-schema-v1.1.rng</entry>
+<entry key="mathml-schema">/schema/mathml1.01/math.dtd</entry>
+<entry key="mathml2-schema"/>
+<entry key="dsig-schema"/>
+<entry key="path1"/>
+<entry key="filter"/>
+</properties>
+
diff --git a/trunk/validator/src/main/resources/schema/odf1_2.properties b/trunk/validator/src/main/resources/schema/odf1_2.properties
new file mode 100644
index 0000000..b633f6d
--- /dev/null
+++ b/trunk/validator/src/main/resources/schema/odf1_2.properties
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<!--
+
+  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.
+
+-->
+<properties>
+<entry key="manifest-schema">/schema/odf1.2/OpenDocument-v1.2-os-manifest-schema.rng</entry>
+<entry key="strict-schema"></entry>
+<entry key="schema">/schema/odf1.2/OpenDocument-v1.2-os-schema.rng</entry>
+<entry key="mathml-schema"></entry>
+<entry key="mathml2-schema">/schema/mathml2.0/mathml2.xsd</entry>
+<entry key="dsig-schema">/schema/odf1.2/OpenDocument-v1.2-os-dsig-schema.rng</entry>
+<entry key="path1"/>
+<entry key="filter"/>
+</properties>
+
diff --git a/trunk/validator/src/main/webapp/META-INF/context.xml b/trunk/validator/src/main/webapp/META-INF/context.xml
new file mode 100644
index 0000000..b98d3a1
--- /dev/null
+++ b/trunk/validator/src/main/webapp/META-INF/context.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+
+-->
+<Context antiJARLocking="true" path="/odfvalidator"/>
diff --git a/trunk/validator/src/main/webapp/WEB-INF/web.xml b/trunk/validator/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ba5db32
--- /dev/null
+++ b/trunk/validator/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+	<!-- display name -->
+	<display-name>ODF Validator Application</display-name>	
+	<!-- some needed application values, change if needed -->
+    <context-param>
+		<!-- application title, shown in the header of the application -->
+        <param-name>APPLICATION_TITLE</param-name>
+        <param-value>ODF Validator 1.2</param-value>
+    </context-param>
+    <context-param>
+		<!-- name for setting-storing, used in the settings database -->
+        <param-name>PROPERTY_APPLICATION_NAME</param-name>
+        <param-value>odfvalidator</param-value>
+    </context-param>
+    <context-param>
+		<!-- email of the developer, used when exceptions are thrown. Get them by email, like a stacktrace -->
+        <param-name>DEVELOPER_EMAIL</param-name>
+        <param-value>odf-dev AT incubator.apache.org</param-value>
+    </context-param>
+    <context-param>
+		<!-- email of the application owner, shown in the top right corner for the user -->
+        <param-name>CONTACT_EMAIL</param-name>
+        <param-value>odf-dev AT incubator.apache.org</param-value>
+    </context-param>
+    <context-param>
+		<!-- the icon of the donator of this service, used in the footer  -->
+        <param-name>SUPPORTER_ICON_URL</param-name>
+        <param-value>http://opendocsociety.org/organisation/logo/png/opendocsociety_logo_normal_color-on-trans-200x42/;download</param-value>
+    </context-param>    
+    <context-param>
+		<!-- the site of the donator of this service, used in the footer on the their icon -->
+        <param-name>SUPPORTER_URL</param-name>
+        <param-value>http://www.opendocsociety.org/</param-value>
+    </context-param>        
+    <context-param>
+		<!-- the name of the donator of this service, used as tool tip on their icon -->
+        <param-name>SUPPORTER_TITLE</param-name>
+        <param-value>OpenDoc Society</param-value>
+    </context-param>    
+    <context-param>
+		<!-- the favicon of the donator of this service, used as icon on browser tab and left of URL -->
+        <param-name>SUPPORTER_FAVICON_URL</param-name>
+        <param-value>http://www.opendocsociety.org/favicon/;download</param-value>
+    </context-param>            
+	<servlet>
+	  <servlet-name>InfoPage</servlet-name>
+	  <jsp-file>/jsp/info/index.jsp</jsp-file>
+	</servlet>
+	<servlet-mapping>
+	  <servlet-name>InfoPage</servlet-name>
+	  <url-pattern>/info.html</url-pattern>
+	</servlet-mapping>	
+	<!-- welcome file list -->
+    <welcome-file-list>        
+        <welcome-file>/jsp/index.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>
\ No newline at end of file
diff --git a/trunk/validator/src/main/webapp/jsp/common/footer.jsp b/trunk/validator/src/main/webapp/jsp/common/footer.jsp
new file mode 100644
index 0000000..5ed5965
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/common/footer.jsp
@@ -0,0 +1,42 @@
+<%--
+  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 regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<jsp:directive.page contentType="text/html" />
+<%
+	String _supporterTitle = getServletContext().getInitParameter( "SUPPORTER_TITLE" );
+	if ( null == _supporterTitle ) {
+		_supporterTitle = "OpenDoc Society";
+	}
+	String _supporterURL = getServletContext().getInitParameter( "SUPPORTER_URL" );
+	if ( null == _supporterURL) {
+		_supporterURL = "http://opendocsociety.org/";
+	}
+	String _supporterIconURL = getServletContext().getInitParameter( "SUPPORTER_ICON_URL" );
+	if ( null == _supporterIconURL ) {
+		_supporterIconURL = "http://opendocsociety.org/organisation/logo/png/opendocsociety_logo_normal_color-on-trans-200x42/;download";
+	}
+%>
+<div id="footer">
+	<div id="supporter-logo" style="float:left">
+		<p><a href="<% out.println( _supporterURL ); %>">
+				<img title="Sponsored by <% out.println( _supporterTitle ); %>" alt="<% out.println( _supporterTitle ); %>" src="<% out.println( _supporterIconURL ); %> " />
+			</a></p>
+	</div>
+	<div id="smallprint">
+		<p style="text-align:left">This service does not cover all conformance criteria of the OpenDocument Format specification. It is not applicable for formal validation proof. Problems reported by this service only indicate that a document may not conform to the specification. It must not be concluded from errors that are reported that the document does not conform to the specification without further investigation of the error report, and it must not be concluded from the absence of error reports that the OpenDocument Format document conforms to the OpenDocument Format specification.
+			By any use of this Website, you agree to be bound by these <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Policies and Terms of Use</a>.</p>
+	</div>
+</div>
diff --git a/trunk/validator/src/main/webapp/jsp/common/header.jsp b/trunk/validator/src/main/webapp/jsp/common/header.jsp
new file mode 100644
index 0000000..151d49e
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/common/header.jsp
@@ -0,0 +1,164 @@
+<%--
+  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 regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<jsp:directive.page contentType="text/html" />
+<%
+	String appName = getServletContext().getInitParameter( "APPLICATION_TITLE" );
+	if ( null == appName ) {
+		appName = "ODFToolkit";
+	}
+	String favIconURL = getServletContext().getInitParameter( "SUPPORTER_FAVICON_URL" );
+	if ( null == favIconURL ) {
+		favIconURL = "http://www.opendocsociety.org/favicon/;download";
+	}
+%>
+<head>
+	<title><% out.println( appName ); %></title>
+	<meta http-equiv="content-type" content="text/html; charset=windows-1252" />
+	<meta name="keywords" content="OpenDocument ODF Validator ODFToolkit ODFValidator"/>
+	<meta name="description" content="ODFToolkit"/>
+	<!-- Icon -->
+	<link type="image/x-icon" href="<% out.println( favIconURL ); %>" rel="shortcut icon"/>
+	<style type="text/css" media="screen, projection"><!--
+		div#footer {
+			font-family: Verdana, Arial, Helvetica, sans-serif;
+			font-size: x-small;
+		}
+		#footer {
+			margin: 1em 12px 1.5em 10px;
+			padding-top: 1em;
+		}
+		#footer a:link, #footer a:visited {
+			color: #0033CC;
+			text-decoration: underline;
+		}
+		#footer a:hover, #footer a:active {
+			color: #698ed1;
+			text-decoration: none;
+		}
+		img {
+			border: none;
+		}
+
+		#footer {
+			float: left;
+			display: block;
+			margin: 0px;
+			padding: 0px;
+			width: 100%;
+			margin-top: -1px;
+			color: #777;
+			border-top: solid 1px #ddd;
+			background-image: none;
+		}
+		#footer .horizontalmenu {
+			padding-top: 10px;
+			font-size: 1.2em;
+		}
+		#footer li {
+			display: inline;
+			/* spacing between the links */
+			padding: 0em 1em;
+		}
+		#sponsor {
+			float: left;
+			margin:.5em;
+			margin-bottom: 20px;
+		}
+		#logo div img { float: left; padding: 0px 0 40px 15px; }
+
+		p.selection {
+			font-weight: bold;
+		}
+
+		div.validationResult {
+			line-height: 150%; font-size: 1.2em; font-family: Arial, helvetica, sans-serif;
+		}
+
+		p.valid {
+			background-color: lime;font-size: 2em; padding: 0.5cm;font-weight: bold;
+		}
+
+		p.invalid {
+			background-color: red;font-size: 2em; padding: 0.5cm;font-weight: bold;
+		}
+
+		span.info {
+			font-size: 1.1em;
+		}
+
+		span.info > span.messageType, span.info > span.filePath {
+
+		}	
+
+		span.warning > span.messageType, span.warning > span.filePath {
+			background-color: #ffA500;
+		}
+
+		span.error > span.messageType, span.fatalError > span.messageType, span.error > span.filePath, span.fatalError > span.filePath {
+			background-color: red;
+		}		
+
+		span.messageType {
+			font-weight: bold;
+		}	
+
+		p.selection {
+			font-weight: bold;
+		}
+
+
+		#footer p {
+			margin-top: 1px;
+			color: #555;
+		}
+
+		select {
+			width: 8.3cm;
+		}
+
+		h1 {
+			font-size: 2em;
+		}
+
+		h3 {
+			font-size: 1.6em;
+		}
+
+		h1, h2 {
+			border-bottom-width: 1px;
+			border-bottom-style: solid;
+			border-bottom-color: rgb(170,170,170);
+			font-weight: normal;
+		}
+
+		h1, h2, h3, h4, h5, h6 {
+			margin-bottom: 0.6em;
+			padding-bottom: 0.2em;
+			padding-top: 0.6em;
+			font-family: Arial, helvetica, sans-serif;
+		}
+		.contentpart {
+			font-family: Arial, helvetica, sans-serif;
+			line-height: 1.2em;
+			margin-top: 0.4em;
+			margin-bottom: 0.6em;
+			font-size: 0.8em;
+		}
+
+		-->
+	</style>
+</head>
diff --git a/trunk/validator/src/main/webapp/jsp/common/supporter.jsp b/trunk/validator/src/main/webapp/jsp/common/supporter.jsp
new file mode 100644
index 0000000..66e6816
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/common/supporter.jsp
@@ -0,0 +1,29 @@
+<%--
+  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 regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<%
+	String supporterTitle = getServletContext().getInitParameter( "SUPPORTER_TITLE" );
+	if ( null == supporterTitle ) {
+		supporterTitle = "OpenDoc Society";
+	}
+	String supporterURL = getServletContext().getInitParameter( "SUPPORTER_URL" );
+	if ( null == supporterURL) {
+		supporterURL = "http://opendocsociety.org/";
+	}
+%>
+<p style="float:left; font-weight:bold;">This service is provided to you by <a href="<% out.println( supporterURL ); %>"><% out.println( supporterTitle ); %></a></p>
+
+
diff --git a/trunk/validator/src/main/webapp/jsp/index.jsp b/trunk/validator/src/main/webapp/jsp/index.jsp
new file mode 100644
index 0000000..6ff4c88
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/index.jsp
@@ -0,0 +1,31 @@
+<%--
+  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 regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<%@page language="Java" %>
+<%@page contentType="text/html" %>
+<!DOCTYPE html SYSTEM 'about:legacy-compat'>
+<html>
+	<jsp:include page="common/header.jsp"/>
+	<body>	
+		<div class="contentpart" id="spotlight">
+			<div style="margin: 15px">
+				<jsp:include page="validate.jsp"/>
+				<jsp:include page="common/supporter.jsp"/>
+			</div>
+		</div>
+		<jsp:include page="common/footer.jsp"/>
+	</body>
+</html>
diff --git a/trunk/validator/src/main/webapp/jsp/info/index.jsp b/trunk/validator/src/main/webapp/jsp/info/index.jsp
new file mode 100644
index 0000000..b0db5fd
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/info/index.jsp
@@ -0,0 +1,31 @@
+<%--
+  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 regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<%@page language="Java" %>
+<%@page contentType="text/html" %>
+<!DOCTYPE html SYSTEM 'about:legacy-compat'>
+<html>
+	<jsp:directive.include file="../common/header.jsp" />
+	<body>
+		<div class="contentpart" id="spotlight">
+			<div style="margin: 15px">
+				<jsp:directive.include file="info.jsp"/>
+				<jsp:directive.include file="../common/supporter.jsp"/>
+			</div>
+		</div>
+		<jsp:directive.include file="../common/footer.jsp"/>
+	</body>
+</html>
diff --git a/trunk/validator/src/main/webapp/jsp/info/info.jsp b/trunk/validator/src/main/webapp/jsp/info/info.jsp
new file mode 100644
index 0000000..3a7cb6f
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/info/info.jsp
@@ -0,0 +1,94 @@
+<%--

+  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 regarding copyright ownership.

+  The ASF licenses this file to You under the Apache License, Version 2.0

+  (the "License"); you may not use this file except in compliance with

+  the License.  You may obtain a copy of the License at

+

+	  http://www.apache.org/licenses/LICENSE-2.0

+

+  Unless required by applicable law or agreed to in writing, software

+  distributed under the License is distributed on an "AS IS" BASIS,

+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+  See the License for the specific language governing permissions and

+  limitations under the License.

+--%>

+<h1>The ODF Validator</h1>

+<p><br /></p>

+<h2>Options</h2>

+<h3 id="mode">ODF Version</h3>

+<ul>

+	<li><p><span style="font-weight:bold;">autodetect  </span>: Detects the ODF version of the root document from the given ODF package. ODF documents with version 1.2 will be validated against conformance, version 1.0/1.1 against none strict. 

+			In all other choices the document is validated with respect to the selected OpenDocument version regardless of the version information that is included in the file</p></li>

+	<li><p><span style="font-weight:bold;">conformant  </span>: Checks the basic requirements conforming OpenDocument documents must meet.

+			This modes considers the version of the checked documents. This means that for OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected) the

+			conformance definitions of the OpenDocument v1.2 specification are taken as basis, while those of the OpenDocument v1.1/v1.0 specification are taken as basis

+			for OpenDocument v1.1/v1.0 documents. Please note that not all provisions for conforming documents are checked.</p></li>

+	<li><p><span style="font-weight:bold;">extended conformance test</span>: For OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected), the basic requirements of extended conforming ODF documents are checked.

+			For OpenDocument v1.0/v1.1 documents (or if OpenDocument v1.0/v1.1 has been selected) this mode equals the <span style="font-weight:bold;">conformance test</span> mode.</p></li>

+	<li><p><span style="font-weight:bold;">validation</span>: For OpenDocument v1.1/v1.0 documents (or if OpenDocument v1.1/v1.0 has been selected) the selected document is validated in regard of the OpenDocument v1.1/v1.0 schema.

+			For OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected) this mode equals the <span style="font-weight:bold;">conformance test</span> mode.</p></li>

+	<li><p><span style="font-weight:bold;">strict validation</span>: For OpenDocument v1.1/v1.0 documents (or if OpenDocument v1.1/v1.0 has been selected) the selected document is validated in regard of the strict OpenDocument v1.1/v1.0 schema.

+			For OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected) this mode equals the <span style="font-weight:bold;">conformance test</span> mode.</p></li>

+</ul>

+<p>For OpenDocument v1.1/v1.0 documents, the <span style="font-weight:bold;">validation</span> and <span style="font-weight:bold;">strict validation</span> tests are more restrictive than a conformance test. Please note that this means that errors may be reported for documents that are actually conforming to the ODF specification.</p>

+<p>The <span style="font-weight:bold;">strict validation test</span> is recommended for developers that want to make sure that an OpenDocument v1.0/v1.1 document does not only validate in regards to the ODF schema, but also does not use any extensions. The recommended mode

+	for OpenDocument v1.2 documents is <span style="font-weight:bold;">conformance test</span>.</p>

+<p>The following items are checked by the validation service:</p>

+<ul>

+	<li><p>OpenDocument v1.2 documents</p>

+		<ul>

+			<li><p>If the test type is <span style="font-weight:bold;">conformance test</span>, and if the file is not a formula file, then the sub files <i>content.xml</i>, <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are  validated with respect to the OpenDocument v1.2 schema.</p></li>

+			<li><p>If the test type is <span style="font-weight:bold;">extended conformance test</span>, and if the file is not a formula file, then the sub files <i>content.xml</i>, <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are pre-processed as described in section 1.4.2.1 of the OpenDocument v1.2 specification (that is <i>foreign elements and attributes</i> are removed), and are then validated with respect to the OpenDocument v1.2 schema.</p></li>

+		</ul>

+	</li>

+	<li><p>OpenDocument v1.1/1.0 documents</p>

+		<ul>

+			<li><p>If the test type is <span style="font-weight:bold;">conformance test</span>, and if the file is not a formula file, then the sub files <i>content.xml</i>, <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are pre-processed as described in section 1.5 of the <a href="http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.odt">OpenDocument specification</a> (that is <i>foreign elements and attributes</i> are removed), and are then validated with respect to the schema of the selected OpenDocument version.</p></li>

+			<li><p>If the test type is <span style="font-weight:bold;">validation</span>, and if the file is not a formula file, then the sub files <i>content.xml</i>, <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are validated with respect to the schema of the selected OpenDocument version. Pre-processing of <i>foreign elements and attributes</i> is not applied.</p></li>

+			<li><p>If the test type is <span style="font-weight:bold;">strict validation</span>, and if the file is not a formula file, then the sub files <i>content.xml</i>, <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are validated with respect to the strict schema of the selected OpenDocument version. Pre-processing of <i>foreign elements and attributes</i> is not applied.</p></li>

+		</ul>

+	</li>

+	<li><p>All versions</p>

+		<ul>

+			<li><p>If the file is a formula file, then the sub file <i>content.xml</i> is validated with respect to the MathML 2.0 W3C XSD schema.  The sub files <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are checked as described for other document types.</p></li>

+			<li><p>The file <i>META-INF/manifest.xml</i> is validated with respect to the manifest schema of the selected ODF specification.</p></li>

+			<li><p>If the file is an ODF 1.2 file, then the <i>META-INF/documentsignatures.xml</i> and <i>META-INF/macrosignatures.xml</i> sub files are validated with respect to the digital signatures schema of the ODF 1.2 specification.</p></li>

+			<li><p>For all embedded objects in ODF format, the <i>content.xml</i>, <i>styles.xml</i>, <i>meta.xml</i> and <i>settings.xml</i> are validated as described for the main document above</p></li>

+			<li><p>It is checked whether the file itself ans all embedded objects in ODF format contain at least a <i>content.xml</i> or <i>styles.xml</i> sub file.</p></li>

+		</ul>

+	</li>

+</ul>

+<h3 id="logging">Logging</h3>

+<ul>

+	<li><span style="font-weight:bold;">verbose  </span>: Gives out all kind of messages.</li>

+	<li><span style="font-weight:bold;">only warnings and errors</span>: Logs all error and warning without info messages.</li>

+	<li><span style="font-weight:bold;">only errors</span>: Logs only error messages.</li>

+</ul>

+<h2 id="details">Implementation Details</h2>

+<p>This services is based on the <a href="http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html">Apache ODF Validator</a> and Sun's <a href="https://msv.dev.java.net/">Multi-Schema XML Validator (MSV)</a> is used for all validation tasks.

+<p>The following actions take place before or during the validation:</p>

+<ul>

+	<li><p>A DTD document declaration within a <i>manifest.xml</i> file is ignored. For the logging level <span style="font-weight:bold;">verbose</span>, an information is displayed if this happens<br/><br/>

+			<span style="font-weight:bold;">Note:</span> Very early ODF implementations in OpenOffice.org wrongly included a document type declaration. Ignoring the document type enables the validation of the manifest despite of this error.

+		</p></li>

+	<li><p>A namespace &quot;http://openoffice.org/2001/manifest&quot; within a <i>manifest.xml</i> file is changed to &quot;urn:oasis:names:tc:opendocument:xmlns:manifest:1.0&quot;. For the logging level <span style="font-weight:bold;">verbose</span>, an information is displayed if this happens.<br/><br/>

+			<span style="font-weight:bold;">Note:</span> Early ODF implementations in OpenOffice.org used the wrong namespace. Changing it to the correct one enables the validation of the manifest despite the wrong namespace.</p></li>

+	<li><p>Namespaces defined in the <a href="http://www.oasis-open.org/committees/download.php/10765/office-spec-1.0-cd-2.pdf">ODF v1.0 Committee Draft 2</a> are replaced with those of the <a href="http://www.oasis-open.org/specs/index.php#opendocumentv1.0">ODF v1.0 OASIS Standard</a>. For the logging level <span style="font-weight:bold;">verbose</span>, an information is displayed if this happens.<br/><br/>

+			<span style="font-weight:bold;">Note:</span> Changing the namespaces enables the validation of documents that conform to the ODF v1.0 CD2. Such documents have been saved by OpenOffice.org 1.0 beta versions.</p></li>

+	<li><p>The value of <i>draw:points</i> attributes is truncated to 2048 characters. For the logging level <span style="font-weight:bold;">verbose</span>, an information is displayed if this happens.<br/><br/>

+			<span style="font-weight:bold;">Note:</span> The truncation of this attribute value avoids a stack overflow in MSV while validating the attribute value against a regular expression.</p></li>

+	<li><p>A namespace &quot;http://openoffice.org/2004/database&quot; within a <i>content.xml</i> file is changed to &quot;urn:oasis:names:tc:opendocument:xmlns:database:1.0&quot;, and a namespace &quot;http://openoffice.org/2004/office&quot; within a <i>content.xml</i> file is changed to &quot;urn:oasis:names:tc:opendocument:xmlns:office:1.0&quot;. For the logging level <span style="font-weight:bold;">verbose</span>, an information is displayed if this happens.<br><br>

+			<span style="font-weight:bold;">Note:</span> These namespaces were used in OpenOffice.org 2.x database documents, because database documents are included in OpenDocument since version 1.2 only. Changing them enables the validation of  OpenOffice.org 2.x database documents.</p></li>

+</ul>

+

+<p>The following schemas are being used:</p>

+<ul>

+	<li><p>MathML: The MathML2.0 Schema from <a href="http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsd">http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsd</a> is used for validation.<br/><br/>

+			<span style="font-weight:bold;">Note:</span> OpenOffice.org currently wrongly exports namespace prefixes for attributes. The validator reports this as an error.</p></li>

+	<li><p>OpenDocument <a href="http://relaxng.org/">RELAX NG</a> Schemas: The schemas used are those available on the <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#technical">OASIS OpenDocument Technical Committee web page</a><!--, except that <q>&lt;ref name=&quot;string&quot;&gt;</q> is replaced with <q>&lt;text/&gt;</q> when it defines the content model of an element. Reason is that the former leads to (wrong) validation errors within <a href="https://msv.dev.java.net/">MSV</a>-->.</p></li>

+</ul>

+

+<p><br /><input type="button" value="Back" onClick="history.go(-1)" /><br /><br /></p>

+

diff --git a/trunk/validator/src/main/webapp/jsp/validate.jsp b/trunk/validator/src/main/webapp/jsp/validate.jsp
new file mode 100644
index 0000000..f9ce124
--- /dev/null
+++ b/trunk/validator/src/main/webapp/jsp/validate.jsp
@@ -0,0 +1,183 @@
+<%--
+  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 regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+	  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+--%>
+<%@ page import="
+		 java.io.UnsupportedEncodingException,
+		 java.io.PrintStream,
+		 java.io.InputStream,
+		 java.io.ByteArrayOutputStream,
+		 java.io.File,
+		 org.apache.commons.fileupload.servlet.ServletFileUpload,
+		 org.apache.commons.fileupload.FileItemIterator,
+		 org.apache.commons.fileupload.FileItemStream,
+		 org.apache.commons.fileupload.util.Streams,
+		 org.odftoolkit.odfvalidator.ODFValidator,
+		 org.odftoolkit.odfvalidator.Logger,
+		 org.odftoolkit.odfvalidator.Configuration,
+		 org.odftoolkit.odfvalidator.OdfValidatorMode,
+		 org.odftoolkit.odfvalidator.ValidationMessageCollectorErrorFilter,
+		 org.odftoolkit.odfvalidator.OdfVersion" %>
+
+<%
+int loggingSelection = 0;
+int modeSelection = 0;
+if(ServletFileUpload.isMultipartContent(request)) {
+%><h1>ODF Validator Result Page</h1><%
+	ServletFileUpload upload = new ServletFileUpload();
+	FileItemIterator iter = upload.getItemIterator(request);
+	ODFValidator validator = null;
+	boolean result = false;
+	while (iter.hasNext()) {
+		FileItemStream item = iter.next();
+		InputStream stream = item.openStream();
+		/* The file item contains a simple name-value pair of a form field */
+		if(item.isFormField()) {
+			if("loggingSelection".equals(item.getFieldName())) {
+				loggingSelection = Integer.parseInt(Streams.asString(stream));
+			} else if("modeSelection".equals(item.getFieldName())) {
+				modeSelection = Integer.parseInt(Streams.asString(stream));
+			}
+		} else {
+			/* The file item contains an uploaded file */
+			if((stream != null) && (item.getName() != null) && (!item.getName().equals(""))) {
+				Logger.LogLevel aLogLevel = null;
+				switch (loggingSelection) {
+					case 2:
+						aLogLevel = Logger.LogLevel.ERROR;
+						break;
+					case 1:
+						aLogLevel = Logger.LogLevel.WARNING;
+						break;
+					default:
+						aLogLevel = Logger.LogLevel.INFO;
+						break;
+				}
+				OdfVersion aOdfVersion = null;
+				OdfValidatorMode odfValidatorMode = null;
+				switch (modeSelection) {
+					case 6:
+						aOdfVersion = OdfVersion.V1_0;
+						odfValidatorMode = OdfValidatorMode.VALIDATE;
+						break;
+					case 4:
+						aOdfVersion = OdfVersion.V1_1;
+						odfValidatorMode = OdfValidatorMode.VALIDATE;
+						break;
+					case 5:
+						aOdfVersion = OdfVersion.V1_0;
+						odfValidatorMode = OdfValidatorMode.VALIDATE_STRICT;
+						break;
+					case 3:
+						aOdfVersion = OdfVersion.V1_1;
+						odfValidatorMode = OdfValidatorMode.VALIDATE_STRICT;
+						break;
+					case 2:
+						odfValidatorMode = OdfValidatorMode.EXTENDED_CONFORMANCE;
+						aOdfVersion = OdfVersion.V1_2;
+						break;
+					case 1:
+						aOdfVersion = OdfVersion.V1_2;
+					default:
+						odfValidatorMode = OdfValidatorMode.CONFORMANCE;
+						break;
+				}				
+				validator = new ODFValidator(null, aLogLevel, true, aOdfVersion, true);				
+				ByteArrayOutputStream bout = null;
+				if(validator != null) {
+					out.println("<h2>Result for " + item.getName() + "</h2>");
+					bout = new ByteArrayOutputStream();
+					PrintStream pout = new PrintStream(bout, true, "UTF-8");
+					ValidationMessageCollectorErrorFilter filter = new ValidationMessageCollectorErrorFilter();
+					try {
+						result = !validator.validateStream(pout, stream, item.getName() , odfValidatorMode, filter);
+					} catch (Exception e) {
+						e.printStackTrace(pout);
+						result = false;
+					}
+				}				
+				if(result) {
+					out.println("<p class='valid'>The document is " + odfValidatorMode.toString()+ " ODF" + validator.getOdfVersion() + "!");
+				} else {
+					out.println("<p class='invalid'>The document is NOT " + odfValidatorMode.toString()+ " ODF" + validator.getOdfVersion() + "!");
+				}
+				String s = null;
+				try {
+					s = new String(bout.toByteArray(), "UTF-8");
+					s = s.replaceAll("&", "&amp;");
+					s = s.replaceAll("<", "&lt;");
+					s = s.replaceAll(">", "&gt;");
+					s = s.replaceAll("&lt;span class='info'&gt;", "<span class='info'>");
+					s = s.replaceAll("&lt;span class='warning'&gt;", "<span class='warning'>");
+					s = s.replaceAll("&lt;span class='error'&gt;", "<span class='error'>");
+					s = s.replaceAll("&lt;span class='fatalError'&gt;", "<span class='fatalError'>");
+					s = s.replaceAll("&lt;span class='filePath'&gt;", "<span class='filePath'>");
+					s = s.replaceAll("&lt;span class='messageType'&gt;", "<span class='messageType'>");					
+					s = s.replaceAll("&lt;/span&gt;&lt;/br&gt;", "</span></br>");				
+					s = s.replaceAll("&lt;/span&gt;", "</span>");
+				} catch (UnsupportedEncodingException use) {
+					out.println(use);
+				}
+				if(s != null && (s.length() > 0)) {					
+					out.println("</p><h3>Details:<br/></h3><div class='validationResult'>" + s + "</div>");
+				} else {
+					out.println("</p>");
+				}
+			}
+		}
+	}
+%><p><br/><input type="button" value="Back" onClick="history.go(-1)" /></p><%
+} else {
+	%><h1>ODF Validator</h1><p>This service checks conformance of ODF documents based on their OpenDocument Format specification. It does not cover all conformance criteria, yet (see <a href="info.html#details">implementation details</a>).</p>
+<form id="validationForm" action="<% out.println(request.getRequestURI()); %>" enctype="multipart/form-data" method="post">
+	<p class="selection"><a href="info.html">ODF Version</a>:<br/>
+		<select name="modeSelection" size="1" onChange="javascript: return setconfig();">
+			<option value="0" selected="">auto-detect</option>
+			<option value="1">OASIS ODF 1.2 (conforming)</option>
+			<option value="2">OASIS ODF 1.2 (extended conforming)</option>
+			<option value="3">OASIS ODF 1.1 (strict)</option>
+			<option value="4">OASIS ODF 1.1</option>
+			<option value="5">OASIS ODF 1.0 - ISO/IEC 26300 (strict)</option>
+			<option value="6">OASIS ODF 1.0 - ISO/IEC 26300</option>
+		</select>
+		<br/>
+	</p>
+	<p class="selection"><a href="info.html#logging">Logging</a>:
+		<br/><select name="loggingSelection" size="1">
+			<option value="0" selected="">verbose</option>
+			<option value="1">only warnings and errors</option>
+			<option value="2">only errors</option>
+		</select>
+		<br/>
+		<br/>
+		Choose ODF documents for validation:		
+		<br/>
+		<!-- HTML 5 Draft 20110914 does not allow maxlength attribute at input element:
+			maxlength="100000" -->
+		<input name="File" multiple="multiple" type="file" />
+		<br/>
+		<br/>
+		<br/>
+		<!-- HTML 5 Draft 20110914 does not allow alt attribute at input element:
+			alt="Press button to upload your documents and get them validated." -->
+		<input type="submit" value="Validate"  />
+		<!-- HTML 5 Draft 20110914 does not allow alt attribute at input element:
+			alt="To reset this formular press this button." -->		
+		<input type="reset"  value="Reset"  />
+	</p>
+</form>
+<%
+}
+%>
diff --git a/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java b/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
new file mode 100644
index 0000000..a27a669
--- /dev/null
+++ b/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
@@ -0,0 +1,110 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+/** Test some invalid packages.
+ */
+public class InvalidPackageTest extends OdfValidatorTestBase {
+
+	@Test
+	public void validatePackage1() {
+		String output = "";
+		try {
+			String name = "testInvalidPkg1.odt";
+			output = doValidation(name, null);
+		} catch (Throwable t) {
+			t.printStackTrace();
+			Assert.fail(t.toString());
+		}
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' is not the first file in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 7 errors, 10 warnings"));
+	}
+
+	@Test
+	public void validatePackage1_V1_1() {
+		String output = "";
+		try {
+			String name = "testInvalidPkg1.odt";
+			output = doValidation(name, OdfVersion.V1_1);
+		} catch (Throwable t) {
+			t.printStackTrace();
+			Assert.fail(t.toString());
+		}
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Warning: The file 'mimetype' is not the first file in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 10 errors, 11 warnings"));
+	}
+
+	@Test
+	public void validatePackage2() {
+		String output = "";
+		try {
+			String name = "testInvalidPkg2.odt";
+			output = doValidation(name, null);
+		} catch (Throwable t) {
+			t.printStackTrace();
+			Assert.fail(t.toString());
+		}
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Error: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 5 errors, 10 warnings"));
+	}
+
+	@Test
+	public void validatePackage2_V1_1() {
+		String output = "";
+		try {
+			String name = "testInvalidPkg2.odt";
+			output = doValidation(name, OdfVersion.V1_1);
+		} catch (Throwable t) {
+			t.printStackTrace();
+			Assert.fail(t.toString());
+		}
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Warning: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Warning: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
+		Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 7 errors, 12 warnings"));
+	}
+
+	@Test
+	public void validatePackage3() {
+		String output = "";
+		try {
+			String name = "testInvalidPkg3.odt";
+			output = doValidation(name, null);
+		} catch (Throwable t) {
+			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"));
+	}
+}
diff --git a/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java b/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java
new file mode 100644
index 0000000..d16d4c1
--- /dev/null
+++ b/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java
@@ -0,0 +1,62 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.PrintStream;
+import org.junit.Ignore;
+
+@Ignore
+public class OdfValidatorTestBase {
+
+    public OdfValidatorTestBase() {
+    }
+
+    String doValidation(String aFileName, OdfVersion aVersion) throws Exception {
+        ODFValidator aValidator = new ODFValidator(null, Logger.LogLevel.INFO, aVersion, true);
+        ByteArrayOutputStream aOut = new ByteArrayOutputStream();
+        PrintStream aPOut = new PrintStream(aOut);
+        InputStream aIn = getClass().getClassLoader().getResourceAsStream(aFileName);
+        aValidator.validateStream(aPOut, aIn, aFileName, OdfValidatorMode.VALIDATE, null);
+        return aOut.toString();
+    }
+
+    String doValidation(String aFileName, OdfVersion aVersion, OdfValidatorMode odfValidatorMode) throws Exception {
+        return doValidation(aFileName, aVersion, odfValidatorMode, false);				
+	}		
+	
+    String doValidation(String aFileName, OdfVersion aVersion, OdfValidatorMode odfValidatorMode, boolean htmlOutput) throws Exception {
+        ODFValidator aValidator = new ODFValidator(null, Logger.LogLevel.INFO, htmlOutput, aVersion, true);
+        ByteArrayOutputStream aOut = new ByteArrayOutputStream();
+        PrintStream aPOut = new PrintStream(aOut);
+        InputStream aIn = getClass().getClassLoader().getResourceAsStream(aFileName);
+		ValidationMessageCollectorErrorFilter filter = new ValidationMessageCollectorErrorFilter();
+		try {
+			aValidator.validateStream(aPOut, aIn, aFileName, odfValidatorMode, filter);
+		} catch (Exception e) {
+			e.printStackTrace(aPOut);			
+		}
+        return aOut.toString();							
+	}				
+}
diff --git a/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java b/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java
new file mode 100644
index 0000000..dc89ee4
--- /dev/null
+++ b/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java
@@ -0,0 +1,88 @@
+/************************************************************************
+ *
+ * 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.odfvalidator;
+
+import junit.framework.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/** Test some invalid packages.
+ */
+public class ValidTest extends OdfValidatorTestBase {
+
+    @Test
+    public void validate1() {
+        String output = "";
+        try {
+            String name = "empty.odt";
+            output = doValidation(name, OdfVersion.V1_0, OdfValidatorMode.VALIDATE_STRICT, true);						
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+		if(output.contains("Exception")){
+			System.out.println("OUTPUT:" + output);
+			Assert.fail("An exception occured during validation!");
+		}
+        Assert.assertTrue(output.contains("<span "));
+    }
+	
+    @Test
+	@Ignore
+    public void validate2() {
+        String output = "";
+        try {
+            String name = "testValid1.odt";
+            output = doValidation(name, null);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+		if(output.contains("Exception")){
+			System.out.println("OUTPUT:" + output);
+			Assert.fail("An exception occured during validation!");
+		}		
+        Assert.assertTrue(output.contains("testValid1.odt:Info:no errors, no warnings"));
+    }	
+
+   @Test
+   @Ignore
+    public void validate3() {
+        String output = "";
+        try {
+            String name = "empty.odt";
+            output = doValidation(name, OdfVersion.V1_0, OdfValidatorMode.VALIDATE_STRICT);				
+			output = doValidation(name, OdfVersion.V1_1, OdfValidatorMode.VALIDATE);
+			output = doValidation(name, OdfVersion.V1_2, null);			
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+		if(output.contains("Exception")){
+			System.out.println("OUTPUT:" + output);
+			Assert.fail("An exception occured during validation!");
+		}
+        //Assert.assertTrue(output.contains("dummy.odt:Info:no errors, no warnings"));
+    }	
+	
+}
diff --git a/trunk/validator/src/test/resources/config_template.properties b/trunk/validator/src/test/resources/config_template.properties
new file mode 100644
index 0000000..1766496
--- /dev/null
+++ b/trunk/validator/src/test/resources/config_template.properties
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<!--
+
+  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.
+
+-->
+<properties>
+<entry key="manifest-schema"/>
+<entry key="strict-schema"/>
+<entry key="schema"/>
+<entry key="mathml-schema"/>
+<entry key="mathml2-schema"/>
+<entry key="dsig-schema"/>
+<entry key="path1"/>
+<entry key="filter"/>
+</properties>
+
diff --git a/trunk/validator/src/test/resources/empty.odt b/trunk/validator/src/test/resources/empty.odt
new file mode 100644
index 0000000..c1b45ef
--- /dev/null
+++ b/trunk/validator/src/test/resources/empty.odt
Binary files differ
diff --git a/trunk/validator/src/test/resources/extract-schema.xsl b/trunk/validator/src/test/resources/extract-schema.xsl
new file mode 100644
index 0000000..4d02605
--- /dev/null
+++ b/trunk/validator/src/test/resources/extract-schema.xsl
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2011 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.
+
+-->
+
+<!-- This stylesheet extracts the ODF schemas from the ODF v1.0 and v1.1 -->
+<!-- specification.                                                      -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
+                xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+                xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0">
+    
+    <xsl:output method="text"/>
+    
+    <!-- Supported mode parameter values are: -->
+    <!-- 'schema': Extracts the schema -->
+    <!-- 'strict-schema': Extracts the strict schema defined in appendix A -->
+    <!-- 'manifest-schema': Extracts the manifest schema -->
+    <xsl:param name="mode" select="'schema'"/>
+       
+    <!-- map mode parameter to style names -->
+    <!-- which paragraph styles do we wish to extract? -->
+    <xsl:variable name="extract-style-name">
+        <xsl:choose>
+            <xsl:when test="$mode='strict-schema'">
+                <xsl:value-of select="'RelaxNG_20_Strict'"/>
+            </xsl:when>
+            <xsl:when test="$mode='manifest-schema'">
+                <xsl:value-of select="'RelaxNG_20_Manifest'"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:value-of select="'RelaxNG'"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:variable>
+
+    <!-- define 'styles' key. It selects all style:style element with a certain name -->
+    <xsl:key name="styles"
+             match="style:style"
+             use="@style:name" />
+
+    <!-- Look only at paragraphs -->
+    <xsl:template match="office:document-content">
+        <xsl:apply-templates select="office:body/office:text//text:p"/>
+    </xsl:template>
+
+    <!-- Analyze paragraphs -->
+    <xsl:template match="text:p">
+        <!-- determine all parent styles of this paragraph; use key 'parents' -->
+        <xsl:variable name="content-style-names" select="@text:style-name|key('styles',@text:style-name)/@style:parent-style-name"/>
+        <xsl:variable name="styles-style-names">
+            <xsl:for-each select="document('styles.xml',.)">
+                <xsl:value-of select="key('styles',$content-style-names)/@style:parent-style-name"/>
+            </xsl:for-each>
+        </xsl:variable>
+
+        <!-- if schema parent style is found, generate output -->
+        <xsl:if test="$content-style-names = $extract-style-name or $styles-style-names = $extract-style-name">
+            <xsl:apply-templates mode="output"/>
+            <xsl:text>
+</xsl:text>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- default: don't output anything -->
+    <xsl:template match="node()|@*"/>
+
+    <!-- generate output: just copy all text -->
+    <xsl:template mode="output" match="*">
+        <xsl:apply-templates mode="output"/>
+    </xsl:template>
+        
+    <xsl:template mode="output" match="text()">
+        <xsl:copy/>
+    </xsl:template>
+    
+    <!-- white space handling: <text:s>, <text:tab> elements  -->
+    <xsl:template mode="output" match="text:tab">
+        <xsl:text>    </xsl:text>
+    </xsl:template>
+    
+    <xsl:template mode="output" match="text:s">
+        <xsl:call-template name="repeat">
+            <xsl:with-param name="count" select="@text:c"/>
+            <xsl:with-param name="string" select="' '"/>
+        </xsl:call-template>
+    </xsl:template>
+    
+    <xsl:template name="repeat">
+        <xsl:param name="count"/>
+        <xsl:param name="string"/>
+        <xsl:if test="$count > 0">
+            <xsl:value-of select="$string"/>
+            <xsl:call-template name="repeat">
+                <xsl:with-param name="count" select="$count - 1"/>
+                <xsl:with-param name="string" select="$string"/>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template>
+    
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/validator/src/test/resources/filter.rng b/trunk/validator/src/test/resources/filter.rng
new file mode 100644
index 0000000..82ee930
--- /dev/null
+++ b/trunk/validator/src/test/resources/filter.rng
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+
+<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">
+    
+    <start>
+        <ref name="filter"/>
+    </start>
+
+    <define name="filter">
+        <element name="filter">
+            <ref name="filter-attlist"/>
+            <oneOrMore>
+                <ref name="filter-entry"/>
+            </oneOrMore>
+        </element>
+    </define>
+    
+    <define name="filter-attlist" combine="interleave">
+        <empty/>
+    </define>
+    
+    <define name="filter-entry">
+        <element name="filter-entry">
+            <ref name="filter-entry-attlist"/>
+            <text/>
+        </element>
+    </define>
+
+    <define name="filter-entry-attlist" combine="interleave">
+        <attribute name="task-id">
+            <data type="string">
+                 <param name="pattern">[a-z]?[0-9]+"</param>
+            </data>
+        </attribute>
+    </define>
+
+    <define name="filter-entry-attlist" combine="interleave">
+        <optional>
+            <attribute name="resolved-in">
+                <data type="integer"/>
+            </attribute>
+        </optional>
+    </define>
+    
+</grammar>
\ No newline at end of file
diff --git a/trunk/validator/src/test/resources/testInvalidPkg1.odt b/trunk/validator/src/test/resources/testInvalidPkg1.odt
new file mode 100644
index 0000000..6b38c41
--- /dev/null
+++ b/trunk/validator/src/test/resources/testInvalidPkg1.odt
Binary files differ
diff --git a/trunk/validator/src/test/resources/testInvalidPkg2.odt b/trunk/validator/src/test/resources/testInvalidPkg2.odt
new file mode 100644
index 0000000..cc5ed33
--- /dev/null
+++ b/trunk/validator/src/test/resources/testInvalidPkg2.odt
Binary files differ
diff --git a/trunk/validator/src/test/resources/testInvalidPkg3.odt b/trunk/validator/src/test/resources/testInvalidPkg3.odt
new file mode 100644
index 0000000..f43e49b
--- /dev/null
+++ b/trunk/validator/src/test/resources/testInvalidPkg3.odt
Binary files differ
diff --git a/trunk/validator/src/test/resources/testValid1.odt b/trunk/validator/src/test/resources/testValid1.odt
new file mode 100644
index 0000000..ea84819
--- /dev/null
+++ b/trunk/validator/src/test/resources/testValid1.odt
Binary files differ
diff --git a/trunk/xslt-runner-task/LICENSE.txt b/trunk/xslt-runner-task/LICENSE.txt
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/trunk/xslt-runner-task/LICENSE.txt
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/trunk/xslt-runner-task/README.txt b/trunk/xslt-runner-task/README.txt
new file mode 100644
index 0000000..6332fbe
--- /dev/null
+++ b/trunk/xslt-runner-task/README.txt
@@ -0,0 +1,43 @@
+*************************************************************
+* ODFXSLTRunner                                             *
+*                                                           *
+*************************************************************
+*                                                           *
+* Version: 1.1.0                                     *
+* Release Date: xx/xx/2010                                  *
+*                                                           *
+*************************************************************
+
+
+About ODF XSLT Runner Task
+--------------------------
+
+ODF XSLT Runner Task is a task definition for Ant which allows to apply
+XSLT stylesheets to ODF documents similar to Ant's build-in <xslt> task.
+It is based on ODFXSLTRunner.
+
+Documentation
+--------------
+
+In general, the Wiki page is a great place to start when looking for online
+documentation and other information about ODFXSLTRunnerTask.
+    http://odftoolkit.org/projects/odftoolkit/pages/ODFXSLTRunnerTask.
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
+
+Installation
+-------------
+
+Just put the file odfxsltrunner.jar in your classpath.
+
+You will need ODFXSLTRunner and ODFDOM. Get them from
+    http://odftoolkit.org/projects/odftoolkit
+    http://odftoolkit.org/projects/odfdom
+
+You will further need Apache Xerces-J. Get it from
+    http://xml.apache.org/dist/xerces-j/
diff --git a/trunk/xslt-runner-task/ant.properties b/trunk/xslt-runner-task/ant.properties
new file mode 100644
index 0000000..3449cb0
--- /dev/null
+++ b/trunk/xslt-runner-task/ant.properties
@@ -0,0 +1,39 @@
+########################################################################
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+#
+# Copyright 2009, 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.
+#
+########################################################################/
+
+# The following properties have to be set either in this file, or in the
+# nbproject/private/private.properties file of the project.
+
+# location of the odfxsltrunner project (This property cannot be set in private properties.
+project.odfxsltrunner=../conformancetools~odf-xslt-runner-src
+
+# ODF2XHTML style sheet
+reference.odf2xhtml.xsl=
+
+# saxon.jar
+reference.saxon.jar=
+
+# xmllint executable
+exec.xmllint=
+
+# xmllint path extensions
+exec.xmllint.path=
diff --git a/trunk/xslt-runner-task/build-xref.xml b/trunk/xslt-runner-task/build-xref.xml
new file mode 100644
index 0000000..4aa9419
--- /dev/null
+++ b/trunk/xslt-runner-task/build-xref.xml
@@ -0,0 +1,513 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<project name="odfxsltrunnertask-samples" default="default" basedir=".">
+    <description>Builds, tests, and runs the project odfxsltrunnertask.</description>
+    <import file="nbproject/build-impl.xml"/>
+
+    <property file="ant.properties" prefix="user"/>
+    <import file="${user.project.odfxsltrunner}/build-schemas.xml"/>
+
+    <target name="-post-init" depends="-init-schema-props"
+            description="Initialize schema properties">
+        <condition property="reference.odf2xhtml.xsl" value="${user.reference.odf2xhtml.xsl}">
+            <not>
+                <isset property="reference.odf2xhtml.xsl"/>
+            </not>
+        </condition>
+        <condition property="reference.saxon.jar" value="${user.reference.saxon.jar}">
+            <not>
+                <isset property="reference.saxon.jar"/>
+            </not>
+        </condition>
+        <condition property="exec.xmllint" value="${user.exec.xmllint}">
+            <not>
+                <isset property="exec.xmllint"/>
+            </not>
+        </condition>
+        <condition property="exec.xmllint.path" value="${user.exec.xmllint.path}">
+            <not>
+                <isset property="exec.xmllint.path"/>
+            </not>
+        </condition>
+    </target>
+
+    <target name="add-v12-all-parts-xref-product" depends="add-v12-part1-xref-product,add-v12-part2-xref-product,add-v12-part3-xref-product"
+            description="Add cross references to ODF 1.2 specification (all parts)."/>
+
+    <target name="add-v12-part0-xref-product" depends="init,jar"
+            description="Add cross references to ODF 1.2 part 0 specification.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part0.state.target}.odt"/>
+        <property name="part1.spec-target.noext" value="OpenDocument-v1.2${opendocument.v12.part1.target}"/>
+        <property name="part2.spec-target.noext" value="OpenDocument-v1.2${opendocument.v12.part2.target}"/>
+        <property name="part3.spec-target.noext" value="OpenDocument-v1.2${opendocument.v12.part3.target}"/>
+        <unzip src="${opendocument.v12.product.dir}/${part1.spec-target.noext}.odt" dest="${build.dir}/${part1.spec-target.noext}-odt">
+            <patternset>
+                <include name="content.xml"/>
+            </patternset>
+        </unzip>
+        <unzip src="${opendocument.v12.product.dir}/${part2.spec-target.noext}.odt" dest="${build.dir}/${part2.spec-target.noext}-odt">
+            <patternset>
+                <include name="content.xml"/>
+            </patternset>
+        </unzip>
+        <unzip src="${opendocument.v12.product.dir}/${part3.spec-target.noext}.odt" dest="${build.dir}/${part3.spec-target.noext}-odt">
+            <patternset>
+                <include name="content.xml"/>
+            </patternset>
+        </unzip>
+        <property name="part1-dir" location="${build.dir}/${part1.spec-target.noext}-odt"/>
+        <property name="part2-dir" location="${build.dir}/${part2.spec-target.noext}-odt"/>
+        <property name="part3-dir" location="${build.dir}/${part3.spec-target.noext}-odt"/>
+        <condition property="force">
+            <not>
+                <and>
+                    <uptodate srcfile="${part1-dir}/content.xml" targetfile="${target-file}"/>
+                    <uptodate srcfile="${part2-dir}/content.xml" targetfile="${target-file}"/>
+                    <uptodate srcfile="${part3-dir}/content.xml" targetfile="${target-file}"/>
+                </and>
+            </not>
+        </condition>
+
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/create-embedded-xref.xsl"
+                 in="${opendocument.v12.part0.spec-source}"
+                 out="${target-file}"
+                 force="${force}">
+            <param name="add-xrefs" expression="false"/>
+            <param name="keep-anchors" expression="false"/>
+            <param name="toc-hyperlink-mode" expression="adapt"/>
+            <param name="part1-content-path" expression="jar:file:${opendocument.v12.product.dir}/${part1.spec-target.noext}.odt!/content.xml"/>
+            <param name="part2-content-path" expression="jar:file:${opendocument.v12.product.dir}/${part2.spec-target.noext}.odt!/content.xml"/>
+            <param name="part3-content-path" expression="jar:file:${opendocument.v12.product.dir}/${part3.spec-target.noext}.odt!/content.xml"/>
+            <param name="part1-toc-rel-path" expression="${part1.spec-target.noext}.odt"/>
+            <param name="part2-toc-rel-path" expression="${part2.spec-target.noext}.odt"/>
+            <param name="part3-toc-rel-path" expression="${part3.spec-target.noext}.odt"/>
+        </odfxslt>
+    </target>
+
+    <target name="update-rel-paths v12-part0-xref-product" depends="init,jar"
+            description="Add cross references to ODF 1.2 part 0 specification.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part0.state.target}.odt"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/update-toc-rel-paths.xsl"
+                 in="${opendocument.v12.product.dir}/OpenDocument-v1.2${opendocument.v12.part0.state.target}-orig.odt"
+                 out="${target-file}">
+            <param name="state-new" expression="${opendocument.v12.part0.state.target}"/>
+        </odfxslt>
+    </target>
+
+    <target name="add-v12-part1-xref-editor-revision" depends="init,jar,-create-v12-xref-schema"
+            description="Add cross references to ODF 1.2 specification without removing anchors.">
+        <antcall target="-add-v12-part1-xref">
+            <param name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part1.target}-editor-revision.odt"/>
+            <param name="keep-anchors" value="true"/>
+        </antcall>
+    </target>
+
+    <target name="add-v12-part1-xref-product" depends="init,jar,-create-v12-xref-schema"
+            description="Add cross references to ODF 1.2 specification.">
+        <antcall target="-add-v12-part1-xref">
+            <param name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part1.target}.odt"/>
+            <param name="keep-anchors" value="false"/>
+        </antcall>
+    </target>
+
+    <target name="-add-v12-part1-xref" depends="init,jar,-create-v12-xref-schema"
+            description="Add cross references to ODF 1.2 specification.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="xref-schema-file" location="${build.dir}/schema/flat/${opendocument.v12.schema.xref}"/>
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${xref-schema-file}" targetfile="${target-file}"/>
+            </not>
+        </condition>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/create-embedded-xref.xsl"
+                 in="${opendocument.v12.part1.spec-source}"
+                 out="${target-file}"
+                 force="${force}">
+            <param name="xref-schema-file" expression="${xref-schema-file}"/>
+            <param name="add-xrefs" expression="true"/>
+            <param name="keep-anchors" expression="${keep-anchors}"/>
+        </odfxslt>
+    </target>
+
+    <target name="add-v12-part2-xref-product" depends="init,jar"
+            description="Add cross references to ODF 1.2 specification.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part2.target}.odt"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/create-embedded-xref.xsl"
+                 in="${opendocument.v12.part2.spec-source}"
+                 out="${target-file}"
+                 force="false">
+            <param name="add-xrefs" expression="true"/>
+            <param name="keep-anchors" expression="false"/>
+        </odfxslt>
+    </target>
+
+    <target name="add-v12-part3-xref-editor-revision" depends="init,jar,-create-v12-manifest-xref-schema"
+            description="Add cross references to ODF 1.2 specification without removing anchors.">
+        <antcall target="-add-v12-part3-xref">
+            <param name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part3.target}-editor-revision.odt"/>
+            <param name="keep-anchors" value="true"/>
+        </antcall>
+    </target>
+
+    <target name="add-v12-part3-xref-product" depends="init,jar,-create-v12-manifest-xref-schema"
+            description="Add cross references to ODF 1.2 specification.">
+        <antcall target="-add-v12-part3-xref">
+            <param name="target-file" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part3.target}.odt"/>
+            <param name="keep-anchors" value="false"/>
+        </antcall>
+    </target>
+
+    <target name="-add-v12-part3-xref" depends="init,jar,-create-v12-manifest-xref-schema"
+            description="Add cross references to ODF 1.2 specification.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="xref-schema-file" location="${build.dir}/schema/flat/${opendocument.v12.manifest-schema.xref}"/>
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${xref-schema-file}" targetfile="${target-file}"/>
+            </not>
+        </condition>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/create-embedded-xref.xsl"
+                 in="${opendocument.v12.part3.spec-source}"
+                 out="${target-file}"
+                 force="${force}">
+            <param name="xref-schema-file" expression="${xref-schema-file}"/>
+            <param name="add-xrefs" expression="true"/>
+            <param name="keep-anchors" expression="${keep-anchors}"/>
+        </odfxslt>
+    </target>
+
+    <target name="check-v12-part1-xref" depends="init,jar"
+            description="Check cross references in ODF 1.2 part 1.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="target-file-name" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part1.target}"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/check-xrefs.xsl"
+                 in="${target-file-name}.odt"
+                 outfile="${target-file-name}.log"
+                 force="false"/>
+    </target>
+
+    <target name="check-v12-part2-xref" depends="init,jar"
+            description="Check cross references to ODF 1.2 part 2.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="target-file-name" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part2.target}"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/check-xrefs.xsl"
+                 in="${target-file-name}.odt"
+                 outfile="${target-file-name}.log"
+                 force="false"/>
+    </target>
+
+    <target name="check-v12-part3-xref" depends="init,jar"
+            description="Chack cross references to ODF 1.2 part 3.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="target-file-name" value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part3.target}"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/check-xrefs.xsl"
+                 in="${target-file-name}.odt"
+                 outfile="${target-file-name}.log"
+                 force="false"/>
+    </target>
+
+    <target name="check-v12-part1-completeness" depends="init,-create-v12-xref-schema"
+            description="Check whether all elements and attributes of the ODF 1.2 schema appear in the ODF 1.2 part 1 specification document.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="xref-schema-file" location="${build.dir}/schema/flat/${opendocument.v12.schema.xref}"/>
+        <property name="check-log-file" location="${dist.dir}/OpenDocument-v1.2${opendocument.v12.part1.target}-check.log"/>
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${xref-schema-file}" targetfile="${check-log-file}"/>
+            </not>
+        </condition>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/check-completeness.xsl"
+            in="${opendocument.v12.part1.spec-source}"
+            outfile="${check-log-file}"
+            force="${force}">
+            <param name="xref-schema-file" expression="${xref-schema-file}"/>
+            <param name="attributes-heading-level" expression="1"/>
+        </odfxslt>
+    </target>
+
+    <target name="check-v12-part3-completeness" depends="init,-create-v12-manifest-xref-schema"
+            description="Check whether all elements and attributes of the ODF 1.2 schema appear in the ODF 1.2 part 1 specification document.">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="xref-schema-file" location="${build.dir}/schema/flat/${opendocument.v12.manifest-schema.xref}"/>
+        <property name="check-log-file" location="${dist.dir}/OpenDocument-v1.2${opendocument.v12.part3.target}-check.log"/>
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${xref-schema-file}" targetfile="${check-log-file}"/>
+            </not>
+        </condition>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/check-completeness.xsl"
+            in="${opendocument.v12.part3.spec-source}"
+            outfile="${check-log-file}"
+            force="${force}">
+            <param name="xref-schema-file" expression="${xref-schema-file}"/>
+            <param name="attributes-heading" expression="Manifest Attributes"/>
+            <param name="attributes-heading-level" expression="2"/>
+        </odfxslt>
+    </target>
+
+    <target name="create-v12-html-zip" depends="init"
+            description="Create XHTML versions of all ODF 1.2 parts and zip them.">
+		<antcall target="create-v12-part0-html"/>
+		<antcall target="create-v12-part1-html"/>
+		<antcall target="create-v12-part2-html"/>
+		<antcall target="create-v12-part3-html"/>
+        <zip destfile="${dist.dir}/OpenDocument-v1.2${opendocument.v12.part0.state.target}.html.zip">
+            <zipfileset dir="${dist.dir}/html${opendocument.v12.part0.state.target}"/>
+        </zip>
+    </target>
+
+
+    <target name="create-v12-part0-html" depends="-create-v12-part0-html-properties,-create-v12-html"
+            description="Create XHTML version of ODF 1.2 part 0 specification."/>
+
+    <target name="create-v12-part1-html" depends="-create-v12-part1-html-properties,-create-v12-html"
+            description="Create XHTML version of ODF 1.2 part 1 specification."/>
+
+    <target name="create-v12-part2-html" depends="-create-v12-part2-html-properties,-create-v12-html"
+            description="Create XHTML version of ODF 1.2 part 2 specification."/>
+
+    <target name="create-v12-part3-html" depends="-create-v12-part3-html-properties,-create-v12-html"
+            description="Create XHTML version of ODF 1.2 part 3 specification."/>
+
+    <target name="-create-v12-part0-html-properties" depends="init">
+        <property name="part" value=""/>
+        <property name="state.target" value="${opendocument.v12.part0.state.target}"/>
+        <property name="postprocess-style" value="${project.odfxsltrunner}/sample_xslt/adapt-html-hrefs.xsl"/>
+    </target>
+
+    <target name="-create-v12-part1-html-properties" depends="init">
+        <property name="part" value="-part1"/>
+        <property name="state.target" value="${opendocument.v12.part1.state.target}"/>
+        <property name="contains-math-objects" value="true"/>
+    </target>
+
+    <target name="-create-v12-part2-html-properties" depends="init">
+        <property name="part" value="-part2"/>
+        <property name="state.target" value="${opendocument.v12.part2.state.target}"/>
+        <property name="contains-math-objects" value="true"/>
+    </target>
+
+    <target name="-create-v12-part3-html-properties" depends="init">
+        <property name="part" value="-part3"/>
+        <property name="state.target" value="${opendocument.v12.part3.state.target}"/>
+    </target>
+
+    <target name="-create-v12-html" depends="-create-v12-nomath,-create-v12-html-transform,-create-v12-html-postprocess,-create-v12-html-copy-images"/>
+
+    <target name="-create-v12-html-transform" depends="init">
+        <condition property="html-source" value="${dist.dir}/nomath/OpenDocument-v1.2${state.target}${part}-nomath.odt" else="${opendocument.v12.product.dir}/OpenDocument-v1.2${state.target}${part}.odt">
+            <isset property="contains-math-objects"/>
+        </condition>
+        <condition property="html-target" value="${build.dir}/html${state.target}/OpenDocument-v1.2${state.target}${part}.html" else="${dist.dir}/html${state.target}/OpenDocument-v1.2${state.target}${part}.html">
+            <isset property="postprocess-style"/>
+        </condition>
+        <dirname property="reference.odf2xhtml.xsl.dir2" file="${reference.odf2xhtml.xsl}"/>
+        <dirname property="reference.odf2xhtml.xsl.dir" file="${reference.odf2xhtml.xsl.dir2}"/>
+        <condition property="force">
+            <not>
+                <uptodate targetfile="${html-target}">
+                    <srcfiles dir="${reference.odf2xhtml.xsl.dir}">
+                        <include name="**/*.xsl"/>
+                    </srcfiles>
+                </uptodate>
+            </not>
+        </condition>
+        <taskdef name="odfxslt-saxon" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}:${reference.saxon.jar}"/>
+        <odfxslt-saxon style="${reference.odf2xhtml.xsl}"
+                 in="${html-source}"
+                 outfile="${html-target}"
+                 force="${force}">
+                 <factory name="net.sf.saxon.TransformerFactoryImpl"/>
+        </odfxslt-saxon>
+    </target>
+
+    <target name="-create-v12-html-postprocess" depends="init" if="postprocess-style">
+        <xslt style="${postprocess-style}"
+                 in="${build.dir}/html${state.target}/OpenDocument-v1.2${state.target}${part}.html"
+                 out="${dist.dir}/html${state.target}/OpenDocument-v1.2${state.target}${part}.html"
+                 force="false">
+          <xmlcatalog>
+                <dtd
+                    publicId="-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+                    location="${project.odfxsltrunner}/sample_xslt/dummy.dtd"/>
+           </xmlcatalog>
+        </xslt>
+    </target>
+
+    <target name="-create-v12-html-copy-images" depends="init">
+        <property name="html-image-list" value="${build.dir}/OpenDocument-v1.2${state.target}${part}-image-list.txt"/>
+        <xslt in="${dist.dir}/html${state.target}/OpenDocument-v1.2${state.target}${part}.html"
+             out="${html-image-list}"
+             style="${project.odfxsltrunner}/sample_xslt/create-html-img-list.xsl">
+            <xmlcatalog>
+                <dtd
+                    publicId="-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+                    location="${project.odfxsltrunner}/sample_xslt/dummy.dtd"/>
+           </xmlcatalog>
+        </xslt>
+
+        <unzip src="${html-source}" dest="${dist.dir}/html${state.target}">
+            <patternset includesfile="${html-image-list}"/>
+        </unzip>
+    </target>
+
+
+    <target name="create-v12-part1-nomath" depends="-create-v12-part1-html-properties,-create-v12-nomath"
+            description="Create a version of ODF 1.2 part 1 specification that does not contain MathML."/>
+
+    <target name="create-v12-part2-nomath" depends="-create-v12-part2-html-properties,-create-v12-nomath"
+            description="Create a version of ODF 1.2 part 2 specification that does not contain MathML."/>
+
+
+    <target name="-create-v12-nomath" depends="jar,-create-v12-ooo-xhtml" if="contains-math-objects">
+        <property name="target-file" value="${dist.dir}/nomath/OpenDocument-v1.2${state.target}${part}-nomath.odt"/>
+        <property name="image-list" value="${build.dir}/OpenDocument-v1.2${state.target}${part}-replace-mathml-image-list.txt"/>
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${ooo-xhtml}" targetfile="${target-file}"/>
+            </not>
+        </condition>
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/replace-objects.xsl"
+                 in="${opendocument.v12.product.dir}/OpenDocument-v1.2${state.target}${part}.odt"
+                 out="${target-file}"
+                 force="${force}">
+            <param name="ref-html" expression="${ooo-xhtml}"/>
+        </odfxslt>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/replace-objects-list.xsl"
+                 in="${opendocument.v12.product.dir}/OpenDocument-v1.2${state.target}${part}.odt"
+                 outfile="${image-list}"
+                 force="${force}">
+            <param name="ref-html" expression="${ooo-xhtml}"/>
+        </odfxslt>
+        <zip destfile="${target-file}" compress="false" update="true">
+            <zipfileset dir="${ooo-html.dir}" includesfile="${image-list}" prefix="Pictures"/>
+        </zip>
+    </target>
+
+    <target name="-create-v12-ooo-xhtml" depends="-create-v12-ooo-xhtml-check" if="ooo-xhtml.notuptodate">
+        <!-- Create xhtml file from OOo HTML output file -->
+        <exec executable="${exec.xmllint}">
+            <env key="PATH" path="${exec.xmllint.path}"/>
+            <arg value="--html"/>
+            <arg value="--xmlout"/>
+            <arg value="--dropdtd"/>
+            <arg value="-o"/>
+            <arg value="${ooo-xhtml}"/>
+            <arg value="${ooo-html}"/>
+        </exec>
+    </target>
+
+    <target name="-create-v12-ooo-xhtml-check" depends="init" if="contains-math-objects">
+        <property name="ooo-html.dir" location="${opendocument.v12.product.dir}/ooo-html${state.target}"/>
+        <property name="ooo-html" value="${ooo-html.dir}/OpenDocument-v1.2${state.target}${part}.html"/>
+        <property name="ooo-xhtml" location="${build.dir}/OpenDocument-v1.2${state.target}${part}-ooo.html"/>
+        <condition property="ooo-html.exists">
+            <available file="${ooo-html}"/>
+        </condition>
+        <fail message="OOo HTML version ${ooo-html} does not exist" unless="ooo-html.exists"/>
+        <condition property="ooo-xhtml.notuptodate">
+            <and>
+                <isset property="ooo-html.exists"/>
+                <not>
+                    <uptodate srcfile="${ooo-html}" targetfile="${ooo-xhtml}"/>
+                </not>
+            </and>
+        </condition>
+    </target>
+
+
+
+    <target name="add-v12-part-default-values" depends="init,-create-v12-xref-schema"
+            description="Add default value definoitions to ODF 1.2 part 1">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <property name="xref-schema-file" location="${build.dir}/schema/flat/${opendocument.v12.schema.xref}"/>
+        <property name="target-file" value="${dist.dir}/default-values/OpenDocument-v1.2${opendocument.v12.part1.state.target}.odt"/>
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${xref-schema-file}" targetfile="${target-file}"/>
+            </not>
+        </condition>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/add-default-values.xsl"
+            in="${opendocument.v12.part1.spec-source}"
+            out="${target-file}"
+            force="${force}">
+            <param name="xref-schema-file" expression="${xref-schema-file}"/>
+        </odfxslt>
+    </target>
+
+    <target name="create-v12-attribute-xref-ods" depends="init,jar,-create-v12-dtype-schema"
+            description="Create a spreadsheet listing ODF 1.2 part 1 attributes">
+        <taskdef name="odfxslt" classname="org.odftoolkit.odfxsltrunnertask.ODFXSLTRunnerTask" classpath="${dist.jar}:${reference.odfxsltrunner.jar}"/>
+        <copy file="${project.odfxsltrunner}/misc/odf-attribute-xref.ods" todir="${dist.dir}/attr-xref"/>
+        <odfxslt style="${project.odfxsltrunner}/sample_xslt/create-attribute-xref.xsl"
+            infile="${build.dir}/schema/flat/${opendocument.v12.schema.dtype}"
+            out="${dist.dir}/attr-xref/odf-attribute-xref.ods"
+            template="true"/>
+    </target>
+
+    <target name="-create-v12-xref-schema" depends="init">
+        <xslt style="${project.odfxsltrunner}/sample_xslt/create-flat-schema.xsl" 
+                    in="${opendocument.v12.part1.schema.dir}/${opendocument.v12.schema}"
+                    out="${build.dir}/schema/flat/${opendocument.v12.schema.xref}"
+                    force="false">
+            <param name="incl-conditions" expression="true"/>
+            <param name="incl-default-values" expression="true"/>
+            <param name="incl-types" expression="true"/>
+            <param name="incl-elements" expression="true"/>
+        </xslt>
+    </target>
+
+    <target name="-create-v12-manifest-xref-schema" depends="init">
+        <xslt style="${project.odfxsltrunner}/sample_xslt/create-flat-schema.xsl"
+                    in="${opendocument.v12.part3.schema.dir}/${opendocument.v12.schema.manifest}"
+                    out="${build.dir}/schema/flat/${opendocument.v12.manifest-schema.xref}"
+                    force="false">
+            <param name="incl-conditions" expression="true"/>
+            <param name="incl-default-values" expression="true"/>
+            <param name="incl-types" expression="true"/>
+            <param name="incl-elements" expression="true"/>
+        </xslt>
+    </target>
+
+    <target name="-create-v12-dtype-schema" depends="init">
+        <condition property="force">
+            <not>
+                <uptodate srcfile="${opendocument.v12.part1.schema.dir}/${opendocument.v12.schema}" targetfile="${build.dir}/schema/flat/${opendocument.v12.schema.dtype}"/>
+            </not>
+        </condition>
+        <xslt style="${project.odfxsltrunner}/sample_xslt/create-flat-schema.xsl" 
+                    in="${opendocument.v12.part1.schema.dir}/${opendocument.v12.schema}"
+                    out="${build.dir}/schema/flat/${opendocument.v12.schema.dtype}"
+                    force="${force}">  
+            <param name="incl-conditions" expression="false"/>
+            <param name="incl-default-values" expression="true"/>
+            <param name="incl-types" expression="true"/>
+            <param name="incl-elements" expression="false"/>
+        </xslt>
+    </target>
+
+</project>
diff --git a/trunk/xslt-runner-task/build.xml b/trunk/xslt-runner-task/build.xml
new file mode 100644
index 0000000..b82ab09
--- /dev/null
+++ b/trunk/xslt-runner-task/build.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<project name="odfxsltrunnertask" default="default" basedir=".">
+    <description>Builds, tests, and runs the project odfxsltrunnertask.</description>
+    <import file="nbproject/build-impl.xml"/>
+
+    <target name="-post-jar" depends="init">
+        <copy todir="${dist.dir}">
+            <filelist dir="." files="LICENSE.txt README.txt" />
+        </copy>
+        <delete file="${dist.dir}/README.TXT"/>
+        <zip destfile="${dist.dir}/odfxsltrunnertask.zip" update="true">
+            <zipfileset dir="${dist.dir}" includes="*.jar,*.txt"/>
+        </zip>
+    </target>
+    
+</project>
diff --git a/trunk/xslt-runner-task/nbproject/build-impl.xml b/trunk/xslt-runner-task/nbproject/build-impl.xml
new file mode 100644
index 0000000..fe85e98
--- /dev/null
+++ b/trunk/xslt-runner-task/nbproject/build-impl.xml
@@ -0,0 +1,908 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - junit compilation
+  - junit execution
+  - junit debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="odfxsltrunnertask-impl">
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <available file="${manifest.file}" property="manifest.available"/>
+        <available file="${application.splash}" property="splashscreen.available"/>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class.available"/>
+            </and>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="do.mkdist"/>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available+splashscreen.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available}"/>
+                <istrue value="${splashscreen.available}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <not>
+                <istrue value="${jar.archive.disabled}"/>
+            </not>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available+splashscreen.available}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <length length="0" string="${endorsed.classpath}" when="greater"/>
+        </condition>
+        <property name="javac.fork" value="false"/>
+        <property name="jar.index" value="false"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete file="${javac.includesfile.binary}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <sequential>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <classpath>
+                        <path path="${run.test.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: odfxsltrunnertask was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+        <antcall target="-maybe-call-dep">
+            <param name="call.built.properties" value="${built-jar.properties}"/>
+            <param location="${project.odfxsltrunner}" name="call.subproject"/>
+            <param location="${project.odfxsltrunner}/build.xml" name="call.script"/>
+            <param name="call.target" value="jar"/>
+            <param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
+        </antcall>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available">
+        <j2seproject1:jar/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
+        <j2seproject1:jar manifest="${manifest.file}"/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available" name="-do-jar-with-libraries-and-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <j2seproject3:copylibs>
+            <customize>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+            </customize>
+        </j2seproject3:copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries" unless="splashscreen.available">
+        <j2seproject3:copylibs>
+            <customize>
+                <attribute name="Main-Class" value="${main.class}"/>
+            </customize>
+        </j2seproject3:copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries-and-splashscreen,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                JUNIT COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                JUNIT EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:junit testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:junit excludes="" includes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <!--
+                =======================
+                JUNIT DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+        <delete file="${test.report.file}"/>
+        <mkdir dir="${build.test.results.dir}"/>
+        <j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
+            <customize>
+                <syspropertyset>
+                    <propertyref prefix="test-sys-prop."/>
+                    <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                </syspropertyset>
+                <arg value="${test.class}"/>
+                <arg value="showoutput=true"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: odfxsltrunnertask was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+        <antcall target="-maybe-call-dep">
+            <param name="call.built.properties" value="${built-clean.properties}"/>
+            <param location="${project.odfxsltrunner}" name="call.subproject"/>
+            <param location="${project.odfxsltrunner}/build.xml" name="call.script"/>
+            <param name="call.target" value="clean"/>
+            <param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
+        </antcall>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <not>
+                <isset property="already.built.${call.subproject}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>
diff --git a/trunk/xslt-runner-task/nbproject/genfiles.properties b/trunk/xslt-runner-task/nbproject/genfiles.properties
new file mode 100644
index 0000000..eb867c3
--- /dev/null
+++ b/trunk/xslt-runner-task/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=1dc1c738
+build.xml.script.CRC32=1494076f
+build.xml.stylesheet.CRC32=be360661
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=1dc1c738
+nbproject/build-impl.xml.script.CRC32=03fdfbcb
+nbproject/build-impl.xml.stylesheet.CRC32=229523de@1.38.3.45
diff --git a/trunk/xslt-runner-task/nbproject/project.properties b/trunk/xslt-runner-task/nbproject/project.properties
new file mode 100644
index 0000000..417297e
--- /dev/null
+++ b/trunk/xslt-runner-task/nbproject/project.properties
@@ -0,0 +1,66 @@
+application.desc=Ant Taks for applying XSLT styles sheets to OpenDocument packages.
+application.homepage=http://odftoolkit.org/projects/conformancetools/pages/ODFXSLTRunnerTask
+application.title=ODF XSLT Runner Task
+application.vendor=Oracle
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/odfxsltrunnertask.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+excludes=
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${reference.odfxsltrunner.jar}:\
+    ${ant.core.lib}
+# Space-separated list of extra javac options
+javac.compilerargs=-Xlint:deprecation
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}:\
+    ${libs.junit_4.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+project.odfxsltrunner=../conformancetools~odf-xslt-runner-src
+reference.odfxsltrunner.jar=${project.odfxsltrunner}/dist/odfxsltrunner.jar
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/trunk/xslt-runner-task/nbproject/project.xml b/trunk/xslt-runner-task/nbproject/project.xml
new file mode 100644
index 0000000..b306438
--- /dev/null
+++ b/trunk/xslt-runner-task/nbproject/project.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>odfxsltrunnertask</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+        <references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
+            <reference>
+                <foreign-project>odfxsltrunner</foreign-project>
+                <artifact-type>jar</artifact-type>
+                <script>build.xml</script>
+                <target>jar</target>
+                <clean-target>clean</clean-target>
+                <id>jar</id>
+            </reference>
+        </references>
+    </configuration>
+</project>
diff --git a/trunk/xslt-runner-task/pom.xml b/trunk/xslt-runner-task/pom.xml
new file mode 100644
index 0000000..207c3a8
--- /dev/null
+++ b/trunk/xslt-runner-task/pom.xml
@@ -0,0 +1,75 @@
+ <!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.odftoolkit</groupId>
+    <artifactId>odftoolkit</artifactId>
+    <version>0.6.1-incubating</version>
+  </parent>
+
+  <artifactId>xslt-runner-task</artifactId>
+  <name>ODF XSLT-Runner Ant Task</name>
+  <version>1.2.3-incubating</version>
+  
+  <organization>
+    <name>The Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+  </organization>
+  <dependencies>
+	<dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>xslt-runner</artifactId>
+      <version>1.2.3-incubating</version>
+	</dependency>	
+    <dependency>
+      <groupId>org.apache.ant</groupId>
+      <artifactId>ant</artifactId>
+    </dependency>
+  </dependencies>
+
+
+
+  <!-- Build Settings -->
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.3.2</version>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <meminitial>512m</meminitial>
+          <maxmem>1024m</maxmem>
+          <showDeprecation>true</showDeprecation>
+        </configuration>
+    </plugin>
+        <plugin>
+            <groupId>org.apache.rat</groupId>
+            <artifactId>apache-rat-plugin</artifactId>
+            <configuration>
+                <excludes>
+                    <exclude>nbproject/**</exclude>
+                </excludes>
+            </configuration>
+        </plugin>
+ </plugins>
+</build>
+</project>
diff --git a/trunk/xslt-runner-task/src/main/java/org/odftoolkit/odfxsltrunnertask/AntLogger.java b/trunk/xslt-runner-task/src/main/java/org/odftoolkit/odfxsltrunnertask/AntLogger.java
new file mode 100644
index 0000000..7156bec
--- /dev/null
+++ b/trunk/xslt-runner-task/src/main/java/org/odftoolkit/odfxsltrunnertask/AntLogger.java
@@ -0,0 +1,95 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunnertask;
+
+import org.odftoolkit.odfxsltrunner.Logger;
+import org.apache.tools.ant.Project;
+
+class AntLogger extends Logger 
+{
+    static final String LINE_PREFIX = ": line ";
+    
+    private Project m_aProject = null;
+    
+    /** Creates a new instance of AntLogger */
+    AntLogger( Project aProject )     
+    {
+        m_aProject = aProject;
+    }
+    
+    /**
+     * Log a message.
+     * 
+     * @param aPrefix Message prefix
+     * @param aMsg Message text
+     * @param aLocation file, row and column number as text (optional)
+     * @param nLevel the warning level (one of INFO, WARNING or ERROR)
+     */
+    protected void logMessage( String aPrefix, String aMsg, String aLocation, int nLevel  )
+    {
+        int nAntLevel = nLevel == ERROR ? Project.MSG_ERR : (nLevel == WARNING ? Project.MSG_WARN : Project.MSG_INFO);
+        
+        StringBuffer aOut = new StringBuffer( aLocation != null ? aLocation : getName() );
+        aOut.append( ": " );
+        aOut.append( aPrefix );
+        aOut.append( ':' );
+        aOut.append( aMsg );
+
+        m_aProject.log( aOut.toString(), nAntLevel );
+    }
+
+    /**
+     * Log a message.
+     * 
+     * @param aPrefix Message prefix
+     * @param aMsgWithLocation Message text including location information
+     * @param nLevel the warning level (one of INFO, WARNING or ERROR)
+     */
+    protected void logMessageWithLocation( String aPrefix, String aMsgWithLocation, int nLevel )
+    {
+        int nAntLevel = nLevel == ERROR ? Project.MSG_ERR : (nLevel == WARNING ? Project.MSG_WARN : Project.MSG_INFO);
+
+        StringBuffer aOut = new StringBuffer( aMsgWithLocation );
+        
+        // remove a " line" from the line number information
+        int nPos = aOut.indexOf( LINE_PREFIX );
+        if( nPos != -1 )
+        {
+            aOut.delete(nPos+1, nPos+LINE_PREFIX.length() );
+            nPos = aOut.indexOf( ": ", nPos);
+        }
+        if( nPos != -1 )
+        {
+            aOut.insert(nPos+2, ':' );
+            aOut.insert(nPos+2, aPrefix );
+        }
+        else
+        {
+            aOut.append( " (" );
+            aOut.append( aPrefix );
+            aOut.append( ')' );
+        }
+
+        m_aProject.log( aOut.toString(), nAntLevel );
+    }
+}
diff --git a/trunk/xslt-runner-task/src/main/java/org/odftoolkit/odfxsltrunnertask/ODFXSLTRunnerTask.java b/trunk/xslt-runner-task/src/main/java/org/odftoolkit/odfxsltrunnertask/ODFXSLTRunnerTask.java
new file mode 100644
index 0000000..832e3f6
--- /dev/null
+++ b/trunk/xslt-runner-task/src/main/java/org/odftoolkit/odfxsltrunnertask/ODFXSLTRunnerTask.java
@@ -0,0 +1,341 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunnertask;
+
+// IMPORTANT! You need to compile this class against ant.jar.
+// The easiest way to do this is to add ${ant.core.lib} to your project's classpath.
+// For example, for a plain Java project with no other dependencies, set in project.properties:
+// javac.classpath=${ant.core.lib}
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Vector;
+import org.odftoolkit.odfxsltrunner.Logger;
+import org.odftoolkit.odfxsltrunner.ODFXSLTRunner;
+import org.odftoolkit.odfxsltrunner.XSLTParameter;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+import org.apache.tools.ant.taskdefs.Mkdir;
+
+/**
+ * Ant Taks for applying XSLT style sheets to ODF packages.
+ */
+public class ODFXSLTRunnerTask extends Task {
+
+    private File m_aStyleSheet = null;
+    private File m_aInput = null;
+    private File m_aInputFile = null;
+    private File m_aOutput = null;
+    private File m_aOutputFile = null;
+    private String m_aPath = "content.xml";
+    private Vector<XSLTParameter> m_aParams = null;
+    private Factory m_aFactory = null;
+    boolean m_bForce = false;
+    boolean m_bTemplate = false;
+    
+    /**
+     * Set input package. The specified path within the package is the source of 
+     * the transformation.
+     * 
+     * @param aIn Input package
+     */
+    public void setIn( File aIn )
+    {
+        m_aInput = aIn;
+    }
+
+    /**
+     * Set input file. This (XML) file is used directly as source of the 
+     * transformation.
+     * 
+     * @param aInFile Input File
+     */
+    public void setInFile( File aInFile )
+    {
+        m_aInputFile = aInFile;
+    }
+
+    /**
+     * Set output package. The source of the transformation is stored in a 
+     * package with this name.
+     * 
+     * @param aOut
+     */
+    public void setOut( File aOut )
+    {
+        m_aOutput = aOut;
+    }
+
+    /**
+     * Set output file. The source of the transformation is stored under this
+     * name as plain (XML) file.
+     * 
+     * @param aOutFile
+     */
+    public void setOutFile( File aOutFile )
+    {
+        m_aOutputFile = aOutFile;
+    }
+
+    /**
+     * Set the style sheet to apply.
+     * 
+     * @param aStyle
+     */
+    public void setStyle( File aStyle )
+    {
+        m_aStyleSheet = aStyle;
+    }
+
+    /**
+     * Sets template mode. In template mode, the output package must exist,
+     * and the specified path within the output file is replaced with the result
+     * of the transformation
+     * 
+     * @param bTemplate Template mode
+     */
+    public void setTemplate( boolean bTemplate )
+    {
+        m_bTemplate = bTemplate;
+    }
+    
+    /**
+     * Set force mode. In this mode, the style sheet is applied even if the
+     * output file or package is newer than the source and the style sheet.
+     * 
+     * @param bForce
+     */
+    public void setForce( boolean bForce )
+    {
+        m_bForce = bForce;
+    }
+
+
+    /**
+     * Paramter class for nested <param> elements.
+     */
+    public static class Param implements XSLTParameter
+    {
+        private String m_aName = null;
+        private String m_aValue = null;
+
+        Param()
+        {
+        }
+
+        /**
+         * Set parameter name.
+         * @param aName
+         */
+        public void setName( String aName )
+        {
+            m_aName = aName;
+        }
+
+        /**
+         * Set parameter expression.
+         * 
+         * @param aValue
+         */
+        public void setExpression( String aValue )
+        {
+            m_aValue = aValue;
+        }
+
+        /**
+         * Get paramter name.
+         * 
+         * @return paramter name
+         */
+        public String getName()
+        {
+            return m_aName;
+        }
+
+        /** 
+         * Get paramter value.
+         * 
+         * @return paramter value.
+         */
+        public String getValue()
+        {
+            return m_aValue;
+        }
+    }
+
+    /**
+     * Paramter class for nested <factory> elements.
+     */
+    public static class Factory
+    {
+        private String m_aName = null;
+
+        Factory()
+        {
+        }
+
+        /**
+         * Set factory name.
+         * @param aName
+         */
+        public void setName( String aName )
+        {
+            m_aName = aName;
+        }
+
+        /**
+         * Get factory name.
+         *
+         * @return paramter name
+         */
+        public String getName()
+        {
+            return m_aName;
+        }
+
+    }
+
+
+    /**
+     * Create a new paramter for a nested <param> element.
+     * 
+     * @return new paramter.
+     */
+    public Param createParam()
+    {
+        Param aParam = new Param();
+        if( m_aParams == null )
+            m_aParams = new Vector<XSLTParameter>();
+        m_aParams.add( aParam );
+        return aParam;
+    }
+
+    /**
+     * Create a new factory for a nested <factory> element.
+     *
+     * @return new paramter.
+     */
+    public Factory createFactory()
+    {
+        m_aFactory = new Factory();
+        return m_aFactory;
+    }
+    
+
+    public @Override void execute() throws BuildException {
+    
+        if( m_aStyleSheet == null )
+            throw new BuildException( "style attribute must be set", getLocation() );
+        if( !m_aStyleSheet.exists() )
+            throw new BuildException( "style sheet " + m_aStyleSheet.getAbsolutePath() + " does not exist", getLocation() );
+
+        int m_aInputMode = ODFXSLTRunner.INPUT_MODE_PACKAGE;
+        if( m_aInput == null && m_aInputFile == null )
+            throw new BuildException( "in or infile attribute must be set", getLocation() );
+        else if( m_aInput != null && m_aInputFile != null )
+            throw new BuildException( "in and infile attributes must not be set simultaneously", getLocation() );
+        if( m_aInputFile != null )
+        {
+            m_aInput = m_aInputFile;
+            m_aInputMode = ODFXSLTRunner.INPUT_MODE_FILE;
+        }
+        if( !m_aInput.exists() )
+            throw new BuildException( "input file " + m_aInput.getAbsolutePath() + " does not exist", getLocation() );
+        
+        int m_aOutputMode = ODFXSLTRunner.OUTPUT_MODE_COPY_INPUT_PACKAGE;
+        if( m_aOutput == null && m_aOutputFile == null )
+            throw new BuildException( "out or outfile attribute must be set", getLocation() );
+        if( m_aOutput != null && m_aOutputFile != null )
+            throw new BuildException( "out and outfile attribute must not be set simultaneously", getLocation() );
+        if( m_bTemplate && m_aOutput == null )
+            throw new BuildException( "out attribute must be set if template attribute is set", getLocation() );
+
+        if( m_aOutputFile != null )
+        {
+            m_aOutput = m_aOutputFile;
+            m_aOutputMode = ODFXSLTRunner.OUTPUT_MODE_FILE;
+        }
+        else if( m_bTemplate )
+        {
+            m_aOutputMode = ODFXSLTRunner.OUTPUT_MODE_TEMPLATE_PACKAGE;
+            if( !m_aOutput.exists() )
+                throw new BuildException( "output file " + m_aStyleSheet.getAbsolutePath() + " does not exist", getLocation() );
+        }
+        
+        if( m_aParams != null )
+        {
+            Iterator<XSLTParameter> aIter = m_aParams.iterator();
+            while( aIter.hasNext() )
+            {
+                XSLTParameter aParam = aIter.next();
+                if( aParam.getName() == null )
+                    throw new BuildException( "parameter name attribute must be set", getLocation() );
+
+                if( aParam.getValue() == null )
+                    throw new BuildException( "parameter expression attribute must be set", getLocation() );
+            }
+        }
+
+        String aFactory = null;
+        if( m_aFactory != null )
+        {
+            aFactory = m_aFactory.getName();
+            if( aFactory == null )
+                throw new BuildException( "factory name attribute must be set", getLocation() );
+        }
+        
+        if( !m_bForce && m_aOutput.exists() && 
+            m_aOutput.lastModified() > m_aInput.lastModified() &&
+            m_aOutput.lastModified() > m_aStyleSheet.lastModified())
+            return;
+
+        if( !m_aOutput.exists() )
+        {
+            File aParentFile = m_aOutput.getParentFile();
+            if( aParentFile != null )
+            {
+                Mkdir aMKDir = (Mkdir)getProject().createTask("mkdir");
+                aMKDir.setDir(aParentFile);
+                aMKDir.init();
+                aMKDir.setLocation(getLocation());
+                aMKDir.execute();
+            }
+        }
+        
+        boolean bError = false;
+        try
+        {
+            ODFXSLTRunner aRunner = new ODFXSLTRunner();
+            Logger aLogger = new AntLogger( getProject() );
+            bError = aRunner.runXSLT( m_aStyleSheet, m_aParams, m_aInput, m_aInputMode, m_aOutput, m_aOutputMode, m_aPath, aFactory, null, aLogger  );
+        }
+        catch( Exception e )
+        {
+            throw new BuildException( e, getLocation() );
+        }
+        if( bError )
+            throw new BuildException( "transformation failed", getLocation() );
+    }
+
+}
\ No newline at end of file
diff --git a/trunk/xslt-runner/LICENSE.txt b/trunk/xslt-runner/LICENSE.txt
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/trunk/xslt-runner/LICENSE.txt
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/trunk/xslt-runner/README.txt b/trunk/xslt-runner/README.txt
new file mode 100644
index 0000000..dd9bcc8
--- /dev/null
+++ b/trunk/xslt-runner/README.txt
@@ -0,0 +1,43 @@
+*************************************************************
+* ODFXSLTRunner                                             *
+*                                                           *
+*************************************************************
+*                                                           *
+* Version: 1.1.0                                     *
+* Release Date: xx/xx/2010                                  *
+*                                                           *
+*************************************************************
+
+
+About ODF XSLT Runner
+---------------------
+
+ODF XSLT Runner is a Java command line application that allows you to apply
+XSLT stylesheets to XML streams included in ODF packages without extracting
+them from the package.
+
+
+Documentation
+--------------
+
+In general, the Wiki page is a great place to start when looking for online
+documentation and other information about ODFXSLTRunner.
+    http://odftoolkit.org/projects/odftoolkit/pages/ODFXSLTRunner
+
+
+License
+--------
+
+Apache License, Version 2.0. Please see file LICENSE.txt.
+
+
+Installation
+-------------
+
+Just put the file odfxsltrunner.jar in your classpath.
+
+You will need ODFDOM. Get it from
+    http://odftoolkit.org/projects/odfdom
+
+You will further need Apache Xerces-J. Get it from
+    http://xml.apache.org/dist/xerces-j/
diff --git a/trunk/xslt-runner/build-schemas.xml b/trunk/xslt-runner/build-schemas.xml
new file mode 100644
index 0000000..6580267
--- /dev/null
+++ b/trunk/xslt-runner/build-schemas.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+
+<project name="build-schemas" default="default" basedir=".">
+    <description>Prepares ODF schema and specification location properties for use within this project.</description>
+
+    <dirname property="build-schemas.basedir" file="${ant.file.build-schemas}"/>
+    <property file="${build-schemas.basedir}/schema.user.properties" prefix="user"/>
+    <property file="${build-schemas.basedir}/schema.properties"/>
+
+    <target name="-init-schema-props">
+        <!-- Set schema properties from schema.user.properties file if they are not set in private.properties already -->
+        <condition property="opendocument.v12.part1.schema.dir" value="${user.opendocument.v12.part1.schema.dir}">
+            <not>
+                <isset property="opendocument.v12.part1.schema.dir"/>
+            </not>
+        </condition>
+        <condition property="opendocument.v12.part3.schema.dir" value="${user.opendocument.v12.part3.schema.dir}">
+            <not>
+                <isset property="opendocument.v12.part3.schema.dir"/>
+            </not>
+        </condition>
+        <condition property="opendocument.v12.part0.spec-source" value="${user.opendocument.v12.part0.spec-source}">
+            <not>
+                <isset property="opendocument.v12.part0.spec-source"/>
+            </not>
+        </condition>
+        <condition property="opendocument.v12.part1.spec-source" value="${user.opendocument.v12.part1.spec-source}">
+            <not>
+                <isset property="opendocument.v12.part1.spec-source"/>
+            </not>
+        </condition>
+        <condition property="opendocument.v12.part2.spec-source" value="${user.opendocument.v12.part2.spec-source}">
+            <not>
+                <isset property="opendocument.v12.part2.spec-source"/>
+            </not>
+        </condition>
+        <condition property="opendocument.v12.part3.spec-source" value="${user.opendocument.v12.part3.spec-source}">
+            <not>
+                <isset property="opendocument.v12.part3.spec-source"/>
+            </not>
+        </condition>
+        <condition property="opendocument.v12.product.dir" value="${user.opendocument.v12.product.dir}">
+            <not>
+                <isset property="opendocument.v12.product.dir"/>
+            </not>
+        </condition>
+
+        <!-- Some basic document names -->
+        <property name="opendocument.v12.schema" value="OpenDocument-v1.2${opendocument.v12.part1.schema.state}-schema.rng"/>
+        <property name="opendocument.v12.schema.manifest" value="OpenDocument-v1.2${opendocument.v12.part3.schema.state}-manifest-schema.rng"/>
+        <property name="opendocument.v12.schema.dsig" value="OpenDocument-v1.2${opendocument.v12.part3.schema.state}-dsig-schema.rng"/>
+        <property name="opendocument.v12.ontology.part1" value="OpenDocument-v1.2${opendocument.v12.part1.schema.state}-metadata.owl"/>
+        <property name="opendocument.v12.ontology.part3" value="OpenDocument-v1.2${opendocument.v12.part3.schema.state}-package-metadata.owl"/>
+
+        <property name="opendocument.v12.schema.xref" value="OpenDocument-v1.2${opendocument.v12.part1.schema.state}-xref-schema.rng"/>
+        <property name="opendocument.v12.schema.dtype" value="OpenDocument-v1.2${opendocument.v12.part1.schema.state}-dtype-schema.rng"/>
+        <property name="opendocument.v12.manifest-schema.xref" value="OpenDocument-v1.2${opendocument.v12.part3.schema.state}-xref-manifest-schema.rng"/>
+    </target>
+
+</project>
+
+
+
diff --git a/trunk/xslt-runner/build-xref.xml b/trunk/xslt-runner/build-xref.xml
new file mode 100644
index 0000000..548b772
--- /dev/null
+++ b/trunk/xslt-runner/build-xref.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<project name="ODF Cross References" default="default" basedir=".">
+    <description>Creates cross references from ODF schema.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <import file="build-schemas.xml"/>
+ 
+    <target name="-post-init" depends="-init-schema-props"
+            description="Initialize schema properties"/>
+
+    <target name="add-v12-xref" depends="init,jar,-create-v12-xref-schema" 
+            description="add cross references to ODF 1.2 specification.">
+        <property name="xref-schema-file" location="${build.dir}/schema/flat/${opendocument.v12.schema.xref}"/>
+        <property name="log-file" location="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part1.state.target}.log"/>
+        <mkdir dir="${dist.dir}/xref"/>
+        <java jar="${dist.jar}" fork="true">
+            <arg value="-v"/>
+            <arg value="-l"/>
+            <arg value="${log-file}"/>
+            <arg value="sample_xslt/create-embedded-xref.xsl"/>
+            <arg value="${opendocument.v12.part1.spec-source}"/>
+            <arg value="${dist.dir}/xref/OpenDocument-v1.2${opendocument.v12.part1.state.target}.odt"/>
+            <arg value="xref-schema-file=${xref-schema-file}"/>
+        </java>
+    </target>
+
+    <target name="create-v12-attribute-xref-ods" depends="init,jar,-create-v12-dtype-schema" 
+            description="Creates cross reference document from ODF 1.2 schema.">
+        <copy file="misc/odf-attribute-xref.ods" todir="${dist.dir}/attr-xref"/>
+        <java jar="${dist.jar}" fork="true">
+            <arg value="-v"/>
+            <arg value="sample_xslt/create-attribute-xref.xsl"/>
+            <arg value="-i"/>
+            <arg value="${build.dir}/schema/flat/${opendocument.v12.schema.dtype}"/>
+            <arg value="-t"/>
+            <arg value="${dist.dir}/attr-xref/odf-attribute-xref.ods"/>
+        </java>
+    </target>
+    
+    <target name="-create-v12-xref-schema" depends="init">
+        <xslt style="sample_xslt/create-flat-schema.xsl" 
+                    in="${opendocument.v12.part1.schema.dir}/${opendocument.v12.schema}"
+                    out="${build.dir}/schema/flat/${opendocument.v12.schema.xref}">  
+            <param name="incl-conditions" expression="false"/>
+            <param name="incl-default-values" expression="false"/>
+            <param name="incl-types" expression="false"/>
+            <param name="incl-elements" expression="true"/>
+        </xslt>
+    </target>
+    
+    <target name="-create-v12-dtype-schema" depends="init">
+        <xslt style="sample_xslt/create-flat-schema.xsl" 
+                    in="${opendocument.v12.part1.schema.dir}/${opendocument.v12.schema}"
+                    out="${build.dir}/schema/flat/${opendocument.v12.schema.dtype}">  
+            <param name="incl-conditions" expression="false"/>
+            <param name="incl-default-values" expression="true"/>
+            <param name="incl-types" expression="true"/>
+            <param name="incl-elements" expression="false"/>
+        </xslt>
+    </target>
+    
+</project>
\ No newline at end of file
diff --git a/trunk/xslt-runner/build.xml b/trunk/xslt-runner/build.xml
new file mode 100644
index 0000000..a7a75e6
--- /dev/null
+++ b/trunk/xslt-runner/build.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  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.
+
+-->
+<project name="odfxsltrunner" default="default" basedir=".">
+    <description>Builds, tests, and runs the project odfxsltrunner.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar-with-manifest:    JAR building (if you are using a manifest)
+      -do-jar-without-manifest: JAR building (if you are not using a manifest)
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="odfxsltrunner-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file.
+    
+    -->
+
+    <target name="-post-jar" depends="init">
+        <copy todir="${dist.dir}">
+            <filelist dir="." files="LICENSE.txt README.txt" />
+        </copy>
+        <delete file="${dist.dir}/README.TXT"/>
+
+        <zip destfile="${dist.dir}/odfxsltrunner.zip" update="true">
+            <zipfileset dir="${dist.dir}" includes="*.jar,*.txt"/>
+        </zip>
+    </target>
+
+</project>
diff --git a/trunk/xslt-runner/manifest.mf b/trunk/xslt-runner/manifest.mf
new file mode 100644
index 0000000..328e8e5
--- /dev/null
+++ b/trunk/xslt-runner/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/trunk/xslt-runner/misc/odf-attribute-xref.ods b/trunk/xslt-runner/misc/odf-attribute-xref.ods
new file mode 100644
index 0000000..d409847
--- /dev/null
+++ b/trunk/xslt-runner/misc/odf-attribute-xref.ods
Binary files differ
diff --git a/trunk/xslt-runner/nbproject/build-impl.xml b/trunk/xslt-runner/nbproject/build-impl.xml
new file mode 100644
index 0000000..5d5ec6c
--- /dev/null
+++ b/trunk/xslt-runner/nbproject/build-impl.xml
@@ -0,0 +1,883 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - junit compilation
+  - junit execution
+  - junit debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="odfxsltrunner-impl">
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <available file="${manifest.file}" property="manifest.available"/>
+        <available file="${application.splash}" property="splashscreen.available"/>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class.available"/>
+            </and>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="do.mkdist"/>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available+splashscreen.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available}"/>
+                <istrue value="${splashscreen.available}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <not>
+                <istrue value="${jar.archive.disabled}"/>
+            </not>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available+splashscreen.available}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or/>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <length length="0" string="${endorsed.classpath}" when="greater"/>
+        </condition>
+        <property name="javac.fork" value="false"/>
+        <property name="jar.index" value="false"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete file="${javac.includesfile.binary}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <sequential>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}"/>
+                    <classpath>
+                        <path path="${run.test.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: odfxsltrunner was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available">
+        <j2seproject1:jar/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
+        <j2seproject1:jar manifest="${manifest.file}"/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available" name="-do-jar-with-libraries-and-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <j2seproject3:copylibs>
+            <customize>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+            </customize>
+        </j2seproject3:copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries" unless="splashscreen.available">
+        <j2seproject3:copylibs>
+            <customize>
+                <attribute name="Main-Class" value="${main.class}"/>
+            </customize>
+        </j2seproject3:copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries-and-splashscreen,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                JUNIT COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir=""/>
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                JUNIT EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:junit testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:junit excludes="" includes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <!--
+                =======================
+                JUNIT DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+        <delete file="${test.report.file}"/>
+        <mkdir dir="${build.test.results.dir}"/>
+        <j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
+            <customize>
+                <syspropertyset>
+                    <propertyref prefix="test-sys-prop."/>
+                    <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                </syspropertyset>
+                <arg value="${test.class}"/>
+                <arg value="showoutput=true"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: odfxsltrunner was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <not>
+                <isset property="already.built.${call.subproject}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>
diff --git a/trunk/xslt-runner/nbproject/genfiles.properties b/trunk/xslt-runner/nbproject/genfiles.properties
new file mode 100644
index 0000000..1c9f4f5
--- /dev/null
+++ b/trunk/xslt-runner/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=21dfc495
+build.xml.script.CRC32=d2952f00
+build.xml.stylesheet.CRC32=be360661
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=c189be0b
+nbproject/build-impl.xml.script.CRC32=19b80129
+nbproject/build-impl.xml.stylesheet.CRC32=229523de@1.38.3.45
diff --git a/trunk/xslt-runner/nbproject/project.properties b/trunk/xslt-runner/nbproject/project.properties
new file mode 100644
index 0000000..c90855e
--- /dev/null
+++ b/trunk/xslt-runner/nbproject/project.properties
@@ -0,0 +1,67 @@
+application.desc=ODF XSLT Runner is a small Java application that allows you to apply XSLT stylesheets to XML streams included in ODF packages without extracting them from the package.

+application.homepage=http://odftoolkit.org/projects/conformancetools/pages/ODFXSLTRunner

+application.title=ODF XSLT Runner

+application.vendor=Oracle

+build.classes.dir=${build.dir}/classes

+build.classes.excludes=**/*.java,**/*.form

+# This directory is removed when the project is cleaned:

+build.dir=build

+build.generated.dir=${build.dir}/generated

+build.generated.sources.dir=${build.dir}/generated-sources

+# Only compile against the classpath explicitly listed here:

+build.sysclasspath=ignore

+build.test.classes.dir=${build.dir}/test/classes

+build.test.results.dir=${build.dir}/test/results

+debug.classpath=\

+    ${run.classpath}

+debug.test.classpath=\

+    ${run.test.classpath}

+# This directory is removed when the project is cleaned:

+dist.dir=dist

+dist.jar=${dist.dir}/odfxsltrunner.jar

+dist.javadoc.dir=${dist.dir}/javadoc

+excludes=

+file.reference.odfdom.jar=../odfdom~developer/target/odfdom.jar

+file.reference.xercesImpl.jar=lib/xercesImpl.jar

+includes=**

+jar.compress=false

+javac.classpath=\

+    ${file.reference.odfdom.jar}

+# Space-separated list of extra javac options

+javac.compilerargs=

+javac.deprecation=false

+javac.source=1.5

+javac.target=1.5

+javac.test.classpath=\

+    ${javac.classpath}:\

+    ${build.classes.dir}:\

+    ${libs.junit.classpath}:\

+    ${libs.junit_4.classpath}

+javadoc.additionalparam=

+javadoc.author=false

+javadoc.encoding=${source.encoding}

+javadoc.noindex=false

+javadoc.nonavbar=false

+javadoc.notree=false

+javadoc.private=false

+javadoc.splitindex=true

+javadoc.use=true

+javadoc.version=false

+javadoc.windowtitle=

+main.class=org.odftoolkit.odfxsltrunner.Main

+manifest.file=manifest.mf

+meta.inf.dir=${src.dir}/META-INF

+platform.active=default_platform

+run.classpath=\

+    ${javac.classpath}:\

+    ${build.classes.dir}

+# Space-separated list of JVM arguments used when running the project

+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value

+# or test-sys-prop.name=value to set system properties for unit tests):

+run.jvmargs=

+run.test.classpath=\

+    ${javac.test.classpath}:\

+    ${build.test.classes.dir}:\

+    ${file.reference.xercesImpl.jar}

+source.encoding=UTF-8

+src.dir=src

diff --git a/trunk/xslt-runner/nbproject/project.xml b/trunk/xslt-runner/nbproject/project.xml
new file mode 100644
index 0000000..9c61cdb
--- /dev/null
+++ b/trunk/xslt-runner/nbproject/project.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>odfxsltrunner</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots/>
+        </data>
+        <references xmlns="http://www.netbeans.org/ns/ant-project-references/1"/>
+    </configuration>
+</project>
diff --git a/trunk/xslt-runner/pom.xml b/trunk/xslt-runner/pom.xml
new file mode 100644
index 0000000..556dcd0
--- /dev/null
+++ b/trunk/xslt-runner/pom.xml
@@ -0,0 +1,76 @@
+ <!-- 
+       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
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.odftoolkit</groupId>
+    <artifactId>odftoolkit</artifactId>
+    <version>0.6.1-incubating</version>
+  </parent>
+
+  <artifactId>xslt-runner</artifactId>
+  <name>ODF XSLT-Runner</name>
+  <version>1.2.3-incubating</version>
+  
+  <organization>
+    <name>The Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+  </organization>
+  
+  <dependencies>
+	<dependency>
+      <groupId>${project.groupId}</groupId>
+	  <artifactId>odfdom-java</artifactId>
+      <version>0.8.10-incubating</version>
+	</dependency>
+    <dependency>
+        <groupId>xml-apis</groupId>
+        <artifactId>xml-apis</artifactId>
+    </dependency>	
+  </dependencies>
+
+  <!-- Build Settings -->
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.3.2</version>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <meminitial>512m</meminitial>
+          <maxmem>1024m</maxmem>
+          <showDeprecation>true</showDeprecation>
+        </configuration>
+    </plugin>
+        <plugin>
+            <groupId>org.apache.rat</groupId>
+            <artifactId>apache-rat-plugin</artifactId>
+            <configuration>
+                <excludes>
+                    <exclude>manifest.mf</exclude>
+                    <exclude>misc/odf-attribute-xref.ods</exclude>
+                    <exclude>nbproject/**</exclude>
+                </excludes>
+            </configuration>
+        </plugin>
+ </plugins>
+</build>
+</project>
diff --git a/trunk/xslt-runner/sample_xslt/adapt-html-hrefs.xsl b/trunk/xslt-runner/sample_xslt/adapt-html-hrefs.xsl
new file mode 100644
index 0000000..ae94edb
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/adapt-html-hrefs.xsl
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<xsl:stylesheet version="1.0" 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xhtml="http://www.w3.org/1999/xhtml"
+    exclude-result-prefixes="xsl">
+  <xsl:output method="xml" encoding="UTF-8" media-type="application/xhtml+xml" indent="no" omit-xml-declaration="no" doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" doctype-system="http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"/>
+
+  <xsl:param name="baseURI" select="'.'"/>
+  <xsl:variable name="adapt-fragments" select="false()"/>
+  
+  <xsl:variable name="baseURIDir" select="concat($baseURI,'/')"/>
+
+  <xsl:template match="xhtml:base">
+      <xsl:message>removing &lt;xhtml:base&gt;</xsl:message>
+  </xsl:template>
+
+  <xsl:template match="xhtml:a[starts-with(@href,$baseURIDir)]">
+      <xsl:variable name="rel-href" select="substring-after(@href,$baseURIDir)"/>
+      <xsl:variable name="fragment" select="substring-after($rel-href,'#')"/>
+      <xsl:variable name="raw-path">
+          <xsl:choose>
+              <xsl:when test="$fragment=''">
+                  <xsl:value-of select="$rel-href"/>
+              </xsl:when>
+              <xsl:otherwise>
+                  <xsl:value-of select="substring-before($rel-href,'#')"/>
+              </xsl:otherwise>
+          </xsl:choose>
+      </xsl:variable>
+      <xsl:variable name="path">
+          <xsl:choose>
+              <xsl:when test="starts-with($raw-path,'../')">
+                  <xsl:value-of select="substring($raw-path,4)"/>
+              </xsl:when>
+              <xsl:otherwise>
+                  <xsl:value-of select="$raw-path"/>
+              </xsl:otherwise>
+          </xsl:choose>
+      </xsl:variable>
+      <xsl:variable name="new-href">
+          <xsl:choose>
+              <xsl:when test="contains($path,'.odt')">
+                  <xsl:value-of select="concat(substring-before($path,'.odt'),'.html',substring-after($path,'.odt'))"/>
+              </xsl:when>
+              <xsl:otherwise>
+                  <xsl:value-of select="$path"/>
+              </xsl:otherwise>
+          </xsl:choose>
+          <xsl:choose>
+              <xsl:when test="$adapt-fragments and starts-with($fragment,'__RefHeading__')">
+                  <xsl:variable name="t">
+                      <xsl:call-template name="strip-trailing-space">
+                          <xsl:with-param name="text" select="translate(text(),'0123456789&#160;','           ')"/>
+                      </xsl:call-template>
+                  </xsl:variable>
+                  <xsl:variable name="text" select="substring(text(),1,string-length($t))"/>
+                  <xsl:value-of select="concat('#a_',translate($text, '&#xA;&amp;&lt;&gt;.,;: %()[]/\+', '_______________________________'))"/>
+              </xsl:when>
+              <xsl:when test="$fragment!=''">
+                  <xsl:value-of select="concat('#',$fragment)"/>
+              </xsl:when>
+          </xsl:choose>
+      </xsl:variable>
+      <xsl:copy>
+          <xsl:apply-templates select="@*[local-name(.)!='href']"/>
+          <xsl:attribute name="href">
+              <xsl:value-of select="$new-href"/>
+              <xsl:message>a &quot;<xsl:value-of select="text()"/>&quot;<xsl:if test="normalize-space(text())=''"> in &quot;<xsl:value-of select="parent::xhtml:p/text()"/>&quot;</xsl:if>: href=&quot;<xsl:value-of select="@href"/>&quot; -&gt; href=&quot;<xsl:value-of select="$new-href"/>&quot;</xsl:message>
+          </xsl:attribute>
+          <xsl:choose>
+              <xsl:when test="starts-with($fragment,'__RefHeading__')">
+                  <xsl:variable name="t">
+                      <xsl:call-template name="strip-trailing-space">
+                          <xsl:with-param name="text" select="translate(text(),'0123456789&#160;','           ')"/>
+                      </xsl:call-template>
+                  </xsl:variable>
+                  <xsl:variable name="text" select="substring(text(),1,string-length($t))"/>
+                  <xsl:value-of select="$text"/>
+              <xsl:message>a: &quot;<xsl:value-of select="text()"/>&quot; -&gt; &quot;<xsl:value-of select="$text"/>&quot;</xsl:message>
+              </xsl:when>
+              <xsl:otherwise>
+                  <xsl:apply-templates select="node()"/>
+              </xsl:otherwise>
+          </xsl:choose>
+      </xsl:copy>
+  </xsl:template>
+
+  <xsl:template name="strip-trailing-space">
+      <xsl:param name="text"/>
+      <xsl:choose>
+          <xsl:when test="substring($text,string-length($text))=' '">
+              <xsl:call-template name="strip-trailing-space">
+                  <xsl:with-param name="text" select="substring($text,1,string-length($text)-1)"/>
+              </xsl:call-template>
+          </xsl:when>
+          <xsl:otherwise>
+              <xsl:value-of select="$text"/>
+          </xsl:otherwise>
+      </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="@*|node()">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/add-default-values.xsl b/trunk/xslt-runner/sample_xslt/add-default-values.xsl
new file mode 100644
index 0000000..0831fd7
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/add-default-values.xsl
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<!-- This stylesheet inserts default values into the ODF v1.2 -->
+<!-- specification. The default values are taken from a flat -->
+<!-- ODF schema file whose location must be provided by the -->
+<!-- "xref-schema-file" parameter -->
+
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                 
+                xmlns:rng="http://relaxng.org/ns/structure/1.0"                
+                xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"                
+                xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+                exclude-result-prefixes="rng xsl a"
+                version="1.0">    
+    <xsl:output method="xml" indent="no"/>    
+    
+        <!-- The flat schema file -->
+    <xsl:param name="xref-schema-file"/>
+    
+    <xsl:variable name="add-default-values" select="true()"/>
+    <xsl:variable name="keep-xref-anchors" select="true()"/>
+    
+    <xsl:variable name="attribute-prefix" select="'attribute-'"/>
+    <xsl:variable name="element-prefix" select="'element-'"/>
+ 
+    <!-- ********** -->
+    <!-- ** root ** -->
+    <!-- ********** -->
+    <xsl:template match="text:p[starts-with(.,$attribute-prefix)]">        
+        <xsl:variable name="attr-name" select="normalize-space(substring(., string-length($attribute-prefix)+1))"/>
+        <xsl:if test="not(document($xref-schema-file)/rng:grammar/rng:element/rng:attribute[@name=$attr-name])">
+            <xsl:message>No attribute definition found in schema for xref &quot;<xsl:value-of select="."/>&quot;</xsl:message>
+        </xsl:if>
+        <xsl:if test="$add-default-values">
+            <xsl:apply-templates select="document($xref-schema-file)/rng:grammar//rng:attribute[@name=$attr-name and @a:defaultValue]"/>
+        </xsl:if>
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>    
+        
+    <!-- default: copy everything. -->
+    <xsl:template match="@*|node()">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+    
+    <xsl:template match="rng:attribute">
+        <xsl:variable name="name" select="@name"/>
+        <xsl:variable name="defaultValue" select="@a:defaultValue"/>
+        <xsl:if test="not(preceding::rng:attribute[@name=$name and @a:defaultValue=$defaultValue])">
+            <xsl:variable name="hasAlsoNoDefault" select="count(ancestor::rng:grammar/rng:element[rng:attribute[@name=$name] and not(rng:attribute[@name=$name and @a:defaultValue])]) > 0"/>
+            <xsl:variable name="hasAlsoOtherDefault" select="count(ancestor::rng:grammar//rng:attribute[@name=$name and @a:defaultValue!=$defaultValue]) > 0"/>
+            <xsl:if test="$hasAlsoNoDefault">
+                <xsl:message>Some <xsl:value-of select="$name"/> attributes do not have a default value.</xsl:message>
+            </xsl:if>
+            <xsl:if test="$hasAlsoOtherDefault">
+                <xsl:message>Some <xsl:value-of select="$name"/> attributes do have a different default value than &quot;<xsl:value-of select="$defaultValue"/>&quot;.</xsl:message>
+            </xsl:if>
+            <xsl:call-template name="add-default-values">
+                <xsl:with-param name="listElements" select="$hasAlsoNoDefault or $hasAlsoOtherDefault"/>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template>   
+
+    
+    <!-- select all <element> nodes in the file or in included files -->
+    <xsl:template name="add-default-values">
+        <xsl:param name="listElements" select="false()"/>
+        <text:p text:style-name="Default_20_Value">
+            <xsl:choose>
+                <xsl:when test="$listElements">
+                    <xsl:text>For </xsl:text>
+                    <xsl:call-template name="create-element-list"/>
+                    <xsl:text> the</xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>The</xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:text> default value for this attribute is </xsl:text>
+            <text:span text:style-name="Attribute_20_Value"><xsl:value-of select="@a:defaultValue"/></text:span>
+            <xsl:text>.</xsl:text>
+        </text:p>
+        <xsl:text>
+   </xsl:text>
+    </xsl:template>   
+
+    <xsl:template name="create-element-list">
+        <xsl:param name="attr-name" select="@name"/>
+        <xsl:param name="defaultValue" select="@a:defaultValue"/>
+        <!-- collect elements -->
+        <xsl:variable name="elements" select="ancestor::rng:grammar/rng:element[rng:attribute[@name=$attr-name and @a:defaultValue=$defaultValue]]"/>
+        <xsl:variable name="count" select="count($elements)"/>
+        <xsl:if test="$count = 1">
+            <xsl:text>a </xsl:text>
+        </xsl:if>
+        <xsl:for-each select="$elements">
+            <xsl:sort select="@name"/>
+            <xsl:variable name="name" select="@name"/>
+            <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:when test="position() = last()">
+                     <xsl:text> and </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                     <xsl:text>, </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+        </xsl:for-each>
+        <xsl:choose>
+            <xsl:when test="$count = 1">
+                <xsl:text> element</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:text> elements</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/check-completeness.xsl b/trunk/xslt-runner/sample_xslt/check-completeness.xsl
new file mode 100644
index 0000000..120cdff
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/check-completeness.xsl
Binary files differ
diff --git a/trunk/xslt-runner/sample_xslt/check-xrefs.xsl b/trunk/xslt-runner/sample_xslt/check-xrefs.xsl
new file mode 100644
index 0000000..9d0a8b3
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/check-xrefs.xsl
Binary files differ
diff --git a/trunk/xslt-runner/sample_xslt/create-attribute-xref.xsl b/trunk/xslt-runner/sample_xslt/create-attribute-xref.xsl
new file mode 100644
index 0000000..9a478a9
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/create-attribute-xref.xsl
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<!-- This stylesheet creates an content.xml for a spreadsheet document that -->
+<!-- lists all ODF elements and attributes                                  -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                 
+                xmlns:rng="http://relaxng.org/ns/structure/1.0"                
+                xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"                
+            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"
+                xmlns="http://relaxng.org/ns/structure/1.0" version="1.0">    
+    <xsl:output method="xml" indent="yes"/>    
+        
+        
+    <!-- ********** -->
+    <!-- ** root ** -->
+    <!-- ********** -->
+    <xsl:template match="/rng:grammar">        
+        <xsl:variable name="root" select="."/>
+        <office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style: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:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0">
+            <office:scripts/>
+            <office:font-face-decls>
+                <style:font-face style:name="Albany" svg:font-family="Albany" style:font-family-generic="swiss" style:font-pitch="variable"/>
+                <style:font-face style:name="Andale Sans UI" svg:font-family="&apos;Andale Sans UI&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+                <style:font-face style:name="Lucidasans" svg:font-family="Lucidasans" style:font-family-generic="system" style:font-pitch="variable"/>
+            </office:font-face-decls>
+            <office:automatic-styles>
+                <style:style style:name="co1" style:family="table-column">
+                    <style:table-column-properties fo:break-before="auto" style:column-width="6.4cm"/>
+                </style:style>
+                <style:style style:name="co2" style:family="table-column">
+                    <style:table-column-properties fo:break-before="auto" style:column-width="7.4cm"/>
+                </style:style>
+                <style:style style:name="co3" style:family="table-column">
+                    <style:table-column-properties fo:break-before="auto" style:column-width="7.6cm"/>
+                </style:style>
+                <style:style style:name="co4" style:family="table-column">
+                    <style:table-column-properties fo:break-before="auto" style:column-width="7.1cm"/>
+                </style:style>
+                <style:style style:name="co5" style:family="table-column">
+                    <style:table-column-properties fo:break-before="auto" style:column-width="2.267cm"/>
+                </style:style>
+                <style:style style:name="ro1" style:family="table-row">
+                    <style:table-row-properties style:row-height="0.681cm" fo:break-before="auto" style:use-optimal-row-height="true"/>
+                </style:style>
+                <style:style style:name="ro2" style:family="table-row">
+                    <style:table-row-properties style:row-height="0.427cm" fo:break-before="auto" style:use-optimal-row-height="true"/>
+                </style:style>
+                <style:style style:name="ta1" style:family="table" style:master-page-name="Default">
+                    <style:table-properties table:display="true" style:writing-mode="lr-tb"/>
+                </style:style>
+            </office:automatic-styles>
+            <office:body>
+                <office:spreadsheet>
+                    <table:calculation-settings>
+                        <table:null-date table:date-value="1900-01-01"/>
+                    </table:calculation-settings>
+                    <table:table table:name="Sheet1" table:style-name="ta1" table:print="false">
+                        <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+                        <table:table-column table:style-name="co1" table:default-cell-style-name="Heading"/>
+                        <table:table-column table:style-name="co2" table:default-cell-style-name="Heading"/>
+                        <table:table-column table:style-name="co3" table:default-cell-style-name="Heading"/>
+                        <table:table-column table:style-name="co4" table:default-cell-style-name="Heading"/>
+                        <table:table-row table:style-name="ro1">
+                            <table:table-cell office:value-type="string">
+                                <text:p>Element</text:p>
+                            </table:table-cell>
+                            <table:table-cell office:value-type="string">
+                                <text:p>Attribute</text:p>
+                            </table:table-cell>
+                            <table:table-cell office:value-type="string">
+                                <text:p>Datatype</text:p>
+                            </table:table-cell>
+                            <table:table-cell office:value-type="string">
+                                <text:p>Default Value</text:p>
+                            </table:table-cell>
+                        </table:table-row>
+                        
+                        <!-- select all <element> nodes in the file or in included files -->
+                        <xsl:for-each select="//rng:element">                
+                            <xsl:sort select="@name"/>
+                            <xsl:call-template name="create-attr-list"/>
+                        </xsl:for-each> 
+                        
+                    </table:table>
+                </office:spreadsheet>        
+            </office:body>
+        </office:document-content>
+   </xsl:template>    
+        
+    <xsl:template name="create-attr-list">
+        <xsl:variable name="element-name" select="@name"/>
+        <xsl:for-each select="rng:attribute">
+            <xsl:sort select="@name"/>
+            <table:table-row table:style-name="ro2">
+                <table:table-cell table:style-name="Default" office:value-type="string">
+                    <text:p>
+                        <xsl:value-of select="$element-name"/>
+                    </text:p>
+                </table:table-cell>
+                <table:table-cell table:style-name="Default" office:value-type="string">
+                    <text:p>
+                        <xsl:value-of select="@name"/>
+                    </text:p>
+                </table:table-cell>
+                <table:table-cell table:style-name="Default" office:value-type="string">
+                    <text:p>
+                        <xsl:apply-templates select="*" mode="print-elem"/>
+                    </text:p>
+                </table:table-cell>
+                <table:table-cell table:style-name="Default" office:value-type="string">
+                    <text:p>
+                        <xsl:if test="@a:defaultValue">
+                            <xsl:text>&quot;</xsl:text>
+                            <xsl:value-of select="@a:defaultValue"/>
+                            <xsl:text>&quot;</xsl:text>
+                        </xsl:if>
+                    </text:p>
+                </table:table-cell>
+            </table:table-row>
+        </xsl:for-each>   
+    </xsl:template>
+
+    <xsl:template match="*" mode="print-elem">
+        <xsl:text>&lt;</xsl:text><xsl:value-of select="name(.)"/>
+        <xsl:for-each select="@*">
+            <xsl:text> </xsl:text><xsl:value-of select="name(.)"/><xsl:text>=&quot;</xsl:text><xsl:value-of select="."/><xsl:text>&quot;</xsl:text>
+        </xsl:for-each>
+        <xsl:variable name="has-nodes" select="count(node()) > 0"/>
+        <xsl:if test="not($has-nodes)">
+            <xsl:text>/</xsl:text>
+        </xsl:if>
+        <xsl:text>&gt;</xsl:text>
+        <xsl:if test="$has-nodes">
+            <xsl:apply-templates mode="print-elem"/>
+            <xsl:text>&lt;/</xsl:text><xsl:value-of select="name(.)"/><xsl:text>&gt;</xsl:text>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template match="text()" mode="print-elem">
+        <xsl:value-of select="."/>
+    </xsl:template>
+    
+    
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/create-embedded-model.xsl b/trunk/xslt-runner/sample_xslt/create-embedded-model.xsl
new file mode 100644
index 0000000..1f16115
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/create-embedded-model.xsl
@@ -0,0 +1,1279 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<!-- This stylesheet inserts cross references into the ODF v1.-2 -->
+<!-- specification. The cross reference information is calculated -->
+<!-- from a flat ODF schema file whose location must be provided -->
+<!-- by the "xref-schema-file" parameter -->
+
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                 
+                xmlns:rng="http://relaxng.org/ns/structure/1.0"                
+                xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"                
+                xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+                xmlns="http://relaxng.org/ns/structure/1.0" 
+                exclude-result-prefixes="rng xsl a"
+                version="1.0">    
+    <xsl:output method="xml" indent="no"/>    
+    
+    <!-- The flat schema file -->
+    <xsl:param name="xref-schema-file"/>
+    
+    <!-- Whether or not to keep "element-" and "attribute-" paragraphs. -->
+    <xsl:param name="keep-anchors" select="'false'"/>
+    
+    <!-- Whether or not to add element and attribute lists. -->
+    <xsl:param name="add-xrefs" select="'true'"/>
+    
+    <xsl:variable name="add-attr-elem-xrefs" select="$add-xrefs='true'"/>
+    <xsl:variable name="add-text-info" select="$add-xrefs='true'"/>
+    <xsl:variable name="keep-attr-elem-xrefs" select="false()"/>
+    
+    <xsl:variable name="add-xref-anchors" select="false()"/>
+    <xsl:variable name="keep-xref-anchors" select="$keep-anchors='true'"/>
+    <xsl:variable name="check-xref-anchors" select="true()"/>
+
+    <xsl:variable name="create-odf-references" select="true()"/>
+    <xsl:variable name="create-cardinality-info" select="false()"/>
+
+    <xsl:variable name="element-prefix" select="'element-'"/>
+    <xsl:variable name="attribute-prefix" select="'attribute-'"/>
+    <xsl:variable name="property-prefix" select="'property-'"/>
+    <xsl:variable name="datatype-prefix" select="'datatype-'"/>
+        
+    <!-- ********************************* -->
+    <!-- ** element anchors (element-*) ** -->
+    <!-- ********************************* -->
+    <xsl:template match="text:p[starts-with(.,$element-prefix)]">        
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+        <!-- Check element name -->
+        <xsl:variable name="element-name" select="normalize-space(substring(., string-length($element-prefix)+1))"/>
+        <xsl:variable name="element-defs" select="document($xref-schema-file)/rng:grammar/rng:element[@name=$element-name]"/>
+        <xsl:if test="$check-xref-anchors and not($element-defs)">
+            <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: No element definition found in schema for &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+        </xsl:if>
+        <!-- Add xrefs -->
+        <xsl:if test="$add-attr-elem-xrefs">
+            <xsl:apply-templates select="$element-defs"/>
+        </xsl:if>
+    </xsl:template>    
+
+    <!-- ************************************* -->
+    <!-- ** attribute anchors (attribute-*) ** -->
+    <!-- ************************************* -->
+    <xsl:template match="text:p[starts-with(.,$attribute-prefix) or starts-with(.,$property-prefix)]">        
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+        <!-- Check attribute name -->
+        <xsl:variable name="attr-name-raw" select="substring-after(normalize-space(.),'-')"/>
+        <xsl:variable name="has-elements" select="contains($attr-name-raw,'_')"/>
+        <xsl:variable name="attr-name">
+            <xsl:choose>
+                <xsl:when test="$has-elements">
+                    <xsl:value-of select="substring-before($attr-name-raw,'_')"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:value-of select="$attr-name-raw"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:variable name="element-list">
+            <xsl:if test="$has-elements">
+                <xsl:value-of select="concat(substring($attr-name-raw,string-length($attr-name)+1),'_')"/>
+            </xsl:if>
+        </xsl:variable>
+        <xsl:if test="$check-xref-anchors and $has-elements">
+            <xsl:call-template name="check-element-list">
+                <xsl:with-param name="element-list" select="$element-list"/>
+            </xsl:call-template>
+        </xsl:if>
+        <xsl:variable name="fp" select="starts-with(.,$property-prefix)"/>
+        <xsl:variable name="attr-defs" select="document($xref-schema-file)/rng:grammar/rng:element//rng:attribute[@name=$attr-name]"/>
+        <xsl:if test="$check-xref-anchors and not($attr-defs)">
+            <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: No attribute definition found in schema for &quot;<xsl:value-of select="$attr-name"/>&quot;.</xsl:message>
+        </xsl:if>
+        <!-- Add xrefs -->
+        <xsl:if test="$add-attr-elem-xrefs">
+            <xsl:apply-templates select="$attr-defs">
+                <xsl:with-param name="element-list" select="$element-list"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:apply-templates>
+        </xsl:if>
+    </xsl:template>    
+    
+    <xsl:template name="check-element-list">
+        <xsl:param name="element-list"/>
+        <xsl:param name="list" select="substring($element-list,string-length($element-prefix)+2)"/>
+        <xsl:variable name="element-name" select="substring-before($list,'_')"/>
+        <xsl:if test="not(document($xref-schema-file)/rng:grammar/rng:element[@name=$element-name])">
+            <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: No element definition found in schema for &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+        </xsl:if>
+        <xsl:variable name="remainder" select="substring-after($list,'_')"/>
+        <xsl:if test="$remainder">
+            <xsl:call-template name="check-element-list">
+                <xsl:with-param name="element-list" select="concat('_',$remainder)"/>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ************************* -->
+    <!-- ** existing references ** -->
+    <!-- ************************* -->
+    <xsl:template match="text:p[@text:style-name='Attribute_20_List' or @text:style-name='Child_20_Element_20_List' or @text:style-name='Parent_20_Element_20_List' or @text:style-name='Attribute_20_Value_20_List']">
+        <!-- Remove them if $keep-attr-elem-xrefs is false -->
+        <xsl:if test="$keep-attr-elem-xrefs">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ****************************************** -->
+    <!-- ** Headings for elements and attributes ** -->
+    <!-- ****************************************** -->
+    <xsl:template match="text:h[contains(.,':')]">
+        <!-- get element or attribute name -->
+        <xsl:variable name="tag">
+            <xsl:choose>
+                <xsl:when test="contains(.,'(')">
+                    <xsl:value-of select="normalize-space(substring-before(.,'('))"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:value-of select="normalize-space(.)"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <!-- create ODF ref-mark elements if it is a avlid element or attribute name -->
+        <xsl:choose>
+            <xsl:when test="starts-with($tag, '&lt;') and contains($tag,'&gt;')">
+                <xsl:copy>
+                    <xsl:apply-templates select="@*"/>
+                    <xsl:variable name="is-in-attributes" select="preceding::text:h[@text:outline-level='1']='General Attributes'"/>
+                    <xsl:call-template name="create-element-ref-mark-start">
+                         <xsl:with-param name="tag" select="$tag"/>
+                         <xsl:with-param name="is-in-attributes" select="$is-in-attributes"/>
+                    </xsl:call-template>
+                    <xsl:apply-templates select="node()"/>
+                    <xsl:call-template name="create-element-ref-mark-end">
+                         <xsl:with-param name="tag" select="$tag"/>
+                         <xsl:with-param name="is-in-attributes" select="$is-in-attributes"/>
+                    </xsl:call-template>
+                </xsl:copy>
+            </xsl:when>
+            <xsl:when test="starts-with($tag, 'odf:') or starts-with($tag, 'pkg:')">
+                <!-- OWL -->
+                <xsl:copy>
+                    <xsl:apply-templates select="@*|node()"/>
+                </xsl:copy>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:variable name="attr-name" select="$tag"/>
+                <xsl:variable name="fp" select="preceding::text:h[@text:outline-level='1'][last()]='Formatting Attributes'"/>
+                <xsl:if test="$check-xref-anchors">
+                    <xsl:choose>
+                        <xsl:when test="not(document($xref-schema-file)/rng:grammar/rng:element[(starts-with(@name,'style:') and contains(@name,'-properties'))=$fp]//rng:attribute[@name=$attr-name])">
+                            <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No attribute definition found in schema for &quot;<xsl:value-of select="$attr-name"/>&quot;<xsl:if test="$fp"> (property)</xsl:if>.</xsl:message>
+                        </xsl:when>
+                        <xsl:when test="$fp and not(//text:p[starts-with(.,$property-prefix) and (normalize-space(.)=concat($property-prefix,$attr-name) or starts-with(.,concat($property-prefix,$attr-name,'_')))])">
+                            <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No attribute xref found for &quot;<xsl:value-of select="$attr-name"/>&quot; (property).</xsl:message>
+                        </xsl:when>
+                        <xsl:when test="not($fp) and not(//text:p[starts-with(.,$attribute-prefix) and (normalize-space(.)=concat($attribute-prefix,$attr-name) or starts-with(.,concat($attribute-prefix,$attr-name,'_')))])">
+                            <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No attribute xref found for &quot;<xsl:value-of select="$attr-name"/>&quot;.</xsl:message>
+                        </xsl:when>
+                    </xsl:choose>
+                </xsl:if>
+                <xsl:copy>
+                    <xsl:apply-templates select="@*"/>
+                    <xsl:variable name="ref-name">
+                        <xsl:choose>
+                            <xsl:when test="$fp"><xsl:value-of select="concat($property-prefix,$attr-name)"/></xsl:when>
+                            <xsl:otherwise><xsl:value-of select="concat($attribute-prefix,$attr-name)"/></xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:variable>
+                    <xsl:if test="$create-odf-references">
+                        <text:reference-mark-start text:name="{$ref-name}"/>
+                    </xsl:if>
+                    <xsl:apply-templates select="node()"/>
+                    <xsl:if test="$create-odf-references">
+                        <text:reference-mark-end text:name="{$ref-name}"/>
+                    </xsl:if>
+                </xsl:copy>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+    
+    <xsl:template match="text:reference-mark-start|text:reference-mark-end">
+        <xsl:if test="not($create-odf-references) or not(starts-with(@text:name,$attribute-prefix) or starts-with(@text:name,$property-prefix) or starts-with(@text:name,$element-prefix))">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="create-element-ref-mark-start">
+        <xsl:param name="tag"/>
+        <xsl:param name="is-in-attributes"/>
+        <xsl:variable name="element-name" select="substring-after(substring-before($tag,'&gt;'),'&lt;')"/>
+        <xsl:variable name="remainder" select="substring-after($tag,'&gt;')"/>
+        
+        <xsl:if test="$check-xref-anchors">
+            <xsl:choose>
+                <xsl:when test="not(document($xref-schema-file)/rng:grammar/rng:element[@name=$element-name])">
+                    <xsl:message>Heading: &quot;<xsl:value-of select="."/>&quot;: No element definition found in schema for element &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+                </xsl:when>
+                <xsl:when test="not(//text:p[starts-with(.,$element-prefix) and normalize-space(.)=concat($element-prefix,$element-name)])">
+                    <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No element xref found for element &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+                </xsl:when>
+            </xsl:choose>
+        </xsl:if>
+
+        <xsl:if test="$create-odf-references and not($is-in-attributes)">
+            <xsl:variable name="ref-name" select="concat($element-prefix,$element-name)"/>
+            <text:reference-mark-start text:name="{$ref-name}"/>
+        </xsl:if>
+        
+        <xsl:if test="contains($remainder,'&lt;') and contains(substring-after($remainder,'&lt;'),'&gt;')">
+            <xsl:call-template name="create-element-ref-mark-start">
+                <xsl:with-param name="tag" select="$remainder"/>
+                <xsl:with-param name="is-in-attributes" select="$is-in-attributes"/>
+            </xsl:call-template>
+        </xsl:if>        
+    </xsl:template>
+    
+    <xsl:template name="create-element-ref-mark-end">
+        <xsl:param name="tag"/>
+        <xsl:param name="is-in-attributes"/>
+        <xsl:if test="not($is-in-attributes)">
+            <xsl:variable name="element-name" select="substring-after(substring-before($tag,'&gt;'),'&lt;')"/>
+            <xsl:variable name="remainder" select="substring-after($tag,'&gt;')"/>
+
+            <xsl:if test="contains($remainder,'&lt;') and contains(substring-after($remainder,'&lt;'),'&gt;')">
+                <xsl:call-template name="create-element-ref-mark-end">
+                    <xsl:with-param name="tag" select="$remainder"/>
+                    <xsl:with-param name="is-in-attributes" select="$is-in-attributes"/>
+                </xsl:call-template>
+            </xsl:if>
+
+            <xsl:if test="$create-odf-references">
+                <xsl:variable name="ref-name" select="concat($element-prefix,$element-name)"/>
+                <text:reference-mark-end text:name="{$ref-name}"/>
+            </xsl:if>        
+        </xsl:if>
+    </xsl:template>
+    
+    <!-- default: copy everything. -->
+    <xsl:template match="@*|node()">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+    
+    <!-- select all <element> nodes in the file or in included files -->
+    <xsl:template match="rng:element">                
+        <xsl:call-template name="create-elem-root-elem-list"/>
+        <xsl:call-template name="create-elem-parent-elem-list"/>
+        <xsl:call-template name="create-content-model"/>
+        <!--
+        <xsl:call-template name="create-attr-list"/>
+        <xsl:call-template name="create-child-elem-list"/>
+        <xsl:call-template name="create-text-info"/>
+        -->
+    </xsl:template>   
+
+    <!-- select all <element> nodes in the file or in included files -->
+    <xsl:template match="rng:attribute">
+        <xsl:param name="element-list"/>
+        <xsl:param name="fp"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:if test="not(preceding::rng:attribute[@name=$name])">
+            <xsl:call-template name="create-attr-parent-elem-list">
+                <xsl:with-param name="element-list" select="$element-list"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:call-template>
+            <xsl:call-template name="create-attr-value-list">
+                <xsl:with-param name="element-list" select="$element-list"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template>   
+    
+    <xsl:template name="create-attr-list">
+        <xsl:variable name="count" select="count(rng:attribute)"/>
+        <xsl:variable name="fp" select="starts-with(@name,'style:') and contains(@name,'-properties')"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Element">
+                <xsl:text>&lt;</xsl:text>
+                <xsl:value-of select="@name"/>
+                <xsl:text>&gt;</xsl:text>
+            </text:span>
+            <xsl:text> element </xsl:text>
+            <xsl:choose>
+                <xsl:when test="$count > 0">
+                    <xsl:choose>
+                        <xsl:when test="$count = 1">
+                            <xsl:text> has the following attribute: </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text> has the following attributes: </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <!-- collect attributes -->
+                    <xsl:for-each select="rng:attribute">
+                        <xsl:sort select="@name"/>
+                        <xsl:variable name="name" select="@name"/>
+                        <xsl:if test="not(preceding-sibling::rng:attribute[@name=$name])">
+                            <xsl:choose>
+                                <xsl:when test="position() = 1"/>
+                                <xsl:when test="position() = last()">
+                                    <xsl:text> and </xsl:text>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:text>, </xsl:text>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            <text:span text:style-name="Attribute"><xsl:value-of select="@name"/></text:span>
+                            <xsl:if test="$create-cardinality-info">
+                                <xsl:choose>
+                                    <xsl:when test="not(@condition) or @condition='' or @condition='interleave' or @condition='interleave/interleave'">
+                                        <!-- mandatory: no hint -->
+                                    </xsl:when>
+                                    <xsl:when test="contains(@condition,'optional') and not(contains(@condition,'group') or contains(@condition,'choice'))">
+                                        <xsl:text>(?)</xsl:text>
+                                    </xsl:when>
+                                    <xsl:when test="@condition='zeroOrMore'">
+                                        <xsl:text>(?)</xsl:text>
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        <xsl:message>Attribute <xsl:value-of select="@name"/>: Complex cardinality: <xsl:value-of select="@condition"/></xsl:message>
+                                        <xsl:text>(!)</xsl:text>
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:if>
+                            <xsl:variable name="ref-name">
+                                <xsl:choose>
+                                    <xsl:when test="$fp"><xsl:value-of select="concat($property-prefix,@name)"/></xsl:when>
+                                    <xsl:otherwise><xsl:value-of select="concat($attribute-prefix,@name)"/></xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:variable>
+                            <xsl:text> </xsl:text><text:reference-ref text:ref-name="{$ref-name}" text:reference-format="chapter">?</text:reference-ref>
+                        </xsl:if>
+                    </xsl:for-each>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text> has no attributes</xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template name="create-child-elem-list">
+        <xsl:variable name="count" select="count(rng:element)"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Child_20_Element_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Element">
+                <xsl:text>&lt;</xsl:text>
+                <xsl:value-of select="@name"/>
+                <xsl:text>&gt;</xsl:text>
+            </text:span>
+            <xsl:text> element </xsl:text>
+            <xsl:choose>
+                <xsl:when test="$count > 0">
+                    <xsl:choose>
+                        <xsl:when test="$count = 1">
+                            <xsl:text> has the following child element: </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text> has the following child elements: </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <!-- collect elements -->
+                    <xsl:for-each select="rng:element">
+                        <xsl:sort select="@name"/>
+                        <xsl:variable name="name" select="@name"/>
+                        <xsl:if test="not(preceding-sibling::rng:element[@name=$name])">
+                            <xsl:choose>
+                                <xsl:when test="position() = 1"/>
+                                <xsl:when test="position() = last()">
+                                    <xsl:text> and </xsl:text>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:text>, </xsl:text>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+                        </xsl:if>
+                    </xsl:for-each>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text> has no child elements</xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template name="create-text-info">
+        <xsl:if test="rng:text and $add-text-info">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Child_20_Element_20_List">
+                <xsl:text>The </xsl:text>
+                <text:span text:style-name="Element">
+                    <xsl:text>&lt;</xsl:text>
+                    <xsl:value-of select="@name"/>
+                    <xsl:text>&gt;</xsl:text>
+                </text:span>
+                <xsl:text> element has text content.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template name="create-content-model">
+        <xsl:variable name="count" select="count(*)"/>
+        <xsl:variable name="fp" select="starts-with(@name,'style:') and contains(@name,'-properties')"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_List">
+            <xsl:text>element </xsl:text>
+            <xsl:value-of select="@name"/>
+            <xsl:text> </xsl:text>
+            <xsl:call-template name="expand-content-model">
+                <xsl:with-param name="fp" select="$fp"/>
+                <xsl:with-param name="bracket" select="'{'"/>
+            </xsl:call-template>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:interleave" mode="content-model">
+        <xsl:param name="fp"/>
+        <!--
+        <xsl:variable name="count" select="count(*[not(self::rng:interleave)]|rng:interleave/*)"/>
+        <xsl:if test="$count>1">
+            <xsl:text>( </xsl:text>
+        </xsl:if>
+        <xsl:for-each select="*[not(self::rng:interleave)]|rng:interleave/*">
+             <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:otherwise>
+                    <xsl:value-of select="'&amp;'"/>
+                    <xsl:text> </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="content-model">
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+        <xsl:if test="$count>1">
+            <xsl:text>)</xsl:text>
+        </xsl:if>
+        <xsl:text> </xsl:text>
+        -->
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="delimiter" select="'&amp;'"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:oneOrMore" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="operator" select="'+'"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:zeroOrMore" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="operator" select="'*'"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:optional[count(*)=1 and (rng:attribute or rng:element)]" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:apply-templates mode="content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="operator" select="'?'"/>
+        </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="rng:optional" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="operator" select="'?'"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="delimiter" select="'|'"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:group" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:mixed" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:text>mixed </xsl:text>
+        <xsl:call-template name="expand-content-model">
+            <xsl:with-param name="fp" select="$fp"/>
+            <xsl:with-param name="bracket" select="'{'"/>
+        </xsl:call-template>
+    </xsl:template>
+
+    <xsl:template match="rng:element" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:param name="operator" select=""/>
+        <xsl:text>element </xsl:text>
+        <xsl:value-of select="@name"/>
+        <xsl:text> { .. }</xsl:text>
+        <xsl:if test="$operator!=''">
+             <xsl:value-of select="$operator"/>
+        </xsl:if>
+        <xsl:text> # </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,@name)}" text:reference-format="chapter">?</text:reference-ref>
+        <text:line-break/>
+    </xsl:template>
+
+    <xsl:template match="rng:empty" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:text>empty</xsl:text>
+        <text:line-break/>
+    </xsl:template>
+
+    <xsl:template match="rng:text" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:text>text</xsl:text>
+        <text:line-break/>
+    </xsl:template>
+
+    <xsl:template match="*" mode="content-model">
+        <xsl:message>*** Unkown content model element <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+
+    <xsl:template match="rng:attribute" mode="content-model">
+        <xsl:param name="fp"/>
+        <xsl:param name="operator" select=""/>
+        <xsl:text>attribute </xsl:text>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:value-of select="$name"/>
+        <xsl:text> { </xsl:text>
+        <xsl:choose>
+            <xsl:when test="count(ancestor::rng:element//rng:attribute[@name=$name])>1">
+                <xsl:apply-templates mode="content-model-attr-value"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:text>..</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>
+        <xsl:text> }</xsl:text>
+        <xsl:if test="$operator!=''">
+             <xsl:value-of select="$operator"/>
+        </xsl:if>
+        <xsl:variable name="ref-name">
+            <xsl:choose>
+                <xsl:when test="$fp"><xsl:value-of select="concat($property-prefix,@name)"/></xsl:when>
+                <xsl:otherwise><xsl:value-of select="concat($attribute-prefix,@name)"/></xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:text> # </xsl:text><text:reference-ref text:ref-name="{$ref-name}" text:reference-format="chapter">?</text:reference-ref>
+        <text:line-break/>
+    </xsl:template>
+
+    <xsl:template match="rng:value" mode="content-model-attr-value">
+        <xsl:text>&quot;</xsl:text>
+        <xsl:value-of select="."/>
+        <xsl:text>&quot;</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="rng:empty" mode="content-model-attr-value">
+        <xsl:text>empty</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="content-model-attr-value">
+        <xsl:message>attribute value choice</xsl:message>
+        <xsl:text>( </xsl:text>
+        <xsl:for-each select="*">
+             <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:otherwise>
+                    <xsl:text>| </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="content-model-attr-value"/>
+        </xsl:for-each>
+        <xsl:text> )</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="content-model-attr-value">
+        <xsl:value-of select="@name"/>
+        <xsl:message>attribute value type: <xsl:value-of select="@name"/></xsl:message>
+    </xsl:template>
+
+
+    <xsl:template match="*" mode="content-model-attr-value">
+        <xsl:message>*** Unkown content model attr value element <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template name="expand-content-model">
+        <xsl:param name="fp"/>
+        <xsl:param name="bracket" select="'('"/>
+        <xsl:param name="delimiter" select="','"/>
+        <xsl:param name="operator" select=""/>
+        <xsl:variable name="count" select="count(*)"/>
+        <xsl:choose>
+            <xsl:when test="$bracket='{'">
+                <xsl:text>{</xsl:text>
+                <text:line-break/>
+            </xsl:when>
+            <xsl:when test="$count>1">
+                <xsl:value-of select="$bracket"/>
+                <xsl:text> </xsl:text>
+            </xsl:when>
+        </xsl:choose>
+        <xsl:for-each select="*">
+             <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:otherwise>
+                    <xsl:value-of select="$delimiter"/>
+                    <xsl:text> </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="content-model">
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+        <xsl:choose>
+            <xsl:when test="$bracket='{'">
+                <xsl:text>}</xsl:text>
+            </xsl:when>
+            <xsl:when test="$count>1">
+                <xsl:text>)</xsl:text>
+            </xsl:when>
+        </xsl:choose>
+        <xsl:if test="$operator!=''">
+            <xsl:value-of select="$operator"/>
+        </xsl:if>
+        <xsl:if test="$bracket='{' or $count>1">
+            <text:line-break/>
+        </xsl:if>
+    </xsl:template>
+
+
+    <xsl:template name="create-attr-parent-elem-list">
+        <xsl:param name="attr-name" select="@name"/>
+        <xsl:param name="element-list"/>
+        <xsl:param name="fp"/>
+        <xsl:variable name="parents" select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_'))) and .//rng:attribute[@name=$attr-name]]"/>
+        <xsl:variable name="count" select="count($parents)"/>
+        <xsl:if test="$check-xref-anchors and $count=0">
+            <xsl:message>&quot;<xsl:value-of select="$attr-name"/>&quot; <xsl:if test="$fp"> (property)</xsl:if><xsl:if test="$element-list"> (<xsl:value-of select="$element-list"/>)</xsl:if>: No parent elements found in schema.</xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Parent_20_Element_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Attribute">
+                <xsl:value-of select="$attr-name"/>
+            </text:span>
+            <xsl:text> attribute </xsl:text>
+            <xsl:choose>
+                <xsl:when test="$count = 1">
+                    <xsl:text> is usable with the following element: </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text> is usable with the following elements: </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <!-- collect elements -->
+            <xsl:for-each select="$parents">
+                <xsl:sort select="@name"/>
+                <xsl:variable name="name" select="@name"/>
+                <xsl:choose>
+                    <xsl:when test="position() = 1"/>
+                    <xsl:when test="position() = last()">
+                        <xsl:text> and </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text>, </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template name="create-attr-value-list">
+        <xsl:param name="attr-name" select="@name"/>
+        <xsl:param name="element-list"/>
+        <xsl:param name="fp"/>
+        <xsl:choose>
+            <xsl:when test="$attr-name='text:id' or $attr-name='form:id' or $attr-name='office:value'">
+                <xsl:choose>
+                    <xsl:when test="not($element-list)">
+                        <xsl:apply-templates select="*" mode="attr-value">
+                            <xsl:with-param name="attr-name" select="$attr-name"/>
+                        </xsl:apply-templates>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:apply-templates select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_')))]//rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                            <xsl:with-param name="attr-name" select="$attr-name"/>
+                        </xsl:apply-templates>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:when>
+            <xsl:when test="$attr-name='chart:legend-position' or 
+                            $attr-name='draw:concave' or
+                            $attr-name='form:image-position' or
+                            $attr-name='meta:value-type' or
+                            $attr-name='style:legend-expansion' or
+                            $attr-name='style:family' or
+                            $attr-name='style:type' or
+                            $attr-name='table:member-type' or 
+                            ($attr-name='table:orientation' and contains($element-list,'table:data-pilot-field'))or 
+                            $attr-name='table:sort-mode' or
+                            ($attr-name='text:display' and (contains($element-list,'text:section') or contains($element-list,'style:text-properties'))) or
+                            $attr-name='chart:symbol-type'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_'))) and .//rng:attribute[@name=$attr-name]][1]" mode="merge-attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="$attr-name='office:value-type'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[@name='text:variable-decl']//rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="$attr-name='style:num-format'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[@name='text:page-number']" mode="merge-attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_'))) and count(.//rng:attribute[@name=$attr-name])>1]">
+                <xsl:message>Attribute <xsl:value-of select="$attr-name"/>: Multiple attribute definitions do exist for at least one element.</xsl:message>
+            </xsl:when>
+            <xsl:when test="$attr-name='xlink:show' or
+                            $attr-name='xlink:actuate' or
+                            $attr-name='text:reference-format'">
+                <xsl:message>Attribute <xsl:value-of select="$attr-name"/>: No type info added (type too complex).</xsl:message>
+            </xsl:when>
+            <xsl:when test="not($element-list)">
+                <xsl:apply-templates select="*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_')))]//rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:call-template name="new-line"/>
+        <xsl:choose>
+            <xsl:when test="//text:p[.=concat($datatype-prefix,$name)]">
+                <text:p text:style-name="Attribute_20_Value_20_List">
+                    <xsl:text>The </xsl:text>
+                    <text:span text:style-name="Attribute">
+                        <xsl:value-of select="$attr-name"/>
+                    </text:span>
+                    <xsl:text> attribute has the data type </xsl:text>
+                    <text:span text:style-name="Datatype">
+                        <xsl:value-of select="$name"/>
+                    </text:span>
+                    <xsl:text>.</xsl:text>
+                </text:p>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="*">
+                <xsl:choose>
+                    <xsl:when test="position() = 1"/>
+                    <xsl:when test="position() = last()">
+                        <xsl:text> or </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text>, </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:value" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:if test="not(starts-with($attr-name,'xlink:'))">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Attribute_20_Value_20_List">
+                <xsl:text>The only value of the </xsl:text>
+                <text:span text:style-name="Attribute">
+                    <xsl:value-of select="$attr-name"/>
+                </text:span>
+                <xsl:text> attribute is </xsl:text>
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+                <xsl:text>.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template match="rng:list[rng:zeroOrMore]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>space separated possibly empty lists of </xsl:text>
+            <xsl:apply-templates select="*/*" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[rng:oneOrMore]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>space separated non-empty lists of </xsl:text>
+            <xsl:apply-templates select="*/*" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=2 and count(rng:ref)=2]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:apply-templates select="rng:ref[1]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text> followed by </xsl:text>
+            <xsl:apply-templates select="rng:ref[2]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=2 and count(rng:choice)=1 and count(rng:optional/rng:ref)=1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:apply-templates select="*[1]" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text> optionally followed by </xsl:text>
+            <xsl:apply-templates select="rng:optional/*" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=4 and count(rng:ref[@name='integer'])=4]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>four space separated values of type </xsl:text>
+            <text:span text:style-name="Datatype">
+                <xsl:value-of select="@name"/>
+            </text:span>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=3 and count(rng:ref[@name='positiveLength'])=3]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>three space separated values of type </xsl:text>
+            <text:span text:style-name="Datatype">
+                <xsl:value-of select="@name"/>
+            </text:span>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:attribute[@name='style:mirror']/rng:choice" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>+++ special processing <xsl:value-of select="$attr-name"/></xsl:message>
+        <xsl:if test="not(count(*)=5 and count(rng:value)=2 and count(rng:ref[@name='horizontal-mirror'])=1 and count(rng:list)=2)">
+            <xsl:message> Unexpected content <xsl:value-of select="$attr-name"/></xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="rng:value|ancestor::rng:grammar/rng:element/rng:define[@name='horizontal-mirror']/rng:choice/rng:value">
+                <xsl:choose>
+                    <xsl:when test="position() = 1"/>
+                    <xsl:otherwise>
+                        <xsl:text>, </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:for-each>
+            <xsl:apply-templates select="rng:list[1]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text> or </xsl:text>
+            <xsl:apply-templates select="rng:list[2]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:attribute[@name='draw:line-skew']/rng:list" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>+++ special processing <xsl:value-of select="$attr-name"/></xsl:message>
+        <xsl:if test="not(count(*)=2 and count(rng:ref[@name='length'])=1 and count(rng:optional)=1 and count(rng:optional/*)=2)">
+            <xsl:message> Unexpected content <xsl:value-of select="$attr-name"/></xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>one, two or three space separated </xsl:text>
+            <xsl:apply-templates select="rng:ref" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+
+    <xsl:template match="*" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unrecognized value element: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template match="rng:element" mode="merge-attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select=".//rng:attribute[@name=$attr-name]">
+                <xsl:variable name="first" select="position() = 1"/>
+                <xsl:variable name="last" select="position() = last()"/>
+                <xsl:for-each select=".//rng:value|.//rng:ref|.//rng:empty">
+                    <xsl:choose>
+                        <xsl:when test="$first and position() = 1"/>
+                        <xsl:when test="$last and position() = last()">
+                            <xsl:text> or </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text>, </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:apply-templates select="." mode="individual-value">
+                        <xsl:with-param name="attr-name" select="$attr-name"/>
+                    </xsl:apply-templates>
+                </xsl:for-each>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:choose>
+            <xsl:when test="//text:p[.=concat($datatype-prefix,$name)]">
+                <xsl:text>values of type </xsl:text>
+                <text:span text:style-name="Datatype">
+                    <xsl:value-of select="$name"/>
+                </text:span>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*" mode="attr-list-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+         </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>one of these values: </xsl:text>
+        <xsl:for-each select="*">
+            <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:when test="position() = last()">
+                    <xsl:text>, or </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>, </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="*" mode="attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unrecognized value element in list: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+
+    <xsl:template match="rng:value" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <text:span text:style-name="Attribute_20_Value">
+           <xsl:value-of select="."/>
+        </text:span>
+    </xsl:template>
+
+    <xsl:template match="rng:empty" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>an empty string</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:choose>
+            <xsl:when test="//text:p[.=concat($datatype-prefix,$name)]">
+                <xsl:text>a value of type </xsl:text>
+                <text:span text:style-name="Datatype">
+                    <xsl:value-of select="@name"/>
+                </text:span>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*" mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+         </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>one of these values: </xsl:text>
+        <xsl:for-each select="*">
+            <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:when test="position() = last()">
+                    <xsl:text> or </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>, </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="rng:list[rng:oneOrMore and count(*)=1]" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>a non-empty space separated list of </xsl:text>
+        <xsl:apply-templates select="*/*" mode="attr-list-value">
+             <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=2 and (count(rng:ref) + count(rng:choice))=2]" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:apply-templates select="*[1]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        <xsl:text> followed by </xsl:text>
+        <xsl:apply-templates select="*[2]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=2 and (count(rng:ref) + count(rng:value))=2]" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:apply-templates select="*[1]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        <xsl:text> followed by </xsl:text>
+        <xsl:apply-templates select="*[2]" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+    </xsl:template>
+
+
+    <xsl:template match="rng:data[@type='double' and count(rng:param)=2]" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>a value of type </xsl:text>
+        <text:span text:style-name="Datatype">
+            <xsl:value-of select="@type"/>
+        </text:span>
+        <xsl:text> in the range [</xsl:text>
+        <text:span text:style-name="Attribute_20_Value">
+            <xsl:value-of select="rng:param[@name='minInclusive']"/>
+        </text:span>
+        <xsl:text>,</xsl:text>
+        <text:span text:style-name="Attribute_20_Value">
+            <xsl:value-of select="rng:param[@name='maxInclusive']"/>
+        </text:span>
+        <xsl:text>]</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="*" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unsupported individual value: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template name="print-the-values">
+        <xsl:param name="attr-name"/>
+        <xsl:text>The values of the </xsl:text>
+        <text:span text:style-name="Attribute">
+             <xsl:value-of select="$attr-name"/>
+        </text:span>
+        <xsl:text> attribute are </xsl:text>
+    </xsl:template>
+
+
+    <xsl:template name="create-elem-parent-elem-list">
+        <xsl:param name="elem-name" select="@name"/>
+        <xsl:variable name="parents" select="ancestor::rng:grammar/rng:element[.//rng:element[@name=$elem-name]]"/>
+        <xsl:variable name="count" select="count($parents)"/>
+        <xsl:if test="$count > 0">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Parent_20_Element_20_List">
+                <xsl:text>The </xsl:text>
+                <text:span text:style-name="Element">
+                    <xsl:text>&lt;</xsl:text><xsl:value-of select="$elem-name"/><xsl:text>&gt;</xsl:text>
+                </text:span>
+                <xsl:text> element </xsl:text>
+                <xsl:choose>
+                    <xsl:when test="$count = 1">
+                        <xsl:text> is usable with the following element: </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text> is usable used with the following elements: </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <!-- collect elements -->
+                <xsl:for-each select="$parents">
+                    <xsl:sort select="@name"/>
+                    <xsl:variable name="name" select="@name"/>
+                    <xsl:choose>
+                        <xsl:when test="position() = 1"/>
+                        <xsl:when test="position() = last()">
+                            <xsl:text> and </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text>, </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+                </xsl:for-each>
+                <xsl:text>.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template name="create-elem-root-elem-list">
+        <xsl:param name="elem-name" select="@name"/>
+        <xsl:if test="ancestor::rng:grammar/rng:start/rng:element[@name=$elem-name]">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Parent_20_Element_20_List">
+                <xsl:text>The </xsl:text>
+                <text:span text:style-name="Element">
+                    <xsl:text>&lt;</xsl:text><xsl:value-of select="$elem-name"/><xsl:text>&gt;</xsl:text>
+                </text:span>
+                <xsl:text> element is a root element.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="new-line">
+        <xsl:text>
+</xsl:text>
+    </xsl:template>
+    
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/create-embedded-xref.xsl b/trunk/xslt-runner/sample_xslt/create-embedded-xref.xsl
new file mode 100644
index 0000000..af252b4
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/create-embedded-xref.xsl
@@ -0,0 +1,1991 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<!-- This stylesheet inserts cross references into the ODF v1.-2 -->
+<!-- specification. The cross reference information is calculated -->
+<!-- from a flat ODF schema file whose location must be provided -->
+<!-- by the "xref-schema-file" parameter -->
+
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                 
+                xmlns:rng="http://relaxng.org/ns/structure/1.0"                
+                xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"                
+                xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+                xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+                xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+                xmlns:xlink="http://www.w3.org/1999/xlink"
+                xmlns="http://relaxng.org/ns/structure/1.0" 
+                exclude-result-prefixes="rng xsl a"
+                version="1.0">    
+    <xsl:output method="xml" indent="no"/>    
+    
+    <!-- The flat schema file -->
+    <xsl:param name="xref-schema-file"/>
+    
+    <!-- Whether or not to keep "element-" and "attribute-" paragraphs. -->
+    <xsl:param name="keep-anchors" select="'false'"/>
+    
+    <!-- Whether or not to add element and attribute lists. -->
+    <xsl:param name="add-xrefs" select="'true'"/>
+
+    <!-- The paths to the three parts (only required for part 0) -->
+    <xsl:param name="part1-content-path" select="''"/>
+    <xsl:param name="part2-content-path" select="''"/>
+    <xsl:param name="part3-content-path" select="''"/>
+
+    <!-- The paths to the three parts (only required for part 0) -->
+    <xsl:param name="part1-toc-rel-path" select="''"/>
+    <xsl:param name="part2-toc-rel-path" select="''"/>
+    <xsl:param name="part3-toc-rel-path" select="''"/>
+
+    <!-- The hypelink mode for copying TOC's to part 0 -->
+    <!-- 'none': remove hyperlinks -->
+    <!-- 'adapt': add relative URI to the documents -->
+    <!-- '': do not adapt hyperlinks -->
+    <xsl:param name="toc-hyperlink-mode" select="'adapt'"/>
+    
+    <xsl:variable name="add-attr-elem-xrefs" select="$add-xrefs='true'"/>
+    <xsl:variable name="add-text-info" select="$add-xrefs='true'"/>
+    <xsl:variable name="keep-attr-elem-xrefs" select="false()"/>
+    
+    <xsl:variable name="add-xref-anchors" select="false()"/>
+    <xsl:variable name="keep-xref-anchors" select="$keep-anchors='true'"/>
+    <xsl:variable name="check-xref-anchors" select="true()"/>
+
+    <xsl:variable name="create-odf-references" select="$xref-schema-file!=''"/>
+    <xsl:variable name="create-cardinality-info" select="false()"/>
+
+    <xsl:variable name="keep-annotations" select="false()"/>
+
+    <xsl:variable name="keep-todos" select="false()"/>
+
+    <xsl:variable name="convert-bookmarks-and-hyperlinks" select="true()"/>
+
+    <xsl:variable name="bib-messages" select="false()"/>
+
+    <xsl:variable name="element-prefix" select="'element-'"/>
+    <xsl:variable name="attribute-prefix" select="'attribute-'"/>
+    <xsl:variable name="property-prefix" select="'property-'"/>
+    <xsl:variable name="datatype-prefix" select="'datatype-'"/>
+    <xsl:variable name="value-prefix" select="'value:'"/>
+    <xsl:variable name="function-prefix" select="'anchor:'"/>
+    <xsl:variable name="toc-prefix" select="'toc-'"/>
+
+    <xsl:variable name="attributes-heading" select="'General Attributes'"/>
+    <xsl:variable name="attributes-heading-level" select="'1'"/>
+    <xsl:variable name="properties-heading" select="'Formatting Attributes'"/>
+    <xsl:variable name="datatypes-heading" select="'Other Datatypes'"/>
+
+        
+    <!-- ********************************* -->
+    <!-- ** element anchors (element-*) ** -->
+    <!-- ********************************* -->
+    <xsl:template match="text:p[starts-with(.,$element-prefix)]">        
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+        <!-- Check element name -->
+        <xsl:variable name="element-name" select="normalize-space(substring(., string-length($element-prefix)+1))"/>
+        <xsl:variable name="element-defs" select="document($xref-schema-file)/rng:grammar/rng:element[@name=$element-name]"/>
+        <xsl:if test="$check-xref-anchors and not($element-defs)">
+            <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: No element definition found in schema for &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+        </xsl:if>
+        <!-- Add xrefs -->
+        <xsl:if test="$add-attr-elem-xrefs">
+            <xsl:apply-templates select="$element-defs"/>
+        </xsl:if>
+    </xsl:template>    
+
+    <!-- ************************************* -->
+    <!-- ** attribute anchors (attribute-*) ** -->
+    <!-- ************************************* -->
+    <xsl:template match="text:p[starts-with(.,$attribute-prefix) or starts-with(.,$property-prefix)]">        
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+        <!-- Check attribute name -->
+        <xsl:variable name="attr-name-raw" select="substring-after(normalize-space(.),'-')"/>
+        <xsl:variable name="has-elements" select="contains($attr-name-raw,'_')"/>
+        <xsl:variable name="attr-name">
+            <xsl:choose>
+                <xsl:when test="$has-elements">
+                    <xsl:value-of select="substring-before($attr-name-raw,'_')"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:value-of select="$attr-name-raw"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:variable name="element-list">
+            <xsl:if test="$has-elements">
+                <xsl:value-of select="concat(substring($attr-name-raw,string-length($attr-name)+1),'_')"/>
+            </xsl:if>
+        </xsl:variable>
+        <xsl:if test="$check-xref-anchors and $has-elements">
+            <xsl:if test="not(preceding::text:h[1]/@text:outline-level='3')">
+                <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Element list <xsl:value-of select="$element-list"/> for attribute on outline level 3</xsl:message>
+            </xsl:if>
+            <xsl:call-template name="check-element-list">
+                <xsl:with-param name="element-list" select="$element-list"/>
+            </xsl:call-template>
+        </xsl:if>
+        <xsl:variable name="fp" select="starts-with(.,$property-prefix)"/>
+        <xsl:variable name="attr-defs" select="document($xref-schema-file)/rng:grammar/rng:element[(starts-with(@name,'style:') and contains(@name,'-properties'))=$fp]/rng:attribute[@name=$attr-name]"/>
+        <xsl:if test="$check-xref-anchors and not($attr-defs)">
+            <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: No attribute definition found in schema for &quot;<xsl:value-of select="$attr-name"/>&quot;.</xsl:message>
+        </xsl:if>
+        <!-- Add xrefs -->
+        <xsl:if test="$add-attr-elem-xrefs">
+            <xsl:apply-templates select="$attr-defs">
+                <xsl:with-param name="element-list" select="$element-list"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:apply-templates>
+        </xsl:if>
+    </xsl:template>    
+    
+    <xsl:template name="check-element-list">
+        <xsl:param name="element-list"/>
+        <xsl:param name="list" select="substring($element-list,string-length($element-prefix)+2)"/>
+        <xsl:variable name="element-name" select="substring-before($list,'_')"/>
+        <xsl:if test="not(document($xref-schema-file)/rng:grammar/rng:element[@name=$element-name])">
+            <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: No element definition found in schema for &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+        </xsl:if>
+        <xsl:variable name="remainder" select="substring-after($list,'_')"/>
+        <xsl:if test="$remainder">
+            <xsl:choose>
+                <xsl:when test="starts-with($remainder,$element-prefix)">
+                    <xsl:call-template name="check-element-list">
+                        <xsl:with-param name="element-list" select="concat('_',$remainder)"/>
+                    </xsl:call-template>
+                </xsl:when>
+                <xsl:when test="starts-with($remainder,$value-prefix)"/>
+                <xsl:otherwise>
+                    <xsl:message>XRef &quot;<xsl:value-of select="."/>&quot;: Illegal token &quot;<xsl:value-of select="$remainder"/>&quot;.</xsl:message>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- *********************************** -->
+    <!-- ** datatype anchors (datatype-*) ** -->
+    <!-- *********************************** -->
+    <xsl:template match="text:p[starts-with(.,$datatype-prefix)]">
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- *********************************** -->
+    <!-- ** formula anchors (anchor:*) ** -->
+    <!-- *********************************** -->
+    <xsl:template match="text:p[starts-with(.,$function-prefix)]">
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+        <xsl:variable name="function-name" 
+                      select="translate(substring-after(normalize-space(.),':'),'abcdefghijklmnopqrstuvwxyz“”','ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;&quot;')"/>
+        <xsl:if test="not(/office:document-content/office:body/office:text/text:h[translate(normalize-space(.),'abcdefghijklmnopqrstuvwxyz “”','ABCDEFGHIJKLMNOPQRSTUVWXYZ-&quot;&quot;')=$function-name])">
+            <xsl:message>*** XRef &quot;<xsl:value-of select="."/>&quot;: No heading found for anchor.</xsl:message>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ************************ -->
+    <!-- ** toc anchors (toc-) ** -->
+    <!-- ************************ -->
+    <xsl:template match="text:p[starts-with(.,$toc-prefix)]">
+        <!-- Remove anchor paragraph if $keep-xref-anchors is false -->
+        <xsl:if test="$keep-xref-anchors">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+        <xsl:variable name="part" select="substring-after(normalize-space(.), '-')"/>
+        <xsl:variable name="content-path">
+            <xsl:choose>
+                <xsl:when test="$part='part1'">
+                    <xsl:value-of select="$part1-content-path"/>
+                </xsl:when>
+                <xsl:when test="$part='part2'">
+                    <xsl:value-of select="$part2-content-path"/>
+                </xsl:when>
+                <xsl:when test="$part='part3'">
+                    <xsl:value-of select="$part3-content-path"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:message terminate="yes">*** Invalid part sepcified for toc: <xsl:value-of select="$part"/></xsl:message>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:if test="$content-path=''">
+            <xsl:message terminate="yes" >*** No content path set for <xsl:value-of select="$part"/></xsl:message>
+        </xsl:if>
+        <text:section text:name="{normalize-space(.)}" text:protected="true">
+            <xsl:apply-templates select="document($content-path)/office:document-content/office:body/office:text/text:table-of-content/text:index-body/*" mode="insert-toc">
+                <xsl:with-param name="part" select="$part"/>
+            </xsl:apply-templates>
+        </text:section>
+    </xsl:template>
+
+    <xsl:template match="text:p" mode="insert-toc">
+        <xsl:param name="part"/>
+        <text:p>
+            <xsl:apply-templates select="@*" mode="insert-toc">
+                <xsl:with-param name="part" select="$part"/>
+            </xsl:apply-templates>
+            <xsl:attribute name="text:style-name"><xsl:value-of select="concat($part,'-',@text:style-name)"/></xsl:attribute>
+            <xsl:choose>
+                <xsl:when test="text:a or $toc-hyperlink-mode='none'">
+                    <xsl:apply-templates select="node()" mode="insert-toc">
+                        <xsl:with-param name="part" select="$part"/>
+                    </xsl:apply-templates>
+                </xsl:when>
+                <xsl:otherwise>
+                    <text:a xlink:type="simple">
+                        <xsl:attribute name="xlink:href">
+                            <xsl:variable name="appendix">
+                                <xsl:choose>
+                                    <xsl:when test="starts-with(.,'Appendix')">
+                                        <xsl:value-of select="substring-before(substring(.,10),'. ')"/>
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        <xsl:value-of select="substring-before(.,'. ')"/>
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:variable>
+                            <xsl:variable name="target" select="concat('#Appendix_',translate($appendix,'.','_'))"/>
+                            <xsl:variable name="doc">
+                                <xsl:choose>
+                                    <xsl:when test="$toc-hyperlink-mode='adapt'">
+                                        <xsl:call-template name="get-doc">
+                                            <xsl:with-param name="part" select="$part"/>
+                                        </xsl:call-template>
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        <xsl:value-of select="''"/>
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:variable>
+                            <xsl:choose>
+                                <xsl:when test="$doc!=''">
+                                    <xsl:value-of select="concat('../',$doc,$target)"/>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:value-of select="$target"/>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:attribute>
+                        <xsl:apply-templates select="node()" mode="insert-toc">
+                            <xsl:with-param name="part" select="$part"/>
+                        </xsl:apply-templates>
+                    </text:a>
+                </xsl:otherwise>
+            </xsl:choose>
+        </text:p>
+    </xsl:template>
+
+
+    <xsl:template match="text:a" mode="insert-toc">
+        <xsl:param name="part"/>
+        <xsl:choose>
+            <xsl:when test="$toc-hyperlink-mode='none'">
+                <xsl:apply-templates select="node()" mode="insert-toc">
+                    <xsl:with-param name="part" select="$part"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="$toc-hyperlink-mode='adapt'">
+                <xsl:variable name="doc">
+                    <xsl:call-template name="get-doc">
+                        <xsl:with-param name="part" select="$part"/>
+                    </xsl:call-template>
+                </xsl:variable>
+                <text:a xlink:type="simple">
+                    <xsl:attribute name="xlink:href">
+                        <xsl:choose>
+                            <xsl:when test="$doc!=''">
+                                <xsl:value-of select="concat('../',$doc,@xlink:href)"/>
+                            </xsl:when>
+                            <xsl:otherwise>
+                                <xsl:value-of select="@xlink:href"/>
+                            </xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:attribute>
+                    <xsl:apply-templates select="node()" mode="insert-toc">
+                        <xsl:with-param name="part" select="$part"/>
+                    </xsl:apply-templates>
+                </text:a>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:copy>
+                    <xsl:apply-templates select="@*|node()" mode="insert-toc">
+                        <xsl:with-param name="part" select="$part"/>
+                    </xsl:apply-templates>
+                </xsl:copy>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template name="get-doc">
+        <xsl:param name="part"/>
+        <xsl:choose>
+            <xsl:when test="$part='part1'">
+                <xsl:value-of select="$part1-toc-rel-path"/>
+            </xsl:when>
+            <xsl:when test="$part='part2'">
+                <xsl:value-of select="$part2-toc-rel-path"/>
+            </xsl:when>
+            <xsl:when test="$part='part3'">
+                <xsl:value-of select="$part3-toc-rel-path"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:message terminate="yes">*** Invalid part sepcified for toc: <xsl:value-of select="$part"/></xsl:message>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="@*|node()" mode="insert-toc">
+        <xsl:param name="part"/>
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()" mode="insert-toc">
+                <xsl:with-param name="part" select="$part"/>
+            </xsl:apply-templates>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="office:automatic-styles">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+            <xsl:if test="$part1-content-path!=''">
+                <xsl:call-template name="copy-toc-auto-styles">
+                    <xsl:with-param name="part" select="'part1'"/>
+                    <xsl:with-param name="content-path" select="$part1-content-path"/>
+                </xsl:call-template>
+            </xsl:if>
+            <xsl:if test="$part2-content-path!=''">
+                <xsl:call-template name="copy-toc-auto-styles">
+                    <xsl:with-param name="part" select="'part2'"/>
+                    <xsl:with-param name="content-path" select="$part2-content-path"/>
+                </xsl:call-template>
+            </xsl:if>
+            <xsl:if test="$part3-content-path!=''">
+                <xsl:call-template name="copy-toc-auto-styles">
+                    <xsl:with-param name="part" select="'part3'"/>
+                    <xsl:with-param name="content-path" select="$part3-content-path"/>
+                </xsl:call-template>
+            </xsl:if>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template name="copy-toc-auto-styles">
+        <xsl:param name="part"/>
+        <xsl:param name="content-path"/>
+        <xsl:for-each select="document($content-path)/office:document-content/office:automatic-styles/style:style[@style:family='paragraph']">
+            <xsl:if test="ancestor::office:document-content/office:body/office:text/text:table-of-content/text:index-body/text:p[@text:style-name=current()/@style:name]">
+                <style:style>
+                    <xsl:apply-templates select="@*"/>
+                    <xsl:attribute name="style:name"><xsl:value-of select="concat($part,'-',@style:name)"/></xsl:attribute>
+                    <xsl:apply-templates select="node()"/>
+                </style:style>
+            </xsl:if>
+        </xsl:for-each>
+    </xsl:template>
+
+    <!-- ************************* -->
+    <!-- ** existing references ** -->
+    <!-- ************************* -->
+    <xsl:template match="text:h/text:reference-mark-start|text:h/text:reference-mark-end">
+        <xsl:if test="not($create-odf-references) or not(starts-with(@text:name,$attribute-prefix) or starts-with(@text:name,$property-prefix) or starts-with(@text:name,$element-prefix) or starts-with(@text:name,$datatype-prefix))">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ******************************* -->
+    <!-- ** existing cross references ** -->
+    <!-- ******************************* -->
+    <xsl:template match="text:p[@text:style-name='Attribute_20_List' or @text:style-name='Child_20_Element_20_List' or @text:style-name='Parent_20_Element_20_List' or @text:style-name='Attribute_20_Value_20_List']">
+        <!-- Remove them if $keep-attr-elem-xrefs is false -->
+        <xsl:if test="$keep-attr-elem-xrefs">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:key name="style" match="style:style[@style:family='paragraph']" use="@style:name"/>
+
+    <xsl:template match="text:p[@text:style-name='TODO' or key('style',@text:style-name)/@style:parent-style-name='TODO']">
+        <!-- Remove them if $keep-attr-elem-xrefs is false -->
+        <xsl:if test="$keep-todos">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ******************************* -->
+    <!-- ** Default values ** -->
+    <!-- ******************************* -->
+    <xsl:template match="text:p[@text:style-name='Default_20_Value']">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+		<xsl:if test="not(text:span[@text:style-name='Attribute_20_Value' or @text:style-name='Attribute_20_Value_20_Instance'])">
+			<xsl:variable name="attr-name">
+				<xsl:choose>
+					<xsl:when test="text:span[@text:style-name='Attribute']">
+						<xsl:value-of select="text:span[@text:style-name='Attribute']"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:value-of select="normalize-space(preceding::text:h[@text:outline-level='2'][last()])"/>
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:variable>
+			<xsl:message>*** <xsl:value-of select="$attr-name"/>: Missing default value in default value definition.</xsl:message>
+		</xsl:if>
+	</xsl:template>
+
+
+    <!-- *************************** -->
+    <!-- ** Bookmarks in headings ** -->
+    <!-- *************************** -->
+    <xsl:template match="text:h[text:bookmark[not(starts-with(@text:name,'__'))] or text:bookmark-start[not(starts-with(@text:name,'__'))]]" priority="1">
+        <xsl:copy>
+            <xsl:choose>
+                <xsl:when test="$convert-bookmarks-and-hyperlinks">
+                    <xsl:apply-templates select="@*"/>
+                    <xsl:for-each select="text:bookmark[not(starts-with(@text:name,'__'))]|text:bookmark-start[not(starts-with(@text:name,'__'))]">
+                        <xsl:sort select="@text:name"/>
+                        <xsl:variable name="ref-name" select="@text:name"/>
+                        <!-- xsl:message>Turning bookmark into reference mark: <xsl:value-of select="$ref-name"/>.</xsl:message -->
+                        <text:reference-mark-start text:name="{$ref-name}"/>
+                    </xsl:for-each>
+                    <xsl:apply-templates select="node()" mode="convert_bookmarks"/>
+                    <xsl:for-each select="text:bookmark[not(starts-with(@text:name,'__'))]|text:bookmark-start[not(starts-with(@text:name,'__'))]">
+                        <xsl:sort select="@text:name" order="reverse"/>
+                        <xsl:variable name="ref-name" select="@text:name"/>
+                        <text:reference-mark-end text:name="{$ref-name}"/>
+                    </xsl:for-each>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:apply-templates select="@*|node()"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="text:bookmark[not(starts-with(@text:name,'__'))]" mode="convert_bookmarks">
+        <xsl:apply-templates select="node()"/>
+    </xsl:template>
+
+    <xsl:template match="text:bookmark-start[not(starts-with(@text:name,'__'))]|text:bookmark-end[not(starts-with(@text:name,'__'))]" mode="convert_bookmarks"/>
+
+    <xsl:template match="@*|node()" mode="convert_bookmarks">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="text:a[starts-with(@xlink:href,'#') and not(starts-with(@xlink:href,'#__') or contains(@xlink:href,'|outline'))]">
+        <xsl:choose>
+            <xsl:when test="$convert-bookmarks-and-hyperlinks">
+                <xsl:variable name="ref-name" select="substring(@xlink:href,2)"/>
+                <xsl:variable name="non-empty" select="string-length(normalize-space(.)) &gt; 0"/>
+                <xsl:apply-templates select="node()"/>
+                <xsl:choose>
+                    <xsl:when test="$non-empty">
+                        <!-- xsl:message>Turning hyperlink into reference: <xsl:value-of select="$ref-name"/>.</xsl:message -->
+                        <xsl:text> </xsl:text><text:reference-ref text:ref-name="{$ref-name}" text:reference-format="chapter">?</text:reference-ref>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <!-- xsl:message>Ignoring empty hyperlink: <xsl:value-of select="$ref-name"/>.</xsl:message -->
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:copy>
+                    <xsl:apply-templates select="@*|node()"/>
+                </xsl:copy>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+
+
+    <!-- ****************************************** -->
+    <!-- ** Headings for elements and attributes ** -->
+    <!-- ****************************************** -->
+    <xsl:template match="text:h[contains(.,':')]">
+        <!-- get element or attribute name -->
+        <xsl:variable name="tag">
+            <xsl:choose>
+                <xsl:when test="contains(.,'(')">
+                    <xsl:value-of select="normalize-space(substring-before(.,'('))"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:value-of select="normalize-space(.)"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <!-- create ODF ref-mark elements if it is a valid element or attribute name -->
+        <xsl:choose>
+            <xsl:when test="not($create-odf-references) or starts-with($tag, 'odf:') or starts-with($tag, 'pkg:')">
+                <!-- OWL -->
+                <xsl:copy>
+                    <xsl:apply-templates select="@*|node()"/>
+                </xsl:copy>
+            </xsl:when>
+            <xsl:when test="starts-with($tag, '&lt;') and contains($tag,'&gt;')">
+                <xsl:copy>
+                    <xsl:apply-templates select="@*"/>
+                    <xsl:choose>
+                        <xsl:when test="preceding::text:h[@text:outline-level=$attributes-heading-level]=$attributes-heading">
+                            <xsl:variable name="fp" select="preceding::text:h[@text:outline-level='1'][last()]=$properties-heading"/>
+                            <xsl:variable name="attr-name" select="normalize-space(preceding::text:h[@text:outline-level='2'][last()])"/>
+                            <xsl:call-template name="create-element-ref-mark-start">
+                                 <xsl:with-param name="tag" select="$tag"/>
+                                 <xsl:with-param name="attr-name" select="$attr-name"/>
+                                 <xsl:with-param name="fp" select="$fp"/>
+                            </xsl:call-template>
+                            <xsl:apply-templates select="node()"/>
+                            <xsl:call-template name="create-element-ref-mark-end">
+                                 <xsl:with-param name="tag" select="$tag"/>
+                                 <xsl:with-param name="attr-name" select="$attr-name"/>
+                                 <xsl:with-param name="fp" select="$fp"/>
+                            </xsl:call-template>
+                        </xsl:when>
+                        <xsl:when test="preceding::text:h[@text:outline-level='3'][last()]='manifest:version'">
+                            <xsl:variable name="attr-name" select="'manifest:version'"/>
+                            <xsl:call-template name="create-element-ref-mark-start">
+                                 <xsl:with-param name="tag" select="$tag"/>
+                                 <xsl:with-param name="attr-name" select="$attr-name"/>
+                                 <xsl:with-param name="fp" select="false()"/>
+                            </xsl:call-template>
+                            <xsl:apply-templates select="node()"/>
+                            <xsl:call-template name="create-element-ref-mark-end">
+                                 <xsl:with-param name="tag" select="$tag"/>
+                                 <xsl:with-param name="attr-name" select="$attr-name"/>
+                                 <xsl:with-param name="fp" select="false()"/>
+                            </xsl:call-template>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:call-template name="create-element-ref-mark-start">
+                                 <xsl:with-param name="tag" select="$tag"/>
+                            </xsl:call-template>
+                            <xsl:apply-templates select="node()"/>
+                            <xsl:call-template name="create-element-ref-mark-end">
+                                 <xsl:with-param name="tag" select="$tag"/>
+                            </xsl:call-template>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:copy>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:variable name="attr-name" select="$tag"/>
+                <xsl:variable name="fp" select="preceding::text:h[@text:outline-level='1'][last()]=$properties-heading"/>
+                <xsl:if test="$check-xref-anchors">
+                    <xsl:choose>
+                        <xsl:when test="not(document($xref-schema-file)/rng:grammar/rng:element[(starts-with(@name,'style:') and contains(@name,'-properties'))=$fp]/rng:attribute[@name=$attr-name])">
+                            <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No attribute definition found in schema for &quot;<xsl:value-of select="$attr-name"/>&quot;<xsl:if test="$fp"> (property)</xsl:if>.</xsl:message>
+                        </xsl:when>
+                        <xsl:when test="$fp and not(/office:document-content/office:body/office:text/text:p[starts-with(.,$property-prefix) and (normalize-space(.)=concat($property-prefix,$attr-name) or starts-with(.,concat($property-prefix,$attr-name,'_')))])">
+                            <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No attribute xref found for &quot;<xsl:value-of select="$attr-name"/>&quot; (property).</xsl:message>
+                        </xsl:when>
+                        <xsl:when test="not($fp) and not(/office:document-content/office:body/office:text/text:p[starts-with(.,$attribute-prefix) and (normalize-space(.)=concat($attribute-prefix,$attr-name) or starts-with(.,concat($attribute-prefix,$attr-name,'_')))])">
+                            <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No attribute xref found for &quot;<xsl:value-of select="$attr-name"/>&quot;.</xsl:message>
+                        </xsl:when>
+                    </xsl:choose>
+                </xsl:if>
+                <xsl:copy>
+                    <xsl:apply-templates select="@*"/>
+                    <xsl:variable name="ref-name">
+                        <xsl:choose>
+                            <xsl:when test="$fp"><xsl:value-of select="concat($property-prefix,$attr-name)"/></xsl:when>
+                            <xsl:otherwise><xsl:value-of select="concat($attribute-prefix,$attr-name)"/></xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:variable>
+                    <xsl:if test="$create-odf-references">
+                        <text:reference-mark-start text:name="{$ref-name}"/>
+                    </xsl:if>
+                    <xsl:apply-templates select="node()"/>
+                    <xsl:if test="$create-odf-references">
+                        <text:reference-mark-end text:name="{$ref-name}"/>
+                    </xsl:if>
+                </xsl:copy>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <!-- **************************** -->
+    <!-- ** Headings for datatypes ** -->
+    <!-- **************************** -->
+    <xsl:template match="text:h[@text:outline-level='3' and preceding::text:h[@text:outline-level='2'][last()]=$datatypes-heading]">
+        <xsl:copy>
+            <xsl:apply-templates select="@*"/>
+            <xsl:variable name="ref-name" select="concat($datatype-prefix,normalize-space(.))"/>
+            <xsl:if test="$create-odf-references">
+                <text:reference-mark-start text:name="{$ref-name}"/>
+            </xsl:if>
+            <xsl:apply-templates select="node()"/>
+            <xsl:if test="$create-odf-references">
+                <text:reference-mark-end text:name="{$ref-name}"/>
+            </xsl:if>
+        </xsl:copy>
+    </xsl:template>
+
+    <!-- ***************************************** -->
+    <!-- ** Bibliograophy: Normative References ** -->
+    <!-- ***************************************** -->
+    <xsl:key name="bib-entry" match="text:bibliography-mark" use="@text:identifier"/>
+
+    <xsl:template match="text:bibliography[@text:name='NormativeReferences']/text:index-body/text:p">
+        <xsl:variable name="id" select="substring(substring-before(.,']'),2)"/>
+        <xsl:if test="not(key('bib-entry',$id)/@text:custom5) or key('bib-entry',$id)/@text:custom5 != 'informative'">
+<!--            <xsl:copy>
+                <xsl:apply-templates select="@*|node()" mode="bib"/>
+            </xsl:copy>
+            -->
+            <xsl:call-template name="bib-entry"/>
+            <xsl:if test="$bib-messages">
+                <xsl:message>Bibliographic entry [<xsl:value-of select="$id"/>] is normative.</xsl:message>
+            </xsl:if>
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ********************************************* -->
+    <!-- ** Bibliograophy: Non Normative References ** -->
+    <!-- ********************************************* -->
+    <xsl:template match="text:bibliography[@text:name='NonNormativeReferences']/text:index-body/text:p">
+        <xsl:variable name="id" select="substring(substring-before(.,']'),2)"/>
+        <xsl:if test="key('bib-entry',$id)/@text:custom5 = 'informative'">
+<!--            <xsl:copy>
+                <xsl:apply-templates select="@*|node()" mode="bib"/>
+            </xsl:copy>-->
+            <xsl:call-template name="bib-entry"/>
+            <xsl:if test="$bib-messages">
+                <xsl:message>Bibliographic entry [<xsl:value-of select="$id"/>] is non normative.</xsl:message>
+            </xsl:if>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template name="bib-entry">
+        <xsl:copy>
+            <xsl:apply-templates select="@*" mode="bib"/>
+            <xsl:for-each select="node()">
+                <xsl:choose>
+                    <xsl:when test="self::text() and contains(.,'http://')">
+                        <xsl:variable name="before" select="substring-before(.,'http://')"/>
+                        <xsl:variable name="tmp" select="substring(.,string-length($before)+1)"/>
+                        <xsl:variable name="url">
+                            <xsl:choose>
+                                <xsl:when test="contains($tmp,',')">
+                                    <xsl:value-of select="substring-before($tmp,',')"/>
+                                </xsl:when>
+                                <xsl:when test="substring($tmp,string-length($tmp))='.'">
+                                    <xsl:value-of select="substring($tmp,1,string-length($tmp)-1)"/>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:value-of select="$tmp"/>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:variable>
+                        <xsl:variable name="after" select ="substring($tmp,string-length($url)+1)"/>
+                        <xsl:value-of select="$before"/>
+                        <text:a xlink:type="simple" xlink:href="{$url}"><xsl:value-of select="$url"/></text:a>
+                        <xsl:value-of select="$after"/>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:copy>
+                            <xsl:apply-templates select="@*|node()"/>
+                        </xsl:copy>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:for-each>
+        </xsl:copy>
+    </xsl:template>
+
+
+    <xsl:template match="@*|node()" mode="bib">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()" mode="bib"/>
+        </xsl:copy>
+    </xsl:template>
+
+    <!-- ********************************** -->
+    <!-- ** Formula: Annotation sections ** -->
+    <!-- ********************************** -->
+    <xsl:template match="text:section[(@text:display='condition' and @text:condition='ooow:Note==0') or @text:display='none']">
+        <!-- Ignore sections that are hidable by the "Note" condition -->
+        <xsl:choose>
+            <xsl:when test="$keep-annotations">
+                <xsl:copy>
+                    <xsl:apply-templates select="@*|node()"/>
+                </xsl:copy>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="*" mode="check-annotations"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="text:p" mode="check-annotations">
+        <xsl:variable name="style-name" select="@text:style-name"/>
+        <xsl:choose>
+            <xsl:when test="starts-with(.,'Test Case') or normalize-space(.)=''"/>
+            <xsl:when test="$style-name='Rationale' or $style-name='Offset_20_Note' or $style-name='TODO'"/>
+            <xsl:when test="/office:document-content/office:automatic-styles/style:style[@style:name=$style-name and @style:family='paragraph' and @style:parent-style-name='Rationale']"/>
+            <xsl:when test="/office:document-content/office:automatic-styles/style:style[@style:name=$style-name and @style:family='paragraph' and @style:parent-style-name='Offset_20_Note']"/>
+            <xsl:when test="/office:document-content/office:automatic-styles/style:style[@style:name=$style-name and @style:family='paragraph' and @style:parent-style-name='TODO']"/>
+            <xsl:when test="ancestor::text:section[@text:name='SectionTestCases']"/>
+            <xsl:when test="ancestor::text:tracked-changes"/>
+            <xsl:otherwise>
+                <xsl:message>Normative Content found in section &quot;<xsl:value-of select="ancestor::text:section/@text:name"/>&quot;: <xsl:value-of select="substring(.,1,40)"/></xsl:message>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="*" mode="check-annotations"/>
+
+    <xsl:template match="text:section">
+        <xsl:message>Text sextions are not supported: <xsl_value-of select="@text:namd"/></xsl:message>
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+
+
+    <xsl:template match="text:hidden-text[@text:condition='ooow:Note==0']">
+        <!-- Ignore hidden text fields that are hidable by the "Note" condition -->
+        <xsl:if test="$keep-annotations">
+            <xsl:copy>
+                <xsl:apply-templates select="@*|node()"/>
+            </xsl:copy>
+        </xsl:if>
+    </xsl:template>
+
+
+
+    <xsl:template name="create-element-ref-mark-start">
+        <xsl:param name="tag"/>
+        <xsl:param name="attr-name" select="''"/>
+        <xsl:param name="fp" select="false()"/>
+        <xsl:variable name="element-name" select="substring-after(substring-before($tag,'&gt;'),'&lt;')"/>
+        <xsl:variable name="remainder" select="substring-after($tag,'&gt;')"/>
+        
+        <xsl:if test="$check-xref-anchors">
+            <xsl:choose>
+                <xsl:when test="$element-name='dsig:document-signatures' or $element-name='ds:Signature'"/>
+                <xsl:when test="not(document($xref-schema-file)/rng:grammar/rng:element[@name=$element-name])">
+                    <xsl:message>Heading: &quot;<xsl:value-of select="."/>&quot;: No element definition found in schema for element &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+                </xsl:when>
+                <xsl:when test="not(/office:document-content/office:body/office:text/text:p[starts-with(.,$element-prefix) and normalize-space(.)=concat($element-prefix,$element-name)])">
+                    <xsl:message>Heading &quot;<xsl:value-of select="."/>&quot;: No element xref found for element &quot;<xsl:value-of select="$element-name"/>&quot;.</xsl:message>
+                </xsl:when>
+            </xsl:choose>
+        </xsl:if>
+
+        <xsl:if test="$create-odf-references">
+            <xsl:variable name="ref-name">
+                <xsl:choose>
+                    <xsl:when test="string-length($attr-name)>0 and $fp">
+                        <xsl:value-of select="concat($property-prefix,$attr-name,'_',$element-prefix,$element-name)"/>
+                    </xsl:when>
+                    <xsl:when test="string-length($attr-name)>0">
+                        <xsl:value-of select="concat($attribute-prefix,$attr-name,'_',$element-prefix,$element-name)"/>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:value-of select="concat($element-prefix,$element-name)"/>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:variable>
+            <text:reference-mark-start text:name="{$ref-name}"/>
+        </xsl:if>
+        
+        <xsl:if test="contains($remainder,'&lt;') and contains(substring-after($remainder,'&lt;'),'&gt;')">
+            <xsl:call-template name="create-element-ref-mark-start">
+                <xsl:with-param name="tag" select="$remainder"/>
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:call-template>
+        </xsl:if>        
+    </xsl:template>
+    
+    <xsl:template name="create-element-ref-mark-end">
+        <xsl:param name="tag"/>
+        <xsl:param name="attr-name" select="''"/>
+        <xsl:param name="fp" select="false()"/>
+        <xsl:variable name="element-name" select="substring-after(substring-before($tag,'&gt;'),'&lt;')"/>
+        <xsl:variable name="remainder" select="substring-after($tag,'&gt;')"/>
+
+        <xsl:if test="contains($remainder,'&lt;') and contains(substring-after($remainder,'&lt;'),'&gt;')">
+            <xsl:call-template name="create-element-ref-mark-end">
+                <xsl:with-param name="tag" select="$remainder"/>
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:call-template>
+        </xsl:if>
+
+        <xsl:if test="$create-odf-references">
+            <xsl:variable name="ref-name">
+                <xsl:choose>
+                    <xsl:when test="string-length($attr-name)>0 and $fp">
+                        <xsl:value-of select="concat($property-prefix,$attr-name,'_',$element-prefix,$element-name)"/>
+                    </xsl:when>
+                    <xsl:when test="string-length($attr-name)>0">
+                        <xsl:value-of select="concat($attribute-prefix,$attr-name,'_',$element-prefix,$element-name)"/>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:value-of select="concat($element-prefix,$element-name)"/>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:variable>
+            <text:reference-mark-end text:name="{$ref-name}"/>
+        </xsl:if>
+    </xsl:template>
+
+
+    <!-- default: copy everything. -->
+    <xsl:template match="@*|node()">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+    
+    <!-- select all <element> nodes in the file or in included files -->
+    <xsl:template match="rng:element">                
+        <xsl:call-template name="create-elem-root-elem-list"/>
+        <xsl:call-template name="create-elem-parent-elem-list"/>
+        <xsl:choose>
+            <xsl:when test="rng:element/rng:anyName">
+				<xsl:if test="rng:attribute[@name]">
+					<xsl:call-template name="create-attr-list"/>
+				</xsl:if>
+				<xsl:if test="rng:element[contains(@condition,'mixed')]">
+					<text:p text:style-name="Child_20_Element_20_List">
+						<xsl:text>The </xsl:text>
+						<text:span text:style-name="Element">
+							<xsl:text>&lt;</xsl:text>
+							<xsl:value-of select="@name"/>
+							<xsl:text>&gt;</xsl:text>
+						</text:span>
+						<xsl:text> element has mixed content where arbitrary child elements are permitted.</xsl:text>
+					</text:p>
+				</xsl:if>
+			</xsl:when>
+            <xsl:otherwise>
+                <xsl:call-template name="create-attr-list"/>
+                <xsl:call-template name="create-child-elem-list"/>
+                <xsl:call-template name="create-text-info"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>   
+
+
+    <!-- select all <element> nodes in the file or in included files -->
+    <xsl:template match="rng:attribute">
+        <xsl:param name="element-list"/>
+        <xsl:param name="fp"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:if test="not(preceding::rng:attribute[@name=$name and (starts-with(ancestor::rng:element/@name,'style:') and contains(ancestor::rng:element/@name,'-properties'))=$fp])">
+            <xsl:call-template name="create-attr-parent-elem-list">
+                <xsl:with-param name="element-list" select="$element-list"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:call-template>
+            <xsl:call-template name="create-attr-value-list">
+                <xsl:with-param name="element-list" select="$element-list"/>
+                <xsl:with-param name="fp" select="$fp"/>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template>   
+    
+    <xsl:template name="create-attr-list">
+        <xsl:variable name="count" select="count(rng:attribute)"/>
+        <xsl:variable name="fp" select="starts-with(@name,'style:') and contains(@name,'-properties')"/>
+        <xsl:call-template name="new-line"/>
+        <xsl:variable name="elem-name" select="@name"/>
+        <text:p text:style-name="Attribute_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Element">
+                <xsl:text>&lt;</xsl:text>
+                <xsl:value-of select="$elem-name"/>
+                <xsl:text>&gt;</xsl:text>
+            </text:span>
+            <xsl:text> element </xsl:text>
+            <xsl:choose>
+                <xsl:when test="$count > 0">
+                    <xsl:choose>
+                        <xsl:when test="$count = 1">
+                            <xsl:text> has the following attribute: </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text> has the following attributes: </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <!-- collect attributes -->
+                    <xsl:for-each select="rng:attribute">
+                        <xsl:sort select="@name"/>
+                        <xsl:variable name="name" select="@name"/>
+                        <xsl:if test="not(preceding-sibling::rng:attribute[@name=$name])">
+                            <xsl:choose>
+                                <xsl:when test="position() = 1"/>
+                                <xsl:when test="position() = last()">
+                                    <xsl:text> and </xsl:text>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:text>, </xsl:text>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            <text:span text:style-name="Attribute"><xsl:value-of select="@name"/></text:span>
+                            <xsl:if test="$create-cardinality-info">
+                                <xsl:choose>
+                                    <xsl:when test="not(@condition) or @condition='' or @condition='interleave' or @condition='interleave/interleave'">
+                                        <!-- mandatory: no hint -->
+                                    </xsl:when>
+                                    <xsl:when test="contains(@condition,'optional') and not(contains(@condition,'group') or contains(@condition,'choice'))">
+                                        <xsl:text>(?)</xsl:text>
+                                    </xsl:when>
+                                    <xsl:when test="@condition='zeroOrMore'">
+                                        <xsl:text>(?)</xsl:text>
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        <xsl:message>Attribute <xsl:value-of select="@name"/>: Complex cardinality: <xsl:value-of select="@condition"/></xsl:message>
+                                        <xsl:text>(!)</xsl:text>
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:if>
+                            <xsl:variable name="aname" select="@name"/>
+                            <xsl:variable name="ref-name">
+                                <xsl:choose>
+                                    <xsl:when test="$fp and /office:document-content/office:body/office:text/text:p[starts-with(.,concat($property-prefix,$aname,'_')) and contains(concat(normalize-space(.),'_'),concat($element-prefix,$elem-name,'_'))]"><xsl:value-of select="concat($property-prefix,$aname,'_',$element-prefix,$elem-name)"/></xsl:when>
+                                    <xsl:when test="not($fp) and /office:document-content/office:body/office:text/text:p[starts-with(.,concat($attribute-prefix,$aname,'_')) and contains(concat(normalize-space(.),'_'),concat($element-prefix,$elem-name,'_'))]"><xsl:value-of select="concat($attribute-prefix,$aname,'_',$element-prefix,$elem-name)"/></xsl:when>
+                                    <xsl:when test="$fp"><xsl:value-of select="concat($property-prefix,@name)"/></xsl:when>
+                                    <xsl:otherwise><xsl:value-of select="concat($attribute-prefix,@name)"/></xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:variable>
+                            <xsl:text> </xsl:text><text:reference-ref text:ref-name="{$ref-name}" text:reference-format="chapter">?</text:reference-ref>
+                        </xsl:if>
+                    </xsl:for-each>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text> has no attributes</xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template name="create-child-elem-list">
+        <xsl:variable name="count" select="count(rng:element[@name])"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Child_20_Element_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Element">
+                <xsl:text>&lt;</xsl:text>
+                <xsl:value-of select="@name"/>
+                <xsl:text>&gt;</xsl:text>
+            </text:span>
+            <xsl:text> element </xsl:text>
+            <xsl:choose>
+                <xsl:when test="$count > 0">
+                    <xsl:choose>
+                        <xsl:when test="$count = 1">
+                            <xsl:text> has the following child element: </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text> has the following child elements: </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <!-- collect elements -->
+                    <xsl:for-each select="rng:element">
+                        <xsl:sort select="@name"/>
+                        <xsl:variable name="name" select="@name"/>
+                        <xsl:if test="not(preceding-sibling::rng:element[@name=$name])">
+                            <xsl:choose>
+                                <xsl:when test="position() = 1"/>
+                                <xsl:when test="position() = last()">
+                                    <xsl:text> and </xsl:text>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:text>, </xsl:text>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+                        </xsl:if>
+                    </xsl:for-each>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text> has no child elements</xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template name="create-text-info">
+        <xsl:if test="$add-text-info">
+            <xsl:choose>
+                <xsl:when test="@name='text:script'">
+                    <text:p text:style-name="Child_20_Element_20_List">
+                        <xsl:text>The </xsl:text>
+                        <text:span text:style-name="Element">
+                            <xsl:text>&lt;</xsl:text>
+                            <xsl:value-of select="@name"/>
+                            <xsl:text>&gt;</xsl:text>
+                        </text:span>
+                        <xsl:text> element has character data content. Character data content is only permitted if a </xsl:text>
+                        <text:span text:style-name="Attribute"><xsl:text>xlink:href</xsl:text></text:span>
+                        <xsl:text> attribute is not present.</xsl:text>
+                    </text:p>
+                </xsl:when>
+                <xsl:when test="@name='meta:user-defined'">
+                    <text:p text:style-name="Child_20_Element_20_List">
+                        <xsl:text>The </xsl:text>
+                        <text:span text:style-name="Element">
+                            <xsl:text>&lt;</xsl:text>
+                            <xsl:value-of select="@name"/>
+                            <xsl:text>&gt;</xsl:text>
+                        </text:span>
+                        <xsl:text> element has character data content, or depending on the value of the </xsl:text>
+                        <text:span text:style-name="Attribute"><xsl:text>meta:value-type</xsl:text></text:span>
+                        <xsl:text> attribute content of type </xsl:text>
+                        <xsl:for-each select="rng:ref|rng:data">
+                            <xsl:choose>
+                                <xsl:when test="position() = 1"/>
+                                <xsl:when test="position() = last()">
+                                    <xsl:text> or </xsl:text>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <xsl:text>, </xsl:text>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            <xsl:call-template name="print-datatype">
+                                <xsl:with-param name="name" select="@type|@name"/>
+                            </xsl:call-template>
+                        </xsl:for-each>
+                        <xsl:text>.</xsl:text>
+                    </text:p>
+                </xsl:when>
+                <xsl:when test="rng:text[not(@condition) or (@condition='interleave/interleave' and not(.//*))]">
+                    <xsl:call-template name="new-line"/>
+                    <text:p text:style-name="Child_20_Element_20_List">
+                        <xsl:text>The </xsl:text>
+                        <text:span text:style-name="Element">
+                            <xsl:text>&lt;</xsl:text>
+                            <xsl:value-of select="@name"/>
+                            <xsl:text>&gt;</xsl:text>
+                        </text:span>
+                        <xsl:text> element has character data content.</xsl:text>
+                    </text:p>
+                </xsl:when>
+                <xsl:when test="rng:text[@condition='zeroOrMore/choice'or @condition='zeroOrMore/choice/choice']">
+                    <xsl:call-template name="new-line"/>
+                    <text:p text:style-name="Child_20_Element_20_List">
+                        <xsl:text>The </xsl:text>
+                        <text:span text:style-name="Element">
+                            <xsl:text>&lt;</xsl:text>
+                            <xsl:value-of select="@name"/>
+                            <xsl:text>&gt;</xsl:text>
+                        </text:span>
+                        <xsl:text> element has mixed content.</xsl:text>
+                    </text:p>
+                </xsl:when>
+                <xsl:when test="rng:ref[not(@condition)]|rng:data[not(@condition)]">
+                    <xsl:call-template name="new-line"/>
+                    <text:p text:style-name="Child_20_Element_20_List">
+                        <xsl:text>The </xsl:text>
+                        <text:span text:style-name="Element">
+                            <xsl:text>&lt;</xsl:text>
+                            <xsl:value-of select="@name"/>
+                            <xsl:text>&gt;</xsl:text>
+                        </text:span>
+                        <xsl:text> element has content of data type </xsl:text>
+                        <xsl:call-template name="print-datatype">
+                            <xsl:with-param name="name" select="rng:data/@type|rng:ref/@name"/>
+                            <xsl:with-param name="elem-name" select="@name"/>
+                        </xsl:call-template>
+                        <xsl:text>.</xsl:text>
+                    </text:p>
+                </xsl:when>
+                <xsl:when test="rng:text|rng:ref|rng:data">
+                     <xsl:message>Element <xsl:value-of select="@name"/>: complex condition for text: <xsl:value-of select="rng:text/@condition"/></xsl:message>
+                </xsl:when>
+            </xsl:choose>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="create-attr-parent-elem-list">
+        <xsl:param name="attr-name" select="@name"/>
+        <xsl:param name="element-list"/>
+        <xsl:param name="fp"/>
+        <xsl:variable name="parents" select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_'))) and rng:attribute[@name=$attr-name]]"/>
+        <xsl:variable name="count" select="count($parents)"/>
+        <xsl:if test="$check-xref-anchors and $count=0">
+            <xsl:message>&quot;<xsl:value-of select="$attr-name"/>&quot; <xsl:if test="$fp"> (property)</xsl:if><xsl:if test="$element-list"> (<xsl:value-of select="$element-list"/>)</xsl:if>: No parent elements found in schema.</xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Parent_20_Element_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Attribute">
+                <xsl:value-of select="$attr-name"/>
+            </text:span>
+            <xsl:text> attribute </xsl:text>
+            <xsl:choose>
+                <xsl:when test="$count = 1">
+                    <xsl:text> is usable with the following element: </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text> is usable with the following elements: </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <!-- collect elements -->
+            <xsl:for-each select="$parents">
+                <xsl:sort select="@name"/>
+                <xsl:variable name="name" select="@name"/>
+                <xsl:choose>
+                    <xsl:when test="position() = 1"/>
+                    <xsl:when test="position() = last()">
+                        <xsl:text> and </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text>, </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template name="create-attr-value-list">
+        <xsl:param name="attr-name" select="@name"/>
+        <xsl:param name="element-list"/>
+        <xsl:param name="fp"/>
+        <xsl:choose>
+            <xsl:when test="$attr-name='text:id' or $attr-name='form:id' or $attr-name='office:value'">
+                <xsl:choose>
+                    <xsl:when test="not($element-list)">
+                        <xsl:apply-templates select="*" mode="attr-value">
+                            <xsl:with-param name="attr-name" select="$attr-name"/>
+                        </xsl:apply-templates>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:apply-templates select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_')))]/rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                            <xsl:with-param name="attr-name" select="$attr-name"/>
+                        </xsl:apply-templates>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:when>
+            <xsl:when test="$attr-name='chart:legend-position' or 
+                            $attr-name='draw:concave' or
+                            $attr-name='form:image-position' or
+                            $attr-name='meta:value-type' or
+                            $attr-name='style:legend-expansion' or
+                            $attr-name='style:family' or
+                            $attr-name='style:type' or
+                            $attr-name='table:member-type' or 
+                            ($attr-name='table:orientation' and contains($element-list,'table:data-pilot-field'))or 
+                            $attr-name='table:sort-mode' or
+                            ($attr-name='text:display' and ($fp or contains($element-list,'text:section'))) or
+                            $attr-name='chart:symbol-type'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_'))) and rng:attribute[@name=$attr-name]][1]" mode="merge-attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="$attr-name='office:value-type'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[@name='text:variable-decl']/rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="$attr-name='style:num-format'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[@name='text:page-number']" mode="merge-attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="$attr-name='text:reference-format'">
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element/rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:when test="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and (not($element-list) or contains($element-list,concat('_',$element-prefix,@name,'_'))) and count(rng:attribute[@name=$attr-name])>1]">
+                <xsl:message>Attribute <xsl:value-of select="$attr-name"/>: Multiple attribute definitions do exist for at least one element.</xsl:message>
+            </xsl:when>
+            <xsl:when test="$attr-name='xlink:show' or
+                            $attr-name='xlink:actuate'">
+                <xsl:message>Attribute <xsl:value-of select="$attr-name"/>: No type info added (type too complex).</xsl:message>
+            </xsl:when>
+            <xsl:when test="not($element-list)">
+                <xsl:variable name="count" select="count(*)"/>
+                <xsl:variable name="ename" select="name(*)"/>
+                <xsl:if test="ancestor::rng:grammar/rng:element[(starts-with(@name,'style:') and contains(@name,'-properties'))=$fp]/rng:attribute[@name=$attr-name and (count(*)!=$count or name(*[1]) != $ename)]">
+                    <xsl:message>Attribute <xsl:value-of select="$attr-name"/>: Multiple attribute definitions do exist but no element constrained anchors. this: <xsl:value-of select="$count"/>/<xsl:value-of select="$ename"/> </xsl:message>
+                </xsl:if>
+                <xsl:apply-templates select="*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="ancestor::rng:grammar/rng:element[((starts-with(@name,'style:') and contains(@name,'-properties'))=$fp) and starts-with($element-list,concat('_',$element-prefix,@name,'_'))]/rng:attribute[@name=$attr-name]/*" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:call-template name="new-line"/>
+        <xsl:choose>
+            <xsl:when test="/office:document-content/office:body/office:text/text:p[.=concat($datatype-prefix,$name)]">
+                <text:p text:style-name="Attribute_20_Value_20_List">
+                    <xsl:text>The </xsl:text>
+                    <text:span text:style-name="Attribute">
+                        <xsl:value-of select="$attr-name"/>
+                    </text:span>
+                    <xsl:text> attribute has the data type </xsl:text>
+                    <xsl:call-template name="print-datatype">
+                        <xsl:with-param name="name" select="$name"/>
+                        <xsl:with-param name="attr-name" select="$attr-name"/>
+                    </xsl:call-template>
+                    <xsl:text>.</xsl:text>
+                </text:p>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]" mode="attr-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:define" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:if test="count(*)>1">
+            <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Referenced define <xsl:value-of select="@name"/> has multiple child elements.</xsl:message>
+        </xsl:if>
+        <xsl:apply-templates select="*" mode="attr-value">
+            <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="rng:data" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="type" select="@type"/>
+        <xsl:call-template name="new-line"/>
+        <xsl:choose>
+            <!-- A plain data type is only valid if there is a datatype-* in the
+                 specification text and if there isn't a same named define -->
+            <xsl:when test="/office:document-content/office:body/office:text/text:p[.=concat($datatype-prefix,$type)] and not(document($xref-schema-file)/rng:grammar/rng:define[@name=$type])">
+                <text:p text:style-name="Attribute_20_Value_20_List">
+                    <xsl:text>The </xsl:text>
+                    <text:span text:style-name="Attribute">
+                        <xsl:value-of select="$attr-name"/>
+                    </text:span>
+                    <xsl:text> attribute has the data type </xsl:text>
+                    <xsl:call-template name="print-datatype">
+                        <xsl:with-param name="name" select="$type"/>
+                        <xsl:with-param name="attr-name" select="$attr-name"/>
+                    </xsl:call-template>
+                    <xsl:text>.</xsl:text>
+                </text:p>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unrecognized value element: <xsl:value-of select="name(.)"/></xsl:message>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:choice[count(*)=1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: &lt;choice&gt; with only one child element.</xsl:message>
+        <xsl:apply-templates select="*" mode="attr-value">
+            <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="*">
+                <xsl:choose>
+                    <xsl:when test="position() = 1"/>
+                    <xsl:when test="position() = last()">
+                        <xsl:text> or </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text>, </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:attribute[@name='text:reference-format']/rng:choice" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:variable name="elem-name" select="ancestor::rng:element/@name"/>
+        <xsl:text>For </xsl:text>
+        <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="$elem-name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$elem-name)}" text:reference-format="chapter">?</text:reference-ref>
+        <xsl:text> elements, the values of the </xsl:text>
+        <text:span text:style-name="Attribute">
+             <xsl:value-of select="$attr-name"/>
+        </text:span>
+        <xsl:if test="*[not(self::rng:value or self::rng:ref)]"><xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: unexpected child elements</xsl:message></xsl:if>
+        <xsl:text> attribute are </xsl:text>
+            <xsl:variable name="has-values" select="count(rng:value)>0"/>
+            <xsl:for-each select="rng:ref">
+                <xsl:variable name="name" select="@name"/>
+                <xsl:if test="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*[not(self::rng:choice)]"><xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: unexpected child elements in referenced define</xsl:message></xsl:if>
+                <xsl:for-each select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/rng:choice/*">
+                    <xsl:choose>
+                        <xsl:when test="position() = 1"/>
+                        <xsl:when test="not($has-values) and position() = last()">
+                            <xsl:text> or </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text>, </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:apply-templates select="." mode="individual-value">
+                        <xsl:with-param name="attr-name" select="$attr-name"/>
+                    </xsl:apply-templates>
+                </xsl:for-each>
+            </xsl:for-each>
+            <xsl:for-each select="rng:value">
+                <xsl:choose>
+                    <xsl:when test="position() = last()">
+                        <xsl:text> or </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text>, </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:choice[rng:list[rng:oneOrMore and count(*)=1] and count(*)=count(rng:value)+1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="rng:value">
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+                <xsl:text>, </xsl:text>
+            </xsl:for-each>
+            <xsl:text> or white space separated non-empty lists of </xsl:text>
+            <xsl:apply-templates select="rng:list/rng:oneOrMore/*" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:choice[rng:list[count(*)=2 and count(rng:choice)=2] and count(*)=count(rng:value)+1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="rng:value">
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+                <xsl:text>, </xsl:text>
+            </xsl:for-each>
+            <xsl:text>or two white space separated values. The first of these values </xsl:text>
+            <xsl:apply-templates select="rng:list/*[1]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>. The second of these values </xsl:text>
+            <xsl:apply-templates select="rng:list/*[2]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:value" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:if test="not(starts-with($attr-name,'xlink:'))">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Attribute_20_Value_20_List">
+                <xsl:text>The only value of the </xsl:text>
+                <text:span text:style-name="Attribute">
+                    <xsl:value-of select="$attr-name"/>
+                </text:span>
+                <xsl:text> attribute is </xsl:text>
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+                <xsl:text>.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template match="rng:list[rng:zeroOrMore and count(*)=1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-value-is">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>a white space separated lists of </xsl:text>
+            <xsl:apply-templates select="*/*" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>, including the empty list.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[rng:oneOrMore and count(*)=1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-value-is">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>a white space separated non-empty lists of </xsl:text>
+            <xsl:apply-templates select="*/*" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=2 and count(rng:ref|rng:choice)=2]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-attribute-has">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>two white space separated values. The first value </xsl:text>
+            <xsl:apply-templates select="*[1]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>. The second value </xsl:text>
+            <xsl:apply-templates select="*[2]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=2 and count(rng:choice)=1 and count(rng:optional/rng:ref)=1]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-attribute-has">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>one or two white space separated values. The first values </xsl:text>
+            <xsl:apply-templates select="*[1]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>. The second value </xsl:text>
+            <xsl:apply-templates select="rng:optional/*" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=4 and count(rng:ref[@name='integer'])=4]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>four white space separated values of type </xsl:text>
+            <xsl:call-template name="print-datatype">
+                <xsl:with-param name="name" select="'integer'"/>
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:list[count(*)=3 and count(rng:ref[@name='positiveLength'])=3]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>three white space separated values of type </xsl:text>
+            <xsl:call-template name="print-datatype">
+                <xsl:with-param name="name" select="'positiveLength'"/>
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:element[@name='style:background-image']/rng:attribute[@name='style:position']/rng:choice" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:if test="not(count(rng:list)=2)">
+            <xsl:message>Unexpected content <xsl:value-of select="$attr-name"/></xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="rng:value">
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+                <xsl:text>, </xsl:text>
+            </xsl:for-each>
+            <xsl:text>or two white space separated values, that may appear in any order. One of these values </xsl:text>
+            <xsl:apply-templates select="rng:list[1]/rng:ref[1]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>. The other value </xsl:text>
+            <xsl:apply-templates select="rng:list[1]/rng:ref[2]" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+
+    <xsl:template match="rng:attribute[@name='style:mirror']/rng:choice" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:if test="not(count(*)=5 and count(rng:value)=2 and count(rng:ref[@name='horizontal-mirror'])=1 and count(rng:list)=2)">
+            <xsl:message>Unexpected content <xsl:value-of select="$attr-name"/></xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="rng:value|ancestor::rng:grammar/rng:element/rng:define[@name='horizontal-mirror']/rng:choice/rng:value">
+                <xsl:apply-templates select="." mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+                <xsl:text>, </xsl:text>
+            </xsl:for-each>
+            <xsl:text>or two white space separated values, that may appear in any order. One of these values is always </xsl:text>
+            <xsl:apply-templates select="rng:list[1]/rng:value" mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>. The other value </xsl:text>
+            <xsl:apply-templates select="rng:list[1]/rng:ref" mode="single-attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:attribute[@name='draw:line-skew']/rng:list" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:if test="not(count(*)=2 and count(rng:ref[@name='length'])=1 and count(rng:optional)=1 and count(rng:optional/*)=2)">
+            <xsl:message> Unexpected content <xsl:value-of select="$attr-name"/></xsl:message>
+        </xsl:if>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text>one, two or three white space separated </xsl:text>
+            <xsl:apply-templates select="rng:ref" mode="attr-list-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:data[(@type='double' or @type='decimal') and count(rng:param)=2]" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:text>The </xsl:text>
+            <text:span text:style-name="Attribute">
+                 <xsl:value-of select="$attr-name"/>
+            </text:span>
+            <xsl:text> attribute has values of type </xsl:text>
+            <xsl:call-template name="print-datatype">
+                <xsl:with-param name="name" select="@type"/>
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:text> in the range [</xsl:text>
+            <text:span text:style-name="Attribute_20_Value">
+                <xsl:value-of select="rng:param[@name='minInclusive']"/>
+            </text:span>
+            <xsl:text>,</xsl:text>
+            <text:span text:style-name="Attribute_20_Value">
+                <xsl:value-of select="rng:param[@name='maxInclusive']"/>
+            </text:span>
+            <xsl:text>].</xsl:text>
+        </text:p>
+    </xsl:template>
+    
+    <xsl:template match="*" mode="attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unrecognized value element: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template match="rng:element" mode="merge-attr-value">
+        <xsl:param name="attr-name"/>
+        <xsl:call-template name="new-line"/>
+        <text:p text:style-name="Attribute_20_Value_20_List">
+            <xsl:call-template name="print-the-values">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:call-template>
+            <xsl:for-each select="rng:attribute[@name=$attr-name]">
+                <xsl:variable name="first" select="position() = 1"/>
+                <xsl:variable name="last" select="position() = last()"/>
+                <xsl:for-each select=".//rng:value|.//rng:ref|.//rng:empty">
+                    <xsl:choose>
+                        <xsl:when test="$first and position() = 1"/>
+                        <xsl:when test="$last and position() = last()">
+                            <xsl:text> or </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text>, </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:apply-templates select="." mode="individual-value">
+                        <xsl:with-param name="attr-name" select="$attr-name"/>
+                    </xsl:apply-templates>
+                </xsl:for-each>
+            </xsl:for-each>
+            <xsl:text>.</xsl:text>
+        </text:p>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:choose>
+            <xsl:when test="/office:document-content/office:body/office:text/text:p[.=concat($datatype-prefix,$name)]">
+                <xsl:text>values of type </xsl:text>
+                <xsl:call-template name="print-datatype">
+                    <xsl:with-param name="name" select="$name"/>
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*" mode="attr-list-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+         </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:choice" mode="attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>one of these values: </xsl:text>
+        <xsl:for-each select="*">
+            <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:when test="position() = last()">
+                    <xsl:text>, or </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>, </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="*" mode="attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unrecognized value element in list: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="single-attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:choose>
+            <xsl:when test="/office:document-content/office:body/office:text/text:p[.=concat($datatype-prefix,$name)]">
+                <xsl:text>is of type </xsl:text>
+                <xsl:call-template name="print-datatype">
+                    <xsl:with-param name="name" select="@name"/>
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*" mode="single-attr-list-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+         </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:data[(@type='double' or @type='decimal') and count(rng:param)=2 and rng:param[@name='minInclusive'] and rng:param[@name='maxInclusive']]" mode="single-attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>is </xsl:text>
+        <xsl:apply-templates select="self::*" mode="individual-value">
+            <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="rng:choice[count(*)=count(rng:value)]" mode="single-attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>is one of: </xsl:text>
+        <xsl:for-each select="*">
+            <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:when test="position() = last()">
+                    <xsl:text> or </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>, </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="rng:choice[rng:ref[@name='percent'] and count(*)=(count(rng:value)+1)]" mode="single-attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>is of type </xsl:text>
+        <xsl:call-template name="print-datatype">
+            <xsl:with-param name="name" select="'percent'"/>
+            <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:call-template>
+        <xsl:text>, or is one of: </xsl:text>
+        <xsl:for-each select="rng:value">
+            <xsl:choose>
+                <xsl:when test="position() = 1"/>
+                <xsl:when test="position() = last()">
+                    <xsl:text> or </xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>, </xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:apply-templates select="." mode="individual-value">
+                <xsl:with-param name="attr-name" select="$attr-name"/>
+            </xsl:apply-templates>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="*" mode="single-attr-list-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unrecognized value element in fixed-length list: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template match="rng:value" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <text:span text:style-name="Attribute_20_Value">
+           <xsl:value-of select="."/>
+        </text:span>
+    </xsl:template>
+
+    <xsl:template match="rng:empty" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>an empty string</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="rng:ref" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:variable name="name" select="@name"/>
+        <xsl:choose>
+            <xsl:when test="/office:document-content/office:body/office:text/text:p[.=concat($datatype-prefix,$name)]">
+                <xsl:text>a value of type </xsl:text>
+                <xsl:call-template name="print-datatype">
+                    <xsl:with-param name="name" select="@name"/>
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates select="document($xref-schema-file)/rng:grammar/rng:define[@name=$name]/*" mode="individual-value">
+                    <xsl:with-param name="attr-name" select="$attr-name"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+         </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="rng:data[(@type='double' or @type='decimal') and count(rng:param)=2 and rng:param[@name='minInclusive'] and rng:param[@name='maxInclusive']]" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>a value of type </xsl:text>
+        <xsl:call-template name="print-datatype">
+            <xsl:with-param name="name" select="@type"/>
+            <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:call-template>
+        <xsl:text> in the range [</xsl:text>
+        <text:span text:style-name="Attribute_20_Value">
+            <xsl:value-of select="rng:param[@name='minInclusive']"/>
+        </text:span>
+        <xsl:text>,</xsl:text>
+        <text:span text:style-name="Attribute_20_Value">
+            <xsl:value-of select="rng:param[@name='maxInclusive']"/>
+        </text:span>
+        <xsl:text>]</xsl:text>
+    </xsl:template>
+
+    <xsl:template match="rng:data[@type='decimal' and count(rng:param)=1 and rng:param[@name='minInclusive']='0.0']" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:text>a non negative value of type </xsl:text>
+        <xsl:call-template name="print-datatype">
+            <xsl:with-param name="name" select="@type"/>
+            <xsl:with-param name="attr-name" select="$attr-name"/>
+        </xsl:call-template>
+    </xsl:template>
+
+
+    <xsl:template match="*" mode="individual-value">
+        <xsl:param name="attr-name"/>
+        <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Unsupported individual value: <xsl:value-of select="name(.)"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template name="print-the-values">
+        <xsl:param name="attr-name"/>
+        <xsl:text>The values of the </xsl:text>
+        <text:span text:style-name="Attribute">
+             <xsl:value-of select="$attr-name"/>
+        </text:span>
+        <xsl:text> attribute are </xsl:text>
+    </xsl:template>
+
+    <xsl:template name="print-the-value-is">
+        <xsl:param name="attr-name"/>
+        <xsl:text>The value of the </xsl:text>
+        <text:span text:style-name="Attribute">
+             <xsl:value-of select="$attr-name"/>
+        </text:span>
+        <xsl:text> attribute is </xsl:text>
+    </xsl:template>
+
+    <xsl:template name="print-the-attribute-has">
+        <xsl:param name="attr-name"/>
+        <xsl:text>The </xsl:text>
+        <text:span text:style-name="Attribute">
+             <xsl:value-of select="$attr-name"/>
+        </text:span>
+        <xsl:text> attribute has </xsl:text>
+    </xsl:template>
+
+    <xsl:template name="print-datatype">
+        <xsl:param name="name"/>
+        <xsl:param name="attr-name" select="'[unknown]'"/>
+        <xsl:if test="string-length($name)=0">
+            <xsl:message>*** Attribute <xsl:value-of select="$attr-name"/>: Empty datatype name.</xsl:message>
+        </xsl:if>
+        <text:span text:style-name="Datatype">
+            <xsl:value-of select="$name"/>
+        </text:span>
+        <xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($datatype-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+    </xsl:template>
+
+
+    <xsl:template name="create-elem-parent-elem-list">
+        <xsl:param name="elem-name" select="@name"/>
+        <xsl:variable name="parents" select="ancestor::rng:grammar/rng:element[rng:element[@name=$elem-name]]"/>
+        <xsl:variable name="count" select="count($parents)"/>
+        <xsl:if test="$count > 0">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Parent_20_Element_20_List">
+                <xsl:text>The </xsl:text>
+                <text:span text:style-name="Element">
+                    <xsl:text>&lt;</xsl:text><xsl:value-of select="$elem-name"/><xsl:text>&gt;</xsl:text>
+                </text:span>
+                <xsl:text> element </xsl:text>
+                <xsl:choose>
+                    <xsl:when test="$count = 1">
+                        <xsl:text> is usable within the following element: </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text> is usable within the following elements: </xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <!-- collect elements -->
+                <xsl:for-each select="$parents">
+                    <xsl:sort select="@name"/>
+                    <xsl:variable name="name" select="@name"/>
+                    <xsl:choose>
+                        <xsl:when test="position() = 1"/>
+                        <xsl:when test="position() = last()">
+                            <xsl:text> and </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:text>, </xsl:text>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <text:span text:style-name="Element"><xsl:text>&lt;</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></text:span><xsl:text> </xsl:text><text:reference-ref text:ref-name="{concat($element-prefix,$name)}" text:reference-format="chapter">?</text:reference-ref>
+                </xsl:for-each>
+                <xsl:text>.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+
+    <xsl:template name="create-elem-root-elem-list">
+        <xsl:param name="elem-name" select="@name"/>
+        <xsl:if test="ancestor::rng:grammar/rng:start/rng:element[@name=$elem-name]">
+            <xsl:call-template name="new-line"/>
+            <text:p text:style-name="Parent_20_Element_20_List">
+                <xsl:text>The </xsl:text>
+                <text:span text:style-name="Element">
+                    <xsl:text>&lt;</xsl:text><xsl:value-of select="$elem-name"/><xsl:text>&gt;</xsl:text>
+                </text:span>
+                <xsl:text> element is a root element.</xsl:text>
+            </text:p>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="new-line">
+        <xsl:text>
+</xsl:text>
+    </xsl:template>
+    
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/create-flat-schema.xsl b/trunk/xslt-runner/sample_xslt/create-flat-schema.xsl
new file mode 100644
index 0000000..f1471e7
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/create-flat-schema.xsl
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<!-- This stylesheet creates a "flat" schema from an ODF schema. -->
+<!-- In the resulting schema, all defines have been resolved and -->
+<!-- other simplifications have been made.                       -->
+<!-- The rsulting schema IS NOT equivalent to the original ODF   -->
+<!-- schema, and it IS NOT a valid RNG schema. It can be used    -->
+<!-- only for documentation purposes.                            -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+                xmlns:rng="http://relaxng.org/ns/structure/1.0"
+                xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+				xmlns:dc="http://purl.org/dc/elements/1.1/"
+                xmlns="http://relaxng.org/ns/structure/1.0" version="1.0">
+    <xsl:output method="xml" indent="yes"/>
+
+    <!-- The paramter 'incl-default-values' specifies whether default -->
+    <!-- value definition should be included into the schema -->
+    <xsl:param name="incl-default-values" select="'true'"/>
+    
+    <!-- The parameter 'incl-types' specifies whether attribute type -->
+    <!-- information shall be included -->
+    <xsl:param name="incl-types" select="'true'"/>
+    
+    <!-- The parameter 'incl-conditions' specifies whether elements -->
+    <!-- like <optional> shall be included as attributes -->
+    <xsl:param name="incl-conditions" select="'true'"/>
+
+    <!-- The parameter 'incl-content-model' specifies whether the -->
+    <!-- full content of elements shall be included in a normalizes fashion -->
+    <xsl:param name="incl-content-model" select="'false'"/>
+
+    <!-- The parameter 'incl-elements' specifies whether child elements -->
+    <!-- information shall be included -->
+    <xsl:param name="incl-elements" select="'true'"/>
+    
+    
+    <xsl:variable name="include-default-values" select="$incl-default-values = 'true'"/>
+    <xsl:variable name="include-types" select="$incl-types = 'true'"/>
+    <xsl:variable name="include-condition-attr" select="$incl-conditions = 'true'"/>
+    <xsl:variable name="include-content-model" select="$incl-content-model = 'true'"/>
+    <xsl:variable name="include-elements" select="$incl-elements = 'true'"/>
+    <xsl:variable name="include-ref-comments" select="false()"/>
+    
+    <!-- ********** -->
+    <!-- ** root ** -->
+    <!-- ********** -->
+    <xsl:template match="/rng:grammar">
+        <rng:grammar
+            xmlns:rng="http://relaxng.org/ns/structure/1.0"
+            xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+            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"
+            xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0"
+            xmlns:grddl="http://www.w3.org/2003/g/data-view#"
+            xmlns:xhtml="http://www.w3.org/1999/xhtml">
+            <xsl:for-each select="rng:start|document(rng:include/@href)/rng:grammar/rng:start">
+                <start>
+                    <xsl:apply-templates mode="collect-content"/>
+                </start>
+            </xsl:for-each>
+            <!-- select all <element> nodes in the file or in included files -->
+            <xsl:for-each select="//rng:element|document(//rng:include/@href)//rng:element">
+                <xsl:choose>
+                    <xsl:when test="@name">
+                        <xsl:variable name="name" select="@name"/>
+                        <xsl:if test="not(preceding::rng:element[@name=$name])">
+                            <xsl:comment>*** &lt;<xsl:value-of select="@name"/>&gt; ***</xsl:comment>
+                            <element name="{@name}">
+                                <!-- collect content -->
+                                <xsl:for-each select="//rng:element[@name=$name]|document(//rng:include/@href)//rng:element[@name=$name]">
+                                    <xsl:apply-templates mode="collect-content"/>
+                                </xsl:for-each>
+                            </element>
+                        </xsl:if>
+                    </xsl:when>
+                    <xsl:when test="rng:choice/rng:name">
+                        <xsl:variable name="element" select="."/>
+                        <xsl:for-each select="rng:choice/rng:name">
+                            <xsl:comment>*** &lt;<xsl:value-of select="."/>&gt; ***</xsl:comment>
+                            <element name="{.}">
+                                <!-- collect content -->
+                                <xsl:apply-templates select="$element/*" 
+                                                     mode="collect-content"/>
+                            </element>
+                        </xsl:for-each>    
+                    </xsl:when>
+                </xsl:choose>
+            </xsl:for-each>
+
+            <xsl:if test="$include-types">
+                <xsl:for-each select="/rng:grammar/rng:define|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define">
+                    <xsl:variable name="name" select="@name"/>
+                    <xsl:if test="//rng:attribute//rng:ref[@name=$name]|document(/rng:grammar/rng:include/@href)//rng:attribute//rng:ref[@name=$name]">
+                        <xsl:if test="not(preceding-sibling::rng:define[@name = $name])">
+                            <xsl:variable name="count" select="count(/rng:grammar/rng:define[@name = $name]|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define[@name = $name])"/>
+                            <define name="{@name}">
+                                <xsl:choose>
+                                    <xsl:when test="$count>1">
+                                        <choice>
+                                            <xsl:apply-templates select="/rng:grammar/rng:define[@name = $name]/*|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define[@name = $name]/*" mode="collect-type"/>
+                                        </choice>
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                        <xsl:apply-templates mode="collect-type"/>
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            </define>
+                        </xsl:if>
+                    </xsl:if>
+                </xsl:for-each>
+            </xsl:if>
+
+        </rng:grammar>
+    </xsl:template>
+    
+    
+    <!-- **************** -->
+    <!-- ** attributes ** -->
+    <!-- **************** -->
+
+    <!-- match <attribute> elements that have a name attribute -->
+    <xsl:template match="rng:attribute[@name]" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <attribute name="{@name}">
+            <xsl:if test="$include-default-values">
+                <xsl:apply-templates select="@a:defaultValue"/>
+            </xsl:if>
+            <xsl:if test="$condition-attr">
+                <xsl:attribute name="condition">
+                    <xsl:value-of select="$condition-attr"/>
+                </xsl:attribute>
+            </xsl:if>
+            <!-- collect attribute type -->
+            <xsl:if test="$include-types">
+                <xsl:apply-templates mode="collect-type"/>
+            </xsl:if>
+        </attribute>
+    </xsl:template>
+    
+    <!-- match <attribute> elements that have a <name> descendent -->
+    <xsl:template match="rng:attribute[rng:choice/rng:name]" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:variable name="attribute" select="."/>
+        <xsl:for-each select="rng:choice/rng:name">
+            <attribute name="{.}">
+                <!-- collect attribute type -->
+                <xsl:if test="$include-default-values">
+                    <xsl:apply-templates select="$attribute/@a:defaultValue"/>
+                </xsl:if>
+                <xsl:if test="$condition-attr">
+                    <xsl:attribute name="condition">
+                        <xsl:value-of select="$condition-attr"/>
+                    </xsl:attribute>
+                </xsl:if>
+                <xsl:if test="$include-types">
+                    <xsl:apply-templates select="$attribute/*" 
+                                         mode="collect-type"/>
+                </xsl:if>
+            </attribute>
+        </xsl:for-each>    
+    </xsl:template>
+
+    <!-- ignore attribute definitions with any name -->
+    <xsl:template match="rng:attribute[rng:anyName]" mode="collect-content"/>
+
+    <!-- match @a:default-value" -->
+    <xsl:template match="@a:defaultValue">
+        <xsl:attribute name="a:defaultValue">
+            <xsl:value-of select="."/>
+        </xsl:attribute>
+    </xsl:template>
+
+    <!-- ************** -->
+    <!-- ** elements ** -->
+    <!-- ************** -->
+
+    <!-- match <element> elements that have a name attribute -->
+    <xsl:template match="rng:element[@name]" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:if test="$include-elements">
+            <element name="{@name}">
+                <xsl:if test="$condition-attr">
+                    <xsl:attribute name="condition">
+                        <xsl:value-of select="$condition-attr"/>
+                    </xsl:attribute>
+                </xsl:if>
+            </element>
+        </xsl:if>
+    </xsl:template>
+    
+    <!-- match <element> elements that have a <name> descendent -->
+    <xsl:template match="rng:element[rng:choice/rng:name]" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:if test="$include-elements">
+            <xsl:for-each select="rng:choice/rng:name">
+                <element name="{.}">
+                    <xsl:if test="$condition-attr">
+                        <xsl:attribute name="condition">
+                            <xsl:value-of select="$condition-attr"/>
+                        </xsl:attribute>
+                    </xsl:if>
+                </element>
+            </xsl:for-each>    
+        </xsl:if>
+    </xsl:template>
+
+    <!-- ignore attribute definitions with any name -->
+    <xsl:template match="rng:element[rng:anyName]" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <element>
+            <xsl:if test="$condition-attr">
+                <xsl:attribute name="condition">
+                    <xsl:value-of select="$condition-attr"/>
+                </xsl:attribute>
+            </xsl:if>
+            <anyName/>
+        </element>
+    </xsl:template>
+
+    <!-- ignore name elements (they are covered by the fore-each loop already) -->
+    <xsl:template match="rng:name" mode="collect-content"/>
+
+    <!-- ignore data elements (they may only occure in elements here) -->
+    <xsl:template match="rng:data" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <data type="{@type}">
+            <xsl:if test="$condition-attr">
+                <xsl:attribute name="condition">
+                    <xsl:value-of select="$condition-attr"/>
+                </xsl:attribute>
+            </xsl:if>
+        </data>
+    </xsl:template>
+    
+    <xsl:template match="rng:text" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <text>
+            <xsl:if test="$condition-attr">
+                <xsl:attribute name="condition">
+                    <xsl:value-of select="$condition-attr"/>
+                </xsl:attribute>
+            </xsl:if>
+        </text>
+    </xsl:template>
+
+    <xsl:template match="rng:empty" mode="collect-content">
+        <xsl:if test="$include-content-model">
+            <empty/>
+        </xsl:if>
+    </xsl:template>
+    
+    <!-- ************* -->
+    <!-- ** control ** -->
+    <!-- ************* -->
+        
+    <!--match <ref> elements -->
+    <xsl:template match="rng:ref" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:if test="$include-ref-comments">
+            <xsl:comment><xsl:value-of select="@name"/></xsl:comment>
+        </xsl:if>
+        <!-- match <define> with same name in the current file and within
+             included files. -->
+        <xsl:variable name="name" select="@name"/>
+        <xsl:choose>
+            <xsl:when test="$include-content-model">
+                <xsl:variable name="combine" select="/rng:grammar/rng:define[@name=$name]/@combine|/rng:grammar/rng:include/rng:define[@name=$name]/@combine|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define[@name=$name]/@combine"></xsl:variable>
+                <xsl:choose>
+                    <xsl:when test="$combine">
+                        <xsl:element name="{$combine}">
+                            <xsl:apply-templates
+                                select="/rng:grammar/rng:define[@name=$name]|/rng:grammar/rng:include/rng:define[@name=$name]|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define[@name=$name]"
+                                mode="collect-content">
+                                <xsl:with-param name="condition-attr" select="$condition-attr"/>
+                            </xsl:apply-templates>
+                        </xsl:element>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:apply-templates
+                            select="/rng:grammar/rng:define[@name=$name]|/rng:grammar/rng:include/rng:define[@name=$name]|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define[@name=$name]"
+                            mode="collect-content">
+                            <xsl:with-param name="condition-attr" select="$condition-attr"/>
+                        </xsl:apply-templates>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:when>
+            <xsl:when test="@name='boolean'">
+                <!-- Booleans are no XSD datatype, but should not be expanded -->
+                <ref name="boolean">
+                    <xsl:if test="$condition-attr">
+                        <xsl:attribute name="condition">
+                            <xsl:value-of select="$condition-attr"/>
+                        </xsl:attribute>
+                    </xsl:if>
+                </ref>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates
+                    select="/rng:grammar/rng:define[@name=$name]|/rng:grammar/rng:include/rng:define[@name=$name]|document(/rng:grammar/rng:include/@href)/rng:grammar/rng:define[@name=$name]"
+                    mode="collect-content">
+                    <xsl:with-param name="condition-attr" select="$condition-attr"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+        </xsl:choose>
+        <xsl:if test="$include-ref-comments">
+            <xsl:comment>/<xsl:value-of select="@name"/></xsl:comment>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template match="rng:define" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:variable name="new-condition">
+            <xsl:choose>
+                <xsl:when test="$include-condition-attr and @combine and string-length($condition-attr) > 0">
+                    <xsl:value-of select="concat($condition-attr, '/', @combine)"/>
+                </xsl:when>
+                <xsl:when test="$include-condition-attr and @combine">
+                    <xsl:value-of select="@combine"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:value-of select="$condition-attr"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:apply-templates  select="*" mode="collect-content">
+            <xsl:with-param name="condition-attr" select="$new-condition"/>
+        </xsl:apply-templates>
+    </xsl:template>
+    
+    <!-- match conditions and lists -->
+    <xsl:template match="rng:interleave|rng:mixed|rng:optional|rng:choice|rng:group|rng:zeroOrMore|rng:oneOrMore" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:variable name="new-condition">
+            <xsl:choose>
+                <xsl:when test="$include-condition-attr and string-length($condition-attr) > 0">
+                    <xsl:value-of select="concat($condition-attr, '/', name(.))"/>
+                </xsl:when>
+                <xsl:when test="$include-condition-attr">
+                    <xsl:value-of select="name(.)"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:value-of select="$condition-attr"/>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+        <xsl:choose>
+            <xsl:when test="$include-content-model">
+                <xsl:copy>
+                    <xsl:apply-templates mode="collect-content">
+                        <xsl:with-param name="condition-attr" select="$new-condition"/>
+                    </xsl:apply-templates>
+                </xsl:copy>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:apply-templates mode="collect-content">
+                    <xsl:with-param name="condition-attr" select="$new-condition"/>
+                </xsl:apply-templates>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+	<!-- Turn dc:description into a comment -->
+    <xsl:template match="dc:description" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:comment><xsl:value-of select="."/></xsl:comment>
+    </xsl:template>
+
+    <!-- match all other elements and ignore them -->
+    <xsl:template match="*" mode="collect-content">
+        <xsl:param name="condition-attr"/>
+        <xsl:message>Ignored element &lt;<xsl:value-of select="name(.)"/>&gt;, content: <xsl:value-of select="."/>, parent: <xsl:value-of select="name(..)"/>, grandparent: <xsl:value-of select="name(../..)"/>, define name: <xsl:value-of select="ancestor::rng:define[1]/@name"/>, condition: <xsl:value-of select="$condition-attr"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template match="text()" mode="collect-content">
+        <xsl:if test="string-length(normalize-space(.))>0">
+            <xsl:message>Ignored <xsl:value-of select="."/></xsl:message>
+        </xsl:if>
+    </xsl:template>
+        
+    <!-- ********************* -->
+    <!-- ** attribute types ** -->
+    <!-- ********************* -->
+
+    <!-- match <ref> elements -->
+    <xsl:template match="rng:ref" mode="collect-type">
+        <!-- references are assumed to be type names -->
+        <ref name="{@name}"/>
+    </xsl:template>
+
+    <!-- match <data> elements -->
+    <xsl:template match="rng:data" mode="collect-type">
+        <!-- data types are data types -->
+        <data type="{@type}">
+            <xsl:apply-templates mode="collect-type"/>
+        </data>
+    </xsl:template>
+
+    <!-- ignore name choices -->
+
+    <xsl:template match="rng:choice[rng:name]" mode="collect-type"/>
+
+    <!-- match elements that get copied -->
+    <xsl:template match="rng:choice|rng:list|rng:group|rng:oneOrMore|rng:zeroOrMore|rng:empty|rng:text|rng:optional" mode="collect-type">
+        <xsl:copy><xsl:apply-templates mode="collect-type"/></xsl:copy>
+    </xsl:template>
+
+    <!-- match <value> elements -->
+    <xsl:template match="rng:param" mode="collect-type">
+        <param name="{@name}"><xsl:value-of select="."/></param>
+    </xsl:template>
+
+    <!-- match <value> elements -->
+    <xsl:template match="rng:value" mode="collect-type">
+        <value><xsl:value-of select="."/></value>
+    </xsl:template>
+
+	<!-- Turn dc:description into a comment -->
+    <xsl:template match="dc:description" mode="collect-type">
+        <xsl:param name="condition-attr"/>
+        <xsl:comment><xsl:value-of select="."/></xsl:comment>
+    </xsl:template>
+
+    <!-- match everything else and ignore it -->
+    <xsl:template match="*" mode="collect-type">
+        <xsl:message>Ignored element &lt;<xsl:value-of select="name(.)"/>&gt; while collecting type information, content: <xsl:value-of select="."/>, parent: <xsl:value-of select="name(..)"/>, grandparent: <xsl:value-of select="name(../..)"/>, define name: <xsl:value-of select="ancestor::rng:define[1]/@name"/></xsl:message>
+    </xsl:template>
+
+    <xsl:template match="text()" mode="collect-type"/>
+
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/create-html-img-list.xsl b/trunk/xslt-runner/sample_xslt/create-html-img-list.xsl
new file mode 100644
index 0000000..f0a33ce
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/create-html-img-list.xsl
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+
+<xsl:stylesheet version="1.0" 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:x="http://www.w3.org/1999/xhtml"
+    exclude-result-prefixes="xsl">
+  <xsl:output method="text" encoding="UTF-8"/>
+
+  <xsl:template match="xhtml:html">
+      <xsl:apply-templates select="//xhtml:img"/>
+  </xsl:template>
+
+<!--  <xsl:template match="img[starts-with(@name,'Object')]">-->
+  <xsl:template match="xhtml:img">
+      <xsl:choose>
+          <xsl:when test="starts-with(@src,'./')">
+              <xsl:value-of select="substring(@src,3)"/>
+          </xsl:when>
+          <xsl:otherwise>
+              <xsl:value-of select="@src"/>
+          </xsl:otherwise>
+      </xsl:choose>
+      <xsl:text>
+</xsl:text>
+  </xsl:template>
+
+  <xsl:template match="node()">
+      <xsl:apply-templates select="node()"/>
+  </xsl:template>
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/dummy.dtd b/trunk/xslt-runner/sample_xslt/dummy.dtd
new file mode 100644
index 0000000..a60d869
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/dummy.dtd
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
+  Copyright 2009 IBM. 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.
+
+-->
diff --git a/trunk/xslt-runner/sample_xslt/replace-objects-list.xsl b/trunk/xslt-runner/sample_xslt/replace-objects-list.xsl
new file mode 100644
index 0000000..2c2f20e
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/replace-objects-list.xsl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+                xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+                exclude-result-prefixes="xsl"
+                version="1.0">
+    <xsl:output method="text"/>
+
+    <xsl:param name="ref-html"/>
+
+    <xsl:template match="office:document-content">
+        <xsl:apply-templates select="//draw:frame[draw:object]"/>
+    </xsl:template>
+
+    <xsl:template match="draw:frame[draw:object]">
+        <xsl:value-of select="document($ref-html)//img[@name=current()/@draw:name]/@src"/>
+        <xsl:text>
+</xsl:text>
+    </xsl:template>
+
+    <!-- default: ignore everything. -->
+    <xsl:template match="@*|node()"/>
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/replace-objects.xsl b/trunk/xslt-runner/sample_xslt/replace-objects.xsl
new file mode 100644
index 0000000..1304af1
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/replace-objects.xsl
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  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.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+                xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+                xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+                xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+                xmlns:xlink="http://www.w3.org/1999/xlink"
+                xmlns:xhtml="http://www.w3.org/1999/xhtml"
+                exclude-result-prefixes="xhtml xsl"
+                version="1.0">
+    <xsl:output method="xml" indent="no"/>
+
+    <xsl:param name="ref-html"/>
+
+    <xsl:template match="draw:frame[draw:object]">
+        <xsl:copy>
+            <xsl:apply-templates select="@*"/>
+            <xsl:variable name="new-src" select="concat('Pictures/',document($ref-html)//img[@name=current()/@draw:name]/@src)"/>
+            <draw:image xlink:href="{$new-src}" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
+            <xsl:apply-templates select="svg:desc"/>
+            <xsl:message>New image for <xsl:value-of select="@draw:name"/>: <xsl:value-of select="$new-src"/></xsl:message>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="text:tab[not(ancestor::text:index-body)]">
+        <text:s text:c="4"/>
+    </xsl:template>
+
+    <!-- default: copy everything. -->
+    <xsl:template match="@*|node()">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/sample_xslt/update-toc-rel-paths.xsl b/trunk/xslt-runner/sample_xslt/update-toc-rel-paths.xsl
new file mode 100644
index 0000000..1f0a5fd
--- /dev/null
+++ b/trunk/xslt-runner/sample_xslt/update-toc-rel-paths.xsl
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+
+  Copyright 2011 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.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+                xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+                xmlns:xlink="http://www.w3.org/1999/xlink"
+                exclude-result-prefixes="xsl"
+                version="1.0">
+    <xsl:output method="xml" indent="no"/>
+
+<!--    <xsl:param name="state-old" select="'(none)'"/>-->
+    <xsl:param name="state-new" select="'(none)'"/>
+
+    <xsl:variable name="toc-prefix" select="'toc-'"/>
+
+
+
+    <!-- ************************ -->
+    <!-- ** toc anchors (toc-) ** -->
+    <!-- ************************ -->
+    <xsl:template match="text:section[starts-with(@text:name,$toc-prefix)]">
+		<xsl:variable name="part" select="concat('-',substring(@text:name,string-length($toc-prefix)+1))"/>
+		<xsl:variable name="state-old">
+            <xsl:call-template name="get-state">
+                <xsl:with-param name="path" select="substring-before(.//text:a[starts-with(@xlink:href,'../')][1]/@xlink:href,$part)"/>
+            </xsl:call-template>
+		</xsl:variable>
+		<xsl:message>Old state for <xsl:value-of select="$part"/> is <xsl:value-of select="$state-old"/>.</xsl:message>
+		<xsl:copy>
+			<xsl:apply-templates select="@*|node()" mode="in-toc">
+				<xsl:with-param name="state-old" select="$state-old"/>
+			</xsl:apply-templates>
+		</xsl:copy>
+	</xsl:template>
+
+    <xsl:template name="get-state">
+        <xsl:param name="path"/>
+        <xsl:choose>
+            <xsl:when test="contains($path,'-')">
+                <xsl:call-template name="get-state">
+                    <xsl:with-param name="path" select="substring-after($path,'-')"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:value-of select="concat('-',$path)"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+	<xsl:template match="text:a[starts-with(@xlink:href,'../')]" mode="in-toc">
+		<xsl:param name="state-old"/>
+        <xsl:variable name="new-href">
+	        <xsl:call-template name="remove-rel-path">
+		        <xsl:with-param name="path" select="@xlink:href"/>
+				<xsl:with-param name="state-old" select="$state-old"/>
+            </xsl:call-template>
+        </xsl:variable>
+        <xsl:message>href: <xsl:value-of select="@xlink:href"/> = <xsl:value-of select="$new-href"/></xsl:message>
+        <text:a>
+            <xsl:attribute name="xlink:href"><xsl:value-of select="$new-href"/></xsl:attribute>
+            <xsl:apply-templates select="@*[not(name(.)='xlink:href')]"/>
+            <xsl:apply-templates select="node()"/>
+        </text:a>
+    </xsl:template>
+
+    <!-- default: copy everything. -->
+    <xsl:template match="@*|node()" mode="in-toc">
+		<xsl:param name="state-old"/>
+	    <xsl:copy>
+            <xsl:apply-templates select="@*|node()" mode="in-toc">
+				<xsl:with-param name="state-old" select="$state-old"/>
+			</xsl:apply-templates>
+        </xsl:copy>
+    </xsl:template>
+
+
+    <xsl:template name="remove-rel-path">
+        <xsl:param name="path"/>
+		<xsl:param name="state-old"/>
+        <xsl:choose>
+            <xsl:when test="contains($path,'/')">
+                <xsl:call-template name="remove-rel-path">
+                    <xsl:with-param name="path" select="substring-after($path,'/')"/>
+					<xsl:with-param name="state-old" select="$state-old"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:choose>
+                    <xsl:when test="contains($path,$state-old)">
+                        <xsl:value-of select="concat('../',substring-before($path,$state-old),$state-new,substring-after($path,$state-old))"/>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:value-of select="concat('../',$path)"/>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <!-- default: copy everything. -->
+    <xsl:template match="@*|node()">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+
+</xsl:stylesheet>
diff --git a/trunk/xslt-runner/schema.properties b/trunk/xslt-runner/schema.properties
new file mode 100644
index 0000000..94e6819
--- /dev/null
+++ b/trunk/xslt-runner/schema.properties
@@ -0,0 +1,38 @@
+########################################################################
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+#
+# Copyright 2009, 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.
+#
+########################################################################/
+
+# State of the OpenDocument v1.2 (source) specification
+opendocument.v12.part1.schema.state=-cd05-rev02
+opendocument.v12.part3.schema.state=-cd05-rev02
+opendocument.v12.part1.schema.state.ref=-csd07
+opendocument.v12.part3.schema.state.ref=-csd07
+
+# State if the OpenDocument v1.2 target specification
+opendocument.v12.part0.state.target=-cs01
+opendocument.v12.part1.state.target=-cs01
+opendocument.v12.part2.state.target=-cs01
+opendocument.v12.part3.state.target=-cs01
+
+opendocument.v12.part0.target=$(opendocument.v12.part0.state.target)
+opendocument.v12.part1.target=${opendocument.v12.part1.state.target}-part1
+opendocument.v12.part2.target=${opendocument.v12.part2.state.target}-part2
+opendocument.v12.part3.target=${opendocument.v12.part3.state.target}-part3
\ No newline at end of file
diff --git a/trunk/xslt-runner/schema.user.properties b/trunk/xslt-runner/schema.user.properties
new file mode 100644
index 0000000..a957850
--- /dev/null
+++ b/trunk/xslt-runner/schema.user.properties
@@ -0,0 +1,42 @@
+########################################################################
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+#
+# Copyright 2009, 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.
+#
+########################################################################/
+
+# The following properties have to be set either in this file, or in the
+# nbproject/private/private.properties file of the project.
+
+# Directory where the OpenDocument v1.2 schemas are located
+# These properties are used by targets which add or check information
+# in specification documents based on the schema.
+opendocument.v12.part1.schema.dir=
+opendocument.v12.part3.schema.dir=
+
+# OpenDocument v1.2 specification editorial version source document
+# These properties are used by targets which convert editorial versions into
+# product versions.
+opendocument.v12.part0.spec-source=
+opendocument.v12.part1.spec-source=
+opendocument.v12.part2.spec-source=
+opendocument.v12.part3.spec-source=
+
+# Directory where the OpenDocument v1.2 product specification documents are located
+# This property is used by the XHTML creation target.
+opendocument.v12.product.dir=
\ No newline at end of file
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/CommandLineLogger.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/CommandLineLogger.java
new file mode 100644
index 0000000..70071f8
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/CommandLineLogger.java
@@ -0,0 +1,82 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import java.io.PrintStream;
+
+/**
+ * Logger for command line interface
+ */
+public class CommandLineLogger extends Logger
+{
+    private PrintStream m_aOut;
+    private int m_nLevel;
+    
+    /** Creates a new instance of CommandLineLogger
+     *
+     * @param aOut PrintStream for messages
+     */
+    public CommandLineLogger( PrintStream aOut, int nLevel )
+    {
+        m_nLevel = nLevel;
+        m_aOut = aOut;
+    }
+
+    /**
+     * Log a message.
+     * 
+     * @param aPrefix Message prefix
+     * @param aMsg Message text
+     * @param aLocation file, row and column number as text (optional)
+     * @param nLevel the warning level (one of INFO, WARNING or ERROR)
+     */
+    protected void logMessage( String aPrefix, String aMsg, String aLocation, int nLevel )
+    {
+        if( nLevel <= m_nLevel )
+        {
+            StringBuffer aOut = new StringBuffer( aLocation != null ? aLocation : getName() );
+            aOut.append( ": " );
+            aOut.append( aPrefix );
+            aOut.append( ':' );
+            aOut.append( aMsg );
+            m_aOut.println( aOut.toString() );
+        }
+    }
+    
+    /**
+     * Log a message.
+     * 
+     * @param aPrefix Message prefix
+     * @param aMsgWithLocation Message text including location information
+     * @param nLevel the warning level (one of INFO, WARNING or ERROR)
+     */
+    protected void logMessageWithLocation( String aPrefix, String aMsgWithLocation, int nLevel )
+    {
+        StringBuffer aOut = new StringBuffer( aMsgWithLocation );
+        aOut.append( " (" );
+        aOut.append( aPrefix );
+        aOut.append( ')' );
+        m_aOut.println( aOut.toString() );
+    }
+    
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/Logger.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/Logger.java
new file mode 100644
index 0000000..d62e1d5
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/Logger.java
@@ -0,0 +1,185 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import javax.xml.transform.TransformerException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * Base class for logging messages.
+ */
+public abstract class Logger {
+    private static final String ERROR_PREFIX = "Error";
+    private static final String FATAL_PREFIX = "Fatal";
+    private static final String INFO_PREFIX = "Info";
+    private static final String WARNING_PREFIX = "Warning";
+    private String m_aEntryName;
+    private String m_aFileName = "(none)";
+    private boolean m_bError = false;
+
+    /** 
+     * Error log level. 
+     */
+    public static final int ERROR = 0;
+
+    /** 
+     * Warning log level. 
+     */
+    public static final int WARNING = 1;
+    
+    /** 
+     * Information log level. 
+     */
+    public static final int INFO = 2;
+
+    /**
+     * Create a new Logger instance.
+     */
+    protected Logger() 
+    {
+    }
+
+    void setName( String aFileName )
+    {
+        setName( aFileName, null );
+    }
+    
+    void setName( String aFileName, String aEntryName )
+    {
+        m_aFileName = aFileName;
+        m_aEntryName = aEntryName;
+    }
+
+    /**
+     * Get name of the file for which messagea are logged.
+     * 
+     * @return file name
+     */
+    protected String getName() {
+        StringBuffer aName = new StringBuffer(m_aFileName);
+        if (m_aEntryName != null && m_aEntryName.length() > 0) {
+            aName.append('/');
+            aName.append(m_aEntryName);
+        }
+
+        return aName.toString();
+    }
+
+    /** 
+     * Was an error or fatal error logged.
+     * 
+     * @return true if an error was logged.
+     */
+    public boolean hasError() {
+        return m_bError;
+    }
+
+    void logError(String aMsg) {
+        logMessage(ERROR_PREFIX, aMsg, ERROR );
+        m_bError = true;
+    }
+
+    void logError(TransformerException e) {
+        logMessage(ERROR_PREFIX, e, ERROR );
+        m_bError = true;
+    }
+
+    void logError(SAXParseException e) {
+        logMessage(ERROR_PREFIX, e, ERROR );
+        m_bError = true;
+    }
+
+
+    void logFatalError(String aMsg) {
+        logMessage(FATAL_PREFIX, aMsg, ERROR );
+        m_bError = true;
+    }
+
+    void logFatalError(TransformerException e) {
+        logMessage(FATAL_PREFIX, e, ERROR);
+        m_bError = true;
+    }
+
+    void logFatalError(SAXParseException e) {
+        logMessage(FATAL_PREFIX, e, ERROR);
+        m_bError = true;
+    }
+
+    void logInfo(String aMsg) {
+        logMessage(INFO_PREFIX, aMsg, INFO );
+    }
+
+    void logWarning(String aMsg) {
+        logMessage(WARNING_PREFIX, aMsg, WARNING );
+    }
+
+    void logWarning(TransformerException e) {
+        logMessage(WARNING_PREFIX, e, WARNING );
+    }
+
+    void logWarning(SAXParseException e) {
+        logMessage(WARNING_PREFIX, e, WARNING );
+    }
+
+
+    private void logMessage( String aPrefix, TransformerException e, int nLevel )
+    {
+        logMessageWithLocation( aPrefix, e.getMessageAndLocation(), nLevel );
+    }
+
+    private void logMessage( String aPrefix, SAXParseException e, int nLevel )
+    {
+        StringBuffer aLocation = new StringBuffer( e.getSystemId() );
+        aLocation.append(':');
+        aLocation.append(e.getLineNumber());
+        aLocation.append(": ");
+        aLocation.append(e.getColumnNumber());
+        
+        logMessage( aPrefix, e.getMessage(), aLocation.toString(), nLevel );
+    }
+
+    private void logMessage( String aPrefix, String aMsg, int nLevel )
+    {
+        logMessage( aPrefix, aMsg, null, nLevel );
+    }
+    
+    /**
+     * Log a message.
+     * 
+     * @param aPrefix Message prefix
+     * @param aMsg Message text
+     * @param aLocation file, row and column number as text (optional)
+     * @param nLevel the warning level (one of INFO, WARNING or ERROR)
+     */
+    protected abstract void logMessage( String aPrefix, String aMsg, String aLocation, int nLevel );
+    
+    /**
+     * Log a message.
+     * 
+     * @param aPrefix Message prefix
+     * @param aMsgWithLocation Message text including location information
+     * @param nLevel the warning level (one of INFO, WARNING or ERROR)
+     */
+    protected abstract void logMessageWithLocation( String aPrefix, String aMsgWithLocation, int nLevel );
+
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/Main.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/Main.java
new file mode 100644
index 0000000..a6334f8
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/Main.java
@@ -0,0 +1,234 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import java.io.FileNotFoundException;
+import java.io.PrintStream;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * This application applies an XSLT style sheet to an ODF file. To run this application from the command line without Ant, try:
+ * java -jar "[path/]odfxsltrunner.jar".
+ */
+public class Main {
+
+    private static final String VERSION="1.1.0";
+
+    /** Creates a new instance of Main */
+    public Main() {
+    }
+    
+    /**
+     * @param aArgs the command line arguments
+     */
+    public static void main(String[] aArgs) {
+        
+        String aStyleSheetName = null;
+        String aInputName = null;
+        String aOutputName = null;
+        String aPath = "content.xml";
+        String aLogFileName = null;
+        String aTransformerFactoryClass = null;
+        int aInputMode = ODFXSLTRunner.INPUT_MODE_PACKAGE;
+        int aOutputMode = ODFXSLTRunner.OUTPUT_MODE_COPY_INPUT_PACKAGE;
+        Vector<XSLTParameter> aParams = null;
+        Vector<String> aExtractFileNames = null;
+        int nLogLevel = CommandLineLogger.ERROR;
+        
+        boolean bCommandLineValid = true;
+        List<String> aArgList = Arrays.asList(aArgs);
+        Iterator<String> aArgIter = aArgList.iterator();
+        while( aArgIter.hasNext() && bCommandLineValid )
+        {
+            String aArg = aArgIter.next();
+            if( aArg.equals("-f") )
+            {
+                if( aArgIter.hasNext() )
+                    aTransformerFactoryClass = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-i") )
+            {
+                aInputMode = ODFXSLTRunner.INPUT_MODE_FILE;
+            }
+            else if( aArg.equals("-l") )
+            {
+                if( aArgIter.hasNext() )
+                    aLogFileName = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-o") )
+            {
+                if( aOutputMode == ODFXSLTRunner.OUTPUT_MODE_COPY_INPUT_PACKAGE )
+                    aOutputMode = ODFXSLTRunner.OUTPUT_MODE_FILE;
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-p") )
+            {
+                if( aArgIter.hasNext() )
+                    aPath = aArgIter.next();
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-r") )
+            {
+                if( aOutputMode == ODFXSLTRunner.OUTPUT_MODE_COPY_INPUT_PACKAGE )
+                    aOutputMode = ODFXSLTRunner.OUTPUT_MODE_REPLACE_INPUT_PACKAGE;
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-t") )
+            {
+                if( aOutputMode == ODFXSLTRunner.OUTPUT_MODE_COPY_INPUT_PACKAGE )
+                    aOutputMode = ODFXSLTRunner.OUTPUT_MODE_TEMPLATE_PACKAGE;
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.equals("-v") )
+            {
+                nLogLevel = CommandLineLogger.INFO;
+            }
+            else if( aArg.equals("-x") )
+            {
+                if( aArgIter.hasNext() )
+                {
+                    if( aExtractFileNames == null )
+                        aExtractFileNames = new Vector<String>();
+                    aExtractFileNames.add( aArgIter.next() );
+                }
+                else
+                    bCommandLineValid = false;
+            }
+            else if( aArg.startsWith("-") )
+            {
+                System.out.print(aArg);
+                System.out.println(": unknown option, use '-' for help");
+                bCommandLineValid = false;
+                break;
+            }
+            else if( aStyleSheetName == null )
+            {
+                aStyleSheetName = aArg;
+            }
+            else if( aInputName == null )
+            {
+                aInputName = aArg;
+            }
+            else if( aOutputMode != ODFXSLTRunner.OUTPUT_MODE_REPLACE_INPUT_PACKAGE && aOutputName == null )
+            {
+                aOutputName = aArg;
+            }
+            else if( aArg.indexOf('=') != -1 )
+            {
+                if( aParams == null )
+                    aParams = new Vector<XSLTParameter>();
+                aParams.add(new XSLTCommandLineParameter(aArg) );
+            }
+            else
+            {
+                bCommandLineValid = false;
+                break;
+            }
+        }
+        
+        if( aOutputMode == ODFXSLTRunner.OUTPUT_MODE_COPY_INPUT_PACKAGE &&
+            aOutputName == null )
+            aOutputMode = ODFXSLTRunner.OUTPUT_MODE_STDOUT;
+
+        // check usage
+        bCommandLineValid = aInputName != null && aStyleSheetName != null;
+        bCommandLineValid = bCommandLineValid &&
+                            !(aOutputMode == ODFXSLTRunner.OUTPUT_MODE_REPLACE_INPUT_PACKAGE || aOutputMode == ODFXSLTRunner.OUTPUT_MODE_STDOUT) == (aOutputName != null);
+        
+        // print help
+        if( !bCommandLineValid )
+        {
+            printUsage();
+            return;
+        }
+        
+        PrintStream aLogStream = null;
+        if( aLogFileName != null )
+        {
+            try
+            {
+                aLogStream = new PrintStream( aLogFileName );
+            }
+            catch( FileNotFoundException e )
+            {
+                System.err.println(e.getMessage());
+            }
+        }
+
+        boolean bError = false;
+        try
+        {
+            ODFXSLTRunner aRunner = new ODFXSLTRunner();
+            Logger aLogger = new CommandLineLogger( aLogStream!=null ? aLogStream : System.err, nLogLevel );
+            bError = aRunner.runXSLT( aStyleSheetName, aParams, aInputName, aInputMode, aOutputName, aOutputMode, aPath, aTransformerFactoryClass, aExtractFileNames, aLogger  );
+        }
+        catch( Exception e )
+        {
+            System.err.println(e.getMessage());
+        }
+//        if( bError )
+//            System.err.println("transformation failed");
+
+        if( aLogStream != null )
+            aLogStream.close();
+    }
+    
+    private static void printUsage()
+    {
+        System.out.print("odfxsltrunner v");
+        System.out.println( VERSION );
+        System.out.println();
+        System.out.println( "usage: odfxsltrunner <style sheet> [-v] [-f <factory>] [-p <path in package>] [-l log file] [-t] <input package> <output package> {<param>=<value>}");
+        System.out.println( "       odfxsltrunner <style sheet> [-v] [-f <factory>] [-p <path in package>] [-l log file] -r <package> {<param>=<value>}");
+        System.out.println( "       odfxsltrunner <style sheet> [-v] [-f <factory>] {-x <export path>} [-p <path in package>] [-l log file] -o <input package> <output file> {<param>=<value>}");
+        System.out.println( "       odfxsltrunner <style sheet> [-v] [-f <factory>] [-p <path in package>] [-l log file] -i <input file> <output package> {<param>=<value>}");
+        System.out.println();
+        System.out.println( "If no option except -p is specified, the transformation <style sheet> is applied to the file <path in package> contained in the ODF  package <input package>, <path in package> is replaced with the result of the transformation, and the full package is stored as <output package>." );
+        System.out.println();
+        System.out.println( "-t: Store result of transformation in the file <path in package> of existing an existing ODF package <output package>" );
+        System.out.println( "-r: Don't store result as a new ODF package but replace input ODF package <package>" );
+        System.out.println( "-i: Input file <input file> is a plain XML file" );
+        System.out.println( "-o: Store result of tranformation as plain XML file in <output file>" );
+        System.out.println();
+        System.out.println( "-l: Write messages into file <log file> instead of stderr" );
+        System.out.println( "-p: Apply style sheet to <path in package>; default is content.xml" );
+        System.out.println( "-f: Use XSLT Transformer factory <factory>" );
+        System.out.println();
+        System.out.println( "-x: Extract specified file or directory <export path> from ODF package <input package> to the directory of the <output file>; this option may be specified multiple times" );
+        System.out.println( "-v: Verbose output" );
+        System.out.println();
+        System.out.println( "<param>=<value>: Specifies an parameter/value pair that is passed to the XSL transformation; multiple paramater/vlaue pairs may be specified" );
+    }
+
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFEntityResolver.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFEntityResolver.java
new file mode 100644
index 0000000..4f85970
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFEntityResolver.java
@@ -0,0 +1,48 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import java.io.IOException;
+import java.io.StringReader;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class ODFEntityResolver implements EntityResolver {
+
+    private Logger m_aLogger;
+
+    public ODFEntityResolver(Logger aLogger) {
+        this.m_aLogger = aLogger;
+    }
+
+
+
+    public InputSource resolveEntity(String aPublicId, String aSystemId) throws SAXException, IOException
+    {
+        // ignore all external entities
+        m_aLogger.logInfo("Ignoring external entity: " + aSystemId );
+        return new InputSource(new StringReader(""));
+    }
+
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFURIResolver.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFURIResolver.java
new file mode 100644
index 0000000..09bd4d7
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFURIResolver.java
@@ -0,0 +1,142 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamSource;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+
+class ODFURIResolver implements URIResolver
+{
+    private Logger m_aLogger;
+    private String m_aPackageBase;
+    private String m_aFileEntryPath;
+    private OdfPackage m_aPackage;
+
+
+    /** Creates a new instance of ODFURIResolver
+     *
+     * @param aPackage the package in which the to be resolved URIs are included
+     * @param aPackageBase the package base URI
+     * @param aFileEntryPath the path of the file within the package in which the to be resolved URIs are included
+     * @param aLogger the logger for error messages
+     */
+    public ODFURIResolver( OdfPackage aPackage, String aPackageBase, String aFileEntryPath, Logger aLogger )
+    {
+        m_aPackage = aPackage;
+        m_aPackageBase = aPackageBase;
+        m_aFileEntryPath = aFileEntryPath;
+        m_aLogger = aLogger;
+    }
+
+    /** resolve an URI
+     *
+     * @param aHRef the URI to be resolved
+     * @param aBase the base URI that is provied by the XSLT transformation
+     */
+    public Source resolve(String aHRef, String aBase) throws TransformerException
+    {
+        if( aBase.startsWith(m_aPackageBase) &&
+            !aHRef.contains(":") && !aHRef.startsWith("/") )
+        {
+            if( aHRef.length()==0)
+            {
+                try
+                {
+                    return new StreamSource(m_aPackage.getInputStream(m_aFileEntryPath), m_aPackageBase + '/' + m_aFileEntryPath );
+                }
+                catch (Exception ex)
+                {
+                    m_aLogger.logError(ex.getMessage());
+                    return null;
+                }
+            }
+
+            StringBuffer aHRefBuffer = new StringBuffer( aHRef );
+            StringBuffer aFileEntryBuffer = new StringBuffer();
+            if( m_aFileEntryPath.contains("/") )
+                aFileEntryBuffer.append(m_aFileEntryPath.substring(0, m_aFileEntryPath.lastIndexOf('/')+1));
+
+            do
+            {
+                if( aHRefBuffer.substring(0, 2).equals("./") )
+                {
+                    aHRefBuffer.delete(0, 2);
+                }
+                else if( aHRefBuffer.toString().equals(".") || aHRefBuffer.toString().equals("..")  )
+                {
+                    m_aLogger.logError("URIs resolving to directories cannot be resolved: " + aHRef );
+                    return null;
+                }
+                else if( aHRefBuffer.substring(0, 3).equals("../") )
+                {
+                    aFileEntryBuffer.delete(0, 3);
+                    if( aFileEntryBuffer.length()==0 )
+                    {
+                        aHRefBuffer.insert(0, "./");
+                        try
+                        {
+                            URI aURI;
+                            aURI = new URI(aBase);
+                            aURI.resolve(aHRefBuffer.toString());
+                            m_aLogger.logInfo( "Resolving " +  aHRef + " to " + aURI.toString() );
+                            return new StreamSource( aURI.toString() );
+                        }
+                        catch (URISyntaxException ex)
+                        {
+                            m_aLogger.logError(ex.getMessage());
+                            return null;
+                        }
+                    }
+                    else
+                    {
+                        aFileEntryBuffer.delete(0, aFileEntryBuffer.indexOf("/"+1));
+                    }
+                }
+                else
+                {
+                    aHRefBuffer.insert(0, aFileEntryBuffer.toString());
+                    try
+                    {
+                        String aFileEntryPath = aHRefBuffer.toString();
+                        m_aLogger.logInfo( "Resolving " +  aHRef + " to package file entry " + aFileEntryPath );
+                        return new StreamSource(m_aPackage.getInputStream(aFileEntryPath), m_aPackageBase + '/' + aFileEntryPath);
+                    }
+                    catch (Exception ex)
+                    {
+                        m_aLogger.logError(ex.getMessage());
+                        return null;
+                    }
+                }
+            }
+            while( true );
+        }
+
+        return null;
+    }
+
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFXSLTRunner.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFXSLTRunner.java
new file mode 100644
index 0000000..45d48d0
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/ODFXSLTRunner.java
@@ -0,0 +1,431 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import org.odftoolkit.odfdom.pkg.OdfPackage;
+import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * Class for applying style sheets to ODF documents.
+ */
+public class ODFXSLTRunner {
+
+    /**
+     * Input file is a plain XML file.
+     */
+    public static final int INPUT_MODE_FILE = 0;
+    
+    /**
+     * Input file is an ODF package. The style sheet is applied to the
+     * specified sub file.
+     */
+    public static final int INPUT_MODE_PACKAGE = 1;
+    
+    /**
+     * Output file is a plain XML or text file.
+     */
+    public static final int OUTPUT_MODE_FILE = 0;
+    
+    /**
+     * Output is stdout.
+     */
+    public static final int OUTPUT_MODE_STDOUT = 1;
+    
+    /**
+     * The transformation replaces the specified path within
+     * the input file.
+     */
+    public static final int OUTPUT_MODE_REPLACE_INPUT_PACKAGE = 2;
+    
+    /**
+     * The input package is copied and the result of the transformation
+     * is stored in the specified path within the copied package.
+     */
+    public static final int OUTPUT_MODE_COPY_INPUT_PACKAGE = 3;
+    
+    /** 
+     * The result of the transformation is stored in the specified path within
+     * the output package.
+     */
+    public static final int OUTPUT_MODE_TEMPLATE_PACKAGE = 4;
+
+    private static final int FILE_COPY_BUFFER_SIZE = 4096;
+
+    /**
+     * Create new instance of ODFXSLTRunner.
+     */
+    public ODFXSLTRunner()
+    {
+    }
+    
+    /**
+     * Apply a style sheeet.
+     * 
+     * @param aStyleSheet Path of the style sheet
+     * @param aParams Parameters that are passed to the XSLT processor
+     * @param aInputFile Path of the input file
+     * @param aInputMode Input mode
+     * @param aOutputFile Path of the output file
+     * @param aOutputMode Output mode
+     * @param aTransformerFactoryClassName XSLT transformer factory to use
+     * @param aExtractFileNames A list of files or directory that shell be extracted from the package
+     * @param aPathInPackage Path within the package. Default is "content.xml"
+     * @param aLogger Logger object
+     * 
+     * @return true if an error occured.
+     */
+    public boolean runXSLT( String aStyleSheet, List<XSLTParameter> aParams,
+                     String aInputFile, int aInputMode,
+                     String aOutputFile, int aOutputMode,
+                     String aPathInPackage,
+                     String aTransformerFactoryClassName, 
+                     List<String> aExtractFileNames,
+                     Logger aLogger )
+    {
+        return runXSLT( new File( aStyleSheet ), aParams,
+                        new File( aInputFile), aInputMode,
+                        aOutputFile != null ? new File(aOutputFile) : null, aOutputMode,
+                        aPathInPackage, aTransformerFactoryClassName,
+                        aExtractFileNames, aLogger );
+    }
+    
+    
+    /**
+     * Apply a style sheeet.
+     * 
+     * @param aStyleSheetFile Style sheet
+     * @param aParams Parameters that are passed to the XSLT processor
+     * @param aInputFile Input file
+     * @param aInputMode Input mode
+     * @param aOutputFile Output file
+     * @param aOutputMode Output mode
+     * @param aPathInPackage Path within the package. Default is "content.xml"
+     * @param aTransformerFactoryClassName XSLT transformer factory to use
+     * @param aExtractFileNames A list of files or directory that shell be extracted from the package
+     * @param aLogger Logger object
+     *
+     * @return true if an error occured.
+     */
+    public boolean runXSLT( File aStyleSheetFile, List<XSLTParameter> aParams,
+                     File aInputFile, int aInputMode,
+                     File aOutputFile, int aOutputMode,
+                     String aPathInPackage,
+                     String aTransformerFactoryClassName, 
+                     List<String> aExtractFileNames,
+                     Logger aLogger )
+    {
+        boolean bError = false;
+        URIResolver aURIResolver = null;
+
+        InputSource aInputSource = null;
+        OdfPackage aInputPkg = null;
+        String aMediaType ="text/xml";
+        aLogger.setName( aInputFile.getAbsolutePath() );
+        try
+        {
+            if( INPUT_MODE_FILE == aInputMode )
+            {
+                aInputSource = new InputSource( new FileInputStream(aInputFile) );
+            }
+            else
+            {
+                aInputPkg = OdfPackage.loadPackage( aInputFile );
+                aLogger.setName( aInputFile.getAbsolutePath(), aPathInPackage );
+                aInputSource = new InputSource( aInputPkg.getInputStream(aPathInPackage) );
+                aInputSource.setSystemId( aInputFile.toURI().toString() + '/' + aPathInPackage );
+                OdfFileEntry aFileEntry =  aInputPkg.getFileEntry(aPathInPackage);
+                if( aFileEntry != null )
+                    aMediaType = aFileEntry.getMediaTypeString();
+                aURIResolver =
+                    new ODFURIResolver( aInputPkg, aInputFile.toURI().toString(), aPathInPackage, aLogger );
+            }
+        }
+        catch( Exception e )
+        {
+            aLogger.logFatalError(e.getMessage());
+            return true;
+        }
+        String aInputName = aLogger.getName();
+
+        Result aOutputResult = null;
+        OdfPackage aOutputPkg = null;
+        OutputStream aOutputStream = null;
+        aLogger.setName( aOutputFile != null ? aOutputFile.getAbsolutePath() : "(none)" );
+        boolean bMkOutputDirs = false;
+        try
+        {
+            switch( aOutputMode )
+            {
+                case OUTPUT_MODE_FILE:
+                    bMkOutputDirs = true;
+                    aOutputResult = new StreamResult( aOutputFile );
+                    break;
+                case OUTPUT_MODE_STDOUT:
+                    aOutputResult = new StreamResult( System.out );
+                    break;
+                case OUTPUT_MODE_REPLACE_INPUT_PACKAGE:
+                    aOutputPkg = aInputPkg;
+                    aOutputFile = aInputFile;
+                    break;
+                case OUTPUT_MODE_COPY_INPUT_PACKAGE:
+                    bMkOutputDirs = true;
+                    aOutputPkg = aInputPkg;
+                    break;
+                case OUTPUT_MODE_TEMPLATE_PACKAGE:
+                    aOutputPkg = OdfPackage.loadPackage( aOutputFile );
+                    break;
+            }
+            if( aOutputResult == null )
+            {
+                aLogger.setName( aOutputFile.getAbsolutePath(), aPathInPackage );                
+                aOutputStream = 
+                    aOutputPkg.insertOutputStream(aPathInPackage, aMediaType );
+                aOutputResult = new StreamResult( aOutputStream );
+            }
+        }
+        catch( Exception e )
+        {
+            aLogger.logFatalError(e.getMessage());
+            return true;
+        }
+
+        if( bMkOutputDirs )
+        {
+            File aOutputDir = aOutputFile.getParentFile();
+            if( aOutputDir != null )
+                aOutputDir.mkdirs();
+        }
+
+        String aOutputName = aLogger.getName();
+
+        aLogger.setName( aStyleSheetFile.getAbsolutePath() );
+        aLogger.logInfo( "Applying stylesheet to '" + aInputName + "'");
+        bError = runXSLT( aStyleSheetFile, aParams, aInputSource, aOutputResult, 
+                          aTransformerFactoryClassName, aURIResolver, aLogger );
+        if( bError )
+            return true;
+        
+        aLogger.setName( aOutputFile != null ? aOutputFile.getAbsolutePath() : "(none)" );
+        try
+        {
+            aLogger.logInfo( "Storing transformation result to '" + aOutputName + "'");
+            if( !bError && aOutputStream != null )
+                aOutputStream.close();
+            if( !bError && aOutputPkg != null )
+                aOutputPkg.save(aOutputFile);
+            if( aOutputMode == OUTPUT_MODE_FILE && aExtractFileNames != null && aInputPkg != null )
+            {
+                File aTargetDir = aOutputFile.getParentFile();
+                extractFiles( aInputPkg, aTargetDir, aExtractFileNames, aLogger );
+            }
+        }
+        catch( Exception e )
+        {
+            aLogger.logFatalError(e.getMessage());
+            return true;
+        }
+        
+        return false;
+    }
+    
+    
+    private boolean runXSLT( File aStyleSheetFile, 
+                     List<XSLTParameter> aParams,
+                     InputSource aInputInputSource, Result aOutputTarget,
+                     String aTransformerFactoryClassName,
+                     URIResolver aURIResolver,
+                     Logger aLogger )
+    {
+        InputStream aStyleSheetInputStream = null;
+        try
+        {
+            aStyleSheetInputStream = new FileInputStream(aStyleSheetFile);
+        }
+        catch( FileNotFoundException e )
+        {
+            aLogger.logFatalError(e.getMessage());
+            return true;
+        }
+
+        InputSource aStyleSheetInputSource = new InputSource(aStyleSheetInputStream);
+        aStyleSheetInputSource.setSystemId(aStyleSheetFile.getAbsolutePath());
+        
+        XMLReader aStyleSheetXMLReader = null;
+        XMLReader aInputXMLReader = null;
+        try
+        {
+            aStyleSheetXMLReader = XMLReaderFactory.createXMLReader();
+            aInputXMLReader = XMLReaderFactory.createXMLReader();
+        }
+        catch( SAXException e )
+        {
+            aLogger.logFatalError(e.getMessage());
+            return true;            
+        }
+        
+        aStyleSheetXMLReader.setErrorHandler(new SAXErrorHandler(aLogger));
+        aInputXMLReader.setErrorHandler(new SAXErrorHandler(aLogger));
+        aInputXMLReader.setEntityResolver(new ODFEntityResolver(aLogger));
+        
+        Source aStyleSheetSource = new SAXSource( aStyleSheetXMLReader, aStyleSheetInputSource );
+        Source aInputSource = new SAXSource( aInputXMLReader, aInputInputSource );
+
+        if( aTransformerFactoryClassName!=null )
+            aLogger.logInfo( "Requesting transformer factory class: " + aTransformerFactoryClassName );
+		TransformerFactory aFactory = null;
+		if(aTransformerFactoryClassName==null)
+		{
+			aFactory = TransformerFactory.newInstance();
+		}
+		else
+		{
+		  try
+		  {
+			ClassLoader cl = Thread.currentThread().getContextClassLoader();
+            if (cl == null)
+                cl = ClassLoader.getSystemClassLoader();
+            Class classInstance = cl.loadClass(aTransformerFactoryClassName);
+			aFactory = (TransformerFactory)classInstance.newInstance();
+		  }
+		  catch( ClassNotFoundException ce )
+          {
+            aLogger.logFatalError(ce.getMessage());
+            return true;            
+          }
+		  catch( InstantiationException ie )
+          {
+            aLogger.logFatalError(ie.getMessage());
+            return true;            
+          }
+		  catch( IllegalAccessException ile )
+          {
+            aLogger.logFatalError(ile.getMessage());
+            return true;            
+          }
+		}
+        ErrorListener aErrorListener = new TransformerErrorListener( aLogger );
+        aLogger.logInfo( "Using transformer factory class: " + aFactory.getClass().getName() );
+        aFactory.setErrorListener(aErrorListener);
+        
+        try
+        {
+            Transformer aTransformer = aFactory.newTransformer(aStyleSheetSource);
+            
+            if( aParams != null )
+            {
+                Iterator<XSLTParameter> aIter = aParams.iterator();
+                while( aIter.hasNext() )
+                {
+                    XSLTParameter aParam = aIter.next();
+                    aTransformer.setParameter(aParam.getName(), aParam.getValue());
+                    aLogger.logInfo("Using parameter: "+aParam.getName()+"="+aParam.getValue());
+                }
+            }
+            aTransformer.setErrorListener(aErrorListener);
+            if( aURIResolver != null )
+                aTransformer.setURIResolver(aURIResolver);
+            aTransformer.transform(aInputSource, aOutputTarget);
+        }
+        catch( TransformerException e )
+        {
+            aLogger.logFatalError(e);
+            return true;
+        }
+
+        return false;
+    }
+
+    private boolean extractFiles( OdfPackage aInputPkg,
+                                     File aTargetDir,
+                                     List<String> aExtractFileNames,
+                                     Logger aLogger )
+    {
+        Set<String> aInputPkgEntries = aInputPkg.getFilePaths();
+
+        Iterator<String> aInputPkgEntryIter = aInputPkgEntries.iterator();
+        while( aInputPkgEntryIter.hasNext() )
+        {
+            String aInputFileName = aInputPkgEntryIter.next();
+
+            Iterator<String> aExtractFileNameIter = aExtractFileNames.iterator();
+            while( aExtractFileNameIter.hasNext() )
+            {
+                String aExtractFileName = aExtractFileNameIter.next();
+                if( !aInputFileName.endsWith("/") &&
+                    (aInputFileName.equals(aExtractFileName) ||
+                    (aExtractFileName.endsWith("/") ? aInputFileName.startsWith(aExtractFileName)
+                                                   : aInputFileName.startsWith(aExtractFileName+"/")) ) )
+                {
+                    try
+                    {
+                        File aTargetFile = new File( aTargetDir, aInputFileName );
+                        File aTargetFileDir = aTargetFile.getParentFile();
+                        if( aTargetFileDir != null )
+                            aTargetFileDir.mkdirs();
+
+                        aLogger.logInfo( "Extracting file " +  aInputFileName + " to " + aTargetFile.getAbsolutePath() );
+                        InputStream aInputStream = aInputPkg.getInputStream(aInputFileName);
+                        OutputStream aTargetStream = new FileOutputStream( aTargetFile );
+                        byte[] aBuffer = new byte[FILE_COPY_BUFFER_SIZE];
+                        int n = 0;
+                        while ((n = aInputStream.read(aBuffer, 0, FILE_COPY_BUFFER_SIZE)) > -1)
+                        {
+                            aTargetStream.write(aBuffer, 0, n);
+                        }
+                        aTargetStream.close();
+                        aInputStream.close();
+                    }
+                    catch(java.lang.Exception e)
+                    {
+                        aLogger.logError(e.getMessage());
+                    }
+                    break;
+                }
+            }
+        }
+        return false;
+    }
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/SAXErrorHandler.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/SAXErrorHandler.java
new file mode 100644
index 0000000..0bc7bf6
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/SAXErrorHandler.java
@@ -0,0 +1,54 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+
+/**
+ * This class forwards error reports from the XSLT processor to the
+ * logger.
+ */
+class SAXErrorHandler implements ErrorHandler {
+    
+    private Logger m_aLogger;
+
+    /** Creates a new instance of TransforemerErrorListener */
+    SAXErrorHandler(Logger aLogger ) {
+        m_aLogger = aLogger;
+    }
+    
+    public void warning(SAXParseException e) throws SAXException {
+        m_aLogger.logWarning( e );
+    }
+
+    public void error(SAXParseException e) throws SAXException {
+        m_aLogger.logError( e );
+    }
+
+    public void fatalError(SAXParseException e) throws SAXException {
+        m_aLogger.logFatalError(  e );
+    }
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/TransformerErrorListener.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/TransformerErrorListener.java
new file mode 100644
index 0000000..ea9e360
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/TransformerErrorListener.java
@@ -0,0 +1,55 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+import javax.xml.transform.TransformerException;
+
+/**
+ * This class forwards error reports from the XSLT processor to the
+ * logger.
+ */
+class TransformerErrorListener implements javax.xml.transform.ErrorListener {
+    
+    private Logger m_aLogger;
+
+    /** Creates a new instance of TransforemerErrorListener */
+    TransformerErrorListener(Logger aLogger ) {
+        m_aLogger = aLogger;
+    }
+    
+    public void warning(TransformerException e) throws TransformerException {
+        m_aLogger.logWarning(  e );
+    }
+
+    public void fatalError(TransformerException e) throws TransformerException {
+        fatalErrorNoException( e );
+    }
+
+    public void error(TransformerException e) throws TransformerException {
+        m_aLogger.logError( e );
+    }
+
+    public void fatalErrorNoException(TransformerException e) {
+        m_aLogger.logFatalError(  e );
+    }    
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/XSLTCommandLineParameter.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/XSLTCommandLineParameter.java
new file mode 100644
index 0000000..f39e60b
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/XSLTCommandLineParameter.java
@@ -0,0 +1,57 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+class XSLTCommandLineParameter implements XSLTParameter
+{
+    private String m_aName;
+    private String m_aValue;
+
+    XSLTCommandLineParameter( String aCmdLineParam )
+    {
+        String aParam = aCmdLineParam;
+        if( aParam.startsWith("\"") && aParam.endsWith("\""))
+            aParam = aCmdLineParam.substring(1, aCmdLineParam.length()-1);
+        int nIndex = aParam.indexOf( '=' );
+        if( nIndex != -1 )
+        {
+            m_aName = aParam.substring(0, nIndex );
+            m_aValue = aParam.substring(nIndex+1);
+        }
+        else
+        {
+            m_aName = aParam;
+            m_aValue = new String();
+        }
+    }
+
+    public String getName()
+    {
+        return m_aName;
+    }
+
+    public String getValue()
+    {
+        return m_aValue;
+    }
+}
diff --git a/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/XSLTParameter.java b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/XSLTParameter.java
new file mode 100644
index 0000000..0d6400c
--- /dev/null
+++ b/trunk/xslt-runner/src/main/java/org/odftoolkit/odfxsltrunner/XSLTParameter.java
@@ -0,0 +1,44 @@
+/************************************************************************
+ *
+ * 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.odfxsltrunner;
+
+/**
+ * Interface for XSLT parameters
+ */
+public interface XSLTParameter {
+
+    /** 
+     * Get parameter name.
+     * 
+     * @return parameter name.
+     */
+    String getName();
+
+    /**
+     * Get parameter value.
+     * 
+     * @return parameter value.
+     */
+    String getValue();
+
+}